什么是货架的设计空间?
货架是一种高级的指令调度模式,用于消除由于依赖关系引起的指令阻塞。货架利用位于每个执行单元 (EU) 前面的专用指令缓冲区,称为货架缓冲区。图中显示了货架的设计空间。它包含以下四个主要组成部分:货架范围、使用的货架缓冲区布局、操作数获取策略和指令调度方案。
货架范围
货架范围指定货架是否仅限于多种指令类型,或者是否对所有指令执行。部分调度仅在少数超标量处理器中使用。部分调度是解决消除由依赖关系产生的指令阻塞问题的一个不足的方案。完整货架涵盖所有指令类型。因此,大多数最新的超标量处理器,例如 PowerPC 603、PowerPC 604、PentiumPro 等都采用这种方式。
货架缓冲区的布局
货架缓冲区在指令可以被转发到执行单元 (EU) 执行之前保存已发出的指令。货架缓冲区有两种类型:独立货架缓冲区和组合缓冲区,后者用于货架、重命名和重新排序。
货架缓冲区可以作为独立货架缓冲区执行,即专门用于货架的缓冲区。这种类型的货架缓冲区通常被称为预留站。
第二种方法是使用混合缓冲区进行货架、重命名和重新排序。在这种情况下,满足程序执行相干性的重排序缓冲区 (ROB) 将继续使用,用于货架和寄存器重命名。
操作数获取策略
操作数获取策略有两种类型:指令发出绑定型或调度绑定型。指令发出绑定型获取策略定义在指令发出期间获取操作数。在这种方法中,货架缓冲区影响其操作数值的指令,需要缓冲区完全满才能支持所有源操作数的区域。
另一种基本的操作数获取策略是调度绑定型获取策略,在调度期间获取操作数。在这种情况下,货架缓冲区包含短寄存器标识符而不是长操作数。
与指令发出绑定型策略相比,调度绑定型操作数获取策略具有两个优点:关键解码/发出路径更短,并且货架缓冲区更简单,因为寄存器编号所需的缓冲区面积远小于操作数的值。
指令调度方案
指令调度可以分解为两个基本任务:调度预留站中待执行的指令,以及将已调度的指令或指令分发到已分配的执行单元 (EU)。调度策略指定如何选择指令执行以及如何处理调度阻塞。
在一个周期内可以从货架缓冲区调度多个指令,称为调度速率。还必须指定检查操作数可用性的方法。最后,它必须决定是否可以绕过空预留站。