Information Technology Reference
In-Depth Information
wird und die Überprüfung der Fehlerfreiheit zu einem späteren Zeitpunkt erfolgt
(siehe Abschnitt 3.1.5).
Im Gegensatz zu Lesezugriffen sind Schreibzugriffe auf den Datenspeicher erst aus-
führbar, wenn sie den Kopf des Reorder-Buffers erreicht haben, und zwar deshalb,
weil die durch den Zugriff bewirkte Speicherzellenänderung nicht ohne weiteres
rückgängig gemacht werden kann. Zwar lässt sich prinzipiell der alte Inhalt einer
Speicherzelle vor der Modifikation in einem History-Buffer sichern, dies erfordert
jedoch die Realisierung des Datencaches mit einem separaten Leseport, sofern der
Zugriff ohne Zeitverlust erfolgen soll.
Wegen des hohen Aufwands wird daher gewöhnlich so verfahren, dass die eigentli-
chen Schreibzugriffe in der richtigen, d.h. programmierten Reihenfolge ausgeführt
werden. Vorbereitende Aktionen, wie z.B. die Berechnung der effektiven Adresse,
lassen sich selbstverständlich bereits vor der In-der-Reihe-Beendigung des Befehls
bearbeiten. Insbesondere ist es möglich, die i.Allg. erforderliche Umsetzung der vir-
tuellen in reale Adressen unmittelbar nach dem Start des Speicherebefehls durchzu-
führen. Hierbei sind Ausnahmeanforderungen, genau wie bei Ladebefehlen üblich,
im Reorder-Buffer zu protokollieren und deren Bearbeitung zu verzögern, bis alle
vor dem Speicherebefehle codierten Befehle fehlerfrei abgeschlossen sind.
Obwohl man die Reihenfolge sequentiell aufeinander folgender Schreibzugriffe
nicht verändern darf, ist dies mit Lesezugriffen möglich und auch sinnvoll, wenn die
Operanden des nächsten sequentiell auszuführenden Ladebefehls noch nicht verfüg-
bar sind. Des Weiteren können Ladebefehle, die regulär nach einem Speicherebefehl
auszuführen sind, sogar davor bearbeitet werden, sofern sie nicht auf dieselbe Spei-
cherzelle zugreifen. Dies ist, wie in Abschnitt 2.3.1 bereits beschrieben wurde, des-
halb vorteilhaft, weil die Ausführung von Befehlen, die das zu lesende Datum verar-
beiten, nicht unnötig verzögert werden muss.
Um zu erkennen, ob das Vorziehen eines Ladebefehls erlaubt ist, wird oft so verfah-
ren, dass man die verwendete effektive Adresse mit den Adressen aller bereits
gestarteten Schreibzugriffe auf Nichtübereinstimmung vergleicht. Kompliziert wird
diese Abhängigkeitsüberprüfung dadurch, dass die in den Befehlen codierten virtu-
ellen Adressen nicht eineindeutig auf reale Adressen abgebildet sein müssen. Zur
Einsparung der für die Adressumsetzung benötigten Zeit werden daher oft nur die
Bytenummern der virtuellen Adressen verglichen, die i.Allg. unverändert in den
zugehörigen realen Adressen enthalten sind (siehe Abschnitt 2.3.2). Als Konse-
quenz ist jedoch in Kauf zu nehmen, dass die Reihenfolge mit der Zugriffe ausge-
führt werden, in einigen Fällen nicht verändert wird, obwohl dies möglich wäre, da
die realen Adressen unterschiedlich, die Bytenummern jedoch identisch sind.
Das Umordnen von Leseoperationen, mit denen man auf den Datenspeicher
zugreift, ist unproblematisch, falls die hier beschriebenen Details berücksichtigt
werden. Beim Ansprechen von Peripheriebausteinen ist die Reihenfolge der lesen-
den und schreibenden Zugriffe jedoch strikt einzuhalten, weil dadurch das Verhalten
eines Bausteins oft ebenso beeinflusst wird, wie z.B. durch die Daten, die in die
Peripherieregister geschrieben werden. Zum Beispiel ist eine Unterbrechungsanfor-
Search WWH ::




Custom Search