David Patterson – A New Golden Age for Computer Architecture: History, Challenges and Opportunities
1. 講演の背景と主題:計算機アーキテクチャの転換点
本講演(David Patterson, A New Golden Age for Computer Architecture: History, Challenges and Opportunities)は、2017年にACM A.M.チューリング賞を受賞したデヴィッド・パターソン(カリフォルニア大学バークレー校名誉教授、Googleディスティングイッシュトエンジニア)が、ジョン・ヘネシー(元スタンフォード大学学長、Alphabet会長)との共同受賞記念講演の内容を基盤として行った技術講演である。
両名は1980年代初頭より、縮小命令セットコンピュータ(RISC: Reduced Instruction Set Computer)の提唱およびプロセッサ設計における定量的アプローチ(Quantitative Approach)を確立し、現代のマイクロプロセッサ工学の技術的基盤を構築した。
本講演が扱う中心的な技術的課題は、半導体物理の制約に起因する「デナード・スケーリング則(Dennard Scaling)の破綻」および「ムーアの法則(Moore’s Law)の減速」である。過去40年間にわたり計算機システムの性能向上を牽引してきたハードウェア微細化の恩恵が失われた結果、単一スレッドのプロセッサ性能向上率は年率3%程度にまで落ち込んでいる。これに対し、講演では以下の3つの設計・開発パラダイムの転換が論じられる。
- ドメイン特化アーキテクチャ(DSA: Domain-Specific Architecture)への移行
- オープン命令セットアーキテクチャ(Open ISA: RISC-V)の採用
- アジャイル・ハードウェア開発手法(Agile Hardware Development)およびオープンEDAツールの導入
2. コンピュータ・アーキテクチャの歴史的変遷とRISCの確立
2.1 命令セットアーキテクチャ(ISA)の分離とマイクロプログラミングの導入
コンピュータ・アーキテクチャの体系化は、1964年のIBM System/360ファミリに端を発する。System/360以前の計算機システムは、機種ごとにハードウェア構造、命令セット、入出力方式が異なり、上位機種への移行時にソフトウェアを全面的に再開発する必要があった。
IBMはSystem/360において、命令セットアーキテクチャ(ISA: Instruction Set Architecture)とマイクロアーキテクチャ(実装: Implementation)を明確に分離した。
- 命令セットアーキテクチャ(ISA):プログラマおよびコンパイラから観測可能な抽象化インターフェース。レジスタ構成、メモリアドレス空間、命令フォーマット、アドレッシングモード、例外処理モデルなどを規定する。
- マイクロアーキテクチャ:特定のISAを実行するための物理的な回路実装。パイプライン段数、実行ユニットの構成、キャッシュ階層、バス幅などを指す。
小型機から大型機にいたる異なる実装において同一のISAを実行可能にする技術的手段として、モーリス・ウィルクス(Maurice Wilkes)が1951年に考案したマイクロプログラミング(Microprogramming)が採用された。
マイクロプログラミングは、プロセッサの機械語命令を論理回路(ハードワイヤード制御)で直接デコード・実行するのではなく、内部の制御記憶(ROM: Read-Only Memory)に格納された微小命令列(マイクロコード)からなるインタプリタによって解釈・実行する手法である。これにより、データパス幅や演算器構成が異なる下位機種であっても、マイクロコードのステップ数を増やすことで共通の命令セットを実装可能となった。
2.2 CISC(Complex Instruction Set Computer)の台頭と技術的課題
1970年代、半導体メモリ技術(ROMおよびSRAM)の進展により、制御記憶の大容量化と高速化が進んだ。これに伴い、プロセッサ設計はハードウェア側で高度な機能を提供する方向へシフトした。このアプローチにより設計された計算機体系をCISC(Complex Instruction Set Computer)と呼ぶ。代表例としてDECのVAX-11/780、Intel 8086、Motorola 68000が挙げられる。
CISCが推進された主な技術的要因は以下の通りである。
- セマンティック・ギャップ(Semantic Gap)の解消:高級プログラミング言語(FORTRAN、ALGOL、C、Pascalなど)の構文構造と、機械語命令のギャップを埋めるため、多項式評価命令(VAXの
POLY)、手続き呼び出し時のスタックフレーム構築およびレジスタ退避命令(CALLS)、配列添字検査命令などがハードウェアに組み込まれた。 - メモリ容量の節約:主記憶のビット単価が高かった時代背景から、1命令あたりの情報量を増やし、プログラム全体のメモリフットプリント(コードサイズ)を削減するために可変長命令フォーマットが導入された。
- コンパイラ技術の未発達:最適化コンパイラが未成熟であったため、アセンブリ言語で人間が直接プログラミングすることを前提に、高機能なアドレッシングモード(インデックス修飾、間接修飾、自動インクリメントなど)が追加された。
2.3 定量的測定によるCISCの検証
1970年代末、パターソンらはDEC VAXシステムのマイクロコードの複雑化とバグの発生頻度を契機として、実際のプログラム実行時における命令使用頻度の定量的測定(Empirical Measurement)を実施した。
測定結果から、以下の事実が明らかとなった。
- 局所的命令使用の偏り:VAXの持つ複雑な命令のうち、マイクロコード容量の約60%を占める上位命令群は、プログラムの動的実行時間全体の0.2%程度しか使用されていなかった。
- 基本命令の優位性:動的実行命令数の99%以上は、単純なロード(Load)、ストア(Store)、加算(Add)、比較(Compare)、条件分岐(Branch)で占められていた。
- コンパイラ最適化との不整合:コンパイラの最適化パス(レジスタ割り付け、共通部分式削除など)は、直交性の低い特殊命令や副作用の多い命令を効率的に活用できず、結果として生成されるコードは単純な命令の組み合わせに限定された。
2.4 プロセッサ性能の基本方程式(Iron Law of Processor Performance)
パターソンとヘネシーは、プロセッサの実行時間を定量的に評価するための基本式(性能の鉄則)を以下のように定式化した。
\[\text{CPU Time} = \frac{\text{Instructions}}{\text{Program}} \times \frac{\text{Clock Cycles}}{\text{Instruction}} \times \frac{\text{Time}}{\text{Clock Cycle}}\]
各項の定義と依存関係は以下の通りである。
| 構成要素 | 名称・指標 | 主な決定要因 |
|---|---|---|
| \(\frac{\text{Instructions}}{\text{Program}}\) | 命令数(Instruction Count: IC) | アルゴリズム、コンパイラ最適化、ISAの機能密度 |
| \(\frac{\text{Clock Cycles}}{\text{Instruction}}\) | 命令あたりクロックサイクル数(CPI) | マイクロアーキテクチャ(パイプライン化、並列度、キャッシュ構成) |
| \(\frac{\text{Time}}{\text{Clock Cycle}}\) | クロック周期(\(\tau = \frac{1}{f}\)) | 半導体製造プロセス、回路設計、クリティカルパス段数 |
CISCは「命令数(IC)」を最小化することに主眼を置いていたが、その代償として可変長命令のデコード回路が複雑化し、命令ごとの実行サイクル数にばらつきが生じたため、平均CPIが著しく増大した(当時のCISCではCPIが5〜10サイクル)。さらに、制御論理の段数増加によりクリティカルパスが伸び、クロック周波数 \(f\) の向上が制約された。
パターソンらが提唱したRISC(Reduced Instruction Set Computer)の基本概念は、命令セットを極限まで直交化・単純化し、固定長命令フォーマットを採用することで、CPIを1.0に近づけ、クロック周波数を高めることにあった。
- すべての命令を同一の固定長(通常32ビット)とする。
- 演算対象をレジスタに限定し、メモリアクセスを専用のロード/ストア命令のみに制限する(ロード/ストア・アーキテクチャ)。
- 複雑なマイクロコードROMを廃止し、制御回路をハードワイヤード(配線論理)で構成する。
- 命令の実行ステージを均等に分割し、命令パイプライン(Instruction Pipeline)によりクロック毎に1命令を完了させる。
IC(命令数)がCISC比で20〜30%増加したとしても、CPIが5分の1に減少し、クロック周波数が倍増すれば、総合的な実行時間は大幅に短縮される。
2.5 RISCの商用化とx86アーキテクチャの内部実装
1980年代初頭、UCバークレー校の「Berkeley RISC」(RISC I/II、後のSPARCの原型)およびスタンフォード大学の「Stanford MIPS」(ヘネシー主導、後のMIPS Technologies)の実証実験を経て、RISCは高性能ワークステーションおよびサーバ市場(Sun SPARC、SGI MIPS、HP PA-RISC、IBM POWER、DEC Alpha)で優位性を確立した。1986年から2002年にかけて、マイクロプロセッサの性能は年率52%の向上を記録した。
一方、パーソナルコンピュータ市場においては、既存ソフトウェア資産とのバイナリ互換性(後方互換性)の要求から、Intelのx86アーキテクチャが主流を占め続けた。Intelはこの互換性を維持しつつRISCの性能特性を取り込むため、1995年の「Pentium Pro」以降、外装CISC・内装RISCのハイブリッド型マイクロアーキテクチャを採用した。
- フロントエンド:外部から供給される可変長のx86命令を、内部で固定長の単純な命令であるマイクロオペレーション(\(\mu\text{op}\))へと動的に変換(デコード)する。
- バックエンド:変換された\(\mu\text{op}\)を、スーパースカラ実行エンジン(アウト・オブ・オーダー実行、レジスタ・リネーミング、投機的実行)によってRISCコアと同等の効率で並列実行する。
この方式によりx86は高い実行性能とバイナリ互換性を両立させたが、命令デコーダ回路、\(\mu\text{op}\)キャッシュ、および巨大なリオーダ・バッファ(ROB: Reorder Buffer)の実装に伴い、チップ面積および電力消費のオーバーヘッドを恒常的に抱えることとなった。
3. 単一スレッド性能向上を阻む物理的・構造的要因
2000年代中盤以降、プロセッサ性能の向上率は急激に減速した。歴史的推移は以下の通りである。
HISTORY — 単一スレッド性能向上率の推移
この成長停止をもたらした主要因は、以下の物理的制約およびマイクロアーキテクチャ上の構造的破綻である。
3.1 デナード・スケーリング則(Dennard Scaling)の物理的崩壊
1974年にロバート・デナードが定式化したデナード・スケーリング(古典的MOSFETスケーリング則)は、トランジスタの幾何学的寸法を縮小する際の設計規則を示したものである。
トランジスタの線形寸法(ゲート長 \(L\)、ゲート幅 \(W\)、酸化膜厚 \(t_{\text{ox}}\))をスケーリング係数 \(\kappa\)(\(\kappa < 1\)、例えば \(\kappa \approx 0.7\))で縮小し、基板ドーピング濃度を \(\frac{1}{\kappa}\) に高める場合、内部電界強度を一定に保つために電源電圧 \(V\) も \(\kappa\) 倍に低下させる。
CMOS回路における動的電力消費(Dynamic Power Consumption)\(P\) は次式で記述される。
\[P = \alpha \cdot C \cdot V^2 \cdot f\]
ここで、\(\alpha\) はアクティビティ係数(クロックごとのスイッチング確率)、\(C\) は回路全体の負荷容量、\(V\) は電源電圧、\(f\) は動作周波数を表す。
寸法を \(\kappa\) 倍に縮小した場合の物理パラメータの変化は以下の通りである。
- 静電容量:\(C’ = \kappa \cdot C\)
- 電源電圧:\(V’ = \kappa \cdot V\)
- トランジスタ遅延:\(\tau’ = \kappa \cdot \tau\)
- 動作周波数:\(f’ = \frac{1}{\kappa} \cdot f\)
これを電力消費の式に適用すると、個別トランジスタの電力消費 \(P’\) は以下のようにスケーリングされる。
\[P’ = \alpha \cdot (\kappa C) \cdot (\kappa V)^2 \cdot \left(\frac{1}{\kappa} f\right) = \kappa^2 \cdot P\]
一方で、チップ上の単位面積あたりのトランジスタ集積密度は \(\frac{1}{\kappa^2}\) 倍となる。したがって、チップ全体の電力密度(Power Density)は以下のように一定に維持される。
\[\text{Power Density} \propto \frac{\text{Total Power}}{\text{Area}} = \frac{\left(\frac{1}{\kappa^2}\right) \cdot (\kappa^2 P)}{\text{Area}} = \text{一定}\]
このスケーリング則に基づき、2000年代初頭までは冷却技術の限界(熱設計電力: TDP)を超えることなく、微細化に伴い動作クロック周波数を向上させることが可能であった。
しかし、2005年前後にゲート長が数十ナノメートル領域に達した際、電源電圧 \(V\) を比例して下げることが物理的に不可能となった。
MOSFETのオン・オフ遷移特性(サブスレッショルド特性)において、ドレイン電流を1桁変化させるために必要なゲート電圧変化(サブスレッショルド・スイング \(S\))は、室温(\(T = 300\text{ K}\))において熱電圧 \(\frac{k_B T}{q}\)(約\(26\text{ mV}\))によって理論的下限が制限される。
\[S = \ln(10) \cdot \frac{k_B T}{q} \cdot \left(1 + \frac{C_{\text{dep}}}{C_{\text{ox}}}\right) \ge 60\text{ mV/decade}\]
ここで、\(k_B\) はボルツマン定数、\(q\) は電気素量、\(C_{\text{dep}}\) は空乏層容量、\(C_{\text{ox}}\) はゲート酸化膜容量である。
しきい値電圧 \(V_{\text{th}}\) を下げすぎると、オフ状態におけるサブスレッショルド・リーク電流(漏れ電流)が指数関数的に増大し、静的電力消費(Static Power Consumption)が急増する。そのため、電源電圧 \(V\) は約\(1.0\text{ V}\)近傍で下げ止まった。
電圧スケーリングが停止した状態で動作周波数 \(f\) と集積密度を高めると、電力密度が面積比で指数関数的に上昇し、空冷可能な排熱限界(約100W〜200W/\(\text{cm}^2\))を超える電力の壁(Power Wall)に衝突した。これにより、プロセッサの動作クロック周波数は約3GHz〜4GHzで上限に達した。
3.2 ムーアの法則の終息とダークシリコン(Dark Silicon)問題
ゴードン・ムーアが提唱した「集積回路上のトランジスタ数は約18〜24ヶ月で倍増する」という経験則(ムーアの法則)も、原子スケールにおける量子トンネル効果の増大や、極端紫外線(EUV)露光装置を含む製造プロセスのコスト急増により、物理的・経済的限界に直面している。
クロック周波数の向上を断念した半導体業界は、2005年以降、単一チップ上に複数のプロセッサコアを搭載するマルチコア/メニーコアアーキテクチャへと舵を切った。しかし、デナード・スケーリングが破綻した環境下でトランジスタ数のみが増加した結果、ダークシリコン(Dark Silicon)と呼ばれる現象が発生した。
チップの最大消費電力(TDP)が固定されているため、製造プロセスの微細化によって集積されたトランジスタのうち、同時に定格周波数で通電可能な領域は一部に制限される。チップ全体の熱破壊を回避するため、回路の大部分(数十%〜最大90%以上)の電源を遮断するか、極めて低い周波数で待機(ダーク化)させざるを得ない。
3.3 並列処理の限界:アムダールの法則(Amdahl’s Law)
マルチコア化による性能向上は、ソフトウェアの並列性に関する数学的限界に直面する。ジーン・アムダールが提唱したアムダールの法則は、並列プロセッサによる高速化の上限を規定する。
プログラム全体のうち、並列化可能な部分の実行時間比率を \(p\)(\(0 \le p \le 1\))、並列化不可能な逐次処理部分の比率を \(1 – p\)、プロセッサ(コア)数を \(s\) とすると、達成可能な最大高速化率(Speedup)は次式で表される。
\[\text{Speedup} = \frac{1}{(1 – p) + \frac{p}{s}}\]
コア数 \(s\) を無限大(\(s \to \infty\))に拡張した場合の理論上の最大高速化率は次式に収束する。
\[\lim_{s \to \infty} \text{Speedup} = \frac{1}{1 – p}\]
プログラム内にわずか1%(\(1 – p = 0.01\))の逐次処理部分が存在する場合、コア数をいくら増やしても、システム全体の性能向上は最大100倍で頭打ちとなる。一般的なアプリケーション、OSカーネル、データベース処理においては、スレッド間同期、ロック競合、I/O処理、メモリアクセスの局所性低下などがボトルネックとなり、コア数の増加に対する実行性能の向上率は急速に逓減する。
3.4 ハードウェア・セキュリティの破綻:投機的実行とサイドチャネル攻撃
高クロック化が限界を迎える中、マイクロアーキテクチャ設計者は単一スレッド性能の向上のため、ハードウェアの複雑化(アグレッシブな投機的実行および分岐予測)を進めた。しかし2018年、この設計思想に起因する重大な脆弱性であるMeltdownおよびSpectreが報告された。
これらは、現代の高性能CPUが命令パイプラインのストールを避けるために備えている投機的実行(Speculative Execution)機構の欠陥を突くサイドチャネル攻撃である。
ATTACK — 投機的実行とキャッシュ・サイドチャネル
- Meltdown(CVE-2017-5754):
CPUのアウト・オブ・オーダー実行部が、メモリアクセスに伴う特権保護ビットの検証完了を待たずに、投機的にカーネル空間のデータをロードする。例外が発生してアーキテクチャ状態(レジスタ値)が破棄される前に、後続の命令がその秘密データをインデックスとして別の配列アドレスへアクセスする。これにより、秘密データの値に応じた特定のキャッシュラインがL1データキャッシュにフェッチされる。攻撃者はキャッシュのヒット/ミスによるアクセス時間の差異(Flush+Reload手法など)を計測することで、特権メモリの内容を特定する。 - Spectre(CVE-2017-5715, CVE-2017-5753):
分岐予測器(Branch Target Buffer: BTBなど)を意図的にトレーニング(誤学習)させ、正規のプログラムに境界チェックをバイパスする不正なメモリアクセスを投機的に実行させる。ハードウェア構造自体に起因するため、プロセッサの再設計を行わない限り根本的排除が困難である。
これらのハードウェア脆弱性を緩和するため、OSレベルの分離(KPTI: Kernel Page Table Isolation)やコンパイラによる投機バリア命令(LFENCEやRetpoline)が導入されたが、これらはシステムコールや間接分岐のオーバーヘッドを増大させ、計算ワークロードによっては5〜30%の性能低下をもたらした。
4. 打開策1:ドメイン特化アーキテクチャ(DSA)
物理的制約下において性能およびエネルギー効率を向上させるアプローチとして、パターソンが提示する第1の軸がドメイン特化アーキテクチャ(DSA: Domain-Specific Architecture)である。
4.1 汎用プロセッサとDSAの構造的差異
DSAは、すべてのプログラムを汎用的に実行することを目的とせず、特定の計算領域(ドメイン)のワークロードに特化して回路構成とメモリ階層を最適化したアーキテクチャである。対象領域の例として、深層学習(機械学習)、画像・音声信号処理、グラフィックス、暗号処理、ネットワークパケット処理などが挙げられる。単一のアプリケーションに固定されたASIC(特定用途向け集積回路)とは異なり、対象ドメイン内の多様なアルゴリズムをプログラム可能(Programmable)である点に特徴がある。
汎用CPU、GPU、およびDSAの特性比較は以下の通りである。
| 特性 | 汎用CPU | GPU | DSA(例: TPU) |
|---|---|---|---|
| 対象ドメイン | 汎用(逐次処理最適化) | 大規模データ並列(SIMT) | 特定ドメイン(テンソル積等) |
| 命令制御 | 複雑(OoO、投機実行、分岐予測) | 単純な命令フェッチ/ワープ制御 | 極小(デコードオーバーヘッド排除) |
| データパス | 汎用ALU(32/64ビット中心) | SIMD/SIMT演算コア | 特化演算アレイ(シストリック等) |
| メモリ階層 | ハードウェア管理キャッシュ(L1-L3) | キャッシュ+共有メモリ | ソフトウェア管理スクラッチパッド |
| 数値精度 | 主にIEEE 754 FP32/FP64 | FP32、FP16、TensorCore | INT8、bfloat16、FP16等に特化 |
4.2 行列乗算における抽象化層とハードウェア最適化の性能ギャップ
パターソンが提示する代表的なベンチマークとして、同一ハードウェア(Intel 18コア Haswell Xeonプロセッサ)上での正方行列乗算(\(4096 \times 4096\))の実行性能比較がある。
| 実装アプローチ | 相対性能比 |
|---|---|
| 1. Python(基準実装) | 1.0x |
| 2. C言語への書き直し(ネイティブコンパイル) | 約 47x |
| 3. マルチスレッド化(18コア全並列実行) | 約 120x |
| 4. キャッシュブロッキング(メモリ階層最適化) | 約 2,500x |
| 5. AVX SIMD命令の明示的活用 | 約 62,000x |
- PythonからC言語への移行(47倍):動的型付けのオーバーヘッド、インタープリタ実行のループコスト、ポインタ間接参照の排除による高速化。
- 並列ループ化(120倍):OpenMP等を用いた18コア(およびハイパースレッディング)へのスレッド分散。
- キャッシュブロッキング(2,500倍):行列データをL1/L2キャッシュサイズに収まる小さなブロック(タイル)に分割し、メインメモリ(DRAM)へのアクセス回数を削減してデータ再利用性を極大化。
- SIMD(Single Instruction, Multiple Data)の適用(62,000倍):256ビットAVXベクトルレジスタおよび積和演算(FMA: Fused Multiply-Add)命令を用い、1命令で複数の浮動小数点演算を並列実行。
この比較は、ハードウェアの演算器とメモリ構造に適合した最適化を行わない場合、プロセッサ本来の理論ピーク性能のわずか0.0016%しか引き出せないことを示している。DSAは、この「ハードウェアとアルゴリズムの整合」をアーキテクチャレベルで固定化・強制することで、高い実行効率を達成する。
4.3 DSAが高効率を達成する工学的根拠
DSAが汎用CPUに対して1〜2桁高いエネルギー効率(Performance per Watt)を達成できる理由は、以下の設計原則に基づく。
- 演算精度の最適化と回路面積の縮小:
IEEE 754倍精度浮動小数点(FP64: 64ビット)演算器と比較して、深層学習で用いられる8ビット整数(INT8)乗算器は、回路面積および消費電力を数十分の1に削減できる。乗算器の回路規模はおおむねビット幅の自乗(\(O(N^2)\))に比例するため、演算精度を8ビットや16ビット(bfloat16等)に限定することで、同一ダイ面積上に配置可能な演算器数を飛躍的に増加させることができる。 - メモリ階層の簡素化(スクラッチパッドメモリの採用):
汎用プロセッサではダイ面積の約50%がハードウェア制御のキャッシュメモリ(SRAM)およびタグ比較器、コヒーレンシ制御論理に消費される。DSAではアクセスパターンが規則的なワークロードを対象とするため、タグオーバーヘッドのないソフトウェア管理型スクラッチパッドメモリ(SRAM)を採用し、コンパイラが明示的にデータ移動をスケジューリングする。 - 制御回路の排除:
動的分岐予測、レジスタ・リネーミング、リオーダ・バッファなどの命令レベル並列性(ILP)抽出用回路を排除し、シリコンリソースの大部分を演算データパス(ALUアレイ)に充当する。 - ドメイン特化言語(DSL)との協調設計:
TensorFlow、PyTorch(機械学習)やHalide(画像処理)などのDSLを用いることで、高レベルのデータフローグラフ構造をコンパイラが直接認識できる。汎用バイナリからの逆抽出が困難な大規模並列性やメモリアクセスパターンを、DSAのハードウェア構造へ直接マッピング可能となる。
4.4 事例検証:Google TPU v1(Tensor Processing Unit)
パターソンが共同設計者として参画した初代Google TPU(TPU v1: 2015年運用開始)は、データセンターにおける深層学習推論処理(DNN、CNN、RNN)向けに設計されたDSAである。
ARCHITECTURE — Google TPU v1 の構成
256×256 2次元シストリック・アレイ(Systolic Array)
TPU v1の演算中核は、行列乗算ユニット(MXU: Matrix Multiply Unit)である。ここには \(256 \times 256 = 65,536\) 個の8ビット積和演算器(MAC: Multiply-Accumulate)が2次元グリッド状に配置されている。
シストリック・アレイでは、重みデータを行列セルに事前に保持させ、活性化データ(入力ベクトル)をパイプラインの端から供給する。データは毎クロックサイクル、隣接する演算セルへと直接転送される。各セルは自身の持つ重みと通過する入力データの積を計算し、下方向へ部分和を累積していく。
この構造の技術的利点は、レジスタファイルやSRAMへのアクセス頻度を劇的に低減できる点にある。一度読み出されたデータは演算アレイ内部を通過しながら256回再利用されるため、データ供給のための配線電力およびメモリ読み出し電力が最小化される。
決定論的レイテンシ(Deterministic Latency)
TPU v1はキャッシュミス、分岐予測ミス、アウト・オブ・オーダー実行などの非決定論的(Non-deterministic)挙動を一切排除している。すべての命令実行サイクルおよびデータ転送タイミングは静的に決定される。
この特性は、大規模クラウドインフラにおけるテールレイテンシ(Tail Latency: 99パーセンタイル・レイテンシ)の抑制において重要となる。ユーザーインターフェースや検索クエリを支える推論エンジンでは、平均レイテンシだけでなく、最悪実行時間の厳密な保証がサービス水準合意(SLA)上不可欠であるためである。
定量的性能評価
当時の汎用プロセッサ(Intel Haswell Xeon)およびGPU(NVIDIA Tesla K80)との実測比較において、TPU v1は以下の結果を示した。
- 整数推論ベンチマークにおいて、Haswell CPUに対して15〜30倍のスループットを達成。
- 電力あたり性能(TOPS/Watt)において、CPUおよびGPUに対して30〜80倍のエネルギー効率を記録。
5. 打開策2:オープン命令セットアーキテクチャ(RISC-V)
DSAの設計および集積回路開発を進める上で、アクセラレータを制御し、オペレーティングシステムを実行するための汎用コアが必要となる。パターソンが提示する第2の軸は、オープンスタンダードな命令セットであるRISC-Vの採用である。
5.1 プロプライエタリISAの構造的制約
従来の商用ISA(Intel/AMDのx86、ARM、IBM POWERなど)は、特定の企業が知的財産権(IP)を保有するプロプライエタリ(排他的所有)なアーキテクチャであった。これにより、以下の技術的・経済的障壁が存在していた。
- 高額なライセンスコストと法的障壁:
ARMなどの先進的な商用アーキテクチャライセンスの取得には数億円〜数十億円規模のイニシャルコストが発生し、大学の研究機関、スタートアップ企業、新興国の開発者にとって参入障壁となっていた。 - 命令拡張の禁止:
プロプライエタリISAのライセンシーは、自社の特定用途のために勝手に命令を追加・変更することが契約上禁止されている。DSA用のカスタム命令をISAに統合するには、ライセンサーによる標準化承認プロセスを経る必要があり、数年単位の遅延を伴う。 - アーキテクチャの過度な肥大化:
数十年にわたる下位互換性の維持要求により、x86やARM(AArch32)のマニュアルは数千ページに達し、過去のレガシー命令や冗長なモード切り替え機構がシリコン面積と検証コストを圧迫している。
5.2 RISC-Vの設計哲学とモジュール構造
2010年、UCバークレー校において、パターソン、クリステ・アサノヴィッチ(Krste Asanović)らによって策定されたRISC-V(リスク・ファイブ)は、オープンかつロイヤリティフリーの標準ISAとして設計された。
RISC-Vの仕様は非営利団体「RISC-V International」によって中立に管理されており、オープンソースソフトウェア(LinuxやTCP/IP)と同様に、誰でもライセンス料なしでプロセッサを実装、製造、改変、販売することができる。
RISC-Vは、単一の巨大な命令セットではなく、極小の基本仕様と独立した標準拡張モジュールから構成される。
STRUCTURE — RISC-V のモジュラーISA
- 基本整数命令セット(Base ISA: RV32I / RV64I):
命令数はわずか47命令で構成される。この基本セットは既に「凍結(Frozen)」されており、将来にわたって仕様が変更されない。これにより、コンパイラやOSの基本バイナリの後方互換性が半永久的に保証される。 - 標準拡張モジュール(Standard Extensions):
用途に応じて必要な機能のみをハードウェアに組み込む。- M拡張:整数の乗算・除算(Multiply/Divide)
- A拡張:アトミックメモリアクセス(Atomic Memory Operations: 並列同期用)
- F/D拡張:IEEE 754単精度/倍精度浮動小数点演算
- C拡張:16ビット長の圧縮命令(Compressed Instructions: コードサイズをCISC並みに縮小)
- V拡張:スケーラブルなベクトル拡張(可変長ベクトルレジスタによるデータ並列演算)
汎用Linux OSの実行に必要な標準構成は「RV64GC」(RV64I + M + A + F + D + C)として定義されている。
- 予約されたカスタム拡張空間(Custom Instruction Space):
RISC-Vのオプコード空間には、サードパーティが独自命令を定義するために予約された専用フィールドが存在する。標準のツールチェーンやOSの互換性を損なうことなく、DSA用アクセラレータ命令(特殊なテンソル演算、暗号プリミティブなど)をシームレスに追加することが可能である。
5.3 ハードウェア検証とセキュリティにおけるオープンの意義
プロプライエタリなプロセッサでは、マイクロアーキテクチャの内部実装(RTLコード)は機密とされ、セキュリティモデルは「隠蔽によるセキュリティ(Security through Obscurity)」に依存していた。その結果、MeltdownやSpectreのようなマイクロアーキテクチャ上の脆弱性が何年も発見されずに放置された。
オープンISAであるRISC-Vでは、オープンソースのRTL実装(Western Digital SweRV、SiFive Rocket Core、Berkeley BOOMなど)が広く公開されている。
これにより、世界中の研究者やセキュリティアナリストがコードベースを検証可能となり、数理論理学に基づく形式検証(Formal Verification)を適用して、未定義動作やサイドチャネル情報漏洩の有無を数学的に証明する手法が確立されつつある。
6. 打開策3:アジャイル・ハードウェア開発手法とオープンEDA
DSAやカスタムプロセッサの需要が高まる一方、従来の半導体開発手法では設計コストと開発期間の増大が参入の障壁となっていた。第3の柱は、ソフトウェアエンジニアリングの手法をハードウェア設計に移植するアジャイル・ハードウェア開発である。
6.1 ウォーターフォール型からアジャイル型への移行
従来の集積回路(ASIC)開発は、典型的なウォーターフォールモデルに従っていた。仕様決定からアーキテクチャ設計、Verilog/VHDLによるRTL記述、シミュレーション、論理合成、配置配線(P&R)、ファウンドリでの製造(テープアウト)、パッケージングに至るサイクルには2〜3年の期間と数十億円以上の初期費用(NRE: Non-Recurring Engineering)が必要とされた。1箇所の論理エラー(バグ)がシリコン再スピン(マスク再作成)につながり、致命的なプロジェクト遅延をもたらすため、開発プロセスは極度に保守化していた。
パターソンらが提唱するアジャイル・ハードウェア開発は、小規模な動作可能プロトタイプを迅速に構築し、FPGAやエミュレータ上で実証しながら、短いイテレーション(反復)で設計を進化させる手法である。
PROCESS — ウォーターフォール vs アジャイル
6.2 高位ハードウェア構築言語「Chisel」
アジャイル開発を支援する技術基盤として、UCバークレー校で開発されたハードウェア構築言語がChisel(Constructing Hardware in a Scala Embedded Language)である。
Chiselは、モダンな高級言語「Scala」内部に組み込まれたドメイン特化言語(DSL)である。従来のVerilog/VHDLが回路の接続やフリップフロップの動作を直接記述する低レベルなハードウェア記述言語(HDL)であるのに対し、Chiselはハードウェアを生成するためのジェネレータ(Hardware Generator)を記述する言語である。
- オブジェクト指向および関数型パラダイムの適用:パラメータ化されたモジュール(データパス幅、キャッシュライン長、演算器数を引数として動的に変化させる設計)を柔軟に記述可能。
- コンパイル時の厳格な型推論とエラー検出:Scalaの型システムにより、ビット幅の不整合や未接続バスなどの論理エラーをコンパイル時に検知。
- Verilogの自動生成:Chiselで記述された抽象設計は、コンパイラを通じて標準のSystemVerilogコードへと変換され、既存の商用EDAツールやFPGA合成ツールへ投入可能。
これにより、大学院生や小規模エンジニアリングチームが、数万行〜数十万行規模のVerilogコードに匹敵する高度なSoC(System-on-Chip)を短期間で設計・検証できる環境が整った。
6.3 オープンソースEDAツールチェーンとMPW(マルチプロジェクトウエハー)
ハードウェア設計のコストを引き下げるもう一つの要素が、設計自動化(EDA)ツールのオープン化と試作プロセスの低廉化である。
- オープンソースEDA:論理合成ツール(Yosys)、静的タイミング解析(OpenSTA)、配置配線ツール(OpenROAD、nextpnr)など、従来は年間数千万円規模の商用ライセンス料を必要とした設計フローが、オープンソースソフトウェアとして整備されつつある。
- MPW(Multi-Project Wafer: 相乗りウエハー):1枚のウエハー上に複数の異なる設計(ダイ)を相乗りさせることで、フォトマスク作成費用を複数社・研究機関で分散する。GoogleとSkyWaterテクノロジー社が主導したオープンソース半導体製造プログラム(SkyWater 130nmプロセス等)のように、オープンソース設計を対象とした無償または極めて安価な製造機会が提供されている。
これにより、ソフトウェア開発におけるGitHubやCI/CD(継続的インテグレーション)と同様のパラダイムがハードウェア設計にも波及し、プロトタイピングの障壁が低減されている。
7. 将来の展望とアーキテクチャ設計の原則
講演の最終部において、パターソンはこれからの10年を見据えた技術的視点と、アーキテクチャ設計者に対する基本原則を提示する。
7.1 代替コンピューティングパラダイム(量子計算等)に対する客観的評価
ムーアの法則の減速に対する代替手段として語られることの多い量子コンピューティング(Quantum Computing)に対し、パターソンは現実的な時間軸と適用範囲を見据える必要性を指摘する。
- 実用化の時間軸:汎用的な誤り耐性量子計算(FTQC: Fault-Tolerant Quantum Computing)の実現には、物理量子ビットのエラー訂正技術を含め、依然として長期の基礎研究と工学的課題の克服が必要である。
- 適用領域の特殊性:量子計算はあらゆる計算処理を一律に高速化するものではなく、ショアのアルゴリズム(素因数分解)や特定の化学・物性シミュレーションなど、量子力学の干渉効果を直接利用可能な特定の数学的問題群に特化している。
- 古典的プロセッサの永続性:量子計算システム自体、量子ビットの物理制御、読み出し信号の増幅、誤り訂正符号のデコード処理、I/O処理などを担う超低遅延・高効率な「古典的プロセッサ(Classical Computer)」を不可欠とする。
したがって、量子コンピューティングの進展と並行して、半導体ベースの古典的アーキテクチャの革新を継続することが工学的に不可避である。
7.2 アーキテクチャ設計における基本原則
パターソンは、過去半世紀の計算機開発から得られた設計原則として以下をまとめている。
- 定量的測定の徹底(Quantitative Approach):直感や経験則による設計を排し、常に実ワークロードの測定データに基づいてボトルネックを特定し、トレードオフを定量評価すること。
- 協調設計(Co-design):半導体回路、マイクロアーキテクチャ、コンパイラ、オペレーティングシステム、プログラミング言語、アルゴリズムの各層を分離せず、垂直統合的に最適化すること。
- 単純性の維持(Simplicity):過度な汎用化や投機機構の複雑化は、電力消費の増大とセキュリティホールの温床となる。最小限のプリミティブをハードウェアとして提供し、柔軟性をソフトウェア階層で担保すること。
半導体プロセスの微細化による自動的な性能向上(デナード・スケーリングおよびムーアの法則の恩恵)が終焉を迎えた現在、コンピューティング性能の向上は、回路の物理的微細化から、ドメインに特化した構造設計、オープンな命令セット、そしてアジャイルな設計手法の融合へとその主軸を移している。ハードウェアとソフトウェアの境界を再定義するアーキテクチャ設計の創意工夫が、今後の計算機科学の進展を規定する決定的な要因となっている。

