什么是ROB?


ROB 代表重排序缓冲区。ROB 最初由 Smith 和 Pleszkun 于 1988 年提出。他们构思了 ROB 来解决精确中断问题。ROB 是一个带头尾指针的循环缓冲区。

头指针表示下一个空闲条目的区域。指令按照严格的程序顺序写入 ROB。随着指令发出,每个指令依次被分配一个新的条目。

只有当指令完成并且所有之前的指令都已退休时,该指令才能被允许退休。这种方法确保指令严格按顺序退休。顺序一致性得以保持,因为只有退休的指令才能完成,即通过将其结果写入引用的体系结构寄存器(s)或内存来刷新程序状态。

ROB 也自然地有助于中断处理。与指令执行相关的中断可以通过仅在关联的指令成为下一个退休的指令时才获取中断请求来轻松地使其变得精确。

ROB 更加通用。ROB 的设计空间如图所示。在最简单的布局中,ROB 只提供重排序。

在下一个布局中,ROB 用于重排序和重命名。在这种情况下,每个 ROB 条目都必须提供空间来保存相应指令的结果。在第三种方案中,ROB 也用于搁置,通常被称为 DRIS(延迟调度,寄存器重命名指令搁置)。

在这种情况下,ROB 还必须提供用于搁置的空间,这意味着根据操作数获取策略,要么为源寄存器编号提供空间,要么为源操作数提供空间。

ROB 的大小决定了 ROB 中的多个条目。此参数限制了处理器中活动指令(即已发出但尚未完成)的数量。搁置的数量和重排序缓冲区条目的数量必须保持平衡。

重排序缓冲区保存所有挂起的(即尚未完成的)指令。一些挂起的指令正在搁置缓冲区中等待其操作数和调度。其他指令正在执行过程中。因此,我们预计在最近的超标量处理器中,重排序缓冲区条目比搁置多。

退休率定义了 ROB 在每个周期内可以完成的最大指令数。此值指示处理器的最大吞吐量。

处理器可以被认为由几个顺序链接的子系统组成,这些子系统通过某种类型的缓冲区彼此解耦。这些子系统是获取、发出、调度、执行和退休。

更新于:2021-07-23

862 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告