The Parallax Propeller
So this (The Parallax Propeller, a multicore microcontroller) was news to me. I'm surprised I hadn't heard about it, as it's been out for more than a year.
Parallax wasn't a company I was paying any attention to. Their products have been a bit like the lame cousin of microcontrollers - the BASIC Stamps are microcontrollers they load a bytecode interpreter and a few other bits and pieces onto. They sell the MCU on a little PCB with a few support components so it's effectively a DIP package.
A Parralax BASIC Stamp module
They're kinda lame because if you've got a project to do there's not much advantage to using a BASIC Stamp instead of going straight to the microcontroller. The STAMPs are expensive and the programming language is naff.
This Propeller though, is something very different. Instead of taking someone else's silicon and writing an interpreter for it, they've designed an 8-core microarchitecture.
Architectural diagram of the Parallax Propeller
It's like an extremely pared-down Cell. It has 8 cores. All cores have simultaneous access to the I/O pins. (The output registers of each core are all OR'd together.) There's a system counter that all cores can read, and there are opcodes for "sleep until the system counter is x". Each core has 2K of local RAM, which is all directly accessible by the ALU, so it effectively has 512 registers.
The cores are very simple, though they do have a pretty complex timer/counter each, and each has hardware for generating composite video signals. That seems really odd to me - why not on just one of the cores and use the die space on the other seven for something else, like a hardware multiplier or an ADC? The cores don't even have any sort of interrupt logic, so any form of input has to be a polling loop.
The chip runs at 80MHz - and will probably work over 120MHz if you push it. Each instruction takes 4 clock cycles, though, so it's on par with common microcontrollers in terms of instructions/second(/core). The pricing of the chip doesn't make it very attractive to mass production - at more than US$12 (US$8 in lots of 1000) The Parallax Propeller about three times what you'd pay for a small microcontroller aimed at the same range of applications from Microchip or Atmel. Without having seen much of what people have done with it, I don't know if the performance justifies the cost.
A Stamp-esk version of the Propeller with mini-USB on board for programming called the PropSTICK USB.
Parallax have done the same, odd bytecode and interpreter thing with this chip. The die has 32k of ROM that includes a bytecode interpreter for a language they've called Spin, which looks like it inherits a lot of the inflexibility that BASIC has. Thankfully there's assembler and C options as well, but it looks like the chip boots into the Spin bytecode interpreting state, so you unfortunately can't avoid dealing with it a little.
The ROM also has a sine table, and forward and inverse base-2 logarithm tables. Most of the 32k is taken up by font glyphs. It's not a pretty font by any stretch but with the video generation abilities of the chip, you could make human-machine interfaces that are quite a step beyond what you usually get with a small microcontroller and an LCD module.
The ROM and 32k of RAM are accessible by only one core at a time. Cores get access in turn. A hub clicks over giving each core equal share of the time. It would have been better if the hub skipped cores that were in the low-power state, but that's the sort of complexity Parallax has avoided.
Parallax still don't seem to have "got it" with their tools, though. They're Windows-only. I think that the most significant factor in the rise of the Atmel chips was the toolchain and the community that thus sprung up. The Arduino shows the same sort of thing - people are creaming their pants over the things not so much because of their inherent features or abilities, but because of the openness and accessibility of the tools.
There is a guy on their forums, however, who has single-handedly been re-creating the compiler and IDE in Python for all platforms. I'm astonished, though, that he seems to be getting no support from the company. He talks about problems he had with the font file (that replicates the glyphs in the chips' ROM) for the IDE. The font file was buggy and he didn't have the rights to distribute it so you have to download it separately to get his IDE working. I don't understand why Parallax wasn't tripping over itself in a rush to get him a piece of paper saying he could use the font. I don't understand why the company isn't tripping over itself throwing money at the guy to get him to work on the project full-time.
An embedded system often has quite a number of tasks it must be performing in parallel. A computer with a standard CPU offloads a lot of the basic tasks to various pieces of specialised hardware, and has the power to run a multitasking scheduler to effectively do multiple things at once. In a microcontroller you often don't have the performance to pull off a general purpose multitasking system, so you have to put all the effort of polling loops and timing into your own code. The Propeller's greatest advantage is that it's trivial to do more than one thing at a time. One core can be watching your controls for user input, one can be handling your display refreshing and update, one can be doing your PID loops, one can be receiving and decoding network data.
So even though the cores are very limited, the idea of a multicore microcontroller is just brilliant. I'd like to see the version 2.0 of this chip with just a few more accessories - something with a hardware multiplier, a branch predictor and maybe UART (for SPI / I²C / CANBus) hardware. I'd like to see the counters have a second comparator so that you can use one to generate more than one PWN signal per counter. I haven't used servos in any of my projects, but it seems that having one core driving more than one output (the counters generating the PWM signals and the core calculating the PID loop) would be very welcome for the type of audience Parallax aims their products at. JTAG and the ability to debug also seems like an important and missing feature.