Ecco Polaris 10
Sei mesi fa AMD ha iniziato ad anticipare ciò che avrebbero offerto le GPU di nuova generazione, iniziando da un controller display rinnovato per supportare HDMI 2.0b e DisplayPort 1.3 HBR3, FreeSync su HDMI e una pipeline HDR. Da allora sono emerse altre informazioni che indicavano l'esistenza di due GPU create deliberatamente per reclamare quote di mercato nel mercato mainstream desktop e offrire una soluzione mobile con prestazioni di classe console per portatili ultrasottili.
Quest'ultimo progetto (Polaris 11) offre 16 Compute Unit, un bus a 128 bit e l'accelerazione della codifica/decodifica 4K. È in divenire. La Radeon RX 480 che trattiamo in questo articolo è basata sul progetto Polaris 10, più complesso. Non è una GPU che può vedersela con il GP100 di Nvidia da 15,3 miliardi di transistor, ma è sufficientemente elaborata da poter gestire gli attuali visori di fascia alta per la realtà virtuale, al pari della R9 290 e della GTX 970.
Annunciando l'arrivo della Radeon RX 480 AMD ha puntato molto sul rapporto tra prezzo e prestazioni. L'azienda vuole offrire un prodotto che consenta di giocare in realtà virtuale a un prezzo più accessibile. In commercio ci aspettiamo due modelli della RX 480: uno con 4 GB di memoria GDDR5 a 7 Gb/s e uno con 8 GB di memoria GDDR5 a 8 Gb/s. In questo articolo mettiamo alla prova la soluzione migliore, quella da 8 GB.
All'interno della nuova GPU
Polaris 10 è composta da 5,7 miliardi di transistor su un die da 230 mm². La GPU Hawaii integra 6,2 miliardi di transistor su un die di 438mm². Come vedrete nelle pagine dedicate ai test la RX 480 solitamente si posiziona tra la R9 290 e la R9 390, con meno transistor e circa il 55% dei consumi. Parte di questo miglioramento si può attribuire al processo a 14 nanometri FinFET di GlobalFoundries che AMD accredita per i fondamentali benefici sul fronte delle prestazioni e dei consumi rispetto al processo planare a 28 nanometri.
A qualsiasi livello di consumo i FinFET possono lavorare a frequenze superiori. Stabilita la frequenza, un transistor a 14 nm consuma meno energia. Per Polaris 10 AMD ha scelto di seguire tutte e due le strade, aumentando la frequenza e tagliando i consumi. Questo le consente di offrire prestazioni maggiori di GPU più complesse con un TDP di 150 watt - anche se le nostre rilevazioni mostrano che la RX 480 mente un po' su quel numero.
Nonostante il nome in codice Polaris 10 è basata sull'implementazione della quarta generazione dell'architettura Graphics Core Next. Per questo i molti appassionati che hanno già familiarità con GCN riconosceranno i blocchi fondanti del progetto di Polaris.
GPU | Radeon RX 480 (Polaris 10) | Radeon R9 390 (Grenada Pro) | Radeon R9 290 (Hawaii Pro) |
---|---|---|---|
Compute Unit | 36 | 40 | 40 |
Stream Processors | 2304 | 2560 | 2560 |
Freq. base | 1120MHz | 1000MHz | <947MHz |
Freq. boost | 1266MHz | N/A | N/A |
GFLOPs (Base Clock) | 5161 | 5120 | 4849 |
Unità Texture | 144 | 160 | 160 |
Texel Fill Rate | 182.3 GT/s | 160.0 GT/s | 152 GT/s |
Bus | 256-bit | 512-bit | 512-bit |
Freq. memoria | 8 GB: 8 Gb/s 4 GB: 7 Gb/s | 6 Gb/s | 5 Gb/s |
Bandwidth | 256 GB/s | 384 GB/s | 320 GB/s |
ROPs | 32 | 64 | 64 |
Cache L2 | 2MB | 1MB | 1MB |
TDP | 150W | 275W | 250W |
Transistor | 5,7 miliardi | 6,2 miliardi | 6,2 miliardi |
Dimensione die | 230mm² | 438mm² | 438mm² |
Processo produttivo | 14nm | 28nm | 28nm |
Un solo Graphics Command Processor è ancora il responsabile per la gestione delle code grafiche verso gli Shader Engines. Allo stesso modo gli Asynchronous Compute Engines sono deputati alla gestione delle code di calcolo. La differenza è che l'architettura ora consiste di quattro ACE anziché otto, con due unità Hardware Scheduler per gestire la priorità delle code, la gestione delle risorse temporal/spatial e l'offloading delle operazioni di driver scheduling CPU kernel. Questi non sono blocchi separati o nuovi di per sé, ma piuttosto una modalità opzionale sfruttabile dalle pipeline esistenti. Dave Nalasco, senior technology manager per la grafica di AMD, aiuta a chiarire il loro scopo:
"HWS (Hardware Workgroup/Wavefront Schedulers) sono essenzialmente pipeline ACE che sono state configurate con controller dispatch. Il loro lavoro è scaricare la CPU dal gestire lo scheduling delle code utente/driver sugli slot per la coda disponibili in hardware. Si tratta di processori con microcode programmabile che possono implementare una varietà di policy di scheduling. Le abbiamo usate per implementare caratteristiche Quick Response Queue e CU Reservation in Polaris, e siamo stati in grado di portare questi cambiamenti nei prodotti GCN di terza generazione con aggiornamenti driver".
Quick Response Queues permette agli sviluppatori di dare priorità a determinate operazioni che lavorano in modo asincrono senza anticipare altri processi interamente. Nel caso non abbiate letto il post di Dave su questa caratteristica potete dargli un'occhiata. La flessibilità è l'obiettivo di AMD. La sua architettura permette più approcci per migliorare l'uso e minimizzare la latenza, entrambe importati per la realtà virtuale e non solo.
Le Compute Unit che conosciamo così bene consistono di 64 shader IEEE 754-2008-compliant suddivisi tra quattro unità vettoriali, un'unità scalare e 16 unità texture fetch load/store. Ogni CU offre anche quattro unità texture, 16KB di cache L1, 64KB di dati locali condivisi, uno spazio di registro per unità scalari e vettoriali. AMD dice che ha fatto diverse modifiche per migliorare l'efficienza dei CU, inclusa l'aggiunta del supporto nativo FP16 (e Int16), un accesso alla cache ottimizzato e un migliore prefetching delle istruzioni. Tutti insieme questi cambiamenti dovrebbero aumentare fino al 15% le prestazioni per CU rispetto alla GPU Hawaii della R9 290, che è basata sulla seconda generazione dell'architettura GCN.
Nove CU sono organizzati in uno Shader Engine e Polaris 10 ne ha quattro di questi SE, coerentemente con ciò che sappiamo essere il massimo dell'architettura. Facendo i conti (64 shader x 9 CU x 4 SE) abbiamo 2304 stream processor e 144 unità texture.
Ogni Shader Engine è associato a un Geometry Engine, che secondo AMD è migliorato grazie all'aggiunta di un primitive discard accelerator per non avviare qualsiasi primitiva che non rasterizza verso un pixel, prima di eseguire la scan conversion, aumentando quindi il throughput. È una funzione automatica dello stadio di pre-rasterizzazione della pipeline grafica, ed è interamente nuova in Polaris. C'è anche un index cache per instanced geometry, anche se non siamo certi di quanto grande sia o significativo l'impatto quando viene usato l'instancing.
Quanto è realistico il numero di 1266 MHz? Hawaii aveva grandi problemi nel mantenere la frequenza scelta di AMD, diventando caldo, e vogliamo assicurarci che lo stesso comportamento non si verifichi con Polaris. Usando il test integrato Metro: Last Light Redux in loop 10 volte, abbiamo registrato le frequenze usando GPU-Z e abbiamo ottenuto il seguente grafico:
Ci sono esattamente 148 MHz tra i punti più bassi e alti in questo grafico. Il livello inferiore è 1118 MHz e il tetto è 1265 MHz. Diremmo che AMD indica le proprie specifiche base e boost quasi esattamente, anche se ciò che succede nel mezzo è soggetto a costante regolazione. Almeno la media di 1208 MHz è più vicina al livello massimo che a quello minimo.
Similmente ad Hawaii, successivamente divenuta Grenada, Polaris 10 è capace di gestire fino a quattro primitive per ciclo di clock. Laddove le GPU Hawaii/Grenada più veloci lavoravano fino a 1050 MHz (nel caso della R9 390X), AMD spinge la Radeon RX 480 a 1266MHz, compensando frequenze più alte le risorse perse sul die. Mentre la R9 290X offriva 5,6 TFLOPs di potenza in virgola mobile, la RX 480 raggiunge 5,8 TFLOPs.
Laddove gli Shader Engine di Hawaii e Fiji hanno quattro render back-end, capaci di 16 pixel per clock (o 64 lungo GPU), Polaris 10 taglia quel numero della metà. Due render back-end per SE, ognuno con quattro ROPs, per un totale di 32 pixel per clock. Questa è una riduzione rilevante rispetto alla R9 290 che AMD deve superare con la RX 480. Per finire, Polaris 10 ha un bus di memoria a 256 bit - molto inferiore ai 512 bit di Hawaii. La versione da 4 GB della RX 480 include memoria GDDR5 a 7 Gb/s, per un bandwidth di 224 GB/s, mentre il modello da 8 GB che testiamo in questo articolo ha memoria GDDR5 a 8 Gb/s, per un throughput di 256 GB/s - molto meno dei 320 GB/s della R9 290.
Parte del deficit è compensato da una compressione delta color migliorata che riduce la quantità d'informazione trasferita sul bus. AMD ora supporta rapporti lossless 2/4/8:1, similmente all'architettura Nvidia Pascal. Polaris 10 beneficia anche della più capiente cache L2 da 2 MB vista in precedenza su Fiji. Questo può aiutare nel passaggio dei dati alla memoria, riducendo ulteriormente la dipendenza della GPU da un ampio bus e dai data rate elevati.
La semplificazione del back end deve però avere un impatto sulle prestazioni all'aumentare di risoluzione e uso di anti-aliasing. Curiosi di come Polaris 10 si posiziona rispetto ad Hawaii all'intensificazione del carico, abbiamo avviato Grand Theft Auto V a 1920x1080 con dettagli Very High e poi abbiamo iniziato ad aumentare l'anti-aliasing.
Come potete vedere la Radeon RX 480 vede scendere il proprio frame rate medio molto più velocemente della R9 390 con il passare dell'MSAA da "Off" a 2x e poi 4x. Con AA disabilitato la RX 480 ha raggiunto 97,3 FPS e la 390 è arrivato a 90,4 FPS. Alla fine la RX 480 è a 57,5 FPS mentre la 390 si ferma a 62,9 FPS.
Asus AMD Radeon RX 480 | ||
Sapphire AMD Radeon RX 480 | ||
MSI AMD Radeon RX 480 | ||
Sapphire AMD Radeon RX 480 | ||
Sapphire AMD Radeon RX 480 |