La Computer Graphics festeggia già mezzo secolo da quando nacque come “disciplina che studia le tecniche e gli algoritmi per la visualizzazione delle informazioni numeriche” e da allora si è sviluppata al punto da essere oggi la scienza base per interi settori di mercato come l’elaborazione fotografica, il videomontaggio in cinematografia, la progettazione meccanica, la visualizzazione dei dati scientifici e medicali e l’interpretazione ottica dei segnali catturati dai sensori. Alcune di queste applicazioni hanno vissuto un percorso evolutivo talmente importante che fu giocoforza arrivare al progetto e allo sviluppo dei processori per l’elaborazione grafica, come dispositivi con caratteristiche ben definite e tali da imporsi come categoria di mercato a sè stante.
I protagonisti del calcolo grafico stanno oggi lavorando sulla grafica 3D, ossia quella forma di visualizzazione che consente di creare dei modelli grafici capaci di rappresentare le immagini bidimensionali in oggetti visibili sulle tre dimensioni. Per far ciò si utilizzano i cosiddetti motori di “render”, che sono complessi sottoprogrammi composti da decine di algoritmi eseguiti simultaneamente in parallelo e capaci di simulare sia il comportamento della luce sia le proprietà ottiche e fisiche dei materiali e degli oggetti. L’approccio utilizzato in questi motori grafici consiste nel descrivere gli oggetti come risultati di operazioni booleane fra più geometrie solide predefinite, oppure come l’interpolazione algebrica fra più poligoni ideali. Maggiore è il numero degli oggetti base o dei poligoni e più complessa e precisa è la rappresentazione dell’oggetto e viceversa, usandone in minor numero, l’effetto 3D può risultare visivamente meno evidente ma si alleggerisce il lavoro per l’unità di calcolo.
In altre parole, si estraggono dall’immagine le forme geometriche primitive che la caratterizzano e poi si processano in modo da trasformarle, tenendo conto di tutte le possibili varianti legate agli effetti introdotti dall’illuminazione e dalle ombre visibili in funzione delle diverse posizioni dell’osservatore, fino a comporre e riprodurre tutti gli aspetti e le sfaccettature che caratterizzano le immagini realmente osservate. Si effettua così il “rendering” ossia la riproduzione dell’immagine a partire dal modello matematico, ricomponendo insieme un numero di immagini primitive adeguato per riprodurre con buona fedeltà ciò che si osserva direttamente con gli occhi. Le equazioni matematiche alla base dell’elaborazione poligonale richiedono una notevole potenza di calcolo parallelo, necessaria per confrontare le interpolazioni fra le primitive e decidere di volta in volta quale risultante corrisponda maggiormente alle condizioni al contorno in termini di illuminazione e posizione dell’osservatore.
La complessità dei calcoli cresce con il numero delle immagini primitive e con il numero delle variabili considerate per gli effetti e per la visualizzazione 3D si parla di almeno un ordine di grandezza in più rispetto alla complessità introdotta dall’alta definizione. Non è un caso se entrambe queste tecnologie siano ancora poco considerate per i videogiochi giacché possono effettivamente rallentare la velocità di gioco proprio nei giochi con i contenuti grafici più impegnativi. D’altro canto, questo è comunque un buon motivo per incoraggiare lo sviluppo dei processori grafici più potenti e vent’anni fa fu proprio l’incessante domanda di prestazioni grafiche e di processori pensati per tale compito il più importante stimolo che ha trainato l’evoluzione delle tecnologie di calcolo parallelo da entrambi i punti di vista software e hardware.
Oggi le GPU, Graphics Processing Unit, si differenziano dalle CPU (Central Processing Unit, acronimo coniato da IBM nel 1958) proprio per l’architettura sul silicio. Le moderne CPU hanno generalmente due, quattro o otto core molto potenti e sono in grado di eseguire soprattutto in modalità sequenziale una gran varietà di funzioni che possono anche essere correlate con una struttura ben precisa di interrupt. Le GPU sono, invece, realizzate integrando centinaia di unità aritmetiche ALU, Arithmetic Logic Unit, strutturate in modo da svolgere a ogni colpo di clock centinaia di elaborazioni poligonali in parallelo. Per questo motivo sono circondate da complesse interfacce di controllo specializzate per fornire in ogni ciclo migliaia di sequenze di dati sui poligoni primitivi e raccogliere i risultati dei calcoli per l’interpretazione grafica necessaria prima della successiva visualizzazione.
Attualmente per i chip grafici si parla di TeraFlops (1012 operazioni in virgola mobile al secondo) e tanta potenza di calcolo deve forzatamente essere circoscritta in processori GPU capaci di sollevare la CPU centrale dei computer da tali mansioni e così pensano i principali costruttori che hanno scelto come configurazione ottima per i moderni PC una struttura con CPU centrale a svolgere le funzioni di sistema e al suo fianco una GPU dedicata alla creazione del segnale da inviare al terminale di visualizzazione. Oggi, tuttavia, si fabbricano anche processori single-chip con CPU e GPU sopra lo stesso silicio e anche architetture ibride multicore nelle quali uno o due core fanno da CPU e gli altri lavorano come GPU. Architetture ibride di questo tipo si trovano anche nella forma di moduli di proprietà intellettuale implementabili a bordo dei grandi Fpga e in tal caso, tuttavia, le prestazioni matematiche sono inferiori e non consentono di soddisfare applicazioni grafiche impegnative, ma si ottengono i due importanti vantaggi del prezzo più accessibile e della relativa semplicità di interfacciamento che gli Fpga notoriamente offrono.
Tre protagonisti
Fig. 1 – Architettura del processore grafico HD 7970 oggi disponibile anche nella versione GHz Edition capace di 1,01 TeraFlops
Advanced Micro Devices ha ulteriormente ampliato la famiglia dei suoi processori Radeon introducendo la nuova serie HD 7900M caratterizzata dalla geometria di riga da 28 nm che li rende particolarmente parsimoniosi e ne consente l’uso anche nei computer portatili. L’architettura “Graphics Core Next” è stata potenziata con le tecnologie AMD Enduro (ottimizza la distribuzione delle risorse fra i singoli core), Powergate (toglie alimentazione alle parti non attive) e ZeroCode (gestisce alcune funzioni internamente alla GPU senza bisogno della CPU) che ne migliorano l’efficacia di elaborazione grafica soprattutto sui contenuti video ricchi di immagini in movimento come tipicamente accade nei videogames. La nuova GPU HD 7970 GHz Edition ha a bordo 32 core grafici (ciascuno dei quali con 64 Stream Processor che sono le unità algebriche vettoriali ideate da AMD) tutti con clock di 1 GHz per una velocità di elaborazione complessiva di 1,01 TeraFlops in doppia precisione e 4,3 TeraFlops in singola precisione.
Intel ha sviluppato i suoi nuovi processori Ivy Bridge con processo die-shrink in geometria di riga da 22 nm perfezionando le già notevoli prestazioni della tecnologia Sandy Bridge a 32 nm e intende investire molto per adeguare i propri stabilimenti alla produzione d
i questi nuovi chip sopra ai quali troveremo finalmente i già famosi transistor tri-gate soprannominati 3D per la forma verticale della loro base. I nuovi processori Ivy Bridge avranno 2 o 4 core e frequenza di clock da 3,1 a 3,5 GHz e in tutti i modelli della famiglia uno dei core è sempre una GPU composta da 6 fino a 16 Compute Unit (unità algebriche Intel) e destinata a svolgere le mansioni di elaborazione grafica. Le novità introdotte in termini di prestazioni grafiche sono svariate e raccolte nella Visual Technology che consiste in una suite di algoritmi sviluppati per migliorare la qualità e la definizione delle immagini riprodotte fra cui sono comprese le tecnologie Clear Video HD e 3D Graphics che consentiranno l’elaborazione dei formati ad alta definizione e dei contenuti grafici 3D.
L’architettura dei processori grafici Nvidia Kepler ha un’innovativa concezione dello streaming multiprocessore che consente ai core di elaborazione grafica di comunicare fra di loro senza bisogno della CPU e ciò consente di migliorare l’efficienza del calcolo algebrico. In pratica, i singoli core possono sfruttare l’alta velocità delle interconnessioni Hyper-Q per avviare decine di elaborazioni poligonali in parallelo e passarsi internamente i dati sui poligoni in modo da eseguire completamente ciascuno degli algoritmi per poi richiamare la CPU solo al momento di fornire i risultati finali. La possibilità di ottimizzazione dinamica dei core di calcolo consente di ridurre i tempi di inattività e permette di eseguire più rapidamente un maggior numero di algoritmi in parallelo. Con questo approccio i nuovi GK110 consentono di implementare software di calcolo parallelo capaci di superare 1 TeraFlops eseguendo con un solo loop multiplo fino a 192 algoritmi poligonali.