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

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

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

; Read MPERF register
mov ecx, 0xe7
rdmsr

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

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

; Read PAT register
mov ecx, 0x277
rdmsr

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

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


person Baptiste Wicht    schedule 15.10.2013    source источник


Ответы (1)


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

person Shmil The Cat    schedule 15.10.2013
comment
Я не знал о IOPL. Но я уже использую инструкции IN/OUT с контроллером 8042, так что я действительно нахожусь в кольце 0. - person Baptiste Wicht; 16.10.2013
comment
@Baptiste Wicht - охладите свою собственную ОС :), мне это нравится, так что в этом случае возможно этот регистр слит, нужно проверить, включен ли он, читая CPUID, я думаю - person Shmil The Cat; 16.10.2013
comment
:) Я проверил с помощью CPUID, и действительно, аппаратная координация отключена, поэтому я не могу получить APERF/MPERF. Я хотел, чтобы они вычисляли частоту (max * (aperf/mperf)). Есть ли другие способы вычисления текущей частоты? - person Baptiste Wicht; 16.10.2013
comment
Пожалуйста, взгляните на stackoverflow.com/questions/8351944/ особенно последний комментарий в последнем сообщении. Пожалуйста, также рассмотрите возможность принятия моего ответа, поскольку мой первый комментарий показывает, почему нельзя читать MPERF MSR. - person Shmil The Cat; 16.10.2013
comment
@BaptisteWicht: этот ответ неверен! Вы не должны это принимать. Если ответчик (Шмиль Кот) хочет получить признание, он должен написать новый ответ и не ожидать, что я прочитаю комментарии, чтобы найти правильный ответ. - person Nathan Fellman; 02.12.2013
comment
@ShmilTheCat: я проголосовал за этот ответ и рекомендую вам удалить его. Я с радостью поддержу правильный ответ, как это отражено в вашем комментарии. - person Nathan Fellman; 02.12.2013
comment
@NathanFellman Спасибо за ваш отзыв, я повторно отредактировал исходный ответ, чтобы отразить всю информацию в теле ответа, а не разбрасывать ее по комментариям. - person Shmil The Cat; 20.03.2014