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):
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
Carsten Kelling 1996 (); letzte Änderung: 17. September 1997 |