4.8 KiB
4.8 KiB
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
- 8 (ARM-Thumb), 16 (ARM), 32 (Power PC, MIPS) und mehr Register
- 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
- 2-Adress-Befehle (bspw. add R0, R1 ; R0 += R1)
- 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
- Inhalt eines Registers wird als Adresse genutzt
- 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
- Wichtig für Adressberechnungen
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
- vorheriger Befehl muss sicherstellen, dass das gegeben ist
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
- Kann Daten über Din direkt in Registerbank zu schreiben
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