流水线技术

流水线技术

一.流水线处理的概念

⭐1.流水线方式的引入

若将一重复的处理过程分解为若干子过程,每个子过程都可在专用设备构成的流水线功能段上实现,并可与其他子过程同时运行,则这种技术称为流水线技术。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⭐2.流水线的一般结构

在这里插入图片描述

⭐3.流水线的分类

1)按位于计算机系统的层次划分

  • 系统级流水线:在多计算机系统中由多个处理机串行构成的流水线。
  • 处理器级流水线:在处理器内部由多个部件构成的流水线。(如指令流水线)
  • 部件级流水线:在处理器某部件内部由多个子部件构成的流水线。(如运算器中的浮点运算流水线,控制器中的微程序控制单元流水线)

2)按功能强弱划分

  • 单功能流水线
  • 多功能流水线

3)按任务顺序划分

  • 顺序流水线
  • 异步流水线

4)按处理数量划分

  • 标量流水线
  • 超标量流水线
  • 向量流水线
  • 超长指令字流水线

二.流水线性能度量☀️

1.时空图

在这里插入图片描述


2.吞吐率

吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量

1)最大吞吐率

最大吞吐率 T P m a x TP_{max} TPmax是指流水线在达到稳定状态后所得到的吞吐率

  • 假设流水线各段运行时间相等,为一个时钟周期 T C L K T_{CLK} TCLK,则 T P m a x = 1 T C L K TP_{max}=\frac{1}{T_{CLK}} TPmax=TCLK1

  • 假设流水线各段运行时间不等,第i段的运行时间为 t i t_i ti,则
    T P m a x = 1 m a x { t i } = 1 t TP_{max}=\frac{1}{ max \{ t_i \} }= \frac{1}{ t } TPmax=max{ti}1=t1

  • 流水线的瓶颈:最大吞吐率取决于流水线中最慢一段所需要的时间,所以最慢的一段成为流水线的瓶颈

  • 消除流水线瓶颈的方法:(1)细分瓶颈段,通过细分,使流水线每一段运行时间尽可能短且一致
    (2)重复设置瓶颈段:当瓶颈段不便于细分时,可以采用重复设置瓶颈段(即资源复用)的方法。

2)实际吞吐率

若流水线由m段组成,则完成n个任务所达到的吞吐率称为实际吞吐率,记为TP

在这里插入图片描述


3.加速比

若流水线为m段,加速比S定义为程序在非流水线结构上执行时间T(1)与在等功能的流水线上执行时间T(m)之比,即
S = S n ( m ) = T n ( 1 ) T n ( m ) S=S_n(m)=\frac{T_n(1)}{T_n(m)} S=Sn(m)=Tn(m)Tn(1)


4.效率

效率指流水线的设备利用率。
从时空图上看,效率就是n个任务所占的时空区与m个段总的时空区之比。
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

三.性能度量例题分析☀️

例题1

在这里插入图片描述
第一问解答分析:
在这里插入图片描述
第二问解答分析:

  • 流水线气泡概念的引入:假设流水线事先不知道指令4是否发生跳转,而将指令4后面的指令顺序执行,如下图所示:

在这里插入图片描述

  • 当指令4处理完毕到达S10以后,这时发现指令4执行完之后应该发生跳转,即应该直接执行指令10,而中间的指令5~指令9不应该被执行。此时流水线需要进行清空处理,清空正在执行的指令并将计算机状态恢复到指令5 ~指令13执行之前。再从指令10开始重新填装流水线。重新填装流水线的这一段时间即称为流水线气泡,重新填装的时间是(m-1)*t。在流水线气泡时间内,不会有任务流出流水线。

在这里插入图片描述

例题2

在这里插入图片描述

  • 当该流水线采用异步时钟控制时,分析如下:

在这里插入图片描述

  • 在异步流水线中,任务会被尽可能快地传到下一个段进行处理,即当任务在当前段已经处理完成,而下一段处于空闲状态时,当前段会立即将任务传送给下一段,即便这两段的运行时间并不相同。这样逻辑的实现借助于段与段之间采用了不同的时间控制信号。

在这里插入图片描述

  • 通过对比本题中异步流水线与同步流水线的时空图,可以发现采用异步流水线的好处是:流水线的填充时间会有所缩短。但当填充时间结束后,两种流水线都是间隔同样的流水线周期完成一个任务,当任务量较大时,吞吐率相同。不过异步流水线的控制电路复杂,实现起来困难。

在这里插入图片描述
例题3

在这里插入图片描述

  • 分析:在静态双功能流水线中,首先先计算四个点积的乘法任务,四个任务进行流水线处理,由于是静态流水线,只有当最后一个乘法任务完全结束后,才能开始进行加法任务;两个加法任务进行流水线处理之后,由于最后一个加法任务的两个加数正好是前两个加法任务的结果,所以必须等前两个加法任务全部处理完成之后,才能将最后一个加法任务送入流水线。

在这里插入图片描述

在这里插入图片描述

  • 如果将该流水线改为双功能动态流水线,则分析如下:在动态流水线中,加法任务可以和乘法任务一起处理,只要不存在数据相关。所以当第一个加法任务的两个加数已经通过乘法任务输出后,即可立刻将该加法任务送入流水线进行处理。

在这里插入图片描述

在这里插入图片描述


四.流水线相关(冒险)判定及处理


1.结构相关

结构相关概念:当硬件资源不支持在同一个时钟周期内同时重叠执行多条指令时,出现结构相关。

结构相关出现原因:

  • 1.部分功能单元没有充分流水(即存在流水线瓶颈)
    • 解决方法:使每一段运行时间尽可能均衡

 

  • 2.资源冲突:两个以上的段需要同时访问一个硬件资源发生冲突

    • 解决资源冲突的方法:
      • (1)增加资源副本(哈佛结构)
      • (2)改变资源以便它们能并发使用(例如寄存器重命名)
      • (3)延迟流水线的冲突段

2.数据相关

数据相关概念:当一条指令结果还未生效时,该结果就被作为后续指令的操作数时,数据相关出现。

数据相关类型

  • 先写后读相关
  • 先读后写相关
  • 写-写相关

数据相关解决方法:

(1)采用转发技术(直通技术):在某些流水线段之间设置直接连接通路(反馈)
在这里插入图片描述

在这里插入图片描述

(2)增加专用硬件:使用互锁硬件,插入流水线气泡使指令的执行推后(影响效率)

(3)利用编译器:对指令乱序处理,流水线调度/指令调度,使不相关的指令先执行

(4)对寄存器的读写做特别设计


3.控制相关

控制相关概念:转移指令的执行必然导致流水线上已有的一些指令变为不可用,需要将转移目标处的指令重新发送到流水线中,流水线出现断流或停顿,引起控制相关。

控制相关解决方法:

(1)冻结流水线:一旦在指令译码阶段检测到分支指令,就在转移目标地址确定前清除所有分支指令后的指令,并插入流水线气泡。当确定新的PC值后才重新填装流水线。

(2)静态分支预测:即预测分支总会发生跳转或总不会发生跳转,也可以由编译器提前预测告诉硬件。

(3)动态分支预测:通过记录分支指令的近期运行历史,并以此作为预测的依据,来提高分支预测的准确度。

(4)延迟分支:利用编译器对指令代码进行重新排序,或在分支指令之后插入有用指令或空操作指令,使分支延迟发生时流水线尽可能保持在充满状态。分支开销为n的指令看成延迟长度为n的分支指令,后紧跟n个延迟槽,流水线遇到分支指令时正常处理并执行延迟槽中的指令。

  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值