Graphics Processing Unit

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – "GPU" rimanda qui. Se stai cercando altre voci che possono riferirsi alla stessa combinazione di 3 caratteri, vedi GPU (disambigua).

L'unità di elaborazione grafica (abbreviazione comunemente utilizzata: "GPU")[1] o unità di elaborazione visiva (abbreviazione comunemente utilizzata: "VPU")[2] o processore grafico o processore visivo[3] è una tipologia particolare di coprocessore che si contraddistingue per essere specializzata nel rendering di immagini grafiche. Il suo tipico utilizzo è come coprocessore della CPU e da alcuni anni, viene anche utilizzata in generiche elaborazioni dati.[4]

La GPU è tipicamente implementata come microprocessore monolitico e, da alcuni anni, viene anche implementata assieme alla CPU nel medesimo circuito integrato.[5] Da alcuni anni vengono anche prodotti processori multicore formati da più core di GPU.

Descrizione[modifica | modifica sorgente]

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. Difatti, 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, chiamate in gergo Mesh, e del calcolo delle ombre e degli effetti grafici da applicare ai poligoni, sgravandosi da pesanti operazioni di calcolo. Dopo di ciò normalmente i dati risultanti verranno posizionati nel frame buffer, per poi passare per il RAMDAC ed arrivare allo "schermo".

Storia[modifica | modifica sorgente]

Le moderne GPU discendono dai chip grafici monolitici di fine anni settanta e degli anni ottanta.

Questi chip non avevano la funzione BitBLT, o l'avevano solo sotto forma di sprite, e solitamente non avevano funzioni per il disegno di forme.

Alcune GPU potevano eseguire più operazioni in una display list, e potevano usare il DMA per ridurre il carico sulla CPU; uno dei primi esempi è stato il co-processore ANTIC usato sul computer Atari 800 e Atari 5200. Alla fine degli anni ottanta e all'inizio degli anni novanta, le GPU di fascia alta venivano spesso implementate con microprocessori non specializzati ad alta velocità; alcune schede grafiche (molto costose) per PC e workstation usavano chip DSP (digital signal processor) (come la serie TMS340 della TI) per implementare funzioni veloci di disegno, e molte stampanti laser venivano fornite con un elaboratore di immagini raster PostScript (un caso speciale di una GPU) funzionante su una CPU RISC come l'AMD 29000.

Man mano che la tecnologia di costruzione di chip migliorava, è diventato possibile spostare sia le funzioni di disegno sia la funzione BitBLT sulla stessa scheda (e, in seguito, nello stesso chip) insieme ad un normale controllore di frame buffer come il VGA; questi "acceleratori 2D" semplificati non erano così flessibili come le GPU basate su microprocessore, ma erano molto più facili da costruire e da vendere. L'Amiga è stato il primo computer per il mercato di massa a includere un blitter nel suo hardware video, e il sistema grafico IBM 8514 è stato una delle prime schede video per PC a implementare in hardware le primitive 2D.

All'inizio degli anni '90, la diffusione di Microsoft Windows ha generato un grande interesse verso la grafica raster 2D ad alta velocità e alta risoluzione (che in passato era stato il dominio delle workstation Unix e dei Macintosh Apple). Per il mercato dei PC, la dominanza di Windows ha significato che i produttori di dispositivi grafici per PC adesso potevano focalizzare gli sforzi di sviluppo s'una sola interfaccia di programmazione, la GDI.

Nel 1991, S3 Graphics ha introdotto il primo acceleratore 2D su singolo chip, l'S3 86C911 (il cui nome è stato ispirato dall'autovettura Porsche 911 come indicazione dell'aumento di velocità che prometteva). L'86C911 ha generato molti imitatori; nel 1995, tutti i principali produttori di chip grafici per PC avevano aggiunto il supporto per l'accelerazione 2D ai loro chip. Entro questo tempo, gli acceleratori per Windows non programmabili avevano sorpassato, in termini di prestazioni di Windows, i costosi coprocessori grafici ad uso generico, per cui i coprocessori scomparvero dal mercato dei PC.

Nel 1999 fu introdotta la prima generazione di schede grafiche GeForce prodotte dalla NVIDIA Corporation, pensate appositamente per la grafica 3D. Un anno dopo ATI Technologies introdusse il primo chip della famiglia Radeon. Questi due brand acquistarono sempre più quote di mercato ed oggi si spartiscono il mercato delle schede grafiche per i videogiochi.

