Traduci gli articoli

martedì 11 agosto 2015

In-Depht Xbox One: cos'è e come funziona il Cloud Computing applicato alla console, con uno sguardo al chipset



Circa un anno un anno fa, durante l'evento BUILD 2014 di Microsoft, venne mostrata una tech-demo riguardante il cloud computing, ossia la possibilità di scaricare lavoro da una macchina in locale ad una infrastruttura server per risparmiarne preziose risorse. La demo prevedeva infatti la gestione della fisica calcolata direttamente sui server Azure con il local client che invece aveva il compito unicamente di gestirne il rendering.

Venne mostrato in particolare come l'offload computazionale su Azure (ovvero lo scarico) della fisica che gestisce i crolli di edifici e l'impatto dei proiettili su diverse strutture architettoniche potesse impattare positivamente sul frame rate finale, con la macchina in locale che non doveva sobbarcarsi di tutta una serie di calcoli in quanto affidati e gestiti "esternamente". In parole povere, una macchina collegata alla rete e in comunicazione diretta con i data center di Microsoft, può scaricare lavoro computazionale ad una enorme infrastruttura online che si occupa di calcoli complessi, indispensabili per garantire una certo realismo della fisica applicata.

Da una parte, a sinistra, vediamo all'opera la fisica gestita interamente da una macchina non collehgata ad Azure, dall'altra, a destra, un client collegato ad Azure con la fisica gestita in tempo reale dai server, con latenza minima:


Questa impressionante demo si scoprì successivamente essere il "work in progress" di Crackdown 3, titolo recentemente mostrato alla Gamescom 2015 e che si poggia sull'inedito engine Cloudgine, motore grafico che muove la nuova esclusiva per Xbox One e che fa leva proprio sul cloud computing di Microsoft:




Il video di Crackdown 3 alla Gamescom di Colonia è stato molto importante per Xbox One e Microsoft che ha dato un assaggio delle infinite potenzialità di questa particolare tecnologia, soprattutto in ambito videoludico. La demo, messa anche a disposizione dei giornalisti, ha permesso di toccare con mano la modalità multiplayer online, dove quattro giocatori possono cooperare all'interno di un sandbox enorme con anche il più piccolo elemento gestito dal cloud: eplosioni e detriti, palazzi che collassano, pannelli che si staccano, i fori dei proiettili, la fisica che ne gestisce rotazione, velocità e movimento, gli impatti, ogni elemento soggetto a calcoli matematici è elaborato all'interno di Azure, con Xbox One che ne deve "tracciare" la rotta unicamente per il rendering (e dunque gli elementi grafici).

Questo ha permesso agli sviluppatori di donare estremo realismo alla "distruzione di palazzi ed elementi di contorno" senza gravare in nessun modo sull'elaborazione in locale della console che può così utilizzare le risorse liberate dal cloud computing per altri processi (rendering su tutti).


Il cloud computing, tuttavia, può anche essere adibito per la gestione dell'illuminazione globale, la gestione di grandi scenari non interattivi, l'intelligenza artificiale e molto altro ancora (due esempi ne abbiamo già e sono i Drivatar di Forza Motorsport 5 e Forza Horizon 2 e i bot/titan di Titanfall).

Già NVIDIA mostrò tempo fa una tech-demo sul cloud computing ove le routine di illuminazione venivano gestita via rete:


In molti stanno abbracciando la filosofia del cloud computing, basti vedere anche Square Enix con la Shinra Technologies (Project Flare in precedenza), ma non è facile mettere su una infrastruttura server per garantire sempre il corretto funzionamento di tale tecnologia, e sono davvero in pochi in grado di contare su data center grandi ed affidabili (Microsoft, Google, Amazon).

Secondo Reagent Games, sviluppatori di Crackdown 3, Xbox One collegata al cloud garantirebbe una potenza pari a ben 20 console (oltre i 20 TFlops): questa la mole di lavoro richiesta per la gestione di fisica e demolizioni.

