Was ist Hyper-Threading?: Die Grundlagen erklärt

 3/4
Thomas Hübner
28 Kommentare

Wie funktioniert's?

Da die Umsetzungs-Einheiten beim neuen Pentium 4 nun doppelt vorhanden sind, bzw. mit den neuen Hyper-Threading Prozessoren auch erstmals im Desktop-Bereich genutzt werden, und die üblichen Ressourcen geteilt werden, sind alle Voraussetzungen erfüllt, um zwei Threads parallel auszuführen. Da wir uns an dieser Stelle nicht in den Tiefen der komplizierten Prozessor-Theorie verlieren wollen, soll eine kleine Grafik an dieser Stelle verdeutlichen, wie bei ein- und demselben Prozessortakt ohne Hyper-Threading ein bzw. mit Hyper-Threading zwei Threads verarbeitet werden.

Zwei Tasks mit und ohne HT
Zwei Tasks mit und ohne HT

Beide CPUs haben dieselbe Aufgabe: Thread 1 (blau) und Thread 2 (ocker) sollen berechnet werden. Während eine CPU ohne Hyper-Threading in der angegebenen Anzahl an Arbeitschritten nur einen Thread abarbeiten kann, ist der Prozessor mit Hyper-Threading in der Lage, einen zweiten Thread durch die von Thread 1 nicht ausgelasteten Bauteile der CPU zu jagen. Beide Threads werden (in diesem optimalen) Beispiel somit exakt genauso schnell berechnet, wie der erste auf dem herkömmlichen Prozessor.

Was profitiert?

Da sich die virtuellen Prozessoren die Ausführungseinheiten teilen, dürften auch die Grenzen von Hyper-Threading ganz schnell klar werden. Sollte eine Anwendung tatsächlich einmal 100 Prozent einer Einheit (z.B. FPU) belegen, so würde eine zweite Anwendung, die ähnliche Ressourcen bevorzugt, dennoch warten müssen oder abwechselnd und somit im Endeffekt nicht schneller berechnet werden. Doch nicht einmal Seti@Home belastet eine Einheit so stark, dass zwei Seti-Instanzen nicht doch gewaltig von Hyper-Threading profitieren können. Als besonders reizvoll dürfte sich sicherlich die Tatsache heraus stellen, dass es Hyper-Threading ermöglicht, Floatingpoint- und Integerrechnung parallel laufen zu lassen.

Auch dürfte klar sein, dass Hyper-Threading nur dann Sinn hat, wenn beide Prozessoren mit Arbeit belastet werden. Und dies ist die Aufgabe des Betriebssystems. Sowohl Windows XP Home und Professional sowie Windows 2000 (nicht empfohlen, da nicht validiert) als auch Linux 2.4.18 sind hierfür geeignet. Was jetzt nur noch fehlt, sind geeignete Anwendungen, die in Threads programmiert wurden. Alternativ können die beiden Prozessoren auch durch mehrere Anwendungen zum Entfalten ihrer Kraft gebracht werden. Somit muss also zwischen Multitasking und Multithreading unterschieden werden. Bei Multitasking sollen sich durch Hyper-Threading vor allem die Reaktionszeiten merklich verringern. Wichtig ist hierbei, dass beide Anwendung auch wirklich parallel etwas tun - von Taskswitching erziehlt man in der Regel keinen großen Geschwindigkeitsvorteile.

Anders sieht das natürlich aus, wenn man mit Office-Anwendungen arbeitet und der berühmte Virenscanner im Hintergrund läuft. Hier haben wir echtes Multitasking. Das Gleiche gilt auch für das Musikhören beim Spielen sowie Seti@Home oder FlaskMPEG als Hintergrundprozess beim Arbeiten. Hier liegen die wahren Vorteile von Hyper-Threading.