计算机体系结构实验报告.docx

上传人:b****2 文档编号:2370117 上传时间:2023-05-03 格式:DOCX 页数:18 大小:105.66KB
下载 相关 举报
计算机体系结构实验报告.docx_第1页
第1页 / 共18页
计算机体系结构实验报告.docx_第2页
第2页 / 共18页
计算机体系结构实验报告.docx_第3页
第3页 / 共18页
计算机体系结构实验报告.docx_第4页
第4页 / 共18页
计算机体系结构实验报告.docx_第5页
第5页 / 共18页
计算机体系结构实验报告.docx_第6页
第6页 / 共18页
计算机体系结构实验报告.docx_第7页
第7页 / 共18页
计算机体系结构实验报告.docx_第8页
第8页 / 共18页
计算机体系结构实验报告.docx_第9页
第9页 / 共18页
计算机体系结构实验报告.docx_第10页
第10页 / 共18页
计算机体系结构实验报告.docx_第11页
第11页 / 共18页
计算机体系结构实验报告.docx_第12页
第12页 / 共18页
计算机体系结构实验报告.docx_第13页
第13页 / 共18页
计算机体系结构实验报告.docx_第14页
第14页 / 共18页
计算机体系结构实验报告.docx_第15页
第15页 / 共18页
计算机体系结构实验报告.docx_第16页
第16页 / 共18页
计算机体系结构实验报告.docx_第17页
第17页 / 共18页
计算机体系结构实验报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机体系结构实验报告.docx

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

计算机体系结构实验报告.docx

计算机体系结构实验报告

LGGROUPsystemofficeroom【LGA16H-LGYY-LGUA8Q8-LGA162】

 

计算机体系结构实验报告

实验一流水线中的相关

一.实验目的

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

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

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

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

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

二.实验平台

WinDLX模拟器

3.预备知识

1.WinDLX

WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线

是如何工作的。

该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设

断点或是连续执行该程序。

CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,

以形象生动的方式描述DLX流水线的工作过程。

模拟器还提供了对流水线操作的统计功能,

便于对流水线进行性能分析。

有关WinDLX的详细介绍,见WinDLX教程。

2.熟悉WinDLX指令集和WinDLX源代码的编写

3.复习和掌握教材中相应的内容

(1)DLX基本流水线

(2)流水线的结构相关与数据相关

结构相关:

当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,

发生资源冲突时,将产生“结构相关”。

数据相关:

当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中

重叠执行时,就可能引起“数据相关”。

(3)定向技术的主要思想:

在发生数据相关时,等待前面计算结果的指令并不一定真的

马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令

需要它的地方,就可以避免暂停。

4.实验内容及结果

1.用WinDLX模拟器执行下列三个程序(任选一个):

求阶乘程序

求最大公倍数程序

求素数程序

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

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

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

注意:

中调用了中的输入子程序。

load程序时,要两个程序一起装入

(都select后再点击load)。

也是如此。

说明:

此实验我们选择:

求阶乘程序

1)用WinDLX模拟器执行求阶乘程序。

2)程序的作用:

这个程序说明浮点指令的使用。

该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了中的输入子程序,这个子程序用于读入正整数。

3)实验结果:

i.分别以步进、连续、设置断点的方式运行程序

图1.求阶乘程序运行统计数据步进方式运行

图2求阶乘程序运行统计数据连续方式运行

图3求阶乘程序运行统计数据连续方式运行

ii.数据统计

图求阶乘程序运行统计数据

图5求阶乘程序流水线执行情况

图6求阶乘程序寄存器使用情况

iii.定向非定向分析

在载入和之后,不设置任何断点运行。

A.不采用重新定向技术,我们得到的结果:

B.采用定向技术,我们得到的结果:

结果分析

从上面的数据我们可以看出定向的作用:

在定向技术存在的情况下Statistics窗口中的各种统计数字:

总的周期数(215)和暂停数(17RAW,25Control,12Trap;54Total)

在定向技术不存在时候,控制暂停和Trap暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。

所以定向技术带来的加速比:

  S=236/215=  因此:

DLXforwarded比DLXnotforwarded快%。

2.用WinDLX运行程序,通过模拟:

找出存在结构相关的指令对以及导致结构相关的部件;

记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百

分比;

论述结构相关对CPU性能的影响,讨论解决结构相关的方法。

1)模拟结果:

图程序流水线执行过程

图程序运行统计信息

2)结构相关

i.如图,导致结构的部件:

浮点数寄存器f4

adddf0,f0,f4指令在译码阶段ID停滞1周期

ii.如图导致结构相关的部件:

ALU

addir2,r2,0x8指令在执行阶段intEX停滞1周期

3)结果分析

4)解决办法

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

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

1)实验结果:

没有采用定向技术时运行该程序,我们得到:

2)结果分析:

程序执行了202个周期,10个数据相关引起的时钟周期RAWstall为104个。

暂停时钟周期数占总执行周期数的百分比=%

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

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

1)实验结果:

采用定向技术时运行该程序,我们得到:

2)结果分析:

程序执行了128个周期,共有6个数据相关引起的时钟周期RAWstall为30个。

暂停时钟周期数占总执行周期数的百分比=%

五.总结

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

一.实验目的

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

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

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

二.实验平台

WinDLXsimulator

4.预备知识

1.WinDLX模拟器的相关知识,详见相关的文档。

2.复习和掌握教材中相应的内容:

(1)循环级并行性

(2)指令调度

(3)循环展开

(4)寄存器换名

5.实验内容及结果

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

(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:

加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)

给出调度前的程序sch_bef:

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

(3)用WinDLX运行程序。

记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;

(4)采用指令调度技术对程序进行指令调度,消除相关;

调度之后的程序sch_aft:

(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;

(6)根据记录结果,比较调度前和调度后的性能。

论述指令调度对于提高CPU性能的意义。

意义:

可以看出经过调度之后运行周期从27减少到21,而且减少了相关。

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

(1)用DLX汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单循环;

循环展开前的程序:

(2)用WinDLX运行该程序。

记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;

(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。

然后对新的循环体进行寄存器换名和指令调度;

循环展开后的程序:

(4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;

(5)根据记录结果,比较循环展开、指令调度前后的性能。

结论:

可以看出经过循环展开之后运行周期从30减少到14,而且减少了相关。

五.总结

实验三记分牌算法和Tomasulo算法

一.实验目的

1.掌握DLXview模拟器的使用方法;

2.进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;

3.理解记分牌算法和Tomasulo算法的基本思想,了解它们的基本结构、运行过程;

4.比较分析基本流水线与记分牌算法和Tomasulo算法的性能及优缺点。

二.实验平台

DLXview模拟器

三.预备知识

1.DLXview模拟器

2.复习和掌握教材中相应的内容

1)指令的动态调度

2)乱序流水线

3)为了允许乱序执行,我们将基本流水线的译码阶段再分为两个阶段:

4)记分牌技术的目标:

在资源充足时,尽可能早地执行没有数据阻塞的指令,达到每个

时钟周期执行一条指令。

5)Tomasulo算法将记分牌的关键部分和寄存器换名技术结合在一起,其基本核心是通过

寄存器换名来消除写后写和先读后写相关可能引发的流水线阻塞。

6)Tomasulo算法的基本思想

四.实验内容及结果

1.用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i和数据文件*.d;

2.观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;

(1)第二个lf指令到multf、subf和addf,multf到divf之间,subf到addf之间存在着先写后读相关。

(2)divf和addf之间存在着先读后写相关。

(3)addf和subf指令关于浮点加法部件还存在着结构相关。

3.将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上,

(1)分别用基本流水线、记分牌算法和Tomasulo算法模拟,针对每一种模拟做如下分析:

基本流水线:

统计程序的执行周期数和流水线中的暂停时钟周期数

1个加法部件,延迟周期为2

2个乘法部件,延迟周期为10

1个除法部件,延迟周期为40

程序执行时钟周期数67,流水线中的暂停时钟周期10

②改变功能部件数目重新模拟,观察并记录性能的改变

2个加法部件,延迟周期为2

3个乘法部件,延迟周期为10

2个除法部件,延迟周期为40

程序执行时钟周期数67,流水线中的暂停时钟周期10

③改变功能部件延迟重新模拟,观察并记录性能的改变

1个加法部件,延迟周期为1

2个乘法部件,延迟周期为8

1个除法部件,延迟周期为32

程序执行时钟周期数47,流水线中的暂停时钟周期8

由此可见增加功能部件数目之后,性能并没有提高

减少功能部件延迟之后,性能得到了显着的提高。

记分牌算法:

统计程序的执行周期数和流水线中的暂停时钟周期数

1个加法部件,延迟周期为2

2个乘法部件,延迟周期为10

1个除法部件,延迟周期为40

程序执行时钟周期数59,流水线中的暂停时钟周期12

②改变功能部件数目重新模拟,观察并记录性能的改变

2个加法部件,延迟周期为2

3个乘法部件,延迟周期为10

2个除法部件,延迟周期为40

程序执行时钟周期数59,流水线中的暂停时钟周期12

③改变功能部件延迟重新模拟,观察并记录性能的改变

1个加法部件,延迟周期为1

2个乘法部件,延迟周期为8

1个除法部件,延迟周期为32

程序执行时钟周期数49,流水线中的暂停时钟周期10

由此可见增加功能部件数目之后,性能并没有提高

减少功能部件延迟之后,性能得到了显着的提高。

Tomasulo算法:

统计程序的执行周期数和流水线中的暂停时钟周期数

1个加法部件,延迟周期为2

2个乘法部件,延迟周期为10

1个除法部件,延迟周期为40

程序执行时钟周期数56,流水线中的暂停时钟周期10

②改变功能部件数目重新模拟,观察并记录性能的改变

2个加法部件,延迟周期为2

3个乘法部件,延迟周期为10

2个除法部件,延迟周期为40

程序执行时钟周期数56,流水线中的暂停时钟周期10

③改变功能部件延迟重新模拟,观察并记录性能的改变

1个加法部件,延迟周期为1

2个乘法部件,延迟周期为8

1个除法部件,延迟周期为32

程序执行时钟周期数46,流水线中的暂停时钟周期8

由此可见增加功能部件数目之后,性能并没有提高

减少功能部件延迟之后,性能得到了显着的提高。

(2)记录运行记分牌算法时的功能部件状态表和指令状态表;

(3)记录运行Tomasulo算法时的指令状态表和保留站信息;

实验四Cache性能分析

一.实验目的

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

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

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

4.理解LRU与随机法的基本思想以及它们对Cache性能的影响。

二.实验平台

Cache模拟器MyCache

三.预备知识

MyCache模拟器使用方法

1.启动模拟器:

用鼠标双击。

2.系统会打开一个操作界面。

该界面的左边为设置模拟参数区域,右边为模拟结果显示区

域。

如图1所示。

3.可以设置的参数包括:

是统一Cache还是分离Cache,Cache的容量,块大小,相联度,

替换算法,预取策略,写策略,写不命中时的调块策略。

可以直接从列表里选择。

4.访问地址可以选择来自地址流文件,也可以选择手动输入。

如果是前者,则可以通过点

击“浏览”按钮,从模拟器所在文件夹下面的“地址流”文件夹中选取地址流文件(.din文

件),然后进行执行。

执行的方式可以是步进,也可以是一次执行到底。

如果选择手动输入,

就可以在“执行控制”区域中输入块地址,然后点击“访问”按钮。

系统会在界面的右边显

示访问类型、地址、块号以及块内地址。

5.模拟结果包括:

(1)访问总次数,总的不命中次数,总的不命中率;

(2)读指令操作的次数,其不命中次数及其不命中率;

(3)读数据操作的次数,其不命中次数及其不命中率;

(4)写数据操作的次数,其不命中次数及其不命中率;

(5)手动输入单次访问的相关信息。

图1MyCache模拟器的操作界面示意图

4.实验内容及结果

1.Cache容量对不命中率的影响

1)启动MyCache。

2)用鼠标点击“复位”按钮,把各参数设置为默认值。

3)选择一个地址流文件。

方法:

选择“访问地址”下的“地址流文件”选项,然后点击“浏

览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

4)选择不同的Cache容量,包括:

2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB,

分别执行模拟器(点击“执行到底”按钮),然后在表1中记录各种情况下的不命中率。

表1不同容量下Cache的不命中率

Cache容量(kb)

2

4

8

16

32

64

128

256

不命中率

%

%

%

%

%

%

%

%

地址流文件名:

5)以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线。

并指明地址流文件名。

6)根据该模拟结果,你能得出什么结论?

结论:

在其他变量一定的情况下,随着Cache容量的变大不命中率逐渐减小最后趋于稳定。

2.相联度对不命中率的影响

1)用鼠标点击“复位”按钮,把各参数设置为默认值。

这时的Cache容量为64KB。

2)选择一个地址流文件。

方法:

选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

3)选择不同的Cache相联度,包括:

直接映象,2路,4路,8路,16路,32路,分别执行模拟器(点击“执行到底”按钮),然后在表2中记录各种情况下的不命中率。

a.部分截图:

表2当容量为64KB时,不同相联度下Cache的不命中率

相联度

1

2

4

8

16

32

不命中率

%

%

%

%

%

%

地址流文件名:

4)把Cache的容量设置为256KB,重复上一步的工作。

表3当容量为256KB时,不同相联度下Cache的不命中率

相联度

1

2

4

8

16

32

不命中率

%

%

%

%

%

%

地址流文件名:

5)以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变

化的曲线。

并指明地址流文件名。

6.根据该模拟结果,你能得出什么结论?

结论:

当cache容量一定时,不命中率先是随着相联度地增加而减小的的,但增加到一定程度后,不命中率不会再降低。

当相联度相同,相联度较小时,cache容量越大不命中率就越低,但当相联度到达一定程度时,再增大cache容量就没有任何意义。

3.Cache块大小对不命中率的影响

1)用鼠标点击“复位”按钮,把各参数设置为默认值。

2)选择一个地址流文件。

方法:

选择“访问地址”下的“地址流文件”选项,然后点击“浏

览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

3)选择不同的Cache块大小,包括:

16B,32B,64B,128B,256B,对于Cache的各种

容量,包括:

2KB,8KB,32KB,128KB,512KB,分别执行模拟器(点击“执行到底”按钮),然后在表4中记录各种情况下的不命中率。

a.部分截图:

表4各种块大小情况下Cache的不命中率

块大小(B)

Cache容量(KB)

2

8

32

128

512

16

%

%

%

%

%

32

%

5%

%

%

%

64

%

%

%

%

%

128

%

%

%

%

%

256

%

%

%

%

%

地址流文件名:

4)分析Cache块大小对不命中率的影响。

结论:

在Cache容量不变的情况下,Cache块越大不命中率越小,最后趋于平缓。

4.替换算法对不命中率的影响

1)用鼠标点击“复位”按钮,把各参数设置为默认值。

2)选择一个地址流文件。

方法:

选择“访问地址”下的“地址流文件”选项,然后点击“浏

览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

3)对于不同的替换算法、Cache容量和相联度,分别执行模拟器(点击“执行到底”按钮),

然后在表5中记录各种情况下的不命中率。

a.部分截图:

(cache容量:

16KB相联度:

2路采用LRU算法)

(cache容量:

16KB相联度:

2路采用随机算法)

表5LRU和随机替换法的不命中率的比较

cache容量

相连度

2路

4路

8路

LRU

随机算法

LRU

随机算法

LRU

随机算法

16K

%

%

%

%

%

%

64K

%

%

%

%

%

%

256K

%

%

%

%

%

%

1M

%

%

%

%

%

%

地址流文件名:

4)分析不同的替换算法对Cache不命中率的影响。

结论:

和随机算法的不命中率随着相联度的增加而减少且随着cache容量的增加而减少;ii.在相联度相同,cache容量相同时,使用LRU替换算法的不命中率比随机算法的不命中率小;iii.当cache容量增大到一定程度,相联度达到一定程度时,不命中率不会再降低,且与算法的选择关系不大。

5.混合Cache和分离Cache的比较

1)用鼠标点击“复位”按钮,把各参数设置为默认值。

2)选择一个地址流文件。

方法:

选择“访问地址”下的“地址流文件”选项,然后点击“浏

览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

3)分别在分离Cache和混合Cache的情况下,选择不同的Cache容量,包括:

4KB,8KB,

16KB,32KB,64KB,128KB,256KB,分别执行模拟器(点击“执行到底”按钮),

然后在表6中记录各种情况下的不命中率。

a.部分截图:

(Cache容量:

4KB混合Cache)

(Cache容量:

4KB分离Cache)

表6分离Cache和混合Cache不命中率的比较

容量

指令cache

数据cache

混合cache

4

%

%

%

8

%

%

%

16

%

%

%

32

%

%

%

64

%

%

%

128

%

%

%

256

%

%

%

地址流文件名:

4)对模拟结果进行分析。

结论:

分离Cache较混合Cache的不命中率较低,这是因为混合Cache按流水的方式执行load指令和store指令时,可能会同时请求一个数据字和一个指令字,这时会出现结构冲突,导致CPU等待。

五.总结

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

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2