Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: prof. Raúl Rojas

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

Schemat blokowy komputera Z3

SPIS TREŚCI
Podrozdziały

W tym rozdziale przyjrzymy się dokładniej strukturze komputera Z3 i opiszemy szczegółowo jego główne bloki składowe. Podstawowym problemem tego projektu jest sposób wymuszenia właściwej synchronizacji dostępnych komponentów.

Procesor

Rysunek 3 Pokazuje uproszczony widok autentycznego modułu Z3. Składa się on z dwóch części: lewa strona używana jest przy operacjach na wykładnikach liczb zmiennoprzecinkowych, prawa strona przy operacjach na mantysach. Rejestry Af i Bf przechowują wykładnik i mantysę rejestru R1. Będziemy się odwoływać do rejestru R1 jako do pary rejestrów <Af,Bf>. Para rejestrów <Ab,Bb> przechowuje wykładnik i mantysę R2. Para <Aa,Ba> zawiera wykładnik i mantysę trzeciego, tymczasowego rejestru zmiennoprzecinkowego, niewidocznego dla programisty. Dwie JAL  (Jednostka Arytmetyczno Logiczna) A i B stosuje się odpowiednio do dodawania lub odejmowania wykładników i mantys. Wynik operacji w części wykładnikowej jest umieszczany w Ae. W części mantysowej wynik operacji umieszczany jest w Be. W części B multiplekser umożliwia wybór Ba lub wyjścia JAL jako wyniku operacji. Multiplekser sterowany jest za pomocą przekaźnika Bt (jeśli Bt=0, to do Be zostanie wpisana zawartość Ba).

obrazek
Rys.3. Rejestry i ścieżki danych

Małe bufory opisane jako Ea, Eb, Ec, Ed, Ef, Fa, Fb, Fc, Fd i Ff są przełącznikami, które otwierają lub zamykają magistralę danych. Na przykład jeśli zawartość rejestru Af ma zostać przeniesiona do Aa, bufor Ea jest ustawiany na 1 i wynik wynosi Aa=Af. Zgodnie z podanym schematem zawartość Af może być przenoszona do Aa lub Ab, podczas gdy zawartość Ae można przenieś do dowolnego z rejestrów Aa, Ab  lub Af w zależności od stanu buforów. Struktura części B modułu arytmetycznego jest bardzo podobna, lecz oprócz multipleksera sterowanego przekaźnikiem Bt  mamy tutaj również rejestry przesuwne pomiędzy Bf a Ba  oraz pomiędzy Bf a Bb. Pierwszy rejestr przesuwny może przesunąć bity mantysy do dwóch pozycji w prawo oraz jedną pozycję w lewo. Jest to równoważne podzieleniu Bf przez 4 lub pomnożeniu przez 2. Drugi rejestr przesuwny może przemieścić mantysę w Bf od 1 do 16 pozycji w lewo i od 1 do 15 pozycji w prawo. Przesunięcia są potrzebne przy dodawaniu i odejmowaniu liczb zmiennoprzecinkowych. Mnożenie i dzielenie przez potęgi 2 może być z tego powodu wykonywane, gdy pobierane są argumenty dla następnej operacji arytmetycznej, które w tym kontekście nie zajmują czasu.

Liczba bitów używana w poszczególnych rejestrach jest następująca:

Rejestr Liczba bitów
Af 7 bitów
Bf 17 bitów
Aa 7 bitów
Ba 19 bitów
Ab 7 bitów
Bb 18 bitów
Ae 8 bitów
Be 18 bitów

Zgodnie z tabelką Ae używa jednego dodatkowego bitu do obsługi dodawania wykładników argumentów. Część B procesora używa dwóch dodatkowych bitów dla mantys (b-15,b-16) i tworzy bit b0, który nie jest zachowywany w pamięci. Dodatkowe bity na pozycjach -15 oraz -16 są dodane w celu zwiększenia dokładności obliczeń. Dlatego całkowita liczba bitów potrzebnych do przechowania wyniku operacji arytmetycznej w Bf wynosi 17 bitów. Rejestry Ba i Bb wymagają więcej dodatkowych bitów (ba2, ba1 i bb1), aby obsługiwać wyniki pośrednie niektórych algorytmów numerycznych. W szczególności algorytm obliczania pierwiastka kwadratowego może prowadzić do częściowych obliczeń w Ba wymagających trzech bitów na lewo od przecinka.

Podstawową operacją pierwotną ścieżki danych jest dodawanie lub odejmowanie wykładników lub mantys. Gdy są ustawione przekaźniki As lub Bs, do JAL zostanie pobrana negacja drugiego argumentu (Ab lub Bb). Stąd, jeśli przekaźnik As jest ustawiony na 1, JAL w części A odejmuje swoje argumenty, w przeciwnym razie są one dodawane. To samo zachodzi dla części B i przekaźnika Bs. Do utworzenia uzupełnienia do dwóch danej liczby potrzebna jest stała o wartości 1.

