It's basically just a fast way to switch between threads. It still only has a single processing ability, but some threads tend to take a long time, either waiting for data from ram, or IO, or timer.
Function calling, or thread switching (basically changing tasks) is the most expensive activity that a CPU undergoes (timewise). It makes sense to implement a fast function switcher in hardware to remove this obstacle.
Hyper threading just provides a hardware method to allow the CPU to quickly switch between two threads. Rather than clearing instructions in the pipeline, it just saves the state of the pipeline and puts it back later
It's actually implemented partially in the motherboard as well.
Implementing hyperthreading in the mobo makes me suspect that hyperthreading is just glorified IO monitoring on the mobo.
Mobo sends an IO-active signal which causes the P4 to saves it's current state and then load a new thread. When IO is complete, the signal goes to zero again and the CPU just feeds the saved instructions back into the pipeline.
Does anyone know exactly how hyper-threading works?