什么是调度策略?
调度策略指定如何选择指令以执行以及如何处理调度阻塞。调度策略可以被认为是一个调度策略,包括如图所示的组件。
选择规则 - 选择规则指定何时将指令视为可执行。让我们假设重命名已使用,并且未解决的条件转移指令由推测性分支处理来管理。
仲裁规则 - 当多个指令有资格执行时,它也可能需要一个仲裁规则,这些指令可以在下一个周期内分发。大多数处理器使用一个简单的仲裁规则,该规则优先考虑“较旧”的指令而不是“较新”的指令。Power1、Power2、PowerPC 620、PM1(Sparc64)和PentiumPro 是使用此仲裁规则的示例。
调度顺序 - 调度顺序指定不可执行指令是否阻止所有后续指令被调度,如图所示。
当使用顺序调度方案时,不可执行指令会阻止任何进一步的调度。因此,即使后续指令可用于执行,它们也无法调度。顺序调度会影响性能。
使用部分乱序调度可以实现略微的性能提升。Power2、PowerPC 604 和 PowerPC 620 是使用这种方法的处理器。Power2 仅对 FP 指令进行搁置,并允许在调度期间可执行的 FP 指令跳过单个不可执行的 FP 指令。PowerPC 604 和 PowerPC 620 按顺序从特定的保留站调度指令,以及其他乱序指令。
因此,PowerPC 604 从分支、加载/存储和 FP 保留站执行顺序调度,而它从三个 FX 保留站乱序调度指令。
最先进的方案是乱序调度。在这里,不可执行指令不会阻止后续可执行指令的循环。相反,搁置缓冲区中保存的任何可执行指令都有资格进行调度。从实现的角度来看,必须检查所有或至少大量搁置缓冲区条目以查找可执行指令。
相比之下,在顺序调度方案中,只需检查最后一个缓冲区条目即可。乱序调度的非常早期的先驱是 IBM 360/91 处理器。大多数最新的处理器都采用乱序调度。