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ý

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čů

Název počítačeUveden do provozuČíselná soustavaMechanismus počítačeProgramováníTuring-complete
Zuse Z3 (Německo)Květen 1941BinárníElektromechanickéŘízený programem na děrované filmové pásceAno (1998)
Atanasoff–Berry Computer (USA)Léto 1941BinárníElektronickéNeprogramovatelný, jednoúčelovýNe
Colossus (UK)Leden 1944BinárníElektronickéŘízený programem – propojovací kabely a přepínačeNe
Harvard Mark I - IBM ASSC (USA)1944Decimá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 1945DecimálníElektronickéŘízený programem – propojovací kabely a přepínačeAno
Manchester Small-Scale Experimental Machine (UK)Červen 1948BinárníElektronickéŘízený programem uloženým ve Williamsově trubiciAno
Upravený ENIAC (USA)Září 1948Decimá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
EDSACKvěten 1949BinárníElektronickéŘízený programem uloženým ve Williamsově trubici a drum (bubnové) magnetické pamětiAno
Manchester Mark IŘíjen 1949Biná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 1949BinárníElektronickéŘízený programem uloženým v paměti se zpožďovací linkouAno

Instrukční soubor

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ódPříkazPopisDélka (cyklů)
11·zzzzzzPr zNačíst z paměti z nejdřív do R1, hned poté do R21
10·zzzzzzPs zZapsat R1 do paměti z0–1
01·110000LuPozastavit a načíst desítkové číslo z klávesnice do R19–41
01·111000LdPozastavit a zobrazit desítkově R19–41
01·100000LaSoučet: R1 ← R1 + R2; R2 ← 03
01·101000LsRozdíl: R1 ← R1 – R2; R2 ← 04–5
01·001000LmNásobení: R1 ← R1 × R2; R2 ← 016
01·010000LiDělení: R1 ← R1 / R2; R2 ← 018
01·011000LwOdmocnina: R1 ← √(R1); R2 ← 020

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

Implementace Turingova univerzálního stroje na Z3

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

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.

Reference

  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

Média použitá na této stránce