Sunteți pe pagina 1din 33

CAPITOLUL I

INTRODUCERE

Unitatea centrală de procesare a calculatorului (UCP) împreună cu modulele de memorie


reprezintă creierul sistemului de calcul. La fel ca şi omul, sistemul de calcul nu poate funcţiona
corect doar cu creierul, ci are nevoie şi de extensii care să culeagă informaţiile necesare din mediul
extern, precum şi extensii de afişare a informaţiilor existente şi a operaţiilor executate. Acestea
compun sistemul de intrare/ieşire (I/E) a calculatorului şi efectuează transferul de date între
memoria principală a UCP şi mediul exterior.
Performanţele unui sistem de calcul depind de relaţia existentă între procesor şi memorie, de o
parte, şi echipamentele de I/E, de partea cealaltă. Cele două caracteristici care influenţează
performanţele unui sistem de calcul sunt timpul de acces şi rata de transfer a dispozitivelor de I/E,
datorită faptului că un procesor poate prelucra instrucţiunile doar la rata la care acestea îi sunt
furnizate. Astfel, un procesor cu viteză infinită va prelucra informaţiile pe care la primeşte de la
echipamentele de intrare la rata cu care acestea îi sunt furnizate, şi va afişa rezultatul prelucrării la
rata de transfer al echipamentelor de ieşire. În cazul echipamentelor periferice mai puţin
performante, cu rate mici de transfer şi cu timpi ridicaţi de acces, se va creea impresia unui sistem
de calcul încetinit, cu performanţe reduse, mult sub aşteptările utilizatorului, ceea ce va duce la
nemulţumirea acestuia referitoare la performanţele acestuia. De accea este de notat faptul că o
memorie rapidă nu poate furniza procesorului decât datele care au fost furnizate din exterior şi doar
pe o magistrală liberă în acel moment.
Mult timp echipamentele de I/E au fost neglijate de proiectanţii arhitecturilor de calculatoare,
ocupând un loc secundar în preocupările acestora, atitutidine revizuită în ultimii ani, când creşterea
performanţelor echipamentelor de I/E a cunoscut un reviriment prin punerea la punct a noi interfeţe
şi protocoale de transmitere de date între UCP şi dispoziitivele de I/E care să se apropie ca
performanţe de noile procesoare şi module de memorie. De-a lungul a peste trei decenii au existat
păreri conform cărora viteza sitemului de I/E nu contează deoarece există întotdeauna un alt proces
în execuţie în timp ce un alt proces pentru un periferic este în aşteptare. Argumentul suprem
împotriva acestei teorii este acela că în cazul utilizatorului unic pe UCP există mai puţine procese
decât în cazul prelucrării cu diviziunea timpului, ceea ce face ca unicul “proces” în aşteptare să fie
utilizatorul însuşi.

1.1. Structura unui sistem de I/E

Principalele componente ale unui sistem de I/E sunt următoarele:


• modulele de I/E;
• dispozitivele periferice;
• magistralele - interconexiunile dintre memorie şi echipamentele periferice;
• interfeţele.
În figura 1 este prezentată structura unui sistem de calcul împreună cu sistemul de I/E:

1
SISTEME DE INTRARE – IEŞIRE

Figura 1. Structura unui sistem de calcul cu sitem tipic de I/E

După cum se observă din figura de mai sus echipamentele periferice nu se conectează direct la
magistrala sitemului ci se utilizezază module de I/E. Motivele pentru care s-a apelat la această
structură sunt următoarele:
• incorporarea în UCP a protocoalelor de comunicare pentru controlul dispotivelor de
I/E ar fi mult prea costisitoare şi nu ar fi fiabilă;
• rata scăzută de transfer a echipamentelor periferice;
• formatele datelor şi lungimile cuvintelor, deseori diferite făţă de cele ale procesorului,
utilizate de echipamentele periferice.

1.2. Funcţii ale modulelor de I/E

Modulul de I/E are rolul de a efectua controlul dispozitivelor externe şi a transferului datelor
între acestea şi memoria principală sau registrele UCP. De aceea un modul de I/E trebuie să aibă
două interfeţe:
• una internă - cu UCP şi memoria principală;
• una externă – cu dispozitivul extern.
Funcţiile principale sunt:
• control şi sincronizare;
• comunicaţia cu UCP;
• comunicarea cu dispozitivele externe;
• bufferarea datelor;
• detecţia erorilor.
a) control şi sincronizare
Este necesar pentru coordonarea fluxului de date între resursele interne şi dispozitele externe
şi poate cuprinde următoarele etape:
• UCP interoghează modulul de I/E referitor la starea dispozitivului periferic;
• Modulul returnează starea dispozitivului;
• Dacă dispozitivul este operaţional UCP solicită transmiterea datelor către dispozitiv
printr-o comandă adresată modulului;
• Modulul preia un octet sau cuvânt de date de la dizpozitivul periferic;

2
Capitolul1 - Introducere

• Datele sunt transferate de la modul la UCP.

b) comunicaţia cu UCP
Fiecare interacţiune dintre UCP şi modulul de I/E implică una sau mai multe acţiuni arbitrare
ale magistralei centrale a sistemului. Comunicaţia cu UCP cuprinde:
• decodificarea comenzilor - de obicei comenzile de la UCP la modulul de I/E sunt
trnasmise pe magistrala de control, dar unele comenzi au parametrii care sunt transmişi
pe magistrala de date;
• transmiterea datelor – se efectuaează pe magistrala de date;
• raportarea stărilor – cunoaşterea stării modulului de I/E este importantă; modulul
poate fi ocupat cu transmiterea unei comenzi precedente (busy) sau poate fi pregătit să
preia instrucţiunea (ready); de asemenea se raportează şi diferitele stări de eroare;
• recunoaşterea adreselor – fiecărui echipament periferic îi corespunde o adresă de
memorie pe care modulul de I/E trebuie să o recunoască pentru a şti cărui dispotiv îi
transmite datele şi instrucţiunile.
c) comunicaţia cu dispozitivele externe
Se realizează prin semnale de control, de stare şi de date.
d) bufferarea datelor
Rata de tranfer pentru cele mai multe periferice este mai redusă decât cea de tranfer la sau de
la memorie. Modulul de I/E bufferează datele transmise de la memoria principală şi le transmite
către periferic cu rata acestuia de transfer, deci modulu trebuie să opereze atât la viteza UCP cât şi
la cea a perifericului.
e) detecţia erorilor
Modulul de I/E trebuie să detecteze erorile şi să le raporteze UCP. Clase de erori:
• disfuncţionalităţi mecanice şi electrice ale dispozitivului;
• modificarea datelor transmise de periferic la modul.
Pentru prevenirea şi detectarea acestora se utilizează coduri detectoare de erori, cum ar fi bitul
de paritate.

1.3. Structura modulului de I/E

Modulele de I/E diferă ca şi complexitate şi ca număr de dispozitivele externe pe care le


controlează. În figura 2 este prezentată configurarea schemtică a unui modul de I/E. Datele
transferate de la şi la modul sunt bufferate în unul sau mai multe registre de date. De asemenea
există unul sau mai multe registre de stare, care pot funcţiona şi ca registre de control.
Logica din cadrul modulului interacţionează cu UCP printr-un set de linii de control. De
asemenea modulul recunoaşte şi generează adresele dispozitivelor pe care le gestionează. Unele
module pot ascunde detaliile referitoare la sincronizarea datelor, formatul acestora sau detalii
electro-mecanice referitoare la periferic astfel încât UCP poate realiza doar instrucţiuni simple de
citire şi scriere sau eventual de deschidere sau închidere a unui fişier.

3
SISTEME DE INTRARE – IEŞIRE

Figura 2. Schema bloc a unui modul de I/E

1.4. Interfaţa externă a modulului de I/E


Aceasta trebuie să fie adaptată tipului de periferic şi modului său de funcţionare. Există două
tipuri principale de interfeţe externe:
• interfeţe paralele – care dispun de linii multiple de conectare a modulului de I/E cu
perifericul, existând posibilitatea transmiterii simultan a mai multor biţi (octet sau
cuvânt) şi se utilizează pentru transferul către periferice rapide (cum ar fi discurile
magnetice) pe distanţe mici;
• interfeţe seriale – care dispun de o singură linie pentru transmiterea datelor, biţii fiind
transmişi succesiv; se utilizează pentru terminale, în special, pentru unele dispozitive
dedicate şi pentru transmisia de date la distanţă.

1 .5. Tipuri de dispozitive periferice


Există trei categorii de dispozitive periferice, după utilizarea acestora:
1. Pentru transportul datelor între procesor şi utilizator: dispozitive de achiziţie şi prezentare
a datelor.
2. Pentru transferul datelor între mai multe procesoare: dispozitive de reţea.
3. Pentru memorarea informaţiilor, ca parte a ierarhiei de memorii a procesorului:
dispozitive de memorare.
Anumite periferice au funcţii multiple. În Tabelul 1 şi Tabelul 2 se prezintă cerinţele privind
ratele de transfer pentru unele dispozitive tradiţionale de prezentare a datelor, respectiv de memorare.

4
Capitolul1 - Introducere

Tabelul 1. Ratele de transfer ale unor dispozitive tradiţionale de prezentare a datelor


