%20%E4%B8%8E%E9%A2%91%E7%8E%87.png)
我正在进行核心频率缩放实验,我发现随着核心频率的增加(所有其他东西保持不变,例如 ddr 频率保持不变),IPC 值会下降。有人能解释一下为什么会这样吗?
例子:
CF 1GHz,IPC为1
CF 2GHZ,IPC为0.95
CF 3GHZ,IPC为0.92
答案1
我唯一的判断是,您的测量结果存在缺陷,可能包含一些(或多或少)您的计算未考虑到的静态开销。考虑一下这个超级简化的尝试来解决这个问题:
周期 | IPC号有缺陷 | 指令数 | 静态开销 | “实际” IPC |
---|---|---|---|---|
1 | 1 | 1 | 0.111 | 0.889 |
2 | 0.95 | 1.9 | 0.111 | 0.8945 |
3 | 0.92 | 2.76 | 0.111 | 0.883 |
…其中“实际 IPC”是(指令数 - 静态开销)/周期
这看起来更有可能,不是吗?所有这些都因以下事实而变得更加复杂:除非您在裸机上执行这些测试,否则不仅仅是您的测试过程。由于并非所有指令都是平等创建的,这进一步增加了复杂性。有些指令需要更多周期来执行,有些则需要更少周期。
也许您捕获循环计数器的方法就是引入这种静态开销的原因。
答案2
看起来非常合乎逻辑的结果:
当核心频率(时钟)上升而其他所有参数保持不变时,核心速度不会改变。那么 CPU 操作只需要更多时间(以周期计算)。这意味着 每周期指令数 (IPC) 较低。
请注意,IPC 是一种非常不精确的测量方法,如上面的维基百科链接所解释的那样。
另请参阅帖子 为什么不能同时拥有高每周期指令数和高时钟速度?