在多功能流水线中,按照在同一时间内是否能够连接成多种方式,同时执行多种功能,可以把多功能流水线分为静态流水线和动态流水线两种。所谓静态流水线(Static Pipelining)是指在同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,多功能流水线才能重新进行连接,以实现其它功能。例如,图8.11中的8段多功能流水线,如果按照图8.12所示的时空图工作,就是一种静态流水线。开始时,多功能流水线按照实现浮点加减法的方式连接,当n个浮点加减法全部执行完成,最后一个浮点加减法运算的排空操作也做完之后,多功能流水线才重新开始按照实现定点乘法的方式连接,并开始做定点乘法运算。
图8.12 静态流水线时空图

  动态流水线(Dynamic Pipelining)是指在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。当然,同时实现多种连接发生是有条件的,即流水线中的各个功能部件之间不能发生冲突。例如,在图8.13中,中间有一段时间,在同一条多功能流水线的不同功能段中在同时执行浮点加减法和定点乘法两种运算。也就说,当浮点加减法运算还没有全部完成时,定点乘法运算就已经开始了。两种运算同时在同一条多功能流水线中分别使用不同的功能段。
图 8.13 动态流水线时空图

  在静态流水线中,只有程序中连续出现同一种运算时,流水线的效率才能得到充分的发挥。如果输入到流水线中的是一串不同运算相互间隔的操作,例如,输入的一串操作是浮点加、定点乘、浮点加、定点乘……,则这条静态流水线的效率就与顺序执行方式完全一样。而动态流水线则不同,它允许两种运算在同一条流水线中同时执行。因此,在一般情况下,动态流水线的效率和功能部件的利用率要比静态流水线高,但是,动态流水线的控制比静态流水线要复杂得多。目前,在大多数处理机中均采用静态流水线。