Home » computer onderdelen » processor » Uitleg: Wat is Hyper-Threading?

Uitleg: Wat is Hyper-Threading?

Uitleg: Wat is Hyper-Threading?


Hyper-Threading is een complexe techniek in een processor. Deze zorgt er voor dat een processorkern niet 1 maar 2 taken tegelijk kan uitvoeren.

Aan het begin van deze eeuw hadden we nog geen processoren met meerdere processorkernen (cores) waardoor een processor maar één taak tegelijk kon verwerken. Met de Hyper-Threading techniek werd dat anders en kon een processor efficiënter werken aan meerdere taken.


Nu we processoren hebben met meerde processorkernen is Hyper-Threading minder interessant geworden. Maar levert nog altijd een prestatie verbetering op. Hyper-Threading vind je onder anderen in de duurdere Intel Core i7 processoren.

Wat is een Thread?

Om te beginnen met uitleggen wat Hyper-Threading is, moet ik in het kort uitleggen hoe een processor werkt. Een processor verwerkt threads die hij krijgt opgedragen. Deze threads kan je zien als taken.

Bijvoorbeeld: Haal uit het geheugen de waarde van positie A en vermenigvuldig dit met de waarde van positie B en plaats het resultaat op positie X. Zo zijn er heel veel rekentaken te verzinnen dat een processor moet doen.

Deze taken voert een processor achter elkaar uit. Een processor kan net zoveel threads tegelijk uitvoeren als dat het aantal processorkernen (cores) dat een processor heeft. Eerst taak 1, dan taak 2, dan taak 3 enzovoorts.

Soms kan een processor een taak niet direct uitvoeren omdat hij moet wachten op gegevens. Dit wachten duurt soms maar milliseconden maar zorgt wel voor een vertraging. De processor kan nog niet verder met de volgende thread.

Dit wachten is natuurlijk verspilling en daar biedt Hyper-threading een oplossing voor. De processor wordt zo efficiënter benut.

Hyper-Threading zorgt voor minder verspilling

De Hyper-Threading techniek van Intel zorgt ervoor dat er minder verspilling is als de processor even op moet wachten. Dit wordt gerealiseerd door het mogelijk te maken dat er meer dan één thread (taak) door een processorkern kan worden verwerkt.

Hiervoor laat Hyper-Threading het besturingssysteem (bijvoorbeeld Windows) denken dat een processor die maar 1 processorkern heeft uit twee (virtuele) processoren bestaat. Het besturingssysteem stuurt hierdoor niet 1 thread maar 2 threads naar de processor.

Mocht een thread moeten wachten, dan kan de processor wel door met de tweede thread die het heeft ontvangen.

In het onderstaande figuur zal ik dit proberen uit te leggen.Hyper Threading uitleg

In de eerste grafiek zien we 2 taken door de processor worden verwerkt. Eerst taak 1 (oranje) en daarna taak 2 (blauw). Zoals je ziet wordt op iedere kloktik (1 staaf) niet de volledige rekenkracht gebruik. Anders zou de staaf de bovenkant van de grafiek raken.

In de tweede grafiek worden de taken 1 en 2 om en om aan de processor gegeven. Hierdoor heeft de processor even wat meer tijd (1 kloktik) voordat hij met de volgende thread moet beginnen.

In de derde grafiek is de Hyper-Threading techniek goed te zien. In een kloktik kan de processor nu 2 threads tegelijk verwerken en resulteert dat taak 1 wel later klaar is, maar taak 2 veel eerder. Hierdoor kan de processor al beginnen met taak 3 die anders nog had moeten wachten. Tevens is te zien dat de staven hoger zijn waardoor de processor efficiënter wordt gebruikt.

Geschiedenis van Hyper-Threading

In 1993 werd de Hyper-Threading techniek al door Intel bedacht. Pas 10 jaar later in 2002 kwam de Hyper-Threading techniek naar de desktop processoren voor de consument, de Intel Pentium 4 3.06Ghz processor. Deze processor (en alle andere processoren uit die tijd) bestond nog maar uit 1 processorkern en leverde de Hyper-Threading techniek en flinke prestatie verbetering van 20% tot 30% op.

Tegenwoordig is het heel normaal dat we processoren hebben met meerdere processorkernen. Zo hebben we processoren met 2, 4, 6 of 8 processorkernen en kunnen de processoren tegenwoordig al standaard meerdere threads tegelijk verwerken.

Toch blijft de Hyper-Threading techniek ook interessant voor processoren met meerdere processorkernen. De Hyper-Threading techniek zorgt tegenwoordig ook voor de verdeling van de threads naar de verschillende processorkernen die anders mogelijk ongebruikt blijven.

Hyper-Threading in de praktijk

Om het nog iets begrijpelijker te maken, een voorbeeld in de praktijk.

In het onderstaande voorbeeld heeft de dualcore processor (processor met 2 processorkernen) geen hyper-threading techniek. De gebruiker van de computer heeft links in beeld een virusscanner draaien en is tegelijkertijd een game aan het spelen. De virusscanner geeft de processor 2 threads en de game ook. De processor zal deze taken om en om uitvoeren omdat de processor in dit voorbeeld twee processorkernen heeft en kan daardoor ook twee threads verwerken.

Geen Hyper-Threading
Processor met 2 processorkernen zonder Hyper-Threading waardoor er 2 threads tegelijk verwerkt kunnen worden.

Heeft de processor wel Hyper-Threading, dan zal het onderstaande voorbeeld van toepassing zijn. Het besturingssysteem denk dat er 4 processoren in de computer zitten en zal 4 threads tegelijk naar de processor sturen.

Processor heeft Hyper-Threading aan
Processor met 2 processorkernen met Hyper-Threading waardoor er 4 threads tegelijk verwerkt kunnen worden.

Dit levert uiteraard een prestatiewinst op. Alleen zal dit niet meer zo groot als in 2002 toen we nog geen processoren hadden met meerdere processorkernen.

Meerdere processorkernen dat 1 thread verwerkt is altijd sneller dan een processorkern dat twee threads moet afhandelen. Het effect van Hyper-threading is afgenomen naar 5 tot 10%. Gaat u een processor kopen dan is een processor met meerdere processorkernen altijd de betere keuze.

Een processor met 4 processorkernen zonder Hyper-Threading is altijd sneller dan een processor met 2 processorkernen met Hyper-Threading. Mits de processoren op dezelfde kloksnelheid werken. En de processorkernen in dezelfde generatie zijn gemaakt.