Information Technology Reference
In-Depth Information
(full) bzw. leer (empty) gekennzeichnet ist. Das den Zustand einer Speicherzelle beschreibende
Synchronisationsbit wird dabei jeweils ggf. invertiert, d.h. ein Lesezugriff kennzeichnet die Spei-
cherzelle nach Ausführung als leer, ein Schreibzugriff als gefüllt. Eine ähnliche Funktionalität steht
auch für den Registerspeicher zur Verfügung. Weil ein einzelner Befehl gleichzeitig zwei Registe-
rinhalte verarbeiten und ein Ergebnis erzeugen kann, wird zur Sicherstellung der Unteilbarkeit der
Operation jedoch ein dritter Synchronisationszustand „reserviert“ (reserved) benötigt. Er kenn-
zeichnet verfügbare jedoch noch nicht konsumierte Operanden.
Ein in diesem Zusammenhang zu nennender Nachteil des HEP ist, dass das Prozessstatuswort eines
aufgrund fehlender Operanden unausführbaren Befehls nicht aus der Kontrollschleife entfernt, son-
dern lediglich mit Verzögerung erneut bearbeitet wird und somit Rechenzeit benötigt (Busy-Wai-
ting). Eine abschließende Anmerkung: Das verschränkte Multithreading ist außer im HEP noch in
den Rechnern TERA und HORIZON der Tera Computer Cooperation (die aus Denelcor hervorge-
gangen ist) [9], im MTA von Cray [194, 195], in der M-Machine des MIT [43] u.a. realisiert.
3.3.2 Blockbasiertes Multithreading (blocked multithreading, BMT)
Der zuvor beschriebene Nachteil von Prozessoren, die verschränktes Multithreading
realisieren, einzelne Programme sehr langsam auszuführen, lässt sich beheben,
wenn sequentielle Befehlsfolgen wie von einem herkömmlichen, z.B. skalaren Pro-
zessor ausgeführt werden. Dies setzt jedoch voraus, dass man auf Techniken zur
Lösung von Fließbandkonflikten , wie z.B. eine Sprungvorhersageeinheit oder
Bypässe , nicht verzichtet. Zur Überbrückung von Latenzzeiten ist es dabei trotzdem
sinnvoll, mehrere Befehlsfolgen, sofern die Aufgabenstellung dies erlaubt, quasipa-
rallel zu bearbeiten. Allerdings sollte die Umschaltung zwischen den Befehlsfolgen
nicht mehr im Taktraster erfolgen, weil mit steigender Häufigkeit von Kontextwech-
seln die Lokalität von Zugriffen auf Daten und Befehle sinkt, was die Effektivität
der entsprechenden Caches vermindert.
Beim blockbasierten Multithreading (auch coarse grain multithreading ) wird ein
Kontextwechsel ereignisgesteuert initiiert, z.B. dann, wenn ein Befehl ausgeführt
werden soll, der eine lange Latenzzeit aufweist. Im Gegensatz zum verschränkten
Multithreading ist es dabei prinzipiell möglich, für den Kontextwechsel Zeit in
Anspruch zu nehmen, so dass sich der Inhalt des Registerspeichers z.B. über meh-
rere Takte hinweg in einem schnellen Hintergrundspeicher sichern bzw. neu laden
lässt (zur Erinnerung: Beim verschränkten Multithreading muss ein Kontextwechsel
in null Takten erfolgen). Dies ist sinnvoll, wenn man dadurch die Registerspeicher-
kapazität vermindern und den kritischen Pfad des Prozessors verkürzen kann.
Bild 3.49b zeigt, wie drei Befehlsfolgen A, B und C (Bild 3.49a) durch einen skala-
ren Prozessor mit blockbasierten Multithreading verarbeitet werden. Nach dem Star-
ten des drei Takte zur Ausführung benötigenden Befehls A 1 wird ohne Zeitverlust
die Befehlsfolge B begonnen, und zwar bis mit B 3 erneut ein Ereignis eintritt, das
einen Kontextwechsel zur Befehlsfolge C auslöst usw. A 2 wird in diesem Beispiel
erst fünf Takte nach A 1 gestartet, weshalb die in der ursprünglichen Befehlsfolge
auftretenden vertikalen Verluste vollständig vermieden werden.
Die quasiparallele Ausführung der drei Befehlsfolgen durch einen zwei Operationen
pro Takt verarbeitenden VLIW-Prozessor ist in Bild 3.49c dargestellt. Dabei wird
 
Search WWH ::




Custom Search