Out-of-Order Execution(乱序执行)
动机:就绪指令不必等待前序慢指令(如长延迟 MUL)。通过 乱序执行、顺序提交 在保持精确异常语义下开采 ILP。
Tomasulo 算法(1967–至今)
三大组件:
保留站 (RS) ← 等待操作数,监听 CDB 广播
寄存器重命名 ← Qi 字段指向 RS 或已就绪
CDB (Common Data Bus) ← 结果广播到所有 RS
流程:Issue → Execute → Write Result;提交仍经 ROB (Reorder Buffer) 按程序序。
寄存器重命名
消除 WAR/WAW 名称依赖:物理寄存器池 >> 架构寄存器;每条写分配新物理寄存器。现代 CPU(Intel/AMD/Apple)核心机制。
指令窗口与 IPC 递减
指令窗口 ≈ ROB + Issue Queue
Palacharla et al. (1997) 量化结论:窗口 64–128 后 IPC 收益急剧递减。
| 窗口增大 | 代价 |
|---|---|
| IPC ↑ | Wakeup/Select 延迟 ↑、面积/功耗 ↑ |
Wakeup 延迟:完成指令唤醒等待者的时间
Select 延迟:从就绪队列选出可发射指令的时间
→ 窗口不能无限大;这是 暗硅/功耗墙 在 OoO 上的体现。
硬件推测
OoO + Branch Prediction:在分支结果前发射后续指令;错误则 flush ROB 中推测路径。
Memory Fence
Fence 进入 ROB 后设 Barrier bit,排空 Store Buffer 并 stall 后续 store,直到屏障前指令 retire。多核路径经 coherence/NoC 排空 Invalidate Queue——详见 Memory Fence and Barrier、Memory Consistency Model(TSO Store→Load 重排)。
与 AI 加速器
OoO 是 通用 CPU 高 IPC 的灵魂,也是 功耗与面积的主要来源。Cerebras WSE、Groq LPU 选择 无 OoO、编译器确定性调度——用可预测性换能效与规模(见 Deterministic Execution)。
相关页面
- Instruction-Level Parallelism — ILP 与依赖
- Branch Prediction — 控制推测
- Memory Consistency Model — Store Buffer 与 TSO
- Memory Fence and Barrier — ROB/SBUF 排空与 coherence
- Quantitative Architecture Fundamentals — 暗硅与功耗墙
- Superscalar CPU Research (2023-2026) — ROB/issue queue 边际饱和;Constable 跳过 load
- Constable Load Elimination — likely-stable load 消除(ISCA’24 Best)
Citations
[1] arch-study-30d-day-10.md — Tomasulo 算法(Day 10) [2] arch-study-30d-day-12.md — 指令窗口量化(Day 12) [3] arch-study-30d-day-19.md — Store Buffer / TSO(Day 19)