Già in cantiere da diversi anni, l’architettura di Navi (nome in codice RDNA) sembra strizzare l’occhio all’abbinamento con Zen 2, sia perché entrambe le piattaforme utilizzano il bus PCIe 4.0, sia perché rumours sempre più insistenti sembrano confermare la presenza di questa coppia in PlayStation 5 e Xbox “Scarlett”, le console di prossima generazione che vedranno il lancio a fine 2020.
Abbiamo parlato ampiamente dell’architettura Zen 2 nella recensione dedicata al Ryzen 7 3800X di AMD, quindi ci concentreremo esclusivamente sull’architettura delle nuove GPU della casa di Sunnyvale.
Innanzitutto, con questa generazione AMD non introduce alcun tipo di tecnologia ray-tracing compatibile con lo standard DXR di Microsoft. Stando a quanto detto dal capo di Radeon Technologies Group, David Wang, il ray-tracing è meglio se relegato al cloud computing, e non ha ancora un posto significativo nei PC di tutti, e il mercato dei videogames sembra aver dato ragione a tale opinione, almeno finora.
Le due prime GPU basate su architettura Navi (RDNA) sono la RX 5700 XT e la RX 5700, che vanno a competere rispettivamente con la RTX 2070 e la RTX 2060 di Nvidia, anche se il lancio delle versioni “Super” di tali schede ha reso leggermente più complicato il posizionamento di tali schede, che per fortuna rimangono lo stesso competitive sia in termini di prezzo che prestazioni.
Navi: architettura rinnovata o un “ibrido”?
Se guardiamo bene le specifiche dettate da AMD, RDNA è sì una nuova architettura, ma una parte della GPU utilizzata è fondata comunque su tecnologia maturata con GCN (architettura alla base delle schede dalle HD7000 fino alla Radeon VII), eccellente per calcoli matematici particolarmente complessi e capace di mettere in atto forti parallelismi e tantissimi TFLOPS. Un esempio è come la serie Vega abbia avuto tutte le carte in regola per battere la lineup su architettura Pascal di Nvidia… non riuscendoci, purtroppo, perché non tutti i transistors erano ottimizzati per l’esecuzione di giochi.
Navi è molto più efficiente, a detta di AMD, grazie all’unione di nuove CU (compute units), una gerarchia multilivello della cache e pipeline grafiche semplificate, rispetto al passato.
Vale la pena dare un’occhiata al diagramma strutturale del design di Navi 10, alla base sia della versione XT che “liscia” della RX 5700.
Navi 10 (il codename di questa GPU) ha 40 CU, ognuna delle quali composta da 64 stream processors, per un totale di 2560. Si tratta di un bel passo indietro rispetto alle Vega 56 e 64, che avevano ben 3584 e 4096 Stream Processors, rispettivamente, ma la particolarità in Navi è che ogni CU presenta scheduler e unità scalari doppie, offrendo il doppio della capacità di eseguire istruzioni rispetto a GCN. Il motivo? Presto detto: i carichi di tipo gaming prediligono una configurazione di questo tipo.
L’architettura GCN presentava per ogni CU, inoltre, una configurazione da quattro unità SIMD16 (Single Input, Multiple Data, 16 unità per cluster), quindi ogni compute unit poteva eseguire 16 istruzioni contemporaneamente.
Sulla carta sembrano tante, ma la lunghezza della pipeline richiedeva 4 cicli di clock per portare a termine una serie da 16 istruzioni. Un meccanismo che va bene fintanto che si utilizzino calcoli formati da calcoli a 4 step, ma molto meno efficiente qualora le istruzioni fossero più semplici.
In quel caso, infatti, a meno che non si utilizzi un metodo intelligente di incanalamento dei dati e delle istruzioni, la GPU diventa poco efficiente molto velocemente. Per essere chiari, GCN eccelle in calcoli di tipo scientifico, visti i complessi carichi in ballo, ma se i giochi non sono fortemente ottimizzati per tale architettura, beh, le prestazioni lasciano a desiderare. Ed è proprio questo il tallone d’Achille di GCN: con calcoli semplici, la potenza viene a mancare.
Tutto questo preambolo per parlare di uno dei più massicci miglioramenti di RDNA: invece di usare SIMD16 con risoluzioni in 4 clock, RDNA utilizza SIMD32 doppie con risoluzioni in 1 solo ciclo di clock, rendendo le Compute Unit più adatte a calcoli che si incontrano con un motore grafico, piuttosto che con un programma di simulazione scientifica.
Scendendo un po’ più nei dettagli, si può eseguire un’intera Wavefront32 (che è l’unità più piccola di istruzioni) in un solo clock invece che in 4.
Ovviamente, gli scheduler delle CU possono decidere se eseguire una serie di istruzioni in Wavefront32 o in Wavefront64 (quest’ultima divisa su due SIMD32, a seconda del carico). Spingendo ancora oltre sul parallelismo, le componenti di due CU possono essere combinate ed applicate ad un carico ancora più grande, migliorando ulteriormente le latenze.
Latenze inferiori, calcoli migliorati, cache migliorata
So che tutto questo può sembrare complicato, ma per rendere il tutto più comprensibile a chi non ha tempo di macinare datasheet su datasheet, lo scopo principale del passaggio da GCN a RDNA è ridurre le latenze, migliorare le prestazioni in single thread (tipiche dei giochi) e migliorare l’efficienza della memoria cache. Ovvero, macinare più dati per ciclo di clock rispetto a GCN. Ecco perché non è possibile paragonare 40 CU su architettura GCN a 40 CU su architettura RDNA.
Dando un’occhiata alla cachem si nota come Radeon abbia preso spunto da Ryzen, aggiungendo una cache L1 dedicata e raddoppiando la banda passante tra unità logico-aritmetiche e la cache adiacente. Lo scopo di tale cambiamento è ridurre la latenza di accesso alla cache ad ogni livello, e ciò porta ad un miglioramento nell’effettiva banda passante perché i dati richiesti rimangono nei vari livelli di cache, invece di essere spostati nella più lenta memoria video.
Ci sono altri miglioramenti, poi. AMD ha infatti resi noti miglioramenti alla color compression su tutta la pipeline.
Dovete sapere, che in ambito grafico si cerca di comprimere tutto il possibile, per ridurre l’utilizzo di bandwidth ed eliminare teoricamente qualsiasi collo di bottiglia. L’architettura RDNA, quindi, migliora l’algoritmo di DCC (Delta Color Compression), al pari di quanto fatto da Nvidia su Maxwell (GTX900), introducendo inoltre una particolarità: adesso gli stream processors possono leggere e scrivere i dati compressi archiviati nella memoria video.
Al pari degli altri miglioramenti apportati con le Compute Units, tale miglioramento punta ad aumentare la bandwidth a disposizione e al contempo abbassare i consumi energetici rispetto a GCN.
Ci sono ovviamente numerosi miglioramenti alla μArch, ovviamente, ma parlare di ogni singolo miglioramento finirebbe per rendere quest’analisi dell’architettura troppo lunga e noiosa, e quindi riassumerò: RDNA prende GCN, architettura versatile più per il GPGPU (General Purpose) e la rende più adatta ad impegnare tutta la potenza a disposizione verso il gaming. Per capirci, paragonando due schede con pari TFLOPS sulla carta, quella basata su architettura RDNA macinerà molti più frames al secondo.
Quantizzando tale miglioramento, AMD dichiara che, a parità di clock, RDNA presenta un incremento prestazionale del 25%. Tuttavia, tenendo in conto il processo a 7 nm e le frequenze di funzionamento più elevate, RDNA dovrebbe essere più veloce di GCN di circa il 50%, a parità di Stream Processors.
Nelle prossime pagine, verificheremo tali affermazioni.
Discussione su post