收藏 分销(赏)

系统结构实验.doc

上传人:精*** 文档编号:2405483 上传时间:2024-05-29 格式:DOC 页数:38 大小:1.26MB
下载 相关 举报
系统结构实验.doc_第1页
第1页 / 共38页
系统结构实验.doc_第2页
第2页 / 共38页
系统结构实验.doc_第3页
第3页 / 共38页
系统结构实验.doc_第4页
第4页 / 共38页
系统结构实验.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、。系统结构实验报告 11070113 臧琦11070230 曾凯 目录实验一 流水线中的相关31、实验目的32、实验平台33、实验要求34、实验结果44.1用WinDLX 模拟器执行下列三个程序44.1.1用WinDLX 模拟器执行阶乘程序 fact.s的结果如下所示44.1.2 用WinDLX 模拟器执行阶乘程序 gcm.s的结果如下所示54.1.3 用WinDLX 模拟器执行阶乘程序 prim.s的结果如下所示74.2 用WinDLX 模拟运行器程序structure_d.s,进行相关实验84.3 比较定向与不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验114.3

2、.1采用不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验114.3.2采用定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验115、总结与体会12实验二 循环展开及指令调度131、实验目的132、实验平台133、实验要求134、实验结果144.1用指令调度技术解决流水线中的结构相关与数据相关144.1.1原指令执行的相关结果144.1.2调整指令顺序指令执行的结果164.2用循环展开、寄存器换名以及指令调度提高性能174.2.1 原循环程序运行的结果174.2.2 将循环程序展开运行的结果184.2.3 将程序循环展开、指令调度后运行的结果195、总

3、计与体会21实验三 cache性能分析211、实验目的212、实验平台213、实验要求214、实验结果224.1.基本配置情况下运行程序224.2改变Cache容量对Cache性能的影响224.3改变Cache的相联度对Cache性能的影响254.4改变Cache块大小对Cache性能的影响284.5不同的替换算法对Cache性能的影响304.5.1不同容量下,不同的替换算法对Cache性能的影响305、总计与体会36实验一 流水线中的相关1、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基

4、本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停2、实验平台用WinDLX模拟器模拟流水线。3、实验要求1.用WinDLX 模拟器执行下列三个程序:l 求阶乘程序 fact.s求最大公倍数程序 gcm.sl 求素数程序 prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。2. 用WinDLX 运行程序structure_d.s,通过模拟找出存在资源相关的指令对

5、以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU 性能的影响,讨论解决资源相关的方法。3. 在不采用定向技术的情况下(去掉Configuration 菜单中Enable Forwarding 选项前的勾选符),用WinDLX 运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3 中的工作,并计算采用定向技术后性能提高的倍数。4、

6、实验结果4.1用WinDLX 模拟器执行下列三个程序 4.1.1用WinDLX 模拟器执行阶乘程序 fact.s的结果如下所示l 步进方式运行程序结果如下所示 图1 以步进方式进行的过程l 连续方式运行程序结果如下所示 图2 连续方式,程序无间断的进行l 设置断点方式运行程序结果如下所示 图3 通过设置不同的断点来控制程序的执行4.1.2 用WinDLX 模拟器执行阶乘程序 gcm.s的结果如下所示l 步进方式运行程序结果如下所示 图4 以步进方式进行的过程,经过有限的步骤将程序的结果运行出来l 连续方式运行程序结果如下所示 图5 连续方式,程序无间断的进行,直到程序结束l 设置断点方式运行程

7、序结果如下所示 图6 通过设置不同的断点来控制程序的执行4.1.3 用WinDLX 模拟器执行阶乘程序 prim.s的结果如下所示l 步进方式运行程序结果如下所示 图7 以步进方式进行的过程l 连续方式运行程序结果如下所示 图8 连续方式,程序无间断的进行,直到程序结束l 设置断点方式运行程序结果如下所示 图9 通过设置不同的断点来控制程序的执行4.2 用WinDLX 模拟运行器程序structure_d.s,进行相关实验 图10 structure_d.s程序运行的流水线图l 资源相关的指令对(1)ADDD F0, F0, F4 ADDD F2, F0, F2 ;导致资源相关的部件: ALU

8、; 指令ADDD F2, F0, F2 在译码阶段ID停滞1周期(2) ADDD F2, F0, F2ADDI R2, R2, #8 导致资源相关的部件: ALU; 指令ADDI R2, R2, #8 在执行阶段intEX停滞1周期(3) ADDD F2, F0, F2 ADDI R2, R2, #8 ; (mem部件相关)ADDI R3, R3, #8 ; (mem部件相关) SUB R5, R4, R2; (mem部件相关)l 由资源相关引起的暂停时钟周期数 图11 程序执行总的周期数以及延迟的周期数由资源相关引起的暂停周期数为:30总执行周期数为:139暂停周期数占总执行周期数的百分比:

9、30/139=21.58%l 分析及解决办法分析:资源相关使相关指令在流水线上停滞,降低了执行效率,使cpu的性能下降。解决方法:在合理的指令调度范围内,尽量避免执行重复的指令。尽量避免同一寄存器的频繁使用,若无法避免,则使用寄存器换名的方法。4.3 比较定向与不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验4.3.1采用不定向技术,用WinDLX 模拟运行器程序data_d.s,进行相关实验 图12 采用非定向技术运行的结果图由数据相关引起的暂停时钟周期数为:104总执行周期数为:202暂停周期数占总执行周期数的百分比:104/202=51.48%4.3.2采用定向技

10、术,用WinDLX 模拟运行器程序data_d.s,进行相关实验在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 图13 定向技术相关结果的截图由数据相关引起的暂停时钟周期数为:30总执行周期数为:128暂停周期数占总执行周期数的百分比:30/128=23.44% 总结: 采用定向技术性能提高的倍数:202/128=1.58倍5、总结与体会这次实验让我很好的学习了windlx的用法,对其中的各种操作以及性质有了更好的认识与应用,为之后的学习以及发展带来了极大的便利。同个对几个.

11、s程序的运行,让我对流水线的过程有了更加清楚的认识,将课堂上学到的理论知识运用到了实际中去。同时,对数据相关、资源相关等有了更好的认识与了解,对程序的简化运行有了更加清楚的认识,为以后清楚的快捷的运行提供了思想的基础。最后,对定向技术以及其性能有了更加清楚的了解,充分认识了定向技术的优点,在以后的开发应用中,要多采用定向技术,可以减少程序的运行周期,提高程序的运行效率。实验二 循环展开及指令调度1、实验目的1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解; 2. 熟悉用指令调度技术来解决流水线中的数据相关的方法; 3. 了解循环展开、指令调度等技术对CPU性能的改进

12、。 2、实验平台用WinDLX模拟器模拟流水线。3、实验要求1用指令调度技术解决流水线中的结构相关与数据相关(1)用DLX 汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法乘法除法部件各有2 个,延迟时间都是3 个时钟周期)(2)通过Configuration 菜单中的“Floating point stages” 选项,把加法乘法除法部件的个数设置为2 个,把延迟都设置为3 个时钟周期;(3)用WinDLX 运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;(4)采用指令调度技术对程序进行指令调度,消除相关;(5)用WinD

13、LX 运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;(6)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU 性能的意义。2. 用循环展开、寄存器换名以及指令调度提高性能(1)用DLX 汇编语言编写代码文件*.s,程序中包含一个循环次数为4 的整数倍的简单循环;(2)用WinDLX 运行该程序。记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;(3)将循环展开3 次,将4 个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;(4)用WinDLX 运行修改后的程序,记录执行过程中各种相关发生的

