本当にたくさんのxPUが必要ですか?

更新: 17 年 2021 月 XNUMX 日

近年、新しいプロセッサアーキテクチャに関する発表がほぼ毎日発行されており、XNUMX文字の頭字語(TPU、IPU、NPU)が付いています。 しかし、実際にそれらを区別するものは何ですか? 本当に非常に多くのユニークなプロセッサアーキテクチャがありますか、それとも何か他のことが起こりましたか?

近年、新しいプロセッサアーキテクチャに関する発表がほぼ毎日行われ、XNUMX文字の頭字語(TPU、IPU、NPU)が付けられています。 しかし、実際にそれらを区別するものは何ですか? 本当に非常に多くのユニークなプロセッサアーキテクチャがありますか、それとも何か他のことが起こりましたか?

2018 年、ジョン L. ヘネシーとデビッド A. パターソンは「コンピューター アーキテクチャの新黄金時代」と題したチューリングの講演を行いました。 彼らは CPU とその開発について懸念していますが、これは方程式全体のほんの一部にすぎません。 Arteris IP 研究者でシステム アーキテクトの Michael Frank 氏は、「CPU の観点から見ると、これらの xPU のほとんどは実際のプロセッサではありません。」と述べています。 「それらはむしろ GPU、つまり特殊なワークロード用のアクセラレータに似ています。 そして彼らは内部に多くの多様性を持っています。 機械学習はプロセッサの一種であり、総称して機械学習アクセラレータと呼ぶこともできますが、さまざまな処理部分を高速化します。」

プロセッサーの本質は XNUMX つに要約できます。 「最終的には、命令セット アーキテクチャ (ISA) に戻ります」とザイリンクスのチップ マーケティング ディレクター、マヌエル オム氏は述べています。 「これはあなたが何をしたいのかを定義します。 次に、ISA とそれが実行しようとしているタスクをサポートする I/O とメモリがあります。 過去 XNUMX ~ XNUMX 年よりも多くの革新と変化が見られるため、今後は非常に興味深い時期になるでしょう。」

新しいアーキテクチャの多くは単一プロセッサではありません。 「私たちが目にしているのは、同じ SoC または同じシステム内に存在する、異なるタイプのプロセッサまたはプログラマブル エンジンの組み合わせです」とケイデンスのグループ ディレクター、ピエール ザビエル トーマス氏は述べています。 テクノロジー そして戦略的マーケティング。 「ソフトウェア タスクをさまざまなハードウェアまたは柔軟なプログラマブル エンジンに分散します。 すべてのプロセッサは共通の API を共有できますが、実行ドメインは異なります。 ここでは、実際に、さまざまなタイプの特性を持つさまざまなタイプの処理が表示されます。」

現実には、ほとんどの名前はマーケティングです。

「重要なのは、人々がこれらの名前や頭字語を XNUMX つの異なる目的で使用しているということです」と、Imperas Software の CEO、Simon Davidmann 氏は述べています。 「XNUMX つは、SIMD (Single Instruction Multiple Data) など、プロセッサのアーキテクチャを説明するために使用されます。 もう XNUMX つは、アドレス指定するアプリケーション セグメントを定義します。 したがって、プロセッサ アーキテクチャ、またはテンソル プロセッシング ユニット (TPU) ブランド名のようなものを定義できます。 彼らは個々のプロセッサではなく、異種アーキテクチャまたは同種アーキテクチャに名前を付けています。」

歴史のビット

XNUMX年前は、物事ははるかに単純でした。 当時、中央処理装置(CPU)があり、そのバリエーションはたくさんありましたが、基本的にはすべて、フォンノイマンアーキテクチャを備えたチューリング完全プロセッサでした。 それぞれに異なる命令セットがあり、特定のタスクをより効率的に行うことができます。複雑な命令セット(CISC)と縮小命令セット(RISC)の相対的な利点については多くの議論があります。

