1.7 KiB
1.7 KiB
MU7-Rechner
Pipeline
- erlaubt den nächsten Befehl zu holen während der letzte noch bearbeitet wird
- für Implementierung notwendig:
- Ergebnisse jeder Pipelinestufe in Zwischenregistern speichern
- Stufen werden unabhängig voneinander
- Stufen können gleichzeitig arbeiten
- Ergebnisse jeder Pipelinestufe in Zwischenregistern speichern
- Für jede Stufe eigenes Instruktionsregister
- steuert Abarbeitung des jeweiligen Befehls
- Sprungbefehle führen zu äußerem Eingriff in den Ablauf der Pipelinestufen
- kann Ausführung der jeweiligen Operation verhindern
- Moderne Pipelines:
- Pipelines mit 5-17 Stufen
- längere Bearbeitung von Floatingpoint-Befehlen → lange Pipelines
Datenpfad mit 5-Stufen Pipeline
Pipeline 6-stufig
- fetch: nächsten Befehl aus Speicher holen
- dec: Befehl dekodieren (Befehlsart ermitteln)
- reg: Operanden aus Registerbank holen
- ALU: ALU Berechnung / Speicheradresse berechnen
- mem: Zugriff auf Speicher
- res: Ergebnis in Registerbank zurückschreiben
Pipeline-Hazard durch Registerzugriff
read after write Hazard
Nachteil der Pipeline: Sprungbefehle
- Sprungbefehle brauchen 5 Takte zusätzlich um nächste gültige Instruktion auszuführen
- alle Befehle in der Pipeline müssen verworfen werden
- Ausweg: Forwarding
- Nach Berechnung der neuen Sprungadresse
- Direkt in IADR Register/PC schreiben
- nur noch 3 Leertakte
- ist in allen modernen Prozessoren vorhanden
- Nach Berechnung der neuen Sprungadresse
Pipeline-Hazard durch Sprungbefehl
Sprungverhalten einer Pipeline mit Forwarding