ARM poslední léta každý rok uvádí nové procesorové architektury. Letos to je o nějaké týdny později než obvykle, ale firma nezklamala a odhalila novou generaci CPU – již druhou založenou na instrukční sadě ARMv9. Přichází s ní nové nejvýkonnější jádro Cortex-X3, které výrazně rozšiřuje výpočetní zdroje a obsahuje 6 ALU jako jádra Applu. Tato architektura zvýší jednojádrový výkon telefonů s Androidem, ale má jít i do notebooků.
ARM nyní v druhé generaci ARMv9 jader odhalil Cortex-X3, který bude hrát úlohu „prime“ jádra v telefonech – tedy jádra, které je v čipu třeba jen jedno a má za úkol poskytnout špičkový výkon pro jednovláknové aplikace. V telefonech pak ostatní výkonná jádra budou menší „prostřední“ kategorie, kterou bude zajišťovat druhé nově odhalené jádro Cortex-A715, jež je náhradou za předchozí A710. Nové malé jádro zatím ARM neodhalil, takže X3 a A715 budou párovány stále s loňskou architekturou A510.
Cortex-X3: nové nejvýkonnější jádro ARMu
Zatímco již předchozí jádro Cortex-X2 (rozebírali jsme ho podrobně zde) odstranilo podporu pro 32bitový režim, Cortex-X3 z tohoto kroku dále těží. Jádro bylo údajně v mnoha ohledech překopáno právě tak, aby bylo optimální pro 64bitovou instrukční sadu (AArch64). Toto jádro by tedy mělo sklízet plody toho, že se ARM nemusí zatěžovat kompatibilitou se staršími verzemi instrukční sady.
Hodně změn proto v Cortexu-X3 prodělal frontend, kterého se právě týká změna instrukční sady. Frontend je nadále oddělený od zbytku jádra tak, že prediktory větvení běží napřed před hlavním zpracováváním kódu, ještě před tím, než dojde na fetch instrukcí z L1 cache. Tento frontend má schopnost zpracovat vysoké množství instrukcí na jeden cyklus, takže po restartu kvůli mispredikci rychle naplní frontu pro další fáze zpracování.
Umožňuje to rychleji s zotavit ze špatně predikované větve, ale tento napřed pracující prediktor větvení zároveň funguje jako prefetcher, který předem načítá data z L2 cache a L3 cache, takže při samotném zpracování kódu je pak jádro již má připravené, nebo na ně čeká kratší čas. V Cortexu-X3 byla tato schopnost dále posílena, predikce pracuje s větším „oknem“ kódu v předstihu.
Zároveň byl prediktor větvení posílen, jeho přesnost mají posílit větší Branch Target Buffery. Malý L0 BTB je zvětšený na desetinásobek, BTB druhé úrovně byl rozdělen na dva stupně – L1 spolu s nově přidaným L2 BTB – které mají dohromady kapacitu větší o 50 %. L0 predikce by měla být s latencí 0 cyklů, s o něco vyšší latencí ji pak může zkorigovat přesnější predikce dalších úrovní. Doposud ARM používal jeden takový lepší prediktor, ale v Cortexu X3 k němu přibyl i o něco rychlejší „meziprediktor“.
Jádro má také nový prediktor vyhrazený pro nepřímá větvení, která jsou zpracována s lepší přesností odhadu a nižší latencí než v předchozích jádrech. Zlepšit se ale má i přesnost odhadu podmíněného větvení.
ARM uvádí, že by celkově Cortex-X3 měl v průměru o 6,1 % zredukovat počet špatně odhadnutých větvení proti jádru X2. Také se o 3 % snížil počet cyklů, které se vyplýtvají kvůli zastavení práce frontendu vlivem mispredikcí větvení a „bublin“ vzniklých při jeho zpracování. Zvýšení výkonu při zpracování predikovaného provedeného větvení (taken branch) má znamenat, že se zredukoval počet cyklů (latence), které průměrně provedené větvení stojí, o 12,2 %. Je to díky tomu, že výkonnější prefetch zmenší množství „bublin“ v pipeline, které při skoku v kódu kvůli větvení vzniknou.
Odklon od uOP cache, návrat dekodérového maximalismu?
Velká změna je u dekódování. Cortex-X3 zvýšil kapacitu fáze fetch z pěti na šest instrukcí za cyklus a také dekodérů je šest místo pěti, takže dokáží zpracovat šest instrukcí na takt. Je to díky tomu, že jen čistě 64bitové dekodéry zaberou méně místa a asi také mají nižší spotřebu.
Zajímavé je, že tým ARMu dekodéry posílil na úkor microOP cache, která ukládá již dekódované instrukce. Ta se zmenšila z 3000 záznamů na jen 1500 (jako v Cortexu A77, který ji první zavedl). I tato poloviční uOP cache ale dokáže dodat stejných osm microOPů za cyklus. Jádro má současně filtry, které proti předchozí generaci o něco striktněji vybírá operace, které jsou do uOP cache uložené, což zlepší využití této omezené kapacity.
Toto přebalancování je asi proto, že čistě 64bitové dekodéry se staly levnějšími, takže přínos toho, když procesor díky uOP cache může dekódování přeskočit, se zmenšil. Toto je v kontrastu s procesory x86, pro které jsou kompletní dekodéry dražší, a proto jich mají méně a více se spoléhají na uOP cache (AMD Zen 2 a Zen 3 mají například kapacitu uOP cache 4000 operací).
ARM uOP cache patrně zmenšil ještě kvůli jedné věci – eliminovala se jedna fáze/stupeň v pipeline (uOP cache teď představuje jednu fázi místo dvou). Toto zkrátilo počet stupňů pipeline, které jsou ovlivněné chybným odhadnutím větvení z 10 na 9 (takže cena mispredikce je 9 cyklů místo 10).
Reorder Buffer přerostl 300 instrukcí
ARM zvětšil také „okno“, v kterém probíhá out-of-order vykonávání instrukcí, jejich přehazování a optimalizování využití jednotek. Reorder Buffer je hluboký 320 položek (pro Cortex-X2 to bylo 288 položek), což je někde mezi Zenem 3 a Sunny Cove od Intelu (Ice Lake).
Zfúzované microOPy by měly zabírat jen jednu pozici, takže při jejich využití hloubka může být efektivně větší. ARM také uvádí, že byl vylepšen mechanismus zpracovávající přejmenování registrů tak, aby lépe zvládal větší out-of-order okno.
Jádro už má šest ALU
Velké změny jsou i v samotných výpočetních jednotkách, kterým se po této out-of-order fázi samotné operace přidělují. Cortex-X3 zvýšil počet ALU ze čtyř na šest. To se rovná jádrům od Applu, která mají nejvyšší IPC, například Golden Cove v procesorech Alder Lake má jen pět ALU a AMD se od Zenu zatím pořád drží jen čtyř ALU, byť to možná změní Zen 5.
Jádro Cortex-X3 má čtyři jednoduché ALU (místo dvou), které zpracovávají jednocyklové uOPy. Komplexní ALU, které dokáží zpracovat i dvou- a vícecyklové instrukce, zůstaly stále jen dvě. Jedna z nich podporuje celočíselné dělení. Jádro má navíc dvě samostatné jednotky pro větvení.
Celočíselná část jádra dokáže číst 32 bajtů za cyklus místo 24 bajtů. Cortex-X3 by měl nadále mít tři AGU (load/store jednotky), kdy dvě podporují čtení i zápis a třetí jen čtení (jádro tedy zvládne dva zápisy za cyklus, nebo tři čtení, nebo kombinaci, ale maximálně tři operace za cyklus). Výkonu by dál měla pomáhat obecná zlepšení prefetcherů, jádro by mělo mít nové enginy, které se snaží zachytit vzory v požadavcích na data.
FPU a SIMD jednotka jádra má stále čtyři pipeline, zde k rozšíření nedošlo. Patrně také jádro stále pracuje se 128bitvou šířkou SIMD vektorů (i u instrukcí SVE/SVE 2) jako Cortex-X2. Nezvýšil se tedy teoretický výpočetní výkon SIMD instrukcí, i když další zlepšení v jádru logicky o něco zlepší výkon, kterého v dotyčných aplikacích Cortex-X3 bude moci dosáhnout.
ARM uvádí, že ideálního výkonu by Cortex-X3 měl dosahovat s 1MB L2 cache (L2 je vyhrazená pro jedno jádro, SoC pak ale bude mít ještě sdílenou L3 cache). Volitelně je možné zmenšit L2 cache na 512 kB kvůli zmenšení plochy jádra, ale to sníží výkon a zhorší energetickou efektivitu. 1MB L2 cache má snižovat objem požadavků na data z L3 cache až o 26,9 %.
Kapacity L2 a L1 cache patrně zůstávají nezměněné, ale došlo u nich k vylepšení efektivity dané změnami politiky cache (tedy řízení toho, která data v cache zůstanou a která se mají nahradit).
O 11 % lepší IPC
Cortex-X3 by podle ARMu měl mít asi o 11 % vyšší IPC (výkon na 1 MHz frekvence) v implementaci s 1MB L3 cache. Má jít o geometrický průměr z různých zátěží, v Geekbenchi 5 to, zdá se, bude jen +10 %, ve SPECint 2006 +11 %, ale ve SPECint 2017 podle grafů v prezentaci asi jen +8,5 %.
ARM uvádí také zlepšení IPC proti generaci Cortex-X1 (tedy za dva roky), proti tomuto jádru má Cortex-X3 IPC lepší o 22 %.
Toto by mělo být srovnání s Cortexem-X2 na stejné frekvenci. Zároveň by ale Cortex-X3 měl dosáhnout vyšších taktů. ARM uvádí odhad, že v telefonech by mohl běžet až na 3,3 GHz. Podle ARMu při taktu 3,3 GHz Cortex-X3 dosáhne až o 25 % lepší jednovláknový výkon než Cortex-X2 na 2,9 GHz. Toto je prý srovnání na stejném procesu, lepší frekvence tedy není jen díky použití lepší výrobní technologie, ale i architektonické zlepšení.
Nicméně, ačkoli ARM zde uvádí jako takt předchozího jádra Cortex-X2 jen 2,9 GHz, jsou i rychlejší implementace – Snapdragon 8+ Gen 1 dotlačil Cortex-X2 díky přechodu na 4nm proces TSMC až na 3,2 GHz. Takže pokud by se srovnávalo s ním, byl by reálný nárůst taktu nižší a tím i celkový nárůst menší než oněch 25 %.
Snad by to v telefonech mohlo odpovídat jednojádrovým skóre v benchmarku Geekbench 5 někde mezi 1400 až 1500 bodů, pro orientaci. Ve výkonnějších a žravějších implementacích pro notebooky by ale prý Cortex-X3 dokonce mohl dosáhnout až na takt 3,6 GHz, což by přidalo další jednovláknový výkon navíc (Geekbench 5 by možná mohl být okolo nebo těsně pod 1600). ARM uvádí, že takováto konfigurace by měla až o 34 % lepší výkon než to, co má ARM v noteboocích dnes.
Navýšení IPC „jen“ o 11 % není na druhou stranu zas tak vysoké v kontextu toho, že se počet ALU zvedl ze čtyř na šest. Asi to svědčí o tom, že Cortex-X3 je cosi jako základ pro další vývoj a teprve další generace asi z výrazně širšího celočíselného backendu vytáhnou větší užitek například dalším zvětšením Reorder Bufferu. Je otázka, zda ARM příliš nešetřil na uOP cache (i když je pravda, že jádra Applu ji nepoužívají vůbec). Každopádně až budoucí architektury posílí ostatní aspekty jádra, nyní přidané ALU se promítnou do většího zlepšení IPC.
V telefonech za 6–9 měsíců, 12jádra pro notebooky?
Tato jádra by se snad mohla objevit už v přicházející nové generaci procesorů pro telefony, která by mohla začít vycházet koncem roku nebo na přelomu let 2022 a 2023. V telefonech by se tak snad Cortex-X3 mohl objevit během první poloviny roku 2023.
Zajímavá novinka je, že v noteboocích by se snad mohly objevit výkonnější konfigurace, kde by již jádro linie X nebylo jen jedno. ARM uvádí, že u nové generace jader je podporována konfigurace 8+4, kdy by procesor měl osm velkých „prime“ jader Cortex-X3 a k tomu jako malá jádra čtyři prostřední Cortexy-A715 – vyloženě malá jádra Cortex-A510 žádná.
Toto by mohlo mít hodně zajímavý mnohovláknový výkon, byť jednovláknový se tím samozřejmě nezlepší (ovšem oněch 1600 bodů v Geekbench 5 s Cortexem-X3 by bylo také slušných). Ale zatím nevíme, zda výrobci jako Samsung, MediaTek nebo Qualcomm opravdu nějaký takový SoC pro notebooky přichystají.
Zdroje: ARM, WikiChip, ComputerBase