北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx

上传人:b****2 文档编号:5789885 上传时间:2023-05-05 格式:DOCX 页数:26 大小:564.30KB
下载 相关 举报
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第1页
第1页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第2页
第2页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第3页
第3页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第4页
第4页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第5页
第5页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第6页
第6页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第7页
第7页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第8页
第8页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第9页
第9页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第10页
第10页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第11页
第11页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第12页
第12页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第13页
第13页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第14页
第14页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第15页
第15页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第16页
第16页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第17页
第17页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第18页
第18页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第19页
第19页 / 共26页
北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx

《北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx》由会员分享,可在线阅读,更多相关《北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx(26页珍藏版)》请在冰点文库上搜索。

北邮计算机系统结构WINDLX模拟器实验 报告文档格式.docx

相关影响流水线性能。

 

(1)数据相关

定义:

原有先后顺序的两条指令(I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、写顺序与原有顺序不一致,导致流水线输出错误。

三类数据相关:

写读(WR)相关

读写(RW)相关

写写(WW)相关

解决方法技术:

1、使某些流水线指令延迟、停顿一或多个周期。

2、 

双端口存储器:

如果指令与数据放在同一个存储器。

 

3、 

设置两个存储器:

一个数据存储,一个为指令存储器。

4、 

软件优化编译:

通过指令重新排序,消除数据相关。

5、 

定向技术:

又称旁路技术或专用通路技术,就是使后续指令提前得到前指令的运算结果(适合ALU类指令)

(2)结构相关

如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关

1、延迟技术:

使某些指令延迟、停顿一或多个时钟周期

2、双端口存储器:

允许同时读两个数据或指令

3、设置双存储器(哈弗结构):

一个数据存储,一个指令存储。

4软件优化编译:

通过指令重新排序消除结构相关。

(3)控制相关

控制相关就是指因程序执行转移类指令而引起的冲突相关。

包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。

1、静态分支技术Ø

静态转移预测技术(猜测法);

Ø

延迟转移;

Ø

提前形成条件码,生成转移目标地址;

改进循环程序;

2、动态分支预测技术Ø

转移历史表BHT;

转移目标缓冲栈(BTB);

转移目标指令缓冲栈BTIB;

五.实验步骤

(1)观察程序中出现的数据/控制/结构相关。

指出程序中出现上述现象的指令组合。

(2)考察增加浮点运算部件对性能的影响。

(3)考察增加forward部件对性能的影响。

(4)观察转移指令在转移成功与转移不成功时候的流水线开销。

注意:

(2)以外,浮点加、乘、除部件都只有一个;

本问题中所有浮点运算部件的延时都请设定为4个周期。

六.实验过程

在开始模拟之前,将fact、s与input、s加载至WinDLX中。

加载完后点击Code后可以瞧到如下图所示。

证明加载成功,即可进行以下实验。

(1)观察程序中出现的数据/控制/结构相关。

1.1.数据相关

如图所示

lbur3,0×

0(r2)

要在WB周期写回r3中的数据;

而下一条指令

seqir5,r3,0×

a

要在intEX周期中读取r3中的数据。

上述过程发生了WR冲突,即写读相关。

为了避免此类冲突,

seqr5,r4,0×

a的intEX指令延迟了一个周期进行。

则发生数据相关的指令为

1、2控制相关

可知第0*00000130条指令jfact、Loop为循环指令,指令在EX时刻才能判别指令就是否发生转移,此时发生了控制相关。

如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。

jfact、Loop在EX时发现跳转成功,则在EX阶段马上结束指令顺序取出的指令sdPrintfValue(r0),f0,转而执行ledf0/4指令的取指阶段ID。

由于此控制相关使得流水线断流一个时钟周期。

1、3结构相关

上图表明了addir2,r2,0×

1的详细信息。

该指令与它前一条指令addr1,r1,r3发生了结构相关。

并且由于此处的冲突,需要暂停2个周期。

在ID段暂停后,则开始进图intEX段。

所以这条指令(addir2,r2,0×

1)您不能进入ID流水段,译码部分占用,发生了结构相关。

该部分的指令为:

取N=12

设置浮点运算部件的配置。

由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为4。

分别运行50个cycles后,数据对比如下:

比较各个数据,发现没有变化。

无论怎么增加浮点运算部件,统计结果都一样。

原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。

所以,浮点运算部件的增减对效率无影响。

(3)考察增加forward部件对性能的影响。

为了对比有无forward部件的性能。

需要在勾选enableforwarding,以及不勾选enableconfiguration来瞧性能数据的对比。

不使用forward部件:

使用forward部件:

从上面的数据我们可以瞧出增加forward部件后,总的周期数由200减少至158,RAW由原来占总时钟周期的32、5%减少至16、46%,RAW个数由原来的65减少至26。

增加forward部件使得控制相关比例增加了。

所以,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。

(4)观察转移指令在转移成功与转移不成功时候的流水线开销。

可知条件分支指令总共有15条,其中有2条转移成功(13、33%),有13条转移不成功。

转移不成功的指令就顺序执行,故不会影响程序的运行,不会导致流水线断流;

而转移成功的指令会导致流水线的断流,要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。

经分析可知,两次断流都会导致一个周期的流水线断流。

七.实验总结

1、在流水线中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关,而解决流水线相关的途径之一就是设置双存储器(哈弗结构):

实际上,本身实现DLX指令的硬件设备已经考虑到了这一点,本身已有两个存储器,一个为数据存储器,一个为指令存储器。

故本身就解决了部分结构相关问题。

并且fact、s中的指令并不会导致其她资源冲突,故无法体现资源相关。

试验中多加入浮点数部件,运行效率等没有变化。

通过观察指令的运行情况,因为不会发生结构相关(硬件资源冲突),在流水线中的部件线性使用,故加入部件也不会对结果有直接的影响。

2、本次实验,主要通过对于三种相关的观察,分析出现相关时的指令,分析浮点运算部件与forward部件对性能的影响,观察转移指令在转移成功与不成功时的流水线开销,这些实验一步一步,通过WinDLX形象生动的表示,使我在实践中更加深入的认识了流水线。

3、通过本次实验,我熟悉了指令执行的每个阶段的任务,对时空图的理解也更深了一步,对流水线中的三种相关性问题有了认识,同时通过此实验学习到了解决这些相关问题的方法,从而对课上所学的知识有了更系统的认识。

实验三DLX处理器程序设计

综合型实验

学习使用DLX汇编语言编程,进一步分析相关现象

DLX汇编语言环境

掌握向量运算算法与编程方法。

(1)熟悉DLX汇编语言。

(2) 

编写两双精度浮点一维向量的加法运算程序。

(3) 

对此程序完成上面实验二中1)、2)、3)、4)方面的分析。

