确定Windows中的CPU频率

时间:2012-06-12 15:07:34

标签: windows cpu frequency processor

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

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

我知道像CPU-Z这样的程序能够直接测量CPU频率,但我不知道他们实际上是如何做到这一点的。任何帮助非常赞赏!

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

Edit2:我目前正在研究使用机器专用寄存器(http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf)来获取这些信息......我觉得这对解决方案来说可能有点过头了,但它是最好的导致我现在已经有了。

2 个答案:

答案 0 :(得分:1)

我能够通过分析aperf和mperf rato的Windows驱动程序确定CPU频率,如以下链接所示:Hardware Processor Counters Incorrectly Resetting

答案 1 :(得分:0)

请检查this链接。

  • 在此链接中,给出了一个带有应用程序的简单WDM IOCTL 驱动程序,并提供了很好的解释。我能够使用此代码找到频率。使用MSR(型号特定寄存器)APERF和MPERF值计算频率。