宋光磊MIPS流水线实验报告Word文档格式.docx

上传人:b****4 文档编号:17788684 上传时间:2022-12-10 格式:DOCX 页数:11 大小:525.39KB
下载 相关 举报
宋光磊MIPS流水线实验报告Word文档格式.docx_第1页
第1页 / 共11页
宋光磊MIPS流水线实验报告Word文档格式.docx_第2页
第2页 / 共11页
宋光磊MIPS流水线实验报告Word文档格式.docx_第3页
第3页 / 共11页
宋光磊MIPS流水线实验报告Word文档格式.docx_第4页
第4页 / 共11页
宋光磊MIPS流水线实验报告Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

宋光磊MIPS流水线实验报告Word文档格式.docx

《宋光磊MIPS流水线实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《宋光磊MIPS流水线实验报告Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

宋光磊MIPS流水线实验报告Word文档格式.docx

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

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寄存器,SUB的ID阶段才能获取r2的值。

因此SUB中的id阶段也会有2个stall。

模拟验证如下

存在冒险的语句组5

bnezr4,loop

同理,在该组中r4为两个指令的相关数据,因此在nez中的ID阶段也会出现2个stall的数据冒险。

三.考察前送(forwarding)技术对流水线性能的影响

针对上面的数据冒险情况,有forwarding会对部分数据冒险进行消除。

下面对具体上面的五组数据冒险进行逐一分析。

组1的数据冒险被消除

因为使用forwarding技术,使得前者在EX阶段产生的数据直接送到下个指令的EX阶段,因此在该阶段,第二个ADDI指令不用再等到WB阶段在运行。

不会存在stall。

模拟验证如下:

组2的数据冒险未被消除

load指令中的r1和ADDI中的r1存在数据相关,即使存在forwarding技术,因为Load产生可用数据在MEM阶段,而第二个指令ADDI指令的EXE阶段在第一个指令的MEN之前,所以后者必须等一个周期,因此会产生一个stall。

组3的数据冒险消除

原因分析和组1的相同,这里不再赘述。

组4数据冒险被消除

原因分析和组1组3相同。

组5的数据冒险未被消除

四.通过调度减少冒险

修改代码顺序,在Forwarding情况下消除数据冒险,修改后的代码如下。

daddir1,r1,1

swr1,-4(r2)

单步运行过程如下:

由上图的运行结果可以看出有上面5组情况引起的数据冒险RAW均被消除。

五.总结

为修改代码之前,不使用forwaring技术的运行统计信息如下:

设运行的总周期数为N1

平均每条指令的运行周期CPI1

由图可以看出

CPI1=

N1=100

添加forwarding技术后,运行结果统计如下

设运行的总周期数为N2

平均每条指令的运行周期CPI2

CPI2=

N2=62

修改代码后,消除必要的数据冒险,运行统计如下

设运行的总周期数为N3

平均每条指令的运行周期CPI3

CPI3=

N3=50

综上所述:

运行总周期数:

N3<

N2<

N1

CPI:

CPI3<

CPI2<

CPI1

结论:

1.通过forwarding和优化代码顺序可以提高代码运行效率;

2.Forwarding不能解决Load后面跟运算和ranch前有运算的数据相关冒险

3.通过修改代码顺序可以解决forwarding解决不了的数据冒险。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1