2.5 KiB
2.5 KiB
📘 Zusammenfassung: V4 Prozessor (Teil 2) – Computerarchitektur
🔁 Wiederholung aus Teil 1
- Instruktionstypen (MIPS):
- R-Format: arithmetische/logische Operationen (z. B.
add $s1,$s2,$s3) - Load/Store: Speicherzugriff (z. B.
lw,sw) - Branch: bedingte Sprünge (
beq,bne)
- R-Format: arithmetische/logische Operationen (z. B.
- Datenpfad (Full Datapath):
- Register → ALU → Speicher → Register
- Separate Instruktions- und Datenspeicher nötig, da ein Zugriff pro Zyklus
⚙️ Steuerungseinheit (Control Unit)
- Erzeugt Steuersignale aus dem Opcode:
- MemtoReg: bestimmt Datenquelle für Register-Schreiben
- ALUSrc: wählt ALU-Operand (Register vs. unmittelbarer Wert)
- RegWrite: aktiviert Schreibzugriff auf Register
- MemRead/MemWrite: steuern Speicherzugriffe
- Branch: aktiviert bei bedingten Sprüngen
- ALU Control:
- Basierend auf Opcode und Funct-Feld
- Beispiel Mapping:
| ALUOp | Funct | ALU-Funktion |
|---|---|---|
| 00 | XXXXXX | add |
| 01 | XXXXXX | sub |
| 10 | 100000 | add |
| 10 | 100010 | sub |
| 10 | 100100 | and |
| 10 | 100101 | or |
| 10 | 101010 | slt |
📦 Erweiterter Datenpfad
- Unterstützung für:
- Jumps (
j,jal):- PC-Update mit 26-Bit Zieladresse + oberen 4 Bit des alten PCs
- Steuerleitung „Jump“ wird aus Opcode dekodiert
- Branches (
beq,bne):- Zieladresse berechnen (PC+4 + Offset << 2)
- ALU prüft, ob Bedingung erfüllt (Zero-Flag)
- Jumps (
🚨 Performance-Betrachtung
- Ein-Zyklus-Datenpfad Problem:
- Längster Pfad (Critical Path) bestimmt Taktfrequenz
- Beispiel: Load-Befehl → Instruktionsspeicher → Registerfile → ALU → Datenspeicher → Registerfile
- Unterschiedliche Instruktionen hätten unterschiedliche Latenzen → nicht praktikabel
- Lösung: Pipelining
- Aufteilung des Datenpfads in Stufen
- Überlappende Bearbeitung mehrerer Instruktionen
📝 Für die Klausur merken
✅ Steuersignale (MemtoReg, ALUSrc, RegWrite, Branch, Jump)
✅ ALU Control Mapping (wie wird aus Opcode+Funct ALU-Funktion bestimmt?)
✅ Erweiterung des Datenpfads für Jump/Branch
✅ Problem des Ein-Zyklus-Datenpfads (Critical Path) → Motivation für Pipelining
✅ Unterschied: Jump vs. Branch