Direkt zum Inhalt

Konrad Zuses Rechenmaschine: sechzig Jahre Computergeschichte

Die Computer Z1 und Z3, die Konrad Zuse zwischen 1936 und 1941 gebaut hat, bestechen noch heute durch ihre Eleganz. Beide hatten denselben logischen Aufbau; sie waren die ersten vollautomatischen, programmgesteuerten Rechner der Welt.

Bis heute ist heftig umstritten, wann und wo das erste Gerät in Betrieb ging, das den Namen Computer verdient. In den USA sprach man 1995 mancherorts von einem runden Jubiläum, weil fünfzig Jahre zuvor der ENIAC (Electronical Numerical Integrator and Computer) an der Universität von Pennsylvania in Philadelphia offiziell eingeweiht worden war. Dieser schnellste Rechner seiner Zeit war für die Presse jahrelang der Inbegriff des ersten Computers der Welt. Die Arbeiten anderer Forscher wie John Atanasoff (1903 bis 1995) in den USA oder Konrad Zuse (1910 bis 1995) in Deutschland wurden dagegen weithin ignoriert.

In der Ausgabe Januar 1997 dieser Zeitschrift hat Jürgen Alex über das Leben Zuses berichtet. In diesem Artikel möchte ich nun näher auf den Aufbau seiner Maschinen eingehen. Vor allem will ich zeigen, daß die Struktur zweier seiner Rechner, der Z1 und der Z3, sehr modern im heutigen Sinne war. Wesentliche Quelle ist Zuses Patentanmeldung für die Z3 von 1941. Der Fachmann erkennt darin viele Konzepte und Strukturen, die in Computer-Architekturen mittlerweile fast selbstverständlich geworden sind, insbesondere die Trennung von Prozessor und Speicher.

Es kann nur erstaunen, daß Zuse dies alles bereits 1936 im Ansatz erdacht hatte. In jenem Jahr wurde der mechanische Speicher seines ersten Rechners fertig.

Im gleichen Jahr stellte der britische Mathematiker Alan M. Turing (1912 bis 1954) den ersten Entwurf eines bahnbrechenden Aufsatzes fertig. Darin machte er den intuitiven Begriff der Berechenbarkeit von Zahlen mit Hilfe einer fiktiven Maschine handhabbar: Nur was mit ihrer Hilfe berechnet werden kann, gilt als überhaupt berechenbar. Eine solche Turing-Maschine besteht aus einem unendlichen Speicher und einem kleinen Prozessor, der lediglich einfachste Umwandlungen von Nullen und Einsen vollführen kann. Turing gelang es zu zeigen, daß eine so primitive Maschine gleichwohl als Universalrechner arbeiten kann. Der Speicher sollte dafür zwei Arten von Angaben enthalten: die Daten des zu lösenden Problems und das, was man inzwischen das Programm nennen würde.

Im Jahre 1936 ist demnach zwar nicht der Computer im heutigen Sinne des Wortes entstanden, wohl aber dessen Konzept.

Zuse war kein Mathematiker und hatte sich mit dem Berechenbarkeits-Begriff in seiner mathematischen Fassung nie auseinandergesetzt; erst viel später lernte er Turings Arbeiten kennen. Aus der Praxis kommend, suchte er eher eine Möglichkeit, lange Ketten langweiliger Rechenschritte vollständig zu automatisieren. Dank seiner Ausbildung als Bauingenieur sowie seiner Fähigkeit, komplexe Systeme aus einfachsten Teilen herzustellen, kam er sehr früh auf die Idee eines programmierbaren Automaten.

Sein erster Versuch war die Z1 (Bild 1), ein praktisch vollständig mechanisches Gerät, das die vier arithmetischen Operationen Addition, Subtraktion, Multiplikation und Division in beliebiger Reihenfolge und mit gespeicherten Zahlen ausführen sollte. Die Z1 wurde 1938 fertiggestellt. Bald erwies sich aber, daß die mechanischen Bauteile – bewegliche Bleche – nicht zuverlässig genug waren, so daß Zuse auf Relaistechnik umstieg.

