Subject: [FAQ] http://en.wikipedia.org/wiki/Hyperthreading
From: "Max Power" <mikehack@u.washington.edu>
Date: 12/12/2005, 13:03
Newsgroups: alt.sci.seti

FAQ : http://en.wikipedia.org/wiki/Hyperthreading

Hyper-threading, officially called Hyper-Threading Technology (HTT), is 
Intel's trademark for their implementation of the simultaneous 
multithreading technology on the Pentium 4 microarchitecture. It is 
basically a more advanced form of Super-threading that first debuted on the 
Intel Xeon processors and was later added to Pentium 4 processors. The 
technology improves processor performance under certain workloads by 
providing useful work for execution units that would otherwise be idle, for 
example during a cache miss.

Performance
The advantages of Hyper-Threading are listed as: improved support for 
multi-threaded code, allowing multiple threads to run simultaneously, 
improved reaction and response time, and increased number of users a server 
can support. According to Intel, the first implementation only used an 
additional 5% of the die area over the "normal" processor, yet yielded 
performance improvements of 15-30%.

Intel claims up to a 30% speed improvement compared against an otherwise 
identical, non-SMT Pentium 4. The performance improvement seen is very 
application dependent, however, and some programs actually slow down 
slightly when HTT is turned on. This is due to the replay system of the 
Pentium 4 tying up valuable execution resources, thereby starving the other 
thread. However, any performance degradation is unique to the Pentium 4 (due 
to various architectural nuances), and is not characteristic of simultaneous 
multithreading in general.

Details
Hyper-Threading works by duplicating certain sections of the processor-those 
that store the architectural state-but not duplicating the main execution 
resources. This allows a Hyper-Threading equipped processor to pretend to be 
two "logical" processors to the host operating system, allowing the 
operating system to schedule two threads or processes simultaneously.

Where execution resources in a non-Hyper-Threading capable processor are not 
used by the current task, and especially when the processor is stalled, a 
Hyper-Threading equipped processor may use those execution resources to 
execute the other scheduled task. (Reasons for the processor to stall 
include a cache miss, a branch misprediction and waiting for results of 
previous instructions before the current one can be executed.)

Except for its performance implications, this innovation is transparent to 
operating systems and programs. All that is required to take advantage of 
Hyper-Threading is symmetric multiprocessing (SMP) support in the operating 
system, as the logical processors appear as standard separate processors.

However, it is possible to optimize operating system behaviour on 
Hyper-Threading capable systems, such as the Linux techniques discussed in 
Kernel Traffic. For example, consider an SMP system with two physical 
processors that are both Hyper-Threaded (for a total of four logical 
processors). If the operating system's process scheduler is unaware of 
Hyper-Threading, it would treat all four processors the same.

As a result, if only two processes are eligible to run, it might choose to 
schedule those processes on the two logical processors that happen to belong 
to one of the physical processors. Thus, one CPU would be extremely busy 
while the other CPU would be completely idle, leading to poor overall 
performance. This problem can be avoided by improving the scheduler to treat 
logical processors differently from physical processors; in a sense, this is 
a limited form of the scheduler changes that are required for NUMA systems.

Security
In May 2005 Colin Percival presented a paper, Cache Missing for Fun and 
Profit, demonstrating that a malicious thread operating with limited 
privileges in theory permits monitoring of the execution of another thread, 
allowing for the possibility of theft of cryptographic keys.

The future of Hyper-Threading
The future of Hyper-Threading is not bright. With Intel shifting its 
priority in processor design to energy efficiency and multi-core instead of 
single-core performance, Hyper-Threading seems to be a dead end. 
Hyper-Threading consumes about the same amount of power as an additional 
processor core, even though adding the technology only offers a fraction of 
the performance increase compared to adding another core to a processor. 
Thus, Intel has decided to relegate Hyper-Threading to a feature used to 
separate top of the line enthusiast processors from mainstream processors. 
This is demonstrated in the difference between the mainstream Pentium D 
which does not support Hyper-Threading and the top of the line Pentium 
Extreme Edition which does support Hyper-Threading.