【计算机组成原理】五、中央处理器:3.指令流水线(互斥、同步)

news2024/9/22 23:28:33

5.指令流水线

文章目录

    • 5.指令流水线
      • 5.1基本概念
      • 5.2性能指标
      • 5.3指令流水线影响因素
        • 5.3.1结构相关(**资源冲突**):**互斥**
        • 5.3.2==数据相关(**数据冲突**)==:**同步**
        • 5.3.3控制相关(**控制冲突**)
      • 5.4流水线分类
      • 5.5流水线的多发技术
      • 5.6==五段式流水线==

对指令执行的优化

5.1基本概念

一条指令的执行过程可以分成多个阶段或过程。根据计算机的不同,具体的分法也不同。

取指分析执行

取指:根据PC内容访问主存储器,取出一条指令送到IR中。

分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。

执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。

设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间:

  1. 顺序执行

    优点:控制简单,硬件代价小。
    缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。

  2. 一次重叠执行

    优点:程序的执行时间缩短了1/3,各功能部件的利用率明显提高。
    缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了。

  3. 两次重叠执行

    与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。

后两者就是使用了流水线的方法。

在这里插入图片描述

5.2性能指标

  1. 吞叶率:吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。

流水线吞吐率 ( T P ) = n T k 流水线吞吐率(TP)=\frac n {T_k} 流水线吞吐率(TP)=Tkn

  • n:任务数量;

  • Tk:处理完成n个任务所用的时间。

在这里插入图片描述

第一条指令可以类比加特林启动,耗时 k·△t。当完全启动之后,后续每个指令只需要耗时一个 △t。所以:
T k = ( k + n − 1 ) △ t T P = n ( k + n − 1 ) △ t T_k=(k+n-1)△t\\ TP = \frac n {(k+n-1)△t} Tk=(k+n1)tTP=(k+n1)tn
当连续输入的任务n→∞时,得最大吞吐率为TPmax=1/△t。

  1. 加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。

流水线加速比 ( S ) = T 0 T k 流水线加速比(S)=\frac{T_0}{T_k} 流水线加速比(S)=TkT0

  • T0表示不使用流水线时的执行时间,即顺序执行所用的时间;
  • Tk表示使用流水线时的执行时间。

再以上图为例子:
T 0 = k n △ t T k = ( k + n − 1 ) △ t T P = k n k + n − 1 T_0=kn△t\\ T_k=(k+n-1)△t\\\\ TP = \frac {kn} {k+n-1} T0=kntTk=(k+n1)tTP=k+n1kn
当连续输入的任务n→∞时,得最大加速比为Smax=k。就意味着比之前快了k倍。

  1. 效率:流水线的设备利用率称为流水线的效率。设备处于忙碌的时间占总时间的比例。

在这里插入图片描述

5.3指令流水线影响因素

MIPS架构下,把一条指令的执行划分为5个机器周期:(大部分RISC都是)

在这里插入图片描述

实际情况下,可以各部件的耗时都不一样。但是为方便流水线的设计,将每个阶段的耗时取成一样,以最长耗时为准

流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用。


影响因素:

5.3.1结构相关(资源冲突):互斥

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。

当两个指令同时访问一个主存或者寄存器,就会发生冲突

  • 方案一:让后面的指令暂停一个周期再执行

在这里插入图片描述

  • 方案二:换用不同的存储器

在这里插入图片描述

5.3.2数据相关(数据冲突同步

数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。

两个指令用到的数据有前后关系

在这里插入图片描述

解决方法:

  • 方案一:把要用到是指令暂停执行,直到前面数据处理完成。可分为硬件、软件两种实现方式。
  1. 硬件阻塞(stall)

在这里插入图片描述

  1. 软件插入NOP空指令

在这里插入图片描述

  • 方案二:数据旁路技术:就是当前一条指令执行完之后,不等这条指令全部执行结束,提前把要用到是数据传递给下一条指令。

  • 方案三:编译优化:通过编译器调整指令顺序来解决数据相关。

    就是把用不到这个数据的下面的指令先拿到前面来。

    在这里插入图片描述

5.3.3控制相关(控制冲突)

当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。

出现转移指令、函数调用等,使当前指令和跳转之间的指令不被执行了

  • 方案一:转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根据历史情况动态调)。
  • 方案二:预取转移成功和不成功两个控制流方向上的目标指。
  • 方案三:加快和提前形成条件码。
  • 方案四:提高转移方向的猜准率。

5.4流水线分类

套娃

根据流水线使用的级别的不同,流水线可分为部件功能级流水线处理机级流水线处理机间流水线

  1. 部件功能级流水:就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
  2. 处理机级流水:是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
  3. 处理机间流水:是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。

按流水线可以完成的功能,流水线可分为单功能流水线多功能流水线

  1. 单功能流水线指只能实现一种固定的专门功能的流水线。
  2. 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。

