Hyper-Threading

Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 20. April 2004 um 22:25 Uhr durch ChristianHujer (Diskussion | Beiträge) (Hinweis auf Intel, Symmetric/Simultanous Multithreading). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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 die selbe Technologie umschreiben, sind Symmetric Multithreading und Simultanous Multithreading. Welcher dieser Begriffe sich allgemein durchsetzt, 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 Multiprozessing (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 Resourcen werden unterteilt (Partitioned Resources) und einige der Resourcen müssen sie sich mit dem anderen Sibling teilen (Shared Resources).

Unterstützung

Zu finden ist Hyperthreading derzeit bei neueren Intel-Prozessoren (Pentium 4, Xeon 604).

Betriebssysteme mit Unterstützung für Hyperthreading sind unter anderem Linux ab Kernel 2.4.18, 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 im Detail

Replicated Resources

Zu den replizierten Resourcen, also den pro Sibling unabhängig von den anderen Siblings vorhandenen Resourcen, gehört in jedem Fall der vollständige Registersatz inkl. Stackpointer und Programcounter, Instructionpointer.

Partitioned Resources

Zu den partitioned Resources, also den Resourcen, die durch Unterteilung zwischen den Siblings aufgeteilt werden, zählen diverse Zwischenspeicher in der CPU.

Shared Resources

Alle übrigen Resourcen sind Shared Resources, also Resourcen, 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 Hypertrheading 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.