Megarecenze Sapphire Radeon X800 Pro 256MB

Nedlouho po uvedení převratné GeForce 6800, která výkonnostně i technologicky zametla s nadvládou Radeonu 9800XT, odpověděla i firma ATI a karty na bázi čipu R420 už jsou tady. Přinášíme výjimečnou recenzi výjimečné karty.

Geometrická část pipeline

Pokud se budeme zajímat pouze o 3D pipeline, na jejím začátku se nachází 6 paralelně pracujících programovatelných geometrických procesorů, které vyhovují specifikacím vertex shader 2.0:

Obrázek 3. R420 3D pipeline. Zdroj: ATI Technologies

 Oproti předchozímu čipu R360 přibyly další dva geometrické procesory a spolu se zvýšením pracovní frekvence to znamená výrazný nárůst počtu geom. transformací proveditelných za jednotku času. Na začátku části zvané vertex pipeline jsou tedy umístěny programovatelné (pomocí krátkých vertex shader 2.0 programů) procesory a za nimi následuje několik jednotek s pevně danými operacemi:

Obrázek 4. R420 vertex pipeline. Zdroj: ATI Technologies

Každý z geometrických procesorů se skládá ze dvou aritmeticko-logických jednotek (ALU), které mohou pracovat paralelně: 128-bitová floating-point ALU pro vektorové operace a 32-bitová floating-point ALU pro skalární operace. Práci těchto jednotek koordinuje flow control jednotka, která umožňuje provádět smyčky, větvení a podprogramy. Vertex shader používá 32-bitovou FP přesnost dat (128-bitů).

Data určená ke zpracování vertex procesory obsahují třírozměrné informace o poloze, texturové souřadnice, normálové vektory, barvy a vlastnosti materiálu. Nejzákladnější funkcí těchto jednotek je provést transformaci dat o poloze, která se typicky skládá ze čtyř 32-bitových hodnot pro každý vertex (x, y, z a w pro perspektivu). Tento typ transformací vyžaduje násobení matic 4x4, což se dá rozložit na čtyři operace skalární součin (dot product). Každá ze 128-bitových vektorových ALU R420 je schopna provést jednu z těchto instrukcí za takt a protože jich pracuje paralelně šest, celkem dokáže Radeon X800 zpracovat 1,5 vertexu za jediný takt [ ATI04 ].

Následuje část geometrické pipeline s pevně danými operacemi. Nejprve jednotka odstranění odvrácených ploch (back-face culling) odebere všechny trojúhelníky orientované od kamery. Ve fázi ořezávání (clipping) se detekují trojúhelníky, které leží částečně mimo pohledový objem (nebo jiné aplikací definované oblasti) a tyto části jsou také odstraněny z dalšího zpracování. Perspektivní dělení (perspective divide) potom díky hodnotě w modifikuje vertexy pro získání perspektivy (podpora dojmu hloubky 3D scény) a následuje transformace do souřadnic obrazovky.

Pixelová část pipeline

Jakmile projdou data celou vertex pipeline, přijde na řadu setup engine (nebo také triangle setup). Ten převede jednotlivé vertexy na trojúhelníky a jim pak přiřadí parametry jako souřadnice textur, barvu, hodnotu Z a další informace pro fragment shader. Dále rozdělí trojúhelníky do dlaždic (tiles nebo quads, o velikosti 2x2 pixely) a takto jsou předány ke zpracování pro 4 „ quad “ pixel pipeline:

Obrázek 5. Uspořádání 16 pixel pipelines do 4 bloků. Zdroj: ATI Technologies

Každá čtveřice pixel pipelines dokáže pracovat nezávisle a může tak být vypnuta a R420 dokáže operovat nejen v základní konfiguraci 16x1 (počet pixel pipelines × texturovacích jednotek), ale i jako 12×1, 8×1 nebo 4×1. Toho se pak dá využít k prodání vadných čipů jako oslabených řešení s méně pipelines (X800 Pro, X800 SE), místo aby se vyhodil celý čip, pouze se vypnou vadné pipelines a čip se použije v levnějším řešení.

Barva každého pixelu je určena aplikovanou texturou, osvětlovacím modelem a materiálem přiřazeným danému trojúhelníku. Tento proces má na starosti pixel shader (zjednodušeně: malý program, který je nahrán do grafického čipu a spuštěn prováděcí jednotkou pixel procesoru). Na diagramu pod odstavcem je jedna z těchto „quad“ pixel pipeline zobrazena detailněji:

Obrázek 6. R420: Schéma bloku se čtyřmi pixel pipelines. Zdroj: ATI Technologies

Vidíme, že každá jednotlivá „quad“ pixel pipeline má k dispozici vlastní HyperZ jednotku, jejíž funkcionalita už byla popsána v kapitole 2.3. Pokud má Radeon X800 zapnuty všechny čtyři „quad“, má Hierarchical Z-Buffer k dispozici zhruba 4 mega pixely uložné kapacity v Z-bufferu, což plně pokrývá i rozlišení 1920x1080 pixelů. Pokud rozlišení přesáhne maximální možnosti Hierarchical Z-Bufferu není zcela vypnut, ale jakýkoli další pixel nad jeho kapacitu je vrácen k počátečnímu testu (Early Z-test), a tak je stále velká část obrazu Hierarchical Z-Bufferem pokryta. Hierarchical Z-Buffer čipu R420 dokáže zamítnout až 256 pixelů v jediném taktu a dokáže udělat dvě porovnání Z nebo stencil hodnoty na pixel v jednom taktu.

