Is dual-core better than quad-core?

Let’s hear it for the starved realm of reality.

Multiple cores are all the rage it seems mostly because you demand better performance — as do I but I’d rather not subscribe to unrealistic expectations.

The mindset that more cores are better is far from the truth — this is not a simple case of raw megahertz. Whether additional cores will be beneficial depends entirely on a program’s fundamental intent.

Dividing a process into multiple threads does not mean it will simply run faster. In fact it can run slower.

Generally speaking — and by this I mean for most desktop uses — the initial bump in performance from one to two cores is the greatest multi-core jump one is currently going to see.

Chances are high that you’re running more than one application. With two cores available among these running applications’ processes the overall responsiveness of your multi-tasking operating system is increased.

One of the main reasons for this smoother ride is the running processes don’t need to wait as long after requesting processing time as there’s another processor available. Quad-core isn’t needed for this.

Multi-tasking itself is also given a performance boost. This process doesn’t demand much CPU time however so once again quad-core isn’t necessary.

This is why within a multi-tasking environment as unfortunate as you think it may be a dual-core processor is more than sufficient when the applications themselves can’t take advantage of additional cores.

Of course where several processor-intensive applications are run at once typically you’ll see a linear performance boost with multi-core processors but this is heading into the realm of the workstation.

As an example and for the sake of simplicity let’s pretend we have a single-threaded video encoder. Using this application under a quad-core environment you can encode four videos at once in the same amount of time as a dual-core takes to encode two videos assuming the same video file and clock frequency.

These applications have no need to communicate with each other so they can easily occupy their very own dedicated core. Breaking this processing down to the individual threads of an application which often share constantly-changing data is far more complex.

It isn’t difficult to spawn threads left right and centre. It’s complex because the difficulty is in choosing the areas in a process that will actually increase performance.

There are many applications that are multi-threaded but they don’t really see a real-world benefit from this parallelism — Microsoft Office being one such example. It just isn’t hefty enough to noticeably benefit as spell-checking and Clippy threads don’t exactly push a processor over the cliff (not to be confused with pushing kitchen utensils into Clippy’s eyes).

No doubt you’ve seen the quad-core benchmarks — allow me to gloat by saying I told you so: I told you so.

Ah much better.

Synthetic ideological tests aside in the real world there are currently no benefits on the desktop other than those running a workstation or a server.

The only real-world programs that are benefiting from the quad-core processors in comparison to dual-core are in workstation areas such as media encoding or CPU-bound graphics rendering be it 2D or 3D.

So why then are these applications laughing with four cores but your favourite game is barely forcing a grimace? It has to do with the nature of the data that is being processed. Most of our programs and games on the desktop are procedural or serial in nature.

Each part of the information that these multi-threaded-friendly programs are processing is static and independent of its neighbour. As these parts are separate a completely agnostic thread or group of threads can be spawned. On top of that these types of processes are typically capable of taking up most of the available processing power of an entire core.

This leads to another problem — the need for a program to be able to optimise itself and initiate the right amount of threads based on how many cores are available.

This is much less difficult on a fixed system such as a console as the programmer doesn’t need to make room for greatly varying environments be it one two or four (or more) cores.

An application must be threaded to support its environment. If there are too many threads available you slow down due to a bottleneck of threads waiting for processing time but if you have too little you’re inherently not making full use of the available cores and thus an overkill CPU.

Testing and optimising for each possible multi-core environment greatly increases development time for something which may or may not have a significant performance boost. This is one of the main reasons I’m dubious about quad-core on the desktop which is and will be for a while a very small niche.

So what is it in games and other applications that are otherwise resource intensive that is inhibiting them from a significant performance boost every time another core is bunged onto a system?

As I mentioned the bottleneck is serialised commands that rely on their own or each other’s results before they can proceed. As a result spawning off additional threads helps no one because a bunch of threads are waiting on one thread to finish its job and output a result before another can begin ad infinitum.

See the problem? These serialised commands are not easily avoided if at all in our highly dynamic and procedural desktop applications.

What games have going for them however is a number of categorical processes such as sound graphics physics and AI. Ideally as these processes are reasonably separable to each other each could have its own intensive thread processing away on its own core.

In fact Valve seems intent on convincing the gaming world that quad-core is significantly superior to dual-core because of just this. I’m not convinced that it will be that great but I’ll be excited if proven wrong and Valve releases a game that significantly benefits from four cores as opposed to two.

What’s seemingly being overlooked is that CPUs are much less a deciding factor in the performance of games as are graphics cards. Upgrading the GPU has for some time now provided a far more significant performance boost over the CPU.

Intel Core 2 Quad CPU minus a heat-spreader: Exposed in all its thready nature.

With stream processing picking up support on the GPU — and zipping well past the CPU for speed with its supported processing types — this only serves to make multi-core CPUs far less appealing.

Of course if you just want to be an early adopter that’s your choice. Unless your specific needs on a computer are at workstation-level expect to see a dismal performance boost at best.

I won’t ever say quad-core will never be useful — one can never be certain as to where our ever-evolving processing needs will take us in the distant future. But for a while to come outside of workstation and other niche requirements desktop quad-core CPUs really are damned excessive.

Drop the placebo pill. Reality beckons.