Ahh. This old one. Let's try and straighten it out once and for all (this is something I'd whack in the wiki if it existed
)
First off, note that in the following example I'm assuming that the two processors I'm talking about are of the same type - i.e. assuming that we can take frequency as a comparative measure of speed across the two. For obvious reasons this isn't always the case!
Let's just get one thing out the way to start with. It is completely and utterly incorrect to say that (for example) a 1Ghz processor with 4 cores is the same as a 4Ghz single core processor. The two processors above would behave very differently; unfortunately a single threaded task can't just be automatically multi-threaded across a few cores. Anyone who tells you it can has been misinformed - there's been a lot of research into this area and no-one's turned up with any acceptable results. If you take a single threaded application and run it on a 1Ghz 4 core processor, it'll be pretty much the same as running the thing on a 1Ghz single core processor - it's not going to split itself up and run at anywhere near the same speed as it would on the 4Ghz machine.
However, a 4 core 1 Ghz processor does
potentially have the same amount of processing power as a single core 4Ghz processor. Note the very careful wording of the above sentence. If you've got 4 applications and run them all on the 4 core, then they would run at roughly the same speed as the faster single core. By that same reasoning, if you've got 1 application that splits its load near equally across 4 or more threads, then it'll run at about the same speed on both processors.
The problem is very few applications at the moment are properly multithreaded. Most are still written in a single thread and even those that claim to be multithreaded generally don't split the load anywhere near evenly. Often it'll just be a task that's sitting idle on a core 90% of the time until something on another core kicks in and asks it to process something - not particularly ideal.
One answer to this issue is
proper concurrent programming, where all (or at least most) of your code is written in a way that inherently uses multipule threads to do its job, even at the smallest levels. Take a look at
occam pi - it's a completely different way of coding but one that adheres to this philosophy and is therefore scalable to many, many cores (reaching into the thousands sometimes.) These individual processes can be executed just as easily one after the other on a single core system, or concurrently on a multi core system.
To sum up, single core and multi core processors are not equivalent at all and never will be. Anyone trying to say they're the same is quite frankly wrong. It is however correct to say that the
potential processing power of a 1Ghz quad and a 4Ghz single core are similar - but
in real world use, this potential isn't yet being fully utilised.
We'll get there eventually, but it'll probably require a whole new generation of programming languages and a whole new shift in thinking. Unfortunately it's not an overnight thing - and we're not there yet.