reklama
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 X1000 - pohled na architekturu

5.10.2005, Zdeněk Kabát, článek
ATi Radeon X1000 - pohled na architekturu
ATi dnes vstoupilo do další etapy své historie a představilo řadu grafických čipů nové generace Radeon X1000, které jsou postaveny na moderní architektuře a pokryjí celé cenové spektrum. Podíváme se detailně na uspořádání 3D pipeline a všechny novinky.

Pixel shader engine



Nejradikálnějších změn doznaly "pixel pipelines", které jsou nyní rozděleny na jednotlivé části do pixel shader enginu a do texturovací části. Zde bych si dovolil kratší úvod. Dříve byly pod pojmem pixel pipelines označovány ROPs, čili poslední část čipu, která má na svědomí zapisování pixelů do frame bufferu. Ovšem postupně se toto označení přeneslo na část střední, která se skládá z texturovacích jednotek (TMU) a fragment shaderů (ALU), které bývají častěji označovány jako pixel shadery.

U R520 je zásadní rozdíl v tom, že je tato část opět rozdělena na čtveřice pixel shaderů, na blok adresovacích jednotek a na texturovací jednotky, které jsou od pixel shader enginu dokonce odděleny. Zde je schéma:




Velmi důležitou novinkou je u R520 tzv. Ultra-Threading Dispatch Processor, který převzal dřívější funkci Setup enginu a nyní rozděluje zpracovávané pixely do tzv. threadů, čili vláken. Tento pojem je také podstatný - jedná se o blok pixelů, který je vybrán z daného polygonu a poslán do konkrétního pixel shader jádra nebo texturovací jednotky.

Jak tedy Dispatch procesor funguje? Rozkouskuje danou scénu na zmíněná vlákna, která mají velikost 4x4 pixely a tato vlákna může nadále distribuovat mezi pixel shadery. Každý pixel shader quad může "obdržet" ke zpracování až 128 vláken - jakmile dokončí práci na jednom bloku pixelů, je mu procesorem přiřazen další, a to nezávisle na stavu zpracování vláken v ostatních quad-shaderech.

Jádro pixel shaderů (omlouvám se za krkolomný překlad) je to, co jsme dříve označovali pod pojmem quad, tedy čtveřice ALU pro zpracování pixelů. Součástí enginu jsou ještě jednotky pro adresování textury, které jsou také organizovány do 4 čtveřic.




Zde je detailnější schéma pixel shader enginu. Každý shader obsahuje jednotku pro větvení kódu, dvojici skalárních ALU a dvě vektorové ALU, které dokáží pracovat buď samostatně, nebo společně (dual issue, co-issue). Tato konfigurace je v podstatě stejná jako u R420. Vektorové ALU dokáží zpracovat instrukce se třemi složkami a skalární s jednou složkou. Je-li tedy potřeba spustit vec4, je třeba zapojit obě jednotky zároveň. ALU 1 jsou jednotky s omezenou funkcí (pouze instrukce ADD) a podle všeho nezvládnou novější instrukce než PS1.4 (+vstupní modifikátory).

Podle ATi je za jeden cykl možné provést:
  • 1 vec3 ADD + vstupní modifikátor (Vector ALU 1)
  • 1 scalar ADD + vstupní modifikátor (Scalar ALU 1)
  • 1 vec3 ADD/MUL/MADD (Vector ALU 2)
  • 1 scalar ADD/MUL/MADD (Scalar ALU 2)
  • 1 instrukci pro řízení toku (Branch Predicition Unit)

Dále obsahuje pixel shader engine jednotky pro výpočty adresy textur, které jsou schopny vygenerovat jednu adresu v každé jednotce za cykl, celkem tedy až 16 adres ve všech jednotkách.

Na konci schématu vidíte ještě velké pole registrů, které jsou pro rychlou práci pixel shaderů velmi důležité. Pro každé vlákno je k dispozici místo v registrech pro 32 pixelů s hloubkou zpracování 128 bitů (FP32), celkem tedy 32 pixelů x 16 B x 512 vláken = 256 kB. Pokud zabere daný thread více místa v registrech, Dispatch procesor omezí počet dalších zpracovávaných vláken, aby mohla být práce dokončena.

Vlastnosti a výhody pixel shaderů R520



Nová organizace pixel shaderů u R520 má dalekosáhlé důsledky. Ovšem vezměme si vlastnosti pixel shader enginu postupně. Tak za prvé je samozřejmě rozšířen o podporu Pixel shaderů 3.0, což znamená plnou podporou dynamického větvení, hloubku výpočtů FP32 (32-bitové desetinné číslo na každý kanál) a možnost pracovat s dlouhými shadery. FP32 je realizována vždy v plné rychlosti.

Jednou z výhod pixel shaderů u Radeonu X1800 je např. velký počet vláken - tato hi-endová řada jich dokáže zpracovávat až 512. To znamená, že není třeba používat předpověď větvení, protože by tato jednotka byla de facto zbytečná. Dispatch procesor navíc dokáže vybírat vlákna tak, že je spuštěno to pro výkon nejvýhodnější.



>> Klikněte pro zvětšení <<

Na tomto schématu vidíte, proč je výhodné zpracovávat malá vlákna. Když si vezmeme stíny, které jsou typickou operací pro pixel shadery, tak u vláken o velikosti 4x4 je do shaderů poslán nejmenší počet pixelů z výše uvedených příkladů. Když blok zvětšíme, rázem exponenciálně vzroste počet pixelů, které je třeba zpracovat, a navíc nebude potřeba na většinu těchto velkých bloků aplikovat žádné instrukce (tzn. ALU poběží naprázdno).



>> Klikněte pro zvětšení <<

Na tomto slidu je pro změnu vidět výhoda jednotky pro větvení kódu (Branch Execution Unit), která u programů s řízením toku zkrátí dobu potřebnou k provedení daných částí kódu až o 30%.

Pixel shader engine také podporuje techniku render-to-vertex-buffer, která umožňuje jednotkám vyrenderovat scénu do textury tak, že ji poté dokáže zpracovat vertex shader. Jde tedy o jakýsi sekundární zdroj pro displacement mapping, ale textura není ukládána do frame bufferu, nýbrž přímo do vertex bufferu, kde je k dispozici pro vertex shadery.
reklama