Galerie 22
ATi Radeon X800 - grafická (r)evoluce
Článek Grafiky a hry Hry a technologie ATI

ATi Radeon X800 - grafická (r)evoluce | Kapitola 4

Zdeněk Kabát

Zdeněk Kabát

15

Seznam kapitol

1. ATi Radeon X800 - grafická (r)evoluce 2. Jádro R420 a architektura pipeline 3. Zpracování geometrie a HyperZ HD 4. Pixel shader
5. SmoothVision HD 6. 3Dc komprese 7. Grafická karta a spotřeba 8. Verze Radeonu X800, závěr

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.

Reklama

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.

ATi Radeon X800 - grafická (r)evoluce


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.

ATi Radeon X800 - grafická (r)evoluce


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

na32

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:

ATi Radeon X800 - grafická (r)evoluce
PS 2.0PS 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.


Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama