資源描述:
《3 4流水線中的相關》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、34流水線中的相關流水線中的相關是指相鄰或相近的指令因存在某種關聯(lián),后面的指令不能在原指定的時鐘周期開始執(zhí)行。一般來說,流水線中的相關主要分為如下三種類型:1.結構相關:當硬件資源滿足不了指令重疊執(zhí)行的要求,而發(fā)生資源沖突時,就發(fā)生了結構相關。2.數(shù)據(jù)相關:當一條指令需要用到前面指令的執(zhí)行結果,而這些指令均在流水線中重疊執(zhí)行時,就可能引起數(shù)據(jù)相關。3.控制相關:當流水線遇到分支指令和其它能夠改變PC值的指令時,就會發(fā)生控制相關。一旦流水線中出現(xiàn)相關,必然會給指令在流水線中的順利執(zhí)行帶來許多問題,如果不能很好地解
2、決相關問題,輕則影響流水線的性能,重則導致錯誤的執(zhí)行結果。消除相關的基本方法是讓流水線暫停執(zhí)行某些指令,而繼續(xù)執(zhí)行其它一些指令。在后面的討論中,我們約定:當一條指令被暫停時,在該暫停指令之后發(fā)射的所有指令都要被暫停,而在該暫停之前發(fā)射的指令則可繼續(xù)進行,在暫停期間,流水線不會取新的指令。如果某些指令組合在流水線中重疊執(zhí)行時,產(chǎn)生資源沖突,則稱該流水線有結構相關。為了能夠在流水線中順利執(zhí)行指令的所有可能組合,而不發(fā)生結構相關,通常需要采用流水化功能單元的方法或資源重復的方法。許多流水線機器都是將數(shù)據(jù)和指令保存在同
3、一存儲器中。如果在某個時鐘周期內(nèi),流水線既要完成某條指令對數(shù)據(jù)的存儲器訪問操作,又要完成取指令的操作,那么將會發(fā)生存儲器訪問沖突問題(如圖3.3.1所示),產(chǎn)生結構相關。為了解決這個問題,可以讓流水線完成前一條指令對數(shù)據(jù)的存儲器訪問時,暫停取后一條指令的操作(如圖3.3.2所示)。該周期稱為流水線的一個暫停周期。暫停周期一般也稱為流水線氣泡,或簡稱為氣泡。從圖3.3.2可以看出,在流水線中插入暫停周期可以消除這種結構相關。圖3.3.1由于存儲器訪問沖突而帶來的流水線結構相關圖3.3.2為消除結構相關而插入的流水
4、線氣泡也可以用如圖3.3.3所示的時空圖來表示上述暫停情況。圖3.3.3由上可知,為消除結構相關而引入的暫停將影響流水線的性能。為了避免結構相關,可以考慮采用資源重復的方法。比如,在流水線機器中設置相互獨立的指令存儲器和數(shù)據(jù)存儲器;也可以將Cache分割成指令Cache和數(shù)據(jù)Cache。假設不考慮流水線其它因素對流水線性能的影響,顯然如果流水線機器沒有結構相關,那么其CPI也較小。然而,為什么有時流水線設計者卻允許結構相關的存在呢?主要有兩個原因:一是為了減少硬件代價,二是為了減少功能單元的延遲。如果為了避免結
5、構相關而將流水線中的所有功能單元完全流水化,或者設置足夠的硬件資源,那么所帶來的硬件代價必定很大。1.數(shù)據(jù)相關簡介當指令在流水線中重疊執(zhí)行時,流水線有可能改變指令讀/寫操作數(shù)的順序,使得讀/寫操作順序不同于它們非流水實現(xiàn)的順序,這將導致數(shù)據(jù)相關。首先讓我們考慮下列指令在流水線中的執(zhí)行情況:ADDR1,R2,R3SUBR4,R5,R1ANDR6,R1,R7ORR8,R1,R9XORR10,R1,R11ADD指令后的所有指令都要用到ADD指令的計算結果,如圖3.3.4所示,ADD指令在WB段才將計算結果寫入寄存器R
6、1中,但是SUB指令在其ID段就要從寄存器R1中讀取該計算結果,這種情況就叫做數(shù)據(jù)相關。除非有措施防止這一情況出現(xiàn),否則SUB指令讀到的是錯誤的值。所以,為了保證上述指令序列的正確執(zhí)行,流水線只好暫停ADD指令之后的所有指令,直到ADD指令將計算結果寫入寄存器R1之后,再啟動ADD指令之后的指令繼續(xù)執(zhí)行。圖3.3.4流水線的數(shù)據(jù)相關從圖3.3.4還可以看到,AND指令同樣也將受到這種相關關系的影響。ADD指令只有到第五個時鐘周期末尾才能結束對寄存器R1的寫操作,所以AND指令在第四個時鐘周期從寄存器R1中讀出的
7、值也是錯誤的。而XOR指令則可以正常操作,因為它是在第六個時鐘周期讀寄存器R1的內(nèi)容。另外,利用DLX流水線的一種簡單技術,可以使流水線順利執(zhí)行OR指令。這種技術就是:在DLX流水線中,約定在時鐘周期的后半部分進行寄存器文件的讀操作,而在時鐘周期的前半部分進行寄存器文件的寫操作。在本章的圖中,我們將寄存器文件的邊框適當?shù)禺嫵商摼€來表示這種技術。2.通過定向技術減少數(shù)據(jù)相關帶來的暫停圖3.3.4中的數(shù)據(jù)相關問題可以采用一種稱為定向(也稱為旁路或短路)的簡單技術來解決(動畫演示)。定向技術的主要思想是:在某條指令(
8、如圖3.3.4中的ADD指令)產(chǎn)生一個計算結果之前,其它指令(如圖3.3.4中的SUB和AND指令)并不真正需要該計算結果,如果能夠?qū)⒃撚嬎憬Y果從其產(chǎn)生的地方(寄存器文件EX/MEM)直接送到其它指令需要它的地方(ALU的輸入寄存器),那么就可以避免暫停?;谶@種考慮,定向技術的要點可以歸納為:(1)寄存器文件EX/MEM中的ALU的運算結果總是回送到ALU的輸入寄存器。(2)當定向硬