宋光磊MIPS流水线实验报告.doc

宋光磊MIPS流水线实验报告.doc

ID:57680759

大小:583.50 KB

页数:11页

时间:2020-08-31

宋光磊MIPS流水线实验报告.doc_第1页
宋光磊MIPS流水线实验报告.doc_第2页
宋光磊MIPS流水线实验报告.doc_第3页
宋光磊MIPS流水线实验报告.doc_第4页
宋光磊MIPS流水线实验报告.doc_第5页
资源描述:

《宋光磊MIPS流水线实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三.MIPS流水线实验MIPS流水线中的运行过程实验代码.datanumber:.word321,2,3,4,5,6,7,8,9.textmain:daddir2,r0,numberdaddir3,r2,24loop:lwr1,0(r2)daddir1,r1,1swr1,0(r2)daddir2,r2,4dsubr4,r3,r2bnezr4,loopdaddir5,r0,0daddir6,r0,0halt二.可能存在的数据冒险分析Ø存在冒险的语句组1daddir2,r0,numberdaddir3,r2,24这两个语句存在数据相关性为r2,第

2、一个句子的r2为目的寄存器,第二个的r2为源寄存器。因为整数流水线的性质,会出现RAW数据冒险。单步试验测试如下:Ø存在冒险的语句组2lwr1,0(r2)daddir1,r1,1其中load指令中的r1为目的寄存器,ADDI中的r1为源寄存器。两者存在数据相关性。因为Load指令的数据r1在WB之后才能被下个指令中的ID阶段读取,所以会出现类两个周期的stall。模拟测试如下:Ø存在冒险的语句组3daddir1,r1,1swr1,0(r2)其中ADDI指令中的r1和sw中的r1存在数据相关。同样只用ADDI在经过WB后把r1中的数据存到r1寄存器

3、,sw才能在id阶段获取数据。因为整数的周期性质,所以后者会在ID阶段等待两个stall模拟测试结果如下:Ø存在冒险的语句组4daddir2,r2,4dsubr4,r3,r2在组中ADDI中的r2为目的寄存器,SUB中的r2为源寄存器,因为整数流水线的性质,只有前者在WB时写入r2寄存器,SUB的ID阶段才能获取r2的值。因此SUB中的id阶段也会有2个stall。模拟验证如下Ø存在冒险的语句组5dsubr4,r3,r2bnezr4,loop同理,在该组中r4为两个指令的相关数据,因此在nez中的ID阶段也会出现2个stall的数据冒险。三.考察

4、前送(forwarding)技术对流水线性能的影响针对上面的数据冒险情况,有forwarding会对部分数据冒险进行消除。下面对具体上面的五组数据冒险进行逐一分析。Ø组1的数据冒险被消除daddir2,r0,numberdaddir3,r2,24因为使用forwarding技术,使得前者在EX阶段产生的数据直接送到下个指令的EX阶段,因此在该阶段,第二个ADDI指令不用再等到WB阶段在运行。不会存在stall。模拟验证如下:Ø组2的数据冒险未被消除lwr1,0(r2)daddir1,r1,1load指令中的r1和ADDI中的r1存在数据相关,即使

5、存在forwarding技术,因为Load产生可用数据在MEM阶段,而第二个指令ADDI指令的EXE阶段在第一个指令的MEN之前,所以后者必须等一个周期,因此会产生一个stall。Ø组3的数据冒险消除daddir1,r1,1swr1,0(r2)原因分析和组1的相同,这里不再赘述。模拟验证如下:Ø组4数据冒险被消除daddir2,r2,4dsubr4,r3,r2原因分析和组1组3相同。模拟验证如下:Ø组5的数据冒险未被消除dsubr4,r3,r2bnezr4,loop模拟验证如下:四.通过调度减少冒险修改代码顺序,在Forwarding情况下消除数

6、据冒险,修改后的代码如下。.datanumber:.word321,2,3,4,5,6,7,8,9.textmain:daddir2,r0,numberdaddir3,r2,24loop:lwr1,0(r2)daddir2,r2,4daddir1,r1,1dsubr4,r3,r2swr1,-4(r2)bnezr4,loopdaddir5,r0,0daddir6,r0,0halt单步运行过程如下:由上图的运行结果可以看出有上面5组情况引起的数据冒险RAW均被消除。五.总结为修改代码之前,不使用forwaring技术的运行统计信息如下:设运行的总周期

7、数为N1平均每条指令的运行周期CPI1由图可以看出CPI1=2.439N1=100添加forwarding技术后,运行结果统计如下设运行的总周期数为N2平均每条指令的运行周期CPI2由图可以看出CPI2=1.512N2=62修改代码后,消除必要的数据冒险,运行统计如下设运行的总周期数为N3平均每条指令的运行周期CPI3由图可以看出CPI3=1.220N3=50综上所述:运行总周期数:N3

8、跟运算和ranch前有运算的数据相关冒险3.通过修改代码顺序可以解决forwarding解决不了的数据冒险。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。