流水线技术是计算机中的一种相当重要的技术。简单的说,流水线技术的出现使得计算机能够支持并行计算,能够并行执行任务。尽管流水线技术非常重要,但是很多小伙伴对流水线技术还是一知半解,甚至很多小伙伴根本不知道什么是流水线技术,今天,我们就一起来说说什么是流水线技术。
文章已收录到:
https://github.com/sunshinelyz/technology-binghe
https://gitee.com/binghe001/technology-binghe
流水线概念流水线是指在程序执行时,多条指令重叠进行操作的一种准并行处理的实现技术。各种部件同时处理是针对不同指令而言的,它们同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
流水线的相关参数计算包括:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率。
在计算机中,对于指令的操作主要分为三个部分:取指、分析和执行。如下所示。
如果执行取值、分析和执行各需要1ms的话,则串行执行三条指令的时间总共需要9ms。这是因为一条执行的操作需要经过取指、分析和执行三个步骤,每个步骤需要1ms,执行一条指令的时间为3ms,则串行执行三条指令的时间为9ms。我们可以用下图来表示这个过程。
在上图的表示中,貌似执行三条指令使用9ms是没啥问题的。但是,如果我们把图形改造一下,我们就会发现相应的问题。我们使用下面的图形来表示执行三条指令的情况。
此时,我们发现,在上图执行指令操作的过程中,有很多空白的格子,而空白的格子表示在执行执行的过程中有空余的时间片资源没有利用起来。很显然,没有必要等待指令1完全执行完毕后再执行指令2,同样的,没有必要等待指令2完全执行完毕后再执行指令3。而且,我们发现按照上图执行完三条指令需要9ms时间。
此时,如果将空余的时间片利用起来,则可以使用下图来表示。
此时,在执行三条指令的过程中,取指操作对指令1执行完取指后,马上对指令2进行取指,然后又马上对指令3进行取指;分析操作同样是对指令1执行完分析后,马上对指令2进行分析,然后又马上对指令3进行分析;执行操作也是对指令1执行完毕后,马上对指令2进行执行操作,然后又马上对指令3进行执行操作。期间,将空余的时间片资源充分的利用起来了。而且,我们发现,充分利用空余的时间片后,执行三条指令的时间由原来的9ms变为现在的5ms。
从另一个角度,我们发现执行完第一条指令时,需要3ms,执行完第二条指令时,只需要在执行完第一条指令的基础上增加1ms。同样的,执行完第三条指令时,只需要在执行完第二条指令的基础上增加1ms。以后每增加一条指令,只需要增加1ms的时间便可以执行完此条指令。
这就是计算机中的流水线技术。接下来,我们就说说流水线技术的相关计算问题。
流水线计算关于流水线计算,我们先来看一个图。
在上图中,我们可以看出,执行完第一条指令时,需要3ms时间,执行完第二条指令时,只需要在执行完第一条指令的基础上增加1ms;执行完第三条指令时,只需要在执行完第二条指令的基础上增加1ms。以此类推,执行完第n条指令时,只需要在执行第n-1条指令的基础上增加1ms。说到这里,不知道小伙伴们有没有思考这样一个问题,流水线技术的这种规律就涉及到一个非常重要的概念,叫作 流水线周期。
流水线周期为执行时间最长的一段,上图中的流水线周期为1ms
流水线的计算公式为:
1条指令执行时间 + (指令条数 -1)* 流水线周期流水线的理论公式如下所示。
(t1 + t2 + ... + tk) + (n-1) * △t其中t1,t2...tk表示执行一条指令的每个步骤分别需要的时间,n为指令的条数,△t为流水线周期。
流水线的实践公式如下所示。
k*△t + (n-1) * △t其中,k为执行一条指令的步骤数,n为指令的条数,△t为流水线周期。
这里,给小伙伴们举一个例子。