5. Anleitung Rollenspiel
Simulation des von Neumann-Rechners
Im Folgenden sollt ihr die Aufgabe dieses Rechners übernehmen indem jede Funktionseinheit im Computer durch eine Person besetzt wird. Das folgende Schema für die Animation zeigt die Aufteilung in die Aufgabenbereiche. Hierfür kann man entweder je Funktionseinheit einen Tisch verwenden, oder man stellt einige Tische zusammen, sodass der hellgelbe Bereich sich auf einem großen Tisch befindet.
Wesentlich ist dabei, dass die „CPU-Komponenten“ relativ nah nebeneinander sitzen. Der „Bus“ kann durchaus auch als Pendler zwischen Speicherbereich und CPU bzw. Speicherbereich und Ein- und Ausgabe eingesetzt werden. Das kostet allerdings Zeit.

Bevor wir versuchen, auch für die Flächenberechnung des Dreiecks ein Programm zu schreiben, wollen wir das Oberflächenprogramm auf einem von euch nachgebildeten Computer ausführen lassen.
-
-
Dazu benötigen wir:
- Eingabe: 1 TN
- Bus: 1 TN
- CPU: 1 TN Steuerwerk oder wenn genügend Personen vorhanden sind:
-
- 1 TN Befehlszähler und
- 1 TN Befehlsregister , sowie
- 1 TN Rechenwerk
- 3 Register: je 1 TN
- RAM: 1 TN
- Ausgabe: 1 TN
Die TN, die nicht an der Animation teilnehmen können, bekommen Beobachterrollen zugeteilt.
- Beobachten aus Sicht der Eingabe
- Beobachten aus Sicht der Ausgabe: 1 TN prüft ob die Ausgabe stimmt
- Globale Beobachtung bzw. Beobachtung der einzelnen „Bauteile“
Jene TN, die Eingabe bzw. Ausgabe beobachten haben auch die Rolle der Benutzer. Das bedeutet, sie definieren die Werte der Daten, die vom Programm verarbeitet werden sollen.
Sollte eure Gruppe aus wenigen Teilnehmern bestehen, kann man problemlos die Betreuung der drei Register einer Person zuordnen. Ebenso kann man Eingabe und Ausgabe einer Person zuordnen. Es sollten aber jedenfalls unterschiedliche Personen für Ein-/Ausgabe, Bus, Steuerwerk, Rechenwerk, Register und RAM, also mindestens 6 Personen vorhanden sein.
Bei mehr Teilnehmern als benötigt, kann man auch noch das Steuerwerk trennen und unterschiedliche Personen mit den Aufgaben Befehlszähler und Befehlsregister beauftragen.
Die Aufgabenzuweisung erfolgt nun entsprechend den Aufgaben, die die jeweiligen Komponenten auch tatsächlich im Computer haben.
Start der Simulation
-
Programm in den Speicher ablegen
Da für den Computer Code auch nur eine spezielle Form von Daten ist, lesen wir erst einmal das Programm ein. Dies bedeutet:
o Eingabe gibt die Programmzeilen bzw. Programmkärtchen in der richtigen Reihenfolge an dem Bus.
o Der Bus legt sie mit S1 beginnend auf die jeweils nächste freie Speicherstelle, S1 also auf die Speicherstelle s1, S2 auf s2 u.s.w.
Um diesen Schritt wirklich auszuführen, fehlt uns die Zeit. Wir haben das Programm ja schon entwickelt und dieses nun wie es ist, in den Speicher eingelesen.
Ist dieser Vorgang abgeschlossen, können wir das Programm starten.
o Dazu wird der Befehlszähler-TN (Steuerwerk) einmal auf 0 gesetzt. Er bekommt ein leeres Blatt Papier. Dann muss ihm noch mitgeteilt werden, wo im Speicher der erste ausführbare Befehl liegt (dies mitzuteilen ist noch Aufgabe des Betriebssystems). In unserem Fall ist das Zelle 5. Er notiert also 5 auf seinem Zettel. Weiters müssen jene Beobachter, die Benutzer sind, drei Zettelchen mit den Werten für l, b und h (Vorsicht, genau in dieser Reihenfolge!) vor die Eingabe legen.
o Der Befehlsregister-TN (Steuerwerk-TN) liest (laut !) nun den Inhalt jener Zelle des Arbeitsspeichers, die auf dem Zettel des Befehlszählers notiert ist. (Anfangs also den Inhalt von s5). Er schreibt den Wert auf ein Kärtchen und legt dieses in das Befehlsregister.
Zur Beschleunigung des Verfahrens empfiehlt es sich, hierfür einen Stapel von Kärtchen zu haben, auf denen jeweils ein Befehl und Unterstreichungen für die zu diesem Befehl gehörenden Parameter eingetragen sind. Der BR-TN muss dann nur das richtige Kärtchen nehmen und die vom Speicher gelesenen Parameter (Adressen) eintragen.
o Der BR-TN prüft, ob die eben gelesene Operation eine Rechenoperation oder eine Speicheroperation ist. Ist im Befehlsregister (BR) eine arithmetische Operation, gibt sie der BR-TN an das Rechenwerk (ALU) weiter. Ist eine Speicheroperation im BR, wird das Kärtchen an den Bus-TN weitergegeben. o Bei Datentransfers (Operation LADE oder SPEICHERE) wird das Befehlszettelchen an den Bus-TN gegeben. Dieser schreibt den Wert, der in der angegebenen Abholadresse steht auf ein Kärtchen und legt dieses auf die angegebene Zieladresse (und sagt auch laut, was sie oder er eben ausführte).
Der ursprünglich in der Zieladresse gespeicherte Wert ist damit nicht mehr ersichtlich. Er wurde durch den neuen Wert überschrieben.
Ebenso wird bei LIES oder SCHREIB der Befehl an den Bus weitergegeben. Dieser sorgt in diesem Fall für den Datentransfer zwischen Eingabeeinheit und Speicher bzw. zwischen Speicher und Ausgabeeinheit.
o Wenn der Rechenwerk-TN einen Befehl bekommen hat, führt er diesen auf den ange-gebenen Registern aus. Dazu fragt es die im Befehl angesprochenen Register nach deren jeweils aktuellen Wert. Diese lesen ihn laut vor. as Rechenwerk notiert die Berechnung auf einem Kärtchen, führt sie aus, liest das berechnete Ergebnis laut vor und sagt, an welches Register dieses Ergebnis übergeben wird. Dieses Register legt das Ergebnis als neuen Wert auf seinen Kärtchenstapel. (Man sieht immer nur den jeweils aktuellen Wert).
Die Beobachter sollen dabei prüfen, ob das Rechenwerk auch tatsächlich korrekt rechnet.
o Nachdem ein Befehl ausgeführt wurde, ruft die ausführende Komponente (Bus, Rechenwerk) deutlich „fertig“. Auf dieses „fertig“ muss der Befehlszähler-TN warten. Jede Befehlsausführung, gleichviel ob vom Steuerwerk direkt ausgeführt oder vom Rechenwerk ausgeführt, führt zur Erhöhung des Befehlszählers. Der Befehlszähler-TN erhöht also die auf seinem Notizblatt (BZ) notierte Zahl um 1.
o Sobald diese Erhöhung erfolgte, also der Befehl fertig ausgeführt ist, liest der
Befehlsregister-TN (Steuerwerk-TN) den laut Befehlszähler nächsten Befehl vom Speicher, notiert ihn wieder auf einem Kärtchen, legt dieses ins Befehlsregister und entscheidet, ob der am Zettelchen stehende Befehl direkt auszuführen ist oder an das Rechenwerk weitergegeben werden soll.
2. Der Befehlszyklus – Erklärung der einzelnen Schritte:
-
- Befehl holen
a. Befehl wird aus dem Hauptspeicher (RAM) geholt, im Befehlszähler steht drinnen, welcher Befehl der nächste ist.
b. Befehl wird ins Befehlsregister geschrieben.
- Befehlszähler erhöhen
a. Befehlszähler wird um die Befehlslänge erhöht (in unserem Fall war dies stets 1)
- Befehl decodieren
a. Berechnen, wo die Operanden im RAM (Hauptspeicher) stehen
b. Steuersignale für den Befehl/Operator werden berechnet
- Operanden holen
a. Die Operanden werden aus dem RAM (Hauptspeicher) geholt und in den Registern gespeichert.
- Befehl ausführen
a. ALU (Rechenwerk) berechnet nun das Ergebnis.
b. Ergebnis wird wieder ins Register geschrieben.
- Ergebnis speichern
a. Ergebnis wird im RAM (Hauptspeicher) abgelegt und steht dort für die Anforderung der Ausgabe bereit.
Somit haben wir das soeben Durchgespielte gefestigt.
In dieser Phase sollten die Beobachter vorwiegend tätig sein und beschreiben, wie der „Rechner“ gearbeitet hat.
Wenn das nicht möglich ist, sollen die Teilnehmer, die die einzelnen Komponenten gespielt haben, helfen und berichten, was ihre Aufgabe war.
_