Con el avance continuo de la tecnología, los usuarios tienen requisitos cada vez mayores para los procesadores, especialmente en términos de rendimiento y características. Desde que Intel introdujo por primera vez la instrucción CPUID en 1993, esta misteriosa instrucción se ha convertido en una herramienta indispensable para comprender los detalles del procesador. CPUID no sólo ayuda al software a comprender el tipo de procesador, sino que también revela si se implementan funciones avanzadas como MMX y SSE.
La instrucción CPUID elimina la necesidad de que los desarrolladores escriban código de máquina complejo para aprovechar las características del procesador, lo cual es de gran importancia para el desarrollo de los sistemas informáticos modernos.
Antes de la introducción de la instrucción CPUID, los programadores tenían que utilizar algunos métodos oscuros para obtener información del procesador. Con la llegada del procesador 80386, el registro EDX mostraba la revisión cuando se reiniciaba, pero esta información solo se podía leer después del reinicio. Por lo tanto, no existe una forma estándar para que las aplicaciones lean estos valores. Fuera de la arquitectura x86, los desarrolladores todavía necesitan confiar en algunos procesos complejos para identificar variaciones de CPU. Por ejemplo, en la serie Motorola 680x0 que no tiene la instrucción CPUID, algunas instrucciones específicas requieren mayores privilegios para ejecutarse, que se pueden usar para distinguir diferentes series de CPU.
El código de operación de la instrucción CPUID es 0F A2. Este comando no requiere ningún parámetro porque CPUID utiliza explícitamente el registro EAX para determinar el tipo principal de información devuelta. Al llamar a CPUID, si EAX se establece primero en 0, el parámetro de llamada EAX más alto admitido por el procesador se almacenará en el registro EAX. Para obtener información sobre una función extendida, se debe llamar a CPUID con el bit más significativo establecido en 1.
Los nodos hoja básicamente válidos pueden durar hasta 23 h, pero la información de algunos nodos hoja no se divulga en documentos públicos y están marcados como "reservados".
Los resultados devueltos por CPUID son diversos. La más familiar es la llamada con EAX=0, que devuelve la cadena de identificación del fabricante del procesador y los parámetros de llamada básicos más altos. Hay varias cadenas de identificación de fabricantes de procesadores conocidas, incluidas "GenuineIntel" para Intel, "AuthenticAMD" para AMD, etc.
Cuando EAX=1, la información de paso, modelo y serie de la CPU se devolverá en el registro EAX, y los indicadores de características se almacenarán en los registros EDX y ECX respectivamente. Esta llamada también mostrará muchas características importantes, lo que permitirá a los desarrolladores comprender claramente qué capacidades tiene el procesador. Por ejemplo, algunos procesadores pueden admitir virtualización, aceleración de hardware AES y otras funciones, y su impacto en la informática diaria es obvio.
La información devuelta por CPUID puede ayudar a los desarrolladores a optimizar el rendimiento del software en función de características específicas del hardware, lo cual es fundamental para crear aplicaciones eficientes y específicas.
Una llamada con EAX=2 devuelve información descriptiva sobre la caché y la funcionalidad TLB. Estos descriptores proporcionan una variedad de información sobre la caché del procesador y TLB, incluido el tamaño de la estructura, las etiquetas y las correlaciones correspondientes, lo cual es particularmente importante para desarrollar aplicaciones que impliquen ajuste del rendimiento.
Con la popularización de la tecnología de procesamiento multinúcleo, la demanda de los usuarios de inteligencia topológica de procesadores multinúcleo crece día a día. Las llamadas EAX=4 y EAX=8000'001Dh se pueden utilizar para mostrar la jerarquía y la topología de la caché del procesador, proporcionando información detallada sobre cada núcleo. Esta información es fundamental para aplicaciones de subprocesos múltiples que requieren computación paralela.
Al analizar más a fondo la situación de uso compartido entre la caché y los subprocesos de ejecución, los desarrolladores pueden optimizar el diseño del software para reducir la latencia y aumentar la velocidad de acceso.
La instrucción CPUID es de hecho una herramienta importante para desmitificar las características del procesador. Al interpretar la información devuelta por CPUID, los desarrolladores pueden aprovechar al máximo las capacidades del procesador para mejorar el rendimiento del software. Sin embargo, ¿los futuros procesadores introducirán nuevas funciones y el CPUID cambiará para adaptarse a estas funciones?