Sunteți pe pagina 1din 26

CUPRINS

8. SISTEMUL DE MANIPULARE A NTRERUPERILOR ............................................................................... 8-1


8.1 MODALITI DE REALIZARE A SISTEMELOR DE NTRERUPERI. ............................................................................. 8-2
8.2 PROIECTAREA UNUI SISTEM DE NTRERUPERI PENTRU CALCULATORUL DIDACTIC ............................................... 8-3
8.2.1 Specificarea sistemului de ntreruperi pentru calculatorul didactic........................................................ 8-4
8.2.2 Modificarea secvenei de comand a unitii centrale ............................................................................ 8-5
8.2.3 Proiectarea detaliat a sistemului de ntreruperi pentru calculatorul didactic. ................................... 8-10
8.2.4 Descrierea unitii logice combinaionale PRI ..................................................................................... 8-13
8.2.5 Descrierea unitii logice combinainale ADRI ..................................................................................... 8-16
8.2.6 Descrierea unitii de comand a sistemului de ntreruperi UCSI ........................................................ 8-17
8.3 PROGRAMAREA OPERAIILOR DE INTRARE / IEIRE N NTRERUPERI ................................................................. 8-21

8-1
8. SISTEMUL DE MANIPULARE A NTRERUPERILOR

Obiective:

