计算机系统结构实验循环展开和指令调度.docx
- 文档编号:9105086
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:15
- 大小:298.11KB
计算机系统结构实验循环展开和指令调度.docx
《计算机系统结构实验循环展开和指令调度.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验循环展开和指令调度.docx(15页珍藏版)》请在冰豆网上搜索。
计算机系统结构实验循环展开和指令调度
中央民族大学
实验报告
学生姓名:
学号:
一、实验室名称:
信息工程学院实验室
二、实验项目名称:
循环展开和指令调度
三、实验原理:
1、由于相关的存在,使得指令中的下一条指令不能在指定的时钟周期执行。
流水线冲突会给指令在流水线中的执行带来许多问题,如果不能很好地解决冲突问题,轻则影响流水线的性能,重则导致错误的执行结果。
而对于各种冲突,都有可能用指令调度来解决。
2、到目前为止,几乎所有的处理器都利用流水线来使指令重叠并行执行,以达到提高性能的目的。
这种指令之间存在的潜在并行性称为指令级并行。
增加指令之间的并行性最简单的和最常用的方法,是开发循环的不同迭代之间存在的并行性。
在把循环展开后,通过重命名和指令调度来开发更多的并行性,这样就可以充分发挥流水线的作用。
四、实验目的:
1、加深对循环并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;
2、熟悉用指令调度技术来解决流水线中的数据相关的方法;
3、了解循环展开、指令调度等技术对CPU性能的改进。
五、实验内容:
1、用指令调度技术解决流水线中的结构相关与数据相关。
2、用循环展开、寄存器换名以及指令调度提升性能。
六、实验器材(设备、元器件)及平台:
装有WinDLX模拟器的PC微型机一台,平台即为WinDLX模拟器。
七、实验步骤及操作:
一、用指令调度技术解决流水线中的结构相关与数据相关:
(1)用DLX汇编语言编写代码文件,命名为instruction.s,程序中包括数据相关与结构相关(假设:
加法、乘法、除法部件各有两个,延迟时间都是3个时钟周期)。
(2)通过Configiguration菜单中的“Flouatingpointstages”选项,把加法、乘法、除法部件的个数设置为2个,把延迟都设置为3个时钟周期。
(3)用WinDLX运行程序。
记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总的时钟周期数。
(4)采用指令调度技术对程序进行指令调度,消除相关。
(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。
(6)根据记录结果,比较调度前和调度后的性能。
论述指令调度对于提高CPU性能的意义。
二、用循环展开、寄存器换名以及指令调度提高性能:
(1)用DLX汇编语言编写代码文件,命名为test.s,程序中包含一个循环次数为4的整数倍的简单循环。
(2)用WinDLX运行该程序。
记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数。
(3)将循环展开3次,将4个循环体组成的代码替换原来的循环体,并对程序做相应的修改。
然后对新的循环体进行寄存器换名和指令调度。
(4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总的时钟周期。
(5)根据记录结果,比较循环展开、指令调度前后的性能。
八、实验数据及结果分析:
一、用指令调度技术解决流水线中的结构相关与数据相关:
1、instruction.s文件的代码:
2、运行程序部分截图
3、未用指令调度技术之前程序执行过程中的相关:
4、运行结果数据统计
5、采用指令调度后的程序代码
6、采用调度技术后发生的关联
7、运行结果数据统计
二、用循环展开、寄存器换名以及指令调度提高性能:
1、test.s文件的源代码如下:
2、运行test.s文件,记录运行过程中存在的相关,以及运行总的时钟周期数
3、将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。
然后对新的循环体进行寄存器换名和指令调度,代码如下:
4、记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数:
九、实验结论:
一、用指令调度技术解决流水线中的结构相关与数据相关
采用指令调度之前:
相关名
相关次数
所占比例
RAWstalls
9
33%
WAWstalls
0
0
Structuralstalls
1
3.7%
Controlstalls
0
0
Trapstalls
7
25.92%
Total
17
采用循环调度前程序执行的过程中各种相关发生的次数如上表所示。
发生相关的指令组合如实验数据中的截图所示。
程序执行总的时钟周期数是27。
根据上述数据计算可得:
吞吐率=10/27=0.37.
采用指令调度之后:
相关名
相关次数
所占比例
RAWstalls
3
14.28
WAWstalls
0
0
Structuralstalls
1
4.76
Controlstalls
0
0
Trapstalls
6
28.57
Total
10
采用循环调度后程序执行过程中各种相关发生的次数如上表所示,发生相关的指令组合如实验数据中的截图所示。
程序执行总的时钟周期数是21。
根据上述数据计算可得:
吞吐率=10/21=0.476
结论:
程序采用指令调度后程序的执行的总的时钟周期数减少了6次。
加速比约为1.3.指令调度技术可以减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。
但是指令调度技术不能将所有的相关都消除。
二、用循环展开、寄存器换名以及指令调度提高性能
采用循环展开、调度之前:
相关名
相关次数
所占比例
RAWstalls
26
31.71%
WAWstalls
0
0
Structuralstalls
0
0
Controlstalls
7
8.54%
Trapstalls
3
3.66%
Total
36
采用循环展开,指令调度以及寄存器换名之前,程序在执行过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。
程序执行的总时钟周期数是82。
采用循环展开,寄存器换名以及指令调度之后:
相关名
相关次数
所占比例
RAWstalls
2
4.44%
WAWstalls
0
0
Structuralstalls
6
13.33%
Controlstalls
1
2.22%
Trapstalls
3
6.67%
Total
12
采用循环展开,寄存器换名以及指令调度之后,程序在执行的过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。
程序执行的总的时钟周期数是45.
结论:
程序采用循环展开,指令调度以及寄存器换名后程序的执行的总的时钟周期数减少了37次。
加速比约为1.82.这说明了采用循环展开、指令调度技术和换名技术可以在很大程度上减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。
但是这些技术的结合不能将所有的相关都消除。
十、总结及心得体会:
通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于采用指令调度技术、循环展开技术及换名技术减少各种相关、提高流水线速度的方法和技巧有了更深的认识,对于计算机体系结构这门课程的学习和以后的实验还是很有帮助的。
做好本实验首先需要掌握WinDLX模拟器的使用。
理解课本中的有关指令调度技术、循环展开技术及换名技术的基础知识以及使用汇编语言编程,是做好本实验的关键所在。
十一、对本实验过程及方法、手段的改进建议:
在进行本实验时,无论是用指令调度技术解决流水线中的结构相关与数据相关,还是用循环展开、寄存器换名以及指令调度提高性能,都没有对是否采用定向技术进行考虑。
而定向技术采用与否,会影响指令调度技术以及循环展开技术解决流水线中的结构相关与数据相关。
所以,在今后做本实验时,应该考虑是否采用定向技术。
报告评分:
指导教师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 循环 展开 指令 调度
![提示](https://static.bdocx.com/images/bang_tan.gif)