首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 7 QueryPerformanceFrequency返回2.4兆赫?

Windows 7 QueryPerformanceFrequency返回2.4兆赫?
EN

Stack Overflow用户
提问于 2011-05-05 01:47:07
回答 2查看 3.3K关注 0票数 3

我在不同的操作系统上运行一些计时代码。对于QueryPerformanceCounter的结果,我注意到了以下模式

标准Windows XP使用处理器频率,这意味着它在幕后使用RDTSC。

Vista使用HPET,14,318,180 Hz

任何装有/usepmtimer的Windows版本都使用ACPI时钟,3,579,545 Hz

Windows7使用来源不明的时钟,返回的数字在2.4到2.6 MHz之间变化。

有人知道Windows7默认使用的时钟是什么吗?为什么它比ACPI时钟还要慢?有没有办法强制Windows7使用HPET?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-05 05:09:14

Windows7将根据可用的处理器/硬件在启动时选择不同的QPC源-我相信SP1在这方面也有变化。

Vista的改变很可能是出于AppCompat的原因,因为在读取RDTSC的多核CPU上,它们不能保证是同步的,所以在多个CPU上调度的应用程序有时会看到QPC出现倒退,并会崩溃。

票数 4
EN

Stack Overflow用户

发布于 2012-02-29 10:54:09

好的,这只是一个部分的答案,因为我还在弄清楚,但是这个2.x MHz频率等于标称的TSC速度除以1024。

试着用你的QPF结果和你自己的CPU速度来计算一下,结果应该是正确的。

我最初认为这是HPET比率的一部分,但似乎不是这样的。

现在的问题是: LAPIC定时器以系统总线速率运行,但TSC也是如此(在应用mult系数之前),所以我们不知道在最终除法之前使用了什么计数器(它可能是TSC/1024或总线/其他什么),但我们知道它使用的是主板晶体(驱动总线的那个)。

听起来不太对劲的是,一些MSDN文章似乎暗示LAPIC timer几乎没有被使用(虚拟机管理程序/虚拟机除外),但鉴于HPET由于许多实现问题而未能实现其承诺的事实,以及大多数新平台具有不变的TSC的事实,它们再次改变了方向。

不过,我没有从微软那里找到任何关于Win7中使用的新源代码的正式证据……我们不能完全控制HPET,因为即使不在计时器模式下使用,它的计数器仍然可以被读取(例如:通过QPF),但是为什么要除以它的速率,从而降低它的分辨率呢?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5887628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档