Aufbau des Operationswerks
Das Operationswerk
Das Operationswerk stellt die Komponenten zur Verfügung, die zur Ausführung von Maschinenbefehlen benötigt werden. Im Folgenden werden diese Komponenten mit ihren Funktionen kurz vorgestellt.
Im CPU-Fenster siehst du das Bonsai-Operationswerk. Wenn die Darstellung im CPU-Fenster zu klein ist, dann vergrößere insgesamt die Darstellung im Browser.
Der Speicher
Im Speicher werden das Maschinenprogramm und die zu verarbeitenden Daten verwaltet.
Aufgabe 1
Schaue in den Speicher rein. In welchen Registern befindet sich das Programm? Wo sind die zu verarbeitenden Daten abgelegt?
Adress- und Datenbus
Im Bonsai-Operationswerk gibt es zwei Busse: einen Adressbus, über den Speicheradressen transportiert werden können, und einen Datenbus, über den Daten (im weitesten Sinn) transportiert werden. Die beiden Busse werden (nur rein optisch) mit zwei verschiedenen Farben dargestellt.
Aufgabe 2
Welcher Bus ist der Adressbus, welcher der Datenbus?
Der Programmzähler
Der Programmzähler (kurz PC für program counter) ist ein spezielles Register, in dem Adressen zwischengespeichert werden. Welche Adressen das sind, wird weiter unten betrachtet.
Aufgabe 3
Öffne das Tor vom PC zum Adressbus (roter Pfeil weg vom PC). Erhöhe schrittweise die im PC abgelegte Adresse; nutze dazu den Schalter rechts daneben . Auf diese Weise kannst du dir auch einen Überblick über den Inhalt des Speichers verschaffen.
Das Akku-Register
Die Abkürzung Akku steht für Akkumulator. Das Fremdwort Akkumulator bedeutet soviel wie 'Sammler'. Ein Akku im Handy sammelt bzw. speichert elektrische Energie.
In einem Akku-Register innerhalb einer CPU werden Rechenergebnisse gesammelt (und z.T. auch durchgeführt).
Aufgabe 4
Teste die Rechenoperationen, die mit den Daten im Akku durchgeführt werden können. Benutze die [+]-Schaltfäche und die [-]-Schaltfläche.
Das Befehlsregister
Das Befehlsregister (kurz IR für instruction register) ist ein spezielles Register, in das der aktuell auszuführende Befehl zwischengespeichert wird.
Aufgabe 5
In der Speicherzelle zur Adresse 0 befindet sich ein Befehl. Transportiere diesen Befehl über den Datenbus in das Befehlsregister. Du musst hierzu zunächst die richtige Adresse an den Adressbus anlegen und dann die richtigen Tore zum Transport von Daten über den Datenbus öffnen.
Zerlegung von Befehlen
Ein Maschinenbefehl wie z.B. 40008 muss zur Verarbeitung in die beiden Bestandteile Op-Code (hier: 4) und Adressteil (hier: 8) zerlegt werden. Diese Aufgabe wird von den beiden Filterbausteinen (mit f(n) gekennzeichnet ) übernommen.
Aufgabe 6
Schreibe einen Maschinenbefehl in das Befehlsregister (z.B. 40008). Öffne das Tor vom Befehlsregister zum Adressbus (roter Pfeil). Achte darauf, dass der PC nicht gleichzeitig auf den Adressbus schreibt. Beobachte die Zerlegung des Maschinenbefehls. Klicke auch einmal auf die Filterbausteine. Es werden die Rechenoperationen zum Filtern angezeigt. Du kannst diese Rechenoperationen sogar abändern (auch wenn das zunächst einmal hier wenig Sinn macht). Probiere das aus.
Veränderung des PC-Werts
Bei der Abarbeitung eines Maschinenprogramms muss man jeweils die Position des nächsten auszuführenden Befehls bestimmen.
Bei Programmen ohne Sprungbefehle kann man einfach zur nächsten Programmzeile übergehen.
Für ein Programm mit Sprungbefehlen ist das schon etwas komplizierter.
Die Adresse des jeweils nächsten auszuführenden Befehls wird im Programmzähler verwaltet. Die Programmbeispiele zeigen, dass man verschiedene Mechanismen zur Veränderung des PC-Werts benötigt:
Direktes Setzen: Bei einem jmp-Befehl muss man im PC Adressen gezielt setzen können. Diese Möglichkeit kennst du bereits. Man kann eine Adresse, die am Adressbus anliegt, direkt in das PC-Register schreiben.
Unbedingtes Hochzählen: Bei einem inc- und dec-Befehl muss man den PC-Wert um 1 erhöhen können. Das geht direkt mit der +-Schaltfläche oder mit dem Steuersignal ...
Bedingtes Hochzählen: Bei einem tst-Befehl muss man den PC-Wert entweder um 1 oder um 2 erhöhen können. Das lässt sich so realisieren, dass zunächst einmal um 1 erhöht wird und anschließend nur dann noch einmal um 1 erhöht wird, wenn auf dem Datenbus eine 0 anliegt.
Die Nullentdeckung wird hier mit logischen Gattern ausgeführt. ... Aktiviert wird das bedingte Hochzählen mit dem Steuersignal ...
Aufgabe 7
Teste die verschiedenen Möglichkeiten zur Veränderung des PC-Werts.
Hintergrundwissen
...