Hyper-Threading

Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. Juni 2005 um 23:03 Uhr durch 80.171.183.231 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Als Hyper-Threading Technologie (HTT) (abgeleitet von Multithreading) bezeichnet Intel seine Implementierung von Simultaneous Multithreading (SMT) in den Prozessoren Pentium 4 und Xeon. Wie bei SMT werden mittels Duplizierung und Aufteilung bestimmter Ressourcen virtuelle CPUs (Siblings) generiert, die mehrere (Teil-)Programme (Threads) weitgehend parallel ausführen können.

Nicht zu verwechseln ist Hyper-Threading mit den SMT-Technologien anderer Hersteller, mit HyperTransport (HT), der Mehrkern-Architektur bzw. dem SMP und der Pipeline-Architektur.

Die von Intel vergebene Bezeichnung lautet Hyper-Threading Technology mit der Abkürzung HT-Tech oder HTT. Das fälschlicherweise oft ohne -Tech oder -T benutzte HT ist die Abkürzung für HyperTransport, einem von AMD mitentwickelten seriellen Bussystem. HT wird von Intel nur in Logos benutzt, in offiziellen Dokumenten wird immer Hyper-Threading Technology verwendet.

Funktionsweise

Intels Hyper-Threading Technologie verbessert die Performance von multi-threaded Applikationen, indem sie die Auslastung der On-Chip Ressourcen erhöht, die in der Intel NetBurst Mikroarchitektur verfügbar sind. Ein typischer Thread belastet nur etwa 35% der NetBurst Ausführungsressourcen, HTT 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.

Ressourcen

Beim Hyper-Threading werden die CPU-Ressourcen in drei Kategorien eingeteilt:

  • Replicated Resources (nachgebildete Ressourcen)
  • Partitioned Resources (unterteilte Ressourcen)
  • Shared Resources (geteilte Ressourcen)

Die Siblings (Geschwister) 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 Hyper-Threading derzeit bei Intel-Prozessoren (neuere Modelle der Pentium 4-Reihe, Xeon 603/604), auch die neuen AMD Athlon64/Opteron Dual-Core-Prozessoren geben sich als Hyper-Threading-fähig aus um von diversen darauf optimierten Programmabläufen zu profitieren.

Betriebssysteme mit Unterstützung für Hyper-Threading sind unter anderem Linux ab Kernel 2.4.17, neuere Versionen von FreeBSD und anderen BSDs sowie Windows XP. Windows 2000 ist zwar kompatibel mit Hyper-Threading, profitiert aber nicht davon weil es nicht zwischen physikalischen und logischen Prozessoren unterscheidet. Die Leistung kann sogar sinken.

Compiler, die Code mit Hyper-Threading-Unterstützung erzeugen können, sind die Intel-Compiler und gcc. Hyper-Threading 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.

Hyper-Threading im Detail

Die folgenden Informationen beziehen sich auf Hyper-Threading. Andere Prozessoren mit Simultaneous Multithreading können, müssen aber nicht eine vergleichbare Aufteilung verwenden.

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 Hyper-Threading gegenüber dem klassischen Singlethreading ist nur nutzbar, wenn man ein SMP-fähiges Betriebssystem und auf Hyper-Threading optimierte Software einsetzt. Gegenüber klassischem SMP ist Hyper-Threading im Nachteil, jedoch ganz erheblich kostengünstiger zu realisieren.

Laut Aussage von Intel kann Hyper-Threading im Multitasking-Betrieb normale Programme um 10-20%, optimierte Programme um bis zu 33% beschleunigen.

Weitere Informationen

Siehe auch

Simultaneous Multithreading, Nebenläufigkeit, Parallelisierung, Pipeline-Architektur, Mehrkern-Prozessor