Sunteți pe pagina 1din 138

Curs 4

3.2.2. nmulirea binar


Exist numeroase metode de nmulire binar. Cele mai importante sunt
urmtoarele:
Metoda adunrii repetate;
nmulirea prin metoda Booth.
Fiecare din aceste metode are mai multe variante, care in cont de modul
reprezentare a numerelor cu semn sau urmresc creterea vitezei de execuie
operaiei.

3.2.2.1. nmulirea prin metoda adunrii repetate (metoda direct)
Aceast metod se poate aplica pentru numere reprezentate n mrime MS.
Se nmulesc numerele iar cifra de semn este tratat separat. Dac numerele sunt
reprezentate n C1 sau C2, numerele negative trebuie complementate pentru a obine
reprezentarea numerelor pozitive corespunztoare (care sunt identice cu
reprezentarea n MS). Aceast metod de nmulire este recomandat pentru
numerele reprezentate n C1, cnd complementarea se realizeaz simplu. Pentru
numerele reprezentate n C2, se prefer utilizarea altor metode care opereaz
direct asupra numerelor n aceast reprezentare.
Fie 12 = X i 6 = Y . Reprezentnd aceste numere n MS i considernd
numai biii de mrime, nmulirea binar obinuit a celor dou numere se
efectueaz astfel:
1100 x Denmulit (12)
0110 nmulitor (6)
0000
1100 Produse pariale
1100
0000
1001000 Produs final (2
6
+2
3
=64+8 =72)
Dup cum se constat procesul de nmulire const din testarea succesiv
a biilor nmulitorului, ncepnd cu bitul cel mai puin semnificativ (c.m.p.s.). Dac
bitul testat este 1, se copiaz denmulitul, n caz contrar fiind copiate zerouri.
Se pot formula urmtoarele observaii:
1. nmulirea implic generarea unor produse pariale, cte unul pentru
fiecare bit al nmulitorului. Aceste produse sunt apoi nsumate pentru a se obine
produsul final.
2. Dac bitul testat al nmulitorului este 0, produsul parial corespunztor este
0. Dac acest bit este 1, produsul parial este egal cu denmulitul.
3. Pentru obinerea produsului final, fiecare produs parial este deplasat la
stnga cu o poziie fa de produsul parial precedent.
4. nmulirea a dou numere binare fr semn de cte n bii are ca rezultat
un produs cu o lungime de pn la n 2 bii.
Pentru implementarea nmulirii directe se introduc urmtoarele modificri:
- In locul adunrii tuturor produselor la final, se realizeaz adunarea lor, ntr-
un registru acumulator, pe msur ce ele sunt obinute. In acest mod se elimin
necesitatea de a memora toate produsele pariale, fiind necesare mai puine
registre.
- Dup obinerea fiecrui produs parial acesta este deplasat la dreapta cu
o poziie.
- Testarea nmulitorului ncepe cu bitul c.m.p.s.
- Pentru fiecare bit de 1 din nmulitor, este necesar o adunare i o
deplasare. Pentru fiecare bit de 0 din nmulitor, cnd produsul parial este 0, este
necesar numai o deplasare.
Avantajele acestei implementri sunt urmtoarele:
Se utilizeaz un sumator de n bii, chiar dac rezultatul va avea 1 2 + n bii
(innd cont i de semn).
Pentru denmulit se utilizeaz un registru de 1 + n bii.
Registrul acumulator are 1 + n bii.
Deoarece rezultatul are 1 2 + n bii, registrul acumulator ar trebui completat cu
un registru auxiliar pentru memorarea produsului. O soluie eficient const n
utilizarea biilor care nu mai sunt necesari din registrul nmulitorului. In acest caz
registrul acumulator se plaseaz n continuarea registrului nmulitorului, formnd
un registru combinat care se deplaseaz la dreapta n fiecare pas al operaiei.
Astfel, n final registrul acumulator pstreaz biii c.m.s. ai rezultatului, iar
registrul nmulitorului pstreaz biii c.m.p.s.
Structura unui dispozitiv de tip paralel care implementeaz metoda
nmulirii directe este prezentat n figura 3.6. Dispozitivul de nmulire cuprinde
registrele A, B i Q de n+1 bii fiecare, un sumator paralel de n bii i un bloc de
comand. Aceste registre sunt descrise n continuare.

Fig. 3.6

tergere
Bloc de comand

N
Y

Sumator de n bii
B
n-1
B
n-2
B
1


B
0
B
n
A
n
A
n-1
A
n-2
A
1
A
0 Q
n-1
Q
n-2
Q
1


Q
0
Q
n
X
ncrcare
ncrcare
Test Q
0
Deplasare

Start Stop
Registrul A este utilizat ca acumulator pentru pstrarea produsului parial.
La sfritul operaiei de nmulire,
n
A va conine semnul rezultatului. Registrul
trebuie s aib intrri paralele pentru nscrierea informaiei de la sumator i s
funcioneze ca registru de deplasare spre dreapta. Astfel la nceput se transfer
bitul
0
A n poziia 1 n a registrului Q i ulterior, pe msur ce procesul de
nmulire avanseaz, sunt transferai n registru Q biii care urmeaz
(A
1
,A
2
,A
n-1
)

Fig. 3.7

Registrul B este utilizat pentru ncrcarea paralel a denmulitului, iar
coninutul lui se transfer la una din intrrile sumatorului. Registrul Q este utilizat
pentru ncrcarea paralel a nmulitorului. Acesta funcioneaz ca un registru de
Start
BX QY
A0 Nn
Q
n
B
n
Q
n
Q
0
=1
AA+B
A
n
0, A
i
A
i+1
Q
n-1
A
0
, Q
i
Q
i+1
NN-1
N=0
A
n
Q
n
Stop

Nu
Da
Nu
Da
deplasare la dreapta, cu excepia bitului
n
Q care memoreaz la nceput semnul
nmulitorului i apoi semnul rezultatului.
Blocul de comand al dispozitivului de nmulire genereaz semnalele de
comand n urma crora se succed operaiile elementare din care se compune
operaia de nmulire. Acest bloc conine un numrtor N, care este iniializat cu
numrul biilor de mrime n i este decrementat n fiecare pas al operaiei.
Organigrama operaiei de nmulire prin metoda direct este prezentat n
figura 3.7.
Operaia ncepe cu iniializarea registrelor. Denmulitul i nmulitorul se
ncarc n registrul B, respectiv Q. Registrul acumulator este iniializat cu 0, iar
numrtorul N este iniializat cu n, care reprezint numrul de cifre ale
denmulitului i nmulitorului. Se formeaz apoi semnul rezultatului,
(
n n n
B Q Q = ) care este pstrat n bistabilul
n
Q al registrului Q.
Se testeaz bitul
0
Q al nmulitorului i dac acest bit este 1, se adun
denmulitul la produsul parial aflat n registrul acumulator. Se deplaseaz apoi
registrul combinat Q A_ la dreapta cu o poziie; pe poziia c.m.s. a registrului A
se introduce 0. Se decrementeaz apoi numrtorul N. Dac numrtorul nu a
ajuns la 0, se continu cu pasul urmtor al operaiei, testnd urmtorul bit al
nmulitorului i repetnd operaiile descrise anterior. Dac numrtorul este 0,
se transfer semnul rezultatului din bistabilul
n
Q pe poziia c.m.s. a registrului
acumulator.
In continuare vom prezenta urmtorul exemplu: X = 9, Y =-12.
Reprezentarea acestor numere n MS este:
X =0 1001 i Y =1 1100.
Se iau n consideraie numai bii de mrime, deci
1001 = X , 1100 = Y
Determinarea semnului rezultatului se face separat. Execuia operaiei de
nmulire este ilustrat n tabelul 3.2, care prezint coninutul registrelor
dispozitivului de nmulire n fiecare pas al operaiei.
Tabelul 3.2. Execuia operaiei de nmulire 9 x (-12) prin metoda direct
Pas A Q B Q
n
Q
0
N Operaii
0 0 0000 1100 1001 1 0 4 Iniializare
1 0 0000 0110 1001 1 0 3 Deplasare A_Q la dreapta
2 0 0000+ 0011 1001 1 1 2 Deplasare A_Q la dreapta
3 1001
0 1001
0 0100+

0011
1001
1001 1

1
1 Adunare denmulit

Deplasare A_Q la dreapta
4 1001
0 1101
0 0110

1001
1100
1001 1

0
0 Adunare denmulit

Deplasare A_Q la dreapta
5 1 0110 1100 1001 1 0 0 Stabilire semn rezultat

Rezultatul este: 1 0110 1100 =- 0110 1100
2
=-6Ch =-(6*16+12)=-108


3.2.2.2. nmulirea prin metoda Booth
Dac numerele din calculator sunt reprezentate n C2, se prefer o
metod de nmulire care opereaz direct asupra numerelor n aceast
reprezentare. Avantajul unei asemenea metode const n eliminarea operaiei
de complementare a operanzilor i a rezultatului, dac acetia sunt negativi,
Pentru rezolvarea acestei probleme s-au elaborat mai multe metode dintre care
amintim metoda Burks-Goldstine-von Neumann, metoda Robertson i metoda
Booth. Dintre acestea, metoda Booth este cea mai utilizat.
Pentru a nelege principiul metodei Booth s considerm dou numere
X i Y , care reprezint denmulitul, respectiv nmulitorul. Pentru nceput s
presupunem c n cadrul nmulitorului exist un grup compact de cifre 1
nconjurat de cifre 0. Astfel dac nmulitorul este
00111110 = Y
Produsul celor dou numere este dat de
= + + + + + + + =
= =
) 2 0 2 1 2 1 2 1 2 1 2 1 2 0 2 0 (
) 00111110 (
0 1 2 3 4 5 6 7
X
X Y X

62 ) 2 2 2 2 2 (
1 2 3 4 5
= + + + + = X X
Rezult c pentru calcularea produsului trebuiesc efectuate 5 adunri ale
denmulitului.
S observm acum c grupul de cifre 1 poate fi scris i sub forma
1 6 1 6 1 2 3 4 5
2 2 2 1 2 1 2 2 2 2 2 = = + + + +
J ustificarea aceste relaii este prezentat n continuare:

1 2 3 4 5
2 2 2 2 2 + + + + =111 110
Dac adunm acum la ultimul rezultat numrul 10 =
1 0 1
2 2 0 2 1 = +
Se obine: 111 110 +10=1 000 000 =
6
2
Rezult c: 111 110 =1 000 000 10 =
1 6
2 2
nlocuind acest rezultat n expresia obinut anterior pentru calcularea
produsului se obine:
62 ) 2 2 (
1 6
= = X X Y X
Ultima relaie ne arat c putem calcula acest produs numai printr-o
adunare i o scdere a denmulitului. Aceast schem poate fi extins la orice
numr de blocuri de 1 din cadrul nmulitorului, inclusiv la cazul cnd unele
blocuri conin o singur cifr 1. Astfel dac nmulitorul este
00111010 = Y
produsul celor dou numere poare fi scris ca
58 ) 2 2 2 2 (
1 3 4 5
= + + + = X X Y X
Sau efectund nlocuirile:
3 6 3 4 5
2 2 2 2 2 = + + i
1 2 1
2 2 2 = se obine:
58 ) 2 2 2 2 (
1 2 3 6
= + = X X Y X
Algoritmul lui Booth utilizeaz aceast schem, efectund o adunare a
denmulitului atunci cnd ntlnete prima cifr a unui bloc de 1 ) 01 ( i o
scdere a acestuia atunci cnd ntlnete sfritul acestui bloc ) 10 ( . Acest
algoritm poate fi aplicat i n cazul unui nmulitor negativ.
innd seama de observaia de mai sus, rezult urmtorul algoritm al metodei
Booth: la fiecare pas al operaiei se testeaz doi bii alturai ai nmulitorului,
i
y (bitul
curent) i
1 i
y (bitul testat n pasul precedent, numit i bit de referin). Testarea se
efectueaz ncepnd cu bitul c.m.p.s. al nmulitorului. In funcie de valoarea biilor
testai
1 i i
y y , se efectueaz operaiile indicate n tabelul 3.3.

Tabelul 3.3.
1 i i
y y
Operaii
00 Deplasare produs parial la dreapta
01 Adunare denmulit, deplasare produs parial la dreapta
10 Scdere denmulit, deplasare produs parial la dreapta
11 Deplasare produs parial la dreapta

Structura unui dispozitiv de nmulire prin metoda Booth este prezentat n
figura 3.8.


Fig. 3.8

Dispozitivul de nmulire care implementeaz metoda Booth conine un
registru combinat Q A_ , format din registrul acumulator A i registrul Q, de
cte 1 + n poziii fiecare. In registrul Q se introduce nmulitorul iar n A se va
introduce, n timpul desfurrii operaiei de nmulire, produsul parial. Toate
ncrcare
tergere
Scdere/Adunare
tergere
Bloc de comand

N
Y
Sumator / Scztor
de n+1 bii
B
n
B
n-1
B
1


B
0
A
n
A
n-1
A
n-2
A
1
A
0
Q
n
Q
n-1
Q
1


Q
0
X
ncrcare
Test Q
0
Q
-1
Deplasare

Start Stop
Q
-1
poziiile nmulitorului inclusiv cea de semn, particip la deplasare. Registrul B,
care pstreaz denmulitul, are de asemenea 1 + n poziii. Aceste registre
trebuie s aib posibiliti similare cu cele utilizate la metoda de nmulire
direct. Mai este necesar un bistabil
1
Q , care pstreaz bitul de referin.
Sumatorul utilizat trebuie s aib 1 + n poziii, deoarece se opereaz cu toate
cifrele inclusiv cea de semn.
La fiecare pas al operaiei, blocul de comand testeaz biii succesivi
notai cu
0
Q ,
1
Q . In funcie de valoarea acestor bii, se efectueaz operaiile
necesare precizate n tabelul 3.4.

Fig.3.9
Observaii:
1. Iniial, bistabilul
1
Q este resetat, pentru ca bitul de referin pentru cifra
0
Q a nmulitorului s fie zero.
2. La deplasare se tine cont de regula de deplasare pentru numerele cu
Start
BX QY Q
-1
=0
A0 Nn+1
Q
-1
=1
AA+B
A
n
A
n
A
i
A
i+1
Q
n
= A
0


Q
i
Q
i+1
Q
-1
=Q
0

NN-1
N=0
Stop

Nu
Da
Nu
Da
Q
0
=1
Q
0
=1
AA-B
Nu
Da Da Nu
00 10 01 11
semn reprezentate n C2 (Tabelul 1.7). Bitul de semn de pe poziia
n
A , este
deplasat n
1 n
A , dar rmne i n
n
A .
3. Se compar toi biii nmulitorului, inclusiv bitul de semn.
4. Rezultatul se formeaz n registrul Q A_ de 2n+2 poziii, bitul de semn
repetndu-se pe primele dou poziii (rezultatul propriu-zis are 2n+1 bii).
Organigrama operaiei de nmulire prin metoda Booth este prezentat n
figura 3.9.
In etapa de iniializare, se ncarc denmulitul i nmulitorul n registrul B,
respectiv Q, bistabilul
1
Q i registrul acumulator sunt iniializate cu 0, iar
numrtorul N este iniializat cu 1 + n .
In continuare se testeaz bitul de referin
1
Q i bitul
0
Q al nmulitorului.
Dac 01
1 0
=

Q Q , se adun denmulitul din registrul B la produsul parial din


registrul A. Dac 10
1 0
=

Q Q , se scade denmulitul din produsul parial. Pentru


celelalte dou combinaii ale biilor testai, n aceast etap nu se efectueaz nici o
operaie. La pasul urmtor se deplaseaz la dreapta registrul combinat Q A_ , astfel
nct n poziia bitului de semn
n
A s rmn aceeai valoare (pstrarea bitului de
semn este indicat n organigram prin transferul
n n
A A ). Se decrementeaz
numrtorul N i dac acesta nu a ajuns la zero, se continu operaia cu testarea
biilor
1 0
Q Q . Dac numrtorul N a ajuns la zero, operaia se termin.
Exemplul
Considerm 13 = X , 10 = Y . Exprimarea binar a acestor numere n C2
este urmtoarea:
0 = X 1101
1 = Y 0110
Scderea denmulitului din coninutul registrului acumulator A se efectueaz
prin adunarea complementului fa de 2 al acestuia X.
X = - X = 1 0011
In tabelul 3.4 este prezentat coninutul registrelor dispozitivului de
nmulire la fiecare pas al operaiei.

Tabelul 3.4. Execuia operaiei de nmulire 13 x (-10) prin metoda Booth.
Pas A Q Q
-1
B Q
0
Q
-1
N Operaii
0 0 0000 1 0110 0 0 1101 00 5 Iniializare
1 0 0000+ 0 1011 0 0 1101 10 4 Deplasare A_Q la dreapta
2 1 0011
1 0011
1 1001

0 1011
1 0101

0
1
0 1101

11


3
Scdere denmulit

Deplasare A_Q la dreapta
3 1 1100+ 1 1010 1 0 1101 01 2 Deplasare A_Q la dreapta
4 01101
0 1001
0 0100+

1 1010
1 1101

1
0
0 1101

10


1
Adunare denmulit

Deplasare A_Q la dreapta
5 1 0011
1 0111
1 1011

1 1101
1 1110

0
1

0 1101

01


0
Scdere denmulit

Deplasare A_Q la dreapta

Rezultatul este: 1 0111 1110 =- 1000 0010
2
=- 82 h =- (8*16+2)= -130.
Observaie. La deplasarea la dreapta a coninutului registrelor Q A_ se ine
seama de deplasare a numerelor reprezentate n C2 care cere ca pe poziia rmas
liber s se repete bitul de semn al numrului. Astfel la paii 2, 3 i 5 pe locul rmas
liber s-a plasat cifra 1, iar la paii 1 i 4 cifra 0.

3.2.3. mprirea binar

3.2.3.1. Principiul mpririi binare
Fiind dat dempritul X i mpritorul Y , de cte n cifre de mrime,
mprirea const n determinarea ctului Q i a restului R, astfel nct s fie
satisfcut relaia:
R Y Q X + = (3.5)
Operaia de mprire se reduce la o serie de scderi ale mpritorului din
restul parial, care se efectueaz numai dac restul parial este mai mare dect
mpritorul, caz n care cifra ctului este 1; n caz contrar, cifra corespunztoare a
ctului este 0.
S considerm urmtoarea operaie 147:11.
In binar avem
1001 147 0011
1011 11
10010011:1011=00001101 Ct 13
1011
1110 Rest parial
1011
1111 Rest parial
1011
100 Rest 4
Ctul este 13, iar restul este 4. Pentru mprire se examineaz biii
dempritului, de la stnga la dreapta, pn cnd setul biilor examinai reprezint
un numr mai mare sau egal cu mpritorul. De exemplu, setul biilor examinai
este 1, 10, 100, 1001, 10010. Att timp ct setul biilor examinai este mai mic
dect mpritorul, se obin cifre de 0 pentru ct. Atunci cnd acest set este mai
mare sau egal cu mpritorul, se obine o cifr de 1 pentru ct. In continuare
mpritorul este sczut din partea corespunztoare a dempritului, obinndu-se
un rest parial. La fiecare pas al operaiei se adaug cte un bit din demprit la
restul parial, pn cnd se obine un numr mai mare sau egal cu mpritorul.
Se scade apoi mpritorul din restul parial, obinndu-se un nou rest parial.
Operaia continu pn cnd se examineaz toi biii dempritului.
In cazul n care mpritorul este zero, operaia de mprire trebuie oprit,
ceea ce impune testarea mpritorului naintea operaiei. Se poate testa i
dempritul naintea operaiei i dac acesta este zero, operaia se poate termina,
rezultatul fiind zero.

3.2.3.2. Metode de mprire binar
Exist trei metode principale de mprire:
Metoda comparaiei;
Metoda refacerii restului parial;
Metoda fr refacerea restului parial.
In cazul metodei comparaiei, dispozitivul de mprire conine un circuit
comparator, utilizat pentru compararea restului parial cu mpritorul. Circuitele
de comparare fiind destul de complexe, aceast metod nu se utilizeaz n mod
obinuit.
Metoda aleas depinde de forma de reprezentare a numerelor n calculator.
Metoda comparaiei i cea a refacerii restului parial se pot aplica numai n cazul
reprezentrii numerelor n MS. Dac numerele sunt reprezentate n alt form,
este necesar conversia formei de reprezentare n MS naintea aplicrii metodei i
conversia rezultatului operaiei. Metoda fr refacerea restului parial se poate
aplica oricrei forme de reprezentare, fiind necesare ns unele corecii ale
rezultatului.

3.2.3.3. Metoda refacerii restului parial
In cazul metodei refacerii restului parial, n fiecare etap a operaiei se
efectueaz o scdere a mpritorului din restul parial. Dac rezultatul scderii
este un numr negativ, deci restul parial este mai mic dect mpritorul, se reface
restul parial la valoarea anterioar, prin adunarea mpritorului la restul parial.
Fiecare etap a operaiei de mprire ncepe cu o deplasare a restului
parial la stnga cu o poziie. Se efectueaz apoi scderea mpritorului din
restul parial, obinndu-se noul rest parial. Dac se obine un numr pozitiv,
cifra corespunztoare a ctului este 1. Dac se obine un numr negativ, cifra
corespunztoare a ctului este 0 i restul parial este refcut prin adunarea
mpritorului. Pentru obinerea unui ct cu n cifre de mrime, aceste operaii se
repet de n ori. Procesul de mprire se oprete dac restul parial devine zero
sau mai mic dect mpritorul.
Pentru implementarea algoritmului prezentat se utilizeaz un registru
combinat format din registrul acumulator i registrul dempritului. Iniial registrul
acumulator este 0.

Fig. 3.10

Structura dispozitivului de mprire care utilizeaz metoda refacerii restului
parial este prezentat n figura 3.10.
Regitri A, B i Q au cte 1 + n poziii. Regitri A i Q se pot deplasa la
stnga, astfel nct bitul
1 n
Q va trece n
0
A . Bitul
n
Q nu particip la deplasare.
Sumatorul este de n bii. Coninutul registrului B poate fi adunat sau sczut din
coninutul registrului acumulator A.
Organigrama operaiei de mprire prin metoda refacerii restului parial este
prezentat n figura 3.11.
Dempritul X se ncarc n registrul Q. Semnul dempritului se
pstreaz n poziia
n
Q a registrului Q. mpritorul Y se ncarc n registrul B.
Numrtorul N se iniializeaz cu numrul cifrelor de mrime n. In fiecare etap a
operaiei, se deplaseaz registrul combinat Q A_ la stnga cu o poziie, iar apoi se
efectueaz o scdere a mpritorului (registrul B) din restul parial (registrul A).
Dac rezult un numr pozitiv n acumulator ( 0 =
n
A ), cifra ctului este 1, care se
introduce n poziia
0
Q a registrului Q. Dac rezult un numr negativ n
acumulator ( 1 =
n
A ), cifra ctului care se introduce n poziia
0
Q este 0. Valoarea
cifrei ctului care se obine n aceast etap este deci:
n A Q =
0

Dac n urma scderii a rezultat un numr negativ, se reface restul parial
prin adunarea registrului B la acumulator. Se decrementeaz numrtorul N i
dac acesta nu este zero, operaia continu cu o nou etap. Dac N este zero,
operaia este terminat, restul aflndu-se n registrul A, iar ctul n registrul Q. In
Adunare
Scdere
ncrcare
tergere
X
Sumator / Scztor
de n bii
B
n-1
B
n-2
B
1


B
0
B
n
Q
n
Y
Deplasare

Start Stop
Bloc de comand

N
ncrcare
A
n
A
n-1
A
n-2
A
1
A
0 Q
n-1
Q
n-2
Q
1


Q
0

final se stabilete semnul restului i al ctului. Semnul restului este semnul
dempritului:
n n
Q A = . Semnul ctului se obine prin operaia SAU EXCLUSIV
ntre semnele celor doi operanzi:
n n n
B Q Q =

Fig. 3.11

In organigram nu sunt artate testele care trebuie efectuate dup etapa de
iniializare. Astfel, trebuie s se testeze dac mpritorul este zero; n caz afirmativ,
operaia se oprete i se indic o eroare de mprire cu zero.
Exemplu
Considerm numerele 13 = X i 5 = Y . Reprezentarea n MS a acestor
Start
A_QX BY
Nn
Stop
Nu
A
0
Q
n-1
A
i
A
i-1
Q
i
Q
i-1
AA-B
Q
o n A


AA + B

Da Nu
NN-1
Da
A
n
Q
n
Q
n
Q
n
B
n
A
n
= 1
N=0
numere este urmtoarea:
0 = X 1101
0 = Y 0101
Complementul fa de 2 al mpritorului este:
Y =-Y =1 1011
Scderea se efectueaz n C2 deoarece n aceast reprezentare operaia
se face mai simplu.
Cifrele de semn fiind tratate separat, n registrele B i Q se ncarc numai
cifrele de mrime. La operaia de adunare sau scdere a mpritorului din
acumulator particip ns toate cifrele. Execuia operaiei este prezentat n tabelul
3.7.

Tabelul 3.7 . Execuia operaiei de mprire 13:5 prin metoda refacerii restului parial.
Pas A Q B Q
0
Q
n
N Operaii
0 0 0000 1101 0101 0 0 4 Iniializare
1 00001+
11011
1 1100+
0 0101
0 0001
1010



1010




0




0




0




3
Deplasare A_Q la stnga
Scdere mpritor

Adunare mpritor
2 00011+
1 1011
1 1110+
0 0101
0 0011
0100



0100




0101




0




0




2
Deplasare A_Q la stnga
Scdere mpritor

Adunare mpritor
3 00110+
1 1011
00001
1000

1001


0101


1


0


1
Deplasare A_Q la stnga
Scdere mpritor

4 0 0011+
1 1011
1 1110+
0 0101
0 0011
0010



0010




0101




0




0




0
Deplasare A_Q la stnga
Scdere mpritor

Adunare mpritor

Ctul obinut este 0 0010=2, iar restul este 0011=3.


Cap.4. UNITATEA DE COMAND l CONTROL

Funciile principale ale unitii de comand i control (UCC) sunt urmtoarele:
Decodificarea codului operaiei;
Calculul adresei operanzilor care particip la operaie i extragerea lor din
memorie;
Generarea secvenei de comenzi necesare execuiei instruciunii;
Generarea secvenei de comenzi necesare memorrii rezultatului i a
informaiilor de stare;
Calculul adresei instruciunii urmtoare i citirea acesteia din memorie.

4.1. Microoperaii
Prelucrrile efectuate de UCP pentru execuia unei singure instruciuni
reprezint un ciclu de instruciune. Fiecare ciclu de instruciune const din
urmtoarele subcicluri:
Subciclul de extragere a instruciunii din memorie;
Subciclul de execuie;
Subciclul de ntrerupere.
Pe lng aceste subcicluri, la execuia unei instruciuni mai poate aprea
subciclul de indirectare. Execuia unei instruciuni poate necesita extragerea
unuia sau a mai multor operanzi din memorie. Aceti operanzi pot fi adresai
direct sau indirect. Dup extragerea instruciunii, se verific dac operandul
necesar este adresat n modul indirect. In caz afirmativ, se ncarc operandul
respectiv utiliznd adresarea indirect.
Ciclul de instruciune, completat cu subciclul de indirectare, este reprezentat
simplificat n figura 4.1.

Fig.4.1

Fiecare subciclu al unei instruciuni poate fi descompus ntr-o serie de
operaii elementare. O asemenea operaie elementar, care realizeaz o
prelucrare numeric a informaiei sau un transfer al acesteia, pe durata unui
singur impuls al generatorului de tact, se numete microoperaie. Unitatea de
Subciclul de
extragere
Subciclul de
ntrerupere
Subciclul de
execuie
Subciclul de
indirectare
comand i control are rolul de a genera succesiunea semnalelor de comand
care asigur secvena corect de execuie a fiecrei microoperaii. Aceast suc-
cesiune este specific fiecrei instruciuni, fiind determinat att de codul operaiei
ct i de recepionarea unor semnale de stare de la circuitele controlate, prin care
se verific ndeplinirea unor condiii.
In continuare se analizeaz subciclurile care intr n componena unei
instruciuni i microoperaiile din care se compune fiecare subciclu. Pentru
aceasta s presupunem c UCP utilizeaz urmtorii regitri:
- Registrul de adrese al memoriei (RA). Acest registru este conectat la liniile
de adres ale magistralei sistem i conine adresa din memorie a unei
instruciuni sau a unei date.
- Registrul de date al memoriei (RD). Acest registru este conectat la liniile
de date ale magistralei sistem i conine valoarea care trebuie depus n
memorie sau ultima valoare citit din memorie.
- Contorul de program (PC) conine adresa urmtoarei instruciuni care se va
executa.
- Registrul de instruciuni (Rl) conine ultima instruciune citit.

4.1.1. Subciclul de extragere
In acest subciclu este adus n UCP o instruciune din memorie. Operaiile
executate n acest subciclu sunt indicate n figura 4.2. Registrul PC conine adresa
instruciunii care urmeaz s fie executat. Aceast adres este depus n RA [1]
i apoi este plasat pe magistrala de adrese (MA) [2]. Unitatea de comand
solicit o operaie de citire a memoriei, trimind pe magistrala de comand (MC)
o comand ctre Unitatea de memorie [3]. Coninutul locaiei de memorie a
crei adres a fost transmis Unitii de memorie este plasat pe magistrala de
date (MD) i reinut n registrul de date (RD) [4]. In acelai timp UCC elaboreaz
comanda de incrementare a registrului Program Counter (PC) [5], pregtind
astfel urmtorul ciclu de extragere. Registrul, RD fiind unica poart de
intrare/ieire n UCP, trebuie golit de informaiile pe care le conine, astfel nct
instruciunea care se afl n acesta este transferat n registrul de instruciuni
(RI) [6]. In RI instruciunea este decodificat i este pstrat pe toat perioada
executrii acesteia.
Generatorul de tact al sistemului de calcul genereaz impulsuri de tact
(ceas) la intervale constante. Fiecare impuls de ceas definete o unitate de timp.
Aceast unitate de timp este aleas astfel nct fiecare microoperaie s poat fie
executat pe durata unui singur impuls de ceas. Unitile de timp sunt notate cu
3 2 1
, , t t t .
Simbolic, secvena de microinstruciuni care descrie microoperaiile
prezentate anterior se poate scrie astfel:

Fig.4.2 Subciclul de extragere

:
1
t RAPC
:
2
t RDMem
PCPC+1
:
3
t RIRD
A treia microoperaie se poate executa i n unitatea de timp t
3
, fr a afecta
subciclul de extragere.

4.1.2. Subciclul de indirectare
Dup extragerea instruciunii din memorie, urmeaz s se ncarce
operanzii care particip la operaie specificat de aceast instruciune. O
instruciune este format din cel puin dou cmpuri. Primul cmp conine
codul operaiei ce trebuie executat iar cel de al doilea cmp conine adresa
din memorie a operandului implicat n operaie.
Unitatea de comand examineaz cmpul de adres a instruciunii din
registrul Rl i, dac este indicat o adresare direct, aduce n RD coninutul
locaiei de memorie a crei adres este specificat n cmpul de adres a
instruciunii. Adresarea direct se refer la situaia n care cmpul de adres
conine adresa efectiv a operandului (Figura 4.3):

PC RA
UCC
RD RI

Memorie
MA MD MC
UCP
1 2
3
4
4
6
5

Fig. 4.3
Acest mod de adresare presupune o singur referire la memorie i nu
necesit un calcul de adres. In acest caz dup subciclul de extragere urmeaz
subciclul de execuie.
In cazul adresrii indirecte, naintea subciclului de execuie este necesar
un subciclu de indirectare. Adresarea indirect se refer la situaia n care n
cmpul de adres al instruciunii se gsete o referin ADR1 la un cuvnt de
memorie, care conine adresa complet ADR2 a operandului. Vezi figura 4.4.

Fig. 4.4

Adresa ADR1 din cmpul de adres al registrului de instruciuni Rl este
transferat n RA [1] i este apoi depus pe magistrala de adrese [2]. Unitatea
de comand genereaz semnalele de comand [3] necesare pentru aducerea
n registrul de date RD a adresei ADR2 a operandului [4]. In continuare, cmpul
de adres din Rl este actualizat pentru a conine adresa direct a operandului [5].
Aceast adres este utilizat apoi pentru ncrcarea operandului n registrul de
date RD.

ADR 2





Operand


CO ADR 1
Instruciune
Memorie
CO Adres
Instruciune



Operand
Memorie

Fig.4.5 Subciclul de indirectare

Dup executarea acestor operaii urmeaz subciclul de execuie. Operaiile
executate n subciclu de indirectare sunt indicate n figura 4.5.
Descrierea simbolic a microoperaiilor prezentate este urmtoarea:
1
t : RA RI(cmpul de adres) (ADR1 n RA)
2
t : RD Mem (ADR2 din memorie n RD)
3
t : Rl(cmpul de adres) RD (ADR2 n RI)


4.1.3. Subciclul de execuie
Subciclurile de extragere i de indirectare, ca i subciclul de ntrerupere,
implic secvene fixe de microinstruciuni. Subciclul de execuie difer n funcie
de instruciune, pentru fiecare instruciune existnd o secven proprie de
microinstruciuni care trebuiesc executate.
Considerm ca exemplu instruciunea:
ADD X
care adun valoarea variabilei X din memorie la coninutul registrului A, rezultatul
fiind memorat tot n A. Acest registru cu funcie special este numit registru
acumulator. In acest context X reprezint adresa din memorie a valorii variabilei
X.
Execuia acestei instruciuni poate fi descris prin urmtoarea secven de
microinstruciuni:
:
1
t RARI(cmpul de adres) (ADR X n RA)
:
2
t RDMem
:
3
t AA+RD
Rl conine codul instruciunii ADD. La primul pas (t
1
), partea de adres din
Rl, care reprezint adresa variabilei X, este ncrcat n RA. La pasul t
2
se copie,
UCP

RA
UCC
RD RI

Memorie
MA MD MC
1
2
3
4 5
din locaia de memorie adresat, valoarea variabilei X i se depune n RD. In
final (t
3
), coninutul registrului A (registru acumulator) i al RD sunt adunate de
UAL i rezultatul este memorat tot n registrul A.

4.1.4. Subciclul de ntrerupere
Sistemul de ntreruperi este acea parte a unui sistem de calcul care
permite detectarea unor evenimente externe sau interne i declanarea unor
aciuni corespunztoare pentru tratarea lor. Aceste evenimente pot fi: tentativa
de execuie a unui cod de instruciune nepermis, terminarea unei anumite
operaii de ctre un dispozitiv de I/E, o eroare produs n timpul execuiei unei
operaii aritmetice (mprire la zero, depire superioar sau inferioar),
situaii critice in funcionarea unui sistem de calcul (ex: eroare de paritate,
fluctuaii ale tensiunii de alimentare, etc.).
Pentru a stabili ordinea de deservire a cererilor concurente de
ntrerupere, sistemele de ntrerupere utilizeaz o ierarhie de prioriti.
Prioritatea unei ntreruperi se stabilete pe baza importantei acordate
evenimentului tratat si a restriciilor de timp n soluionarea acesteia. Sistemul
de ntreruperi al unui calculator poate s identifice mai multe niveluri de
ntrerupere. Adresele de nceput ale acestor rutine se pstreaz intr-un tabel
din memorie. In funcie de cerinele programului executat, anumite niveluri de
ntrerupere pot fi invalidate, temporar sau pe toat durata aplicaiei.
La terminarea subciclului de execuie, n cazul n care ntreruperile sunt
validate, se testeaz dac a aprut o cerere de ntrerupere. In caz afirmativ, se
execut un subciclu de ntrerupere. Secvena de operaii executate este
urmtoarea:
1. Se salveaz contextul programului curent. Prin context se nelege
coninutul registrului PC, n care se gsete adresa instruciunii ce urmeaz s fie
executat dup reluarea execuiei programului, coninutul registrului de stare
PSW, precum i a altor registre care conin date semnificative pentru programul
respectiv.
2. Se ncarc n contorul de program adresa programului de servire a
ntreruperii. UCP va executa n continuare instruciunile din rutina de servire, dup
care va reveni la programul ntrerupt.
Transferurile de date din subciclul de ntrerupere se prezint n figura
4.6.

Fig.4.6 Subciclul de ntrerupere

Subciclul de ntrerupere poate fi descris prin urmtoarea secven de
microinstruciuni:
:
1
t RD PC
:
2
t RA Adresa_salvare
PC Adresa_rutina
:
3
t Mem RD
Dup cum se constat, n momentul t
2
, adresa rutinei de tratare a
ntreruperii se transfer n PC. Ca urmare, urmtorul ciclu de instruciune va
ncepe prin extragerea primei instruciuni din rutina de tratare a ntreruperii.
Procesoarele actuale au extins sistemul de ntreruperi pentru a
eficientiza funcionarea UCP. De exemplu, cele mai multe periferice sunt mult
mai lente n comparaie cu UCP i aceasta ar trebui s rmn inactiv pn
la terminarea unei operaii de transfer cu un dispozitiv I/E. Prin mecanismul
ntreruperilor, n timpul unei operaii de I/E, UCP poate executa instruciunile
altui program.
Sistemul de ntreruperi este utilizat de asemenea pentru rularea mai
multor programe n acelai timp (time sharing). Datorit vitezei mari de lucru a
procesorului se lanseaz n execuie mai multe programe, pentru fiecare dintre
acestea alocndu-se o anumit cuant de timp. In acest mod utilizator are
senzaia c programele sunt executate simultan.

4.2.1 Semnale de control ale UCC
Pentru a-i realiza funciile, unitatea de comand trebuie s primeasc o
serie de semnale care s-i permit determinarea strii sistemului iar pe baza
acestor informaii elaboreaz semnale care controleaz funcionarea sistemului.
Intrrile i ieirile unei uniti de comand i control sunt prezentate n figura
4.7. UCC are urmtoarele intrri:
- Semnalul de ceas. UCC comand execuia unei microinstruciuni (sau a

PC
RD
UCC
RA


Memorie
UCP MA MD MC

1
3
2
4
6
6
unui set de microinstruciuni simultane) la fiecare impuls de ceas. Perioada
semnalului de ceas se mai numete ciclu de ceas.
- Codul operaiei este citit din registrul de instruciuni, care pstreaz
instruciunea curent, i se utilizeaz pentru a determina microinstruciunile care
trebuie executate n timpul ciclului de execuie.
- Indicatorii de condiii sunt necesari pentru a determina starea UCP i
rezultatul operaiei precedente executate de UAL, n scopul executrii
instruciunilor de salt condiionat.
- Semnale de control. Magistrala de control transmite ctre UCC semnale
de ntrerupere, sau de achitare (terminare) a unei ntreruperi.

Fig. 4.7 Semnale de control UCC

UCC elaboreaz urmtoarele semnale de ieire:
- Semnale prin care se comand funcionarea UCP. Acestea sunt de dou
tipuri: semnalele care determin transferul datelor dintr-un registru n altul i
semnalele care activeaz funcii specifice ale UAL.
- Semnale de control transmise pe magistrala de control. Acestea sunt tot
de dou tipuri: semnale de control ctre memorie i semnale de control ctre
modulele de I/E.
Pentru a nelege funcionarea UCC s considerm din nou ciclul de
ncrcare al unei instruciuni. Adresa instruciunii care urmeaz s fie executat
este pstrat n registrul PC. Primul pas const n transferul:
RA PC
Acest transfer se efectueaz prin activarea unui semnal de control care
deschide (activeaz) porile dintre cele dou registre.
Urmtorul pas const n citirea din memorie a instruciunii de la adresa
indicat, aducerea acesteia n registrul de date i incrementarea contorului de
program PC:
RD Mem
PC PC +1
Aceste operaii se efectueaz prin activarea simultan de ctre UCC a
urmtoarelor semnale de control:
Indicatori
de condiie
Ceas
Semnale de la
MC
Semnale de
control la MC



UCC
RI
Semnale de
control UCP
MC
1. un semnal de control care valideaz depunerea coninutului RA pe
magistrala de adrese.
2. un semnal de control trimis pe magistrala de control, pentru citirea
memoriei.
3. un semnal de control care valideaz memorarea coninutului de pe
magistrala de date n registrul de date RD.
4. semnale de control prin care se incrementeaz cu 1 coninutul PC i se
depune rezultatul napoi n PC.
Ultimul pas const n transferul:
RI RD
pentru care se activeaz un alt semnal de control care valideaz transferul.
In continuare UCC trebuie s decid dac urmeaz un ciclu de indirectare
sau un ciclu de execuie. Pentru aceasta, examineaz coninutul registrului de
instruciuni Rl i testeaz dac se utilizeaz o adresare indirect, caz n care
stabilete secvena corespunztoare de microoperaii.
Pentru ciclul de execuie, UCC testeaz codul de operaie al instruciunii,
pe baza cruia decide secvena de microoperaii care va fi executat.

4.2.2. Implementarea UCC
Pentru implementarea UCC se utilizeaz diferite metode, care se pot
ncadra ntr-una din urmtoarele dou categorii:
UCC cablat;
UCC microprogramat.
O unitate de comand cablat este, n principiu, un circuit secvenial care
transform semnalele logice de intrare ntr-un set de semnale electrice de ieire,
ce reprezint semnalele de control. Modificarea funciilor unei astfel de uniti de
comand necesit modificri ale structurii hardware a circuitului.

4.2.3. UCC cablat care utilizeaz un decodificator
UCC preia de la registrul RI codul instruciunii curente i pe baza acestuia
va stabili aciunile ce urmeaz s fie executate. In cazul unitii de comand, luat
n discuie, codul instruciunii este decodificat cu ajutorul unui decodificator care
activeaz la un moment dat un singur semnal de ieire.
Impulsurile generatorului de ceas al sistemului acioneaz asupra unui
generator de faze, care genereaz semnalele de intrare
n
T T T ,..., ,
2 1
ce asigur
secvenierea n timp a semnalelor de comand. In fiecare din aceste momente
UCC activeaz semnalele de comand cerute de codul instruciunii. La sfritul
fiecrui ciclu de instruciune, UCC reiniializeaz generatorul de faze pentru a
relua generarea secvenei
n
T T T ,..., ,
2 1
.
Structura unei UCC cu decodificator este prezentat n figura 4.8. Codul
instruciunii este preluat din registrul RI i transformat de circuitul de decodificare n
semnalele binare D
1
, D
2
, D
n
. La fiecare din momentele T
1
,T
2
,T
n
UCC va
elabora cte un semnal de comand C
1
, C
2
, C
n
, care vor declana aciunile
implicate de execuia instruciunii decodificate.

Fig. 4.8 UCC cu decodificator

4.2.4. Uniti de comand microprogramate
Semnalele de comand elaborate de UCC pot fi reunite sub forma unei
succesiuni de cifre binare, numit cuvnt de comand. Fiecare microoperaie se
caracterizeaz printr-un cuvnt specific de comand, iar succesiunea cuvintelor
de comand prin care se indic secvena corect a microoperaiilor, pentru fiecare
operaie, poate fi memorat ntr-o memorie de comand.
O unitate de comand n care succesiunea cuvintelor de comand, este
memorat, se numete unitate de comand microprogramat. Fiecare cuvnt de
comand memorat n memoria de comand formeaz o microinstruciune, iar
secvena de microinstruciuni formeaz un microprogram.
O unitate de comand microprogramat are dou funcii principale:
- Funcia de control propriu-zis, prin care se stabilesc microinstruciunile
care trebuiesc executate pentru instruciunea decodificat.
- Funcia de secveniere, prin care se determin adresa microinstruciunii
urmtoare.
In conformitate cu aceste funcii pe care trebuie s le ndeplineasc
unitatea ce comand microprogramat, o microinstruciune este format din
urmtoarele cmpuri principale (Fig. 4.9):
- Cmpul semnalelor de comand generate pentru controlul UCP. Acest
cmp conine cte un bit pentru fiecare semnal de comand intern al UCP.
- Cmpul semnalelor de comand pentru magistrala sistem. Acest cmp
conine cte un bit pentru fiecare semnal de comand al magistralei sistem.
- Cmpul de condiii, de care depinde urmtoarea microinstruciune care va
fi executat.
- Cmpul de adres, care conine adresa urmtoarei microinstruciuni care
se va executa, dac o anumit condiie este adevrat. De exemplu, dac bitul de
indirectare din codul instruciunii este 1 (condiia aste adevrat), se va executa
secvena de microinstruciuni pentru calcularea adresei efective a operandului.
D
n
D
2
D
1
Indicatori de
condiii
T
1

T
2


T
n

C
n
C
2
C
1

Decodificator
RI



UCC

Generator
de
faze
Ceas
Dac acest bit este 0 (condiia este fals), se va executa urmtoarea
microinstruciune din memoria de comand, a crei adres este indicat n cmp.


Fig. 4.9

Acest tip de microinstruciune se numete microinstruciune orizontal. Spre
deosebire de acestea se utilizeaz i microinstruciuni verticale care utilizeaz un
cod pentru fiecare operaie care trebuie executat.
Totalitatea microinstruciunilor care constituie o unitate logic formeaz un
microprogram.
O microinstruciune orizontal este interpretat n modul urmtor:
1. Pentru execuia unei microinstruciuni, se activeaz toate semnalele de
control crora le corespunde un bit de 1 n cmpul semnalelor de comand i se
dezactiveaz cele crora le corespunde un bit de 0.
2. In cazul n care condiia indicat de cmpul de condiie este fals, se
trece la execuia urmtoarei microinstruciuni din microprogram. In cazul n care
condiia indicat de cmpul de condiie este adevrat, se trece la execuia
microinstruciunii indicat de cmpul de adres.
In figura 4.10 se prezint amplasarea microprogramelor n memoria de
comand.
Fiecare rutin este constituit dintr-un microprogram. Microinstruciunile din
fiecare rutin sunt executate secvenial. Fiecare rutin se termin cu o
instruciune de salt care indic urmtoarea rutin care va fi executat. Exist o
rutin special pentru nceputul unui subciclu de execuie, care dup ncrcare i
decodificare indic rutina care va fi executat pentru diferitele instruciuni (ADD,
AND, ..., JMP), n funcie de codul instruciunii.
Memoria de comand reprezint o descriere complet a funcionrii UCC,
deoarece definete secvena de microinstruciuni care trebuie executate n timpul
fiecrui subciclu (de extragere, de indirectare, de execuie, de ntrerupere) i
specific secvenierea acestor subcicluri.


Adres microinstruciune

Cmp de condiii
- Salt necondiionat
- Zero
- Depire
- Bit de indirectare

Semnale de control pentru
magistrala sistem

Semnale de control pentru
UCP

Fig. 4.10

In figura 4.11 se prezint elementele principale ale unei uniti de comand
microprogramate.
Registrul de microadrese RMA conine adresa urmtoarei microinstruciuni
care va fi citit din memoria de comand. Dup citirea din memoria de comand,
microinstruciunea este transferat n registrul de microinstruciuni RMI.
Unitatea microprogramat are aceleai intrri (Rl, indicatori de condiii ai
UAL, ceas) i ieiri (semnale de comand) ca i o unitate de comand cablat.
Unitatea de comand microprogramat funcioneaz astfel:
1. Instruciunea din RI este decodificat de decodificatorul 1 rezultnd
adresa din memoria de comand a urmtoarei microinstruciuni.
2. Pentru extragerea microinstruciunii a crei adres se gsete n
RMA, logica de secveniere activeaz un semnal de citire a memoriei de
comand.
3. Microinstruciunea extras din memoria de comand este depus n
registrul de microinstruciuni (RMI).
4. Dup decodificarea microinstruciunii din RMI sunt activate semnalele
de control pentru UCP, magistrala de control i pentru blocul de secveniere.
5. Logica de secveniere ncarc o nou adres n registrul de microadrese,
pe baza informaiilor despre adresa urmtoare de la registrul de microinstruciuni
RMI i a indicatorilor de condiii ai UAL.
Dezavantajul unitilor microprogramate este c sunt mai lente dect cele
cablate realizate ntr-o tehnologie comparabil.
.
.
Salt la indirectare sau execuie.
.
.
Salt la execuie

.
.
Salt la extagere

Salt la decodificarea codului op.
.
.
Salt la ntrerupere sau extragere

.
.
Salt la ntrerupere sau extragere



Rutina pentru
ciclul de extragere

Rutina pentru
ciclul de indirectare

Rutina pentru
ciclul de ntrerupere

nceput ciclu de execuie

Rutina pentru ADD


Rutina pentru AND





Rutina pentru JMP
.
.
.
.
.
Salt la ntrerupere sau extragere

Fig. 4.11 Unitate de comand microprogramat

Cu toate acestea, micro-programarea este tehnica cea mai utilizat pentru
implementarea unitilor de comand.
RI
Decodificator 1
RMA


Memorie de
comand
RMI

Logic de
secveniere
Indicatori de
condiii
Ceas
READ
Semnale de
control UCP

Decodificator 2
Semnale de control
pe magistrala

Cap.5. Magistrale

5.1 Noiuni generale
Prin magistral se nelege un ansamblu de linii conductoare, grupate
funcional, menite s conecteze dou sau mai multe uniti ale unui sistem de
calcul. Pe fiecare linie a unei magistrale se poate transfera, la un moment dat, o
singur valoare logic (asignat unui nivel de tensiune bine definit), ce reprezint
o cantitate de informaie de 1 bit. Dac magistrala are n linii, atunci pe magistral
se transfer n bii de informaie n paralel i vom spune c magistrala transfer
cuvinte de informaie de dimensiune n.
Anumite dispozitive conectate la magistral sunt active i pot iniia un transfer, iar
altele sunt pasive i ateapt cererile de transfer. Dispozitivele active se numesc
dispozitive master, iar cele pasive - dispozitive slave. Atunci cnd UCP solicit unui
controler de disc citirea sau scrierea unui bloc, UCP are rol de master, iar controlerul
are rol de slave. Controlerul de disc poate deveni master, de exemplu atunci cnd
solicit memoriei acceptarea cuvintelor citite de pe disc. Memoria nu poate deveni
master n nici o situaie.
Pentru amplificarea semnalelor, dispozitivele master se conecteaz la magistral
prin drivere de magistral (bus driver). Similar, dispozitivele slave sunt conectate prin
receptoare de magistral (bus receiver). Pentru dispozitivele care pot fi att emitoare
ct i receptoare, se utilizeaz circuite emitoare/receptoare de magistral (bus
transceiver).

5.2. Clasificarea magistralelor
Dup modul de transfer al informaiilor, magistralele pot fi:
- magistrale unidirecionale la care transferul de informaii se efectueaz pe
toate liniile ntr-un singur sens, de la o unitate emitoare ctre una sau mai multe
uniti receptoare;
- magistrale bidirecionale la care transferul se poate efectua n ambele
sensuri, alternativ prin multiplexare n timp, la un moment dat transferndu-se
informaii ntr-un singur sens. Astfel, unitile conectate la o magistral
bidirecional pot fi pe rnd uniti emitoare sau receptoare de semnale.
Dup tipul informaiilor transferate, magistralele pot fi:
- magistrale primare pe care au loc transferurile informaiilor utile ce se
doresc a fi transmise ntre subsistemele unui calculator. Acestea pot fi: magistrale
de instruciuni sau magistrale de date. Deoarece memoria sistemului este comun
pentru programe i date, cele dou tipuri de informaii primare sunt transferate pe
o magistral bidirecional, numit generic magistral de date.
- magistrale secundare pe care au loc transferurile de informaii
suplimentare, necesare obinerii informaiilor primare. Acestea pot fi: magistrale de
adrese, magistrale de comenzi sau magistrale de stri, considerate n general
unidirecionale. Cele dou magistrale, de comenzi i de stri transfer informaii n
sensuri opuse i formeaz mpreun o magistral bidirecional pe linii separate,
numit magistral de control.
Dup rata de transfer i implicit dup numrul de uniti conectate, putem
avea:
- magistrale locale care sunt amplasate n apropierea unitilor foarte rapide
cum este, de exemplu, procesorul. Aceste magistrale sunt caracterizate de o rat
mare de transfer i un numr mic de uniti ce pot fi conectate la ele. Ca exemple,
pot fi date: magistrala local a procesorului, magistrala local a memoriei;
- magistrale de extensie (magistrale I/O), care sunt magistrale accesibile
utilizatorului, fiind terminate cu conectoare de extensie.
Magistralele de extensie sunt amplasate mai departe de procesor i sunt
caracterizate de o rat mai mic de transfer i un numr relativ mare de uniti ce
pot fi conectate la ele. Dup modul de control al transferului de informaii,
magistralele pot fi:
- Magistrale sincrone. Toate operaiile magistralelor sincrone sunt sincronizate
de un semnal de ceas i orice transfer dureaz un numr ntreg de perioade de ceas,
numite cicluri de magistrala. In cazul acestor magistrale, dac un transfer se termin
naintea unui numr ntreg de cicluri, urmtorul transfer poate ncepe numai dup
sfritul ciclului n curs de desfurare. Aceast situaie conduce la ntrzieri inutile.
- Magistrale asincrone. O magistral asincron elimin dezavantajele
magistralelor sincrone. In locul semnalului de ceas se utilizeaz un protocol logic
ntre emitor i receptor (numit handshake). In cadrul acestui protocol are loc un
schimb de informaii ntre unitatea master i unitatea slave care permit corelarea i
coordonarea transferului de date. Fiecare aciune a celor doi participani la transfer
este condiionat de o aciune anterioar i nu de un impuls de ceas.
Magistralele asincrone necesit mai multe linii de semnal i o logic mai
complex, fapt care ridic preul acestora. Pentru acest motiv, n ciuda avantajelor
prezentate de magistralele asincrone, magistralele sincrone sunt mai des utilizate.
Dac la o magistral sunt conectate dispozitive cu viteze diferite (unele lente,
altele rapide), viteza de transfer trebuie aleas dup dispozitivul cel mai lent,
dispozitivele rapide fiind ntrziate.

5.3. Arbitrajul de magistral
La majoritatea sistemelor, exist mai multe module care pot prelua controlul
asupra magistralei (care pot deveni module master). Pentru acest motiv, dac apar
mai multe cereri simultane de magistral, este necesar s existe un mecanism de
arbitrare prin care s se determine modulul care va deveni master. Modulul master
va putea apoi iniia un transfer cu un alt modul care, pentru acest transfer, va avea
rolul de modul slave.
Metodele de arbitrare pot fi clasificate ca fiind centralizate sau descentralizate
(distribuite).

5.3.1. Arbitrarea centralizat
In cazul arbitrrii centralizate, alocarea magistralei este realizat de un dispozitiv
hardware numit arbitru de magistral. Acest dispozitiv poate fi un modul separat sau
poate face parte din UCP.
In figura 5.1 se prezint un exemplu simplu de arbitrare centralizat. In cadrul
acestei soluii exist o singur linie de cerere a magistralei, care poate fi activat de
unul sau mai multe dispozitive n orice moment. Arbitrul nu poate distinge dac exist
mai multe cereri simultane sau o singur cerere, ci numai dac exist sau nu cereri la
un moment dat.

Fig. 5.1 Arbitrarea centralizat

Dac apare un semnal pe linia de cerere, arbitrul activeaz linia de acordare a
magistralei, la care sunt conectate n serie toate dispozitivele. Dispozitivul cel mai
apropiat fizic de arbitru detecteaz semnalul de pe aceast linie i, n cazul n care a
efectuat o cerere, preia controlul asupra magistralei. Dac nu a efectuat o cerere,
transmite semnalul urmtorului dispozitiv, care procedeaz la fel, pn cnd un
dispozitiv preia controlul asupra magistralei.
In aceast schem de tip daisy chain, prioritatea dispozitivelor este dat de
distana la care se afl fa de arbitru. Dispozitivul cel mai apropiat de arbitru are
prioritatea maxim. Pentru a modifica aceste prioriti implicite, magistralele pot avea
mai multe niveluri de prioritate. In acest caz pentru fiecare prioritate exist o linie de
cerere i una de acordare a magistralei.

5.3.2. Arbitrarea descentralizat
In cazul arbitrrii descentralizate nu exist un arbitru de magistral. Fiecare modul
are o prioritate unic i conine o logic pentru controlul accesului la magistral care
ine cont de prioritile celorlalte module. Atunci cnd un anumit modul solicit
accesul la magistral, acesta verific mai nti dac exist vreun modul cu prioritate
mai mare care, de asemenea, solicit magistrala. In cazul n care o asemenea cerere
nu exist, iniiaz transferul. Dac un modul cu prioritate mai mare iniiaz o cerere n
acelai ciclu de ceas, modulul iniial menine cererea pn magistrala este eliberat.

5.4. Parcarea magistralelor
Anumite dispozitive master ale unui sistem de calcul ca, de exemplu, unitile
centrale, sunt active n marea majoritate a timpului, n timp ce altele sunt active n mod
sporadic. Un dispozitiv din prima categorie poate pstra controlul asupra magistralei
chiar i dup terminarea transferului curent, deoarece este foarte probabil c va
utiliza magistrala i n continuare. Procedura prin care magistrala nu este eliberat
automat dup terminarea transferului curent ci numai n cazul n care exist o cerere
magistrala
Acordare

Arbitru

D
1


D
2

D
4

D
3
Dispozitive de I/E
Cerere magistrala
de magistral, se numete parcarea magistralei.
Prin utilizarea acestei metode, nu este necesar executarea operaiilor de
eliberare a magistralei i de arbitrare pentru fiecare transfer. Dac se utilizeaz
parcarea magistralei orice alt modul care solicit accesul la magistral ncepe cu o
cerere adresat dispozitivului master de a elibera magistrala.

5.5. Magistrale locale
Aceste magistrale deservesc unitile foarte rapide cum sunt UCP i
memoria principal.
Magistrala procesorului este calea de comunicaie ntre UCP i subsistemele
cu care acesta lucreaz direct. Magistrala procesorului este utilizat, de exemplu,
pentru a transfera date ntre UCP i magistrala principal a sistemului sau ntre
UCP i memoria extern rapid (memoria cache). Deoarece de performanele
acestei magistrale depind n mare msur performanele calculatorului, aceast
magistral lucreaz la o vitez mult mai mare dect orice alt magistral din
sistem.
Magistrala procesorului are n componena magistrala de date, magistrala de
adrese i pe cea de control. De exemplu, magistrala procesorului unui sistem
Pentium are 64 linii de date, 32 linii de adres i un numr de linii de control
asociate.
Magistrala memoriei este utilizat la transferul informaiei ntre UCP i
memoria principal - memoria RAM a sistemului. Aceast magistral este
implementat printr-un set de circuite dedicate i este responsabil cu transferul
informaiilor ntre magistrala procesorului i memorie. In componena magistralei
memoriei intr i o magistrala de adrese utilizat pentru selecia locaiei de
memorie n care urmeaz s se efectueze o operaie de citire/scriere.

Fig. 5.2 Magistrale locale

Dimensiunea magistralei de memorie este strns legat de mrimea
memoriei pe care unitatea central o poate adresa direct. In figura 5.2 sunt
Magistrala procesorului
Magistrala principal
a sistemului
Magistrala principal
a sistemului
UCP
Memorie
extern
rapid
Controlerul
de
memorie
RAM
Magistrala memori ei
prezentate magistralele locale ale unui sistem de calcul.

5.6. Magistrala de extensie
Magistrala de extensie, numit i magistral l/O, permite unitii centrale s
comunice cu dispozitivele periferice. Magistrala l/O face posibil, de asemenea,
adugarea de noi dispozitive pentru a extinde posibilitile de prelucrare ale
calculatorului. In conectorii de extensie pot fi introduse componente de baz, cum
sunt controlerele de hard disc i plcile adaptoare video; de asemenea, se pot
introduce dispozitive mai specializate, cum ar fi plci de sunet i plci de interfa
cu uniti CD-ROM.
De-a lungul evoluiei sistemelor de calcul s-au dezvoltat mai multe tipuri de
magistrale de I/O. Dintre acestea cele mai importante sunt:
- ISA;
- EISA;
- MCA;
- Magistrala local;
- Magistrala VESA local;
- Magistrala PCI;
- Magistrala PCMCIA.
Aceste magistrale se deosebesc n principal prin numrul de informaii
transferate simultan i prin viteza cu care se face acest transfer. Arhitectura
magistralei este realizat cu un set de circuite care este conectat la magistrala
procesorului.

5.6.1 Magistrala ISA
Magistrala ISA (Industry Standard Architecture) este arhitectura de
magistral introdus odat cu primul IBM PC, n 1982 i care a fost mai trziu
mbuntit la modelul IBM PC/AT. Pn nu de mult magistrala ISA sttea la
baza calculatorului personal modern i era principala arhitectur folosit n marea
majoritate a sistemelor PC de pe pia. Longevitatea acestei magistrale se
datoreaz siguranei, accesibilitii i compatibilitii sale. Magistrala ISA a fost
conceput s lucreze cu arhitecturi pe 8 bii i mai trziu a fost extins pentru 16
bii.

5.6.2 Magistrala EISA
EISA sunt iniialele pentru Extended Industry Standard Architecture. Aa cum
arat i numele, magistrala EISA este o extindere a magistralei ISA, astfel nct s
permit arhitecturi de 32 de bii i viteze de transfer superioare, pstrnd ns
compatibilitatea cu plcile de extensie existente i cu perifericele. In comparaie cu
arhitectura de sistem ISA pe 16 bii, EISA permite mai multe extensii cu mai puine
conflicte intre plcile adaptoare.
Pentru a mri viteza sistemului, EISA utilizeaz o tehnologie numit bus
mastering (controlul total al magistralei). In esen, un dispozitiv cu opiunea de
control total al magistralei este un adaptor prevzut cu un procesor, care poate
executa operaii independent de UCP. Pentru a funciona corespunztor,
tehnologia bus-mastering se bazeaz pe un circuit de arbitrare EISA (EISA
arbitration unit), numit de obicei cip ISP (Integrated System Peripheral - sistem
periferic integrat). De exemplu, un controler de disc n tehnologia bus-mastering
schimb un volum de date mult mai mare cu o unitate rapid de hard disc, n
comparaie cu un controler obinuit.
Unitatea ISP decide care dispozitiv primete controlul, printr-un sistem de
patru niveluri de prioritate. Ordinea dat de nivelurile de prioritate este
urmtoarea:
- Remprosptarea memoriei
- Transferuri DMA (Direct Memory Access)
- UCP
- Plci bus-master
Dispozitivul adaptor cu bus-mastering semnaleaz unitii ISP c dorete s
preia controlul sistemului. In cel mai scurt timp posibil (dup ce au fost satisfcute
prioritile mai mari), ISP pred controlul dispozitivului. Aceste dispozitive au
incluse la rndul lor circuite care le mpiedic s pstreze controlul pe perioade de
timp mai mari dect cele necesare operaiilor ciclice cum este, de exemplu,
mprosptarea memoriei.

5.6.3 Magistrala MCA
Apariia procesoarelor pe 32 de bii a fcut ca magistrala ISA s nu mai
corespund noii generaii de procesoare. Microprocesoarele 386 transfer 32 de
bii de date simultan, iar magistrala ISA putea s transfere doar maxim 16 bii. In
loc s extind din nou magistrala ISA, IBM a decis s construiasc o nou
magistral; aa a aprut magistrala MCA (Micro Channel Architecture). MCA
admite controlul total al magistralei (bus-mastering). Prin implementarea
tehnologiei bus-mastering, descris n aliniatul anterior, s-au realizat mbuntiri
semnificative ale performanelor n comparaie cu magistrala ISA. Dispozitivul de
arbitrare controleaz competiia pentru transferul pe magistral, asigurnd accesul
tuturor dispozitivelor la magistral dar mpiedicnd, n acelai timp, monopolizarea
acesteia de singur dispozitiv.
Sistemul de arbitraj al magistralei are n structura sa 4 linii de prioritate, care
stabilesc 16 nivele de prioritate. Fiecrui dispozitiv master i se atribuie un nivel de
prioritate ntre 0 i F, nivelul F fiind cel mai puin prioritar. Dispozitivul cu nivelul de
prioritate F este numit master implicit. Atunci cnd nu exist nici un alt master sau la
apariia unei condiii de excepie, magistrala este acordat acestui dispozitiv.
Un dispozitiv conectat la magistrala Micro Channel, care dorete s utilizeze
magistrala, trimite numrul de prioritate, ce i-a fost acordat, pe cele 4 linii de prioritate:
fiecare dispozitiv sau plac de extensie urmrete aceste semnale i renun la
magistral, dac detecteaz existena unei cereri de prioritate mai mare. Procesorul
principal (UCP) are prioritatea cea mai mic (F) fiind master implicit.

5.6.4 Magistrala local
Magistralele l/O prezentate pn acum aveau o rat de transfer relativ
sczut. In timp ce rata de transfer magistralei procesorului a crescut, magistrala
l/O a cunoscut doar ajustri neimportante ale acestui parametru, n principal prin
creterea numrului de ci paralele. Magistrala l/O a trebuit s lucreze la o rat de
transfer sczut deoarece majoritatea adaptoarelor instalate funcionau doar la
viteze mai mici.
Figura 5.3 prezint schema bloc de principiu a magistralelor unui sistem de
calcul.

Fig. 5.3

Dac pentru majoritatea dispozitivelor periferice cum sunt tastatura,
imprimantele, scannere, etc. aceast rat de transfer este suficient, au aprut
dispozitive pentru care era necesar transferul rapid al unor blocuri mari de date.
Aceast necesitate apare mai ales la urmtoarele subsisteme:
- Adaptoare grafice. Interfeele grafice ale sistemelor de operare Windows, OS/2
i Unix X-Windows necesit actualizarea rapid a imaginii grafice pentru deplasarea,
redimensionarea i actualizarea ferestrelor multiple. Acelai lucru este valabil i pentru
imaginile video n micare. Procesorul trebuie s actualizeze i s transfere blocuri
mari de date n cadrul memoriei video.
- Adaptoare pentru interfaa SCSI. Interfaa SCSI este utilizat mai ales pentru
memorii de mas, ca unitile de disc fix, unitile CD-ROM i unitile de band
ncasetat. Creterea vitezei de transfer ale acestor dispozitive influeneaz
semnificativ performanele globale ale sistemului.
O soluie evident a acestei probleme este mutarea unora dintre extensiile
l/O ntr-o zon unde pot avea acces la vitezele sporite ale magistralei procesorului,
la fel ca i cea de care beneficiaz i memoria imediat. Figura 5.4 descrie
aceast nou dispunere.
Aceast dispunere a componentelor a devenit cunoscut sub denumirea de
magistral local (local bus), deoarece dispozitivele externe (plci adaptoare) pot
accesa acea parte a magistralei care aparinea pn acum doar procesorului i
anume, magistrala procesorului.
Soluiile local-bus nu nlocuiesc standardele anterioare, cum ar fi ISA i
(Vitez mare)
Magistrala
memori ei
(Vitez mic)
(Vitez mic)
Magistrala
I/O
Magistrala procesorului
(Vitez mare)
UCP
Memoria
imediat
(cache)
Controlerul
de
magistral
RAM
Plci
adaptoare
I/O
Adaptoare
I/O
incluse
Magistrala
I/O
EISA, ci sunt proiectate pentru a le mbunti. Pentru acest motiv, un sistem
uzual este bazat pe standardele ISA sau EISA fiind n acelai timp dotat i cu unul
sau mai muli conectori local-bus. Astfel, plcile mai vechi rmn compatibile cu
sistemul, iar plcile adaptoare de mare vitez beneficiaz acum de conectorii
local-bus.

Fig. 5.4 Magistral de extensie de tip local-bus

5.6.5 Magistrala local VESA
La nceput, magistrala local era folosit n principal pentru adaptoarele
grafice. Aceast magistral a aprut n sistemele de vrf n care strangulrile erau
evidente. Din nefericire, spre sfritul anului 1992, erau n competiie pe pia mai
multe sisteme local-bus i fiecare dintre aceste sisteme erau brevetate. Aceast
lips a standardizrii a stnjenit acceptarea larg a soluiei local-bus.
Pentru a depi aceast problem, Video Electronics Standard Association
(VESA) a dezvoltat un standard de magistral local-bus cunoscut sub numele de
VESA Local-Bus sau, mai simplu, VL-Bus. La fel ca n implementrile anterioare,
sistemele VL-Bus ofereau accesul direct la memoria sistemului, cu viteza
procesorului. Magistrala VL-Bus transfera 32 de bii de date simultan i deci
permitea ca transferul datelor ntre UCP i un subsistem compatibil video sau un
hard disc s se fac pe lungimea integral de 32 de bii a cuvntului prin care
comunica microprocesorul 486.
Magistrala local VESA nu a mai fost dezvoltat pentru a fi adaptat la
procesoarele Pentium astfel nct a rmas inevitabil legat de procesorul 486.

5.6.6 Magistrala PCI
In paralel cu grupul care a dezvoltat magistrala VESA, Intel a dezvoltat
magistrala PCI (Peripheral Component Interconnect bus) care rspundea, de
(Vitez mare)
Magistrala
memori ei
(Vitez mic)
(Vitez mic)
Magistrala
I/O
Magistrala procesorului
(Vitez mare)
UCP
Memoria
imediat
(cache)
Controlerul
de
magistral
RAM
Plci
adaptoare
I/O
Adaptoare
I/O
incluse
Magistrala
I/O
Plci
Adaptoare
I/O
asemenea, necesitii de a se depi slbiciunile magistralelor ISA i EISA. In
acest scop, ntre CPU i magistrala l/O existent, a fost intercalat o nou
magistral denumit PCI.


Fig. 5.5

Pentru faptul c magistrala PCI lucreaz n paralel cu magistrala
procesorului, rata de transfer a acesteia este considerabil crescut. Unul dintre
avantajele majore ale magistralei PCI const n faptul c, n timp ce UCP transfer
sau primete date de la memoria imediat, PCI se poate ocupa cu transferarea
informaiilor ntre alte elemente ale sistemului.
Un alt avantaj al magistralei PCI este faptul c aceasta admite transferuri n
mod exploziv (burst). Un asemenea transfer const dintr-o singur faz de adrese
urmat de mai multe faze de date. In acest caz arbitrajul de magistral trebuie
executat o singur dat la nceperea fazei de adrese. In timpul fazei de adrese se
transmite adresa de nceput a blocului de date i tipul tranzaciei care urmeaz; citire
sau scriere. Dispozitivul slave memoreaz adresa de nceput ntr-un contor de adrese
i va incrementa adresa n fiecare faz de date. La magistralele care nu permit
transferuri n mod exploziv, blocul de date se transmite utiliznd o serie de tranzacii
separate i, n acest caz, este necesar arbitrajul de magistral pentru fiecare dintre
aceste tranzacii. In aceste condiii, ntre dou tranzacii, un alt dispozitiv master poate
obine magistrala fapt care limiteaz sever rata de transfer.
Dezvoltarea ulterioar a magistralei PCI a condus la apariia magistralei PCI
X i aceasta cu diverse variante.
Magistrala ISA
CD-ROM
LAN
Magistrala
SCSI
Magistrala PCI
memoriei
Magistrala
local a
UCP
Magistrala
UCP
Punte
UCP/PCI

Memoria
principal
Periferi c
audio
Periferi c
video
Memorie
video
Adaptor
SCSI
Adaptor
grafic
Adaptor
LAN
Punte
PCI / ISA
Disc
Band
Master
magistral
Sl ave
memori e
Sl ave
I/E
Buffer de
cadre video
Din cauza tendinei de dezvoltare a funciilor grafice, posibilitile magistralei
PCI au fost repede depite, n special pentru motivul c aceasta a fost conceput
pentru a deservi mai multe dispozitive. Aceast situaie a condus la dezvoltarea
unei magistrale dedicate pentru adaptoarele grafice numit Accelerated Graphic
Port (AGP). Magistrala AGP a fost utilizat, n primul rnd, pentru a accelera
grafica 3D. Magistrala AGP a fost nlocuit ntre anii 2004 2007 de magistrala
PCI Express, care avea performane mbuntite.

Fig. 5.6

In figura 5.6 sunt prezentate toate magistralele care sunt implicate n
realizarea unui sistem de calcul actual.
Punile care conecteaz diverse magistrale ntre ele au n acest caz denumiri
consacrate. Astfel puntea care conecteaz magistrala procesorului (FSB) cu
magistrala memoriei i magistrala plcii grafice se numete Northbridge. Placa
grafic i magistrala corespunztoare poate fi de tip AGP sau, mai nou, PCI
Expres. O a doua punte numit Southbridge, conecteaz magistrala de extensie
care acum este de tip PCI cu porturile rapide (IDE, SATA, USB) i cu magistrala
perifericelor lente numit LPC.
Magistrala LPC (Low Pin Count) conecteaz unitile periferice de vitez
UCP


Northbridge

Southbridge


IDE
SATA
USB
Controler
grafic on
board

Cabluri i
porturi
off board

Slot pentru
plac grafic
Magistral
AGP sau
PCI Expres
Magistrala
memoriei
Sloturi pt.
memorie
RAM
Front side bus
Magistrala
intern
Chipset
Magistrala
PCI
ROM
(BIOS)
Porturi seriale
Porturi paralele
Floppy disk
Tastatura
Mouse
Magistrala
PCI
Sloturi
PCI
Magistrala LPC
redus cum sunt tastatura mouse-ul, controlerul de floppy disk, porturile seriale i
paralele (la care poate fi conectat, de exemplu, o imprimant), la circuitul
Southbridge. La aceeai magistral este conectat i memoria ROM n care se
gsete BIOS-ul (Basic Input/Output Sistem). Aceast magistral a fost conceput
pentru a nlocui magistrala ISA i are avantajul c necesit mai puine ci pentru
comunicaia cu perifericele, fapt important pentru plcile de baz actuale care sunt
n general foarte aglomerate. Punile Northbridge i Southbridge sunt conectate
ntre ele prin magistrala intern i mpreun formeaz ceea ce se numete
chipset.

5.6.7 Magistrala PCMCIA
Din dorina de a oferi calculatoarelor laptop i notebook aceeai calitate de a
fi extensibile pe care o au sistemele desktop, Personal Computer Memory Card
International Association (PCMCIA) a stabilit cteva standarde pentru plcile de
extensie de dimensiuni reduse (credit-card-size) care se potrivesc in conectorii
mici ai calculatoarelor laptop i notebook.
Standardele PCMCIA, care au fost elaborate de un consoriu format din
peste 300 de productori (inclusiv IBM, Toshiba i Apple), au fost considerate a fi
un progres major n domeniul calculatoarelor portabile, deoarece conectorii
PCMCIA pentru laptop i notebook admit plci de extensie de memorie, plci
fax/modem, adaptoare SCSI, plci de reea local (LAN) i multe alte tipuri de
dispozitive. Ideea de baz a standardului PCMCIA a fost aceea de a da
posibilitatea ca toate dispozitivele periferice PCMCIA existente la productori s
poat fi utilizate de orice notebook.
Dei implementarea standardului PCMCIA a fost un progres considerabil
pentru calculatoarele de tip laptop i notebook totui acesta nu este ntotdeauna
respectat de productori de calculatoare i dispozitive periferice.
Dorind s rezolve aceste probleme de compatibilitate, PCMCIA a continuat
s stabileasc noi standarde. In urma acestei activiti au rezultat, de fapt, 4
standarde: PCMCIA tip I pn la tip IV. Cu toate acestea, exist nc probleme de
compatibilitate, mai ales datorit faptului c standardele PCMCIA sunt opionale.


Cap.6. UNITATEA DE MEMORIE

Memoria este acea parte a sistemelor de calcul care se utilizeaz pentru
pstrarea i regsirea ulterioar a datelor i instruciunilor. Operaiile principale n
care este implicat memoria sunt urmtoarele:
Preluarea datelor de intrare n memorie;
Pstrarea datelor pentru a putea fi prelucrate de ctre UCP sau pentru a
putea fi preluate de echipamentele de ieire;
Transmiterea datelor din memorie ctre UCP sau ctre echipamentele de
ieire.
Sistemele de memorie influeneaz n mod determinant performanele
calculatoarelor. Deoarece n memorie sunt pstrate att datele ct i instruciunile,
sistemul de memorie trebuie s satisfac cererile simultane pentru prelucrarea
datelor, execuia instruciunilor i transferul ntre memorie i exterior.
Exist o mare varietate de tipuri, tehnologii, organizri, performane i costuri
ale memoriilor utilizate n sistemele de calcul. Nici una din acestea nu este optim
pentru satisfacerea tuturor cerinelor. Ca o consecin, sistemele de calcul sunt
echipate cu o ierarhie de subsisteme de memorie, unele interne sistemului
(accesibile direct de UCP), iar altele externe (accesibile de ctre UCP printr-un
modul de I/E).

6.1. Caracteristicile sistemelor de memorie
Cele mai importante caracteristici sunt urmtoarele:
- Amplasarea. Sistemele de calcul dispun de memorii interne i externe.
Memoria intern este numit, de cele mai multe ori, memorie principal. Exist ns
i alte forme de memorie intern. Astfel UCP necesit o memorie local proprie,
constituit dintr-un numr de registre de memorie. Unitatea de comand i control
din cadrul UCP poate necesita de asemenea o memorie proprie, n cazul unitilor
de comand microprogramate. Memoria extern const din diverse dispozitive
periferice, ca discurile sau benzile magnetice, unitile de CD-ROM sau DVD-ROM
i altele, care sunt accesibile de ctre UCP prin controlere (module) de I/E.
- Capacitatea. Se exprim prin dimensiunea cuvntului de memorie (8, 16, 32,
64 sau 128 de bii) i numrul de cuvinte (Koctei, Moctei, Goctei) din care este
compus memoria.
- Unitatea transferabil. Pentru memoria intern, unitatea transferabil este
egal cu numrul liniilor de date ctre i de la modulul de memorie, deci cu
numrul de bii transferai simultan. Unitatea transferabil nu trebuie s fie egal
neaprat cu un cuvnt de memorie. Pentru memoria extern, datele sunt
transferate de multe ori n uniti mai mari dect un cuvnt, numite blocuri.
- Metoda de acces. Exist urmtoarele tipuri de acces la unitile de date:
1. Acces secvenial. Memoria este organizat n uniti de date, numite
nregistrri. Fiecare nregistrare poate fi regsit pe baza adresei acesteia. Pentru
a accesa o anumit nregistrare trebuie parcurse toate nregistrrile anterioare.
Pentru acest motiv timpul de acces la o nregistrare oarecare este variabil i
depinde de poziia nregistrrii n cadrul fiierului. Unitile de band sunt
echipamente cu acces secvenial.
2. Acces direct. Blocurile sau nregistrrile individuale au o adres unic pe
baza amplasrii fizice a acestora. Timpul de acces este de asemenea variabil i
depinde de poziia nregistrrii accesat anterior. Unitile de discuri fixe sunt
echipamente cu acces direct.
3. Acces aleator. Fiecare locaie adresabil a memoriei are un mecanism de
adresare ncorporat. Timpul de acces a fiecrei locaii este independent de
secvenele acceselor anterioare i este constant. Fiecare locaie poate fi, deci,
selectat aleator i poate fi adresat i accesat direct. Memoria principal poate
fi accesat n mod aleatoriu, de unde provine i numele acesteia (Random
access memory-RAM).
4. Acces asociativ. Memoria asociativ este un tip de memorie cu acces
aleator, care permite regsirea unui cuvnt de memorie pe baza unei pri a
coninutului acestuia i nu pe baza adresei (memorie adresabil prin coninut).
Acest lucru se realizeaz prin compararea unor bii dintr-un cuvnt cu o anumit
valoare specificat i efectuarea acestei comparri n mod simultan pentru toate
cuvintele. In acest fel regsirea este foarte rapid.
- Tehnologia de realizare. Dispozitivele de memorie ale unui sistem de
calcul pot fi semiconductoare, magnetice sau optice. Memoria principal este de
obicei semiconductoare (RAM) iar memoria secundar este constituit din unul
sau mai multe discuri dure (Hard Disk - HDD) care memoreaz informaia pe un
substrat magnetic. In ultimul timp au luat tot o mai mare dezvoltare dispozitivele
optice de memorare, dintre care amintim CD-ROM, DVD-ROM, BLU-ray (BD).
- Metoda de scriere. In funcie de modul de funcionare a memoriilor
acestea pot fi reversibile sau permanente. O memorie reversibil este
caracterizat de faptul c informaiile pot fi scrise i citite n timpul funcionrii
acesteia. Memorarea informaiilor ntr-o astfel de memorie este temporar,
acestea fiind pierdute la deconectarea memoriei. Un exemplu de memorii cu
citire/scriere sunt memoriile RAM.
Memoriile al cror coninut nu poate fi modificat n timpul funcionrii sunt
numite memorii numai cu citire (ROM - Read-Only Memory). Memoriile ROM
sunt scrise n procesul de fabricaie i coninutul lor nu mai poate fi modificat
ulterior.
O alt clas de memorii din aceasta categorie o constituie memoriile
PROM (Programmable Read-Only Memory). Procesul de scriere al acestor
memorii este executat prin semnale electrice de ctre furnizor sau utilizator ntr-
un moment ulterior fabricaiei circuitului, utiliznd un echipament special.
Memoria PROM asigur flexibilitate la un cost moderat, dar are dezavantajul c
nu poate fi tears.
O alt variant a memoriei ROM este memoria EPROM (Erasable
Programmable Read-Only Memory). Aceasta este citit i nscris electric, ca i
memoria PROM, ns naintea unei operaii de scriere toate celulele de
memorare trebuie terse pentru a avea aceeai stare iniial prin expunerea
capsulei la o radiaie ultraviolet. Acest proces de tergere poate fi executat n
mod repetat.
O form actual de memorie ROM este memoria EEPROM (Electrically
Erasable Programmable Read-Only Memory). Aceast memorie poate fi
nscris n orice moment fr a-i terge coninutul. Operaia de scriere trebuie
efectuat pe blocuri i necesit un timp considerabil mai lung dect operaia de
citire. Memoria EEPROM are avantajul c poate fi actualizat on-line, utiliznd
semnale obinuite de control, adrese i date. Acest tip de memorie este potrivit
pentru pstrarea programelor de control i ca un nlocuitor al memoriei
secundare n anumite aplicaii. Programul BIOS (Basic input/output system) este
pstrat ntr-o memorie de tip ROM situat pe placa de baz a sistemului de
calcul.
- Durata de via a informaiilor memorate. Din acest punct de vedere
dispozitivele de memorare se mpart n dou categorii: volatile i nevolatile. Sunt
volatile memoriile care pierd informaia la deconectarea acestora de la sursa de
energie electric. Din aceast categorie fac parte memoriile RAM care se terg
la oprirea calculatorului.
Memoriile nevolatile pstreaz informaiile memorate i dup deconectare.
Dintre acestea amintim memoriile de tip ROM, Hard Disk-ul, dispozitivele optice
de memorare, etc.
La anumite tehnologii de memorie, informaiile memorate se pierd dup o
perioad de timp dac acestea nu sunt refcute. Pierderea informaiilor
memorate poate avea loc n urmtoarele cazuri: citirea distructiv i memorarea
dinamic. La anumite memorii metoda de citire distruge informaiile memorate;
acest fenomen este numit citire distructiv (DRO - Destructive Readout).
Memoriile la care citirea nu afecteaz informaiile memorate sunt caracterizate
prin citire nedistructiv (NDRO -Non-Destructive Readout). La memoriile DRO
fiecare operaie de citire trebuie urmat de o operaie de scriere care reface
starea original a memoriei. Aceast refacere este efectuat automat utiliznd
un registru buffer. Operaia de citire transfer cuvntul din locaia adresat ntr-
un registrul buffer. Coninutul bufferului este rescris apoi n locaia original.
Anumite memorii au proprietatea c informaia memorat are tendina s
se modifice dup un anumit timp, datorit unui proces fizic. De exemplu, la
anumite memorii semiconductoare o sarcin electric dintr-un condensator
reprezint valoarea binar 1, iar absena sarcinii reprezint valoarea binar 0. In
timp, condensatorul tinde s se descarce, determinnd pierderea informaiei.
Pentru a evita acest lucru sarcina este refcut printr-un proces numit
remprosptare. Memoriile care necesit o remprosptare periodic sunt numite
memorii dinamice, spre deosebire de memoriile statice, care nu necesit
remprosptare. Aceast operaie se efectueaz n acelai mod n care sunt
refcute informaiile ntr-o memorie cu citire distructiv. Coninutul fiecrei locaii
este citit periodic n registre buffer, iar apoi este rescris sub form amplificat n
locaia original.



6.2. Indicatori de performan ai memoriilor
Din punctul de vedere al utilizatorului, cele mai importante caracteristici ale
unei memorii sunt capacitatea i performana.
1. Capacitatea reprezint cantitatea de informaie care poate fi memorat
de un dispozitiv de memorie. Cea mai mic unitatea adresabil a unei memorii
este octetul compus din opt bii. De obicei, memoria este organizat pe cuvinte
de 16 bii (2 octei), 32 bii (4 octei ) sau 64 bii (8 octei).
Capacitatea memoriei se exprim n Koctei (KB - Kilobait)) sau multipli ai
acestuia:
1 KB=2
10
B=1024B
1MB=2
10
KB=2
20
B
1GB =2
10
MB =2
30
B
Preul pe bit al unei memorii scade o dat cu creterea capacitii de
memorare a acesteia.
2. Performana. Performana unei memorii este determinat n principal de
viteza cu care informaiile pot fi citite din memorie sau scrise n memorie. Cei
mai importani indicatori de performan utilizai sunt timpul de acces, durata
ciclului, rata de transfer i fiabilitatea.
- Timpul de acces al unei memorii cu acces aleator, notat cu
A
t , este
intervalul de timp necesar pentru a executa o operaie de citire sau scriere
pentru o cantitate fix de informaie, de exemplu, un cuvnt. Acest interval de
timp este calculat din momentul n care memoria primete o cerere de citire sau
scriere pn n momentul n care datele sunt disponibile pentru utilizare sau
sunt memorate. Timpul de acces pentru citire nu este ntotdeauna egal cu timpul
de acces pentru scriere. Pentru o memorie cu acces non-aleator, timpul de
acces este timpul necesar pentru a poziiona mecanismul de citire-scriere la
locaia dorit.
- Durata ciclului, notat cu
M
t , se refer n primul rnd la memoriile cu
acces aleator. Durata ciclului const din timpul de acces la care se adaug
timpul suplimentar necesar nainte de a putea ncepe un al doilea acces.
Anumite memorii cu citire distructiv nu pot iniia un nou acces nainte de a fi
executat o operaie de refacere sau remprosptare. Pentru acest motiv, timpul
minim care trebuie s treac ntre nceperea a dou operaii de acces
consecutive poate fi mai mare dect timpul de acces
A
t .
- Rata de transfer, notat cu
M
r , este cantitatea maxim de informaii care
pot fi transferate n sau din memorie n unitatea de timp. Aceast rat este
msurat n bii pe secund sau cuvinte pe secund. Dac w este numrul de
bii care pot fi transferai simultan n memorie, rata de transfer este
M M
t w r / =
bii/s. Dac
A M
t t = , atunci
A M
t w r / = .
- Fiabilitatea este msurat prin timpul mediu ntre defecte (MTBF -Mean
Time Between Failures). In general, memoriile fr pri n micare au o
fiabilitate mult mai ridicat dect memoriile care implic o deplasare mecanic,
precum discurile magnetice. Chiar i la memoriile fr pri n micare, apar
probleme de fiabilitate, n particular atunci cnd se utilizeaz densiti de
memorare sau rate de transfer foarte ridicate. Codurile detectoare de erori i
codurile corectoare de erori pot crete fiabilitatea oricrui tip de memorie.

