Hlavní navigace

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

23. 6. 2019

Sdílet


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ě.

Architektura jádra Zen 2: co je nového ve frontendu

Zen 2 vychází dva roky a čtyři měsíce po první generaci, jejíž architekturu jsme rozebírali zde. AnandTech píše celkem zajímavou věc: podle šéfarchitekta Mike Clarka původně tato architektura neměla dělat velké změny a být spíš jen „die-shrinkem“ první generace bez velkého zvýšení IPC. Ale vzhledem k tomu, že do nástupu 7nm procesu zbývalo hodně času, architektura dostala řadu výkonnostních zlepšení, takže z „ticku“ je to nakonec „tock“ (pokud bychom použili starší termity Intelu).

Přehled zlepšení, která Zen 2 dostal proti první generaci, začneme v tzv. frontendu, čímž se myslí infrastruktura, která předchází samotným výpočetním jednotkám (ALU, FPU) a hraje hodně důležitou roli. Stará se totiž o to, aby se do jednotek při out-of-order zpracování dostalo co nejvíce instrukcí za takt a co nejméně docházelo k prostojům kvůli větvení nebo čekání na data z paměti. Obecně se dá říct, že Zen 2 evolučně navazuje na Zen 1 a přebírá jeho základní charakter coby výchozí bod. Nejedná se tedy o novou architekturu ve smyslu kompletně nově koncipovanou (což je však vzácné a vzhledem k tomu, že Zen 1 je relativně nový, asi k tomu zas tak brzy nedojde).

Lepší predikce větvení: až o 30 %

Pro posílání instrukcí do dalších fází zpracování je důležité odhadovat spekulativně větvení, protože jinak by procesor nemohl dál pokračovat, dokud by o větvení nebylo rozhodnuto, a ztrácel by pokaždé desítky cyklů. Schopnost Zenu 2 odhadnout směr větve správně by měl vylepšit druhý přidaný prediktor typu TAGE. Ten je používaný tehdy, pokud by fetch instrukcí směřoval mimo L1 cache (do L2/RAM), pro fetche z L1 cache se používá perceptronový prediktor jako v Zenu 1. Prediktor TAGE by měl být schopen udržet si v povědomí delší „historii“.

Aktualizováno: Podle detailnějšího rozboru webu WikiChip by rozdělení práce mezi oba prediktory mělo být trochu jiné. Perceptron je velmi rychlý a používá se proto pro předběžnou predikci. Prediktor TAGE je náročnější a pomalejší, takže jeho výsledek je dostupný později než odhad perceptronu, ale má být přesnější. Zen 2 proto údajně dělá to, že nejdřív postupuje podle výsledku perceptronu, a když se se zpožděním několika cyklů dostaví i odhad TAGE, jsou oba porovnány. Pokud souhlasí, jde vše dál bez přerušení. Pokud TAGE nesouhlasí, jsou zahozeny spekulativní výsledky a procesor začne znovu podle odhadu TAGE. Postih za tuto změnu predikce by měl být menší, než postih za klasický chybný odhad, když se na něj přijde až v momentě reálného vyhodnocení podmínky.

AMD také zvětšilo Branch Target Buffery, do L1 BTB se vejde 512 položek místo jen 256 a u L2 BTB je to zhruba 7000 místo předchozích 4000. L0 BTB je nezměněný na 16 položkách, ale Indirect Branch Target Array má 1000 položek. Specializace dvou různých prediktorůvětvění by snad měla vylepšit celkovou úspěšnost. Spolu s s většími BTB je prý u Zenu 2 počet neúspěšných predikcí nižší až o 30 %.

Dvojnásobná uOP cache

Asi největší změnou ve frontendu je velké zvětšení uOP cache, která ukládá již dekódováné instrukce a umožňuje je hned znovu použít. To je zkratka šikovná třeba pro smyčky a šetří energii, zatímco přidává výkon. V Zenu 2 má místo 2000 položek nyní kapacitu 4000 položek (instrukcí), takže pojme delší smyčky a měla by mít větší procento „hitů“. Je zajímavé, že tato evoluce architektury jde stejným směrem, co provedl Intel u svého nového jádra Sunny Cove (procesory Ice Lake). Také tam došlo k velkému zvětšení uOP/L0 cache, ovšem jen na zhruba 2250 položek z 1500 u Skylake. Nový Cortex-A77 od ARMu má položek 1500.

Fetch a dekódování zřejmě posíleny nejsou: procesor fetchuje (načítá z instrukční cache) maximálně 32 bytů kódu a dekodéry jsou čtyři – každý komplexní, tj. zvládne nejen nejběžnější operace (Intel používá kombinaci jednoho komplexního a čtyř zjednodušených dekodérů, které zvládají jen některé instrukce) – mohou tedy poslat dál čtyři instrukce za takt.

Ovšem MicroOP cache může ze svého dodat až osm dekódovaných instrukcí (zfúzované microOPy se zřejmě počítají jako jedna položka). Díky větší hit-rate zvětšené MicroOp cache (která je schopná dodat větší procento celkových instrukcí) je podle AMD celková propustnost dekódování efektivně vyšší. Do další fáze Dispatch ale celkově z obou zdrojů stále může postoupit jen méně instrukcí, maximálně šest za takt, což je stejné jako u Zenu 1.

Podle AMD jinak bylo i fúzování operací vylepšeno, ale není řečeno jak. Stejně tak byl vylepšen i prefetching, což je vedle predikce větvení další oblast, kde pořád probíhají kontinuální vylepšování.

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

Galerie: Architektura jádra AMD Zen 2

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

Paměti cache a Infinity Fabric

Přeštelování L1

Je zajímavé, že L1 cache pro instrukce naopak byla současně se zvětšením uOP cache zmenšena – možná v rámci balancování či proto, že na ní pak už nezbylo místo. Má tedy místo 64 KB v Zenu 1 32 KB. Ovšem její asociativita byla navýšena na dvojnásobek, je nyní osmicestná místo čtyřcestné. Toto by patrně mohlo zlepšit její využití, a nižší kapacita zase možná sníží spotřebu.

Instrukční L1 je teď stejná jako L1 Cache pro data – ta je 32KB s osmicestnou asociativitou už od Zenu 1. Latence zůstává na 4 cyklech. Je zajímavé, že Intel přes desetiletí používal také 32+32KB L1, ale zrovna teď s jádrem Sunny Cove zvětšuje datovou L1 na 48 KB.

Zvětšená L3 „Game cache“

U L2 cache změna není, je nadále 512KB s latencí 12 cyklů. Ovšem AMD zvětšuje L3 cache. Ta má nyní 16 MB v každém čtyřjádrovém bloku CCX – osmijádrové CPU by tedy mělo mít 2 × 16 MB, šestnáctijádro 4 × 16 MB. Toto zvětšení má údajně pomoci hrám a to údajně až o 11–21% (údaj pro hraní v rozlišení 1080p se samostatnou grafickou kartou). Této větší L3 říká firma v Ryzenech „AMD GameCache“, ale to je jen marketingový slogan.

AMD uvádí, že tato větší L3 cache pomáhá „efektivní průměrné latenci paměti“, ale pozor – toto znamená, že procesor častěji nalezne data v L3 a méně často musí do RAM, takže je latence v průměru lepší kvůli více L3 „hitům“. Neznamená to, že tato větší L3 má sama sníženou latenci. Mělo by to být naopak, latence přímo L3 cache samotné kvůli zvětšení stoupla, mělo by to být ze zhruba 35 na asi 40 cyklů.

O něco lepší by v jádře Zen 2 měly být také TLB (Translation Look-aside Buffery), které slouží pro cachování fyzických adres virtuálních stránek paměti. L2 TLB má kapacitu 2000 položek místo 1500 a nově funguje i pro 1GB velké stránky paměti (to Zen neuměl). Také by měl mít nižší latenci. A AMD údajně také zvětšilo fronty operací, které nenašly data v L1 nebo L2 cache (tzv. cache missy).

Infinity Fabric má dvojnásobnou šířku

Mezi jednotlivými CCX/Core Complexy (čtyřjádrovými bloky s oddílem L3 cache) opět zajišťuje spojení Infinity Fabric, stejně jako spojení mezi CCX a paměťovým řadičem, případně řadičem PCI Express a další konektivitou. V případě komunikace s CCX, tedy CPU jádry, Infinity Fabric opouští 12nm/14nm IO čiplet a přes substrát komunikuje se 7nm CPU čipletem.

