北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc

上传人:wj 文档编号:13046338 上传时间:2022-10-03 格式:DOC 页数:38 大小:825.94KB
下载 相关 举报
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc_第1页
第1页 / 共38页
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc_第2页
第2页 / 共38页
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc_第3页
第3页 / 共38页
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc_第4页
第4页 / 共38页
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc

《北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc》由会员分享,可在线阅读,更多相关《北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc(38页珍藏版)》请在冰豆网上搜索。

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解Word格式.doc

实验三DLX处理器程序设计 17

实验目的 17

实验过程 17

A. 向量加法代码及性能分析 17

B.双精度浮点加法求和代码及结果分析 22

实验总结 27

实验四代码优化 28

实验目的 28

实验原理 28

实验过程 28

实验总结+实习体会 33

实验五循环展开 34

实验目的 34

实验原理 34

实验过程 34

矩阵乘程序代码清单及注释说明 34

相关性分析结果 39

增加浮点运算部件对性能的影响 39

增加forward部件对性能的影响 39

转移指令在转移成功和转移不成功时候的流水线开销 39

实验总结+实习体会+课程建议 39

实验一WINDLX模拟器安装及使用

WinDLX模拟器的结构和功能说明

1.点击运行之后,会看到一个如下图所示的窗口。

它包括Register,Code,Pipeline,ClockCycleDiagram,Statistics,Breakpoints。

接下来详细介模拟器的结构及各个部件的功能。

2.Register窗口介绍

Rigister窗口中显示的是各个寄存器的名称及内容。

如下图:

可以看到寄存器中以十六进制标识,从上图可以看出各个寄存器中的内容。

2.Code窗口介绍

在没有进行任何执行的时候,初次打开code窗口,即为下图所示

窗口现实的信息是各个存储器内同。

第一列标识存储器的地址;

第二列是机器代码,用16进制表示;

第三列是汇编指令。

当我们点击上方的,可以选择单步或多步执行(也可以使用快捷键F7或F8)。

若选择单步执行,每按一次F7,指令执行一次,可以看到,一次执行的为IF->

ID->

intEX->

MEM->

WB,没执行一次还有颜色的变化。

颜色是用来标识指令处于哪个流水段的,如下图。

当然,我们也可以使用多步执行,按快捷键F8,选择5步流水,即可。

3.Pipeline窗口介绍

通过阅读WinDLX模拟器说明书可以知道,Pipeline窗口显示的是DLX处理器的内部结构。

窗口用下图标识DLX五段流水。

当然,如同Code窗口介绍讲述的那样,不同的颜色显示了指令处于哪段流水线。

使用快捷键F7单步执行,可以明显的看出,不同时候流水段执行的不同指令。

如下图。

图片反映的正式与Code中所处的时刻相同的指令流水。

可以清晰看到不同流水段执行的是哪条指令。

4.ClockCycleDiagram窗口

实验准备中我们已经知道,该窗口显示的是流水线的时空图。

时空图反映的是不同时隙内的运行情况。

在我看来,时空图是最好理解的。

因为它反映的就是流水段的并行程度。

在这个DLX模拟器中,并不存在一些数据或者控制上的冲突问题。

所以可以依靠上图很清晰的看到指令所处的不同流水段,及指令执行情况。

该时空图同样也是和前面的Code等相对应。

也可以通过快捷键F7来进一步执行指令,可以看到流水线时空图的扩展情况。

任意双击指令的一行,可以详细看到不同流水段的情况。

如下图所示。

5.Statistics窗口介绍

该窗口是对运行程序中的数据进行分析。

主要包括模拟器中硬件配置情况,在该窗口中,我们可以比较不同配置对于该模拟器的不同影响。

1)整体指令执行情况

2)硬件配置情况

3)暂停次数和百分比及原因分析

4)分支次数和百分比

5)Load/Store指令执行情况

6)浮点指令执行次数和百分比

