计算机体系结构(实验 3 使用 MIPS 指令实现求两个数组的点积 )
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