Hlavní navigace

Intel Alder Lake má historicky nejvyspělejší x86 jádro. Rozbor CPU architektury Golden Cove

23. 8. 2021

Sdílet

Zdroj: Intel
Intel před vydáním procesorů Alder Lake odhalil detaily hlavního, velkého jádra procesorů Alder Lake, architektury Golden Cove. A my máme pro vás rozbor toho, co je v něm nového a proč je to jedna z největších událostí v x86 procesorech za dlouhou dobu.

Procesory Intel Alder Lake budou asi největší hardwarová událost letoška. Jsou ještě přes dva měsíce daleko, ale už jsme dostali snad nejvíc očekávané info: Intel odhalil architekturu jader těchto CPU. Ta slibuje velké navýšení výkonu – půjde o jeden z největších architektonických skoků v x86 procesorech. Například poprvé přináší šest paralelních dekodérů a další posílení IPC, čímž Intel jde podobou cestou jako účinná jádra Applu.

Architektura Golden Cove: historicky nejvýkonnější frontend u x86

Už delší dobu je známé, že Alder Lake přechází na koncepci „big.LITTLE“, kombinující výkonnější a slabší (ale úspornější) jádra. Intel zveřejnil jak informace o tzv. „velkém jádru“, tak o „malém“, které mu bude asistovat pro vyšší mnohojádrový výkon (případně jako více energeticky efektivní jádro pro provoz méně náročných úloh na pozadí a podobně).

Nejdřív se ale budeme zabývat tím velkým. Intel mu nyní oficiálně říká „Performance Core“ neboli P-Core (jeho dřívější kódové označení je Golden Cove) a jeho rolí je dosáhnout co nejvyššího jednovláknového výkonu, což je parametr určující výkon mnoha běžných aplikací a potenciálně responzivnost systému.

Golden Cove by mohlo konečně uspokojit ty, kterým se zdálo, že Intel už dlouho nepřinesl něco opravdu nového a jednotlivá jádra od Sandy Bridge z roku 2011 jsou pořád podobná. Golden Cove přináší architekturu, která sice z jejich DNA vychází (tak to dnes ale chodí u všech architektur), ale jeho základní bloky byly předělány a v podstatných parametrech je výsledkem mnohem větší a silnější jádro. Výrazně rozšiřuje a prohlubuje out-of-order engine směrem k vyššímu IPC a skok ve výkonu by měl být velmi velký. Podle Intelu má dokonce jít o největší upgrade mikroarchitektury jádra za poslední dekádu, což by Golden Cove (a procesory Alder Lake) stavělo na úroveň předělu, jakým byla právě ta architektura Sandy Bridge.

Golden Cove funkčně navazuje na předchozí 10nm „velké“ jádro Sunny Cove/Willow Cove, funkčně je podobné včetně toho, že podporuje HT, tedy současné zpracování dvou vláken na jednom jádru. To dovoluje v mnohovláknovém kódu zlepšit výkon díky tomu, že se lépe využijí výpočetní prostředky jádra. Jádro by také mělo dosahovat podobné nebo vyšší frekvence, jaké jme viděli v čipech Rocekt Lake nebo Tiger Lake, používá se pro něj totiž dokonalejší výrobní proces Intel 7 (dříve označovaný jako 10nm Enhanced SuperFin).

Tip: Intel ukázal plán výrobních procesů: 7nm, 4nm, 3nm, 20A a 18A technologie – s pomocí přečíslování

Celkově Golden Cove přidává a zvětšuje většinu věcí v jádru a zjednodušeně by se architektura dala přirovnat ke koncepci, kterou sleduje Apple, včetně zvýšení počtu ALU v jádru. Ovšem ALU samotné jsou ve fungování procesoru až spíš na konci procesu, popis architektury začneme místo toho v tzv. Frontendu, kde pouť instrukcí/výpočtů začíná.

Jádro bořící mýty o fundamentálních limitech architektury x86?

Právě Frontend je možná místo nejzásadnější nebo možná nejsymboličtější změny. Golden Cove zvětšuje „šířku“ jádra, znamenající, kolik instrukcí se může paralelně zpracovat za jeden cyklus, hned zde na začátku. Od architektury Conroe/Core 2 měla jádra Intelu pořád čtyři dekodéry, a tedy dokázala zpracovávat až čtyři instrukce za takt. Sandy Bridge k tomu před víc jak deseti lety přidalo μOP cache pro již dekódované instrukce, která umožňuje dekodéry obejít, pokud jádro nalezne potřebné instrukce již v této cache (jednak to zvyšuje výkon, druhý účel je snížení spotřeby), ale jinak čtyři dekodéry zůstaly – až doteď.

