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.
Diesen Artikel bookmarken oder senden an ...