Dispozitiv Rata de transfer
Senzori 1 B/s - 1 KB/s
Tastatură 10 B/s
Linie de 56 Kbit/s (linie
Display 2 KB/s
Imprimantă 1 - 5 KB/s

Tabelul 2. Parametrii unor dispozitive tradiţionale de memorare


Dispoziti Timp de acces Rata de transfer Capacitate
Disc 8 ms 80 MB/s 50 GB
Bandă O (sec) 3 - 6 MB/s 25 GB (pe casetă)

În timp ce dispozitivele tradiţionale de prezentare a datelor sunt relativ lente comparativ cu


cele de memorare, situaţia este diferită în cazul celor utilizate pentru multimedia. Documentele
multimedia constau din:
• grafică;
• video;
• audio (sinteza şi recunoaşterea vocii).
În Tabelul 3 se prezintă cerinţele principale pentru aceste medii.

Tabelul 3. Parametrii unor dispozitive multimedia


Rata de transfer Întârziere maximă
Grafică 1 MB/s 1 -5s
Video 400 MB/s 20-33 ms
Audio 8 KB/s 50 - 300 ms
Fiecare mediu necesită o putere considerabilă de calcul.
Pentru prelucrarea imaginilor grafice, au fost create procesoare specializate (transformarea
spaţiului culorilor, modelare 3-D, animaţie).
în cazul imaginilor video, cerinţele cresc substanţial, deoarece o nouă imagine este creată la
fiecare 1/30 s (33 ms). Se pot utiliza tehnici de compresie şi interpolare a datelor în scopul reducerii
ratei de transfer necesare pentru procesarea video în timp real.
Prelucrarea semnalelor audio cu o rată de 2-8 KB/s necesită o putere considerabilă de calcul,
pentru crearea sau recunoaşterea diferitelor foneme în timp real.

1.6. Module de I/E


1.6.1. Funcţiile modulelor de I/E
Un modul de I/E are rolul de a efectua controlul dispozitivelor externe şi transferul datelor
între aceste dispozitive şi memoria principală şi/sau registrele UCP. Deci, un modul de I/E trebuie să
aibă o interfaţă internă în cadrul calculatorului (cu UCP şi memoria principală) şi o interfaţă externă
(cu dispozitivul extern).
Funcţiile şi cerinţele principale ale unui modul de I/E se încadrează în următoarele categorii :
• control şi sincronizare;
• comunicaţia cu UCP;
• comunicaţia cu dispozitivele externe;
• bufferarea datelor;
• detecţia erorilor.

5
SISTEME DE INTRARE – IEŞIRE

În orice moment de timp, UCP poate comunica cu unul sau mai multe dispozitive externe.
Resursele interne, ca memoria internă şi magistrala sistem, trebuie partajate între mai multe activităţi,
inclusiv operaţiile de l/E ale datelor. Funcţia de I/E necesită deci o operaţie de control şi sincronizare,
pentru coordonarea fluxului de date între resursele interne şi dispozitivele externe. De exemplu,
controlul transferului de date de la un dispozitiv extern la UCP poate cuprinde următoarele etape:
1. UCP interoghează modulul de I/E pentru a testa starea dispozitivului conectat.
2. Modulul de I/E returnează starea dispozitivului.
3. Dacă dispozitivul este operaţional şi este pregătit pentru transmisia datelor, UCP solicită
transferul datelor, printr-o comandă adresată modulului de I/E.
4. Modulul de I/E preia un octet sau cuvânt de date de la dispozitivul de I/E.
5. Datele sunt transferate de la modulul de I/E la UCP.
Dacă sistemul utilizează o magistrală, fiecare interacţiune dintre UCP şi modulul de I/E
implică una sau mai multe operaţii de arbitrare a magistralei.
Din exemplul precedent rezultă că modulul de I/E trebuie să permită comunicaţia cu UCP şi
cu dispozitivul extern. Comunicaţia cu UCP cuprinde:
• Decodificarea comenzilor
Modulul de I/E acceptă comenzi de la UCP. Aceste comenzi sunt transmise de obicei
ca semnale pe magistrala de control. De exemplu, un modul de I/E pentru o unitate de
disc poate accepta următoarele comenzi: CITIRE SECTOR, SCRIERE SECTOR,
CĂUTARE PISTĂ. Unele comenzi au un parametru care este transmis pe magistrala de
date.
• Transmiterea datelor
Datele sunt transmise între UCP şi modulul de I/E pe magistrala de date.
• Raportarea stării
Deoarece perifericele sunt mai lente, este importantă cunoaşterea stării modulului de
I/E. De exemplu, un modul poate fi ocupat cu execuţia comenzii precedente de I/E,
ceea ce poate fi raportat printr-un semnal de stare. Semnalele obişnuite de stare sunt
BUSY şi READY. Există de asemenea semnale pentru raportarea diferitelor condiţii
de eroare.
• Recunoaşterea adreselor
Un modul de I/E trebuie să recunoască o adresă unică pentru fiecare periferic pe care îl
controlează.
Comunicaţia cu dispozitivele externe se realizează prin semnale de control, de stare şi de
date.
Bufferrarea datelor este o funcţie esenţială a unui modul de I/E. în timp ce rata de transfer la
sau de la memorie sau UCP este ridicată, pentru cele mai multe periferice această rată este cu câteva
ordine de mărime mai mică. Datele transferate de la memoria principală sunt bufferate de modulul de
I/E şi apoi sunt transmise la periferic cu rata acestuia. Modulul de I/E trebuie deci să opereze atât la
viteza UCP, cât şi la cea a memoriei.
În final, un modul de I/E trebuie să efectueze detecţia erorilor şi raportarea acestora către
UCP. O clasă a erorilor cuprinde disfuncţionalităţi mecanice şi electrice raportate de dispozitiv. O
altă clasă constă în modificarea accidentală a datelor transmise de periferic la modulul de I/E. Se
utilizează anumite coduri detectoare de erori pentru detectarea erorilor de transmisie, de exemplu
bitul de paritate.

1.6.2. Structura unui modul de I/E


Modulele de I/E diferă considerabil ca şi complexitate şi număr de dispozitive externe pe care
le controlează. O schemă bloc generală a unui modul de I/E este prezentată în Figura 1.2.
Modulul se conectează cu restul sistemului de calcul printr-un set de linii (de exemplu,
magistrala sistem). Datele transferate la şi de la modul sunt bufferate într-unul sau mai multe registre
de date. Pot exista de asemenea unul sau mai multe registre de stare. Un registru de stare poate
funcţiona şi ca registru de control, pentru a primi informaţii de control detaliate de la UCP. Logica

6
Capitolul1 - Introducere

din cadrul modulului interacţionează cu UCP printr-un set de linii de control. Acestea sunt utilizate
de UCP pentru a transmite comenzi la modulul de I/E. Anumite linii de control pot fi utilizate de
modulul de I/E, de exemplu ca semnale de arbitraj sau de stare.
Modulul trebuie de asemenea să recunoască şi să genereze adresele asociate cu dispozitivele
pe care le controlează. Fiecare modul de I/E are o adresă unică, sau dacă acesta controlează mai
multe dispozitive externe, un set unic de adrese. în sfârşit, fiecare modul de I/E conţine o logică
specifică interfeţei cu fiecare dispozitiv pe care îl controlează.

Figura 2. Structura unui modul de I/E


Modulele de I/E pot avea complexităţi diferite. Unele module pot ascunde detalii ca
sincronizarea datelor, formatul acestora şi detaliile electromecanice ale unui dispozitiv extern,
astfel încât UCP poate executa numai comenzi simple de citire şi scriere, eventual de deschidere
şi închidere pentru fişiere, în cazul altor module, cele mai multe operaţii de control ale
perifericelor sunt vizibile de către UCP.
Un modul de I/E care are o interfaţă de nivel înalt cu UCP, eliberând UCP de sarcina
controlului perifericelor, este numit canal de I/E sau procesor de I/E. Un modul de I/E care este
simplu şi necesită un control detaliat al UCP este numit de obicei controler de I/E sau controler de
dispozitiv. Controlerele de I/E se utilizează de obicei la microcalculatoare, în timp ce canalele de
I/E sunt j utilizate la calculatoarele mari (mainframe).
Modulele de I/E complexe (canalele de I/E) sunt partiţionate sub forma unor canale de I/E
care controlează unul sau mai multe controlere de I/E.

1.7. Interfaţa externă


Interfaţa dintre un modul de I/E şi un periferic trebuie să fie adaptată tipului de periferic şi
modului de funcţionare al acestuia. Există două tipuri principale de interfeţe. Interfeţele paralele
dispun de linii multiple care conectează modulul de I/E cu perifericul, fiind transferaţi simultan mai
mulţi biţi (un octet sau cuvânt). În cazul interfeţelor seriale, există o singură linie utilizată pentru
transmiterea datelor, biţii fiind transmişi succesiv. Interfeţele paralele se utilizează în mod obişnuit
pentru periferice mai rapide, ca discurile magnetice. Interfeţele seriale sunt utilizate mai ales pentru
terminale şi unele tipuri de imprimante.
În ambele cazuri, modulul de I/E trebuie să execute un dialog cu perifericul. De exemplu,
dialogul pentru o operaţie de scriere are următoarea formă generală:
1. Modului de I/E activează un semnal de control, cerând permisiunea de a transmite
datele.
2. Perifericul confirmă cererea.
3. Modulul de I/E transferă datele (un octet, un cuvânt sau un bloc).
4. Perifericul confirmă recepţia datelor. O operaţie de citire are loc în mod similar.

1.8. Metode de transfer al datelor


Există următoarele metode principale de realizare a transferurilor de date:

7
SISTEME DE INTRARE – IEŞIRE

• transferul programat;
• transferul prin întreruperi;
• transferul prin acces direct la memorie (DMA);
• transferul prin canale de I/E.

1.8.1. Transferul programat


În acest caz, datele sunt transferate între UCP şi modulul de I/E. UCP execută un program
prin care controlează direct operaţia de I/E: detectarea stării perifericului, transmiterea unei comenzi
de citire sau scriere, şi transferul datelor. După transmiterea unei comenzi modulului de I/E, UCP
trebuie să aştepte până la terminarea operaţiei de I/E. Testarea stării perifericului se realizează de
obicei prin citirea stării, executând o buclă de instrucţiuni.
La execuţia unei instrucţiuni de I/E, UCP transmite o comandă modulului de I/E
corespunzător. Modulul de I/E execută acţiunea respectivă şi setează biţii corespunzători în registrul
de stare. UCP trebuie să testeze periodic starea modulului de I/E pentru a detecta terminarea
operaţiei.

1.8.1.1. Comenzi de I/E


Pentru execuţia unei instrucţiuni de I/E, UCP transmite o adresă, specificând modulul de I/E
şi dispozitivul extern, şi o comandă de I/E. Există patru tipuri de comenzi de I/E pe care le poate
recepţiona un modul de I/E atunci când este adresat de UCP. Acestea sunt clasificate ca fiind de
control, de test, de citire şi de scriere.
O comandă de control este utilizată pentru activarea unui periferic şi pentru specificarea
operaţiei de executat. De exemplu, pentru o unitate de bandă magnetică, se poate specifica o
operaţie de rebobinare sau poziţionare pe următoarea înregistrare. Aceste comenzi sunt specifice
diferitelor tipuri de periferice.
O comandă de test este utilizată pentru testarea diferitelor condiţii de stare asociate cu un
modul de I/E şi perifericele acestuia. UCP trebuie să determine dacă:
• perifericul este operaţional şi este disponibil;
• ultima operaţie lansată este terminată;
• au apărut sau nu erori la execuţia operaţiei.
O comandă de citire determină obţinerea unui octet sau cuvânt de
date de la periferic şi depunerea acestuia într-un buffer intern (registrul
de date al modulului de I/E). UCP poate obţine datele prin plasarea lor
pe magistrala de date de către modulul de I/E.
O comandă de scriere determină preluarea de către modulul de I/E
a unui octet sau cuvânt de pe magistrala de date şi transmiterea acestuia
perifericului.
Figura 3 prezintă un exemplu de utilizare a transferului programat
pentru citirea unui bloc de date de la un periferic (de exemplu, o
înregistrare de pe o bandă) în memorie. Pentru fiecare cuvânt citit, UCP
trebuie să rămână într-un ciclu de testare a stării pentru a determina dacă
respectivul cuvânt este disponibil în registrul de date al modulului de
I/E.

1.8.1.2. Instrucţiuni de I/E


În general, există mai multe dispozitive conectate la sistem prin
module de l/E. Fiecărui dispozitiv i se atribuie o adresă unică. Comanda
de I/E transmisă de UCP conţine adresa dispozitivului. Deci fiecare
modul de I/E trebuie să interpreteze liniile de adrese pentru a determina
dacă respectiva comandă îi este destinată. Figura 3. Utilizarea
Atunci când UCP, memoria principală şi sistemul de I/E transferului programat
partajează aceeaşi magistrală, sunt posibile două moduri de adresare: pentru citirea unui
adresare cu mapare în memorie şi adresare izolată. bloc de date
În cazul adresării cu maparea în memorie, există un singur spaţiu de
adrese pentru locaţiile de memorie şi dispozitivele de I/E. UCP tratează registrele de stare şi de date
ale modulelor de I/E ca locaţii de memorie şi utilizează aceleaşi instrucţiuni atât pentru accesul la
memorie cât şi la dispozitivele de I/E. De exemplu, cu 10 linii de adresă pot exista în total 1024
locaţii de memorie şi adrese de I/E, în orice combinaţie. în acest caz este necesar un singur semnal
de citire şi unul de scriere în memorie.

8
Capitolul1 - Introducere

În cazul adresării izolate, spaţiul adreselor de I/E este izolat de cel al memoriei. Magistrala
trebuie să aibă linii de citire şi scriere pentru memorie şi linii de comandă pentru intrare şi ieşire.
Liniile de comandă specifică dacă o adresă se referă la o locaţie de memorie sau un dispozitiv de
I/E. Pentru ambele este disponibilă toată gama adreselor. Pentru 10 linii de adresă, pot exista 1024
locaţii de memorie şi 1024 adrese de I/E.
Se exemplifică cele două tehnici de I/E programate. Figura 2.2 prezintă interfaţa pentru
tastatura unui terminal, din punctul de vedere al programatorului.

Figura 2.2. Interfaţa pentru tastatura unui terminal

Pentru I/E mapate în memorie, se presupune că există 10 biţi de adresă, spaţiul de adrese fiind
format din 512 locaţii de memorie (locaţiile 0-1 FFh) şi până la 512 adrese de I/E (locaţiile 200h-
3FFh). Interfaţa cu tastatura utilizează două adrese. Adresa 300h este utilizată pentru registrul de
date, iar adresa 301 h pentru registrul de stare, care este utilizat şi ca registru de control pentru
recepţionarea comenzilor UCP. Programul prezentat va citi un octet de la tastatură într-un registru
acumulator al UCP. De notat că UCP execută o buclă de program până când octetul este disponibil.

Adresa Instrucţiune Operand Comentariu


100h Load AC 1
101h Store AC 301 h Start citire tastatură
102h Load AC 301 h Citire octet de stare
103h Jump if Sign = 0 102h Buclare
104h Load AC 300h Citire octet de date

Pentru I/E izolate, presupunem că porturile de I/E sunt accesibile numai prin comenzi de l/E
speciale, care activează liniile de comandă de I/E de pe magistrală.
Adresă Instrucţiune Operand Comentariu
1OOh Start i/E 5 ; Start citire tastatură
101 h Test l/E 5 ; Test sfârşit operaţie
102h Jump Not Ready 101h ; Buclare
103h In 5 ; Citire octet de date
Pentru cele mai multe UCP, există un număr relativ mare de instrucţiuni diferite pentru
referirea la memorie. Dacă se utilizează I/E izolate, există un număr mic de instrucţiuni de I/E. Deci,
un avantaj al I/E mapate în memorie este că se poate utiliza un set extins de instrucţiuni, permiţând o
programare mai eficientă. Un dezavantaj este că se utilizează o parte din spaţiul de adrese al
memoriei.
Dezavantajul transferului programat, în varianta realizată prin citirea stării, este că UCP trebuie
să aştepte până când perifericul devine disponibil, sau până la terminarea operaţiei. Performanţele
sistemului vor fi mult reduse. Pentru eliminarea acestui dezavantaj se poate utiliza transferul
programat prin întreruperi.

1.8.2. Transferul prin întreruperi


18.2.1. Principiul transferului prin întreruperi
Întreruperea reprezintă suspendarea execuţiei unui program de către un semnal extern UCP,
indicând producerea unui eveniment extern, sau de către un eveniment intern, indicând apariţia unei
situaţii de excepţie în funcţionarea UCP. întreruperea se produce la terminarea execuţiei instrucţiunii
curente, deoarece execuţia unei instrucţiuni nu este întreruptibilă.

9
SISTEME DE INTRARE – IEŞIRE

Dacă sistemul de întreruperi este validat (activat), se apelează o rutină de tratare a întreruperii,
asociată evenimentului care a generat întreruperea. După servirea întreruperii, se reia programul
întrerupt, din starea existentă în momentul apariţiei întreruperii. În acest scop trebuie să se salveze
contextul de lucru al UCP:
• adresa de revenire, care reprezintă conţinutul contorului de program
din momentul apariţiei întreruperii;
• indicatorii de condiţii şi de stare ai UCP;
• registrele interne utilizate de rutina de tratare;
• registrele de comandă de I/E care sunt modificate de rutina de tratare.

Sursele de întreruperi pot fi:


• dispozitivele periferice care solicită servicii (de exemplu, cereri de transfer);
• elemente hardware de supraveghere a funcţionării normale a sistemului: circuite de detectare
a erorii de paritate a memoriei, de sesizare a căderii tensiunii de alimentare etc;
• evenimente interne: depăşiri la operaţiile aritmetice, instrucţiuni inexistente etc.
Există două metode pentru alegerea adresei rutinei de tratare. Ele se numesc întreruperi
nevectorizate, respectiv vectorizate. În cazul întreruperilor nevectorizate, rutina de tratare se află la o
adresă fixă în memorie. La întreruperile vectorizate, adresa este furnizată procesorului de către sursa
de întrerupere, sub forma unui vector de întrerupere. La unele sisteme, vectorul de întrerupere indică
adresa de început a rutinei de tratare. La alte sisteme, vectorul de
întrerupere reprezintă o referinţă la o locaţie de memorie unde este
memorată adresa de început a rutinei de tratare.
În cazul transferului prin întreruperi, UCP transmite o comandă
modulului de I/E, după care execută alte operaţii. Modulul de I/E va
întrerupe UCP atunci când este pregătit pentru transferul datelor,
UCP va executa transferul, după care va continua operaţiile
anterioare.
Pentru intrare, modulul de I/E primeşte o comandă de citire de
la UCP. Modulul de I/E va începe citirea datelor de la un periferic
asociat. După depunerea datelor în registrul de date al modulului,
acesta generează o cerere de întrerupere, şi apoi aşteaptă până când
datele sunt solicitate de UCP. în acest moment, modulul plasează
datele pe magistrala de date, fiind pregătit pentru o altă operaţie de
I/E.
Din punctul de vedere al UCP, operaţiile efectuate pentru
intrare sunt următoarele. UCP transmite o comandă de citire, iar apoi
execută alte operaţii (alte programe în cazul multiprelucrării). La
sfârşitul fiecărei instrucţiuni, UCP testează dacă există cereri de
întrerupere. La apariţia unei cereri de la un modul de I/E, UCP
salvează contextul programului şi execută rutina de tratare a
întreruperii, în această rutină UCP citeşte un cuvânt de date de la Figura 5. Utilizarea
transferului prin întreruperi
modulul de I/E şi îl depune în memorie. Apoi reface contextul pentru citirea unui bloc de
programului întrerupt şi continuă execuţia acestuia. Această
procedură continuă până când se termină de transferat numărul de cuvinte necesare.
Figura 5 prezintă utilizarea transferului prin întreruperi pentru citirea unui bloc de date.

1.8.2.2. Sisteme de întreruperi multiple


La majoritatea sistemelor, există mai multe surse de întrerupere. Pentru înregistrarea cererilor
de întrerupere există bistabili indicatori prevăzuţi în acest scop, care pot fi organizaţi sub forma unui
registru al cererilor de întrerupere.
Pentru a se realiza un control individual asupra surselor de întrerupere, pot exista bistabili
mască, organizaţi într-un registru al măştilor de întrerupere, având acelaşi număr de poziţii ca şi
10
Capitolul1 - Introducere

registrul cererilor de întrerupere. Bistabilii din registrul mască pot fi setaţi şi resetaţi prin program.
Dacă un bistabil este setat, întreruperea corespunzătoare este validată, în caz contrar ea este
invalidată.
Într-un sistem cu întreruperi multiple, apar două probleme principale:
• identificarea sursei de întrerupere;
• alegerea întreruperii care va fi deservită în cazul apariţiei mai multor cereri simultane.
Pentru identificarea sursei de întrerupere se utilizează următoarele tehnici:
• linii multiple de întrerupere;
• polling software;
• conectarea dispozitivelor în lanţ (polling hardware);
• arbitrajul de magistrală.
Cea mai simplă soluţie este de a se prevedea linii multiple de întrerupere între UCP şi modulele
de l/E. Totuşi, nu este practic să se dedice un număr prea mare de linii ale magistralei sau de pini ai
procesorului pentru liniile de întrerupere. Ca urmare, chiar dacă se utilizează linii multiple de
întrerupere, este probabil că la fiecare linie vor fi legate mai multe module de I/E. Deci, pentru
fiecare linie trebuie să se utilizeze una din celelalte tehnici.
O altă alternativă de identificare este prin polling software. La detectarea unei întreruperi, UCP
execută o rutină de tratare a întreruperii a cărei sarcină este de a interoga fiecare modul de I/E pentru
a determina modulul care a generat întreruperea. Pentru interogare se poate utiliza o linie de
comandă separată (de exemplu, TEST I/E). în acest caz, UCP activează această linie şi depune
adresa unui anumit modul de I/E pe liniile de adresă. Modulul de I/E răspunde dacă a generat
întreruperea. O altă posibilitate este ca fiecare modul de I/E să conţină un registru de stare adresabil.
UCP citeşte registrul de stare al fiecărui modul de I/E pentru a identifica modulul care a generat
întreruperea.
Dezavantajul metodei de polling software este că se consumă un anumit timp al UCP. O
tehnică mai eficientă este utilizarea unui lanţ de dispozitive (daisy chain), care permite de fapt un
polling hardware. Toate modulele de I/E partajează o linie comună de cerere de întrerupere.
Linia de achitare a întreruperii este înlănţuită prin toate modulele. La detectarea unei cereri de
întrerupere, UCP activează un semnal de achitare a întreruperii. Acest semnal se propagă printr-o
serie de module de I/E până când ajunge la modulul solicitant, care răspunde de obicei prin plasarea
unui vector de întrerupere pe magistrala de date, reprezentând adresa modulului de I/E sau un alt
identificator unic. UCP utilizează vectorul ca un pointer la rutina de tratare corespunzătoare
modulului respectiv. Astfel se elimină necesitatea execuţiei prealabile a unei rutine generale de
tratare a întreruperii.
Arbitrajul de magistrală utilizează de asemenea întreruperile vectorizate. Cu această tehnică,
un modul de I/E trebuie să preia mai întâi controlul asupra magistralei pentru a putea activa linia de
cerere a întreruperii. Deci, un singur modul poate activa linia la un moment dat. La detectarea
întreruperii, UCP activează linia de achitare, iar modulul care a efectuat cererea îşi plasează vectorul
pe liniile de date.
În cazul cererilor simultane, este necesară stabilirea unor priorităţi, şi determinarea condiţiilor
în care UCP poate fi întrerupt în timpul servirii unei întreruperi. Perifericele care permit transferuri
rapide primesc o prioritate înaltă, iar perifericelor lente li se atribuie o prioritate mai redusă.

1.8.2.3. Sisteme de întreruperi cu priorităţi


Stabilirea priorităţii întreruperilor simultane se poate realiza prin software sau prin hardware.
În cazul metodei software, identificarea sursei de prioritate maximă se realizează prin polling.
Pentru toate întreruperile, există o rutină comună de servire, care interoghează sursele de întrerupere.
Ordinea în care sunt interogate sursele determină prioritatea lor. Dacă cererea de întrerupere a unei
surse este activată, se execută saltul la rutina de tratare corespunzătoare. Dezavantajul metodei
software este că în cazul unui număr mare de surse de întrerupere, timpul necesar interogării lor
creşte.

11
SISTEME DE INTRARE – IEŞIRE

În cazul metodei hardware, se utilizează circuite care acceptă cereri de întrerupere de la mai
multe surse, determină cererea cu prioritatea maximă, pe baza căreia generează o cerere de
întrerupere către procesor. Pentru creşterea vitezei, fiecare sursă de întrerupere are un vector propriu
de întrerupere pentru accesul direct la propria rutină de tratare. Pentru această metodă, liniile de
întrerupere pot fi conectate fie în paralel, fie în serie, sub forma unui lanţ de dispozitive.

1.8.2.3.1. Conectarea în paralel a liniilor de întrerupere


Această metodă utilizează un registru de întrerupere (RINT) ai cărui biţi sunt setaţi separat de
cererile de întrerupere ale fiecărui dispozitiv. Prioritatea este stabilită în funcţie de poziţia biţilor din
registru. în plus poate exista un registru al măştilor de întrerupere (RM) prin care se poate controla
starea fiecărei cereri de întrerupere. Prin utilizarea registrului mască se pot dezactiva întreruperile
mai puţin prioritare în timpul servirii unui dispozitiv mai prioritar. De asemenea, un dispozitiv mai
prioritar va putea întrerupe UCP în timpul servirii unui dispozitiv mai puţin prioritar.
Logica de prioritate pentru un sistem cu patru surse de întrerupere este prezentată în Figura 6.
Ea constă dintr-un registru de întrerupere ai cărui biţi sunt setaţi de sursele de întrerupere şi pot fi
resetaţi prin program. Dispozitivul D0 este cel mai prioritar. Registrul mască are acelaşi număr de
poziţii ca şi registrul de întrerupere. Este posibilă setarea sau resetarea prin program a oricărui bit din
registrul mască. Fiecare bit din RINT şi bitul corespunzător din RM sunt conectaţi la o poartă Şl
pentru a genera intrările pentru codificatorul prioritar. Astfel, o întrerupere este recunoscută numai
dacă bitul corespunzător din registrul mască este setat la 1 prin program.
Codificatorul prioritar generează doi biţi ai vectorului de întrerupere VINT, care este transferat
la UCP prin buffere cu trei stări. Validarea bufferelor se realizează prin semnalul de recunoaştere a
întreruperii (INTACK) de la UCP şi prin două bistabile IST şi IEN. Bistabilul de stare a
întreruperilor IST este setat dacă a apărut o întrerupere care nu este mascată. Bistabilul de validare a
întreruperilor IEN poate fi setat sau resetat prin program pentru a se permite un control global al
sistemului de întreruperi.
Codificatorul prioritar implementează funcţia de prioritate. Dacă două sau mai multe intrări
sunt activate simultan, va fi luată în considerare intrarea cea mai prioritară. Tabelul de adevăr al unui
codificator prioritar cu patru intrări este prezentat în Tabelul 4.
Intrarea I0 este cea mai prioritară, deci dacă această intrare este 1, se va genera la ieşire xy =
00, indiferent de valorile celorlalte intrări. Intrarea I1 are următorul nivel de prioritate. Ieşirea este xy
= 01 dacă I1 = 1, cu condiţia ca I0 = 0, indiferent de valorile celorlalte două intrări mai puţin
prioritare. Bistabilul IST este setat numai dacă una sau mai multe intrări au valoarea 1. Dacă toate
intrările sunt 0, IST este şters şi celelalte ieşiri ale codificatorului nu sunt utilizate. Aceasta deoarece
vectorul de întrerupere nu este transferat la UCP atunci când IST = 0.
Ieşirea codificatorului prioritar se utilizează pentru a forma o parte a vectorului de întrerupere
pentru fiecare sursă. Celorlalţi biţi ai vectorului li se poate asigna orice valoare. De exemplu,
vectorul de întrerupere se poate forma prin adăugarea unor zerouri la ieşirile x şi y ale
codificatorului. In acest caz, vectorii de întrerupere ai dispozitivelor de I/E din figură vor avea
asignate valorile 0, 1,2 şi 3.

12
Capitolul1 - Introducere

Figura 6. Conectarea în paralel a liniilor de întrerupere

Tabelul 4. Tabelul de adevăr al codificatorului prioritar


Intrări Ieşiri
I0 I1 I2 I3 x y IST
1 X X X 0 0 1
0 1 X X 0 1 1
0 0 1 X 1 0 1
0 0 0 1 1 1 1
0 0 0 0 X X 0

Figura 2.5. Conectarea în serie a surselor de întrerupere

1.8.2.3.2. Conectarea în serie a liniilor de întrerupere


Această metodă de selecţie a priorităţii constă în conectarea în serie a tuturor dispozitivelor
care pot genera o cerere de întrerupere. Dispozitivul cu prioritatea maximă este plasat în prima

13
SISTEME DE INTRARE – IEŞIRE

poziţie, ultimul din lanţ fiind dispozitivul cu prioritatea minimă. Această metodă de conectare a trei
dispozitive este prezentată în Fisura 2.5.
Linia de cerere a întreruperii este comună pentru toate dispozitivele, formând o conexiune
SAU cablat. Dacă nu există nici o cerere de întrerupere, linia de întrerupere rămâne în starea 1 logic.
Dacă cel puţin un dispozitiv solicită o întrerupere, linia de cerere trece în starea 0 logic, şi validează
intrarea de în-trerupere a UCP. UCP răspunde la o cerere de întrerupere prin activarea semnalului de
achitare INTACK. Acest semnal este recepţionat de dispozitivul Do la intrarea sa PI (Priority In).
Semnalul de achitare este transmis mai departe la următorul dispozitiv prin conexiunea PO {Priority
O ut) numai dacă Do nu solicită o întrerupere. Dacă acest dispozitiv are o cerere de întrerupere
activată, blochează transmiterea semnalului de achitare la următorul dispozitiv prin plasarea valorii 0
logic la ieşirea sa PO. Apoi Do va depune vectorul de întrerupere (VINT) pe magistrala de date
pentru a fi utilizat de UCP în timpul ciclului de întrerupere.
Un dispozitiv căruia i se aplică un semnal 0 la intrarea sa PI generează un semna! 0 la ieşirea
sa PO pentru a informa următorul dispozitiv asupra faptului că semnalul de achitare a fost blocat. Un
dispozitiv cu un semnal 1 la intrarea sa PI care solicită o întrerupere, va intercepta semnalul de
achitare prin plasarea unui semnal 0 la ieşirea sa PO. Dacă dispozitivul nu solicită o întrerupere, va
transmite semnalul de achitare la următorul dispozitiv prin generarea unui semnal 1 la ieşirea PO.
Astfel, dispozitivul cu PI - 1 şi PO = 0 este cel care are prioritatea maximă dintre cele care solicită o
întrerupere, şi acest dispozitiv va plasa vectorul său de întrerupere pe magistrala de date.
Figura 8 indică logica internă care trebuie conţinută de fiecare dispozitiv conectat într-un
sistem de priorităţi daisy chain. Dispozitivul setează bistabi-lul său IREQ atunci când solicită o
întrerupere de la UCP. Ieşirea acestui bistabil trece printr-un inversor cu colector deschis pentru a
asigura conexiunea SAU cablat necesară pentru linia comună de întrerupere. Dacă PI= 0, atât PO cât
şi semnalul de validare a vectorului VINT sunt 0, indiferent de starea bistabilului IREQ. Dacă PI = 1
şi IREQ = 0, rezultă că PO = 1 şi
vectorul este invalidat. Astfel se
transmite semnalul de achitare la
următorul dispozitiv prin ieşirea PO.
Dispozitivul este activ atunci când
PI = 1 şi IREQ = 1. Această condiţie
plasează un semnal 0 la ieşirea PO şi
validează vectorul de întrerupere. Se
presupune că fiecare dispozitiv are
propriul său vector de întrerupere.
Bistabilul IREQ este resetat după o
întârziere suficientă pentru a asigura
recepţia vectorului de către UCP.

Figura 8. Logica internă a unui etaj al sistemului


de priorităţi daisy chain

1.8.2.4. Rutine de tratare a întreruperilor


La sfârşitul fiecărui ciclu de execuţie a instrucţiunilor, UCP verifică dacă întreruperile sunt
validate (bistabilul IEN este setat) şi testează dacă există o cerere de întrerupere. Dacă IEN = 1 şi
există o cerere activă, UCP va executa un ciclu de întrerupere. în timpul acestui ciclu, se execută
următoarele operaţii:
1. Se salvează contorul de program (PC) în stivă.
2. Se activează semnalul de achitare a întreruperii INTACK.
3. Se transferă adresa rutinei de tratare în PC, pe baza vectorului de întrerupere.

14
Capitolul1 - Introducere

4. Se dezactivează sistemul de întreruperi, prin resetarea bistabilului IEN.


5. Se trece la ciclul de extragere a primei instrucţiuni din rutina de tratare.
în cadrul fiecărei rutine de tratare a întreruperii trebuie să se execute un set de operaţii pentru
controlul registrelor sistemului de întreruperi. Pentru a se valida cererile de prioritate mai mare decât
cea a întreruperii în curs, bistabilul IEN trebuie setat din nou, după ce întreruperile mai puţin
prioritare vor fi dezactivate. Principalele operaţii care trebuie executate la începutul unei rutine de
tratare sunt următoarele:
6. Ştergerea biţilor din registrul mască corespunzători nivelelor mai puţin prioritare.
7. Ştergerea bistabilului IST care indică starea întreruperilor.
8. Salvarea registrelor UCP.
9. Validarea întreruperilor prin setarea bistabilului IEN.
La sfârşitul fiecărei rutine de tratare a unei întreruperi trebuie să se prevadă instrucţiuni pentru
a executa următoarele operaţii:
10. Dezactivarea întreruperilor, prin resetarea bistabilului IEN.
11. Refacerea conţinutului registrelor UCP.
12. Ştergerea bitului din registrul cererilor de întrerupere corespunzător sursei de întrerupere
deservite.
13. Setarea biţilor din registrul mască corespunzători nivelelor mai puţin prioritare.
14. Refacerea adresei de revenire în registrul PC şi activarea sistemului de întreruperi.
Bitul din registrul cererilor de întrerupere corespunzător sursei de întrerupere trebuie resetat
pentru a fi disponibil din nou pentru solicitarea unei întreruperi. Secvenţa de operaţii 2-5 trebuie
executată cu sistemul de întreruperi dezactivat. Dacă o întrerupere este recunoscută în timpul
execuţiei acestor operaţii, adresa de revenire poate fi pierdută, iar informaţiile din registrul mască şi
din registrele UCP pot fi ambigue.
Operaţiile de la începutul şi de la sfârşitul unei rutine de tratare pot fi executate prin program.
O parte a acestor operaţii pot fi executate prin hardware, caz în care se reduce timpul necesar
deservirii întreruperilor.

1.8.2.5. Exemple de sisteme de întreruperi

Calculatoarele IBM PC/AT


La calculatoarele IBM PC/XT existau 8 nivele de întrerupere, fiind utilizat un controler 8259A.
La calculatoarele IBM PC/AT există 16 nivele de întrerupere, fiind utilizate două controlere 8259A
conectate în cascadă. Ieşirea celui de-al doilea controler este conectată la intrarea de nivel 2 a
primului controler. Prioritatea nivelelor de întrerupere ale controlerului al doilea este mai mare decât
cea a nivelelor 3-7 ale primului controler. Cele două controlere gestionează întreruperile cu numerele
cuprinse între 08h şi OFh, respectiv între 70h şi 77h. Adresele porturilor controlerelor sunt 20h şi
21h, respectiv A0h şi A1h.
Deoarece nivelul 2 al primului controler nu se poate utiliza din cauza legării în cascadă, se
utilizează linia de nivel 1 a controlerului al doilea (căreia îi corespunde întreruperea cu numărul 71
h). Vectorul acestei întreruperi este redirecţionat la rutina de deservire a întreruperii de nivel 2.
Similar s-a procedat şi cu întreruperea corespunzătoare coprocesorului aritmetic, la
calculatoarele XT această întrerupere fiind deservită de rutina corespunzătoare întreruperii
nemascabile NMI. Pentru a păstra analogia, rutina de tratare a erorilor coprocesorului aritmetic este
redirecţionată la rutina corespunzătoare întreruperii NMI.

Microprocesoarele Motorola 680x0


La microprocesoarele Motorola din seria 680x0, întreruperile sunt numite excepţii, acestea
cuprinzând derutări generate prin program, întreruperi datorită erorilor hardware, ca şi întreruperi
externe de I/E. Fiecărei excepţii i se asociază un vector N de 8 biţi, acesta reprezentând un pointer la
o locaţie de memorie cu adresa AN care păstrează adresa rutinei de tratare a excepţiei respective.

15
SISTEME DE INTRARE – IEŞIRE

Locaţiile de memorie cu adresele între 0 şi 3FFh formează o tabelă a vectorilor de întrerupere care
păstrează 256 de adrese utilizate pentru tratarea întreruperilor. Adresele cuprinse între 100h şi 3FFh
ale tabelei sunt rezervate pentru 192 de vectori de întrerupere ale utilizatorilor; celelalte locaţii sunt
asignate de Motorola unor tipuri de întreruperi specifice. De exemplu, la întâlnirea unei instrucţiuni
de împărţire la zero, procesorul execută o secvenţă care transferă controlul la programul a cărei
adresă de început se află în locaţiile de adresă 14h-17h, corespunzătoare vectorului de excepţie N= 5.
Există două tipuri (moduri) de întreruperi vectorizate: un mod general, în care dispozitivul care
generează întreruperea furnizează un număr al vectorului indicând intrarea în tabela vectorilor, şi un
mod "autovector" mai simplu, care permite dispozitivului de I/E să solicite unul din cei şapte vectori
de excepţie ale căror adrese sunt generate intern de UCP.
Procesoarele 680x0 dispun de 3 pini dedicaţi nivelului de prioritate, IPL0 - IPL2 (Interrupt
Priority Level). Nivelele 0-6 sunt mascabile, iar nivelul 7 este nemascabil. Procesorul are un câmp de
prioritate de 3 biţi în cuvântul de stare. Atunci când un periferic trebuie să genereze o cerere de
întrerupere, depune prioritatea pe cei 3 pini şi activează un semnal de comandă. Depinzând de
prioritatea sa curentă, procesorul poate accepta întreruperea, prin activarea unui semnal IPEND
(Interrupt PENDing).
La calculatoarele bazate pe procesoarele 680x0 prelucrarea întreruperilor are loc în felul
următor. La sfârşitul fiecărui ciclu de instrucţiune, UCP verifică dacă există o cerere de întrerupere şi
îşi testează prioritatea în modul descris mai jos. Dacă UCP acceptă cererea, îşi suspendă procesarea
normală a instrucţiunilor şi execută o secvenţă de răspuns la întrerupere. UCP salvează mai întâi
vechiul conţinut al registrului de stare SR într-un registru temporar şi apoi setează starea sistemului
în modul supervizor. Apoi, în funcţie de semnalele de control generate de sursa de întrerupere, UCP
fie citeşte un vector N furnizat de sursa de întrerupere (modul general), fie generează vectorul N în
mod intern (modul "autovector"). UCP continuă cu salvarea conţinutului contorului de program PC,
a vechiului conţinut al registrului de stare SR şi a unor informaţii interne în stiva supervizor, una din
stivele păstrate de UCP în memoria principală. Utilizând AN ca adresă, UCP execută apoi o citire a
memoriei pentru încărcarea vectorului de excepţie în PC, după care execută rutina de tratare a
excepţiei.
Figura 9 prezintă o interfaţă reprezentativă pentru întreruperile de I/E ale procesoarelor 680x0.
Cele trei linii IPL se utilizează atât pentru generarea cererilor de întrerupere, cât şi pentru indicarea
priorităţii lor. Dacă IPL = 0, nu există cereri de întrerupere, iar dacă IPL = i (i = 1, ..., 7) există o
cerere cu nivelul de prioritate i. Atunci când există o cerere de întrerupere (IPL ≠ 0), UCP compară
nivelul de prioritate al cererii cu valoarea reprezentată de trei biţi ai măştii de întrerupere I, care sunt
păstraţi în registrul de stare SR. Dacă IPL > I, UCP răspunde la cererea de întrerupere la sfârşitul
ciclului de instrucţiune în curs; dacă IPL < I, cererea de întrerupere este ignorată. Deoarece registrul
SR poate fi modificat de anumite instrucţiuni privilegiate, se poate controla prin software dacă UCP
va răspunde sau nu la cererile de întrerupere. Setarea măştii de întrerupere I la 0 validează toate
cererile de întrerupere. Dacă I este setat la 7, toate întreruperile sunt ignorate cu excepţia celor de
prioritate maximă (IPL = 7), care sunt nemascabile. Sursele de întrerupere pot utiliza astfel până la
192 de vectori, şi fiecare din acestea poate fi asignat la unul din 7 nivele de prioritate.
UCP confirmă o cerere de întrerupere prin setarea fiecărei linii de ieşire FC (Function Code) la
1 pentru a forma un semnal de 3 biţi indicând recunoaşterea întreruperii. De asemenea, nivelul de
prioritate al întreruperii recunoscute este plasat pe liniile de adresă A1:3. În modul general de
întrerupere, controlerul de întrerupere răspunde prin plasarea unui număr al vectorului de întrerupere
N pe liniile de date D0:7. În circuitul din Figura 9, semnalele FC sunt utilizate direct pentru strobarea
vectorului de întrerupere N pe magistrala de date. Pentru indicarea modului "autovector", controlerul
de întreruperi răspunde la FC = 1
prin activarea unei linii speciale de control AVEC (Automatic VECtor), determinând ca UCP
să genereze intern valoarea N după formula N =24 + IPL.

16
Capitolul1 - Introducere

Figura 9. Interfaţa întreruperilor la procesorul Motorola 68000

Figura 10. Deservirea întreruperilor la calculatorul PDP-11

Calculatoarele PDP-11
Aceste calculatoare au o magistrală unică (Unibus). Comunicaţia între două dispozitive
conectate pe magistrală este realizată în modul maşter-slave. La un moment dat există un singur
dispozitiv care deţine controlul asupra magistralei; acest dispozitiv este denumit master.
Pentru a putea genera o întrerupere, un dispozitiv trebuie mai întâi să devină maşter. Există 4
linii de cerere de control asupra magistralei pentru întrerupere, BR7 – BR4 (Bus Request), BR7
având prioritatea cea mai mare. Mai există o cerere de transfer prin DMA sau pentru transferuri
directe între dispozitive (de exemplu între disc şi terminal), numită NPR (Non Processor Request),
cu prioritatea mai mare decât cererile BR.

17
SISTEME DE INTRARE – IEŞIRE

Se utilizează un sistem de întreruperi vectorizate cu priorităţi multiple. Toate modulele de I/E


partajează o singură linie de cerere de întrerupere pe magistrala Unibus.
După ce un modul de I/E obţine controlul asupra magistralei, se execută următoarele operaţii
(Figura 10):
1. Modulul activează semnalul BBSY (Bus Busy).
2. Modulul activează semnalul INTR (Interrupt Requesi) şi plasează vectorul pe liniile de
date.
3. La sfârşitul execuţiei instrucţiunii curente, UCP testează semnalul INTR, citeşte vectorul
de întrerupere şi activează semnalul SSYN (Slave Sync) pentru a indica acceptarea
întreruperii.
4. Modulul de I/E răspunde prin dezactivarea semnalelor BBSY, INTR şi invalidarea
datelor.
5. UCP răspunde prin dezactivarea semnalului SSYN şi preluarea controlului asupra
magistralei, după care poate procesa întreruperea.
Prioritatea este cablată pentru fiecare dispozitiv, cu excepţia UCP, a cărei prioritate este
programabilă, fiind păstrată în 3 biţi ai cuvântului de stare.
Un program care rulează cu nivelul de prioritate 7 nu poate fi întrerupt de un dispozitiv extern.
Pentru ca întreruperea să aibă loc, programul în curs trebuie să ruleze cu un nivel de prioritate mai
mic decât cererea dispozitivului extern.
Dacă la aceeaşi linie de cerere (BR) sunt conectate mai multe dispozitive, un dispozitiv mai
apropiat de UCP are prioritatea mai mare. Astfel, prioritatea sistemului este bidimensională, Deşi
nivelul de prioritate al dispozitivului este fixat, prioritatea lui. se schimbă după cum variază
prioritatea UCP.
După ce dispozitivul devine maşter, transmite unităţii centrale o comandă de întrerupere şi o
adresă de la începutul memoriei (vectorul de întrerupere), adresă la care se află:
• un cuvânt (de 16 biţi) cu adresa rutinei de serviciu;
• noul cuvânt de stare al programului.
UCP memorează cuvântul de stare şi contorul de program (PSW, PC) în registrele temporare
ale UCP, preia adresa rutinei de serviciu şi noul PC, şi apoi salvează vechiul PSW şi PC în stiva
curentă indicată de noul PSW. După execu,tarea rutinei de serviciu, se revine la procesul întrerupt.
Există o serie de erori şi condiţii de programare care produc întreruperea UCP şi saltul la un set
de adrese fixe (întreruperi speciale):
• erori de adresare impară;
• erori de dialog pe magistrală (time-out), când este generat un semnal
de sincronizare de la dispozitivul maşter şi nu apare nici un semnal de răspuns într-un anumit
timp (adresarea unei locaţii inexistente sau a unui periferic inexistent);
• erori de paritate a memoriei;
• instrucţiuni ilegale;
• instrucţiuni rezervate (cu cod neatribuit);
• depăşire în virgulă mobilă;
• depăşirea stivei;
• căderea tensiunii de alimentare; rutina are la dispoziţie 2 ms pentru a salva conţinutul
registrelor şi pregătirea perifericelor pentru căderea tensiunii de alimentare.

1.8.3. Transferul prin acces direct la memorie (DMA)


1.8.3.1. Principiile transferului prin DMA
Transferul programat, chiar dacă se efectuează prin întreruperi, necesită intervenţia UCP
pentru transferul datelor între memorie şi un modul de I/E, pentru fiecare octet sau cuvânt. Acest
mod de transfer are deci două dezavantaje:

18
Capitolul1 - Introducere

Figura 11. Structura generală a


unui modul DMA

1. Rata de transfer este limitată de viteza cu care UCP poate testa şi deservi un
dispozitiv.
2. UCP este ocupată cu gestionarea transferului, fiind necesară execuţia unui anumit
număr de instrucţiuni pentru fiecare transfer.
Transferul prin DMA elimină aceste dezavantaje prin executarea transferului direct între
memoria internă şi sistemul de I/E, participarea UCP fiind foarte redusă. Este necesar un modul
suplimentar, numit modul DMA sau controler DMA, care poate prelua controlul asupra magistralelor
sistemului, generând semnalele de comandă necesare. Structura generală a unui modul DMA este
prezentată în Figura 11.
Modulul DMA trebuie să conţină următoarele elemente principale:
• o logică pentru asigurarea legăturii cu memoria (semnale de citire şi scriere);
• o linie de cerere DMA către memorie şi o linie de acceptare DMA de la UCP;
• o logică de arbitraj a priorităţilor în cazul existenţei mai multor canale;
• un registru de comenzi pentru validarea modulului DMA, selectarea priorităţii canalelor,
selectarea modului de lucru etc.
Pentru fiecare canal, trebuie să existe următoarele registre:
• registru de adrese, pentru păstrarea adresei de început a transferului şi a adresei curente;
• registru numărător, pentru păstrarea numărului de cuvinte rămase de transferat;
• registru de stare, care indică starea activată sau neactivată a canalului şi condiţia de terminare
a transferului.
Controlerul DMA trebuie să preia controlul asupra magistralei pentru a efectua transferul
datelor cu memoria. De aceea, controlerul DMA trebuie să utilizeze magistrala numai când aceasta
nu este utilizată de UCP, sau să determine ca UCP să suspende temporar operaţiile. Rezultă două
metode de efectuare a transferului DMA:
1. Prin utilizarea intervalelor de timp în care UCP nu face acces la memorie; metoda se
numeşte transfer prin furt de ciclu (cycle stealing),deoarece modulul DMA "fură" un
ciclu de memorie de la UCP. Activitatea UCP nu este influenţată de operaţiile DMA,
cu excepţia cazului când se ajunge la un punct în care este necesară memoria.
2. Prin suspendarea operaţiilor efectuate de UCP în timpul transferului şi trecerea
magistralei în starea de înaltă impedanţă. Ciclul de instrucţiuni se va relua apoi din
punctul în care a fost suspendat. Metoda se numeşte transfer în rafală (data break).
Figura 12 indică punctele din ciclul de instrucţiune în care activitatea UCP poate ii suspendată.
în fiecare caz, UCP este suspendată înaintea momentului în care necesită utilizarea magistralei.
Controlerul DMA transferă un cuvânt şi returnează controlul UCP. De notat că aceasta nu este o

19
SISTEME DE INTRARE – IEŞIRE

întrerupere; nu se salvează contextul programului şi nu se execută alte operaţii, ci UCP îşi suspendă
activitatea pentru un ciclu de magistrală.

Figura 12. Puncte de suspendare ale activităţii UCP pentru DMA şi întreruperi

Pentru citirea sau scrierea unui bloc de date, UCP transmite controlerului DMA o secvenţă de
iniţializare, care trebuie să conţină următoarele informaţii:
• sensul transferului (citire sau scriere);
• adresa dispozitivului de I/E implicat;
• adresa de început a zonei de memorie cu care se efectuează transferul;
• numărul de octeţi sau de cuvinte care trebuie transferate.
Pentru transmiterea acestor informaţii se utilizează transferul programat.

Figura 13. Utilizarea transferului prin DMA pentru citirea unui bloc de date

UCP va executa alte operaţii, iar controlerul DMA va solicita controlul asupra magistralei,
generând adresele şi semnalele de comandă pentru efectuarea transferului. Se incrementează registrul
adresei curente şi se decrementează numărătorul de cuvinte. După acest ciclu DMA, în care s-a
transferat un cuvânt, se continuă cu alte cicluri sau se dă controlul UCP. La terminarea transferului,
controlerul generează un semnal de întrerupere către UCP.
Astfel, interacţiunea dintre UCP şi sistemul de I/E este la nivel de bloc, UCP intervenind
numai la începutul şi sfârşitul transferului (Figura 13). Eficienţa este mult mai ridicată decât în cazul
transferului prin întreruperi.

20
Capitolul1 - Introducere

Există mai multe configuraţii ale unui sistem de I/E care utilizează transferul prin DMA
(Figura 14).

a) Magistrală unică, DMA separat

b) Magistrală unică, DMA-I/E integrat


În primul exemplu (Figura 14 a), toate modulele partajează aceeaşi magistrală sistem. Modulul

b) Magistrală de I/E
Figura 14. Diferite configuraţii ale unui sistem de I/E care
utilizează transferul prin DMA

DMA utilizează I/E programate pentru transferul datelor între memorie şi un modul de I/E. Această
configuraţie, deşi poate fi ieftină, este ineficientă. Fiecare transfer a unui cuvânt necesită două cicluri
de magistrală, ca şi în cazul transferului programat prin intermediul UCP.
Numărul ciclurilor de magistrală poate fi redus prin integrarea funcţiilor DMA şi a celor de
I/E. În acest caz există o cale între modulul DMA şi unul sau mai multe module de I/E, cale care nu
include magistrala sistem (Figura 14 b). Logica DMA poate fi o parte a unui modul de I/E, sau poate
fi un modul separat care controlează unul sau mai multe module de I/E.
În ultimul exemplu (Figura 14 c) modulele de I/E se conectează la modulul DMA printr-o
magistrală de I/E. Astfel se reduce numărul interfeţelor din modulul DMA la una singură şi se
permite extinderea sistemului. În ultimele două cazuri, magistrala sistem pe care modulul DMA o
partajează cu UCP şi memoria este utilizată de modulul DMA numai pentru transferul datelor cu
memoria. Transferul datelor între modulul DMA şi modulele de I/E nu utilizează magistrala sistem.

1.8.3.2. Exemple de sisteme DMA

Calculatoarele IBM PC/AT


La aceste calculatoare se utilizează două controlere DMA 8237A, care permit gestionarea a 7
canale DMA. Se pot conecta controlere suplimentare pe plăcile adaptoare. Controlerele sunt
conectate în cascadă, ieşirea HRQ (Hold ReQuest) a primului controler fiind conectată la intrarea
DREQ (DMA REQuest) a celui de-al doilea. Pentru ambele controlere, cererea de preluare a
magistralelor este iniţiată de ieşirea HRQ a celui de-al doilea controler, care se transmite
procesorului. Achitarea cererii de către procesor se realizează prin semnalul HOLDA (HOLD

21
SISTEME DE INTRARE – IEŞIRE

Acknowledge) conectat la intrarea HLDA a aceluiaşi controler, iar achitarea pentru primul controler
se realizează prin semnalul DACK (DMA Acknowledge).
Primul controler gestionează canalele 0-3. Pe aceste canale se pot efectua transferuri de 8 biţi
între dispozitive de I/E de 8 biţi şi memorii de 8 sau 16 biţi. Toate canalele se pot utiliza în spaţiul de
adrese pentru transferul blocurilor de maxim 64 KB. Adresarea întregului spaţiu este asigurată de un
registru de pagină DMA (DMA Page Register). Acesta este realizat cu un circuit de mapare a
memoriei 74LS612, care conţine 16 registre de câte 12 biţi, cu adresare dublă pentru citire şi scriere.
Din cele 16 registre (numite şi registre de segment DMA) se utilizează 8. Adresele registrelor de
segment DMA pentru canalele 0, 1, 2 şi 3 sunt: 87h, 83h, 81h, respectiv 82h.
Controlerul al doilea gestionează canalele 4-7. Canalul 4 se utilizează pentru legarea în
cascadă. Canalele 5-7 permit transferuri de 16 biţi a unor blocuri de maxim 128 KB din spaţiul de
adrese al memoriei, dar cuvintele de 16 biţi trebuie să se afle la adrese pare. Adresele registrelor de
segment DMA pentru canalele 5, 6 şi 7 sunt: 8Bh, 89h, respectiv 8Ah.