Załóżmy, iż mają być dodane do siebie dwie liczby o tym samym wykładniku. Pierwszy wykładnik umieszczany jest w Af, drugi trafia do Ab. Ponieważ są one równe, po tej stronie maszyny nie potrzeba wykonywać żadnej operacji. W części B mantysa pierwszej liczby zostaje umieszczona w Bf a mantysa drugiej w Bb. Pierwszy krok polega na załadowaniu Ba zawartością Bf przez ustawienie bufora Fa na 1. Następnie wykonywane jest dodawanie, przekaźnik Bt ustawiony zostaje na zero i tak wynik Ba+Bb przypisany zostaje do Be. Teraz zostaje ustawiony na 1 bufor Ff i wynik będzie umieszczony w Bf. Jak widzimy, informacja może się przemieszczać po różnych rejestrach i w ten sposób przepływać przez ścieżkę danych. Twórca komputera musi zapewnić poprawny ciąg aktywacji buforów, aby otrzymać pożądaną operację. Zrealizowano to w Z3 za pomocą techniki bardzo podobnej do mikroprogramowania.

Na początek:  podrozdziału   strony 

Moduł sterujący

Rysunek 4. ukazuje bardziej szczegółowo schemat modułu sterującego oraz paneli wejścia/wyjścia. Obwód Pb dekoduje kod instrukcji odczytanej z taśmy perforowanej. Jeśli jest to instrukcja związana z pamięcią, to obwód Pb ustawia magistralę adresową na wartość odczytaną z dolnych sześciu bitów kodu instrukcji. Moduł sterujący określa prawidłową sekwencję mikropoleceń dla każdej instrukcji. Każda operacja w zestawie instrukcji posiada specjalny obwód.

obrazek
Rys.4. Moduł sterujący oraz panele wejścia/wyjścia

Układ Z jest panelem przycisków używanych przy wprowadzaniu liczby dziesiętnej do maszyny. Tylko jeden przycisk w każdej z czterech kolumn może być aktywowany. Wykładnik ustawia się naciskając jeden z przycisków opisanych liczbami od -8 do 8 na panelu K. Wyświetlacz jest bardzo podobny do panelu wejściowego, tutaj jednak lampki podświetlają odpowiednie cyfry dziesiętne, wykładnik liczby (panel Q) oraz znak. Zwróćmy uwagę, iż na wyjściu znajduje się jeszcze jedna cyfra (którą może być tylko 1 albo 0).

Po ustawieniu liczby dziesiętnej szyna danych transmituje cyfry do rejestru Ba i uruchamiany jest skomplikowany ciąg operacji. Wejściowa liczba dziesiętna musi zostać przekształcona na liczbę binarną. Wymaga to łańcucha mnożeń, którego długość uzależniona jest od wielkości wykładnika. Jeśli wykładnik ma wartość zero, to całe przekształcenie wymaga 9 cykli, ale jeśli wynosi on 8, to operacja zużywa 9 + 4 x 8 = 41 cykli.

Na początek:  podrozdziału   strony 

Mikrosterowanie w Z3

Sercem modułu sterującego są jego mikrosekwensery. Zanim opiszemy sposób ich pracy, musimy przyjrzeć się bliżej sposobom wykonywania instrukcji w Z3. Rysunek 5. pokazuje główną ideę. Każdy cykl w Z3 podzielony został na pięć etapów. Etapy IV i V są używane do przemieszczania danych wewnątrz maszyny. Podczas etapów I, II i III wykonywane jest dodawanie/odejmowanie w części A i B komputera Z3. Nazywamy to fazą "wykonawczą" instrukcji. Typowa instrukcja pobiera swoje argumenty, wykonuje się i zapisuje z powrotem wynik. Zuse bardzo się troszczył o zaoszczędzenie czasu wykonania poprzez nałożenie na siebie etapu pobrania danych dla następnej instrukcji z etapem zapisu dla instrukcji bieżącej. Można traktować cykl wykonania tak, jakby składał się tylko z dwóch etapów, co pokazano na Rysunku 5, gdzie pierwsze dwa cykle ciągu instrukcji zostały opisane. Przyjęliśmy tę konwencję w tabelarycznych schematach algorytmów numerycznych, które omawiamy dalej.

obrazek
Rys.5. Nakładkowanie wykonania instrukcji w Z3

