导读:按照流水线的各个流水段之间是否有反馈信号,可以把流水线分为线性流水线和非线性流水线两类。
线性流水线(LinearPipelining)是将流水线的各段逐个串接起来。输入数据从流水线的一端进入,从另一端输出。数据在流水线中的各个流水段流过时,每一个流水段都流过一次,而且仅仅流过一次。
在多功能流水线中,按照在同一时间内是否能够连接成多种方式,同时执行多种功能,可以把多功能流水线分为静态流水线和动态流水线两种。
所谓静态流水线(StaticPipelining)是指在同一段时间内,多功能流水线中的各个流水段只能按照一种固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,多功能流水线才能重新进行连接,以实现其它功能。
动态流水线(DynamicPipelining)是指在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。当然,同时实现多种连接发生是有条件的,即流水线中的各个功能部件之间不能发生冲突。
在静态流水线中,只有程序中连续出现同一种运算时,流水线的效率才能得到充分的发挥。如果输入到流水线中的是一串不同运算相互间隔的操作,则这条静态流水线的效率就与顺序执行方式*一样。而动态流水线则不同,它允许两种运算在同一条流水线中同时执行。
因此,在一般情况下,动态流水线的效率和功能部件的利用率要比静态流水线高,但是,动态流水线的控制比静态流水线要复杂得多。目前,在大多数处理机中均采用静态流水线。
除了以上几种流水线的分类方法之外,还可以从其它多种不同角度来划分流水线。例如,按照不同的数据表示方式,可以把流水线分为标量流水线和向量流水线两种。标量流水线一般用于标量处理机中,而向量流水线主要用于向量计算机中。在本章中介绍的都是标量流水线。
按照流水线输出端流出的任务与流水线输入端流入的任务的顺序是否相同,可以把流水线分为顺序流水线与乱序流水线两种。乱序流水线在有的资料上又称为无序流水线、错序流水线或异步流水线等