在 SPARC-V8 架构中,delay slot(延迟槽)是指
分支指令(如 BNE、BG 或 BN,A)之后的单个指令,
无论分支是否发生,该指令都会被执行(除非使用了 annul bit 设置)。
这是 SPARC 架构中处理分支指令的一种特性,源于其流水线设计。
定义:
在 SPARC 架构中,分支指令(如 BNE、BG)在执行时不会立即改变程序计数器(PC)的值。
由于流水线机制,处理器在决定是否分支之前已经取回了分支指令后面的下一条指令。这条指令被称为 delay slot 指令。
行为:
默认情况下,分支指令后的 delay slot 指令总是会被执行,
无论分支是否发生(即无论程序跳转到目标地址还是继续顺序执行)。
目的:
延迟槽的存在是为了优化流水线性能,避免因分支指令导致的流水线停顿(stall)。
通过在分支决定生效前执行一条有用的指令,处理器可以更高效地利用周期。
例外情况:
如果分支指令设置了 annul bit(如 BNE,A),并且分支未发生,
则延迟槽指令会被 annulled(取消执行)。