Kao što smo rekli na prethodnoj stranici, arhitektura HD serije Radeona bazirana je na isprobanim rješenjima iz X1000 serije i Xenos GPU-a koji se nalazi u Xboxu 360 (ovaj GPU je ujedno i prvi komercijalno dostupno rješenje s unificiranim shaderima). Arhitektura je kompatibilna s DirectX-om 10 dakle podržava Stream Out funkciju, Fetch4 (iliti Vertex Texture Fetch) i tri vrste shadera – vertex, pixel i geometry. Na ulaznom dijelu GPU-a nalazi se Command Processor koji obrađuje informacije poslane od strane drivera grafičke kartice. Nakon toga instrukcije iz Comand Processora idu u Setup Engine gdje se podaci pripremaju za obradu u Stream Processorima. Setup Engine obavlja tri funkcije – Vertex assembly i teselacija, Geometry assembly, Scan conversion i interpolacija.

Tu valja naglasiti da nova generacija hardvera ima dediciranu teselacijsku jediniceu (na shemi – "Programmable Tesselator"). Teselacija je inače proces kojim je pomoću raznih algoritama moguće automatski generirati poligone iz postojećeg geometrijskog modela odnosno automatski mu povećati kompleksnost bez korištenja definiranih vanjskih informacija. Ovo je vrlo korisna funkcija koja omogućava korištenje jednostavnijih 3D modela koji uz pomoć teselacije direktno u hardveru dobijaju na kompleksnosti čime se štede resursi. nVidijin hardver dakako također podržava ovu funkciju no mora je izvoditi putem stream procesora, dok je kod novog AMD-ovog hardvera za to zadužen posebni dio logike koji istu stvar obavlja mnogo brže.

Teselacija u praksi

Vratimo se pregledu grafičkog cjevovoda. Setup Engine dakle kreira dretve instrukcija koje su podijeljenje u tri grupe – za operacije nad pikselima, nad verteksima i primitivama. Ultra-Threaded Dispatch Processor se brine da ove dretve instrukcija pune stream procesore na što efikasniji način. 320 stream processing jedinica koje se nalaze u HD 2900 GPU-u podijeljene su u četiri SIMD niza. Svaki SIMD niz (sa svojih 80 stream processing jedinica) ima dvije arbitracijske jedinice koje se brinu za njega, a smještene su u Dispatch procesoru. Svaka arbitracijska jedinica ima pridjeljen jedan sequencer koji optimalno organizira slijed instrukcija u dretvi koju je odaslala arbitracijska jedinica. Dvije arbitracijske jedinice s pripadajućim sequencerima su također dedicirane za texture i vertex fetch operacije.

S desne strane Dispatch procesora na dijagramu možemo vidjeti cache za instrukcije i konstante što omogućava (virtualno dakako) neograničeno duge shadere i neograničen broj konstantni. Skrivanje latencija zbog spore video memorije, u slučaju promašaja memorijske lokacije u cacheu, izvodi se "smrzavanjem" dretvi u naredbenom slijedu (Command Queue, kao što znamo, odvojen za pixel, vertex i geometry instrukcije) nakon čega se naredna dretva u redu šalje arbitracijskim jedinicama.

Nakon Dispatch procesora stižemo i do ALU-a. Radeon HD 2900 ima 320 stream processing jedinica koje su grupirane u male superskalarne shaderske procesore koji se sastoje od pet stream processing jedinica, jedinice za grananje i registara. Jedna od stream processing jedinica u ovakvoj grupi je nešto veća (prva jedinica s lijeva na donjem dijagramu) i brine za nealgebarske operacije (sin, cos, log i slične funkcije). 16 ovakvih superskalarnih shaderskih procesora čini jedan SIMD niz.

Na lijevoj strani od SIMD-ova (gornji dijagram) vidimo Memory Read/Write cache. Ovoj memoriji mogu pristupati, pisati i čitati, svi SIMD-ovi što ujedno omogućava Stream Out funkciju odnosno vraćanje podataka natrag u SIMD-ove u nekom drugom obliku. Ovaj cache također podržava prelijevanje u video memoriju u slučaju spremanja veće količine podataka.

