dl流水線技術(shù)數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)_第1頁(yè)
dl流水線技術(shù)數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)_第2頁(yè)
dl流水線技術(shù)數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)_第3頁(yè)
dl流水線技術(shù)數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)_第4頁(yè)
dl流水線技術(shù)數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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、3.3.2流水線的數(shù)據(jù)相關(guān)1 .數(shù)據(jù)相關(guān)簡(jiǎn)介當(dāng)指令在流水線中重疊執(zhí)行時(shí),流水線有可能改變指令讀/寫操作數(shù)的順序,使得讀/寫操作順序不同于它們非流水實(shí)現(xiàn)的順序,這將導(dǎo)致數(shù)據(jù)相關(guān)。首先讓我們考慮下列指令在流水線中的執(zhí)行情況:ADDR1,R2,R3SUBR4,R5,R1ANDR6,R1,R7ORR8,R1,R9XORR10,R1,R11ADD指令后的所有指令都要用到ADD旨令的計(jì)算結(jié)果,如圖3.3.4所示,ADD指令在WB段才將計(jì)算結(jié)果寫入寄存器R1中,但是SUB指令在其ID段就要從寄存器R1中讀取該計(jì)算結(jié)果,這種情況就叫做數(shù)據(jù)相關(guān)。除非有措施防止這一情況出現(xiàn),否則SUB指令讀到的是錯(cuò)誤的值。所以,

2、為了保證上述指令序列的正確執(zhí)行,流水線只好暫停ADD指令之后的所有指令,直到ADD指令將計(jì)算結(jié)果寫入寄存器R1之后,再啟動(dòng)ADD指令之后的指令繼續(xù)執(zhí)行。數(shù)據(jù)相關(guān)率例希賽教育就考學(xué)院http:,Yeity.enf時(shí)閭【時(shí)鐘里:CCiCC2CC3CC4CCSCC6程序勢(shì)仃順序(妻IKR7希賽教有軟考學(xué)浣Mtp:/vw,educit7-eg瑁流水線的數(shù)據(jù)相關(guān)從圖3.3.4還可以看到,AND指令同樣也將受到這種相關(guān)關(guān)系的影響。ADD指令只有到第五個(gè)時(shí)鐘周期末尾才能結(jié)束對(duì)寄存器R1的寫操作,所以AND指令在第四個(gè)時(shí)鐘周期從寄存器R1中讀出的值也是錯(cuò)誤的。而XOR指令則可以正常操作,因?yàn)樗窃?/p>

3、第六個(gè)時(shí)鐘周期讀寄存器R1的內(nèi)容。另外,利用DLX流水線的一種簡(jiǎn)單技術(shù),可以使流水線順利執(zhí)行OR指令。這種技術(shù)就是:在DLX流水線中,約定在時(shí)鐘周期的后半部分進(jìn)行寄存器文件的讀操作,而在時(shí)鐘周期的前半部分進(jìn)行寄存器文件的寫操作。在本章的圖中,我們將寄存器文件的邊框適當(dāng)?shù)禺嫵商摼€來(lái)表示這種技術(shù)。2.通過(guò)定向技術(shù)減少數(shù)據(jù)相關(guān)帶來(lái)的暫停圖3.3.4中的數(shù)據(jù)相關(guān)問(wèn)題可以采用一種稱為定向(也稱為旁路或短路)的簡(jiǎn)單技術(shù)來(lái)解決(動(dòng)畫演示)。定向技術(shù)的主要思想是:在某條指令(如圖中的ADD指令)產(chǎn)生一個(gè)計(jì)算結(jié)果之前,其它指令(如圖中的SUB和AND指令)并不真正需要該計(jì)算結(jié)果,如果能夠?qū)⒃撚?jì)算結(jié)果從其產(chǎn)生的地

