[mks_dropcap size="90" bg_color="#ffffff" txt_color="#e64946"]P[/mks_dropcap]rendete una strada a senso unico, con un semaforo, ove solo una macchina per volta vi può transitare, con quella seguente che deve attendere prima il passaggio della vettura in testa prima che la successiva possa partire. La macchina passa e gira, scatta il semaforo verde e la seconda vettura può passare e così via.

La strada è troppa leggera per sopportare il peso di più due vetture per volta, da qui l’esigenza di inserire un semaforo. Questo, in ambito informatico, si può definire come collo di bottiglia (bottleneck). Ora pensate ad una strada sempre a senso unico, ma dotata di due corsie ove possono transitare due macchine per volta poiché l’asfalto più resistente.

In informatica questo processo viene definito Dual Lane (o dual pipeline), ed è la capacità di eseguire due operazioni in simultanea in un unico task, senza che il primo processa termini l’operazione per far partire la successiva. Ciò è reso possibile grazie alla presenza di due moduli (GFx core) che in un unico passaggio riescono ad eseguire due operazioni per volta.

CAPITOLO 8: La GPU di Xbox One

Xbox One possiede proprio due GFx Core (Graphic Command Processor) e due CP Core (Compute Command Proccessor) adiacenti alla GPU, e questo permette il famigerato Dual Lane, cosa che invece la rivale PS4 non puà effettuare, vista la presenza di un unico canale CCP.

CP Singolo PS4

1

CP e GFx doppi in Xbox One (guardate in alto a sinistra della slide)

2

Qualcuno ha iniziato, finalmente, a notare la presenza dei doppi core della GPU di Xbox One e ci si sta interrogando sulle funzioni che possa avere questa doppia pipeline grafica: verrà sfruttata per il rendering? Verrà sfruttata per altri task? Ci si interroga quindi quale sia il funzionamento corretto della GPU di Xbox One, quali ruoli può gestire al meglio, se può lavorare in parallelo con due task simultanei, sincroni o asincroni e via discorrendo.

Ovviamente Microsoft ha solo accennato alla cosa senza entrare troppo nel dettaglio, ma quello che non viene nascosto è proprio la presenza di due GFx e due CP all’interno della GPU, come sottolineato dagli architetti di Xbox One nella famosa intervista al Digital Foundry:

“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?”

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]Xbox One supporta due pipeline di rendering simultaneo[/mks_pullquote]

“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”.

Ecco qui il Dual Lane, presente in Xbox One, questo è certo, ma ancora non sfruttato a dovere a causa di problemi realativi all’overhead della CPU castrata nel multithreading –e quindi nella capacità di comunicare anche con la GPU- per via delle DirectX 11 che non permettono, seppur ottimizzate per la One, di lavorare molto sul metallo. Siamo sicuri che con l’avvento delle DX12, Xbox One permetterà un flusso continuo di dati senza problemi, ma per questo bisognerà attendere un anno abbondante.

Come potete vedere nessuna “secret sauce”, nessun miracolo, ma più semplicemente il vero sfruttamento dell’hardware, capace e potente, di One. Il problema è che al momento la console viene sfruttata ancora poco (ESRAM in primis, anche se i risultati si stanno vedendo con le ultime produzioni) e i tool ancora incompleti (sapete bene che i più recenti sono di giugno ma sono tutto fuorché definitivi…).

A livello teorico quindi Xbox One potrebbe raggiungere i 2,6 TFLOPS grazie al doppio task di rendering, sommando non solo il dual lane ma anche tutti i processori di “scarico” integrati nella GPU come i Data Move Engine, DSP Tensilica, audio chip SHAPE e per gli altri micro controller integrati (molto dei quali programmabili, altri dal funzionamento fisso come le swizzle copy, code/decode ecc.).

Sotto una slide che fa ben capire come la GPU della One possa essere sgravata da diversi compiti GPGPU grazie proprio alla presenza di coprocessori di bilanciamento (cosa che PS4 non possiede, se non semplici DSP per l’audio):

3

Da non sottovalutare poi la coerenza su tutti i chip, come dimostrato dagli slide, con la capacità della console di poter “interagire” su ogni singolo elemento presente nel SoC, dal pool della memoria alla ESRAM, ai DME al NoC, con una banda passante di 30 GB/sec (contro i 20 GB/sec di PS4):

“Pensiamo di avere realizzato una console molto equilibrata, capace di ottime prestazioni, in particolare in grado di gestire cose diverse dal mettere in fila tante ALU (unità aritmetiche e logiche). Ci sono anche un certo numero d’aspetti di progettazione e requisiti di sistema di cui abbiamo tenuto conto come latenza, frame-rate e che i giochi non siano interrotti dal lavoro del sistema operativo e altri elementi che hanno avuto una certa priorità nella stesura delle linee guida del nostro design”.

“Ci serviva un alto livello di coerenza di memoria tra la GPU e la CPU e questo ci ha obbligato a modificare la concezione di molti dispositivi che si trovano intorno al processore centrale e a come la CPU gestiva la virtualizzazione. Sul SoC ci sono molti motori paralleli: alcuni sono core CPU e core DSP core: al calcolo di quindici siamo arrivati in questo modo: otto dentro la componente audio, quattro move engine, due per la codifica/decodifica video e uno deputato ad effettuare la composizione/dimensionamento video”.

Sicuramente un “disegno” hardware tanto complesso quanto efficiente, il segreto è solo utilizzarlo a dovere, appena saranno disponibili, ovviamente, tool in grado di mostrare agli sviluppatori tutti i “lati” della console. One è l’unico hardware ad implementare un unico processore grafico che possiede due Compute Command Proccessor e due Graphic Command Processor, con ESRAM (scratchpad) integrata nella GPU.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]Spesso si sente affermare dalle persone che PS4 è più potente semplicemente perché possiede, ad esempio, un numero maggiore di ROPs[/mks_pullquote]

Spesso si sente affermare dalle persone che PS4 è più potente semplicemente perché possiede, ad esempio, un numero maggiore di ROPs, ma tale mancanza su Xbox One è in parte mitigata proprio dal doppio pipe di rendering ed altre soluzioni studiate ad-hoc. Inoltre questo elemento coinciderebbe con le vecchie dichiarazioni di Albert Penello, secondo cui un maggior numero di elementi non sempre corrisponde ad una maggiore potenza (riferendosi a PS4...):

“In scenari dove vi sono meno TFLOPS non vuol dire essere meno potenti, spesso sono numeri che non coincidono con la realtà”. Stesso discorso per il numero maggiore di ACE su PS4 rispetto a One, ma anche in questo caso c’è da fare un discorso più tecnico, che possiamo affrontare seguendo sempre le dichiarazioni degli architetti di One:

“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.

Sappiamo da tempo che l’intero hardware di Xbox One è un hardware bilanciato che tende a sfruttare e massimizzare l’intero ciclo di risorse senza dead-cycle, bubble o errori di sistema (che obbligano il chipset a rielaborare i tasks).

Di parallelismo se ne è discusso anche nelle recenti GDC e BUILD 2014, questo slide spiega, brevemente, l’importanza dell’avvento delle DirectX 12 anche per One.

4

CAPITOLO 9: Composizione delle CU e ALU di One

Ora prendiamo in riferimento i dati sulla GPU di Xbox One (core GFx) e mettiamoli a confronto con quelli della GPU di PS4, in particolare sulla distribuzione della L1 cache, CU e ALU.

ANALISI XBOX ONE:

- GCN 1.0 e GCN 1.1 usano un array di CU, che equivalgono a gruppi di CU per L1 condivisa (CU=Comput Unit, GCN=Graphic Core Next di AMD).

- GCN 2.0 utilizza le CU come gruppi di SIMD per L1 non condivisa.

- Gli Shader Core (SC) di Xbox One sono basati su tecnologia GCN 2.0, dove gli SC utilizzano un gruppo di SIMD per L1, come evidenziato in figura:

5

 

 

6

La base di partenza è dunque un GCN 2.0 per Xbox One, dove i SIMD sono racchiusi all’interno di un singolo core CU/SC, e il CU nel GCN 2.0 è praticamente composto da un array indipendente di CU. I SIMD possono gestire tot operazioni, e per ops (operation per second) possono avere un “n” numero di ALU.

Partendo dal concetto base di GCN 2.0, Microsoft ha provveduto a realizzare e customizzare i singoli blocchi, ma i SIMD totali per CU, gli ops totali per SIMD, il numero totale di ops per ALU non sono “fissi” sulla parte GFx di Xbox One, possono eseguire più thread per ciclo in modo dinamico e indipendente (i CU non sono disposti a blocchi o gruppi, bensì sono separati, individuali).

ANALIZZIAMO PS4:

La GPU di PS4 è costituita da due blocchi di Shader composti da 3 CU array, 9 per parte che compongono 18 CU totali (bilanciati in 14 più 4 per GPGPU). Ogni array di 3 CU ha in condivisione L1 e K$.

7

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.

1 CU array = 16KB L1 + 192 KB LDS/LSM (192 ALU per 3 CU).

PS4 è basata su chipset Southern Island, con il medesimo blocco di CU, rappresentando una GPU da 256bit e abbracciando la tecnologia GCN 1.1.

8

CONSIDERAZIONI:

Riassumendo Xbox One, ha il modulo Gfx costituito da 12 Tiles Shader core, con:

1 Shader core = 16KB L1 + 64KB LSM/LDS (128 ALU per CU).

L’intera GPU è più di 256bit (notare i 5 canali a 256 bit ciuascuno…), e stiamo parlando del solo blocco GFx senza contare i vari SPP e SHAPE. Da notare poi come la memoria di tipo L2 e il controller di memoria sono collegati ad “altri client”, ossia 2 Command CP. Xbox One utilizza il GCN 2.0 più numerose ottimizzazioni e aggiunte di rilievo, con lo Shader Core che ha dedicati GFX e compute processing ed è per questo motivo che ogni SC ha 64 KB, non condivisa, mentre sui chipset Sea Island i 32KB sono impiegati per il controllo di 64 ALU per CU (come su PS4).

PS4 utilizza chipset Sea island con diverse ottimizzazioni, ma basate su GCN 1/1.1.

- PS4=Sea Island
- Sea island 32KB = 64 ALU per CU
- Xbox One L1 16kB, ha 64KB LDS per singolo CU, 128 ALU per CU

Se preferite, se vogliamo immaginare una struttura GCN 1.0 su Xbox One, possiamo anche dire che per SC possono essere eseguiti 64 ops con 2 ALU per ops, come se fosse un GCN 1.0 ma costituito da 24 CU.

CAPITOLO 10: Le dichiarazioni degli sviluppatori su Xbox One

Come vi abbiamo più volte accennato, all’inizio il web è stato invaso letteralmente da articoli fittizi basati su considerazioni di finti insider o sviluppatori “anonimi”, tutti a dare addosso alla console di Microsoft vista come un hardware astruso, obsoleto, difficile da programmare e con la ESRAM vista più come un problema che come una risorse aggiuntiva. Tutte cose smentite nel tempo, dai dev con nome e cognome, che si sono espressi realmente sulla console.

Eccone alcune:

- Gli autori del recente Trials Fusion, i ragazzi di RedLynx, hanno rivelato al Digital Foundry che: “Sì, Xbox One beneficerà massicciamente delle nuove API, API progettate per il futuro e che rappresentano un grande balzo in avanti per gli sviluppatori, anche rispetto alle OpenGL 4.4, e che con le DX12 i porting da PC a Xbox One e viceversa non saranno più un grosso problema”. Affermazioni che hanno fatto subito il giro del web, con anche l’ennesima dimostrazione di come la ESRAM debba essere utilizzata e che in nessun modo rappresenti un punto debole della console, anzi. RedLynx ha anche ammesso che la risoluzione minore del gioco su Xbox One è causato tendenzialmente da un poco sfruttamento e ottimizzazione dell’hardware della console e perché, soprattutto, Trial Fusion è stato pensato per essere un gioco cross-gen, sviluppato principalmente con Xbox 360 in mente.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]La dichiarazione di Insomniac ci ha lasciati spiazzati[/mks_pullquote]

- La dichiarazione di Insomniac che ci ha lasciati spiazzati: “Abbiamo deciso di lavorare con Microsoft per questa IP perché per noi ha rappresentato il partner perfetto. Senza di loro Sunset Overdrive non avrebbe mai visto la luce. Avevamo bisogno di una macchina potente per realizzare questa nuova visione, e Xbox One è effettivamente una console potente. Vorremmo dirvi di più di questa console, ci sono ancora degli aspetti da approfondire in questo senso e ne beneficeranno tutti gli sviluppatori, ma non possiamo riportare ancora nulla in merito”.

- Stesso discorso per Dan Hall di Bohemia Interactive, creatore di DayZ che, in una intervista, aveva dichiarato di voler portare il suo gioco anche su next gen console e che, in seguito ad un colloquio con Microsoft, aveva approfondito diversi aspetti legati all’hardware di Xbox One che però non poteva ancora rivelare: “Ci sono delle cose molto eccitanti di Xbox One, assai interessanti, ma non posso fornire ulteriori dettagli”.

