October 13, 2007 // 10:53 pm
- This question has come up in GamePro and also on the new Sony (US) PS3 blog. According to Sony programming the PS3 can be more complex than the 360 but this is due to the Cell having more capabilities. This (sort of) matches what is said in the article and does seem to be a more general consensus.
But is it really true? You do have to put in more effort to get the power out of the Cell processor, there's no doubt about that. I don't think it's necessarily "difficult", contrary to what you might read, very few people who have programmed Cell have ever actually said that, they do say it's more involved though.
Being a chip geek I've looked over the 360's processor and my own thinking is that getting something up and running on it will be easier than getting it running on Cell. The 3 XCPU cores are the same and are programmed in much the same way as a traditional PC processor.
Cell is of course different, the PPE is similar to existing processors (actually, it's based on the same core as the XCPU). The SPEs however are different and are not programmed in quite the same way, programmatically the big difference is the local store, you have to explicitly move data in and out of it. On a normal CPU this is invisible as the cache handles this for you.
However you don't want to just get something to run on either processor. They are both pretty picky and you need to work in order to get the best out of either of them.
Both processors appear to be very different but ultimately they are designed to solve the same problem and both do so in similar manner. While the XCPU does not include local stores it does share a 128 Byte line width and data is always best transferred to and from memory in units of this size - this is exactly the same as on Cell.
Another similarity is the need to move data close to the processor to get better performance. In the SPE's this is done explicitly, in the XCPU it can also be done explicitly by issuing cache commands.
Processing data in stages across different SPEs (stream processing) is one technique you can use on Cell. You can also use the similar technique on the XCPU by locking cache lines and accessing them from a different core. Doing this on a traditional PC processor is difficult if not impossible, it can be done implicitly but because they don't have cache locking you can't guarantee the data is actually in the cache.
The XCPU also has issues the Cell doesn't have. On an SPE you know what data you have because you have to issue the commands to get it. On XCPU this might not be the case, the cache is shared and it can be flushed by a different thread, the data you expect to be there might have vanished. With 6 (or more) threads I imagine that could get pretty hairy.
Getting something up and running on the XBox360 is easier (especially if it's a PC port) but getting the best out of the XCPU is also a pretty involved process. This means that both consoles have a learning curve and as a result games will get better for some time to come. PS3 games will take longer to mature but being more powerful are like to be more advanced.
Whether these games are any good is of course, a completely different matter...