體系結(jié)構(gòu)windl流水線實(shí)驗(yàn)報(bào)告_第1頁(yè)
體系結(jié)構(gòu)windl流水線實(shí)驗(yàn)報(bào)告_第2頁(yè)
體系結(jié)構(gòu)windl流水線實(shí)驗(yàn)報(bào)告_第3頁(yè)
體系結(jié)構(gòu)windl流水線實(shí)驗(yàn)報(bào)告_第4頁(yè)
體系結(jié)構(gòu)windl流水線實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩5頁(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)介

實(shí)驗(yàn)?zāi)康模?) 熟悉計(jì)算機(jī)流水線基本概念2) 了解DLX基本流水線的各段的功能3) 了解各種不同指令在流水線中的實(shí)際流動(dòng)情況4) 對(duì)流水線做性能分析5) 了解影響流水線效率的因素一一數(shù)據(jù)相關(guān)、結(jié)構(gòu)相關(guān)、控制相關(guān),了解相關(guān)的種類(lèi)6) 了解解決數(shù)據(jù)相關(guān)的方法實(shí)驗(yàn)平臺(tái):WinDLX仿真器WinDLX簡(jiǎn)介:是一個(gè)圖形化、交互式的DLX流水線仿真器。可以裝入DLX匯編語(yǔ)言程序,然后單步,設(shè)斷點(diǎn)或是連續(xù)執(zhí)行該程序.CPU的寄存器,流水線,1/0和存儲(chǔ)器都可以用圖形表示出來(lái)提供了對(duì)流水線操作的統(tǒng)計(jì)功能.可以裝載文件名為*.s的文件.要求的硬件平臺(tái)是IBM-PC兼容機(jī).WinDLX是一個(gè)Windows應(yīng)用程序,運(yùn)行以上和以上的操作系統(tǒng).WinDLX軟件包中帶有說(shuō)明文件及教程,可以供使用者進(jìn)一步了解仿真器的使用方法和DLX處理器的原理?大家再進(jìn)行實(shí)驗(yàn)前應(yīng)該仔細(xì)閱讀這些文檔.實(shí)驗(yàn)內(nèi)容:1)在仿真器上分別運(yùn)行單條指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即數(shù)ALU指令,記錄它們?cè)诹魉€中的執(zhí)行情況Lw:=RegisterIrfitiucliont丿hid.$DMA(rO)IF IDinlEX韜BIIF[ID|HEX|MEM|WE||IF|abcrled£?-5 .-4.£ . 2 .寸=RegisterIrfitiucliont丿hid.$DMA(rO)IF IDinlEX韜BIIF[ID|HEX|MEM|WE||IF|abcrled£?-5 .-4.£ . 2 .寸.(]jFir-iihIrapOkOirap0x0IFT-SlallnopFC=OhOOODOILOI)4AB=OsOOOLiOlDcIR-OsOaODOODOA-O^OaODOODOAHI=QxOOODOOOOE=OsOOODDODDEHI=OsOOODOODOETA=OsOO0000DOALU-OkOQODOODOALUHZ-OzOQODOODOFP3R=QxOOODOOOODM:aE=a^aaoDDOooSDR=OhOOODOODOSDRHI=OkOOOLIOOLIOLDE=1DRHIB0-KL-===一一■8-=01234sG7?8A-11RHERRKRREEOKOODOQOOa=OkOOLIOOOOOOkOODOQOOOOkOODOQOOOOEOOooaooaOkOODOQOQOOKdODoaoaa0x00000000OKOODoaooaOKOODoaooaOEOOooaooaOKDODDaOQOOKOODoaooaOhOOLIOOOOOClockCycleDiagramInstiuctictE^1Cycles醐IC^T郵叩1InstiuctictE^1Cycles醐IC^T郵叩1IFiriditiEpOffltiepOri)nrp61r-41-21',:IF|D[intX|MEN|沁~F|ID|n:::-:|MEM|WB|IF|d::也::k0::0:30:OxJO:JC:JCJe:OC:OC:O:e::0::0:3:zO:JC:JC:〕匸〕〔二[18二匚二〕取〕〔二〔;0iv'ir■■r-z:xO::O:JO:OxJO:JC:JCJx:OC:OC:O:k::O::O:JDkODOODOODOhOODOODOOOsDOOOOOOOOzDOODOODODkODOODOODOmOODOODOOOsDOODOOOOOeDOODOODOnwnnnnnnnnnvnnnnnnnnn^nnnnnnnnnTnnnnnnnn:kO:K:JC:::<0:][:][:■vH'ir'ir'觀察此流水線時(shí)空?qǐng)D,可以發(fā)現(xiàn):轉(zhuǎn)移指令引起的延遲僅為1clocks,另2stalls是trap指令引起的,這個(gè)執(zhí)行結(jié)果似與不采用forwarding技術(shù)的前提相違,只能理解為對(duì)于無(wú)條件的轉(zhuǎn)移指令,新的PC值在EX階段即已被寫(xiě)入。Sw:XIeiory-1XIeiory-1Beqz:1Irshunfinn-/ . '3 ■- 1Irshunfinn-/ . '3 ■- ''oIlli1beq;ihFirish IFIDiri.EK|MEMWB1trapOkOiiIFabortedtrap0x0IF| 1-501ID11門(mén)叩IFHClockCycleDiagraA由此圖可見(jiàn),對(duì)于分支指令,總是用not-taken的策略來(lái)處理,并且也認(rèn)為新的PC值也在EX階段即已被寫(xiě)入,且cond條件也在EX段被算出(這顯然是一個(gè)極不合理的假設(shè),究竟為何分支指令的延遲為1stall有待進(jìn)一步探究)寄存器ALU指令立即數(shù)ALU指令足|ClockCycle1nop : (_IF]足|ClockCycle1nop : (_IF]RegisterPCIMIR4旺OkOODOOLIOLDE=OkOODOODOOOkOODOOLOcLDEHI=OkOODOODOOOkOODOOOOORO=OkOODOODOOOkOODOQOOOOkOODOOOOOE?l:眇R1SRll2)仿真器運(yùn)行一段無(wú)相關(guān)的程序,記錄它的執(zhí)行情況,計(jì)算流水線的加速比、吞吐率與效率。下面是一段不相關(guān)的程序,一共6條指令A(yù)DDIR5,R5,1SUBIR4,R4,1ANDR3,R3,R3XORR7,R7,R7ADDIR8,R8,1ADDIR9,R9,1在WinDLX中執(zhí)行的結(jié)果如下:

如上圖所示:6條指令一共執(zhí)行了10個(gè)周期,而每個(gè)指令都需要5個(gè)周期來(lái)完成。故可得加速比:5*6/10=3實(shí)際吞吐率:流水線由5段組成,完成6條指令,m=5,n=6,T=5At+(6-1)△二10At,Tp二n/T=3/(5At),即為實(shí)際吞吐率。效率:E=1/(1+(m-1)/n)=TP*At二3/5r 自r 自hzccards.寫(xiě)宇板的■牛iT'i編輯IK'I吉看IV'J甬Ai'I'i格式迫D“H?總丄uua.丄 JIL^LXILmain:addir2jr2jbufferaddir3.rN8LOOPsL申Rl,0(R2)ADDIR]JRU@1SW0(R2)JR1ADDIR2.R2.#4SUBR4,R3.R2BNcZR4,LOOFjFinishFii-Lishstrap03)在仿真器運(yùn)行一段程序:addi-addi關(guān)于r2的raw相關(guān):2stallslw-addi關(guān)于r1的raw相關(guān):2stallsaddi-sw關(guān)于r1的raw相關(guān):2stallsaddi-sub關(guān)于r2的raw相關(guān):2stallssub-bnez關(guān)于r4的raw相關(guān):2stallsbnez的控制相關(guān)(alwaysnot-take):1stalls(nothit)/0stall(hit)j的控制相關(guān):1stallstrap:2stalls在DLX上的實(shí)際運(yùn)行結(jié)果:

subr4.f:3..r£jFinishtrap0>0苛「1“1-147IFR-St^lIDIintEX|MEM|WBIijshuctiore/'Dr'clesbnez「4丄□匚iFtrap0>0IFIR-5tal|ID|intEX|MEM|WBsubr4.f:3..r£jFinishtrap0>0苛「1“1-147IFR-St^lIDIintEX|MEM|WBIijshuctiore/'Dr'clesbnez「4丄□匚iFtrap0>0IFIR-5tal|ID|intEX|MEM|WBIF|ID—IE乂|MEM|WBForwardingdiseblwd.Stalls:RAW?lalk:19C4G.15?t口FallCs>ole?]WAWTtalk:nl:_i005;dallCpc:h=.^:lStructural呑lull呑:U[O.OO^ofallCyclc^lControl磴21任:2(5.13S:or^l?l=yclfi±]At^lk:2(512S“allCuel&i)Total:2-2SlallH[5G.41號(hào)ofallCiiclts]Caniditiona.1Brane:Ties):Total:?[125O':>oFallInstructi口口不]=thor^口F:takan:I[口口.□□£:qIalleorid.Branchfi±]nottaken:1[50.00^ofallcond.Qranohe^]TlitT— Tnv1--?-[TLl~~ilitiw?統(tǒng)計(jì)該程序在流水線中出現(xiàn)的各種相關(guān)個(gè)數(shù),及其引起的流水線暫停周期數(shù):可見(jiàn),此執(zhí)行結(jié)果與之前手動(dòng)分析的結(jié)果完全相同4)通過(guò)在流水線中設(shè)置定向路徑來(lái)消除數(shù)據(jù)相關(guān)后,僅lw-addi—處會(huì)產(chǎn)生關(guān)于r1的raw相關(guān),延遲為1stall,轉(zhuǎn)移指令的延遲情況不變:—個(gè)循環(huán)的執(zhí)行時(shí)間:6+1+1=8(clocks)總執(zhí)行時(shí)間:(2)+(8*2-1)+(1+1)+(1+2)=22(clocks)總RAW相關(guān)的stall數(shù):1*2=2(clocks)運(yùn)行程序:Irsiiuzitrs丿耳九乞J' JJ-111111$ubr+j3/2IFID|n:E?<|MEM|戒1IF|=-FItI|idIiulEKI忖洞IWELIClocfaCycleDiagrqaihH:rhn.ir>rIF|rlllllHIItrapLbLIStalim.ilz有出入的原因是windlx認(rèn)為除了在lw-addi處有1stall的raw相關(guān),sub-bnez處也會(huì)有1stall的raw相關(guān)(真搞不懂,難道分支指令在IF階段開(kāi)始讀取寄存器的值了?。┌凑者@種想法重新計(jì)算的結(jié)果是:—個(gè)循環(huán)的執(zhí)行時(shí)間:6+1*2+1=9(clocks)總執(zhí)行時(shí)間:2+(9*2-1)+(1+1)+(1+2)=24(clocks)總執(zhí)行時(shí)間:總RAW相關(guān)的stall數(shù):2*2=4(clocks)

統(tǒng)計(jì)在流水線中出現(xiàn)的相關(guān)個(gè)數(shù),及其引起的流水線暫停周期數(shù):SIs:RAW±tall±:4門(mén)B.□□畫(huà)ofallCycles-!,there口tLDnt^lh:2〔巧□.□□宏口FRAWzt^lk)Branch/Jumpstalls:2(5(1IllIMofHAWstalls]Floahngpr-mtstalls:□[000^ofRAWstalls]WAWstalls:□[0.00^ofellC-r-cles]Stn.-icturalstalls:□[n.00^.nf召|(zhì)|Cyr:|g§lControlstall?:2fS.OO^ofallCycles)Trapstalls:2(3.00^;ofallCycle?]TotaI:8Stall(s)啓口口畫(huà)ofallCycles)Conditione1Bro-nchcs):Ti-t^l:2[12.50:-<otallInixtriji-honsj.thereof:takr=n:1[50.DO^sofoilcand.Branckies]noi:taken:'I[50.00^匚?Fmil匚:匚■門(mén)■士Branc=h^sJ I i i iiI5)通過(guò)對(duì)程序進(jìn)行編譯優(yōu)化并結(jié)合其他相關(guān)解決方法——分支預(yù)測(cè)與延遲槽:由于windlx默認(rèn)采取了alwaysnot-taken的分支預(yù)測(cè)策略,且不支持延遲槽的概念,所以唯一可做的調(diào)度就是通過(guò)分離lw-addi和sub-bnez指令來(lái)消除raw相關(guān),調(diào)度后的程序如下圖所示:趕件氓J軸碌ri£'i古石趕件氓J軸碌ri£'i古石iV'iIL'殆疋「L□wWl導(dǎo)?二丄I」U=Q丄 HL口丄丄LnnB.in.:add!r2^bu.fferadd!r3jrZjSLOOP:LWRl』0(R2)ADDIF2JR2,的1AUDIRl^R1#1SOTR4jR:3^R2sw-4(R2),RLBNe3R43LOOPJFinisl-LFinisln:trap0schcduled-工一石:^5K_總執(zhí)行時(shí)間:2+(7*2-1)+(1+1)+(1+2)=20(clocks)運(yùn)行程序:ClockCycleDiagrfiMInstrucririns/CjjcIbss0:-:l:fFc(r2]..r1bnez『4丄匚I匚IFjFinishtrapOxUtrap1斗151C17運(yùn)行程序:ClockCycleDiagrfiMInstrucririns/CjjcIbss0:-:l:fFc(r2]..r1bnez『4丄匚I匚IFjFinishtrapOxUtrap1斗151C174□IFIDintEXMEMWBIFIDintEXMEMWBIFIDintEXMEMWBIFabortedIFT-StallIDIFIFnop統(tǒng)計(jì)在流水線中出現(xiàn)的相關(guān)個(gè)數(shù),及其引起的流水線暫停周期數(shù)5t-■=>.1Is:FIAWstalls:0|U.□□:<::of戸11匚'r'cleal..thereof:LDstalls:0[0.00^ufRAWs=3ll切Branch/Jumpstalls:0[0.00^ofRAWstalls]noatingpoiritstalls:0|'0.UU/<F'AWs-bzills]WAWstalls:Ll[匚l工11工老ofallC>r-cl&&]Gtri.-icturalstalls:0[LI.OO--SofallCycles]Controlstalls:2(9.52^of?mllCycles]Typstalls:2|'9.52^<cFmil匚vcle:e:'|Tot-al:4£也ll|*||:1y.U5:=coF呂IICycles]Coiiid.l+■loiiaJ_Bmnu:hssj:T口2[12.5U:_:<口FallInstructi口門(mén)wjtherscif:taken:1(5O.UlJ5^口Fmilc口nd.BrarichesJli口ttaken:1[Sll.lJU^:'ofall匚:口nd.Eranch&sj實(shí)驗(yàn)步驟:運(yùn)行WinDLX仿真器.根據(jù)實(shí)驗(yàn)內(nèi)容的要求設(shè)計(jì)出相應(yīng)的DLX程序.完成所有的實(shí)驗(yàn)內(nèi)容.實(shí)驗(yàn)時(shí)間:4課時(shí)實(shí)驗(yàn)要求:必做實(shí)驗(yàn)。自己設(shè)計(jì)出體現(xiàn)實(shí)驗(yàn)要求的程序。比如在進(jìn)行統(tǒng)計(jì)相關(guān)種類(lèi)與個(gè)數(shù)的步驟中所用到的程序怎么盡可能包含所有種類(lèi)的相關(guān),建議要求學(xué)生實(shí)際在仿真器運(yùn)行程序并統(tǒng)計(jì)結(jié)果,課后形成圖表上交實(shí)驗(yàn)報(bào)告。通過(guò)實(shí)驗(yàn)分析相關(guān)對(duì)流水線的性能影響,實(shí)際掌握各種相關(guān)解決策略,比較采用各種策略前后流水線的性能,形成圖表上交實(shí)驗(yàn)報(bào)告。參考材料:計(jì)算機(jī)體系結(jié)構(gòu)教材、WinDLX仿真器使用指南附錄編寫(xiě)代碼的要求:1)需要編寫(xiě)代碼文件*.s。所有程序均用DLX匯編語(yǔ)言編寫(xiě).2)文件格式請(qǐng)參照WinDLX自帶的例子程序.常見(jiàn)問(wèn)題:1■Load指令后都是nop注意選擇了文件后要Select,或雙擊,下方SelectFiles顯示了相應(yīng)的文件名才是已經(jīng)選擇了文件。選擇之后需再Load.正確的Load會(huì)顯示:File(s)LoadedSuccessfully,ResetDLX此時(shí)在Window->Code窗口里應(yīng)該能看到你的代碼。Load時(shí)會(huì)出現(xiàn)“CodeorDataError”這是因?yàn)槟愕膮R編代碼有錯(cuò)oDLX匯編的格式請(qǐng)參考幫助文件之TheDLX-AssemblyLanguage&&DLXInstruetionsSet&&DLX-Examples如果是Load自帶的GCM和FACT的例子,請(qǐng)先務(wù)必Loado(WinDLX可以一次load多個(gè).s文件).如何初始化內(nèi)存呢Memory->Change里面可以察看/設(shè)置內(nèi)存的值,指定Address和Value后Set即可。Memory->Display可以顯示內(nèi)存的值。程序運(yùn)行時(shí)會(huì)報(bào)錯(cuò)“MemError”可能是因?yàn)槟愠绦蛑杏玫降脑L存地址沒(méi)有對(duì)齊導(dǎo)致,Memory是按字對(duì)齊的,訪問(wèn)地址必須是4的倍數(shù)。也可能是地址超過(guò)了存儲(chǔ)器得地址范圍。默認(rèn)的存儲(chǔ)器大小是0x8000Bytes,可以通過(guò)Configuration->MemorySize來(lái)設(shè)置大小。.如何載入立即值可以通過(guò)LHI指令和其他指令的組合,或者用ADDI指令來(lái)實(shí)現(xiàn)。注意LW是訪存指令,并非載入立即值指令。具體指令請(qǐng)參考DLXInstruetionSet。指令用到了立即數(shù)需不需要用“#“用不用不會(huì)影響,具體請(qǐng)參考TheDLX-AssemblyLanguage&&DLX-Examples.例子里的.data,.global等是干什么用的這些是編譯制導(dǎo)語(yǔ)句,具體含義請(qǐng)參考TheDLX-AssemblyLanguage->Direetives..spacesizeMovethecurrentstoragepointerforwardsizebytes(toleave.spacesizesomeempty spaceinmemory).data[address]Causethefollowingcodeanddatatobestoredinthedataarea.Ifanaddresswassupplied,thedatawillbeloadedstartingatthataddress,otherwise,thelastvalueforthedatapointerwillbeused.Ifwewerejustreadingdatabasedonthetext(code)pointer,storethataddresssothatwecancontinuefromtherelater(ona.textdirective)..

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論