180 likes | 325 Views
Odpytywanie - Polling. Program czeka na nadejście danych z urządzenia i nie może wykonywać innych zadań. Urządzenie zewnętrzne dostarcza dane w trudnym do przewidzenia momencie, ale program jest gotowy w każdej chwili na ich odbiór. Program odbiera dane z urządzenia.
E N D
Odpytywanie - Polling Program czeka na nadejście danych z urządzenia i nie może wykonywać innych zadań. Urządzenie zewnętrzne dostarcza dane w trudnym do przewidzenia momencie, ale program jest gotowy w każdej chwili na ich odbiór Program odbiera dane z urządzenia ... i natychmiast musi się nimi zająć ... aby jak najszybciej być gotowym na odbiór następnych danych. Ale nie wiadomo kiedy nadejdą dane, więc program znów czeka i nie może wykonywać innych zadań.
Sytuacja wyjątkowa / przerwanie Exception / Interrupt Program nie czeka na nadejście danych z urządzenia i może wykonywać inne zadania. Urządzenie zewnętrzne dostarcza dane w trudnym do przewidzenia momencie, ale signalizuje ten fakt do programu i jest on gotowy na ich odbiór właśnie wtedy, gdy dane się pojawiają. Program odbiera dane z urządzenia ... i musi się nimi zająć ... aby po chwili powrócić do poprzednio wykonywanych zadań.
Sytuacje wyjątkowe μP Motorola 680x0 • Sytuacja wyjątkowa - odstępstwo od normalnego wykonywania • ciągu instrukcji programu w celu obsługi nieprzewidzianego • lub/i krytycznego zdarzenia w systemie mikroprocesorowym • Sytuacje wyjątkowe powstają na skutek: • zdarzenia powstałego na zewnątrz mikroprocesora • nieprzewidzianego błędu podczas wykonywania programu • celowego wywołania za pomocą specjalnych instrukcji Sytuacje wyjątkowe Exceptions Sprzętowe Hardware Programowe Software np. inicjalizacja systemu, błąd dostępu do pamięci, sygnały z urządzeń zewnętrznych ... np. nieistniejący kod instrucji, dzielenie przez 0, praca krokowa, instrukcje TRAP #n ...
Sprzętowe Hardware Inicjalizacja Reset Przerwania Interrupts Błąd magistrali Bus error Wektorowe Vectored Autowektorowe Autovectored Normalne Normal Nieautentyczne Spurious Niezainicjowane Uninitialized Normalne Normal Niezainicjowane Uninitialized
Reset - sytuacja wyjątkowa polegająca na rozpoczęciu pracy systemu (np. po włączeniu zasilania lub przycisku Reset). Bit S i T rejestru SR ustawiane są na 1 i 0, a maska przerwań na 111, a następnie z pamięci ładowane są zawartości rejestrów: SP (spod adresu 0) i PC (spod adresu 4) Bus error - sytuacja wyjątkowa występująca przy próbie odwołanie się procesora do obszaru pamięci nieistniejącego fizycznie w systemie. Może być wykorzystywane do realizacji pamięci wirtualnej. Interrupt - sytuacja wyjątkowa służąca do komunikacji z urządzeniami zewnętrznymi, jeśli dane z urządzenia napływają bardzo wolno lub/i w niemożliwych do przewidzenia momentach. Przerwania wektorowe polegają na tym, że urządzenie identyfikuje się do procesora podając, po zgłoszeniu i przyjęciu przerwania, swój unikalny numer. Przerwania autowektorowe polegają na tym, że identyfikacja urządzenia do procesora, po zgłoszeniu i przyjęciu przerwania, określona jest bezpośrednio na podstawie priorytetu zgłaszającego się przerwania
Normal interrupt - przerwanie, którego cykl zgłoszenia, przyjęcia i identyfikacji przebiega bez zakłóceń. Spurious interrupt - przerwanie, które zostaje zgłoszone i przyjęte, ale procesor nie otrzymuje jego numeru (np. z powodu przerwania sygnalizacji przerwania przez urządzenie lub jego uszkodzenia) Uninitialized - przerwanie, które może być zgłoszone przez niezainicjowane urządznie. Przerwanie może być wówczas zgłoszone i przyjęte, ale jako numer przesyłana jest wartość $0F, pozwalająca na odpowiednia reakcję systemu
Programowe Software Śledzenie Trace Błędy Errors Koprocesor Coprocessor Wywołane przez instrukcje Programmer initiated TRAPV TRAPcc (68020+) Błąd adresu Address errors TRAP #n Naruszenie uprzywilejowania Privilage violation CHK, CHK2 (68020+) Line 1010 emulator Nieistniejąca instrukcja Illegal instruction Line 1111 emulator Dzielenie przez zero DIVU, DIVS
Trace - sytuacja wyjątowa wywoływana po wykonywaniu każdej instrucji programu użytkowanika, pozwalająca na uruchaniamia programów w trybie pracy krokowej. Oczywiście program obsługi tej sytuacji (już w trybie nadzorcy) przerywany nie jest. Address error - sytuacja wyjątowa wywoływana przy próbie odwołania do 16 lub 32 bitowych danych z pamięci spod nieparzystego adresu np..: LEA $40000,A0 MOVE.B (A0)+,D0 MOVE.W (A0)+,D0 *błąd adresu !!! Privilage violation - sytuacja wyjątowa wywoływana przy próbie wykonywania przez program w trybie użytkownika instrucji zastrzeżone dla trybu nadzorcy Illegal instruction - sytuacja wyjątowa wywoływana przy próbie wykonywania instrucji, której kod nie odpowiada żadnej istniejącej instrukcji DIVS,DIVU / Divide by Zero - sytuacja wyjątowa wywoływana przy próbie wykonania instrukcji dzielenia DIVS, DIVU, jeśli dzielnik jest równy 0.
TRAPV, TRAPcc - sytuacja wyjątowa wywoływana przez instrukcję TRAPV (ogólnie TRAPcc dla 68020+), jeśli testowany warunek cc jest spełniony. TRAP #n - sytuacja wyjątowa wywoływana przez instrukcję TRAP #n (n=0..15). Pozwala na poszerzenie listy instrukcji o 16 nowych pozycji. Wykorzystywane np. do pisania programów przenośnych pomiędzy różnymi systemami (z tym samym procesorem ale różnymi urządzeniami we/wy) CHK, CHK2 - sytuacja wyjątowa wywoływana przez instrukcję CHK (i CHK2 dla 68020+), która porównuje operand z podaną watrością, ( CHK <ea>,Dn ). Jeśli operand w Dn.W jest wartością spoza zakresu 0 - <ea>, wywoływana jest sytuacja wyjątkowa. Line 1010 (A) emulator - sytuacja wyjątowa wywoływana przy próbie wykonania instrukcji, której kod zaczyna się od wzorca 1010. Pozwala to na zdefiniowanie grupy nowych instrucji, np. emulujących możliwości nowszych procesorów tej rodziny. Line 1111 (F) emulator - sytuacja wyjątowa wywoływana przy próbie wykonania instrukcji, której kod zaczyna się od wzorca 1111. Wykorzytywana zwykle do emulacji instrukcji koprocesora arytmetycznego w systemie z procesorem 68000.
Sytuacja wyjątkowa Program w trybie użytkowanika Program w trybie nadzorcy Normalne wykonywanie programu Wykonywanie procedury obsługi sytuacji wyjątkowej Powrót z procedury obsługi • Obsługa sytuacji wyjątkowej: • Dokończenie aktualnie wykonywanej instrukcji, • Wewnętrzne wygenerowanie numeru sytuacji wyjątkowej, rozstrzygnięcie priorytetu, • Odłożenie na stos zawartości rejestrów procesora (zawsze SP i PC, dodatkowe rejestry odkładane są w zależności od typu sytuacji wyjątkowej) tzw. ramka stosu, • Odczytanie z tablicy wektorów adresu procedury obsługi dla danego numeru sytuacji wyjątkowej, • Skok, wykonanie procedury obsługi i powrót z odtworzeniem ramki stosu.
Priorytety sytuacji wyjątkowych Sytuacja wyjątkowa o priorytecie niższym może być przerwana przez sytuację o priorytecie wyższym (np. obsługa błędu programowego może być przerwana przez przerwanie zewnętrzne). Priorytet Sytuacja wyjątkowa najwyższy Reset Bus error Addres error średni Trace Interrupt Illegal instruction Privilege violation najniższy TRAPcc, TRAP #n Divide by Zero, CHK
Przerwania - Interrupts interrupt MASK I2 I1 I0 interrupt REQUEST IPL2 IPL1 REQUEST > MASK ? 0..7 0..7 IPL0 Status Register Linie zewnętrzne mikroprocesora Przerwanie jest przyjęte jeśli priorytet zgłaszanego przerwania (IPL2-0) jest większy od wartości maski przerwań (I2-0) Przerwanie o priorytecie (IPL2-0) równym 7 nazywane jest przerwaniem niemaskowalnym i jest zawsze przyjęte przez mikroprocesor.
Tablica wektorów sytuacji wyjątkowych - Vector Table 256 x 4B = 1kB