# 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 - 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 ## Pipeline-Hazard durch Sprungbefehl Sprungverhalten einer Pipeline mit Forwarding  ## Datenpfad mit 5-Stufen Pipeline und Forwarding des PC 