Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire [611821]
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
155
7
SISTEMUL DE INTRARE-IE ȘIRE
Arhitectura unui calcul ator cuprinde, pe lâng ă unitatea central ă și
sistemul de memorie, sistemul de intrare-ie șire. Aceasta are rolul de a
asigura comunicarea calculatorului cu exteriorul (cu operatorul sau cu alt
calculator). F ără acesta, calculatorul ar fi f ără utilitate, deoarece nu poate
primi date și nu poate comunica rezultate. Prin intermediul s ău se introduc
programe și date (tastatur ă, mouse, USB, Ethernet, microfon, etc) și se
furnizează date, rezultate, informa ții (monitor, CD, USB, Ethernet, difuzor,
etc). Sistemul de intrare-ie șire este conectat la microprocesor prin
intermediul magistralelor: adrese, date și comandă și control și poate con ține
unul sau mai multe dispozitive peri ferice (figura 7.1). Conectarea oric ărui
dispozitiv periferic la magistrale se face prin intermediul circuitelor de
interfață. Acestea au rolul de asigura compatibilitatea dintre periferic și
magistrale: conversia semnal elor, sincronizarea datorit ă ratelor diferite de
comunica ție, formatul diferit al datelor și controlul oric ărui dispozitiv f ără a
le perturba pe celelalte . Deoarece procesorul știe să adreseze loca ții de
memorie, fiecare astfel de circuit trebuie s ă conțină locații de memorie.
Acestea sunt materializate prin regi ștri adresabili de c ă
tre procesor. Un
dispozitiv I/O este asimilat prin numele de port și, în func ție de
complexitate, are un num ăr mai mic sau mai mare de astfel de regi ștri (unii
pot fi scri și – încărcați cu date, sau al ții pot fi citi ți – prelua date de la ei).
Menirea unor regi ștri este de a permite configurarea și citirea st ării
dispozitivului I/O, iar a altora este de a schimba date prin intermediul lor cu
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
156
procesorul. Regi ștrii pot fi adresa ți fie într-un spa țiu special dedicat, numit
spațiul dispozitivelor I/O (map-are în z ona de adrese I/O) sau pot fi adresa ți
în spațiul dedicat memoriei (map-are în zona de memorie). În acest al doilea
caz delimitarea zonelor se face prin semnale de citire și scriere diferite. În
cazul calculatoarelor aceste dispozitive sunt localizate întotdeauna în zona
dispozitivelor I/O. Atâta vreme cât vorbim despre interconectarea fizic ă a
două dispozitive, ne referim la interfa țarea hardware (hardware interfacing).
Aceasta nu este îns ă suficient ă pentru a putea face cele dou ă sisteme (cel
central și cel periferic) s ă „se înțeleagă”. Este nevoie de asemenea de c ătre
un set de programe (rutine, func ții) care să „învețe” procesorul s ă lucreze și
să comunice cu perifericul respectiv. Acestea sunt apelate cu numele de
„driver” (printer driver , video camera driver, ethrnet card driver).
Procesor
Circuit de
interfață Circuit de
interfață Circuit de
interfață
Periferic
(Tastatură) Periferic
(Disc) Periferic
(Monitor)Magistral ă de date Magistral ă de adrese
Magistral ă de comand ăMemorie
Întreruperi
Fig. 7.1. Structura unui sistem de ca lcul cu dispozitive periferice
Existen ța circuitelor de interfa ță a fost impus ă de mai multe cerin țe:
– varietatea mare de dispozitive, tehnologii și moduri de func ționare
– viteza relativ redus ă de transfer a da telor (cea mai mic ă din întregul
sistem) dar și variabilă în limite largi
– formatul diferit al datelor
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
157
Funcție de utilitate, echipamentele periferice sunt de 3 tipuri:
– pentru transferul datelor între calculator și operatorul uman
(tastatură, mouse, monitor, imprimant ă, etc)
– pentru transferul datelor între calculatoare (interfa ță serială, interfață
paralelă, interfață USB, interfa ță Ethernet) și
– pentru memorarea datelor (unita te CD/DVD, unitate HDD, unitate
FDD).
Cele mai lente dispozitive sunt cele din prima categorie, adic ă cele care
transferă date cu operatorul uman (tastatura – 1octet x10 taste/s=10B/s,
mouse – 1 octet x 10 transferuri/s =20B/s, monitor – 4 octeti/pixel x
1Mpixel/display x 50 cadre/s =200 MB/s, ie șire audio – 8 kB/s, imprimante
– 200B/s. Urm ătoarele în categoria vitez ă sunt dispozitivele pentru
transferul datelor între ca lculatoare: modem – 110B/s 128kB/s, Ethernet –
10Mb/s, iar cele mai rapide sunt cel e pentru memorarea datelor: HDD –
1Gb/s, SSD – 3000MB/s, FDD – 10Mb/s, CD – 1.23Mb/s, Blu-ray DVD – 432Mb/s. Pentru valorile de mai sus „ B” înseamn ă Byte – octet, iar „ b”
înseamnă bit, iar cifrele sunt valori limit ă care de cele mai multe ori nu sunt
atinse.
7.1. Func țiile circuitelor de interfa ță
În figura 7.1, circuitele de interfa ță sunt conectate la magistralele
sistemului (date, adrese și comand ă și control) pe de o parte și la
dispozitivele perife rice, pe de alt ă parte. Func ție de perifericul c ăruia îi este
destinat, circuitul de interfa ță
realizeaz ă o serie de func ții: comunica ția cu
procesorul (date, comenzi, set ări și stare), comunica ția cu perifericul (date,
comenzi, set ări și stare), sincronizare, asigurarea unui tampon de date și
detecția erorilor. Deoarece într-un sist em pot exista simultan mai multe
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
158
periferice, pe lâng ă memoria acestuia, magistralele sunt folosite pentru
dialogul cu toate. Singura posibilitate este de a partaja timpul între toate acestea, la un moment dat putându-s e realiza comunicarea cu un singur
periferic sau cu memoria. Partajarea înseamn ă controlul și sincronizarea
fluxului de date (adresar ea unui periferic înseamn ă ca datele s ă ajungă sau
să provină de la acel periferic și inexisten ța unor suprapuneri temporale a
acestora pe magistrale). Controlul transf erului se poate re aliza în mai multe
moduri și depinde de cantitatea de date care se transfer ă în mod regulat. Cel
mai simplu mod care poate fi imaginat es te cel cu interogare a perifericului:
– procesorul interogheaz ă circuitul de interfa ță prin testarea st ării
acestuia
– după ce prime ște informa ția de stare, procesorul determin ă dacă sunt
date disponibile sau dac ă datele furnizate anterior perifericului au
fost procesate.
– dacă este îndeplinit ă una din cele 2 condi ții, atunci procesorul va
proceda la citirea unui cuvânt de tip dat ă din periferic sau va
transmite o nou ă dată către acesta.
Procesul în sine este mult mai complex, implicând mai multe opera ții pe
magistrale, deci un timp de partajare mai îndelungat. Atunci când perifericul
este mai lent, durata de ocuparea a magi stralelor este mai mare (mai mare
decât atunci când este accesat ă o locație de memorie) și poate fi extins ă
prin
semnale specifice (Busy, Wait). În condi țiile activării unui astfel de semnal,
procesorul nu trece la opera ția următoare ci prelunge ște starea curent ă până
la dezactivarea sa.
Pe baza comenzilor primite de la procesor, circuitul de interfa ță
trebuie să transmit ă perifericului ce are de f ăcut, sau atunci când este
anunțat de către periferic despre un eveniment (data disponibil ă, eroare) s ă
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
159
transmită informația procesorului.
Asigurarea unui tampon de da te între perifericul lent și procesor este o
funcție deosebit de important ă. Datorit ă faptului c ă rata de lucru a
procesorului este ridicat ă (frecvența de tact), iar cea a perifericelor este cu
câteva ordine de m ărime mai mic ă și în plus existen ța unor conexiuni lungi
lungește timpul de acces, nu este economic încetinirea sau întârzierea
procesorului pentru fiecare opera ție cu perifericele. Existen ța la nivelul
circuitului de interfa ță a unei memorii locale permite re ținerea datelor
temporar pân ă sunt citite de c ătre procesor sau pân ă sunt transmise c ătre
periferic. Transferul datelor pe cabluri lungi, sau existen ța unor sisteme
electromecanice presupun și apariția unor erori. Erorile pot fi fatale
(necorectabile) sau corectabile. În primul caz singurele în m ăsură să trateze
aceste erori sunt programele specifice pe care le ruleaz ă procesorul și atunci
acesta este în științat de către circuitul de interfa ță. În al doilea caz ele pot fi
corectate la nivel de interfa ță, fără interven ția procesorului (de exemplu
dacă se utilizeaz ă un cod corector de erori).
7.2. Ierarhizarea magistralelor
Din motivele ilustrate mai sus major itatea calculatoarelor folosesc mai
multe nivele de magist rale, ierarhizate func ție de viteza de operare. O
structură devenită clasică este cea cu 4 nivele, în care primul nivel este
reprezentat de magistrala local ă care conecteaz ă procesoul cu memoria
cache și eventual cu dispozitive I/O locale de mare vitez ă, un al doilea nivel
ceva mai lent realizeaz ă legătura cu memoria principal ă și cu dispozitive I/O
de viteză, iar al treilea nivel și mai lent realizeaz ă interfațarea cu
dispozitivele periferice mai lente și nivelul cel mai lent care realizeaz ă
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
160
legătura cu perifericele cele mai lente. O astfel de structur ă este prezentat ă
în figura 7.2.
Procesor Memorie
cache +
control Circuit
interfață I/O
local
Punte
magistrală
nord Memorie
principală Circuit
interfață
video
Punte
magistrală
sud Interfață
rețea Interfață
SATA
Punte
magistrală
super I/O Interfață
USB Interfață
PATA Magistral ă locală
Magistral ă memorie
Magistral ă super-extensieMagistral ă extensie
Interfață
tastatură Interfață
serială Interfață
paralelă Interfață
mouse
Fig. 7.2. Separarea magistralelor
Viteza cea mai mare este cea de pe magistrala intern ă unde transferul
datelor se face la frecven ța de lucru a procesoului. La aceast ă magistral ă
sunt legate memoria cache și controller-ul s ău, eventuale periferice locale de
viteză mare și circuitul de interfa ță cu magistrala de memorie (puntea nord).
Aceasta se mai nume ște și controller de memorie deoarece separ ă magistrala
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
161
de memorie de cea intern ă. La nivelul magistralei de memorie g ăsim
memoria principal ă și interfața video (cu procesorul și memoria video în
care se găsește imaginea afi șată pe ecran). De la nivelul pun ții nord, printr-o
magistrală internă se realizeaz ă legătura cu nivelul urm ător de magistral ă, cu
puntea sud. Procesorul nu are acces la dispozitivele de la acest nivel
(magistrala de extensie) decît prin intermediul celor 2 pun ți. Magistrala
internă asigură transferul datelor între cele 2 nivele astfel încât transferul
mai lent de la nivelul extensie s ă nu încetineasc ă transferul la nivelul
magistralei de memorie. De altfel și volumul de date vehiculat pe magistrala
de memorie este sensibil mai mare decât cel de la nivelul magistralei extensie, deci opera țiile de scriere și citire sunt mai multe. La nivelul
extensie g ăsim perifericele rapide (USB, SATA , Ethernet). Aici putem vorbi
de transferuri de blocuri de date între periferic și memoria principal ă, adică
transferul se face în șarje, dar cu viteze inferioare magistralei de memorie.
De la acest nivel, o punte super I/O realizeaz ă o adaptare c ătre cea mai lent ă
magistrală, la care sunt conectate cele mai lente periferice (porturile serial și
paralel, tastatura și mouse-ul. Aici datele sunt tr ansferate atât de lent încât
tranferul unui octet la acest nivel pr esupune sute de transferuri la nivelul
superior și mii de instruc țiuni executate la nivelu l procesorului (mii de
cicluri de citire/scriere din memori a cache. În acest fel transferul între
dispoitivele I/O și memorie nu încetine ște transferul pe magistralele
superioare și implicit activitatea procesorului.
Transferul informa țiilor pe magistrale poate fi sincron sau asincron.
Magistralele sincrone prezint ă un semnal de tact comun pentru toate
dispozitivele conectate la ele. Astfel ciclurile de transfer a datelor pe
magistrală respectă durate fixe, adic ă număr impus de cicluri de tact. Acest
lucru faciliteaz ă un transfer deosebit de simplu. Pun țile dintre magistrale
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
162
trebuie s ă realizeze sincroniza rea transferurilor între magistrale care
funcționează la frecven țe de tact diferite. Aici transferul poate fi f ăcut
sincron (prin bufferare) sau asin cron. Transferul asincron presupune
semnale de control suplimentare (ha ndshaking) între cele 2 dispozitive.
Transferurile de da te I/O sunt de regul ă asincrone. Din acest motiv ele
necesită stări suplimentare de a șteptare care s ă mărească durata unui ciclu
mașină. În funcție de organizarea structural ă (modul de mapare a zonei I/O
în spațiul de memorie sau în spa țiu separat) st ările de a șteptare pot fi
introduse de c ătre procesor (spa țiu separat pentru I/O) sau sunt introduse de
către dispozitiv (spa țiu comun cu memoria).
7.3. Structura circuitelor de interfa ță
Deși acest tip de circuite difer ă mult datorit ă tipului și numărului de
periferice ce le pot controla, o schema bloc generalizat ă a unui circuit de
interfață poate avea o structur ă ca în figura 7.3.
Magistral ă
de date
Registru de stare/control
Logică de
interfațare
cu
procesorulLogică de
interfațare
cu
perifericul
Logică de
interfațare
cu
perifericulMagistral ă
de adrese
Magistral ă
de control Date
Stări
Stări Date Comenzi
Comenzi Registru de date
.. .
Fig. 7.3. Structura tipic ă a unui circuit de interfa ță
Circuitul de interfa ță este conectat la sistem prin intermediul
magistralelor (semnalelor existente pe liniile magistralelor). Datele sunt transferate pe liniile magistralelor de date. Acestea sunt preluate în regi ștrii
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
163
circuitului și memorate pentru utilizare ulterioar ă. Astfel de regi ștri ce
primesc datele de la procesor sunt Registrul de configurare/comand ă și
Registrul de date. Tot la liniile date este conectat și Registrul de stare.
Registrul de configurare/control prime ște comenzi de la procesor și/sau
cuvinte de configurare. Un eori pot exista mai mul ți astfel de regi ștri dacă
circuitul de interfa ță comandă mai multe periferice. Alteori registrul de
comandă este situat la aceea și adresă cu cel de configurare, primul octet
scris la adresa acestuia fiind memorat în registrul de configurare, urm ătorii
octeți fiind memora ți în registrul de comand ă. Registrul de date stocheaz ă
temporar un cuvânt ce trebuie transmis perifericului, sau un octet ce este primit de la periferic. Deoarece adre sarea se face folosind semnalele de
scriere (WR), respectiv citire (RD), cei doi regi ștri sunt adesea situa ți la
aceeași adresă fizică, operația de scriere determin ă accesul la registrul de
date de ie șire, iar opera ția de citire accesul la registrul de date de intrare. În
mod similar la aceea și adresă cu registrul de comand ă este adesea situat
registrul de stare. Registrul de stare con ține informa ții despre starea
perifericului dar și despre starea circuitului de interfa ță. Astfel de informa ții
se referă la faptul c ă
data a fost transmis ă/citită, a apărut o eroare la
transmisie/recep ție, etc. În func ție de num ărul de regi ștri circuitul de
interfață poate ocupa una sau mai multe adrese.
Pentru a putea fi adresat exist ă o logică de interfa țare cu procesorul.
Pe baza semnalelor de pe magistral ă, aceasta recunoa ște când este adresat
circuitul (decodificator de adres ă) și comandă registrul corespunz ător.
La extrema cealalt ă există o logică de interfa țare cu perifericul.
Aceasta difer ă de la periferic la periferi c, de acesta lucru depinzând și
complexitatea sa. Opera țiile executate de aceste blocuri sunt de regul ă
ascunse procesorului (sincroniza rea datelor, formatul lor, ac ționări
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
164
electromecanice).
Un modul I/O ce are un circuit de interfa ță de nivel înalt cu procesorul este
numit canal I/O, în timp ce un modul simplu este numit controler I/O.
7.4. Metode de transfer a datelor
Datele pot fi transferate între procesor și periferic în 4 moduri:
– transferul datelor prin program – ini țiat și controlat de c ătre procesor
– transferul datelor prin întrerup eri – controlat de procesor dup ă ce a fost
inițiat de către periferic
– transferul datelor prin acces direct la memorie (DMA) – controlat de un
dispozitiv specializat dup ă ce a fost ini țiat de periferic.
– transferul datelor prin canale I/O – ini țiată de către procesor și executat ă
de alt dispozitiv.
7.4.1. Transferul datelor prin program
Acest gen de transfer este ini țiat de către procesor întotdeauna și controlat
prin program și se caracterizeaz ă prin simplitate. Este recomandat de folosit
atunci când sistemul are sufi cient timp pentru a îndeplini sarcinile cerute de
aplicația în cauz ă. Există două modalități de transfer a datelor prin program:
transferul direct și transferul prin interogare.
Transferul direct pres upune doar ca procesorul s ă scrie sau s ă citească
din portul respectiv, f ără a fi necesar a verifica dac ă perifericul a încheiat
operațiunea precedent ă. Accesul poate fi realizat doar la început în timpul
inițializării unui periferic, sau poate fi r ealizat în mod repetat în timpul
rulării programului (în faza de proiectare și testare a unor aplica ții).
Dup ă cum îi spune și numele transferul pr in interogare presupune
interogarea perifericului (polling) de c ătre procesor pentru a afla dac ă acesta
poate primi sau dac ă are disponibile date. Interogarea se face dup ă o schemă
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
165
prevăzută prin program și presupune testarea st ării perifericului (citirea
informației de stare din registru de stare). Registrul de stare con ține mai
multe circuite basculante bistabile (fanioane) care sunt modificate de c ătre
periferic în conformita te cu starea sa. Func ție de valoarea citit ă, procesorul
poate urma un segment de program care s ă reia interogarea (dac ă
dispozitivul nu este preg ătit) sau poate continua cu transferul datelor dac ă
acesta este preg ătit. Schema logic ă a unui astfel de tr ansfer este prezentat ă
în figura 7.4.
Comandă
periferic
Test
stare
Citește
cuvânt de la
periferic
Salvează
cuvântul în
memorie
Operație
terminată?Citește
stare
periferic
DANUOcupat
Liber
Fig. 7.4 Transferul datelor prin interogare
Să presupunem c ă perifericul ocup ă 2 adrese în zona de I/O. La
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
166
adresa 278h este situat registrul de comand ă (pe comand ă de scriere) și tot la
aceeași adresă este situat și registrul de stare (pe comand ă de citire). La
adresa 279h este situat registrul de date. Programul va comanda perifericul
să transmită cîteva cuvinte prin intermediul acestui pe riferic. În acest scop,
trebuie înscris câte un cuvânt în registrul de date, pornit ă transmisia și apoi
testat perifericul pentru a vedea dac ă a realizat transmisia pân ă se obține un
răspuns afirmativ, dup ă care se reia bucla. În figura 7.5 sunt prezenta ți cei 3
regiștri ai perifericului și semnifica ția unor bi ți.
278h
278h WR
RD
279h Registrul de comand ă
Registrul de stare
Registrul de date ST
BYER
D0D1D2D3D4D5D6 D7
ST
BY
ER Bit Start Transmisie: ST=1 porne ște transmisia
Bit Busy: BY=1 înseamn ă periferic ocupat
Bit Error: ER=1 înseamn ă că a apărut o eroare
Fig. 7.5 Structura regi ștrilor unui periferic
Structura unui astfel de program este urm ătoarea:
Adresă Instruc țiune Operand Comentariu
100h Load R xxh 101h Store R 279h ; Scrie data xx în periferic 102h Load R 01h 103h Store R 278h ; Porne ște transmisia
104h Load R (278h) ; Citire octet de stare 105h AND R 01h ; Se mascheaz ă bitul Busy
106h Jump if not zero 104h ; Bucleaz ă
107h Load R (278h) ; Citire octet de stare 108h AND R 02h ; Se mascheaz ă bitul Error
109h Jump if not zero 100h ; Se retransmite octetul 110h Load R yyh ; Se continu ă cu următorul cuvânt
111h Store R 279h ; Scrie data yy în periferic … …
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
167
7.3.2. Transferul datelor prin întreruperi
Sistemul de întreruperi al unui pr ocesor permite întreruperea activit ății
curente a procesorului pentru efetuarea unor opera ții asincrone generate de
evenimente externe sau interne. Abandonarea programului în execu ție se
face la terminarea instruc țiunii în curs (execu ția unei instruc țiuni nu este
interuptibil ă). Acceptarea și tratarea întreruperilor pot fi validate sau
invalidate prin program. Dac ă este validat ă acceptarea întreruperilor,
programul este întrerupt și se apeleaz ă o rutină de întrerupere (de tratare a
întreruperii). De regul ă aceasta trebuie s ă fie cât mai scurt ă, iar întreruperile
trebuie invalidate pe durata execu ției acesteia. Dup ă încheierea rutinei,
programul se reia de unde a fost întrerupt. Datorit ă faptului c ă rutina de
întrerupere poate afecta oricare din regi ștrii procesorului, datele trebuie
salvate înainte de salt (de regul ă în stivă) și refăcute după revenire pentru ca
programul s ă continue de unde r ămăsese. Datele care trebuie salvate sunt:
– adresa de revenire (contorul de pr ogram înainte de a efectua saltul la
rutina de întrerupere;
– indicatorii de condi ții și stare ai procesorului;
– regiștrii interni;
Avantajul acestei metode este acela c ă nu se pierde timp cu
interogarea perifericului. Buclarea pr ogramului de mai sus se poate face și
de sute sau mii de ori pîn ă perifericul execut ă task-ul. De exemplu o
interfață serială care lucreaz ă cu rata de 9600 baud (cca 0.1 ms) necesit ă 1.2
ms pentru a transmite un cuvânt – 1 bit de start, 8 bi ți de date, un bit de
paritate și 2 biți de stop, iar un procesor RISC cu frecven ța de tact de 1MHz
execută o instrucțiune pe tact. Asta înseamn ă execuția a 1200 de instruc țiuni
pe durata transmisiei. Cine poate genera întreruperea? În principiu orice periferic conectat la
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
168
sistem poate genera o întrerupere, dac ă este prev ăzut cu aceast ă facilitate,
componente hardware cu rol de supraveghere a func ționării sistemului (a
tensiunii de intrare, temperatra pr ocesorului) sau evenimente interne
(instrucțiuni inexistente).
Exist ă 2 tipuri de întreruperi:
– întreruperi nevectorizate – adresa rutinei de întrerupere este fix ă
– întreruperi vectorizate – adresa este furnizat ă chiar de c ătre sursa de
întrerupere sub forma unui vector de întrerupere . În unele cazuri vectorul
indică adresa de început a rutinei de într erupere, dar în alte cazuri reprezint ă
o adresă de memorie unde este memorat ă adresa rutinei de întrerupere.
Unitatea central ă poate ini ția un transfer de date, trimi țând o comand ă
către circuitul de interfa ță, după care continu ă execuția programului.
Circuitul de interfa ță acționează asupra perifericului și va întrerupe
procesorul dup ă ce data a fost transmis ă către acesta sau când o data este
disponibil ă în registrul de date.
În figura urm ătoare este prezentat ă o schemă logică a transferului prin
întreruperi. Dup ă cum se observ ă, programul principal este întrerupt imediat
după terminarea execu ției instruc țiunii în cursul c ăreia a apărut întreruperea.
Execuția continu ă cu rutina de întrerupere:
– se salveaz ă regiștrii procesorului
– se testeaz ă perifericul, dac ă acesta nu este gata se genereaz ă o eroare
și se iese din rutin ă,
– se citește data de la periferic,
– se verific ă dacă mai sunt de preluat date și se revine la programul
principal dac ă nu mai sunt date,
– se dă o nouă comandă acestuia dac ă mai sunt date sau se revine la
programul principal.
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
169
Comandă
periferic
Test
stare
Citește
cuvânt de la
periferic
Salvează
cuvântul în
memorie
Operație
terminată?Salvează
regiștri
DA
NU Eroare
Pregătit
Comandă
periferic
Return Întrerupere
Instrucțiune
Instrucțiune
Instrucțiune
Instrucțiune Întrerupere Program principal Rutin ă întrerupere
Citește
stare
periferic
Reface
regiștrii
Fig. 7.6. Transferul date lor prin întreruperi
Programatorul trebuie s ă aibă grijă ca rutina de întrerupere s ă fie cât mai
scurtă pentru a nu ap ărea altă întrerupere pe durata execu ției acesteia. De
multe ori se dezactiveaz ă întreruperile pe durata execu ției acestei rutine.
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
170
Sunt situa ții în care sistemul con ține mai multe dispozitive I/O, fiecare
având întreruperea sa proprie. Evident c ă în aceste condi ții pot ap ărea
simultan mai multe întreruperi, fiind nevoie de arbitrare. Solu ția este de a
aloca nivele de prioritate întrerupe rilor, procesorul tratând evident
întreruperea cu prioritatea cea mai mare și ulterior pe celelalte în ordinea
priorităților acestora. Arbitrarea poate fi controlat ă de către procesor (prin
software sau prin hardware), de c ătre un circuit controler de întreruperi sau
prin hardware, dispozitivele fiind conectate într-un lan ț de priorit ăți.
Arbitrarea prin software necesită un hardware minimal (de exemplu
un registru în care fiec ărui periferic întreruperi îi corespunde un bit care va
fi setat atunci când acesta genereaz ă o cerere de întrerupere. Procesorul
citește registrul și în funcție de starea b ților decide care rutin ă de întrerupere
va fi executat ă. Dacă sunt activa ți mai mul ți biți simultan, atunci tot prin
program hot ărăște ordinea în care va trata întreruperile.
Arbitrarea poate fi controlat ă de către un controler de întreruperi .
Această alternativ ă este cea mai utilizat ă. El preia toate sarcinile
procesorului privind arbitrarea. Acesta accept ă întreruperi de la mai multe
surse de întrerupere, determin ă care are prioritatea cea mai mare și
generează către procesor o cerere de întrerupere. Dup ă ce acesta accept ă
cererea, controlerul plaseaz ă pe magistrala de date vectorul de întrerupere
asociat întreruperii cu prioritatea cea mai mare. Procesorul întrerupe
execuția programului în curs și pe baza vectorului de întrerupere calculeaz ă
adresa rutinei de întrerupere corespunz ătoare și o încarc ă în numărătorul de
program. Evident, urm ătoarea instruc țiune executat ă va fi prima din
subrutina de întrerupere. Tipic, controlerul de întreruperi con ține un set de
regiștri:
– Registrul cererilor de întrerupere (Interrupt Request Register) –
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
171
specifică ce întreruperi a șteaptă să fie servite;
– Registrul de servire a întreruperilor (Interrupt Service Register) –
specifică ce întrerupere a fost acceptat ă, dar este în a șteptare;
– Registrul de mascare a întreruperilor (Interrupt Mask Register) –
specifică care întreruperi pot fi acceptate și care nu.
Controlerul este programabil, secven ța de programare fiind realizat ă la
început, imediat dup ă pornirea sistemului. Ulterior, set ările pot fi modificate
prin program. Modul de alocare a priorit ăților poate fi: fix, rotitor (fiecare
întrerupere devine dup ă servire cu prioritate minim ă) sau cu mascare
(întreruperile pot fi i nvalidate temporar).
Avantajele utiliz ării unui astfel de contro ler sunt timpul mic de r ăspuns și
flexibilitatea în alocarea priorit ăților.
O alt ă metodă de arbitrare este cea cu lanț de priorit ăți, care se
bazează pe existen ța unor circuite de invalidare în cadrul fiec ărui circuit de
interfață (daisy chain). Cu cât dispoziti vul este situat mai departe de
procesor în lan ț, cu atât prioritatea sa este mai mic ă. Ea este stabilit ă prin
hardware și este fix ă. În figura urm ătoare este prezentat ă o astfel de
structură. Dispozitivele I/O (DIO) prezint ă semnale specifice conect ării în
structură tip daisy chain (IEI – Interrupt Enable Input și IEO – Interrupt
Enable Output). De asemenea dispozitivele prezint ă o ieșire INT cu colector
(drenă) în gol care permite legarea acestora împreun ă la intrarea INT a
procesorului. Aceast ă linie se leag ă la tensiunea de alimentare printr-o
rezistență realizând func ția SAU cablat. Prioritatea cea mai mare o are
perifericul ce mai apropiat de pro cesor pe linia INT ACK (Interrupt
Acknowledge), cel mai îndep ărtat având prioritatea cea mai mic ă. Acestea
sunt fixe, neputând fi modificate datorit ă cablării hardware. Circuituk (CTR
INT) furnizeaz ă procesorului vectorul de întrerupere.
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
172
CPU DATA ADR
INT ACK
INT IEI IEO
INT INT INT VCC ADR
IEI IEO IEI IEO DATA
IRQ IRQ IRQ
IRQ 0IRQ 1 IRQ nADR DATA ADR DATA
VECT
INT CTR INT DIO 0 DIO 1 DIO n …
Fig. 7.7. Arbitrarea întrer uperilor prin structur ă de tip „daisy chain”.
La activarea unei cereri de întrerupere de c ătre unul din dispozitivele
DIO k, procesorul activeaz ă semnalul INT ACK imediat ce situa ția o
permite. Dac ă primul dispozitiv de pe lan ț a generat întreruperea, atunci
ieșirea sa IEO va fi în zero logic, celelal te circuite fiind invalidate. El va
atenționa modulul CTR INT despre faptul ca i s-a acceptat întreruperea (prin
linia INT 0), care, la rândul s ău, va plasa pe magistrala de date vectorul de
întrerupere corespunz ător dispozitivului respecti v. Pe baza acestui vector,
procesorul va calcula adre sa rutinei de întrerupere și va efectua un salt
necondiționat la aceast ă adresă. Dacă întreruperea nu a fost activat ă de
primul dispozitiv ci de un altul, atunci semnalul INT ACK se va propaga până la acesta, ie șirea sa fiind în zero logic. Cu alte cuvinte fiecare
dispozitiv care nu a ge nerat întrerupere, copiaz ă IEI la IEO, iar cel care a
generat întreruperea are IE I diferit de IEO. Aceast ă stare de lucru este
menținută atâta timp pân ă dispozitivul este servit de c ătre procesor. În
momentul în care un dispozitiv dore ște să genereze o întrerupere:
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
173
– intrarea sa IEI poate fi în 0 logic, semnalizându-i faptul c ă un alt
dispozitiv cu prioritate mai mare este servit; Dispozitivul va a ștepta
până când IEI va trece în 1 logic.
– intrarea sa IEI este în 1 logic și atunci poate genera o cerere de
întrerupere și va trece ie șirea sa IEO în 0 logic, anun țând
dispozitivele mai pu țin prioritare ca este servit.
În momentul în care prime ște acceptul INT ACK, dispozitivul anun ță
controlerul CTR INT prin semnalul INT k, iar acesta plaseaz ă vectorul de
întrerupere pe magistrala de date. C ontrolerul poate lipsi, în aceste condi ții
dispozitivul însu și plasează vectorul de întrerupere pe magistral ă.
7.4.3. Transferul datelor prin acces direct la memorie
Deși transferul datelor utilizând întreruperi permite o vitez ă mare de
transfer, totu și acest gen de transfer implic ă masiv procesorul. Datele trec de
la perfieric c ătre memorie prin regi ștrii procesorului. De fiecare dat ă când
procesorul trateaz ă o întrerupere el abandoneaz ă temporar opera ția pe care o
executa și face saltul la rutina de întrer upere. Acesta este precedat de
salvarea datelor din regi ștrilor procesorului, lucru care consum ă timp.
Atunci când trebuie transferate bl ocuri mari de date (imagini, fi șiere),
procesorul ar trebui întrer upt pentru fiecare octet la utilizarea întreruperilor.
Transferul prin DMA este o solu ție care rezolv ă aceste neajunsuri.
După cum îi spune și numele, transferul se realizeaz ă fără interven ția
procesorului, direct între periferic și memorie, întregul proces fiind
coordonat de c ătre un circuit specializat. Acest circuit se nume ște controler
DMA. În figura 7.8 este prezentat ă structura unui sist em de calcul cu
posibilități DMA.
Inițierea transferului se face de c ătre periferic. Cererea este adresat ă
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
174
controlerului (Cerere DMA), iar acesta solicit ă la rândul s ău procesorului
accesul și controlul magistralelor sistemului (CM – cerere magistrale – „bus
request”).
Memorie
UCP DMA Periferic Date
Adrese
Cerere DMA
Acceptare DMA INT
CM
MA WR RD RD WR
WR RD D A
D A D A D IOR IOW WR RD IOR IOW A
Fig. 7.8. Sistem de calcul cu controler DMA
Procesorul cedeaz ă magistralele cu o mic ă întârziere (sfâr șitul ciclului de
execuție a instruc țiunii în curs) trecându-le în starea de înalt ă impedan ță
(HZ) și activeaz ă semnalul MA – magistrale acordate – „bus granted”.
Odată magistralele cedate, controlerul DMA anun ță circuitul periferic c ă
deține magistralele (Acceptare DMA). Apoi furnizeaz ă adresele pe
magistrala de adrese și ativează semnalele de scriere/citire (IOR/IOW și
WR/RD) în/din memorie/periferic func ție de sensul transferului.
Dispozitivul surs ă pune datele pe magistrala de date, iar dispozitivul
destinație le prime ște.
Structura simplificat ă a unui controler DM A este prezentat ă în figura
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
175
7.9.
TC
Reg Adr Baz ă
Reg Adr Reg Nr Baz ă
Reg Nr Cuv
Reg Adr Baz ă
Reg Adr Reg Nr Baz ă
Reg Nr Cuv Reg Stare Reg Masc ă
Logică
Arbitrare. . . Reg Temp
Adrese CerDMA 0
AprobDMA 0
DMA 0 DMA k
CerDMA k
AprobDMA k
CM MAReg Mod Reg CmdDate
WR
RD
IOWR
IORD Control
Fig. 7.9. Structura intern ă a unui controler DMA
Un controler DMA este în princi piu un periferic pentru procesor și
este programat s ă realizeze o secven ță de transfer de date în locul
procesorului. Un astfel de circuit are de regul ă mai multe, a șa numite, canale
DMA (DMA 0, DMA 1,…DMA k), fiecare putând fi programate s ă realizeze
un transfer de date. Fiecare canal con ține 4 regi ștri: registrul baz ă al
contorului de cuvi nte (Reg Nr Baz ă), registrul contor de cuvinte curent
(Registrul Nr Cuv), registrul adres ă de bază (Reg Adr Baz ă) și registrul de
adresă curentă (Reg Adr). Primii 2 regi ștri sunt dedica ți contoriz ării
cuvintelor transferate, iar ceilal ți pentru contorizarea adreselor.
Registrul de adres ă curentă (Current address register) – con ține mereu
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
176
adresa curent ă la care se face transferul DMA. Ea este incrementat ă sau
decrementat ă automat dup ă fiecare transfer. Registru l poate fi citit sau scris
de către procesor și poate fi înc ărcat cu valoarea ini țială din registrul adres ă
de bază după finalizarea unui proces de tr ansfer DMA (EOP – End of
Process) dac ă autoinițializarea a fost validat ă.
Registrul contor de cuvinte cu rent (Current word register) re ține
numărul de transferuri ce mai trebuie efectuat. El este decrementat dup ă
fiecare transfer al unui cuvânt. Când con ținutul său ajunge la zero o condi ție
TC (Terminal Count) este generat ă. Poate fi scris sau citit de c ătre procesor.
Registrul poate fi reini țializat dup ă finalizarea unui proces (EOP) dac ă
autoinițializarea a fost validat ă.
Regi ștrii adres ă de bază și contor de cuvinte de baz ă – aceștia
memoreaz ă valorile ini țiale ale regi ștrilor curen ți. Ei sunt înscri și simultan
cu regiștrii curenți și nu pot fi citi ți de către procesor.
Controlerul mai con ține și alți regiștri:
– Registrul de comand ă – controleaz ă setările controlerului – posibilitatea
transferului memorie –memorie, valid area sau invalidarea circuitului,
prioritățile și nivelele pe care sunt ac tive semnalele CerDMA (DMA
Request) și AprobDMA (DMA Acknowledge).
– Registrul de mod – fiecare canal DM A are un registru de mod de 6 bi ți.
Atunci când procesorul scrie în registrul de mod, bi ții 0 și 1 determin ă
în care registru de mod se înscrie informa ția. Ceilalți biți stabilesc tipul
transferului (verificare, sc riere sau citire), autoini țializarea, modul de
incrementare/decrementare a adresei și modul de lucru.
– Registrul masc ă – fiecare canal are asociat un bit masc ă care poate
masca sau nu cererea DMA. Fiecare bit de mascare este setat
(mascheaz ă) atunci când se termin ă un proces și nu este activat ă
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
177
autoinițializarea. Bi ții pot fi șterși prin soft (0 logic), iar func ția Reset îi
inițializează în starea 1 logic.
– Registrul de stare – po ate fi doar citit de c ătre procesor. El con ține
informație despre starea circuitului (care din canale a ajuns la TC și care
canale au cerere DMA.
– Registrul temporar este folosit pentru re ținerea datelor în timpul
transferului memorie-memo rie. Ultimul cuvânt tran sferat poate fi citit
de către procesor din acest registru.
Un controler DMA permite transfer ul datelor într-unul din cele 4
moduri disponibile:
– Modul de transfer singular – canalul DMA este programat s ă
realizeze un singur transfer. Contorul de cuvinte este incrementat, iar
contorul de adrese va fi incr ementat/decrementat la fiecare dat ă transferat ă.
Când contorul de cuvinte ajunge la zero se genereaz ă o condiție TC și
canalul este autoini țializat dac ă a fost programat în acest sens. Semnalul
CerDMA trebuie men ținut activ pân ă semnalul AprobDMA devine activ.
După transferul unui octet semnalul CM (cerere magistrale – Bus Request,
Hold Request) devine inactiv și elibereaz ă magistralele. Dac ă mai sunt
octeți de transferat (CerDMA activ), atunci CM se va activa din nou și după
activarea semnalului MA (magistrale acordate – Bus Granted, Hold Acknowledge) se va mai transfera un octet.
–
Modul de transfer în bloc – transferul este ini țiat de către periferic
odată cu activarea semnalului CerDMA, care trebuie men ținut activ doar
până la răspunsul controlerului cu AprobDMA activ. Datele sunt transferate
una câte una pân ă contorul de cuvint e ajunge la zero (condi ție TC) sau pân ă
se comand ă un proces EOP extern (programat de c ătre procesor). Canalul se
poate autoini țializa dac ă acest serviciu a fost activat.
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
178
– Transfer DMA la cerere – Transferul datelor se face pân ă când
CerDMA devine inactiv sau pân ă se programeaz ă o condiție EOP extern ă.
– Modul cascadat – în acest mod mai multe circuite DMA sunt
înlănțuite pentru extinderea num ărului de canale. Configura ția hardware este
prezentată în figura 7.10.
CMProcesor
DMA 1 DMA 2
DMA 3 AMCM
AprobDMAAprobDMACerDMA
AMCM
AMCM
AprobDMACerDMA
Fig. 7.10.Cascadarea circuitelor DMA
Circuitul DMA1 situat pe primul nivel preia cererile DMA de la
circuitele DMA2 și |DMA3 de nivelul 2 și le transmite procesorului. Astfel
cererile DMA se vor propaga prin sistemul de priorit ăți ale circuitul DMA1.
Deoarece circuitul de pe primul nivel este folosit doar pentru a prioritiza
circuitele adi ționale nu trebuie s ă furnizeze adrese sau semnale de comand ă.
În aceste condi ții toate celelalte semnale cu excep ția celor figurate în figura
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
179
7.10 sunt dezactivate. În mod asem ănător se pot ad ăuga și alte nivele de
controlere DMA. Sunt posibile 4 tipuri de transfer diferite:
– Transfer de scriere – datele sunt transferate din dispozitivul de
intrare ieșire în memorie prin activarea semnalelor WR și IORD
– Transfer de citire – datele s unt transferate din memorie în
dispozitivul de intrare ie șire prin activarea semnalelor RD și IOWR
– Transfer de verificare – sunt transferuri false. Circuitul ac ționează ca
în primele 2 moduri, plasând adresele pe magistral ă, dar neactivând liniile
de control.
– Transfer memorie-memorie – pentru a transfera blocuri de date
dintr-o zon ă de memorie într-alta se poate folosi aceast ă alternativ ă. Acest
tip de transfer se activeaz ă prin activarea bit-ului suplimentar în registrul de
comandă. Transferul este ini țiat printr-o cerere DMA software c ătre canalul
0. Canalul este programat în modul de transfer în bloc. Registrul adres ă
curent al canalului 0 genereaz ă adresa sursei. Data plasat ă de sursă pe
magistrala de date este stocat ă în registrul temporar al controlerului.
Registrul de adres ă al canalului 1 genereaz ă adresa țintă iar data este plasat ă
pe magistrala de date di n registrul temporar. Dup ă transferul unui cuvânt
registrul contor de cuvinte al canalului 1 este decrementat. Transferul se termină atunci când acesta ajunge la zero.
Formele de und ă pentru transferul datelor între periferic și memorie
sunt prezentate în figura 7.11. El e sunt transferuri care se desf
ășoară pe
lângă controlerul DMA (fly-by). Controlerul DMA genereaz ă doar adresa
sursei sau destina ției și activeaz ă simultan semnalele de scriere/citire pentru
memorie și scriere/citire pentru I/O. Durata acestui transfer este de un ciclu
de magistral ă.
Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire
180
CerDMA
AprobDMA
IOWR/IORD
RD/WR
Adr
Date Adresă memorie
Date Dispozitiv I/O
Controler DMA
Controler DMA
Controler DMA
Controler DMA
Dispozitiv I/O sau Memorie
Fig. 7.11. Transfer DMA între periferic și memorie
Formele de und ă pentru transferul datelor memorie-memorie sunt
prezentate în figura 7.12. Ele su nt transferuri care se desf ășoară prin
controlerul DMA (flow-through ). Controlerul DMA genereaz ă atât adresa
memoriei surs ă cât și a memoriei destina ție și activeaz ă pe rând semnalele
de citire și scriere pentru memorie. Durata acestui transfer este de dou ă
cicluri de magistral ă.
CerDMA
AprobDMA
RD/IORD
WR/IOWR
Adr
Date Adresă memorie surs ă
Data Dispozitiv I/O sau software
Controler DMA Controler DMA
Controler DMA
Controler DMA
Adresă memorie destina ție
Data
I/O sau Memorie surs ă Controler DMA
Fig. 7.12. Transfer DMA memorie-memorie
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Arhitectura calculatoarelor 7. Sistemul de intrare-ie șire [611821] (ID: 611821)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
