体系结构 实验报告 哈工程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与技术学院《计算机体系结构》课程实验
学号:
班级:
专业:计算机科学与技术
学生姓名:
2017年5月7日
实验报告
1、双击WinDLX图标运行WinDLX。

装入测试程序之前,先初始化WinDLX 模拟器:点击File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。

然后点击窗口中的“确认”按钮即可。

2、选择File / Load Code or Data,按如下步骤操作,可将distance.s和input.s 这两个程序装入主存:
点击distance.s
点击select按钮
点击input.s
点击select按钮
点击load按钮
3、按F7键程序顺序执行观察6个子窗口的情况。

七、实验数据及结果分析:
1、先装入distance.s再转入input.s时,因为程序顺序执行,地址顺序符合程序执行顺序,程序能够正确执行;顺序相反时,因为input.s的地址高,而程序顺序执行到input.s时将没有正确的输入窗口,程序执行到输出结果时,也不会出现结果
2、程序中出现三个相关
图7-1
如图7-1因为下面两条指令,第二条指令要读r4而执行到此操作时第一条指令仍对r4进行操作,发生了数据相关
add r4,r0,2
div r2,r2,r4
图7-2
如图7-2 程序中出现了结构相关,硬件资源满足不了指令执行的要求,发生资源冲突时,将产生结构相关。

次程序代码段因加法器发生结构相关。

add r3,r0,r1
add r6,r0,0
图7-3
如图7-3程序中出现控制相关,当程序执行下面指令时,第二条指令出现跳转指令时,第一条指令还没有执行完,所以出现控制相关
addi r1,r0,Prompt
jal InputUnsigned
图7-4
3、
.data ;定义数据段,默认情况下数据段$DATA 会被加载到内存0x1000地址处
;***prompts for input ;提示输入语句,输入3个初始数据
Prompt1: .asciiz "time:" ;时间
Prompt2: .asciiz "accelerate speed:";加速度
Prompt3: .asciiz "innital speed:" ;初始速度
;Data for Printf-Trap
PrintfFormat: .asciiz "distance=%d\n" ;输出格式,表示求出
的路程按什么格式输出
;PrintfFormat1: .asciiz "the result is :%d ,no convention!" .align 2 ;表示下面采用字对齐PrintPar: .word PrintfFormat
PrintValue: .space 4
.text
;第一代码段,默认情况下代码段$CODE会加载到内存0x100地址处
.global main ;定义一个全局符号main,即该代码段的首地址main:
;***read two positive integer numbers into R1 and R2
add r1,r0,Prompt1 ;将输入的数存入寄存器r1
jal InputUnsigned ;跳转到InputUnsigned子程序处读取输入的
参数,同时将一条指令的地址存与r31中,即r31<-pc+4
add r3,r0,r1 ;由InputUnsigned 返回的参数赋r3寄存器,
此时r3存储的是时间
add r6,r0,0 ;将0赋值给r6
sgt r7,r6,r3 ;比较r3 和r6大小
bnez r7,error ;r7为1则结束程序
add r1,r0,Prompt2 ;将输入的数存入寄存器r1
jal InputUnsigned ;同上,跳转到InputUnsigned子程序
add r2,r0,r1 ;由InputUnsigned 返回的参数赋r2寄存器,此时r2存储的是加速度
add r1,r0,Prompt3 ;将输入的数存入寄存器r1
jal InputUnsigned ;同上,跳转到InputUnsigned子程序
;r3: time r2:add speed r1:innital speed
mult r1,r1,r3 ;时间乘以速度,并将之存入r1中。

r1<--r1*r3 mult r3,r3,r3 ;时间的平方,并将之存入r3中。

r3<--r3*r3
mult r2,r2,r3 ;加速度乘以时间的平方,并将之存入r2中。

add r4,r0,2 ;将2存入r1中,r4<--2
div r2,r2,r4 ;除以2,r2<--r2+r4
add r1,r1,r2 ;两段路程相加,得出最终结果,r1<--r1+r2
result: ;输出结果
;output the result
sw PrintValue,r1 ;将整型寄存器r1中的内容存到PrintfValue 地址单元中去
addi r14,r0,PrintPar ;将PrintfPar的内容送到寄存器中去
trap 5 ;调用中断,格式化输出转化为标准输出
;结束程序
trap 0 ;调用系统中断,0表示程序执行结束
4、如图7.4,输入数据为: time:3; accelerate speed:4; intial:10;
结果distance是48,根据路程公式:x=vt+1/2at^2;可知结果是正确的。

图7-5 实验数据结果图
5、因为程序的运行过程中,设置两个整型乘法器不能进行并行运算,所以2
个乘法器对程序运行频率没什么提高,但是通过优化程序运行顺序,可以减少相关,提高流水线利用率。

6、提高程序执行效率。

相关文档
最新文档