Dopo un periodo di pausa dalle guide siamo qui oggi per capire come funziona una scheda video e perché è così importante per giocare.
Come ben sappiamo in questo periodo è in atto la più grande carenza di chip elettronici di ogni tipo che si fosse mai registrata prima e, proprio per questo, è diventato di vitale importanza per tutti imparare a scegliere correttamente i componenti di cui si necessita proprio per non andare a privare di quel componente un altro utente che invece lo andrebbe ad usare molto meglio.
Sicuramente il componente più complicato da capire e valutare in un PC è stata da sempre la GPU, proprio perché è come un grosso processore, ma al momento stesso è anche completamente diversa da un processore.
Oggi andremo a vedere com’è fatta una scheda grafica, come funziona e quali sono i parametri che ne regolano il funzionamento.
Perché esistono GPU considerate da lavoro o da gaming, cosa cambia? Bene, capiamolo insieme. Spesso si sente parlare di un esempio, ossia il confronto che si fa tra schede consumer e schede da lavoro, le famose “Quadro” di cui avrete sentito sicuramente parlare.
Vediamo le differenze tra una RTX 3090 e una RTX A6000. Entrambe sono delle top di gamma nel loro genere. La prima costa circa 1500 euro mentre l’altra non c’è prezzo per pagarla; la prima ha 10496 core a 1695 MHz e 24GB di memoria a 384 bit mentre la seconda possiede 10752 core a 1800 MHz e 48GB di memoria a 384 bit.
A questo punto potremmo pensare “Bene, costa un rene, ha più core e memoria ed è più veloce; sicuramente farà 500 fps da spenta, compriamo quella!”.
E invece no…
La Quadro in gioco ha la metà delle prestazioni di una normalissima 3090.

Ma come? Nvidia ci vuole fregare? Certo che no!
Semplicemente ogni singola scheda è progettata con precisi parametri tecnici e architetture per svolgere dei carichi ben precisi, pertanto ogni GPU deve essere usata per quello per cui è stata progettata.
Come non si potrebbe pensare di utilizzare una 3060 per fare effetti speciali in computer grafica stile Marvel Cinematic Universe (ndr: la quale prenderebbe fuoco prima di aprire il programma), similmente non si può pensare di giocare con una scheda grafica la cui architettura è stata pensata per la computer grafica e l’IA.
Per esempio le Quadro e le RTX hanno architetture completamente differenti, in grado di svolgere tipologie di calcolo completamente diverse l’una dall’altra, perciò sebbene la potenza bruta sia all’incirca quella, le prestazioni reali variano in base al tipo di applicativo che si usa. Questo è il motivo per cui non possiamo utilizzare una Quadro per giocare, poiché ha un’architettura troppo specifica a fare altro e il rendering nei giochi non è molto brava a farlo. Stessa cosa vale per le RTX solo che di solito non ci facciamo caso poiché non abbiamo come termine di paragone le prestazioni che ha una Quadro in quel contesto.
Ragion per cui i recensori di componenti molto spesso ci consigliano dei determinati componenti per uno specifico utilizzo.
Non credo troverete mai online qualche recensore che vi dirà “compratevi una Quadro da 7000 euro per giocare in 4K a Cyberpunk”, ma in qualunque caso non fatelo.
Ora che ho fatto questa “piccola” introduzione e avete capito anche voi perché è importante scegliere i componenti consapevolmente, andiamo a vedere a che serve una scheda grafica, com’è fatta e come funziona.
A cosa serve una scheda grafica
Una scheda grafica o GPU (Graphics Processing Unit) è un componente informatico complesso che si occupa dell’esecuzione di calcoli di tipo grafico.
Mentre il processore, definito “cuore” di un computer, è in grado di svolgere qualsiasi tipo di calcolo, sia grafico che non, la scheda grafica possiede delle strutture molto più specializzate e proprio per questo può svolgere solo i calcoli per i quali è stata pensata.
Il processore è solitamente un piccolo componente composto da un circuito stampato che interfaccia la scheda madre al pezzo di wafer di silicio, contenente i componenti veri e propri di un processore, ossia le unità di calcolo e di controllo. Proprio per questo è solitamente un componente molto più piccolo di una scheda grafica. Ma allora perché le schede grafiche sono così grandi?
La scheda grafica sebbene sia considerata un componente unico in realtà può essere considerata come un altro computer vero e proprio. Proprio come un computer è dotata di una scheda madre (il circuito stampato di cui è composta), di un processore (in questo caso specializzato a eseguire calcoli grafici), una memoria centrale e dei bus di interconnessione, nonché di un circuito di alimentazione e raffreddamento propri.