4、方(寄存器文件EX/MEM)直接送到其它指令需要它的地方(ALU的輸入寄存器),那么就可以避免暫停?;谶@種考慮,定向技術(shù)的要點(diǎn)可以歸納為:(1)寄存器文件EX/MEM中的ALU的運(yùn)算結(jié)果總是回送到ALU的輸入寄存器。(2)當(dāng)定向硬件檢測(cè)到前一個(gè)ALU運(yùn)算結(jié)果的寫入寄存器就是當(dāng)前ALU操作的源寄存器時(shí),那么控制邏輯將前一個(gè)ALU運(yùn)算結(jié)果定向到ALU的輸入端,后一個(gè)ALU操作就不必從源寄存器中讀取操作數(shù)。來(lái)用定向技術(shù)消除數(shù)據(jù)相關(guān)病賽教育軟考學(xué)院ktlp:,wnMaeduoity*cry1mraftti怖郡CClCC:0C3gX5CC6圖瓦3.5圖3.3.4還表明,流水線中的指令所需要的定向結(jié)果可

5、能并不僅僅是前一條指令的計(jì)算結(jié)果,而且還有可能是前面與其不相鄰指令的計(jì)算結(jié)果,圖是采用了定向技術(shù)后上述例子的執(zhí)行情況,其中寄存器文件和功能單元之間的箭頭表示定向路徑。上述指令序列可以在圖中順利執(zhí)行而無(wú)需暫停。密賽鞅音軟考學(xué)炭1.11p:/1*w+edutity.0M相令】指令30指令4口指半案寨物骨軟考學(xué)院httpi.yrwvv.oducit>ffl./采用定向技術(shù)后的工作過(guò)程般r.p:,H3zu鞏也需AMJ城51,即耶踽叫跺察救育軟考學(xué)院kttp;"ww,educLiy.皿ORiqRl/門圖3,16上述定向技術(shù)可以推廣到更一般的情況,可以將一個(gè)結(jié)果直接傳送到所有需要它的功能單

6、元。也就是說(shuō),一個(gè)結(jié)果不僅可以從某一功能單元的輸出定向到其自身的輸入,而且還可以從某一功能單元的輸出定向到其它功能單元的輸入。(1)寫后讀相關(guān)(RAWReadAfterWrite)(命名規(guī)則):j的執(zhí)行要用到i的計(jì)算結(jié)果,當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),j可能在i寫入其計(jì)算結(jié)果之前就先行對(duì)保存該結(jié)果的寄存器進(jìn)行讀操作,從而得到錯(cuò)誤的值。這是最常見的一種數(shù)據(jù)相關(guān),圖3.3.6和圖中采用定向技術(shù)消除的數(shù)據(jù)相關(guān)就屬于這種類型。(2) 寫后寫相關(guān)(WAWWriteAfterWrite):j和i的目的寄存器相同,當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),j可能在i寫入其計(jì)算結(jié)果之前就先行對(duì)該結(jié)果寄存器進(jìn)行寫操作,從而導(dǎo)致

7、寫入順序錯(cuò)誤,在目的寄存器中留下的是i寫入的值,而不是j寫入的值。如果在流水線中不只一個(gè)段可以進(jìn)行寫操作,或者當(dāng)流水線暫停某條指令時(shí),允許該指令之后的指令繼續(xù)前進(jìn),就可能會(huì)產(chǎn)生這種類型的數(shù)據(jù)相關(guān)。由于DLX流水線只在WB段寫寄存器,所以在DLX流水線中執(zhí)行的指令不會(huì)發(fā)生這種類型的數(shù)據(jù)相關(guān)。如果我們對(duì)DLX流水線作如下改變,在DLX流水線中執(zhí)行的指令就有可能發(fā)生WAWB關(guān)。首先,將ALU運(yùn)算結(jié)果的寫回操作移到MEM段進(jìn)行,因?yàn)檫@時(shí)計(jì)算結(jié)果已經(jīng)有效;其次,假設(shè)訪問(wèn)數(shù)據(jù)存儲(chǔ)器占兩個(gè)流水段。下面是兩條指令在修改后的DLX流水線中執(zhí)行的情況:系.“用1后的DLX流水線會(huì)發(fā)生WAW相關(guān)幫"黃藜再

