Diit.cz - Novinky a informace o hardware, software a internetu

Rozbor snímku jádra Navi 10

Protože si v předvánočním hlasování nemalé procento čtenářů přálo i rozbor mikrosnímku GPU Navi 10 a tato možnost dokonce po část hlasování vedla, podíváme se na „dieshot“ také…

V srpnu 2019 se konala akce HotChips, na kterou si AMD připravila několik prezentací. V jedné z nich se na jednom slajdu objevila část snímku jádra Navi 10 ze 2/3 překrytého fotografií waferu s jádry Vega 20. Zůstalo to velmi dlouho bez povšimnutí, až do prosince, kdy si tohoto detailu všiml uživatel rSkip z webu Beyond3D.

Podstatné je, že v PDF verzi prezentace je skutečně obsažen snímek Navi 10 celý, pouze zčásti překrytý fotografií Vega 20. S použitím vhodného softwaru lze prezentaci rozpitvat a snímek získat celý:

To samo o sobě ještě není žádný zázrak, protože je jen černobílý, s nízkým kontrastem a v nízkém rozlišení, navíc poškozený JPEG kompresí, která zkreslí a poruší poslední detaily. Snímek je tedy potřeba zrekonstruovat AI algoritmy, které opraví poškození JPEG kompresí, snímek zvětší a vrátí detaily, tak jak - se zohledněním limitů těchto technologií - vypadaly před zmenšením. Pak je potřeba ještě pro správný radius zvýšit mikrokontrast, aby trochu vylezly ty správné detaily a máme k dispozici snímek, se kterým se už dá pracovat:

K dotažení CSI: Miami „zoom and enhance“ sice ještě notný kus chybí, ale na takovéto domácí žvýkání je výsledek více než dostačující. Pro ilustraci toho, co zvládnou běžnému člověku dostupné algoritmy, připojuji srovnání níže, kde je (vlevo) 100% výřez původního snímku z prezentace pouze bikubicky zvětšený a (vpravo) 100% výřez po použití AI a úpravy mikrokontrastu:

Výpočetní fotografie má zkrátka potenciál a do budoucna si lze představit i to, že např. procesory v televizích (případně s použitím cloudu) budou schopné video ve FullHD rozlišení převést na velmi slušně vypadající 8k. Ale to už se dostáváme mimo téma, takže raději zpět ke GPU.

Hned úvodem je potřeba říct, že rozbor snímku Navi je komplikovanější záležitost než třeba rozbor snímku Vega nebo Polaris. Výraznější architektonické změny se totiž promítly i do rozložení a podoby některých funkčních jednotek, takže tam, kde nelze příliš uplatnit analogii, je potřeba trocha improvizace, jejíž výsledek může odpovídat realitě, může se jí blížit a stejně tak nemusí být přesný. Více si ale řekneme u jednotlivých částí čipu.

Nejdříve odbudeme, co se nachází na levém okraji jádra, tedy vše, co je na snímku podbarvené hnědým pruhem. Když si tuto část odmyslíte, můžete si všimnout, že bez ní je jádro téměř souměrné - s přimhouřením oka osově a s přimhouřením obou i středově. Hnědá část v sobě skrývá vše, co nesouvisí s 3D, výpočty a pamětmi. Obsahuje všechna IO rozhraní (krom paměťového), obsahuje multimediální procesory (VCN, tedy obvody pro kompresi i dekompresi videa), display pipeline / procesory vytvářející obraz pro jednotlivé výstupy a samotné řadiče a rozhraní pro výstupy DisplayPort a HDMI. Dále pak rozhraní PCIe 4.0 ×16. Na PCIe vypadají čtyři bloky v levém dolním rohu (zvýraznil jsem je sytější hnědou). Pro tři stejná rozhraní při levém okraji čipu (tentokrát zvýrazněná světlejším odstínem hnědé) by se nabízely tři výstupy DisplayPort, ale na to se zdají být až příliš velká, tak toto téma ponecháme zatím otevřené (možná bude mít někdo v diskuzi lepší nápad).

Co je naopak zcela jasné, jsou čtyři široké bloky při okrajích čipu zvýrazněné růžově. Jde o rozhraní GDDR6. Každý blok dosahuje šířky 64 bitů, takže čtyři rozhraní umožňují připojení pamětí s celkovou šířkou sběrnice 256 bitů.

Dvě zelné podkovy pak vyznačují bloky CU (compute units), respektive WGP (work group processor). Jde tedy o směs stream-procesorů, texturovacích jednotek a různých typů pamětí.

V pravém horním rohu zeleného pole je černě orámován jeden WGP (work group processor). Zbytek obou zelených polí tvoří zbývajících 19 WGP. Všechny jsou uspořádané stejně, takže při podrobnějším zkoumání můžete ve snímku najít. WGP umístěné o řádek níže jsou však otočené „nohama vzhůru“, další řádek je zase klasicky a poslední opět otočený. Kdybyste si ale zkopírovali černě orámovanou část, můžete jí skutečně do zbytku zelených polí umístit ještě 19×. Pojďme se na WGP podívat detailněji:

