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

院 系 专 业 年 级 课程名称 计算机系统结构 学 号 姓 名 指导教师 年 月 日年级班级学号专业计算机科学与技术姓名题目名称矩阵相乘题目内容1. 掌握DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。掌握调整DLX参数,如内存大小、功能单元个数、延迟,分析对程序运行的影响。2. 编写计算矩阵相乘的程序,掌握调试方法。实验结果与分析图一.运行结果使用4d来控制输出的齐实验结果与分析图二.寄存器图三.流水线实验结果与分析图四.内存代码图五.内存查看实验结果与分析图六.内存查看结果图七.内存修改实验结果与分析图八.内存修改结果图九.向量使用结果图十.未使用向量的结果实验结果与分析图十一.程序流程实验结果与分析图十二.算法设计图实验结果与分析实验结果分析 本次实验中,学会使用DLX软件,对于其汇编代码有一个整体上的认识。具体有如下几个小点(1)熟悉DLX的仿真硬件系统结构,包括寄存器、计算功能单元、指令系统、流水线。(2)熟悉DLX仿真软件的功能,包括主要的功能界面。(3)掌握DLX应用程序的编程和调试技术。(4)掌握DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术。(5)掌握调整DLX参数,如内存大小、功能单元个数、延迟,分析对程序运行的影响 通过编写矩阵相乘来检验掌握的程度,对与在其中出现的问题进行分析,和解决。能通过单步执行来调试程序,找出出错点和逻辑错误点,并加以改正。 在实验中,几个重点难点。首先是从主程序中跳Unsigned函数中,对于参数的传递要有一个清楚的认识。其次是,对于系统自陷trap要有一个认识,如trap 0是结束、trap 3是输入和trap 5是输出,当然也有传递的参数也是重点分别是r1和r14。 对于向量的使用也有一个初步的认识,当使用向量时,程序的流水线明显比不适用向量快的多,结果的截图也很清楚的说明了这个问题。程序代码.data ;* Prompts for ;输入提示部分A .space 64B .space 64C .space 64Prompt1 .asciiz 输入A矩阵的行Prompt2 .asciiz 输入A矩阵的列和B矩阵的列 Prompt3 .asciiz 输入B矩阵的列Prompt4 .asciiz 输入A矩阵元素rPrompt5 .asciiz 输入A矩阵元素 ;* Data for printf-Trap ;输出数据设置部分Printfat.asciiz d .align2PrintfPar.wordPrintfatPrintfValue .space4Printfat1.asciiz n .align2PrintfPar1.wordPrintfat1Printfat_1.asciiz n .align2PrintfPar_1.wordPrintfat_1PrintfValue1.space4Printfat2.asciiz 输出A矩阵n .align2PrintfPar2.wordPrintfat2PrintfValue2.space4Printfat3.asciiz 输出B矩阵n .align 2PrintfPar3.wordPrintfat3PrintfValue3.space4Printfat4.asciiz 输出C矩阵n .align2PrintfPar4.wordPrintfat4PrintfValue4.space4.text.globalmain程序代码main addi r1,r0,Prompt1 jal Unsigned movi2fp f1,r1 ;矩阵A的行数 addi r1,r0,Prompt2 jalUnsigned movi2fp f2,r1 ;矩阵A的列数,矩阵B的行数 addi r1,r0,Prompt3 jal Unsigned 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 Unsigned sb 0r2,r1 ;储存字节,读入元素 addi r2,r2,1 ;元素个数加一 sub r4,r4,1 ;总的矩阵元素个数r4减一 bnez r4,loop1 ;r4不为0时跳转重复输入 addi r10,r0,0 ;分别读出矩阵A的元素值 addi r2,r10,A ;指向A的首地址 sw PrintfValue2,r1 addir14,r0,PrintfPar2 trap 5 loopA lbu r1,0r2 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 swPrintfValue1,r1 addir14,r0,PrintfPar1 trap 5 sub r8,r8,1 ;矩阵A的行数r8减一 beqz r8,countiuB ;矩阵A的行数r8等于0时跳到countiuB movfp2i r6,f2程序代码j loopA ;否则继续loopA countiuB addir14,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 Unsigned sb 0r2,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的首地址 swPrintfValue3,r1 addir14,r0,PrintfPar3 trap 5 loopB lbu r1,0r2 swPrintfValue,r1 addi r14,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 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,r0,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当前行的第一个元素的索引 addi r7,r6,0 ;mov col to j(矩阵B某一列的某个元素的索引) addi r11,r0,0 ;temp0,矩阵C当前的元素值的初始化 addi r9,r5,1 ;r9-l1,r9代表矩阵A当前数组中的实际行号(r5的初值为0) movfp2i r1,f2 ;f2是矩阵A的列数 multu r9,r1,r9 ;p-n*l1,r9代表矩阵A当前行中最后一个元素在数组中的索引 calculate movi2fp f4,r10 movi2fp f9,r9 ltf f4,f9 ;compare i to pz(判断是否计算到当前行的最后一个元素) bfpf asign ;当前行列相乘完毕,得出结果矩阵C的一个元素(跳转赋值) addi r1,r10,A ;取矩阵A当前元素在内存区域中的地址 lbu r2,0r1 ;从r1所指向的内存单元中取出矩阵A当前的元素暂存在r2 addi r1,r7,B ;取矩阵B当前元素在内存区域中的地址 lbu r3,0r1 ;从r1所指向的内存单元中取出矩阵B当前的元素暂存在r3 multu r1,r2,r3 ;temp1-AiBj add r11,r11,r1 ;temp-temptemp1,累加到累加器 addi r10,r10,1 ;i,计算矩阵A当前行的下个元素的索引 movfp2i r1,f3 add r7,r7,r1 ;j-jk,计算矩阵B的当前列的下个元素的索引 j calculate 程序代码asign addi r1,r4,C ;r1表示矩阵C当前的地址 sb 0r1,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 movfp2i r12,f3 addi r2,r10,C sw PrintfValue4,r1 addir14,r0,PrintfPar_1 trap 5 addi r14,r0,PrintfPar4 trap 5 loop3 lbu r1,0r2 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心得体会成绩评定教师签名 年 月 日

