Jak powstawało K-202: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
(Utworzył nową stronę „'''''Andrzej Ziemkiewicz''''' = Przedsięwzięcie = K-202 było przedsięwzięciem szczególnym jak na warunki polskie w tamtych czasach. Dzisiaj powiedzielibyśmy...”)
 
 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 5: Linia 5:
K-202 było przedsięwzięciem szczególnym jak na warunki polskie w tamtych czasach. Dzisiaj powiedzielibyśmy joint-venture, a wtedy była to umowa o współpracę zawarta pomiędzy Zjednoczeniem Przemysłu Maszynowego MERA, a dokładniej jego Biurem Handlu Zagranicznego METRONEX oraz  dwoma firmami angielskimi:  firmą handlową Data Loop i firmą elektroniczną MBMetals.
K-202 było przedsięwzięciem szczególnym jak na warunki polskie w tamtych czasach. Dzisiaj powiedzielibyśmy joint-venture, a wtedy była to umowa o współpracę zawarta pomiędzy Zjednoczeniem Przemysłu Maszynowego MERA, a dokładniej jego Biurem Handlu Zagranicznego METRONEX oraz  dwoma firmami angielskimi:  firmą handlową Data Loop i firmą elektroniczną MBMetals.


Inicjatorem był inż. Jacek Karpiński, któremu udało się namówić na to ówczesnego Ministra Przemysłu Maszynowego. Mówił, że chce zbudować minikomputer o nazwie K-202.
Inicjatorem był inż. Jacek Karpiński, któremu udało się namówić na to ówczesnego Ministra Przemysłu Maszynowego. Mówił, że chce zbudować minikomputer o nazwie K-202.


Sam pomysł takiej umowy wynikał z prostej obserwacji, że na Zachodzie nie brak ani pieniędzy, ani elementów, natomiast w Polsce brak pieniędzy i elementów, za to nie brak dobrze wyszkolonych inżynierów. Gdyby zatem udało się w Polsce stworzyć jakąś wysepkę czy enklawę kapitalizmu, to łącząc te dwie rzeczy można by osiągnąć sukces. Dziwne, że nikt wcześniej na to nie wpadł. Później Jacek Karpiński powiedział w wywiadzie jakiemuś dziennikarzowi, że jemu ten pomysł podsunął Stefan Bratkowski. No więc chwała im obu! Jak się później okazało, elementy dostarczane dla skonstruowania jednego egzemplarza maszyny kosztowały 1200-1500 dolarów, a zmontowana maszyna była sprzedawana za 5000 dolarów, czyli jako business-plan było to bardzo dochodowe przedsięwzięcie.
Sam pomysł takiej umowy wynikał z prostej obserwacji, że na Zachodzie nie brak ani pieniędzy, ani elementów, natomiast w Polsce brak pieniędzy i elementów, za to nie brak dobrze wyszkolonych inżynierów. Gdyby zatem udało się w Polsce stworzyć jakąś wysepkę czy enklawę kapitalizmu, to łącząc te dwie rzeczy można by osiągnąć sukces. Dziwne, że nikt wcześniej na to nie wpadł. Później Jacek Karpiński powiedział w wywiadzie jakiemuś dziennikarzowi, że jemu ten pomysł podsunął Stefan Bratkowski. No więc chwała im obu! Jak się później okazało, elementy dostarczane dla skonstruowania jednego egzemplarza maszyny kosztowały 1200-1500 dolarów, a zmontowana maszyna była sprzedawana za 5000 dolarów, czyli jako business-plan było to bardzo dochodowe przedsięwzięcie.


Przy Zakładach Produkcji Urządzeń Pomiarowych ERA we Włochach pod Warszawą utworzony został nowy Zakład Budowy Minikomputerów, Jacek Karpiński został mianowany dyrektorem i zaczął organizować zespół konstruktorów.
Przy Zakładach Produkcji Urządzeń Pomiarowych ERA we Włochach pod Warszawą utworzony został nowy Zakład Budowy Minikomputerów, Jacek Karpiński został mianowany dyrektorem i zaczął organizować zespół konstruktorów.
Linia 13: Linia 13:
= Założenia strategiczne =
= Założenia strategiczne =