8、栽芍子阮citycm/LWRL0,(R2)IFIDEXMBM1MEM2槌ADDR1,R2,R3IFIDEXWB希賽教亨軟考學(xué)院educity,cn/可以看出,在修改后的DLX流水線中執(zhí)行上述指令序列后,寄存器R1中的內(nèi)容是第一條指令(LW的寫入結(jié)果,而不是ADD指令的寫入結(jié)果。這就是由于WAM目關(guān)所帶來(lái)的錯(cuò)誤執(zhí)行結(jié)果。(3)讀后寫相關(guān)(WARWriteAfterRead):j可能在i讀取某個(gè)源寄存器的內(nèi)容之前就先對(duì)該寄存器進(jìn)行寫操作,導(dǎo)致i后來(lái)讀取到的值是錯(cuò)誤的。由于DLX流水線在ID段完成所有的讀操作,在WB段完成所有的寫操作。所以,在DLX流水線中不會(huì)產(chǎn)生這種類型的

9、數(shù)據(jù)相關(guān)?;谏厦嫘薷暮蟮腄LX流水線,考察下面兩條指令的執(zhí)行情況:SWR2,0(RE)IFIDEXHEM1MFN12WBADDRZR3i刈IFIDEXWB如果SW指令在MEM2段的后半部分讀取寄存器R2的值,ADD指令在WB段的前半部分將計(jì)算結(jié)果寫回寄存器R2,則SW將讀取錯(cuò)誤的值,將ADD指令的計(jì)算結(jié)果寫入存儲(chǔ)器中。值得注意的是,在讀后讀(RARReadAfterRead)的情況下,不存在數(shù)據(jù)相關(guān)問(wèn)題。4 .需要暫停的數(shù)據(jù)相關(guān)前面我們討論了如何利用定向技術(shù)消除由于數(shù)據(jù)相關(guān)帶來(lái)的暫停。但是,并不是所有數(shù)據(jù)相關(guān)帶來(lái)的暫停都可以通過(guò)定向技術(shù)消除。足白技術(shù)不能解決的數(shù)據(jù)相關(guān)桑褰勒青兼老季快htt?

10、:/肘間闞鐘周期)0C1CC2CC3CUHE程序玩行胸序(指也希賽軟首就希學(xué)院ht"1'7MM.educity-cr/圖3,工1。LW指令不能將結(jié)果定向曳SU3指令為了保證流水線正確執(zhí)行上述指令序列,可以設(shè)置一個(gè)稱為流水線互鎖(pipelineinterlock)的功能部件。一旦流水線互鎖檢測(cè)到上述數(shù)據(jù)相關(guān),流水線暫停執(zhí)行LW旨令之后的所有指令,直到能夠通過(guò)定向解決該數(shù)據(jù)相關(guān)為止。相關(guān)時(shí)將停流水線希賽救肯蒙考學(xué)詈http:/imr.tduzityiay圖3.3.12為流水線互鎖插入暫停后流水線數(shù)據(jù)通路;圖3.3.13是加入暫停前后的流水線時(shí)空?qǐng)D。在垢入口暫件.妁情況下遍木城的

11、工作過(guò)混程序推行喊序指之時(shí)間(療褲離期1-C1LKR1,03巨hSBR4.El,即ANUK機(jī)KL艮1ORX6.KJR$圖313.12在插入“暫?!鼻闆r下,流水線的時(shí)空?qǐng)DL*RLO(R2)IFIDEXMEM聯(lián)SUBR4,RI,R5IFIDstallEXMEMKBANDR6,RI,R7IFstalJIDEXM則MBUK昭jKI,四stallJFDEXMENIB圖3.3.13卜面討論如何利用編譯器技術(shù)來(lái)減少這種必須的暫停,然后論述如何在流水線中實(shí)現(xiàn)數(shù)據(jù)相關(guān)檢測(cè)和定向。5 .對(duì)數(shù)據(jù)相關(guān)的編譯器調(diào)度方法流水線常常會(huì)遇到許多種類型的暫停。比如,采用典型的代碼生成方法對(duì)A=B+C這種常用的表達(dá)式進(jìn)行處理,可

12、以得到如圖3.3.14所示的指令序列。從圖可以看出,在ADD指令的流水過(guò)程中必須插入一個(gè)暫停時(shí)鐘周期,以保證變量C的讀入值有效。既然定向無(wú)法消除指令序列中所包含的這種暫停,那么能否讓編譯器在進(jìn)行代碼生成時(shí)就消除這些潛在的暫停呢表達(dá)式h8批的代碼及其流水執(zhí)行LWRLBLWR2,CADDR3,RLR2SWA.R3口廣市塞教苜較卷至譙dA-B+Chtip;/wwrf#ciBf.Sui/*,取c;寄存鑿暫存于放在放在相加.分配S3*泰*普疆學(xué)院保存結(jié)果,http;/wv,educity.cWr充賽,育裁“院LWRLBIFIDEXIOIB皿田加舊山口5WLWR2>CIPiDEXME"邨A

13、DD電,RLR2IFIDstalMMHKflBIFstallIDEXHEMWB圖3.3,A二B+。的LX代斛序列及其疣水線購(gòu)時(shí)空?qǐng)D表示實(shí)際上,編譯器的確可以通過(guò)重新組織代碼順序來(lái)消除這種暫停。通常稱這種重新組織代碼順序消除暫停的技術(shù)為流水線調(diào)度(pipelinescheduling)或指令調(diào)度(instructionscheduling)。例請(qǐng)為下列表達(dá)式生成沒有暫停的DLX代碼序列。假設(shè)載入延遲為1個(gè)時(shí)鐘周期。a=b-c;d=e-f;解:調(diào)度前后的指令序列如表所示。可以看出,兩條ALU指令(ADDRa,Rb,Rc和SUBRd,Re,Rf)分別和兩條Load指令(LWRc,c和LWRf,f)之