U Golden Cove Intel rozšířil počet dekodérů na šest, takže jádro je odteď „6-wide“ a bude schopné dekódovat až šest instrukcí za cyklus. Širší dekódování už má jen Apple, u kterého je jádro Firestorm v čipech M1 a A14 už 8-wide, naproti tomu Zen 3 od AMD je pořád 4-wide. Schopnost Golden Cove dekódovat šest instrukcí bude asi mít některá omezení, kdy tzv. komplexní instrukce budou mít tuto propustost sníženou, protože je budou zpracovávat jen některé z dekodérů („complex decoder“), zatímco většina („simple decoder“) by mohla zpracovávat jen obyčejnější instrukce. Komplexní instrukce jsou typicky ty, které produkují více než jeden μOP v dalším zpracování.

Cenou za rozšíření dekodérů je zřejmě prodloužení pipeline o jeden přidaný stupeň, který asi pomohl toto rozšíření realizovat (protože se dekódování rozložilo do více pipelinovaných kroků). Toto je vidět na údaji, že postih za chybně odhadnuté větvení se zvýšil – ze 16 na 17 cyklů.

Architektura x86 víc než čtyři dekodéry neumožňuje...

Toto je zajímavé i proto, že v kontextu ARM procesorů Apple s velmi širokým jádrem (ale nízkými frekvencemi) se v poslední době hojně vynořovaly názory, že podobná architektura je možná jen s ARMem a u procesorů x86 nikoliv kvůli tomu, že jejich instrukce mají variabilní délku a některé další komplexnosti. Zvlášť vyhraněné názory to podávaly rovnou tak, že víc jak čtyři dekodéry u x86 jsou takřka nemožné.

Toto téma asi je tak populární i proto, že jádra x86 se od ARM liší právě ve frontendu do fáze dekódování, po ní už se rozdíly stírají. „Limitace x86“ ve fázi dekódování proto byla brána jako argument pro to, že architektura x86 nemá budoucnost a je třeba přejít na ARM. Vypadá to ovšem, že Intel teď svým použitím šesti dekodérů/6-wide v architektuře Golden Cove tuto argumentaci zkomplikuje. I když si zatím musíme počkat, než uvidíme výsledek a zda zde přece jenom ty komplikace x86 nejsou nějak relevantní, například zda 6-wide nevede k neúměrné spotřebě.

Spolu s posílením dekódování Intel rozšířil i předcházející fázi zpracování, tzv. Fetch, která čte kód (tj. proud instrukcí) z instrukční L1 cache procesoru a předává ho do dekodérů. I zde měl Intel dlouhou dobu další významné omezení, ještě od Pentia Pro četl Fetch maximálně 16 bajtů za cyklus, ne víc. Některé instrukce x86 přitom mohou být hodně dlouhé (třeba až 8 bajtů), takže toto mohla být někdy limitace i pro 4-wide jádro (který ovšem stejně jako dekódování obchází μOP cache). V Golden Cove je Fetch poprvé dvojnásobný a dodává 32 bajtů kódu za cyklus.

Je třeba říct, že podle profilování typicky výkon jádra (respektive IPC) v aplikacích typicky vůbec nedosahuje ty čtyři instrukce za cyklus. Často jsou obvyklé programy blíž v průměru jedné instrukci za cyklus než čtyřem nebo zde šesti. Je to kvůli větvení, čekání na data z paměti nebo proto, že závislosti jedné instrukce na druhou znemožňují vykonat větší počet instrukcí najednou. Jen čtyři dekodéry v předchozích CPU proto nemusely být takový drastický omezovač výkonu, jak by se mohlo zdát. Ale rozšíření této části umožní zvýšit výkon v těch případech/momentech v kódu, kde potenciál pro větší instrukční paralelismus je. Pro navýšení IPC nad určitou úroveň se k tomuto rozšíření asi jednou přikročit musí – Intel zřejmě rozhodl, že je vhodná chvíle teď.

Schéma CPU jádra Golden Cove ve verzi pro PC procesory Alder Lake Schéma CPU jádra Golden Cove ve verzi pro PC procesory Alder Lake (Zdroj: Intel)

μOP cache,instrukční L1 cache

Instrukční L1 cache nechal Intel stejně velkou jako mají starší jádra (nebo AMD Zen 2/3), má jen 32 KB – oproti 192KB kapacitě v jádru Apple Firestorm. Byl ale zlepšen L1 TLB (Translation Look-Aside Buffer) pro instrukce, jenž má 256 místo dřívějších 128 položek a 32 místo 16 položek pro velké (2MB/4MB) stránky paměti. Také je vylepšený prefetch do L1 instrukční cache.

