Documente Academic
Documente Profesional
Documente Cultură
cuvinte
n biti pe cuvant
k linii de adresa
Write
n linii de date de intrare
n linii de date de iesire
ARHITECTURA CALCULATOARELOR 46
Anca Vasilescu
vasilex@info.unitbv.ro
Cele k linii de adres furnizeaz un numr binar pe k bii care
precizeaz care cuvnt s fie ales din cei 2
k
existeni n memorie. Cele dou
intrri de control (Read i Write) dau direcia de transfer a datelor solicitate.
Memoria ROM este de dimensiuni mici i permite numai citirea
informaiilor din ea. Aceste informaii sunt scrise n memoria ROM printr-o
tehnologie special de ctre firma productoare a calculatorului o dat pentru
totdeauna.
In sistemul de calcul, un ROM este folosit pentru memorarea
programelor fixe (care nu se modific n timpul funcionrii SC) i a tabelelor
de constante care nu-i schimb valoarea n sistem.
Intr-o unitate de control, o memorie ROM poate fi folosit pentru
conservarea informaiilor codificate care reprezint secvene de variabile
interne de control necesare pentru activarea a diferite operaii n sistem. O
unitate de control care folosete ROM pentru memorarea informaiilor binare
de control este numit unitate de control cu microprogram (microprogrammed
control unit).
Memoria ROM este nevolatil, deci coninutul ei este permanent, adic
nu este influenat de deconectarea sistemului de la reeaua electric.
O memorie ROM de tip mxn este un tablou de celule binare organizate
n m cuvinte a cte n bii fiecare. Pentru m=2
k
avem o memorie ROM de tipul:
Memoria ROM nu are nevoie de linii de control de tip Read deoarece n
fiecare moment cele n linii de ieire furnizeaz automat cei n bii ai cuvntului
selectat prin valoarea adresei de intrare. Mai mult, deoarece valorile biilor n
ROM au valori fixe, acest tip de memorie nu are nevoie de circuite proprii de
stocare a datelor, aa cum ntlnim la RAM.
Observaie. Iniial, acronimul RAM era folosit pentru memorie cu acces
aleator la informaia stocat. Astzi, el este folosit pentru memorii de tip
Read/Write pentru a l diferenia de memoria ROM, care este i ea cu acces
aleator la informaie.
mxn ROM
m=2
k linii de intrare de adresa
n linii de date de iesire
ARHITECTURA CALCULATOARELOR 47
Anca Vasilescu
vasilex@info.unitbv.ro
1.4. Proiectarea calculatoarelor moderne
Dup Patterson i Hennessy [5], se pot anuna patru principii de baz
ale proiectrii tehnologiei hardware, pe care le enumerm n continuare.
Principiul 1. Simplitatea favorizeaz uniformitatea [5, pag.97].
Principiul 2. Mai mic nseamn mai rapid [5, pag.99].
Principiul 3. Proiectarea bun necesit compromisuri bune [5, pag.108].
Principiul 4. Cazul frecvent trebuie fcut s aib execuie rapid [5, pag.133].
Rezumat.
Totalitatea componentelor destinate stocrii datelor formeaz unitatea
de memorie a sistemului de calcul. Acest paragraf detaliaz aspecte concrete
legate de structura i organizarea memoriei calculatoarelor moderne. Astfel,
sunt abordate diferite puncte de vedere: (1) structura fizic a memoriei, (2)
structura ierarhic de organizare, (3) structura intern dependent de tipologia
memoriei.
Cuvinte cheie.
bit, bit de informaie, bistabil
locaie de memorie, octet, cuvnt
principiul localizrii, principiul vecintii, cache
memorie cu acces aleator
Verificare.
1. Calculai capacitatea total de memorare (n megabytes) a unei dischete
cu dou fee i care este formatat cu urmtoarele constante: 80 piste
(cilindri), 18 sectoare, 524 octei pe bloc (un bloc const ntr-un sector de
pe o pist). Capacitatea unui bloc este dat de 512 octei de date propriu-
zise i 12 octei auxiliari (necesari marcrii nceputului blocului i
localizrii acestuia).
2. Uzual, o pagin de text are 40 linii cu 75 de caractere pe linie. Cte pagini
de astfel de text se pot memora pe un CD de 600MB?
3. Folosii principiile de organizare a memoriei cache pentru a justifica
caracteristicile acesteia.
4. Care este capacitatea unei memorii cu 12 linii de intrare de adres i 16
linii de ieire (intrare) pentru date?
5. Incercai s justificai cele patru principii de baz ale proiectrii hardware
enunate de Patterson i Hennessy.
NOTIE
ARHITECTURA CALCULATOARELOR 48
Anca Vasilescu
vasilex@info.unitbv.ro
ARHITECTURA CALCULATOARELOR 49
Anca Vasilescu
vasilex@info.unitbv.ro
CAPITOLUL 2
Componentele digitale ale unui sistem de calcul
ARHITECTURA CALCULATOARELOR 50
Anca Vasilescu
vasilex@info.unitbv.ro
CUPRINS
CAPITOLUL 2 ---------------------------------------------------------------------------------------------------- 49
2.1. CIRCUITE LOGICE ------------------------------------------------------------------------------------- 51
2.1.1. Pori logice. CLC. CLS -------------------------------------------------------------------------- 51
2.1.2. CLC aritmetice------------------------------------------------------------------------------------ 54
2.1.2.1. CLC sumator -------------------------------------------------------------------------------- 54
2.1.2.2. CLC scztor -------------------------------------------------------------------------------- 58
2.1.2.3. CLC sumator cu comutare----------------------------------------------------------------- 61
2.1.3. CLC decodoare ----------------------------------------------------------------------------------- 63
2.1.4. CLC multiplexoare ------------------------------------------------------------------------------- 64
2.1.5. CLS bistabile -------------------------------------------------------------------------------------- 66
2.1.6. Circuite integrate --------------------------------------------------------------------------------- 71
2.2. REGITRI ------------------------------------------------------------------------------------------------ 74
2.2.1. Regitri cu ncrcare paralel ------------------------------------------------------------------ 74
2.2.2. Regitri de deplasare----------------------------------------------------------------------------- 75
2.2.3. Numrtoare binare ----------------------------------------------------------------------------- 77
2.2.4. Regitri de incrementare ------------------------------------------------------------------------ 79
2.3. STRUCTURA DE BAZ A UNUI CALCULATOR ------------------------------------------------------- 81
2.3.1. Regitrii principali ai unui sistem de calcul -------------------------------------------------- 81
2.3.2. Unitatea de contorizare i control ------------------------------------------------------------- 82
2.3.3. Transferul datelor pe magistral --------------------------------------------------------------- 82
ARHITECTURA CALCULATOARELOR 51
Anca Vasilescu
vasilex@info.unitbv.ro
Un sistem digital este un ansamblu de componente care concur la
prelucrarea datelor i la executarea instruciunilor primite. Aceste componente
constau din circuite logice, grupate n componente aritmetice, decodoare,
regitrii .a. Conectate la magistralele sistemului, aceste componente
interacioneaz i astfel, ndeplinesc misiunea primit de la utilizator.
In capitolul de fa vom decrie aceste componente interne.
2.1. Circuite logice
2.1.1. Pori logice. CLC. CLS
Informaia binar este reprezentat n sistemul de calcul digital prin
cantiti fizice, numite semnale, care se transmit conform cu construcia
intern a fiecrei componente. Cele mai simple semnale electrice sunt de tip
on / off.
Pentru descrierea funcionrii calculatorului este util s construim
pentru componentele de baz traseul semnalelor electrice, adic s
prezentm componentele respective prin circuitele logice interne.
Semnalele electrice sunt date de anumite tensiuni i se regsesc n
sistem n una din dou stri posibile. Aceste stri corespund valorilor unei
variabile binare, adic 0 sau 1. De exemplu, un SC particular poate lucra cu o
tensiune de 3V pentru starea corespunztoare valorii 1 i o tensiune de 0.5V
pentru starea corespunztoare valorii 0. In acest caz, intrrile n CLC
recunosc tensiuni de 0.5V i 3V, iar la ieire circuitul rspunde cu o tensiune
egal tot cu una dintre aceste valori.
Pentru buna nelegere a celor ce urmeaz este util s introducem aici
cteva noiuni.
Dac notm B
2
= {0,1} i B
2
n
= B
2
xB
2
x...xB
2
atunci sunt imediate
urmtoarele definiii:
Definiia 1. Se numete funcie logic o aplicaie f : B
2
n
> B
2
m
.
Definiia 2. Dac m = 1 atunci funcia logic se numete scalar.
Altfel, spunem c avem o funcie logic vectorial.
Reprezentarea unei funcii logice se poate da prin tabel de valori
(tabel de adevr), prin expresie logic sau prin circuitul logic asociat.
In practic se remarc unele funcii, numite funcii logice elementare:
I LOGIC (conjuncia), SAU LOGIC (disjuncia), NU LOGIC (negarea sau
complementarea). Circuitele logice asociate acestor funcii se numesc pori
logice elementare.
Convenim s notm conjuncia multiplicativ, disjuncia aditiv i negarea
prin operatorul apostrof.
Caracterizarea funciilor logice elementare este dat n tabelul urmtor:
ARHITECTURA CALCULATOARELOR 52
Anca Vasilescu
vasilex@info.unitbv.ro
Nume Simbol grafic Expresie logic
I LOGIC
x = a b
sau x = a b
SAU LOGIC
x = a + b
NU LOGIC
x = a
Tabelele de valori pentru aceste funcii sunt:
a b a b a b a+b a a
0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
Pe lng porile logice elementare, reprezentarea cu circuite apeleaz
la porile logice ale unor funcii uzuale. Acestea sunt: NAND, NOR, XOR i
NXOR, definite i caracterizarte conform cu urmtorul tabel:
Nume Simbol grafic Expresie logic
NAND
i nu
x = (a b)
NOR
sau nu
x = (a + b)
XOR
sau exclusiv
(anticoinciden)
x = ab + ab =
= a b
x
a
b
x
a
b
x a
x
a
b
x
a
b
x
a
b
ARHITECTURA CALCULATOARELOR 53
Anca Vasilescu
vasilex@info.unitbv.ro
NXOR
NOR exclusiv
(echivalen)
(coinciden)
x = ab + ab =
= (a b)
Funciile uzuale introduse anterior sunt definite de urmtoarele tabele
de valori:
a b (a b) a b (a+b) a b a b a b (a b)
0 0 1 0 0 1 0 0 0 0 0 1
0 1 1 0 1 0 0 1 1 0 1 0
1 0 1 1 0 0 1 0 1 1 0 0
1 1 0 1 1 0 1 1 0 1 1 1
Pentru simplificarea funciilor logice trebuiesc cunoscute un minim de
identiti din algebra boolean:
(1) a + 0 = a (10) a 0 = 0
(2) a + 1 = 1 (11) a 1 = a
(3) a + a = a (12) a a = a
(4) a + a = 1 (13) a a = 0
(5) a + b = b + a (14) ab = ba
(6) a + (b + c) = (a + b) + c (15) a(bc) = (ab)c
(7) a(b + c) = ab + ac (16) a + bc = (a + b)(a + c)
(8) (a + b) = ab (17) (ab) = a + b
(9) (a) = a
Definiia 3. Dac o funcie este reprezentat prin circuit logic atunci
argumentele funciei sunt intrri n circuit, iar valorile funciei, pentru fiecare
combinaie a valorilor de intrare, reprezint ieirile din circuit.
Definiia 4. Un circuit logic combinaional (CLC) este un circuit logic
n care valorile de pe ieiri depind numai de valorile de intrare n circuit. Altfel,
dac ieirile depind i de intrri i de strile intermediare ale componentelor
interne ale circuitului, atunci avem un circuit logic secvenial (CLS).
Prin convenie, un circuit logic combinaional cu n intrri i m ieiri se
reprezint astfel:
x
a
b
ARHITECTURA CALCULATOARELOR 54
Anca Vasilescu
vasilex@info.unitbv.ro
In paragrafele urmtoare vom detalia analiza unor circuite logice care
se remarc prin importana pe care o au n sistemele de calcul.
2.1.2. CLC aritmetice
Pentru efectuarea operaiilor aritmetice sistemul de calcul este
prevzut cu componente specializate care alctuiesc unitatea aritmetico-
logic, UAL. Structura intern a acestor componente este dat de circuite
logice combinaionale construite astfel nct s determine la ieire rezultatul
operrii valorilor de intrare.
In acest paragraf ne referim la componentele UAL pentru efectuarea
operaiilor aritmetice.
2.1.2.1. CLC sumator
Fie dou numere naturale A i B date n reprezentare binar pe n
poziii prin:
A = a
n
a
n 1
a
2
a
1
a
0
i
B = b
n
b
n 1
b
2
b
1
b
0
.
Observaie. Dac cifrele semnificative ale unuia dintre numere nu
ocup toate cele n poziii atunci acestea se ncarc prin aliniere la dreapta i
zona neocupat se ncarc cu zerouri.
Notm cu S suma celor dou numere A i B. Reprezentarea binar a
lui S este S = s
n
s
n 1
s
2
s
1
s
0
.
Scopul acestui paragraf este s construiasc un circuit logic
combinaional care s aib ca intrri valorile cifrelor binare ale operanzilor i
ca ieiri cifrele binare ale sumei, numit CLC sumator total. Schematic, acesta
se reprezint astfel:
.
.
.
CLC
.
.
.
1
2
n
1
2
m
+
2
a
0 b
0
s
0
T
0
+
a
1 b
1
s
1
T
1
+
a
n b
n
s
n
T
n
...
+
a
n-1 b
n-1
s
n-1
T
n-1
T
n-2
ARHITECTURA CALCULATOARELOR 55
Anca Vasilescu
vasilex@info.unitbv.ro
Am notat cu T
i
, i = 0, 1,n-1,n cifra de transport de la rangul i la rangul
i + 1. Deoarece cifra de transport de la ultimul rang, T
n
, face parte din rezultat,
ieirea aceasta s-a legat la mas. In consecin, ea va fi citit ca i cifr
rezultat mpreun cu cifrele s
0
, s
1
, , s
n
ale sumei S.
In reprezentarea de mai sus se disting dou tipuri de circuite, i anume:
a) circuit de adunare cu dou intrri i dou ieiri, numit circuit
semisumator i
b) circuit de adunare cu trei intrri i dou ieiri, numit circuit sumator
complet.
Avem circuit semisumator pentru operare pe rangul zero, n care se
adun cifrele operanzilor i rezult cifra sumei i cifra de transport. In rest,
pentru operarea pe celelalte ranguri, avem circuite sumatoare complete, n
care se adun cifrele operanzilor cu cifra de transport de la rangul anterior i
rezult cifra sumei i cifra de transport la rangul urmtor.
a) Circuitul semisumator se reprezint schematic astfel:
Fiecare ieire corespunde unei funcii logice. Pentru descrierea
funcionrii circuitului vom determina mai nti expresiile logice ale acestor
funcii.
Tabla adunrii n baza 2 determin urmtorul tabel de valori pentru
funciile s
0
i T
0
:
a b a+b a
0
b
0
s
0
T
0
0 0 0 0 0 0 0
0 1 1 => 0 1 1 0
1 0 1 1 0 1 0
1 1 10 1 1 0 1
De aici putem deduce urmtoarele expresii logice:
s
0
= a
0
b
0
+ a
0
b
0
= a
0
b
0
i
T
0
= a
0
b
0
.
Corespunztor, circuitul logic semisumator se reprezint prin
urmtoarele pori logice:
+
2
a
0 b
0
s
0
T
0
ARHITECTURA CALCULATOARELOR 56
Anca Vasilescu
vasilex@info.unitbv.ro
b) Circuitul sumator complet pentru adunarea cifrelor binare de rang
i se reprezint schematic astfel:
Pentru descrierea funcionrii circuitului vom proceda ca i n cazul
circuitului semisumator. Pentru nceput, determinm expresiile logice ale
funciilor s
i
i T
i
de ieire.
Avem urmtorul tabel de valori pentru funciile s
i
i T
i
:
a
i
b
i
T
i-1
s
i
T
i
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
De aici putem deduce urmtoarele expresii logice:
s
i
= a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
=
= (a
i
b
i
+ a
i
b
i
) T
i-1
+ (a
i
b
i
+ a
i
b
i
) T
i-1
=
= (a
i
b
i
)T
i-1
+ (a
i
b
i
) T
i-1
=
= T
i-1
(a
i
b
i
)
i
s
0
a
0
b
0
T
0
T
i-1
+
a
i b
i
s
i
T
i
ARHITECTURA CALCULATOARELOR 57
Anca Vasilescu
vasilex@info.unitbv.ro
T
i
= a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
+ a
i
b
i
T
i-1
=
= (a
i
b
i
+ a
i
b
i
) T
i-1
+ a
i
b
i
(T
i-1
+ T
i-1
) =
= (a
i
b
i
) T
i-1
+ a
i
b
i
=
= a
i
b
i
+ T
i-1
(a
i
b
i
).
Corespunztor, circuitul logic sumator complet se reprezint prin
urmtoarele pori logice:
Pentru a reprezenta circuitul sumator total mai avem un singur pas,
care const n determinarea unei expresii pentru T
i
care s nu fie recursiv.
Notm
P
i
:= a
i
b
i
, () i= 0,1,2,, n i
G
i
:= a
i
b
i
, () i= 0,1,2,, n.
Cu aceste notaii, sunt imediate urmtoarele relaii:
s
0
= P
0
, T
0
= G
0
,
i
T
1
= G
1
+ P
1
T
0
= G
1
+ P
1
G
0
,
T
2
= G
2
+ P
2
T
1
= G
2
+ P
2
G
1
+ P
2
P
1
G
0
,
T
3
= G
3
+ P
3
G
2
+ P
3
P
2
G
1
+ P
3
P
2
P
1
G
0
.
De aici, putem anuna c, pentru orice i, este verificat relaia
T
i
= G
i
+ P
i
G
i -1
+ P
i
P
i -1
G
i -2
+ + P
i
P
i 1
P
1
G
0
.
Evident, relaia este complet justificat dup aplicarea unei inducii
matematice.
Folosind aceast relaie pentru T
i
, suntem acum n msur s
construim circuitul sumator total. Pentru simplitatea reprezentrii vom alege
n=3, adic situaia n care fiecare operand are 4 poziii binare.
s
i
a
i
b
i
T
i
T
i-1
a
i
b
i
a
i
b
i
ARHITECTURA CALCULATOARELOR 58
Anca Vasilescu
vasilex@info.unitbv.ro
Expresiile logice pentru cifrele sumei sunt:
s
0
= P
0
;
s
1
= G
0
P
1
;
s
2
= (G
1
+ P
1
G
0
) P
2
;
s
3
= (G
2
+ P
2
G
1
+ P
2
P
1
G
0
) P
3.
2.1.2.2. CLC scztor
Urmnd paii construciei din paragraful anterior, vom descrie aici
circuitul logic combinaional care determin diferena a dou numere naturale.
Fie cele dou numere naturale A i B date n reprezentare binar pe n
poziii prin:
A = a
n
a
n 1
a
2
a
1
a
0
i
B = b
n
b
n 1
b
2
b
1
b
0
.
Notm cu D diferena celor dou numere A i B. Reprezentarea binar
a lui D este D = d
n
d
n 1
d
2
d
1
d
0
.
a
0
b
0
a
1
b
1
a
3
b
3
a
2
b
2
G
0
P
0
G
1
P
1
G
2
P
2
G
3
P
3
s
0
s
1
s
2
s
3
G
0
P
0
G
1
P
1
G
2
P
2
G
3
P
3
ARHITECTURA CALCULATOARELOR 59
Anca Vasilescu
vasilex@info.unitbv.ro
Circuitul logic combinaional scztor are ca intrri valorile cifrelor
binare ale operanzilor i ca ieiri cifrele binare ale diferenei.
Schematic, acesta se reprezint astfel:
Am notat cu I
i
, i = 0, 1,n-1,n cifra de mprumut de la rangul i+1 la
rangul i. Deoarece cifra de mprumut pentru ultimul rang, I
n
, face parte din
rezultat, ieirea aceasta s-a legat la mas. In consecin, ea va fi citit ca i
cifr rezultat mpreun cu cifrele d
0
, d
1
, , d
n
ale diferenei D.
In reprezentarea de mai sus se disting dou tipuri de circuite, i anume:
a) circuit de scdere cu dou intrri i dou ieiri, numit circuit
semiscztor i
b) circuit de scdere cu trei intrri i dou ieiri, numit circuit scztor
complet,
cu precizrile introduse la circuitul sumator.
a) Circuitul semiscztor se reprezint schematic astfel:
Pentru descrierea funcionrii circuitului vom determina expresiile ale
funciilor logice de ieire, I
0
i d
0
.
a
0
b
0
d
0
I
0
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
2
a
0 b
0
d
0
I
0
a
1 b
1
d
1
I
1
a
n b
n
d
n
I
n
...
a
n-1 b
n-1
d
n-1
I
n-1
I
n-2
2
a
0 b
0
d
0
I
0
ARHITECTURA CALCULATOARELOR 60
Anca Vasilescu
vasilex@info.unitbv.ro
De aici putem deduce urmtoarele expresii logice:
d
0
= a
0
b
0
+ a
0
b
0
= a
0
b
0
i
I
0
= a
0
b
0
.
Corespunztor, circuitul logic semiscztor se reprezint prin
urmtoarele pori logice:
b) Circuitul scztor complet pentru scderea cifrelor binare de rang
i se reprezint schematic astfel:
Expresiile logice ale funciilor de ieire d
i
i I
i
sunt date de urmtorul
tabel de valori. Calculul const n a
i
I
i 1
b
i
i rezult cifra d
i
a diferenei i
mprumutul I
i
.
a
i
b
i
I
i-1
d
i
I
i
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
De aici putem deduce urmtoarele expresii logice:
d
i
= a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
=
= (a
i
b
i
+ a
i
b
i
) I
i-1
+ (a
i
b
i
+ a
i
b
i
) I
i-1
=
= (a
i
b
i
)I
i-1
+ (a
i
b
i
) I
i-1
=
= I
i-1
(a
i
b
i
)
d
0
a
0
b
0
I
0
I
i-1
a
i b
i
d
i
I
i
ARHITECTURA CALCULATOARELOR 61
Anca Vasilescu
vasilex@info.unitbv.ro
i
I
i
= a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
+ a
i
b
i
I
i-1
=
= (a
i
b
i
+ a
i
b
i
) I
i-1
+ a
i
b
i
(I
i-1
+ I
i-1
) =
= (a
i
b
i
) I
i-1
+ a
i
b
i
=
= a
i
b
i
+ I
i-1
(a
i
b
i
).
Corespunztor, circuitul logic scztor complet se reprezint prin
urmtoarele pori logice:
2.1.2.3. CLC sumator cu comutare
Expresiile logice pentru funciile de ieire din circuitele aritmetice
anterioare au fost:
s
0
= a
0
b
0
= d
0
s
i
= T
i-1
(a
i
b
i
), () i= 1..n
d
i
= I
i-1
(a
i
b
i
), () i= 1..n
i, respectiv,
T
0
= a
0
b
0
I
0
= a
0
b
0
T
i
= a
i
b
i
+ T
i-1
(a
i
b
i
), () i= 1..n
I
i
= a
i
b
i
+ I
i-1
(a
i
b
i
), () i= 1..n.
Analiznd aceste formule i circuitele asociate lor, se observ o mare
asemnare i faptul c celula de scdere are n plus dou pori NU care
genereaz termenii a
i
i (a
i
b
i
).
Pornind de la aceast observaie, se pune problema realizrii unui
circuit capabil s efectueze att adunri ct i scderi.
Construirea acestui circuit se bazeaz pe proprietatea de comutare a
porii XOR, care const n urmtoarea afirmaie. Dac se consider o poart
XOR cu o intrare de date notat x i cu a doua intrare notat c atunci
funcionarea ei este dat de urmtoarea tabel de valori:
d
i
a
i
b
i
I
i
I
i-1
a
i
b
i
a
i
b
i
ARHITECTURA CALCULATOARELOR 62
Anca Vasilescu
vasilex@info.unitbv.ro
x c y = x c
0 0 0
0 1 1
1 0 1
1 1 0
i poate fi interpretat prin:
y =
=
=
1 ,
0 ,
c x
c x
.
Astfel, putem denumi intrarea c ca fiind intrare de comutare (sau de
condiie) deoarece valoarea ei este cea care decide dac pe ieirea din
poarta XOR avem valoarea de pe intrare sau complementara (negarea) ei.
Cu acestea, se poate construi un circuit care s efectueze att adunare
ct i scdere, pe care l vom numi circuit sumator cu comutare. Pentru
operarea pe rangul i, acest circuit va consta din urmtoarele pori logice:
Dac pe intrarea c punem valoarea 0 atunci circuitul funcioneaz
ca sumator, iar pentru c = 1, ca scztor.
Semnificaiile pentru intrarea T
i-1
/ I
i-1
i ieirile s
i
/ d
i
, T
i
/ I
i
trebuiesc
citite la numrtor, respectiv la numitor. Astfel, dac c=0 atunci valoarea pus
pe intrarea T
i-1
/I
i-1
reprezint cifr de transport (T
i-1
), iar pentru c=1 reprezint
cifr de mprumut (I
i-1
). In consecin, valorile pe ieiri se corespund astfel: s
i
i T
i
pentru c=0 i respectiv d
i
i I
i
pentru c=1.
Intrarea de condiie este folosit de dou ori i anume pentru
comutarea valorii lui a
i
i a valorii a
i
b
i
. Prin comutarea valorii lui a
i
se
asigur c, pentru c=0, la ieirea din poarta XOR avem a
i
, iar pentru c=1, la
ieirea din poarta XOR avem a
i
. In acest fel, formula pentru valoarea depus
pe ieirea a doua folosete pe a
i
, dac c=0 i pe a
i
, dac c=1. Acest mod de
calcul este corect i respect formulele logice pentru T
i
(T
i
= a
i
b
i
+ ),
respectiv I
i
(I
i
= a
i
b
i
+ ).
T
i
/ I
i
s
i
/ d
i
a
i
b
i
T
i-1
/ I
i-1
(a
i
c)b
i
(0/1)c
(a
i
b
i
) c
ARHITECTURA CALCULATOARELOR 63
Anca Vasilescu
vasilex@info.unitbv.ro
2.1.3. CLC decodoare
In sistemul de calcul informaia este reprezentat prin codificare binar.
Un cod binar de n bii poate s reprezinte pn la 2
n
informaii codificate
distincte.
Un decodor este un circuit logic combinaional care convertete
informaia dat binar pe n intrri n cele 2
n
ieiri posibile. Dac, dintre cele n
intrri, unele sunt invalidate atunci decodorul va avea mai puin de 2
n
ieiri.
S considerm un decodor cu trei intrri, a, b, c, toate valide. Rezult
c acesta va avea 8 = 2
3
ieiri. Algebric, funciile pentru cele 8 ieiri sunt date
de expresiile celor 8 termeni canonici de tip produs: abc, abc, abc, abc,
abc, abc, abc, abc.
Un astfel de decodor se mai numete de tip 3x8.
Deoarece termenii canonici implementai pe ieiri sunt disjunctivi,
rezult c, indiferent de combinaia valorilor pe intrri, o singur ieire va avea
valoare 1 logic, celelalte avnd valoarea 0 logic.
O aplicaie imediat a acestui decodor este conversia numerelor din
binar n octal. Concret, reprezentarea binar dat pe intrarea n decodor
corespunde cifrei octale egal cu rangul ieirii care are valoarea 1 logic.
a a b b c c
a
b
c
D
0
= abc
D
1
= abc
D
2
= abc
D
3
= abc
D
4
= abc
D
5
= abc
D
6
= abc
D
7
= abc
a a b b c c
ARHITECTURA CALCULATOARELOR 64
Anca Vasilescu
vasilex@info.unitbv.ro
abc D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
000 1 0 0 0 0 0 0 0
001 0 1 0 0 0 0 0 0
010 0 0 1 0 0 0 0 0
011 0 0 0 1 0 0 0 0
100 0 0 0 0 1 0 0 0
101 0 0 0 0 0 1 0 0
110 0 0 0 0 0 0 1 0
111 0 0 0 0 0 0 0 1
Pentru controlul funcionrii unui decodor, de multe ori acesta este
prevzut cu o intrare de validare (Enable). Dac pe aceast intrare avem 0
logic atunci circuitul nu funcioneaz adic, toate ieirile sunt pe 0. Dac pe
intrarea Enable avem 1 logic atunci circuitul funcioneaz ca un decodor fr
validare.
2.1.4. CLC multiplexoare
Un multiplexor este un circuit logic combinaional care primete
informaie binar de pe una din cele 2
n
linii de date de intrare i o
direcioneaz spre ieirea sa unic. Linia de date este selectat prin n linii de
selecie (linii de adres).
a a b b c c
a
b
c
Enable
D
0
= abc
D
1
= abc
D
2
= abc
D
3
= abc
D
4
= abc
D
5
= abc
D
6
= abc
D
7
= abc
a a b b c c
ARHITECTURA CALCULATOARELOR 65
Anca Vasilescu
vasilex@info.unitbv.ro
Un multiplexor de tip 2
n
x1 are 2
n
linii de date de intrare i n linii de
selecie, ale cror combinaii de bii determin care dintre intrrile de pe liniile
de date este selectat pentru ieirea Y.
In figura urmtoare considerm un multiplexor de tip 4x1.
Acest multiplexor are 6 intrri = 4 de date + 2 de selecie i o ieire.
Selecia intrrii se face conform cu urmtoarea tabel:
s
1
s
0
Y
0 0 I
0
s
1
s
0
0 1 I
1
s
1
s
0
1 0 I
2
s
1
s
0
1 1 I
3
s
1
s
0
Pe coloana a patra am trecut monoamele elementare, care definesc
selectarea ieirii aa cum rezult din reprezentarea circuitului.
Observaii. Datorit funciei de a selecta una dintre intrrile n circuit,
un multiplexor se mai numete i selector de date (data selector). Abrevierea
pentru un multiplexor este MUX.
I
0
I
1
s
1
I
0
s
1
s
0
I
0
I
1
I
2
I
3
s
0
s
0
s
1
s
1
I
1
s
1
s
0
I
2
s
1
s
0
I
3
s
1
s
0
s
0
I
0
I
1
I
2
I
3
s
0
s
0
s
1
s
1
I
2
I
3
Y
ARHITECTURA CALCULATOARELOR 66
Anca Vasilescu
vasilex@info.unitbv.ro
2.1.5. CLS bistabile
Cele mai multe dintre sistemele de calcul, pe lng circuitele
combinaionale (CLC) au nevoie (n special pentru componentele de
memorare) i de circuite logice secveniale (CLS). Dintre acestea, cele mai
folosite sunt CLS sincrone sau cu sincronizare n timp. Un CLS sincron
lucreaz cu semnale care modific coninutul zonelor de memorie numai la
momente de timp discrete, bine determinate. Sincronizarea este asigurat de
un generator de impulsuri de tact (de ceas).
Un circuit basculant bistabil (pe scurt CBB sau bistabil dac se ine
cont de timpul de propagare a semnalului electric prin liniile de circuit, atunci
termenii nu sunt sinonimi [Tanenbaum, pag. 134]) este o structur de
memorare bazat pe CLS sincrone. Un bistabil i menine starea binar
curent pn cnd primete un impuls de ceas care intr n ansamblul de
pori logice i determin schimbarea de stare. Trecerea dintr-o stare n alta se
face numai la primirea unui impuls de tact extern.
Fiecare bistabil este capabil s memoreze un bit de informaie.
Bistabilii se difereniaz prin numrul de intrri i prin felul n care
valorile de intrare influeneaz starea bistabilului. Cele mai folosite tipuri de
bistabili sunt:
CBB de tip SR;
CBB de tip D;
CBB de tip JK;
CBB de tip T.
Pentru nceput vom prezenta aceste circuite n cazul asincron, urmnd
ca, n final, s prezentm i modelul sincron pentru bistabilul de baz, SR.
CBB de tip SR are trei intrri notate respectiv cu: S pentru Setare, R
pentru Resetare i C pentru intrarea de ceas i o ieire, notat Q (quit).
Auxiliar, un astfel de bistabil poate avea o ieire suplimentar cu valoare
egal cu ieirea principal negat.
Simbolic, acest bistabil se reprezint astfel:
Intrarea de ceas este marcat cu caracterul >. Un ceas este un circuit
care emite o serie de pulsuri cu o durat de puls precis i cu un interval
precis ntre pulsuri succesive. Intervalul de timp ntre fronturile
S
Q
>C
Q'
R
ARHITECTURA CALCULATOARELOR 67
Anca Vasilescu
vasilex@info.unitbv.ro
corespunztoare a dou pulsuri succesive se numete durat de ciclu (engl.,
clock cycle time). Frecvenele de puls (numrul de pulsuri n unitatea de timp) sunt n
general ntre 1 i 500 MHz, corespunznd perioadei de ceas de la 1000 ns la 2 ns.
Porile logice care asigur funcionarea acestui bistabil sunt dou pori
NOR interconectate. Prin interconectare nelegem c ieirile sunt repuse pe
intrri prin bucle de reacie. In figura urmtoare buclele de reacie sunt
figurate cu linie punctat.
Notm cu Q
t
valoarea pe ieirea Q a bistabilului la momentul t i cu
Q
t+1
valoarea pe aceeai ieire la momentul urmtor, t+1. Cu alte cuvinte, Q
t
d starea bistabilului nainte de aplicarea semnalelor S i R pe intrare, iar Q
t+1
d starea bistabilului dup aplicarea semnalelor respective.
Datorit existenei buclelor de reacie, rezult c starea Q
t+1
depinde de
intrrile S i R, dar i de starea anterioar, Q
t
.
Conform legrii porilor logice n reprezentarea de mai sus, expresia
logic pentru Q
t+1
este
Q
t+1
= (R + (S + Q
t
)) = R (S + Q
t
) = RS + RQ
t
.
Aceast expresie determin urmtoarea tabel de valori pentru
schimbarea de stare (Q
t
> Q
t+1
) a bistabilului de tip SR:
S R Q
t
Q
t+1
0 0 0 0 fr modificare de stare
0 0 1 1 (Q
t+1
coincide cu Q
t
)
0 1 0 0 punere pe 0 (resetare)
0 1 1 0
1 0 0 1 punere pe 1 (setare)
1 0 1 1
1 1 0 0(*) stare nedeterminat
1 1 1 0(*) (comenzi interzise)
Observaie. Pentru intrarea (1,1), funcionarea teoretic a circuitului
determin valoarea 0 pentru Q
t+1
, indiferent de starea anterioar a bistabilului,
S
R
Q
Q
ARHITECTURA CALCULATOARELOR 68
Anca Vasilescu
vasilex@info.unitbv.ro
Q
t
. Cu toate acestea, practic, datorit ntrzierilor care apar n sistem la
transmiterea semnalelor, starea Q
t+1
este nedeterminat (nu se stabilizeaz,
chiar dup mai multe reveniri pe buclele de reacie). In acest caz spunem c
funcionarea bistabilului este ambigu.
Din tabelul anterior rezult cum depinde starea urmtoare Q
t+1
de
valorile puse pe intrrile n bistabil, S i R.
S R Q
t+1
0 0 Q
t
fr modificare de stare
0 1 0 resetare = punere pe 0
1 0 1 setare = punere pe 1
1 1 ? situaie imprecis (nedeterminat)
Din afirmaiile anterioare se poate trage concluzia c un bistabil de tip
SR nu funcioneaz ntotdeauna corect. De aceea, se impune stabilirea unei
relaii pe care trebuie s o verifice valorile puse pe intrrile S i R astfel nct
bistabilul s nu intre ntr-o stare nedeterminat. Aceast ecuaie este
SR = 0,
i ea asigur c cel puin una dintre valorile de intrare este 0. Cu alte cuvinte,
se evit tocmai situaia n care ambele intrri sunt pe 1 logic.
CBB de tip D (Data) este uor modificat fa de CBB SR. Acesta are
o singur intrare de date (D), intrarea de tact (C) i ieirile identice cu tipul SR.
Pe intrarea D se insereaz un inversor, astfel c se obin dou direcii care
vor corespunde intrrilor S i R ale tipului SR.
Simbolul este:
Un bistabil de tip D se obine din SR prin urmtoarea modificare:
Din aceast modalitate de a lega intrarea D la intrrile S i R rezult:
a avea intrarea D n 0 logic este echivalent cu a avea 0 pe intrarea S
i 1 pe intrarea R;
D
Q
>C
Q
S
Q
>C
Q
R
D
ARHITECTURA CALCULATOARELOR 69
Anca Vasilescu
vasilex@info.unitbv.ro
a avea intrarea D n 1 logic este echivalent cu a avea 1 pe intrarea S
i 0 pe intrarea R.
Se observ c oricare ar fi valoarea pus pe intrarea n bistabilul de tip
D, acesta funcioneaz corect, deoarece este ntotdeauna verificat relaia
SR = 0.
Funcionarea bistabilului de tip SR determin urmtoarea tabel de
funcionare pentru bistabilul de tip D:
D Q
t+1
0 0 resetare = punere pe 0
1 1 setare = punere pe 1
CBB de tip JK are dou intrri de date, J i K, intrarea de tact, C i
ieirile identice cu tipul SR.
Din punctul de vedere al circuitelor interne, un bistabil JK este unul SR
completat cu dou pori SI i dou linii de reacie total. In figura urmtoare
liniile de reacie total sunt marcate cu linie punctat.
Aceast structur intern determin schimbarea de stare Q
t
> Q
t+1
conform cu urmtorul tabel:
J K Q
t
Q
t+1
0 0 0 0 fr modificare de stare
0 0 1 1 (Q
t+1
coincide cu Q
t
)
0 1 0 0 punere pe 0 (resetare)
0 1 1 0
J
Q
>C
Q
K
(S)
(R)
Q
Q
J
K
ARHITECTURA CALCULATOARELOR 70
Anca Vasilescu
vasilex@info.unitbv.ro
1 0 0 1 punere pe 1 (setare)
1 0 1 1
1 1 0 1 trecere n starea
1 1 1 0 complementar
Corespunztor, tabela de funcionare pentru bistabilul de tip JK este
urmtoarea:
J K Q
t+1
0 0 Q
t
Fr modificare de stare
0 1 0 Resetare = punere pe 0
1 0 1 Setare = punere pe 1
1 1 Q
t
Trecere n starea
complementar
Observaie. Despre bistabilul de tip JK putem spune c este primul
model de circuit secvenial veritabil. Aceasta deoarece, cnd avem (1,1) pe
intrrile J i K, starea urmtoare Q
t+1
se poate determina numai dac se
cunoate starea anterioar Q
t
.
CBB de tip T (Toggle = piron, crj) este un model de bistabil care
funcioneaz n doi timpi. Aceast afirmaie va fi pe deplin neleas dup
prezentarea funcionrii circuitului.
Simbolul de reprezentare este:
Un bistabil de tip T se obine din unul JK prin legarea intrrilor J i K la
aceeai intrare T, astfel:
Din aceast construcie rezult c bistabilul de tip T are dou variante
de funcionare, care coincid cu tipul JK pentru J = K = 0 i J = K = 1:
T
Q
>C
Q
J
Q
>C
Q
K
T
ARHITECTURA CALCULATOARELOR 71
Anca Vasilescu
vasilex@info.unitbv.ro
T Q
t+1
0 Q
t
Fr modificare de stare
1 Q
t
Trecere n starea
complementar
Observaie. Ct timp pe intrarea T avem 1 logic, circuitul intr n starea
complementar a strii curente i, apoi, la urmtoarea schimbare de stare,
revine n starea iniial. De aceea, se spune despre acest bistabil c
funcioneaz n doi timpi.
In ncheierea paragrafului referitor la bistabili prezentm modelul
sincron pentru bistabilul de tip JK. Se va vedea c acesta completeaz
modelul asincron cu dou pori SI care preiau valoarea logic pus pe intrarea
de tact, C.
In aceast reprezentare am pus n eviden i seciunile asincron i
sincron ale circuitului, care corespund celor dou componente de baz: un
CLC i un CLS.
2.1.6. Circuite integrate
Componentele digitale ale unui sistem de calcul sunt realizate cu
circuite logice integrate. Un circuit integrat (CI) este format dintr-un
semiconductor de siliciu, de dimensiuni foarte reduse, numit chip, care
conine componentele porilor logice. Mai multe pori logice sunt
interconectate in interiorul chip-ului astfel nct s formeze circuitul cerut.
Chip-ul este nchis ntr-o carcas de ceramic sau de material plastic, iar
conexiunile sunt sudate cu conductoare fine de aur la pinii de ieire pentru a
(S)
(R)
Q
Q
K
J
C
CLC
J
K
CLS
>
C
Q
Q
ARHITECTURA CALCULATOARELOR 72
Anca Vasilescu
vasilex@info.unitbv.ro
forma circuitul integrat. Numrul pinilor poate varia de la 14 pini la un pachet
integrat mic, pn la 1000 sau mai muli la un circuit mare.
O dat cu mbuntirea tehnologiilor de realizare a circuitelor
integrate, a crescut considerabil i numrul porilor care pot fi implementate
pe un acelai chip. Dup acest criteriu, diferena ntre chip-urile care au
cteva pori i cele care au sute de pori componente se face prin numele
acestora. Astfel, avem urmtoarele clase: CI pe scar joas, CI pe scar
medie, CI pe scar larg i CI pe scar foarte larg. Scara de integrare se
refer la numrul de componente electronice pe unitatea de suprafa a
circuitului integrat.
Dm n tabelul urmtor cteva caracteristici pentru aceste clase:
SSI Small Scale Integration mai puin de
10 pori
IN-OUT sunt conectate
direct la pinii circuitului
MSI Medium Scale Integration 10-200 pori folosite n decodoare,
sumatoare, regitri
LSI Large Scale Integration 200-cteva
sute de pori
includ procesoare,
chipuri de memorie,
module programabile
VLSI Very Large Scale Integration mii de pori dimensiuni mici, pre
redus, deci foarte
folosite n sistemele
moderne.
Circuitele logice integrate se pot clasifica i dup tehnologia de
fabricare, rezultnd familii de circuite logice. Fiecare familie logic de circuite
este reprezentat de un tip de circuit pe baza cruia se dezvolt toate
circuitele din acea familie. Comercial vorbind, structurile care s-au impus sunt:
CI de tip TTL (Transistor transistor logic);
CI de tip ECL (Emitter coupled logic);
CI de tip MOS (Metal oxide semiconductor);
Caracterizarea acestor tipuri de circuite integrate poate fi fcut astfel:
TTL originea = DTL (diode transistor
logic) care implementa poarta NAND
cu diode i tranzistori; ulterior s-au
nlocuit diodele cu tranzistori i, de
aceea repetm cuvntul trazistor n
denumire
tensiunea maxim aplicabil
este de 5V, iar valorile logice
0 i 1 corespund pentru 0V i
respectiv 3.5V;
ARHITECTURA CALCULATOARELOR 73
Anca Vasilescu
vasilex@info.unitbv.ro
ECL folosite n sisteme de vitez foarte
mare (supercalculatoare, procesoare
de semnale)
tranzistorii opereaz ntr-o
stare nesaturat, condiie care
determin o ntrziere n
propagarea semnalului de
maxim 1-2 nanosecunde;
MOS este un tip de CI care folosete
tranzistori unipolari, fa de TTL i
ECL care folosesc tranzistori
bipolari.
Rezumat.
Acest paragraf are ca obiectiv principal definirea principalelor circuite
logice care intr n structura unui circuit elementar de memorie (bistabil), a
unui registru (vezi paragraful al doilea) i/sau n structura unei UAL
elementare. Tipurile de circuite sunt prezentate gradat, de la simplu la
complex, aa cum se poate vedea i din lista de cuvinte cheie.
Pentru toate aceste prezentri teoretice de modele, n culegerea de
probleme sunt date exemple concrete de utilizare i interconectare a
circuitelor. Structura culegerii de probleme urmrete paragraf cu paragraf
cursul, astfel nct studenii pot rezolva problemele pas cu pas, pe msur ce
sunt parcurse la curs elementele teoretice. Ultimul paragraf al culegerii de
probleme conine o serie de exemple de sintez, unele fiind chiar modele
concrete de circuite interne ale calculatorului.
Cuvinte cheie.
circuit logic
poart logic, poart logic elementar, poart logic uzual
CLC, CLC aritmetic (sumator, scztor, sumator cu comutare),
decodor, multiplexor
CLS, CLS bistabil (SR, D, JK, T)
circuit integrat
NOTIE
ARHITECTURA CALCULATOARELOR 74
Anca Vasilescu
vasilex@info.unitbv.ro
2.2. Regitri
Un registru este un ansamblu de bistabili (circuite basculante bistabile,
CBB) i, eventual, pori logice care realizeaz schimbrile de stare ale
bistabililor. Grupul de bistabili care formeaz registrul pot fi ncrcai simultan,
sub aciunea unui impuls de tact unic.
Un registru de n bii are n bistabili i poate memora orice informaie
reprezentabil pe n bii. Porile logice au rolul de a controla cnd i cum o
informaie nou este transferat n registru.
Componentele unui sistem digital sunt complet definite de regitrii pe
care i conin i de operaiile care se execut asupra datelor lor. Operaiile
executate asupra datelor memorate n regitrii se numesc microoperaii.
Exemple: deplasare, numrare, ncrcare, tergere.
Pentru executarea fiecreia dintre aceste microoperaii exist structuri
bine determinate ale regitrilor respectivi. In paragrafele urmtoare vom
descrie structurile unora dintre aceti regitri.
2.2.1. Regitri cu ncrcare paralel
Structura unui astfel de registru este urmtoarea:
D
Q
>C
I
3
A
3
D
Q
>C
I
0
A
0
D
Q
>C
I
2
A
2
D
Q
>C
I
1
A
1
Clock
Load
ARHITECTURA CALCULATOARELOR 75
Anca Vasilescu
vasilex@info.unitbv.ro
Funcia unui registru cu ncrcare paralel este de a prelua valorile
logice puse pe intrrile de date, simultan pentru toate poziiile binare i la
primirea aceluiai impuls de ceas.
Acest registru const din patru bistabili de tip D, legai prin pori logice
de cele patru intrri de date I
0
, I
1
, I
2
, I
3
i de intrarea de validare, Load.
Rolul intrrii Load este de a dirija preluarea datelor de pe intrrile I
0
, I
1
,
I
2
, I
3
numai la primirea unui impuls de tact. Dac pe intrarea Load avem 0
logic atunci intrrile de date sunt inhibate i intrrile D n bistabili sunt
conectate respectiv cu ieirile Q. Dac pe Load avem 1 logic atunci valorile
depuse pe intrrile I
0
, I
1
, I
2
, I
3
, sunt ncrcate n registru.
Valorile logice considerate a fi memorate n registru n fiecare
moment sunt cele de pe liniile A
0
, A
1
, A
2
, A
3
.
Bistabilul de tip D nu are variant de funcionare fr modificare de
stare ci, la fiecare impuls de tact primit, valoarea preluat de bistabil pe
intrarea D este cea care determin urmtoarea stare la ieire. Pentru a pstra
valoarea la ieire nemodificat, ct timp nu se primete impuls de tact, este
necesar s meninem intrarea D egal cu valoarea curent de pe ieire.
Aceast funcionare este asigurat de conexiunile de reacie, care leag
fiecare ieire Q la intrarea corespunztoare n poart logic SI i, mai departe
la intrarea D a aceluiai bistabil.
Impulsul de tact se aplic pe intrarea Clock n fiecare moment. Cu
toate acestea, dac circuitul este dotat cu o intrare de validare de tip Load,
atunci ea este cea care decide dac urmtorul impuls de ceas va determina
ncrcarea simultan a datelor depuse pe intrrile de date sau preluarea pe
liniile de reacie a valorilor curente memorate n registru. Cu alte cuvinte,
intrarea Load decide dac registrul primete informaie nou sau informaia
memorat rmne nemodificat.
2.2.2. Regitri de deplasare
Un registru capabil s deplaseze, adic s translateze cu o poziie
informaia memorat de bistabilii si se numte registru de deplasare. In
funcie de construcia registrului, operaia de mutare (shift) se poate face spre
stnga, spre dreapta sau n ambele direcii.
Reprezentarea este:
Se observ c ieirea dintr-un bistabil este intrare n urmtorul. In plus,
funcionarea este sincronizat prin faptul c toate intrrile de ceas sunt legate
D Q
>C
D Q
>C
D Q
>C
D Q
>C
Serial Input Serial Output
Clock
ARHITECTURA CALCULATOARELOR 76
Anca Vasilescu
vasilex@info.unitbv.ro
la aceeai surs. Atfel, toi bistabilii vor primi la acelai moment impulsul de
tact care determin deplasarea informaiei.
Intrarea Serial Input conine informaia care se va memora n primul
bistabil, iar ieirea Serial Output va conine vechiul coninut al ultimului bistabil
al registrului de deplasare analizat.
Detaliem acest tip de registru prezentnd structura intern a unui
registru pe 4 bii care poate executa sau o deplasare, sau o ncrcare paralel
(simultan), n funcie de valorile puse pe intrrile de selecie ale circuitului.
Registrul const din patru multiplexoare conectate la patru bistabili de tip D.
D Q
>C
S
0
S
1
4 x 1
0 MUX0
1
2
3
I
0
A
0
D Q
>C
S
0
S
1
4 x 1
0 MUX2
1
2
3
I
2
A
2
D Q
>C
S
0
S
1
4 x 1
0 MUX 3
1
2
3
I
3
A
3
D Q
>C
S
0
S
1
4 x 1
0 MUX1
1
2
3
I
1
A
1
S
1
S
0
Serial Input
Serial Input
Clock
ARHITECTURA CALCULATOARELOR 77
Anca Vasilescu
vasilex@info.unitbv.ro
Reamintim c valorile memorate n registru la un moment dat sunt cele
de pe liniile A
0
, A
1
, A
2
, A
3
i ele se modific numai simultan, la primirea unui
nou impuls de tact.
Din schem se observ c:
fiecare MUX preia pe intrarea sa 0 valoarea curent din registru, transmis
pe linia de reacie;
fiecare MUX preia pe intrarea sa 1 valoarea din locaia de rang cu 1 mai
mic;
fiecare MUX preia pe intrarea sa 2 valoarea din locaia de rang cu 1 mai
mare;
fiecare MUX preia pe intrarea sa 3 valoarea depus pe intrarea de date
corespunztoare.
Aceast organizare este n concordan cu urmtoarea tabel de
funcionare. In funcie de valorile depuse pe intrrile de selecie S
0
i S
1
,
avem:
S
1
S
0
Intrarea selectat
de fiecare MUX
0 0 0 Fr modificare de stare
0 1 1 Shift Right (down)
1 0 2 Shift Left (up)
1 1 3 Incrcare paralel
Cele dou intrri Serial Input introduc valori noi n registru pe poziiile
eliberate de operaia de deplasare.
2.2.3. Numrtoare binare
O numrtoare este un registru care, la aplicarea impulsurilor de ceas,
urmeaz o succesiune prefixat de stri. In particular, numrtoarele binare
vor lucra pe secvene de valori binare. Aplicaiile imediate ale unui registru
numrtoare sunt:
contorizarea numrului de apariii ale unui eveniment;
cronometrarea necesar generrii semnalelor de control pentru secvenele
de operaii de executat n sistem.
Pentru o numrtoare binar pe 4 bii succesiunea de stri prin care
trece este urmtoarea: 0000 > 0001 > 0010 > 0011 > 0100 > 0101 >
0110 > 0111 > 1000 > 1001 > 1010 > 1011 > 1100 > 1101 > 1110
> 1111.
Realizarea circuitului de numrare const n transcrierea cu pori logice
a urmtoarei observaii: pentru a trece dintr-o stare n alta trebuie efectuate
operaiile:
ARHITECTURA CALCULATOARELOR 78
Anca Vasilescu
vasilex@info.unitbv.ro
1. LSB (bitul cel mai puin semnificativ) se complementeaz;
2. fiecare dintre ceilali bii se complementeaz numai dac n configuraia
anterioar a avut toi biii de rang mai mic egali cu 1.
De aici rezult c acest registru trebuie s foloseasc bistabili care au
posibilitatea de a trece n starea complementar a strii curente, deci bistabili
de tip JK sau T.
Concret, un registru de numrare pe patru bii are urmtoarea
structur:
Intrarea Count Enable este una de validare a funcionrii registrului,
deci decide care sunt impulsurile de tact care determin trecerea
Output carry
J Q
>C
K
J Q
>C
K
J Q
>C
K
J Q
>C
K
Count Enable
Clock
A
3
A
2
A
1
A
0
ARHITECTURA CALCULATOARELOR 79
Anca Vasilescu
vasilex@info.unitbv.ro
numrtoarei din starea curent n starea urmtoare. Aa cum este construit
circuitul, schimbarea de stare are loc cnd pe Count Enable avem 1 logic.
Conform cu operaia a doua care trebuie efectuat la orice schimbare
de stare, valoarea curent din fiecare locaie a registrului influeneaz
valoarea ncrcat n fiecare dintre poziiile de rang mai mare. Aceast
proprietate este asigurat prin faptul c fiecare linie A
i
este legat n
cascad prin pori SI la intrrile n toi bistabilii de rang mai mare.
Ieirea Output Carry are semnificaie de cifr de transport. Aceasta
este folosit n situaia n care configuraia curent este 1111 i numrtoarea
ar trebui s treac n configuraia urmtoare, 10000. Avnd numai patru bii,
registrul va reine 0000, iar bitul 1 va fi transmis pe ieirea de transport,
Output Carry.
2.2.4. Regitri de incrementare
Un registru de incrementare reprezint fizic microoperaia de
incrementare. Prin aceasta, valoarea urmtoare care se ncarc n registru
este egal cu valoarea anterioar plus 1.
Pentru realizarea unui registru de incrementare se poate folosi
structura unei numrtoare binare sau se poate construi un CLC de
incrementare.
Dac se efectueaz o microoperaie de incrementare pe n bii atunci
circuitul logic combinaional de incrementare este un sumator format din n
semisumatoare, dintre care cel corespunztor rangului zero are o intrare
egal cu 1.
Pentru CLC de incrementare pe 4 bii reprezentarea este:
Rezumat.
Considernd cunoscute structurile de circuite introduse anterior, n
acest paragraf sunt descrise structurile interne la nivel de poart logic pentru
principalii regitri de microoperaie.
Pentru fiecare astfel de registru se va insista n mod special pe
nelegerea modului de funcionare ca circuit secvenial. De asemenea, un
pas important n nelegerea acestor modele const n identificarea rolului
fiecrui circuit elementar n ansamblul constructiv al unui registru i, n plus,
studentul trebuie s poat rspunde concret, n fiecare caz n parte, la
ntrebri de genul: care este rolul n circuit a fiecrei componente, se poate
1
I
0
A
0
T
0
I
1
A
1
T
1
I
3
A
3
T
3
+
2
I
2
A
2
T
2
+
2
+
2
+
2
ARHITECTURA CALCULATOARELOR 80
Anca Vasilescu
vasilex@info.unitbv.ro
nlocui o component intern cu o alta, care este ctigul/pierderea n cazul
unei astfel de nlocuiri .a.m.d.
Cuvinte cheie.
registru
microoperaie (ncrcare, deplasare, numrare, incrementare)
NOTIE
ARHITECTURA CALCULATOARELOR 81
Anca Vasilescu
vasilex@info.unitbv.ro
2.3. Structura de baz a unui calculator
Un calculator minimal const din 8 regitri de baz, o unitate de
memorie i o unitate de contorizare i control. Intre aceste componente
trebuie s existe linii de comunicare, care formeaz magistrale.
In acest paragraf vom lua n discuie aceste componente, mai puin
unitatea de memorie care a fost prezentat anterior.
2.3.1. Regitrii principali ai unui sistem de calcul
In sistemul de calcul, instruciunile de executat sunt memorate n locaii
succesive i sunt executate secvenial. Exist o unitate de control care citete
o instruciune de la o adres precizat din memorie, o execut, apoi citete
urmtoarea instruciune, o execut, .a.m.d. Pentru o astfel de prelucrare,
trebuie s existe:
1. o unitate de calcul care s determine n fiecare moment adresa de
memorie a urmtoarei instruciuni de executat;
2. o unitate care s memoreze codul surs al instruciunii citite;
3. regitri de manipulare a datelor;
4. regitri de memorare a diferitelor adrese care intervin n program.
Pentru aceste funcii, regitrii unui SC pe 16 bii sunt:
Nr
crt
Simbol Nr. de
bii
Nume Funcie
1 DR 16 Data register Reine un operand memorat
2 AR 12 Address register Reine o adres de memorie
3 AC 16 Accumulator Registru de prelucrare
4 IR 16 Instruction register Reine cod de instruciune
5 PC 12 Program counter Reine adresa unei instruciuni
6 TR 16 Temporary register Reine date intermediare
7 INPR 8 Input register Reine un caracter de intrare
8 OUTR 8 Output register Reine un caracter de ieire
Deoarece registrul DR are 16 = 2
4
bii rezult c n acest registru se vor
putea reprezenta 2
16
combinaii binare. Lungimea lui DR este egal cu
lungimea cuvntului sistemului de calcul. Rezult c acest registru recunoate
2
16
: 2
4
= 2
12
= 4096 cuvinte (1 cuvnt = 2 octei = 16 bii = 2
4
bii).
Registrul AR are 12 bii deoarece pe att se reprezint adresele de
memorie.
Registrul PC reine adresa urmtoarei instruciuni care trebuie citit din
memorie dup ce instruciunea curent va fi executat.
ARHITECTURA CALCULATOARELOR 82
Anca Vasilescu
vasilex@info.unitbv.ro
2.3.2. Unitatea de contorizare i control
Cronometrarea pentru toate registrele sistemului este asigurat de o
unitate (ceas) care genereaz impulsuri de tact.
Un impuls de ceas nu schimb starea unui registru dect dac aceasta
este o operaie permis conform cu un semnal de control. Acesta este
generat de unitatea de control a sistemului de calcul.
Exist dou tipuri de organizare a controlului: control bazat pe circuite
i control microprogramat. Prima variant presupune implementarea
semnalelor de control prin pori logice, bistabili, decodoare, .a. Fiecare
comand de control se regsete n sistem prin starea circuitelor pe care le
traverseaz. In organizarea microprogramat, informaia de control este
stocat n memorie. Aceast zon de memorie este programat s iniializeze
secvena de microoperaii de executat. Fiecare comand de control nseamn
o actualizare a programului memorat.
Funcia de control care specific o microoperaie este o variabil
binar, numit variabil de control. Una din valorile binare va corespunde
executrii microoperaiei asociate, iar cealalt valoare nu modific starea
regitrilor din sistem. Intr-un sistem bazat pe comunicare pe magistrale,
semnalele de control care dau microoperaiile sunt grupuri de bii care
selecteaz intrrile n MUX, decodoare i n componentele UAL.
Unitatea de control iniializeaz executarea secvenial pentru seturi de
microoperaii. La un moment dat, anumite microoperaii au fost deja
iniializate, n timp ce altele au rmas inactive.
In orice moment, valorile curente ale variabilelor de control se
reprezint printr-un ir de bii, numit cuvnt de control. Astfel, cuvintele de
control pot fi programate s execute diferite operaii asupra componentelor
sistemului.
O unitate de control ale crei variabile binare sunt stocate n memorie
este o unitate de control microprogramat. Zona de memorie care
pstreaz variabilele de control se refer prin memorie de control. Fiecare
cuvnt din memoria de control reprezint o microinstruciune. O
microinstruciune reunete una sau mai multe microoperaii recunoscute n
sistem. O secven de microinstruciuni formeaz un microprogram.
Dac, odat ce unitatea de control este activat, microprogramul nu se
mai modific atunci memoria de control poate fi o memorie de tip ROM. In
acest caz, coninutul cuvntului de la o anumit adres din aceast zon de
memorie reprezint o microinstruciune.
2.3.3. Transferul datelor pe magistral
Un calculator digital trebuie s fie prevzut cu ci de transfer pentru
informaiile memorate n regitri. Pentru aceasta, o schem eficient este
sistemul cu magistral comun.
O structur de magistral const ntr-un set de linii comune, cte una
pentru fiecare bit al unui registru, prin care informaia binar este transferat
ARHITECTURA CALCULATOARELOR 83
Anca Vasilescu
vasilex@info.unitbv.ro
la momente de timp predefinite. Pentru fiecare transfer, se selecteaz un
registru prin semnale de control depuse pe magistral.
O modalitate de a construi un sistem cu magistral comun folosete
multiplexoare. Acetia selectez informaia din registrul surs, care este apoi
depus pe magistral.
Reprezentarea acestui sistem este dat n figura urmtoare:
Se observ c MUX0 multiplexeaz cei patru bii 0 ai regitrilor, MUX1,
biii 1, MUX2 biii 2 i MUX3, biii 3. Ieirile celor patru multiplexoare folosite
formeaz magistrala comun cu patru linii de date.
In funcie de combinaiile pe intrrile de selecie, pe magistral se
depune coninutul unui registru sau al altuia astfel:
S1 S0 Register selected
0 0 A
0 1 B
1 0 C
1 1 D
Rezumat.
In acest paragraf sunt enumerai principalii regitrii care intr n
structura unui calculator elementar. Detalierea unor aspecte legate de
structura i rolul n sistem a acestor regitrii va face obiectul capitolului al
treilea i al patrulea.
S
1
S
0
4x1
MUX 3
4x1
MUX 2
4x1
MUX 1
4x1
MUX 0
3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
Registrul D Registrul C Registrul B Registrul A
D
3
C
3
B
3
A
3
D
2
C
2
B
2
A
2
D
1
C
1
B
1
A
]
D
0
C
0
B
0
A
0
ARHITECTURA CALCULATOARELOR 84
Anca Vasilescu
vasilex@info.unitbv.ro
Partea central a acestui paragraf o constituie exemplul de transfer de
date din regitri pe magistral. Pentru acest exemplu studenii trebuie s
poat justifica structura fiecrei componente (MUX, registru) folosite.
NOTIE
ARHITECTURA CALCULATOARELOR 85
Anca Vasilescu
vasilex@info.unitbv.ro
CAPITOLUL 3
Unitatea central de prelucrare
ARHITECTURA CALCULATOARELOR 86
Anca Vasilescu
vasilex@info.unitbv.ro
CUPRINS
CAPITOLUL 3 ---------------------------------------------------------------------------------------------------- 85
3.1. TRANSFERUL DATELOR (ENGL., DATAPATH) ------------------------------------------------------- 87
3.2. ORGANIZAREA STIVEI --------------------------------------------------------------------------------- 91
3.3. MICROOPERAIE. INSTRUCIUNE. PROGRAM ---------------------------------------------------- 95
3.4. CODURILE INSTRUCIUNILOR ----------------------------------------------------------------------- 96
3.5. MODURI DE ADRESARE------------------------------------------------------------------------------ 100
3.6. CLASIFICAREA INSTRUCIUNILOR ---------------------------------------------------------------- 102
3.6.1. Instruciuni pentru transferul datelor -------------------------------------------------------- 104
3.6.2. Instruciuni pentru manipularea datelor ---------------------------------------------------- 104
3.6.3. Instruciuni pentru controlul programului -------------------------------------------------- 105
3.7. PRELUCRAREA INSTRUCIUNILOR UNUI PROGRAM -------------------------------------------- 111
3.8. MICROPROCESORUL -------------------------------------------------------------------------------- 111
3.8.1. Caracteristici ----------------------------------------------------------------------------------- 112
3.8.2. Setul de instruciuni ale microprocesorului ------------------------------------------------- 114
3.8.3. Modelarea funcionrii unui procesor ------------------------------------------------------- 115
3.8.3.1. Maina cu trei adrese --------------------------------------------------------------------- 115
3.8.3.2. Maina cu o adres ----------------------------------------------------------------------- 118
3.8.4. Structura intern de baz a unui microprocesor I 80x86 --------------------------------- 122
3.9. COPROCESOARE MATEMATICE -------------------------------------------------------------------- 125
3.10. MULTIPROCESARE ----------------------------------------------------------------------------------- 125
ARHITECTURA CALCULATOARELOR 87
Anca Vasilescu
vasilex@info.unitbv.ro
Componenta calculatorului care efectueaz cea mai mare parte a
operaiilor de prelucrare a datelor este numit unitatea central de
prelucrare, prescurtat UCP (n englez, CPU).
UCP const din trei pri fundamentale, reprezentate n figura
urmtoare:
Regitrii memoreaz datele intermediare folosite n timpul executrii
instruciunilor. Unitatea aritmetico logic, UAL, execut microoperaiile
solicitate. Unitatea de control supervizeaz transferul informaiilor ntre
regitrii i anun UAL asupra urmtoarei operaii de efectuat.
In acest capitol vom descrie modul n care comunic regitrii cu UAL
prin intermediul liniilor de magistral i vom explica mecanismul de lucru cu
stiva. Apoi, vom descrie tipuri pentru formatele instruciunilor, moduri de acces
la memorie i instruciuni care trebuiesc s existe n setul minimal al oricrui
SC. In final, vom fi n msur s abordm componenta fizic fundamental a
unui calculator, procesorul.
3.1. Transferul datelor (engl., datapath)
Locaiile de memorie sunt necesare pentru a stoca pointeri, rezultate
ale diferitelor numrri, adrese de revenire, rezultate intermediare, produse
pariale, .a.m.d. Pentru a scurta timpul de acces la zonele de memorie care
pstreaz aceste date, practic, acestea se memoreaz n regitrii de
prelucrare (processor registers). Cnd n UCP exist un numr mare de
regitri, se recomand ca acetia s fie conectai prin linii de magistral, de tip
common bus system.
Organizarea unei magistrale pentru apte regitri UCP (conectai la
UAL comun) ar putea fi cea de pe pagina urmtoare.
Ieirea din fiecare registru este conectat la dou MUX pentru a forma
cele dou magistrale A i B. Liniile de adres ale fiecrui MUX selecteaz un
registru sau linia de date pentru una dintre magistrale. Datele de pe
magistralele A i B reprezint intrrile n UAL comun. Operaia selectat n
UAL determin tipul microoperaiei care se va efectua. Rezultatul
microoperaiei este disponibil pentru linia de date de ieire, care este legat la
intrrile tuturor regitrilor. Un decodor selecteaz registrul care va prelua
informaia de pe Output i activeaz intrarea de control Load pentru preluarea
datelor n acel registru. Apoi, asigur transferul de date ntre Output i intrarea
n registru destinaie selectat.
Notm: SELA intrarea de selecie pentru MUX A, SELB intrarea de
selcie pentru MUX B, OPR selectorul de operaie pentru UAL i SELD
selectorul registrului destinaie pentru decodor.
Controlul
functionarii SC
Registri
UAL
ARHITECTURA CALCULATOARELOR 88
Anca Vasilescu
vasilex@info.unitbv.ro
In acest exemplu avem 14 intrri de selecie n circuit: 3 pentru SELA,
3 pentru SELB, 3 pentru SELD i 5 pentru OPR. Combinaia valorilor pe
aceste intrri formeaz cuvntul de control (control word). Acesta se
reprezint astfel:
Cei trei bii de pe intrrile SELA selecteaz registrul surs pentru
intrarea A a UAL, iar SELB selecteaz registrul surs pentru intrarea B a UAL.
Cei trei bii ai SELD selecteaz registrul destinaie folosind decodorul i cele 7
ieiri de validare a ncrcrii, Load. In concluzie, cuvntul de control aplicat pe
intrrile de selecie precizeaz o microoperaie, conform cu urmtoarele
tabele:
SELA SELB SELD OPR
3 3 3 5
Input
R1
R2
R3
R4
R5
R6
6666
666
R7
MUX A MUX B
SELA
SELB
Unitatea aritmetico logica
UAL
OPR
Output
3x8
Decodor
SELD
Load
(7 linii)
Bus A
Bus B
ARHITECTURA CALCULATOARELOR 89
Anca Vasilescu
vasilex@info.unitbv.ro
Registrul selectat de
Coninutul
pentru
SELA SELB SELD
000 Input Input nimic
001 R1 R1 R1
010 R2 R2 R2
011 R3 R3 R3
100 R4 R4 R4
101 R5 R5 R5
110 R6 R6 R6
111 R7 R7 R7
Coninutul
pentru OPR
Operaia Simbolul
00000 Transfer A TSFA
00001 Increment A INCA
00010 Add A + B ADD
00101 Substract A B SUB
00110 Decrement A DECA
01000 AND A i B AND
01010 OR A i B OR
01100 XOR A i B XOR
01110 Complement A COMA
10000 Shift right A SHRA
11000 Shift left A SHLA
Rezumat.
Acest paragraf conine un exemplu de datapath (cale a datelor) pentru
comunicare ntre UAL i regitri. Scopul acestui exemplu este dublu: pe de o
parte s familiarizeze studenii cu un ansamblu complex de componente
logice care include i linii de comunicare (magistrale) i, pe de alt parte, s
exemplifice conceptul de cuvnt de control (structur i utilizare). Acest al
doilea obiectiv este important n perspectiva nelegerii codului de instruciune,
respectiv a formatului de descriere a programului de executat la nivelul
procesorului.
Verificare.
1. Pentru exemplul de cale a datelor (engl. datapath) prezentat anterior,
rspundei la urmtoarele cerine:
ARHITECTURA CALCULATOARELOR 90
Anca Vasilescu
vasilex@info.unitbv.ro
a) justificai tipul decodorului 3x8;
b) cum se modific structura de date dac UAL reprezint codul
operaiilor pe 7 bii?
c) este posibil s conectm la o astfel de magistral 3 regitri; cum se
modific dimensiunile componentelor logice n acest caz?
d) dimensiunea regitrilor este determinat? Depind alte dimensiuni
de dimensiunea regitrilor?
2. Pe modelul datapath anterior, se cere:
a) s se aleag valori concrete pentru coninutul celor apte regitri
pe patru bii;
b) s se execute urmtorul program de control:
01010001100010
10001111101100
00111000110000
11100111100001
NOTIE
ARHITECTURA CALCULATOARELOR 91
Anca Vasilescu
vasilex@info.unitbv.ro
3.2. Organizarea stivei
O structur important care este inclus n unitatea central de
prelucrare la majoritatea SC este cea de stiv sau list de tip LIFO. Aici, prin
stiv vom nelege o unitate de memorare care se manipuleaz astfel nct
ultima dat introdus este prima care se prelucreaz.
Intr-un sistem de calcul digital, stiva este n esen o unitate de
memorie cu un registru de adres care execut o singur operaie, anume
cea de contorizare (numrare), dup ce a fost ncrcat cu o valoare iniial.
Registrul care pstreaz adresa pentru stiv se numete pointer de stiv
(stack pointer, SP). Valoarea acestuia ntotdeauna pointeaz spre entitatea
ncrcat n vrful stivei.
Operaiile care se pot efectua asupra unei stive sunt cele de inserare
i tergere. Inserarea se mai numete push, iar tergerea, pop.
In stiva unui SC nu se insereaz i nu se terge nimic. Aceste
operaii sunt simulate prin incrementarea i decrementarea valorii din
registrul SP.
Stiva SC poate fi depus ntr-o zon contigu de memorie sau poate fi
organizat ca o colecie finit de cuvinte de memorie sau de regitri. Pentru
un registru de stiv cu 64 cuvinte de memorie, reprezentarea schematic
este:
Registrul SP conine o valoare binar egal cu adresa cuvntului care
este la momentul respectiv n vrful stivei.
In acest exemplu avem trei entiti n stiv: A, B i C. C este n vrful
stivei, astfel c n SP avem valoarea 3.
FULL EMTY
SP
C
B
A
DR
Adresa
63
3
2
1
0
ARHITECTURA CALCULATOARELOR 92
Anca Vasilescu
vasilex@info.unitbv.ro
Pentru a terge vrful stivei, se efectueaz o operaie pop pe stiv prin
citirea cuvntului de memorie de la adresa 3 i decrementarea coninutului lui
SP. Astfel, SP memoreaz valoarea 2, adic pointeaz la B i coninutul B
este considerat n vrful stivei. Practic, C a fost citit, nu mai este n vrful
stivei, dar nu a fost eliminat din stiv.
Pentru a insera un element n stiv se efectueaz o operaie push prin
incrementarea valorii lui SP i scrierea cuvntului la urmtoarea adres liber.
Pentru o stiv de 64 cuvinte de memorie, SP are 6 bii deoarece
64 = 2
6
. Astfel, SP nu poate memora o valoare mai mare dect 63 = 111111.
Cnd 63 este mrit cu o unitate rezultatul este 0 deoarece
111111 + 1 = 1000000
i SP reine biii cel mai puin semnificativi, adic 000000.
Analog, cnd 000000 este decrementat cu 1, rezultatul este 111111.
Pentru analizarea acestor situaii particulare, se folosesc doi regitri
speciali, fiecare de 1 bit, numii FULL i EMTY. Registrul FULL este setat pe 1
cnd stiva este plin, iar EMTY este setat pe 1 cnd stiva este vid.
Registrul de date DR reine ceea ce se va scrie n stiv la urmtoarea
operaie push sau ceea ce s-a citit din stiv la ultima operaie pop.
Funcionarea stivei const n precizarea operaiilor elementare pentru
push i pop.
Iniial, SP este ters, deci are valoare 0, EMTY este setat pe 1 i FULL
este setat pe 0. Astfel, SP pointeaz cuvntul de la adresa 0.
Dac stiva nu este plin atunci este permis o operaie push prin:
(SP) < (SP) + 1
[SP] < (DR)
IF (SP) = 0 THEN FULL < 1
EMTY < 0
Dac stiva nu este goal atunci este permis o operaie pop prin:
(DR) < [SP]
(SP) < (SP) 1
IF (SP) = 0 THEN EMTY < 1
FULL < 0
Observaie. Prin SP ne referim la dresa registrului SP, prin (SP) ne
referim la coninutul registrului SP, iar prin [SP] ne referim la coninutul de la
adresa coninut de registrul SP.
Memoria rezervat pentru stiv poate fi o unitate individual sau
poate fi implementat ntr-un RAM ataat UCP. Implementarea unei stive n
UCP se face prin asignarea unei zone de memorie pentru operaiile pe stiv i
prin folosirea unui registru de prelucrare care s ndeplineasc funciile lui SP.
In reprezentarea de pe pagina urmtoare memoria SC este mprit n
trei segmente: segment de program, segment de date i stiva.
ARHITECTURA CALCULATOARELOR 93
Anca Vasilescu
vasilex@info.unitbv.ro
Registrul PC, Program Counter, pointeaz la adresa urmtoarei
instruciuni din programul de executat. Registrul de adres AR pointeaz un
ir de date. SP pointeaz spre vrful stivei. Cei trei regitri sunt conectai la o
magistral comun de adrese i numai unul poate depune o adres n
memorie.
Registrul PC este folosit pentru a citi o instruciune de executat. AR
este folosit n execuie pentru a citi un operand. SP este folosit pentru a
simula inserarea sau tergerea unui element din stiv.
Cele mai multe SC nu au componente hardware care s verifice
situaiile de operare pe stiv n configuraii improprii, cum ar fi depirile de tip
overflow, pentru stiv plin i underflow, pentru stiv vid. Limitele stivei pot
fi verificate prin mecanisme soft, de exemplu prin folosirea a doi regitri de
prelucrare: unul va memora adresa cea mai mic a cuvintelor de memorie
rezervate stivei, iar cellalt adresa cea mai mare. Cu acestea, dup o operaie
push, SP se va compara cu primul registru, iar dup o operaie pop, cu
valoarea din al doilea registru.
Observaie. In exemplul stivei pe 64 cuvinte de memorie, o inserare n
stiv corespunde unei operaii de mrire a adresei la care se ncarc
coninutul lui DR. In exemplul urmtor, n care am reprezentat stiva pe o zon
de memorie de la adresa 4001 la 3000, o inserare n stiv corespunde unei
micorri a adresei de memorie la care se ncarc coninutul registrului DR.
De acest aspect trebuie inut cont n scrierea instruciunilor care asigur
utilizarea stivei, ncepnd chiar cu valoarea cu care se iniializeaz SP.
Aceasta trebuie s fie adresa rezervat zonei de memorie de la baza stivei.
SP
Adresa
1000
2000
3000
3997
3998
3999
4000
4001
Program
(instructiuni)
Date
(operanzi)
DR
Stiva
AR
PC
ARHITECTURA CALCULATOARELOR 94
Anca Vasilescu
vasilex@info.unitbv.ro
Avantajul lucrului cu stiva const n faptul c UCP poate referi memoria
stivei fr s fie nevoie s precizeze o anumit adres, deoarece adresa
respectiv este ntotdeauna disponibil i este automat actualizat n registrul
de stiv, SP.
Rezumat.
Stiva, ca structur de date, face parte din tematica cursurilor de
programare. In ceea ce privete arhitectura calculatoarelor, intereseaz stiva
sistemului de calcul ca zon de memorie rezervat i organizat pe principiul
stivei (LIFO). De asemenea, ca i n cazul paragrafului precedent, conceptul
este esenial pentru nelegerea modului n care procesorul (implicit,
programatorul prin programul pe care l scrie n limbaj de asamblare) lucreaz
cu cele trei segmente de memorie: stiv, date, cod.
In particular, pentru lucru cu segmentul de stiv, trebuie reinut rolul
registrului SP n efectuarea operaiilor pe stiv (ncrcare, descrcare).
Cuvinte cheie.
stiva sistemului de calcul
registrul SP, operaii specifice: ncrcare, descrcare
eroare de depire
Verificare.
1. Dac stiva de memorie a unui sistem de calcul are 256 de cuvinte, care
trebuie s fie capacitatea minim a registrului SP n acest caz?
2. Ce se poate spune despre rezultatul unei operaii push pe stiv dac n
urma efecturii ei coninutul registrului SP este nul?
NOTIE
ARHITECTURA CALCULATOARELOR 95
Anca Vasilescu
vasilex@info.unitbv.ro
3.3. Microoperaie. Instruciune. Program
Organizarea hardware intern a unui SC este bine definit dac se
specific:
1. mulimea de regitri i funciile lor;
2. secvena de microoperaii de executat pentru informaiile binare
depuse n fiecare registru;
3. instruciunea care iniializeaz fiecare secven de microoperaii.
Pentru specificarea secvenelor de operaii de transfer de informaii
ntre regitri se folosete un simbolism, numit limbaj de transfer pe regitri
(register transfer language).
Un SC digital este capabil s execute diferite microoperaii i, n plus,
poate primi instruciuni pentru precizarea urmtoarei secvene de
microoperaii care trebuie executat.
Pentru SC, o instruciune este un cod binar care precizeaz o
secven de microoperaii de executat de ctre calculator.
Un program este un set de instruciuni care precizeaz operaiile,
operanzii i legturile dintre aceste elemente n execuie.
Exist o mare varietate de limbaje de programare pe care utilizatorul le
poate folosi pentru a scrie un program pentru calculator, n timp ce sistemul
de calcul poate executa un program numai dac este reprezentat intern n
binar. De aceea, un program scris n orice limbaj de programare trebuie nti
translatat (tradus) n reprezentare binar.
Programele scrise pentru un calculator se pot ncadra ntr-una dintre
urmtoarele categorii:
1. cod binar, dat de o secven de instruciuni i operanzi binari care
reproduce exact modul de reprezentare n memorie a secvenei
respective. Un astfel de program se va numi program n cod
main sau program n limbaj main;
2. cod octal sau hexazecimal, dat de o conversie a codului binar n
octal sau hexa;
3. cod simbolic, dat de o reprezentare cu simboluri a codurilor
instruciunilor. Fiecare instruciune dat prin simboluri poate fi
translatat
ntr-o instruciune n cod binar. Aceast translatare este fcut de
un program special, numit assembler. Deoarece un assembler
traduce simboluri, aceste programe simbolice se numesc programe
n limbaj de asamblare;
4. limbaje de programare de nivel nalt. Un program care traduce un
astfel de program n binar se numete compilator.
ARHITECTURA CALCULATOARELOR 96
Anca Vasilescu
vasilex@info.unitbv.ro
Rezumat.
Acest paragraf definete conceptele de instruciune i program, n
perspectiva paragrafelor ulterioare i, n plus, pentru nelegerea noiunii de
cod ca mod de reprezentare a unui program. Astfel, n funcie de
cunotinele i de preferinele programatorului, acesta poate opta pentru una
dintre variantele de scriere a codului surs al programului su: cod binar, cod
octal, cod simbolic sau cod n limbaj de programare de nivel nalt.
3.4. Codurile instruciunilor
Pentru un SC cu control programat, calculatorul citete fiecare
instruciune din memorie i o depune ntr-un registru de control. Unitatea de
control interpreteaz acest cod i determin execuia lui, prin iniializarea unei
secvene de microoperaii.
Fiecare calculator posed un set propriu de instruciuni pe care le
poate executa. Capacitatea de a memora i de a executa instruciunile,
precum i conceptul de program memorat sunt proprietile principale ale unui
calculator de uz general.
Codul unei instruciuni este dat de un grup de bii care dirijeaz
calculatorul pentru a executa o anumit operaie. De obicei, acesta este
delimitat n dou cmpuri, fiecare avnd o semnificaie bine precizat.
Cea mai mare parte a codului formeaz zona operaional, numit
codul operaiei (operation code). Acesta definete tipul operaiei, de
exemplu: adunare, scdere, nmulire, deplasare, complementare. Numrul de
bii rezervai pentru codul operaiei depinde de numrul total de instruciuni ale
SC analizat.
Observaie. Este bine s precizm aici care este diferena ntre o
operaie (computer operation) i o microoperaie. O operaie este o parte
dintr-o instruciune stocat n memorie. Ea este dat de un cod binar care o
identific n sistemul de calcul. Unitatea de control preia instruciunea din
memorie i i interpreteaz biii care reprezint codul operaiei. Apoi,
genereaz o secven de semnale de control pentru a iniializa microoperaiile
corespunztoare n regitri interni ai SC. Pentru fiecare cod de operaie,
unitatea de control genereaz o secven de microoperaii necesare
executrii operaiei specificate. De aici, codul operaiei se numete de multe
ori macrooperaie deoarece specific un set de microoperaii.
Revenind, codul operaiei reprezint operaia de executat. Aceast
operaie trebuie s lucreze cu date memorate n regitrii de prelucrare sau
direct n memorie. De aceea, codul unei instruciuni trebuie s precizeze, nu
numai operaia, ci i informaii cu privire la operanzi. Aceste informaii
formeaz zona de adres, care conine regitrii sau cuvintele de memorie
unde se gsesc operanzii i registrul sau cuvntul de memorie n care se
depune rezultatul. Registrele de prelucrare se regsesc prin ncrcarea n
zona de adres a unui cod binar de k bii care s identifice n mod unic unul
dintre cei 2
k
regitri din sistem. Cuvintele de memorie se dau n codul
instruciunii prin adresele lor.
ARHITECTURA CALCULATOARELOR 97
Anca Vasilescu
vasilex@info.unitbv.ro
Exist numeroase modaliti de a organiza codul binar al unei
instruciuni. Fiecare SC are propriul format al codului de instruciune. Acesta
este conceput de designer-ul calculatorului, adic de cel care precizeaz
arhitectura SC.
In continuare dm trei exemple de organizare a formatului
instruciunilor, construite mai mult pe considerente didactice dect cu referire
la anumite sisteme de calcul.
Exemplul 1.
Cel mai simplu mod de a organiza un calculator este de a folosi un
registru de prelucrare i un cod de instruciune format din OpCode i o
adres. Aceast adres de memorie indic unitii de control unde gsete
operandul pe care trebuie s-l foloseasc. Acest operand va fi citit din
memorie i valoarea rezultat va fi operat cu coninutul registrului de
prelucrare.
Acest tip de organizare este prezentat n figura urmtoare:
Instruciunile sunt depuse ntr-o zon de memorie distinct fa de cea
n care sunt depuse datele. Aici avem o memorie cu 4096 = 2
12
cuvinte, deci
adresele lor se vor reprezenta pe 12 bii.
Dac codul unei instruciuni se reprezint pe 16 bii atunci rezervm 12
bii pentru adresa unui operand i rmn 4 bii pentru codul operaiei,
OpCode. Astfel, acest sistem va recunote un set de 16 = 2
4
operaii.
Unitatea de control citete cei 16 bii ai codului unei instruciuni din
zona de memorie rezervat programului. Cei 12 bii ai zonei de adres a
codului identific n zona de date locaia din care s se citeasc operandul pe
OpCode Address
15 12 11 0
Instruction Format
Binary Operand
15 0
Instructions
(program)
Operands
(data)
Memory
4096 x 16
Processor
Register
AC
ARHITECTURA CALCULATOARELOR 98
Anca Vasilescu
vasilex@info.unitbv.ro
16 bii necesar. Apoi, unitatea de control iniializeaz operaia specificat de
cei 4 bii ai OpCode. Aceasta se execut pe actualul coninut al registrului de
prelucrare (notat aici cu AC) i pe valoarea operandului citit din memorie.
Observaie. Uneori este util s folosim zona de adres a unei
instruciuni nu cu semnificaia unei adrese ci ca valoare a operandului de citit.
Cnd partea a doua a unui cod de instruciune reprezint un operand,
spunem c instruciunea are operand transmis prin valoare. Cnd zona de
adres a unui cod de instruciune conine adresa la care se gsete n
memorie operandul necesar, spunem c operandul este transmis prin
adres (direct).
O a treia posibilitate este ca la adresa din zona de adres a codului
instruciunii s se gseasc adresa de memorie a operandului. In acest caz,
operandul este transmis prin adres indirect.
Exemplul 2.
Pentru a face diferena ntre adresele directe i indirecte se poate
rezerva n formatul instruciunii un bit modal (de mod) care va avea o anumit
valoare binar dac adresa este indirect i valoarea complementar dac
adresa este direct. Acesta se noteaz de obicei cu I (indirect address mode
bit) i se reprezint ca n figura urmtoare:
Exemplul 3.
Dac o operaie nu are nevoie de operand din memorie atunci zona de
adres din codul instruciunii poate fi folosit n alte scopuri, de exemplu
pentru a preciza operaii suplimentare recunoscute de sistem. Se obine astfel
o instruciune cu referin la un registru de prelucrare (register reference
instruction).
In acest caz, n zona de adres a codulului instruciunii nu mai avem o
adres ci o operaie sau un test de efectuat asupra registrului de prelucrare.
Rezumat.
Coninutul acestui paragraf este central n contextul capitolului al
treilea. Aici se definete codul de instruciune cu cele dou cmpuri ale
sale: zona de cod al operaiei i zona de adres.
Exemplele care se dau n acest paragraf sunt eseniale pentru
nelegerea modurilor de adresare. Astfel, fiecare exemplu reprezint o
situaie particular, concret, pentru combinaiile de valori (semnificaii) pe
care le pot avea cele dou zone ale codului de instruciune: zona de cod i
zona de adres.
OpC
ode
Address
15 14 12 11 0
I
OpCode Register operation
15 12 11 0
ARHITECTURA CALCULATOARELOR 99
Anca Vasilescu
vasilex@info.unitbv.ro
De asemenea, exemplele din acest paragraf anticipeaz formatul de
instruciune folosit de maina cu trei adrese, respectiv de maina cu o adres
(vezi Modelarea funcionrii unui procesor).
Verificare.
1. Pentru exemplul 1 anterior, care este lungimea minim a cuvntului
pentru o memorie de 1024 cuvinte?
2. Refacei calculele de la exemplul 1 n cazul unei memorii de 64 cuvinte de
8 bii fiecare. Cte operaii se pot defini pe o astfel de structur?
NOTIE
ARHITECTURA CALCULATOARELOR 100
Anca Vasilescu
vasilex@info.unitbv.ro
3.5. Moduri de adresare
In codul unei instruciuni, OpCode specific operaia de executat.
Aceast operaie trebuie executat asupra unei date salvate n memorie sau
ntr-un registru. Felul n care este regsit operandul depinde de coninutul
zonei de adres a codului instruciunii, deci de modul de adresare pentru
fiecare instruciune. Acesta specific o regul pentru interpretarea i
modificarea cmpului adres a codului instruciunii nainte ca operandul s fie
referit.
Pentru a nelege modurile de adresare trebuie cunoscut secvena de
operaii pe care le efectueaz unitatea de control pentru fiecare instruciune n
parte. Aceasta const din urmtoarele etape:
1. preluarea instruciunii din memorie (faza de extragere, engl., fetch),
2. decodificarea instruciunii (faza de decodificare, engl., decode),
3. executarea instruciunii (faza de execuie, engl., execute).
In calculator exist un registru special, PC, care pstreaz urma
instruciunilor programului memorat. PC reine adresa instruciunii care se va
executa i este incrementat la fiecare preluare a unei instruciuni din memorie.
Etapa de decodificare identific operaia de executat, modul de
adresare a instruciunii i localizeaz operandul.
Apoi, calculatorul execut instruciunea respectiv i revine la pasul 1
pentru a prelua urmtoarea instruciune de executat.
Modul de adresare se poate regsi n codul instruciunii pe un bit sau
pe mai muli. Intr-un sistem de calcul se poate ca modul de adresare s difere
de la o instruciune la alta sau, chiar pentru o aceeai instruciune adresarea
s fie combinat.
A. Pentru regsirea operandului, exist dou moduri de adresare
care nu folosesc o adres n cmpul al doilea al codului instruciunii.
Acestea sunt modul implicit i modul direct.
In modul implicit de adresare se presupune c operanzii sunt dai
prin definiia instruciunii, fr ambiguitate. In modul direct de adresare,
operandul apare n codul instruciunii, n cmpul de adres. Un exemplu de
astfel de instruciuni sunt cele de iniializare a coninutului unui registru cu o
anumit valoare.
B. Cnd cmpul de adres al codului de instruciune specific un
registru de prelucrare, spunem c instruciunea este n mod registru. In
acest caz operandul se afl n registrul specificat i acesta va fi selectat din
lista de identificare a regitrilor sistemului.
Un caz particular de adresare cu registru este situaia n care n
registrul referit se afl adresa cuvntului de memorie care reine operandul
cutat. Spunem atunci c adresarea este indirect.
Particulariznd n continuare, putem avea o instruciune care
incrementeaz (decrementeaz) valoarea din registru la fiecare accesare a
memoriei. In acest caz avem adresare indirect n mod registru cu
ARHITECTURA CALCULATOARELOR 101
Anca Vasilescu
vasilex@info.unitbv.ro
autoincrementare (autodecrementare). Un exemplu pentru aceast situaie
sunt regitrii care refer o tabel de date depus n memorie.
Cmpul de adres al codului de instruciune este folosit de unitatea de
control pentru a obine valoarea operandului memorat. Uneori, valoarea dat
n acest cmp este adresa operandului (vezi situaiile anterioare), dar poate fi
i adresa la care se determin (calculeaz) adresa operandului. Spunem c
avem adresa absolut a operandului dac ea reprezint adresa de memorie
la care se gsete operandul cutat.
In exemplele anterioare am anticipat modul de adresare direct i
modul de adresare indirect. In concluzie, putem spune c la adresarea
direct adresa efectiv a operandului apare n cmpul de adres al
instruciunii. La adresarea indirect, cmpul de adres al instruciunii cuprinde
adresa la care este stocat n memorie adresa efectiv a operandului.
C. In alte situaii, modul de adresare impune ca valoarea memorat
n cmpul de adres s fie adunat cu coninutul unui anumit registru
pentru a obine adresa efectiv a operandului cutat. Un astfel de registru
implicat n calcul de adrese poate fi PC, un registru de index sau un registru
de baz.
Dac este vorba de registrul PC atunci avem adresare relativ.
Concret, cnd coninutul din cmpul de adres este adunat cu coninutul
registrului PC se obine o adres efectiv a crei poziie n memorie este
relativ la adresa urmtoarei instruciuni de executat (reinut n PC).
Exemplu. M[PC]=825, address=24. Instruciunea de la locaia 825 este
citit din memorie i PC < PC + 1 = 826. Rezult c se calculeaz adresa
826 + 24 = 850, care reprezint a-24-a locaie de memorie de la adresa
urmtoarei instruciuni de executat.
Avantajul acestei adresri este faptul c adresa relativ se reprezint
pe o secven de bii mai scurt dect adresa efectiv.
Dac pentru a obine adresa efectiv se adun coninutul cmpului de
adres cu coninutul unui registru de index atunci avem o adresare indexat.
Un registru de index este un registru de prelucrare special care conine o
valoare de ordine sau de indexare (indiciere). Aici, codul instruciunii cuprinde
adresa de nceput a unui ir de date memorat i fiecare dat din ir se
regsete n memorie relativ la adresa de nceput. Diferena ntre adresa de
nceput i adresa efectiv a operandului este indexul (indicele) memorat n
registrul de index.
Dac pentru a obine adresa efectiv se adun coninutul cmpului de
adres cu coninutul unui registru de baz atunci avem o adresare cu
registru de baz. Diferena fa de adresarea indexat const n tipul
registrului implicat n calculul de adres. Aici, registrul de baz conine o
adres de baz i codul instruciunii d deplasamentul relativ la adresa de
baz respectiv.
Execuia repetat a secvenei extrage-decodific-execut aplicat pe
instruciunile unui program oarecare arat c un program poate fi executat de
ctre un alt program, care va fi pentru primul un interpretor. Din acest punct
de vedere execuia unui program se poate face prin hardware, caz n care
ARHITECTURA CALCULATOARELOR 102
Anca Vasilescu
vasilex@info.unitbv.ro
procesorul este cel care execut efectiv programmul, sau prin software, n
cazul execuiei prin interpretor. Aceast echivalen ntre procesoarele
hardware i interpretoare are consecine foarte importante pentru structurarea
i proiectarea sistemelor de calcul. Astfel, dup specificarea limbajului main
L al unui nou calculator, echipa de proiectare poate decide dac va construi
un procesor hardware care s execute direct programele scrise n limbajul L
sau dac va scrie un interpretor care s interpreteze programle scrise n L
(adic s le traduc n limbajul main al unui procesor hardware deja
existent). Sunt posibile i construcii hibride, cu o parte de execuie hardware
i o parte de interpretare software.
Extragerea instruciunilor din memorie este un punct critic n viteza de
execuie a acestora. Pentru a rezolva aceast problem, calculatoarele aveau
posibilitatea de a extrage n avans instruciuni din memorie, astfel nct
acestea s fie rapid disponibile atunci cnd erau necesare. Aceste instruciuni
erau pstrate ntr-un set de registre numit tamponul pentru extragere n
avans. In principiu, extragerea n avans mparte execuia instruciunii n dou
etape: extragerea i execuia propriu-zis. Conceptul benzii de asamblare a
procesorului (engl. pipeline) extinde strategia: n loc s se mpart execuia
instruciunii n doar dou pri, de multe ori aceasta este mprit n mai
multe etape, de fiecare etap ocupndu-se o component hardware dedicat
acesteia, toate etapele putnd s fie executate n paralel. De exemplu, o
band de asamblare cu 5 segmente (etape) ar putea fi delimitat astfel:
1. unitatea de extragere a instruciunii;
2. unitatea de decodificare a instruciunii;
3. unitatea de extragere a operanzilor;
4. unitatea de execuie a instruciunii;
5. unitatea de scriere a rezultatului.
Rezumat.
In funcie de coninutul concret al fiecreia dintre zonele din codul de
instruciune, n programul propriu-zis al procesorului, se deosebesc modurile
de adresare. In acest paragraf am dat o clasificare a modurilor de adresare n
trei categorii:
(A) adresare fr adres
1. modul implicit
2. modul direct
(B) adresare n mod registru
1. adresare indirect
2. adresare absolut
(C) adresare cu registru de calcul
1. adresare relativ
2. adresare indexat
3. adresare cu registru de baz.
ARHITECTURA CALCULATOARELOR 103
Anca Vasilescu
vasilex@info.unitbv.ro
Cuvinte cheie.
mod de adresare
banda de asamblare a procesorului
Verificare.
1. Care este diferena dintre un interpretor i un compilator?
2. Identificai cele cinci etape ale pipeline-ului intern pentru un program de
control scris pentru exemplul de datapath de la nceputul capitolului.
NOTIE
ARHITECTURA CALCULATOARELOR 104
Anca Vasilescu
vasilex@info.unitbv.ro
3.6. Clasificarea instruciunilor
Dei setul de instruciuni difer de la un calculator la altul, toate
sistemele de calcul trebuie s aib un ansamblu minimal de instruciuni.
Acestea se regsesc n urmtoarele trei categorii:
1. instruciuni pentru transferul datelor asigur transferul datelor
dintr-o locaie n alta, fr modificarea coninutului;
2. instruciuni pentru manipularea datelor efectueaz operaiile
aritmetice, logice i cele de deplasare;
3. instruciuni de control al programului cu rol n luarea deciziilor i n
dirijarea execuei microprogramului.
In particular, unele sisteme de calcul au n plus instruciuni pentru
operaii de transfer pe regitri i / sau instruciuni care permit utilizatorului s
intervin asupra microprogramului.
3.6.1. Instruciuni pentru transferul datelor
Cele mai uzuale transferuri se realizeaz:
ntre memorie i regitrii de prelucrare (instruciunea Load sau
Store);
ntre regitrii de prelucrare i stiv (instruciunea Push sau Pop);
ntre regitrii de prelucrare i regitrii de intrare / ieire (instruciunea
Input sau Output);
ntre doi regitri de prelucrare (instruciunea Move sau Exchange).
In funcie de coninutul zonei de adres a codului, instruciunea poate fi
apelat cu diveri parametri. Cunoaterea i utilizarea acestora in de limbajul
de asamblare folosit i de sistemul de calcul pe care se lucreaz.
3.6.2. Instruciuni pentru manipularea datelor
Aceast clas de instruciuni reprezint posibilitile de calcul ale
sistemului. Din aceast categorie fac parte:
a) instruciunile aritmetice;
b) instruciunile logice i cele de prelucrare la nivel de bit;
c) instruciunile de deplasare.
In general, calculatoarele cunosc operaiile aritmetice de adunare,
scdere, nmulire i mprire. Este posibil ca unele sisteme s foloseasc
numai adunarea i nmulirea sau chiar numai adunarea i s simuleze i
celelalte operaii. In funcie de operanzii pe care poate lucra o instruciune
aritmetic, aceasta poate avea diferite forme. De exemplu, nu sunt puine
calculatoarele care admit trei sau chiar mai multe instruciuni pentru adunare.
Acestea pot fi: ADDI, pentru operanzi binari ntregi, ADDF, pentru operanzi
n virgul flotant sau ADDD, pentru operanzi zecimali.
ARHITECTURA CALCULATOARELOR 105
Anca Vasilescu
vasilex@info.unitbv.ro
Instruciunile logice efectueaz operaii binare pe iruri de bii
memorai n regitri. Fiecare bit este considerat individual i tratat ca o
variabil boolean. Operaiile binare fundamentale sunt: setare pe 0, setare
pe 1 i complementare.
La rndul lor, instruciunile de deplasare pot fi de tip logic, de tip
aritmetic sau de rotaie. De exemplu, deplasarea logic este util atunci cnd
trebuie completate cu 0 poziiile libere ale unei valori care nu ocup ntregul
registru. Deplasarea aritmetic asigur fixarea pe poziie corect a bitului de
semn. Rotaia reprezint o deplasare circular, adic un bit eliminat la o
deplasare la dreapta este ncrcat n bitul cel mai semnificativ eliberat.
3.6.3. Instruciuni pentru controlul programului
Instruciunile sunt ntotdeauna memorate n locaii de memorie
succesive. Ori de cte ori o instruciune este preluat din memorie n vederea
executrii ei, coninutul registrului PC este incrementat, astfel nct n fiecare
moment el conine adresa urmtoarei instruciuni de executat. Dup
executarea unei instruciuni de transfer de date sau de prelucrare de date,
controlul revine la programul care d succesiunea instruciunilor de executat.
Uneori, execuia programului de control poate schimba adresa
coninut de PC i astfel, s modifice succesiunea iniial de instruciuni de
control de executat. Cu alte cuvinte, instruciunile de control programat
precizeaz i condiiile n care poate fi modificat coninutul registrului PC,
dac instruciunile de transfer sau de prelucrare solicit o astfel de modificare.
Schimbarea valorii reinute n PC ca rezultat al executrii unei instruciuni de
control determin o pauz (break) n secvena de instruciuni de executat.
Aceasta este o idee important pentru funcionarea sistemelor digitale
deoarece determin controlarea fluxului de instruciuni, chiar cu posibilitatea
de a executa bucle sau un segment de program auxiliar.
Cele mai importante instruciuni ale unui program de control sunt:
Branch, Jump, Skip, Call, Return, Compare i Test.
Instruciunile Branch i Jump sunt similare i determin ncrcarea n
PC a adreselor transmise ca parametri. In acest fel se asigur c urmtoarea
instruciune se va executa de la adresa precizat, deci se poate realiza un salt
n secvena de instruciuni predefinit. Aceste dou instruciuni de control pot
fi condiionate sau nu.
Instruciunea Skip determin salt peste instruciunea curent, fr ca
aceasta s fie executat. De asemenea, i aceast instruciune poate fi
condiionat sau nu.
Instruciunile Call i Return se folosesc n contextul lucrului cu
subrutine i vor fi descrise ulterior.
Instruciunile Compare i Test modific indirect secvena instruciunilor
de executat. Astfel, ele execut operaii specifice de scdere i respectiv
SI logic. Rezultatul aplicrii lor nu se reine, dar acesta modific n mod
corespunztor un anumit bit din registrul de stare.
Registrul de stare. Atunci cnd s-a convenit ca circuitul UAL s fie
completat cu un registru de stare, biii acestuia vor fi utilizai n analiza
ARHITECTURA CALCULATOARELOR 106
Anca Vasilescu
vasilex@info.unitbv.ro
contextului curent, nainte sau dup executarea anumitor instruciuni. Biii
registrului de stare se numesc bii de stare, sau bii de condiionare a
codului (condition-code bits), sau flag-uri.
In figura urmrtoare avem un registru de stare pe 4 bii, notai cu C
(Carry), S (Sign), Z (Zero) i V (Overflow). Aceti bii sunt setai (pui pe 1)
sau resetai (pui pe 0) n urma executrii unei operaii n UAL.
Semnificaia celor patru bii de stare este urmtoarea:
C = 1 dac bitul de transport C
8
este 1;
S = 1 dac bitul de ordin maxim (bitul de semn) F
7
este 1;
Z = 1 dac rezultatul furnizat de UAL este zero, adic conine numai
zerouri;
V = 1 dac s-a obinut o depire. Aceasta se interpreteaz diferit, n
funcie de reprezentarea operanzilor n complement fa de 2 sau fa de 1.
Apelul i revenirea din subrutine. O subrutin este o secven de
instruciuni care efectueaz o aciune de sine stttoare, bine delimitat. In
timpul executrii unui program, o subrutin poate fi apelat de mai multe ori
pentru a fi executat n diferite puncte ale programului principal. De fiecare
dat cnd este apelat o subrutin, este executat automat o instruciune
branch de deviere spre prima instruciune din subrutin pentru a iniia
executarea instruciunilor subrutinei. Dup executarea tuturor instruciunilor
subrutinei, se execut o instruciune branch de revenire n programul
principal.
Instruciunile care transfer controlul programului nspre i dinspre
subrutin pot fi: call subroutine, jump to subroutine, branch to subroutine sau
branch and save address.
Apelul unei subrutine const n dou operaii:
1. adresa urmtoarei instruciuni (cea reinut de PC) este memorat
ntr-o locaie temporar astfel nct subrutina s tie unde s revin;
aceasta va fi adresa de revenire return address;
2. controlul este transferat la nceputul subrutinei.
A B
8 8
8-bit ALU
F
7
F
0
8
Output F
Check for zero
Output
V Z S C
F
7
C
8
C
7
ARHITECTURA CALCULATOARELOR 107
Anca Vasilescu
vasilex@info.unitbv.ro
Ultima instruciune a oricrei subrutine, return from subroutine,
realizeaz revenirea n programul principal prin transferarea adresei de
revenire din locaia temporar n PC.
Locaia de memorie temporar pentru adresa de revenire difer de la
un SC la altul. Unele SC folosesc pentru aceasta prima locaie de memorie a
zonei rezervat subrutinei, altele folosesc o locaie fix din memorie, altele un
registru de prelucrare, iar altele folosesc o stiv de memorie.
Varianta cea mai eficient este cea cu stiv de memorie. In acest caz,
fiecare apel de subrutin nseamn o operaie push pe stiv cu adresa de
revenire din subrutina respectiv i fiecare revenire nseamn o operaie pop
de pe stiv pentru adresa respectiv. Avantajul apare la apelul n cascad
pentru mai multe subrutine deoarece organizarea memoriei ca stiv asigur
c revenirea se face ntotdeauna corect, adic n programul apelant (n ultimul
program care a apelat procedura respectiv).
Astfel, o instruciune de apel const n:
SP < SP 1
M[SP] < PC
PC < adresa efectiv a primei instruciuni a subrutinei
Dac o alt subrutin este apelat din subrutina n execuie atunci o
nou adres de revenire este depus pe stiv, s.a.m.d.
O instruciune de revenire va consta n:
PC < M[SP]
SP < SP + 1
Folosind stiva pentru lucrul cu subrutine, programatorul nu mai trebuie
s se concentreze asupra corectitudinii revenirii din subrutin n programul
apelant.
Un al doilea avantaj al memorrii adreselor de revenire pe stiv apare
la lucrul cu subrutine recursive. Pe stiv nu intereseaz care adres este
depus la un moment dat. Dac sistemul ar lucra cu alt variant de
memorare a adreselor de revenire atunci ar trebui avut n vedere c este
foarte posibil ca recursivitatea s se piard prin distrugerea adresei de
revenire memorate anterior pentru aceeai subrutin.
Intreruperea unui program. O ntrerupere este o excepie sau un
semnal intern sau extern transmis SC, prin care acestuia i se anun apariia
unui eveniment neobinuit, adic ne-conform cu secvena de instruciuni n
curs de execuie. Atunci cnd evenimentul s-a produs, au loc, n ordine,
urmtoarele trei aciuni:
1. suspendarea programului n curs de desfurare;
2. lansarea n execuie a unui program de depanare (service program),
adic a unei rutine specializate, numit Rutin de Tratare a
Intreruperii (RTI) sau Handler de ntrerupere, care deservete
ntreruperea;
3. reluarea execuiei programului suspendat.
ARHITECTURA CALCULATOARELOR 108
Anca Vasilescu
vasilex@info.unitbv.ro
Cauzele producerii acestor evenimente pot fi externe sau interne.
Exemple de evenimente de natur extern:
apsarea unei anumite combinaii de taste, de exemplu
CTRL/BREAK;
terminarea unei operaii de intrare/ieire desfurat n
background (adic n timp ce utilizatorul urmrete desfurarea altei
aciuni);
De cele mai multe ori, n urma tratrii ntreruperii externe, se reia
activitatea programului suspendat.
Exemple de ntreruperi de natur intern:
* mprirea la zero;
* tentativa de adresare a unei zone de memorie care nu exist;
* tentativa de execuie a unei instruciuni avnd un cod inexistent;
* depirea capacitii de reprezentare a rezultatului unui calcul.
De cele mai multe ori, n urma tratrii ntreruperii interne, controlul este
transmis SO, fr a mai relua activitatea programului suspendat.
Intreruperile externe sau interne sunt nsoite de semnale ale
componentelor hardware ale SC. Fa de acestea, n SC pot aprea i
evenimente iniiate de executarea unor instruciuni. Acestea vor fi ntreruperi
software. Corespunztor, avem rutine care deservesc apariia ntreruperilor
interne sau externe, care vor fi activate la apariia evenimentului, fr a se putea
prevedea momentul apariiei. Vom spune despre handler-ele din aceast
categorie c sunt activate prin evenimente. n schimb, cealalt parte a handler-
elor ofer aceleai servicii ca o bibliotec de subprograme, apelabile de ctre
programele utilizator. Activarea lor are loc atunci cnd sunt solicitate prin
program. Handler-ele din aceast categorie sunt activate prin instruciuni
speciale de apel de ntreruperi.
La apariia unei ntreruperi SC trebuie, n ordine:
1) s determine tipul evenimentului care a generat ntreruperea (intern,
extern);
2) s afle care este sursa (cauza) ntreruperii;
3) s determine adresa RTI (a rutinei de tratare a ntreruperii), adic n ce
manier se poate identifica handler-ul corespunztor.
Rezolvarea acestor probleme presupune c pentru fiecare tip de
eveniment i pentru fiecare cauz posibil a unei ntreruperi s existe cte un
handler specific. Metoda cea mai folosit pentru localizarea rapid a RTI este
vectorizarea ntreruperilor. Aceasta const n a asocia, pentru fiecare
ntrerupere, o locaie de memorie cu adres fix. n aceast locaie fix se trece
adresa RTI corespunztoare ntreruperii. Deci, n momentul apariiei unei
nteruperi, mai nti se preia din locaia de memorie asociat ntreruperii adresa
handlerului corespunztor ei i apoi se cedeaz controlul de execuie handler-
ului.
ARHITECTURA CALCULATOARELOR 109
Anca Vasilescu
vasilex@info.unitbv.ro
O parte dintre rutinele de tratare a ntreruperilor sunt furnizate o dat cu
sistemul de calcul. O alt parte sunt scrise de ctre proiectanii sistemului de
operare. n sfrsit, utilizatorii pot s-i scrie propriile lor RTI.
n proiectarea unui handler de ntrerupere trebuie respectate, n ordine,
urmtoarele etape:
1) Salvarea contextului programului suspendat: regitri, flag-uri, stiva
etc. De obicei, SC reine contextul curent prin memorarea coninutului registrului
PC i a cuvntului PSW program status word. Acesta caracterizeaz UCP
deoarece coine valorile curente ale biilor de stare.
2) Interzicerea tratrii ntreruperilor care pot perturba evoluia normal
a handler-ului respectiv. De exemplu, handler-ul care rezolv mprirea la zero
poate s conin, eventual din greeal, o mprire la zero. n acest caz ar
trebui s nu fie apelat din nou acelai handler.
3) Rezolvarea situaiei care a generat ntreruperea, aceasta
constituind partea esenial a handler-ului.
4) Ridicarea restriciilor impuse la etapa 2.
5) Refacerea contextului salvat la etapa 1.
6) Predarea controlului ctre programul care a fost suspendat sau
ctre sistemul de operare.
Regula unanim acceptat de ctre proiectanii sistemelor de ntreruperi
este aceea c orice ntrerupere este luat n considerare numai ntre execuiile a
dou instruciuni main succesive. Niciodat UCP nu rspunde unei ntreruperi
pn cnd nu a ncheiat execuia instruciunii curente. Inainte de fiecare faz de
preluare a urmtoarei instruciuni din memorie, unitatea de control verific i
rezolv toate semnalele de ntrerupere. Dac apar simultan dou ntreruperi,
circuitele hard ale SC trebuie s decid care dintre ele va fi deservit prima.
Rezumat.
In acest paragraf sunt prezentate principalele instruciuni recunoscute
de procesor ntr-un program de control. Aceastea sunt grupate n funcie de
rolul lor n sistem:
(1) instruciuni pentru transferul datelor
a) transfer ntre memorie i regitri de prelucrare
b) transfer ntre regitri de prelucrare i stiv
c) transfer ntre doi regitri de prelucrare
(2) instruciuni pentru gestionarea datelor
a) instruciuni aritmetice
b) instruciuni logice i de prelucrare la nivel de bit
c) instruciuni de deplasare
(3) instruciuni de control al programului.
ARHITECTURA CALCULATOARELOR 110
Anca Vasilescu
vasilex@info.unitbv.ro
Cuvinte cheie.
instruciune
registru de stare
subrutin
ntrerupere, vectorizarea ntreruperilor, tratarea ntreruperilor
Verificare.
1. Ce este o subrutin? De ce este potrivit utilizarea stivei pentru
gestionarea apelului i revenirii dintr-o subrutin?
2. Ce este o ntrerupere? Ce se nelege prin vectorizarea ntreruperilor?
NOTIE
ARHITECTURA CALCULATOARELOR 111
Anca Vasilescu
vasilex@info.unitbv.ro
3.7. Prelucrarea instruciunilor unui program
Prelucrarea instruciunilor unui program de ctre UCP const n
principal n urmtoarele etape:
1. UCC emite semnale de comand ctre
dispozitivul periferic de intrare pentru
transferul de instruciuni i de date ctre
memoria RAM;
2. UCC extrage instruciunile din memoria
intern i le interpreteaz (decodific);
3. n funcie de interpretarea fcut, UCC emite
semnale de comand ctre UAL i RAM;
4. datele auxiliare solicitate din RAM sunt
transferate n UAL, unde se execut, sub
supravegherea UCC, operaia aritmetic sau
logic decodificat;
5. rezultatele obinute n UAL sunt dirijate de
UCC ctre RAM;
6. se repet etapele de la 1. la 5. pentru fiecare
instruciune;
7. Dup executarea tuturor instruciunilor, UCC
direcioneaz RAM s transfere rezultatele
ctre un dispozitiv periferic de ieire.
Verificare.
1. Identificai n structura fizic a sistemului de calcul unitile funcionale
corespunztoare componentelor implicate n acest paragraf.
NOTIE
RAM
UAL UCC
IN
RAM
UAL UCC
RAM
UAL UCC
RAM
UAL UCC
RAM
UAL UCC
RAM
UAL UCC
OUT
ARHITECTURA CALCULATOARELOR 112
Anca Vasilescu
vasilex@info.unitbv.ro
3.8. Microprocesorul
Indiferent de structura sa intern, UCP este cea mai important
component pentru funcionarea unui SC. De aceea este numit i creierul
sistemului de calcul. Deoarece UCP se concretizeaz fizic n componente
numite procesoare, rezult de aici c procesorul (n diversele sale variante)
este unitatea de prelucrare a sistemului, deci componenta fundamental a
unui sistem de calcul.
La supercalculatoare i la calculatoarele medii-mari, UCP poate fi
construit prin circuite structurate pe un cadru principal, numit mainframe, n
timp ce, la microcalculatoare, UCP este construit din circuite integrate
structurate pe pastile de siliciu care vor forma microprocesoarele.
3.8.1. Caracteristici
Puterea unui microcalculator este dat de:
viteza de executie,
memorie i
acurateea circuitelor electronice componente.
Un microprocesor se apreciaz n funcie de:
viteza cu care execut instruciunile i
cantitatea de memorie intern pe care o poate accesa n mod direct.
Viteza de execuie a unui microprocesor depinde, la rndul ei, de:
lungimea cuvntului i
viteza ceasului.
Lungimea cuvntului reprezint capacitatea registrului de baz, adic
numrul de bii ce poate fi prelucrat la un moment dat de microprocesor.
Aceast valoare este invers proporional cu viteza de execuie. Primele
microprocesoare pe 8 bii au fost create de firma ZILOG i numite Z80.
Cronologic, urmeaz microprocesoarele din familia Intel care au lungimea
cuvntului de 16 bii (I 8086, I 8088, I 80286), de 32 bii (I 80386,
I 80486) sau de 64 bii pentru microprocesoarele Pentium.
Viteza ceasului sau frecvena de tact reprezint numrul de impulsuri
electronice pe care le poate produce ceasul intern al microprocesorului ntr-o
secund. Viteza ceasului este msurat n Hz i multiplii informatici ai
acestora. Actualmente, microprocesoarele produse au depit viteza ceasului
de 1,5 GHz.
Memoria intern pe care o poate accesa n mod direct depinde de
lungimea cuvntului. Astfel, pentru cuvnt de 16 bii microprocesorul va putea
accesa 2
16
octei, n timp ce pentru un cuvnt de 32 bii, microprocesorul va
putea accesa 2
32
octei. In tabelul urmtor prezentm pe scurt evoluia
cronologic a microprocesoarelor, precum i principalele caracteristici:
-procesor Anul Lg cuvnt -MHz- -Mips-
I 8086 1978 16 5-10 0,33
ARHITECTURA CALCULATOARELOR 113
Anca Vasilescu
vasilex@info.unitbv.ro
I 8088 1981 16 4 0,33
I 80286 1982 16 6 1,2
I 80386 SX 1985 32 20 2,5
I 80386 DX 32 20 i 30 6
I 80486 SX 1989 32 33 16,5
I 80486 DX 32 > 33 20
I 80486 DX/2 32 50 i 66 54
I 80486 DX/4 32 100 75
Pentium 1993 64 66 112
Mips (Mega-instruciuni pe secund) este o caracteristic ce msoar
capacitatea de prelucrare.
Deoarece este componenta fundamental a SC, microprocesorul este
cel care determin i denumirea calculatorului gazd. Prezentm n
continuare microprocesoarele din familia Intel I 80x86 i sistemele care le
includ.
Microprocesor Calculator personal
I 8086 IBM PC
I 8088 IBM PC XT
I 80286 IBM PC AT 286
I 80386 SX IBM PC AT 386 SX
I 80386 DX IBM PC AT 386 DX
I 80486 SX IBM PC AT 486 SX
I 80486 DX IBM PC AT 486 DX
I 80486 DX/2 IBM PC AT 486 DX2
I 80486 DX/4 IBM PC AT 486 DX4
IBM - International Business Machine (Big Blue)
XT - eXTended
AT - Advanced Technology
La apariia sa n 1978, procesorul 8086 era cu adevrat o unitate de
prelucrare cu un singur cip pe 16 bii. Proiectul lui 8086 era oarecum similar
cu cel al lui 8080, dar nu integral compatibil. Cipul 8086 a fost urmat de cipul
8088, care avea aceeai arhitectur ca i 8086 i rula aceleai programe, dar
avea o magistral pe 8 bii i nu pe 16 bii, fiind deci mai lant, dar mai ieftin
dect 8086. acest cip a devenit rapid standard pentru industria calculatoarelor
personale odat cu alegerea sa de ctre IBM pentru producerea sistemului
iniial IBM PC.
ARHITECTURA CALCULATOARELOR 114
Anca Vasilescu
vasilex@info.unitbv.ro
Nici 8088, nici 8086 nu puteau adresa mai mult de 1MO de memorie.
Astfel, la nceputul anilor 80, Intel a proiectat 80286, o versiune mbuntit ,
compatibil cu 8086. urmtorul pas a fost un adevrat procesor pe 32 bii i
anume 80386, compatibil cu procesoarele anterioare. Aceast compatibilitate
era oun plus pentru cei care doreau s ruleze n continuare vechile soft-uri i
un inconvenient pentru cei care ar fi preferat o arhitectur simpl, modern,
curat, fr impedimentele greelilor i tehnologiile trecutului.
Incercnd s rspund cerinelor pieii, n 1989 Intel scoate procesorul
80486: o versiune mai rapid a lui 80386, cu coprocesorul matematic inclus i
cu o memorie cache de 8KO inclus pe cip. Procesorul 486 mai avea
incorporat i suportul pentru multiprocesare, pentru a permite productorilor
de calculatoare s construiasc sisteme cu mai multe UCP.
Pentru generaia urmtoare de procesoare, Intel a avut surpriza s
descopere c, de fapt, numerele (ca 80486) nu pot fi mrci nregistrate.
Astfelc, urmtoarea generaie de procesoare se va numi Pentium, de la
grecescul (cinci). Spre deosebire de 80486 care avea o singur band
de asamblare intern (pipeline), Pentium are dou astfel de benzi, deci este
de ori mai rapid. Urmtoarea generaie de procesoare este Pentium Pro, o
rupere clar fa de trecut pentru c noul Pentium Pro avea o organizare
intern total diferit i putea s execute pn la cinci instruciuni simultan. In
plus, memoria cache intern avea dou nivele: 8KB pentru instruciuni i 8KB
pentru date pe un nivel i nc 256KB pe al doilea nivel.
In continuarea seriei, noul procesor Intel a fost Pentium II, n fapt un
Pentium Pro cu extensii speciale pentru multimedia (MMX, MultiMedia
eXtension). Aceste instruciuni aveau rolul de a accelera calculele necesare
pentru procesarea semnalelor audio i video, nlturnd astfel nevoia unor
coprocesoare speciale multimedia.
La nceputul anului 1998, Intel a introdus o linie nou de produse
numit Celeron o variant a procesorului Pentium II ieftin, cu performani
sczute, destinat PC-urilor de duzin.
3.8.2. Setul de instruciuni ale microprocesorului
Un aspect important al arhitecturii unui SC este dat de setul de
instruciuni recunoscute de microprocesorul acelui sistem. De aceste
instruciuni depinde construcia i folosirea limbajului main al calculatorului
n discuie.
La nceput, datorit posibilitilor reduse ale echipamentelor hardware,
calculatoarele lucrau cu instruciuni puine i simple. Ulterior, apariia
circuitelor integrate a permis mrirea numrului de instruciuni recunoscute de
un microprocesor, ajungndu-se la sisteme cu 100 sau chiar 200 de
instruciuni n setul de baz. Implicit, aceste SC pot prelucra un numr mare
de tipuri de date i diverse moduri de adresare a memoriei.
In 1980, un grup de la Berkeley, condus de David Patterson i Carlo
Squin, a mceput s proiecteze cipuri VLSI pentru UCP fr interpretor. Ei au
introdus termenul RISC pentru acest concept i i-au numit cipul de unitate
central RISC I, urmat la scurt timp de RISC II. Puin mai trziu, n 1981, la
Stanford, John Hennessy a proiectat i fabricat un cip ntructva diferit, pe
ARHITECTURA CALCULATOARELOR 115
Anca Vasilescu
vasilex@info.unitbv.ro
care l-a numit MIPS. Aceste cipuri au evoluat n produse comerciale
importante, procesoarele SPARC i respectiv MIPS. De fapt, acronimul MIPS
este pentru Milioane de Instruciuni pe Secund, procesorul MIPS fiind
denumit astfel numai printr-un joc de cuvinte. Ulterior, structura intern a
acestui procesor a permis i o denumire potrivit: Microprocessor without
Interlocked Pipeline Stages.
Majoritatea microprocesoarelor folosite n prezent fac parte din familia
CISC (Complex Instruction Set Computer). Cele mai performante
microprocesoare de acest tip sunt Pentium-urile firmei Intel i M68040 al
firmei Motorola, ultimul echipnd PC-urile de tip MacIntosh.
Tendina actual se ndreapt spre microprocesoarele de tip RISC
(Reduced Instruction Set Computer). In general, acestea lucreaz pe 64 bii,
cu o vitez de pn la 200 MHz. La baza arhitecturii RISC st intenia unor
constructori de microprocesoare de a reduce timpul de execuie a unui
program prin simplificarea setului de instruciuni. Acetia au recomandat ca
SC s foloseasc mai puine instruciuni, care s aib structuri simple, astfel
nct s poat fi executate mai rapid n UCP, adesea fr un necesar de
memorie suplimentar.
Procesoarele MIPS apar ca un caz particular de procesoare RISC i
sunt folosite astzi n special pe staiile de lucru Silicon Graphics.
Pe scurt, caracterizarea celor dou arhitecturi ar fi:
CISC 1. numr mare de instruciuni (100 250);
2. unele instruciuni execut aciuni specializate (se apeleaz rar);
3. numr mare de moduri de adresare a memoriei (5 20);
4. formatul instruciunilor nu are lungime fix;
5. exist instruciuni care prelucreaz operanzi direct n memorie;
RISC 1. relativ puine instruciuni;
2. relativ puine moduri de adresare a memoriei;
3. exist acces limitat la memorie pentru instruciunile Load i Store;
4. toate operaiile se efectueaz n regitrii UCP;
5. instruciunile au format fix (sunt uor de decodificat);
6. control bazat pe circuite (preferabil controlului microprogramat).
3.8.3. Modelarea funcionrii unui procesor
In acest paragraf vom prezenta principiile generale de funcionare ale
unui procesor, considernd dou modele, alese pe considerente didactice s
reprezinte simplu i pe neles procesorul. Aceast modalitate de prezentare a
rezultat n urma unui proces de simplificare a construciei unui procesor. De
aceea, n practic nu se pot regsi aceste modele foarte simple, dar ele
constituie scheletul oricrui model de procesor.
3.8.3.1. Maina cu trei adrese
Modelul mainii cu trei adrese conine n memorie att datele cu care
lucreaz, ct i instruciunile care descriu programul de executat.
ARHITECTURA CALCULATOARELOR 116
Anca Vasilescu
vasilex@info.unitbv.ro
Zonele de date le vom identifica prin numele lor. Presupunem c
fiecare dat ncape pe un cuvnt.
Formatul instruciunilor.
O instruciune la maina cu trei adrese ocup patru cuvinte:
Semnificaia cuvintelor este:
cod indic codul operaiei de efectuat;
adr1, adr2, adr3 indic trei locaii din memoria mainii.
O astfel de instruciune se execut prin:
adr3 := (adr1) cod (adr2)
adic, ntre numrul coninut n locaia de memorie indicat de adr1 (ca prim
operand) i numrul coninut n locaia indicat de adr2 (ca al doilea operand)
se efectueaz operaia indicat de cod. Numrul obinut ca rezultat este
depus n locaia indicat de adr3.
Instruciunile se execut n secven, una dup alta. Schimbarea ordinii
de execuie a instruciunilor se face cu ajutorul instruciunilor de salt.
Pentru a ne referi mai uor la ele, unele instruciuni pot fi identificate
printr-un nume:
Instruciunile mainii cu trei adrese.
Maina cu trei adrese lucreaz cu trei tipuri de instruciuni:
1. instruciuni de calcul;
2. instruciuni de salt;
3. instruciuni speciale.
In continuare notm adresele de memorie cu litere mari (A, B, C etc.),
att pentru locaiile din zona de date ct i pentru cele din zona de
instruciuni.
1. Maina cu trei adrese recunoate 7 instruciuni de calcul i anume,
patru instruciuni pentru operaiile aritmetice fundamentale i trei instruciuni
pentru operaii unare uzuale:
+ A B C Adunare C:=A+B
A B C Scdere C:=AB
* A B C Inmulire C:=A*B
cod adr1 adr2 adr3
cod adr1 adr2 adr3 nume:
ARHITECTURA CALCULATOARELOR 117
Anca Vasilescu
vasilex@info.unitbv.ro
/ A B C Imprire C:=A/B
A - C Radical de ord 2 C:= A
| | A - C Valoare absolut C:=|A|
[ ] A - C Partea ntreag C:=[A]
2. Instruciunile de salt sunt de dou tipuri: de salt condiionat i de
salt necondiionat.
Maina cu trei adrese recunoate o singur instruciune de salt
necondiionat:
SN - - A Urmtoarea instruciune care se va executa
este cea de la adresa A
O instruciune de salt condiionat comand saltul la instruciunea de la
adresa adr3 numai dac numerele de la adresele adr1 i adr2 se afl n
relaia de ordine specific instruciunii respective. Maina cu trei adrese
recunoate 6 instruciuni de salt condiionat:
< A B C Salt la instruiunea indicat prin C dac A < B
A B C Salt la instruiunea indicat prin C dac A B
> A B C Salt la instruiunea indicat prin C dac A > B
A B C Salt la instruiunea indicat prin C dac A B
= A B C Salt la instruiunea indicat prin C dac A = B
A B C Salt la instruiunea indicat prin C dac A B
3. Instruciunile speciale ale mainii cu trei adrese sunt: CIT, TIP i STOP.
CIT - - A Citete de la intrare valoarea unui numr i o
depune n locaia indicat prin adresa A
TIP - - A Afieaz la ieire valoarea coninut n locaia
indicat prin adresa A
STOP - - - Incheie execuia programului (oprire)
ARHITECTURA CALCULATOARELOR 118
Anca Vasilescu
vasilex@info.unitbv.ro
3.8.3.2. Maina cu o adres
Arhitectura mainii cu o adres este ceva mai complex dect a
modelului prezentat anterior, astfel c se apropie mai mult de construcia
real a unui procesor.
Structura memoriei la maina cu o adres.
Principalele componente ale memoriei mainii cu o adres sunt:
1. regitrii generali;
2. zona de memorie rezervat pentru program;
3. zona de memorie rezervat pentru date;
4. zona de memorie rezervat pentru stiv.
1. Regitrii mainii cu o adres sunt trei:
1. registrul acumulator, A
are capacitatea de un cuvnt;
reine la un moment dat unul
dintre operanzii operaiei ce urmeaz a fi
executat i dup execuie reine rezultatul
operaiei;
2. registrul index, I
are capacitatea de un cuvnt;
este folosit pentru a accesa
componentele unui vector de numere
memorat n zona de date;
3. registrul de baz, B este utilizat pentru a se permite
comunicarea ntre diferite pri ale unui
program.
Observaie. Depunerea unui numr ntr-un registru face ca vechiul
numr din registru s se piard. In acelai timp, coninutul unui registru nu se
pierde pn cnd nu se depune un nou numr.
2. Zona de program conine instruciunile care urmeaz a fi executate.
O instruciune se reprezint pe dou cuvinte i are formatul:
Semnificaia cmpurilor din format este dat de:
A := (A) cod (adr)
adic, se execut operaia indicat de cod folosind coninutul curent al
registrului acumulator, A i coninutul locaiei de la adresa adr.
3. Zona de date este zona n care sunt memorate valorile variabilelor
cu care lucreaz programul. Fiecare variabil simpl se reprezint pe un
cuvnt. Pe lng variabilele simple, la aceast main se poate opera uor i
cod adr nume:
ARHITECTURA CALCULATOARELOR 119
Anca Vasilescu
vasilex@info.unitbv.ro
cu variabile cu indici: vectori, matrice bidimensionale, tablouri tridimensionale
etc. Acestea din urm vor fi memorate element cu element n locaii
succesive.
Observaie. Depunerea unui numr ntr-o locaie face ca vechiul
numr memorat s se piard. In acelai timp, coninutul nu se pierde pn
cnd nu se depune un nou numr.
4. Stiva este o zon de memorie pentru care accesul la locaii este
gestionat de disciplina LIFO i de urmtoarele reguli:
n fiecare moment se depune sau se extrage un singur cuvnt din stiv;
nu se poate extrage un numr din stiv dect dac nainte au fost deja
depuse numere n stiv;
la extragerea unui numr din stiv numrul respectiv se terge de pe stiv;
numerele neextrase din stiv i pstreaz valorile.
Observaie. Tentativele de efectuare a unei operaii de depunere ntr-o
stiv plin sau de extragere dintr-o stiv vid (situaiile de depire) conduc la
oprirea mainii cu o adres.
Instruciunile mainii cu o adres.
Pentru prezentarea instruciunilor mainii cu o adres convenim s
notm cu X o adres oarecare din zona de date, sau o adres din zona de
program, sau o constant.
Maina cu o adres recunoate 28 instruciuni considerate n patru
grupe:
a) instruciuni pentru transferuri de date;
b) instruciuni de calcul;
c) instruciuni de salt;
d) instruciuni speciale.
Pentru maina cu o adres putem identifica o instruciune n mod unic
i printr-un numr de la 1 la 28.
In tabelele urmtoare, pentru fiecare instruciune precizm: numrul de
ordine, codul, adresa locaiei pe care se execut instruciunea i, eventual,
comentarii specifice fiecrei instruciuni.
a) Instruciunile pentru transferuri de date sunt:
1 X Valoarea indicat de X se depune n registrul acumulator A
2 X Valoarea din registrul acumulator A se depune n locaia
din zona de date indicat de X
3
I
Coninutul registrului index I se depune n registrul
acumulator A
4
I
Coninutul registrului acumulator A se depune n registrul
index I
ARHITECTURA CALCULATOARELOR 120
Anca Vasilescu
vasilex@info.unitbv.ro
5
B
Coninutul registrului de baz B se depune n registrul
acumulator A
6
B
Coninutul registrului acumulator A se depune n registrul
de baz B
7 X Valoarea indicat prin X este depus n vrful stivei;
numrul elementelor din stiv crete cu 1
8 X Este extras elementul din vrful stivei i este depus n
locaia de date indicat de X; numrul elementelor din stiv
scade cu 1
9 Valoarea din registrul acumulator A este depus n vrful
stivei; numrul elementelor din stiv crete cu 1
10 Este extras elementul din vrful stivei i este depus n
registrul acumulator A; numrul elementelor din stiv
scade cu 1
b) Instruciunile de calcul coincid cu cele recunoscute de maina cu
trei adrese:
11 + X Adunare A:=A+X
12 X Scdere A:=AX
13 * X Inmulire A:=A*X
14 / X Imprire A:=A/X
15 X Radical de ord 2 A:= X
16 | | X Valoare absolut A:=|X|
17 [ ] X Partea ntreag A:=[X]
c) Instruciunile de salt pot fi condiionate sau nu. Si maina cu o
adres recunoate o singur instruciune de salt necondiionat:
18 SN X Urmtoarea instruciune care se va executa
este cea de la adresa din zona de program
indicat de X
Instruciunile de salt condiionat determin un salt la instruciunea
indicat de X dac coninutul acumulatorului A este ntr-o anumit relaie de
ordine fa de zero. Avem urmtoarele 6 instruciuni de salt condiionat:
19 < X Salt la X dac A < 0
ARHITECTURA CALCULATOARELOR 121
Anca Vasilescu
vasilex@info.unitbv.ro
20 X Salt la X dac A 0
21 > X Salt la X dac A > 0
22 X Salt la X dac A 0
23 = X Salt la X dac A = 0
24 X Salt la X dac A 0
d) Instruciunile speciale ale mainii cu o adres completeaz cu o
instruciune setul de la maina cu trei adrese:
25 ADR X Determin adresa (nu valoarea) din zona de date
a variabilei indicate de X i depune aceast
adres n registrul acumulator A
26 CIT X Citete de la intrare valoarea unui numr i o
depune n locaia din zona de date indicat de X
27 TIP X Afieaz la ieire valoarea numrului aflat n
locaia din zona de date indicat de X
28 STOP Incheie execuia programului (oprire)
NOTIE
ARHITECTURA CALCULATOARELOR 122
Anca Vasilescu
vasilex@info.unitbv.ro
3.8.4. Structura intern de baz a unui microprocesor I 80x86
Complicnd modelele din paragraful anterior, prezentm aici schema
unui microprocesor din familia Intel 80x86 pe 16 bii.
Registrele generale sunt:
a) registrele de utilizare general se noteaz cu:
AX - registrul acumulator general
BX - registrul de baz
CX - registrul numrtor
DX - registrul de date.
Acestea pot fi adresate n dou moduri: direct pe 16 bii sau adresnd
separat byte-ul superior (primii 8 bii) i byte-ul inferior (urmtorii 8 bii).
Corespuztor, cuvintele se vor numi:
15
8
7
0
AH AL
BH BL
CH CL
DH DL
b) registrul indicator de stiv de 16 bii. Acesta conine adresa
vrfului stivei, SP (stack pointer).
Registre de
segment
Contor de
program
20 biti
Sumator
adrese
Registre
generale
Interfata cu
memoria
interna
16 biti
Magistrala interna de 16 biti
16 biti
Comanda de
magistrala
Registre
temporare
Registru 6
Bytes
8 biti Comanda
UAL
UAL
Registru de
stare
ARHITECTURA CALCULATOARELOR 123
Anca Vasilescu
vasilex@info.unitbv.ro
c) registrul indicator de baz de 16 bii. Acesta conine adresa de
baz, BP (base pointer).
d) registrele de index: SI (source index) i DI (destination index), de
16 bii fiecare. Acetia particip la elaborarea adreselor, fiecare
adres rezultnd prin nsumarea diferitelor combinaii ntre adresa
de baz, un indice relativ la poziia curent i o deplasare (numita
adres de offset).
Registrul de stare este registrul indicatorilor de condiie. Fiecare
subrutin care folosete registrul de flaguri va interpreta de o manier proprie
valorile gsite. Cel mai des, indicatorii de condiie sunt folosii n instruciunile
de salt.
Cei 16 indicatori de condiie ai registrului de flag-uri au urmtoarea
semnificaie:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X
X
X
X
OF
DF
IF
TF
SF
ZF
X
AF
X
PF
X
CF
X - rezervai;
CF - indicator de transport din MSB al rezultatului;
PF - indicator de paritate;
AF - indicator de transport de la bitul 4 la bitul 5;
ZF - indicator de rezultat nul;
SF - indicator de semn negativ;
TF - indicator de ntrerupere intern;
IF - indicator de ntrerupere extern permis;
DF - indicator de decrementare / incrementare a regitrilor SI sau DI dup
execuia unei operaii;
OF - indicator de depire aritmetic.
Registrele de segment ale microprocesorului permit adresarea
memoriei interne, fiecare avnd o capacitate de 16 bii. Acetia sunt:
CS - Cod Segment - segmentul pentru program (cod surs);
DS - Data Segment - segmentul pentru date;
SS - Stack Segment - segmentul pentru stiv;
ES - Extra Segment - segmentul pentru date auxiliare.
Contorul de program, PC sau IP (Instruction Pointer) are o capacitate
de 16 bii i conine o adres relativ (offset) a instruciunii curente din
segmentul de program CS.
ARHITECTURA CALCULATOARELOR 124
Anca Vasilescu
vasilex@info.unitbv.ro
De exemplu, pentru o instruciune de salt, IP este salvat n vrful stivei
i ncrcat cu adresa relativ n segmentul program.
Registrul de 6 bytes conine instruciuni i are rolul de a mbunti
viteza de prelucrare prin dou mecanisme distincte:
1) datele preluate din memorie sunt plasate n acest registru
n ordinea introducerii; astfel, UAL poate s preia instruciunile fr
s fie influenat de timpul de acces al memoriei;
2) la transferul operanzilor ntre memorie sau dispozitive
periferice i UAL se genereaz i adresele necesare.
Rezumat.
In prezentarea structurii organizatorice i funcionale a unui sistem de
calcul un loc aparte trebuie rezervat microprocesorului creierul calculatorului
i reprezentarea fizic cea mai important a UCP.
In prima parte a acestui paragraf este descris procesorul din diferite
puncte de vedere: istoric, caracteristici generale, caracteristici de performan.
Apoi sunt tratate aspecte concrete legate de cele trei tipuri de arhitecturi de
procesoare existente pe pia: CISC, RISC i MIPS.
In pregtirea capitolului al patrulea, paragrafele 3.8.3 i 3.8.4 prezint
trei nivele de structuri de uniti de prelucrare microprogramate. Este vorba de
modelul mainii cu trei adrese, modelul mainii cu o adres i, n final,
modelul larg rspndit al procesoarelor din familia Intel. Aceste trei exemple
reprezint totodat trei nivele de abstractizare (de la simplu la complex) a
structurii interne a unitii de prelucrare. Cel mai simplu model este cel al
mainii cu trei adrese pentru c toate instruciunile sunt n mod de adresare
direct. La maina cu o adres, deja modelul este mai complicat pentru c
multe dintre instruciunile recunoscute de aceast main lucreaz cu regitrii
sau cu alte zone de memorie implicite.
Cuvinte cheie.
procesor
lungimea cuvntului, frecvena de tact
instruciune, cod de instruciune, setul de baz de instruciuni
arhitectur CISC, RISC, MIPS
Verificare.
1. Dac un procesor are frecvena de tact de 6MHz aceasta nseamn c
poate executa 6 milioane de operaii ntr-o secund. Dac considerm c
o astfel de operaie este o etap din pipeline-ul intern al procesorului
respectiv, s se calculeze viteza de prelucrare a acestui procesor (n
Mips). Se va considera c banda de asamblare este cu cinci faze.
ARHITECTURA CALCULATOARELOR 125
Anca Vasilescu
vasilex@info.unitbv.ro
3.9. Coprocesoare matematice
Pentru a spori viteza de execuie a operaiilor matematice, arhitectura
intern a microprocesoarelor s-a extins cu o unitate specializat n operaii cu
numere reale exprimate n virgul mobil, numit coprocesor matematic.
Pentru utilizator, aceast unitate auxiliar este integrat n microprocesorul
printe prin interfaa coprocesorului. Cele dou componente sunt conectate n
paralel, astfel c fiecare poate s-i execute la un moment dat propriile sale
instruciuni.
Coprocesoarele matematice au urmat evoluia microprocesoarelor.
Pn la microprocesorul I80486SX coprocesorul este un chip distinct de
microprocesor i preia numele acestuia, schimbnd doar ultima cifr. Astfel,
coprocesorul matematic ataat microprocesorului I80x86 se va numi I 80x87.
Dup varianta I80486SX, microprocesoarele I80486DX, I80486DX2,
I80486DX4 i Pentium au inclus coprocesorul matematic pe acelai chip cu
microprocesorul.
In absena coprocesoarelor, programele folosesc emulatoare de
coprocesoare care sunt conectate n locul microprocesoarelor prelund astfel
controlul ntregului sistem.
3.10. Multiprocesare
Dac dou sau mai multe calculatoare sau procesoare coopereaz
ntr-o manier oarecare atunci totalitatea resurselor lor formeaz un sistem
distribuit. De aici rezult imediat dou tipuri de sisteme distribuite: sistemele
multicalculator i sistemele multiprocesor.
Exist numeroase asemnri ntre sistemele multiprocesor i sistemele
multicalculator. Cele mai multe asemnri rezult din faptul c ambele tipuri
suport operaii efectuate paralel i / sau concurent.
Totui, exist o deosebire important ntre un sistem cu mai multe
procesoare i un sistem cu mai multe calculatoare. Intr-un sistem
multicalculator, calculatoarele sunt interconectate ntre ele prin linii de
comunicare formnd o reea de calculatoare. Intr-o reea avem mai multe
calculatoare autonome (independente) care pot sau nu s comunice fiecare
cu fiecare. Comparativ, un sistem multiprocesor este controlat de un acelai
sistem de operare, care asigur interconexiunea ntre procesoare i toate
componentele care concur la realizarea sarcinilor.
Cu alte cuvinte, un sistem multiprocesor rezult din interconectarea a
dou sau mai multor procesoare cu memorii i echipament de intrare / ieire.
Din aceast definiie trebuie s nelegem c un procesor poate
reprezenta o unitate UCP sau poate fi un procesor IOP. Totui, calitatea de
sistem multiprocesor apare cnd cel puin unul dintre procesoare are
proprieti de UCP i nu numai de comunicare de tip IOP.
Sistemele multiprocesor fac parte din categoria MIMD.
Reelele locale sunt apreciate ca cele mai adecvate i rspndite
suporturi fizice pentru sistemele cu prelucrare distribuit.
ARHITECTURA CALCULATOARELOR 126
Anca Vasilescu
vasilex@info.unitbv.ro
Multiprocesarea crete fiabilitatea sistemului prin faptul c o eroare
aprut ntr-o parte are un efect limitat i nu influeneaz ntregul sistem. Mai
mult, dac un procesor cade, procesele lui pot fi dirijate spre execuie ctre un
alt procesor.
Un avantaj fundamental al sistemelor multiprocesor const n
posibilitatea procesrii paralele a task-urilor n dou moduri:
1. mai multe sarcini independente pot fi executate n paralel sau
2. o aceeai sarcin poate fi mprit n mai multe task-uri de
executat n paralel.
Rolul acestui paragraf este de a deschide noi orizonturi pentru
studentul care i-a nsuit noiunile elementare de arhitectura calculatoarelor
prezentate n acest curs i care este astfel n msur s neleag structuri
mai complexe de organizare i realizare a conexiunilor inter-calculatoare.
Multiprogramarea reprezint modul de exploatare a unui sistem de
calcul cu un singur procesor central, dar care presupune existena simultan
n memoria intern a mai multor programe care se execut concurent
(procese concurente); astfel rezult o mai bun utilizare a UCP i a memoriei.
Un task este unitatea elementar delimitat ntr-o secven de aciuni
specifice pentru atingerea unui anumit scop. Termenul de multitasking sau
multiprelucrare se refer la capacitatea unui calculator de a executa mai
multe taskuri simultan. La o prezentare mai detaliat a conceptului,
caracteristica de multitasking se atribuie direct sistemului de operare. Astfel,
politica de alocare a taskurilor la unitile de prelucrare disponibile n sistem
ine de organizarea i gestionarea resurselor de ctre sistemul de operare
gazd. Un task n execuie este un proces. Dac, la un moment dat, sunt
executate mai multe procese simultan atunci aceste sunt procese paralele.
Dac, n plus, aceste procese evolueaz cu interschimb de informaii ntre ele,
atunci ele sunt procese concurente. Din alt punct de vedere, dac sistemul
gazd dispune de mai multe uniti de prelucrare pentru a executa procesele
paralele atunci paralelismul este efectiv. Altfel, paralelismul este simulat
prin diferite politici de alocare proces-procesor.
In ceea ce privete aspectele de paralelism la nivelul structurii interne a
sistemului de calcul, se poate spune c n arhitectura calculatorelor Mark I i
ENIAC intrau n calcul la un moment dat mai multe elemente de calcul ce
lucrau n paralel la o problem comun, fiind dirijate de o singur unitate de
comand. La versiunile urmtoare s-a renunat la aceast arhitectur
paralel. Ulterior, n arhitectura procesoarelor Intel s-a revenit la paralelizarea
etapelor de prelucrare. Astfel, dac la 8086 erau doar dou uniti funcionale
care lucrau n paralel (EU i BIU), structura procesorului 286 conine 4 uniti
funcionale paralele, n timp ce procesorul 386 conine 6 astfel de uniti
funcionale i anume:
1. unitatea de interfa cu magistrala (BIU, engl. Bus Interface Unit);
2. unitatea de citire n avans a instruciunilor (engl. Code Prefetch Unit);
3. unitatea de decodificare a instruciunii (engl. Instruction Decode Unit);
4. unitatea de execuie (EU, engl. Execution Unit);
ARHITECTURA CALCULATOARELOR 127
Anca Vasilescu
vasilex@info.unitbv.ro
5. unitatea de translatare a adreselor (engl. Segment Unit);
6. unitatea de paginare (engl. Paging Unit).
Mai multe detalii despre paralelismul intern la nivelul procesorului se
pot consulta n [13].
Rezumat.
Acest paragraf a ncercat s atrag atenia studenilor c arhitectura
calculatoarelor este o poart care deschide reale perspective de documentare
i nsuire de cunotine n domenii moderne ca: reele de calculatoare,
sisteme distribuite, prelucrare nesecvenial (paralel i/sau concurent).
Conceptele nu sunt tratate aici exhaustiv, fiecare dintre ele reprezentnd n
fond obiectul unei alte discipline de studiu.
Verificare.
1. Care sunt avantajele prelucrrii n paralel a sarcinilor de calcul i/sau de
control?
2. Care sunt principalele uniti funcionale ale calculatorului care lucreaz n
paralel?
3. Comparai structura benzii de asamblare a procesorului n cinci stagii
(paragraful Moduri de adresare) cu funciile celor ase uniti interne de
prelucrare ale procesorului descrise n finalul paragrafului.
NOTIE