How to find out which (Intel) CPU you have

Sometimes, you need to know what kind of CPU you have. Back in the day, you could just open your computer and read the part number on the chip. Today, you can't even see the chip—not unless you're prepared to remove the heat sink.

/proc/cpuinfo

If you are running Linux, you can ask the OS
~/> cat /proc/cpuinfo 
processor	    : 0
vendor_id	    : GenuineIntel
cpu family	    : 15
model		    : 4
model name	    : Intel(R) Pentium(R) 4 CPU 3.20GHz
stepping	    : 1
cpu MHz		    : 3200.000
cache size	    : 1024 KB
physical id	    : 0
siblings	    : 2
core id		    : 0
cpu cores	    : 1
apicid		    : 0
initial apicid	    : 0
fdiv_bug	    : no
hlt_bug		    : no
f00f_bug	    : no
coma_bug	    : no
fpu		    : yes
fpu_exception	    : yes
cpuid level	    : 5
wp		    : yes
flags		    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pebs bts pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips	    : 6379.72
clflush size	    : 64
power management    :

processor	    : 1
vendor_id	    : GenuineIntel
cpu family	    : 15
model		    : 4
model name	    : Intel(R) Pentium(R) 4 CPU 3.20GHz
stepping	    : 1
cpu MHz		    : 3200.000
cache size	    : 1024 KB
physical id	    : 0
siblings	    : 2
core id		    : 0
cpu cores	    : 1
apicid		    : 1
initial apicid	    : 1
fdiv_bug	    : no
hlt_bug		    : no
f00f_bug	    : no
coma_bug	    : no
fpu		    : yes
fpu_exception	    : yes
cpuid level	    : 5
wp		    : yes
flags		    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pebs bts pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips	    : 6378.58
clflush size	    : 64
power management    :

Pentium 4

So I've got an Intel Pentium 4. I even know that it runs at 3.2 GHz. That answers my question, right?

No. According to Wikipedia, Intel has shipped 5 different cores and over 120 distinct chips under the Pentium 4 brand. Which one do I have? Maybe Intel can tell me.

http://www.intel.com ->
Work ->
Support & Downloads ->
Identify my product ->
Identify your Intel Processor ->
Intel Processor Identification Utility (Download now) ->
looks promising. Unfortunately, the utility that it offers appears to be Windows only (I'm running Linux). However, there is a link from that page to
Processor Spec Finder ->
where we can search for processors "by sSpec Number or Product Order Code or Processor Number". The page gives examples of each of those identifiers
sSpec=SL77R
Processor Number=E6300
Product Order code=JM80547PH1092MM
But none of those numbers look like anything that I found in /proc/cpuifo.

There is also a drop-down menu on that page

Select a processor family -> Intel Pentium 4 Processors ->
which takes us to a page listing 319 different processors (apparently the Wikipedia listing is incomplete).

There are more drop-down menus on that page that let us narrow the search results. From /proc/cpuifo, we know that

CPU Speed -> 3.20 GHz ->
and
Cache Size -> 1 MB ->
That gets us down to 10 processors. Each entry on the list links to a page giving details about that particular processor. We could go crawling through the 10 links and try to figure out which one we have. However, I can make one more guess to try to narrow the list. The spec sheet for the computer that this chip is in claims that it has a
540=3.2 Prescott socket T
and 540 is one of the entries under the Processor Number menu. Selecting
Processor Number -> 540 ->
we get down to 3 chips, listed as
sSpec#	CPU Speed  Processor #	Cores  Bus Speed  Mfg Tech  Stepping  Cache Size  Package  PCG/FMB
SL7J7	3.20 GHz   540		1      800 MHz	  90 nm	    D0	      1 MB	  LGA775   04A
SL7KL	3.20 GHz   540		1      800 MHz	  90 nm	    D0	      1 MB	  LGA775   04A
SL7PX	3.20 GHz   540		1      800 MHz	  90 nm	    E0	      1 MB	  LGA775   04A
When we click through those three links, we find product pages with tables like
  sSpec Number: SL7J7	                     Package Type: LGA775
     CPU Speed: 3.20 GHz         Manufacturing Technology: 90 nm 
           PCG: 04A		            Core Stepping: D0    
     Bus Speed: 800 MHz	                     CPUID String: 0F34h 
Bus/Core Ratio: 16	             Thermal Design Power: 84W   
 L2 Cache Size: 1 MB	            Thermal Specification: 67.7C
L2 Cache Speed: 3.2 GHz                 VID Voltage Range: 1.4V  

Box Order Code: BX80547PG3200E             OEM Order Code: JM80547PG0881M 
This is the information that positively identifies a chip. Now, which one is ours?

CPUID

If we vist each of the three product pages, we can construct this table
sSpec Number    CPUID String
SL7F7	        0F34h
SL7KL	        0F34h
SL7PX	        0F41h
Now go back to /proc/cpuifo and look at
cpu family	: 15
model		: 4
stepping	: 1
Convert the three numbers to hex
cpu family	: 0F
model		: 4
stepping	: 1
concatenate them, add a radix tag, et volia we have the CPUID String: 0F41h. So we have the SL7PX.

What's the difference?

Is there any real difference between these three parts?

Between the 'F7 and the 'KL, possibly not. The only clear difference shown on the two product pages is that one has a different OEM Order Code. It may be that they are physically the same part, and are distinguished only for purposes of pricing or distribution.

What about the 'PX? From the three product pages

sSpec NumberSupported Features
SL7F7
  • Hyper-Threading Technology
SL7LK
  • Hyper-Threading Technology
SL7PX
  • Hyper-Threading Technology
  • Intel EM64T
  • Enhanced Halt State
  • Execute Disable Bit

EM64T is Intel's trade name for the x86_64 architecture. The 'PX is a 64-bit processor. The other two are 32-bit processors. In case that matters to you.

What's the problem?

The problem is that but there is no way to index from a CPUID string to an sSpec Number on Intel's web site. Instead, you have to search through the product pages one at a time looking for the CPUID string.

And close doesn't count. The 'F7, 'LK, and 'PX are all

Pentium 4 3.2 GHz/1 MB 540 socket T
processors, but as it happens, two of them are 32-bit processors and one is a 64-bit processor. Unless you can match the CPUID, you really don't have any idea what kind of CPU you have.

Is there a better way?

Not that I can see.

The 540 that I got from the computer spec sheet really is the Processor Number. If you enter it in the search box on the Processor Spec Finder page, you get a list of 15 processors that contain the string "540" in their Processor Numbers. From there, it's not too hard to get to the list of three sSpec Numbers shown above, but you still need to visit each product page to find the CPUID number.

A search for 0f41h using Intel's internal web search function returns no matches. A search for 0f41 returns pages for two processors, neither of them the one we want.

A google search on site:intel.com 0f41 returns nothing useful. A google search on site:intel.com 0f41h returns many pages, almost all of them PDFs. One of them even has a table that maps 0f41 to SL7PX, but not in a way that is useful if you don't already know the answer.

Advice

If you need to identify an Intel processor in a Linux system Good luck.

Notes

remove the heat sink
bad idea

Steven W. McDougall / resume / swmcd@world.std.com / 2009 November 29