1. Architettura “Kepler” - Parte prima

 

Con “Kepler” NVIDIA ha ridisegnato l’architettura delle sue GPU modificando profondamente il progetto originale basato sull’architettura “Fermi”, spostando il focus dalle pure prestazioni all’efficienza.

Le schede delle serie GTX 400 e GTX 500 erano risultate eccellenti sotto il profilo delle performance, tuttavia il calore prodotto e l’assorbimento energetico hanno rappresentato il tallone di Achille su cui NVIDIA ha dovuto lavorare molto attentamente.

L’introduzione del processo produttivo a 28nm da parte di TSMC ha sicuramente aiutato NVIDIA in questo compito, riducendo la dimensione ed i consumi dei singoli transistor, ma questo cambiamento non sarebbe stato sufficiente per giungere all’obbiettivo previsto senza una revisione delle unità di elaborazione della GPU.

 

Next Generation SM (SMX)

Il “mattoncino” alla base dell’array di calcolo delle GPU basate su architettura “Fermi” è l’unità di elaborazione SM, dotata di 32 CUDA Cores e di una logica di controllo; in “Kepler” l’unità di base è il nuovo SMX, composto da ben 192 CUDA Cores.

 

NVIDIA GeForce GTX 680 : ecco Kepler! 1. Architettura  

SMX Cluster


192 CUDA Cores

16 Texture Units

PolyMorph Engine 2.0

2x Perf/Watt rispetto a Fermi

Minimizzato il controllo in Hardware

 

L’aggregazione di più unità di calcolo sotto ad un’unica logica di controllo riduce sensibilmente il numero di transistor dedicati ai compiti di gestione, lasciando più spazio alle unità di elaborazione.


NVIDIA GeForce GTX 680 : ecco Kepler! 1. Architettura

 

Il controllo e la schedulazione delle operazioni non è più gestita completamente in hardware come avviene in “Fermi”, ma viene gestita in parte via software eliminando tutta l’elettronica dedicata al riordino delle operazioni che in una scheda video non è di fondamentale importanza, poichè la sequenza delle operazioni è deterministica e la latenza dei componenti è predicibile.


NVIDIA GeForce GTX 680 : ecco Kepler! 1. Architettura

 

Nell’architettura “Fermi” la frequenza di funzionamento dei CUDA Cores è doppia rispetto a quella della GPU; in “Kepler” non esiste più questa distinzione e tutti i componenti operano con lo stesso clock.

La scelta di utilizzare una frequenza di funzionamento doppia era nata durante lo sviluppo delle GPU Tesla, per massimizzare la velocità delle unità di elaborazione senza dover incrementare il consumo delle altre unità non sfruttate in ambito GP-GPU.

La semplificazione della gestione dei clock garantisce una sostanziale riduzione dei consumi e un complessivo aumento dell’efficienza non dovendo più gestire il doppio dei clock per ogni ciclo.

 

PolyMorph Engine 2.0

Uno dei componenti che ha ricevuto un sostanziale miglioramento in “Kepler” è il PolyMorph Engine che consente di ottenere un significativo miglioramento nelle performance negli applicativi DirectX 11 che fanno uso del motore di tassellazione.

La tassellazione è una tecnica che consente di aumentare artificialmente il numero dei poligoni per ogni oggetto, senza però incrementare la complessità del modello 3D, applicando su di un modello più semplice una serie di mappe che consentono di aggiungere dettagli all’immagine.

La tassellazione avviene nella fase finale di generazione dell’immagine ed è totalmente gestita dalla GPU; non c’è quindi transito di dati verso la memoria video che rappresenta il principale collo di bottiglia nella gestione di complessi modelli 3D.

La GPU GK104 su cui è bastata la GeForce GTX 680 è dotata di 8 PolyMorph Engine, la metà rispetto a quelli di una GeForce GTX 580, tuttavia la versione 2.0 consente di raddoppiare le performance per clock rispetto alla versione integrata in “Fermi” e, grazie alle frequenze operative maggiori, consente di aumentare sensibilmente le performance in workload che fanno largo uso della tassellazione.