06 aprile 2008

Pc Gaming: La Scheda Video ed il G92

Il Pc Gaming è sempre più di ieri fortemente dipendente dall'hardware sul quale si vuole far girare il nostro gioco preferito. Una delle grandi differenze tra chi gioca su Pc e chi gioca su Console è la necessità di dover conoscere l'hardware che si possiede. Giocare su console è indubbiamente più sbrigativo e meno complicato: non esiste un sistema operativo con cui litigare, non esistono driver da installare, non bisogna risolvere problemi di compatibilità tra i vari componenti elettronici e soprattutto non serve nessuna conoscenza dei "pezzi" elettronici che compongono la macchina. Oggi più che mai costruirsi una macchina da Pc Gaming è diventata una vera sfida: i competitors sono tanti, le offerte commerciali sono infinite e ubriacanti. E' necessario scegliere in modo oculato componenti come le schede madri, CPU, Memorie, Schede Video e Alimentatori. Costruire un computer senza sapere cosa si sta comprando può portare a sonore delusioni.

Cominceremo questo nostro viaggio nell'hardware per Personal Computer dal componente che per eccellenza identifica il videogiocatore su Pc: la scheda Video. Oggi giorno il 99% degli utenti indirizza la propria scelta verso i due marchi principali: Nvidia e ATi (ora AMD). Il primo che andremo ad affrontare è proprio l'ultima GPU presentata da Nvidia e che identifica l'ultimo gruppo di schede video della serie 9.


Il G92 è stato ufficialmente presentato nel Novembre 2007 equipaggiando tutta la nuova serie (o seconda serie) delle GeForce 8800 (GS, GT, GTS) e viene ripresentato anche sulle GeForce 9800 (GTX e GTX2). La complessità di questi prodotti sta nel fatto che le case produttrici con la stassa GPU commercializzano svariati modelli di schede grafiche per cercare di coprire la più ampia fetta di mercato possibile. Vengono così create soluzioni che soddisfano l'utente medio fino ai sistemi high-end. Muoversi tra le caratteristiche, parametri e livelli di performance è piuttosto complicato se non si ha una certa conoscenza di base dell'argomento. Se prendiamo come esempio le caratteristiche della 9800GTX abbiamo:

Processo produttivo: 65nm
GPU Clock: 675 MHz
Memory Size: 512MB
Memory Clock: 2,2 GHz
Memory Bus: 256-bit
SP: 128
SP clock: 1,68 MHz
ROPs: 16
Memory Bandwidth: 70,4 GB/sec
Fill Rate: 43,2 GT/sec


Grandi numeri indubbiamente, ma come possiamo utilizzarli per scegliere? Bastano solo questi per convincerci che è la scheda adatta per il nostro sistema o ne servono altri? Anticipo subito che altri parametri utili sono Consumi di potenza (Watt), Rumorosità (dB) e Temperature di lavoro. Questi valori certo non servono a quantificare la bontà della scheda video ma sono fondamentali per capire se è la scheda giusta per il nostro sistema. In particolare il consumo di potenza, in quanto questo paramentro incide sulla scelta della PSU (Power Supply) valutando con attenzione la potenza generale che può erogare (Watt) ed il valore dell'amperaggio (A) sulla linea a 12 Volt. Tutti i produttori di schede video danno i valori minimi necessari per poter usare le proprie schede.

Un utente poco esperto potrebbe essere portato a pensare che più i numeri sono alti più saranno alte le performance. Questo è sicuramente vero, ma non in senso assoluto. Per valutare i numeri bisogna conoscere l'archittettura della GPU che ci sta dietro e capire se è corretto o meno usarli come termine di paragone. Faccio un esempio per chiarire. Nella descrizione di prima SP sta per stream processor che sono sostanzialmente componenti hardware che hanno il compito di processare le istruzioni di shader unificati. Elementi molto importanti perchè sono le prime unità di calcolo della fase di rendering. Ora il G92 ne possiede 128, ma se guardiamo la GPU Ati RV670 di stream processors ne ha 320 e un GPU clock di 775 MHz contro gli 675 MHz del rivale. Senza voler parteggiare per nessuno diciamo che hanno prestazioni simili. Allora come spieghiamo una differenza così ampia di stream processors e clock? Semplice è l'architettura della GPU che è diversa e solo conoscendo questa potremmo comprendere i paramentri.


