In caso contrario v’invito a proseguire: cercherò di esporre i concetti fondamentali con estrema semplicità affinché possano essere compresi (e quindi risultare utili) anche per chi non ha molta confidenza con certi argomenti. Insomma non scendo nel dettaglio ma spero di riuscire a dare un’idea generale precisa di come funziona una scheda video e soprattutto di cosa valutare nel momento dell’acquisto….così nessuno avrà più bisogno di quei terribili consigli che da diegofio…..
Fino a qualche anno fa (ormai anche più di “qualche” a dire il vero) la sezione video di un PC era marginale e subordinata alla CPU: era preferibile un processore potente. Questo era determinato dal fatto che la maggior parte delle elaborazioni grafiche riguardava dati bidimensionali od al massimo la riproduzione di qualche video. Ancora oggi molti utenti fanno un’uso del PC che non richiede particolari prestazioni grafiche: un Pc utilizzato per applicazioni d’ufficio e riproduzione di filmati non ha bisogno di una scheda video da 6-700 euro, in quanto non ne ricaverebbe nessun tipo di beneficio. Tuttavia per chi il PC lo utilizza per giocare o per far girare complicati programmi di gestione di grafica 3D, il processore non è più una componente così fondamentale del proprio computer….basta guardare una moderna scheda video per rendersi conto che essa è molto simile ad un computer fatto e finito con il suo chip e la sua RAM indipendente….e tenete conto che le schede più potenti hanno un numero di transistor superiore a quello dei processori e le memorie grafiche superano le classiche RAM per velocità ed, in alcuni casi limite, anche per quantità (quantomeno ormai sono ad un punto tale da essere paragonabili). A conferma di questo, a mio modo di vedere, c’è da rilevare che da qualche tempo i produttori di schede grafiche fanno anche i chipset per schede madri: sono arrivati ad un tale livello di tecnologia nella produzione di GPU che produrre un chipset per motherboard non è risultato particolarmente problematico.
Quindi, ricapitolando, un tempo la grafica veniva calcolata principalmente dal processore e le schede video si preoccupavano per lo più di immagazzinare i dati e spararli a video (magari con qualche miglioramento) architettura che rendeva improponibile una gestione di applicazioni 3D……infatti qualcuno ricorderà che i primi giochi di una certa complessità grafica, sarebbero stati impossibili da gestire in tre dimensioni (tranne che per il computer di Chuck Norris e di Nemesys immagino…
![Wink :wink:](./images/smilies/icon_wink.gif)
Ma veniamo al punto ed analizziamo invece come avviene il flusso di dati in una moderna scheda. Mentre utilizziamo il nostro sistema operativo, navighiamo in internet o nelle cartelle, elaboriamo un documento di testo od un foglio di calcolo, scriviamo un piccolo compendio sulle schede grafiche per la marmaglia di AMDplanet, etc, etc, generiamo delle immagini che necessitano di elaborazione da parte della nostra GPU. La prima operazione che la scheda deve compiere sui dati in entrata è quella d’identificazione: se, come negli esempi di cui sopra, si tratta di dati 2D questi vengono smistati ad una procedura d’elaborazione veloce e convogliati con rapidità all’uscita video senza bisogno di particolari calcoli. Lo stesso accade per applicazioni video cui è dedicata una procedura rapida simile, anche se in questo caso esistono alcune tecnologie d’ottimizzazione presenti all’interno delle varie schede (tipo A-VIVO, Pure video, Splendid e varianti) ma comunque l’elaborazione resta minima e quasi immediata. Il terzo tipo d’identificazione è quello relativo alla grafica 3D….e qui, come vedremo, le cose diventano un tantino più complesse. Intanto puppatevi uno dei miei famosi schemini esemplificativi……..
![Immagine](http://img86.imageshack.us/img86/6295/flussodativideodv8.th.jpg)
Bello eh?
I dati in 3D vengono elaborati sotto forma dei cosiddetti “vertici” (vertex). Questi vertici, che rappresentano l’unità fondamentale della grafica tridimensionale, sono delle entità che consentono la creazione della struttura di un’ambiente 3D e formano tutta la “materia” che vediamo visualizzata in un moderno motore grafico. Fate finta che la sedia su cui poggiate le chiappe sia visualizzata all’interno del vostro PC in un’applicazione 3D e che sia costituita di sabbia compressa (lo so lo so non ridete……faccio per spiegarvi)…bene ogni singolo granello di sabbia che costituisce la sedia è un vertice. E’ chiaro? (Voce alla Wanna Marchi). Quindi la massa di dati viene identificata come 3D e convogliata nelle celeberrime Vertex Pipeline dove questi dati vengono istantaneamente convertiti in vertici. Successivamente, le stesse Pipeline, provvedono a disporre i vertici per formare le strutture tridimensionali (prendono i granellini di sabbia e li comprimono uno sull’altro a formare la sedia di prima, un po’ come costruire un oggetto coi lego) mentre una sezione apposita delle stesse Vertex Pipeline applica le procedure di “alleggerimento”. Queste procedure, che vengono eseguite in contemporanea con la creazione della struttura 3D (cioè con la disposizione dei vari vertici nello spazio virtuale) sono identificabili con due fasi fondamentali.
La prima è detta Clipping ed altro non è che l’individuazione delle superfici coperte: nel caso della sedia (insisto!) le superfici su cui poggia il vostro corpo risulteranno invisibili così come le parti del vostro corpo a contatto con la sedia….quindi è inutile che la scheda si prenda la briga di calcolarle e vengono pertanto eliminate con il clipping alleggerendo il carico di lavoro complessivo.
L’altra fase di una certa importanza è chiamata invece Culling e si occupa di eliminare dai dati in elaborazione tutti quelli relativi a superfici che, anche se non a contatto con altre, sarebbero comunque invisibili a causa di altri fattori quali la distanza o la presenza di oggetti in primo piano. Anche in questo caso si tratta di un’ottimizzazione che toglie lavoro alla GPU e permette un calcolo più rapido della schermata da visualizzare.
Al termine di queste operazioni le Vertex Pipeline hanno esaurito il loro compito e danno come risultato in uscita una schermata 3D grezza in cui però tutte le forme sono state definite: è stata creata la struttura dell’immagine!
La schermata risultante viene passata alle altrettanto celeberrime Pixel Pipeline assieme con un’altra quantità di dati relativa alla definizione ed al posizionamento di una serie di oggetti che serviranno nelle fasi successive (principalmente texture, luci, colori). Il primo tipo d’elaborazione che si svolge all’interno delle Pixel Pipeline è il processo di mappatura: cioè l’applicazione delle textures sulla struttura 3D. Quando queste saranno posizionate l’immagine non avrà più l’aspetto della struttura nuda, ma compariranno colori e differenze di materiale fra i vari oggetti, secondo quanto definito dai dati relativi all’applicazione. Non è un’operazione complessa ma è dispendiosa in termini hardware poiché in programmi (e giochi soprattutto) moderni ci sono molte texture di elevata complessità da applicare sulle superfici.
Sempre all’interno delle Pixel Pipeline vengono poi applicati gli effetti luminosi: questo è un procedimento più complesso rispetto alla mappatura in quanto prevede il posizionamento di una o più fonti luminose nello spazio, il calcolo dell’intensità luminosa di ciascuna fonte e l’applicazione degli effetti su tutte le superfici….avete presente la differenza fra avere le ombre al massimo od al minimo su una ATI x700 mentre giocate a Doom 3? Importante è anche il colore delle sorgenti luminose perché gli effetti sugli oggetti saranno diversi. Per la cronaca la luce bianca è più leggera da gestire….oblivion al tramonto perde in framerate…..
A questo punto segue l’applicazione dei vari filtri e miglioramenti estetici: AA,AF e compagnia bella. Per sapere cosa fanno leggetevi la guida ai driver in questa stessa sezione se vi accontentate di una spiegazione veloce eccola:
- Anti Aliasing: riduce le scalettature delle linee diagonali calcolando il singolo pixel come una serie di più pixel tanto più numerosa tanto più “pesante” è il filtro applicato. Chiaramente più pixel da calcolare significa più qualità e meno prestazioni per la nostra scheda.
- Anisotropic Filter: migliora la qualità delle superfici visualizzate sotto un angolo (tipo la strada in un gioco di macchine, i pavimenti di Quake, etc.) non è particolarmente pesante per le schede più moderne.
Dopo l’applicazione dei filtri siamo all’ultima fase di lavoro per le Pixel Pipeline chiamata Z buffer. Non si tratta altro che di un’ottimizzazione simile a quella fatta in fase di Culling solo che questa è fatta a schermata finita tenendo conto del punto di vista dell’osservatore. Fatto ciò la schermata viene sparata all’uscita video che effettuerà anch’essa qualche correzione per poterla sparare in tutta tranquillità sui nostri schermi bidimensionali.
Tutto questo processo che abbiamo visto a partire dall’entrata dei dati nella scheda, avviene in una frazione di secondo e serve a generare una singola schermata 3D. Se avviene in un 20esimo di secondo avrete un framerate pari a 20….se avviene in un 50esimo di secondo è meglio!
Caratteristiche tecniche da valutare per l’acquisto.
Spesso chi non ha dimestichezza tenda a valutare le prestazioni di una GPU con la quantità di Ram con la quale è equipaggiata…e rischia di prendere una fregatura. I miei inestimabili consigli sono i seguenti:
- Come abbiamo visto le Pipeline (vertex e pixel) sono FONDAMENTALI anche più della frequenza del chip…quindi assicuratevi che il numero di queste sia adeguato. Le schede più moderne montano 8 unità di Vertex e 48 di Pixel Pipeline. Con alcune schede in uscita prossimamente queste Pipeline saranno unificate (perlomeno pare sarà così sulle schede ATI, nVidia dovrebbe invece rimanere sull’archittettura a Pipeline diversificate) ovviando al problema che nella distinzione dei compiti uno dei due tipi di Pipeline possa essere completamente impegnato mentre l’altro risulta in parte scarico. Comunque più sono meglio è.
- Controllate le frequenze del chipset grafico. Anche qui numeri grandi sono migliori.
- Non fatevi abbindolare dal quantitativo di RAM: il crudo numero di Mb dice poco. Per cominciare assicuratevi che la RAM sia effettivamente e fisicamente installata sulla scheda video: molte schede economiche utilizzano una parte della memoria sulla scheda madre in condivisione per effettuare le loro operazioni e questo può diventare un collo di bottiglia micidiale…..trovate confezioni di schede video con scritto 128 o 256Mb a caratteri cubitali mentre leggendo le righe piccole scoprite che utilizzano invece quel quantitativo dalla RAM di sistema….questo è molto comune sui portatili. Di solito troverete specificato che il quantitativo di memoria indicato funziona con tecnologia Hyper Memory o Turbocache: queste parole indicano esattamente ciò che sarebbe preferibile non avere sul proprio PC, a meno di non usarlo solo per applicazioni 2D: la memoria specificata non è residente sulla scheda video ma è quella che il chipset grafico utilizza a spese della RAM di sistema con conseguente calo delle prestazioni dovuto sia al maggior tempo d’accesso richiesto, sia al minor quantitativo di memoria a disposizione del processore….quindi cercate di essere sempre consapevoli di ciò che acquistate e non leggete mai le caratteristiche tecniche di una scheda video con superficialità..Inoltre esistono diversi tipi di RAM grafica: GDDR, GDDR2, GDDR3 con prestazioni che crescono notevolmente all’aumentare del numero. E per finire considerate sempre la larghezza del bus: questo è un numero indicato in bit (64,128,256,512) che indica la velocità di comunicazione dati fra memorie e chip grafico: inutile avere un chip velocissimo con delle DDR3 collegate da un bus, per assurdo, a 64bit: è come cercare di far mangiare una bistecca ad una formica. Ad esempio di ciò abbiamo le prestazioni di schede vecchissime, a livello di concepimento, che fanno ancora mangiare la polvere a tante schede economiche odierne in termini di prestazioni: perché il loro bus è ben bilanciato con la velocità del chip ed il quantitativo delle RAM.
- Infine controllate sempre la compatibilità con le librerie grafiche di microsoft più recenti, le famose direct x (ad oggi siamo alle 9.0 e qui il buon n'Bryo ha aperto un topic con il link per l'aggiornamento AGGIORNAMENTO e la versione degli shader supportata (ad oggi 3.0). la compatibilità con le ultime versioni non indica un incremento di prestazioni (ci sono ancora schede con shader 2.0 che battono schede anche di fascia media moderne come velocità pura) ma testimonia la possibilità di utilizzare tecniche di programmazione grafica avanzata e di conseguenza una qualità nettamente superiore.
- Dimenticavo: per avere sottocchio in un colpo solo tutti questi dati andate a vedere il DATABASE di diegoe possibilmente tempestatelo di messaggi con le richieste più assurde. E’ un animo gentile, al contrario del sottoscritto, e vi risponderà finchè le forze lo sorreggeranno.
Grazie ad Andrea (Genesi) per la disponibilità ed i consigli
![Wink :wink:](./images/smilies/icon_wink.gif)
![lol :lol:](./images/smilies/lol.gif)
Bhè ho finito. Spero che tutto ciò possa essere utile. Ciao belli.
V-Sync e Triple buffering questi sconosciuti.
Poichè dalla domande e dalle osservazioni che sono state fatte a seguito della pubblicazione delle mini-guide d’impostazione per l’ottimizzazione dei driver pare che il consiglio di attivare il V-Sync abbia suscitato perplessità credo sia giusto implementare una succosa appendice per spiegare esattamente cosa avviene esattamente quando abilitiamo questa opzione nelle nostre schede video nonché la sua integrazione con il buffering triplo, anch’esso molto noto ma spesso più di nome che di fatto. Inserirò questa "appendice" sia nei due post di guida per driver ATI e nVidia sia nella guida funzionamento/acquisto schede video.
Comincio col dirvi che in condizioni normali la scheda video utilizza due porzioni di memoria per immagazzinare le schermate elaborate. Queste sono chiamate rispettivamente back buffer e frame buffer. Back buffer contiene la schermata appena sfornata dalle procedure grafiche e da questo viene poi spinta nel frame che è un’area di memoria in cui il monitor legge le informazioni e le visualizza. L’insieme del back e del frame buffer è detto buffering doppio. E’ bene ricordare che i monitor (parliamo dei classici CRT) aggiornano lo schermo non in maniera simultanea ma un pixel dopo l’altro partendo da un angolo, terminando una riga e passando quindi a quella successiva. Il numero di volte al secondo che un monitor è in grado di portare a termine questa operazione per l’intera sua area rappresenta la frequenza di aggiornamento massima (refresh). Tenete bene a mente questo perché servirà a comprendere alcuni punti fondamentali che seguiranno.
La frequenza di aggiornamento impostata sul nostro monitor rappresenta quindi un limite insormontabile al numero di frames che possono essere visualizzati. Se il monitor è a 85 Hz anche se la scheda video elaborasse 300 frames al secondo a schermo ne vedremmo sempre e soltanto 85…e li vedremo anche piuttosto male senza il V-Sync attivato. Vediamone il motivo.
Facciamo l’ipotesi di lanciare un gioco che la nostra scheda elabora a 170 frames al secondo su un monitor ad 85 Hz di refresh.
La scheda elabora la prima schermata e la passa dal back buffer al frame buffer ed il monitor comincia a leggerla. Il tubo catodico del nostro monitor comincia a sparare elettroni che disegnano lo schermo alla frequenza di refresh di 85Hz. Quando questo processo sarà a metà ( circa 6 millesimi di secondo a quella velocità) la scheda video avrà terminato l’elaborazione del frame successivo e poiché il V-sync non è abilitato, essa non attenderà che il monitor abbia finito la lettura e sostituirà immediatamente la schermata precedente contenuta nel frame buffer con quella appena elaborata. Il monitor quindi non visualizzerà una parte di un frame ed una parte di un altro. Se la scheda è particolarmente veloce il monitor potrebbe visualizzare parti di 3 o 4 frames contemporaneamente dando un difetto di visualizzazione noto come tearing. Il monitor risulta diviso in sezioni orizzontali che non combaciano l’una con l’altra in quanto parti di frames diversi.
Il tearing si manifesta ogni volta che la scheda genera frames più velocemente di quanto il monitor sia in grado di aggiornarsi. Se il Vs. monitor è a 60 Hz e la scheda genera 70 ogni 6 schermate ci sarà un frame difettoso.
L’abilitazione del V-sync non è altro che obbligare la scheda video a non cancellare il frame buffer fintanto che la lettura da parte del monitor non sia terminata.
Ma il V-sync ha il suo rovescio della medaglia.
Ipotizziamo stavolta, sempre per comodità, di avere il monitor a 100Hz con la scheda video che però genera con quel gioco solo 75 frames. La prima schermata arriva dal back al frame buffer e comincia ad essere letta. Dopo un centesimo di secondo il monito ha finito la visualizzazione di quel frame. Ma la scheda necessita di un settantacinquesimo di secondo per elaborare una nuova schermata e pertanto in quel momento il monitor ritrova nel frame buffer la stessa schermata di prima e ricomincerà a proiettare a video lo stesso frame. Quando il monitor avrà riprodotto circa il 33% del primo frame per la seconda volta nel back buffer della scheda video sarà finalmente pronta la seconda schermata. Essendo abilitato il V-sync la scheda non può passarlo al frame buffer finchè la lettura da parte del monitor non sia terminata. Quindi per circa 6-7 millesimi di secondo la scheda resterà in attesa senza compiere operazioni aspettando di poter liberare il suo back buffer e ricominciare l’elaborazione di un nuovo frame. Il secondo frame sarà visualizzato su schermo al terzo ciclo di refresh del monitor e la scheda avrà perso tempo prezioso. Facendo un rapido ragionamento poiché il monitor effettua 100 refresh al secondo e poiché ogni frame viene visualizzato per 2 cicli nonostante la scheda sia in grado di elaborare 60 schermate i frame al secondo effettivi saranno 50 (100/2). Bella fregatura.
Questo decadimento prestazionale si risolve però con l’abilitazione del triple buffering. In pratica la scheda si crea un’ulteriore buffer di memoria in cui viene elaborata una schermata aggiuntiva eliminando i tempi morti in attesa che il monitor completi il suo ciclo di refresh.
Quindi l’abilitazione simultanea di V-Sync e triple buffering è l’unica combinazione di opzioni che consente di evitare il difetto visivo del tearing ed eliminare al contempo decadimenti prestazionali in caso il framerate della scheda video sia inferiore al refresh del monitor.
Anche l’abilitazione del triplo buffering ha le sue controindicazioni in quanto richiede che un quantitativo di memoria video sia dedicata allo stoccaggio di una schermata finita aggiuntiva e può inoltre risentire comunque di un calo di velocità.
Tuttavia tenete presente che stiamo parlando di circa 3 mega di memoria per quanto riguarda la quantità necessaria da dedicare al terzo buffer. E se 3 mega di memoria rappresentano più del 3% della vostra memoria video è bene che pensiate di cambiare scheda o di rinunciare ai giochi più recenti, anche perché probabilmente hanno requisiti superiori alle caratteristiche dei vostri PC.
Quindi se non avete una scheda medioevale con poca memoria o comunque veramente lenta ed inadatta al gioco come architettura è bene impostare V-Sync e Triple buffer come attivi per godere di una visualizzazione perfetta senza perdite nel framerate. Se al contrario possedete una scheda che non è in grado di generare in alcuna situazione un numero di frames superiore al refresh del monitor, sappiate che non v’invidio per niente, e non abilitate ne l’una ne l’altra opzione.
Sperando che tutto sia abbastanza illuminante mi auguro che a nessuno venga in mente di attivare il Triplo buffering senza il V-sync…….sennò ditemelo che riscrivo il post perché significa che non avete capito una mazza…….
Alla prossima.