1

据我了解,要测量实际运行的 CPU 频率,我需要访问模型特定寄存器 (MSR) IA32_APERF 和 IA32_MPERF(汇编 CPU 频率测量算法)。

但是,对 MSR 寄存器的访问是特权的(通过 rdmsr 指令)。有没有另一种方法可以做到这一点?我的意思是,例如,通过我可以在我的代码中调用的设备驱动程序/库。对我来说,读取寄存器是特权似乎很奇怪。我认为只有给他们写信才是特权。

注意:rdtsc 指令不考虑涡轮增压,因此无法报告实际工作频率

编辑:我对 Linux 和/或 Windows 的解决方案感兴趣。

4

1 回答 1

2
  1. 你是对的,找到链接中第二个答案中描述的平均 cpu 频率的正确方法。

  2. 要在 linux 上阅读 msrs,您可以使用工具RDMSR

  3. 唯一可能在该答案中误导的是maxfrequency。它不应该是最大频率,而是标称频率(最大非涡轮频率),因为 MPERF 计数器以最大非涡轮频率计数。您可以从 MSR 0xCE 位 8:15 ( ref )获得此频率

于 2013-04-29T05:08:53.640 回答