È un periodo favorevole questo per gli utenti di Xbox One e la GDC 2014 ha offerto uno scorcio sulle reali potenzialità della console. Appurato il fatto che la GPU sia “future-proof”, cosa più volte sottolineata da Microsoft, grazie alla piena compatibilità con le DirectX 12 che, a quanto pare, introdurrà diverse feature ancora non svelate e che solo le prossime schede grafiche godranno, emergono ogni giorno aspetti interessanti legati all’hardware di Xbox One.
Ora che gli SDK sono più versatili e permettono agli sviluppatori di conoscere meglio il funzionamento di alcuni aspetti legati al chipset, sembra che il gap con PS4 si stia riducendo sempre di più. Stranamente è passata inosservata una dichiarazione importante di Lorne Lanning, creatore della serie Oddworld e CEO della software house Oddworld Inhabitants:
“Credo che inizialmente la differenza tra le due console si sia palesata pesantemente, con PS4 che ha avuto nella maggior parte dei casi giochi a risoluzione maggiore, su diversi titoli multipiattaforma”.
“Ma Microsoft sta lavorando molto bene sui tool di sviluppo e sta permettendo a tutti di conoscere più approfonditamente l’hardware di Xbox One. La differenza di potenza tra i due sistemi si sta pian piano assottigliando e tra non molto vedremo le due console avere pari performance”.
“Inoltre credo che con la seconda ondata di giochi vedremo le reali potenzialità delle macchine di Sony e di Microsoft e guardare un gioco basato sul baseball e una partita vera non ci farà quasi accorgere delle differenze”.
Un’altra dimostrazione di come i primi SDK di Xbox One siano stati rilasciati incompleti per un hardware ancora poco ottimizzato sotto il profilo software. Si aggiunge poi il panel di Crytek che, nel corso della GDC 2014, ha fatto luce sulle innovative tecniche utilizzate in Ryse: Son of Rome. Si scopre così che il bell’action game è stato pensato per girare su un hardware “meno potente al lancio rispetto agli attuali PC”:
Come dire che Xbox One ha un hardware depotenziato… al lancio! Insomma, mostrare qualcosa di rilevante anche senza avere tutto il potenziale sbloccato. E il risultato è comunque ottimo, considerando che, ad oggi, Ryse: Son of Rome è il titolo più impressionante per console mai realizzato e che fa leva su particolari rendering ancora non applicati in nessun altro gioco: il Physically Based Rendering, subsurface scattering e tantissime altre tecniche atte a valorizzare ogni singolo elemento del gioco.
Una curiosità: Crytek ha deciso di non utilizzare l’upscaler hardware di Xbox One per sfruttare un algoritmo software anche discretamente pesante in termini computazionali. Decisamente un titolo come Ryse: Son of Rome difficilmente potrebbe girare su una macchina di soli 1,31 TFLOPS. Chissà se Crytek, che ha sponsorizzato il suo nuovo CryEngine 4 proprio con Ryse, ha avuto accesso a qualche “segreto” dell’hardware di Xbox One.
E questo senza considerare che l’arrivo delle DirectX 12 dovrebbe sbloccare ulteriore potenziale (Tiled Resource in primis) della console, lato CPU e lato GPU (incremento performance già confermato da Microsoft con i test effettuati su scheda Titan di cui beneficerà anche la console).
Facciamo ora un ragionamento semplice: i TFLOPS di Xbox One sono intesi come single precision o double precision? Sappiamo già da tempo che la GPU di Xbox One è in grado di gestire due flussi di lavoro simultanei (dual lane) come evidenziato nel Digital Foundry di Eurogamer:
“Il nostro chip grafico è basato sulla famiglia di chip denominata Sea Island, ma in realtà abbiamo effettuato alcune modifiche in molti settori dell’architettura del core. La variante più evidente riguarda il numero di unità di calcolo inserite sul die ed è stato un aspetto su cui ci siamo concentrati sin dall’inizio. Come a dire, contiamo il numero di CU e i Gigaflop e dichiariamo il vincitore in base a questo? È più o meno la stessa situazione che si pone al momento di acquistare una scheda video. Si controllano effettivamente solo le specifiche o si guardano anche i benchmark?”
“Xbox One supporta due pipeline di rendering simultaneo: le due catene di rendering possono consentire il rendering dei contenuti del gioco ad alta priorità mentre contemporaneamente i task di sistema sono a bassa priorità. Lo schedulatore hardware della GPU è stato progettato per massimizzare la banda passante e riempire automaticamente i buchi nell’elaborazione ad alta priorità. Questo può consentire al sistema di rendering di fare uso delle ROP mentre il gioco effettua operazioni sincrone sulle unità di calcolo”.
Potrebbe essere questa la chiave di lettura esatta dei TFLOPS della console. Conti alla mano abbiamo una configurazione di questo tipo:
- Mono Driver con un thread della GPU a 1.3 TFLOPS senza acceleratori
- Stereo Driver doppio thread della GPU 1.3 + 1.3 = 2.6 TFLOPS double precision a 853 MHz senza acceleratori
La configurazione Stereo Driver (double precisione) sarebbe la configurazione ottimale con l’utilizzo della ESRAM, dei 15 SPU e dei data move engine. Xbox One utilizza 12 Compute Units (più due disabilitati per la ridondanza) ognuno dei quali integra 4 SMID. Gli SMID possono lavorare con la seguente configurazione (in bit):
- Passaggi a 4x / 32 4x / 64 x2 /1 x 128
I blocchi di 4 SMID possiedono 4 sub-unità logiche, Execution Unit (EXU).
Abbiamo quindi 16 EXU per singolo CU (1 CU = 16 Execution Unit) in modo tale che ogni Comput Unit (se programmabili) può effettuare 4 x operazioni a 32 bit, 12 x 4 = 48, 48 x 16 = 768 (il dato torna con le operazioni per ciclo che può gestire Xbox One), 768 x 4 32bit = 3072.
La miglior soluzione per Xbox One è la gestione a 64 bit per via della presenza della ESRAM (lettura e scrittura in simultanea) e dei data move engine. 1.31 TFLOPS di Xbox One potrebbero essere letti come double precision, che equivarrebbero a 2,6 TFLOPS in single precision di picco (sempre acceleratori esclusi).
Riassumendo per 1 CU riscontriamo i seguenti casi:
a. a 32bit abbiamo 64 operazioni ALU (16 x 4)
b. a 64bit abbiamo 32 operazioni ALU (16 x 2)
c. a 16bit abbiamo 128 operazioni ALU (16 x 8)
d. a 128bit abbiamo 16 operazioni ALU ( 16 x 1)
1 CU = nel conteggio in double precision (a 64 Bit) = alla configurazione b.
16 op / 16 execute unit = 1 CU (GCN 1.1 o superiore)
Per una lettura migliore di queste tabelle possiamo fare riferimento al doppio scenario (stiamo facendo supposizioni):
1 Scenario – La GPU di Xbox One effettua 768 ops/cycle in double precision (64bit) o 1536 ops/cycle in single precision (32bit), che è equiparabile a 24CUs in single precision (vecchia impostazione delle schede AMD)
2 Scenario – A livello teorico potremmo avere 48CUs in single precision che utilizzano 2 threads. 48CUs o 3072 ops/cycle in single precision con picco su carta.
Tutto dipende se il riferimento degli ingegneri di Microsoft al dual lane è valido, nel caso avremmo una GPU dual logic o con configurazione similare. Qualche dubbio ce lo fece venire anche Albert Penello nelle sue dichiarazioni su NeoGaf:
“18 CU’s vs. 12 CU’s =/= 50% more performance. Multi-core processors have inherent inefficiency with more CU’s, so it’s simply incorrect to say 50% more GPU. Adding to that, each of our CU’s is running 6% faster. It’s not simply a 6% clock speed increase overall. We have more memory bandwidth. 176gb/sec is peak on paper for GDDR5.
Our peak on paper is 272gb/sec. (68gb/sec DDR3 + 204gb/sec on ESRAM). ESRAM can do read/write cycles simultaneously so I see this number mis-quoted. We have at least 10% more CPU. Not only a faster processor, but a better audio chip also offloading CPU cycles. We understand GPGPU and its importance very well. Microsoft invented Direct Compute, and have been using GPGPU in a shipping product since 2010 – it’s called Kinect. Speaking of GPGPU – we have 3X the coherent bandwidth for GPGPU at 30gb/sec which significantly improves our ability for the CPU to efficiently read data generated by the GPU”.
Mai una ammissione che Xbox One fosse più “debole” di PS4 e che, anche se sulla carta inferiore, Xbox One nasconda in realtà qualche cosa di ancora sconosciuto.
Come mai poi anche Xbox One potrà beneficiare, oltre che delle DirectX 12, anche delle Mantle di AMD?