HyperThreading Threads Its Way into Application


Intel is hanging a lot on its HyperThreading (HT) technology. In fact, HT is the focal point of Intel's new line of software compilers introduced recently that the company says will "pave the way for Intel's HyperThreading technology." Indeed, the new compilers will help to allay observers' concerns after Intel failed to have its compilers ready when it introduced its first HT-ready processors earlier this year. Intel has said, for example, that performance gains of 25% are achieved when an application runs on an HT-capable Pentium 4 processor while many of these touted performance gains will hinge on the compiler. Program-wise, Intel's HT, which enables a single physical processor to create a simulated logical processor to run multiple tasks at the same time, will lend greater performance to its 3.06 GHz and faster Pentium 4 processors, independent of clock speed, to a wide range of applications. If Intel's claims indeed hold true, the benefits will be applicable to conceivably any computationally intensive program. That includes high-scale transaction-oriented computing, financial, engineering and scientific digital media, gaming, and special effects applications, or in short, any application that runs the CPU at full throttle with more than one thread. The maximum 25% improvement in performance will be measured by standard benchmarks, such as frames/ second for graphics applications.

HT will not offer noticeable performance gains, however, for non-computationally intensive applications, such as spreadsheets, word processing, or e-mails, which represent the vast majority of applications used by the average Joe consumer. In short, applications will not see performance gains until the HT processor is pushed hard and the application in use employs multiple threads.

Intel describes the main attribute of HT-enhanced applications in terms of multitasking: a programming thread runs on the CPU at all times to maximize CPU utilization. Each process is given a time-slice during which it executes. Creation of a process involves the generation of an address space and the application's image in memory, which includes a code section, a data section, and a stack. Parallel programming requires the creation of two or more processes and an inter-process communication mechanism to coordinate the parallel work. Threads are tasks that run independently of one another within the context of a process. A thread shares code and data with the parent process but has its own unique stack and architectural state that includes the instruction pointer. Threads require fewer system resources than processes. For example, intra-process communication is significantly cheaper than inter-process communication.