Con l'avvento dell'API DirectX versione 8 e di simili funzionalità in OpenGL, le GPU hanno aggiunto l'ombreggiatura (shading) programmabile alle loro funzioni. Ogni pixel poteva adesso essere elaborato da un breve programma che poteva ricevere in input delle texture ed ogni vertice geometrico poteva analogamente essere elaborato da un breve programma prima di essere proiettato sullo schermo. Nel 2003, con l'introduzione della NVIDIA GeForce FX (detta anche NV30), gli ombreggiatori (shader) di pixel e di vertici potevano realizzare dei cicli, delle lunghe operazioni a virgola mobile, e in generale stavano diventando rapidamente flessibili quanto una CPU dedicata all'elaborazione d'immagini raster.

L'avvento dell'interfaccia AGP (accelerated graphics port), con standard di interfaccia 2x - 4x e 8x, fece in modo da consentire una maggiore banda passante di informazioni per permettere un accesso diretto alla memoria fisica del computer da parte della scheda grafica, in modo da poter gestire texture e oggetti 3D di grandi dimensioni, garantendo una maggiore velocità nelle operazioni di calcolo grafico. Le velocità sono di, rispettivamente, 533 MB/s per AGP 1x/2x, 1066 MB/s per AGP 4x e 2133 MB/s per AGP 8x.

L'avvento del PCI Express portò all'inesorabile declino dell'interfaccia AGP, garantendo velocità di trasferimento di molto superiori e permettendo l'utilizzo di schede grafiche con maggiori richieste di consumi energetici. Questo portò alla costruzione di chip grafici molto più evoluti dei precedenti, aprendo la strada ad una sempre più realistica grafica in continuo sviluppo sia per usi professionali sia per usi domestici.

L'ultima versione oggi disponibile di DirectX è la 11, integrata in Windows 7, con un aggiornamento in Vista, che rappresenta un ulteriore passo avanti nella programmabilità delle GPU, grazie all'introduzione di shader unificati. Con l'upgrade a DirectX 10 e 11 è inoltre possibile godere degli effetti video di Tessellation (generazione automatica scalare di poligoni su superfici piane e no) che permette di generare minuziosi particolari delle Texture senza sconvolgere lo scenario in modo massivo. Inoltre, con l'avvento dei Blu-ray Disc la GPU dovrà essere progettata per gestire il segnale e le chiavi AACS che servono per verificare l'autenticità del film. I nuovi chip grafici godono di upscaling su video a scarsa qualità, di maggiore velocità di riproduzione dei filmati e dei contenuti DVD oltre i 25 fps e di un complessivo miglioramento dei colori, delle luci e dei rapidi cambi di scena.

Oggi le GPU, ad alto parallelismo, hanno cominciato a contendere alla CPU funzioni computazionali, e un sottosettore della ricerca, chiamato GPGPU (acronimo di General Purpose Computing on GPU), ha trovato impiego in vari campi come l'esplorazione petrolifera, l'elaborazione di immagini scientifiche e perfino la determinazione del prezzo delle opzioni sulle azioni di borsa. Le tecnologie più note per l'elaborazione GPGPU sono nVidia CUDA e ATI CTM (precedentemente noto come ATI Stream).

Note[modifica | modifica sorgente]

  1. ^ "GPU" è un prestito dell'inglese. In particolare è l'acronimo del termine inglese "graphics processing unit". Nella lingua inglese "graphics processing unit" viene utilizzato con lo stesso significato che questa voce di Wikipedia tratta per il termine italiano "unità di elaborazione grafica". "Graphics processing unit" è anche la traduzione letterale di "unità di elaborazione grafica".
  2. ^ "VPU" è un prestito dell'inglese. In particolare è l'acronimo del termine inglese "visual processing unit". Nella lingua inglese "visual processing unit" viene utilizzato con lo stesso significato che questa voce di Wikipedia tratta per il termine italiano "unità di elaborazione visiva". "Visual processing unit" è anche la traduzione letterale di "unità di elaborazione visiva".
  3. ^ Tra i sei sinonimi "unità di elaborazione grafica", "GPU", "unità di elaborazione visiva", "VPU", "processore grafico" e "processore visivo", il più utilizzato è "GPU".
  4. ^ Si veda la voce GPGPU.
  5. ^ In questi casi i costruttori parlano di "on-chip peripheral".

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica