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

Podobne dokumenty