Pipeline -Stall
Im Design von Pipeline -Computerprozessoren, a Pipeline -Stall ist eine Verzögerung bei der Ausführung von a Anweisung Um a zu lösen Gefahr.[1]
Einzelheiten
Standardmäßig Fünf-Stufe Pipeline, während der DecodierungsstufeDie Steuereinheit bestimmt, ob die dekodierte Anweisung aus einem Register liest, in das der aktuell ausgeführte Anweisungen schreibt. Wenn diese Bedingung gilt, bleibt die Steuereinheit die Anweisung durch einen Taktzyklus. Es bleibt auch die Anweisung in der Fetch -Stufe beendet, um zu verhindern, dass die Anweisung in dieser Phase durch die nächste Anweisung im Programm überschrieben wird.[2]
In einem Von Neumann Architektur Dies verwendet das Programmregister (PC), um die aktuelle Anweisung in der Pipeline zu ermitteln, um zu verhindern PC -Register und die Anweisung in der Abrufstufe ist erhalten, um Änderungen zu verhindern. Die Werte bleiben bis zur Anweisung erhalten, die den Konflikt durch die Ausführungsstufe durchlaufen hat.[3] Ein solches Ereignis wird oft als als genannt BlaseAnalog mit einer Luftblase in einem Flüssigkeitsrohr.
In einigen Architekturen muss die Ausführungsstufe der Pipeline in jedem Zyklus immer eine Aktion ausführen. In diesem Fall wird die Blase durch Fütterung implementiert NOP ("Keine Operation") Anweisungen zur Ausführungsphase, bis die Blase daran vorbei ist.
Beispiele
Zeitleiste
Das Folgende sind zwei Hinrichtungen der gleichen vier Anweisungen durch eine 4-stufige Pipeline, aber aus irgendeinem Grund führt eine Verzögerung beim Abrufen der lila Anweisung in Zyklus Nr. 2 zu einer Blase, die auch alle Anweisungen danach verzögert.
![]() | ![]() |
Normale Ausführung | Ausführung mit einer Blase |
Klassische RISC -Pipeline
Das folgende Beispiel zeigt eine Blase, die in a eingefügt wird Klassische RISC -Pipeline, mit fünf Stufen (if = Befehlsabruf, ID = Anweisungsdecodieren, Ex = execute, mem = Speicherzugriff, WB = Register zurückschreiben). In diesem Beispiel sind Daten, die nach der MEM -Stufe (4. Stufe) der ersten Anweisung verfügbar sind, als Eingabe nach der Ex -Stufe (3. Stufe) der zweiten Anweisung erforderlich. Ohne Blase hat die Ex -Stufe (3. Stufe) nur Zugriff auf die Ausgabe der vorherigen EX -Stufe. Das Hinzufügen einer Blase löst die zeitliche Abhängigkeit auf, ohne die Daten mit der Zeit rückwärts zu verbreiten (was unmöglich ist).
Rückwärts rechtzeitig umgehen | Problem mit einer Blase behoben |
![]() | ![]() |
Siehe auch
Verweise
- ^ Patterson, David A.; Hennessy, John L., Computerorganisation und Design (4 ed.), Morgan Kaufmann, p. 338
- ^ Patterson, David A; Hennessy, John L (2014), Computerorganisation und Design: Die Hardware-/Software -Oberfläche (5. Ausgabe), p. 318, OCLC 1130276006, abgerufen 2020-05-25
- ^ Patterson, David A.; Hennessy, John L., Computerorganisation und Design (4 ed.), Morgan Kaufmann, p. 373