计算机组成原理 指令流水线

news2024/9/23 3:34:00

文章目录

    • 指令流水线
      • 指令流水线的概念
      • 流水线性能分析
        • 流水线的吞吐率
        • 流水线的加速比
        • 流水线的效率
      • 影响流水线的因素
        • 结构相关 (资源冲突)
        • 数据相关 (数据冲突)
        • 控制相关 (控制冲突)
      • 流水线分类
      • 超量流水线

指令流水线

指令流水线
指令流水线的基本概念
流水线的性能指标
流水线分类
影响流水线的因素
超级流水线
吞吐率
加速比
流水线效率
结构冲突
数据冲突
控制冲突
超标量技术
朝流水技术
超长指令字

指令流水线的概念

指令流水线执行方式
计算机的流水线把一个重复的过程分解为若干子过程,每个子过程与其他子过程并行执行。由于采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍使用的一种并行处理技术。
顺序执行方式

取指1析指1执行1中断1取指2析指2执行2中断2............

假设机器周期为 △ t \triangle t t,那么顺序执行n条指令的执行时间为 4 n △ t 4n \triangle t 4nt
流水线执行方案
在这里插入图片描述

执行5条指令的时间为: 5 △ t + 4 △ t 5\triangle t+4\triangle t 5△t+4△t
执行n条指令的时间为: T + ( n − 1 ) △ t T+(n-1)\triangle t T+(n1)t

流水线性能分析

流水线的吞吐率

在指令级流水线中,吞吐率是指在单位时间内流水线所完成的任务数量,或输出结果的数量。计算流水线吞吐率(TP) 的最基本的公式如下: n是任务数,Tk是处理完n个任务所用的时间。

T P = n T k TP=\frac{n}{T_k} TP=Tkn
T P = n ( k + n − 1 ) △ t TP=\frac{n}{(k+n-1)\triangle t} TP=(k+n1)tn

在这里插入图片描述

流水线的加速比

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比,称为流水线的加速比。设T,表示不使用流水线时的执行时间,即顺序执行所用的时间:K表示使用流水线时的执行时间,则计算流水线加速比(S)的基本公式为
T P = T 0 T k TP=\frac{T_0}{T_k} TP=TkT0
$TP=\frac{kn\triangle t}{(k+n-1)\triangle t}= \frac{kn}{k+n-1} $

在这里插入图片描述

流水线的效率

流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间及k个流水段所围成的时空区总面积之比。因此,流水线的效率包含了时间和空间两个因素:
n个任务占用的时空区有效面积T。
n个任务所用的时间与k个流水段所围成的时空区总面积
T P = T 0 k T k TP=\frac{T_0}{kT_k} TP=kTkT0

在这里插入图片描述

影响流水线的因素

流水线的问题
每个阶段的时间不一样,所以我们取得阶段周期都是最大的那个!
每个阶段都有缓冲区,这种缓冲区用于保存本阶段的结果,用于下一阶段使用
在这里插入图片描述

结构相关 (资源冲突)

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。
在这里插入图片描述

解决办法

  1. 后一相关指令暂停若干周期
  2. 资源重复配置: 数据存储器+指令存储器
数据相关 (数据冲突)

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

解决办法:

  1. 把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行,可分为硬件阻塞 (stall) 和软件插入"NOP"指令两种方法。
  2. 设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而直接把前一条指令的 ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行,这称为数据旁路技术。
  3. 通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关。

数据的基本操作: 读 ® 、写(W)
冲突的基本类型 : RAW、WAR、WAW、
RAW😦"按序发射,按序完成”时,只可能出现RAW相关)
I1: ADD R3,R2.R1:   (R1)+(R1)->R3
I2: ADD R5,R3.R4:   (R3)+(R4)->R5
WAR:
I1:STA M,R1: (R1)->M,M为主存单元 乱序发射,编写程序的时候希望1在2前完成但优化手段导致I2在I1前发射
I2:ADD R1,R2,R3; (R3)+(R2)->R1

WAW:(存在多个功能部件时,后一条指令可能比前一条指令先完成)
I1:ADD R3,R2, R1:   (R1)+(R2)->R3
I2:SUB R3,R4, R5:   (R4)-(R5)->R3

