Girando per la rete, consultandomi con diverse conoscenze che ho in Microsoft, mi rendo conto di come Xbox One sia una macchina misteriosa, con le specifiche tecniche non ancora del tutto rivelate. Mentre Sony ha rivelato tutti i dettagli su CPU, GPU, funzionamento della RAM, l’audio e via discorrendo, della nuova console della casa di Redmond vige ancora un riserbo piuttosto strano. Anche consultando il sito ufficiale è palese che l’architettura di Xbox One sia stata solo velatamente svelata. Sappiamo quindi che il chipset è costituito da un SoC contenente una CPU da 8 core Jaguar e una GPU targata AMD e profondamente customizzato, con la GPU che ha accesso diretto alla ESRAM che sappiamo essere di 47 MB totali, 8 GB di RAM tipo DDR3 e una serie di SPP che servono per scaricare compiti computazionali dai due processori più un pitente chip audio SHAPE, sempre realizzato internamente da Microsoft.
Se andiamo più in profondità e prendendo in esame gli slide mostrati da Microsoft all’evento HotChips 25, curiosa l’assenza di Sony a riguardo, otteniamo altre e interessanti informazioni che però mostrano, ancora una volta, uno sguardo superficiale all’hardware di Xbox One.
Due sono le cose: o Microsoft ha paura di rendere pubblici dettagli come tipologia di CU impiegate e il funzionamento dell’intero chipset, inferiore a quello della rivale PS4, oppure sono state elaborate delle innovazioni all’avanguardia che saranno implementate in altri contesti (schede grafiche per PC, tablet ecc.) solo successivamente, grazie a brevetti in esclusiva come già accade ad esempio con Android e lato data center dove Microsoft ha diverse licenze date in concessione e da cui ricava fior di dollari ogni anno.
Se ricordate bene, con Xbox 360 tutti dettagli della console uscirono solo diversi anno dopo, ma Microsoft non si tirò mai indietro annunciando come la vecchia console potesse contare su alcuni sistemi innovativi, come un pool di memoria unificato coadiuvato da una EDRAM interna da 10 MB.
Insomma, questa volta Microsoft sembra esserci andata più cauta, rilasciando di tanto in tanto nuove informazioni della nuova Xbox One. Ci fu il caso, ad esempio, della ESRAM vista da molti “addetti ai lavori, ingegneri, esperti hardware” come memoria di solo accesso o in lettura o in scrittura, ma mai con i due processi in simultanea. Lo sostenevano su NeoGaf, lo sostenevano su B3D anche quando Albert Penello smentì la cosa insistendo sul fatto che la ESRAM potesse effettivamente leggere e scrivere nello stesso istante. Passò per incompetente, bugiardo. Nel tripudio del sarcasmo del web. Poi arrivò l’intervista agli architetti di Xbox One sul Digital Foundry e la cosa venne confermata in toto, con buona pace degli “espertoni” che davano la cosa come impossibile.
Sappiamo quindi che la ESRAM è in grado di leggere e scrivere contemporaneamente, come lavora e come è posizionata all’interno del SoC. Successivamente Microsoft annuncia le DirectX 12 e i soliti espertissimi davano per scontato che le future API non potessero girare su Xbox One, dato che erano state già annunciate per il sistema domestico le DX 11.X. Ancora una volta tutti azzittiti quando Microsoft annunciò qualche tempo fa che anche Xbox One supporterà nativamente le nuove API, cosa che fece da subito pensare come la stesa console sia stata pensata per un rilascio più avanti nel tempo ma con già le DX12 in mente. Non è un caso, infatti, che Xbox One sia un sistema virtualizzato, con un hypervisor che gestisce un SO (core di Windows 8) per i giochi e un SO per le app:
“Il vantaggio di avere una virtualizzazione efficace è che possiamo fare cose come l’aggiornamento del sistema operativo evitando problemi di retrocompatibilità tra giochi vecchi e giochi più recenti. Allo stesso modo, la possibilità di avere un OS flessibile permette tutta una serie d’innovazioni anche sul fronte del gioco stesso: per esempio parlando di SDK possiamo completamente riscrivere il gestore della memoria del sistema operativo per CPU e GPU, un’operazione praticamente impossibile senza virtualizzazione”, come riferito da Andrew Goossen.
Quando tutti (o meglio, qualche sviluppatore indipendente e non identificato…) pensavano poi che la ESRAM rappresentasse un collo di bottiglia per la console, ecco che nuovamente Microsoft, in occasione della recente BUILD 2014, ha mostrato come bisogna utilizzare la ESRAM (collegata alla GPU con accesso diretto e non alla CPU, come precedentemente pensato, errando, da molti) per ottenere i 1080p e 60 fps. Ma di esempi ne possiamo fare ancora tantissimi, come il bistrattato Cloud Computing, anch’esso mostrato in occasione della BUILD 2014 e che ha lasciato di stucco anche i più scettici, o come le DX 12 aumenteranno considerevolmente le potenzialità di Xbox One (fare riferimento al Rumor Control 7 di questa settimana per i dettagli) anche del 50% (non sarà proprio così ma l’incremento sarà considerevole).
Insomma, ogni volta che c’è un qualcosa che Xbox One non sarebbe in grado di fare, ecco puntualmente la smentita. Questo atteggiamento di Microsoft inizia a preoccupare la concorrenza e, soprattutto, i fanboy più sfegatati. Un piccolo passo indietro: anche Xbox 360 si riteneva non potesse reggere i 1080p nativi, salvo poi un aggiornamento di sistema introdusse anche questo output video.
In altre parole Microsoft sta giocando di rimessa, si chiude in difesa per poi ripartire in contropiede e bruciare tutti. E quando parte fa male. Tornando al discorso del SoC, Sony ha mostrato per intero le caratteristiche della console:
Possiamo notare come le 14 CU (compute units, composte usualmente da diverse SIMDs) di PS4 siano il numero preciso per il bilanciamento della macchina, con le rimanenti 4 utilizzate per altri compiti. Non tutte dedicate al rendering quindi. Al contrario le 12 CU (più due di ridondanza, disabilitate) di Xbox On sono dirette interamente al rendering coadiuvate da un modulo GFx e da svariati special purpose unit già trattati nei precedenti Inside Xbox One, come i data move engines, i DSP Tensilica, lo SHAPE e gli interessanti modulo di compressione/decompressione JPEG, le Swizzle copy, i decodificatori/encodificatori video. Come si può vedere sotto nell’immagine l’hardware di Xbox One è assolutamente innovativo, efficiente se sfruttato a dovere e con diverse soluzioni che possono avvantaggiare lo sviluppo dei giochi: l’importante è avere in mente come e quando sfruttare tutti i coprocessori presenti:
Il problema ora è quale tipo di configurazione è stata elaborata in Xbox One, ossia a quanti bit lavorano gli ALUs, come sono predisposti i 14 CU, che tipo di CU sono integrati e quanti TFLOPS effettivi possiede la macchina (1,3 TFLOPS la sola GPU per Xbox One contro gli 1,84 TFLOPS complessivi di PS4 che, ricordiamolo, non sono tutti diretti alla sola grafica, anzi…).
Prendiamo quindi un altro interessante slide ufficiale:
Possiamo vedere nel riquadro rosso (più tendente al rosa…) gli 1,31 TFLOPS di Xbox One, specificati però nel solo core GPGPU computation e grafica. Questo slide è molto importante perché rende bene l’idea di come questo valore sia da attribuire al solo lato grafico, con addirittura Xbox One in grado di gestire più poligoni “spogli” di PS4 (1.71G contro 1.60G al secondo). Non solo però: se spostiamo lo sguardo nella parte più a sinistra dello slide ecco spuntare il vero punto di forza di Xbox One: i Graphics Command Processor e i Compute Command Processor, due per tipo.
Altra differenza sostanziale con PS4, con la console di Sony ferma solamente ad un Command Processor, proprio come lo schema delle Radeon 7970, contro i due di Xbox One:
Xbox One è in grado di lavorare in dual lane asincronamente, ossia i Compute Units possono agire parallelamente con diversi shaders grazie proprio al parallelismo con la pipeline grafica (2 CP che costituiscono il doppio lane della GPU). Non solo, ma una struttura di questo tipo, effettivamente complessa, ci mostra 12 CU dedicati interamente alla grafica e, cosa più importante, i due CP possono lavorare indipendentemente, con un CP che non deve attendere la fine della chiamata dell’altro CP.
Praticamente è possibile eseguire due target rendering simultanei e diversi, con un CP in grado di gestire dati ancor prima che il secondo CP termini l’operazione precedente e così via. Il Parallelismo è un’altra feature interessante di Xbox One, ma non è una cosa nuova dato che il dual lane è stato già annunicato nell’intervista d Andrew Goossen:
“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”.
“Il numero di code di calcolo asincrone delle ACE non condizionano l’ammontare effettivo della banda o il numero di calcoli in virgola mobile FLOP o qualsiasi altra performance della GPU. Piuttosto, condiziona il numero di “contesti” simultanei che lo schedulatore hardware della GPU può usare in ogni momento. Si possono considerare come dei thread software gestiti dalla CPU: sono processi logici che condividono l’hardware con la GPU. Averne in gran numero non significa automaticamente migliorare la potenza del sistema, anzi, proprio come il numero di programmi attivi simultaneamente su una CPU, troppi task in simultanea possono peggiorare la performance complessiva. Noi crediamo che sedici code gestite da due ACE siano più che sufficienti allo scopo”.
Come dire che se un sistema non è bilanciato e ha colli di bottiglia, può avere tutte le CU, ALUs, ROPs che vuole ma queste non funzioneranno mai al massimo della loro possibilità, rappresentando anzi anche un eventuale problema sui tasks simultanei. E c’è da dire che se il dual lane di Xbox One è effettivamente in grado di lavorare in stadi indipendenti e paralleli, questo vuol dire che le operazione eseguite sul comparto grafico sono raddoppiate rispetto alla base di partenza. Proprio questo aspetto ci fa pensare che 1,31 TFLOPS di Xbox One siano da leggere come 1,3 TFLOPS in double precision (2,6 in SP) e che quindi vi sia molta più potenza sotto l’hardware di Xbox One o che comunque i dati dichiarati siano solamente da vedere sotto il profilo del GFx della macchina, e non dell’intero ecosistema (come lo è su PS4 invece…).
Riassumendo su Xbox One c’è del potenziale ancora nascosto, non completamente conosciuto, un sistema virtualizzato e configurabile in ogni suo aspetto, un intrigante hardware, performante se sfruttato a dovere e, con l’arrivo delle DX12, la macchina potrà lavorare finalmente sul parallelismo dei suoi processi sbloccando più risorse di sistema (CPU, i CP e i GC in dual lane con GPGPU e 41GTextl separati dai 1,3 TFLOPS della GPU, come se la macchina lavorasse con 24 CU e non 12, cosa che con le DX 11.X non è ancora possibile fare), le Tiled Resource e molto altro ancora.
Un po’ come avviene con il chipset Kaveri di AMD dove 8 CU hanno performance simile a 16 CU offrendo risoluzione nativa a 1080p e 30fps a settaggio medio di Battlefield 4 su PC con Windows. Vedere per credere:
Bisogna solo avere pazienza e attendere l’E3 2014 per vedere di cosa siano in grado di fare gli sviluppatori su Xbox One. Quantum Break vi farà ricredere su Xbox One, per non parlare di Halo 5. Ryse: Son of Rome e Forza Motorsport 5 sono solo l’inizio e sfruttano solo una parte del sistema.
Un hardware progettato per il futuro, pensato per durare almeno 10 anni, costato a Microsoft oltre 3 miliardi di dollari di investimenti.
Nel prossimo numero vi mostreremo alcune interessanti ricerche che testimoniano come Microsoft non sia solamente una software house.