Konrad Zuses Z3 und Z4
Die Abbildung zeigt die Komponenten der Zuse-Computer und die Verbindungen dazwischen. Betrachten wir zunächst einmal die einzelnen Bestandteile:
Lochstreifenleser:
Zuse hatte alte Kinofilme organisiert. Diese bestanden aus robustem Material und hatten am Rand bereits eine Lochung zum Transport - ideale Voraussetzungen für die Lochstreifen, die er für seinen Computer brauchte. Der Lochstreifenleser hatte zwei Funktionen: Er konnte den eingelegten Lochstreifen Schritt für Schritt weiterbewegen. Zweitens konnte er den Inhalt des Streifens spaltenweise auslesen. In jeder Spalte gab es eine definierte Anzahl Lochpositionen. Sechs davon bildeten eine Adresse im Arbeitsspeicher. Diese sechs Bit wurden auch direkt an den Speicher übermittelt. Die übrigen bildeten das Befehlswort und wurden daher an das Steuerwerk übermittelt.
Speicher:
Der Speicher umfasst 64 Speicherstellen. Jede ist 22 Bit groß. Dieses Format hatte sich Zuse für die Darstellung von Fließkommazahlen ausgedacht. Auf welche Adresse jeweils zugegriffen werden soll, wird über das Programm auf dem Lochstreifen festgelegt. Ob aus der Speicherstelle gelesen oder hineingeschrieben werden soll, legt das Steuerwerk fest. Bei manchen Befehlen wird gar nicht auf den Speicher zugegriffen.
Rechenwerk:
Das Rechenwerk übernimmt alle Rechenoperationen in den Zuse-Rechnern. Welche Operation (Addition, Subtraktion, Multiplikation, Division , Wurzelziehen) gewünscht ist, wird dem Rechenwerk vom Steuerwerk mitgeteilt. Für die beiden Operanden gibt es im Rechenwerk zwei Speicherstellen. In modernen Computern werden diese als Register bezeichnet, daher heißen sie auch in der Abbildung R1 und R2. Sobald eine Operation abgeschlossen ist, wird das Ergebnis in das Register R1 geschrieben. Der bisherige Inhalt geht dabei verloren.
Numerische Anzeige:
Damit man Rechenergebnisse im Klartext sehen kann, hat Zuse eine Zahlenanzeige entwickelt. Diese kann jeweils nur den Inhalt von Register R1 anzeigen. Wann das geschehen soll, wird der Zahlenanzeige vom Steuerwerk mitgeteilt.
Numerische Tastatur:
Die Tastatur dient der Eingabe von Zahlenwerten, die dann im Programm verwendet werden können. Auf diese Art können Programme bereits interaktiv sein. Das Steuerwerk bestimmt, wann eine Eingabe gemacht werden soll. Das Ergebnis wird dann im Register R1 abgelegt.
Steuerwerk:
Da Steuerwerk ist die entscheidende Komponente, weil sie allen anderen Komponenten mitteilt, was sie zu tun haben. Dazu wiederholt das Steuerwerk die immer gleiche Folge von Arbeitsschritten:
- Vom Lochstreifenleser wird ein Befehlswort gelesen
- Dieses Befehlswort wird als Maschinensprachebefehl analysiert
- Je nach Befehl werden nun die richtigen Komponenten angesteuert
- Der Lochkartenleser wird auf den nächsten Befehl positioniert
- Nun beginnt der Ablauf von vorn.
Befehlssatz
Befehl | Beschreibung |
---|---|
Sn -> Rm | Übertrage den Inhalt des Speicherwortes Nummer n in das Register Nummer m. n = (0...63), m ist 1 oder 2 |
R1 -> Sn | Übertrage den Inhalt des Registers R1 in die Speicherstelle Nummer n. n = (0...63) |
Tastatur -> Rm | Hole eine Zahleneingabe von der Tastatur und übertrage sie ins Register m. |
R1 -> Anzeige | Übertrage den Inhalt von Register R1 auf die Anzeige |
R1 + R2 -> R1 | Addiere den Inhalt der Register R1 und R2 und schreibe das Ergebnis nach R1. |
R1 - R2 -> R1 | Subtrahiere den Inhalt des Registers R2 von dem des Registers R1 und schreibe das Ergebnis nach R1. |
R1 x R2 -> R1 | Multipliziere den Inhalt der Register R1 und R2 und schreibe das Ergebnis nach R1. |
R1 / R2 -> R1 | Teile den Inhalt des Registers R1 durch den des Registers R2 und schreibe das Ergebnis nach R1. |
Wurzel(R1) -> R1 | Ziehe die Wurzel aus dem Inhalt des Registers R1 und schreibe das Ergebnis nach R1. |
Wer schon einmal programmiert hat, bemerkt sofort, dass dem Zuse-Befehlssatz einige essenzielle Fähigkeiten fehlen. So gibt es beispielsweise keine bedingten Verzweigungen in der Art von "Wenn der Inhalt von Register R1 = 0 ist, dann tue dies, andernfalls tue jenes"). Diese Fähigkeit baute Zuse bei der Z4 dann ein. Was aber weiterhin fehlte, war die Fähigkeit, Teile des Programms mehrfach zu durchlaufen - man nennt dies eine Schleife. Zuse hatte auch diese Schwachstelle erkannt und löste es so, dass er bei dem Lochstreifen mit dem mehrfach zu durchlaufenden Programmteil Anfang und Ende zusammenklebte. Das war aber natürlich nur ein schwacher Ersatz.
Trotzdem konnte der Zuse-Computer bereits mathematische Aufgaben mit verschiedenen Werten durchrechnen.
Beispielprogramm
Das nachfolgende Programm berechnet die Formel
(a+5) x (a-7)
und zeigt das Ergebnis an. Der Wert für a soll bei jedem Programmlauf über die Tastatur abgefragt werden.
Bei der Zuse-Architektur können konstante Werte (im Beispiel 5 und 7) nicht im Programmcode enthalten sein. Daher müssen alle konstanten Werte, die ein Programm benötigt, im Vorfeld im Arbeitsspeicher abgelegt werden. In unserem Beispiel wird die Zahl 5 in Speicherstelle S0 und die Zahl 7 in Speicherstelle S1 abgelegt.
Das Programm sieht nun folgendermaßen aus:
Tastatur -> R1
R1 -> S63
S0 -> R2
R1 + R2 -> R1
R1 -> S62
S63 -> R1
S1 -> R2
R1 - R2 -> R1
S62 -> R2
R1 x R2 -> R1
R1 -> Anzeige
R1 -> S2
Im ersten Abschnitt wird der Wert von a von der Tastatur geholt und in der Speicherstelle S63 zwischengespeichert. Er befindet sich aber auch noch in Register R1.
Im zweiten Abschnitt werden der Wert "5" aus Speicherstelle S0 nach R2 geholt und die beiden Registerinhalte addiert. Das Resultat kommt nach S62. Dort steht nun also der berechnete Wert für (a+5).
Im dritten Abschnitt wird der Wert für a aus S63 geholt, der Wert "7" aus S1 und dann werden beide voneinander abgezogen. Das Resultat steht in R1 und ist der berechnete Wert für (a-7).
Im vierten Abschnitt wird der zuvor berechnete Wert für (a+5) aus S62 nach R2 geholt und mit dem berechneten Wert für (a-7) aus R1 multipliziert.
Im letzten Abschnitt wird das Ergebnis der Berechnung aus R1 auf die Anzeige geschrieben. Zusätzlich wird es zur späteren Nutzung in der Speicherstelle S2 abgelegt.