NVIDIA GeForce GTX 680: arriva Kepler
NVIDIA GeForce GTX 680 è solo il nome commerciale di un prodotto caratterizzato non solo da un rinnovato processo produttivo a 28 nanometri, ma anche dalla nuova architettura Kepler, con cui la nota azienda Californiana dovrà riuscire a competere con la concorrenza sempre più agguerrita di AMD. Andiamo allora ad osservare GK104, nome in codice Kepler, e le sue caratteristiche
di Gabriele Burgazzi, Paolo Corsini pubblicato il 22 Marzo 2012 nel canale Schede VideoNVIDIAAMDGeForce
L'architettura di Kepler, seconda parte
Come abbiamo avuto modo di analizzare, l'evoluzione che NVIDIA ha portato avanti con Kepler è stata incentrata principalmente sul rapporto prestazioni/consumi e buona parte delle innovazioni apportate nella GPU di nuova generazione che ci troviamo ad analizzare oggi, vanno proprio in questa direzione. Per avere un'idea delle prestazioni computazionali che la GK104 è in grado di garantire, la tabella che proponiamo a seguire è sicuramente indicativa, tenendo ben presente anche il valore finale riportato, che indica il TDP delle soluzioni.
GT200 - Tesla | GF110 - Fermi |
GK104 - Kepler | |
Numero di transistor |
1,4 miliardi | 3 miliardi | 3,54 miliardi |
CUDA core |
240 | 512 | 1536 |
Core clock |
648 MHz | 772 MHz | 1006 MHz |
Shader clock |
1476 MHz | 1544 MHz | 1006 MHz |
GFLOPs |
1063 | 1581 | 3090 |
Texture Units |
80 | 64 | 128 |
Texel fill-rate |
51,8 Gigatexels/s | 49,4 Gigatexels/s | 128,8 Gigatexels/s |
Memory clock |
2484 MHz | 4008 MHz | 6008 MHz |
Memory bandwidth |
159 GB/sec | 192,4 GB/sec | 192,26 GB/sec |
TDP |
183W | 244W | 195W |
Ecco allora che appare particolarmente chiaro come GeForce GTX 680 sia stata sviluppata per poter andare ad incrementare la potenza per la gestione di shader e texture rispetto alle soluzioni di passata generazione, mantenendo pressochè invariato il throughput per altri valori, che beneficiano comunque delle aumentate frequenze di funzionamento.
Nella pagina precedente ci siamo occupati di analizzare la struttura che caratterizza l'architettura di Kepler, evidenziando come SMX rappresenti uno degli elementi fondamentali. SMX contiene al suo interno alcuni importanti cambiamenti che giocano un ruolo chiave nel funzionamento di Kepler. Ricordiamo che, all'interno di SMX, sono presente i CUDA ore che si occupano delle operazioni di shading per pixel/vertex e geometria, oltre ai calcoli puramente computazionali e fisici. Le SFU (Special Function Units) si occupano invece di gestire l'interpolazione grafica, mentre il PolyMorph Engine gestisce la tessellation e l'output.
Per capire al meglio le differenze tra un normale SM, presente nelle GPU di passata generazione, e SMX la tabella a seguire evidenzia alcuni cambiamenti apportati:
GF110 - Fermi |
GK104 - Kepler | |
CUDA core |
512 | 1536 |
SFU |
64 | 256 |
LD/ST |
256 | 256 |
Tex |
64 | 128 |
Polymorph |
16 | 8 |
Warp scheduler |
32 | 32 |
Troughput per clock |
||
FMA32 |
1024 | 1536 |
SFU |
128 | 256 |
LD/ST |
256 | 256 |
Tex |
64 | 128 |
Polygon/clk |
4 | 4 |
Inst clk |
32*32 | 64*32 |
Ecco allora come NVIDIA è stata in grado di andare a migliorare la resa del chip per-clock, andando ad aumentare le operazioni per SFU e Texture. Le altre operazioni, invece, sono rimaste pressochè invariate. All'interno di GeForce GTX 680 per ragioni legate di efficienza energetica, le unità SMX sono 8 (contro le 16 presenti in GeForce GTX 580).
Per riuscire a dare sufficienti risorse ai nuovi SMX ogni blocco contiene quattro warp scheduler, capaci di consegnare due istruzioni ogni clock. Ma non solo. Per riuscire a sfruttare al meglio la nuova struttura NVIDIA ha riscritto le funzioni di scheduling. Se, da un lato, sia Kepler che Fermi hanno scheduler che si compongono di unità hardware per gestire le funzioni di scheduling, lo scheduler di Fermi contiente anche una componente hardware piuttosto complessa che previene eventuali rischi ai dati.
Con lo sviluppo di Kepler, però, NVIDIA ha realizzato che, considerato che queste informazioni sono prevedibili (le latenze della pipeline non sono variabili), è possibile per il compiler andare a determinare prima quali siano le istruzioni da poter gestire, fornendo così a se stesso l'informazione. Questo passaggio ha così permesso di andare a rimuovere un complesso blocco e sostituirlo con un decisamente più semplice.
Quando abbiamo osservato le caratteristiche tecniche di Kepler, uno dei dati che più è balzato all'occhio è stata la scomparsa del clock raddoppiato per gli shader. Questo cambiamento, anche in questo caso, risponde all'esigenza di andare a migliorare il rapporto prestazioni/cosumi. In questo senso NVIDIA ha introdotto un nuovo design per gli execution core. Lo shader clock era stato introdotto da NVIDIA con l'arrivo dell'architettura Tesla, per andare ad ottimizzare la superificie utilizzata: avere a disposizione unità di esecuzione in grado di operare a frequenze maggiori permetteva, in modo diretto, di avere prestazioni migliori. Con Kepler, quindi, NVIDIA ha deciso di abbandonare questo approccio, preferendo sacrificare una maggiore area, migliorando però i consumi.