實現重新命名緩衝區的不同方法有哪些?
有四種不同的方法可以實現重新命名緩衝區,例如使用合併的體系結構和重新命名暫存器檔案,使用單獨的名稱暫存器檔案,或者將重新命名的值儲存在 ROB 或 DRIS 中。
在第一種方法中,重新命名緩衝區與體系結構暫存器一起在一個類似的物理暫存器檔案中執行,稱為**合併的體系結構和重新命名暫存器檔案**。合併的暫存器檔案必須提供足夠數量的物理暫存器來實現體系結構暫存器和重新命名暫存器。例如,Power1 為重新命名 32 個 FP 體系結構暫存器提供了 40 個物理暫存器,而 R10000 提供了 64 個物理暫存器。
該方案的工作方式如下。讓我們假設在給定時刻,體系結構暫存器與特定的一組物理暫存器相關聯。現在,對於指令中指定的每個目標暫存器,如果可用,則分配一個空閒的物理暫存器。
這樣,體系結構暫存器由一組動態變化的物理暫存器表示。例如,讓我們假設重新命名過程為指令的目標暫存器
ad r2,………….
也就是 r2,分配物理暫存器 p3。然後在對映表中設定一個條目。條目的第一部分是條目有效位。如果此位指示有效條目,則第二部分被解釋為重新命名緩衝區索引(RB 索引),它指向用作重新命名暫存器的物理暫存器。在本例中是 p3。
重新命名後,我們得到:
ad p3,………….
源運算元的重新命名只需將體系結構暫存器編號替換為在相應的 RB 索引欄位中找到的物理暫存器編號。
ad……r0, r1
這樣,指令 ad r2, r0, r1 的重新命名結果為:
ad r2, r0, r1
需要一個額外的方案來回收不再使用的物理暫存器。在合併暫存器檔案的方法中,回收是一個複雜的任務。
當重新命名暫存器值儲存在單獨的暫存器檔案中時,此檔案稱為**重新命名暫存器檔案**。下一個可能性是使用**重排序緩衝區**(ROB)來實現重新命名緩衝區。使用 ROB 時,每個發出的指令都將分配一個單獨的 ROB 條目。因此,將該指令生成的(中間)結果也儲存在同一個條目中是很自然的。
在最後一種實現方法中,**DRIS** 以與 ROB 相同的方式使用。Lightening 使用了這種替代方法。在這三種情況下,中間結果都儲存在相應的重新命名緩衝區中,直到它們被退休。
在退休期間,重新命名緩衝區(重新命名暫存器條目、ROB 條目或 DRIS 條目)的內容被寫回體系結構暫存器檔案。這樣,體系結構暫存器檔案被更新,並且重新命名緩衝區被回收以供進一步使用。