DirectX 12 e eSRAM su Xbox One: ecco cosa ne pensa un vero esperto

Con una rapida ricerca sul web vi potrete imbattere in una marea di ragionamenti e considerazioni più o meno attendibili relativi a quelle che sono a tutti gli effetti due delle principali caratteristiche peculiari di Xbox One. Mi riferisco alle librerie grafiche DirectX 12 attese per il 2015 e alla tanto (direi troppo) bistrattata eSRAM.

Quando però a dire la sua su questi temi è un vero e conclamato esperto dell’industry non si può che prestare particolare attenzione. L’esperto in questione (ovviamente non è a me che faccio riferimento! 😆 ) è Wolfgang Engel, ex lead graphics programmer presso Rockstar, autore di diversi libri sulla programmazione grafica e fondatore/CEO della Confetti. Probabilmente questo nome vi dirà poco o niente ma è abbastanza normale dato che stiamo parlando di una realtà importante nel campo della programmazione grafica che, però, non opera a contatto con noi utenti finali. La Confetti, infatti, si occupa di sviluppare dei tool grafici molto avanzati, di integrarli all’interno di engine terzi e di fornire consulenza tecnica di alto livello ai suoi clienti, tra i quali troviamo grandi società come Intel, AMD, Microsoft, Qualcomm, Insomniac, etc. Di recente ha legato il proprio lavoro di consulenza e le proprie tecnologie a progetti videoludici di grande rilievo come Tomb Raider, DOOM III, Star Citizen e Battlefield 4.

In una bella e recente intervista rilasciata a Gamingbolt, Wolfgang Engel ha parlato anche di Xbox One e proprio dei due suddetti aspetti. Di seguito trovate un sunto di quanto affermato dal programmatore (in corsivo) corredato da alcune informazioni aggiuntive che ritengo utili a delineare un quadro più ampio.

DirectX 12

Grazie alle DX12 il carico sulla CPU decresce notevolmente a seguito di un miglior utilizzo dei vari core del processore. Una delle più interessanti caratteristiche dei giochi moderni risiede nella fisica che, solitamente, viene implementata proprio sulla CPU. Gli sviluppatori possono impiegare tutto quell’ammontare di CPU time risparmiato grazie alle nuove librerie, ad esempio, proprio per migliorare la fisica. Tutto questo è vero su PC come su Xbox One. XOne, tra l’altro, impiega già adesso delle librerie grafiche DX11.n customizzate che anticipano (anche se solo in parte) alcune delle feature che arriveranno con le DX12 il che permette già ora di risparmiare molto CPU time da destinare ad altri scopi (ndr. più nemici, IA più performante, etc.).

A tal proposito lasciatemi aggiungere che, come annunciato di recente da Phil Spencer, le DX12 non faranno miracoli su XOne ma di sicuro andranno a sbloccare delle risorse extra presenti ma non ancora impiegabili con le attuali librerie grafiche. Vedremo di che risorse si tratterà (azzardo tra tutte l’impiego del dual lane per la parallelizzazione delle elaborazioni grafiche) e come queste impatteranno sulle performance dei giochi. Già adesso, però, stando alla parole di Futuremark (leader nella realizzazione di software per il benchmark)  sappiamo cosa attenderci in generale con il passaggio dalle DX11.n alle DX12. A seguito della già citata più equa distribuzione dei carichi di lavoro sui core del processore (ricordiamo che su XOne ve ne sono 8), gli ideatori del notissimo 3DMark ci fanno presente che gli sviluppatori potranno realizzare scenari più ricchi di oggetti e quindi più dettagliati. Inoltre avranno accesso a tutta una serie di nuovi strumenti e nuove funzionalità di rendering in grado di migliorare l’efficienza di svariati algoritmi quali, ad esempio, quelli legati alla gestione della trasparenza, al rilevamento delle collisioni e alla geometria. Ovvio che tutto ciò avrà un impatto decisamente maggiore sul mondo PC dato che, in qualità di sistema chiuso e noto a priori, già adesso Xbox One beneficia di api di basso livello particolarmente efficienti. Detto questo, è però indubbio che anche lo sviluppo di giochi su XOne avrà i suoi benefici con l’arrivo delle DX12.

