Family/stepping info

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
AWOS
Posts: 2
Joined: Mon Nov 06, 2006 3:12 am

Family/stepping info

Post by AWOS »

Hello all!

Where would I be able to find a list of all families/steppings for the different processors? I found one on Intel's site for their processors, but after much Googling I am left empty handed with AMD and Cyrix.

Thanks!

Andrew
User avatar
smiddy
Member
Member
Posts: 127
Joined: Sun Oct 24, 2004 11:00 pm
Location: In my cube, like a good leming. ;-)

Post by smiddy »

I think it is www.sandpile.org you'll want to look up CPUID.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: Family/stepping info

Post by Brendan »

Hi,
AWOS wrote:Where would I be able to find a list of all families/steppings for the different processors? I found one on Intel's site for their processors, but after much Googling I am left empty handed with AMD and Cyrix.
For Intel, the family and model information is published in their CPUID Application Note for all CPUs. For stepping information you need to download the "specification update" that corresponds to each group of CPUs.

For AMD, the family and model information for older CPUs (before family 0x0F) is published in their AMD Processor Recognition Application Note. This doesn't include CPUs that AMD obtained from other manufacturers (e.g. NSC Geode), which also return the "AuthenticAMD" as the vendor ID. For stepping information (and family/model information for later CPUs) you need to download the "revision guide" that corresponds to each group of CPUs.

For VIA, NSC (now AMD Geode), IDT/Centaur, Rise and Transmeta, there's a datasheet for each CPU they produced that contains the CPUID family and model information. Some also contain steppings, but some don't.

For SiS and NexGen, I haven't been able to find any documentation. For IBM, their CPUs ("Blue Lightning") didn't support the CPUID instruction anyway.

For Cyrix, some don't support CPUID and some have CPUID disabled. There's a pair of I/O ports that work a little like getting data to/from the CMOS, where you set the location in I/O port 0x22 and then read or write the data from location 0x23. These I/O ports are for CPU configuration, and can be used to enable or disable certain features (e.g. the CPUID instruction) and obtain the model, stepping and revision for the CPU (which is in Cyrix's format, and doesn't correspond to Intel's family/model numbering).

For the Cyrix CPUs there's datasheets that contain both the Cyrix specific model, stepping (if present), and the Intel/CPUID specific family and model (if present).

Where possible, I ignore the "Intel compatible" model and stepping information and use the "manufacturer specific" model and stepping information. They can be different for Cyrix (as described above) and for some other CPUs (e.g. some AMD CPUs report a different family from CPUID 0x00000001 and CPUID 0x80000001).

Also for some manufacturers (Intel, Transmeta and possibly NexGen) there's a software version (microcode update version for Intel and possibly NexGen, and "Code Morphing Software" version for Transmeta). If you're using the family/model/stepping information for anything other than displaying it (e.g. detecting CPU bugs, enabling extra features, etc) then it can be worth getting this software version too. For Intel it's documented in their System Programmer's Guide. For Transmeta it's documented in their datasheets as part of the CPUID information.


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
AWOS
Posts: 2
Joined: Mon Nov 06, 2006 3:12 am

Re: Family/stepping info

Post by AWOS »

Brendan wrote: For Intel, the family and model information is published in their CPUID Application Note for all CPUs.
Wowsers, I could only find revision 15 on Intel's site. Rev 31 really helps! Thanks!
Brendan wrote: For AMD, the family and model information for older CPUs (before family 0x0F) is published in their AMD Processor Recognition Application Note.
Thanks, that helped a lot with the AMD mystery.
Brendan wrote: For stepping information (and family/model information for later CPUs) you need to download the "revision guide" that corresponds to each group of CPUs.
Okay, I found them and downloaded them. thanks for the tip ;)
Brendan wrote: For VIA, NSC (now AMD Geode), IDT/Centaur, Rise and Transmeta, there's a datasheet for each CPU they produced that contains the CPUID family and model information. Some also contain steppings, but some don't.
Are there any specific Web sites that have these?
Brendan wrote: For Cyrix, some don't support CPUID and some have CPUID disabled. There's a pair of I/O ports that work a little like getting data to/from the CMOS, where you set the location in I/O port 0x22 and then read or write the data from location 0x23. These I/O ports are for CPU configuration, and can be used to enable or disable certain features (e.g. the CPUID instruction) and obtain the model, stepping and revision for the CPU (which is in Cyrix's format, and doesn't correspond to Intel's family/model numbering).

For the Cyrix CPUs there's datasheets that contain both the Cyrix specific model, stepping (if present), and the Intel/CPUID specific family and model (if present).
Where can I find these?
Brendan wrote: Where possible, I ignore the "Intel compatible" model and stepping information and use the "manufacturer specific" model and stepping information. They can be different for Cyrix (as described above) and for some other CPUs (e.g. some AMD CPUs report a different family from CPUID 0x00000001 and CPUID 0x80000001).
Really? So I should do 80000001 on AMDs?
Brendan wrote: Also for some manufacturers (Intel, Transmeta and possibly NexGen) there's a software version (microcode update version for Intel and possibly NexGen, and "Code Morphing Software" version for Transmeta). If you're using the family/model/stepping information for anything other than displaying it (e.g. detecting CPU bugs, enabling extra features, etc) then it can be worth getting this software version too. For Intel it's documented in their System Programmer's Guide. For Transmeta it's documented in their datasheets as part of the CPUID information.
Yeah I will be doing those things (especially in bold) so I will look at that.

Thank you for all that extremely helpful information!

Andrew
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: Family/stepping info

Post by Brendan »

Hi,
AWOS wrote:
Brendan wrote:For VIA, NSC (now AMD Geode), IDT/Centaur, Rise and Transmeta, there's a datasheet for each CPU they produced that contains the CPUID family and model information. Some also contain steppings, but some don't.
Are there any specific Web sites that have these?
Unfortunately not - finding these can be fairly difficult, especially as half of the manufacturers were either bought out or closed since. It can take a long time searching (with google) to find anything useful for some of them, and others there doesn't seem to be any information.

Here's a good start for Cyrix:

http://ftp.intron.ac/pub/document/cpu/
AWOS wrote:
Brendan wrote:Where possible, I ignore the "Intel compatible" model and stepping information and use the "manufacturer specific" model and stepping information. They can be different for Cyrix (as described above) and for some other CPUs (e.g. some AMD CPUs report a different family from CPUID 0x00000001 and CPUID 0x80000001).
Really? So I should do 80000001 on AMDs?
Hmm - depends what you want to report to the user. For your OS's purposes you should rely on the feature flags and never really use the family/model/stepping/revision information for anything (except for correcting CPU feature flags and detecting bugs).

I mainly do this because of Cyrix chips, where there's I/O ports to get the model, stepping and revision that work (even for older chips that don't support CPUID) but look nothing like the information returned by Intel chips.


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply