CPU jádro Zen 2 detailně: nová architektura AMD přináší hlubší změny, než se čekalo

33

AMD teď na přelomu května a června definitivně odhalilo procesory Ryzen 3000 vyráběné na 7nm procesu a obsahujících nové CPU jádra Zen 2. O této architektuře něco povědělo už loni, ale tehdy neprozradilo všechny změny. Tento měsíc během E3 2019 firma odhalila Zen 2 ve větších podrobnostech a vypadá to, že tato jádra přinášejí o dost větší inovaci, než co se čekalo. V tomto článku se na architektonické změny podíváme podrobně.

Předchozí
Následující

Výpočetní jednotky: stále čtyři ALU, ale o jednu AGU víc

Přímo ve výpočetních jednotkách je nakonec více změn, než co připouštělo letmé odhalení na konci roku 2018, kdy to ještě vypadalo, že u této části se IPC nějak zvedat nebude. AMD však pro celočíselnou výpočetní část zvětšilo většinu bufferů a struktur. Reorder Buffer, v kterém probíhá přehazování instrukcí pro „out-of-order“ vykonávání a je místem, kde CPU optimalizuje kód, aby z něj dostalo co nejvíc IPC, má nyní hloubku 224 položek místo 192 u Zenu 1 (pro srovnání, u Intelu má 224 Skylake, 10nm jádro Sunny Cove ale zvedne hloubku masivně na 352 položek). Také počet registrů ve fyzickém souboru je zvýšen, na 180 ze 168. Procesor má tedy větší rezervu pro jejich přejmenovávání kvůli konfliktům při out-of-order vykonávání instrukcí.

Výpočetní jednotky ALU jsou stále čtyři, každá s vlastním schedulerem. Zajímavá podrobnost je, že jednotlivé ALU pipeline používají „watermarking“ pro zpracování instrukcí, které by mohly zastavit vykonávání (spinlocky). Schedulery mají dohromady 92 položek místo 84 – je to rozděleno na čtyři separátní 16položkové (Zen 1 používal 14 položek) fronty pro každou ALU a 28položkovou frontu, která je sdílená pro všechny AGU, respektive Load/Store pipeline. Toto je změna, Zen měl dě oddělené fronty pro své dvě AGU po 14 položkách, tedy stejně jako u ALU.

Třetí AGU

Šířka Issue celočíselné části jádra Zen 2 se ovšem zvedla ze 6 operací na cyklus na 7. AMD totiž přidalo třetí jednotku AGU (Address Generation Unit). Load/Store pipeline díky tomu mohou obsloužit dvě čtení z L1 cache a současně jeden zápis, celkem tři operace. U Zenu 1 se daly maximálně použít dvě operace, buď dvě čtení nebo jedno zápis plus jedno čtení. U Zenu 2 by měly první dvě AGU umět čtení i zápis a třetí AGU je jen pro zápis. Ovšem toto se týká jen vyhodnocení operací a jejich odeslání do fronty, samotná cache je asi stále dvouportová a stále tedy asi lze udělat jen dva přenosy za takt, z toho jeden zápis. Zen 2 by tak snad měl být v této oblasti rovnocenný s jádrem Skylake, ale Sunny Cove bude napřed, protože už umí i dvě operace Store za takt a navíc mělo kvůli AVX-512 umět dvakrát větší datovou šířku, 512 bitů místo 256 bitů). Další drobnější vylepšení je pak zvětšení fronty zápisů ze 44 na 48 položek.

Dvojnásobná propustnost do L1 cache

Kromě toho je ale velmi důležitá ještě jedna věc: čtecí a zapisovací operace mají dvojnásobnou propustnost – 32 bajtů za cyklus místo 16 bajtů u Zenu 1. Přes CPU tak může téct dvojnásobná kapacita dat, což je důležité pro SIMD kód, ať již multimediálná celočíslený, nebo pro floating-point výpočty. Jádro také má efektivněji kombinovat zápisy pro lepší využití propustnosti a lépe omezovat prefetch, pokud konzumuje příliš mnoho z kapacity.

FPU: dvojnásobný výkon AVX2

V jednotce FPU, která ovšem dnes slouží hlavně pro SIMD (vektorové) instrukce, a to jak floating-point, tak celočíselné (integer), došlo asi k nejvýznamnější výkonové změně. AMD totiž odstranilo výrazné slabší místo v podobě jen 128bitových jednotek SIMD. Ty dokázaly s plným výkonem provádět instrukce typu SSEx, ale instrukce AVX a AVX2 s 256bitovou šířkou musely vykonávat na dvakrát. Zen 1 je proto štěpil na dvě operace a typicky je jednotka prováděla ve dvou průchodech. Proto ruční optimalizace kódu používající AVX2 na jádrech Zen nemají příliš efekt, zatímco na Intelu mohou výrazně zvednout výkon, jelikož 256bitový vektor najednou zpracuje 2× více dat.

