HSG |
|
Der Bonsai-Computer enthält typische Teile eines von-Neumann-Rechners. Ein- und Ausgabeeinheiten werden zugunsten einer größeren Übersichtlichkeit weggelassen. Ein- und Ausgaben erfolgen direkt über den Speicher.
Der Bonsai-Computer lässt sich in das
Operationswerk (alle Teile, die zur (Hand-)Abarbeitung eines Maschinenbefehls notwendig sind)
und das
Steuerwerk (alle Teile, die zur Automatisierung des Operationswerks erforderlich sind)
zerlegen.
Die Architektur des BONSAI-Computers wird völlig durch den CPU-Bildschirm dargestellt:
Sollte das nicht gelingen, so wurde das Programm ohne den Parameter 'e' gestartet, verlasse BONSAI (Alt F4) und starte mit 'bonsai e' (eventuell in eine Batchdatei bonsai.bat (mit Text-Editor erstellen) eintragen und dann wie gewohnt die Batchdatei starten) neu.
Man sieht jetzt folgendes Bild:
Der beste Weg, Klarheit in dieses vielleicht doch zunächst komplexe CPU-Schema zu bringen, ist das Kennenlernen der einzelnen Komponenten im Direktbetrieb.
Wir wollen zunächst etwas in den Speicher schreiben.
Wie kann man nun den Speicher ansprechen ? Zuerst muss eine Speicherzelle durch Anlegen einer Adresse ausgewählt werden. Das kann man beispielsweise dadurch erreichen, dass man den PC (program counter) auf den Datenbus schreiben lässt:
Das Steuersignal '10' hat das 'Tor' vom PC hin zum Adressbus geöffnet, der PC 'schreibt' auf den Adressbus (Hardware: Der PC legt Spannungen an die Leitungen des Adressbusses). Das Feld, das mit 'Adresse' beschriftet ist, zeigt jeweils den momentanen Zustand des Adressbusses an. Der Adressbus liegt beständig am Speicher an, es gibt kein Adressregister. Verwechsele also dieses Feld nicht mit einem Register. In einem Register kann man etwas speichern, auf dem Adressbus nicht. Die Simulation macht es möglich, dass man in den Speicher hineinsehen können, ohne dass er explizit (mit den Steuersignalen 3 oder 4) angesprochen worden ist. In unserem Fall sieht man den Inhalt der angesprochenen Speicherzelle. Nimmt man die Adresse vom Adressbus, 'weiß' der Speicher nicht mehr, welche Zelle angesprochen ist und die Anzeige verschwindet. Probiere das durch wiederholtes Drücken der Taste A aus.
Will man eine andere Speicherzelle sehen, muss man die Adresse ändern:
Falls das 'Tor' 10 zum Adressbus geöffnet ist, sieht man die Inhalte der entsprechenden Speicherzellen.
Im Normalbetrieb gibt der PC die Nummer des als Nächstes auszuführenden Maschinenbefehls an.
Jetzt wollen wir den Inhalt der Speicherzelle 3 in den Akku transferieren:
Du hast gerade durch Benutzung gewisser Steuersignale einen Registertransfer durchgeführt.
Zeige nun, dass du etwas gelernt hast:
Man bemerkt, es gibt Register, die lesen und schreiben können, wie z.B. der Akku, solche, die nur lesen können, wie das Befehlsregister vom Datenbus, und solche, die nur schreiben können, wie der Adressteil des Befehlsregisters auf den Adressbus.
Es soll nun der erste Befehl des Maschinenprogramms aus dem Speicher in das Befehlsregister (instruction register) übertragen werden:
Der gerade durchgeführte Vorgang heißt "Befehl-Hole-Phase" (engl. fetch-cycle) und muss immer am Beginn der Abarbeitung eines Befehls stehen.
Das Befehlsregister enthält den gerade abzuarbeitenden Maschinenbefehl.
Der Bonsai-Computer kann nur im Akku (das ist alles, was von der arithmetisch logischen Einheit ALU eines üblichen Prozessors übriggeblieben ist) rechnen (sofern man +1 und -1 rechnen nennen will). Benutze die Steuersignale 5 und 6, um das auszuprobieren.
Das Befehlsregister enthält in seiner ersten mit "op" bezeichneten Stelle den Operationscode (opcode), die restlichen Stellen enthalten eineAdresse. Nur diese Adresse kann mit dem Steuersignal 12 auf den Adressbus gelegt werden, der opcode-Teil des Befehlsregisters lässt sich über Tor 2 in die Zehnerstelle des Mikroprogrammzählers (MPC) transferieren.
Die Aufgabe des Befehlsdecoders ist es, aus dem op-Code eine Befehls die richtige Einsprungadresse für den Mikro-Code des Befehls im Mikroprogramm zu ermitteln.
Der Mikroprogrammzähler hat nicht von ungefähr einen ähnlichen Namen wie der PC, auch er zeigt auf den nächsten auszuführenden Mikrobefehl im Mikroprogramm. Eine Kombination von Steuersignalen nennt man Mikrobefehl oder - hier in der BONSAI-CPU - Steuerwort. Das gerade aktuelle Steuerwort sieht man im CPU-Schema rechts. ACHTUNG: Im Direktbetrieb wird nicht wie eben beschrieben das Steuerwort aus dem Mikroprogramm geladen, sondern man setzt das Steuerwort selbst.
Du bist das Steuerwerk, das das Operationswerk bedient.
Die Abfolge der Steuerworte wird durch den Takt gesteuert. Der Takt ist ein (Spannungs-) Signal, das zwei verschiedene Werte in regelmäßigen Abständen annimmt.
In der BONSAI-CPU ereignet sich mit ansteigender Flanke des Taktes zweierlei:
Der Takt im Computer dient ähnlich dem Stundentakt im Stundenplan der Einhaltung einer logischen Abfolge von Einzelschritten. Manche Vorgänge müssen erst beendet werden, bevor sinnvoll weitergemacht werden kann.
Mit den beiden Funktionseinheiten 0 , die mit den Steuersignalen 0 und 1 aktiviert werden, können Einer- und Zehnerstelle des Mikroprogrammzählers getrennt auf Null gesetzt werden.
Man bemerkt, dass keines der Signale 0,1 und/oder 2 gesetzt sein darf, wenn der Takt zum MPC vordringen soll. Das ist aber gut verständlich, wenn man bedenkt, dass es wenig sinnvoll wäre, den MPC gleichzeitig auf bestimmte Werte zu setzen und hochzuzählen. Die beiden UND-Gatter mit den teilweise vorhandenen Invertern an den Eingängen haben also den Sinn, das Hochzählen des MPC im Setzbetrieb zu sperren und im Zählbetrieb zuzulassen. Außerdem sperren Sie im Verein mit der "5-Entdeckungslogik" =5? das Zählen, wenn der HLT-Befehl (kodiert mit 5) im Befehlsregister steht. Auf diese Weise wird der BONSAI-Computer angehalten.
Es ist an dieser Stelle keinesfalls notwendig, diese Logik in mehr als ihrer äußeren Funktion zu verstehen.
Als Letztes soll nun das bedingte und das unbedingte Hochzählen des PCs untersucht werden:
Man bemerkt, dass jeweils mit der ansteigenden Flanke des Signals 13 der PC inkrementiert wird, das ist das unbedingte Hochzählen. Das Steuersignal 14 scheint jedoch ohne Wirkung zu bleiben.
Man sieht an dem Blinken der Anzeige =0? , dass die Nullentdeckungslogik die Null auf dem Bus entdeckt hat. Was nicht zu sehen ist, der Ausgang der Nullentdeckungslogik hat jetzt den Wert 1, so dass das UND-Gatter das Signal 14 jetzt durchlässt.
Man sieht jetzt, dass unter der Bedingung, dass eine Null auf dem Datenbus liegt, auch das Signal 14 den PC inkrementiert. Ebenso wenig wie bei der Steuerung des Takttors ist es an dieser Stelle nötig, sich über die verwendeten Logikbausteine Gedanken zu machen.
Die verschiedenen Busse kann man an den Farben erkennen:
Die Steuerleitungen (Steuerbus) vom Steuerwerk zu den einzelnen Toren bzw. Funktionseinheiten sind nicht eingezeichnet, sondern nur durch Zahlen am Zielort symbolisiert. An Funktionseinheiten gibt es:
+ , - bewirken mit steigender Taktflanke ein Auf- oder Abwärtszählen, 0 bewirkt ein 'auf Null setzen', =0? gibt eine logische 1 aus, wenn auf dem Bus eine 0 liegt, =5? gibt eine logische 1 aus, wenn auf dem Bus eine 5 liegt.
Die Richtung der Toröffnungen wird dabei durch die Lage der Zahlen bestimmt. Wenn das entsprechende Steuersignal gesetzt ist, fließen die Daten 'in Richtung der Zahl'.
Setze/Lösche mit den Tasten 0..9,A..E (wir verwenden hexadezimale Ziffern, da wir so mit einer Taste auskommen, die Zuordnung kann man rechts unten im Steuerwort sehen) oder mit der Maus die Steuersignale 0..14.
Man sieht, dass viele Kombinationen von Steuersignalen zu Fehlern führen. Diese Fehler werden einschließlich eines Kommentars angezeigt und führen zu einem Löschen aller Signale.
Das Menü Editieren gibt die Gelegenheit, sowohl Speicher- als auch Registerinhalte zu verändern.
Das Mikroprogramm sieht man nicht, sondern nur das gerade aktuelle Steuerwort. Der Mikroprogrammzähler MPC zeigt die Nummer des nächsten Steuerwortes an, das mit dem Takt aus dem Mikroprogrammspeicher in das Steuerwortregister übernommen wird.
Im Direktbetrieb wird kein Mikroprogramm benutzt, sondern das Steuerwort setzt du selbst.
Im Direktbetrieb bist du das Steuerwerk, das das Operationswerk bedient.