计算机组成原理 控制冒险,电子科大-系统结构实验-解决控制冒险.docx
電子科大-系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)-解決控制冒險(xiǎn)
實(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í)的大哥哥2014666666666實(shí)驗(yàn)成績(jī):日 期: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級(jí)關(guān)閉寫使能信號(hào),以解決不正確分支指令的影響。通過(guò)完成這次實(shí)驗(yàn),加深對(duì)控制冒險(xiǎn)現(xiàn)象的產(chǎn)生和消除控制冒險(xiǎn)的原理的理解,提高編程和測(cè)試的能力。實(shí)驗(yàn)原理轉(zhuǎn)移相關(guān)問(wèn)題轉(zhuǎn)移指令改變程序順序執(zhí)行的特性。由于是流水線操作,在轉(zhuǎn)移發(fā)生之前,若干條轉(zhuǎn)移指令的后續(xù)指令已被取到流水線處理機(jī)中。這就是所謂的轉(zhuǎn)移相關(guān)問(wèn)題(branch hazard),有時(shí)也稱之為控制相關(guān)問(wèn)題(control hazard)。回顧我們前面介紹的處理轉(zhuǎn)移相關(guān)問(wèn)題的4種技術(shù):以上任何一種方法都會(huì)使硬件固定,編譯時(shí)會(huì)根據(jù)硬件機(jī)制和轉(zhuǎn)移行為對(duì)代碼進(jìn)行調(diào)度,以獲取最佳性能。消除無(wú)條件轉(zhuǎn)移指令的后一條指令影響每條指令在ID時(shí)判斷在當(dāng)前在EXE階段的操作碼暫存器的值是否是無(wú)條件轉(zhuǎn)移指令:如果是,那么不使能當(dāng)前在ID階段的那條指令的WZ、WMEM和WREG的信號(hào),這樣這條指令的執(zhí)行就對(duì)程序的邏輯沒有影響。條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令的實(shí)現(xiàn)思想與無(wú)條件轉(zhuǎn)移指令有所類似,但不完全相同。首先對(duì)于條件轉(zhuǎn)移指令本身來(lái)說(shuō),需要判斷Z標(biāo)志是否能用。若Z標(biāo)志還沒有準(zhǔn)備好,則要暫停流水線一個(gè)時(shí)鐘周期。這一點(diǎn)和判斷數(shù)據(jù)相關(guān)極為相似。但由于轉(zhuǎn)移指令只可能改變PC而不改變其它狀態(tài),因此用不著封鎖WZ,WMEM,WREG(對(duì)轉(zhuǎn)移指令來(lái)講,這些信號(hào)原本就為0)。因?yàn)槿绻幵谧g碼級(jí)的是條件轉(zhuǎn)移指令,而且處在EXE級(jí)的是ALU類型的指令(就要寫Z標(biāo)志到流水線寄存器Z了),則要等到ALU指令寫完Z后,再判斷轉(zhuǎn)移與否,為此要暫停一個(gè)周期(或者如前所述,插入一條nop指令)。對(duì)于條件轉(zhuǎn)移指令的下一條指令的處理辦法與無(wú)條件指令不同。因?yàn)闂l件轉(zhuǎn)移的下一條指令有可能執(zhí)行也有可能不執(zhí)行,需要在對(duì)無(wú)條件轉(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í)行就對(duì)程序的邏輯沒有影響(與無(wú)條件處理方式相同);如果發(fā)現(xiàn)轉(zhuǎn)移不成功,說(shuō)明本條指令為有效指令,使能當(dāng)前在ID階段的那條指令的WZ、WMEM和WREG的信號(hào),本條指令正常執(zhí)行。實(shí)驗(yàn)內(nèi)容在給出的流水線代碼基礎(chǔ)上,增加ID級(jí)關(guān)閉寫使能信號(hào),以解決不正確分支指令的影響。實(shí)驗(yàn)器材(設(shè)備、元器件)ISE Design Suite 14.7集成開發(fā)環(huán)境,編程語(yǔ)言:Verilog HDL硬件描述語(yǔ)言實(shí)驗(yàn)步驟1、新建項(xiàng)目,將上個(gè)實(shí)驗(yàn)完成的解決數(shù)據(jù)冒險(xiǎn)與數(shù)據(jù)前推的代碼拷貝進(jìn)來(lái)2、在直接跳轉(zhuǎn)中,需要廢除跳轉(zhuǎn)指令的下一條(當(dāng)譯碼出跳轉(zhuǎn)指令時(shí),下一條已經(jīng)流出,所以要廢除掉);而在條件跳轉(zhuǎn)中,需要根據(jù)z的值來(lái)判斷是否廢除下一條指令。在代碼中譯碼級(jí),pcsource定義如下assign pcsource[1]=i_jr|i_j|i_jal;//選擇下一條指令的地址,00選PC+4,01選轉(zhuǎn)移地址,10選寄存器內(nèi)地址,11選跳轉(zhuǎn)地址assign pcsource[0]=i_beq&rsrtequ|i_bne&~rsrtequ|i_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í)計(jì)算出來(lái),然后傳遞到exe級(jí),如果廢除指令那么wz=0;exepcsource與之相反,從exe級(jí)傳遞到id級(jí),用來(lái)指示下一條指令是否廢除。4、增加這兩個(gè)變量后,頂層模塊 id級(jí)與exe級(jí)的代碼如下pipeid id_stage (dpc4,inst,//指令譯碼ID級(jí) 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
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理 控制冒险,电子科大-系统结构实验-解决控制冒险.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 准分子激光近视眼手术后的用药应该注意什么
- 下一篇: 龋齿跟龃齿有区别吗