延迟分支的设计空间是什么?


有两种可能的方法来扩展基本概念,例如增加延迟槽的倍数或在延迟槽中引入指令的取消。大多数体系结构只提供一个延迟槽。一些体系结构提供了多个延迟槽,例如 MIPS-X。

填充更多延迟槽的另一种可能性是引入取消(也称为无效或压缩)。基本思想是在使用延迟槽中引入选项,这允许填充比基本方案中更多的延迟槽。可以引入四种不同类型的取消。这四种变体通过在已取和未取路径中延迟槽是否被取消来区分。

变体如下:

  • 无取消(带执行的分支)

  • 如果分支未取,则取消延迟槽(分支或跳过)

  • 如果分支已取,则取消延迟槽(带跳过的分支)

  • 始终取消

第一个变体是指定的带执行的分支。它等效于基本延迟分支方案。分支或跳过方案允许在分支未取时取消延迟槽。它可以用于向后条件分支,将指令从循环体内部移动到延迟槽中。

带跳过的分支变体允许在分支已取时取消延迟槽。这对于向前条件分支很有用,可以将指令从顺序路径重新定位到延迟槽中。最后,始终取消方案允许引入可选的延迟分支。

具有取消功能的体系结构通常根据选择提供上述两种可能性,如表所示。值得注意的是,在 1980 年代后半期出现的多数主流 RISC 体系结构中,已以某种形式引入了取消以提高性能。例如,HP PA、SPARC 和 MC 88100 体系结构。

具有延迟分支的体系结构提供的可能的取消选项


带执行的分支分支或跳过带跳过的分支始终取消延迟槽的倍数
延迟槽中指令的取消
IBM 801(1978)X

X1
MIPS-X(1986)XX

2
HP PA(1986)XX1X2
1
SPARC(1987)XX

1
MC 88100(1988)X

X1
i860(1988)
X
X1
  • 向后分支
  • 向前分支

大多数提供扩展延迟分支方案的体系结构除了基本方案(带执行的分支)之外,还提供了分支或跳过选项。这通常是通过为每个分支指令提供两种不同的形式来完成的,一种不带取消,另一种带某种类型的取消。

这些形式通常在汇编语言语法中通过不同的助记符(如 MIPS-X 中的 BNZ 和 BNZX)或可选后缀(如 MC 88100 系列中的 n)来区分。

它还提供了取消无条件分支延迟槽中指令的可能性,例如在 HP PA、SPARC 和 MC 88100 中。

更新于: 2021-07-23

176 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始
广告