ATi Radeon X1000 - pohled na architekturu
5.10.2005, Zdeněk Kabát, článek
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.
Kapitoly článku:
- ATi Radeon X1000 - pohled na architekturu
- Radeon X1800 - specifikace a vlastnosti
- Architektura pipeline, vertex shader
- Pixel shader engine
- Texturování, HyperZ, Render Back-Ends
- Paměťový řadič - 512-bit ring bus
- Kvalita obrazu - HDR, Adaptive AA, 3Dc+
- Avivo a CrossFire
- Mainstream: Radeon X1600 a X1300
- Výkon, srovnání s nVidií a závěr
Přehled 3D pipeline (R520)
Předem bych rád upozornil, že informace jsou čerpány zásadně z materiálů ATi, které nemusí být úplné, a tak přiznávám, že v některých částech prostě nevím. Jakmile se objeví zdroje, které dané problémy objasní, článek bude doplněn.
Nový 90nm proces TSMC dovolil inženýrům z ATi implementovat do čipu mnohem více technologií než u 130nm (+68% plochy navíc) a podstatnějším způsobem upravit pipeline. Vývoj byl zaměřen hlavně na zvýšení efektivity a snížení latencí, plnou implementaci Shader Modelu 3.0 a zvýšení kvality obrazu. Jak se jim to podařilo můžete posoudit v následujících kapitolách.
Zde je schéma architektury jádra R520:
Již na první pohled se architektura liší od R420 poměrně dost, tedy alespoň co se týče druhé a třetí části. Zatímco přechod z R300 na R420 se vyznačoval velkou paralelizací, tedy zdvojnásobením počtu výpočetních jednotek, zde naopak dochází k rozdělení Pixel shader enginu do několika funkčních bloků.
Zajímavou otázkou je, jakým způsobem bude ATi realizovat vypínání defektních bloků, chce-li tedy prodávat nepodařené čipy na levnějších grafických kartách. Vzhledem k tomu, že do quadů, tedy čtveřic jsou rozděleny nejen pixel shadery, ale také adresovací a texturovací jednotky, pravděpodobně existuje způsob, jak vypnout vždy 4 od každého. Technici ATi potvrdili, že možnost vypnutí jistých částí čipů existuje, což bude využito u Radeonu X1800.
Vertex shader engine
První část pipeline je asi tou, která doznala oproti R420 nejméně změn. U R520 obsahuje engine celkem 8 vertex shaderů, tedy o dva více než u R420. Tento krok je podle mě hlavně odezvou na nVidii, protože není příliš her, které by byly limitovány právě výkonem vertex enginu. Druhou věcí je, že geometrické jednotky zvyšují skóre v 3DMarku05 (jako vždy marketing).
Detail prozrazuje, že jednotka je prakticky identická s R420. Každý vertex shader se skládá z vektorové ALU, která dokáže zpracovat 4-složkové instrukce (vec4) a ze skalární ALU, která pracuje s jedinou složkou. V shaderech je možné zpracovat 2 instrukce za takt, tedy 10 miliard instrukcí každou sekundu.
Dále je vertex shader engine vylepšen o podporu Shader Modelu 3.0, podporuje dynamické řízení toku (větvení kódu, podmínky apod.) a zvládá zpracovat až 1024 instrukcí. K dispozici má i více dočasných registrů. Jak si můžete také všimnout, na diagramu není pro vertex shadery znázorněna žádná texturovací jednotka. To znamená, že není možné provádět displacement mapping přímo, ale textura musí být nahrána do vertex enginu přes část s pixel shadery (render-to-vertex-buffer). Ačkoliv toto není příliš elegantní řešení, je možné textury plně filtrovat (bilineárně i trilineárně) a podle testů ATi je tento přístup velmi rychlý.
Konec enginu obsahuje jednotky Backface Cull (ořezává vrcholy, které se nacházejí na odvrácené straně objektů), Clip (ořezává vrcholy mimo obraz), Perspective Divide (upravuje perspektivu scény) a Viewport Transform (převádí obraz do souřadnic pozorovatele).
Setup Engine
Setup Engine má starosti hlavně převedení vrcholů na konkrétní trojúhelníky (Geometry Assembly), které mohou být nadále zpracovávány v HyperZ enginu a samozřejmě v pixel shaderech a texturovacích jednotkách. Rasterizace pak přiřazuje jednotlivým polygonům různé údaje, např. souřadnice textur.
Dříve byl Setup Engine zodpovědný za rozdělování trojúhelníku do dlaždice, které byly posílány do jednotlivých quadů, ovšem nyní je tato úloha převedena na "Ultra Threading Dispatch Processor", který se nachází o stupeň dále.