Co je AArch64? Co potřebujete vědět o této architektuře CPU

Ačkoli jste pravděpodobně používali zařízení s procesorem AArch64 uvnitř, možná nevíte, co to znamená. Zde je to, co potřebujete vědět.

Existuje mnoho CPU architektury tam venku, s těmi největšími x86 a PAŽE. Nicméně, AArch64 pravděpodobně proletěl pod vaším radarem. Dokonce i docela sečtělý technický nadšenec o něm možná nikdy neslyšel, přestože je přítomen v milionech zařízení. Jde o to, že AArch64 není ani tak záhadný, jako spíše velmi matoucí technický termín. Zde je to, co potřebujete vědět o AArch64.

AArch64 je něco jako ARM64

Zdroj: Arm

Stručně řečeno, AArch64 je oficiální název pro 64bitovou architekturu instrukční sady (ISA) Arm, která byla představena s aktualizací Armv8-A. Téměř vždy odkazuje na AArch64. Není přesně jasné, proč se ARM64 často používá místo AArch64, ale zdá se, že část zmatku pramení ze dvou míst. Částečně je to proto, že 64bitové rozšíření x86 je x86-64, takže přirozeně 64bitové rozšíření ARM by mělo být ARM64. Apple si to určitě myslel a až do roku 2014 označoval AArch64 jako ARM64. Pro většinu lidí je "AArch64 je ARM64" velmi uspokojivé vysvětlení.

Pokud chcete být opravdu technický, AArch64 není ISA, ale spíše exekuční stav který umožňuje procesorům ARM používat (a pouze používat) instrukční sadu A64 ARMv8 ISA, která byla poprvé představena s architekturou Armv8-A. Pokud to zní zmateně, je to proto, že to tak je. I když jste obeznámeni s architekturou počítačů, může to být obtížné pochopit, takže to vysvětlím krok za krokem.

Technicky tedy AArch64 je stát, ne ISA, ale nikoho to nezajímá, dokonce ani Arm sám.

ARM je rodina příbuzných ISA, a přestože různé ISA obvykle znamenají nekompatibilitu, není to striktně pravda. Různé verze ARM ISA se nazývají ARMv1, ARMv2 a tak dále, ale tyto ISA obsahují to, co jsou v podstatě podřízené ISA: A-profile, M-profile a R-profile. Základní rozdíl mezi těmito sub-ISA je minimální množství instrukcí, které každý používá, přičemž A-profil využívá nejvíce a M-profil používá nejméně. ARM ISA se tedy dělí na jednotlivé verze jako ARMv8 a tyto verze se pak dále dělí na různé implementace ISA.

Armv8-A je počáteční implementace A-profilu ARMv8 ISA, která přidala dvě nové věci: AArch32 a AArch64. Tyto jsou označovány jako stavy nebo režimy a umožňují procesorům ARM přístup k různým sadám instrukcí, s AArch32 obsahujícím 32bitové instrukce A32 a T32 a AArch64 obsahujícím 64bitové A64 instrukce. Pokud je například procesor aktuálně ve stavu AArch64 a chce používat instrukce A32, musí svůj stav změnit na AArch32. Navíc v režimu AArch64 jsou přístupné 32bitové i 64bitové registry, zatímco v režimu AArch32 jsou použitelné pouze 32bitové registry. Nejvíce matoucí na tom všem je, že všechny tyto věci jsou proměnně označovány jako ISA a dokonce i Arm (společnost, která vyvíjí ARM ISA) je vinna.

Ale pokud jsme supertechnickí, je to tak, jak to ve skutečnosti je: osmá verze ARM ISA, ARMv8, byla poprvé implementována s Armv8-A, která obsahuje dva stavy nazvané AArch32 a AArch64. Když je CPU ve stavu AArch64, může provádět 64bitové instrukce A64. Technicky tedy AArch64 je stát, ne ISA, ale nikoho to nezajímá, dokonce ani Arm sám.

Proč pro ARM záleží jak na 32bitové, tak 64bitové verzi

Takže AArch64 je ve skutečnosti docela komplikovaný a nutnost přepínat stavy jen kvůli použití 32bitových a 64bitových instrukcí se zdá být těžkopádná. Věc se má tak, že podpora 32bitových i 64bitových verzí byla příliš důležitá na to, aby se opomněla, takže to tak prostě musí být. Ve skutečnosti došlo ke dvěma hlavním problémům: potřeba podporovat starý 32bitový software a snaha o moderní, vysoce výkonné výpočty.

Kdyby Arm nezahrnul do své první 64bitové ISA nativní podporu pro 32bitový software, mohla to být katastrofa, protože jednoduše řečeno, nikdo nechce přepisovat kód. Pokud by ARMv8 vyžadoval, aby každý napsal nový software od začátku, mohlo by to uvést ISA do spirály smrti, kde nikdo nevyrábí ani nekupuje Zařízení ARMv8 kvůli nedostatku softwaru a poté vývojáři nevytvářejí aplikace kvůli nedostatku uživatelů donekonečna, dokud to Arm nezavolá končí. Takže o 32bitové podpoře se nedalo vyjednávat.

Na druhou stranu nepřicházelo v úvahu ani neimplementovat 64bitové výpočty. Intel a AMD, společnosti stojící za x86, používaly 64bitové architektury od počátku roku 2000 pro své úžasné CPU, i když v té době neexistovala žádná poptávka po 64bitových čipech ARM, protože je telefony nepotřebovaly. Vynález smartphonu ale vše změnil a všichni chtěli, aby jejich telefony uměly více věcí. Nejen, že by 64bitová podpora pomohla smartphonům stát se výkonnějšími, ale také otevřela dveře pro společnosti, aby vyráběly ARM čipy pro trhy, kde x86 tradičně dominovalo, jako jsou notebooky a servery.

V podstatě celý tento zmatek v pojmenování vznikl z toho, že Arm potřeboval modernizovat svou technologii v reakci na měnící se priority. Možná Arm nepotřeboval implementovat 64bitovou podporu tímto způsobem, ale udělal, a tak vznikl AArch64. Ačkoli AArch64 není ISA, většina lidí tento termín používá, v dobrém i ve zlém.