Graphics processing unit

processore grafico

L'unità di elaborazione grafica (GPU, dall'inglese graphics processing unit) è un circuito elettronico progettato per accelerare la creazione di immagini in un frame buffer, destinato all'output su un dispositivo di visualizzazione. Le GPU vengono utilizzate in sistemi embedded come telefoni cellulari, personal computer e console di gioco. In un personal computer una GPU può essere presente su scheda video o incorporata sulla scheda madre, mentre in alcune CPU sono incorporate nel die della CPU stessa.[1]

Schema a blocchi generico di una GPU (2017)

Negli anni settanta il termine GPU descriveva un'unità di elaborazione programmabile, che lavorava indipendentemente dalla CPU ed era responsabile della manipolazione e dell'output della grafica.[2][3] Successivamente, nel 1994, Sony ha utilizzato il termine in riferimento alla GPU progettata da Toshiba per la console PlayStation.[4] Il termine GPU è stato reso popolare da NVIDIA nel 1999, che ha commercializzato la GeForce 256 come "la prima GPU al mondo".[5]

DescrizioneModifica

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.

Dal punto di vista terminologico abbiamo tre soluzioni con architetture diverse[6]:

  • GPU discreta, ossia dedicata: è presente una scheda video specifica;
  • GPU integrata: la sezione grafica è condivisa con la CPU, ossia è sul chipset;
  • GPU doppia: GPU integrata (per applicazioni video ordinarie) e GPU dedicata (per flussi video pesanti: resa grafica, giochi, ecc.); questa soluzione può essere configurata con commutazione automatica oppure manuale (ovvero l'utente decide quale scheda utilizzare), agendo sul BIOS o meglio sullo strumento relativo alla sezione grafica.

StoriaModifica

 
GPU Atari Blitter

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 su 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.

 
GPU Nvidia GeForce 4 MX
 
GPU ATI Radeon Graphics HD4650

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 12, integrata in Windows 10, 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 (sigla 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, ATI CTM (precedentemente noto come ATI Stream) e OpenCL.

NoteModifica

  1. ^ (EN) Computer Shopper: The Right GPU for You, su computershopper.com. URL consultato il 2 dicembre 2020 (archiviato dall'url originale il 6 maggio 2007).
  2. ^ (EN) E.T. Barron e R.M. Glorioso, A micro controlled peripheral processor, su dl.acm.org, settembre 1973. URL consultato il 2 dicembre 2020.
  3. ^ (EN) Ken Levine, Core standard graphic package for the VGI 3400, su dl.acm.org, agosto 1978. URL consultato il 2 dicembre 2020.
  4. ^ (EN) Jon Peddie, Is it Time to Rename the GPU?, su computer.org. URL consultato il 2 dicembre 2020.
  5. ^ (EN) NVIDIA Launches the World's First Graphics Processing Unit: GeForce 256, su nvidia.com. URL consultato il 2 dicembre 2020 (archiviato dall'url originale il 12 aprile 2016).
  6. ^ Si assimila di seguito GPU (cioè il processore grafico) alla scheda video di cui, in realtà, il processore è solo un componente

Voci correlateModifica

Altri progettiModifica

Collegamenti esterniModifica

Controllo di autoritàGND (DE4582114-8
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica