ARM uvádí novou generaci CPU architektury. ARMv9 má SVE, SVE2 a bezpečnostní novinky

11

Přichází největší změna v ekosystému procesorů ARM od příchodu 64 bitů: po deseti letech nastupuje nová „major“ verze instrukční sady ARMv9.  Bude v ní mnoho novinek, jádra například povinně budou mít SIMD instrukce SVE/SVE2, které jsou odpovědí na AVX a AVX-512 v procesorech x86.

Je tomu zhruba osm a půl roku, co firma ARM oznámila první 64bitová jádra stejnojmenné procesorové architektury (byl to Cortex-A57 a Cortex-A53, ale samotná instrukční sada byla oznámená ještě dřív). 64bitová instrukční sada ARM se označuje ARMv8 a byla velkým přelomem proti minulosti, na rozdíl od 64bitového rozšíření x86 byla totiž navržena jako zcela nová nekompatibilní instrukční sada, takže má čistější moderní návrh. To patrně přináší minimálně nějaké výhody v efektivitě a výkonu.

Teď ARM oznámil největší změnu ve svých procesorech od tohoto přelomu: novou generaci označenou ARMv9. Jak vám už asi naskakuje podle navýšeného čísla verze, mělo by opět jít o velmi signifikantní změnu.

Konsolidace fragmentovaných rozšíření

ARMv9 tentokrát není předěl, kdy by se zahodilo to předchozí. Místo toho jde o navázání na ARMv8 s přidanými novými funkcemi. Některé součásti, které již v architektuře ARM existovaly jako separátní nepovinná rozšíření architektury ARMv8.0 až ARMv8.5, nyní v ARMv9 budou zahrnutá přímo do základu. Podstatné je, že kód napsaný pro ARMv8 poběží beze změn, v tomto smyslu bude kompatibilita zachovaná.

ARMv9 tedy je spíše evoluční vývoj, který reaguje na značnou fragmentaci jader ARM mezi různé verze architektury, která vznikla postupným vydáváním dílčích verzí 8.1, 8.2, 8.3, 8.4 a 8.5. Konsolidace to bude ale jen na chvíli, protože další novinky budou přidávány později (verze 9.1 a tak dále).

Evoluce architektury ARM až po ARMv8 a jeho rozšíření Zdroj: ARM

Na jednu stranu to proto může vypadat, že se nic moc neděje. Ale to, že v rámci této konsolidace dostávají dříve nepovinné novinky do základu, v praxi může znamenat dost. Jádra ARM na trhu (včetně Cortexů přímo od ARMu, které využívá většina výrobců ARM čipů) totiž volitelné věci často ignorují a zůstávají na nižších verzích architektury, místo aby použily tu nejaktuálnější. V praxi proto novinky v architektuře moc nebyly podporovány hardwarem. Když nyní v ARMv9 bude mnoho těchto věcí povinných, teprve teď začnou být dostupné v ARM procesorech, doufejme včetně jader Cortex.

Architektura ARMv9 Zdroj: ARM

SVE a SVE2 konečně v reálném nasazení?

Tyto novinky jsou hlavně dvojího rázu – bezpečnostního a výkonnostního. Začněme výkonem. Zde je hlavní novinka jasná: v instrukční sadě ARMv9 přicházejí poprvé SIMD instrukce SVE a zároveň jejich rozšíření SVE2. SVE již existuje na papíře už dlouhou dobu, původně bylo vyvinuté pro HPC procesory Fujitsu. Dosud ale nebyl vydán žádný další procesor, který by je podporoval. Je to tedy částečně ten případ, kdy bylo rozšíření jen na papíře.

SVE(2) jsou instrukce, které by měly dohnat určitou slabinu či deficit ve výkonu SIMD operací, podstatných pro výkonné výpočty v superpočítačích, ale i multimédia, zpracování obrazu a podobné operace včetně AI. Bez SVE totiž procesory ARM měly jen 128bitové vektorové instrukce Neon, což je srovnatelné s SSEx u x86. Mezitím Intel s AMD nasadily 256bitové instrukce AVX a AVX2 a poté i 512bitové AVX-512. Výhoda je u nich jasná: dvakrát širší vektor naráz provede dvojnásobek operací, 4× širší už čtyřnásobek. V kódu umožňujícím provádění stylem SIMD (jedna operace, například součet, je najednou provedena třeba až s různými 32 položkami dat) to zajistí značný nárůst výkonu.

SVE je tak odpověď ARMu na AVX, ale nakonec i na AVX-512. Přičemž SVE je zaměřené na floating-point HPC výpočty, což vyplývá ze zaměření architektury Fujitsu, které je s ARMem vyvinulo. SVE2 pak ale přidává také podporu výpočtů s menšími (16bitovými, 8bitovými) hodnotami včetně celočíselných, což jsou operace užitečné pro multimédia jako je video, obraz, pro DSP operace a také pro práci s neuronovými sítěmi (AI), byť to je oblast, pro kterou se místo CPU nejlépe hodí specializované obvody.

SIMD instrukce ARMv8-A SVE (slajd ARMu) Zdroj: ARM

SIMD nezávislé na šířce vektorového registru

Od řešení v táboře x86 se SVE a SVE2 výrazně liší. SSE, AVX(2) a AVX-512 jsou vždy postavené kolem speciálních registrů (XMM, YMM, ZMM) o dané šířce 128, 256 a 512 bitů, které také určují, s jak širokým vektorem operace fungují. Nevýhoda je, že 512bitové operace jsou prováděné jinými instrukcemi než 256bitové, i když by třeba šlo o identický výpočet. Vždy je proto nutné program znovu přeložit nebo přepsat, pokud chcete využít větší šířku vektoru.

SVE a SVE2 má místo toho flexibilní šířku. Pracují s šířkou, která může být až 2048 bitů, přičemž se ale počítá s tím, že reálné jednotky budou mít šířku menší (většinou 128 nebo 256 bitů; HPC procesor Fujitsu A64FX má 512bitové jednotky). Instrukce jsou ale navržené tak, aby programátor napsal jen jeden kód a ten pak běžel na procesorech jak se 128bitovými, tak 256bitovými a v budoucnu ještě širšími jednotkami; programy by pak na budoucích CPU s širšími jednotkami měly automaticky být rychlejší, aniž by bylo nutní přepsání softwaru.

Prezentace serverových architektur ARM Neoverse V1 a ARM Neoverse N2 06
Prezentace serverové architektury ARM Neoverse V1, kde má být SVE nasazeno (Zdroj: ARM)

Příznivci architektury ARM toto řešení rádi prezentují jako mnohem progresivnější a technicky lepší než AVX/AVX-512, ale teprve uvidíme, jak se osvědčí. Zatím totiž pořád existuje jediný procesor s podporou SVE (ono Fujitsu A64FX, jež má specifické využití), takže je zatím brzo mluvit o tom, že by SVE (natož SVE2) naplnilo v ně vkládané naděje. Uvidíme, zda ona abstrakce od šířky vektoru nebude mít určitý dopad na dosažitelný výkon a nebude trošku překážkou/zátěží navíc pro programátory, kteří píší maximálně vyladěný kód ručně v assembleru.

Je možné, že se koncepce osvědčí (použít podobnou mimochodem chce i RISC-V), ale zatím těžko soudit. Každopádně pro úspěch nemusí ARM nutně platformu x86 překonat. Stačí, když bude SVE fungovat jakž takž stejně a nabízet stejné nebo srovnatelné možnosti – a SVE(2) opravdu přináší možnost mít procesory s podobným SIMD výkonem, jako je možný s AVX až AVX-512. Pokud by byly implementované 1024bitové jednotky, tak jsme dokonce na vyšším výkonu, ale takováto šířka asi není moc pravděpodobná v obecném CPU.

ARM uvádí architekturu ARMv9 03 Zdroj: ARM

Dosavadní SIMD rozšíření Neon v procesorech zůstává pro kompatibilitu s programy napsanými pro architekturu ARMv8, bude ale považované za „legacy“. V tomto smyslu ho SVE/SVE2 nahrazuje a v budoucnu by se teoreticky mohlo stát, že Neon bude odstraněn, i když je asi pravda, že by nemělo být náročné udržovat kompatibilitu.

Bezpečnostní rozšíření

Druhá velká skupina novinek je bezpečnostního rázu. ARMv9 jednak integruje řadu inkrementálních rozšíření ARMv8, které například poskytovaly ochrany před side-channel útoky a různými podobnými hrozbami, které se objevily po publikování zranitelností Spectre (tomu slouží rozšíření Branch Target Identifier).

ARM Pointer Autentification Zdroj: ARM

V ARMv9 je tak v základu zahrnutá například technologie Memory Tagging (MTE z rozšíření ARMv8.5) a Pointer Autentification z ARMv8.3. Mělo by poskytovat ochranu před exploity jako jsou přetečení zásobníku (buffer overflow) nebo use-after-free a před return-oriented útoky (podobné ochrany Controw Flow Enforcement mají ve světě x86 procesorů Tiger Lake a Zen 3).

ARM Memory Tagging Extension Zdroj: ARM

Confidential Computer Architecture (CCA)

Mezi novinkami pro zabezpečení hraje prim nová funkce CCA (Confidential Computer Architecture). Jde o něco, co by mohlo mít podobné využití jako Intel SGX a bezpečné enklávy, nebo šifrování virtuálních strojů na platformě x86. Tato technologie má sloužit pro aplikace nebo systémy pracující s citlivými daty, které je potřeba ochránit před krádeží či vyzrazením.

Confidential Compute Architecture zavádí enklávy označené jako „Realm“, k jejich obsahu nemá zbytek běžícího systému přístup. A to ani operační systém, ani hypervizor při virtualizaci. Běžné pojetí počítačové bezpečnosti spočívalo dlouho v tom, že nižší „ringy“ chrání vyšší úrovně jako třeba uživatelský prostor nebo aplikace před tím, aby jednotliví uživatelé mohli šmírovat cizí data. Ale nižší úroveň naopak měla přístup do paměti všech těchto uživatelů, hypervizor do paměti hostovaných operačních systémů a tak podobně. Což je problém, protože nelze vždy věřit, že se tudy citlivá data nedostanou do cizích rukou.

ARM Confidential Computer Architecture Zdroj: ARM

Enkláva Realm je proto zcela oddělaná a má separátní adresní prostor, ke kterému nemá zbytek systému přístup. Například v Realmu může běžet virtualizovaný operační systém, jehož obsah a paměť jsou tímto skryté před hypervizorem a hostitelským OS. Klient cloudového serveru tak může mít ochranu před špionáží ze strany provozovatele serveru nebo před útočníkem, který by hostující server ovládl. Samozřejmě za předpokladu, že může věřit mechanismu, kterým s tímto serverem komunikuje, což je separátní, ale související problém.

ARM Confidential Computer Architecture Zdroj: ARM

Použití by ale asi mohlo být i na jednouživatelském osobním systému, jakým je PC nebo telefon. V CCA Realmu by mohla běžet citlivá aplikace, kterou chcete ochránit před malwarem nebo útočníky. Například správce přihlášení a hesel, aplikace ovládající nějakou kritickou funkci (ARM uvádí jako příklad zdravotnická zařízení), nebo i technologie ochrany proti kopírování neboli DRM.

ARM Confidential Computer Architecture Zdroj: ARM

ARMv9: nový výchozí základ (eventuálně)

Z architektury ARMv9 by se v budoucnu mohl či měl stát jakýsi výchozí standard, proti kterému by byl kompilovaný software pro platformu ARM. To samozřejmě bude trvat nějakou dobu, protože nějakou dobu budou v používaných zařízeních převážně starší procesory. Ještě hodně let asi uplyne, než bude software „ARMv9-only“.

ARM uvádí architekturu ARMv9 11 Zdroj: ARM

Zatím ARM oznámil například technologii CCA a obecně architekturu ARMv9 v hrubých rysech. Další oznámení mají následovat během letoška. Zatím nebyla oznámena nová CPU jádra, která budou jako první založená na ARMv9 – ta by ale měla během následujících měsících následovat. První hardware by pak asi měl následovat zhruba do roka, i když je možné, že nějaké čipy to stihnou ještě do konce roku 2021.

Tip: ARM představuje serverové procesory Neoverse V1 a N2. Slibuje o 50 % vyšší IPC a až 192 jader

Tip: ARM oznámil budoucí jádra Matterhorn a Makalu: +30 % výkonu v roce 2022 a konec 32 bitů

