In part one of this article, we rolled out a long and, some might say, compelling list of reasons why multi-core is the best long term bet for increasing PC performance.
But that's just one side of the argument. Now, we look at the problems, the challenges and the doubts that surround the rapid rise of multi-core PC processors.
1. Isn't dual-core plenty for multi-tasking?
Make the move from single to dual-core and the benefits in terms of overall system responsiveness are obvious. But the upgrade from dual to quad-core is much more subtle for all but the most demanding users. In this context, it's easy to imagine that tomorrow's eight-core chips will be sitting largely idle as typical users engage in undemanding office and web applications.
2. Application support remains patchy
The fact that Firefox can often hang and hijack the resources of a whole CPU core is a good example of why quad-core processors can keep on trucking in almost any circumstance. But the browser itself is also one of the most high profile single-threaded laggards. You can add as many cores as you like, but Firefox will only take advantage of one of them. Until all commonly used software is properly multi-threaded, multi-core CPUs won't fully deliver on their lofty performance potential.
3. There's no hope for most legacy code
Software developers are beginning to get to grips with multi-threading. But there's billions of lines of existing single-threaded code out there. And the vast, vast majority of it is going to stay that way.
4. Even multi-threaded applications don't automatically scale well on multi-core chips
If that sounds odd, then the explanation is a simple one. Many "multi-threaded" applications are in fact only dual-threaded. That's fine for the current crop of dual-core processors... but it makes the addition of further processor cores pretty pointless.
5. Coding multi-threaded software is not easy
In fact, it requires a totally new approach to software development. Difficult problems arise with the parallelisation of software, most notably data contention - essentially multiple threads fighting over access to shared data sets. Problems is, most existing programmers grew up thinking about coding in a serial fashion. It will take time, and perhaps the the arrival of a new generation of parallel-savvy coders, for multi-threaded software become the norm.
6. Some applications are inherently "serial"
At the '07 instalment of the Game Developers Conference, Valve Software's Tom Leonard jumped up on stage and delivered a talk titled "Dragged Kicking and Screaming". Needless to say, he was was referring to the challenges his industry was facing in the move to multi-core. According to Leonard, some applications including gaming are essentially serial problems that do not lend themselves easily to parallel processing. New programming paradigms such as "hybrid" threading are being developed as potential solutions. But it is not going to happen overnight.
7. Multi-core hardware is developing too fast
Even Intel admits that the pace of multi-core hardware development is proving a big challenge for software developers. As Intel Fellow Shekhar Borkar conceded earlier this summer, "software has to double the amount of parallelism that it can support every two years." That's a huge challenge, "probably the single most disruptive thing that we will have done in the last 20 or 30 years," according to another senior Intel suit, namely CTO Craig Mundie.
8. Microsoft admits that Vista is suboptimal for multi-core
Microsoft's client operating systems have never had the most fabulous thread management. And Vista is not a whole lot better in that regard. Specifically, Windows is unable to distinguish between a physical and a logical processor cores. That's becomes a problem in the context of CPUs with multiple cores each capable of handling more than one software thread.