Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Alcuni appassionati hanno espresso preoccupazione per il fatto che le schede Turing non abbiano un numero di CUDA core nettamente superiore alle schede di precedente generazione. Le schede della serie 10 hanno persino frequenze GPU Boost più alte. Nvidia non ha aiutato a fare chiarezza, non spiegando i miglioramenti generazionali nei giochi attuali all'evento di lancio a Colonia. L'azienda ha però riposto molti sforzi nella riprogettazione di Turing per assicurare migliori prestazioni per core.

concorrent execution

Clicca per ingrandire

Per iniziare, Turing ha attinto dall'architettura Volta per quanto riguarda il supporto all'esecuzione simultanea di istruzioni aritmetiche FP32, le quali rappresentano la maggior parte del carico di lavoro degli shader e le operazioni INT32 (per indirizzare/ripescare dati, calcoli floating-point min/max, confronti, ecc.). Quando leggete che i core Turing raggiungono migliori prestazioni di quelli Pascal a una data frequenza, sono le caratteristiche che abbiamo citato a illustrare ampiamente il motivo.

Nelle generazioni precedenti, un singolo percorso di dati matematici significava che tipi di istruzione differenti non potevano essere svolti contemporaneamente, portando allo stallo della pipeline a virgola mobile ogni volta che erano necessarie operazioni non FP (floating point) in un programma shader.

Volta ha cercato di cambiare la situazione creando pipeline separate. Anche se Nvidia ha eliminato la seconda unità dispatch assegnata a ciascun warp scheduler, l'azienda ha detto di aver aumentato il throughput dell'istruzione emessa. Com'è possibile? Si deve tutto alla composizione di ogni SM all'interno dell'architettura.

Guardate i due diagrammi sotto. Pascal ha un warp scheduler per quad, con ogni quad che contiene 32 CUDA core. Lo scheduler di un quad può emettere una coppia di istruzioni per clock tramite le due unità dispatch con la condizione che entrambe le istruzioni provengano dallo stesso warp a 32 thread, e solo una può essere un'istruzione matematica di base. Comunque, c'è un'unità dispatch per 16 CUDA core.

Di contro Turing ha meno CUDA core in un SM, ma ha più SM complessivi nella GPU. Ora c'è uno scheduler per 16 CUDA core (il doppio di Pascal), insieme a un'unità dispatch per 16 CUDA core (come Pascal). È stato invece eliminato l'accoppiamento delle istruzioni. E poiché Turing raddoppia gli scheduler, è sufficiente emettere una sola istruzione verso i CUDA core in qualsiasi ciclo per mantenerli occupati (con 32 thread per warp, 16 CUDA core impiegano due cicli per usarli tutti). Nel frattempo, è possibile impartire un'istruzione differente a qualsiasi altra unità, inclusa la nuova pipeline INT32. La nuova istruzione può inoltre provenire da qualsiasi warp.

La flessibilità di Turing deriva dall'avere il doppio di scheduler di Pascal, in modo che ognuno abbia meno calcoli da alimentare per ciclo, non da un progetto più complesso. Gli scheduler emettono ancora un'istruzione per ciclo di clock. L'architettura è solo in grado di usare meglio le risorse grazie all'equilibrio superiore nell'SM.

turing sm nvidia
pascal sm nvidia

A sinistra l'SM di Turing, a destra un SM di Pascal, clicca per ingrandire

Secondo Nvidia i potenziali miglioramenti sono rilevanti. In un gioco come Battlefield 1, per ogni 100 istruzioni in virgola mobile ci sono 50 istruzioni che non sono in virgola mobile nel codice shader. Altri titoli si affidano persino più pesantemente ai calcoli in virgola mobile. L'azienda afferma che ci sono una media di 36 istruzioni integer nella pipeline che bloccherebbero la pipeline FP ogni 100 istruzioni FP. Queste ora possono essere scaricate sui core INT32.

Malgrado la separazione dei percorsi FP32 e INT32 nei diagrammi a blocchi, Nvidia afferma che ogni Turing SM contiene 64 CUDA core per mantenere le cose il più semplici possibile. Il Turing SM comprende anche 16 unità load/store, 16 unità a funzione speciale, 256 KB di spazio per il file di registro, 96 KB di memoria condivisa e cache dati L1, quattro unità texture, otto Tensor core e un RT core.

Sulla carta un SM nella GPU di precedente generazione GP102 appare più complesso, con il doppio di CUDA core, unità load/store, unità a funzione speciale, texture unit, più capacità per il file di registro e più cache.

Ricordate però che il nuovo TU102 ha 72 SM in totale, mentre il GP102 si ferma a 30 SM. Il risultato è che la soluzione di punta Turing ha il 21% di CUDA core e unità texture in più della GeForce GTX 1080 Ti, ma anche più SRAM per registri, memoria condivisa e cache L1 (senza parlare dei 6 MB di cache L2, che raddoppiano i 3 MB del GP102).

L'aumento della memoria sul die gioca un ruolo importante nel migliorare le prestazioni, così come la sua organizzazione gerarchica. Con l'architettura Kepler ogni SM aveva 48 KB di cache texture in sola lettura, più 64 KB di cache L1 / memoria condivisa. In Maxwell e Pascal la cache L1 e le cache texture sono state combinate, lasciando 96 KB di memoria condivisa. Ora Turing combina tutte e tre in un insieme condiviso e configurabile di 96 KB.

Il beneficio dell'unificazione è, naturalmente, che indipendentemente dal fatto che un carico di lavoro sia ottimizzato per la cache L1 o la memoria condivisa, la capacità on-chip viene usata completamente anziché restare inattiva come avrebbe fatto in passato.

Lo spostamento della funzionalità della cache L1 verso il basso ha l'ulteriore vantaggio di porla su un bus più ampio, raddoppiando la larghezza di banda (a livello TPC Pascal supporta 64 byte per clock di bandwidth cache hit mentre Turing arriva a 128 byte per clock). E poiché questi 96 KB possono essere configurati come 64 KB di cache L1 e 32 KB di memoria condivisa (o viceversa), la capacità della cache L1 per SM può essere il 50% maggiore.

turing tpc vs pascal tpc

Clicca per ingrandire

Per riassumere, Nvidia afferma che l'effetto delle pipeline matematiche riprogettate e della nuova architettura di memoria è un incremento prestazionale del 50% per CUDA core. Per mantenere questi core alimentati in modo più efficace, Nvidia ha accoppiato al TU102 la memoria GDDR6 e ottimizzato le sue tecnologie per la riduzione dello scambio dati, come la compressione delta color.

Se mettiamo a confronto i moduli GDDR5X a 11 Gbps della GTX 1080 Ti con la memoria GDDR6 a 14 Gbps della RTX 2080 Ti, entrambe su un bus a 352 bit, avete un data rate/bandwith di picco il 27% più alto. Quindi, a seconda del gioco, quando la RTX 2080 Ti può evitare di inviare dati sul bus, il throughput effettivo aumenta ulteriormente di percentuali a due cifre.

rtx vs gtx traffic

Clicca per ingrandire