14、間存在數(shù)據(jù)相關(guān)。為了保證流水線正確執(zhí)行調(diào)度前的指令序列,必須在指令執(zhí)行過(guò)程中插入兩個(gè)時(shí)鐘周期的暫停。但是考察調(diào)度后的指令序列不難發(fā)現(xiàn),由于流水線允許定向,就不必在指令執(zhí)行過(guò)程中插入任何暫停周期。表3.2調(diào)度前后的代碼序列表達(dá)式d-ft-f的代碼的調(diào)度U一。一L希賽教育軟考學(xué)院http:/wvw*調(diào)度前的代用調(diào)度后的代碼LWLWADDSWLWLWSUBSWRb,bUHRb,bRe,cLWRcjcRa,Rb,RgLWR©,q國(guó)Ka喜金最整鏟_city-cn/Re,eLWR£fRfnfSWaRaRd,R*RfSUBRd,Re,Rf4RdSW&Rd6

15、.對(duì)DLX流水線控制的實(shí)現(xiàn)讓一條指令從流水線的指令譯碼段(ID)移動(dòng)到執(zhí)行段(EXX的過(guò)程通常稱為指令發(fā)射,而經(jīng)過(guò)了該過(guò)程的指令為已發(fā)射的指令。對(duì)于DLX標(biāo)量流水線而言,所有的數(shù)據(jù)相關(guān)均可以在流水線的ID段檢測(cè)到,如果存在數(shù)據(jù)相關(guān),指令在其發(fā)射之前就會(huì)被暫停。這樣,我們可以在ID段決定需要什么樣的定向,然后設(shè)置相應(yīng)的控制。在流水線中較早地檢測(cè)到相關(guān),可以降低實(shí)現(xiàn)流水線的硬件復(fù)雜度,因?yàn)檫@樣不必在流水過(guò)程中被迫將一條已經(jīng)改變了機(jī)器狀態(tài)的指令掛起。另外一種方法是在使用一個(gè)操作數(shù)的時(shí)鐘周期開始(DLX流水線的EX和MEM段的開始)檢測(cè)相關(guān),確定必需的定向。為了說(shuō)明這兩種方法的不同,我們將以Load指

