例如,一条执行的执行过程可以分解为取指,分析和执行三步,在取指时间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,我拉你进群,一起交流技术,一起进阶,一起牛逼~~