Pierwszym założeniem strategicznym Jacka Karpińskiego było, że ma to być minikomputer. Było to jednak mylące i wymaga wyjaśnienia. W tym czasie minikomputery były to 4- i 8-bitowe maleństwa. Nie to miał Karpiński na myśli. Zespołowi projektantów (którzy przecież musieli wiedzieć, co mają robić) powiedział, o co chodzi i podał swoją definicję minikomputera: "Minikomputer jest to komputer, który kosztuje mniej niż 10 tys. dolarów". Tak więc nie chodziło o 8-bitowe maleństwo, tylko o porządną maszynę, ale tanią.
Pierwszym założeniem strategicznym Jacka Karpińskiego było, że ma to być minikomputer. Było to jednak mylące i wymaga wyjaśnienia. W tym czasie minikomputery były to 4- i 8-bitowe maleństwa. Nie to miał Karpiński na myśli. Zespołowi projektantów (którzy przecież musieli wiedzieć, co mają robić) powiedział, o co chodzi i podał swoją definicję minikomputera: "Minikomputer jest to komputer, który kosztuje mniej niż 10 tys. dolarów". Tak więc nie chodziło o 8-bitowe maleństwo, tylko o porządną maszynę, ale tanią.


Dlaczego więc Jacek używał terminu minikomputer ? Nie wiem, może to był taki wybieg, aby nie nasuwać podejrzenia, że może to być konkurencja dla innych zakładów i że władze łatwiej to przełkną. W każdym razie termin jest nieadekwatny i ja bym wolał, żeby tego przedrostka 'mini' nie używać. Przecież rówieśnika K-202, jakim było PDP-11 nikt nie nazywał minikomputerem, chociaż jego możliwości architektoniczne były dużo mniejsze niż K-202.
Dlaczego więc Jacek używał terminu minikomputer? Nie wiem, może to był taki wybieg, aby nie nasuwać podejrzenia, że może to być konkurencja dla innych zakładów i że władze łatwiej to przełkną. W każdym razie termin jest nieadekwatny i ja bym wolał, żeby tego przedrostka "mini" nie używać. Przecież rówieśnika K-202, jakim było PDP-11 nikt nie nazywał minikomputerem, chociaż jego możliwości architektoniczne były dużo mniejsze niż K-202.


Drugie założenie strategiczne postawił Jacek zaraz przy pierwszym spotkaniu. Powiedział "Słuchajcie, robimy tę maszynę w kooperacji z angielskimi firmami i musi ona dać się sprzedawać na zachodzie. Do tego jest konieczne, aby wystawić ją na ekspozycji Olympia w Londynie w przyszłym roku (czyli za 8 miesięcy). Jeśli nie zdążymy, to rok później będzie już za późno, bo inni zajmą rynek". Miał oczywiście rację.
Drugie założenie strategiczne postawił Jacek zaraz przy pierwszym spotkaniu. Powiedział "Słuchajcie, robimy tę maszynę w kooperacji z angielskimi firmami i musi ona dać się sprzedawać na zachodzie. Do tego jest konieczne, aby wystawić ją na ekspozycji Olympia w Londynie w przyszłym roku (czyli za 8 miesięcy). Jeśli nie zdążymy, to rok później będzie już za późno, bo inni zajmą rynek". Miał oczywiście rację.


Oba te założenia miały duże konsekwencje. Jeśli maszyna miała być tania i zrobiona w 8 miesięcy, to znaczyło, że trzeba ją robić szybko i prosto, a wszystkie rozwiązania skomplikowane, wymagające zbyt dużo czasu lub zbyt drogie musiały być odłożone do innej okazji. Zresztą wszyscy traktowaliśmy ten projekt jako pierwszą wersję, po której zaraz zrobimy drugą, poprawioną i uzupełnioną. Tylko że ta druga wersja (Mera-400) i trzecia wersja (MX-16) były zrobione już bez udziału Jacka.
Oba te założenia miały duże konsekwencje. Jeśli maszyna miała być tania i zrobiona w 8 miesięcy, to znaczyło, że trzeba ją robić szybko i prosto, a wszystkie rozwiązania skomplikowane, wymagające zbyt dużo czasu lub zbyt drogie musiały być odłożone do innej okazji. Zresztą wszyscy traktowaliśmy ten projekt jako pierwszą wersję, po której zaraz zrobimy drugą, poprawioną i uzupełnioną. Tylko że ta druga wersja (Mera-400) i trzecia wersja (MX-16) były zrobione już bez udziału Jacka.
Linia 25: Linia 25:
== Modularność ==
== Modularność ==


