Alibaba Patents(US11467844B2): Storing multiple instructions in a single reordering buffer entry
| Inc | Title | Patents |
|---|---|---|
| Alibaba | Storing multiple instructions in a single reordering buffer entry | US11467844B2 |
2025 年 RISC-V 中国峰会上,Xuantie 披露了 C930 的更详细的信息,其中有提到 C930 使用了可压缩的 ROB 设计,与这篇专利相近。
这篇专利 2021 年发布,考虑到 C930 的研发周期,C930 很可能采用了该专利进行 ROB 压缩设计。
主要涉及处理器架构中的指令重排序缓冲器(Reorder Buffer, ROB)优化技术。
其核心创新在于:在单个 ROB Entry 中存储多条指令的信息,从而在不显著增加硬件资源的前提下,提升处理器的指令处理能力和并行 Retirement 效率
针对问题
- ROB 容量有限,若无法为新译码的指令分配条目,流水线将被阻塞
- Entry 数越多,处理器能并行跟踪的指令越多,但也会占用更多硬件资源
- 传统 ROB 每个 Entry 只对应一条指令,导致资源利用率低、 Retire 带宽受限
解法:
在单个 ROB Entry 中存储多条指令的信息, 通过共享条目来提升 ROB 的指令容量和 retire 带宽,而不显著增加硬件开销
ROB Entry Fields:
- IID(Entry Identifier):条目标识
- IC(Instruction Counter):当前条目中存储的指令数量
- CC(Completion Counter):尚未执行完成的指令数量
- Valid
- Offset Sum: 用于保存所存储的指令与该 Entry 中第一条指令的 PC 偏移,用于跟踪指令流
- 指令的执行信息
ROB Entry 分配
指令译码时分配 ROB Entry
- Decode Stage 在一个时钟周期内可译码多条指令(如 4 条),其中相同或相似指令类型会存到一个 ROB Entry 中
- 译码后的指令信息(如 PC 等)被存入 ROB Entry, ROB Entry 的 IC 和 CC 均 +1
- ROB Entry 的 IID 传回到译码单元,和指令一起随流水线传递
对于不会触发异常的指令如 ALU 指令,部分浮点和向量指令等,不会为其分配 ROB Entry (这一点可能对于性能的改善更大点,但专利也只是一笔带过)
ROB 分配搜索 Entry 的策略:
- 策略 1:搜索存储指令最少的 Entry
- 好处是空间利用率高, Retire 带宽更高(平均每个 ROB Entry 存储的指令更多)
- 搜索空间较大,整个 ROB ?
- 异常回滚复杂
- 策略 2: 为新译码的 4 条指令分配新的 ROB Entry
- ROB Entry 一旦分配,就不再加入新指令直到 Retire
- 好处是空间利用率和 Retire 带宽相对较低
- 实现更简单
ROB Entry 更新
指令执行完之后:更新 ROB
- 根据指令携带的 IID 找到对应的 ROB Entry
- 更新该 Entry 的 CC 值(减 1),表示一条指令执行完成
- 更新该 Entry 的其他执行信息
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.