Information Technology Reference
In-Depth Information
So wird der Befehl A 5 als von A 4 unabhängig erkannt und daher in direkter Folge
von A 3 ausgeführt (eine solche Laufzeitoptimierung ist bei einer statisch optimier-
ten Befehlsfolge z.B. dann möglich, wenn A 5 von A 1 abhängig ist und A 1 eine von
den verarbeiteten Operanden abhängige maximal vier Takte, minimal einen Takt
währende Latenzzeit aufweist). Im Vergleich zum VLIW-Prozessor vermindert dies
die Gesamtverluste von 10 auf nunmehr acht.
Trotz der Möglichkeit des Umordnens von Befehlen gelingt es in vielen Fällen
nicht, die durch lange Latenzzeiten entstehenden Gesamtverluste signifikant zu
reduzieren. Zum Beispiel benötigt der in einem ASUS-P4PE-Board mit Intel-
845PE-Chipsatz arbeitende, mit 3,08 GHz getaktete Pentium 4 von Intel 380 Takte
für einen Hauptspeicherzugriff [199]. Da der Prozessor drei Befehle pro Takt starten
kann, sind im Extremfall Gesamtverluste von 1140 Takten in Kauf zu nehmen.
Selbst wenn das Umordnen einer so großen Anzahl von Befehlen prinzipiell gelin-
gen würde, wäre dies in der Realität schon deshalb nicht möglich, weil der Reorder-
Buffer des Pentium 4 maximal 126 Einträge aufnehmen kann [103]. Unter günstigs-
ten Voraussetzungen sind nach einem Ladebefehl daher Gesamtverluste von wenigs-
tens 1014 Takte zu tolerieren. Natürlich weichen die hier genannten Zahlen von Sys-
tem zu System voneinander ab. Sie werden in ihrer Größenordnung jedoch durch
andere Untersuchungen bestätigt. So wird die Latenzzeit bei Ladezugriffen auf
Hauptspeicherinhalte, die nicht im Cache zwischengespeichert sind, beim MAJC
von Sun mit 50 bis 100 Takten [174] und beim Alpha 21164 von DEC (später Com-
paq [26]) mit 80 Takten beziffert [14].
Eine einfache Technik zur Vermeidung vertikaler Verluste ist das sog. Multithrea-
ding (vielfädige Verarbeitung), bei dem mehrere Befehlsfolgen, die Threads, alter-
nierend ausgeführt werden. Da zwischen den zu unterschiedlichen Programmen
gehörenden Befehlsfolgen i.Allg. keine Abhängigkeiten auftreten, ist eine „Buch-
führung“, wie in superskalaren Prozessoren, hier nur innerhalb der einzelnen pseu-
doparallel bearbeiteten Befehlsfolgen notwendig.
Je nach verwendetem Verfahren wird zwischen den einzelnen Befehlsfolgen entwe-
der taktweise (Abschnitt 3.3.1) oder blockweise umgeschaltet (Abschnitt 3.3.2).
Letzteres sinnvollerweise dann, wenn ein Befehl mit einer langen Latenzzeit ausge-
führt werden soll. Beide Techniken lassen sich sowohl für skalare Prozessoren als
auch für statisch operationsparallel arbeitende Prozessoren (z.B. VLIW-Prozesso-
ren) einsetzen. Werden sie folgerichtig auf superskalare Prozessoren übertragen,
gelangt man zum sog. simultanen Multithreading (SMT), das unter Berücksichti-
gung einiger Voraussetzungen umgekehrt auch auf statisch operationsparallel arbei-
tende Prozessoren übertragbar ist. Das simultane Multithreading wird in Abschnitt
3.3.3 beschrieben.
3.3.1 Verschränktes Multithreading (interleaved multithreading, IMT)
Bei dem sehr einfach zu realisierenden verschränkten Multithreading (auch fine
grained multithreading ) wird zyklisch, ohne Rücksicht auf die Latenzzeiten der ein-
zelnen Befehle, zwischen den aufzuführenden Befehlsfolgen hin und her geschaltet.
Search WWH ::




Custom Search