Embedded Sea said:
Cache is one of Xenon's strengths...SPE cache is one of its weaknesses (unless you are into "kinky" VU style programming like some of these guys who don't know better).
Generally it's a divergence continuing from last generation - PS3 is even harder to code from a pure C++ angle, Xbox 360 is even easier. PS3 will again be only utilized at first by Japanese companies who throw tons of bodies on the graphic engine, Xbox 360 will look pretty darn good out of the gate, even if you're a 10 person team working on the graphics and engine.
http://arstechnica.com/articles/paedia/cpu/xbox360-2.ars/3?56749
Aren't the Xbox CPU's also 2-3 issue, in-order processors and will suffer from the same situation that the PS3 is facing?
http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2379&p=6
According to anandtech, automated cache is actually a very tricky deal for in-order cores. A cache miss will halt processing because the instructions need to be executed in order. I'm assuming that in the Xbox 360 case the programmer will not be able to manage the cache as easily. All three chips, two threads each, will be querying the same cache. Is there a way to ensure that thrashing and cache misses are at a minimum?
http://research.scea.com/research/html/CellGDC05/15.html
http://research.scea.com/research/html/CellGDC05/16.html
In the PS3 case the control is in the hands of the programmer. Each processor has it's own local memory and two pipes. I see a really simple and fairly efficient use of the PS3 situation. Split your local memory in half 128K is for current execution, and 128k is for prefetching data from main memory. (In real life it would more likely be 100K for execution, 100K for prefetching, and 56K for controll flow.) This would mask the 500 cycle "cache miss" that would cripple the processor while it waits for data.
AFAIK because the 360 is also in-order, so this problem is going to exist and will require intervention on the part of the programmer. The 360 also has 128 128-bit VMX/Altivec registers which need custom coding to take advantage of.
I don't think the 360 is going to be simple to code for. The single cache serving 3 processors might be a nightmare, or it could be a walk in the park, I don't know. I would think that each processor needs it's own cache.
Embedded Sea said:
The word on the street is that you will need twice the programmer staff to work on a PS3 title compared to your Xbox 360 SKU. If you don't believe me go look at all these companies scrambling to hire up for next gen.
If you need twice the programming staff (going from 50-100 instead of from 2-4) then you are doing it wrong. What you need is 3-6 low-level gurus that are good at working together and can code up an abstraction layer or an intermediate language which everyone else codes to. If you have 50 people all working on the hardware, you're just begging for an internal meltdown. Step 1) Solidify an abstraction layer. Step 2) 3-6 guys reduce the abstraction layer to machine code, working around all the quirks of the hardware and optimizing the code wherever possible. Step 3) 10-50 guys write the rest of the application on top of the abstract layer.
I am not a game programmer, so maybe I'm wrong. If I am, let me know and explain why so I can adjust my views accordingly.
This really should be a case of divide and conquer. The abstraction layer in the middle is where the problem can be split in half. Video game programming can still be about making games and getting good hardware preformance. Investing in a good abstraction layer upfront is will smooth things out greatly. (Of course the downside to that is that you have to have a good intuition and foresight as to what the abstraction layer should look like. )
AR