Támogatott x86-64 mikroarchitektúra verzió lekérdezése

Probléma: egyre több rendszer követeli meg az x86-64 mikroarchitektúra egy bizonyos verziójának a támogatását, te pedig tudni szeretnéd, hogy a processzorod melyiket támogatja.

CPU illusztráció
CPU illusztráció

Probléma: egyre több rendszer követeli meg az x86-64 mikroarchitektúra egy bizonyos verziójának a támogatását, te pedig tudni szeretnéd, hogy a processzorod melyiket támogatja.

Megoldás: ezzel a rövid scripttel lekérdezheted a processzorod által támogatott x86-64 mikroarchitektúra verziót:

#!/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
}

Script kimenete Intel Haswell architektúra esetén:

CPU supports x86-64-v3

Mik ezek a verziók?

Az x86-64 mikroarchitektúrát (ismert még AMD64/x64 néven is) használó első processzor az AMD Opteron volt, 2003 áprilisában. Ez az immár 20 éves mikroarchitektúra a bemutatásakor modernnek számított, manapság viszont már nem az. Az évek során az egyre fejlettebb processzorok új utasításkészleteket hoztak, amiknek hála gyorsabb, hatékonyabb és egyes esetekben biztonságosabb alkalmazások fejleszthetőek.

2020-ban az AMD, az Intel, a Red Hat és a SUSE megegyezett abban, hogy x86-64 mikroarchitektúra verziókat vezetnek be. Minden egyes verzió egy-egy nagyobb processzorfejlődési mérföldkövet jelent. Ennek hála az operációs rendszer, illetve alkalmazás rendszerkövetelményeknél nem kell megadni, hogy az x86-64 mikroarchitektúrán felül milyen utasítások kellenek a futtatáshoz. Elég csak a verziót megadni, és akkor mindenkinek tiszta a minimum feltétel.

Mit csinál a script?

A /proc/cpuinfo tartalmazza az összes processzorral kapcsolatos információt. Ennek a flags sorában vannak a támogatott utasítások. A script ez alapján megnézi, hogy az adott architektúra verzió minden utasításkészlete jelent van-e itt. Ha igen, akkor kompatibilisnak jelöli a processzort.