Sunteți pe pagina 1din 26

Agenda

Caracteristici generale ale intreruperilor si capcanelor


ntreruperi si exceptii la 80386DX

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

Tipuri de ntreruperi
ntreruperi vectorizate;
ntreruperi nemascabile;
ntreruperi nevectorizate;
ntreruperi cu relansare.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

ntreruperi vectorizate
Pooled vs. Interrupt Controller

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

10

Interfata intreruperilor externe mascabile


INTR cerere de intrerupere : "1" activa.
INTA confirmare a cererii de intrerupere
INTR trebuie dezactivat inaintea terminarii executiei
rutinei de intrerupere, altfel aceeasi intrerupere poate
fi confirmata a doua oara.
Cand semnalul INTR a fost recunoscut,
microprocesorul incepe ciclul de magistrala INTA
Sunt generate 2 pulsuri de INTA :

Primul puls semnaleaza circuitului de


intreruperi confirmarea acceptarii cererii si sa
se pregateasca sa trimita numarul tipului

Al doilea puls, circuitul de intreruperi pune pe


magistrala de date numarul tipului de
intrerupere
READY insereaza stari de asteptare in ciclul
magistrala;
Linii de adresa - selecteaza circuitul de intreruperi
sau registrele interne ale acestuia;
LOCK : nici un alt circuit nu poate prelua controlul
magistralei sistem pana cand secventa ciclului
magistrala INTA nu s-a terminat.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

11

Circuit programabil pentru intreruperi 8259A

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;

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

CAS 0-2 - interfata cascada intr-o configuratie


master/slave. O configuratie master/slave
extinde de la 8 la maxim 64 numarul liniilor IR.
SP\/EN\ - (input slave program/ output enable)
linie multifunctionala. Ca intrare SP\ trebuie sa
fie 1 pentru master si 0 pentru slave. Dupa
primul INTA circuitul master trimite codul CAS
(3 biti) care identifica circuitul slave cu cea mai
mare prioritate ca sa fie servit. Fiecare slave
compara codul CAS. Cand se potriveste,
circutul slave pune pe magistrala de date
numarul intreruperii.

12

Circuit programabil pentru intreruperi 8259A

8259A arhitectura interna


Data Bus Buffer si Read/Write Logic ofera
accesul la registrele interne.
Interrupt Masking Register (IMR) activeaza
sau mascheaza cererile de intrerupere..
M0-M7 este 1 -mascat, altfel 0 activat.
Interrupt Request Register (IRR)
pastreaza starea curenta a cererilor de
intrerupere. Pentru fiecare intrerupere cate
un bit. 1 activ ; 0 inactiv.
Priority Resolver Register identifica
intreruperea cu cea mai mare prioritate pe
baza unei scheme de prioritati stabilita prin
software.

Interrupt Service Register (ISR) pastreaza


intreruperea in curs de servire.
Intreruperea cu cea mai mare prioritate
este memorata aici in timpul primului puls
INTA\ . Starea acestui registru poate fi
citita de catre microprocesor.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

13

Desfurarea unei secvene de ntrerupere (ntrun sistem cu 8086)


1.
2.
3.
4.
5.
6.

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

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

14

Magistrala de Adrese / Date

Conectare n cascad 22 niveluri de intreruperi

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

15

Conectarea n cascad 22 niveluri de intreruperi

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

16

Programarea lui 8259A

Programarea circuitului se realizeaza prin


cuvinte de comanda de initializare si de
operare.
Cuvintele de initializare (ICW1, ICW2, ICW3 si
ICW4) sunt incarcate in registrele interne ale
circuitului intr-o secventa de initializare
predefinita.
Comenzile de operare permit microprocesorului
sa varieze diferite moduri de operare asociate
modului de baza definit la initializare.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

17

Programarea lui 8259A


Comenzile se realizeaza prin executia instructiunilor
OUT sau MOV.
Cand adresa asignata circuitului 8259A este pe
magistrala de adrese se activeaza pe 0 logic
intrarea CS\. Acest semnal activeaza unitatea
read/write logic a circuitului si datele de pe liniile D0D7 sunt scrise in registrul de comanda din blocul
control logic in mod sincron cu semnalul WR\.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

19

