How to get correct family, model and stepping of CPU
Hi,
I am using code posted here
http://www.cplusplus.com/forum/lounge/16725/
to get family, model and stepping of CPU. My CPU is:
AMD Athlon(tm) 64 Processor 3200+
The code returns for CPU above:
Family 15, Model 15, Stepping 0
When I check using WMIC (wmic cpu get caption), I get:
Family 15 Model 31 Stepping 0
The CPU model is different. I have found an another article to get CPU info here:
http://www.codeguru.com/cpp/w-p/syst...icle.php/c9087
This tool has three different methods to get CPU info and my results are:
Registry: Family: 15 Model: 31 Stepping: 0
SDK: Family: 15 Model: 31 Stepping: 0
Assembly: Family 15, Model 15, Stepping 0
As you can see that results of Registry and SDK methods are same but Assembly method is returning incorrect model.
It seems when value of model or family is 15, then you have to check for extended model & extended family also. After adding few extra lines at code posted here:
http://www.cplusplus.com/forum/lounge/16725/
lines:
cpu_extended_model = 0xf &(cpuid_registers.eax >> 16);
cpu_extended_family = 0xf &(cpuid_registers.eax >> 20);
I am getting:
extended family : 0
extended model : 1
My question is how do you get correct model, family and stepping of a CPU?
Prashant
Re: How to get correct family, model and stepping of CPU
Perhaps the Windows API returns a somewhat "adjusted" model identifier, maybe to circumvent problems with (whatever) certain software? In this case I'd suppose the identifier obtained via the assembly method to be the correct one, at least when it comes to the real hardware.
Ah, and... Welcome to CodeGuru! :)
Re: How to get correct family, model and stepping of CPU
Maybe it would be interesting to see what model number is returned by a freeware named Speccy, see http://www.piriform.com/speccy
It was developped by the team who wrote ccleaner.