Calculatoarele PDP-11
Pentru perifericele care sunt controlate prin DMA, logica DMA este integrată cu modulul de
I/E şi cu interfeţele pentru magistrala Unibus (asemănător configuraţiei din Figura 14 b).
Diagrama simplificată pentru un transfer DMA este prezentată în Figura 15.

Figura 15. Diagrama de timp a unui transfer DMA pe magistrala Unibus (PDP-11)

Modulul DMA solicită controlul asupra magistralei prin activarea semnalului NPR (Non-
Processor Request). Acest semnal are o prioritate mai ridicată decât alte semnale de cerere de
întrerupere. Semnalul SACK (Select ACKnowledge) este activat de modulul DMA după ce a fost
informat de UCP că a fost selectat pentru a prelua controlul asupra magistralei. Acest semnal rămâne
activ până la preluarea controlului asupra magistralei de către dispozitivul solicitant, şi în acest timp
nu mai sunt acceptate alte cereri de magistrală.
După ce modulul DMA devine master, poate transfera datele în memorie. Acest modul poate fi
programat pentru a transfera un bloc de cuvinte în timp ce păstrează controlul asupra magistralei.
Pentru aceasta, modulul păstrează semnalul BBSY (Bus Busy) activat, prevenind preluarea
controlului asupra magistralei de către alte dispozitive şi UCP. Semnalul MSYN (Master
Synchronization) indică prezenţa datelor valide pe magistrală. La terminarea operaţiei, se
dezactivează semnalul BBSY, şi se permite astfel reluarea operaţiilor de către UCP.
Pentru iniţierea unui transfer DMA, UCP înscrie informaţiile necesare de control în locaţiile de
memorie corespunzătoare modulului DMA, deoarece la calculatoarele PDP-11 adresele de I/E sunt
mapate în memorie. Datele vor fi transferate într-unul sau mai multe blocuri.
Un exemplu de modul DMA care se poate utiliza pentru interfaţarea echipamentelor cu
magistrala Unibus este DR-11B. Conţine patru registre, cărora li se asignează adrese de memorie:
bufferul de date (Data Buffer), registrul de stare şi comandă (Status and Command), registrul de
adresă (Bus Address) şi contorul de cuvinte (Word Count). Bufferul de date nu este accesat în mod
normal de UCP. Registrul de adresă specifică adresa de început a memoriei pentru citire şi scriere.
Contorul de cuvinte este iniţializat de UCP cu dimensiunea blocului care va fi transferat. Registrul de
stare şi comandă poate fi înscris cu biţi de comandă ca citire, scriere, start operaţie etc. Acelaşi
registru poate fi citit de UCP pentru monitorizarea diferitelor condiţii de stare.
22
Capitolul1 - Introducere

