計(jì)算機(jī)體系結(jié)構(gòu):第5章 指令級(jí)并行及其開(kāi)發(fā)——硬件方法_第1頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu):第5章 指令級(jí)并行及其開(kāi)發(fā)——硬件方法_第2頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu):第5章 指令級(jí)并行及其開(kāi)發(fā)——硬件方法_第3頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu):第5章 指令級(jí)并行及其開(kāi)發(fā)——硬件方法_第4頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu):第5章 指令級(jí)并行及其開(kāi)發(fā)——硬件方法_第5頁(yè)
已閱讀5頁(yè),還剩132頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 指令級(jí)并行及其開(kāi)發(fā)硬件方法5.1指令級(jí)并行的概念5.2相關(guān)與指令級(jí)并行5.3指令的動(dòng)態(tài)調(diào)度5.4動(dòng)態(tài)分支預(yù)測(cè)技術(shù)5.5多指令流出技術(shù)指令級(jí)并行:指指令之間存在的一種并行性,利用它,計(jì)算機(jī)可以并行執(zhí)行兩條或兩條以上的指令。 (ILP:Instruction-Level Parallelism)開(kāi)發(fā)ILP的途徑有兩種 資源重復(fù),重復(fù)設(shè)置多個(gè)處理部件,讓它們同時(shí)執(zhí)行相鄰或相近的多條指令; 采用流水線技術(shù),使指令重疊并行執(zhí)行。 本章研究:如何利用各種技術(shù)來(lái)開(kāi)發(fā)更多的指令級(jí)并行 (硬件的方法) 開(kāi)發(fā)ILP的方法可以分為兩大類主要基于硬件的動(dòng)態(tài)開(kāi)發(fā)方法基于軟件的靜態(tài)開(kāi)發(fā)方法流水線處理機(jī)的實(shí)際CPI

2、理想流水線的CPI加上各類停頓的時(shí)鐘周期數(shù): CPI流水線 = CPI理想 + 停頓結(jié)構(gòu)沖突 + 停頓數(shù)據(jù)沖突 + 停頓控制沖突理想CPI是衡量流水線最高性能的一個(gè)指標(biāo)。IPC:Instructions Per Cycle (每個(gè)時(shí)鐘周期完成的指令條數(shù))5.1 指令級(jí)并行的概念5.1 指令級(jí)并行的概念基本程序塊基本程序塊:一串連續(xù)的代碼除了入口和出口以外,沒(méi)有其他的分支指令和轉(zhuǎn)入點(diǎn) 。程序平均每47條指令就會(huì)有一個(gè)分支。循環(huán)級(jí)并行:使一個(gè)循環(huán)中的不同循環(huán)體并行執(zhí)行。開(kāi)發(fā)循環(huán)的不同疊代之間存在的并行性 最常見(jiàn)、最基本是指令級(jí)并行研究的重點(diǎn)之一5.1 指令級(jí)并行的概念例如,考慮下述語(yǔ)句: for

3、(i=1; i2)分支預(yù)測(cè)的性能差不多。兩位分支預(yù)測(cè)的狀態(tài)轉(zhuǎn)換如下所示: 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)兩位分支預(yù)測(cè)中的操作有兩個(gè)步驟:分支預(yù)測(cè);當(dāng)分支指令到達(dá)譯碼段(ID)時(shí),根據(jù)從BHT讀出的信息進(jìn)行分支預(yù)測(cè) 。若預(yù)測(cè)正確,就繼續(xù)處理后續(xù)的指令,流水線沒(méi)有斷流。否則,就要作廢已經(jīng)預(yù)取和分析的指令,恢復(fù)現(xiàn)場(chǎng),并從另一條分支路徑重新取指令。 狀態(tài)修改。 BHT方法只在以下情況下才有用:判定分支是否成功所需的時(shí)間大于確定分支目標(biāo)地址所需的時(shí)間。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)前述5段經(jīng)典流水線:由于判定分支是否成功和計(jì)算分支目標(biāo)地址都是在ID段完成,所以BHT方法不會(huì)給該流水線帶來(lái)好處。研究結(jié)果表明:對(duì)于S

