## 定義 特定の問題領域(ドメイン)に特化して設計されたプロセッサアーキテクチャ。プログラマブルかつ多くの場合チューリング完全でありながら、特定クラスのアプリケーションに合わせて調整されている点で、単一機能に固定された ASIC とは異なる。汎用 CPU に対して大幅な性能・エネルギー効率の向上を実現するため「アクセラレータ」とも呼ばれ、GPU・ニューラルネットワーク処理装置(TPU 等)・SDN 向けプロセッサがその例に含まれる(Source: [[@2019__CACM__A New Golden Age for Computer Architecture]])。 ## DSA が高効率を実現する4つの理由 [[@2019__CACM__A New Golden Age for Computer Architecture]] は DSA が汎用 CPU より高い性能・エネルギー効率を達成する理由を次の4点に整理する。 1. **より効率的な並列性の活用**: 単一命令ストリームで済む SIMD(Single-Instruction Multiple-Data)は、命令フェッチを1本で済ませられる分、MIMD より効率的であり、多くのドメインに適合する。DSA は VLIW 的な ILP 活用も選択肢にでき、投機的アウトオブオーダー機構より単純な制御機構で済む。 2. **メモリ階層のより効果的な活用**: メモリアクセスは演算より遥かにコストが高い(32KB キャッシュへのアクセスは32ビット整数加算の約200倍のエネルギーを要する)。DSA はキャッシュではなくユーザー制御メモリを用いることで、動的に割り当てられるキャッシュより省エネルギーな階層を構築できる。 3. **必要十分な精度の使用**: 汎用 CPU は32/64ビットの整数・浮動小数点をサポートするが、多くの機械学習・グラフィックス用途ではそこまでの精度は不要。深層ニューラルネットワーク(DNN)推論では4/8/16ビット整数、DNN訓練でも32ビットより16ビット浮動小数点で十分な場合が多く、データ・演算スループットの両方が改善する。 4. **ドメイン固有言語(DSL)を対象にできる**: Matlab・TensorFlow・P4・Halide のような DSL はベクトル・密行列・疎行列演算やメモリアクセス構造を明示化でき、コンパイラがハードウェアへ効率よくマッピングしやすい。Python・Java・C・Fortran のような汎用言語から同じ構造を抽出するのは困難である。 ## 事例: Google TPU v1 DSA の具体例として、深層ニューラルネットワーク推論を高速化するために設計された Google Tensor Processing Unit(TPU v1、2015年から本番稼働)が紹介される。中心的な演算ユニットは256×256の Systolic Array 構造を持つ Matrix Multiply Unit(64Kの積和演算/サイクル)であり、8ビット精度・高効率な Systolic 構造・SIMD 制御・専用チップ面積の組み合わせにより、汎用シングルコア CPU の約100倍の積和演算スループットを持つ。DRAM ベースのキャッシュの代わりに24 MBのローカルメモリ(2015年当時の汎用 CPU の約2倍の容量)を用いる。Google データセンターの6種の代表的推論ワークロードの加重平均で、TPU v1 は汎用 CPU 比29倍高速、消費電力は半分以下のためエネルギー効率は80倍超優れる(Source: [[@2019__CACM__A New Golden Age for Computer Architecture]])。 ## 横断的知見 - 今後の取り込みで、複数ソース間の関係を追記する。 ## 未解決の問い - DSA が高い性能・効率を発揮する4要因(並列性・メモリ階層・精度・DSL)は TPU 以外の DSA(GPU・FPGA・SDN プロセッサ)でどこまで定量的に裏付けられるか。 - DSL の移植性(異なる DSA 間でのソフトウェア可搬性)と効率の間のトレードオフは、その後どのように解決されているか。 - RISC-V のようなオープン ISA と DSA の組み合わせ(カスタムオペコード空間の活用)は、その後どのような実例を生んでいるか。 ## 関連 - ILP・メモリ階層の限界との対比 → [[メモリウォール]] - VLIW 的な ILP 活用との関係 → [[VLIW]] - オープン ISA としての RISC-V(DSA 実装の基盤) → [[RISC-V]] ## 出典 - [[@2019__CACM__A New Golden Age for Computer Architecture]]