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.
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.
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.
subz3ro
gabriel
epto
Pavol Bobik
MichiGen
koro
Ryko
glide
thimy
A2C
noben
cpy
teho
Dwarden
crux2005
mirke
Dwarden
crux2005