Obrázek 7. Detail pixel shader jednotky R420. Zdroj: ATI Technologies

Pixel shader jednotka R420 zůstala prakticky stejná jako u R300, s adresovací jednotkou pro textury a dvěma ALU schopnými spolupráce a paralelní práce, což umožňuje až 5 operací v plovoucí desetinné čárce (v nejlepším případě, R420 má 5 různých ALU, dvě vektorové 72-bitové FP ALU, dvě skalární 24-bitové FP ALU a 96-bitové ALU pro adresaci tetxur). Druhá ALU je plně vybavená, zatímco první, menší ALU, disponuje minimálně schopností provádět kód pixel shaderu 1.4 a ještě má několik dalších instrukcí. Narozdíl od vertex shaderu, tak zde vektorová ALU pracuje pouze se třemi složkami (3x 24-bitů). Pokud se tedy pracuje s vektorem se čtyřmi složkami, musí být využita i skalární ALU a nemůže být využito jejich paralelní práce na různých datech [ Bey04 ]. Přesnost pixel shaderu zůstává stále FP24 (96-bitů), přesně jak (nestandardně) vyžaduje DirectX 9.0. Jednotlivé ALU mají k dispozici 32 dočasných a 32 konstantních registrů a několik speciálních registrů (facing registry, které indikují orientaci polygonu, pro dvoustranné osvětlení), v tomto směru došlo ke zvýšení oproti R300 i R360. Instrukční limit pro vektorovou, skalární i texturovací ALU se zvedl na 512 instrukcí (přímá podpora v hardware, nikoli přes F-buffer ). F-buffer samotný, který společně s kombinátorem výstupu umožňuje zpracovat víceprůchodové pixel shadery, byl také vylepšen a nyní zpracovává již jen pixely aktuálního průchodu a nemusí přistupovat ke všem pixelům celému snímku.

F-buffer (FIFO-stream buffer), zavedený už u Radeonu 9800 (R350), umožňuje teoreticky provést nekonečně dlouhý pixel shader kód (snaží se tak obejít limit 96 instrukcí, který je definován v DirectX 9.0 a měl ho i čip R300), díky tomu, že rozdělí obraz na nezávislé části a uloží hodnoty pixelů z mezivýpočtu v takové oblasti. Ty jsou pak z F-bufferu přečteny další částí shaderu, výpočet pokračuje a zapíší se zase nové mezivýpočty. Díky tomu se při multi-pass nemusí posílat geometrie vícekrát, pouze jednou v každém průchodu. Podpora F-bufferu vyžaduje speciální kompilátor.

Všechna tato zlepšení znamenají, že Radeon X800 disponuje profilem pixel shaderu PS2_b, tedy stále podporuje verzi pixel shaderu jen 2.x a jeho možnosti jsou menší než u GeForce FX (NV30) s profilem PS2_a.

Je třeba od sebe totiž odlišit pojmy verze shaderu a cílový profil shaderu (shader target profile). Od verze DirectX 9.0c, jsou k dispozici čtyři profily pixel shaderu pro hardwarově urychlené vykreslování: 2_0 (R300 - R360), 2_A (NV3x), 2_B (R420) a 3_0 (NV40). Každé hardwarové vylepšení nad minimálbí specifikaci shaderu 2.0 se označuje jako verze 2.x, dokud hardware opravdu plně nesplňuje požadavky specifikace shaderu 3.0. Shadery v čipech NV3x i R420 se označují tedy jako 2.x, ale schopnosti NV3x jsou v tomto ohledu mnohem vyšší.

Tabulka 2. Rozdíly mezi posledními verzemi PS.

  PS 2_0 PS 2_0_a PS 2_0_b PS 3_0
Závislých textur 4 Nekonečno 4 Nekonečno
Instrukcí textur 32 Nekonečno Nekonečno Nekonečno
Registr pozic Ne Ne Ne Ano
Instrukční sloty 96 512 512 min. 512
Provedených instrukcí 32 + 64 512 512 65535
Registrů interpolace 2 + 8 2 + 8 2 + 8 10
Registrů adresace textur 8 8 8 6
Indexování registrů Ne Ne Ne Ano
Čítač cyklů (registr) Ne Ne Ne Ano
Konstantních registrů 32 32 32 224
Libovolný swizzling Ne Ano Ne Ano
Gradient instrukce Ne Ano Ne Ano
Face registr (dvoustranné osvětlení) Ne Ne Ano Ano
Dynamická kontrola běhu Ne Ne Ne Ano, hloubka až 28

Pixel shader model 3.0 má mnoho zajímavých využití: deferred shading (známý také jako quad shading – alternativní technika renderingu, která posílá celou geometrii scény naráz, per-pixel informace ukládá do video paměti a odtud jsou použity k následujícímu vykreslovacím průchodům), voxel rendering (voxely, které jsou uloženy jako trojdimenzionální mapy, charakterizované buď barvou a průsvitností nebo „ silou “ , v případě síly se používá prahová hranice a voxely pod (nebo nad ní) jsou pak brány jako pevná látka a zbývající pak jako prázdný prostor), animace šatů atd.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,