cpuid 2 20060917 review

by rbytes.net on

cpuid application dumps detailed information about the CPU(s) gathered from the CPUID instruction, and also determines the exact mode

License: BSD License
File size: 30K
Developer: Todd Allen
0 stars award from rbytes.net

cpuid application dumps detailed information about the CPU(s) gathered from the CPUID instruction, and also determines the exact model of CPU(s).

CPUID stands for Central Processing Unit Identifier.

What is the CPUID instruction?

In the earlier days of x86 computing (when the 486 was supreme), there was a vast amount of different hardware inside PCs, much as there is today, but back in those days "compatibility" was an unknown concept between manufacturers - all their hardware behaved differently, and the poor programmer had to write mountains of code merely to identify the hardware the program was running on, yet alone take full advantage of it's unique features.

The CPU was one area where, despite continual advancements by Intel, AMD and others, programs were generally not using any optimisation based on the user's CPU, because it was difficult to know which CPU was being used!
When Intel released MMX, however, it decided that it needed to make it easy for programs to recognise it's new CPUs, and utilise the instructions provided to increase the performance of the programs when running under a new CPU (which was good for Intel too - people saw how much faster it was, and they bought the new CPUs).

So, they developed the CPUID instruction. This simple assembler instruction gave instant access for the programmer to a lot of information: who manufactured this CPU (e.g. Intel, AMD, Cyrix, etc), what "extra features" it supports (e.g. an FPU, MMX, 3DNow, etc), and other information (see Chapters #5 ,#6 & #7 for how to obtain this information).

What processors support CPUID?

Generally speaking, virtually all Pentium CPUs support the CPUID (opcode 0Fh-A2h) instruction. Also, genuine Intel 486-based CPUs and many 486 clones support it. The Pentium Pro, PentiumII, Pentium III and Pentium IV all support it. All AMD's CPUs support it, and the Cyrix MediaGX, 6x86, 6x86MX and mII (although not without troubles).

Anything newer than the above will support it. A simple guideline is that all CPUs available today support CPUID, and Chapter #7 has a complete list of CPUs that support CPUID.

Unfortunately, there is a small problem with just calling CPUID to find the CPU information, and that is: If the CPU you are running on does not support CPUID, it will crash (or, as the OS likes to call it, an "Invalid Instruction Exception"). There is a method of "checking" the CPU to see if it supports CPUID, but (of course) the check only works on 486+ class CPUs.

Relax, though, because the process (and appropriate source code) to find out as much information as possible from any given CPU type is here, in flow-chart form (this assumes you are using at least a 386, which is a moot point as any compiler you'll find nowadays will require at least a 386 processor)

What's New in This Release:
The -i option was made the default because of the unreliable CPUID kernel module.
The -k option was added to get the previous behavior.
A change was made to allow the i386 build to work on x86_64 systems.
Knowledge of Tulsa and pre-production Woodcrest was added.
Smithfield Pentium D and Pentium EE are now properly distinguished from each other.

cpuid 2 20060917 keywords