Streaming Multiprocessor in Maxwell
Il passo in avanti più grande fatto da Maxwell è figlio di una riprogettazione degli Streaming Multiprocessor, ora abbreviati come SMM. In Kepler ogni SMX aveva 192 CUDA core, quattro warp scheduler e un file di registro da 256 KB. C'erano anche 64 KB usabili come memoria condivisa e cache L1, una cache texture separata e una cache uniforme, più 16 unità texture. Il grande salto nel numero di core e la logica di controllo aiutarono a superare Fermi e la frequenza doppia dei suoi shader. L'SMX si è tuttavia dimostrato difficile da sfruttare appieno.
GM107 SMM (sinistra) vs. GK106 SMX (destra)
Maxwell tentata di risolvere questo problema partizionando l'SMX in quattro blocchi, ognuno con il proprio buffer instruction, warp scheduler e un paio di unità dispatch. Il file di registro da 256 KB ora è stato diviso in quattro segmenti da 64 KB. I blocchi hanno 32 CUDA core ciascuno, per un totale di 128 in ogni SMM - meno dei 192 presenti nell'architettura Kepler. Le 32 unità load/store e le altrettante a funzione speciale presenti in Kepler trovano spazio anche in Maxwell. I calcoli a doppia precisione, però, sono stati ulteriormente castrati a 1/32 di quelli FP32; con le GPU Kepler di fascia media Nvidia ci era andata meno pesante (1/24).
Ogni paio di blocchi è legato a una texture da 12 KB e una cache L1, per un totale di 24 KB per SMM. Le coppie di blocchi sono inoltre associate a quattro unità texture, il che significa che gli SMM ne hanno otto. Si tratta della metà delle unità texture presenti in un SMX di Kepler. La tabella sopra vi permette di confrontare il GM107 con il GK106. Non preoccupatevi: ricordate che l'architettura dovrebbe fare di più con meno risorse.
Per SM: | GM107 | GK106 | Ratio |
---|---|---|---|
CUDA Core | 128 | 192 | 2/3x |
Unità a funzione speciale | 32 | 32 | 1x |
Load/Store | 32 | 32 | 1x |
Unità Texture | 8 | 16 | 1/2x |
Warp Scheduler | 4 | 4 | 1x |
Geometry Engine | 1 | 1 | 1x |
Infine, c'è uno spazio di memoria condiviso da 64 KB per SMM, già presente in Fermi e poi in Kepler, ma non è più sfruttato come cache L1 per operazioni di calcolo generico.
Come potete immaginare, tagliare 64 CUDA core e otto unità texture per SMM significa che ogni blocco richiede molto meno spazio sul die, e allo stesso tempo secondo Nvidia è in grado di offrire circa il 90% delle prestazioni. In poche parole la casa di Santa Clara è semplicemente in grado di mettere più SMM in un determinato spazio. La GTX 650 Ti, rimpiazzata da questa scheda, ha quattro SMX, mentre la GTX 750 Ti ha cinque SMM.