1、而对于各种冲突,都有可能用指令调度来解决。2、到目前为止,几乎所有的处理器都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。增加指令之间的并行性最简单的和最常用的方法,是开发循环的不同迭代之间存在的并行性。在把循环展开后,通过重命名和指令调度来开发更多的并行性,这样就可以充分发挥流水线的作用。四、实验目的:1、加深对循环并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2、熟悉用指令调度技术来解决流水线中的数据相关的方法;3、了解循环展开、指令调度等技术对CPU性能的改进。五、实验内容:1、用指令调度技术解决流水线中的结构相关与数据相
2、关。2、用循环展开、寄存器换名以及指令调度提升性能。六、实验器材(设备、元器件)及平台:装有WinDLX模拟器的PC微型机一台,平台即为WinDLX模拟器。七、实验步骤及操作: 一、用指令调度技术解决流水线中的结构相关与数据相关: (1)用DLX汇编语言编写代码文件,命名为instruction.s,程序中包括数据相关与结构相关(假设:加法、乘法、除法部件各有两个,延迟时间都是3个时钟周期)。 (2)通过Configiguration菜单中的“Flouating point stages”选项,把加法、乘法、除法部件的个数设置为2个,把延迟都设置为3个时钟周期。 (3)用WinDLX运行程序。
3、记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总的时钟周期数。 (4)采用指令调度技术对程序进行指令调度,消除相关。 (5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。 (6)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的意义。二、用循环展开、寄存器换名以及指令调度提高性能: (1)用DLX汇编语言编写代码文件,命名为test.s,程序中包含一个循环次数为4的整数倍的简单循环。 (2)用WinDLX运行该程序。记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数。 (3)将循环展开3次,将4
4、个循环体组成的代码替换原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度。 (4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总的时钟周期。 (5)根据记录结果,比较循环展开、指令调度前后的性能。八、实验数据及结果分析: 1、instruction.s文件的代码: 2、运行程序部分截图 3、未用指令调度技术之前程序执行过程中的相关: 4、运行结果数据统计 5、采用指令调度后的程序代码 6、采用调度技术后发生的关联7、运行结果数据统计 二、用循环展开、寄存器换名以及指令调度提高性能: 1、test.s文件的源代码如下: 2、运行test
5、.s文件,记录运行过程中存在的相关,以及运行总的时钟周期数3、将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度,代码如下: 4、记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数:九、实验结论: 一、用指令调度技术解决流水线中的结构相关与数据相关 采用指令调度之前: 相关名相关次数所占比例RAW stalls933%WAW stallsStructural stalls13.7%Control stallsTrap stalls725.92%Total17 采用循环调度前程序执行的过程中各种相关发生的次数如上表所示。
6、发生相关的指令组合如实验数据中的截图所示。程序执行总的时钟周期数是27。根据上述数据计算可得:吞吐率=10/27=0.37. 采用指令调度之后:相关名314284.76628.5710 采用循环调度后程序执行过程中各种相关发生的次数如上表所示,发生相关的指令组合如实验数据中的截图所示。程序执行总的时钟周期数是21。吞吐率=10/21=0.476 结论:程序采用指令调度后程序的执行的总的时钟周期数减少了6次。加速比约为1.3.指令调度技术可以减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。但是指令调度技术不能将所有的相关都消除。 二、用循环展开、寄存器换名以及指令调
7、度提高性能 采用循环展开、调度之前:2631.71%8.54%3.66%36采用循环展开,指令调度以及寄存器换名之前,程序在执行过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。程序执行的总时钟周期数是82。采用循环展开,寄存器换名以及指令调度之后:24.44%13.33%2.22%6.67%12采用循环展开,寄存器换名以及指令调度之后,程序在执行的过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。程序执行的总的时钟周期数是45.结论:程序采用循环展开,指令调度以及寄存器换名后程序的执行的总的时钟周期数减少了37次。加速比约为1.82.这说明了采用循环展开、
8、指令调度技术和换名技术可以在很大程度上减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。但是这些技术的结合不能将所有的相关都消除。十、总结及心得体会: 通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于采用指令调度技术、循环展开技术及换名技术减少各种相关、提高流水线速度的方法和技巧有了更深的认识,对于计算机体系结构这门课程的学习和以后的实验还是很有帮助的。 做好本实验首先需要掌握WinDLX模拟器的使用。理解课本中的有关指令调度技术、循环展开技术及换名技术的基础知识以及使用汇编语言编程,是做好本实验的关键所在。十一、对本实验过程及方法、手段的改进建议: 在进行本实验时,无论是用指令调度技术解决流水线中的结构相关与数据相关,还是用循环展开、寄存器换名以及指令调度提高性能,都没有对是否采用定向技术进行考虑。而定向技术采用与否,会影响指令调度技术以及循环展开技术解决流水线中的结构相关与数据相关。所以,在今后做本实验时,应该考虑是否采用定向技术。报告评分: 指导教师签字:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1