计算机系统结构结构相关实验报告,计算机系统结构实验报告(中南民族大学).doc...相关推荐

  1. 计算机系统结构结构相关实验报告,计算机系统结构实验报告.doc

    电 子 科 技 大 学 实 验 报 告 学生姓名: 学 号: 一.实验室名称:计算机学院实验中心二.实验项目名称:计算机系统结构课程实验三.实验原理: 1. 由教师给出一个具有基本功能的Verilog ...

  2. 关于计算机的学术类论文,计算机类学术相关论文参考文献 计算机类学术核心期刊参考文献哪里找...

    [100个]关于计算机类学术相关论文参考文献汇总,作为大学生的毕业生应该明白了计算机类学术核心期刊参考文献哪里找,收集好参考文献后的计算机类学术论文写作起来会更轻松! 一.计算机类学术论文参考文献范文 ...

  3. 七年级计算机基本结构,七年级信息技术计算机基本组成和工作原理

    <七年级信息技术计算机基本组成和工作原理>由会员分享,可在线阅读,更多相关<七年级信息技术计算机基本组成和工作原理(19页珍藏版)>请在人人文库网上搜索. 1.第二章第二章 计 ...

  4. 计算机专业及相关专业目录,计算机相关专业目录

    计算机相关专业目录,供你公考报名考试所用. 计算机.会计及相关专业 本科计算机及相关专业 04015700 04034200 05034300 05049300 05047900 07010200 0 ...

  5. 计算机专业及相关专业目录,计算机及相关专业目录

    公务员.事业单位.警察.选调生 招考专业目录 计算机及相关专业 本科计算机及相关专业 04015700 教育信息技术 04034200 现代信息技术教育 05034300 出版与电脑编辑技术 0504 ...

  6. skt计算机仿真,结构疲劳寿命估算的计算机仿真 - Journal of Northeastern University.PDF...

    结构疲劳寿命估算的计算机仿真 - Journal of Northeastern University 1998年 6月 东 北 大 学 学 报 (自 然 科 学 版 ) Jun.1 9 9 8 第1 ...

  7. 计算机一级考试相关书,全国计算机一级考试考什么?怎么考?有书吗?

    全国计算机一级考试都考啥?怎么考?有书吗? 计算机一级考试考什么? 根据2018年最新考试科目设置,全国计算机一级考试主要开考:计算机基础及WPS Office应用.计算机基础及MS Office应用 ...

  8. 计算机系统结构结构相关名词解释,体系结构复习题

    名词解释: 1.计算机系统结构:计算机体系结构包括指令集结构.计算机组成和计算机 实现三个方面的内容. 2.CISC:CISC是指采用一整套计算机指令进行操作的计算机.而后又出现 了精简指令集计算机, ...

  9. 计算机与会计相关毕设,关于会计专业毕业设计开题报告

    会计专业毕业设计开题报告 课题名称 Excel图表在会计电算化中的应用方案设计 姓名 罗x 选题依据 一.选题来源.目的和意义 (1)来源:在实际工作当中,我发现Excel能够解决有关会计核算和管理的 ...

最新文章

  1. CI框架如何删除地址栏的 index.php
  2. 【 Notes 】WLLS Algorithm of TOA - Based Positioning (include the two - step WLS estimator)
  3. 6. 你必须掌握Dart中的数组
  4. css--calc()函数
  5. JavaScript方法——call和apply
  6. golang 的交叉编译
  7. mybatis 添加语句返回对象_mybatis的insert语句插入数据时的返回值的实现
  8. 【ClickHouse 技术系列】- ClickHouse 中的嵌套数据结构
  9. 训练日志 2019.7.26
  10. 显示用户上次访问时间
  11. Kwort Linux 3.5 RC1 发布
  12. 线性动力学问题(二)
  13. Android摄影App,摄影爱好者必备的Android摄影App推介
  14. php 类库 添加,如何在thinkphp5中添加自己的类库
  15. ICCV 2021 Oral | 新类别发现(Novel Class Discovery)的统一目标
  16. 京东云linux查看挂载磁盘,使用S3fs在Linux实例上挂载Bucket
  17. STM32H7高性能MCU系列 STM32H7A3NGH6 32-bit RISC内核
  18. 周 7 福利日:中奖名单公布
  19. WML语言基础-WML语言基础(WAP建站)
  20. chrome html导出pdf,使用Selenium实现HTML转PDF

热门文章

  1. java操作excel文件之系列一:《读取excel文件的内容保存到数据库》
  2. Java常用系统变量收集
  3. RHEL7.0 DNS服务配置
  4. ORACLE 11G 搭建dataguard详细步骤(所有操作总结)
  5. Android GridView的使用方法
  6. snmp在企业网中的简单应用
  7. thinkphp如何跨模块调用方法呢?
  8. 遵循Modbus协议通过Usb(Ch375)通信的上位机传输问题
  9. OpenWindow.document.write();
  10. 【隐私】大数据下的隐私威胁【转载】