RISC-V の登場により、ISA に大きな注目が集まりました。 「人々は ISA を理解したいと思っています。なぜなら、定義されたタスクに対してプロセッサがどの程度最適化されるかを定義するのが ISA だからです」とザイリンクスのオム氏は述べています。 「彼らは ISA を調べて計算サイクルを開始できます。 ISA にネイティブ命令があり、1 GHz で実行される場合、別のプロセッサ ISA と比較できます。ISA では、同じ機能に 1.5 つの命令が必要になる可能性がありますが、プロセッサは XNUMX GHz で実行されます。 どちらが私をさらに前進させてくれるのでしょうか? 彼らは重要な機能について数学的な計算を行います。」

CPUには複数のパッケージ方法があります。 IOまたはメモリが同じパッケージに配置される場合があります。 それらはマイクロコントローラユニット(MCU)と呼ばれます。

モデムが普及すると、デジタルシグナルプロセッサ(DSP)が登場しましたが、その違いは、ハーバードアーキテクチャを使用していることでした。 これにより、コマンドバスがデータバスから分離されます。 それらのいくつかは、データ処理をより効率的にするためにSIMDアーキテクチャも実装しています。

命令とデータを分離することでスループットが向上しますが、自己作成プログラムなど、実行できる一部のエッジ プログラミングが制限されます。 「通常、境界条件は計算ではありません」とオム氏は言う。 「I/O やメモリがますます重要になっています。 業界はコンピューティング能力の向上から、コンピューティング能力とパフォーマンスを維持するのに十分なデータを確保することに移行しつつあります。」

単一のプロセッサが高速でなくなると、複数のプロセッサを接続します。 これらのプロセッサは通常、メモリを共有し、各プロセッサおよびプロセッサクラスタ全体のチューリング完全性の概念を維持します。 結果は同じであるため、プログラムのどの部分がどのコアで実行されるかは問題ではありません。

次の主要な開発はグラフィックスプロセッシングユニット(GPU)です。これは、各処理要素またはパイプラインに独自のメモリがあり、プロセッサの外部でアドレス指定できないため、慣例を破りました。 メモリが制限されているため、これは任意の処理タスクを実行できず、指定されたメモリスペースに配置できるタスクのみを実行できることを意味します。

「特定のタイプの機能にとって、GPU は非常に強力なプロセッサですが、そのパイプラインは非常に長いです」と Uhm 氏は指摘します。 「これらのパイプラインにより、GPU ユニットは継続的にデータを処理できますが、ある時点でパイプラインを更新する必要がある場合、大きな打撃を受けることになります。 システムには多くの遅延と不確実性が組み込まれています。」

他にも多くのアクセラレータが定義されていますが、GPU (およびその後の汎用 GPU (GPGPU)) は、以前のアクセラレータよりも使いやすくするプログラミング パラダイムとソフトウェア スタックを定義しました。 「長年にわたり、特定の仕事は専門化されてきました」とインペラスのデイビッドマン氏は言う。 「シーケンシャルプログラム用のCPUがあります。 データの処理に重点を置いたグラフィック プロセッサがあります。 画面 高度に並列化された世界に私たちをもたらします。 多くの小さな処理要素を使用してタスクを実行します。 現在、機械学習タスクがあります。」

他にどのような構築ルールがすべての新しいアーキテクチャを説明できますか? これまで、プロセッサアレイは通常、メモリまたは固定ネットワークトポロジ(メッシュやリングなど)で接続されていました。 最近登場したのは、分散型異種プロセッサがより柔軟な方法で通信できるようにするネットワークオンチップ(NoC)の組み合わせです。 将来的には、メモリを使用せずに通信することもできます。

「現時点では、NoC はデータのみを伝送します」と Arteris の Frank 氏は述べています。 「将来的には、NoC はアクセラレータ間の通信がデータを超えた他の領域に拡張される可能性があります。 コマンドの送信や通知の送信などを行うことができます。アクセラレータ アレイの通信要件は、CPU や標準 SoC の通信要件とは異なる場合があります。 ただし、ネットワークオンチップはサブセットに制限しません。 アクセラレータの特別な通信ニーズをサポートすることで、パフォーマンスを最適化して向上させることができます。」

実装アーキテクチャ

プロセッサを差別化するXNUMXつの方法は、特定の動作環境に合わせて最適化することです。 たとえば、ソフトウェアはクラウドで実行できますが、マイクロIoTデバイスで同じソフトウェアを実行することもできます。 実装アーキテクチャは非常に異なり、パフォーマンス、消費電力、コスト、または極端な条件下で動作する能力の点で異なる動作点を実現します。

ケイデンスのトーマス氏は「一部のアプリケーションはクラウドコンピューティング向けだが、われわれは現在それらをエッジに近づけている」と述べた。 「これは、レイテンシ要件、またはエネルギーや電力消費が原因である可能性があり、異なるタイプのアーキテクチャが必要になります。 まったく同じソフトウェア スタックを XNUMX つの場所で実行できるようにしたい場合があります。 クラウドはさまざまな種類のアプリケーションを受信し、多数のユーザーを集約できる必要があるため、柔軟性を提供する必要があります。 これには、サーバー上のハードウェアにアプリケーション固有の機能が必要ですが、同じサイズがすべての人に適しているわけではありません。」

ML は独自の要件を増やしています。 「ニューラル ネットワークと機械学習を使用してインテリジェント システムを構築する場合、ソフトウェア フレームワークと一般的なソフトウェア スタックを使用して、新しいネットワークをプログラムし、ハードウェアにマッピングする必要があります」と Thomas 氏は付け加えました。 「そうすれば、PPA の観点からソフトウェア アプリケーションを適切なハードウェアに適応させることができます。 このため、ハードウェア レベルでこれらのニーズを満たすために、さまざまなタイプの処理とプロセッサの必要性が高まっています。」

これらの要件はアプリケーションによって定義されます。 「ある会社がグラフィックス操作用のプロセッサを開発しました」とフランク氏は語った。 「これらは、グラフの追跡方法や、グラフの並べ替えなどの操作の実行方法を最適化および高速化します。 機械学習を加速する強力な手段は他にもあり、それは行列乗算です。 メモリ アクセスはアーキテクチャごとに異なります。アクセラレータを構築するときの最も重要な目標はアクセラレータをビジー状態に保つことであるため、これは特別な問題です。 データは消費および生成される可能性があるため、できるだけ多くのデータを ALU に転送する必要があります。」

これらのアプリケーションの多くには多くの共通点があります。 「それらはすべてローカルメモリを備えており、通信するためのチップ上にネットワークがあり、ソフトウェアアルゴリズムを実行する各プロセッサが小さなデータを処理しています」とデビッドマン氏は述べた。 「これらのジョブは、より従来型の CPU で実行されるオペレーティング システムによってスケジュールされます。」

ハードウェア設計者にとって難しいのは、どのタスクを実行する必要があるかを予測することです。 「いくつかのレイヤーでは同様のタイプの操作を実行しますが、人々はレイヤーの違いに注目しています」とトーマス氏は言います。 「ニューラル ネットワークを処理できるようにするには、いくつかの種類の処理能力が必要です。 これは、何らかの方法でニューラル ネットワークの一部を処理できる必要があり、その後、別の層を処理するために別の種類の操作が必要になる場合があることを意味します。 データの移動 そしてデータの量もレイヤーごとに変化しています。」

この差別化はデータの移動だけにとどまりません。 「ゲノム配列を決定するには、何らかの処理を行う必要があります」とフランク氏は言う。 「しかし、単一タイプのアクセラレータを使用してすべてを加速することはできません。 さまざまなパイプラインに対してさまざまなアクセラレータのセット全体を構築する必要があります。 CPU は管理実行プロセスの守護者になります。 DMA をセットアップして実行し、XNUMX つのプロセス間の意思決定を提供します。 アルゴリズムを理解して分析し、その処理を最適化する方法を定義することは、完全なアーキテクチャ上のタスクです。」

