Какие условия читать MSR MPERF?

Я пытаюсь прочитать MSR MPERF и APERF. Однако, когда я это делаю, машина перезагружается, вероятно, из-за исключения GP.

Вот код, который я использую:

; Read MPERF register
mov ecx, 0xe7
rdmsr

Код ломается на rdmsr. У меня есть процессор Intel Haswell. Я бегу в длинном режиме.

Я уверен, что я работаю в Ring 0, так как я использую свою собственную операционную систему. Более того, если я сделаю:

; Read PAT register
mov ecx, 0x277
rdmsr

это работает без исключения.

Каковы другие условия для чтения этого конкретного регистра (MPERF)?

1 ответ

Я предполагаю, что в вашем случае требуемая MSR перегорела или не поддерживается проектом, CPUID может ратифицировать это. В качестве альтернативы для вычисления частоты ядра, пожалуйста, обратитесь к разделу Определение тактовой частоты процессора (на ядро, на процессор), в ответе есть рецепт, который не зависит от регистра MPERF MSR.

Другие вопросы по тегам