计算机系统结构实验报告要点.pdf

上传人:tbuqq 文档编号:5006997 上传时间:2020-01-27 格式:PDF 页数:19 大小:2.72MB
返回 下载 相关 举报
计算机系统结构实验报告要点.pdf_第1页
第1页 / 共19页
计算机系统结构实验报告要点.pdf_第2页
第2页 / 共19页
计算机系统结构实验报告要点.pdf_第3页
第3页 / 共19页
计算机系统结构实验报告要点.pdf_第4页
第4页 / 共19页
计算机系统结构实验报告要点.pdf_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机系统结构实验报告要点.pdf》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告要点.pdf(19页珍藏版)》请在三一文库上搜索。

1、实验一流水线相关 一. 实验目的 1. 熟练掌握WinDLX 模拟器的操作和使用,熟悉DLX 指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX 基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU 性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 二. 实验内容 1. 用WinDLX 模拟器执行下列三个程序(任选一个): 求阶乘程序 fact.s 求最大公倍数程序gcm.s 求素数程序 prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,

2、 观察 CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。 注意: fact.s 中调用了 input.s 中的输入子程序。load 程序时,要两个程序一起装入 (都 select 后再点击 load) 。gcm.s 也是如此。 2. 用WinDLX 运行程序 structure_d.s,通过模拟: 找出存在结构相关的指令对以及导致结构相关的部件; 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百 分比; 论述结构相关对CPU 性能的影响,讨论解决结构相关的方法。 3. 在不采用定向技术的情况下(去掉Configuration 菜单中 Enable F

3、orwarding 选项前的勾 选符) ,用 WinDLX 运行程序 data_d.s。记录数据相关引起的暂停时钟周期数以及程序执 行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 4. 在采用定向技术的情况下(勾选Enable Forwarding ) ,用 WinDLX 再次运行程序data_d.s。 重复上述 3 中的工作,并计算采用定向技术后性能提高的倍数。 三实验过程和截图 1.模拟执行 fact.s和 input.s 流水线的状态如下: 在执行求阶乘程序fact.s 之后,输入值5,查看寄存器的值为120,结果正确。 2.执行程序 structure_d.s之后的实验数

4、据如下图: 由实验数据显示: (1)该程序没有结构相关; (2)该程序总共暂停的时钟周期数为:108 个时钟周期,暂停的时钟周期数占总的时钟周 期数的百分比为%38.55 195 108 3.不采用定向技术,运行data_d.s程序,实验数据如下图: 由实验数据显示: (1)由数据相关引起的暂停的时钟周期数为:104 (2)程序执行的总的时钟周期数为:202 (3)暂停的时钟周期数占总的时钟周期数的百分比:%49.51 202 104 4.采用定向技术执行程序data_d.s ,实验数据如下图: 由实验数据显示: (1)程序由于数据相关引起的暂停的时候周期数为:30; (2)程序执行的总的时钟

5、周期数为:128; (3)暂停的时钟周期数占总的时钟周期数的百分比为:30/128=23.44% (4)CPU 性能提高的倍数:202/128=1.58。 四实验体会 本次实验是计算机系统结构该课程的第一次实验,刚刚开始的时候由于不会使用 WINDLX软件,所以导致得到了一些错误的实验数据,但是后来在老师和同学的帮助下渐 渐的熟悉了该软件对于实验的作用,也学会了如何运用该软件来观察程序在流水线的状态下 的执行, 我们可以看到实验的真实数据,流水线的时空图等等,这让我们对流水线的的认识 更加深刻。 实验二循环展开及指令调度 一实验目的 1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存

6、器换名技术的理解; 2. 熟悉用指令调度技术来解决流水线中的数据相关的方法; 3. 了解循环展开、指令调度等技术对CPU 性能的改进。 二实验内容 1用指令调度技术解决流水线中的结构相关与数据相关 (1) 用DLX 汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加 法乘法除法部件各有2 个,延迟时间都是3 个时钟周期) (2) 通过 Configuration 菜单中的“Floating point stages ” 选项,把加法乘法除 法部件的个数设置为2 个,把延迟都设置为3 个时钟周期; (3) 用WinDLX 运行程序。记录程序执行过程中各种相关发生的次数、发生相关

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

8、替原来的循环体,并对程序做相应的 修改。然后对新的循环体进行寄存器换名和指令调度; (4) 用WinDLX 运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执 行的总时钟周期数; (5) 根据记录结果,比较循环展开、指令调度前后的性能。 三实验过程和截图 1.(1)用 DLX 汇编语言写的代码如下: Main: addf f1,f2,f3; addf f3,f2,f1; addf f5,f6,f5; addf f4,f6,f4; multf f8,f7,f6; multf f11,f10,f9; Finish: trap 0; (2)用 WinDLX 运行程序,实验数据如下图: 由实