6.3. Ierarhia de memorii
Principalele caracteristici de care trebuie s se in cont la realizarea unui
sistem de memorie sunt capacitatea i performanele memoriei. Dintre astea din
urm cel mai important este timpul de acces. Pe lng acestea, trebuie s se ia n
considerare i costul memoriei. Aceste caracteristici sunt contradictorii. De
exemplu, exist n general urmtoarele relaii ntre capacitatea, timpul de acces i
costul pe bit al diferitelor tehnologii utilizate pentru implementarea sistemelor de
memorie:
- O capacitate mai mare implic un timp de acces mai mare;
- O capacitate mai mare implic un cost pe bit mai mic;
- Un timp de acces mai mic implic un cost pe bit mai mare.
innd seama de aceste considerente, un sistem de calcul trebuie s conin
memorii ct mai rapide pentru a asigura cerinele de performan dar i memorii de
mare capacitate pentru a permite prelucrarea unui volum mare de date. Aceste
cerine contradictorii se pot asigura dac se utilizeaz n cadrul unui sistem de
calcul mai multe componente i tehnologii de memorare, care formeaz o ierarhie
de memorii.
La ierarhizarea memoriei s-a inut seama de modul n care opereaz
programele. Astfel, prin analize statistice ale unor programe tipice s-a constatat
c, n orice interval de timp dat, referinele la memorie tind s se restrng ntr-o
anumit zon a acesteia. Aceast proprietate este cunoscut sub numele de
localitate a referinelor. Localitatea referinelor poate fi spaial sau temporal.
Aceste concepte sunt definite n continuare.
- Localitatea spaial. De multe ori, un program utilizeaz date i
instruciuni ale cror adrese sunt apropiate unele de altele n spaiul de adrese.
De exemplu, referinele la elementele unui tablou apar ntotdeauna n cadrul
unei anumite zone limitate din spaiul de adrese. Similar, dac UCP face referire
la o instruciune I , memorat la o adres dat A, instruciunea cea mai
probabil de a fi refereniat n continuare de ctre UCP este cea imediat
urmtoare dup I , a crei adres este 1 + A .
- Localitatea temporal. Datele sau instruciunile referite recent au o
probabilitate ridicat de a fi referite din nou n viitorul apropiat. De exemplu, un
grup de instruciuni dintr-o bucl iterativ sau o subrutin pot fi executate n mod
repetat, rezultnd o frecven ridicat a referinelor la adresele acestora.
O ierarhie tipic este ilustrat n figura 6.1.
In mod uzual, se poate considera c diferitele uniti de memorie dintr-un
sistem tipic formeaz o ierarhie de memorii ) ,..., , (
2 1 n
M M M , dup cum se arat
n figura 6.1. Nivelul cel mai nalt,
1
M este reprezentat de unitatea de memorie
cea mai rapid, cu dimensiunea cea mai redus i cu costul cel mai ridicat, fiind
amplasat cel mai aproape de procesor.
Urmtorul nivel,
2
M , este mai lent, are dimensiuni mai mari i un cost mai
redus dect nivelul
1
M , fiind amplasat mai departe de procesor. Acelai lucru
este valabil pentru nivelurile
3
M pn la
n
M .
Componentele sistemului de memorie pot fi plasate n patru grupe,
prezentate n continuare.
Registrele UCP. Registrele de vitez ridicat ale UCP sunt utilizate ca
memorie de lucru pentru pstrarea temporar a instruciunilor i datelor. Fiecare
registru poate fi accesat pentru citire sau scriere ntr-un singur ciclu de ceas.
Memoria principal (primar). Aceast memorie extern, rapid pstreaz
programe i date care sunt n uz curent. Locaiile memoriei principale sunt
adresate direct prin instruciunile de ncrcare i memorare ale UCP. Cu toate
c se utilizeaz o tehnologie similar cu cea a setului de registre al UCP,
accesul este mai lent din cauza faptului c memoria principal este separat
fizic de UCP. Capacitatea memoriei principale poate ajunge n prezent la uniti
sau zeci de Goctei, iar timpii de acces tipici sunt de cteva cicluri de ceas.

Fig.6.1

Memoria secundar. Acest tip de memorie are o capacitate mult mai mare
dar, n acelai timp, este mult mai lent dect memoria principal. Memoria
secundar pstreaz programe i date care nu sunt solicitate n mod constant
de UCP. Este utilizat de asemenea atunci cnd capacitatea memoriei
principale este depit. Informaia din memoria secundar este accesat
indirect prin programe de intrare/ieire care transfer informaii ntre memoria
principal i cea secundar. Tehnologiile reprezentative pentru memoria
secundar sunt discurile magnetice fixe i discurile optice, ambele avnd
mecanisme de acces electromecanice relativ lente. Capacitile de memorare
de zeci sau sute de Goctei sau, mai nou, Toctei sunt obinuite, iar timpii de
acces se msoar n milisecunde.
Memoria cache. Majoritatea calculatoarelor mai au nc nivel de memorie
(uneori mai multe asemenea niveluri) numit memorie cache. Logic memoriile
Procesor
Memorie nivel M
1
Memorie nivel M
2
Memorie nivel M
n
Vitez Dimensiune Cost
Cea mai mic Cel mai
ridicat

Cea mai mare
Cel mai
sczut
Cea mai mare
Cea mai mic
cache sunt poziionate ntre registrele UCP i memoria principal. Capacitatea
de memorare a memoriei cache este mai mic dect cea a memoriei principale,
dar poate fi accesat mai rapid dect aceasta. Deoarece o parte a acesteia sau
ntreaga memorie cache se poate afla n aceeai capsul cu UCP, timpul de
acces este de la unul la trei cicluri de ceas. Memoriile cache sunt componente
eseniale ale calculatoarelor cu performane ridicate.
Spre deosebire de celelalte trei tipuri de memorii, memoriile cache sunt de
obicei transparente pentru programator.
Figura 6.2 prezint unele exemple de ierarhii de memorie cu dou, trei i
patru niveluri. Ierarhia cu dou niveluri din figura 6.2(a) este tipic pentru
calculatoarele din generaiile anterioare. La ierarhia din figura 6.2(b) este
adugat o memorie cache numit memorie cache divizat, deoarece aceasta
are zone separate pentru memorarea instruciunilor (Cache I) i a datelor
(Cache D). Al treilea exemplu din figura 6.2(c) are dou niveluri de memorii
cache, ambele de tip nedivizat.

Fig.6.2

6.4. Memoria principal semiconductoare
Memoria principal semiconductoare este de obicei o memorie cu acces
aleator (RAM). Acest tip de memorie se distinge prin faptul c fiecare locaie de
memorare poate fi accesat independent, cu un timp de acces fix care este
D
D D D
I I I I
D D D
I I I





M
1
I
D
D
I
UCP

Memorie
principal

M
1



Memorie
secundar



M
2



UCP
Cache I
Cache D


Memorie
principal


M
2




Memorie
secundar


M
3



UCP

Cache
nivel 1

M
1


Cache
nivel 2

M
2



Memorie
principal


M
3




Memorie
secundar


M
4


a
b
c
independent de poziia locaiei accesate.

6.4.1. Celula de memorie i unitatea de memorie
O unitate de memorie este compus dintr-un anumit numr de celule de
memorie. Dei, pentru realizarea celulelor de memorie, se utilizeaz o
diversitate de tehnologii, toate celulele de memorie semiconductoare prezint
urmtoarele proprieti:
Au dou stri stabile (sau semi-stabile), care pot fi utilizate pentru a
reprezenta valorile binare 0 i 1.
Pot fi nscrise (cel puin o dat) prin setarea strii.
Pot fi citite prin sesizarea strii.
O schem bloc a unei celule care memoreaz un bit de informaie este
prezentat n figura 6.3. Linia de selecie realizeaz selectarea (validarea)
celulei. Linia R/W (Read/Write) stabilete dac trebuie efectuat o operaie de
citire sau de scriere asupra celulei selectate. Atunci cnd linia R/W este 0, se
efectueaz o operaie de citire, care determin trecerea datei memorate printr-
un amplificator de detecie (sense amplifier) i transmiterea acesteia pe linia de
ieire. Intr-un mod similar, atunci cnd linia R/W este 1, se efectueaz o
operaie de scriere, care determin ca data de pe linia de intrare s fie
memorat n celul.

Fig.6.3

O celul de memorie poate fi construit, n funcie de tehnologia utilizat,
dintr-un numr de unul pn la ase tranzistoare. Restricia principal la
proiectarea unei celule este dimensiunea sa. Obiectivul este ca dimensiunea
celulei s fie ct mai redus, astfel nct s poat fi mpachetate mai multe
celule n spaiul disponibil din cadrul unei capsule.
Exist dou tipuri de memorii cu acces aleator, statice (SRAM) i dinamice
(DRAM). Att memoriile statice ct i cele dinamice sunt volatile, deci informaia
memorat este pierdut atunci cnd alimentarea cu energie este ntrerupt.
Memoriile statice constau din celule asemntoare cu bistabilele utilizate n
proiectarea logic. Celulele memoriilor SRAM difer de bistabile n principal prin
metodele utilizate pentru adresarea celulelor i transferul datelor. Memoriile
statice rein datele atunci cnd un cuvnt este citit din acestea, deci citirea este
nedistructiv.
Date de ieire Date de intrare

Celul
de
memorie
Selecie

_
R/W
Intr-o celul de memorie DRAM, strile 1 i 0 corespund prezenei sau
absenei unei sarcini memorate ntr-un condensator controlat de un circuit de
comutare, de obicei un tranzistor. Condensatorul unei celule DRAM trebuie
rencrcat periodic. Operaia de rencrcare a condensatoarelor este numit
remprosptare. Deci, o memorie DRAM trebuie s conin un circuit de
remprosptare i s alterneze operaiile de remprosptare cu accesele
normale la memorie. Datele coninute n memoriile dinamice trebuie s fie
rescrise n locaia corespunztoare de memorie dup fiecare operaie de citire.
Cu alte cuvinte, memoriile dinamice sunt caracterizate prin proprietatea c
citirea este distructiv.
Deoarece o celul de memorie DRAM poate fi construit utiliznd un
singur tranzistor, n timp ce o celul de memorie SRAM necesit pn la ase
tranzistoare, la memoriile dinamice se obine o densitate de memorare mai
ridicat. In consecin, o memorie RAM dinamic este mai puin costisitoare
dect o memorie RAM static de aceeai capacitate. Pe de alt parte, o
memorie RAM dinamic necesit un circuit de remprosptare. Pentru memorii
de dimensiuni mari, costul circuitului de remprosptare este compensat de
costul mai redus al memoriilor DRAM. Un alt aspect este faptul c memoriile
RAM statice sunt mai rapide dect memoriile RAM dinamice.
O unitate de memorie const dintr-o matrice de celule de memorie.
Structura intern a unei uniti de memorie de m cuvinte cu n bii pe cuvnt
const din mxn celule de memorie. Intr-o unitate de memorie, un grup de opt
celule (un octet) pot fi adresate simultan, fapt care permite ca acestea s aib o
linie de selecie comun.

6.4.2. Organizarea memoriilor
Fiecare circuit integrat de memorie conine o matrice de celule de
memorie. Pentru organizarea logicii funcionale a acestor celule de memorie se
utilizeaz dou metode: 1D i 2D.
Cea mai obinuit form de organizare de memorie este organizarea
bidimensional (2D) sau linie-coloan prezentat n figura 6.4, unde, pentru
simplitate, circuitele de date i de control sunt omise. Cuvntul de adres de m
bii este divizat n dou pri, X i Y , constnd din m
x
, respectiv m
y
bii. Celulele
sunt aranjate ntr-o matrice rectangular de
x
N , linii i
y
N coloane, astfel c
numrul total de celule este N
x
xN
y
. Aceast memorie funcioneaz n felul
urmtor. Mai nti, adresa locaiei de memorie, care trebuie accesat, este
transferat prin magistrala de adrese ctre cele dou buffere de adrese X i Y.
Cele dou componente ale adresei m
x
i m
y
sunt apoi decodificate de
decodificatoarele de linie i coloan DCD. O linie de control indic tipul
accesului care trebuie executat. Dac este cerut o operaie de citire, coninutul
locaiei adresate este transferat de la matricea de memorie n bufferul de date i
de aici pe magistrala de date. Dac este cerut o operaie de scriere cuvntul,
care trebuie memorat, este transferat de pe magistrala de date n locaia
selectat din unitatea de memorie.



Fig.6.4

Organizarea 2D necesit un numr mult mai redus de circuite de acces
dect organizarea 1D pentru aceeai capacitate de memorare. De asemenea,
n locul unui singur decodificator de adres foarte complex, sunt suficiente, n
cazul organizrii 2D, dou decodificatoare de adres mult mai simple.
Un circuit integrat de memorie RAM conine n mod tipic toate circuitele de
acces, incluznd decodificatoare de adres, drivere i circuite de control.
Buffer de
adrese
m
y
m
x
m
Y X
Magistral
de adrese
Matrice de memorie

DCD
adres
de
linie







DCD
adres de coloan

6.5 Memoria stiv
Memoria stiv este o list liniar de date elementare, n care inserarea,
eliminarea i accesul la elementele de date se efectueaz la un singur capt al
acesteia. Stiva poate fi considerat o list de tip LIFO (Last-In, First-Out).
In funcie de modul de implementare, stiva poate fi de mai multe tipuri:
- Stiv software, organizat n memoria intern;
- Stiv cablat (hardware);
- Stiv parial cablat.
Indiferent de modul de implementare, o stiv trebuie s permit efectuarea
urmtoarelor operaii:
- Introducere (inserare): PUSH;
- Extragere (eliminare): POP;
- Acces la elementul din vrful stivei.
Memoria stiv este utilizat n special pentru memorarea rapid a contextului
unui program n cazul apariiei unei situaii de excepie sau pentru modul time
sharing.

6.5.1. Tipuri de memorii stiv

- Stiva implementat n memorie (stiv software)
Stiva poate fi simulat n memoria intern a calculatorului, utilizndu-se
adresarea convenional. Gestionarea stivei se poate realiza prin software,
existnd instruciuni speciale i registre dedicate pentru operaiile cu stiva (figura
6.5).

Fig. 6.5

Stiva poate fi definit cu ajutorul a dou registre ale procesorului. Registrul
BP indic baza stivei, iar registrul SP indic vrful stivei. Adresa de baz a stivei
rmne fix, n timp ce adresa care indic vrful stivei se modific la fiecare
operaie de introducere sau eliminare din stiv. Instruciunile speciale de lucru cu
stiva modific automat coninutul registrului SP.
De obicei, stivele cresc spre adrese mici, elementul din vrful stivei avnd
adresa cea mai mic, dar exist i stive care cresc spre adrese mari.
Presupunnd c stiva crete spre adrese mici, iar SP indic elementul din
vrful stivei, instruciunea de introducere a unui element n stiv (PUSH)
decrementeaz registrul SP i copiaz elementul respectiv n stiv. Instruciunea
de extragere a unui element din vrful stivei (POP) copiaz acest element ntr-un
registru de memorie i incrementeaz registrul SP.
In cazul stivei simulate n memorie, pe lng operaiile obinuite cu stiva, se
pot citi sau modifica elemente oarecare din stiv, prin adresarea lor relativ fa de
registrul de baz al stivei (BP).

- Stiva cablat
Spre deosebire de stiva simulat n memorie, la care vrful stivei se
deplaseaz n timp ce informaiile din stiv rmn fixe, n cazul stivei cablate exist
un vrf fix i informaiile din stiv sunt translatate la fiecare operaie de introducere
sau eliminare din stiv.
Stivele cablate pot avea un registru de stare asociat, care indic dac stiva
este goal (EMPTY) sau plin (FULL). La ncercarea de extragere a unui element
din stiva goal se poate activa un semnal de eroare UNDERFLOW, iar la
ncercarea de introducere a unui element n stiva plin se poate activa un alt
semnal, OVERFLOW.
Stivele cablate au avantajul unei viteze ridicate de efectuare a operaiilor,dar
dimensiunea acestora este limitat.

- Stiva parial cablat
Dac dimensiunea stivei cablate este redus, pentru cazurile de depire de
capacitate a stivei cablate, este indicat completarea acesteia cu o stiv simulat
n memoria intern (figura 6.6).

Fig. 6.6

Acest tip de stiv combin viteza de lucru ridicat a stivei cablate cu
capacitatea nelimitat a stivei software.

6.6 Memoria cache

6.6.1 Principii
Deoarece accesul la memoria principal necesit un timp considerabil mai
mare comparativ cu viteza global a unui procesor, este important s se
proiecteze un sistem de memorie cu un timp de acces ct mai redus. O
posibilitate de a crete viteza global a sistemului de memorie este de a se
reduce numrul de accesuri la memoria principal. Acest deziderat poate fi
realizat prin instalarea unei memorii rapide de mici dimensiuni care s conin,
n fiecare moment, o parte din program. In acest mod, datorit proprietii de
localitate a referinelor, numrul referinelor la memoria principal va fi redus n
mod considerabil.
O asemenea memorie rapid, utilizat temporar pentru pstrarea unei
poriuni a datelor i instruciunilor n vederea utilizrii imediate, este cunoscut
sub numele de memorie cache.
Deoarece memoria cache are un pre ridicat, un sistem de calcul poate
avea doar o memorie cache cu o dimensiune limitat. Pentru acest motiv, un
sistem de calcul conine o memorie principal mai lent i de dimensiuni relativ
mari, mpreun cu o memorie cache mai rapid i de dimensiuni mai mici.
Memoria cache este amplasat ntre memoria principal i UCP i conine copii
ale anumitor blocuri ale memoriei principale. Astfel, atunci cnd UCP solicit un
cuvnt i acest cuvnt se afl n memoria cache rapid, nu va mai fi necesar
accesul la memoria principal.
Dei dimensiunea memoriei cache este doar o mic parte din dimensiunea
memoriei principale, datorit proprietii de localitate a referinelor, o mare parte
din cererile de acces la memorie vor fi satisfcute de memoria cache.
Performana unui sistem poate fi mbuntit n mod semnificativ dac
memoria cache este amplasat n acelai circuit integrat cu procesorul. In acest
caz, ieirile memoriei cache pot fi conectate la UAL i la registre prin legturi
scurte, reducnd timpul de acces. Aceasta este soluia adoptat la majoritatea
procesoarelor actuale.

6.6.2. Organizarea memoriei cache
Figura 6.7 prezint componentele principale ale unei memorii cache.
Cuvintele de memorie sunt pstrate ntr-o memorie de date i sunt grupate n
pagini de dimensiuni reduse, numite blocuri sau linii. Coninutul memoriei de
date este copia unui set de blocuri ale memoriei principale. Fiecare bloc al
memoriei cache este marcat cu adresa sa de bloc, numit marcaj (tag).

Fig. 6.7

Colecia adreselor de marcaj asignate momentan memoriei cache, adrese
Succes
Memorie de
marcaje


Memorie
de date
Date Control Adrese
Memorie cache M
1
care pot fi necontigue, este pstrat ntr-o memorie special, numit memorie
de marcaje sau director.
Pentru a mbunti performanele unui calculator, timpul necesar pentru
testarea adreselor de marcaj i accesarea memoriei cache de date trebuie s fie
mai redus dect timpul necesar pentru accesarea memoriei principale. Figura
6.8 prezint dou moduri de amplasare a unei memorii cache ntr-un sistem de
calcul. In organizarea din figura 6.8a, numit organizare "look-aside", memoria
cache i memoria principal sunt conectate direct la magistrala sistem. In acest
caz att cererile UCP ctre memoria cache ct i cele ctre memoria principal,
n caz de eec, utilizeaz magistrala sistem. De notat c, att n caz de succes
ct i n cazul eecurilor la accesul memoriei cache, operaiile de transfer ocup
magistrala sistem, care nu va fi disponibil pentru alte operaii, cum sunt
transferurile de I/E.

Fig. 6.8a

Fig. 6.8b

In figura 6.8b se prezint o alt organizare, care este mai rapid, dar mai
costisitoare; aceasta este numit organizare "look-through". UCP comunic cu
memoria cache printr-o magistral separat (local) care este izolat de
magistrala sistem. In acest mod magistrala sistem este disponibil pentru
utilizarea de ctre alte uniti, cum sunt controlere de I/E, care pot comunica cu
memoria principal. Prin urmare, accesurile la memoria cache i accesurile la
Acces la
memoria principal
Acces la
memoria
cache



UCP


Memorie
principal
M
2
Magistrala
sistem
nlocuire
bloc
Memoria
Cache M
1
Magistrala
sistem
Acces M
2
la
magistrala sistem
Acces la
memoria
cache


UCP


Memorie
principal
M
2
nlocuire bloc
Memoria
Cache M
1
Controler
memorie
cache
Controler
memorie
principal
memoria principal care nu implic UCP se pot desfura concurent. UCP
transmite o cerere ctre memoria principal numai dup un eec la accesul n
memoria cache. Magistrala local care conecteaz
1
M i
2
M poate avea o
lime mai mare dect magistrala sistem, crescnd astfel viteza transferurilor
ntre memoria cache i cea principal.
Dezavantajul principal al organizrii "look-through", pe lng costul su
mai ridicat, const n faptul c este necesar un timp mai lung pentru ca memoria
principal s rspund la cererea UCP atunci cnd apare un eec la accesul
memoriei cache.

6.6.3 Funcionarea memoriei cache
Atunci cnd UCP genereaz o cerere de citire pentru un cuvnt din
memorie, cererea este trimis mai nti la memoria cache pentru a verifica dac
acest cuvnt se afl deja n aceast memorie. In cazul n care cuvntul nu este
gsit n memoria cache (deci, apare un eec la citire), cuvntul solicitat este
furnizat de memoria principal. O copie a acestui cuvnt, mpreun cu blocul din
care acesta face parte, este depus i n memoria cache pentru referinele
viitoare de ctre UCP. In cazul n care cuvntul este gsit n memoria cache
(deci, apare un succes la citire), cuvntul este furnizat de memoria cache.
Astfel, n aceast situaie, nu este necesar accesul la memoria principal. Prin
aceasta, viteza sistemului crete considerabil.
Figura 6.9 ilustreaz execuia unei operaii de citire pentru un sistem
simplu de memorie cache. In acest exemplu, se presupune o dimensiune a
blocului de memorie de 4 octei. Fiecare adres de memorie are dimensiunea
de 12 bii, astfel nct cei 10 bii de ordin superior formeaz marcajul sau adresa
blocului, iar cei 2 bii de ordin inferior definesc un deplasament (index) n cadrul
blocului. Atunci cnd un bloc este adus n memoria cache de date, marcajul
acestuia este plasat n memoria cache de marcaje. Figura 6.9 prezint
coninutul a dou blocuri aduse n memoria cache de date; de observat locaiile
acelorai blocuri din memoria principal. Pentru citirea cuvntului indicat de
sgeat, adresa acestuia
i
A = 1100 0101 0110 este transmis la
1
M care
compar partea de marcaj a adresei
i
A (n acest caz 1100 0101 01) cu
marcajele sale memorate i gsete o potrivire. Marcajul memorat adreseaz
blocul corespunztor din memoria de date, iar deplasamentul de 2 bii (n acest
caz 10) este utilizat pentru identificarea cuvntului destinaie din cadrul blocului.
Cuvntul selectat n acest mod (FF) este apoi transmis la UCP.
Atunci cnd UCP genereaz o cerere de scriere a unui un cuvnt n
memorie, cererea este trimis mai nti la memoria cache pentru a verifica dac
locaia acestui cuvnt se afl n memoria cache. In cazul n care locaia
cuvntului nu este gsit n memoria cache (deci, apare un eec la scriere), se
ncarc din memoria principal n memoria cache o copie a blocului cruia i
aparine locaia cutat. Apoi, se execut o operaie de scriere n aceast
locaie. Dac locaia adresat este gsit n memoria cache (deci, apare un
succes la scriere), se execut operaia de scriere direct n memoria cache.
Execuia unei operaii de scriere a unei date transmise de UCP pentru
memoria cache din exemplul precedent este ilustrat n figura 6.10. Partea de
marcaj a adresei destinaie
i
A (identic cu cea din exemplu anterior) este
transmis la
1
M mpreun cu cuvntul de date care trebuie memorat. Partea de
deplasament a adresei A
i
(10) localizeaz locaia din cadrul blocului selectat

Fig. 6.9

Deoarece locaia cutat este gsit n memoria cache, (a avut loc un
succes la scriere) noua dat, n acest caz 55, este memorat n locaia de la
adresa
i
A n memoria de date din
1
M , modificnd astfel vechea dat FF.
Apare acum o nou problem, deoarece data din
1
M cu adresa
i
A difer
de data din
2
M cu aceeai adres. O inconsisten temporar de acest tip este
acceptabil ct timp nici un dispozitiv (un alt procesor sau un dispozitiv de I/E)
nu ncearc citirea datei vechi. Prevenirea utilizrii improprii a datei vechi
reprezint problema coerenei (sau consistenei) memoriilor cache. Aceasta
este o problem de baz la sistemele multiprocesor, unde mai multe procesoare
partajeaz accesul la aceeai memorie principal, dar fiecare dispune de
propria memorie cache. Aceast problem apare de asemenea n sistemele
uniprocesor atunci cnd este prezent un controler sau procesor de I/E, care are
un acces direct la memoria principal, independent de UCP. Inconsistenele din
memoriile cache pot fi minimizate prin implementarea unei strategii care
actualizeaz n mod sistematic, datele din
2
M printr-un proces de copiere a
datelor corespunztoare din
1
M .
Adresa datei solicitate


1100 0101 11
1100 0101 01
11 10 01 00

39 FF 3D 1A
7B 5A F0 FF
1100 0101 0101
1100 0101 0110
1100 0101 0111
1100 0101 1000
1100 0101 1001
1100 0101 1010
1100 0101 1011
1100 0101 1100
1100 0101 1101
1100 0101 1110
1100 0101 1111

1100 0101 0100
1100 0101 0011
1100 0101 0010 78
CC
1A
3D
FF
F0
FF
00
87
B4
3C
39
5A
7B
1100 0110 0000
1100 0110 0001
67
D5
Selecie date
Comparaie
marcaje

Memorie de marcaje
Memorie de date
1100 0101 01 10 Data solicitat Adrese
memorie
principal
FF
Date
memorie
principal
Pentru executarea unei operaii de copiere (scriere), exist dou strategii
care pot fi utilizate: "write-back" i "write-through".



Fig. 6.10

- In cazul strategiei "write-back", numit i "copy-back", fiecrui cuvnt din
memoria cache i se asociaz un bit, numit bit de modificare (dirty bit) sau bit de
inconsisten, care arat dac acest cuvnt a fost modificat. Atunci cnd un
cuvnt trebuie eliminat din memoria cache, se testeaz bitul de modificare al
cuvntului; dac bitul este setat, cuvntul este scris n memoria principal n
forma sa actualizat. Avantajul strategiei "write-back" este c, att timp ct un
cuvnt rmne n memoria cache, acesta poate fi modificat de mai multe ori, iar
pentru UCP nu are importan dac cuvntul din memoria principal nu a fost
actualizat. Dezavantajul acestei strategii este c memoria cache i memoria
principal pot fi temporar inconsistente. Aceasta creeaz dificulti dac mai
multe procesoare cu memorii cache independente partajeaz aceeai memorie
principal, deoarece datele lor pot deveni inconsistente.
- In cazul strategiei "write-through", cuvntul este modificat att n
memoria cache, ct i n memoria principal la fiecare ciclu de scriere.
Avantajele acestei strategii constau n faptul c este uor de implementat i
memoria principal are ntotdeauna date consistente cu memoria cache. Pe de
alt parte, aceast strategie are dezavantajul c ncetinete UCP, deoarece

Adresa datei din UCP


1100 0101 11
1100 0101 01
11 10 01 00
7B 5A F0 FF
1100 0101 0101
1100 0101 0110
1100 0101 0111
1100 0101 1000
1100 0101 1001
1100 0101 1010
1100 0101 1011
1100 0101 1100
1100 0101 1101
1100 0101 1110
1100 0101 1111

1100 0101 0100
1100 0101 0011
1100 0101 0010 78
CC
1A
3D
FF
F0
FF
00
87
B4
3C
39
5A
7B
1100 0110 0000
1100 0110 0001
67
D5
Selecie date
Comparaie
marcaje

Memorie de marcaje
Memorie de date
1100 0101 01 10 Data din UCP Adrese
memorie
principal
Date
memorie
principal
55
39 55 3D 1A
toate operaiile de scriere necesit accesuri ulterioare la memoria principal.
Totui, numai o fraciune redus, probabil 10%, din toate accesurile la memorie
sunt operaii de scriere. Anumite procesoare permit utilizarea ambelor strategii
de scriere, astfel nct utilizatorul poate selecta strategia cea mai avantajoas
pentru un program particular.

6.6.4. Maparea adreselor
O caracteristic de baz a memoriei cache este funcia de mapare (de
translatare), care atribuie blocurilor din memoria principal locaii n memoria cache.
Se utilizeaz trei tipuri de mapare a adreselor:
1. Mapare asociativ;
2. Mapare direct;
3. Mapare cu seturi asociative.
Pentru a ilustra aceste trei tipuri de mapare ale adreselor, presupunem c
memoria principal are o capacitate de 64 K cuvinte de cte 16 bii fiecare, fapt
care nseamn c magistrala de adrese are 16 bii. De asemenea, presupunem
c memoria cache care poate pstra maxim 256 de cuvinte. Considerm c
UCP genereaz o cerere de citire. Cererea de scriere este gestionat ntr-un
mod similar. Vom urmri acum strategiile celor trei tipuri de mapare.

- Memorie cache cu maparea asociativ
In cazul unei memorii cache cu mapare asociativ (numit i memorie
cache cu asociativitate total), adresa i coninutul unei locaii de memorie sunt
memorate ca i cuvinte separate n memoria cache. Ca rezultat, un cuvnt de
memorie poate fi memorat n orice locaie a memoriei cache, ceea ce face ca
acest tip de memorie cache s fie cel mai flexibil. Figura 6.11 prezint
organizarea unei memorii cache cu mapare asociativ pentru sistemul
considerat.

Fig. 6.11

De observat c, indiferent de adresele lor absolute din memoria principal,
cuvintele sunt memorate n locaii arbitrare.
Adresele cuvintelor sunt memorate n partea asociativ, n timp ce datele
sunt memorate n partea de date (de tip RAM) a memoriei cache. Astfel, atunci
cnd UCP genereaz o adres pentru referina la memorie, aceasta este
transferat n registrul argument i este comparat simultan cu adresele tuturor
cuvintelor aflate n memoria cache. Dac s-a gsit locaia cu o adres care se
potrivete, datele corespunztoare pot fi accesate din memoria de date.
Dezavantajul principal al maprii asociative este c necesit o memorie
asociativ de dimensiuni mari, care este foarte costisitoare.

- Memorie cache cu maparea direct
Pentru implementarea maprii directe sunt necesare numai memorii de tip
RAM. Memoria cache
1
M este mprit ntr-un numr de regiuni numite seturi
de date, fiecare din acestea memornd n cuvinte de memorie consecutive.
Memoria principal
2
M este divizat similar n blocuri, fiecare dintre aceste
blocuri putnd fi mapat ntr-un set din
1
M .
Figura 6.12 reprezint arhitectura unei memorii cache cu mapare direct.,
Pentru simplificare considerm c un set al memoriei cache, ca i un bloc al
memoriei principale, conine un singur cuvnt de memorie (n=1). Pentru
implementarea maprii directe, adresele de memorie de 16 bii (4 cifre
hexazecimale) sunt divizate n dou pri: cei 8 bii de ordin inferior ai adresei
din memoria principal formeaz un cmp de index iar ceilali opt bii de ordin
Memorie cache M
1
Adresa UCP
(16bii)
0100





0900





25FF





FFFF





0000





3826



1234





3800





3675





0135




0900

25FF









0100
3800

3675









1234
Registru
argument
Memorie
asociativ
DATE
Memorie principal M
2

superior formeaz un cmp numit marcaj. Indexul identific n mod unic un set
al memoriei cache unde se poate memora un bloc din memoria M
2
. Dar n M
2

exist de regul mai multe blocuri de date cu acelai index. Pentru a preciza
blocul de date care trebuie referit se utilizeaz marcajul.
In afar de memoria de date aceast arhitectur mai conine o memorie
de marcaje i un circuit de comparare. Comparatorul activeaz linia de potrivire,
indicnd existena cuvntului adresat n memoria cache. La adresa specificat
de index, este memorat un marcaj n memoria de marcaje i un set de date n
memoria de date. Dac marcajul adresei de memorie solicitate se potrivete cu
marcajul din memoria cache, cuvntul din memoria de date este transmis la
UCP. In caz contrar, se acceseaz memoria principal, iar cuvntul cutat este
ncrcat i transmis la UCP.
In figura 6.12. este prezentat funcionarea unei memorii cache cu mapare
direct. Dac, de exemplu, UCP solicit citirea cuvntului de memorie de la
adresa 0900 indexul va fi 00 iar marcajul 09. Astfel, la adresa 00 din memoria
de marcaje se gsete valoarea 09 care corespunde cu marcajul cuvntului
solicitat. Rezult c, n acest caz, a fost nregistrat un succes la cutare i
coninutul memoriei de date de la indexul 00 (care este 3800) este preluat de
UCP. Dac apoi, UCP solicit citirea coninutului adresei 0000, indexul care
este 00 se potrivete, dar marcajul 00 este diferit. A fost nregistrat deci un eec
la cutare i, n consecin, este accesat memoria principal, iar cuvntul de
date 3826 este transferat la UCP. Cuvintele din memoria de marcaje i memoria
de date de la indexul 00 sunt nlocuite apoi cu 00 i respectiv 3826.
Avantajul maprii directe fa de maparea asociativ const n faptul c nu
necesit memorie asociativ, care este mult mai scump. Dezavantajul principal
este c performanele pot fi reduse considerabil dac dou sau mai multe
cuvinte avnd acelai index, dar marcaje diferite, sunt accesate n mod frecvent.
De exemplu, cuvintele de memorie de la adresele 25FF i FFFF trebuie plasate
ambele n memoria cache la indexul FF, astfel nct se pierde un timp important
pentru interschimbarea lor. Aceasta ncetinete sistemul, anulnd efectul
memoriei cache. Totui, considernd proprietatea de localitate a referinelor,
probabilitatea de a referi, n mod repetat, dou cuvinte cu acelai index este
redus.


Fig. 6.12

- Maparea cu seturi asociative (k-way set associative)
O metod mai eficient de mapare a adreselor pentru memoriile cache
este maparea cu seturi asociative. In timp ce la maparea direct fiecare set,
identificat de un anumit index, memoreaz un singur bloc din memoria M
2
, la
maparea cu seturi asociative fiecare set memoreaz un numr de k astfel de
blocuri. In practic sunt utilizate doar valori mici ale parametrului k, cum ar fi de
exemplu k=2 sau k=4.
De exemplu, o memorie cache cu seturi asociative cu k blocuri de
memorie, numit set asociativ cu k ci, poate memora k blocuri de date avnd
acelai index, mpreun cu marcajele lor.
Considerm din nou c un set conine un singur cuvnt de date. Fiecare
bloc din memoria cache are aceeai structur ca i o memorie cache cu mapare
direct. Pentru a determina dac un cuvnt adresat se afl n memoria cache,
marcajul acestuia este comparat n paralel (asociativ) cu marcajele datelor din
toate blocurile de memorie. O potrivire n oricare din blocurile de memorie
valideaz semnalul de potrivire pentru a indica existena cuvntului n memoria
cache.
Dac apare o potrivire, cuvntul corespunztor de date este transferat la
UCP. In caz contrar, cuvntul de date este ncrcat din memoria principal i
este transmis la UCP. Cuvntul de date, mpreun cu marcajul acestuia, este
depus apoi ntr-unul din blocurile de memorie.
00

01









FF
Adresa de la UCP
Memorie cache M
1
0301





0900





25FF





FFFF





0000





3826



1234





3800





3675





0135




09

03









25
3800

1234









3675
Memorie principal M
2

Marcaj Index

Date


Fig. 6.13

Un exemplu ilustrnd funcionarea memoriei cache cu seturi asociative
avnd dou blocuri este prezentat n figura 6.13. Indexului FF i corespunde
marcajul 25 n primul bloc i marcajul 9C n al doilea bloc, datele de la cele dou
adrese putnd fi astfel memorate simultan. S presupunem c la un moment dat
n primul bloc al memoriei cache este memorat cuvntul de date de la adresa
0900. Dac acum UCP solicit cuvntul de date de la adresa 0000, la indexul
00 nu gsete marcajul 00, astfel nct se nregistreaz un eec la cutare.
Cuvntul solicitat este deci adus din memoria principal i n acelai timp este
memorat i n cel de al doilea bloc al memoriei cache, astfel nct data de la
adresa 0900 nu trebuie nlocuit.
Atunci cnd nu exist spaiu pentru un anumit index n memoria cache,
unul din cele dou cuvinte de date stocate la acel index va fi nlocuit conform
unei strategii de nlocuire predefinite.

6.6.5. Strategii de nlocuire
Atunci cnd nu mai exist spaiu n memoria cache, trebuie s se utilizeze
o strategie de nlocuire a unui cuvnt de date existent cu o nou dat care este
accesat n acel moment.
Pentru a determina care cuvntul va fi eliminat din memoria cache se
utilizeaz una dintre urmtoarele strategii .
- nlocuirea aleatoare;
- nlocuirea cuvntului cel mai puin frecvent utilizat (LFU - Least
00

01









FF
Marcaj Date
Date
Adresa de la UCP
Memorie cache M
1
0301





0900





25FF





9CFF





0000





3826



1234





3800





3675





0135




09

03









25
3800

1234









3675
Memorie principal M
2

Marcaj Index

Index Marcaj












9C












0135
Frequently Used)
- nlocuirea cuvntului cel mai puin recent utilizat (LRU - Least Recently
Used).

Strategia nlocuirii aleatoare alege un cuvnt n mod aleator i nlocuiete
acel cuvnt cu data nou accesat. Aceast metod este uor de implementat
prin hardware i este mai rapid dect alte metode. Dezavantajul este c acele
cuvinte care sunt cel mai probabil de a fi utilizate din nou au aceeai ans de a
fi eliminate ca i cuvintele care probabil nu vor mai fi utilizate. Acest dezavantaj
se micoreaz pe msur ce dimensiunea memoriei cache crete.
Metod (LFU - Least Frequently Used) nlocuiete datele care sunt cel mai
puin utilizate. Metoda presupune c datele care nu sunt referite frecvent sunt
mai puin necesare. Pentru fiecare cuvnt, se pstreaz un contor al numrului
total de utilizri ale cuvntului de la ncrcarea acestuia n memoria cache.
Cuvntul cu valoarea cea mai mic a contorului este cel care va fi eliminat.
Avantajul acestei metode const n faptul c un cuvnt utilizat frecvent are o
probabilitate mai mare de a rmne n memoria cache dect un cuvnt care nu
a este utilizat frecvent. Un dezavantaj al acestei metode l reprezint faptul c
acele cuvinte care au fost ncrcate recent n memoria cache au o valoare mic
a contorului, n ciuda faptului c este probabil foarte ca ele s fie utilizate din
nou.
Metoda (LRU - Least Recently Used) are performana cea mai bun
raportat la cost comparativ cu celelalte tehnici, fiind implementat adesea n
sistemele reale. Ideea acestei metode de nlocuire const n faptul c un cuvnt,
care nu a fost utilizat pentru o perioad lung de timp, conform proprietii de
localitate temporal, are o ans mai redus de a fi utilizat n viitorul apropiat,.
Astfel, aceast metod reine cuvintele din memoria cache care au
probabilitatea cea mai mare de a fi utilizate din nou. In acest scop, se utilizeaz
un mecanism pentru a pstra evidena acelor cuvinte care au fost accesate cel
mai recent. Cuvntul care va fi eliminat este cuvntul care nu a fost utilizat
pentru perioada cea mai lung de timp. O posibilitate de a implementa un
asemenea mecanism este de a asigna un contor fiecrui cuvnt din memoria
cache. De fiecare dat cnd este accesat memoria cache, contorul fiecrui
cuvnt este incrementat, iar contorul cuvntului care a fost accesat este resetat
la zero. In acest fel, cuvntul cu contorul cel mai mare este cel care a fost
utilizat cel mai puin recent.


6.7. Memoria virtual

6.7.1. Principii
Memoria virtual permite sistemului de calcul utilizarea unei memorii cu o
dimensiune mult mai mare dect dimensiunea real fizic a memoriei principale.
Intr-un sistem de memorie virtual, memoria principal i cea secundar se
prezint pentru un program al utilizatorului ca o memorie unic, de dimensiuni
mari i adresabil direct.
Inaintea apariiei memoriei virtuale, dac spaiul de adrese al unui program
depea dimensiunea memoriei principale disponibile, programatorul era
responsabil pentru mprirea programului n fragmente mai mici, astfel nct
fiecare fragment s poat fi ncrcat n memoria principal. Toate aceste
fragmente erau pstrate n memoria secundar, de exemplu, pe disc, fiind
ncrcate n memoria principal pe msur ce erau necesare. Acest proces
necesita cunoaterea locului n care fragmentele trebuiau stocate pe disc,
cunoaterea operaiilor de intrare/ieire necesare pentru accesul fragmentelor i
pstrarea evidenei ntregului proces de fragmentare. Acesta presupunea
operaii foarte complexe, ceea ce complica i mai mult programarea unui
calculator.
Conceptul memoriei virtuale a fost creat n principal pentru a elibera
programatorul de aceast sarcin. Memoria virtual permite utilizatorului s
scrie programe care depesc limitele fizice ale memoriei principale. De
asemenea, memoria virtual permite multiprogramarea, prin care memoria
principal este partajat ntre mai muli utilizatori ntr-un mod dinamic. In cazul
multiprogramrii, poriuni ale mai multor programe sunt plasate n memoria
principal n acelai timp, iar procesorul i mparte timpul de execuie ntre
aceste programe. Procesorul execut un program pentru o perioad scurt de
timp (numit cuant de timp), iar apoi comut la un alt program; acest proces
continu pn cnd fiecare program este terminat.
Atunci cnd se utilizeaz memoria virtual, sistemul de memorie este
adresat printr-un set V de adrese logice sau virtuale, fiind numite astfel
deoarece, la execuia programului, ele sunt translatate, n adrese ale memoriei
fizice sau reale.
Un set de adrese fizice sau reale R identific locaiile fizice de memorare
din fiecare unitate de memorie. Adresele virtuale sunt generate de obicei n
timpul compilrii i sunt translatate de procesor n adrese fizice n timpul
execuiei. Un mecanism eficient pentru implementarea translatrii adreselor este
esenial pentru un sistem de memorie virtual. Cele dou metode principale
pentru implementarea unei memorii virtuale sunt paginarea i segmentarea.

6.7.2. Translatarea adreselor
Setul de locaii abstracte pe care le poate adresa un program reprezint
spaiul de adrese virtuale V al programului. Adresele virtuale pot fi specificate
explicit sau implicit de identificatorii pe care programatorul i asigneaz
variabilelor i etichetelor de instruciuni. Pentru execuia unui program pe un
anumit calculator, adresele sale virtuale trebuie translatate n spaiul de adrese
reale R, definit de memoria care este prezent fizic n calculator. Acest proces
este numit translatare a adreselor sau mapare a adreselor. Spaiul de adrese
reale R este o secven liniar de numere 0, 1, 2, ...., n-1, corespunznd
locaiilor adresabile de memorie i este distribuit pe toate nivelurile ierarhiei de
memorii. Spaiul de adrese virtuale V este o colecie de liste, tablouri
multidimensionale i alte structuri neliniare, astfel nct este mult mai complex
dect R.
Asignarea i translatarea adreselor poate fi efectuat n diferitele etape ale
unui program i anume:
de ctre programator n timpul scrierii programului;
de ctre compilator n timpul compilrii programului;
de ctre programul utilitar care realizeaz ncrcarea programului ce
urmeaz s fie executat.
de ctre sistemul hardware i/sau software de gestiune a memoriei.
Specificarea explicit a adreselor reale de ctre programator a fost
necesar la primele calculatoare, care nu aveau un sistem hardware sau
software de gestiune a memoriei. In cazul calculatoarelor moderne,
programatorii utilizeaz n mod normal doar adrese virtuale. Un sistem hardware
sau software specializat determin n mod automat adresele reale cerute de
execuia programului.
Translatarea adreselor se numete static dac adresele virtuale sunt
convertit n adrese fizice n timpul compilrii. In acest caz adresele fizice rmn
constante pe toat durata execuiei programului.
Translatarea adreselor este dinamic dac spaiul adreselor virtuale este
modificat n timpul execuiei programului i n consecin convertirea acestora n
adrese fizice este, de asemenea, efectuat n timpul execuiei. Pentru
translatarea adreselor n timpul execuiei se utilizeaz uniti de gestiune a
memoriei (MMU - Memory Management Unit) implementate prin hardware.
Un program executabil cuprinde un set de blocuri care conin instruciunile
i datele programului. Fiecare dintre aceste blocuri este o secven de cuvinte
care trebuie memorate n locaii consecutive de memorie. Un cuvnt C dintr-un
bloc are propria adres real
r
A , utilizat de UCP pentru accesul la acest
cuvnt. Adresa real a cuvntului C este specificat prin adresa de baz B a
blocului care conine cuvntul, mpreun cu adresa relativ sau deplasamentul
D (numit i offset) al cuvntului din cadrul blocului, dup cum se arat n figura
6.14. Deci adresa real a unui cuvnt de memorie se calculeaz cu relaia:
D B A
r
+ =
Adesea B furnizeaz biii de ordin superior ai adresei reale, n timp ce D
furnizeaz biii de ordin inferior. In acest caz, adresa real este format simplu
prin concatenarea adresei de baz B i a deplasamentului D, un proces care nu
crete n mod semnificativ timpul pentru generarea adresei.

Fig. 6.14

Un mod simplu de implementare a translatrii adreselor este de a pstra
adresele de baz ale blocurilor ntr-o tabel de adrese ale memoriei controlat
de sistemul de gestiune a memoriei. Tabela poate fi pstrat n memorie, n
registrele UCP sau n ambele. Logica de generare a adreselor utilizat de UCP
const n calcularea adresei reale
r
A prin combinarea deplasamentului D cu
adresa de baz corespunztoare B.
Blocurile pot fi relocate cu uurin n memorie prin manipularea adreselor
de baz ale acestora. Figura 6.15 ilustreaz relocarea blocurilor utiliznd
modificarea adreselor de baz. Presupunem c dou blocuri sunt alocate n
memoria principal dup cum se arat n figura 6.15a. Se dorete ncrcarea
unui al treilea bloc
3
K n memoria principal, dar nu este disponibil un spaiu
liber contiguu cu o dimensiune suficient. O soluie la aceast problem const
n mutarea blocului
2
K , dup cum se arat n figura 6.15b, prin asignarea
acestuia a unei noi adrese de baz
2
B i rencrcarea blocului n memorie.
Astfel, se creaz un spaiu n care poate fi ncrcat blocul
3
K , prin asignarea
acestuia a unei adrese de baz corespunztoare.

a b
Fig. 6.15

L
2
B
3
B
2
B
1

L
1
B
2
B
1


Bloc K
1

Bloc K
2

L
3
L
1
L
2


Bloc K
2

Bloc K
1

Bloc K
3
Adresa
de baz B

Deplasament
D
C
0
C
1
C
i
C
m-1
0
1
i
m-1
B
B+1
B+i
B+m-1
Adres reala
(fizic) A
r
La amplasarea blocurilor n memorie, unitatea de gestiune a memoriei
trebuie s evite depirea limitelor unui bloc. O metod obinuit pentru
realizarea acestui deziderat este specificarea adresei maxime
i
L , numit adres
limit, pe care o poate accesa blocul. O alt posibilitate este de a se specifica
dimensiunea blocului. Adresa de baz
i
B i adresa limit
i
L , sunt memorate n
tabela de adrese ale memoriei. Fiecare adres real
r
A generat de bloc este
comparat cu
i
B i
i
L ; accesul la memorie este efectuat dac i numai dac
este satisfcut urmtoarea condiie:
i r i
L A B
Figura 6.16 indic modul n care unitatea de gestiune a memoriei
efectueaz translatarea adreselor. Adresa de intrare
v
A este o adres virtual
constnd dintr-o adres de baz virtual B
v
, concatenat cu un deplasament
D. Adresa de baz real asignat adresei virtuale
v
B este memorat ntr-o
tabel de adrese a memoriei principale. Aceast tabel poate avea dimensiuni
mari. Pentru creterea vitezei procesului de translatare, o parte a tabelei de
adrese ale memoriei este plasat ntr-o memorie de vitez ridicat din UCP,
numit buffer de translatare (TLB - Translation Look-aside Buffer). Intrarea n
TLB este deci partea adresei de baz
v
B a adresei virtuale
v
A , iar ieirea
acestuia este adresa de baz real corespunztoare
r
B . Aceast adres este
apoi concatenat cu partea de deplasament D din
v
A pentru a obine adresa
real complet
r
A .

Fig. 6.16

Dac adresa virtual
v
B nu este gsit n bufferul de translatare TLB,
atunci partea tabelei de adrese ale memoriei principale, care conine
v
B este
transferat mai nti din memoria extern n TLB. Deci, bufferul de translatare
are rolul unei memorii cache pentru translatarea adreselor. Din acest motiv,
bufferul de translatare este numit uneori memorie cache de adrese.

Buffer de translatare TLB
Deplasament
(offset) D


Adres real A
r

La sistemul
de memorie


Adres virtual A
v
Adres de
baz virtual B
v

Adres de
baz real
B
r











6.7.3. Paginarea
Paginarea este tehnica de divizare a unui program (numit n continuare
proces) n blocuri mai mici cu dimensiuni identice i stocarea acestor blocuri n
memoria secundar sub forma unor pagini. Aceste pagini pot fi ncrcate apoi n
memoria principal n locaii, de aceeai dimensiune cu paginile, numite cadre
de pagin.

Fig. 6.17

Pentru ca aceast metod s funcioneze corect, fiecare proces trebuie s
pstreze n memoria principal o tabel de adrese ale nceputului fiecrui cadru
de pagin, numit tabel de pagini. n aceast tabel fiecrei adrese virtuale de
pagin i corespunde o adres real a unui cadru de pagin. Figura 6.17
ilustreaz modul n care funcioneaz metoda paginrii. S presupunem c se
caut adresa real a unui cuvnt de memorie a crui adres virtual a fost
generat de UCP. O adres virtual const din dou pri: o adres de baz i
un deplasament.
Registrul de baz conine adresa de nceput a tabelei de pagini a fiecrui
proces. Tabelele de pagini conin cte o fi (entry) pentru fiecare pagin care
aparine procesului. Aceste fie conin, de obicei, un cmp de prezen de un
bit, un cmp de acces i un cmp de adres. Cmpul de prezen P specific
dac pagina a fost ncrcat n memoria principal. Cmpul de acces specific
Adresa virtual generat de UCP
Adresa real
Memoria principal
+
*

Tabela de pagini
P Acces Adresa


Cadru de pagin i
Cadru de pagin i +1
Dimens. cadru Registru de baz
Adresa de baz Deplasament
Adresa de baz
real a paginii
tipul operaiilor care pot fi executate asupra paginii. Acest cmp determin dac
pagina poate fi doar citit (R/O - Read Only) sau citit i scris (R/W
Read/Write). Cmpul de adres specific numrul cadrului n care este
ncrcat pagina. Adresa real de nceput a cadrului de paginii, n memoria
principal, este determinat nmulind numrul cadrului cu dimensiunea
cadrului. In continuare la adresa real a nceputului de cadru se adun
deplasamentul i se obine adresa real a cuvntului solicitat.
Atunci cnd se solicit un cuvnt de memorie care nu este ncrcat n
memorie, este raportat o lips de pagin (page fault) iar pagina care conine
cuvntul solicitat este ncrcat n memorie. Pagina este depus ntr-un cadru
liber, dac un asemenea cadru exist. Dac nu exist un cadru liber trebuie
selectat una din paginile procesului, care va fi tears, iar noua pagin va fi
memorat n locul acesteia. Criteriul pentru selectarea paginii care se va nlocui
constituie strategia de nlocuire sau algoritmul de nlocuire.

Fig. 6.18

S considerm urmtorul exemplu. In figura 6.18 sunt prezentate
coninutul tabelelor de pagini pentru dou procese, Proces 1 i Proces 2.
Procesul 1 are trei pagini,
0
P ,
1
P i
2
P , iar procesul 2 are dou pagini,
0
P i
1
P .
Presupunem c toate paginile procesului 1 au acces numai pentru citire, iar
paginile procesului 2 au acces pentru citire i scriere. Adresa fizic de nceput a
fiecrui cadru se calculeaz nmulind numrul cadrului cu dimensiunea
acestora.
S presupunem c fiecare cadru are o dimensiune de 4 KB (4096 B).
12K
8K
0
4K

Nr. cadru
Memorie principal
Adres
fizic
Tabela de pagini
pentru procesul 2
Tabela de pagini
pentru procesul 1
Nr. pagin
Nr. pagin


Proces 1
P
0
P
1
P
2




P
0
P
1
Proces 2
0
P Acces Adres
P Acces Adres
1 R/O 1
0 R/O -
1 R/O 3
1 R/W 2
0 R/W -
1
2
0
1



P
0

P
0

P
2
3
2
1
0
Astfel, dat fiind faptul c paginile
0
P i
2
P ale procesului 1 sunt ncrcate
n cadrele 1 i 3, adresele de baz reale ale acestor cadre (n memoria
principal) vor fi 1 * 4096=4096, respectiv 3 * 4096=12288. Dac la adresa de
baz real a cadrului de adaug deplasamentul se obine adresa real a datei
solicitate de UCP.
Procesul de conversie a adreselor virtuale n adrese fizice poate fi efectuat
mai rapid prin utilizarea unui buffer de translatare TLB (Translation Look-aside
Buffer) care va memora o parte dintre fiele coninute de tabela de pagini a
procesului respectiv. Pentru micorarea timpului de rspuns al TLB acesta
poate fi implementat printr-o memorie asociativ.
Eficiena unui sistem de memorie virtual depinde de minimizarea
numrului lipsurilor de pagin. Deoarece timpul de acces al memoriei secundare
este mult mai ridicat dect timpul de acces al memoriei principale, un numr
excesiv al lipsurilor de pagin poate ncetini sistemul n mod semnificativ.
O problem special o ridic situaia n care una dintre paginile din
memoria principal a fost modificat. In aceast situaie pagina respectiv
trebuie copiat pe disc. Pentru a determina care pagin a fost modificat se
adaug la fiecare pagin un bit suplimentar numit bit de modificare sau bit de
inconsisten. Dac o anumit pagin a fost modificat, bitul corespunztor de
modificare este setat la 1. Dac bitul de modificare al unei pagini este 1 i
aceast pagin a fost selectat pentru a fi eliminat din memorie, atunci vor fi
necesare dou accesuri la disc: unul pentru salvarea respectivei pagini n
memoria secundar i nc unul pentru aducerea paginii noi n memoria
principal. Dac bitul de modificare este 0 (aceasta nsemnnd c nu au fost
modificri ale acestei pagini), nu este necesar scrierea paginii pe disc aceasta
putnd fi tears.

6.7.4. Segmentarea
O alt metod de implementare a memoriei virtuale este numit
segmentare. In acest caz, un program este mprit n seciuni de lungime
variabil numite segmente. Un segment poate corespunde unei entiti logice
cum ar fi un set de date sau o funcie n cadrul unui program. Fiecare proces
pstreaz o tabel de segmente n memoria principal, tabel care conine n
principiu aceleai informaii ca i tabela de pagini, ns, spre deosebire de
pagini, segmentele au lungimi diferite i ele pot ncepe n orice zon din
memorie. Pentru acest motiv, eliminarea unui segment din memoria principal
nu asigur ntotdeauna spaiu suficient pentru aducerea altui segment.
Un cuvnt dintr-un segment este referit specificnd o adres de baz,
numit adres de segment i un deplasament n cadrul segmentului. Un
program i datele sale pot fi considerate ca o colecie de segmente nlnuite.
Legturile provin din faptul c un segment de program utilizeaz sau apeleaz
alte segmente.
Avantajul principal al segmentrii const n faptul c limitele segmentelor
corespund limitelor programului i ale datelor. In consecin, informaiile care
sunt partajate ntre diferii utilizatori sunt organizate adesea n segmente. Din
cauza independenei logice ntre segmente, un segment de program poate fi
modificat i recompilat n orice moment fr a afecta alte segmente. Anumite
proprieti ale programelor, ca de exemplu, domeniul de definiie al unei
variabile sau drepturile de acces, pot fi specificate n mod natural de ctre
segmente. Aceste proprieti necesit ca accesurile la segmente s fie verificate
pentru a preveni utilizarea lor neautorizat.
Dezavantajul segmentrii const n utilizarea ineficient a memoriei
principale. La sistemele care utilizeaz segmentarea, blocurile de dimensiuni
diferite tind s prolifereze n memoria principal, lsnd ntre ele spaii
neutilizabile. Acestea pot fi eliminate prin procesul de compactare a memoriei.
Existena unui spaiu inutilizabil ntre zonele ocupate de segmente este numit
fragmentare extern. In cazul paginrii, deoarece cadrele de pagin sunt
contigue, fragmentarea extern nu apare.
Comparnd paginarea i segmentarea, paginarea necesit un sistem mai
simplu de alocare a memoriei dect segmentarea, deoarece paginile au aceeai
dimensiune. Pe de alt parte, paginile nu au semnificaie logic, deoarece ele
nu reprezint elemente de program.
Administrarea memoriei virtuale poate fi simplificat prin combinarea
segmentrii cu paginarea. Utiliznd aceast soluie se obine i o mai bun
utilizare a memoriei principale. Totui, dac un bloc de k cuvinte este mprit n
p pagini de cte n cuvinte, iar k nu este un multiplu de n, ultimul cadru de pagin
cruia i este asignat blocul nu va fi ocupat complet. Existena unui spaiu
inutilizabil n interiorul unui cadru de pagin ocupat parial este numit
fragmentare intern.

6.7.5. Paginarea i segmentarea
Paginarea i segmentarea pot fi combinate pentru a obine avantajele
ambelor soluii. In acest caz, fiecare segment este mprit n pagini. Avantajul
principal al divizrii unui segment n pagini este c se elimin necesitatea de a
plasa segmentul ntr-o zon contigu din memoria principal. In loc de aceasta,
este nevoie doar de un numr de cadre de pagin egal cu numrul paginilor n
care s-a mprit segmentul. Deoarece aceste cadre de pagin nu trebuie s fie
contigue, este mai uor de plasat un segment de dimensiuni mari n memoria
principal.
Atunci cnd paginarea este combinat cu segmentarea, o adres virtual
are trei componente: un index de segment SI , un index de pagin PI i un
deplasament (offset) D. In acest caz, tabela de adrese ale memoriei const din
una sau mai multe tabele de segmente i tabele de pagini. Pentru translatarea
rapid a adreselor, se pot utiliza dou buffere de translatare TLB, unul pentru
tabelele de segmente i unul pentru tabelele de pagini (figura 6.19).
Fiecare adres virtual A
v
, generat de un program, este translatat printr-
un proces n dou etape. Mai nti, se utilizeaz indexul de segment SI pentru a
citi tabela curent de segmente cu scopul de a obine adresa de baz PB a
tabelei de pagini necesare.
Aceast adres de baz este combinat cu indexul de pagin PI (care
este un deplasament n cadrul tabelei de pagini) pentru a genera o adres de
pagin, care este utilizat apoi pentru accesul la o tabel de pagini. Rezultatul
este o adres real de pagin, deci un numr al cadrului de pagin, care poate
fi combinat cu partea de deplasament D a adresei virtuale
v
A pentru a obine
adresa real final
r
A .


Fig. 6.19


6.7.6. Alocarea memoriei
Diferitele niveluri ierarhice ale unui sistem de memorie sunt mprite n
seturi de pagini sau segmente, care pstreaz blocuri de date. Blocurile sunt
transferate n mod automat ntre aceste niveluri n scopul minimizrii timpului de
acces al ierarhiei de memorie. Plasarea acestor blocuri ntr-un sistem de
memorie se numete alocarea memoriei. Metoda de selectare a prii memoriei
principale
1
M n care trebuie plasat un nou bloc K constituie strategia de
nlocuire. Strategiile simple de nlocuire plaseaz blocul K n memoria
1
M
numai atunci cnd este disponibil o regiune neocupat cu o dimensiune
suficient (alocare non-preemptiv). Alte strategii realizeaz realocarea
5
4
3
1
2
Cadru de
pagin


Index de
pagin PI


Index de
segment SI


Adres de baz a
tabelei de
pagini PB


Adres de baz a
tabelei de
segmente SB
pentru un proces


Deplasament
(offset) D


Adres real A
r

La sistemul
de memorie M


Adres virtual A
v

TLB
tabel de
segmente





TLB
tabel de
pagini



M
M
(mutarea) blocurilor existente n memorie pentru a face loc blocului K (alocare
preemptiv). In general, metodele de alocare ale memoriei care sunt eficiente
au ca efect o rat ridicat de succes i un timp mediu de acces sczut. O
alocare eficient a memoriei minimizeaz de asemenea spaiul neocupat din
memoria
1
M .
Atunci cnd un bloc este transferat din memoria
2
M n memoria
1
M ,
sistemul de gestiune a memoriei creaz o intrare corespunztoare n lista
spaiilor ocupate. Atunci cnd un bloc nu mai este necesar n memoria
1
M ,
acesta este eliberat (dealocat) i regiunea pe care o ocup este transferat din
lista spaiilor ocupate n lista spaiilor disponibile. Un bloc este dealocat atunci
cnd un program care l utilizeaz i termin execuia sau cnd blocul este
nlocuit de ctre un alt bloc.

6.7.6.1. Alocarea non-preemptiv
Presupunem c un bloc K
i
, de n
i
cuvinte trebuie transferat din memoria
2
M n
1
M . Dac nici unul din blocurile care ocup deja memoria
1
M nu poate fi
nlocuit de ctre blocul K
i
, atunci este necesar s se gseasc sau s se creeze
o regiune disponibil de n
i
, sau mai multe cuvinte, care permite plasarea
blocului K
i
. Acest proces este cunoscut ca alocare non-preemptiv a memoriei.
Alocarea non-preemptiv poate fi implementat mai simplu ntr-un sistem
cu paginare, unde toate blocurile (paginile) au o dimensiune fix. Harta
memoriei (tabela de pagini) este parcurs pentru a gsi un cadru de pagin
disponibil; dac se gsete unul, acesta este asignat blocului K
i
. Aceast
metod simpl de alocare este motivul principal al utilizrii pe scar larg a
paginrii. Dac spaiul de memorie este divizat n regiuni de lungime variabil
(segmente), devine ns mai dificil s se aloce n mod eficient noi blocuri.
Doi algoritmi utilizai pe scar larg pentru alocarea non-preemptiv a
blocurilor de dimensiune variabil (segmente care nu sunt paginate, de
exemplu) sunt primul potrivit, cel mai potrivit i cel mai nepotrivit.
Primul potrivit. Aceast metod plaseaz blocul dat n prima regiune liber
cu dimensiunea potrivit. Se parcurge harta memoriei n mod secvenial pn
cnd se gsete o regiune disponibil R
j
de n
i
sau mai multe cuvinte, iar apoi se
aloc blocul K
i
regiunii R
j
.
Principalul avantaj al acestei metode este c favorizeaz formarea unor
zone libere la adresele mari de memorie prin plasarea blocurilor la adresele
joase de memorie ori de cte ori este posibil. Totui, aceast metod produce
zone libere care pot fi prea mici pentru a pstra un bloc. Aceast problem este
cunoscut sub numele de fragmentare. Atunci cnd apare fragmentarea, pn
la urm trebuie rulat un anumit algoritm de compactare pentru a colecta toate
zonele libere de dimensiuni mici ntr-o zon cu dimensiunea mai mare. Aceasta
procedur poate reduce performanele.
Cel mai potrivit. Aceast metod aloc regiunea disponibil cu
dimensiunea cea mai mic, care este suficient de mare pentru a pstra blocul
dat. Ca i strategia primului potrivit, strategia celui mai potrivit produce de
asemenea, fragmentarea memoriei. Aceast strategie poate crea un numr
mare de blocuri mici care sunt inutilizabile n majoritatea cazurilor.
Comparnd algoritmii primului potrivit i celui mai potrivit, algoritmul
primului potrivit are avantajul timpului de execuie mai redus. Studiile de
simulare sugereaz c, n practic, algoritmul primului potrivit tinde s aib
performane mai bune dect algoritmul celui mai potrivit.
Cel mai nepotrivit. Aceast metod aloc, pentru blocul ce urmeaz s fie
adus n memorie, regiunea disponibil cu dimensiunea cea mai mare. Aceast
metod, ca i celelalte dou metode, produce fragmentarea memoriei. Totui,
spre deosebire de primele dou metode, metoda celui mai nepotrivit reduce
numrul regiunilor mici.

6.7.6.2. Alocarea preemptiv
Alocarea non-preemptiv nu poate utiliza eficient memoria n toate situaiile.
Este posibil s apar refuzarea unei cereri de alocare a memoriei datorit
spaiului insuficient, dei memoria M
1
este doar parial ocupat. Utilizarea mult
mai eficient a spaiului disponibil din memorie poate fi realizat prin relocarea
blocurilor existente n memorie M
1
, pentru a face loc blocurilor ce urmeaz a fi
aduse din memoria M
2
.
Dac, la aducerea unui bloc din memoria M
2
, nu se mai gsete totui un
spaiu suficient pentru acesta este necesar nlocuirea (dealocarea) unor
blocuri, neutilizate sau mai puin utilizate, din memoria M
1
. Metod preemptiv
necesit deci o strategie de selecie a blocurilor care trebuie dealocate.
Dealocarea necesit stabilirea unei distincii ntre blocurile care au fost
modificate de la ncrcarea lor n memoria
1
M i blocurile care nu au fost
modificate. Blocurile de instruciuni rmn nemodificate, n timp ce blocurile de
date pot fi modificate. Pentru nlocuirea unui bloc care nu a fost modificat,
sistemul de gestiune a memoriei poate nlocui n mod simplu blocul dealocat cu
noul bloc i poate actualiza intrarea acestuia n harta memoriei. nainte ca un
bloc modificat s fie nlocuit, acesta trebuie copiat n memoria
2
M .
Strategiile de nlocuire mai des utilizate sunt:
- FIFO (First-In, First-Out);
- LRU (Least Recently Used).
FIFO este una din cele mai simple strategii de nlocuire. Blocul selectat
pentru nlocuire este blocul cel mai puin recent ncrcat n memoria
1
M .
Avantajul strategiei FIFO const n faptul c este foarte simplu de implementat.
Fiecrui bloc i se asociaz un contor n lista spaiilor ocupate; contoarele
asociate cu blocurile indic secvena lor de ncrcare. De fiecare dat cnd un
bloc este transferat n memoria
1
M , contoarele indicnd secvena de ncrcare
sunt actualizate. Prin inspectarea acestor contoare, unitatea de gestiune a
memoriei poate determina cu uurin primul bloc care a fost ncrcat.
Dezavantajul strategiei FIFO este c poate mri n mod semnificativ timpul
necesar pentru execuia unui proces, deoarece poate nlocui cu aceeai
probabilitate blocuri utilizate intens i blocuri utilizate rar. De exemplu, dac un
bloc ncrcat n memorie de mai mult timp conine o variabil global care este
utilizat n mod constant, acest bloc va fi unul din primele care va fi nlocuit. La
urmtorul acces la variabila global, va apare o nou lips a blocului, iar blocul
va trebui rencrcat, nlocuind un alt bloc.
Strategia LRU (Least Recently Used) selecteaz pentru nlocuire blocul
care nu a fost utilizat de cel mai mult timp. Aceast strategie se bazeaz pe
presupunerea rezonabil c blocul cel mai puin recent utilizat este cel mai puin
probabil de a fi utilizat n viitor. Strategia LRU evit nlocuirea blocurilor
ncrcate de mai mult timp, dar frecvent utilizate, ca n cazul strategiei FIFO.
Totui, strategia LRU este mai dificil de implementat dect FIFO, deoarece
sistemul de gestiune a memoriei trebuie s pstreze informaii despre
momentele referinelor la toate blocurile din memoria
1
M . Strategia LRU poate fi
implementat prin asocierea unui contor hardware sau software pentru fiecare
bloc din
1
M . De fiecare dat cnd un bloc este referit, contorul acestuia este
setat la o valoare pozitiv predeterminat. La intervale fixe de timp, contoarele
tuturor blocurilor sunt decrementate. In orice moment, blocul cel mai puin
recent utilizat este cel al crui contor conine valoarea cea mai mic.

Cap. 7. SISTEME PIPELINE

Tehnica pipeline reprezint o metod de mbuntire a performanelor
unui procesor sau a unei uniti aritmetice prin executarea simultan a mai
multor instruciuni sau operaii. Aceast tehnic utilizeaz paralelismul, prin
suprapunerea fazelor de execuie ale instruciunilor sau a etapelor de execuie
ale unei operaii aritmetice. Un sistem pipeline poate fi comparat cu o linie de
asamblare a unui produs, n care exist mai multe posturi de lucru, fiecare dintre
acestea fiind specializat pentru o anumit operaie, iar la captul benzii este
obinut produsul final.

7.1. Structura unui sistem pipeline
Tehnica pipeline descompune un proces secvenial n mai multe
subprocese care sunt executate de uniti (etaje) diferite. Un etaj execut un
subproces i produce un rezultat intermediar, care reprezint o intrare pentru
etajul urmtor. Rezultatul final este obinut numai dup ce toate subprocesele
au trecut prin ntregul sistem pipeline. Figura 7.1 ilustreaz structura de baz a
unui sistem pipeline cu m etaje.


Fig. 7.1

Un etaj
i
E const dintr-un registru de intrare
i
R i un circuit de prelucrare
i
C care poate fi secvenial, combinaional sau inteligent. Registrele pstreaz
rezultatele pariale pe msur ce acestea se deplaseaz prin sistemul pipeline.
Un semnal comun de ceas determin ca registrele s i schimbe starea n mod
sincron. In fiecare ciclu de ceas, fiecare etaj transfer rezultatele sale pariale la
urmtorul etaj i calculeaz un nou set de rezultate. Perioada semnalului de
ceas trebuie s fie suficient de mare pentru ca etajul cel mai lent s termine
execuia operaiei sale. In plus, trebuie s existe un interval de timp suficient
pentru ca un registru s memoreze datele elaborate de etajul anterior. Deci,
perioada ceasului trebuie s fie mai mare dect ntrzierea maxim a etajului
cel mai lent, plus timpul necesar pentru memorarea datelor ntr-un registru.
Date de
intrare
Date de
ieire
Etaj E
1
Etaj E
2
Etaj E
m
R
1
R
2
R
m

C
1
C
2
C
m
Unitate de Control
Avantajul acestei tehnici const n faptul c un sistem pipeline cu m etaje
poate procesa simultan pn la m seturi independente de subprocese. Aceste
subprocese se deplaseaz prin sistemul pipeline etaj cu etaj astfel nct, atunci
cnd sistemul pipeline este plin, sunt executate n mod concurent m operaii
distincte, fiecare ntr-un etaj diferit. In acest mod un nou rezultat final este
generat la ieirea sistemului pipeline n fiecare ciclu de ceas.

7.2. Tipuri de sisteme pipeline
Sistemele pipeline sunt mprite, de obicei, n dou categorii: de
instruciuni i aritmetice. Un sistem pipeline de instruciuni este realizat pentru a
mbunti performanele unui calculator prin suprapunerea eficient a fazelor
de execuie ale instruciunilor. Sistemele pipeline aritmetice implementeaz
anumite funcii ale unitii aritmetice i logice cum ar fi adunarea, nmulirea i
mprirea n virgul mobil.
Un sistem pipeline din oricare categorie poate fi proiectat n dou moduri:
static sau dinamic.
Un sistem pipeline static poate executa un singur tip de operaie la un
moment dat. Operaia executat de un asemenea sistem poate fi schimbat
numai dup ce acesta este golit, atunci cnd ultimele date de intrare au trecut
prin toate etajele. De exemplu, s considerm un sistem pipeline static care
poate executa operaiile de adunare i nmulire. De fiecare dat cnd sistemul
pipeline comut de la o operaie de nmulire la una de adunare, acesta trebuie
golit i trebuie setat pentru noua operaie. Performanele sistemelor pipeline
statice vor fi reduse n mod semnificativ dac tipul operaiilor se modific n mod
frecvent.
Un sistem pipeline dinamic poate executa mai multe tipuri de operaii la un
moment dat. Pentru a executa o anumit operaie asupra unor date de intrare,
datele trebuie s parcurg anumite etaje ntr-o anumit ordine. S presupunem
c figura 7.2 reprezint un sistem pipeline dinamic cu trei etaje, care poate
executa adunarea i nmulirea n acelai timp asupra unor date diferite.
Pentru execuia operaiei de nmulire, datele de intrare trebuie s
parcurg etajele 1, 2 i 3; pentru execuia operaiei de adunare, datele trebuie
s parcurg numai etajele 1 i 3.
La intrarea etajului 1 se pot aplica dou seturi de date D
1
i D
2
. Deoarece
ambele seturi de date urmeaz s utilizeze etajul 3, intervalul de timp dintre
aplicarea datelor
1
D i
2
D la intrrile sistemului pipeline trebuie s fie astfel ales
nct aceste date s nu ajung n etajul 3 n acelai ciclu de ceas; n caz
contrar, apare o coliziune. In general, n cazul sistemelor pipeline dinamice
mecanismul care controleaz momentul n care datele trebuie aplicate la intrare
este mult mai complex dect n cazul sistemelor statice.


Fig. 7.2

7.3. Sisteme pipeline de instruciuni

7.3.1. Principi
In cazul unei arhitecturi von Neumann, procesul de execuie a
instruciunilor implic mai multe faze. Mai nti, unitatea de control a
procesorului ncarc instruciunea din memoria cache sau din memoria
principal. Apoi, unitatea de control decodific instruciunea pentru a determina
tipul operaiei care trebuie executat. Dac operaia necesit operanzi, unitatea
de control determin adresa fiecrui operand dup care i ncarc din memoria
cache sau din memoria principal. Operaia este apoi executat i, n sfrit,
rezultatul este memorat n locaia specificat.
Un sistem pipeline de instruciuni mbuntete performanele unui
procesor prin suprapunerea prelucrrii mai multor instruciuni diferite. Acest
lucru se realizeaz prin divizarea procesului de execuie a instruciunilor n mai
multe faze. Un sistem pipeline de instruciuni este n mod normal transparent
programatorilor i este gestionat automat de ctre unitatea de control a UCP i
de ctre compilatoare.
In general execuia unei instruciuni se poate descompune n urmtoarele
operaii simple:
1. Extragerea instruciunii (IF - Instruction Fetch): aducerea instruciunii din
memoria cache sau din memoria principal.
D
1
, D
2
Intrare
Ieire
Etaj 1
Etaj 2
Etaj 3
Registru
Registru
Registru
Circuit de
prelucrare
Circuit de
prelucrare
Circuit de
prelucrare
2. Decodificarea instruciunii (ID - Instruction Decoding): identificarea
operaiei care trebuie executat.
3. ncrcarea operanzilor (OF - Operand Fetch): adresarea i citirea
operanzilor necesari.
4. Execuia instruciunii (EX - Execution): executarea operaiei specificate
asupra operanzilor.
5. Scrierea rezultatelor (WB - Write-Back): actualizarea operanzilor
destinaie.
Figura 7.4 prezint un sistem pipeline de instruciuni cu cinci etaje, fiecare
etaj avnd ca obiectiv executarea uneia dintre operaiile precizate mai sus. Un
sistem pipeline de instruciuni suprapune operaiile executate de aceste etaje
asupra unor instruciuni diferite cu scopul de a obine, pentru o secven de
instruciuni, un timp total de execuie mult mai redus.


Fig. 7.4

Ca un exemplu, se consider figura 7.5, care prezint execuia unei
secvene de patru instruciuni.


Registru
Registru
Registru
Registru
Registru
Etaj 1
Etaj 2
Etaj 3
Etaj 4
Etaj 5
Registre, memorii
cache, memorie
principal a
Extragere instruciune IF
Decodificare instruciune ID
ncrcare operanzi OF
Execuie EX
Scriere rezultate WB

Fig. 7.5

In timpul primului ciclu, (o perioad de ceas) instruciunea
1
i este ncrcat
din memorie. In cel de-al doilea ciclu, instruciunea
1
i este decodificat n timp
ce instruciunea
2
i este ncrcat din memorie. Acest proces continu pn
cnd toate instruciunile sunt executate. Ultima instruciune se termin dup opt
cicluri de ceas.
Dei, prin utilizarea tehnicii pipeline, crete viteza de execuie a
instruciunilor, aceast tehnic poate pune anumite probleme. Unele din aceste
probleme i soluiile posibile sunt prezentate n seciunile urmtoare.

7.3.2. Indisponibilitatea instruciunilor (The fetching problem)
In general, furnizarea rapid a instruciunilor pentru un sistem pipeline este
costisitoare din punct de vedere al resurselor necesare. O metod simpl pentru
mbuntirea gradului de utilizare al unui sistem pipeline este utilizarea
bufferelor pentru memorarea instruciunilor i a datelor care vor fi transmise la
intrarea sistemului. Gradul de utilizare al unui sistem pipeline este definit ca
raportul ntre timpul n care etajele sistemului sunt utilizate i timpul total. Un
sistem pipeline este utilizat 100% din timp dac fiecare etaj este utilizat n
fiecare ciclu de ceas.
In unele situaii, sistemul pipeline trebuie golit i rencrcat, de exemplu,
atunci cnd apare o instruciune de salt sau o ntrerupere. Timpul necesar
pentru rencrcare poate fi minimizat prin ncrcarea n avans a instruciunilor i
a datelor n memoria cache din cadrul procesorului, fapt care va permite
transferul acestora imediat la intrarea sistemului pipeline. Dac instruciunile i
datele necesare execuiei vor fi ncrcate i memorate n memoria cache nainte
ca acestea s fie necesare, sistemul pipeline va avea o surs continu de
informaii. Utilizarea unor algoritmi de prencrcare adecvai asigur faptul c
instruciunile potenial necesare vor fi disponibile n majoritatea timpului.
Dac, n schimb, nu este asigurat un flux continuu de instruciuni sau
operanzi, sistemul pipeline nu va fi alimentat corespunztor i vor exista etaje
care nu lucreaz n fiecare ciclu de ceas. In aceast situaie gradul de utilizare
al sistemului va scdea.

7.3.3. ntrzierea introduse de etaje (bottleneck problem)
Aceast problem se refer la complexitatea operaiilor executate de
etajele sistemului pipeline. Dac un etaj execut operaii mai complexe fa de
Cicluri 1 2 3 4 5 6 7 8
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
i
3
IF ID OF EX WB
i
4
IF ID OF EX WB
alte etaje, timpul necesar pentru terminarea acestor operaii va crete. Ca
urmare, perioada ceasului trebuie aleas n funcie de acest timp, ceea ce
reduce performanele ntregului sistem. O soluie posibil a acestei probleme
este divizarea etajului respectiv n mai multe etaje. O alt soluie este de a se
realiza mai multe copii ale acestui etaj, care s execute n paralel respectiva
operaie.

7.3.4 Emiterea instruciunilor (The issuing problem)
Aceast problem apare atunci cnd o instruciune disponibil nu poate fi
executat. Cauzele care pot genera o astfel de situaie sunt urmtoarele:
- resursa necesar nu este disponibil (hazard structural); (n acest
context, prin resurs se nelege o unitate hard)
- exist o dependen de o instruciune anterioar (hazard de date);
- intervenia instruciunilor de salt care modific succesiunea de execuie a
instruciunilor (hazardul de control).

7.3.4.1 Hazardul structural
Hazardul structural se refer la situaia n care o resurs necesar nu este
disponibil pentru execuia instruciunii. Un hazard structural apare ca rezultat al
conflictelor la accesarea resurselor ntre instruciuni. Un tip de hazard structural
care poate apare se datoreaz modului de proiectare al unitilor de execuie.
Dac o unitate de execuie, care necesit mai multe cicluri de ceas, nu este de
tip pipeline i nu exist mai multe uniti de acelai tip, atunci nu se pot lansa n
execuie mai multe instruciuni care utilizeaz aceast unitate.
Un alt tip de hazard structural care poate apare se datoreaz proiectrii
setului de registre. Dac un set de registre nu are mai multe porturi de
citire/scriere, atunci operaiile multiple de citire/scriere nu pot fi executate
simultan. De exemplu, n anumite situaii sunt necesare dou operaii de scriere
n registre n acelai ciclu de ceas. Aceste operaii nu sunt posibile dac setul
de registre are un singur port de scriere.
Efectul unui hazard structural poate fi eliminat n mod simplu prin
implementarea unitilor de execuie multiple i prin utilizarea unui set de
registre cu porturi multiple de citire sau scriere.

7.3.4.2. Hazardul de date
Hazardul de date apare atunci cnd exist dependene de date ntre
instruciunea curent i o instruciune precedent. In cazul unui procesor care
nu utilizeaz tehnica pipeline, instruciunile sunt executate secvenial, iar
execuia unei instruciuni este terminat naintea nceperii execuiei urmtoarei
instruciuni. Astfel, instruciunile sunt executate n aceeai ordine n care apar n
program. Situaia este diferit n cazul unui procesor care utilizeaz tehnica
pipeline, la care execuia instruciunilor este suprapus. O instruciune poate fi
lansat n execuie i terminat naintea terminrii instruciunii precedente.
Hazardul de date, cunoscut i sub numele de problema dependenei datelor,
apare ca rezultat al suprapunerii execuiei (sau schimbrii ordinii de execuie) a
instruciunilor ntre care exist dependene de date. Pentru a nelege aceast
problem s considerm c ntr-un program apare urmtoarea secven de
instruciuni:
:
1
i ADD R2, R3, R4 ; R2=R3+R4
:
2
i ADD R5, R2, R1 ; R5=R2+R1
Instruciunea
2
i depinde de
1
i , deoarece utilizeaz rezultatul instruciunii
1
i
(coninutul registrului R2) ca o dat de intrare. In figura 7.6 este prezentat
execuia celor dou instruciuni n sistemul pipeline considerat.

Cicluri 1 2 3 4 5 6
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
Fig. 7.6

Dup cum se constat instruciunea
2
i ajunge n faza OF nainte ca
1
i s
treac prin faza WB. Aceast situaie conduce la utilizarea vechiului coninut al
registrului R2 pentru calcularea unei noi valori a variabilei R5 i deci, la un
rezultat invalid. Pentru a se obine un rezultat valid, instruciunea
2
i nu trebuie
s ajung n faza OF pn cnd
1
i nu trece prin faza WB. In timpul execuiei
problema semnalat poate fi rezolvat n dou moduri (figura 7.7):
- execuia fazei OF a instruciunii
2
i este ntrziat cu dou cicluri cu ceas
sau
- lansarea n execuie a instruciunii
2
i este ntrziat cu dou cicluri de
ceas.
In ambele cazuri faza OF a instruciunii
2
i este executat dup ce
coninutul registrului R2 a fost reactualizat de faza WB a instruciunii
1
i .

Cicluri 1 2 3 4 5 6 7 8
i
1
IF ID OF EX WB
i
2
IF ID - - OF EX WB

Cicluri 1 2 3 4 5 6 7 8
i
1
IF ID OF EX WB
i
2
- - IF ID OF EX WB
Fig. 7.7

Pentru realizarea acestor ntrzieri, se adug la sistemul pipeline un
circuit suplimentar, numit circuit de interblocare (pipeline interlock). Acest circuit
detecteaz dependenele ntre date i ntrzie instruciunile dependente pn la
rezolvarea conflictului.
O alt posibilitate const n rezolvarea acestui tip de hazard n timpul
compilrii. Compilatorul detecteaz aceste dependene i rearanjeaz
instruciunile astfel nct hazardurile de date s fie eliminate.
De exemplu, considerm cele patru instruciuni de mai jos. Dup cum se
poate observa exist un conflict de date ntre instruciunile
1
i i
2
i . Acest conflict
poate fi eliminat prin reordonarea instruciunilor astfel nct instruciunile
3
i i
4
i ,
care nu sunt dependente de
1
i i
2
i , s fie inserate ntre acestea din urm.
(figura 7.8).
1
i : ADD R2, R3, R4 ; R2=R3+R4
2
i : ADD R5, R2, R1 ; R5=R2+R1
3
i : ADD R6, R6, R7 ; R6=R6+R7
4
i : ADD R8, R8, R7 ; R8=R8+R7

Cicluri 1 2 3 4 5 6 7 8
i
1
IF ID OF EX WB
i
3
IF ID OF EX WB
i
4
IF ID OF EX WB
i
2
IF ID OF EX WB

Fig. 7.8

Dac nu este posibil rearanjarea instruciunilor, ntrzierile necesare pot
fi realizate de ctre compilator prin inserarea un numr necesar de instruciuni
NOP (No Operation).
Exist trei tipuri principale de hazarduri de date: RAW (Read After Write),
WAR (Write After Read) i WAW (Write After Write). Numele hazardului indic
ordinea de execuie a operaiilor pentru a se obine un rezultat valid; dac
aceast ordine nu este respectat, se poate obine un rezultat invalid. Aceste
hazarduri sunt explicate n continuare. Se presupune c exist dou instruciuni
1
i i
2
i , iar
2
i trebuie executat dup
1
i .
RAW. Acest de hazard indic faptul c
2
i trebuie s citeasc sursa de
date dup ce
1
i a scris aceast dat. Dac aceast ordine nu este respectat se
produce un rezultat invalid deoarece data din locaia citit nu a fost
reactualizat.
De exemplu, n secvena urmtoare:
1
i : ADD R2, R3, R4 ; R2 =R3 +R4
2
i : ADD R5, R2, R1 ; R5 =R2 +R1
se poate obine un rezultat invalid dac
2
i citete registrul R2 nainte ca
1
i s
scrie n acest registru.
WAR. Acest hazard indic faptul c
2
i trebuie s scrie ntr-o anumit
locaie dup ce
1
i a citit data coninut n acea locaie. Dac aceast ordine nu
este pstrat coninutul acelei locaii de memorie este alterat. De exemplu, n
secvena:
1
i : ADD R2, R3 , R4 ; R2 =R3 +R4
2
i : ADD R4, R5, R6 ; R4 =R5 +R6
se poate obine un rezultat invalid dac
2
i scrie n registrul R4 nainte ca
1
i s
citeasc acest registru, caz n care instruciunea
1
i va utiliza un coninut incorect
al registrului R4.
WAW. Acest hazard indic faptul c
2
i trebuie s scrie ntr-o anumit
locaie dup ce
1
i a scris n aceeai locaie. De exemplu, n secvena:
1
i : ADD R2, R3, R4 ; R2 =R3 +R4
2
i : ADD R2, R5, R6 ; R2 =R5 +R6
valoarea din registrul R2 este recalculat de ctre
2
i . Dac ordinea de execuie
este inversat, iar
2
i scrie n registrul R2 nainte ca
1
i s scrie n acest registru,
R2 va conine o valoare incorect.
Hazardurile de tip WAR i WAW nu pot apare atunci cnd ordinea de
execuie a instruciunilor din program este pstrat.
In arhitecturile actuale, dependenele ntre instruciuni (Data Dependancy)
sunt verificate n mod static de compilator i/sau n mod dinamic (n timpul
execuiei) de circuite specializate.
Au fost dezvoltate numeroase tehnici statice de verificare a dependenelor
pentru a se utiliza avantajul paralelismului. Aceste tehnici pot detecta
majoritatea dependenelor. Totui, anumite dependene nu pot fi detectate la
compilare. De exemplu, nu este posibil s se determine ntotdeauna adresele
efective de memorie utilizate de instruciunile de ncrcare i memorare pentru a
putea detecta posibilele dependene ntre acestea. In cazul indirectrii, de
exemplu, adresele efective de memorie vor fi cunoscute numai dup execuia
instruciunii i, astfel, dependenele ntre instruciuni pot fi determinate numai n
mod dinamic. In general, verificarea dinamic a dependenelor are avantajul c
poate detecta dependenele care sunt imposibil sau dificil de detectat la
compilare. Pentru a se folosi avantajele ambelor metode, n practic se
utilizeaz adesea o verificare combinat (static i dinamic) a dependenelor.
Una dintre mai des utilizate tehnici pentru verificarea dinamic a
dependenelor este metoda tabelei de rezultate (scoreboard). Ideea de baz a
acestei metode este utilizarea unui mecanism pentru identificarea disponibilitii
operanzilor i a unitilor funcionale n calculele succesive.

7.3.5 Metoda tabelei de rezultate (Scoreboard)
Metoda tabelei de rezultate poate fi utilizat la calculatoarele ale cror
uniti funcionale multiple permit terminarea execuiei instruciunilor ntr-o
ordine diferit de cea n care apar n program. Conform acestei metode se
pstreaz n anumite buffere (care constituie tabela de rezultate) informaii
despre starea fiecrei instruciuni lansate n execuie, starea fiecrui registru i a
fiecrei uniti funcionale. Prin consultarea tabelei de rezultate unitatea de
comand poate determina dac, la un moment dat, trebuie s atepte pentru
execuia unei anumite instruciuni. Dac ateptarea nu este necesar, unitatea
funcional corespunztoare ncepe imediat execuia instruciunii. Dac trebuie
s se atepte (de exemplu, unul din operanzii de intrare nu este nc disponibil),
execuia noii instruciuni este ntrziat.
O tabel de rezultate este fi format din trei pri: starea instruciunilor,
starea unitilor funcionale i starea registrelor destinaie.
Figura 7.9 reprezint un instantaneu al coninutului acestor tabele pentru
urmtorul program care calculeaz expresia C+D+A*B.

LOAD R1, A
LOAD R2, B
LOAD R3, C
LOAD R4, D
MUL R5, R1, R2 ; R5 =A B
ADD R2, R3, R4 ; R2 =C +D
ADD R2, R2, R5 ; R2 =R2 +R5 =C +D +A * B

Starea instruciunilor

Instruciune

Lansat

Faza OF
terminat

Faza EX
terminat

Faza WB
terminat
LOAD R1, A Da Da Da Da
LOAD R2, B Da Da Da Da
LOAD R3, C Da Da Da Da
LOAD R4, D Da Da Da
MUL R5, R1, R2 Da Da
ADD R2, R3, R4 Da
ADD R2, R2, R5

Starea unitilor funcionale
ID
Unita-
te

Nume unitate

Ocupat
Registru
destinaie
Registre surs
RS
1
Disp Rs
2
Disp
1 LOAD/STORE Da R4
2 nmulire Da R5 R1 Da R2 Da
3 Adunare_1 Da R2 R3 Da R4 Nu
4 Adunare_2 Nu


Starea registrelor destinaie
R1 R2 R3 R4 R5 R6
ID unitate 3 1 2

Fig. 7.9

Presupunem c sistemul de calcul dispune de urmtoarele patru uniti
funcionale: o unitate de ncrcare i memorare - LOAD/STORE, o unitate de
nmulire, i dou uniti de adunare.
Tabela de stare a instruciunilor arat dac o instruciune este sau nu
lansat n execuie. Dac o instruciune este lansat n execuie, tabela arat n
care faz de execuie se afl instruciunea. Dup ce o instruciune este
ncrcat din memorie i decodificat, se va ncerca lansarea execuiei acesteia
utiliznd unitatea funcional corespunztoare. O instruciune va fi lansat n
execuie dac unitatea funcional este disponibil i nu exist alt instruciune
activ care utilizeaz acelai registru destinaie; n caz contrar, lansarea este
ntrziat. Cu alte cuvinte, o instruciune este lansat n execuie atunci cnd nu
exist hazarduri structurale i hazarduri WAW. Atunci cnd exist asemenea
hazarduri, lansarea n execuie acestei instruciuni i a instruciunilor urmtoare
este ntrziat pn cnd hazardurile sunt eliminate. In acest fel, instruciunile
dependente sunt lansate n execuie n ordinea n care apar n program, n timp
ce instruciunile independente pot fi executate ntr-o ordine diferit.
Tabela de stare a unitilor funcionale arat dac o unitate funcional
este ocupat sau nu. O unitate funcional este consider ocupat dac
execuia unei instruciuni de ctre aceast unitate nu a fost nc terminat.
Pentru o unitate ocupat, tabela identific, de asemenea, disponibilitatea
registrul destinaie i a registrelor surs. Un registru surs al unei uniti este
disponibil dac nu apare ca destinaie pentru nici o alt unitate anterioar, care
este n curs de execuie.
Tabela de stare a registrelor destinaie indic destinaia registrelor care nu
au fost nc nscrise. Pentru fiecare din aceste registre se identific unitatea
funcional activ care va executa scrierea n registru.
In timpul fazei de extragere a operanzilor, tabelele sunt monitorizate
pentru a determina dac registrele surs sunt disponibile pentru a fi citite de
ctre o unitate funcional activ. Dac nici unul din registrele surs nu este
utilizat ca registru destinaie de ctre alte uniti funcionale active, unitatea
citete operanzii din aceste registre i ncepe execuia operaiei. Dup
terminarea execuiei, tabela de rezultate testeaz dac exist hazarduri WAR
nainte de a permite scrierea rezultatului n registrul destinaie. Dac nu exist
hazarduri WAR, tabela de rezultate indic unitii funcionale s scrie rezultatul
n registrul destinaie.
In figura 7.9, tabelele indic faptul c execuia primelor trei instruciuni
LOAD a fost terminat i operanzii acestora au fost nscrii n registrul
destinaie. Ultima instruciune LOAD a fost lansat n execuie de ctre unitatea
LOAD/STORE (unitatea 1). La aceast instruciune, s-a terminat extragerea
operandului, dar nu s-a nscris nc operandul n registrul R4. Unitatea de
nmulire execut instruciunea MUL, iar prima instruciune ADD este transmis
unitii Adunare_1. Aceast unitate ateapt pentru ca registrul R4 s fie nscris
de ctre unitatea LOAD/STORE nainte de a ncepe execuia. Acest lucru este
necesar deoarece exist un hazard RAW ntre ultima instruciune LOAD i
prima instruciune ADD. In acest moment, a doua instruciune ADD nu poate fi
lansat n execuie, deoarece utilizeaz registrul R2 ca registru surs i
destinaie. Registrul R2 este ocupat n acest moment cu prima instruciune
ADD. Atunci cnd registrul R4 este nscris de unitatea LOAD/STORE, unitatea
Adunare_1 va ncepe execuia.
Ulterior coninutul tabelei de rezultate se modific. Dup cum se ilustreaz
n figura 7.10, dac unitatea LOAD/STORE (unitatea 1) a terminat execuia (a
nscris n R4 valoarea variabilei D), unitatea Adunare_1 poate termina faza de
ncrcare a operanzilor i ncepe faza de execuie. Dup terminarea execuiei
rezultatul poate fi nscris n registrul R2 deoarece unitatea de nmulire a
terminat faza de citire a operanzilor i este acum n faza de execuie. A doua
instruciune ADD va fi transmis acum unitii Adunare_2.
Ct timp unitatea de nmulire nu a citit coninutul registrului R2 unitii
Adunare_1 nu i se va permite scrierea rezultatului n registrul R2; aceasta
deoarece exist un hazard WAR ntre instruciunea MUL i prima instruciune
ADD.
Starea instruciunilor
Instruciune Lansat
Faza OF
terminat
Faza EX
terminat
Faza WB
terminat
LOAD R1, A Da Da Da Da
LOAD R2, B Da Da Da Da
LOAD R3, C Da Da Da Da
LOAD R4, D Da Da Da Da
MUL R5, R1, R2 Da Da Da
ADD R2, R3, R4 Da Da Da Da
ADD R2, R2, R5 Da

Starea unitilor funcionale
ID
unitate
Nume
unitate
Ocupat Registru
destinaie
Rd
Registre surs
Rs
1
Disp Rs
2
Disp
1 LOAD/STOR
E
Nu
2 nmulire Da R5 R1 Da R2 Da
3 Adunare_1 NU
4 Adunare_2 Da R2 R2 Da R5 Nu

Starea registrelor destinaie
R1 R2 R3 R4 R5 R6
ID
unitate
4 2

Fig. 7.10

Componenta principal n cazul metodei tabelei de rezultate este tabela
de stare a registrelor destinaie. Aceast tabel este utilizat pentru a soluiona
hazardurile de date ntre instruciuni. De fiecare dat cnd o instruciune este
lansat n execuie, registrul destinaie al instruciunii este marcat ca fiind
ocupat. Registrul destinaie rmne ocupat pn cnd execuia instruciunii este
terminat. Atunci cnd se pregtete lansarea unei noi instruciuni, sunt testai
operanzii acesteia pentru a nu exista conflicte ntre registre cu instruciunile
precedente a cror execuie nu a fost terminat.

7.5. Hazardul de control
Hazardul de control se refer la situaia n care o anumit instruciune,
cum ar fi o instruciune de salt, modific fluxul execuiei programului.

7.5.1. Instruciuni de salt
In orice limbaj de programare, salturile determin modificarea ordinii sec-
veniale de execuie a instruciunilor. In general, n jur de 20 - 30% din totalul in-
struciunilor dintr-un program sunt salturi. Pentru acest motiv, instruciunile de
salt executate de un sistem pipeline pot reduce n mod semnificativ rata de pre-
lucrare. Ori de cte ori este executat un salt, trebuie s se ncarce o nou adre-
s n contorul de program, ceea ce poate invalida toate instruciunile a cror
execuie a nceput sau cele care au fost prencrcate ntr-un buffer. Aceast go-
lire a etajelor pipeline la fiecare salt reduce performanele sistemului. De notat
c un salt condiionat, care nu este executat permite continuarea execuiei sec-
veniale a instruciunilor, deci aceast problem apare numai n cazul n care
saltul este executat.
In general, instruciunile de salt se pot clasifica n trei categorii:
1) Salturi necondiionate;
2) Salturi condiionale;
3) Bucle.
Un salt necondiionat modific ntotdeauna ordinea secvenial de execu-
ie i, n loc de a incrementa contorul de program, ncarc adresa destinaiei sal-
tului n acesta.
Un salt condiionat ncarc adresa destinaiei n contorul de program nu-
mai dac o anumit condiie, bazat pe starea unor indicatori de condiii, este
ndeplinit. In caz contrar, contorul de program este incrementat ca de obicei.
Cu alte cuvinte, un salt condiionat selecteaz o cale de urmat pe baza unei
condiii. In cazul n care condiia este ndeplinit, aceast cale ncepe de la
adresa destinaiei saltului i este numit cale destinaie. In caz contrar, aceast
cale ncepe de la urmtoarea instruciune i este numit cale secvenial.
O instruciune de buclare determin de obicei saltul la nceputul buclei, ca-
re este executat de un anumit numr de ori, fix sau variabil.
Dintre aceste tipuri de salturi, salturile condiionate sunt cel mai dificil de
gestionat. Ca un exemplu, considerm urmtoarea secven de instruciuni:

