Architektura Systemów Komputerowych Sterowanie programem skoki Przerwania 1
Sterowanie programem - skoki Kolejność wykonywania instrukcji programu jest zazwyczaj zgodna z kolejnością ich umiejscowienia w pamięci komputera. Możliwa jest zmiana tej kolejności poprzez przeniesienie sterowania w inne miejsce w programie. Przeniesienie sterowania jest nazywane skokiem i polega na wpisaniu nowej wartości do licznika rozkazów PC. 2
Sterowanie programem - skoki Klasyfikacja skoków Absolutne Bezwarunkowe Względne Warunkowe Skok bezwarunkowy jest wykonywany zawsze po napotkaniu instrukcji skoku. Wykonanie skoku warunkowego jest uzależnione od stanu wybranego znacznika z tzw. rejestru stanu. 3
Skoki bezwarunkowe - absolutne Skok bezwarunkowy polega na wpisaniu nowej wartości do licznika rozkazów po napotkaniu instrukcji skoku. IR P A PC X PC Skok adresowany bezpośrednio JMP adres Skok adresowany pośrednio JMP (X) 4
Skoki warunkowe Warunkiem skoku jest wartość wybranego znacznika. Wartość znaczników w rejestrze stanu jest ustalana w wyniku ostatniej operacji arytmetycznej lub logicznej. IR ALU przemieszczenie 1 + PC Rejestr stanu C Z V N 5
Skoki warunkowe Znaczenie znaczników: C przekroczenie zakresu liczb bez znaku (NBC) Z zerowy wynik operacji V przekroczenie zakresu liczb ze znakiem (U2) N wynik ujemny Rejestr stanu C Z V N Mechanizm skoku warunkowego: Jeśli warunek_spełniony to PC = PC + przemieszczenie warunek - C, Z, V, N, not(c), not(z), not(v), not(n) Przykłady: JC d, JNZ d 6
Skoki do procedur Procedura część programu wykonywana wielokrotnie, wywoływana z dowolnego miejsca w programie. Procedura odpowiada np. funkcji w języku C. Przykład: Int silnia(n) { definicja funkcji } x=silnia(6); If( silnia(a)>1000) 7
Skoki do procedur Powrót z procedury do miejsca jej wywołania wymaga czasowego przechowania adresu instrukcji następnej po instrukcji wywołania procedury, tzw. adresu powrotu. Adresy powrotu są przechowywane w strukturze danych zwanej stosem. Stos jest adresowany rejestrem z grupy SFR, nazywanym wskaźnikiem stosu (SP). 8
Skoki do procedur Idea stosu Adres wierzchołka stosu SP Pamięć Wierzchołek stosu Odkładanie danych na stos: M(SP) dana SP SP-1 (wzrost stosu) Zdejmowanie danych ze stosu: SP SP+1 rejestr M(SP) Dno stosu Danymi mogą być adresy powrotu. 9
Skoki do procedur Operacje wykonywane podczas wywołania procedury i powrotu z procedury Skok do procedury: PC PC + 1 M(SP) PC SP SP-1 PC adres procedury Powrót z procedury: SP SP+1 PC M(SP) 10
Skoki do procedur Przepływ sterowania podczas wykonania programu z procedurami Pamięć Program główny 1. Wywołanie proc. 2. Wywołanie proc. Procedura Instrukcja powrotu 11
Przerwania Przerwanie jest chwilowym zaprzestaniem wykonywania programu przez mikroprocesor w celu wykonania procedury obsługi urządzenia zgłaszającego żądanie przerwania 12
Przerwania Przerwanie jest inicjowane przez urządzenie zewnętrzne względem mikroprocesora, zgłaszające potrzebę jego obsługi. Żądania obsługi są zdarzeniami asynchronicznymi względem programu. Mechanizm przerwań zwalnia mikroprocesor z konieczności ciągłego obserwowania sygnałów żądań obsługi. 13
Przerwania Mechanizm obsługi przerwania Zgłoszenie żądania przerwania Wykonanie programu Obsługa przerwania Kontynuacja wykonania programu czas 14
Przerwania Identyfikacja przerwań I0 Kontroler przerwań I1 INTR INTA Mikroprocesor I2 Numer przerwania jest przesyłany po magistrali danych 15
Przerwania Sekwencja operacji podczas przyjęcia przerwania Zgłoszenie żądania przerwania przez urządzenie peryferyjne Wysłanie żądania przerwania do mikroprocesora przez kontroler przerwań Potwierdzenie przyjęcia przerwania przez mikroprocesor Przesłanie numeru przerwania do mikroprocesora przez kontroler 16
Przerwania Przyjęcie i obsługa przerwania Przyjęcie i wykonanie obsługi przerwania przypomina procedurę wywoływaną z programu. Różnica polega na sposobie przekazania adresu procedury: adres jest pobierany z tzw. tablicy wektorów przerwań adresowanej numerem przerwania. 17
Przerwania Operacje wykonywane podczas przyjęcia i powrotu z przerwania Przyjęcie przerwania skok do procedury obsługi: PC PC + 1 M(SP) PC SP SP-1 PC M(Tablica wektorów przerwań(n)) Powrót z procedury obsługi przerwania: SP SP+1 PC M(SP) 18
Przerwania Mechanizm translacji numeru przerwania na adres z tablicy wektorów przerwań Pamięć Adr1. Adr2. Tablica w.p. Adr3. Adres Bazowy tablicy Numer przerwania + MAR Procedura Obsługi przerwania 19
Przerwania Pamięć Adr1. Adr2. Tablica w.p. Adr3. Mechanizm translacji numeru przerwania na adres z tablicy wektorów przerwań MBR PC Procedura obsługi przerwania 20
Priorytet przerwań Priorytet przerwań decyduje o tym które przerwanie jest przyjmowane i obsługiwane jako pierwsze. Konieczność wprowadzenia priorytetu została podyktowana różną szybkością działania urządzeń zewnętrznych wymagających obsługi oraz czasem, jaki dane urządzenie może poczekać na obsługę. 21
Priorytet przerwań Wykonywanie procedury obsługi przerwania o niższym priorytecie jest przerywane przez żądanie o priorytecie wyższym. Zgłoszenie o niższym priorytecie Zgłoszenie o wyższym priorytecie Wykonanie programu Obsługa 1 Obsługa 2 O. 1, cd czas 22
Kontroler przerwań Kontroler przerwań obserwuje stan linii zgłoszeń i przesyła zgłoszenie żądania do mikroprocesora po wystąpieniu żądania na jednej z nich I0 Kontroler przerwań I1 I2 INTR INTA Numer przerwania 23
Kontroler przerwań Kontroler przerwań jest układem cyfrowym, programowalnym. Pozwala na: Indywidualne aktywowanie źródeł przerwań Zaprogramowanie priorytetu poszczególnych przerwań Przypisanie numerów przerwań do poszczególnych linii zgłoszeń 24