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

Prima di passare all'analisi vera e propria dell'architettura di rendering e delle caratteristiche supportate, un appunto merita il discorso schede e frequenze del chip. Per quello che riguarda le schede, si confermano le voci (e le foto non ufficiali) circolate poco prima della presentazione: pare proprio che per le schede AGP sarà necessario utilizzare ben due connettori Molex aggiuntivi per garantire la fornitura di energia alla giusta tensione: si dice che le attuali reference board dissipino più di 120 Watt. nVidia raccomanda l'utilizzo di un alimentatore di 480 Watt per evitare qualsiasi tipo di problema... Una richiesta di potenza non indifferente, insomma... Per le frequenze, invece, si parla di una versione Ultra che offrirà core a 400 MHz e memorie GDDR3 a 550 MHz (1,1 GHz effettivi), mentre c'è la possibilità che le versioni "normali" non siano altro che chip con delle Pixel Pipeline disabilitate (probabilmente quattro o un suo multiplo, data l'organizzazione in "quad") come palliativo per eventuali problemi di resa. I prezzi previsti, sono i soliti per le schede di punta al loro lancio, e cioè nell'ordine dei 500 Euro, mentre la disponibilità effettiva sul mercato è attesa entro un mese e mezzo dal lancio, si parla cioè di fine Maggio-inizio Giugno...

ARCHITETTURA DI RENDERING

Come evidenziato prima, GeForce 6800 fa del parallelismo il suo punto di forza. nVidia ha indubbiamente imparato la lezione da parte di ATi, che sul parallelismo ha puntato per realizzare R300 e i suoi derivati, ed ha esteso all'ennesima potenza il concetto con il suo nuovo chip. Lo schema, che trovate tra le foto, è alquanto eloquente. Iniziamo parlando delle sei unità geometriche, in grado sulla carta di fornire il doppio delle prestazioni rispetto a quelle delle varie GeForce FX. L'organizzazione di ciascuna di esse permette di evidenziare anche quelle che sono le caratteristiche fondamentali introdotte con i Vertex Shader 3.0. Tre sono le parti fondamentali che costituiscono il cuore di una unità geometrica di GeForce 6800: l'unità per operazioni scalari, l'unità vettoriale (che possono operare in parallelo), entrambe in grado di lavorare su numeri in virgola mobile a 32 bit, e un'unità per eseguire il fetching di una texture per ciclo di clock. Se vi state chiedendo per quale motivo è possibile eseguire il caricamento di una texture in un Vertex Shader, dovete entrare nell'ottica dei Vertex Shader 3.0, che richiedono tale funzionalità per poter realizzare il Displacement Mapping o la simulazione di effetti fisici.

Abbiamo già in passato visto come opera il Displacement Mapping: sostanzialmente si crea un'apposita texture (la Displacement Map appunto), a toni di grigio (solitamente 8 bit), dove ciascuna tonalità rappresenta la diversa elevazione dei poligoni dove la texture verrà applicata. Sfruttando queste informazioni, magari con tecniche di Adaptive Tesselation (cioè dell'aumento/diminuzione "adattiva" del numero di poligoni che compongono un oggetto tridimensionale in base alla distanza, la cosiddetta LOD, Level Of Distance) l'hardware potrà, a partire da modelli limitati nel numero di poligoni, aumentare il dettaglio generando tutti i vertici necessari a far corrispondere il modello alla mappa di elevazione fornita. In più, la possibilità di operare a livello di texture, facilita la gestione a livello di illuminazione e di colore che prima doveva essere gestita tramite più pesanti Pixel Shader a livello di Bump Mapping. Da sottolineare che l'unità di texture look up non può applicare alcun tipo di filtraggio (benché la possibilità di eseguire quattro letture dipendenti, ovviamente in quattro cicli di clock successivi, dia teoricamente la possibilità di realizzare bilinear filtering programmandosi un apposito Vertex Shader), ma gestisce il Mip Mapping (ossia, può gestire versioni scalate di una stessa texture). Altro aspetto aspetto derivato direttamente dalle specifiche dei Vertex Shader 3.0 è quello del branching, che non è più un'optional (come invece lo era nelle specifiche 2.0) e deve essere gestito nella maniera più efficiente possibile, cosa che è realizzata con il supporto di nuove istruzioni, un apposito stack per la gestione di chiamata e ritorno ad indirizzo e selezione di codice condizionata. Del resto, come mostrano le tabelline di confronto, i Vertex Shader 3.0 prevedono il più completo controllo di flusso possibile: si va dal controllo di flusso statico (loop e cicli for) a quello dinamico (test su variabili) all'arbitrary swizzling, funzionalità che consente di operare singolarmente sulle varie componenti di colore tramite apposite maschere.
Altra feature di particolare interesse è il Geometry Instancing, denominato da nVidia anche Vertex Frequency Stream Divider. Si tratta di un'interessante funzione che permette di dividere i flussi dei dati di input sui vertici in base alla loro frequenza: potremmo così avere un flusso più lento, relativo per esempio alle posizioni approssimate dei vertici, e un flusso più rapido che contiene, codificate in pochi bit, le variazioni di posizione di questi vertici.

Se immaginiamo, per esempio, di voler rappresentare un esercito, il flusso "lento" potrebbe contenere le informazioni relative a un modello "generale" di soldato, e viene letto una volta per tutta la "truppa". Il flusso "veloce", invece, caratterizza ciascun singolo soldato che vogliamo nel nostro esercito, magari specificando il particolare modo di camminare di ciascun soldato. Diviene così evidente anche l'aspetto secondario introdotto da questa funzionalità, e cioè la possibilità di rileggere da uno stesso buffer gli stessi dati più volte, senza che si aumenti il carico sul sistema. Da notare sono anche il numero massimo di istruzioni supportate: la specifica dei Vertex Shader 3.0 prevede un massimo teorico di 65535 istruzioni eseguite, di cui 512 statiche, il doppio rispetto alle 256 specificate con i Vertex Shader 2.0 e con le funzionalità estese proposte da nVidia nei GeForce FX. E' stato anche aumentato il numero di registri temporanei utilizzabili, che passa dai tredici di CineFX 2.0 a trentadue, cosa resa necessaria dal fatto che il controllo di flusso dinamico è adesso obbligatorio, e migliorata dovrebbe essere la loro gestione, uno dei talloni d'Achille della vecchia architettura, che andava in crisi non appena cominciava ad aumentare proprio la "pressione" sui registri stessi. nVidia definisce le proprie unità geometriche come soluzioni MIMD (Multiple Instruction Multiple Data), volendo indicare con questa sigla il fatto che esse possono operare contemporaneamente su vertici tra loro completamente indipendenti.