# 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 での補完 → [[同時マルチスレッディング]]