计算机系统结构结构相关实验报告,计算机系统结构实验报告.doc
電 子 科 技 大 學
實 驗 報 告
學生姓名: 學 號: 一、實驗室名稱:計算機學院實驗中心二、實驗項目名稱:計算機系統結構課程實驗三、實驗原理:
1. 由教師給出一個具有基本功能的Verilog HDL流水線源代碼;
2. 學生完成下面3個方面的內容:
(1)自行設計匯編偽指令格式,完成一個能把自己的匯編指令轉換成流水線CPU能夠識別的二進制指令的匯編器,實現語言不限;
(2)自行設計能夠解決數據相關的機制并基于源代碼進行擴展;
(3)自行設計能夠解決控制相關的機制并基于源代碼進行擴展。
四、實驗目的:
幫助學生理解流水線的運行機制和基于Verilog HDL硬件描述語言的實現技術。五、實驗內容:
(一) 基本流水線分析
1.1 認真閱讀和理解源代碼,請詳細按要求回答每個問題。
源代碼中文件是按什么樣的規律來組織的?
答:按照子模塊組織源代碼文件。模塊pipelinedcpu_tb用來控制CPU的時鐘等信號,調用pipelinedcpu模塊(假定為1級模塊,最高級),1級模塊中按順序調用各個周期以及周期與周期之間的中間寄存器模塊(假定為2級模塊),2級模塊中調用各自部件模塊(假定為3級模塊)。模塊pipelinedcpu用來控制每級流水線及流水線級之間的控制信號,寄存器信息,其余子模塊用來具體實現每一級流水線的功能。
存儲器的實現方式?
答:用一個二維數組reg [31:0] ram [0:31] 實現,其中第一維代表32位地址,第二維代表32位數據
接口有:32位輸入數據和輸出,32位地址,一個同步時鐘脈沖clk,一個控制寫入的信號we
先對二維數組進行初始化
讀數據時不需要時鐘脈沖的激勵,寫數據時需要時鐘脈沖的上升沿激勵信號并且we信號為1
源代碼文件中的流水線與我們課堂上講的原理電路圖有何相同之處,有何不同之處
答:相同:WB級,寫回級使用2路32位的多路選擇器來選擇是獲取ALU的計算結果還是LOAD指令從數據存儲器中讀取出來的數據。這里與課堂上所講的內容基本相同。
流水線都分為五個執行級,都是在譯碼級產生各種控制信號,一級一級往后傳,分離的指令存儲器和數據存儲器。各個部件以及邏輯都沒有太大差異
不同:源代碼文件中的流水線中的ALU部件的輸出接在一個兩路選擇器上,并且沒有zero輸出端,而課堂上的直接輸出到中間寄存器
源代碼文件中沒有關于消除數據相關的代碼,而課堂上講的原理電路圖有消除數據相關的線路
沒有數據前推和load前推的相關實現,指令格式的區別,流水線alu運算部件兩個端口都可以接受立即數。
通過分析,寫出本流水線的控制信號有哪些?對比我們課堂上講的控制信號的差別有哪些?
答:本實驗的控制信號主要有:wreg、m2reg、wmem、jal、aluc、aluimm
分別表示指令是否要寫寄存器、信號是否有數據存儲器中的數據需要寫回寄存器、是否有指令需要往數據存儲器中寫數據、流水線寄存器R是要寫入ALU的運算結果還是EPC的內容、指令的操作類型,例如加、減、與、或。、ALU的B輸入端是否要選擇立即數輸入
差別主要有:regrt信號控制目的寄存器是rd或rt,sext信號控制是否需要傳遞立即數,wmem信號控制是否需要訪存,jal信號控制exe級和mem級之間是傳遞運算結果還是立即數,這些信號是課堂上的流水線沒有的。
1.2 針對流水線的指令集,編寫必要的測試指令,分析運算結果,回答哪些指令的組合能由此流水線源代碼正確實現,哪些指令的組合不能由此流水線源代碼正確實現。(要求在實驗報告中寫出所完成的測試指令的組合、每個組合的仿真過程及結果、每個過程和結果的必要分析。)
(1)第一組指令序列
指令序列:
add r2 r1 1
add r2 r1 10
add r1 r3 1
add r1 r2 10
add r2 r2 1
add r2 r3 10
sub r2 r1 r3
截圖:
結果分析:
觀察三到九周期的ealu信號分別為(10,1,1,10,1,10,10),第九個周期的ealu為10,該周期執行的指令是sub r2 r1 r3;可見第一條指令賦值r1=10;第二條指令賦值r2=1;所以最后一條指令sub r1 r1 r2執行后結果為9,符合條件。
當有數據相關時,就會出問題,再觀察第五、六、七兩個周期,指令的執行結果均為1。故該程序不能解決數據相關問題。
(二) 匯編器實現
2.1自行設計與所給出的流水線指令的匯編格式,在下表中寫出。
指令
指令意義
Op[31:26]
Op2 [25:20]
[19:15]
[14:10]
[9:5]
[4:0]
add
寄存器加法
000000
000001
00000
rd
r
總結
以上是生活随笔為你收集整理的计算机系统结构结构相关实验报告,计算机系统结构实验报告.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++关键字 static 和 co
- 下一篇: 吴恩达深度学习笔记8-Course3-W