How can I find out what "processor family" an Intel processor is under?
Asked Answered
P

3

7

In the Intel manual, there are tables containing listings of Performance-Monitoring Counters, but they are extremely specific to the particular processor family.

For example, one table lists the counters of P6 Family, and another lists for Pentium.

In Ubuntu, if I do cat /proc/cpuinfo, I get a line that says cpu family, but it is a single number. Is there some mapping between this number and Intel's notion of a processor family?

I also looked this page from Intel, but it does not even mention the word "family".

Incidentally, I am on an X3470 so I thought maybe Xeon was the family, but the manual does not list it.

Pinder answered 12/3, 2014 at 6:57 Comment(0)
W
9

For "X3470" specifically, it is based on the Nehalem micro-architecture.

In general; for Intel 80x86 and only Intel 80x86 (excluding things like Itanium and Xeon Phi/KNC, and all other 80x86 CPU manufacturers - don't forget to check the "vendor ID" string in CPUID):

  • CPUID not supported means it's 80486 or older (there are ways to tell which, but you won't care as there's no performance monitoring)
  • CPUID.family == 4 means it's an 80486 (no performance monitoring)
  • CPUID.family == 5 means it's a Pentium
  • CPUID.family == 15 means it's a "Netburst" (Pentium 4, Pentium D, Pentium EE, and some Celerons and not others, and some Xeons and not others)
  • CPUID.family == 6 means it's anything from Pentium Pro (1995) to the latest Haswell (2014) except "Netburst"

For CPUID.family == 6 you have to check the CPUID.model field. You can find the ranges of model numbers by painstakingly trawling through all of the various specification updates while muttering obscenities under your breath (note: this is the traditional method). I don't know if there's a less insane way of deciphering it.

Please note that there's also "marketing nonsense" (things intended for salespeople that are completely useless for software developers). This includes CPU brand names (Xeon, Celeron, Core i7, etc) and CPU model names ("X3470"). The page you were looking at is "marketing nonsense" only.

Wb answered 12/3, 2014 at 7:49 Comment(1)
Good answer. I usually find it easiest to look up the model lists is Wikipedia. In this case - en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessorsDefoliate
Z
2

"Family" is an ambiguous concept. The number returned by /proc/cpuinfo is the "family" field from the CPUID instruction, which gives a vague idea of what processors are related to this one, and is really only useful for doing a table lookup to select what name to display for processors that don't support the "processor brand string" extended CPUID instruction.

You could try parsing the "processor brand string" for the information you want, but you're probably better off checking the extended CPUID instructions to see if the counters you're looking for are supported.

Zygoma answered 12/3, 2014 at 7:41 Comment(0)
T
0

IMHO, instead of finding out the family, look for CPU capability flags like in ::

http://lxr.linux.no/#linux+v3.13.5/arch/x86/include/asm/cpufeature.h

Touching answered 12/3, 2014 at 7:9 Comment(3)
I'm trying to track down which table in the manual to consult to get the Event Select flags for my counters. Can you explain how capability flags will help with that?Pinder
@merlin2011: If the CPU has X86_FEATURE_LM then the procinfo flags line contains "lm" word. Search X86_FEATURE_PDCM on that page, if the CPU has that capability than the same line will contain some word for it, maybe "pdcm". If you are into Performance Counters, you should look into features not CPU family. CPU family is not very meaningful nowadays...Touching
No, features support is not enough, the perf counters or their addresses or meaning may change over time. He may need to look at "generation" instead of family in some tables, but it's wrong to ignore it completely - the Nehalem, SandyBridge or Haswell counters may differ quite a lot.Defoliate

© 2022 - 2024 — McMap. All rights reserved.