/proc/cpuinfo 如何检测 CPU 型号?

Mar*_*tin 3 linux-kernel

我有一个服务器,它在dmidecodeCPU 的输出中显示以下信息:

Handle 0x000D, DMI type 4, 35 bytes                            
Processor Information          
        Socket Designation: CPU 1                              
        Type: Central Processor                                
        Family: Xeon           
        Manufacturer: GenuineIntel                             
        ID: FB 06 00 00 01 03 00 00                            
        Signature: Type 0, Family 6, Model 15, Stepping 11     
        Flags:                 
                FPU (Floating-point unit on-chip)              
                CX8 (CMPXCHG8 instruction supported)           
                APIC (On-chip APIC hardware supported)         
        Version: Intel Xeon    
        Voltage: 1.2 V         
        External Clock: 266 MHz                                
        Max Speed: 3733 MHz    
        Current Speed: 2000 MHz                                
        Status: Populated, Enabled                             
        Upgrade: ZIF Socket    
        L1 Cache Handle: 0x0009                                
        L2 Cache Handle: 0x000A                                
        L3 Cache Handle: Not Provided                          
        Serial Number: Not Specified                           
        Asset Tag: Not Specified                               
        Part Number: Not Specified   
Run Code Online (Sandbox Code Playgroud)

基于Max Speed,我猜它是Xeon 5080 CPU。但是,根据/proc/cpuinfo,它是至强 E5335

# grep "model name" /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
# 
Run Code Online (Sandbox Code Playgroud)

当我检查 中列出的标志/功能时/proc/cpuinfo,它会显示ssse3,它在Xeon 5080 中受支持,而在Xeon E5335 中不受支持。如何/proc/cpuinfo检测CPU型号?

Ste*_*itt 8

在 x86 上,它使用受支持的CPUID“处理器品牌字符串”功能。因此,在您的情况下,是 CPU 本身返回“Intel(R) Xeon(R) CPU E5335 @ 2.00GHz”字符串。这对应于dmidecode输出:ID: FB 06 00 00 01 03 00 00匹配 06FB CPUID, E53355080将具有 0F64 CPUID)。

您可以在arch/x86/kernel/cpu/common.cget_model_name函数中看到内核实现。

Xeon E5335 是 Clovertown CPU,它支持 SSSE3