R600 pod drobnohľadom

Shader core




Čip R600 obsahuje štyri takéto clustre, alebo inak povedané 4 SIMD (single instruction multiple data) arrays. Dokopy teda 320 nezávisle pracujúcich ALUs určených pre shading s nasledovným usporiadaním. Každý cluster obsahuje 16 shader jednotiek z ktorých každá obsahuje 5 sub sklárnych ALUs, ktoré vypočítavajú shading operácie. Každá táto ALU môže počítať nezávislé operácie za takt. Na rozdiel od väčšiny predchádzajúcich čipov pracujú 4 ALUs „vertikálne“ a 1 výkonnejšia ALU, ktorá sa stará aj o SFUs „horizontálne“. Vďaka čomu sa skracuje výpočtový čas, pokiaľ nie je nutné vypočítať toľko nezávislých inštrukcií na pixel za takt ako je kanálov. Takisto aj vyťaženie jednotiek je lepšie. Znázornené pomocou RGBA a SFU v nasledujúcom obrázku:

R600 využíva vďaka VLIW (Very Large Instruction Word) paralelnosť inštrukcií. VLIW design čipu má možnosť zabaliť až 6 inštrukcií za takt, pre každú shader jednotku. (5 shading + 1 branch inštrukciu) do hotových inštrukcií pre shader core.

Compiler a assembler vykonávajú pri tom veľa úkonov ako balenie operácie a ich správne usporiadanie čo znižuje celkovú efektivitu hardwaru v porovnaní so skalárnou architektúrou G80. Všetky ALUs ale nemajú rovnaké schopnosti. 5. ALU v skupine má väčšie množstvo schopností ako ostatné štyri a vie pracovať okrem toho nezávisle.

 
Vďaka branch execution jednotke, ktorú poznáme už z „R520“ nie sú blokované iné sub skalárne ALUs pokiaľ dochádza k dynamic branchingu (napr. pomocou príkazou when/if).

Každá zo štyroch sub ALUs je schopná poslať ďalej hotovú single precision MADD (takisto ADD, alebo MUL) s pohyblivou rádovou čiarkou (floating point), dot produkt (dp) a celočíselnú (integer) ADD za takt. ALUs majú presnosť pre výpočty s pohyblivou rádovou čiarkou 1 ULP pre MADD a ½ ULP pre ADD a MUL. Tieto ALUs nepodporujú 32-bit mantisu. Majú len 1 cestu dát von a dnu zo sub ALU, takže tu nie sú žiadné paralelné výpočty . Denormy sú nastavené na 0 pre Direct3D 9 aj 10, avšak hardware podporuje inf. a NaN podľa IEEE 754 špecifikácií.

5. väčšia ALU nedokáže spracovať dot produkt operácie, avšak je schopná vykonávať celočíselné delenia (integer division), násobenia (MUL), posúvanie bitov (bit shifting) a stará sa o špeciálne funkcie (ako: sin, cos, pow, log, rcp, exp atď). Tieto operácie dokáže ukončiť za 1 takt. (toto platí aj pre väčšinu špeciálnych funkcií) Takisto je zodpovedná za konverzie celých čísel na čísla s pohyblivou rádovou čiarkou a späť (convert). Na rozdiel od ostatných jednotiek pracuje táto vnútorne dokonca s presnosťou FP 40 (32-bit je mantisa a 8-bit exponent). Vďaka tomu vypočíta MUL/MADD operácie na INT32 pod Direct3D 10 za jeden takt. G80 by potreboval na tento výpočet až 4 takty. To je výhoda mať VLIW architektúru a rôzne druhy výpočtových jednotiek.

 
Každý cluster spracováva väčšinou páry threadov s rovnakým druhom za takt. Napriek tomu dokáže každý z týchto 4 clusterov sprácovávať rozličné druhy threadov, pokiaľ je to nutné. Začiatok čipu (front end) pracuje s load balancingom threadov naprieč celého jadra ako bolo už vyššie spomínané a nie je nič čo by zabráňovalo tomu, aby boli všetky thready len pixel, vertex, alebo geometry.

