Architektura, pixel pipeline, branching, Co-issuing
Kapitoly článků
Architektura
nVidia při vývoji nové karty vsadila na oblast, ve které se cítí jistá - návrh lepší architektury. Pokusím se o nějaký komentář k nepříliš jasnému obrázku se základní strukturou čipu. Spodních 16 obdélníků jsou tzv. ROP (raster operation unit) jednotky. Jejich počet zůstal stejný jako u čipu NV45, což znamená, že číslo 24 se vztahuje pouze k interním pixel pipelinám, které můžeme vidět o něco výše, sdružené po čtyřech. Sada obdélníků umístěná nejvýše je dle očekávání poslední důležitá věc schématu - 8× vertex pipeline.
Pixel pipeline
Zásadní změnou prošla architektura pixel pipeline. Oproti své předchůdkyni byl přidán sčítač do první shader jednotky. Nyní zvládne 8 MADD instrukcí (multiple-add = násobení následované sčítáním) v jediném cyklu. Toto samozřejmě není jediná instrukce používaná shadery, ale patří mezi časté, takže se zrychlení rozhodně projeví. Každá shader jednotka má přídavnou ALU, která zvyšuje výpočetní výkon, a tudíž i rychlost provedení shaderu. Tyto ALU nejsou úplnou novinkou, objevily se již u NV35, ale NV40 je neměla.
Branching
Na výše zmíněném schématu nám zbyl poslední zajímavý doposud nediskutovaný kousek, nazvaný branch processor. Jedná se opět o novinku. Verze 3.0 pixel shaderu obsahuje nepovinnou definici podmíněného skoku. Právě její realizací je tzv. branching. Nejvýznamnějším využitím je rozhodně to, že se shader již nemusí aplikovat na všechny pixely (například u vyhlazování okrajů není třeba aplikovat shader na pixely uprostřed polygonu). To sice nezvedne výkon v libovolné hře, ale umožňuje to do budoucna psát shadery výrazně efektivněji.
Vertex pipeline
Schéma vertex pipeline se neliší od NV40. Rychlejší zpracování geometrie bylo dosaženo zvýšením počtu vertex pipeline a vylepšením vektorové a skalární jednotky. Vektorová jednotka umí vykonávat MADD v jediném cyklu a výkon skalární jednotky by měl být o 20 až 30% vyšší.
Výkon a kvalita shaderů
Podle všech teoretických testů Nvidia nelhala, když tvrdila, že nová karta je až 2× rychlejší v provádění pixel shaderů. Protože se výkon zvedl řadou vylepšení a nikoliv jen hrubou silou navýšeného taktu, nedochází ke zdvojnásobení ve 100% případů, ostatně, testy mluví za sebe...
ShaderMark má také měření kvality vykreslení shaderů, které porovnává s referenčními obrázky a počítá MSE - tzv. střední kvadratickou odchylku. Čím je MSE menší, tím více se shader podobá vzoru. Měřila jsem rozdíl ve vykreslování na 6800 GT a 7800 GTX. MSE se pohybovalo převážně mezi 1 a 0 a obě karty se mezi sebou lišily v hodnotě až na pátém desetinném místě. 6800 GT měla sice hodnoty na této přesnosti nižší, ale vzhledem k řádu je rozdíl zanedbatelný.
Oficiální data opět odpovídají naměřeným údajům, tedy výkon se zvedl zhruba o 30%. Ovšem teoretický výkon není vše, uvidíme co ve hrách...
Co-issuing
Vylepšený co-issuing management u 7800 umožňuje provádět více instrukcí v jednom cyklu. To je sice z principu nemožné, ale ne tak docela :-). U jediné instrukce, kterou je možno v cyklu provést, se počítá se čtyřmi komponentami (R,G, B + Alpha kanál). Díky co-issuingu je možné provést více instrukcí, jejichž komponenty dohromady nepřesáhnou tyto čtyři. Něco podobného podporuje i ATI (Radeon 8500), ale jen ve formě 2 instrukce, 3+1 komponenty. Toto vylepšení se týká jak vertex, tak pixel procesorů.