Information Technology Reference
In-Depth Information
die Anzahl der pro Takt ausführbaren Befehle ( instructions per cycle , IPC ) zu stei-
gern. Eine darüber hinausgehende Verbesserung des Befehlsdurchsatzes lässt sich
erreichen, indem zusätzliche Techniken zur spekulativen Verarbeitung von Befehlen
sowie zur Vorhersage von Adressen, Operanden und Ergebnissen verwendet wer-
den. Durch deren kombinierten Einsatz lässt sich die Anzahl der spekulativ in Aus-
führung befindlichen Befehle über die der aktuell nichtspekulativ bearbeiteten
Befehle steigern [100], weshalb man auch von superspekulativer Befehlsverarbei-
tung spricht. Die hierbei benutzten Techniken, wurden in den vorangehenden
Abschnitten bereits weitgehend erläutert. Im Folgenden wird nur die grundsätzliche
Arbeitsweise der als superspekulativ bezeichneten Prozessoren beschrieben.
In Bild 3.45a ist zunächst eine zu verarbeitenden sequentielle Befehlsfolge angedeu-
tet, in der logische Befehle (al), Ladebefehle (ld), Speicherebefehle (st) und
bedingte bzw. unbedingte Sprungbefehle (br) codiert sind. Die durchgezogenen
Pfeile stehen dabei für echte Datenabhängigkeiten, die gestrichelten Pfeile für
potentielle Datenabhängigkeiten ( ambiguous dependency ). Letztere treten nur zwi-
schen Speichere- und Ladebefehlen auf, sofern die Adressen unbekannt sind, d.h.
nicht feststeht, ob eine echte Datenabhängigkeit besteht oder nicht besteht. Falls die
Befehlsfolge von einem superskalaren Prozessor ohne Spekulationen bearbeitet
wird, lassen sich nur die in Bild 3.45b hervorgehoben umrahmten Befehle in den
Zeilen 1, 2 und 4 ausführen. Insbesondere ist zu diesem Zeitpunkt wegen der Daten-
abhängigkeit zum arithmetisch-logischen Befehl in Zeile 4 nicht entscheidbar, ob
der Sprungbefehl verzweigt oder nicht verzweigt, weshalb die auf Zeile 5 folgenden
Befehle zunächst noch unbearbeitet bleiben.
Der Parallelitätsgrad ist verbesserbar, indem mit Hilfe eines Trace-Caches und der
darin enthaltenen Einheit zur Mehrfach-Sprungvorhersage eine Kontrollflussspeku-
lation durchgeführt wird. Wie in Bild 3.45c dargestellt, lassen sich neben den Sprün-
gen nur solche Befehle ausführen, die keine echten Datenabhängigkeiten aufweisen,
vorausgesetzt, die dabei erzeugten Ergebnisse werden noch nicht in den sichtbaren
Maschinenstatus übernommen. Stellt sich nämlich heraus, dass ein Sprungbefehl
falsch vorhergesagt wurde, sind die Ergebnisse aller spekulativ bearbeiteten Befehle
zu verwerfen (siehe hierzu auch Abschnitt 3.2.3). In Bild 3.45c ist dies durch
Kreuze in den Zeilen 11 bis 13 symbolisiert.
Eine weitere Parallelisierung ist erreichbar, indem zusätzlich zur Kontrollfluss- eine
Datenflussspekulation erfolgt. Zur Erinnerung: Regulär dürfen Ladebefehle nur aus-
geführt werden, wenn feststeht, dass sich vorangehende unbearbeitete Speicherebe-
fehle nicht auf identische Adressen beziehen. Bei einer Datenflussspekulation wird
der Lesezugriff dennoch ausgeführt und erst mit dem Speicherebefehl geprüft, ob
dies zulässig war. Gegebenenfalls ist das erzeugte Ergebnis zu annullieren und der
Ladebefehl zu wiederholen.
Bild 3.45d zeigt, wie sich die Datenflussspekulation auf die dargestellte Befehls-
folge auswirkt. Zunächst wird die Bearbeitung der Speicherebefehle in den Zeilen 3
und 9 verzögert, bis die Abhängigkeiten zu den jeweils vorangehenden Befehlen
gelöst sind. Dessen ungeachtet werden die Ladebefehle in den Zeilen 6 und 10 spe-
kulativ ausgeführt und die gelesenen Werte bis zur Verfügbarkeit der von den Spei-
Search WWH ::




Custom Search