n acest capitol se trateaz, la nivel de principii, lucrul n ntreruperi. n mod efectiv se arat
modalitile de realizare a ntreruperilor pentru calculatoarele numerice i se prezint detaliat realizarea
unui sistem de ntreruperi propriu calculatorului didactic. De asemenea, n acest capitol, se urmrete
nelegerea principiilor de programare a operaiilor de I/E utiliznd sistemul de ntreruperi al
calculatorului.
8-2
Calculatorul numeric trebuie privit ca un sistem deschis care comunic i interacioneaz cu
mediul extern n procesul de execuie a funciilor logice i de calcul specificate de program. n acelai
timp calculatorul este el nsui un sistem complex a crui stare este format din compoziia strilor
subansamblelor componente, ceea ce implic unele dificulti n actualizarea i meninerea corect a
strii ntregului sistem.
Din punctul de vedere al fluxului de control aceste interaciuni pot fi reduse la evenimente care
apar i declaneaz alte evenimente (de exemplu evenimentul ce semnaleaz terminarea transferului
unui cuvnt declaneaz evenimentul ce iniiaz transferul cuvntului urmtor).
Interaciunea dintre evenimente este astfel controlat de unitatea central de prelucrare nct s
asigure funcionarea determinist a sistemului (pentru aceleai intrri s se obin aceleai rezultate)
indiferent de momentul i ordinea apariiei acestor evenimente interne sau externe. Apariia
evenimentelor se materializeaz prin schimbarea strii sistemului fizic (de ex: schimbarea strii unor
bistabili pentru a memora evenimentul). Mecanismul de control al sistemului trebuie s sesizeze
apariia acestor evenimente pentru a declana alte evenimente, specifice algoritmilor de funcionare a
sistemului. Apariia unor evenimente interne sau externe poate fi sesizat prin analiza periodic a strii
subansamblelor fizice (interaciune n bucl de ateptare). Aceast soluie are mai multe dezavantaje:
ciclul de testare a strii poate fi mare, ceea ce duce la o ntrziere a tratrii
evenimentelor conducnd la afectarea n mod negativ a performanelor sistemului. De
exemplu rata de transfer cu echipamentele de I/E poate fi micorat, din acest motiv,
ceea ce conduce la o scdere a productivitii sistemului;
ciclul de testare a strii poate fi mic, ceea ce duce la o scdere a productivitii
sistemului din cauza unui procent mare de ocupare a unitii centrale de prelucrare cu
aceste operaii.
soluia nu ofer o rezolvare corect a apariiei evenimentelor ce necesit o tratare
imediat n cazul sistemelor ce trebuie s efectueze prelucrri n timp real.
Se impune deci dezvoltarea unui mecanism care s sesizeze apariia evenimentelor ce solicit
atenia unitii centrale de prelucrare i s genereze iniierea unor aciuni la nivelul unitii centrale de
prelucrare, a unor secvene de program specifice fiecrui eveniment. Acest mecanism va fi denumit n
continuare sistem de ntreruperi care asigur interfaa dintre unitatea central de prelucrare i cererile
de ntrerupere (evenimentele care cer atenia unitii centrale de prelucrare).
Un astfel de sistem care este capabil s controleze n mod corect evenimente ntre care nu
exist nici o relaie temporal este un sistem asincron. Prin sistemul de ntreruperi se asigur un
mecanism pentru controlul i sincronizarea evenimentelor asincrone. n sistemele de prelucrare n timp
real, sisteme tipice asincrone, necesitatea analizei relaiilor temporale dintre anumite evenimente
impune existena unui "ceas" al sistemului, care eventual poate fi corelat cu timpul fizic.
8.1 Modaliti de realizare a sistemelor de ntreruperi.
Cererile de ntreruperi pot fi, dup sursa de generare a acestora, de dou tipuri:
interne, cauzate de evenimente la nivelul unitii centrale de prelucrare precum ar fi:
ntreruperi programate (iniiate n program);
executarea unor instruciuni privilegiate de un program care nu are acest drept;
depire n unitatea aritmetic i logic;
eroare de paritate la memorie;
adresarea unui subansamblu inexistent;
ncercarea de a executa operaii nepermise: mprire prin zero, etc.
externe, primite din mediu extern prin intermediul interfeelor de intrare/ieire.
Trebuie notat c cererile de ntrerupere nu trebuie asociate cu apariia unor situaii de eroare.
La elaborarea unui sistem de ntreruperi trebuie avute n vedere mai multe aspecte cum ar fi:
8-3
pentru a facilita tratarea lor, cererile de ntrerupere trebuie partiionate n clase, dup
sursa de generare, denumite n general niveluri de ntreruperi;
n funcie de natura lor (de provenien) exist cereri care trebuie tratate imediat, chiar
dac sunt n curs de tratare alte cereri, ceea ce impune ordonarea dup o anumit
schem de prioriti a nivelurilor de ntrerupere;
pe un nivel se pot conecta mai multe cereri, subniveluri de acceai prioritate. n acest
caz trebuie s existe posibilitatea identificrii fiecrui nivel i subnivel;
deoarece prin mecanismul ntreruperilor este posibil execuia concurent a mai multor
programe, se impune necesitatea protejrii fa de ntreruperi a unor secvene de cod
main indivizibile, denumite seciuni critice. Aceasta se poate realiza prin dezactivarea
global sau individual (mascare) a ntreruperilor pe diferite durate de timp;
sistemul de ntreruperi trebuie prevzut cu faciliti de salvare i restaurare a
contextului programului ntrerupt, ntr-o manier ct mai eficient;
trebuie prevzut posibilitatea unui dialog cu subansamblele (echipamentele) care au
generat cereri de ntrerupere privind tratarea cererii;
timpul de rspuns al sistemului de ntreruperi (SI), definit ca intervalul dintre lansarea
unei cereri de ntrerupere spre sistemul de ntreruperi i momentul execuiei primei
instruciuni din secvena de prelucrare efectiv a cererii, trebuie s fie ct mai mic.
Dup modul n care se face activarea secvenei (a rutinei) de tratare a unei ntreruperi se disting
urmtoarele tipuri de sisteme de ntreruperi:
nevectorizat;
vectorizat.
Sistemele de ntreruperi nevectorizate sunt acelea n care toate cererile de ntrerupere foreaz
transferarea controlului la o locaie fix denumit celul capcan, unde se afl punctul de intrare (sau
legtura cu rutina de tratare) n programul de tratare a tuturor ntreruperilor. Sursa de ntrerupere i
activarea rutinei specifice se determin prin citirea unui registru de stare, denumit registrul cererilor de
ntrerupere (sau a mai multor registre).
Dac exist mai multe cereri prioritatea de servire a acestora se stabilete prin program. Timpul
de rspuns ntre o cerere i lansarea n execuie a rutinei specifice de tratare poate fi destul de mare la
acest tip de sistem de ntrerupere.
Au avantajul unei complexiti reduse a resurselor hardware necesare, dar tratarea unor cereri
care apar n timpul tratrii altor cereri este dificil.
Sistemele de ntreruperi vectorizate sunt acelea n care legtura dintre cereri i rutinele de
tratare se realizeaz prin intermediul unui vector de adrese (denumite i celule capcan) cu o
component direct pentru fiecare nivel. Fiecare component conine adresa, sau informaii privind
calculul adresei rutinei de tratare astfel c printr-un salt indirect prin aceast locaie se iniiaz execuia
rutinei de tratare.
Sistemul de ntreruperi furnizeaz spre unitatea central de prelucrare codul nivelului care
trebuie tratat n acel moment, cod ce va fi utilizat pentru selecia componentei asociate din vectorul de
adrese al rutinelor de tratare.
Prioritatea ntre niveluri este stabilit de ctre sistemul de ntreruperi la nivel fizic, timpul de
rspuns al sistemului este mai mic dect n cazul precedent.
n practic se utilizeaz frecvent o soluie ce combin avantajele i dezavantajele celor dou
tipuri de sisteme de ntreruperi i anume sisteme vectorizate pe niveluri i nevectorizate pe subniveluri.
8.2 Proiectarea unui sistem de ntreruperi pentru calculatorul didactic
Proiectarea unui sistem de ntreruperi (SI) pentru calculatorul didactic implic rezolvarea
urmtoarelor aspecte:
specificarea sistemului de ntreruperi;
8-4
modificarea arhitecturii calculatorului didactic, prin includerea funciilor necesare
gestiunii ntreruperilor;
proiectarea detaliat a sistemului de ntreruperi;
programarea operaiilor de I/E n ntreruperi.
8.2.1 Specificarea sistemului de ntreruperi pentru calculatorul didactic
Aspectele principale ce trebuie considerate n vederea specificrii sistemului de ntreruperi au
fost prezentate n paragraful 8.1. Analiznd aceste aspecte se constat imediat c exist o mare
varietate de soluii i opiuni pentru specificarea structurii i arhitecturii unui sistem de ntreruperi.
Avnd n vedere caracteristicile calculatorului didactic se poate proiecta un sistem de ntreruperi
adecvat, specificat printr-un set de atribute ce vor fi prezentate n continuare.
Dup sursa de generare se vor considera urmtoarele clase de ntreruperi:
ntreruperi interne, generate la nivelul unitii centrale de prelucrare. n aceast clas
sunt incluse urmtoarele cereri de ntreruperi:
ntrerupere de depire n unitatea aritmetic i logic, care se genereaz imediat
dup execuia unei instruciuni ce a poziionat n "1" indicatorul de depaire D;
ntreruperi prin program, care se genereaz imediat dup execuia unei
instruciuni INT, ce va fi inclus n setul de instruciuni al calculatorului didactic.
(Aceast ntrerupere la nivel fizic este util pentru programarea unor puncte de
ntrerupere la nivel logic n diferite locuri ale unui program n vederea punerii la
punct a acestuia);
Obs: Trebuie notat c ntreruperile interne nu pot fi mascate (inhibate).
ntrerupere extern nemascabil, generat din exteriorul unitii centrale de
prelucrare i care nu poate fi mascat. Aceast ntrerupere este util pentru evenimente
ce trebuie tratate imediat, cum ar fi scderea tensiunii de alimentare sub o anumit
limit; ntreruperea extern nemascabil este transmis unitii centrale de prelucrare
printr-o linie separat cinm.
ntreruperi externe mascabile, generate de ctre subsistemul de I/E. Se vor prevedea
8 cereri de ntrerupere externe mascabile. Existena a cel puin o ntrerupere extern
mascabil anun unitatea central de prelucrare printr-o linie separat cintr.
Cererile de ntrerupere sunt ordonate dup prioriti astfel:
ntreruperile interne (prioritatea cea mai mare);
ntreruperea extern nemascabil;
ntreruperile externe mascabile.
ntreruperile externe mascabile sunt ordonate pe 8 niveluri de prioriti cerint0 , cerint1 ,......,
cerint7 n ordinea descresctoare a prioritilor (cerint0 are prioritatea cea mai mare iar cerint7 cea mai
mic).
Prioritatea ntre cele trei clase de ntrerupere este stabilit de unitatea central de prelucrare n
ordinea prezentat anterior.
Sistemul de ntreruperi pentru calculatorul didactic este de tip vectorizat. Se consider un
vector de 12 celule capcan, pentru fiecare cerere de ntrerupere cte o celul. Aceste celule sunt
localizate la adresele 0:11. n fiecare celul se nscrie adresa rutinei de tratare corespunztoare
nivelului respectiv, conform tabelului 8.1.
8-5

Saltul indirect prin aceste celule la rutina de tratare a ntreruperii, asociat cu prioritatea cea
mai mare recunoscut de unitatea central de prelucrare, este asigurat de secvena din unitatea central
de prelucrare ce va fi introdus n acest scop. Secvena din unitatea central de prelucrare se realizeaz
pe baza informaiilor privind cererile interne, inm i intr i pe baza codului furnizat de sistemul de
ntreruperi la activarea unei cereri pe linia cintr.
Pentru a avea posibilitatea activrii sau dezactivrii (mascrii) ntreruperilor pe linia cintr se
va prevedea un indicator I n registrul de indicatori IND care va specifica starea de activare/dezactivare
a ntreruperilor. De asemenea, se va extinde setul de instruciuni main a calculatorului didactic cu
instruciunile:
EI - activeaz sistemul de ntreruperi, prin trecerea n 1 a indicatorului I;
DI - dezactiveaz sistemul de ntreruperi, prin trecerea n 0 a indicatorului I;
INT - genereaz, prin program, o cerere de ntrerupere.
8.2.2 Modificarea secvenei de comand a unitii centrale
Pentru a actualiza secvena de control ce realizeaz citirea interpretarea instruciunilor n
vederea introducerii sistemului de ntreruperi trebuie avute n vedere urmtoarele aspecte:
completarea primitivelor funcionale ale unitii centrale de prelucrare;
descrierea secvenei de luare n considerare, interpretare i preluare a cererilor de
ntrerupere;
codificarea noilor instruciuni introduse;
descrierea secvenei de citire/interpretare i execuie a noilor instruciuni introduse .
Aa cum s-a menionat, pentru a permite activarea/dezactivarea ntreruperilor externe
mascabile, primitivele funcionale ale calculatorului didactic se completeaz cu un nou indicator I i cu
instruciuni de poziionare explicit a acestuia.
I=0 ntreruperile sosite pe linia cintr sunt inhibate,
I=1 ntreruperile sosite pe linia cintr sunt luate n considerare de unitatea central de prelucrare.
Unitatea de comand a calculatorului didactic va fi prevzut cu bistabili necesari pentru
memorarea cererilor de ntrerupere i anume:
intr - ntrerupere extern mascabil, este scris de sistemul de ntreruperi i interpretat de unitatea
central de prelucrare,
= 0 nu exist cerere de ntrerupere de la sistemul de ntreruperi,
= 1 exist cerere de ntrerupere de la sistemul de ntreruperi, cintr = 1.
Tabelul 8.1 Vectorul de ntreruperi pentru calculatorul didactic
B
A
9
8
7
6
5
4
Nivel 7
Nivel 6
Nivel 5
Nivel 4
Nivel 3
Nivel 2
Nivel 1
Nivel 0



ntreruperi externe mascabile
3 Cderea tensiunii de alimentare ntrerupere extern nemascabil
2 ntrerupere de depire generat de unitatea
aritmetic i logic

1 ntrerupere generat prin program ntreruperi interne
0 Neutilizat
8-6
ai - achitare ntrerupere este scris de unitatea central de prelucrare ca recunoatere a unei cereri
de ntrerupere extern mascabil. Este utilizat de unitatea de comand a sistemului de
ntreruperi,
= 0 unitatea central de prelucrare nu a recunoscut sau a terminat luarea n considerare a
unei cereri de ntrerupere,
= 1 unitatea central de prelucrare a recunoscut o cerere de ntrerupere.
inm - ntrerupere extern nemascabil - este scris de cinm i interpretat de unitatea central de
prelucrare,
= 0 nu exist o tranziie 0 - 1 a liniei cintr,
= 1 exist o cerere extern nemascabil, cinm - 1.
Obs: Bistabilul inm trece n 1 la tranziiile din 0 n 1 ale cererii cinm (cererea este activ pe front).
id -ntrerupere de depire n unitatea aritmetic i logic, este scris i interpretata de unitatea
central de prelucrare,
= 0 nu exist o tranziie 0 - 1 a indicatorului D,
= 1 exist o cerere de ntrerupere datorat depirii n unitatea aritmetic i logic,
indicatorul D a avut o tranziie din 0 n 1 .
ip -ntrerupere prin program, este scris de unitatea central ca urmare a execuiei unei instruciuni
INT, interpretat de unitatea central,
= 0 nu s-a executat o instruciune INT,
= 1 exist o cerere de ntrerupere datorate execuiei instruciunii INT.

