
A Linux 6.18 kernel új patch-et hoz azoknak, akik a közel egy évtizedes AMD Bulldozer processzorokat használják, és szeretnék kihasználni a Linux X86_NATIVE_CPU build opcióját a teljesítmény növelésére az adott processzor/ISA képességeire optimalizált kernel fordításával.
A probléma háttere
A nyáron jelentett hibák során a Gentoo rendszeren futó, régi AMD FX-8350 processzort használó felhasználók kernel build során találkoztak különféle hibákkal, miközben a X86_NATIVE_CPU opciót használták a teljesítmény maximalizálására.
A vizsgálatok során kiderült, hogy a hibák oka az XOP utasításkészlet volt, amelyet az AMD Bulldozer mikroarchitektúra vezetett be. Az XOP utasításokat nem kezeli megfelelően a Linux kernel, és ezek csak az AMD Bulldozer CPU-kon találhatók meg, nem az újabb AMD Zen vagy Intel processzorokon.
A megoldás: XOP dekódolás támogatása
A problémát Masami Hiramatsu, a Google mérnöke oldotta meg egy patch segítségével, amely támogatja az AMD XOP prefix kódolt utasítások dekódolását:
„Támogatás az AMD XOP prefix kódolt utasításainak dekódolásához.
Ezeket az utasításokat a Bulldozer mikroarchitektúrához vezették be, és nem támogatottak az Intel processzorain. Azonban a CONFIG_X86_NATIVE_CPU kernel build opció használatakor bizonyos AMD processzorokon (pl. -march=bdver2) ezek az utasítások felhasználhatók.”
Az XOP utasításkészlet egy részét az eredeti SSE5 tervezett képességeknek valósította meg, amely kifejezetten a Bulldozer CPU-k teljesítményének növelésére szolgált.
Mit jelent ez a felhasználóknak?
A patch integrálása után a Linux 6.18 kernel lehetővé teszi, hogy a felhasználók X86_NATIVE_CPU opcióval problémamentesen fordítsanak kernelt AMD Bulldozer rendszereken. Ez azt jelenti, hogy a régi FX-8350 vagy hasonló Bulldozer CPU-k tulajdonosai kihasználhatják a processzor specifikus optimalizációkat, anélkül, hogy a korábbi build hibákra kellene figyelniük.
Ez különösen fontos azok számára, akik még mindig régi AMD hardveren futtatják Linux rendszereiket, de szeretnék maximalizálni a teljesítményt, például szervereken, fejlesztői környezetekben vagy egyéni desktop build-eknél.