U Zenu 2 ovšem má tato propojovací logika být vylepšena. Její datová šířka byla zdvojnásobena z 256 bitů na 512 bitů. To je opět uděláno kvůli dvojnásobnému výkonu instrukcí AVX2 (který si vyžádal podobné rozšíření silnic i uvnitř jádra) vyžadujícímu i vyšší propustnost. Ovšem u Infinity Fabric je toto rozšíření zároveň motivováno ještě něčím jiným. PCI Express 4.0, který procesory Ryzen 3000 a Epyc druhé generace podporují, má také dvojnásobnou propustnost proti PCI Expressu 3.0. A také tedy ideálně vyžaduje dvojnásobně rychlé zázemí v CPU, aby komunikace nevázla.

Není to jediné zlepšení. IF podporuje časnější aktivace stránky v paměti při přístupu, takže efektivní latence je v některých případech nižší, také je časněji iniciován probe signál do jiných pamětí cache pro vyhledání dat. Podle AMD také energetická efektivita Infinity Fabric u Zenu 2 stoupla o 27 %, čímž se myslí, že spotřeba na jeden přenesený bit je o toto číslo nižší.

Dělička pro taky Infinity Fabric pro přetaktování DDR4

A další změna se udála pro potřeby přetaktovávačů. Infinity Fabric byla dosud pevně navázána na frekvenci pamětí DDR4 – běžela na polovině její efektivní frekvence. Toto však omezovalo schopnost řadiče běžet na vysokých frekvencích pamětí. U Zenu 2 proto přibyla možnost přepnout Infinity Fabric do poměru 2:1, kdy běží na poloviční frekvenci. Toto má dovolit vytáhnout frekvenci DDR4 poměrně snadno až někam na 4200 MHz (kdy IF poběží zhruba na stejné frekvenci, jako dříve s 2133MHZ DDR4) a při přetaktování – asi se myslí extrémním – prý až za 5,0 GHz. Experimentálně se prý už podařilo dostat na 5133 MHz efektivně.

V praxi ale asi tento 2:1 režim nebude mimo extrémní OC příliš užitečný, snižuje totiž interní propustnost a ve výsledku i latenci. Jak můžete vidět zde na slajdu, podle AMD je pro výkon nejlepší použít co nejvyšší možnou frekvenci, která stále běží v 1:1 režimu. Takovýmto ideálem by podle AMD měl být takt 3733 MHz, kdy je podle AMD latence pamětí s použitím CL17 modulů asi 67 nanosekund. Toto ovšem bude poněkud drahá legrace, takže jako cenově výhodnější nejbližší alternativu AMD doporučuje takt DDR4-3600 a CL16, což má dávat latenci okolo 69 nanosekund. Toto je nicméně OC, standardně podle specifikací JEDEC má Ryzen 3000 oficiální podporu jen pro DDR4-3200.

IPC má být až o 15 % vyšší

Popsané změny jádra by měly přinést poměrně citelné zlepšení taktu při zachování stejné frekvence, což by mělo umožnit značné zlepšení celkového výkonu (zvlášť když zároveň stoupne počet jader až na dvojnásobek). Toto zlepšení tzv. IPC ovšem nebude již zdaleka tak dramatické, jako při přechodu z mnohem užšího jádra Excavator – další zvýšení výkonu je o dost obtížnější. AMD udává, že by IPC mělo být lepší až o 15 %, nicméně toto zlepšení se bude hodně lišit podle konkrétního programu. Kód závislý na propustnosti instrukcí AVX2 by například mohl naměřit zlepšení ještě větší.

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

Galerie: Architektura jádra AMD Zen 2

Velikost čipu, pouzdro a fyzické charakteristiky

AMD prozradilo i nějaké informace k čipům, z kterých se procesory Ryzen 3000 (a Epyc 2. generace) skládají a jejich zapouzdření. Ryzen 3000 je rozdělený na dvě části – jeden nebo dva CPU čiplety (CCD, Core Complex Die) a jeden IO čiplet (na slajdech cIOD). Tato separace má asi dva účely. Jednak se CPU čiplety dají snáze sekundárně využít v serverové verzi (Epyc 2 má osm CPU čipletů a odlišnou IO část) a zároveň v desktopovém Ryzenu. Vedle toho asi také ale zlevnily a zjednodušily obtížný a drahý návrh 7nm čipu.

