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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容