Styk programowy MERA-PLIX
Wstęp
Styk software'owy MERA-PLIX składa się z następujących elementów:
- rozkazy IN, OU wysyłane do procesora PLIX
- przerwania zgłaszane do komputera MERA-400
- pole sterujące umieszczone w bloku nr 0 MERA
- bufory danych umieszczone w dowolnych blokach MERA
Procesor komunikacyjny PLIX przedstawia dla komputera MERA zbiór obiektów składający się z:
- kanału PLIX
- zbioru linii logicznych
Linie logiczne wyróżnione są identyfikatorami od 0 do 255. Identyfikatory przydzielane są przez komputer MERA poleceniem "ustaw konfiguracje". Zbiór identyfikatorów powinien być ciągły i zaczynać się od 0. Niespełnienie tych warunków spowoduje dodatkowe zapotrzebowanie na pamięć PLIX-a.
Rozkazy
Rozkazy IN, OU wysyłane do procesora PLIX maja wspólne cechy:
- Q = 0
- N15 = 0
- N11-14 = nr kanału
Rozkazy te dzielą się na trzy grupy:
- rozkazy kanałowe
- polecenia sterujące ogólne (dla kanału PLIX)
- polecenia sterujące liniowe (dla linii logicznej)
Rozkazy kanałowe
- Typ: IN
- N0-2 = 0
- N5-10 = 0
- Odpowiedź I/F: OK
Zeruj moduł
- N3-4 = 00
Inicjuje zerowanie procesora PLIX.
Po zakończeniu zgłaszane jest przerwanie:
- INSKA - procesor PLIX jest niesprawny
- IWYZE - procesor został wyzerowany.
Uwaga: Każdy sygnał zerowania systemu (CLEAR, MCL, włączenie zasilania) działa identycznie jak rozkaz zeruj moduł.
Sprawdź istnienie modułu
- N3-4 = 10
Podaj specyfikacje przerwania
- N3-4 = 01
Rozkaz ten jest wysyłany sprzętowo przy obsłudze przerwania. Specyfikacja składa się z numeru przerwania (bity 0 – 7) i identyfikatora linii bity (8 - 15)
Polecenia sterujące ogólne
Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie.
Cofnij przerwanie niepokwitowane do kolejki
- Typ: IN
- N0-2 = 001
- N3-10 = 0
Jeżeli jest zgłoszone przerwanie, którego specyfikacja nie została jeszcze pobrana, to zostaje ono ponownie umieszczone w kolejce przerwań.
Testuj
- Typ: OU
- N0-2 = 001
- Informacja: adres pola testu
Program testujący zostaje przepisany do pamięci PLIX i wykonany. Po poprawnym zakończeniu zgłaszane jest przerwanie IWYTE.
Ustaw konfiguracje
- Typ: OU
- N0-2 = 101
- Informacja: adres pola sterującego.
Przyporządkowane zostają linie logiczne do urządzeń dołączonych do PLIX-a (linii fizycznych). Ustalone zostają podstawowe parametry linii. Po zakończeniu ustawiania konfiguracji zgłaszane jest przerwanie:
- INKON - nie wykonano polecenia, bo były błędy w polu sterującym lub konfiguracja była już wcześniej ustawiona.
- IUKON - ustawiono konfiguracje
- INKOT - nie wykonano polecenia , bo wystąpiły błędy transmisji MERA-PLIX.
Uwaga: Ustawiona konfiguracja nie może być zmieniona aż do wyzerowania modułu.
Polecenia sterujące liniowe
- Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie.
- N3-10 = identyfikator linii logicznej.
Każde polecenie potwierdzone przez OK kwitowane jest zgłoszeniem jednego przerwania.
Dołącz linię
- Typ: OU
- N0-2 = 010
- Informacja: adres pola sterującego.
Linia logiczna zostaje dołączona do programu. Polecenie "dołącz linie" musi poprzedzać polecenie/a transmisyjne.
Pokwitowanie:
- IDOLI - dołączono linie
- INDOL - nie dołączono bo błędne parametry lub linia już była dołączona
- INKDO - brak linii w konfiguracji
Odłącz linię
- Typ: IN
- N0-2 = 010
Linia logiczna zostaje usunięta z programu. Linia fizyczna zostaje wyzerowana.
Pokwitowanie:
- IODLI - odłączono linie
- INODL - linia nie zakończyła transmisji, nie odłączono
- INKOD - brak linii w konfiguracji
Podaj status linii
- Typ: OU
- N0-2 = 011
- Informacja: adres statusu
Status zostaje umieszczony pod wskazanym adresem.
Pokwitowanie:
- ISTRE - podano status
- INSTR - odrzucono polecenie (poprzednie polecenie "podaj status" jest w toku)
- INKST - brak linii w konfiguracji
Przesyłaj
- Typ: OU
- N0-2 = 100
- Informacja: adres pola sterującego.
Rozpoczynana jest transmisja w linii.
Pokwitowanie:
- IETRA - zakończono przesyłanie poprawnie
- ITRER - zakończono przesyłanie z błędami
- INTRA - odrzucono polecenie (błędne parametry)
- INKTR - brak linii w konfiguracji
- ITRAB - zerwano transmisje poleceniem "zerwij"
Zeruj urządzenie
- Typ: IN
- N0-2 = 100
Urządzenie przywiązane do linii logicznej zostaje wyzerowane.
Pokwitowanie:
- IZURZ - zerowanie wykonane
- IEZUR - błąd w czasie zerowania
- INZUZ - polecenie odrzucone
- INKZU - brak linii w konfiguracji
- IZUAB - zerwano zerowanie
Zerwij przesyłanie lub zerowanie urządzenia
- Typ: IN
- N0-2 = 011
Przesyłanie lub zerowanie urządzenia zostaje zerwane.
Pokwitowanie:
- IABTR - wykonano zerwanie
- INABT - nie ma transmisji ani zerowania w tej linii
- INKAB - brak linii w konfiguracji
Uwaga: Każde z poleceń liniowych może być skwitowane także przerwaniami sygnalizującymi błędy przesyłania MERA-PLIX:
- INPAO - brak odpowiedzi z pamięci MERY
- IPARE - błąd parzystości pamięci MERY
Przerwania
Przerwania zgłaszane przez PLIX dzielą się na 3 grupy:
- przerwania specjalne
- przerwania ogólne
- przerwania liniowe
Specyfikacja przerwania, pobierana rozkazem "podaj specyfikacje przerwania", składa się z numeru przerwania (bity 0-7) oraz identyfikatora linii (bity 8-15). Identyfikator linii ma znaczenie tylko dla przerwań liniowych. Przerwanie specjalne kierowane jest do obu procesorów MERA natychmiast (bez kolejkowania) i bez sprawdzania odpowiedzi I/F. Przerwania ogólne i liniowe umieszczane są w kolejce przerwań. Przerwanie ogólne kierowane jest do tego procesora, który przysłał polecenie będące przyczyna przerwania. Powyższa zasada dotyczy także przerwań "brak linii w konfiguracji". Przerwanie liniowe (prócz "brak linii w konfiguracji") kierowane jest do tego procesora, który przysłał ostatnie polecenie dla danej linii. Przerwania z kolejki zgłaszane są od najstarszego (najdłużej oczekującego), z tym ze przerwania do procesorów zablokowanych są omijane (ale nie usuwane z kolejki). Zablokowanie procesora dla przerwań. następuje po braku jego odpowiedzi na zgłoszenie przerwania. Odblokowanie procesora następuje po otrzymaniu od niego dowolnego polecenia sterującego. Zgłoszenie następnego przerwania odbywa się po pobraniu specyfikacji poprzedniego przerwania (rozkaz "podaj specyfikacje") lub po poleceniu "cofnij przerwanie niepokwitowane do kolejki".
Przerwania specjalne
Oznaczenie | Nr | Opis | Proponowane działanie |
---|---|---|---|
INSKA | 1 | niesprawny kanał | Powtórzyć zerowanie, gdy to nie pomoże - testować i naprawić moduł |
IWYZE | 2 | wykonano zerowanie | podjąć prace zaczynając od polecenia "ustaw konfigurację" |
IWYTE | 3 | wykonano test | Podjąć prace zaczynając od rozkazu "zeruj moduł" |
Przerwania ogólne
Oznaczenie | Nr | Opis | Zgłaszane po poleceniu | Uwagi o przyczynach |
---|---|---|---|---|
INKON | 4 | odrzucono "ustaw konfigurację" | ustaw konfigurację | błędy w polu sterującym, za mała pamięć, konfiguracja już ustawiona |
IUKON | 5 | ustawiono konfigurację | ustaw konfigurację | |
INKOT | 6 | niewykonano "ustaw konfigurację" | ustaw konfigurację | błędy transmisji MERA-PLIX |
Przerwania liniowe
Oznaczenie | Nr | Opis | Zgłaszane po poleceniu | Uwagi o przyczynach |
---|---|---|---|---|
ISTRE | 7 | podano status | podaj status | |
INSTR | 8 | odrzucono "podaj status" | podaj status | poprzednie "podaj status" jest w toku wykonywania |
INKST | 9 | brak linii w konfig. | podaj status | |
IDOLI | 10 | dołączono linię | dołącz linię | |
INDOL | 11 | odrzucono "dołącz linię" | dołącz linię | błędy w polu, linia dołączona, poprzednie "dołącz" jest w toku |
INKDO | 12 | brak linii w konfig. | dołącz linię | |
IETRA | 13 | zakończono transmisję poprawnie | przesyłaj | |
INTRA | 14 | odrzucono "przesyłaj" | przesyłaj | błędy w polu, linia nie dołączona, przesyłanie w toku, zerowanie w toku |
INKTR | 15 | brak linii w konfig. | przesyłaj | |
ITRER | 16 | zakończono transmisję z błędem | przesyłaj | wykryto błąd transmisji |
ITRAB | 19 | zerwano przesyłanie | przesyłaj | zgodnie z poleceniem "zerwij" |
IABTR | 20 | wykonano "zerwij" | zerwij przesyłanie | |
INABT | 21 | nie wykonano "zerwij" | zerwij przesyłanie | brak transmisji w linii |
INKAB | 22 | brak linii w konfig. | zerwij przesyłanie | |
IODLI | 23 | odłączono linię | odłącz linię | |
INODL | 24 | nie odłączono linii | odłącz linię | transmisja w linii |
INKOD | 25 | brak linii w konfig. | odłącz linie | |
INPAO | 32 | brak trans. MERA-PLIX | Dowolne polecenie liniowe | uszkodzenie sprzętu |
IPARE | 33 | błąd parzystości MERA-PLIX | dowolne polecenie | uszkodzenie sprzętu |
IZURZ | 35 | wykonano zerowanie | zeruj urządzenie | |
INZUZ | 36 | odrzucono zerowanie | zeruj urządzenie | transmisja w toku, zerowanie w toku |
INKZU | 37 | brak linii w konfig. | zeruj urządzenie | |
IEZUR | 38 | błąd zerowania | zeruj urządzenie | uszkodzenie sprzętu |
IZUAB | 39 | zerwano zerowanie | zeruj urządzenie | zgodnie z poleceniem "zerwij" |
Pola sterujące
Pole sterujące jest to obszar pamięci umieszczony w bloku nr 0 MERA, którego adres jest przekazywany po liniach danych podczas wykonywania rozkazu OU, będącego poleceniem sterującym. W polu sterującym wyróżniamy:
- pole parametrów przekazywanych do PLIX
- pole parametrów zwracanych z PLIX-a
Wykorzystanie tych pól jest następujące:
Polecenie sterujące |
Pole parametrów przekazywanych |
Pole parametrów zwracanych |
---|---|---|
Testuj | tak | tak |
Ustaw konfig. | tak | tak |
Dołącz linie | tak | nie |
Podaj status linii | nie | tak |
Przesyłaj | tak | tak |
Zeruj | nie | nie |
W dalszym ciągu zostaną omówione pola poszczególnych poleceń oprócz polecenia "testuj", które jest przedmiotem osobnego opisu. Zawartość pol poleceń "dołącz linie" i "przesyłaj" zależna jest od urządzenia dołączonego do linii. Opisano pola dla urządzeń:
- 0 - dysk EC-5061 (30mb)
- 1 - dysk MERA 9425 (5mb)
- 2 - Winchester
Pole sterujące "ustaw konfiguracje"
Pole składa się z:
- nagłówka (1 słowo)
- pola parametrów zwracanych (1 słowo)
- pol opisu pakietów urządzeń (1 słowo na pakiet)
- pol opisu linii logicznej (2 słowa na linie logiczna)
Nagłówek:
Bity | Znaczenie |
---|---|
0-7 | ilość pakietów |
8-15 | ilość linii logicznych |
Pole parametrów zwracanych:
Bity | Znaczenie |
---|---|
0-7 | Nr błędu:
|
8-15 |
|
Pole opisu pakietu:
Słowo | Bity | Znaczenie |
---|---|---|
0 | 3 | pakiet użyty |
4-7 | typ urządzenia:
| |
8-15 | mapa bitowa urządzeń dołączonych do pakietu (bit 15 - urządzenie 0) |
Pole opisu linii logicznej:
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0-7 | parametry linii |
6-7 | dla urządzenia typu 1 (MERA 9425):
| |
8-12 | numer pakietu | |
13-15 | numer urządzenia na pakiecie | |
1 | 0-15 | parametry linii |
0-7 | typ dysku dla urządzeń typu 2 (Winchester):
| |
8-15 | protekcja formatowania:
|
Długość całego pola sterującego. wynosi:
1 + 1 + <liczba pakietów> + 2 * <liczba linii logicznych>
Pole sterujące "dołącz linię"
Pole zawiera tylko parametry przekazywane.
Protokół nr 0 - dysk EC 5061, 1 - MERA 9425
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0 | poziom automatyki:
|
4-7 | maksymalna liczba retransmisji podczas Wykonania polecenia "przesyłaj" |
Urządzenie typu 2 – Winchester
Polecenie dołącz jest bezparametrowe
Pole sterujące "podaj status linii"
Pole zawiera tylko parametry zwracane.
Urządzenie typu 0, 1
Słowo | Bity | Znaczenie |
---|---|---|
0 | 7 | linia dołączona |
6 | transmisja w toku | |
5 | zerowanie w toku | |
4 | wykonywane pozycjonowanie głowic | |
8 | błąd pracy łańcucha | |
9 | błąd w dysku | |
10 | błąd pozycjonowania | |
11 | błędny adres głowicy lub cylindra | |
12 | dysk nie wybrany | |
13 | pozycjoner w ruchu | |
1 | 2 | niezgodność porównania danych |
3 | sektor nie znaleziony | |
4 | nienadążanie transmisji | |
5 | niezgodność pola adresowego | |
6 | błąd transmisji pola adresowego | |
7 | błąd transmisji pola danych | |
9 | brak impulsów sektorowych | |
10 | niezgodność numeru klucza | |
11 | niezgodność numeru głowicy | |
12 | niezgodność numeru cylindra | |
13 | niezgodność blokad | |
14 | brak znacznika końca danych | |
15 | błąd CRC | |
2 | 0-7 | liczba przesłanych poprawnie sektorów |
Pole sterujące "przesyłaj"
Pole zawiera w pierwszej części parametry przekazywane, a w drugiej, oddzielone linia przerywana - parametry zwracane.
Typ urządzenia 0 - dysk EC 5061, 1 - dysk MERA 9425
Słowo | Bity | Znaczenie |
---|---|---|
0 | 1 | kodowanie |
2 | ignoruj błędy odczytu | |
3 | ignoruj klucz | |
5 | porównanie danych z dysku z danymi w buforze | |
6 | 1=pola adresowe, 0=pola danych | |
7 | 1=zapis, 0=odczyt | |
12-15 | numer bloku pamięci | |
1 | 0-15 | adres początkowy bufora danych transmisji |
2 | 0-15 | długość transmisji (słowowa) pomniejszona o 1 |
3 | 0 | ignoruj blokadę zapisu |
1 | ignoruj blokadę uszkodzeń | |
2 | ignoruj klucz | |
8-15 | numer cylindra (przy adresowaniu fizycznym) | |
4 | 0-7 | numer głowicy (przy adresowaniu fizycznym). Numer głowicy jest z zakresu 0-19 dla linii dołączonej do dysku EC 5061, 0-1 dla linii dołączonej do jednego talerza dysku MERA 9425 (1 lub 2 w parametrze konfiguracji) lub 0-3 dla linii obejmującej cały dysk MERA 9425. |
8-15 | numer sektora (przy adresowaniu fizycznym) | |
0-15 | numer logiczny sektora (przy adresowaniu logicznym). Sektor o numerze logicznym 0 ma adres fizyczny: cylinder 0, głowica 0, sektor 0. W miarę rośnięcia numeru najszybciej zmienia się numer sektora, następnie głowicy i na końcu cylindra. | |
5 | 8-15 | młodszy bajt klucza |
6 | 0-15 | liczba przetransmitowanych poprawnie słów |
7 | sposób zakończenia transmisji: | |
0 | błąd pozycjonowania | |
1 | timeout | |
2 | błąd porównania danych | |
3 | sektor nieznaleziony | |
5 | niezgodność adresów | |
6 | błąd adresów | |
7 | błąd danych |
Typ urządzenia 2 – Winchester
Pole sterujące transmituj zawiera 4 słowa parametrów transmisji i 2 słowa parametrów zwracanych. Pierwsze słowo na bitach 6-7 zawiera kod operacji:
- 0 - formatowanie całego dysku
- 1 - przeniesienie sektorów do obszaru zapasowego
- 2 - odczyt zawartości dysku
- 3 - zapis na dysk
Znaczenie zawartości pola jest zależne od zadanej operacji.
Operacja formatowania
Operacja formatowania dysku jest bezparametrowa. Po sformatowaniu całego dysku, na cylindrze 0 jest zakładany obszar zapasowy (96 sektorów). Sektory 0 i 1 tego obszaru zawierają powielona mapę sektorów przeniesionych. Sektory użyteczne są adresowane logicznie od 0.
Przenoszenie sektorów do obszaru zapasowego
Słowo | Bity | Znaczenie |
---|---|---|
+1 | 0-15 | mapa bitowa sektorów przenoszonych (0 sektor ścieżki na 15 bicie, 15 na 0 bicie) |
+2 | nieistotne | |
+3 | 0-15 | numer sektora początkowego ścieżki na której znajdują się przenoszone sektory |
Wskazane sektory są zapisywane do mapy sektorów przeniesionych i cala ścieżka jest formatowana na nowo. Przed wykonaniem tej operacji należny wiec odczytać zawartość ścieżki do bufora w komputerze (inaczej zostanie stracona) i po jej wykonaniu zapisać na nowo.
Opereacje transmisji
Operacje transmisji (zapis lub odczyt z dysku) wymagają pola sterującego.
Słowo | Bity | Znaczenie |
---|---|---|
+0 | 3 | ignorowane będą błędy CRC odczytu |
4 | dopełnianie ostatniego zapisywanego sektora ostatnim zapisanym słowem transmisji. | |
5 | wykrywany będzie znacznik końca transmisji (bajty $$ w pierwszym słowie sektora). Wykrycie znacznika jest sygnalizowane przerwaniem ITRER (kod 16) z podaniem przyczyny w polu parametrów zwracanych. | |
6-7 | kod operacji: odczyt = 2, pisanie = 3 | |
11-15 | numer bloku pamięci MERY | |
+1 | 0-15 | adres bufora MERY |
+2 | 0-15 | długość transmisji w słowach pomniejszona o 1 |
+3 | 0-15 | numer sektora początkowego transmisji |
Pole parametrów zwracanych zawiera 2 słowa:
Słowo | Bity | Znaczenie |
---|---|---|
+0 | 0-15 | liczba przesłanych poprawnie slow (tylko czytanie lub pisanie) |
+1 | 0-15 | słowo stanu i błędów |
Bity słowa stanu i błędów maja następujące znaczenie:
Bit | Znaczenie | Opis |
---|---|---|
0 | Wykryto znacznik końca transmisji | |
1 | Niegotowość dysku | Bit zgaszony oznacza, że dysk gotowy jest do operacji pozycjonowania głowic. Bit zapalony oznacza, że wrzeciono dysku ma niewłaściwe obroty, brak napięcia zasilającego, błąd toru zapisu dysku. |
2 | Błąd toru zapisu dysku | Bit zapalony oznacza awarię w torze zapisu dysku wywołaną wybraniem więcej niż jednej głowicy, brak prądu zapisu podczas operacji zapisu, obecność prądu zapisu podczas operacji odczytu, niewłaściwe napięcie zasilające. |
3 | Wykonywane pozycjonowanie głowic | Bit zapalony oznacza, że głowice nie znajdują się na zadanym cylindrze. |
4 | Przepełnienie obszaru zapasowego (przy operacji 1) | |
5 | Błąd odczytu mapy sektorów przeniesionych | |
6 | Nieistotny | |
7 | Sumaryczny wskaźnik błędu wykonania operacji | Bit zapalony oznacza, że podczas wykonywania operacji w/g polecenia sterującego wystąpił błąd. Przyczynę błędu określają bity 8-15 słowa. |
8 | Błędny sektor | Bit zapalony oznacza, że w polu adresowym zadanego sektora zapisany został znacznik błędnego sektora. Ponieważ PLIX automatycznie odczytuje błędne sektory z obszaru zapasowego, wystąpienie tego błędu wskazuje na uszkodzenie mapy. |
9 | Błąd kontroli CRC | Bit zapalony oznacza wystąpienie błędu sumy kontrolnej pola danych odczytywanego sektora. Sektor zostaje przesłany do bufora lecz dane są błędne. Jeżeli transmisja obejmowała więcej niż jeden sektor, poprzednie sektory są poprawnie odczytane. Jeżeli błąd powtarza się oznacza uszkodzenie nośnika w obrębie pola danych sektora; sektor należy uznać za uszkodzony i przenieść go na obszar zapasowy. |
10 | Nieistotny | |
11 | Sektor nie znaleziony | Bit zapalony oznacza nieodnalezienie poprawnego pola adresowego zadanego sektora. Sektor nie zostaje zapisany/odczytany. Jeżeli transmisja obejmowała więcej niż jeden sektor, poprzednie sektory zostają przesłane. Jeżeli błąd powtarza się, sektor należy uznać za uszkodzony. |
12 | Nieistotny | |
13 | Polecenie odrzucone | Bit zapalony oznacza odrzucenie polecenia z powodu braku gotowości dysku lub błędu w torze zapisu. |
14 | Błąd pozycjonowania głowic na ścieżce 000 | Bit zapalony oznacza niepoprawne zakończenie ustawienia głowic na ścieżce 000. |
15 | Nie znaleziony znacznik pola danych | Bit zapalony oznacza nienapotkanie podczas operacji odczytu sektora (sektorów) znacznika początku pola danych. |
Uwagi:
- Błędy związane z nieznalezieniem znacznika pola danych, nieznalezieniem sektora, błędem kontroli CRC są sygnalizowane po 10 obrotach dysku (powtórzeniach) i powtórnym pozycjonowaniu głowic na zadanej ścieżce.
- Błędy te mogą wystąpić podczas operacji pierwszego formatowania powierzchni dysku. Dla dysku BASF 6185 dopuszczalne jest wystąpienia max 15 uszkodzonych sektorów na nowym dysku. Dla dysku NEC D5126 dopuszczalne jest wystąpienie 24 uszkodzonych sektorów.
- Jeżeli w podczas eksploatacji liczba uszkodzonych sektorów zaczyna wzrastać świadczy to o uszkodzeniu kontrolera lub dysku.
- Początkowo (do czasu całkowitego uruchomienia kontrolera) liczba uszkodzonych sektorów możne być dużo większa.
Źródło: Styk MERA-PLIX, wersja F, Amepol, Tadeusz W. Wilczek, 1987-02-13