Choosing Dual or Quad Core

Hi, first time poster here. I like the blog, very interesting and thought provoking (although I don’t always agree!).

I think the problem with current software and multicore CPUs is the threading model the OSes use. It’s not easy to scale threads dynamically, let alone load balance them. I’ve been toying around with the idea of a system based on small chunks of work which are given to whichever processor is free - i.e. a single queue with multiple servers. It’s not easy. Incidentally, I came up with the idea whilst working on PS3 hardware.

Skizz

The implications of quad and more core processors are limitless.

Someone above said how they couldn’t imagine games taking advantage of multi-cores. How about ‘bad guys’ running in one process (ie: on one core) and you/good guys running in another? Talk about awesome AI. They could respond and learn in real time. How about running a game ‘server’ locally while multiple people are connected to you?

As far as these benchmarks they’re silly. someone already said it but…

Yesterdays software on tomorrows technology. It just doesn’t matter much. I guarantee you there are aspects of almost every piece of software that could be improved by spreading the workload across multiple cores.

It is physically impossible for single-core processors to execute more than one instruction at a time. With the theoretical ceiling of clock speed fast approaching this means we may be at our limit of speed… but WAIT! we can now process more than one instruction at a time due to multiple cores (CPU’s).

How about multi-tasking? how did the quad core hold up against the dual core when doing 4 things at once? how about the quad core vs the dual core with hyperthreading?

Burning a Disk, Encoding a DVD, Playing FarCry and streaming music via Rhapsody?

Those are the sort of comparisons that show the true potential of the multi-core processors. We will eventually hit a core-ceiling where it just doesn’t make practical sense to go further but just like the clock speed was 15 years ago that’s a long way off.

I say bring on the Cores!

I have yet to see a single game that shows anything close to the kind of scaling that we regularly see with rendering or encoding.

Main gaming platforms (Xbox360, PS3) have been multicore for quite some time (XBox has 3 cores/6 hw threads. PS3 has a PPU and 6 SPUs). Most of the games these days are multithreaded on these platforms, simply because they have to be in order to survive! “Free GHz ride” never existed on consoles.

Erlang fanboys think their software uses multiple cores, but in fact you need to have multiple Erlang interpreter processes running to do that. The code to start Erlang processes in different native processes is different to just starting them in one process, and Erlang cannot move its processes from one native process to another it one is busy and the other is idle.

If Intel is going to be pumping these XX-cores out, I’d imagine their friends at Microsoft and elsewhere would feel a push to writing software to fully utilise these cores so people will still enjoy faster experiences when buying their shiny new computers.

Else I’m sure word would get around pretty quickly, from friends and family, that those new XX-cores on the TV from dell aren’t much faster than the box under their desk.

What about statistical software - “GNU R project” and such - these are the power-hungry applications and they are used by universities, who are always trigger happy to upgrade (and waste money in the process).

The noises coming from Intel for their 45nm process generation suggest that they may have cracked the leakage current problems that plagued the 90nm and 65nm generations, which I believe was largely the reason that the clock speed couldn’t be ramped up (without causing massive heat dissipation problems).

If they really have fixed it, we could start seeing clock speeds going up again, although we might see lower-voltage, lower-power parts at current clock rates as well. Of course, now that multi-core has been introduced, it won’t be taken away - the transistor budget for an out-of-order superscalar processor core is already well below the number of transistors it’s possible to put on a chip-sized piece of silicon, so those transistors are effectively going free. What else are you going to do with them, add even more cache?

Jeff,

One can try OpenMP from http://www.openmp.org to parallelize C/C++ applications. I’ve never tried it, but it would be a cool blog to test it out.

Kashif

I just like the idea that I wouldn’t have to worry about my processor getting bogged down by background tasks while I’m gaming. On the other hand, I can’t think of a lot of things I’d want to do in the background that wouldn’t be using much more precious game resources, like networking and RAM…

My experience so far with the Dual Cores is that they’re impressive when compared with a single core, but not so impressive that I’d avoid going with a quad core on a gaming rig, even if just playing a game doesn’t stress all 4 cores. I’d rather have the extra overhead available and stop spending so much time optimizing my gaming systems, especially when it looks like many of the actual game benchmarks are making good utilization of 2 of the available cores (something you wouldn’t have been able to say of a dual CPU system 5 years ago).

By the time I can afford the quad-core systems, someone will have figured out how to get some use out of it in the big 3 game engines (and many of the others).

If I were you I would repeat DivX 6.6.1.4 test to make sure multi-threading is enabled (not by auto but by setting the number of thhreads manually in encoder properties). I am not sure what you used as a host application but I suggest VirtualDub.

Lame test is also suspicious, I would repeat that too.

Quake 4 should (obviously) be tested with MT patch.

