50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# 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
|
|
 |