Difficulty inspecting Processor Model on Windows

Recreating CPUID in Relevance

I’ve spot-checked against at least 20 of my processor models, both Intel and AMD, and so far it looks correct that Model requires a left-shift and Family is just addition.

I’ll split the following into separate properties later, but for now I’m going back to my original task - identify Architecture and Processor Codenames, so when the news says “there’s a firmware for Skylake” I’ll know which systems that covers.

I hope this is helpful for others, AND I hope that others can help me. There are a lot of gaps in the following Family and Model lists. If anyone can add to the list, or tell me which ones I have wrong, I’d appreciate it (all the models in my environment are correct, but I don’t possess every model in this list). I’ll post this on Bigfix.me when I have it a bit more complete.

 /* https://software.intel.com/en-us/articles/intel-architecture-and -processor-identification-with-cpuid-model-and-family-numbers */ /* http://www.cpu-world.com*/ 
 (
   item 3 of it, item 4 of it
 )
 of 
 (
   "Example", "Family(hex)", "Model(hex)", "Microarchitecture Codename", "Processor Codename"; 
"GenuineIntel", "05", "09", "quark", "Clanton" ; 
"GenuineIntel", "06", "06", "Pentium II", "Dixon/Mendocino" ; 
"GenuineIntel", "06", "07", "Pentium III", "Katmai" ; 
"GenuineIntel", "06", "08", "Pentium III", "Coppermine" ; 
"GenuineIntel", "06", "09", "Pentium M uarch=modified p6", "Banias" ; 
"GenuineIntel", "06", "0B", "Pentium III", "Tualatin" ; 
"GenuineIntel", "06", "0D", "Pentium M uarch p6", "Dothan" ; 
"GenuineIntel", "06", "0E", "xeon yonah", "Sossaman/Yona" ; 
"GenuineIntel", "06", "0F", "Merom", "Clovertown/Conroe/Kentsfield/Merom/Tigerton/Woodcrest" ; 
"GenuineIntel", "06", "16", "Merom", "Merom Conroe" ; 
"GenuineIntel", "06", "17", "Penryn", "Yorkfield/Wolfdale/Penryn/Harpertown (DP)" ; 
"GenuineIntel", "06", "1A", "Nahalem", "Bloomfield/Nehalem EP" ;
"GenuineIntel", "06", "1C", "Atom", "Pineview/Silverthorne" ;
"GenuineIntel", "06", "1D", "Penryn", "Dunnington (MP)" ; 
"GenuineIntel", "06", "1E", "Nahalem","Clarksfield/Lynnfield/Jasper Forest" ; 
"GenuineIntel", "06", "25", "Westmere", "Arrandale/Clarksdale" ; 
"GenuineIntel", "06", "26", "Atom", "Lincroft" ; 
"GenuineIntel", "06", "27", "Atom Saltwell Core", "Penwell" ;
"GenuineIntel", "06", "2A", "SandyBridge", "SandyBridge"; 
"GenuineIntel", "06", "2C", "Westmere", "Gulftown/Westmere EP" ;
"GenuineIntel", "06", "2D", "SandyBridge", "Sandy Bridge E/EN/EP" ; 
"GenuineIntel", "06", "2E", "Nahalem", "Nehalem EX" ; 
"GenuineIntel", "06", "2F", "Westmere", "Westmere EX" ; 
"GenuineIntel", "06", "3A", "IvyBridge", "IvyBridge" ; 
"GenuineIntel", "06", "35", "Cloverview", "Cloverview" ; 
"GenuineIntel", "06", "36", "Atom", "Cedarview" ; 
"GenuineIntel", "06", "37", "Atom SoC Silvermont", "Bay Trail" ; 
"GenuineIntel", "06", "3A", "Ivy Bridge", "Ivy Bridge" ; 
"GenuineIntel", "06", "3C", "Haswell", "Haswell LGA1150" ; 
"GenuineIntel", "06", "3D", "Broadwell", "Broadwell" ; 
"GenuineIntel", "06", "3E", "Ivy Bridge", "Ivy Bridge E/EN/EP" ; 
"GenuineIntel", "06", "3F", "Haswell E", "Haswell E" ; 
"GenuineIntel", "06", "46", "Haswell", "Crystal Well" ; 
"GenuineIntel", "06", "4A", "Silvermont", "Merrifield" ; 
"GenuineIntel", "06", "4D", "Silvermont", "Avoton/Rangeley" ; 
"GenuineIntel", "06", "4f", "Broadwell", "Broadwell E" ; 
"GenuineIntel", "06", "5A", "Silvermont", "Moorefield" ; 
"GenuineIntel", "06", "5e", "Skylake", "Skylake" ; 
"GenuineIntel", "0B", "01", "Xeon Phi", "Knights Corner" ; 
"GenuineIntel", "0F", "01", "Pentium 4", "Willamette/Foster" ; 
"GenuineIntel", "0F", "02", "Pentium 4", "Gallatin/Northwood/Prestonia" ; 
"GenuineIntel", "0F", "03", "Prescott", "Prescott/Nocona/Irwindale" ; 
"GenuineIntel", "0F", "04", "Prescott", "Prescott/Nocona/Irwindale" ; 
"GenuineIntel", "0F", "06", "Presler", "Cedar Mill/Presler" ; 
"GenuineIntel", "0F", "07", "Pentium 4", "Irwindale" ; 
"GenuineIntel", "1F", "03", "Itanium-2", "Madison" ; 
"GenuineIntel", "20", "00", "Itanium", "Montecito" ; 
"GenuineIntel", "20", "01", "Itanium", "Montvale" ; 
"GenuineIntel", "20", "02", "Itanium", "Tukwila" ; 
"GenuineIntel", "21", "00", "Itanium", "Poulson"; 
"AuthenticAMD", "06", "0d", "QEMU", "QEMU Virtual Processor"; 
"AuthenticAMD", "10", "02", "K10", "Opteron Third Generation"; 
"AuthenticAMD", "10", "09", "K10", "Opteron 6100 series"; 
"AuthenticAMD", "15", "01", "Bulldozer", "Opteron 6200 series"; 
"AuthenticAMD", "15", "02", "Piledriver", "Opteron 6300 series"; 
"AuthenticAMD", "0f", "02", "K10", "Opteron Third Generation"; 
"AuthenticAMD", "0f", "09", "K10", "Opteron 6100 series"; 
"PowerPC_POWER6", "", "", "PowerPC", "POWER6"; 
"PowerPC_POWER7", "", "", "PowerPC", "POWER7"
 )
 whose
 (
   (
 (
   if
     exists property "vendor name" of type "processor" 
   then
     unique value of vendor names of processors 
   else
     unique value of families of processors as string
 )
 = item 0 of it
   )
  AND
   (
 item 1 of it = "" 
OR
 (
   if
     not exists property "family" of type "processor" 
   then
     false 
   else
     (
       (
         (
           (
             (
               if
                 (
                   exists families 
                   whose
                   (
                     it = 15
                   )
                   of processors
                 )
               then
                 (
                   (
                     it as integer
                   )
                   of 
                   (
                     unique value of families of processors + unique value of extended families of processors
                   )
                 )
               else
                 (
                   unique value of families of processors
                 )
             )
           )
           | 
           (
             unique value of families of processors
           )
         )
         = hexadecimal integer 
         (
           item 1 of it
         )
       )
     )
 )
   )
  AND
   (
 item 2 of it = "" 
OR
 (
   if
     not exists property "model" of type "processor" 
   then
     false 
   else
     (
       (
         (
           if
             (
               exists families 
               whose
               (
                 it = 6 
                OR
                 it = 15
               )
               of processors
             )
           then
             (
               it as integer
             )
             of 
             (
               (
                 left shift 4 of 
                 (
                   it as bit set
                 )
                 of unique value of extended models of processors
               )
               + 
               (
                 (
                   it as bit set
                 )
                 of unique value of models of processors
               )
             )
           else
             (
               unique value of models of processors
             )
         )
       )
       | 
       (
         unique value of models of processors
       )
     )
     = hexadecimal integer 
     (
       item 2 of it
     )
 )
   )
 )

Edit: Looks like PowerPC doesn’t have a ‘Family’ or ‘Model’ property, will do some more edge-case checks tomorrow.

Edit 2: Updated the query to handle PowerPC, matching the list against “families of processors as string” if the “vendor name of processor” property does not exist.

2 Likes