




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 1/137/137第5章 指令級并行及其開發(fā)硬件方法2 2/137/1375.1指令級并行的概念5.2相關(guān)與指令級并行5.3指令的動態(tài)調(diào)度5.4動態(tài)分支預(yù)測技術(shù)5.5多指令流出技術(shù)3 3/137/137指令級并行:指指令之間存在的一種并行性,利用它,計算機可以并行執(zhí)行兩條或兩條以上的指令。 (ILPILP:Instruction-Level ParallelismInstruction-Level Parallelism)開發(fā)ILP的途徑有兩種q 資源重復(fù),重復(fù)設(shè)置多個處理部件,讓它們同時執(zhí)行資源重復(fù),重復(fù)設(shè)置多個處理部件,讓它們同時執(zhí)行相鄰或相近的多條指令;相鄰或相近的多條指令;q 采用
2、流水線技術(shù),使指令重疊并行執(zhí)行。采用流水線技術(shù),使指令重疊并行執(zhí)行。 本章研究:如何利用各種技術(shù)來開發(fā)更多的指令級并行 (硬件的方法) 4 4/137/1371. 開發(fā)ILP的方法可以分為兩大類主要基于硬件的動態(tài)開發(fā)方法基于軟件的靜態(tài)開發(fā)方法2. 流水線處理機的實際CPI理想流水線的CPI加上各類停頓的時鐘周期數(shù): CPICPI流水線流水線 = CPI= CPI理想理想 + + 停頓停頓結(jié)構(gòu)沖突結(jié)構(gòu)沖突 + + 停頓停頓數(shù)據(jù)沖突數(shù)據(jù)沖突 + + 停頓停頓控制沖突控制沖突理想CPI是衡量流水線最高性能的一個指標(biāo)。IPC:Instructions Per Cycle (每個時鐘周期完成的指令條數(shù))
3、(每個時鐘周期完成的指令條數(shù))5.1 指令級并行的概念5 5/137/1375.1 指令級并行的概念1. 基本程序塊基本程序塊:一串連續(xù)的代碼除了入口和出口以外,沒有其他的分支指令和轉(zhuǎn)入點 。程序平均每47條指令就會有一個分支。2. 循環(huán)級并行:使一個循環(huán)中的不同循環(huán)體并行執(zhí)行。開發(fā)循環(huán)的不同疊代之間存在的并行性 q最常見、最基本最常見、最基本是指令級并行研究的重點之一6 6/137/1375.1 指令級并行的概念例如,考慮下述語句: for for (i=1i=1; i=500i2n2)分支預(yù)測的性能差不多。分支預(yù)測的性能差不多。兩位分支預(yù)測的狀態(tài)轉(zhuǎn)換如下所示: 預(yù)測分支:預(yù)測分支: 成功成
4、功 預(yù)測分支:預(yù)測分支: 不成功不成功 00 01 分支成功分支成功 分支不成功分支不成功 分支成功分支成功 分支不成功分支不成功 10 11 分支成功分支成功 分支不成功分支不成功 分支成功分支成功 分支不成功分支不成功 8383/137/1375.4 動態(tài)分支預(yù)測技術(shù)兩位分支預(yù)測中的操作有兩個步驟:q分支預(yù)測;分支預(yù)測;n當(dāng)分支指令到達(dá)譯碼段當(dāng)分支指令到達(dá)譯碼段(IDID)時,根據(jù)從時,根據(jù)從BHTBHT讀出讀出的信息進行分支預(yù)測的信息進行分支預(yù)測 。n若預(yù)測正確,就繼續(xù)處理后續(xù)的指令,流水線沒有若預(yù)測正確,就繼續(xù)處理后續(xù)的指令,流水線沒有斷流。否則,就要作廢已經(jīng)預(yù)取和分析的指令,恢?jǐn)嗔鳌?/p>
5、否則,就要作廢已經(jīng)預(yù)取和分析的指令,恢復(fù)現(xiàn)場,并從另一條分支路徑重新取指令。復(fù)現(xiàn)場,并從另一條分支路徑重新取指令。 q狀態(tài)修改。狀態(tài)修改。 1. BHT方法只在以下情況下才有用:判定分支是否成功所需的時間大于確定分支目標(biāo)地址所需的時間。 8484/137/1375.4 動態(tài)分支預(yù)測技術(shù)前述前述5 5段經(jīng)典流水線段經(jīng)典流水線:由于判定分支是否成功和計算:由于判定分支是否成功和計算分支目標(biāo)地址都是在分支目標(biāo)地址都是在IDID段完成,所以段完成,所以BHTBHT方法不會給方法不會給該流水線帶來好處。該流水線帶來好處。1. 研究結(jié)果表明:對于SPEC89測試程序來說,具有大小為4KB的BHT的預(yù)測準(zhǔn)確
6、率為82%99%。 一般來說,采用一般來說,采用4KB4KB的的BHTBHT就可以了。就可以了。 2. BHT可以跟分支指令一起存放在指令Cache中,也可以用一塊專門的硬件來實現(xiàn)。 8585/137/1375.4 動態(tài)分支預(yù)測技術(shù)目標(biāo):將分支的開銷降為 0方法:分支目標(biāo)緩沖將分支成功的分支指令的地址和它的分支目標(biāo)地址都放到一個緩沖區(qū)中保存起來,緩沖區(qū)以分支指令的地址作為標(biāo)識。這個緩沖區(qū)就是分支目標(biāo)緩沖器(Branch-Target Buffer,簡記為BTB,或者分支目標(biāo)Cache (ranch-Target Cache)。 5.4.2 采用分支目標(biāo)緩沖器BTB8686/137/1375.4
7、 動態(tài)分支預(yù)測技術(shù)1. BTB的結(jié)構(gòu) 無無 有匹配的?有匹配的? 當(dāng)前取指令的地址當(dāng)前取指令的地址 相聯(lián)查找相聯(lián)查找 認(rèn)為本指令不是分支指令,認(rèn)為本指令不是分支指令, 按普通指令正常執(zhí)行。按普通指令正常執(zhí)行。 有有 認(rèn)為該指令是成功的分支指令,用預(yù)測的認(rèn)為該指令是成功的分支指令,用預(yù)測的 分支目標(biāo)地址作為下一條指令的分支目標(biāo)地址作為下一條指令的 PCPC 值。值。 成功的分支指令地址成功的分支指令地址 分支目標(biāo)地址分支目標(biāo)地址 A0 A1 Ak-1 P0 P1 Pk-1 8787/137/1375.4 動態(tài)分支預(yù)測技術(shù)看成是用專門的硬件實現(xiàn)的一張表格。 表格中的每一項至少有兩個字段: q執(zhí)行過
8、的成功分支指令的地址;執(zhí)行過的成功分支指令的地址;(作為該表的匹配標(biāo)識(作為該表的匹配標(biāo)識 )q預(yù)測的分支目標(biāo)地址。預(yù)測的分支目標(biāo)地址。1. 采用BTB后,在流水線各個階段所進行的相關(guān)操作: 當(dāng)當(dāng)前前 P PC C 值值 B BT TB B 中中存存在在匹匹配配的的項項? 成成功功分分支支指指令令? 當(dāng)當(dāng)前前分分支支成成功功? 以以 B BT TB B 的的第第二二字字段段作作為為 否否 否否 正正常常執(zhí)執(zhí)行行指指令令 是是 是是 否否 分分支支預(yù)預(yù)測測正正確確, 繼繼續(xù)續(xù)執(zhí)執(zhí)行行后后繼繼指指令令, 指令無 不不會會出出現(xiàn)現(xiàn)停停頓頓。 分分支支預(yù)預(yù)測測錯錯誤誤,清清除除 已已取取的的指指令令,
9、并并從從另另 一一個個分分支支(即即失失敗敗處處) 取取指指令令。從從 B BT TB B 中中刪刪 除除相相應(yīng)應(yīng)的的項項。 將將其其 P PC C 值值和和分分支支 目目標(biāo)標(biāo)地地址址寫寫入入 B BT TB B 中中,作作為為一一個個新新項項。 I IF F 段段 I ID D 段段 E EX X 段段 送送存存儲儲器器和和 B BT TB B 分分支支目目標(biāo)標(biāo)地地址址送送給給 P PC C 是是 8989/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. 采用BTB后,各種可能情況下的延遲 :指令在指令在BTBBTB中?中? 預(yù)測預(yù)測 實際情況實際情況 延遲周期延遲周期 是是 成功成功 成功成功
10、 0 0 是是 成功成功 不成功不成功 2 2 不是不是 成功成功 2 2 不是不是 不成功不成功 0 0 9090/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. BTB的另一種形式在分支目標(biāo)緩沖器中增設(shè)一個至少是兩位的“分支歷史表”字段 當(dāng)前取指令的地址當(dāng)前取指令的地址 相聯(lián)查找相聯(lián)查找 分支指令地址分支指令地址 A0 A1 Ak-1 分支目標(biāo)地址分支目標(biāo)地址 P0 P1 Pk-1 分支歷史表分支歷史表 BHTBHT T0 T1 Tk-1 9191/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. 更進一步,在表中對于每條分支指令都存放若干條分支目標(biāo)處的指令,就形成了分支目標(biāo)指令緩沖器。 當(dāng)前取指令
11、的地址當(dāng)前取指令的地址 相聯(lián)查找相聯(lián)查找 分支指令地址分支指令地址 A0 A1 Ak-1 分支目標(biāo)處的若干條指令分支目標(biāo)處的若干條指令 I0,0,I0,1,I0,n-1 分支歷史表分支歷史表 BHTBHT T0 T1 Tk-1 I1,0,I1,1,I1,n-1 Ik-1,0,Ik-1,1,Ik-1,n-1 9292/137/1375.4 動態(tài)分支預(yù)測技術(shù)前瞻執(zhí)行(speculation)的基本思想: 對分支指令的結(jié)果進行猜測,并假設(shè)這個猜測總是對的,然后按這個猜測結(jié)果繼續(xù)取、流出和執(zhí)行后續(xù)的指令。只是執(zhí)行指令的結(jié)果不是寫回到寄存器或存儲器,而是寫入一個稱為再定序緩沖器ROB(ReOrder B
12、uffer)中 。等到相應(yīng)的指令得到“確認(rèn)”(commit)(即確實是應(yīng)該執(zhí)行的)之后,才將結(jié)果寫入寄存器或存儲器。 5.4.3 基于硬件的前瞻執(zhí)行9393/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. 基于硬件的前瞻執(zhí)行結(jié)合了3種思想:動態(tài)分支預(yù)測。用來選擇后續(xù)執(zhí)行的指令。在控制相關(guān)的結(jié)果尚未出來之前,前瞻地執(zhí)行后續(xù)指令。用動態(tài)調(diào)度對基本塊的各種組合進行跨基本塊的調(diào)度。2. 對Tomasulo算法加以擴充,就可以支持前瞻執(zhí)行。 把Tomasulo算法的寫結(jié)果和指令完成加以區(qū)分,分成兩個不同的段: 寫結(jié)果寫結(jié)果,指令確認(rèn)指令確認(rèn) 9494/137/1375.4 動態(tài)分支預(yù)測技術(shù)寫結(jié)果段q把前瞻執(zhí)
13、行的結(jié)果寫到把前瞻執(zhí)行的結(jié)果寫到ROBROB中;中;q通過通過CDBCDB在指令之間傳送結(jié)果,供需要用到這些結(jié)果在指令之間傳送結(jié)果,供需要用到這些結(jié)果的指令使用。的指令使用。指令確認(rèn)段 在分支指令的結(jié)果出來后,對相應(yīng)指令的前瞻執(zhí)行在分支指令的結(jié)果出來后,對相應(yīng)指令的前瞻執(zhí)行給予確認(rèn)。給予確認(rèn)。q如果前面所做的猜測是對的,把在如果前面所做的猜測是對的,把在ROBROB中的結(jié)果寫到中的結(jié)果寫到寄存器或存儲器。寄存器或存儲器。q如果發(fā)現(xiàn)前面對分支結(jié)果的猜測是錯誤的,那就不予如果發(fā)現(xiàn)前面對分支結(jié)果的猜測是錯誤的,那就不予以確認(rèn),并從那條分支指令的另一條路徑開始重新執(zhí)以確認(rèn),并從那條分支指令的另一條路徑
14、開始重新執(zhí)行。行。 9595/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. 實現(xiàn)前瞻的關(guān)鍵思想: 允許指令亂序執(zhí)行,但必須順序確認(rèn)。在指令被確認(rèn)之前,不允許它進行不可恢復(fù)的操作。 2. 支持前瞻執(zhí)行的浮點部件的結(jié)構(gòu) 從指令部件來從指令部件來 浮點寄存器浮點寄存器 FP 地址部件地址部件 load/store 操作操作 浮點操作浮點操作 操作數(shù)總線操作數(shù)總線 操作總線操作總線 store數(shù)據(jù)數(shù)據(jù) 1 1 存儲部件存儲部件 浮點加法器浮點加法器 浮點乘法器浮點乘法器 指令隊列指令隊列 地址地址 2 3 2 3 4 5 6 公共數(shù)據(jù)總線(公共數(shù)據(jù)總線(CDB) 1 2 保留站保留站 再定序再定序 緩沖
15、器緩沖器 ROB 數(shù)據(jù)數(shù)據(jù) 寄存器號寄存器號 緩沖器緩沖器 load store地址地址 保留站保留站 load 數(shù)據(jù)數(shù)據(jù) 9797/137/1375.4 動態(tài)分支預(yù)測技術(shù)ROB中的每一項由以下4個字段組成:q指令類型指令類型 指出該指令是分支指令、指出該指令是分支指令、storestore指令或寄存器操作指令。指令或寄存器操作指令。q目標(biāo)地址目標(biāo)地址 給出指令執(zhí)行結(jié)果應(yīng)寫入的目標(biāo)寄存器號(如果是給出指令執(zhí)行結(jié)果應(yīng)寫入的目標(biāo)寄存器號(如果是 loadload和和ALUALU指令)或存儲器單元的地址(如果是指令)或存儲器單元的地址(如果是storestore指指 令)。令)。q數(shù)據(jù)值字段數(shù)據(jù)值字
16、段 用來保存指令前瞻執(zhí)行的結(jié)果,直到指令得到確認(rèn)。用來保存指令前瞻執(zhí)行的結(jié)果,直到指令得到確認(rèn)。q就緒字段就緒字段 指出指令是否已經(jīng)完成執(zhí)行并且數(shù)據(jù)已就緒。指出指令是否已經(jīng)完成執(zhí)行并且數(shù)據(jù)已就緒。9898/137/1375.4 動態(tài)分支預(yù)測技術(shù)Tomasulo算法中保留站的換名功能是由ROB來完成的。 1. 采用前瞻執(zhí)行機制后,指令的執(zhí)行步驟:(在(在TomasuloTomasulo算法的基礎(chǔ)上改造的算法的基礎(chǔ)上改造的 )流出 q從浮點指令隊列的頭部取一條指令。從浮點指令隊列的頭部取一條指令。q如果有空閑的保留站(設(shè)為如果有空閑的保留站(設(shè)為r r)且有空閑的)且有空閑的ROBROB項(設(shè)項(
17、設(shè)為為b b),就流出該指令,并把相應(yīng)的信息放入保留站),就流出該指令,并把相應(yīng)的信息放入保留站r r和和ROBROB項項b b。q如果保留站或如果保留站或ROBROB全滿,便停止流出指令,直到它們都全滿,便停止流出指令,直到它們都有空閑的項。有空閑的項。 9999/137/1375.4 動態(tài)分支預(yù)測技術(shù)執(zhí)行 q如果有操作數(shù)尚未就緒,就等待,并不斷地監(jiān)測如果有操作數(shù)尚未就緒,就等待,并不斷地監(jiān)測CDBCDB。 ( (檢測檢測RAWRAW沖突沖突) )q當(dāng)兩個操作數(shù)都已在保留站中就緒后,就可以執(zhí)行該指當(dāng)兩個操作數(shù)都已在保留站中就緒后,就可以執(zhí)行該指令的操作。令的操作。寫結(jié)果 q當(dāng)結(jié)果產(chǎn)生后,將該
18、結(jié)果連同本指令在流出段所分配到當(dāng)結(jié)果產(chǎn)生后,將該結(jié)果連同本指令在流出段所分配到的的ROBROB項的編號放到項的編號放到CDBCDB上,經(jīng)上,經(jīng)CDBCDB寫到寫到ROBROB以及所有等待以及所有等待該結(jié)果的保留站。該結(jié)果的保留站。q釋放產(chǎn)生該結(jié)果的保留站。釋放產(chǎn)生該結(jié)果的保留站。q storestore指令指令在本階段完成,其操作為在本階段完成,其操作為: : 100100/137/1375.4 動態(tài)分支預(yù)測技術(shù)n如果要寫入存儲器的數(shù)據(jù)已經(jīng)就緒,就把該數(shù)如果要寫入存儲器的數(shù)據(jù)已經(jīng)就緒,就把該數(shù)據(jù)寫入分配給該據(jù)寫入分配給該storestore指令的指令的ROBROB項。項。n否則,就監(jiān)測否則,就
19、監(jiān)測CDBCDB,直到那個數(shù)據(jù)在,直到那個數(shù)據(jù)在CDBCDB上播送上播送出來,才將之寫入分配給該出來,才將之寫入分配給該storestore指令的指令的ROBROB項項。確認(rèn) 對分支指令、storestore指令以及其它指令的處理不同:q其它指令其它指令(除分支指令和除分支指令和storestore指令)指令) 當(dāng)該指令到達(dá)當(dāng)該指令到達(dá)ROBROB隊列的頭部而且其結(jié)果已經(jīng)隊列的頭部而且其結(jié)果已經(jīng)就緒時,就把該結(jié)果寫入該指令的目的寄存器,并從就緒時,就把該結(jié)果寫入該指令的目的寄存器,并從ROBROB中刪除該指令。中刪除該指令。 101101/137/1375.4 動態(tài)分支預(yù)測技術(shù)qstorest
20、ore指令指令 處理與上面的類似,只是它把結(jié)果寫入存儲器。處理與上面的類似,只是它把結(jié)果寫入存儲器。q分支指令分支指令 n當(dāng)預(yù)測錯誤的分支指令到達(dá)當(dāng)預(yù)測錯誤的分支指令到達(dá)ROBROB隊列的頭部時,隊列的頭部時,清空清空ROBROB,并從分支指令的另一個分支重新開始,并從分支指令的另一個分支重新開始執(zhí)行。執(zhí)行。 (錯誤的前瞻執(zhí)行)(錯誤的前瞻執(zhí)行)n當(dāng)預(yù)測正確的分支指令到達(dá)當(dāng)預(yù)測正確的分支指令到達(dá)ROBROB隊列的頭部時,隊列的頭部時,該指令執(zhí)行完畢。該指令執(zhí)行完畢。 102102/137/1375.4 動態(tài)分支預(yù)測技術(shù) 例例5.45.4 假設(shè)浮點功能部件的延遲時間為:加法假設(shè)浮點功能部件的延遲
21、時間為:加法2 2個時鐘周期,個時鐘周期,乘法乘法1010個時鐘周期,除法個時鐘周期,除法4040個時鐘周期。對于下面的代碼段,個時鐘周期。對于下面的代碼段,給出當(dāng)指令給出當(dāng)指令MUL.DMUL.D即將確認(rèn)時的狀態(tài)表內(nèi)容。即將確認(rèn)時的狀態(tài)表內(nèi)容。 L.D L.D F6,34 F6,34(R2R2) L.D L.D F2,45 F2,45(R3R3) MUL.D MUL.DF0,F2,F4F0,F2,F4 SUB.D SUB.DF8,F6,F2F8,F6,F2 DIV.D DIV.DF10,F0,F6F10,F0,F6 ADD.D ADD.DF6,F8,F2F6,F8,F2名稱名稱 保留站保留站
22、 Busy Op Vj Vk Qj Qk Dest A Load1noLoad2noAdd1 no Add2 no Add3 no Mult1 no MUL.DMem45+ RegsR2 RegsF4 #3 Mult2 yes DIV.D Mem34+RegsR2 #3 #5 前瞻執(zhí)行中MUL.D確認(rèn)前,保留站和ROB的狀態(tài) 項號項號 ROB Busy 指令指令 狀態(tài)狀態(tài) 目的目的 Value 1 no L.D F6, 34(R2) 確認(rèn)確認(rèn) F6 Mem34+RegsR2 2no L.D F2, 45(R3) 確認(rèn)確認(rèn) F2 Mem45+RegsR3 3yes MUL.D F0, F2, F
23、4 寫結(jié)果寫結(jié)果 F0 #2RegsF4 4yes SUB.D F8, F6, F2 寫結(jié)果寫結(jié)果 F8 #1#2 5yes DIV.D F10, F0, F6 執(zhí)行執(zhí)行 F10 6yes ADD.D F6,F8,F2 寫結(jié)果寫結(jié)果 F6 #4#2 字段字段 浮點寄存器狀態(tài)浮點寄存器狀態(tài) F0 F2 F4 F6 F8 F10 F30 ROB項編號 3645Busy yes no no yes yes yes no105105/137/1375.4 動態(tài)分支預(yù)測技術(shù)1. 前瞻執(zhí)行通過ROB實現(xiàn)了指令的順序完成。能夠?qū)崿F(xiàn)精確異常。很容易地推廣到整數(shù)寄存器和整數(shù)功能單元上。 主要缺點:所需的硬件太復(fù)
24、雜。 106106/137/137在每個時鐘周期內(nèi)流出多條指令, CPI1。單流出和多流出處理機執(zhí)行指令的時空圖對比 5.5 多指令流出技術(shù)107107/137/137單處理器并行的早期發(fā)展:單處理器并行的早期發(fā)展:IBM Stretch我們現(xiàn)在稱之為超標(biāo)量指令發(fā)射的技術(shù),最早的研究和實 現(xiàn)開始于IBM的Stretch(IBM 7030)和由它直接衍生出來的IBM機器。因為它的實現(xiàn)采用了積極的實現(xiàn)技術(shù)(如預(yù)譯碼、亂序執(zhí)行、推測執(zhí)行)Stretch項目開始于1955年,設(shè)計要求“速度至少要比當(dāng)前的任何機器快100倍”。項目負(fù)責(zé)人Stephen Dunwell,主要設(shè)計人員有Gerrit Blau
25、uw,F(xiàn)red Brooks,John Cocke,Harwood Kolsky108108/137/137Stretch的尷尬的尷尬估計結(jié)果表明,Stretch的性能是704的60倍到100倍1961年,當(dāng)Stretch開始使用后,測試程序顯示它的性能只有704的4倍,主要由于store指令的延遲和對成功的算術(shù)分支指令預(yù)測失誤所需要的恢復(fù)時間造成的Stretch是當(dāng)時世界上最快的計算機,一直保持的1964年109109/137/137第一個超標(biāo)量設(shè)計第一個超標(biāo)量設(shè)計1961年,IBM啟動了兩個高性能項目,試圖超過Stretch的性能項目X,目標(biāo)Stretch的10倍到30倍,1967年正式推
26、出IBM S/360 Model 91項目Y,目標(biāo)Stretch的100倍,稱為ACS-1(Advanced Computer System 1)1971年,Schorr在一篇關(guān)于ACS-1的論文中寫道:“多指令譯碼是該項目嘗試的一種新的功能”110110/137/137第一個多指令譯碼的實現(xiàn)第一個多指令譯碼的實現(xiàn) 1982年開始,開發(fā)了第一個雙發(fā)射的Astronautics ZS-1111111/137/137IBM的的Cheetah20世紀(jì)80年代初,IBM研究中心的Agerwala啟動了一個雙發(fā)射的項目,稱為Cheetah1983年到1984年,Agerwala在幾所大學(xué)邀請談話中首次公
27、開使用了他為Cheetah創(chuàng)造的名詞: 超標(biāo)量(superscalar)1989年,Intel發(fā)布了第一塊 超標(biāo)量處理器i960CA112112/137/137113113/137/137114114/137/137115115/137/137116116/137/137117117/137/137 IF 1 2 3 4 5 6 7 時鐘周期時鐘周期 指令指令 I1 I2 I3 ID EX MEM WBIF ID EX MEM WBIF ID EX MEM WB1 2 3 4 5 6 7 時鐘周期時鐘周期 指令指令 I1 I2 I3 IF ID EX MEM WBIF IF ID ID EX
28、EX MEM MEM WBWBIF ID EX MEM WBIF ID EX MEM WBIF ID EX MEM WBIF ID EX MEM WBIF ID EX MEM WBIF ID EX MEM WB單流出時空圖單流出時空圖 多流出時空圖多流出時空圖 單流出和多流出處理機執(zhí)行指令的時空圖單流出和多流出處理機執(zhí)行指令的時空圖 5.5 多指令流出技術(shù)118118/137/1375.5 多指令流出技術(shù)1. 多流出處理機有兩種基本風(fēng)格:超標(biāo)量(Superscalar)q在每個時鐘周期流出的指令條數(shù)在每個時鐘周期流出的指令條數(shù)不固定不固定,依代碼的具,依代碼的具體情況而定。(有個上限)體情況而
29、定。(有個上限)q設(shè)這個上限為設(shè)這個上限為n n,就稱該處理機為,就稱該處理機為n-n-流出。流出。q可以通過編譯器進行靜態(tài)調(diào)度,也可以基于可以通過編譯器進行靜態(tài)調(diào)度,也可以基于TomasuloTomasulo算法進行動態(tài)調(diào)度。算法進行動態(tài)調(diào)度。 超長指令字VLIW(Very Long Instruction Word)q在每個時鐘周期流出的指令條數(shù)是在每個時鐘周期流出的指令條數(shù)是固定的固定的,這些指令,這些指令構(gòu)成一條長指令或者一個指令包。構(gòu)成一條長指令或者一個指令包。q指令包中,指令之間的并行性是通過指令顯式地表示指令包中,指令之間的并行性是通過指令顯式地表示出來的。出來的。q指令調(diào)度是由
30、編譯器靜態(tài)完成的。指令調(diào)度是由編譯器靜態(tài)完成的。 119119/137/1375.5 多指令流出技術(shù)1. 超標(biāo)量處理機與VLIW處理機相比有兩個優(yōu)點:超標(biāo)量結(jié)構(gòu)對程序員是透明的,處理機能自己檢測下一條指令能否流出,不需要由編譯器或?qū)iT的變換程序?qū)Τ绦蛑械闹噶钸M行重新排列;即使是沒有經(jīng)過編譯器針對超標(biāo)量結(jié)構(gòu)進行調(diào)度優(yōu)化的代碼或是舊的編譯器生成的代碼也可以運行,當(dāng)然運行的效果不會很好。q要想達(dá)到很好的效果,方法之一:要想達(dá)到很好的效果,方法之一: 使用動態(tài)超標(biāo)量調(diào)度技術(shù)。使用動態(tài)超標(biāo)量調(diào)度技術(shù)。2. 下表列出了一些基本的多流出技術(shù)、這些技術(shù)的特點以及采用這些技術(shù)的處理機實例。技技 術(shù)術(shù) 流出流出結(jié)
31、構(gòu)結(jié)構(gòu) 沖突沖突檢測檢測 調(diào)調(diào) 度度 主要特點主要特點 處理機實例處理機實例 超標(biāo)量超標(biāo)量(靜態(tài))(靜態(tài)) 動態(tài)動態(tài) 硬件硬件 靜態(tài)靜態(tài)按序執(zhí)行按序執(zhí)行 Sun UltraSPARC/ 超標(biāo)量超標(biāo)量(動態(tài))(動態(tài)) 動態(tài)動態(tài) 硬件硬件 動態(tài)動態(tài)部分亂序執(zhí)行部分亂序執(zhí)行 IBM Power2 超標(biāo)量超標(biāo)量(猜測)(猜測) 動態(tài)動態(tài) 硬件硬件 帶有前帶有前瞻的動瞻的動態(tài)調(diào)度態(tài)調(diào)度 帶有前瞻的帶有前瞻的亂序執(zhí)行亂序執(zhí)行 Pentium /4,MIPS R10K,Alpha 21264, HP PA 8500,IBM RS64 VLIW/LIW 靜態(tài)靜態(tài) 軟件軟件 靜態(tài)靜態(tài)流出包之間流出包之間沒有沖突
32、沒有沖突 Trimedia,i860 EPIC 主要是主要是靜態(tài)靜態(tài) 主要是主要是軟件軟件 主要是主要是靜態(tài)靜態(tài)相關(guān)性被編譯相關(guān)性被編譯器顯式地標(biāo)記器顯式地標(biāo)記出來出來 Itanium 121121/137/1375.5 多指令流出技術(shù)在典型的超標(biāo)量處理器中,每個時鐘周期可流出1到8條指令。指令按序流出,在流出時進行沖突檢測。 由硬件檢測當(dāng)前流出的指令之間是否存在沖突以及當(dāng)由硬件檢測當(dāng)前流出的指令之間是否存在沖突以及當(dāng)前流出的指令與正在執(zhí)行的指令是否有沖突。前流出的指令與正在執(zhí)行的指令是否有沖突。 舉例:一個4-流出的靜態(tài)調(diào)度超標(biāo)量處理機 在取指令階段,流水線將從取指令部件收到14條指令(稱為
33、流出包)。q在一個時鐘周期內(nèi),這些指令有可能是全部都能流出,在一個時鐘周期內(nèi),這些指令有可能是全部都能流出,也可能是只有一部分能流出。也可能是只有一部分能流出。5.5.1 基于靜態(tài)調(diào)度的多流出技術(shù)122122/137/1375.5 多指令流出技術(shù)流出部件檢測結(jié)構(gòu)沖突或者數(shù)據(jù)沖突。一般分兩階段實現(xiàn):一般分兩階段實現(xiàn):q第一段:第一段:進行流出包內(nèi)的沖突檢測,選出初步判定可進行流出包內(nèi)的沖突檢測,選出初步判定可以流出的指令;以流出的指令;q第二段:第二段:檢測所選出的指令與正在執(zhí)行的指令是否有檢測所選出的指令與正在執(zhí)行的指令是否有沖突。沖突。 MIPS處理機是怎樣實現(xiàn)超標(biāo)量的呢?假設(shè):每個時鐘周期
34、流出兩條指令: 1 1條整數(shù)型指令條整數(shù)型指令1 1條浮點操作指令條浮點操作指令q其中:把其中:把loadload指令、指令、storestore指令、分支指令歸類為整數(shù)指令、分支指令歸類為整數(shù)型指令。型指令。 123123/137/1375.5 多指令流出技術(shù)1. 要求:同時取兩條指令(64位),譯碼兩條指令(64位)。2. 對指令的處理包括以下步驟:從Cache中取兩條指令;確定那幾條指令可以流出(02條指令);把它們發(fā)送到相應(yīng)的功能部件。3. 雙流出超標(biāo)量流水線中指令執(zhí)行的時空圖 假設(shè):所有的浮點指令都是加法指令,其執(zhí)行時間為兩個時鐘周期。為簡單起見,圖中總是把整數(shù)指令放在浮點指令的前面
35、。 124124/137/1375.5 多指令流出技術(shù)指令類型指令類型 流水線工作情況流水線工作情況 整數(shù)指令整數(shù)指令 IF ID EX MEM WB 浮點指令浮點指令 IF ID EX EXMEMWB 整數(shù)指令整數(shù)指令 IF ID EX MEM WB 浮點指令浮點指令 IF ID EX EXMEMWB 整數(shù)指令整數(shù)指令 IF ID EX MEM WB 浮點指令浮點指令 IF ID EX EXMEMWB 整數(shù)指令整數(shù)指令 IF ID EX MEM WB 浮點指令浮點指令 IF ID EX EXMEM125125/137/1375.5 多指令流出技術(shù)1. 采用“1條整數(shù)型指令1條浮點指令”并行流
36、出的方式,需要增加的硬件很少。2. 浮點load或浮點store指令將使用整數(shù)部件,會增加對浮點寄存器的訪問沖突。 增設(shè)一個浮點寄存器的讀/寫端口。3. 由于流水線中的指令多了一倍,定向路徑也要增加。 126126/137/1375.5 多指令流出技術(shù)1. 限制超標(biāo)量流水線的性能發(fā)揮的障礙 load指令 qloadload后續(xù)后續(xù)3 3條條指令都不能使用其結(jié)果,否則就會引起停指令都不能使用其結(jié)果,否則就會引起停頓。頓。 分支延遲 q如果分支指令是流出包中的第一條指令,則其延遲是如果分支指令是流出包中的第一條指令,則其延遲是3 3個個時鐘周期;時鐘周期;q否則就是流出包中的第二條指令,其延遲就是
37、否則就是流出包中的第二條指令,其延遲就是兩個兩個時時鐘周期。鐘周期。 127127/137/1375.5 多指令流出技術(shù)擴展Tomasulo算法:支持雙流出超標(biāo)量流水線 q每個時鐘周期流出兩條指令;每個時鐘周期流出兩條指令;q一條是整數(shù)指令,另一條是浮點指令。一條是整數(shù)指令,另一條是浮點指令。1. 采用一種比較簡單的方法:指令按順序流向保留站,否則會破壞程序語義。 將整數(shù)所用的表結(jié)構(gòu)與浮點用的表結(jié)構(gòu)分離開,分別進行處理,這樣就可以同時地流出一條浮點指令和一條整數(shù)指令到各自的保留站。 5.5.2 基于動態(tài)調(diào)度的多流出技術(shù)128128/137/1375.5 多指令流出技術(shù)1. 有兩種不同的方法可以
38、實現(xiàn)多流出 關(guān)鍵在于:關(guān)鍵在于:對保留站的分配和對流水線控制表格的修改。對保留站的分配和對流水線控制表格的修改。在半個時鐘周期里完成流出步驟,這樣一個時鐘周期就能處理兩條指令。設(shè)置一次能同時處理兩條指令的邏輯電路。 現(xiàn)代的流出現(xiàn)代的流出4 4條或條或4 4條以上指令的超標(biāo)量處理機條以上指令的超標(biāo)量處理機經(jīng)常是兩種方法都采用。經(jīng)常是兩種方法都采用。 129129/137/1375.5 多指令流出技術(shù) 例例5.55.5 對于采用了對于采用了TomasuloTomasulo算法和多流出技術(shù)的算法和多流出技術(shù)的MIPSMIPS流水線,流水線,考慮以下簡單循環(huán)的執(zhí)行。該程序把考慮以下簡單循環(huán)的執(zhí)行。該程
39、序把F2F2中的標(biāo)量加到一個向量的中的標(biāo)量加到一個向量的每個元素上。每個元素上。 Loop: L.D Loop: L.D F0, 0F0, 0(R1R1) / / 取一個數(shù)組元素放入取一個數(shù)組元素放入F0F0 ADD.D ADD.D F4, F0, F2 F4, F0, F2 / / 加上在加上在F2F2中的標(biāo)量中的標(biāo)量 S.D S.D F4, 0F4, 0(R1R1) / / 存結(jié)果存結(jié)果 DADDIU R1,R1DADDIU R1,R1,#-8#-8 / / 將指針減少將指針減少8 8(每個數(shù)據(jù)占(每個數(shù)據(jù)占8 8個字節(jié))個字節(jié)) BNE R1,R2,LoopBNE R1,R2,Loop
40、/ / 若若R1R1不等于不等于R2R2,表示尚未結(jié)束,轉(zhuǎn)移到,表示尚未結(jié)束,轉(zhuǎn)移到LoopLoop繼續(xù)繼續(xù)。 130130/137/1375.5 多指令流出技術(shù)現(xiàn)做以下假設(shè):q每個時鐘周期能流出一條整數(shù)指令和一條浮點指令,每個時鐘周期能流出一條整數(shù)指令和一條浮點指令,即使它們相關(guān)也是如此。即使它們相關(guān)也是如此。q有一個整數(shù)部件,用于整數(shù)有一個整數(shù)部件,用于整數(shù)ALUALU運算和地址計算;并運算和地址計算;并且對于每一種浮點操作類型都有一個獨立的流水化了且對于每一種浮點操作類型都有一個獨立的流水化了的浮點功能部件。的浮點功能部件。q指令流出和寫結(jié)果各占用一個時鐘周期。指令流出和寫結(jié)果各占用一個
41、時鐘周期。q具有動態(tài)分支預(yù)測部件和一個獨立的計算分支條件的具有動態(tài)分支預(yù)測部件和一個獨立的計算分支條件的功能部件。功能部件。q跟大多數(shù)動態(tài)調(diào)度處理器一樣,寫回段的存在意味著跟大多數(shù)動態(tài)調(diào)度處理器一樣,寫回段的存在意味著實際的指令延遲會比按序流動的簡單流水線多一個時實際的指令延遲會比按序流動的簡單流水線多一個時鐘周期。鐘周期。 131131/137/1375.5 多指令流出技術(shù)q所以,從產(chǎn)生結(jié)果數(shù)據(jù)的源指令到使用該結(jié)果數(shù)據(jù)的指令所以,從產(chǎn)生結(jié)果數(shù)據(jù)的源指令到使用該結(jié)果數(shù)據(jù)的指令之間的延遲為:整數(shù)運算之間的延遲為:整數(shù)運算一個一個周期,周期,load兩個兩個周期,浮點周期,浮點加法運算加法運算3個
42、個周期。周期。 1. 1. 請列出該程序前面請列出該程序前面3 3遍循環(huán)中各條指令的流出、開始執(zhí)行和將遍循環(huán)中各條指令的流出、開始執(zhí)行和將結(jié)果寫到結(jié)果寫到CDBCDB上的時間。上的時間。 2. 2. 如果分支指令單流出,沒有采用延遲分支,但分支預(yù)測是完如果分支指令單流出,沒有采用延遲分支,但分支預(yù)測是完美的。請列出整數(shù)部件、浮點部件、數(shù)據(jù)美的。請列出整數(shù)部件、浮點部件、數(shù)據(jù)CacheCache以及以及CDBCDB的資源使用的資源使用情況。情況。 解解 執(zhí)行時,該循環(huán)將動態(tài)展開,并且只要可能就流出兩條指令。執(zhí)行時,該循環(huán)將動態(tài)展開,并且只要可能就流出兩條指令。表中列出了各指令執(zhí)行到幾個操作點的時
43、間及資源的使用情況。表中列出了各指令執(zhí)行到幾個操作點的時間及資源的使用情況。 遍數(shù)遍數(shù) 指指 令令 流出流出 執(zhí)行執(zhí)行 訪存訪存 寫寫CDB CDB 說明說明 1 1L.D F0,0L.D F0,0(R1R1) 1 12 23 34 4流出第一條指令流出第一條指令 1 1ADD.D F4,F0,F2 ADD.D F4,F0,F2 1 15 58 8等待等待L.DL.D的結(jié)果的結(jié)果 1 1S.D F4,0S.D F4,0(R1R1) 2 23 39 9等待等待ADD.DADD.D的結(jié)果的結(jié)果 1 1DADDIU R1,R1,#-8 DADDIU R1,R1,#-8 2 24 45 5等待等待AL
44、UALU1 1BNE R1,R2,Loop BNE R1,R2,Loop 3 36 6等待等待DADDIUDADDIU的結(jié)果的結(jié)果 2 2L.D F0,0L.D F0,0(R1R1) 4 47 78 89 9等待等待BNEBNE完成完成 2 2ADD.D F4,F0,F2 ADD.D F4,F0,F2 4 410101313等待等待L.DL.D的結(jié)果的結(jié)果 2 2S.D F4,0S.D F4,0(R1R1) 5 58 81414等待等待ADD.DADD.D的結(jié)果的結(jié)果 2 2DADDIU R1,R1,#-8 DADDIU R1,R1,#-8 5 59 91010等待等待ALU ALU 2 2B
45、NE R1,R2,LoopBNE R1,R2,Loop6 61111等待等待DADDIUDADDIU的結(jié)果的結(jié)果 3 3L.D F0,0L.D F0,0(R1R1) 7 7121213131414等待等待BNEBNE完成完成 3 3ADD.D F4,F0,F2 ADD.D F4,F0,F2 7 715151818等待等待L.DL.D的結(jié)果的結(jié)果 3 3S.D F4,0S.D F4,0(R1R1) 8 813131919等待等待ADD.DADD.D的結(jié)果的結(jié)果 3 3DADDIU R1,R1,#-8 DADDIU R1,R1,#-8 8 814141515等待等待ALU ALU 3 3BNE R
46、1,R2,LoopBNE R1,R2,Loop9 91616等待等待DADDIUDADDIU的結(jié)果的結(jié)果 時鐘周期時鐘周期 整型整型ALU 浮點浮點ALU 數(shù)據(jù)數(shù)據(jù)Cache CDB21/L.D 31/S.D 1/L.D 41/DADDIU 1/L.D 51/ADD.D 1/DADDIU 672/L.D 82/S.D 2/L.D 1/ADD.D 92/DADDIU 1/S.D 2/L.D 102/ADD.D 2/DADDIU 11123/L.D 134134/137/1375.5 多指令流出技術(shù)時鐘周期時鐘周期 整型整型ALU 浮點浮點ALU 數(shù)據(jù)數(shù)據(jù)Cache CDB133/S.D 3/L.
47、D2/ADD.D143/DADDIU2/S.D3/L.D15 3/ADD.D3/DADDIU16 17183/ADD.D193/S.D 20 135135/137/1375.5 多指令流出技術(shù)可以看出:每3個時鐘周期就執(zhí)行一個新循環(huán),每個循環(huán)5條指令。 IPCIPC5/35/31.671.67條條/ /拍拍雖然指令的流出率比較高,但是執(zhí)行效率并不是很高。q1616拍共執(zhí)行拍共執(zhí)行1515條指令,條指令,q平均指令執(zhí)行速度為平均指令執(zhí)行速度為15/1615/160.940.94條條/ /拍。拍。原因是浮點運算少,ALU部件成了瓶頸。 解決方法:增加一個加法器,把ALU功能和地址運算功能分開。 1
48、36136/137/1375.5 多指令流出技術(shù)1. 上述雙流出動態(tài)調(diào)度流水線的性能受限于以下3個因素:整數(shù)部件和浮點部件的工作負(fù)載不平衡,沒有充分發(fā)揮出浮點部件的作用。 應(yīng)該設(shè)法減少循環(huán)中整數(shù)型指令的數(shù)量。應(yīng)該設(shè)法減少循環(huán)中整數(shù)型指令的數(shù)量。每個循環(huán)疊代中的控制開銷太大。q5 5條指令中有兩條指令是輔助指令;條指令中有兩條指令是輔助指令;q應(yīng)該設(shè)法減少或消除這些指令。應(yīng)該設(shè)法減少或消除這些指令。控制相關(guān)使得處理機必須等到分支指令的結(jié)果出來后才能開始下一條L.D指令的執(zhí)行。 137137/137/1375.5 多指令流出技術(shù)1. 把能并行執(zhí)行的多條指令組裝成一條很長的指令;(100100多位到
49、幾百位)多位到幾百位)2. 設(shè)置多個功能部件;3. 指令字被分割成一些字段,每個字段稱為一個操作槽,直接獨立地控制一個功能部件;4. 在VLIW處理機中,在指令流出時不需要進行復(fù)雜的沖突檢測,而是依靠編譯器全部安排好了。 5.5.3 超長指令字技術(shù)138138/137/1375.5 多指令流出技術(shù)1. VLIW存在的一些問題 程序代碼長度增加了q提高并行性而進行的大量的循環(huán)展開;提高并行性而進行的大量的循環(huán)展開;q指令字中的操作槽并非總能填滿。指令字中的操作槽并非總能填滿。 解決:解決:采用指令共享立即數(shù)字段的方法,或者采用指采用指令共享立即數(shù)字段的方法,或者采用指 令壓縮存儲、調(diào)入令壓縮存儲
50、、調(diào)入CacheCache或譯碼時展開的方法?;蜃g碼時展開的方法。采用了鎖步機制 任何一個操作部件出現(xiàn)停頓時,整個處理機都要停頓。任何一個操作部件出現(xiàn)停頓時,整個處理機都要停頓。機器代碼的不兼容性139139/137/1375.5 多指令流出技術(shù)指令多流出處理器受哪些因素的限制呢? 主要受以下3個方面的影響:q程序所固有的指令級并行性;程序所固有的指令級并行性;q硬件實現(xiàn)上的困難;硬件實現(xiàn)上的困難;q超標(biāo)量和超長指令字處理器固有的技術(shù)限制。超標(biāo)量和超長指令字處理器固有的技術(shù)限制。5.5.4 多流出處理器受到的限制140140/137/1375.5 多指令流出技術(shù)1. 將每個流水段進一步細(xì)分,這樣在一個時鐘周期內(nèi)能夠分時流出多條指令。這種處理機稱為超流水線處理機。2. 對于一臺每個時鐘周期能流出n條指令的超流水線計算機來說,這n條指令不是同時流出的,而是每隔1/n個時鐘周期流出一條指令。實際上該超流水線計算機的流水線周期為1/n個時鐘周期。 3. 一臺每個時鐘周期分時流出兩條指令的超流水線計算機的時空圖。 5.5.5 超流水線處理機141141/137/1375.5 多指令流出技術(shù) IF IF I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 系列產(chǎn)品培訓(xùn)
- 婦科腫瘤早期診斷
- 負(fù)壓患者心理護理
- 高效店長培訓(xùn)體系構(gòu)建指南
- 2025年起重機械項目申請報告模板
- 2025年草除靈乙酯項目立項申請報告
- 2025年福建三明城發(fā)綠城物業(yè)服務(wù)有限公司招聘考試筆試試題(含答案)
- 【包頭】2025年內(nèi)蒙古包頭職業(yè)技術(shù)學(xué)院引進高層次和緊缺急需人才15人筆試歷年典型考題及考點剖析附帶答案詳解
- 給予樹教學(xué)設(shè)計課件
- 水果類教學(xué)課件
- 2025年內(nèi)蒙古自治區(qū)中考數(shù)學(xué)真題試卷(含答案)
- CT增強掃描造影劑外滲的預(yù)防與處理
- 2025至2030中國彈簧鋼行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 學(xué)習(xí)解讀《水利水電建設(shè)工程驗收規(guī)程》SLT223-2025課件
- 部編版六年級語文上冊古詩、文言文日積月累(必背)
- 出香港貨物發(fā)票樣板樣本空白
- [精選]臨床醫(yī)學(xué)概要知識點--資料
- 柳州市柳東新區(qū)南慶安置區(qū)項目工程基坑支護方案
- 采礦工程畢業(yè)設(shè)計(畢業(yè)論文)
- 工程塑料 第七章特種工程塑料
- 北京市2019年首批考試錄用公務(wù)員
評論
0/150
提交評論