体系结构 实验报告 哈工程Word下载.docx
- 文档编号:18746219
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:11
- 大小:81.73KB
体系结构 实验报告 哈工程Word下载.docx
《体系结构 实验报告 哈工程Word下载.docx》由会员分享,可在线阅读,更多相关《体系结构 实验报告 哈工程Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。
模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。
2、流水线执行过程:
指令执行的5个阶段
(1)取指令周期
(2)指令译码/读寄存器周期
(3)执行/有效地址计算周期
(4)存储器访问/分支完成周期
(5)写回周期
3、流水线中的相关:
(1)结构相关:
当某一条机器指令需要访问物理器件时,如加法器,此时加法器正被另一条机器指令使用,从而产生结构相关;
(2)数据相关:
当某一条指令需要访问某个寄存器时,此时这个寄存器正被另一条指令所使用,从而产生数据相关;
(3)控制相关:
当程序执行到某个分支语句时,顺序执行的下一条语句将被跳过而去执行分支语句中满足条件的那条指令,从而产生控制相关。
三、实验目的
1、通过该模拟实验,进一步掌握和巩固流水线的基本知识;
2、初步掌握在特定体系结构下的汇编代码的编写和优化;
3、培养运用所学知识解决实际问题的能力
4、对流水线性能分析;
5、了解影响流水线效率的因素;
6、了解各类相关及解决方法;
7、提前学习各类相关及解决方;
8、实验过程中能独立的完成程序的编写和调试
9、代码调试过程中能独立的进行持续的性能参数追踪与优化
10、能过上机体调试代码
四、实验内容
使用WinDLX模拟器,对distance.s做如下分析:
(1)分析distance.s和input.s输入顺序不同时产生的影响。
(2)分析distance.s中汇编语言含义,同时分析程序执行流程。
(3)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
(4)考察增加浮点运算部件对性能的影响。
(5)考察增加forward部件对性能的影响。
(6)观察转移指令在转移成功和转移不成功时候的流水线开销。
注意:
除
(2)以外,浮点加、乘、除部件都只有一个;
本问题中所有浮点延迟部件设置为:
加法:
2个延迟周期;
乘法:
5个延迟周期;
除法19个延迟周期。
五、实验器材(设备、元器件)
主机操作系统Windows8.1
虚拟机软件VMware_workstation12.1.1
辅助软件VMwaretools
虚拟机操作系统WindowsXPprofessional
实验软件WINDLX1.3
六、实验步骤及操作:
1、双击WinDLX图标运行WinDLX。
装入测试程序之前,先初始化WinDLX模拟器:
点击File菜单中的Resetall菜单项,弹出一个“ResetDLX”对话框。
然后点击窗口中的“确认”按钮即可。
2、选择File/LoadCodeorData,按如下步骤操作,可将distance.s和input.s这两个程序装入主存:
点击distance.s
点击select按钮
点击input.s
点击load按钮
3、按F7键程序顺序执行观察6个子窗口的情况。
七、实验数据及结果分析:
1、先装入distance.s再转入input.s时,因为程序顺序执行,地址顺序符合程序执行顺序,程序能够正确执行;
顺序相反时,因为input.s的地址高,而程序顺序执行到input.s时将没有正确的输入窗口,程序执行到输出结果时,也不会出现结果
2、程序中出现三个相关
图7-1
如图7-1因为下面两条指令,第二条指令要读r4而执行到此操作时第一条指令仍对r4进行操作,发生了数据相关
addr4,r0,2
divr2,r2,r4
图7-2
如图7-2程序中出现了结构相关,硬件资源满足不了指令执行的要求,发生资源冲突时,将产生结构相关。
次程序代码段因加法器发生结构相关。
addr3,r0,r1
addr6,r0,0
图7-3
如图7-3程序中出现控制相关,当程序执行下面指令时,第二条指令出现跳转指令时,第一条指令还没有执行完,所以出现控制相关
addir1,r0,Prompt
jalInputUnsigned
图7-4
3、
.data;
定义数据段,默认情况下数据段$DATA会被加载到内存0x1000地址处
;
***promptsforinput;
提示输入语句,输入3个初始数据
Prompt1:
.asciiz"
time:
"
;
时间
Prompt2:
acceleratespeed:
加速度
Prompt3:
innitalspeed:
初始速度
DataforPrintf-Trap
PrintfFormat:
distance=%d\n"
输出格式,表示求出的路程按什么格式输出
PrintfFormat1:
theresultis:
%d,noconvention!
.align2;
表示下面采用字对齐
PrintPar:
.wordPrintfFormat
PrintValue:
.space4
.text
第一代码段,默认情况下代码段$CODE会加载到内存0x100地址处
.globalmain;
定义一个全局符号main,即该代码段的首地址
main:
***readtwopositiveintegernumbersintoR1andR2
addr1,r0,Prompt1;
将输入的数存入寄存器r1
jalInputUnsigned;
跳转到InputUnsigned子程序处读取输入的参数,同时将一条指令的地址存与r31中,即r31<
-pc+4
addr3,r0,r1;
由InputUnsigned返回的参数赋r3寄存器,此时r3存储的是时间
addr6,r0,0;
将0赋值给r6
sgtr7,r6,r3;
比较r3和r6大小
bnezr7,error;
r7为1则结束程序
addr1,r0,Prompt2;
jalInputUnsigned;
同上,跳转到InputUnsigned子程序
addr2,r0,r1;
由InputUnsigned返回的参数赋r2寄存器,此时r2存储的是加速度
addr1,r0,Prompt3;
jalInputUnsigned;
r3:
timer2:
addspeedr1:
innitalspeed
multr1,r1,r3;
时间乘以速度,并将之存入r1中。
r1<
--r1*r3
multr3,r3,r3;
时间的平方,并将之存入r3中。
r3<
--r3*r3
multr2,r2,r3;
加速度乘以时间的平方,并将之存入r2中。
addr4,r0,2;
将2存入r1中,r4<
--2
divr2,r2,r4;
除以2,r2<
--r2+r4
addr1,r1,r2;
两段路程相加,得出最终结果,r1<
--r1+r2
result:
输出结果
outputtheresult
swPrintValue,r1;
将整型寄存器r1中的内容存到PrintfValue地址单元中去
addir14,r0,PrintPar;
将PrintfPar的内容送到寄存器中去
trap5;
调用中断,格式化输出转化为标准输出
结束程序
trap0;
调用系统中断,0表示程序执行结束
4、如图7.4,输入数据为:
time:
3;
acceleratespeed:
4;
intial:
10;
结果distance是48,根据路程公式:
x=vt+1/2at^2;
可知结果是正确的。
图7-5实验数据结果图
5、因为程序的运行过程中,设置两个整型乘法器不能进行并行运算,所以2个乘法器对程序运行频率没什么提高,但是通过优化程序运行顺序,可以减少相关,提高流水线利用率。
6、提高程序执行效率
7、尽量减少和消除程序中出现的相关
观察程序的流水过程,对流水中出现的相关指令进行增删或者移位,使得相关能够减少或者消除,从而提高流水线的效率。
详细如下:
(1)distance.S文件中的
multr3,r3,r3
multr2,r2,r3
divr2,r2,r4
addr1,r1,r2
中的multr3,r3,r3multr2,r2,r3,我将它们分开,将后面一条指令的位置调整到后面,这样,程序运行可以减少一次相关。
修改如下:
addr4,r0,2
(2)INPUT.S文件中的lbur3,0(r2)
seqir5,r3,10
bnezr5,Finish
subir3,r3,48
multur1,r1,r4
addr1,r1,r3
addir2,r2,1
jLoop
中的seqir5,r3,10bnezr5,Finish,我将后面一条指令的位置调整到后面,这样可以使得下面一条指令省了一次推后读,节省了时间。
lbur3,0(r2)
bnezr5,Finish
addr1,r1,r3
(3)我还尝试了将其他指令的位置进行调动,或者是增删一些指令,使得程序中的相关尽量少,但是使得程序进入死循环或者是得到错误结果,所以仅做以上一些修改,稍微程序优化了。
8、程序流程图:
图7-4程序流程图
八、实验结论:
程序执行顺序,部件的个数都会对程序的执行产生影响;
为减少数据相关,应调整程序的执行顺序;
为减少控制相关,程序的跳转必须要在合适的位置;
为减少结构相关,器件的个数应该合理分配;
编写程序过程中,应尽量减少三种相关,以提高整体性能
很遗憾无法对浮点数进行计算
为符合实际需要,对于时间的输入判断是否小于0
九、总结及心得体会:
对流水线有了更深一层的认识;
熟悉了程序的运行环境WinDLX;
增强了运用所学知识解决实际问题的能力;
对各种类型的寄存器有了更深入的理解;
掌握并熟悉了指令相关性及其解决办法;
独立思考,认真思考,深入思考,而不是安慰自己已经花了很长时间;
已经熟悉了汇编语言的add操作,所以一开始不适应WinDLX的add需要三个寄存器的操作;
完成了基本要求;
下次实验前一定要尽早报告题目,要不然功亏一篑;
报告评分:
指导教师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 体系结构 实验报告 哈工程 实验 报告 工程
![提示](https://static.bdocx.com/images/bang_tan.gif)