Ruku v ruce s posílením dekodérů ale je posílená i μOP cache pro již dekódované instrukce. Stále totiž platí, že architektura jádra počítá s tím, že většinu času nebudou instrukce k vykonávání proudit přes dekodéry, ty mají podle Intelu typicky být 80 % času neaktivní (vypnuté) pro úsporu energie díky tomu, že se potřebné instrukce (již dekódované na μOPy) najdou místo toho v μOP cache. Předchozí jádra Intelu (nebo Zen/Zen 2 od AMD) uměla z μOP cache dodávat až šest instrukcí za cyklus, což Golden Cove rozšiřuje na 8 μOPů za cyklus (stejný počet dodává μOP cache AMD Zenu 3).

Zároveň byla také zvětšena kapacita, takže se zvyšuje šance (hit-rate), že procesor zde instrukce najde a nebude muset zapnout dekodéry a do cache se vejdou i výrazně delší smyčky kódu. Zatímco Skylake mělo kapacitu 1500 instrukcí a Sunny Cove/Willov Cove/Cypres Cove to zvýšilo na 2250, jádro Golden Cove posiluje kapacitu rovnou na 4000 (v tomto parametru bylo AMD trošku napřed, tuto kapacitu měl již Zen 2, u Zenu 3 je nezměněná).

Fronta μOP Queue vycházejících z μOP Cache byla také mírně prohloubena, má 72 místo 70 položek pro každé ze dvou vláken, které může architektura zpracovávat (Golden Cove podporuje HT neboli SMT a jedno jádro zpracovává dvě vlákna najednou). Nová by ale měla být schopnost tyto separátní fronty pro každé vlákno spojit do jedné o 144 místech, pokud procesor zpracovává jen jedno vlákno místo dvou.

Po frontě μOP Queue následuje fáze Allocation a Rename, v níž se alokují pro operace jejich pracovní registry, případně se pro eliminaci konfliktů architektonické registry přejmenovávají (substituují za jiný z fyzického souboru registrů). Také tato fáze zpracování umožňuje zpracovat šest operací (μOPů) za cyklus, zatímco předchozí architektury Intelu uměly maximálně pět. Zde je vidět, jak byly pro vyšší IPC v tomto jádru upraveny prakticky všechny fáze zpracování.

Výkon by mělo dále zlepšit posílení schopností procesoru v této fázi řešit konflikty eliminovat více instrukcí, které dále už nemusí jít do výpočetních jednotek a jsou vyřešeny již zde. V této fázi CPU provádí eliminaci MOVů (v Alder Lake by snad opět měla fungovat, zatímco v Ice/Tiger/Rocket Lake měla erratum a musela být vypnutá) a dalších instrukcí, která nevyžadují použití výpočetní jednotky. Další případ eliminovaných instrukcí jsou například operace jako XOR registru se sebou samým k jeho vynulování (protože tato operace není závislá na předchozí hodnotě registru), jejíž eliminaci už procesory umí delší dobu. Jak se přesně v tomto směru zlepšily schopnosti jádra Golden Cove, Intel ovšem neříká.

Procesor Alder Lake s osmi jádry Golden Cove a osmi úspornými jádry Gracemont Procesor Alder Lake s osmi jádry Golden Cove a osmi úspornými jádry Gracemont, schématická ilustrace (Zdroj: Intel)

Výrazně vylepšená predikce větvení

Ještě než se podíváme na další část jádra, kde dochází k out-of-order optimalizování pořadí instrukcí a poté jejich vykonávání, je potřeba zmínit prediktor větvení, který je ve frontendu a v procesu zpracování instrukcí přichází na řadu velmi brzy.

Tato část procesoru je architektonickými týmy laděna kontinuálně, takže by měla doznávat zlepšení v každé nové generaci CPU, pokud v ní není beze změn „refreshované“ jádro z generace předchozí. V Golden Cove má však být predikce hodně vylepšená. Přesnost (úspěšnost) prediktorů je sama o sobě lepší, současně mají také ale k dispozici o hodně víc paměti, což by mělo dále predikci vylepšit, protože prediktor má k dispozici víc dat/informací. L2 Branch Target Buffer (BTB) má nově kapacitu 12 000 položek proti 5000 u předchozí generace architektury (Zen 3 by měl mít 6500).

Článek pokračuje na další stránce.

Rozšíření ve výpočetních jednotkách a prohloubení „okna“

Jako jsme vypíchli posílení dekodérů symbolicky ukazující, jak architektura Golden Cove kráčí cestou rozšíření jádra, lze to samé udělat u výpočetních jednotek (backendu), i když tam to možná není tak nápadné. Zvyšování IPC je ale hodně patrné na hloubce out-of-order bufferů a front. V těch procesor může držet více operací, díky čemuž se nezadrhne při různých zdrženích (třeba když chybí data z paměti, špatně se odhadne větvení). Také se pomocí těchto bufferů optimalizuje výkon tím, že se operace provádí v jiném pořadí, než v jakém je předpokládá program.

