Método GetCPUInfo

Programado por Héctor A. Medina


Sintaxis

Invoke GetCPUInfo, lpCPUInfo

Función

Ejecuta la instrucción CPUID (no disponible en todos los procesadores) y devuelve información sobre el procesador.

Parámetros

lpCPUInfo

Dirección de una estructura CPUINFO (definida por Easy Code).


Valor de retorno

Eax devuelve TRUE si se ha ejecutado la instrucción, o FALSE si no.


A la vuelta, la estructura CPUINFO se habrá llenado con diversa información sobre el procesador. Esta estructura está definida como sigue:

CPUINFO Struct
    Description  DB 32 Dup 0  ; Descripción del procesador ('GenuineIntel', 'AuthenticAMD', etc.)
    Stepping     DD 0         ; Stepping ID

    Family       DD 0         ; Familia (3 = 386, 4 = 486, 5 = Pentium, 6 = Pentium Pro)

    Model        DD 0         ; Modelo
    CPUType      DD 0         ; Reservado
    ModelID      DD 0         ; Vea las 'OBSERVACIONES'
    FeaturesID   DD 0        
; Vea las 'OBSERVACIONES'
    ExFeaturesID DD 0        
 ; Vea las 'OBSERVACIONES'
EndS


OBSERVACIONES: La instrucción CPUID llena los registros Eax, Ecx y Edx con diversa información sobre el procesador. Aunque parte de la información del registro Eax ya está detallada en los miembros Stepping, Family, Model y CPUType de la estructura, su valor completo se almacena en el miembro ModelID. Por otra parte, el miembro FeaturesID contiene el valor depositado por CPUID en el registro Edx, mientras que ExFeaturesID contiene el valor depositado por CPUID en el registro Ecx (recuerde que el método GetCPUInfo guarda los registros Ecx y Edx). Estos valores se refieren a los flags de compatibilidad y tienen el siguiente significado:

FeaturesID:

Bit 0 Coprocesador incluido en el chip
Bit 1 Extensión de modo virtual presente
Bit 2 Extensiones de depuración
Bit 3 El procesador soporta páginas de 4MB
Bit 4 TSC presente
Bit 5 El procesador tiene MSRs compatibles con Pentium
Bit 6 Extensión de dirección física (Intel), Soporte de PTE (Cyrix)
Bit 7 Excepción de comprobación de máquina
Bit 8 Soporta instrucciones CMPXCHG8B
Bit 9 APIC local incluido en el chip (Intel), Extensión de Página Global (K5)
Bit 10 Reservado
Bit 11 Prestación de llamadas rápidas de Sistema (Pentium Pro)
Bit 12 El procesador soporta el "Memory Type Range Register" (MTRR)
Bit 13 Soporte de página global
Bit 14 Arquitectura de comprobación de máquina
Bit 15 El procesador soporta la instrucción CMOV
Bit 16 Tabla de atributos de página
Bit 17 El procesador soporta páginas de 4MB para el acceso de memoria mas alta de 2GB
Bit 18 El procesador soporta el número de serie de procesador
Bit 19-22 Reservados
Bit 23 El procesador soporta IA MMX
Bit 24 El procesador soporta "Fast Save/Restore" (IA MMX-2)
Bit 25 Extensión de "Streaming SIMD" (IA MMX-2)
Bit 26-31 Reservados y llenos de ceros actualmente

ExFeaturesID:

Bit 0 SSE3 - SSE3 Extensions
Bit 1-2 Reservados
Bit 3 MONITOR - MONITOR/MWAIT
Bit 4 DS-CPL - CPL Qualified Debug Store
Bit 5 VMX - Virtual Machine Technology
Bit 6 Reservado
Bit 7 EST - Enhanced Intel SpeedStep® Technology
Bit 8 TM2 - Thermal Monitor 2
Bit 9 SSSE3 - SSSE3 Extensions
Bit 10 CNXT-ID - L1 Context ID
Bit 11-12 Reservados
Bit 13 CMPXCHG16B
Bit 14 xTPR Update Control
Bit 15 PDCM — Perf/Debug Capability MSR
Bit 16-18 Reservados
Bit 19 SSE4.1
Bit 20 SSE4.2
Bit 21 Reservado
Bit 22 Reservado
Bit 23 POPCNT
Bit 24-31 Reservados