Está en la página 1de 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. 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-1

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-2

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-3

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-4

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

8-5

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-6

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 nu inm nu intr nu

da

da SI activat da I 1 0 Dezactiv intreruperile ai 1 Salveaza IND

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: 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 INPUTS: starta;cintr;cinm;atm OUTPUTS: AIE[8];cm;sm;cie;sie;ai;AM[16];ip;id;inm;actadri COMBUS: MAG[16] 1. SL(SYN(starta))/(1)
2. (inm id ip, inm id ip (intr I))/(91,2.2) /*daca intrerupere interna sau externa nemasc 91, daca nu exista intrerupere executa instructiune 2.2, altfel (intrerupere ext.masc.) continua cu pas 2.1 8-7

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; 8-8

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 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)

/* la pas 84.1 se executa HLT (asteapta intrerupere), daca RI6=1 => EI si DI, pas 89 Daca RI6=0 si RI7=1 => INT, pas 90, altfel (RI6=0 si RI7=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 8-9

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,cinm ADD (ca urmare a executiei instructiunii ADD se pozitioneaza indicatorul de depasire D)

Salveaza IND I 0 Salveaza CP Initiaza tratare intrerupere id

Secventa UCP

Recunoastere intrerupere inm. Salveaza IND I0 Salveaza CP Rutina tratare inm IRET I=1 Reface CP Reface IND IRET I=0

Rutina tratare id

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

I=0

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. 8-10

__ cie __ sie

Unitatea central de prelucrare a calculatorului didactic

___ cintr MAG[16]

_____ cerint0 _____ cerint1

AIE[8]

Sistemul de ntreruperi

_____ 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 __ cie AIE

ai ____ cintr ____ cintr ____ cintr0 Logica de prioritati PRI

UCSI

ip id RICS ADRI inm

RCI ____ cintr7

RMI

actari

MAG

Figura 8.4 Schema bloc a sistemului de ntreruperi 8-11

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: 8-12

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 8-13 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

____ RCI7 RMI7

PRIA7

Figura 8.6 Schema logic a unitii PRIA

8-14

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.

RICS0

___ PRIA0(RCI RMI)

RICS1

___ PRIA1(RCI RMI)

RICS6

___ PRIA6(RCI RMI)

RICS7

___ PRIA7(RCI RMI)

____ cintr

Figura 8.7 Organigrama pentru generarea cererii de ntrerupere CINTR UNIT: INPUTS: OUTPUTS: CINTR A[A] ; B[A] cintr 8-15

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: 1.C 0 = B 0 CINTR A [A] ; B[A] cintr

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) RICS 0 + PRIA1 (RCI RMI) RICS0 RICS1 + .. .. + PRIA 7 (RCI RMI) RICS0 RICS1 .... RICS 7

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.

8-16

da ADRI = 0001 da ADRI =0010 da ADRI = 0011 da ADRI = 0100 da ADRI = 0101 da ADRI = 0110 da ADRI = 0111 da ADRI = 1000 da ADRI = 1001 da ADRI = 1010 da ADRI = 1011 RICS7 nu RICS6 nu RICS5 nu RICS4 nu RICS3 nu RICS2 nu RICS1 nu RICS0 nu inm nu id nu ip 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 + RICS 0 RICS1 RICS 2 RICS3 RICS 4 RICS5 + RICS 0 RICS1 RICS 2 RICS3 RICS 4 RICS5 RICS 6 RICS 7 ) 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:

8-17

0FCH RMI; 0FDH

- port de intrare/ieire pentru citirea, respectiv nscrierea registrului de mati - 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: MEMORY: INPUTS :

Sistemul de ntreruperi al calculatorului didactic RCI[8];RMI[8];RICS[8] 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
3.1 (sie, sie)/(3.1, 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 */


5. (ai)/(5)

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


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

/* se transfer n RCS cererea cu prioritatea cea mai mare i se terge din RCI */ 8-18

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 RICS (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) . . 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
. descris anterior

8-19

1. 2. nu sie (FC FD) 3. da FC RMIMAG RICS*PRIA(RICS)0 da nu 4. da FC da sie nu da cie nu MAG = RMI MAG = RICS cie (FC FD) da nu nu

5. ai 6. da

nu

___ RICS*PRIA(RCIRMI)1

RCI*PRIA(RCIRMI)0 7. ai nu da

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

8-20

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-21

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

nu

Init BCT actualizare stare (transfer in curs de desfasurare)

Semnalizeaza eroare

DCD op 1 Stare op1 2 Stare op2 3 Stare op3

Cheama rutina de determinare transfer furnizata de program chemator

Return

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.

8-22

CONTINUATOR (activat prin intrerupere)

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

da

Transfer in curs de desfasurare?

nu

gata transfer bloc? da actualizeaza starea Cheama rutina de determinare transfer furnizata de program chemator

nu nu gata transfer bloc? da Citeste date Comanda transfer urmator Refacere stare Return EI Return Actualizeaza stare (eroare transfer )

Return

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-23

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

8-24