控制相关 (控制冲突)

当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关
在这里插入图片描述

解决办法

  1. 尽早判别转移是否发生,尽早生成转移目标地址
  2. 预取转移成功和不成功两个控制流方向上的目标指令
  3. 加快和提前形成条件码
  4. 提高转移方向的猜准率

流水线分类

  • 部件功能级、处理机级和处理机间级流水线
    根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
    部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶,尾数相加以及结果规格化等4个子过程。
    处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程
    处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
  • 单功能流水线和多功能流水线
    按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线
    单功能流水线指只能实现一种固定的专门功能的流水线:
    多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线
  • 动态流水线和静态流水线
    按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
    静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
    动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
  • 线性流水线和非线性流水线
    按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
    线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
    非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

超量流水线

超标量技术
每个时钟周期内可 并发多条独立指令要配置多个功能部件不能调整 指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来
在这里插入图片描述

超流水线技术
在一个时钟周期内再分段 (4段)
在一个时钟周期内一个功能部件使用多次 (4次)
但是不能调整指令的执行顺序靠编译程序解决优化问题
在这里插入图片描述

超长指令字
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位)

在这里插入图片描述

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

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

相关文章

Ubuntu20.04安装ROS2 Foxy

Ubuntu20.04安装ROS2 Foxy 实操安装 安装ROS2的教程在网上很多,但是我操作之后都有问题,大部分的问题是在 sudo apt update 时访问packages.ros.org无法成功,主要的原因是没有外网,而自己整一个外网代理又非常麻烦,所…

即插即用篇 | YOLOv8 Gradio 前端展示页面 | 支持 【分类】【检测】【分割】【关键点】 任务

分类任务效果 分割任务效果 检测任务效果 关键点任务效果 使用方法 Gradio 是一个开源库,旨在为机器学习模型提供快速且易于使用的网页界面。它允许开发者和研究人员轻松地为他们的模型创建交互式的演示,使得无论技术背景如何的人都可以方便地试用和理解这些模型。使用Gradi…

二叉搜索树/二叉排序树(代码实现)(c++)

BSTree 二叉排序树概念代码部分 BSTree框架查找操作插入操作删除操作**默认成员函数完整代码 BSTree性能分析 二叉排序树概念 二叉搜索树又称二叉排序树(BSTree, Binary Search Tree),它或者是一颗空树,或者是具有以下性质的二叉…

IP代理测试:关于Ping测试你需要知道的一切干货

您在访问互联网时是否遇到过持续滞后或花费很长时间等待网站加载的情况?为了避免这种情况,您可以测试 ping 以查看连接速度。如果您使用代理,此 ping 测试还会显示代理服务器的响应速度。 ping 测试是一个很有价值的工具,可以帮助…

武汉灰京文化:技术先锋辐射游戏行业,带来全新体验乐趣无穷!

科技的持续演进,给游戏产业打了强心剂,让这个领域变得前所未有的越来越好玩儿。今天我们将深入探讨如何利用虚拟现实(VR)和增强现实(AR)技术,让你玩得开心,玩得尽兴。 想象一下&…

目标检测 | YOLOv5 训练自标注数据集实现迁移学习

Hi,大家好,我是源于花海。本文主要了解 YOLOv5 训练自标注数据集(自行车和摩托车两种图像)进行目标检测,实现迁移学习。YOLOv5 是一个非常流行的图像识别框架,这里介绍一下使用 YOLOv5 给使用 Labelme 标注…

【DevOps-07-2】Sonarqube基本使用

一、简要说明 Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果 Sonarqube集成在Maven实现代码检测使用sonar-scanner客户端的方式 二、Sonarqube管理后台安装中文插件 1、登录Sonarqube管…

Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models

ABSTRACT 现代大规模视觉-语言模型(LVLMs)采用了相同的视觉词汇-CLIP,可以涵盖大多数常见的视觉任务。然而,对于一些需要密集和细粒度视觉感知的特殊视觉任务,例如文档级OCR或图表理解,尤其是在非英语环境…

