Dentro Xbox 360 : I Segreti dell'Hardware!  0

Francesco Carucci (Lionhead Studios) spiega i dettagli tecnici dell'Xbox 360!

Cpu Multicore

Quando l’Xbox 360 invaderà il mercato alla fine dell’anno, non ci sarà nulla in commercio a livello consumer in grado di erogare una potenza paragonabile a quella della scatola bianca di casa Microsoft. Iniziando con un’affermazione così pesante, mi servirà l’intero articolo per giustificarla; e allora mi porto avanti col lavoro e mi butto immediatamente sulle specifiche tecniche e sul loro significato, dandovi il benvenuto.

Cpu Multicore

Si sa da tempo che per questa generazione Microsoft non affiderà più il cuore della sua console a Intel, con la quale porta avanti da decenni un fruttuoso matrimonio in campo PC, ma passerà all’altro grande colosso delle CPU: IBM e il suo PowerPC. O meglio, una sua versione custom e reingegnerizzata appositatemente per XBOX 360 derivata dalla famiglia PowerPC, tale da contenere al suo interno non uno, neppure due, ma ben tre core gemelli, ognuno in grado di rivaleggiare per potenza erogata con i piu’ veloci Penitum IV in circolazione sui PC più performanti di oggi. Questo dato sarebbe impressionante già di per sé, ma gettando uno sguardo in casa PC, dove Intel e AMD stanno facendo fatica a presentare le loro soluzioni dual core, ci si accorge del piccolo miracolo che pare IBM abbia compiuto con questo gioiellino.

Cpu Multicore

Ogni core, dicevo, é una CPU a se stante che viaggia a 3.2 Ghz e può, teoricamente, eseguire in contemporanea due diversi thread d’esecuzione (qualcosa di simile a due programmi), sfruttando le latenze (tempi morti) di accesso alla memoria di uno dei due thread. La Cpu mentre preleva un dato di cui ha bisogno dalla memoria centrale per eseguire il primo thread, invece di lasciare il processore a girarsi i pollici in attesa, procede ad eseguirne un secondo. Per chiarire il concetto, é come se stessimo lavorando su una pratica in ufficio e chiedessimo alla segretaria di recuperare un dato in archivio che ci serve per continuare il lavoro. Mentre la segretaria cerca ciò di cui abbiamo bisogno, possiamo guardarci attorno e aspettare, magari osservando attentamente la sua minigonna nuova, oppure possiamo mettere da parte la pratica corrente e continuare il lavoro su una seconda pratica, così da ottimizzare i tempi morti.

...alla fine dell’anno, non ci sarà nulla in commercio a livello consumer in grado di erogare una potenza paragonabile a quella della scatola bianca di casa Microsoft

Cpu Multicore

Quando il dato sarà disponibile, potremmo proseguire il lavoro sulla prima pratica lasciata in sospeso. Ma accanto a noi ci sono altri due uffici che porteranno avanti il proprio lavoro su altre quattro pratiche contemporaneamente. Il nostro dipartimento sarà così in grado di portare avanti il lavoro contemporaneamente su sei pratiche ad ogni istante, in una situazione ideale. Così la CPU dell’XBOX360 sarà in grado di eseguire contemporaneamente sei thread hardware (da non confondere con i software thread), ovvero sei diversi programmi.

Cpu Multicore

Devo, però, sfatare un mito: una Cpu con tre core non é necessariamente sempre tre volte più veloce di una Cpu con un solo core, ma dipende fortemente sia dalla tipologia del problema che é chiamata a risolvere, sia dall’algoritmo di soluzione del problema stesso. Se una donna impiega nove mesi per fare un bambino, tre donne non impiegheranno tre mesi a fare lo stesso bambino. Ma tre donne impiegheranno solo nove mesi a fare tre bambini diversi, quando una donna sola ne impiegherebbe ventisette per fare gli stessi tre bambini (e farebbe anche una gran fatica). Si dice che un problema é perfettamente parallelizzabile quando può essere suddiviso in sottoproblemi che non dipendono l’uno dall’altro e che quindi possono essere svolti dalla Cpu contemporaneamente. Il problema “fare un bambino” non é parallelizzabile, il problema “fare tre bambini” e’ partizionabile in tre sotto problemi indipendenti l’uno dall’altro che possono essere eseguiti contemporaneamente. Quindi, una Cpu con tre Core impiega il tempo che impiega una sola per fare ben tre bambini, ma lo stesso tempo se deve farne uno solo, dato che non è scomponibile in sottoproblemi. Resta, però, il fatto che, in condizioni di lavoro con problemi suddivisibili in sottoproblemi risolvibili contemporaneamente, una Cpu con tre Core come quella di Xbox 360 è in grado di fare miracoli.

Grafica Next Gen

Ogni core del Power PC sarà inoltre equipaggiato con un’unità vettoriale denominata VMX-128. Tanti termini tecnici per descrivere un concetto molto semplice: ogni core potrà eseguire un’operazione elementare contemporaneamente su un vettore di quattro numeri in virgola mobile a 32 bit qualche miliardo di volte al secondo. La ripetizione della stessa operazione su quattro numeri diversi, invece che quattro diverse operazioni, potrebbe sembrare una limitazione, ma moltissimi concetti in un videogioco sono esprimibili in termini di vettori di numeri: un vertice di un poligono in una scena 3d é rappresentato da quattro numeri, il colore di un pixel é descritto da quattro numeri (l’intensità di ogni componente, rosso, verde, blu e la luminosità), la velocità e l’accelerazione di un proiettile sono vettori di numeri.

L’unità vettoriale del PowerPC é particolarmente indicata per macinare una grande quantità di calcoli su vettori e potrà essere sfruttata per calcolare, ad esempio, gli algoritmi di fisica dei giochi della prossima generazione. Mettendo assieme le tre unità vettoriali, ed i due thread hardware per core, sarebbe possibile calcolare contemporaneamente il movimento nello spazio di ben sei oggetti, finiti i quali la CPU sarà libera di passare a calcolare i successivi sei oggetti e così via fino a riempire lo schermo di oggetti in movimento, che urtano e si distruggono, rimbalzano e si deformano. Senza contare, che la fisica è un altro esempio di problema facilmente parallelizzabile, perfetto, quindi per la struttura multi core di Xbox 360. Il limite è solo la fantasia dei designer ed il tempo dei programmatori: la nuova console di Microsoft ci mette la potenza bruta. A condire il tutto, 9 miliardi di prodotti scalari al secondo (un’operazione tipicamente tanto complicata da implementare efficientemente in hardware, quanto utile. Molto utile) rappresentano la ciliegina sulla torta. Con il prodotto scalare è, ad esempio, possibile calcolare la distanza di due corpi a partire dalla loro posizione, oppure l'angolo con il quale un corpo va a sbattere sul muro a partire dal vettore che rappresenta la sua velocità.

L’unità vettoriale del PowerPC é particolarmente indicata per macinare una grande quantità di calcoli su vettori e potrà essere sfruttata per calcolare, ad esempio, gli algoritmi di fisica dei giochi della prossima generazione