Pre lokálny prístup k pamäti dokáže shader core čítať a zapamätávať dáta z/do obrovitánskeho registra, ktorý zaberie na čipe väčšiu plochu ako samostatné ALUs shader core. Prístupy môžu prebehnúť v „skalárnej“ podoby (čiže jedno 32-bit „slovo“ aplikácie) alebo až v podobe 5 kompletne ľubovolných inštrukcií. Vďaka tomu je tvrdenie ATi o super skalárnej architektúre R600 úplne oprávnené. Shading výkon s použitím viacerých registrov je preto veľmi dobrý a nezaznamenáva poklesy ani pokiaľ shader využíva nepárne registre. Je to zatiaľ určite jeden z highlightov architektúry. Prispieva okrem toho k potenciálne veľmi dobrému GPGPU (General Purpose Computation on Graphics Processing Unit ) výkonu R600.

Pri prístupe k registrom (čítaní a zapisovaní) sa využíva 8KiB univerzálna a veľká pamäť cache. Cache predstiera hardwaru register, efektívne – ako keby každý údaj v pamäti cache bol údajom v oveľa väčšom registry. Nie je jasné, či sa využíva prefetching, ale je jasné, že hardware sa snaží maximalizovať „hits“ (zásahy). To znamená, aby sa boli potrebné údaje už v pamäti cache a vďaka tomu sa využila jej rýchlosť.

Podľa všetkého využíva čip túto pamäť cache aj pri streamoute pamäti Vram, aby mohol shader core podporiť color buffer a ROPs pri prístupe k pamäti. Takisto je táto cache využívaná pre R2VB a prebytku rozširovania GS.

Prechod na 5 sub skalárnych ALUs umožnil AMD/ATi viac flexibility v rozvrhovaní inštrukcií v porovanní s predchádzajúcim hardwarom. Avšak táto väčšia flexibilita sťažuje prácu (zapisovanie) compileru a programátorom grafického ovládača, nakoľko má viac možností ako zabaliť inštrukcie. Takisto je vďaka 5 sub skalárnym ALUs shader core optimalizovaný pre vertex shading, nakoľko sú práve dané operácie väčšinou 5D.

Zhrnuté a podčiarknuté. Dostávame shader core s veľmi veľkým výkonom a veľkou peak hodnotou aritmetického výkonu. Stačí si predstaviť to veľké množstvo aritmetických jednotiek, ich pracovnú frekvenciu a obrovský register. Vyjadrené v číselnej hodnote: 64 shader jednotiek x 10 Flops x 0.742GHz = 475 GFlops/s (floating point operácií za sekundu).


 

Pokiaľ teda porovnávame len max. (peak) hodnoty aritmetického výkonu je GeForce 8800GTX výkonnejšia. Všetko sa ale obracia, pokiaľ počítame len čisto MADD výkon týchto grafických kariet, nakoľko je vo väčšine prípadov 2. MUL jednotka G80 vyťažená korekciou perspektív.

Kvôli tomu veľkému výkonu ale bude softwaru trvať dlhšie, aby ho vedel maximálne vyťažiť a využiť. Nehovorím ale, že je to nemožné – to nie. Bude to ale oveľa ťažšia úloha pre driver team, vyvíjajúci ovládače v porovnaní s predchádzajúcimi čipmi aby sa o to staral počas „života“ čipu.

Pozrime sa teraz na prístup k pamäti Vram zo sampler hardwaru. Sampler jednotky nie sú „priviazané“ k jednotlivým shader clusterom, ale k určitým pozíciám vo vnútri shade clusteru. Pokiaľ si predstavíte 16 shader jednotiek v jednom clusteri ako 4 quady, tak každá zo 4 sampler jednotiek v R600 je práve priviazaná k jednému tomuto quadu.Takto sa to opakuje v celkom shader core.


 
Práve sampler hardware je to, na čo sa pozrieme ako ďalšie.