プロセスの一部ではパーティショニングが必要です。 「プロセッサ タスクごとに最適化できる単一のプロセッサ タイプはありません。FPGA は良くない、CPU も良くない、GPU も良くない、DSP も必要です」とオム氏は言いました。 「私たちはこれらすべてを含む一連のデバイスを作成しましたが、顧客側にとって難しいのは、システム全体のどの部分がプロセッサーやプログラマブル ロジック、または AI のターゲットとなるかを判断するためのインテリジェンスを提供する必要があることです。エンジン。 誰もが欲しがるあの自動魔法ツール、CPUに載せるか、FPGAに載せるか、GPUに載せるかを瞬時に判断できるツール。 そのツールは今日では存在しません。」

それにもかかわらず、CPU は常に役割を果たします。 「プログラムの不規則な部分を実行するには CPU が必要です」とフランク氏は言います。 「CPU の一般的なプログラム可能性には利点があります。 特殊なデータ構造や数学的演算がある場合、うまく機能しません。 CPU は汎用プロセッサであり、何のためにも最適化されていません。 何事も上手ではありません。 」

「要約」を変更する

以前は、ハードウェア/ソフトウェアの境界はISAによって定義され、メモリは継続的にアドレス指定可能でした。 複数のプロセッサがある場合、それらは通常、メモリに合わせて調整されます。

「一貫性は契約です」とフランク氏は語った。 「この種の一貫性は非常に重要であり、消えることはありません。 しかし、データ フロー エンジンでは、エッジで移動するデータをあるアクセラレータから別のアクセラレータに直接転送するため、一貫性はそれほど重要ではないことは想像できます。 データセットを分割すると、余分なサイクルがかかるため、一貫性が障害になります。 情報を確認する必要があります。 最新の情報を提供する必要があります。」

これには、別のメモリ アーキテクチャが必要です。 「密結合したメモリは限られているため、メモリの構造について考える必要があります」とオム氏は言う。 「隣接するメモリにアクセスできますが、すぐに隣接するメモリがなくなり、アクセスが間に合わなくなります。 設計ではこれを理解する必要があります。 ツールが成熟するにつれて、ツールはより多くのことを学習し始めます。 現在、それはアーキテクチャを理解し、適用できる人間の知性によって行われています。」

より高いレベルの抽象化も必要です。 「一部のフレームワークは、既知のネットワークをターゲット ハードウェアにマッピングまたはコンパイルできます」とトーマス氏は言います。 「ソフトウェア スタックで使用され、最終的にはニューラル ネットワークのマッパーによって使用される低レベルのカーネルまたは API のセットがあります。 以下に、製品の詳細に応じて、達成したい内容に応じて、さまざまなタイプのハードウェアを使用する場合があります。 同じ機能を実現しますが、同じハードウェアや同じ PPA トレードオフは使用しません。」

これはそれらのコンパイラに多大な負荷をかけます。 「主な問題は、将来的にアクセラレータをどのようにプログラムするかということです。」 フランクは尋ねた。 「第一世代の GPU のようなハードワイヤード エンジンを実装しましたか? それとも、独自の命令セットを使用して小さなプログラマブル エンジンを構築しましたか? ここで、これらのものを個別にプログラムして配置する必要があります。それぞれがデータ フローに接続されてタスクを実行します。 一方のプロセッサには命令セット全体の特定のサブセットがあり、もう一方のプロセッサには異なるサブセットがあり、それらはすべて制御フローの一部の重複部分を共有します。 わずかに異なる加速機能を備えた製品がいくつかある場合があります。 それを理解するコンパイラまたはライブラリは、それに応じてマッピングします。」

まとめる

プロセッサのアーキテクチャは変更されていません。 彼らはまだ過去40年間存在していたのと同じ選択に従います。 変化しているのは、チップの構築方法です。 現在、これらには、アプリケーションタスクのサブセット用に最適化されたメモリと通信を備えた多数の異種プロセッサが含まれています。 各チップは、プロセッサ機能とその最適化の目的、必要なデータスループット、および通常表示されるデータフローに対して異なる選択を行います。

すべてのハードウェアサプライヤーは、自社のチップを他のチップと区別したいと考えていますが、社内の技術的な詳細について話すよりも、ブランディングを通じて宣伝する方がはるかに簡単です。 そこで彼らはそれに名前を付け、それを最初、最速、そして最大と呼び、特定の種類のアプリケーションの問題に関連付けました。 これらのXNUMX文字の頭字語は、アプリケーションタスク名になっていますが、ハードウェアアーキテクチャを定義していません。

近年、新しいプロセッサアーキテクチャに関する発表がほぼ毎日発行されており、XNUMX文字の頭字語(TPU、IPU、NPU)が付いています。 しかし、実際にそれらを区別するものは何ですか? 本当に非常に多くのユニークなプロセッサアーキテクチャがありますか、それとも何か他のことが起こりましたか?

2018 年、ジョン L. ヘネシーとデビッド A. パターソンは「コンピューター アーキテクチャの新黄金時代」と題したチューリングの講演を行いました。 彼らは CPU とその開発について懸念していますが、これは方程式全体のほんの一部にすぎません。 Arteris IP 研究者でシステム アーキテクトの Michael Frank 氏は、「CPU の観点から見ると、これらの xPU のほとんどは実際のプロセッサではありません。」と述べています。 「それらはむしろ GPU、つまり特殊なワークロード用のアクセラレータに似ています。 そして彼らは内部に多くの多様性を持っています。 機械学習はプロセッサの一種であり、総称して機械学習アクセラレータと呼ぶこともできますが、さまざまな処理部分を高速化します。」

プロセッサーの本質は XNUMX つに要約できます。 「最終的には、命令セット アーキテクチャ (ISA) に戻ります」とザイリンクスのチップ マーケティング ディレクター、マヌエル オム氏は述べています。 「これはあなたが何をしたいのかを定義します。 次に、ISA とそれが実行しようとしているタスクをサポートする I/O とメモリがあります。 過去 XNUMX ~ XNUMX 年よりも多くの革新と変化が見られるため、今後は非常に興味深い時期になるでしょう。」

新しいアーキテクチャの多くは単一プロセッサではありません。 「私たちが目にしているのは、同じ SoC または同じシステム内に存在する、異なるタイプのプロセッサまたはプログラマブル エンジンの組み合わせです」と、ケイデンスのテクノロジーおよび戦略的マーケティング グループのディレクター、ピエール ザビエル トーマス氏は述べています。 「ソフトウェア タスクをさまざまなハードウェアまたは柔軟なプログラマブル エンジンに分散します。 すべてのプロセッサは共通の API を共有できますが、実行ドメインは異なります。 ここでは、実際に、さまざまなタイプの特性を持つさまざまなタイプの処理が表示されます。」

現実には、ほとんどの名前はマーケティングです。

「重要なのは、人々がこれらの名前や頭字語を XNUMX つの異なる目的で使用しているということです」と、Imperas Software の CEO、Simon Davidmann 氏は述べています。 「XNUMX つは、SIMD (Single Instruction Multiple Data) など、プロセッサのアーキテクチャを説明するために使用されます。 もう XNUMX つは、アドレス指定するアプリケーション セグメントを定義します。 したがって、プロセッサ アーキテクチャ、またはテンソル プロセッシング ユニット (TPU) ブランド名のようなものを定義できます。 彼らは個々のプロセッサではなく、異種アーキテクチャまたは同種アーキテクチャに名前を付けています。」

歴史のビット

XNUMX年前は、物事ははるかに単純でした。 当時、中央処理装置(CPU)があり、そのバリエーションはたくさんありましたが、基本的にはすべて、フォンノイマンアーキテクチャを備えたチューリング完全プロセッサでした。 それぞれに異なる命令セットがあり、特定のタスクをより効率的に行うことができます。複雑な命令セット(CISC)と縮小命令セット(RISC)の相対的な利点については多くの議論があります。

RISC-V の登場により、ISA に大きな注目が集まりました。 「人々は ISA を理解したいと思っています。なぜなら、定義されたタスクに対してプロセッサがどの程度最適化されるかを定義するのが ISA だからです」とザイリンクスのオム氏は述べています。 「彼らは ISA を調べて計算サイクルを開始できます。 ISA にネイティブ命令があり、1 GHz で実行される場合、別のプロセッサ ISA と比較できます。ISA では、同じ機能に 1.5 つの命令が必要になる可能性がありますが、プロセッサは XNUMX GHz で実行されます。 どちらが私をさらに前進させてくれるのでしょうか? 彼らは重要な機能について数学的な計算を行います。」

