ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:258.55KB ,
资源ID:13918186      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13918186.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机组成原理实验报告硬设Word文档格式.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机组成原理实验报告硬设Word文档格式.docx

1、2. 额外设计要求时间允许的情况下,进行一些额外的、探索性的改造,可用于加分。例如,(1)利用TEC-CA平台上的16位RAM来存放8位的指令和数据;(2)实现一条JRS指令,以便在符号标志位S=1时跳转。需要改写ID段的控制信息,并改写IF段;(3)实现一条CMPJ DR,SR,offset指令,当比较的两个数相等时,跳转到目标地址PC+1+offset;(4)可以探索从外部输入指令,而不是初始化时将指令“写死”在RAM中;(5)此5段流水模块之间,并没有明显地加上流水寄存器,可以考虑在不同模块间加上流水寄存器;(6)探索5段流水带cache的CPU的设计。各组亦可根据实际情况来做一些创新性

2、的探索,酌情加分。 1.3 实验设备本课程综合设计中,需要用到的实验设备如下:1.PC两台;2.TEC-CA硬件实验箱一个;3.Quartus II软件平台一个;4.DebugController软件一个;5.JTAG连接线。 1.4 主要成果实现5级流水无cache的8位实验CPU,16条简单的命令执行,输出确认无误。2. 8位无Cache的5段流水CPU总体设计 2.1 指令系统的设计(注:要给出指令功能、指令格式、指令列表) constant ADD : std_logic_vector(3 downto 0):=0000; /加法 constant SUBB :0001 /减法 con

3、stant ANDins :0011 /与 constant MOV :0010 /赋值 constant LOAD :1000 /load指令 constant STORE :1010 /store指令 constant LOADH :1011 /高位load指令 constant LOADL :1001 /低位load指令 constant JR :0100 /跳转 constant JRZ :0111 /Z=1跳转 constant NOP :1100 /空操作 constant MOVI :1101 / constant NOPIns : std_logic_vector(7 down

4、to 0):11000000 2.2 数据通路的设计(注:可参考16位CPU,然后指出变为8位时,作了哪些修改) 一、数据通路图图1 无cache五级流水线数据通路示意图整个CPU由下边几个模块组成: 控制器:在每个时钟周期给出cpu其它部件的控制信号。 运算器:本运算器包括寄存器堆。 Bus MUX:通过控制信号BusSel数据的来源,通过Wr来控制送往外部数据总线上的数据内容。AR(地址寄存器):驱动地址总线。IR(指令寄存器):存放根据当前PC值取得的指令。 2.3 控制信号的设计(注:要分析控制信号有哪些,最后总结一个控制信号列表,可参考上个学期综合实验参考文档中控制信号的列表方法)w

5、rMem信号含义w_memToReg1: 内存数据到寄存器0: ALU输出到寄存器wRegEn 允许写寄存器 禁止写寄存器wRegEn & MemToRegALUSrcRS000A001B0101011100FFFF101立即数ALUOpr功能0000R + S0001S R0010R AND S0011R OR S0100R XOR S0101SHL S0110SHR S0111 SAR S1000LOADH R1001LOADL R1010MOVI RsetFlag(3位:#)Flag_holdFlag_updateFlag_innerDBFlag_C0Flag_C1Flag_clear其

6、它未定义 2.4 结构相关的处理由于我们的设计中不包含缓存,因此会有取指和访存的冲突,即结构相关(见下图)。当冲突发生时,必须先“访存”,将“取指”延后一个时钟周期,这样才能保证指令的正确执行。处理结构相关需要做两项工作:1)冲突检测 2)取指延后。1)冲突检测只有执行访存指令(LOAD/STORE)时,才会出现冲突。因此,我们在译码时产生一个标志是否访存的信号wrMem。含义如下:wMem意义00写内存(STORE)01读内存(LOAD)1不占用内存通过检查“访存阶段”的m_wrMem就可确定是否冲突。2)取指延后在每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指

7、延后一个节拍。 2.5 数据相关的处理数据相关是指在执行本条指令的过程中,如果用到的操作数是前面指令的执行结果,则必须等待前面的指令执行完成,并把结果写回寄存器或主存之后,本条指令才能继续执行3。我们采用设置专用数据通路(即傍路技术)来解决数据相关问题。但旁路技术并非一劳永逸。若前一指令为LOAD,而后一指令和它数据相关,如下图所示,当下一指令的执行阶段需要数据时,上一指令尚未给出,这种情况是无法用旁路技术来解决的。图 五级流水LOAD数据相关示意图针对上述情况的一般处理方法是通过插入bubble使LOAD之后的两条指令拖后一个节拍执行4。但我们感觉这种处理过于繁琐。我们发现,如果在LOAD译

8、码时,后面自动加一条空指令,即增加冗余,就可以避免上述情况的出现。在这种简化处理后,我们将数据相关划分为以下三种情况。1相邻指令数据相关举例: INC R0INC R0 在此情形下,将上一指令的ALU输出经缓存后直接送回,作为ALU多路选择器的入口之一,如下图所示。图 五级流水相邻指令数据相关示意图具体代码片段为(forwardingentity.vhd): if m_wRegEn=1 and m_SA=e_SA then forwardA = 10其中m_SA为当前处于访问内存(MEM)中寄存器输出结果的索引,e_SA为处于当前执行阶段中ALU的输入寄存器A的索引,倘若两个索引值相等,则产生

9、相邻指令数据相关2中间隔1条指令的两指令数据相关 INC R0 INC R1在此情形下,将第1条指令的回写数据送回作为ALU多路选择器的入口之一供第3条指令使用,如下图所示。图 五级流水相隔1条指令的两指令数据相关示意图具体代码片段如下(forwardingentity.vhd):elsif w_wRegEn= and w_SA=e_SA then01其中w_SA为当前处于回写阶段(WB)中寄存器输出结果的索引,e_SA为处于当前执行阶段中ALU的输入寄存器A的索引,倘若两个索引值相等,则产生中间隔1条指令的两指令数据相关3中间隔2条指令的两指令数据相关INC R1INC R2第1和第4条指令

10、数据相关,有两种处理方法。方法1:在第4条指令的译码阶段作旁路处理,将第1条指令的回写数据作为运算器的输入送入下一级,如下图所示。方法2:考虑到读写寄存器的时间较短,因此将写寄存器的时机改在时钟下降沿。这样1、4指令就没有数据相关了。图 五级流水相隔2条指令的两指令数据相关示意图由于方法2处理较简洁,因此我们在实现时使用了后者。具体部分代码如下(ifentity.vhd):process(reset,clk,PCStall) begin if reset = 0 then PC = x00 elsif FALLING_EDGE(clk) and (PCStall=) then PC = PCn

11、ext; end if; end process;可以看到更新PC的时机为FALLING_EDGE。 2.6 控制相关的处理控制相关是指因为程序的执行方向可能改变而引起的相关。当执行跳转指令时,就会发生这种情况。除JR外,JRZ等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。常规的也是比较简单的做法是在碰到JRX之类的跳转指令时,延迟后边流水线的进入。但我们通过分析,认为可以一点都不必延迟,通过旁路处理把控制相关转为数据相关来处理。这样处理,不必延迟,可以提高流水线的性能。按我们的方式解决控制相关需要做两项工作:1)通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1