V CPU čipletu se nacházejí toliko jádra CPU, uspořádaná v blocích po čtyřech (s přidruženou L3 cache) a konektivita Infinity Fabric. Tou jsou jádra připojená k IO čipletu, jenž obstarává vše ostatní. IO čiplet je 14nm (u procesorů Epyc) nebo 12nm (Ryzen 3000). Důvod, proč je u Ryzenů 3000 pro IO čiplet použitý 12nm proces, je údajně ten, že to umožnilo dosáhnout na vyšší takty pamětí DDR4.

Podle AMD zabírá jeden blok CCX se čtyřmi jádry a 16MB L3 cache plochu asi 31,3 mm². Blok CCX architektury Zen 1 na 14/12nm procesu měřil 60 mm² (44 mm² jádra, 16 mm² za 8 MB cache), takže 7nm proces přinesl 47 % redukci plochy. Nárůst hustoty je tedy značný, přestože jde o složitější architekturu. Celkem má CPU čiplet se dvěma CCX a propojovací logikou Infinity Fabric 74 mm² a má obsahovat 3,9 miliard tranzistorů. IO čiplet měří 125 mm², ale skládá se jen z asi 2,09 miliardy tranzistorů.

Jiné pájení, 12vrstvý substrát

Ani substrát nebyl u Ryzenů 3000 jednoduchá věc. Socket AM4 totiž dosud měl procesory s jedním uprostřed orientovaným čipem, kdežto nyní musí nést dva nebo tři různé čiplety a zapojit konektivitu ze stejných pinů do nich. Zároveň se ale muselo při hledání pozice pro I/O čiplet hledět na co nejkratší délku vodičů, aby se nezhoršila schopnost pracovat s DDR4 na vysokých frekvencích, nebo zase na to, aby se nezhoršilo chlazení CPU čipletů. Substrát má kvůli těmto komplikacím 12 vrstev. Mimochodem, pouzdro a substrát jsou společné pro jedno a dvoučipletové modely.

7nm proces má podle AMD zmenšenou rozteč mikrokontaktů na spodku křemíku, kterými jsou čipy napájené na substrát, místo 0,15 mm jen 0,13 mm. Naměstnání potřebných kontaktů na spodek čipu bylo problémové, protože CPU čiplet je poměrně malý, takže kontakty nemohly být větší. U 7nm Ryzenů „Matisse“ je to vyřešeno změnou techniky pájení. Místo klasické kuličky bezolovnaté pájky je použitá menší kulička, která sedí na jakémsi drobném měděném sloupku, jenž je nejdřív vytvořen na substrátu. Toto umožňuje mít kontakty s průměrem jen nějakých 0,05–0,1 mm.

Použití „sloupků“ pod 7nm čipem jinak také dovoluje sladit výšku s odlišným 12nm IO čipletem, aby oba přesně seděly k rovině vnitřní plochy heatspreaderu. U toho by se údajně nedalo docílit potřebné přesnosti, pokud by měla rozdílná výška čipu vyrovnávána v něm (změnou tloušťky plechu).

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

Galerie: Architektura jádra AMD Zen 2

Přetaktování: Precision Boost Overdrive a Auto OC i pro jednovláknový výkon

Přetaktování na Ryzenech 2000 je specifické tím, že na modelech jako Ryzen 7 2700X obvykle nelze dostat pevnou frekvenci pro všechna jádra tak vysoko, jako tato CPU běží v maximálním jedno (nebo „málo“) vláknovém boostu. Tím pádem při takovémto OC přicházíte o jednovláknový a herní výkon. Ovšem je možné použít alternativní přetaktování přes Precision Boost Overdrive (PBO), kdy se procesoru uvolní limity proudu a spotřeby a samotné fungování turba už se postará o to, že CPU nastaví v zátěži všech jader vyšší frekvence. Toto přetaktování má výhodu, že stále pracuje v rámci automatického řízení napětí, takže spotřeba je typicky lepší než při nuceném vynucení pevné frekvence.

