第三章 流水线技术
文章目录
链接: https://pan.baidu.com/s/1WyftXZzso0_ePWaMDDCUPw
提取码:hu2b
3.1 流水线的基本概念
3.1.1 什么是流水线
- 计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似, 因此称为流水线技术
- 从本质上讲,流水线技术是一种时间并行技术。
流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。
指令流水线:
把指令的解释过程分解为分析和执行两个子过程,并让这两个子过程分别用独立的分析部件和执行部件来实现。理想情况:速度提高一倍
浮点加法流水线:
- 把流水线技术应用于运算的执行过程,就形成了运算操作流水线,也称为部件级流水线。
- 把浮点加法的全过程分解为求阶差、对阶、尾数相加、规格化4个子过程。理想情况:速度提高3倍
时空图:
- 时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标代表时间,纵坐标代表流水线的各个段。
- 4段指令流水线的时空图
流水技术的特点:
-
流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
-
流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。(时间长的段将成为流水线的瓶颈。)
-
流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
作用:在相邻的两段之间传送数据,以保证提供后面要用到的数据,并把各段的处理工作相互隔离。
-
流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
-
流水线需要有通过时间和排空时间。
通过时间:第一个任务从进入流水线到流出结果所需的时间。
排空时间:最后一个任务从进入流水线到流出结果所需的时间。
3.1.2 流水线的分类
从不同的角度和观点,把流水线分成多种不同的种类。
1.单功能流水线与多功能流水线(按照流水线所完成的功能来分类)
-
单功能流水线:只能完成一种固定功能的流水线。
-
多功能流水线:流水线的各段可以进行不同的连接,以实现不同的功能。
例:ASC的多功能流水线
2.静态流水线与动态流水线(按照同一时间内各段之间的连接方式对多功能流水线做进一步的分类)
静态流水线:在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作。对于静态流水线来说,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。
动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
优点
灵活,能够提高流水线各段的使用率,从而提高处理速度。
缺点
控制复杂。
例如:ASC的8段流水线
3.部件级、处理机级及系统级流水线(按照流水的级别来进行分类)
- 部件级流水线(运算操作流水线):把处理机的算术逻辑运算部件分段,使得各种类型的运算操作能够按流水方式进行。
- 处理机级流水线(指令流水线):把指令的解释执行过程按照流水方式处理。把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。
- 系统级流水线
4.线性流水线与非线性流水线(按照流水线中是否有反馈回路来进行分类)
线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。
非线性流水线:流水线中除了有串行的连接外,还有反馈回路。
非线性流水线的调度问题
确定什么时候向流水线引进新的任务,才能使该任务不会与先前进入流水线的任务发生冲突——玺用流水段。
5.顺序流水线与乱序流水线(根据任务流入和流出的顺序是否相同来进行分类)
顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。每一个任务在流水线的各段中是一个跟着一个顺序流动的。
乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出)。也称为无序流水线、错序流水线、异步流水线
**6.**标量处理机与向量流水处理把指令执行部件中采用了流水线的处理机称为流水线处理机。
标量处理机:处理机不具有向量数据表示和向量指令,仅对标量数据进行流水处理。
向量流水处理机:具有向量数据表示和向量指令的处理机。
向量数据表示和流水技术的结合。
3.2 流水线的性能指标
3.2.1吞吐率
吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。TP = n / Tk
其中:n 为任务数; TK 为完成n个任务所用时间
3.3.2加速比
加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
S = 顺序执行时间T0 / 流水线执行时间Tk
- 各段执行时间相等,输入任务连续的情况下:S = kn△t / (k + n - 1)△t = k*n / (k + n -1) 当n—>无穷大时, S = k
3.3.3效率
效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。
由于流水线有通过时间和排空时间,所以在连续完成n个任务的时间内,各段并不是满负荷地工作。
3.2.4 流水线的性能分析举例(略)
3.2.5 流水线设计中的若干问题
- 瓶颈问题
- 流水线的额外开销
- 冲突问题
3.3 非线性流水线的调度
3.4 流水线的相关与冲突
3.4.2.1相关
相关:两条指令之间存在某种依赖关系。
如果两条指令相关,则它们就有可能不能在流水线中重叠执行或者只能部分重叠执行。
相关有3种类型
- 数据相关(也称真数据相关)
- 当数据的流动是经过寄存器时,相关的检测比较直观和容易。
- 当数据的流动是经过存储器时,检测比较复杂。
相同形式的地址其有效地址未必相同。
形式不同的地址其有效地址却可能相同。
-
名相关
名:指令所访问的寄存器或存储器单元的名称。如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。
指令j与指令i之间的名相关有两种:
反相关:如果指令j写的名与指令i读的名相同,则称指令i和j发生了反相关。
指令j写的名=指令i读的名
输出相关:如果指令jj和指令i写相同的名,则称指令i和j发生了输出相关。
指令j写的名=指令i写的名名相关的两条指令之间并没有数据的传送。
如果一条指令中的名改变了,并不影响另外一条指令的执行。
- 换名技术
换名技术:通过改变指令中操作数的名来消除名相关。 - 对于寄存器操作数进行换名称为奇存器换名。
既可以用编译器静态实现,也可以用硬件动态完成。
- 换名技术
-
控制相关
控制相关是指由分支指令引起的相关。
为了保证程序应有的执行顺序,必须严格按控制相关确定的顺序执行。典型的程序结构是“if-then”结构。
3.4.2.2流水线冲突
流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。
流水线冲突有3种类型:
结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。
解决办法1:插入暂停周期 (“流水线气泡”或“气泡”) ,如下图所示:
数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。
通过定向技术减少数据冲突引起的停顿(定向技术也称为旁路或短路)
关键思想:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的
地方,那么就可以避免停顿。
控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
带来的几个问题:
导致错误的执行结果。
流水线可能会出现停顿,从而降低流水线的效率和实际的加速比。
我们约定当一条指令被暂停时,在该暂停指令之后流出的所有指令都要被暂停,而在该暂停指令之前流出的指令则继续进行(否则就永远无法消除冲突)。
3.5 流水线的实现
3.5.1 MIPS的一种简单实现
实现MIPS指令的一种简单数据通路