4、PEC89測(cè)試程序來(lái)說(shuō),具有大小為4KB的BHT的預(yù)測(cè)準(zhǔn)確率為82%99%。 一般來(lái)說(shuō),采用4KB的BHT就可以了。 BHT可以跟分支指令一起存放在指令Cache中,也可以用一塊專門的硬件來(lái)實(shí)現(xiàn)。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)目標(biāo):將分支的開(kāi)銷降為 0方法:分支目標(biāo)緩沖將分支成功的分支指令的地址和它的分支目標(biāo)地址都放到一個(gè)緩沖區(qū)中保存起來(lái),緩沖區(qū)以分支指令的地址作為標(biāo)識(shí)。這個(gè)緩沖區(qū)就是分支目標(biāo)緩沖器(Branch-Target Buffer,簡(jiǎn)記為BTB,或者分支目標(biāo)Cache (ranch-Target Cache)。 5.4.2 采用分支目標(biāo)緩沖器BTB5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)BTB的結(jié)構(gòu) 5

5、.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)看成是用專門的硬件實(shí)現(xiàn)的一張表格。 表格中的每一項(xiàng)至少有兩個(gè)字段: 執(zhí)行過(guò)的成功分支指令的地址;(作為該表的匹配標(biāo)識(shí) )預(yù)測(cè)的分支目標(biāo)地址。采用BTB后,在流水線各個(gè)階段所進(jìn)行的相關(guān)操作: 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)采用BTB后,各種可能情況下的延遲 :指令在BTB中? 預(yù)測(cè) 實(shí)際情況 延遲周期 是 成功 成功 0 是 成功 不成功 2 不是 成功 2 不是 不成功 0 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)BTB的另一種形式在分支目標(biāo)緩沖器中增設(shè)一個(gè)至少是兩位的“分支歷史表”字段 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)更進(jìn)一步,在表中對(duì)于每條分支指令都存放若干條分支目標(biāo)處的指令,就形成了分支目標(biāo)指令

6、緩沖器。5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)前瞻執(zhí)行(speculation)的基本思想: 對(duì)分支指令的結(jié)果進(jìn)行猜測(cè),并假設(shè)這個(gè)猜測(cè)總是對(duì)的,然后按這個(gè)猜測(cè)結(jié)果繼續(xù)取、流出和執(zhí)行后續(xù)的指令。只是執(zhí)行指令的結(jié)果不是寫回到寄存器或存儲(chǔ)器,而是寫入一個(gè)稱為再定序緩沖器ROB(ReOrder Buffer)中 。等到相應(yīng)的指令得到“確認(rèn)”(commit)(即確實(shí)是應(yīng)該執(zhí)行的)之后,才將結(jié)果寫入寄存器或存儲(chǔ)器。 5.4.3 基于硬件的前瞻執(zhí)行5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)基于硬件的前瞻執(zhí)行結(jié)合了3種思想:動(dòng)態(tài)分支預(yù)測(cè)。用來(lái)選擇后續(xù)執(zhí)行的指令。在控制相關(guān)的結(jié)果尚未出來(lái)之前,前瞻地執(zhí)行后續(xù)指令。用動(dòng)態(tài)調(diào)度對(duì)基本塊的各種組合進(jìn)

7、行跨基本塊的調(diào)度。對(duì)Tomasulo算法加以擴(kuò)充,就可以支持前瞻執(zhí)行。 把Tomasulo算法的寫結(jié)果和指令完成加以區(qū)分,分成兩個(gè)不同的段: 寫結(jié)果,指令確認(rèn) 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)寫結(jié)果段把前瞻執(zhí)行的結(jié)果寫到ROB中;通過(guò)CDB在指令之間傳送結(jié)果,供需要用到這些結(jié)果的指令使用。指令確認(rèn)段 在分支指令的結(jié)果出來(lái)后,對(duì)相應(yīng)指令的前瞻執(zhí)行給予確認(rèn)。如果前面所做的猜測(cè)是對(duì)的,把在ROB中的結(jié)果寫到寄存器或存儲(chǔ)器。如果發(fā)現(xiàn)前面對(duì)分支結(jié)果的猜測(cè)是錯(cuò)誤的,那就不予以確認(rèn),并從那條分支指令的另一條路徑開(kāi)始重新執(zhí)行。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)實(shí)現(xiàn)前瞻的關(guān)鍵思想: 允許指令亂序執(zhí)行,但必須順序確認(rèn)。在指令被確

