Concurrency: "To infinity...and beyond!"
As many of you know Intel’s Developer Forum happened this week in San Francisco. Intel announced that they will have quad-core machines on the market in November and 80-core machines in five years...Slow down there big guy! While quads are something software engineers can understand...80? What operating system are you going to use? Because I can’t think of a one.
John Dvorak has a nice piece on this very subject that you can read here. It’s validating to see my OS concerns echoed by someone with some clout...maybe the hardware guys will listen. Once you’ve gone beyond infinity...who cares? You may get there and realize that’s not where you want to be, because you will find yourself ALL ALONE.
Instead. I suggest that once you’ve maxed out what the available OSs can handle...how about working on getting that power miniaturized? Image the power of quad in a handheld!
John has a great line:
Ah, yes, I'm guessing that only a few people are aware that whether a chip has two cores or four cores or 80 cores only one core can actually be used with most of today's software.
Oh, I’m aware. I’m also aware that many applications that have been designed to take advantage of multiple CPUs... haven’t been thoroughly tested in that environment. Chaos shall reign! The reason for this is that engineers started using threads. Threads are the default concurrency tool because thread support comes with the operating system. But many engineers treat threads as something akin to message queues. Simply as a way to separate the user interface (foreground thread) from the actual algorithms (background thread). So that the user has a responsive experience with the application.
On a single CPU machine these threads have to share the CPU, so only one thread is every really running in memory at a given time. There is no true concurrency happening on a single CPU machine. This all changes as you start adding CPUs. And many applications aren’t going to be ready.
I like John’s idea of the OS dedicating cores to specific applications. The real-time implications of this are staggering. While John is thinking Universal Translator...I’m thinking something that is smart enough to clean my toilet. All I need is some duct tape, a toilet brush, new Lego Mindstorms kit, wireless network, ......