Documente Academic
Documente Profesional
Documente Cultură
ntreruperi
ntreruperea este produs de un eveniment extern microprocesorului,
adesea de o operaie de intrare/ieire sau de expirarea unei perioade de
timp.
Efectul ntreruperii:
suspendarea execuiei programului aflat n rulare,
transferarea controlului unei rutine dedicate tratrii ntreruperii
(interrupt handler - IH).
IH are sarcina de a efectua aciunile cerute de evenimentul extern care a
generat ntreruperea.
Tipuri de ntreruperi
ntreruperi vectorizate;
ntreruperi nemascabile;
ntreruperi nevectorizate;
ntreruperi cu relansare.
ntreruperi vectorizate
ntruct exist mai multe surse de ntreruperi, selectarea rutinei de
tratare presupune cunoaterea identitii sursei ntreruperii. Aceasta
se realizeaz prin execuia unui ciclu special, numit ciclu de
confirmare a acceptrii cererii de ntrerupere (interrupt acknowledge
cycle - INTA). Se utilizeaz magistrala extern a microprocesorului.
Evenimentul care a generat ntreruperea determin furnizarea ctre
CPU a unui cod de identificare. Acest cod, citit de ctre
microprocesor n ciclul de confirmare a acceptrii cererii de
ntrerupere, este utilizat de ctre CPU ca index al unei tabele
pstrate n memorie.
n general, ntreruperile vectorizate sunt mascabile.
Primirea cererilor de ntreruperi vectorizate se face printr-un singur
semnal fizic, deoarece detaliile privind sursa cererii se obin prin
ciclul de confirmare a acceptrii cererii de ntrerupere.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014
ntreruperi nemascabile
O astfel de cerere de ntrerupere suspend execuia programului
aflat n rulaj indiferent de funcia executat de acesta.
Exemple tipice de evenimente:
tendina de a iei din parametrii de funcionare normal a sursei
de alimentare;
detectarea unor erori n operaiile n conjuncie cu memoria (ex.
erori de paritate).
alte defecte majore ale sistemului
Semnalarea unei cereri de ntrerupere nemascabil se face printr-un
semnal de intrare distinct. Nu mai este necesar indicarea sursei
unei astfel de ntreruperi, ntruct ea se cunoate.
ntreruperi nevectorizate
ntreruperile nevectorizate se implementeaz prin acelai mecanism ca i
n cazul ntreruperilor nemascabile, adic exist linii specializate de intrare
pentru semnalarea cererilor.
Spre deosebire de cele nemascabile, ntreruperile nevectorizate pot fi
dezactivate prin program.
ntreruperi cu relansare
Suspendarea execuiei unui program se face, de regul, la
terminarea instruciunii curente pentru a se reduce la minimum
posibil informaiile ce se salveaz n conjuncie cu programul
ntrerupt.
Sunt cazuri cnd ntreruperea este declanat de o situaie care
mpiedic nsi terminarea execuiei corecte a unei instruciuni, caz
n care cererea de ntrerupere trebuie servit nainte de terminarea
instruciunii.
Soluie: proiectarea instruciunilor astfel nct s fie posibil
ntotdeauna repornirea execuiei lor, indiferent de momentul la care a
survenit ntreruperea.
Timpul de laten
Timpul cerut de servirea unei cereri de ntrerupere depinde de operaiile
necesare tratrii evenimentului extern care a cauzat ntreruperea, precum
i de ntrzierea ntre activarea cererii i nceputul activitii rutinei de
tratare. Aceast ntrziere este o caracteristic a microprocesorului i se
numete timp de laten.
Pentru a putea evalua timpul de laten a unui microprocesor trebuie
examinata secvena de operaii necesare pentru comutarea de la
programul ntrerupt la rutina de servire a ntreruperii.
Operaiile necesare n acest scop sunt:
salvarea n stiva a indicatorilor de condiii (continutul registrului
EFLAGS si a IP:CS);
execuia ciclului de confirmare a acceptrii cererii de ntrerupere.
Prioriti
Ordinea de prioritate este, n general, urmtoarea:
ntreruperi cu relansare (intreruperi interne) - ele au prioritatea
maxim, deoarece sunt asociate unor evenimente care nu pot
atepta terminarea instruciunii curente pentru a fi servite;
ntreruperi nemascabile - ntreruperile din aceast clas sunt
prioritare celor vectorizate sau nevectorizate, ntruct
evenimentele care le determin necesit o servire rapid i
ntreruperile nu pot fi mascate;
ntreruperi vectorizate;
ntreruperi nevectorizate.
ntreruperi vectorizate
Pooled vs. Interrupt Controller
10
11
Semnificatia pinilor
D0-D7 linii de date conectate la magistrala de date. Transfera
cuvintele de comanda, informatii de stare si numarul tipului
intreruperii
INT, INTA\ ofera un mecanism de tip handshake prin care
circuitul trimite microprocesorului o cerere de intrerupere si
primeste confirmarea acceptarii acesteia. Pe durata unui ciclu
magistrala INTA, semnalul INTA\ are 2 pulsuri 0 logic prin care
semnaleaza ca:
a. cererea a fost confirmata;
b. trebuie sa trimita pe magistrala de date numarul
intreruperii active cu cea mai mare prioritate.
A0 selectia registrului intern care este accesat in timpul
operatiilor de citire/scriere;
IR0-IR7 cereri de intrerupere;
12
13
Una sau mai multe linii IRQ trec n 1 logic setnd biii
corespunztori n registrul IRR
8259 trimite un semnal INT ctre CPU
CPU rspunde cu un puls pe linia de INTA
La primirea pulsului de INTA biii corespondeni din ISR sunt setai
i cei din IRR resetai
CPU iniiaz un al doilea puls INTA n urma cruia 8259 elibereaz
pe magistral coninutul lui ISR
La sfritul ciclului magistral toi biii din ISR sunt resetai
14
15
16
17
18
Capcane (Traps)
Capcana (trap) este un mecanism care produce
apelarea automat a unei proceduri. Spre deosebire
de o ntrerupere, capcana este activat, explicit sau
implicit, de ctre o aciune efectuata de ctre
programul aflat n rulaj (ntreruperi software).
Capcanele sunt utilizate pentru tratarea unor condiii
de excepie, adesea anormale, care apar n cursul
existenei unui program, sau pentru activarea unor
proceduri speciale, cum ar fi rutine ale sistemului de
operare.
19
Tipuri de Capcane
a) capcane activate ntotdeauna;
b) capcane activate/dezactivate prin program;
c) capcane solicitate explicit prin program.
20
10
21
22
11
23
Manipularea Capcanelor
Aciunile cerute de manipularea capcanelor sunt similare cu cele
executate la apariia unei ntreruperi:
24
12
Prioriti
Apariia simultan de ntreruperi i capcane ridic probleme
legate de selectarea celei creia s i se acorde atenie.
Ca i ntreruperile, capcanele sunt servite, de regul, la
terminarea instruciunii curente. Unele capcane (cum este page
fault trap) trebuie servite imediat, ntrerupnd execuia
instruciunii curente. Ele pot fi considerate similare cu
ntreruperile cu relansare.
Dei fiecare microprocesor are propriile sale reguli de prioritate
privind capcanele, se pot folosi urmtoarele criterii generale:
capcanele cu relansare au prioritatea maxim, ca i ntreruperile cu
relansare;
celelalte capcane au prioriti superioare ntreruperilor mascabile,
deoarece ele sunt folosite pentru detectarea erorilor i strilor anormale,
deci necesit atenie imediat;
ntreruperile nemascabile pot ntrerupe rutinele de tratare a capcanelor
i a ntreruperilor.
25
Instrumente de Depanare
26
13
27
28
14
29
Capcana de Traseu
Majoritatea microprocesoarelor sunt prevzute cu o capcan
special, numit trace trap - capcan de traseu. Ea permite att
execuia pas cu pas, ct i realizarea de trasee ale programului.
Capcana se activeaz (dezactiveaz) prin intermediul unui indicator
de condiie special, accesibil prin program.
Cnd este activ, capcana de traseu lanseaz n execuie rutina de
tratare dup ultima instruciune executat. Desigur, capcana este
dezactivat automat pe durata execuiei rutinei de tratare n scopul
evitrii generrii unei bucle infinite.
Rutina de tratare a capcanei de traseu permite programatorului s
afieze un set de informaii (starea CPU, locaii de memorie) care s
nlesneasc depanarea programului. Aceeai rutina permite
memorarea ntr-un tampon al traseului a datelor despre instruciunea
executat.
30
15
31
32
16
33
34
17
35
36
18
37
38
19
39
40
20
41
42
21
Prelucrarea
intreruperilor in mod
real la 80386DX
La sfarsitul instructiunii curente
microprocesorul testeaza.
intai intreruperile interne
sau exceptiile,
apoi NMI, si,
la final, INTR pentru a
determina daca a aparut
vreo intrerupere externa.
43
44
22
45
46
23
47
48
24
49
50
25
51
52
26