资源描述
实验六 指令调度实验报告
1.实验目得:
通过本实验,加深对指令调度得理解,了解指令调度技术对CPU性能改进得好处。
2、 实验内容:
(1) 通过Configuration菜单中得“Floating point stages”选项,把除法单 元数设置为3,把加法﹑乘法﹑除法得延迟设置为3个时钟周期。
(2) 用WinDLX模拟器运行调度前得程序schbefore、s 。记录程序执行过程中各种相关发生得次数以及程序执行得总时钟周期数。
(3) 用WinDLX模拟器运行调度后得程序schafter、s ,记录程序执行过程中各种相关发生得次数以及程序执行得总时钟周期数。
(4) 根据记录结果,比较调度前与调度后得性能。
(5) 论述指令调度对于提高CPU性能得意义。
3.实验程序:
程序schbefore、s
;
; Example to illustrate instruction scheduling
;
、data
、global ONE
ONE: 、word 1
、text
、global main
main:
lf f1,ONE ;turn divf into a move
cvti2f f7,f1 ;by storing in f7 1 in
nop ;floatingpoint format
divf f1,f8,f7 ;move Y=(f8) into f1
divf f2,f9,f7 ;move Z=(f9) into f2
addf f3,f1,f2
divf f10,f3,f7 ;move f3 into X=(f10)
divf f4,f11,f7 ;move B=(f11) into f4
divf f5,f12,f7 ;move C=(f12) into f5
multf f6,f4,f5
divf f13,f6,f7 ;move f6 into A=(f13)
Finish:
trap 0
调度后得程序schafter、s
;
; Example to illustrate instruction scheduling reordered instructions
;
、data
、global ONE
ONE: 、word 1
、text
、global main
main:
lf f1,ONE ;turn divf into a move
cvti2f f7,f1 ;by storing in f7 1 in
nop ;floatingpoint format
divf f1,f8,f7 ;move Y=(f8) into f1
divf f2,f9,f7 ;move Z=(f9) into f2
divf f4,f11,f7 ;move B=(f11) into f4
divf f5,f12,f7 ;move C=(f12) into f5
addf f3,f1,f2
multf f6,f4,f5
divf f10,f3,f7 ;move f3 into X=(f10)
divf f13,f6,f7 ;move f6 into A=(f13)
Finish:
trap 0
4、 实验原理
由于相关得存在,使得指令中得下一条指令不能在指定得时钟周期执行。流水线冲突会给指令在流水线中得执行带来许多问题,如果不能很好地解决冲突问题,轻则影响流水线得性能,重则导致错误得执行结果。而对于各种冲突,都有可能用指令调度来解决。
6、 实验步骤
1>设置除法单元数设置为3,把加法﹑乘法﹑除法得延迟设置为3个时钟周期 :
2>运行程序部分截图
3>未用指令调度技术之前程序执行过程中得相关:
4>未用指令调度技术之前,运行结果数据统计
5>采用调度技术后发生得关联:
6>采用调度技术后,运行结果数据统计:
7、 实验结论
1>采用指令调度之前:
相关名
相关次数
所占比例
RAW stalls
9
33、33%
WAW stalls
0
0
Structural stalls
0
0
Control stalls
0
0
Trap stalls
7
25、92%
Total
16
59、26%
采用循环调度前程序执行得过程中各种相关发生得次数如上表所示。发生相关得指令组合如实验数据中得截图所示。程序执行总得时钟周期数就是27。根据上述数据计算可得:吞吐率=10/27=0、37、
2>采用指令调度之后:
相关名
相关次数
所占比例
RAW stalls
3
14、28%
WAW stalls
0
0
Structural stalls
0
0
Control stalls
0
0
Trap stalls
6
28、57%
Total
9
42、86%
采用循环调度后程序执行过程中各种相关发生得次数如上表所示,发生相关得指令组合如实验数据中得截图所示。程序执行总得时钟周期数就是21。根据上述数据计算可得:吞吐率=10/21=0、476
8、 实验总结
通过本实验,基本掌握了WinDLX模拟器得操作与使用,熟悉DLX指令集结构及其特点,对于采用指令调度技术减少各种相关、提高流水线速度得方法与技巧有了更深得认识,对于计算机体系结构这门课程得学习与以后得实验还就是很有帮助得。
做好本实验首先需要掌握WinDLX模拟器得使用。理解课本中得有关指令调度技术得基础知识以及使用汇编语言编程,就是做好本实验得关键所在。
9、 对本实验过程及方法、手段得改进建议:
在进行本实验时,用指令调度技术解决流水线中得结构相关与数据相关,没有对就是否采用定向技术进行考虑。而定向技术采用与否,会影响指令调度技术以及循环展开技术解决流水线中得结构相关与数据相关。所以,在今后做本实验时,应该考虑就是否采用定向技术。
展开阅读全文