9、验数据显示: (1)数据相关发生次数:2 (2)结构相关发生次数:1 (3)程序执行的总的时钟周期数:16 (3)采用指令调度技术实验数据如下图: 进行指令调度之后的指令代码: main: addf f1,f2,f3; addf f5,f6,f5; multf f8,f7,f6; addf f4,f6,f4; multf f11,f10,f9; addf f3,f2,f1; Finish: trap 0 由实验数据显示: (1)消除了数据相关,使数据相关的次数为0; (2)消除了结构相关,使结构相关的次数为0; (3)程序执行的总的时钟周期数为13; (4)CPU 性能提升: 16/13=1.

10、23 倍; 2. 用循环展开、寄存器换名以及指令调度提高性能 (1)使用 DLX汇编语言写的循环指令代码: main: addi r2,r0,#0 addi r1,r0,#8 loop: addi r2,r2,#1 addi r1,r1,#-1 bnez r1,loop Finish: trap 0 (2)用 WinDLX 执行程序,实验数据如下图: 由实验数据显示: (1)数据相关发生的次数:8; (2)结构相关发生的次数:0; (3)程序执行的总的时钟周期数:46; (3)采用循环展开技术,将指令展开七次,代码如下: main: addi r2,r0,#0 addi r1,r0,#8 ;l

11、oop: addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 addi r2,r2,#1 addi r1,r1,#-1 ;bnez r1,loop Finish: trap 0 用 WinDLX 执行该程序,实验数据如下: 由实验数据显示: (1

12、)数据相关次数:0 (2)结构相关次数:0 (3)程序执行的总的时钟周期数:23 (4)CPU 性能提高了1 倍 四实验体会 该实验的目的是让我们加深对指令调度和循环展开技术的了解,在大多数指令中会涉 及到循环指令, 循环指令中存在着数据相关、结构相关和控制相关等等,这些相关的存在都 影响着 CPU 的性能,要想得到更高的效率,所以我们需要减少这些相关的次数,甚至消除 这些相关。循环展开和指令调度就是消除这些相关来提高CPU 性能的技术,由实验可以看 出,指令调度和循环展开对于相关的减少和性能的提高具有显著的作用。 实验三记分牌算法和 Tomasulo 算法 一实验目的 1. 掌握 DLXvi

13、ew 模拟器的使用方法; 2. 进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法; 3. 理解记分牌算法和Tomasulo 算法的基本思想,了解它们的基本结构、运行过程; 4. 比较分析基本流水线与记分牌算法和Tomasulo 算法的性能及优缺点。 二实验内容 1. 用DLX 汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相 关) ,以及相关的初始化寄存器文件*.i 和数据文件 *.d ; 2. 观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合; 3. 将自己编写的程序*.s、*.i 、 *.d 装载到 DLXview 模拟器上

14、, (1) 分别用基本流水线、记分牌算法和Tomasulo 算法模拟,针对每一种模拟做如下分 析: 统计程序的执行周期数和流水线中的暂停时钟周期数; 改变功能部件数目重新模拟,观察并记录性能的改变; 改变功能部件延迟重新模拟,观察并记录性能的改变; 论述功能部件数目、功能部件延迟对性能的影响。 (2) 记录运行记分牌算法时的功能部件状态表和指令状态表; (3) 记录运行Tomasulo 算法时的指令状态表和保留站信息; 三实验过程和截图 1.用 DLX 汇编语言编写的代码如下: add r4, r0, r0 add r5, r0, r0 addi r1, r0, 5 LOOP: subi r1

15、, r1, 1 multf f4,f4,f4 multf f5,f5,f5 multf f6,f6,f6 multf f7,f7,f7 addi r4, r4, 2 addi r5, r5, 10 bnez r1, LOOP nop add r6, r4, r5 nop nop nop nop trap #0 2.观察程序中出现的数据相关、控制相关、结构相关 由实验数据显示: (1)数据相关引起的暂停的时钟周期数:2 (2)结构相关引起的暂停的时钟周期数:60 (3)控制相关引起的暂停的时钟周期数:4 3.将程序加载到 DLXview 模拟器上运行: (1)BasicPipeLine状态下执行

