¿Cómo puedo detectar qué instrucciones se ejecutan en una CPU?

¿Cómo puedo detectar qué instrucciones se ejecutan en una CPU?

¿Alguien sabe que puedo detectar qué instrucciones de la CPU se están ejecutando?

Estoy especialmente interesado en detectarinstrucciones AESimplementado por CPU Intel y AMD recientes. ¿Sería posible escribir un módulo del kernel que detecte estas instrucciones? ¿O las instrucciones específicas de la CPU que se envían a la CPU ni siquiera son conocidas por el kernel?

Respuesta1

La mayoría de las veces, las CPU ejecutan instrucciones de procesos sin involucrar al núcleo; el kernel solo tiene que intervenir si un proceso a nivel de usuario causa una trampa, ya sea al intentar ejecutar una instrucción no válida (inválida aquí que cubre una variedad de razones) o al invocar una interrupción de software. Las instrucciones AES se ejecutan directamente y el kernel no sabe que se están ejecutando.

Tampoco creo que existan contadores de rendimiento relacionados que puedas usar. Las instrucciones AES tienen un patrón de ejecución inusual quepuedeser identificable estadísticamente, pero nunca lo he intentado... Y de todos modos, eso no es aplicable en general.

Podrías intentar usar un emulador adecuadamente instrumentado comobochs, o analizar binarios para determinar las instrucciones que utilizan:Debian: ¿qué instrucciones usan los binarios x86-64?tiene más información sobre este último.

información relacionada