eSRAM

Parlando della eSRAM di Xbox One, da molti vista come un punto di debolezza della console, Wolfgang Engel ha fornito uno spunto di riflessione molto interessante sottolineando che, se ben adoperata, è destinata a diventare il punto di forza dell’intero sistema.

La eSRAM è una memoria molto veloce. In generale la sfida più grande che oggigiorno gli sviluppatori stanno affrontando risiede proprio nei modelli di accesso della memoria, infatti se da un lato disponiamo di moltissima potenza di calcolo, di contro il costo di accesso alla memoria (ndr: inteso come cicli di clock di elaborazione persi attendendo i moduli di memoria) sta aumentando notevolmente negli ultimi dieci anni, rispetto al costo delle istruzioni aritmetiche. Finché si rimane nei registri del processore non si hanno problemi ma non appena diventa necessario accedere alla memoria diventa tutto più lento. La sfida è di accedere alla memoria in maniera più efficiente. Quindi i modelli di accesso alla memoria sono le strategie di ottimizzazione più importanti. In altri termini ancora più del conteggio del numero di cicli, ciò che conta veramente è pensare a come sfruttare e ottimizzare un algoritmo in modo che si possa accedere alla memoria nel modo più efficiente possibile. La eSRAM è proprio parte di questo processo.

Ovvio che si può fare della eSRAM il punto di forza auspicato solo se adoperata a dovere. A tal proposito l’esperto, richiamando alla mente quanto già detto inprecedenza da Turn10 e da Crytek, aggiunge:

Le chiamate più pesanti e importanti possono essere gestite nella eSRAM. Quando non si necessita di banda di memoria velocissima, si deve ricorrere alla memoria di sistema regolare. È necessario però pianificare in anticipo, bisogna pensare prima a come adoperare la memoria nel modo ottimale. Così la eSRAM ti offre un vantaggio, a patto che si pianifichi tutto dall’inizio. Per uno dei nostri progetti che stiamo realizzando, abbiamo utilizzato la eSRAM creando un foglio in excel (ndr: stesso approccio intrapreso dagli sviluppatori di Trials Fusion), che mostra come ci accingiamo a utilizzare la eSRAM attraverso gli stadi della pipeline di rendering. Questo ci ha aiutato a utilizzare i miglioramenti di velocità che offre la eSRAM senza impattare sull’intero sistema e sfruttando al massimo ogni singola risorsa.

Lasciatemi riprendere la parola per sottolineare come proprio il corretto uso dell’accoppiata eSRAM-DDR3 sia un aspetto tutt’altro che secondario. Solo decidendo a priori quali asset grafici renderizzare attraverso la eSRAM e quali lasciare alla ram DDR3 si può sfruttare tutto il potenziale di Xbox One. Il modo migliore per comprendere ciò è ragionare, usando le informazioni rilasciate dagli stessi progettisti di XOne, sulla banda complessiva messa a disposizione dal sistema di memoria della console:

  1. eSRAM e DDR3 non vanno visti come elementi a se stanti bensì come un unico sistema. Questo perchè in tutto vi sono 8 controller per la memoria, 4 per la RAM DDR3 e 4 per la eSRAM che però sono tutti interconnessi tra loro e quindi è possibile accedere simultaneamente a RAM ed eSRAM. In altri termini, l’eSRAM è completamente integrata nelle tabelle di paging ed è così possibile integrare perfettamente la eSRAM nella memoria DDR3.
  2. La banda passante teorica della RAM DDR3 (8GB) è di 68GB/s che, all’atto pratico, si assestano su un valore reale di circa 50-55GB/s.
  3. La banda passante teorica della eSRAM (32MB) è di 109GB/s in lettura e altri 109GB/s in scrittura. Poichè la eSRAM è in grado di supportare letture e scritture simultanee, la sua banda teorica complessiva è in realtà di 218GB/s. Come per i moduli DDR3, anche la eSRAM calata in applicazioni reali si assesta a regime su un valore più basso e per l’esattezza misurato in 140-150GB/s.
  4. Di conseguenza, considerando l’uso combinato di RAM e eSRAM (possibile per quanto detto nel punto 1.), complessivamente il pool di memoria di Xbox One è in grado di offrire una banda reale superiore ai 200GB/s (50-55GB/s + 140-150GB/s). Non a caso misurazioni effettuate con codice reale in elaborazione hanno fatto registrare un valore di 204GB/s.

Se questo numero vi dice poco è sufficiente pensare che la tanto decantata ram GDDR5 di PS4 è sì estremamente performante ma si ferma a “soli” 176GB/s. Tutto questo gran potenziale del pool di memoria di XOne, però, resta inespresso o sottoutilizzato senza quel buon lavoro preliminare di pianificazione di cui parla Engel. Per intenderci, se un asset grafico non necessità di tutta la velocità offerta dalla eSRAM, gestirlo lo stesso mediante questi 32MB è un enorme spreco di risorse che penalizza le performance dell’intero sistema.

 

  • L’accoppiata ddr3+esram ha quindi più potenziale di un unico pool di memoria gddr5. Spero tanto che i prossimi giochi sfruttino a dovere la vera potenza di One.

    • GamingAddiction_slp

      Il potenziale è veramente alto proprio in virtù del fatto che la eSRAM è perfettamente integrata con la DDR3. A livello logico possiamo vedere la eSRAM come un’area della RAM in grado di accelerare moltissimo la renderizzazione di alcuni selezionati asset grafici. Consideriamo infatti che, rimanendo sui valori reali, ciò che rimane al di fuori della eSRAM usufruisce di un banda passante di circa 50GB/s, mentre gli elementi che confluiscono in quei 32MB viaggiano a circa 150GB/s. Il che vuol dire che usufruiscono di una banda più performante addirittura del 200% (+100GB/s) rispetto a ciò che rimane fuori.
      Ovviamente l’accesso ai dati di eSRAM e DDR3 può avvenire in contemporanea ed ecco perchè si arriva a quei 200GB/s; mentre un asset esoso in termini di banda sfrutta i 150GB/s della eSRAM nello stesso tempo un altro che non richiede aggiornamenti molto frequenti e quindi può essere gestito tramite la normale memoria, sfrutterà i 50GB/s della DDR3.
      Ovvio che se a monte gli sviluppatori non vorranno sbattersi per selezionare a dovere cosa inviare alla eSRAM e cosa lasciare alla DDR3, tutto questo grande potenziale rischia di essere sprecato. Questo però MS lo ha capito bene e infatti ha iniziato a supportare direttamente gli sviluppatori per aiutarli a capire e sfruttare al meglio il grande potenziale di XOne (vedi ad esempio il supporto che MS sta dando a CD Projekt per ottenere i 1080p su The Witcher 3)

      • Ma non sarebbe possibile far vedere agli sviluppatori esram e ddr3 come se fosse un unico pool di memoria?

        • GamingAddiction_slp

          Credo che MS sia già al lavoro su delle procedure semi-automatiche che facilitino agli sviluppatori lo smistamento degli asset tra eSRAM e DDR3. Far vedere ai dev le due memorie come un unico blocco vorrebbe dire creare delle procedure completamente automatiche ma per forza di cose sarebbero troppo generiche e quindi farebbero sfruttare solo in minima parte il sistema, se non altro perchè toglierebbero la possibilità di agire ad un livello più basso.
          Un po’ di maggior impegno, ingegno e capacità da parte degli sviluppatori saranno sempre richiesti soprattutto se facciamo il confronto con PS4 nella quale basta dare tutto in pasto alla GDDR5 e non preoccuparsi di nient’altro. Più che interventi tecnici, servirebbero da parte di MS dei meccanismi di incentivo (es. economici o di collaborazione agevolata) per stimolare gli sviluppatori a fare questo sforzo e far rendere i loro giochi su XOne al massimo che la console permette.

          • Speriamo che gli sviluppatori a poco poco si abituino a sfruttare l’esram e trarne il massimo vantaggio da essa. I giochi parleranno 🙂

      • Revolver Ocelot

        18 months on and your asses sure are red now!

        Keep the tech stuff to people who know what they’re talking about, Shitbox worm. 🙂