Inoltre se per qualsiasi motivo si dovesse interrompere il coleggamento alla rete (problemi tecnici, ADSL che salta, un blackout improvviso dei data center) il gioco porterà automaticamente al single player, senza perdere i progressi acquisiti, anche se in questo caso sarà possibile giocare unicamente da soli e senza contare del supporto del cloud computing, ma senza che la sessione venga interrotta.

Infine, giusto per tacere le male lingue, il supporto completo al cloud richiederà connessioni tra i 2 e 4 Mbit, più che nella media anche per le connessioni nostrane.


Ma com'è possibile che Xbox One possa sfruttare così agevolmente questa intrigante caratteristica? Dobbiamo innanzitutto porci delle semplici domande, almeno per chi è interessato a tale tecnologia e vuole conoscere meglio la struttura hardware di Xbox One. Andiamo con ordine:

Cosa sono i Data Move Engine?

La prima presentazione di Xbox One mostrò due elementi che fecero storcere subito il naso verso i futuri acquirenti e i fan di Xbox: la console, per il corretto funzionamento, sarebbe dovuta essere collegata sempre a Internet, questo per il doppio discorso legato a DRM (i diritti sui media digitali) e cloud computing. Xbox One è stata infatti studiata appositamente anche per beneficiare di questa notevole e importante feature.

Il tutto poi saltò in seguito alle lamentele dei più, con Microsoft costretta a compiere un passo indietro e posticipando il discorso “cloud”. Ma ora scoprirete effettivamente cosa aveva in mente Microsoft e perché voleva a tuti i costi tenere la sua console sempre connessa a Internet.

Ritroviamo nel chipset della console diversi elementi che si interfacciano proprio in quest’ottica futura: abbiamo l’on-chip network collegato (NoC) al northbridge che può comunicare, grazie anche alla presenza dei 4 Data Move Engines, direttamente con la CPU e la GPU, senza dover passare per canali tradizionali (come avviene per i comuni PC, ossia via PCI Express o southbridge) riducendo al massimo problemi legati alla banda e alla latenza.

Una configurazione che rimanda a quelle classiche dei “super computer” utilizzati nei grossi data center e che devono smistare una grandissima mole di dati attraverso la rete.

Come già detto, un piccolo esempio/assaggio di cloud computing è dato già dai Drivatar di Forza Motorsport 5 o i bot di Titanfall… ma sono solo un assaggio quello che ci attenderà nel prossimo futuro, come in Halo 5 (AI ancora più evoluta, sempre gestita dal cloud, compresi i mezzi avversari o, come ben saprete, la distruzione completa e su vasca scala di Crackdown 3).


Studiando il chipset di Xbox One possiamo constatare come la console sia stata studiata per sfruttare il cloud computing, a differenza di PS4 che, sì, potrà sfruttare una simil caratteristica, ma non nativamente a causa della presenza di un solo DMA e non di special purpose processor (appunto, come sono i Data Move Engines) come ha la “rivale”.

I DME (Data Move Engines, di cui Xbox One ne dispone ben 4) hanno accesso diretto all'interfaccia di rete (NoC): questi sono in grado di comprimere e decomprimere flussi di dati mentre CPU e GPU sono in “deadlock” per altri compiti (volgarmente in fase di “stallo”).

Nello stesso istante i DME possono effettuare il cosiddetto Tiling/Detiling, tanto sulla memoria di sistema principale (gli 8 GB DDR3) quanto sulla ESRAM, sfruttando il bus a loro dedicato che è di circa 25,6 GB/s, non toccando quindi l’intera banda passante di CPU e GPU. SoC e Data Move Engine godono infatti di bus indipendenti e separati.


Un DME può comprimere e decomprimere nativamente anche immagini in jpeg a circa 200 GB/s, a cui si aggiunge anche la Swizzle Copy che Xbox One integra come offloading chip. In altre parole sia il processore principale che il processore grafico sono alleggeriti dal carico di spostare flussi di dati dalla memoria, cosa eseguita dai DME e che, nella situazione migliore possibile, consente a CPU e GPU di spostare memoria contemporaneamente alle DME incrementando l'effettiva bandwith a disposizione in quel preciso lasso temporale.

