Toshiba said today it would offer Cell-based hardware development kits in April 2006. The reference platform comprises Cell and support chips and is geared toward “digital consumer products and communication equipment that draw on the powerful broadband capabilities of the Cell microprocessor” and its “unsurpassed multi-tasking and real-time processing functions”, as Toshiba put it.
I think it is good news if its reasonably priced and accessible to everybody. I also hope they sell a mips64 min-itx design for ther processors for everybody. Their latest mips64 design for multimedia comes at 10000$ (www.linuxdevices.com). Sniff sniff
Doesn’t matter how fast or nifty the design is, if its to much of a pain to develop for the platform. It remains to be seen whether the software piece will be good enough.
Although I haven’t had the chance to play with a Cell yet I’m looking forward to.
The whole ‘difficult-to-program’ thing that various developers have been complaining about is mostly due to them using conventional tools *cough*C++*cough* that are just not suited to programming the Cell and at the same time they are unwilling to try out other options.
I believe functional programming is the way to go.
I believe functional programming is the way to go.
And how exactly is that supposed to help? How does it make use of the SPUs? How does it move data in to and out of the local memories? Is it any better at vectorisation?
Short answer: yes.
Longer answer: in the abscense of side-effects (I/O and state), the compiler can easily figure out what sequences of code can be run in parallel.
For example, in a functional language, in the expression (a + b) * (c + d) it’s safe to execute (a + b) and (c + d) in parallel as there is no side-effects. In an imperative language the same may not be true as you don’t know what else could be modifying a, b, c or d at the same time.
It’s only once you have to deal with state and I/O that the code needs to run sequentially.
Side-effects can still be done in functional languages but they are usually made explicit to the compiler through the type system so it’s easy enough for the compiler to find which sequences have to be ran sequentially.
In theory, you could write a C++ compiler to do the same thing – find chunks of code that don’t interfere with eachother and generate code to make them run in parallel – only writing such a compiler is orders of magnitude more complex then writing a similar compiler for a language like Haskell, ML or Scheme.
Also see http://en.wikipedia.org/wiki/Functional_programming
Short answer: yes.
Yes what?
Longer answer: in the abscense of side-effects (I/O and state), the compiler can easily figure out what sequences of code can be run in parallel.
True, but that doesn’t do anything about the problem of actually distributing computations onto the SPEs with their local memories.
Current functional language implementations assume a linear address space that is managed by a garbage collector. With Cell you’d need a very clever runtime system that can automatically move data and code around the cores. While no-one has worked out how to do that (or whether it’s even feasible), functional and imperative programs are all stuck to the Cell’s central PowerPC unless the programmer manually tells the SPEs what to do.
For example, in a functional language, in the expression (a + b) * (c + d) it’s safe to execute (a + b) and (c + d) in parallel as there is no side-effects. In an imperative language the same may not be true as you don’t know what else could be modifying a, b, c or d at the same time.
Bad example. It’s perfectly possible to parallelise that. The only thing that could be modifying those variables would be another explicit thread, and in that case the programmer would be responsible for appropriate synchronisation anyway. Potential problems only arise when pointers or function calls with side effects or pointers are involved.
Besides, that kind of parallelisation does not take advantage of the vector units.
Side-effects can still be done in functional languages but they are usually made explicit to the compiler through the type system
No, they aren’t. ML’s and Scheme’s type systems have no concept of pure functions vs. functions with side effects. (Haskell of course has no side effects.)
you could write a C++ compiler to do the same thing – find chunks of code that don’t interfere with eachother and generate code to make them run in parallel – only writing such a compiler is orders of magnitude more complex
More complicated? Yes. Orders of magnitude? No. You just have to be more conservative due to pointers, and I wonder how much difference that actually makes in practise.
There’s much to be said for functional languages, but the Cell is not a particular good application domain for them.
It runs ITRON, yet we here so little about the TRON (The Realtime Operating system Nucleus) series of OSs on osnews…
Would love to hear about TRON more often.
So what is the base OS / kernel.
I assume it is a hypervisor (really thin kernel). Is this the Xen in Linux or is Linux running on ITRON or what?
Does ITRON have the capability to be a hypervisor?
No Itron and Linux are both complete operating systems.
Hypervisor is pretty much the operating system running on top of the cell processor in this case, and will allow developers to run both linux and ITRON. This is probably a very good interface to have as you could in theory run a lot of linux on the cell
xTRON is a series of specifications for system interfaces (so there are possibly more than one xTRON implementation).
Too bad, most TRON literature is in japanese
please toshiba send one puppy to Axeld
Well the Cell might be a nice alterenative but as always with a new system where are the applications?
To solve this at least for the OpenSource developers I’ve created wyoGuide ( http://wyoguide.sf.net ) which just allows to write applications almost regardless of their platforms. Just have a look yourself.
O. Wyss
Well the Cell might be a nice alterenative but as always with a new system where are the applications?
To solve this at least for the OpenSource developers I’ve created wyoGuide ( http://freshmeat.net/projects/wyoguide ) which just allows to write applications almost regardless of their platforms. Just have a look yourself.
O. Wyss