CPUには複数のパッケージ方法があります。 IOまたはメモリが同じパッケージに配置される場合があります。 それらはマイクロコントローラユニット(MCU)と呼ばれます。

モデムが普及すると、デジタルシグナルプロセッサ(DSP)が登場しましたが、その違いは、ハーバードアーキテクチャを使用していることでした。 これにより、コマンドバスがデータバスから分離されます。 それらのいくつかは、データ処理をより効率的にするためにSIMDアーキテクチャも実装しています。

命令とデータを分離することでスループットが向上しますが、自己作成プログラムなど、実行できる一部のエッジ プログラミングが制限されます。 「通常、境界条件は計算ではありません」とオム氏は言う。 「I/O やメモリがますます重要になっています。 業界はコンピューティング能力の向上から、コンピューティング能力とパフォーマンスを維持するのに十分なデータを確保することに移行しつつあります。」

単一のプロセッサが高速でなくなると、複数のプロセッサを接続します。 これらのプロセッサは通常、メモリを共有し、各プロセッサおよびプロセッサクラスタ全体のチューリング完全性の概念を維持します。 結果は同じであるため、プログラムのどの部分がどのコアで実行されるかは問題ではありません。

次の主要な開発はグラフィックスプロセッシングユニット(GPU)です。これは、各処理要素またはパイプラインに独自のメモリがあり、プロセッサの外部でアドレス指定できないため、慣例を破りました。 メモリが制限されているため、これは任意の処理タスクを実行できず、指定されたメモリスペースに配置できるタスクのみを実行できることを意味します。

「特定のタイプの機能にとって、GPU は非常に強力なプロセッサですが、そのパイプラインは非常に長いです」と Uhm 氏は指摘します。 「これらのパイプラインにより、GPU ユニットは継続的にデータを処理できますが、ある時点でパイプラインを更新する必要がある場合、大きな打撃を受けることになります。 システムには多くの遅延と不確実性が組み込まれています。」

他にも多くのアクセラレータが定義されていますが、GPU (およびその後の汎用 GPU (GPGPU)) は、以前のアクセラレータよりも使いやすくするプログラミング パラダイムとソフトウェア スタックを定義しました。 「長年にわたり、特定の仕事は専門化されてきました」とインペラスのデイビッドマン氏は言う。 「シーケンシャルプログラム用のCPUがあります。 画面のデータ処理に重点を置き、高度な並行世界をもたらしてくれるグラフィックス プロセッサがあります。 タスクを実行するために多くの小さな処理要素を使用します。 今は機械学習のタスクがあります。」

他にどのような構築ルールがすべての新しいアーキテクチャを説明できますか? これまで、プロセッサアレイは通常、メモリまたは固定ネットワークトポロジ(メッシュやリングなど)を介して接続されていました。 最近登場したのは、分散型異種プロセッサがより柔軟な方法で通信できるようにするネットワークオンチップ(NoC)の組み合わせです。 将来的には、メモリを使用せずに通信することもできます。

「現時点では、NoC はデータのみを伝送します」と Arteris の Frank 氏は述べています。 「将来的には、NoC はアクセラレータ間の通信がデータを超えた他の領域に拡張される可能性があります。 コマンドの送信や通知の送信などを行うことができます。アクセラレータ アレイの通信要件は、CPU や標準 SoC の通信要件とは異なる場合があります。 ただし、ネットワークオンチップはサブセットに制限しません。 アクセラレータの特別な通信ニーズをサポートすることで、パフォーマンスを最適化して向上させることができます。」

実装アーキテクチャ

プロセッサを差別化するXNUMXつの方法は、特定の動作環境に合わせて最適化することです。 たとえば、ソフトウェアはクラウドで実行できますが、マイクロIoTデバイスで同じソフトウェアを実行することもできます。 実装アーキテクチャは非常に異なり、パフォーマンス、消費電力、コスト、または極端な条件下で動作する能力の点で異なる動作点を実現します。

