Wow, it is really unbelievable, what some people write here obviously without knowing anything about the matter.
One important thing is, that having two threads is in no way a substitution for having two cores. If you have two threads, you can execute the second thread in the time your first thread has to wait for example for a memory transaction to end. So you can mask many "work breaks".
It doesn't miraculously execute two bits of program code simultaneously as if running on two cores. You often have two caches etc., but the used pipeline is the same and can only be used by one thread at a time. It never completely doubles the performance and on heavily optimized code it gives almost zero performance boost.
So don't act as if a 3-core processor with multithreading substitutes a 6-core.
Another thing, of course you can call the SPU a core. And no, it's definitely not the same thing as in a graphics card. Sure, they both use SIMD, but every CPU today has some kind of SIMD implementation (for example Altivec on PPC or SSE on Intel processors).
The SPU can run almost any code, but it is much more efficient when running SIMD optimized code. You have to avoid branches and if you really want to code fast, you have to do at least double buffering etc... yes, its sometimes hard to code for it, but it is more than possible.
And there are reasons for it being in-order etc. They didn't thought: "Oh, let's dumb down our processor!" If you want so know about some of their design decisions and why they did it the way they did, take a look at following links.
http://www.power.org/resources/devcorner/cellcorner/CellTraining_Track1
The first talk gives a really great overview.
http://www.research.ibm.com/journal/rd/494/kahle.html
That's for the people prefering to read about it.
Log in to comment