Tipuri de Capcane
a) capcane activate ntotdeauna;
b) capcane activate/dezactivate prin program;
c) capcane solicitate explicit prin program.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

20

10

a) Capcane activate ntotdeauna


Se asociaz cu un eveniment de tip eroare, indiferent
de operaia efectuat de ctre CPU;
De aceea, nu exist mijloace de dezactivare a acestui
tip de capcan.
Exemple tipice:
 tentativa de a executa o instruciune inexistent;
 tentativa de a executa, dintr-un regim neprivilegiat,
o instruciune rezervat regimului privilegiat;
 capcanele n conjuncie cu gestiunea memoriei
externe.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

21

b) Capcane Activate/Dezactivate Prin Program


 Evenimentele care reprezint sau nu o condiie de excepie sau
anormal, n funcie de aciunile specifice efectuate de ctre program.
 Capcanele pot fi activate (dezactivate) de programul nsui, dup cum
este necesar sau nu a detecta aceste situaii.
 Standardul IEEE 754 prevede ca excepiile generate de operaiile cu
numere cu virgul mobil sau de conversie pot genera o capcan numai
n urma unei activri de ctre program.
 Un alt exemplu: capcana utilizat pentru a detecta tentativa de execuie
a unei operaii cu operanzi cu virgul mobil n absena unitii
aritmetice dedicate acestor operaii. n aceste cazuri capcana se
dezactiveaz cnd configuraia hardware include procesorul matematic.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

22

11

c) Capcane Solicitate Explicit Prin Program


 Nu se folosesc, n mod obinuit, pentru detectarea condiiilor anormale,
dar reprezint un mijloc de activare a execuiei unor rutine speciale, de
cele mai multe ori acestea fiind funcii ale sistemului de operare.
 Sunt astfel organizate nct sa fie posibil activarea lor la apariia unor
capcane. Operaiei i sunt dedicate instruciuni speciale, numite adesea
apeluri de sistem (system-call instructions), dat fiind menirea lor
principal de activare a rutinelor sistemului de operare.
 Cnd se execut o astfel de instruciune se activeaz capcana
corespunztoare.
 Prin asocierea unui parametru, aceeai instruciune poate activa
capcane diferite.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

23

Manipularea Capcanelor
 Aciunile cerute de manipularea capcanelor sunt similare cu cele
executate la apariia unei ntreruperi:

 se salveaz n stiva indicatorii de condiie i contorul


programului (CS:IP).
 se execut saltul la rutina de tratare a capcanei.
 Informaia despre rutina de tratare este memorat ntr-un vector stocat
ntr-o zona de memorie bine precizat; n anumite cazuri capcanele i
ntreruperile folosesc n comun acelai vector.
 De regul, rutina de tratare a capcanei se execut la un nivel privilegiat
superior fa de cel n care se afl programul ce a produs capcana.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

25

Instrumente de Depanare

Depanarea este un proces dificil, care se simplific prin fragmentarea


programelor n blocuri mai mici, mai uor de stpnit. n sprijinul
depanatorului se pot oferi urmtoarele seturi de instrumente:

a) Execuie pas cu pas;


b) Puncte de suspendare a execuiei
(breakpoints);
c) Memorarea traseului programului (program
trace).

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

26

13

a) Execuie Pas cu Pas


Primul instrument permite rularea programului
instruciune cu instruciune, execuia fiind stopat
la sfritul fiecrei instruciuni.
Prin examinarea strii CPU i a locaiilor de
memorie se poate determina eventuala abatere a
programului de la comportarea dorit.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

27

b) Puncte de Suspendare a Execuiei


(Breakpoints)

Punctele de suspendare a execuiei permit


suspendarea execuiei unui program dup
execuia unei anumite instruciuni.
Permit execuia unor blocuri mai mari de program
nainte de suspendarea execuiei la un anumit
punct cu scopul testrii rezultatelor intermediare.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

28

14

Memorarea Traseului Programului


(Program Trace)
Traseul programului const ntr-o nregistrare
a tuturor instruciunilor executate de program
de la ultima suspendare i permite verificarea
corectitudinii fluxului de instruciuni parcurse
de program.
Pentru oferirea suportului necesar acestor
instrumente de depanare, toate
microprocesoarele moderne sunt prevzute
cu mecanismele hardware pentru trace.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

