我在Windows中找到确定CPU频率的可靠方法时遇到了一些麻烦(7) .
我尝试过使用Perfmon,但它的最大采样频率为1 Hz . 另外,我没有内核级访问权限,所以我不能使用机器专用寄存器 . 有许多C函数可以确定处理器的最大频率,但SpeedStep和Turbo Boost使这些方法不可靠,因为我尝试过使用片上定时器,它以恒定速率运行,因此不会t反映可变处理器频率 .
我知道像CPU-Z这样的程序能够直接测量CPU频率,但我不知道他们实际上是如何做到这一点的 . 任何帮助是极大的赞赏!
编辑:我也一直在研究使用ACPI来监控CPU P状态的可能性......这是一个选项吗?
编辑2:我目前正在研究使用机器专用寄存器(http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf)来获取这些信息......我觉得这对解决方案来说可能有点过头了,但它现在已经得到了.1175484 .
2 回答
我能够通过分析aperf和mperf rato的Windows驱动程序确定CPU频率,如以下链接所示:Hardware Processor Counters Incorrectly Resetting
请检查this链接 .