没有合适的资源?快使用搜索试试~ 我知道了~
201821195_孙淼1
需积分: 0 4 下载量 26 浏览量
2022-08-03
13:23:30
上传
评论
收藏 4.82MB PDF 举报
温馨提示
试读
84页
1. 实验内容 1. 用 WinMIPS64 模拟器执行下列三个程序(任选一个): 2.用 MIPS64 汇编语言编写代码文件*.s,程序中应包括结构相关 3.
资源推荐
资源详情
资源评论
1
《计算机体系结构》
实验报告
院 系: 计算机与信息学院
专 业: 计算机科学与技术
年 级: 18 级 2 班
课程名称: 计算机体系结构
学 号: 2018211958
姓 名: 孙淼
指导教师: 李建华
2020 年 11 月 19 日
2
实验一、流水线相关与指令调度
1. 实验内容
一、流水线相关
1. 用 WinMIPS64 模拟器执行下列三个程序(任选一个):
●求阶乘程序 factorial.s
●插入排序程序 isort.s
●乘法计算程序 mult.s
分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察
CPU 中寄存器和存储器的内容。
掌握 WinMIPS64 的操作和使用。
2.用 MIPS64 汇编语言编写代码文件*.s,程序中应包括结构相关。用 WinMIPS64 模拟器运行
你编写的程序,通过模拟:
●找出存在结构相关的指令对以及相应的结构相关的部件;
●记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;
●论述结构相关对 CPU 性能的影响,讨论解决结构相关的方法。
3. 用 MIPS64 汇编语言编写代码文件*.s,程序中应包括数据相关。在不采用定向技术的情况
下,用 WinMIPS64/WinDLX 模拟器运行存在数据相关的程序。记录数据相关引起的暂停时钟
周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
4. 在采用定向技术的情况下,用 WinMIPS64 模拟器再次运行程序。重复上述 3 中的工作, 并
计算采用定向技术后性能提高的倍数。
二、指令调度
1.用指令调度技术解决流水线中的结构相关与数据相关
(1) 用 MIPS64 汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(你可以自己
设置各个功能单元的延迟时间)
(2)用 WirnMIPS64 模拟器运行你所写的程序。记录程序执行过程中各种相关发生的次数、发
生相关的指令组合,以及程序执行的总时钟周期数;
(3) 采用指令调度技术对程序进行指令调度,消除相关;(手动调度)
(4)用 WinMIPS64 模拟器运行调度后的程序,观察程序在流水线中的执行情况,记录程序执
行的总时钟周期数;
(5) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高 CPU 性能的意义。
3
2.用循环展开、寄存器换名以及指令调度提高性能
(1) 用 MIPS64 汇编语言编写代码文件*.s,程序中包含一个循环次数为 4 的整数倍的简单循
环;
(2)用 WinMIPS64 模拟器运行该程序。记录执行过程中各种相关发生的次数以及程序执行的
时钟周期数;
(3) 将循环展开 3 次,将 4 个循环体组成的代码代替原来的循环体,并对程序做相应的修改。
然后,对新的循环体进行寄存器换名和指令调度;
(4)用 WinMIPS64 模拟器运行修改后的程序,记录执行过程中各种相关发生的次数以及程序
执行的总时钟周期数:
(5)根据记录结果,比较循环展开、指令调度前后的性能。
2. 实验方法
由于目的只 是 掌握 WinMIPS64 的 操 作 和使用,我 随便选择了一个求 阶乘程序
factorial.s。按照实验要求,我们先以步进方式运行程序,并且观察程序在流水线中的执
行情况,观察 CPU 中寄存器和存储器的内容。
需要注意到是初始设置里 FP addition(floating point addition)浮点运算是 4 延
迟,Multiplier 乘法运算是 7 延迟,Division Latency 除法延迟是 24,如下图所示。(后
面我们在进行结构相关实验时,会对除法部件的运行延迟进行修改,使得截图更直观完整)
我们使用初始的架构配置,也就是代码和数据地址总线都为 10,由此,我们的代码内存应
该为 2 的 10 次方,也就是 1024 字节的代码内存,对应十六进制是 0400,但是不知为何此
处为 03fc 只有 1020,如下图所示:
4
导入求阶乘程序后,我们得到下图所示的初始情况,
并且进行步进,由于观察到代码中涉及的寄存器号最大为 31 号,所以我将 Registers 窗口
略作放大,方便我们对寄存器的变化有全局性的观察。
步进 4 个周期时,我们发现 21 号寄存器变灰,根据 winmips64 tutorial.pdf 中的介绍,变
灰表示有指令正在写入该寄存器。果然,下个周期 R21 被写入十六进制的 10000,也就是
5
65536,并且 R22 和 R24 都变灰要被写入,继续步进两个周期,R22,24 都被写入了数据
其中,R24 是被指令 daddi r24,r0,4 写入了立即数 4,上课的老师就说过,mips 的 0 号
寄存器 R0 被设为 0,这样方便进行一些优化后的判断,比如判断 while(i<500)可以优化为
while(i-500<0),此时 0 号寄存器中就是 0,很方便判断。
继续步进,11 周期后,R24 又要被写入,继续步进,发现被写入 8
步进 15 个周期时,程序暂停,由于我们是求阶乘程序,于是提示我们输入待阶乘的数 n
于是我打开终端,输入了 n=3,并且回车,此时左下角的提示变为 Ready,表示输入成功,
可以继续执行了
继续步进,16 周期时,R29 也要被写入
继续步进,17 周期时,R31 也要被写入
步进 19 周期,两个寄存器已被成功写入
步进 24 周期,R29 要被写入
26 周期,R29 被写入
28 周期,R29 要被写入
剩余83页未读,继续阅读
资源评论
十二.12
- 粉丝: 36
- 资源: 276
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功