133
System obsługi przerwań sprzętowych
Gwoli ścisłości należy nadmienić, że istnieje też inna forma przekazywania informacji pomiędzy kontrolerem przerwań a procesorem tzw. polling. Końcówka - 1NTA układu 8259A nie może być wtedy połączona z wyjściem -INTA procesora (ściślej, kontrolera magistrali 8288), można więc to wejście wykorzystać inaczej. Wysłanie przez procesor rozkazu OCW3 z ustawionym bilem 2 oznacza skierowanie zapytania do kontrolera (polling). Układ 8259A odpowiada wystawieniem do tego samego portu, z którego otrzymał rozkaz OCW3, bajlu danych o następującej strukturze:
bit 7 |
X |
X |
X |
bit 2 |
bu i |
bit oj |
bit 7 1 = istnieje zgłoszenie oczekujące na obsługę,
0 - brak zgłoszeń,
bity 6-3 nie używane;
bity 2-0 zakodowany binarnie numer linii, na której oczekuje zgłoszenie.
Każdy rozkaz odczytu portu jest traktowany jako sygnał uzgodnienia (odpowiednik sprzętowego sygnału -INTA) od procesora.
Przerwanie to również zaliczane jest do grupy przerwań sprzętowych, bowiem nie można go wygenerować instrukcją kodu maszynowego. W przeciwieństwie do przerwań odbieranych liniami IRQ, które obsługiwane są przez dedykowany do tego celu kontroler 8259A, sygnał przerwania NMI kierowany jest bezpośrednio do końcówki NMI procesora Wysoki sygnał logiczny na tym wejściu prowadzi, natychmiast po zakończeniu wykonywania bieżącego rozkazu, do wywołania procedury INT 2. Pr/.eiwanie takie nie może być zamaskowane ani rozkazem cli procesora, ani przez operacje na rejestrze IMR kontrolera 8259A. Ma ono najwyższy priorytet ze wszystkich przerwań sprzętowych.
Wywołanie przerwania NMI w przypadku komputerów PC ma miejsce, po stwierdzeniu błędu parzystości pamięci operacyjnej, co należy uznać /a sytuację uniemożliwiającą dalsze użytkowanie komputera. Procedura obsługi INT 2 wyprowadza na monitor stosowny komunikat (Parity error al...) i wstrzymuje pracę systemu. Jedynym wyjściem w tym momencie jest ponowny restart systemu w nadziei, źe błąd parzystości spowodowany zosiał na przykład chwilową utratą styku lub przegrzaniem modułów RAM, a nie ich trwałym uszkodzeniem. Źródłem Lego przerwania może leż być sygnał generowany przez uszkodzony koprocesor arytmetyczny.