Hyper Threading

Hyper-Threading is een complexe techniek in een processor. Deze techniek zorgt ervoor 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. In het Engels cores genoemd. Door dat er maar 1 processorkern was kon de processor ook maar één taak tegelijk verwerken. Met de Hyper-Threading techniek kan een processor efficiënter werken en aan meerdere taken tegelijk.

Nu we processoren hebben met meerde processorkernen is Hyper-Threading minder belangrijk geworden. Maar levert nog altijd een prestatieverbetering op. De Hyper-Threading techniek 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.

Tevens bestaat een processorkern uit meerdere rekeneenheden. Zo is er een gedeelde dat alleen met hele getallen (1, 2, 3, enz.) kan rekenen, een deel wat met reële getallen (0.123, 12.34, 1.33333, enz.) kan rekenen. Tevens zijn er ook nog gedeelten die alleen betaalde instructies kunnen uitvieren. Bijvoorbeeld de MMX, SSE en de SSE-2.

Als een taak (thread) wordt uitgevoerd, zal die zelden tot nooit al deze gedeelden nodig hebben. De kans is veel groter dat een andere taak staat te wachten op het gebruik van net dat rekengedeelte.

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 één 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 had de primeur. 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.

LAAT EEN REACTIE ACHTER

Please enter your comment!
Please enter your name here

Beveiligingsvraag: