数十年前、 中央処理装置 (CPU) 個別のトランジスタに実装され、後に集積回路ロジックデバイスに実装されました。1971年に最初のマイクロプロセッサであるIntelの4ビット4004が登場すると、すべてが変わりました。長年にわたり、設計にプログラム可能な処理能力を求めるエンジニアにとって、Intelとその競合他社の製品は唯一の選択肢でした。
CPUとMPU
現在、CPUはより大きなシステムのコンポーネントになっています。スタンドアロンの マイクロプロセッサ ユニット (MPU) は、CPUと、 DDR3 およびDDR4メモリ管理、 PCIe、USB 2.0、USB 3.0、イーサネットなどのシリアル バスなどの周辺インターフェイスをバンドルしているため、これらの設計は柔軟で多用途であり、Windows、iOS、Linuxなどのマルチタスクの高レベル オペレーティング システム (OS) を実行するように設計されています。よりコンパクトな設計の場合、マイクロコントローラ ユニット (MCU) は、CPUコアと内部メモリ、多数の周辺機器を単一の集積回路または単一のパッケージに統合し、通常は簡素化されたOSを実行します。
マイクロプロセッサはラップトップやデスクトップのコンピューティングで重要な役割を果たしており、マイクロコントローラは自動車の計器パネル、 モーター コントローラ 、 スマート カード などの組み込みアプリケーションで広く使用されています。これらのデバイスのCPUハードウェア アーキテクチャは汎用を目的としていますが、数学演算用の浮動小数点ユニット (FPU) などの特殊なブロックが含まれていることもよくあります。ローエンドのCPUは操作を順番に実行しますが、ハイエンドのマイクロプロセッサやマイクロコントローラでは複数の処理コアが標準となっています。IntelのXeonには最大22個のコアがあります。
FPGAとASIC
これらのCPUは汎用計算には十分ですが、近年ではより特殊なアーキテクチャを必要とする計算負荷の高いアプリケーションが多数登場しています。例としては、高速検索、 機械学習と人工知能 (AI)、データセンターの高性能コンピューティング (HPC)、 仮想現実 やビデオゲームなどのリアルタイムグラフィック処理、デジタルモーター制御などの工業製品、 先進運転支援システム (ADAS) 、そして近い将来には 自律走行車などの自動車関連アプリケーションなどが挙げられます。
これらの分野の設計者は、グラフィックス プロセッシング ユニット (GPU)、 フィールド プログラマブル ゲート アレイ (FPGA) 、およびカスタム設計された 特定用途向け集積回路 (ASIC) という3つの追加処理の選択肢を利用できます。
GPUとFPGA
GPUは、CPUから単純なグラフィック操作をオフロードするために1980年代に初めて導入されました。グラフィックスが2Dに拡張され、その後3Dレンダリングが実現されるにつれて、GPUはさらに強力になりました。数百万ピクセルで構成される画像を処理する場合、高度な並列処理が非常に有利であるため、現在の世代のGPUには、数学関数を効率的に実行するように設計された数千個のコアが含まれています。Nvidiaの最新デバイスである Tesla V100 には、シングルサイクルの積和演算用の5,120個のCUDAコアと、シングルサイクルの行列乗算用の640個のテンソル コアが搭載されています。他の分野の多くのアルゴリズムは並列実行に適しているため、GPUは当初の用途をはるかに超えて普及しました。たとえば、世界最速のスーパーコンピュータの多くには、数千個の GPUとCPU が搭載されています。
FPGAは、特定のアプリケーションの動作をカスタマイズするためにユーザーがプログラム可能な相互接続を備えた内部ハードウェア ブロックで構成されています。前述の他のデバイスとは対照的に、ブロック間の接続は簡単に再プログラムできるため、ハードウェアの内部動作を変更し、FPGAが部品の寿命中に設計の変更に対応したり、新しいアプリケーションをサポートしたりできるようになります。この柔軟性により、FPGAは、デジタル テレビ、民生用電子機器、 サイバー セキュリティ システム 、無線通信など、標準が進化しているアプリケーションに最適な選択肢となります。
一方、ASICは、意図されたアプリケーション専用に設計されています。CPU、GPU、メモリなど、最適な動作に必要なブロックのみを搭載しています。設計者は、Arm Cortex CPUなどのサードパーティのIPコア、またはEthernet物理層などの標準機能用に事前に設計されたブロックを組み込むことができますが、ASICはゼロから設計されます。大量処理アプリケーションに最適です。たとえば、Tensor Processing Unit (TPU) は、Googleが ニューラル ネットワーク機械学習専用に開発したアクセラレータです。Googleはクラウド コンピューティング部門を通じて、外部の企業にTPU へのアクセスも提供しています。
未来は?
ベンダーが新しいアプリケーションに最適な機能セットを模索するにつれて、3つのカテゴリの収束がますます進んでいます。SoC FPGAには、ハードIPまたはソフトIP CPU、GPU、DSPブロックが付属しています。CPUには暗号化機能用のハードウェア アクセラレータとASICが含まれており、 NVIDIA のTesla T4 GPUにはAI推論アプリケーション用の組み込みFPGA要素が含まれています。
いずれにしても、これは大量の情報です。すべてを把握しやすくするために、4つのデバイスの主な機能と、それぞれの長所と短所をまとめた表をいくつか作成しました。
CPU vs FPGA vs GPU vs ASICチートシートをダウンロードするには、 ここをクリック。
|
CPU |
プログラマブルロジック |
グラフィックプロセッサ |
エイシック |
概要 |
汎用アプリケーション向けの従来のシーケンシャルプロセッサ |
現場で構成および変更できる柔軟なロジック要素とIPブロックのコレクション |
もともとグラフィックス用に設計されましたが、現在ではさまざまな計算集約型アプリケーションで使用されています。 |
最終用途向けに最適化されたカスタム集積回路 |
処理 |
シングルコアおよびマルチコアのMCUとMPU、および特殊ブロック: FPUなど。 |
アプリケーション向けに構成されており、SoCにはハードまたはソフトIPコア (例: Arm) が含まれています。 |
数千個の同一プロセッサコア |
アプリケーション固有: サードパーティのIPコアが含まれる場合があります |
プログラミング |
OS、APIは、アセンブリ言語など、さまざまな高級言語を実行します。 |
伝統的にHDL(Verilog、VHDL);新しいシステムにはopenCL経由のC/C++が含まれる。 SDAccel |
OpenCLとNvidiaのCUDA APIにより、汎用プログラミング (例: C、C++、Python、Java、Fortran) が可能になります。 |
アプリケーション固有: GoogleのTPU用のTensorFlowオープンソース フレームワーク。CPUメーカー (例: Intel) は新しいASICリリースにツールを組み込んでいます。 |
周辺機器 |
MCUのアナログおよびデジタル周辺機器の幅広い選択肢。MPUにはデジタル バス インターフェイスが含まれます。 |
SoCには多くのトランシーバーブロック、構成可能なI/Oバンクが含まれています |
非常に制限されている(例:キャッシュメモリのみ) |
アプリケーションに合わせてカスタマイズ: 業界標準の機能 (USB、イーサネットなど) が含まれる場合があります |
強み |
汎用性、マルチタスク、プログラミングの容易さ |
特定のアプリケーションに合わせて構成可能。インストール後に構成を変更可能。ワット当たりの性能が高い。超並列操作に対応。DSP、CPUなど、幅広い機能の選択肢。 |
対象アプリケーションのための強力な処理能力—ビデオ処理、画像解析、信号処理 |
パフォーマンスと消費電力の最適な組み合わせでアプリケーション向けにカスタム設計 |
弱点 |
OSの機能によりオーバーヘッドが高くなり、並列処理が制限された順次処理に最適化されます。 |
プログラミングが比較的難しい。開発時間は2番目に長い。シーケンシャル操作のパフォーマンスが低い。浮動小数点演算には適していない。 |
消費電力が高く、一部のアルゴリズムには適していません。並列処理を活用するには問題を再定式化する必要がありますが、APIフレームワークは抽象化を提供します。 |
開発期間が最も長く、コストが高く、シリコンの再設計なしでは変更できない |
これらの選択肢がいくつかの一般的なアプリケーションでどのように機能するかを検討することも価値があります。表に示されているように、設計者は多くの場合、オプションのいずれかまたはすべてを単独で、あるいは組み合わせて使用できます。
アプリケーション |
CPU |
プログラマブルロジック |
グラフィックプロセッサ |
エイシック |
コメント |
ビジョンと画像処理 |
|
✔ |
✔ |
✔ |
大量生産アプリケーションではFPGAがASICに取って代わられる可能性 |
AIトレーニング |
|
|
✔ |
|
GPU並列処理は、テラバイト規模のデータセットを妥当な時間で処理するのに適しています。 |
AI推論 |
✔ |
✔ |
✔ |
✔ |
誰もが参入したい!FPGAがおそらくリードし、ハイエンドCPU(例:IntelのXeon)とGPU(例:NvidiaのT4)がこの市場に対応しています。 |
高速検索 |
✔ |
✔ |
✔ |
✔ |
マイクロソフトのBingはFPGAを使用、グーグルはTPU ASICを使用、調整と制御にはCPUが必要 |
産業用モーター制御 |
(✔) |
✔ |
|
✔ |
多数のモーター制御MCUとASICが利用可能。FPGAはASICの代替として迅速に対応可能 |
スーパーコンピュータHPC |
✔ |
|
✔ |
|
TOP500スーパーコンピュータの大半はCPUとGPUの組み合わせを使用している |
汎用コンピューティング |
✔ |
|
(✔) |
|
CPUは最も汎用性が高く、柔軟なオプションです。GPUはいくつかのタスクを実行し始めています。 |
組み込み制御 |
✔ |
✔ |
|
✔ |
低コスト、スペース制約、低消費電力のモバイル アプリケーションではCPU (-> MCU) が主流 |
少量生産の試作 |
|
✔ |
|
|
FPGAは少量生産のハイエンドアプリケーションに最適です。 プレシリコン検証、ポストシリコン検証、ファームウェア開発 |