我正在尝试阅读MPERF和APERF MSR。但是,当我这样做时,机器重新启动,可能是因为GP异常。
以下是我使用的代码:
; Read MPERF register
mov ecx, 0xe7
rdmsr
rdmsr上的代码中断。我有一台Intel Haswell处理器。我在长模式下运行。
我很确定我在Ring 0中运行,因为我正在运行自己的操作系统。而且,如果我这样做:
; Read PAT register
mov ecx, 0x277
rdmsr
它毫无例外地运作。
阅读此特定寄存器(MPERF)的其他条件是什么?
答案 0 :(得分:2)
我想在您的情况下,所需的MSR被融合或不受设计支持,CPUID
可以批准它。
作为计算核心频率的替代方案,请参考Finding out the CPU clock frequency (per core, per processor),在答案中有一个不依赖于MPERF MSR寄存器的配方