Ryzen 3000 bude nabízet totéž přetaktování. Ovšem s jednou novinkou: automatickým přetaktováním, čímž se myslí automatické přetaktování už i maximální frekvence. Tato funkce krkolomně pojmenovaná Precision Boost Overdrive and Automatic Overlclocking se liší od standardního PBO jednou věcí. Zatímco klasické PBO umožní více jádrům dosáhnout vyšší frekvence v MT zátěži, ale tyto takty jsou pořád v rozsahu továrních frekvencí (a tedy zastropované maximálním továrním boostem), PBO Automatic Overclocking už umožní ve stejném systému řízení frekvencí zvednout i limit pro maximální frekvenci. Povolené zvýšení bude až 200 MHz.

Například Ryzen 9 3950X s maximálním turbem 4,7 GHz by pak teoreticky mohl stále s aktivním turbem a řízením frekvencí boostovat až na 4,9 GHz. Ale nevíme, zda zrovna tento model bude podobného OC schopen, protože je možné, že už je vyhnán tak vysoko, že nemá žádné rezervy. Ovšem nižší modely, které mají maximální turbo menší, by možná 200MHz zlepšení být schopné mohly.

Podle AMD bude tato funkce vyžadovat procesor Ryzen 3000, a to kategorie alespoň Ryzen 5 (a kromě Ryzenů 5/7/9 ji budou umět i Threadrippery – zajímavá zmínka, protože Threadrippery 3000 ještě nejsou oficiálně oznámené, ale je téměř potvrzené, že se chystají). Na Ryzenech 3 tedy bude vypnutá. Mimochodem, bude ji možné použít i s Ryzenem 5 3400G, tedy 12nm APU Picasso ještě s jádry Zen 2, který by tak teoreticky mohl mít maximální takt až 4,4 GHz, ale samozřejmě nemáte zaručené, že to bude stabilní. Zřejmě neplatí, že toto „automatické přetaktování“ nějak garantuje, že MHz navíc v maximálním turbu opravdu dosáhnete. Ale aspoň to budete moci vyzkoušet. Jak tato funkce bude využitelná v praxi, to ukáží až recenze.

Toto přetaktování také není pokryté zárukou a AMD uvádí, že je zamýšleno pro kvalitnější a dražší desky. A logicky také lepší chladiče, na kterých dosažené frekvence při Precision Boostu závisí. Jeden ze slajdů dokonce naznačuje, že v některých případech nemusí dokonce ani stock maximální turbo být vždy dosažitelné s výchozím boxovým chladičem, a procesor ho může dosahovat třeba jenom s nějakým výkonným vzduchovým či vodním. Toto asi bude také zajímavé otestovat v recenzích.

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

Galerie: Architektura jádra AMD Zen 2

Výkon Ryzenů mají zlepšit aktualizace ve Windows 1903

Ještě než povídání ukončíme, podíváme se na softwarovou stránku spjatou s architekturou Zen 2. Některá zlepšení nových CPU mají totiž vyvstat až ve spojení s operačním systémem. Podle AMD pro tyto procesory přinesou speciální vylepšení Windows 10 v nejnovějším jarním updatu (verze 1903).

Ryzen Clock Selection

První z těchto zlepšení se ve slajdech jmenuje „Ryzen Clock Selection“ a jeho účelem je zvýšit responzivnost systému. Spočívá v tom, že řízení frekvence bude předáno procesoru, místo aby takt ovládal OS. Zatímco na starších verzích Windows trvá asi 30 ms, než po zatížení jádra CPU systém nastaví Ryzenu vyšší turbo takty (P-stav), s touto novinkou má být P-stav přepnut už pouze za 1–2 milisekundy. Toto by mělo zlepšit reakci CPU na náhlou krátkou zátěž, jako třeba při prohlížení webu (test WebXPRT). Podle AMD by v některých specifických testech mohlo toto zvýšit výkon až o 6 % (subtest startu aplikace v PCMarku10). Je to podobná funkce jako rychlé přepínání taktu nazvané „Speed Shift“ u Intel Skylake, kde ovšem Intel uvádí o něco vyšší latence (Speed Shift první generace ve Skylake měl prodlevu snížit ze 100 ms na 40 ms, Kaby Lake pak na 12 ms).

