System obsługi przerwań sprzętowych.doc

(180 KB) Pobierz

System obsługi przerwań sprzętowych


199


Rozdział 3. System obsługi przerwań sprzętowych

Najbardziej aktywnym elementem komputera jest sam procesor (CPU). Niektóre z blo­ków funkcjonalnych, które składają się na jego otoczenie, wykonują operacje rozciąga­jące się w czasie na wiele cykli zegarowych. Urządzenia te nie wymagają udziału pro­cesora dla wykonania zleconych im zadań. Są to zwykle mniej lub bardziej niezależne kontrolery, często wyposażone we własny procesor. Na ogół wystarczy, by procesor zaprogramował rejestry sterujące tego urządzenia, wydając tym samym polecenie wy­konania operacji (odebranie znaku przez łącze szeregowe, zapisanie sektora na dysku).

Zainicjowana przez CPU operacja, jakkolwiek może trwać tysiące cykli zegarowych procesora, musi się kiedyś zakończyć (choćby błędem). Musi więc istnieć sposób poin­formowania procesora o tym fakcie. Istnieją tutaj zasadniczo dwie możliwości:

                       procesor okresowo wysyła zapytanie do urządzenia. Częstotliwość „odpytywa­
nia" jest ustalana przez wykonywany program i sposób stanowi kompromis po­
między szybkością reakcji procesora na zakończenie operacji a spowolnieniem
jego pracy nad zadaniem pierwszoplanowym. Kod procedury odpytywania musi
być zintegrowany z programem, co powiększa jego rozmiar. Zbyt częste odpyty­
wanie hamuje wykonywanie bieżącego programu. Zbyt długie przedziały czaso­
we między kolejnymi odpytywaniami i nierównomiernie napływający strumień
danych mogą spowodować, że część z nich zostanie utracona na skutek przepeł­
nienia nie opróżnianego bufora wewnętrznego obsługiwanego urządzenia;

                       urządzenie samo zgłasza wykonanie zadania. W najbliższym dogodnym dla siebie
momencie procesor przerywa realizację aktualnie wykonywanego programu by,
zapamiętawszy stan swoich rejestrów, przejść do realizacji procedury reagującej
na zgłoszenie urządzenia. Kod tej procedury na ogół nie znajduje się w ciele
programu, lecz w pamięci stałej komputera.


200              Anatomia PC

Metoda opisana w punkcie pierwszym znana jest też pod nazwąpolling i nie znajduje praktycznego zastosowania w komputerach PC. W drugim przypadku mówimy, że wystąpiło przerwanie (ang. intermpt) sprzętowe (gdyż pochodzące od urządzenia, a nie będące instrukcją programu). Ta forma sterowania przepływem danych jest w PC szeroko wykorzystywana. Znajduje ona zastosowanie w obsłudze urządzeń intensywnie wymieniających dane z pamięcią operacyjną, a więc przede wszystkim łącz szerego­wych i równoległych, kontrolerów dysków (twardych i elastycznych), kart sieciowych oraz urządzeń, które dostarczają dane w sposób nieregularny - klasycznym przykładem jest tutaj klawiatura komputera. Trudno sobie wyobrazić bardziej rozsądne podejście do obsługi klawiatury, niż reagowanie na naciśnięcie klawisza za pomocą obsługi przerwa­nia pochodzącego od sterownika klawiatury. W praktycznych zastosowaniach kompu­tera (szczególnie wyposażonego w myszkę) klawiatura może przecież godzinami nie wysyłać żadnego znaku.

W przypadku konieczności odczytania sektora z twardego dysku czas pozycjonowania głowic nad żądaną ścieżką i wyszukania żądanego sektora jest o dwa rzędy wielkości większy niż czas potrzebny na samo przesłanie zawartych w tym sektorze 512 bajtów. Procesor jest więc zaangażowany w tę operację tylko w jej małym ułamku czasowym.

Jak widać, kandydatów do tej formy obsługi mamy wielu. Procesor posiada jednak zwykle tylko jedno wejście INT sygnalizujące przerwanie sprzętowe. Ponadto archi­tektura PC zakłada, że każde przerwanie ma pewien priorytet, tzn. obsługa zgłoszeń uwzględnia nie tyle moment ich nadejścia, co raczej stopień ich ważności. Już samo to założenie wymaga rozróżniania zgłoszeń poprzez przyporządkowanie każdemu z urzą­dzeń oddzielnego kanału wejściowego.

