[vorheriger Abschnitt][nächster Abschnitt][Inhalt]


3.3 Nachbetrachtung: Steuerwerk

Nach soviel Lernen durch Simulationsexperimente sollten wir uns wieder der Theorie zuwenden, nämlich der aufgeschobenen Betrachtung des Steuerwerks des VNR. Das sollte nicht allzu schwierig werden, denn fast alle Komponenten des Steuerwerks sind uns bereits begegnet; die Abbildung links zeigt noch einmal ein allgemeingültiges Steuerwerk eines Von-Neumann-Rechners gemäß [Duden88].
Mit dem, was wir über die Funktionsweise unseres ganz speziellen VNR gelernt haben, können wir das Steuerwerk zu der in der zweiten Abbildung gezeigten Struktur konkretisieren: Unser Steuerwerk verfügt neben dem Befehlsregister und dem Befehlszähl-register, das wir Programmzähler (PC) genannt haben, noch über ein drittes Register, das Hilfsregister (für indirekte Adressierungen). Die Komponente, die den Wert des Programmzählers um eins erhöht, stellen wir, wie gewohnt, als ALU dar; diese ist fest auf „Erhöhen um eins" eingestellt, benutzt als einzigen Operanden den Wert des PC und liefert den inkrementierten Wert an den PC zurück.
Wir wissen jetzt, daß der gemeinsame Programm- und Datenspeicher die Werte liefert, die, wenn auch in unterschiedlichen Phasen der Befehlsausführung, in Befehlsregister und Hilfsregister gespeichert werden. Der Programmzähler jedoch wird auf drei Weisen gesetzt: Nach einem Neustart erhält er, wie die anderen Register auch, einen festen Startwert, in jeder Decodierungsphase wird sein Wert, wie beschrieben, inkrementiert und bei einem Sprungbefehl mit, falls vorhanden, erfüllter Bedingung übernimmt er den Wert des Adreßteils des Befehlsregisters.

Wir haben auch gesehen, daß die Adressen, an denen in den Programm- und Datenspeicher geschrieben oder aus ihm gelesen wird, von drei verschiedenen Quellen stammen können (Multiplexersymbol rechts unten):

  1. Der rechte Teil eines Befehlswortes (Adreßteil) kann „unmittelbare" Adressen für Lade- oder Speicherbefehle enthalten (linker Multiplexereingang).
  2. Mit dem Wert des PC wird einmal pro Befehl der Speicher adressiert, um das neue Befehlswort einzulesen; an diese Adresse wird niemals geschrieben (mittlerer Multiplexereingang).
  3. In dem Hilfsregister wird durch ein vorhergehendes Laden aus dem Speicher die effektive (endgültige) Adresse eines indirekten Lade- oder Speicherbefehls abgelegt.

Die Komponente „Adreßberechnung" des allgemeinen VNR-Steuerwerkes benötigen wir nicht. Sie soll die Berechnung der effektiven Adresse sowohl bei indirekter Adressierung, die wir mit dem Hilfsregister explizit dargestellt haben als auch bei relativen Sprüngen, die unser VNR nicht kennt, symbolisieren. Bei dieser Art von Sprungbefehlen stellt der Adreßteil des Befehlsregisters eine, positive oder negative, Zahl dar, die erst zu dem PC addiert werden muß, um das Sprungziel zu erhalten. Dieser Befehlstyp ist immer dann sinnvoll, wenn die Anzahl Bits, die im Adreßteil eines Befehles zur Verfügung stehen, nicht den gesamten Adreßraum des Prozessors abdecken. Die meisten Sprünge führen nämlich zu Zielen „in der näheren Umgebung"; zur Not läßt sich eine weit entfernte Adresse auch immer noch mit mehreren Sprüngen erreichen.
Mit „Adreßberechnung" kann auch das häufig vorkommende „Erweitern" der Adresse gemeint sein, auch wenn das Symbol sich dazu eigentlich zwischen Befehlsregister und PC befinden müßte. Wenn ein Computer beispielsweise nur 32bittige Befehlswörter verwendet, aber auf Bytes genau adressieren kann, wird oftmals festgelegt, daß diese Befehlswörter nur auf durch vier teilbaren (Byte-)Adressen liegen dürfen. Dann ist es sinnvoll, bei einer Sprungadresse die beiden rechten Stellen, die sowieso immer „00" lauten müssen, gar nicht erst im Befehlswort mit zu speichern. Bevor der Adreßteil eines solchen Befehlswortes aber dem Hauptspeicher als Adresse dienen kann, muß er natürlich erst rechts um zwei Nullen ergänzt – „erweitert" – werden. Mit diesem Trick läßt sich dann in einem viermal so großen Bereich „springen". Bei Adressen, unter denen Daten im Speicher gesucht oder abgelegt werden, muß keine Erweiterung stattfinden (sonst wäre es mit der Byte-Genauigkeit vorbei).
Was übrigbleibt, sind der „Decodierer" und der „endliche (Steuer-)Automat". Der „Decodierer" ist ein Schaltznetz, das den Operationsteil des Befehlsregisters als Eingang hat und die verschiedenen Maschinenbefehle, die der jeweilige VNR beherrscht, erkennt. Der verbleibende Kasten, egal, unter welchem Namen, übernimmt die Ablaufsteuerung der Befehlsausführung, sorgt also sowohl für den Zyklus FETCH-DECODE-EXECUTE als auch für die zu dem aktuellen Befehl passenden Aktionen in der EXECUTE-Phase. Der in den Applets vorgestellte VNR ist als sogenannter endlicher Automat realisiert, was eine gleichberechtigte Alternative zu einer sogenannten Mikroprogrammsteuerung darstellt; wichtig ist, daß es sich hier um ein Schaltwerk handelt, daß bestimmte Zustände durchläuft und dabei das Geschehen im Rechner über Steuersignale kontrolliert.

Zu den Steuersignalen gehören mindestens


[vorheriger Abschnitt][nächster Abschnitt][Inhalt] Carsten Kelling 1996 ([EMail senden]); letzte Änderung: 17. September 1997