To druhé je hlavní podstata tzv. out-of-order procesorů: přehazováním instrukcí se dá docílit toho, že v jednom cyklu uděláte víc operací, protože vás tolik neomezují závislosti dat mezi instrukcemi – pokud nemáte tři nebo čtyři (nebo teď až šest) nezávislých instrukcí, abyste využili všechny dostupné jednotky, můžete se podívat do budoucích částí následujících v kódu pro takové instrukce, které na těch současných nezávisí a můžete si je tedy spočítat dopředu. Toto je stěžejní způsob, kterým procesory dosahují vyššího IPC. Ale pro toto zlepšení výkonu dosaženého v jednom cyklu je třeba, aby procesor při optimalizaci měl k dispozici co nejdelší kus kódu, z něhož by instrukce mohl brát a přehazovat je. Velikost tohoto tzv. „okna“ určuje fronta Re-Order Buffer (ROB).

A právě Re-Order Buffer možná je druhou z největších změn spolu s oním posílením dekodérů (a s nimi spojeného Fetche) – a asi ne náhodou je také velikost Re-order Bufferu další věcí, v níž vynikají architektury procesorů Apple s mimořádně vysokým IPC. Intel je zde do značné míry následuje. V architektuře Skylake měl ROB hloubku 224 položek (instrukcí, přesněji μOPů) a už Ice/Tiger/Rocket Lake (architektury Sunny/Willow/Cypress Cove) to výrazně navýšilo na 352 položek. Alder Lake/Golden Cove jde ještě dál a zvětšuje Re-order Buffer až na 512 položek.

Je třeba říct, že Apple je pořád dál, odhaduje se, že ROB u jeho současné architektury Firestorm má až 630 instrukcí. Nicméně relativní zvětšení je u Golden Cove hodně velké (takto vysoké asi většina hadačů neočekávala) a lze přitom předpokládat, že bude dál pokračovat v následujících architekturách. Zvětšování ROB není zadarmo; mělo by stát tranzistory, ale také spotřebu navíc, takže implementovat ho efektivně není asi vůbec lehké. Je zajímavé, že třeba AMD Zen 3 má pořád ROB s hloubkou jen 256 položek (přesto jádro ve výsledku má výkon jako Tiger Lake s hloubkou 352 – jak vidíte, výkon CPU nikdy neurčuje jen jediný izolovaný parametr). Ale zde je asi jasné, že AMD bude u budoucích architektur „okno“ ROB také zvětšovat.

Větší potenciál v backendu

Podobně jako u Fetche a dekódování jde zvětšení ROB ruku v ruce se zvětšením počtu výpočetních jednotek. Dává smysl tyto dva aspekty posilovat naráz, protože s větším oknem je větší šance využít víc jednotek.

Intel u Golden Cove dál používá svou dlouholetou koncepci (jdoucí až k Pentiu Pro), kdy jsou výpočetní jednotky sdružené za několika porty, do nichž scheduler rozesílá instrukce a na jednom portu je více jednotek, které pak nelze použít v jednom cyklu současně. Scheduler je jen jeden unifikovaný jak pro klasické, tak pro FPU a SIMD instrukce, jejichž jednotky se také skrývají za stejnými porty. Hodně konkurenčních jader (ARM, ale i například AMD) má tuto část rozdělenou a běžné aritmetickologické operace mají jeden klastr jednotek a svůj vlastní scheduler nebo schedulery a instrukce a jednotky SIMD jsou zase ve své vlastní oddělené části s vlastním schedulerem. Je zajímavé, že malé jádro procesorů Alder Lake (Gracemont) už má architekturu s oddělenými SIMD/FPU porty také, ale Golden Cove ne.

Golden Cove zvyšuje počet paralelních portů, a to na 12 z 10 u předchozí architektury (v Ice/Tiger/Rocket Lake, jádro Skylake jich mělo 8). Tím se zvyšuje počet operací, které procesor může teoreticky provést najednou nárazově z plného scheduleru (předchozí části jsou ale, jak jsme již viděli, stavěné na maximum šesti operací za cyklus, takže trvale udržitelné toto maximum 12 není).

Poprvé pět ALU

ALU neboli aritmeticko-logické celočíselné jednotky se skrývají za porty 0, 1, 5, 6 a pak za novým portem 10, který přidává pátou ALU k dosavadním čtyřem. To také znamená, že Golden Cove bude v říši x86 procesorem s největší šířkou. Pro srovnání Zen až Zen 3 mají čtyři ALU, Apple se dostal na šest.

