Hyper-Threading
Als Hyperthreading (abgeleitet von Multithreading) bezeichnet Intel die Fähigkeit einer CPU, auf mittels Duplizierung und Aufteilung bestimmter Ressourcen generierten virtuellen CPUs (Siblings) mehrere (Teil-)Programme parallel auszuführen. Konkurrierende Begriffe, welche dieselbe Technologie umschreiben, sind Symmetric Multithreading und Simultanous Multithreading. Welcher dieser Begriffe sich allgemein durchsetzen wird, bleibt noch abzuwarten.
Nicht zu verwechseln ist Hyperthreading mit der tatsächlichen Integration mehrerer CPUs auf einem Chip, wie sie vor allem bei Mips und Sparc häufig anzutreffen ist. Dort spricht man von echtem symmetrischem Multiprocessing (SMP). Im Gegensatz zu SMP besitzt der Chip der Hyperthreading-CPU keine vollständigen CPUs.
Ressourcen
Beim Hyperthreading werden die CPU-Ressourcen in drei Kategorien eingeteilt:
- Replicated Resources (nachgebildete Ressourcen)
- Partitioned Resources (unterteilte Ressourcen)
- Shared Resources (geteilte Ressourcen)
Die Siblings besitzen einige der Ressourcen in eigener Kopie (Replicated Resources), einige der Ressourcen werden unterteilt (Partitioned Resources) und einige der Ressourcen müssen sie sich mit dem anderen Sibling teilen (Shared Resources).
Unterstützung
Zu finden ist Hyperthreading derzeit bei Intel-Prozessoren (neuere Modelle der Pentium 4-Reihe, Xeon 603/604).
Betriebssysteme mit Unterstützung für Hyperthreading sind unter anderem Linux ab Kernel 2.4.17, neuere Versionen von FreeBSD und anderen BSDs sowie neuere Versionen (aktuelle Service Packs) von Windows 2000 und Windows XP.
Compiler, die Code mit Hyperthreading-Unterstützung erzeugen können, sind die Intel-Compiler und gcc. Hyperthreading bringt jedoch nur für Anwendungen einen Geschwindigkeitsvorteil, deren Berechnungen parallelisierbar sind, d.h. die Berechnung eines Threads ist nicht abhängig vom Ergebnis eines anderen.
Hyperthreading im Detail
Replicated Resources
Zu den replizierten Ressourcen, also den pro Sibling unabhängig von den anderen Siblings vorhandenen Ressourcen, gehört in jedem Fall der vollständige Registersatz inkl. Stackpointer und Programcounter, Instructionpointer.
Partitioned Resources
Zu den partitioned Resources, also den Ressourcen, die durch Unterteilung zwischen den Siblings aufgeteilt werden, zählen diverse Zwischenspeicher in der CPU.
Shared Resources
Alle übrigen Ressourcen sind Shared Resources, also Ressourcen, die sich die Siblings wirklich teilen müssen, meist dadurch, dass sie nur von einem der Siblings gleichzeitig verwendet werden können. Hierzu zählen derzeit insbesondere die ALU und FPU.
Der Geschwindigkeitsvorteil von Hyperthreading gegenüber dem klassischen Singlethreading ist nur nutzbar, wenn man ein SMP-fähiges Betriebssystem und auf Hyperthreading optimierte Software einsetzt. Gegenüber klassischem SMP ist Hyperthreading im Nachteil, jedoch ganz erheblich kostengünstiger zu realisieren.
Laut Aussage von Intel kann Hyperthreading im Multitasking-Betrieb normale Programme um 10-20%, optimierte Programme um bis zu 33% beschleunigen.
Funktionsweise
Intels Hyper-Threading Technologie verbessert die Performance von multi-threaded Applikationen indem sie die Auslastung der on-chip Ressourcen, welche in der Intel NetBurst Mikroarchitektur verfügbar sind, erhöht. Ein typischer Thread belastet nur etwa 35% der Intel NetBurst Mikroarchitektur Ausführungsressourcen. HT erhöht die Auslastung durch notwendige Logik und Ressourcen, die der CPU hinzugefügt werden. Die Aufteilung der einkommenden Daten auf den freien Raum, erzeugt somit einen logischen zweiten Prozessor auf einem physischen Prozessor.
Weitere Informationen
Siehe auch
Nebenläufigkeit, Parallelisierung