16、程序截图如下: 基本流水线下程序执行的时钟周期数是53; (2)ScoreBoard算法下执行该程序,截图如下: 在 ScoreBoard算法中程序执行的总的时钟周期数为168。 (3)Tomasulo算法下执行该程序,截图如下: 在 Tomasulo算法下该程序的执行时间是140。 四实验体会 该实验的目的首先是让我们熟悉DLXview该模拟器,让我们能够熟练的在该平台上做 实验,实验内容包括基本流水线、ScoreBoard 算法和 Tomasulo 算法。在该实验中,我了解 到程序的数据相关、结构相关和控制相关引起时钟周期暂停的原因和影响。ScoreBoard 算法 和 Tomasulo

17、算法是动态调度的算法,其中ScoreBoard 算法的思想是将基本的流水线分为四 个段:流出、取操作数、执行、写结果,在该算法中能够自动的消除RAW 相关,但是不能 消除 WAR 和 WAW 相关; Tomasulo 算法的思想是顺序流出、乱序执行和乱序写结果,该算 法能够通过寄存器换名消除WAR 和 WAW 相关,通过推迟执行能够减少RAW 相关。 实验四Cache 性能分析 一实验目的 1. 加深对 Cache 的基本概念、基本组织结构以及基本工作原理的理解; 2. 掌握 Cache 容量、相联度、块大小对Cache 性能的影响; 3. 掌握降低 Cache 不命中率的各种方法以及这些方法

18、对提高Cache 性能的好处; 4. 理解 LRU 与随机法的基本思想以及它们对Cache 性能的影响。 二实验内容 首先要掌握 MyCache 模拟器的使用方法。 1. Cache 容量对不命中率的影响 1. 启动 MyCache。 2. 用鼠标点击“复位”按钮,把各参数设置为默认值。 3. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏 览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 4. 选择不同的 Cache 容量,包括: 2KB,4KB , 8KB ,16KB,32KB ,64KB ,128KB ,256KB , 分别执行模拟器(点击“执

19、行到底”按钮),然后在表1 中记录各种情况下的不命中率。 5. 以容量为横坐标,画出不命中率随Cache 容量变化而变化的曲线。并指明地址流文件名。 6. 根据该模拟结果,你能得出什么结论? 2. 相联度对不命中率的影响 1. 用鼠标点击“复位”按钮,把各参数设置为默认值。这时的Cache 容量为 64KB 。 2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏 览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 3. 选择不同的 Cache 相联度,包括:直接映象,2 路,4 路, 8 路, 16 路, 32 路,分别执 行模拟器(点击“执行到底”

20、按钮),然后在表2 中记录各种情况下的不命中率。 4. 把Cache 的容量设置为 256KB ,重复上一步的工作。 5. 以相联度为横坐标,画出在64KB 和256KB 的情况下不命中率随Cache 相联度变化而变 化的曲线。并指明地址流文件名。 6. 根据该模拟结果,你能得出什么结论? 3. Cache 块大小对不命中率的影响 1. 用鼠标点击“复位”按钮,把各参数设置为默认值。 2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏 览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 3. 选择不同的 Cache 块大小,包括:16B,32B,64

21、B,128B,256B,对于 Cache 的各种 容量,包括: 2KB , 8KB,32KB ,128KB,512KB,分别执行模拟器(点击“执行到底” 按钮) ,然后在表4 中记录各种情况下的不命中率。 4. 分析 Cache 块大小对不命中率的影响。 4. 替换算法对不命中率的影响 1. 用鼠标点击“复位”按钮,把各参数设置为默认值。 2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏 览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 3. 对于不同的替换算法、Cache 容量和相联度, 分别执行模拟器 (点击 “执行到底” 按钮), 然后在表

22、5 中记录各种情况下的不命中率。 4. 分析不同的替换算法对Cache 不命中率的影响。 5. 混合Cache 和分离Cache 的比较 1. 用鼠标点击“复位”按钮,把各参数设置为默认值。 2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏 览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。 3. 分别在分离 Cache 和混合 Cache 的情况下, 选择不同的 Cache 容量,包括: 4KB,8KB , 16KB ,32KB ,64KB ,128KB,256KB ,分别执行模拟器(点击“执行到底”按钮), 然后在表6 中记录各种情况下的不命中

23、率。 4. 对模拟结果进行分析。 三实验过程和截图 1.Cache 容量对不命中率的影响 地址流文件名:cc1.din Cache容量大小对实验的影响 Cache 容量 2KB 4KB 8KB 16KB 32KB 64KB 128KB 256KB 不命中 率 14.22% 10.46% 7.59% 4.78% 2.84% 1.97% 1.26% 0.98% 下面折线图显示的是Cache 容量大小对不命中率的影响(地址流文件名:cc1.din) : 由折线图可以看出: Cache的容量越大,不命中率越小。 2. 相联度对不命中率的影响 地址流文件名:cc1.din 64KB 时:相联度对实验的影

