Xbox 360 vs PS3: uno sguardo tecnico
di
Licantrop0
P
Xbox 360 vs PS3: uno sguardo tecnico
Ora che le specifiche di Xbox 360 e Playstation 3 sono state annunciate ufficialmente, è possibile fare un confronto teorico delle performance dei due sistemi.
Gli aspetti critici per le performance di una console sono sostanzialmente tre:
- CPU (Central Processing Unit)
- GPU (Graphics Processing Unit)
- Larghezza di banda della RAM
Analizziamo accuratamente ognuno dei tre aspetti, aiutandoci dai grafici.
CPU
Il processore di Xbox 360 è stato disegnato per dare agli sviluppatori di videogiochi tutta la potenza di cui hanno bisogno, in un modo semplice da programmare. Il Cell ha una straordinaria potenza in Floating Point (virgola mobile), che però è limitata nell’uso dei giochi.
La maggior parte del codice di un videogioco è composto da un mix di variabili di tipo Integer (interi), Floating Point e vettori, con un sacco di diramazioni (ad es. costrutti di tipo IF), e accesso casuale alla memoria. Questo tipo di codice è gestito meglio da una CPU General Purpose (ossia per uso generico) che ha cache, unità vettoriali e Branch Predictor (questi ultimi servono per decidere in anticipo su quale diramazione andare).
Il Cell ha 8 DSP (che Sony chiama SPE), delle quali solo 7 realmente utilizzate (1 serve per la ridondanza). Queste unità di calcolo non hanno cache nè accesso diretto alla memoria, nè Branch Predictor, ed hanno un set di istruzioni differente da quello della CPU principale di PS3. Non sono disegnate per un elaborazione efficiente General Purpose. I DSP non sono appropriati per la programmazione di videogiochi. Inoltre Xbox 360 ha 3 core General Purpose, mentre il Cell ne ha solo uno.
La CPU di Xbox 360 ha una potenza di calcolo vettoriale che prende da ognuno dei Core, i quali hanno 128 registri vettoriali per Thread Hardware, con istruzioni per il prodotto scalare, e 1 Mb di Cache L2 condivisa tra tutti i core. La potenza dell’elaborazione vettoriale del Cell deriva principalmente dai 7 DSP.
Le operazioni di prodotto scalare sono critiche per i giochi perchè sono usate nella matematica 3D per calcolare la lunghezza dei vettori, le proiezioni, trasformazioni e altro, tutto basato su matrici. La CPU di Xbox 360 ha delle istruzioni specifiche per il prodotto scalare, mentre altre CPU tipo il Cell emulano queste operazioni tramite istruzioni di moltiplicazione.
Il lavoro in virgola mobile di Cell è fatto sfruttando i suoi 7 processori DSP. Poiché l’elaborazione delle geometrie viene fatta nella GPU, la necessità di calcolo eseguito dai DSP cala vertiginosamente.
Come per l’Emotion Engine della Ps2 a cui mancava la Cache L2, il Cell è studiato per un tipo di programmazione che conti su una minore percentuale di tempo di elaborazione.
La CPU Sony è ideale per un ambiente dove il 12,5% del lavoro è General Purpose e l’87,5% è per il calcolo eseguito dai DSP. Questo ha senso per la visione dei filmati, ma non per i giochi. Infatti, analizzando il codice dei giochi di prossima generazione, si trova che c’è circa una distribuzione opposta tra i requisiti di General Purpose e calcolo DSP.
Una percentuale di istruzioni pari al 10 – 30% sono Floating point. Di queste, veramente poche sono coinvolte in un continuo flusso di numeri (probabilmente il 5 – 10%). Le rimanenti istruzioni sono Load, Store, Integer, Branch e sono usate in task tipo Intelligenza Artificiale e Path Finding, che richiedono accesso casuale alla memoria e frequenti diramazioni, cose che i DSP di Cell non sono performanti ad eseguire.
Il Cell è ottimizzato per lo streaming (flusso continuo) di numeri Floating Point, con l’87,5% dei suoi core adatti a fare solo quello. È un processore ottimizzato per avere elevate prestazioni con il 5 – 10% del codice che andrà ad eseguire.
GPU
Perfino ignorando le limitazioni di banda, la GPU di PS3 non è più potente di quella di Xbox 360.
Ecco le specifiche dal comunicato ufficiale Sony riguardanti la GPU di PS3:
GPU RSX
- 550 MHz
- vertex/pixel shaders indipendenti
- 51*10^9 prodotti scalari al secondo (performance totali del sistema)
- 300*10^6 transistor
- 136 “shader operations” per clock
I numeri interessanti riguardo alle performance dell’ALU sono i 51*10^9 prodotti scalari al secondo ed i 300*10^6 transistor. Più del doppio di una 6800 Ultra.
I 51*10^9 prodotti scalari al secondo sono elencati in una slide per le performance totali, che includono anche il processore Cell. I calcoli di Sony fanno pensare che il Cell può eseguire un prodotto vettoriale a ciclo per DSP, nonostante questi non abbiano istruzioni apposite per questa operazione.
Comunque, usando le affermazioni di Sony, 7 prodotti scalari a ciclo * 3.2 Ghz fanno 22.4*10^9 prodotti scalari al secondo solo per la CPU, che lascia 51 – 22.4 = 28.6*10^9 prodotti scalari al secondo per la sola GPU. Questo implica che 28.6*10^9 / 550 Mhz = 52 operazioni GPU ALU per ciclo di clock.
È importante notare che se le ALU dell’RSX sono simili a quelle della Geforce 6800, lavorano sui vector4, mentre le ALU della GPU di Xbox 360 lavorano sui vector5. Le performance totali in Floating Point della GPU di PS3 dovrebbero essere: 52 operazioni ALU * 4 float per operazione * 2 (madd) * 550 MHz = 228.8 GFLOPS, che sono meno di quelle di Xbox 360: 48 operazioni ALU * 5 float per operazione * 2 (madd) * 500 MHz= 240 GFLOPS.
Nella GPU di Xbox 360, con un numero di transistor di poco superiore (330*10^6 contro 300*10^6), non è sorprendente che il numero totale di GFLOPS programmabili sia molto simile.
PS3 ha i 7 DSP addizionali sul Cell per eseguire più operazioni in Floating Point per il rendering, ma Xbox 360 ha 3 Core General Purpose con istruzioni Direct3D e prodotti vettoriali che sono più adatte nei veri calcoli relativi alla grafica.
La 6800 Ultra ha 16 Pixel Shading Pipe, 6 Vertex Shading Pipes e viaggia a 400 MHz. Si può stimare all’incirca che l’RSX abbia 24 Pixel Shading Pipes e 4 Vertex Shading Pipes (sono di meno perché i DSP del Cell ne hanno già qualcuna). Se PS3 mantiene l’architettura della 6800 (ed è ciò che si evince dalle press release), questo significa che ha 24 Pixel Pipes * 2 impiegate per pipe + 4 vertex pipes = 52 prodotti vettoriali per clock nella GPU.
Riguardo le Shader Operation per clock, Sony conta di far eseguire ad ogni Pixel Pipe 4 Operazioni ALU e una di Texture, 4 operazioni scalari per ogni Vector Pipe, per un totale di 24 * (4 + 1) + (4*4) = 136 operazioni a ciclo o 136 * 550 = 74.8 giga-operazioni al secondo.
Avendo la GPU di Xbox 360 un design multithreading e bilanciato, non è possibile comparare i due sistemi in termini di Shading Operations per Clock. Comunque, la GPU di Xbox 360 è in grado di generare 160 Operazioni per ciclo o 160 * 500 = 80 giga-operazioni al secondo, calcolate così:
48 operazioni ALU (ognuna delle quali fa operazioni vector4 e scalari per clock)
16 texture fetches
32 operazioni di controllo di flusso
16 operazioni programmabili di vertex fetch con tessellazione per clock
48*2 + 16 + 32 + 16 = 160
Comunque, il bilanciamento automatico del carico degli shader, le features di esportazione della memoria, i vertex feching, i trangle tesselator programmabili e altre caratteristiche innovative della GPU di Xbox 360 “ben al di là dello Shader Model 3.0”, dovrebbero contribuire alle performance generiche di rendering.
Larghezza di banda della Memoria
PS3 ha 22.4 GB/s per le memorie GDDR3 (256 Mb) e 25.6 GB/s per le RDRAM (256 Mb)
Xbox 360 ha 22.4 GB/s per le memorie GDDR3 (512 Mb) e 256 GB/s per la EDRAM (10 Mb)
Gran parte della larghezza di banda è consumata dal Frame Buffer. Per esempio con un semplice Color Rendering e uno Z testing, a 550 MHz, il frame buffer richiede da solo 52.8 Gb/s in 8 pixel per Clock. La larghezza di banda di PS3 è insufficiente per mantenere questa velocità, anche senza texture e vertex fetches.
PS3 usa una compressione per cercare di compensare questa mancanza di larghezza di banda, il problema è che questa compressione non funziona molto bene quando si renderizzano delle scene 3D complesse.
L’High Dinamic Range, l’Alpha blending e l’antialiasing richiedono ancora più banda. È per questo che Xbox 360 ha 256 Gb/s di banda riservata solo per il frame buffer. Questo permette alla GPU di fare Z testing, HDR e alpha blended color rendering, con Antialiasing 4x alla massima velocità, disponendo ancora di 22.4 Gb/s di banda per texture e calcolo dei vertici. Ciò implica avere attivato l’antialiasing in tutti i giochi perché disponibile a costo zero.
Conclusioni
Se guardiamo solo i numeri, Xbox 360 è probabilmente più potente di PS3. Tenete inoltre presente che Sony ha la fama di promettere e non mantenere le specifiche tecniche dei loro prodotti. La verità è che entrambi i sistemi hanno un sacco di potenza per giochi e divertimento in alta definizione.
Comunque le prestazioni hardware, per quanto importanti, sono solo 1/3 del puzzle. Xbox 360 è una fusione tra hardware, software e servizi. Senza il software (giochi) e i servizi (Xbox Live) a supporto, anche il più potente degli hardware diventa inutile. I giochi di Xbox 360, aiutati da hardware, software e servizi molto avanzati, saranno migliori di quelli di PS3.
Commenti