1. GCN Graphics Core Next - Parte 1

 

Evoluzione delle GPU

Il cuore della AMD Radeon HD 7970 è la nuova GPU codename “Tahiti”, capostipite delle schede AMD “Southern Islands”.

Nel corso dei prossimi mesi AMD rilascerà “Pitcairn” e “Cape Verde”, due GPU basate  sulla stessa architettura di “Tahiti”, ma con un numero di unità di elaborazione ridotto.

A differenza delle CPU, il design delle GPU si è modificato in modo sostanziale nel corso degli anni, seguendo l’evoluzione delle API grafiche che, con il passare del tempo, sono diventate sempre più evolute e versatili.

Le prime GPU utilizzavano esclusivamente unità di elaborazione specializzate in grado di compiere solo l’operazione per cui erano state progettate, rendendo questa soluzione molto rigida e poco scalabile.


AMD Radeon HD 7970 ... anche in CrossFireX 1. GCN Graphics Core Next - Parte 1 1 

 

L’evoluzione successiva ha portato all’introduzione di shader specializzati che potevano operare in sequenza (pipeline); ogni elemento poteva eseguire un solo tipo di operazione, ma era affiancato da unità simili che potevano parallelizzare il lavoro di ogni unità.

L’era “moderna” delle GPU si è aperta con l’introduzione dei core grafici paralleli, unità di calcolo generiche non più dedicate ad un solo tipo di operazione.

Questa rivoluzione ha reso possibile la creazione di motori grafici evoluti e non più legati rigidamente all’hardware su cui dovevano essere eseguiti.

L’impiego di unità non specializzate ha reso inoltre possibile  l’uso delle GPU come unità di calcolo altamente parallelizzabili, aprendo nuovi scenari nel calcolo scientifico e High Performance Computing.

 

GCN - Compute Unit

Le GPU AMD basate sull’architettura VLIW5 e VLIW4 però, pur offrendo buone prestazioni in ambito grafico, sono risultate poco efficienti nello svolgere operazioni generiche, risultando troppo complesse da programmare e con prestazioni pesantemente influenzate dal tipo di dati in elaborazione, riducendo il numero di unità di calcolo effettivamente utilizzate contemporaneamente spesso in modo non prevedibile.

Per risolvere questo problema, AMD ha deciso di adottare un approccio più versatile utilizzando delle Compute Unit in grado di eseguire più operazioni differenti in contemporanea, senza la necessità di lasciare alcune unità di elaborazione in attesa durante l’elaborazione delle altre.


AMD Radeon HD 7970 ... anche in CrossFireX 1. GCN Graphics Core Next - Parte 1 2 

 

Ogni Compute Unit è composta da quattro unità vettoriali, una unità scalare per operazioni speciali, quattro unità per le texture, uno Scheduler, una Cache di primo livello condivisa a livello di CU e un’unità di branching.

Le unità vettoriali sono a loro volta composte da sedici ALU e da 64kB di registri utilizzati per memorizzare i dati in corso di elaborazione.

Ogni unità è di tipo SIMD (Single Instruction Multiple Data) e può quindi eseguire una singola istruzione per volta ma su sedici set di dati differenti.

L’unità scalare è utilizzata per svolgere tutte le operazioni che non possono essere gestite con efficienza dalle unità SIMD, come ad esempio quelle condizionali (es. if/then/else) o operazioni trascendentali (es. radici); nella precedente generazione di GPU AMD si doveva “sprecare” un’intera unità di elaborazione per queste operazioni con un conseguente decadimento delle prestazioni.