Nel caso del G92 nella figura potete vedere lo schema a blocchi dell'architettura hardware. Per chi ha dimistichezza con i processori converrà con me che siamo di fronte ad una realizzazione eccezionale. E' un sistema ad elevato parallelismo composto da un elemento principale replicato quante volte si vuole per aumentare o diminuire le performance. Ogni blocco è realizzato da 16 Stream Processors, 4 TMUs, cache indipendenti (L1 e L2) e 1 gruppo di ROPs finali. Questa architettura stravolge il contetto di pipelines a flusso di dati sequenziale del passato e grazie anche alle nuove API Microsoft adesso si parla di pipelines looping oriented riducendo il numero di stadi nella fase di rendering rendendo così ogni elemento della pipeline indipendente dall'altro, questo comporta un aumento concreto delle performance. In passato il numero di pipelines di una GPU era sinonimo di performance: più pipelines aveva maggiore era la sua capacità computazionale, oggi con questo tipo di architettura salta decisamente questo termine di paragone.

Nello schema a top-down abbiamo in alto un generico elemento denominato Host. E' in breve la CPU che fornisce lo streaming dei dati alla GPU. Questo già vi fa capire come la CPU sia un elemento importante nel processo grafico perchè non deve essere un collo di bottiglia per i dati in ingresso alla GPU, spesso si parla in questi casi di sistemi cpu-limited. Alla fine invece abbiamo il Frame Buffer (FB) che è la memoria video dove viene depositato il frame finale pronto ad essere visualizzato a video.
Gli stream processors (SP) sono unità di shader programmabili (pixel shader, vertex shadee e geometry shader). Sono una grande novità nell'ambito delle architetture di GPU. Gli shader unificati sono istruzioni dipiche delle API Dx10 ed avere unità shader programmabili significa adattare l'hardware al tipo di calcolo che si deve fase, a seconda che servano più unità pixel shader o vertex shader.
Le Unità di texture Mapping (TMU) lavorano in modo indipendente a frequenza di core e non di SP su cache L1 indipendente, hanno il compito di indirizzamento (attraverso le Texture Address Unit) e filtraggio (Texture Filtering Unit) delle texture. Sono quindi importanti nel processo di texturing e renderle efficienti significa aumentare pesantemente le performance del processo di rendering.
La fase finale del processo di rendering è demandata ai processori Raster (ROPs) e sono responsabili del parametro di Fill Rate della scheda video. Sono anch'essi molto importanti perchè compiono oparationi di Z-processing sui pixel (profondità della scena 3D) e filtraggio di Aniti Aliansing (processo molto pesante per le schede video). Anche queste lavorano in modo indipendente dal resto della catena hardware e l'architettura Nvidia necessità di un minor numero di ROPs rispetto alla concorrenza in quanto ha reso i propri Raster Processors particolarmente efficienti.


Altro aspetto importante è il processo produttivo. A parità di area è possibile costruire un numero maggiori di circuiti integrati, questo incide positivamente su diversi fattori: clock, voltaggi, consumi. Più è basso meglio è. Sul clock GPU ci siamo in parte già espressi, aumentarlo incide fortemente sulle prestazioni ma va valutato assieme all'architettura della GPU.

Ultimo aspetto è la memoria video. qui sono tre gli aspetti importanti: quantità, clock e bus memoria. La quantità di memoria video (128MB, 256MB, 512MB) è spesso usata dagli utenti come termine di paragone per le prestazioni. Niente di più sbagliato! La quantità di memoria ha un impatto pari a zero sulle performance e risulta importante solo in particolari situazioni di gioco ad elevate risoluzioni. il bus di memoria e clock delle gDDR invece sono molto importanti e determinano pesantemente la memory bandwidth. Maggiore sarà la larghezza del bus (in bit) maggiore sarà la quantità di dati riversati in memoria dalla GPU.

Queste, secondo me, sono le informazioni utili per capire il mondo delle schede video e della grafica in generale. Prendete questo post come spunto ed usate la rete per approfondire aspetti che vi interessanno. Più cose si sanno e meglio si sceglie.

Alla prossima.

7 commenti:

Anonimo ha detto...

davvero molto interessante. chiaro, preciso e semplice nella spiegazione. io sinceramente non sapevo che l'architettura fosse così importante per le prestazioni. però è vero quello che dici in merito al confronto tra nvidia e amd. a sto punto sono curioso di sapere l'architettura dei processori amd. attenderò il prossimo post. nel frattempo mi documenterò in rete per migliorare le mie conoscenze altrimenti poi mi perdo.

Patrick "Pk77" Grioni ha detto...

Veramente complimenti, per me oltre all'architettura equilibrata conta molto la resa generale con codice generico.
Soprattutto in ambito pc, se una scheda è sfruttata solo con specifiche combinazioni di fattori, ad esempio l'fp16 nelle geforce fx, o le applicazioni shaders intensive, su r600 e succesivi, si rischia di vedere acquirenti insoddisfatti.

Anonimo ha detto...

mi complimento anche io per la competenza mostrata e la chiarezza espositiva. mi piacerebbe approfindire l'aspetto dell'architettura delle gpu che in quanto studente di ingegneria sono molto interessato. oltre alle informazioni che posso trovare in rete che sono spesso generiche e poco approfondite mi sai consigliare un sito o un libro dove posso approfondifre conpetenze del genere?

Anonimo ha detto...

ciao therampo. mi è piaciuto il tuo post e volevo dirti che anche sono un appassionato di gpu e grafica. la mia unica critica è sul fatto che forse hai liquidato troppo facilmente il discorso delle pipelines in quanto ritengo che la vera forza del g92 sia proprio lì. E' nelle nuove pipelines che sta la vera novità. L'insieme dei chip GeForce 8 fa appello a dei processori di flusso di tipo scalare, più o meno numerosi, una sorta di super DSP posizionati in maniera da poter riprendere un flusso già trattato dal processore precedente e possono lavorare indifferentemente su tutti i tipi di dati, geometrici, di pixels o di vertex shader. Questa architettura ha il pregio di potersi "riconfigurare al volo" per meglio adattarsi al carico di lavoro: così, se una scena è "geometricamente carica", l'insieme delle risorse della GPU è dedicato a questo compito, mentre nelle architetture precedenti le risorse erano fisse, con il risultato che molte unità potevano essere sovraccariche di lavoro ed altre a riposo. Mentre queste unità sono 96 sulla GeForce 8800 GTS e 128 sulle GeForce 8800 GTX e 8800 Ultra, NVIDIA dota la sua GeForce 8800 GT di 112 processori di flusso. Questo fa si che sulla carta, la nuova arrivata di NVIDIA si posizioni un gradino più in alto della GeForce 8800 GTS. Le ROP invece, unità incaricate delle operazioni finali come il mix dei colori e l'applicazione dell'antialiasing, sono 16 sulla GeForce 8800 GT contro le 24 implementate sulle GeForce 8800 GTX / 8800 Ultra e le 20 della GeForce 8800 GTS.

Anonimo ha detto...

ad hiro: grazie per i complimenti. siti interessanti ne puoi trovare diversi, ad iniziare da questo. seguilo e vedrai che non te ne pentirai. libri così su due piedi non saprei che consigliarti, calcolato che parliamo di tecnologie all'avanguardia non penso tu le possa già trovare ben documentate su di un libro di testo.

ad alex84: anche a te grazie per i complimenti. certo che si può approfonfire, ma esiste agganciato a questo blog un forum di approfondimento e se sei interessato ti invito a seguirlo. magari puoi trovare persone che avranno sicuramente piacere ad approfondire con te certe tematiche.

grazie a tutti.

Anonimo ha detto...

probabilmente hai ragione.

Anonimo ha detto...

imparato molto