# Zuse Z3

Die Z3 war einer der ersten funktionsfähigen Digitalrechner weltweit und wurde am 12. Mai 1941 von Konrad Zuse in seiner Werkstatt in der Methfesselstraße 7 in Berlin-Kreuzberg vorgestellt. Zuse hatte ihn ab 1938 in Zusammenarbeit mit Helmut Schreyer in Berlin konstruiert. Die Z3 wurde in elektromagnetischer Relaistechnik mit 600 Relais für das Rechenwerk und 1400 Relais für das Speicherwerk ausgeführt. Die Z3 verwendete (wie auch bereits die Z1) die von Konrad Zuse in die Rechnertechnik eingeführte binäre Gleitkommaarithmetik. Im Gegensatz zum Entwurf und der Benutzung des ENIAC genügte der Entwurf der Z3 nicht der späteren Definition eines turingmächtigen Computers und sie wurde auch nie so genutzt. Erst nach dem Tod des Erfinders Konrad Zuse am 18. Dezember 1995 fand man 1998 heraus, dass sie rein theoretisch gesehen durch trickreiche Nutzung aufwendiger Umwege dennoch diese Eigenschaft hatte. Die Z3 gilt als erster funktionsfähiger Universalrechner der Welt. Sie ist auch der erste Rechner, der umgekehrte polnische Notation (UPN) nutzte (allerdings noch nicht so benannt). Die Maschine wurde am 21. Dezember 1943 bei einem Bombenangriff zerstört.

## Geschichte

Der Entwicklung der Z3 ging die Entwicklung der noch vollständig mechanischen Z1 und des Übergangsmodells Z2 voraus. Die Deutsche Versuchsanstalt für Luftfahrt hatte sich die Z2 angeschaut und gab Zuse 25.000 RM (entspricht heute etwa 120.000 EUR), damit er die Z3 bauen konnte. Am 12. Mai 1941 wurde die Z3 schließlich einer Gruppe von Wissenschaftlern (darunter Alfred Teichmann und Curt Schmieden) vorgestellt. Als Zuse 1941 kurzzeitig in den Krieg eingezogen wurde, schrieb er einem Freund: „Andere lassen die Familie zurück, ich die Z3.“ (Konrad Zuse: Berühmte Alumni der Technischen Universität Berlin)
Die originale Z3-Rechenmaschine wurde im Zweiten Weltkrieg durch Bombenangriffe auf Berlin am 21. Dezember 1943 zerstört. Für Zuse war das ein tragischer Moment, da er keinen Beweis mehr hatte, dass es wirklich eine funktionsfähige Z3 gegeben hatte. Ein funktionsfähiger Nachbau, der 1961 von der Zuse KG zu Ausstellungszwecken angefertigt wurde, befindet sich im Deutschen Museum in München. Am ehemaligen Standort, an der Ruine des Hauses in der Methfesselstraße im Berliner Stadtteil Kreuzberg, erinnert eine Gedenktafel an Zuses Wirkungsstätte. Seit Konrad Zuses 100. Geburtstag am 22. Juni 2010 ist zudem ein Nachbau der Z3 im Konrad-Zuse-Museum in Hünfeld ausgestellt. Ebenfalls hat der Schweizer Informatiker Christof Traber die Z3 basierend auf Zuses Patentschrift von 1941 nachgebaut. Sein Nachbau steht heute in der „Enter Technikwelt Solothurn“ in Derendingen SO (Schweiz) und wird monatlich öffentlich vorgeführt.

## Technik
### Merkmale

Neben der Tatsache, dass die Z3 der erste voll funktionsfähige programmierbare Digitalrechner war, enthielt sie auch bereits sehr viele Merkmale, die in modernen Rechnern zu finden sind:
* Verwendung des binären Zahlensystems
* Gleitkommazahlenberechnung
* Ein- und Ausgabegeräte
* Möglichkeit der Benutzerinteraktion während des Rechenvorgangs
* Mikroprogramme
* Pipelining von Instruktionsfolgen
* Numerische Sonderwerte
* Parallele Ausführung von Operationen so weit wie möglich
Die Z1 verfügte zwar bereits ebenfalls über fast alle der oben angeführten Merkmale der Z3, außerdem waren das grundlegende Design und speziell das Rechenwerk von beiden Rechnern sehr ähnlich, allerdings erregte die Z1 deutlich weniger Aufsehen, weil ihr Rechenwerk aufgrund des mechanischen Aufbaus nicht sehr zuverlässig arbeitete.

### Aufbau

Die Z3 bestand aus
* einer Relais-Gleitkommaarithmetikeinheit (600 Relais) für Addition, Subtraktion, Multiplikation, Division, Quadratwurzel, Dezimal-Dual- und Dual-Dezimal-Umwandlung. Das Rechenwerk hat zwei Register R1 und R2.
* einem Relais-Speicher (1400 Relais) mit einer Speicherkapazität von 64 Worten, je 22 Bit (1 Vorzeichenbit, 7 Bit Exponent, 14 Bit Mantisse)
* einem Lochstreifenleser für Filmstreifen, um Programme einzulesen (nicht aber Daten)
* 30.000 Kabeln
* einer Tastatur mit Lampenfeld für Ein- und Ausgabe von Zahlen und manuelle Steuerung von Berechnungen.
Der Rechner sah aus wie eine Schrankwand und füllte einen ganzen Raum. Er wog ca. eine Tonne.

