版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
指令級(jí)高度并行技術(shù)是指細(xì)粒度并行性,包含時(shí)間并行技術(shù)和空間并行技術(shù)。本章在介紹指令級(jí)高度并行處理的基本概念、實(shí)現(xiàn)的技術(shù)方法和指令級(jí)高度并行處理機(jī)的分類的基礎(chǔ)上,討論硬件動(dòng)態(tài)指令調(diào)度技術(shù),闡述超標(biāo)量與超流水線處理機(jī)、超長指令字處理機(jī)和向量處理機(jī)等的基本結(jié)構(gòu)、工作機(jī)理和性能特點(diǎn)。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念第二節(jié)
硬件動(dòng)態(tài)指令調(diào)度--硬件方法第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)第四節(jié)基于軟件技術(shù)的多發(fā)射處理機(jī)
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念1.實(shí)現(xiàn)指令級(jí)并行的技術(shù)方法時(shí)間重疊----超流水線資源重復(fù)----超標(biāo)量資源重復(fù)和指令格式優(yōu)化組合----超長指令字超流水線技術(shù)和超標(biāo)量技術(shù)結(jié)合2.指令級(jí)并行度
ILP=程序執(zhí)行的指令數(shù)/程序執(zhí)行的周期數(shù)二、指令級(jí)并行的實(shí)現(xiàn)方法及其衡量指標(biāo)四、指令調(diào)度及其基本方法
1.什么是指令調(diào)度
指令調(diào)度是指通過指令重組來提高指令級(jí)的并行度ILP,找出不相關(guān)的指令序列,使它們盡可能地并發(fā)執(zhí)行。通過指令調(diào)度可提高處理機(jī)的并行度。
2.指令調(diào)度的基本方法
指令調(diào)度的基本方法有靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度。靜態(tài)調(diào)度(staticscheduling)是由優(yōu)化編譯程序來完成對(duì)指令序列的重排,拉開具有數(shù)據(jù)相關(guān)的有關(guān)指令間的距離,以減少可能產(chǎn)生的流水線的停頓。動(dòng)態(tài)調(diào)度是指能在保持?jǐn)?shù)據(jù)流和異常行為的情況下,通過硬件對(duì)指令順序進(jìn)行重排,減少數(shù)據(jù)相關(guān)導(dǎo)致的流水線的停頓,從而提高流水線的利用率。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
五、靜態(tài)指令調(diào)度----軟件方法
1.靜態(tài)指令調(diào)度的方法靜態(tài)指令調(diào)度是通過優(yōu)化編譯程序來完成指令重組,優(yōu)化編譯程序完成指令調(diào)度的能力受限于兩個(gè)特性:一是程序固有的指令并行,二是流水線功能部件的執(zhí)行延遲(流水線功能段段數(shù))。靜態(tài)指令調(diào)度并不會(huì)真正消除指令間的相關(guān),而是通過重新安排指令的流出順序,使指令間的相關(guān)盡可能少地引起流水線的空轉(zhuǎn),減少整個(gè)指令序列在流水線上的執(zhí)行時(shí)間。靜態(tài)指令調(diào)度可分為局部指令調(diào)度和全局指令調(diào)度。局部指令調(diào)度是指在順序結(jié)構(gòu)程序段(基本塊)內(nèi)進(jìn)行指令重組,而全局指令調(diào)度則是指在含有分支結(jié)構(gòu)程序段內(nèi)實(shí)現(xiàn)多個(gè)基本塊間移動(dòng)指令。全局指令調(diào)度主要有兩種技術(shù):蹤跡調(diào)度和超塊調(diào)度。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念2.局部指令調(diào)度
例如對(duì)于源代碼:
for(i=1000;i>0;i――)x[i]=x[i]+s;轉(zhuǎn)換成匯編語言為:Loop:L.DF0,(R1)//取一個(gè)向量元素放入F0,延遲時(shí)鐘數(shù)為2ADD.DF4,F(xiàn)0,F(xiàn)2//加上在F2中的標(biāo)量,延遲時(shí)鐘數(shù)為3S.DF4,(R1)//存結(jié)果,延遲時(shí)鐘數(shù)為1DADDIUR1,R1,#-8 //將指針減8,延遲時(shí)鐘數(shù)為2BNER1,R2,Loop //若R1不等于R2,延遲時(shí)鐘數(shù)為2
其中:整數(shù)寄存器R1用于指向向量中的當(dāng)前元素,其初值指向第一個(gè)元素,(R2)指向最后一個(gè)元素,浮點(diǎn)寄存器F2用于保存常數(shù)。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念在不進(jìn)行指令調(diào)度的情況下,程序的實(shí)際執(zhí)行過程如下:
Loop:L.DF0,(R1) 1(時(shí)鐘序號(hào),下同)(空轉(zhuǎn)) 2ADD.DF4,F(xiàn)0,F(xiàn)2 3
(空轉(zhuǎn)) 4
(空轉(zhuǎn)) 5S.DF4,(R1) 6DADDIUR1,R1,#-8 7
(空轉(zhuǎn)) 8BNER1,R2,Loop 9
(空轉(zhuǎn)) 10
可以看出,每完成一個(gè)元素的操作需要10個(gè)時(shí)鐘周期,其中有5個(gè)是空轉(zhuǎn)周期。在用編譯器對(duì)上述程序進(jìn)行指令調(diào)度以后,程序的執(zhí)行如下:
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念Loop:L.DF0,(R1) 1(時(shí)鐘序號(hào),下同)
DADDIU R1,R1,#-82ADD.D F4,F(xiàn)0,F(xiàn)23
(空轉(zhuǎn)) 4BNE R1,R2,Loop 5S.D F4,(R1+8) 6
把DADDIU指令調(diào)度到了L.D指令和ADD.D指令之間的“空轉(zhuǎn)”拍,把S.D指令領(lǐng)先到了分支指令的延遲槽中。由于修改指針的DADDIU指令被調(diào)度到S.D指令之前,提前對(duì)指針進(jìn)行了減8的操作,所以要對(duì)S.D指令中的偏移量進(jìn)行修正,即把“(R1)”改為“(R1+8)”。經(jīng)過指令調(diào)度后,一個(gè)元素的操作時(shí)間從10個(gè)時(shí)鐘周期減少到了6個(gè)時(shí)鐘周期,其中5個(gè)周期是有指令執(zhí)行的,只剩下一個(gè)空轉(zhuǎn)周期。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
當(dāng)然,編譯指令調(diào)度并不會(huì)真正消除指令間的相關(guān),而是通過重新安排指令的流出順序,使得指令間的相關(guān)盡可能少地引起流水線空轉(zhuǎn),從而減少整個(gè)指令序列在流水線上的執(zhí)行時(shí)間。特別地基本指令調(diào)度方法,指令調(diào)度不能跨越分支指令,舉例中S.D指令被調(diào)度到BNE指令的分支延遲槽中,不屬于跨越分支指令的情況。通常指令調(diào)度要求在基本塊內(nèi)進(jìn)行,這種指令調(diào)度稱為局部指令調(diào)度或基本指令調(diào)度。它在指令調(diào)度過程中往往要加入空轉(zhuǎn)周期,使得整個(gè)執(zhí)行過程中的有效操作的比率不高,對(duì)流水線效率的提高作用不大。因此,提出了不受基本塊限制的靜態(tài)指令調(diào)度方法。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念3.循環(huán)展開
上例中,雖然完成對(duì)一個(gè)元素的操作時(shí)間從10個(gè)時(shí)鐘周期減少到6個(gè)時(shí)鐘周期,但其中只有L.D、ADD.D和S.D這3條指令是需要的有效操作,占用3個(gè)時(shí)鐘周期,而DADDIU、空轉(zhuǎn)和BEN這3個(gè)時(shí)鐘周期都是為了控制循環(huán)和解決數(shù)據(jù)相關(guān)等待而附加的,因此整個(gè)執(zhí)行過程中有效操作的比率并不高。這是因?yàn)槊總€(gè)循環(huán)迭代中只有5條指令,進(jìn)行指令調(diào)度的余地很小,必須想辦法增加每個(gè)循環(huán)迭代中的指令數(shù),循環(huán)展開(LoopUnrolling)就是解決這一問題的有效方法之一。循環(huán)的不同迭代之間存在的并行性是增加指令間并行性最簡單和最常用的方法。所謂循環(huán)展開(LoopUnrolling)就是指把循環(huán)體的代碼復(fù)制多次并按順序排放,然后相應(yīng)調(diào)整循環(huán)的結(jié)束條件。通過循環(huán)展開,多個(gè)循環(huán)迭代的代碼可以合到一起調(diào)度,給編譯器進(jìn)行指令調(diào)度帶來了更大的空間,而且還能夠消除中間的分支指令和循環(huán)控制指令引起的開銷。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
對(duì)于上例,由于循環(huán)的不同迭代之間是不存在相關(guān)的,所以多次迭代可以并行執(zhí)行。假定R1的初值為32的倍數(shù),即循環(huán)次數(shù)為4的倍數(shù),將其循環(huán)展開3次得到4個(gè)循環(huán)體。而且由于循環(huán)結(jié)束后沒有剩余尚未執(zhí)行的操作,因此無須在循環(huán)體后面增加補(bǔ)償代碼。為消除冗余的指令,并且不要重復(fù)使用寄存器,對(duì)寄存器作如下分配:F0、F4已經(jīng)用于展開后的第1個(gè)循環(huán)體,F(xiàn)2用于保存常數(shù);把F6和F8用于展開后的第2個(gè)循環(huán)體,F(xiàn)10和F12用于第3個(gè)循環(huán)體,
F14和F16用于第4個(gè)循環(huán)體。展開后沒有調(diào)度的代碼如下:
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念Loop:L.DF0,(R1)1(時(shí)鐘序號(hào),下同)空轉(zhuǎn) 2ADD.DF4,F(xiàn)0,F(xiàn)2 3
(空轉(zhuǎn)) 4
(空轉(zhuǎn)) 5S.D F4,(R1) 6L.D F6,(R1-8) 7
(空轉(zhuǎn)) 8ADD.DF8,F(xiàn)6,F(xiàn)2 9
(空轉(zhuǎn)) 10
(空轉(zhuǎn)) 11S.D F8,(R1-8) 12L.D F10,(R1-16) 13
(空轉(zhuǎn)) 14ADD.DF12,F(xiàn)10,F(xiàn)2 15
(空轉(zhuǎn)) 16
(空轉(zhuǎn)) 17S.D F12,(R1-16) 18L.D F14,(R1-24) 19
(空轉(zhuǎn)) 20ADD.DF16,F(xiàn)14,F(xiàn)2 21
(空轉(zhuǎn)) 22
(空轉(zhuǎn)) 23S.D F16,(R1-24) 24DADDIUR1,R1,#-32 25
(空轉(zhuǎn)) 26BNER1,R2,Loop 27
(空轉(zhuǎn)) 28
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
這里把展開后的前3個(gè)循環(huán)體中的DADDIU指令刪除了,并對(duì)L.D指令中的偏移量和最后留下的DADDIU指令中的立即數(shù)進(jìn)行了相應(yīng)修正。該循環(huán)有4個(gè)循環(huán)體共需要28個(gè)時(shí)鐘周期,完成4個(gè)元素的操作,平均每個(gè)元素使用28/4=7個(gè)時(shí)鐘周期。與源代碼的每個(gè)元素需要10個(gè)時(shí)鐘周期相比較,節(jié)省了不少的時(shí)間。這主要是從減少循環(huán)控制的開銷中獲得的。但是在展開后的循環(huán)體中,實(shí)際指令只有14條,其他14個(gè)周期都是空轉(zhuǎn),可見效率并不高。對(duì)指令序列進(jìn)行優(yōu)化調(diào)度,可以減少空轉(zhuǎn)周期。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念Loop:L.D F0,(R1) 1(時(shí)鐘序號(hào),下同)
L.D F6,(R1-8) 2L.D F10,(R1-16) 3L.D F14,(R1-24) 4ADD.DF4,F(xiàn)0,F(xiàn)2 5ADD.DF8,F(xiàn)6,F(xiàn)2 6ADD.DF12,F(xiàn)10,F(xiàn)2 7ADD.DF16,F(xiàn)14,F(xiàn)2 8S.D F4,(R1) 9S.D F8,(R1-8) 10DADDIUR1,R1,#-32 12S.D F12,(R1+16) 11BNE R1,R2,Loop 13S.D F16,(R1+8) 14
這個(gè)循環(huán)由于沒有數(shù)據(jù)相關(guān)引起的空轉(zhuǎn)等待,整個(gè)循環(huán)僅僅使用了14個(gè)時(shí)鐘周期,平均每個(gè)元素使用14/4=3.5個(gè)時(shí)鐘周期。因此,通過循環(huán)展開、寄存器重命名和指令調(diào)度,可以有效地開發(fā)出指令級(jí)并行。當(dāng)循環(huán)體為簡單的順序結(jié)構(gòu)時(shí),通過循環(huán)展開和基本指令調(diào)度來開發(fā)指令級(jí)并行,優(yōu)化效果非常明顯,因?yàn)樗鼈兛梢詫⒍鄠€(gè)循環(huán)迭代合并在一起,構(gòu)成一個(gè)更大的基本塊,不僅加大了指令調(diào)度的空間,而且減少了循環(huán)控制指令。但是,如果循環(huán)體不是順序結(jié)構(gòu)而是分支結(jié)構(gòu)時(shí),指令調(diào)度就變得復(fù)雜。一般來說,高效地優(yōu)化含有分支結(jié)構(gòu)的循環(huán)體需要在多個(gè)基本塊間移動(dòng)指令,即需要全局指令調(diào)度。
第一節(jié)指令級(jí)高度并行處理機(jī)的基本概念
但循環(huán)展開和指令調(diào)度時(shí)要注意以下幾個(gè)方面。(1)保證正確性。在循環(huán)展開和調(diào)度過程中尤其要注意循環(huán)控制和操作數(shù)偏移量的修改的正確性。(2)注意有效性。只有找到不同循環(huán)體之間的無關(guān)性,才能夠有效地使用循環(huán)展開。(3)使用不同的寄存器。如果使用相同的寄存器,或者使用較少數(shù)量的寄存器,就可能導(dǎo)致新的沖突。(4)刪除多余的測(cè)試指令和分支指令,并對(duì)循環(huán)結(jié)束代碼和新的循環(huán)代碼進(jìn)行相應(yīng)的修正。(5)注意對(duì)存儲(chǔ)器數(shù)據(jù)的相關(guān)性分析。例如,對(duì)于load指令和store指令,如果它們?cè)诓煌难h(huán)迭代中訪問的存儲(chǔ)器地址是不同的,它們就是相互獨(dú)立的,可以相互對(duì)調(diào)。(6)注意新的相關(guān)性。由于原循環(huán)不同次的迭代在展開后都到了同一次循環(huán)體中,因此可能帶來新的相關(guān)性。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
一、動(dòng)態(tài)指令調(diào)度的基本思想
1.動(dòng)態(tài)指令調(diào)度的基本思想
DIVR4,R0,R2ADDR1,R4,R3SUBR5,R7,R8DIVR4,R0,R2SUBR5,R7,R8ADDR1,R4,R3
如果采用亂序流動(dòng)方式流動(dòng),需要在譯碼階段進(jìn)行資源相關(guān)與數(shù)據(jù)相關(guān)檢查,并將譯碼后的指令放至指令隊(duì)列中。指令隊(duì)列中的指令一旦滿足執(zhí)行條件(例如沒有數(shù)據(jù)相關(guān)就讀操作數(shù)),就從隊(duì)列中發(fā)射,并行執(zhí)行多條指令。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
為了支持亂序執(zhí)行,應(yīng)將譯碼段進(jìn)一步細(xì)分:譯碼、資源相關(guān)檢測(cè)、讀操作數(shù)(含數(shù)據(jù)相關(guān)檢測(cè)),譯碼與資源相關(guān)檢測(cè)是按序進(jìn)行的,讀操作數(shù)就可能停頓和相互垮越,到執(zhí)行段時(shí)就可能是亂序的。由此動(dòng)態(tài)調(diào)度有效地支持多條指令并行執(zhí)行,但要實(shí)現(xiàn)指令并行執(zhí)行,還要求有多個(gè)功能部件、或功能部件流水化、或兩者兼有之。在此假設(shè)處理器采用多個(gè)功能部件。執(zhí)行階段緊跟在讀操作數(shù)之后,與基本流水線的結(jié)構(gòu)以及工作過程相同。顯然,同一指令在不同條件下執(zhí)行,需要的時(shí)鐘周期可能不同,因而要明確一條指令何時(shí)開始執(zhí)行,何時(shí)執(zhí)行結(jié)束,兩者之間所需要的時(shí)間就是指令的執(zhí)行時(shí)間。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
2.
動(dòng)態(tài)指令調(diào)度的優(yōu)點(diǎn)典型的動(dòng)態(tài)調(diào)度方法有Tomasulo令牌法和CDC記分牌法兩種,但它們實(shí)現(xiàn)的基本原理是一致的指令亂序流動(dòng)方式帶來的最大問題是異常處理比較復(fù)雜。通常動(dòng)態(tài)指令調(diào)度處理機(jī)為保持正確的異常行為采用的方法是:對(duì)于一條會(huì)產(chǎn)生異常的指令,只有當(dāng)處理機(jī)確切的地知道該指令執(zhí)行時(shí),才允許它產(chǎn)生異常。根據(jù)執(zhí)行異常指令的處理機(jī)狀態(tài)是否與程序順序執(zhí)行指令的處理機(jī)狀態(tài)相同,指令異??煞譃椴痪_異常和精確異常。不精確異常是指當(dāng)執(zhí)行指令i導(dǎo)致發(fā)生異常時(shí),處理機(jī)狀態(tài)與程序順序執(zhí)行指令的不同;反之則是精確異常。目前在動(dòng)態(tài)調(diào)度的處理器中,異常處理是不精確的,因?yàn)楹竺娴闹噶羁赡茉趯?dǎo)致異常的指令前面流出執(zhí)行,或者在導(dǎo)致異常的指令之前結(jié)束,所以難以確定和恢復(fù)現(xiàn)場(chǎng)。因此,動(dòng)態(tài)指令調(diào)度的基本思想在沒有資源沖突時(shí),盡可能早地執(zhí)行沒有數(shù)據(jù)相關(guān)的指令,其目標(biāo)是實(shí)現(xiàn)每個(gè)時(shí)鐘周期執(zhí)行一條指令。如果某條指令被暫停,而后面的指令與流水線中正在執(zhí)行的或被暫停的指令都不相關(guān),這些指令就可以垮越它們,繼續(xù)流出和執(zhí)行下去,以使多條指令同時(shí)處于執(zhí)行階段。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
二、記分牌指令調(diào)度方法
1.記分牌法的基本思想
為了控制數(shù)據(jù)寄存器與多個(gè)功能部件之間的數(shù)據(jù)傳送,CDC記分牌法設(shè)置了一個(gè)記分牌集中控制電路,全盤負(fù)責(zé)指令的發(fā)射、執(zhí)行以及相關(guān)檢測(cè),記分牌通過與功能部件的通信來控制指令的逐步執(zhí)行。由于功能部件與寄存器之間只有很有限的幾條總線連接,從而可能發(fā)生資源沖突。記分牌為保證允許同時(shí)執(zhí)行的功能部件的個(gè)數(shù)不超過用總線的條數(shù),則把功能部件分成4組,然后給每一組配備一套總線(兩條入一條出)。在每個(gè)時(shí)鐘周期,每一組只有一個(gè)設(shè)備可以進(jìn)行讀操作或?qū)懡Y(jié)果。具有記分牌的MIPS處理器基本結(jié)構(gòu)如圖6-1所示。記分牌根據(jù)記錄的信息,判斷什么時(shí)候指令可以讀操作數(shù)并開始執(zhí)行。只有所有的操作數(shù)全部準(zhǔn)備好,才算指令的操作數(shù)準(zhǔn)備就緒,即記分牌只有所有的寄存器全準(zhǔn)備好才可以讀。如果記分牌判斷某條指令不能立即執(zhí)行,它就檢測(cè)硬件的變化從而決定何時(shí)能夠執(zhí)行。記分牌還控制指令寫目標(biāo)寄存器的時(shí)機(jī)。另外,記分牌根據(jù)自己的數(shù)據(jù)結(jié)構(gòu),通過與功能部件的通信來控制指令處理每一步。這時(shí)存在一個(gè)問題,就是操作數(shù)和結(jié)果到寄存器文件的總線是有限的,可能會(huì)導(dǎo)致結(jié)構(gòu)阻塞,記分牌必須保證進(jìn)入流水線下述第2步和第4步的功能部件的總數(shù)不能超過可用總線的數(shù)目。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
2.指令執(zhí)行階段的劃分
通常CDC記分牌法的流水線中指令執(zhí)行階段的過程分為四個(gè)步驟,即:(1)指令發(fā)射(Issue,記為IS):如果指令所需的功能部件空閑,并且其他正在執(zhí)行的指令使用的目的寄存器與該指令的不同,記分牌就向相應(yīng)的功能部件發(fā)射該指令,并改變記分牌內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。顯然,指令發(fā)射段動(dòng)態(tài)地解決了資源相關(guān)和寫寫相關(guān)。(2)讀操作(ReadOperands,記為RO):如果前面已發(fā)射的正在運(yùn)行的指令不對(duì)本指令的源操作數(shù)寄存器進(jìn)行操作,或者一個(gè)正在工作的功能部件已經(jīng)完成了對(duì)該寄存器的寫操作,那么此操作數(shù)有效。當(dāng)操作數(shù)有效后,記分牌告訴功能部件讀操作數(shù)。顯然,讀操作段動(dòng)態(tài)地解決了先寫后讀相關(guān)。(3)執(zhí)行(Execution,記為EX):取到操作數(shù)后就開始執(zhí)行指令;當(dāng)產(chǎn)生結(jié)果后,通知記分牌已經(jīng)完成執(zhí)行。(4)寫結(jié)果(WriteResult,記為WR):指令執(zhí)行完畢后,如果目標(biāo)寄存器空閑,就將結(jié)果寫入到目標(biāo)寄存器中,然后釋放本指令使用的所有資源。當(dāng)然計(jì)分牌將檢測(cè)先讀后寫相關(guān),若先讀后寫不存在或消失后,記分牌將通知功能部件將結(jié)果存到結(jié)果寄存器。否則記分牌將暫停此指令寫結(jié)果到目的寄存器,直到相關(guān)消失。特別地出現(xiàn)以下的情況就不允許指令寫結(jié)果:一是前面的某條指令(按順序發(fā)射)沒有讀取操作數(shù);二是其中某個(gè)操作數(shù)寄存器與結(jié)束的指令的目的寄存器相同。顯然,寫結(jié)果段動(dòng)態(tài)地解決了先讀后寫相關(guān)。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
3.指令調(diào)度實(shí)現(xiàn)需要記錄的信息
每條指令均經(jīng)過記分牌集中控制電路,并記錄相關(guān)的信息,記錄的信息分為三部分:(1)指令狀態(tài)表。表示正在執(zhí)行的各條指令處于四段中的哪一段。(2)功能部件狀態(tài)表。指示出功能部件的狀態(tài),每個(gè)功能部件在狀態(tài)表中有一項(xiàng),每一項(xiàng)有9個(gè)域。Busy:指示功能部件是否在工作;Op:功能部件當(dāng)前執(zhí)行或?qū)⒁獔?zhí)行的操作;Fi:目的寄存器編號(hào);Fj、Fk:源寄存器編號(hào);Qj、Qk:向Fj、Fk中寫結(jié)果的功能部件;Rj、Rk:指示Fj、Fk中的操作數(shù)就緒并且還沒有被取走使用標(biāo)志。(3)結(jié)果寄存器狀態(tài)表。每個(gè)寄存器在該表中有一項(xiàng),標(biāo)示每個(gè)寄存器如果是當(dāng)前運(yùn)行的指令目的寄存器,它由哪個(gè)功能部件寫結(jié)果。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
MIPS處理器記分牌執(zhí)行下列代碼所要維護(hù)的數(shù)據(jù)結(jié)構(gòu)如表6-1、6-2、6-3所示。其中Integer表示整數(shù)部件,Mult1和Mult2表示乘法部件,Add表示加法部件,Divide表示除法部件。
L.D F6,(R2+34)
L.D F2,(R3+45)
MULT.D F0,F(xiàn)2,F(xiàn)4SUB.D F8,F(xiàn)6,F(xiàn)2DIV.D F10,F(xiàn)0,F(xiàn)6ADD.D F6,F(xiàn)8,F(xiàn)2
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
指令指令發(fā)射讀操作數(shù)執(zhí)行寫結(jié)果L.DF6,(R2+34)√√√√L.DF2,(R3+45)√√√MULT.D F0,F(xiàn)2,F(xiàn)4√SUB.D F8,F(xiàn)6,F(xiàn)2√DIV.D F10,F(xiàn)0,F(xiàn)6√ADD.D F6,F(xiàn)8,F(xiàn)2
在指令狀態(tài)表中,第一條L.D指令已經(jīng)完全執(zhí)行完,其結(jié)果已經(jīng)寫入了F6;第二條L.D指令也已經(jīng)執(zhí)行完,但是結(jié)果還沒有寫入目的寄存器F2;由于第二條L.D指令與MULT.D和SUB.D指令之間存在關(guān)于寄存器F2的先寫后讀(RAW)相關(guān),因此MULT.D和SUB.D在發(fā)射段等待,不能進(jìn)入流水線的讀操作數(shù)段。同樣,MULT.D與DIV.D之間存在關(guān)于寄存器F0的先寫后讀相關(guān),因此,DIV.D也只能在發(fā)射段等待。指令A(yù)DD.D與指令SUB.D之間存在關(guān)于加法器的結(jié)構(gòu)相關(guān),因此后面的ADD.D連發(fā)射都不能做,必須等到前面SUB.D指令全部執(zhí)行完畢、釋放加法器后才能夠發(fā)射。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
部件名稱BusyOpFiFjFkQjQkRjRkIntegeryesL.DF2R3noMult1yesMULT.DF0F2F4IntegernoyesMult2noAddyesSUB.DF8F6F2IntegeryesnoDivideyesADD.DF10F0F6Mult1noyes
在功能部件狀態(tài)表中的第一行各字段。整數(shù)(integer)部件的Busy字段為“yes”,表示部件正忙。從其Op字段可知它在執(zhí)行L.D指令,目的寄存器字段Fi中記錄的是F2。相應(yīng)地,在結(jié)果寄存器狀態(tài)表的F2字段中記錄的是“Integer”部件。對(duì)于存儲(chǔ)器訪問類指令來說,第一源操作數(shù)寄存器字段Fi中記錄的應(yīng)該是訪存地址寄存器(該例就是R3)。它的Rj字段為no,表中R3的數(shù)據(jù)已經(jīng)被讀取過。在功能部件狀態(tài)表中的第二行各字段。在乘法1(Mult1)部件的Busy字段也是yse,表示正忙。Op字段記錄的是MULT.D指令,其目的寄存器字段Fi的內(nèi)容為F0。相應(yīng)地,在結(jié)果寄存器狀態(tài)表中的F0字段中記錄的是“Mult1”,表示F0將存放Mult1部件的運(yùn)算結(jié)果。在第一源操作數(shù)寄存器字段Fj中記錄的是F2,它的Qj字段非空,為“Integer”,表示F2的數(shù)據(jù)將來自Integer部件的操作結(jié)果,它的Rj字段為no,表示F2的數(shù)據(jù)還沒有就緒,這個(gè)過程可以用來判斷并解決數(shù)據(jù)的寫后讀相關(guān);第二源操作數(shù)寄存器字段Fk中記錄的是F4,Qk字段為空,表示F4不依賴于當(dāng)前工作的任何部件,Rk字段為yes,表示F4的數(shù)據(jù)已經(jīng)就緒。乘法2(Mult2)部件的Busy字段是no,表示該功能部件當(dāng)前空閑。
第二節(jié)硬件動(dòng)態(tài)指令調(diào)度--硬件方法
結(jié)果寄存器F0F2F4F6F8F10…F30部件名稱Mult1IntegerAddDivide
結(jié)果寄存器狀態(tài)表中的字段與每個(gè)寄存器一一對(duì)應(yīng),它記錄了當(dāng)前機(jī)器狀態(tài)下將把結(jié)果寫入該寄存器的功能部件的名稱。當(dāng)前寫F0的為“Mult1”部件,寫F2的為“Integer”部件,寫F8的為“Add”部件,寫F10的為“Divide”部件。字段為空表示空閑,即對(duì)應(yīng)的寄存器沒有被任何當(dāng)前正在工作的功能部件作為目的寄存器使用
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR1234567時(shí)鐘周期指令一、
超標(biāo)量處理機(jī)
1.單發(fā)射指令流水線的結(jié)構(gòu)指令級(jí)并行度ILP=1
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)FA1FA2FA3MD1MD2MD3ALLSIDIFWR取指令指令譯碼執(zhí)行指令保存結(jié)果來自指令Cache取數(shù)存數(shù)部件定點(diǎn)算術(shù)邏輯部件乘除法部件浮點(diǎn)加法部件寄存器或?qū)憯?shù)棧
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)
2.超標(biāo)量處理機(jī)的基本結(jié)構(gòu)
指令部件設(shè)置了多個(gè)單功能操作部件,若各功能段的執(zhí)行時(shí)間相等,那么執(zhí)行指令部件中有四分之三的功能段處于空閑狀態(tài),效率沒有充分發(fā)揮。FA1FA2FA3MD1MD2MD3ALLSID1IF1WR1WR2ID2ID3IF2IF3取指令指令譯碼執(zhí)行指令保存結(jié)果取數(shù)存數(shù)部件定點(diǎn)算術(shù)邏輯部件乘除法部件浮點(diǎn)加法部件寄存器或?qū)憯?shù)棧來自指令Cache先行指令窗口
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)
在超標(biāo)量處理機(jī)中,不僅需要設(shè)置多個(gè)取指令部件和指令譯碼部件,而且要判斷指令之間有無功能部件沖突,有無數(shù)據(jù)相關(guān)和由于條件轉(zhuǎn)移引起的控制相關(guān)等。另外,還要通過一套交叉開關(guān)把幾個(gè)指令譯碼器的輸出送到多個(gè)操作部件中去執(zhí)行。而當(dāng)出現(xiàn)數(shù)據(jù)相關(guān)、控制相關(guān)或功能部件沖突時(shí),本次沒有能夠發(fā)射出去的指令必須保存下來,以便在下一個(gè)時(shí)鐘周期再發(fā)射。為了提高功能部件的利用率,通常要設(shè)置一個(gè)先行指令窗口,在這個(gè)先行指令窗口中保存暫時(shí)還不能送到操作部件中去執(zhí)行的指令。因此,超標(biāo)量處理機(jī)的控制邏輯是比較復(fù)雜的。先行指令窗口的作用與先行控制技術(shù)中的先行指令緩沖棧相似。先行指令窗口可使從指令Cache中讀入更多的指令,通過硬件來判斷其中哪些指令可以先發(fā)射到操作部件中去執(zhí)行,可把沒有功能部件沖突、沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令超越它前面的指令先發(fā)射到操作部件中去。先行指令窗口的大小對(duì)超標(biāo)量處理機(jī)的性能影響很大,窗口太小,調(diào)度的效果不好;窗口太大,調(diào)度所需的硬件太復(fù)雜。先行指令窗口的大小為2~8條指令。超標(biāo)量處理機(jī)的指令級(jí)并行度ILP的期望值就為m。但是,由于相關(guān)和資源沖突等原因,實(shí)現(xiàn)的ILP為:1<ILP<m
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)2.超標(biāo)量處理機(jī)及其時(shí)空?qǐng)D
超標(biāo)量處理機(jī)是指在單發(fā)射處理機(jī)的基礎(chǔ)上,采用資源重復(fù)的技術(shù)途徑,設(shè)置多條指令流水線,通過空間并行性來提高指令的平均執(zhí)行速度,能同時(shí)發(fā)射多條指令的處理機(jī)。超標(biāo)量處理機(jī)也稱為多發(fā)射處理機(jī)。
指令123456時(shí)鐘周期IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)3.超標(biāo)量處理機(jī)的性能
T(1)=(k+N-1)ΔtT(m)=(k+(N-m)/m)ΔtS(m)max=m
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)二、超流水線處理機(jī)
1.超流水線處理機(jī)及其時(shí)空?qǐng)D
超流水線處理機(jī)是指在單發(fā)射處理機(jī)的基礎(chǔ)上,采用時(shí)間重疊的技術(shù)途徑,將指令流水線分解為大于等于8段及其以上,通過時(shí)間并行性來提高指令的平均執(zhí)行速度,能在1個(gè)時(shí)鐘周期內(nèi)分時(shí)發(fā)射多條指令的流水線處理機(jī)。超流水線處理機(jī)也是一種多發(fā)射處理機(jī),它只要增加少量硬件,通過各部分硬件的充分重疊工作來提高處理機(jī)的性能。IFIDEXWBIFIDEXWB
IFIDEXWB
IFIDEXWBIFIDEXWBIFIDEXWBIFIDEXWB123456時(shí)鐘指令
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)2.超流水線處理機(jī)的性能
T(n)=(k+(N–1)/n)ΔtS(n)max=n3.MIPSR4000微處理器流水線操作
指令Cache指令譯碼讀寄存器堆ALU數(shù)據(jù)Cache標(biāo)志檢驗(yàn)寄存器堆IFISRFEXDFDSTCWBIF:取第一條指令;IS:取第二條指令;RF:讀寄存器堆,指令譯碼;EX:執(zhí)行指令;DF:取第一個(gè)數(shù)據(jù);DS:取第二個(gè)數(shù)據(jù);TC:數(shù)據(jù)標(biāo)志檢驗(yàn);WB:寫回結(jié)果
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)IFISRFEXDFDSTCWB當(dāng)前CPU周期流水線周期基本時(shí)鐘周期IFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWB
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機(jī)三、超標(biāo)量超流水線處理機(jī)
1.超標(biāo)量超流水線處理機(jī)及其時(shí)空?qǐng)D
超標(biāo)量超流水線處理機(jī)是指把超標(biāo)量技術(shù)與超流水線技術(shù)結(jié)合在一起,采用時(shí)間重疊和資源重復(fù)的技術(shù)途徑,通過時(shí)間和空間并行性來進(jìn)一步提高指令的平均執(zhí)行速度。超標(biāo)量超流水線處理機(jī)也是一種多發(fā)射處理機(jī)。IFIDEXWRIFIDEXWRIFIDEXWR時(shí)鐘周期123456IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR指令
2.超標(biāo)量超流水線處理機(jī)的性能
T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 投標(biāo)委托書(15篇)
- 建筑工程施工項(xiàng)目承包合同書
- 細(xì)胞-乳腺癌課件
- 馬來酸麥角新堿聯(lián)合卡前列素氨丁三醇治療高危產(chǎn)后出血傾向二次剖宮產(chǎn)產(chǎn)婦的效果
- 中國企業(yè)智能化成熟度報(bào)告(2024) -企業(yè)智能化轉(zhuǎn)型進(jìn)入2.0時(shí)代
- 廣東省中山市高考語文模擬試題(含答案)
- 2025年養(yǎng)老行業(yè)前景與未來發(fā)展趨勢(shì)預(yù)測(cè)
- 2024年食品行業(yè)食品安全管理體系認(rèn)證合同
- 餐廳供貨協(xié)議合同協(xié)議范本模板
- 汽車修理廠承包合同模板
- 輸變電工程監(jiān)督檢查標(biāo)準(zhǔn)化清單-質(zhì)監(jiān)站檢查
- 【超星學(xué)習(xí)通】馬克思主義基本原理(南開大學(xué))爾雅章節(jié)測(cè)試網(wǎng)課答案
- 2024年中國工業(yè)涂料行業(yè)發(fā)展現(xiàn)狀、市場(chǎng)前景、投資方向分析報(bào)告(智研咨詢發(fā)布)
- 化工企業(yè)重大事故隱患判定標(biāo)準(zhǔn)培訓(xùn)考試卷(后附答案)
- 工傷賠償授權(quán)委托書范例
- 食堂餐具炊具供貨服務(wù)方案
- 唯物史觀課件
- 冀教版五年級(jí)上冊(cè)英語全冊(cè)單元測(cè)試卷(含期中期末試卷及聽力音頻)
- 信息資源管理(馬費(fèi)成-第三版)復(fù)習(xí)重點(diǎn)
- 郵輪外部市場(chǎng)營銷類型
- GB/T 42460-2023信息安全技術(shù)個(gè)人信息去標(biāo)識(shí)化效果評(píng)估指南
評(píng)論
0/150
提交評(píng)論