Założeniem było, że nie będzie różnych modeli maszyny: mały, średni, duży itd. Jeżeli użytkownik będzie chciał mieć większą konfigurację, to zostanie ona złożona z większej ilości standardowych modułów, ale moduły te będą zawsze te same niezależnie od wielkości konfiguracji.
Założeniem było, że nie będzie różnych modeli maszyny: mały, średni, duży itd. Jeżeli użytkownik będzie chciał mieć większą konfigurację, to zostanie ona złożona z większej ilości standardowych modułów, ale moduły te będą zawsze te same niezależnie od wielkości konfiguracji.


== Standardowe moduły ==
== Standardowe moduły ==
Linia 40: Linia 40:


Były przewidziane dwa standardowe interface'y:
Były przewidziane dwa standardowe interface'y:
Interface pamięciowy: standardowa szyna, poprzez którą są łączone procesory, moduły pamięci operacyjnej oraz kanały pamięciowe, mogące prowadzić samodzielnie transmisje blokowe między pamięcią operacyjną a pamięciami masowymi;
* Interface pamięciowy: standardowa szyna, poprzez którą są łączone procesory, moduły pamięci operacyjnej oraz kanały pamięciowe, mogące prowadzić samodzielnie transmisje blokowe między pamięcią operacyjną a pamięciami masowymi;
Interface znakowy: standardowa szyna, poprzez którą urządzenia znakowe są dołączane do procesora. Transmisja prowadzona jest przez procesor, znak po znaku.
* Interface znakowy: standardowa szyna, poprzez którą urządzenia znakowe są dołączane do procesora. Transmisja prowadzona jest przez procesor, znak po znaku.


= Wstępna koncepcja =
= Wstępna koncepcja =


Wstępna koncepcja Jacka Karpińskiego zawierała schemat blokowy systemu oraz wstępną listę rozkazów. Schemat blokowy przedstawiony jest poniżej.
Wstępna koncepcja Jacka Karpińskiego zawierała schemat blokowy systemu oraz wstępną listę rozkazów. Schemat blokowy przedstawiony jest poniżej.


[[File:Az-koncepcja-k202.png|center|frame|Wstępna koncepcja K-202 (teoretyczna konfiguracja max)]]
[[File:Az-koncepcja-k202.png|center|frame|Wstępna koncepcja K-202 (teoretyczna konfiguracja max)]]
Linia 51: Linia 51:
Koncepcja przedstawiona na rysunku powyżej wygląda bardzo ładnie i elegancko. Ale od tej koncepcji do projektu była jeszcze daleka droga. Należało odpowiedzieć na szereg pytań: Szyna pamięciowa, do której są dołączone procesor, moduły pamięci i kanały pamięciowe, na jakiej zasadzie ma działać? Ma ona być synchroniczna czy asynchroniczna?  Jeśli synchroniczna, to synchronizowana jakim zegarem? Jeśli asynchroniczna, to w jaki sposób? Moduły pamięci: jak ma być zrobiona adresacja w modułach i w całej pamięci? Jak ma być robiona wirtualizacja pamięci? Dostęp do szyny: jak ma być zrobione rozwiązywanie konfliktów w dostępie, gdy dwa lub więcej modułów próbuje dostać się jednocześnie do szyny?
Koncepcja przedstawiona na rysunku powyżej wygląda bardzo ładnie i elegancko. Ale od tej koncepcji do projektu była jeszcze daleka droga. Należało odpowiedzieć na szereg pytań: Szyna pamięciowa, do której są dołączone procesor, moduły pamięci i kanały pamięciowe, na jakiej zasadzie ma działać? Ma ona być synchroniczna czy asynchroniczna?  Jeśli synchroniczna, to synchronizowana jakim zegarem? Jeśli asynchroniczna, to w jaki sposób? Moduły pamięci: jak ma być zrobiona adresacja w modułach i w całej pamięci? Jak ma być robiona wirtualizacja pamięci? Dostęp do szyny: jak ma być zrobione rozwiązywanie konfliktów w dostępie, gdy dwa lub więcej modułów próbuje dostać się jednocześnie do szyny?


