Какие условия читать 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.