David Schirrmeister 776a6ec0f9 updatet
2024-05-10 10:19:19 +02:00

2.1 KiB

MU2/3-Rechner

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

  • image_128.png
  • Code wird im Speicher verschiebbar

Labels

  • Umsetzung von PC-relativen Sprüngen mit Labels
  • image_129.png

Indizierte Adressierung

Beispiel Stack

image_130.png

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

image_131.png

  • Gesamtlaufzeit ist zu lang!
  • in einem Takt möglich
    • falls Taktfrequenz niedrig genug

MU3: Einführung des Adressregisters

image_132.png

  • 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

image_133.png

Problem im Fetch-Zyklus

Datentransferbefehle ändern Aout

image_134.png