计算机系统结构实验报告.docx
- 文档编号:6708259
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:22
- 大小:774.21KB
计算机系统结构实验报告.docx
《计算机系统结构实验报告.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
计算机系统结构实验报告
计算机系统结构实验报告
3.1流水线中的相关
一、实验目的
1.掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;
2.加深对计算机流水线基本概念的理解;
3.进一步了解DLX基本流水线各段的功能以及基本操作;
4.加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;
5.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二、实验平台
WinDLX模拟器。
三、实验内容、步骤及实验结果
1.用WinDLX模拟器执行下列三个程序:
求阶乘程序fact.s
求最大公倍数程序gcm.s
求素数程序prim.s
分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
结果总结:
三种方式:
步进的方式是按快捷键F7或者选择菜单栏Execute中的SingleCycle;
连续的方式是按快捷键F5或者选择Execute中的Run;
设置断点是通过选择window菜单栏中的code,然后在菜单栏中多出一项code项,选中你想要插入的指令,在多出来的code项中找到setbreakpoint,即可插入断点,然后按F5执行即可。
以fact.s为例
Pipeline图
指出了每个功能段所进行的具体指令,点击指令还可以看到指令的具体相关的其他方面的内容。
时空图
更加直观的形式显示出了在某个时间周期某个功能段所执行的具体的指令。
Register图
指出了各个寄存器和存储器的值,如执行完了第一条加法指令之后,R1=OX00001000。
Statistics图
指出了指令的相关分析数据,例如,执行了6个cycles,4条指令在流水线中等相关的总结信息。
执行结果图
gcm.s、prim.s类似,所以只给出运行的结果图
gcm.s结果图
Prim.s结果图
2.用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。
结果图
资源相关的指令:
adddf0,f0,f4
adddf2,f0,f2(发生先写后读的数据相关导致消除了资源相关)
由图可知是因为只有一个faddEX的运算部件,而它需要两个时钟周期,当第一条addd指令执行EX段时,第二条指令势必要等一个周期等faddEX部件空闲了才能够使用。
但是,同时由于这两条指令存在先写后读数据相关,暂停一个周期之后没有了资源相关
单条指令的详细资源冲突图
因为Statistics图中的分析数据没有看见structuralstall,但是根据图知道这个存在adddf2,f0,f2时的资源冲突,大概循环了6次,总共时钟周期是139个,所以资源相关引起的暂停的时钟周期的个数是6个,暂停时钟周期数占总执行周期数的百分比为6/139=4.3%
Statistics数据分析图
资源相关降低CPU性能,并行运算的速度降低,解决资源相关的方法有停顿几个时钟周期法(针对访存冲突和设备资源冲突(轮流单个使用))或者是增加硬件设备(解决设备资源冲突)。
3.在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。
重复上述3中的工作,并计算采用定向技术后性能提高的倍数。
1、不定向技术:
总时钟周期=202数据相关引起的暂停时钟周期=104
暂停时钟周期数占总执行周期数的百分比=51.48%
2、定向技术:
总时钟周期=128数据相关引起的暂停时钟周期=30
暂停时钟周期数占总执行周期数的百分比=23.44%
定向技术的加速比=202/128=1.578
四、心得体会
通过使用WinDlX对指令模拟与分析,我们对流水线的执行过程更加熟悉,也对执行时出现的问题,如资源相关,数据相关等产生原因有了清晰的认识,进一步加深了使我们对流水线的理解。
3.2循环展开及指令调度
一、实验目的
1.加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;
2.熟悉用指令调度技术来解决流水线中的数据相关的方法;
3.了解循环展开、指令调度等技术对CPU性能的改进。
二、实验平台
WinDLX模拟器。
三、实验内容、步骤及实验结果
1.用指令调度技术解决流水线中的结构相关与数据相关
(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:
加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)
(2)通过Configuration菜单中的“Floatingpointstages”选项,把加法﹑乘法﹑除法部件的个数设置为2个,把延迟都设置为3个时钟周期;
(3)用WinDLX运行程序。
记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;
(4)采用指令调度技术对程序进行指令调度,消除相关;
(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;
(6)根据记录结果,比较调度前和调度后的性能。
论述指令调度对于提高CPU性能的意义。
1)代码:
divff2,f5,f6
divff1,f2,f6
divff3,f1,f5
divff0,f4,f7
addff14,f0,f6
addff15,f5,f7
multff20,f4,f6
multff21,f5,f7
2)设置运算部件个数以及运算时钟周期数
Pipeline图
以下为出现的数据相关
先写后读相关
由于只有两个除法部件,所以出现了功能部件的冲突。
总的执行周期是38
指令调度后代码:
将无关指令放在一起执行,相关指令分开尽量避免数据相关
divff2,f5,f6
multff20,f4,f6
multff21,f5,f7
divff1,f2,f6
addff15,f5,f7
divff3,f1,f5
divff0,f4,f7
addff14,f0,f6
Pipeline图
Statistics图
总执行时钟周期为35个。
(6)指令调度后,数据相关减少了,总时钟周期数减少了,效能提高了。
调度前的时钟周期数为38,调度后的时钟周期数减少为35,加速比=38/35=1.08
2.用循环展开、寄存器换名以及指令调度提高性能
(1)用DLX汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单循环;
(2)用WinDLX运行该程序。
记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;
(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。
然后对新的循环体进行寄存器换名和指令调度;
(4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;
(5)根据记录结果,比较循环展开、指令调度前后的性能。
带循环指令
代码:
求四个1相加的和,结果存在r2中
.text
.globalmain
main:
addir1,r0,#4
addir2,r0,#0
Loop:
sgtr3,r1,r0
bnezr3,Sub1
trap0
Sub1:
addir2,r2,#1
subir1,r1,#1
jLoop
结果:
总时钟周期是42个,5rawstalls,循环了4次,结果r2=4
循环展开:
代码:
.text
.globalmain
main:
addir1,r0,#4
addir2,r0,#0
addir2,r2,#1
subir1,r1,#1
addir2,r2,#1
subir1,r1,#1
addir2,r2,#1
subir1,r1,#1
addir2,r2,#1
subir1,r1,#1
trap0
结果:
总时钟周期是15个,0rawstalls,执行了4次,结果r2=4
原因对比:
是因为LOOP指令执行完后会有一个nop指令的延迟。
四、实验总结
a)指令调度技术可以明显的优化指令执行的效率,通过指令调度使得功能部件被尽可能的充分使用,从而进一步加强指令执行的效率;
b)循环在执行时会出现不同循环次数的执行过程中出现相关,导致数量增加,通过寄存器换名等方法,使得这种相关性数量下降。
3.3Cache性能分析
一、实验目的
1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理解;
2.了解Cache的容量、相联度、块大小对Cache性能的影响;
3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处;
4.理解Cache失效的产生原因以及Cache的三种失效;
5.理解LRU与随机法的基本思想,及它们对Cache性能的影响;
二、实验平台
SimpleScalar模拟器。
三、实验内容及步骤
1.在基本配置情况下运行程序(请指明所选的测试程序),统计Cache总失效次数、三种不同种类的失效次数;
配置好了环境之后,用hello.c生成的a.out文件来进行模拟演示。
由图可知:
Cache的总失效次数为458,容量失效和冲突失效都发生了替换总共为202,那么强制性冲突就为256。
2.改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Cache性能的影响;
测试程序为test-math。
Cache参数设定举例:
-cache:
dl1dl1:
2:
32:
4:
r第一个参数为集合数,第二个参数为块的大小,第三个参数为相联度,最后一个参数为策略。
改变集合数,设定块大小为32B,相联度为4路,采取LRU策略,来考虑容量对cache性能的影响。
*2:
设定容量为2*32*4B时,结果如下:
*4:
设定容量为4*32*4B时,结果如下:
*8:
设定容量为8*32*4B时,结果如下:
*64:
设定容量为64*32*4B时,结果如下:
从上面的数据中提取出有用的数据信息,制作下面的表。
容量大小
总失效率
总失效数
容量失效和冲突失效数
强制性失效数
*2
0.1264
7265
7257
8
*4
0.0744
4277
4261
16
*8
0.0380
2180
2154
26
*64
0.0100
575
319
256
结论:
随着cache容量的增大,总失效率减小,总失效数也减少,容量失效和冲突失效数也减小,但是强制性失效数反而升高。
3.改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响;
测试程序为test-printf.参数dl1:
2:
32:
1(2,4,8,64):
l,固定其他的参数,只改变相联度的参数,观察相联度对cache性能的影响。
1路:
2路:
4路
8路:
64路:
相联度
总失效率
总失效数
容量失效和冲突失效数
强制性失效数
1路
0.4202
223284
223282
2
2路
0.2563
136216
136212
4
4路
0.1011
53744
53736
8
8路
0.0462
24527
24511
16
64路
0.0011
603
475
128
结论:
随着相联度的增大,总失效率减小,但减小的幅度减小,总失效数也减少,容量失效和冲突失效数也减小,但是强制性失效数反而升高。
4.改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;
测试程序:
test-fmath
参数:
dl1:
64:
8(16,32,64):
1:
l
(块大小8B)
(块大小16B)
(块大小32B)
(块大小64B)
Cache块大小
总失效率
总失效数
容量失效和冲突失效数
强制性失效数
*2(8B)
0.1089
1812
1556
256
*4(16B)
0.0567
944
688
256
*8(32B)
0.0300
499
243
256
*16(64B)
0.0156
260
29
256
结论:
随着相联度的增大,总失效率减小,总失效数也减少,容量失效和冲突失效数也减小,但是强制性失效数反而升高但到了一定程度保持稳定。
5.分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。
分析不同的替换算法对Cache性能的影响。
测试程序:
test-lswlr
LRU:
参数dl1:
8:
8:
2:
l
随机法:
参数dl1:
32:
32:
1:
r
LRU:
参数dl1:
16:
8:
2:
l
随机法:
参数dl1:
16:
8:
2:
r
情况
总失效率
总失效数
容量失效和冲突失效数
强制性失效数
LRU8*8*2
0.3919
1853
1847
6
随机法8*8*2
0.3976
1880
1864
16
LRU16*8*2
0.3754
1775
1743
32
随机法32*32*2
0.3799
1796
1764
32
结论:
相对而言还是LRU较好,只是当容量变大,相联度变大时,这种差距会缩小。
最后的结论:
对于cache来说,容量越大、块大小越大、相联度越大以及采用LRU策略的话,cache性能越好,命中率越高。
实验总结:
通过这两次实验,利用windlx工具了解到了流水线中的数据相关和资源相关,以及相关的解决技术:
定向技术或者指令调度技术。
利用simplescalar工具了解到了cache容量、相联度、块大小策略对cache性能的影响。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 报告