Egy korszak vége: Megszűnik a Linux kernel i486 és i586 támogatása

Molnár Ingo magyar kernelfejlesztő új javaslatsorozata radikális lépést tesz az x86 architektúra modernizálása felé, amelynek részeként végleg búcsút intenek a Linux kernelben az olyan elavult 32 bites processzorok támogatásának, mint az i486 és a korai i586 modellek. Ezek a CPU-k évekig marginális szerepet töltöttek be a Linux világában, mégis jelentős mennyiségű „kompatibilitási ragasztóként” szolgáló kód maradt utánuk a kernelben. Molnár szerint e régi támogatási réteg nemcsak felesleges, hanem sokszor aktívan hátráltatja a fejlesztést, és fölösleges hibakeresésre kényszeríti a közösséget. Linus Torvalds is egyetért a lépéssel, mondván: itt az ideje elengedni az i486 támogatását, és senkinek sem kellene több munkaórát ezen részek fejlesztésére áldoznia.

Egy korszak vége: Megszűnik a Linux kernel i486 és i586 támogatása
Kép forrása: Thandor.net

A változások főbb technikai pontjai

A javaslatcsomag célja, hogy a minimálisan elvárt CPU-funkciók közé emelje a TSC (Time Stamp Counter) és a CX8 (CMPXCHG8B utasítás) meglétét. Ez azt jelenti, hogy a kernel a jövőben csak azokat a processzorokat támogatja, amelyek rendelkeznek ezekkel az alapvető képességekkel. A döntés következtében teljes egészében megszűnik a 486-os és a TSC nélküli korai 586-os chipek támogatása.

A módosítások eredményeként több mint tizennégyezer sor kódot töröltek a kernelből, míg mindössze 38 új sort kellett beilleszteni. A legtöbb törölt fájl a math-emu könyvtárból származik, amely a lebegőpontos műveletek szoftveres emulációjáért felelt az olyan CPU-kon, amelyek nem rendelkeztek valódi FPU-val. De még ezen könyvtár eltávolításán túl is több mint ezer sor feleslegessé vált, ami jelentős egyszerűsítést eredményez a kódbázisban.

Az eltávolítás menetrendje a Linux kernelből

A javaslatcsomag öt fő szakaszra tagolódik. Az első a régi CPU-opciók törlésére fókuszál a Kconfig fájlokban, eltávolítva többek közt az M486, M486SX, ELAN, valamint az MWINCHIP és UMC specifikus támogatásokat. A második szakaszban megszűnik több platformhoz köthető támogatás, például az RDC321X és AMD ELAN architektúrákhoz, valamint a hozzájuk tartozó watchdog és cpufreq alrendszerekhez.

A harmadik szakasz az FPU emuláció teljes eltávolítását célozza. Eltűnik a MATH_EMULATION opció, a no387 bootparaméter, és minden kapcsolódó fájl a math-emu/ könyvtárból, beleértve az assembler és C nyelvű modulokat, makrókat és dokumentációkat.

Info
A Linux első verziói már gond nélkül futottak az Intel i486 processzorokon is, noha kifejezetten a 386-os architektúrára készültek. Az i586, vagyis a Pentium támogatása fokozatosan jelent meg az 1.1-es kernelverziók során 1994-ben, amikor a fejlesztők elkezdték kihasználni a processzor újabb utasításait, például a CMPXCHG8B-t, valamint optimalizálták a rendszert a Pentium architektúrához.

A negyedik és ötödik szakasz lényege, hogy a TSC és CX8 támogatása mostantól kötelező lesz az x86 platformon. A TSC-hez és CX8-hoz tartozó konfigurációs opciók ezentúl mindig engedélyezettek, és a köréjük épülő feltételes kódrészeket teljesen eltávolították. Bár a konfigurációs opciók nevesítve még megmaradnak, már nincs gyakorlati jelentőségük, és később vélhetően teljesen eltűnnek.

A folyamat nyomon követhető

Molnár jelezte, hogy még akadnak elszórt hivatkozások a már eltávolított platformokra a főbb Kconfig fájlokban, illetve hogy a CPU-választási logika túlzottan komplex maradt. Ezek tisztítását egy későbbi körben tervezi elvégezni, amennyiben a közösség támogatja a jelenlegi javaslatok irányát. A munkafolyamat követhető a git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git címen, a WIP.x86/cpu ágon.

A 32 bites éra alapkövei: Az x86 negyedik és ötödik generációja

Az Intel i486 processzora 1989-ben jelent meg, és az x86 architektúra negyedik generációját képviselte. Az első valódi 32 bites tömegpiaci CPU-k közé tartozott, beépített matematikai társprocesszorral (FPU) és pipelined utasítás-végrehajtással, ami jelentős teljesítménynövekedést hozott az elődjeihez képest. Az i486 sokáig meghatározó volt mind az ipari, mind az otthoni számítástechnikában, és több évig használták belépő szintű PC-kben és beágyazott rendszerekben egyaránt.

A sorozatot az 1993-ban bemutatott Pentium, vagyis az i586 váltotta, amely párhuzamos végrehajtási egységeivel és új utasításkészletével tovább növelte a számítási teljesítményt. A Pentium volt az első chip, amely elhagyta a számozott elnevezést a védjegyezhetőség miatt, de technikai szempontból az x86 architektúra ötödik generációját jelöli. Mindkét platform mára történelmi jelentőségűvé vált, ám örökségük évtizedeken át velünk maradt a Linux kernel kódjában is – egészen mostanáig.