30

15

Puncte de Suspendare Software a Execuiei (1)

Rularea pas cu pas a programelor este, de


cele mai multe ori, consumatoare de timp, mai
ales dup ce s-au corectat mari blocuri de
program.
Utilitatea punctului de suspendare a execuiei
(breakpoint): aceasta facilitate permite
inserarea n program a unor "comenzi" de
suspendare.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

31

Puncte de Suspendare Software a Execuiei (2)


Se selecteaz instruciunile pentru care tentativa CPU
de a le executa duce la suspendarea execuiei
programului.
Pentru implementare se folosete o instruciune
capcan specific, a crei lungime este cea minim
permisa pentru o instruciune.
Instruciunea a crei execuie ar trebui s suspende
rularea programului este stocat ntr-o zon special de
memorie i este nlocuit prin instruciunea breakpoint.
Cnd contorul programului indic locaia n care se afla
instruciunea breakpoint, aceasta este executat, fapt ce
rezult n activarea rutinei asociate de tratare.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

32

16

Puncte de Suspendare Hardware a Execuiei (1)

Mecanismul de suspendare software a execuiei


permite utilizatorului s ntrerup execuia unui
program doar cu ajutorul unei instruciuni
particulare.
Punctul de suspendare hardware a execuiei se
implementeaz cu ajutorul unitii de gestiune a
memoriei (memory management unit - MMU), care
conine registre n care se nscrie adresa de
memorie la a crei adresare trebuie s se suspende
execuia programului.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

33

Puncte de Suspendare Hardware a Execuiei (2)


 Cnd mecanismul de breakpoint este activat, MMU compar fiecare noua
adres de acces cu coninutul registrelor de breakpoint. La egalitate, MMU
emite un semnal capcan, fapt ce permite ca tentativa de acces la locaia de
memorie al crei adres este pstrat n registrele de breakpoint s conduc
la suspendarea execuiei programului i activarea unei rutine adecvate de
tratare a situaiei.
 Microprocesoarele moderne permit utilizarea de puncte de suspendare a
execuiei programului att software, cat i hardware. Numrul primelor este
limitat doar de dimensiunea zonei de salvare, n timp ce numrul de puncte de
suspendare hardware este limitat de numrul de registre breakpoint din MMU.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

34

17

ntreruperi si excepii la microprocesoarele INTEL


Intreruperile si exceptiile sunt evenimente care arata ca o conditie exista
undeva in sistem, procesor sau in programul curent in executie si necesita
atentia procesorului.
Intreruperile apar la momente de timp aleatoare in executia unui program
ca raspuns la semnalele venite de la elemente hardware.
Elementele hardware din sistem utilizeaza intreruperile sa poata
gestiona evenimentele externe procesorului.
Elementele software pot genera intreruperi prin executia instructiunii
INT n.
Exceptiile au loc atunci cand procesorul detecteaza o conditie de eroare
in timpul executiei unei instructiuni.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

35

ntreruperi si excepii la microprocesoarele INTEL


La primirea unei cereri de intrerupere sau la detectarea unei
exceptii:
Procedura/taskul curent in executie sunt suspendate, iar
procesorul executa rutina de servire a intreruperii sau a
exceptiei.
Cand se termina executia rutinei de servire a intreruperii,
procesorul reia executia procedurii/taskului intrerupt.
Reluarea procedurii intrerupte se realizeaza fara pierderea
continuitatii programului.
Se poate intampla ca revenirea dintr-o exceptie sa nu fie posibila
sau ca intreruperea sa cauzeze terminarea executiei programului
curent.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

36

18

ntreruperi si excepii la microprocesoarele INTEL


Fiecare exceptie definita arhitectural si fiecare conditie de
intrerupere cu o tratare speciala a procesorului are asignat un numar
unic de identificare numit vector.
Procesorul utilizeaza vectorul asignat ca index intr-o tabela a
vectorilor de intreruperi. Numerele asignate vectorilor pot varia de la
0 la 255.
Vectorii de la 0 la 31 sunt rezervati exceptiilor si intreruperilor
definite arhitectural. Nu toti vectorii din acest domeniu au o functie
definita. Vectorii neasignati unei functii raman rezervati.
Vectorii de la 32 la 255 sunt pentru intreruperi definite de
utilizator. Aceste intreruperi sunt, in general, asignate
echipamentelor I/O, ca sa poata trimite cereri procesorului prin
mecanismele hardware de intreruperi externe.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

