Intel Core & Enhanced Core微架構(7)
阿新 • • 發佈:2019-01-06
Stack Pointer Tracker
Intel 64和IA32架構上有幾個用於引數傳遞以及過程進入與退出的常用指令:PUSH,POP,CALL,LEAVE和RET。這些指令隱式得更新棧指標暫存器(ESP或RSP),無需軟體介入,即可在程式棧中維護傳遞的引數和過程執行控制流(進入與退出)。在前幾代微架構中,這些指令通常都譯碼為多條微指令。
棧指標跟蹤器將這些指令中對棧指標的更新操作移到了譯碼器中專門的硬體邏輯中。這個體系提供如下的優勢:
- 提升譯碼頻寬,在Intel Core微架構上,PUSH/POP/RET均譯碼為單微指令。
- 節省執行頻寬,棧指標更新不再需要競爭執行資源。
- 增強亂序執行引擎的並行性,因為微指令間隱式地序列化依賴被消除了。
- 提高能耗效率,因為棧指標的更新由小的專用硬體完成。
Micro-fusion
微熔合將來自於同一條x86指令的多條微指令合併成單條複雜微指令。換句話說,某條x86指令譯碼後生成了多條微指令,微熔合機制可以將這些微指令合併在一起生成單條複雜微指令,等價於一條x86指令在微熔合機制下譯碼後只生成一條微指令。微熔合具有如下的效能優勢:
- 提升從譯碼指到退役的指令頻寬
- 降低能耗,因為複雜微指令以較小的格式(從位元密度的角度來看)表示了較多的操作,當機器需要完成某個固定工作量的操作時,減少了機器總體需要的“位元反轉”,即減少電力消耗,也實際上增加了亂序執行引擎可以儲存的指令數量
許多指令有暫存器操作格式和儲存器操作格式。相比起暫存器操作格式,操作儲存器的指令格式通常會譯碼為較長的幾條微指令序列。微熔合機制使得軟體可以使用儲存器到暫存器的指令操作格式,而無需再擔心損失譯碼頻寬。
(Todo:這個例子恰當?)例如,在Pentium II和Pentium III處理器上,對於ADD指令,ADD r8, r8(暫存器操作)對應一條微指令,但是ADD r8, m8(儲存器操作)則會譯碼為兩條微指令。但是在Intel Core及其以後的微架構上,ADD r8, m8(儲存器到暫存器)則可以通過微熔合機制譯碼為單條複雜微指令。