- Le vecchie dichiarazioni di Albert Penello, secondo cui un maggior numero di elementi non sempre corrisponde ad una maggiore potenza (riferendosi a PS4…): “In scenari dove vi sono meno TFLOPS non vuol dire essere meno potenti, spesso sono numeri che non coincidono con la realtà”.

- Arrivano conferme che la ESRAM di Xbox One non è più un collo di bottiglia, grazie ai tweet di Lionhead Studios, Rebellion, Crytek e tantissimi altri ancora, conferme che l’hardware della console di Microsoft è tutto fuorché inferiore a PS4 con le dichiarazioni del team dietro al recente Wolfenstein: The New Order.

- Con l’arrivo delle nuove API ci sarà da preoccuparsi in casa Sony dato che, come sostenuto da tanti esperti del settore – e parliamo di sviluppatori di Valve -, le DirectX 12 sono anni avanti rispetto alle obsolete OpenGL.

- Brad Wardell, a capo di Stardock, importante software house: “Ho avuto modo di vedere le DirectX 12 all’opera su Xbox One, posso confermare che raddoppieranno le capacità della console, è una cosa incredibile. Posso dire che effettivamente la GPU di Xbox One andrà al doppio più velocemente. Non dico a livello hardware ma proprio a livello software”. Una dichiarazione folle? Per alcuni versi sì, forse troppo esagerato, che non nasconde però il boost che Xbox One otterrà dalle DirectX 12.

- la ESRAM non è un “peso” per Xbox One e per gli sviluppatori che da poco tempo possono usufruire di migliori SDK: ed ecco che portare a 1080p e 30fps un gioco come l’atteso (multiformato…) Murdered: Souls Suspect non è più un problema.

[mks_pullquote align="right" width="300" size="24" bg_color="#ffffff" txt_color="#e64946"]“I 1080p non saranno più un problema da gestire su Xbox One"[/mks_pullquote]

- Le dichiarazioni di Boyd Multerer, uno degli “architetti” di Xbox One spiega come raggiungere la massima risoluzione su One: “I 1080p non saranno più un problema da gestire su Xbox One, gli sviluppatori devono assimilare ancora bene il nuovo hardware e le sue potenzialità. Una volta capiti i segreti del nostro sistema “baked”, la ESRAM e alcuni aspetti complessi della nostra GPU, gli engine come Frostbyte e affini offriranno le loro migliori performances”.

- Phil Spencer, in alcune sue recenti dichiarazioni su Twitter, ha lasciato intendere che la tecnologia Ray Tracing in tempo reale è in fase di test su Xbox One. La tecnica utilizzata per ricreare grafica fotorealistica sarebbe quindi pronta a debuttare sulla console di Microsoft.

- Con i nuovi SDK e stereo-driver gli sviluppatori potranno portare i giochi alla risoluzione nativa a 1080p senza troppi problemi e compromessi, come confermato anche dal producer di Sniper Elite 3. Stesso discorso per i 1080p nativi di Destiny su One.

- The Witcher 3 su One a 900p, un risultato semplice da raggiungere, ma si punta ai 1080p sia su PS4 che su Xbox One: “Stiamo ancora ottimizzando il motore grafico su Xbox One e PS4, quindi crediamo che possiamo raggiungere una qualità grafica migliore rispetto a quanto visto. Essendo questo, uno sviluppo multipiattaforma è necessario anche ottimizzare la versione PC del gioco”.

In merito alla versione Xbox One del gioco John Mamais aggiunge: “E’ stato molto facile raggiungere i 900p su Xbox One; ma il nostro obiettivo è quello di raggiungere i 1080p nella versione finale di The Witcher 3: Wild Hunt. Attualmente per noi è molto semplice sviluppare su Xbox One, in quanto essa, usa le DirectX 11 così come quelle per PC, quindi l’ambiente di sviluppo è molto vicino alle nostre caratteristiche su Xbox One, in quanto da sempre abbiamo sviluppato su PC i nostri giochi”.

In merito alla versione PS4 del gioco aggiunge: “Anche su PS4 il nostro obiettivo sarà quello di raggiungere i 1080p, ed è molto probabile che il lavoro sarà un po’ più semplice rispetto ad Xbox One”.

- Per Hideo Kojima Xbox One è una console molto potente.

L'articolo è stato aggiornato alle 18.54 del 06/07/2014 con le nuove slide fornite da X-Rays.