24、响 相联度1 2 4 8 16 32 不命中率1.97% 1.15% 0.99% 0.93% 0.92% 0.91% 256KB 时:相联度对实验的影响 相联度1 2 4 8 16 32 不命中率0.98% 0.78% 0.74% 0.73% 0.71% 0.71% 下面折线图显示的分别是Cache 容量为 64KB 和 256KB 下相联度对不命中率的影响(地址 流文件名: cc1.din) : 由折线图可以看出:当Cache容量为 64KB 时,相联度越大,不命中率越 小;并且在 1 路到 2 路下降趋势明显, 2 路之后下降的趋势不算太明显。 由折线图可以看出:当Cache容量为 256

25、KB 时,相联度越大,不命中率越 小;并且在 1 路到 2 路下降趋势明显, 2 路之后下降的趋势不算太明显。 此外,对于 64KB 的 Cache和 256KB 的 Cache来说, 256KB 的 Cache的不命 中率较小。 3. Cache 块大小对不命中率的影响 地址流文件名:cc1.din Cache块大小对实验的影响 块大小(B)Cache的容量( KB) 2 8 32 128 512 16 18.61% 10.12% 3.81% 1.95% 1.42% 32 14.22% 7.59% 2.84% 1.26% 0.87% 64 12.62% 6.47% 2.36% 0.92% 0

26、.60% 128 12.98% 6.35% 2.13% 0.76% 0.47% 256 16.04% 7.29% 2.15% 0.71% 0.40% 下面折线图显示的是不同的块大小对不命中率的影响: 由该折线图可以看出:不命中率随着块大小的增加先下降,后上升,这里值 得提出的是,不命中率先下降的原因是块大小越大,容量失效减小;其后不命 中率上升的原因是冲突失效增大了。 4. 替换算法对不命中率的影响 地址流文件名:cc1.din 替换算法对实验的影响 Cache的容 量 相联度 2 路4 路8路 LRU 随机算法LRU 随机算法LRU 随机算法 16KB 3.62% 4.49% 2.96% 4

27、.44% 2.74% 5.39% 64KB 1.15% 1.40% 0.99% 1.61% 0.93% 1.54% 256KB 0.78% 0.83% 0.74% 0.76% 0.73% 0.72% 1MB 0.71% 0.71% 0.70% 0.70% 0.70% 0.70% 由该表格可以看出: 在 Cache容量和相联度一定的时候,不命中率受替换算法的影响,且LRU 算法的不命中率低于随机算法。 5. 混合Cache 和分离Cache 的比较 地址流文件名:cc1.din 混合 Cache和分离 Cache 的比较 容量指令 Cache 数据 Cache 混合 Cache 4KB 9.08

28、% 14.35% 10.46% 8KB 7.16% 5.49% 7.59% 16KB 5.06% 4.54% 4.78% 32KB 2.94% 2.52% 2.84% 64KB 1.68% 1.38% 1.97% 128KB 1.19% 1.12% 1.26% 256KB 0.97% 0.99% 0.98% 由该表格可以看出: 分离 Cache和混合 Cache对 Cache的不命中率有一定的影响, 且混合 Cache 的不命中率要小于指令Cache和数据 Cache的不命中率的和。 四实验体会 该实验的目的是要我们了解如何对Cache 的性能进行分析,Cache的性能的影响因素有 很多,其中

29、较为重要的就是Cache的容量、相联度、Cache块大小、Cache的替换算法和Cache 的结构(混合Cache 或者分离 Cache) 。通过该实验我明白以下几点: (1)Cache 的容量越大, Cache 的失效率越小; (2)Cache 的相联度越大, Cache 的失效率越小, 但是只是在1 路和 2 路之间的变化较 为明显,所以现实当中常用的是直接映像Cache和 2 路组相联的Cache; (3)Cache 的块大小在一定程度上会影响Cache 的失效率,失效率随着Cache 的块大 小呈现先下降后上升的趋势,下降的原因是容量失效减小了,其后上升的原因是冲突失效增 大了; (4)Cache 的替换算法对Cache 的性能映像非常大,在上面的表格中我们可以看到, LRU 算法比随机算法的性能要好,因为LRU 算法是基于程序的局部性原理; (5)Cache 的结构对Cache的失效率也有很大的影响,当使用分离Cache和混合 Cache 时,会对 Cache 的失效率影响不一样。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1