# Brainiac 設計 vs スピードデーモン設計 OOO(アウトオブオーダー)実行に代表される**複雑なハードウェアで ILP を引き出すか**(Brainiac)、シンプルに高クロックを狙うか(Speed-demon)というプロセッサ設計哲学の対比。1993 年に Linley Gwennap(Microprocessor Report)が命名し、Dileep Bhandarkar の書籍 *Alpha Implementations and Architecture* で広まった。 ## 定義 | 設計スタイル | 特徴 | |---|---| | **Brainiac** | 複雑な OOO ハードウェアで ILP を最大化。チップ面積・消費電力・設計コストは高い | | **Speed-demon** | シンプル・インオーダー設計でクロックを最大化。コンパイラに命令スケジューリングを委ねる | かつて Speed-demon はその名の通り高クロックを達成しやすかった(シンプルなため)。現代は電力・発熱の制約でクロックの伸びが鈍り、この優位性は薄れた。 ## OOO の実際の効果と限界 OOO 実行がインオーダーに対して与える性能向上は**約 20〜40%** 程度。Andy Glew(Pentium Pro 主任設計者)の言葉: > "The dirty little secret of OOO is that we are often not very much OOO at all" ILP が期待より低い理由: - L1 キャッシュのロードレイテンシ(3〜5 クロック)で連鎖依存が生じる。 - リオーダーバッファに収まる命令ウィンドウ外のキャッシュミスは隠せない。 - 分岐誤予測で再フェッチが必要になる。 - 「コンパイル済みを再コンパイルせずに性能向上」という OOO の売りも限定的で、リコンパイルすれば大幅な向上が得られることが多い。 ## 歴史的な「陣営の移動」 各ベンダーが方針を転換した軌跡が面白い: | ベンダー | 経緯 | |---|---| | **Intel** | Pentium Pro で Brainiac → Pentium 4 で Speed-demon(31 段・3.8 GHz)→ 電力の壁で失敗 → Core(Pentium M 継承)で Brainiac 復帰 → Skylake 延長で発熱問題 | | **DEC Alpha** | 初期 2 世代は Speed-demon → Alpha 21264 で Brainiac へ | | **MIPS** | R10000 で Brainiac、その後揺れ動く | | **Sun(SPARC)** | SuperSPARC で Brainiac → UltraSPARC T1/T2 で Speed-demon(多コア・多スレッド) | | **ARM** | 低電力組み込みから出発し一貫して Brainiac 化の傾向。Apple M シリーズが頂点 | | **AMD** | Athlon で Brainiac → Bulldozer で中間 → Zen で完全 Brainiac | ## Brainiac の現状 現代のハイエンドプロセッサはほぼ全員が OOO Brainiac: - **Apple M4(P)**: 10-issue、超深い OOO ウィンドウ - **Intel Golden Cove**: 12-issue、巨大な ROB - **AMD Zen 5**: 8-issue OOO 一方、低消費電力コアはインオーダーを維持: - ARM Cortex-A55/A510、Intel Gracemont(E コア)などは OOO を省いて面積と電力を節約。 - これが**非対称マルチコア(big.LITTLE)**の設計根拠。 ## IA-64 の失敗(Brainiac とも Speed-demon とも異なる道) Intel の IA-64(Itanium)は「スマートコンパイラ + VLIW-like EPIC」という第三の道を選んだが商業的に失敗。原因: 1. バイナリ互換性の欠如 → x86 ソフトウェア資産が活用できない。 2. コンパイラがキャッシュミスを予測できない → 実性能が理論値を大幅に下回る。 3. AMD の x86-64(64-bit x86 拡張)がより現実的な代替を提供した。 ## 設計最前線での問い 「Brainiac vs Speed-demon」の現代版は「**どれだけ広い OOO を何コア搭載するか**」という問いに変わった: - 超広幅 1 コア × OOO: ディスパッチが n² スケール → 現実的でない - 適度な幅 × 多コア + SMT: 現在の主流 - 小コア × 超多コア(UltraSPARC T3 の 128 スレッド): メモリ律速アプリ向けには有効だが汎用には不十分 → 詳細: [[同時マルチスレッディング]] ## 横断的知見 - 今後の取り込みで、複数ソース間の関係を追記する。 ## 未解決の問い - この概念をどのソース群で継続的に検証するか。 ## 関連 - OOO の仕組みとコスト → [[アウトオブオーダー実行]] - 電力・ILP・メモリの壁 → [[メモリウォール]] - TLP での補完 → [[同時マルチスレッディング]]