Hi,
crackers wrote:1. In Intel docs for cpuid instruction I've found few brand ID's with the same meaning for example
17h - Mobile Intel Celeron
0Fh - Mobile Intel Celeron
12h - Intel Celeron M
(btw is there a diffrence between those Processors with 'M' and ones with 'mobile' in name). Does it mean that I've to check all three values to determine if processor is celeron mobile or normal celeron ?
Brand IDs (and the brand string, if supported) are mostly meaningless marketting names that are only useful for displaying to the user so they feel good. To determine the differences between CPUs, use the vendor, family, model, stepping, feature flags and cache details (and never use the brand string or brand ID to determine differences between CPUs).
It's possible for completely different CPUs to have the same or very similar brand names (the words "celeron", "xeon" and "mobile" are used for a variety of Pentium II to Pentium 4 CPUs). It's also possible for almost identical CPUs to have completely different brand names (e.g. the only difference between a "family 6 celeron" and a "family 6 Pentium III" may be cache size).
Also note that for some CPUs you need to use the cache size to determine the correct brand string (same brand ID, family, model and steppings), and for some CPUs it's impossible to tell the difference from software (same brand ID, family, model, stepping and cache sizes).
crackers wrote:2. How can I tell the diffrence between Pentium D and Pentium 4 Extreme edition ?
IIRC Pentium D is single core with hyper-threading (2 logical CPUs), and Pentium 4 EE is dual core with hyper-threading (4 logical CPUs). These CPUs should support the brand string - use CPUID eax=0x80000002 to CPUID eax=0x80000004 to tell the user what it is.
crackers wrote:3. Is there a way to tell if processors is Pentium 75 or for example Pentium 166 since they have the same model number ?
No - it's possible that the only difference is the details painted on top of the CPU.
Imagine you make 100000 Pentium CPUs and then test them to see how fast each one can run. Some are broken and get thrown away, some can run at 75 MHz and no faster, some can run at 100 MHz, some at 150 MHz, and some can run at 166 MHz. For each one you put different markings on the outside and sell it at a difference price. In the end, the only difference between these CPUs is how fast they could run, and the jumper settings for the clock multiplier on the motherboard....
The same applies to other CPUs, and (for later CPUs) to caches - i.e. test the CPU's caches and if there's a problem somewhere, disable part of the cache and call it a Celeron.
Cheers,
Brendan