ROB(Reorder Buffer):重排序缓冲区

ROB:现代CPU的"指挥中心"

超标量处理器每周期发射多条指令,但程序要求顺序执行的效果。Reorder Buffer(ROB,重排序缓冲区)就是这个矛盾的核心解决方案——让指令乱序执行,但顺序提交。这篇聊聊ROB的作用、实现和演进。


1. ROB的核心作用

1.1 乱序执行与顺序提交

现代CPU的流水线:

  1. 取指/译码:按程序顺序
  2. 发射/执行:乱序(只要数据就绪)
  3. 提交:必须按程序顺序

ROB位于第3步,确保即使指令乱序执行,最终结果也按程序顺序可见。

为什么必须顺序提交?

  • 精确中断:异常发生时,CPU状态必须与程序顺序一致
  • 分支预测失败:可以丢弃推测执行的指令,恢复正确状态
  • 内存模型:多线程程序依赖顺序执行的语义

1.2 寄存器重命名

早期ROB(如Intel P6)还承担寄存器重命名的功能[1][2]

  • 每条指令分配一个ROB entry
  • 指令结果暂存在ROB中
  • 退休时复制到Retirement Register File (RRF)

这种方式简单,但有问题:

  1. 每条指令都占ROB entry,即使没有目的寄存器(如分支指令)
  2. 退休时需要数据搬运(ROB→RRF),增加功耗
  3. ROB和RRF都需要大量读端口

1.3 推测执行支持

分支预测后,指令是"推测"的,可能错误。ROB保存这些推测状态:

  • 预测正确:指令按顺序提交
  • 预测错误:丢弃ROB中所有推测指令,恢复状态

2. ROB的硬件结构

2.1 典型ROB Entry

每个ROB entry包含[1][3]

字段 作用
Complete 指令是否执行完成
Areg 逻辑寄存器编号(如R1)
Preg 物理寄存器编号(如P10)
Old Preg 旧物理寄存器,用于异常恢复
PC 指令地址,用于异常定位
Exception 异常类型(如缺页、除零)
Type 指令类型(ALU/Load/Store/分支)

2.2 工作流程

分发(Dispatch)

  • 指令译码后分配ROB entry
  • 初始化Complete=0
  • 记录Areg、PC等信息

执行(Execute)

  • 指令乱序执行
  • 结果写入Preg
  • Complete置1
  • 若异常,记录Exception字段

退休(Commit)

  • 按程序顺序检查Complete=1的指令
  • 正常指令:结果写入ARF或内存(Store),释放ROB entry
  • 异常指令:触发中断,回滚到Old Preg状态

3. 实际处理器案例

3.1 Intel的演进

处理器 架构 ROB Entries 备注
Pentium Pro P6 40 首款乱序执行x86[1]
Core 2 P6改进 96 -
Nehalem P6改进 128 -
Sandy Bridge 新架构 168 改用统一PRF[4][5]
Golden Cove 新架构 512 巨大提升[6][7]
Lion Cove 新架构 576 下一代[8]

关键转变:Sandy Bridge从ROB-based转向统一PRF[5]

  • P6:ROB既存指令状态,又存数据
  • Sandy Bridge:ROB只存状态,数据存PRF
  • 优势:减少数据搬运,降低功耗,提升频率

3.2 AMD的演进

处理器 ROB Entries 特点
Zen 1 192 -
Zen 2 224 -
Zen 3 256 -
Zen 4 320 -
Zen 5 448 大幅提升[9]

AMD的ROB相对较小,但通过其他机制(如大μOp Cache)补偿。

3.3 ARM与龙芯

处理器 ROB Entries 特点
ARM Cortex-A73 128 中等规模
ARM Cortex-X1 ~224 大核设计
龙芯3A5000 128 国产起步[10][11]
龙芯3A6000 256 翻倍提升[12]

龙芯3A6000的256-entry ROB与AMD Zen 3相当,但比Intel Golden Cove的512小一半。


4. ROB大小的影响

4.1 为什么ROB越大越好?

ROB决定了指令窗口大小——能同时追踪多少条乱序执行的指令。

