Realizacja pamięci operacyjnej K-202 i Mery-400
Andrzej Ziemkiewicz
Ostatnio można było zobaczyć w Internecie wiele dyskusji dotyczących komputera K-202, a w szczególności realizacji jego pamięci operacyjnej. Różni ludzie stawiali pytanie czy rzeczywiście pamięć mogła mieć 8MB i jak była zorganizowana.
Znalazłem nawet blog, w którym autor twierdził, że w ogóle to jest jakaś machlojka i oszustwo, bo gdyby nawet sprasować te wszystkie kostki pamięci (układy scalone) za pomocą walca drogowego, to nie mogłyby się zmieścić w obudowie komputera. Pisał też, że on, poszukiwacz prawdy, zaraz tu przeprowadzi dochodzenie, wykryje prawdę i odsłoni cały szwindel.
Wypowiedź taka świadczyła głównie o braku wiedzy i wyobraźni autora. O braku wiedzy, bo nie wiedział, że w tym czasie (rok 1970) kostki pamięci jeszcze nie były dostępne i pamięć operacyjna była budowana na rdzeniach ferrytowych. A o braku wyobraźni, ponieważ uważał że cała pamięć musi mieścić się w obudowie procesora, a nie potrafił sobie wyobrazić, że można umieścić pamięć w zewnętrznych modułach, dołączonych do procesora kablem.
Całe to dochodzenie skończyło się, gdy ktoś mu odpisał, że ma jeszcze w swoim laboratorium zachowany egzemplarz maszyny K-202 z kilkoma dodatkowymi blokami pamięci i zapraszał do obejrzenia. W tym momencie autor blogu zamilkł i okazało się, że nie chodziło wcale o prawdę historyczną, tylko o sensację. A jak nie ma sensacji, to nie ma o czym mówić.
Ponieważ wzbudza to ciągle zainteresowanie, więc wydaje się celowe napisać jak się rzecz miała.
Realizacja fizyczna pamięci K-202
Pamięć była zbudowana na rdzeniach ferrytowych o średnicy 0.5 mm, co dawało czas cyklu 1 µsec. Dla porównania, pamięci budowane do tego czasu, np. w maszynach ZAM, miały rdzenie o średnicy 2 mm i czasie cyklu 10 µsec, tak więc postęp był tu bardzo znaczny.
Gotowe ramki z rdzeniami były sprowadzane z firmy Data Product (Irlandia) i montowane na płytkach drukowanych. Zespołem realizującym pamięć kierował mgr inż. Jerzy Cewe. Aby uzyskać więcej szczegółów należałoby go odnaleźć (może w Internecie).
Adresacja pamięci K-202
Pamięć była zorganizowana w bloki, każdy o maksymalnej pojemności 64K słów 16-bitowych. Adres miejsca pamięci był konkatenacją numeru bloku i adresu wewnątrz bloku. Numer bloku był ustalany dla każdego fizycznego bloku w momencie montażu maszyny dla klienta (za pomocą zworek zakładanych na styki w płytce drukowanej). Adresy wewnątrz bloku były ciągłe, od 0 do maksymalnego adresu w bloku. Adresacja pamięci była więc w zasadzie fizyczna. Każdy blok pamięci był dołączany do szyny pamięciowej komputera za pomocą dwóch elementów: jednego odbiornika i jednego nadajnika.
Tak więc pamięć była segmentowana (a nie stronicowana), ponieważ używana przez nas nazwa 'blok' odpowiada segmentowi w obecnej terminologii. Segmentacja ta nie była jednak dynamiczna, tylko statyczna, ustalona przez montaż fizycznego bloku.
Nie było to rozwiązanie odpowiadające szczytowym osiągnięciom teoretycznym, ale było przez nas traktowane jako tymczasowa pierwsza wersja.
Trzeba tu pamiętać, że w projektowaniu i konstrukcji K-202 panował pewien pośpiech. Jako polsko-angielskie przedsięwzięcie maszyna musiała być konkurencyjna na rynkach zachodnich. Konieczne było przedstawienie jej na najbliższej wystawie Olympia w Londynie, inaczej inne firmy zajęłyby rynek. Różne udoskonalenia odkładane były do następnej wersji.
Prace nad drugą wersją K-202, zawierającą dynamiczną segmentację i stronicowanie pamięci oraz inne ulepszenia były już rozpoczęte, ale przedsięwzięcie zostało zatrzymane.
Dyskusja problemów
Podstawowe pytanie wszystkich dyskutantów było czy rzeczywiście maszyna mogła mieć 8MB pamięci. Nie wiem dlaczego wszyscy oni tak się uwzięli na ten parametr. Jest to przecież tylko wielkość przestrzeni adresowej, wynikająca z ilości bitów adresu, czyli teoretyczne maksimum, którego pamięć nie może przekroczyć ze względów architektonicznych. Istnieje dużo innych czynników bardziej ograniczających pojemność pamięci, z których kilka wymienię poniżej.
- Wydajność nadajników
Każdy moduł dołączony był do szyny pamięciowej (procesor, kanał pamięciowy lub blok pamięci) za pomocą jednego odbiornika (pobierającego 1 umowną jednostkę prądową) oraz jednego nadajnika (dostarczającego 30 umownych jednostek prądowych). Wynika stąd, że nie można było mieć więcej niż 30 dołączonych modułów. Oczywiście że gdyby zaszła potrzeba, można byłoby zdwoić nadajniki łącząc je kolektorami i uzyskać 60 jednostek prądowych na wyjściu, ale to byłaby już inna realizacja maszyny, jakieś K-203. Zresztą nie było takiego zamówienia. - Długość szyny pamięciowej
Moduły K-202 były montowane w obudowach o standardowej szerokości 19”. Zatem każdy dołączony moduł wydłużał szynę o ok. 0.5 metra. Przy wielu dołączonych modułach szyna miała więc wiele metrów. Przy szybkości używanych sygnałów była to już linia długa, gdzie dawały się zauważyć zjawiska mikrofalowe, takie jak odbicia sygnału od końca linii, dopasowanie falowe (lub niedopasowanie), przesłuchy itp. Można było poprawić nieco sytuacje montując moduły nie jeden obok drugiego, ale jeden nad drugim w 19-calowym stojaku (wysokość modułu była o połowę mniejsza niż szerokość), ale nie zmieniało to w zasadniczy sposób istoty problemu. - Przesłuchy między-bitowe
W wiązce przewodów biegnących obok siebie na dużej długości sygnał w jednym przewodzie indukuje zakłócenia w sąsiednich przewodach. Zjawisko to daje się odczuć tym bardziej im dłuższa linia. Sygnały w szynie były przesyłane parami skręconymi, jeden przewód sygnałowy i jeden przewód masy. Przewód masy oprócz tego że dostarczał poziomu odniesienia, pełnił też rolę ekranu. Badania laboratoryjne pozwoliły szybko opracować instrukcję dla montażystów, określającą minimalną ilość skrętów na metr bieżący kabla, tak aby to ekranowanie było skuteczne. Przy bardzo dużej ilości bloków (a więc długiej szynie) prawdopodobnie trzeba byłoby zastąpić pary skręcone przez kabelki koncentryczne, ale byłoby to dużo droższe i tu również nie było takich zamówień. - Problem pojemności elektrycznej
Każdy odbiornik i nadajnik posiadał pewną pojemność elektryczną. Wraz z opornością umieszczaną na końcu linii tworzyło to układ RC, w którym odpowiedzią na wysłany sygnał (teoretycznie skok jednostkowy) jest przebieg eksponencjalny, którego narastające zbocze jest tym bardziej położone im większa pojemność. Zjawisko to nie martwiło nas zbytnio, dzięki temu że w maszynie wszędzie było sterowanie asynchroniczne (żadnego centralnego zegara). Wystarczało odpowiednio wydłużyć czas oczekiwania na ustalenie się sygnałów na szynie. Jedyną konsekwencją dużej ilości bloków było więc niewielkie zmniejszenie szybkości działania. - Problem zasilania
Tu sprawa wydaje się prosta. Maszyna posiada zasilacz który dostarcza do układów scalonych napięcia o standardowej wartości 5V i już. Problemy pojawiają się jednak w dynamicznym działaniu. Wyobraźmy sobie początek cyklu pracy pamięci dla zapisu. Procesor wysyła na szynę pamięciową adres i dane do zapisania, w sumie kilkadziesiąt bitów, każdy z nich mnożony przez 30 jednostek prądowych które nadajniki powinny móc wysłać. Oznacza to, że wymagamy od zasilacza dużego chwilowego 'szarpnięcia prądowego' co wcale nie jest tym samym co wartość średnia prądu, jaki może on dostarczyć. Zasadnicze znaczenie ma tu oporność wewnętrzna źródła prądowego, do której można zaliczyć także oporność ścieżek zasilających na płytkach drukowanych, oporność styków w łączówkach i oporność wewnętrzną kondensatorów elektrolitycznych w filtrze wyjściowym zasilacza. Z tym problemem poradziliśmy sobie przez odpowiednie zaprojektowanie ścieżek zasilających tak aby były możliwie jak najszersze, przez zdublowanie styków zasilających na łączówkach i przez dołączenie (równolegle do kondensatorów elektrolitycznych) dodatkowych kondensatorów o mniejszej pojemności, ale za to o wysokiej jakości i pomijalnej oporności wewnętrznej.
Tak więc na pytanie czy maszyna K-202 mogła mieć 8MB pamięci odpowiedź jest: procesor komputera potrafił zaadresować 8MB, ale z wymienionych wyżej względów technicznych maszyna nie mogła mieć fizycznej pamięci o tej pojemności. Ale też wcale nie musiała. Kilka bloków było zazwyczaj wystarczające. Nie słyszałem o żadnej konfiguracji, która miałaby więcej niż 4 bloki.
Pamięć operacyjna Mery-400
Komputer Mera-400 był zaprojektowany na przełomie lat 1973/74. W pierwszej partii maszyn użyte zostały ramki pamięci ferrytowej pozostałe po K-202. Kiedy ten zapas się wyczerpał, używane były inne pamięci (m.in. z Elwro), zanim nie pojawiły się układy scalone RAM. Architektura pamięci była natomiast zupełnie inna. W przeciwieństwie do K-202, Mera-400 miała już dynamiczną segmentację i stronicowanie, ale to należy już do innego tematu, który poruszam gdzie indziej, a który dotyczy architektury.