I came across this post on the APC site today (posted 25th August 2006) which suggests that the introduction of quad core processors is overkill at the moment. The general gist of the article is that quad core processors are overkill for most users today.
Personally I think that it is one of those “it depends” things. To understand why quad core processors might not make much of a difference to your current stable of desktop applications you need to understand what dual core processors did for the desktop – and from there you can begin to understand the kinds of applications that will be able to leverage an increasing number of processors looking forward.
Why dual cores help desktop applications?
Desktop applications on modern applications are multi-threaded beasts which means that they have multiple logical threads of execution, and the runtime and operating system decide when each of those logical threads of execution get a slice of dedicated processor (or core) time.
Usually with a desktop application today there is one thread dedicated to serving up the user interface, one or more threads dedicated to managing memory and performing background housekeeping functions (depending on whether you are running on a runime, and what that runtime is) and zero or more threads specifically started by the developer to perform background processing tasks.
On a single core machine you can only do one of these at a time so if memory management is taking a long time then the user feels it because the UI stops responding. A dual core machine instantly reduces this contention on processing resources and so desktop applications almost by default benefit from having the two cores to spread load across (not to mention sharing that resource with every other part of the operating system).
Quad Core and Diminishing Returns
So if dual core machines make desktop applications better, why doesn’t a quad core processor have double the effect? Well the reality is that it probably does, but even with a single core processor things were OK – a dual core allowed us to do two things at once, and with a quad core – well, we are running out of useful things to do with that extra capacity – but that is desktop applications.
What kind of software can take advantage of the increasing number of cores? Well there are a couple obvious ones like computer games with a large number of independent actors – those kinds programs need oodles of processing power and the way they are implemented today is through a number of less than obvious hacks which make the maintainability of code harder.
Scientific applications like Mathematica will also be able to take advantage multiple cores because its algorithm breaks down an expression and operators on each of its elements in parallel. In essence this is what guys like Joe Duffy are going to be trying to bring to mainstream development.
Personally I’m looking forward to a day when counting the number of cores you get on a processor is about as useful as quoting the size of a disk in bytes. I’m sure we will be able to come up with something to do with all that processing power :)
In the meantime quad core processors will make our computer as a whole more responsive, even if it doesn’t make a huge difference if we focus soley on a single application.