Sampler hardware
Každé výraznejšie zvýšenie výkonu shader core, voči predchádzajúcej architektonickej generácii sa musí odzrkadliť aj na zvýšení výkonu a schopností inej časti čipu. Nie je preto prekvapením, že sa viditeľne zvýšili schopnosti a výkon práve samplerov voči R580 alebo R520. Takisto môžno argumentovať, že to čip R600 aj potreboval pri pohľade na sampler hardware konkurencie – G80.
Čip R600 obsahuje štvoricu výpočtových jednotiek, ktoré sú väčšinou nazývané nie celkom presne texturovacími jednotkami (TMUs). My ich ale nazývame presnejšie „samplermi“ ,nakoľko odzrkadluje tento názov ich väčšie schopnosti filtrovať a adresovať ako by ste od textúrovacej jednotky očakávali.
Každá sampler jednotka dokáže adresovať 8 adries, fetch 16 FP32 hodnôt pre bilineárne filtrovanie a 4 FP32 hodnoty pre point sampling, všetko samozrejme za 1 takt. Teda vykonávať bilineárne filtrovanie s výkonom 4 INT8 alebo 4 FP 16 bilerps za takt z týchto fetch hodnôt. Neverte tomu čo ste mohli inde čítať o tom, že R600 vykonáva FP 16 filtrovanie s polovičným výkonom – nakoľko to nie je pravda. INT16 s 3 alebo 4 kanálmi ale čip nevie počítať s plnou rýchlosťou. Benchmark výsledky tieto tvrdenia potvrďujú – INT8 a FP 16 bilineárne filtrovanie s 1 až 4 kanálmi vykazujú rovnaké hodnoty.
Pokiaľ sa teraz zameriame na unifikovaný data fetch v shaderoch, dokáže čip vykonať Fetch4 fetch namiesto bilineárneho fetch za 1 takt. Ako bolo spomínané už na predchádzajúcej strane – každá sampler jednotka je „priviazná“ k určitému sub „quadu“ v shader clustery a odovzdávaja jemu potrebné dáta. Podporované je samozrejme aj 32-bit RGBE filtrovanie (nakoľko si to vyžadujú Direct3D 10 špecifikácie), aby mohli vývojári použiť tento formát pre HDR rendering vo svojich nových enginoch. Okrem toho všetkého dokáže čip pristupovať k veľmi veľkym - až 8Kx8K textúram, pre fetch alebo filtrovacie operácie.
Všetky fetch a filtrovacie schopnosti sú dostupné pre každý druh threadov, nakoľko nevedia sampler jednotky rozoznať čo ich využíva. Každá sampler jednotka má dosah na 32KiB lokálnu pamäť L1 cache a zdielanú L2 cache veľkosti až 256KiB, aby sa minimalizovali „misses“ (straty) L1 cache a maximalizovali „hits“ (zásahy).
Čip využíva okrem toho vertex cache pre urýchlenie nefiltrovaných fetch-ov. R600 podpruje tie isté dekompresné formáty z pamäti cache ako R580 pre DXT formáty a 1, 2 kanálové „hĺbkové“ formáty od ATi.
Všetky filtrovacie stupne sú dostupné pre všetky podporované formáty spolu s nelineárnymi. Napriek týmto vylepšeniam sa výraznejšia vylepšenia nedotkli AF (anizotropného filtra). HQAF R5xx série je teraz štandardne pri R600 zapnuté. Takisto sa mierne zlepšila presnosť 16xAF a bolo odstránených pár bugov, ktoré spôsobovali v určitých scénach shimmering textúr. R600 vykazuje napriek tomu v AF testerovi takmer identický obraz ako R580/R520. Má rovnaký výber mipmap levelov a v určitých uhloch (podotýkam veľmi ostrých) nefiltruje matematicky korektne 16x ale len s nižším AF. Kvalita AF R600 zostáva napriek tomu subjektívne na vysokej úrovni, ale objektívne je AF konkurencie – G80 lepšie. R600 podporuje aj urýchľovanie depth stencil textúr a PCF, vďaka čomu získavajú karty založené na tomto čipe v benchmarku „3DMark 2006“ viditeľný prírastok výkonu za 1 takt.
Počet jednotiek a ich fetch, filter výkon je v tomto čipe vyšší ako v R580, napriek tomu je toto oblasť v ktorej R600 (niekedy až veľmi) zaostáva za výkonom sampler jednotiek G80. Sampler jednotky pracujú na base frekvencii 742MHz ako zvyšok čipu. U G80 s jeho ortogonálnym sampler hardwarom je filtrovací výkon len záležitosť, ktorá závisí od dostupných bilerps za 1 takt, pokiaľ neberieme v úvahu priepustnosť pamäte.
Samozrejme netreba zabúdnúť, že sampler hardware R600 nepracuje s inými výpočtovými jednotkami v pevnom poradí – je „fully threaded“. Obsahuje arbiter a sequencer určený výhradne pre sampler jednotky. Je to hardware podobný tomu, ktorý má každý shader cluster v shader core, ale s rozdielnou heuristikou riadenia spracovávaných threadov. Práve vďaka tomu, že je sampler array „fully threaded“ sa mu darí skrývať latenciu, využívajúc pamäťový radič , aby bolo zaistené vyťaženie shader core, ktorý predstavuje clienta sampler array cez pamäťový radič. Pamätáte sa ešte na to ako som písal, že shader core môže dať uspať a odložiť thready pokiaľ čaká na sampler dáta? Tie dva schedulers spolupracujú, aby bolo zabezpäčené práve toto uspatie. Lebo prístup k pamäti DRAM pre získanie dáta a nasledovné odoslanie cez obvody pre filtrovanie môže stáť až stovky voľných taktov. Veď nechceme predsa nechať zbytočne čakať shader core.
Ďalej sa pozrieme na ROPs.
subz3ro
gabriel
epto
Pavol Bobik
MichiGen
koro
Ryko
glide
thimy
A2C
noben
cpy
teho
Dwarden
crux2005
mirke
Dwarden
crux2005