67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
# MU2 und MU3Rechner
|
|
## MU2 Rechner
|
|
## Adressraum vergrößern
|
|
### Wortbreite vergrößern
|
|
- 16 Bit → 32 Bit
|
|
- Register, Bus, ALU
|
|
|
|
### Adressberechnung mit Offset
|
|
- Adresse = Register(bereits vorhandene Adresse) + Offset
|
|
- Offset kann mit weniger Bits angegeben werden
|
|
- Adresse hat volle Breite
|
|
|
|
**Wird benötigt für:**
|
|
- **Relative Adressierung** für Unterprogramme / Sprünge
|
|
- **Indizierte Adressierung** für Speicherzugriffe
|
|
- Wie indirektes Laden und Speichern mit Offset
|
|
- Laden von **PC-relativen Konstanten**
|
|
- Prozessoren mit fester Befehlsbreite
|
|
- Nur kleine Konstanten können im Code dekodiert werden
|
|
- Falls Konstanten in der Nähe des augenblicklichen Programms (_bspw. hinter Returnanweisung eines Unterprogramms_)
|
|
- können geladen werden
|
|
|
|
### Relative Adressierung
|
|
- 
|
|
- Code wird im Speicher verschiebbar
|
|
|
|
#### Labels
|
|
- Umsetzung von PC-relativen Sprüngen mit Labels
|
|
- 
|
|
|
|
### Indizierte Adressierung
|
|
#### Beispiel Stack
|
|

|
|
- In Unterprogrammen wird dyn. Speicher reserviert, indem der Stackpointer dekrementiert wird
|
|
- Zugriff auf Speicher über Stack + Offset(in Befehl)
|
|
- PUSH & POP nicht ausreichend
|
|
- bei mehreren Variablen auf dem Stack jeweils beim Lesen der Stack geräumt werden müsste
|
|
|
|
### Adressberechnung in der ALU
|
|
- Adresse als Ergebnis der ALU ohne Speicherung in ACC
|
|
- Keine absolute Adressierung (aus IR)
|
|
- Nur ALU schreibt auf Adressbus (ohne Multiplexer)
|
|
- 32 bit
|
|
|
|
#### Maximale Laufzeit:
|
|

|
|
- **Gesamtlaufzeit ist zu lang!**
|
|
- in einem Takt möglich
|
|
- falls Taktfrequenz niedrig genug
|
|
|
|
## MU3: Einführung des Adressregisters
|
|

|
|
- Ein Takt mehr um Daten aus dem Speicher zu holen
|
|
- Taktfrequenz kann höher sein
|
|
- Laufzeit pro Teilstück kürzer
|
|
- **Nachteil:**
|
|
- Nutzen des PC und Inkrementieren geht nicht mehr parallel
|
|
- in Aout muss vor Fetch eine Kopie des aktuellen PC stehen
|
|
- _(Fetch beginnt bei Aout!)_
|
|
|
|
### Beispiel relative Sprünge
|
|

|
|
|
|
## Problem im Fetch-Zyklus
|
|
**Datentransferbefehle ändern Aout**
|
|
|
|
 |