版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
指令級高度并行技術(shù)是指細粒度并行性,包含時間并行技術(shù)和空間并行技術(shù)。本章在介紹指令級高度并行處理的基本概念、實現(xiàn)的技術(shù)方法和指令級高度并行處理機的分類的基礎上,討論硬件動態(tài)指令調(diào)度技術(shù),闡述超標量與超流水線處理機、超長指令字處理機和向量處理機等的基本結(jié)構(gòu)、工作機理和性能特點。
第一節(jié)指令級高度并行處理機的基本概念第二節(jié)
硬件動態(tài)指令調(diào)度--硬件方法第三節(jié)基于硬件技術(shù)的多發(fā)射處理機第四節(jié)基于軟件技術(shù)的多發(fā)射處理機
第一節(jié)指令級高度并行處理機的基本概念1.實現(xiàn)指令級并行的技術(shù)方法時間重疊----超流水線資源重復----超標量資源重復和指令格式優(yōu)化組合----超長指令字超流水線技術(shù)和超標量技術(shù)結(jié)合2.指令級并行度
ILP=程序執(zhí)行的指令數(shù)/程序執(zhí)行的周期數(shù)二、指令級并行的實現(xiàn)方法及其衡量指標四、指令調(diào)度及其基本方法
1.什么是指令調(diào)度
指令調(diào)度是指通過指令重組來提高指令級的并行度ILP,找出不相關(guān)的指令序列,使它們盡可能地并發(fā)執(zhí)行。通過指令調(diào)度可提高處理機的并行度。
2.指令調(diào)度的基本方法
指令調(diào)度的基本方法有靜態(tài)調(diào)度和動態(tài)調(diào)度。靜態(tài)調(diào)度(staticscheduling)是由優(yōu)化編譯程序來完成對指令序列的重排,拉開具有數(shù)據(jù)相關(guān)的有關(guān)指令間的距離,以減少可能產(chǎn)生的流水線的停頓。動態(tài)調(diào)度是指能在保持數(shù)據(jù)流和異常行為的情況下,通過硬件對指令順序進行重排,減少數(shù)據(jù)相關(guān)導致的流水線的停頓,從而提高流水線的利用率。
第一節(jié)指令級高度并行處理機的基本概念
五、靜態(tài)指令調(diào)度----軟件方法
1.靜態(tài)指令調(diào)度的方法靜態(tài)指令調(diào)度是通過優(yōu)化編譯程序來完成指令重組,優(yōu)化編譯程序完成指令調(diào)度的能力受限于兩個特性:一是程序固有的指令并行,二是流水線功能部件的執(zhí)行延遲(流水線功能段段數(shù))。靜態(tài)指令調(diào)度并不會真正消除指令間的相關(guān),而是通過重新安排指令的流出順序,使指令間的相關(guān)盡可能少地引起流水線的空轉(zhuǎn),減少整個指令序列在流水線上的執(zhí)行時間。靜態(tài)指令調(diào)度可分為局部指令調(diào)度和全局指令調(diào)度。局部指令調(diào)度是指在順序結(jié)構(gòu)程序段(基本塊)內(nèi)進行指令重組,而全局指令調(diào)度則是指在含有分支結(jié)構(gòu)程序段內(nèi)實現(xiàn)多個基本塊間移動指令。全局指令調(diào)度主要有兩種技術(shù):蹤跡調(diào)度和超塊調(diào)度。
第一節(jié)指令級高度并行處理機的基本概念2.局部指令調(diào)度
例如對于源代碼:
for(i=1000;i>0;i――)x[i]=x[i]+s;轉(zhuǎn)換成匯編語言為:Loop:L.DF0,(R1)//取一個向量元素放入F0,延遲時鐘數(shù)為2ADD.DF4,F(xiàn)0,F(xiàn)2//加上在F2中的標量,延遲時鐘數(shù)為3S.DF4,(R1)//存結(jié)果,延遲時鐘數(shù)為1DADDIUR1,R1,#-8 //將指針減8,延遲時鐘數(shù)為2BNER1,R2,Loop //若R1不等于R2,延遲時鐘數(shù)為2
其中:整數(shù)寄存器R1用于指向向量中的當前元素,其初值指向第一個元素,(R2)指向最后一個元素,浮點寄存器F2用于保存常數(shù)。
第一節(jié)指令級高度并行處理機的基本概念
第一節(jié)指令級高度并行處理機的基本概念在不進行指令調(diào)度的情況下,程序的實際執(zhí)行過程如下:
Loop:L.DF0,(R1) 1(時鐘序號,下同)(空轉(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
可以看出,每完成一個元素的操作需要10個時鐘周期,其中有5個是空轉(zhuǎn)周期。在用編譯器對上述程序進行指令調(diào)度以后,程序的執(zhí)行如下:
第一節(jié)指令級高度并行處理機的基本概念Loop:L.DF0,(R1) 1(時鐘序號,下同)
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指令領先到了分支指令的延遲槽中。由于修改指針的DADDIU指令被調(diào)度到S.D指令之前,提前對指針進行了減8的操作,所以要對S.D指令中的偏移量進行修正,即把“(R1)”改為“(R1+8)”。經(jīng)過指令調(diào)度后,一個元素的操作時間從10個時鐘周期減少到了6個時鐘周期,其中5個周期是有指令執(zhí)行的,只剩下一個空轉(zhuǎn)周期。
第一節(jié)指令級高度并行處理機的基本概念
當然,編譯指令調(diào)度并不會真正消除指令間的相關(guān),而是通過重新安排指令的流出順序,使得指令間的相關(guān)盡可能少地引起流水線空轉(zhuǎn),從而減少整個指令序列在流水線上的執(zhí)行時間。特別地基本指令調(diào)度方法,指令調(diào)度不能跨越分支指令,舉例中S.D指令被調(diào)度到BNE指令的分支延遲槽中,不屬于跨越分支指令的情況。通常指令調(diào)度要求在基本塊內(nèi)進行,這種指令調(diào)度稱為局部指令調(diào)度或基本指令調(diào)度。它在指令調(diào)度過程中往往要加入空轉(zhuǎn)周期,使得整個執(zhí)行過程中的有效操作的比率不高,對流水線效率的提高作用不大。因此,提出了不受基本塊限制的靜態(tài)指令調(diào)度方法。
第一節(jié)指令級高度并行處理機的基本概念3.循環(huán)展開
上例中,雖然完成對一個元素的操作時間從10個時鐘周期減少到6個時鐘周期,但其中只有L.D、ADD.D和S.D這3條指令是需要的有效操作,占用3個時鐘周期,而DADDIU、空轉(zhuǎn)和BEN這3個時鐘周期都是為了控制循環(huán)和解決數(shù)據(jù)相關(guān)等待而附加的,因此整個執(zhí)行過程中有效操作的比率并不高。這是因為每個循環(huán)迭代中只有5條指令,進行指令調(diào)度的余地很小,必須想辦法增加每個循環(huán)迭代中的指令數(shù),循環(huán)展開(LoopUnrolling)就是解決這一問題的有效方法之一。循環(huán)的不同迭代之間存在的并行性是增加指令間并行性最簡單和最常用的方法。所謂循環(huán)展開(LoopUnrolling)就是指把循環(huán)體的代碼復制多次并按順序排放,然后相應調(diào)整循環(huán)的結(jié)束條件。通過循環(huán)展開,多個循環(huán)迭代的代碼可以合到一起調(diào)度,給編譯器進行指令調(diào)度帶來了更大的空間,而且還能夠消除中間的分支指令和循環(huán)控制指令引起的開銷。
第一節(jié)指令級高度并行處理機的基本概念
對于上例,由于循環(huán)的不同迭代之間是不存在相關(guān)的,所以多次迭代可以并行執(zhí)行。假定R1的初值為32的倍數(shù),即循環(huán)次數(shù)為4的倍數(shù),將其循環(huán)展開3次得到4個循環(huán)體。而且由于循環(huán)結(jié)束后沒有剩余尚未執(zhí)行的操作,因此無須在循環(huán)體后面增加補償代碼。為消除冗余的指令,并且不要重復使用寄存器,對寄存器作如下分配:F0、F4已經(jīng)用于展開后的第1個循環(huán)體,F(xiàn)2用于保存常數(shù);把F6和F8用于展開后的第2個循環(huán)體,F(xiàn)10和F12用于第3個循環(huán)體,
F14和F16用于第4個循環(huán)體。展開后沒有調(diào)度的代碼如下:
第一節(jié)指令級高度并行處理機的基本概念Loop:L.DF0,(R1)1(時鐘序號,下同)空轉(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é)指令級高度并行處理機的基本概念
這里把展開后的前3個循環(huán)體中的DADDIU指令刪除了,并對L.D指令中的偏移量和最后留下的DADDIU指令中的立即數(shù)進行了相應修正。該循環(huán)有4個循環(huán)體共需要28個時鐘周期,完成4個元素的操作,平均每個元素使用28/4=7個時鐘周期。與源代碼的每個元素需要10個時鐘周期相比較,節(jié)省了不少的時間。這主要是從減少循環(huán)控制的開銷中獲得的。但是在展開后的循環(huán)體中,實際指令只有14條,其他14個周期都是空轉(zhuǎn),可見效率并不高。對指令序列進行優(yōu)化調(diào)度,可以減少空轉(zhuǎn)周期。
第一節(jié)指令級高度并行處理機的基本概念Loop:L.D F0,(R1) 1(時鐘序號,下同)
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
這個循環(huán)由于沒有數(shù)據(jù)相關(guān)引起的空轉(zhuǎn)等待,整個循環(huán)僅僅使用了14個時鐘周期,平均每個元素使用14/4=3.5個時鐘周期。因此,通過循環(huán)展開、寄存器重命名和指令調(diào)度,可以有效地開發(fā)出指令級并行。當循環(huán)體為簡單的順序結(jié)構(gòu)時,通過循環(huán)展開和基本指令調(diào)度來開發(fā)指令級并行,優(yōu)化效果非常明顯,因為它們可以將多個循環(huán)迭代合并在一起,構(gòu)成一個更大的基本塊,不僅加大了指令調(diào)度的空間,而且減少了循環(huán)控制指令。但是,如果循環(huán)體不是順序結(jié)構(gòu)而是分支結(jié)構(gòu)時,指令調(diào)度就變得復雜。一般來說,高效地優(yōu)化含有分支結(jié)構(gòu)的循環(huán)體需要在多個基本塊間移動指令,即需要全局指令調(diào)度。
第一節(jié)指令級高度并行處理機的基本概念
但循環(huán)展開和指令調(diào)度時要注意以下幾個方面。(1)保證正確性。在循環(huán)展開和調(diào)度過程中尤其要注意循環(huán)控制和操作數(shù)偏移量的修改的正確性。(2)注意有效性。只有找到不同循環(huán)體之間的無關(guān)性,才能夠有效地使用循環(huán)展開。(3)使用不同的寄存器。如果使用相同的寄存器,或者使用較少數(shù)量的寄存器,就可能導致新的沖突。(4)刪除多余的測試指令和分支指令,并對循環(huán)結(jié)束代碼和新的循環(huán)代碼進行相應的修正。(5)注意對存儲器數(shù)據(jù)的相關(guān)性分析。例如,對于load指令和store指令,如果它們在不同的循環(huán)迭代中訪問的存儲器地址是不同的,它們就是相互獨立的,可以相互對調(diào)。(6)注意新的相關(guān)性。由于原循環(huán)不同次的迭代在展開后都到了同一次循環(huán)體中,因此可能帶來新的相關(guān)性。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
一、動態(tài)指令調(diào)度的基本思想
1.動態(tài)指令調(diào)度的基本思想
DIVR4,R0,R2ADDR1,R4,R3SUBR5,R7,R8DIVR4,R0,R2SUBR5,R7,R8ADDR1,R4,R3
如果采用亂序流動方式流動,需要在譯碼階段進行資源相關(guān)與數(shù)據(jù)相關(guān)檢查,并將譯碼后的指令放至指令隊列中。指令隊列中的指令一旦滿足執(zhí)行條件(例如沒有數(shù)據(jù)相關(guān)就讀操作數(shù)),就從隊列中發(fā)射,并行執(zhí)行多條指令。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
為了支持亂序執(zhí)行,應將譯碼段進一步細分:譯碼、資源相關(guān)檢測、讀操作數(shù)(含數(shù)據(jù)相關(guān)檢測),譯碼與資源相關(guān)檢測是按序進行的,讀操作數(shù)就可能停頓和相互垮越,到執(zhí)行段時就可能是亂序的。由此動態(tài)調(diào)度有效地支持多條指令并行執(zhí)行,但要實現(xiàn)指令并行執(zhí)行,還要求有多個功能部件、或功能部件流水化、或兩者兼有之。在此假設處理器采用多個功能部件。執(zhí)行階段緊跟在讀操作數(shù)之后,與基本流水線的結(jié)構(gòu)以及工作過程相同。顯然,同一指令在不同條件下執(zhí)行,需要的時鐘周期可能不同,因而要明確一條指令何時開始執(zhí)行,何時執(zhí)行結(jié)束,兩者之間所需要的時間就是指令的執(zhí)行時間。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
2.
動態(tài)指令調(diào)度的優(yōu)點典型的動態(tài)調(diào)度方法有Tomasulo令牌法和CDC記分牌法兩種,但它們實現(xiàn)的基本原理是一致的指令亂序流動方式帶來的最大問題是異常處理比較復雜。通常動態(tài)指令調(diào)度處理機為保持正確的異常行為采用的方法是:對于一條會產(chǎn)生異常的指令,只有當處理機確切的地知道該指令執(zhí)行時,才允許它產(chǎn)生異常。根據(jù)執(zhí)行異常指令的處理機狀態(tài)是否與程序順序執(zhí)行指令的處理機狀態(tài)相同,指令異??煞譃椴痪_異常和精確異常。不精確異常是指當執(zhí)行指令i導致發(fā)生異常時,處理機狀態(tài)與程序順序執(zhí)行指令的不同;反之則是精確異常。目前在動態(tài)調(diào)度的處理器中,異常處理是不精確的,因為后面的指令可能在導致異常的指令前面流出執(zhí)行,或者在導致異常的指令之前結(jié)束,所以難以確定和恢復現(xiàn)場。因此,動態(tài)指令調(diào)度的基本思想在沒有資源沖突時,盡可能早地執(zhí)行沒有數(shù)據(jù)相關(guān)的指令,其目標是實現(xiàn)每個時鐘周期執(zhí)行一條指令。如果某條指令被暫停,而后面的指令與流水線中正在執(zhí)行的或被暫停的指令都不相關(guān),這些指令就可以垮越它們,繼續(xù)流出和執(zhí)行下去,以使多條指令同時處于執(zhí)行階段。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
二、記分牌指令調(diào)度方法
1.記分牌法的基本思想
為了控制數(shù)據(jù)寄存器與多個功能部件之間的數(shù)據(jù)傳送,CDC記分牌法設置了一個記分牌集中控制電路,全盤負責指令的發(fā)射、執(zhí)行以及相關(guān)檢測,記分牌通過與功能部件的通信來控制指令的逐步執(zhí)行。由于功能部件與寄存器之間只有很有限的幾條總線連接,從而可能發(fā)生資源沖突。記分牌為保證允許同時執(zhí)行的功能部件的個數(shù)不超過用總線的條數(shù),則把功能部件分成4組,然后給每一組配備一套總線(兩條入一條出)。在每個時鐘周期,每一組只有一個設備可以進行讀操作或?qū)懡Y(jié)果。具有記分牌的MIPS處理器基本結(jié)構(gòu)如圖6-1所示。記分牌根據(jù)記錄的信息,判斷什么時候指令可以讀操作數(shù)并開始執(zhí)行。只有所有的操作數(shù)全部準備好,才算指令的操作數(shù)準備就緒,即記分牌只有所有的寄存器全準備好才可以讀。如果記分牌判斷某條指令不能立即執(zhí)行,它就檢測硬件的變化從而決定何時能夠執(zhí)行。記分牌還控制指令寫目標寄存器的時機。另外,記分牌根據(jù)自己的數(shù)據(jù)結(jié)構(gòu),通過與功能部件的通信來控制指令處理每一步。這時存在一個問題,就是操作數(shù)和結(jié)果到寄存器文件的總線是有限的,可能會導致結(jié)構(gòu)阻塞,記分牌必須保證進入流水線下述第2步和第4步的功能部件的總數(shù)不能超過可用總線的數(shù)目。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
2.指令執(zhí)行階段的劃分
通常CDC記分牌法的流水線中指令執(zhí)行階段的過程分為四個步驟,即:(1)指令發(fā)射(Issue,記為IS):如果指令所需的功能部件空閑,并且其他正在執(zhí)行的指令使用的目的寄存器與該指令的不同,記分牌就向相應的功能部件發(fā)射該指令,并改變記分牌內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。顯然,指令發(fā)射段動態(tài)地解決了資源相關(guān)和寫寫相關(guān)。(2)讀操作(ReadOperands,記為RO):如果前面已發(fā)射的正在運行的指令不對本指令的源操作數(shù)寄存器進行操作,或者一個正在工作的功能部件已經(jīng)完成了對該寄存器的寫操作,那么此操作數(shù)有效。當操作數(shù)有效后,記分牌告訴功能部件讀操作數(shù)。顯然,讀操作段動態(tài)地解決了先寫后讀相關(guān)。(3)執(zhí)行(Execution,記為EX):取到操作數(shù)后就開始執(zhí)行指令;當產(chǎn)生結(jié)果后,通知記分牌已經(jīng)完成執(zhí)行。(4)寫結(jié)果(WriteResult,記為WR):指令執(zhí)行完畢后,如果目標寄存器空閑,就將結(jié)果寫入到目標寄存器中,然后釋放本指令使用的所有資源。當然計分牌將檢測先讀后寫相關(guān),若先讀后寫不存在或消失后,記分牌將通知功能部件將結(jié)果存到結(jié)果寄存器。否則記分牌將暫停此指令寫結(jié)果到目的寄存器,直到相關(guān)消失。特別地出現(xiàn)以下的情況就不允許指令寫結(jié)果:一是前面的某條指令(按順序發(fā)射)沒有讀取操作數(shù);二是其中某個操作數(shù)寄存器與結(jié)束的指令的目的寄存器相同。顯然,寫結(jié)果段動態(tài)地解決了先讀后寫相關(guān)。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
3.指令調(diào)度實現(xiàn)需要記錄的信息
每條指令均經(jīng)過記分牌集中控制電路,并記錄相關(guān)的信息,記錄的信息分為三部分:(1)指令狀態(tài)表。表示正在執(zhí)行的各條指令處于四段中的哪一段。(2)功能部件狀態(tài)表。指示出功能部件的狀態(tài),每個功能部件在狀態(tài)表中有一項,每一項有9個域。Busy:指示功能部件是否在工作;Op:功能部件當前執(zhí)行或?qū)⒁獔?zhí)行的操作;Fi:目的寄存器編號;Fj、Fk:源寄存器編號;Qj、Qk:向Fj、Fk中寫結(jié)果的功能部件;Rj、Rk:指示Fj、Fk中的操作數(shù)就緒并且還沒有被取走使用標志。(3)結(jié)果寄存器狀態(tài)表。每個寄存器在該表中有一項,標示每個寄存器如果是當前運行的指令目的寄存器,它由哪個功能部件寫結(jié)果。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
MIPS處理器記分牌執(zhí)行下列代碼所要維護的數(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é)硬件動態(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ā)射段等待,不能進入流水線的讀操作數(shù)段。同樣,MULT.D與DIV.D之間存在關(guān)于寄存器F0的先寫后讀相關(guān),因此,DIV.D也只能在發(fā)射段等待。指令ADD.D與指令SUB.D之間存在關(guān)于加法器的結(jié)構(gòu)相關(guān),因此后面的ADD.D連發(fā)射都不能做,必須等到前面SUB.D指令全部執(zhí)行完畢、釋放加法器后才能夠發(fā)射。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
部件名稱BusyOpFiFjFkQjQkRjRkIntegeryesL.DF2R3noMult1yesMULT.DF0F2F4IntegernoyesMult2noAddyesSUB.DF8F6F2IntegeryesnoDivideyesADD.DF10F0F6Mult1noyes
在功能部件狀態(tài)表中的第一行各字段。整數(shù)(integer)部件的Busy字段為“yes”,表示部件正忙。從其Op字段可知它在執(zhí)行L.D指令,目的寄存器字段Fi中記錄的是F2。相應地,在結(jié)果寄存器狀態(tài)表的F2字段中記錄的是“Integer”部件。對于存儲器訪問類指令來說,第一源操作數(shù)寄存器字段Fi中記錄的應該是訪存地址寄存器(該例就是R3)。它的Rj字段為no,表中R3的數(shù)據(jù)已經(jīng)被讀取過。在功能部件狀態(tài)表中的第二行各字段。在乘法1(Mult1)部件的Busy字段也是yse,表示正忙。Op字段記錄的是MULT.D指令,其目的寄存器字段Fi的內(nèi)容為F0。相應地,在結(jié)果寄存器狀態(tài)表中的F0字段中記錄的是“Mult1”,表示F0將存放Mult1部件的運算結(jié)果。在第一源操作數(shù)寄存器字段Fj中記錄的是F2,它的Qj字段非空,為“Integer”,表示F2的數(shù)據(jù)將來自Integer部件的操作結(jié)果,它的Rj字段為no,表示F2的數(shù)據(jù)還沒有就緒,這個過程可以用來判斷并解決數(shù)據(jù)的寫后讀相關(guān);第二源操作數(shù)寄存器字段Fk中記錄的是F4,Qk字段為空,表示F4不依賴于當前工作的任何部件,Rk字段為yes,表示F4的數(shù)據(jù)已經(jīng)就緒。乘法2(Mult2)部件的Busy字段是no,表示該功能部件當前空閑。
第二節(jié)硬件動態(tài)指令調(diào)度--硬件方法
結(jié)果寄存器F0F2F4F6F8F10…F30部件名稱Mult1IntegerAddDivide
結(jié)果寄存器狀態(tài)表中的字段與每個寄存器一一對應,它記錄了當前機器狀態(tài)下將把結(jié)果寫入該寄存器的功能部件的名稱。當前寫F0的為“Mult1”部件,寫F2的為“Integer”部件,寫F8的為“Add”部件,寫F10的為“Divide”部件。字段為空表示空閑,即對應的寄存器沒有被任何當前正在工作的功能部件作為目的寄存器使用
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR1234567時鐘周期指令一、
超標量處理機
1.單發(fā)射指令流水線的結(jié)構(gòu)指令級并行度ILP=1
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機FA1FA2FA3MD1MD2MD3ALLSIDIFWR取指令指令譯碼執(zhí)行指令保存結(jié)果來自指令Cache取數(shù)存數(shù)部件定點算術(shù)邏輯部件乘除法部件浮點加法部件寄存器或?qū)憯?shù)棧
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機
2.超標量處理機的基本結(jié)構(gòu)
指令部件設置了多個單功能操作部件,若各功能段的執(zhí)行時間相等,那么執(zhí)行指令部件中有四分之三的功能段處于空閑狀態(tài),效率沒有充分發(fā)揮。FA1FA2FA3MD1MD2MD3ALLSID1IF1WR1WR2ID2ID3IF2IF3取指令指令譯碼執(zhí)行指令保存結(jié)果取數(shù)存數(shù)部件定點算術(shù)邏輯部件乘除法部件浮點加法部件寄存器或?qū)憯?shù)棧來自指令Cache先行指令窗口
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機
在超標量處理機中,不僅需要設置多個取指令部件和指令譯碼部件,而且要判斷指令之間有無功能部件沖突,有無數(shù)據(jù)相關(guān)和由于條件轉(zhuǎn)移引起的控制相關(guān)等。另外,還要通過一套交叉開關(guān)把幾個指令譯碼器的輸出送到多個操作部件中去執(zhí)行。而當出現(xiàn)數(shù)據(jù)相關(guān)、控制相關(guān)或功能部件沖突時,本次沒有能夠發(fā)射出去的指令必須保存下來,以便在下一個時鐘周期再發(fā)射。為了提高功能部件的利用率,通常要設置一個先行指令窗口,在這個先行指令窗口中保存暫時還不能送到操作部件中去執(zhí)行的指令。因此,超標量處理機的控制邏輯是比較復雜的。先行指令窗口的作用與先行控制技術(shù)中的先行指令緩沖棧相似。先行指令窗口可使從指令Cache中讀入更多的指令,通過硬件來判斷其中哪些指令可以先發(fā)射到操作部件中去執(zhí)行,可把沒有功能部件沖突、沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令超越它前面的指令先發(fā)射到操作部件中去。先行指令窗口的大小對超標量處理機的性能影響很大,窗口太小,調(diào)度的效果不好;窗口太大,調(diào)度所需的硬件太復雜。先行指令窗口的大小為2~8條指令。超標量處理機的指令級并行度ILP的期望值就為m。但是,由于相關(guān)和資源沖突等原因,實現(xiàn)的ILP為:1<ILP<m
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機2.超標量處理機及其時空圖
超標量處理機是指在單發(fā)射處理機的基礎上,采用資源重復的技術(shù)途徑,設置多條指令流水線,通過空間并行性來提高指令的平均執(zhí)行速度,能同時發(fā)射多條指令的處理機。超標量處理機也稱為多發(fā)射處理機。
指令123456時鐘周期IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機3.超標量處理機的性能
T(1)=(k+N-1)ΔtT(m)=(k+(N-m)/m)ΔtS(m)max=m
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機二、超流水線處理機
1.超流水線處理機及其時空圖
超流水線處理機是指在單發(fā)射處理機的基礎上,采用時間重疊的技術(shù)途徑,將指令流水線分解為大于等于8段及其以上,通過時間并行性來提高指令的平均執(zhí)行速度,能在1個時鐘周期內(nèi)分時發(fā)射多條指令的流水線處理機。超流水線處理機也是一種多發(fā)射處理機,它只要增加少量硬件,通過各部分硬件的充分重疊工作來提高處理機的性能。IFIDEXWBIFIDEXWB
IFIDEXWB
IFIDEXWBIFIDEXWBIFIDEXWBIFIDEXWB123456時鐘指令
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機2.超流水線處理機的性能
T(n)=(k+(N–1)/n)ΔtS(n)max=n3.MIPSR4000微處理器流水線操作
指令Cache指令譯碼讀寄存器堆ALU數(shù)據(jù)Cache標志檢驗寄存器堆IFISRFEXDFDSTCWBIF:取第一條指令;IS:取第二條指令;RF:讀寄存器堆,指令譯碼;EX:執(zhí)行指令;DF:取第一個數(shù)據(jù);DS:取第二個數(shù)據(jù);TC:數(shù)據(jù)標志檢驗;WB:寫回結(jié)果
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機IFISRFEXDFDSTCWB當前CPU周期流水線周期基本時鐘周期IFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWB
第三節(jié)基于硬件技術(shù)的多發(fā)射處理機三、超標量超流水線處理機
1.超標量超流水線處理機及其時空圖
超標量超流水線處理機是指把超標量技術(shù)與超流水線技術(shù)結(jié)合在一起,采用時間重疊和資源重復的技術(shù)途徑,通過時間和空間并行性來進一步提高指令的平均執(zhí)行速度。超標量超流水線處理機也是一種多發(fā)射處理機。IFIDEXWRIFIDEXWRIFIDEXWR時鐘周期123456IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR指令
2.超標量超流水線處理機的性能
T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年家具定制居間售后服務合同3篇
- 二零二五年度奢侈品導購代理合同2篇
- 二零二五年學校后勤保障中心保潔服務招標合同2篇
- 二零二五年度家電產(chǎn)品代工與貼牌生產(chǎn)合同2篇
- 2025版商業(yè)空場地租賃合同范本-全面服務保障82篇
- 2025年度物業(yè)公司財務內(nèi)部控制與風險管理合同3篇
- 2025年度生態(tài)旅游區(qū)委托代建合同法律性質(zhì)及責任承擔解析3篇
- 二零二五年度建筑工地安全文明施工及綠色施工技術(shù)合同
- 二零二五年度按揭車抵押借款合同備案協(xié)議3篇
- 二零二五年度旅游住宿業(yè)短期貸款合同樣本2篇
- 集成電路設計工藝節(jié)點演進趨勢
- 運行設備巡回檢查制度模版
- 新型電力系統(tǒng)簡介演示
- 肯德基經(jīng)營策略分析報告總結(jié)
- 噴涂主管年后業(yè)務規(guī)劃暨工作計劃
- 水質(zhì)-濁度的測定原始記錄
- 認識海洋生物
- 2023年金屬技術(shù)監(jiān)督上崗員真題模擬匯編(共1064題)
- 項目管理競聘報告
- 數(shù)字美的智慧工業(yè)白皮書-2023.09
- 百分數(shù)的認識說課稿(課堂)課件
評論
0/150
提交評論