写在后面

流水线技术是计算机中的一种相当重要的技术。简略的说,流水线技术的呈现使得计算机可能反对并行计算,可能并行执行工作。只管流水线技术十分重要,然而很多小伙伴对流水线技术还是只知其一;不知其二,甚至很多小伙伴基本不晓得什么是流水线技术,明天,咱们就一起来说说什么是流水线技术。

文章已收录到:

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为流水线周期。

这里,给小伙伴们举一个例子。

例如,一条执行的执行过程能够合成为取指,剖析和执行三步,在取指工夫t取指=3△t,剖析工夫剖析=2△t,执行工夫t执行=4△t的状况下,若依照串行形式执行,则10条指令全副执行完须要多少△t?若依照流水线形式执行,流水线周期为多少△t?应用流水线形式时,执行完10条指令须要多少△t?

(1)串行形式比较简单,就是将每条指令的执行工夫进行累加。

(3△t + 2△t + 4△t) * 10 = 90△t。

(2)在执行一条指令的过程中,取指为3△t,剖析为2△t,执行为4△t。依据流水线中对于流水线周期的定义:流水线周期为执行工夫最长的一段,所以,流水线周期为4△t。

(3)应用流水线形式时,执行完10条指令须要的工夫能够应用如下形式进行计算。

这里,咱们别离计算下实践工夫和实际工夫。

  • 实践工夫

(3△t + 2△t + 4△t) + (10-1) * 4△t = 45△t。

  • 实际工夫

3 4△t + (10-1) 4△t = 48△t。

超标量流水线

对于超标量流水线,咱们能够应用下图来示意。

在超标量流水线中,有一个概念叫作度。度示意在超标量流水线中,由几条流水线组成。例如下面的图中,超标量流水线由两条流水线组成,所以,度为2。此时的超标量流水线能够同时进行2个操作。也就是说,能够同时执行两个取指操作,能够同时执行两个剖析操作,也能够同时执行两个执行操作。

如果此时有10条指令须要执行,应用以上超标量流水线的话,只须要10 / 2 = 5 条指令的工夫。

流水线吞吐率计算

流水线的吞吐率(TP)是指在单位工夫内流水线所实现的工作数量或输入的后果数量。计算流水线吞吐流程的最根本的公式如下所示。

流水线最大吞吐率计算公式如下所示。

流水线的吞吐率计算问题相对来说还是比较简单的。

好了,明天就到这儿吧,我是冰河,大家有啥问题能够在下方留言,也能够加我微信:sun_shine_lyz,我拉你进群,一起交换技术,一起进阶,一起牛逼~~