
Кто-нибудь знает, можно ли определить, какие инструкции процессора выполняются?
Я особенно заинтересован в обнаруженииAES-инструкцииреализовано в последних процессорах Intel и AMD. Возможно ли написать модуль ядра, который обнаруживает эти инструкции? Или конкретные инструкции процессора, которые отправляются в процессор, даже не известны ядру?
решение1
Большую часть времени процессоры выполняют инструкции процессов без участия ядра; ядро должно вмешаться только в том случае, если процесс пользовательского уровня вызывает прерывание, либо пытаясь выполнить недопустимую инструкцию (недопустимую здесь, охватывающую множество причин), либо вызывая программное прерывание. Инструкции AES выполняются напрямую, и ядро не знает, что они выполняются.
Я не думаю, что есть какие-либо связанные счетчики производительности, которые вы могли бы использовать. Инструкции AES имеют необычный шаблон выполнения, которыйможетстатистически идентифицируемо, но я никогда этого не пробовал... И в любом случае это неприменимо в общем случае.
Вы можете попробовать использовать соответствующим образом оснащенный эмулятор, такой какБохс, или анализировать двоичные файлы, чтобы определить инструкции, которые они используют —Debian: какие инструкции используют двоичные файлы x86-64?содержит более подробную информацию о последнем.