六.实验过程

(1)代码清单与注释说明

、data

VectorLength:

、word16

Vector1:

、word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Vector2:

;

声明向量长度以及声明向量1、2

Printf1:

、asciiz"

Vector="

Printf2:

%f"

、align2

PrintPrompt:

、wordPrintf1

PrintPar:

、wordPrintf2

Result:

、space4;

存放打印数据的空间申请

、text

main:

addir14,r0,PrintPrompt

trap5

lwr20,VectorLength

addir2,r0,0

Loop:

ldf10,Vector1(r2)

ldf12,Vector2(r2);

循环体中读入向量

cvti2df0,f10

cvti2df2,f12

adddf4,f2,f0;

加法运算

Finish:

****Finish,writeresultintostdout

sdResult,f4

addir14,r0,PrintPar

trap5;

系统中断,输出结果

addir2,r2,4

subir20,r20,1

bnezr20,Loop

End

trap0

运行结果

(2)观察程序中出现的数据/控制/结构相关。

无结构相关,有控制相关15次与数据相关64次。

数据相关:

以当对当前指令的操作数寄存器进行操作(EX)的时候,前几条指令的运算结果还未写回(WB)结果寄存器,由此产生数据相关。

结构相关:

由于只做了一次加法,所以没有产生结构相关

第一条命令在WB段,第二条命令在intEX段,第四条命令在IF段。

而第三条命令指示为"

aborted"

此处发生了控制相关。

(3)考察增加浮点运算部件对性能的影响。

数据对比如下:

(4)考察增加forward部件对性能的影响。

从上面的数据我们可以瞧出增加forward部件后,总的周期数由413减少至315,RAW由原来占总时钟周期的39、22%减少至20、32%,RAW个数由原来的162减少至64。

(5)观察转移指令在转移成功与转移不成功时候的流水线开销。

可知条件分支指令总共有16条,其中有15条转移成功(93、75%),有1条转移不成功。

七.实验总结

通过此次实验我对实验二所进行的数据相关、控制相关、结构相关的性能分析做了更深入的了解,以及对于功能部件对流水线的影响,forwarding技术对流水线的影响,还有就就是静态指令调度等。

通过自行编写向量矢量算法,在代码中初始化两个向量,按照分量顺序进行运算。

当然,如果想要改变源向量,直接处理代码中的相关数据即可。

总之,该实验主要着重对浮点运算以及对于流水线的相关影响及性能分析,使我受益匪浅。

实验四代码优化

综合实验

学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。

采用静态调度方法重排指令序列,减少相关,优化程序

(1)使用静态调度方法手工优化实验2或实验3的代码

(2)对优化程序,重复实验二中

(1)、

(2)、(3)、(4)工作。

对实验三中的两双精度浮点一维向量的加法运算程序代码进行优化,如下所示:

、data

、space4

ldf12,Vector2(r2)

adddf4,f2,f0

此处进行优化,之前插入一条指令,避免f2的RAW冲突

trap0

运行结果相同

(1)程序相性分析

优化前优化后

由上述两图对比可以瞧出,

其RAW相关由优化前的20、32%减少为16、05%,性能改善很多;

结构相关没有发生改变;

控制相关:

由原来的4、76%变为5、02%,没有改善。

因此,可以瞧出,我所进行的代码优化对性能方面改善并不就是很强烈,主要影响还就是在数据相关方面。

由此可以瞧出,其浮点运算部件个数对统计结果并无影响。

原因为该运算过程中不存在结构相关,因此并行度没有增加,程序影响不大,部件增加对于系统的性能并没有改善。

通过对比可以瞧出,使用forwarding部件之后执行周期由348个减少为299个,

数据相关由97个减少为48个,数据相关的比例从总时钟周期的27、87%减为16、05%。

控制相关比例增加了,由原来占总时钟周期的4、31%增至5、02%。

在使用forward之后,处理的各个方面的性能都得到了提升,时钟周期减少,相关造成的延时减少。

七、实验总结

本次实验的难度相比于前几次实验的难度较大,要求对代码的理解更加深入。

实验过程中,我感觉一个最重要的步骤就就是分析相关性。

如果没有分析好相关性,就是不知道从什么地方下手优化代码的。

代码优化所提高的效率时十分明显的,所以以后要注重对代码优化的一些问题的研究,这样会对整个程序效率的提高有很大的保证。

本次试验主要就是对上一个实验中的代码进行优化,使我在做实验的过程中掌握了进行代码优化的方法,以及相关性的分析。

而相关性分析在我瞧来就是重点,它关系到能否进行优化以及怎么优化、

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

当前位置:首页 > 解决方案 > 学习计划

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

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