14、次数以及程序执4、实验结果4.1用指令调度技术解决流水线中的结构相关与数据相关4.1.1原指令执行的相关结果l DLX 汇编语言编写代码文件*.s的内容如下所示:addf f0,f0,f1addf f1,f3,f4addf f2,f0,f2multf f6,f2,f0addf f0,f0,f1 multf f1,f6,f0subf f3,f7,f8subf f7,f3,f1trap 0l 通过Configuration 菜单中的“Floating point stages” 选项,把加法乘法除法部件的个数设置为2 个,把延迟都设置为3 个时钟周期 图 2-1 加法器、乘法器、除法器的设置l 程

15、序运行的流水线图 图2-2 程序执行时的流水线图l 指令执行结果的统计 图2-3 指令执行结果的统计从上图中,我们可以看到指令执行的总周期是22,发生相关的次数是4,总的延迟周期是14,各种相关指令的组合如下所示: 1、addf f0,f0,f1addf f1,f3,f4 对f0的数据相关addf f2,f0,f2 2、addf f2,f0,f2multf f6,f2,f0 对f2的数据相关3、addf f0,f0,f1 multf f1,f6,f0 对f1的数据相关4、subf f3,f7,f8subf f7,f3,f1 对f3的数据相关4.1.2调整指令顺序指令执行的结果l 调整指令后的顺

16、序如下所示addf f0,f0,f1addf f1,f3,f4subf f3,f7,f8addf f2,f0,f2multf f6,f2,f0subf f7,f3,f1addf f0,f0,f1multf f1,f6,f0trap 0l 指令执行的流水线结果如下所示 图2-4 指令执行的流水线图l 周期统计图 图2-5 执行结果统计图从上图中,我们可以看到指令执行的总周期是20,发生相关的次数是2,总的延迟周期是12指令调度后的加速比是22/20=1.1,通过指令调度,可以充分利用cpu部件利用率,减少数据相关和资源相关引起的暂停。4.2用循环展开、寄存器换名以及指令调度提高性能4.2.1 原

17、循环程序运行的结果l 运行的程序如下所示 .dataA: .word 1B: .word 4.text.global mainmain: lf f0,A lf f1,BLoop: eqf f1,f2 bfpt Finish addf f2,f2,f0 subf f4,f3,f7 addf f5,f4,f8 multf f6,f3,f9 subf f7,f6,f3 j LoopFinish:trap 0程序运行的流水线图如下图所示 图2-6l 程序运行的统计结果图如下图所示 图 2-7总计执行周期:70总计时延:32个周期4.2.2 将循环程序展开运行的结果l 运行的程序如下所示 subf f4

18、,f3,f7 addf f5,f4,f8 multf f6,f3,f9 subf f7,f6,f3subf f4,f3,f7 addf f5,f4,f8 multf f6,f3,f9 subf f7,f6,f3subf f4,f3,f7 addf f5,f4,f8 multf f6,f3,f9 subf f7,f6,f3subf f4,f3,f7 addf f5,f4,f8 multf f6,f3,f9 subf f7,f6,f3trap 0l 程序运行的流水线图如下图所示 图2-8l 程序运行的统计结果图如下图所示 图 2-9总计执行周期:47总计时延:31个周期从上面的结果可以看出,循环展

19、开后的加速比为 70/47=1.49;由此可见循环展开可以极大的提高cpu的效率。4.2.3 将程序循环展开、指令调度后运行的结果l 运行的程序如下所示.dataA: .word 1B: .word 4.text.global mainmain: lf f0,A lf f1,Bsubf f4,f3,f7multf f6,f3,f9addf f5,f4,f8subf f7,f6,f3subf f4,f3,f7multf f6,f3,f9addf f5,f4,f8subf f7,f6,f3subf f4,f3,f7multf f6,f3,f9addf f5,f4,f8subf f7,f6,f3su

20、bf f4,f3,f7multf f6,f3,f9addf f5,f4,f8 subf f7,f6,f3trap 0 程序运行的流水线图如下图所示 图2-10l 程序运行的统计结果图如下图所示 图 2-9总计执行周期:39总计时延:22个周期从上面的结果可以看出,循环展开后的加速比为 70/39=1.79;由此可见循环展开、指令调度可以极大的提高cpu的效率。5、总计与体会 这次实验让我对指令的调度有了很好的理解,通过指令调度执行时间的计算,更好的看出了指令调度可以极大的提高cpu的运行效率。同时,循环展开也可以很好的提高cpu的运行效率,将两者结合起来,可以极大的提高运行的效率,为程序的运行

