steve dekorte
about
blog
projects
                            
2008 01 27         MIMD, MISD and the Future

It's good to see the programming community more interested in concurrency, but it seems that few have given serious consideration to what scalable hardware and software concurrency involves.

Current multi-core architectures are MISD (Multiple Instruction, Single Data) and won't scale as the core count goes up as too many cores will be competing to access the same memory. This is sometimes called the Von Neumann bottleneck.

To scale to a large number of cores, architectures will have to go MIMD (Multiple Instruction stream, Multiple Data stream). This is the model that actor-based message passing concurrency systems like Erlang are based on. The internet itself can be seen as one large MIMD machine.

Erlang is often touted as being well suited to multi-core shared memory systems, but it wasn't designed for that - it's actually much more forward thinking. It was designed to run across machines (an effective MIMD architecture). Erlang support for multiple OS threads in a process was added much later and I suspect will be removed again as it becomes irrelevant.

If you're looking for languages or concurrency tools that will scale to the high core count desktop machines of the near future, I wouldn't put stock in MISD oriented solutions such as transactional memory or elaborate functional programming compiler techniques. Shared memory systems simply won't survive the exponential rise in core counts.



www.dekorte.com.sharedcopy.com