Экстремальный разгон процессора

         

бит PCE регистра CR4 управляет доступом к команде RDPMC с прикладного уровня


Таким образом, мыщъх'иная программа состоит из двух частей: крохотного псевдодрайвера и прикладной части. Драйвер обеспечивает загрузку необходимого кода события в соответствующий MSR-регистр (PerfEvtSel0 или PerfEvtSel1) и запускает счетчик, предварительно "разблокировав" команду RDPMC.

Поскольку, RDPMC способна читать только один счетчик (а нам необходимо отслеживать по меньшей мере два события — промахи кэш памяти кода и данных), драйвер должен обеспечивать IOCTL-интерфейс с прикладным приложением, позволяя ему переключаться с одного счетчика на другой.

Чтобы не переводить понапрасну бумагу, ниже будут приведены только ключевые фрагменты кода, а все остальное читатель без труда допишет и сам. В частности, процедура инициализации драйвера среди прочего должна содержать:

DriverInitialize:          ; // процедура инициализации драйвера

       …

       MOV    EAX, CR4

       OR     EAX, 100h ; // разрешаем доступ к RDPMC с прикладного уровня

       MOV    CR4, EAX

       …



Содержание раздела