i
1
i
2
(salt condiionat la i
5
)
3
i
i
4
i
5
(destinaie)
i
6

Figura 7.11 prezint execuia acestei secvene de instruciuni ntr-un sis-
tem pipeline atunci cnd se selecteaz calea destinaie. In aceast figur, c in-
dic penalizarea datorit saltului, reprezentnd numrul de cicluri pierdute
atunci cnd este selectat calea destinaie.


Cicluri 1 2 3 4 5 6 7 8 9 10 11
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
i
3
IF ID OF EX
i
4
IF ID OF
i
5
IF ID OF EX WB
i
6
IF ID OF EX WB

Fig. 7.11

Prin calcule statistice s-a determinat c ntlnirea unor instruciuni de salt
poate reduce viteza de execuie a unui program cu pn la 72% din viteza ma-
xim. Pentru a se reduce efectul salturilor asupra performanelor unui procesor,
au fost propuse diferite tehnici. Cele mai cunoscute tehnici sunt predicia salturi-
lor, ntrzierea salturilor i prencrcarea multipl. Aceste tehnici sunt prezentate
n continuare.

7.5.2. Predicia salturilor
In cazul acestei metode se realizeaz o predicie a rezultatului unei decizii
legate de execuia saltului. Pe baza acestei predicii, se alege pentru execuie
calea secvenial sau calea destinaie. Dei prin alegerea cii respective se re-
duce adesea penalizarea datorit saltului, penalizarea poate crete n cazul unei
predicii eronate.
Exist dou tipuri de predicii: predicii statice i predicii dinamice.
- In cazul unei predicii statice, se decide naintea execuiei programului
prencrcarea instruciunilor dintr-una din cele dou ci. De exemplu, o tehnic
simpl este aceea de a presupune c saltul trebuie executat ntotdeauna. Prin
aceast tehnic, la ntlnirea unei instruciuni de salt se ncarc n contorul de
program adresa de destinaie a saltului. O alt tehnic este de a alege o anumi-
t cale (secvenial sau destinaie) pentru anumite tipuri de salturi i cealalt ca-
le pentru celelalte tipurilor. In cazul n care alegerea este eronat, sistemul
pipeline este golit i se ncarc instruciunile corespunztoare cii corecte.
- In cazul prediciei dinamice, n timpul execuiei programului, procesorul ia
o decizie bazat pe informaiile despre salturile executate anterior. Metoda cea
mai simpl este predicia dinamic utiliznd un bit de control p, asignat fiecrei
instruciuni de salt. Dac la prima execuie se realizeaz saltul, p va avea valoa-
rea 1. In caz contrar p=0. La urmtoarea ntlnire a acestei instruciuni se ur-
meaz calea anterioar. Dac predicia a fost eronat se schimb valoarea bitu-
lui de control p astfel nct, la urmtoarea execuie, se va urma cealalt cale.
O metod mai eficient const n a se asocia un contor C de n bii fiecrei
instruciuni de salt. Aceast metod este numit metoda de predicie bazat pe
C
un contor (counter based branch prediction). Aceast metod funcioneaz n
felul urmtor: dup ce instruciunea de salt a fost executat prima dat, contorul
C ia o valoare de prag T dac a fost executat saltul sau valoarea T-1 dac saltul
nu a fost executat.
In continuare, de fiecare dat cnd instruciunea de salt trebuie executat,
dac T C , este selectat calea destinaie. Dac predicia a fost corect, conto-
rul este incrementat; dac predicia a fost incorect, contorul este decrementat.
In cazul n care T C , se alege calea secvenial. Dac predicia a fost
corect, contorul este decrementat; dac predicia a fost incorect contorul este
incrementat.
Dac C ajunge !a valoarea maxim 1 2
n
, contorul nu mai este incremen-
tat, chiar dac a fost selectat calea destinaie i predicia a fost corect. In mod
similar, contorul nu este decrementat la o valoare mai mic de 0.
In practic, pentru n i T se alege adesea valoarea 2 (10 n binar). Studiile
au artat c metodele de predicie cu 2 bii sunt aproape la fel de eficiente ca i
metodele care utilizeaz un numr mai mare de bii. Figura 7.12 prezint strile
posibile n cazul metodei de predicie cu 2 bii.