První generace ARMv9 procesorů (Matterhorn, Neoverse N2), která by se měla začít objevovat možná již letos, také pořád budou zachovávat kompatibilitu s 32bitovou architekturou ARMv7 (byť jen v uživatelském prostoru, ne v jaderném). Ta by ale měla být v budoucí generaci (jádrech Makalu, která ARM uvede v roce 2022) odstraněna, od té doby ARM bude jen čistě 64bitový – tedy pokud se ARM nerozhodne paralelně 32bitovou kompatibilitu udržovat například v malých jádrech, což je teoreticky možné.

Roadmapa budoucích jader ARM Neoverse a Cortex Zdroj: ARM

Apple na ARMv9/SVE nepočkal

Je trošku nešťastné, že se architektura ARMv9 nestihla dostat do prvních počítačů Apple s architekturou ARM. Pokud totiž Apple v některé z nejbližších generací na ARMv9 přejde, dost možná to bude znamenat, že pak po nějaké době budou odstřiženy od podpory první stroje s jinak povedeným procesorem M1, který podporuje jen ARMv8.

Procesor Apple M1 iFixit
Procesor Apple M1 (Zdroj: iFixit)

Je pro to precedent. Při přechodu na procesory x86 nebyl Apple ochoten čekat také jen několik měsíců na dostupnost 64bitových Core 2 Duo a vydal první x86 Macy s posledními jen 32bitovými procesory Intel. Tyto stroje pak měly kvůli tomu zkrácenou životnost, přestaly dostávat nové verze MacOS relativně záhy (šly upgradovat jen na OS X 10.5 a 10.6) v porovnání s první 64bitovou generací, která vyšla záhy. Doufejme, že se to nezopakuje, ale je určité riziko, že podobně by možná kvůli nepodpoře ARMv9 a SVE/SVE2 mohla podpora notebooků s M1 skončit jen za několik let, pokud by se Apple zachoval stejně a opět došlo na někdy uváděné „pravidlo“, že první generace produktu nebývá u něj nejlepší investice.

Galerie: Představení procesorové architektury/instrukční sady ARMv9

Zdroje: ARM (1, 2, 3), WikiChip

ARM uvádí novou generaci CPU architektury. ARMv9 má SVE, SVE2 a bezpečnostní novinky
Ohodnoťte tento článek!
5 (100%) 9 hlasů

11 KOMENTÁŘE

  1. Ty SIMD instrukce nezávislé na šířce registru si nějak z pohledu programování v Assembleru nedokážu představit. Když vím, jak „širokou“ instrukci používám, tak když chci udělat třeba 65536 16bitových operací s 256bitovým registrem, tak si udělám cyklus, který proběhne 4096x a v každém udělám tu jednu instrukci, která mi udělá 16 operací. Když programátor netuší, jak je široký ten vektorový registr, tak v programu bude muset mít zjištění šířky registru a podle toho upravovat parametry těch svých cyklů. To by ještě šlo, ale co když těch operací chci udělat opravdu jen 16 a ten registr bude širší? Jelikož jiná instrukce nebude, tak při potřebě 256bitové operace se chca nechca udělá třeba až 2048bitová?

    • Ja programuju SIMD na RISCV a tyhle vektorove instrukce maji docela dost parametru, ktere jsou nastavovany specialnimi registry. Kazda instrukce obsahuje napr. kolik samplu chces skutecne spocitat, neni to natvrdo treba 16.

      • To bych ještě pochopil. Jenže, když chci spočítat třeba 25 samplů, tak bude dost podstatný rozdíl, jestli ten ARM, na kterém to běží, bude umět maximálně 16 nebo 32. Pořád nedokážu pochopit, jak to ten programátor bude používat. Když to bude programovat na nějakém ARMu, co umí 16, tak to naprogramuje jako 2 instrukce, když na ARMu, co umí 32 a víc, tak jako jednu instrukci. No a když to pak spustí někdo na jiném ARMu, tak to v prvním případě bude neefektivní a v druhém to nebude fungovat.

  2. No myslím, že Apple nič z toho nepotrebuje. Čo sa týka bezpečnosti, tak to má dávno vyriešené cez privátny kľúč uložený priamo v procesore a šifrovanie obsahu RAM a obsahu disku. Čo sa týka AI tak na to má Neural Engine. Tie vektorové inštrukcie nepotrebuje, keďže má hardwarový encoder a decoder pre HEVC. ARMv9 iba dobieha Apple. Ak niečo nové bude Apple potrebovať, tak to pridá do svojich procesorov.