计算机体系结构中指令阻塞的类型有哪些?
处理指令阻塞可以分为图中所示的两种类型。第一个方面称为保持指令顺序,它指定依赖指令是否会阻塞后续独立指令在指令窗口中的发出。第二个方面是指令发出对齐。它决定是使用固定指令窗口还是滑动指令窗口。
如图所示,如果一个依赖指令(例如指令b)阻塞所有后续指令的发出,直到依赖关系解决,则指令顺序称为“顺序发出”。
然而,限制后续独立指令的发出会极大地破坏实现。因此,一些采用直接发出模式的超标量处理器(包括 MC88110 和 PowerPC 601)引入了乱序发出。
处理指令阻塞的第二个方面决定了指令发出的对齐方式。它指的是指令是从固定窗口发出还是从滑动窗口发出。
在对齐指令发出情况下,使用固定窗口。这定义了在当前窗口中的所有指令都发出之前,不将下一个窗口的任何指令视为发出候选。
对齐指令发出是第一代超标量处理器(包括 i960CA 和 Power1)的典型特征。但在阻塞发出模式下,对齐发出会显著降低有效的发出率。因此,一些仍然使用直接发出模式的后续超标量处理器引入了不对齐指令发出。
然后使用一个宽度等于发出率的滑动窗口。在每个周期,都会测试窗口中所有指令的依赖关系。独立指令以顺序或乱序方式从窗口发出。但是,在指令发出后,窗口会被重新填充。
不对齐指令发出是采用直接发出模式的第二代超标量处理器的经典特征:MC88110、MC68060、PA 7200、R8000 和 UltraSparc。然而,随着搁置机制的引入,使用不对齐指令发出的动机大大降低。这是可以理解的,因为搁置机制将依赖关系检查延迟到指令调度阶段。
因此,在使用搁置机制时,指令可以几乎不受限制地发出到搁置缓冲区。唯一剩下的条件与简单的硬件要求相关,包括搁置缓冲区、总线等的可用性。作为一种解决方法,采用搁置机制的现代超标量处理器已恢复到对齐指令发出。例如 PowerPC 603、PowerPC 604、PowerPC 620 和 R10000。