14281195宋光磊_MIPS流水线实验报告_第1页
14281195宋光磊_MIPS流水线实验报告_第2页
14281195宋光磊_MIPS流水线实验报告_第3页
14281195宋光磊_MIPS流水线实验报告_第4页
14281195宋光磊_MIPS流水线实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三.MIPS流水线实验MIPS流水线中的运行过程实验代码 .datanumber: .word32 1, 2, 3, 4, 5, 6, 7, 8, 9 .textmain: daddi r2, r0, number daddi r3, r2, 24loop: lw r1, 0(r2) daddi r1, r1, 1 sw r1, 0(r2) daddi r2, r2, 4 dsub r4, r3, r2 bnez r4, loop daddi r5, r0, 0 daddi r6, r0, 0 halt二可能存在的数据冒险分析 存在冒险的语句组1daddi r2, r0, numberdaddi r3, r2, 24这两个语句存在数据相关性为r2,第一个句子的r2为目的寄存器,第二个的r2为源寄存器。因为整数流水线的性质,会出现RAW数据冒险。单步试验测试如下: 存在冒险的语句组2lw r1, 0(r2)daddi r1, r1, 1其中load指令中的r1为目的寄存器,ADDI中的r1为源寄存器。两者存在数据相关性。因为Load指令的数据r1在WB之后才能被下个指令中的ID阶段读取,所以会出现类两个周期的stall。模拟测试如下: 存在冒险的语句组3daddi r1, r1, 1sw r1, 0(r2)其中ADDI指令中的r1和sw中的r1存在数据相关。同样只用ADDI在经过WB后把r1中的数据存到r1寄存器,sw才能在id阶段获取数据。因为整数的周期性质,所以后者会在ID阶段等待两个stall模拟测试结果如下: 存在冒险的语句组4daddi r2, r2, 4 dsub r4, r3, r2在组中ADDI中的r2为目的寄存器,SUB中的r2为源寄存器,因为整数流水线的性质,只有前者在WB时写入r2寄存器,SUB的ID阶段才能获取r2的值。因此SUB中的id阶段也会有2个stall。模拟验证如下 存在冒险的语句组5dsub r4, r3, r2bnez r4, loop同理,在该组中r4为两个指令的相关数据,因此在nez中的ID阶段也会出现2个stall的数据冒险。三.考察前送(forwarding)技术对流水线性能的影响针对上面的数据冒险情况,有forwarding会对部分数据冒险进行消除。下面对具体上面的五组数据冒险进行逐一分析。 组1的数据冒险被消除daddi r2, r0, numberdaddi r3, r2, 24因为使用forwarding 技术,使得前者在EX阶段产生的数据直接送到下个指令的EX阶段,因此在该阶段,第二个ADDI指令不用再等到WB阶段在运行。不会存在stall。模拟验证如下: 组2的数据冒险未被消除lw r1, 0(r2)daddi r1, r1, 1load指令中的r1和ADDI中的r1存在数据相关,即使存在forwarding技术,因为Load产生可用数据在MEM阶段,而第二个指令ADDI指令的EXE阶段在第一个指令的MEN之前,所以后者必须等一个周期,因此会产生一个stall。 组3 的数据冒险消除daddi r1, r1, 1sw r1, 0(r2)原因分析和组1的相同,这里不再赘述。模拟验证如下: 组4数据冒险被消除daddi r2, r2, 4 dsub r4, r3, r2原因分析和组1组3相同。模拟验证如下: 组5的数据冒险未被消除dsub r4, r3, r2bnez r4, loop模拟验证如下:四通过调度减少冒险修改代码顺序,在Forwarding情况下消除数据冒险,修改后的代码如下。 .datanumber: .word32 1, 2, 3, 4, 5, 6, 7, 8, 9 .textmain: daddi r2, r0, number daddi r3, r2, 24loop: lw r1, 0(r2) daddi r2, r2, 4 daddi r1, r1, 1 dsub r4, r3, r2 sw r1, -4(r2) bnez r4, loop daddi r5, r0, 0 daddi r6, r0, 0 halt单步运行过程如下:由上图的运行结果可以看出有上面5组情况引起的数据冒险RAW均被消除。五总结为修改代码之前,不使用forwaring技术的运行统计信息如下:设运行的总周期数为N1平均每条指令的运行周期CPI1由图可以看出CPI1=2.439N1=100添加forwarding技术后,运行结果统计如下设运行的总周期数为N2平均每条指令的运行周期CPI2由图可以看出CPI2=1.512N2=62修改代码后,消除必要的数据冒险,运行统计如下设运行的总周期数为N3平均每条指令的运行周期CPI3由图可以看出CPI3=1.220N3=50综上所述:运行总周期数:N3N2N1CPI: CPI3CPI2CPI1结论:1. 通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论