ATI Radeon HD 5870: la prima scheda video per DirectX 11

Con la nuova serie ATI Radeon HD 5800 AMD apre la stagione delle schede video dotate di supporto hardware nativo alle API DirectX 11, al debutto solo dal mese di Ottobre con Windows 7 e Windows Vista.
di Gabriele Burgazzi , Paolo Corsini pubblicato il 23 Settembre 2009 nel canale Schede VideoATIAMDWindowsRadeonMicrosoft
Le novità architetturali di RV870
Abbiamo segnalato come le nuove soluzioni Radeon HD 5800 abbiano implementato un'architettura della GPU che di fatto raddoppia gli elementi strutturali. Analizzando in dettaglio la GPU RV870 confermiamo questa prima analisi: il passaggio dalle API DirectX 10 al supporto a quelle DirectX 11 non ha portato a cambiamenti radicali nella struttura della GPU, in quanto le novità introdotte dalle API DirectX 11 rappresentano una evoluzione delle DirectX 10, non una novità radicale così come sono state le DirectX 10 rispetto a quelle release 9.
Nella GPU RV870 trovano posto 1.600 stream processors, cifra che diminuisce a 1.440 per l'implementazione adottata con la scheda Radeon HD 5850. La struttura degli stream processors è identica, fatta eccezione per il numero, a quella delle soluzioni Radeon HD 4800: troviamo quindi core SIMD ciascuno dotato di 80 stream processors. Ogni gruppo di 5 stream cores, indicati poi con il nome di stream processors, viene indicato con il termine di Thread processor: per ogni core SIMD sono quindi integrati 16 Thread processors, che danno come risultante gli 80 stream processors di ogni engine SIMD.
Nelle GPU RV870 i core SIMD sono pari a 20, numero doppio rispetto a quanto implementato nelle soluzioni RV770. Per analogia ricordiamo come le schede Radeon HD della famiglia 3800, basate su GPU indicata con il nome in codice di RV670, integrassero 4 core SIMD mantenendo la stessa struttura delle GPU più recenti in termini di struttura dei Thread processors nonchè del loro numero all'interno di ogni core SIMD.
A monte di ogni SIMD engine sono presenti 4 texture unit, con un rapporto tra core SIMD e texture unit che è rimasto invariato in RV870 rispetto a RV770; essendo raddoppiato il numero dei core SIMD è aumentato della stessa misura anche il numero di texture unit, passato dalle precedenti 40 alle attuali 80.
Con questo numero di stream processors, alla frequenza di clock di 850 MHz, una scheda Radeon HD 5870 è capace di una potenza di elaborazione massima teorica che raggiunge i 2,7 TeraFLOPS a singola precisione. Passando ad elaborazioni double precision, importanti in ambiti di GPU Computing, la potenza massima teorica a disposizione di queste schede scende a 544 GigaFLOPS, valore estremamente elevato considerando come non raggiungano i 100 GigaFLOPS in double precision le soluzioni NVIDIA della famiglia Tesla, basate su architettura GT200.
L'architettura base è rimasta di fatto invariata come approccio, ma oltre al raddoppio degli stream processors e delle unità correlate AMD è intervenuta a effettuare varie ottimizzazioni e migliorie nelle stream processing unit, nel layout dei core SIMD, nell'engine grafico, nelle texture units, nelle render Back-Ends e nel display controller, nell'ottica di incrementare il più possibile l'efficienza complessiva della GPU.
L'engine grafico ha visto l'inserimento della nuova logica per la gestione della tessellation, secondo le specifiche implementate da Microsoft nelle API DirectX 11; questa componente è programmabile attraverso le nuove API Microsoft utilizzando Hull Shaders oppure Domain Shaders.
Lo schema di funzionamento di un Thread processor è di fatto identico a quanto visto con le schede RV770: troviamo 4 stream processors di tipo general purpose affiancati da un quinto stream processor con funzionalità speciali, collegati ai quali trovano posto dei registri di tipo general purpose. A completare il Thread processors una unità di Branch
Considerando l'architettura degli stream processors scelta da ATI, il comportamento della GPU in termini prestazionali può variare sensibilmente a seconda del tipo di shader eseguito. Se gli stream processor delle GPU NVIDIA sono unità indipendenti tra di loro che possono eseguire una operazione per ciclo di clock, nell'architettura RV870 di ATI (ma lo stesso del resto valeva per quella RV770 e per quella RV670 prima) gli stream processors possono eseguire un massimo di 5 operazioni per ciclo di clock, nel momento in cui il codice è tale da occupare tutte e 5 le stream processing units integrate in uno stream processor.
La conseguenza diretta di questo è che l'architettura NVIDIA GT200 può sempre eseguire un massimo di istruzioni pari al numero di stream processors a disposizione, mentre per le soluzioni RV870 di ATI si possono avere scenari ideali sino a utilizzare tutti gli stream processors contemporaneamente, oppure un minimo di 320 istruzioni eseguite per volta nel momento in cui queste siano tali da non poter essere accorpate tra di loro. L'architettura degli stream processors utilizzati da ATI nelle proprie GPU, infatti, richiede necessariamente che i 5 stream processing units integrati in uno stream processor siano tutti al lavoro sullo stesso thread.
Da questa analisi si deduce come sia importante utilizzare una corretta terminologia: quelle che NVIDIA indica con il nome di stream processors per AMD siano più correttamente da indicare con il nome di stream processing units. Per convenzione gli stream processing units delle GPU AMD vengono indicate come stream processors, al pari delle soluzioni NVIDIA.
Le texture units, come segnalato, sono raddoppiate in numero mantenendo invariato il rapporto con i core SIMD. AMD è intervenuta ottimizzando queste unità grazie sia ad un incremento della loro bandwidth, sia ampliando la bandwidth delle cache L1 e L2 a queste associate. La cache L2 è inoltre stata raddoppiata, raggiungendo il quantitativo di 128Kbytes.
Da ultimo, il memory controller GDDR5 a 256bit di ampiezza. AMD ha ottimizzato questo componente in modo che potessero venir utilizzate memorie con frequenze di clock molto elevate, sino a 5 GHz. Per garantire funzionamento stabile sono state implementate nuove procedure di check degli errori, oltre a integrare un sistema di misura della temperatura del chip memoria in più punti così che la temperatura non raggiunga mai valori considerati critici per il funzionamento. La tecnica di link retraining applicata alle memorie GDDR5, infine, permette di eseguire switch su tensione di alimentazione e frequenza di clock dei moduli memoria in modo istantaneo, a tutto vantaggio del contenimento dei consumi.
Le schede Radeon HD 5800 sono orientate all'utenza desktop e ai videogiocatori, ma è evidente come l'architettura RV870 verrà utilizzata da AMD quale base per la futura generazione di schede video per workstation grafiche oltre che per elaborazioni di GPU Computing. Abbiamo evidenziato come queste architetture siano capace di 2,7 TeraFLOP in single precision e 544 GigaFLOPS in double precision; RV870 integra piena implementazione hardware delle specifiche DirectCompute 11 e OpenCL 1.0, oltre a rispettare le specifiche IEEE754-2008