北邮高级计算机系统结构实验二三四五(5)

2019-01-19 11:53

multf f6, f2 ,f4 与add f0 , f0 , f6数据相关前一指令要写入f6而后一条要读f6造成WR相关add 指令要等四个周期同时 add r9, r9 ,0x1与前一条指令的冲突,这一条指令等待ID单元空出。 2)控制相关

bnez r2,loop3发生跳转在intEX才执行立马阻止multu r13 , r7 ,r21指令的译码,要清空后面点流水线,这条乘法指令出现aborted异常。 3.考察增加浮点运算部件对性能的影响。

比较浮点运算部件分别为1和2时。

21

接下来查看Statistis进行比较,如下图

可以看出增加运算单元会增加CPI从691条指令增加到710条,主要是结构相关从3.6%减少到0,例如:

22

可以使相邻的乘法指令并行执行。

4.增加FORWARD部件对性能的影响。

从上面的数据我们可以看出增加forwardi部件后RAW由原来占总时钟周

期的30%减少至16.7%,RAW个数由原来的300减少至167。增加forward部件使得控制相关比例增加了,使得部件使用更紧凑了,S-Tall从0增加到了36。但总体相关还是减少的,即,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。

5.观察转移指令在转移成功和转移不成功时候的流水线开销。

我们假设,浮点部件设置Count=1,Delay=4。执行完毕后,查看条件转移分支,如下图所示:

由上图可知,转移指令一共106条,成功转移105条(占99.06%),不成功为1条。所以,静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。即,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低;若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,

23

执行效率会下降。

5.使用循环展开手工优化程序 .data

MA: .space 400 MB: .space 400 MC: .space 400 s1: .float 1.1 .text

.global main main:

addi r1,r0,MA ;将MA的地址 赋给r1 addi r3,r0,MB ;将MB的地址 赋给r3 addi r11, r1, #400 ;MA的 末地址 lf f2,s1

;对矩阵MA MB进行初始化 init:

sf 0(r1),f2 ;将f2的值赋给MA[i] sf 0(r3),f2 addi r1,r1,#4 addi r3,r3,#4

slt r2,r1,r11 ;比较r1 和MA的末地址是否相等 bnez r2,init ;不等 则继续循环 ;主循环 开始

addi r21,r0,#40 ;常量 addi r22,r0,#10 ;常量 addi r23,r0,#4

addi r29,r0,#0 addi r7,r29,0 ;i = 0 loop1:

addi r8,r29,0 ;j = 0

multu r11,r7,r21 ;r11 = i * 40 loop2:

addi r9,r29,0 ;k = 0;

movi2fp f0,r29 ;data = 0 给变量赋0 multu r1,r8,r23 ;r1 = j * 4 ;下面开始第三层的主循环 loop3:

multu r1,r9,r23 ;r1 = k * 4

addu r11,r11,r1 ;计算出 MA[i][k] 的地址 ld f2,MA(r11)

multu r13,r9,r21 ;r13 = k * 40 addu r13,r13,r1 ;计算出 MB[k][j] 的地址 ld f4,MB(r13) multf f6,f2,f4

24

addf f0,f0,f6 ;data += MA[i][k] * MB[k][j]; addi r9,r9,#1 ;k++

multu r1,r9,r23 ;r1 = k * 4

addu r11,r11,r1 ;计算出 MA[i][k] 的地址 ld f2,MA(r11)

multu r13,r9,r21 ;r13 = k * 40 addu r13,r13,r1 ;计算出 MB[k][j] 的地址 ld f4,MB(r13) multf f6,f2,f4

addf f0,f0,f6 ;data += MA[i][k] * MB[k][j]; addi r9,r9,#1 ;k++

slt r2,r9,r22 ;r9 即 k是否等于10 bnez r2,loop3 ;不等 继续循环 ;那么 这里要完成这个操作MC[i][j] = data; multu r13,r7,r21 ;r13 = i *40 multu r1,r8,r23 ;r1 = j*4

addu r13,r13,r1 ;计算 MC[i][j] 的地址 sf MC(r13),f0 addi r8,r8,#1

slt r2,r8,r22 ;r8 即 j是否等于10 bnez r2,loop2 ;不等 继续循环 addi r7,r7,#1

slt r2,r7,r22 ;r7 即 i是否等于10 bnez r2,loop1 ;不等 继续循环 trap 0 ; end of program 6.未优化代码和优化代码性能分析比较结果

执行完毕后,我们点击Statistics查看运行结果数据分析 (左图是改进前的运行情况,右图是改进后的运行情况)

25


北邮高级计算机系统结构实验二三四五(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:导流输水隧洞衬砌、灌浆分部工程验收监理工作报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: