[mks_dropcap size="90" bg_color="#ffffff" txt_color="#e64946"]M[/mks_dropcap]eglio avere maggiore frequenza o minore latenza? Qualunque appassionato di informatica che si sia cimentato in qualche tentativo di overclock delle memorie, si sarà posto questa domanda almeno una volta.

Il tema si è infuocato dopo l'uscita delle due maggiori console next-gen, a causa della decisione di utilizzare diverse soluzioni per le memorie. Nelle soluzioni adottate dalle console non viene utilizzata una memoria di sistema dedicata al processore come accade con un PC; sarebbe un spreco.

Questo perché una CPU gestisce calcoli per applicativi multitasking che le console, eseguendo prettamente giochi, non necessitano. Xbox One utilizza 8GB di memoria DDR3 operanti a 2133MHz con bassa latenza. La Playstation 4 utilizza 8GB di memoria GDDR5 che opera a 5500MHz a latenza doppia; La banda massima dichiarata è di 176 GB/s per le GDDR5 di PS4, ovvero circa due volte e mezzo la banda delle DDR3 di X1 che si fermano a 68 GB/s. Microsoft però, per compensare il gap della banda, ha aggiunto 32MB di eSRAM (che operano a 192GB/s teorici) direttamente all'interno del SoC.

Ma cos'è la latenza e cosa significa avere maggiore o minore banda passante? Più avanti lo spiegheremo nel dettaglio.

Memoria di sistema: questione di punti di vista?

Perché Sony non ha inserito una RAM embedded come ha fatto Microsoft? Semplicemente perché non era necessaria. Su PS4 la banda passante è talmente ampia che, per limitazioni tecniche, non verrà mai sfruttata appieno.

Perché Microsoft ha scelto di optare per DDR3 + eSRAM? I big di Redmond hanno tentato un approccio differente: restare coerenti il più possibile con la vecchia architettura della Xbox 360, rinunciando alla potenza bruta delle GDDR5 per limitare i costi di produzione e ottimizzare il consumo energetico.

"Having ESRAM costs very little power and has the opportunity to give you very high bandwidth. You can reduce the bandwidth on external memory - that saves a lot of power consumption and the commodity memory is cheaper as well so you can afford more."
- Nick Baker (General Manager, XBOX Console Architecture)

Ma, proprio come aveva fatto Sony con il Cell e le memorie XDR (due passi falsi che Sony ha evitato di compiere ancora), questo tipo di implementazione anomala può rendere la vita difficile agli sviluppatori, soprattutto a quelli che intendono realizzare giochi multi-piattaforma.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]Questo tipo di implementazione anomala può rendere la vita difficile agli sviluppatori[/mks_pullquote]

Chi sviluppa un gioco per PC si trova a fare i conti con due tipi di memorie differenti: la memoria di sistema e la memoria video. Quando un gioco è caricato, viene fatto un pesante uso della memoria video, nella quale vengono caricati tantissimi tipi di informazioni, dinamiche e non. Più il motore grafico di un gioco è complesso, più texture e dati in tempo reale deve gestire (fisica, effetti di luce, RT aliasing), più la memoria video aumenta d'importanza. Non solo, all'aumentare della risoluzione, aumenta la quantità richiesta di memoria.

Avere soltanto 32MB di memoria veloce a disposizione (quando PS4 e le VGA per PC ne hanno Gigabytes) significa dover riscrivere e ottimizzare, specificatamente per Xbox One, grosse porzioni di codice per tentare di pareggiare i conti con i concorrenti. Questo, per stessa ammissione dell'ingegnere Microsoft Andrew Goossen:

"...for example if you're doing a racing game and your sky has very little overdraw, you could stick those sub-sets of your resources into DDR to improve ESRAM utilisation," he says, while also explaining that custom formats have been implemented to get more out of that precious 32MB."
- Andrew Goossen (Distinguished Engineer, Microsoft)

Preziosi, certo, perché in quei 32MB è racchiusa l'unica possibilità per gli sviluppatori di utilizzare una memoria ad alta velocità che possa competere con le GDDR5, disponibili in gran quantità su PS4.

Ma le GDDR5 sono solo rose e fiori? Quanto influisce la latenza elevata sulle prestazioni dei giochi?

Che cos'è la latenza?

Detto in parole povere e senza annoiare con tecnicismi, la latenza è il "tempo di attesa" impegato per accedere a un buffer di memoria, ovvero quanti cicli di clock bisogna attendere per avere a disposizione uno stack di informazioni. Le latenze medie delle memorie DDR3 sono di 8/9 CAS; quelle delle GDDR5 invece, si attestano intorno ai 14/15 CAS.

Come tutti sappiamo, entrambe le console sono dotate della stessa architettura AMD Jaguar x64. Sia PS4 che Xbox One, hanno implementato la tecnologia HSA, utilizzando un controller dedicato che sfrutta una tecnologia simile a hUMA (Heterogeneous Uniform Memory Access), in modo tale da rendere immediatamente (e contemporaneamente) disponibili i dati contenuti nella memoria. Questo tipo di tecnologia permette il libero scambio di informazioni fra CPU e GPU, ottimizzando la coerenza della cache e abbattendo il problema delle latenze.

In un articolo di TMAG sull'utilizzo della memoria di sistema e la presenza della eSRAM, X-Rays afferma:

La CPU non va molto d’accordo con le GDDR5 ed è per questo motivo che nei PC non vengono montate come memoria di sistema.

Vero. X-Rays però dimentica di ricordare che PS4, così come X1, elimina quasi del tutto il problema delle alte latenze, utilizzando appunto la tecnologia HSA/hUMA che X-Rays menzionava in un suo altro precedente articolo.

Conta di più la latenza o la banda?

La banda passante totale è il prodotto fra la frequenza di clock base, il Data Rate per clock (che per le DDR, Double Data Rate, equivale a due) e il numero delle interfacce utilizzate. Facciamo il punto allora: cosa significa che CPU e GDDR non vanno d'accordo? Le GDDR sono meglio delle DDR3? Non necessariamente. Dipende dal tipo di applicazione che si intende utilizzare.

Le GPU sono molto tolleranti alle alte latenze, ma hanno molta fame di banda, seguendo la filosofia: più latenza, più banda. Le DDR seguono la filosofia opposta: meno latenza, meno banda. Mentre le DDR usano interfacce da 64bit per canale (4 x 64bit = 256bit) consentendo quindi solo di leggere o scrivere durante un ciclo, le GDDR5 consentono l'utilizzo di interfacce multiple per canale, ovvero 2 coppie da 4 interfacce a 32bit (8 x 32bit = 256bit). Le interfacce multiple però, consentono di effettuare contemporaneamente operazioni in lettura e scrittura nello stesso ciclo.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]Molti studi provano l'effettivo leak delle latenze elevate in ambito general purpose[/mks_pullquote]

Esistono molti studi e test, che analizzano l'impatto delle memorie sulle operazioni GPGPU (General Purpose GPU) e provano l'effettivo leak delle latenze elevate in ambito general purpose.

In linea di massima le CPU preferiscono le basse latenze perché generalmente devono sopportare carichi di lavoro multipli che richiedono un accesso rapido alle informazioni. Le GPU non hanno la stessa necessità di latenze aggressive, ma hanno bisogno di banda passante per spostare grandi quantità di dati. Questo a causa della loro architettura che consente di effettuare molti calcoli in parallelo, mentre un altro ciclo di lavoro è in attesa a causa della latenza.

Come abbiamo visto, PS4 riesce comunque a cavarsela grazie all'utilizzo di HSA. Non dobbiamo dimenticare inoltre, che i videogames sono applicativi che occupano generalmente un singolo carico di lavoro correlato strettamente alla GPU, dunque scarsamente influenzato dalla latenza della memoria. Senza l'introduzione della eSRAM, sarebbe stato impossibile per Xbox One ottenere prestazioni adeguate per il gaming puro.

Proviamo a stimare l'impatto reale della latenza e della banda in ambito videoludico.

DDR3 vs GDDR5: Benchmark

Per effettuare un confronto serio, abbiamo bisogno di osservare i risultati delle memorie DDR3 nei benchmark, per poi confrontarli con quelli ottenuti dalle GDDR5. Cominciamo con le latenze:

Toms-F12012U-latenze Toms-Metro2033-latenze

Osserviamo questi test effettuati da Tom's Hardware. Gli ultimi due risultati in basso, ci mostrano le performance delle memorie DDR3, entrambe operative a 1600MHz, ma settate a diverse latenze (C7 e C9). È possibile osservare come le latenze, in ambito gaming, non influenzino quasi per nulla le performance, restituendo risultati reali in FPS molto simili.

Il secondo risultato dall'alto invece, mostra le stesse memorie overcloccate a 2133MHz (C9). Notiamo un leggero incremento di prestazioni in F12012 e risultati molto similari in Metro 2033 (un gioco noto per essere molto GPU-related).

Tuttavia questi risultati, considerando il limite della tecnologia DDR3 e la forbice poco ampia di overclock fra 1600MHz e 2133MHz, ci impediscono di ottenere un quadro chiaro della situazione. Dobbiamo affidarci a un confronto diretto fra le due tecnologie. Per farlo, abbiamo necessità di confrontare le performance di due chip grafici identici, ma che utilizzino diversi banchi di memoria. Ancora una volta AMD ci viene in aiuto, permettendoci di confrontare i test della Radeon HD7750, una VGA prodotta in due versioni differenti; una con banchi di memoria DDR, l'altra con banchi di memoria GDDR:

