ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:715.80KB ,
资源ID:5158594      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5158594.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机系统结构实验报告中南民族大学.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机系统结构实验报告中南民族大学.docx

1、计算机系统结构实验报告中南民族大学计算机系统结构课程实验报告院 系: 专 业: 年 级: 课程名称: 计算机系统结构 学 号: 姓 名: 指导教师: 年 月 日年级班级学号专业计算机科学与技术姓名题目名称矩阵相乘题目内容1. 掌握DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。掌握调整DLX参数,如内存大小、功能单元个数、延迟,分析对程序运行的影响。2. 编写计算矩阵相乘的程序,掌握调试方法。实验结果与分析图一.运行结果(使用%4d来控制输出的齐)实验结果与分析图二.寄存器图三.流水线实验结果与分析图四.内存代码图五.内存查看实验结果与分

2、析图六.内存查看结果图七.内存修改实验结果与分析图八.内存修改结果图九.向量使用结果图十.未使用向量的结果实验结果与分析图十一.程序流程实验结果与分析图十二.算法设计图实验结果与分析实验结果分析: 本次实验中,学会使用DLX软件,对于其汇编代码有一个整体上的认识。具体有如下几个小点:(1)熟悉DLX的仿真硬件系统结构,包括寄存器、计算功能单元、指令系统、流水线。(2)熟悉DLX仿真软件的功能,包括主要的功能界面。(3)掌握DLX应用程序的编程和调试技术。(4)掌握DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。(5)掌握调整DLX参数,如

3、内存大小、功能单元个数、延迟,分析对程序运行的影响 通过编写矩阵相乘来检验掌握的程度,对与在其中出现的问题进行分析,和解决。能通过单步执行来调试程序,找出出错点和逻辑错误点,并加以改正。 在实验中,几个重点难点。首先是从主程序中跳InputUnsigned函数中,对于参数的传递要有一个清楚的认识。其次是,对于系统自陷trap要有一个认识,如trap 0是结束、trap 3是输入和trap 5是输出,当然也有传递的参数也是重点分别是r1和r14。 对于向量的使用也有一个初步的认识,当使用向量时,程序的流水线明显比不适用向量快的多,结果的截图也很清楚的说明了这个问题。程序代码.data ;* Pr

4、ompts for input ;输入提示部分A: .space 64B: .space 64C: .space 64Prompt1: .asciiz 输入A矩阵的行:Prompt2: .asciiz 输入A矩阵的列和B矩阵的列: Prompt3: .asciiz 输入B矩阵的列:Prompt4: .asciiz 输入A矩阵元素r:Prompt5: .asciiz 输入A矩阵元素: ;* Data for printf-Trap ;输出数据设置部分PrintfFormat: .asciiz %d .align 2PrintfPar: .word PrintfFormatPrintfValue:

5、 .space 4PrintfFormat1: .asciiz n .align 2PrintfPar1: .word PrintfFormat1PrintfFormat_1: .asciiz n .align 2PrintfPar_1: .word PrintfFormat_1PrintfValue1: .space 4PrintfFormat2: .asciiz 输出A矩阵:n .align 2PrintfPar2: .word PrintfFormat2PrintfValue2: .space 4PrintfFormat3: .asciiz 输出B矩阵:n .align 2PrintfP

6、ar3: .word PrintfFormat3PrintfValue3: .space 4PrintfFormat4: .asciiz 输出C矩阵:n .align 2PrintfPar4: .word PrintfFormat4PrintfValue4: .space 4 .text .global main程序代码main: addi r1,r0,Prompt1 jal InputUnsigned movi2fp f1,r1 ;矩阵A的行数 addi r1,r0,Prompt2 jal InputUnsigned movi2fp f2,r1 ;矩阵A的列数,矩阵B的行数 addi r1,

7、r0,Prompt3 jal InputUnsigned movi2fp f3,r1 ;矩阵B的列数 movfp2i r8,f1 movfp2i r6,f2 multu r4,r6,r8 ;总的矩阵A的元素个数r4 addi r2,r10,A ;指向A的首地址 loop1: add r1,r0,Prompt4 ;分别读入矩阵A的元素值 jal InputUnsigned sb 0(r2),r1 ;储存字节,读入元素 addi r2,r2,1 ;元素个数加一 sub r4,r4,1 ;总的矩阵元素个数r4减一 bnez r4,loop1 ;r4不为0时跳转重复输入 addi r10,r0,0 ;

8、分别读出矩阵A的元素值 addi r2,r10,A ;指向A的首地址 sw PrintfValue2,r1 addi r14,r0,PrintfPar2 trap 5 loopA: lbu r1,0(r2) sw PrintfValue,r1 addi r14,r0,PrintfPar ;换行 trap 5 addi r2,r2,1 ;元素个数加一 sub r6,r6,1 ;矩阵A的列数r6减一 beqz r6,outputA ;矩阵A的列数r6等于0时跳到outputA j loopA ;否则继续loopA outputA: sw PrintfValue1,r1 addi r14,r0,Pr