37

ntreruperi si excepii la microprocesoarele INTEL


Surse ale intreruperilor
Intreruperi externe (generate hardware). Intreruperi hardware
mascabile ce pot fi trimise prin pinul INT. Daca flagul IF al
registrului EFLAGS permite, toate intreruperile hardware
mascabile pot fi mascate in grup.
Intreruperi generate-software. Instructiunea INT n permite
generarea de intreruperi din program prin specificarea numarului
vectorului ca operand.
Exemplu: INT 32 apeleaza rutina intreruperii 32.
Daca in instructiune se specifica numarul 2 (numarul
vectorului pentru NMI) se apeleaza rutina pentru intreruperea
NMI, dar nu se activeaza elementele hardware pentru NMI.
Intreruperile generate software nu pot fi mascate prin flagul
IF.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

38

19

ntreruperi si excepii la microprocesoarele INTEL


Surse ale exceptiilor
Exceptii de tip eroare de program detectate de procesor. Procesorul
genereaza una sau mai multe exceptii atunci cand detecteaza erori
software (aplicatie sau sistem de operare) . Exista un numar asociat
fiecarei exceptii detectabile de catre procesor.
Exceptii generate software. Instructiunile INTO, INT 3 permit
generarea exceptiilor software. Aceste instructiuni permit verificarea
conditiilor exceptiei prin fluxul de instructiuni.
De exemplu, INT 3 cauzeaza generarea exceptiei breakpoint sau
INTO generarea exceptiei overflow.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

39

ntreruperi si excepii la microprocesoarele INTEL


Surse ale exceptiilor
Instructiunea INT n poate fi utilizata pentru a emula exceptii prin software.
Exista limitari fata de exceptiile generate prin hardware care produc un
cod al erorii.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

40

20

ntreruperi si excepii la microprocesoarele INTEL


Clasificarea intreruperilor interne si exceptiilor in functie de
raportare

Erori exceptii care pot fi corectate si care odata corectate permit


repornirea programului fara pierderea continuitatii. Daca se raporteaza o
exceptie de tip eroare, procesorul reface starea masini cu starea de
dinaintea executiei instructiunii eronate. Adresa de return (continutul salvat
al registrelor CS, EIP) al rutinei indica instructiunea cu eroare si nu
instructiunea urmatoare acesteia. ( Ex: divide error exception; invalid
opcode exception; interrupt table limit too small).
Capcane exceptii care sunt raportate imediat dupa executia instructiunii
capcana. Capcanele permit ca executia unui program sa continue fara
pierderea de continuitate. Adresa de return arata instructiunea de executat
dupa instructiunea capcana. (Ex. breakpoint exception INT 3).
Abort exceptii care nu raporteaza locatia instructiunii care cauzeaza
exceptia si nu repornesc programul care a cauzat exceptia. Sunt utilizate
pentru erori severe, erori hardware, inconsistente sau valori ilegale in
tabelele sistemului.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

41

ntreruperi si excepii la microprocesoarele INTEL


Prioritati
Prioritatea se realizeaza in doua moduri:
Pe baza unei ierarhii a grupurilor de intreruperi. Ordinea este: reset,
intreruperi interne si exceptii, intreruperi software intreruperi
nemascabile si intreruperile hardware externe.
In fiecare grup, fiecare intrerupere are asignat un nivel de prioritate
prin numarul tipului. Tipul 0 identifica, iar 255 identifica intreruperea cu
prioritatea cea mai scazuta.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

43

ntreruperi si excepii la microprocesoarele INTEL


Tabela vectorilor/descriptorilor de intreruperi

Aceasta tabela face legatura intre numerele tipurilor de


intreruperi si locatia de memorie unde se afla rutina de
servire a intreruperii. Tabela se numeste:
Tabela vectorilor de intreruperi (IVT) in modul real;
Tabela descriptorilor de intreruperi (IDT) - in modul
protejat
Tabela contine 256 de elemente pointeri de adrese
(Vector 0 Vector 255), unde un element corespunde
fiecarui numar asociat tipurilor de intreruperi. Pointerii
identifica in memoria program locatiile de inceput ale
rutinelor de tratare a intreruperilor.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

