北邮 大三下 计算机系统结构 代码优化 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:计算机系统结构实验名称:代码优化实验班级:09211311
姓名:schnee
学号:
日期:2012年4月20日
目录
1.实验目的 (3)
2.实验原理 (3)
3.优化程序代码清单及注释说明 (3)
4.实验分析 (4)
观察程序中出现的数据/结构/控制相关,指出程序中出现上述现象的指令组合。 (4)
考察增加浮点运算部件对性能的影响。 (5)
考察增加FORWARD部件对性能的影响。 (5)
观察转移指令在转移成功和转移不成功时候的流水线开销。 (6)
5.实验心得和总结 (6)
1.实验目的
学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。
2.实验原理
采用静态调度方法重排指令序列,减少相关,优化程序。
3.优化程序代码清单及注释说明
1..data
2.VectorLength: .word 16
3.Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
4.Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
5.Printf1: .asciiz "Vector ="
6.Printf2: .asciiz " %f"
7..align 2
8.PrintPrompt: .word Printf1
9.PrintPar: . word Printf2
10.Result: .space 4
11..text
12.main: ;**** Print prompt "Vector ="
13.addi r14,r0,PrintPrompt
14.trap 5
15. addi r2,r0,0 ;调换两行代码,
;提前写入R2以减少下面语句的相关16.lw r20,VectorLength
17.Loop:
18.ld f10,Vector1(r2)
19.ld f12,Vector2(r2)
20.addi r2,r2,4 ;r2地址加4个字节,
;相当于寻找下一个元素
;将下面的句子1移动到此处
21.cvti2d f0,f10 ;把int型改为double D0(f0:f1)
22.cvti2d f2,f12 ;把int型改为double D1(f2:f3)
23.subi r20,r20,1 ;r20值设为16,此处-1以循环16次
;此处是将下面的句子2移动到此处24. addd f4,f2,f0 ;add D2=D0+D1
;**** Finish,write result into stdout
25.sd Result,f4
26.addi r14,r0,PrintPar
27.trap 5
28.;addi r2,r2,4 ;句子1
29.;subi r20,r20,1 ;句子2
30. bnez r20,Loop
;**** End
31.trap 0
4.实验分析
这个实验的优化思路在于:
1、根据原先实验3中实验分
析1)中关于相关性的分析来找出
代码中的相关性,
2、对其中具有相关性的指令,
通过把无关紧要的代码提前或者
拖后至相关性语句之间,以此来
减少甚至消除数据相关性所造成
的stall带来的效率低下。
观察程序中出现的数据/结构/控
制相关,指出程序中出现上述现
象的指令组合。
(FORWARD技术关闭,浮点运
算部件各一个,延迟为4)
Cvti2d f2,f12
Subi r20,r20,0x1
Addd f4,f2,f0 ; RAW相关
Sd Result(r0),f4 ; RAW相关
和优化之前相比,总花费时钟
周期为348(优化前为413),总执行指令数为181(不变),RAW相关:97 stalls (优化前为162 stalls),WAW相关:0 stall,结构相关:0 stall,控制相关:15 stalls (不变)。
可得出优化后效率提高了约15.7%,作用明显。
考察增加浮点运算部件对性能的影响。
(FORWARD技术关闭,浮点运
算部件各两个,延迟为4)
总花费时钟周期:348(不变),
总执行指令数:181(不变),RAW
相关:97 stalls(不变),WAW相关:
0 stall(不变),结构相关:0 stall(不
变),控制相关:15 stalls(不变)
虽然增加浮点运算器,但系统性
能并未提升。究其原因在于程序中
不存在结构相关,所以添加运算部
件后不能提升其性能。
考察增加FORWARD部件对性能的
影响。
(FORWARD技术打开,浮点运
算部件各一个,延迟为4)
总花费时钟周期:299(优化后
不使用FORWARD技术为348,优化
前使用FORWARD技术时结果是315),总执行指令数:181,RAW相关:48 stalls (优化后不使用FORWARD技术为97,优化前使用FORWARD技术时结果是64 stalls),WAW相关:0 stall,结构相关:0 stall,控制相关:15 stalls(不变)再开启FORWARD技术之后,RAW相关大量减少,但是静态代码优化的作用依然明显,比之前未开启效果要好上约15.0%,比使用FORWARD技术的未优化代码仍要好上约5.0%。