I think you're confusing Hyperthreading (which has existed for a lot
more than a year) with true dual core.
Hyperthreading makes one CPU *appear* as two. Fancy scheduling trickery
essentially allows two different instructions---from two different
programs or "threads"---to be running simultaneously in two different
parts of the same CPU. But all essential resources are shared between
the two "logical" CPUs. There is one physical CPU core---one set of
transistors. Basically, in the P4 core there are times when the
execution units are stalled waiting for memory access to complete or
waiting for one instruction to complete so its result can be used in the
next instruction or waiting for whatever reason. Normally the CPU would
just be idle in those situations. By scheduling instructions from
another thread (which clearly aren't dependant on the results of those
in the first thread), Hyperthreading tries to put those otherwise-wasted
cycles to good use. In other words, you don't have any more clock
cycles to use, you just use a greater percentage of those you do have.
Dual core is two physcially seperate CPU cores. There are two full sets
of transitors that share none of the resources used for executing
instructions. This is very much like having a dual CPU motherboard,
except that it is all contained within one processor chip instead of
having two CPUs and additional logic on the motherboard to make them
play nicely together. It literally doubles the number of CPU cycles
available for program execution. This is what the recent announcements
are all about.
Note that there is no reason why both techniques couldn't be combined.
It is theoretically possible to Hyperthread the two cores of dual-CPU
machine. (Practical issues may prevent that, however.)