La PS4 è priva dei move engine e dunque della possibilità di prelevare i dati provenienti dalla rete (o meglio, dall'interfaccia di rete) e indirizzarli nella memoria di sistema (PS4 non dispone nemmeno di una EDRAM o di una ESRAM) lasciando a CPU e GPU il gravoso compito di gestire anche i flussi di dati della rete, saturando o comunque diminuendo la larghezza di banda a disposizione.

Sulla PS4 il Tiling (arrivare ad un grosso blocco di dati partendo da pacchetti più piccoli, come fosse un grosso puzzle) e il Detiling (il processo inverso, decomporre grossi blocchi di dati in parti più piccoli posizionandoli per esempio all’interno della ESRAM o della DDR) è gestito dal SoC (CPU e GPU) e da un comune DMA. Inoltre la presenza delle GDDR5, ottima per file di grandi dimensioni ma problematica con pacchetti piccoli, non agevola il lavoro di Tiling/Detiling a causa della forte latenza che ha verso la CPU.


Chi dice quindi che anche PS4 può sfruttare nativamente il cloud computing dice una falsità, dato che il chipset non è assolutamente disegnato per gestire compiti di questo tipo. Xbox One sì, invece.

Funzionamento del cloud e le risorse di rete

La domanda che tutti si pongono è se il cloud computing sia una cosa fattibile: su molti forum e siti “specializzati” si legge che la banda richiesta per il corretto funzionamento debba essere elevata e vi sarebbero problemi di latenza poiché, prendendo ad esempio uno sparatutto online, con a schermo decine di personaggi che si sparano a vicenda, richiederebbe una banda enorme e una latenza minima.

Innanzitutto è doveroso fare una precisazione, che purtroppo in molti si dimenticano di fare (disinformazione?): cloud gaming e cloud computing sono due cose diametralmente diverse. Il cloud gaming è usufruire di un gioco sfruttando lo streaming di rete, con il gioco che “gira” su server e con il client che manda unicamente input sul “movimento” (in un platform ad esempio direzione e salto, in uno shooter quando si spara o quando ci si gira ecc.).

Il cloud computing permette invece la comunicazione diretta tra client e server con molti compiti computazionali gestiti lato server (intelligenza artificiale, illuminazione indiretta, posizione personaggi, attività fuori dalla portata del giocatore in quell’istante), con i dati inviati in determinati intervalli o in determinati frangenti con il client che deve elaborare solo una porzione di codice lasciando sgravate CPU, GPU e memoria.
Il cloud computing quindi non è cloud gaming, ma è un sistema assai più dinamico: l’intera scena può essere, ad esempio, memorizzata già all’interno del cloud (un palazzo, una piazza, una parte del quadro) che agisce anche sui complessi calcoli della fisica e delle traiettorie dei proiettili (o esplosioni ecc.) con la macchina in locale che deve semplicemente riproporre uno spazio più limitato (il giocatore non vedrà mai l’intero livello, ma solo porzioni ove egli stesso si muove).
L’unica cosa che la console deve fare è mandare l’input ai server sulla posizione attualmente ricoperta dal giocatore, eventuali raffiche sparate e andate a segno.


Se supponiamo che ogni singolo colpo richiede 20 bytes di dati per essere “trasferito” ad Azure (dati forniti da un nostro collega programmatore) una raffica di 10 colpi necessita di appena 200 bytes. Successivamente i server rispediscono al client i dati rielaborati in quel momento che ammontano, più o meno, alla stessa cifra. Tanti pacchetti di pochi KB in download e upload. Il client deve quindi gestire unicamente la posizione iniziale o quella in cui si trova, la geometria poligonale circostante, la collisione e forza centripeta dei colpi, mentre tutto il resto è elaborato dai data center. 

Ogni singolo elemento richiede circa 100 bytes, cosa che rientra nella connessione minima richiesta da Microsoft: una semplice ADSL da 2 MB con anche 100ms di latenza (o ping). Prendete Titanfall come esempio e capirete le potenzialità del cloud, anche se si partecipa a stanze con 100ms di latenza. Fate una prova e diteci se trovate LAG nell’uccidere i BOT.

Quindi no, non servono super connessioni per poter usufruire di questa caratteristica e la cosa è stata smentita proprio da Reagent Games con Crackdown 3. E qui parliamo di un continuo traffico di dati per l'elaborazione della fisica in tempo reale, esplosioni, crolli, frammenti che partono in ogni dove, l'impatto dei proiettili, tutto su vasta scala! Ora possiamo dirlo: il vecchio trailer dell'E3 2014 di Crackdown 3 girava in tempo reale:


Diamo i numeri: quanto è esoso Crackdown 3 in termini di banda e ping?

Facendo dei calcoli semplici e “ottimali”, prendiamo proprio l'IP esclusiva per Xbox One come esempio e analizziamo quali risorse di rete saranno richieste per una esplosione di media grandezza e rispettivi detriti gestiti via cloud, quindi presupponendo un target rendering calcolato sul cloud ed elaborato poi in locale.
Considerando un calcolo in tempo reale di ogni chunk di dati, che avviene 32 volte al secondo, abbiamo:

- 32 bits * 6 - Float
- 9 bits * 2 - 9 Bit Integer
- Compressione tipica (LZ77 che Xbox One integra): 85%
- Chunk: 10,000
- Bit totali per Chunk: 210 bits
- Conversione bit totali per Chunk: 2,100,000
- Bit totali compressi: 315,000
- Configurazione tipica Ethernet MTU = 1500 bytes = 12000 bits
- Data frame per esplosioni iniziali di 10.000 Chunk: 27
- Overhead tipico in UDP = 224 bits
- Overhead totale per esplosione = 6048 bits
- Bit totali necessari da inviare per esplosione: 321,048
- Banda necessaria per esplosione inziale: 313Kbps
- Tutti i Chunk collidono in 4 secondi: 2500 Chunk rielaborati ogni secondo
2500*210 = 525000
- Compressi: 78750 bits
- Data Frame per secondo necessari per la rielaborazione: 7
- UDP Overhead = 1568 bits
- Bit totali necessari per la rielaborazione: 80318 bits
- Banda necessaria per la rielaborazione: 78kbps
- Banda necessaria per elaborazione totale in ogni secondo: 391kbps
- Banda necessaria per la elaborazione dopo il primo secondo: 78kbps

Calcoli eseguiti considerando le variabili X, Y, Z partendo da coordinate fisse iniziali e finali nel percorso della mappa. Ho poi assegnato 9 bit interi per i valori della rotazione sul percorso e il raggio dell'arco del percorso.

Per fare un confronto diretto con i servizi che vengono utilizzati ogni giorno, ad esempio Netflix o YouTube utilizzano 7Mbps per un flusso Super HD (720p/1080p), uno standard in questi giorni anche in Italia.

Latenza:
- Media RTT (Round Trip Time) verso Azure: 40ms
- Calcolo del tempo verso i Server: 32ms (per 32FPS)
- RTT totale = 72ms
- In secondi = 0.072 secondi

Conclusione:

Per l’elaborazione della sola fisica delle esplosioni servono solamente 392KB di dati trasmessi via rete. Questo considerando anche che la perdita dei pacchetti non è più un problema con le connessioni attuali (ADSL) e i problemi potrebbero derivare solo se si è connessi a wireless scadenti o ad ADSL che sono attorno al MB (in download).
Con una 2MB è possibile calcolare sino a 30.000 oggetti. Tutti i dati sono stati elaborati su base ottimale e prendendo in esame le caratteristiche di Azure, documentate sul sito Microsoft.
Per rappresentare un semplice vettore 3D, la rotazione per un oggetto ha bisogno di circa 12 variabili:
  1. Xstart - inizio coordinate X (32 bits)
  2. Ystart - inizio coordinate Y (32 bits)
  3. Zstart - inizio coordinate Z (32 bits)
  4. Xvelocity - velocità su asse X (32 bits)
  5. Yvelocity - velocità su asse Y (32 bits)
  6. Zvelocity - velocità su asse Z (32 bits)
  7. αstart(alpha) – inizio orientamento α (32 bits)
  8. βstart(beta) – inizio orientamento β (32 bits)
  9. γstart(gamma) – inizio orientamento γ (32 bits)
  10. αrate - Rate di rotazione su asse α (32 bits)
  11. βrate - Rate di rotazione su asse β (32 bits)
  12. γrate - Rate di rotazione su asse γ- (32 bits)
Ovviamente ho cercato di rendere il discorso il più semplicistico possibile e mi sono messe sempre nella condizione ottimale, ma il discorso è assai più complesso e richiede fondamenti di fisica e matematica avanzata. 

E dire che quando veniva presentata Xbox One assieme al cloud, lo stesso Phil Spencer veniva deriso e sbeffeggiato sul web: questi, purtroppo, sono meccanismi che richiedono tanto tempo e forse Microsoft avrebbe dovuto mostrare prima qualcosa di più concreto che non comunicati o frasi fatte. Ma il grande giorno è arrivato e adesso nessuno può dire che il cloud computing non esista o non sia fattibile.

Xbox One venne presentata come una console 8 volte più potente di Xbox 360 (2.6 TF):


Xbox One, quando collegata al cloud, venne presentata come una console 32 volte più potente di Xbox 360 (11 TF):


Con Crackdown 3 adesso si parla di una potenza di 20 volte quella di Xbox One, perché? Semplice, in base alle richieste computazionali, Azure può richiedere più o meno potenza in base alle situazione, in una struttura scalabile che può consentire a Xbox One tot TF di scarico! Il tutto gestito in tempo reale, senza la benché minima "interferenza". 

Questo è solo un piccolo riassunto di quanto viene richiesto in termini di risorse di rete per il corretto funzionamento del cloud in determinati scenari, ma l'esempio è indicativo per capire, grosso modo, come le richieste di rete siano comunque abbordabili, e se Crackdown 3 girerà agevolmente ad un range tra i 2 e i 4Mbit di banda per lo sfruttamento non solo di esplosioni, ma anche di fisica, interazione dei colpi, crolli e detriti vettoriali, viene facile pensare come questa tecnologia possa essere sfruttata in tutte le future produzioni.

Ricordiamoci infatti che l'infrasruttura Live/Azure di Xbox One è concessa anche agli studi di terze parti gratuitamente e se uno sviluppatore vorrà sfruttare il cloud computing in futuro su Xbox One non dovrà sborsare soldi o royalty aggiuntive.

Proprio questa scelta potrebbe inficiare positivamente per gli studi esterni (come già avvenuto per Titanfall) ma è solo dimostrando ai videogiocatori e gli altri team interessati al cloud con demo concrete come Crackdown 3 che ci sarà la vera e propria rivoluzione videoludica, come si auspica anche Phil Spencer:


Il gioco di Reagent Game non è soltanto che l'inizio...

X-Rays

8 commenti:

  1. Quante cazzo di cose sai e io imparo grazie a te tanto da quando ho chiuso la partita iva esattamente 3 anni fa non ho trovato più lavoro se non di merda welcome azure esplosione xbox aprite gli occhi grazie F5

    RispondiElimina
    Risposte
    1. Mi dispiace per il lavoro :(

      Elimina
    2. non ti preoccupare tanto sono i nostri politici ha manovrare tutto l'importante e' che ancora ci sono persone come te che dicono sempre la verita' anche se oggi si vive più in un mondo di falsita' ciao amico mio. gli amici sono pochi ricorda tutti conoscenti a presto spero buone ferie se le hai

      Elimina
  2. Bell'articolo x come sempre! Quest'anno non ti fermi nemmeno per le vacanze

    RispondiElimina
  3. Bell'articolo x come sempre! Quest'anno non ti fermi nemmeno per le vacanze

    RispondiElimina
  4. Ormai sono 14 15 mesi che ti seguo mi dispiace pensare che tutto questo finirà ma purtroppo tutto a un inizio e una fine se puoi mi piacerebbe sapere dove conviene comprare i giochi anche se per me Xbox.com penso sia il meglio oppure è' meglio comprare dalla Xbox ? Spero tu mi risponda appena possibile tu vedi quello che gli altri non vedono imparami qualche chicca xboxone ciao F5 riposati ogni tanto

    RispondiElimina
    Risposte
    1. Se hai Twitter mandami un messaggio privato, ti spiegherò tutto in PVT

      Elimina