Tra GDC e BUILD 2014, Microsoft ha finalmente mostrato i muscoli. Cose inimmaginabili diventano reali, i rumor vengono confermati e solo ora si intravede la vera potenza di Xbox One. Ancora una volta, se non fosse stato chiaro, Microsoft ha ribadito come le nuove API DirectX 12 saranno implementate completamente su Xbox One nei tempi a venire (si parla non prima del 2015 però) e, aguzzate le orecchie, stanno utilizzando la console come hardware di test.
Non a caso alcune feature delle DX12 sono già implementate ma solo successivamente vi sarà il pieno supporto, supporto che sarà garantito solo su hardware di nuova generazione. La casa di Redmond non ha mai etichettato il graphic processor unit di Xbox One come “modern GPU” (al contrario di Sony…) ma l’ha sempre definito come “next generation GPU”.
Al BUILD 2014 c’è stato il panel intitolato “Into the architecture of Xbox One”, discusso da un veterano della divisione Xbox, vale a dire Frank Savage. Il buon Savage ha discusso i seguenti punti:
Con un accenno importante sulla possibile retrocompatibilità di Xbox One verso Xbox 360, cosa vista più come una possibilità che come una certezza, ma comunque ci si sta lavorando.
Il giorno precedente è stato anche discusso il tanto chiacchierato Cloud Computing con Microsoft protagonista di una demo in tempo reale, che ha mostrato un intero edificio bersagliato da missili e fatto collassare in 35.000 pezzi simulati perfettamente nella fisica, sia in locale da un potente PC e sia con il supporto del cloud. Nella configurazione priva del cloud la demo segnava vistosi cali di frame rate con appena 2 fps mentre con il supporto attivo al cloud i frame si sono mantenuti fissi a 32, senza rallentamenti. DI questo però ce ne occuperemo di più nel prossimo Inside Xbox One.
Tornando alla conferenza di ieri, Savage ha esposto i reali pregi della ESRAM di Xbox One, che ammonta a 32MB ed è integrata nella GPU. Prima curiosità: la velocissima ESRAM comunica con GPU e RAM di sistema, e NON con la CPU (non funge da cache per il central processor unit, come erroneamente sostenuto da alcuni anche in questa sede, anche se nel vecchio Digital Foundry si era fatto riferimento a questa possibilità ma inutilizzabile a causa della forte latenza).
In altre parole solamente la GPU può “vedere” la ESRAM. La visualizzazione a 1080p nativi e 60 frame per secondo non saranno più un problema, a patto che gli sviluppatori sfruttino a dovere il complesso chipset di Xbox One, cosa fattibile solo attraverso nuovi e potenti tool di sviluppo (da qui il resolution gate della prima line-up di giochi).
L’accesso della GPU alla ESRAM può essere utilizzata in una moltitudine di casi, dato che offre una banda passante di output velocissima: soprattutto quando si hanno contenuti di grosse dimensioni, come ad esempio 5GB di dati che potrebbero essere indirizzati per un rendering qualsiasi; ogni elemento che passa alla ESRAM, che ha una larghezza di banda dell’ordine di 2-10 volte più veloce della DDR3, è un grosso vantaggio per l’intero sistema.
In questo modo si utilizza la ESRAM, inserire cioè all’interno di essa gli elementi più sensibili e che richiedono un continuo accesso alla lettura dei dati presenti, come le “shadow map”, e lasciare gli oggetti che fanno un minor utilizzo delle risorse all’interno della memoria di sistema. Prendiamo ad esempio un gioco di corse dove l’oggetto meno dinamico è il cielo: questo elemento può risiedere senza troppi problemi nella DDR3 di Xbox One, con la ESRAM invece utilizzata per elementi dinamici come la visualizzazione delle vetture su pista. Questo funziona praticamente per qualsiasi risorsa D3D, dal buffer alle texture di ogni tipo dato che, in questo caso, non c’è accesso diretto alla CPU, perché la CPU non può vedere il contenuto della ESRAM, ma bisogna passare sempre attraverso la GPU per arrivare ad essa, una imposizione voluta da Microsoft questa.
Come sfruttare quindi a dovere la ESRAM e la RAM di sistema? Semplice, conoscere quali target vanno diretti alla ESRAM e quali alla memoria principale, passando sempre su quest’ultima poiché la copia sulla DDR3 è veramente veloce, e non necessita di un ulteriore passaggio sulla CPU o sulla GPU dato che, per questi compiti, sono già adibiti i 4 Data Move Engines. Questo è il metodo più facile e veloce per avere un output a 1080p, e questo è il procedimento per raggiungere i 60 fotogrammi al secondo. Tutto questo però solo se si utilizzano nuovi engine e non vecchi tool.
Questo è un enorme vantaggio a patto di sfruttare anche i 4 (iirc) DME, senza utilizzare banda e cicli di CPU o GPU, combinando quindi l’altissima banda passante di ESRAM e DDR3.
Se ci pensate PS4 possiede solo due canali diretti verso la memoria GDDR5 (CPU e GPU) che può scrivere simultaneamente ma entrambi devono essere prima messi in cache. Ed è l’unica soluzione possibile sulla PS4 mentre Xbox One ha molte più opzioni (CPU, GPU DD3 a DD3, GPU a ESRAM, Move Engine a ESRAM, Move Engine a DDR3) con la possibilità che in alcuni passaggi si può considerare la lettura / scrittura / copia/ simultanea.
Ribadiamo però che per trarre il massimo beneficio dalle configurazioni possibili su Xbox One bisogna utilizzare nuovi engine pensati per i vari passaggi, altrimenti la ESRAM o diventa un collo di bottiglia o non sfruttata a dovere.
Di converso PS4 beneficia del veloce pool di GDDR5 che può già sfruttare l’intera banda passante, ma ciò significa anche che c’è meno spazio per l’ottimizzazione. Il risultato è quindi un beneficio immediato per la PS4, e un piccolo handicap su Xbox One, allo stato attuale. Aspettatevi grandi guadagni nei nuovi motori 3D e prestazioni al di sotto delle aspettative in vecchi engine che non utilizzano il concetto di lettura / scrittura / spostamento della console di Microsoft, nello specifico RAM di sistema più ESRAM più Data Move Engine.
Più o meno è lo scenario attuale di diversi titoli multiformato che girano meglio su PS4 che su Xbox One, ma quando abbiamo nuovi tool come il CryEngine o proprietari come quello di Turn10, ecco che titoli come Ryse: Son of Rome e Forza Motorsport 5 diventano il fiore all’occhiello della console.
E non dimentichiamoci delle ottimizzazioni che porteranno le DirectX 12, con un incremento delle prestazioni della console anche del 30%, come confermato da più parti (chiamatela ottimizzazione, chiamatela maggior uso intensivo dell’hardware, chiamatelo boost, chiamatela fonte segreta…), fatto sta che Xbox One non è mai stata una console da 1,3 TFLOPS di potenza ed è una hardware pensato per il futuro, che farà da apripista a molteplici soluzioni hardware dei principali produttori hardware: l’unico grosso errore di Microsoft è stato quello di aver lanciato la console troppo presto, con un chipset difficile da comprendere, mancanza di SDK completi e supportata da engine vecchi di anni.
Una cosa però vi chiediamo: non paragonateci ad altri insider né a MrX, noi abbiamo le nostre fonti, noi abbiamo i nostri contatti (si, anche qui in Italia…) e noi abbiamo le nostre teorie. Il nostro obiettivo è solo quello di farvi capire il potenziale “nascosto” della console, delle possibilità, anche se remote, che Xbox One potrebbe avere, ma mai vi diremo che la console è da 5 o 10 TFLOPS. Molte supposizioni e semplice ricerche sono state già confermate, proprio come le DirectX 12 (ne stanno iniziando a parlare un po’ tutti, un nostro piccolo successo, un lancio avvenuto troppo presto di Xbox One, il segreto della ESRAM (che da sempre vi abbiamo detto essere da 47 MB, di cui 32 disponibili) e della possibilità di effettuare due parallel rendering asincroni.
Chiudiamo con una sottigliezza che sarà sfuggita ai più: il caro Savage alla domanda se Xbox One includesse, da qualche parte, un chip ARM integrato ha sorriso, dicendo che “quando un chip ARM diventa importante allora Microsoft lo implementa…” (minuto 03:57).