updatet
This commit is contained in:
130
Writerside/topics/RA/MU4-5Rechner.md
Normal file
130
Writerside/topics/RA/MU4-5Rechner.md
Normal file
@ -0,0 +1,130 @@
|
||||
# MU4 und MU5 Rechner
|
||||
## Registeranzahl erhöhen
|
||||
### Registerarchitektur
|
||||
- Gesamtzahl der Register ist normalerweise eine Zweierpotenz
|
||||
- 8 (ARM-Thumb), 16 (ARM), 32 (Power PC, MIPS) und mehr Register
|
||||
→ Ergebnisse von Registern können in einem von n Registern gespeichert werden
|
||||
- Manchmal werden Spezialregister (_PC, SP, LR_) wie andere Register adressiert
|
||||
- Vorteil: Werte können in arithmetischen Operationen und zur Adressierung benutzt werden
|
||||
- _ARM: PC in R15, LR in R14, SP in R13_
|
||||
|
||||
**Adressierung der Quell- / Zielregister muss im Befehl enthalten sein**
|
||||
- Bei 16 Registern ist 4Bit (=n) Adressinformation für QR und ZR nötig
|
||||
- 2-Adress-Befehle (_bspw. add R0, R1 ; R0 += R1_)
|
||||
- brauchen 2n Bits zur Dekodierung
|
||||
- 3 Adress-Befehle (_bspw. add R0, R1, R2 ; R0 = R1+R2_)
|
||||
- brauchen 3n Bits zur Dekodierung
|
||||
- Prozessoren mit 16 Bit
|
||||
- 2-Adress-Befehle, wenig Register
|
||||
- Prozessoren mit 32 Bit
|
||||
- 3-Adress-Befehle, viele Register
|
||||
|
||||
## Konsequenzen aus der Registerarchitektur
|
||||
- Gut
|
||||
- Register erlauben schnellere Speicherung von Werten
|
||||
- arithmetische Befehle lassen sich in einem Takt ausführen
|
||||
- Register erlauben indirekten Zugriff auf Variablen
|
||||
- Inhalt eines Registers wird als Adresse genutzt
|
||||
- Registerbreite sollte groß genug für jede Adresse sein
|
||||
- Schlecht
|
||||
- Direkter Zugriff funktioniert bei einem Befehlssatz mit gleicher Breite aller Befehle nicht mehr
|
||||
- Laden von Konstanten (Immediate Werte) in ein Register ist schwierig
|
||||
- nur kleine Immediate Werte haben Platz im Befehlscode
|
||||
|
||||
## Link-Register für Unterprogrammaufrufe
|
||||
- Speichert Rücksprungadresse bei Ausführung eines Unterprogramms
|
||||
- (vorher: Push auf den Stack)
|
||||
- Am Ende des UP wird die Adresse wieder in den PC geschoben
|
||||
- (vorher: Pop vom Stack)
|
||||
- Erlaubt Unterprogrammaufrufe ohne Speicherung auf Stack
|
||||
|
||||
## MU4 mit Registersatz (Übergang von Akkumulator- zur Registerarchitektur)
|
||||

|
||||
- Einfachste Operation (_add r1, r2, r3_) kann nicht erzeugt werden
|
||||
- Registerbank hat nur Zugriff auf A-Bus
|
||||
|
||||
**Prozessor funktioniert so noch nicht!**
|
||||
|
||||
_Registerbank braucht Zugriff auf A- und B-Bus_
|
||||
|
||||
## MU5: Verbesserung des internen Bussystems und Shifter
|
||||

|
||||
- meiste Befehle lassen sich realisieren
|
||||
- Jedes Register hat Ausgang auf A- und B-Bus
|
||||
- Operanden, die über B-Bus in ALU kommen, können vorher noch geschoben werden
|
||||
- Auf B-Bus können kleine Immediate-Werte aus IR in Berechnungen verwendet werden
|
||||
- Es werden noch zu viele Takte pro Operation benötigt
|
||||
|
||||
- bisher konnten Registerinhalte auf A-Bus gelegt werden, Immediate auf B-Bus
|
||||
- nicht optimal, da arithmetische Operationen zwei Registeroperanden haben
|
||||
- Verbesserung, wenn Registerinhalte auf A-Bus und B-Bus gelegt werden können
|
||||
|
||||
### Shifter
|
||||
- erlaubt es Operanden des B-Bus vor der Verarbeitung nochmal zu schieben
|
||||
- Wichtig für Adressberechnungen
|
||||
- häufig ein Wortoffset in eine Adresse auf Byte-Basis umgewandelt
|
||||
|
||||
## MU5: Verbesserte ALU
|
||||

|
||||
- Einsatz von Modifikatoren
|
||||
- Kann Eingang durchschalten
|
||||
- Kann alle Bits auf 0 / 1 setzen
|
||||
- Einsatz eines Shifters
|
||||
- Kann Wert um Shiftweite nach links / rechts schieben
|
||||
- Kann Rotation durchführen
|
||||
- Weitere Funktionen der ALU
|
||||
- Neben **A+B, A-B, A+B+1**
|
||||
- **A AND B**
|
||||
- **A OR B**
|
||||
- **NOT A**
|
||||
- **NOT B**
|
||||
- **A XOR B**
|
||||
|
||||
## MU5 Fetch-Zyklus
|
||||

|
||||
- in Aout muss Kopie von PC stehen
|
||||
- vorheriger Befehl muss sicherstellen, dass das gegeben ist
|
||||
- Insbesondere Datentransfer-Befehle
|
||||
|
||||
## Arithmetische Operationen
|
||||

|
||||
- brauchen ein Taktzyklus + Fetch
|
||||
|
||||
## Datentransfer
|
||||

|
||||
|
||||
## Steuermatrix des MU5
|
||||

|
||||

|
||||
|
||||
## Vergleich MU5 - ARM-Design
|
||||
- Datenverarbeitungsbefehle können wie bei ARM in einem Takt durchgeführt werden
|
||||
- Datentransferbefehle
|
||||
- MU5: 3 Takte
|
||||
- ARM: 2 Takte
|
||||
- Dout-Register gibt Informationen direkt an Speicher
|
||||
- Din braucht auch keinen Takt Verzögerung
|
||||
- ARM-Prozessor
|
||||
- Kann Daten über Din direkt in Registerbank zu schreiben
|
||||
- sonst wären einige Adressierungsarten nicht möglich
|
||||
|
||||
## MU5a
|
||||
### Verbesserte Adressberechnung und Umstellung der Speicheradressierung
|
||||

|
||||
|
||||
#### Optimierung der Speicheradressierung
|
||||
- 32 Bit → Register, Bus, ALU
|
||||
- Speicher bisher wortweise
|
||||
- verbraucht für kleine Datenwerte viel Speicher
|
||||
- Umstellung auf byteweise Adressierung erlaubt Einführung neuer Befehle für Adressierung von Halbwörtern
|
||||
- zusätzlicher Incrementer für Register mit Speicheradressen
|
||||
- effiziente Inkrementierung um 2 oder 4
|
||||
|
||||

|
||||
|
||||
#### Speicheradressierung
|
||||

|
||||

|
||||
|
||||
> AB 01 CD 23 steht im Speicher als 23 CD 01 AB
|
||||
|
Reference in New Issue
Block a user