AMD EPYC Rome: architektura překonávající limity litografie
21.8.2019, Jan Vítek, článek
Řada testů procesorů EPYC druhé generace už prokázala, že ty se společnosti AMD mimořádně povedly a Intel na ně dnes jednoduše nemá odpověď. My se ale nyní nebudeme věnovat výkonu, jako spíše samotným procesorům a jejich platformě.
Kapitoly článku:
- AMD EPYC Rome: architektura překonávající limity litografie
- Dvouprocesorové systémy
V testech se vesměs ukazují dvouprocesorové systémy s EPYC i příslušná konkurence Intelu, přičemž i nabídka nových procesorů jasně naznačuje, že se počítá spíše s využitím dvouprocesorových verzí, jichž je na výběr 14 oproti pouhým 5 pro jednoprocesorové servery.
Opět se zde můžeme otřít o NUMA, čili Non-Uniform Memory Access a konkrétně pak o přeskoky či "vzdálenosti" a pak domény. Srovnávat můžeme starší procesory EPYC 7001 s novými EPYC 7002, které to mají s NUMA celkově mnohem jednodušší.
Máme tak jednak dvouprocesorový systém s EPYC první generace, čili celkem 8 čipů Zeppelin a každý s vlastním přístupem do paměti, což znamená i 8 NUMA domén. Pokud totiž procesorové jádro v některém z čipů bude potřebovat data z modulů, které jsou napojeny na jiný čip, musí se tak podívat do jiné NUMA domény. Pak ovšem ještě záleží na tom, zda učiní jeden, nebo rovnou dva přeskoky, což jsou ony 3 NUMA distances (v rámci čipu, čip-čip v jednom CPU, čip-čip mezi dvěma CPU).
Pokud budeme uvažovat s celými čipy jako nejmenší jednotkou, pak jde o data, která jsou fyzicky umístěna v paměťovém modulu napojeném na jiný čip stejného procesoru. Pak je to vždy jeden přeskok, neboť v rámci CPU je propojen každý čip s každým. To ale neplatí pro propojení čipů mezi procesory. Zde je napojen vždy 0. čip na 2. a naopak a potom 1. čip na 3. a naopak, čili mezi procesory máme různá spojení realizovaná linkami Infinity Fabric. Může nastat situace, kdy 0. čip prvního CPU potřebuje data z 2. čipu v druhém CPU a v takovém případě je skok jeden i při mezipaticové komunikaci. Ale pokud mezi nimi není přímé spojení, musí daný čip jako prostředníka využít ten ve svém procesoru, který je vybaven příslušnou linkou a v takovém případě jde už o dva skoky. To automaticky znamená větší zpoždění komunikace a více NUMA domén zase větší pravděpodobnost toho, že dané CPU jádro nenajde data ve své paměti a musí se podívat jinam.
V případě procesorů EPYC druhé generace je to všechno už velice jednoduché. Každý procesor má svou jedinou NUMA doménu, která se bere jako celková pro všech 8 čipletů a I/O čip. Efektivně tak mezi sebou komunikují prostě dva procesory, což z 8 domén vytvoří jen dvě a skok je zapotřebí pouze jeden, pokud tedy nepočítáme komunikaci čipletu s I/O čipem. Důležité je ale především to, že jde o jednoduchý systém, který se bude chovat vždy stejně a předvídatelně, což ocení zvláště programátoři.
- klikněte pro zvětšení -
Mezi procesory EPYC 7002 tak už nejsou 4 různá spojení, ale už pouze jedno mezi I/O čipy, nicméně AMD i tak díky tomu mohlo využít stávající desky a stávající patici SP3. Zapotřebí je pouze aktualizace BIOSu, i když to stejně jako v případě desktopových počítačů a procesorů Ryzen 3000 nepřinese podporu rozhraní PCIe 4.0. K tomu bude zapotřebí nová deska, která už byla navržena za účelem podpory nové verze PCIe.
Nové EPYC také nesou stále stejný počet linek rozhraní PCIe, které však stejně jako paměťové kontrolery nemají rozděleny jednotlivé čipy s procesorovými jádry, ale vše je zde v I/O čipu, k němuž a jeho prostředkům mají čiplety rovnocenný přístup. Rozdíl je také v tom, k čemu se linky využívají.
EPYC jich ve skutečnosti mají 130 a díky centrálnímu I/O čipu je komunikace mezi procesory jednodušší a vyžaduje méně linek, které se mohou využít jiným způsobem. Zde jde konkrétně o WAFL (modře znázorněná na obrázku nahoře), na niž byl napojen BMC AST2500 (Baseboard Management Controller monitorující stav hardwaru). Díky tomu může Rome v jednoprocesorovém systému nabídnout uživateli plný počet 128 linek, a to navíc ve verzi 4.0.
Hlavní propojení mezi dvěma procesory, které zajišťuje vysokorychlostní přenos dat, je však realizováno pomocí celkem 64 linek Infinity Fabric rozdělených do 4 skupin po 16. AMD přitom zvýšilo propustnost jedné linky z 10,7 GT/s (gigatransfers) na 18 GT/s jedním směrem. Linky jsou obousměrné a ve výsledku je celková propustnost 288 GB/s. To už se vyrovná propustnosti paměťového systému slušné grafické karty, i když počítáme součet v obou směrech.
Pro některé OEM výrobce to může být až příliš velký luxus a právě proto AMD rozděluje IF linky do 4 skupin, protože z jedné (či více?) se bude moci vytvořit nové obecné rozhraní PCIe 4.0 pro libovolné využití. Takže ono v podstatě už vůbec neplatí, že Rome mají 128 linek PCIe, to jen v základní nabídce. Dříve to pochopitelně nešlo, resp. by to způsobilo ještě zhoršení situace s NUMA, protože zrušením jedné skupiny IF linek bychom přišli o jeden unikátní vektor komunikace mezi procesory a jejich čipy.
AMD tak na trh dostává 64jádrové serverové procesory, jejichž samotná vylepšená mikroarchitektura už přináší cca 15% nárůst výkonu na takt (IPC - Instructions per Clock), dále dvojnásobný výkon AVX2 instrukcí a propustnost load-store byla ztrojnásobena díky jedné jednotce AGU navíc (Address Generation Unit) a dvojnásobně rychlému čtení a zápisu.
AMD také mluví o prolomení tzv. reticle limit. Reticle, čili fotomaska, má pro každou fotolitografickou technologii svou maximální velikost, která určí i maximální velikost vyrobeného čipu. Např. pro 12nm technologii, kterou TSMC vyrábí GeForce RTX pro NVIDII, jde o maximum 815 mm2, takže k tomu se už čip na kartě GeForce RTX 2080 Ti značně přibližuje se svými 754 mm2.
Když si tak vezmeme, že EPYC Rome mají 8 cca 74mm2 čipletů a jeden I/O čip, který vydá za cca 5 až 6 dalších takových, máme tu celkem asi 1000 mm2 plochy. Tak velký monolit už bude nad daným limitem fotomasky, i když by pak bylo třeba počítat s tím, že I/O čip by byl stejně jako čiplety ne 14nm, ale 7nm, takže výrazně menší, nicméně zase neznáme omezení pro 7nm proces firmy TSMC. V konečném důsledku jde ale prostě o to, že díky rozkouskování procesoru je takovéto omezení pro AMD naprosto bezpředmětné.
AMD také díky tomu všemu může snadno nabídnout velice rozdílné konfigurace procesorů s ohledem na počet jader a kapacitu cache (viz seznam v první kapitole). Každý čiplet má 8 jader a 32 MB L3 cache, což je pro EPYC minimum v případě modelu 7232P. Ovšem je tu také stále 8jádrový EPYC 7262, ale už se 128 MB L3 cache, což znamená, že byly využity 4 čiplety a v každém zůstala aktivována jen 4 jádra. To je dále spojeno s možností využívat více či méně vydařené čipy a s vhodnou logistikou si tak AMD může zajistit, že nakonec vyhodí do koše co nejmenší počet čipletů.
Z hlediska dosavadního vývoje stále větších monolitických kusů křemíku a jejich zastánců tak jsou EPYC možná slepence, ovšem vzhledem k ekonomickému využití prostředků a možnosti obejít omezení výrobních procesů jde v podstatě o naprostou nutnost pro zajištění dalšího pokroku. Na to ostatně ukazují i kroky Intelu, který se stále více zabývá pokročilými technologiemi pro pouzdření čipů. AMD je však v tomto ohledu napřed, i když zrovna moc nevíme o tom, jakou cestou se bude chtít vydat. Prozatím mu stačí propojení pomocí Infinity Fabric v rámci substrátové destičky pouzdra procesoru, ale co přijde příště? Celé interposery jako pod GPU Vega, aktivní interposery, EMIB, obdoba Foveros, nebo něco úplně jiného? Necháme se překvapit.