北邮计算机体系结构实验报告.docx
- 文档编号:9419553
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:26
- 大小:666.46KB
北邮计算机体系结构实验报告.docx
《北邮计算机体系结构实验报告.docx》由会员分享,可在线阅读,更多相关《北邮计算机体系结构实验报告.docx(26页珍藏版)》请在冰点文库上搜索。
北邮计算机体系结构实验报告
计算机系统结构实验报告
班级:
2011211
学号:
姓名:
17
1.实验一WINDLX模拟器安装及使用
2.实验二指令流水线相关性分析
3.实验三DLX处理器程序设计
4.实验四代码优化
5.实验五循环展开(选作)
实验一WINDLX模拟器安装及使用
简要介绍WINDLX模拟器结构和功能
此图为初始界面
Register窗口
显示寄存器中的容
Clock Cycle Diagram子窗口
现在双击Clock Cycle Diagram子窗口,它显示DLX流水线的时空图。
Statistics子窗口
Pipeline子窗口
窗口中用图表形式显示了DLX的五段流水线。
可以看出,DLX执行指令的流水线是一个5段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。
显然,不同指令在执行段的操作是不同的,而且不同操作在该段的延迟也是不同的。
Breakpoint子窗口
按F7键以单步方式运行程序,可以清楚的看到每条指令在流水线各个段的具体操作情况,除此之外,DLX模拟器还提供了其他几种运行程序的方式。
单击主窗口中Execute子菜单,可以看到DLX模拟器共提供了4种运行程序的方式,其中Single Cycle(或按F7键)就是单步执行方式;Multiple Cycles(或按F8键)是多步执行方式,选择该方式,会在屏幕上出现一个窗口,询问周期个数,它表示流水线从当前位置继续向前执行的周期个数,输入你需要的值,然后按OK键.
Code子窗口
里面显示的容是两个程序(fact.s和input.s)加载到存中的情况。
最右边显示的是程序fact.s的第一条指令,对照图2.7中fact.s的第一条语句,可以看出,变量Prompt被代替以0x1000,这说明变量Prompt在程序被加载到存中的实际地址就是0x1000,也即程序的数据区被加载到存地址0x1000开始的地方,这里“0x”表示十六进制。
中间显示的是第一条语句的机器码表示占了存的4个字节位置。
实验二指令流水线相关性分析
一.实验目的。
通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。
二.实验原理。
指令流水线中主要有结构相关、数据相关、控制相关。
相关影响流水线性能。
202.107.127.126/ncourse/txjg/architecture/chapter3/lecture4/htm/lecture4_1.asp-#
三.实验过程及分析结果。
(1)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
①数据相关及指令组合:
1)截图及分析
原因是管道清除在DLXtrap-instruction时发现避免所有问题的可能性。
这是记录在信息窗口,Trap-Pipeline-Clearing失速!
“如果阶段。
lbur3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqir5,r3,0xa要在intEX周期中读取r3中的数据。
发生了WR相关。
存储了一个数据。
2)指令组合
lbur3,0x0(r2)
seqir5,r3,0xa
②控制相关及指令组合:
1)截图及分析
可以看到仿真在第四周期,第一条命令是在MEM阶段,第二条命令处于intEX段,第四条命令处于IF段,而第三条命令处于"aborted"。
原因:
第二个命令,jal是无条件分支。
这个事实是只有在第三周期,当jal被解码。
之后在这个周期命令movi2fp(jal)已经被获取,但下一个执行命令将在另一个地址。
因此movi2fp的执行必须中止,留下一个的管道。
2)指令组合
addir1,r0,0x1000
jalInputUnsigned
movi2fpf10,r1
swSaveR2[r0],r2
③结构相关及指令组合:
1)截图及分析
addir2,r2,0x1该指令与它前面的一天指令addr1,r1,r3发生了结构相关。
由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addir2,r2,0x1就不能进入ID段,译码部分已经被占用。
故发生了结构相关。
2)指令组合
addr1,r1,r3
addir2,r2,0x1
(2)考察增加浮点运算部件对性能的影响。
进行20次循环,截图如下
分析:
代码执行相同步,通过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响。
因为程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
(3)考察增加forward部件对性能的影响。
进行20次循环,截图如下:
不使用forward:
使用forward:
分析:
使用forward部件后的109个时钟周期比不使用少了21个时钟周期。
使用forward部件使得RAW减少了36个,占总的时钟周期比例也减少了。
可以看出使用forward部件后,时钟周期减少,数据相关减少,流水线的性能得到提高。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
截图如下:
分析:
转移指令一共23条。
其中成功转移的2条,占8.70%,不成功转移的21条,占91.30%。
若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。
若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,执行效率降低,性能就会损失。
四.给出实验总结:
根据实验,总结采用流水线技术会遇到的问题和为解决这些问题所采用的各种技术的作用。
同时简单谈谈自己对流水线技术的认识。
因为这次实验是第一次开始真正使用DLX软件,所以对操作还是很不熟悉,开始没有对文档认真阅读,导致不知如何导入代码,通过观察程序中出现的数据相关、控制相关、结构相关,以及他们的指令组合,并考察增加浮点运算部件、forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销。
我更加深入的认识了流水线的概念。
而通过使用DLX软件能更直观的体现出流水线的工作过程,这也让我对流水线在的理论和实验有了更深的了解,对今后体系结构的学习有很大的帮助。
流水线技术可以让一个工作变得轻松和简单,让原本复杂的工程有了并行性,这也使得效率大大提高,对机器的使用有了更大的帮助。
实验三DLX处理器程序设计
一.实验目的
学习使用DLX汇编语言编程,进一步分析相关现象
二.代码清单及注释说明
三.程序相关性分析结果
运行结果:
(1)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
1数据相关及指令组合:
1)截图及分析
存在RW相关。
2)指令组合
addd f4,f0,f2
sd r(r3),f4
②控制相关及指令组合:
1)截图
存在控制相关
2)指令组合
j loop
③结构相关及指令组合:
不存在数据相关
(2)考察增加浮点运算部件对性能的影响。
进行比较,截图如下
分析:
代码执行相同步,通过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响。
因为程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
(3)考察增加forward部件对性能的影响。
进行比较,截图如下:
不使用forward:
使用forward:
分析:
使用forward部件后的299个时钟周期比不使用少了98个时钟周期。
使用forward部件使得RAW减少了98个,占总的时钟周期比例也减少了。
可以看出使用forward部件后,时钟周期减少,数据相关减少,流水线的性能得到提高。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
截图如下:
分析:
转移指令一共17条。
其中成功转移的1条,占5.88%,不成功转移的16条,占94.12%。
若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。
若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,执行效率降低,性能就会损失。
实验四代码优化
一.实验目的
学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。
二.实验原理
采用静态调度方法重排指令序列,减少相关,优化程序
三.优化程序代码清单及注释说明
四.参照实验要求记录你实验分析结果
优化前:
优化后:
分析:
根据原先实验3中关于相关性的分析找出代码,对其中具有相关性的指令,通过把无关紧要的代码提前或者拖后至相关性语句之间,以此来减少甚至消除数据相关性所造成的stall带来的效率低下。
和优化之前相比,总花费时钟周期为268,优化前为299,花费的时钟周期大大减少,总执行指令数为不变,RAW相关占23.88%,比优化前37.79%的RAW相关明显有所改善。
控制相关和结构相关均没有改变。
因此可以看出本次所做代码优化对数据相关的改善最大。
(1)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
经过修改不存在相关性。
(2)考察增加浮点运算部件对性能的影响。
进行比较,截图如下
分析:
代码执行相同步,通过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响。
因为程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
(3)考察增加forward部件对性能的影响。
进行比较,截图如下:
不使用forward:
使用forward:
分析:
使用forward部件后的268个时钟周期比不使用少了66个时钟周期。
使用forward部件使得RAW减少了82个,占总的时钟周期比例也减少了。
可以看出使用forward部件后,时钟周期减少,数据相关减少,流水线的性能得到提高。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
截图如下:
分析:
转移指令一共17条。
其中成功转移的1条,占5.88%,不成功转移的16条,占94.12%。
若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。
若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,执行效率降低,性能就会损失。
五.你解决的困难和解决方法
对代码优化的不理解,开始不知道应该怎么来解决问题,通过书本的理解和对软件的多次实验,才知道如何来解决问题。
消除相关性来使代码优化,改变代码的位置,来解决其相关的问题。
六.你的实习体会
通过这次计算机系统结构的实验,对流水线有了比较深刻的理解,也学会了运用DLX软件,在这几个实验中,自己对软件的使用越来越熟悉,也对DLX编写了初步的掌握,能完成一些基本的代码功能。
实验一,让我对DLX软件有了初步的认识;实验二,让我能操作DLX软件来完成一些实验的要求,通过实验指导书的指导,一步一步的完成了所要求的步骤,对DLX软件有了更深的掌握;实验三,开始编写DLX代码,开始有很多的问题,因为开始接触一个新的语言,对语法和语句的掌握比较薄弱,所以出现了很多BUG,但是通过对老师给的文档的认真学习,最后也能完成代码的要求,开始分析这新的代码,对比前一实验,对流水线有了更深的理解;实验四,我已经可以熟悉运用dlx软件,实验过程中,我感觉一个最重要的步骤就是分析相关性。
如果没有分析好相关性,是不知道从什么地方下手优化代码的。
代码优化所提高的效率时十分明显的,所以以后要注重对代码优化的一些问题的研究,这样会对整个程序效率的提高有很大的保证。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机体系结构 实验 报告