ID de CPU

CPUID (identificación de la CPU): mnemónico de instrucciones del ensamblador para procesadores x86 , que se utiliza para obtener información sobre el procesador. Usándolo, el programa puede determinar el tipo de procesador y sus capacidades (por ejemplo, puede determinar qué extensiones de conjuntos de instrucciones son compatibles).

La instrucción CPUID apareció por primera vez en los procesadores i486 . Luego se incluyó en todos los procesadores, comenzando por Intel 486DX / SX /DX2 SL, AMD 486DX4 , Cyrix 6x86 (M1), UMC U5S .

Código de operación : 0F A2.

Comprobación del soporte de instrucciones CPUID por parte del procesador

Dado que la instrucción CPUID no estaba presente en los primeros procesadores x86 , debe asegurarse de que el procesador lo admita antes de usarlo. Para ello se intenta cambiar el bit 21 (ID) del registro EFLAGS . Si el bit cambia correctamente, la instrucción CPUID está disponible.

Código fuente para comprobar:

empujar ; colocando el registro EFLAGS en la pila pop eax ; extrayendo el valor de EFLAGS en EAX mov ebx , eax ; almacenar valor en EBX xor eax , 200000 h ; cambiar bit 21 empujar eax ; colocando un nuevo valor en la pila popfd ; almacenar nuevo valor en EFLAGS pushfd ; colocando EFLAGS en la pila de nuevo pop eax ; El valor de EFLAGS ahora está en EAX xor eax , ebx ; compruebe el bit 21 je no_cpuid ; si no ha cambiado, entonces CPUID no es compatible

Este ejemplo usa instrucciones de 32 bits, por lo que si el procesador está en modo de 16 bits, se recomienda que primero verifique si el procesador admite dichas instrucciones (es decir, si el código se ejecuta en un procesador 80386 o posterior).

Uso

La instrucción CPUID usa el contenido del registro EAX para determinar qué tipo de información del procesador devolver. La primera vez debe llamarse con el valor EAX = 0. Esto devolverá el valor máximo permitido del parámetro de instrucción soportado por este procesador.

Para obtener información sobre las funciones adicionales disponibles en los procesadores, antes de llamar a CPUID se debe configurar el bit 31 en el registro EAX, por ejemplo, para determinar el valor máximo permitido del parámetro para funciones adicionales, es necesario ejecutar CPUID con el valor EAX = 80000000 h .

Cuando EAX = 0, el procesador devuelve el identificador del fabricante del procesador ( ID del proveedor ) como 12 caracteres ASCII en los registros EBX, EDX, ECX (en ese orden) .  En el registro EAX, el valor EAX máximo permitido se devuelve cuando se llama a CPUID.

Algunos identificadores de fabricantes de procesadores: [1]

cadena ASCII Valores hexadecimales EBX:EDX:ECX Fabricante
GenuinoIntel 756E6547:49656E69:6C65746E Intel
AuténticoAMD 68747541:69746E65:444D4163 AMD
Cyrixen lugar 69727943:736E4978:64616574 cirix
CentaurHauls 746E6543:48727561:736C7561 centauro
SiS SiS SiS 20536953:20536953:20536953 SIS
Impulsado por NexGen 4778654E:72446E65:6E657669 NexGen
GenuinoTMx86 756E6547:54656E69:3638784D Transmeta
SubirSubirSubir 65736952:65736952:65736952 Elevar
UMC UMC UMC 20434D55:20434D55:20434D55 UMC
Geoda por NSC 646F6547:79622065:43534E20 Semiconductor Nacional
SoC Vortex86 74726F56:36387865:436F5320 Electrónica DM&P

Véase también

Notas

  1. Tasit Murki, Stanislav Garmatyuk. VIA Nano como herramienta de exploración . iXBT (11 de agosto de 2010). Consultado el 16 de septiembre de 2010. Archivado desde el original el 15 de agosto de 2010.

Enlaces