8、認(rèn)之前,不允許它進(jìn)行不可恢復(fù)的操作。 支持前瞻執(zhí)行的浮點(diǎn)部件的結(jié)構(gòu) 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)ROB中的每一項(xiàng)由以下4個(gè)字段組成:指令類型 指出該指令是分支指令、store指令或寄存器操作指令。目標(biāo)地址 給出指令執(zhí)行結(jié)果應(yīng)寫入的目標(biāo)寄存器號(hào)(如果是 load和ALU指令)或存儲(chǔ)器單元的地址(如果是store指 令)。數(shù)據(jù)值字段 用來(lái)保存指令前瞻執(zhí)行的結(jié)果,直到指令得到確認(rèn)。就緒字段 指出指令是否已經(jīng)完成執(zhí)行并且數(shù)據(jù)已就緒。5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)Tomasulo算法中保留站的換名功能是由ROB來(lái)完成的。 采用前瞻執(zhí)行機(jī)制后,指令的執(zhí)行步驟:(在Tomasulo算法的基礎(chǔ)上改造的 )流出 從浮點(diǎn)指

9、令隊(duì)列的頭部取一條指令。如果有空閑的保留站(設(shè)為r)且有空閑的ROB項(xiàng)(設(shè)為b),就流出該指令,并把相應(yīng)的信息放入保留站r和ROB項(xiàng)b。如果保留站或ROB全滿,便停止流出指令,直到它們都有空閑的項(xiàng)。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)執(zhí)行 如果有操作數(shù)尚未就緒,就等待,并不斷地監(jiān)測(cè)CDB。 (檢測(cè)RAW沖突)當(dāng)兩個(gè)操作數(shù)都已在保留站中就緒后,就可以執(zhí)行該指令的操作。寫結(jié)果 當(dāng)結(jié)果產(chǎn)生后,將該結(jié)果連同本指令在流出段所分配到的ROB項(xiàng)的編號(hào)放到CDB上,經(jīng)CDB寫到ROB以及所有等待該結(jié)果的保留站。釋放產(chǎn)生該結(jié)果的保留站。 store指令在本階段完成,其操作為: 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)如果要寫入存儲(chǔ)器的數(shù)

10、據(jù)已經(jīng)就緒,就把該數(shù)據(jù)寫入分配給該store指令的ROB項(xiàng)。否則,就監(jiān)測(cè)CDB,直到那個(gè)數(shù)據(jù)在CDB上播送出來(lái),才將之寫入分配給該store指令的ROB項(xiàng)。確認(rèn) 對(duì)分支指令、store指令以及其它指令的處理不同:其它指令(除分支指令和store指令) 當(dāng)該指令到達(dá)ROB隊(duì)列的頭部而且其結(jié)果已經(jīng)就緒時(shí),就把該結(jié)果寫入該指令的目的寄存器,并從ROB中刪除該指令。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)store指令 處理與上面的類似,只是它把結(jié)果寫入存儲(chǔ)器。分支指令 當(dāng)預(yù)測(cè)錯(cuò)誤的分支指令到達(dá)ROB隊(duì)列的頭部時(shí),清空ROB,并從分支指令的另一個(gè)分支重新開(kāi)始執(zhí)行。 (錯(cuò)誤的前瞻執(zhí)行)當(dāng)預(yù)測(cè)正確的分支指令到達(dá)ROB隊(duì)

11、列的頭部時(shí),該指令執(zhí)行完畢。 5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù) 例5.4 假設(shè)浮點(diǎn)功能部件的延遲時(shí)間為:加法2個(gè)時(shí)鐘周期,乘法10個(gè)時(shí)鐘周期,除法40個(gè)時(shí)鐘周期。對(duì)于下面的代碼段,給出當(dāng)指令MUL.D即將確認(rèn)時(shí)的狀態(tài)表內(nèi)容。 L.D F6,34(R2) L.D F2,45(R3) MUL.DF0,F2,F4 SUB.DF8,F6,F2 DIV.DF10,F0,F6 ADD.DF6,F8,F2名稱 保留站 Busy Op Vj Vk Qj Qk Dest A Load1noLoad2noAdd1 no Add2 no Add3 no Mult1 no MUL.DMem45+ RegsR2 RegsF4

