Hlavní stránka Hardware Grafické karty Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB
Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB
autor: Z. Obermaier , publikováno 9.1.2012
Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

Radeony HD 6900 jsou na trhu už rok, a byl tedy čas na výměnu. Nový Radeon HD 7970 se jasně stává nejvýkonnější grafickou kartou s jedním GPU. Nechá za sebou Radeon HD 6970, ale i GeForce GTX 580. My vám představíme prodejní verzi od Asusu, námi přetaktovanou na 1300 MHz pro GPU a 7900 MHz pro paměti, ve 25 hrách.


Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

První obrázek ukazuje, kam se dostává architektura grafických čipů v současnosti. Od starých čipů s pevně danými funkčními jednotkami se vývoj posunul k jednoduchým shaderům opět s pevně danými funkcemi. Už mnoho let nazpět jsou ale GPU mnohem pokročilejší a používají unifikovanou a také paralelní architekturu. AMD ale posouvá tento koncept dále, opouští nyní léta prověřený model VLIW architektury a nasazuje zcela nové GCN. Důvod opuštění VLIW je prostý, pro čistě herní výkon je tato architektura více než dostatečná. Pro výpočetní použití je ale složitá a neefektivní. Aby v AMD mohli nabídnout nejen vysoký herní výkon, ale i vysoký výpočetní výkon využitelný v aplikacích, museli VLIW zrušit a postavit GCN na kombinaci vektorové a skalární architektury.

Hlavní specifikace čipu Tahiti

Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

Když se podíváme na schéma čipu Cayman a Tahiti, mnoho se na první pohled neliší. Jde ale pouze o schémata, realita je dost odlišná. Hlavní část jádra Tahiti se skládá z bloků, které v sobě nesou výpočetní jednotky, texturovací jednotky, cache a další důležité součásti. Tento blok se nyní nazývá CU (Compute Unit) a na obrázku jej vidíte jako černé pole s nápisem GCN. U starších architektur AMD nazývalo tento soubor jednotek jako SIMD Engine. Počet CU bloků je v jádru Tahiti 32, což dává celkový počet 2048 výpočetních jednotek. Jádro Cayman mělo 24 SIMD Engine bloků s 1536 (384× vec4) jednotek. CU jednotka nyní obsahuje kromě vektorových jednotek i jednu skalární, více si o tom povíme až u dalšího obrázku. Nárůst výpočetních jednotek je tedy 33 procent, stejně narostl i počet texturovacích jednotek spřažených s každým CU blokem. Z původních 96 u čipu Cayman je jich nyní 128. Ty se proti minulé generaci nijak nezměnily a stále zvládají 64bit (FP16) HDR texturing na poloviční rychlosti a 128bit (FP32) čtvrtinovou rychlostí.

Další podstatnou částí čipu je paměťový řadič (ve schématu dole). Původní byl 256bitový a ten současný se o 50 procent rozšířil na 384 bitů, tedy na šířku, kterou používá i GeForce. Tímto krokem při použití stejně rychlých modulů jako u Caymanu dosáhlo AMD gigantické propustnosti 264 GB/s. Zde je otázka, proč vlastně AMD takto zvýšilo propustnost paměťové sběrnice a čemu to pomůže. V určitých situacích je pro 32 ROPs 256bit sběrnice limitem, stejně jako textury využijí vyšší propustnost. Největší devizou ale bude rychlejší přístup do paměti pro některé GPGPU aplikace.

Dlouho před uvedením se veřejnost přela o počtu ROP (RBE) jednotek. Jelikož výrobce oddělil tyto jednotky od paměťové sběrnice, mohl jejich počet zůstat nezměněn. 32 ROP jednotek v žádném případě nebylo „brzdou“ čipu Cayman, takže nebyl důvod jich dávat do čipu více. Fillrate stávajících 32 jednotek je totiž velmi vysoký a je vyšší než u 48 ROP jednotek u Fermi. Více jednotek by jen zbytečně zvětšilo stávající čip, ale k většímu výkonu by nepomohlo.

