Merge pull request #9347 from maxim-belkin/amd_cpus
Identify AMD CPUs on Linux
This commit is contained in:
commit
1d5e354cc2
@ -20,10 +20,20 @@ module Hardware
|
||||
# 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://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_model = cpuinfo[/^model\s*: ([0-9]+)/, 1].to_i
|
||||
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)
|
||||
when "AuthenticAMD"
|
||||
amd_family(cpu_family)
|
||||
end || unknown
|
||||
end
|
||||
|
||||
def intel_family(family, cpu_model)
|
||||
case family
|
||||
when 0x06
|
||||
case cpu_model
|
||||
when 0x3a, 0x3e
|
||||
@ -52,8 +62,6 @@ module Hardware
|
||||
:cannonlake
|
||||
when 0x6a, 0x6c, 0x7d, 0x7e
|
||||
:icelake
|
||||
else
|
||||
unknown
|
||||
end
|
||||
when 0x0f
|
||||
case cpu_model
|
||||
@ -61,11 +69,32 @@ module Hardware
|
||||
:presler
|
||||
when 0x03, 0x04
|
||||
:prescott
|
||||
else
|
||||
unknown
|
||||
end
|
||||
else
|
||||
unknown
|
||||
end
|
||||
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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user