Všech pět těchto portů také podporuje instrukci LEA (Load Effective Address), která je velmi často používaná – původně slouží pro obsluhu paměti, ale dá se užitečně použít k aritmetice a kompilátory ji v také takto produkují. Všech pět portů podporuje LEA s latencí jeden cyklus (je tedy hotová v příštím cyklu).

Další komplexnější instrukce ale mají omezenější propustnost. Násobení je zřejmě na dvou portech, bitové posuny také a také pro zpracování větvení (JMP) jsou dvě jednotky. Celočíselné dělení umí jedna jednotka.

Silnější AGU pro lepší paměťový výkon

Load-store či AGU jednotky jádra provádějící čtení a zápisy do paměti (respektive cache) jsou v Golden Cove také posílené. Procesor má místo čtyř AGU teď pět (porty 2, 3, 7, 8 a pátá je na druhém nově přidaném portu 11). Tři jednotky jsou Load a dvě Store, takže jádro Golden Lake podporuje tři čtení z paměti a zároveň dva zápisy do paměti za cyklus. Tři čtení a dva zápisy jsou stejná maxima, jako má AMD Zen 3, ale ten má jen tři AGU a může tedy udělat jen maximálně tři operace za cyklus: tři čtení, nebo dva zápisy a jedno čtení, nebo dvě čtení a jeden zápis, tento subsystém tedy má Zen 3 slabší. Vedle toho má jádro také dva separátní porty jen pro ukládání dat (port 4 a 9), což je převzaté z předchozích architektur.

Nejde tu ovšem jen o počet operací, ale v případě náročných výpočtů také o propustnost, která je proti Zenu 3 až dvojnásobná. Běžná verze Golden Cove v procesorech Alder Lake by měla umět provést tři 256bitová čtení z L1 cache (odpovídající registru/vektoru AVX/AVX2) za cyklus (tedy propustnost 768b/cyklus, což by mělo být 50% zlepšení proti předchozímu jádru). Verze jádra Golden Cove s podporou AVX-512 by měla umět také dvě 512bitová čtení (odpovídající šířce registru/vektoru AVX-512) naráz, čímž by jádro dokázalo při výpočtech krmit jednotky daty s propustností 1 Kb v každém cyklu.

L1 cache samotná nemá přímo změny v kapacitě nebo asociativitě, stále je 48KB (což zavedla předchozí architektura v generaci Ice Lake/Sunny Cove). Ovšem výkon paměťového subsystému byl zlepšen dalšími cestami. Fill buffery L1 cache byly posílené z 12 na 16, byl vylepšený prefetch do L1 cache a také byl zvětšen TLB L1 Cache pro data z 64 na 96 položek. Vše toto by mělo zlepšovat výkon. Pokud dojde k TLB missu, pak také bude procesor hledat data na dalších úrovních paměťového subsystému rychleji, protože Intel zvýšil počet page walkerů ze dvou na čtyři (v tomhle je ovšem méně agresivní než konkurence – AMD u Zenu 3 zvýšilo počet ze dvou na šest).

Intel uvádí také, že byly prohloubeny také buffery pro operace čtení a zápisu z registrů do L1 cache, ale u nich není řečeno, jaké jsou teď jejich přesné velikosti. Procesor má také rychleji vyhodnocovat závislosti mezi paměťovými operacemi (tzv. Memory Disambiguation) a tím umožnit jejich rychlejší vykonání mimo pořadí. Celkově díky těmto zlepšením má jádro Golden Cove mít sníženou efektivní latenci čtení z L1 cache.

Také u L2 cache pak nastala zlepšení. Zvládá obsluhovat více paralelních požadavků na data z dalších úrovní paměti, když se v L2 nenajdou. Zatímco předchozí architektury mohly mít rozjeto 32 takových požadavků najednou, u Golden Cove jich lze paralelně mít až 48. Toto by mělo zlepšovat paměťový výkon a propustnost, kterou dokáže z RAM vytáhnout jedno vlákno/jádro. Jde mimochodem o další z parametrů, v kterém byla jádra Apple napřed před Intelem a AMD, takže nyní se jim asi Golden Cove může přiblížit. L2 cache má i účinnější prefetcher, který se umí podle zpětné vazby zpomalit, aby konzumoval méně propustnosti a uvolnil ji tak pro jiné operace. Došlo i na nějaká další vylepšení (Full-line-write predictive bandwidth optimisation).

Kapacita L2 cache je stejná jako u Tiger Lake/Willow Cove, tedy 1,25 MB pro jedno jádro (proti Rocket Lake, které ještě má jenom 512KB L2 cache, je to ale velké zvětšení – byť u Tiger Lake se nezdálo, že by mělo moc velký vliv). Serverová verze v procesorech Sapphire Rapids bude mít přidáno dalších 768 KB, stejně jako to Intel udělal v předchozích generacích serverových jader, takže bude celkově mít 2 MB L2 cache v každém jádru.

