实验2 指令调度和延迟分支【计算机系统结构】

news2024/11/19 6:20:27

实验2 指令调度和延迟分支【计算机系统结构】

  • 前言
  • 推荐
  • 代理服务器拒绝访问解决
  • 实验2 指令调度和延迟分支
    • 1 实验目的
    • 2 实验平台
    • 3 实验内容和步骤
      • (1)启动MIPSsim。
      • (2)进一步理解流水段的构成和各个流水寄存器的功能。
      • (3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。
      • (4)采用指令调度技术解决流水线中的数据冲突。步骤如下:
      • (5)采用延迟分支减少分支指令对性能的影响。步骤如下:
    • 4 实验结论
    • 5 实验心得
    • 6 实验思考:
  • 最后

前言

2023-5-19 16:29:55

以下内容源自《创作模板三》
仅供学习交流使用

推荐

实验1 流水线及流水线中的冲突【计算机系统结构】

代理服务器拒绝访问解决

实验室机房
电脑上网

显示代理服务器拒绝访问

解决办法:

在这里插入图片描述

实验2 指令调度和延迟分支

1 实验目的

(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决指令流水线中的数据冲突的方法。
(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。

2 实验平台

指令级和流水线操作级模拟器MIPSsim。

3 实验内容和步骤

(1)启动MIPSsim。

(2)进一步理解流水段的构成和各个流水寄存器的功能。

(3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。

(4)采用指令调度技术解决流水线中的数据冲突。步骤如下:

1)载入程序schedule.s。

在这里插入图片描述

2)关闭定向功能。
点击配置,取消勾选定向

3)执行载入的程序。观察时钟周期图,找出程序执行中各种冲突发生的次数,发生冲突的指令组合以及程序执行的总时钟周期数。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)采用指令调度技术对程序进行指令调度,消除冲突,将源程序在下面列出。并将调度后的指令存到after-schedule.s中。

源程序

冲突都是RAW冲突

在这里插入图片描述

修改后的程序
所以指令调度把读后写分开几个周期即可

在这里插入图片描述

5)载入after-schedule.s。

在这里插入图片描述

6)执行程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7)根据记录结果,比较调度前和调度后的性能。论述指令调度对提高CPU性能的作用。

调度前
在这里插入图片描述

调度后
在这里插入图片描述

可以发现
调度前:执行周期总数:33;ID段执行15条指令;RAW停顿:16
调度后:执行周期总数:21;ID段执行15条指令;RAW停顿:4

可以看出,指令调度对于CPU执行效率的明显提高。

(5)采用延迟分支减少分支指令对性能的影响。步骤如下:

1)启动MIPSsim。
2)载入branch.s。

在这里插入图片描述

3)关闭延迟分支功能。通过“配置”下取消“延迟槽”选项。
4)执行该程序,观察并记录发生分支延迟的时刻。

第一次分支:到loop

在这里插入图片描述

第二次分支:到npc
在这里插入图片描述

5)记录该程序执行的总时钟周期数。
在这里插入图片描述

6)假设延迟槽为一个,对程序进行指令调度,然后保存到delay-branch.s中。
下面只针对分支指令进行指令调度
采用从目标处调度

在这里插入图片描述

7)载入delay-branch.s。
在这里插入图片描述

8)打开延迟分支功能。
点击配置,勾选延时槽

9)执行该程序,观察时钟周期图。

第一次分支,到loop,(延时槽)
在这里插入图片描述

第二次分支,到npc,(延时槽)
在这里插入图片描述

10)记录执行该程序的总的时钟周期数。

在这里插入图片描述

11)对比上述两种情况下的时钟周期图。

没有采用延迟分支之前
在这里插入图片描述
采用了延迟分支之后
在这里插入图片描述

可以发现:

没有采用延迟分支之前:执行周期总数:38;ID段执行了18条指令;分支指令占比11%
采用了延迟分支之后:执行周期总数:37;ID段执行了19条指令;分支指令占比10%

12)根据记录,比较没有采用延迟分支和采用了延迟分支的性能之间的不同。论述延迟分支对CPU性能的作用。

延时分支:可以使CPU在分支的时候,只要分支延迟槽中的指令是有用的,流水线就没有出现停顿,这时延迟分支的方法能很好地消除分支延迟。

4 实验结论

指令调度:可以减少数据冲突造成的停顿

延时分支:可以使CPU在分支的时候,只要分支延迟槽中的指令是有用的,流水线就没有出现停顿,这时延迟分支的方法能很好地消除分支延迟。