7750-test-pct

7750-test-fps

Da questi test appare evidente il gap prestazionale. La versione GDDR della HD7750 mostra un notevole incremento prestazionale rispetto alla sorella dotata di DDR, permettendo in alcuni casi addirittura di raddoppiare le performance in FPS a parità di chip grafico.

La eSRAM è un collo di bottiglia?

Al momento pare proprio di sì. I soli 32MB di memoria veloce sono una limitazione enorme per la GPU; non tanto per la velocità, che secondo quanto emerso dalla stessa Microsoft, è davvero simile a quella delle GDDR5, ma per la quantità limitata a disposizione degli sviluppatori. Proprio perché, come abbiamo detto, nei giochi più pesanti la GPU ha bisogno di scambiare notevoli quantità di dati.

Molti sviluppatori si sono pubblicamente lamentati per le difficoltà incontrate utilizzando le più lente DDR3 in combinazione con soli 32MB di eSRAM. Jeremy Conrad e Pete Dodd, affermano che la eSRAM agisce da vero e proprio collo di bottiglia per la console, impedendo ad alcuni titoli di raggiungere i 1080p. Questo accade perché quando la risoluzione aumenta, la richiesta di memoria da parte della GPU aumenta di conseguenza (per questo motivo, ad esempio, tutte le configurazioni PC multi-monitor, necessitano una quantità di VRAM disponibile molto superiore alle configurazioni standard 1080p).

Proprio in questi giorni Brad Wardell, CEO di Stardock (Galactic Civilization, Sins of a Solar Empire), è intervenuto con un breve commento circa le reali possibilità della macchina di ottenere finalmente risultati allineati alla concorrenza. La risposta è stata molto netta: "Microsoft ha risparmiato troppo sulle RAM".

Molti giocatori si domandano: "Perché alcuni titoli riescono a raggiungere i 1080p@60?". Alcune fonti vicine a Microsoft puntano il dito verso lo scarso impegno dimostrato dagli sviluppatori in fase di sviluppo, indicando come eccellenti esempi di riferimento, giochi come Forza Motorsport 5 che raggiunge i 1080p@60, ma dimenticando di precisare che per ottenere quel risultato, sono stati disabilitati fisica e illuminazione dinamica, antialiasing e filtri anisotropici. In altri casi è merito dell'engine grafico; Wolfenstein: The New Order ad esempio, utilizza un motore che riesce a far girare il gioco a una risoluzione "variabile"; più azione è presente sullo schermo, più la risoluzione viene scalata verso il basso.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]Il vero limite di Xbox One non è grafico, è di memoria[/mks_pullquote]

Se XOne, utilizzando il Dual Lane, riuscisse a incrementare la potenza della console, riuscirebbe a compensare la apparente debolezza della soluzione eSRAM? Dipenderà da come verrà sfruttata questa doppia pipeline grafica, ma il vero limite della console non è grafico, è di memoria.

Facciamo un esempio: se volessimo utilizzare una potentissima GTX Titan con solo 1GB di GDDR on-board, oppure la stessa scheda in combinazione con una vecchia CPU, avremmo delle difficoltà. Non importa quanto potente possa essere la GPU, il processore e la RAM farebbero sempre e comunque da collo di bottiglia, strozzando inevitabilmente la scheda e impedendole di esprimere il suo massimo potenziale.

Tuttavia non stiamo parlando di PC, ma di console. Questo significa che ottimizzando ad-hoc il software e utilizzando tool di sviluppo specifici e ottimizzati, sarà possibile vedere dei miglioramenti, che saranno ancora più evidenti dopo l'introduzione delle nuovissime DirectX 12. Di queste migliorie beneficeranno soprattutto i titoli first party, che per ovvi motivi sono maggiormente ottimizzati; per quanto riguarda i titoli multi-piattaforma (cioè la maggioranza dei giochi in catalogo) dipenderà dal grado di difficoltà in fase di porting e dal livello di ottimizzazione che effettueranno i singoli sviluppatori.

Microsoft afferma che c'è meno spazio per l’ottimizzazione in PS4 rispetto a Xbox One, ma non è così. Semplicemente la PS4 non ha bisogno dell'ottimizzazione e delle accortezze in fase di sviluppo, che si rendono necessarie invece per Xbox One, al fine di ottenere gli stessi risultati ottenibili già adesso su una PS4.

Di certo, come è già successo a Sony con il Cell, la prossima volta Microsoft non commetterà lo stesso errore.