Sad to see people like you spreading so much false information around about CPU's. A slower C2D running at 2.4 ghz would outrun a P4 running @3.4 ghz all day long just because of architecture changes. Go look up benchmarks and learn how a CPU actually works instead of going by clockspeed.
Wrong.
You can't optimize the microcode much further than 1 average opcode per clock cycle, and the Pentium 1 already had most opcodes running on a 1 cycle average. Executing one assembler instruction on a 3,4 Ghz CPU takes 294 picoseconds, on a 2,4 Ghz CPU it will take 417 picoseconds that's a 40% faster execution.
The hindering factor were and still are jumps. One step below assembly language the CPU-command is split up in even simpler commands that can be executed simultaneously. Our 1 clock cycle opcode still actually takes 5 or more clock cycles to be done, but meanwhile the execution of the following commands already begins, once this runs, the CPU finishes one opcode per cycle.
The problems are jumps, because the pre-execution of the following commands will be in vain when they are never executed (on assembly level) due to a jump. So after a jump, depending on size of the queue and the opcode in question, the execution of our 1 cycle opcode take the same 3-10 clock cycles it once took on a 386.
To prevent this, the CPU preloads the code from a fixed jump's target, and tries to figure out beforehand where to continue after a conditional jump. The P4E already was pretty well optimized in this regard, so later CPU generation couldn't optimize that much, because there simply wasn't much left to optimize.
At the same time the CPU clock approached the limit where HF-effects play a major role, and where the ever shorter wavelengths of the CPU-clock would make much smaller structures neccessary, so since micro-architecture can't be optimized much further, going multiprocessor was the obvious way out. If only the programs would actually start and make use of it.
To cut a long story short, running a single-thread program, a 2,4 C2D can't even dream of playing in the same leaque as a P4E 3,4Ghz, even a 2,8 Ghz Pentium might outrun it. A multi-thread program is another story, but beyond benchmark programs tailor-made for modern CPU-Architecture you still won't find much multi threading programs, especially not in games that take 2-3 years to develop.
Of course I can (and have done) write an assembly program that forces the prefetcher into dumping its preloaded code all the time, these programs may run better (as in: less slow) on a processor with an even better optimized prefetch algorithm but this is a completely theoretical effect, you'll never see in a real program. In practice, a slightly optimized prefetcher can never make up for a 40% speed advantage.
A 3GHz C2D certainly runs about as fast as a 3,4Ghz P4E but everything else is either a result of a biased benchmark sponsored by CPU-manufacturers, or a demonstration of the possible gain of writing multi-threaded programs.
But we're completely off topic now. If there is still stuff to discuss, let's do it per PM.