延迟间隙

维基百科,自由的百科全书
跳转至: 导航搜索

延迟间隙是计算机体系结构中一个指令间隙,在前一条指令没有执行完毕的情况下,处理器内部指令流水线上该指令间隙的执行不会修改处理器的状态。这种技术常用于DSP与早期的RISC体系结构。最常见的是下文描述的分支延迟间隙。另外还有过存储延迟间隙,即在存储内存的指令之后跟一个延迟间隙,现在已经基本不用了。

当一个分支指令之后的延迟间隙指令,在指令流水线中被称作分支延迟间隙(branch delay slot)。常见于DSP体系结构与老式的RISC体系结构。MIPSPA-RISCETRAX CRISSuperHSPARC等RISC体系结构在分支后有一个延迟间隙。PowerPCARMDEC Alpha没有采用分支延迟间隙。DSP具有单个分支延迟间隙的有VS DSPµPD77230TMS320C3xSHARC DSP与MIPS-X使用两个分支延迟间隙。

采用指令流水线的处理器的目标是每个时钟周期完成一条指令。为此,在任何时刻流水线都应该充满了处于不同执行阶段的指令。分支指令会导致分支冒险,也就是不到分支指令执行完毕被退休(retired),是不能确定哪些后继指令应该继续执行。一个简单办法是在分支指令后面插入流水线迟延(stall),直到新的分支目标地址被求出,并把新的指令地址装入IP寄存器。流水线延迟的每个周期都是分支延迟间隙。更为复杂的设计是在分支指令后面执行那些不依赖于分支结果的指令。这可以由编译器自动优化。

外部链接[编辑]