按同一时间内各段之间的连接方式,流水线可分为静态流水线动态流水线

  1. 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
  2. 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。

按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线非线性流水线

  1. 线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路
  2. 非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

5.5流水线的多发技术

  1. 超标量技术

  2. 超流水技术

  3. 超长指令字

  4. 超标量技术

空分复用

在这里插入图片描述

每个时钟周期内可并发多条独立指令

要配置多个功能部件。

不能调整指令的执行顺序。通过编译优化技术,把可并行执行的指令搭配起来。

  1. 超流水技术

时分复用

在这里插入图片描述

在一个时钟周期内再分段

在一个时钟周期内一个功能部件使用多次。

不能调整指令的执行顺序。靠编译程序解决优化问题

  1. 超长指令字

在这里插入图片描述

编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条。

具有多个操作码字段的超长指令字(可达几百位),采用多个处理部件。

5.6五段式流水线

MIPS架构下,把一条指令的执行划分为5个机器周期:(大部分RISC都是)

在这里插入图片描述

①IF取指→②ID译码&取数→③EX执行→④M访存→⑤WB写回寄存器

考试中常见的五类指令:

运算类指令、LOAD指令、STRE指令、条件转移指令、无条件转移指令

  • 运算类指令
  1. lF:根据PC从指令Cache取指令至IF段的锁存器;
  2. ID:取出操作数至ID段锁存器;
  3. EX:运算,将结果存入EX段锁存器;
  4. M:空段;
  5. WB:将运算结果写回指定寄存器。

**【注意】**关于主存M,通常,RISC处理器只有“取数LOAD”和“存数STORE”指令才能访问主存。

  • LOAD指令

LOAD Rd, 996(Rs)
(996+(Rs))→Rd

  1. lF:根据PC从指令Cache取指令至IF段的锁存器;
  2. ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm;
  3. EX:运算,得到有效地址EA,将结果存入EX段锁存器;
  4. M:从数据Cache中取数并放入锁存器;
  5. WB:将取出的数写回寄存器。
  • STORE指令

STORE Rs, 997(Rd)
Rs→(997+(Rd))

  1. lF:根据PC从指令Cache取指令至IF段的锁存器;
  2. ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm。将要存的数放到B;
  3. EX:运算,得到有效地址。并将锁存器B的内容放到锁存器Store。
  4. M:写入数据Cache;
  5. WB:空段。
  • 条件转移指令

beq Rs, Rt, #偏移量
若(Rs)==(Rt),则(PC)+指令字长+(偏移量×指令字长)→PC;否则(PC)+指令字长→PC。

这里的+指令字长相当于+1

  1. IF:根据PC从指令Cache取指令至IF段的锁存器;
  2. ID:进行比较的两个数放入锁存器A、B,偏移量放入lmm;
  3. EX:运算,比较两个数;
  4. M:将目标PC值写回PC
  5. WB:空段。

【注意】很多教材把写回PC的功能段称为“WrPC段(writePC)”,其耗时比M段更短,可安排在M段时间内完成。

  • 无条件转移指令

jmp #偏移量
(PC)+指令字长+(偏移量×指令字长)→PC

  1. lF:根据PC从指令Cache取指令至IF段的锁存器;
  2. ID:偏移量放入Imm;
  3. EX:将目标PC值写回PC;
  4. M:空段;
  5. WB:空段。

【注意】“WrPC段”耗时比EX段更短,可安排在EX段时间内完成(尽量靠前)。WrPC段越早完成,就越能避免控制冲突。当然,也有的地方会在WB段时间内才修改PC的值。

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

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

相关文章

电脑网络设置

有时候开机会发现电脑明明练了Wifi却无法上网,是因为之前梯子没关直接关机,解决方案是 打开设置网络和Internet代理手动设置代理关闭“使用代理服务器”

黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署

文章目录 前言一、Vue路由1. 介绍2. 路由入门 二、打包部署1. 前端工程打包2. 部署前端工程2.1 nginx介绍2.2 部署 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记10:Vue路由介绍&入门、前端工程打包、nginx前端部署的总结,帮助需要学习Web开发…

6款文件恢复软件推荐,电脑小白也能够一人做到电脑数据恢复!

在一台小小的电脑里,有着我们学习资料的整理、工作文件的痕迹和生活点滴的回忆,正因为这些数据对我们来说是十分珍重的东西,所以会难以承受它们丢失不见的结果。 一旦造成数据丢失,我们该怎么做才能把这些重要的数据文件找回呢&a…

科研绘图之折线图

在科研数据分析中,折线图是一种常见且有效的可视化工具,用于展示数据随时间或其他连续变量的变化趋势。Python,作为一种强大的编程语言,提供了多种绘制折线图的工具和库,其中最常用的包括 Matplotlib 和 Seaborn。 Ma…

