Documente Academic
Documente Profesional
Documente Cultură
INTRODUCERE
1
SISTEME DE INTRARE – IEŞIRE
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.
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
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.
3
SISTEME DE INTRARE – IEŞIRE
4
Capitolul1 - Introducere
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.
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ă.
7
SISTEME DE INTRARE – IEŞIRE
• transferul programat;
• transferul prin întreruperi;
• transferul prin acces direct la memorie (DMA);
• transferul prin canale de I/E.
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.
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.
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.
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.
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ă.
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.
12
Capitolul1 - Introducere
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.
14
Capitolul1 - Introducere
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
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
18
Capitolul1 - Introducere
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).
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.
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
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
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.
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
25
SISTEME DE INTRARE – IEŞIRE
Figura 20. Formatul tipic al unui cuvânt de comandă pentru un canal de I/E
26
Capitolul1 - Introducere
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.
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
30
Capitolul1 - Introducere
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
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).
32
Capitolul1 - Introducere
2. Configuraţia Ia distanţă
33