Konieczne stało się więc zastosowanie specjalizowanego układu zajmującego się wy­łącznie ich obsługą. Funkcję kontrolera przerwań w komputerze XT pełni układ 8259A, zaś w modelach AT i PS/2 - dwa takie układy. W nowszych rozwiązaniach płyt głów­nych komputerów AT nie znajdziemy ich jako samodzielnych układów scalonych, gdyż wchodzą one przeważnie w skład jednego z układów wysokiej skali integracji, tworzą­cych „obudowę" procesora (ang. chipset). Ze względu jednak na konieczność zacho­wania zgodności architektury można się odwoływać do ich rejestrów.

Kontroler 8259A ma osiem linii wejściowych, które przyjmują sygnały zgłoszeń. Układy 8259A mogą być łączone w kaskady, powielając tym samym liczbę dostępnych wejść. Istnieje również (nie wykorzystywana w architekturze PC) możliwość sterowania zewnętrznym buforem pośredniczącym między układem a silnie obciążonymi magistra­lami systemowymi. Warto też wspomnieć, że w modelach IBM PC/XT i AT wejścia IRn reagują na zbocze impulsu przerwania, co stwarza niebezpieczeństwo interpretacji impulsu zakłócającego jako zgłoszenia przerwania. Inaczej zagadnienie to rozwiązano w architekturach EISA i MCA, gdzie wyzwalanie przerwań odbywa się poziomem napięcia. Możliwe jest tutaj dzielenie jednej linii zgłoszeń przez kilka urządzeń (ang. shared interrupt). System EISA rezygnuje dzięki temu z drugiego kontrolera 8259A.


System obsługi przerwań sprzętowych


201


Układ scalony 8259A

Układ scalony 8259A produkowany jest między innymi przez firmy Intel, AMD i Harris. Może pracować nie tylko w trybie zgodnym z procesorami 8088/86/286, ale również z 8080/8085. Został on zaprojektowany przed powstaniem procesora 80286. Rysunek 3.1. przedstawia schemat wyprowadzeń tego układu.


Rysunek 3.1.

Rozkład wyprowadzeń układu 8259A


CS WR RD D7 D6 D5 D4 D3 D2 D1 DO

CASO

CAS1

GND


 

1    ^

28

ZD vcc

2

27

Zł AO

3

26

ZD  INTA

4

25

13 IR7

5

24

Zł IR6

6

23

Zł IR5

1 8259A

22

21

Zł  IR4 Zł IR3

9

20

Zł IR2

10

19

Zł IR1

11

18

Zł IRO

12

17

Zł INT

13

16

Zł ŚP/EN

14

15

Zł CAS2


Wyprowadzenia układu 8259A opisano poniżej:

IRO-IR7         (Interrupt Reąuesi) — każde z tych wyprowadzeń może być

połączone z co najwyżej jednym urządzeniem, które - wymuszając wysoki poziom logiczny na przypisanym sobie wejściu — zgłasza żądanie obsługi przerwania. Wejście IRO posiada najwyższy, a IR7 najniższy priorytet;

~CS              (Chip Select) — wejście umożliwiające procesorowi wprowadzenie

układu w tryb programowania;

~WR              (Write) - procesor wymusza niski poziom logiczny na tym

wejściu, chcąc zapisywać dane do wewnętrznych rejestrów układu;

~RD              (Read) — procesor wymusza niski poziom logiczny na tym wejściu,

chcąc odczytywać dane z wewnętrznych rejestrów układu;

D7-DO              dwukierunkowa magistrala danych, służąca do komunikacji

między procesorem i kontrolerem (zapis i odczyt rejestrów wewnętrznych) oraz przekazywania procesorowi numeru przerwania;


202


Anatomia PC


 


CASO-CAS2 (Cascade) - lokalna magistrala adresowa, używana przy kaskadowym połączeniu układów 8259A. Umożliwia ona zaadresowanie do 8 takich układów;

-SP/EN              (Slave Program/Enable Buffer) — w buforowanym trybie pracy

pełni rolę wyjścia (EN) sterującego buforem zewnętrznym. W trybie nie buforowanym jest to wejście (~SP) konfigurujące układ jako Master (~SP=1) lub Slave (~SP=0);

INT              (Interrupt) - wyjście to połączone jest bezpośrednio z wejściem

INTR procesora, jeżeli układ 8259A pracuje jako Master. Układ pracujący w trybie Slave połączony jest swoim wyjściem INT z jednym z wejść IRn kontrolera Master,

-INTA              ...

Zgłoś jeśli naruszono regulamin