Information Technology Reference
In-Depth Information
Das blockorientierte Multithreading ist in zahlreichen Prozessoren realisiert worden.
Der Sparcle des MIT ist ein als Forschungsprojekt entstandener Rechner, der auf
dem SPARC von Sun basiert [195]. Die regulär für Unterprogrammaufrufe vorgese-
henen Registerfenster des verwendeten Prozessors werden zur Speicherung unter-
schiedlicher Kontexte verwendet, zwischen denen dynamisch umgeschaltet wird,
wenn der externe Cache ein adressiertes Datum nicht enthält (switch on cache miss)
oder eine Synchronisation fehlschlägt (switch on signal). Ebenfalls als Forschungs-
projekt ist der als Rhama bezeichnete Prozessor der Universität von Karlsruhe ent-
standen [195]. Er verfügt über getrennte Einheiten für Berechnungen und Speicher-
zugriffe, die parallel auf unterschiedlichen Befehlsfolgen arbeiten. Kontextwechsel
werden statisch jeweils beim Erkennen von Lade-, Speichere- oder Sprungbefehlen
ausgelöst.
Der MAJC-5200 von Sun ist ein Beispiel für einen kommerziellen Prozessor mit
blockorientiertem Multithreading [170, 189]. Er verfügt über zwei VLIW-Prozes-
sorkerne, die pro Befehl bis zu vier Operationen und jeweils quasiparallel bis zu vier
Befehlsfolgen ausführen können. Abschließend sei der RS64 IV von IBM genannt:
ein auf Serveranwendungen optimierter superskalarer Prozessor mit blockorientier-
tem Multithreading, der zum PowerPC kompatibel ist und zwei Befehlsfolgen qua-
siparallel ausführen kann [20]. Kontextwechsel werden bei Bedarf ausgelöst
(gesteuert über ein Register), wenn ein Zugriff auf den L1- bzw. L2-Daten- oder
-Befehls-Cache fehlschlägt, wenn eine vorgegebene Zeitschranke überschritten
wird, wenn die Priorität der laufenden geringer als die der zu aktivierenden Befehls-
folge ist usw.
3.3.3 Simultanes Multithreading (simultanious multithreading, SMT)
Mit den zuvor beschriebenen Verfahren des verschränkten und blockorientierten
Multithreadings lassen sich vertikale Verluste durch Ausführung unabhängiger
Befehle verbergen. In beiden Fällen ist es jedoch nicht möglich, horizontale Ver-
luste, wie sie bei Verarbeitung in statisch oder dynamisch operationsparallel arbei-
tenden Prozessoren auftreten, zu vermeiden. Eine Lösung dieses Problems ist
jedoch sehr einfach, sofern es gelingt, pro Takt nicht nur die Ausführung der
Befehle einer Befehlsfolge, wie beim verschränkten oder blockorientierten Multi-
threading, sondern mehrerer Befehlsfolgen zu beginnen. Genau diese Idee liegt dem
simultanen Multithreading zugrunde.
Der dabei angestrebte zeitliche Ablauf bei Verarbeitung der in Bild 3.50a angegebe-
nen Befehlsfolgen A, B und C ist in Bild 3.50b dargestellt, wobei ein Prozessor vor-
ausgesetzt wird, der pro Takt vier Befehle (bzw. Operationen) parallel ausführen
kann. Während beim verschränkten oder blockorientierten Multithreading aufgrund
der bestehenden Abhängigkeit im ersten Takt nur A 1 ausführbar ist, werden beim
simultanen Multithreading die horizontalen Verluste durch Befehle anderer Befehls-
folgen, hier B 1 , B 2 und C 1 , vermieden. Dennoch sind horizontale Verluste weiterhin
möglich, wenn sich nämlich in keiner der quasiparallel auszuführenden Befehlsfol-
gen ein zu bereits in Bearbeitung befindlichen Befehlen unabhängiger Befehl finden
Search WWH ::




Custom Search