Celý čip pak řídí Command procesor (nahoře). Ten má na starosti jak grafickou část (3D), tak výpočetní část. I když se z předchozí věty může zdát, že jádro má nějaké jednotky vyhrazené jen výpočtům a jen 3D, tak to tak není. Všechny CU bloky jsou určené pro obě oblasti. Pro 3D pak samozřejmě pouze texturovací a další jednotky. O řízení výpočtů v CU jednotkách se pak starají dva ACE procesory. Ty jsou plně nezávislé, paralelní a mají na starosti pouze výpočty (ne 3D). Grafická část pak dokáže zpracovat dva trojúhelníky s teselací nebo bez za takt, stejně jako Caymanu (GF100 umí čtyři za takt). Teselátory jsou také stále jen dva, byly ale notně vylepšeny. Větší cache, využití stávajících trojúhelníků a další optimalizace přináší významně vyšší výkon v teselaci. Více se tím ještě budeme zabývat. Výkon ale dle AMD narostl až proti čipu Cayman.

Zde ještě technická data čipu. Ten je vyroben 28nm technologií v TSMC a nese 4,31 miliard tranzistorů. Plocha čipu je přibližně 365 mm čtverečních, je tedy menší proti 389 mm u čipu Cayman. Vzniká na 300 mm wafferech, jejichž ceny je někde kolem 5000 dolarů za kus. Na jeden křemíkový plát se vejde čipů Tahiti kolem 130 kusů. Pokud budou všechny v pořádku (což je téměř nemožné), bude cena jednoho GPU zaplacená TSMC necelých 40 dolarů. My ale nevíme, zdali AMD platí za celý waffer, nebo jen za některé z čipů na něm. Cena může být nakonec zcela jinde, a to směrem nahoru i dolů.

Architektura GCN

Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

Druhý obrázek ukazuje detail jednoho CU bloku, který je základním kamenem výpočetního jádra čipu. AMD používá VLIW architekturu od dob jádra R300 v Radeonu 9700 Pro. Architektura VLIW je ale obecná architektura, která je využívána nejen v GPU, ale i společně s mnoha běžnými procesory (většinou v industriální sféře). Jde o alternativu k x86 a dalším architekturám. Zvolení VLIW bylo před lety v podstatě jedinou cestou k možné paralelizaci kódu, tehdy ještě jiné architektury multi-thread instrukce nijak zvlášť nepodporovaly.

I když jde původně o architekturu relativně složitou na implementaci a kompilaci, časem se dostala do velmi flexibilní podoby, kterou využívají GPU od AMD dodnes. Poslední variace VLIW-4 je značně efektivní. Základem VLIW (což značí už její název) Very Long Instruction Word je dlouhé komplexní instrukční slovo delší než 32 bitů, které je samo o sobě složeno z částí (fields) dalších mnoha operací. Délka jedné celé instrukce je daná pevně a u architektury VLIW-5 je tato rozdělena na pět různých operací, které je možné spustit paralelně. Tento systém nazýváme u Radeonů vektorový (vec5, vec4), který je diametrálně odlišný od skalárního použitého v GeForce. GPU u VLIW nemusí kontrolovat, zdali je možné spustit úlohy paralelně, jelikož o to, aby to šlo, se stará kompilátor. Ten také volí pořadí operací, aby byly v čipu vykonány ve správném pořadí a efektivně. Kompilátor je zde tedy nejdůležitějším prvkem celého procesu programování.

Hlavním rozdílem mezi VLIW a GCN je práce s instrukcemi v jednom taktu. U jádra Cypress bylo možné v SIMD bloku naráz provést pět operací za takt ze šestnácti možných. U jádra Cayman pak bylo možné provést čtyři operace za takt, opět ze šestnácti možných. U GCN je ale výpočetní blok rozdělen na čtyři SIMD bloky (každý se čtyřmi výpočetními jednotkami). Za jeden takt lze tedy najednou vykonat všech šestnáct operací. Pokud se podíváme na SIMD bloky podrobněji, jsou v jádru Tahiti a Cayman naprosto stejné. Instrukce jsou zde řazeny ve skupinách po 64, říká se jim wavefront. Ty jsou dále děleny na skupiny po 16 a ty scheduler přiřadí jednotlivým SIMD. U čipu Cayman bude jedna tato skupina (16) vykonána jedním SIMD za čtyři cykly. U čipu Tahiti je ale celá skupina vykonána v jednom cyklu. Celý wavefront je tedy vykonán za poloviční čas než u čipu Cayman.

