流水线:将一个较复杂的处理过程分为m个复杂程度相当、处理时间大致相等的子过程,每个子过程由一个独立的功能部件来完成,处理对象在各子过程连成的线路上连续流动,在同一时间,m个部件同时进行不同操作,完成对不同对象的处理。
流水处理技术是在重叠、先行控制方式的基础上发展起来的。
(一)指令控制方式
控制方式 | 说明 | 优点 | 缺点 | |
1 | 顺序方式 | 各机器指令之间顺序串行地执行,且每条机器指令内部的各个微操作也是顺序串行执行。 | 控制简单 | 速度慢,各部件的利用率低 |
2 | 重叠方式 | 在解释第K条指令的操作完成前,就开始解释第K+1条指令。 通常采用的是一次重叠。即在任何时候,指令分析部件和指令执行部件都只有相邻两条指令在重叠解释。 | 速度有所提高,控制也不复杂 | 会出现冲突、转移和相关等问题,在设计时必须想办法解决 |
3 | 流水方式 | 模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。 流水(pipe lining)技术是把并行性或并发性嵌入系统的一种形式,把重复的顺序处理过程分解为若干子过程,每个子过程能在专用的独立模块上有效地并发工作 |
对比:“一次重叠”只是把一条指令解释分解为两个子过程,而“流水”则是分解为更多的子过程。
(二)流水线种类
分类 | 流水线 | |
1 | 级别角度 | 部件级、处理机级以及系统级流水线 |
2 | 功能角度 | 单功能流水线和多功能流水线 |
3 | 联接方式 | 静态流水线和动态流水线 |
4 | 是否有反馈回路 | 线性流水线和非线性流水线 |
5 | 流动顺序 | 同步流水线和异步流水线 |
6 | 数据表示 | 标量流水线和向量流水线 |
(三)流水相关处理
相关 | 说明 | 解决方法 | |
1 | 局部性相关 | 由于流水时机器同时解释多条指令,可能存在对同一主存单元或同一寄存器的“先写后读"的要求,这时就出现了相关。这种相关包括指令相关、访存操作数相关以及通用寄存器组相关等,它只影响相关的两条或几条指令,而且至多影响流水线的某些段推后工作,并不会改动指令缓冲器中预取到的指令内容,影响是局部的 | ①推后法:推后对相关单元的读,直至写入完成 ②通路法:设置相关专用通路,使得不必先把运算结果写入相关存储单元,再从这里读出后才能使用,而是经过相关专用通路直接使用运算结果,以加快速度。 |
2 | 全局性相关 | 转移指令(尤其是条件转移指令)与它后面的指令之间存在关联,使之不能同时解释。执行转移指令时,可能会改动指令缓冲器中预取到的指令内容,从而会造成流水线吞吐率和效率下降,比局部性相关的影响要严重得多 | ①猜测转移分支:条件转移指令的两个分支中,一个分支是按原来的顺序继续执行下去,称为转移不成功分支;另一个分支是按转移后的新指令序列执行,称为转移成功分支。许多流水机器都猜选转移不成功分支,若猜对的机率很大,流水线的吞吐率和效率就会比不采用猜测法时高得多。 ②加快和提前形成条件码:对流水线简化条件转移的处理。例如,一个乘法运算所需时间较长,但在运算之前就能知道其结果为正或为负,或者是否为0,因此,加快单条指令内部条件码的形成,或者在一段程序内提前形成条件码,对转移问题的顺利解决是很有好处的。 ③加快短循环程序的处理:由于程序中广泛采用循环结构,因此流水线大都采用特殊措施以加快循环程序的处理。例如,使整个循环程序都放入指令缓冲存储器中,对提高流水效率和吞吐率均有明显效果。流水的中断处理和转移一样,也会引起流水线断流。一般情况下,中断出现的概率要比条件转移出现的概率低得多,因此只要处理好断点现场保护及中断后的恢复,尽量缩短断流时间即可。 |
(四)RISC中流水技术
流水技术 | 说明 | |
1 | 超流水线技术 | 超流水线(super pipeline)技术是RISC采用的一种并行处理技术。 通过细化流水、增加级数和提高主频,使得每个机器周期内能完成1个甚至2个浮点操作。 实质:以时间换取空间。 超流水机器特征:在所有的功能单元都采用流水,并有更高的时钟频率和更深的流水深度。由于只限于指令级并行,所以超流水机器的CCPI (Clock Cycles Per Instruction,每个指令需要的机器周期数)值稍高。 |
2 | 超标量技术 | 超标量(super scalar)技术是RISC采用的又一种并行处理技术。 通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CCPL其实质是以空间换取时间。 |
3 | 超长指令字 | 超长指令字(Very Long Instruction Word,VLIW)技术由LIW发展而来。 VLIW和超标量的共同点是要同时执行多条指令,不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件作用使硬件简化,性能提高。VLIW有更小的CPI值,但需要有足够高的时钟频率。 |
(五)吞吐率和流水建立时间
(1)吞吐率
指单位时间里流水线处理机流出的结果数。对指令而言,就是单位时间里执行的指令数。如果流水线的子过程所用时间不一样,则吞吐率P应为最长子过程所用时间的倒数。
(2)流水建立时间
流水线开始工作,须经过一定时间才能达到最大吞吐率,这就是建立时间。
若m个子过程所用时间一样,均为△T0,则建立时间T0=m△T0。
(六)流水线计算公式
1条指令执行时间 + (指令条数-1) *流水线周期
理论公式: (t1+t2…+tk )+(n-1)*t
实践公式: k * t+(n-1)*t
举例:一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=3△t、分析时间t分析=2△t、执行时间t执行=4△t的情况下,若按串行方式执行,则10条指令全部执行完需要____△t;若按流水线的方式执行,流水线周期为____△t,则10条指令全部执行完需要____△t
理论公式:(3+2+4)+(10-1) * 4=45
实践公式:3 * 4+(10-1)*4 =48