Entroper said: I think if you're going to write code for a platform with 8 processors, you should design your engine with parallelism in mind. |
Sorry, I already have worked on the Cell. You must not see it as a plattform with 8 processors. The SPUs are no full processors but more like special dedicated coprocessors. While the SPUs can interact with each other, to work as a pipeline for example I don't think that this kind of approach is really advisable in environments, where reaction time is critical, like in games.
SPUs are no typical cores of a multi-core processor, instead they have their own needs and capabilities. I would normally agree with you that for performance reasons you would like independend cores, that interact with each other, although debugging would get VERY hard, but at least in my understanding this was never the world of the Cell. Things like autobalancing that happen in multicores all the time, are not easily available.
The Cell was designed with special applications in mind (low cost cluster computing, one chip multimedia workflow), but never for general purpose applications. If they don't work primarily on their local memory they get quite inefficient. So you are much more fixed for small processing intensive tasks, while a direct interaction with multiple other SPUs becomes difficult, it gets much easier if they use the PPE as a kind of "man in the middle". I aggree, this does not sound very effcient, but I think this is the best approach on a Cell. In my opinion the Cell is not a processor, that you should put into a gaming console.