北邮 大三下 计算机系统结构 代码优化 实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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%。

相关文档
最新文档