1.8.4. Transferul prin canale de l/E


1.8.4.1. Principiul transferului prin canale de I/E
Deşi accesul direct la memorie eliberează UCP de numeroase operaţii de I/E, în cazul
perifericelor rapide vor fi necesare numeroase cicluri de magistrală pentru referinţele la memorie. În
timpul acestor cicluri, UCP trece în starea de aşteptare. Furturile de ciclu vor satura magistrala, şi
chiar dacă se va genera o singură întrerupere la fiecare bloc transferat, se consumă un anumit timp
pentru tratarea întreruperilor.
Pentru a se elimina aceste dezavantaje, modulele de I/E au fost îmbunătăţite, devenind
procesoare care dispun de un set de instrucţiuni specializat pentru I/E. UCP transmite o comandă
procesorului de I/E pentru a executa un program de I/E din memorie. Acesta execută instrucţiunile
programului fără intervenţia UCP. Astfel este posibilă specificarea de către UCP a unei secvenţe de
operaţii de I/E şi întreruperea UCP numai la terminarea întregii secvenţe.
Unele module de I/E au o memorie locală proprie, fiind de fapt calculatoare specializate care
pot controla un set larg de dispozitive de I/E, cu o intervenţie minimă a UCP. Modulele de I/E care
pot executa programe sunt numite în unele cazuri canale de I/E, iar în alte cazuri procesoare de I/E
(mai ales cele care dispun de o memorie locală proprie).
Structura unui calculator cu un canal de I/E este prezentată în Figura 16. Comunicaţia cu
memoria se poate realiza prin DMA. Canalul de I/E asigură o cale pentru transferul datelor între
diferitele periferice şi memorie. UCP iniţiază transferul de I/E, după care canalul de I/E funcţionează
independent de UCP şi continuă transferul datelor între periferice şi memorie.

Figura 16. Structura unui calculator cu un canal de I/E

Canalul poate restructura datele de la diferite periferice. De exemplu, poate fi necesară citirea
mai multor caractere de la un dispozitiv de intrare şi împachetarea lor într-un cuvânt înaintea
transferului în memorie. Datele sunt preluate de canal la viteza dispozitivului în timp ce UCP
execută un program. După asamblarea datelor de intrare într-un cuvânt de memorie, acesta se
transferă de la canalul de I/E direct în memorie printr-un furt de ciclu. Similar, un cuvânt transferat
din memorie la canalul de I/E va fi transmis la un dispozitiv de ieşire la viteza şi numărul de biţi ai
acestuia.

23
SISTEME
ISTEME DE INTRARE – IEŞIRE
IE

Figura 17. Tipuri de canale de I/E

De obicei, UCP are sarcina iniţierii operaţiilor de I/E, prin instrucţiuni de start al unui transfer
şi de test al stării operaţiilor. Canalul solicită o intervenţie a UCP printr-o cerere de întrerupere, şi
răspunde la cererile UCP prin plasarea unui cuvânt de stare într-o locaţie de memorie, cuvânt care
poate fi examinat de UCP. Pentru execuţia unei operaţii de I/E, UCP transferă o instrucţiune
canalului, indicând perifericul care trebuie utilizat şi adresa de început a instrucţiunilor suplimentare.
Instrucţiunile citite de canal din memorie se numesc comenzi, pentru a le deosebi de
instrucţiunile transmise de UCP canalului. Instrucţiunile şi comenzile au funcţii similare. Cuvintele
de comandă sunt pregătite şi sunt depuse de UCP în memorie. Acestea reprezintă un program de
canal. UCP informează canalul asupra locaţiilor în care va găsi cuvintele de comandă.
Există două tipuri de canale de I/E mai utilizate: canale selectoare şi canale multiplexoare
(Figura 17).
Un canal selector controlează mai multe periferice rapide, la un moment dat fiind dedicat
pentru transferul datelor cu un singur periferic. Canalul de I/E selectează un periferic şi efectuează
transferul datelor. Fiecare periferic, sau un set redus de periferice, este gestionat de un controler
(modul de I/E). Astfel, canalul de I/E are rolul de a gestiona aceste controlere de I/E în locul UCP.
Un canal multiplexor poate gestiona transferuri simultane cu mai multe periferice, prin
multiplexare în timp. Pentru periferice lente, un multiplexor la nivel de octet acceptă sau transmite
caractere la dispozitive multiple. Pentru periferice rapide, un multiplexor la nivel de bloc transferă
blocuri de date între diferite dispozitive.

1.8.4.2. Comunicaţia dintre UCP şi canalul de l/E

24
Capitolul1 - Introducere

În cele mai multe cazuri, această comunicaţie se realizează prin mesaje depuse în memorie. Se
va prezenta printr-un exemplu simplificat modul în care poate avea loc comunicaţia dintre UCP şi
canal.
UCP iniţiază o operaţie de I/E printr-o instrucţiune de I/E adresată canalului. Un format posibil
al acestei instrucţiuni este prezentat în Figura 18.

Figura 18. Formatul unei instrucţiuni tipice pentru iniţierea unei operaţii de I/E

Codul instrucţiunii are următoarele câmpuri:


1. Un cod de operaţie care specifică operaţia de executat
2. O adresă de dispozitiv care specifică adresa unui anumit dispozitiv de I/E conectat la
canal
O adresă de memorie care va fi utilizată de canal atunci când acesta răspunde la instrucţiunea
UCP
Secvenţa de operaţii care se execută este ilustrată în Figura 19. UCP transmite o instrucţiune de
test I/E către canal. Canalul răspunde prin depunerea unui cuvânt de stare în memorie, la adresa
specificată de câmpul de adresă al instrucţiunii, care indică starea canalului şi a dispozitivului de I/E.
UCP testează cuvântul de stare din memorie şi decide operaţia următoare. UCP transmite apoi
instrucţiunea de lansare a transferului de I/E. Această instrucţiune specifică adresa primului cuvânt
de comandă pentru operaţia de I/E.
UCP poate continua apoi execuţia unui alt program în timp ce canalul este ocupat cu transferul.
La terminarea transferului, canalul transmite o cerere de întrerupere către UCP. UCP răspunde la
această cerere prin transmiterea instrucţiunii de citire a stării canalului. Canalul va plasa un cuvânt de
stare în locaţia de memorie specificată de instrucţiune, care indică terminarea normală a transferului
sau apariţia unor erori.
Cuvintele de comandă specifică programul care este executat de canal. Adresa cuvintelor de
comandă este transmisă de UCP printr-o instrucţiune de start I/E. Formatul tipic al unui cuvânt de
comandă este indicat în Figura 20.

25
SISTEME DE INTRARE – IEŞIRE

Figura 19. Operaţiile executate pentru transferul prin canale de I/E

Figura 20. Formatul tipic al unui cuvânt de comandă pentru un canal de I/E

Câmpurile cuvântului de comandă sunt:


1. adresa buffer-ului utilizat pentru transfer;
2. contorul de cuvinte indică lungimea bufferului, deci numărul de cuvinte pe care le
conţine;
3. câmpul de operaţie specifică operaţia care trebuie executată: o intrare, o ieşire sau
alte operaţii;
4. câmpul special indică o funcţie specifică unui anumit dispozitiv de I/E, câteva din
acestea fiind indicate în figură.
Canalul de I/E asigură transferul datelor între mai multe periferice şi memorie. Canalul şi UCP
utilizează aceeaşi memorie, astfel că numărul de periferice este limitat de timpul de acces al
memoriei. Unele unităţi rapide, ca discurile magnetice, pot utiliza un număr mare de cicluri de
memorie. în acest caz, viteza UCP va fi micşorată, deoarece va trebui să aştepte terminarea unui
acces la memorie de către canal înaintea utilizării memoriei.

