ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:968.59KB ,
资源ID:11388951      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11388951.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LAJI实验一二三报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LAJI实验一二三报告.docx

1、LAJI实验一二三报告信 息 学 部实 验 报 告 课程名称 计算机系统结构 本人学号 16105120 姓名 张启琳 同组同学学号 16110115 姓名 应屹 提交日期 年 月 日 实验一 流水线中的相关实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 加深对数据相关、资源相关的理解,了解这两类相关对CPU性能的影响;4. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。实验内容1. 用WinDLX模拟器执行下列三个程序(任选一个):求阶乘程序fact.s求最大公倍数程序gcm.s求素数程

2、序prim.s2. 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。3. 用WinDLX运行程序structure_d.s,通过模拟:找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。4. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数

3、以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。5. 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。实验步骤与结果分析用WinDLX模拟器执行求阶乘程序fact.s首先,根据实验指导书上的步骤,打开fact.s和input.s,然后开始运行程序。打开后,可以看到当前的pipeline图。 该图指出了每个功能段所进行的具体指令,点击指令还可以看到指令的具体相关的其他方面的内容。该图更加直观的形式显示出了在某个时间周期某个功能段所执行的具体的指令。该图指出了

4、各个寄存器和存储器的值。该图指出了指令的相关分析数据。该图显示了执行结果。 由于运行方式相同,下面两个例子,只给出执行结果。2.用WinDLX运行程序structure_d.s 运行如下图:资源相关的指令:addd f0,f0,f4 addd f2,f0,f2发生先写后读的数据相关导致消除了结构相关。资源相关的部件:faddEX下图为单条指令资源冲突图:暂停时钟周期数:139个暂停时钟周期数占总执行周期数的百分比:6/139 = 4.3%解决资源相关的方法:停顿几个时钟周期法(针对访存冲突和设备资源冲突(轮流单个使用)或者是增加硬件设备(解决设备资源冲突)。下图为数据分析图:3.在不采用定向技

5、术的情况下,用WinDLX运行程序data_d.s。总时钟周期=202 数据相关引起的暂停时钟周期=104暂停时钟周期数占总执行周期数的百分比=51.48%如下图所示:4.在采用定向技术的情况下,用WinDLX运行程序data_d.s。总时钟周期=128 数据相关引起的暂停时钟周期=30暂停时钟周期数占总执行周期数的百分比=23.44%如下图所示:实验结论通过使用WinDlX对指令模拟与分析,我们对流水线的执行过程更加熟悉,也对执行时出现的问题,如资源相关,数据相关等产生原因有了清晰的认识,进一步加深了使我们对流水线的理解。实验二 循环展开和指令调度实验原理:1、由于相关的存在,使得指令中的下

6、一条指令不能在指定的时钟周期执行。流水线冲突会给指令在流水线中的执行带来许多问题,如果不能很好地解决冲突问题,轻则影响流水线的性能,重则导致错误的执行结果。而对于各种冲突,都有可能用指令调度来解决。2、到目前为止,几乎所有的处理器都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。增加指令之间的并行性最简单的和最常用的方法,是开发循环的不同迭代之间存在的并行性。在把循环展开后,通过重命名和指令调度来开发更多的并行性,这样就可以充分发挥流水线的作用。实验目的:1、加深对循环并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2、熟悉用指令调

7、度技术来解决流水线中的数据相关的方法;3、了解循环展开、指令调度等技术对CPU性能的改进。实验内容:1、用指令调度技术解决流水线中的结构相关与数据相关。2、用循环展开、寄存器换名以及指令调度提升性能。实验器材(设备、元器件)及平台:装有WinDLX模拟器的PC微型机一台,平台即为WinDLX模拟器。实验步骤及操作: 一、用指令调度技术解决流水线中的结构相关与数据相关: (1)用DLX汇编语言编写代码文件,命名为instruction.s,程序中包括数据相关与结构相关(假设:加法、乘法、除法部件各有两个,延迟时间都是3个时钟周期)。 (2)通过Configiguration菜单中的“Flouat

8、ing point stages”选项,把加法、乘法、除法部件的个数设置为2个,把延迟都设置为3个时钟周期。 (3)用WinDLX运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总的时钟周期数。 (4)采用指令调度技术对程序进行指令调度,消除相关。 (5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。 (6)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的意义。 二、用循环展开、寄存器换名以及指令调度提高性能: (1)用DLX汇编语言编写代码文件,命名为test.s,程序中包含一个循环次数为4

9、的整数倍的简单循环。 (2)用WinDLX运行该程序。记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数。 (3)将循环展开3次,将4个循环体组成的代码替换原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度。 (4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总的时钟周期。(5)根据记录结果,比较循环展开、指令调度前后的性能。实验数据及结果分析: 一、用指令调度技术解决流水线中的结构相关与数据相关: 1、instruction.s文件的代码: 2、运行程序部分截图 3、未用指令调度技术之前程序执行过程中的相关: 4、运行结果数

10、据统计 5、采用指令调度后的程序代码 6、采用调度技术后发生的关联 7、运行结果数据统计 二、用循环展开、寄存器换名以及指令调度提高性能: 1、test.s文件的源代码如下: 2、运行test.s文件,记录运行过程中存在的相关,以及运行总的时钟周期数 3、将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度,代码如下: 4、记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数: 实验结论: 一、用指令调度技术解决流水线中的结构相关与数据相关 采用指令调度之前: 相关名相关次数所占比例RAW stalls933%WAW st

11、alls00Structural stalls13.7%Control stalls00Trap stalls725.92%Total17 采用循环调度前程序执行的过程中各种相关发生的次数如上表所示。发生相关的指令组合如实验数据中的截图所示。程序执行总的时钟周期数是27。根据上述数据计算可得:吞吐率=10/27=0.37. 采用指令调度之后:相关名相关次数所占比例RAW stalls31428WAW stalls00Structural stalls14.76Control stalls00Trap stalls628.57Total10 采用循环调度后程序执行过程中各种相关发生的次数如上表所

12、示,发生相关的指令组合如实验数据中的截图所示。程序执行总的时钟周期数是21。根据上述数据计算可得:吞吐率=10/21=0.476 结论:程序采用指令调度后程序的执行的总的时钟周期数减少了6次。加速比约为1.3.指令调度技术可以减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。但是指令调度技术不能将所有的相关都消除。二、用循环展开、寄存器换名以及指令调度提高性能 采用循环展开、调度之前: 相关名相关次数所占比例RAW stalls2631.71%WAW stalls00Structural stalls00Control stalls78.54%Trap stalls

13、33.66%Total36采用循环展开,指令调度以及寄存器换名之前,程序在执行过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。程序执行的总时钟周期数是82。采用循环展开,寄存器换名以及指令调度之后: 相关名相关次数所占比例RAW stalls24.44%WAW stalls00Structural stalls613.33%Control stalls12.22%Trap stalls36.67%Total12采用循环展开,寄存器换名以及指令调度之后,程序在执行的过程中各种相关如上表所示,发生相关的指令组合如实验数据中的截图所示。程序执行的总的时钟周期数是45.结论:程序采

14、用循环展开,指令调度以及寄存器换名后程序的执行的总的时钟周期数减少了37次。加速比约为1.82.这说明了采用循环展开、指令调度技术和换名技术可以在很大程度上减少程序运行中的相关,能够减少CPU的空闲时间,增加吞吐率,提高CPU的性能。但是这些技术的结合不能将所有的相关都消除。实验三 Cache性能分析实验目的1. 加深对Cache的基本概念、基本组织结构以及基本工作原理的理解;2. 了解Cache的容量、相联度、块大小对Cache性能的影响;3. 掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处;4. 理解Cache失效的产生原因以及Cache的三种失效;5. 理解L

15、RU与随机法的基本思想,及它们对Cache性能的影响;实验内容1在基本配置情况下运行程序(请指明所选的测试程序),统计Cache总失效次数;2改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Cache性能的影响;3改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响;4改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;5分别采用LRU

16、与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。实验步骤与结果分析本实验是cache性能分析,而simplescalar中有很多种cache的参数,我们只需要选其中一种cache来进行分析即可。在这里,我们选择分析数据cache,即修改并查看dl1的参数。1. 基本配置基本配置下,直接指定测试程序运行即可。具体步骤如下。测试程序:test-printf首先,执行指令得到dl1的结果:其中,accesses为总访问次数,hits为命中次数,misses为失效次数,replacement

17、s为非强制失效的次数。非强制失效包含容量失效与冲突失效。即:访问次数失效次数非强制失效次数强制失效次数失效率5314247074512560.13%测试程序:test-math首先,执行指令得到结果:即:访问次数失效次数非强制失效次数强制失效次数失效率574668045482561.40% 使用同样方法,可以得出所有程序的运行状况。具体情况如下表:测试程序访问次数失效次数非强制失效次数强制失效次数失效率test-printf5314247074512560.13%test-math574668045482561.40%test-fmath166395783222563.47%test-llon

18、g104734792232564.57%test-lswlr47284592032569.71% 可见,不论运行什么程序,强制失效次数都是一样的。由于强制失效是数据第一次被访问时所导致的失效,因此总数应当与cache容量相同。可见,cache容量默认值为256。 另外可以看出,程序的访问次数越多,则失效率会倾向于越少。2. 改变Cache容量(*2,*4,*8,*64)以下内容以16:8:1:l为基准,分别列出原结果、Cache容量 *2,*4,*8,*64后fmath的运行结果。所有参数设置如下:Cache容量参数描述基准16:8:1:l16组,每组1块,每块8字节*2 32:8:1:l32

19、组,每组1块,每块8字节*464:8:1:l64组,每组1块,每块8字节*8128:8:1:l128组,每组1块,每块8字节*641024:8:1:l1024组,每组1块,每块8字节a) ./simplesim-3.0/sim-cache -cache:dl1 dl1:16:8:1:l test-fmathb) ./simplesim-3.0/sim-cache -cache:dl1 dl1:32:8:1:l test-fmathc) ./simplesim-3.0/sim-cache -cache:dl1 dl1:64:8:1:l test-fmathd) ./simplesim-3.0/s