Bistabilii intr, inm, id, ip sunt anulai selectiv (trecui n 0) imediat dup ncrcarea n AM a
adresei celulei capcan corespunztoare, ca urmare a lurii n considerare a cererii de ntrerupere
respective.
n continuare se va dezvolta secvena de analiz, interpretare a cererilor de ntererupere interne,
externe nemascabile i externe mascabile de ctre unitatea central de prelucrare.
Modul de analiz al cererilor de ntrerupere de ctre unitatea central se prezint n Fig 8.1,
evideniindu-se urmtoarele aspecte:
prioritatea ntre ntreruperile interne, ntreruperea extern nemascabil inm i
ntreruperile externe mascabile intr este stabilit de ordinea de testare;
ntreruperile interne i extern nemascabil nu pot fi dezactivate prin execuia unei
instruciuni DI (I - 0);
la recunoaterea unei cereri de ntrerupere pe intr, unitatea central trimite spre exterior
un semnal de achitare ntrerupere, ai, pentru a semnala sistemului de ntrerupere c s-a
luat n considerare cererea de ntrerupere i se ateapt codul de identificare al cererii cu
prioritatea cea mai mare (adresa celulei capcan);
pentru ntreruperile interne i extern nemascabil sistemul de ntreruperi asigur
adresa celulei capcan corespunztoare. Unitatea central nu mai trebuie s trimit
semnal de achitare;
la recunoaterea unei cereri de ntrerupere, unitatea central de prelucrare :
salveaz indicatorii de condiii n stiv ;
dezactiveaz ntreruperile externe mascabile (I - 0) ;
salveaz n stiv adresa de rentoarcere n programul ntrerupt ;
transfer controlul rutinei de tratare executnd o secven similar cu JMP
indirect prin celula capcan corespunztoare.
n rutina de tratare, cererile de ntrerupere externe mascabile vor putea fi luate n
considerare numai dup execuia unei instruciuni EI;
8-7
trebuie avut n vedere c o rutin de tratare a unei ntreruperi interne s nu conin o
instruciune care genereaz o nou ntrerupere intern, pentru a evita depirea stivei
sistemului i distrugerea programului;
la terminarea tratrii ntreruperii, revenirea n programul ntrerupt se face prin
executarea unei instruciuni IRET care reface indicatorii (deci reactiveaz i sistemul de
ntreruperi) i apoi revine n programul ntrerupt;
n rutina de tratare a unei ntreruperi cauzat de depire n unitatea aritmetic i logic,
trebuie anulat bistabilul D, pentru a permite generarea unor ntreruperi ulterioare
datorit depirii n unitatea aritmetic i logic.

intr.
interna
SI activat
Salveaza IND
ai 1
nu
nu
nu
0
1
da
da
da
inm
intr I
Dezactiv
intreruperile
Salveaza CP
Citeste, interpreteaza si executa instructiunea urmatoare
salt la rutina
tratare
ai 0

Figura 8.1 Secvena de tratare a unei ntreruperi
n continuare se prezint modificarea secvenei unitii de comand a calculatorului didactic
pentru recunoaterea i iniirea tratrii ntreruperilor.

MODULE: UNITATEA DE COMANDA A calculatorului didactic
MEMORY: RG[8,16];T1[16];T2[16];AM[16];CP[16];RI[16];AIE[8];IND[6];start[D];inm[D];
id[D];ip[D];intr[D];ai
INPUTS: starta;cintr;cinm;atm
OUTPUTS: AIE[8];cm;sm;cie;sie;ai;AM[16];ip;id;inm;actadri
COMBUS: MAG[16]
/*daca intrerupere interna sau externa nemasc91, daca nu exista intrerupere executa
instructiune2.2, altfel (intrerupere ext.masc.) continua cu pas 2.1
)/(91,2.2) I) (intr ip id inm ip, id (inm 2.
/(1) rta)) SL(SYN(sta 1.

8-8
2.1 ai 1;
(91)

/* la pasul 91 ncepe secvena de tratare de ctre unitatea central de prelucrare a ntreruperilor externe
i interne */

2.2 AM CP
.
.
.
(la fel ca pn acum)
(nu s-au cosiderat instruciunile nou introduse)

91. T1 BUSFN (RG;DCD(ADRIS))

92. AM ADD (T1;0FFFFH;0)

T1 ADD (T1;0FFFFH;0)

/* adresa vrfului stivei actualizat se aduce n T1 i AM

93. M * DCD(AM) IND

/* se salveaz indicatorii n stiv */

94. RG * DCD (ADRIS) ADD (T1;0FFFFH;0);

AM ADD (T1;0FFFFH;0);

I 0

/* se actualizeaz IS - indicatorul vrfului stivei */

/* se dezactiveaz sistemul de ntreruperi I <- 0 n mod implicit */

95. M * DCD(AM) CP ; actadri = 1

/* salveaz adresa de revenire din subrutina de tratare a ntreruperii */

/* activeaz ADRI pe magistral pentru a fi preluat n AM la pasul 96 */

96. actadri = 1

AM ADRI

/* se ncarc AM cu adresa celulei capcan corespunztoare cererii luate n considerare. Adresa este
furnizat de o unitate logic combinaional, ADRI i este activat pe MAG de actadri */

97. (ip! id! inm! intr) * PRIL
0:3
0 ; ai * PRIL
3
0;
8-9

CP BUSFN (M;DCD(AM));

(2)

/* se anuleaz bistabilul de cerere de ntrerupere, ce a fost luat n considerare de ctre unitatea central,
utiliznd unitatea logic combinaional PRIL */
/* se ncarc n CP adresa de nceput a rutinei de tratare a ntreruperii */
/* se merge la nceputul fazei de citire interpretare */
END SEQUENCE
intr cintr; inm[D] = 1; inm[CK] = cinm; id[D] = 1;id[CK] = D
END
Noile instruciuni, necesare controlului sistemului de ntreruperi, i codificarea acestora sunt
prezentate n tabelul 8.2


Secvena de citire, interpretare i execuie a acestor instruciuni este urmtoarea:

/* la pas 84.1 se executa HLT (asteapta intrerupere), daca RI
6
=1 => EI si DI, pas 89
Daca RI
6
=0 si RI
7
=1 => INT, pas 90, altfel (RI
6
=0 si RI
7
=0) => HLT, pas 84.1 */

/* o ntrerupere extern nemascabil sau o ntrerupere extern mascabil (cu sistemul de ntreruperi
activat) scoate unitatea central de prelucrare din starea de asteptare i continu cu instruciunea
imediat urmtoare instruciunii HLT (bineneles dup execuia rutinei de tratare a ntreruperii) */


89. I RI7

(32)

/* execuia instruciunilor EI i DI */

90. CP INC(CP); ip 1

/* se actualizeaz CP i se cere ntrerupere prin program */
/* se continu cu secvena de la pas 91 comun tuturor tipurilor de ntrerupere */

