[r-t] Hyperthreading [was Exhausted search spaces]

Mark Davies mark at snowtiger.net
Sat Feb 6 11:05:12 UTC 2010

Yes, hyperthreading definitely doesn't "split the processor in two", or 
reduce resources allocated to a single thread.

All it really does is provide another set of registers, so that the 
state for a second thread can be maintained without needing an expensive 
context switch. Then, it is able to allocate existing processing 
resources (instruction decoders, ALUs, branch prediction circuitry etc) 
to the second thread when they are not being used by the main thread.

There are no additional execution units on the chip, so fundamentally 
it's just another way of keeping all the ALUs running all the time. If 
you had only one thread running on your machine (e.g. SMC32) you'd see 
no difference with it on or off. However, there are always other things 
going on, e.g. Windows services or other background processes, even if 
you have no other programs open. Without hyperthreading, when another 
process is scheduled for runtime, a context switch must occur, after 
which the original thread (SMC32) is completely stopped for the next 
time slice.

With hyperthreading enabled, other processes are more likely to be 
scheduled to the second, "virtual" thread, and SMC32 will continue 
(nearly) full bore whilst they are running.

So I think you've definitely got the wrong idea Simon: turning off HT 
will make things worse, not better. To be fair though, if you're only 
running SMC32, I doubt you'll see much improvement switching HT back on. 
An old motherboard is more likely to be the problem, as you say.


More information about the ringing-theory mailing list