Te i inne problemy były rozwiązywane w trybie seminaryjnym.  Początkowo każdego dnia rano Jacek Karpiński zwoływał zebranie robocze i podawał temat do dyskusji. Na ogół też (ale nie zawsze) proponował rozwiązanie i zaczynała się 'burza mózgów'. Każdy mógł się wypowiedzieć, chociaż tak naprawdę to Ela i ja mieliśmy najwięcej do powiedzenia, jako że mieliśmy już za sobą udział w projektowaniu 5 komputerów, więc mieliśmy największe doświadczenie. I nie zawsze też było przyjęte rozwiązanie proponowane przez Jacka.
Te i inne problemy były rozwiązywane w trybie seminaryjnym.  Początkowo każdego dnia rano Jacek Karpiński zwoływał zebranie robocze i podawał temat do dyskusji. Na ogół też (ale nie zawsze) proponował rozwiązanie i zaczynała się "burza mózgów". Każdy mógł się wypowiedzieć, chociaż tak naprawdę to Ela i ja mieliśmy najwięcej do powiedzenia, jako że mieliśmy już za sobą udział w projektowaniu 5 komputerów, więc mieliśmy największe doświadczenie. I nie zawsze też było przyjęte rozwiązanie proponowane przez Jacka.


Po iluś takich zebraniach wszystkie decyzje zostały podjęte i każdy zespół skupił się na projektowaniu swojej części.
Po iluś takich zebraniach wszystkie decyzje zostały podjęte i każdy zespół skupił się na projektowaniu swojej części.


Tak więc podsumowując, Jacek był autorem koncepcji, przedstawionej na schemacie powyżej. Nawiasem mówiąc, był to pierwszy i jedyny schemat, który wyszedł spod jego ręki.  Rozwinięcie koncepcji było dziełem zbiorowym, dokonanym pod jego kierunkiem, a projekt poszczególnych modułów wykonywały poszczególne podzespoły. Do tego Jacek już w zasadzie nie mieszał się i zostawiał wolną rękę projektantom. Miał zaufanie do zespołu.
Tak więc podsumowując, Jacek był autorem koncepcji, przedstawionej na schemacie powyżej. Nawiasem mówiąc, był to pierwszy i jedyny schemat, który wyszedł spod jego ręki.  Rozwinięcie koncepcji było dziełem zbiorowym, dokonanym pod jego kierunkiem, a projekt poszczególnych modułów wykonywały poszczególne podzespoły. Do tego Jacek już w zasadzie nie mieszał się i zostawiał wolną rękę projektantom. Miał zaufanie do zespołu.


== Pamięć ==
== Pamięć ==


Organizacja pamięci była tematem jednego z pierwszych zebrań roboczych. Ponieważ tu Jacek miał pomysł zupełnie unikalny, więc dla jasności dobrze będzie pokazać, jak to było robione we wszystkich innych maszynach:
Organizacja pamięci była tematem jednego z pierwszych zebrań roboczych. Ponieważ tu Jacek miał pomysł zupełnie unikalny, więc dla jasności dobrze będzie pokazać, jak to było robione we wszystkich innych maszynach:


[[File:Az-wirt-klasyczna.png|center|frame|Klasyczna metoda wirtualizacji]]
[[File:Az-wirt-klasyczna.png|center|frame|Klasyczna metoda wirtualizacji]]
Linia 65: Linia 65:
Pamięć fizyczna maszyny jest jedno-wymiarowa i ciągła, reprezentowana na rysunku przez pionową oś z lewej strony, adresowana od 0 do maksymalnego adresu.
Pamięć fizyczna maszyny jest jedno-wymiarowa i ciągła, reprezentowana na rysunku przez pionową oś z lewej strony, adresowana od 0 do maksymalnego adresu.


Każdy proces, utworzony i uruchomiony przez system operacyjny, musi mieć pamięć. Oczywiście niedopuszczalne jest, aby każdy proces mógł sobie buszować po pamięci fizycznej, tak jak chce, bo mógłby coś popsuć innemu procesowi.   
Każdy proces, utworzony i uruchomiony przez system operacyjny, musi mieć pamięć. Oczywiście niedopuszczalne jest, aby każdy proces mógł sobie buszować po pamięci fizycznej, tak jak chce, bo mógłby coś popsuć innemu procesowi.   


Zatem każdy proces działa na segmencie pamięci wirtualnej, to jest na takiej pamięci, co do której proces sobie wyobraża, że ją ma, a która naprawdę nie istnieje. Jedyna istniejąca fizycznie pamięć to ta na pionowej osi z lewej strony. Każde odwołanie procesu do jego pamięci wirtualnej podlega translacji adresu, która przekształca adres wirtualny na adres pamięci fizycznej.
Zatem każdy proces działa na segmencie pamięci wirtualnej, to jest na takiej pamięci, co do której proces sobie wyobraża, że ją ma, a która naprawdę nie istnieje. Jedyna istniejąca fizycznie pamięć to ta na pionowej osi z lewej strony. Każde odwołanie procesu do jego pamięci wirtualnej podlega translacji adresu, która przekształca adres wirtualny na adres pamięci fizycznej.


Rozwiązanie takie posiada zarówno wady jak zalety. Zacznijmy od zalet:
Rozwiązanie takie posiada zarówno wady jak zalety. Zacznijmy od zalet:
Linia 94: Linia 94:
Toteż koncepcja ta od razu nam się spodobała, mimo że nie było to szczytowe osiągnięcie architektoniczne. Nie było żadnego stronicowania, a segmentacja nie była dynamiczna, bo segmenty (bloki) były stałe. No ale to przecież można będzie rozwinąć w następnej wersji, mówiliśmy sobie.
Toteż koncepcja ta od razu nam się spodobała, mimo że nie było to szczytowe osiągnięcie architektoniczne. Nie było żadnego stronicowania, a segmentacja nie była dynamiczna, bo segmenty (bloki) były stałe. No ale to przecież można będzie rozwinąć w następnej wersji, mówiliśmy sobie.


Na pamięć tę należy patrzeć jako na dwu-wymiarową: jeden wymiar to numer bloku, a drugi to adres wewnątrz bloku.
Na pamięć tę należy patrzeć jako na dwuwymiarową: jeden wymiar to numer bloku, a drugi to adres wewnątrz bloku.


Od razu tez pomyśleliśmy, że można to jeszcze ulepszyć. Jeżeli jest już pamięć dwu-wymiarowa, to zróbmy z niej trój-wymiarową. Inaczej mówiąc, zaproponowaliśmy dopisanie jeszcze jednego lub dwóch bitów do adresu i zapisywanie w nich numeru procesora. W ten sposób można będzie tworzyć konfiguracje wieloprocesorowe. Do koncepcji systemu modularnego dobrze to pasuje, bo jeśli użytkownik zechce zwiększyć moc obliczeniową systemu, to może dołączyć dodatkowy procesor. Jackowi ten pomysł się spodobał i w ten sposób powstała finalna koncepcja maszyny, pokazana na następnym rysunku:
Od razu tez pomyśleliśmy, że można to jeszcze ulepszyć. Jeżeli jest już pamięć dwuwymiarowa, to zróbmy z niej trójwymiarową. Inaczej mówiąc, zaproponowaliśmy dopisanie jeszcze jednego lub dwóch bitów do adresu i zapisywanie w nich numeru procesora. W ten sposób można będzie tworzyć konfiguracje wieloprocesorowe. Do koncepcji systemu modularnego dobrze to pasuje, bo jeśli użytkownik zechce zwiększyć moc obliczeniową systemu, to może dołączyć dodatkowy procesor. Jackowi ten pomysł się spodobał i w ten sposób powstała finalna koncepcja maszyny, pokazana na następnym rysunku:


[[File:Az-wirt-k202-finalna.png|center|frame|Finalna koncepcja pamięci K-202]]
[[File:Az-wirt-k202-finalna.png|center|frame|Finalna koncepcja pamięci K-202]]
Linia 115: Linia 115:


