計算機系統(tǒng)結(jié)構(gòu)實驗報告_第1頁
計算機系統(tǒng)結(jié)構(gòu)實驗報告_第2頁
計算機系統(tǒng)結(jié)構(gòu)實驗報告_第3頁
計算機系統(tǒng)結(jié)構(gòu)實驗報告_第4頁
計算機系統(tǒng)結(jié)構(gòu)實驗報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、電 子 科 技 大 學(xué)實 驗 報 告學(xué)生姓名: 學(xué) 號: 一、實驗室名稱:計算機學(xué)院實驗中心二、實驗項目名稱:計算機系統(tǒng)結(jié)構(gòu)課程實驗三、實驗原理:1. 由教師給出一個具有基本功能的Verilog HDL流水線源代碼;2. 學(xué)生完成下面3個方面的內(nèi)容:(1)自行設(shè)計匯編偽指令格式,完成一個能把自己的匯編指令轉(zhuǎn)換成流水線CPU能夠識別的二進制指令的匯編器,實現(xiàn)語言不限;(2)自行設(shè)計能夠解決數(shù)據(jù)相關(guān)的機制并基于源代碼進行擴展;(3)自行設(shè)計能夠解決控制相關(guān)的機制并基于源代碼進行擴展。四、實驗?zāi)康模簬椭鷮W(xué)生理解流水線的運行機制和基于Verilog HDL硬件描述語言的實現(xiàn)技術(shù)。五、實驗內(nèi)容:(一)

2、基本流水線分析1.1 認真閱讀和理解源代碼,請詳細按要求回答每個問題。1. 源代碼中文件是按什么樣的規(guī)律來組織的?答:按照子模塊組織源代碼文件。模塊pipelinedcpu_tb用來控制CPU的時鐘等信號,調(diào)用pipelinedcpu模塊(假定為1級模塊,最高級),1級模塊中按順序調(diào)用各個周期以及周期與周期之間的中間寄存器模塊(假定為2級模塊),2級模塊中調(diào)用各自部件模塊(假定為3級模塊)。模塊pipelinedcpu用來控制每級流水線及流水線級之間的控制信號,寄存器信息,其余子模塊用來具體實現(xiàn)每一級流水線的功能。2. 存儲器的實現(xiàn)方式?答:用一個二維數(shù)組reg 31:0 ram 0:31 實

3、現(xiàn),其中第一維代表32位地址,第二維代表32位數(shù)據(jù)接口有:32位輸入數(shù)據(jù)和輸出,32位地址,一個同步時鐘脈沖clk,一個控制寫入的信號we先對二維數(shù)組進行初始化讀數(shù)據(jù)時不需要時鐘脈沖的激勵,寫數(shù)據(jù)時需要時鐘脈沖的上升沿激勵信號并且we信號為13. 源代碼文件中的流水線與我們課堂上講的原理電路圖有何相同之處,有何不同之處答:相同:WB級,寫回級使用2路32位的多路選擇器來選擇是獲取ALU的計算結(jié)果還是LOAD指令從數(shù)據(jù)存儲器中讀取出來的數(shù)據(jù)。這里與課堂上所講的內(nèi)容基本相同。流水線都分為五個執(zhí)行級,都是在譯碼級產(chǎn)生各種控制信號,一級一級往后傳,分離的指令存儲器和數(shù)據(jù)存儲器。各個部件以及邏輯都沒有太

4、大差異不同:源代碼文件中的流水線中的ALU部件的輸出接在一個兩路選擇器上,并且沒有zero輸出端,而課堂上的直接輸出到中間寄存器源代碼文件中沒有關(guān)于消除數(shù)據(jù)相關(guān)的代碼,而課堂上講的原理電路圖有消除數(shù)據(jù)相關(guān)的線路沒有數(shù)據(jù)前推和load前推的相關(guān)實現(xiàn),指令格式的區(qū)別,流水線alu運算部件兩個端口都可以接受立即數(shù)。4. 通過分析,寫出本流水線的控制信號有哪些?對比我們課堂上講的控制信號的差別有哪些?答:本實驗的控制信號主要有:wreg、m2reg、wmem、jal、aluc、aluimm分別表示指令是否要寫寄存器、信號是否有數(shù)據(jù)存儲器中的數(shù)據(jù)需要寫回寄存器、是否有指令需要往數(shù)據(jù)存儲器中寫數(shù)據(jù)、流水線

