




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)報(bào)告課程名稱:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)學(xué)院:計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:好老師學(xué)生姓名:愛學(xué)習(xí)的大哥哥 實(shí)驗(yàn)成績:日期:2017年5月26日電子科技大學(xué)計(jì)算機(jī)學(xué)院實(shí)驗(yàn)中心 電 子 科 技 大 學(xué)實(shí) 驗(yàn) 報(bào) 告一、 實(shí)驗(yàn)項(xiàng)目名稱:解決控制冒險(xiǎn)二、 實(shí)驗(yàn)室名稱:主樓A2-412 實(shí)驗(yàn)時(shí)間:2017年5月26日三、 實(shí)驗(yàn)?zāi)康脑诮o出的流水線代碼基礎(chǔ)上,增加ID級關(guān)閉寫使能信號(hào),以解決不正確分支指令的影響。通過完成這次實(shí)驗(yàn),加深對控制冒險(xiǎn)現(xiàn)象的產(chǎn)生和消除控制冒險(xiǎn)的原理的理解,提高編程和測試的能力。四、 實(shí)驗(yàn)原理(一) 轉(zhuǎn)移相關(guān)問題轉(zhuǎn)移指令改變程序順序執(zhí)行的特性。由于是流水線操作,在
2、轉(zhuǎn)移發(fā)生之前,若干條轉(zhuǎn)移指令的后續(xù)指令已被取到流水線處理機(jī)中。這就是所謂的轉(zhuǎn)移相關(guān)問題(branch hazard),有時(shí)也稱之為控制相關(guān)問題(control hazard)。回顧我們前面介紹的處理轉(zhuǎn)移相關(guān)問題的4種技術(shù):以上任何一種方法都會(huì)使硬件固定,編譯時(shí)會(huì)根據(jù)硬件機(jī)制和轉(zhuǎn)移行為對代碼進(jìn)行調(diào)度,以獲取最佳性能。(二) 消除無條件轉(zhuǎn)移指令的后一條指令影響每條指令在ID時(shí)判斷在當(dāng)前在EXE階段的操作碼暫存器的值是否是無條件轉(zhuǎn)移指令:如果是,那么不使能當(dāng)前在ID階段的那條指令的WZ、WMEM和WREG的信號(hào),這樣這條指令的執(zhí)行就對程序的邏輯沒有影響。(三) 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令的實(shí)現(xiàn)思想與無
3、條件轉(zhuǎn)移指令有所類似,但不完全相同。首先對于條件轉(zhuǎn)移指令本身來說,需要判斷Z標(biāo)志是否能用。若Z標(biāo)志還沒有準(zhǔn)備好,則要暫停流水線一個(gè)時(shí)鐘周期。這一點(diǎn)和判斷數(shù)據(jù)相關(guān)極為相似。但由于轉(zhuǎn)移指令只可能改變PC而不改變其它狀態(tài),因此用不著封鎖WZ,WMEM,WREG(對轉(zhuǎn)移指令來講,這些信號(hào)原本就為0)。因?yàn)槿绻幵谧g碼級的是條件轉(zhuǎn)移指令,而且處在EXE級的是ALU類型的指令(就要寫Z標(biāo)志到流水線寄存器Z了),則要等到ALU指令寫完Z后,再判斷轉(zhuǎn)移與否,為此要暫停一個(gè)周期(或者如前所述,插入一條nop指令)。對于條件轉(zhuǎn)移指令的下一條指令的處理辦法與無條件指令不同。因?yàn)闂l件轉(zhuǎn)移的下一條指令有可能執(zhí)行也有可能
4、不執(zhí)行,需要在對無條件轉(zhuǎn)移指令的處理策略上進(jìn)行擴(kuò)展:條件轉(zhuǎn)移的下一條指令在ID時(shí)判斷在當(dāng)前在EXE階段的操作碼暫存器的值是否是條件轉(zhuǎn)移指令并且判斷是否轉(zhuǎn)移成功(Z的值沒變),如果發(fā)現(xiàn)成功,那么不使能當(dāng)前在ID階段的那條指令的WZ、WMEM和WREG的信號(hào),這條指令的執(zhí)行就對程序的邏輯沒有影響(與無條件處理方式相同);如果發(fā)現(xiàn)轉(zhuǎn)移不成功,說明本條指令為有效指令,使能當(dāng)前在ID階段的那條指令的WZ、WMEM和WREG的信號(hào),本條指令正常執(zhí)行。五、 實(shí)驗(yàn)內(nèi)容在給出的流水線代碼基礎(chǔ)上,增加ID級關(guān)閉寫使能信號(hào),以解決不正確分支指令的影響。六、 實(shí)驗(yàn)器材(設(shè)備、元器件)ISE Design Suite
5、14.7集成開發(fā)環(huán)境,編程語言:Verilog HDL硬件描述語言七、 實(shí)驗(yàn)步驟1、新建項(xiàng)目,將上個(gè)實(shí)驗(yàn)完成的解決數(shù)據(jù)冒險(xiǎn)與數(shù)據(jù)前推的代碼拷貝進(jìn)來2、在直接跳轉(zhuǎn)中,需要廢除跳轉(zhuǎn)指令的下一條(當(dāng)譯碼出跳轉(zhuǎn)指令時(shí),下一條已經(jīng)流出,所以要廢除掉);而在條件跳轉(zhuǎn)中,需要根據(jù)z的值來判斷是否廢除下一條指令。在代碼中譯碼級,pcsource定義如下assign pcsource1=i_jr|i_j|i_jal;/選擇下一條指令的地址,00選PC+4,01選轉(zhuǎn)移地址,10選寄存器內(nèi)地址,11選跳轉(zhuǎn)地址assign pcsource0=i_beq&rsrtequ|i_bne&rsrtequ|i
6、_j|i_jal;LOADDEPEN,BTAKEN,ID_branch );如果是直接跳轉(zhuǎn),那么一定廢除,pcsource=11,如果是條件跳轉(zhuǎn),廢除的條件就是pcsource=01,暫不考慮jr指令,那么要廢除下一條指令的條件就是pcsource=00;3、在頂層模塊添加變量wire wz;/決定是否寫z值wire 1:0 exepcsource;/exe pcsource 主要用在條件跳轉(zhuǎn)wz需要在id級計(jì)算出來,然后傳遞到exe級,如果廢除指令那么wz=0;exepcsource與之相反,從exe級傳遞到id級,用來指示下一條指令是否廢除。4、增加這兩個(gè)變量后,頂層模塊 id級與exe級
7、的代碼如下pipeid id_stage (dpc4,inst, /指令譯碼ID級 wrn,wdi,wwreg,clock,resetn, bpc,jpc,pcsource,dwreg,dm2reg,dwmem,daluc,daluimm,da,db,dimm,drn,dshift,djal,z, ern,mrn,ewreg,mwreg,idadepend,idbdepend,em2reg,wpc,exepcsource,wz); pipeexe exe_stage (wz,ealuc,ealuimm,ea,eb,eimm,eshift,ern0,epc4,/指令執(zhí)行EXE ejal,ern,
8、ealu,z, malu,wmo,exeadepend,exebdepend); 5、加入exepcsource后,根據(jù)步驟2的分析,如果pcsource!=00,就廢除掉下一條指令,即wreg、wmem、wz全部置0,這里需要注意的是,wz的值有多種表示方法,由于wz只在控制冒險(xiǎn)中使用,并且在控制冒險(xiǎn)中wreg=wmem=wz,所以這里可以直接將wreg的值賦給wz,也可以wz=exepcsource0(pcsource0=i_beq&rsrtequ|i_bne&rsrtequ|i_j|i_jal,在條件跳轉(zhuǎn)中pcsource0= i_beq&rsrtequ|i_bn
9、e)assign wreg=(i_add|i_sub|i_mul|i_and|i_or|i_xor|i_sll| /wreg為1時(shí)寫寄存器堆中某一寄存器,否則不寫 i_srl|i_sra|i_addi|i_muli|i_andi|i_ori|i_xori| i_lw|i_lui|i_jal) & wpc & (exepcsource0=0) & (exepcsource1=0);assign wmem=i_sw & wpc & (exepcsource0=0) & (exepcsource1=0);/為1時(shí)寫存儲(chǔ)器,否則不寫assign wz=w
10、regid級cu模塊完整代碼如下:module pipeidcu(rsrtequ,func, op,wreg,m2reg,wmem,aluc,regrt,aluimm, sext,pcsource,shift,jal, /*數(shù)據(jù)前推加入的參數(shù)*/ exe_rd,mem_rd,exe_wreg,mem_wreg,idadepend,idbdepend,rs,rt,rd,exe_m2reg,wpc,exepcsource,wz ); input 1:0 exepcsource; input 4:0 exe_rd,mem_rd,rs,rt,rd; input exe_wreg,mem_wreg,ex
11、e_m2reg; output 1:0 idadepend,idbdepend; output wpc; /wreg 是否寫寄存器 /dm2reg為1時(shí)將存儲(chǔ)器數(shù)據(jù)寫入寄存器,否則將ALU結(jié)果寫入寄存器 /dwmem為1時(shí)寫存儲(chǔ)器,否則不寫 /daluimm為1時(shí)ALUb輸入端使用立即數(shù) /dshift為1時(shí)ALUa輸入端使用移位位數(shù) /djal為1時(shí)執(zhí)行jal指令,否則不是 input rsrtequ; input 5:0 func,op; output wz,wreg,m2reg,wmem,regrt,aluimm,sext,shift,jal; output 4:0 aluc; outp
12、ut 1:0 pcsource; wire i_add,i_sub,i_mul,i_and,i_or,i_xor,i_sll,i_srl,i_sra,i_jr; /對指令進(jìn)行譯碼 wire i_addi,i_muli,i_andi,i_ori,i_xori,i_lw,i_sw,i_beq,i_bne,i_lui,i_j,i_jal;and(i_add,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_sub,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_mul,op5,op4,op3,op2,o
13、p1,op0,func2,func1,func0);and(i_and,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_or,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_xor,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_sra,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_srl,op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_sll,
14、op5,op4,op3,op2,op1,op0,func2,func1,func0);and(i_jr,op5,op4,op3,op2,op1,op0,func2,func1,func0); and(i_addi,op5,op4,op3,op2,op1,op0); and(i_muli,op5,op4,op3,op2,op1,op0); and(i_andi,op5,op4,op3,op2,op1,op0); and(i_ori,op5,op4,op3,op2,op1,op0); and(i_xori,op5,op4,op3,op2,op1,op0); and(i_lw,op5,op4,op3
15、,op2,op1,op0); and(i_sw,op5,op4,op3,op2,op1,op0); and(i_beq,op5,op4,op3,op2,op1,op0); and(i_bne,op5,op4,op3,op2,op1,op0); and(i_lui,op5,op4,op3,op2,op1,op0); and(i_j,op5,op4,op3,op2,op1,op0); and(i_jal,op5,op4,op3,op2,op1,op0); wire i_rs=i_add|i_sub|i_mul|i_and|i_or|i_xor|i_jr|i_addi|i_muli| i_andi|
16、i_ori|i_xori|i_lw|i_sw|i_beq|i_bne; wire i_rt=i_add|i_sub|i_mul|i_and|i_or|i_xor|i_sra|i_srl|i_sll|i_sw|i_beq|i_bne; /控制信號(hào)的生成/ assign wreg=(i_add|i_sub|i_mul|i_and|i_or|i_xor|i_sll| /wreg為1時(shí)寫寄存器堆中某一寄存器,否則不寫 i_srl|i_sra|i_addi|i_muli|i_andi|i_ori|i_xori| i_lw|i_lui|i_jal) & wpc & (exepcsource
17、0=0) & (exepcsource1=0); assign regrt=i_addi|i_muli|i_andi|i_ori|i_xori|i_lw|i_lui; /regrt為1時(shí)目的寄存器是rt,否則為rd assign jal=i_jal; /為1時(shí)執(zhí)行jal指令,否則不是 assign m2reg=i_lw; /為1時(shí)將存儲(chǔ)器數(shù)據(jù)寫入寄存器,否則將ALU結(jié)果寫入寄存器 assign shift=i_sll|i_srl|i_sra;/為1時(shí)ALUa輸入端使用移位位數(shù) assign aluimm=i_addi|i_muli|i_andi|i_ori|i_xori|i_lw|i_
18、lui|i_sw;/為1時(shí)ALUb輸入端使用立即數(shù) assign sext=i_addi|i_muli|i_lw|i_sw|i_beq|i_bne;/為1時(shí)符號(hào)拓展,否則零拓展 assign aluc4=i_sra;/ALU的控制碼 assign aluc3=i_sub|i_or|i_ori|i_xor|i_xori| i_srl|i_sra|i_beq|i_bne;/ALU的控制碼 assign aluc2=i_sll|i_srl|i_sra|i_lui;/ALU的控制碼 assign aluc1=i_and|i_andi|i_or|i_ori|i_xor|i_xori|i_beq|i_bn
19、e;/ALU的控制碼 assign aluc0=i_mul|i_muli|i_xor|i_xori|i_sll|i_srl|i_sra|i_beq|i_bne;/ALU的控制碼 assign wmem=i_sw & wpc & (exepcsource0=0) & (exepcsource1=0);/為1時(shí)寫存儲(chǔ)器,否則不寫 /assign wmem=i_sw & wpcir; /判斷相關(guān)性 assign rs1IsReg=i_and | i_andi | i_or | i_ori | i_add | i_addi | i_sub | i_lw | i_sw |
20、 i_sll | i_srl | i_sra; assign rs2IsReg=i_and | i_or | i_add | i_sub | i_sll | i_sra | i_srl; assign exe_a_depen=(rs=exe_rd) & (exe_wreg=1) & (rs1IsReg); assign mem_a_depen=(rs=mem_rd) & (mem_wreg=1) & (rs1IsReg); assign exe_b_depen=(rt=exe_rd) & (exe_wreg=1) & (rs2IsReg) | (
21、rd=exe_rd)&(exe_wreg=1)&(i_sw); assign mem_b_depen=(rt=mem_rd) & (mem_wreg=1) & (rs2IsReg) | (rd=mem_rd)&(mem_wreg=1)&(i_sw); assign idadepend0= (mem_a_depen | 0); assign idadepend1=(mem_a_depen | exe_a_depen | 0) ; /a_depen 和 b_depen 信號(hào)全部都需要在暫停流水線時(shí)候跟隨檢測 assign idbdepend0=(me
22、m_b_depen | aluimm | 0 ); assign idbdepend1=(mem_b_depen | exe_b_depen | 0 ); /b_depen 00 b 01 imm 10 mem_wb 11 wb_c assign stall =(rs=exe_rd) & exe_m2reg & rs1IsReg ) | (rt=exe_rd) & exe_m2reg & rs2IsReg) | (rd=exe_rd ) & exe_wreg & i_sw) | (rd=mem_rd) & mem_wreg & i
23、_sw); assign wz=wreg; assign wpc = stall; assign pcsource1=i_jr|i_j|i_jal;/選擇下一條指令的地址,00選PC+4,01選轉(zhuǎn)移地址,10選寄存器內(nèi)地址,11選跳轉(zhuǎn)地址 assign pcsource0=i_beq&rsrtequ|i_bne&rsrtequ|i_j|i_jal;endmodule八、 實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析(一) 畫出修改后的流水線圖(二) 寫出增加的多路選擇器的選擇信號(hào)邏輯函數(shù)增加的多路選擇器信號(hào)邏輯函數(shù)如下: /加上數(shù)據(jù)前推之后變成四選一的多路器 mux4x32 alu_ina (ea,sa
24、,malu,wmo,exe_a_depend,alua); mux4x32 alu_inb (eb,eimm,malu,wmo,exe_b_depend,alub); mux2x32 save_pc8(ealu0,epc8,ejal,ealu);/選擇最后ALU結(jié)果的來源,ejal為0時(shí)是ALU內(nèi)部算出的結(jié)果,為1時(shí)是PC+8 assign ern=ern0|5ejal;/當(dāng)jal指令執(zhí)行時(shí),把返回地址寫入31號(hào)寄存器 alu al_unit (alua,alub,ealuc,ealu0,z,wz);/ALU增加的多路選擇器(四選一)的定義如下:module mux4x32(a0,a1,a2,
25、a3,s,y ); input 31:0 a0,a1,a2,a3; input 1:0 s; output 31:0 y; assign y=(s=2'b00)?a0:(s=2'b01)?a1:(s=2'b10)?a2:a3;/四選一endmodule(三)流水線仿真結(jié)果,對仿真結(jié)果作必要說明1. 首先測試無條件跳轉(zhuǎn)jump指令,代碼如下 /測試branch指令(無條件轉(zhuǎn)移) assign rom6'h00=32'h48000002;/ jump,2; 跳轉(zhuǎn)到 add r3,r1,r2 assign rom6'h01=32'h28003c
26、62;/ ori r2,r3,15; assign rom6'h02=32'h00100c22;/ add r3,r1,r2; assign rom6'h03=32'h00100c22;/ add r3,r1,r2; assign rom6'h04=32'h00100c22;/ add r3,r1,r2; assign rom6'h05=32'h00000000;在指令中,第一條指令便是一條無條件跳轉(zhuǎn)指令,要跳轉(zhuǎn)到地址為2 的指令,控制冒險(xiǎn)應(yīng)廢除掉ori指令,即r2不寫入r3|15(15),到了add指令時(shí),alu結(jié)果應(yīng)為0運(yùn)行程序,觀察結(jié)果分析一下,在300ns時(shí),計(jì)算出ori指令的值為15,但是并沒有寫入寄存器,因?yàn)樵?00ns時(shí)alu的值為0,故證明了無條件跳轉(zhuǎn)的控制冒險(xiǎn)消除成功。2. 測試條件跳轉(zhuǎn)branch,代碼如下 /測試branch指令的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保健康飲料行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 物理風(fēng)車發(fā)電模型行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 頭孢三嗪(頭孢曲松)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 烘焙食材超市企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 物料識(shí)別與分類技術(shù)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 環(huán)保保溫隔熱膩?zhàn)有袠I(yè)跨境出海戰(zhàn)略研究報(bào)告
- 生物質(zhì)能源項(xiàng)目招標(biāo)合同(2篇)
- 2025年高壓整體式多路閥項(xiàng)目合作計(jì)劃書
- 2025年節(jié)能、高效干燥設(shè)備項(xiàng)目合作計(jì)劃書
- 五年級校園健康文化建設(shè)計(jì)劃
- 社區(qū)矯正人員心理健康教育講座
- 測量員培訓(xùn)試題及答案
- 財(cái)富顧問理論考試題庫(含答案)
- 職場溝通職場溝通與人際關(guān)系處理知到課后答案智慧樹章節(jié)測試答案2025年春山東管理學(xué)院
- 二項(xiàng)式定理專項(xiàng)訓(xùn)練解析版
- 智慧樹知到《運(yùn)動(dòng)生理學(xué)(湖南師范大學(xué))》2025章節(jié)測試附答案
- 智網(wǎng)招聘面試題及答案
- 實(shí)驗(yàn)06 探究凸透鏡成像的規(guī)律-中考物理實(shí)驗(yàn)之真題匯編(解析版)
- 電商客服崗轉(zhuǎn)正述職報(bào)告
- 標(biāo)準(zhǔn)實(shí)施情況報(bào)告
- 農(nóng)業(yè)安全問題
評論
0/150
提交評論