文章目录

  • 指令调度和延迟分支

指令调度和延迟分支

1.启动MIPSsim

2.根据预备知识中关于流水线各段操作的描述,进一步理解流水线中各段的功能,掌握各流水线的含义(用鼠标双击各段,就可以看到各流水寄存器的内容)

3.勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下

4.用指令调度技术解决流水线中结构冲突和数据冲突

a) 启动MIPSsim
b) 通过“配置”菜单中的“常规配置”项把加法、乘法、除法部件的个数设置为两个,把他们的延迟时间都设置为3个时钟周期
c) 用MIPSsim的“文件”菜单中的“载入程序”来加载schedule.s(在模拟器文件夹下的“样例程序”中)
d) 关闭定向功能
e) 执行所载入的程序,通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合,以及程序执行的总时钟周期数:33个
答:各种冲突发生的次数:
RAW停顿: 16 ,占周期总数的百分比: 48.48485% ,其中load停顿: 6 ,占所有RAW停顿的百分比: 37.5%
自陷停顿: 1 ,占周期总数的百分比: 3.030303%
停顿周期总数: 17 ,占周期总数的百分比: 51.51515%
发生冲突的指令组合:
LW r2,0(r2,0(r2,0(r1) 和 ADD r4,r4,r4,r0,$r2
ADD r4,r4,r4,r0,$r2 和 SW r4,0(r4,0(r4,0(r1)
SW r4,0(r4,0(r4,0(r1) 和 LW r6,4(r6,4(r6,4(r1)
ADD r8,r8,r8,r6,$r1 和 MUL r12,r12,r12,r10,$r1
ADD r16,r16,r16,r12,$r1 和 ADD r18,r18,r18,r16,$r1
ADD r18,r18,r18,r16,$r1 和 SW r18,16(r18,16(r18,16(r1)
SW r18,16(r18,16(r18,16(r1) 和 LW r20,8(r20,8(r20,8(r1)
MUL r22,r22,r22,r20,$r14 和 MUL r24,r24,r24,r26,$r14
f) 采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序放到afterschedule.s中
g) 载入afterschedule.s
afterschedule.s指令代码如下:
ADDIU r1,r1,r1,r0,A
MUL r22,r22,r22,r20,$r14
LW r2,0(r2,0(r2,0(r1)
MUL r24,r24,r24,r26,$r14
ADD r4,r4,r4,r0,$r2
LW r6,4(r6,4(r6,4(r1)
SW r4,0(r4,0(r4,0(r1)
ADD r8,r8,r8,r6,$r1
MUL r12,r12,r12,r10,$r1
ADD r18,r18,r18,r16,$r1
ADD r16,r16,r16,r12,$r1
SW r18,16(r18,16(r18,16(r1)
LW r20,8(r20,8(r20,8(r1)
TEQ r0,r0,r0,r0
h) 执行该程序,观察程序在流水线中的执行情况,记录程序的总时钟周期数为 21 ,
ID段执行了 15 条指令。

i) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU的作用
答:调度前的执行周期为 33 ,调度后的执行周期数为 21 。指令调度可以消除部分的数据冲突,通过使用指令调度提高了CPU的使用率,大大减少了指令冲突的次数,提高了CPU性能。

5.用延迟分支减少分支指令对性能的影响

a) 启动MIPSsim
b) 载入branch.asm
c) 关闭延迟分支功能。这是通过在“配置”菜单中去选“延迟分支”来实现的
d) 执行该程序,观察并记录发生分支延迟的时刻,保存下其时钟周期图
答:分支延迟的时刻为:Cycle
时钟周期图如下:

e) 记录执行该程序所花的时钟周期数: 38
假设延迟槽为一个,对branch.asm进行指令调度,然后存到delay-branch.s中
delay-branch.s的指令代码:
ADDI r2,r2,r2,r0,1024
ADD r3,r3,r3,r0,$r0
ADDI r4,r4,r4,r0,8
LW r1,0(r1,0(r1,0(r2)
ADDI r3,r3,r3,r3,4
ADDI r1,r1,r1,r1,1
SUB r5,r5,r5,r4,$r3
SW r1,0(r1,0(r1,0(r2)
BGTZ $r5,loop
ADD r7,r7,r7,r0,$r6
TEQ r0,r0,r0,r0
f) 载入delayed-branch.asm
g) 打开延迟分支功能
h) 执行该程序,观察其时钟周期图,保存下其时钟周期图

i) 对比上述两种情况下的时钟周期图
j) 根据记录结果,比较没有采用延迟分支的性能和采用了延迟分支的性能。论述延迟分支对于提高CPU性能的作用
答:比较两种情况的时钟周期总数,可知:

在使用延迟槽后, 指令在运行到跳转bgezal指令,在期望概率上很大部分可能不会出现延迟等待,能够稍微提高CPU性能,本实验跳转指令过少,在跳转指令过多的情况下更为明显 。

【计算机体系结构实验】指令调度和延迟分支相关推荐

  1. 计算机体系结构实验 (实验报告)

    目录 1. MIPS 指令系统和 MIPS 体系结构 编写 MIPS 汇编程序 观察程序的执行情况 2. 流水线及流水线的冲突 3. 指令调度和延迟分支 编写 MIPS 汇编程序 不加任何优化操作 开 ...

  2. 计算机体系结构实验报告

    电子科技大学2021计算机体系结构课程实验.内容仅供学习参考使用,请勿抄袭. 实验一 单周期 CPU 代码分析 实验内容 认真阅读并分析所给的单周期CPU代码,掌握单周期CPU电路结构中各模块的工作原 ...

  3. 计算机结构实验三,计算机体系结构实验报告——实验三.pdf

    计算机体系结构实验报告--实验三 1.实验目的: 通过实验,熟练掌握WINDLX 的操作方法,特别注意在单步执行WinDLX程序中,流水线 中指令的节拍数. 2.实验内容: (1) 用WinDLX模拟 ...

  4. 计算机体系结构实验三 指令调度和延迟分支

    3.1  实验目的 加深对指令调度技术的理解. 加深对延迟分支技术的理解. 熟练掌握用指令调度技术来解决流水线中的数据冲突的方法. 进一步理解指令调度技术对CPU性能的改进. 进一步理解延迟分支技术对 ...

  5. 哈工程计算机体系结构实验,哈工程体系结构实验

    <哈工程体系结构实验>由会员分享,可在线阅读,更多相关<哈工程体系结构实验(8页珍藏版)>请在人人文库网上搜索. 1.哈工程体系结构实验实 验 报 告学生姓名: 学 号:时间: ...

  6. 北邮计算机系统结构实验报告,北邮计算机体系结构--实验报告.doc

    计算机系统结构实验报告 班 级: 2011211 学 号: 姓 名: 17 1. 实验一 WINDLX模拟器安装及使用 2. 实验二 指令流水线相关性分析 3. 实验三 DLX处理器程序设计 4. 实 ...

  7. 体系结构实验(5)——分支预测

    文章目录 Chp5 Lab: Branch Prediction Q1 1.1 理论分析 1.2 实验验证 Q2 Chp5 Lab: Branch Prediction Q1 Run the foll ...

  8. 【计算机体系结构实验】流水线及流水线中的冲突

    文章目录 实验二 流水线及流水线中的冲突 实验目的 实验平台 实验内容和步骤 一 首先要掌握MIPSsim模拟器的使用方法 实验二 流水线及流水线中的冲突 实验目的 加深对计算机流水线基本概念的理解. ...

  9. 计算机体系结构实验二——DLX/MIPS/RISC-V指令格式

    本次实验的主要目的是熟悉DLX-MIPS的指令格式,并初步了解RISC-V的指令格式.实验分为两个部分. 1. 熟悉winDLX模拟器,并完成以下实验及分析: A. 参考提供的资料,学习winDLX模 ...

最新文章

  1. Git 2.25.0 发布,新特性:部分 clone 与稀疏 checkout
  2. HTML DOM知识点补充:
  3. android通过代码设置铃声_第六十四回:Android中UI控件之SeekBar
  4. Redis持久化(转载)
  5. Intel开发文档导读
  6. WINDOWS蓝色当机画面解读
  7. JQuery Smart UI 简介 (一) — 纯Htm+Js的ajax开发框架[演示Demo已放出]
  8. 信息隐藏预测算法之MED
  9. 如何进行ERP、CRM实施时的流程梳理?
  10. MT4外汇操盘跟单软件
  11. 搜狐全体员工遭遇工资补助诈骗,冲上微博热搜第一
  12. 东南大学破格保研挂科_东南大学破格保研挂科_兜兜转转终入四牌楼——东南大学保研心得...
  13. 6个实用的 Python 自动化脚本,告别加班,你学会了吗?
  14. 操作系统IO模式(理解)
  15. 忘了neo4j密码怎么办
  16. 微信小程序和微信H5有什么区别?
  17. 60w风扇用多大电容_家用电风扇电容大小一般是多少
  18. HQChart使用教程11-如何把K线数据API替换成自己的API数据
  19. 适合快速阅读的论文翻译工具,翻译论文必备!
  20. GDAL+Python | 实现栅格影像处理之栅格矢量化及矢量栅格化

热门文章

  1. VMware虚拟机下载安装教程
  2. Skleran-线性模型-普通最小二乘法-LinearRegression
  3. 微信小游戏 - Canvas/WebGL Demo 移植
  4. 徐佐君:智慧园区网络 开放使能共赢
  5. win2003 服务器设置 完全版 作者:冰盾防火墙
  6. eCharts二三维地图总结
  7. 外派linux运维,请好好善待你身边的Linux运维工程师,因为他们...
  8. elasticsearch通过logstash同步mysql数据(中文分词)
  9. “消费盲返”的商业模式,你知道多少?
  10. Java基础知识(十) 多线程