Inhaltsverzeichnis

Theoretische Registermaschine

Eine Registermaschine ist ein abstraktes Modell der theoretischen Informatik, das genutzt wird, um den Begriff der Berechenbarkeit zu definieren.

Eine Registermaschine besteht aus

  • einem Programm bestehend aus endlich vielen durchnummerierten Befehlen,
  • unendlich vielen durchnummerierten Speicherzellen, den Registern und
  • einem Befehlszähler, in dem die Nummer des nächsten auszuführenden Befehls gespeichert ist.

Jedes Register kann eine beliebig große natürliche Zahl speichern.

Die Registermaschine besitzt folgenden Befehlssatz:

Befehl Bedeutung
Increase Register i and jump to p Erhöht den Wert des Registers i um 1 und lädt dann die Adresse p in den Befehlszähler
Decrease Register i and jump to p Vermindert den Wert des Registers i um 1 (nur falls Wert von i > 0) und lädt dann die Adresse p in den Befehlszähler
if Value of i == 0 then jump to p else jump to q Falls der Wert des Registers i den Wert 0 hat, lade p in den Befehlszähler, ansonsten lade q in den Befehlszähler

Reale Registermaschine

Reale Computer sind auch Registermaschinen, aber in etwas anderer technischer Form. Sie bestehen

  • aus einem einzigen Register, dem Akkumulator,
  • dem Befehlszähler, der die Adresse des nächsten Befehls enthält,
  • dem Befehlsregister, das den aktuellen Befehl enthält,
  • dem Statusregister, dessen Bits entsprechend dem Ergebnis des letzten Rechenergebnisses gesetzt sind.

Der Akkumulator kann auf vielseitige Weise benutzt werden. Es existieren Befehle, um

  • Daten vom Arbeitsspeicher in den Akkumulator zu laden ("lesen"),
  • Daten vom Akkumulator in den Arbeitsspeicher zu schreiben,
  • Rechenoperationen mit dem Akkumulator auszuführen und
  • Logikoperationen mit dem Akkumulator auszuführen.

Befehlszyklus

Die Maschinensprachebefehle werden innerhalb des Prozessors in folgenden Teilschritten (Phasen) abgearbeitet ("Befehlszyklus"):

  • Fetch-Phase:
    • Der Maschinensprache-Befehl wird aus der Speicherzelle gelesen, auf die der Befehlszähler zeigt.
    • Der Befehlszähler wird entsprechend erhöht.
    • Der Operand (z.B. ein immediate-Operand oder eine Adresse) wird geladen.
    • Der Befehlszähler wird erneut entsprechend erhöht.
  • Decode-Phase:
    • Der Befehl wird entschlüsselt.
    • Steuerwerk und Rechenwerk werden für die Ausführung des Befehls vorbereitet.
  • Execute-Phase:
    • Ausführen des Befehls durch Rechenwerk und Steuerwerk