带流水线的cpu中的CPI

时间:2019-03-04 12:06:27

标签: cpu-architecture

请考虑在CPU中,add指令的CPI为0.5(它通过流水线在一个周期内执行两个add指令)。 因此,当我们要计算10条加法指令的CPU时间时,我们乘以10 * 0.5 * 2(时钟周期时间为2纳秒),一切都很好。

但是当根据公式只有一个加法指令时,我们将1 * 0.5 * 2乘以不正确。因为执行添加指令至少需要一个时钟周期。

1 个答案:

答案 0 :(得分:1)

  

考虑在CPU中,add指令的CPI为0.5(它通过流水线在一个周期内执行两个add指令)

     

但是当根据公式只有一条加法指令时,我们将1 * 0.5 * 2乘以不正确。

您正在使延迟和吞吐量之间混淆。

吞吐量描述了在给定时间内可以执行的操作数。使用CPI就是吞吐量。因此,如果您说CPI = 0.5,则表示每个周期可以提供2个相加结果。

延迟是指从一条指令(或一条操作,一条存储器读取等)开始到结束之间的时间度量。它与吞吐量无关,并且与处理器中的级数相关。

因此,如果您查看一条单独的add指令,则其持续时间显然不是半个周期。在最近的奔腾中,管道的周期为14到19个周期(但较旧版本的管道的寿命延长了两倍)。单个添加的持续时间约为15个周期(最多)。

  

因此,当我们要计算10条加法指令的CPU时间时,我们乘以10 * 0.5 * 2(时钟周期时间为2纳秒),一切都很好。

不。其他因素可能会产生影响,例如依赖关系以及与其他指令的一般交互作用。引入CPI是为了衡量完整程序中每条指令的平均周期数。当前计算机的复杂性使得在不执行程序的情况下几乎不可能获得CPI的准确估计。因此,要获得它,我们需要对程序计时,然后除以执行指令的数量。这将考虑内存访问,依赖性,分支错误预测等,这对于想要知道其程序速度如何的最终用户来说是有意义的。您的估计是理论上的,在现实生活中永远不会发生。