Differenza tra CPU e GPU
Le GPU moderne, sebbene operino a frequenze più basse delle CPU, sono molto più veloci di esse nell’eseguire i compiti in cui sono specializzate.
La GPU attualmente entra pesantemente in funzione solo nell’accelerazione 3D; nell’accelerazione 2D i dati vengono elaborati dalla CPU e allocati dalla GPU in una parte della memoria chiamata framebuffer; da lì, il RAMDAC (random access memory digital-to-analog converter) legge i valori di colore da assegnare ai singoli pixel e genera il segnale per lo schermo.
Diversamente, quando viene elaborata un’immagine 3D, la CPU del computer si occupa solo del calcolo delle coordinate geometriche dei vertici dei poligoni che compongono gli oggetti della scena, e lascia alla GPU il compito di riempire le facce formate da questi vertici (mesh) e del calcolo delle ombre e degli effetti grafici da applicare ai poligoni, sgravandosi da pesanti operazioni di calcolo. Dopo di ciò i dati risultanti verranno normalmente posizionati nel frame buffer, per poi passare per il RAMDAC e arrivare alla resa grafica.
Uno dei motivi per il quale le GPU sono più veloci ad eseguire dei calcoli grafici rispetto ad una CPU è il fatto che le GPU svolgono calcoli in modo parallelo e non in modo seriale come fanno invece le CPU, inoltre queste ultime sono dotate di molti più core di un processore e ogni core possiede gli elementi per svolgere dei calcoli grafici in modo che ognuno di essi sia indipendente dagli altri e possa svolgere calcoli diversi contemporaneamente (che poi una volta messi insieme daranno vita all’immagine finita).
La ragione per cui una GPU può contenere molti più core rispetto a un processore è data dalla natura stessa dei core.
I core di una CPU dovendo svolgere tipologie di calcolo molto differenti tra loro, devono possedere molte più ALU, ognuna specializzata in una tipologia di calcolo, pertanto questi core occuperanno molto più spazio.

