什麼是暫存器重新命名?
暫存器重新命名是一種消除暫存器資料之間虛假資料依賴關係(例如 WAR 和 WAW 依賴關係)的標準方法。它最早由 Tjaden 和 Flynn 於 1970 年提出。
他們打算將暫存器重新命名用於一組確定的指令,這些指令或多或少與載入指令類相似,儘管它沒有使用“重新命名”這個短語。Keller(1975)引入了“暫存器重新命名”的名稱,並將其解釋為所有合適的指令。
暫存器重新命名假定三運算元指令格式。為了說明此前提條件,讓我們考慮一個雙運算元指令,例如
ad r1, r2
其解釋為
r1←(r1)+(r2)
在雙運算元指令格式中,結果寫回其中一個源運算元的位置,在本例中為 r1 的位置。但是,為了重新命名目標,必須使用與包含源運算元 (r1) 的暫存器不同的暫存器,例如 r11。因此,重新命名後我們得到
r11←(r1)+(r2)
這意味著雙運算元指令的重新命名總是以三運算元指令結束。因此,雙運算元指令只能使用內部的雙運算元到三運算元轉換進行重新命名。
暫存器重新命名的實現
暫存器重新命名可以靜態或動態地實現,如圖所示。

**靜態實現** - 在靜態實現中,暫存器重新命名在編譯期間進行。此技術最初是在流水線處理器的並行最佳化編譯器中引入的,後來在超標量處理器中也得到了應用。
**動態實現** - 當暫存器重新命名動態實現時,重新命名在執行期間發生。這需要額外的電路,包括補充暫存器空間、額外的數 據路徑和邏輯。動態重新命名已在 1990 年代初期的先進超標量處理器中得到應用。
重新命名分兩個階段引入。在第一階段,重新命名僅部分實現。這裡,重新命名僅限於一種或幾種特定的資料型別。例如,Power1、Power2、PowerPC 601 和 Nx586 處理器使用部分重新命名。
在這兩個階段中,IBM 是第一個引入重新命名的供應商,最初是在其 Power 系列的 Power1 (RS/6000) 中,後來在其 ES/9000 系列的高階處理器中。IBM 繼續在其基於 Power 的 PowerPC 系列中實施完全重新命名,除了第一個型號 PowerPC 601。所有重要的超標量處理器供應商在其最新的型號中都引入了重新命名,除了 DEC 的 α 系列和 Sun 的 UltraSparc。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP