Nové TMUs, nové ROPs:
Vysoký výkon shader-core by bol málo platný, keby nemal čip aj dostatočný textúrovací výkon. G80 by mal podľa obvyklého spôsobu počítania 32 TMUs (24 pri GTS). Pričom každá TMU dokáže za takt počítať dva trilineárne sample. Tieto dva sample však musia pochádzať z tej istej textúre. Takto sa dá trilineárne a anizotropné filtrovanie urýchliť. Trilineárne anizotropné filtrovanie by sa dalo ešte dodatočne urýchliť. Či nVidia túto (a úplne legálnu) optimalizáciu použije, aby ušetrila pri trilineárnom anizotropnom filtrovaní 25% samplov sa musí ešte zmerať.
Vychádzať z predpokladu, že G80 má vlastne "64 TMUs" nie je správne, nakoľko je za takt možné vytvoriť maximálne 32 filtrovaných texel-ov. Tieto 32 TMUs sú však lepšie ako 32 trilineárnych TMUs, pretože je urýchľované aj AF. NV10 (GeForce 256) mohla pri podobnom systéme urýchľovať len trilineárne filtrovanie. S urýchlením trilineárneho filtrovania sa samozrejme urýchli trilineárne AF. GeForce4 Ti nemohla ako jediná výnimka s dvoma bilineárnimy TMUs na pixelpipe urýchľovať bilineárne AF, čo GeForce 3 a aj GeForce FX umožňovala.
Teraz chcem objasniť, či poskytovaná priepustnosť pamäte vôbec stačí na vyťaženie TMUs. Pri 32 Bit textúrach a predpoklade, že pri každom bilineárnom sample musí byť v priemere čítaný 1 texel (a zbytok prichádza z cache), bolo by len pre textúry potrebných 147.2 GB/s. Pri nekomprimovaných textúrach tak nie je dostatočná priepustnosť. (147.2 GB/s by bolo potrebných, ale len 86.4 GB/s je dostupných) – avšak output výkon je stále neprekonaný. Pri všetkých DXT formátoch (s maximálne 8 Bit na texel) je ponúkaná priepustnosť dostatočná.
TMUs sú do určitej miery odpojené. Každá Vec 16 ALU disponuje nad "štyrmi" TMUs a môže len tieto pre svoje výpočty použiť. Tieto štyri TMUs sú v skutočnosti jedna TMU so štvornásobným poddelenými jednotkami. Pričom je každá zo štyroch poddelených filter jednotiek ešte dvojite vyložená. Pri porovnaní texel výkonu s aritmetickým výkonom musíme samozrejme zohľadniť aj rozdiel frekvencií.
Threading mechanizmus sa stará o to, aby pri filtrovaní textúr bola ALU zásobovaná a vyťažená inými pixelami. Pokiaľ je potrebné, dokážu ALUs aj Vertex výpočty vykonávať a TMUs filtrovať textúry pre Pixelshader. Výpočtovým jednotkám je úplne jedno, odkiaľ k ním prídu dáta, nakoľko Unified Shader konzept vedie shadre cez tie isté ALUs. Dostať potrebné dáta v správnom poradí z ALU vyžaduje určité prepínače, ktorých komplexita je v porovnaní s počtom tranzistorom pre výpočtové jednotky často podceňovaná. S G80 threadingom sa ale nedá dosiahnuť maximálna efektivita. Preto neplatí: počet potrebných taktov = maximum z TMU a ALU taktov. Toto by mohlo byť v ojedinelých prípadoch dosiahnuté, ale nie vždy. V porovnaní s G70 je ALU oveľa zriedkavejšie blokovaná textúrovaním. Pomocou threadingu sú TMUs ale aj ALUs oveľa viac vyťažené, výkon za takt je preto oveľa väčší ako pri G70.
TMUs v G80 teraz vedia aj FP-32 filtrovanie textúr. To nie je žiadne prekvapenie, nakoľko môže byť Unified Shader použitý aj ako Vertexshader a vo Vertex úrovni sa vždy pracuje s FP32 – čiže používať aj FP-32 textúry. (NV40 a G70 môžu vo Vertexshadery pristupovať na textúry len nefiltrovane) FP32 filtrovanie textúr beží len štvrtinovou rýchlosťou a FP16 filtrovanie textúr len polovičnou rýchlosťou voči normálnemu RGBA8888 filtrovaniu textúr. FP32 filtrovanie textúr možno samozrejme využiť aj na prácu s pixelami.
Nie je mi dosiaľ jasné ako je filtrovanie FP16 a FP32 hodnôt interne realizované. Avšak to nie je pre prax podstatné. Podstatné je ale, že aj pri FP16 textúrach je možné za takt filtrovať 32 texel-ov – v praxi limituje priepustnosť. Napriek tomu môžu byť určité veci pri HDR Renderingu na G80 realizované veľmi efektívne. G71 a R580 majú pri zmysluplnom HDR Renderingu len čiastočnú podporu features. G80 dokáže pracovať s pohyblivou rádovou čiarkou, bez toho aby stratil multisampling schopnosť (G71) alebo filtrovanie textúr (R580)
Teoretický texel výkon pri 32 Bit textúrach (RGBA8888) | ||
G71: | G80: | |
bilineárne Samples | 15,6 GT/s | 18,4 GT/s |
trilineárne Samples | 7,8 GT/s | 18,4 GT/s |
2x AF bilineárne* | 7,8 GT/s | 18,4 GT/s |
* pri zmenšených a rozmazaných textúrach | ||
Nielenže je základný textúrovací výkon vyšší, ale je trilineárne alebo 2x AF (čisto z hľadiska texelfillrate) zadarmo.Odpojenie pomáha aj tomu, aby sa TMUs a ALUs zriedkavejšie medzi sebou blokovali. Podľa môjho názoru je nastavenie ovládačov pri default neakceptovateľné, nakoľko neponúka od 2x AF trilineárne filtrovanie. Túto "optimalizáciu", ktorá zakáže plnú trilineárnu filtráciu musí používateľ manuále v ovládačoch vypnúť. Pri pohľade na extrémne dobrú TMU achitektúru G80 je tento krok nVidie úplne nepochopiteľný.
Nové ROPs:
V GeForce 8800GTX je šesť ROP blokov, päť v GeForce 8800GTS. (odpovedajúc počtu jednotlivých 64 Bit pamäťových pripojení) Na jeden blok pripadajú len štyri Alphablending jednotky, ale až 32 Z-test jednotiek. Pokiaľ je v hre aj farba dá sa využiť ešte 16 Z-test jednotiek. (táto "optimalizácia" so zdvojnásobením Z/Stencil testrate pre bezfarebný Stencil a Z-rendering existuje už od NV30)
G80 ROP sú podľa toho optimalizované pre 4x Multisampling. Na prvý pohľad nerozumne vysoký počet 192 Z-testov za takt – pokiaľ nie je v hre žiadna farba – prinesie svoje využite pri prednostnom Z-pass. Doteraz trval prednostný Z-pass v porovnaní s renderingom ešte tak dlho, že v konečnom farebnom renderingu ho ušetrená fillrate nemohla kompenzovať – predovšetkým preto, že Vertexshader musel byť dvakrát použitý .
Pri G80 je veľký predpoklad, že s touto technikou sa celová rýchlosť zvýši, aj preto, že sa druhý Vertexshader pass nemusí konať. (pomocou zapamätania výsledko prvého passu) 3D engine so stencil tieňmi potrebuje beztak jeden prednostný Z/stencil pass. Jednoducho povedané: Z vysokého Z/stencil výkonu profituje kažá aplikácia, optimalizovaný sofware ešte viac vďaka efektívnejšiemu využitiu Vetex a Z/stencil výkonu.
Teoretický output výkon: | ||
G71: | G80: | |
RGBA-8888-Alphablending | 10,4 GP/s | 13,8 GP/s |
Počet pixlov pri 2x MSAA | 10,4 GP/s | 13,8 GP/s |
Počet pixlov pri 4x MSAA | 5,2 GP/s | 13,8 GP/s |
Počet zixelov pri 2x MSAA | 10,4 GZ/s | 55,2 GZ/s |
Počet zixelov pri 4x MSAA | 5,2 GZ/s | 27,6 GZ/s |
Žiaden menovaný čip nevie využiť svoj output výkon, nakoľko limituje priepustnosť. Prečo implementovala nVidia také množstvo ROP jednotiek ? ROP jednotky sú v porovnaní s TMUs a ALUs pomerne malé, preto sa ich oplatí zabudovať viacej, aby neboli drahé ALUs vybrzdené.
glide
Ledy
barco
killswitch
crux2005
killswitch
crux2005
Ledy
killswitch
killswitch
crux2005
gogi
strelooriginal
dexman
eotslubo
optimista
badbat
MEPHISTO