Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor: prof. Horst Zuse
Tłumaczył: mgr Jerzy Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Rozdział 4

Szczegółowe spojrzenie na architekturę maszyn Z2 i Z3

SPIS TREŚCI

Rozdział 4

Komputer Z2

Niezadowolony z zawodności działania przełączających arkuszy metalowych użytych w konstrukcji komputera Z1 Konrad Zuse zbudował w następnej kolejności komputer Z2. Komputer ten posiadał taki sam typ pamięci mechanicznej jak Z1, lecz Konrad zastosował w nim ponad 800 starych przekaźników telefonicznych, zużytych do zbudowania jednostek arytmetyki i sterowania. Jednostka arytmetyczna Z2 działała na 16-bitowych liczbach stałoprzecinkowych, ponieważ konstruktor chciał przetestować niezawodność przekaźników przy zastosowaniu do obliczeń arytmetycznych. Niestety, fotografie i plany Z2 uległy zniszczeniu podczas alianckich nalotów bombowych w czasie trwania wojny. Jednakże Z2 wykonał swoje zadanie, ponieważ mój ojciec przekonał się, iż przekaźniki były rzeczywiście niezawodne i w konsekwencji zbudował następny komputer, Z3, już w całości z przekaźników (600 w jednostce arytmetycznej i 1,800 w pamięciach oraz w jednostce sterującej).

Komputer Z3 (1939-1941)

Wspomagany przez przyjaciół i przez niewielkie dotacje rządowe Konrad Zuse budował swoją maszynę Z3 od roku 1939 do 1941 przy ulicy Methfesselstraße 7 w Berlin-Kreuzberg. Chciał użyć Z3 do pokazania, iż jest możliwe zbudowanie niezawodnego, swobodnie programowalnego komputera opartego na dwójkowym systemie liczenia i dwójkowym systemie logiki, którego można by używać do wykonywania nawet bardzo złożonych obliczeń arytmetycznych. Ze względu na niezawodność zastosował przekaźniki w całej maszynie.

obrazek
Fot.24. Oryginalny projekt Z3
narysowany przez Konrada Zuse w 1939
obrazek
Fot.25. Komputer Z3
odbudowany przez Konrada Zuse w 1960/61

Oryginalny projekt komputera Z3 jest zilustrowany na Fot.24. Niestety, nie zachowały się żadne zdjęcia tej maszyny, ponieważ wszystkie dokumenty zostały zniszczone w czasie II Wojny Światowej przez naloty bombowe aliantów.

Konrad Zuse odbudował komputer Z3 w swoim przedsiębiorstwie Zuse KG(3) w latach pomiędzy 1960 a 1961 (Fot.25) w celu zademonstrowania działania tej maszyny, co miało uzasadnić jego patenty i pokazać światu dzieło jego życia (a również wykorzystać tę maszynę dla celów reklamowych). Tak jak swój pierwowzór, odbudowany komputer Z3 skonstruowany został w całości z przekaźników. Pamięć Z3 (64 słowa po 22 bity każde) jest widoczna po stronie lewej na Fot.25. Konsola znajduje się z przodu, natomiast zmiennoprzecinkowa jednostka arytmetyki dwójkowej pojawia się po prawej stronie. Komputer Z3 mierzył około pięć metrów długości, dwa metry wysokości i 80 centymetrów grubości.

(3)Firma Zuse KG (gdzie "KG" oznacza specjalny typ przedsiębiorstwa w postaci ograniczonej spółki) została założona w roku 1949 w miejscowości Neukirchen (Kreis Hünfeld). Znajduje się ona około 120 kilometrów na północ od Frankfurtu.

W 1957 Zuse KG przeniesiono do Bad Hersfeld, które leży 15 kilometrów na północ od Neukirchen. Przeprowadzka ta spowodowana była brakiem miejsca na pracownie i ciasnotą pomieszczeń produkcyjnych.

obrazek
Fot.26. Konrad Zuse z odbudowanym Z3 w 1961.
Pamięć znajduje się na lewo.
Jednostka arytmetyczna z krokowymi przekaźnikami
jest na prawo,
a konsola z czytnikiem taśmy perforowanej
znajduje się z przodu na lewo
obrazek
Fot.27. Strona z notatnika Konrada Zuse
z 12 maja 1941,
gdy zademonstrował działający Z3
naukowcom w Berlinie