5、寄存器R是要寫入ALU的運算結(jié)果還是EPC的內(nèi)容、指令的操作類型,例如加、減、與、或。、ALU的B輸入端是否要選擇立即數(shù)輸入差別主要有:regrt信號控制目的寄存器是rd或rt,sext信號控制是否需要傳遞立即數(shù),wmem信號控制是否需要訪存,jal信號控制exe級和mem級之間是傳遞運算結(jié)果還是立即數(shù),這些信號是課堂上的流水線沒有的。1.2 針對流水線的指令集,編寫必要的測試指令,分析運算結(jié)果,回答哪些指令的組合能由此流水線源代碼正確實現(xiàn),哪些指令的組合不能由此流水線源代碼正確實現(xiàn)。(要求在實驗報告中寫出所完成的測試指令的組合、每個組合的仿真過程及結(jié)果、每個過程和結(jié)果的必要分析。)(1)第一

6、組指令序列指令序列:add r2 r1 1add r2 r1 10add r1 r3 1add r1 r2 10add r2 r2 1add r2 r3 10sub r2 r1 r3截圖:結(jié)果分析:觀察三到九周期的ealu信號分別為(10,1,1,10,1,10,10),第九個周期的ealu為10,該周期執(zhí)行的指令是sub r2 r1 r3;可見第一條指令賦值r1=10;第二條指令賦值r2=1;所以最后一條指令sub r1 r1 r2執(zhí)行后結(jié)果為9,符合條件。當(dāng)有數(shù)據(jù)相關(guān)時,就會出問題,再觀察第五、六、七兩個周期,指令的執(zhí)行結(jié)果均為1。故該程序不能解決數(shù)據(jù)相關(guān)問題。(二) 匯編器實現(xiàn)2.1自行

7、設(shè)計與所給出的流水線指令的匯編格式,在下表中寫出。指令指令意義Op31:26Op2 25:2019:1514:109:54:0add寄存器加法00000000000100000rdrsrtadd rd rs rtsub寄存器減法00000000001000000rdrsrtsub rd rs rtmul寄存器乘法00000000001100000rdrsrtmul rd rs rtand寄存器與00000100000100000rdrsrtand rd rs rtor寄存器或00000100001000000rdrsrtor rd rs rtxor寄存器異或00000100010000000r

8、drsrtxor rd rs rtsra算術(shù)右移000010000001shiftrd00000rtsra rd rt shiftsrl邏輯右移000010000010shiftrd00000rtsrl rd rt shiftsll邏輯左移000010000011shiftrd00000rtsll rd rt shiftjreg寄存器跳轉(zhuǎn)0000100001000000000000rs00000jreg rsaddi立即數(shù)加法00010116位immediatersrtaddi rt rs immemuli立即數(shù)乘法00011116位immediatersrtmuli rt ts immean

9、di立即數(shù)與00100116位immediatersrtaddi rt rs immeori立即數(shù)或00101016位immediatersrtori rt rs immexori立即數(shù)異或00110016位immediatersrtxori rt rs immeload取整數(shù)數(shù)據(jù)字00110116位offsetrsrtload rt rs offsetstore存整數(shù)數(shù)據(jù)字00111016位offsetrsrtstore rt rs offsetbeq相等則跳轉(zhuǎn)00111116位offsetrsrtbeq rt rs offsetbne不相等則跳轉(zhuǎn)01000016位offsetrsrtbne

10、 rt rs offsetlui設(shè)置高位01000116位immediate00000rtlui rt immejump無條件跳轉(zhuǎn)01001026位addressjump addressjal子程序調(diào)用01001126位addressjal address2.2寫出實現(xiàn)語言、主要數(shù)據(jù)結(jié)構(gòu)、主要功能模塊名字和功能、以必要的流程圖。代碼截圖:2.3給出匯編器的運行界面(若有),寫出所實現(xiàn)的匯編器的操作步驟及使用說明,并自己設(shè)計并給出測試用例及運行結(jié)果,使得所有指令均能自動生成二進制格式的指令。匯編器的使用步驟:(1)在程序目錄下的instruction.txt中輸入指令 (2)運行程序。 (3)打