Nach einigen Experimenten mit einer hybriden Maschine namens Z2 baute Zuse die Z3, die 1941 fertig und funktionsfähig war. Vom logischen Standpunkt aus war sie äquivalent zur Z1. Die numerischen Algorithmen und die Codierung der Zahlen waren dieselben – die Z3 war gleichsam eine zuverlässige Z1. In nur fünf Jahren hatte Zuse, gänzlich auf sich gestellt, seine Vision von 1936 realisiert. Diese Leistung ist um so erstaunlicher, wenn man bedenkt, daß der ENIAC und andere Maschinen in den USA von Teams mit praktisch unbegrenzter Finanzierung entwickelt wurden.

Die Originale beider Maschinen sind im Zweiten Weltkrieg verlorengegangen. Zuse hat später sowohl die Z3 (1966) als auch die Z1 (1987 bis 1989, mit fast achtzig Jahren) nachgebaut (Spektrum der Wissenschaft, Juni 1990, Seite 32). Beide Rekonstruktionen sind zur Zeit nur teilweise funktionsfähig; gleichwohl werde ich ihre Arbeitsweise im Präsens beschreiben: Die Idee ist unabhängig von der konkreten Realisierung.

Neuerdings gibt es auch eine Nachbildung anderer Art: An der Universität Halle hat Alexander Thurm eine Java-Simulation der Z3 für das Internet programmiert (http://www.informatik.uni-halle.de/~thurm/z3/).

Duale Gleitkomma-Notation

Mit einer ersten Grundsatzentscheidung nahm Zuse ein Prinzip heutiger Computer vorweg: Intern rechnen seine Maschinen im Zahlensystem zur Basis 2; in dieser Binärdarstellung (Zuse sprach vom Sekundalsystem) gibt es nur die Ziffern 0 und 1. Jedes Bauteil, das zwei wohlunterscheidbare Zustände annehmen kann, ist geeignet, eine Binärziffer darzustellen. Bei der Z1 sind es Bleche, die vor und zurück beweglich sind, bei der Z3 elektromechanische Relais – 600 für das Rechenwerk, 1400 für den Speicher (Bild 2).

Die Wahl der Basis 2, die uns inzwischen als so selbstverständlich erscheint, war damals keineswegs unangefochten. Die ungefähr zur gleichen Zeit in den USA entstandenen Rechner Mark I und ENIAC arbeiteten mit der Dezimaldarstellung. ENIAC war zwar vollelektronisch, verwendete jedoch jeweils eine Kette von 10 Vakuumröhren, um eine Dezimalziffer zu codieren; es wurde immer nur die zur aktuell gültigen Ziffer gehörige Röhre eingeschaltet.

Für mechanische wie elektronische Elemente ist die Binärdarstellung jedoch um vieles einfacher. Zudem, argumentierte Zuse, sind in der Maschine die Zahlen "unter sich", und der Mensch braucht den einzelnen Berechnungsschritten nicht folgen zu können; es genügt, wenn das Resultat korrekt ist.

Der Speicher der Z3 ist für 64 Zahlen zu je 22 Bit ausgelegt und hat eine regelmäßige Struktur, ist also vergleichsweise einfach zu realisieren. Das Rechenwerk dagegen hatte Zuse, um Bauteile zu sparen, in vieler Hinsicht optimiert, wodurch es sehr komplex wurde. Es kann die vier arithmetischen Operationen ausführen sowie die Quadratwurzel einer Zahl berechnen. Gesteuert wird die Maschine über einen Acht-Kanal-Lochstreifen, in dem die erforderliche Folge von arithmetischen Operationen anzugeben ist (Bilder 1 d und 2 b). Nach dem Start führt die Maschine dieses Programm vollautomatisch bis zum Ende aus. Sie ist allerdings nach heutigen Maßstäben nicht sehr schnell: Eine Multiplikation benötigt ungefähr drei Sekunden.

Zuse hat indes nicht nur das Binärsystem, sondern auch die Gleitkomma-Darstellung (floating point notation) für seine Maschinen verwendet. Ebenso wie die gewohnten Dezimalzahlen kann man binäre Zahlen mit Ziffern vor und nach dem Komma schreiben. Die Stellen davor stellen die Potenzen 20, 21, 22 und so weiter dar, die Stellen nach dem Komma entsprechend 2-1, 2-2 und so weiter. Beispielsweise schreibt sich die Zahl 1/2 binär als 0,1=2-1, 1/4 ist 0,01=2-2, und 3/4 schreibt man 0,11 (siehe nebenstehenden Kasten).

Wenn man nun mit Zahlen sehr unterschiedlicher Größenordnung umgehen muß, pflegt man sie (im Dezimalsystem) als Produkt einer Zahl mäßiger Größe (der Mantisse) und einer Zehnerpotenz zu schreiben. Wer etwa die Lichtgeschwindigkeit als 3×108 Meter pro Sekunde und die Masse des Protons als 1,6724×10-24 Gramm ausdrückt, erspart sich das Schreiben vieler Nullen; vor allem aber macht er derartige Zahlen einer Rechenmaschine, die mit weniger als acht beziehungsweise 24 Dezimalstellen arbeitet, überhaupt erst zugänglich. Um die Stellenzahl und damit die maximale Genauigkeit einer Maschine auszunutzen, empfiehlt es sich, die Zahldarstellung so zu normalisieren, daß (im Dezimalsystem) die Mantisse stets zwischen 1 und 10 liegt, also etwa 8731 als 8,731×103 auszudrücken. Im Binärsystem normalisiert man die Mantisse entsprechend auf einen Wert zwischen 1 und 2 und multipliziert mit der zugehörigen Zweierpotenz. Das ist die Konvention, die Zuse anwandte.

Während im Speicher der Z3 die Zahlen mit 14 Binärstellen nach dem Komma dargestellt werden, arbeitet das Rechenwerk mit zwei zusätzlichen Stellen zur Erhöhung der Genauigkeit durch korrekte Rundung. Dieselbe Technik wendet man in heutigen Computern an.

Die Eingabedaten kann man als Dezimalzahlen mit bis zu vier Mantissenziffern über eine spezielle Tastatur eingeben (Bild 1 b). Beispielsweise sind für 4,356 die Mantisse 4356 an der Tastatur und der Exponent -3 über eine Kommaeingabevorrichtung einzustellen. Das Rechenwerk verwandelt die Dezimaldarstellung automatisch in die binäre, mit der intern weitergearbeitet wird.

Bei der Ausgabe wird das Ergebnis wieder in die dezimale Darstellung mit Exponent und Mantisse (zwischen 0 und 19999) umgewandelt und über ein Lampenfeld angezeigt.


Die Grundstruktur von Z1 und Z3

Die wichtigsten Bauteile von Zuses Computer sind der Speicher, das Rechenwerk, die Kontrolleinheit für die einzelnen Befehle (Leitwerk), die Zahleneingabe und die Zahlenausgabe. Gesteuert wird die Maschine durch einen Lochstreifen aus 35-Millimeter-Kinofilm. Ein Lochstreifenleser tastet jeweils acht – versetzt – nebeneinanderliegende Stellen des Streifens ab; wo ein Loch ist, wird der zugehörige Kontakt geschlossen. Eine Decodiereinheit löst dann die zum so empfangenen Befehl gehörige Aktion aus. Nach deren Beendigung rückt der Lochstreifenleser den Filmstreifen einen Schritt vor, liest den nächsten Befehl, und so weiter.

Dem Programmierer stehen neun Befehle zur Verfügung: zwei für Ein- und Ausgabe, zwei für das Laden und Lesen des Speichers und fünf für die arithmetischen Operationen. Das Rechenwerk enthält – vom Programmierer aus gesehen – zwei Speicherzellen, die Register. Auf sie wirken sämtliche arithmetischen Operationen (Kasten Seite 57).

Jeder Befehl besteht – damals wie heute – aus elementaren Schritten, die jeweils einen Maschinenzyklus benötigen. Bei der Z1 ist ein Zyklus eine Umdrehung einer großen hand- oder motorgetriebenen Kurbel (Bild 1 b). Der Befehl Pr (aus dem Speicher laden) kann in einem einzigen Zyklus ausgeführt werden; Addition und Subtraktion benötigen drei bis fünf Zyklen, Multiplikation, Division und Quadratwurzelziehen bis zu 20. Bei diesen Befehlen werden im zweiten Zyklus der Lochstreifenleser und die Decodiereinheit angehalten und erst wieder freigegeben, wenn die arithmetische Operation erledigt ist. Der Befehl Ps (speichern) kann mit dem letzten Takt eines vorherigen arithmetischen Befehls überlappen und benötigt damit keine eigene Zeit.

Jeder Zyklus oder Takt (Zuse gebrauchte dafür den Begriff Spiel) ist seinerseits in fünf Schritte unterteilt. In der Regel wird in Schritt I der Befehl decodiert. Operanden für die arithmetischen Befehle werden dann in den Schritten IV und V vorbereitet und an die entsprechenden Schaltungen der Z3 geführt. Im zweiten Zyklus wird in den Schritten I, II und III eine Addition oder Subtraktion der Exponenten und Mantissen berechnet, und in den Schritten IV und V werden die Resultate in die richtigen Register zurückgeschrieben.

Aufgabe des Leitwerks ist es, im Rechenwerk die richtigen Aktionen auszulösen. Dafür wird für mehrstufige Befehle in der Z3 ein rotierender Schrittschalter (Bild 2 c) in Bewegung gesetzt, der im richtigen Moment Relais im Rechenwerk ein- und ausschaltet. Die Schrittschalter entsprechen dem Mikroprogramm heutiger Prozessoren, das jeden Befehl auf eine Folge elementarer Mikrobefehle zurückführt.

Die numerischen Algorithmen

Nur die beiden Operationen Addition und Subtraktion sind direkt durch Relaisschaltungen realisiert. Vor der eigentlichen Rechnung vergleicht eine Schaltung die Vorzeichen der Operanden und entscheidet, ob (bei gleichen Vorzeichen) die angeforderte Operation auszuführen ist oder (bei unterschiedlichen Vorzeichen) die umgekehrte.

Die Multiplikation wird aus einzelnen Additionen mit Kommaverschiebung zusammengesetzt (vergleiche Bild 6 und den Kasten auf Seite 87 in dem zitierten Artikel von Jürgen Alex). Das Verfahren ist das gleiche wie in der Schule, nur wegen des Binärsystems viel einfacher. Zum Beispiel besteht das kleine Einmaleins nur aus der Gleichung 1×1=1.

Zunächst wird das vorläufige Resultat auf 0 gesetzt. In jedem Schritt des Verfahrens wird dann der Multiplikand dazuaddiert, falls das zugehörige Bit des Multiplikators 1 ist, sonst nicht; das vorläufige Resultat wird um eine Stelle nach rechts verschoben, und so weiter.

Da die Z3 intern mit 15+2 Bits rechnet, benötigt eine Multiplikation 17 Zyklen (von denen der letzte nicht zählt, weil er mit dem Folgebefehl überlappt). Dies entspricht, wie erwähnt, etwa drei Sekunden. In jedem Zyklus wird eine Addition durchgeführt; das Resultat wird wieder als Argument für die nächste Addition vorbereitet. Der Multiplikand bleibt als zweites Argument im Register 2 des Mantisse-Teils (Bild 4).

Ähnlich verlaufen die Division und die Quadratwurzelberechnung. Allerdings muß bei der Division in jedem Schritt eine Subtraktion von Mantissen und eine Verschiebung vorgenommen werden. Der Quotient wird iterativ, Bit für Bit, aufgebaut.

Die Quadratwurzel q einer Zahl x wird ebenfalls iterativ aufgebaut, und zwar so, daß x/q=q gilt. Dem Wurzelziehen liegt also – wie beim Schulverfahren – eine ähnliche Strategie zugrunde wie der einfachen Division.

Andererseits werden manche Operationen durch die Gleitkomma-Darstellung komplizierter. Bevor man nämlich zwei Gleitkommazahlen schriftlich addieren kann, muß man sie richtig untereinanderschreiben: Komma unter Komma, bei gleichem Exponenten. Also ist vor der eigentlichen Addition die Mantisse der Zahl mit dem kleineren Exponenten um so viele Stellen nach rechts zu verschieben, wie die Differenz der Exponenten ausmacht.

Hingegen sind bei der Multiplikation nur die Exponenten zu addieren und die Mantissen zu multiplizieren. Entsprechendes gilt für die Division.

Nach vollendeter Rechnung ist das Ergebnis möglicherweise nicht mehr normalisiert: Das Produkt zweier Mantissen, die beide zwischen 1 und 2 liegen, kann größer als 2 werden (das heißt, die zweite Stelle vor dem Komma ist 1); bei der Subtraktion zweier annähernd gleicher Zahlen entstehen führende Nullen. Also sind in der Mantisse des Ergebnisses die Ziffern zu verschieben, bis in der ersten Stelle vor dem Komma (und in keiner höheren) eine Eins steht; die Anzahl der Verschiebungen ist vom Exponenten zu subtrahieren beziehungsweise dazu zu addieren.

Die grundlegende Operation der Z3 ist mithin die Addition von Exponenten und Mantissen. Wie bei heutigen Mikroprozessoren benötigt sie dafür genau einen Zyklus. Für zusammengesetzte Operationen muß ein Zwischenergebnis mehrfach durchs Rechenwerk kreisen (Bild 3).

Vergleich mit anderen Rechnern

Ungefähr zur selben Zeit wie Zuse in Berlin bauten in den USA John Atanasoff am Iowa State College (der heutigen Universität des Bundesstaates Iowa) in Ames von 1938 bis 1942 den ABC (Atanasoff-Berry Computer), Howard Aiken an der Harvard-Universität in Cambridge (Massachusetts) von 1939 bis 1944 den Mark I sowie J. Presper Eckert und John W. Mauchly an der Universität von Pennsylvania von 1943 bis 1945 den ENIAC. Es ist interessant, die Eigenschaften der vier zu vergleichen.

Ein wichtiges Merkmal heutiger Computer ist, wie erwähnt, die Trennung von Prozessor und Speicher. Bei Mark I und ENIAC war sie noch nicht vollzogen: Die Speicherzellen dienten zugleich als arithmetische Elemente; gemessen an ihrer Rechenleistung waren diese Maschinen darum viel zu komplex. Nur Z3 und ABC waren Binärmaschinen. Mark I und ENIAC benutzten eine Dezimalcodierung, obwohl sie intern teilweise mit binärer Arithmetik arbeiteten. Keine der Maschinen bot dem Programmierer einen bedingten Sprungbefehl – wesentliches Merkmal eines Universalrechners, weil man erst damit den Gang der Rechnung von Zwischenergebnissen abhängig machen kann. Der ENIAC konnte immerhin Schleifen abbrechen und den Kontrollfluß weiterleiten, aber dafür stand nur eine Kontrolleinheit zur Verfügung. Zuse hat Sprungbefehle erst in seinen späteren Rechnern eingeführt.

Als einzige unter den frühen Maschinen verwendete die Z3 die Gleitkommadarstellung. Sie und Mark I waren elektromechanische Rechner, während ABC und ENIAC mit Vakuumröhren arbeiteten. Der ABC war für die Arbeit mit Vektoren ausgelegt, deswegen kann man ihn als Vorläufer der modernen Vektorrechner bezeichnen. Der ENIAC wiederum hatte eine Datenfluß-Architektur: Hardware-Bausteine wurden fest verdrahtet, und ihre Kombination definierte die auszuführende Berechnung. Weder für ENIAC noch für ABC wurden Programme geschrieben. Der ABC konnte sogar nur ein einziges festes Programm ausführen: die Gaußsche Elimination für lineare Gleichungssysteme. Z3 und Mark I wurden durch Programme auf Lochstreifen gesteuert.

Erstaunlich ist jedoch, daß Zuse und Atanasoff ihre Maschinen fast im Alleingang geschaffen haben, während an Mark I und ENIAC mittelgroße Gruppen von Ingenieuren beteiligt waren. Dies hat die beiden einsamen Pioniere veranlaßt, die Architektur zu optimieren und nicht mehr Hardware als unbedingt nötig zu verwenden. Die architektonischen Konzepte sind jedoch bei der Z3 viel weiter ausgereift als beim ABC, der eigentlich ein Rechner für eine einzige spezielle Aufgabe war.


Die Erfindung des Computers

Der Erfolg hat bekanntlich viele Väter, und im Falle des Computers kann man von einem langen Entwicklungsprozeß bis zum heutigen Universalrechner sprechen. Seit der genialen Arbeit Turings bedurfte es vieler Ideen und Erfindungen. Dabei darf man auch Vorläufer wie Charles Babbage (1791 bis 1871) nicht vergessen, der mit seiner Analytischen Maschine bereits im 19. Jahrhundert als erster programmierbare Rechner zu entwerfen wagte (Spektrum der Wissenschaft, April 1993, Seite 78). In diesem Jahrhundert hat der ungarisch-amerikanische Mathematiker John von Neumann (1903 bis 1957) wesentlich dazu beigetragen, die konzeptionellen Grundlagen der Rechnerarchitektur abzusichern; obwohl er selbst keinen Computer baute, stand er an vorderster Stelle, wenn es darum ging, Berechenbarkeit theoretisch zu erfassen oder in die Praxis einzubringen.

Als Abschluß für einen Vortrag über die Erfindung des Computers habe ich einmal drei Namen auf die letzte Folie geschrieben, nämlich Babbage, Zuse und von Neumann. Die Folie habe ich Konrad Zuse 1993 gezeigt, da ich naiverweise dachte, er würde sich freuen, sich in so illustrer Gesellschaft zu sehen. Zuse aber fragte nur: "Was hat von Neumann da zu suchen?" An Selbstbewußtsein mangelte es dem Erfinder sicherlich nicht, und seinen Platz in der Computergeschichte hat er sich mit seinem Lebenswerk erkämpft. Erstes Resultat seiner Genialität war das mechanische Speicherwerk von 1936, das die Ära des Computers einläutete.

Literaturhinweise

- Konrad Zuse, der Weg zu seinem Computer Z3. Von K.-H. Czauderna. Oldenbourg, München 1979.

– Who Invented the Computer? The Debate from the Viewpoint of Computer Architecture. Von Raúl Rojas in: Fifty Years Mathematics of Computation. Proceedings of Symposia in Applied Mathematics. Herausgegeben von W. Gautschi. AMS, 1993, Seiten 361 bis 366.

– Der Computer – Mein Lebenswerk. Von Konrad Zuse. Springer, 1984.

– Die Rechenmaschinen von Konrad Zuse. Herausgegeben von Raúl Rojas. Erscheint voraussichtlich Mitte 1997 bei Springer, Berlin.

– Die Architektur der Rechenmaschinen Z1 und Z3 von Konrad Zuse. Von Raúl Rojas in: Informatik-Spektrum, Band 19, Heft 6, Seiten 303 bis 315, 1996.

– Dr. Atanasoff's Computer. Von Allan R. Mackintosh in: Scientific American, August 1988, Seiten 90 bis 96.

– Funktions- und Konstruktionsprinzipien der programmgesteuerten mechanischen Rechenmaschine "Z1". Von Ursula Schweier und Dietmar Saupe. Arbeitspapiere der Gesellschaft für Mathematik und Datenverarbeitung (Schloß Birlinghoven, D-53754 Sankt Augustin), Nummer 321, August 1988.

Kasten: Binäre Gleitkommadarstellung

Die Dezimalzahl 18,73 ist nur die kurze Schreibweise für 1×101 +8 ×100 +7 ×10-1 + 3 ×10-2. Analog ist die Binärzahl 10,11 zu verstehen als 1 ×21 +0×20 +1 ×2-1 +1 ×2-2. Jede Zahl (außer der Null) läßt sich in der Form ±a×2b schreiben, wobei der Exponent b eine ganze Zahl ist und die Mantisse a eine Binärzahl zwischen 1 und 2. Ein Beispiel wäre a=1,11 und b=2. Die Binärzahl 1,11 ist die Dezimalzahl 1,75, denn 1×20+1×2-1+1×2-2 =1,75. Deswegen stellt a×2b in diesem Fall die Zahl 1,75×4=7 dar. Zuse verwendete sieben Bit für den Exponenten (rot dargestellt). Das wäre der Zahlbereich von 0 bis 127. Er benutzte jedoch die sogenannte Zweierkomplementdarstellung: Das Bit an der höchsten Stelle zählt nicht 64, wie es dem System entspräche, sondern -64. Dadurch ist es möglich, Exponenten von -64 bis 63 darzustellen. Für die Mantisse verwendete Zuse 15 Bit (grün) plus ein zusätzliches für das Vorzeichen (blau). Alle abzuspeichernden Zahlen werden so normalisiert, daß die einzige Ziffer vor dem Komma stets gleich 1 ist. Dieses erste Bit braucht also nicht eigens gespeichert zu werden; deswegen genügen im Speicher 14 Bit für die Mantisse. Beim Lesen aus dem Speicher wird die Eins an vorderster Stelle jedesmal ergänzt. Die abgebildete Zahl ist demnach positiv (Vorzeichenbit 0), hat den Exponenten 100 binär (=4 dezimal) und die Mantisse 1,00011101000110 binär (=1,1136 dezimal auf fünf gültige Stellen). Durch Umrechnen ergibt sich für sie der Wert 1,1136×24 =17,818 im Dezimalsystem. Da die Zahl Null auf diese Weise nicht darstellbar ist, behandelte Zuse jede Zahl der Form a×2-64 als null und baute für diesen Sonderfall Spezialschaltungen ins Rechenwerk ein. Außerdem behandelte er – wiederum mit Spezialschaltungen – jede Zahl der Form a×263 als unendlich groß. Wie weit Zuse seiner Zeit voraus war, wird deutlich aus dem Vergleich mit den heute maßgebenden Standards des Institute of Electrical and Electronics Engineers (IEEE) für die Gleitkomma-Darstellung. Sie sind im wesentlichen äquivalent zu Zuses halblogarithmischer Schreibweise. Der einzige Unterschied besteht in der Anzahl der verwendeten Bits sowie in der Anzahl und Codierung der Sonderfälle.

Kasten: Programmierung der Z3

Aus der Sicht des Programmierers enthält das Rechenwerk der Z3 zwei Gleitkomma-Register. Daß Zuse ihnen in seinen Entwürfen die Kennzeichen f und b gab und im Rechenwerk noch ein weiteres Register a für Zwischenergebnisse steckte, muß den Programmierer nicht kümmern (vergleiche Bild 4). Der erste Ladebefehl lädt Register 1 (wenn die Zahl von der dezimalen Eingabe kommt, nach interner Umwandlung). Jeder weitere Ladebefehl überschreibt Register 2, bis Register 1 gelöscht wird. Der darauffolgende Ladebefehl wirkt wieder auf Register 1. Der Befehlssatz der Z3 umfaßt folgende neun Befehle (in der ersten Spalte steht Zuses Bezeichnung für den Befehl, in der zweiten der Lochstreifencode):

Ein-/Ausgabe:
Lu01 110000Von der Eingabe lesen
Ld01 111000Register 1 in die Ausgabe leiten
Speicher-Befehle:
Pr z11 z6z5z4z3z2z1Vom Speicher aus Adresse z lesen
Ps z10 z6z5z4z3z2z1Register 1 nach Adresse z speichern
Arithmetische Befehle:
Ls1 01 100000 Addition
Ls2 01 101000 Subtraktion
Lm 01 001000 Multiplikation
Li 01 010000 Division
Lw 01 011000 Quadratwurzel
Die arithmetischen Operationen verknüpfen die Inhalte der Register 1 und 2 (Quadratwurzelziehen verwendet nur Register 1) und schreiben das Ergebnis nach Register 1. Nach jeder Speicheroperation sind beide Register gelöscht und müssen neu geladen werden. Eine Standardaufgabe der Arithmetik ist die Berechnung eines Polynoms wie f(x)=a4x3+a3x2+a2x+a1. Durch geschickte Klammerung vermindert man die Zahl der durchzuführenden Rechenoperationen (Horner-Schema): f(x)=x(a2+x(a3+xa4))+a1 In den Speicheradressen 1, 2, 3 und 4 seien die Konstanten a1, a2, a3 und a4, in Adresse 5 die Zahl x gespeichert. Dann wäre die Berechnung auf der Z3 wie folgt zu programmieren (aus mechanischen Gründen waren die Löcher im Film nicht, wie hier gezeigt, in einer Reihe, sondern versetzt angeordnet):

Pr 4 Lade a4 in Register 1
Pr 5 Lade x in Register 2
Lm Multiplikation, Resultat xa4 in Register 1
Pr 3 Lade a3 in Register 2
Ls1 Addition, Resultat a3+xa4 in Register 1
Pr 5 Lade x in Register 2
Lm Multiplikation, Resultat x(a3+xa4) in Register 1
Pr 2 Lade a2 in Register 2
Ls1 Addition, Resultat a2+x(a3+xa4) in Register 1
Pr 5 Lade x in Register 2
Lm Multiplikation, Resultat x(a2+x(a3+xa4)) in Register 1
Pr 1 Lade a1 in Register 2
Ls1 Addition, Resultat x(a2+x(a3+xa4))+a1 in Register 1
Ps 10 Speichere Resultat in Adresse 10



Aus: Spektrum der Wissenschaft 5 / 1997, Seite 54
© Spektrum der Wissenschaft Verlagsgesellschaft mbH

Lesermeinung

Beitrag schreiben

Wir freuen uns über Ihre Beiträge zu unseren Artikeln und wünschen Ihnen viel Spaß beim Gedankenaustausch auf unseren Seiten! Bitte beachten Sie dabei unsere Kommentarrichtlinien.

Tragen Sie bitte nur Relevantes zum Thema des jeweiligen Artikels vor, und wahren Sie einen respektvollen Umgangston. Die Redaktion behält sich vor, Leserzuschriften nicht zu veröffentlichen und Ihre Kommentare redaktionell zu bearbeiten. Die Leserzuschriften können daher leider nicht immer sofort veröffentlicht werden. Bitte geben Sie einen Namen an und Ihren Zuschriften stets eine aussagekräftige Überschrift, damit bei Onlinediskussionen andere Teilnehmer sich leichter auf Ihre Beiträge beziehen können. Ausgewählte Lesermeinungen können ohne separate Rücksprache auch in unseren gedruckten und digitalen Magazinen veröffentlicht werden. Vielen Dank!