21、带来极大的便利,在今后的程序设置以及程序的运行中,我们可以很好的利用这一特性,来提高我们程序运行的效率,节省时间。实验三 cache性能分析1、实验目的1 加深对Cache的基本概念、基本组织结构以及基本工作原理的理解; 2 了解Cache的容量、相联度、块大小对Cache性能的影响; 3 掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处; 4 理解Cache失效的产生原因以及Cache的三种失效; 5 理解LRU与随机法的基本思想,及它们对Cache性能的影响; 2、实验平台 SimpleScalar模拟器3、实验要求 1在基本配置情况下运行程序(请指明所选的测试程

22、序),统计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与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程

23、序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。测试程序: 用于实验的测试程序可以使用现有的,即benchmark目录下的所有程序;也可以自己用C 语言直接生成各类典型程序比如:数学运算类、输入输出类等,通过本环境提供的特定C编译器,编译生成对应的xxx.out(默认是a.out)测试程序用于实验。每个测试程序所需时间大概是10分钟,选择测试程序时注意从不同组中选择,以便使得出的结果不会因为对单项有所侧重而有失偏颇。每个人从中选出46个测试程序进行测试。4、实验结果 4.1.基本配置情况下运行程序默认参数如下所示:-cache:dl1 dl1:256:32:

24、1:l -cache:dl2 ul2:1024:64:4:l -cache:il1 il1:256:32:1:l 对于测试程序 benchmarkbin.littletest-math 测试结果如下所示il1.misses (指令cache) 23761 # total number of missesdl1.misses (数据cache) 804 # total number of missesul2.misses 1203 # total number of misses 对于测试程序 benchmarkbin.littletest-lswlr 测试结果如下所示il1.misses 54

25、7 # total number of missesil1.miss_rate 0.0627 # miss rate (i.e., misses/ref)dl1.misses 459 # total number of missesdl1.miss_rate 0.0971 # miss rate (i.e., misses/ref)ul2.misses 477 # total number of misses4.2改变Cache容量对Cache性能的影响 实验具体要求:改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Ca

26、che性能的影响;由于测试程序中指令项较多,因此在cache改变的实验中皆改变icache通过下面的命令,将cache的由原来的256组变为512组rootlocalhost simplescalar# cd /root/simplescalar/simplesim-3.0/tests-pisa/bin.littlerootlocalhost bin.little# /root/simplescalar/simplesim-3.0/sim-cache -cache:il1 il1:512:32:1:l test-math1、测试程序为benchmarkbin.littletest-printf

27、 -cache:il1 il1:256:32:1:lil1.misses 112488 # total number of missesil1.miss_rate 0.0620 # miss rate (i.e., misses/ref) -cache:il1 il1:512:32:1:lil1.misses 60016 # total number of missesil1.miss_rate 0.0331 # miss rate (i.e., misses/ref) -cache:il1 il1:1024:32:1:lil1.misses 23335 # total number of m

28、issesil1.miss_rate 0.0129 # miss rate (i.e., misses/ref) -cache:il1 il1:2048:32:1:lil1.misses 8578 # total number of missesil1.miss_rate 0.0047 # miss rate (i.e., misses/ref) -cache:il1 il1:16384:32:1:l il1.misses 1515 # total number of missesil1.miss_rate 0.0008 # miss rate (i.e., misses/ref)2、测试程序

29、为benchmarkbin.littletest-llong -cache:il1 il1:256:32:1:lil1.misses 1130 # total number of missesil1.miss_rate 0.0383 # miss rate (i.e., misses/ref) -cache:il1 il1:512:32:1:lil1.misses 936 # total number of missesil1.miss_rate 0.0317 # miss rate (i.e., misses/ref) -cache:il1 il1:1024:32:1:lil1.misses

