- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
课程名称:__ __数字系统设计实验2_ __ ___指导老师:__唐奕等______成绩:__________________
实验名称: _流水线MIPS微处理器设计_ _实验类型:____ 设计型__ __同组学生姓名:
一、实验目的和要求(必填) 二、实验内容和原理(必填)
三、主要仪器设备(必填) 四、操作方法和实验步骤
五、实验数据记录和处理 六、实验结果与分析(必填)
七、讨论、心得
一、实验目的和要求
1、了解提高CPU性能的方法
2、掌握流水线MIPS微处理器的工作原理
3、离结数据冒险,控制冒险的概念以及流水线冲突的解决办法
4、掌握流水线MIPS微处理器的测试方法
二、实验内容和原理
实验内容:设计一个32位流水线MIPS微处理器,具体要求如下:
至少运行下列MIPS32指令:算术运算指令(ADD、ADDU、SUB、SUBU、ADDI、ADDIU)逻辑运算指令(AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU)移位指令(SLL、SLLV、SRL、SRLV、SRA)条件分支指令(BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ)无条件跳转指令(J、JR)数据传送指令(LW、SW)空指令(NOP)
采用5级流水线技术,对数据冒险实现转发或阻塞功能
在XUP Virtex-2Pro开发系统中实现MIPS微处理器,要求CPU的运行速度大于25MHz。
实验原理:1总体设计:IF、ID、EX、MEM、WB,对应CPU的
实验名称: 流水线MIPS微处理器设计 姓名: 李增一 学号: 3090101793
五个处理阶段。如下图:
宏观来讲如下:
2、流水线冒险
在流水线CPU中,多条指令同时执行,由于各种各样的原因,在下一个时钟周期中下一条指令不能执行,这种情况称为冒险。冒险分为三类:
实验名称: 流水线MIPS微处理器设计 姓名: 李增一 学号: 3090101793
结构冒险:硬件不支持多条指令在同一个时钟周期内执行。MIPS
指令集专为流水线设计,因此在MIPS CPU中不存在此类冒险。
(2)数据冒险:在一个操作必须等待另一操作完成后才能进行时,流水线必须停顿,这种情况称为数据冒险。数据冒险又分为两类:
a.数据相关:流水线内部其中任何一条指令要用到任何其它指令的计算结果时,将导致数据冒险。通常可以用数据转发(数据定向)来解决此类冒险。
解决方法:
(1)三阶数据相关:
这两条指令在第5时钟周期内同时读写同一个寄存器。这类数据相关称之为三阶数据相关。
假设寄存器的写操作发生在时钟周期的上升沿,而读操作发生在时钟周期的下降沿,那么读操作将读取到最新写入的内容。在这种假设条件下将不会发生数据冒险。这就要求流水线中的寄存器具有“ 先写后读(Read After Write)”的特性。
这类“ 写操作发生在时钟周期的上升沿,读操作发生在时钟周期的下降沿” 的寄存器虽然在理论上是可实现的,但是不适合应用于同步系统,因为它不但影响系统的运行速度,而且影响系统的稳定性,是不可取的。
因此,我们采用“ 转发” 机制来解决三阶数据相关冒险。该部分转发电路我们放在寄存器堆的设计中完成。 数字系统设计实验 转发条件:
① WB级的指令需要 写回寄存器,即 RegWrite_wb=1
实验名称: 流水线MIPS微处理器设计 姓名: 李增一 学号: 3090101793
②在WB级的指令在写回时 目标寄存器不能是寄存 器$0,即
RegWriteAddr_wb≠0
③在WB级的指令写回时的目标寄存 器与在ID级的指令的源寄存器是 同一寄存器,即
RegWriteAddr_wb=RsAddr_id
或RegWriteAddr_wb=RtAddr_id
(2)二阶数据相关(MEM冒险):
sub指令在第5时钟周期写回寄存器,而or指令也在第5时钟周期对sub指令的结果提出了请求,很显然or指令读取的数据是未被更新的错误内容。这类数据相关称之为二阶数据相关。
如前所述,or指令在第5时钟周期向sub指令结果发出请求时,sub指令的结果已经产生。所以,我们同样采用“ 转发” ,即通过MEM/WB流水线寄存器,将sub指令结果“ 转发” 给or指令,而不需要先写回寄存器堆。
转发条件:
①WB级的指令需要 写回寄存器,即 RegWrite_wb=1
②在WB级的指令在写回时,目标寄存器不能是寄存 器$0,即
RegWriteAddr_wb≠0
③在WB级的指令写回时的目标寄存器 与在EX级的指令
文档评论(0)