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

文章目录

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

指令流水线

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

指令流水线的概念

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

取指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.mzph.cn/news/600833.shtml

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

相关文章

Linux 修改主机名称并通过主机名称访问服务器

一、命令提示符简介 当我们打开终端的时候,我们要输入命令的左边就是命令提示符,如下图,接下来介绍下他们分别代表什么含义 1、root 和 xhf 表示的是当前登录的用户名称。 2、node2 表示的当前的主机名称。 3、~ 表示的是当前的目录 4、# 表示…

基于缺陷模式的软件测试

基于缺陷模式的软件测试是一种常见的软件测试方法,旨在发现和识别软件系统中可能存在的缺陷模式。它通过分析过去的软件缺陷数据,构建缺陷模式库,并基于这些模式来设计测试用例。 该方法的基本步骤如下: 收集缺陷数据&#xff1a…

Python中__call__属性的使用指南详细解析

概要 在Python中,类可以具有许多特殊方法,以控制其行为。其中之一是__call__方法,它使一个类的实例可以像函数一样被调用。本文将深入探讨__call__方法的用途、示例和实际应用。 __call__方法的基本用法 __call__方法可以将一个类的实例作为…

【数据结构和算法】字符串解码

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 什么情况会用到栈 2.2 方法一:辅助栈法 三、代码 3.1 方法一:辅助栈法 四…

十年磨一剑

随着不停的优化和改进,JRT开发已经接近尾声,计划过年时候低调发布JRT1.0,框架目标:只做信创下的医疗龙头而不是信创下的苟活着。 十年前,我从南京踏上去沈阳的火车,去东北参加三方协议的启航计划&#xff…

DS|图(拓扑排序和最短路径)

题目一:DS图 -- 图的最短路径(无框架) 题目描述: 给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。 输入要求: 第一行输入t,表示有t个测试实例 …

嵌入式实时操作系统的设计与开发——启动内核

RTOS的引导模式 RTOS的引导是指将操作系统装入内存并开始执行的过程。 在嵌入式系统的实际应用中,针对不同应用环境,对时间效率和空间效率有不同的要求。 时间限制主要包括两种情况:系统要求快速启动和系统启动后要求程序能实时运行。空间限…

人工智能:模拟人类智慧的科技奇迹

人工智能(Artificial Intelligence,简称AI)作为一项模拟人类智慧行为的科学与技术,正以惊人的速度改变着我们的世界。它旨在让计算机系统具备感知、推理、学习、决策和交互等人类智慧的能力,成为当今科技领域的巨大突破…

SpringCloud微服务 【实用篇】| Dockerfile自定义镜像、DockerCompose

目录 一:Dockerfile自定义镜像 1. 镜像结构 2. Dockerfile语法 3. 构建Java项目 二: Docker-Compose 1. 初识DockerCompose 2. 部署微服务集群 前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

Jupyter Lab | 在指定文件夹的 jupyter 中使用 conda 虚拟环境

Hi,大家好,我是源于花海。本文主要了解如何在指定文件夹的 jupyter 中使用 conda 虚拟环境,即在 conda 里面创建虚拟环境、将虚拟环境添加至 jupyter lab/notebook、安装软件包。 目录 一、创建虚拟环境 二、激活并进入虚拟环境 三、安装 …

OpenAI 拟每年投入 100-500 万美元,以获取新闻使用许可

最近两位媒体公司高层透露,OpenAI正积极与新闻出版公司进行谈判,提出每年投入100万至500万美元的费用,以获取将新闻文章用于训练大型语言模型的授权。 OpenAI目前正与大约十几家媒体公司进行谈判,但有报道称,即使对于…

【LeetCode】197. 上升的温度

表: Weather ------------------------ | Column Name | Type | ------------------------ | id | int | | recordDate | date | | temperature | int | ------------------------ id 是该表具有唯一值的列。 该表包含特定日期的温…

基于 Python+Django 技术栈,我开发了一款视频管理系统

学习过程中,遇到问题可以咨询作者 大家好,作为一名开发人员,平时比较愿意动手尝试各种有意思工具,因为笔者非常喜欢观看视频,尤其是YouTube、bilibili都是笔者非常喜欢的视频网站,所以想自己实现一个视频点…

Anaconda + Pytorch 超详细安装教程

Anaconda Pytorch 超详细安装教程 安装 Anaconda 略,自行百度即可 安装 Pytorch 虚拟环境 第一步 选择 env第二步 创建第三步 填写环境名称和选择 python 版本号 第四步 打开 https://pytorch.org/ 选择 pytorch 版本,我这里选择的是 GPU 版本 即 CUDA 11.8,也…

Unity组件开发--传送点

本组件仅实现A传送点到B传送的功能,是可以双向传送的,如果只要单向传送,可以另外改脚本实现; 先看效果: unity组件传送点演示 1.传送组件shader是怎么写的:这种效果的实现方案 shader编辑器是这样的&#…

国内代理IP推荐!

国内代理IP,日更新50w IP,全国200城市,可利用率高达99%。提供HTTP/HTTPS/SOCKS5协议,满足数据采集、爬虫业务需求。丰富的api参数选择,可自由选择时效地区等,按需求过滤重复资源。低延迟,提供丰…

Linux第20步_在虚拟机上安装“Visual Studio Code”

1、双击windows系统桌面上的“FileZilla Client.exe”,打开FTP客户端,点击03软件下的Visual Studio Code,发现code_1.50.1-1602600906_amd64。 2、点击“文件”,然后点击“站点管理器”,见下图操作: 3、点…

Flask 会员列表展示

感谢编程浪子师傅的源码信息分享 web/controllers/member/Member.py # -*- coding: utf-8 -*- from flask import Blueprint,request,redirect,jsonify from common.libs.Helper import ops_render,iPagination,getCurrentDate,getDictFilterField,selectFilterObj from comm…

Spring学习之——AOP(面向切面)

AOP 概念 AOP:全称是Aspect Oriented Programming即:面向切面编程。 简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对程序进行增强&#xff…

24年初级会计资格考试报名信息采集流程共10大步骤,千万不要搞错

2024年初级会计资格考试报名信息采集流程共10大步骤,不要搞错哦; 第一步:输入证件号、点击登录 第二步:阅读采集须知 第三步:填写个人信息(支付宝搜索"亿鸣证件照"或者微信搜索"随时照&q…