Pentru a exemplifica modul de interpretare de ctre unitatea central a diferitelor tipuri de
ntrerupere, n Fig. 8.2 se prezint un exemplu de tratare, cvasisimultan, a mai multor cereri. S
presupunem c dup ce s-a activat sistemul de ntreruperi (ca urmare a execuiei instruciunii EI), n
urma unei instruciuni ADD se poziioneaz n 0 indicatorul de depire. n timpul execuiei
instruciunii ADD sosesc i cereri pe liniile cintr i cinm. De remarcat faptul c rutinele de tratare a
Tabelul 8.2 Instruciuni aferente sistemului de ntreruperi
Mnemonic Cod Funcii
EI 10001111
Activare ntreruperi externe mascabile; I <- 1
DI 10001110
Dezactivare ntreruperi externe mascabile; I <- 0
INT 10001101
Salveaz starea; I<-0 i transfer controlul indirect prin locaia 2
) 84.1 )/(91,2.1, I) (intr inm I), (intr inm (inm, 84.1
) 89 , 90 /( ) RI ), RI RI (( 84.
6 7
6


8-10
ntreruperilor de depire i extern nemascabil, dezactiveaz sistemul de ntreruperi astfel c cererile
de ntrerupere mascabile sunt recunoscute numai dac n cadrul lor se activeaz sistemul de
ntreruperi. Altfel sunt luate n considerare numai dup terminarea execuiei acestora.
Secventa UCP
instructiuni PP
Recunoastere intr.
Recunoastere intrerupere inm.
(ca urmare a executiei instructiunii ADD se pozitioneaza indicatorul de depasire D)
Program principal
Reface CP
Reface IND
Initiaza tratare
intrerupere id
Salveaza IND
I0
Salveaza CP
Salveaza IND
I0
Salveaza CP
Salveaza IND
I0
Salveaza CP
cintr,inm
IRET
IRET I=1
I=0
I=0
ADD
EI
Reface CP
Reface IND
Reface CP
Reface IND
IRET
Rutina tratare
inm
Rutina tratare
inm
Rutina tratare
inm

Figura 8.2
Tratarea cererilor de ntrerupere simultane
8.2.3 Proiectarea detaliat a sistemului de ntreruperi pentru calculatorul didactic.
Avnd n vedere caracteristicile generale ale sistemului de ntreruperi pentru calculatorul
didactic prezentate anterior se poate stabili schimbul de informaie ntre unitatea central de prelucrare,
sistemul de ntreruperi i interfeele de I/E. Schimbul de informaii este prezentat n Fig. 8.3.
Semnificaia semnalelor, exceptnd actadri, a fost prezentat anterior.
Avnd n vedere aspectele generale ale specificaiilor sistemului de ntreruperi pentru
calculatorul didactic, se poate stabili schema bloc a sistemului de ntreruperi, prezentat n Fig 8.4.
8-11
Unitatea
central de
prelucrare a
calculatorului
didactic
MAG[16]
AIE[8]
Sistemul de
ntreruperi
_____
cerint
1
_____
cerint
0
___
cintr
__
sie
ai
__
cie
ip
id
cinm cinm
inm
actadri
_____
cerint
7

Figura 8.3
Schimbul de informaie ntre
unitatea central de prelucrare, sistemul de ntreruperi i interfeele de I/E.
UCSI
__
sie
ip
ai
AIE __
cie
____
cintr
0
____
cintr
____
cintr
Logica
de
prioritati
PRI
RCI
____
cintr
7
RMI
RICS ADRI
id
MAG
actari
inm

Figura 8.4
Schema bloc a sistemului de ntreruperi

8-12
Primitivele funcionale ale sistemului de ntreruperi au urmtoarele semnificaii:
RMI - registrul de mascare ntreruperi - este scris/citit de unitatea central de prelucrare. Este utilizat
pentru mascarea individual sau n bloc a cererilor externe mascabile.
RMI
i
= 1 va inhiba cererea de ntrerupere de pe linia cerint
i
corespunztoare.

RCI - registrul de cereri ntreruperi - este scris de cererile de ntrerupere de la echipamentele
periferice prin liniile cerint0, ...cerint7. Pentru a sesiza numai sosirea unei cereri, nu i timpul
ct ea este activ, bistabilii individuali din acest registru sunt poziionai pe frontul cresctor al
cererii. Bistabilii din acest registru sunt independeni, adic, sunt manipulai individual de ctre
UCSI i cererile de ntrerupere externe mascabile cerint0, ...cerint7.

RCI are rolul de a pstra cererile de ntrerupere externe pn cnd vor fi luate n considerare de
unitatea central de prelucrare
RCIi = 0 - echipamentul extern cuplat pe nivelul i nu a lansat o cerere de ntrerupere;
RCIi = 1 - echipamentul extern cuplat pe nivelul i a lansat o cerere de ntrerupere .

PRI - unitate logic combinaional - stabilete cererea, nemascat, cu prioritatea cea mai mare din
registrul RCI. Este utilizat i pentru a stabili dac cererea, cu prioritatea cea mai mare din
RCI, poate ntrerupe eventuala cerere n curs de servire indicat de RICS.
n caz afirmativ, UCSI va lansa o cerere de ntrerupere spre unitatea central de prelucrare, pe
linia cintr, i o va transfera din RCI n RICS, pentru servire. Transfernd-o n RICS o terge
din RCI.

RICS - registrul de cereri n curs de servire - scris de UCSI i citit de unitatea central de prelucrare.
Este utilizat pentru a pstra cererile de ntrerupere a cror servire a fost iniiat dar neterminat.
Fiecrei cereri i corespunde un bit n RICS. Exist posibilitatea c, ntr-un caz extrem, toi
biii lui RICS s fie n "1".

ADRI - unitate logic combinaional - stabilete adresa celulei capcan asociat cererii a crei tratare
va ncepe.

UCSI - unitatea de comand a sistemului de ntreruperi.

Mecanismul general pentru generarea unei ntreruperi cintr spre unitatea central de prelucrare
pe baza cererilor individuale cerint0,...,cerint7 este urmtorul:
cererile de ntrerupere individuale cerint0, ..., cerint7 de la echipamentele externe se
memoreaz n RCI pe frontul cresctor al acestora;
sistemul de ntreruperi evalueaz prioritile acestor cereri, alege cererea cu prioritatea
cea mai mare dintre cele nemascate i genereaz o cerere pe linia cintr spre unitatea
central de prelucrare, numai dac prioritatea acesteia este mai mare dect a cererilor n
curs de servire, indicate de RICS;
unitatea central de prelucrare va rspunde la cererea de ntrerupere cintr cu o
confirmare a lurii ei n considerare prin activarea semnalului ai (achitare ntrerupere);
primind ai de la unitatea central de prelucrare, UCSI (unitatea de comand a
sistemului de ntreruperi) va trece n 1 bitul din RICS corespunztor cererii luate n
considerare i o va terge din RCI;
att timp ct actadri este activ, i va activa pe MAG adresa celulei capcan
corespunztoare pe baza careia se va ajunge la rutina de tratare a ntreruperii.

Pentru a detalia implementarea sistemului de ntreruperi trebuie tratate urmtoarele aspecte:
8-13
descrierea unitii logice combinaionale PRI;
descrierea unitii logice combinaionale ADRI;
descrierea UCSI.

8.2.4 Descrierea unitii logice combinaionale PRI

Aceast unitate logic combinaional este format din dou seciuni i anume:
seciunea de alegere a cererii, nemascate din RCI, cu prioritatea cea mai mare (PRIA);
seciunea de generare a unei cereri cintr spre unitatea central de prelucrare (CINTR).

Programul AHPL de descriere a primei seciuni (PRIA) este prezentat n continuare conform
cu organigrama din Fig. 8.5

A
0
PRIA
0
= 1
nu
da
A
1
PRIA
1
= 1
nu
da
A
2
PRIA
2
= 1
nu
da
A
6
PRIA
6
= 1
nu
da
A
7
PRIA
7
= 1
nu
da

Figura 8.5
Organigrama de alegere a cererii cu prioritatea cea mai mare - PRIA

UNIT: PRIA (A)
INPUTS: A [A]
OUTPUTS: PRIA [A]

1. B
0
= A
0


2. k 1
8-14


4. k k+1
5. (k < A )/(3)
6. PRIA = B
END
sau forma compactat:

UNIT: PRIA (A)
INPUTS : A [A]
OUTPUTS: PRIA [A ]
1. B
0
= 1

3.PRIA = A B
END

Schema logic, principial, pentru aceast seciune a unitii logice combinaionale este
prezentat n Fig 8.6.
PRIA
2
PRIA
1
PRIA
0
____
RCI
7
RMI
7
____
RCI
6
RMI
6
____
RCI
3
RMI
3
____
RCI
2
RMI
2
____
RCI
1
RMI
1
____
RCI
0
RMI
0
PRIA
7
PRIA
3

Figura 8.6
Schema logic a unitii PRIA

___
Aceast unitate logic combinaional va avea ca intrri, RCI RMI.
) A , /(A 3.B 1 k : 0
k k
=
2 - A : 0
2 A : 0
1 - A : 1
B A 2.B =
8-15
Ieirile unitii combinaionale vor fi egale cu 0 cu excepia celei corespunztoare cererii
(nemascate) din RCI cu prioritatea cea mai mare.
Seciunea de generare a unei cereri de ntrerupere cintr (CINTR) va analiza coninutul
registrului RICS i ieirile PRIA.
Dac cererea din RCI cu prioritatea cea mai mare, indicat de PRIA, poate ntrerupe cererile n
curs de servire (are o prioritate mai mare dect acestea), se va genera o cerere de ntrerupere pe linia
cintr.

Programul AHPL de descriere a seciunii CINTR este descris pe baza organigramei din Fig
8.7.

RICS
0
___
PRIA
0
(RCI RMI)
___
PRIA
1
(RCI RMI)
RICS
1
0 1
1 0
0
0
1
1
RICS
6
___
PRIA
6
(RCI RMI)
___
PRIA
7
(RCI RMI)
RICS
7
0 1
1 0
0
0
1
1
____
cintr

Figura 8.7
Organigrama pentru generarea cererii de ntrerupere CINTR

UNIT: CINTR
INPUTS: A[A] ; B[A]
OUTPUTS: cintr

8-16

2.k 1

4. k k+1

5. (k < A)/(3)

6. cintr = /C
0:k


END

sau sub forma compact :

UNIT: CINTR
INPUTS: A [A] ; B[A]
OUTPUTS: cintr

1 : 1 2 : 0 1 : 1
. 2

=
A A A
B C C



3. cintr = /(A C)

END

n descrierea AHPL s-a inut seama de faptul c vectorul A corespunztor lui PRIA (RMI),
poate avea la un moment dat o singur component egal cu 1.
Funcia logic a cererii de ntrerupere cintr este:


8.2.5 Descrierea unitii logice combinainale ADRI
Dup primirea unei cereri de ntrerupere interne, externe nemascabil sau externe mascabile,
unitatea central de prelucrare va asigura legtura cu rutina de tratare a ntreruperii pe baza adresei
furnizate de sistemul de ntreruperi prin intermediul unitii logice combinaionale ADRI.

Organigrama unitii logice combinaionale ADRI este prezentat n Fig 8.8.
0
o 0
B A 1.C =
) B / ( A 3.C : 0
k k
k =
0
0
B 1.C =
7 1 0
7
1 0
1
0
0
RICS .... RICS RICS ) RMI (RCI PRIA ..
.. RICS RICS ) RMI (RCI PRIA RICS ) RMI (RCI PRIA cintr
+
+ + =
8-17
RICS
0
nu
da
ip ADRI = 0001
nu
da
id ADRI =0010
nu
da
inm ADRI = 0011
nu
da
ADRI = 0100
RICS
1
nu
da
ADRI = 0101
RICS
2
nu
da
ADRI = 0110
RICS
3
nu
da
ADRI = 0111
RICS
4
nu
da
ADRI = 1000
RICS
5
nu
da
ADRI = 1001
RICS
6
nu
da
ADRI = 1010
RICS
7
nu
da
ADRI = 1011

Figura 8.8
Organigrama unitii logice combinaionale ADRI

Ecuaiile logice ale ieirilor unitii logice combinaionale ADRI se obin din organigrama prezentat.

De fapt, funciile logice ADRI
i
trebuie sintetizate considerndu-le ca un sistem de funcii
logice. Dup ce adresa furnizat de ADRI se ncarc n AM (pas 96) trebuie s se anuleze bistabilul de
cerere de ntrerupere corespunztor ip,id,inm,intr. tergerea se face utiliznd unitatea logic
combinaional .

PRIL
0:3
= PRIA
0:3
(ip,id,inm,intr).
8.2.6 Descrierea unitii de comand a sistemului de ntreruperi UCSI
UCSI trebuie s realizeze funciile de dialog cu unitatea central de prelucrare i controlul
transferurilor ntre registrele sistemului de ntreruperi. Se vor asocia sistemului de ntreruperi
urmtoarele porturi de intrare ieire:

) RICS RICS RICS RICS RICS RICS RICS RICS
RICS RICS RICS RICS RICS RICS
RICS 2 RICS RICS RICS RICS RICS ( inm id ip inm id ip ip ADRI
7
6 5 4 3 2 1 0
5
4 3 2 1 0
3
1 0
1
0
0

+
+ + + + =
8-18
0FCH - port de intrare/ieire pentru citirea, respectiv nscrierea registrului de mati
RMI;
0FDH - port de intrare/ieire pentru citirea registrului de cereri n curs de servire
RICS, i tergerea ultimului bit trecut n 1 din RICS.

Organigrama general de funcionare a unitii de comand a sistemului de ntreruperi este
prezentat n Fig 8.9.

Programul AHPL de descriere a funcionarii UCSI este urmtorul:

MODULE: Sistemul de ntreruperi al calculatorului didactic

MEMORY: RCI[8];RMI[8];RICS[8]


COMBUS : MAG[16]

1. (2,5)
/* secvena paralel de dialog cu unitatea central de prelucrare (pas 2) i prelucrare cereri (pas 5) */

/* FC , FD sunt semnale asociate decodificatorului de adrese care sunt puse n coresponden cu
adresele 0FCH respectiv 0FDH*/

3. RMI * FC MAG;
RICS * (FD PRIA(RICS)) 0

/* se ncarc registrul de mti */
/* se terge cererea de ntrerupere ce a fost servit */

4.MAG = (RMI!RICS)*(FC,FD)

/* se citete registrul de mti sau de cereri de ntrerupere n curs de servire */

*/ se ateapt luarea n considerare a unei cereri de ntrerupere

6. RICS * PRIA(RCIRMI) 1;

/* se transfer n RCS cererea cu prioritatea cea mai mare i se terge din RCI */
cintr : OUTPUTS
cerint ;.. cerint inm; id; ip; ai; ; sie ; cie AIE[8]; : INPUTS 7 0
); 2 , 4 , 3 /( ) ), ( ), ( ( . 2 FD FC cie sie FD FC cie FD FC sie
2) )/(3.1, sie (sie, 1 . 3
)/(4,2) cie (cie,
)/(5) ai ( . 5
0; ) RMI PRIA(RCI * RCI
8-19

*/ se ateapt stabilirea legturii cu rutina de tratare a ntreruperii */

END SEQUENCE

.
. descris anterior
.
END
*/ U.L.C. de stabilire a cererii cu prioritatea cea mai mare din RCI (registrul cererilor de ntrerupere)

UNIT:PRIA(RICS)
.
. descris anterior
.
END
*/ U.L.C. de stabilire a cererii cu prioritatea cea mai mare din RCS (registrul cererilor n curs de
servire)
UNIT:PRIA(ip,id,inm,intr)
.
. descris anterior
.
END

.
. descris anterior
.
END
*/ U.L.C. de generare a unei cereri de ntrerupere */
UNIT: ADRI(ip;id;inm;RICS)
.
. descris anterior
.
END
MAG * actadri = ADRI
END
*/ U.L.C. de generare a adresei celulei capcan corespunztoare cererii cu prioritatea cea mai mare

___
UNIT: PRIA(RCIRMI)
*/ U.L.C. de stabilire a cererii cu prioritatea cea mai mare ntre ip,id,inm,intr
___
UNIT: CINTR(PRIA(RCIRMI);RICS)
)/(7,5) ai (ai, . 7
8-20
sie (FC FD)
da
7.
6.
5.
4.
3.
2.
1.
da
da
nu
nu
nu
RMIMAG
RCI*PRIA(RCIRMI)0
___
RICS*PRIA(RCIRMI)1
RICS*PRIA(RICS)0
FC
sie
cie (FC FD)
da
da
da
nu
nu
nu
MAG = RMI MAG = RICS
FC
cie
da
da
nu
nu
ai
ai

Figura 8.9
Organigrama de funcionare a unitii de comand a sistemului de ntreruperi (UCSI)














8-21

8.3 Programarea operaiilor de intrare / ieire n ntreruperi
n paragraful 8.1 s-a argumentat pentru necesitatea realizrii interaciunii i sincronizrii prin
ntreruperi, ca o modalitate important pentru creterea productivitii sistemului. Aceast cretere a
productivitii este direct proporional cu cantitatea de date transferate ntre unitatea central de
prelucrare i echipamentul periferic. Programele de intrare/ieire n cazul interaciunii prin ntreruperi
sunt ns mult mai complexe dect n cazul interaciunii n bucla de ateptare. Aceast complexitate
suplimentar ntr-un sistem ce funcioneaz n ntreruperi, se datoreaz faptului c n paralel cu
operaiile de transfer cu echipamentul periferic se execut alte sarcini de prelucrare specificate de
utilizator. Din aceste considerente rezult c eficiena utilizrii mecanismului ntreruperilor va fi
dovedit n special la transferul unor nlnuiri de blocuri de date cu echipamentul periferic ce
funcioneaz n mod bloc. O modalitate de a influena un program de I/E pentru un echipament
periferic este de a partiiona funciile acestuia ntr-o rutin de iniiere a transferului (Iniiator) i o
rutin de servire a ntreruperilor care va controla transferul ntregului bloc (Continuator). Iniiatorul
execut funciile de validare i iniiere a cererilor lansate de programul utilizator spre Programul de
I/E. Programele utilizator i Programul de I/E (cu cele dou seciuni ale sale, Iniiator i Continuator),
fiind programe independente, este necesar definirea unui mod de comunicaie "standard" ntre
acestea. O soluie de a implementa aceast comunicaie const n utilizarea unui Bloc de Control
Transfer (BCT). O structur posibil pentru un BCT este prezentat n Tabelul 8.3 . BCT trebuie s
conin informaii privind caracteristicile transferului i starea transferului n orice moment de timp.

Tabelul 8.3 Structura Blocului de Control Transfer (BCT)
NUME FUNCTIE DESCRIERE FUNCTIE
Stare Acest cuvnt conine starea transferului I/E (n curs de desfurare, terminat,
aparaia unor erori).
Cod operaie Specific tipul operaiei cerute (citire, scriere, poziionare etc.) - nu este necesar
pentru echipamentul periferic cu o singur operaie.
Adresa bloc Adresa blocului (zonei) denumire ce constituie sursa/destinaia transferului.
Contor cuvinte Numrul de cuvinte transferate efectiv.
Adresa terminare Adresa rutinei furnizate de programul utilizator, ce va fi executat de continuator
dup terminarea transferului

Succesiunea operaiilor pentru un realizarea unui transfer de I/E este:
Programul utilizator pregtete BCT n memorie i apeleaz Iniiatorul furnizndu-i
adresa acestuia;
Iniiatorul valideaz transferul i eventual iniiaz operaia specificat n BCT iar apoi
red controlul Programului chemtor pentru a continua cu alte prelucrri;
Continuatorul (rutina de servire a ntreruperii) controleaz n continuare transferul
ntregului bloc;
La terminarea transferului, Continuatorul red controlul rutinei de terminare a crei
adres este furnizat de utilizator.

Rutina de servire a ntreruperii trebuie s ndeplineasc urmtoarele funcii:
Salvarea contextului programului ntrerupt pentru a putea fi restaurat dup tratarea
ntreruperii;
Determinarea sursei de ntrerupere dac pe acelai nivel sunt mai multe echipamente
periferice i stabilirea ordinii de tratare a acestora;
Activarea sistemului de ntreruperi;
8-22
Transferul datelor de la sau la echipamentul periferic;
Transferarea controlului rutinei specificat de programul chemtor la terminarea
transferului;
Refacerea contextului i revenirea n programul ntrerupt.

n figura 8.10 se arat organigramele generale pentru Iniiator i Continuator. Desigur exist
multe alte posibiliti de a realiza aceste programe.
INITIATOR
(CALL din programul Principal)
Validare
transfer
Init BCT
actualizare stare
(transfer in curs de desfasurare)
Cheama rutina de determinare transfer
furnizata de program chemator
Semnalizeaza eroare
Stare op3
Return
Return
EI
Stare op2 Stare op1
Start
3 2 1
nu da
DCD op

Figura 8.10 a)
Organigrama seciunii de iniiere a transferului

n figura 8.10a), s-a prezentat organigrama seciunii de iniiere a transferului. S-a considerat c
n BCT se specific operaia ce trebuie efectuat. Aceasta este necesar dac echipamentul periferic
cruia i s-a asociat BCT poate efectua diferite operaii la diferite momente de timp sau dac acelai
BCT se asociaz unui grup de echipamente periferice.
8-23
da
CONTINUATOR
(activat prin intrerupere)
Transfer in
curs de
desfasurare?
actualizeaza starea
Cheama rutina de
determinare transfer
furnizata de
program chemator
Actualizeaza stare
(eroare transfer )
Refacere stare
Return
Return
Return
EI
Comanda
transfer
urmator
Citeste date
Determina sursa intreruperii
Salveaza starea
nu
nu
nu
da
da
gata transfer
bloc?
Activeaza sistemul de intreruperi
ET (optional)
gata transfer
bloc?
Cheama rutina de
determinare transfer
furnizata de
program chemator

