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