ケイデンスのトーマス氏は「一部のアプリケーションはクラウドコンピューティング向けだが、われわれは現在それらをエッジに近づけている」と述べた。 「これは、レイテンシ要件、またはエネルギーや電力消費が原因である可能性があり、異なるタイプのアーキテクチャが必要になります。 まったく同じソフトウェア スタックを XNUMX つの場所で実行できるようにしたい場合があります。 クラウドはさまざまな種類のアプリケーションを受信し、多数のユーザーを集約できる必要があるため、柔軟性を提供する必要があります。 これには、サーバー上のハードウェアにアプリケーション固有の機能が必要ですが、同じサイズがすべての人に適しているわけではありません。」

ML は独自の要件を増やしています。 「ニューラル ネットワークと機械学習を使用してインテリジェント システムを構築する場合、ソフトウェア フレームワークと一般的なソフトウェア スタックを使用して、新しいネットワークをプログラムし、ハードウェアにマッピングする必要があります」と Thomas 氏は付け加えました。 「そうすれば、PPA の観点からソフトウェア アプリケーションを適切なハードウェアに適応させることができます。 このため、ハードウェア レベルでこれらのニーズを満たすために、さまざまなタイプの処理とプロセッサの必要性が高まっています。」

これらの要件はアプリケーションによって定義されます。 「ある会社がグラフィックス操作用のプロセッサを開発しました」とフランク氏は語った。 「これらは、グラフの追跡方法や、グラフの並べ替えなどの操作の実行方法を最適化および高速化します。 機械学習を加速する強力な手段は他にもあり、それは行列乗算です。 メモリ アクセスはアーキテクチャごとに異なります。アクセラレータを構築するときの最も重要な目標はアクセラレータをビジー状態に保つことであるため、これは特別な問題です。 データは消費および生成される可能性があるため、できるだけ多くのデータを ALU に転送する必要があります。」

これらのアプリケーションの多くには多くの共通点があります。 「それらはすべてローカルメモリを備えており、通信するためのチップ上にネットワークがあり、ソフトウェアアルゴリズムを実行する各プロセッサが小さなデータを処理しています」とデビッドマン氏は述べた。 「これらのジョブは、より従来型の CPU で実行されるオペレーティング システムによってスケジュールされます。」

ハードウェア設計者にとって難しいのは、どのタスクを実行する必要があるかを予測することです。 「いくつかのレイヤーでは同様のタイプの操作を実行しますが、人々はレイヤー内の差別化に注目しています」とトーマス氏は言います。 「ニューラル ネットワークを処理できるようにするには、いくつかの種類の処理能力が必要です。 これは、何らかの方法でニューラル ネットワークの一部を処理できる必要があり、その後、別の層を処理するために別の種類の操作が必要になる場合があることを意味します。 データの移動 そしてデータの量もレイヤーごとに変化しています。」

この差別化はデータの移動だけにとどまりません。 「ゲノム配列を決定するには、何らかの処理を行う必要があります」とフランク氏は言う。 「しかし、単一タイプのアクセラレータを使用してすべてを加速することはできません。 さまざまなパイプラインに対してさまざまなアクセラレータのセット全体を構築する必要があります。 CPU は管理実行プロセスの守護者になります。 DMA をセットアップして実行し、XNUMX つのプロセス間の意思決定を提供します。 アルゴリズムを理解して分析し、その処理を最適化する方法を定義することは、完全なアーキテクチャ上のタスクです。」

プロセスの一部ではパーティショニングが必要です。 「プロセッサーのタスクごとに最適化できる単一のプロセッサー・タイプはありません。FPGA も良くないし、CPU も良くないし、GPU も良くないし、DSP も必要です」と Uhm 氏は言います。 「私たちはこれらすべてを含む一連のデバイスを作成しましたが、顧客側にとって難しいのは、システム全体のどの部分がプロセッサーやプログラマブル ロジック、または AI のターゲットとなるかを判断するためのインテリジェンスを提供する必要があることです。エンジン。 誰もが欲しがるあの自動魔法ツール、CPUに載せるか、FPGAに載せるか、GPUに載せるかを瞬時に判断できるツール。 そのツールは今日では存在しません。」

