a bit of an update:
I've looked over most of the PICs and dsPICs on microchip's site, and tried to find the best ones that satisfy a few criteria that I think are important to the 'building your first supercomputer' project.
Here they are for the ideal case:
- ideally, a large amount of program memory
- large amount of RAM
- hardware-supported communications protocol (like IÂ²C) so that the processor can spend more time processing and less time worrying about the low-level specifics of communicating
- processor should be as fast as possible
- ideally, some math functions supported in hardware (such as multipliers, dividers, shifting, etc).
- low pin count, easily managable package (eg. DIP)
- low cost so that many can be combined
- relatively easy to program with a low initial investment in programming hardware
Some of these criteria relate to the performance and capabilities of the cluster (such as program memory size, RAM, communications, speed, math support) where as others relate to aspects of building it (such as the package, cost, and programming hardware).
The microcontroller that sofar tops my list is the dsPIC30F3012, which is a 30 MIPS (max) microcontroller with 24K of flash, 2k of RAM (also 1K of EÂ²PROM), with onboard IÂ²C support (both the 7- and 10-bit addressing versions) and is available in an easy-to-use 18-pin DIP package. It also includes a 16-bit hardware multiplier (and divider) that supports both integer and fractional representations, which is really handy. (I hope that with some fancy register shifting one might be able to relatively easily increase this to a 32-bit multiplier, it just would take a few clock cycles instead of one). Ontop of all that there's some timers and ADC stuff, but I don't really envision using the ADC capabilities unless there are some thoughts of actually using it to acquire data sometime down the road.
It looks as though the processors can be purchased in small quantities for ~$5 per unit, and programming hardware (an Omliex IDC2) would be on the order of $100.
So far this looks to be the best option combining an accessable package (DIP) with speed and functionality, although to be honest I would feel better if there was more than 2k of memory. I had the thought that one could probably increase the amount of storage per microcontroller by adding a small flash memory, but that would likely be much slower to acess than the onboard SRAM...
Any thoughts? any other suggestions?