GPU GP104: cosa offre?
AMD e Nvidia hanno sfruttato il processo produttivo a 28 nanometri dal 2012. All'inizio entrambe le aziende riuscirono a fare grandi passi avanti con la Radeon HD 7970 e la GeForce GTX 680. Nei quattro anni successivi però sono dovute diventare più creative al fine di raggiungere maggiori prestazioni. Quanto raggiunto dalla Radeon R9 Fury X e dalla GeForce GTX 980 Ti è incredibile se teniamo conto della loro complessità. GK104 - la prima GPU Nvidia a 28 nanometri - integrava 3,5 miliardi di transistor. GM200, il cuore della GTX 980 Ti e della Titan X, ha 8 miliardi di transistor.
Il passaggio al processo 16nm FinFET Plus di TSMC ha permesso agli ingegneri di Nvidia di "ripartire da zero". Secondo l'azienda taiwanese i 16FF+ sono fino al 65% più veloci, il doppio più densi e il 70% meno affamati di energia dei 28HPM e Nvidia ha sfruttato alcune combinazioni di questi attributi per realizzare le sue GPU. TSMC ha dichiarato inoltre di aver riusato il processo backend metal dei 20 nanometri, ma con transistor FinFET anziché planari. Secondo l'azienda questo permette di migliorare le rese e la maturità del processo, ma ci dice anche che non c'è un processo a 20 nanometri ad alte prestazioni.
Di conseguenza il successore spirituale del GM204 è composto da 7,2 miliardi di transistor in un'area di 314 mm². A titolo comparativo, il GM204 offre 5,2 miliardi di transistor in un die da 398 mm². Al suo livello più alto una GPU GP104 include quattro Graphics Processing Clusters. Ogni GPC offre cinque Thread/Texture Processing Clusters e un raster engine. Entrando ulteriormente nel dettaglio, un TPC combina uno Streaming Multiprocessor e un PolyMorph engine. L'SM combina 128 CUDA core a singola precisione, un file di registro da 256 KB, 96 KB di memoria condivisa, 48 KB di cache L1/texture e otto unità texture. Allo stesso tempo la quarta generazione del PolyMorph engine include un nuovo blocco logico che è posto alla fine della pipeline geometrica e prima dell'unità raster per gestire il Simultaneous Multi-Projection - ne parleremo a breve. Facendo i conti abbiamo a che fare con 20 SM, per un totale di 2560 CUDA core e 160 unità texture.
Il back-end della GPU ha otto controller di memoria a 32 bit, per un bus aggregato a 256 bit, con otto ROPs e 256 KB di cache L2 legati a ciascun controller. Facendo i conti, in totale abbiamo 64 ROPs e 2 MB di cache L2 condivisa. Anche se il diagramma a blocchi del GM204 mostrava quattro controller a 64 bit e un massimo di 16 partizioni ROPs, queste erano raggruppate e funzionalmente equivalenti.
A tal riguardo, alcune specifiche strutturali di GP104 appaiono simili ad alcune parti di GM204 e in effetti questa nuova GPU è realizzata sulle fondamenta del predecessore. Non è una cattiva cosa. Se ricordate, l'architettura Maxwell poneva grande enfasi sull'efficienza senza andare a scombinare troppo i punti di forza di Kepler. La stessa cosa è successa con Pascal.
Aggiungere quattro SM potrebbe non sembrare la ricetta ideale per avere prestazioni nettamente superiori. A ogni modo il GP104 ha alcuni assi nella manica. Il primo è costituito dalle frequenze nettamente superiori. La frequenza base della GPU è 1607 MHz. Il GM204, di contro, lavora a 1126 MHz. La frequenza GPU Boost è 1733 MHz, e siamo riusciti a portare il nostro sample a 2100 MHz con una versione beta di EVGA PrecisionX.
Com'è stato possibile ottenere quel margine? Secondo Jonah Alben, vicepresidente senior per l'ingegnerizzazione delle GPU di Nvidia, il suo team sapeva che i 16FF+ di TSMC avrebbero inciso sulla progettazione, quindi hanno posto attenzione all'ottimizzazione dei timing nel chip, al fine di ripulire i percorsi dei segnali che avrebbero impedito frequenze maggiori. Di conseguenza le prestazioni di calcolo a singola precisione di GP104 raggiungono 8228 GFLOPs (se si lavora alla frequenza base) rispetto ai 4612 GFLOPs della GTX 980. E il texture fillrate è passato dai 155,6 GT/s della GTX 980 (a frequenza GPU Boost) ai 277,3 GT/s.
GPU | GeForce GTX 1080 (GP104) | GeForce GTX 980 (GM204) |
---|---|---|
SMs | 20 | 16 |
CUDA core | 2650 | 2048 |
Frequenza base | 1607MHz | 1126MHz |
Frequenza GPU Boost | 1733MHz | 1216MHz |
GFLOPs (Freq. base) | 8228 | 4612 |
Unità texture | 160 | 128 |
Texel Fill Rate | 277.3 GT/s | 155.6 GT/s |
Data rate memoria | 10 Gb/s | 7 Gb/s |
Bandwidth memoria | 320 GB/s | 224 GB/s |
ROPs | 64 | 64 |
Cache L2 | 2MB | 2MB |
TDP | 180W | 165W |
Transistor | 7.2 billion | 5.2 billion |
Dimensione die | 314mm² | 398mm² |
Processo | 16nm | 28nm |
Allo stesso modo, anche se stiamo parlando di un backend con 64 ROPs e un bus a 256 bit, Nvidia ha adottato la memoria GDDR5X per aumentare il bandwidth. L'azienda ha riposto molti sforzi nel far rendere al meglio questa memoria, dato che diverse schede di AMD hanno la memoria HBM e la stessa Tesla P100 offre memoria HBM2. Sembra tuttavia che al momento non ci sia sufficiente memoria HBM2 in circolazione e l'azienda non è disposta ad accettare le limitazioni di HBM (principalmente i quattro stack da 1 GB o le sfide associate a otto stack da 1 GB). E così ha "ripiegato" sulla GDDR5X, che anch'essa dev'essere in scorte limitate dato che la GTX 1070 usa memoria GDDR5. Non banalizziamo però la nuova memoria: la GDDR5 consentiva un data rate di 7 Gb/s sulla GTX 980. Su un bus a 256 bit questo ha consentito di avere un throughput fino a 244 GB/s. La GDDR5X ha invece un data rate di 10 Gb/s, cosa che spinge il bandwidth a 320 GB/s (un incremento del 43% circa). Nvidia dice di aver ottenuto tutto questo senza aumentare il consumo tramite un circuito di I/O ridisegnato.
Se l'architettura Maxwell faceva un miglior uso del bandwidth tramite cache ottimizzate e algoritmi di compressione, lo stesso fa Pascal grazie a nuove tecniche lossless per estrarre del margine in diversi punti lungo del sottosistema di memoria. La compressione delta color di GP104 punta a offrire un risparmio di 2:1 e questa modalità è presumibilmente migliorata per essere usabile con maggiore frequenza. C'è anche una nuova modalità 4:1 che copre i casi in cui le differenze per pixel sono davvero piccole e comprimibili in persino meno spazio. Infine Pascal ha una nuova modalità 8:1 che combina una compressione costante 4:1 a blocchi 2x2 con compressione 2:1 delle differenze tra i blocchi.
Spiegato più semplicemente, la prima immagine sopra mostra una cattura a schermo non compressa di Project CARS. Lo scatto successivo evidenzia gli elementi che Maxwell può comprimere, rimpiazzati dal colore magenta. Infine, vediamo che Pascal è in grado di comprimere la scena ulteriormente. Secondo Nvidia questo si traduce in una riduzione del 20% circa dei byte necessari che devono essere prelevati dalla memoria per frame.