12、#3 Mult2 yes DIV.D Mem34+RegsR2 #3 #5 前瞻執(zhí)行中MUL.D確認(rèn)前,保留站和ROB的狀態(tài) 項(xiàng)號(hào) ROB Busy 指令 狀態(tài) 目的 Value 1 no L.D F6, 34(R2) 確認(rèn) F6 Mem34+RegsR2 2no L.D F2, 45(R3) 確認(rèn) F2 Mem45+RegsR3 3yes MUL.D F0, F2, F4 寫結(jié)果 F0 #2RegsF4 4yes SUB.D F8, F6, F2 寫結(jié)果 F8 #1#2 5yes DIV.D F10, F0, F6 執(zhí)行 F10 6yes ADD.D F6,F8,F2 寫結(jié)果 F6 #4#2

13、 字段 浮點(diǎn)寄存器狀態(tài) F0 F2 F4 F6 F8 F10 F30 ROB項(xiàng)編號(hào) 3645Busy yes no no yes yes yes no5.4 動(dòng)態(tài)分支預(yù)測(cè)技術(shù)前瞻執(zhí)行通過(guò)ROB實(shí)現(xiàn)了指令的順序完成。能夠?qū)崿F(xiàn)精確異常。很容易地推廣到整數(shù)寄存器和整數(shù)功能單元上。 主要缺點(diǎn):所需的硬件太復(fù)雜。 在每個(gè)時(shí)鐘周期內(nèi)流出多條指令, CPI1。單流出和多流出處理機(jī)執(zhí)行指令的時(shí)空?qǐng)D對(duì)比 5.5 多指令流出技術(shù)單流出和多流出處理機(jī)執(zhí)行指令的時(shí)空?qǐng)D 5.5 多指令流出技術(shù)5.5 多指令流出技術(shù)多流出處理機(jī)有兩種基本風(fēng)格:超標(biāo)量(Superscalar)在每個(gè)時(shí)鐘周期流出的指令條數(shù)不固定,依代碼的具

14、體情況而定。(有個(gè)上限)設(shè)這個(gè)上限為n,就稱該處理機(jī)為n-流出??梢酝ㄟ^(guò)編譯器進(jìn)行靜態(tài)調(diào)度,也可以基于Tomasulo算法進(jìn)行動(dòng)態(tài)調(diào)度。 超長(zhǎng)指令字VLIW(Very Long Instruction Word)在每個(gè)時(shí)鐘周期流出的指令條數(shù)是固定的,這些指令構(gòu)成一條長(zhǎng)指令或者一個(gè)指令包。指令包中,指令之間的并行性是通過(guò)指令顯式地表示出來(lái)的。指令調(diào)度是由編譯器靜態(tài)完成的。 5.5 多指令流出技術(shù)超標(biāo)量處理機(jī)與VLIW處理機(jī)相比有兩個(gè)優(yōu)點(diǎn):超標(biāo)量結(jié)構(gòu)對(duì)程序員是透明的,處理機(jī)能自己檢測(cè)下一條指令能否流出,不需要由編譯器或?qū)iT的變換程序?qū)Τ绦蛑械闹噶钸M(jìn)行重新排列;即使是沒(méi)有經(jīng)過(guò)編譯器針對(duì)超標(biāo)量結(jié)構(gòu)進(jìn)行

15、調(diào)度優(yōu)化的代碼或是舊的編譯器生成的代碼也可以運(yùn)行,當(dāng)然運(yùn)行的效果不會(huì)很好。要想達(dá)到很好的效果,方法之一: 使用動(dòng)態(tài)超標(biāo)量調(diào)度技術(shù)。下表列出了一些基本的多流出技術(shù)、這些技術(shù)的特點(diǎn)以及采用這些技術(shù)的處理機(jī)實(shí)例。技 術(shù) 流出結(jié)構(gòu) 沖突檢測(cè) 調(diào) 度 主要特點(diǎn) 處理機(jī)實(shí)例 超標(biāo)量(靜態(tài)) 動(dòng)態(tài) 硬件 靜態(tài)按序執(zhí)行 Sun UltraSPARC/ 超標(biāo)量(動(dòng)態(tài)) 動(dòng)態(tài) 硬件 動(dòng)態(tài)部分亂序執(zhí)行 IBM Power2 超標(biāo)量(猜測(cè)) 動(dòng)態(tài) 硬件 帶有前瞻的動(dòng)態(tài)調(diào)度 帶有前瞻的亂序執(zhí)行 Pentium /4,MIPS R10K,Alpha 21264, HP PA 8500,IBM RS64 VLIW/LIW

