Gli aspetti critici di una console sotto l'aspetto delle performance sono fondamentalmente tre:
- Central Processing Unit (CPU) performance: the Xbox 360 CPU architecture has three times the general purpose processing power of the Cell.
- Graphics Processing Unit (GPU) performance: the Xbox 360 GPU design is more flexible and it has more processing power than the PS3 GPU.
- Memory System Bandwidth: the memory system bandwidth in Xbox 360 exceeds the PS3’s by five times.
La CPU di Xbox 360 ha molta più potenza general purpose poichè dispone di ben tre core general purpose mentre il Cell ne ha solo uno. Il Cell si avvantaggia sul calcolo in virgola mobile potendo contare su sette processori DSP.
La GPU ATi di Xbox 360 ha molta più potenza di processazione rispetto all'RSX della PS3, inoltre dispone di features innovative per migliori performance nel rendering.
Xbox 360 ha 278.4 GB/s di memory system bandwidth mentre la PS3 dispone di meno di un quinto di tale banda (48 GB/s) .
ANALISI DETTAGLIATA DELLE PERFOMANCE
*CPU
Il processore di Xbox360 è stato ideato per mettere nelle mani degli sviluppatori la potenza necessaria a creare games di alto livello ma in modo semplice. Il processore Cell che equipaggia PS3 ha un'impressionante potenza di calcolo in virgola mobile che verrà utilizzato in maniera parziale per lo sviluppo di videogames.
Il codice di un videogame è per la maggior parte composto da numeri interi, numeri relativi, vettori matematici con molti branches e accessi casuali alla memoria. Tale codice viene gestito in maniera migliore da una CPU general purpose con una cache, un branch predictor e una unità di calcolo vettoriale.
I sette DSP del processore Cell non dispongono di cache, nè hanno accesso diretto alla memoria, non dispongono di alcun branch predictor e hanno un set di istruzioni differente rispetto alla CPU principale della PS3. Alla luce di ciò la CPU Power Pc di Xbox 360 disponde di tre core general purpose mentre il Cell ne ha di fatto solo uno.
*GPU
Immaginando di ignorare il collo di bottiglia costituito dalla banda della console di Sony, la GPU della PS3 non è poi tanto più potente della GPU ATi che equipaggia Xbox 360.
Secondo la press release di Sony le specifiche della GPU della PS3 sarebbero le seguenti:
RSX GPU
• 550 MHz
• Independent vertex/pixel shaders
• 51 billion dot products per second (total system performance)
• 300M transistors
• 136 “shader operations” per clock
L'ALU ha numeri e prestazioni molto interessanti: 51 bilioni di prodotti tensoriali al secondo (performance dell'intero sistema), 300 milioni di transistors e più del doppio della potenza di una 6800 Ultra.
I 51 prodotti tensoriali per ciclo sono stati mostrati in un sommario delle potenzialità del sistema grafico e si suppone siano comprensive delle performance del Cell. Il calcolo proposto da Sony sembra assumere che il Cell sia in grado di operare un prodotto tensoriale per ciclo per ogni DSP, nonostante questi non dispongano di istruzioni per eseguire tali prodotti.
Tenendo per buone le affermazioni di Sony procediamo con i calcoli: 7 prodotti tensoriali per ciclo moltiplicato per la frequeza di lavoro di ciscun DSP abbiamo quindi 7 * 3.2 GHz = 22.4 bilioni prodotti tensoriali operati dalla CPU. Restano così 51 - 22.4 = 28.6 bilioni di prodotti tensoriali per secondo operati dalla GPU. 28.6 bilioni / 550MHz = 52 operazioni per clock da parte dell'ALU della GPU.
E' importante notare come le ALUs dell'RSX (la GPU by Nvidia della Ps3), nonostante siano molto simili alle ALUs del GeForce 6800, lavorino su vector4s. Le ALUs della GPU di Xbox360 lavorano invece su vector5s.
Essendo il numero di transistors della GPU di Xbox 360 di poco superiore a quello dell'RSX (330M vs 300M) non deve sorprendere che il numero totale di GFLOPs programmabili nei due sistemi sia molto simile.
La PS3 ha in aggiunta i sette DSPs del Cell per eseguire molte più operazioni in virgola mobile nel corso del rendering grafico, tuttavia Xbox 360 dispone di tre cores general purpose con D3D particolari e le istruzioni per i dot products sono ideate per calcoli prettamente grafici.
*BANDWIDTH
La PS3 ha 22.4 GB/s di GDDR3 bandwidth e 25.6 GB/s di RDRAM bandwidth per un banda totale di sistema pari a 48 GB/s.
L' Xbox 360 ha 22.4 GB/s di GDDR3 bandwidth e 256 GB/s di EDRAM bandwidth per un banda totale di sistema pari a 278.4 GB/s.
Perchè Xbox 360 dispone di questa immensa quantità di banda?
La risposta è semplice: anche i calcoli più semplici dimostrano che il frame buffer consuma una grande quantità di banda. Per rendere l'idea, con i semplici color rendering e Z testing a 550 MHz il frame baffer da solo richiede 52.8 GB/s a 8 pixels per clock. La banda di memoria della PS3 è quindi insufficiente per mantenere la propria GPU alla massima velocità di rendering, anche senza texture e vertex fetches.
- Central Processing Unit (CPU) performance: the Xbox 360 CPU architecture has three times the general purpose processing power of the Cell.
- Graphics Processing Unit (GPU) performance: the Xbox 360 GPU design is more flexible and it has more processing power than the PS3 GPU.
- Memory System Bandwidth: the memory system bandwidth in Xbox 360 exceeds the PS3’s by five times.
La CPU di Xbox 360 ha molta più potenza general purpose poichè dispone di ben tre core general purpose mentre il Cell ne ha solo uno. Il Cell si avvantaggia sul calcolo in virgola mobile potendo contare su sette processori DSP.
La GPU ATi di Xbox 360 ha molta più potenza di processazione rispetto all'RSX della PS3, inoltre dispone di features innovative per migliori performance nel rendering.
Xbox 360 ha 278.4 GB/s di memory system bandwidth mentre la PS3 dispone di meno di un quinto di tale banda (48 GB/s) .
ANALISI DETTAGLIATA DELLE PERFOMANCE
*CPU
Il processore di Xbox360 è stato ideato per mettere nelle mani degli sviluppatori la potenza necessaria a creare games di alto livello ma in modo semplice. Il processore Cell che equipaggia PS3 ha un'impressionante potenza di calcolo in virgola mobile che verrà utilizzato in maniera parziale per lo sviluppo di videogames.
Il codice di un videogame è per la maggior parte composto da numeri interi, numeri relativi, vettori matematici con molti branches e accessi casuali alla memoria. Tale codice viene gestito in maniera migliore da una CPU general purpose con una cache, un branch predictor e una unità di calcolo vettoriale.
I sette DSP del processore Cell non dispongono di cache, nè hanno accesso diretto alla memoria, non dispongono di alcun branch predictor e hanno un set di istruzioni differente rispetto alla CPU principale della PS3. Alla luce di ciò la CPU Power Pc di Xbox 360 disponde di tre core general purpose mentre il Cell ne ha di fatto solo uno.
Xbox 360’s CPUs has vector processing power on each CPU core. Each Xbox 360 core has 128 vector registers per hardware thread, with a dot product instruction, and a shared 1-MB L2 cache. The Cell processor’s vector processing power is mostly on the seven DSPs.
Dot products are critical to games because they are used in 3D math to calculate vector lengths, projections, transformations, and more. The Xbox 360 CPU has a dot product instruction, where other CPUs such as Cell must emulate dot product using multiple instructions.
Cell’s streaming floating-point work is done on its seven DSP processors. Since geometry processing is moved to the GPU, the need for streaming floating-point work and other DSP style programming in games has dropped dramatically.
Just like with the PS2’s Emotion Engine, with its missing L2 cache, the Cell is designed for a type of game programming that accounts for a minor percentage of processing time.
Sony’s CPU is ideal for an environment where 12.5% of the work is general-purpose computing and 87.5% of the work is DSP calculations. That sort of mix makes sense for video playback or networked waveform analysis, but not for games. In fact, when analyzing real games one finds almost the opposite distribution of general purpose computing and DSP calculation requirements. A relatively small percentage of instructions are actually floating point. Of those instructions which are floating-point, very few involve processing continuous streams of numbers. Instead they are used in tasks like AI and path-finding, which require random access to memory and frequent branches, which the DSPs are ill-suited to.
Based on measurements of running next generation games, only ~10-30% of the instructions executed are floating point. The remainders of the instructions are load, store, integer, branch, etc. Even fewer of the instructions executed are streaming floating point—probably ~5-10%. Cell is optimized for streaming floating-point, with 87.5% of its cores good for streaming floating-point and nothing else.
Dot products are critical to games because they are used in 3D math to calculate vector lengths, projections, transformations, and more. The Xbox 360 CPU has a dot product instruction, where other CPUs such as Cell must emulate dot product using multiple instructions.
Cell’s streaming floating-point work is done on its seven DSP processors. Since geometry processing is moved to the GPU, the need for streaming floating-point work and other DSP style programming in games has dropped dramatically.
Just like with the PS2’s Emotion Engine, with its missing L2 cache, the Cell is designed for a type of game programming that accounts for a minor percentage of processing time.
Sony’s CPU is ideal for an environment where 12.5% of the work is general-purpose computing and 87.5% of the work is DSP calculations. That sort of mix makes sense for video playback or networked waveform analysis, but not for games. In fact, when analyzing real games one finds almost the opposite distribution of general purpose computing and DSP calculation requirements. A relatively small percentage of instructions are actually floating point. Of those instructions which are floating-point, very few involve processing continuous streams of numbers. Instead they are used in tasks like AI and path-finding, which require random access to memory and frequent branches, which the DSPs are ill-suited to.
Based on measurements of running next generation games, only ~10-30% of the instructions executed are floating point. The remainders of the instructions are load, store, integer, branch, etc. Even fewer of the instructions executed are streaming floating point—probably ~5-10%. Cell is optimized for streaming floating-point, with 87.5% of its cores good for streaming floating-point and nothing else.
Immaginando di ignorare il collo di bottiglia costituito dalla banda della console di Sony, la GPU della PS3 non è poi tanto più potente della GPU ATi che equipaggia Xbox 360.
Secondo la press release di Sony le specifiche della GPU della PS3 sarebbero le seguenti:
RSX GPU
• 550 MHz
• Independent vertex/pixel shaders
• 51 billion dot products per second (total system performance)
• 300M transistors
• 136 “shader operations” per clock
L'ALU ha numeri e prestazioni molto interessanti: 51 bilioni di prodotti tensoriali al secondo (performance dell'intero sistema), 300 milioni di transistors e più del doppio della potenza di una 6800 Ultra.
I 51 prodotti tensoriali per ciclo sono stati mostrati in un sommario delle potenzialità del sistema grafico e si suppone siano comprensive delle performance del Cell. Il calcolo proposto da Sony sembra assumere che il Cell sia in grado di operare un prodotto tensoriale per ciclo per ogni DSP, nonostante questi non dispongano di istruzioni per eseguire tali prodotti.
Tenendo per buone le affermazioni di Sony procediamo con i calcoli: 7 prodotti tensoriali per ciclo moltiplicato per la frequeza di lavoro di ciscun DSP abbiamo quindi 7 * 3.2 GHz = 22.4 bilioni prodotti tensoriali operati dalla CPU. Restano così 51 - 22.4 = 28.6 bilioni di prodotti tensoriali per secondo operati dalla GPU. 28.6 bilioni / 550MHz = 52 operazioni per clock da parte dell'ALU della GPU.
E' importante notare come le ALUs dell'RSX (la GPU by Nvidia della Ps3), nonostante siano molto simili alle ALUs del GeForce 6800, lavorino su vector4s. Le ALUs della GPU di Xbox360 lavorano invece su vector5s.
The total programmable GPU floating point performance for the PS3 would be 52 ALU ops * 4 floats per op *2 (madd) * 550 MHz = 228.8 GFLOPS which is less than the Xbox 360’s 48 ALU ops * 5 floats per op * 2 (madd) * 500 MHz= 240 GFLOPS.
La PS3 ha in aggiunta i sette DSPs del Cell per eseguire molte più operazioni in virgola mobile nel corso del rendering grafico, tuttavia Xbox 360 dispone di tre cores general purpose con D3D particolari e le istruzioni per i dot products sono ideate per calcoli prettamente grafici.
The 6800 Ultra has 16 pixel pipes, 6 vertex pipes, and runs at 400 MHz. Given the RSX’s 2x better than a 6800 Ultra number and the higher frequency of the RSX, one can roughly estimate that it will have 24 pixel shading pipes and 4 vertex shading pipes (fewer vertex shading pipes since the Cell DSPs will do some vertex shading). If the PS3 GPU keeps the 6800 pixel shader pipe co-issue architecture which is hinted at in Sony’s press release, this again gives it 24 pixel pipes* 2 issued per pipe + 4 vertex pipes = 52 dot products per clock in the GPU.
If the RSX follows the 6800 Ultra route, it will have 24 texture samplers, but when in use they take up an ALU slot, making the PS3 GPU in practice even less impressive. Even if it does manage to decouple texture fetching from ALU co-issue, it won’t have enough bandwidth to fetch the textures anyways.
For shader operations per clock, Sony is most likely counting each pixel pipe as four ALU operations (co-issued vector+scalar) and a texture operation per pixel pipe and 4 scalar operations for each vector pipe, for a total of 24 * (4 + 1) + (4*4) = 136 operations per cycle or 136 * 550 = 74.8 GOps per second.
Given the Xbox 360 GPU’s multithreading and balanced design, you really can’t compare the two systems in terms of shading operations per clock. However, the Xbox 360’s GPU can do 48 ALU operations (each can do a vector4 and scalar op per clock), 16 texture fetches, 32 control flow operations, and 16 programmable vertex fetch operations with tessellation per clock for a total of 48*2 + 16 + 32 + 16 = 160 operations per cycle or 160 * 500 = 80 GOps per second.
Overall, the automatic shader load balancing, memory export features, programmable vertex fetching, programmable triangle tesselator, full rate texture fetching in the vertex shader, and other “well beyond shader model 3.0” features of the Xbox 360 GPU should also contribute to overall rendering performance.
If the RSX follows the 6800 Ultra route, it will have 24 texture samplers, but when in use they take up an ALU slot, making the PS3 GPU in practice even less impressive. Even if it does manage to decouple texture fetching from ALU co-issue, it won’t have enough bandwidth to fetch the textures anyways.
For shader operations per clock, Sony is most likely counting each pixel pipe as four ALU operations (co-issued vector+scalar) and a texture operation per pixel pipe and 4 scalar operations for each vector pipe, for a total of 24 * (4 + 1) + (4*4) = 136 operations per cycle or 136 * 550 = 74.8 GOps per second.
Given the Xbox 360 GPU’s multithreading and balanced design, you really can’t compare the two systems in terms of shading operations per clock. However, the Xbox 360’s GPU can do 48 ALU operations (each can do a vector4 and scalar op per clock), 16 texture fetches, 32 control flow operations, and 16 programmable vertex fetch operations with tessellation per clock for a total of 48*2 + 16 + 32 + 16 = 160 operations per cycle or 160 * 500 = 80 GOps per second.
Overall, the automatic shader load balancing, memory export features, programmable vertex fetching, programmable triangle tesselator, full rate texture fetching in the vertex shader, and other “well beyond shader model 3.0” features of the Xbox 360 GPU should also contribute to overall rendering performance.
La PS3 ha 22.4 GB/s di GDDR3 bandwidth e 25.6 GB/s di RDRAM bandwidth per un banda totale di sistema pari a 48 GB/s.
L' Xbox 360 ha 22.4 GB/s di GDDR3 bandwidth e 256 GB/s di EDRAM bandwidth per un banda totale di sistema pari a 278.4 GB/s.
Perchè Xbox 360 dispone di questa immensa quantità di banda?
La risposta è semplice: anche i calcoli più semplici dimostrano che il frame buffer consuma una grande quantità di banda. Per rendere l'idea, con i semplici color rendering e Z testing a 550 MHz il frame baffer da solo richiede 52.8 GB/s a 8 pixels per clock. La banda di memoria della PS3 è quindi insufficiente per mantenere la propria GPU alla massima velocità di rendering, anche senza texture e vertex fetches.
The PS3 uses Z and color compression to try to compensate for the lack of memory bandwidth. The problem with Z and color compression is that the compression breaks down quickly when rendering complex next-generation 3D scenes.
HDR, alpha-blending, and anti-aliasing require even more memory bandwidth. This is why Xbox 360 has 256 GB/s bandwidth reserved just for the frame buffer. This allows the Xbox 360 GPU to do Z testing, HDR, and alpha blended color rendering with 4X MSAA at full rate and still have the entire main bus bandwidth of 22.4 GB/s left over for textures and vertices.
HDR, alpha-blending, and anti-aliasing require even more memory bandwidth. This is why Xbox 360 has 256 GB/s bandwidth reserved just for the frame buffer. This allows the Xbox 360 GPU to do Z testing, HDR, and alpha blended color rendering with 4X MSAA at full rate and still have the entire main bus bandwidth of 22.4 GB/s left over for textures and vertices.
Commenta