Hyper-Threading im Detail

Multi-Threading

Multi-Threaded-Prozessoren bieten eine Hardware-basierte Unterstützung für den effizienten Einsatz von Threads. Sie erlauben vor allem einen schnellen Wechsel zwischen den Threads desselben Tasks. Dafür besitzen Multi-Threaded-Prozessoren mehrere Registersätze, die jeweils den unterschiedlichen Threads zugeteilt werden. Ein Verteiler (Dispatch Unit) veranlasst das Umschalten zwischen den verschiedenen Threads. Insbesondere sind zu nennen:

  • Switch-on-Event Multi-Threading stößt den Wechsel von einem auf einen anderen Thread nach einem Ereignis (Event) an. Das kann ein Cache-Miss sein, der einen Zugriff auf den Speicher zur Folge hätte.

  • Feingranulares, zeitschlitzorientiertes Multi-Threading gibt die einzelnen Bestandteile der verschiedenen Threads in die unterschiedlichen Zeitschlitze einer Pipeline. Zwar werden die Pipelines auf diese Weise am besten genutzt, dies geht allerdings zu Lasten eines größeren Verwaltungsaufwands auf der Hardware-Seite.

Auf dem Intel Developer Forum im August 2001 (IDF Fall 2001) wurde die Hyper-Threading-Technologie als Multi-Threaded-Erweiterung der IA-32-Architektur vorgestellt. Der ursprüngliche Codename lautete Jackson-Technologie, auch die Bezeichnung Simultaneous Multi-Threading (SMT) ist verbreitet. Die Intel-Entwickler setzen bei der Hyper-Threading-Technologie auf ein Konzept, welches

  • den Thread-Wechsel vom Betriebssystem auslösen lässt und damit eine größtmögliche Flexibilität erreicht.

  • grobgranular in dem Sinne ist, dass die Thread-Wechsel nur nach größeren Zeiteinheiten erfolgen.

Das Ziel von Hyper-Threading ist, dass die unterschiedlichen Pipelines eines Mikroprozessors durch unterschiedliche Threads zeitgleich - und damit wie getrennte Prozessoren - effizient genutzt werden.

Die auf mehreren Threads aufbauenden Programme und Betriebssysteme sehen den einen physischen Prozessor als mehrere logische Prozessoren (LP).