Przerwania: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 46: | Linia 46: | ||
* RP - 32-bitowy rejestr przyjęć przerwań, w którym następuje wybranie przerwania o najwyższym priorytecie spośród przerwań zamaskowanych. | * RP - 32-bitowy rejestr przyjęć przerwań, w którym następuje wybranie przerwania o najwyższym priorytecie spośród przerwań zamaskowanych. | ||
Wszystkie pozycje rejestru zgłoszeń, z wyjątkiem pozycji przerwań kanałowych, dostępne są programowo (rozkazami KI i FI). Wszystkie pozycje (z wyjątkiem zerowej) rejestru RZ są maskowalne. Maskę stanowi rejestr maskujący RM o długości 10 bitów (poz 0÷9 rejestru SR). Przyporządkowanie pozycji rejestru RZ pozycjom rejestru maskującego i adresy początków podprogramów obsługi, a także znaczenie poszczególnych pozycji rejestru zgłoszeń RZ przedstawia tabela poniżej. Przerwania, które zostały zgłoszone, mogą być obsłużone tylko w przypadku, gdy zapalona jest odpowiadająca im pozycja w rejestrze maskującym. | |||
{| class="wikitable" | {| class="wikitable" | ||
! RZ | ! SR !! RZ !! Adres !! Opis | ||
|- | |- | ||
| 0 || alarm zasilania (z danego procesora) | | - || 0 || 64 || alarm zasilania (z danego procesora) | ||
|- | |- | ||
| 1 || błąd parzystości pamięci operacyjnej | | 0 || 1 || 65 || błąd parzystości pamięci operacyjnej | ||
|- | |- | ||
| 2 || brak pamięci operacyjnej | | 1 || 2 || 66 || brak pamięci operacyjnej | ||
|- | |- | ||
| 3 || zgłoszenie przerwania z drugiego procesora (przeważnie o wyższym priorytecie) | | 2 || 3 || 67 || zgłoszenie przerwania z drugiego procesora (przeważnie o wyższym priorytecie) | ||
|- | |- | ||
| 4 || zanik zasilania (z interfejsu) modułów zewnętrznych | | 3 || 4 || 68 || zanik zasilania (z interfejsu) modułów zewnętrznych | ||
|- | |- | ||
| 5 || przerwanie zegarowe | | rowspan=7 | 4 || 5 || 69 || przerwanie zegarowe | ||
|- | |- | ||
| 6 || nieprawidłowy rozkaz | | 6 || 70 || nieprawidłowy rozkaz | ||
|- | |- | ||
| 7 || nadmiar dzielenia stałoprzecinkowego | | 7 || 71 || nadmiar dzielenia stałoprzecinkowego | ||
|- | |- | ||
| 8 || podmiar zmiennoprzecinkowy | | 8 || 72 || podmiar zmiennoprzecinkowy | ||
|- | |- | ||
| 9 || nadmiar zmiennoprzecinkowy | | 9 || 73 || nadmiar zmiennoprzecinkowy | ||
|- | |- | ||
| 10 || błąd danych zmiennoprzecinkowych lub próba dzielenia przez zero | | 10 || 74 || błąd danych zmiennoprzecinkowych lub próba dzielenia przez zero | ||
|- | |- | ||
| 11 || do zastosowań specjalnych | | 11 || 75 || do zastosowań specjalnych | ||
|- | |- | ||
| 12 | | rowspan=2 | 5 || 12 || 76 || kanał 0 | ||
|- | |- | ||
| | | 13 || 77 || kanał 1 | ||
|- | |- | ||
| | | rowspan=2 | 6 || 14 || 78 || kanał 2 | ||
|- | |- | ||
| 30 | | 15 || 79 || kanał 3 | ||
|- | |||
| rowspan=6 | 7 || 16 || 80 || kanał 4 | |||
|- | |||
| 17 || 81 || kanał 5 | |||
|- | |||
| 18 || 82 || kanał 6 | |||
|- | |||
| 19 || 83 || kanał 7 | |||
|- | |||
| 20 || 84 || kanał 8 | |||
|- | |||
| 21 || 85 || kanał 9 | |||
|- | |||
| rowspan=6 | 8 || 22 || 86 || kanał 10 | |||
|- | |||
| 23 || 87 || kanał 11 | |||
|- | |||
| 24 || 88 || kanał 12 | |||
|- | |||
| 25 || 89 || kanał 13 | |||
|- | |||
| 26 || 90 || kanał 14 | |||
|- | |||
| 27 || 91 || kanał 15 | |||
|- | |||
| rowspan=4 | 9 || 28 || 92 || zgłoszenie operatora (OPRQ) | |||
|- | |||
| 29 || 93 || zgłoszenie przerwania z drugiego procesora (przerwanie o niższym priorytecie) | |||
|- | |||
| 30 || 94 || przerwanie programowe | |||
|- | |||
| 31 || 95 || przerwanie programowe | |||
|- | |- | ||
|} | |} |
Wersja z 17:33, 17 wrz 2012
Jednostka centralna posiada układ przerwań, który jest w stanie przyjmować i obsługiwać 32 przerwania. Układ przerwań jest układem priorytetowym. Ustalenie priorytetów związane jest z geometrią zgłoszeń przerwań, a mianowicie im niższy jest numer przerwania, tym wyższy jest jego priorytet.
Obsługę przerwania wykonuje się gdy:
- nastąpi zgłoszenie przerwania do rejestru RZm
- zapalona jest maska odpowiadająca zgłoszonemu przerwaniowi,
- wskaźnik przeskoku P=0,
- ostatnim wykonanym rozkazem nie był rozkaz modyfikacji MD,
- system nie jest w stanie STOP.
Obsługa przerwania składa się z następujących czynności:
- zapamiętanie aktualnej zawartości licznika rozkazów IC,
- zapamiętanie aktualnej zawartości rejestru R0,
- zapamiętanie aktualnej zawartości rejestru stanu SR,
- zapamiętanie specyfikacji przerwania w przypadku przerwania zewnętrznego lub zapamiętanie zera dla przerwań nie z kanałów,
- wyzerowanie rejestru R0,
- wyzerowanie pozycji rejestru RM odpowiadającej danemu przerwaniu oraz wszystkich mniej znaczących pozycji rejestru RM,
- wyzerowanie SR10 (bitu Q),
- wpisanie nowej zawartości licznika rozkazów IC odpowiadającej numerowi przerwania,
- uaktualnienie wskaźnika stosu.
Zapamiętywanie zawartości IC, R0, SR oraz specyfikacji przerwania odbywa się począwszy od adresu wskazanego przez wskaźnik stosu. Wskaźnik stosu znajduje się w komórce pamięci o adresie 97. Uaktualnienie wskaźnika stosu polega na zwiększeniu jego wartości o 4.
Wpisanie nowej wartości IC odbywa się wg tablicy przerwań. Tabela przerwań zawiera adresy początków podprogramów obsługi przerwań. Tabela umieszczona jest w komórkach pamięci o adresach 64÷95 w bloku systemowym pamięci operacyjnej, przy czym kolejne adresy odpowiadają numerom przerwań. Wpisanie nowej zawartości IC polega na wpisaniu wzawartości komórki pamięci odpowiadającej numerowi przyjętego przerwania +64.
Jeżeli:
- RZ[i] = 1
- i ∈ [0÷31]
- RM[j] = 1 gdzie j ∈ [0÷9] oznacza numer pozycji rejestru RM odpowiadającej przerwaniu o numerze i,
to:
- S[S/97;0/;0] := IC
- S[S/97;0/+1;0] := R0
- S[S/97;0/+2;0] := SR
- S[S/97;0/+3;0] := specyfikacja przerwania lub 0
- R0 := 0
- RM[j÷9] := 0 dla i ∈ [1÷31]
- RM[0÷9] := 0 dla i = 0
- RZj := 0
- IC := S/64+1;0/
- S/97;0/ := S/97;0/+4
- SR10 := 0
Układ przerwań zawiera następujące rejestry:
- RZ - 32-bitowy rejestr zgłoszeń przerwań, w którym zapamiętywane są wszystkie zgłoszenia przerwań,
- RM - 10-bitowy rejestr służący do maskowania przerwań (pozycje 0÷9 rejestru SR),
- RP - 32-bitowy rejestr przyjęć przerwań, w którym następuje wybranie przerwania o najwyższym priorytecie spośród przerwań zamaskowanych.
Wszystkie pozycje rejestru zgłoszeń, z wyjątkiem pozycji przerwań kanałowych, dostępne są programowo (rozkazami KI i FI). Wszystkie pozycje (z wyjątkiem zerowej) rejestru RZ są maskowalne. Maskę stanowi rejestr maskujący RM o długości 10 bitów (poz 0÷9 rejestru SR). Przyporządkowanie pozycji rejestru RZ pozycjom rejestru maskującego i adresy początków podprogramów obsługi, a także znaczenie poszczególnych pozycji rejestru zgłoszeń RZ przedstawia tabela poniżej. Przerwania, które zostały zgłoszone, mogą być obsłużone tylko w przypadku, gdy zapalona jest odpowiadająca im pozycja w rejestrze maskującym.
SR | RZ | Adres | Opis |
---|---|---|---|
- | 0 | 64 | alarm zasilania (z danego procesora) |
0 | 1 | 65 | błąd parzystości pamięci operacyjnej |
1 | 2 | 66 | brak pamięci operacyjnej |
2 | 3 | 67 | zgłoszenie przerwania z drugiego procesora (przeważnie o wyższym priorytecie) |
3 | 4 | 68 | zanik zasilania (z interfejsu) modułów zewnętrznych |
4 | 5 | 69 | przerwanie zegarowe |
6 | 70 | nieprawidłowy rozkaz | |
7 | 71 | nadmiar dzielenia stałoprzecinkowego | |
8 | 72 | podmiar zmiennoprzecinkowy | |
9 | 73 | nadmiar zmiennoprzecinkowy | |
10 | 74 | błąd danych zmiennoprzecinkowych lub próba dzielenia przez zero | |
11 | 75 | do zastosowań specjalnych | |
5 | 12 | 76 | kanał 0 |
13 | 77 | kanał 1 | |
6 | 14 | 78 | kanał 2 |
15 | 79 | kanał 3 | |
7 | 16 | 80 | kanał 4 |
17 | 81 | kanał 5 | |
18 | 82 | kanał 6 | |
19 | 83 | kanał 7 | |
20 | 84 | kanał 8 | |
21 | 85 | kanał 9 | |
8 | 22 | 86 | kanał 10 |
23 | 87 | kanał 11 | |
24 | 88 | kanał 12 | |
25 | 89 | kanał 13 | |
26 | 90 | kanał 14 | |
27 | 91 | kanał 15 | |
9 | 28 | 92 | zgłoszenie operatora (OPRQ) |
29 | 93 | zgłoszenie przerwania z drugiego procesora (przerwanie o niższym priorytecie) | |
30 | 94 | przerwanie programowe | |
31 | 95 | przerwanie programowe |