Sterowanie programem – skoki
Transkrypt
Sterowanie programem – skoki
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. X IR P A PC PC Skok adresowany bezpośrednio Skok adresowany pośrednio JMP adres 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 Pamięć Odkładanie danych na stos: M(SP) SP dana SP-1 (wzrost stosu) SP Wierzchołek stosu Zdejmowanie danych ze stosu: SP rejestr Dno stosu SP+1 M(SP) 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 INTR Kontroler przerwań INTA Mikroprocesor I1 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 Pamięć Mechanizm translacji numeru przerwania na adres z tablicy wektorów przerwań Adr1. Adr2. Tablica w.p. Adr3. … Adres Bazowy tablicy + Numer przerwania MAR Procedura Obsługi przerwania 19 Przerwania Pamięć Adr1. Adr2. Tablica w.p. Mechanizm translacji numeru przerwania na adres z tablicy wektorów przerwań Adr3. … 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 Wykonanie programu Zgłoszenie o wyższym priorytecie 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 INTR I0 INTA Kontroler przerwań I1 Numer przerwania I2 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