On Feb 20, 2012, at 5:49 PM, Alexey Toptygin wrote:
What if you
could map Erlang processes to it? There are many industrial and general purpose Erlang
programs now. It thrives on low-latency message passing between as many cores as possible.
Sure, you can do that. And GreenArrays chips can run Forth really well. But, given XCore
hardware and x86_64 hardware that costs the same, can XCore outperform x86_64 running that
same Erlang code?
Maybe not outperform, but (as has been mentioned before) sometimes it's a matter of
having to fit in a size/power/heat envelope. Sure, you could bring the hammer down with a
Core i7 Xeon or 4 (that's what we did with our application; 32 cores of Nehalem
goodness), but you'll burn almost a kilowatt doing what works in a hundred watts for a
more purpose-built chip just for the sake of going with COTS hardware.
Or, if you're going smaller, it means you can fit it on an AMC card (which has a power
budget of 35W). It's also a question of application; there are a lot of things people
use DSPs for these days when there's no reason they shouldn't be using an FPGA,
but there's also lots of idiots (usually in management) who specify an FPGA because it
"sounds cool" when they really should be using a CPU, particularly for
networking. In cases like that, manycore CPUs are really handy, because you can just
dispatch each incoming packet to a CPU.
And, even more importantly, are there compute taks
that can't be done quickly on x86_64 in any language, but can be done quickly on
XCore?
Probably not, but again, it's a matter of application constraints in a lot of cases.
- Dave