Ich brauche Hilfe beim Verständnis der Lösung aus dem Lösungshandbuch.
Die Frage stammt aus der Übung 4.13.5 von Kapitel 4 im Buch Computer Organization and Design von Patterson und Hannessey (4. Auflage).
Die Frage bezieht sich auf das Pipelining von Anweisungen.
Die Frage
Betrachten Sie zwei Anweisungssequenzen: Fügen Sie diesem Code NOP-Anweisungen hinzu, um Gefahren zu eliminieren, wenn nur eine ALU-ALU-Weiterleitung vorhanden ist (keine Weiterleitung von der MEM- zur EX-Stufe).
Die Lösung aus dem Lösungshandbuch
Bei einer ALU-ALU-Only-Weiterleitung kann ein ALU-Befehl an den nächsten Befehl weiterleiten, aber nicht an den zweitnächsten Befehl (weil dies eine Weiterleitung von MEM zu EX wäre). Eine Last kann überhaupt nicht weiterleiten, da sie den Datenwert in der MEM-Stufe bestimmt, wenn es für eine ALU-ALU-Weiterleitung zu spät ist. Wir haben:
Zweifel
Die Frage fragt nach dem Hinzufügen von NOPs. Aber ich sehe kein einzelnes NOP in der angegebenen Lösung.
In der Lösung heißt es: "Eine Last kann überhaupt nicht weiterleiten, da sie den Datenwert in der MEM-Stufe bestimmt, wenn es für die ALU-ALU-Weiterleitung zu spät ist.". Wie kann es dann in der Befehlsfolge 1 zu einer "ALU-ALU-Weiterleitung von R4 von I2" kommen?
Ich verstehe den Sinn der Frage selbst nicht. Bedeutet es, die ALU-ALU-Weiterleitung durch NOPs zu ersetzen und die MA-EX-Weiterleitung unverändert zu lassen?
Dieser Link gibt die Lösung für die zweite Anweisungssequenz wie folgt: während dieser Chegg-Link seine Lösung wie folgt angibt: Was ist wahr?
(Es gibt andere Ressourcen, die andere Anleitungssequenzen geben, wie ppts und pdf aus verschiedenen Universitätskursen, aber keine davon bietet eine zufriedenstellende logische Lösung. Ich habe sie hier nicht angegeben, um weitere Verwirrung zu vermeiden.)
Wenn ich die Frage richtig lese, bedeutet dies nicht, dass die ALU-ALU-Weiterleitung in einem LW-Befehl verboten ist, sondern dass das neue Ergebnis des Ladevorgangs nicht von der MEM-Stufe weitergeleitet wird, sodass Sie jetzt ein Datenrisiko zwischen I2 haben und I3 in a. (Bearbeiten: Die MEM-Weiterleitung ist hier eigentlich umstritten, da die EX-Phase von I3 zur gleichen Zeit wie die MEM-Phase von I2 stattfindet, sodass jede Weiterleitung zu spät ist).
Wenn dies eine klassische RISC-Pipeline ist, müssen Sie einfach NOP zwischen dem LW und dem ADD hinzufügen (bearbeiten: zwei, um sowohl MEM als auch WB zu berücksichtigen), um das Datenrisiko hier zu vermeiden.
Die von dir gefundenen Lösungen stimmen nur, die ALU-ALU-Weiterleitung findet nicht statt.
Mahesha999
Mahesha999
Mahesha999
LW
da esMEM-ID
eine Weiterleitung erfordert? und wir sollten nur an die Anweisungssequenz (b) denken?Mahesha999
Toni K