3 ms·
This thing was very hard to use from a practical perspective. The PS3 was a popular console, and game developers had to get the most out of it. I was one of th
by oppositelock 11y ago
This thing was very hard to use from a practical perspective.
The PS3 was a popular console, and game developers had to get the most out of it. I was one of those unfortunate people at times. The PS2's Emotion Engine was already a pain to use (the emotion refers to anger, btw), but the Cell raised my emotions to new levels.
The PPC core was slow and main memory latency was terrible, you had to tune code for memory access, no problem, this was understood problem, though, and workarounds were known, if painful.
Then, you ad this wonderful array of SPE's. You could access five of them, but what are these things? They're really fast vector units with a little bit of local memory - 256k, if I remember correctly, and no access to main memory.
To write code for these things, you use a different compiler, and have to manage the DMA engine yourself to keep their local memory filled with useful input, and to pull out the output. If you're doing streaming computation, you'd basically have to schedule close to 100% ideal utilization of the DMA engine and double buffer data in and out of these things (reducing useful memory to 128k/SPE). DMA had high bandwidth, but also high latency. From the time you initiate a DMA, it was something like 1800 cycles before the first block arrives. This turns into a really complicated memory and latency scheduling problem very quickly. You have to identify specific workloads which you can run asynchronously, and then how to chunk them up for DMA transfers. All this book-keeping work is actually taxing on the anemic PPC core, which has a really difficult times with performance of conditionals.
Bah! Good riddance.