数电实验2报告lab 28 流水线CUP.doc

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

独角戏 + 关注
实名认证
内容提供者

本人有良好思想品德,职业道德和专业知识。

1亿VIP精品文档

相关文档