【正文】
3浮點(diǎn)加法部件來自指令C acheIF ID M D 1 M D 2 M D 3 WR通用寄存器后行寫數(shù)棧乘除法部件AL定點(diǎn)算術(shù)邏輯部件LS取數(shù)存數(shù)部件Computer Architecture, Autumn 2023 ? 同時(shí)發(fā)射兩條指令的多發(fā)射處理機(jī)的指令流水線取指令 指令譯碼 執(zhí)行指令 寫回結(jié)果F A 1 F A 2 F A 3浮點(diǎn)加法部件來自指令C ach eIF 1 ID 1 M D 1 M D 2 M D 3 WR 1通用寄存器后行寫數(shù)棧乘除法部件來自指令C ach eIF 2 ID 2 AL WR 2通用寄存器后行寫數(shù)棧定點(diǎn)算術(shù)邏輯部件LS取數(shù)存數(shù)部件Computer Architecture, Autumn 2023 超標(biāo)量處理機(jī): 一個(gè)時(shí)鐘周期能同時(shí)發(fā)射多條指令的處理機(jī) 必須有兩條或兩條以上能夠同時(shí)工作的指令流水線。 先行指令窗口 :能夠從指令 Cache中預(yù)取多條指令, 能夠?qū)Υ翱趦?nèi)的指令進(jìn)行數(shù)據(jù)相關(guān)性分析和功能部件沖突檢測。 先行指令窗口的大?。阂话銥?2至 8條指令。 目前的指令調(diào)度技術(shù),每個(gè)周期發(fā)射 2至 4條指令比較合理。 例如: Intel公司的 i860、 i960、 Pentium, Motolora公司的 MC88110,IBM公司的 Power 6000等每個(gè)周期都發(fā)射兩條指令; TI公司生產(chǎn) SuperSPARC, Pentium III每個(gè)周期發(fā)射三條指令。 操作部件的個(gè)數(shù)一般多于每個(gè)周期發(fā)射的指令條數(shù)。通常為 4 個(gè)至16個(gè)操作部件。 超標(biāo)量處理機(jī)的指令級并行度: 1< ILP< m。 m為每個(gè)周期發(fā)射的 指令條數(shù)。 Computer Architecture, Autumn 2023 ? 有先行指令窗口的超標(biāo)量處理機(jī)的流水線結(jié)構(gòu)取指令 指令譯碼 執(zhí)行指令 寫回結(jié)果F A 1 F A 2 F A 3浮點(diǎn)加法部件指令C ach eIF 1 ID 1 M D 1 M D 2 M D 3 WR 1通用寄存器后行寫數(shù)棧乘除法部件指令C ach eIF 2 ID 2 AL WR 2通用寄存器后行寫數(shù)棧定點(diǎn)算術(shù)邏輯部件IF 3 ID 3 LS先行指令窗口 取數(shù)存數(shù)部件FA :浮點(diǎn)加減法運(yùn)算, MD :乘除法運(yùn)算, AL :定點(diǎn)算術(shù)邏輯運(yùn)算, LS 取數(shù)存數(shù)Computer Architecture, Autumn 2023 多流水線調(diào)度 多條流水線的調(diào)度問題是一個(gè) NP完全問題, 順序發(fā)射( inorder issue)與亂序發(fā)射( outorder issue): 指令發(fā)射順序是按照程序中指令排列順序進(jìn)行的稱為順序發(fā)射 順序完成 (inorder pletion)與亂序完成 (outorder pletion) 指令完成順序是按照程序中指令排列順序進(jìn)行的稱為順序完成 多流水線的調(diào)度主要有三種方法: 順序發(fā)射順序完成,順序發(fā)射亂序完成,亂序發(fā)射亂序完成。 I1: LOAD R1, A ; R1← ( A) I2: FADD R2, R1 ; R2← ( R2)+( R1) I3: FMUL R3, R4 ; R3← ( R3) ( R4) I4: FADD R4, R5 ; R4← ( R4)+( R5) I5: DEC R6 ; R6← ( R6)- 1 I6: FMUL R6, R7 ; R6← ( R6)+( R7) Computer Architecture, Autumn 2023 順序發(fā)射順序完成 6條指令按順序分三個(gè)時(shí)鐘周期發(fā)射, 共用 10個(gè)時(shí)鐘周期完成 。 除了流水線的裝入和排空部分之外, 還有 8個(gè)空閑的時(shí)鐘周期 。 ? 順序發(fā)射順序完成的指令流水線時(shí)空圖1 2 3 4 5 6 7 8 9 10I 1 IF 1 ID 1 LS WR 1 時(shí)鐘周期I 2 IF 2 ID 2 F A 1 F A 2 F A 2 WR 2I 3 IF 1 ID 1 M D 1 M D 2 M D 3 WR 1I 4 IF 2 ID 2 F A 1 F A 2 F A 3 WR 2I 5 IF 1 ID 1 AL WR 1I 6 IF 2 ID 2 M D 1 M D 2 M D 3 WR 2指令I(lǐng)F :取指令, ID :指令譯碼, LS 取數(shù)存數(shù), FA :浮點(diǎn)加減法運(yùn)算,MD :乘除法運(yùn)算, AL :定點(diǎn)算術(shù)邏輯運(yùn)算 W R :寫回運(yùn)算結(jié)果Computer Architecture, Autumn 2023 順序發(fā)射亂序完成 與順序發(fā)射順序完成調(diào)度方法相比, 少了 5個(gè)空閑時(shí)鐘周期 。 6條指令 總的執(zhí)行時(shí)間為 9個(gè)時(shí)鐘周期 ,與順序發(fā)射順序完成調(diào)度方法相比 節(jié)省了一個(gè)時(shí)鐘周期 。 ? 順序發(fā)射亂序完成的流水線時(shí)空圖1 2 3 4 5 6 7 8 9 I1I F 1 I D 1 LS W R1 時(shí)鐘周期 I2I F 2 I D 2 F A 1 F A 2 F A 2 W R2I3I F 1 I D 1 MD 1 MD 2 MD 3 W R1I4I F 2 I D 2 F A 1 F A 2 F A 3 W R2I5I F 1 I D 1 AL W R1I6I F 2 I D 2 MD 1 MD 2 MD 3 W R2 指令? 順序發(fā)射亂序完成的指令完成次序時(shí)鐘周期 4 5 6 7 8 9流水線 1 I 1 I 5 I 3流水線 2 I 2 I 4 I 6Computer Architecture, Autumn 2023 亂序發(fā)射亂序完成 ,必須使用先行指令窗口。 除了裝入和排空之外, 沒有空閑周期,功能部件得到充分利用 6條指令 總的執(zhí)行時(shí)間縮短為 8個(gè)周期 ,比順序發(fā)射順序完成方法節(jié)省 2個(gè)周期,比順序發(fā)射亂序完成方法相比節(jié)省一個(gè)周期。 ? 亂序發(fā)射亂序完成調(diào)度方法的流水線時(shí)空圖1 2 3 4 5 6 7 8流水線 1 I 1 IF 1 ID1 LS WR 1 時(shí)鐘周期流水線 2 I 3 IF 2 ID2 M D 1 M D 2 M D 3 WR 2先行窗口 I 4 IF 3 ID3 F A 1 F A 2 F A 3 WR 1I 2 IF 1 ID1 F A 1 F A 2 F A 3 WR 1I 5 IF 2 ID2 AL WR 2 I 6 IF 1 ID1 M D 1 M D 2 M D 3 WR 1 指令? 指令在流水線中的發(fā)射次序 指令在流水線中的完成次序時(shí)鐘周期1 2 3 時(shí)鐘周期 4 5 6 7 8流水線 1 I 1 I 2 I 6 流水線 1 I 1 I 4 I 2 I 6流水線 2 I 3 I 5 流水線 2 I 5 I 3先行窗口 I 4Computer Architecture, Autumn 2023 資源沖突 如果操作部件采用流水線結(jié)構(gòu),發(fā)生資源沖突的可能性很?。? 如果不采用流水線結(jié)構(gòu),發(fā)生資源沖突的可能性就大。 下面是一個(gè)由 4條指令程序的程序: I1: FADD R0, R1 ; R0← ( R0)+( R1) I2: FMUL R2, R3 ; R2← ( R2) ( R3) I3: FADD R4, R5 ; R4← ( R4)+( R5) I4: FMUL R6, R7 ; R6← ( R6)+( R7) 雙流水線超標(biāo)量處理機(jī),操作部件不采用流水線的時(shí)空圖1 2 3 4 5 6 7 8 9 10 11流水線 1 I 1 IF 1 ID1 F AD D WR 1 時(shí)鐘周期流水線 2 I 2 IF 2 ID2 F M UL WR 2流水線 1 I3IF 1 ID1 F AD D WR 1流水線 2 I4IF 2 ID2 F M UL WR 2 指令I(lǐng)F :取指令, ID :指令譯碼, FADD :浮點(diǎn)加法, FMUL :浮點(diǎn)乘法, WR :寫回結(jié)果Computer Architecture, Autumn 2023 操作部件不采用流水線: 做完 4條指令總共用了 11個(gè)周期,有 5個(gè)空閑周期。 操作部件采用流水線: 做完 4條指令共用 8個(gè)周期,少用 3個(gè)周期。 雙流水線超標(biāo)量處理機(jī),操作部件采用流水線的時(shí)空圖 1 2 3 4 5 6 7 8 流水線 1 I 1 IF1 ID1 FADD1 FADD2 FADD3 WR1 時(shí)鐘周期 流水線 2 I2 IF2 ID2 FMUL1 FMUL2 FMUL3 FMUL4 WR2 流水線 1 I 3 IF1 ID1 FADD1 FADD2 FADD3 WR1 流水線 2 I 4 IF2 ID2 FMUL1 FMUL2 FMUL3 FMUL4 WR2 指令 IF :取指令, ID :指令譯碼, FADD :浮點(diǎn)加法, FMUL :浮點(diǎn)乘法, WR :寫回結(jié)果 Computer Architecture, Autumn 2023 ? 在超標(biāo)量處理機(jī)中,操作部件采用流水線結(jié)構(gòu)的原因分析 假每個(gè)周期發(fā)射 m條指令,操作部件的延遲時(shí)間為 k個(gè)周期, 如果操作部件不采用流水線結(jié)構(gòu),則使用同一個(gè)操作部件的兩條指令的序號應(yīng)該 至少相差 m k。 如果操作部件采用 k個(gè)功能段的流水線結(jié)構(gòu),則使用同一個(gè)操作部件的兩條指令的序號 只需要相差 m或 m以上 。 ? 指令流水線的段數(shù) k一般在 4至 10之間,每個(gè)時(shí)鐘周期發(fā)射的指令條數(shù) m在2至 4之間。取中間值, k= 7, m= 3; ? 為了不發(fā)生資源沖突,如果操作部件不采用流水線結(jié)構(gòu), 兩條使用同一個(gè)功能部件的指令序號必須相差 21或 21以上; ? 如果操作部件采用流水線結(jié)構(gòu), 兩條使用同一個(gè)功能部件的指令序號只需要相差 3或 3以上。 ? 因此,在超標(biāo)量處理機(jī)中,操作部件一般要采用流水線結(jié)構(gòu) 如果由于某種原因,操作部件不能采用流水線結(jié)構(gòu),則必須設(shè)置多個(gè)相同種類的操作部件 Computer Architecture, Autumn 2023 ? 普通標(biāo)量處理機(jī),希望相同操作連續(xù)出現(xiàn)。 只有連續(xù)出現(xiàn)相同操作的指令序列時(shí),流水線才能不 “ 斷流 ” ,功能部件的效率才能得到充分發(fā)揮。 ? 超標(biāo)量處理機(jī)則正好相反,希望相同操作不要連續(xù)出現(xiàn)。 相同操作的指令序列連續(xù)出現(xiàn)時(shí),會發(fā)生資源沖突; 要求相同操作的指令能夠相對均勻地分布在程序中。 ? 超標(biāo)量處理機(jī)的這種要求正好符合一般標(biāo)量程序的特點(diǎn)。 Computer Architecture, Autumn 2023 超標(biāo)量處理機(jī)性能 ? 單流水線普通標(biāo)量處理機(jī)的指令級并行度記作 (1,1), ? 超標(biāo)量處理機(jī)的指令級并行度記作 (m,1), ? 超流水線處理機(jī)的指令級并行度記作 (1,n), ? 而超標(biāo)量超流水線處理機(jī)的指令級并行度記作 (m,n)。 ? 在理想情況下, N條指令在單流水線標(biāo)量處理機(jī)上的執(zhí)行時(shí)間為: T(1,1)=( k+ N- 1) ?t ? 在每個(gè)周期發(fā)射 m條指令的超標(biāo)量處理機(jī)上執(zhí)行的時(shí)間為: ? T(m,1)=( k+ ) ?t ? 超標(biāo)量處理機(jī)相對于單流水線標(biāo)量處理機(jī)的加速比為: ? S(m,1)= ? 超標(biāo)量處理機(jī)的加速比的最大值為: S(m,1)MAX= m N mm?TT mm k NN m k( , )( , )( )( )1 1111?? ?? ?Computer Architecture, Autumn 2023 超流水線處理機(jī) ? 兩種定義: 在一個(gè)周期內(nèi)能夠分時(shí)發(fā)射多條指令的處理機(jī) 指令流水線的功能段數(shù)為 8段或超過 8段的流水線處理機(jī) ? 提高處理機(jī)性能的不同方法: 超標(biāo)量處理機(jī):通過增加硬件資源來提高處理機(jī)性能 超流水線處理機(jī):通過各部分硬件的重疊工作來提高 處理機(jī)性能。 ? 兩種不同并行性: 超標(biāo)量處理機(jī)采用的是空間并行性。 超流水線處理機(jī)采用的是時(shí)間并行性。 Computer Architecture, Autumn 2023 指令執(zhí)行時(shí)序 ? 每隔 1/n個(gè)時(shí)鐘周期發(fā)射一條指令, 即處理機(jī)的流水線周期為 1/n個(gè)時(shí)鐘周期 。 ? 在超標(biāo)量處理機(jī)中,流水線的有些功能段還可以進(jìn)一步細(xì)分, 例如: ID功能段,可以再細(xì)分為:譯碼、讀第一操作數(shù)和讀