当前位置: 移动技术网 > IT编程>开发语言>Java > 计算机体系结构(实验 3 使用 MIPS 指令实现求两个数组的点积 )

计算机体系结构(实验 3 使用 MIPS 指令实现求两个数组的点积 )

2020年07月15日  | 移动技术网IT编程  | 我要评论

1.实验目的

(1)通过实验熟悉实验 1 和实验 2 的内容
(2)增强汇编语言编程能力
(3)学会使用模拟器中的定向功能进行优化
(4)了解对代码进行优化的方法

(2)实验平台

本系统必须在32位机下运行,请自行下载虚拟机安装
实验平台采用指令级和流水线操作级模拟器 MIPSsim。

(3)实验步骤

(1)自行编写一个计算两个向量点积的汇编程序,该程序要求可以实现求两个向量点
积计算后的结果。
向量的点积:假设有两个 n 维向量 a、b,则 a 与 b 的点积为:
两个向量元素使用数组进行数据存储,要求向量的维度不得小于 10
(2)启动 MIPSsim。
(3)载入自己编写的程序,观察流水线输出结果。
(4)使用定向功能再次执行代码,与刚才执行结果进行比较,观察执行效率的不同。
(5)采用静态调度方法重排指令序列,减少相关,优化程序
(6)对优化后的程序使用定向功能执行,与刚才执行结果进行比较,观察执行效率的
不同。
注意:不要使用浮点指令及浮点寄存器!!
使用 TEQ $r0 $r0 结束程序!!
4.实验原理
本次实验通过MIPS语句实现对应的功能,通过代码在指令级和流水线操作级模拟器MIPSsim上执行,根据加载的文档代码中对应操作的通用寄存器,来观察执行的结果是否正确;然后通过观察统计一栏中汇总的执行周期总数,来判断优化和定向前后执行的效率高低,并判断静态调度的情况。

(4)实验原理

本次实验通过MIPS语句实现对应的功能,通过代码在指令级和流水线操作级模拟器MIPSsim上执行,根据加载的文档代码中对应操作的通用寄存器,来观察执行的结果是否正确;然后通过观察统计一栏中汇总的执行周期总数,来判断优化和定向前后执行的效率高低,并判断静态调度的情况。


(5)源代码

.text main: 
ADDIU $r1,$r0,array1
 ADDIU $r2,$r0,array2 
ADDIU $r3,$r0,10 
ADDIU $r7,$r0,0
 loop: LW $r4,0($r1) 
LW $r5,0($r2) 
MUL $r6,$r4,$r5 
ADD $r7,$r7,$r6   #r7存放的是点积结果
 ADDI $r1,$r1,4
 ADDI $r2,$r2,4 
ADDI $r3,$r3,-1
 BGTZ $r3,loop
 TEQ $r0,$r0

  .data 
array1: .word 3,4,5,6,7,8,9 
array2: .word 3,4,5,6,7,8,9

在这里插入图片描述
采用静态调度方法重排指令序列,减少相关,优化程序 
源代码

.text main: 
ADDIU $r1,$r0,array1 
ADDIU $r2,$r0,array2 
ADDIU $r3,$r0,10 
ADDIU $r7,$r0,0 
loop: 
LW $r4,0($r1)
 LW $r5,0($r2)
 MUL $r6,$r4,$r5
 ADDI $r1,$r1,4 
ADDI $r2,$r2,4 
ADDI $r3,$r3,-1 
ADD $r7,$r7,$r6      #此处进行了优化
 BGTZ $r3,loop 
TEQ $r0,$r0 
 .data 
array1: .word 3,4,5,6,7,8,9 
array2: .word 3,4,5,6,7,8,9

在这里插入图片描述

本文地址:https://blog.csdn.net/qq_43587354/article/details/107332160

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网