下载此文档

北邮大三计算机体系结构实验三DLX处理器程序设计.docx


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
该【北邮大三计算机体系结构实验三DLX处理器程序设计 】是由【飞行的大米】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【北邮大三计算机体系结构实验三DLX处理器程序设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验三DLX办理器程序设计
实验目的
学****简单编译优化方法,察看采用编译优化方法所带来的性能的提高。
实验原理
采用静态调换方法重排指令序列,减少相关,优化程序。
3、实验内容和要求
自编一段汇编代码,达成一维向量加法运算,并输出结果。察看程序中出现的数据/控制/结构相关。〔注:使用一维数组表示一维向量。〕

1、向量加法设计源代码
.data
VectorLength:
.word16
Vector1:
.word
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
Vector2:
.word
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;声明向量长度
以及声明向量
1、2
Printf1:
.asciiz
"Vector="
Printf2:
.asciiz
"%f"
.align
2
PrintPrompt:.wordPrintf1
PrintPar:
.word
Printf2
Result:
.space
4;存放打印数据的空间申请
.text
main:
addi
r14,r0,PrintPrompt
trap
5
lw
r20,VectorLength
addi
r2,r0,0
Loop:
ld
f10,Vector1(r2)
ld
f12,Vector2(r2)
;循环体中读入向量
cvti2d
f0,f10
cvti2d
f2,f12
addd
f4,f2,f0
;加法运算
Finish:;Finish,writeresultintostdout
sd
Result,f4
addi
r14,r0,PrintPar
trap
5
;系统中止,输出结果
addi
r2,r2,4
subi
r20,r20,1
bnez
r20,Loop
文档
;End
trap0
2、运行结果

1〕察看程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。
%的数据相关。当对当前指令的操作数存放器进行操作的时候,前几条指令的运算结果还未写回结果存放器,由此产生数据相关。
文档
没有产生结构相关。
%的控制相关。系统按照预测成功来执行指令,执行一条指令后马上将其下一条指令trap读进来。
〔2〕考察增加浮点运算部件对性能的影响。
1个浮点运算部件3个浮点运算部件
文档
同一段代码执行相同步,但是经过对照发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响,可能是由于该程序不存在争用浮点运算部件资源的情况
3〕考察增加forward部件对性能的影响。
不使用forward部件使用forward部件
文档
使用forward部件之后执行相同的代码用的时钟周期比不使用forward部件少了大体100个时钟周期,由于没有结构相关,所以使用forward部件主要使得RAW相关显然减少了,占总的时钟周期比率也减少了,对控制相关没有什么影响。
总之,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能获得很大的改进。
4〕察看转移指令在转移成功和转移不可功时候的流水线开销。
在本次实验中转移成功的几率比较大,进行16次转移只有一次转移不可功的,
因为系统按照预测成功来执行指令,当判断转移不可功时,系统对trap指令进
行的操作被全部作废,转而去执行跳转到的指令。

1、双精度浮点加法求和源代码
文档
.data
;初始化两个用于相加的一维向量〔双精度浮点数〕
,向量长度为20
a:
.double
,
,
,
,
,
,
,
,
,
,
,,,,,,,,,
b:
.double
,
,
,
,
,
,
,
,
,
,
,,,,,,,,,
PrintfFormat:.asciiz"Theresultis\n\n%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\n\n"
.align
2
PrintfPar:
.word
PrintfFormat
r:
.space
200
;r为保存相加结果的向量空间
.text
.globalmain
main:
addir1,r0,0
;r1计数相加的次数
adduir4,r0,8
;r4为常数8
loop:
;循环计算向量相加结果
subir2,r1,20
;r1=20时,跳转到finish
beqzr2,finish
multur3,r1,r4;r3为当前分量有对于向量基址的偏移
(每个分量占8B)
ldf0,a(r3);取a中第r1个分量
ldf2,b(r3);取b中第r1个分量
adddf4,f0,f2
;相加结果放在f4中
sdr(r3),f4;将相加结果放入结果向量
r中
addir1,r1,1
;下一分量
jloop
finish:;输出向量相加的结果
addir14,r0,PrintfPar
trap5
2、运行结果:
文档

1〕察看程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。
%的数据相关。当对当前指令的操作数存放器进行操作的时候,前几条指令的运算结果还未写回结果存放器,由此产生数据相关。产生数据相关的指令主要有:
addir1,r0,0
subir2,r1,20
subir2,r1,20beqzr2,finish
multur3,r1,r4ldf0,a(r3)
ldf2,b(r3)
adddf4,f0,f2
文档
无结构相关
%的控制相关。系统按照预测成功来执行指令,执行一条指令后马上将其下一条指令trap读进来。。
〔2〕考察增加浮点运算部件对性能的影响。
1个浮点运算部件3个浮点运算部件
同一段代码执行相同步,但是经过对照发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响,可能是由于该程序函数中没有连续的浮点运算指令。
〔3〕考察增加forward部件对性能的影响。
没有forward部件有forward部件
文档
使用forward部件之后执行相同的代码用的时钟周期比不使用forward部件少了大体122个时钟周期,使用forward部件使得RAW相关显然减少了,流水线的性能获得很大的改进。
4〕察看转移指令在转移成功和转移不可功时候的流水线开销。
该转移指令不可功的情况较多,21次预测中只有1次转移成功,所以预测序次取对流水线的性能是有利的。
6、实验总结
本次实验主若是向量求和运算,在本次实验我设计了两个局部,首先是整数向量的加法,整数向量加法的实验进行成功后才在从前实验的基础上略作更正,进行了的双精度浮点加法求和的实验。本次实验没有输入,是直接对固定在代码中的数据进行运算,运算达成后直接输出结果。
编程中遇到的一些问题:在由整形改为双精度浮点运算的时候对双精度运算指
文档
令不知道怎么来表记,此后查到所有涉及到double型数据的运算指令,指令代码都要加上d来说明,否那么编译是不经过的。
经过本次自己编写汇编程序对浮点数的操作有了更深入的认识,也学会了WINDLX中浮点存放器和浮点状态存放器的设置和使用。熟悉了双精度浮点运算
的流水线操作过程,以及数据相关,结构相关,控制相关,forward部件对于双精度浮点运算流水线的影响。
文档

北邮大三计算机体系结构实验三DLX处理器程序设计 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人飞行的大米
  • 文件大小619 KB
  • 时间2022-12-07