cpu_features
cpu_features copied to clipboard
Intel(R) Xeon(R) Platinum 8275CL detected as skylake
On a AWS C5 machine:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Stepping: 7
CPU MHz: 2999.998
BogoMIPS: 5999.99
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
NUMA node0 CPU(s): 0-7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 ida arat pku ospke
but
[wtambellini@xmt_perf bin]$ ./list_cpu_features
arch : x86
brand : Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
family : 6 (0x06)
model : 85 (0x55)
stepping : 7 (0x07)
uarch : INTEL_SKL
flags : aes,avx,avx2,avx512bw,avx512cd,avx512dq,avx512f,avx512vl,bmi1,bmi2,cx16,erms,f16c,fma3,movbe,popcnt,rdrnd,sse4_1,sse4_2,ssse3
using commit 9613390. Trying with master ....
Also detected as skylake with 0.7.0:
[wtambellini@xmt bin]$ ./list_cpu_features
arch : x86
brand : Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
family : 6 (0x06)
model : 85 (0x55)
stepping : 7 (0x07)
uarch : INTEL_SKL
flags : adx,aes,avx,avx2,avx512_second_fma,avx512bw,avx512cd,avx512dq,avx512f,avx512vl,bmi1,bmi2,clflushopt,clfsh,clwb,cx16,cx8,erms,f16c,fma3,fpu,mmx,movbe,pclmulqdq,popcnt,rdrnd,rdseed,ss,sse,sse2,sse3,sse4_1,sse4_2,ssse3,tsc
cache_info : {"level":1,"cache_type":"data","cache_size":32768,"ways":8,"line_size":64,"tlb_entries":64,"partitioning":1},{"level":1,"cache_type":"instruction","cache_size":32768,"ways":8,"line_size":64,"tlb_entries":64,"partitioning":1},{"level":2,"cache_type":"unified","cache_size":1048576,"ways":16,"line_size":64,"tlb_entries":1024,"partitioning":1},{"level":3,"cache_type":"unified","cache_size":37486592,"ways":11,"line_size":64,"tlb_entries":53248,"partitioning":1}
8275CL is supposed to be a cascadelake CPU: https://www.cpu-world.com/Compare/354/Intel_Xeon_8275CL_vs_Intel_Xeon_W_W-11555MRE.html https://en.wikichip.org/wiki/intel/microarchitectures/cascade_lake https://www.intel.com/content/www/us/en/products/platforms/details/cascade-lake.html
todays master also id as skylake:
[wtambellini@xmt_dcos_perf build]$ ./list_cpu_features
arch : x86
brand : Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
family : 6 (0x06)
model : 85 (0x55)
stepping : 7 (0x07)
uarch : INTEL_SKL
flags : adx,aes,avx,avx2,avx512_second_fma,avx512bw,avx512cd,avx512dq,avx512f,avx512vl,bmi1,bmi2,clflushopt,clfsh,clwb,cx16,cx8,erms,f16c,fma3,fpu,mmx,movbe,pclmulqdq,popcnt,rdrnd,rdseed,ss,sse,sse2,sse3,sse4_1,sse4_2,ssse3,tsc
cache_info : {"level":1,"cache_type":"data","cache_size":32768,"ways":8,"line_size":64,"tlb_entries":64,"partitioning":1},{"level":1,"cache_type":"instruction","cache_size":32768,"ways":8,"line_size":64,"tlb_entries":64,"partitioning":1},{"level":2,"cache_type":"unified","cache_size":1048576,"ways":16,"line_size":64,"tlb_entries":1024,"partitioning":1},{"level":3,"cache_type":"unified","cache_size":37486592,"ways":11,"line_size":64,"tlb_entries":53248,"partitioning":1}
thanks for the issue. According to https://en.wikichip.org/wiki/intel/microarchitectures/cascade_lake
For cascade lake: Family 6 Model 85 Stepping 5..7
There are early CPUs which report stepping 4. Normally stepping 4 is Skylake X.
I think we can add a check on stepping
Tks @toor1245 Would you like me to take care of it/prepare a PR ?
@WilliamTambellini, yes, no problem
Hi @toor1245
so I suppose we have to add such logic/case:
if stepping >= 5 and stepping <= 7: cascadelake
probably in:
https://github.com/google/cpu_features/blob/main/src/impl_x86__base_implementation.inl
?
Hi @WilliamTambellini, I think yes, but I'm worried about stepping 4 that was mentioned in wikichip There are early CPUs which report stepping 4. Normally stepping 4 is Skylake X.
These are probably the first Cascade lake CPUs and perhaps they are not in public use.
@gchatelet, can we define stepping 4 as Skylake or should we parse a brand_string
(see Identification
section https://en.wikichip.org/wiki/intel/microarchitectures/cascade_lake)?
@toor1245 how confident are we that we can recover the information by parsing the string? AFAIU the string is not precisely defined by Intel. If it's hard to be sure I would just assume 4 is Skylake.
@gchatelet, we have similar identification by brand_string
to HasSecondFMA
static bool HasSecondFMA(const X86Info* info) {
// Skylake server
if (info->model == 0x55) {
// detect Xeon
if (info->brand_string[9] == 'X') {
// detect Silver or Bronze
if (info->brand_string[17] == 'S' || info->brand_string[17] == 'B')
return false;
// detect Gold 5_20 and below, except for Gold 53__
if (info->brand_string[17] == 'G' && info->brand_string[22] == '5')
return (
(info->brand_string[23] == '3') ||
(info->brand_string[24] == '2' && info->brand_string[25] == '2'));
// detect Xeon W 210x
if (info->brand_string[17] == 'W' && info->brand_string[21] == '0')
return false;
// detect Xeon D 2xxx
if (info->brand_string[17] == 'D' && info->brand_string[19] == '2' &&
info->brand_string[20] == '1')
return false;
}
return true;
}
...
}
but I think its hard to predict all possible cases I would prefer skylake if no objection
seen on https://en.wikichip.org/wiki/intel/microarchitectures/cascade_lake
so TBC:
- x1xx to be skylake ?
- x2xx to be CascadeLake ?
other ref: https://unix.stackexchange.com/questions/230634/how-to-find-out-intel-architecture-family-from-command-line
@WilliamTambellini, yes, you can find the list of Xeon cascade-lake
with the second generation:
https://ark.intel.com/content/www/us/en/ark/products/series/192283/2nd-generation-intel-xeon-scalable-processors.html
and all possible cascade-lake
processors:
https://ark.intel.com/content/www/us/en/ark/products/codename/124664/products-formerly-cascade-lake.html
we can classify cascade-lake processors by brand:
- Intel® Xeon® W-x2xxx...
- Intel® Xeon® Bronze x2xxx...
- Intel® Xeon® Silver x2xxx...
- Intel® Xeon® Gold x2xxx...
- Intel® Xeon® Platinum x2xxx...
- Intel® Core™ i9-109xxx...
cpuid dumps: 16-Core Intel Xeon Gold 5218 (Cascade Lake-SP, Single 512b-FPU)
CPUID 00000001: 00050656-00200800-7FFEFBFF-BFEBFBFF -> stepping 6
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 6C6F4720-32352064-43203831-40205550 [ Gold 5218 CPU @]
CPUID 80000004: 332E3220-7A484730-00000000-00000000 [ 2.30GHz]
10-Core Intel Xeon Gold 5215 (Cascade Lake-SP, 14++ nm server, AVX512_VNNI)
CPUID 00000001: 00050657-00200800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 6C6F4720-32352064-43203531-40205550 [ Gold 5215 CPU @]
CPUID 80000004: 352E3220-7A484730-00000000-00000000 [ 2.50GHz]
12-Core Intel Xeon Silver 4214 (Cascade Lake-SP, 14++ nm server, AVX512_VNNI)
CPUID 00000001: 00050657-00200800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 6C695320-20726576-34313234-55504320 [ Silver 4214 CPU]
CPUID 80000004: 32204020-4730322E-00007A48-00000000 [ @ 2.20GHz]
24-Core Intel Xeon Gold 6212U (Cascade Lake-SP, 14++ nm server, AVX512_VNNI)
CPUID 00000001: 00050657-00400800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 6C6F4720-32362064-20553231-20555043 [ Gold 6212U CPU ]
CPUID 80000004: 2E322040-48473034-0000007A-00000000 [@ 2.40GHz]
28-Core Intel Xeon W-3275, 4200 MHz (42 x 100) (Cascade Lake-W, 14++ nm, AVX512_VNNI)
CPUID 00000001: 00050657-00400800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 332D5720-20353732-20555043-2E322040 [ W-3275 CPU @ 2.]
CPUID 80000004: 48473035-0000007A-00000000-00000000 [50GHz]
16-Core Intel Xeon 6226R (Cascade Lake-SP, AVX512_VNNI)
CPUID 00000001: 00050657-00200800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 6C6F4720-32362064-20523632-20555043 [ Gold 6226R CPU ]
CPUID 80000004: 2E322040-48473039-0000007A-00000000 [@ 2.90GHz]
28-Core Intel Xeon 8280 (Cascade Lake-SP, AVX512_VNNI)
CPUID 00000001: 00050657-00400800-7FFEFBFF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-6F655820-2952286E [Intel(R) Xeon(R)]
CPUID 80000003: 616C5020-756E6974-3238206D-43203038 [ Platinum 8280 C]
CPUID 80000004: 40205550-372E3220-7A484730-00000000 [PU @ 2.70GHz]
14-Core Intel Core i9-10940X, 4300 MHz (43 x 100) (Cascade Lake-X)
CPUID 00000001: 00050657-00400800-7FFEFBBF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-726F4320-4D542865 [Intel(R) Core(TM]
CPUID 80000003: 39692029-3930312D-45583038-55504320 [) i9-10980XE CPU]
CPUID 80000004: 33204020-4730302E-00007A48-00000000 [ @ 3.00GHz]
18-Core Intel Core i9-10980XE Extreme Edition, 3000 MHz (30 x 100) (Cascade Lake-X)
CPUID 00000001: 00050657-00200800-7FFEFBBF-BFEBFBFF -> stepping 7
...
CPUID 80000002: 65746E49-2952286C-726F4320-4D542865 [Intel(R) Core(TM]
CPUID 80000003: 39692029-3930312D-20583034-20555043 [) i9-10940X CPU ]
CPUID 80000004: 2E332040-48473033-0000007A-00000000 [@ 3.30GHz]
Affected Processors: Transient Execution Attacks & Related Security Issues by CPU
As you can see there is no info about CascadeLake with stepping 4
CPUs that didn't mention in the above link but provided by wickichip cascade-lake and intel cascade lake processors:
- Xeon Gold 6246R - Intel, stepping 7, see https://www.spec.org/cpu2017/results/res2020q1/cpu2017-20200203-20784.html
- Xeon Gold 6248R - Intel, stepping 7, see https://openbenchmarking.org/s/2+x+Intel+Xeon+Gold+6248R
- Xeon Gold 5215M - Intel, stepping 6, see https://www.spec.org/cpu2017/results/res2019q4/cpu2017-20190930-18769.pdf
- Xeon Platinum 8284 - Intel, stepping 6, see https://www.spec.org/cpu2017/results/res2019q2/cpu2017-20190317-11165.html
Hence we can set Skylake for stepping 4
Tks @toor1245 Well that issue is just about "Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz" with stepping = 7. Do you propose to set CascadeLake when 6 <= stepping <= 7 ?
@WilliamTambellini, I'm not sure about stepping 5, but this stepping was mentioned in wikichip note that while steppings 6 & 7 are fully mitigated, earlier stepping 5 is not protected against MSBDS, MLPDS, nor MDSUM
, I didn't find any other info in the documentation, so let's set CascadeLake for now when 6 <= stepping <= 7
@toor1245 ok so I suppose after that line: https://github.com/google/cpu_features/blob/cee2648cf0cebfb5e0106a2187d4b1c33851a9ec/src/impl_x86__base_implementation.inl#L528 adding something like :
case CPUID(0x06, 0x4E):
case CPUID(0x06, 0x55):
case CPUID(0x06, 0x5E):
if (info->stepping >=6 && info->stepping <= 7)
return INTEL_CCL; // CascadeLake
return INTEL_SKL;
?
CPUID(0x06, 0x55): is only CascadeLake
...
case CPUID(0x06, 0x4E):
case CPUID(0x06, 0x5E):
return INTEL_SKL;
case CPUID(0x06, 0x55):
if (info->stepping >= 6 && info->stepping <= 7) {
return INTEL_CCL;
}
return INTEL_SKL;
...