11、開instruction.txt,發(fā)現(xiàn)在指令的下方依次出現(xiàn)了各條指令對應(yīng)的二進制碼。測試截圖:(三) 數(shù)據(jù)相關(guān)分析及解決數(shù)據(jù)相關(guān)的分析(1)一般指令的數(shù)據(jù)相關(guān)分析rs2即第二源操作數(shù)可以是寄存器或者立即數(shù),但根據(jù)字符串解析可以區(qū)分出來,因此這些指令都歸為一類解決數(shù)據(jù)相關(guān)問題。產(chǎn)生相關(guān)的條件: 如上圖所示,相鄰的兩條指令中,如果第二條指令的兩個源操作數(shù)寄存器與上一條指令的目的操作數(shù)寄存器相同,那么第二條指令在譯碼周期從寄存器堆中取源操作數(shù)值的時候,上一條指令還只在執(zhí)行周期,還沒有將最后結(jié)果寫回到相應(yīng)的寄存器中,因此第二條指令取到的源操作數(shù)的值并不是最新的值,因此而產(chǎn)生了數(shù)據(jù)相關(guān)。解決方案: 如上

12、圖所示,在直接相鄰的兩條產(chǎn)生數(shù)據(jù)相關(guān)的指令之間插入三條空指令,這樣在第二條指令譯碼之前,第一條指令已經(jīng)將結(jié)果寫回,第二條指令取到的源操作數(shù)的值是最新的值,數(shù)據(jù)相關(guān)就消除了。以上情況針對相鄰的兩條產(chǎn)生數(shù)據(jù)相關(guān)指令的分析,而對于中間隔了一條或兩條無數(shù)據(jù)相關(guān)指令的兩條指令產(chǎn)生了數(shù)據(jù)相關(guān),解決方案是分別插入兩條、一條空指令。(2)store和條件跳轉(zhuǎn)指令的數(shù)據(jù)相關(guān)分析及解決store和條件跳轉(zhuǎn)指令設(shè)計的格式:op + rs + rt + offset對于這兩條指令來說,rs和rs相當(dāng)于源操作數(shù),而它們沒有目的操作數(shù),因此在判斷一般指令的數(shù)據(jù)相關(guān)需要作另外特殊判斷。(3)jreg指令指令格式: op +

13、 rs沒有目的寄存器,且只有一個源操作數(shù),可以與條件跳轉(zhuǎn)指令歸為一類判斷。2. 數(shù)據(jù)相關(guān)的解決(1) 程序流程圖 上圖左邊部分就是匯編器實現(xiàn)部分的流程圖,在此基礎(chǔ)上進行擴展,即如箭頭所指方向,中間兩步替代為右邊部分。(2) 測試程序指令: xor r2, r2, r2 add r3, r2, r1xor r2, r2, r2 addi r1, r1, 20 addi r2, r2, 10 lui r1, 1翻譯結(jié)果: 如上圖所示,在產(chǎn)生數(shù)據(jù)相關(guān)的指令前插入了空指令“addi r0 r0 0”。在xilinx中的仿真結(jié)果:結(jié)果是正確的。(四) 控制相關(guān)分析及解決1. 控制相關(guān)分析在有跳轉(zhuǎn)指令時,

14、倘若跳轉(zhuǎn)指令的操作數(shù)有寄存器,因此而產(chǎn)生的相關(guān)為數(shù)據(jù)相關(guān),在(三)中已經(jīng)解決,而控制相關(guān)指:跳轉(zhuǎn)指令只能在譯碼級被檢測出來并形成跳轉(zhuǎn)地址,而此時PC值已經(jīng)更新為跳轉(zhuǎn)指令的下一條指令的PC值,所以無論跳轉(zhuǎn)是否成功,該指令都會被執(zhí)行,跳轉(zhuǎn)不成功是沒問題的,但是跳轉(zhuǎn)成功就產(chǎn)生了控制相關(guān)。所以在跳轉(zhuǎn)指令后加一條空指令就可以解決所有問題。2. 控制相關(guān)解決程序中,只要在判斷完數(shù)據(jù)相關(guān)的時候,再判斷當(dāng)前指令是否是跳轉(zhuǎn)指令,如果是,則再翻譯一條空指令到文件,如果不是,則取下一條指令進行同樣的數(shù)據(jù)相關(guān)及控制相關(guān)的操作。(1)在功能模塊clear_relation_and_translate的最后加一下代碼段:(2) 測試程序: (3) 結(jié)果分析:六、實驗器材(設(shè)備、元器件):PCWindows 8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論