Mikrosekwencje są realizowane za pomocą specjalnych tarcz sterujących. Istnieje jedna tarcza dla algorytmu mnożenia, inna do sterowania dzieleniem i jeszcze inna dla instrukcji pierwiastka kwadratowego. Poruszająca się wskazówka na Rys.6. rozpoczyna ruch zgodnie ze wskazówkami zegara natychmiast po zdekodowaniu instrukcji przez moduł sterujący. W każdym cyklu wskazówka porusza się o jedną pozycję naprzód. Wskazówka przewodzi prąd elektryczny i uaktywnia obwody, z którymi się łączy. Na przykładzie pokazanym na Rys.6 poruszająca się wskazówka ustawi bufor Ea na 1 w pierwszym cyklu. Doprowadzi to do przeniesienia zawartości rejestru Af do Aa. W następnym cyklu uaktywnione będą bufory Ec oraz Fc. W ten sposób wyniki danej operacji w częściach A i B są wpisywane z powrotem do rejestrów Aa oraz Ba. Jak można łatwo zauważyć, takie koła sterujące udostępniają wygodną platformę do modyfikacji ścisłego ciągu zdarzeń podczas wykonywania operacji. Odpowiadają one mikrosekwenserom używanym dzisiaj w nowoczesnych mikroprocesorach. Przestanę je nazywać formą mikroprogramowania, ponieważ w tym przypadku mikrosekwencja została zrealizowana sprzętowo, lecz jest oczywiste, iż mikrosekwencje oraz mikroprogramowanie są ze sobą blisko spokrewnione.

Intensywne zastosowanie mikrosekwencji pozwoliło Konradowi Zuse uprościć Z3. Po wykonaniu podstawowych obwodów pozostawało jedynie wyregulowanie sterowania aż do osiągnięcia optymalnego ciągu zdarzeń. Inżynier tworzący "mikroprogram" musi pamiętać o dużej liczbie szczegółów, w przeciwnym razie zwarcia mogą zniszczyć sprzęt. Z1, który jako konstrukcja mechaniczna był w tym względzie bardziej podatny na uszkodzenia od Z3. Nawet po ukończeniu budowy istniały ciągi instrukcji, których programista powinien był unikać, aby nie uszkodzić maszyny. W 1994 roku jeden z tych ciągów został nieumyślnie wypróbowany w Berlińskim Muzeum Techniki i Transportu doprowadzając do lekkiego uszkodzenia zrekonstruowanego Z1.

obrazek
Rys.6. Koła sterujące dla mikrosekwencji
Na początek:  podrozdziału   strony 

Sumatory

Istotną cechą Z3 stanowi projekt sumatorów, które wykonują dodawania i odejmowania za pomocą metody przeniesień równoczesnych (ang. carry look-ahead). Jeśli dodawanie binarne jest implementowane bezpośrednio, to przeniesienia muszą przechodzić z jednej pozycji bitu na następną. W przypadku mantysy potrzebowalibyśmy 16 cykli tylko na transmitowanie bitów przeniesień.

Sumatory zaprojektowane przez Konrada Zuse są dużo szybsze - wykonują one dodawanie lub odejmowanie w etapach I, II i III pojedynczego cyklu. Odejmowanie wykonywane jest przez negację drugiego argumentu i dodanie dodatkowego 1 na najniższej pozycji bitów.

obrazek
Rys.7. Układ przeniesień równoczesnych zastosowany w Z3

Rozważmy dodawanie rejestrów Ba i Bf. Najpierw obliczany jest wynik częściowy, który otrzymujemy wykonując bitową funkcję logiczną XOR  na obu rejestrach, tj.:

bci = bai XOR bbi

Do i-tego  bitu rejestru Bb będziemy się odwoływać jako bbi lub Bb[i] w zależności od tego, która z tych form będzie w danej chwili bardziej wygodna. Taki sam zapis stosować będziemy dla innych rejestrów. Drugim częściowym wynikiem jest wykonanie bitowej operacji logicznej AND na obu rejestrach, tj.:

bci = bai AND bbi

Ta ostatnia operacja znajduje pozycję bitu, gdzie wystąpi przeniesienie. Pośredni wynik Bd obliczany jest przy użyciu obwodu pokazanego na rysunku 7. Danymi wejściowymi dla tego obwodu są bity bh1,...,bh-16, obliczone poprzednio. Gdy dany bit przyjmuje wartość 1, to przez odpowiedni przewód przepływa prąd, w przeciwnym wypadku przewód ten jest odłączony od źródła prądu. Pozycja spoczynkowa przekaźników bc1,...,bc-16 jest pokazana na rysunku. Jeśli bit bci jest równy 1, to odpowiedni przekaźnik zostaje zamknięty. W efekcie otrzymujemy:

bei = bdi XOR bci

Zwróćmy uwagę, iż zastosowanie przekaźników upraszcza propagację przeniesień do ostatniej, wymaganej pozycji bitu. Ponieważ wszystkie przekaźniki są włączane jednocześnie, przeniesienie nie opóźnia się przy przechodzeniu z jednej pozycji na drugą.

Na początek:  podrozdziału   strony 

Architektura Pierwszych Maszyn Liczących Konrada Zuse  została umieszczona w serwisie edukacyjnym nauczycieli I-LO w Tarnowie za pisemną zgodą autora:
prof. dr Raula Rojasa
Z języka angielskiego tłumaczenie wykonał:
mgr Jerzy Wałaszek

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 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.