【问题标题】:Determining CPU Frequency in Windows在 Windows 中确定 CPU 频率
【发布时间】:2012-06-15 12:01:45
【问题描述】:

在 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) 来获取此信息...我觉得这对于解决方案来说可能是矫枉过正,但它是我最好的线索现在有。

【问题讨论】:

  • 只从注册表中读取,HKLM\Hardware\Description\System\CentralProcessor\0\~Mhz值。
  • 不幸的是,此注册表项不会随着 SpeedStep 频率的变化而变化。它提供标准的最大 CPU 频率,但在系统因负载低而降低 CPU 频率时不会改变。
  • 尝试测量可变频率毫无意义。你得到的结果完全取决于你测量的方式。你尝试做的越准确,它就变得越高:)
  • 我不太确定我是否理解...我试图测量给定时间点的频率,而不仅仅是弄清楚处理器的最大频率是多少。我正在做一些功耗分析,瞬时频率对功耗有很大影响……我知道有一个观察者效应在发生,但与 CPU 周期总数相比应该可以忽略不计。

标签: windows cpu frequency processor


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    请查看this 链接。

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

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多