### Funktionsweise

Die Z3 ist eine getaktete Maschine. Die Taktung wird von einem Elektromotor übernommen, der eine Taktwalze antreibt, eine Trommel, die sich ca. 5,3 Mal pro Sekunde dreht und während einer Drehung die Steuerung der einzelnen Relaisgruppen übernimmt. Die Drehgeschwindigkeit der Trommel entspricht dabei dem Verarbeitungstakt moderner Hauptprozessoren, womit bei diesem Rechner eine Geschwindigkeit von 5,3 Hz gegeben ist. Der Arbeitsspeicher der Z3 umfasst 176 Byte (64 Worte mit je 22 Bit). Die Maschinensprache der Z3 umfasste neun Befehle:
| Befehl | Beschreibung | Dauer (Zyklen) |
| Pr z | Speicherzelle z in Register R1/R2 laden | 1 |
| Ps z | R1 in Speicherzelle z schreiben | 0–1 |
| La | Addition: R1 ← R1 + R2 | 3 |
| Ls | Subtraktion: R1 ← R1 – R2 | 4–5 |
| Lm | Multiplikation: R1 ← R1 × R2 | 16 |
| Li | Division: R1 ← R1 / R2 | 18 |
| Lw | Quadratwurzel: R1 ← √(R1) | 20 |
| Lu | Dezimalzahl einlesen in R1/R2 | 9–41 |
| Ld | R1 als Binärzahl ausgeben | 9–41 |
Die Eingabe numerischer Daten muss über die Tastatur erfolgen.
Der Lochstreifen kann nur Befehle enthalten (diese sind darauf mit 8 Bit kodiert), aber keine Zahlen. Daher müssen numerische Daten über die Tastatur eingegeben werden, weiters ist über die Tastatur auch die direkte Ausführung aller Operationen bis auf Speicherzugriffe („Pr z“ und „Ps z“) möglich. Die genaue Kodierung auf Lochstreifen findet sich im Artikel Opcode. Die Z3 kennt keine Sprungbefehle, ist jedoch mit Hilfe geschickter Ausnutzung der endlichen Rechengenauigkeit turingmächtig, wie Raúl Rojas 1998 zeigte. Allerdings ist dieses Resultat nur von theoretischer Bedeutung, da Programme mit Sprunganweisungen umständlich transformiert werden müssen und die Programmlaufzeit steigt.

### Speicherung von Konstanten

Angenommen, wir möchten die Konstanten a4, a3, a2 und a1 in den Speicheradressen 4, 3, 2 und 1 speichern, und den Wert x an Adresse 5. Das Programm, das die gewünschte Berechnung durchführt, sieht wie folgt aus:
| Befehl | Beschreibung |
| Pr 4 | Laden von a4 in R1 |
| Pr 5 | Laden von x in R2 |
| Lm | Multiplikation von R1 und R2, Ergebnis in R1 |
| Pr 3 | Laden von a3 in R2 |
| Ls₁ | Addition R1 und R2, Ergebnis in R1 |
| Pr 5 | Laden von x in R2 |
| Lm | Multiplikation von R1 und R2, Ergebnis in R1 |
| Pr 2 | Laden von a2 in R2 |
| Ls₁ | Addition von R1 und R2, Ergebnis in R1 |
| Pr 5 | Laden von x in R2 |
| Lm | Multiplikation von R1 und R2, Ergebnis in R1 |
| Pr 1 | Laden von a1 in R2 |
| Ls₁ | R1 und R2 addieren, ergibt R1 |
| Ld | Ergebnis anzeigen |
Nachdem die letzte Anweisung ausgeführt wurde, wird der Prozessor auf seinen ursprünglichen Zustand zurückgesetzt. Ein neuer Programmablauf kann gestartet werden.

### Rechenwerk

Jede Rechenoperation der Z3 basiert auf der Addition zweier natürlicher Zahlen. Diese Basisoperation der Addition wird durch XOR(XOR(x, y), CARRY(x, y)) berechnet, wobei CARRY(x, y) die Übertragsfunktion ist, zum Beispiel CARRY(0011011, 1010110) = 0111100.
* Eine Addition zweier Gleitkommazahlen ist realisiert durch Berechnung der Differenz der Exponenten, anschließend entsprechendem Angleichen der Mantisse einer Zahl und schließlich Addition der Mantissen.
* Eine Subtraktion entspricht einer Addition, bei der das Zweierkomplement der zweiten Mantisse verwendet wird, und der Übertrag entfällt.
* Eine Multiplikation entspricht einer Addition der Exponenten und anschließender Multiplikation der Mantissen. Die Multiplikation der Mantissen wird dabei durch eine iterative Addition realisiert: 1011×0101 = 1011 + 10110×010 = 1011 + 101100×01 = 110111 + 1011000×0 = 110111.
* Eine Division entspricht einer Multiplikation, jedoch werden die Exponenten subtrahiert und eine iterative Subtraktion für die Division der Mantissen verwendet.
* Der Algorithmus zum Ziehen einer Wurzel ist durch eine iterative Division realisiert (siehe Patentschrift).
Allgemein besteht das Rechenwerk aus zwei Teilen, einem Werk für die Rechnung mit Exponenten und ein Werk für die Rechnung mit Mantissen. Für Befehle, bei denen iterative Methoden zum Einsatz kommen (Lm, Li, Lw, Lu, Ld), wird ein Sequenzer benutzt, um einzelne Teile des Rechenwerks anzusteuern. Dies entspricht grob modernen Mikroprogrammen.