20、im-cache -cache:dl1 dl1:128:8:1:l test-fmathe) ./simplesim-3.0/sim-cache -cache:dl1 dl1:1024:8:1:l test-fmath结果如下表所示:Cache容量访问次数失效次数非强制失效次数强制失效次数失效率基准值16639470646901628.28%*216639361035783221.70%*416639286828046417.24%*8166392220209212813.34%*64166391844820102411.08%使用同样方法和参数,测试test-math的情况,最后结果汇总如下

21、:分析test-fmath的测试数据,结果如下:分析test-math的测试数据,结果如下:从两个图中可以看出,增加cache容量会减少失效的次数。虽然容量变大会增加强制失效的次数,但由于之后在访问cache时,若cache容量较大,可以显著降低不命中的概率,因此会使非强制失效的次数大幅减少,从而降低总的失效次数与失效率。3. 改变Cache的相联度(1路,2路,4路,8路,64路)以下内容以1024:8:1:l为基准,分别列出原结果、Cache相联度 *2,*4,*8,*64后test-printf, test-llong, test-lswlr的运行结果。所有参数设置如下:Cache相联度

22、参数描述1路1024:8:1:l1024组,每组1块,每块8字节2路512:8:2:l512组,每组2块,每块8字节4路256:8:4:l256组,每组4块,每块8字节8路128:8:8:l128组,每组8块,每块8字节64路16:8:64:l16组,每组64块,每块8字节测试结果如下:分析test-printf的测试数据,结果如下:分析test-llong的测试数据,结果如下:可以看出,改变cache相联度总的来说对命中率影响不大。在总访问次数较多的程序(如test-printf)中可以看出相联度在1、2、4时有细微的差别,而相联度超过4时则对命中率影响较小。在总访问次数较少的程序(如tes

23、t-lswlr)中,相联度不同甚至不会对失效次数产生影响。4. 改变Cache块大小(*2,*4,*8,*64)以下内容以1024:8:1:l为基准,分别列出原结果、Cache相联度 *2,*4,*8,*64后fmath的运行结果。所有参数设置如下:Cache块大小参数描述基准值1024:8:1:l1024组,每组1块,每块8字节*2512:16:1:l512组,每组1块,每块16字节*4256:32:1:l256组,每组1块,每块32字节*8128:64:1:l128组,每组1块,每块64字节*6416:512:1:l16组,每组1块,每块512字节测试结果如下:分析test-math的测试数据,结果如下:分析test-lswlr的测试数据,结果如下:可见,随着cache块大小的增加,强制失效次数、非强制失效次数均有减少。容易推出,由于cache每块的大小增加,而cache总容量不变,因此cache的总块数有所减少,从而使强制失效次数减少。另外,由于访问内存时需要获取的块不再像以前那样混杂,而是让很多块的内容能够在一个块里获取,因此非强制失效次数也有所减少。值得一提的是,可能因为cache块大小为512字节时超出了范围,因此*64一栏程序的输出数据失效。 实验小结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1