计算机体系结构报告Word文档下载推荐.docx
- 文档编号:17251875
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:12
- 大小:66.68KB
计算机体系结构报告Word文档下载推荐.docx
《计算机体系结构报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机体系结构报告Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
√
实
验
目
的
或
要
求
用DLX汇编语言编写矩阵乘程序Matrix.s(元素数据为浮点数),并对该程序做如下分析:
1观察程序中出现的数据相关、控制相关和结构相关现象,并指出程序中出现上述现象的指令;
2指出转移指令在转移成功和不成功时的流水线开销;
3分别在使用定向技术和不使用定向技术的两种情况下,输入同样的数据,利用Statistics窗口中的统计数字(总的周期数和暂停数),计算定向技术带来的加速比。
4通过DLX模拟器中的configuration窗口,将浮点运算的延迟改为8个时钟周期,重复观察并回答上述的①②③问题。
注:
为简单起见,可以固定矩阵的大小,如20*20,可以不赋初值,不输出计算结果,目的是考察矩阵乘循环的指令序列。
原
理
(
算
法
流
程
图
者
含
注
释
源
代
码
)
输入函数部分
.data
;
***DataforRead-Trap
ReadBuffer:
.space80
ReadPar:
.word0,ReadBuffer,80
***DataforPrintf-Trap
PrintfPar:
.space4
SaveR2:
.space4
SaveR3:
SaveR4:
SaveR5:
.text
.globalInputUnsigned
InputUnsigned:
***saveregistercontents
swSaveR2,r2
swSaveR3,r3
swSaveR4,r4
swSaveR5,r5
***Prompt
swPrintfPar,r1
addir14,r0,PrintfPar
trap5
***callTrap-3toreadline
addir14,r0,ReadPar
trap3
***determinevalue
addir2,r0,ReadBuffer
addir1,r0,0
addir4,r0,10;
Decimalsystem
Loop:
***readsdigitstoendofline
lbur3,0(r2)
seqir5,r3,10;
LF->
Exit
bnezr5,Finish
subir3,r3,48;
?
multur1,r1,r4;
Shiftdecimal
addr1,r1,r3
addir2,r2,1;
incrementpointer
jLoop
Finish:
***restoreoldregistercontents
lwr2,SaveR2
lwr3,SaveR3
lwr4,SaveR4
lwr5,SaveR5
jrr31;
Return
矩阵相乘部分
;
本程序用arrayA,arrayB长度为字(4byte)
R10表示arrayA的行数i
R11表示arrayA的列数k
R12表示arrayB的列数j
R20表示arrayA的元素个数(InputUnsigned修改了r13,r14,r31)
R21表示arrayB的元素个数
R22表示arrayC的元素个数
Prompt1:
.asciiz"
InputrowofA(<
=16):
"
Prompt2:
inputcolonmofAorrowofB(<
Prompt3:
inputcolonmofB(<
Prompt4:
.asciiz"
PleaseInputdataofVectorA:
\n"
Prompt5:
PleaseInputdataofBVector:
Prompt6:
VectorAis:
Prompt7:
VectorBis:
Prompt8:
VectorCis:
Format:
%3d"
.align2
Printf:
.wordFormat
Value:
.space4
LnLr:
arrayA:
.space256*4
arrayB:
arrayC:
.space256*4
.text
.globalmain
main:
addir1,r0,Prompt1
jalInputUnsigned;
输入第一个矩阵的行数
addr10,r1,r0;
保存读入结果到r10
addir1,r0,Prompt2
输入第一个矩阵的列数
addr11,r1,r0;
保存读入结果到r11
addir1,r0,Prompt3
输入第二个矩阵的列数
addr12,r1,r0;
保存到r12中
;
以下代码用于输入第一个矩阵的数据
multur20,r10,r11
multur21,r11,r12
multur22,r10,r12
开始输入A
addir1,r0,Prompt4
addir2,r0,0;
r2置0
addir3,r0,4
multur3,r20,r3;
r3中放置元素个数*4(字长)
InputA:
输入第一个矩阵的数据
swarrayA(r2),r1
addir2,r2,4;
加一个字长
subr1,r3,r2
bnezr1,InputA;
输入没有完成则继续
开始输入B
addir1,r0,Prompt5
multur3,r21,r3;
InputB:
swarrayB(r2),r1
bnezr1,InputB;
输出A
addir1,r0,Prompt6
swValue,r1
addir14,r0,Value
trap5
addir3,r0,4;
r3一值为4,用于计算偏移地址
addir7,r0,0;
用r7来表示i
OutputA:
addir9,r0,0;
用于表示k
OutputAI:
计算出当前A的元素下标.A[R7*R11+R9]
multur1,r7,r11
addr1,r1,r9
multur1,r1,r3;
计算偏移地址
lwr4,arrayA(r1);
r4=A[R7*R11+R9]
swValue,r4
addir14,r0,Printf
trap5
addir9,r9,1;
相当于k++
subr1,r11,r9;
r1=r11-r9
bnezr1,OutputAI
换行
addir1,r0,LnLr
addir7,r7,1;
相当于i++
subr1,r10,r7;
r1=r10-r7
bnezr1,OutputA
输出B
addir1,r0,Prompt7
addir9,r0,0;
OutputB:
addir8,r0,0;
用r8来表示j
OutputBI:
multur1,r9,r12
addr1,r1,r8
lwr5,arrayB(r1);
r5=B[R9*R12+R8]
swValue,r5
addir8,r8,1;
相当于j++
subr1,r12,r8;
r1=r12-r8
bnezr1,OutputBI
addir9,r9,1;
subr1,r11,r9;
bnezr1,OutputB
开始进行矩阵的乘法
ForI:
addir8,r0,0;
ForJ:
addir6,r0,0;
r6=0用来保存乘的结果
ForK:
;
multur1,r7,r11
addr1,r1,r9
multur1,r1,r3;
lwr4,arrayA(r1);
计算出当前B的元素下标.B[R9*R12+R8]
multur1,r9,r12
addr1,r1,r8
lwr5,arrayB(r1);
multur2,r5,r4;
B[R9*R12+R8]*A[R7*R11+R9]
addr6,r6,r2;
r6+=r2累积在r6之中
addir9,r9,1;
subr1,r11,r9;
bnezr1,ForK
计算出当前B的元素下标.B[R7*R12+R8]
multur1,r7,r12;
swarrayC(r1),r6;
保存结果
bnezr1,ForJ
bnezr1,ForI
输出C
addir1,r0,Prompt8
OutputC:
OutputCI:
lwr6,arrayC(r1);
swValue,r6
bnezr1,OutputCI
bnezr1,OutputC
finish:
trap0
实验结果
程序中出现的数据相关、控制相关和结构相关现象
使用定向技术和不使用定向技术的两种情况下,输入同样的数据,利用Statistics窗口中的统计数字(总的周期数和暂停数)分别如下:
实验心得
教师签名:
年月日
成
绩
评
定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机体系结构 报告