点击Clock cycle diagram窗口中的trap 0x5行,你将看到模拟正处于时钟周期14。trap 0x5行如图五所示。其原因是,无论何时遇到一条trap指令时,DLX 处理器中的流水线都将被清空。
图5 优化前时钟周期14的时空图
图6 未经优化的时空图
由于没有优化代码,出现了很多“写写相关”“读写相关”“功能部件冲突”等数据相关,然后看一下Statistics窗口中的各种统计数字:总的周期数(215) 和暂停数(17 RAW, 25 Control, 12 Trap; 54 Total),然后关闭窗口。点击主窗口中Configuration中的Enable Forwarding使重定向技术无效(去掉小钩),其中PC被复位为0x00000100。激活Breakpoints子窗口,点击主窗口中Breakpoints菜单,删除所有断点。然后按F5键,键入20后,按Enter键,程序将一直模拟运行到结束。重新查看Statistics子窗口,你会看到Control暂停和Trap暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。如图七所示是优化后的时空图。
图7 优化后的时空图
再一次查看Statistics子窗口,可以看到Control暂停和Trap暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。
3.2 基于流水线的性能分析
图8 fact.s程序段指令优化前后的部分统计
加速比 s==236 / 215 = 1.098
可以分析得出即DLXforwarded比 DLXnot forwarded 快9.8%。
4 总结
流水线过去是,而且将来还是提高计算机性能的最有效技术之一。DLX虚拟处理器为设计和研究流水线结构提供方便直观的平台 ,如跟踪程序运行的时空图,在时空图上可直接看到数据旁路(用箭头表示)或延时的情况 ,程序运行结果的统计数据较全面地报告了流水线运行状态等。本文探讨了DLX流水线使用的主要技术 ,利用DLX处理机,采用对流水线实例的优化处理分析,验证了指令流调整技术和数据重定向技术对DLX指令流水线的优化作用,得出了一个结论,在正常的情况下同时使用两种优化技术,可以使代码的执行的速度得很大的提高。通过计算还可以知道使用优化技术后加速比也得到了很好的提高大概是以前4倍左右。
参考文献
[1] 郑纬民, 汤志忠. 计算机系统结构[M]. 北京: 清华大学出版社, 1998.
[2] Patterson D A., Hennessy J L. Computer Architecture: A Quantitive Approach 3ed[M]. San Francisco: Morgan Kanfmann Publishers, 2003.
[3] 蔡启先, 李日初. DLX处理器浮点数流水线性能的研究[J]. 计算机工程,2006,5,32(9).