Die Architektur der Rechenmaschinen Z1 und Z3 von Konrad...

7
Informatik-Spektrum 19: 3°3-315 (1996) @Springer-VerlagI996 Hauptbeitrag DieArchitekturderRechenmaschinen Z1undZ3vonKonradZuse Zusammenfassung Dieser Artikel bietet die erste de- taillierte Beschreibung der Architektur der Rechenmaschinen Zl und Z3,die zwischen 1936und 1941von Konrad Zuseentworfen wurden. Die notwendigen Informationen wurden durch eine um- fassende Auswertung der von Zuse 1941eingereichten Patentan- meldung erhalten. Zusätzliche Erkenntnisse brachte eine Soft- wareemulation der Z3.DieZl wurde ausschließlich aus mechani- schen Komponenten gebaut, die Z3benutzte elektromagnetische Relais.Beide Maschinen hatten jedoch eine gemeinsame logische Struktur, und das Programmiermodell war identisch. Es wird ge- zeigt, daß die Zl und die Z3Eigenschaften besaßen, die in heutigen Computern selbstverständlich sind: Speicher und Prozessor waren getrennte Einheiten, der Prozessor konnte Gleitkommazahlen bear- beiten und beherrschte die vier arithmetischen Grundrechenarten ebenso wie die Quadratwurzelberechnung. Das Programm wurde auf einem Lochstreifen gespeichert und sequentiell gelesen. Der letzte Abschnitt setzt die Architektur der Zl und der Z3durch einen Vergleichmit anderen Rechenmaschinen in historischen Kontext. Schlüsselwörter Konrad Zuse, Rechenmaschinen Zl und Z3,Geschichte des Computers Summary This paper provides the first detailed de- scription of the architecture of the computing machines Zl and Z3 designed byKonrad Zuse in Berlinbetween 1936and 1941.The ne- cessary basic information was obtained from a careful evaluation of the patent application filedby Zuse in 1941.Additional insight was gained from a software simulation of the machine's logic. The Zl was built using purely mechanical components, the Z3 using electromechanical relays.However,both machines shared a common logical structure, and the programming model was the same. We argue that both the Zl and the Z3possessed features akin to those of modern computers: memory and processor were sepa- rate units, the processor could handle floating-point numbers and compute the four basic arithmetical operations as well as the squa- re root of a number. The program was stored on punched tape and was read sequentially. In the last section of this paper we bring the architecture of the Zl and Z3into historical perspective by offering a comparison with computing machines built in other countries. Keywords Konrad Zuse, Computing machines Zl and Z3,History of computing Raul Rojas Martin-Luther-Universität Halle, FB Mathematik und Informatik, Kurt- Mothes-Str.1, D-06120 Halle, e-mail: [email protected] RaulRojas ComputingReviewsClassification K.2, B.2.0 I 1. FrüheRechenmaschinen Konrad Zuse wird in Deutschland gemeinhin als der Vater des Computers angesehen, und seine Zl, ein zwischen 1936und 1938 gebauter programmierbarer Automat, wird hierzulande als der er- ste Computer der Weltbezeichnet. Andere Nationen reklamieren dieses Privileg für einen ihrer eigenen Wissenschaftler, und es hat eine lange und oft bittere Debatte über den "wahren" Erfinder des Computers gegeben. Manchmal wird die Diskussion vorab mit Be- schlag belegt durch die genaue Spezifizierung von technischen Ei- genschaften einer speziellen Maschine. Der ENIAC(Akronym für Electronic Numerical Integrator and Computer) ist zum Beispiel als der erste allgemeine, große elektronische Computer der Welt bezeichnet worden [2].Diese Maschine wurde an der Moore School of Electrical Engineereng an der Universität von pennsylva- nia von Mai 1943bis 1945gebaut. Der ENIAClöste sein erstes Pro- blem im Dezember 1945und wurde im Februar 1946offiziellein- geweiht. Ein weiterer Anwärter auf den Titel des ersten Compu- ters ist der Mark I,der von Howard Aiken an der Harvard Univer- sität zwischen 1939und 1944gebaut wurde. Der Mark Iwar eine elektromechanische Maschine, d. h. er war nicht total mechanisch wie frühere Rechenmaschinen, verwendete aber auch nicht die da- mals bereits verfügbaren elektronischen Komponenten '[1].Die Maschine von John Atanasoff (die später ABCgenannt wurde), die zwischen 1938und 1942am Iowa State Collegegebaut wurde, be- nutzte Vakuumröhren, konnte aber nur Vektoren addieren und subtrahieren und hatte nicht die für allgemeine Berechnungen notwendige minimale Struktur [3].Im direkten Gegensatz zu die- sen drei Maschinen waren Zl und Z3weit flexibler; sie konnten ei- ne lange Folge von BefeWenausführen, die auf einem Lochstreifen gestanzt war. Die Maschinen von Zuse waren mechanisch oder elektromechanisch und von kleineren Abmessungen. Weildie 21 vor dem Mark I fertiggestellt wurde, wird sie als die erste program- mierbare vollautomatische Rechenmaschine der Weltbezeichnet. Natürlich kann die alte Debatte mit einem einzigen Artikel nicht beendet werden, es wird jedoch in den nächsten Abschnitten ge- zeigt, wie fortschrittlich die Maschinen von Zuse aus dem Blick- winkel der modernen Computerarchitektur waren und wie gut sie im direkten Vergleichmit anderen Entwürfen ihrer Zeit abschnei- den. R. Rojas: Die Architektur der Rechenmaschinen Zl und Z3 von Konrad Zuse 303 --- .....

Transcript of Die Architektur der Rechenmaschinen Z1 und Z3 von Konrad...

Informatik-Spektrum 19: 3°3-315 (1996) @Springer-VerlagI996

Hauptbeitrag

DieArchitekturderRechenmaschinenZ1undZ3vonKonradZuse

ZusammenfassungDieserArtikel bietet die erste de-taillierte Beschreibung der Architektur der Rechenmaschinen Zlund Z3,die zwischen 1936und 1941von Konrad Zuse entworfenwurden. Die notwendigen Informationen wurden durch eine um-fassende Auswertung der von Zuse 1941eingereichten Patentan-meldung erhalten. Zusätzliche Erkenntnisse brachte eine Soft-wareemulation der Z3.DieZl wurde ausschließlich aus mechani-schen Komponenten gebaut, die Z3benutzte elektromagnetischeRelais.BeideMaschinen hatten jedoch eine gemeinsame logischeStruktur, und das Programmiermodell war identisch. Eswird ge-zeigt,daß die Zl und die Z3Eigenschaften besaßen, die in heutigenComputern selbstverständlich sind: Speicher und Prozessor warengetrennte Einheiten, der Prozessor konnte Gleitkommazahlen bear-beiten und beherrschte die vier arithmetischen Grundrechenarten

ebenso wie die Quadratwurzelberechnung. Das Programm wurdeauf einem Lochstreifen gespeichert und sequentiell gelesen.Derletzte Abschnitt setzt die Architektur der Zl und der Z3durch einenVergleichmit anderen Rechenmaschinen in historischen Kontext.

SchlüsselwörterKonrad Zuse,Rechenmaschinen Zlund Z3,Geschichte des Computers

Summary This paper provides the first detailed de-scription of the architecture of the computing machines Zl and Z3designed by Konrad Zuse in Berlin between 1936and 1941.The ne-cessary basic information was obtained from a careful evaluationof the patent application filed by Zuse in 1941.Additional insightwas gained from a software simulation of the machine's logic.The Zl was built using purely mechanical components, the Z3using electromechanical relays.However,both machines shared acommon logical structure, and the programming model was thesame. Weargue that both the Zl and the Z3possessed features akinto those of modern computers: memory and processor were sepa-rate units, the processor could handle floating-point numbers andcompute the four basic arithmetical operations as well as the squa-re root of a number. The program was stored on punched tape andwas read sequentially. In the last section of this paper we bring thearchitecture of the Zl and Z3into historical perspective by offeringa comparison with computing machines built in other countries.

Keywords Konrad Zuse, Computing machines Zl andZ3,History of computing

Raul RojasMartin-Luther-Universität Halle, FB Mathematik und Informatik, Kurt-

Mothes-Str.1, D-06120 Halle, e-mail: [email protected]

RaulRojas

ComputingReviewsClassificationK.2,B.2.0

I 1.FrüheRechenmaschinen

Konrad Zuse wird in Deutschland gemeinhin als der Vater desComputers angesehen, und seine Zl, ein zwischen 1936und 1938gebauter programmierbarer Automat, wird hierzulande als der er-ste Computer der Weltbezeichnet. Andere Nationen reklamierendieses Privileg für einen ihrer eigenen Wissenschaftler, und es hateine lange und oft bittere Debatte über den "wahren" Erfinder desComputers gegeben. Manchmal wird die Diskussion vorab mit Be-schlag belegt durch die genaue Spezifizierung von technischen Ei-genschaften einer speziellen Maschine. Der ENIAC(Akronym fürElectronicNumerical Integrator and Computer) ist zum Beispielals der erste allgemeine,große elektronische Computer der Weltbezeichnet worden [2].Diese Maschine wurde an der MooreSchool of ElectricalEngineereng an der Universität von pennsylva-nia von Mai 1943bis 1945gebaut. Der ENIAClöste sein erstes Pro-blem im Dezember 1945und wurde im Februar 1946offiziellein-geweiht.

Ein weiterer Anwärter auf den Titel des ersten Compu-ters ist der Mark I,der von Howard Aiken an der Harvard Univer-sität zwischen 1939und 1944gebaut wurde. Der Mark I war eineelektromechanische Maschine, d. h. er war nicht total mechanischwie frühere Rechenmaschinen, verwendete aber auch nicht die da-mals bereits verfügbaren elektronischen Komponenten '[1].DieMaschine von John Atanasoff (die später ABCgenannt wurde), diezwischen 1938und 1942am Iowa State Collegegebaut wurde, be-nutzte Vakuumröhren, konnte aber nur Vektoren addieren undsubtrahieren und hatte nicht die für allgemeine Berechnungennotwendige minimale Struktur [3].Im direkten Gegensatz zu die-sen drei Maschinen waren Zl und Z3weit flexibler; sie konnten ei-ne lange Folgevon BefeWenausführen, die auf einem Lochstreifengestanzt war.Die Maschinen von Zuse waren mechanisch oderelektromechanisch und von kleineren Abmessungen. Weildie 21vor dem Mark I fertiggestellt wurde, wird sie als die erste program-mierbare vollautomatische Rechenmaschine der Weltbezeichnet.

Natürlich kann die alte Debatte mit einem einzigen Artikel nichtbeendet werden, es wird jedoch in den nächsten Abschnitten ge-zeigt,wie fortschrittlich die Maschinen von Zuse aus dem Blick-winkel der modernen Computerarchitektur waren und wie gut sieim direkten Vergleichmit anderen Entwürfen ihrer Zeit abschnei-den.

R. Rojas: Die Architektur der Rechenmaschinen Zl und Z3 von Konrad Zuse 303

--- .....

binären Gleitkommazahlprozessor, einer Steuereinheit und Ein-bzw.Ausgabegeräten. Speicher und arithmetische Einheit sindüber einen Datenbus verbunden, der Exponent und Mantisse derGleitkommazahldarstellung überträgt. Die Steuereinheit enthältfür jeden Befehleinen Mikrosequenzer. Signalleitungen, die vonder Steuereinheit zum Prozessor, dem Speicher und den Ein- bzw.Ausgabegeräten gehen, sorgen für die richtige Synchronisation al-ler Geräte.Der Lochstreifenleser liefert den Befehlskode für jedenBefehlebenso wie die Adresse für Speicherzugriffe. Die Ein- bzw.Ausgabegeräte sind durch den Datenbus mit der Recheneinheitverbunden.

2.2. Darstellung von Gleitkommazahlen

