系统结构实验.docx

上传人:b****7 文档编号:9459691 上传时间:2023-02-04 格式:DOCX 页数:41 大小:1.29MB
下载 相关 举报
系统结构实验.docx_第1页
第1页 / 共41页
系统结构实验.docx_第2页
第2页 / 共41页
系统结构实验.docx_第3页
第3页 / 共41页
系统结构实验.docx_第4页
第4页 / 共41页
系统结构实验.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

系统结构实验.docx

《系统结构实验.docx》由会员分享,可在线阅读,更多相关《系统结构实验.docx(41页珍藏版)》请在冰豆网上搜索。

系统结构实验.docx

系统结构实验

系统结构实验报告

11070113臧琦

11070230曾凯

实验一流水线中的相关

1、实验目的

1.熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;

2.加深对计算机流水线基本概念的理解;

3.进一步了解DLX基本流水线各段的功能以及基本操作;

4.加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;

5.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停

2、实验平台

用WinDLX模拟器模拟流水线。

3、实验要求

1.用WinDLX模拟器执行下列三个程序:

求阶乘程序fact.s

求最大公倍数程序gcm.s

求素数程序prim.s

分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察

CPU中寄存器和存储器的内容。

熟练掌握WinDLX的操作和使用。

2.用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源

相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。

3.在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。

记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。

重复上述3中的工作,并计算采用定向技术后性能提高的倍数。

4、实验结果

4.1用WinDLX模拟器执行下列三个程序

4.1.1用WinDLX模拟器执行阶乘程序fact.s的结果如下所示

●步进方式运行程序结果如下所示

图1以步进方式进行的过程

●连续方式运行程序结果如下所示

图2连续方式,程序无间断的进行

●设置断点方式运行程序结果如下所示

图3通过设置不同的断点来控制程序的执行

4.1.2用WinDLX模拟器执行阶乘程序gcm.s的结果如下所示

●步进方式运行程序结果如下所示

图4以步进方式进行的过程,经过有限的步骤将程序的结果运行出来

●连续方式运行程序结果如下所示

图5连续方式,程序无间断的进行,直到程序结束

●设置断点方式运行程序结果如下所示

图6通过设置不同的断点来控制程序的执行

4.1.3用WinDLX模拟器执行阶乘程序prim.s的结果如下所示

●步进方式运行程序结果如下所示

图7以步进方式进行的过程

●连续方式运行程序结果如下所示

图8连续方式,程序无间断的进行,直到程序结束

●设置断点方式运行程序结果如下所示

图9通过设置不同的断点来控制程序的执行

4.2用WinDLX模拟运行器程序structure_d.s,进行相关实验

图10structure_d.s程序运行的流水线图

●资源相关的指令对

(1)

ADDDF0,F0,F4

ADDDF2,F0,F2;

导致资源相关的部件:

ALU;指令ADDDF2,F0,F2在译码阶段ID停滞1周期

(2)

ADDDF2,F0,F2

ADDIR2,R2,#8

导致资源相关的部件:

ALU;指令ADDIR2,R2,#8在执行阶段intEX停滞1周期

(3)

ADDDF2,F0,F2

ADDIR2,R2,#8;(mem部件相关)

ADDIR3,R3,#8;(mem部件相关)

SUBR5,R4,R2;(mem部件相关)

●由资源相关引起的暂停时钟周期数

图11程序执行总的周期数以及延迟的周期数

由资源相关引起的暂停周期数为:

30

总执行周期数为:

139

暂停周期数占总执行周期数的百分比:

30/139=21.58%

●分析及解决办法

分析:

资源相关使相关指令在流水线上停滞,降低了执行效率,使cpu的性能下降。

解决方法:

在合理的指令调度范围内,尽量避免执行重复的指令。

尽量避免同一寄存器的频繁使用,若无法避免,则使用寄存器换名的方法。

4.3比较定向与不定向技术,用WinDLX模拟运行器程序data_d.s,进行相关实验

4.3.1采用不定向技术,用WinDLX模拟运行器程序data_d.s,进行相关实验

图12采用非定向技术运行的结果图

由数据相关引起的暂停时钟周期数为:

104

总执行周期数为:

202

暂停周期数占总执行周期数的百分比:

104/202=51.48%

4.3.2采用定向技术,用WinDLX模拟运行器程序data_d.s,进行相关实验

在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。

重复上述3中的工作,并计算采用定向技术后性能提高的倍数。

图13定向技术相关结果的截图

由数据相关引起的暂停时钟周期数为:

30

总执行周期数为:

128

暂停周期数占总执行周期数的百分比:

30/128=23.44%

总结:

采用定向技术性能提高的倍数:

202/128=1.58倍

5、总结与体会

这次实验让我很好的学习了windlx的用法,对其中的各种操作以及性质有了更好的认识与应用,为之后的学习以及发展带来了极大的便利。

同个对几个.s程序的运行,让我对流水线的过程有了更加清楚的认识,将课堂上学到的理论知识运用到了实际中去。

同时,对数据相关、资源相关等有了更好的认识与了解,对程序的简化运行有了更加清楚的认识,为以后清楚的快捷的运行提供了思想的基础。

