Technologie: nVidia GeForce 7800 GTX
22.6.2005, Zdeněk Kabát, článek
Další evoluce v grafickém je světě je na pořadu dne. Nová rodina GeForce 7 je uvedena představením hi-endového čipu GeForce 7800GTX, který kromě masivního paralelismu vyniká i pokročilou architekturou.
Kapitoly článku:
Vertex pipeline
Jak jsme si řekli již na předcházejí straně, GeForce 7800 GTX obsahuje 8 vertex pipeline, nebo-li také vertex shaderů. Jejich úkolem je starat se o geometrii scény - přijmou tedy přes sběrnici dané souřadnice vrcholů, z nichž vytvoří daný model. Ovšem hlavním úkolem vertex shaderu je provádět s geometrií různé transformace, posuvy apod. GeForce 7 podporuje Vertex Shader 3.0.
Na obrázku vidíte schéma vertex shaderu G70. Vstupní data mohou být upravována buď ve skalární jednotce (pracuje s jednou hodnotou), nebo ve vektorové jednotce, která pracuje až se čtyřmi souřadnicemi. To znamená, že vertex shader vyhovuje architektuře MIMD a může nezávisle provádět různé instrukce v obou jednotkách (ve vektorové samozřejmě na více datech). GeForce 7800 navíc podporuje Geometry Instancing.
Kromě skalární a vektorové jednotky má vertex shader přístup i do L2 texture cache, což je velmi praktická věc pro Displacement Mapping. Když je do cache načtena textura (displacement mapa), může ji G70 aplikovat na model přímo ve vertex shaderu a nikoliv až při dalším průchodu. Načíst lze až 4 textury, samozřejmě je ale nelze v této fázi filtrovat - pro bilineární filtrování by musel být napsán program ve vertex shaderu a navíc by bylo potřeba čtyř průchodů (pro 4 vzorky).
Vertex pipeline podporuje také větvení kódu (Brach Unit) s různými cykly a podmínkami. Poté je ustanovena geometrie (Primitive Assembly) a vše je umístěno do souřadnic pozorovatele (Viewport Processing).
Pixel pipeline
Dále se v jádru nachází 24 pixel pipelines, které jsou nejdůležitější součástí čipu (na rozdíl od vertex shaderu je nelze nahradit výpočty v procesoru). Starají se operace s pixely a nanášení textur. Pixel pipeline vypadá na první pohled identicky s GeForce 6, ovšem došlo k několika výpočetním optimalizacím. Celá pipeline je postavena na SIMD architektuře, to znamená, že může na více datech provádět jedinou instrukci.
Každá pixel pipeline se skládá z texturovací jednotky a dvou shaderů. Texturovací jednotka zvládá samozřejmě všechny typy filtrování, jen se liší v rychlosti. Protože může pracovat se čtyřmi vzorky, bilineární filtrování provádí v plné rychlosti, zatímco trilineární a anizotropní trvá dva a více cyklů. Maximální hodnota je již zmíněné 16x 128-Tap Aniso s trilineárním filtrem. Texturovací jednotka podporuje textury ve formátu FP16.
Dále obsahuje G70 dvě shader jednotky, které jsou řazeny za sebou a částečně se svou funkcí liší. Obě jednotky jsou samozřejmě vektorové (4 složky), protože je nutné pracovat s texturami ve formátu RGBA (tři složky barevné + alpha kanál určující průhlednost). Pokud je ale zpracovávána instrukce ve formátu vec-3, je možné zbylou složku využít pro skalární výpočet, první jednotka umí navíc generovat adresu textury. To je také důvodem, proč mohou oba shadery buď spolupracovat, nebo počítat odděleně - v případě, že je první shader použit pro samplování textury, je druhá jednotka volná a může standardně pracovat s pixely.
Každý shader dále obsahuje svou mini-ALU s omezenou funkčností (Pixel Shader 1.4), díky kterému je možné některé instrukce podle specifikace PS1.4 provádět "zadarmo", tedy bez využití plnohodnotné ALU. Podporován je 32-bitový desetinný formát FP32, první ALU obsahuje navíc funkci "fp16 normalize". Celkem dokáže Pixel Shader G70 provést 5 instrukcí za cykl na 10 komponentech a jeho výkon je 26 flops/pixel.
ROP
Ani ROP jednotka se od NV40 příliš neliší. Jedná se o jednotku pro rastrové operace (Raster Outputs), která provádí anti-aliasing, stará se o komprese barev a Z-bufferu a zapisuje výslednou scénu do frame bufferu. Těchto jednotek obsahuje G70 celkem 16, tedy stejně jako GeForce 6.
Anti-aliasing nVidie je převážně MultiSampling a ten má vyhrazenou funkci právě v ROP. Zde jsou určovány a prolínány pixely, které budou vyhlazeny (tedy na okrajích polygonů). Za jeden cykl je možné zpracovat pouze dva vzorky pro FSAA, maximální vyhlazování, kterého lze dosáhnout, je 4x RGMS (Rotated Grid MultiSampling). Pro dosažení 8x FSAA kombinuje nVidia tuto metodu se SuperSamplingem, který vykreslí scénu ve dvojnásobném rozlišení a poté ji ROP prolnou do frame bufferu.
Další položkou na schématu jsou např. Z compare, což je funkce sloužící k ověření viditelnosti daného pixelu. Z ROP se pak stará o renderování Z-souřadnice do Z-bufferu, C ROP je kombinací Z-souřadnice a barevné informace. Pro renderování obrazu na výstup tedy zvládá G70 jen 16 pixelů, zatímco když barevná informace chybí a ukládá se např. jen Z souřadnice, lze uložit až 32 pixelů za takt.