Článek pokračuje na další stránce.

FPU a SIMD: AMX v serverech, Alder Lake přijde o AVX-512

Protože Intel nepoužívá oddělenou FPU, jsou floating-point a SIMD jednotky (které provádějí jak celočíselné, tak floating-point, ač se jim někdy tradičně říká FPU) za těmi samými porty jako celočíselné ALU operace. Paralelismus SIMD části ale není tak silný, všechny jednotky jsou zdá se jen za třemi porty – 0, 1 a 5 jako u předchozích architektur.

Použití jen tří portů bohužel omezuje možnost zvýšit IPC procesoru tím, že se proloží SIMD nebo floating-point a skalární celočíselné instrukce (což by mělo fungovat třeba u AMD Zenů nebo ARMů). Méně portů obecně znamená více konfliktů. Například je velmi užitečné, že jádra Intelu mají dvě jednotky pro permutace, ale při využití této schopnosti provést dva shuffly v jednom cyklu už je volný jen jeden další SIMD port pro jiné operace. Ač má tedy Golden Cove teoreticky širší jádro, při některých mixech instrukcí by Zen 2 nebo Zen 3 mohl zpracovat za cyklus víc operací.

Na všech třech portech jsou SIMD ALU pro celočíselné operace, permutace (shuffle) jsou na dvou (1, 5), SIMD posuny jsou na dvou (0, 1), floating-point dělička na jednom. Mělo by to znamenat, že 512bitobých operací lze v jednom cyklu udělat dvě až tři podle typu – tedy u těch celočíselných. U floating-point to budou maximálně dvě 512bitové operace, nebo tři 256bitové v případě FMA.

Nové v Golden Cove je, že dva porty mají také rychlou floating-point sčítačku (FADD) na portech 1 a 5, která má nízkou latenci a lepší spotřebu proti těžkotonážnějším jednotkám FMA,které tak pro sčítání zastoupí. Jednotka FMA je na třech portech, přičemž stejně jako v předchozích architekturách – tedy aspoň těch serverových to funguje tak, že první dvě FMA jsou 256bitové, takže dohromady umí dvě instrukce AVX/AVX2 za takt, nebo se mohou sdružit pro výpočet jedné 512bitové operace AVX-512. Třetí jednotka FMA na portu 5 je nativně 512bitová, takže umí provést jednu operaci AVX-512 každý cyklus (ovšem latence může být delší). Není jasné, zda bude tato 512bitová FMA zase jenom ve verzi jádra pro procesory Xeon Sapphire Rapids a odvozenou HEDT platformu, nebo tentokrát bude i v procesorech pro spotřebitelský trh.

FP16 výpočty

Instrukce AVX-512 jinak v jádře Golden Cove nově mají schopnost pracovat s 16bitovými hodnotami FP16 (kdy je možná vypočítat 2× více operací za cyklus než s přesností FP32), což je sice zase nové rozšíření (přidávající fragmentaci), ale pro některé aplikace jako je AI (ale asi i pro některé multimediální úlohy) to může být dost přínosné. Toto a přidání jednotek FADD je zdá se v Golden Cove hlavní změna SIMD/FPU části, jinak se nezvýšily hrubé teoretické schopnosti této části backendu (ale celkově asi výkon bude vyšší díky posílení ostatních částí jádra).

AVX-512 bude natvrdo vypnuté

Ve výsledku je to jedno, protože AVX-512 představuje konflikt s big.LITTLE architekturou, jelikož malá jádra Gracemont tyto instrukce neumí. Při přesunu programu na toto jádro by proto došlo k pádu aplikace. Současně by se AVX-512 nedalo reálně použít v mnohovláknovém kódu, protože byste pravděpodobně nezískali navíc dost výkonu na to, aby se překonala ztrátu z toho, že nevyužijete výkon malých jader, která by mohla aplikace vytížit současně s velkými jádry, pokud by AVX-512 nepoužívala (a vypadá to, že výkon přidaný těmito malými jádry ukáže být značný).

Intel již potvrdil, že z tohoto důvodu budou mít jádra Golden Cove ve spotřebitelských procesorech Alder Lake podporu AVX-512 vždy vypnutou, ačkoliv v křemíku bude přítomná, a budou podporovat maximálně AVX a AVX2. Nepůjde ji ani znovu zapnout, pokud byste deaktivovali malá jádra Gracemont. Procesor ji má natvrdo hardwarově deaktivovanou bez možnosti zapnutí. Toto je škoda pro vývojáře softwaru. Původně se objevovaly informace, že by Intel mohl dovolit u Alder Lake malá jádra dočasně vypínat a tím aktivovat AVX-512, nakonec asi kvůli komplikacím s tím spojeným tato možnost existovat nebude.

AVX-512 tak asi bude možné používat jedině u serverové verze jádra Golden Cove v procesorech Sapphire Rapids – ve Xeonech a v odvozených highendových procesorech Core na tzv. „HEDT“ platformě (tedy následníkovi dnešní X299). Intel by teoreticky mohl vydat nějaké verze Alder Lake pro mainstreamový desktop, kde by z továrny byla naopak natvrdo vypnutá malá jádra a AVX-512 by mohlo být aktivní, ale v nabídce CPU by to pak vypadalo dost divně, takže moc nečekáme, že by se takovéto speciální modely atraktivní pro vývoj softwaru s AVX-512 objevily.

Schéma CPU jádra Golden Cove ve verzi pro servery Schéma CPU jádra Golden Cove ve verzi pro servery (Zdroj: Intel)

Jak už poznamenalo mnoho lidí, Intel tímto hodně zkomplikoval použití instrukcí AVX-512, protože jen co se v mainstreamových CPU objevily (Ice/Tiger/Rocket Lake), už jsou zase pryč, takže uživatelská základna zůstává příliš malá. Koncepce big.LITTLE je z tohoto jednoho pohledu dost neblahá zpráva. Objevily se – zatím neoficiální – zprávy, že AMD by naopak AVX-512 teď, zrovna, když ho Intel odebral, mohlo podporovat v jádru Zen 4. Takže to vypadá, že pokud budete chtít tuto dřívější exkluzivní výsadu Intelů, bude vás to paradoxně tlačit ke konkurenci.

Intel zřejmě v Alder Lake vypnul i některé další instrukce, které Golden Cove a i velká jádra předtím uměla, takže výsledkem by mělo být, že instrukční sada přesně odpovídá malým jádrům. Další oběti už snad ale nejsou tak významné (i když pokud jste je už v nějakém programu stihli uplatnit, asi radost mít nebudete).

Co z AVX-512 v této osekané variantě Golden Cove ale zbylo, budou instrukce VNNI, ovšem v omezené verzi používající jen 256bitové registry pro AVX (YMM) místo 512bitových (ZMM). Tyto instrukce budou mít i malá jádra, a tak bude VNNI256 možné používat i v jádrech Golden Cove procesorů Alder Lake.

Advanced Matrix Extensions (AMX)

Pokud jde o serverovou verzi Golden Cove v procesorech Sapphire Rapids, bude mít kromě aktivního AVX-512 ještě jednu specialitu: instrukční rozšíření AMX, které zdá se ve spotřebitelské verzi (procesory Alder Lake) nedostaneme.

Tyto instrukce budou provádět maticové operace s vysokým paralelismem a tím i hrubým výkonem (ovšem s relativně omezeným použitím, proto také výkon může být tak vysoký), jelikož jde o akcelerátory určené pro strojové učení/umělou inteligenci. Lze je tedy asi chápat jako obdobu třeba Tensor jader v GPU Nvidia. Jednotka provádějící operace AMX je podle schématu Intelu v jádře přítomná jedna, na portu 5.

Instrukce AMX budou provádět maticové násobení s hodnotami INT8. Budou k tomu používat nové 1024bitové registry (jádro jich má osm – T0 až T7), nad nimiž tyto operace budou probíhat. V jednom registru se tedy bude najednou zpracovávat 128 hodnot INT8. Výkon instrukcí AMX má dosahovat až 2048 operací ze jeden cyklus na jednom jádru (takže pokud to dobře počítám, cca 2 TOPS při frekvenci 1 GHz, 8 TOPS při 4 GHz...).

Článek pokračuje na další stránce.

Rozšíření jádra získalo o 19 % vyšší výkon při stejném taktu

Teprve nezávislé testy pořádně ukáží, jak velkých výkonnostních skoků tímto překopáním architektury Intel dosáhne. Firma samotná uvádí, že naměřila 19% zlepšení IPC, neboli o 19 % vyšší výkon při stejné frekvenci (na 1 MHz).

Tato hodnota je průměrem z mnoha úloh. Intel ji odvozuje od měření v benchmarcích SPEC CPU 2017, SYSmarku 25, PCMarku 10, WebXPRT13 a Geekbench 5.4.1, přičemž je to porovnání jádra Golden Cove v procesoru Alder Lake (tedy bez AVX-512 a s 1,25MB L2 cache) a desktopového Rocket Lake (s AVX-512 a s 512KB L2 cache), obojí s pevně nastavenou frekvencí 3,3 GHz (není mi ale jasné, zda také byly stejně rychlé paměti). Ono AVX-512 na tom může být důležité, protože minimálně v některých těchto testech trošku IPC přidává, takže pokud byste měli jádro Golden Cove s AVX-512 aktivním, nebo naopak AVX-512 vypnuli i u Rocket Lake/Cypress Cove, tak by zřejmě zlepšení IPC pro novou architekturu vycházelo vyšší, přesahující 20 %.