最后,对定向技术以及其性能有了更加清楚的了解,充分认识了定向技术的优点,在以后的开发应用中,要多采用定向技术,可以减少程序的运行周期,提高程序的运行效率。

实验二循环展开及指令调度

1、实验目的

1.加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;

2.熟悉用指令调度技术来解决流水线中的数据相关的方法;

3.了解循环展开、指令调度等技术对CPU性能的改进。

2、实验平台

用WinDLX模拟器模拟流水线。

3、实验要求

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运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执

4、实验结果

4.1用指令调度技术解决流水线中的结构相关与数据相关

4.1.1原指令执行的相关结果

●DLX汇编语言编写代码文件*.s的内容如下所示:

addff0,f0,f1

addff1,f3,f4

addff2,f0,f2

multff6,f2,f0

addff0,f0,f1

multff1,f6,f0

subff3,f7,f8

subff7,f3,f1

trap0

●通过Configuration菜单中的“Floatingpointstages”选项,把加法﹑乘法﹑除法部件的个数设置为2个,把延迟都设置为3个时钟周期

图2-1加法器、乘法器、除法器的设置

●程序运行的流水线图

图2-2程序执行时的流水线图

●指令执行结果的统计

图2-3指令执行结果的统计

从上图中,我们可以看到指令执行的总周期是22,发生相关的次数是4,总的延迟周期是14,各种相关指令的组合如下所示:

1、addff0,f0,f1

addff1,f3,f4对f0的数据相关

addff2,f0,f2

2、addff2,f0,f2

multff6,f2,f0对f2的数据相关

3、addff0,f0,f1

multff1,f6,f0对f1的数据相关

4、subff3,f7,f8

subff7,f3,f1对f3的数据相关

4.1.2调整指令顺序指令执行的结果

●调整指令后的顺序如下所示

addff0,f0,f1

addff1,f3,f4

subff3,f7,f8

addff2,f0,f2

multff6,f2,f0

subff7,f3,f1

addff0,f0,f1

multff1,f6,f0

trap0

●指令执行的流水线结果如下所示

图2-4指令执行的流水线图

●周期统计图

图2-5执行结果统计图

从上图中,我们可以看到指令执行的总周期是20,发生相关的次数是2,总的延迟周期是12

指令调度后的加速比是22/20=1.1,通过指令调度,可以充分利用cpu部件利用率,减少数据相关和资源相关引起的暂停。

4.2用循环展开、寄存器换名以及指令调度提高性能

4.2.1原循环程序运行的结果

●运行的程序如下所示

.data

A:

.word1

B:

.word4

.text

.globalmain

main:

lff0,A

lff1,B

Loop:

eqff1,f2

bfptFinish

addff2,f2,f0

subff4,f3,f7

addff5,f4,f8

multff6,f3,f9

subff7,f6,f3

jLoop

Finish:

trap0

程序运行的流水线图如下图所示

图2-6

●程序运行的统计结果图如下图所示

图2-7

总计执行周期:

70

总计时延:

32个周期

4.2.2将循环程序展开运行的结果

●运行的程序如下所示

 

subff4,f3,f7

addff5,f4,f8

multff6,f3,f9

subff7,f6,f3

subff4,f3,f7

addff5,f4,f8

multff6,f3,f9

subff7,f6,f3

subff4,f3,f7

addff5,f4,f8

multff6,f3,f9

subff7,f6,f3

subff4,f3,f7

addff5,f4,f8

multff6,f3,f9

subff7,f6,f3

trap0

●程序运行的流水线图如下图所示

图2-8

●程序运行的统计结果图如下图所示

图2-9

总计执行周期:

47

总计时延:

31个周期

从上面的结果可以看出,循环展开后的加速比为70/47=1.49;由此可见循环展开可以极大的提高cpu的效率。

4.2.3将程序循环展开、指令调度后运行的结果

●运行的程序如下所示

.data

A:

.word1

B:

.word4

.text

.globalmain

main:

lff0,A

lff1,B

subff4,f3,f7

multff6,f3,f9

addff5,f4,f8

subff7,f6,f3

subff4,f3,f7

multff6,f3,f9

addff5,f4,f8

subff7,f6,f3

subff4,f3,f7

multff6,f3,f9

addff5,f4,f8

subff7,f6,f3

subff4,f3,f7

multff6,f3,f9

addff5,f4,f8

subff7,f6,f3

trap0

 

程序运行的流水线图如下图所示

图2-10

●程序运行的统计结果图如下图所示

图2-9

总计执行周期:

39

总计时延:

22个周期

从上面的结果可以看出,循环展开后的加速比为70/39=1.79;由此可见循环展开、指令调度可以极大的提高cpu的效率。

5、总计与体会

这次实验让我对指令的调度有了很好的理解,通过指令调度执行时间的计算,更好的看出了指令调度可以极大的提高cpu的运行效率。

同时,循环展开也可以很好的提高cpu的运行效率,将两者结合起来,可以极大的提高运行的效率,为程序的运行带来极大的便利,在今后的程序设置以及程序的运行中,我们可以很好的利用这一特性,来提高我们程序运行的效率,节省时间。