Bezspornym jest obecnie fakt, iż Z3 był pierwszym na świecie, niezawodnym w działaniu, swobodnie programowalnym i co ważne, działającym komputerem pracującym z dwójkową logiką i arytmetyką zmiennoprzecinkową. W 1941 Z3 posiadał prawie wszystkie cechy nowoczesnego komputera zdefiniowane dopiero w roku 1946 przez Johna von Neumanna i jego kolegów [BURK46]. Jedynym wyjątkiem był brak możliwości przechowywania programu wraz z danymi w pamięci. Konrad Zuse nie zaimplementował tej cechy w Z3, ponieważ jego 64-słowowa pamięć była zbyt mała na obsługę takiego trybu działania. Z uwagi na fakt, iż chciał on wykonywać obliczenia na tysiącach operacji ułożonych w sensownej kolejności, używał pamięci jedynie do przechowywania liczb.

obrazek
Fot.28. Schemat blokowy komputera Z3
obrazek
Fot.29. Odbudowany w Zuse KG
komputer Z3 (1961)

Struktura blokowa Z3 jest bardzo podobna do nowoczesnego komputera. Z3 składał się z oddzielnych modułów, takich jak czytnik taśmy perforowanej, jednostka sterująca, jednostka arytmetyki zmiennoprzecinkowej oraz urządzenia wejścia/wyjścia. W związku z tym tematem Burks [BURK46] napisał dopiero w roku 1946: "Kompletne urządzenie będzie w takim stopniu uniwersalną maszyną liczącą w jakim wyposażone zostało w organy związane z arytmetyką, pamięcią danych, sterowaniem i połączeniem z człowiekiem-operatorem. Maszyna ta powinna pracować w pełni automatycznie, tzn. niezależnie od człowieka-operatora, gdy rozpoczną się obliczenia".

Bez wątpienia Z3 w pełni spełniał wymagania Burksa. Co więcej, Z3 obsługiwał specjalny tryb działania, ponieważ instrukcja Lu zatrzymywała program i uaktywniała urządzenie wejściowe. Człowiek-operator mógł między innymi sprawdzić zawartość rejestrów R1  i R2 w jednostce arytmetycznej, mógł wykonać pośrednie obliczenia używając rejestrów R1 i R2, następnie mógł uruchomić dalsze wykonywanie programu.

Rozważmy teraz dyskusję nad liczbami zmiennoprzecinkowymi opisaną w referacie Burksa [BURK46], gdzie napisano: "Dlatego wydaje się nam zupełnie niejasne, czy skromne zalety binarnych liczb zmiennoprzecinkowych równoważą utratę pojemności pamięci i zwiększoną złożoność arytmetyki oraz obwodów sterujących". (Również zwróćmy uwagę, iż użycie systemu dwójkowego w komputerach było proponowane w "Pierwszym Szkicu raportu na temat komputera EDVAC" napisanym przez Johna von Neumanna [NEUM45]).

Ważne jest również spostrzeżenie, że stosowanie liczb zmiennoprzecinkowych było rozważane dopiero w roku 1946 przez Burksa i innych, w którym to czasie wciąż nie było przekonania, iż jest to dobry pomysł. Dla porównania Konrad Zuse opisał koncepcję procesora zmiennoprzecinkowego w roku 1934 i zaimplementował taką jednostkę w 1936, pełne dziesięć lat przed referatem Burksa, który postulował to jako pomysł dla przyszłych komputerów, nie zaś dla maszyn już zbudowanych.

A teraz rozważmy szczegółowo koncepcje logiczne komputera Z3:

Maszyna Równoległa: Z3 był działającą maszyną równoległą. 22-bitowe słowo danych mogło być w całości przesłane do rejestru R1 i na odwrót w jednym kroku (cyklu zegara). To samo odnosiło się do jednostki arytmetycznej, gdzie były używane między innymi równoległe sumatory.

Pamięć: Pamięć Z3 złożona była z 64 słów, każde po 22 bity. Każde słowo pamięci było bezpośrednio adresowalne przez instrukcje Pr z lub Ps z, gdzie z jest adresem z zakresu: 64 <= z <= 1. Na każdy bit pamięci konieczny był jeden przekaźnik.

Liczby Zmiennoprzecinkowe: Konrad Zuse wykorzystał logarytmiczny zapis liczb. Weźmy na przykład liczbę 100. W systemie dwójkowym liczba ta może być zapisana jako:

