R600 pod drobnohľadom

Threading a Branching


 

Jednotku, ktorú nazývame „cluster dispatch processor“ má na starosti riadenie výpočtov v shader core clusteroch (AMD/ATi ich nazýva SIMDs). Podobný procesor sa nachádza v sampler array. Tieto bloky logických obvodov riadia threading model v R600, zakrývajú latenciu a snažia sa udržiavať tok inštrukcii a dát cez celý čip.

Vstup zo setup enginu predstavujú tri rady príkazov, jeden pre rozdielny druh threadu. Tieto rady príkazov obsahujú thready, ktoré dispatch hardware necháva spracovávať shader core. Každý cluster obsahuje dvojicu ariber-ov, ktoré spracuvávajú dvojice objektových threadov za dobu 4 vykonaných taktov predtým, než sa načítajú nové thready a sú spracovávané. Zaznamenávanie threadov (thread tracking) pre výpočet je kontrolované systémom, ktorý necháva hardwaru vykonávať thready v cluteroch neusporiadane. Zaznamenáva závislosti a iné parametre (aké operácie sú vykonávané, do ktorých registrov sa zapisuje, z ktorých sa číta), aby vedel rozhodnúť, čo sa bude vypočítavať ako ďalšie, namiesto momentálne vykonávaného threadu.

Základná heuristika je nastavená tak, aby sa shader thready, ktoré čakajú na sampler dáta uspali, zakryla sa latencia a vykonali sa nerušene shading operácie.

Pár sequencer-ov (1 pripadá na každý arbiter) vo vnútri dispatch procesora je tu preto, aby zaznamenával cestu threadov vo svojich blokoch, ktoré sa vypočítavajú. Dáta zo sequencer-a, ktoré sa dostávajú do arbiter-a mu dávajú vedieť, kedy je thread skoro kompletne hotový a je možné ho narhadiť novým.

R600 podobne ako iné architektúry zníži počet threadov v akomkoľvek čase, pokiaľ je silný nával na register. Teda nedochádza k brzdeniu („stall“) threadov z dôvodu preplneného registra.

Dynamic branching granularita je 64 pixelov a najvačší výkon sa dosahuje pri použití 4x4 quad blokov usporiadaných na obrazovke (čiže 8x8 pixelov). Pri použití branching shaderov s iným usporiadaním textúr pre sampling v shadery napr. 32x2, 16x4 alebo 2x32, 4x16 dochádza k strate výkonu.

Bloky inštrukcií a konštanty sú udržiavané dispatch procesorom vo vnútri čipu – v určených virtuálnych pamätiach cache. Využívajú sa preto, aby sa maximalizovala efektivita a aby mohol hardware prijať tak rýchlo stav threadu, ako je to len možné. Každý „miss“ (strata dát, ktoré boli potrebné, ale nie sú v pamäti cache) pamäte cache tu spôsobí, že thread, ktorý potreboval dané dáta sa „uspí“. Iný thread sa presunie na jeho miesto a potrebné dáta sa fetch-nu do cache, aby boli pripravené pokiaľ sa thread opäť „zobudí“. Cache „miss“ tu môže takisto spôsobiť, že sa zníži priorita threadu, čiže sa thread nemusí zobudiť po tom, ako ho thread za ním vymenil.

Pokiaľ sa pozrieme na množstvo threadov, ktoré sa dostáva len do shader core, tak sa hardware musí vedieť vysporiadať až s tisíckami threadov (ktoré môžu obsahovať aj stotisíc objektov). Pre sampler thready je heuristika jednoduchšia, nakoľko tu nemôže nastať silný nával na register. Je tu ale požiadavka, aby boli potrebné dáta v správny čas v správnej pamäti cache. Preto tu nenastáva refetch z dôvodu cache „miss“ a priepustnosť čipu je vysoká, zakrývajúca latenciu data fetch a každého filteringu po fetch.

To, že threading model pracuje dobre je aj zásluha pamäťového radiča a jeho schopnosti riadiť a zoraďovať dáta z hlavného pamäťového bloku („main pool“) spolu s DRAM blokom na grafickej karte ku klientom, ktorý si vyžadujú potrebné dáta a následne ich zapamätajú. Teraz sa pozrieme na shader core.


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