Una console per durare dieci anni deve integrare al suo interno, oltre una discreta potenza di base, anche di una serie di elementi che la rendano a prova di futuro, ossia soluzioni all’avanguardia che permettano agli sviluppatori di utilizzarne tutte le risorse disponibili.
Come abbiamo più volte sottolineato Xbox One è una console dall’hardware molto promettente, bilanciato e con pochi colli di bottiglia anche se dotata di una RAW force non particolarmente discreta. Se prendiamo i freddi numeri l’ultima arrivata di Microsoft non regge il paragone con PlayStation 4 e, soprattutto, con le ultime schede grafiche per PC. Cosa ha combinato dunque Microsoft?
Semplicemente si è seduta a tavolino con AMD e con i principali produttori di hardware per ridisegnare quelle che saranno le tecnologie del prossimo futuro. Ritroviamo così in Xbox One una console progettata per sfruttare il cloud computing di Azure grazie al suo particolare design che vede un chip on network sul northbridge del chipset in grado di comunicare direttamente con la CPU, i Data Move Engines, che saranno assai utili alla causa e, con l’arrivo delle DirectX 12, di sfruttare le famigerate Tiled Resource, in combinazione con la velocissima ESRAM e i 15 SPP che scaricheranno lavoro dalla GPU, soprattutto le Swizzle Copy e i codificatori/decodificatori JPEG (che sarà presente nelle nuove schede di AMD un acceleratore della GPU in grado di ridurre compiti al processore grafico).
Elementi questi che, se guardate bene, saranno implementati nelle future schede grafiche per PC. Inoltre la GPU di Xbox One è l’unica, al momento, a possedere ben due Compute Processing per il lavoro di dual rendering (ossia due unità di calcolo che consentono di elaborare due “shaders” in maniera asincrona e in parallelo con le pipeline grafiche). Un hardware molto interessante che, come detto più volte, fa dell’ottimizzazione il suo cavallo di battaglia, a patto di saper utilizzare però, e bene, ogni singolo componente presente. Di particolare efficacia saranno anche le Tiled Resource, ossia le texture ad altissima definizione (6GB) che potranno essere contenute in appena 32 MB della ESRAM della console. Ma cosa sono esattamente queste Tiled Resource? Innanzi tutto dobbiamo fare un distinguo, ossia che le TR non sono come le Megatexture e le PRT dato che l’intero processo computazionale è gestito via hardware e non via software. Inoltre la qualità delle TR è ben più elevata rispetto alle PRT.
Le Tiled Resource sono una tecnologia incorporata nelle Direct3D e che servono a rendere più flessibile l’uso della memoria nelle situazioni complesse (in gergo “large amount of data”). Queste sono già integrate nelle DX 11.2 (che possiede Xbox One) ma non sono state mai sfruttate a dovere a causa anche della mancanza di multi threading assente in questa versione delle API ma che sarà presente nelle prossime DX 12.
Prima dell’introduzione di questa interessante tecnologia era necessario che quasi tutte le textures che ricoprivano le varie superfici dovessero essere già caricate nella memoria DRAM. Le Tiled Resources invece sono risorse di memoria le cui pagine (dette tiles) costituenti possono essere opzionalmente popolate con relativa memoria fisica. Microsoft, con le Tiled Resource, ha optato per realizzare un’interfaccia di tipo hardware per l’utilizzo delle risorse in questo modo concepite che non ha precedenti in questa forma particolare, tanto che tutte le precedenti implementazioni venivano effettuate via software con svantaggi che vi mostreremo più avanti.
Dovete sapere che generalmente l’implementazione delle TR viene gestita tramite l’algoritmo View Dependent Streaming Texture Detail (VDSTD), quindi ponendo che una determinata superficie sia strutturata con tot serie di textures e con un determinato peso con mipmap, solamente la frazione di textures che sono nella prossimitá immediata della “current view” verranno compilate, gli elementi ai bordi del frame invece verranno smussati cercando in questo modo di non rivelare il trucco; naturalmente le textures che ricopriranno queste superfici saranno a bassissimo livello di dettaglio, ma non direttamente percepibile dall’occhio umano.
Un grande vantaggio di tale tecnica è che le textures vengono “prefiltrate”, come spiegato poco sopra, mentre con le implementazioni software precedenti questo lavoro spettava allo sviluppatore.
Ora DirectX 11.2 ed OpenGL 4.4 offrono il supporto alle Tiled Resource, tecnologia che esiste per affrontare la problematica dell’utilizzo di una MegaTexture da applicare nello sviluppo di un engine grafico. Una delle prime software house ad utilizzare le MegaTexture fu id Software, grazie al lavoro del guru John Carmack, che aveva già precorso i tempi sviluppando una tecnologia software incorporata nel motore ID Tech 5 (utilizzato nello sparatutto RAGE). La base dell’algoritmo è sempre lo stesso, ossia il View Dependent Streaming Texture Detail, ma il modo con il quale Id Software ha ottenuto questo risultato è unicamente via software.
I vantaggi dell’implementazione via hardware sono i seguenti:
Nella situazione precedente all’impiego delle Megatexture, i modi per ottenere un alto livello di dettaglio erano o lo streaming continuo da asset fisici prefissati oppure attraverso la generazione procedurale delle stesse texture che però implica la problematica della lettura necessaria da struttura (texture di controllo) ma ha come vantaggio che non richiede molta banda passante dalla memoria per lo streaming.
Dopo questa lunga introduzione alla Tiled Resource e la loro differenziazione dalle MegaTexture (o PRT che a dir si voglia), possiamo analizzare meglio Xbox One e PS4 per capire come sono strutturati i determinati chipset per sfruttare queste tecnologie.
Xbox One nasce con in mente assolutamente questa tecnologia, lo dimostra la presenza di componentistica dedicata altrimenti inutile o controproducente come appunto la ESRAM, i Data Move Engines e le memorie di sistema tipo DDR3 (ottime per la bassa latenza nella gestione di pacchetti di piccole dimensioni e per non avere colli di bottiglia verso la CPU, un po’ meno performanti invece nella gestione di grossi chunk).
Infatti, viste le problematiche sopracitate, possiamo affermare con certa convinzione che dovendo effettuate continuamente operazioni di tile-untile per aggiornare la “current view” in base al VDSDT, serviva una bassa latenza nell’accesso alla memoria dato il grande numero di accessi simultanei ed un buffer (nel caso di Xbox One costituito dalla ESRAM) superveloce che potesse salvare i dati relativi al preciso frame per la “current view” fungendo quindi da tampone e/o sincronizzatore dell’intero sistema di interfaccia alla memoria.
I quattro Data Move Engines posseggono via hardware proprio le funzioni fisse di tile ed untile, scaricando quindi il resto delle componenti di questo compito ed evitando soprattutto allo sviluppatore di dovere scrivere un algoritmo del genere.
Da questo ne deriva la scelta delle memorie di tipo DDR3 che hanno minore latenza delle GGDR5 e quindi sono più adatte agli accessi multipli. Quindi, sembrerebbe che Xbox One sia l’incarnazione hardware della nuova versione di Direct3D (ossia le prossime Direct3D 12, viste da tutti come un salto generazionale delle API di ben quattro volte rispetto alle precedenti DX 9, 10 e 11).
La console, lo ribadiamo per l’ennesima volta, è completamente pensata con in mente le Tiled Resource ed è customizzata per trarre il massimo beneficio da esse, grazie ai tantissimi acceleratori presenti nell’hardware.
La PlayStation 4 nasce invece con in mente il requisito opposto, ovvero una memoria velocissima completamente unificata di tipo GDDR5 senza nessuna ED/ESRAM (un framebuffer collegato direttamente alla GPU che consentirebbe di stoccare anche interamente gli asset di un livello o parte di esso in memoria e di consumarli senza particolari accortezze) data la velocità di questo tipo di memorie. Da notare poi come Xbox One abbia 4 controller separati per la memoria di sistema, disposta da 4 blocchi da 2 GB (per un totale di 8 GB di DDR3) mentre PS4 utilizza un unico canale per la memoria, composta da un blocco da 8 GB.
PS4 non è pensata per effettuare accessi multipli e repentini alla sua memoria RAM, vista l’alta latenza delle GDDR perché questo causerebbe diversi errori e perdite di dati (bubble). Se Sony avesse voluto una macchina del genere avrebbe dovuto quantomeno montare una EDRAM, cosa che inizialmente era stata anche presa in esame, come dichiarato da Mark Cerny.
La domanda vien da sé: PS4 può gestire le Tiled Resource?
La risposta è sì, non scordiamoci infatti della tecnologia Partial Resident Textures, giá da tempo integrata nelle GPU di AMD, grazie anche alla compatibilità dello standard OpenGL con questa tecnologia, quindi una gestione via software è possibile.
Il problema è però un altro, ovvero che la macchina non integra acceleratori hardware per questa tecnologia, o quantomeno solo in parte (appunto, PRT), con tutto il ricasco in caso di utilizzo su compiti computazionali aggiuntivi che farebbe perdere tempo e potenza.
In altre parole con un utilizzo massiccio delle Tiled Resource su PS4 lo sviluppatore dovrebbe gestire molti più processi, processi che su Xbox One sono invece implementati già nel sistema grazie all’hardware dedicato. É vero che OpenGL gestisce queste risorse ma non lo effettua nello stesso modo nel quale viene fatto con Xbox One, proprio perché le GL non sono disegnate per utilizzare ESRAM o Data Move Engines; queste sono prerogative esclusive di Xbox One che Microsoft ha fortemente voluto al suo interno dedicandoci svariati studi e ricerca. Diciamo che Xbox One rappresenta ad oggi forse la miglior implementazione hardware di questa interessante tecnologia.
Ancora una volta possiamo ribadire il concetto che da un punto di vista hardware in termini di RAW Power la PS4 è senz’altro su un gradino superiore, ha una framebuffer più diretto e molto più veloce, di contro paga una certa latenza per accedervi e non dispone di particolari accuratezze hardware per ovviare a questa carenza. Inoltre l’utilizzo massivo delle Tiled Resource su Xbox One consentirebbe di liberare ulteriormente compiti computazionali che potrebbero essere dedicati ad altri fattori.
Ovviamente solo il tempo ci dirà chi ci ha visto più lungo e quali tecnologie saranno più sfruttate in avanti.