Stále jde o tutéž černě orámovanou část, pouze jsme si tuto část zvětšili. Můžete si všimnout, že všechny prvky, které jsou u levého okraje WGP, jsou i vedle v zeleném poli v sousedním WGP. Stejně tak užší obdélníkový útvar vytvářející spodní část WGP můžete vidět i pod jeho okrajem - v nižším WGP, který je otočen „nohama vzhůru“.

WGP (work group processor) je tvořen dvěma CU (compute units), přičemž některé jejichž části může sdílet a ve standardní konfiguraci, jak je využíván nejčastěji, skutečně sdílí. Pokud byste si svisle středem WGP namalovali osu, pak nalevo od ní vidíte jednu CU, napravo druhou CU. Z čeho jsou tvořené: Každý ze čtyř identických zelených bloků obsahuje 32 stream-procesorů. CU tedy obsahuje 64 stream-procesorů, celý WGP pak 128. Fialová část je vektorový registr sloužící těmto stream-procesorům. Světle modré pole tvoří skalární ALU (pro WGP tedy celkem dvě) a mezi nimi je sdílená LDS (local data share). Dva červené obdélníkové bloky jsou skupiny čtyř texturovacích jednotek (každý blok = 4 TMU). Jak vidíte z okolí, jsou sousední WGP uspořádané vzdy tak, aby spolu bloky texturovacích jednotek sousedily. Nyní zpět na celkový pohled:

Pokud vezmeme v potaz, že krom řečeného jsou ještě v orámovaných strukturách menší prvky, které nejsou natolik výrazné, aby je od pohledu bylo možné identifikovat (scheduler, branch & message unit, scalar register aj.), lze říct, že ze samotného unifikovaného jádra (zelené plochy) tvoří samotné stream-procesory nejspíš podstatně méně než 1/3.

Modré bloky tvoří ROP (RBE). Těch je v jádře celkem 64, takže menší plochy obsahují každá po osmi ROP a větší po šestnácti. Ve větších blocích jsou ROP uspořádané odlišně, takže podobnost struktur není na první pohled patrná. Můžete si ale ověřit, že velké plochy jsou skutečně přesně 2× větší než malé, což toto vymezení potvrzuje.

Tvrdším oříškem je vymezení L1 cache (celkem 512 kB). Pokusem jsou oranžové útvary mající zhruba tvar kladiva. Je téměř jisté, že jejich „rukojeť“ je tvořena L1 cache (měla by navazovat na plochu s CU/WGP), ale u zbývající části si nejsem vůbec jistý a připouštím, že ve skutečnosti může náležet k jiné části jádra, k níž se dostaneme později.

Od L1 cache se v rámci žlutých bloků dostáváme k L2 cache (celkem 4 MB). Navi oproti předchozím architekturám AMD, které měly pouze dvě úrovně cache (L1 na úrovni CU a L2 pro celý čip), zvýšila počet úrovní na tří (L0 na úrovni CU, čtyři L1 - pro každých pět WGP jednu a 4 MB L2 pro celý čip).

Vylučovací metodou nám červená část (možná s částí oranžové) vychází na command processor, rasterizér a geometrické procesory.

Zbývají tak jen dva fialové bloky umístěné mezi GDDR6 rozhraními. Valná část z nich by mohla být tvořena paměťovým řadičem.

Tagy: 

Diskuse ke článku Rozbor snímku jádra Navi 10

Pátek, 3 Leden 2020 - 12:45 | mikeczcom | akorát ten prostředek by se taky musel zvětšit,...
Čtvrtek, 2 Leden 2020 - 14:50 | DRK | "je zaměřená na odhad původního obrazu před...
Čtvrtek, 2 Leden 2020 - 09:52 | MikeM | A pokud by chtěl někdo tvrdit, že se nebavíme o...
Čtvrtek, 2 Leden 2020 - 09:49 | MikeM | Domnívám se, že jde o poměrně zásadní nepochopení...
Středa, 1 Leden 2020 - 19:13 | rathanuviel | No, tak Turingovým testem by to asi neprošlo, že...
Středa, 1 Leden 2020 - 16:37 | 6xALU Apple A13 | Však já to chápu. Jenže AI, nebo-li neuronové...
Středa, 1 Leden 2020 - 13:24 | Gath G | "Sám od sebe si žádný nový algoritmus...
Středa, 1 Leden 2020 - 12:28 | Ji Si | Jak už jsem psal výše, jde jen o to, zda toto...
Středa, 1 Leden 2020 - 08:23 | Anonym | Díky za info.
Středa, 1 Leden 2020 - 01:22 | rathanuviel | Stejně jako já jste nepochopil původní sdělení -...

Zobrazit diskusi