I core di una GPU invece devono svolgere dei calcoli molto più limitati e specifici pertanto risultano molto più piccoli ed è possibile inserirne molto di più in uno stesso die.
Come viene creata un’immagine
Il seguente paragrafo è puramente tecnico per cui se non siete interessati all’argomento potete anche passare oltre.
Un’immagine 3D viene creata da CPU e GPU in una serie di passaggi che permettono di partire da una serie di informazioni di base che noi abbiamo sulla scena, espresse in bit, che poi vengono elaborate per diventare un’immagine a colori in 2D.
La CPU nel rendering 3D si occupa soltanto di prendere i dati sui punti della scena e calcolarne la loro posizione nello spazio; poi questi verranno trasferiti alla scheda grafica dove vengono trasformati (traslati, ruotati ecc.) e poi messi insieme per creare immagini.
I passaggi di elaborazione della scena sono vari e numerosissimi e ognuno si occupa di un particolare aspetto dell’elaborazione.
Tutte le figure tridimensionali venivano elaborate in passato dai computer utilizzando due unità basilari: triangoli e quadrati.
Con l’introduzione del “Geometry shader” che è in grado di trasformare le figure più semplici in figure più complesse aggiungendo punti, segmenti ecc. è divenuto possibile utilizzare qualsiasi tipo di elemento basilare: punti, segmenti, triangoli, quadrilateri e così via.
Le informazioni sulla posizione dei vertici di queste figure sono memorizzati nei file del programma che stiamo eseguendo.
Queste informazioni vengono prelevate dal processore e vengono elaborate calcolando la posizione di ciascun vertice, creando così degli elementi geometrici che si posizionano nello spazio e che poi verranno messi insieme, verranno dotati di texture ed effetti grafici vari.
Il primo stadio dell’elaborazione 3D è proprio “l’assemblaggio dei dati input” che viene fatto dal processore. Alla fine di questo processo avremo una serie di vettori che descrivono degli elementi geometrici. Queste figure sono caratterizzate da varie grandezze: una normale, una posizione e delle coordinate della texture.
Questi vengono poi manipolati, gli vengono attribuite delle caratteristiche fisiche e degli effetti grafici e infine assemblati e renderizzati.
Il secondo passo è proprio quello di manipolazione operato dagli shader. Gli shader sono una famiglia di processi di elaborazione di un’immagine e ne esistono tantissimi, alcuni in grado di manipolare la geometria degli elementi creati dal processore, altri che si occupano di aspetti diversi. I principali e indispensabili sono i seguenti:
Il “Vertex shader” si occupa della modifica delle figure ottenute dal processore in base ad algoritmi e regole dettate dal programma, per esempio se necessario ne può essere modificata la posizione.
Poi abbiamo il “Tessellation shader” che nel complesso ha il compito di dividere in tanti piccoli triangoli queste figure ottenute in modo da avere elementi più piccoli e dettagliati sui quali lavorare.
Abbiamo poi il “Geometry shader” che trasforma gli elementi di base creati fin’ora in figure più complesse aggiungendo dei vertici e assemblando il tutto.
Finito il processo di creazione e modifica degli elementi avremo a questo punto un insieme di figure tridimensionali finite. Queste devono essere trasformate in 2D tenendo conto della loro posizione 3D (e quindi rispettando la loro posizione tridimensionale: la loro distanza dal punto di vista, che ne determinerà quale degli elementi è visibile o meno se più elementi si sovrappongono).
A questo punto interviene il rasterizzatore o render (fase di rendering) che ha il compito di trasformare queste figure in pixel, utilizzando le informazioni che sono state elaborate fin’ora: texture, posizione, forma, luci, ombre ecc.
Infine il “Pixel shader” o “Fragment shader” si occupa di assegnare un colore a ciascun pixel.
Quest’immagine verrà poi inviata al Framebuffer per essere tradotta dal RAMDAC e riprodotta su uno schermo.

Questo è il processo sommario che porta alla creazione di una scena 3D molto basilare partendo da informazioni grezze che ci vengono fornite dal programma.
Oltre a queste tecniche di elaborazione ne sono presenti tante altre che permettono di applicare effetti grafici particolari come per esempio luci, ombre e riflessi (effetti grafici come ombre, ambient occlusion, filtri anti aliasing o i filtri anisotropici), di calcolare la profondità degli oggetti nello spazio, i fenomeni di sovrapposizione, di riflessione, di rifrazione e via dicendo.

La tecnica più avanzata finora per il calcolo di alcuni di questi effetti grafici (ombre, riflessi e illuminazione globale) è il Ray-tracing che si basa su un processo simile al ray-casting (tecnologia precedente) ma utilizzando un percorso inverso.
Questo genere di calcoli è molto complesso da eseguire in real-time, motivo per cui per essere utilizzabile è necessario avere dei core dedicati esclusivamente a quello e che siano altamente specializzati (i cosiddetti RT core delle nuove architetture Nvidia).
Struttura di una scheda grafica
Una scheda grafica a livello macroscopico è composta da vari elementi.

Abbiamo una GPU, ossia il processore grafico, delle memorie RAM, dei regolatori di tensione, delle interfacce di output video (di cui ho parlato nello specifico in un’altra guida), l’interfaccia di interconnessione con la scheda madre del computer, ossia la porta PCI-e (anche di queste ho fatto una guida), e infine un’interfaccia di connessione con altre GPU ad alta banda (SLI, NVLink o Crossfire).

Ognuno di questi componenti ha un compito ben preciso.

