延遲分支的設計空間是什麼?


有兩種可能的方法來擴充套件基本概念,例如增加延遲槽的倍數或在延遲槽中引入指令的取消。大多數體系結構只提供一個延遲槽。一些體系結構提供了多個延遲槽,例如 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 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告