Fig. 8.10 b)

n figura 8.10 b), prin linie punctat s-a evideniat faptul c activarea sistemului de ntreruperi
se poate face imediat dup salvarea strii i determinarea sursei de ntrerupere sau la sfritul execuiei
rutinei de tratare, caz n care aceasta nu poate fi ntrerupt de o alt cerere extern, indiferent de
prioritate. Pentru a exemplifica principiile de scriere a unor programe de I/E n ntreruperi se va scrie,
n continuare, un program pentru cititorul de band de hrtie. Pentru a fixa nivelele de ntrerupere pe
care se vor cupla cererile de la echipamentele periferice trebuie s se in seama de urmtoarele
considerente:
echipamentele periferice critice n sensul c produc o eroare de ritm dac datele nu sunt
preluate/furnizate imediat vor fi cuplate pe nivele cu prioritate mai mare; ex. transfer
programat n mod caracter cu o band magnetic;
8-24
n general echipamentele periferice de intrare vor avea prioritate fa de cele de ieire;
dac n sistem exist echipamente periferice necritice cu un mare volum de date
transferate la vitez mare i echipamente periferice lente cu volum mic de date
transferate, acestea din urm vor fi cuplate pe nivele de prioritate mai mare fa de
primele. n felul acesta se asigur posibilitatea ca i aceste echipamente periferice lente
s fie tratate de unitatea central de prelucrare;
interfeele cu o complexitate mai mare, cu memorii tampon locale etc, vor fi cuplate n
general pe nivele cu prioritate mai mic.

Asignarea nivelurilor de ntrerupere pentru calculatorul didactic este prezentat n tabelul 8.4

Tabelul 8.4 Asignarea nivelelor de ntreruperi pentru calculatorul didactic
Nivel Echipament periferic cuplat la acest nivel
0 - neutilizat
1 - neutilizat
2 - modulul de acces direct la memorie
3 - cititorul de band de hrtie
4 - interfa serial, seciunea de intrare
5 - interfa serial, seciunea de iesire
6 - interfa pentru imprimanta serial
7 - neutilizat