Genere
ND
Lingua
ND
PEGI
ND
Prezzo
ND
Data di uscita
ND

GeForce 6800

Anteprima

GeForce 6800 Ultra - La riscossa di nVidia

Signore e signori, si riparte! L'evoluzione dei vari NV30 e R300 è giunta al termine e si ricomincia con una nuova generazione di chip grafici. Questa volta a cominciare con un leggero vantaggio temporale è nVidia, che con un colpo a sensazione ha presentato la potente GeForce 6800 Ultra. La scommessa è quella di riuscire a tornare sul trono e le premesse sembrano molto buone: analizziamo il chip in dettaglio!

di Antonino Tumeo, pubblicato il

Evoluzioni abbastanza significative presentano anche i Pixel Shader 3.0. Infatti, fissato il numero di instruction slot nell'ordine dei 512, sono, come nell'architettura CineFX supportate illimitate istruzioni sulle texture (contro le trentadue massime dei Pixel Shader 2.0 standard), così come non c'è alcun limite per le letture di texture dipendenti (quattro sui Pixel Shader 2.0). La novità più importante è però l'introduzione anche per i Pixel Shader del controllo di flusso dinamico, che, andando ad aggiungersi al controllo di tipo statico già presentato dall'architettura CineFX 2.0, e ad un arbitrary swizzling (cioè la possibilità di spostare comodamente dati da un registro a un altro senza istruzioni di move) decisamente migliorato, permette di raggiungere anche in questo caso un limite massimo di 65535 istruzioni eseguite (cioè, virtualmente un numero infinito). Di pari passo sono stati aumentati anche il numero e i tipi di registri supportati (che, ancora una volta, e proprio con i Pixel Shader in maniera più decisiva, penalizzavano prestazionalmente proprio le GeForce FX): i registri temporanei passano dai dodici dei Pixel Shader 2.0 (ventidue in CineFX) a trentadue, quelli per le costanti da 32 a ben 224, e fanno la loro comparsa appositi registri appositi per contatori di loop e codici condizionali (24) per il controllo di flusso dinamico. Non manca, infine, il supporto per le istruzioni di calcolo di gradiente introdotti già in CineFX (ma non supportati dai Pixel Shader 2.0). Da sottolineare anche il fatto che la specifica Shader Model 3.0 prevede obbligatoriamente il supporto per profondità di colore a 32 bit per componente in virgola mobile: qualsiasi cifra inferiore (24 e 16 bit, entrambe comunque supportate dal nuovo chip grafico) è ritenuta precisione non completa. Indubbiamente, vista anche l'esperienza maturata (pur con tutte le difficoltà) su questo livello di precisione da nVidia con l'hardware precedente, è una cosa che non dispiace alla società californiana.

Anche perché, ed è il caso di evidenziarlo, stavolta l'architettura sembra particolarmente ben preparata per sostenere questo tipo di carichi. L'idea di base è sempre il parallelismo: ciascuna delle sedici Pixel Pipeline, organizzate sempre in quad (cioè gruppi di quattro in grado di elaborare quattro pixel alla volta tra loro correlati), presenta una particolare architettura superscalare che offre due shader unit con inframezzata una unità di texture fetching. Le architetture tradizionali presentavano una sola unità di shading preceduta dalla TMU, ed offrivano la possibilità, dopo aver eseguito l'operazione di caricamento della texture (una per ciclo di clock), di eseguire un passaggio nell'unità di shading per ciclo di clock (in grado di operare sulle 4 componenti di colore, Red, Green, Blue ed Alpha Channel, alla volta, per un totale di quattro operazioni per ciclo di clock). Passaggi successivi nell'unità per l'esecuzione di ulteriori istruzioni di Pixel Shading, senza la necessità di caricamento delle texture, avrebbero comunque portato a un throughput massimo sempre di quattro operazioni per ciclo. E' bene porre l'attenzione alla diversità concettuale tra istruzioni e operazioni: istruzione è l'effettivo comando passato alla shader unit, l'operazione è l'operazione matematica eseguita dalla sua ALU (unità logico matematica) sulle componenti di colore. Poiché le componenti di colore sono giustappunto quattro, una istruzione può portare ad un massimo di quattro operazioni per ciclo di clock. L'architettura del GeForce 6800, invece, grazie alla sua architettura superscalare, permette l'esecuzione o di una operazione di texture fetching seguita dall'esecuzione delle quattro operazioni per ciclo della shader unit, o, nel caso non sia più richiesto texture fetching, dal passaggio in due shader unit indipendenti (dunque fino a un massimo di otto operazioni) da parte di ciascuna delle due shader unit.

Come nell'architettura R300 ATi, poi, le unità di shading nVidia possono eseguire, se destinate ad operare su componenti di colore diverse, due istruzioni nello stesso ciclo di clock (notare che in questa maniera il numero di operazioni rimane comunque limitato sempre ad un massimo di quattro per ciascuna unità). Dunque, quando GeForce 6800 è libera di impegnare entrambe le shader unit di ciascuna Pixel Pipeline perché non deve eseguire caricamento di texture, possono venire processate un massimo di quattro istruzioni per ciclo di clock (e otto operazioni). Il tutto, è bene ricordarlo, con precisione di 32 bit in Floating Point per ciascuna componente di colore.
L'ultimo stadio delle Pixel Pipeline è costituito dai cosiddetti ROP (Render Output), le unità che si preoccupano di effettuare le operazioni successive al texturing e allo shading per arrivare a eseguire l'output dei calcoli effettuati in memoria sugli appositi buffer: sono i ROP che determinano se un pixel, che non è stato scartato da test di occlusion culling precedenti, deve essere scritto nel frame buffer, e se stencil e Z Buffer devono essere aggiornati. Ciascuna Pixel Pipeline di GeForce 6800 presenta due ROP: uno utilizzabile per la scrittura in Z Buffer o Stencil Buffer, e uno per la scrittura dei dati di colore (del pixel effettivo).