B. 双精度浮点加法求和代码及结果分析
按照题目要求,自行又编写了一套程序来实现双精度浮点加法求和
结果分析
当运行到如下图所示时,运行结束,可以看到运行结果如下图所示。
产看Statistics可以看到具体数据情况和产生相关的比例等。
26
1)程序中出现的数据/控制/结构相关 控制相关: 数据相关
由Statistics中的知道,发生了55.48%的数据相关。产看代码可以发现,产生的相关都为RW读写相关。它们分别为: addi r1,r0,0 subi r2,r1,20
subi r2,r1,20 beqz r2,finish
multu r3,r1,r4 ld f0,a(r3)
ld f2,b(r3) addd f4,f0,f2
addd f4,f0,f2
27
sd r(r3),f4
控制相关
由Statistics中的可以看到,发生了4.43%的控制相关。
系统按照预测成功来执行指令,执行一条指令后马上将其下一条指令trap读进来。
2)增加浮点运算部件对性能的影响。
下图分别为浮点运算部件为1和4的时候数据情况对比。
28
由上图的对比可知,当浮点运算部件个数给边后统计结果均相同,也就是其数量对该函数没有任何性能方面的改进。
分期其原因为,这主要是因为函数中没有连续的浮点加指令,乘、 除指令。
3)增加forward部件对性能的影响。
下图左侧为没有勾选enable forwarding时的运行数据结果,右侧为使用了forwarding技术。
29
由上图的对比可以看出,增加forwarding技术后,流水线的加速比为: 474/352=1.347
流水线性能有明显改善。
4)转移指令在转移成功和转移不成功时候的流水线开销。
由Conditional Branches的数据可以看出,该转移指令“not taken”的情况占绝大多数(95.24%)。在一共的21中,发生了仅为1次,所以预测顺序取对流水线的性能是有利的。转移不成功时:顺序预取的下条指令可以直接在流水线中执行,保证流水线不断流;转移成功时:顺序预取的下条指令作废,需要转到转移地址处重新取指,流水线发生了断流现象。
30