据我了解,要测量实际运行的 CPU 频率,我需要访问模型特定寄存器 (MSR) IA32_APERF 和 IA32_MPERF(汇编 CPU 频率测量算法)。
但是,对 MSR 寄存器的访问是特权的(通过 rdmsr 指令)。有没有另一种方法可以做到这一点?我的意思是,例如,通过我可以在我的代码中调用的设备驱动程序/库。对我来说,读取寄存器是特权似乎很奇怪。我认为只有给他们写信才是特权。
注意:rdtsc 指令不考虑涡轮增压,因此无法报告实际工作频率
编辑:我对 Linux 和/或 Windows 的解决方案感兴趣。