欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    计算机系统结构报告_用DLX编写矩阵相乘.doc

    • 资源ID:17879       资源大小:245.50KB        全文页数:9页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机系统结构报告_用DLX编写矩阵相乘.doc

    年级班级  学号 专业 姓名题目名称用DLX汇编语言编写矩阵相乘程序题目内容1、掌握DLX应用程序的编程和调试技术。掌握DLX的流水线运行分析.包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。掌握调整DLX参数.如内存大小、功能单元个数、延迟.分析对程序运行的影响。2、编写计算矩阵相乘的程序.掌握调试方法。实验结果与分析实验结果:(1) 先输入矩阵A和矩阵B的行数和列数.再输入矩阵A的各元素数值.显示矩阵A;再输入矩阵B的各元素数值.显示矩阵B;最后进行矩阵相乘.输出结果矩阵C。<2>各矩阵元素均赋初值为0。实验结果与分析<3>显示流水线的部分时空图。实验结果分析:通过调用所编写的矩阵相乘的DLX汇编程序和input.s程序.运行WINDLX环境平台.加载好所需项后.根据提示输入两个矩阵的行和列的值及矩阵的各行各列所对应的元素数值.并显示要进行计算的两个矩阵.以便进行矩阵相乘.运行结束后自动显示得出矩阵的结果.本次实验可以重复运行进行矩阵相乘。实验同时亦可查看流水线分布及DLX的流水线运行分析.包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。 通过Prompt语句显示提示语句.输入所需数据.其计算结果一个一个地存放于内存中.利用PrintfPar语句输出结果。利用寄存器存放输入的矩阵元素和计算的结果.并将其在整形与浮点类型间进行转化。写不完时.可另加附页。程序代码程序代码程序代码程序代码程序代码;*multiply an array to an array *;* *;-; Program begins at symbol main; requires module INPUT; Read two arrays, calculate the multiplition of two arrays ; and write the result to stdout;-.data;* Prompts for input ;输入提示部分dat1: .space 64dat2: .space 64result: .space 64Prompt1:.asciiz "Input the martrixA line:"Prompt2:.asciiz "Input the martrixA column and the martrixB line: "Prompt3: .asciiz "Input the martrixB column:"Prompt4: .asciiz "Input the martrixA's number:"Prompt5: .asciiz "Input the martrixB's number:"Prompt6: .asciiz "Do you want again <no=0>:"* Data for printf-Trap ;输出数据设置部分PrintfFormat:.asciiz "%d ".align2PrintfPar:.wordPrintfFormatPrintfValue:.space4PrintfFormat1:.asciiz "n " .align2PrintfPar1:.wordPrintfFormat1PrintfValue1:.space4PrintfFormat2:.asciiz "Output the martrixA:n ".align2PrintfPar2:.wordPrintfFormat2PrintfValue2:.space4PrintfFormat3:.asciiz "Output the martrixB:n ".align2PrintfPar3:.wordPrintfFormat3PrintfValue3:.space4PrintfFormat4:.asciiz "Output the martrixC:n ".align2PrintfPar4:.wordPrintfFormat4PrintfValue4:.space4.text.globalmainmain:addir1,r0,Prompt1jalInputUnsigned movi2fp f1,r1 ;矩阵A的行数 addir1,r0,Prompt2jalInputUnsigned movi2fp f2,r1 ;矩阵A的列数.矩阵B的行数 addi r1,r0,Prompt3 jal InputUnsigned movi2fp f3,r1 ;矩阵B的列数 movfp2i r8,f1 movfp2i r6,f2 multu r4,r6,r8 ;总的矩阵A的元素个数r4 addi r2,r10,dat1 ;指向A的首地址 loop1: add r1,r0,Prompt4 ;分别读入矩阵A的元素值 jalInputUnsigned sb 0<r2>,r1 ;储存字节.读入元素 addi r2,r2,1 ;元素个数加一 sub r4,r4,1 ;总的矩阵元素个数r4减一 bnez r4,loop1 ;r4不为0时跳转重复输入addi r10,r0,0 ;分别读出矩阵A的元素值addi r2,r10,dat1 ;指向A的首地址swPrintfValue2,r1 addir14,r0,PrintfPar2 trap 5 loopA: lbu r1,0<r2> swPrintfValue,r1 addir14,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: swPrintfValue1,r1addir14,r0,PrintfPar1 trap 5 sub r8,r8,1 ;矩阵A的行数r8减一 beqz r8,countiuB ;矩阵A的行数r8等于0时跳到countiuB movfp2i r6,f2 j loopA ;否则继续loopA countiuB: movfp2i r6,f2 movfp2i r12,f3 addi r10,r0,0 multu r4,r6,r12 ;总的矩阵B的元素个数r4 addi r2,r10,dat2 ;指向B的首地址 loop2: addi r1,r0,Prompt5 ;分别读入矩阵B的元素值 jalInputUnsigned 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,dat2 ;指向B的首地址 swPrintfValue3,r1addir14,r0,PrintfPar3 trap 5 loopB: lbu r1,0<r2> swPrintfValue,r1addir14,r0,PrintfPar ;换行 trap 5 addi r2,r2,1 ;元素个数加一 sub r12,r12,1 ;矩阵B的列数r12减一 beqz r12,outputB ;矩阵B的列数r12等于0时跳到outputB j loopB ;否则继续loopB outputB: swPrintfValue1,r1addir14,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,r0,0 ;r 初始化矩阵C的偏移量 addi r5,r0,0 ;矩阵A当前被扫描的行号 line: movi2fp f4,r5 ;判断是否扫描完 ltf f4,f1 ;f4>f1跳转矩阵A的行是否扫描完 bfpf finish ;是.则跳转结束程序 addi r6,r0,0 ;col.r6表示当前B矩阵的列号 column: movi2fp f4,r6 ltf f4,f3 ;colf3<f4.矩阵B的列是否扫描完bfpf leveladd ;是.则跳到矩阵a的下一行 movfp2i r1,f2 multu r10,r5,r1 ;i<-l*n.r10表示矩阵A当前行的第一个元素的索引 addi 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 ;当前行列相乘完毕.得出结果矩阵C的一个元素跳转赋值 addi r1,r10,dat1 ;取矩阵A当前元素在内存区域中的地址 lbu r2,0<r1> ;从r1所指向的内存单元中取出矩阵A当前的元素暂存在r2 addi r1,r7,dat2 ;取矩阵B当前元素在内存区域中的地址 lbu r3,0<r1> ;从r1所指向的内存单元中取出矩阵B当前的元素暂存在r3 multu r1,r2,r3 ;temp1<-dat1i+dat2j add r11,r11,r1 ;temp<-temp+temp1.累加到累加器 addi r10,r10,1 ;i+.计算矩阵A当前行的下个元素的索引 movfp2i r1,f3 add r7,r7,r1 ;j<-j+k.计算矩阵B的当前列的下个元素的索引 j calculate asign:addi r1,r4,result ;r1表示矩阵C当前的地址 sb 0<r1>,r11 ;store result.把新计算出来的元素放入当前内存单元 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 movfp2i r12,f3 addi r2,r10,result swPrintfValue4,r1addir14,r0,PrintfPar4 trap 5 loop3: lbu r1,0<r2> swPrintfValue,r1addir14,r0,PrintfPar trap 5 addi r2,r2,1 sub r12,r12,1 beqz r12,outputC j loop3 outputC: swPrintfValue1,r1addir14,r0,PrintfPar1 trap 5 sub r8,r8,1 beqz r8,choice movfp2i r12,f3 j loop3 ;* end choice: add r1,r0,Prompt6 ;是否重复本次运行操作 jalInputUnsigned beqz r1,end ;若为0则结束运行 j main ;否则则重复执行end: trap0心得体会通过本次系统结构实验.我对DLX的流水线运行分析.包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术等内容有了很好的掌握;知道其运行情况.能够根据程序段分析其运行位置及存储情况.会用内存地址等查看所输入数值的存储.在寄存器中找到相应输入数值.理解其运行断点的含义;我还会观察程序中出现的数据相关、控制相关和结构相关现象.并能找出程序中出现上述现象的指令;我对DLX指令的语法和语义也有一定了解.会编写简单程序解决基本问题.对课堂所学知识有了更深入的理解.在以后的学习中要勤于动手.将所学知识在实践中运用.以便理解更清晰、透彻。成绩评定教师签名: 年 月 日9 / 9

    注意事项

    本文(计算机系统结构报告_用DLX编写矩阵相乘.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开