北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解.doc
- 文档编号:115519
- 上传时间:2022-10-03
- 格式:DOC
- 页数:38
- 大小:825.94KB
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解.doc
《北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解.doc》由会员分享,可在线阅读,更多相关《北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解.doc(38页珍藏版)》请在冰豆网上搜索。
北京邮电大学
实验报告
课程名称计算机系统结构
计算机学院2016111303班
王陈(2016110711)
目录
实验一WINDLX模拟器安装及使用 3
·实验准备 错误!
未定义书签。
·实验环境 错误!
未定义书签。
·实验步骤 错误!
未定义书签。
·实验内容及要求 错误!
未定义书签。
·实验过程 错误!
未定义书签。
·实验总结 8
实验二指令流水线相关性分析 9
·实验目的 9
·实验环境 9
·实验步骤 9
·实验过程 错误!
未定义书签。
·实验总结 16
实验三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之后,可以看到他们数据的对比:
由此可见,浮点运算部件的增减对效率无影响。
比较各个数据,发现没有变化。
无论怎么增加浮点运算部件,统计结果都一样。
原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
3.考察增加forward部件对性能的影响。
为了对比有无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:
.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 //声明两个向量 Vector1和Vector2
Vector2:
.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
Result:
.space 4 //声明一个空间来存放打印的数据
Loop:
//循环体
ld f10,Vector1(r2)
ld f12,Vector2(r2) //读入两个提前声明的向量
add
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 报告 一到五 WINDLX 模拟器