1

我正在尝试阅读 MPERF 和 APERF MSR。但是,当我这样做时,机器重新启动,可能是因为 GP 异常。

这是我使用的代码:

; Read MPERF register
mov ecx, 0xe7
rdmsr

代码在 rdmsr 上中断。我有一个英特尔 Haswell 处理器。我正在以长模式运行。

我很确定我在 Ring 0 中运行,因为我运行的是我自己的操作系统。此外,如果我这样做:

; Read PAT register
mov ecx, 0x277
rdmsr

它毫无例外地工作。

读取此特定寄存器 (MPERF) 的其他条件是什么?

4

1 回答 1

2

我想在您的情况下,所需的 MSR 已融合或不受设计支持,CPUID可以批准它。作为计算核心频率的替代方法,请参阅找出 CPU 时钟频率(每个核心,每个处理器),在答案中有一个不依赖于 MPERF MSR 寄存器的配方

于 2013-10-15T20:55:28.923 回答