Cortex-X2: nejvýkonnější architektura od ARMu
ARM letos oznámil novou generaci instrukční sady: ARMv9, s níž přichází třeba nové instrukce SVE. Teď tyto novinky přechází z papíru do reality: firma odhalila první CPU jádra, která přinesou ARMv9 do mobilů, ale asi i PC: Cortex-A710, dále vůbec nejvýkonnější jádro Cortex-X2 a také po letech nové úsporné malé jádro Cortex-A510. To je hodně zajímavé, Arm totiž sáhl po řešení se sdílenou FPU připomínajícím CMT architekturu AMD Bulldozer.
Před nedávnem ARM představoval podrobnosti své serverové architektury Neoverse V1 a částečně o generaci novější Neoverse N2. Právě jádro Neoverse N2 bylo zajímavé tím, že jde o první oznámenou architekturu již přinášející verzi instrukční sady ARMv9. ARM sdělil, že serverové jádro N2 je derivátem jádra řady Cortex pro mobilní zařízení, notebooky a PC, které se teprve chystá k uvedení a také tedy bude prvním ARM jádrem s podporou ARMv9 pro široké masy uživatelů.
Tato první ARMv9 jádra „pro běžný lid“ teď firma ARM oficiálně odhalila, a jsou ve skutečnosti rovnou tři: základní „prostřední jádro“ Cortex-A710, které navazuje na linii A76, A77 a A78. Ale současně i nové nejvýkonnější jádro Cortex-X1 zaměřené na co nejvyšší jednovláknový výkon.
Do třetice pak ale přichází také nové malé úsporné jádro, Cortex-A510. A to je také velmi zajímavé. Jednak ARM tuto linii už velmi dlouho neaktualizoval a Cortex-A55 už byl poněkud vousatý. Navíc je ale Cortex-A510 zcela nová architektura a do této kategorie CPU architektur přináší velké změny. Některé paradoxně budete znát z minulosti, a to z procesorů, které byste si v tomto kontextu asi nepředstavili.
Cortex-X2: zatím nejvýkonnější jádro od ARMu
Výkonné jádro Cortex-X2 navazuje na architekturu Cortex-X1 a má stejnou úlohu, tedy zajistit co nejvyšší jednovláknový výkon. Důležité je, že ARM u svých jader Cortex řady A vždy mířil na to, aby byl výkon vybalancovaný s dobrou energetickou efektivitou a zároveň také jádro nebylo příliš velké co do plochy čipu. Cortex-X2 je navržen tak, že jde za vyšším výkonem i tam, kde už to znamená, že má nižší energetickou efektivitu (spotřeba Cortexu X1 v mobilech zdá se dosahovala až 3,5–5,0 W) i menší efektivitu ve vztahu mezi výkonem a plochou zabranou na čipu.
V mobilech proto toto jádro někdy může být třeba jen jedno, doplněné Cortexy-A710. ARM nicméně zmiňuje, že by toto jádro mohlo být používáno v „zařízeních s větší obrazovkou“, což by mohlo naznačovat, že by se mohly třeba od Qualcommu objevit čipy s touto architekturou pro notebooky, kde by už snad těchto jader mohl najednou figurovat více.
První ARMv9, bez 32 bitů
Zdá se, že Cortex-X2 není úplně zbrusu nová architektura, spíše jde o evoluční zlepšení stavěné na základě předchozího X1 (za návrhem stojí tým ARMu v texaském Austinu). Přidání podpory pro všechny funkce ARMv9 ale samozřejmě vyžadovalo značné přepracování všeho možného. ARM uvádí, že podnikl mnoho cílených úprav ve všech částech.
Další velká změna je, že z jádra byla odstraněna všechna podpora pro spouštění 32bitových aplikací, toto jádro už tedy podporuje jen a pouze 64bitový režim, což patrně zjednodušilo návrh a ušetřilo nějaké tranzistory.
Důraz na predikci větvení
ARM uvádí, že by měl být výrazně zlepšený prediktor větvení, který ARM považuje za klíčový pro efektivitu. Prediktor pracuje s větším objemem informací, má větší efektivní kapacitu Branch Target Bufferu. Úspěšnost má být znatelně lepší než u starší generace, počet chybně odhadnutých větvení na určitý počet instrukcí vykonaného kódu má být proti X1 výrazně nižší.
Predikce větvení také běží samostatně odděleně od kroku Fetch, což ovšem už měly předchozí generace. Tento přístup má za cíl vykrývat „bubliny“ ve využití výpočetních jednotek zaviněné chybnou predikcí. Cílem je, aby tyto části frontendu mohly běžet napřed před zbytkem zpracování a v případě chybné predikce měly pár cyklů navíc k tomu, aby začaly zpracovávat správnou cestu kódem, než dalším fázím zpracování dojde práce.
Zajímavé je, že ARM zredukoval hloubku celé pipeline z 11 na 10 cyklů – jeden stupeň vykonávání byl eliminován ve fázi dispatch, která dřív zabrala dva cykly. Přitom jádra Cortex již teď měla na dnešní poměry spíš dost krátkou pipeline, pročež také nedosahují frekvence výrazně přes 3 GHz. Ovšem zkrácení pipeline zkracuje postih za nesprávně odhadnuté větvení a tím zlepšuje přímo IPC.
Podle ARMu byl zisk ve výkonu dost velký na to, aby ospravedlnil poměrně velký dopad na plochu čipu a také dalekosáhlé redesignování jádra, které si toto vyžádalo. Přes zkrácení pipeline údajně nemá utrpět frekvenční potenciál jádra, má tedy zhruba běhat na stejných taktech jako X1, nebo to alespoň ARM slibuje.
Hlubší fronty
ARM zdá se nepřidal výpočetní jednotky ani nerozšířil jádro na zpracování více operací za cyklus, (počet ALU tak zůstal na čtyřech, pro ty, kdo sledují tento parametr). Out-of-order fronty ale byly naopak posíleny, reorder buffer se z 224 položek zvětšil na 288 položek, a je tedy už větší než u Zenu 3 (ten má na svůj výkon značně malou hloubku 256 položek, zatímco Ice Lake/Tiger Lake od Intelu 352). Efektivně je hloubka i lepší, protože jádro prý také má zlepšené schopnosti spojovat operace dohromady, díky čemuž pak zabírají jen jednu položku místo dvou.
Tip: Detaily Zenu 3: rozbor změn a vylepšení nové CPU architektury AMD
Prohloubené jsou i různé fronty Load/Store části, tedy buffery, do nichž se řadí operace čtení a zapisování do do paměti (cache). Mají být až o 33% větší, takže jádro může naráz zpracovávat víc těchto operací a tím je lépe optimalizovat. L1 TLB pro data byl zvětšen ze 40 na 48 položek. Prodloužení různých těchto front obecně zvyšuje IPC. Macro-Op cache zůstala stejná a má 3000 položek.
Dále také mají být zdokonalené prefetchery, včetně vylepšeného temporálního prefetcheru, který měly už jádra X1 a A78 a byl víceméně unikátní. Stejně jako prediktory větvení je prefetch oblast, ve které se dělají neustále inkrementální evoluční zlepšení a současně jde o vysoce důležitý faktor ve zlepšování IPC. Podobně jako predikce větvení totiž prefetch může rozhodovat o tom, jestli jádro bude mít možnost vytížit své jednotky, nebo bude přešlapovat naprázdno při čekání na data a tím mít nízký výkon.
SVE a SVE 2 konečně
Spolu s ARMv9 také je konečně podporována nová architektura SIMD instrukcí v jednotce FPU/SIMD: SVE a SVE 2 s flexibilní šířkou vektoru. Ukazuje se ale, že s tou flexibilitou to je lehce omezenější, než se možná čekalo. Na první pohled by se mohlo zdát, že flexibilní šířka elegantně řeší problém s big.LITTLE procesory, kde malá jádra nemohou mít velkou šířku vektoru, ale velká ano (osobně jsem si to aspoň tak představoval).
Ovšem pokud je toto možné, zatím tak daleko ARM nedospěl, právě asi kvůli kompatibilitě s malými jádry má Cortex-X2 šířku jednotek, ale i zpracovávaného vektoru SVE jen 128 bitů, tedy stejnou, jako měly jednotky Neon v Cortexu X1 (ve světě x86 procesorů je to srovnatelné s instrukcemi SSE*, AVX* jsou již 256bitové). FPU/SIMD pipeline jsou čtyři, takže hrubý výpočetní výkon se nezměnil.
Kde se výkon zlepší, bude v AI aplikacích běžících na těchto SIMD jednotkách. Jádro bude podporovat 16bitové hodnoty bfloat16 a 8bitové INT8, což má umožnit až dvojnásobný výkon v AI aplikacích. Ale ty samozřejmě musí být překompilované a/nebo přepsané, aby používaly patřičné nové instrukce.
Výsledné zvýšení výkonu na 1 MHz
Jak se tedy všechny tyto změny podepsaly na výkonu jádra? Zdá se, že Cortex-X2 nebude nějaký velký skok, kde by se IPC zlepšilo skokově – toto možná dodá příští generace, ale tato první řada ARMv9 je konzervativnější. ARM uvádí, že Cortex-A2 má mít až o 16 % vyšší výkon při stejné frekvenci, což znamená o 16 % lepší IPC.
Je to ovšem lehce vylepšené srovnání, protože jde o predikci pro jádra se stejnou 64KB L1 a 1MB L2 cache, ale pro Cortex-X2 ARM použil 8MB L3 cache, zatímco pro Cortex-X1 jen 4MB. Toto může samo dělat několikaprocentní zlepšení, takže reálný nárůst IPC je asi nižší a marketing si tu trošku zamanipuloval (ovšem přiznaně). Vedle toho ARM slibuje také ten až 2× vyšší výkon v AI, což je onou podporou bfloat16/INT8.
ARM také ukázal tento graf, podle kterého bude Cortex-X2 svůj vyšší výkon dosahovat také za cenu určitého zvýšení spotřeby, pokud by obě jádra byla na stejném procesu.
V mobilních zařízeních tedy může nastat problém, kdy stále 5nm Cortexy-X2 nebudou schopné dosáhnout proklamovaný výkon, protože spotřeba (problematická už u Cortexu-X1 v 5nm Qualcomm Snapdragonu 888 a Samsung Exynosu 2100) bude bránit v delším udržení maximální frekvence. V noteboocích by ale na vyšší příkon (pořád se asi bavíme jen třeba o 6–8 W) výměnou za lepší výkon asi celkem schoval a vyplatil.
Článek pokračuje na další straně.
- Contents
- Cortex-X2: nejvýkonnější architektura od ARMu
- Cortex-A710: efektivní prostřední jádro
- Cortex-A510: úplná novinka v malých jádrech se starým překvapením