U Jádra Zen 2 je tato slabina minulostí. FPU má stále čtyři pipeline, jenže již mají 256bitovou šířku a instrukce AVX/AVX2 dokončují za jeden cyklus (respektive, latence může být vyšší, ale propustnost je díky pipeliningu jedna dokončená operace na jednu pipeline každý cyklus). Rychlejší AVX2 by mělo mít pozitivní efekty v x264, x265 a ve výpočetních úlohách používajících AVX. Také některé syntetické benchmarky by mohly vykázat vysoký nárůst.

I ve floating point/SIMD jednotce byly současně s rozšířením výpočetních jednotek také rozšířeny (na dvojnásobek) datové cesty, load i store nyní mají šířku 256 bitů místo 128 bitů, aby 256bitové vektory s dvojnásobným výkonem také stíhaly být krmené daty. I dříve zmíněné zdvojnásobení propustnosti L1 cache má stejný důvod – udržet rovnováhu mezi hrubým výpočetním výkonem a schopností CPU přivádět jednotkám data ke zpracování (a odvádět zase do paměti jeho výsledky).

Zmíněno je ještě jedno zlepšení. Latence SIMD násobení byla snížená ze čtyř cyklů na tři. To nemění celkovou propustnost instrukcí za cyklus, ale znamená to, že výsledek operace je dostupný rychleji, takže pokud na sobě operace závisí, může jít následující operace ke zpracování dřív a tím opět může stoupnout IPC.

Článek pokračuje na další straně.

Galerie: Architektura jádra AMD Zen 2

Předchozí
Následující

33 KOMENTÁŘE

  1. Tak tenhle článek mi nasadil do hlavy ještě víc brouků, abych letos přesedlal z 6600K na 12C Ryzen. Bohužel tituly od Turn 10 a Playground jsou neskutečně rozežrané na CPU, takže cílím upgrade na 8C+. Ještě počkám na ceny, protože tam se může ukázat, že si AMD bude chtít nechat trochu vyšší marže. A celkem se divím, že ani Alza nemá katalog nacpaný novými produkty s cenovkou “těšíme se”.

    • Ceny byly ohlášené a měly by asi sedět, jestli nevypukne nějaká nákupní panika, což počítám že nenastane, hlavně ne když se bavíme o vlastně jen retailu (IMHO), tj. 5-10% trhu s PC – a kdyby nastala, tak to bude jenom po omezený čas.
      12jádro by při dnešním kurzu dolaru mělo být za 13 600 Kč s DPH…

        • Jo, bude třeba počkat na recenze a zkušenosti majitelů, jak se to snáší s nějakýma levnějšíma deskama B450-X470 a ušetřit na tý desce, když CPU stojí majlant…

          O víkendu jsem se koukal, že snad všechny Gigabyte s čipsetem B350 (včetně věcí s dvěma DIMM slotama) dostaly BIOS s “full” podporou Ryzenů 3000 (až po šestnáctijádra podle seznamu podpor. CPU). Samozřejmě když to člověk bude chtít přetaktovat tak to je jiná věc, ale snad to na rozumné desce do třech tisíc poběží dobře aspoň stock.

            • Já to nemyslel jako doporučení, jen jako že ta podpora na starších deskách vypadá nakonec vcelku dobře (i když je tu pořád ten problém, že musíte shánět kus s novým BIOSem nebo řešit, jak novou updatovat).

              Snad teda recenze a zkušenosti potvrdí, že to na řadě 400 bude fungovat bez nějakejch bugů nebo nestabilit (300ky asi zajímají hlavně lidi, co upgradujou). Ještě jsme nepřeskočili…

      • ~13 tísíc korun + MB (které očividně zdraží) mi způsobuje lehčí skřípění zubů. Ve výsledku dobře naceněné 9700K nebo 9900K v reakci na Zen2 by bylo čistě na gaming asi lepší volba. No asi nezbývá nic jiného než čekat, ale už bych letos chtěl přesedlat.

      • Počkejme si na pád dolaru, USA jsou předlužené a stále více produktově ignorované, mají krizi přede dveřmi. Kolik z toho se týká i Kanady, je otázka, ale rozhodně méně. I já se připojuji k pochvale za vysoce informativní článek.