【问题标题】:Instructions per second equation每秒指令数等式
【发布时间】:2018-01-19 19:50:38
【问题描述】:

这应该是一个简单的问题。

假设我们有一个 CPI 为 1.5 的 3.0 gHz 处理器,它每秒执行多少条指令?只是从逻辑上思考,这将是每秒的周期数乘以每个周期的指令数......这是......

3×109 个周期/秒 × 1.5 个指令/周期 = 4.5×109 个指令/秒

有道理。好的,这是我书中的一个问题,我查找解决方案只是为了确保我理解并做对了。好吧,解决方案说它是:

3×109/1.5 = 2×109 指令/秒

这个答案来自时钟速率/CPI 部分,但我真的无法理解如何......如果你像这样子输入时钟速率/cpi: (时钟周期/秒)/(指令/时钟周期),它基本上与原始方程式相反,因为您将周期除以指令而不是将它们相乘......而且单位甚至不会抵消,您最终会得到一个周期单位2/指令×秒。我必须在这里遗漏一些完全明显的东西/搞砸基本数学,但我的豌豆大脑没有得到它。

【问题讨论】:

  • 看起来 CPI 是“每个指令的周期数”,而不是每个周期的指令数,因此 CPI = 1 / (instructions per cycle),或者如果你除以 CPI,你可以乘以每个周期的指令数(反之亦然)。
  • 那为什么等式说IPS =指令/时钟周期x时钟周期/秒,然后突然决定改变并使用每条指令的周期而不是每周期的指令?这些公式也应该是等价的,但是将相同的值插入它们会给出不同的答案……我仍然想知道后一个公式会产生虚假的单位测量值。感谢您的回复。
  • 因为大多数人确实使用 IPC 或 IPS,而不是 CPI。大多数现代 CPU 都是超标量的,并且在 SPECcpu 等典型工作负载上每个周期(平均)实现优于 1 条指令。但是 CPI 小于 1 会导致认知失调,因为 CPU 在不到 1 个周期内实际上无法执行任何操作。

标签: cpu-architecture


【解决方案1】:

这里有一些相对基本的数学:

      Instructions
IPS = ------------
         Second

你可以在不改变结果的情况下将某个值乘以 1,并且由于 X / X = 1,我们可以执行以下操作:

      Instructions        Instructions   Clock Cycles
IPS = ------------  x 1 = ------------ x ------------
        Seconds             Seconds      Clock Cycles

然后您可以按如下方式重新排列分数:

      Instructions   Clock Cycles
IPS = ------------ x ------------
      Clock Cycles     Seconds

这为您提供了所提供公式的中间部分。

那么,给定:

      Clock Cycles                    Clock Cycles
CPI = ------------  and  Clock Rate = ------------
      Instructions                      Seconds

因为 1 / (A/B) = B/A:

 1    Instructions
--- = ------------
CPI   Clock Cycles

因此:

       1                 Clock Rate
IPS = --- x Clock Rate = ----------
      CPI                   CPI

【讨论】:

  • 好的,有道理,谢谢。最后一件事:为什么时钟速率/CPI 等式给出的答案与公式的中间部分不同,而它们应该是等价的?
  • @faezer - 在您的问题中,您说“3×10^9 周期/秒 × 1.5 指令/周期”,但它不是 1.5 指令/周期,它是 1.5 周期每条指令 (CPI),因此您需要 除以 1.5,而不是相乘。
  • 噢噢噢我的主,我是个笨蛋。谢谢你把这件事弄清楚并容忍我哈哈
猜你喜欢
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2011-07-03
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多