Komentáre (18)
subz3ro
Good work, cruxo. Opäť sa ukazuje, kto je u nás odborníkom v oblasti technológií grafických kariet :)
gabriel
Tak musim pochvalit -> clanok je po stranke obsahovej fantasticky na svoje si pridu urcite vsetci ako bezni tak aj velmi narocni citatelia. Co je vsak este lepsie je forma akou je clanok pisany -> tentokrat je to resp. to precita aj bezny clovek.
epto
fiha. riadne dlhy clanok. aj ked musim sa priznat, mne obycajnemu cloveku vela pojmov nic nehovorilo. nemozem povedat, ze som v oblasti PC "lama". PC pouzivam uz roky, zhruba 15-20 som ich uz aj poskladal. ale moj zaujem o vykonnu graficku kartu uz nie je na prvom mieste nakolko PC vyuzivam hlavne na pracu. tymto nechcem clanok kritizovat, len ze som niektore casti rovno preskocil a precital az vyhodnotenie.
Pavol Bobik
Ano, dobra recenzia, klobu dole :)
MichiGen
Naozaj skvely rozbor, myslim ze vsetko dolezite sa podarilo v tejto recenzii obsiahnut :)
koro
good job
Ryko
Tak musim zatlieskat cruxovi... uz davno som necital tak kvalitne spracovyn clanok v oblasti graf.kariet... absoutne vycerpavajuce informacie o zlozeni a fungovani chipu... imho by to mozno chcelo vysvetlit niektore odborne pojmy, aby bol clanok pristupnejsi pre sirsie spektrum ludi... lae zas takych clankov je na nete dost... este raz vdaka za squele citanie...
glide
proste perfektne
thimy
Nebolo by odveci opravit: 12 - Custom Filter AntiAlaising Premysliet zakladnu myslienku, spracovat podklady a vôbec napisat takyto clanok muselo zabrat kopu casu. fakt respect
A2C
Klaniam sa
noben
....asi nepoviem nič, lebo mám stále otvorené ústa a oči vyplešťené na monitore....
cpy
Musim uznat tak dobre a vystizne zrobenu recenziu som este necital (alebo si nepamatam zeby som taku cital) Tie videa na porovnanie su fakt vybornym doplnkom recenzie.
teho
vrela vdaka za super clanok na slovenskom nete nevidaneee.
Dwarden
clanek pekny, ale skoda tech starych ovladacu, bylo by fajn otestovat znovu s nadchazejicim ovladaci 7.8 (uz RC3 ukazuje znacne zlepseni ve vykonu 2xxx serie pri pouziti AA, take je tu novy AA mod k dispozici od ovladacu 7.7)
crux2005
Žiaľ, potom by sa dalo čakať v podstate donekonečna. Samozrejme na prepad výkon s AA a novými ovládačmi sa v blízkej budúcnosti pozrieme ;-) "take je tu novy AA mod k dispozici od ovladacu 7.7" Aký nový AA mod máte na mysli ?
mirke
Tak konecne som si nasiel cas to precitat a musim uznat, ze z mojho pohladu sa jedna o kvalitnu a rozsiahlu recenziu, ktora pokial viem nema na nete obdoby. Patri ti velka poklona odo mna. Inac velmi rad som pomohol, mozno aj nabuduce zase s novym highendo od ATI :D
Dwarden
nejde mi o nekonecne cekani spis o o to, ze test byl proveden na 7.5 coz znaci 3 mesice zpet tj. otazka zni proc ne 7.6 nebo 7.7 jinak ten novy AA je popsan v seznamu zmen u 7.7 " 12x and 24x Anti-Aliasing support for the ATI Radeon™ HD 2900 XT and ATI Radeon™ HD 2600 Series This release of Catalyst™ introduces support for 12X and 24X Anti-Aliasing for the ATI Radeon™ HD 2900 XT, and ATI Radeon™ HD 2600 Series. These new Anti-Aliasing settings are available through the new Anti-Aliasing Edge Detect Filter. Selecting 4X Anti-Aliasing plus selecting the Edge Detect filter deliver the equivalent of 12X Anti-Aliasing. Selecting 8X Anti-Aliasing plus selecting the Edge Detect filter deliver the equivalent of 24X Anti-Aliasing. " dalsi co jsem mel na mysli je moznost aktualizace vysledku testu napr. tedy az vyjdou 7.8 s komentarem typu "AMD.ATI evidentne zlepsuje/zhorsuje ovladace" :) a napriklad pridat test kvality prehravani videa :)
crux2005
Ovládač Catalyst 7.5 sme boli nútený použiť, nakoľko predstavoval v dobe testovania najaktuálnejšie WHQL ovládač. Catalysty 7.7 sme nemohli použiť nakoľko sa objavili až testne pred uverejnením článku. Okrem toho sme sa pozreli aj na výkon Catalystov 7.6, avšak v daných testoch sme nezaznamenali voči Catalystom 7.5 žiadne výkonnostné zmeny. Pokiaľ si pozorne čítal, tak si si určite všimol, že som túto zmenu spomenul v článku ;-) "Okrem toho je od Catalystu 7.7 dostupný štandardne aj edge detect mód. (Poznámka: my sme museli pre testovanie kvality EDCFAA použiť ešte beta ovládače a špeciálnu utilitku, ktorá nám túto možnosť sprístupnila)" Ďakujem za návrhy, budem určite rozmýšlať na ich možnom spracovaní. btw: každá pozitívna odoza ma samozrejme teší :)
Pridať nový komentár
TOPlist