Information Technology Reference
In-Depth Information
erzeugen. Ausschließlich in diesem Fall darf Bit 0 des ursprünglich ersten Operati-
onspakets gesetzt sein.
Der Nachteil eines solchen, auf freien Konventionen basierenden Verfahrens ist,
dass eine von der Funktionalität her sequentiell zu bearbeitende Operationspaket-
folge unerlaubter Weise als parallel codiert werden kann. Weist z.B. OP4 eine
Datenabhängigkeit zu OP1, OP2 oder OP3 auf und muss daher sequentiell bearbei-
tet werden, wird tatsächlich das richtige Ergebnis erzeugt, wenn ein Prozessor ver-
wendet wird, dessen Befehle entsprechend Bild 3.18a codiert sind.
Ein Prozessor, der die Befehle entsprechend Bild 3.18b parallel ausführt, generiert
hingegen ein falsches Ergebnis. Der Fehler war von Anfang an in dem entsprechen-
den Programm codiert. Er wirkt sich jedoch erst mit Verfügbarkeit des Nachfolge-
prozessors aus. Im ungünstigsten Fall geschieht dies beim Kunden, oft mit der Kon-
sequenz, dass das Fehlverhalten dem neuen Prozessor angelastet wird. Dies kann im
Extremfall von einem Konkurrenten ausgenutzt werden, um den Ruf eines Prozes-
sorherstellers zu schädigen und so Marktanteile zu gewinnen.
Die Einhaltung von Konventionen sollte deshalb nicht freiwillig erfolgen, sondern
durch geeignete Verfahren zur Laufzeit überprüft werden. Bemerkenswert ist, dass
dies weder beim Itanium 2 von Intel noch beim TMS320C62x von Texas Instru-
ments geschieht. Zwar ist die Operationsparallelität bei diesen Prozessoren beliebig
skalierbar, weshalb für eine Laufzeitüberprüfung entsprechend des zugrunde liegen-
den Regelwerks anscheinend unbegrenzte Ressourcen benötigt werden, jedoch sind
andere Prozessormerkmale nicht skalierbar und begrenzen die maximale Parallelität
im konkreten Fall deutlich.
Zum Beispiel verfügt der Itanium über 128 allgemein nutzbare Integer-Register, so
dass maximal 128 Integer-Register-Register-Operationen parallel ausgeführt wer-
den können, ohne eine Datenabhängigkeit zu verursachen. Dementsprechend lässt
sich das Einhalten von Datenflussunabhängigkeit innerhalb eines Operationspakets
einfach mit Hilfe eines Schreibbits überprüfen, das jedem Integer-Register angehef-
tet ist. Die Schreibbits werden zu Beginn der Ausführung eines Operationspakets
gelöscht und bei Schreibzugriffen gesetzt. Falls ein Lesezugriff auf ein Register
erfolgt, dessen Schreibbit gesetzt ist, liegt somit eine Datenabhängigkeit vor, die
durch eine Ausnahmeanforderung als Fehler gemeldet werden kann. Das hier ange-
deutete Verfahren wird ähnlich in superskalaren Prozessoren verwendet, um Opera-
tionen dynamisch zu parallelisieren. Eine detaillierte Beschreibung ist unter dem
Begriff Scoreboarding in Abschnitt 3.2.2 nachzulesen.
Spekulative Ausführung von Operationen
Für das VLIW-Prinzip ist von wesentlicher Bedeutung, dass es einem Übersetzer
gelingt, möglichst viele Operationen als parallel ausführbar in den Befehlen zu
codieren. Da voneinander abhängige Operationen nicht parallelisierbar sind, ist die
grundsätzliche Vorgehensweise hierbei die, unabhängige Operationen aufeinander
zuzuschieben und auf diese Weise Gruppen zu bilden, die sich in einzelnen Befehlen
Search WWH ::




Custom Search