实验三cache性能分析

1、实验目的

1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理解;

2.了解Cache的容量、相联度、块大小对Cache性能的影响;

3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处;

4.理解Cache失效的产生原因以及Cache的三种失效;

5.理解LRU与随机法的基本思想,及它们对Cache性能的影响;

2、实验平台

SimpleScalar模拟器

3、实验要求

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

分析不同的替换算法对Cache性能的影响。

测试程序:

用于实验的测试程序可以使用现有的,即benchmark目录下的所有程序;也可以自己用C语言直接生成各类典型程序比如:

数学运算类、输入输出类等,通过本环境提供的特定C编译器,编译生成对应的xxx.out(默认是a.out)测试程序用于实验。

每个测试程序所需时间大概是10分钟,选择测试程序时注意从不同组中选择,以便使得出的结果不会因为对单项有所侧重而有失偏颇。

每个人从中选出4~6个测试程序进行测试。

4、实验结果

4.1.基本配置情况下运行程序

默认参数如下所示:

-cache:

dl1dl1:

256:

32:

1:

l

-cache:

dl2ul2:

1024:

64:

4:

l

-cache:

il1il1:

256:

32:

1:

l

Ø对于测试程序benchmark\bin.little\test-math测试结果如下所示

il1.misses(指令cache)23761#totalnumberofmisses

dl1.misses(数据cache)804#totalnumberofmisses

ul2.misses1203#totalnumberofmisses

Ø对于测试程序benchmark\bin.little\test-lswlr测试结果如下所示

il1.misses547#totalnumberofmisses

il1.miss_rate0.0627#missrate(i.e.,misses/ref)

dl1.misses459#totalnumberofmisses

dl1.miss_rate0.0971#missrate(i.e.,misses/ref)

ul2.misses477#totalnumberofmisses

4.2.改变Cache容量对Cache性能的影响

实验具体要求:

改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache容量对Cache性能的影响;

由于测试程序中指令项较多,因此在cache改变的实验中皆改变icache

通过下面的命令,将cache的由原来的256组变为512组

[root@localhostsimplescalar]#cd/root/simplescalar/simplesim-3.0/tests-pisa/bin.little

[root@localhostbin.little]#/root/simplescalar/simplesim-3.0/sim-cache-cache:

il1il1:

512:

32:

1:

ltest-math

1、测试程序为benchmark\bin.little\test-printf

Ø-cache:

il1il1:

256:

32:

1:

l

il1.misses112488#totalnumberofmisses

il1.miss_rate0.0620#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

512:

32:

1:

l

il1.misses60016#totalnumberofmisses

il1.miss_rate0.0331#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

1024:

32:

1:

l

il1.misses23335#totalnumberofmisses

il1.miss_rate0.0129#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

2048:

32:

1:

l

il1.misses8578#totalnumberofmisses

il1.miss_rate0.0047#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

16384:

32:

1:

l

il1.misses1515#totalnumberofmisses

il1.miss_rate0.0008#missrate(i.e.,misses/ref)

2、测试程序为benchmark\bin.little\test-llong

Ø-cache:

il1il1:

256:

32:

1:

l

il1.misses1130#totalnumberofmisses

il1.miss_rate0.0383#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

512:

32:

1:

l

il1.misses936#totalnumberofmisses

il1.miss_rate0.0317#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

1024:

32:

1:

l

il1.misses634#totalnumberofmisses

il1.miss_rate0.0215#missrate(i.e.,misses/ref)-

Ø-cache:

il1il1:

2048:

32:

1:

l

il1.misses594#totalnumberofmisses

il1.miss_rate0.0201#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

16384:

32:

1:

l

il1.misses534#totalnumberofmisses

il1.miss_rate0.0181#missrate(i.e.,misses/ref)

3、测试程序为benchmark\bin.little\anagram

Ø-cache:

il1il1:

256:

32:

1:

l

il1.misses577#totalnumberofmisses

il1.miss_rate0.0758#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

512:

32:

1:

l

il1.misses512#totalnumberofmisses

il1.miss_rate0.0672#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

1024:

32:

1:

l

il1.misses502#totalnumberofmisses

il1.miss_rate0.0659#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

2048:

32:

1:

l

il1.misses477#totalnumberofmisses

il1.miss_rate0.0626#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

16384:

32:

1:

l

il1.misses477#totalnumberofmisses

il1.miss_rate0.0626#missrate(i.e.,misses/ref)

4、测试程序为benchmark\bin.little\test-fmath

Ø-cache:

il1il1:

256:

32:

1:

l

il1.misses6093#totalnumberofmisses

il1.miss_rate0.1143#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

512:

32:

1:

l

il1.misses4100#totalnumberofmisses

il1.miss_rate0.0769#missrate(i.e.,misses/ref)

Ø-cache:

il1il1:

1024:

32:

1:

l

il1.misses2231#totalnumberofmisses

il1.miss_rate0.0418#missrate(i.e.

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

当前位置:首页 > 考试认证 > 公务员考试

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

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