100 = 1x26+ 1x25 + 0x24 + 0x23+ 1x22 + 0x21 + 0x20 = 64 + 32 + 4

Liczba 100 będzie utworzona przez potęgi liczby 2 związane z liczbami: 26, 25 i 22 = 64 + 32 + 4. W systemie dwójkowym do zapisu liczby stosujemy cyfry 1 lub 0. (Są to właśnie współczynniki 1 oraz 0 stojące przed operatorami mnożenia.) W systemie binarnym dziesiętna liczba 100 może więc być zapisana jako: 1100100. Jest to liczba dwójkowa bez przecinka dziesiętnego. Liczba 100,5 może być zapisana jako:

100.5 = 1x26+1x25+0x24+0x23+1x22+0x21+0x20+1x2-1= 64+32+4+0.5

W systemie dwójkowym zapisujemy to jako 1100100,1, gdzie 1 na prawo od przecinka dziesiętnego reprezentuje 2-1= 0.5 (Taki sposób zapisywania liczby znany jest pod nazwą "stałoprzecinkowy"). Zapisywanie liczby przy wykorzystaniu notacji dwójkowej (0 i 1) daje komputerom duże korzyści. Nie uległo to zmianie do dnia dzisiejszego. Ponieważ istnieją tylko dwa możliwe stany, można użyć pary obwodów do ich zapamiętania i przetwarzania. W roku 1939 przekaźniki były takimi podstawowymi elementami do wykorzystania przy budowie komputerów. Jednakże powyższy zapis liczb posiada wadę. Konrad Zuse używał 22 bitów do swoich liczb, lecz przy zapisie całkowitoliczbowym 22 bity mogą być użyte do zapisu względnie małych liczb w zakresie od 0 do 222-1 (0 ... 4194303). Z tego powodu Konrad Zuse zastosował dwójkowy zapis zmiennoprzecinkowy (semi-logarytmiczny). Rozważmy jeszcze raz liczbę 100:

100 = 1x26+ 1x25 + 0x24 + 0x23+ 1x22 + 0x21 + 0x20 = 64 + 32 + 4

Konrad Zuse podzielił liczbę na wykładnik i mantysę. W przypadku naszej przykładowej liczby 100 utworzyłby on wykładnik z największej potęgi liczby 2 występującej w jej reprezentacji dwójkowej (6). Liczba ta zostałaby następnie zamieniona na system dwójkowy i otrzymałby 110. Podobnie mantysa związana z naszą przykładową liczbą miałaby zapis dwójkowy 1100100. Dałoby to w wyniku następujący zapis zmiennoprzecinkowy:

00000110 110010000000000

Używając tego schematu zauważamy, iż pierwszą cyfrą mantysy jest zawsze 1. Z tego powodu pierwsza jedynka może być pominięta, pozostawiając mantysę jako 100100 zamiast 1100100. Stosując tę metodę Konrad Zuse zdołał uzyskać dodatkową cyfrę potrzebną mu do zwiększenia dokładności. I tak zamiast 14 bitów, miał on w efekcie 15 bitów na mantysę. W wyniku nasza liczba 100 zostałaby obecnie zapisana jako:

00000110 10010000000000

Liczba 100,5 w systemie dwójkowym zapisywana jest jako 1100100,1, natomiast jej zmiennoprzecinkowy odpowiednik jest następujący:

00000110 110010010000000

W Z3 liczba ta zostałaby zapisana następująco:

00000110 10010010000000

Używając tego pomysłu Konrad Zuse był w stanie obsługiwać zarówno bardzo duże liczby jak i bardzo małe w zakresie od ± 2-63 do ± 263.

obrazek
Fot.30. Przykłady zmiennoprzecinkowych liczb w komputerze Z3.
VZ jest bitem znaku dla mantysy, E7 do E1 są bitami wykładnika,
a liczby 14 do 1 przedstawiają 14 bitów mantysy.
Obrazek ten jest kopią z jednego z Pokazów Multimedialnych Konrada Zuse [ZUSE98].

Instrukcje: Komputer Z3 używał poniższego zbioru instrukcji wraz z ilością cykli na na każdą z nich. Wprowadzamy następującą notację: R1 i R2 są 22-bitowymi rejestrami. Zapis R1 := R1 + R2 oznacza "Zawartość rejestru R1 jest dodawana do zawartości rejestru R2 a wynik umieszczany w rejestrze R1 (rejestr R2 ustawiany jest na pusty)."

Instrukcja Wykonywana operacja Cykle
Pr z Odczyt zawartości słowa pamięci z do rejestru R1 lub R2  (pierwszy odczyt odnosi się zawsze do rejestru R1, natomiast każdy kolejny odnosi się do rejestru R2, aż rejestr R1 zostanie umieszczony w pamięci)  1
Ps z Zapis zawartości rejestru R1 do słowa pamięci z 0-1
Ls1 Dodawanie: R1 := R1 + R2 3
Ls2 Odejmowanie: R1 := R1 - R2 4-5
Lm Mnożenie: R1 := R1 * R2 16
Li Dzielenie: R1 := R1 / R2 20
Lw Pierwiastek kwadratowy: R1 := SQR(R1) 20
Lu Wywołanie urządzenia wejściowego w celu wprowadzenia liczb dziesiętnych. 9-41
Ld Wywołanie urządzenia wyjściowego do wyprowadzenia wyników dziesiętnych 9-41

Dwoma podstawowymi operacjami arytmetycznymi komputera Z3 było dodawanie i odejmowanie wykładników i mantys. Dodawanie i odejmowanie wymagają więcej niż jednego cyklu, ponieważ w przypadku liczb zmiennoprzecinkowych należy się zatroszczyć o wyrównanie wartości wykładnika obu argumentów. Wymaga to dodatkowych porównań i przesuwania bitów. Liczba cykli potrzebnych dla instrukcji Lu i Ld jest zmienna, ponieważ zależy od wykładnika argumentu. Liczba może być umieszczona w pamięci (Ps) w czasie zero cykli, gdy wynik ostatniej operacji arytmetycznej może być przekierowany do pożądanego adresu pamięci. W takim przypadku cykl potrzebny instrukcji zapisu nakłada się na ostatni cykl operacji arytmetycznej.

Możesz być lekko zdziwiony, że na liście rozkazów brakuje instrukcji rozgałęzień. W swoich dokumentach pochodzących z okresu pomiędzy 1936 a 1945 Konrad Zuse opisał wiele naukowych i numerycznych problemów, które chciał rozwiązać przy pomocy swoich maszyn, lecz żaden z tych problemów nie wymagał warunkowych instrukcji skoków.

Jednakże w 1944 wspomniał o skokach warunkowych gdy wprowadzał Swobodne Plany Obliczeń (Freie Rechenpläne) [ZUSE45, str.16]. Jego definicja była następująca: "Bei den freien Rechenplänen beeinflussen die eigentlichen Variablen den Ablauf der Rechnung. Zunächst können die bei den quasistarren Rechenplänen besprochenen Planvariablen wie variable Operationszeichen, Strukturzeichen usw. Funktionen der eigentlichen Variablen sein. Es kann z.B. die Art der Operation in einer Rechengleichung erst errechnet werden".

Tłumaczy się to jako: "W swobodnych planach obliczeń (Zuse planem nazywał program - pamiętajmy, że odpowiednia terminologia informatyczna pojawiła się kilkadziesiąt lat później - od tłum.) istniejące rzeczywiste zmienne wpływają na wykonywanie obliczeń. Następnie w quasi-sztywnych planach obliczeń wymienione zmienne planu, takie jak zmienne symbole operacji lub zmienne symbole struktury, mogą być funkcjami tych zmiennych rzeczywistych. Można na przykład najpierw wyliczyć rodzaj operacji w równaniu rachunkowym".

Jednostka Arytmetyczna i Równoczesne Przeniesienia: Jednostka arytmetyczna komputera Z3 była majstersztykiem Konrada Zuse. Zredukował on wszystkie operacje arytmetyczne do dodawania lub odejmowania (odejmowanie jest dodawaniem uzupełnienia liczby). Do realizacji dodawania zainstalował specjalny układ logiczny, ponieważ chciał uniknąć zużywania zbyt wielu cykli zegarowych na dodawanie dwóch binarnych liczb zmiennoprzecinkowych. Używając tego układu był w stanie zmniejszyć dodawanie dwóch liczb zmiennoprzecinkowych z minimum 14 cykli (przy dodawaniu szeregowym) do jedynie trzech cykli (przy dodawaniu równoległym). Chociaż istniało jedynie pięć instrukcji dla operacji arytmetycznych (Ls1, Ls2, LM, Li i Lw), zostały zaimplementowane niektóre dodatkowe operacje, które można było wywołać z urządzenia wejściowego. Uprościł również wykonywanie operacji arytmetycznych przy pomocy mikrosekwencji sterowanych przez przekaźniki krokowe.