1.8.4.3. Exemple de canale de i/E

26
Capitolul1 - Introducere

Canalul de I/E al calculatoarelor IBM System/370


În mod obişnuit, utilizarea canalelor de I/E a fost asociată cu calculatoarele mari (mainframe),
din următoarele motive:
• calculatoarele mari au în general memorii externe de mare capacitate;
• cele mai multe calculatoare mari permit conectarea simultană a unui
număr mare de utilizatori, de ordinul sutelor.
Utilizarea canalelor de I/E s-a
extins la minicalculatoare şi chiar la
microcalculatoare. Cu toate acestea,
cel mai cunoscut canal de I/E este
cel utilizat la calculatoarele de tip
mainframe ale IBM, cele mai multe
dintre acestea fiind bazate pe
arhitectura IBM System 370.
Figura 22 prezintă structura
subsistemului de I/E pentru familia
de calculatoare IBM 370.
UCP controlează unul sau
mai multe canale. Un canal poate fi
un multiplexor la nivel de octet sau
de bloc. Fiecare canal gestionează
unul sau mai multe controlere de
I/E, numite unităţi de control. La o Figura 21. Execuţia unei operaţii la canalul de I/E IBM 370
unitate de control se conectează un
set de periferice similare sau identice. De exemplu, la un controler de disc se conectează mai multe
unităţi de disc.
După cum se poate observa în figură, o unitate de control poate fi conectată la mai multe
canale, iar un periferic poate fi conectat la mai multe unităţi de control. Astfel se asigură mai multe
căi fizice între UCP şi un periferic, iar în cazul în care o cale este ocupată sau este invalidată, se
poate utiliza o altă cale.
Există trei tipuri de directive de I/E:
• instrucţiuni de I/E ale UCP;
• comenzi de canal;
• ordine pentru unităţile de control.
Fiecare tip se utilizează pentru controlul operaţiilor de I/E la nivele hardware diferite şi asigură
nivele diferite de detaliere în ceea ce priveşte operaţiile de I/E. În Figura 21 se prezintă etapele de
execuţie a unei operaţii de I/E.
Etapele de execuţie sunt următoarele:
1. UCP iniţiază operaţia de I/E printr-o instrucţiune de I/E adresată unui canal de I/E.
2. Canalul citeşte din memorie unul sau mai multe cuvinte de comandă ale canalului
(Channel Command Word - CCW), şi execută comenzile sau instrucţiunile acestor
cuvinte.
3. Pe baza comenzilor din CCW, canalul transmite ordine pentru una din unităţile sale de
control. în timpul operaţiei de I/E, se transferă informaţii de control între canal şi
unitatea de control.
4. Pe baza ordinelor recepţionate de la canal, unitatea de control transmite semnale
de control unuia din dispozitivele sale. în timpul transferului de date, se pot transmite
semnale între unitatea de control şi dispozitiv.
5. Pentru o operaţie de citire, datele sunt transferate de la dispozitiv la canal, iar apoi de la
canal direct în memoria principală. Pentru o operaţie de scriere, secvenţa este inversă.
6. După terminarea unei operaţii de I/E (cu succes sau cu o eroare), canalul generează o
întrerupere către UCP.
27
SISTEME DE INTRARE – IEŞIRE

Figura 22. Structura sistemului de I/E a calculatoarelor IBM 370

Figura 23. Structura cuvintelor utilizate la canalul


IBM 370

UCP comunică direct cu canalele de I/E prin semnale dedicate de control, şi indirect prin zone
rezervate de memorie. Formatele cuvintelor asociate cu operaţiile canalelor sunt prezentate în Figura
23.
Instrucţiunile de l/E cuprind trei câmpuri:
• codul operaţiei;
• adresa canalului;
• adresa dispozitivului.
Codul operaţiei specifică una din cele opt instrucţiuni de I/E. Acestea sunt următoarele:
• Start I/E (Start I/O-SIO);
• Start I/E cu eliberare rapidă (Start I/O Fast Release - SIOF);
• Test canal (Test Channel);
• Test I/E (Test I/O);
• Oprire I/E (Halt I/O);
• Reluare I/E (Resume I/O);
• Oprire dispozitiv (Halt Device);
• Memorare identificare canal (Store Channel Identification).
Instrucţiunea SIO se utilizează pentru iniţierea unei operaţii de I/E care implică determinarea
stării unui dispozitiv, controlul dispozitivului şi efectuarea transferului de date între dispozitiv şi

28
Capitolul1 - Introducere

memoria principală. Instrucţiunea SIOF este similară cu SIO, dar în acest caz UCP este eliberată
imediat, înaintea determinării stării dispozitivului selectat.
Canalul adresat răspunde la fiecare instrucţiune de I/E pe care o execută. De asemenea, canalul
setează codurile de condiţie din cuvântul de stare al programului (PSW). Aceste coduri indică dacă
dispozitivul sau canalul este ocupat sau disponibil, dacă este operaţional, dacă operaţia: de I/E a fost
lansată cu succes, şi dacă a fost depus în memorie un cuvânt de stare de către canal.
Formatul cuvântului de stare este prezentat în Figura 23(b). Acest cuvânt este memorat
întotdeauna la adresa 64 din memorie. Primul câmp conţine o cheie de acces de 4 biţi asociată cu
fiecare bloc de 2 KB sau 4 KB de memorie, asigurând un mecanism de protecţie împotriva accesului
neautorizat în zona de memorie a altui program. Câmpul de adresă conţine adresa următoare
ultimului cuvânt de comandă care a fost executat de canal. Câmpul de stare conţine starea
dispozitivului şi a canalului şi eventualele erori care au apărut în timpul transferului. Contorul
conţine numărul de cuvinte care nu au fost transferate încă (dacă transferul s-a terminat cu succes,
acest câmp conţine zero).
Canalul răspunde la o instrucţiune SIO sau SIOF prin citirea adresei primului cuvânt de
comandă al canalului (Channel Command Word - CCW). Această adresă se află în locaţia 72 din
memorie. Formatul CCW este indicat în Figura 23(c). Codul comenzii specifică operaţia de executat,
de exemplu: citire, scriere, citirea stării dispozitivului, execuţia unei funcţii de control specifice
dispozitivului (care nu implică transferul datelor, ca poziţionarea mecanismului de acces la disc), sau
înlănţuirea între mai multe cuvinte CCW care nu se află în locaţii contigue. Adresa datelor indică
adresa de început a zonei de memorie utilizată pentru transfer. Contorul indică numărul de octeţi care
trebuie transferaţi. Biţii indicatori specifică informaţii suplimentare despre operaţia de executat, de
exemplu:
• înlănţuirea datelor, utilizată pentru transferul datelor din sau în zone necontigue de memorie;
• înlănţuirea comenzilor, utilizată pentru execuţia mai multor cuvinte CCW printr-o singură
instrucţiune SIO sau SIOF;
• salt, care indică o operaţie de citire fără transferul datelor.
Un program de canal constă dintr-unul sau mai multe cuvinte CCW. Cuvintele multiple sunt
executate prin înlănţuire şi ramificaţie. în cazul înlănţuirii, la terminarea unei comenzi canalul va
încărca următorul cuvânt CCW. Comanda Transfer In Channel permite modificarea ordinii de
execuţie a cuvintelor CCW. La terminarea unei operaţii, canalul memorează starea operaţiei în
cuvântul de stare al canalului şi generează un semnal de întrerupere pentru UCP.

Procesorul de I/E Intel 8089


Conţine două canale independente de I/E, fiecare din ele combinând caracteristicile unei UCP
cu cele ale unui controler DMA: pot executa programe, ca şi UCP, având în jur de 50 de tipuri de
instrucţiuni, şi pot efectua transferuri DMA. Este direct compatibil cu procesorul 8086 configurat în
modul maxim.

Principii de funcţionare
Comunicarea UCP cu procesorul de I/E (PIE) are loc în două moduri:
• modul de iniţializare;
• modul de comandă.
Iniţializarea unei operaţii de I/E de către UCP se realizează prin depunerea unor blocuri de
mesaje în memorie, care descriu operaţia care trebuie executată, şi activarea unor semnale. PIE
citeşte aceste blocuri, execută operaţia şi informează UCP la terminarea acesteia. Structura blocurilor
de mesaje se prezintă în Figura 24.
La iniţializare, UCP transmite PIE adresa unui bloc de control al canalelor CB (Control Block),
aflat în spaţiul de memorie al UCP. Blocul este împărţit în două jumătăţi, câte una pentru fiecare
canal. Acestea conţin:
• un octet de stare BUSY, actualizat de canal

29
SISTEME DE INTRARE – IEŞIRE

Indică starea ocupată sau disponibilă a canalului.


• un octet de comandă CCW (Channel Command Word), setat de UCP
Acest octet nu are aceeaşi semnificaţie ca şi cuvântul de comandă al canalelor IBM. CCW are
rolul unei instrucţiuni de I/E, specificând o operaţie care trebuie executată de PIE, ca de
exemplu: start operaţie, suspendare sau reluare operaţie şi oprire program de canal.
• un pointer la un bloc de parametri PB (Parameter Block)
Acest bloc conţine variabilele pe care le va utiliza programul de canal şi spaţiu pentru
rezultatele pe care canalul le va returnaUCP.
Dimensiunea şi formatul unui bloc de parametri sunt dependente de aplicaţie, cu excepţia
primelor două cuvinte, care conţin un pointer la un bloc al taskului TB (Task Block). Acest bloc este
un program de canal, format dintr-o secvenţă de instrucţiuni 8089.
Înaintea lansării unui program de canal, UCP efectuează legăturile între blocul taskului TB şi
blocul de parametri PB, respectiv blocul de parametri şi blocul de control CB. Se utilizează pointeri
de tip cuvinte duble (offset şi segment). Un sistem poate avea mai multe blocuri de parametri şi de
taskuri, dar numai unul din fiecare este legat la un canal.
După efectuarea legăturilor, UCP completează informaţiile în blocul de parametri, înscrie
octetul de comandă CCW şi activează semnalele CA (Channel Attention) şi SEL (Channel Select).
Starea semnalului SEL la frontul descrescător al semnalului CA selectează canalul 1 sau 2. UCP
continuă apoi cu execuţia unui alt program.
La recunoaşterea semnalului CA, canalul examinează comanda din octetul de comandă CCW.
Dacă trebuie să lanseze un program, canalul încarcă adresa blocului de parametri PB şi cea a blocului
taskului TB în registre interne, setează indicatorul său BUSY şi începe execuţia programului.
La terminarea programului canalul şterge indicatorul BUSY, înscrie starea operaţiei în blocul
de parametri şi poate genera o cerere de întrerupere către UCP.
Comunicaţia dintre UCP şi PIE are loc deci mai ales prin "mesaje" aflate în memoria UCP,
singurele legături directe dintre UCP şi PIE fiind semnalul CA, semnalul SEL şi cererea de
întrerupere (Figura 25)
Dacă se utilizează adresarea izolată a dispozitivelor de I/E, PIE este accesibil prin două porturi
cu adrese consecutive, câte unul pentru fiecare canal. O instrucţiune OUT la unul din porturi va
activa canalul respectiv (instrucţiunea are rolul semnalului CA). Dacă se utilizează adresarea cu
maparea în memorie, PIE este accesibil prin două locaţii cu adrese consecutive de memorie, şi orice
instrucţiune de referire la aceste locaţii va activa canalul corespunzător.
Fiecare din cele două canale funcţionează independent, având propriul set de registre, semnale
CA, cereri de întrerupere şi semnale de control pentru DMA. Canalele pot fi active şi concurent,
alternând operaţiile lor (de exemplu, canalul 1 poate executa instrucţiuni în perioadele dintre ciclurile
succesive de transfer DMA executate de canalul 2). Există un sistem de priorităţi între canale, care
poate fi modificat de către UCP.
Programele de canal sunt scrise în limbajul de asamblare ASM-89. PIE dispune de instrucţiuni
care operează asupra variabilelor de tip bit, octet, cuvânt sau cuvânt dublu. Există şi o variabilă de tip
adresă fizică de 20 biţi. Modurile de adresare permit accesul la variabilele de memorie şi la
dispozitivele de I/E din spaţiul de I/E de 64 KB al PIE, sau mapate în spaţiul de memorie al UCP.