5 实验心得

通过本次实验:

(1)加深了对指令调度技术的理解。
(2)加深了对延迟分支技术的理解。
(3)熟练掌握了用指令调度技术解决指令流水线中的数据冲突的方法。
(4)进一步理解了指令调度技术对CPU性能的改进。
(5)进一步理解了延迟分支技术对CPU性能的改进。

6 实验思考:

以下是一段MIPS指令序列,

I 1  loop:   add   $t1,  $s3,  $s3
I 2           add   $t1,  $t1,  $t1
I 3           add   $t1,  $t1,  $s6
I 4           lw    $t0,   0($t1)
I 5           bne   $t0,  $s5,  exit
I 6           add   $s3,  $s3,  $s4
I 7           j     loop
I 8           exit

假如在实验的五段流水线中执行上述指令序列,在数据通路中,寄存器写口和寄存器读口分别安排一个时钟周期的前、后半个周期内独立工作,请思考:
(1)哪些指令之间发生数据相关?哪些指令之间发生控制相关?
数据相关:
I1和I2和I3、I4和I5
控制相关:
I5和I6和I8

(2)如果不采用“直通”技术进行数据冲突处理,那么应该在何处、加入几条nop指令才能避免数据冲突?假定采用“直通”技术处理,是否可以完全解决数据冲突?不行的话,需要在发生数据冲突的指令前加入几条nop指令,才能使这段指令序列的执行避免数据冲突?

(3)对于第5条分支指令引起的控制冲突,假定将检测结果是否为“零”并更新PC的操作放在“访存(Mem)”执行,则分支延迟损失时间片为多少?在何处、加入几条nop指令可以消除控制冲突?若检测结果是否为“零”并更新PC的操作在“执行(EX)”执行,则分支延迟损失时间片为多少?

(4)对于第7条指令“j loop”,假定更新PC的操作在“执行(EX)”阶段执行,则流水线会被阻塞几个时钟周期?需要在何处、加入几条nop指令可以消除该控制冲突?假定更新PC的操作在“译码(ID)”阶段执行,则流水线又将被阻塞几个时钟周期?

最后

2023-5-19 18:39:27

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

降低FP独立站跳出率的5个小技巧,聪明人已经学起来了

做独立站特别是fp独立站的商家们,要想提高客户的体验感、达到更高的转化率,就要研究一下独立站的跳出率。跳出率可以衡量一个独立站的消费体验,同样也能衡量流量在独立站转化中的重要节点。消费者体验好、跳出率低的独立站才能够留住消费者&a…

机器学习算法应用实战笔记分享

来源:投稿 作者:小灰灰 编辑:学姐 整体代码请参考深度之眼的《机器学习算法应用实战》 视频链接:https://ai.deepshare.net/p/t_pc/goods_pc_detail/goods_detail/p_5e12aa8734510_IpNUGv5w 1.无监督学习方法---主成分分析 主成…

离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥

本文主要解决以下几个问题: 1.欧拉图能不能有割点,能不能有桥? 2.哈密顿图能不能有割点,能不能有桥? 首先我们要明白几个定义 割点的定义就是在一个图G中,它本来是连通的,去掉一个点v以后这个…

前几天面了个30岁的测试员,年薪50w问题基本都能回答上,应该刷了不少八股文···

互联网行业竞争是一年比一年严峻,作为测试工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯等大厂.....) 所以,大家就迎来了…

java 通过注解实现数据动态脱敏

一、为什么要数据脱敏? 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用&…

10个高质量的简历制作网站推荐

刚经历完有金三银四,有没有因为简历不行,面试少的可怜的同学。 今天推荐10个高质量的简历制作网站,包括可以在线免费生成设计简历的网站。 1.即时设计资源社区 即时设计是国内首款专业级的 UI 设计工具,像 PC 端的网页&#xf…

ThingsBoard教程(四十六):规则节点解析 延迟节点 Delay Node。生成节点 Generator Node, 日志节点 Log Node

延迟节点 Delay Node Since TB Version 2.1 延迟接收消息的时间段可进行配置。 配置如下: Period in seconds - 指定暂停接收消息的时间段。 Maximum pending messages - 指定最大允许挂起消息的数量(即被暂停的消息队列)。 当特定传入消息的延迟期达到后,该消息将从…

MATLAB第九章_数据图形可视化

目录 数据图形可视化 MATLAB图形窗口 函数绘制 一元函数绘制 二元函数绘图 数据图形绘制简介 离散数据可视化 连续函数可视化 二维绘图函数 基本绘图 快速方程式画图 特殊二维图形 三维绘图函数 绘制三维曲面 生成栅格数据 网格曲线绘制 隐藏线的显示和关闭 数据…

