![計(jì)算機(jī)體系結(jié)構(gòu)第三章-2_第1頁(yè)](http://file4.renrendoc.com/view/927afe3bde87fed6ce384eb37a9b964a/927afe3bde87fed6ce384eb37a9b964a1.gif)
![計(jì)算機(jī)體系結(jié)構(gòu)第三章-2_第2頁(yè)](http://file4.renrendoc.com/view/927afe3bde87fed6ce384eb37a9b964a/927afe3bde87fed6ce384eb37a9b964a2.gif)
![計(jì)算機(jī)體系結(jié)構(gòu)第三章-2_第3頁(yè)](http://file4.renrendoc.com/view/927afe3bde87fed6ce384eb37a9b964a/927afe3bde87fed6ce384eb37a9b964a3.gif)
![計(jì)算機(jī)體系結(jié)構(gòu)第三章-2_第4頁(yè)](http://file4.renrendoc.com/view/927afe3bde87fed6ce384eb37a9b964a/927afe3bde87fed6ce384eb37a9b964a4.gif)
![計(jì)算機(jī)體系結(jié)構(gòu)第三章-2_第5頁(yè)](http://file4.renrendoc.com/view/927afe3bde87fed6ce384eb37a9b964a/927afe3bde87fed6ce384eb37a9b964a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.4流水線的相關(guān)與沖突一、一個(gè)經(jīng)典的5段流水線(RISC流水線)
一條指令的執(zhí)行過(guò)程分為5個(gè)周期:取指令周期(IF)、指令譯碼/讀寄存器周期(ID)、執(zhí)行/有效地址計(jì)算周期(EX)、存儲(chǔ)器訪問(wèn)/分支完成周期(MEM)、寫(xiě)回周期(WB)。3.4流水線的相關(guān)與沖突三類指令對(duì)5級(jí)流水線的占用情況:ALU指令LOAD/STORE分支指令S1IF取指取指取指S2ID譯碼,讀通用寄存器譯碼,讀通用寄存器譯碼,讀通用寄存器S3EX運(yùn)算(R-R,R-立即數(shù))計(jì)算有效地址計(jì)算轉(zhuǎn)移目標(biāo)地址,設(shè)置條件碼S4MEM--訪存(讀或?qū)?(store完成)若條件成立,將轉(zhuǎn)移目標(biāo)地址送PC(分支完成)S5WB結(jié)果寫(xiě)回通用寄存器(ALU完成)讀出數(shù)據(jù)寫(xiě)入通用寄存器--3.4流水線的相關(guān)與沖突3.4流水線的相關(guān)與沖突流水設(shè)計(jì)中的一些問(wèn)題及解決:IF(取指令),MEM(讀/寫(xiě)數(shù)據(jù)),訪存沖突。通用寄存器訪存沖突---分半拍。專門的加法器:PCPC+4。5段流水線的兩種描述方式第一種描述(類似于時(shí)空?qǐng)D)3.4流水線的相關(guān)與沖突第二種描述(按時(shí)間錯(cuò)開(kāi)的數(shù)據(jù)通路序列)3.4流水線的相關(guān)與沖突二、相關(guān)相關(guān)是指兩條指令之間存在某種依賴關(guān)系。如果兩條指令相關(guān),則它們就有可能不能在流水線中重疊執(zhí)行或者只能部分重疊執(zhí)行。主要是三種類型的相關(guān):
數(shù)據(jù)相關(guān)
名相關(guān)
控制相關(guān)3.4流水線的相關(guān)與沖突1、數(shù)據(jù)相關(guān)(真數(shù)據(jù)相關(guān))對(duì)于兩條指令i(在前)和j(在后),如果下述條件之一成立,則稱指令j與指令i數(shù)據(jù)相關(guān)。
指令j使用指令i產(chǎn)生的結(jié)果;指令j與指令k數(shù)據(jù)相關(guān),而指令k又與指令i數(shù)據(jù)相關(guān)。數(shù)據(jù)相關(guān)具有傳遞性。數(shù)據(jù)相關(guān)反映了數(shù)據(jù)的流動(dòng)關(guān)系,即如何從其產(chǎn)生者流動(dòng)到其消費(fèi)者。3.4流水線的相關(guān)與沖突例如:下面這一段代碼存在數(shù)據(jù)相關(guān)
Loop:L.DF0,0(R1) //F0為數(shù)組元素
ADD.DF4,F(xiàn)0,F(xiàn)2 //加上F2中的值
S.D F4
,0(R1)
//保存結(jié)果
DADDIUR1,R1,-8 //數(shù)組指針遞減8個(gè)字節(jié)
BNER1,R2,Loop //如果R1≠R2,則分支3.4流水線的相關(guān)與沖突當(dāng)數(shù)據(jù)的流動(dòng)是經(jīng)過(guò)寄存器時(shí),相關(guān)的檢測(cè)比較直觀和容易。當(dāng)數(shù)據(jù)的流動(dòng)是經(jīng)過(guò)存儲(chǔ)器時(shí),檢測(cè)比較復(fù)雜。相同形式的地址其有效地址未必相同。形式不同的地址其有效地址卻可能相同。3.4流水線的相關(guān)與沖突2、名相關(guān)名:指令所訪問(wèn)的寄存器或存儲(chǔ)器單元的名稱。如果兩條指令使用相同的名,但是它們之間并沒(méi)有數(shù)據(jù)流動(dòng),則稱這兩條指令存在名相關(guān)。3.4流水線的相關(guān)與沖突指令j(在后)與指令i(在前)之間的名相關(guān)有兩種:(1)反相關(guān):如果指令j寫(xiě)的名與指令i讀的名相同,則稱指令i和j發(fā)生了反相關(guān)。指令i讀的名=指令j寫(xiě)的名例如:
DIV.D F2,F(xiàn)6,F(xiàn)4(先讀)
ADD.D
F6,F(xiàn)0,F(xiàn)12(后寫(xiě))(2)輸出相關(guān):如果指令j和指令i寫(xiě)相同的名,則稱指令i和j發(fā)生了輸出相關(guān)。指令i寫(xiě)的名=指令j寫(xiě)的名3.4流水線的相關(guān)與沖突名相關(guān)小結(jié):名相關(guān)的兩條指令之間并沒(méi)有數(shù)據(jù)的傳送。但名相關(guān)的兩條指令之間的執(zhí)行順序必須嚴(yán)格遵守。如果一條指令中的名改變了,并不影響另外一條指令的執(zhí)行。針對(duì)名相關(guān):可采用換名技術(shù),消除名相關(guān)。3.4流水線的相關(guān)與沖突換名技術(shù):通過(guò)改變指令中操作數(shù)的名來(lái)消除名相關(guān)。例如:考慮下述代碼:
DIV.D F2,F(xiàn)6,F(xiàn)4ADD.D F6,F(xiàn)0,F(xiàn)12SUB.D F8,F(xiàn)6,F(xiàn)14進(jìn)行寄存器換名(F6換成S)后,變成:
DIV.D F2,F(xiàn)6,F(xiàn)4ADD.D S,F(xiàn)0,F(xiàn)12SUB.D F8,S,F(xiàn)143.4流水線的相關(guān)與沖突反相關(guān)3、控制相關(guān)控制相關(guān)是指由分支指令引起的相關(guān)。典型的程序結(jié)構(gòu)是“if-then”結(jié)構(gòu)。3.4流水線的相關(guān)與沖突ifp1{ S1;
};S;ifp2{ S2;
};
控制相關(guān)帶來(lái)了以下兩個(gè)限制:與一條分支指令控制相關(guān)的指令不能被移到該分支之前,否則這些指令就不受該分支控制了。如果一條指令與某分支指令不存在控制相關(guān),就不能把該指令移到該分支之后。三、流水線沖突流水線沖突是指對(duì)于具體的流水線來(lái)說(shuō),由于相關(guān)的存在,使得指令流中的下一條指令不能在指定的時(shí)鐘周期執(zhí)行。流水線沖突有3種類型:結(jié)構(gòu)沖突數(shù)據(jù)沖突控制沖突3.4流水線的相關(guān)與沖突(一)結(jié)構(gòu)沖突指多條指令進(jìn)入流水線后,在同一時(shí)間爭(zhēng)用同一功能部件,從而發(fā)生沖突。例如:存儲(chǔ)器訪問(wèn)沖突12345678指令LOADIFIDEXMEMWB指令i+1IFIDEXMEMWB指令i+2IFIDEXMEMWB指令i+3
IFIDEXMEMWB指令i+4IFIDEXMEM訪存沖突3.4流水線的相關(guān)與沖突3.4流水線的相關(guān)與沖突解決辦法Ⅰ:暫停一拍(也稱為流水線氣泡,簡(jiǎn)稱氣泡)。123456789指令LOADIFIDEXMEMWB指令i+1IFIDEXMEMWB指令i+2IFIDEXMEMWB指令i+3
停頓
IFIDEXMEMWB指令i+4IFIDEXMEM3.4流水線的相關(guān)與沖突3.4流水線的相關(guān)與沖突解決方法Ⅱ:
設(shè)置相互獨(dú)立的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器或設(shè)置相互獨(dú)立的指令Cache和數(shù)據(jù)Cache。3.4流水線的相關(guān)與沖突
說(shuō)明:有時(shí)流水線設(shè)計(jì)者允許結(jié)構(gòu)沖突的存在主要原因:減少硬件成本(二)數(shù)據(jù)沖突
1、數(shù)據(jù)沖突指由于流水線中各指令重疊執(zhí)行,使得原來(lái)對(duì)操作數(shù)的訪問(wèn)順序發(fā)生變化,從而引起的一種數(shù)據(jù)沖突。例如:DADDR1,R2,R3(寫(xiě)R1)
DSUBR4,R1,R5(讀R1)123456DADDIFIDEXMEM
WBDSUBIFIDEXMEMWB寫(xiě)R1讀R13.4流水線的相關(guān)與沖突根據(jù)指令讀訪問(wèn)和寫(xiě)訪問(wèn)的順序,假設(shè)兩條指令i和j,且i在j之前進(jìn)入流水線,可能發(fā)生的數(shù)據(jù)沖突有3種類型:(1)寫(xiě)后讀沖突(RAW)
i
寫(xiě)入
j
讀出
如果在
i
寫(xiě)入之前,j
先去讀,j
讀出的內(nèi)容是錯(cuò)誤的。-對(duì)應(yīng)真數(shù)據(jù)相關(guān)。3.4流水線的相關(guān)與沖突(2)寫(xiě)后寫(xiě)沖突(WAW)
i
寫(xiě)入
j
寫(xiě)入如果在
i
寫(xiě)入之前,j
先寫(xiě),最后寫(xiě)入的結(jié)果是的錯(cuò)誤!
-對(duì)應(yīng)輸出相關(guān)。
寫(xiě)后寫(xiě)沖突發(fā)生的情況:流水線中不只一個(gè)段可以進(jìn)行寫(xiě)操作。(介紹的5段流水線不會(huì)發(fā)生)當(dāng)先前某條指令停頓時(shí),允許其后續(xù)指令繼續(xù)前進(jìn)。3.4流水線的相關(guān)與沖突(3)讀后寫(xiě)沖突(WAR)
i
讀出
j
寫(xiě)入如果在i
讀之前,j
先寫(xiě)。i
讀出的內(nèi)容是錯(cuò)誤的!-對(duì)應(yīng)反相關(guān)。
讀后寫(xiě)沖突發(fā)生的情況:有些指令的寫(xiě)結(jié)果操作提前了,而且有些指令的讀操作滯后了。指令被重新排序了。讀后寫(xiě)沖突在前述5段流水線中不會(huì)發(fā)生。(讀操作(在ID段)在寫(xiě)結(jié)果操作(在WB段)之前)3.4流水線的相關(guān)與沖突2、解決辦法:-針對(duì)“寫(xiě)后讀沖突”
解決辦法1:采用定向傳送技術(shù)(旁路技術(shù)或相關(guān)專用通路技術(shù))。3.4流水線的相關(guān)與沖突例:DADDR1,R2,R3DSUBR4,R1,R5XORR6,R1,R7ANDR8,R1,R9ORR10,R1,R11寫(xiě)R1讀R1流水線的數(shù)據(jù)沖突舉例產(chǎn)生數(shù)據(jù)ALU目標(biāo)R旁路傳送寄存器3.4流水線的相關(guān)與沖突采用定向技術(shù)后的流水線數(shù)據(jù)通路
定向技術(shù)關(guān)鍵思想:在某條指令產(chǎn)生計(jì)算結(jié)果之前,其他指令并不真正立即需要該計(jì)算結(jié)果,如果能夠?qū)⒃撚?jì)算結(jié)果從其產(chǎn)生的地方直接送到其他指令需要它的地方,那么就可以避免停頓。推廣一般的情況:
結(jié)果數(shù)據(jù)不僅可以從某一功能部件的輸出定向到其自身的輸入,而且還可以定向到其他功能部件的輸入。3.4流水線的相關(guān)與沖突3.4流水線的相關(guān)與沖突DSUBR1,R2,R3LDR5,0(R1)SDR5,12(R1)但是,定向技術(shù)并不能解決所有RAW沖突。例如: LDR1,0(R2)
DADDR4,R1,R5 ANDR6,R1,R7 XORR8,R1,R9無(wú)法將LD指令的結(jié)果定向到DADD指令
解決方法2:增加流水線互鎖硬件,插入“暫停”。作用:檢測(cè)發(fā)現(xiàn)數(shù)據(jù)沖突,并使流水線停頓,直至沖突消失。
解決方法3:指令調(diào)度技術(shù)(流水線調(diào)度)前提:在非按序流動(dòng)方式(亂步流動(dòng))的流水線中。實(shí)現(xiàn):通過(guò)編譯器重新組織指令順序來(lái)消除沖突。指允許輸出結(jié)果的次序與輸入指令的次序不同。例如:表達(dá)式A=B+C,采用典型的代碼生成方法:LDRb,BIFIDEXMEMWBLDRc,CIFIDEXMEMWBDADDRa,Rb,RcIFIDstall
EXMEMWBSDRa,AIFstall
IDEXMEMWB3.4流水線的相關(guān)與沖突調(diào)度前的代碼調(diào)度后的代碼LDRb,BLDRc,CDADDRa,Rb,Rc
SDRa,ALDRe,ELDRf,F(xiàn)DSUBRd,Re,RfSDRd,DLDRb,BLDRc,CLDRe,EDADDRa,Rb,RcLDRf,F(xiàn)SDRa,ADSUBRd,Re,RfSDRd,D例:請(qǐng)為下列表達(dá)式生成沒(méi)有暫停的指令序列:
A=B+C;
D=E-F;
假設(shè)載入延遲為1個(gè)時(shí)鐘周期。
(三)控制沖突1、控制沖突流水線遇到分支指令(條件轉(zhuǎn)移)和其他會(huì)改變PC值的指令所引起的沖突。分支指令的簡(jiǎn)單處理:“凍結(jié)”,或“排空”流水線12345678分支指令I(lǐng)FIDEXMEMWB分支目標(biāo)指令i
IF
停頓停頓IFIDEXMEM分支目標(biāo)指令i+1
停頓停頓停頓IFIDEX分支目標(biāo)指令i+3
停頓停頓停頓IFID更新PC值3.4流水線的相關(guān)與沖突檢測(cè)到分支分支延遲:3個(gè)周期3.4流水線的相關(guān)與沖突轉(zhuǎn)移指令對(duì)流水線的影響假設(shè):在某一程序中,分支指令在程序中所占的比例為25%,其中轉(zhuǎn)移成功的概率為2/3。按分支延遲為3個(gè)時(shí)鐘周期的情況,試計(jì)算該流水線指令的平均時(shí)鐘周期數(shù)。(流水線理想的CPI=1)2、有關(guān)措施為了減小分支延遲造成的損失,可采用以下措施:1)在流水線中盡早判斷出分支轉(zhuǎn)移是否成功。2)盡早計(jì)算出分支目標(biāo)地址。兩種措施同時(shí)采用,缺一不可。假設(shè)該兩步工作被提前到ID段完成,即分支指令是在ID段的末尾執(zhí)行完成,所帶來(lái)的分支延遲為一個(gè)時(shí)鐘周期。3.4流水線的相關(guān)與沖突減少分支延遲的方法有多種,下面介紹3種常見(jiàn)的方法。減少分支延遲的方法:通過(guò)軟件(編譯器)來(lái)減少分支延遲(靜態(tài)方法)(1)預(yù)測(cè)分支失敗允許分支指令后的指令繼續(xù)在流水線中流動(dòng),就好象什么都沒(méi)發(fā)生似的。若確定分支失敗,將分支指令看作是一條普通指令,流水線正常流動(dòng)。若確定分支成功,流水線就把在分支指令之后取出的所有指令轉(zhuǎn)化為空操作,并按分支目地重新取指令執(zhí)行。3.4流水線的相關(guān)與沖突預(yù)測(cè)分支失敗的情況:分支失敗分支成功3.4流水線的相關(guān)與沖突例如:在某一程序中,分支指令在程序中所占的比例為25%,其中轉(zhuǎn)移成功的概率為2/3。試計(jì)算該流水線指令的平均時(shí)鐘周期數(shù)。(流水線理想的CPI=1)
解:假設(shè)采用預(yù)測(cè)分支失敗的方法則,執(zhí)行一條指令的平均時(shí)鐘周期數(shù)為CPI為:
CPI=(1-25%)×1+25%×1/3×1+25%×2/3×(1+1)≈1.173.4流水線的相
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人租房合同的(31篇)
- 2024-2025學(xué)年北京市房山區(qū)高一上學(xué)期期中考試歷史試卷
- 2025年公共設(shè)施配套建設(shè)項(xiàng)目房屋征收合同
- 2025年住宅銷售策劃合同模板規(guī)定
- 2025年官方離婚協(xié)議范本策劃(雙方同意版)
- 2025年全球貿(mào)易合同制定原則及合規(guī)要求解析
- 2025年債權(quán)轉(zhuǎn)讓與貸款合作協(xié)議
- 2025年車輛所有權(quán)變更策劃協(xié)議書(shū)模板
- 2025年農(nóng)村土地利用合作協(xié)議
- 2025年人事檔案授權(quán)委托協(xié)議
- 牽引管道孔壁與管道外壁之間注漿技術(shù)方案
- 肛周膿腫完整版課件
- 公司(工廠)廠牌管理規(guī)定
- 《移動(dòng)互聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課程標(biāo)準(zhǔn)
- 初一語(yǔ)文下冊(cè):閱讀理解知識(shí)點(diǎn)整理
- 定點(diǎn)醫(yī)療機(jī)構(gòu)接入驗(yàn)收申請(qǐng)表
- 膿毒血癥指南
- 四年級(jí)下冊(cè)口算練習(xí)-減法簡(jiǎn)便計(jì)算
- 【企業(yè)杜邦分析國(guó)內(nèi)外文獻(xiàn)綜述6000字】
- 腹部按壓技巧腸鏡檢查輔助技巧
- 安徽華納化學(xué)工業(yè)有限公司年產(chǎn)1000噸均苯四甲酸二酐、300噸潤(rùn)滑油助劑項(xiàng)目環(huán)境影響報(bào)告書(shū)
評(píng)論
0/150
提交評(píng)論