更大的ROB意味着:

  1. 更深的乱序执行:可以覆盖更大的内存延迟
  2. 更多的指令级并行:发现更多独立指令
  3. 更好的分支预测恢复:可以推测执行更远

4.2 边际收益递减

但ROB不是越大越好:

  • 面积成本:ROB是大型结构,占用芯片面积
  • 功耗:更大的ROB需要更多静态功耗
  • 复杂度:更大的ROB需要更复杂的调度逻辑

Intel Golden Cove的512-entry ROB已经很大,Lion Cove提升到576,收益可能有限。

4.3 与其他结构的平衡

ROB需要与其他结构匹配[12]

  • 寄存器文件:ROB大,需要更多物理寄存器
  • Load/Store Queue:需要能容纳足够多的内存操作
  • Scheduler:需要能调度足够多的待执行指令

龙芯3A6000的设计[12]

  • ROB: 256 entries
  • Integer Register File: 192 entries
  • FP Register File: 192 entries
  • Load Queue: 80 entries
  • Store Queue: 64 entries

这种配置相对平衡,避免了"大ROB小寄存器"的瓶颈。


5. ROB的替代:统一PRF

5.1 P6的问题

Intel P6架构(Pentium Pro到Core 2)的ROB既存指令状态,又存数据[1][5]

  • 每个ROB entry包含结果数据字段
  • 退休时需要搬运数据到RRF
  • ROB和RRF都需要大量端口

5.2 Sandy Bridge的改进

Sandy Bridge改用统一物理寄存器文件(Unified PRF)[4][5]

  • ROB只存指令状态(Complete、Exception等)
  • 数据存在独立的PRF
  • 退休时只需更新映射关系,无需数据搬运

优势

  1. 减少数据搬运,降低功耗
  2. ROB和PRF可以独立优化
  3. 更好的热量分布(避免ROB成为热点)

代价

  1. 需要额外的PRF结构
  2. 需要管理PRF的空闲列表
  3. 需要两个RAT(前端RAT和退休RAT)

5.3 现代趋势

现代高性能CPU普遍采用统一PRF:

  • Intel:Sandy Bridge及以后
  • AMD:Zen及以后
  • ARM:Cortex-A57及以后

ROB-based设计主要用于:

  • 低功耗嵌入式处理器
  • 教学/研究用途(设计简单)

6. 总结

特性 ROB-based (P6) 统一PRF (现代)
数据存储 ROB entry 独立PRF
退休操作 数据搬运 更新映射
功耗 较高 较低
复杂度 较低 较高
主流应用 历史/嵌入式 现代高性能CPU

ROB的核心价值

  1. 支持乱序执行,提升IPC
  2. 保证顺序提交,满足精确中断
  3. 支持推测执行,提升分支预测效率

关键洞察

  • ROB大小决定了指令窗口,影响乱序执行深度
  • 现代CPU从ROB-based转向统一PRF,追求能效
  • ROB需要与寄存器文件、LSQ等结构平衡设计

理解ROB,就能理解为什么现代CPU能在保持程序正确性的同时,实现深度乱序执行和高性能。


参考


  1. University of Washington. Reorder Buffer Implementation (Pentium Pro).

  2. University of Washington. Reorder Buffer Implementation.

  3. University of Washington. Reorder Buffer Implementation (Pentium Pro) slides.

  4. WikiChip. Sandy Bridge (client) - Microarchitectures - Intel.

  5. Ars Technica. Intel's next must-have upgrade: a look at Sandy Bridge. PRF vs ROB.

  6. ACM. ATR: Out-of-Order Register Release Exploiting Atomic Regions. Golden Cove 512-entry ROB.

  7. WikiChip. Golden Cove - Microarchitectures - Intel.

  8. HWCooling. Intel's new P-Core: Lion Cove is the biggest change since Nehalem. 576-entry ROB.

  9. Hardware Times. AMD Zen vs Zen 2 vs Zen 3 vs Zen 4 vs Zen 5 Core Architecture.

  10. 哔哩哔哩. 龙芯3A5000:中国的最佳选择?

  11. Chips and Cheese. Loongson's 3A5000: China's Best Shot?

  12. Chips and Cheese. Loongson 3A6000: A Star among Chinese CPUs. 256-entry ROB.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容