Architektura komputerów
5. PRZERWANIA
5 Przerwania
5.1 Przerwania - klasyfikacja
5.2 Realizacja przerwania
5.3 System przerwań – przykład x86
5.3.1 Sterownik przerwań
5.4Transmisje sterowane przerwaniami
ArKom 2013 – 5. Przerwania
2
5.1 Przerwania - klasyfikacja
• Przerwanie (Interrupt) lub żądanie przerwania
(IRQ – Interrupt ReQuest)
– mechanizm reagowania procesora na
zdarzenia istotne dla realizowanego programu,
efektywnego wykorzystania zasobów systemu
oraz ograniczenia skutków błędów i
niesprawności
taka sama reakcja procesora = przerwanie
realizacji bieżącego programu i przejście do
specjalnego programu obsługi przerwania
(interrupt handler).
ArKom 2013 – 5. Przerwania
3
ArKom 2013 – 5. Przerwania
4
INT j
INT j
APOj :
RETI
Przerwania dzielą się na:
• Zewnętrzne – – Interrupts
– sygnał przerwania pochodzi z zewnętrznego
układu obsługującego przerwania sprzętowe;
– przerwania te służą do komunikacji z
urządzeniami zewnętrznymi,
– asynchroniczne i niezależne od cyklu
rozkazowego
.
ArKom 2013 – 5. Przerwania
5
• Wewnętrzne - wyjątki (Exceptions) – zgłaszane przez procesor
sytuacje wyjątkowe związanych z wykonywaniem rozkazów
i często uniemożliwiają realizację programu (np. dzielenie przez
zero, błędna adresacja pamięci, błędny kod rozkazu itp.;
– faults (błąd) – sytuacja, w której aktualnie wykonywana
instrukcja powoduje błąd gdy procesor powraca do
wykonywania przerwanego kodu wykonuje tę samą instrukcję
która wywołała wyjątek;
– traps (pułapki) – sytuacja, która nie jest błędem, jej
wystąpienie ma na celu wykonanie określonego kodu;
wykorzystywane przede wszystkim w debugerach gdy
procesor powraca do wykonywania przerwanego kodu,
wykonuje następną instrukcję po tej, która wywołała wyjątek,;
– aborts (nienaprawialne) – błędy, których nie można naprawić.
ArKom 2013 – 5. Przerwania
6
Rodzaje / klasyfikacja przerwań + priorytet;
1. ‘System reset’
2. ‘Machine check’
Oba przerwania należą do asynchronicznych i
niemaskowalnych. W związku z najwyższym priorytetem
obsługa tych przerwań nie będzie nigdy opóźniona.
3. przerwanie synchroniczne - pojedyncza instrukcja może
wywołać więcej niż jedno przerwanie - kolejność obsługi
jest ściśle określona w zależności od typu instrukcji (np.
instrukcje odczytu i ładowania liczb stałoprzecinkowych
mają tą samą kolejność).
4. przerwania nieprecyzyjne, np. przerwania od jednostki
zmiennoprzecinkowej
5. przerwania maskowalne, nieprecyzyjne, asynchroniczne,
np. przerwanie zewnętrzne (external)
6. przerwania maskowalne, nieprecyzyjne, asynchroniczne,
np. decrementer
ArKom 2013 – 5. Przerwania
7
• Producenci procesorów część pozycji w tablicy
wektorów przerwań rezerwują dla przerwań
wewnętrznych.
• Pozostałe numery przerwań mogą być dowolnie
wykorzystane przez producentów systemów
komputerowych i oprogramowania.
• Obsługiwanie większości przerwań (wszystkich
lub wybranych numerów) można wstrzymać lub
zablokować, wyjątkiem są przerwania
niemaskowalne.
ArKom 2013 – 5. Przerwania
8
5.2 Obsługa przerwań
• Uaktywnienie programu obsługi przerwania –
– sprzęt realizuje automatycznie na podstawie
sygnalizowanego zgłoszenia adres APOj
• Z programu obsługi przerwania wychodzi się
ostatnim rozkazem RETI – powrót z przerwania
• Wracamy do następnego rozkazu programu
ArKom 2013 – 5. Przerwania
9
• Czynności/etapy
– Identyfikacja zgłoszenia
– Zapamiętanie stanu programu
– Blokada zgłoszeń
– Uruchomienie programu obsługi
przerwania.
ArKom 2013 – 5. Przerwania
10
• Identyfikacja zgłoszeń przerwania
– Osobne wejście dla każdego zgłoszenia – sprzętowe
rozwiązanie + poszczególnym wejściom przypisuje się
programy obsługi + ew. testowanie źródła przerwań
– Kodowanie – przypisanie numerów/kodów przerwaniom i po
zgłoszeniu zdarzenia kod przerwania przekazuje się szyną
danych i w oparciu o ten kod uruchamia się właściwy program
obsługi + kody nadaje się w momencie konfigurowania
systemu
– Programowe (polling) – stosuje się gdy wszystkie przerwania
są zgłaszane jednym sygnałem i wtedy program przepytuje
kolejne moduły wada: dużo czasu i nie nadaje się do
systemów czasu rzeczywistego, zaleta: możliwość
programowej zmiany priorytetów przerwań = zmiana
kolejności odpytywania
ArKom 2013 – 5. Przerwania
11
ArKom 2013 – 5. Przerwania
12
• Zapamiętanie bieżącego stanu
procesu/programu/procesora umożliwienie kontynuacji
przerwanego programu
• Stan programu jest na bieżąco (w każdym cyklu
rozkazowym) zapisywany w:
– Liczniku rozkazów – PC
– Znacznikach słowo stanu PSW (Program Status Word)
– Rejestrach uniwersalnych
• Najczęściej korzysta się ze stosu systemowego, w którym
najpierw zapisuje się licznik rozkazów, a potem słowo
stanu rozkaz RETI pobiera dane ze stosu wada:
konieczność kontaktów z pamięcią + ew. zapisywanie w
rejestrach procesora lub zmiany numeracji rejestrów.
ArKom 2013 – 5. Przerwania
13
• Blokowanie możliwości rejestracji nowych zgłoszeń
automatyczne ustawienie wskaźnika w słowie
stanu, np IE (Interrupt Enable) – po zakończeniu
obsługi przerwania programowo zmienia się ten
wskaźnik na EI (Enable Interrupt)
• Nadane priorytety przerwań mogą spowodować
przerwanie obsługi danego zgłoszenia i przekazanie
obsługi zdarzeniom o wyższym priorytecie. – może
to być zrealizowane sprzętowo lub programowo –
najczęściej zgłoszenia przerwań są przyjmowane na
koniec cyklu rozkazowego, czyli wiele zgłoszeń
o różnym priorytecie może czekać na obsługę
ArKom 2013 – 5. Przerwania
14
• Wybór programu obsługi przerwań następuje bądź drogą
pollingu, bądź przez kodowanie, ale musi być to
jednoznaczne
tablica wektorów = tablica adresów wszystkich możliwych
programów obsługi - zapisuje system operacyjny w określonym
miejscu pamięci.
• Producenci procesorów część pozycji w tablicy wektorów
przerwań rezerwują dla przerwań wewnętrznych.
Pozostałe numery przerwań mogą być dowolnie
wykorzystane przez producentów systemów
komputerowych i oprogramowania. Obsługiwanie
większości przerwań (wszystkich lub wybranych
numerów) można wstrzymać lub zablokować, wyjątkiem
są niemaskowalne.
ArKom 2013 – 5. Przerwania
15
ArKom 2013 – 5. Przerwania
16
5.3 System przerwań – przykład x86
• System przerwań x86 jest rozbudowany
i elastyczny:
– sprzętowy (w zasadzie sztywny) – działający
wg zasad ustalonych w trakcie instalacji
– programowy – w trakcie działania systemu
można programowo zmieniać priorytety
poszczególnych przerwań
• Wyróżnia się przerwania:
– zewnętrzne (interrupts)
– wewnętrzne (exceptions)
ArKom 2013 – 5. Przerwania
17
• Przerwania zewnętrzne są zgłaszane na wejściach
procesora:
– INTR
•mogą być maskowane – będą przyjmowane gdy
znacznik IF = 1 w słowie stanu FLAGS
•programowo można zmieniać stan tego wskaźnika;
rozkaz STI => IF <- 1, a rozkaz CLI => IF <- 0
– NMI (Non-Maskable Interrupts) – dla zdarzeń
uniemożliwiających dalszą poprawną pracę systemu,
np. błąd pamięci,
• Przerwania wewnętrzne - zdarzenia wykrywane przez
procesor i nie można ich maskować
ArKom 2013 – 5. Przerwania
18
• Tablica wektorów przerwań (Interrupt Vector
Table)
– zawiera 255 pozycji (indeksów) adresów
programów obsługi przerwań
– wektory są dwusłowowe - specyfika
architektury x86 stosującej system
adresowania:
• tzw. selektor lokowany w liczniku rozkazów
IP Instruction Pointer
• przemieszczenie przesyłane do rejestru CS
Code Segment
ArKom 2013 – 5. Przerwania
19
• wywołanie program obsługi przerwania poprzez
rozkaz INT n (często stosowane programach
assemblerowych)
• przyjęcie przerwania
• ulokowania na stosie słów FLAGS, CS i IP przy czym
następuje wyzerowanie wskaźników
– IF = 0 - wskaźnik przerwań <- brak możliwości
przerwania
– TF (trace trap) = 0 – wskaźnik pracy krokowej
(zatrzymanie po wykonaniu każdego rozkazu) <-
brak możliwości pracy krokowej
– NT – zagnieżdżenie zadania
ArKom 2013 – 5. Przerwania
20
ArKom 2013 – 5. Przerwania
21
• Powrót do przerwanego programu następuje w
oparciu o rozkaz IRET, który odtwarza słowo
stanu, selektor i adres rozkazu sprzed
przerwania.
ArKom 2013 – 5. Przerwania
22
5.3.1 Sterownik przerwań
• PIC (Programmable Interrupt Controller)
– np. moduł 8259A (dla 8-bitowych procesorów)
– układ realizujący priorytety przerwań
zewnętrznych, ich maskowanie oraz
przypisywanie numerów
– działa poza procesorem i odciąża go – jest to
element układu okołoprocesorowego tzw.
chipsetu
ArKom 2013 – 5. Przerwania
23
ArKom 2013 – 5. Przerwania
24
71.2014
„Funkcjonalności”
• Do PIC wpisuje się numery (identyfikatory) – dokładnie tylko 5
najbardziej znaczących bitów – numeru kojarzonego ze
zgłoszeniem IRQ…
• Ustala się programowo priorytety przerwań (IRQ0 najwyższy) +
możliwość cyklicznej obsługi zgłoszeń, np. po przyjęciu
zgłoszenia dany numer otrzymuje najniższą wartość
• Po pojawieniu się kilku zgłoszeń na wejściach IRQ… ze
sterownika jest wysyłany do procesora sygnał INTR,
• Procesor (o ile nie jest zamaskowany IF=0) odpowiada
akceptacją tego zgłoszenia na linii INTA
• W odpowiedzi sterownik wybiera numer zgłoszenia
o najwyższym priorytecie i wysyła go na linie danych D<7:0>
ArKom 2013 – 5. Przerwania
25
5.4 Transmisje sterowane przerwaniami
• Przerwania wprowadzono dla odciążenia procesora
w trakcie transmisji pomiędzy urządzeniami
zewnętrznymi a pamięcią.
• Transmisja może być sterowana;
– Programowo (dwuetapowo);
1)dana (byte) z pamięci do rejestru procesora –
rozkaz load,
2)z rejestru do portu wyjściowego odpowiadającego
danemu urządzeniu – rozkaz out
przesłanie następnego byte gdy urządzenie gotowe
możliwość zagubienia byte sprawdzanie
gotowości urządzenia (rozkaz in sprawdza stan
odpowiedniego bitu)
ArKom 2013 – 5. Przerwania
26
ArKom 2013 – 5. Przerwania
27
• Transmisja sterowana przerwaniami
– do momentu zgłoszenia przerwania (sygnał
RDY odpowiadający gotowości urządzenia)
procesor zajmuje się czymś innym +
monitorowanie stanu INT
ArKom 2013 – 5. Przerwania
28
ArKom 2013 – 5. Przerwania
29
ArKom 2013 – 5. Przerwania
30