David Schirrmeister 98dd74ca9d updatet
2024-05-08 14:56:21 +02:00

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
  • 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
  • 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)

image_135.png

  • 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

image_136.png

  • 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

image_137.png

  • 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

image_138.png

  • in Aout muss Kopie von PC stehen
    • vorheriger Befehl muss sicherstellen, dass das gegeben ist
      • Insbesondere Datentransfer-Befehle

Arithmetische Operationen

image_139.png

  • brauchen ein Taktzyklus + Fetch

Datentransfer

image_140.png

Steuermatrix des MU5

image_141.png
image_142.png

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

image_143.png

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

image_144.png

Speicheradressierung

image_145.png
image_146.png

AB 01 CD 23 steht im Speicher als 23 CD 01 AB