Il circuito di alimentazione, composto da connettori di alimentazione, pin di alimentazione PCI-e e dai regolatori di tensione, serve per fornire il giusto voltaggio e la giusta potenza al processore.
Il circuito di elaborazione è composto da GPU e VRAM ed è deputato alla manipolazione e rifinitura dei poligoni forniti dal processore.
I bus e le interfacce di comunicazione (PCI-e e connessioni inter-GPU) servono invece per interfacciare la GPU ad altre GPU e/o al processore, permettendo alla CPU di sincronizzare le varie operazione tra le varie GPU a seconda di ciò che bisogna elaborare, e di trasmettere alle GPU i dati grezzi prodotti dalla CPU che devono essere lavorati.
Le interfacce di output video servono invece per trasmettere alle periferiche di output il risultato finito.
Ma come è composta una GPU? Che differenze ci sono con una CPU?
La CPU è composta da 4 elementi principali che a loro volta si dividono in altre componenti più specifiche: controller video, controller di memoria, cache e core.

I core sono composti da varie parti che permettono di svolgere i calcoli più disparati, proprio perché la CPU deve essere in grado di svolgere qualsiasi tipo di calcolo che gli viene proposto (motivo per cui sono più grandi e ingombranti dei core di una GPU).
Le parti principali di un core sono: CU, ALU e registri. La CU (Control Unit) serve a coordinare le operazioni eseguite dall’ALU (Arithmetic-Logic Unit). I registri sono un tipo di memoria interna ai core che possono contenere informazioni che servono per svolgere un determinato calcolo mentre questo viene eseguito in modo da avere accesso diretto a queste ultime e svolgere il calcolo più velocemente.
La Cache è un’altra memoria ad accesso rapido che si divide in 3 livelli e serve a immagazzinare i dati che vengono richiamati più spesso dalla CU per svolgere dei determinati calcoli. Poiché la cache non è interna al core questa si interfaccia con i core tramite dei Bus che sebbene siano ad altissima velocità causano una latenza nel sistema che cresce man mano che si scende di livello cache. Abbiamo infatti la cache L1 che è la più veloce, la cache L2 che è quella intermedia e infine la cache L3 che è la più lenta (anche se parliamo comunque di velocità altissime, sia chiaro).
Proprio perché sono memorie interne al processore, sia i registri che la cache hanno delle dimensioni molto molto limitate. I registri sono dell’ordine dei bit (8, 16, 32 ecc.) mentre la cache parte da pochi kiloByte fino ad alcuni MegaByte della cache L3 (nei processori moderni anche 64 MB).
Abbiamo poi il controller video che serve per permettere al processore di comunicare con la GPU e il controller di memoria che permette alla CPU di interfacciarsi con la memoria RAM che contiene tutte le informazioni che non possono essere immagazzinare nella cache e nei registri.
I core in un processore possono variare da 1 a più core ma solitamente i processori consumer vanno dai 2 ai 16 core. Questo li differenzia enormemente dalle GPU poiché queste ultime hanno solitamente migliaia di core.



Inoltre i core di un processore sono tra di loro indipendenti ma in grado di svolgere processi solo in serie, pertanto ogni core può svolgere calcoli differenti l’uno dall’altro, cosa che li rende adatti per svolgere i calcoli più disparati (come l’esecuzione di un programma) ma che li rende praticamente inutilizzabili per il calcolo grafico che come abbiamo visto sopra sono un insieme di poche tipologie di calcolo che però devono essere ripetuti tantissime volte ogni secondo, motivo per cui i core di una GPU lavorano insieme (parallelamente) a uno stesso lavoro e sono molto più numerosi.
All’interno del die di una GPU ritroviamo vari elementi, come per le CPU anche queste sono dotate di vari elementi, alcuni di questi in comune con più gruppi di core altri invece propri di un solo gruppo di core.
Come detto quindi l’unità di base che svolge i calcoli in una GPU sono i core, core che anche qui sono composti da vari elementi (ma non andrò a descriverli perché scendiamo troppo e inutilmente nel dettaglio). Vi basti sapere che a differenza delle CPU in cui abbiamo ogni core indipendente nelle GPU ritroviamo gruppi di core composti da tante unità uguali che svolgono gli stessi calcoli in modo parallelo (ognuno elabora un pezzo della stessa immagine) che poi vengono messi insieme per creare l’immagine finita. Più gruppi di core possono svolgere calcoli diversi in modo da avere più immagini finite al secondo (i famosi fps). Quindi una GPU, più core ha e più immagini potrà renderizzare al secondo, ebbene no, poiché in realtà è molto più complicato di così.