Abbildung 2 zeigt die Darstellung der Gleitkommazahlen im Spei-cher der Z3.Das erste Bitwird benützt, um das Vorzeichen der Zahlzu speichern, die folgenden 7 Bitssind für den Exponenten und dieletzten 14Bits für die Mantisse (nur die 14Stellen rechts vom Dezi-malpunkt). Die Bitsvom Exponenten werden "TeilA"der Zahl ge-'1annt und als a6,. . .,aobezeichnet.DieBitsderMantissewerden"TeilB"genannt und als bo,b-h..., b-14geschrieben. Der Exponentist eine Zahl im Zweierkomplement. Der Zahlenumfang reicht des-wegen von r64 bis 263.Die Mantisse wird in normalisierter Formgespeichert,dasheißt,dieersteZiffervordemDezimalpunkt(bo)muß immer eine 1sein. Diese Zifferbraucht nicht gespeichert zuwerden (und erscheint deswegen nicht in Abb.2),so daß der effek-tive Zahlenbereich im Speicher äquivalent zu einer Mantisse von 15Bits ist. Esgibt jedoch ein Problem mit der Zahl Null,die nicht miteiner normalisierten Mantisse dargestellt werden kann. Die Z3be-nutzt die Konvention, daß jede Mantisse mit dem Exponenten -64als Null zu interpretieren ist.Außerdem gilt jede Zahl mit dem Ex-ponenten 63als die Zahl Unendlich. Operationen, die Null oderUnendlich beinhalten, werden alsAusnahmen behandelt. SpezielleHardware überwacht jede in den Prozessor eingelesene Zahl, umdie Ausnahmebits (siehe Abschnitt 4) zu setzen.

Vorzeichen Exponent Mantisse

b_14

1--- 7 Bits .. 14Bits

Abb.2 Die Darstellung von Gleitkommazahlen im Speicher

Mit dieser Konvention ist die kleinste darstellbare Zahl

im Speicher der Z3die Zahl r63 = 1.0Sx 10-19und die größte ist1,999 x 262-9.2 x 1018.Die Argumente für Berechnungen könnenals Dezimalzahlen (vier Ziffern) an der Tastatur der Z3eingegebenwerden. Der Exponent der dezimalen Darstellung wird durchDrücken der entsprechenden Position in einer mit -S, -7, . ..,7,Sbeschrifteten Reihe von Tasten eingegeben. Die ursprüngliche Z3konnte lediglich Eingaben zwischen 1x 10-8und 9999 x 108anneh-men. Die Rekonstruktion der Z3,die Zuse um 1962für das Deut-sche Museum in München baute, bietet genügend Tasten für grö-ßere Exponenten. Mit dieser Anordnung kann die numerische Ka-pazität der Maschine bei der Eingabe ausgeschöpft werden. Dasgleiche kann über die Ausgabe gesagt werden. Die Z3kann dasvom Programm produzierte numerische Ergebnis nicht drucken.Statt dessen wird eine einzelne Zahl mit einer Matrix von Lampenangezeigt, die die Ziffern 0 bis 9 darstellen. Die größte Zahl, die an-gezeigt werden kann, ist 19999und die kleinste ist 00001.Der größ-te Exponent, der angezeigt werden kann, ist +S,der kleinste -S. Die

Tabelle1 Befehlssatz und Befehlskodes der Z3

Maschine in München benutzt für die Ausgabe des Exponentenwiederum einen größeren Ausgabebereich.

2.3.Befehlssatz

,.;

Das Programm für die Z3befindet sich auf einem Lochstreifen. Dieacht Bits in jeder Zeile kodieren einen Befehl.Der BefehlssatzderZ3besteht aus den neun in Tabelle 1aufgelisteten Befehlen.Esgibtdrei Klassen davon: Ein-IAusgabe-, Speicher- und Arithmetikbe-fehle.Der Befehlskodehat eine variable Längevon zweibis fünfBits.Speicheroperationen beinhalten die Adresse eines Speicher-wortes in den niederwertigen sechs Bits,d. h. der Adreßraum hat,wie bereits erwähnt, eine maximale Größe von 64Worten.

Die Befehlekönnen in beliebiger Reihenfolge kombi-niert werden. Die BefehleLuund Ld (Lesevon Tastatur,Anzeigedes Ergebnisses) halten die Maschine an, so daß der Bedienergenügend Zeit hat, um eine Zahl einzugeben oder das Ergebnisaufzuschreiben. Die Maschine wird dann neu gestartet und setztdie Ausführung des Programms fort.

Die offensichtlichste Lücke in dem Befehlssatz der Z3ist das Nichtvorhandensein von Verzweigungen.Eine Schleifekanneinfach durch das Zusammenkleben der beiden Enden eines loch-

streifens realisiert werden, aber es gibt keine Möglichkeit zur Im-plementierung von bedingten Sprüngen in Befehlsfolgen.Schonaus diesem Grund kann man die Z3nicht als einen Universalrech-ner im Sinne von Turing einstufen.

2.4.AnzahlderZyklen

Die Z3ist eine getaktete Maschine. Jeder Takt (ein Spiel in der Ter-minologie von Zuse) ist in die fünf römisch numerierten "Stufen"I, Il, III, IV und V unterteilt. Der momentane Befehlauf dem Loch-streifen wird in Stufe I eines Zyklus dekodiert.

Die zwei grundlegenden arithmetischen Operationender Maschine sind Addition und Subtraktion von Exponent undMantisse. Diese Operationen können in den ersten drei Stufen ei-nes jeden Zyklusausgeführt werden. Die Stufen IV und V werdenbenutzt, um die Argumente für die nächste Operation vorzuberei-ten oder um ein Ergebnis in die Register oder in den Speicherzurückzuschreiben. Die in der Z3implementierten Befehlebenöti-gen die folgende Anzahl von Zyklen:

Multiplikation:Division:

Quadratwurzel:

16ZyklenIS Zyklen20 Zyklen

R. Rojas: Die Architektur der Rechenmaschinen ZI und Z3 von Konrad Zuse 305

Klasse Befehl Beschreibung Befehlskode

Ein-/Ausgabe Lu Lesen von Tastatur 01 110000

Ld Ergebnis anzeigen 01 111000

Speicher Pr z Lesen von Adresse z 11 ZeZ5Z4Z3Z2Z1

Ps z Speichern in Adresse z 10 Z6Z5Z4Z3Z2Zt

Arithmetik Lm Multiplikation 01 001000

Li Division 01 010000

Lw Quadratwurzel 01 011000

181 Addition 01 100000

L82 Subtraktion 01 101000

Oleitkomma.

/ RegisterRI

Gleitkomma-

Register R2

/

Abb.3 Register und Rechenwerk

