延遲間隙

延遲間隙 ， 是計算機體系結構中一個指令間隙 ， 在前一條指令沒有執行完畢的情況下 ， 處理器內部指令流水線上該指令間隙的執行不會修改處理器的狀態 。 這種技術常用於DSP與早期的RISC體系結構 。 最常見的是下文描述的分支延遲間隙 。 另外還有過存儲延遲間隙 ， 即在存儲內存的指令之後跟一個延遲間隙 ， 現在已經基本不用了 。 當一個分支指令之後的延遲間隙指令 ， 在指令流水線中被稱作分支延遲間隙 （ branch delay slot ） 。 常見於DSP體系結構與老式的RISC體系結構 。 MIPS 、 PA - RISC 、 ETRAX CRIS 、 SuperH 、 SPARC等RISC體系結構在分支後有一個延遲間隙 。 PowerPC 、 ARM 、 DEC Alpha沒有采用分支延遲間隙 。 DSP具有單個分支延遲間隙的有VS DSP 、 µPD77230 、 TMS320C3x 。 SHARC DSP與MIPS - X使用兩個分支延遲間隙 。 採用指令流水線的處理器的目標是每個時鐘週期完成一條指令 。 爲此 ， 在任何時刻流水線都應該充滿了處於不同執行階段的指令 。 分支指令會導致分支冒險 ， 也就是不到分支指令執行完畢被退休 （ retired ） ， 是不能確定哪些後繼指令應該繼續執行 。 一個簡單辦法是在分支指令後面插入流水線遲延 （ stall ） ， 直到新的分支目標地址被求出 ， 並把新的指令地址裝入IP寄存器 。 流水線延遲的每個週期都是分支延遲間隙 。 更爲複雜的設計是在分支指令後面執行那些不依賴於分支結果的指令 。 這可以由編譯器自動優化 。