ATI Radeon HD 2900 XT: è il momento di R600

ATI Radeon HD 2900 XT: è il momento di R600

Radeon HD 2900 XT è la prima scheda della famiglia di prodotti video AMD dotata di architettura a shader unificati, con supporto DirectX 10 e disponibile per sistemi desktop e notebook. Meglio nota con il nome di R600, questa nuova GPU giunge sul mercato ad un prezzo di 399€ posizionandosi quale rivale diretta delle soluzioni GeForce 8800 GTS di NVIDIA

di , Paolo Corsini pubblicato il nel canale Schede Video
NVIDIAATIAMDGeForceRadeon
 

Shader unificati: la seconda architettura di ATI

Come abbiamo già specificato nel corso dell'articolo, le GPU ATI della serie Radeon HD 2000 sono tutte basate su architettura a shader unificati. E' questa la seconda implementazione di GPU a shader unificati per ATI, che ha anche sviluppato la GPU Xenos utilizzata per le console Xbox 360 di Microsoft e dotata di pixel e vertex shaders unificati. R600, e i derivati RV630 e RV610 per i segmenti di fascia media ed entry level, sono basati sulla medesima struttura, con ovviamente le opportune semplificazioni per le GPU meno costose.

Al pari di quanto abbiamo visto con le soluzioni della serie G80 di NVIDIA, all'interno delle nuove GPU ATI troviamo degli Stream Processors, in numero differente rispetto ad NVIDIA e con capacità di elaborazione che non sono direttamente paragonabili. Questo per dire che cercare di valutare la potenza elaborativa di una o dell'altra architettura semplicemente contandone il numero di stream processors è approccio decisamente errato.

schema_hd_2900.jpg (119647 bytes)
ATI Radeon HD 2900 XT

Integrati nella GPU R600 troviamo 320 Stream processing units, divise in 4 blocchi da 80, 4 SIMDs, 4 texture units e 4 Render Back-end.

schema_hd_2600.jpg (97952 bytes)
ATI Radeon HD 2600

Sono 120 Stream processing units, 3 SIMDs, 2 texture units e 1 Render Back-end quelli che compongono le GPU RV630, adottate dalle schede ATI Radeon HD 2600.

schema_hd_2400.jpg (69592 bytes)
ATI Radeon HD 2400

Passando alla GPU RV610, proposta di fascia entry level utilizzata nelle GPU ATI Radeon HD 2400, troviamo 40 Stream processing units, 2 SIMDs, 1 texture unit e 1 Render Back-end; la cache tra vertex e texture e di tipo condiviso.

In testa a tutte e 3 le architetture troviamo il Command Processor: esso ha il compito di scaricare il driver da chiamate al processore, sino al 30%, accedendo direttamente alla memoria ed eseguendo microcode. A seguire il Setup Engine: il suo compito è quello di preparare i dati per essere inviati agli stream processors, eseguendo 3 tipologie di processi: vertex assembly e tessellation; geometry assemply e scan conversion e interpolation.

schema_architettura_1.jpg (81536 bytes)

Terminate le operazioni del Setup Engine si passa all'ultra threaded display processor, dal quale dipendono due cache dedicate rispettivamente per shader instruction e per shader constant; la presenza di queste cache permette di avere sia shader di lunghezza illimitata quanto a istruzioni, che un numero illimitato di costanti. Per ogni SIMD array sono presenti due unità aribitrer, seguite da due sequencer; le due unità SIMD permettono di avere due esecuzioni eseguite in parallelo per ogni ciclo di clock, in quanto sono di tipo pipelined. Ciascun SIMD Array, presenti in numero di 4 all'interno delle GPU R600, 3 nelle soluzioni RV630 e 2 in quelle RV610, è dotato di un predefinito numero di stream processing unit: 80 per R600, 40 per RV630 e 20 per RV610

schema_architettura_2.jpg (34252 bytes)

Il SIMD (Single Instruction, Multiple Data) Array utilizza un design di tipo VLIW (Very large Instruction Word); se con le architetture ATI  serie Radeon 9000 e Radeon X 1000 era possibile elaborare Vector + scalar, 2 istruzioni per clock, 3+1 o 4+1 components, passando alle GPU della famiglia Radeon HD è possibile al limite elaborare 5 istruzioni per ciclo di clock (FP MAD, Multiply - Add), con 5 components. Ogni stream processor utilizza precisione 32bit floating point: le branch execution units gestiscono il flow control e le operazioni conditional, mentre i general purpose registers immagazzinano i dati di input, i valori temporanei e i dati di output

schema_architettura_3.jpg (47194 bytes)

Passando alle texture unit, troviamo 4 unità nelle GPU R600, numero che scende a 2 in RV630 e a 1 in RV610; l'architettura delle texture unit di ogni GPU è identica, cambiandone solo il numero complessivo. Per ogni texture unit troviamo 8 texture address processors all'interno, che eseguono shader instructions per verificare gli indirizzi per lockups delle texture. Metà di questi processori sono utilizzati dai vertex shaders per vertex fetches, e la restante metà è utilizzata per texture fetches. Ogni texture unit è inoltre dotata di 20 texture samplers, capaci ciascuna di gestire un valore FP32 per ciclo di clock: 4 sono utilizzate per vertex fetches e le restanti 16 per texture fetches.

Ogni texture unit può eseguire filtro bilineare su 4 64bit HDR texture lockups per ciclo di clock; alternativamente può essere eseguito filtro trilineare o anisotropico su ogni tipologia di formato di texture, compreso quello a 128-bit floating point. La texture unit è dotata di due livelli di cache, L1 e L2, dedicate esclusivamente al caching delle texture; nella scheda HD 2900 la cache L1 è in quantitativo di 256Kbytes, valore che scende a 128 Kbytes nella soluzione HD 2600 ed è assente nel tutto nelle schede HD 2400.

schema_architettura_4.jpg (40645 bytes)

A completare la struttura di elaborazione dei pixel troviamo i Render Back-Ends, in quantitativo di 4 per le GPU R600 e di 1 per quelle RV630 e RV610; questo implica la possibilità di processare 32 pixel per clock per le schede video HD 2900 e 8 pixel per clock per quelle HD 2600 e HD 2400. Rispetto alle soluzioni Radeon X 1000 troviamo una migliore gestione degli Z-buffer, con compressione sino a 16:1 in modalità standard e sino a 128:1 con 8x MSAA. Il numero di Multiple Render Target è stato raddoppiato rispetto alle GPU della famiglia Radeon X1000, passando da 4 a 8 con supporto MSAA.

 
^