Fig. 7.12

Este convenabil s se memoreze statisticile salturilor ntr-o tabel numit
tabel de istorie a salturilor (branch history table), mpreun cu adresa instruci-
unii de salt i adresa destinaiei saltului. Pentru accesul rapid, majoritatea pro-
cesoarelor plaseaz tabela de istorie a salturilor ntr-o memorie cache de di-
mensiuni reduse, numit buffer al destinaiei salturilor (BTB - Branch Target
Buffer). De obicei, fiecare tabel a acestei memorii cache pstreaz adresa unei
instruciuni de salt, adresa destinaiei saltului i statisticile de predicie.
Metodele de predicie statice necesit de obicei mai puine circuite, dar pot
determina creterea complexitii compilatorului. Spre deosebire de acestea,
metodele de predicie dinamice determin creterea complexitii circuitelor, dar
necesit operaii mai simple n timpul compilrii. In general, prin utilizarea pre-
Predicie
corect
Predicie
eronat
Predicie
cale destinaie
10
Predicie
cale destinaie
11
Predicie corect
Predicie eronat
Predicie corect
Predicie corect
Predicie eronat
Predicie
cale secvenial
00
Predicie
cale secvenial
01
Predicie corect
diciei dinamice se pot obine rezultate mai bune.
Pentru a determina efectul prediciei salturilor asupra performanelor, este
necesar reevaluarea numrului mediu al ciclurilor de ceas pentru execuia unei
instruciuni. Exist dou cazuri posibile: calea anticipat este corect sau inco-
rect.
Considerm secvena de instruciuni din tabelul 6.11. S presupunem c
trebuie urmat calea destinaie. Sunt posibile urmtoarele dou situaii:
- dac calea destinaie a fost estimat corect (figura 7.13a) penalizarea
este d;
- dac calea destinaie a fost estimat greit (figura 7.13b) penalizarea es-
te c.
Dac trebuie aleas calea secvenial exist, de asemenea, dou posibili-
ti:
- dac calea secvenial a fost aleas corect (figura 1.14) penalizarea este
0;
- dac calea secvenial a fost estimat greit (figura 7.11) penalizarea es-
te c.
Observaie: adresa cii estimate este obinut n momentul decodificrii instruc-
iunii de salt; aceasta este confirmat n momentul execuiei instruciunii de salt.


destinaie - corect
Cicluri 1 2 3 4 5 6 7 8 9 10 11
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
i
3
IF
i
4

i
5
IF ID OF EX WB
i
6
IF ID OF EX WB

Fig. 7.13a














d



destinaie - incorect
Cicluri

