1

在 Windows (7) 中找到确定 CPU 频率的可靠方法时我遇到了一些麻烦。

我尝试过使用 Perfmon,但它的最大采样频率为 1 Hz。另外,我没有内核级别的访问权限,所以我不能使用机器特定的寄存器。有许多 C 函数可以确定处理器的最大频率,但 SpeedStep 和 Turbo Boost 使这些方法不可靠,因为我尝试过使用以恒定速率运行的片上定时器,因此不会t 反映可变的处理器频率。

我知道诸如 CPU-Z 之类的程序能够直接测量 CPU 频率,但我不知道它们实际上是如何测量的。非常感谢任何帮助!

编辑:我也一直在研究使用 ACPI 来监控 CPU P-States 的可能性......这是一个选项吗?

Edit2:我目前正在研究使用特定于机器的寄存器(http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3b-part -2-manual.pdf ) 来获取这些信息......我觉得这对于解决方案来说可能有点矫枉过正,但这是我目前获得的最佳线索。

4

2 回答 2

1

我能够通过分析 aperf 和 mperf 比率的 Windows 驱动程序确定 CPU 频率,如以下链接中所述:硬件处理器计数器重置错误

于 2012-09-07T19:48:45.703 回答
0

请检查链接。

  • 在这个链接中,一个简单的 WDM IOCTL驱动程序与应用程序给出了很好的解释。我能够使用此代码找到频率。频率是使用 MSR(模型特定寄存器)APERF 和 MPERF 值计算的。
于 2016-10-25T05:09:23.110 回答