空闲预留站的处理方法是什么?


当指令到达空闲预留站时,超标量处理器会遵循图中所示的两种不同方法。直接方法是像处理部分填充的预留站一样处理指令。但是,进入的指令必须至少在一个周期内停留在空闲站中,然后再分派。Nx586就是一个以这种方式处理空闲预留站的处理器的例子。

处理空闲预留站的一种更高级的方法是使用旁路。在这里,一些额外的电路允许指令绕过空闲站,并立即转发到执行单元 (EU),而不会产生任何额外的延迟。PowerPC 604和PM1(Sparc64)采用了这种更高效的方法。

典型的调度方案

调度方案包含以下组件:

  • 大多数最新的处理器都采用寄存器重命名和推测执行。因此,数据流选择规则最常用,如果需要仲裁,则优先选择最旧的指令。

  • 在指令调度期间获取操作数时,大多数处理器使用直接检查方法。或者,当在指令发出期间获取操作数时,通常会维护和检查显式状态位以确定操作数的可用性。

  • 空闲预留站通常会被绕过。

如果我们关注调度顺序和调度速率,则可以在最新的超标量处理器中识别出三种典型的方法,如图所示。

直接调度中,指令一次调度一个。在这种简单的方法中,尚未可执行的指令会阻塞进一步的调度,直到该指令变为可执行。一些使用单个预留站的处理器采用这种直接但低效的方法。

通过为特定的预留站引入乱序调度,可以提高这种简单方法的效率。可以称这种方法为增强的直接调度。在这种情况下,预留站使用乱序调度,后续的可执行指令可以绕过尚未可执行的指令。这种方法通常用于使用单个预留站的高级处理器。

高级调度是最强大的。它允许乱序调度,并且能够将多个指令每个周期转发到可用的执行单元 (EU)。这种高级调度策略用于具有组预留站或中央预留站或 DRIS 的处理器。通常,同一线路的后续处理器倾向于使用更强大的调度方法。

更新于:2021年7月22日

147 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告