Z3

Z3 replika vystavená v Německém muzeu v Berlíně

Z3 od Konráda Zuse byl první funkční programovatelný počítací stroj. Byl postaven z 2600 relé. Z toho 2000 relé pro paměť a 600 relé pro aritmetickou jednotku. V paměti mohlo být 64 slov dlouhých 22 bitů. Frekvenci hodinového signálu měl 5,3 Hz a délku slova 22 bitů[1]. Rychlost sčítání 0,8 s a rychlost násobení 3 s. Jeho spotřeba byla 4000 wattů a vážil 1000 kg. Výpočty počítač prováděl v binární soustavě a pracoval s čísly s plovoucí desetinnou čárkou. Z3 četl programy z děrovaného filmu.

Stroj byl dokončen a 12. května 1941 úspěšně předveden vědcům z DVL (německy Deutsche Versuchsanstalt für Luftfahrt, česky Německý výzkumný ústav letectva) v Berlíně[2]. Roku 1943 byl původní Z3 zničen při bombardování Berlína spojenci. V roce 1960 byla postavená plně funkční replika Z3 společností Konráda Zuse „ZuseKG“. Tato replika je vystavena v Deutsches Museum v Mnichově. V roce 1998 úspěšně zvládl test Turingovo-vyčíslitelných funkcí a byl označen za turingovsky úplný[3][4].

Z3 byl používán za nacistické vlády v Německém výzkumném ústavu letectva pro statickou analýzu vibrací křídla letadla[5].

V čem byl Z3 jiný

[editovat | editovat zdroj]

Počítač Z3 byl řízen programem na rozdíl od prvního počítače sestrojeného v roce 1623 Wilhelmem Schickardem. Počítač Z3 byl úspěšný díky použití jednoduché dvojkové soustavy, kterou o tři století dříve vymyslel Gottfried Leibniz a Boole ji později použil pro svoji Booleovu algebru. V roce 1937 napadlo Claude Shannona z MIT (Massachusettský technologický institut) aplikovat Booleovu algebru na elektronická relé při návrhu digitálních obvodů v jeho seminární práci o číslicové technice. Avšak až Zuse (aniž by znal práci Claude Shannona z MIT) prakticky propojil obě myšlenky v programovém řízení Z3.

První programovatelný počítač navrhl britský matematik Charles Babbage v roce 1830 a nazval ho Analytical Engine. První elektronické číslicové počítače byly vyrobeny ve Velké Británii a nazývaly se Colossus[6]. Bylo jich 10 a sloužily k lámání kódů. Pro jejich výrobu byly použity elektronky. Počítaly ve dvojkové soustavě a programovaly se pomocí propojovacích polí a přepínačů. Vývoj těchto počítačů byl několik desetiletí utajován, a proto nebyly dlouho uváděny v historii vývoje počítačů jako první. ENIAC byl dokončen až po válce. Obsahoval elektronky, programoval se pomocí přepínačů a používal desítkovou soustavu. Do roku 1948 se programoval stejně jako Colossus.

Z3 měl uložený program na externí pásce, takže při výměně programu nebylo nutné znovu ručně přenastavit propojovací pole. Prvními počítači na světě s programem uloženým v paměti uvnitř počítače byly Manchester Small-Scale Experimental Machine z roku 1948 a EDSAC (anglicky Electronic Delay Storage Automatic Calculator) z roku 1949. Zavedení koncepce paměti programu uvnitř počítače je papírově přisuzováno od roku 1945 John von Neumannovi a jeho kolegům. Nicméně o tomto konceptu se již roku 1936 zmiňuje sám Konrad Zuse, avšak jeho patent byl zamítnut.

Porovnání charakteristických rysů prvních číslicových počítačů

[editovat | editovat zdroj]
Název počítače Uveden do provozu Číselná soustava Mechanismus počítače Programování Turing-complete
Zuse Z3 (Německo) Květen 1941 Binární Elektromechanické Řízený programem na děrované filmové pásce Ano (1998)
Atanasoff–Berry Computer (USA) Léto 1941 Binární Elektronické Neprogramovatelný, jednoúčelový Ne
Colossus (UK) Leden 1944 Binární Elektronické Řízený programem – propojovací kabely a přepínače Ne
Harvard Mark I - IBM ASSC (USA) 1944 Decimální Elektromechanické Řízený programem – 24 děr na papírové děrné pásce (žádné podmíněné větvení) Ano (1998)
ENIAC (USA) Listopad 1945 Decimální Elektronické Řízený programem – propojovací kabely a přepínače Ano
Manchester Small-Scale Experimental Machine (UK) Červen 1948 Binární Elektronické Řízený programem uloženým ve Williamsově trubici Ano
Upravený ENIAC (USA) Září 1948 Decimální Elektronické Řízený programem – propojovací kabely a přepínače plus primitivní nepřepisovatelný program používající tabulky funkcí (podobné jako ROM) Ano
EDSAC Květen 1949 Binární Elektronické Řízený programem uloženým ve Williamsově trubici a drum (bubnové) magnetické paměti Ano
Manchester Mark I Říjen 1949 Binární Elektronické Řízený programem uloženým ve rtuťové paměti se zpožďovací linkou (anglicky Delay line memory) Ano
CSIRAC (Austrálie) Listopad 1949 Binární Elektronické Řízený programem uloženým v paměti se zpožďovací linkou Ano

Instrukční soubor

[editovat | editovat zdroj]

