·实验总结
在实验中,我主要遇到的问题是WinDLX所加载的.s文件不要出现中文格式,不然会导致加载失败(开始好几次为了方便我直接起名为“双精度浮点向量加.s”却怎么样也导入不成功);在编写双精度浮点数运算时有些对于指令掌握不熟练,并且双精度double型运算指令,其所有的运算指令名称上面都要加上“d”才ok。而如果是单精度的,则需要添加字母“f”;其次,对于浮点数的相关设置,包括状态寄存器和浮点寄存器都需要在实验之前查资料了解透彻,不然在试验中就会有语法错误。
通过此次实验我对实验二所进行的数据相关、控制相关、结构相关的性能分析做了更深入的了解,以及对于功能部件对流水线的影响,forwarding技术对流水线的影响,还有就是静态指令调度等。
通过自行编写向量矢量算法,在代码中初始化两个向量,按照分量顺序进行运算。当然,如果想要改变源向量,直接处理代码中的相关数据即可。
总之,该实验主要着重对浮点运算以及对于流水线的相关影响及性能分析,使我受益匪浅。
31
实验四 代码优化
·实验目的
学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。
·实验环境
Win XP操作系统 DLX汇编语言环境
·实验原理
采用静态调度方法重排指令序列,减少相关,优化程序
·实验步骤
1. 使用静态调度方法手工优化实验2或实验3的代码
2. 对优化程序,重复实验二中(1)、(2)、(3)、(4)工作。
·实验过程
选择上一个实验的向量加法运算作为优化对象。优化后的代码如下图所示。
32
当如下图所示的时候证明已经执行完毕。
执行完毕后,我们点击Statistics查看运行结果数据分析。
33
1)程序相关性分析结果 优化之后其中断数据显示为:
优化前为:
34
由上述两图对比可以看出,
数据相关:其RAW相关由优化前的34.12%减少为20.57%,性能改善很多; 结构相关没有发生改变;
控制相关:由原来的3.94%变为4.75%,没有改善。
因此,可以看出,我所进行的代码优化对性能方面改善并不是很强烈,主要影响还是在数据相关方面。
2)增加浮点运算部件对性能的影响。
上图左图为4个浮点部件执行结果,右图为原始默认1个浮点部件执行结果。由此可以看出,其部件个数对统计结果并无影响。
原因为该运算过程中不存在结构相关,因此并行度没有增加,程序影响不大,部件增加对于系统的性能并没有改善。
3)增加forward部件对性能的影响。
35