7)trap发生的次数和百分比

6.Breakpoints窗口介绍

该窗口使用来观察代码运行情况。

先打开Breakpoints窗口,点击窗口上方的来设置breakpoint,也就是设置指令运行到流水线的哪个阶段程勋停止执行。

如上图,如果选择EX阶段,在Code窗口中相应的行会出现BEX,即指令执行到译码结束执行开始的时候,程序将中止。

实验总结

通过本次试验,由于是第一次接触DLX模拟器,该试验能够帮助我对这个模拟器大致的功能及使用做个大致的了解。

对于日后的实验打下好的基础。

我觉得WinDLX模拟器小而精悍,它有不同颜色的标记,不同寄存器及存储器的反映。

通过使用它,可以对5步流水的过程及不同阶段很清楚明白的看到。

也可以看到不同指令分析走到了哪一步,到了哪一步流水段。

实验二指令流水线相关性分析

实验目的

通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

实验环境

WindowsXP操作系统

WinDLX模拟器

实验步骤

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

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

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

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

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

1.观察程序中出现的数据/控制/结构相关;

1)数据相关

如下图所示,在ClockCycleDiagram窗口所想是的时空图中和Pipeline窗口中的流图中,第一次出现了R-Stall。

接下来可以点击上图中的橘色窗口,则屏幕显示

lbur3,0×

0(r2)

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

而下一条指令

seqir5,r3,0×

a

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

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

为了避免此类冲突,

seqr5,r4,0×

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

由此,相关指令为:

2)控制相关

由上图可以看出,在第4时钟周期:

第一条指令处于MEM段;

第二条命令处于intEX段;

第三条指令出于aborted状态;

第四条命令处于IF段。

原因分析:

jalInputUnsigned是无条件分支指令,但当第三个周期开始的时候,也就是jal这条指令被译码后才知道。

此时,movi2fp已经执行,且将要执行的下一条命令在另外一个地址处,所以这条指令不会执行,这个时候就会发生控制相关。

由此,发生控制相关的指令为:

3)结构相关

首先,我们先来看一下执行过控制相关的时空图和Pipeline,如下图。

当我们点击Pipeline中IF所对应的框框可以看到详细的该指令执行情况,如下图:

上图表明了addir2,r2,0×

1的详细信息。

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

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

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

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

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

该部分的指令为:

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

该实验取N=6

首先通过,点击FloatingPointStageConfiguration来设置浮点运算部件的配置。

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

如下图所示:

运行50个cycles之后,可以看到他们数据的对比:

由此可见,浮点运算部件的增减对效率无影响。

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

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

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

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

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

不使用forward部件:

使用forward部件:

从上面的数据我们可以看出增加forwardi部件后RAW由原来占总时钟周期的26%减少至18%,RAW个数由原来的13减少至9。

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

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

3.观察转移指令在转移成功和转移不成功时候的流水线开销。

我们假设,浮点部件设置Count=3,Delay=4;

N=6。

执行完毕后,查看条件转移分支,如下图所示:

由上图可知,转移指令一共8条,成功转移2条(占25%),不成功为6条。

所以,静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。

即,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低;

若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。

本次试验中,主要遇见一个问题,就是在当初文件加载时没有成功,后来通过查询资料和自己的尝试,发现,在选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。

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

实验三DLX处理器程序设计

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

实验过程

A.向量加法代码及性能分析

首先给据题目要求,需要熟练掌握DLX编程语言,然后根据规范格式编写向量的代码。

1)向量声明

VectorLength:

 

.word 

16 

//声明向量长度

Vector1:

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

//声明两个向量 

Vector1和Vector2

Vector2:

Result:

.space 

//声明一个空间来存放打印的数据 

Loop:

//循环体

ld 

f10,Vector1(r2) 

f12,Vector2(r2) 

//读入两个提前声明的向量

add

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

当前位置:首页 > 工作范文 > 行政公文

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

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