Recognize AMD CPUs on Linux
This commit is contained in:
parent
8fe91aacc3
commit
97c9a952d3
@ -20,12 +20,24 @@ module Hardware
|
|||||||
# See https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers
|
# See https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers
|
||||||
# and https://github.com/llvm-mirror/llvm/blob/HEAD/lib/Support/Host.cpp
|
# and https://github.com/llvm-mirror/llvm/blob/HEAD/lib/Support/Host.cpp
|
||||||
# and https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures#Roadmap
|
# and https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures#Roadmap
|
||||||
|
vendor_id = cpuinfo[/^vendor_id\s*: (.*)/, 1]
|
||||||
cpu_family = cpuinfo[/^cpu family\s*: ([0-9]+)/, 1].to_i
|
cpu_family = cpuinfo[/^cpu family\s*: ([0-9]+)/, 1].to_i
|
||||||
cpu_model = cpuinfo[/^model\s*: ([0-9]+)/, 1].to_i
|
cpu_model = cpuinfo[/^model\s*: ([0-9]+)/, 1].to_i
|
||||||
unknown = :"unknown_0x#{cpu_family.to_s(16)}_0x#{cpu_model.to_s(16)}"
|
unknown = :"unknown_0x#{cpu_family.to_s(16)}_0x#{cpu_model.to_s(16)}"
|
||||||
case cpu_family
|
case vendor_id
|
||||||
|
when "GenuineIntel"
|
||||||
|
intel_family(cpu_family, cpu_model) || unknown
|
||||||
|
when "AuthenticAMD"
|
||||||
|
amd_family(cpu_family) || unknown
|
||||||
|
else
|
||||||
|
unknown
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def intel_family(family, model)
|
||||||
|
case family
|
||||||
when 0x06
|
when 0x06
|
||||||
case cpu_model
|
case model
|
||||||
when 0x3a, 0x3e
|
when 0x3a, 0x3e
|
||||||
:ivybridge
|
:ivybridge
|
||||||
when 0x2a, 0x2d
|
when 0x2a, 0x2d
|
||||||
@ -52,20 +64,39 @@ module Hardware
|
|||||||
:cannonlake
|
:cannonlake
|
||||||
when 0x6a, 0x6c, 0x7d, 0x7e
|
when 0x6a, 0x6c, 0x7d, 0x7e
|
||||||
:icelake
|
:icelake
|
||||||
else
|
|
||||||
unknown
|
|
||||||
end
|
end
|
||||||
when 0x0f
|
when 0x0f
|
||||||
case cpu_model
|
case model
|
||||||
when 0x06
|
when 0x06
|
||||||
:presler
|
:presler
|
||||||
when 0x03, 0x04
|
when 0x03, 0x04
|
||||||
:prescott
|
:prescott
|
||||||
else
|
|
||||||
unknown
|
|
||||||
end
|
end
|
||||||
else
|
end
|
||||||
unknown
|
end
|
||||||
|
|
||||||
|
def amd_family(family)
|
||||||
|
case family
|
||||||
|
when 0x06
|
||||||
|
:amd_k7
|
||||||
|
when 0x0f
|
||||||
|
:amd_k8
|
||||||
|
when 0x10
|
||||||
|
:amd_k10
|
||||||
|
when 0x11
|
||||||
|
:amd_k8_k10_hybrid
|
||||||
|
when 0x12
|
||||||
|
:amd_k12
|
||||||
|
when 0x14
|
||||||
|
:bobcat
|
||||||
|
when 0x15
|
||||||
|
:bulldozer
|
||||||
|
when 0x16
|
||||||
|
:jaguar
|
||||||
|
when 0x17
|
||||||
|
:zen
|
||||||
|
when 0x19
|
||||||
|
:zen3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user