Hlavní navigace

32 bitů + 64 bitů = to nejlepší z obou světů v x32 ABI

31. 7. 2012
Doba čtení: 5 minut

Sdílet

Trendem posledních (mnoha) let je přechod na 64bitový operační systém. Zdaleka ne všichni uživatelé se k tomuto kroku ale odhodlali. Nová architektura má z principu totiž také své nevýhody a ne každý je ochoten je akceptovat. Je tu ale zajímavé univerzální řešení x32 ABI, které spojuje to nejlepší z obou.

První procesor s architekturou AMD64 se objevil už v roce 2003, tedy před téměř deseti lety. Už v té době byl Linux (jádro) na 64bitový režim připraven a a během následujících let začaly vydávat novou větev i všechny velké linuxové distribuce. Od té doby vlastně probíhá přechod uživatelů na 64 bitů.

Přestože nová platforma přináší řadu výhod, mnoho uživatelů na ni ještě stále nepřešlo. Různé internetové ankety ukazují, že přibližně polovina linuxových počítačů ještě běží na 32 bitech. To je možné připisovat jednak neznalosti některých uživatelů, ale svou roli tu budou hrát i nevýhody 64bitové platformy.

64 bitů není pro každého

Platforma AMD64, kterou i přes název dnes používají i procesory Intel, řeší několik různých problémů. Přidává další (a větší) registry, přináší nové výkonné instrukce a zvětšuje adresní prostor. Poslední jmenovaná vlastnost je z uživatelského hlediska nejviditelnější a také nejzajímavější. „Pokud máš víc než 4 GB paměti, potřebuješ 64 bitů,“ říká obecná rada. I když je možné rozšířenou adresaci řešit i pomocí PAE v 32bitovém prostředí, přechod na 64 bitů je asi nejčistším řešením bez dalších vedlejších efektů.

Ovšem tady právě přichází největší nevýhoda: pro rozšířenou adresaci je třeba rozšířit i délku ukazatelů a proměnných na 64 bitů. To způsobuje nepříjemný efekt, kdy narůstá velikost binárního kódu. Bobtnání je závislé na konkrétní aplikaci, ale obecně jde o desítky procent. To není část uživatelů ochotna akceptovat a znám řadu lidí, pro které je to překážka v přechodu na 64 bitů.

Větší kód zabírá více prostoru v paměti a zároveň zahlcuje cache, což snižuje její efektivitu. Může tak dojít k paradoxní situaci, kdy 64bitová aplikace bude pomalejší, než kdyby běžela ve 32bitovém režimu. Navíc je třeba si uvědomit, že většina aplikací ani větší než 4GB adresní prostor nepotřebuje a nevyužije. Dvakrát delší ukazatele a proměnné jsou tedy pro takové aplikace jen přítěží bez praktického využití. Ovšem i těmto aplikacím by se hodilo více registrů a některé vylepšené instrukce a další výhody 64bitového režimu.

x32 ABI míchá výhody…

Proto se vývojáři rozhodli přijít s „novým režimem“, který si bere to nejlepší z obou světů a poměrně zajímavě vše kombinuje. Ve zkratce jde o to, že procesor stále běží v 64bitovém režimu se všemi jeho výhodami, ale aplikace používají k adresaci 32bitové ukazatele. Mohou tedy adresovat „jen“ 4 GB paměti, ale zbytečně nebobtnají.

K tomu je potřeba splnit dvě podmínky: mít překladač schopný takto kód sestavit a mít podporu v jádře operačního systému. Podpora v tomto případě znamená nové ABI označované v linuxovém jádře jako x32 ABI. To umožňuje při volání jádra přijmout od aplikací data v 32bitové podobě. O konkrétní podobě tohoto rozhraní se mezi vývojáři vedly spory, o kterých psal například server LWN.

Nový režim už není jen v plánech vývojářů, ale je možné jej nasadit. Podpora je součástí jádra 3.4, glibc 2.16 a GCC různých verzí, oficiálně pak od 4.7. Vývojáři různých distribucí už podporu oznámili a pravděpodobně půjde časem v mnoha distribucích o preferovanou variantu běhu aplikací.

První testy vývojářů totiž ukazují, že jde o nejrychlejší režim pro běh aplikací. Phoronix uvádí, že v některých případech narostl výkon až o 32 %, což je jistě velmi zajímavé číslo. Dodává ale, že jsou situace, kdy je výkon nepatrně horší než u plně 64bitového režimu. Abychom ale měli představu o konkrétním dopadu na ušetřenou paměť a výkon, budeme si muset počkat na další testy, ideálně v plně funkčním operačním systému.

Uživatelé se také často ptají, co se stane, když bude některá aplikace vyžadovat více než 4 GB paměti. Ovšem i tahle situace má (poměrně) jednoduché řešení. Pokud by aplikace vyžadovala více než 4 GB paměti nebo by byla při kompilaci proti x32 ABI pomalejší, je možné ji vždycky provozovat v plně 64bitovém režimu. Procesor v něm tak či tak běží a obě ABI jsou k dispozici zároveň. Není tedy problém míchat x32 i klasické 64bitové aplikace.

Je tu ale jedno velké „ale“. Je totiž třeba počítat s tím, že pro takový běh je třeba mít zapnutý multilib a používat oddělené x32 a 64bitové knihovny. Stejně, jako dnes provozujeme vedle sebe 32– a 64bitové aplikace. Opět tím tedy naroste spotřeba paměti a místa na disku.

Kde už x32 je či bude

Jak už bylo napsáno, někteří distributoři o „nové architektuře“ hovoří či ji rovnou nasadili. Jako první bylo z pochopitelných důvodů Gentoo, které vydalo první testovací verzi v červnu letošního roku. Můžete si tedy novinku stáhnout a vyzkoušet.

I mezi vývojáři Ubuntu už se o nasazení hovoří několik měsíců. Canonical zatím vyčkává, až budou všechny střípky připraveny k reálnému nasazení. Z jednání zatím vyplynulo: Jednotlivé součásti pravděpodobně nebudou připraveny do verze 12.10, ale měli bychom už přemýšlet nad tím, jak to do Ubuntu dostaneme.

Debian zatím přidal podporu x32 ABI do balíčkovače dpkg (viz bug 667037) a v některých dokumentech se už jméno nové architektury nachází. Také v konferencích se dají najít zmínky o krocích vedoucích k podpoře v Debianu. Oficiální rozhodnutí ale zatím nepadlo, i když Ben Hutchings v konferenci píše: Nechci to udělat [zapnout podporu v jádře], dokud se projekt nerozhodne x32 podporovat. Což si myslím, že neudělá.

Podobně se nad nasazením diskutuje například ve Fedoře. Matthew Garrett v konferenci píše: Pokud se objeví dostatečný zájem, můžeme to případně implementovat jako samostatnou architekturu. Ale netuším, zda to bude pro Fedoru natolik přínosné, abychom na tom strávili více času.

DT24

U Arch Linuxu se zatím také diskutuje o přínosech, ale někteří vývojáři už začali na příslušných balíčcích pracovat.

Zatím je x32 ABI příliš mladé, než aby se tvůrci distribucí vrhli do jeho hromadného nasazování. Podle reakcí mnoha uživatelů jde ale o užitečnou věc, o kterou je zájem. Proto už vývoj na mnoha místech začal i přesto, že se projekty oficiálně nerozhodly, že jde o správný směr. Zřejmě tedy rozhodne reálný zájem uživatelů. Co si myslíte vy?

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.