Urządzenia Wejścia/Wyjścia
1
Przedmioty prowadzone w ramach
Programu Rozwoju WSFiZ w Białymstoku realizowane są w ramach
Programu Operacyjnego Kapitał Ludzki, Priorytet IV Szkolnictwo wyższe i nauka, Poddziałanie 4.1.1
Wzmocnienie potencjału dydaktycznego uczelni, współfinansowanego ze środków
Europejskiego Funduszu Społecznego (POKL.04.01.01-00-030/08)
10.
Urządzenia Wejścia/Wyjścia
Spis treści
Programowa obsługa We/Wy ......................................................................... 4
Tryb bezpośredniego dostępu do pamięci ....................................................... 6
We/Wy sterowane przez przerwania .............................................................. 7
10.1
Wstęp
Urządzenia zewnętrzne są trzecim (po procesorze i pamięci) blokiem wchodzącym w
skład systemu komputerowego. Ich podstawowym zadaniem jest umożliwienie
użytkownikowi systemu wprowadzenie danych i programów oraz wyprowadzenie
wyników. Jak wiadomo z poprzednich rozdziałów procesor potrafi wykonywać programy
i przetwarzać dane jedynie wtedy, jeżeli są one zapisane w postaci binarnej. Dla
człowieka czytelną postacią programów, danych wejściowych i wyników jest postać
znakowa (tekstowa) oraz graficzna. Nic więc dziwnego, że wśród urządzeń zewnętrznych
można wyróżnić takie, które pracują w trybie znakowym oraz te, które pracują w trybie
graficznym. Najpopularniejszym urządzeniem znakowym jest klawiatura, a graficznym
monitor i drukarka. Urządzenie wyposażone w klawiaturę i monitor nazywane jest
terminalem i zazwyczaj za pośrednictwem takiego właśnie urządzenia operator
kontaktuje się z systemem komputerowym. Definiuje się też inne podziały, wśród
których jednym z najbardziej ogólnych jest podział według kryterium czytelności przez
operatora (lub jej braku) transmitowanej z/do urządzenia informacji. Te pierwsze
nazywane są operatorskimi urządzeniami We/Wy (ang. human-readable). Oprócz
dotychczas wymienionych należą do nich urządzenia wskazujące miejsce na ekranie
(mysz, pióro świetlne), zamieniające wskazany punkt na jego współrzędne (digitizer),
kreślące (ploter) czy akustyczne (syntetyzatory i analizatory głosu). Druga grupa
nazywana jest urządzeniami maszynowymi (ang. device-readable). Głównymi jej
przedstawicielami są wszelkiego rodzaju dyski (magnetyczne, optyczne).
Każde z urządzeń jest połączone z systemem za pośrednictwem sterownika (ang.
controller). Jego zadaniem jest przekształcenie sygnałów generowanych przez urządzenie
do standardu sygnałów systemu – najczęściej magistrali systemowej lub wejścia/wyjścia
Urządzenia Wejścia/Wyjścia
2
oraz odwrotnie, tj. sygnałów generowanych przez system na sygnały akceptowane przez
urządzenie (patrz rozdział 10.2). Wspomniane przekształcenie realizowane jest
zazwyczaj przez elektronikę i oprogramowanie sterownika (w zależności od konkretnego
rozwiązania sterowniki mogą być wyłącznie sprzętowe, wyłącznie software’owe albo
realizować rozwiązania mieszane). Uwzględniając powyższy fakt można powiedzieć, że
używane w tym rozdziale określenie „urządzenie We/Wy” dotyczy w zasadzie
sterownika tego urządzenia, gdyż to sterownik, a nie urządzenie komunikuje się
bezpośrednio z systemem komputerowym.
Rozpatrując współpracę urządzeń We/Wy z systemem komputerowym należy zwrócić
uwagę na wymagania funkcjonalne, które musi spełniać sprzęt i oprogramowanie, w
oparciu o które taka współpraca będzie realizowana.
Te wymagania to:
1. Zdolność adresowania różnych urządzeń We/Wy;
2. Zdolność przeprowadzenia transferu danych z systemu do urządzenie i odwrotnie;
3. Zdolność zsynchronizowania operacji We/Wy z wewnętrznymi operacjami systemu
komputerowego.
Każde z wymagań zostanie szczegółowo omówione.
10.2
Adresacja urządzeń We/Wy
Generalnie istnieją dwa sposoby połączenia urządzenia We/Wy z systemem
komputerowym. Pierwszy z nich (pokazany na rysunku 10.1 niżej) polega na użyciu
specjalnej magistrali, służącej wyłącznie do kontaktu z urządzeniami We/Wy. Magistrala
zawiera w sobie linie do transmisji adresów, danych i sygnałów sterujących.
Procesor
magistrala we/wy
Pamięć
(We/Wy)
0
(We/Wy)
1
....
(We/Wy)
n
Rysunek 10.1. System komputerowy z dwiema magistralami.
W takim systemie każde urządzenie We/Wy ma swój unikalny adres. Procesor wybiera
urządzenie We/Wy wpisując jego adres na linie adresowe, a dane – jeżeli transmisja jest
do urządzenia – na linie danych. Jeżeli zlecona była transmisja z urządzenia – to oczekuje
Urządzenia Wejścia/Wyjścia
3
on na tych liniach danych przesłanych przez urządzenie. System taki posługuje się
zestawem specjalnych rozkazów We/Wy, które przesyłane liniami sterowania wymuszają
określone działania urządzenia.
Drugi ze sposób polega na zastosowaniu jednej, wspólnej dla wszystkich urządzeń
We/Wy, procesora i pamięci magistrali systemowej. Tak jak poprzednio są w niej linie
do transmisji adresów, danych i sterowania (patrz rysunek 10.2 niżej). Urządzenia
We/Wy (a dokładniej rejestr tego urządzenia) z punktu widzenia procesora wyglądają
jak różne komórki pamięci. O tak podłączonych do systemu urządzeniach mówimy, że są
urządzeniami odwzorowanymi w pamięci, ponieważ ich adresy traktowane są tak jak
adresy komórek pamięciowych.
Pamięć
(We/Wy)
0
....
(We/Wy)
n
Szyna adresowa
Procesor
Szyna danych
Szyna sterowania
Rysunek 10.2. System komputerowy z jedną magistralą.
Transmisja danych odbywa się przy użyciu zwykłych rozkazów przesłania (np. MOV).
System ten wydaje się być dużo popularniejszy od opisanego wcześniej i dlatego w
pozostałej części rozdziału zakładać będziemy, że w opisywanym przez nas systemie
komputerowym urządzenia We/Wy podłączone są do niego właśnie w ten sposób.
10.3 Transmisja danych
Wyróżniamy dwa rodzaje transmisja danych z i do urządzeń We/Wy. Są to:
transmisja znakowa;
transmisja blokowa.
Z tą pierwszą mamy do czynienia wtedy, gdy w jej trakcie przesyłany jest jeden bajt.
Ta druga zachodzi wtedy, gdy jednorazowo przesyłany jest ciąg bajtów. Urządzenia
realizujące transmisję znakową nazywane są urządzeniami znakowymi. Są to najczęściej
urządzenia bardzo wolne (w porównaniu do czasu wykonywania rozkazu przez
procesor). Taka np. klawiatura pracuje z szybkością nie przekraczającą 10 znaków na
sekundę. Popularne drukarki potrafią transmitować z szybkością 100 znaków na sekundę.
Jest to wciąż dramatycznie wolniej od procesora, który w czasie drukowania 1 znaku
potrafi wykonać 10 000 rozkazów. Ta ogromna różnica w prędkości działania sprawia
Urządzenia Wejścia/Wyjścia
4
określone kłopoty, które zostaną omówione w dalszej części rozdziału, tak zresztą jak
problemy związane z realizacją transmisji blokowej.
Każde urządzenie We/Wy ma co najmniej dwa specjalne rejestry używane do
transmisji danych. Są to rejestr danych urządzenia i rejestr statusu urządzenia (DSR, ang.
device status register). Jeżeli rozpatrywane urządzenie jest urządzeniem wejściowym i
wyjściowym (tzn. transmituje dane z i do systemu) to będą to cztery rejestry: rejestr
danych wejściowych (RegIn), rejestr stanu wejścia, rejestr danych wyjściowych
(RegOut), rejestr stanu wyjścia. Dla systemu z urządzeniami We/Wy odwzorowanymi w
pamięci rejestry te mają swoje unikalne adresy, które niczym nie różnią się od adresów
komórek pamięci operacyjnej. W związku z tym transfer danych może być zlecony z
wykorzystaniem zwykłej instrukcji MOV, której jednym z parametrów będzie rejestr
danych urządzenia, np. przesłanie jednego bajtu z urządzenia do zmiennej Dana wygląda
następująco:
MOVB RegIn, Dana
Jak to już było wspomniane procesor chcąc skomunikować się z urządzeniem We/Wy
wysyła na szynę adresową jego adres.
Szyna adresowa
Szyna danych
Szyna sterowania
Dekoder adresu Rejestr danych (DSR) Rejestr statusu (RSU)
Interfejs we/wy
Rysunek 10.3. Architektura interfejsu we/wy.
Sterownik urządzenia wyposażony jest w dekoder adresu, który potrafi rozpoznać „swój”
adres (patrz rysunek 10.3 wyżej). Jeżeli tak się stanie, urządzenie przechodzi w stan
gotowości. Dalsze kroki zależą od przyjętego dla tego urządzenia modelu transmisji
danych. Istnieją trzy takie modele:
1. Programowe sterowania We/Wy;
2. Bezpośredni dostęp do pamięci;
3. We/Wy sterowane przez przerwania;
Zostaną one opisane w kolejnych podrozdziałach.
10.4
Programowa obsługa We/Wy
Pod pojęciem interfejsu we/wy zazwyczaj rozumie się zbiór sygnałów wymienianych
między sterownikiem a urządzeniem ale też oprogramowanie i sprzęt, który bierze udział
Urządzenia Wejścia/Wyjścia
5
w organizacji i realizacji transmisji. Składniki tak rozumianego interfejsu pokazane są na
rysunku 10.3 (patrz wyżej). Rejestr statusu w tym interfejsie służy zorganizowaniu
współpracy procesora z urządzeniem uwzględniającej występującą pomiędzy nimi dużą
różnicę szybkości działania. Chodzi o to , że procesor musi czekać ze zleceniem
transmisji danych do momentu, aż urządzenie będzie gotowe. O fakcie zajętości (czyli
braku gotowości) urządzenia może się on przekonać testując wartość odpowiedniego bitu
w rejestrze statusu (bit nazywany jest bitem gotowości). Często stosowanym
rozwiązaniem jest ustalenie, że jest to najstarszy (MSB) bit tego rejestru. Jeżeli wartość 1
tego bitu oznacza zajętość (brak gotowości) urządzenia, to testowanie tego bitu jest
tożsame z testowaniem znaku liczby zapisanej w rejestrze: ujemna wartość oznacza, że
urządzenie jest zajęte – w przeciwnym razie, że jest wolne (przypomnijmy, że w kodzie
U2 liczba ujemna ma 1 na MSB). Kod, który wykonuje takie testowanie wygląda
następująco:
Czekaj: TSTB DSR
; testuj rejestr statusu urządzenia
BGEQ Czekaj
; jeżeli nie jest gotowe skocz do etykiety Czekaj
Procesor wykonuje tą pętlę tak długo, aż zmieni sie wartość bitu gotowości z 1 na 0.
Wtedy powyższa pętla jest przerwana i procesor może przeprowadzić transmisję. Taki
sposób współpracy procesor – urządzenie określany jest terminem programowego
sterowania We/Wy (albo programowej obsługi We/Wy).
Program nadzorujący i przeprowadzający transmisję danych z/do rządzenia nazywany
jest sterownikiem tego urządzenia. Przykładowy fragment kodu sterownika
przeprowadzający w tym modelu transmisję jednego znaku umieszczonego w rejestrze
R0 przedstawiony jest poniżej:
Czekaj: TSTB DSR
; testuj rejestr statusu urządzenia
BGEQ Czekaj
; czekaj aż urządzenie będzie gotowe
MOVB R0, RegOut
; wyprowadź znak z R0
Odpowiadający mu schemat blokowy przedstawiony jest na rysunku 10.4.
Wybierz urządzenie We/Wy
Testuj status urządzenia
Nie
Tak
Gotowe?
Transmituj dane
Rysunek 10.4. Pętla oczekiwania w programowej obsłudze we/wy.
Przedstawiony sposób działania realizowany jest w małych, jedno-użytkownikowych
komputerach. Jest on nie do przyjęcia w dużych, wielo-użytkownikowych systemach
komputerowych. Wśród wielu tego powodów wymienić można groźbę realizacji pętli
Urządzenia Wejścia/Wyjścia
6
nieskończonej w przypadku awarii urządzenia, a przede wszystkim nieakceptowalnie
duże obciążenie procesora realizacją pętli oczekiwania, która to pętla może być w
przypadku terminala spowodowana np. przysłowiową „przerwą na kawę” operatora.
W praktyce nie jest aż tak źle. Typowe rozwiązanie stosowane dla programowego
trybu obsługi urządzeń We/Wy polega na okresowym (np. co 10 ms) generowaniu
przerwań (robi to system operacyjny) i sprawdzaniu stanu wszystkich urządzeń We/Wy
w pewnej spredefiniowanej kolejności. W trakcie tego sprawdzania wykonywany jest
przez pewien czas kod obsługi danego urządzenia, np. taki, jaki został podany wyżej w
tym podrozdziale. Jeżeli w tym czasie urządzenie nie zgłosi gotowości to system
przechodzi do obsługi kolejnego urządzenia. Jeżeli takich urządzeń jest dużo to
sumaryczny czas próby ich obsługi również jest duży, co istotnie spowalnia system.
Dlatego w następnej kolejności opisany zostanie tryb transmisji nie wymagający tzw.
aktywnego (tj. angażującego procesor) oczekiwania.
10.5
Tryb bezpośredniego dostępu do pamięci
W rozdziale 10.3 Transmisja danych zapowiedziany był tryb blokowy transmisji. Jest
to tryb, w którym realizowane jest przesyłanie dużych (liczących tysiąc i więcej bajtów)
bloków danych. Tego rodzaju transmisje realizowane są przez urządzenia dużo szybsze
niż znakowe, np. dyski magnetyczne, dla których konkretne wartości szybkości osiągają
rząd MB/sek. Dla przykładowej szybkości równej 4MB/sek czas transmisji 1 bajtu
wynosi 250 nsek. Powiedzmy od razu, że teoretycznie możliwe jest przesyłanie każdej
liczy bajtów znak po znaku. Słowo teoretycznie oznacza tu, że ilość czasu procesora na
realizację w tym trybie opisywanej transmisji jest nieakceptowalnie duża. Jednym ze
sposób rozwiązania tego problemu jest skonstruowanie specjalnego urządzenia do
przeprowadzania takich transmisji bez udziału procesora. Urządzenie takie nazywane jest
sterownikiem bezpośredniego dostępu do pamięci (DMA, ang. direct memory access).
Jego schemat został przedstawiony na rysunku 10.5 (patrz niżej). Jak z niego wynika
DMA wymaga użycia co najmniej czterech rejestrów.
Działanie sterownika DMA polega na wykonaniu następujących kroków:
1. Sterownik DMA za pośrednictwem linii „DMA żądanie” zgłasza do procesora
żądanie dostępu do magistrali (jest to rodzaj przerwania);
2. Jeżeli procesor nie potrzebuje magistrali do innych celów, wtedy:
a) Przesyła za pośrednictwem linii „DMA ack” sygnał zgody na zgłoszone
żądanie;
b) Ładuje licznik słów (lub bajtów), które mają być przesłane;
c) Ładuje rejestr adresu wstawiając do niego początkowy adres bloku
danych.
3. Sterownik DMA przejmuje sterowanie magistrali. Przetransmitowanie każdego
słowa (lub bajtu) powoduje zmniejszenie licznika o 1. Wyzerowanie licznika
powoduje zwrócenie sterowania nad magistralą procesorowi.
Urządzenia Wejścia/Wyjścia
7
DMA żądanie
Sterownik DMA
Sterowanie
Rejestr adresowy
DMA ack
Licznik słów
Bufor danych
Szyna adresowa
Procesor
Szyna danych
Szyna sterowania
Pamięć
Rysunek 10.5. Architektura sterownika DMA.
W czasie trwania transmisji blokowej procesor może przetwarzać rozkazy, których
realizacja nie wymaga dostępu do pamięci, co oznacza dodatkowe zyski czasowe ze
względu na zrównoleglenie przetwarzania.
Wadą opisanego trybu organizacji transmisji jest to, że jego zastosowanie ogranicza się
do szybkich urządzeń We/Wy.
10.6 We/Wy sterowane przez przerwania
Sterownik każdego urządzenia We/Wy ma możliwość zgłoszenia (asynchronicznie)
procesorowi sygnału tzw. przerwania. Procesor może reagować na takie zgłoszenia na co
najmniej dwa sposoby. Pierwszy z nich opisany został w poprzednim rozdziale (patrz
wyżej) i polegał na cyklicznym sprawdzaniu stanu wszystkich urządzeń zewnętrznych,
czy któreś z nich nie zgłosiło takiego właśnie przerwania. Drugi sposób polega na
możliwie natychmiastowej reakcji na zgłoszony sygnał o przerwaniu, a jego szczegóły
zostaną opisane w tym rozdziale.
Na początku przypomnijmy informację z rozdziału 7.4 Cykl rozkazu dotyczącą wyboru
przez procesor momentów reakcji na zgłoszone przerwania. Tymi momentami są chwile
zakończenia cyklu rozkazowego. W takich momentach procesor może zapamiętać swój
stan w sposób na tyle precyzyjny, żeby w sprzyjającym, innym momencie móc go
odtworzyć i kontynuować przerwany program. Tak więc, po stwierdzeniu zaistnienia
przerwania procesor wykonuje program zapamiętania swojego stanu, a następnie
wywołuje program obsługi przerwań.
W powyższym opisie używane były określenia takie jak: „urządzenie zgłasza
przerwanie” oraz „procesor stwierdza zaistnienie przerwania”. Są one o tyle
Urządzenia Wejścia/Wyjścia
8
nieprecyzyjne, że w rzeczywistości urządzenia We/Wy zgłaszają przerwania generując
sygnał nazywany INTR (ang. interrupt request) do układu nazywanego układem
przerwań. W zależności od przyjętej przez konstruktorów systemu koncepcji działania
takiego układu może on mieć mniej lub bardziej skomplikowaną strukturę (zagadnienia
te zostaną omówione w dalszej części rozdziału). Układ przerwań z kolei przekazuje
sygnał INTR do procesora. Procesor potwierdza fakt otrzymania przerwania wysyłając
do urządzenia, które je zgłosiło zwrotny sygnał nazywany INTA (ang. interrupt
acknowlege). Generalnie procesor wyposażony jest w szereg dodatkowych funkcji, które
używane są do koordynowania jego współpracy z urządzeniami We/Wy.
Po pierwsze w momencie zgłoszenia przerwania procesor może być w trakcie realizacji
cyklu rozkazowego, a w związku z tym może nie być w stanie uruchomić procedury
obsługi tego przerwania (będzie mógł to zrobić najwcześniej w fazie przerwania tego
cyklu). W tym celu został wprowadzony sygnał INTA. Do momentu jego nadejścia
urządzenie musi czekać np. z przesłaniem danych. Ponadto procesor, który rozpoczął już
procedurę obsługi innego przerwania musi mieć czas na jej dokończenie. W tym czasie
nie może on obsługiwać innych przerwań (do problemu tego powrócimy jeszcze później).
Dlatego została stworzona możliwość zablokowania układu przerwań implementowana
najczęściej jako specjalny rozkaz. Jego wykonanie blokuje linię INTR w procesorze.
Wykonanie innego specjalnego rozkazu może tą linię odblokować. Istnieje również
możliwość blokowania przez procesor wybranych sterowników urządzeń przez wysłanie
do systemu przerwań tzw. słowa – maski mającego tyle bitów ile jest sterowników.
Jedynka na bicie i-tym tego słowa powoduje, że pomimo zgłoszenia przez i-ty sterownik
przerwania nie będzie ono zarejestrowane w układzie przerwań.
Podstawowe zadania, które realizuje układ przerwań to:
1. Identyfikacja źródła powstania przerwania.
2. Zapewnienie właściwej kolejności obsługi urządzeń w przypadku, jeżeli kilka z
nich jednocześnie zgłosiło przerwanie.
3. Zgłoszenie przerwania procesorowi.
Układ przerwań jest sprzętową realizacją tak rozumianych zadań.
Znane są dwie metody identyfikacji urządzenia, które zgłosiło przerwanie:
o metoda przeglądania (ang. pooling method)
o metoda wektorowa (ang. vector method).
W metodzie przeglądania procesor po zakończeniu cyklu rozkazowego i po otrzymaniu
z układu przerwań sygnału o wystąpieniu przerwania (INTR) rozpoczyna w pewnym
określonym porządku przeglądanie statusu urządzeń We/Wy aż znajdzie urządzenie z
ustawionym bitem przerwania. Po znalezieniu pierwszego takiego urządzenia
przeglądanie jest przerywane. Odpytywanie może być zorganizowane programowo albo
sprzętowo. Niezależnie od przyjętego sposobu metoda przeglądania jest metodą wolną,
zwłaszcza jeżeli w systemie jest dużo urządzeń We/Wy.
W metodzie wektorowej to układ przerwań wykrywa i po zdekodowaniu przesyła
procesorowi (oprócz sygnału INTR) słowo zawierające numer lub adres jednego
urządzenia, które spowodowało przerwanie. Jest ono nazywane wektorem przerwań i jest
przez procesor używane do wyliczenia adresu procedury obsługi tego przerwania .
Urządzenia Wejścia/Wyjścia
9
W przypadku jednoczesnego zgłoszenia wielu przerwań należy ustalić kolejność, w
której obsługiwane będą urządzenia zgłaszające przerwania. Jest to równoznaczne z
przypisaniem tym urządzeniom priorytetów. W metodzie przeglądania problem ten
rozwiązany jest automatycznie przez wyznaczenie kolejności przeglądanie urządzeń:
urządzenia o wysokim priorytecie będą testowane przed urządzeniami o priorytecie
niskim. W metodzie wektorowej zadanie to spada na układ przerwań. Możliwych jest tu
co najmniej kilka rozwiązań, z których omówione zostaną trzy: łańcuchowy układ
przerwań (ang. daisy-chain), wielopoziomowy układ przerwań oraz układ przerwań z
koderem priorytetowym.
INTR
magistrala systemowa
Układ
Przerwań E1 Sterownik 1 E0 E1 Sterownik 2 E0 ∙ ∙ ∙ E1 Sterownik k E0
Rysunek 10.6 Układ przerwań typu łańcuchowego.
W układzie łańcuchowym jedynym zadaniem układu przerwań jest rejestracja
zgłoszenia przerwania i przesłanie sygnału INTR do procesora. Układ pokazany jest na
rysunku 10.6 (patrz wyżej).
W układzie łańcuchowym o priorytecie decyduje miejsce sterownika względem układu
przerwań: im bliżej układu położony jest sterownik tym wyższy jest jego priorytet. Że tak
jest, wynika z następującego rozumowania. Każdy sterownik ma wejście sterujące E1 i
wyjście sterujące E0. Podanie zera na wejście E1 blokuje możliwość zgłaszania przez
sterownik przerwania i powoduje generację zera na wyjściu E0, przez co blokuje się
kolejny sterownik. Podanie jedynki odblokowuje możliwość zgłaszania przerwań, a stan
wyjścia zależy od tego, czy dany sterownik zgłasza w tym momencie przerwanie, czy
nie. Jeżeli zgłasza, to wytwarza na swoim wyjściu zero i blokuje kolejne sterowniki w
łańcuchu. Jeżeli nie zgłasza – to generuje jedynkę, która umożliwia kolejnym
sterownikom zgłoszenie swojego przerwania. Sterowniki zgłaszają (jeżeli mogą)
przerwania zgodnie z potrzebami swoich urządzeń. Zgłoszone przerwanie (lub
przerwania) może spowodować przesłanie sygnału INTR do procesora i uaktywnienie
układ przerwań. Zależy to od bieżącego stanu układu przerwań. Generalnie może on być
w jednym z dwóch stanów: albo w stanie oczekiwania na przerwanie, albo w stanie
obsługi przerwania. W stanie oczekiwania generuje on na swoim wyjściu jedynkę, którą
przesyła na wejście E1 pierwszego sterownika. Wejścia układu są otwarte i może on
przyjmować przerwania. W stanie obsługi przerwania jego wejścia są zablokowane, a na
wyjściu jest zero, które blokuje łańcuch sterowników. Należy dodać, że sterownik,
któremu udało się zgłosić przerwanie po otrzymaniu sygnału INTA od procesora przesyła
na magistralę swój numer, tym samym pozwalając procesorowi zidentyfikować sprawcę
przerwania.
Urządzenia Wejścia/Wyjścia
10
Wielopoziomowy układ przerwań jest rozwinięciem idei układu łańcuchowego. Można
powiedzieć, że jest to kilka układów łańcuchowych, z których każdy ma swój priorytet.
Wewnątrz każdego z nich obowiązują prawa standardowego układu łańcuchowego.
Przykład 2-poziomowego układu pokazany jest na rysunku 10.7 (patrz niżej).
INTR
magistrala systemowa
Poziom 1
Sterownik 1 Sterownik 2 ∙ ∙ ∙ Sterownik k
Układ
Przerwań
Poziom 2 Sterownik k+1 Sterownik k+2 ∙ ∙ ∙ Sterownik k+n
Rysunek 10.7. 2-poziomowy układ przerwań.
W tego typu układzie sterowniki poziomu 2 będą mogły zgłosić przerwanie jedynie
wtedy, gdy nie zgłosi go żaden ze sterowników poziomu 1.
W układzie przerwań z koderem priorytetowym za wybór, ustalenie numeru,
zakodowania tego numeru i przesłanie go na magistralę odpowiedzialna jest elektronika
układu. Ona również wysyła sygnał INTR do procesora. Schemat takiego układu
pokazany jest na rysunku 10.8. Proszę zwrócić uwagę na strzałkę prowadzącą od układu
przerwań do magistrali systemowej. To tą drogą podawany jest po zakodowaniu numer
urządzenia, które spowodowało przerwanie.
INTR
magistrala systemowa
Układ
Przerwań
Sterownik 1 Sterownik 2 ∙ ∙ ∙ Sterownik k
Rysunek 10.8. Układ przerwań z koderem priorytetowym.