什麼是擱置(Shelving)?
擱置(Shelving)是一種高階的指令發出模式,用於消除由於依賴關係導致的指令發出阻塞。擱置利用了專用的指令緩衝區,稱為擱置緩衝區,位於每個執行單元 (EU) 的前面。擱置將依賴關係檢查與指令發出解耦,並將檢查推遲到排程階段。
更準確地說,使用擱置,即使存在資料或控制依賴關係或執行單元繁忙,解碼後的指令也會被放入擱置緩衝區。這消除了阻塞指令發出的瓶頸。
特定的資源約束可能會限制處理器在一個週期內發出的指令數量少於其指令發出率。存在兩種資源約束,例如目標擱置緩衝區、重新命名暫存器檔案或 ROB 中缺少空閒條目。資料路徑限制並限制在一個週期內可以傳輸到分配的擱置緩衝區的指令數量。在發生指令發出阻塞的情況下,使用擱置的處理器通常採用順序發出、對齊發出等。

指令儲存在擱置緩衝區中,直到依賴關係解決並且指令可以轉發到執行單元。當某個執行單元空閒時,會檢查相關的擱置緩衝區中是否有符合執行條件的指令。不受任何依賴關係約束的指令符合執行條件。根據使用的排程策略選擇一個符合條件的指令進行執行,並將該指令轉發到連線的執行單元。

使用擱置的處理器主要採用高階超標量指令發出策略。這意味著擱置通常與未解決的控制依賴關係的推測執行和暫存器重新命名結合使用。
推測分支處理消除了由於未解決的控制依賴關係導致的執行阻塞,而重新命名消除了由於錯誤的暫存器資料依賴關係(即由於 WAR 和 WAW 依賴關係)導致的發出阻塞。
然後,只有真正的資料依賴關係才能阻止儲存在擱置緩衝區中的指令執行。因此,在指令排程期間,依賴關係檢查減少為檢查真正的資料依賴關係(RAW 依賴關係)。
這正是資料流操作原理。因此,具有擱置、推測分支處理和暫存器重新命名的超標量處理器基於資料流執行指令。它涉及保持順序一致性,這要求即使指令並行執行,也要保持執行的邏輯完整性。
擱置使處理更加分散式,因為排程視窗比發出視窗寬得多。因此,擱置經常與一種稱為指令重排序的高階方法一起使用,以保持順序一致性。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP