Originally posted by smalMSorry, it seems it was still not simple enough for me!
In a nutshell, here is what HT does:
In a non-HT processor, when the OS stops one process and starts another every 10 ms (preemptive multitasking), it has to save the state of the process that was stopped - this means saving the address of the next instruction to be executed, the contents of all of the registers and flags, and the contents of the stack. Then the same data for the process to be executed next has to be restored from where it was when IT was last interrupted. All this data moving is part of what is known as a context switch.
HT circuitry makes it possible for the processor to just switch to using a second set of registers, stack, and flags, making the context switch transparent. There is only one set of execution units, but there are 2 complete sets of context switching circuitry. So the processor behaves as if there were 2 separate processors, or at least it APPEARS that way to the operating system, since the OS does not have to move all the data around every time a new process is resumed.
So HT really doesn't allow 2 processes to run simultaneously; it just makes it very fast to switch from process A to process B, and it makes the OS think that there are 2 cores, when in fact there is only one computational unit - just circuitry to hold context information for 2 threads at once.