1. 程式人生 > >Intel Core & Enhanced Core微架構(8)

Intel Core & Enhanced Core微架構(8)

Execution Core

Intel Core微架構的執行核是超標量的,且可以亂序處理指令。注意:這裡沒有使用亂序執行指令,用的是亂序處理指令。“處理”在這裡包括對指令的暫存器重新命名,重排序以及派發,到最後執行。當某個依賴鏈導致機器不得不等待某個資源時(例如等待某個二級快取中的資料),執行核可以執行其他指令。這種亂序機制可以增加處理器的整體每週期執行指令數(IPC)。

執行核包含以下三個主要的部件:

  • 重新命名器(renamer) – 將微指令從前端移到執行核中。指令中使用的x86架構暫存器名稱將會被重新命名為更大數目的微架構暫存器名稱。重新命名機制可以消除被稱為“讀後讀衝突”以及“讀後寫衝突”型別的暫存器假依賴。

 

注1:讀後讀衝突,暫存器假依賴,通過重新命名消除。

MOV eax, 3

ADD ebx, eax

 

MOV eax, 5

ADD ecx, eax

 

MOV reg0, 3

ADD ebx, reg0

 

MOV reg1, 5

ADD ecx, reg1

 

注2:寫後讀衝突,暫存器假依賴,TODO:如何消除

MOV eax, [a] ; read

ADD ebx, eax ; write

??

 

  • 重排序緩衝區(ROB) – 儲存處於不同執行階段的微指令,快取已經完成的微指令,按程式設計順序更新處理器架構狀態,管理處理器產生的異常的順序。ROB有96個條目可以管理進行中的指令(instructions in flight)。
  • 預約站(RS) – 將微指令排隊,等待其所需要的源運算元以及執行資源都可用,將可以投入執行的微指令排程分發到可用的執行單元執行。預約站有32個條目。

亂序執行核的前幾個階段(指執行核中的流水線的前幾級)將微指令從前端移到ROB和RS中。在這個過程中,執行下列幾個步驟:

  • 為微指令分配資源,例如分配load緩衝區或store緩衝區
  • (根據微指令的型別)將微指令繫結到對應的發射口
  • 重新命名微指令的源運算元與目的運算元,準備亂序執行
  • 準備好微指令需要的資料(或者來自於立即數,或者來自於暫存器)。注:來自記憶體的資料在微指令層面上,需要通過load/store微指令獲取。

下面列出了常見的不同型別的操作以及執行核是如何高效的執行這些操作:

  • 單週期延遲的微操作(即微指令) – 大多數的單週期微指令可以由多個執行單元執行,允許多條依賴操作流快速執行。Todo:什麼是依賴操作流 – stream of dependent operation?
  • 高延遲的常用微指令 – 這樣的微指令使用流水線化的執行單元,多條微指令可以處於流水線中的不同階段上,達到同時執行的效果,以提升吞吐量
  • 延遲依賴資料的操作 – 某些操作,例如除法,的延遲具有資料依賴性。整型除法操作只根據運算元的有效部分分析運算元並執行計算,因此可以通過將除數設為比較小的整數來加速常用的情況。

  • 符合某些條件限制的運算元,做浮點操作時具有固定的延遲 – 對於不符合條件限制的運算元,被認為是例外情況,執行時具有高延遲與低吞吐量。這些例外情況(低吞吐量)並不影響符合條件的常規浮點操作的延遲和吞吐量。
  • 記憶體操作延遲的延遲可變,即使是一級快取命中的情況下 – 讀操作,如果儲存轉發不安全,則必須等待直到某個儲存地址(store-address)才能開始執行。訪存排序緩衝區MOB接收並處理所有的訪存操作。