共计 2375 个字符,预计需要花费 6 分钟才能阅读完成。
写在后面
流水线技术是计算机中的一种相当重要的技术。简略的说,流水线技术的呈现使得计算机可能反对并行计算,可能并行执行工作。只管流水线技术十分重要,然而很多小伙伴对流水线技术还是只知其一; 不知其二,甚至很多小伙伴基本不晓得什么是流水线技术,明天,咱们就一起来说说什么是流水线技术。
文章已收录到:
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,我拉你进群,一起交换技术,一起进阶,一起牛逼~~