Nelle prestazioni complessive giocano un ruolo molto importante tanti fattori differenti, non solo il numero dei core ma anche la loro architettura, il numero dei transistor di cui sono composti, la frequenza, la quantità di cache, la velocità dei bus di comunicazione ecc.
Parametri di una scheda grafica
Valutare la potenza concreta di una scheda video, sebbene molto spesso si ricorra ai cosiddetti Flops (Floating point operations per second), in realtà è un qualcosa di IMPOSSIBILE.
Prendendo in considerazione più fattori si può risalire più o meno ad una stima della potenza media di una scheda ma le sue prestazioni effettive sono completamente un mistero fino a che non si prova la GPU sul campo.
Ma perché molto spesso i recensori di GPU ci dicono che non è possibile utilizzare i Flops per valutare le prestazioni di una GPU? Questo non è sbagliato, ma nemmeno completamente vero.
I Flops sono solo un’indicazione approssimativa su quanti calcoli, in condizioni ottimali, quella scheda può eseguire al secondo, tuttavia nell’utilizzo in ambiente reale entrano in gioco tanti fattori diversi che cambiano da scheda a scheda, come per esempio le temperature, la velocità e ampiezza dei Bus, la velocità delle memorie, l’architettura e tante cose ancora.
Questo è il motivo per cui si possono utilizzare i Flops solo per un confronto molto approssimativo tra due schede appartenenti alla stessa generazione (per esempio una 3060 con una 3070).
L’unico modo per conoscere le prestazioni reali di una scheda grafica è quello di trovare i test effettuati in gioco delle varie recensioni. Tuttavia andare a guardare le specifiche di una GPU può comunque risultare utile per gli utenti più esperti per andare a fare delle previsioni sulla potenza di quella scheda, prima che questa possa essere testata veramente.
I parametri più importanti che si guardano di solito sono: il numero di core, la frequenza dei core e la larghezza di banda delle memorie (che dipende sia dalla velocità delle memoria, sia dalla larghezza del bus, anche se in realtà include anche altri parametri). Il numero di core indica quante unità singole di calcolo sono presenti nel chip. Ovviamente più sono e più calcoli potrà svolgere la scheda nell’unità di tempo.
La frequenza dei core è molto relativa perché indica semplicemente quanti cicli eseguono i core ogni secondo. Chiaramente più alta è e meglio è, tuttavia dipende anche da quante operazioni in virgola mobile riesce ad eseguire ogni core in ogni ciclo (parametro che viene considerato per calcolare i Flops).
La larghezza di banda delle memorie indica invece quanto è veloce la trasmissione dei dati tra la GPU e la VRAM, più veloce è e meno collo di bottiglia si crea. La larghezza di banda dipende sia dalla velocità delle VRAM sia dalla larghezza del bus di collegamento (128 bit, 256 bit ecc.).
Altro parametro importante è ovviamente anche l’architettura poiché un architettura più nuova è sicuramente più efficiente di una più vecchia nell’eseguire i calcoli, dunque due GPU con lo stesso numero di core non potranno avere prestazioni uguali se hanno architetture differenti.
Conclusioni
Per trarre le conclusioni, l’unico modo per rendersi conto della GPU più adatta ad un dato utilizzo è quello di informarsi sulle prestazioni reali tramite le recensioni.
In seguito a questa guida, ne rilasceremo un’altra in cui consigliamo delle GPU per determinati utilizzi e fasce di prezzo, perciò tenetevi aggiornati!