Why Symmetric Multicore is a Dead End for PCs
Jomo Fisher--There are two kinds of programming problems—those that can run in parallel and those that can’t. There’s no special sauce that can turn an inherently serial problem into an efficient parallel algorithm. Today’s top-end desktop has eight cores spread across two processors. All of the cores are identical and they’re each as fast and feature-rich as their manufacturer can make them.
For the algorithms that can’t run in parallel, having eight cores is like trying to get your Christmas shopping done faster by strapping eight Ferraris together and driving them from store to store. Eventually you’ll give up and just use the one with the most gas in the tank.
On the other hand, for problems that can be run in parallel, it’s better to have many processors than to have a small number of very fast processors. Think of sending out a hundred robot minions on Vespas to Christmas shop for you.
Now imagine a world in which you have one very fast processor and a bunch of smaller slave processors. (author takes out napkin and crayon and starts madly scribbling). Let’s say the smaller ones are just good enough to host something like the .NET runtime or a C++ runtime and to execute a few concurrent ui-less processes. They communicate with each other using relatively slow TCP\IP, they have a modest amount of non-shared read-write RAM (let’s say 256meg), and they have a modest amount of shared read-only RAM so that each doesn’t need its own copy of the runtime. There would need to be an onboard TCP\IP switch to keep the communication relatively snappy.
Let’s crunch some numbers. Today’s Core 2 Quad has 582 million transistors. Let’s say our scaled down Vespa CPU is 21 million transistors—this is half the size of a P4 but maybe still too large for what I have in mind. For simplicity, let’s say our onboard dedicated TCP\IP switch is 10 million transistors—I know this is overkill but let’s just use it for a first-order approximation.
So, for the same cost as today’s top-end we could have 1+48 cores that will run single-threaded code as well as today’s systems and, for parallel problems, is significantly better. Now that’s a machine I’d like to find under my Christmas tree this year.
Update August 23, 2007--I just noticed this. It looks like some smart folks were already busy working on such a thing. Now if we could just get the .NET framework running it>>>
This posting is provided "AS IS" with no warranties, and confers no rights.