Intel Core & Enhanced Core微架構(9)
Issue Ports and Execution Units
通過發射口,排程器可以每週期分發6條微指令。Intel Core微架構和Enhanced Intel Core微架構的發射口以及支援的操作在下表中列出。其中,Intel Core微架構的標識是06_0FH,Enhanced Intel Core微架構的標識是06_17H,這種標識法是根據執行CPUID指令獲得的處理器標識中的的Family和Model組合而來的,即DisplayFamily_DisplayModel。表中提供了常用的整型和浮點操作,發射口支援,以及對應的按週期數計算的延遲和吞吐量。
可執行的操作 |
延遲,吞吐量 |
註釋1 |
|
Signature: 06_0F (Core) |
Signature:06_17H (Enh. Core) |
||
Integer ALU Integer SIMD ALU FP/SIMD/SSE2 Move and Logic |
1, 1 1, 1 1, 1 |
1, 1 1, 1 1, 1 |
包括64位模式整型乘法 發射口0;回寫口0; |
Single-precision (SP) FP MUL Double-precision (DP) FP MUL |
4, 1 5, 1 |
4, 1 5, 1 |
發射口0;回寫口0; |
FP MUL (x87) FP Shuffle DIV/SQRT |
5, 2 1, 1 TODO: |
5, 2 1, 1 原文缺失 |
發射口0;回寫口0; FP shuffle不支援QW shuffle |
Integer ALU Integer SIMD ALU FP/SIMD/SSE2 Move and Logic |
1, 1 1, 1 1, 1 |
1, 1 1, 1 1, 1 |
不包括64位模式整型乘法 發射口1;回寫口1 |
FP ADD QW Shuffle |
3, 1 1, 12 |
3, 1 1, 13 |
發射口1,回寫口1 |
Integer Loads FP loads |
3, 1 4, 1 |
3, 1 4, 1 |
發射口2;回寫口2 |
Store address4 |
3, 1 |
3, 1 |
發射口3 |
Store data5 |
|
|
發射口4 |
Integer ALU Integer SIMD ALU FP/SIMD/SSE2 Move and Logic |
1, 1 1, 1 1, 1 |
1, 1 1, 1 1, 1 |
發射口5;回寫口2 |
QW shuffles 128-bit Shuffle/Pack/Unpack |
1, 12 2-4, 2-46 |
1, 13 1-3, 17 |
發射口5;回寫口5 |
注1:不同延遲的操作混和使用同一個發射口時可以會導致回寫匯流排衝突,這種情況可能會減低總體吞吐量。
注2:128位指令執行時具有更長的延遲和更低的吞吐量
注3:Enhanced Intel Core微架構使用發射口5下面的shuffle unit做128位的shuffle
注4:為儲存轉發和儲存退役邏輯準備欲儲存的資料的地址
注5:為儲存轉發和儲存退役邏輯準備欲儲存的資料
注6:延遲隨指令不同;128位指令使用QW Shuffle單元
注7:延遲隨指令不同;128位shuffle單元替換了Intel Core微架構中的QW shuffle單元。
在每個週期,預約站RS(即排程器scheduler)可以分發6條微指令,同時最多達4條微指令的執行結果可以被回寫到預約站RS和重排序緩衝區ROB,這些結果在下一個週期即可被預約站使用。如此高的執行頻寬使得微指令執行速度可以跟得上微熔合後的微指令的譯碼與退役所帶來的函式級增長。注:這句話的意思就是:有了微熔合機制,指令的譯碼和退役頻寬實質上都增加了,所以執行核的執行頻寬也要相應的增長,以匹配譯碼和退役速度。
執行核包括了一下3個執行棧(每個棧有若干個位於不同發射口下的同類型操作執行單元):
- SIMD整型棧
- 常規整型棧
- x87/SIMD浮點棧
執行核也包括了到儲存器簇(即一級快取,儲存器等的合稱)的連線。
注意:在執行核的框圖中有兩個深色的方框,分別位於1)SIMD整型棧到浮點棧,和2)整型棧到浮點棧,代表了一個週期的額外延遲,被稱為旁路延遲(bypass delay)。來自於一級快取的資料到浮點棧也會有一個週期的額外延遲。可能技術上不準確,但是可以這樣輔助理解和記憶:整型棧與浮點棧傳遞資料時會存在一個型別轉換,需要一個額外週期;資料快取中的資料傳遞給浮點單元也需要一個額外的週期做轉換。