1 2 3 4 5 6 7 8 9 10 11
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
i
3
IF IF ID OF EX WB
i
4
IF ID OF EX WB
i
5
IF ID IF ID OF EX
i
6
IF IF ID OF

Fig. 7.13b


surs - corect
Cicluri 1 2 3 4 5 6 7 8 9 10 11
i
1
IF ID OF EX WB
i
2
IF ID OF EX WB
i
3
IF ID OF EX WB
i
4
IF ID OF EX WB
i
5
IF ID OF EX WB
i
6
IF ID OF EX WB

Fig. 7.14



In acest caz n care se utilizeaz predicia salturilor sistemul pipeline func-
ioneaz la 78% din viteza sa maxim.

7.5.3. ntrzierea salturilor
ntrzierea salturilor (delayed branching) elimin sau reduce n mod sem-
nificativ efectul penalizrii datorit salturilor. In cazul acestei metode se ncarc
i se execut un anumit numr de instruciuni dup instruciunea de salt, indife-
rent de calea care va fi selectat pentru salt. De exemplu, un procesor cu o n-
trziere a salturilor egal cu k execut urmtoarele k instruciuni secveniale iar
apoi, fie continu pe aceeai cale, fie ncepe execuia instruciunilor de la adre-
sa destinaiei saltului. De cte ori este posibil, compilatorul ncearc s plaseze
dup instruciunea de salt k instruciuni care sunt independente de instruciunea
de salt. Dac nu exist suficiente instruciuni de acest tip, compilatorul va insera
instruciuni NOP. Ca un exemplu, considerm urmtoarea secven:

c
1
i : LOAD R1, A
2
i : LOAD R2, B
3
i : BRZ R2,
7
i ; salt la
7
i dac R2 = 0
4
i : LOAD R3, C
5
i : ADD R4, R2, R3 ; R4 =B +C
6
i : MUL R5, R1, R2 ; R5 =A * B
7
i : ADD R4, R1, R2 ; R4 =A +B

Presupunnd k=2, compilatorul modific aceast secven prin mutarea
instruciunii
1
i i inserarea unei instruciuni NOP dup instruciunea de salt
3
i .
Secvena modificat este urmtoarea:

2
i : LOAD R2, B
3
i : BRZ R2,
7
i
1
i : LOAD R1, A
NOP
4
i : LOAD R3, C
5
i : ADD R4, R2, R3
6
i : MUL R5, R1, R2
7
i : ADD R4, R1, R2

Dup cum se observ din secvena modificat, instruciunea
1
i este execu-
tat indiferent de rezultatul evalurii saltului. Pentru a nelege efectul de redu-
cere a penalizrii prin utilizarea ntrzierii salturilor ne vom referi la figura 7.11.
In cazul n care nu se utilizeaz metoda ntrzierii salturilor, atunci cnd predic-
ia sugereaz ca probabil calea secvenial, se ncepe execuie instruciunilor
care urmeaz dup instruciunea de salt. Dac, dup execuia instruciunii de
salt de constat c predicia a fost eronat, sistemul pipeline se golete pentru a
ncepe execuia instruciunilor de pe calea de destinaie. In acest caz cele trei
perioade de ceas n care se ncerca execuia instruciunilor de pe calea secven-
ial au fost irosite. Dac pe cale secvenial sunt introduse instruciuni care
sunt independente de instruciunea de salt, n cazul considerat, se continu cu
execuia acestora i abia dup finalizarea acelor instruciuni, se trece la execu-
ia instruciunilor de pe calea destinaie. In acest mod nu a fost pierdut nici un
ciclu de ceas.

7.5.4. Prencrcarea multipl (multiple prefetching)
In acest caz, procesorul extrage instruciuni din ambele ci posibile. Dup
ce s-a luat decizia despre execuia saltului, calea nedorit este abandonat.
Prin extragerea prealabil a instruciunilor din ambele ci posibile, se evit pe-
nalizarea datorit extragerii instruciunilor n cazul unei predicii incorecte.
Pentru extragerea instruciunilor din ambele ci, se utilizeaz dou buffere.
La execuia normal, primul buffer este ncrcat cu instruciuni aflate pe calea
secvenial iar cel de al doilea buffer cu instruciuni de pe calea destinaie. Dac
saltul este executat, coninutul primului buffer este invalidat i este utilizat coni-
nutul celui de-al doilea buffer.
Aceast metod de extragere dubl asigur un flux constant de instruciuni
i date pentru sistemul pipeline i reduce ntrzierile datorate golirii i rencrc-
rii sistemului pipeline.
In concluzie, fiecare din tehnicile prezentate anterior reduce diminuarea
ratei de transfer a sistemului pipeline. Alegerea uneia din aceste tehnici pentru
un sistem particular depinde de factori ca cerinele ratei de transfer i restriciile
de cost. In practic, datorit acestor factori, ntr-un procesor se implementeaz
de obicei o combinaie a acestor tehnici.

7.6. mbuntirea ratei de transfer a sistemelor pipeline
Rata de transfer a unui sistem pipeline este definit ca fiind numrul tasku-
rilor de intrare pe care le poate prelucra acesta n unitatea de timp.
O posibilitate de cretere a ratei de transfer a unui sistem pipeline de in-
struciuni este de a se utiliza paralelismul la nivelul instruciunilor (instruction-
level parallelism - ILP). Acest procedeu const dintr-un set de tehnici ale proce-
sorului i compilatorului care mbuntesc performana prin executarea opera-
iilor independente n paralel. Sistemele bazate pe paralelismul la nivelul instruc-
iunilor preiau un program convenional ntr-un limbaj de nivel nalt scris pentru
procesoare secveniale i utilizeaz tehnici statice (ale compilatorului) i dinami-
ce (implementate n cursul execuiei) pentru a exploata n mod automat parale-
lismul implicit al programului.
Metodele obinuite pentru a exploata paralelismul la nivelul instruciunilor
sunt prelucrarea superscalar, prelucrarea superpipeline i cuvintele foarte lungi
de instruciuni (Very Long lnstruction Word VLIW). O metod mai nou este
numit EPIC (Explicitly Parallel lnstruction Computing). Fiecare din aceste me-
tode ncearc iniierea mai multor instruciuni n acelai ciclu de ceas.


7.6.1. Prelucrarea superscalar
Metoda de prelucrare superscalar const n execuia concurent a mai
multor operaii n uniti separate de prelucrare. Aceast metod realizeaz
multiplicarea execuiei instruciunilor ntr-un ciclu de ceas prin lansarea mai mul-
tor instruciuni ctre diferite uniti funcionale. Un procesor superscalar conine
uniti multiple de execuie, fiecare din acestea fiind de obicei de tip pipeline, Un
astfel de procesor este constituit dintr-un set de sisteme pipeline de instruciuni,
fiecare dintre acestea lucrnd independent. Unitatea de control a unui procesor
superscalar este proiectat pentru a ncrca i a decodifica mai multe instruci-
uni n mod concurent. Aceasta poate lansa sau expedia pn la k instruciuni
simultan ctre diferitele uniti de execuie, unde k poate avea o valoare egal
cu ase sau, utiliznd tehnologia actual, mai mare. Necesitatea de a prelucra
mai multe instruciuni simultan fr conflicte complic mult proiectarea unitii de
control. Figura 7.15 prezint ntr-o form ideal diferenele din punct de vedere
al posibilitilor de prelucrare ale instruciunilor ntre trei organizri UCP: un pro-
cesor secvenial (care nu este de tip pipeline), un procesor de tip pipeline i un
procesor superscalar, fiecare dintre acestea executnd acelai ir de instruciuni
,... , ,
3 2 1
I I I . Presupunnd c fiecare instruciune necesit un numr total de cinci
cicluri, putem observa c un singur sistem pipeline k=1 cu cinci etaje ofer o
cretere a vitezei de 5 ori, n timp ce un sistem superscalar cu dou instruciuni
lansate simultan (k=2) ofer o cretere potenial a vitezei de 10 ori. La ncepu-
tul ciclului 15, procesorul secvenial a terminat numai dou instruciuni, n timp
ce procesorul de tip pipeline i cel superscalar au terminat 10, respectiv 20 de
instruciuni. Mai mult, procesorul superscalar a nceput prelucrarea instruciuni-
lor
21
I la
30
I .
Dup cum se ilustreaz n figura 7.15, prezena a k uniti de execuie de
tip pipeline cu m etaje permite unui UCP superscalar s ating factori de crete-
re a vitezei care se apropie de k x m, comparativ cu un UCP care nu dispune de
paralelism la nivelul instruciunilor. Ocuparea a k sisteme pipeline necesit ca
UCP s ncarce cel puin k instruciuni n fiecare ciclu de ceas. Volumul ridicat al
traficului de instruciuni de la memoria de program la UCP necesit ca sistemul
s dispun de o memorie cache rapid i de dimensiuni mari, adesea sub forma
unei memorii cache de instruciuni (I-cache) pentru pstrarea programului, com-
pletat cu o memorie cache de date (D-cache) pentru pstrarea operanzilor.
Pentru extragerea instruciunilor, exist de obicei un buffer sau o coad de in-
struciuni n cadrul UCP, care pstreaz instruciunile prencrcate i parial de-
codificate. Unitatea de control expediaz instruciunile din bufferul de instruciuni
ctre diferitele uniti de execuie.
Unitatea de control a unui procesor superscalar este responsabil pentru
determinarea momentului n care poate fi executat fiecare instruciune i pen-
tru asigurarea accesului la resursele pe care instruciunea le necesit, cum sunt
operanzi din memorie, uniti de execuie i registre UCP. Pentru aceasta, unita-
tea de control trebuie s in cont de urmtorii factori:
Tipul instruciunii: De exemplu, o instruciune de adunare n virgul mobi-
l trebuie expediat la o unitate de execuie n virgul mobil i nu la o unitate n
virgul fix.
Disponibilitatea unitii de execuie: O instruciune poate fi expediat la
o unitate de execuie de tip pipeline numai dac nu vor rezulta coliziuni.

Fig. 7.15

Dependene de date: Pentru a evita conflictele la utilizarea registrelor,
trebuie satisfcute restricii privind dependenele de date ntre operanzii instruc-
iunilor active.
Dependene de control: Pentru a menine performane ridicate, sunt ne-
cesare tehnici pentru a reduce impactul instruciunilor de salt asupra eficienei
sistemelor pipeline.
Ordinea instruciunilor: Instruciunile trebuie s genereze rezultatele n
ordinea specificat de programul care se execut. Rezultatele pot fi ns calcu-
late intern ntr-o ordine diferit pentru a mbunti performanele UCP.
Pentru pstrarea ordinii de execuie a instruciunilor ntre care exist de-
pendene i pentru a asigura obinerea unor rezultate valide, un procesor super-
scalar trebuie s utilizeze un mecanism de control, care poate fi bazat pe meto-
da tabelei de rezultate. In practic, majoritatea procesoarelor se bazeaz pe
tehnica superscalar i utilizeaz metoda tabelei de rezultate.
Pentru a rezolva problema salturilor ntrziate se utilizeaz diferite metode
arhitecturale, cum sunt memorii cache (sau buffere) pentru destinaia saltului i
execuia speculativ. Execuia speculativ implic predicia direciei unui salt
dependent de date i execuia instruciunilor corespunztoare. Cu seturi multiple
de registre virtuale i utiliznd metoda tabelei de rezultate, un procesor poate
urmri ambele ci ale unui salt i poate alege irul corect de instruciuni.

7.6.2. Prelucrarea superpipeline
Metoda superpipeline asigur performane ridicate prin suprapunerea exe-
cuiei unui numr mai mare de instruciuni ntr-un singur sistem pipeline de in-
struciuni. Un procesor superpipeline conine de obicei un sistem pipeline de in-
struciuni cu un numr mai mare de etaje dect un sistem pipeline obinuit. Cu
alte cuvinte, procesul de execuie al unei instruciuni este divizat n etape cu
complexitate mai redus. Prin creterea numrului de etaje ale sistemului
pipeline de instruciuni este posibil creterea frecvenei ceasului, deoarece
aceast frecven depinde de ntrzierea introdus de etajul cel mai lent.
Metoda superpipeline are anumite avantaje. O singur unitate funcional
necesit un spaiu mai redus i circuite mai simple comparativ cu structurile ba-
zate pe prelucrarea superscalar. Spaiul suplimentar care rmne disponibil
permite implementarea unor circuite speciale pentru obinerea unor viteze mai
ridicate, memorii cache de dimensiuni mai mari i ci de date cu un numr mai
mare de linii.
Majoritatea procesoarelor actuale utilizeaz metoda superpipeline. De
exemplu, sistemul pipeline al familiei de procesoare cu arhitectura Intel actual
const din 20 etaje, fa de 5 la procesorul Intel Pentium i 6 la procesorul Intel
Pentium cu extensiile MMX. Aceasta permite familiei de procesoare cu arhitec-
tura Intel actual s ajung la o frecven cu aproximativ 50% mai ridicat fa
de procesorul Pentium cu aceeai tehnologie de fabricaie.
S considerm un procesor care divizeaz extragerea instruciunilor i ac-
cesul la memoria cache de date pentru a crea un sistem pipeline cu opt etaje.
Operaiile executate n fiecare etaj al sistemului pipeline permit un ciclu de ceas
cu o frecven dubl. Cele opt etaje ale sistemului pipeline sunt ilustrate n figu-
ra 7.16.


Fig. 7.16.

Faze corespunztoare celor opt etaje ale sistemului pipeline sunt descrise
mai jos.
1. IF (Instruction Fetch, First Half): Sistemul de comand selecteaz o
adres de instruciune i ncepe extragerea acestei instruciuni din memoria
cache de instruciuni. In aceeai faz, bufferul de translatare (TLB) pentru in-
struciuni, ncepe translatarea adresei virtuale ntr-o adres fizic.
2. IS (Instruction Fetch, Second Half): Extragerea instruciunii din memoria
cache de instruciuni i translatarea adresei virtuale ntr-o adres fizic sunt
terminate.
3. RF (Register Fetch): Instruciunea este decodificat i marcajul memori-
ei cache de instruciuni este comparat cu numrul cadrului de pagin obinut din
bufferul de translatare pentru instruciuni. Operanzii necesari sunt ncrcai din
setul de registre.
4. EX (Instruction Execution): UAL execut operaia aritmetic sau logic
pentru instruciunile care opereaz cu registrele. Pentru instruciunile de ncr-
care i memorare, UAL calculeaz adresa virtual a datelor. Pentru instruciuni-
le de salt, UAL determin dac condiia de salt este adevrat i calculeaz
adresa virtual a destinaiei saltului.
5. DF (Data Fetch, First Half): Pentru instruciunile de ncrcare i memo-
rare, ncepe extragerea datelor din memoria cache de date i translatarea adre-
sei virtuale ntr-o adres fizic. Pentru instruciunile de salt, ncepe translata-
rea adresei i actualizarea TLB. Pentru instruciunile care opereaz cu re-
gistrele, nu se execut nici o operaie n timpul fazelor DF, DS i TC.
6. DS (Data Fetch, Second Half): Pentru instruciunile de ncrcare i me-
morare, extragerea datelor din memoria cache de date i translatarea adresei
virtuale ntr-o adres fizic sunt terminate. Pentru instruciunile de salt, transla-
tarea adresei i actualizarea TLB sunt terminate.
7. TC (Tag Check): Pentru instruciunile de ncrcare i memorare, memo-
ria cache execut testarea marcajului. Adresa fizic din TLB este comparat cu
marcajul memoriei cache pentru a determina dac exist un succes sau un eec
la accesul memoriei cache.
8. WB (Write Back): Pentru instruciunile care opereaz cu registrele, re-
zultatul instruciunii este scris n setul de registre. Pentru instruciunile de salt,
nu se execut nici o operaie n timpul acestei faze.



7.7. Controlul sistemelor pipeline
Dup cum se tie exist dou tipuri de sisteme pipeline: statice i dinamice.
Un sistem pipeline static poate executa o singur operaie la un moment dat, n
timp ce un sistem pipeline dinamic poate executa mai multe operaii. Controlul
secvenierii operaiilor prezentate unui sistem pipeline pentru execuie este foarte
important pentru creterea eficienei acestuia. Astfel dac se iniiaz dou operaii
care necesit acelai etaj pipeline n acelai timp, apare o coliziune, care nu este
de dorit. Pentru evitarea unor astfel de situaii este necesar planificarea
sistemelor pipeline.
In continuare este prezentat o metod de control pentru planificarea unui
sistem pipeline.

7.7.1. Planificarea
Pentru a nelege aceast metod mai nti trebuie definite conceptele de
tabel de rezervare i laten.
O tabel de rezervare indic momentele n care etajele unui sistem pipeline
sunt utilizate pentru o anumit funcie. Fiecrui etaj i se aloc o linie n tabela de
rezervare. Fiecare linie este mprit n coloane, cte una pentru fiecare ciclu de
ceas. Numrul de coloane indic numrul total al unitilor de timp necesare
pentru execuia unei anumite funcii. Pentru a indica faptul c un anumit etaj E
este utilizat la momentul de timp t
i
este plasat un semn x la intersecia liniei cu
coloana momentului de timp respectiv din tabel.

a b
Fig. 7.16

Figura 7.16 reprezint o tabel de rezervare pentru un sistem pipeline static
cu trei etaje. Momentele de timp
0
t ,
1
t ,
2
t ,
3
t i
4
t indic cinci cicluri de ceas
consecutive. In exemplul considerat poziia semnelor x indic faptul c, pentru a
produce rezultatul scontat datele de intrare trebuie s treac succesiv prin etajele
1, 2, 2, 3 i 1. Tabela de rezervare este utilizat pentru a determina diferenele de
timp necesare ntre aplicarea unor date succesive la intrare astfel nct s nu
6
5
4
3
2
1
X


Moment t
0
t
1
t
2
t
3
t
4

Ieire
Intrare
Etaj 1
Etaj 2
Etaj 3
Etaj 1
Etaj 2
Etaj 3
X
X

X



X
apar coliziuni.
Latena este dat de numrul unitilor de timp (ciclurilor de ceas) care
separ aplicarea la intrare a dou seturi de date. Va apare o coliziune dac dou
seturi de date de intrare sunt aplicate cu o laten egal cu distana ntre dou
semne x ntr-o linie a tabelei de rezervare. De exemplu, n tabela din figura 7.16
exist dou semne x consecutive n a doua linie. Astfel, dac al doilea set de
date este aplicat la intrare cu o laten de o unitate de timp dup primul, va apare
o coliziune n etajul 2.

