版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电 子 科 技 大 学实 验 报 告学生姓名: 学 号: 一、实验室名称:计算机学院实验中心二、实验项目名称:计算机系统结构课程实验三、实验原理:1. 由教师给出一个具有基本功能的Verilog HDL流水线源代码;2. 学生完成下面3个方面的内容:(1)自行设计汇编伪指令格式,完成一个能把自己的汇编指令转换成流水线CPU能够识别的二进制指令的汇编器,实现语言不限;(2)自行设计能够解决数据相关的机制并基于源代码进行扩展;(3)自行设计能够解决控制相关的机制并基于源代码进行扩展。四、实验目的:帮助学生理解流水线的运行机制和基于Verilog HDL硬件描述语言的实现技术。五、实验内容:(一)
2、基本流水线分析1.1 认真阅读和理解源代码,请详细按要求回答每个问题。1. 源代码中文件是按什么样的规律来组织的?答:按照子模块组织源代码文件。模块pipelinedcpu_tb用来控制CPU的时钟等信号,调用pipelinedcpu模块(假定为1级模块,最高级),1级模块中按顺序调用各个周期以及周期与周期之间的中间寄存器模块(假定为2级模块),2级模块中调用各自部件模块(假定为3级模块)。模块pipelinedcpu用来控制每级流水线及流水线级之间的控制信号,寄存器信息,其余子模块用来具体实现每一级流水线的功能。2. 存储器的实现方式?答:用一个二维数组reg 31:0 ram 0:31 实
3、现,其中第一维代表32位地址,第二维代表32位数据接口有:32位输入数据和输出,32位地址,一个同步时钟脉冲clk,一个控制写入的信号we先对二维数组进行初始化读数据时不需要时钟脉冲的激励,写数据时需要时钟脉冲的上升沿激励信号并且we信号为13. 源代码文件中的流水线与我们课堂上讲的原理电路图有何相同之处,有何不同之处答:相同:WB级,写回级使用2路32位的多路选择器来选择是获取ALU的计算结果还是LOAD指令从数据存储器中读取出来的数据。这里与课堂上所讲的内容基本相同。流水线都分为五个执行级,都是在译码级产生各种控制信号,一级一级往后传,分离的指令存储器和数据存储器。各个部件以及逻辑都没有太
4、大差异不同:源代码文件中的流水线中的ALU部件的输出接在一个两路选择器上,并且没有zero输出端,而课堂上的直接输出到中间寄存器源代码文件中没有关于消除数据相关的代码,而课堂上讲的原理电路图有消除数据相关的线路没有数据前推和load前推的相关实现,指令格式的区别,流水线alu运算部件两个端口都可以接受立即数。4. 通过分析,写出本流水线的控制信号有哪些?对比我们课堂上讲的控制信号的差别有哪些?答:本实验的控制信号主要有:wreg、m2reg、wmem、jal、aluc、aluimm分别表示指令是否要写寄存器、信号是否有数据存储器中的数据需要写回寄存器、是否有指令需要往数据存储器中写数据、流水线
5、寄存器R是要写入ALU的运算结果还是EPC的内容、指令的操作类型,例如加、减、与、或。、ALU的B输入端是否要选择立即数输入差别主要有:regrt信号控制目的寄存器是rd或rt,sext信号控制是否需要传递立即数,wmem信号控制是否需要访存,jal信号控制exe级和mem级之间是传递运算结果还是立即数,这些信号是课堂上的流水线没有的。1.2 针对流水线的指令集,编写必要的测试指令,分析运算结果,回答哪些指令的组合能由此流水线源代码正确实现,哪些指令的组合不能由此流水线源代码正确实现。(要求在实验报告中写出所完成的测试指令的组合、每个组合的仿真过程及结果、每个过程和结果的必要分析。)(1)第一
6、组指令序列指令序列:add r2 r1 1add r2 r1 10add r1 r3 1add r1 r2 10add r2 r2 1add r2 r3 10sub 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自行
7、设计与所给出的流水线指令的汇编格式,在下表中写出。指令指令意义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算术右移000010000001shiftrd00000rtsra rd rt shiftsrl逻辑右移000010000010shiftrd00000rtsrl rd rt shiftsll逻辑左移000010000011shiftrd00000rtsll rd rt shiftjreg寄存器跳转0000100001000000000000rs00000jreg rsaddi立即数加法00010116位immediatersrtaddi rt rs immemuli立即数乘法00011116位immediatersrtmuli rt ts immean
9、di立即数与00100116位immediatersrtaddi rt rs immeori立即数或00101016位immediatersrtori rt rs immexori立即数异或00110016位immediatersrtxori rt rs immeload取整数数据字00110116位offsetrsrtload rt rs offsetstore存整数数据字00111016位offsetrsrtstore rt rs offsetbeq相等则跳转00111116位offsetrsrtbeq rt rs offsetbne不相等则跳转01000016位offsetrsrtbne
10、 rt rs offsetlui设置高位01000116位immediate00000rtlui rt immejump无条件跳转01001026位addressjump addressjal子程序调用01001126位addressjal address2.2写出实现语言、主要数据结构、主要功能模块名字和功能、以必要的流程图。代码截图:2.3给出汇编器的运行界面(若有),写出所实现的汇编器的操作步骤及使用说明,并自己设计并给出测试用例及运行结果,使得所有指令均能自动生成二进制格式的指令。汇编器的使用步骤:(1)在程序目录下的instruction.txt中输入指令 (2)运行程序。 (3)打
11、开instruction.txt,发现在指令的下方依次出现了各条指令对应的二进制码。测试截图:(三) 数据相关分析及解决数据相关的分析(1)一般指令的数据相关分析rs2即第二源操作数可以是寄存器或者立即数,但根据字符串解析可以区分出来,因此这些指令都归为一类解决数据相关问题。产生相关的条件: 如上图所示,相邻的两条指令中,如果第二条指令的两个源操作数寄存器与上一条指令的目的操作数寄存器相同,那么第二条指令在译码周期从寄存器堆中取源操作数值的时候,上一条指令还只在执行周期,还没有将最后结果写回到相应的寄存器中,因此第二条指令取到的源操作数的值并不是最新的值,因此而产生了数据相关。解决方案: 如上
12、图所示,在直接相邻的两条产生数据相关的指令之间插入三条空指令,这样在第二条指令译码之前,第一条指令已经将结果写回,第二条指令取到的源操作数的值是最新的值,数据相关就消除了。以上情况针对相邻的两条产生数据相关指令的分析,而对于中间隔了一条或两条无数据相关指令的两条指令产生了数据相关,解决方案是分别插入两条、一条空指令。(2)store和条件跳转指令的数据相关分析及解决store和条件跳转指令设计的格式:op + rs + rt + offset对于这两条指令来说,rs和rs相当于源操作数,而它们没有目的操作数,因此在判断一般指令的数据相关需要作另外特殊判断。(3)jreg指令指令格式: op +
13、 rs没有目的寄存器,且只有一个源操作数,可以与条件跳转指令归为一类判断。2. 数据相关的解决(1) 程序流程图 上图左边部分就是汇编器实现部分的流程图,在此基础上进行扩展,即如箭头所指方向,中间两步替代为右边部分。(2) 测试程序指令: xor r2, r2, r2 add r3, r2, r1xor r2, r2, r2 addi r1, r1, 20 addi r2, r2, 10 lui r1, 1翻译结果: 如上图所示,在产生数据相关的指令前插入了空指令“addi r0 r0 0”。在xilinx中的仿真结果:结果是正确的。(四) 控制相关分析及解决1. 控制相关分析在有跳转指令时,
14、倘若跳转指令的操作数有寄存器,因此而产生的相关为数据相关,在(三)中已经解决,而控制相关指:跳转指令只能在译码级被检测出来并形成跳转地址,而此时PC值已经更新为跳转指令的下一条指令的PC值,所以无论跳转是否成功,该指令都会被执行,跳转不成功是没问题的,但是跳转成功就产生了控制相关。所以在跳转指令后加一条空指令就可以解决所有问题。2. 控制相关解决程序中,只要在判断完数据相关的时候,再判断当前指令是否是跳转指令,如果是,则再翻译一条空指令到文件,如果不是,则取下一条指令进行同样的数据相关及控制相关的操作。(1)在功能模块clear_relation_and_translate的最后加一下代码段:(2) 测试程序: (3) 结果分析:六、实验器材(设备、元器件):PCWindows 8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共交通运营成本核算制度
- 公共交通车辆安全检查制度
- 企业供应链金融与风险管理(标准版)
- 信息技术服务等级协议SLA管理手册
- 2026年温州护士学校招聘合同制总务处职员的备考题库及参考答案详解一套
- 内蒙古民族大学2026年公开招募银龄教师备考题库及答案详解1套
- 养老院心理慰藉制度
- 2026年滨州北海鲲晟园区管理服务有限公司公开招聘国有企业工作人员备考题库带答案详解
- 2026年辽宁黄海实验室科研管理办公室副主任招聘备考题库及一套参考答案详解
- 南平市建阳区总医院关于2025年紧缺急需岗位编外人员招聘的备考题库及完整答案详解1套
- 2026广西出版传媒集团有限公司招聘98人备考题库新版
- 2025年杭州余杭水务有限公司招聘36人笔试参考题库及答案解析
- GB/T 191-2025包装储运图形符号标志
- 光伏发电系统效能标准
- LZDD-18N 食品安全综合检测仪使用说明书20140530
- 硅石耐火材料课件
- 1.罂粟碱-经典扩血管药物
- YY/T 1265-2015适用于湿热灭菌的医疗器械的材料评价
- JJG 1162-2019医用电子体温计
- GB/T 4100-2015陶瓷砖
- GB/T 18400.6-2001加工中心检验条件第6部分:进给率、速度和插补精度检验
评论
0/150
提交评论