Przewidziany był również przypadek, gdy adresat polecenia nie mógł lub nie chciał go przyjąć (np. kanał pamięciowy prowadził właśnie transmisję i nie mógł przyjąć nowego polecenia).  Wtedy zamiast wysłać sygnał OK, wysyłał sygnał NOK (Not-OK), który kończył natychmiast operację i powodował w programie przejście do innej gałęzi.
Przewidziany był również przypadek, gdy adresat polecenia nie mógł lub nie chciał go przyjąć (np. kanał pamięciowy prowadził właśnie transmisję i nie mógł przyjąć nowego polecenia).  Wtedy zamiast wysłać sygnał OK, wysyłał sygnał NOK (Not-OK), który kończył natychmiast operację i powodował w programie przejście do innej gałęzi.
Spostrzegliśmy też, że jeśli zdarzy się odwołanie do nieistniejącego adresu, to żaden adresat nie przyśle sygnału OK ani NOK i sterowanie utknie. Dodaliśmy więc jeszcze time-out, nieco dłuższy niż czas reakcji najwolniejszego modułu w systemie. Po jego przekroczeniu operacja była kończona natychmiast i procesor otrzymywał sygnał przerwania typu 'Nieistniejący adres'.
Spostrzegliśmy też, że jeśli zdarzy się odwołanie do nieistniejącego adresu, to żaden adresat nie przyśle sygnału OK ani NOK i sterowanie utknie. Dodaliśmy więc jeszcze time-out, nieco dłuższy niż czas reakcji najwolniejszego modułu w systemie. Po jego przekroczeniu operacja była kończona natychmiast i procesor otrzymywał sygnał przerwania typu "Nieistniejący adres".


Ten system działał doskonale i umożliwiał dołączanie elementów o rozmaitych szybkościach działania. Każdy moduł pracował tak szybko, jak tylko potrafił, bez tracenia czasu na oczekiwanie sygnału zegarowego.
Ten system działał doskonale i umożliwiał dołączanie elementów o rozmaitych szybkościach działania. Każdy moduł pracował tak szybko, jak tylko potrafił, bez tracenia czasu na oczekiwanie sygnału zegarowego.
Linia 123: Linia 123:
Tematem jeszcze innego zebrania był problem dostępu. Co zrobić, gdy dwóch lub więcej klientów chce jednocześnie dostać się do szyny pamięciowej?
Tematem jeszcze innego zebrania był problem dostępu. Co zrobić, gdy dwóch lub więcej klientów chce jednocześnie dostać się do szyny pamięciowej?


Jacek proponował, aby każdy klient wysyłał adres na szynę adresową, a następnie sprawdzał, czy na szynie jest ten właśnie adres. Jeżeli nie jest jedynym kandydatem, to na szynie będzie suma logiczna adresów, różna od każdego z nich. Wtedy każdy klient ma wycofać się i za jakiś czas ma spróbować ponownie. Jest to sposób podobny do tego, jaki używa się w sieci Ethernet.
Jacek proponował, aby każdy klient wysyłał adres na szynę adresową, a następnie sprawdzał, czy na szynie jest ten właśnie adres. Jeżeli nie jest jedynym kandydatem, to na szynie będzie suma logiczna adresów, różna od każdego z nich. Wtedy każdy klient ma wycofać się i za jakiś czas ma spróbować ponownie. Jest to sposób podobny do tego, jaki używa się w sieci Ethernet.


Nam się ten pomysł nie podobał. Po pierwsze, to wycofywanie się i próbowanie ponowne (być może kilka razy) jest stratą czasu. Po drugie nie jest to metoda pewna. Jeżeli zdarzy się, że zbiór jedynek w jednym z tych adresów będzie podzbiorem drugiego, to ten, który ma więcej jedynek, nie wykryje konfliktu. Jacek się nie upierał (nigdy się nie upierał dlatego tylko, że pomysł był jego). Spytał, jak więc chcemy to zrobić.
Nam się ten pomysł nie podobał. Po pierwsze, to wycofywanie się i próbowanie ponowne (być może kilka razy) jest stratą czasu. Po drugie nie jest to metoda pewna. Jeżeli zdarzy się, że zbiór jedynek w jednym z tych adresów będzie podzbiorem drugiego, to ten, który ma więcej jedynek, nie wykryje konfliktu. Jacek się nie upierał (nigdy się nie upierał dlatego tylko, że pomysł był jego). Spytał, jak więc chcemy to zrobić.
Linia 133: Linia 133:
== Procesor ==
== Procesor ==


