Doping für CPUs — Möglichkeiten der Leistungssteigerung
Ansätze der Optimierung per Hardware (Fortsetzung)
Simultaneous Multi-Threading (Fortsetzung)
Besonderheiten des HyperThreading
Wie zu Beginn des SMT-Teiles dieses Artikels bereits erwähnt, war eines der Ziele für die Implementierung von Hyper-Threading, die im Vergleich zu einem gleichschnell getakteten Prozessor ohne Hyper-Threading, identische Ausführgeschwindigkeit von nicht Multi-Threaded Anwendungen.
Jedoch ist dies rechnerisch mit halb so großen Cache, halb so schnellem Decoder und den weiteren beschriebenen Begrenzungen und Beschänkungen durch gemeinsame Nutzung der Ressourcen nicht möglich. Deshalb kann der Prozessor — im laufenden Betrieb — in den sog. Single-Task Modus geschaltet werden. Im ST0/ST1 Mode (ST0 = logischer Prozessor 1 ist über HALT inaktiv gesetzt worden, ST1 = logischer Prozessor 0 ist über HALT inaktiv gesetzt worden) werden alle zuvor partitionierten oder gemeinsam benutzten Ressourcen vereint und stehen einem einzigen logischen Prozessor zur Verfügung. Der andere logische Prozessor ruht während dieser Zeit.
Erreicht wird dies durch Anwendung des HALT-Befehls auf einen logischen Prozessor. Wird beispielsweise HALT auf den logischen Prozessor 0 angewandt, so geht dieser in den Schlafmodus über und alle Ressourcen können vom logischen Prozessor 1 verwendet werden. Wird auch dieser per HALT in den Schlafmodus geschickt, so geht der gesamte Prozessor in den C1-Mode über und schlummert vor sich hin. Der Übergang vom ST0/ST1 Mode in den MT Mode (Multi-Task, zwei logische Prozessoren verfügbar) geschieht auf einen Interrupt an einen logischen Prozessor hin.
Die Kontrolle unterliegt dem Betriebssystem, weshalb Intel auch explizit darauf hinweist, dass eventuell Änderungen in den bestehenden Betriebssystemen nötig sein könnten. Zum einen muss logischerweise SMP unterstützt werden, schließlich ist ein Mikroprozessor mit Hyper-Threading Technologie von Sicht des Betriebssystems aus ein herkömmliches SMP-System.
Weiterhin sollte das Betriebssystem den HALT-Befehl explizit nutzen, wenn nur ein Prozessor benötigt wird. Denn ist dies nicht der Fall, führt das Betriebssystem einen sog. Idle-Loop durch, der jedoch einen signifikanten Teil der verfügbaren Ressourcen aufbraucht und den Prozessor dadurch auslastet. Diese Ressourcen stehen dann logischerweise dem reellen Code ausführbaren Prozessor nicht mehr zur Verfügung und sind somit verschwendet.
Eine letzte Optimierung betrifft den Einsatz von HT-fähigen Prozessoren in SMP-Systemen. Hierbei sollte das Betriebssystem Aufgaben zunächst an physisch vorhandene Prozessoren zuteilen und anschließend erst auf die logischen zurückgreifen. So wird letztendlich eine optimale Auslastung aller vorhandenen — irrelevant ob logisch oder physisch — sichergestellt.