30、 634 # total number of missesil1.miss_rate 0.0215 # miss rate (i.e., misses/ref)- -cache:il1 il1:2048:32:1:lil1.misses 594 # total number of missesil1.miss_rate 0.0201 # miss rate (i.e., misses/ref) -cache:il1 il1:16384:32:1:l il1.misses 534 # total number of missesil1.miss_rate 0.0181 # miss rate (

31、i.e., misses/ref)3、测试程序为benchmarkbin.littleanagram -cache:il1 il1:256:32:1:lil1.misses 577 # total number of missesil1.miss_rate 0.0758 # miss rate (i.e., misses/ref) -cache:il1 il1:512:32:1:lil1.misses 512 # total number of missesil1.miss_rate 0.0672 # miss rate (i.e., misses/ref) -cache:il1 il1:10

32、24:32:1:lil1.misses 502 # total number of missesil1.miss_rate 0.0659 # miss rate (i.e., misses/ref) -cache:il1 il1:2048:32:1:lil1.misses 477 # total number of missesil1.miss_rate 0.0626 # miss rate (i.e., misses/ref) -cache:il1 il1:16384:32:1:lil1.misses 477 # total number of missesil1.miss_rate 0.0

33、626 # miss rate (i.e., misses/ref)4、测试程序为benchmarkbin.littletest-fmath -cache:il1 il1:256:32:1:lil1.misses 6093 # total number of missesil1.miss_rate 0.1143 # miss rate (i.e., misses/ref) -cache:il1 il1:512:32:1:lil1.misses 4100 # total number of missesil1.miss_rate 0.0769 # miss rate (i.e., misses/

34、ref) -cache:il1 il1:1024:32:1:lil1.misses 2231 # total number of missesil1.miss_rate 0.0418 # miss rate (i.e., misses/ref) -cache:il1 il1:2048:32:1:lil1.misses 1360 # total number of missesil1.miss_rate 0.0255 # miss rate (i.e., misses/ref) -cache:il1 il1:16384:32:1:lil1.misses 1032 # total number o

35、f missesil1.miss_rate 0.0194 # miss rate (i.e., misses/ref) 图一 改变cache容量时,失效次数的变化分析:从上图中,我们可以清楚的看到不同的测试程序随着cache容量的增加失效率都会下降。意味着为了提高命中率,我们可以增加cache的容量,但是实际中由于cache各种消耗等,其容量不可以无限的增加。4.3改变Cache的相联度对Cache性能的影响实验具体要求:改变Cache 的相联度(1 路,2 路,4 路,8 路,64 路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache 性能的影 响;1、测试程序

36、为benchmarkbin.littletest-fmath -cache:il1 il1:256:32:1:lil1.misses 6093 # total number of missesil1.miss_rate 0.1143 # miss rate (i.e., misses/ref) -cache:il1 il1:256:32:2:lil1.misses 3136 # total number of missesil1.miss_rate 0.0588 # miss rate (i.e., misses/ref) -cache:il1 il1:256:32:4:lil1.misses

37、 1412 # total number of missesil1.miss_rate 0.0265 # miss rate (i.e., misses/ref) -cache:il1 il1:256:32:8:lil1.misses 1032 # total number of missesil1.miss_rate 0.0194 # miss rate (i.e., misses/ref) -cache:il1 il1:256:32:64:lil1.misses 1032 # total number of missesil1.miss_rate 0.0194 # miss rate (i

38、.e., misses/ref)2、测试程序为benchmarkbin.littletest-printf -cache:il1 il1:256:32:1:l -cache:il1 il1:256:32:2:l -cache:il1 il1:256:32:4:l -cache:il1 il1:256:32:8:l -cache:il1 il1:256:32:64:l3、测试程序为benchmarkbin.littletest-math -cache:il1 il1:256:32:1:lil1.misses 23761 # total number of missesil1.miss_rate 0.1113 # miss rate (i.e., misses/ref) -cache:il1 il1:256:32:2:lil1.misses 13479 # total number of

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服