Sunteți pe pagina 1din 26

CUPRINS

8. SISTEMUL DE MANIPULARE A NTRERUPERILOR........................................................................................2


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

8.

SISTEMUL DE MANIPULARE A NTRERUPERILOR

Obiective:
n acest capitol se trateaz, la nivel de principii, luccrul n ntreruperi. n mod efectiv se arat
modalitile de realizare a nreruperilor 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.

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:
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;
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 se 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.
Tabelul 8.1 Vectorul de ntreruperi pentru calculatorul didactic
B
Nivel 7
A
Nivel 6
9
Nivel 5
8
Nivel 4
ntreruperi externe mascabile
7
Nivel 3
6
Nivel 2
5
Nivel 1
4
Nivel 0
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

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.
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 imn trece n 1 la tranziiile din 0 n 1 ale cererii cimn (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, imn, 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;
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

da

nu
inm

da
nu

SI activat
da

intr
nu

ai 1
1

Salveaza IND

0
Dezactiv
intreruperile

Salveaza CP

salt la rutina
tratare
ai 0

Citeste, interpreteaza si executa instructiunea urmatoare

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:
MEMORY:
INPUTS:
OUTPUTS:
COMBUS:

UNITATEA DE COMANDA A calculatorului didactic


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
starta;cintr;cinm;atm
AIE[8];cm;sm;cie;sie;ai;AM[16];ip;id;inm;actadri
MAG[16]

1. SL(SYN(starta))/(1)
2. (inm id, inm id (intr I))/(91,2.2)

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);
I0
/* 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) * PRIL0:3 0 ; ai * PRIL3 0;
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 rutinii 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

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

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


84. ((RI 6 RI 7 ), RI 6 ) /(90,89)
84.1 (inm, inm (intr I), inm (intr I))/(91,2.1,84.1)

/* execuia instruciunii HLT */


/* o ntrerupere extern nemascabil sau o ntrerupere extern mascabil (cu sistemul de ntreruperi
activat) scoate unitatea central de prelucrare din starea de a;teptare 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 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.

Program principal
EI
cintr,inm

ADD

(ca urmare a executiei instructiunii ADD se pozitioneaza indicatorul de depasire D)

Secventa UCP

Salveaza IND
I
0
Salveaza CP
Initiaza tratare
intrerupere id

Recunoastere intrerupere inm.


Salveaza IND
I
0
Salveaza CP

Rutina tratare
inm

Reface CP
Reface IND
Recunoastere intr.
Salveaza IND
I
0
Salveaza CP

I=0

Rutina tratare
inm
IRET
Reface CP
Reface IND

I=1

IRET

I=0

Rutina tratare
inm

Reface CP
Reface IND

IRET

instructiuni PP

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.

__
cie

_____
cerint0
_____
cerint1

__
sie

Unitatea
central de
prelucrare a
calculatorului
didactic

___
cintr
MAG[
16]

Sistemul de
ntreruperi

AIE[
8]

_____
cerint7

ai
ip
id
inm
actadri
cinm

cinm

Figura 8.3
Schimbul de informaie ntre
unitatea central de prelucrare, sistemul de ntreruperi i interfeele de I/E.
__
sie

ai
____
cintr

__
cie

AIE

UCSI

____
cintr
____
cintr0

RCI
____
cintr7

Logica
de
prioritati

ip
id
RICS

ADRI

inm

PRI

RMI

actari

MAG

Figura 8.4
Schema bloc a sistemului de ntreruperi
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.
RMIi = 1 va inhiba cererea de ntrerupere de pe linia cerinti 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:
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

PRIA0 = 1

da
A0
nu

PRIA1 = 1

da
A1
nu

PRIA2 = 1

da
A2
nu

PRIA6 = 1

da
A6
nu

PRIA7 = 1

da
A7
nu

Figura 8.5
Organigrama de alegere a cererii cu prioritatea cea mai mare - PRIA
UNIT:
INPUTS:
OUTPUTS:
1. B0 = A0
2. k 1

PRIA (A)
A [A]
PRIA [A]

3.B k = /(A k , A 0:k 1 )

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

PRIA (A)
A [A]
PRIA [A ]

2.B1:A -1 =A 0:A 2 B 0:A -2

3.PRIA = A B
END
___
Aceast unitate logic combinaional va avea ca intrri, RCI RMI.
Schema logic, principial, pentru aceast seciune a unitii logice combinaionale este
prezentat n Fig 8.6.
____
RCI0 RMI0

PRIA0

____
RCI1 RMI1

PRIA1

____
RCI2 RMI2

PRIA2

____
RCI3 RMI3

PRIA3

____
RCI6 RMI6

PRIA7

____
RCI7 RMI7

Figura 8.6
Schema logic a unitii PRIA
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.

___
PRIA0(RCI RMI)

___
PRIA1(RCI RMI)

___
PRIA6(RCI RMI)

___
PRIA7(RCI RMI)

RICS6

RICS1

RICS0

RICS7

____
cintr

Figura 8.7
Organigrama pentru generarea cererii de ntrerupere CINTR
UNIT:
INPUTS:
OUTPUTS:

CINTR
A[A] ; B[A]
cintr

1.C 0 = A o B 0

2.k 1
3.C k = A k ( / B 0:k )

4. k k+1

5. (k < A)/(3)
6. cintr = /C0:k
END
sau sub forma compact :
UNIT:
INPUTS:
OUTPUTS:

CINTR
A [A] ; B[A]
cintr

1.C 0 =B 0

2. C1: A-1 = C0: A-2 B1: A-1


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:
cintr = PRIA 0 (RCI RMI) RICS0 + PRIA1 (RCI RMI) RICS0 RICS1 +..
.. + PRIA 7 (RCI RMI) RICS0 RICS1 .... RICS7

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.

da
ip

ADRI = 0001

nu

da
id

ADRI =0010

nu

da
inm

ADRI = 0011

nu

da
RICS0

ADRI = 0100

nu

da
RICS1

ADRI = 0101

nu

da
RICS2

ADRI = 0110

nu

da
RICS3

ADRI = 0111

nu

da
RICS4

ADRI = 1000

nu

da
RICS5

ADRI = 1001

nu

da
RICS6

ADRI = 1010

nu

da
ADRI = 1011

RICS7
nu

Figura 8.8
Organigrama unitii logice combinaionale ADRI
Ecuaiile logice ale ieirilor unitii logice combinaionale ADRI se obin din organigrama prezentat.
ADRI 0 = ip + ip id inm + ip id inm ( RICS0 RICS1 + RICS0 RICS1 RICS2 RICS3 +
RICS0 RICS1 RICS2 RICS3 RICS4 RICS5 +
RICS0 RICS1 RICS2 RICS3 RICS4 RICS5 RICS6 RICS7 )

De fapt, funciile logice ADRIi 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 .
PRIL0:3 = PRIA0: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:
0FCH
RMI;

- port de intrare/ieire pentru citirea, respectiv nscrierea registrului de mati


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]

INPUTS :

AIE[8];cie; sie; ai; ip; id; inm; cerint 0 ;..cerint 7

OUTPUTS :

cintr

COMBUS : MAG[16]
1. (2,5)
/* secvena paralel de dialog cu unitatea central de prelucrare (pas 2) i prelucrare cereri (pas 5) */
2. ( sie ( FC FD ), cie ( FC FD ), sie cie FC FD ) /(3,4,2);

/* 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 ;
(sie, sie)/(3,2)

/* se ncarc registrul de mti */


/* se terge cererea de ntrerupere ce a fost servit */
4.MAG = (RMI!RICS)*(FC,FD)
(cie, cie)/(4,2)

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


*/ se ateapt luarea n considerare a unei cereri de ntrerupere
5. (ai)/(5)

6. RICS * PRIA(RCIRMI) 1;
RCI * PRIA(RCI RMI) 0;

/* se transfer n RCS cererea cu prioritatea cea mai mare i se terge din RCI */
7. (ai, ai)/(7,5)

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


END SEQUENCE
___
UNIT: PRIA(RCIRMI)
.
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
*/ U.L.C. de stabilire a cererii cu prioritatea cea mai mare ntre ip,id,inm,intr
___
UNIT: CINTR(PRIA(RCIRMI);RICS)
.
.
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

1.
2.
nu
sie (FC FD)
3.

da

da

nu

nu

cie (FC FD)

FC

4.

RMI
MAG

RICS*PRIA(RICS)
0

da

da

nu
FC

da

MAG = RMI

MAG = RICS

sie
nu

da
cie
nu

nu

5.
ai
6.

da
___
RICS*PRIA(RCI
RMI)
1

RCI*PRIA(RCI
RMI)
0
7.

da
ai
nu

Figura 8.9
Organigrama de funcionare a unitii de comand a sistemului de ntreruperi (UCSI)
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;
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)

Start

da

Validare
transfer

Init BCT
actualizare stare
(transfer in curs de desfasurare)

Stare op1

Stare op2

Semnalizeaza eroare

Cheama rutina de determinare transfer


furnizata de program chemator

DCD op
1

nu

Return

Stare op3

EI

Return

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.

CONTINUATOR
(activat prin intrerupere)

Salveaza starea
Determina sursa intreruperii
Activeaza sistemul de intreruperi
ET (optional)

da

gata transfer
bloc?
da
actualizeaza starea

Transfer in
curs de
desfasurare?

nu
nu
gata transfer
bloc?
da

Cheama rutina de
determinare transfer
furnizata de
program chemator

nu

Citeste date
Comanda
transfer
urmator

Return

Actualizeaza stare
(eroare transfer )

Cheama rutina de
determinare transfer
furnizata de
program chemator

Refacere stare
Return
EI
Return

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;
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 ieire
6
- interfa pentru imprimanta serial
7
- neutilizat