CPUID

from Wikipedia, the free encyclopedia

The CPUID identification has been part of the x86 processor architecture since the later 486s , and was fully available from the Pentium onwards. The identifier allows the software to identify the processor during operation, including the manufacturer and additional functional units such as the multimedia MMX / SSE instruction set or extended addressing options.

query

The CPUID is a special command for accessing machine status registers. A query code is transferred in register EAX, the processor then fills several general-purpose registers with the values. The name CPUID is derived from this function of the CPU IDentification.

Code 0 manufacturer

As a result, a 12-character manufacturer name is stored in ASCII in the three 32-bit registers EBX, EDX and ECX . This is considerably longer than typical protective names of semiconductor manufacturers , so that a tradition of padding to 12 characters has developed.

Examples:

  • "GenuineIntel"- Intel processors
  • "AuthenticAMD"- AMD processors
  • "CyrixInstead"- Cyrix processors
  • "CentaurHauls"- VIA processors
  • "GenuineTMx86"- Transmeta processors
  • "SiS SiS SiS "- SIS processors
  • "UMC UMC UMC "- UMC processors

Code 1 model variant

The result is the manufacturer-specific type numbers of the processor family, processor variant and revision status in some registers. The family starts at "4" for the 486 generation as the CPUID command was introduced during the course of the product maintenance of this processor family and a scheme for future processors was later established.

in EAX 8..11

The revision status (in EAX 0..3) is model-specific and is incremented for each processor variant. This status is a simple indicator for the stepping of a processor in which production details are changed in the course of the model update. The full value of the EAX register is often given in specialist publications for the exact identification of a processor variant, briefly called CPUID, e.g. CPUID 06D8h for Celeron M or CPUID 0F48h and 0F4Ah to differentiate between C0 and CG stepping of the Athlon 64 (with clearly different Power consumption).

With the query under Code 1, the additional usability of functional units of the arithmetic unit or the address unit is described in the registers ECX / EDX. There is a manufacturer-independent coding for these bits, which can be used by application programs and operating systems to activate specialized routines.

Examples:

  • EDX: 0 classic FPU floating point arithmetic unit is available
  • EDX: 6 PAE address extension is being processed
  • EDX: 23 newer MMX multimedia arithmetic units are available
  • EDX: 26 modern SSE2 floating point / multimedia arithmetic unit is available
  • ECX: 7 Speedstep extension can be addressed

Many mathematically-specialized application programs require a modern floating point arithmetic unit and stop without it. In these cases, the requirements of the program should be checked with the actually available processor flags (in Linux / proc / cpuinfo), usually looking for MMX, SSE, SSE2 or PNI ( prescott new instructions alias SSE3 ).

More codes

The possibility of 32-bit code as an argument of the CPUID command allows different processor manufacturers of the x86 family to define their own codes that describe the details of the hardware variant. As a rule, these query codes are in the upper code range.

Web link