Latence se sice snížily na polovinu (z osmi na čtyři cykly), dochází ale k jistému zpoždění v CU blocích. Jádro Cayman může začít vykonávat instrukce na všech výpočetních jednotkách současně, to ale Tahiti neumí. Scheduler umístěny v každém CU bloku (na obrázku nahoře oranžový obdélník) může přiřadit vykonání instrukcí pouze jednomu SIMD bloku za takt. Pokud už první SIMD pracuje, druhý nabere jeden cyklus zpoždění, třetí SIMD pak dva cykly a poslední tři cykly zpoždění. To znamená jistý propad výkonu v řádu procent, jež je ale vyvážen nižšími latencemi celého jádra.

Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

Na obrázku vidíme srovnání VLIW-4 a GCN architektur. Všimněte si zejména dvou malých obrázků nad hlavním polem s textem. U VLIW-4 se instrukce provádí postupně, po částech v každém ze SIMD bloků. Každý blok vykonává části ze všech úloh. Často je nutné aby jedna instrukce navazovala na předchozí, je nutné tedy čekat na vykonání. U GCN se všechny instrukce provádí celé a není nutné tedy čekat na vykonání jinými SIMD bloky. Důležitá je zde také zmínka o kompilátoru. Již jsme hovořili o faktu, že VLIW-4 procesor (GPU) musí mít kód precizně připraven kompilátorem, jelikož se sám nedokáže rozhodnout, v jakém pořadí instrukce vykonat. To vše mu musí říct kompilátor při přípravě kódu. Kompilátor i programátor tak musí psát této architektuře kód přímo na „tělo“, pokud chce také adekvátní výkon. U GCN je to mnohem jednodušší, kdy se dá výkon jasně předvídat. V jakých situacích bude GCN efektivnější než VLIW-4 nám ukáže tabulka:

Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

Ta ukazuje modelové případy. Zcela nahoře je počet spuštěných skupin instrukcí v každém CU bloku. Čísla ve sloupcích pak ukazují počet cyklů potřebných k vykonání úlohy. Vidíte, že počítáme se dvěmi, čtyřmi a osmi skupinami z jednoho wavefrontu. Pokud budeme chtít vykonat skalární instrukci, tak vidíme, že GCN je zde vždy rychlejší, a to dost významně. To dokazuje, že architektura GCN bude ve výpočetních úlohách významně rychlejší než VLIW-4. Efektivita je mnohem vyšší. Další dva případy vektorových instrukcí typických spíše pro 3D grafické úlohy ukazují, že v určitých momentech je VLIW-4 čipu Cayman rychlejší. U vec3 instrukcí je ještě převaha na straně GCN, u vec4 už je to hodně vyrovnané. Běžná grafická zátěž her využívá nejvíce vektorové instrukce, herní výkon čipu Tahiti může být někde horší a někde lepší než VLIW-4. Hlavně u starších her nepoužívající teselaci a pokročilé novinky by mohl být čip Cayman efektivnější.

Paměti cache

Nový drtič výkonu v testu – Asus Radeon HD 7970 3 GB

O paměťovém řadiči jsme již hovořili, hlavní framebuffer ale není samozřejmě jedinou pamětí Radeonu HD 7970. Bylo řečeno mnohokrát, že AMD chtělo vylepšit nejen grafický výkon ve 3D ale hlavně výpočetní možnosti čipu. Vydali se směrem, jaký ukázalo Fermi. Nedílným nutným předpokladem bylo přepracování systému cache a podpora ECC. Chráněna je nyní L1, L2 cache a také hlavní framebuffer (u herních grafiky vypnuté).

Struktura pamětí cache se změnila. Původní texture cache se přeměnila na L1 cache o kapacitě 16 kB sdílenou mezi texturovací jednotky a SIMD bloky. Každá skalární jednotka má vlastní 4kB cache, ta je implementována jako 16kB cache sdílená čtyřem CU blokům. Celý čip obsahuje čtyřicet 16kB L1 cache spojených 64 byty za takt s částí L2 cache vyhrazené danému bloku. Sdílená paměť každého CU bloku (Local Data Share) se ze stávajících 32 kB zvětšila na 64 kB. Tato paměť má přímý přístup do L1 cache CU jednotky, kdy může nahrávat data bez použití SIMD. Naopak počet registrů každého CU bloku se nijak nezměnil a zůstal na šířce 64× 32 bit.



 
Komentáře naleznete na konci poslední kapitoly.
186 čtenářů navrhlo autorovi prémii: 73.8Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.