## Betrieb

Für die Z3 wurden einige Prüfprogramme und ein Programm für die Berechnung einer komplexen Matrix geschrieben, das entsprechend einer Lösung von Hans Georg Küssner zur Berechnung von kritischen Flatterfrequenzen bei Tragfügeln verwendet wurde. Der Einsatz des Rechners wurde aber damals nicht als dringlich eingestuft, so dass es nie zu einem Routinebetrieb kam.

## Vergleich mit ENIAC

In den USA und weiten Teilen der Welt wird anstelle der Z3 der 1944 gebaute ENIAC (Electronical Numerical Nuberical Integrator and Computer) als der erste Computer angesehen. Jahrzehntelang galt dieser bahnbrechende Rechner als das Spitzenmodell seiner Zeit und wurde von der Presse als der erste Computer der Welt gefeiert. Andere bedeutende Beiträge zur Entwicklung der Computertechnologie, wie die Arbeiten von John Atanasoff in den USA oder die Innovationen von Konrad Zuse, wurden dagegen weitgehend übersehen. Dies wird damit begründet, dass die beiden Rechner unterschiedliche Eigenschaften haben und bei beiden Maschinen jeweils unterschiedliche Kriterien herangezogen werden, um sie als „Computer“ zu definieren.
Die Z3 war der erste Digitalrechner und gleichzeitig der erste binäre, programmierbare und turingmächtige. Allerdings war sie im Gegensatz zum ENIAC, bei dem Röhren anstatt Relais eingesetzt wurden, nicht elektronisch (ein von Helmut Schreyer gestellter Förderantrag für die Konstruktion eines elektronischen Nachfolgemodells der Z3 wurde von der Reichsregierung abgelehnt, da diese das Projekt als nicht kriegswichtig einstufte); außerdem ist die Turingmächtigkeit der Z3 nur dank eines vom Konstrukteur nicht vorhergesehenen Tricks möglich. Der ENIAC war der fünfte Digitalrechner der Geschichte und der erste, der die Kriterien „elektronisch“, „programmierbar“ und „turingmächtig“ gleichzeitig erfüllte. Er arbeitete mit dem Dezimalsystem, das heißt, er war kein Binärcomputer wie die Z3 und wie alle modernen Computer. In Deutschland wird hingegen eher die Z3 als erster Digitalrechner betrachtet – erstens aufgrund ihres höheren Alters, und zweitens wegen ihrer binären Arbeitsweise, mit der auch heute noch alle Computer arbeiten, zusätzlich wird dem Aspekt der Hardware, aus der die Rechner jeweils bestehen, eine geringere Bedeutung beigemessen.
Die historische Präferenz für den ENIAC kann auch darin begründet liegen, dass diesem nach dem Zweiten Weltkrieg in den USA eine ungleich größere Aufmerksamkeit zuteilwerden konnte als der Z3, weil diese 1943 bei einem Bombenangriff auf Berlin zerstört wurde.
| Computermodell | Land | Inbetriebnahme | Gleitkomma- arithmetik | Binär | Elektronisch | Programmierbar | Turingmächtig |
| Zuse Z3 | Deutschland | Mai 1941 | Ja | Ja | Nein | Ja, mittels Lochstreifen | über Umwege, nie genutzt |
| Atanasoff-Berry-Computer | USA | Sommer 1941 | Nein | Ja | Ja | Nein | Nein |
| Colossus | UK | 1943 | Nein | Ja | Ja | Teilweise, durch Neu­ver­kabelung | Nein |
| Mark I | USA | 1944 | Nein | Nein | Nein | Ja, mittels Lochstreifen | Ja |
| Zuse Z4 | Deutschland | März 1945 | Ja | Ja | Nein | Ja, mittels Lochstreifen | keine bedingte Sprunganweisung |
| Zuse Z4 | Deutschland | um 1950 | Ja | Ja | Nein | Ja, mittels Lochstreifen | Ja |
| ENIAC | USA | 1946 | Nein | Nein | Ja | Teilweise, durch Neu­ver­kabelung | Ja |
| ENIAC | USA | 1948 | Nein | Nein | Ja | Ja, mittels Wider­stands­matrix | Ja |