什么是高分辨率性能计数器?

Eug*_*mov 5 hardware winapi

在Win32 API中,有一个函数QueryPerformanceCounter,用于查询非常高分辨率的性能计时器的值.

什么是"高分辨率性能计时器"?它是否受硬件支持?什么系统不支持它?

Dam*_*mon 5

在目前这一代处理器的Windows 7下,这是CPU(HPET)内部可靠的高精度(纳秒)计时器.

在以前的版本和前几代处理器中,它是"某种东西",几乎可以说是任何东西.最常见的是,它是RDTSC指令返回的值(或非x86上的等效值),它可能是也可能不是可靠的,与时钟无关.请注意,RDTSC(最初,根据定义,但现在不再是)不测量时间,它测量周期.

在电流和上一代的CPU,RDTSC通常是可靠和时钟无关(即现在是真正测量时间),在预 -以前的一代,尤其是在移动还是有些多CPU钻机事实并非如此."定时器"可以加速和减速,甚至在不同的CPU上不同,导致"时间旅行".

编辑:constant tsc cpuid中的标志(0x80000007)可以用来判断RDTSC是否可靠(虽然这并不能解决问题,因为如果没有,如果没有替代方案该怎么办......).

在较旧的系统(如8-10岁)上,其他一些计时器可用于QueryPerformanceCounter.那些可能既没有高分辨率,也没有非常准确.