計算機體系結構中指令阻塞的型別有哪些?
處理指令阻塞可以分為圖中所示的兩種型別。第一個方面稱為保持指令順序,它指定依賴指令是否會阻塞後續獨立指令在指令視窗中的發出。第二個方面是指令發出對齊。它決定是使用固定指令視窗還是滑動指令視窗。
如圖所示,如果一個依賴指令(例如指令b)阻塞所有後續指令的發出,直到依賴關係解決,則指令順序稱為“順序發出”。
然而,限制後續獨立指令的發出會極大地破壞實現。因此,一些採用直接發出模式的超標量處理器(包括 MC88110 和 PowerPC 601)引入了亂序發出。
處理指令阻塞的第二個方面決定了指令發出的對齊方式。它指的是指令是從固定視窗發出還是從滑動視窗發出。
在對齊指令發出情況下,使用固定視窗。這定義了在當前視窗中的所有指令都發出之前,不將下一個視窗的任何指令視為發出候選。
對齊指令發出是第一代超標量處理器(包括 i960CA 和 Power1)的典型特徵。但在阻塞發出模式下,對齊發出會顯著降低有效的發出率。因此,一些仍然使用直接發出模式的後續超標量處理器引入了不對齊指令發出。
然後使用一個寬度等於發出率的滑動視窗。在每個週期,都會測試視窗中所有指令的依賴關係。獨立指令以順序或亂序方式從視窗發出。但是,在指令發出後,視窗會被重新填充。
不對齊指令發出是採用直接發出模式的第二代超標量處理器的經典特徵:MC88110、MC68060、PA 7200、R8000 和 UltraSparc。然而,隨著擱置機制的引入,使用不對齊指令發出的動機大大降低。這是可以理解的,因為擱置機制將依賴關係檢查延遲到指令排程階段。
因此,在使用擱置機制時,指令可以幾乎不受限制地發出到擱置緩衝區。唯一剩下的條件與簡單的硬體要求相關,包括擱置緩衝區、匯流排等的可用性。作為一種解決方法,採用擱置機制的現代超標量處理器已恢復到對齊指令發出。例如 PowerPC 603、PowerPC 604、PowerPC 620 和 R10000。