Hyperthreading

Hyperthreading

Hyper-Threading Technology (kurz: HTT, üblicherweise nur Hyper-Threading genannt) ist die Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren. Durch mehrere vollständige Registersätze und ein komplexes Steuerwerk werden intern parallel arbeitende Pipeline-Stufen mehreren parallelen Befehls- und Datenströmen zugeteilt. Hyperthreading ist damit Parallelverarbeitung auf der Ebene des Simultaneous Multithreadings.

Mit Hyper-Threading können sowohl Threads als auch Prozesse parallel verarbeitet werden. Beispielsweise kann ein Task/Thread durch einen Cache-Miss auf den Hauptspeicher warten, während ein zweiter Thread/Task parallel mittels Hyper-Threading laufen kann. Softwareseitig verhält sich eine CPU mit Hyper-Threading wie ein symmetrisches Multiprozessor-System. Es ist also keine Anpassung der Software nötig, das Betriebssystem muss nur (S)MP-fähig sein und sollte Multitasking und Kernel-Level-Threads unterstützen, um Hyper-Threading auszunutzen.

Inhaltsverzeichnis

Funktionsweise

Intels Hyper-Threading-Technologie verbessert den Durchsatz von multi-threaded Applikationen und im Multitasking, 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, Hyper-Threading 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 zwei logische Prozessoren, die vom Betriebssystem mittels klassischer Multiprocessing-Verfahren verwaltet werden.

Anzumerken gilt noch, dass das Betriebssystem selbst eine Multithreading-Anwendung ist, so dass eine durch Hyper-Threading gestaltete Systemumgebung selbst von dieser Technologie profitiert. Bei nur einer geöffneten (unoptimierten) Anwendung ist der Leistungsgewinn nur marginal und vom Anwender kaum wahrzunehmen. Sind auf solchen Systemen hingegen mehrere Anwendungen gleichzeitig geöffnet, profitiert der Anwender von Hyper-Threading. Je stärker das einzelne Programm Ressourcen für sich in Anspruch nimmt, desto besser greift die Multi-Threading-Technologie im System, da dieses die Ressourcen auf die Threads aufteilt. Bei Anwendungen, die speziell für Multi-CPU-Systeme konzipiert sind, kann die Leistung theoretisch um die Anzahl der verfügbaren logischen wie physikalischen Prozessoreinheiten vervielfacht werden, abzüglich des anfallenden Verwaltungsaufwandes.

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 bei Intel-Prozessoren (neuere Modelle der Pentium-4-Reihe und deren Extreme-Edition-Derivate, NetBurst-Xeons, Core i7 und die Atom-Reihe). Auch die Mehrkernprozessoren von AMD (darunter entsprechende Athlon-64-X2-, Opteron- und Phenom-CPUs) geben sich über ein Flag als hyper-threading-fähig aus, obwohl sie es nicht sind, dadurch können sie aber potenziell von HT-optimierten Programmabläufen profitieren.

Betriebssysteme mit Unterstützung für Hyper-Threading sind unter anderem Windows XP, Windows Vista, Windows Server 2003, Mac OS X, neuere Versionen von FreeBSD und anderen BSDs sowie Linux (ab 2.4.17). Windows 2000 ist zwar kompatibel mit Hyper-Threading, profitiert aber selten davon, weil es nicht zwischen physikalischen und logischen Prozessoren unterscheidet (keine SMT-Awareness). Die Leistung kann sogar durch Effekte wie Cache-Thrashing sinken.

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

Partitioned Resources

Zu den partitioned Resources, also den Ressourcen, die durch Unterteilung zwischen den Siblings aufgeteilt werden, zählen die Instruction Queues, der Reorder Buffer und die Load/Store Buffer.

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 ALUs und FPU.

Der volle 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 Multi-Prozessorsystemen ist Hyper-Threading im Nachteil, da beide logische Prozessoren sich die Ressourcen teilen müssen und dabei in Konflikt geraten können. Allerdings ist Hyper-Threading ganz erheblich kostengünstiger zu realisieren.

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

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • HyperThreading — es una marca registrada de la empresa Intel para denominar su implementación de la tecnología Multithreading Simultáneo también conocido como SMT. Permite a los programas preparados para ejecutar múltiples hilos (multi threaded) procesarlos en… …   Wikipedia Español

  • HyperThreading — La tecnología HyperThreading es un diseño de Intel que permite al software programado para ejecutar múltiples hilos (multi threaded) procesar los hilos en paralelo dentro del procesador pero con un único procesador, incrementando el uso de las… …   Enciclopedia Universal

  • Hyperthreading — Beim Hyperthreading arbeiten zwei virtuelle Prozessoren in einer CPU, so daß Berechnungen wie bei einem Dual System parallel ausgeführt werden können. CPU …   Online-Wörterbuch Deutsch-Lexikon

  • Hyperthreading — Hyper Threading Hyper Threading (HT, en français « Hyper Flots » ou « Hyper Flux ») est le nom donné par Intel à son adaptation du SMT (Simultaneous Multi Threading) à deux voies dans le Pentium 4. Le premier modèle grand… …   Wikipédia en Français

  • Список моделей Pentium 4 — Основная статья: Pentium 4 Pentium 4 Intel Pentium 4 x86 совместимый процессор, анонсированный 20 ноября 2000 года. К процессорам семейства отн …   Википедия

  • Список микропроцессоров Pentium 4 — Основная статья: Pentium 4 Pentium 4 …   Википедия

  • Intel Xeon (NetBurst) — Intel Xeon Logo der Xeon NetBurst Reihe Produzent: Intel Prozessortakt: 1,40 GHz bis 3,66 GHz …   Deutsch Wikipedia

  • Intel Xeon — Xeon Xeon Processeur Fabriqué 1998 Fréquence du processeur 400 MHz à 3.8 GHz …   Wikipédia en Français

  • Pentium III Xeon — Xeon Xeon Processeur Fabriqué 1998 Fréquence du processeur 400 MHz à 3.8 GHz …   Wikipédia en Français

  • Pentium II Xeon — Xeon Xeon Processeur Fabriqué 1998 Fréquence du processeur 400 MHz à 3.8 GHz …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”