Introducing Hyper-Threading

There are a number of reasons that execution units aren't always used. Generally speaking, if a CPU isn't able to get data as fast as it would like (a result of FSB/memory bus bottlenecks) then you'll see a drop in execution unit utilization. Another reason, and the issue we'll be talking about today, is a lack of ILP in most execution threads.

Currently the way most CPU manufacturers improve performance within a CPU family is by increasing clock speed and cache sizes. In the case of our hypothetical CPU, doing either or both of those things would improve performance but we're still not using the CPU's full potential. If there was a way for us to execute multiple threads at once we could make more efficient use of the CPU's resources; this is exactly what Intel's Hyper-Threading technology does.

Hyper-Threading is the marketing name applied to a technology that has been around outside of the x86 realm for a little while now - Simultaneous Multi-Threading (SMT). The idea behind SMT is simple; the single physical CPU appears to the OS as two logical processors but the OS does not see any difference between one SMT CPU and two regular CPUs. In both cases the OS dispatches two threads to the "two" CPUs and the hardware takes it from there.

In a Hyper-Threading enabled CPU, each logical processor has its own set of registers (including a separate PC) but in order to minimize the complexity of the technology, Intel's Hyper-Threading does not attempt to simultaneously fetch/decode instructions corresponding to two threads. Instead, the CPU will alternate the fetch/decode stages between the two logical CPUs and only attempt to execute operations from two threads simultaneously thus addressing the problem of poor execution unit utilization.

Hyper-Threading was officially announced at the Intel Developer Forum last fall and it was demonstrated running on a Xeon processor performing a Maya rendering task. In that test the single Xeon with Hyper-Threading enabled was 30% faster than a regular Xeon CPU. The performance benefits were definitely impressive and even more exciting was the unspoken fact that Hyper-Threading is actually present on all Pentium 4 and Xeon cores; it is simply disabled.

The technology has not officially been debuted on a CPU yet however those that have purchased the new 0.13-micron Xeon processors and used them on boards with updated BIOSes may have been surprised with an interesting option - to enable/disable Hyper-Threading.

For now, Intel will be leaving Hyper-Threading disabled by default but all that is necessary in order to enable Hyper-Threading is the presence of a BIOS option to control it. This is only for the workstation/server side of things, for the desktop market there won't be any official mention of Hyper-Threading in the near future although it may be possible for a motherboard manufacturer to enable control via a special BIOS.

But the real question is why would Intel want to leave this performance-enhancing feature disabled?

Face it, we're inefficient Understanding Hyper-Threading: It's not a perfect world


View All Comments

Log in

Don't have an account? Sign up now