44

22

ntreruperi si excepii la microprocesoarele INTEL


Tabela vectorilor/descriptorilor de intreruperi
In general, IVT ocupa zona 00000H 003FFH (primul 1KB de
memorie). Se poate ca IVT sa se afle oriunde in spatiul de memorie.
Adresa de inceput si marimea sa pot fi definite de registrul IDTR. La
reset sau la pornirea sistemului in modul real continutul IDTR este 0 iar
limita IVT este 3FF.
Fiecare vector are 2 cuvinte de memorie.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

45

ntreruperi si excepii la microprocesoarele INTEL


Tabela vectorilor/descriptorilor de intreruperi
Cuvintele de la adresele 003FCH si 003FF vor indica
CS255 : IP255.
In tabela IVT:
Vectorii 0 31
: au functii dedicate sau sunt
rezervati. Exemplu: 0,1,3,4 sunt pentru divide error,
debug exception, breakpoint, overflow error.
Vectorii 32 255 : disponibili utilizatorilor pentru
diverse intreruperi software sau hardware.
In cazul intreruperilor hardware externe: fiecare numar
(nivel de prioritate) are asociat un semnal de intrerupere
intr-un hardware extern.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

46

23

ntreruperi si excepii la microprocesoarele INTEL


Tabela vectorilor de intreruperi si IDT
Tabela descriptorilor de intreruperi (IDT) se pot afla oriunde in
spatiul de memorie.
IDTR contine adresa de baza si limita IDT
IDT contine descriptori de poarta (gate descriptors) max 256.
Daca rutina careia i se transfera controlul este in taskul curent,
atunci se foloseste: trap gate sau interrupt gate;
Daca rutina careia i se transfera controlul este in alt task, atunci
se foloseste: task gate
Prin acest mecanism se redirectioneaza executia programului.
Un descriptor de poarta are 8 bytes de memorie
Gate 0 se afla la IDT + 0H IDT + 7H
Limita tabelei IDT poate fi o valoare mai mica de 7FFH pentru a
minimiza memoria rezervata pentru IDT.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

47

ntreruperi si excepii la microprocesoarele INTEL


Formatul descriptorului portii de intrerupere

Octetul drepturilor de acces: identifica daca sau nu


descriptorul de poarta este valid, nivelul de privilegii ale
rutinei si tipul portii.
P prezent; 1 descriptorul este activ;
DPL nivel de privilegii pentru rutina de servire a
intreruperii; 00 cel mai privilegiat.
T tip = 0 poarta de intreruperi
= 1 poarta de capcana : pentru capcana,
flagul IF nu este sters.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

48

24

ntreruperi si excepii la microprocesoarele INTEL


Instructiuni pentru intreruperi

Instructiuni de manipulare a flagului de intreruperi (IF)


CLI sterge IF
STI seteaza IF (activeaza semnalul INT)
Instructiunile se executa in modul protejat. Daca CPL > IOPL instructiunile
nu se executa si se genereaza exceptia general protection

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

49

ntreruperi si excepii la microprocesoarele INTEL


Instructiuni pentru intreruperi
LIDT (Load interrupt descriptor table register) este
instructiunea utilizata pentru a modifica registrul IDTR.
In forma generala este:
LIDT EA ; EA- adresa efectiva
EA este reprezentata prin 3 words = 2
words pentru adresa de baza +1 word
pentru limita tabelei;
SIDT (store interrupt descriptor table register) este
instructiunea utilizata pentru examinarea continutului
registrului IDTR.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

50

25

Instructiuni pentru intreruperi


Instructiunea de intrerupere software este utilizata
pentru a initia un apel vectorizat al rutinei de tratare a
intreruperii.
Prin executia acestei insructiuni controlul programului
este transferat subrutinei indicate de vector sau de
poarta cu numarul n specificat de instructiune.
INT n ;

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

51

Instructiuni pentru intreruperi


Fiecare rutina de tratare a intreruperii trebuie sa aiba
return, pentru a transfera controlul inapoi programului
principal.
IRET ; revenirea din rutina de tratare a intreruperii.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

52

26

S-ar putea să vă placă și