Ako se sjećate arhitekture G80 GPU-a, sigurno znate da je riječ o skalarnom, a ne superskalarnom dizajnu. Prednost skalarnog dizajna je veća granularnost budući da ALU-e možemo "hraniti" s jednostavnom kombinacijom instrukcija, u slučaju G80 jednom matematičkom i jednom dodatnom instrukcijom. U slučaju R600, shaderski je procesor potrebno istovremeno "nahraniti" s pet nezavisnih matematičkih instrukcija i jednom instrukcijom za grananje kako bi se postigla maksimalna efikasnost hardvera. Moguće je isporučiti i pakete s manje instrukcija, no onda sve jedinice u shaderskom procesoru nisu zauzete što rezultira padom efikasnosti. Dakako, koliko je ovakav dizajn iskoristiv jako zavisi o tome koliko je dobro izvedena logika koji puni SIMD-ove s instrukcijama i koliko su dobro izvedeni driveri grafičke kartice, a to nije moguće procjeniti gledanjem u dijagrame.

Radeon HD 2900 ima četiri jedinica za teksturiranje, no one su mnogo kompleksnije nego jedinice za teksturiranje na GeForceu 8800. Zapravo, bolje je reći da ih ne možemo direktno uspoređivati. Svaka od ovih jedinica ima osam procesora za adresiranje tekstura što je otprilike ekvivalentno mogućnostima G80. U svakoj se jedinici za teksturiranje također nalazi 20 FP32 texture samplera (svaki kupi jednu vrijednost po taktu) i četiri FP32 jedinice za filtriranje tekstura od kojih svaka može bilinearno filtrirati jednu 64-bitnu vrijednost po taktu ili jednu 128-bitnu vrijednost u dva takta.

Hijerarhija texture cachea izvedena je trostupanjski, prvi stupanj čini Vertex Cache, drugi L1 Texture Cache i treći L2 Texture Cache. HD 2900 ima 256 kB L2 cachea, HD 2600 128 kB cachea, a HD 2400 rabi samo Vertex i L1 cache. Sve jedinice za teskturiranje mogu pristupiti i Vertex i L1 cacheu. Bilinearno filtriranje 64-bitnih HDR tekstura izvodi se na punoj brzini, 16 piksela po taktu, a filtiranje 128-bitnih tekstura izvodi se na upola manjoj brzini, dakle 8 piksela po taktu. Algoritam anisotropnog filtriranja nije promijenjen u odnosu na X1000 seriju, no sada se koristi samo HQ filter koji je na starim karticama bio samo opcionalan.

Na kraju dolazimo i render back-enda, dijela logike gdje se izvode depth/stencil testovi i AA algoritmi. Najveća novost u ovom djelu je programabilni AA filter što je omogućilo implementaciju dodatnih algoritama za poboljšavanje kvalitete slike. AMD ovo zove Custom Filter AntiAliasing odnosno CFAA. Zgodna stvar u cijeloj priči je što je funkcionalnost jedinica za primjernu AA algoritama moguće mijenjati softverski što otvara mogućnosti naknadnih optimizacija i selecije modova koji su dostupni na odabir korisniku.

Dakako, da bi GPU ima dobre performanse treba mu omogućiti brz pristup video memoriji. AMD je odlučio napraviti još jedan korak u odnosu na nVidiju implementacijom 512-bitnog memorijskog kontrolera (sjetimo se, G80 ima 384-bitni kontroler). Memorijski kontroler je impementiran poznatom prstenastom sabirnicom koju poznajemo sa starijih generacija Radeona. Interna propusnost ove sabirnice iznosi jedan kilobit (512 bit za pisanje, 512 bit za čitanje), a pristup memoriji je osiguran preko četiri točke s po dva 64-bitna kanala. Memorijski kontroler je kompatibilan s GDDR3 i GDDR4 memorijom, a u slučaju Radeon HD 2900 XT koristi se 512 MB GDDR3 memorije.