30
Capitolul1 - Introducere

Figura 24. Blocurile de comunicaţie la PIE 8089

Figura 25. Comunicaţia dintre UCP şi PIE

Există instrucţiuni generale, similare cu cele ale UCP, şi instrucţiuni specifice pentru operaţiile
de I/E: transferuri, operaţii aritmetice, logice şi cu adrese, operaţii la nivel de bit (setarea/resetarea
individuală a unui bit), apeluri de proceduri, salturi necondiţionate şi condiţionate (testarea unui bit şi
salt dacă bitul este setat/resetat, testarea unei valori şi salt dacă aceasta este zero/diferită de zero).
Alte instrucţiuni iniţiază transferurile DMA, execută o cerere de întrerupere către UCP, sau execută o
operaţie de testare şi setare a unui semafor.

Transferuri DMA
Instrucţiunea XFER pregăteşte canalul pentru un transfer DMA. Acesta suspendă execuţia
programului şi intră în modul de transfer DMA, în care utilizează registrele de canal setate prin
program înaintea execuţiei instrucţiunii XFER.
Datele sunt transferate de la sursă la destinaţie. Sursa şi destinaţia se poate afla în spaţiul de
memorie al UCP sau în spaţiul de I/E al PIE. PIE nu face distincţie între memorie şi dispozitivele de
I/E, astfel încât transferurile pot avea loc:
• din memorie la un dispozitiv de I/E;
• de la un dispozitiv de I/E în memorie;
• din memorie în memorie;
• de la un dispozitiv de I/E la un alt dispozitiv de I/E.
Ciclurile de transfer pot fi:
• sincronizate printr-un semnal de cerere DMA de la sursă sau destinaţie; canalul aşteaptă
semnalul de sincronizare înaintea începerii următorului ciclu de transfer;
• nesincronizate; canalul începe următorul ciclu imediat după terminarea ciclului precedent.
Un ciclu de transfer este executat în două etape: citirea octetului sau cuvântului de la sursă şi
memorarea la destinaţie. PIE optimizează automat transferul pentru a utiliza în mod eficient
magistrala disponibilă. De exemplu, dacă data este transferată de la un dispozitiv de 8 biţi în
memorie printr-o magistrală de 16 biţi, PIE va executa două cicluri de citire şi apoi va memora
întregul cuvânt într-un singur ciclu. între ciclurile de citire şi de scriere se pot efectua operaţii asupra
datelor: translatarea într-un alt cod (de exemplu din EBCDIC în ASCII), compararea cu o anumită
valoare, sau ambele.
Un transfer poate fi terminat datorită mai multor condiţii:
• la transferul unui număr specificat de octeţi (maxim 64 KB);
• printr-un semnal de la un dispozitiv extern, aplicat pe pinul corespunzător canalului (EXTl
sau EXT2 - Externai Terminate);
• la transferul unui octet (eventual translatat) care are o anumită valoare, egală sau neegală cu o
valoare de căutare;

31
SISTEME DE INTRARE – IEŞIRE

• după transferul unui octet sau cuvânt (transfer cu un singur ciclu).


La terminarea transferului, canalul reia automat execuţia programului. Programul de canal
poate determina cauza terminării, dacă sunt posibile mai multe cauze (de exemplu, la întâlnirea
caracterului CR sau la transferul a 80 octeţi). Pentru a determina dacă transferul s-a efectuat corect,
programul de canal poate citi un registru de rezultat de la controlerul dispozitivului de I/E. Dacă, de
exemplu, s-a detectat o eroare CRC de către controler, programul de canal poate relua operaţia fără
intervenţia UCP.
De obicei, programul de canal plasează rezultatul operaţiei în blocul de parametri, eventual
generează o întrerupere către UCP, şi opreşte canalul. La oprirea canalului, indicatorul BUSY din
blocul de control este şters pentru a indica disponibilitatea sa pentru alte operaţii. Ca o alternativă la
întreruperea de către canal, UCP poate testa prin polling indicatorul BUSY pentru a determina dacă
operaţia s-a terminat.

Configuraţii de magistrale
PIE poate accesa memoria sau porturile de I/E din spaţiul sistem de 1 MB şi memoria sau
porturile de I/E din spaţiul de I/E de 64 KB. Deşi PIE are numai o magistrală fizică de date, este util
să se considere că PIE face acces la spaţiul sistem printr-o magistrală sistem şi la spaţiul de I/E
printr-o magistrală de I/E (ambele de date).
Distincţia dintre cele două magistrale logice este realizată pe baza semnalelor care indică tipul
ciclului de magistrală generate de controlerul de magistrală 8288. Componentele din spaţiul sistem
răspund la semnalele MEMR şi MEMW, fie că reprezintă memorii sau dispozitive de I/E.
Componentele din spaţiul de I/E răspund la semnalele IOR şi IOW (chiar dacă sunt memorii).
Cele două configuraţii diferă prin gradul în care PIE partajează aceste magistrale cu UCP.
Ambele necesită utilizarea procesorului în modul maxim.

1. Configuraţia locală
Procesorul sau procesoarele de I/E partajează ambele magistrale cu UCP. Spaţiul sistem al PIE
corespunde cu spaţiul de memorie al UCP, iar spaţiul de I/E al PIE corespunde cu spaţiul de I/E al
UCP. Programele de canal se află în spaţiul sistem; dispozitivele de I/E se pot afla în oricare spaţiu
(Figura 26).

Figura 26. PIE 8089 în configuraţie locală

32
Capitolul1 - Introducere

PIE utilizează magistrala pentru citirea instrucţiunilor programului de canal, ca şi pentru


transferuri DMA sau programate. PIE şi UCP nu pot utiliza magistrala simultan.
Avantajul configuraţiei locale este că unui sistem i se poate adăuga un DMA inteligent, fără
componente suplimentare în afara PIE. Funcţionarea paralelă a UCP şi a PIE este limitată la cazurile
în care UCP are instrucţiuni în coada de instrucţiuni care pot fi executate fără utilizarea magistralei.

2. Configuraţia Ia distanţă

Figura 27. PIE 8089 în configuraţie la distanţă


PIE partajează o magistrală sistem comună cu UCP, accesul la această magistrală fiind
controlat de către arbitri de magistrală 8289. Magistrala locală de I/E a PIE este separată fizic de
UCP. Magistrala locală poate fi partajată de două PIE. În sistem poate exista orice număr de
procesoare de I/E, în grupe de maxim două.
Magistrala locală de I/E nu trebuie să aibă aceeaşi lăţime cu magistrala sistem partajată,
permiţând de exemplu interfaţarea perifericelor de 8 biţi cu procesorul 8086 (Figura 27).
În configuraţia la distanţă conflictele la magistrala sistem vor fi mai reduse, deoarece
perifericele locale şi memoria locală pot fi accesate fără utilizarea magistralei sistem. Aceste
conflicte pot fi reduse şi mai mult prin plasarea programelor de canal în spaţiul local de I/E, astfel
încât PIE va putea citi instrucţiunile fără utilizarea magistralei sistem. Blocurile de memorie care
asigură comunicaţia dintre UCP şi PIE (CB, PB) trebuie să se afle însă în memoria sistem, pentru a
putea fi accesate de ambele procesoare.
Această configuraţie creşte gradul în care UCP şi PIE pot opera în paralel, dar cu preţul
adăugării unor circuite suplimentare pentru arbitrajul magistralei partajate şi separarea magistralei
partajate de cele locale. Este posibil să se configureze un PIE la distanţă faţă de o UCP şi local faţă
de altă UCP. UCP locală poate fi utilizată pentru execuţia rutinelor care necesită calcule mai
complexe.

33

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

  • Good Grace-Ce Har Ce Domn
    Good Grace-Ce Har Ce Domn
    Document10 pagini
    Good Grace-Ce Har Ce Domn
    Robert Cretu
    Încă nu există evaluări
  • Death Was Arrested
    Death Was Arrested
    Document10 pagini
    Death Was Arrested
    Robert Cretu
    Încă nu există evaluări
  • ORdine
    ORdine
    Document1 pagină
    ORdine
    Robert Cretu
    Încă nu există evaluări
  • Om Al Durerii
    Om Al Durerii
    Document8 pagini
    Om Al Durerii
    Robert Cretu
    Încă nu există evaluări
  • 164 - Domnu-I Bun
    164 - Domnu-I Bun
    Document2 pagini
    164 - Domnu-I Bun
    PRONTO DIAGNOSTIC
    Încă nu există evaluări
  • Cerul Tu Deschide-L
    Cerul Tu Deschide-L
    Document8 pagini
    Cerul Tu Deschide-L
    Robert Cretu
    Încă nu există evaluări
  • Esti Aici de Facut CA BBSO
    Esti Aici de Facut CA BBSO
    Document11 pagini
    Esti Aici de Facut CA BBSO
    Robert Cretu
    Încă nu există evaluări
  • Domnul Pentru Mine A Murit
    Domnul Pentru Mine A Murit
    Document12 pagini
    Domnul Pentru Mine A Murit
    Robert Cretu
    Încă nu există evaluări
  • Model
    Model
    Document1 pagină
    Model
    Robert Cretu
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document19 pagini
    Curs 4
    Robert Cretu
    Încă nu există evaluări
  • Model
    Model
    Document1 pagină
    Model
    Robert Cretu
    Încă nu există evaluări
  • Curs 5
    Curs 5
    Document18 pagini
    Curs 5
    Robert Cretu
    Încă nu există evaluări
  • La Ce Trebuie Sa Ne Gindim
    La Ce Trebuie Sa Ne Gindim
    Document8 pagini
    La Ce Trebuie Sa Ne Gindim
    Chirica Antonina
    Încă nu există evaluări
  • Curs 2
    Curs 2
    Document25 pagini
    Curs 2
    Robert Cretu
    Încă nu există evaluări
  • Cum Sa Te Protejezi de Coronavirus - Sfaturi Pentru Copii - Landscape
    Cum Sa Te Protejezi de Coronavirus - Sfaturi Pentru Copii - Landscape
    Document1 pagină
    Cum Sa Te Protejezi de Coronavirus - Sfaturi Pentru Copii - Landscape
    Dusmanul
    Încă nu există evaluări
  • Curs 3
    Curs 3
    Document9 pagini
    Curs 3
    Robert Cretu
    Încă nu există evaluări
  • Cap 1 SE
    Cap 1 SE
    Document20 pagini
    Cap 1 SE
    Robert Cretu
    Încă nu există evaluări
  • Cap 3 Se
    Cap 3 Se
    Document28 pagini
    Cap 3 Se
    Robert Cretu
    Încă nu există evaluări
  • Cantari
    Cantari
    Document3 pagini
    Cantari
    Robert Cretu
    Încă nu există evaluări
  • Cap. 4 Si 5 SE
    Cap. 4 Si 5 SE
    Document25 pagini
    Cap. 4 Si 5 SE
    Robert Cretu
    Încă nu există evaluări
  • Cap 2 Se
    Cap 2 Se
    Document8 pagini
    Cap 2 Se
    Robert Cretu
    Încă nu există evaluări
  • Cantari
    Cantari
    Document3 pagini
    Cantari
    Robert Cretu
    Încă nu există evaluări
  • Sisteme IE Carti
    Sisteme IE Carti
    Document3 pagini
    Sisteme IE Carti
    Robert Cretu
    Încă nu există evaluări
  • Om Al Durerii
    Om Al Durerii
    Document1 pagină
    Om Al Durerii
    Robert Cretu
    Încă nu există evaluări
  • Rataceam in Intuneric
    Rataceam in Intuneric
    Document17 pagini
    Rataceam in Intuneric
    Robert Cretu
    Încă nu există evaluări
  • Hai La Isus
    Hai La Isus
    Document1 pagină
    Hai La Isus
    Robert Cretu
    Încă nu există evaluări
  • Hai La Isus
    Hai La Isus
    Document1 pagină
    Hai La Isus
    Robert Cretu
    Încă nu există evaluări
  • Kings of Kings - Hillsong Tradus
    Kings of Kings - Hillsong Tradus
    Document10 pagini
    Kings of Kings - Hillsong Tradus
    Robert Cretu
    Încă nu există evaluări
  • Hai La Isus
    Hai La Isus
    Document1 pagină
    Hai La Isus
    Robert Cretu
    Încă nu există evaluări