7.7.2. Planificarea sistemelor pipeline statice
Planificarea sistemelor pipeline statice ncepe prin crearea unui set de liste a
latenelor interzise pe baza tabelelor de rezervare ale funciilor. Se obin apoi
vectorii de coliziune i se ntocmete diagrama strilor.
Lista latenelor interzise. Fiecare tabel de rezervare cu dou sau mai multe
semne x ntr-o anumit linie are una sau mai multe latene interzise, care, n
cazul n care nu sunt evitate, vor determina coliziunea datelor. Lista latenelor
interzise este un ir de numere ntregi care corespund acestor latene. Valoarea
zero este considerat ntotdeauna ca o laten interzis, deoarece nu este posibil
iniierea a dou taskuri n acelai moment. Un element al acestei liste se poate
determina calculnd distana ntre dou semne x dintr-o anumit linie. De
exemplu, lista latenelor interzise a tabelei de rezervare din figura 7.16 este (4, 1,
0).
Vectori de coliziune. Un vector de coliziune este un ir de cifre binare de
lungime 1 + N , unde N este latena interzis maxim din lista latenelor interzise.
Vectorul de coliziune iniial C este creat din lista latenelor interzise n felul
urmtor: fiecare element c
i
din C, pentru N i ,..., 0 = , este 1 dac i este un element
al listei latenelor interzise; n caz contrar c
i
este zero. Valorile zero din vectorul de
coliziune indic latene permise sau, altfel spus, momente n care aplicarea datelor
este permis.
In cazul listei precedente a latenelor interzise (4, 1, 0), unde pentru
i=0 exist o laten interzis;
i=1 exist o laten interzis;
i=2 latena este permis;
i=3 latena este permis;
i=4 exist o laten interzis,
se obine urmtorul vector de coliziune:
4 3 2 1 0
0 1 2 3 4
c c c c c C =
1) 1 0 0 1 ( =
In acest vector de coliziune, elementele c
2
i c
3
sunt egale cu 0 deoarece
latenele 2 i 3 sunt permise, n timp ce elementele c
0
, c
1
i c
4
sunt egale cu 1
deoarece latenele 0, 1 i 4 sunt interzise,.
Diagrama strilor. Diagramele de stri se utilizeaz pentru a indica diferitele
stri ale unui sistem pipeline pentru un interval de timp dat. Diagrama strilor,
permite evitarea coliziunilor printr-o planificare mai simpl a datelor de intrare.
Diagrama strilor unui sistem pipeline ncepe ntotdeauna cu vectorul de
coliziune iniial. Figura 7.17 reprezint o diagram de stri pentru sistemul pipeline
din figura 7.16. Vectorul de coliziune 10011 reprezint starea iniial. Deoarece
latenele permise sunt 2 i 3, un nou set de date poate fi aplicat la intrare dup
dou sau trei cicluri de ceas ( 2 = i sau 3 = i ). Pentru aceste latene, prin
deplasarea la dreapta a vectorului de coliziune curent cu i poziii, se obine un
vector de tranziie. Pe poziiile din stnga rmase libere n urma deplasrii se
introduc zerouri. In acest fel pentru i=2 din vectorul de coliziune iniial C
0
=(10011)
se obine vectorul de tranziie T
0
=(00100).


Fig. 7.17

Pentru a se genera un nou vector de coliziune i o nou stare, se efectueaz
operaia SAU logic ntre vectorul de tranziie T
0
i vectorul de coliziune C
0
. Dup
aceasta operaie se obine un nou vector de coliziune C
1
=(10111). Acestei tranziii
i corespunde n diagrama strilor din figura 7.17 arcul a
1
.
Pentru i=3, prin deplasarea la dreapta cu trei poziii a vectorului de coliziune
C
1
, se obine vectorul de tranziie T
1
=(00010). Aplicnd operatorul SAU vectorului
iniial C
0
i T
1
se obine vectorul de coliziune iniial C
0
. Acestei tranziii i
corespunde arcul a
2
.
Pentru i 5 vectorul de tranziie este T
2
=(00000) i, dup efectuarea operaiei
SAU cu vectorul C
0
, se obine tot vectorul C
0
(arcul a
3
). Latena 5 i corespunde
situaiei n care noul set de date de intrare se aplic dup 5 sau mai multe cicluri
de ceas. Dup o perioad de timp mai mare sau egala cu 5 cicluri de ceas,
sistemul pipeline s-a golit i este evident c aplicarea unui nou set de date
gsete sistemul n faza iniial.
Procesul de generare a noilor vectori de coliziune continu pn cnd nu se
C
0
C
1
a
3
I = 2
a
1


10011
10111
C
1
=C
0
T
0
C
0
=C
0
T
1
I = 3
a
2


C
0
=C
0
T
2

i
mai pot genera noi vectori.
Latena medie. Latena medie se determin pentru un anumit ciclu din
diagrama strilor. Un ciclu ntr-o diagram a strilor este o secven format de
vectori de coliziune i arce,
0 1 1 0
, ,..., , , C a C a C
n
, n care fiecare arc
i
a conecteaz
vectorul de coliziune
1 i
C cu
i
C i toi vectorii de coliziune sunt distinci cu excepia
primului i ultimului. In diagrama din figura 7.17 exist ciclurile
0 2 1 1 0
, , , , C a C a C i
C
0
a
3
C
0
.
Pentru simplitate, un ciclu poate fi reprezentat printr-o secven de latene
ale arcelor sale. Astfel ciclul
0 2 1 1 0
, , , , C a C a C , poate fi reprezentat ca ciclul
) 3 , 2 ( = C , unde 2 i 3 sunt latenele arcelor
1
a , respectiv
2
a . Lungimea unui ciclu
este dat de numrul arcelor din care este constituit. Astfel
0 2 1 1 0
, , , , C a C a C are
lungimea 2, iar ciclul
0 3 0
, , C a C are lungimea 1.
Latena medie pentru un ciclu se determin prin adunarea latenelor arcelor
ciclului i mprirea sumei cu numrul total de arce din ciclu. De exemplu, n
figura 7.17 ciclul ) 3 , 2 ( = C are latena medie:
5 , 2 2 / ) 3 2 ( = +
Latena medie minim. Un sistem pipeline poate avea mai multe latene
medii asociate cu diferite cicluri. Latena medie minim este latena cu valoarea
cea mai mic din acestea. De exemplu, pentru diagrama din figura 7.17, latenele
medii sunt urmtoarele:
(2 +3)/2 =2.5 din ciclul
0 2 1 1 0
, , , , C a C a C
5/1=5 din ciclul
0 3 0
, , C a C
Astfel, latena medie minim (LMM) este 2,5. Dei ciclul cu latena medie
minim maximizeaz rata de transfer a sistemului pipeline, uneori, pentru a se
reduce complexitatea implementrii circuitului de control, se poate alege un ciclu
mai puin eficient. De exemplu, pentru ciclul C = (2, 3), cu valoarea LMM egal cu
2.5, este necesar un circuit de comand care s contorizeze dou uniti de timp,
apoi trei uniti de timp, din nou dou uniti de timp i aa mai departe. Dac ns
se accept s se aplice un set de date de intrare la fiecare trei uniti de timp,
complexitatea circuitului de comand va fi mai redus. Astfel, latena minim
pentru acest sistem pipeline este 3.

7.7.3. Planificarea sistemelor pipeline dinamice
La planificarea unui sistem pipeline static, trebuie evitate doar coliziunile
ntre diferitele date de intrare pentru o anumit unitate funcional. In cazul unui
sistem pipeline dinamic, este posibil ca diferitele seturi de date de intrare
necesitnd uniti funcionale diferite s fie prezente n sistemul pipeline n acelai
timp. Pentru acest motiv, trebuie s se ia n considerare i coliziunile ntre aceste
date. Ca i n cazul sistemelor pipeline statice, planificarea sistemelor pipeline
dinamice ncepe cu determinarea unui set de liste a latenelor interzise pe baza
tabelelor de rezervare ale funciilor. In continuare se obin vectorii de coliziune, iar
n final se reprezint diagrama strilor.



Fig. 7.14

Listele latenelor interzise. In cazul unui sistem pipeline dinamic, numrul de
liste ale latenelor interzise este egal cu ptratul numrului seturilor de date care
partajeaz sistemul pipeline. In figura 7.18, numrul seturilor de date este 2,
notate cu A i B; astfel, numrul de liste ale latenelor interzise este 4, acestea
fiind notate cu AA, AB, BA i BB . Acestea sunt:
) 0 , 3 ( = AA , ) 0 , 1 , 2 , 4 ( = AB , ) 0 , 1 , 2 ( = BA , ) 0 , 2 , 3 ( = BB
Vectori de coliziune i matrice de coliziune. Vectorii de coliziune se
determin n acelai mod ca i pentru un sistem pipeline static; 0 indic o laten
permis, iar 1 indic o laten interzis. Pentru exemplul precedent, vectorii de
coliziune sunt urmtorii:
) 01001 ( =
AA
C ) 00111 ( =
BA
C
) 10111 ( =
AB
C ) 01101 ( =
BB
C
Vectorii de coliziune pentru unitatea funcional A formeaz matricea de
coliziune
A
M :

=
AB
AA
A
C
C
M
Vectorii de coliziune pentru unitatea funcional B formeaz matricea de
coliziune
B
M :

=
BB
BA
B
C
C
M
Pentru vectorii de coliziune din exemplul precedent, matricele de coliziune
sunt urmtoarele:

=
10111
01001
A
M

=
01101
00111
B
M
Diagrama strilor. Diagrama strilor pentru un sistem pipeline dinamic este
construit n acelai mod ca i pentru un sistem pipeline static. Diagrama rezultat
5
4
3
2
1
0
5
4
3
2
1
0


A
Moment t
0
t
1
t
2
t
3
t
4

A



A


A
Ieire A
Intrare B
Moment t
0
t
1
t
2
t
3
t
4

Ieire B
Intrare A
Etaj 1
Etaj 2
Etaj 3
A
B

B




B
B



B









Etaj 1

Etaj 2

Etaj 3

Etaj 1

Etaj 2

Etaj 3

1
este mult mai complex dect diagrama strilor unui sistem pipeline static, datorit
numrului mai mare de coliziuni poteniale.
Ca un exemplu, considerm diagrama strilor din figura 7.19. Pentru nceput,
ne referim la matricea de coliziune
A
M . Exist dou tipuri de coliziuni: A cu A
(vectorul de sus) sau A cu B (vectorul de jos). Dac se alege prima laten
permis pentru vectorul
AA
C (n acest caz, 1), ntreaga matrice este deplasat la
dreapta cu o poziie, n poziiile din stnga fiind introduse zerouri. Apoi se execut
o operaie SAU logic ntre noua matrice i matricea de coliziune iniial
A
M ,
deoarece latenele interzise originale pentru unitatea funcional A trebuie luate n
considerare i n continuare.

Fig. 7.19

Dac se alege prima laten permis pentru vectorul
AB
C din matricea
A
M
(n acest caz, 3), ntreaga matrice este deplasat la dreapta cu trei poziii, n
poziiile din stnga fiind introduse zerouri. Apoi se execut o operaie SAU logic
ntre noua matrice i matricea de coliziune iniial pentru unitatea funcional B,
deoarece coliziunile originale pentru unitatea funcional B sunt nc posibile i
trebuie luate n considerare. Operaia de deplasare i operaia SAU logic continu
pn cnd se iau n considerare toate latenele posibile i diagrama strilor va fi
complet.

Cap. 8. Arhitecturi RISC

8.1. Introducere
In general, arhitecturile calculatoarelor au evoluat progresiv spre o
complexitate mai ridicat ca, de exemplu, un numr mai mare de instruciuni, un
numr mai mare de moduri de adresare, o putere de calcul mai ridicat a
instruciunilor individuale, registre mai specializate. Calculatoarele care se
ncadreaz n asemenea tendine sunt numite calculatoare cu set complex de
instruciuni (CISC - Complex Instruction Set Computer).
S-a constatat la un moment dat c adugarea unei instruciuni complexe la
un set de instruciuni existent afecteaz eficiena i costul procesorului. Efectele
unei asemenea instruciuni trebuie evaluate nainte ca aceasta s fie adugat la
setul de instruciuni. Unele din instruciunile puse la dispoziie de procesoarele
CISC sunt utilizate rareori de compilatoare. Conceptul de baz de a nu se aduga
instruciuni utilizate rar la setul de instruciuni reprezint un concept inovativ al
arhitecturilor de calculatoare, numit calculator cu set redus de instruciuni (RISC -
Reduced Instruction Set Computer). Filozofia de proiectare a arhitecturilor RISC
este de a se aduga la setul de instruciuni numai acele instruciuni care
determin un ctig de performan.
Caracteristicile comune ale majoritii acestor calculatoare sunt urmtoarele:
- Un set de instruciuni limitat i simplu;
- Un numr mare de registre generale sau memorii cache aflate n aceeai
capsul cu procesorul;
- Un compilator care maximizeaz utilizarea registrelor i minimizeaz astfel
accesurile la memoria principal;
- Accentul pus pe optimizarea sistemului pipeline de instruciuni.

8.2. Cauze ale complexitii arhitecturale crescute
Exist mai multe motive ale tendinei spre o complexitate progresiv mai
ridicat a arhitecturilor de calculatoare. Acestea cuprind urmtoarele deziderate:
- Facilitarea utilizrii limbajelor de nivel nalt. Pe parcursul anilor, mediul de
programare a evoluat de la programarea n limbaj de asamblare la programarea n
limbaje de nivel nalt, astfel nct proiectanii au prevzut instruciuni mai puternice
pentru a facilita codificarea eficient a programelor scrise n limbaje de nivel nalt.
Aceste instruciuni au determinat nu numai creterea dimensiunii setului de
instruciuni ci i creterea complexitii acestuia, datorit puterii de calcul relativ
ridicate a instruciunilor.
- Migrarea funciilor de la implementarea prin software la implementarea prin
hardware. O instruciune care este implementat prin hardware va fi mai eficient
dect una implementat prin software, realizat printr-o secven de instruciuni
mai simple, datorit numrului mare de accesuri la memorie i a diferenei dintre
vitezele UCP i ale memoriei. Pentru a crete viteza de procesare a
calculatoarelor, a avut loc un fenomen de migrare a funciilor de la implementarea
prin software la cea prin firmware i de la implementarea prin firmware la cea prin
hardware. (Firmware reprezint o secven de microinstruciuni.) Aceast migrare
a implementrii funciilor din domeniul software n domeniul hardware crete
dimensiunea setului de instruciuni, rezultnd o complexitate global crescut a
calculatoarelor.
- Compatibilitatea n sus. Compatibilitatea n sus este utilizat adesea de
ctre productori ca o strategie de marketing cu scopul de a prezenta
calculatoarele lor ca fiind mai performante dect alte modele existente. Ca rezultat
al acestei strategii de marketing, uneori productorii cresc numrul de instruciuni
i puterea de calcul a acestora, indiferent de utilizarea efectiv a acestui set
complex de instruciuni. Compatibilitatea n sus este un mod de a mbunti un
sistem prin adugarea unor faciliti noi i, de obicei, mai complexe. Ca rezultat,
noul set de instruciuni este un superset al celui vechi.

8.3. Avantajele arhitecturilor RISC
Exist totui unele criterii care reprezint obiective universal acceptate de
ctre proiectanii de calculatoare pentru toate sistemele:
1. Maximizarea vitezei de execuie sau minimizarea timpului de execuie.
2. Minimizarea costului de proiectare.
O posibilitate de a ndeplini primul obiectiv const n a mbunti tehnologia
componentelor, obinnd funcionarea acestora la frecvene mai ridicate.
Viteza mrit poate fi obinut i prin minimizarea numrului mediu al
ciclurilor de ceas pe instruciune i/sau execuia simultan a mai multor
instruciuni. Arhitecturile RISK au mers pe calea reducerii numrului de instruciuni
i a formatelor acestora, a simplificrii modurilor de adresare, obinnd n acest fel
un circuit de comand simplu i de dimensiuni mai reduse. Aceste opiuni au avut
ca rezultat reducerea suprafeei ocupate de circuitul de comand de la 40-60%
din suprafaa microprocesorului n cazul arhitecturilor CISC la numai 10% din
aceasta n cazul arhitecturilor RISC. Suprafaa rmas n cazul unei arhitecturi
RISC poate fi utilizat pentru alte componente, cum sunt memorii cache n
aceeai capsul i seturi mai mari de registre, prin care performanele
procesorului pot fi mbuntite.
In continuare sunt prezentate avantajele arhitecturilor RISC.
1. Un prim avantaj al arhitecturilor RISC const n ridicarea vitezei de calcul
a sistemului prin:
- Utilizarea sistemelor pipeline. Arhitecturile RISC sunt mai potrivite pentru
utilizarea sistemelor pipeline de instruciuni, deoarece majoritatea instruciunilor au
o dimensiune uniform i o durat egal a execuiei. Aceste caracteristici reduc
perioadele de inactivitate n cadrul sistemului pipeline.
- Implementarea unitii de comand prin hardware. Un sistem cu o unitate
de control cablat va fi, n general, mai rapid dect unul microprogramat.
- Numrul mare de registre i memoriile cache n cadrul capsulei vor reduce
numrul accesurilor la memorie deoarece datele mai frecvent utilizate pot fi
pstrate n registre. Registrele pot pstra, de asemenea, parametrii care trebuie
transmii procedurilor apelate. Spaiul eliberat, prin reducerea dimensiunilor
circuitului de comand, poate fi utilizat i pentru introducerea memoriei cache n
interiorul capsulei microprocesorului. Aceast memorie cache are, de obicei, o
dimensiune mai redus dect memoria cache de pe plac i reprezint primul
nivel al memoriilor cache. Memoria cache de pe plac, care este apropiat de
procesor, reprezint al doilea nivel al memoriilor cache. In general, aceste dou
niveluri de memorii cache mbuntesc performanele comparativ cu cazul
utilizrii unui singur nivel de memorie cache. Uneori fiecare memorie cache este
divizat n dou memorii cache: o memorie cache de instruciuni i o memorie
cache de date. Procesoarele care au memorii cache separate pentru instruciuni i
date sunt numite arhitecturi Harvard, dup calculatorul Harvard Mark I, care a
utilizat pentru prima dat aceasta opiune. Utilizarea a dou memorii cache, una
pentru instruciuni i una pentru date, poate mbunti n mod considerabil timpul
de acces i, n consecin, mbuntete performanele unui procesor, n special
al unuia care utilizeaz n mod extensiv tehnica pipeline, cum este un procesor
RISC.
2. Un alt avantaj al arhitecturilor RISC const n faptul c acestea necesit o
perioad mai scurt de proiectare. Timpul necesar pentru proiectarea unei noi
arhitecturi depinde de complexitatea arhitecturii. Timpul de proiectare este mai
lung pentru arhitecturile complexe (CISC). In cazul unei arhitecturi RISC, timpul
necesar pentru testarea i depanarea circuitelor rezultate este mai redus,
deoarece nu se utilizeaz microprogramarea i dimensiunea unitii de control
este redus. In cazul unei arhitecturi mai puin complexe, posibilitatea erorilor de
proiectare este mai redus. Deci, arhitecturile RISC au avantajul unor costuri de
proiectare mai reduse i al unei fiabiliti de proiectare mai ridicate.


8.4. Caracteristici ale arhitecturilor RISC
In general, o arhitectur RISC are urmtoarele caracteristici:
1. Majoritatea instruciunilor acceseaz operanzii din registre, cu excepia
unui numr redus dintre ele, cum sunt instruciunile LOAD i STORE, care acce-
seaz memoria. Cu alte cuvinte, o arhitectur RISC este un calculator de tip
load/store.
2. Execuia majoritii instruciunilor necesit un singur ciclu de ceas, cu
excepia unui numr redus dintre ele, cum sunt instruciunile LOAD i STORE.
Totui, n prezena memoriilor cache aflate n aceeai capsul, chiar i instruci-
unile LOAD i STORE pot fi executate, n medie, ntr-un ciclu.
3. Unitatea de control este cablat. Deci, arhitecturile RISC nu sunt micro-
programate. Codul generat de compilator este executat direct prin hardware i
nu este interpretat prin microprogramare.
4. Exist relativ puine instruciuni (adesea, mai puin de 150) i foarte pu-
ine moduri de adresare (adesea mai puin de 4).
5. Exist un numr redus de formate ale instruciunilor (adesea mai mic
dect 4).
6. UCP are un numr mare de registre. Un grup de cercettori de la Uni-
versitatea California din Berkeley, a studiat caracteristicile mai multor programe
tipice Pascal i C i a descoperit c, dintre tipurile de instruciuni ale limbajelor
de nivel nalt, apelurile de proceduri i revenirile din acestea consum cel mai
mult timp. Un calculator CISC cu un set redus de registre necesit un timp ridicat
pentru gestionarea apelurile de proceduri i revenirile din acestea, din cauza ne-
cesitii de a salva registrele la apelarea procedurii i de a le reface la revenire,
ca i din cauza necesitii de a transmite parametri i rezultate la i de la proce-
dura apelat. Pentru acest motiv, unul din principiile de proiectare ale
arhitecturilor RISC este de a pune la dispoziie un mijloc eficient de gestiune a
mecanismului de apel al procedurilor i de revenire din acestea. Aceast pro-
blem poate fi rezolvat prin utilizarea unui numr mare de registre i a concep-
tului de ferestre suprapuse.
Pentru explicarea acestui concept considerm un calculator RISC cu 100
de registre. Registre de la 0 la 9 sunt utilizate ca registre globale pentru memora-
rea variabilelor partajate de toate procedurile. Ori de cte ori este apelat o pro-
cedur, acesteia i se aloc o fereastr format din 20 de registre. Dintre acestea,
5 registre, numite registre de intrare, se aloc pentru pstrarea parametrilor, care
sunt transmii de procedura apelant, 10 registre numite registre locale, pentru
pstrarea variabilelor locale i 5 registre numite registre de ieire, pentru pstra-
rea parametrilor care trebuie transmii unei alte proceduri. Figura 8.1 ilustreaz
registrele alocate pentru trei proceduri X, Y i Z. Procedurii X i s-au alocat regis-
trele de la 10 la 29. Proceduri Y i s-au alocat registrele 25 pn la 44 iar proce-
durii Z, registrele de la 40 la 59. Dup cum se observ imediat ferestrele alocate
fiecrei dintre cele trei proceduri sunt suprapuse. Astfel registrele 25 pn la 29,
care conin parametrii de ieire ai procedurii X, sunt utilizai de procedura Y ca
parametrii de intrare i registrele care conin parametrii de ieire ai procedurii Y
se suprapun cu registrele care conin parametrii de intrare ai procedurii Z. In
acest mod transferul parametrilor de la procedura apelant ctre procedura ape-
lat se realizeaz n mod firesc, fr a consuma timpul necesar pentru transmite-
rea acestora ca n cazul arhitecturii CISC.


Fig. 8.1

O alternativ la un numr mare de registre este amplasarea unei memorii
cache n aceeai capsul. Productorii procesoarelor actuale au amplasat me-
moria cache n aceeai capsul cu procesorul pentru a asigura o vitez mai ridi-
cat. Deoarece spaiul din capsula procesorului este limitat, n aceast capsul
poate fi amplasat doar o memorie cache de dimensiuni reduse. Pe lng
aceast memorie cache, se poate amplasa o memorie cache de dimensiuni mari
n afara capsulei. In general, se utilizeaz o ierarhie de memorii cache. Toate da-
tele de la nivelul superior (memoria cache din cadrul capsulei) sunt prezente la
nivelurile inferioare (memoriile cache din afara capsulei), astfel nct, dup o lip-
s n memoria cache, n locul efecturii unui acces la memoria principal, memo-
ria cache din cadrul capsulei poate fi rencrcat dintr-o memorie cache de la un
nivel inferior.
7. Compilatorul are o complexitate ridicat. De exemplu, compilatorul tre-
buie s se ocupe de salturile ntrziate. Este posibil s se mbunteasc per-
formanele sistemului pipeline prin rearanjarea automat a instruciunilor din ca-
drul unui program astfel nct instruciunile de salt s apar mai trziu dect se
inteniona iniial.
8. Arhitecturile RISC faciliteaz operaiile limbajelor de nivel nalt printr-o
alegere judicioas a instruciunilor i prin utilizarea compilatoarelor care optimi-
zeaz codul.
9. Arhitecturile RISC utilizeaz sistemele pipeline de instruciuni i metode
pentru rezolvarea problemei salturilor, cum sunt tehnicile de prencrcare multi-
pl i de predicie a salturilor.

8.5. Comparaie ntre arhitecturile RISC i CISC
In general, timpul necesar unui procesor pentru a realiza execuia unui
program poate fi influenat de trei factori:
1. Numrul de instruciuni din program;
2. Numrul mediu de cicluri de ceas necesare pentru execuia unei instruc-
iuni;
3. Durata ciclului de ceas.
Arhitecturile CISC reduc numrul de instruciuni necesare ntr-un program
prin furnizarea unor instruciuni speciale care pot executa operaii complexe.
Spre deosebire de acestea, arhitecturile RISC implementeaz aceste instruciuni
speciale prin instruciunile existente. In acest mod, reduc numrul mediu al ciclu-
rilor de ceas necesare pentru execuia unei instruciuni. Att arhitecturile CISC
ct i cele RISC profit de mbuntirile tehnologiei circuitelor integrate pentru a
reduce durata ciclului de ceas.
Arhitecturile RISC sunt calculatoare de tip load/store; acestea pot obine un
nivel ridicat al concurenei prin separarea execuiei instruciunilor de ncrcare i
memorare de alte instruciuni. Arhitecturile CISC nu pot obine ntotdeauna ace-
lai nivel al concurenei din cauza setului lor de instruciuni de tip memo-
rie/registru.
Majoritatea aspectelor negative ale arhitecturilor RISC sunt direct legate de
aspectele lor pozitive. Din cauza instruciunilor simple, performanele unei arhi-
tecturi RISC depind de eficiena compilatorului. De asemenea, datorit numrului
mare de registre, alocarea registrelor este mai complex, crescnd astfel com-
plexitatea compilatorului. Pentru acest motiv, principalul dezavantaj al unei arhi-
tecturi RISC este necesitatea de a scrie un compilator eficient. In general, timpul
de dezvoltare al sistemelor software pentru calculatoarele RISC este mai lung
dect cel pentru calculatoarele CISC. Un alt dezavantaj este c anumite instruc-
iuni CISC sunt echivalente cu dou sau trei instruciuni RISC, ceea ce determin
ca programele RISC s fie mai lungi. Deci, considernd avantajele ambelor arhi-
tecturi CISC i RISC, proiectarea unui procesor RISC poate fi mbuntit prin
utilizarea unora din principiile CISC care au fost dezvoltate i mbuntite de-a
lungul anilor.

|Cap.9. Introducere n Multithreading, Superthreading i
Hyperthreading

9.1. Procese i fire de execuie
Un sistem de operare execut la un moment dat o multitudine de programe.
Utilizatorul poate s ruleze n acelai timp un editor de texte, un browser de In-
ternet i un player audio. Toate aceste programe lansate n execuie poart nu-
mele de procese i sunt executate ntr-o manier secvenial, numit
multitasking, concurnd pentru folosirea resurselor comune ale sistemului de
calcul precum procesor, memorie sau hard-disk.
Un proces este constituit din unul sau mai multe segmente de cod i seg-
mente de date mapate ntr-un spaiu virtual de adresare. Fiecare proces deine
un numr de resurse alocate de ctre sistemul de operare, cum ar fi fiiere des-
chise sau zone de memorie alocate dinamic. Resursele alocate procesului sunt
eliberate la terminarea execuiei procesului. Un aspect fundamental este faptul
c dou procese diferite au ntotdeauna spaii de adres distincte. Astfel proce-
sele sunt izolate ntre ele i nu pot accesa, n mod direct, datele celorlalte proce-
se.
Sistemul de operare i sistemul hardware coopereaz pentru a realiza me-
canismul de multitasking, prin care controlul UCP este comutat pe rnd ntre di-
verse procese.
Un fir de execuie este unitatea de execuie a unui proces. Acesta poate fi
vzut ca un program n execuie fr spaiu de adres propriu. Firul de execuie
ruleaz n cadrul unui proces, partajnd spaiul de adresare al acestuia. Fiecrui
fir de execuie i se asociaz o secvena de instruciuni, un set de registre CPU i
o stiva. Procesul nu executa instruciuni, acesta fiind spaiu de adresare comun
pentru unul sau mai multe fire de execuie. Firele de execuie sunt cele care exe-
cut instruciunile.
Fiecare proces are cel puin un fir de execuie. Uneori ns apare nevoia s
se lucreze n paralel asupra acelorai date i atunci se pot crea mai multe fire de
execuie n cadrul aceluiai proces. De exemplu, n cazul editorului de texte de
care s-a amintit la nceput, att utilizatorul ct i task-ul, care salveaz o copie de
siguran, lucreaz asupra acelorai date, deci vom avea dou fire de execuie
n cadrul aceleiai aplicaii. Cu toate c firele de execuie partajeaz spaiul de
adres al unui proces, unele resurse sunt individuale, cum ar fi stiva, registrele i
contorul de program. Aceasta permite mai multor fire de execuie din cadrul ace-
luiai proces s urmeze ci diferite de instruciuni.
In general, un procesor execut la un moment dat un singur fir de execuie
(single-thread CPU).
In figura 9.1. se prezint funcionarea unei CPU cu un singur fir de execuie
In CPU au fost evideniate unitatea de alimentare cu instruciuni format din
patru sisteme pipeline i unitatea de execuie format din apte sisteme pipeline
funcionnd n paralel.
Dreptunghiurile colorate din RAM reprezint instruciunile a patru procese di-
ferite aflate n curs de execuie. Presupunem c aceste procese sunt constituite
dintre-un singur fir de execuie. In acest moment sunt executate numai instruci-
unile procesului rou, n timp ce celelalte procese i ateapt rndul. Dup
cum se observ din aceast figur, sistemele pipeline conin o mulime de etaje
goale (dreptunghiurile galbene), numite pipeline bubbles (bule), care apar deoa-
rece, din motivele prezentate anterior, CPU nu poate asigura alimentarea conti-
nu a sistemelor pipeline.

Fig. 9.1.

Evident, aceast situaie reduce eficiena procesorului. Astfel, dei unitatea
de alimentare cu instruciuni, poate emite patru instruciuni n fiecare ciclu de
ceas, aceasta emite doar dou instruciuni i numai ntr-un singur ciclu reuete
s emit trei instruciuni.
In momentul lansrii n execuie a unui fir de execuie acestuia i se asociaz
un context de execuie. Prin context de execuie se neleg toate informaiile care
descriu la un moment dat starea curent de execuie a firului (de exemplu coni-
nutul registrelor CPU, program counter (PC), indicatorii de condiie, etc.).
Firelor de execuie li se aloc, pe rnd, cte o cuant de timp pentru a fi
executate. La un moment dat firul de execuie este eliminat din procesor, dup
ce contextul sau a fost salvat i un alt fir de execuie este adus n procesor. Aci-
unea de salvare a contextului vechiului fir de execuie i ncrcarea contextului
noului fir de execuie se numete comutarea contextului. Operaia de comutare a
contextului unui fir de execuie consum un numr de cicluri de ceas care au ca
efect reducerea eficienei procesorului..
O modalitate de a reduce numrul de comutri ale contextelor i de a asigu-
ra mai mult timp CPU pentru fiecare fir de execuie este aceea de a construi un
sistem care s poat executa mai multe fire de execuie n acelai timp. Modul
CPU
RAM



































































































Unitate de
alimentare
Unitate
de exe-
cuie
convenional de a realiza acest lucru este de a aduga sistemului nc un CPU,
obinnd un sistem multiprocesor (SMP). Intr-un SMP sistemul de operare poate
programa ca dou fire de execuie s fie executate exact n acelai timp, fiecare
dintre acestea fiind executat pe un CPU diferit. Evident c nu i se permite niciu-
nui proces s monopolizeze CPU i n acest caz fiecrui fir de execuie i se aloc
o cuant de timp CPU. In final fiecare fir de execuie ateapt mai puin pn ob-
ine acces la CPU deci procesul va fi executat mai repede.

Fig. 9.2

In figura 9.2 este prezentat un single-thread SMP. Dup cum se constat n
acest moment sunt executate simultan procesul rou i procesul maro, fiecare
pe cte un procesor. Dup ce cuanta de timp alocat fiecrui fir de execuie expi-
r, contextul lor este salvat, codul i datele acestora sunt eliminate din CPU i
dou noi procese vor fi pregtite pentru execuie. Se constat c, dei acest sis-
tem poate executa dou fire de execuie simultan, numrul de bule (pipeline
bubbles) s-a dublat pe ansamblu, fiecare din cele dou procesoare contribuind la
aceasta cu gradul sau de ineficien.




CPU 2 CPU 1




RAM


































































































Unitate de
alimentare
Unitate de
execuie


























































Unitate de
alimentare
Unitate de
execuie
9.2. Multithreading
O metod de a crete performanele procesorului const n utilizarea tehnicii
multithreading. Un procesor care utilizeaz aceast tehnic se numete procesor
multithreaded. Un astfel de procesor este capabil ca la un moment dat s execu-
te mai mult de un singur fir. Figura 9.3 explic cum funcioneaz un procesor
multithreaded

Fig.9.3

Dup cum se observ din aceast figur, deoarece procesorul execut in-
struciuni din ambele fire de execuie, att unitatea de alimentare ct i unitatea
de execuie au mai puine etaje neutilizate (mai puine pipeline bublles). Sgeile
din stnga arat c, ntr-un anumit ciclu de ceas, etajele pipeline conin instruci-
uni numai dintr-un singur fir de execuie.
Pentru a nelege cum funcioneaz un procesor multithreaded s analizm
figura 9.3. In cazul procesoarelor prezentate anterior unitatea de alimentare cu
instruciuni coninea la un moment dat un singur fir de execuie, care apoi, cnd
se consuma cuanta de timp alocat, era comutat pentru a face loc altui fir de
execuie.
CPU
RAM























































































Unitate de
alimentare








In acest caz, unitatea de alimentare cu instruciuni poate furniza, n fiecare
ciclu de ceas, patru instruciuni ctre oricare dintre cele apte uniti funcionale.
Toate aceste patru instruciuni trebuie ns s provin din acelai fir de execuie.
Ca efect, fiecare fir de execuie este limitat la o cuant de timp, care acum con-
st dintr-un singur ciclu de ceas.
Procesoarele multithreaded pot asigura atenuarea unor probleme de laten
introduse de ncrcarea operanzilor din memorie. De exemplu s consideram
cazul procesorului din figura 9.3, care execut dou procese, pe cel rou i pe
cel maro. Dac firul rou necesit ncrcarea unei date i aceast dat nu este
prezent n memoria cache, acest fir va fi ntrziat multe cicluri de ceas atep-
tnd data s soseasc. Intre timp, totui, procesorul va executa procesul maro,
meninnd astfel pipeline-ul plin.
Dei procedeul multithreading poate reduce substanial ntrzierile datorate
latenei sistemului de memorie, n cazul unui paralelism redus la nivelul instruci-
unilor dintr-un anume fir de execuie, nu are totui efectul scontat. Dac, la un
moment dat, blocul de comand reuete s gseasc n procesul rou numai
dou instruciuni care pot fi ncrcate n paralel n unitatea de execuie, celelalte
dou etaje ale unitii de ncrcare vor rmne neutilizate.

9.3. Simultaneous multithreading
Aceast problem este rezolvat de procedeul numit simultaneous
multithreading (SMT) sau, cum l-a denumit Intel, hyper-threading. Procedeul
hyper-threading elimin restricia procedeului multithreading de a ncrca, ntr-un
anumit ciclu de ceas, instruciuni care aparin numai unui singur fir de execuie.
Aceast idee este prezentat n figura 9.4.
Dup cum se poate constata att unitatea de alimentare cu instruciuni ct i
unitatea funcional sunt utilizate mult mai eficient. Comparnd cu sistemul
multiprocesor din figura 9.2, se constat imediat c cele dou procese care ocu-
pau fiecare cte un procesor sunt acum comasate ntr-un singur procesor. In
acest mod toate etajele unitii de alimentare cu instruciuni sunt ocupate iar uni-
tile de execuie sunt acum mult mai eficient utilizate. De fapt procesorul hyper-
hreading acioneaz ca i cum ar avea dou CPU. Evident exemplul prezentat,
n care cele dou proceses sunt n totalitate complementare, este pur didactic,
ns ne permite s ne realizm eficiena procedeului hyper-threading.
Din punct de vedere al sistemului de operare, un procesor SMT este com-
pus din dou procesoare logice i firele de execuie pot fi programate s fie exe-
cutate de oricare din cele dou procesoare, exact ca ntr-un sistem
multiprocesor.
Puterea sistemului hyper-threading const n faptul c permite maximum de
flexibilitate la ncrcarea etajelor unitii de alimentare cu instruciuni, mbunt-
ind astfel gradul de utilizare al resurselor existente. Dac comparm diagramele
din figurile 9.2. i 9.4. constatm c ambele sisteme execut aceeai cantitate de
munc dar sistemul hyper-threading utilizeaz mai puine resurse i are mai pu-
ini cicli de ceas pierdui n comparaie cu sistemul SMP.


Fig. 9.4

Pentru a nelege mai bine cum acioneaz n practic un sistem hyper-
threading s considerm urmtorul exemplu: S presupunem unitatea de pro-
gramare a extras toate instruciunile care pot fi executate n paralel din procesul
rou i c acestea sunt numai dou. Aceasta nseamn c n urmtorul ciclu de
ceas vor fi ncrcate numai dou instruciuni. Trebuie s remarcm c acesta es-
te un scenariu foarte comun deoarece cercetrile au stabilit c media instruciu-
nilor paralele care pot fi extrase din cele mai multe coduri de program este de 2,5
pe ciclu. Pentru acest motiv, Pentium 4, la fel ca i multe alte procesoare au fost
echipate pentru a putea furniza 3 instruciuni n fiecare ciclu de ceas. Deoarece
unitatea de programare din exemplul nostru tie c ea poate furniza pn la pa-
tru instruciuni pe ciclu, va cuta instruciuni independente n alt fir de execuie.
In acest mod este eliminat gtuirea care apare n procesul de alimentare cu in-
struciuni.

9.4. Implementarea tehnicii hyper-threading.
Dei s-ar putea prea c implementarea tehnicii hyper-threading necesit un
mare numr de circuite de comand suplimentare, n realitate se pare c nu este

CPU
RAM
















































































Unitate de
alimentare



























Unitate
de execu-
ie
chiar aa. Intel raporteaz c la procesorul Pentium Xeon circuitele suplimentare
care implementeaz sistemul hyper-threading nu depesc 5% din suprafaa
pastilei de siliciu.
Pentium Xeon este capabil s execute n paralel cel mult dou fire de exe-
cuie pe dou procesoare logice. Pentru a prezenta sistemului de operare dou
procesoare logice, procesorul Xeon trebuie s fie capabil s memoreze informa-
iile corespunztoare a dou contexte distincte, corespunztoare celor dou fire
de execuie. Acest deziderat a fost realizat prin modificarea microarhitecturii re-
surselor; unele dintre acestea au fost replicate iar altele partiionate.
Pentru a asigura independen total a contextelor pentru fiecare procesor
logic exist cteva resurse care trebuie dublate. De exemplu este evident c fie-
care procesor trebuie s aib propriul su registrul PC (program counter), denu-
mit mai recent instruction pointer (IP).
In mod similar procesorul Xeon are dou tabele de alocare a registrelor, fie-
care dintre acestea innd evidena celor 8 registre pentru ntregi i a celor 8 re-
gistre pentru virgul mobil pentru fiecare din cele dou procesoare logice.
De asemenea fiecare procesor logic are propriul su TLB (Translation Look-
aside Buffer ).

Cap. 10. Sisteme Multiprocesor

10.1. Taxonomia arhitecturilor de calculatoare
Una dintre cele mai cunoscute taxonomii (clasificri) ale arhitecturilor de
calculatoare este taxonomia lui Flynn. Michael Flynn a clasificat arhitecturile de
calculatoare n patru categorii, n funcie de prezena unui singur ir sau a mai
multor iruri de instruciuni i de date. Un ir de instruciuni este un set de in-
struciuni secveniale executate de un singur procesor, iar un ir de date este
fluxul secvenial de date necesar irului de instruciuni. Cele patru categorii ale
lui Flynn sunt urmtoarele:
1. SISD (Single Instruction stream, Single Data stream). Aceast categorie
corespunde arhitecturii von Neumann, n care se execut n orice moment o
singur instruciune. Calculatoarele SISD sunt numite i calculatoare seriale
scalare. Aceste calculatoare utilizeaz un registru numit contor de program
PC, care determin execuia serial a instruciunilor. Pe msur ce fiecare in-
struciune este ncrcat din memorie, contorul de program este actualizat pen-
tru a conine adresa urmtoarei instruciuni care se va ncrca i se va executa
n ordine secvenial. Exist actualmente doar un numr redus de calculatoare
SISD; chiar i procesoarele din calculatoarele personale utilizeaz paralelismul
n scopul creterii eficienei. In cele mai multe situaii, acestea pot executa dou
sau mai multe instruciuni simultan.
2. MISD (Multiple Instruction stream, Single Data stream). In acest caz,
mai multe instruciuni opereaz asupra unei singure date. Exist dou posibiliti
de interpretare a structurii calculatoarelor MISD. Prima posibilitate este de a se
considera o clas de calculatoare la care mai multe uniti de prelucrare distinc-
te primesc instruciuni distincte care opereaz asupra acelorai date. Aceast
clas de calculatoare este considerat ca nepractic sau imposibil de ctre unii
proiectani de calculatoare i n prezent nu exist exemple de acest tip. A doua
posibilitate este de a se considera o clas de calculatoare n care datele sunt
trecute printr-o serie de uniti de prelucrare.
Unele arhitecturile de tip pipeline, ca de exemplu procesoarele vectoriale
sau arhitecturile sistolice, sunt considerate calculatoare de acest tip.
Arhitecturile de tip pipeline execut o prelucrare vectorial utiliznd o serie de
etaje, iar fiecare din acestea execut o anumit funcie i produce un rezultat in-
termediar. Motivul pentru care asemenea arhitecturi sunt clasificate ca sisteme
MISD este faptul c elementele unui vector pot fi considerate ca aparinnd ace-
leiai date, iar fiecare etaj pipeline prelucreaz mai multe instruciuni care ope-
reaz asupra acelui vector.
3. SIMD (Single Instruction stream, Multiple Data stream). In acest caz, un
singur ir de instruciuni prelucreaz simultan date diferite. La calculatoarele de
acest tip, exist mai multe uniti de prelucrare i o singur unitate de control.
Calculatoarele SIMD pot executa, de asemenea, prelucrri vectoriale. Aceasta
se realizeaz prin asignarea elementelor vectorilor unor uniti de prelucrare di-
ferite pentru o prelucrare concurent. In aceast categorie pot fi considerate
procesoarele matriciale.
4. MIMD (Multiple Instruction stream, Multiple Data stream). Aceast cate-
gorie cuprinde calculatoare cu mai multe uniti de prelucrare n care mai multe
instruciuni pot opera simultan asupra unor date diferite. Calculatoarele MIMD
reprezint arhitecturile cele mai complexe, obinnd o eficien ridicat prin pre-
lucrare concurent. In acest caz, concurena implic faptul c nu exist doar
procesoare multiple care opereaz n paralel, dar i faptul c se execut proce-
se multiple n acelai timp.
Taxonomia lui Flynn s-a dovedit o metod corespunztoare pentru clasificarea
arhitecturilor de calculatoare. Totui, progresele industriei de calculatoare au
creat arhitecturi care nu pot fi clasificate n mod clar prin taxonomia lui Flynn. De
exemplu, aceast taxonomie nu clasific n mod adecvat procesoarele vectoria-
le i arhitecturile hibride. Pentru a rezolva aceast problem, au fost propuse
mai multe taxonomii.


Fig. 10.1

Figura 10.1 prezint o taxonomie care cuprinde caracteristici ale mai mul-
tor taxonomii propuse. Aceast taxonomie clasific arhitecturile mai recente,
dar nu reprezint o caracterizare complet a arhitecturilor paralele.
Dup cum se arat n figura 10.1, categoria calculatoarelor MIMD este m-
prit n patru tipuri de arhitecturi paralele: multiprocesoare, multicalculatoare,
multi-multiprocesoare i calculatoare cu flux de date. In categoria SIMD, exist
un singur tip de arhitectur, reprezentat de procesoarele matriciale. Categoria
MISD este mprit n dou tipuri de arhitecturi: procesoare vectoriale de tip
pipeline i matrice sistolice. Celelalte arhitecturi sunt grupate n dou categorii:
calculatoare hibride i procesoare speciale. Aceste arhitecturi sunt descrise n
seciunea urmtoare.

Arhitecturi de
calculatoare
SISD
MIMD

Speciale
Hibride
Arhitecturi von Neuman
Multicalculatoare
Multi-multiprocesoare
Multiprocesoare
MISD

SIMD

Procesoare matriciale
Calculatoare cu flux de date
Procesoare vectoriale pipeline
Matrici sistolice
Calculatoare MIMD-SIMD
Procesoare cu logic fuzzy
Calculatoare MIMD-MISD
Reele neuronale artificiale



10.2. Prezentare general a arhitecturilor de calculatoare

10.2.1. Sisteme Multiprocesor
Multiprocesorul este un calculator paralel constnd din mai multe proce-
soare interconectate care partajeaz un sistem de memorie. Procesoarele pot fi
configurate astfel nct fiecare s execute cte o parte diferit a aceluiai pro-
gram sau astfel nct fiecare s execute simultan mai multe programe diferite. O
schem bloc a unui multiprocesor este prezentat n figura 10.2.

Fig. 10.2.

In general, un multiprocesor const din n procesoare i m module de
memorie. Procesoarele sunt notate cu
n
P P P ,..., ,
2 1
iar modulele de memorie sunt
notate cu
m
M M M ,..., ,
2 1
. Reeaua de interconectare RI conecteaz fiecare pro-
cesor la un anumit subset al modulelor de memorie. O instruciune de transfer
determin transferul datelor de la un anumit procesor ctre memoria cu care es-
te conectat procesorul. Pentru transferul datelor ntre dou procesoare, trebuie
s se execute o secven programat, care transfer datele ntre memorii i
procesoare intermediare.
In funcie de organizarea sistemului de memorie, multiprocesoarele pot fi
mprite n dou grupe, cu legtur strns i cu legtur slab.
In cazul unui multiprocesor cu legtur strns, un sistem central de me-
morie, numit memorie principal sau memorie global, asigur acelai timp de
acces pentru fiecare procesor. Sistemul central de memorie poate fi implemen-
tat fie ca un singur modul de memorie, fie ca un set de module de memorie care
pot fi accesate n paralel de diferite procesoare. In ultimul caz, se reduce conflic-
tul la memorie i astfel sistemul este mai eficient. Conflictul la memorie se refer
la situaia n care mai multe procesoare solicit acces la memorie ntr-un interval
scurt de timp, rezultnd ntrzieri mari de acces. Pe lng sistemul central de
memorie, fiecare procesor poate avea i o memorie cache de dimensiuni redu-
se. Aceste memorii cache ajut de asemenea la reducerea conflictelor la memo-
rie.
P
1
P
2
P
n
Reea de interconectare (RI)
M
1
M
2
M
m
Procesoare
Module de
memorie
In cazul unui multiprocesor cu legtur slab, pentru a se reduce conflicte-
le la memorie, sistemul de memorie este partiionat ntre procesoare, deci fiec-
rui procesor i se ataeaz o memorie local. Astfel, fiecare procesor poate ac-
cesa n mod direct memoria sa local i toate memoriile locale ale celorlalte
procesoare. Timpul de acces la o memorie care nu este local este ns mult
mai ridicat dect cel la memoria local.
Indiferent de tipul multiprocesorului, toate procesoarele acestuia utilizeaz
acelai sistem de operare. Sistemul de operare asigur interaciunea dintre pro-
cesoare i taskurile acestora. De obicei, procesoarele sunt de acelai tip; n
acest caz, multiprocesorul se numete omogen. Dac procesoarele sunt de ti-
puri diferite, multiprocesorul se numete eterogen. Oricare din procesoare poate
accesa oricare din dispozitivele de I/E.

10.2.2. Sisteme multicalculator
Spre deosebire de un multiprocesor, un multicalculator poate fi considerat
un calculator paralel n care fiecare procesor are o memorie local proprie. Un
procesor are acces direct doar la memoria sa local i nu poate adresa memo-
riile locale ale altor procesoare. Aceast adresabilitate local este o caracteristi-
c important care deosebete multicalculatoarele de multiprocesoare. O
schem bloc a acestei arhitecturi este prezentat n figura 10.3.

Fig. 10.3

In figura 10.3, exist n noduri de procesare i fiecare nod const dintr-un
procesor i o memorie local. Reeaua de interconectare (RI) conecteaz fieca-
re nod de procesare la un anumit subset al celorlalte noduri de procesare. O in-
struciune de transfer determin transferul datelor de la un anumit nod la unul
din nodurile cu care este conectat. Pentru transferul datelor ntre dou noduri
care nu pot fi conectate direct prin reeaua de interconectare, datele trebuie
transferate prin noduri intermediare utiliznd un mecanism cu transmitere de
mesaje.
Intr-un mecanism cu transmitere de mesaje, un procesor poate transmite
(sau recepiona) un bloc de informaii la (sau de la) fiecare din celelalte proce-
soare prin canale de comunicaie. Aceste canale sunt conexiuni fizice ntre pro-
cesoare, aranjate pe baza unei topologii a reelei de interconectare. Fiecare

P
1
P
2
P
n
Reea de interconectare (RI)
M
1
Noduri de
procesare
M
n
M
2
procesor este conectat la un canal de comunicaie printr-un dispozitiv numit in-
terfa de comunicaie. Acest dispozitiv poate transmite sau recepiona date
printr-un canal de comunicaie i poate executa funcii pentru a asigura c date-
le sunt transmise i recepionate corect.
nainte ca un bloc de informaii s fie transmis printr-un canal, blocul este
mpachetat ntr-un mesaj cu un cmp al antetului la nceput i un cmp al sumei
de control la sfrit. Cmpul antetului const din informaii de identificare, cu-
prinznd adresa surs, adresa destinaie i lungimea mesajului. Cmpul sumei
de control const din mai muli bii de detecie a erorilor de transmisie. La anu-
mite implementri, interfaa de comunicaie este capabil de a crea i a decodi-
fica cmpul antetului i al sumei de control.
Comparnd multiprocesoarele i multicalculatoarele, primele pot fi progra-
mate mai uor dect cele din urm. Multiprocesoarele reprezint arhitectura
dominant n cazul sistemelor paralele de dimensiuni reduse. In general, pe
msur ce numrul de procesoare crete, multicalculatoarele devin mai econo-
mice dect multiprocesoarele. Multicalculatoarele sunt arhitecturi eficiente pen-
tru sistemele paralele de dimensiuni mari. Aceasta se datoreaz urmtoarelor
motive:
- Calculele tiinifice pot fi partiionate astfel nct aproape toate operaiile
pot fi executate local;
- Se obine o mbuntire semnificativ a performanelor dac majoritatea
referinelor la memorie sunt efectuate la memoriile locale.

10.2.3. Sisteme Multi-multiprocesoare
Odat cu progresele tehnologiei VLSI, a devenit posibil construirea unor
calculatoare paralele de dimensiuni mari utiliznd microprocesoare cu perfor-
mane ridicate. Pentru proiectarea unor asemenea calculatoare, pot fi combinate
caracteristicile multiprocesoarelor i multicalculatoarelor, ntr-o arhitectur numi-
t multi-multiprocesor (sau multiprocesor distribuit). Deci, un multi-multiprocesor
poate fi considerat un multicalculator n care fiecare nod de procesare este un
multiprocesor. Figura 10.4 prezint structura general a unui multi-
multiprocesor.

Fig. 10.4.

Fiecare nod permite ca taskurile cu un grad relativ ridicat de interaciune
s fie executate local de ctre un multiprocesor, reducnd astfel timpul necesar
Reea de interconectare
Multiprocesor 1

Multiprocesor 2

Multiprocesor n

comunicaiei. Dac fiecare nod este un multiprocesor, complexitatea programrii
paralele a unui multicalculator va fi redus.

10.2.4. Arhitecturi cu flux de date
Intr-o arhitectur cu flux de date (dataflow), o instruciune este gata pentru
execuie atunci cnd datele care reprezint operanzii instruciunii devin disponi-
bile. Rezultatele instruciunilor executate anterior formeaz operanzii instruciu-
nilor care ateapt s fie executate. Se formeaz astfel un flux de date, care
declaneaz execuia instruciunilor. Astfel nu este necesar un contor de pro-
gram care exist ntr-o arhitectur von Neumann pentru a controla execuia in-
struciunilor.
Instruciunile unui calculator cu flux de date nu adreseaz variabile ntr-o
memorie partajat global, ci ele conin valorile variabilelor utilizate. Intr-o arhi-
tectur cu flux de date, execuia instruciunilor nu afecteaz alte instruciuni care
sunt gata pentru execuie. Astfel mai multe instruciuni pot fi executate simultan,
ceea ce conduce la posibilitatea unor calcule cu un grad ridicat de concuren.
Figura 10.5 prezint o schem bloc a unui calculator cu flux de date. In-
struciunile, mpreun cu operanzii acestora, sunt pstrate n memoria de in-
struciuni i date (I&D). Ori de cte ori o instruciune este gata pentru execuie,
aceasta este transferat la unul din elementele de procesare (EP) prin reeaua
de arbitrare. Fiecare element de procesare este un simplu procesor cu o memo-
rie local limitat. La recepionarea unei instruciuni, elementul de procesare
execut operaia cerut i transmite rezultatul la destinaia din memorie prin in-
termediul reelei de distribuie.

Fig. 10.5
Date
(rezultate)
Instruciuni
i date
Memorie de instruc-
iuni i date
Reea de
arbitrare
Reea de
distribuie
EP
EP
EP
I & D
I & D
I & D


RI



RI
Arhitecturile cu flux de date pot fi clasificate n dou grupe: statice i dina-
mice. Intr-o arhitectur static, o instruciune este validat ori de cte ori toi
operanzii necesari sunt recepionai i o alt instruciune ateapt rezultatul
acestei instruciuni; n caz contrar, instruciunea rmne invalidat. Aceast
constrngere poate fi impus prin utilizarea semnalelor de achitare. Intr-o arhi-
tectur dinamic, o instruciune este validat ori de cte ori toi operanzii nece-
sari sunt recepionai. In acest caz, pot deveni disponibile mai multe seturi de
operanzi ale unei instruciuni n acelai timp. Comparativ cu arhitecturile statice
cu flux de date, arhitecturile dinamice permit un grad mai ridicat de paralelism,
deoarece o instruciune nu trebuie s atepte dup o alt instruciune nainte de
a-i plasa rezultatul. In cazul metodei dinamice trebuie stabilit ns un mecanism
pentru a distinge diferitele seturi de operanzi pentru o instruciune.

10.2.5. Procesoare matriciale
Un procesor matricial (figura 10.6) const dintr-un set de noduri de proce-
sare (NP) i un procesor scalar, toate funcionnd sub controlul unei uniti de
control centralizate. Unitatea de control ncarc instruciunile din memoria prin-
cipal, le decodific i apoi le transmite fie la procesorul scalar, fie la nodurile de
procesare, n funcie de tipul acestora. Dac instruciunea ncrcat este o in-
struciune vectorial, aceasta este transmis la toate nodurile de procesare.
Toate nodurile execut simultan aceeai instruciune asupra datelor diferite ps-
trate n memoriile lor locale. Astfel, un procesor matricial necesit un singur pro-
gram pentru a controla toate nodurile de procesare din sistem i nu este nece-
sar duplicarea codului programului la fiecare nod de procesare.

Fig. 10.6.

Un procesor matricial poate fi definit, de exemplu, sub forma unei grile n
care fiecare intersecie reprezint un NP, iar liniile dintre intersecii reprezint ci
de comunicaie. Fiecare NP din matrice poate transmite (sau recepiona) date la
Instruciuni
Date
Date
Instruciuni
scalare
Instruciuni
vectoriale
Noduri
de proce-
sare

P
1
P
2
P
n
Reea de interconectare RI
M
1
M
n
M
2
Memorie principal
Unitate
de
control
Procesor
scalar
(sau de la) cele patru noduri vecine. Unul dintre procesoare, reprezentnd unita-
tea de control, decide operaiile care trebuie executate de fiecare NP n timpul
fiecrui ciclu de procesare i transferurile de date necesare ntre nodurile de
procesare.
Ideea principal a unui procesor matricial este de a se exploata paralelis-
mul existent n setul de date al unei anumite probleme i nu de a se paraleliza
secvena de execuie a instruciunilor pentru acea problem. Calculul paralel se
realizeaz prin asignarea fiecrui procesor la o partiie a datelor. Dac setul de
date este un vector, partiia va fi un element al vectorului. Matricele de proce-
soare mbuntesc performanele prin operarea simultan asupra tuturor partii-
ilor de date. Aceste procesoare pot executa eficient operaii aritmetice sau logi-
ce asupra vectorilor. De aceea, ele se mai numesc i procesoare vectoriale.


10.2.6. Procesoare vectoriale de tip pipeline
Un procesor vectorial de tip pipeline poate prelucra n mod eficient ope-
ranzi vectoriali (iruri continue de date). In timp ce procesoarele matriciale sunt
controlate de instruciuni, procesoarele vectoriale de tip pipeline sunt controlate
de iruri continue de date. Aceasta este diferena principal ntre un procesor
matricial sau vectorial i un procesor vectorial de tip pipeline. Figura 10.7 prezin-
t structura de baz a unui procesor vectorial de tip pipeline.

Fig. 10.7

Exist dou procesoare principale: un procesor scalar i un procesor vec-
torial. Procesorul scalar execut instruciunile scalare, iar procesorul vectorial
execut instruciunile vectoriale utiliznd mai multe etaje de prelucrare. Unitatea
de control ncarc instruciunile din memoria principal, le decodific i apoi le
transmite fie la procesorul scalar, fie la procesorul vectorial realizat sub form
de sistem pipeline, n funcie de tipul acestora.
Memorie principal
Instruciuni
Date
Instruciuni
scalare
Instruciuni
vectoriale


Procesor vectorial
Etaj 1


Unitate
de
control
Procesor
scalar
M
n
M
2
M
1
Etaj 2

Etaj n


Procesoarele vectoriale de tip pipeline utilizeaz mai multe module de
memorie pentru a furniza etajelor de prelucrare un ir continuu de date. Adesea
se utilizeaz un compilator cu vectorizare pentru a aranja datele ntr-un ir care
poate fi utilizat apoi de cele dou procesoare.

10.2.7. Matrice sistolice
Pentru calculele tiinifice, adesea este necesar rezolvarea unor sisteme
de ecuaii liniare de dimensiuni mari. De obicei, pentru rezolvarea unor aseme-
nea sisteme de ecuaii se utilizeaz algebra matriceal. Datorit secvenelor
lungi ale calculelor aritmetice, majoritatea operaiilor algebrice matriciale sunt
executate pe calculatoare digitale cu vitez ridicat utiliznd pachete software
dedicate. Un dezavantaj major al execuiei operaiilor algebrice matriciale pe
calculatoare generale este timpul de execuie ridicat. De asemenea, n cazul
unui calculator general memoria principal nu are o dimensiune suficient pen-
tru a permite plasarea unor matrice foarte mari. Pentru acest motiv sunt necesa-
re numeroase transferuri de I/E, ceea ce crete timpul de execuie.
Pentru rezolvarea acestei probleme, au fost introduse arhitecturi speciale.
O soluie const n utilizarea unei matrice sistolice (figura 10.8). In cazul acestei
arhitecturi, exist un numr mare de elemente de procesare (EP) identice.

Fig. 10.8

Fiecare element de procesare are o memorie local redus ca dimensiune
i, pentru a nu se limita numrul de elemente de procesare plasate ntr-o matri-
ce, fiecare EP poate fi conectat, prin reele de interconectare, numai cu elemen-
tele de procesare vecine. Deci, elementele de procesare sunt aranjate ntr-o
structur de tip pipeline, sub forma unei matrice liniare sau bidimensionale. Intr-
o matrice sistolic elementele de date i rezultatele pariale parcurg elementele
de procesare n timpul execuiei, constnd din mai multe cicluri de procesare. In
fiecare ciclu de procesare, anumite elemente de procesare execut aceeai
operaie relativ simpl (de exemplu, adunare sau nmulire) asupra elementelor
de date i transmit aceste elemente sau rezultate pariale la alte elemente de
procesare vecine.
Ieiri
Intrri
EP
EP
EP



RI



RI
EP
EP
EP EP
EP
EP
Utiliznd tehnologia VLSI, este posibil s se obin o putere de calcul foar-
te ridicat cu un sistem constnd dintr-un numr mare de procesoare identice
organizate ntr-o manier structural.

10.2.8. Arhitecturi hibride
Pentru a obine performane mai ridicate ale calculelor paralele, se utili-
zeaz arhitecturi hibride, care cuprind caracteristici ale unor arhitecturi diferite.
In general, exist dou tipuri de paralelism care se pot utiliza: paralelism de con-
trol i paralelism de date. In cazul paralelismului de control, se execut simultan
dou sau mai multe operaii de ctre procesoare diferite. Calculatoarele MIMD
sunt ideale pentru implementarea paralelismului de control. Acestea sunt adec-
vate pentru probleme care necesit executarea simultan a unor operaii diferite
asupra datelor diferite. In cazul paralelismului de date, se execut aceeai ope-
raie asupra mai multor partiii ale datelor de ctre mai multe procesoare. Calcu-
latoarele SIMD sunt ideale pentru implementarea paralelismului de date. Aces-
tea sunt adecvate pentru probleme n care aceeai operaie poate fi executat
simultan asupra unor poriuni diferite ale datelor. Calculatoarele MISD sunt de
asemenea potrivite pentru paralelismul de date. Aceste calculatoare permit pro-
cesarea vectorilor utiliznd tehnica pipeline.
In practic, cele mai mari avantaje se obin prin utilizarea paralelismului de
date deoarece, n acest caz, se beneficiaz de pe urma paralelismului n mod
proporional cu cantitatea datelor implicate n calcule. Totui, uneori nu este po-
sibil s se exploateze la maxim paralelismul de date, fiind necesar utilizarea
att a paralelismului de control ct i a celui de date. De exemplu, n cazul unor
programe de aplicaie rezultatele cele mai bune se pot obine atunci cnd aces-
te programe sunt divizate n mai multe pri care utilizeaz paralelismul de date,
iar prile componente utilizeaz paralelismul prin tehnica pipeline. Un grup de
procesoare culege datele i execut anumite prelucrri preliminare. Procesoare-
le transmit apoi rezultatele lor la al doilea grup de procesoare care execut alte
calcule asupra rezultatelor. Al doilea grup transmite rezultatele obinute la al trei-
lea grup de procesoare, care obine rezultatele finale. Deci, un calculator paralel
care cuprinde att caracteristici ale arhitecturilor MIMD, ct i cele ale SIMD
(sau MISD) poate rezolva n mod eficient o gam larg de probleme.

10.2.9. Reele neuronale artificiale
Un exemplu de arhitectur special este o reea neuronal artificial. O
asemenea reea const dintr-un numr mare de elemente de procesare (EP)
care funcioneaz n paralel. Aceste reele pot rezolva ntr-un mod mai eficient
unele probleme pentru care arhitecturile von Neumann sunt ineficiente, ca de
exemplu emularea informaiilor naturale sau recunoaterea formelor.
Arhitecturile bazate pe reele neuronale sunt capabile de nvare i sunt adapti-
ve la schimbrile de mediu.

Fig. 10.9

Figura 10.9 prezint structura general a unei reele neuronale artificiale.
Fiecare element de procesare emuleaz unele caracteristici ale neuronului bio-
logic. Acesta are un set de intrri i una sau mai multe ieiri. Fiecrei intrri i se
asigneaz o pondere numeric. Aceast pondere corespunde potenialului si-
naptic al unui neuron biologic. O sinaps reprezint conexiunea dintre un neu-
ron i un terminal al altui neuron (terminal numit axon). Transmiterea informaii-
lor de la un neuron la altul are loc prin intermediul sinapselor i axonilor. Intrrile
unui element de procesare sunt multiplicate cu ponderile lor i sunt apoi nsu-
mate pentru a determina nivelul de activare al neuronului. Dup determinarea
nivelului de activare, se aplic o funcie de activare pentru a produce semnalul
de ieire. Ieirile combinate ale unui strat (nivel) precedent devin intrrile urm-
torului strat, n care acestea sunt din nou nsumate i evaluate. Acest proces es-
te repetat pn cnd se traverseaz reeaua i se ajunge la o anumit decizie.
Spre deosebire de arhitecturile von Neumann, la care elementul primar de
calcul este procesorul, n cazul reelelor neuronale artificiale acest element este
reprezentat de conexiunile dintre elementele de procesare. Pentru o problem
dat, trebuie s se determine valorile corecte ale ponderilor astfel nct reeaua
s poat executa prelucrrile necesare. Cu scopul de a crete performanele re-
elei, determinarea valorilor corespunztoare ale ponderilor se realizeaz prin
ajustarea iterativ a acestora. Regula de ajustare a ponderilor este numit regu-
l de nvare, iar ntregul proces de obinere a ponderilor corespunztoare este
numit nvare.
Toate modelele de reele neuronale artificiale sunt caracterizate prin ope-
rarea paralel i interconectarea dens ntre elementele de procesare. In ace-
lai timp, exist diferene majore ntre modelele individuale n ceea ce privete
arhitectura lor, regulile de nvare i modul de interaciune cu mediul.
O taxonomie general a acestor modele este prezentat n continuare.
Distincia cea mai general ntre diferitele modele de reele neuronale artificiale
este metoda de nvare. Dac mediul furnizeaz exemplele de nvare sub
forma perechilor de vectori de intrare/ieire, metoda de nvare este numit su-
pervizat. Aceast metod este numit i nvare cu un profesor, deoarece
mediul are rolul unui profesor pentru reeaua neuronal, punnd la dispoziie
Ieiri
EP
EP
EP
EP
EP
EP
EP
EP
EP
Intrri
exemple detaliate despre ceea ce trebuie nvat. Dac, din contr, mediul spe-
cific intrarea dar nu i ieirea, nvarea este nesupervizat. In acest caz, re-
eaua neuronal trebuie s descopere soluia la problema de nvare.
Intr-o alt metode de nvare, numit nvare cu ajutor (reinforcement
learning), mediul furnizeaz anumite informaii de ieire, dar aceste informaii
sunt sub forma evalurii unei performane a reelei neuronale i nu sub forma
unor exemple de nvare. Aceast metod este numit i nvare cu un critic,
spre deosebire de nvarea cu un profesor, deoarece mediul nu specific ceea
ce trebuie nvat, ci numai dac ceea ce se nva este corect.
O alt distincie ntre diferite modele de reele neuronale artificiale se ba-
zeaz pe arhitectura acestora. Arhitectura se refer la tipul de prelucrare execu-
tat de neuronii artificiali i la interconexiunile dintre acetia. Modelele de reele
neuronale artificiale pot fi mprite n dou grupe: deterministe i stohastice.
Reelele deterministe produc ntotdeauna acelai rezultat la ieire pentru ace-
eai intrare, n timp ce la reelele stohastice ieirea pentru o intrare dat poate
varia n funcie de o anumit distribuie a probabilitii de ieire. Modelele sto-
hastice sunt de obicei mai dificil de analizat i simulat, dar n acelai timp ele
sunt mai realiste n numeroase aplicaii.
Adesea, modelele de reele neuronale artificiale sunt simulate prin pro-
gram. Aceast metod este flexibil, dar este lent. Metoda cea mai eficient
pentru implementarea unei reele neuronale artificiale este implementarea prin
hardware. In ultimii ani, au fost dezvoltate mai multe circuite pentru reelele neu-
ronale artificiale. In general, sunt disponibile trei tehnologii diferite pentru im-
plementarea prin hardware a unei reele neuronale artificiale: electronic, optic
i electro-optic.
Tehnologia electronic poate fi mprit la rndul ei n trei tipuri de im-
plementri: analogic, digital i hibrid. O implementare analogic reduce
complexitatea circuitului, dar este mai puin precis i, de multe ori, nu permite
obinerea unui grad de precizie de 6 bii. Aceasta se datoreaz n principal nive-
lului redus de precizie al rezistoarelor. O implementare digital asigur o preci-
zie mai ridicat, dar de multe ori necesit un spaiu mai mare n cadrul circuitului
integrat. O implementare hibrid conine elemente analogice i digitale pentru a
obine avantajele ambelor implementri.
Tehnologia optic poate soluiona anumite probleme ale tehnologiei elec-
tronice, n special cele legate de conectivitatea ntre neuroni, din cauza ntrzie-
rilor i a spaiului necesar n cadrul circuitului integrat. Prin utilizarea intercone-
xiunilor optice, nu este necesar nici o izolaie ntre traseele semnalelor, deoa-
rece razele de lumin pot trece unele prin altele fr a interaciona ntre ele. De
asemenea, traseele semnalelor pot fi realizate tridimensional. In sfrit, ponderi-
le pot fi memorate sub forma unor holograme. Cu toate aceste avantaje, exist
numeroase probleme asociate cu tehnologia optic, n special faptul c unele
caracteristici fizice ale dispozitivelor optice nu sunt compatibile cu cerinele ree-
lelor neuronale.
Intr-o implementare electro-optic, interconexiunile sunt realizate optic.
Deoarece reelele neuronale artificiale sunt puternic interconectate, aceast me-
tod devine o alternativ atractiv de implementare.

10.2.10. Procesoare bazate pe logica fuzzy
Un alt exemplu de arhitectur special este reprezentat de un procesor
bazat pe logica fuzzy. Logica fuzzy a fost propus de Lofti Zadeh pentru a m-
bunti utilizarea tehnicilor inteligenei artificiale n anumite domenii cum este
recunoaterea vorbirii. In inteligena artificial, logica cu dou valori reprezint
semnificaia unei propoziii ca adevrat sau fals, dar nu poate reprezenta o
propoziie cu o semnificaie imprecis. In logica fuzzy, o propoziie poate fi ade-
vrat sau fals, sau poate avea o valoare intermediar (de exemplu, foarte
adevrat).
Logica fuzzy se ocup de principiile formale ale raionamentului aproxima-
tiv. Aceast logic ncearc s trateze n mod eficient complexitatea procesului
cognitiv uman i elimin unele dezavantaje asociate cu logica clasic binar, ca-
re nu reflect n mod corespunztor procesele cognitive umane complexe. Logi-
ca clasic binar consider clase cu limite clare, de exemplu, negru sau alb. In
acest fel, un obiect este fie un membru al unei clase, fie nu. Spre deosebire de
aceast logic, logica fuzzy consider clase care nu au limite clare, o msur
indicnd gradul de apartenen al unui obiect la o clas.
Logica fuzzy a fost aplicat n numeroase domenii, cum sunt controlul
proceselor, recunoaterea imaginilor, robotic i sisteme expert. Controlul fuzzy
este prima aplicaie industrial a logicii fuzzy. Un controler fuzzy poate controla
sisteme care puteau fi controlate anterior numai de ctre operatori experimen-
tai. In J aponia, s-au obinut progrese semnificative n logica fuzzy, iar aceast
logic a fost aplicat unei mari varieti de produse, cum sunt sisteme de control
al navigaiei pentru automobile, camere video i maini de splat. Dei imple-
mentarea prin software a logicii fuzzy asigur rezultate bune pentru unele apli-
caii, pentru implementarea aplicaiilor cu performane ridicate sunt necesare
procesoare fuzzy dedicate, numite acceleratoare fuzzy.








1. Dupa subciclul de intrerupere urmeaza intodeauna subciclul de
-extragere
2. Np/q=C+r/q reprezinta relatia de conversie
- din baza p in baza q
3. Operatia de impartire cu refacerea restului partial incepe cu
- deplasarea spre stanga a registrului combinat A_Q
4. Magistralele primare sunt
- cele pe care circula datele
5. Cel mai mare numar denormalizat, in valoare absoluta, care poate fi reprezentat in simpla
precizie este
1.18x10 la puterea -38
6. O magistrala de extensie de tip magistrala locala este caracterizata prin faptul ca
- conecteaza unitatile rapide la magistrala UCP
7. Reprezentarea in MS a numarului -12 (pe 4 + 1 biti) este
- 11100
8. Incosistenta memoriei cache trebuie evitata
-in cazul sistemelor multiprocesor si in cazul sistemelor uniprocesor daca exista un
controler sau procesore de I/E care are un acces direct la memoria principala independenta de
UCP.
9. Problema indisponibilitatii intrstructiunilor se rezolva prin
- Utilizare unor buffere pentru memorarea instructiunilor si a datelor
10. Campul de acces al tabelei de pagini specifica
- tipul operatiilor care pot fi executate asupra paginii (citita, citita si scris, sau
executata)
11. Registrul de date este utilizat pentru
- a aduce datele si instructiunile din memorie
12. In cazul unitatilor de memorie cu acces direct timpul de acces este
- variabil
13. Bitul de modificare (dirty bit) este utilizat in cazul strategiei
- write-back
14. In cazul planificarii sistemelor pipeline prin latenta se intelege
-numarul ciclurilor de ceas care separa aplicarea datelor de intrare
15. Ce reprezinta figura urmatoare?
- Un sumator paralel de n biti (un sumator serie de n biti/un sunmator cu anticiparea
transportului de n biti)
16. O ierarhie de memorii prevede ca cel mai aproape de procesor sa gaseasca
- unitatea de memorie cea mai rapida, cu dimensiunea cea mai redusa si costul cel mai
ridicat
17. La o arhitectura de tip matrice sistolica elementele de procesare sunt aranjate intr-o
structura de tip
- pipeline
18. O instructiune orizontala este interpretata in modul urmator
- Se activeaza toate semnalele de comanda carora le corespunde un bit de 1 in campul
semnalelor de comanda si se dezactiveaza cele carora le corespunde un bit de 0. Daca conditia
indicata de campul de conditie este falsa se executa urmatoarea microinstruciune din
microprogram. Conditia indicata de campul de conditie este adevarata, se executa
microintructiunea indicata de campul de adresa.
19. In cazul inmultirii Booth daca doi biti succesivi ai inmultitorului sunt 11 se efectueaza
- o deplasara a produsului partial la dreapta

20. In cazul metodei EPIC planul de executie al programului este elaborat de
- compilator
21. Arhitectura SISD se refera la calculatoarele in care
- care executa la un moment dat o singura instructiune
22 O adresa virtuala se converteste intr-o adresa reala in modul urmator:
- Adresa de baza virtuala se converteste intr-o adresa de baza reala, utlizand TLB, iar
deplasamentul ramane nemodificat
23. Compilatorul calculatoarelor RISC
- maximizeaza utlizarea registrelor si minimalizeaza astfel accesurile la memoria
principala
24. In codul Gray
- trecerea de la o cifra zecimala la urmatoarea necesita modificarea unui singur bit
25. Semisumatorul elementar are
-doua intrari si doua iesiri
26. Un proces consta din
- segmente de cod si segmente de date mapate intr-un spatiu virtual de adresare
27. In cazul metodei scoreboard, o instructiune va fi lansata in executie daca
-Unitatea functionala este disponibila si nu exista alta instructiune activa care
utilizeaza aceasi registru de destinatie
28. Un etaj de prelucrare poate fi format dintr-un circuit
- secvential, combinational sau inteligent
29. Salturile conditionate sunt mai greu de gestionat de un sistem pipeline deoarece
- nu se cunoaste calea ce va fi urmata decat dupa executia instructiunii
30. In cazul inmultirii Booth rezultatul se formeaza in
-registrul combinat A_Q de 2n+2 biti
31. In cazul impartirii cifra catului Q0 se calculeaza cu relatia
- Q0 <- NOT an
32. La arhitecturile RISC instructiunile complexe sunt implementate prin
- functii care utilizeaza instructiunile existente
33. Un numar reprezentat in VM care are C=255 si F diferit de 0 reprezinta
- NaN
34. In cazul metodei Tomasulo, in campul de marcaj al unui registru va fi memorata
- eticheta registrului sursa
35. Ce reprezinta figura urmatoare (un dreptunghi cu ss in mijloc)
-un semisumator elementar (un circuit elementar de inmultire/un sumator elementar)
36. La arhitecturile cu flux de date instructiunile si datele sunt memorate
- intr-o memorie unica
37. Bufferul de translatare (TLB) este
- o tabela de conversie a adreselor de baza virtuala in adrese de baza reala amplasata in
memoria rapida din UCP
38. Primul rezultat al unui sistem pipeline va fi elaborat
- dupa timpul necesar parcurgerii tuturor etajelor de catre primul subproces
39. Un sumator de n biti calculeaza suma celor doua numere dupa
- n ciclii de ceas
40. In cazul memorie cache cu mapare directe la un esec la cautare are ca efect
- transferarea in memoria cache a marcajului si a datei cu acelasi index
41. Reprezentarea in C1 a numarului -9 (pe 4+1 biti) este
-10110
42. Magistrala PCI este
- o magistrala la care se conecteaza periferice rapide
43. Cel mai mic numar denormalizat, in valoare absoluta, care poate fi reprezentat in simpla
precizie este
- 1.4x10 la puterea -45
45. Tehnica superthreading permite ca in fiecare ciclu de ceas sa fie furnizate mai multe
instruciuni
- apartinand aceluiasi fir de executie
46. La inmultirea a doua cifre binare, produsul este 1 numai daca deinmultitul si inmultitorul
sunt
- 1 si 1
47. In organizarea look-trought memoria cache si memoria principala sunt conectate
- printr-o magistrala separata (locala) care este izolata de magistrala sistem
48. La un sistem de numeratie pozitional
- fiecare cifra contribuie la valoarea numarului cu o pondere data de puterea bazei
49. Stiind ca in cazul utilizarii combinata a segmentarii si paginarii adresa virtuala are trei
campuri, cate campuri are adresa reala corespunzatoare
- doua campuri; adresa de baza si deplasamentul
50. O UCC microprogramata functioneaza astfel
-Pentru executia instructiunii din RL logica de secventiere activeaza un semnal de
citire a memorie de comanda. Cuvantul a carei adresa este specificata in registrul de
microadrese va fi citit si depus in registrul de microinstructiuni. Continutul registrului de
microinstructiuni activeaza semnalele de comanda si genereaza informatii despre adresa
urmatoare pentru logica de secventiere. Logica de secventiere incarca o noua adresa in
registrul de microadrese, pe baza informatiilor despre adresa urmatoare de la registrul de
microinstructiuni si a indicatorilor de conditii ai UAL.
51. Contorul de program este un registru din procesor care
- memoreaza adresa instructiunii ce urmeaza sa fie executata
52. In cazul metodei scoreboard, tabela de stare a instructiunilor arata
- daca o instructiune este lansata in executie si in ce faza se gaseste
53. Memoria principala este considerata
- memoria RAM
54. Codul NBCD are ponderile
-8421
55. Conectorii de extensie fac parte integranta din
- magistrala de I/E
56. Un vector de coliziune este un
-sir de cifre binare de lungime N-1. unde N este latenta interzisa maxima din lista
latentelor interzise
57. Un cod se numeste autocomplementar daca
- cuvantul de cod al complementului fata de 9 al cifre N (deci 9-N) se poate obtine din
codul cifrei N prin complentarea fiecaruia din cei 4 biti
58. Arhitecturile RISC sunt caracterizate de
- utilizarea sistemelor pipeline
59. Un hazard de tip RAW se poate rezolva prin
- inserearea unor instructiuni independete dupa prima instructiune care trebuie sa scrrie
in registru
60. Celula D utilizata in cazul impartirii matriciale implementeaza functiile (patrat cu D mij)
- z=x minus y minus t pentru a=0 si z=x, pentru a=1
61. In cazul arhitecturilor hibride cele mai bune rezultate se obtin prin
- utilizarea paralelismului de date

62. Magistrala AGP este superioara magistralei PCI deoarece
- este dedicata adaptoarelor grafice
63. Vectorul de coliziune corespunzator listei latentelor interzise (4,1,0) este
- (10011)
64. In cazul utilizarii combinate a segmentarii si a paginarii adresa virtuala
- contine un index de segment si un index de pagina
65. In cazul impartii cu refacerea restului partial succesiunea operatiilor desfasurate pe doi
pasi consecutivi este
- A<-A-B , A<-A-B+B , A<- 2*A , A<-2*A-B
66. Pentru trecerea de la un tip de operatie la altul in cazul sistemului pipeline static trebuie
- sa goleasca etajele sistemului
67. In cazul predictiei statice a salturilor
- se decide inainte executiei instructiunii de salt preincarcarea instructiunilor dintr-una
din cele doua
68. Prin microoperatie se intelege
- operatia elementara care se desfasoara pe durata unei perioade de ceas
69. Codul Gray este
- neponderat
70. In cazul memoriei virtuale prin mapare dinamica se intelege sitatia in care
- spatiul adreselor fizice se modifica pe durata executie programului
71. Subciclul de intrerupere este compus din urmatoarele microinstructiuni
- t1: RD<-PC
t2: RA<-Adresa_salvare
PC<-Adresa_rutina
t3: Mem <- RD
72. Care este tipul de celula de memorie care necesita reimprospatare?
- DRAM
73. Subciclul de extragere este compus din urmatoarele microinstructiuni
- t1: RA<_PC
t2: RD<_MEM
PC<_PC+1
t3: RI<_RD
74. Registrul de instructiuni primeste instructiunea ce urmeaza sa fie decodificata
- de la registrul de date
75. La o arhitectura de tip matrice sistolica fiecare element de procesare dintr-un ciclu de
procesare
- executa aceasi operatie asupra unor date diferite
76. Magistralele primare sunt
- cele pe care circula datele
77. Tehnica superthreading are performante limitate din cauza
- paralelismului redus la nivelul instructiunilor
78. Pentru a se reduce efectul salturilor asupra performantelor unui sistem pipeline se pot
utiliza urmatoarele tehnici
- predictia salturilor, intarzierea salturilor si preincarcarea multipla
79. In cazul inmultirii Booth daca doi biti succesivi ai inmultitorului sunt 10 se efectueaza
- o scadere a deinmultitului urmata de o deplasare a produsul partial la dreapta
80. Reprezentarea in C2 a numarului -14 (pe 4+1 biti) este
- 10010


81. Un multicalculator este caracterizat de faptul ca
- fiecare procesor are o memorie locala proprie si nu poate adresa direct memoriile
locale ale altor procesoare.
82. Utilizarea unui numar mare de registre este una dintre caracteristicile distinctive ale
arhitecturilor
- RISC
83. Procesoarele superpipeline asigura cresterea ratei de transfer prin
- marirea numarului de etaje de prelucrare a sistemului pipeline
84. Registrul de adresa este utilizat pentru
- a pastra adresa din memorie a operandului sau instructiunii ce urmeaza sa fie adus in
registrele procesorului
85. Un timp de acces la memorie mai mic implica
- un pret pe bit mai mare
86. In cazul unitatilor de memorie cu acces aleator timpul de acces este
- constant
87. Caracteristica unui numar reprezentat in VM este un numar
- pozitiv
88. In cazul memoriilor organizate dupa metoda 1D cuvintele de memorie sunt amplasate sub
forma
- vectoriala
89. Ciclul C0a1C1a2C0 poate fi reprezentat ca cilcul
- C=(2,5)
90. Reprezentarea in C2 a numarului -13 (pe 4+1 biti) este
- 10011
91. Hazardul RAW se produce atunci cand
- o instructiune citeste un registru inainte ca o instructiune precedenta sa scrie in acel
registru
92. La iesirea unui sistem pipeline este elaborat un rezultat
- in fiecare ciclu de ceas
93. Planul de executie al programului in cazul metodei VLIW este elaborat de
- compilator
94. Dispozitivul slave este acel dispozitiv care
- asteapta cererea de transfer de date pe magistrala
95. In fiecare din momentele T1,T2,...,Tn generate de generator de faze utilizat de UCC cu
decodificator
- sunt activate semnalele de comanda cerute de codul instructiunii
96. In organizarea look-through
- magistrala sistem nu este ocupata cu transferul blocurilor de date intre M1 si M2
97. In strategia write-back
- cuvantul modificat este copiat in memoria principala in momentul eliminarii din
memoria cache a blocului din care face parte
98. Prin localitate temporala se intelege faptul ca
- datele sau instructiunile referite recent au o probabilitate ridicata de a fi referite in
viitorul apropiat
99. O microinstructiune orizontala este interpretata in modul urmator
- Se activeaza toate semnalele de comanda carora le corespunde un bit de 1 in campul
semnalelor de comanda si se dezactiveaza cele carora le corespunde un bit de 0. Daca conditia
indicata de campul de conditie este falsa, se executa urmatoarea microinstructiune din
microprogram. Conditia indicata de campul de conditie este adevarata, se executa
microinstructiunea indicata de campul de adresa.
100. Ce reprezinta figura urmatoare (incepe cu un patratel cu OV in mij)?
- un sumator paralel de n biti
101. Daca adresa virtuala de baza nu se gaseste in TLB se procedeaza astfel
- blocul care contine adresa virtuala cautat este adus din memoria primara in TLB
102. Prin paralelism la nivel de instructiune se intelege
- posibilitatea de executie simultana a instructiunilor independete.
103. Inmultirea prin metoda Booth opereaza asupra unor numere reprezentate in
- C2
104. Memoria cache este
- utilizata temporar pentru pastrarea unei portiuni a datelor si instructiunilor in vederea
utilizarii imediate.
105. Un sumator serie de n biti calculeaza suma celor doua numere dupa
- n cicli de ceas
106. In cazul stivei implementate in memorie
- adresa de baza a stivei ramane fixa, in timp ce adresa care indica varful stivei se
modifica la fiecare operatie de introducere si eliminare din stiva
107. Magistrala VESA a fost proiectata pentru procesorul
-486
108. Strategia cel mai putin recent utilizata de inlocuire blocurilor are dezavantajul ca
- necesita o logica complicata care poate mari timpul de acces la memoria cache
109. In cazul metodei scoreboard, tabela de stare a unitatilor functionale urmareste
hazardurile
- war
110. Pentru pastrarea oridinii de executie a instructiunilor intre care exista dependente un
procesor superscalar utilizeaza
- metoda tabelei de rezultate
111. Latenta interzisa este
- numaru de ciclii de ceas dintre doua semne x ale aceluiasi etaj
112. Indicatorul de conditie Zero din cuvant de stare al programului are valoarea 1 atunci
cand
- rezultatul operatiei este zero
113. Baza unui sistem de numeratie este data de
- numarul de simboluri permise pentru reprezentarea numerelor
114. In cazul impartirii cu refacerea restului partial
- bitul Qn nu participa la deplasare
115. Tehnica pipeline reprezinta o metoda de imbunatatire a performantelor
-unui procesor
116. Timpul de acces a memoriei cache in comparatie cu cea a memoriei principale este
- mai mic
117. Care este rolul registrului B din schema urmatoare
- memoreaza unul dintre cele doua numere ce trebuie adunate
118. Existenta unui numar redus de formate ale instructiunilor este caracteristica
- arhitecturilor RISC
119. In cazul metodei scoreboard, care sunt instructiunile care se executa in ordinea din
program
- instructiunile dependente
120. In cazul inmultirii Booth rezultatul se gaseste in registrul combinat A_Q pe primele
- 2n+1 pozitii
121. Magistrala ISA a fost utilizata in versiunile
- de 8 si 16 biti
122. Problema intarzierii introduse de etaje se rezolva prin
- realizarea mai multor copii ale etajului care produce intarzierea
123. Un ciclu instructiune reprezinta
- totalitatea prelucrarilor efectuate de UCP pentru executia unei singure instructiuni
124. Intr-o arhitecturile cu flux de date statica o instructiune este validata atunci cand
- toti operanzii necesari sunt receptionati si o alta instructiune asteapta rezultatul
acestei instructiuni
125. Indicatorul de conditie Egal din cuvant de stare al programului are valoarea 1 auntci cand
- rezulta o egalitate in urma unei operatii de comparare
126. Cadrele de pagina sunt
- blocuri de memorie de aceasi dimensiune cu paginile
127. La o UCC cu decodificator codul instructiunii ca fi decodificat cu ajutorul unui
decodificator care
- activeaza un singur semnal de iesire
128. Reimprospatarea este operatia prin care
- informatia este rescrisa in memorie
129. In cazul inmultirii Booth daca doi biti succesivi ai inmultitorului sunt 01 se efectueaza
- o adunare a deinmultitului urmata de deplasarea produsului partial la dreapta
130. In cazul impartirii cu refacerea restului partial rezultatul final se regaseste astfel
- catul in registrul Q, restul in registrul A.
131. In cazul metodei Tomasulo, magistrala comuna de date permite ca
- o instructiune aflata in curs de executie sa poata avea acces la rezultatul unei
instructiuni precedente inainte ca rezultatul acestei instructiuni sa fie inscris in registrul
destinatie
132. Conversia unui numar intreg din baza p in baza q cu proprietatea q=pr, unde r este
numar intreg, se realizeaza mai simplu prin
- partitionarea de la dreapta spre stanga a numarului din din baza p in grupe de cate r
cifre si inlocuirea fiecarei grupe cu echivalentul sau in baza q
133. La un multicalculator transferul datelor intre doua noduri care nu sunt interconectate
- se realizeaza utilizand un mecanism cu transmitere de mesaje.
134. Un numar reprezentat in VM care are C=255 si F=0 reprezinta
- + sau infinit
135. In cazul magistralei sincrone
- fiecare transfer dureaza un numar intreg de perioade de ceas
136. Un etaj al unui sistem pipeline consta
- dintr-un registru de intrare si un circuit de prelucrare
137. Strategiile de inlocuire a blocurilor din memoria cache stabilesc
- care bloc trebuie eliminat atunci cand blocul ce trebuie adus nu mai are loc
138. Calculatoarele CISC sunt caracterizate de
- un numar mare de instructiuni, un numar mai mare de noduri de adresare, o putere de
calcul mai ridicata a instructiunilor individuale, registre mai specializate
139. Metoda Hamming se utilizeaza pentru
- corectarea erorilor
140. In cazul sistemului de bus mastering, prioritatile stabilite de unitatea ISP sunt:
- Reimprospatarea memorie/Transferuri DMA/ Unitatea procesor UCP/ Placi bus-
master
141. Sumatorul serie de n biti se compune din
- doua registre de deplasare de cate n biti fiecare, cu posibilitatea de incarcare paralele,
un sumator elemtentar si un element de intarziere de un tact.

142. Subciclul de indirectare urmeaza intodeauna dupa subciclul de
- extragere
143. In cazul sistemelor de operare multitasking procesoarele sunt izolate intre ele deoarece
-au spatii de adresa distincte si nu pot accesa in mod direct datele celorlalte procese
144. Organizarea look-aside are dezavantajul ca
- transferurile de blocuri intre M1 si M2 ocupa magistrala sistem, care nu va fi
disponibila pentru alte operatii, cum sunt transferurile de I/E
145. Procesoare vectoriale de tip pipeline sunt controlate de
- siruri continue de date
146. Adresa de inceput a paginii in memoria principala se calculeaza cu relatia
- nr. Cadru x dim.cadru+deplasament
147. Prin paralelism la nivel de instructiune se intelege
- posibilitatea de executie simultana a instructiunilor independete
145. In figura se prezinta tabela de rezervare a unui sistem pipeline
-static cu 3 etaje(staticu cu 5 etaje/dinamic cu 3 etaje)
146. Memoria virtuala are rolul
- de a permite utilizarea memorie principale si a celei secundare ca pe o memorie unica
adresabila direct
147. In cazul metodei scoreboard, un registru sursa este disponibil daca
- nu apare ca registru destinatie pentru nici o unitate anterioara
148. Ce reprezinta blocurile S0-Sn-1 din schema urmatoare?
- Sumatoare elementare
149. O microinstructiune este formata din urmatoarele campuri
- campul semnalelor de comanda pentru controlul UCP, campul semnalelor de
comanda pentru magistrala siste, campul de conditii, campul de adresa
150. In cazul inmultirii Booth daca doi biti succesivi ai inmultitorului sunt 00 se efectueaza
- o deplasare a produsului partial la dreapta
151. Magistrala cea mai eficienta este magistrala
- asincrona
152. La un sistem multiprocesor cu legatura slaba
- fiecarui procesor i se ataseaza o memorie locala, dar cu posibilitatea de a accesa si
memoria locala a altor procesoare
153. Instructiunile cel mai greu de gestionat de un sistem pipeline sunt
- salturile conditionate
154. In cazul memoriei cache cu mapare directe cautarea unui bloc se face in functie de
- index
155. In figura urmatoare este prezentat subciclul de
- indirectare (extragere/intrerupere)
156. Inconsistenta memoriei cache trebuie evitata
- in cazul sistemelor multiprocesor si in cazul sistemelor uniprocesor daca exista un
controler sau procesor de I/E care are un acces direct la memoria principala, independent de
UCP
157. Procesoare matriciale sunt controlate
- siruri continue de instructiuni
158. Registrele UCP sunt memorii
- rapide care pot fi accesate intr-un ciclu de ceas
159. In cazul unitatilor de memorie cu acces asociativ un cuvant este regasit pe baza
- unei parti a continutului acestuia
160. Inmultirea cu 2 a unui numar binar este echivalenta cu
- deplasarea la stanga cu o pozitie a numarului
161. Mantisa unui numar reprezentat in virgula mobila este memorata sub forma
- 1,F
162. Prin implemenarea functiilor prin firmware se intelege
- descrierea functiei printr-o succesiune de microoperatii.
163. Operatia de impartire se realizeaza prin efectuarea
- unor scaderi succesive ale impartitorului din deimpartit
164. Generator de faze utilizat de o UCC cu decodificator are rolul de a
- asigura secventierea in timp a semnalelor de comanda
165. Primele 128 de caractere ale standardului UCS-2 reprezinta
- codul ASCII
166. Magistralele amplasate in apropierea UCP se numesc
- magistrale locale
167. In Branch Target Buffer BTB se pastreza
- adresele instructiunilor de salt, adresele destinatiei saltului si statisticile de predictie
168. In cazul metodei EPIC sarcina de a impacheta operatiile independente intr-o instructiune
MultiOp revine
- compilatorului
169. Numerele denormalizate se utilizeaza pentru reprezentarea valorilor
- foarte mici
170. Alocarea de spatiu in memorie dupa algoritmul primul potrivit
- favorizeaza formarea unor zone libere la adresele mari de memorie
171. La un sumator serie de n biti suma celor doua numere rezultatul se memoreaza
- intr-unul din cele doua registre de memorare in care au fost memorati operanzii.
172. Magistrala LPC conecteaza la southbridge
- perifericele lente
173. Rata de transfer a unei magistrale se masoara in
-cuvinte/secunda
174. Instructiunile de salt pot reduce performantele unui sistem pipeline deoarece
- atunci cand saltul este executat este necesara golirea sistemului
175. Instructiunea ADD R1, X este implementata prin urmatoarele microinstructiuni
- t1: RA<_RI(ADR)
T2:RD<_MEM
T3:R1<_R1+RD
176. In cazul metodei Tomasulo, cand o instructiune lansata in executie desemneaza un
registru de date ca destinatie, bitul busy al acestui registru va fi
- setat
177. Prin distanta Hamming se intelege
- numarul pozitiilor in care doua cuvinte de cod difera
178. Prin proces se intelege
- un program lansat in executie
179. Memoria cache este amplasata
- intre memoria principala si UCP
180. La deplasarea la dreapta a numerelor negative reprezentate in C2, pe pozitia ramasa
libera se introdu cifra
- 1
181. Magistrala MCA
- nu este compatibila cu magistralele ISA
182. Mantisa unui numar denormalizat este memorata sub forma
- 0,F

183. Etajele unui sistem pipeline functioneaza
- sincron
184. Arhitecturile CISC utilizeaza unitati de comanda
- microprogramate
185. Memoriile PROM sunt scrise
- dupa procesul de fabricatie si nu mai pot fi rescrise
186. O celula de memorie SRAM este realizata
- dintr-un numar mare de tranzistori motiv pentru care are un pret mai ridicat
187. Ciclul C0a1C1a2C0 poate fi reprezentat ca cilcul
- C=(1,2)
188. Prin localitate secventiala se intelege faptul ca
- majoritatea instructiunilor dintr-un program sunt executate intr-o ordine secventiala
189. Bitul de paritate este utilizat pentru a detecta
- erori de un bit la transmiterea datelor
190. Strategiile write-back si write-through sunt utilizate Pentru cei interesai
- a reduce inconsistenta memoriei cache
191. In cazul metodei scoreboard, tabela de stare a unitatilor functionale arata daca o unitate
functionala
- este ocupata si precizeaza registrul de destinatie si starea registrelor sursa
192. Metodele de predictie statica a salturilor
- necesita mai putine circuite, dar pot determina cresterea complexitatii compilatorului.
193. Resursele individual ale unui fir de executie sunt
- stiva, registrii CPU si un contor program
194. In cazul unei magistrale prin transfer in mod burst se intelege un transfer in care are loc
- o singura faza de adresare urmata de mai multe faze de date
195. Principiul inmultirii prin metode Booth consta in inlocuirea inmultirii unui grup compact
de 1 cu
- adunarea deinmultitorului corespunzator primului bit din grup majorat cu un ordin de
marime si scaderea deinmultitului corespunzator ultimului 1 din grup
196. Campul de adresa al unei microinstructiuni contine
- adresa urmatoarei microinstructiuni care va fi executata, daca o anumita conditie este
adevarata
197. Secventa de instructiuni
ADDR1, R2,R3
ADDR1,R4,R5
Reprezinta un hazard de tip
- WAW

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