obrazek
Fot.31. Schemat blokowy jednostki arytmetycznej
komputera Z3
obrazek
Fot.32. Przekaźnik zastosowany w Z3

Konrad Zuse użył własnego pomysłu układu przeniesień równoczesnych zbudowanego z przekaźników do dodawania liczb zmiennoprzecinkowych. Zakładając, iż liczby do dodania były wciąż w pamięci, potrzeba było pięciu cykli zegarowych: dwa na instrukcję Pr oraz trzy na Ls1. Pierwszy cykl był używany do przeniesienia pierwszego składnika do rejestru R1, a drugi cykl do przeniesienia drugiego składnika do rejestru R2. Następnie dodawane były wykładnik i mantysa, a wynik umieszczano w rejestrze R1 (po tej operacji rejestr R2 był zerowany). Zapisujemy to formalnie jako: Ls1: R1 := R1 + R2. (Konrad Zuse używał dodatkowych wewnętrznych rejestrów, które nie pokazano na powyższej ilustracji. Rejestry te były o dwa bity większe niż mantysa w celu udostępnienia wyższej dokładności wyników.)

Algorytm mnożenia w Z3 przypomina sposób ręcznego mnożenia liczb dziesiętnych. Oparty jest na powtarzanych dodawaniach mnożnika zgodnie z poszczególnymi cyframi mnożnej. Algorytm dzielenia jest podobny do algorytmu dodawania z tym wyjątkiem, iż używane jest odejmowanie.

Algorytm realizujący instrukcję Lw jest jedną z "perełek" komputera Z3. Głównym pomysłem jest zredukowanie operacji obliczania pierwiastka kwadratowego do dzielenia.

Obsługa Wyjątków Arytmetycznych: Komputer Z3 miał zdolność obsługiwania wyjątków arytmetycznych. Konrad Zuse zaimplementował tę obsługę, ponieważ chciał mieć pewność, iż Z3 będzie poprawnie obliczał liczby, nawet gdyby miał pracować bez nadzoru człowieka. Dlatego Z3 zaprojektowano do rozpoznawania następujących sytuacji:

Obsługa arytmetycznych sytuacji wyjątkowych

Przekroczenie dolnej granicy zakresu liczb daje w wyniku 0

Przekroczenie górnej granicy zakresu liczbowego daje w wyniku nieskończoność

Przy obliczeniach z udziałem 0:

Przy obliczeniach z udziałem nieskończoności:

Wszystkie operacje zawierające wartość nieokreśloną dają w wyniku również wartość nieokreśloną

Stan nieokreślony był wyświetlany po lewej stronie urządzenia wyjściowego za pomocą małych żarówek. Dla liczb 0 i nieskończoności Konrad Zuse użył specjalnego kodu bitów w wykładniku. Wykładnik o wartości -63 stosowano do zapisu zera, natomiast wartość wykładnika równa -64 lub +63 oznaczała ± nieskończoność. Komputer Z3 zawsze wykonywał poprawnie obliczenia, jeśli jednym z argumentów było 0 lub nieskończoność, a drugi argument posiadał wartość mieszczącą się w dozwolonym zakresie.

obrazek
Fot.33. Urządzenie wejścia/wyjścia w Z3.
Liczby można było wprowadzać
przy pomocy czterech przycisków
dla mantysy i 17 dla wykładnika.
Wyniki wyświetlane były przy pomocy lampek
obrazek
Fot. 34. Urządzenie wyjściowe w Z3
z widocznymi lampkami
dla liczb dziesiętnych (na prawo)
i obsługi wyjątków arytmetycznych (na lewo)

W celu wyświetlenia wyników, dwójkowe liczby zmiennoprzecinkowe używane wewnątrz Z3 były zamieniane na dziesiętne liczby zmiennoprzecinkowe (każda taka zamiana wymagała od 9 do 41 cykli zegarowych w zależności od wykładnika). Mantysa składała się z 4 cyfr dziesiętnych (pięciu jeśli uwzględnimy początkowe 1), a wykładnik przyjmował wartości pomiędzy -8 a +8. Największą, możliwą do pokazania liczbą dziesiętną było 19999E108.

Maszyna Zegarowa: Szybkość pracy komputera Z3 kontrolował specjalny generator impulsów ("zegar"), który wykorzystywano do synchronizowania urządzenia. W rzeczywistości zegar składał się z silnika elektrycznego napędzającego wałek bębnowy, do którego przymocowano pewną liczbę "ramion" (lub sterczących dźwigni). Każde z ramion mogło zamykać wyłącznik prądu elektrycznego, który z kolei aktywował grupy przekaźników. Ramiona ustawione były pod różnymi kątami, co powodowało zamykanie różnych wyłączników w różnych okresach czasu, umożliwiając w ten sposób systemowi sterowanie przepływem danych pomiędzy modułami.

obrazekobrazek
Fot. 35 (po lewej) i Fot. 36 (po prawej).
Specjalny generator impulsów komputera Z3 (zegar).
Szybkość krążka mogła być zmieniana krokowo

Oczywiście Konrad chciał uzyskać najwyższą możliwą częstotliwość zegara, aby Z3 mógł szybko wykonywać obliczenia. Jednakże należało uzyskać równowagę pomiędzy częstotliwością zegara a niezawodnością pracy maszyny, ponieważ wyższe częstotliwości zegara powodowały iskrzenie przekaźników telefonicznych. Ostatecznie ustalono częstotliwość zegarową na około 5.3 Hertza, zależnie od jakości przekaźników.

W rozmowach prowadzonych z Rojasem [ROJA98a] i ze mną ojciec wspominał, że wymnożenie dwóch liczb zmiennoprzecinkowych zajmowało około trzech sekund (Z3 potrzebował na mnożenie 16 cykli, więc 16 cykli / 5.3 Hertzów = 3 sekundy). Aby zapobiec iskrzeniu styków przekaźników w momencie przełączania, ojciec użył komutatora do przerywania prądu na tę chwilę. Dzięki temu uniknięto korozji materiału i zapewniono długi czas działania styków w przekaźnikach.

Mikrosekwenser i Współbieżność: Sercem jednostki sterującej komputera Z3 były mikrosekwensery. Każdy cykl w Z3 dzielono na pięć kroków (I do V).

obrazek
Fot. 37 Współbieżne wykonywanie instrukcji w komputerze Z3

Kroki IV i V są używane do przesyłu informacji z jednej części komputera Z3 do innej; na przykład zawartości rejestru do komórki pamięci. Podczas kroków I, II i III w obu częściach jednostki arytmetycznej wykonywane jest dodawanie lub odejmowanie (to faza wykonawcza instrukcji). Typowa instrukcja pobiera argumenty operacji, wykonuje na nich operację i zapisuje z powrotem wyniki. Konrad Zuse uważał za bardzo ważne zminimalizowanie czasu wykonywania instrukcji, więc zaprojektował wykonywanie ich poprzez technikę nakładania (zobacz Fot.37).

Technika nakładania instrukcji jest pewnym rodzajem współbieżności. Nie jest powszechnie znany fakt, iż 30 czerwca 1949 Konrad Zuse został uhonorowany patentem na komputer współbieżny.

obrazek
Fot. 38. Pierwszy na świecie współbieżny komputer
obrazek
Fot. 39. Patent Konrada Zuse

Nazwa tego patentu brzmiała: "Rechenmaschine zur Durchführung arithmetischer Rechenoperationen (z.B. Multiplikationen)", co tłumaczy się na "Kalkulator do wykonywania arytmetycznych operacji (na przykład mnożenia)". Była to maszyna złożona z ośmiu niezależnych modułów, z których każdy mógł wykonywać cząstkowe operacje arytmetyczne na pewnych danych, co umożliwiało wykonywanie tych operacji na dużych zbiorach danych.

Teraz powróćmy do mikrosekwenserów - wykonanych przez Konrada Zuse wybieraków krokowych. Sekwensery te, stanowiąc element składowy jednostki sterującej, używano do włączania sekwencji powtarzających się mikroinstrukcji. Na przykład instrukcję Lm zrealizowano jako ciąg dodawań. W komputerze Z3 znajdziemy mikrosekwencje dla instrukcji Lw, Lm, Li, Lu oraz Ld. Zwróćmy uwagę, że nie oznacza to koncepcji mikroprogramowania w dzisiejszym ujęciu, lecz może być przykładem sprzętowego wykonywania mikrosekwencji rozkazów.

obrazek
Fot. 40. Mikrosekwensery komputera Z3
zbudowane z wybieraków krokowych
obrazek
Fot. 41.Wybierak krokowy