16、靜態(tài) 軟件 靜態(tài)流出包之間沒(méi)有沖突 Trimedia,i860 EPIC 主要是靜態(tài) 主要是軟件 主要是靜態(tài)相關(guān)性被編譯器顯式地標(biāo)記出來(lái) Itanium 5.5 多指令流出技術(shù)在典型的超標(biāo)量處理器中,每個(gè)時(shí)鐘周期可流出1到8條指令。指令按序流出,在流出時(shí)進(jìn)行沖突檢測(cè)。 由硬件檢測(cè)當(dāng)前流出的指令之間是否存在沖突以及當(dāng)前流出的指令與正在執(zhí)行的指令是否有沖突。 舉例:一個(gè)4-流出的靜態(tài)調(diào)度超標(biāo)量處理機(jī) 在取指令階段,流水線將從取指令部件收到14條指令(稱為流出包)。在一個(gè)時(shí)鐘周期內(nèi),這些指令有可能是全部都能流出,也可能是只有一部分能流出。5.5.1 基于靜態(tài)調(diào)度的多流出技術(shù)5.5 多指令流出技術(shù)流出

17、部件檢測(cè)結(jié)構(gòu)沖突或者數(shù)據(jù)沖突。一般分兩階段實(shí)現(xiàn):第一段:進(jìn)行流出包內(nèi)的沖突檢測(cè),選出初步判定可以流出的指令;第二段:檢測(cè)所選出的指令與正在執(zhí)行的指令是否有沖突。 MIPS處理機(jī)是怎樣實(shí)現(xiàn)超標(biāo)量的呢?假設(shè):每個(gè)時(shí)鐘周期流出兩條指令: 1條整數(shù)型指令1條浮點(diǎn)操作指令其中:把load指令、store指令、分支指令歸類為整數(shù)型指令。 5.5 多指令流出技術(shù)要求:同時(shí)取兩條指令(64位),譯碼兩條指令(64位)。對(duì)指令的處理包括以下步驟:從Cache中取兩條指令;確定那幾條指令可以流出(02條指令);把它們發(fā)送到相應(yīng)的功能部件。 雙流出超標(biāo)量流水線中指令執(zhí)行的時(shí)空?qǐng)D 假設(shè):所有的浮點(diǎn)指令都是加法指令,其

18、執(zhí)行時(shí)間為兩個(gè)時(shí)鐘周期。為簡(jiǎn)單起見(jiàn),圖中總是把整數(shù)指令放在浮點(diǎn)指令的前面。 5.5 多指令流出技術(shù)指令類型 流水線工作情況 整數(shù)指令 IF ID EX MEM WB 浮點(diǎn)指令 IF ID EX EXMEMWB 整數(shù)指令 IF ID EX MEM WB 浮點(diǎn)指令 IF ID EX EXMEMWB 整數(shù)指令 IF ID EX MEM WB 浮點(diǎn)指令 IF ID EX EXMEMWB 整數(shù)指令 IF ID EX MEM WB 浮點(diǎn)指令 IF ID EX EXMEM5.5 多指令流出技術(shù)采用“1條整數(shù)型指令1條浮點(diǎn)指令”并行流出的方式,需要增加的硬件很少。浮點(diǎn)load或浮點(diǎn)store指令將使用整數(shù)部件

19、,會(huì)增加對(duì)浮點(diǎn)寄存器的訪問(wèn)沖突。 增設(shè)一個(gè)浮點(diǎn)寄存器的讀/寫端口。由于流水線中的指令多了一倍,定向路徑也要增加。 5.5 多指令流出技術(shù)限制超標(biāo)量流水線的性能發(fā)揮的障礙 load指令 load后續(xù)3條指令都不能使用其結(jié)果,否則就會(huì)引起停頓。 分支延遲 如果分支指令是流出包中的第一條指令,則其延遲是3個(gè)時(shí)鐘周期;否則就是流出包中的第二條指令,其延遲就是兩個(gè)時(shí)鐘周期。 5.5 多指令流出技術(shù)擴(kuò)展Tomasulo算法:支持雙流出超標(biāo)量流水線 每個(gè)時(shí)鐘周期流出兩條指令;一條是整數(shù)指令,另一條是浮點(diǎn)指令。采用一種比較簡(jiǎn)單的方法:指令按順序流向保留站,否則會(huì)破壞程序語(yǔ)義。 將整數(shù)所用的表結(jié)構(gòu)與浮點(diǎn)用的表結(jié)

20、構(gòu)分離開(kāi),分別進(jìn)行處理,這樣就可以同時(shí)地流出一條浮點(diǎn)指令和一條整數(shù)指令到各自的保留站。 5.5.2 基于動(dòng)態(tài)調(diào)度的多流出技術(shù)5.5 多指令流出技術(shù)有兩種不同的方法可以實(shí)現(xiàn)多流出 關(guān)鍵在于:對(duì)保留站的分配和對(duì)流水線控制表格的修改。在半個(gè)時(shí)鐘周期里完成流出步驟,這樣一個(gè)時(shí)鐘周期就能處理兩條指令。設(shè)置一次能同時(shí)處理兩條指令的邏輯電路。 現(xiàn)代的流出4條或4條以上指令的超標(biāo)量處理機(jī)經(jīng)常是兩種方法都采用。 5.5 多指令流出技術(shù) 例5.5 對(duì)于采用了Tomasulo算法和多流出技術(shù)的MIPS流水線,考慮以下簡(jiǎn)單循環(huán)的執(zhí)行。該程序把F2中的標(biāo)量加到一個(gè)向量的每個(gè)元素上。 Loop: L.D F0, 0(R1

21、) / 取一個(gè)數(shù)組元素放入F0 ADD.D F4, F0, F2 / 加上在F2中的標(biāo)量 S.D F4, 0(R1) / 存結(jié)果 DADDIU R1,R1,#-8 / 將指針減少8(每個(gè)數(shù)據(jù)占8個(gè)字節(jié)) BNE R1,R2,Loop / 若R1不等于R2,表示尚未結(jié)束,轉(zhuǎn)移到Loop繼續(xù)。 5.5 多指令流出技術(shù)現(xiàn)做以下假設(shè):每個(gè)時(shí)鐘周期能流出一條整數(shù)指令和一條浮點(diǎn)指令,即使它們相關(guān)也是如此。有一個(gè)整數(shù)部件,用于整數(shù)ALU運(yùn)算和地址計(jì)算;并且對(duì)于每一種浮點(diǎn)操作類型都有一個(gè)獨(dú)立的流水化了的浮點(diǎn)功能部件。指令流出和寫結(jié)果各占用一個(gè)時(shí)鐘周期。具有動(dòng)態(tài)分支預(yù)測(cè)部件和一個(gè)獨(dú)立的計(jì)算分支條件的功能部件。跟

22、大多數(shù)動(dòng)態(tài)調(diào)度處理器一樣,寫回段的存在意味著實(shí)際的指令延遲會(huì)比按序流動(dòng)的簡(jiǎn)單流水線多一個(gè)時(shí)鐘周期。 5.5 多指令流出技術(shù)所以,從產(chǎn)生結(jié)果數(shù)據(jù)的源指令到使用該結(jié)果數(shù)據(jù)的指令之間的延遲為:整數(shù)運(yùn)算一個(gè)周期,load兩個(gè)周期,浮點(diǎn)加法運(yùn)算3個(gè)周期。 1. 請(qǐng)列出該程序前面3遍循環(huán)中各條指令的流出、開(kāi)始執(zhí)行和將結(jié)果寫到CDB上的時(shí)間。 2. 如果分支指令單流出,沒(méi)有采用延遲分支,但分支預(yù)測(cè)是完美的。請(qǐng)列出整數(shù)部件、浮點(diǎn)部件、數(shù)據(jù)Cache以及CDB的資源使用情況。 解 執(zhí)行時(shí),該循環(huán)將動(dòng)態(tài)展開(kāi),并且只要可能就流出兩條指令。表中列出了各指令執(zhí)行到幾個(gè)操作點(diǎn)的時(shí)間及資源的使用情況。 遍數(shù) 指 令 流出