Photoshop is generally a bandwidth bound application. You need to make sure that you perform operations which are not bandwidth but compute bound to see the effects of more cores.

Add some audio processing application (Sonar or Cubase + many VST software synths and effects come to mind). Sound Forge 9.0 too, then flac or MonkeysAudio lossless compression.

Two things:
1, Quad Core 2.4 Ghz prices are roughly comparable with Dual Core 3.0 Ghz, so you would expect similar performance. You’d also expect older application that weren’t built with parallelism in mind to not take full advantage of the full complement of cores. That’s likely to change drastically over the next 18m - 2y.

2, From memory the 2.4 Ghz Quad is far more overclockable than the 3.0 GHz Dual (all other things being equal) - indeed, in your own blog : http://www.codinghorror.com/blog/archives/000908.html : you overclocked a Quad to 3.0 GHz. I’d be interested how a 2.4 clocked to 3.0 fared in the comparisons.

@Asd
Erlang fanboys think their software uses multiple cores, but in fact
you need to have multiple Erlang interpreter processes running to do
that. The code to start Erlang processes in different native processes
is different to just starting them in one process, and Erlang cannot
move its processes from one native process to another it one is busy
and the other is idle.

That is not entirely true.

The Erlang VM automatically starts a thread for each core, each of which handles execution of one of the upcoming scheduled Erlang processes. Erlang code which have been written with concurrency in mind (that is, several processes that do different things at the same time, which is normal procedure in Erlang) will scale perfectly well on multi core systems without any modification at all.

See:
http://www.ericsson.com/technology/opensource/erlang/news/archive/erlang_goes_multi_core.shtml

That’s nice… generalization based on one type of multi-core CPU.

How much of this is directly due to:

1 - non-parallelized code (granted, this is acknowledged)

and

2 - bus saturation

Cross comparisons using only parallelized code between different multi-core architectures PLEASE!

Well it is at least good to see that Valve has their code going in the right direction. Let’s hope that makes TeamFortress 2 that much more fun!

As for compile speed, disk is still the slow part of that process. I would rather have an SSD for a build drive any day for their high I/O per second compared to spinning platters. Processors, dual or quad, are still so far ahead of storage it is sick. Even tons of RAM for cache didn’t seem to help our builds with disk continuing to be the bottleneck.

Even large scale vm systems are using multiple host adapters and more to get a performant virtual array that doesn’t choke the vm. In fact an HBA per vm is not uncommon to get speeds acceptable.

And like another poster saidi the cost difference is so low why not just get the quad.

your data seems contrary to something the inquirer posted this morning

http://www.theinquirer.net/default.aspx?article=42114

This suggests that infact lost planets performance increases considerably with a quad core compared to a dual core

I believe that most of the next batch of games will take advantage of quad-cores. Bioshock already uses about 50-60% of each core in my quad Q6600. It probably means it would run about equally well at 100% in a dual core, but still, it parallelizes remarkably well.

Game developers are way too addicted to adding cool stuff into their games for them to ignore a source of computing power for long. They will eventually find something to take advantage of it. Take for instance how Valve’s Gabe Newell went from complaining about the enormous difficulty of programming for multiple cores to loving quad-cores:

http://www.next-gen.biz/index.php?option=com_contenttask=viewid=510Itemid=2
http://www.extremetech.com/article2/0,1697,2050558,00.asp

So, I can’t be sure of how much will games take advantage of quad-cores in the next year, but I don’t think it’s a bad moment to get one.

“Their answer? H.264 blu-ray video playback while “doing something else”. Lame. How do you watch a movie and do something else at the same time?”

Well… not that I disagree with the article, but I do this all the time. I’ll catch up on a TV show or watch a movie while I’m doing some photo editing. Lightroom Photoshop on one monitor, player on the other.

One thing about LAME encoding: I realize they were evidently using a multithreaded version of LAME, but even single-threaded LAME can see an increase, as you can run multiple instances of it. Not “real” multithreading, but I use foobar to convert things to MP3 all the time, and it spawns as many LAME instances as I have threads, and the speedup from a C2D to a C2Q was huge; not perfectly linear scaling, but a large increase.

Somebody should compare dual vs quad core performance advantages using development tools such as Visual Studio 2005, SQL Server 2005 (Analysis, Reporting, etc., Services) and running multiple instances of Virtual Machines (VMware and/or Virtual PC). This is more meaningful to many of us who use computers for a living… yes we do play games and encode audio/video but we spend more time developing applications.

I myself am wondering whether there is any advantage in going quad core using these dev tools… or whether I am just wasting electricity (quad cores are rated 135 watts vs 65 watts for dual cores) generating heat by running one.

there’s also multi threaded applications designed to run certain aspects of a program on a certain core, that should significantly increase performance IMO