Z3 fungoval jako zásobníkový počítač ovšem pouze se dvěma registry R1 a R2. První instrukce čtení načetla hodnotu z paměti do R1, druhá instrukce čtení načetla hodnotu z paměti do R2. Aritmetická instrukce počítala s R1 a R2, výsledek zapsala do R1 a smazala obsah R2. Další instrukce čtení by četla do R2. Zapisovací instrukce by do paměti uložila hodnotu z R1, vymazala R1 a další čtení by proběhlo do R1.

Kód Příkaz Popis Délka (cyklů)
11·zzzzzz Pr z Načíst z paměti z nejdřív do R1, hned poté do R2 1
10·zzzzzz Ps z Zapsat R1 do paměti z 0–1
01·110000 Lu Pozastavit a načíst desítkové číslo z klávesnice do R1 9–41
01·111000 Ld Pozastavit a zobrazit desítkově R1 9–41
01·100000 La Součet: R1 ← R1 + R2; R2 ← 0 3
01·101000 Ls Rozdíl: R1 ← R1 – R2; R2 ← 0 4–5
01·001000 Lm Násobení: R1 ← R1 × R2; R2 ← 0 16
01·010000 Li Dělení: R1 ← R1 / R2; R2 ← 0 18
01·011000 Lw Odmocnina: R1 ← √(R1); R2 ← 0 20

1: díra, 0: „nedíra“, zzzzzz: adresa paměti (0-63), ·: vodící díra

Implementace Turingova univerzálního stroje na Z3

[editovat | editovat zdroj]

Na Z3 bylo možné v vytvářet smyčky (slepením začátku a konce pásky), avšak nebyla k dispozici žádná instrukce podmíněného skoku. I přes to se v roce 1998 podařilo Raúlu Rojasovi ukázat, že je možné na něm implementovat Turingův stroj[3][4]. V závěru své práce uvádí že z pohledu abstraktní teoretické perspektivy je počítačový model Z3 rovnocenný počítačovému modelu současných počítačů. Ale z praktického pohledu se od dnešních počítačů liší.

Z pragmatického hlediska je důležité, že Z3 poskytl docela praktickou instrukční sadu pro řešení typických inženýrských problémů 40. let minulého století. Zuse byl stavební inženýr, který stavěl počítače pro usnadnění své práce.

Příklad realizace podmíněného skoku na Z3

[editovat | editovat zdroj]

Cílem je převést následující pseudokód s podmíněnými skoky na sekvenci matematických operací, které uměl Z3. Ukázka vychází z důkazu Raúla Rojase, pouze je otočena logika koeficientů .

if x == 3:
  b = a * c
else if x == 4:
  c = b / a
else:
  a = b + c

Předchozí kód lze bez změny funkčnosti přepsat následovně:

if x == 3:
  a = a
  b = a * c
  c = c
else if x == 4:
  a = a
  b = b
  c = b / a
else:
  a = b + c
  b = b
  c = c

Nebo též:

a = (x != 3 && x != 4) ? b + c : a
b = (x == 3) ? a * c : b
c = (x == 4) ? b / a : c

Pro podmínky (x == 3) a (x == 4) lze zavést koeficienty Tb a Tc, které jsou buď 1 (podmínka splněna) nebo 0 (podmínka nesplněna). Koeficient Ta lze vypočítat jako negaci logického součtu Tb a Tc, respektive jako součin negací. Pak bude možné převést výpočet následovně:

Ta = (1 - Tb) * (1 - Tc)
a  = Ta * (b + c) + (1 - Ta) * a
b  = Tb * (a * c) + (1 - Tb) * b
c  = Tc * (b / a) + (1 - Tc) * c

Pokud se porovnává (x == 3) a uvažují se pro jednoduchost 4bitová celá čísla, tedy (x == 0b0011), tak lze porovnat jednotlivé bity x (dále značené ) s negovaným číslem 3 (tedy 0b1100) a vypočítat tak koeficient Tb:

Analogicky koeficient Tc pro podmínku (x == 4), respektive (x == 0b0100) (takže inverzně 0b1011):

Koeficient vyjde 1 právě tehdy, když všechny bity x budou různé od příslušných bitů negovaného čísla v podmínce (a tedy stejné jako všechny příslušné bity původního čísla v podmínce).

Je zřejmé, že převáděním podmíněných skoků na matematické sekvence tímto způsobem se enormně prodlouží program i doba výpočtu.

  1. ZUSE, Konrad. Der Computer ? Mein Lebenswerk. 3rd ed.. vyd. Berlin: Springer-Verlag, 1993. ISBN 3-540-56292-3. S. p. 55. (German) 
  2. Technische Universität Berlin - Rechenhilfe für Ingenieure Archivováno 13. 2. 2009 na Wayback Machine., Essay on Zuse (in German) - Technická univerzita Berlín
  3. a b ROJAS, R. How to make Zuse's Z3 a universal computer. IEEE Annals of the History of Computing. 1998, roč. 20, s. pp. 51–54. DOI 10.1109/85.707574. 
  4. a b How to Make Zuse's Z3 a Universal Computer by Raúl Rojas. www.zib.de [online]. [cit. 2008-06-28]. Dostupné v archivu pořízeném dne 2014-07-14. 
  5. Zuse. www.crash-it.com [online]. [cit. 2008-07-02]. Dostupné v archivu pořízeném dne 2008-03-18. 
  6. B. Jack Copeland (editor), Colossus: The Secrets of Bletchley Park's Codebreaking Computers, 2006, Oxford University Press, ISBN 0-19-284055-X.

Externí odkazy

[editovat | editovat zdroj]