Registerdatei-Rückschreiben für Pipelining vs. Multicycle-Implementierung für MIPS-Prozessoren

Wir wissen, dass bei einer Mehrzyklus-Implementierung eines MIPS-Prozessors der R-Typ-Befehl 4 Zyklen benötigt.

In der Pipeline-Implementierung von MIPS ist jedoch für Befehle vom Typ R die vierte Stufe (MEM) vorhanden, aber es passiert nichts Wesentliches (während dieser Stufe). Das eigentliche Zurückschreiben der Registerdatei erfolgt im 5. Zyklus (WB).

Warum erfolgt das Zurückschreiben nicht im 4. Zyklus selbst (für die Pipeline)?

Antworten (1)

Warum erfolgt das Zurückschreiben nicht im 4. Zyklus selbst (für die Pipeline)?

Einfach weil das nicht die Funktion des 4. Zyklus ist. Stellen Sie sich das Pipelining als eine Reihe von Buckets vor. Jeder Bucket hat eine bestimmte Rolle. Wasser wird in den ersten Eimer gegossen. Von der ersten in die zweite. Vom zweiten in den dritten usw. Wenn das Wasser in jedem Eimer ist, wird etwas Bestimmtes damit gemacht (falls erforderlich). Nur wenn es den 5. Bucket erreicht, wird die dem 5. Bucket zugeordnete Operation darauf ausgeführt.

CPU-ähnlicher ausgedrückt ist jede Phase der Pipeline eine separate Teilschaltung mit dedizierten Operationen. Die 5. Phase befasst sich mit dem Zurückschreiben in Register. Die 4. nicht. Sie können dies in der 4. Phase nicht tun, da diese Teilschaltung nicht in der Lage ist, in ein Register zu schreiben, sondern nur in den Speicher.

Außerdem können Sie nicht von der 3. Phase zur 5. Phase "vorwärts springen", da die 5. Phase von der vorherigen Anweisung in der Pipeline verwendet wird.

Dieses Bild soll verdeutlichen:

Geben Sie hier die Bildbeschreibung ein

Wenn die Anweisung 2 direkt von ALUzu springen würde, würde sie mit der vorherigen Anweisung kollidieren, wenn diese -> -> Reggehen würde, da beide Operationen gleichzeitig in derselben physikalischen Schaltung (bei Taktzyklus CC5) auftreten würden.ALUDMRegReg

Eine Optimierung, die es jedoch tun kann (und tut), besteht darin, Daten zurück in die Pipeline zu senden, sodass es, anstatt beispielsweise in Register $4 zu schreiben und dann unmittelbar danach aus Register $4 zu lesen, die Daten einfach dorthin zurückleitet, wo sie gelesen werden würden $4, um Zeit zu sparen. Dies wird als Datenumgehung bezeichnet und ist in Abschnitt 2.6 des MIPS M4K-Handbuchs detailliert beschrieben .