beiden Addierer A und Bwerden jeweils für die Addition und dieSubtraktion von Exponenten und Mantisse benutzte. Das Ergebnisfür den Exponentenanteil einer Operation wird in Aeabgelegt. Fürden Mantissenanteil wird das Ergebnis in Beabgelegt. Im TeilBer-laubt ein Multiplexer die Wahl,ob Baoder die Ausgabe vom Addie-rer B als Ergebnis einer Operation in Beselektiert wird. Der Multi-plexer wird vom RelaisBtgesteuert (wenn Bt=o, dann wird Banach Beübertragen).

Die kleinen mit Ea,Eb,Ec,Ed, Ef,Fa,Fb,Fc,Fd und Ffbeschrifteten Kästchen stellen Relaisschalter dar, die den Datenbusöffnen oder schließen. Wenn zum Beispiel der Inhalt von RegisterAfzum Register Aa übertragen werden soll, dann wird der Relais-schalter Ea auf 1gesetzt und das Ergebnis ist Aa:=Af.Wie im Dia-gramm zu erkennen ist, kann der Inhalt von Afentsprechend demZustand der Relaisschalter nach Aa oder Ab übertragen werden.Der Inhalt von Aekann nach Aa,Ab oder Af übertragen werden.Die Struktur von TeilBder arithmetischen Einheit ist der von Teil

A sehr ähnlich, aber zusätzlich zum von Btkontrollierten Multiple-xer gibt es einen Schifter zwischen Bfund Baund ebenso einenzwischen Bfund Bb.Der erste Schifter kann die Mantisse um bis zuzwei Stellen nach rechts oder um eine Stellenach links verschie-ben. Dies bedeutet entweder eine Division durch 4 oder eine Multi-plikation mit 2.Der zweite Schifter kann die Mantisse in Af zwi-schen einer und 15Stellen nach links sowie zwischen einer und 16Stellen nach rechts verschieben. DieseVerschiebungen sind für dieAddition und die Subtraktion von Gleitkommazahlen notwendig.Die Multiplikation und die Division um den Faktor 2 sind auf dieseWeise trivial zu berechnen, während die Operanden für die näch-ste arithmetische Operation geholt werden, und verbrauchen des-wegen keine zusätzliche Zeit.

Die Bitlänge der Register ist folgende:

Af 7 BitsAa 7Ab 7Ae 8

Bf 17BitsBa 19Bb 18Be 18

Wie aus dieser Liste ersichtlich ist, benutzt Ae ein extra Bit, um die

Addition der Exponenten zu bearbeiten. Teil B des Prozessors be-nutzt zwei extra Bits für die Mantissenanteile (b-15, b-16) und ver-

wendet explizit Bit bo, das nicht gespeichert wird. Die extra Bits anden Positionen -15 und -16 erlauben es, die Genauigkeit der Be-

rechnung zu erhöhen. Damit beträgt die Anzahl der Bits, die fürdas Speichern des Ergebnisses einer arithmetischen Operation im

Register Bf gebraucht werden, 17Bits. Register Ba und Bb benöti-

gen weitere extra Bits (ba2' bah und bb1), um die Zwischenergeb-nisse einiger numerischer Algorithmen aufnehmen zu können.

Insbesondere der Quadratwurzelalgorithmus kann in Ba zu Teilbe-rechnungen führen, die bis zu drei Einsen links vom Dezimalpunkt

enthalten. Die wesentlichen primitiven Operationen in diesemKreislauf sind Addition und Subtraktion von Exponenten und

Mantissen. Falls das Relais As (Bs) gesetzt ist, wird der Negativwertdes zweiten Arguments Ab (Bb) in den Addierer geladen. Der Ad-dierer im Teil A subtrahiert also die Argumente, wenn das RelaisAs auf 1gesetzt ist, ansonsten werden die Argumente addiert. Das

gleiche gilt für den Teil B und das Relais Bs. Die in der Abb. darge-stellte Konstante 1wird gebraucht, um das Zweierkomplement ei-ner Zahl zu erzeugen.

Nehmen wir an, daß zwei Zahlen mit dem gleichen Ex-ponenten addiert werden sollen. Der erste Exponent wird in Af ge-speichert, der zweite in Ab. Im Teil A der Maschine muß keine be-sondere Aktion getätigt werden, weil beide Exponenten gleich

sind. Im Teil B wird die Mantisse der ersten Zahl in Bf gespeichertund die Mantisse der zweiten in Bb. Der erste Schritt besteht darin,

Ba mit Bf zu laden, indem der Relaisschalter Fa auf 1gesetzt wird.Die Addition wird als nächstes ausgeführt, das Relais Bt

wird auf 1gesetzt und damit Be das Ergebnis Ba+ Bb zugewiesen.

Der Relaisschalter Ff wird nun auf 1gesetzt und das Ergebnis in Bfgespeichert. Wie zu sehen ist, kann die Information zwischen den

Registern bewegt werden und zirkuliert damit in einem Kreislauf.Der Computerarchitekt muß die richtige Konfiguration der Relais-schalter bereitstellen, um die gewünschte Operation zu erhalten.Dies wird in der Z3 mit einer Technik bewerkstelligt, die der Mi-kroprogrammierung sehr ähnlich ist.

3.2. Die Steuereinheit

Abbildung 4 zeigt ein Detaildiagramm der Steuereinheit und derEin-IAusgabeeinheiten. Die Steuereinheit bestimmt die richtigeMikrosequenzierung der Befehle.Esgibt spezielle Schaltkreise fürjeden Befehlaus dem Befehlssatz.Der Schaltkreis Pa dekodiert denBefehlskode des vom Lochstreifen gelesenen Befehls.Wenn es einSpeicherbefeWist, setzt Pb den Adreßbus auf den Wert der nieder-wertigen sechs Bitsdes Befehlskodes.

Der Schaltkreis Z stellt die Tastatur dar, die für die Ein-gabe von DezimalzaWen in die Maschine benutzt wird. Nur einSchalter in jeder der vier Spalten kann aktiviert werden. Der Expo-nent wird im Schaltkreis K durch das Drücken einer der mit -8 bis

8 beschrifteten Tasten gesetzt.Die Ausgabeeinheit ist ähnlich derEingabeeinheit, allerdings zeigen hier aufleuchtende Lampen dieentsprechenden Dezimalziffern,den Exponenten der Zahl (Schalt-kreis Q) und das Vorzeichen an. Zu beachten ist eine fünfte Zifferfür die Ausgabe,die bei der Z3nur 1oder 0 sein kann.

Abb.4 Die Steuereinheit und die Ein-/Ausgabeeinheiten

LocbJtrejfcft

Exponent der EingabeK

0"'000"'0

Expoaenl der Ausgabe

Q

0.n 000'" 0StcucreiDhtil

Laeo U"-' DMul. libbon MDivision J

IWAddISub S

--- V

R (Lampe.)

AdroBbus DaJ.nb.. Iht..bus

R. Rojas: Die Architektur der Rechenmaschinen ZI und Z3 von Konrad Zuse 307

tion der Relaisbeh..., be-i6 ist in der Abb.zu sehen. FallsBit bei

gleich 1ist,wird das entsprechende Relaisgeschlossen. Das Ender-gebnis ist bei=bdi XORbei.Es ist beachtlich, wie einfach die Be-nutzung der Relaisdie Verteilung des Übertrags bis zur letzten Bit-position macht. Der Übertrag wird beim Weitergeben von einerPosition zur nächsten nicht verzögert, weil alle Relaisgleichzeitigaktiviert werden.

In der Z4verwendete Zuse dann eine weiter verein-fachte Relaisschaltung, die pro Stellemit zwei Relais für Ba[i] undBb[i] mit je vier Umschaltkontakten auskommt ([16],Bild20).Dieoriginale Z4 ist im Deutschen Museum in München ausgestellt [5].

Im unteren werden die Algorithmen beschrieben, diebei Operationen mit Gleitkommazahlen in der Z3benutzt werden.Siesind ohne Ausnahme die gleichen, wie sie heutzutage in einfa-chen Gleitkommaprozessoren verwendet werden [6].

4.2. AusnahmebedingungenbeiGleitkommazahlen

Das Problem mit Zuses Notation von Gleitkommazahlen ist, daß

spezielle Konventionen für die Darstellung der Zahl Null angewen-det werden müssen. Die Z3löst dieses Problem und behandelt an-dere Ausnahmebedingungen (Überlauf, Unterlauf) durch dieÜberwachung des Wertes des Exponenten nach jeder arithmeti-schen Operation oder nach jedem Lesezugriff auf den Speicher.Ei-ne spezielle Schaltung überwacht den Zustand von BusAe undfangt die Ausnahmebedingungen ab. Jede Zahl mit dem Exponen-ten -64 wird als Null betrachtet: Ein Relais (bezeichnet mit Nni)wird auf 1gesetzt,wenn die gelesene Zahl im Registerpaar <Af,Bf>gespeichert wird. Fallsaber die gelesene Zahl im Registerpaar<Ab,Bb> gespeichert wird, dann wird das RelaisNn2auf 1gesetzt.Damit wissen wir jederzeit, ob ein oder beide Argumente einerarithmetischen Operation Null sind. Etwasähnliches wird für Ex-ponenten mit dem Wert 63gemacht (eine Zahl mit Wert Unendlichgemäß Zuses Konvention). In diesem Fallwird das RelaisNh oderNb auf 1gesetzt, je nachdem in welchem Registerpaar die Zahl ge-speichert wird.

Operationen, die eine "Ausnahmezahl" (Null oder Un-endlich) beinhalten, werden wie üblich ausgeführt, aber das Ergeb-nis wird von der Überwachungsschaltung überschrieben. Sei zumBeispiel angenommen, daß eine Multiplikation berechnet wirdund daß das erste Argument Null ist (Nni wurde auf 1gesetzt). DieBerechnung geht weiter wie üblich, aber in jedem Zyklusliefert dieÜberwachungsschaltung das Ergebnis -64 am Ausgang des Addie-rers im TeilA.Es ist unerheblich, welche Operation mit der Mantis-se ausgeführt wird, weil der Exponent des Ergebnisses auf -64 ge-setzt wird und damit das Endergebnis Null ist. Die Division durcheine unendliche Zahl wird auf ähnliche Weiseabgearbeitet. Die Z3erkennt nichtdetinierte Operationen wie 0/0, 00- 00,00100und 0 x

00.In allen diesen Fällen leuchtet ein passend beschriftetes Aus-nahmelämpchen an der Ausgabeeinheit auf und die Maschinewird angehalten. Die Z3produziert immer das richtige Ergebnis,wenn ein Argument 0 oder 00 ist und das andere Argument inner-halb der numerischen Grenzen liegt3.

Eine zusätzliche Schaltung überwacht den Exponentenam Ausgang des Exponentenaddierers. Falls der Exponent größer

3 Dies gilt nicht für die Zl. Zuse dachte daran, aber implementierte kei-

ne Ausnahmebehandlung in der ZI. Die Maschine konnte nicht rich-

tig arbeiten bei Berechnungen, die Null enthielten [pers. Miu. Zuse].

~' ~. [§"bei beo be_16

~' ~" ~'L~~

bd I bdo

~ ~~ ~

bei beo

~r§"

Y-l- 'S6bd_15 bd_16

~ ~~ ~

be -15 be -16

Abb.7 Die Schaltung für earry look ahead (entspricht Bild 19in [16])

oder gleich 63ist, dann ist ein Überlauf eingetreten und das Ergeb-nis muß auf 00gesetzt werden. Falls der Exponent kleiner als -64ist, dann ist ein Unterlauf eingetreten und das Ergebnis muß aufNull gesetzt werden. Um dies zu erlauben, wird das entsprechendeRelais (Nni oder Nh) auf 1gesetzt.

Es ist Zuse gelungen, eine Ausnahmebehandlung zuimplementieren, die nur ein paar Relaisbenutzte. Diese Eigen-schaft der Z3ist wohl eine der elegantesten im ganzen Entwurf derMaschine. Vieleder ersten Mikroprozessoren in den siebziger Jah-ren konnten keine Ausnahmebehandlungen bearbeiten und über-ließen dies der Software.ZusesAnsatz ist besser, denn er befreit

den Programmierer von der Last der Prüfung auf numerischeGrenzüberschreitungen vor jeder Operation.

4.3.AdditionundSubtraktion

Um zwei Gleitkommazahlen x und y zu addieren oder zu subtra-hieren, muß ihre Darstellung auf einen gemeinsamen Exponentengebracht werden. Danach müssen nur noch die Mantissen addiertoder subtrahiert werden. Falls sich die Exponenten unterscheiden,muß die Mantisse der kleineren Zahl um entsprechend viele Stel-len nach rechts verschoben und ihr Exponent entsprechend erhöhtwerden (um den Wert der Zahl zu erhalten), bis beide Exponentengleich sind. Nach 17Verschiebungen nach rechts kann es natürlichpassieren, daß die kleinere Zahl Null wird.

DieVorzeichen der beiden Zahlen werden verglichen,bevor über die Art der auszuführenden Operation entschiedenwird. Falls eine Addition verlangt wurde und die Vorzeichen gleichsind, dann wird die Addition ausgeführt; fallsdie Vorzeichen ver-schieden sind, wird eine Subtraktion ausgeführt. Falls eine Sub-traktion verlangt wird und die Vorzeichen verschieden sind, dannwird eine Addition durchgeführt; falls die Vorzeichen gleich sind,wird eine Subtraktion durchgeführt. Eine spezielle Schaltung setztdas Vorzeichen für das Endergebnis in Abhängigkeit von den Vor-zeichen der Argumente und vom Vorzeichen des partiellen Ergeb-nisses.

Addition und Subtraktion werden von einer Relaisket-

te gesteuert (nicht durch ein Schrittschalter), weil die Anzahl dermaximal möglichen Zyklen gering ist.Abb.8 zeigt die Synchroni-sation für die Addition zweier Zahlen.Anfanglich sind die Argu-mente für die Addition in den Registerpaaren <Af,Bf>und

R. Rajas: Die Architektur der Rechenmaschinen Zi und Z3von Konrad Zuse 309

11 Zyklus I Stufe I Exponent rMantisse

Abb.11 Die 18Zyklen für die Division. Das i-te Bit des RegistersBf wird mit Bf(i] bezeichnet. Der Dividend wird im Re-gisterpaar <Af,BF> gespeichert und der Divisor in<Ab,Bb>, bevor die Operation durchgeführt wird.

4.5. Division

Der Divisionsalgorithmus ist analog zum Multiplikationsalgorith-mus, nur werden wiederholt Subtraktionen anstelle von Additio-nen ausgeführt. Am Anfang wird der Dividend im Registerpaar<Af,Bf> und der Divisor im Registerpaar <Ab,Bb> gespeichert.Das temporäre Registerpaar <Aa,Ba> wird auf Null gesetzt.Abb.11stellt die Mikrosequenzierung durch den Divisionsschalter dar.Der Algorithmus braucht 18Zyklen.

DieGrundideedesAlgorithmusisteinfach.DerExpo-nent des Ergebnisses wird durch Subtraktion der Exponenten vonDividend und Divisor berechnet. Und nun zur Mantisse:Wir

möchten x/y für die normalisierten Mantissen x und y berechnen.Da wir mit normalisierten Zahlen arbeiten, ist die erste Zifferdes

Ergebnisses gleich 1,wenn x ~y ist und gleich Null,wenn x < y ist.Im ersten Fallsetzen wir die Zifferdes Ergebnisses auf 1und be-rechnen den Rest,der x - y ist. Der Rest wird wiederum durch y ge-teilt. Dafür wird der Rest um eine Stellenach links verschoben und

das neue Ergebnisbit wird an der Stelle [-1] im Register Bfgespei-chert (was damit den Effektdes Verschiebens wieder aufhebt).Falls das Ergebnisbit Null ist, ist der Rest nur x und die Divisiongeht weiter wie im ersten Fall.

Die Hauptschleife der Division hat die folgende Form:

Ba:=2 x Bewenn (Ba-Bb ~ 0) dann Be:=Ba-Bb,Bf(i]:=1

sonst Be:=Ba Bf(i]:=o

für i = 0, . . .,-14.Das Teilergebnis Bewird um eine Stellenach linksverschoben, um Ba:=2xBezu produzieren. Dies erfolgt über denSchifter,der mit der Relaisschaltung Feverbunden ist.

Das Ergebnis der Division der Mantissen ist eine Zahl1/2< r< 2.Diese Bedingung wird in den Zyklen 17und 18getestet.

Falls r< 1,dann wird 1vom Exponenten subtrahiert und das Er-gebnis um eine Stellenach links verschoben, um wiederum einenormalisierte Zahl zu erhalten.

4.6.Quadratwurzelberechnung

Der Algorithmus für die Berechnung der Quadratwurzel ist dasGlanzstück der Z3.Abb.12zeigt die Mikrosequenzierung des ent-sprechenden Befehls,der 20 Zyklenbenötigt. Das Argument fürdie Operation wird im Registerpaar <Af,Bf> gespeichert. Das Re-gisterpaar <Aa,Ba> wird mit Null initialisiert. Der Algorithmusberechnet die Quadratwurzel von Zahlen mit einem geraden Ex-ponenten. Falls der Exponent ungerade ist, dann wird die Mantisseum eine Stellenach links verschoben und der Exponent um 1er-höht. Der Exponent des Ergebnisses (berechnet in Zyklus 19)isthalb so groß wie der Anfangsexponent.

Die Grundidee des Algorithmus ist es,die Quadratwur-zelberechnung auf eine Division zu reduzieren4. Wenn wir dieWurzel von x berechnen wollen,dann suchen wir eine Zahl derart,daß x/Q = Qist. Das Ergebnis Qwird erhalten, indem nacheinan-der das i-te Bit auf 1gesetzt wird und dann geprüft wird, ob die Be-dingung x > Q2 noch gilt. Falls dies nicht der Fall ist, dann muß das

i-te Bit auf Null gesetzt werden.Nehmen wir an, wir haben bereits Bit 0 bis Bit -i + 1des

Endergebnisses berechnet. Die Mantisse sei bezeichnet mit Q-i+1'

4Diese Idee liegt auch der früher im Unterricht des Gymnasiums

gelehrten Methode für die Quadratwurzelberechnung im Dezimal-system zugrunde.

Abb.12 Die 20 Zyklen für die Berechnung der Quadratwurzel.Das i-te Bit der Register Afund Bfwird mit Af(i] bzw.Bf(i] bezeichnet. Das Argument wird im Registerpaar<Af,Bf> gespeichert, bevor die Operation ausgeführtwird.

11Zyklus I Stufe I Exponent I Mantisse

R. Rojas: Die Architektur der Rechenmaschinen ZI und Z3 von Konrad Zuse 311

" In........0 1,11,11I

11

I IV.V Aa: Af Ba:_Bf

1,11,11I Ae:=Aa-Ab wenn (Ba-Bb 2: 0) dann Be:=Ba-Bb, bt:=lsonst Be: Ba. bt: 0

Aa:=Ac Bf: 02 IV,V Ab:=O wenn (bt=l) dann Bf(O):=l

Ba:-2xBe

1,11,11I Ae:=Aa+Ab wenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=lsonst Be: Ba. bt: 0

3 IV,V Aa:=Ae wenn (bt_l) dann Bf(-l):-IBa:=2 x Be

1,11,11I Ae:=Aa+Ab wenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=lsonst Be: Ba. bt: 0

: : : :

i IV,V Aa:=Ae wenn (bt=l) dann Bf(2-i):=1Ba:-2xBe

1,11,11I Ae:=Aa+Ab wenn (Ba Bb 0) dann Be:-Ba-Bb, bt:=1

:sonst Be: Ba, bt: 0

: : :

16 IV,V Aa:=Ae wenn (bt=l) dann Bf(-14]:=1Ba:-2xBe

1,11,11I Ae:=Aa+Ab wenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=1sonst Be: Ba. bt: 0

17 IV ,V wenn (Bf(O] 0) Ba:=Bf, Bb:=Odann Ab:--I

1.11.11I Ae: Aa+Ab Be: Ba+Bb

18 IV,V Af:=Ae wenn (Bf(O]=O) dann Bf:=2xBesonst Bf: Be

11 . , , , 11

0 1,11,11I

If (Af(O)=l) dann Ba:=2xBf1 IV,V sonst Ba:=Br

Bb[OJ:=1

1,11,11Iwenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=l

sonst Be:=Ba, bt:=O

Bf:=O2 IV,V wenn (bt=l) dann Bf(O):=1

Ba:=2xBe, Bb:=2xBf, Bb[-I]:=1

1,11,11Iwenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=l

sonst Be:=8a, bt:=O

3 IV,V wenn (bt=l) dann Bf(-l]:=1Ba:=2xBe, Bb:=2xBf, Bb[-2]:=1

1,11,11Iwenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=1

sonst Be:=Ba, bt:=O

: : : :

i IV,Vwenn (bt=l) dann Bf(2-i]:=1Ba:=2xBe, Bb:=2xBf, Bb[l-i]:=1

1,11,11Iwenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=1

sonst Be:=Ba, bt:=O

: : : :

18 IV,V wenn (bt=l) dann Bf(-16]:=1Ba:=2xBe, Bb:=2xBf

1,11,11Iwenn (Ba-Bb 0) dann Be:=Ba-Bb, bt:=1

sonst Be:=Ba. bt:=O

19 IV,V Aa:=Af/2 Ba:=Bf, Bb:=O

1,11,11I Ae:=Aa+O Be:=Ba+Bb

20 IV.V Af:=Ae Bf:=Be

LochstreifenSteuereinheit

'jjji'O. Lesen UAnzeigen DMultiolikation MDivision J

~adratwurzel WAddlSub SVorzeichen V

Pa Opcode

Adresse

Abb.13 Die vollständige Architektur der Z3

können die Zahlen zwischen -16 und 15dargestellt werden unddies entspricht der Anzahl und Richtung der möglichen Verschie-bungen des zweiten Schifters. Jedesmal,wenn eine derartige Ver-schiebung ausgeführt wird, wird die Zahl,die die RelaisFh bis Fmdarstellen, durch die Relaisschaltung Bn in das Register Abüber-tragen. Dies erfolgt, um den Exponenten des Ergebnisses entspre-chend zu ändern. Falls die Zahl um 10Stellen nach links verscho-

ben wird, dann wird +10vom Exponenten des Ergebnisses subtra-hiert. Solchegroßen Verschiebungen werden häufig nach Subtrak-tionen benötigt.

Schauen wir noch einmal das Diagramm für die Z3an.Alles macht nun einen Sinn und sieht ebenso konventionell aus wie

in jedem einfachen modernen Gleitkommaprozessor. Es ist in derTaterstaunlich, wie Konrad Zuse in der Lagewar,eine sehr effizien-te Architektur gleich zu Beginn zu finden. Der Prozessor der Z3ent-hält bloß 600 Relais,der Speicher braucht dreimal soviele.Zuse wargezwungen, immer wieder die logische Struktur seiner Maschine

Exponent der EingabeK

CD ... 000,,, 0

Exponent der AusgabeQ

CD... 000,., 0

64 Wone

Speicher

zu überdenken, weil der Entwurf dahingehend optimiert werdenmußte, soweit als möglich Hardware zu sparen. Er hatte nicht denLuxus der fast unbegrenzten Unterstützung, die vom amerikani-schem Militär für die Entwicklung des ENIACoder von IBMfür dieMark I bereitgestellt wurden. Er war ganz auf sich allein gestellt,und obwohl dies sicher zu seinem Vorteil auf der konzeptionellenSeitewirkte, es gelangte zu seinem Nachteil,wenn der geringe Ein-fluß der ZI und der Z3auf die aufblühende amerikanische Compu-terindustrie nach dem Weltkrieg in Betracht gezogen wird [14].

[ 6.DieErfindungdes Computers

Das größte Manko der Z3war das Fehlen von bedingten Sprüngenim Befehlssatz.Es wäre nicht unmöglich gewesen, dies zu imple-

R. Rajas: Die Architektur der Rechenmaschinen ZI und Z3von Konrad Zuse 313

Z (Tastatur) R

@@@@ @@@@@@:@@

+ @@@@+) I

- <D<D<D0<D<D<D<D<D@@@@ @@@@

[ Literatur

1. Aiken, H., Hopper, G.: "The Automatie Sequence Controlled Calcula-

tor", nachgedruckt in [9], S. 203-222

2. Burks, A. W., Burks, A. R.: "The ENIAC: First General- Purpose Elec-

tronie Computer", Annals of the History of Computing, VoI. 3, N. 4,

1981, S. 310-399

3. Burks,A. W.,Burks,A. R.: The First Electronic Computer - The

Atanasoff Story, The University of Michigan Press, Ann Arbor, 1988

4. Czauderna, K.-H.: "Konrad Zuse, der Weg zu seinem Computer Z3",

Oldenbourg Verlag, München, 1979

5. Weinhart, K. (Hrsg.): Informatik und Automatik. Führer durch die

Ausstellung im Deutschen Museum. München 1990, Kap. 6.6.4 ff

6. Koren, 1.: Computer Arithmetic AIgorithms, Prentice Hall, Engle-

wood Cliffs, NJ, 1993

7. Lavington, S.H.: A history of Manchester computers, NCC Publicati-

ons, Manchester, 1975

8. Lavington, S.H.: Early British Computers, Digital Press, Manchester,

1980

Informatik

Konstruktionrobusterundflexibler Klassen-bibliotheken

A.Frick,W.Zimmer,W.ZimmermannSoftware-Bibliotheken sind ein wichtiges Hilfsmittel zur Wieder-verwendung von Entwürfen und Code. Zu diesem ZwecksolltenBibliotheken robust, flexibelund effizient sein. Der Beitrag zeigt,wie Flexibilität erreicht werden kann, ohne die Robustheitseigen-schaft zu verletzen. Ferner diskutieren wir den Einsatz von Ent-

wurfsmustern zur Strukturierung einer großen objektorientiertenKlassenbibliothek. Dievon uns vorgestellten Konzepte wurden inder Algorithmen- und Datenstrukturbibliothek KARLArealisiert.

Spezifikation undPrototypinggraphbasierter Systeme

A.Schürr,A.J.Winter,A.ZündorfZum systematischen Entwurf und zur Realisierung von Graph-strukturen und ihrer Zugriffsoperationen wurde die Spezifikations-sprache PROGRESentwickelt.Sieunterstützt das Modellieren kom-plex strukturierter Sachverhalte,wie siebeim Bau interaktiver Sy-steme auftreten. Sieerlaubt die gemischt regelorientierte bzw.impe-rative Formulierung entsprechender Zugriffsoperationen mit HilfePRO-grammierter GRaph-Ersetzungs-Systeme, hat ein statischesTypsystem,eine vollständige formale Definition ihrer statischenund dynamischen Semantik und ist sowohl interpretativ als auchkompilativ ausführbar. Hier soll die Eignung der Sprache PROGRESund ihrer Entwicklungsumgebung zur operationalen Spezifikationentsprechender Systeme und zur Generierung von Prototypen ge-zeigt werden. Dabei legen wir besonderes Gewicht auf die Unter-stützung durch die enge Integration ihrer Werkzeuge,die das ver-schränkte Editieren, Analysieren und Ausführen gestatten. Beidengenerierten Prototypen stehen leichte Erweiterbarkeit, Persistenzder Daten, Recoveryund Mehrbenutzerfähigkeit im Vordergrund.

9. RandelI, B.: The Origins of Digital Computers, Springer-Verlag, Ber-

lin, 1982

10. Rojas, R.: "Who invented the computer? The debate from the view-

point of computer architecture", in W.Gautschi (ed.): Fifty Years Ma-

thematies of Computation, Proceedings of Symposia in Applied Ma-

thematics,AMS, 1993, S. 361-366

11. Rojas, R.: "On Basic Concepts of Early Computers in Relation to

Contemporary Computer Architectures", Proceedings of the 13th

World Computer Congress, Hamburg, VoI. 11,S. 324-331

12. Rojas, R.: "Conditional Branching ist not Necessary for Universal

Computation in von Neumann Computers", erscheint in Journal of

Universal Computer Science

13. Schweier, 0., Saupe, D.: "Funktions-und Konstruktionsprinzipien

der programmgesteuerten mechanischen Rechenmaschine ZI",Ar-

beitspapiere der GMD 321, Bonn, 1988

14. Stern, N.: From ENIAC to UNIVAC, Digital Press, Bedford, 1981

15. Zuse, K.: Patentanmeldung Z-391, Deutsches Patentamt, Berlin, 1941

16. Zuse, K.: Der Computer mein Lebenswerk, Verlag Moderne Indu-

strie, München, 1970

Eingegangen am 21.05.1996, in überarbeiteter Form am 22.10.1996

Wiederverwendbare Algorithmenschematain MLam Beispiel vonGraphdurchlauf-Problemen

R.BerghammerDie Programmierung von algorithmenschemata durch die Para-meterisierung von Programm teilen ist eine Möglichkeit der Wie-derverwendung von Software.Dieser Ansatz wird insbesonderevon der funktionalen Programmiersprache MLdurch eine sehrausgereifte Modulsprache mit Signaturen, Strukturen und struktu-rabbildenden Funktoren unterstützt. In diesem Artikel demon-strieren wir,wie man auf diese WeiseParameterisierung und Wie-derverwendung realisieren kann. Dabei wird eine Anwendung,nämlich schematischer Graphdurchlauf mit Vererbung und Syn-these alsVerallgemeinerung des vom Übersetzerbau her bekann-ten Prinzips, im Detail vorgestellt; einige weitere Anwendungsbe-reiche werden skizziert.

Prinzipiender Replikationskontrollein verteilten Datenbanksystemen

T.Beuter, P.DadamDurch Datenreplikation können prinzipiell schnellere Zugriffs-zeiten und eine beliebig hohe Fehlertoleranz in verteilten Daten-banksystemen erreicht werden. Andererseits erhöht Replikationdie Gefahr von Inkonsistenzen und den Aufwand von Änderungs-operationen. Zur Lösung dieses Zielkonflikts wurden in der Lite-ratur viele unterschiedliche Replikationsverfahren vorgeschlagen.Dieser Überblicksartikel beschreibt die den einzelnen Verfahren

zugrundeliegenden Prinzipien zur Replikationskontrolle. Dazuwerden die durch den Kopieneinsatz resultierenden Probleme er-läutert, daraus Kriterien zur anschließenden Klassifikation abge-leitet und danach ausgewählte Replikationsverfahren näher vor-gestellt.

R. Rojas: Die Architektur der Rechenmaschinen ZI und Z3 von Konrad Zuse 315