据我了解,计算CPI是指令类型的百分比乘以周期数,对吗?机器类型是否参与此计算?
我遇到一个问题,询问我是否应该建议进行更改。
机器 1:40% R - 5 个周期、30% lw - 6 个周期、15% sw - 6 个周期、15% beq 3 - 周期,在 2.5 GHz 机器上
机器 2:40% R - 5 个周期、30% lw - 6 个周期、15% sw - 6 个周期、15% beq 4 - 周期,在 2.7 GHz 机器上
根据我的计算,机器 1 的 CPI 为 5.15,而机器 2 的 CPI 为 5.3。是否可以忽略机器的 GHz 并说更改不是一个好主意,或者我是否必须将机器考虑在内?
最佳答案
我认为重点是评估设计更改,该更改使指令需要更多时钟,但允许您提高时钟频率。 (即倾向于像 Pentium 4 这样的速度恶魔设计,而不是像 Apple 的 A7/A8 ARM 内核那样的大脑。http://www.lighterra.com/papers/modernmicroprocessors/)
因此,您需要计算每秒的指令数,以了解哪一个指令能在相同的实时时间内完成更多的工作。 即 (clock/sec)/(clocks/insn) = insn/sec
,从单位中抵消时钟
。
您的 CPI 计算结果看起来不错;我没有检查它,但是是的,根据指令组合的周期的加权平均值。
这些数字显然是 super 简化的;任何值得在 2.5GHz 构建的 CPU 都会有某种分支预测,因此分支的成本不仅仅是 3 或 4 条指令泡沫。每条指令平均花费约 5 个周期是可悲的。 (大多数流水线设计的目标是每个时钟至少 1 条指令。)
缓存和超标量 CPU 还会导致指令之间发生复杂的交互,具体取决于它们是否依赖于早期结果。
但这有点像考虑将 L1d 缓存加载使用延迟增加 1 个周期(例如)时您可能会做的事情,如果这将其从关键路径上移开并让您提高时钟频率。反之亦然,以降低频率为代价来缩短延迟或减少管道级数。
关于performance - 计算每条指令的周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195320/