18 / 24 · Konzept
Abhängigkeiten, Ressourcenkonflikte und Ergebnisweiterleitung
Vergleichen Sie Wartezyklen und Ergebnisweiterleitung, wenn eine Operation ein früheres Ergebnis benötigt.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Überlappung benötigt mehr als Reihenfolgeerhaltung
Unabhängige Datenstromberechnungen lesen keine früheren Ergebnisse, daher können sich Transaktionen sicher überlappen. Ein Operator mit Registerdatei kann dagegen das Ergebnis einer vorhergehenden Operation benötigen. Das Lesen eines Registers vor Verfügbarkeit eines älteren Schreibzugriffs erzeugt eine Read-after-write-Datenabhängigkeit. Die Arithmetik kann korrekt sein, obwohl ihr Operand zu früh erfasst wurde.
Beginnen Sie mit R1=4. I0 führe R1←R1+3 aus und I1 führe R2←R1×2 aus. In diesem Beispiel erfasst I0 Operand 4 an Flanke 0, berechnet 7 im folgenden Takt und schreibt R1 an Flanke 1. I1 kann beim Abtasten von R1 an Flanke 1 den alten Wert 4 sehen und R2=8 erzeugen. Sequenzielle Ausführung verlangt R2=14. Definieren Sie das Lese-/Schreibverhalten der Registerdatei an derselben Flanke ausdrücklich.
| Abhilfe | Von I1 gesehener Operand | Anforderung |
|---|---|---|
| Altes R1 lesen | 4 | Hier falsch |
| Bis Flanke 2 warten | 7 | Operation und Begleitfelder erhalten |
| Rechenergebnis weiterleiten | 7 unmittelbar vor Flanke 1 | Ergebnis verfügbar und Pfad erfüllt Timing |
Ergebnisweiterleitung wählt ein berechnetes Ergebnis, bevor es den architekturellen Speicher erreicht. Passende Zielnummern reichen nicht: Der Erzeuger muss gültig sein, das Register tatsächlich schreiben und ein fertiges Ergebnis besitzen. Bei mehreren passenden Erzeugern wählen Sie die jüngste ältere Operation. Leiten Sie niemals eine Leerstelle oder eine verworfene Operation weiter.
Ein Ladezugriff, dessen Antwort noch nicht eingetroffen ist, lässt sich nicht durch Weiterleitung unverfügbarer Daten beheben. Halten Sie den Verbraucher an und erhalten Sie dabei Opcode, Quellkennungen und Tag. Entscheiden Sie, ob andere unabhängige Stufen weiterlaufen dürfen.
Strukturelle Konflikte entstehen, wenn zwei Stufen gleichzeitig einen Speicheranschluss benötigen. Auch ohne Datenabhängigkeit sind Arbitrierung oder zusätzliche Ressourcen nötig. Verzweigungen erzeugen Steuerungskonflikte, die das Verwerfen von Arbeit auf dem falschen Pfad erfordern. Analysieren Sie, worauf jede Operation wartet und welcher Zustand gehalten werden muss. Unser Abschlussprojekt bleibt ein unabhängiger Datenstrom; sein Bestehen belegt keine Behandlung von CPU-Abhängigkeiten.
Selbst ausprobieren
Bei R1=4 addiert I0 drei und I1 verdoppelt das Ergebnis. Vergleichen Sie das Ergebnis von I1 aus altem Speicher mit korrekter Weiterleitung. Was gilt, wenn I0 ein Ladezugriff mit noch nicht verfügbaren Daten ist?
Erklärung lesen
Das Lesen der alten 4 ergibt 8; Weiterleitung der 7 ergibt 14. Ein unverfügbares Ladeergebnis erfordert einen Halt des Verbrauchers unter Erhaltung seiner Operation und seines Tags. Ein passendes Ziel rechtfertigt keine Weiterleitung unfertiger Daten.