I zlepšení o 19 % je ovšem dost vysoké, mírně vyšší než 18% zlepšení, které Intel uváděl pro předchozí novou architekturu Sunny Cove/Ice Lake. Ještě jednou ale je třeba zdůraznit, že jde o průměr z testů a ve skutečnosti se IPC v každém programu liší. Jak můžete vidět na grafu, který dílčí výsledky a průměr ukazuje, míra zlepšení výkonu na 1 MHz je u architektury Golden Lake skutečně kontinuum: ve výjimečných případech dokonce nastává regrese, což může být z mnoha důvodů (třeba nějakými změnami chování prefetche nebo cache, které zrovna programu nesedly, ale mohlo jít i o efekt odebrání AVX-512).

A na druhou stranu je zase spousta programů, kde je nárůst IPC vyšší než průměrná hodnota. Podle grafu jsou dokonce i úlohy, kde Golden Cove dosáhlo o 60 % lepšího výsledku – v takových programech se asi výrazně projevilo odstranění nějakého „úzkého místa“ existujícího v předchozím jádru, jelikož byly výrazně limitované nějakým prostředkem, který Golden Cove posílilo (propustnost L1 cache, počet load operací za cyklus, 32B Fetch místo 16B...).

U her bude víc faktorů

Tento údaj o 19% navýšení IPC je také platný pro aplikační software. Asi vás často nejvíc zajímá výkon ve hrách, v tom se ale zlepšení proti předchozí generaci procesorů může docela lišit. Herní výkon je dost specifický a závisí sice mimo jiného i na jednovláknovém výkonu jádra CPU (kde má Alder Lake jak je vidět potenciál), ale dále také na kapacitě L3 cache, latenci paměti a dalších faktorech.

Zatím nemáme údaje o tom, jak moc vylepší herní výkon přechod na paměti DDR5, ale když nic jiného, tak nejvyšší konfigurace desktopového Alder Lake by zdá se měly mít 30 MB L3 cache, tedy více, než Core i9-11900K (16 MB) nebo i9-10900K (20 MB), což je slibné. Spíše se tedy asi dá očekávat, že herní výkon výrazně naroste proti procesorům Rocket Lake i Ryzenům 5000, Alder Lake by mohlo Intel zase posadit na trůn nejrychlejšího procesoru pro herní PC.

Aplikační výkon by měl být excelentní

Jednovláknový výkon jádra Golden Cove by ale každopádně měl být excelentní, tato část je asi už celkem jistá. V současnosti se zdá jasné, že by měl o nejspíš dost významná procenta překonat úroveň, na které je jednovláknový výkon procesorů AMD s architekturou Zen 3 (tedy Ryzen 9 5900X, Ryzen 9 5950X). Současně by také procesory Alder Lake by měly výrazně překonat i procesory Apple M1 a trošku vzít vítr z plachet prorokům konce procesorů x86. Ovšem zmíněná „moštárna“ může také brzy uvést nějakou vlastní novinku, takže zde teprve uvidíme, zda zase hned útok neodvrátí.

Od vysokého jednovláknového výkonu by se tentokrát měl odvíjet i vysoký mnohovláknový výkon díky tomu, že procesory Alder Lake budou mít přidaná malá jádra Gracemont, takže celkově půjde o až 16 jádra, byť s jen 24 vlákny, protože Gracemont neumí HT. V následujících dnech se podíváme i na architekturu tohoto „malého“ jádra, předběžně se ale už dá říci, že tato jádra by mohla k výkonu velkých jader Golden Cove přidávat o dost víc výkonu, než se většinou očekávalo. Je asi otázka, zda není zavádějící o nich pořád přemýšlet jako o „malých“.

Galerie: Performance Core procesorů Alder Lake, architektura Golden Cove

Každopádně jak procesory Alder Lake, tak architektura Golden Cove samotná vypadají velmi zajímavě. Intel zdá se potvrdí, že není jednou z nejvýznamnějších technologických firem jenom setrvačností a rozptýlí pochyby o tom, zda bude mít stále v budoucnu co říct. Alder Lake by totiž podle toho, jak to teď vypadá, mělo jasně posunou možnosti PC procesorů dopředu proti tomu, co byla top technologie před rokem. A tak by to mělo být.

Jak hodnotíte procesorovou architekturu Golden Cove od Intelu?

Zdroje: Intel, AnandTech

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