Splash: HyperThreading does not mean one CPU that's really two. I know it's confusing especially when the windows device manager will show a single HT CPU as two CPU's but when it comes down to it, that is a long way from the truth.
Here's a 'laymans' terms quick summary of what HT is:
A HyperThreading Processor is a processor that contains two sets of internal registers. What are internal registers you ask? Well, a register is the tech term for a single memory cell. In the case of CPU's they have a number of internal registers (inside the processing part of the CPU itself)that are used to store information about what the CPU is doing right at any particular moment. They hold things like the current position within the active program that the CPU is up to, data to be manipulated and addresses of memory where results of calculations are to be stored etc. On a multitasking operating system like windows where lots of programs "appear" to be running at once these registers are constantly being dumped to cache and switched in with new data. All these programs are not actually running at the same time. Each "running" program is given tiny slices of time to use the CPU. When a particular program's turn comes around the CPU will dump the current state of the registers to cache and load from cache the last state of the registers as they were when the last time slice this program had was up. The program does its little bit of work and then the CPU dumps the registers again and loads up state data for the next program in its list. This happens so fast that to you, the user, it appears that all these things are happening at the same time.
Disclaimer: for all you techies out there that are saying "but there's a lot more to it than that" yes you are right but we are trying to keep it simple here, bringing program jumps and the stack into this is unnecessary.
Ok, so what does this have to do with HyperThreading? Well, as I said before HT CPU's have two sets of internal registers which means that it can keep in real internal registers the status of two different programs at once. What this means is that there is less time spent dumping data to the cache and so the time taken to switch between different programs is reduced. Thats it, ok so its a bit more complicated than that, but that should give you the general idea of what goes on.
In summary HyperThreading does not give you additional processing power as is the case with a Dual CPU system (which *can* actually do two things at the same time), it merely aims to make use of the available power more efficiently. It's aim is to improve multitasking performance and squeeze just a little bit more power out a single CPU by reducing some execution overhead. Nothing more nothing less. Simple aye?