X86架构的CPU主要是Intel和AMD开发和制造,目前已经有了40多年的历史(X86于1978年6月8日发布)。X86的64位版最先在1999年由AMD开发,一般被简写为X64AMD64X86_64X86-64;X86-64也有20多年的历史了,这数十年间,CPU经过了数不清的技术创新和迭代,哪怕是X86-64架构也逐渐有了不同的微架构版本。

目前我们使用的UbuntuFedora/CentOS Stream/RedHat的最新版本都计划或者已经停止了X86 32位架构的支持,CentOS Stream 10/RedHat 10/Fedora而言最低支持的X86-64微架构则为x86_64-v3。

我们可以把下面的代码保存在cpu_microarchitecture_level,并赋予可执行权限后进行X86-64 CPU微架构版本检查

#!/usr/bin/awk -f

BEGIN {
    while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
    if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
    if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
    if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
    if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
    if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
    exit 1
}
[root@localhost ~]# vim cpu_microarchitecture_level
[root@localhost ~]# chmod +x cpu_microarchitecture_level 
[root@localhost ~]# ./cpu_microarchitecture_level 
CPU supports x86-64-v4