Już w czasie projektowania procesora okazało się, że uda nam się tak go 'upchać', że w module procesora (czyli w jednej obudowie) oprócz samego procesora zmieści się także jeden blok pamięci (blok systemowy o numerze 0) oraz jeden kanał znakowy. Schemat tego modułu przedstawia rysunek poniżej:
Już w czasie projektowania procesora okazało się, że uda nam się tak go "upchać", że w module procesora (czyli w jednej obudowie) oprócz samego procesora zmieści się także jeden blok pamięci (blok systemowy o numerze 0) oraz jeden kanał znakowy. Schemat tego modułu przedstawia rysunek poniżej:


[[File:Az-cpu-k202.png|center|frame|Moduł procesora K-202]]
[[File:Az-cpu-k202.png|center|frame|Moduł procesora K-202]]
Linia 148: Linia 148:


* Szyna znakowa była prywatną szyną procesora. Jeśli do jednego z procesorów było dołączone urządzenie, np. drukarka, to inne procesory nie miały do tej drukarki dostępu.  Problem ten był możliwy do obejścia, bo przewidziane były środki do komunikacji miedzy-procesorowej, więc ten drugi procesor mógł poprosić, żeby mu ten pierwszy coś wydrukował, niemniej było to kłopotliwe.
* Szyna znakowa była prywatną szyną procesora. Jeśli do jednego z procesorów było dołączone urządzenie, np. drukarka, to inne procesory nie miały do tej drukarki dostępu.  Problem ten był możliwy do obejścia, bo przewidziane były środki do komunikacji miedzy-procesorowej, więc ten drugi procesor mógł poprosić, żeby mu ten pierwszy coś wydrukował, niemniej było to kłopotliwe.
* Kanały znakowe nie miały dostępu do pamięci, a to wykluczało DMA (Direct Memory Access). Tego niestety nie da się obejść. Każdy znak z urządzenia musi być odczytany przez procesor (znak po znaku). Byłoby lepiej, gdyby procesor mógł wysłać do kanału polecenie takie, jak np. 'przeczytaj wiersz tekstu z urządzenia i zapisz go do pamięci od wskazanego adresu'. Usterka ta została poprawiona w maszynie Mera-400.
* Kanały znakowe nie miały dostępu do pamięci, a to wykluczało DMA (Direct Memory Access). Tego niestety nie da się obejść. Każdy znak z urządzenia musi być odczytany przez procesor (znak po znaku). Byłoby lepiej, gdyby procesor mógł wysłać do kanału polecenie takie, jak np. "przeczytaj wiersz tekstu z urządzenia i zapisz go do pamięci od wskazanego adresu". Usterka ta została poprawiona w maszynie Mera-400.


Reszta projektu, a następnie montaż prototypu przebiegały już bez specjalnych problemów.
Reszta projektu, a następnie montaż prototypu przebiegały już bez specjalnych problemów.
Linia 170: Linia 170:
[[File:Az-wirt-m400-1.png|center|frame|Pamięć MERA-400 - stan początkowy]]
[[File:Az-wirt-m400-1.png|center|frame|Pamięć MERA-400 - stan początkowy]]


W stanie początkowym, czyli po włączeniu zasilania, pamięć logiczna posiada tylko blok 0 (systemowy). Nie ma żadnych logicznych bloków użytkowych. Cała pamięć fizyczna stanowi pulę wolnych stron, które nie reagują jednak na żadne odwołania do pamięci.
W stanie początkowym, czyli po włączeniu zasilania, pamięć logiczna posiada tylko blok 0 (systemowy). Nie ma żadnych logicznych bloków użytkowych. Cała pamięć fizyczna stanowi pulę wolnych stron, które nie reagują jednak na żadne odwołania do pamięci.


[[File:Az-wirt-m400-1.png|center|frame|Pamięć MERA-400 - jeden blok użytkowy (proces)]]
[[File:Az-wirt-m400-2.png|center|frame|Pamięć MERA-400 - jeden blok użytkowy (proces)]]


