计算机系统结构实验报告.docx
- 文档编号:8659118
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:22
- 大小:584.75KB
计算机系统结构实验报告.docx
《计算机系统结构实验报告.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
计算机系统结构实验报告
实验一流水线相关
一.实验目的
1.熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;
2.加深对计算机流水线基本概念的理解;
3.进一步了解DLX基本流水线各段的功能以及基本操作;
4.加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;
5.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二.实验内容
1.用WinDLX模拟器执行下列三个程序(任选一个):
求阶乘程序fact.s
求最大公倍数程序gcm.s
求素数程序prim.s
分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,
观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
注意:
fact.s中调用了input.s中的输入子程序。
load程序时,要两个程序一起装入
(都select后再点击load)。
gcm.s也是如此。
2.用WinDLX运行程序structure_d.s,通过模拟:
找出存在结构相关的指令对以及导致结构相关的部件;
记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百
分比;
论述结构相关对CPU性能的影响,讨论解决结构相关的方法。
3.在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾
选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执
行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
4.在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。
重复上述3中的工作,并计算采用定向技术后性能提高的倍数。
三.实验过程和截图
1.模拟执行fact.s和input.s
流水线的状态如下:
在执行求阶乘程序fact.s之后,输入值5,查看寄存器的值为120,结果正确。
2.执行程序structure_d.s之后的实验数据如下图:
由实验数据显示:
(1)该程序没有结构相关;
(2)该程序总共暂停的时钟周期数为:
108个时钟周期,暂停的时钟周期数占总的时钟周期数的百分比为
3.不采用定向技术,运行data_d.s程序,实验数据如下图:
由实验数据显示:
(1)由数据相关引起的暂停的时钟周期数为:
104
(2)程序执行的总的时钟周期数为:
202
(3)暂停的时钟周期数占总的时钟周期数的百分比:
4.采用定向技术执行程序data_d.s,实验数据如下图:
由实验数据显示:
(1)程序由于数据相关引起的暂停的时候周期数为:
30;
(2)程序执行的总的时钟周期数为:
128;
(3)暂停的时钟周期数占总的时钟周期数的百分比为:
30/128=23.44%
(4)CPU性能提高的倍数:
202/128=1.58。
4.实验体会
本次实验是计算机系统结构该课程的第一次实验,刚刚开始的时候由于不会使用WINDLX软件,所以导致得到了一些错误的实验数据,但是后来在老师和同学的帮助下渐渐的熟悉了该软件对于实验的作用,也学会了如何运用该软件来观察程序在流水线的状态下的执行,我们可以看到实验的真实数据,流水线的时空图等等,这让我们对流水线的的认识更加深刻。
实验二循环展开及指令调度
一.实验目的
1.加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;
2.熟悉用指令调度技术来解决流水线中的数据相关的方法;
3.了解循环展开、指令调度等技术对CPU性能的改进。
二.实验内容
1.用指令调度技术解决流水线中的结构相关与数据相关
(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:
加
法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)
(2)通过Configuration菜单中的“Floatingpointstages”选项,把加法﹑乘法﹑除
法部件的个数设置为2个,把延迟都设置为3个时钟周期;
(3)用WinDLX运行程序。
记录程序执行过程中各种相关发生的次数、发生相关的指
令组合,以及程序执行的总时钟周期数;
(4)采用指令调度技术对程序进行指令调度,消除相关;
(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行
的总时钟周期数;
(6)根据记录结果,比较调度前和调度后的性能。
论述指令调度对于提高CPU性能的
意义。
2.用循环展开、寄存器换名以及指令调度提高性能
(1)用DLX汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单
循环;
(2)用WinDLX运行该程序。
记录执行过程中各种相关发生的次数以及程序执行的总
时钟周期数;
(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的
修改。
然后对新的循环体进行寄存器换名和指令调度;
(4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执
行的总时钟周期数;
(5)根据记录结果,比较循环展开、指令调度前后的性能。
三.实验过程和截图
1.
(1)用DLX汇编语言写的代码如下:
Main:
addff1,f2,f3;
addff3,f2,f1;
addff5,f6,f5;
addff4,f6,f4;
multff8,f7,f6;
multff11,f10,f9;
Finish:
trap0;
(2)用WinDLX运行程序,实验数据如下图:
由实验数据显示:
(1)数据相关发生次数:
2
(2)结构相关发生次数:
1
(3)程序执行的总的时钟周期数:
16
(3)采用指令调度技术实验数据如下图:
进行指令调度之后的指令代码:
main:
addff1,f2,f3;
addff5,f6,f5;
multff8,f7,f6;
addff4,f6,f4;
multff11,f10,f9;
addff3,f2,f1;
Finish:
trap0
由实验数据显示:
(1)消除了数据相关,使数据相关的次数为0;
(2)消除了结构相关,使结构相关的次数为0;
(3)程序执行的总的时钟周期数为13;
(4)CPU性能提升:
16/13=1.23倍;
2.用循环展开、寄存器换名以及指令调度提高性能
(1)使用DLX汇编语言写的循环指令代码:
main:
addir2,r0,#0
addir1,r0,#8
loop:
addir2,r2,#1
addir1,r1,#-1
bnezr1,loop
Finish:
trap0
(2)用WinDLX执行程序,实验数据如下图:
由实验数据显示:
(1)数据相关发生的次数:
8;
(2)结构相关发生的次数:
0;
(3)程序执行的总的时钟周期数:
46;
(3)采用循环展开技术,将指令展开七次,代码如下:
main:
addir2,r0,#0
addir1,r0,#8
;loop:
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
addir2,r2,#1
addir1,r1,#-1
;bnezr1,loop
Finish:
trap0
用WinDLX执行该程序,实验数据如下:
由实验数据显示:
(1)数据相关次数:
0
(2)结构相关次数:
0
(3)程序执行的总的时钟周期数:
23
(4)CPU性能提高了1倍
四.实验体会
该实验的目的是让我们加深对指令调度和循环展开技术的了解,在大多数指令中会涉及到循环指令,循环指令中存在着数据相关、结构相关和控制相关等等,这些相关的存在都影响着CPU的性能,要想得到更高的效率,所以我们需要减少这些相关的次数,甚至消除这些相关。
循环展开和指令调度就是消除这些相关来提高CPU性能的技术,由实验可以看出,指令调度和循环展开对于相关的减少和性能的提高具有显著的作用。
实验三记分牌算法和Tomasulo算法
一.实验目的
1.掌握DLXview模拟器的使用方法;
2.进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;
3.理解记分牌算法和Tomasulo算法的基本思想,了解它们的基本结构、运行过程;
4.比较分析基本流水线与记分牌算法和Tomasulo算法的性能及优缺点。
二.实验内容
1.用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相
关),以及相关的初始化寄存器文件*.i和数据文件*.d;
2.观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;
3.将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上,
(1)分别用基本流水线、记分牌算法和Tomasulo算法模拟,针对每一种模拟做如下分
析:
①统计程序的执行周期数和流水线中的暂停时钟周期数;
②改变功能部件数目重新模拟,观察并记录性能的改变;
③改变功能部件延迟重新模拟,观察并记录性能的改变;
论述功能部件数目、功能部件延迟对性能的影响。
(2)记录运行记分牌算法时的功能部件状态表和指令状态表;
(3)记录运行Tomasulo算法时的指令状态表和保留站信息;
3.实验过程和截图
1.用DLX汇编语言编写的代码如下:
addr4,r0,r0
addr5,r0,r0
addir1,r0,5
LOOP:
subir1,r1,1
multff4,f4,f4
multff5,f5,f5
multff6,f6,f6
multff7,f7,f7
addir4,r4,2
addir5,r5,10
bnezr1,LOOP
nop
addr6,r4,r5
nop
nop
nop
nop
trap#0
2.观察程序中出现的数据相关、控制相关、结构相关
由实验数据显示:
(1)数据相关引起的暂停的时钟周期数:
2
(2)结构相关引起的暂停的时钟周期数:
60
(3)控制相关引起的暂停的时钟周期数:
4
3.将程序加载到DLXview模拟器上运行:
(1)BasicPipeLine状态下执行程序截图如下:
基本流水线下程序执行的时钟周期数是53;
(2)ScoreBoard算法下执行该程序,截图如下:
在ScoreBoard算法中程序执行的总的时钟周期数为168。
(3)Tomasulo算法下执行该程序,截图如下:
在Tomasulo算法下该程序的执行时间是140。
四.实验体会
该实验的目的首先是让我们熟悉DLXview该模拟器,让我们能够熟练的在该平台上做实验,实验内容包括基本流水线、ScoreBoard算法和Tomasulo算法。
在该实验中,我了解到程序的数据相关、结构相关和控制相关引起时钟周期暂停的原因和影响。
ScoreBoard算法和Tomasulo算法是动态调度的算法,其中ScoreBoard算法的思想是将基本的流水线分为四个段:
流出、取操作数、执行、写结果,在该算法中能够自动的消除RAW相关,但是不能消除WAR和WAW相关;Tomasulo算法的思想是顺序流出、乱序执行和乱序写结果,该算法能够通过寄存器换名消除WAR和WAW相关,通过推迟执行能够减少RAW相关。
实验四Cache性能分析
一.实验目的
1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理解;
2.掌握Cache容量、相联度、块大小对Cache性能的影响;
3.掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处;
4.理解LRU与随机法的基本思想以及它们对Cache性能的影响。
二.实验内容
首先要掌握MyCache模拟器的使用方法。
1.Cache容量对不命中率的影响
1.启动MyCache。
2.用鼠标点击“复位”按钮,把各参数设置为默认值。
3.选择一个地址流文件。
方法:
选择“访问地址”下的“地址流文件”选项,然后点击“浏
览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
4.选择不同的Cache容量,包括:
2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB,
分别执行模拟器(点击“执行到底”按钮),然后在表1中记录各种情况下的不命中率。
5.以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线。
并指明地址流文件名。
6.根据该模拟结果,你能得出什么结论?
2.相联度对不命中率的影响
1.用鼠标点击“复位”按钮,把各参数设置为默认值。
这时的Cache容量为64KB。
2.选择一个地址流文件。
方法:
选择“访问地址”下的“地址流文件”选项,然后点击“浏
览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
3.选择不同的Cache相联度,包括:
直接映象,2路,4路,8路,16路,32路,分别执行模拟器(点击“执行到底”按钮),然后在表2中记录各种情况下的不命中率。
4.把Cache的容量设置为256KB,重复上一步的工作。
5.以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变
化的曲线。
并指明地址流文件名。
6.根据该模拟结果,你能得出什么结论?
3.Cache块大小对不命中率的影响
1.用鼠标点击“复位”按钮,把各参数设置为默认值。
2.选择一个地址流文件。
方法:
选择“访问地址”下的“地址流文件”选项,然后点击“浏
览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
3.选择不同的Cache块大小,包括:
16B,32B,64B,128B,256B,对于Cache的各种
容量,包括:
2KB,8KB,32KB,128KB,512KB,分别执行模拟器(点击“执行到底”
按钮),然后在表4中记录各种情况下的不命中率。
4.分析Cache块大小对不命中率的影响。
4.替换算法对不命中率的影响
1.用鼠标点击“复位”按钮,把各参数设置为默认值。
2.选择一个地址流文件。
方法:
选择“访问地址”下的“地址流文件”选项,然后点击“浏
览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
3.对于不同的替换算法、Cache容量和相联度,分别执行模拟器(点击“执行到底”按钮),
然后在表5中记录各种情况下的不命中率。
4.分析不同的替换算法对Cache不命中率的影响。
5.混合Cache和分离Cache的比较
1.用鼠标点击“复位”按钮,把各参数设置为默认值。
2.选择一个地址流文件。
方法:
选择“访问地址”下的“地址流文件”选项,然后点击“浏
览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
3.分别在分离Cache和混合Cache的情况下,选择不同的Cache容量,包括:
4KB,8KB,
16KB,32KB,64KB,128KB,256KB,分别执行模拟器(点击“执行到底”按钮),
然后在表6中记录各种情况下的不命中率。
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时:
相联度对实验的影响
相联度
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容量为256KB时,相联度越大,不命中率越小;并且在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.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.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%
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的性能的影响因素有很多,其中较为重要的就是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的失效率影响不一样。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 报告