[r-t] Hyperthreading [was Exhausted search spaces]
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
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