我正在试着读MPERF和APERF MSR。但是,当我这样做时,机器重新启动,可能是因为GP异常。
下面是我使用的代码:
; Read MPERF register
mov ecx, 0xe7
rdmsrrdmsr上的代码中断。我有英特尔的哈斯韦尔处理器。我在长模式下运行。
我非常确定我是在Ring 0中运行,因为我运行的是我自己的操作系统。此外,如果我这样做了:
; Read PAT register
mov ecx, 0x277
rdmsr它无一例外地正常工作。
读取该特定寄存器(MPERF)的其他条件是什么?
发布于 2013-10-16 04:55:29
我猜在你的情况下,所需的MSR被融合或不被设计支持,CPUID可以批准它。作为计算核心频率的替代方案,请参考Finding out the CPU clock frequency (per core, per processor),在答案中有一个不依赖于MPERF MSR寄存器的配方
https://stackoverflow.com/questions/19390347
复制相似问题