23、執(zhí)行 訪存 寫CDB 說(shuō)明 1L.D F0,0(R1) 1234流出第一條指令 1ADD.D F4,F0,F2 158等待L.D的結(jié)果 1S.D F4,0(R1) 239等待ADD.D的結(jié)果 1DADDIU R1,R1,#-8 245等待ALU1BNE R1,R2,Loop 36等待DADDIU的結(jié)果 2L.D F0,0(R1) 4789等待BNE完成 2ADD.D F4,F0,F2 41013等待L.D的結(jié)果 2S.D F4,0(R1) 5814等待ADD.D的結(jié)果 2DADDIU R1,R1,#-8 5910等待ALU 2BNE R1,R2,Loop611等待DADDIU的結(jié)果 3L.D

24、F0,0(R1) 7121314等待BNE完成 3ADD.D F4,F0,F2 71518等待L.D的結(jié)果 3S.D F4,0(R1) 81319等待ADD.D的結(jié)果 3DADDIU R1,R1,#-8 81415等待ALU 3BNE R1,R2,Loop916等待DADDIU的結(jié)果 時(shí)鐘周期 整型ALU 浮點(diǎn)ALU 數(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

25、/L.D 5.5 多指令流出技術(shù)時(shí)鐘周期 整型ALU 浮點(diǎn)ALU 數(shù)據(jù)Cache CDB133/S.D 3/L.D2/ADD.D143/DADDIU2/S.D3/L.D15 3/ADD.D3/DADDIU16 17183/ADD.D193/S.D 20 5.5 多指令流出技術(shù)可以看出:每3個(gè)時(shí)鐘周期就執(zhí)行一個(gè)新循環(huán),每個(gè)循環(huán)5條指令。 IPC5/31.67條/拍雖然指令的流出率比較高,但是執(zhí)行效率并不是很高。16拍共執(zhí)行15條指令,平均指令執(zhí)行速度為15/160.94條/拍。原因是浮點(diǎn)運(yùn)算少,ALU部件成了瓶頸。 解決方法:增加一個(gè)加法器,把ALU功能和地址運(yùn)算功能分開(kāi)。 5.5 多指令流出技

26、術(shù)上述雙流出動(dòng)態(tài)調(diào)度流水線的性能受限于以下3個(gè)因素:整數(shù)部件和浮點(diǎn)部件的工作負(fù)載不平衡,沒(méi)有充分發(fā)揮出浮點(diǎn)部件的作用。 應(yīng)該設(shè)法減少循環(huán)中整數(shù)型指令的數(shù)量。每個(gè)循環(huán)疊代中的控制開(kāi)銷太大。5條指令中有兩條指令是輔助指令;應(yīng)該設(shè)法減少或消除這些指令??刂葡嚓P(guān)使得處理機(jī)必須等到分支指令的結(jié)果出來(lái)后才能開(kāi)始下一條L.D指令的執(zhí)行。 5.5 多指令流出技術(shù)把能并行執(zhí)行的多條指令組裝成一條很長(zhǎng)的指令;(100多位到幾百位)設(shè)置多個(gè)功能部件;指令字被分割成一些字段,每個(gè)字段稱為一個(gè)操作槽,直接獨(dú)立地控制一個(gè)功能部件;在VLIW處理機(jī)中,在指令流出時(shí)不需要進(jìn)行復(fù)雜的沖突檢測(cè),而是依靠編譯器全部安排好了。 5.5.3 超長(zhǎng)指令字技術(shù)5.5 多指令流出技術(shù)VLIW存在的一些問(wèn)題 程序代碼長(zhǎng)度增加了提高并行性而進(jìn)行的大量的循環(huán)展開(kāi);指令字中的操作槽并非總能填滿。 解決:采用指令共享立即數(shù)字段的方法,或者采用指 令壓縮存儲(chǔ)、調(diào)入Cache或譯碼時(shí)展開(kāi)的方法。采用了鎖步機(jī)制 任何一個(gè)操作部件出現(xiàn)停頓時(shí),整個(gè)處理機(jī)都要停頓。機(jī)器代碼的不兼容性5.5 多指令流出技術(shù)指令多流出處理器受哪些因素的限制呢? 主要受以下3個(gè)方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論