5.1 重叠方式
5.1.1 重叠原理与一次重叠
原理:时间重叠
指令的顺序执行:指的是各条指令之间顺序串行地执行,每条指令内部的各个微操作也顺序串行的执行。
解释及其指令的微操作可归并成取指令
、分析
和执行
三个阶段。
三种执行方式:
- 顺序执行方式;
顺序解释指的是各条质量之间顺序串行进行,每条指令内部的各个微操作也顺序串行地进行。
优点:控制简单
,转入下条指令的时间
易于控制
缺点:处理机执行指令的速度慢;功能部件的利用率很低 - 一次重叠执行方式:
指令分析部件和指令执行部件任何时候都只有相邻两条指令
在重叠解释的方式为“一次重叠”;执行k
与分析k+1
重叠。
优点:程序的执行时间减少了近1/3;功能部件的利用率明显提高
缺点:需要增加一些硬件,控制过程变复杂了 - 二次重叠执行方式:有两个阶段重叠;
优点:程序的执行时间减少了近2/3;部件的利用率有了进一步的提高
缺点:需要增加更多的硬件;需要设置独立的取指令部件、指令分析部件和指令执行部件
5.1.2 相关处理
1. 转移指令的处理
尽量减少使用条件转移指令,如果有,使用延迟转移技术
2. 指令相关的处理
将指令相关转化为数相关,按照数相关处理
3. 主存空间数相关的处理
主存空间数相关是相邻两条指令之间出现对主存同一单元
要求先写后读
的关联。
处理办法:推后读
。推后读常见的办法是由存控(存储器控制器)给读数、写数申请安排不同的访存优先级来解决。
4. 通用寄存器相关的处理
操作数的相关:推后分析
和设置“相关专用通路
”是解决重叠方式相关的两种处理办法。前者是以降低速度
为代价,使设备不增加;后者是以增加设备
为代价,使重叠效率不下降。
变址值或基址值的相关:推后分析和设置专用通路
5.2 流水方式
5.2.1 基本概念
“分析k+1”与“执行k”的一次重叠是把指令的解释过程分解成“分析”与“执行”两个子过程,在独立的分析部件和执行部件上时间重叠地进行。
流水方式把“分析”子过程再细分成“取指令
”、“指令译码
”和“取操作数
”3个子过程,并改进运算器的结构,以加快其“执行
”子过程。
计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线。
时空图
描述流水线的工作,最常用的方法是时间-空间图(时空图)
横坐标:表示时间,即各个任务在流水线中所经过的时间
纵坐标:表示空间,即流水线的各个子过程,也称为级、段、流水线深度(Stage)
经典的MIPS五级流水线
- 取指 IF
- 译码 ID
- 执行 EX
- 存储器 MEM
- 写回 WB
流水线特点
- 功能部件+锁存器
- 独立工作的各子功能部件
- 各部件处理时间尽可能相等,争取最大工作频率
- 解决同步问题,保证以相同的速度处理
- 解决访存问题,即允许不同指令的同时读、写功能
2 流水线分类
按处理级别
部件级
指构成部件内的各个子部件间的流水。
处理机级
指构成处理机的各部件之间的流水
系统级
指构成计算机系统的多个处理机之间的流水,也称为宏流水
按功能多少分
单功能流水线
:只能实现单一功能
的流水多功能流水线
:指同一流水线的各个段之间可以有多种不同的连接方式
,以实现多种不同
的运算或功能
- 静态多功能流水线:同一时间内,各段只能按
一种
功能的连接流水,只有等流水线全部流空后,才能切换成另一种功能连接流水 - 动态多功能流水线:同一时间内可按
不同
运算或功能连接
- 静态多功能流水线:同一时间内,各段只能按
从计算机所具有的数据
- 标量流水机 Amdahl 470 V/6、IBM 360/91
- 没有向量数据表示,只能用标量循环方式来处理向量和数组
- 向量流水机
- 有向量数据表示,设置有向量指令和向量运算硬件,能流水地处理向量和数组中的各个元素
按是否有反馈回路
线性
流水线:流水线各段串行连接,各段只经过一次,没有反馈回路非线性
流水线:除有串行连接的通路,还有反馈回路,使任务流经流水线需多次经过某个段或越过某些段
按控制方式
- 同步流水线
- 异步流水线
5.2.2 标量流水机的主要性能
1.吞吐率和加速比
吞吐率T~p~
:流水线单位时间里能流出的任务数或结果数。流水线中经过时间最长的子过程称为瓶颈子过程。实际计算中,使用指令条数除以指令执行完成(全部流出流水线)的总时间,得到的比值。
最大吞吐率是各个子过程吞吐率的最大值。
流水线中经过时间最长的子过程称为瓶颈子过程。
消除瓶颈的办法是:1.将瓶颈子过程再细分;2.重复设置多套瓶颈段并联。
加速比Sp:表示流水方式相对于非流水顺序方式速度提高的比值。实际计算中,使用非流水顺序方式执行的总时间,除以流水方式执行总时间,得到的比值。
求吞吐率和加速比
设一m段流水线的各段经过时间均为△t,则第一条指令从流入到流出需要T0 = m△t的流水建立时间,之后每隔△t就可流出一条指令。这样完成n个任务共需时间T = m*△t + (n-1)*△t,
最大吞吐率为Tpmax=1/△t;
所以,吞吐率 Tp=n/(m*△t+(n-1)△t) = Tpmax/(1+(m-1)/n);
加速比Sp = n.m.△t/(m.△t+(n-1).△t);
【1410真题】流水线由4个功能部件组成,每个功能部件的延迟时间为△t,当输入5个数据后,间歇5△t又输入5个数据,如此周期性地工作,画出时空图,并求此时流水线的吞吐率。
答:
由题意可知,m=4,Tp=n/(m*△t+(n-1)△t)=5/(4△t+(5-1)△t)=5/(8△t);
【例】流水线由4个功能部件组成,每个功能部件的延迟时间为△t,当输入10个数据后,间歇5△t后又输入10个数据,如此周期性地工作,求此时流水线的吞吐率,并画出其时空图。
答:
由题意可知,m=4,Tp=n/(m*△t+(n-1)△t)=10/(4△t+(10-1)△t)=10/(13△t);
2.效率
流水线的效率是指流水线中设备的实际使用时间占整个运行时间之比,也称流水线设备的时间利用率。计算中,使用任务占用的时空区,除以流水段总的时空区,得到比值即是效率。
【1304真题】向量A和B各有6个元素,计算向量点积A.B。
1.若在顺序方式下,一次“加”需4△t,一次乘需3△t,求执行完A.B所需的时间;
答:
- A.B有6个乘、5个加,所以总时间为 3△t.6+5.4△t=38△t;
流水线 - 时空图、瓶颈改造-瓶颈段细分
有一条4段(S1-S4)组成的数据处理流水线如图所示:其中S1、S2、S3的执行时间是△t,S4的执行时间是3△t。
1)画出连续处理4个数据过程的时空图,并求流水线的实际吞吐率和效率。
2)采用瓶颈段细分方法对瓶颈段S4进行改造,画出改造后的流水线和连续处理4个数据过程的时空图,并求流水线的实际吞吐率和效率。
3)采用瓶颈段子过程并联方法对瓶颈段S4进行改造,画出流水线结构示意图,画出改造后的流水线和连续处理4个数据过程的时空图,并求流水线的实际吞吐率和效率。
答:
1)
如图所示,每隔3△t输出一个任务,Tpmax=1/(3△t)
所以实际吞吐率为4/((3+3)△t+(4-1).3△t)=4/(15△t)=4/15(任务/△t)
效率为:(6x4)/(15x4)=40%
将瓶颈段S4改造为三段S4_1,S4_2,S4_3,每段的执行时间都是△t,得下图
如图所示,每隔△t输出一个任务,Tpmax=1/△t
实际吞吐率为4/(6△t+(4-1).△t)=4/(9△t)=4/9(任务/△t)
效率为:(4x6)/(9x6)=2/3=4/9=44.4%
流水线结构示意图和改造后的时空图如图所示
如图所示,每隔△t输出一个任务,Tpmax=1/△t
实际吞吐率为4/(9△t)=4/9(任务/△t)
效率为:(4x6)/(9x6)=2/3=4/9=44.4%
流水线 - 时空图、瓶颈改造-瓶颈段子过程并联
为提高流水线效率可采用哪两种途径来客服速度瓶颈?现有3段流水线,各段经过时间依次为△t,3△t,△t。
1)分别计算在连续输入3条指令和30条指令时流水线的吞吐率和效率。
2)按两种途径之一进行改造,画出流水线结构示意图,并计算连续输入3条指令和30条指令时流水线的吞吐率和效率。
3)通过对以上两小题的计算比较可得出什么结论?
答:
1)
瓶颈段为第2段,每隔3△t流出一个任务
3条指令时的吞吐率为:3/((△t+3△t+△t)+(3-1)x3△t)=3/11△t=3/11(任务/△t)
3条指令时的效率为:(3x(△t+3△t+△t))/(3x(△t+3△t+△t+(3-1)x3△t)=5/11;
30条指令时的吞吐率为:30/((△t+3△t+△t)+(30-1)x3△t)=15/46△t=15/46(任务/△t)
30条指令时的效率为:(30x(△t+3△t+△t))/(3x(△t+3△t+△t+(30-1)x3△t)=25/46;
两种方法改造后的吞吐率和效率都一样;这里以瓶颈段细分方法来计算;
改造后,每隔△t流出一个任务:
3条指令时的吞吐率为:3/(5△t+(3-1)x△t)=3/7△t=3/7(任务/△t)
3条指令时的效率为:(3x5△t)/(5x(5△t+(3-1)x△t)=3/7;
30条指令时的吞吐率为:30/(5△t+(30-1)x△t)=30/34△t=15/17(任务/△t)
30条指令时的效率为:(30x5△t)/(5x(5△t+(30-1)x△t))=15/17;
3)只有在有连续不断的大量指令输入的时候,改造后吞吐率和效率才有大的提升;只有少量指令输入流水线时,效率反而会有所下降;
流水线 - 向量点积
5.2.3 标量流水机的相关处理和控制机构
全局性相关:转移指令相关
局部性相关:指令相关、主存操作数相关、通用寄存器相关
流水线相关、冲突(Hazard)
由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。
有3种类型:
- 结构Hazard:因硬件资源满足不了指令重叠执行的要求发生的停顿
- 数据Hazard:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的停顿
- 控制Hazard:流水线遇到分支指令和其他会改变PC值的指令所引起的停顿
带来的几个问题:
- 导致错误的执行结果
- 流水线可能会出现停顿,从而降低流水线的效率和实际的加速比
我们约定:
当一条指令被暂停时,在该暂停指令之后流出的所有指令都要被暂停,而在该暂停指令之前流出的指令则继续进行(否则就永远无法消除冲突)
1. 局部性相关的处理
重叠机器处理这些局部性相关的方法有两种。一种是推后后续指令对相关单元的读
,直至在先的指令写入完成;另一种是设置相关直接通路
,将运算结果经相关直接通路直接送入所需部件。
任务在流水线中流动顺序的安排和控制可以有两种方式。一种是让任务(指令)流出流水线的顺序保持与流入流水线的顺序一致,称为顺序流动方式
或同步流入方式
;另一种是让流出流水线的任务(指令)顺序可以和流入流水线的顺序不同,称为异步流出方式
。
2. 全局性相关的处理
全局性相关指的是已进入流水线的转移指令
(尤其是条件转移指令)和后续指令之间相关。
- 1)使用猜测法
- 2)加快和提前形成条件码
- 3)采取延迟转移
- 4)加快短循环程序的处理
3. 流水机器的中断处理
中断会引起流水线断流,但出现概率比条件转移的概率要低得多,且又是随机发生的。所以,流水机器中断主要是如何处理好断点
现场的保存和恢复,而不是如何缩短流水线的断流
时间。
4. 非线性流水线的调度
预约表
单功能非线性流水线的调度策略
【1904真题】在一个5段的流水线处理机上需经9拍才能完成一个任务,其预约表如图所示
1)写出延迟禁止表F和冲突向量C;画出流水线状态转移图;求最小平均延迟、最大吞吐率和最佳调度方案;
2)按最佳调度方案输入6个任务,画出流水时空图,并求实际吞吐率和效率。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|
1 | ✓ | ✓ | |||||||
2 | ✓ | ✓ | |||||||
3 | ✓ | ✓ | ✓ | ||||||
4 | ✓ | ✓ | |||||||
5 | ✓ | ✓ |
解:
(1)
这是一个单功能非线性流水线
延迟指的任务在各段相邻所需间隔的拍数。
第1段间隔:8
第2段间隔:1
第3段间隔:3、4、1
第4段间隔:1
第5段间隔:1
对整个延迟间隔集合去重,即为延迟禁止表F={1,3,4,8}。
延迟禁止表的意思,就是说要想不争用流水线的功能段,相邻两个任务送入流水线的间隔拍数就不能为集合中的拍数
可以用一个n-1位的位向量来表示后续新任务间隔各种不同拍数送入流水线时,是否会发生功能段使用的冲突,称此位向量为冲突向量C。冲突向量中第i位的状态表示与当时相隔i拍给流水线送入后续任务是否会发生功能段的使用冲突。如果不会发生冲突,令该位为“0”,表示允许送入;否则让该位为“1”,表示禁止送入。冲突向量取n-1位是因为经n拍后,该任务已流出流水线,不会与后续的任务争用流水功能段了。
本题中,9拍完成一个任务,则冲突向量C的长度为9-1=8位。
根据延迟禁止表F,可以得出冲突向量C为10001101(小端模式)
初始冲突向量中的0表示可以下一个任务可以流入的时机,如本题的1000 1101,其中2、5、6、7拍都可以流入下一个任务,当流入第二个任务后,会产生新的冲突向量,以便决定第三个任务流入而不冲突。实际上,
对于冲突向量的处理,就是将其中的0右移出去,再与初始冲突向量进行或操作
(这表示既不与前一个任务发生功能段冲突,也不与新的任务发生功能段冲突),直到不出现新的冲突向量为止。
设初始冲突向量 1000 1101 为(1)
1000 1101 >> 2: 0010 0011 | 1000 1101 : 1010 1111 …(2)
1000 1101 >> 5: 0000 0100 | 1000 1101 : 1000 1101 = (1)
1000 1101 >> 6: 0000 0010 | 1000 1101 : 1000 1111 …(3)
1000 1101 >> 7: 0000 0001 | 1000 1101 : 1000 1101 = (1)
接着处理(2)
1010 1111 >> 5: 0000 0101 | 1000 1101 : 1000 1101 = (1)
1010 1111 >> 7: 0000 0001 | 1000 1101 : 1000 1101 = (1)
接着处理(3)
1000 1111 >> 5: 0000 0100 | 1000 1101 : 1000 1101 = (1)
1000 1111 >> 6: 0000 0010 | 1000 1101 : 1000 1111 = (3)
1000 1111 >> 7: 0000 0001 | 1000 1101 : 1000 1101 = (1)
所以可得出状态转移图
从状态转移图,可以得到调度方案如下表
调度方案 | 平均延迟/拍 |
---|---|
(5) | 5 |
(2,5) | 3.5 |
(6) | 6 |
(6,5) | 5.5 |
所以,
最小平均延迟为3.5(拍);
最大吞吐率为1/3.5(任务/拍)
最佳调度方案为(2,5)
(2)
如图所示,按最佳调度方案输入6个任务,全部完成的时间为:2+5+2+5+2+9=25(拍)
实际的吞吐率为6/25(任务/拍)
实际效率为:(11x6)/(25x5)=66/125
5.3 指令级高度并行的超级处理机
5.3.1 超标量处理机
假设一条指令包含取指令、译码、执行、存结果4个子过程,每个子过程经过时间为△t。常规的标量流水线单处理机是在每个△t期间解释完一条指令,如图所示。执行完12条指令共需15△t。称这种流水机的度m=1。
超标量处理机采用多指令
流水线,每个△t同时流出m条指令(称为度m
)
超标量流水线处理机种配置多套功能部件
。
5.3.2 超长指令字处理机
超长指令字(VLIW)结构是将水平型微码和超标量处理两者相结合。
5.3.3 超流水线处理机
超流水线处理机不同于超标量处理机和VLIW处理机,每个△t仍只流出一条指令,但它的△t很小,所以一条指令只需花km△t,k为一条指令所含的基本机器周期数。
5.3.4 超标量超流水线处理机
超标量超流水线处理机是超标量流水线与超流水线处理机的结合。