51单片机串口通信

串口通信 1、通信的基本概念2、 51单片机串口介绍2.1、串口通信简介2.2、串口内部结构2.3、串口通信寄存器SCONPCON 2.4、串口工作方式 3、串口使用方法3.1、硬件3.2、通信协议RS2323.3、串口初始化 4、硬件设计5、 软件设计6、拓展 串口的通信,一般是检测通信模块是…

网络安全专业应该从事哪个方向前景比较好

目前网络安全行业包括很多领域,例如网络安全基础、网络安全运维、应用安全、云安全、算法与数据安全、区块链安全、工业控制系统安全和人工智能安全等方向,各个方向的前景都比较好,关键在于选择适合自己并且感兴趣的方向。同时,也…

OSI体系结构7层,5层,4层协议+负载均衡

上图分别是7,4,5层协议 Q:为什么分4层和7层,目的? 7层:OSI参考模型是一种理论模型,旨在描述计算机网络的功能和架构。它提供了一种通用的框架,用于理解和设计网络协议和系统。然而&…

3.6万亿token、3400亿参数,谷歌大模型PaLM 2细节遭曝光

来源 | 机器之心 ID | almosthuman2014 谷歌内部文件又泄露了,这次是谷歌新一代大模型 PaLM 2 的训练细节:训练数据量是前代的近 5 倍、参数量是前代的三分之二左右。 上周四,在 2023 谷歌 I/O 大会上,谷歌 CEO 皮查伊宣布推出对…

埃尔德动力系统指标公式,衡量趋势的惯性和能量

亚历山大埃尔德(Alexander Elder)在其经典著作《以交易为生》(原书第2版)新增了一个工具——动力系统(Impulse System),不过书中只介绍了动力系统的指标以及使用方法,并没有介绍系统的参数。其实动力系统在埃尔德2002年出版的《走…

【数据分析之道-基础知识(十一)】面向对象

文章目录 专栏导读1、简介2、类与对象3、属性和方法4、继承5、多态 专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心…

瑞吉外卖开发总结(全功能实现)

技术栈 项目部署 简历上可写的点 集中处理系统异常,自定义统一的错误码, 并封装了全局异常处理器,屏蔽了项目冗余的报错细节、便于接口调用方理解和统一处理。 基于静态ThreadLocal封装了线程隔离的全局上下文对象,便于在请求内部存取用户信…

【STL模版库】模拟实现vector类模版

一、成员变量 template<class T> class Myvector{typedef T *iterator; //[1]typedef const T *const_iterator;private:iterator _start; //指向存存储空间的开头 //[2]iterator _finish; //指向实际存储元素的下一个位置iterator _end_of_storage; //指向存储空间结尾…

【5.19】三、白盒测试方法—逻辑覆盖法

目录 3.1 逻辑覆盖法 3.1.1 语句覆盖 3.1.2 判定覆盖 3.1.3 条件覆盖 3.1.4 判定—条件覆盖 3.1.5 条件组合覆盖 3.1.6 实例&#xff1a;三角形逻辑覆盖问题 白盒测试又称为透明盒测试、结构测试&#xff0c;它基于程序内部结构进行测试&#xff0c;而不是测试应用程序…

Net跨平台UI框架Avalonia入门-资源和样式

Net跨平台UI框架Avalonia入门-资源和样式编写和使用 资源和样式编写和使用样式&#xff08;Styles&#xff09;和资源&#xff08;Resources&#xff09;样式&#xff08;Styles&#xff09;样式定义定义的位置:定义内容&#xff1a; 样式文件的定义和引用 资源&#xff08;Res…

微信小程序xr-frame后处理

前言&#xff1a;什么是后处理&#xff1f;&#xff08;详见&#xff1a;ThreeJS 后处理 - 掘金 (juejin.cn)&#xff09; 后处理就是对WebGLRenderer.render(scene, camera)的渲染2D图片进行处理。可以把多个后处理进行组合&#xff0c;按照顺序执行&#xff0c;每个处理过程…

新-git-gitee代码管理(管理)

git忽略文件失效 git rm -r --cached . //清除缓存 git add . //添加所有文件 git commit -m update .gitignore //提交更新.gitignoregit 提交的一些规范 开发git commit规范&#xff1a; git commit --fix我的问题feat&#xff1a;新功能 fix&#xff1a;BUG…