流水线技术


把一个重复的过程分解为若干个子过程(相当于上面的工序),每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样每个子过程就可以与其他子过程并行进行,这就是流水线技术。

流水线中的每个子过程及其功能部件称为流水线的级或段

流水线的段数称为流水线的深度。

流水线的通过时间和排空时间

通过时间和排空时间分别是指第一个任务和最后一个任务进入流水线到流出结果的那个时间段。在这两个时间段中,流水线都不是满载,经过“通过事件”后,流水线进入满载工作状态。

流水线的分类

单功能流水线和多功能流水线

单功能流水线只能完成一种固定功能。

多功能流水线的各段可以通过不同的组合实现不同的功能。

静态流水线与动态流水线

静态流水线,同一时间内,多功能流水线只能实现一种功能,必须等这种功能的任务全部结束,才可以选择其他功能。

动态流水线,同一时间内,多功能流水线中的各段就可以按照不同的方式连接。

部件级流水,处理机级流水,处理机间流水

部件级流水(运算操作流水线)把处理机的运算部件分段,比如分成加法、阶乘、乘法。

处理机级流水,把指令的解释过程按照流水方式处理,如取指令——译码——计算——取结果。

处理机间流水,多个处理机串行连接起来,对同一数据流进行处理,这一般属于异构型多处理机系统。

线性流水线和非线性流水线

线性流水线是线性的,不能跳过也不能返回。

非线性流水线有反馈回路,可以跳过也可以多次通过同一个段。

顺序流水线和乱序流水线

顺序流水线:流水线输入任务顺序和流水线里的一致

乱序流水线:可以先执行后进入的任务,又叫做无序流水线、错序流水线,异步流水线。

流水线的性能指标

吞吐率

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

TP=nTk(n为任务数,Tk是处理完成n个任务所用的时间)TP=\frac{n}{T_k}(n为任务数,T_k是处理完成n个任务所用的时间) TP=Tk​n​(n为任务数,Tk​是处理完成n个任务所用的时间)

  • 对于各段时间相等的流水线

Tk=kΔt+(n−1)Δt=(k+n−1)ΔtT_k=k\Delta{t}+(n-1)\Delta{t}=(k+n-1)\Delta{t} Tk​=kΔt+(n−1)Δt=(k+n−1)Δt

TP=n(k+n−1)ΔtTP=\frac{n}{(k+n-1)\Delta{t}} TP=(k+n−1)Δtn​

  • 对于各段时间不完全相等的流水线

TP=n∑i=1kΔti+(n−1)max(Δt1,Δt2......Δtk)TP=\frac{n}{{\sum}^k_{i=1}\Delta{t_i}+(n-1)max(\Delta{t_1},\Delta{t_2}......\Delta{t_k})} TP=∑i=1k​Δti​+(n−1)max(Δt1​,Δt2​......Δtk​)n​

因为时间不相等是,流水线必须等待最长的那一段结束才能继续进行,这个最长的段叫做瓶颈段。

解决瓶颈段的方法是:

1.细分瓶颈段,分成时间相等的段。

2.重复设置瓶颈段,并行工作,依次错开任务,需要添加数据分配器和数据收集器。

加速比

完成同样任务,不使用流水线和用流水线的时间之比为加速比。

  • 不使用流水线(顺序执行所用的时间为TsT_sTs​),使用流水线的所用时间为TkT_kTk​,可以得出效率为:

S=TsTk=nkk+n−1(各段时间相等时)=n∑i=1kΔti∑i=1kΔti+(n−1)max(Δt1,Δt2......Δtk)(各段时间不等时)S=\frac{T_s}{T_k}=\frac{nk}{k+n-1}(各段时间相等时)=\frac{n\sum^k_{i=1}\Delta{t_i}}{{\sum}^k_{i=1}\Delta{t_i}+(n-1)max(\Delta{t_1},\Delta{t_2}......\Delta{t_k})}(各段时间不等时) S=Tk​Ts​​=k+n−1nk​(各段时间相等时)=∑i=1k​Δti​+(n−1)max(Δt1​,Δt2​......Δtk​)n∑i=1k​Δti​​(各段时间不等时)

效率

流水线的效率是指流水线中的设备实际使用时间与整个运行时间的比值。即流水线设备的利用率。

E=S(加速比)k=n个任务实际占用的时空区k个段总的时空区E=\frac{S(加速比)}{k}=\frac{n个任务实际占用的时空区}{k个段总的时空区} E=kS(加速比)​=k个段总的时空区n个任务实际占用的时空区​

参考61页例子理解效率

流水线的额外开销

建立时间是指在触发写操作的时钟信号到达之前寄存器输入必须保持稳定的时间。

传输延迟是指时钟信号到达后寄存器输出可用的时间。

时钟偏移开销是指流水线中时钟到达各流水寄存器的最大相差时间(时钟到达各流水寄存器的时候不是完全相同)

流水线相关和冲突

经典流水线

IF (取指令PC增加4)->ID(指令译码)->EX(执行/有效地址计算周期)->MEM(存储器完成/分支完成周期,分支会在这个时候修改PC)->WB(写回周期)

  • 为了必见IF访存和MEM访存冲突,必须采用分离的指令存储器和数据存储器,一般采用分离的指令Cache和数据Cache
  • ID需要读寄存器,WB需要写寄存器,所以把写操作安排在时钟周期的前半拍,把读操作安排在时钟周期的后半拍,可以用实线表示进行了相关操作。

相关

数据相关

指令i在前,j在后,有两种情况

真数据相关:写后读冲突

1.指令j使用了指令i产生的结果

2.指令j和指令k数据相关,而指令k和指令i数据相关

名相关

名指的是寄存器的名字或者存储器的名字,可以通过换名解决。

指令i在前,j在后,有两种情况

1.反相关:如果指令j写的名和指令i读的名相同的情况。

2.输出相关:指令j和指令i写相同的名

控制相关

分支指令引起的相关。

带来两个控制

1.与分支指令控制相关的指令不能被移动到该分支之前。

2.如果一条指令与某分支指令不存在控制相关,就不能把该指令移动到该分支后。

流水线冲突

1.结构冲突

硬件资源不足满足不了指令重叠执行的要求,比如当指令和数据公用一个寄存器可能产生冲突。

2.数据冲突

指令在流水线重叠执行,需要用到前面指令的执行结果

指令i在前,j在后,有如下冲突

写后读冲突(RAW):指令j用到指令i得计算结果。

写后写冲突(WAW):指令j在指令i之前就进行了写入操作,适用于不止一个段可以进行写的流水线和单条指令会停顿的流水线。

读后写冲突(WAR):与反相关有关,这种时候是在指令并行的情况可能发生。

可以使用旁路(定向/短路)和停顿(气泡),还可以通过编译器解决数据冲突

  • 对于一个经典的五段MIPS流水线而言,所有的数据冲突均可以在ID段检测到,如果存在数据冲突,就在相应的指令流出ID段之前将其暂停,完成该工作的硬件称为流水线的互锁机制。
  • 检测冲突是通过比较寄存器地址是否相等来实现。具体看83页

3.控制冲突

流水线遇到分支指令和其他会改变PC值得指令

解决分支延迟的方法

1.预测分支失败

2.预测分支成功

3.延迟分支:在分支指令后面加上几条指令,分支指令后面这m条指令的位置被称为延迟槽,大多数计算机延迟槽个数是一个。

延迟槽上的指令可以选择:

1.从前调度

2.从目标处调度(需要复制指令而不是改变指令位置)

3.从失败处调度(需要复制指令而不是改变指令位置)

复制指令是因为其他路径上可能也需要这条指令,注意延迟分支需要改变目标地址,具体看81页。

为了提高编译器在延迟槽中放入有用指令的能力,可以采用分支取消机制,当分支的实际执行方向和事先所预测的一样时执行分支延迟槽中的指令,否则就将分支延迟槽中的指令转化成一个空操作。

简单MIPS流水线实现

一般不会采用单周期实现方案,主要原因是:

1.对于大多数CPU来说单周期实现效率很低,因为不同的指令所需完成的操作差别相当大,因而所需要的时钟周期时间也大不一样。

2.单周期实现时需要重复设置某些功能部件(例如实现PC加4的加法器),而在多周期实现方案中这些部件是可以共享的。

load互锁

由于使用load的结果而引起的流水线互锁称为load互锁。

习题

1

【单选题】

关于流水线的下列说法,错误的是( )。

  • A、

    流水线能够提高吞吐率;

  • B、

    流水线提高了器件的利用率;

  • C、

    流水线提高了单个任务的处理速度;

  • D、

    消除流水线瓶颈的方法有“瓶颈段细分方法”和“瓶颈段重复设置方法”

正确答案: C

流水方式是指——多部件同时解释多条指令

有一个流水线由4段组成,S1,S2,S4各段的时间都是Δt,S3段的时间是3Δt。 如下图:

问:

(1)当在流水线的输入端连续地每Δt 时间输入一个任务时,该流水线会发生( )现象,原因是( )。

(2)此流水线的最大吞吐率TPmax为( );如果每3Δt输入一个任务,连续处理9个任务时的实际吞吐率TP为( ),其效率E为( )。

(3)当每段时间不变时,采用重复设置瓶颈段方法解决流水线瓶颈问题,仍连续处理9个任务时,与(2)相比,其吞吐率提高的倍数N为( );此时的加速比SP为( )。

第一空: 流水线阻塞,出现了S3功能段的结构冲突;第二空: TPmax=1/3Δt;TP=9/30Δt;E=9/20;
第三空: N=2.14 ;SP=3.86

系统结构复习——流水线技术相关推荐

  1. 计算机系统结构:流水线技术总结

    文章目录 什么是流水线? 流水线的分类 流水线的性能指标 流水线设计中的若干问题 非线性流水线的调度 单功能非线性流水线的最优调度 多功能非线性流水线的调度 一条经典的5段流水线 相关与流水线冲突 结 ...

  2. 计算机中流水线的应用,计算机中的流水线技术

    计算机中的流水线技术 杨振华;陈明;赵建勋 [期刊名称]<科技信息> [年(卷),期]2009(000)003 [摘要]本文介绍了计算机中广泛采用的流水线技术,对各种各样的流水线进行了分类 ...

  3. 系统结构期末复习(三)流水线技术

    目录 流水线的基本概念 流水线的性能指标 流水线的相关与冲突 流水线的实现 向量处理机 1. 流水线的基本概念 各个主要部件的功能 相关信息 运算器 存储器 控制器 功能 算术.逻辑运算 存放指令和数 ...

  4. 计算机系统结构复习(四):Pipelining流水线

    计算机系统结构复习(四):Pipelining流水线 流水线相关概念与特点 流水线的相关概念 流水线主要特征 流水线的分类 指令级与部件级 线性与非线性 静态与动态(有大题) 流水的5个阶段:通过时间 ...

  5. 计算机系统结构:Pipelining 基本流水线技术

    如何让程序运行更快? CPU性能公式:CPU时间 = CPI × 所执行的指令条数 × 时钟周期时间 关于流水线的几个问题: Pipeline Hazard(Data hazard.structure ...

  6. 计算机系统结构复习(五):ILP指令集并行

    计算机系统结构复习(五):ILP指令集并行 指令集并行和两种方式 基本快 相关与从冲突的关系 循环展开 循环展开的注意事项 动态分支预测 动态分支预测与静态分支预测的区别 分支历史表BHT 一位分支历 ...

  7. 计算机系统结构复习(六):Limits to ILP and SMT指令级并行的限制和同时多线程

    计算机系统结构复习(六):Limits to ILP and SMT指令级并行的限制和同时多线程 指令级并行的限制 指令窗口 TLP线程级并行 DLP数据级并行 线粒度切换方式 同时多线程 (SMT ...

  8. 计算机系统结构复习:课程思维导图

    计算机系统结构:全课程思维导图 前言 课程思维导图 课程脉络: 链接 前言 DUT的计算机系统结构长期以来都是英文ppt.时值疫情期间,复习时稍有不便,再加上CA的内容本身比较琐碎.遂在此对知识进行一 ...

  9. 自考计算机系统结构总结知识点,自考计算机系统结构复习资料.doc

    自考计算机系统结构复习资料 本章中,有以下内容是要重点复习的: 关于计算机系统结构的概念: 计算机系统结构是把各个 功能部件 组成一个系统,这些部件可以是硬件.软件或者两者的混合体. 计算机系统结构是 ...

最新文章

  1. css3制作八棱锥_CSS基础八部分-第二部分
  2. [算法题] Add Two Numbers
  3. 大数据中心周边辐射大吗_PETCT有辐射,PETCT对陪同人员的影响大吗?
  4. pymysql dataframe 写入sql
  5. Python-面向对象的编程语言
  6. 生成Apk遇到的问题
  7. AFNetWorking网络请求
  8. LeetCode 334. 递增的三元子序列
  9. matlab计算频域动态性能指标,基于MATLAB自动控制系统时域频域分析与仿真.doc
  10. 2小时学会java_2小时学会springboot源码
  11. Python--MySql学习(10.30)
  12. php表单yii2,yii2教程-ActiveForm表单组件
  13. 新版Idea设置代码提示背景色
  14. ResHacker NSIS获取控件ID居家CODE必备良药!!!!!
  15. 人生就是一场与自己的较量,社科院杜兰金融硕士项目引领你走得更远
  16. 有哪些简洁好看且能高效整理信息的便签软件
  17. 看蘑菇街发展历程全面解析
  18. DPDK内存管理 ----- (四) rte_mbuf
  19. 剑指offer(第二版)读书笔记以及编程题目python版答案(二)
  20. 停止抱怨的力量是多么强大-记录感受

热门文章

  1. LocalDate、LocalTime、LocalDateTime常用方法
  2. 训练TFlite模型
  3. openpyxl3.0官方文档(16)—— 股价图
  4. 混频器与变频器在射频通信中的区别
  5. 企业公关形象传播及效果评估
  6. 优秀博客学习资源(持续更新)
  7. 快手给好友发消息显示服务器繁忙,发语音对方忙线中是什么意思
  8. cfree下面显示运行程序错误_七夕用python给男朋友写的小程序,感动哭了。
  9. 对WEB标准以及W3C的理解与认识?
  10. python pptp模块_[原]解决PPTP中Module ppp_mppe not found的问题