用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

最近 ChatGPT 对 Plus 用户逐步开放一些多模态的功能,包括 (图像生成)、 GPT-4V(图像识别)等,很多网友乐此不疲地对这些新功能进行试用, 目前已经解锁了不少有趣的玩法,我将这些好玩…

软件测试/测试开发丨Vuetify框架的使用

介绍 Vuetify 是一个基于 Vue.js 精心打造 UI 组件库,整套 UI 设计为 Material 风格。能够让没有任何设计技能的开发者创造出时尚的 Material 风格界面。 为什么要使用Vuetify框架 所有组件遵从 Material Design 设计规范,UI 体验非常优秀&#xff0c…

FindMy技术用于键盘

键盘是我们生活中不可或缺的输入工具,是人与计算机之间沟通的桥梁,无论是编写文档、浏览网页、玩游戏、或是进行复杂的数据分析,键盘都在其中发挥着关键的作用。此外,键盘还是各种软件的快捷键操作的关键。通过熟练地运用快捷键&a…

【Axure高保真原型】树形表格_多选效果

今天和大家分享树形表格_多选效果的原型模板,点击树的箭头可以展开或者收起子节点,点击多选按钮可以选中或取消选择该行以及子级行内容,同时反选父级行内容,父级行内容能根据子级选中的数量自动反选,包括全选、半选和未…

数据结构 模拟实现LinkedList双向不循环链表

目录 一、双向不循环链表的概念 二、链表的接口 三、链表的方法实现 (1)display方法 (2)size方法 (3)contains方法 (4)addFirst方法 (5)addLast方法 …

网络连接 UDP2,UDP Connect, bind, send, recieve认知, -入门8

LWIP编程接口有RAW, NETCONN, SOCKET 2.UDP函数的理解 #define UDP_SERVER_PORT 8000 //PC side #define UDP_CLIENT_PORT 1234 // ctrl board side //PC IP address #define DEST_IP_ADDR0 192 #define DEST_IP_ADDR1 168 #define DEST_IP_ADDR2 3 #define DEST_IP_ADDR3 11…

2023-2024学年上学期算法设计与分析题期末考试模拟卷

2023-2024学年上学期算法设计与分析题期末考试模拟卷 文章目录 2023-2024学年上学期算法设计与分析题期末考试模拟卷单选题程序填空题输入格式:输出格式:输入样例1:输出样例1: 主观题 注意:该题集非标准答案,仅供参考,如果异议,请…

淘宝商品详情API接口(item_get-获得淘宝商品详情)主图,属性,sku,价格,搜索商品列表

淘宝开放平台提供了API接口,允许开发者获取淘宝商品的相关信息。为了获取商品详情,您可以使用 item_get API接口。以下是如何使用此API接口来获取商品的主图、属性、SKU、价格以及搜索商品列表的简要说明: 公共参数 名称类型必须描述keyStr…

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

本章:将展示SpringBoot集成Redis三种客户端的配置要点和常见应用示例;下章:自行实现一个方法级的缓存注解,简化版的Cacheable,使初学者加深对Spring缓存框架的理解。 一、Lettuce客户端 Lettuce 是一种可扩展的、线程…

Java接口和抽象类的区别?

Java接口和抽象类的区别? Java接口和抽象类的含义: 接口(Interface): 含义: 接口是一种抽象类型,它定义了一组抽象方法,但不能包含具体实现。接口可以包含常量和默认方法&#xff0c…

机器学习模型超参数优化,最频繁使用的5个工具包

优化超参数始终是确保模型性能最佳的关键任务。通常,网格搜索、随机搜索和贝叶斯优化等技术是主要使用的方法。 今天分享几个常用于模型超参数优化的 Python 工具包,如下所示: scikit-learn:使用在指定参数值上进行的网格搜索或随…

HarmonyOS应用开发学习笔记 包名、icon图标,应用名修改 UIAbility组件介绍、UIAbility启动模式、UIAbility组件基本用法

目前HarmonyOS应用主推的是Stage模型开发 一、Stage模型基本概念 项目描述UIAbility组件UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后&#xf…