16、令所引起的RAW相關(guān)為例,論述如何通過(guò)在ID段的檢測(cè)來(lái)實(shí)現(xiàn)流水線控制,其中到ALU輸入的定向路徑可以在EX段。表列出了流水線相關(guān)檢測(cè)硬件可以檢測(cè)到的各種相關(guān)情況。菽3湖窗日鄭嫄件可噓蟠!帆梯美情祝流水線相關(guān)檢測(cè)域件可以檢測(cè)到的希賽髓就考學(xué)腐各種相關(guān)情況http:/wv.edicity.W相關(guān)情況指令赤列晶陽(yáng)卻任LIm,蛤(咫)停;g相學(xué)ADi題RE,演me$皿陶啦燈OR啊隰R7LflR1,4S(R2)罵要音信ADD甌R1,野的僦$叱陶陶書OR碼題咫LWRL駁(R2)通過(guò)定向ADD甌嫡的i畿的S美SUBR8,R1,R7OR網(wǎng)的R7LffRL第(爻)朧第ADDR5,陶田用聯(lián)SJB潞電引OR咫,R1

17、,R7這三條指令與R1二點(diǎn)故不可靛出懶,前毒載http:/wv,edacity,cn/比敢鋸穩(wěn)測(cè)到加例自令中使用R酢方長(zhǎng):卡溫并在ADD指令蚣EX段之前將之哲舉同時(shí)也將抑時(shí)口QR相守皆停)牘交銀卷冽畀5CB指令申使用RI作力歸寄存耦,料及時(shí)的荏SUB相令進(jìn)入曲段N前畜Load省分的結(jié)果定向機(jī)北山LW指令在前半月期將菰吳寫入R1GE指令防粉阱窈1現(xiàn)在來(lái)看看如何實(shí)現(xiàn)流水線互鎖。如果某條指令和Load指令有一個(gè)RAW相關(guān)時(shí),該指令處于ID段,Load指令處于EX段。我們可以用表來(lái)描述此時(shí)所有可能的相關(guān)情況。裹3.4指令衽二D段為檢測(cè)是否需啟動(dòng)流水端if而進(jìn)行兩三和匕較在ID段檢測(cè)Load互裝雷進(jìn)行三

18、種比較LoadxStor序、AUJ立M載.分支等搔爭(zhēng):產(chǎn)存耨rsL島.坤碧果存春器rd;IRu,眸'ORALU指樂源聃器rsLIR2«膈寄存寄e2;IRu15%呆薩器rd:出k團(tuán)希賽教育鎏考學(xué)期http:/uw.edicity.m'IF/IDIDEX的拂隼遒量(祖成1曲一IF0由巖炸諳域LoadS-RAL'JID加工I&口i.|5=IF/ID,1R.S-.jjqLeadK-RALJWLIKii.ts=IFaD.IRu.t.sLeadLoad.中cnaAL應(yīng)相性或分支TimIRiiii=IlADlIRt.一旦硬件檢測(cè)到上述RAW相關(guān),流水線互鎖必須在流水線中插入暫停周期,使正處于IF和ID段的指令不再前進(jìn)。另外,還必須暫停向前傳送IF/ID寄存器組的內(nèi)容,使得流水線能夠保持被暫停的指令。對(duì)定向而言,雖然可能要考慮許多情況,但是定向邏輯的實(shí)現(xiàn)方法是類似的。實(shí)現(xiàn)定向邏輯的關(guān)鍵是,流水線寄存器不僅包含了被定向的數(shù)據(jù),而且包含了目標(biāo)和源寄存器域。從上面的討論可知,所有定向都是從ALU或數(shù)據(jù)存儲(chǔ)器的輸出到ALU、數(shù)據(jù)存儲(chǔ)器或0檢測(cè)單元的輸入的定向,我們可以分別將EX/MEM和MEM/WB

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論