アクセラレータの系譜図 ─ CPU/GPU/TPU/NPU/DPU/FPGA
なぜGPUやTPUが汎用CPUから枝分かれしたのか。汎用性と電力効率(性能/W)の二軸で各アクセラレータを位置づけ、年代と分岐の系統図で設計思想の派生を一望し、用途選定の判断軸が掴めます。
- 1.アクセラレータの系譜は『汎用性を捨てるほど性能/Wが上がる』という一本の軸で読める。CPU(汎用)→GPU(SIMTで並列特化)→TPU/NPU(行列演算だけに特化)の順に専用度が上がる。
- 2.GPUはSIMT(多数スレッドを束で実行)、TPU/NPUはシストリックアレイ(データを流しながら積和)という別系統のデータパスを採り、DPUはネットワーク/ストレージのデータ処理をホストCPUから肩代わりする。
- 3.FPGAは『製造後に回路を書き換える』軸の存在で、汎用性は配線で得るが電力効率はASIC(TPU等)に届かない。用途が固まればASIC、未確定ならFPGA、という棲み分けになる。
系譜を読む前提:なぜCPUから枝分かれするのか
アクセラレータの乱立は、一見ばらばらに見えて、たった一本の軸で整理できます。それは汎用性(どんな処理でもこなせるか)と電力効率(性能/W、ワットあたりどれだけ仕事をこなすか)のトレードオフです。両者は基本的に逆相関し、汎用性を捨てるほど性能/Wが上がります。
なぜそうなるか。汎用CPUは「次に何の命令が来るか分からない」前提で作られています。そのため命令フェッチ・デコード・分岐予測・アウトオブオーダ実行といった制御回路にトランジスタと電力の大半を割き、実際の演算器(ALU)はチップのごく一部です。逆に「やる処理は行列積だけ」と決め打てば、制御回路をほぼ捨てて演算器を敷き詰められ、同じ電力で桁違いの演算をこなせます。アクセラレータの系譜とは、この**「制御を捨てて演算を敷き詰める」度合いの違い**の系譜にほかなりません。
かつてはトランジスタを小さくすれば電圧も下げられ、消費電力密度が一定に保てました(デナードスケーリング)。これが2000年代半ばに崩れ、チップ全体を全速で動かすと電力上限に当たるようになりました。以後、設計の通貨は「クロック」から「性能/W」へ移り、限られた電力枠で仕事量を増やす唯一の道が、汎用性を削った専用データパスへの特化です。アクセラレータが一斉に増えた根本原因はここにあります。
二軸マップ:各アクセラレータの位置づけ
まず全体像を、汎用性(縦)と性能/W(横)の二軸で言葉にして置きます。左上から右下へ、汎用性を下げながら効率を上げる流れです。
汎用性 高
↑ CPU ← 何でもできるが演算密度は低い(制御回路が大半)
│ ↓ 派生
│ GPU ← 並列処理に特化(SIMT)。汎用寄りの並列アクセラレータ
│ ↓ さらに特化
│ NPU / TPU ← 行列・畳み込みだけに特化(シストリック)。効率最高クラス
│
│ FPGA ← 別系統。回路を書き換えて任意の専用化(中間の位置)
│ DPU ← 別系統。データ移動・前処理をCPUから肩代わり
↓
汎用性 低 ────────────────────────────→ 性能/W(電力効率)高
CPU・GPU・TPU/NPUは一本の直系(汎用→専用)に並びますが、FPGAとDPUは別系統です。FPGAは「製造後に回路を変えられる」という直交した軸の存在、DPUは「演算の高速化」ではなく「データ処理の肩代わり」という別目的の存在で、同じ平面に無理に並べると関係を見誤ります。
直系の系譜:CPU → GPU → TPU/NPU
CPU(汎用の起点・1970年代〜)
すべての起点です。逐次的な制御フローを最速でこなすため、1スレッドの遅延(レイテンシ)を最小化する設計に全振りしています。深い投機・大きなキャッシュ・複雑な分岐予測がその表れで、「制御の塊」と言えます。少数コアで複雑な処理を低レイテンシでさばくのが得意領域です。
GPU(SIMTで並列特化・2000年代後半〜)
GPUは元はグラフィックス専用でしたが、画面の全ピクセルに同じ計算を当てる構造が、汎用並列計算(GPGPU)に流用できると分かって枝分かれしました。中核は**SIMT(Single Instruction, Multiple Threads)**で、多数のスレッドを「束(warp)」にまとめ、1つの命令を束全体に一斉適用します。制御回路を束で共有することで、演算器の比率をCPUより大幅に高められます。詳細はGPUのSIMT実行で扱います。
設計思想はスループット最優先です。1スレッドの遅延は遅くてもよく、膨大なスレッドを切り替えてメモリ待ちを隠し、全体の処理量を最大化します。CPUが「1人で速く」なら、GPUは「大勢で大量に」です。
TPU / NPU(シストリックでさらに特化・2010年代〜)
GPUでも、深層学習の中心である行列積(GEMM)にはまだ汎用部分の無駄が残ります。そこを削り切ったのがTPU(Tensor Processing Unit)や NPU(Neural Processing Unit)です。多くがシストリックアレイを採ります。これは演算器(積和器)を格子状に並べ、データを格子に流し込みながら隣のセルへバケツリレーする方式で、一度読んだデータを配線で何度も再利用するため、電力を食うメモリアクセスを劇的に減らせます。原理はシストリックアレイの原理を参照してください。
GPUとの分岐点は明確です。GPUは「並列なら何でも」をSIMTで広く拾うのに対し、TPU/NPUは「行列積・畳み込みだけ」をシストリックで深く掘り、命令デコードすらほぼ持たない構造で性能/Wを極大化します。汎用性を捨てた見返りが効率、という系譜の原理が最も先鋭化した地点です。
両者を「並列演算器」と一括りにすると分岐を見失います。SIMTは多数のスレッドが各自データを持ち、同じ命令で進む方式で、制御を束で共有します。シストリックは演算器を固定配線で並べ、データを波のように通す方式で、命令そのものをほぼ持ちません。前者は汎用性を残し、後者は特定演算に固着する――この違いが、GPUとTPU/NPUの汎用性・効率の差を生みます。
横の枝:FPGAとDPU(別軸の存在)
FPGA(再構成可能・書き換える専用化)
FPGAは直系の延長ではなく、**「製造後にハードウェアの配線を書き換えられる」**という直交した軸の存在です。論理ブロックと配線網を持ち、設定ビット列で任意のデジタル回路を構成します。ASIC(TPUのように用途固定で焼いたチップ)は最高の性能/Wを出しますが、設計・製造に莫大な費用と時間がかかり、後から仕様変更できません。FPGAは効率でASICに劣る代わりに、その柔軟性を手にします。詳しくはFPGAの再構成アーキテクチャで扱います。
位置づけは「汎用性は配線の自由度で得るが、性能/WはASICに届かない中間」です。用途が固まればASIC化し、仕様が動く・量が少ない・低レイテンシの専用処理が要る場面ではFPGAが選ばれます。
DPU(データ処理の肩代わり)
**DPU(Data Processing Unit)**は系譜の毛色がさらに違います。演算(compute)を速くする存在ではなく、ネットワーク・ストレージのデータ移動と前処理をホストCPUから肩代わりする存在です。サーバーでは暗号化・パケット処理・仮想化・ストレージ処理などの「お膳立て仕事(インフラ処理)」がCPU時間を食い、本来のアプリ計算を圧迫します。DPUはNIC(ネットワークカード)に汎用コアと専用エンジンを載せ、これらをCPUの外へオフロードします。
つまりDPUの軸は「演算の高速化」ではなく**「CPUの解放」**です。GPU/TPUがアプリ計算そのものを加速するのに対し、DPUは周辺のデータ処理を引き受けてCPUを本業に専念させます。同じ「アクセラレータ」でも狙う場所が直交している点が、系譜を読む上での要です。
系譜と分岐を一望する
年代・採用データパス・設計思想を一枚で並べます。CPUからの「派生の動機」列が、各分岐がなぜ起きたかを示します。
| 種別 | 登場時期の目安 | 中核データパス | 設計思想・狙い | CPUからの派生動機 |
|---|---|---|---|---|
| CPU | 1970年代〜 | スカラ/スーパースカラ | 1スレッドを低レイテンシで(制御に全振り) | 起点(汎用) |
| GPU | 2000年代後半〜 | SIMT(warp実行) | 大量スレッドで高スループット | 並列処理の演算密度を上げたい |
| TPU/NPU | 2010年代〜 | シストリックアレイ | 行列積・畳み込みに固着し性能/W極大化 | GPUに残る汎用の無駄を削りたい |
| FPGA | 1980年代〜(AI用途は近年) | 再構成可能ロジック | 配線を書き換えて任意の専用回路 | ASIC化前の柔軟な専用化が欲しい |
| DPU | 2010年代後半〜 | 汎用コア+専用エンジン | データ移動・前処理をCPUから分離 | インフラ処理でCPUを浪費したくない |
縦の直系(CPU→GPU→TPU/NPU)は**「汎用性を段階的に捨て、性能/Wを段階的に上げる」**一本道です。横のFPGA・DPUは、それぞれ「書き換え可能性」「データ処理の分離」という別軸で枝を伸ばします。次の二軸要約が全体の骨格です。
| 軸 | CPU | GPU | TPU/NPU | FPGA | DPU |
|---|---|---|---|---|---|
| 汎用性 | 最高 | 高(並列限定) | 低(行列限定) | 中(書換で可変) | 中(インフラ処理向け) |
| 性能/W | 低 | 中 | 最高クラス | 中(ASIC未満) | 対象処理で高 |
| 得意 | 逐次・低レイテンシ | データ並列 | 深層学習推論/学習 | 可変な専用処理 | ネット/ストレージ処理 |
| 弱点 | 演算密度が低い | 行列特化には無駄あり | 用途が固定 | 効率はASICに劣る | 汎用演算は不得手 |
系譜から導く選定の指針
この系統図は、そのまま用途選定の判断軸になります。処理が定型かつ大量で、用途が確定しているほど右下(専用・高効率)へ、不定型・低レイテンシ・仕様流動的なほど左上(汎用・柔軟)へ寄せる、という読み方です。
- 逐次制御や分岐の多い不定型処理は CPU。専用化しても演算器を埋められず、効率が出ない。
- データ並列が広く、用途も流動的なら GPU。汎用性を残したまま高い演算密度を得られる中庸点。
- 行列積・畳み込みが処理の大半を占め大量に回るなら TPU/NPU。汎用性を捨てる代わりに性能/Wが最大化する。
- 用途は専用だが仕様が動く・量が少ない・超低レイテンシが要るなら FPGA。ASIC化の前段でもある。
- 計算ではなくネットワーク/ストレージのデータ処理がCPUを圧迫しているなら DPU。加速ではなく分離が解。
TPU/NPUの「性能/W最高クラス」は、対象が行列積・畳み込みである限りの話です。分岐の多い不定型処理を載せれば、専用データパスは空回りし、汎用CPUに大敗します。アクセラレータの効率は常に処理の性質との適合が前提で、適合しない処理を載せると系譜の利点はそのまま欠点に反転します。万能の駒は存在しません。
「CPUは汎用・低レイテンシ志向、GPUはSIMTで高スループット、TPU/NPUはシストリックアレイで行列演算に特化」「汎用性と性能/Wは逆相関し、専用化するほど効率が上がる」「FPGAは製造後に回路を再構成でき、柔軟性と引き換えに効率はASICに劣る」「DPUは演算加速ではなくネット/ストレージのデータ処理をCPUからオフロードする」の4点が頻出です。SIMT(GPU)とシストリック(TPU/NPU)が別系統のデータパスである区別を必ず押さえること。
まとめ
- アクセラレータの系譜は汎用性と性能/W(電力効率)の逆相関という一本の軸で読める。制御を捨てて演算器を敷き詰めるほど効率が上がる。
- 直系は CPU(汎用・低レイテンシ)→ GPU(SIMTで並列特化)→ TPU/NPU(シストリックで行列特化) の順に専用度が上がる流れ。
- GPUのSIMT(スレッド束で同一命令)と TPU/NPUのシストリックアレイ(演算器格子にデータを流す)は別系統のデータパスで、両者を一括りにすると分岐を見失う。
- FPGAは「製造後に回路を書き換える」直交軸の存在で、柔軟性と引き換えに効率はASICに劣る中間点。
- DPUは演算加速ではなく、ネットワーク/ストレージのデータ処理をCPUから肩代わりする別目的の存在。
- 選定は「処理が定型・大量・用途確定なら右下(専用)、不定型・流動的なら左上(汎用)」へ寄せるのが系統図から導かれる原理。
CPU/メモリ/ディスク Article
アクセラレータの系譜図 ─ CPU/GPU/TPU/NPU/DPU/FPGAを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
アクセラレータ
比較で見る軸
難易度: advanced / カテゴリ: CPU/メモリ/ディスク / タグ数: 6
導入後に効く点
GPUはSIMT(多数スレッドを束で実行)、TPU/NPUはシストリックアレイ(データを流しながら積和)という別系統のデータパスを採り、DPUはネットワーク/ストレージのデータ処理をホストCPUから肩代わりする。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- CPU/メモリ/ディスク
- タグ数
- 6
判断チェックリスト
- 自社の用途が「アクセラレータ / GPU」に近いか確認する。
- 強みである「アクセラレータの系譜は『汎用性を捨てるほど性能/Wが上がる』という一本の軸で読める。CPU(汎用)→GPU(SIMTで並列特化)→TPU/NPU(行列演算だけに特化)の順に専用度が上がる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。