Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

ATi Radeon X800 - grafická (r)evoluce

10.5.2004, Zdeněk Kabát, článek
ATi Radeon X800 - grafická (r)evoluce
Přibližně 3 týdny po vypuštění GeForce 6800 vrací kanadská ATi Technologies úder - Radeon X800 vyvíjený pod kódovým označením Loki je na světě. V jádru je čip sice podobný předchozím, ale přichází navíc s masivním paralelismem (až 16 pixel pipeline), novou technologií 3Dc a úpravami v paměťovém řadiči a FSAA. V článku najdete detaily o nové "tajné zbrani" ATi.
Pixel shader
Jako vždy se nejdříve podívejme na schéma celého pixel shaderu. Radeon X800 obsahuje dvojici výpočetních jednotek v každé pipeline, což znamená celkem 32 ALU, k čemuž musíme ještě přičíst dalších 16 texturovacích jednotek.


Obr. 8 – Detail pixel shaderu

Celkem tedy R420 obsahuje 2 vektorové, 2 skalární a jednu texturovací ALU, tedy stejně jako u R300. Obě ALU jednotky jsou schopné pracovat buď zvlášť, nebo společně, což znamená, že v nejlepším případě je zpracováno 5 operací za cykl (dvě Vect-3, dvě skalární a jedna s texturou). Vektorová ALU je zde složena jen ze tří komponentů, takže pokud je třeba provést 4-složkovou operaci (Vect-4), je nutné zapojit i druhou ALU.

Pokud srovnáme toho jádro s GeForce 6800, najdeme několik rozdílů. nVidia má obě jednotky rozděleny na 4 komponenty, takže může provádět různé množství operací (Vect-3 + skalární nebo Vect-4 jako u ATi). Protože ale nemá pevně danou vektorovou a skalární část, může NV40 také provádět současně dvě Vect-2 operace nebo dokonce čtyři skalární. Problém nVidie tkví ale v tom, že pro operace s texturami je využita celá první jednotka, zatímco ATi obsahuje vlastní a plně samostatnou texturovací jednotku.


Obr. 9 – Možnost rozdělení operací mezi vektorovou a skalární jednotku

To se posléze projevuje v určitých kódech. Zatímco ATi může provádět operace s texturou paralelně s výpočty ve vektorové a skalární ALU, nVidia musí obětovat velkou část výkonu celého shaderu a pro výpočty jí zůstane jen jedna ALU. Od toho se pak odvíjí závislost na kódu a výhody R420 v některých programech. Obecně lze říci, že kód, který obsahuje zároveň matematické operace a zároveň texturovací, bude prospívat Radeonu X800 více než GeForce 6800.

Pixel shadery R420 obsahují ale i další změny. Počet dočasných registrů byl rozšířen z 12 na 32 a navíc byly přidány tzv. „facing“ registry. Do těchto registrů se ukládá informace o tom, zda polygon směřuje („čelí“) k místu pozorovatele nebo od něj. Toho budou moct využít programátoři v případě, že budou chtít použít jiné osvětlení pro polygony natočené k pozorovateli přední a zadní částí.

Zásadně byl také rozšířen počet maximálních možných instrukcí v jednom pixel shaderu. Z původních 160 byl nyní rozšířen na 512 pro každou ALU (vektorovou, skalární a texturovou), takže celkem lze provést až 1536 instrukcí. Jistého vylepšení se dočkal také F-Buffer. Jedná se o jakousi vyrovnávací paměť, do které je ještě uvnitř shaderu ukládán pixel, na kterém bude třeba provést další operace. Není tak nutné pixel posílat do frame bufferu a znovu zpátky skrz celou pipeline.

Radeon X800 stále využívá 24-bitovou přesnost (fp24), což mu dává jistou výhodu oproti nVidii. GeForce 6800 potřebuje se svou fp32 provést cca o 25% více práce, což má za následek pokles výkonu oproti ATi. Protože se navíc ATi rozhodlo nepřecházet na Shader Model 3.0, nepotřebuje fp32 implementovat. Zde je tabulka rozdílů mezi jednotlivými verzemi Pixel Shaderu:


Ikona Odkaz na databázi
PS 2.0
PS 2.0a
PS 2.0b
PS 3.0
Dependant Texture Limit
4
No Limit
4
No Limit
Texture Instruction Limit
32
Unlimited
Unlimited
Unlimited
Position Register
-
-
-
x
Instruction Slots
32 + 64
512
512
>= 512
Executed Instructions
32 + 64
512
512
>=65535
Interpolated Registers
2 + 8
2 + 8
2 + 8
10
Instruction Predication
-
x
-
x
Index Input Registers
-
-
-
x
Temp Registers
12
22
32
32
Constant Registers
32
32
32
224
Arbitrary Swizzling
-
x
-
x
Gradient Instructions
-
x
-
x
Loop Count Register
-
-
-
x
Face Register (2-sided Lighting)
-
-
-
x
Dynamic Flow Control
-
-
-
24
Tab. 2 – Jednotlivé verze Pixel Shaderu dle specifikace DirectX 9

Radeon X800 se drží specifikace 2.0b a navíc přidává facing registry, zatímco GeForce 6800 obsahuje plnou podporu PS 3.0. Uvidíme, jestli se tento handicap projeví v budoucnu.