什麼是排程策略?
排程策略指定如何選擇指令以執行以及如何處理排程阻塞。排程策略可以被認為是一個排程策略,包括如圖所示的元件。
選擇規則 - 選擇規則指定何時將指令視為可執行。讓我們假設重新命名已使用,並且未解決的條件轉移指令由推測性分支處理來管理。
仲裁規則 - 當多個指令有資格執行時,它也可能需要一個仲裁規則,這些指令可以在下一個週期內分發。大多數處理器使用一個簡單的仲裁規則,該規則優先考慮“較舊”的指令而不是“較新”的指令。Power1、Power2、PowerPC 620、PM1(Sparc64)和PentiumPro 是使用此仲裁規則的示例。
排程順序 - 排程順序指定不可執行指令是否阻止所有後續指令被排程,如圖所示。
當使用順序排程方案時,不可執行指令會阻止任何進一步的排程。因此,即使後續指令可用於執行,它們也無法排程。順序排程會影響效能。
使用部分亂序排程可以實現略微的效能提升。Power2、PowerPC 604 和 PowerPC 620 是使用這種方法的處理器。Power2 僅對 FP 指令進行擱置,並允許在排程期間可執行的 FP 指令跳過單個不可執行的 FP 指令。PowerPC 604 和 PowerPC 620 按順序從特定的保留站排程指令,以及其他亂序指令。
因此,PowerPC 604 從分支、載入/儲存和 FP 保留站執行順序排程,而它從三個 FX 保留站亂序排程指令。
最先進的方案是亂序排程。在這裡,不可執行指令不會阻止後續可執行指令的迴圈。相反,擱置緩衝區中儲存的任何可執行指令都有資格進行排程。從實現的角度來看,必須檢查所有或至少大量擱置緩衝區條目以查詢可執行指令。
相比之下,在順序排程方案中,只需檢查最後一個緩衝區條目即可。亂序排程的非常早期的先驅是 IBM 360/91 處理器。大多數最新的處理器都採用亂序排程。