MIPS流水线实验报告.docx
- 文档编号:11453198
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:12
- 大小:525.44KB
MIPS流水线实验报告.docx
《MIPS流水线实验报告.docx》由会员分享,可在线阅读,更多相关《MIPS流水线实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
MIPS流水线实验报告
试验三.MIPS流水线试验
MIPS流水线中运行过程
试验代码
.data
number:
.word321,2,3,4,5,6,7,8,9
.text
main:
daddir2,r0,number
daddir3,r2,24
loop:
lwr1,0(r2)
daddir1,r1,1
swr1,0(r2)
daddir2,r2,4
dsubr4,r3,r2
bnezr4,loop
daddir5,r0,0
daddir6,r0,0
halt
二.可能存在数据冒险分析
Ø存在冒险语句组1
daddir2,r0,number
daddir3,r2,24
这两个语句存在数据相关性为r2,第一个句子r2为目寄存器,第二个r2为源寄存器。
因为整数流水线性质,会出现RAW数据冒险。
单步试验测试以下:
Ø存在冒险语句组2
lwr1,0(r2)
daddir1,r1,1
其中load指令中r1为目寄存器,ADDI中r1为源寄存器。
二者存在数据相关性。
因为Load指令数据r1在WB以后才能被下个指令中ID阶段读取,所以会出现类两个周期stall。
模拟测试以下:
Ø存在冒险语句组3
daddir1,r1,1
swr1,0(r2)
其中ADDI指令中r1和sw中r1存在数据相关。
一样只用ADDI在经过WB后把r1中数据存到r1寄存器,sw才能在id阶段获取数据。
因为整数周期性质,因以后者会在ID阶段等候两个stall
模拟测试结果以下:
Ø存在冒险语句组4
daddir2,r2,4
dsubr4,r3,r2
在组中ADDI中r2为目寄存器,SUB中r2为源寄存器,因为整数流水线性质,只有前者在WB时写入r2寄存器,SUBID阶段才能获取r2值。
所以SUB中id阶段也会有2个stall。
模拟验证以下
Ø存在冒险语句组5
dsubr4,r3,r2
bnezr4,loop
同理,在该组中r4为两个指令相关数据,所以在nez中ID阶段也会出现2个stall数据冒险。
三.考察前送(forwarding)技术对流水线性能影响
针对上面数据冒险情况,有forwarding会对部分数据冒险进行消除。
下面对具体上面五组数据冒险进行逐一分析。
Ø组1数据冒险被消除
daddir2,r0,number
daddir3,r2,24
因为使用forwarding技术,使得前者在EX阶段产生数据直接送到下个指令EX阶段,所以在该阶段,第二个ADDI指令不用再等到WB阶段在运行。
不会存在stall。
模拟验证以下:
Ø组2数据冒险未被消除
lwr1,0(r2)
daddir1,r1,1
load指令中r1和ADDI中r1存在数据相关,即使存在forwarding技术,因为Load产生可用数据在MEM阶段,而第二个指令ADDI指令EXE阶段在第一个指令MEN之前,因以后者必需等一个周期,所以会产生一个stall。
Ø组3数据冒险消除
daddir1,r1,1
swr1,0(r2)
原因分析和组1相同,这里不再赘述。
模拟验证以下:
Ø组4数据冒险被消除
daddir2,r2,4
dsubr4,r3,r2
原因分析和组1组3相同。
模拟验证以下:
Ø组5数据冒险未被消除
dsubr4,r3,r2
bnezr4,loop
模拟验证以下:
四.经过调度降低冒险
修改代码次序,在Forwarding情况下消除数据冒险,修改后代码以下。
.data
number:
.word321,2,3,4,5,6,7,8,9
.text
main:
daddir2,r0,number
daddir3,r2,24
loop:
lwr1,0(r2)
daddir2,r2,4
daddir1,r1,1
dsubr4,r3,r2
swr1,-4(r2)
bnezr4,loop
daddir5,r0,0
daddir6,r0,0
halt
单步运行过程以下:
由上图运行结果能够看出有上面5组情况引发数据冒险RAW均被消除。
五.总结
为修改代码之前,不使用forwaring技术运行统计信息以下:
设运行总周期数为N1
平均每条指令运行周期CPI1
由图能够看出
CPI1=2.439
N1=100
添加forwarding技术后,运行结果统计以下
设运行总周期数为N2
平均每条指令运行周期CPI2
由图能够看出
CPI2=1.512
N2=62
修改代码后,消除必需数据冒险,运行统计以下
设运行总周期数为N3
平均每条指令运行周期CPI3
由图能够看出
CPI3=1.220
N3=50
总而言之:
运行总周期数:
N3 CPI: CPI3 结论: 1.经过forwarding和优化代码次序能够提升代码运行效率; 2.Forwarding不能处理Load后面跟运算和ranch前有运算数据相关冒险 3.经过修改代码次序能够处理forwarding处理不了数据冒险。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MIPS 流水线 实验 报告