Przykładowy program dla komputera Z3 (wielomian): Rozważmy teraz przykład programu dla Z3. Załóżmy, że chcemy obliczyć wartość wielomianu:

((a4x + a3)x + a2)x + a1

Załóżmy dalej, że wartości współczynników a4, a3, a2 oraz a1 zostały wcześniej umieszczone w komórkach pamięci o adresach 4, 3, 2 i 1 za pomocą urządzenia wejściowego.

Lu ;Wywołanie urządzenia wejściowego w celu wprowadzenia wartości dla zmiennej x
Ps 5 ;Zmienną x umieszczamy w komórce pamięci o adresie 5
Pr 4 ;Do rejestru R1 wczytujemy współczynnik a1
Pr 5 ;Do rejestru R2 odczytujemy zmienną x
Lm ;Wymnażamy: R1 := R1 x R2
Pr 3 ;Do rejestru R2 ładujemy współczynnik a3
Ls1 ;Dodajemy: R1 := R1 + R2
Pr 5 ;Ładujemy x do R2
Lm ;Mnożymy: R1 := R1 x R2
Pr 2 ;Ładujemy a2 do rejestru R2
Ls1 ;Dodajemy: R1 := R1 + R2
Pr 5 ;Ładujemy x do rejestru R2
Lm ;Mnożymy: R1 := R1 x R2
Ppr 1 ;Ładujemy a1 do rejestru R2
Ls1 ;Dodajemy: R1 := R1 + R2
Ld ;Pokazujemy wynik na urządzeniu wyjściowym

Instrukcja Lu umieszczona na początku programu instruuje urządzenie wejściowe, aby odczytało wartość dla zmiennej x. Instrukcja Ld na końcu programu instruuje wyświetlacz Z3, aby wyświetlił wynik jako liczbę dziesiętną.

Zasada Minimalizacji i Komputer Uniwersalny (Turinga)

Konrad Zuse stosował zasady minimalizacji przy budowie swoich komputerów, ponieważ jego celem było zbudowanie potężnej maszyny liczącej jak najmniejszym wysiłkiem i kosztem. W sumie nie miał innego wyjścia, jego rodzice nie byli bogaci a i on nie posiadał zbyt wiele pieniędzy. Komputer Z3 był ostatnim z serii maszyn prototypowych (Z1-Z3) mających za cel przetarcie drogi dlamaszyny potrafiącej rozwiązywać problemy matematyczne inżynierów i naukowców.

Konrad Zuse sądził, iż jego komputer mógłby obliczyć wszystkie problemy matematyczne (w roku 1941 powiedział swoim przyjaciołom, że zbudowana przez niego maszyna potrafiłaby grać w szachy), lecz nie umiał tego udowodnić. W rzeczywistości dopiero w roku 1998 (trzy lata po śmierci Konrada) Raul Rojas [ROJA98a] przedstawił dowód, że komputer Z3 był naprawdę uniwersalnym komputerem w sensie maszyny Turinga.

Komputery S1 i S2

W latach 1942/43 Zakłady Lotnicze Henschel zamówiły komputery S1 i S2. Miały one specjalistyczne zastosowanie przy pomiarach skrzydeł samolotów. S1 wykorzystywał około 600 przekaźników i posiadał programy na stałe wbudowane do swojej struktury. S2 był następcą S1 i składał się z około 800 przekaźników i 100 tarcz liczbowych służących do mierzenia powierzchni skrzydeł. Używany był przez Zakłady Lotnicze Henschel od roku 1942. S2 można uważać za pierwszy na świecie komputer przemysłowy.


Na początek:  podrozdziału   strony 

Życie i Praca Konrada Zuse

Autor Horst Zuse

Schaperstraße 21
10719 Berlin, Germany
Tel./fax: +49-30-881-59-88
E-mail: horst.zuse@t-online.de

Tekst, fotografie oraz inne obrazki pojawiające się w artykule "Życie i Praca Konrada Zuse" są prywatną własnością Horsta Zuse i ich nieupoważniona reprodukcja lub imitacja w całości lub w części jest jawnie zabroniona. Historia życia i twórczości Konrada Zuse została umieszczona w Serwisie Edukacyjnym Nauczycieli I-LO w Tarnowie za pisemną zgodą syna wynalazcy, prof. dr inż. Horsta Zuse


Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.