Gdy system operacyjny chce utworzyć i uruchomić proces użytkowy, to dynamicznie tworzy dla niego segment pamięci wirtualnej. W tym celu bierze odpowiednią ilość stron z puli wolnych stron i przyporządkowuje każdej z nich numer bloku i najstarsze bity adresu wewnątrz bloku. Od tej chwili strony te reagują na polecenia odczytu i zapisu do pamięci.
Gdy system operacyjny chce utworzyć i uruchomić proces użytkowy, to dynamicznie tworzy dla niego segment pamięci wirtualnej. W tym celu bierze odpowiednią ilość stron z puli wolnych stron i przyporządkowuje każdej z nich numer bloku i najstarsze bity adresu wewnątrz bloku. Od tej chwili strony te reagują na polecenia odczytu i zapisu do pamięci.


[[File:Az-wirt-m400-1.png|center|frame|Pamięć MERA-400 - dwa bloki użytkowe (procesy)]]
[[File:Az-wirt-m400-3.png|center|frame|Pamięć MERA-400 - dwa bloki użytkowe (procesy)]]


Przy tworzeniu następnego procesu system operacyjny postępuje podobnie. Użyte wolne strony nie muszą być wszystkie w tym samym bloku fizycznym. Gdy pula wolnych stron w bloku fizycznym wyczerpie się, system operacyjny bierze strony z następnego bloku, jak to jest pokazane na rysunku.
Przy tworzeniu następnego procesu system operacyjny postępuje podobnie. Użyte wolne strony nie muszą być wszystkie w tym samym bloku fizycznym. Gdy pula wolnych stron w bloku fizycznym wyczerpie się, system operacyjny bierze strony z następnego bloku, jak to jest pokazane na rysunku.


Zauważmy, że jest tu możliwe tworzenie pamięci dzielonej. Nawet w systemie wielo-programowym w danym momencie aktywny jest tylko jeden proces naraz. Zatem przy przełączaniu kontekstu system operacyjny może stronę pamięci dzielonej przełączać z jednego procesu do drugiego.
Zauważmy, że jest tu możliwe tworzenie pamięci dzielonej. Nawet w systemie wielo-programowym w danym momencie aktywny jest tylko jeden proces naraz. Zatem przy przełączaniu kontekstu system operacyjny może stronę pamięci dzielonej przełączać z jednego procesu do drugiego.


== MX-16 ==
== MX-16 ==


Po zaprzestaniu produkcji Mery-400 przez zakłady ERA zespól nadal kontynuował rozwój maszyny pod nazwą MX-16 w firmie polonijnej AMEPOL.
Po zaprzestaniu produkcji Mery-400 przez zakłady ERA zespól nadal kontynuował rozwój maszyny pod nazwą [[MX-16]] w firmie polonijnej [[Amepol|AMEPOL]].
Rozwój ten dotyczył głównie dwóch aspektów:
Rozwój ten dotyczył głównie dwóch aspektów:
* Większą inteligencję uzyskały kontrolery i jednostki sterujące urządzeń, dzięki zbudowaniu ich jako mikrokomputery oparte na procesorze Intel 8085;
* Większą inteligencję uzyskały kontrolery i jednostki sterujące urządzeń, dzięki zbudowaniu ich jako mikrokomputery oparte na procesorze Intel 8085;
* Dzięki pojawieniu się na rynku scalonych układów pamięciowych o dużej pojemności, zbudowano moduły pamięci operacyjnej o pojemności 1M, a następnie 2M słów w jednym module fizycznym.
* Dzięki pojawieniu się na rynku scalonych układów pamięciowych o dużej pojemności, zbudowano moduły pamięci operacyjnej o pojemności 1M, a następnie 2M słów w jednym module fizycznym.


O maszynach Mera-400 i MX-16 wspominam tu tylko bardzo krótko, ponieważ są przedmiotem osobnego opracowania.
O maszynach Mera-400 i MX-16 wspominam tu tylko bardzo krótko, ponieważ są przedmiotem [[Po_K-202|osobnego opracowania]].

Menu nawigacyjne