Jak už bylo řečeno, toto zlepšení bude dostupné v operačním systému Windows 10 1903 (jaký je plán na dodání podpory do Linuxu, nevíme), takže bude nutné na něj upgradovat. Ovšem zatímco Windows 1903 už jsou dostupné, současně bude třeba také aktualizace ovladačů čipsetu, která má v tuto chvíli teprve vyjít a plánované datum příchodu ještě nebylo sděleno.

Aktualizováno: potřebná verze ovaldačů (AMD Chipset Drivers) je 1.07.07. Toto vydání vyšlo 7. července, tedy v den vypuštění Ryzenů 3000 na trh. Recenze by již měly být naměřené s touto verzí, novináři měli k dispozici sestavení s ekvivalentní podporou pro Ryzen Clock Selection předem.

Zároveň bude potřeba podporu v BIOSu (respektive UEFI), který musí mít technologii CPPC2 (Collaborative Power Performance Control 2). Bez ní rychlejší přepínání nefunguje, nicméně vypadá to, že v BIOSech s podporou Ryzenu 3000 už by asi měla být, minimálně pro nové desky platformy X570 (zde bude věc podporovaná i na starších, není nikde explicitně řečeno). A poslední a hlavní podmínka je, že musíte mít procesor Ryzen 3000. Zejména asi 7nm Matisse, není jasné, zda tato věc bude fungovat na APU Ryzenech „Picasso“, které nemají architekturu Zen 2. Pro předchozí generace procesorů asi toto rychlejší přepínání není.

Thread Grouping: správný scheduling na Zenech

Windows 10 1903 má jinak pro Ryzen 3000 přichystáno ještě jedno zlepšení, které už má fungovat i pro předchozí procesory s jádry Zen 1. Týká se to toho, že kvůli rozdělení procesorů Ryzen na čtyřjádrové bloky CCX s oddělenou L3 cache nejsou pro běžící program všechna jádra úplně uniformní z hlediska výkonu, protože komunikace s jádry z jiného CCX má určitý postih. Windows původně neobsazovaly přednostně jen jádra ve stejném CCX – důvod byl v tom, že by se tím vytvořila koncentrace tepla na jednom místě čipu, zatímco zbytek (druhý CCX, případně další čip v Threadripperu) by zahálel – frekvence by pak nemohla být tak vysoká, a proto scheduler raději obsazoval rovnoměrně všechny CCX, byť ještě na tom prvním byla volná jádra.

Microsoft ve spolupráci s AMD v nejnovější verzi Windows scheduling změní tak, aby se u Renů nejdříve obsazovala jádra ve stejném CCX. Zatímco předchozí přístup byl vhodný, pokud jednotlivá vlákna patří odlišným procesům a nekomunikují spolu, tato nová politika naopak pomůže těm programům, které používají více vláken, jež spolu komunikují (nebo sdílejí data). Mohlo by to údajně zrychlit hry, kde by scheduler nyní měl jejich vlákna přednostně přiřazovat na jeden CCX, takže se předejde penalizaci z komunikace mezi CCX (tedy alespoň do doby, než hra začne používat tolik vláken, že jedno CCX „přeroste“). V některých hrách toto údajně může slušně zlepšovat výkon (AMD uvádí +15% v Rocket League 1080p/nízkých detailech). Princip by měl platit i pro procesory složené nejen z více CCX, ale také z více čipů, takže tato změna by mohla přilepšit také majitelům Threadripperů.

Hardwarové změny proti Spectre

Ve spolupráci s operačním systémem pak má fungovat vylepšená ochrana proti některým bezpečnostním zranitelnostem, které byly v CPU veřejně odhaleny od začátku loňského roku. AMD uvádí, že se ho z hlavních problémů (můžete vidět v této tabulce) týká Spectre V1 a V2 plus Spectre V4 (Speculative Store Bypass). Ochrana proti nim by měla být podobně jako u procesorů Intel 9. generace (respektive některých z nich, ale ne všech) začleněná už do hardwaru.

Pro ochranu před těmito spekulativními útoky je ovšem stále potřeba spolupráce s operačním systémem nebo hypervizorem, stejně jako u Intelu. Ale na straně hardwaru by měly být úpravy, které by ji měly vylepšovat, což se asi míní označením, že ochrana je na úrovni „hardwaru a OS/hypervizoru“.

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

Galerie: Architektura jádra AMD Zen 2

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