Per fare un ulteriore esempio, il problema “disegnare un’immagine formata da pixel a partire da una scena tridimensionale” é un tipico problema facilmente parallelizzabile: calcolare il colore di un pixel sullo schermo é un’operazione che non dipende dal colore degli altri pixel. La CPU dell’Xbox 360 disegnerà, quindi, velocemente immagini tridimensionali? No, per questo esistono le GPU, ovvero un processore progettato appositamente per risolvere esattamente questo problema. Per la GPU, Microsoft si é affidata al leader nel mercato: la canadese ATI, che in ambito PC vanta le soluzioni grafiche più performanti. Nel progetto di questa GPU, ATI ha percorso una strada del tutto innovativa distaccandosi dai canoni di progetto classici, ma gettando piuttosto uno sguardo al futuro. Se all’interno della CPU sono presenti tre diversi core che lavorano in contemporanea, all’interno della GPU di ATI sono presenti qualcosa tipo 48 unità in grado di lavorare contemporaneamente su vettori di quattro numeri che possono rappresentare, a seconda delle necessità, vertici di una scena tridimensionale o pixel da disegnare a schermo. Dicevo che disegnare pixel é un problema facilmente parallelizzabile ed una GPU porta questo concetto all’estremo tanto da essere ottimizzata per eseguire questo compito al meglio, e la GPU dell’Xbox 360 lo farà più velocemente di qualunque GPU in commercio alla fine di quest’anno. I dati sono impressionanti, si parla di un valore di picco di 500 milioni di poligoni processabili al secondo, quando la più veloce GPU attualmente in commercio, sempre di ATI, non raggiunge i 200 milioni. Anche dividendo il dato teorico a metà, per avere un valore più realisticamente raggiungibile in condizioni di gioco e non di tech demo, si parla di coprire ogni pixel di un’immagine alla risoluzione di 640x480 pixel con più di venti poligoni. Sembra quasi sovradimensionato. Se il numero di vertici al secondo é un dato spesso citato a proposito e, francamente, di importanza piuttosto relativa, é più interessante notare il numero massimo di sample, che semplificando molto possiamo chiamare pixel, che la GPU può processare in un secondo: 16 miliardi di sample filtrati con un algoritmo di antialiasing totalmente hardware e trasparente al programmatore. Anche qui tanti paroloni, ma semplificando si può dire che, per ogni pixel disegnato a schermo, la GPU ne memorizzerà quattro e ne farà la media al momento di spedire il suo colore allo schermo, operazione che riduce sensibilmente le scalettature tipiche del fenomeno dell'aliasing. Questo significa che sarà possibile coprire di pixel uno schermo alla risoluzione di 1280x720 pixel (HDTV), qualcosa tipo 200 volte, per 60 volte al secondo, in condizioni ideali. Una simile potenza bruta apre le porte a tecniche grafiche che erano fino ad oggi precluse all’hardware consumer. Effetti come il Normal mapping (reso popolare da Chronicles of Riddick) e High Dynamic Range rendering (un render d’alta qualità, ma esoso per l’hardware) rappresenteranno la norma; per capire il livello grafico raggiungibile, la famosa demo dell’Unreal Engine 3 sarà il punto di partenza per qualità di rendering.

Grafica Next Gen

Sono riuscito a giustificare la sparata iniziale? Forse no, ma le cifre che ho snocciolato, inquadrate nel loro significato, spero diano l’idea di ciò che ci aspetta nel 2006. Perché le cifre in sé non vogliono dire nulla, se prese da sole, non hanno significati metafisici, ma i numeri rappresentano sempre qualcosa, sono un segno. Questi numeri rappresentano gli oggetti con i quali si potrà interagire, la libertà di creare mondi più dettagliati e verosimili di quanto si é potuto fare fino ad oggi, storie più immersive, in sintesi: questo è l’indice di quanto potremo divertirci a giocare a partire da fine 2005.

Francesco Carucci

Tutti gli articoli e i video di Multiplayer.it su Xbox 360!

Vi è mai capitato di avere un amico di cui essere orgogliosi? A me sì, ed è successo solo di recente in un pub di Londra nel 2003, dopo l'ennesimo e deludente Ects, davanti ad una pinta di birra doppio malto. Lì, parlando del più e del meno, insomma sempre di videogiochi, ho fatto la conoscenza di Francesco Carucci. Francesco ha iniziato a programmare cercando di simulare il movimento di un piccolo omino su uno schermo all'età di otto anni. La passione per i PC e la programmazione l'hanno portato, dopo la laurea a Torino e dopo una breve esperienza lavorativa in Italia, nella terra d'Albione alla Kuju Ltd, dove ha contribuito alla programmazione di Lotus Challenge (Xbox e Gamecube) e FireWarrior (PlayStation 2). Dopo queste esperienze, ecco la grande occasione e il passaggio ai Lionhead Studios di Peter Molyneux, presso i quali collabora in veste di programmatore 3d alla realizzazione di Black & White 2, e dove continua ad animare omini che corrono su uno schermo.

Come dicevo, Francesco è un amico ed è il primo a cui mi è venuto in mente di chiedere, data la sua esperienza nel campo, di spiegare ai lettori di Multiplayer.it, ed in modo comprensibile, l'hardware e il funzionamento della nuova console di casa Microsoft, ovvero Xbox 360. Lungi dal voler essere un complicato articolo pieno di tecnicismi, questo pezzo è una breve introduzione alle meraviglie tecnologiche della prima console Next Generation ad arrivare sul mercato. Mettendo in risalto le principali differenze rispetto agli hardware attualmente in circolazione.

Non resta, quindi, che augurarvi buona lettura,

Antonio Jodice - Responsabile Xbox @ Multiplayer.it