Out-of-Order 実行 (ROB / RS)(アウトオブオーダ)
命令を並べ替えて並列実行するCPU技法。Reorder Buffer (ROB) / Reservation Station (RS) で命令を一時保持、依存解決後に並列発行する現代CPU の心臓部。
概要
Out-of-Order (OoO) Execution は命令を並べ替えて並列実行するCPU技法。命令を取得 (In-order Fetch) → 復号 → リネーム → ディスパッチ (Out-of-order・並列発行) → Retirement (In-order Retire) の流れで、データ依存のない命令を並列実行することでスループットを大幅向上する現代CPU の心臓部。Robert Tomasulo が1967年IBM System/360 Model 91 で初実装した「Tomasulo Algorithm」が起源。
主要コンポーネント
| 構造 | 機能 |
|---|---|
| RAT (Register Alias Table) | レジスタリネーミング |
| ROB (Reorder Buffer) | 投機実行・順序付Retire |
| RS (Reservation Station) / Scheduler | 依存解決・発行管理 |
| Execution Units | ALU / FPU / Load-Store 等 |
| Physical Register File | リネーム後の実レジスタ |
| Retirement Unit | 順序付完了 |
ROB / RS 仕様 (主要CPU・2024)
| CPU | ROB | RS / Scheduler |
|---|---|---|
| Apple M3 (P-core) | 670 | 432 |
| Apple M3 (E-core) | 174 | 112 |
| Intel Lion Cove (Core Ultra 200) | 576 | 240 |
| Intel Skymont (E-core) | 416 | 220 |
| AMD Zen 5 (Ryzen 9000) | 448 | 192 |
| AMD Zen 4 (Ryzen 7000) | 320 | 140 |
| Apple Firestorm (M1 P) | 630 | 360 |
ROB / RS サイズが大きいほど多数の命令を「飛び越えて」実行可能、Memory レイテンシ隠蔽効果が大きい。Apple Silicon のROB サイズが業界最大級である理由は、メモリ帯域とアクセスレイテンシをカバーする設計選択。
投機実行とMeltdown / Spectre
OoO の必須機能「投機実行」(Speculative Execution) は2018年Meltdown / Spectre 脆弱性として露呈。分岐予測結果を信じて先行実行する仕組みが、サイドチャネル攻撃でカーネルメモリ読出を可能にした。後にKPTI (Kernel Page Table Isolation) / Retpoline 等の緩和策が必須化、性能5-30%低下を招いた。
Tomasulo Algorithm
Robert Tomasulo (IBM・1967) が System/360 Model 91 で実装した、CDB (Common Data Bus) ベースの動的命令スケジューリング:
- Issue: ROB / RS にエントリ確保・オペランド Read
- Execute: 依存解決後にExecution Unit へ発行
- Write Back: CDB で結果を待機命令に broadcast
- Commit: ROB head の命令をin-order Retire
関連用語との違い
- vs In-Order: 命令順序通り (Intel Atom 初期 / ARM Cortex-A53)
- vs SMT: SMT は 2 thread 並列・OoO は 1 thread 内並列
- vs VLIW: ハードウェアOoO / コンパイラ静的スケジューリング (Itanium)
FAQ
Q1: なぜROB / RS のサイズ重要? A: メモリレイテンシ (100ns+) を隠蔽するため、ROB が大きいほど多数の独立命令を並列実行可能。Apple M シリーズの圧倒的シングルスレッド性能の理由。
Q2: 分岐予測との関係? A: 投機実行は分岐予測なしには成立しない。分岐先を予測→投機実行→分岐確定で正しければRetire・誤りで ROB Flush。
Q3: 1 cycle に何命令発行? A: 「IPC (Instructions Per Cycle)」と呼ぶ。Apple M3 P-core 8-10 IPC・Intel Lion Cove 6-8 IPC・AMD Zen 5 5-6 IPC が典型。