それにもかかわらず、CPU は常に役割を果たします。 「プログラムの不規則な部分を実行するには CPU が必要です」とフランク氏は言います。 「CPU の一般的なプログラム可能性には利点があります。 特殊なデータ構造や数学的演算がある場合、うまく機能しません。 CPU は汎用プロセッサであり、何にも最適化されていません。 それは何も得意ではありません。」

「要約」を変更する

以前は、ハードウェア/ソフトウェアの境界はISAによって定義され、メモリは継続的にアドレス指定可能でした。 複数のプロセッサがある場合、それらは通常、メモリに合わせて調整されます。

「一貫性は契約です」とフランク氏は語った。 「この種の一貫性は非常に重要であり、消えることはありません。 しかし、データ フロー エンジンでは、エッジで移動するデータをあるアクセラレータから別のアクセラレータに直接転送するため、一貫性はそれほど重要ではないことは想像できます。 データセットを分割すると、余分なサイクルがかかるため、一貫性が障害になります。 情報を確認する必要があります。 最新の情報を提供する必要があります。」

これには、別のメモリ アーキテクチャが必要です。 「密結合したメモリは限られているため、メモリの構造について考える必要があります」とオム氏は言う。 「隣接するメモリにアクセスできますが、すぐに隣接するメモリがなくなり、アクセスが間に合わなくなります。 設計ではこれを理解する必要があります。 ツールが成熟するにつれて、ツールはより多くのことを学習し始めます。 現在、それはアーキテクチャを理解し、適用できる人間の知性によって行われています。」

より高いレベルの抽象化も必要です。 「一部のフレームワークは、既知のネットワークをターゲット ハードウェアにマッピングまたはコンパイルできます」とトーマス氏は言います。 「ソフトウェア スタックで使用され、最終的にはニューラル ネットワークのマッパーによって使用される低レベルのカーネルまたは API のセットがあります。 以下に、製品の詳細に応じて、達成したい内容に応じて、さまざまなタイプのハードウェアを使用する場合があります。 同じ機能を実現しますが、同じハードウェアや同じ PPA トレードオフは使用しません。」

これはそれらのコンパイラに多大な負荷をかけます。 「主な問題は、将来的にアクセラレータをどのようにプログラムするかということです。」 フランクは尋ねた。 「第一世代の GPU のようなハードワイヤード エンジンを実装しましたか? それとも、独自の命令セットを使用して小さなプログラマブル エンジンを構築しましたか? ここで、これらのものを個別にプログラムして配置する必要があります。それぞれがデータ フローに接続されてタスクを実行します。 一方のプロセッサには命令セット全体の特定のサブセットがあり、もう一方のプロセッサには異なるサブセットがあり、それらはすべて制御フローの一部の重複部分を共有します。 わずかに異なる加速機能を備えた製品がいくつかある場合があります。 それを理解するコンパイラまたはライブラリは、それに応じてマッピングします。」

まとめる

プロセッサのアーキテクチャは変更されていません。 彼らはまだ過去40年間存在していたのと同じ選択に従います。 変化しているのは、チップの構築方法です。 現在、これらには、アプリケーションタスクのサブセット用に最適化されたメモリと通信を備えた多数の異種プロセッサが含まれています。 各チップは、プロセッサ機能とその最適化の目的、必要なデータスループット、および通常表示されるデータフローに対して異なる選択を行います。

すべてのハードウェアサプライヤーは、自社のチップを他のチップと区別したいと考えていますが、社内の技術的な詳細について話すよりも、ブランディングを通じて宣伝する方がはるかに簡単です。 そこで彼らはそれに名前を付け、それを最初、最速、そして最大と呼び、特定の種類のアプリケーションの問題に関連付けました。 これらのXNUMX文字の頭字語は、アプリケーションタスク名になっていますが、ハードウェアアーキテクチャを定義していません。