9、intfPar1 trap 5 sub r8,r8,1 ;矩阵A的行数r8减一 beqz r8,countiuB ;矩阵A的行数r8等于0时跳到countiuB movfp2i r6,f2程序代码j loopA ;否则继续loopA countiuB: addi r14,r0,PrintfPar_1 trap 5 movfp2i r6,f2 movfp2i r12,f3 addi r10,r0,0 multu r4,r6,r12 ;总的矩阵B的元素个数r4 addi r2,r10,B ;指向B的首地址 loop2: addi r1,r0,Prompt5 ;分别读入矩阵B的元素值 jal Inp

10、utUnsigned sb 0(r2),r1 ;储存字节,读入元素 addi r2,r2,1 ;元素个数加一 sub r4,r4,1 ;总的矩阵元素个数r4减一 bnez r4,loop2 ;r4不为0时跳转重复输入 addi r10,r0,0 ;分别读出矩阵B的元素值 addi r2,r10,B ;指向B的首地址 sw PrintfValue3,r1 addi r14,r0,PrintfPar3 trap 5 loopB: lbu r1,0(r2) sw PrintfValue,r1 addi r14,r0,PrintfPar ;换行 trap 5 addi r2,r2,1 ;元素个数加一

11、sub r12,r12,1 ;矩阵B的列数r12减一 beqz r12,outputB ;矩阵B的列数r12等于0时跳到outputB j loopB ;否则继续loopB outputB: sw PrintfValue1,r1 addi r14,r0,PrintfPar1 trap 5 sub r6,r6,1 ;矩阵B的行数r6减一 beqz r6,countiue ;矩阵B的行数r6等于0时跳到countiu movfp2i r12,f3 j loopB ;否则继续loopB程序代码countiue: addi r11,r0,0 ;temp,表示矩阵C的一个元素的累加器 addi r4,r

12、0,0 ;r 初始化矩阵C的偏移量 addi r5,r0,0 ;矩阵A当前被扫描的行号 line: movi2fp f4,r5 ;判断是否扫描完 ltf f4,f1 ;f4f1跳转(矩阵A的行是否扫描完) bfpf finish ;是,则跳转结束程序 addi r6,r0,0 ;col,r6表示当前B矩阵的列号 column: movi2fp f4,r6 ltf f4,f3 ;col(f3)f4,矩阵B的列是否扫描完 bfpf leveladd ;是,则跳到矩阵A的下一行 movfp2i r1,f2 multu r10,r5,r1 ;i-l*n,r10表示矩阵A当前行的第一个元素的索引 add

13、i r7,r6,0 ;mov col to j(矩阵B某一列的某个元素的索引) addi r11,r0,0 ;temp=0,矩阵C当前的元素值的初始化 addi r9,r5,1 ;r9-l+1,r9代表矩阵A当前数组中的实际行号(r5的初值为0) movfp2i r1,f2 ;f2是矩阵A的列数 multu r9,r1,r9 ;p-n*(l+1),r9代表矩阵A当前行中最后一个元素在数组中的索引 calculate: movi2fp f4,r10 movi2fp f9,r9 ltf f4,f9 ;compare i to pz(判断是否计算到当前行的最后一个元素) bfpf asign ;当前

14、行列相乘完毕,得出结果矩阵C的一个元素(跳转赋值) addi r1,r10,A ;取矩阵A当前元素在内存区域中的地址 lbu r2,0(r1) ;从r1所指向的内存单元中取出矩阵A当前的元素暂存在r2 addi r1,r7,B ;取矩阵B当前元素在内存区域中的地址 lbu r3,0(r1) ;从r1所指向的内存单元中取出矩阵B当前的元素暂存在r3 multu r1,r2,r3 ;temp1-Ai+Bj add r11,r11,r1 ;temp-temp+temp1,累加到累加器 addi r10,r10,1 ;i+,计算矩阵A当前行的下个元素的索引 movfp2i r1,f3 add r7,r

15、7,r1 ;j-j+k,计算矩阵B的当前列的下个元素的索引 j calculate 程序代码asign: addi r1,r4,C ;r1表示矩阵C当前的地址 sb 0(r1),r11 ;store C,把新计算出来的元素放入当前内存单元 addi r4,r4,1 ;赋值完一个元素,偏移量自增1 addi r6,r6,1 ;矩阵B的当前列数自增1 j column ;矩阵B新的一列开始 leveladd: addi r5,r5,1 ;矩阵A当前行自增1 j line ;矩阵A新的一行开始 finish: addi r10,r0,0 ;分别读出矩阵C的元素值 movfp2i r8,f1 movf

16、p2i r12,f3 addi r2,r10,C sw PrintfValue4,r1 addi r14,r0,PrintfPar_1 trap 5 addi r14,r0,PrintfPar4 trap 5 loop3: lbu r1,0(r2) sw PrintfValue,r1 addi r14,r0,PrintfPar trap 5 addi r2,r2,1 sub r12,r12,1 beqz r12,outputC j loop3 outputC: sw PrintfValue1,r1 addi r14,r0,PrintfPar1 trap 5 sub r8,r8,1 beqz r8,end movfp2i r12,f3 j loop3 ;* end end: trap 0心得体会成绩评定教师签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1