Een thread is een stukje programma dat in een eigen geheugenruimte draait en als een geheel op een CPU uitgevoerd kan worden. Sommige programma's bestaan uit één thread en andere bestaan uit verschillende threads. Besturingssystemen zoals Windows 2000 en Linux gebruiken een mechanisme, de taskscheduler, dat de verschillende threads om de beurt een stukje CPU tijd geven. Het eindresultaat is dat er meerdere programma's en dus threads tegelijker tijd kunnen draaien, multitasking dus.
HyperThreading is de naam voor een truukje dat Intel in de Xeon 4 en de aangekondigde Pentium 4 die op de Prescott core is gebaseerd wordt gebruikt om efficiënter met de verschillende executie units van de core om te gaan. Het bleek namelijk dat in een normale Pentium zonder HyperThreading gemiddeld 35% van de executie units niets te doen hebben. Met andere woorden, er zit dus 35% meer performance in de Pentium 4 processor. Met behulp van HyperThreading is het volgens Intel mogelijk om deze 35% onbenutte capaciteit te gebruiken voor een andere thread dan die wat er op de CPU draait. Het besturingssysteem ziet dus in feite twee logische CPU's.
In het ideale geval kunnen er dus twee threads op een Xeon 4 of Prescott Pentium 4 worden uitgevoerd waarbij de CPU dus voor 100% gebruikt wordt. Maar helaas werkt dit niet zo in de praktijk. Sommige delen van de CPU, zoals de registers en het cache, worden gedeeld door beide threads waardoor er situaties kunnen optreden waarin beide threads elkaar tegenwerken. Daarom heeft de Duitse site tecChannel de invloed van HyperThreading op de performance van een Xeon 4 systeem, draaiende onder Windows XP, onderzocht.
Om van HyperThreading gebruik te maken moet Windows XP gebruik maken van een dual CPU tasksheduler die ingewikkelder is dan de normale single CPU tasksheduler. Hierdoor gaat dus een stukje performance verloren. Vooral lowlevel benchmark tests zoals Dhrystones of Wetstones lijden hieronder. Bij programma's die uit meerdere threads bestaan zou je verwachten dat de CPU beter benut zou worden, maar de werkelijkheid is anders. Sommige programma's, zoals de multithreaded versie van Drystones, gebruiken gemeenschappelijke globale variabelen waardoor ze elkaar in de weg gaan zitten bij het benaderen van het cache waarin een thread deze variabelen kan vinden. De performance met HyperThreading aan, kan zo wel met 12% naar beneden gaan. Maar met een aantal aanpassingen in de programmacode kan dit probleem omzeilt worden waardoor er 13% performance geboekt wordt.
Maar op een snelle CPU worden soms meerdere programma's tegelijkertijd gedraaid. Denk bijvoorbeeld aan het surfen op Internet en het tegelijkertijd afspelen van je favoriete MP3's met WinAmp. De kans dat beide programma's elkaar in de weg zitten is erg klein en het is dan ook hier waar HypterThreading veel zin heeft. In een test waarin een CPU belast werd met een Dhrystone proces dat 45% CPU tijd opslokte blijkt er nog maar 54% CPU tijd over te zijn voor een ander proces, Whetstone, met HyperThreading uitgeschakeld. Wordt HyperThreading echter ingeschakeld, dan krijgt het Whetstone proces opeens 88% van de CPU tijd. Een verbetering die je als gebruiker echt zult merken.
Bij echte applicaties ligt het er maar aan. System Mark die het van huis uit niet geschikt is voor multiprocessor systemen loopt ook met HyperThreading aan langzamer. Maar applicaties zoals Lightwave 3D en Cinebench 2000 maken er gretig gebruik van en doen hun werk zo'n 15% sneller.