前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机组成原理 指令流水线

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

原创
作者头像
onenewcode
发布2024-01-25 20:32:53
2300
发布2024-01-25 20:32:53
举报
文章被收录于专栏:计算机组成原理

指令流水线

指令流水线的概念

指令流水线执行方式

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

顺序执行方式

取指1

析指1

执行1

中断1

取指2

析指2

执行2

中断2

...

...

...

...

假设机器周期为$\triangle t$,那么顺序执行n条指令的执行时间为$4n \triangle t$

流水线执行方案

执行5条指令的时间为: $5\triangle t+4\triangle t$

执行n条指令的时间为: $T+(n-1)\triangle t$

流水线性能分析

流水线的吞吐率

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

$TP=\frac{n}{T_k}$

$TP=\frac{n}{(k+n-1)\triangle t}$

流水线的加速比

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比,称为流水线的加速比。设T,表示不使用流水线时的执行时间,即顺序执行所用的时间:K表示使用流水线时的执行时间,则计算流水线加速比(S)的基本公式为

$TP=\frac{T_0}{T_k}$

$TP=\frac{kn\triangle t}{(k+n-1)\triangle t}= \frac{kn}{k+n-1} $

流水线的效率

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

n个任务占用的时空区有效面积T。

n个任务所用的时间与k个流水段所围成的时空区总面积

$TP=\frac{T_0}{kT_k}$

影响流水线的因素

流水线的问题

每个阶段的时间不一样,所以我们取得阶段周期都是最大的那个!

每个阶段都有缓冲区,这种缓冲区用于保存本阶段的结果,用于下一阶段使用

结构相关 (资源冲突)

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

解决办法

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

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

解决办法:

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

数据的基本操作: 读 (R) 、写(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次)

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

超长指令字

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

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 指令流水线
    • 指令流水线的概念
      • 流水线性能分析
        • 影响流水线的因素
          • 流水线分类
          • 我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档