vscode解决运行程序无法从控制台输入问题

在vscode中运行一些简单的程序代码,需要从控制台接受输入参数,发现不能通过键盘输入。 本章教程,提供该问题的解决方法。 解决办法 由于我是使用的Code Runner这个插件,Code Runner插件支持运行多种编程语言,很方便。打…

如何构建基于Java SpringBoot和Vue的受灾救援物资管理系统?——四步实现物资高效调配,提升救援响应速度

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

国外服务器独立ip的好处

国外服务器提供独立IP服务,这为网站运营者、企业用户以及个体户提供了诸多便利。独立IP即一个独一无二的IP地址,专为一个网站或一项服务,相较于共享IP,独立IP拥有许多不可替代的优势。下面将介绍国外服务器提供独立IP服务的好处&a…

C#生成exe并用process运行

文章目录 前言一、生成exe1.发布自包含版本2.一些问题1. 使用 .NET Framework修改项目文件 二、使用Process调用exe子进程阻塞了父进程:资源锁定:无限循环:命令行挂起:1.解决方法示例代码 说明1.启动 EXE 文件:2.启动 …

开源项目管理工具Taiga

什么是 Taiga ? Taiga 是一个免费开源,而且功能非常强大的项目管理平台,用于初创企业和敏捷开发团队。Taiga 专注于简洁性,并且界面很干净简单。Taiga 也非常个性化,并集合了很多其它功能和外部工具,还有大…

如何恢复最近删除的文件?5种简单方法!

数据丢失在我们的工作生活中经常发生。当你决定清理硬盘或U盘时,你会删除一些文件夹或文件。如果你通过右键单击删除文件,则可以很容易从回收站恢复已删除的文件。但是,如果你按Shift Delete键、清空回收站或删除大于8998MB的大文件夹&#…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器) 文章目录 一、基本原理鲸鱼智能优化特征选择流程 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序…

丹娜生物增利不增收:核心产品原材料面临不利因素,销售费用率攀升

《港湾商业观察》黄懿 7月15日,丹娜(天津)生物科技股份有限公司(下称“丹娜生物”)针对北交所出具的IPO问询文件进行了首轮回复,其保荐人为招商证券。7月26日,监管部门发出第二封问询函。 公开…

分布式场景下websocket解决方案

在项目中遇到:多个服务作为websocket服务端时,怎么跟前端设备进行数据通信的问题。具体解决方案,分享一下。 1.遇到问题 项目中使用websocket与前端设备建立长链接,用于推送过车、车位数、支付等相关信息,由于项目是负…

监控摄像头内存卡格式化了怎么恢复?

监控摄像头在现代社会中的应用越来越广泛,无论是家庭安防还是商业场所的安全监控,它们都扮演着重要的角色。然而,内存卡的数据丢失问题也时有发生,尤其是当内存卡被不小心格式化时,很多重要的监控数据可能会永久丢失。…

SpringBoot下获取resources目录下文件的常用方法

哈喽,大家好,今天给大家带来SpringBoot获取resources目录下文件的常用方法,示例中的方法是读取resources目录下的txt和xlsx文件,并将xlsx导出到excel的简单写法。完整代码放在最后。 通过this.getClass()方法获取 method1 - met…

linux安装mysql数据库,含公网链接(有网络带网安装)

1.检查是否存在mysql mysql出现这个,代表没安装 -bash: mysql: command not found 2.检查是否有mariadb数据库,如果有,需要先卸载。 rpm -qa | grep mariadb3.卸载现有的数据库 rpm -e --上个命令显示的名字4.在线安装,需要外…

【多线程】线程的等待通知机制-wait与notify

💐个人主页:初晴~ 📚相关专栏:多线程 / javaEE初阶 我们都知道,线程在系统调度上是随机的,因此线程之间执⾏的先后顺序难以预知。但在实际开发中有时我们希望控制多个线程执行某个逻辑的先后顺序&#xff…

基于JSP高校应届生就业信息管理系统的设计与实现(全网第一无二,阿龙原创设计)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

C#骑砍逻辑类Mod制作详细解说

前言: 最近在研究骑砍的mod,主要是想修改其中的逻辑部分,因此有了这篇帖子。 一,文件夹与XML配置 在Modules创建一个新文件夹,文件夹名称随意,不影响实际的读取。 文件夹下面的位置需要固定,因…

大模型学习路线:从新手到专家的全面指南,从零基础到精通,非常详细收藏我这一篇就够了

随着人工智能技术的飞速发展,特别是近年来深度学习领域的突破,大规模预训练模型(通常称为“大模型”)已成为推动自然语言处理(NLP)、计算机视觉(CV)等领域发展的关键力量。本文将为你…