Sunteți pe pagina 1din 204

VASILE MANTA

FLORINA UNGUREANU

INTRODUCERE N TIINA SISTEMELOR I A


CALCULATOARELOR
Volumul 1

Prefa

Acest volum reprezint prima parte a cursului Introducere n tiina


Sistemelor i a Calculatoarelor, destinat studenilor din anul I de la Faculatatea
de Automatic i Calculatoare a Universitii Tehnice Gh. Asachi din Iai.
Obiectivul manualului este de a oferi o viziune de ansamblu asupra arhitecturii
sistemelor de calcul i a modalitilor de reprezentare i procesare a informaiei
ntr-un sistem de calcul. Informaiile prezentate sunt utile n egal msur
studenilor care se specializeaz n domeniul calculatoarelor, automaticii sau
informaticii, dar i nceptorilor interesai n studierea fundamentelor structurale
ale sistemelor de calcul.
Utilizarea mijloacelor i tehnicilor informaticii n aproape toate domeniile
de activitate a determinat autorii s prezinte, ntr-un limbaj relativ simplu, ce
este un sistem de calcul, care sunt principalele elemente arhitecturale ale
acestuia, care sunt conceptele fundamentale ale reprezentrii informaiei cum se
prelucreaz informaia n interiorul unui sistem de calcul.
Coninutul crii este organizat n patru capitole.
Primul capitol trateaz reprezentarea informaiei numerice i logice
precum i operaiile executate de calculator asupra acesteia. Sunt prezentate pe
larg sitemele de numeraie, reguli de conversie, codificarea informaiei,
modalitile de reprezentare a numerelor i operaiile aritmetice aferente.
Capitolul doi face o prezentare a algebrei logicii booleene i a
modalitilor de implementare a funciilor logice prin circuite digitale. Se insist
asupra reprezentrii, minimizrii i implementrii funciilor logice. Sunt
prezentate i unele circuite logice combinaionale i secveniale.
n capitolul 3 sunt analizate componentele structurii clasice a unui
calculator. Sunt prezentate unitatea central de prelucrare, memoria unui sistem
de calcul, interfee de intrare/ieire, modaliti de execuie a instruciunilor.
Capitolul 4 abordeaz n detaliu uniti centrale de tip microprocesor.
Autorii insist asupra arhitecturii procesoarelor din familia Intel, modurilor de
adresare, claselor de instruciuni, transferului de date i a sistemului de
ntreruperi.

CUPRINS
Introducere
1.
1.1
1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.1.1.5
1.1.1.6
1. 2
1.3
1.3.1
1.3.2
1.3.3
1.3.3.1
1.3.3.2
1.3.3.3
1.3.3.4
1.3.4
1.3.5
1.3.6
1.3.6.1
1.3.6.2
1.3.6.3
1.3.6.4
1.3.6.5
1.4
1.5
1.5.1
1.5.2
1.5.3
1.5.4
1.6

Reprezentarea informaiei n calculatoarele numerice


Sisteme de numeraie
Conversia unui numr dintr-o baz de numeraie n alta
Conversia unui numr ntreg din baza 10 ntr-o baz oarecare
Conversia unui numr subunitar din baza 10 ntr-o baz
oarecare B
Conversia unui numr real din baza 10 ntr-o baz oarecare B
Conversia unui numr dintr-o baz de numeraie n zecimal
Conversia binar-octal-hexazecimal
Noiuni de codificare a informaiei
Coduri numerice
Modaliti de reprezentare a numerelor n calculator
Reprezentarea numerelor naturale (reprezentarea aritmetic)
Reprezentarea numerelor ntregi cu semn
Reprezentarea numerelor ntregi n semn-mrime (cod direct)
Reprezentarea numerelor n complement fa de 2 (codul
complementar)
Reprezentarea numerelor n complement fa de 1 (codul
invers)
Reprezentarea numerelor n cod exces
Reprezentarea numerelor reale
Reprezentarea cifrelor zecimale (coduri zecimal-binare)
Operaii aritmetice
Operaii aritmetice n binar, octal, hexazecimal
Operaii aritmetice cu numere cu semn n cod complementar
Operaii aritmetice cu numere cu semn n cod invers
Operaii cu numere reprezentate n virgul mobil
Operaii cu numere reprezentate n BCD
Coduri alfanumerice
Coduri detectoare i corectoare de erori
Coduri cu bit de paritate
Coduri cu paritate ncruciat
Coduri polinomiale ciclice
Coduri corectoare de erori
Compresia datelor

1
9
9
10
11
12
14
14
14
16
17
17
19
20
20
22
23
24
25
28
31
31
32
36
39
40
41
43
43
44
45
48
49

2.
2.1.
2.2.
2.2.1
2.2.2
2.3
2.4
2.5
2.5.1
2.5.2

Algebr logic. Circuite logice.


Elemente de algebr boolean
Funcii logice
Reprezentarea funciilor logice
Formele canonice ale funciilor logice
Implementarea funciilor logice. Pori logice elementare
Minimizarea funciilor logice
Circuite logice
Circuite combinaionale
Circuite logice secveniale

55
55
58
58
61
64
71
76
78
83

3.
3.1.
3.2.
3.3.
3.3.1
3.3.1.1
3.3.1.2
3.3.1.2.1
3.3.1.2.2
3.3.1.2.3
3.3.1.3
3.3.2
3.3.3
3.3.4
3.3.4.1
3.3.4.2
3.3.4.3
3.4
3.4.1
3.4.2
3.4.3
3.5
3.5.1
3.5.2
3.5.3
3.5.4
3.6

Arhitectura unui sistem de calcul secvenial


Schema bloc a unui calculator (modelul von Neumann)
Structura funcional a unui sistem de calcul
Memoria unui sistem de calcul
Memoria intern (principal)
Organizarea celulelor de memorie. Operaii realizate
Clasificarea circuitelor de memorie
Memorii ROM
Memorii RAM
Alte clasificri
Tehnologii noi de memorii DRAM
Modaliti de organizarea logic a memoriei. Memoria virtual
Ierarhii de memorii
Memoria secundar
Banda magnetic
Discul magnetic
Discul optic
Unitatea central de prelucrare
Blocul registrelor generale
Unitatea aritmetic-logic
Unitatea de comand i control
Setul de instruciuni
Ciclul main. Ciclul instruciune
Execuia instruciunilor
Formatul instruciunilor
Clasificarea unitilor centrale de prelucrare
Interfee de intrare/ieire

91
91
93
94
96
96
99
100
102
105
105
108
111
113
114
115
117
120
121
122
123
125
125
126
128
129
131

4.
4.1
4.2
4.3

Uniti centrale de prelucrare de tip microprocesor


Scurt istoric
Structura fundamental a unui microprocesor
Semnalele unui microprocesor

133
133
134
138

4.4
4.5
4.6
4.6.1
4.6.2
4.6.3
4.6.4
4.6.5
4.6.6
4.6.7
4.6.8
4.6.9
4.6.10
4.7
4.8
4.8.1
4.8.2
4.8.3
4.8.4
4.9
4.9.1
4.9.2
4.9.3
4.9.4
4.9.5
4.9.6

Arhitectura procesoarelor Intel 8086/8088


Moduri de adresare
Clase de instruciuni ale microprocesorului I8086
Clasa instruciunilor de transfer
Clasa instruciunilor aritmetice
Clasa instruciunilor logice
Instruciuni pentru poziionarea indicatorilor de condiii
Clasa instruciunilor de deplasare i rotaie
Instruciuni de salt
Clasa instruciunilor de buclare
Subrutine. Transmiterea parametrilor
Instruciuni pentru lucru cu iruri
Instruciuni speciale de control
Sistemul de ntreruperi
Transferul de date
Transferul de date prin program
Transferul prin ntreruperi
Transferul datelor prin acces direct la memorie
Transferul prin procesor de intrare/ieire
Alte procesoare din familia Intel
Procesorul I80286
Procesorul I80386
Procesorul I80486
Procesoare Pentium
Procesoare Intel cu arhitectur P6
Procesorul Pentium 4

139
148
157
158
163
166
168
168
172
174
175
178
180
181
185
185
186
186
188
188
188
190
191
191
192
196

Bibliografie

199

Introducere n tiina sistemelor i a calculatoarelor

INTRODUCERE
Date i informaii
n orice domeniu de activitate, n scopul lurii unor decizii, se impune
folosirea pe scar larg a mijloacelor i tehnicilor specifice informaticii. Aceast
cerin rezult din creterea volumului de informaie. Orice decizie are la baz
informaii care se obin din prelucrarea unor date culese despre obiectul
activitii respective.
Exist diferene ntre date i informaii:
- datele privesc evenimente primare colectate din diverse locuri. Ele nu
sunt organizate ntr-o form care s permit luarea unor decizii;
- informaiile sunt mesaje obinute prin prelucrarea datelor.
Trebuie precizat c pn n momentul de fa nimeni nu a reuit s dea o
definiie cu adevrat precis a informaiei. Intuitiv, informaia reprezint date
utile, adic date care rspund la anumite ntrebri i nu ocup spaiul inutil.
Informaia a existat ntotdeauna mpreun cu materia i este un atribut al
materiei. Informaia poate fi reprezentat n diferite forme: tabele de date,
statistici, sondaje de opinie, articole din ziare i reviste, rezultatul unor
experimente, tiri la radio i televiziune, histograme, etc.
Prelucrarea datelor se poate face manual sau cu ajutorul echipamentelor
de calcul (prelucrarea automat a datelor). n cazul prelucrrii automate a
datelor, ansamblul format din resursele materiale i umane folosite n
prelucrarea acestora constituie un sistem de prelucrare automat a datelor
(SPAD).
Pentru a deveni informaii, datele trebuie s parcurg urmtorul flux
(fig.1):
- introducerea datelor;
- prelucrarea;
- extragerea rezultatelor prelucrrii.
Introducerea datelor
Introducerea datelor reprezint procesul de culegere a datelor i scrierea
acestora ntr-o form accesibil echipamentelor de calcul. Ea cuprinde patru
etape:
- culegerea datelor de la diverse surse i apoi reunirea lor ntr-un singur loc,
de unde vor fi transmise pentru a fi prelucrate;
- efectuarea verificrii corectitudinii, consistenei i compatibilitii datelor
culese;
1

Introducere

- codificarea datelor ntr-o form accesibil interpretrii lor de ctre


echipamentele de calcul;
- transmiterea datelor pentru efectuarea operaiilor solicitate n cadrul
prelucrrii.

Introducere
date

Prelucrare
Date

Extragere
Informaii

- culegere
- verificare
- codificare
- transmitere

- clasificare
- sortare
- calcule
- rezumare
- memorare

- regsire
- decodificare
- difuzare

Reglare
Fig. 1 Fluxul prelucrrii datelor
Prelucrarea datelor
Dup introducere, datele sunt memorate i supuse ulterior unor prelucrri
cum sunt:
- clasificarea conform anumitor criterii;
- sortarea cresctoare sau descresctoare;
- calcule aritmetice sau logice;
- rezumarea datelor, adic prezentarea ntr-o form concis a anumitor
rezultate ale prelucrrii.
Extragerea informaiilor
n urma prelucrrii, datele devin informaii care se vor transmite, la locul
unde au fost solicitate, ntr-o form util fundamentrii unor decizii. Extragerea
informaiilor cuprinde trei etape:
- regsirea rezultatelor din memorie;
- conversia (decodificarea) din forma n care au fost prelucrate ntr-o form
accesibil utilizatorului;
- transmiterea informaiilor la locul solicitat de utilizator.
Mecanismul de reglare
Informaiile extrase pot ndeplini cerinele pentru care au fost prelucrate
datele sau pot fi afectate de erori n diferite etape ale prelucrrii. Pentru a
2

Introducere n tiina sistemelor i a calculatoarelor

nltura erorile, dup o evaluare a rezultatelor prelucrrii, se pot face diferite


corecii n faza de introducere sau prelucrare a datelor. Mecanismul prin care se
efectueaz corecii asupra datelor de intrare n funcie de datele de ieire poart
numele de mecanism de reglare (feed-back). Mecanismul de reglare asigur
buna funcionare a unui sistem de prelucrare automat a datelor, conferindu-i
caracterul de sistem cibernetic.

Sistem informaional. Sistem informatic


n orice domeniu de activitate economic sau social exist un flux de
informaii pe baza cruia se desfoar ntreaga activitate. Ansamblul de fluxuri
i circuite informaionale, organizate ntr-o concepie unitar, formeaz sistemul
informaional. La nivelul unui agent economic sistemul informaional asigur
legtura dintre sistemul decizional (de conducere) i sistemul operaional (de
execuie) (fig. 2).
Sistem decizional
Date
Decizii

Informaii

Sistem informatic

Sistem
informaional

Decizii
automatizate

Date

Sistem operaional
Fig. 2. Locul unui sistem informatic n cadrul
sistemului informaional
Funcionarea sistemului informaional presupune desfurarea urmtoarelor
activiti:
- introducerea datelor referitoare la sistemul operaional;
- prelucrarea datelor n vederea asigurrii informaiilor utile sistemului
decizional;
- obinerea informaiilor solicitate i, pe aceast baz, adoptarea unor
decizii ce vor fi transmise sistemului operaional;
- efectuarea controlului i urmrirea respectrii deciziilor.
n cazul n care pentru desfurarea acestor activiti se folosesc cu
preponderen echipamente electronice, sistemul informaional devine sistem
informatic.
3

Introducere

Sistemul informatic nu se poate identifica cu sistemul informaional, fiind


inclus n acesta. Totui, prin creterea gradului de automatizare, sistemul
informatic converge ctre sistemul informaional. n cazul conducerii proceselor
tehnologice, sistemul informatic depete sfera sistemului informaional.
Sistemul informatic este un ansamblu structurat i corelat de proceduri i
echipamente electronice, care permit prelucrarea automat a datelor i obinerea
de informaii. Un sistem informatic include urmtoarele componente:
1. cadrul organizatoric al agentului economic i datele vehiculate n sistemul
informaional, corespunztor activitii desfurate;
2. resursele umane (analiti, programatori, ingineri de sistem, etc.);
3. metodele i tehnicile de proiectare a sistemelor informatice;
4. totalitatea componentelor fizice, cunoscute sub numele de hardware.
Acestea includ echipamentele pentru culegerea, verificarea, transmiterea,
stocarea i prelucrarea datelor, precum i echipamentele de redare a rezultatelor
i suporturile pentru arhivarea datelor i/sau informaiilor (fig. 3).
5. sistemul de programe utilizat pentru realizarea obiectivelor sistemului
informatic i utilizarea eficient a componentelor hardware, cunoscut sub
denumirea de software.
Hardware

Echipamente
de culegere i
verificare

Echipamente
de transmitere
date

Echipamente
de prelucrare

Echipamente
de memorare

Suporturi de
date i
informaii

Echipamente
de redare

Fig. 3 Componentele hardware ale unui sistem informatic

Entropia informaional
Informaia reprezint un mesaj ce aduce o precizare ntr-o problem ce
comport un anumit grad de incertitudine. Cu toate c exist o mare diversitate
de informaie, att din punctul de vedere al formei de prezentare, al coninutului
i al sursei care o genereaz, ct i al modului de recepionare, s-a pus problema
msurrii cantitative a informaiei. S-a constatat c informaia i nedeterminarea
sunt mrimi direct proporionale.
S considerm un experiment X n cadrul cruia se pot realiza un numr
finit de n evenimente elementare: x1, x2 ,K, xn . Probabilitile de apariie ale
acestor evenimente le notm cu p1 , p 2 ,K , p n , unde:
numarul cazurilor favorabile evenimentului xi
pi =
.
numarul cazurilor egal posibile ale evenimentului
Se presupune c sistemul de evenimente este un sistem complet, adic:
4

Introducere n tiina sistemelor i a calculatoarelor


n

pi = 1 .
i =1

Experimentul pune n eviden un anumit cmp de probabilitate {X , x, p ( x )} i o


anumit repartiie:
x2 K xn
x
.
X = 1
p
p
K
p
2
n
1
Deoarece nu se cunoate apriori rezultatul experimentului X , nseamn
c acesta conine un anumit grad de nedeterminare. Se poate afirma c:
- n urma realizrii unui experiment se obine informaia, dac i numai
dac rezultatul experimentului X nltur o anumit nedeterminare;
- informaia i nedeterminarea sunt mrimi direct proporionale;
- informaia nlocuiete nedeterminarea.
Aceste considerente au condus la utilizarea aceleiai uniti de msur,
att pentru cantitatea de informaie, ct i pentru nedeterminare. Nedeterminarea
unui experiment depinde de probabilitatea de realizare a evenimentelor. Se
noteaz cu H msura gradului de nedeterminare pentru experimentul X .
Aceast funcie depinde de probabilitile pi ale evenimentelor xi :
H ( X ) = H ( p1 , p2 ,K , pn ) .
Funcia H reprezint de fapt cantitatea de informaie obinut prin producerea
experimentului X .
Bazele teoriei moderne a informaiei au fost puse de Claude Shannon. El
a folosit pentru prima dat, n anul 1948, formula:
n

H ( p1 , p2 ,K, pn ) = pi log 2 pi .
i =1

Msura nedeterminrii, dat de aceast formul, se numete, dup Shannon,


entropia experimentului X sau entropia informaional.
Unitatea de msur a informaiei se definete ca fiind cantitatea de
informaie obinut prin precizarea unei variante din dou egal probabile i se
numete bit (BInary digiT cifr binar).
Multiplii bitului sunt:
1 octet (byte) = 8 bii
1 kilooctet (kilobyte) = 210 o (sau 210 B)
1 Megaoctet (Megabyte) = 210 ko (kB) = 220 o (B)
1 Gigaoctet (Gigabyte) = 210 Mo (MB) = 220 ko (kB) = 230 o (B)
1 Teraoctet (Terabyte) = 210 Go (GB)
1 Paraoctet (Parabyte) = 210 To (TB)
Principalele proprieti ale entropiei informaionale sunt:
1. Entropia informaional, fiind o msur a informaiei, este o mrime
pozitiv:
5

Introducere

2.

3.

4.

5.

H ( p1 , p2 ,K , pn ) 0 .
Dac pentru un indice i {1,2,K, n} avem pi = 1 , atunci entropia
informaional este nul:
H ( p1 , p2 ,K , pn ) = 0 .
Entropia unui sistem de evenimente este maxim cnd evenimentele au
aceeai probabilitate de apariie:
H ( p1 , p 2 ,K , p n ) H (1 n ,1 n ,K ,1 n ) = log 2 n .
Evenimentele imposibile nu modific valoarea entropiei informaionale a
unui sistem:
H ( p1 , p 2 ,K , p n ,0) = H ( p1 , p 2 ,K , p n ) .
Entropia produsului mai multor surse independente de informaie este
egal cu suma entropiilor fiecrei surse luate separat:
H ( X1 X 2 K X n ) = H ( X1) + H ( X 2 ) + K + H ( X n ) .

Evoluia tehnicii de calcul


Prima main mecanic de calcul folosit pentru adunarea numerelor a
fost inventat n 1642 de francezul Blaise Pascal (1623-1662) - matematicianul,
fizicianul i filozoful de mai trziu - la numai 18 ani. Aceast main era
format din ase cilindri, fiecare cu cifre de la 0 la 9, legai ntre ei printr-o
manivel ce trecea prin axul comun. Prin rotirea manivelei se introduceau
numerele ce se adunau, rezultatul citindu-se direct prin ferestrele din dreptul
cilindrilor.
Gottfried Wilhelm Leibniz (1646-1716), filozof i matematician
german, a construit n 1694 i apoi n 1704, o main mecanic care, pe lng
adunri, efectua i nmuliri (prin adunri repetate).
Joseph Marie Jacquard (1752-1834), inventator francez, a conceput
mecanismul de comand cu cartele perforate utilizat la rzboaiele de esut.
Matematicianul englez Charles Babbage (1792-1871) a inventat prima
main de calcul care funciona pe baza unui program.
Dup anul 1940 matematicianul John von Neumann a emis principiul
programului nregistrat. Acest principiu presupune memorarea att a datelor ct
i a comenzilor. Von Neumann a sugerat constructorilor de calculatoare
principiile care trebuie s stea la baza realizrii unui sistem de calcul. Astfel a
aprut primul model al unui sistem de calcul. Conform acestui model, numit
model sau arhitectur von Neumann, un sistem de calcul trebuie s conin trei
tipuri de dispozitive: o unitate de prelucrare, un dispozitiv de stocare a
informaiei (memorie) i dispozitive de intrare/ieire. Aceste dispozitive sunt
conectate ntre ele prin intermediul unor magistrale.
Se consider ca an de nceput al erei de calcul anul 1944 cnd a fost creat
primul calculator electronic, MARK I, la Universitatea Harvard. Acesta era de
fapt o main electromagnetic, fiind realizat cu relee electromecanice.
6

Introducere n tiina sistemelor i a calculatoarelor

n anul 1945 a fost construit, la Universitatea din Pennsylvania, primul


calculator cu tuburi electronice denumit ENIAC (Electronic Numeric Integrator
and Computer). Ocupa 160 m2 i cntrea 30t. Viteza de lucru era de 5000 de
adunri sau 300 de nmuliri pe secund. Era realizat cu tuburi electronice (circa
18800) i coninea dispozitive de stocare a informaiei (memorii) realizate cu
tuburi catodice. O dat cu introducerea memoriei, instruciunile sunt stocate n
memorie i execuia lor are loc prin extragerea din memorie.
n anul 1950 a fost comercializat primul calculator UNIVAC. Din acest
moment ncepe s se dezvolte industria calculatoarelor, apar limbajele de
programare i se creeaz prima generaie de calculatoare urmat apoi de nc
patru generaii.
1950-1955 prima generaie de calculatoare, denumit i generaia
inventatorilor. Caracteristicile principale ale acestei generaii sunt:
- folosete relee i tuburi electronice, iar memoria intern i cea extern
sunt nmagazinate pe tambur magnetic;
- informaiile sunt introduse pe cartel perforat;
- programul este scris n cod main;
- viteza de lucru este foarte mic, circa 104 operaii/secund;
- capacitatea memoriei interne este redus, 2 koctei.
1956-1963 a doua generaie de calculatoare (generaia tehnologiilor).
Caracteristicile acesteia sunt:
- folosete tranzistoare i diode semiconductoare, memoria intern este
realizat cu ferite iar cea extern cu tambur magnetic;
- apar i memorii auxiliare pe band sau disc magnetic;
- informaiile sunt introduse pe cartel perforat;
- viteza de lucru crete la 105 - 2105 operaii/secund;
- memoria intern crete la 32 ko;
- apar noiunile de hardware i software;
- apar limbajele de nivel nalt: FORTRAN pentru domeniul tehnic i
tiinific, ALGOL pentru calcule economice.
1964-1973 a treia generaie de calculatoare, numit i generaia
programatorilor. Caracteristici:
- folosete circuite integrate, memoria intern fiind realizat cu ajutorul
semiconductoarelor, iar cea extern pe suport magnetic: benzi i discuri
de capacitate mare;
- informaiile sunt introduse prin cartel perforat dar i prin suport
electromagnetic;
- se dezvolt echipamentele periferice;
- viteza de lucru crete la 5106 operaii/secund (5 MIPS 5 milioane
operaii pe secund);
- memoria intern atinge 2 Mo;
- apar limbajele de programare: PASCAL, C, BASIC.
7

Introducere

1973-1990 a patra generaie de calculatoare (generaia utilizatorilor).


Caracteristicile acestei generaii sunt:
- apar i se rspndesc calculatoarele personale (Personal Computer, PC);
- folosesc circuite integrate;
- viteza de lucru crete la 30 MIPS;
- memoria intern crete la 16 Mo;
- apar sisteme de operare evoluate;
- se dezvolt reelele de calculatoare.
Se consider c din 1990 a nceput a cincea generaie de calculatoare,
cea a inteligenei artificiale. n aceast perioad:
- se dezvolt hardware-ul, aprnd echipamente periferice inteligente;
- se dezvolt lucrul n reea;
- se folosete limbajul natural ca mijloc de comunicaie cu calculatorul;
- calculatorul devine capabil s dezvolte raionamente bazate pe propria
experien.

Clasificarea sistemelor de calcul (calculatoarelor)


Un sistem de calcul cuprinde dou tipuri de resurse: hardware
(echipamentele fizice) i software. Resursele soft reprezint un ansamblu de
programe care au ca scop, pe de o parte gestionarea resurselor hard, iar pe de
alt parte rezolvarea unor probleme specifice.
n general sistemele de calcul (calculatoarele) pot fi mprite n trei mari
categorii: numerice (digitale), analogice, hibride.
Calculatoarele numerice sunt sisteme de calcul care primesc, prelucreaz
i transmit date, respectiv informaii, codificate sub form numeric binar. Din
considerente tehnologice, cele mai folosite semnale discrete (care iau valori
discontinue n timp) sunt cele binare, adic semnalele care iau dou valori
distincte.
Calculatoarele analogice sunt sisteme de calcul reprezentate printr-un
sistem fizic n care pot fi stabilite relaii matematice dinainte prescrie, ntre
variabilele continue ale sistemului fizic. Variabilele pot fi de orice natur fizic
msurabil: lungime, temperatur, tensiune, etc. Mrimile corespunztoare
condiiilor iniiale ale problemei de rezolvat se introduc sub forma unor tensiuni
electrice care sunt prelucrate, avnd ca rezultat tensiuni electrice variabile n
timp ce sunt prezentate utilizatorului printr-un instrument indicator.
Calculatoarele hibride constau din cuplarea unui calculator analogic cu
unul numeric. De obicei calculatorul numeric este un calculator de mic
capacitate, dar cu memorie suficient pentru a pstra datele necesare prelucrrii.
Comunicarea dintre cele dou calculatoare se face prin intermediul
convertoarelor analog-numerice i numeric-analogice.

Introducere n tiina sistemelor i a calculatoarelor

Capitolul 1
REPREZENTAREA INFORMAIEI N CALCULATOARELE
NUMERICE
Calculatoarele numerice (digitale) prelucreaz informaia reprezentat
prin dou stri codificate prin simbolurile 0 i 1. Reprezentarea informaiei prin
dou simboluri se numete reprezentare binar. Unitatea informaional este
deci starea binar numit bit. Un bit se codific prin 0 sau 1 dar poate reprezenta
numere sau valori logice (vezi capitolul 2). La reprezentarea numerelor
simbolurile 0 sau 1 sunt interpretate ca cifre binare. Reprezentarea binar este
utilizat n sistemele de calcul datorit urmtoarelor avantaje:
poate fi pus n coresponden cu strile stabile ale unui circuit electronic
digital;
are o aritmetic simpl;
analiza i sinteza blocurilor funcionale ale unui calculator se pot efectua
cu ajutorul algebrei booleene.
n cele ce urmeaz se urmrete nelegerea limbajului folosit de
calculatoarele numerice la prelucrarea datelor, modul cum se realizeaz
codificarea datelor ntr-o form specific sistemelor de calcul, precum i
decodificarea limbajului folosit de acestea ntr-o form accesibil celor care
utilizeaz tehnica de calcul.

1.1. Sisteme de numeraie


Un sistem de numeraie (SN) reprezint un ansamblu de reguli care
precizeaz modul de utilizare al unei mulimi finite de simboluri, numite cifre, n
scopul reprezentrii valorilor numerice. Sistemele de numeraie pot fi de dou
tipuri: poziionale i nepoziionale. n SN poziionale ponderea valoric a unei
cifre este dat de poziia ei n cadrul reprezentrii valorii numerice. Sistemele de
numeraie nepoziionale nu respect aceast regul. De exemplu, SN roman este
un sistem nepoziional (I, II, III, IV, V, VI, ). Cifra I reprezint unitatea
indiferent de poziia ocupat.
Sistemul de numeraie zecimal, utilizat n mod obinuit, este un sistem
poziional. De exemplu, interpretarea numrului zecimal N = 131 este:
N = 1 10 2 + 3 101 + 1 10 0 .
9

Reprezentarea informaiei n calculatoarele numerice

Cele dou cifre de 1 au ponderi diferite: prima reprezint 100 de uniti iar a
doua o unitate.
In continuare ne vom referi numai la sistemele de numeraie poziionale,
deoarece n sistemele de calcul se folosesc numai aceste tipuri. Numrul de
simboluri utilizat ntr-un SN reprezint baza (rdcina) sistemului de
numeraie. Referitor la baza B a unui SN putem face urtoarele observaii:
- este o valoare ntreag mai mare sau egal cu unu B 1 , B N ;
- ponderea cifrelor utilizate ntr-o reprezentare este dat de baz;
- baza se reprezint n propria baz prin succesiunea de simboluri 10.
Exemple:
a) sistemul zecimal este un sistem de numeraie n baza 10, numrul de cifre
utilizate fiind zece:
B = 10 ,
simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
b) sistemul binar este un sistem de numeraie n baza 2 i utilizeaz dou
cifre:
B = 2,
simboluri: 0, 1.
c) sistemul octal este un sistem de numeraie n baza 8, coninnd opt cifre:
B = 8,
simboluri: 0, 1, 2, 3, 4, 5, 6, 7.
d) sistemul hexazecimal este un sistem de numeraie n baza 16 i conine 16
cifre:
B = 16 ,
simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Pentru a indica n ce SN este scris un numr, la sfritul reprezentrii numrului


se adaug un indice inferior care precizeaz baza sistemului de numeraie.
Uneori, pentru specificarea bazei sistemului n care este scris un numr se mai
utilizeaz adugarea unei litere: n binar B, n octal O, n hexazecimal H i n
zecimal D.
Exemple:
B = 10 ,

N = 23110 = 2 10 2 + 3 101 + 1 10 0 ;

B = 8,
N = 4758 = 4 8 2 + 7 81 + 5 8 0 = 31710 ;
B = 2,
N = 1010012 = 1 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 0 21 + 1 2 0 = 4110 ;
B = 16 ,

N = A8 F16 = A 16 2 + 8 161 + F 16 0 = 270310 .

1. 1. 1 Conversia unui numr dintr-o baz de numeraie n alta

Operaia de trecere de la reprezentarea unui numr n baza B1 la


reprezentarea lui n baza B2 se numete conversia din baza B1 n baza B2 .
10

Introducere n tiina sistemelor i a calculatoarelor

1.1.1.2 Conversia unui numr ntreg din baza 10 ntr-o baz oarecare

Considerm un SN n baza B . Reprezentarea unui numr N ntreg,


N 0 , pe n poziii (cifre), este o secven de simboluri bn 1bn 2 Kb1b0 care
verific urmtoarele relaii:

N=

n 1

bi B i

(1.1)

i =0

(1.2)
0 bi < B , i = 0,L, n 1
Simbolurile bi constituie cifrele care trebuie determinate. Valoarea
reprezentrii, dat de relaia (1.1), se scrie sub forma:
N = bn 1 B n 1 + bn 2 B n 2 + K + b1 B1 + b0 .
(1.3)
Coeficienii bi se obin prin mprirea (ntreag) succesiv a lui N i a
cturilor obinute dup fiecare mprire, cu valoarea bazei B , pn se obine
ctul 0. Rezultatul conversiei numrului N este constituit din resturile obinute,
considerate n ordinea invers de apariie.
ntr-adevr, mprind expresia (1.3) la baza B se obine:
C0 = bn 1 B n 2 + bn 2 B n 3 + K + b1 i restul b0 .
Apoi, prin mprirea ctului C0 la baza B avem:
C1 = bn 1 B n 3 + bn 2 B n 4 + K + b2 i restul b1 .
Continund, se obin n mod succesiv, drept rest, simbolurile bi ale reprezentrii
numrului N n baza B .

Exemple:
1. Considerm numrul zecimal z . Reprezentarea acestuia n baza B se
obine astfel:
Ct
Rest
C0
r0 = b0
z:B
C0 : B
C1
r1 = b1
M
M
M
C n 2 : B C n 1
rn 2 = bn 2
C n 1 : B
rn 1 = bn 1
0
Deci reprezentarea numrului zecimal z n baza B este bn 1bn 2 Kb1b0 ( B ) .

2. S se converteasc numrul 2310 n sistemul binar.


23:2=11 r0 = 1
11:2=5 r1 = 1
5:2=2 r2 = 1
2:2=1 r3 = 0
11

Reprezentarea informaiei n calculatoarele numerice

1:2=0 r4 = 1
Rezult c reprezentarea n baza 2 este 101112=2310.
n general indicele de baz se scrie doar n cazurile n care pot apare confuzii de
interpretare.
1.1.1.3 Conversia unui numr subunitar din baza 10 ntr-o baz
oarecare B

Un numr subunitar pozitiv N , ntr-o baz B , are forma:


0, b1b 2 Kb m ,
0 b i < B , i = 1,L, m .
Valoarea acestei reprezentri este:

N = b1 B

+ b 2 B

+ Kb m B

= b i B i .

(1.4)

(1.5)

i =1

Coeficienii b i se obin prin nmulirea succesiv a numrului N cu noua baz.


La primul pas:
N B = b1 + b 2 B 1 + Kb m B m +1 = b1 + f1 ,
partea ntreag a numrului N B reprezint prima cifr, cea mai semnificativ
a rezultatului, b1 , adic b1 = [N B ] ( [x] reprezint partea ntreag a
numrului x ). n continuare, partea fracionar f1 a numrului N B se
nmulete cu B :
b 2 + b 3 B 1 + Kb m B m + 2 = b 2 + f 2 ,
partea ntreag reprezentnd cifra urmtoare, b 2 . Algoritmul continu, astfel
nct la un pas k oarecare:
b k + b k 1 B 1 + Kb m B m + k = b k + f k ,
obinndu-se cifra b k . Algoritmul se oprete fie n momentul n care partea
fracionar este zero, deci toate cifrele obinute n continuare vor fi zero, fie cnd
s-a atins precizia dorit la conversie. Rezultatul conversiei este constituit din
prile ntregi ale produselor luate n ordinea apariiei lor.
Exemple:
1. Numrul subunitar 0, f n baza 10, unde f este partea fracionar, se
convertete n baza B astfel:
Parte
Parte
ntreag fracionar
0, f B
b1
f1
0, f1 B
b 2
f2
0, f 2 B
b 3
f3
12

Introducere n tiina sistemelor i a calculatoarelor

M
M
M
Deci numrul zecimal 0, f se scrie n baza B sub forma 0, b1b 2b 3 K .

2. S se converteasc numrul zecimal 0,125 n binar.


0,125 2 = 0,25
b1 = 0

0,25 2 = 0,5
b 2 = 0

0,5 2 = 1,0
b 3 = 1

Rezult c numrul zecimal 0,125 se scrie n binar n forma 0,0012 .


3. S se converteasc numrul 0,17510 n binar.
0,175 2 = 0,35
b1 = 0

0,35 2 = 0,7
b 2 = 0

0,7 2 = 1,4
b 3 = 1

0,4 2 = 0,8
b 4 = 0

0,8 2 = 1,6
b 5 = 1

0,6 2 = 1,2
b 6 = 1

0,2 2 = 0,4
b 7 = 0

0,4 2 = 0,8
b 8 = 0

Algoritmul se oprete n acest moment pentru c s-a atins lungimea dorit de


reprezentare a valorii binare. Deci numrul zecimal 0,125 se reprezint
aproximativ n binar prin 0,00101100 .
4. S se efectueze conversia numrului zecimal 0,18 n hexazecimal
( B = 16 ).
0,18 16 = 2,88
b1 = 2

0,88 16 = 14,08
b 2 = E

0,08 16 = 1,28
b 3 = 1

0,28 16 = 4,48
b 4 = 4

0,48 16 = 7,68
b 5 = 7

0,68 16 = 10,88
b 6 = A

0,88 16 = 14,08
b 7 = E

0,08 16 = 1,28
b 8 = 1

Considerm c m = 8 este o precizie suficient de reprezentare a numrului i


deci 0,1810 se reprezint aproximativ n hexazecimal prin 0,2E147AE116.
Observaii:
- Algoritmul nu are ntotdeauna finalitate. n astfel de cazuri ne oprim
atunci cnd apreciem c precizia obinut este suficient.
13

Reprezentarea informaiei n calculatoarele numerice

- Un numr reprezentat exact ntr-o baz, poate avea o reprezentare


inexact (aproximativ) n alt baz.
1.1.1.4 Conversia unui numr real din baza 10 ntr-o baz oarecare B
Pentru a converti un numr zecimal real, format din parte ntreag i parte
fracionar, se efectueaz separat conversia prii ntregi, respectiv a prii
fracionare, i apoi se concateneaz reprezentrile obinute.
Exemple:
1. S se converteasc 23,25 din zecimal n binar.
0,2510=0,012
rezult
23,2510=10111,012.
2310=101112,

2. S se efectueze conversia numrului zecimal 943,75 n hexazecimal.


0,7510=0,C16
rezult
943,7510=3AF,C16.
94310=3AF16,
1.1.1.5 Conversia unui numr dintr-o baz de numeraie n zecimal

Un numr real, format din parte ntreag i parte fracionar, poate fi


reprezentat ntr-o baz de numeraie, B , ca o succesiune de cifre
bn 1bn 2 Kb1b0 , b1b 2 Kb m . Valoarea acestei reprezentri este:

N=

n 1

bi B i .

(1.6)

i = m

Prin urmare, pentru a converti un numr dintr-o baz de numeraie B n zecimal,


se va calcula suma produselor dintre cifra corespunztoare numrului i baza la
puterea specificat de poziia acesteia.
Exemple:
1. S se determine numrul zecimal reprezentat n binar astfel: 1101,101.
1101,1012 = 1 23 + 1 2 2 + 0 21 + 1 2 0 + 1 2 1 + 0 2 2 + 1 2 3 =

= 8 + 4 +1+

1 1
+ = 13,62510
2 8

2. S se converteasc n zecimal numrul hexazecimal 3AF,C16.


3AF, C16 = 3 16 2 + 10 161 + 15 16 0 + 12 16 1 = 3 256 + 10 16 + 15 +
+

12
= 943,7510
16

1.1.1.6 Conversia binar-octal-hexazecimal

14

Introducere n tiina sistemelor i a calculatoarelor

n general, conversia dintr-o baz B1 10 ntr-o alt baz B2 10 se


realizeaz prin intermediul bazei 10: se convertete valoarea din baza B1 n baza
10 i apoi n baza B2 . Exist situaii n care conversia se poate face direct ca de
exemplu, n cazul conversiilor binar-octal-hexazecimal. innd cont c baza
sistemelor de numeraie octal i hexazecimal se obine prin ridicarea la puterea a
3-a sau a 4-a a cifrei 2 se pot stabili compatibiliti directe ntre cele trei sisteme
de numeraie.
Astfel, conversiile ntre cele trei sisteme folosesc faptul c orice cifr
octal, respectiv hexazecimal, poate fi reprezentat prin 3, respectiv 4, cifre
binare (tabelul 1.1). innd cont de aceast observaie, s considerm un numr
real N care are urmtoarea reprezentare binar:
N = bn 1bn 2 Kb2 b1b0 , b1b 2 Kb m .
Numrul N l scriem ca o combinaie liniar a puterilor lui 2:
N = bn 1 2 n 1 + bn 2 2 n 2 + K + b2 2 2 + b1 2 + b0 + b1 2 1 + b 2 2 2 + b 3 2 3 +

+ K + b m 2 m.
Octal
0
1
2
3
4
5
6
7

Tabelul 1.1
Binar
Hexazecimal
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
8
9
A
B
C
D
E
F

Binar
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

n cazul n care dorim s efectum conversia binar-octal, deoarece o cifr octal


se reprezint prin trei bii, grupm expresia n triade, de la virgul spre extreme,
i obinem:

15

Reprezentarea informaiei n calculatoarele numerice

N = b3k + 2 2 2 + b3k +1 2 + b3k 23k + K + b2 2 2 + b1 2 + b0 +


+ (b

1 2

unde

+ b 2 2 + b 3

)2

+ K + (b

3l + 2 2

+ b 3l +1 2 + b 3l

)2

3l

N = bk 8 k + Kb181 + b0 80 + b 1 8 1 + K + b l 8 l ,

0 bi = b3i + 2 2 2 + b3i +1 2 + b3i < 8 .


Pentru a realiza conversia binar-hexazecimal grupm expresia n tetrade.
innd cont de cele artate anterior, pentru conversiile binar-octalhexazecimal se stabilesc urmtoarele reguli:
a) Conversia octal-binar sau hexazecimal-binar se realizeaz exprimnd
fiecare cifr octal, respectiv hexazecimal, prin 3, respectiv 4, cifre binare.

Exemple:
1. 245,78 = 010 100 101, 1112

2. 5AF,B16 = 0101 1010 1111, 10112


b) Conversia binar-octal sau binar-hexazecimal se realizeaz grupnd
cte 3, respectiv 4, cifre binare ncepnd de la marca fracionar (punct,
virgul) spre stnga i spre dreapta. Apoi se ataeaz fiecrei grupe simbolul
echivalent din octal sau din hexazecimal i combinaia obinut este chiar
reprezentarea. Grupele extreme se completeaz, dac este cazul, cu zerouri
nesemnificative.
Exemplu: S se converteasc numrul binar 1101010010,01011012 n octal i n
hexazecimal.
- octal:
001 101 010 010, 010 110 1002 = 1522,2648;
- hexazecimal:
0011 0101 0010, 0101 10102 = 352,5A16.

1. 2 Noiuni de codificare a informaiei


Pentru a putea fi prelucrat ntr-un sistem de calcul, informaia trebuie
adus la o form ce poate fi reprezentat n sistemele de calcul. Prin natura lor,
sistemele de calcul utilizeaz n special forma numeric binar. Schimbarea
formei de reprezentare a informaiei se numete codificare.
Fie X = x0 , x1 ,K, x p 1 mulimea simbolurilor primare emise de o surs

de informaie i B = {b0 , b1 ,K, bn 1} mulimea simbolurilor cu ajutorul crora se


realizeaz codificarea elementelor mulimii X . Prin operaia de codificare se
ataeaz fiecrui element xi X , al sursei primare de informaie, o secven de
16

Introducere n tiina sistemelor i a calculatoarelor

simboluri bi B , astfel nct modelul de codificare va fi reprezentat printr-o


coresponden biunivoc. De exemplu, putem avea:
x0 b0 b1b2b1 c0 ,
x1 b0 b1b3b1 c1 ,
x2 b1b2 b3 c3 ,
x3 K
Dac se noteaz fiecare combinaie de simboluri cu c0 , c1 ,K se obine mulimea
C = c0 , c1 ,K, c p 1 denumit mulimea cuvintelor de cod. innd cont de cele
de mai sus se poate defini codificarea ca o coresponden biunivoc ntre
elementele xi X i ci C , deci o aplicaie bijectiv f : X C . Cu
simbolurile mulimii B se pot forma i cuvinte crora s nu le corespund
elemente din mulimea X . Acestea sunt denumite cuvinte fr sens. Cuvintele
crora le corespund elemente din mulimea X se numesc cuvinte cu sens.
n momentul realizrii codificrii apare i problema transformrii inverse,
ce permite revenirea la forma iniial. Operaia de revenire din mulimea
cuvintelor de cod n mulimea simbolurilor primare, prin intermediul funciei
inverse f 1 : C X , se numete decodificare.
Numrul de simboluri elementare dintr-un cuvnt de cod reprezint
lungimea acestuia. n cazul n care toate cuvintele de cod au aceeai lungime,
codificarea se numete uniform. Intern, ntr-un sistem de calcul, informaia este
reprezentat n binar i deci mulimea B este mulimea {0,1}. Prin urmare,
cuvintele mulimii C sunt cuvinte binare de o anumit lungime, n general 8 bii,
16 bii, 32 bii, 64 bii, etc.
Numrul de secvene distincte de lungime l , care pot fi create cu ajutorul
mulimii B = {0,1} este 2l . Prin urmare, pentru a se putea realiza codificarea,
trebuie ca numrul simbolurilor primare emise de o surs de informaie
(numrul de elemente ale mulimii X ) s fie cel mult 2l .
n funcie de elementele mulimii X i de regulile de ataare a
combinaiilor de simboluri {0,1} se obin diferite coduri. Dup natura
elementelor mulimii X , codurile pot fi de dou tipuri:
- numerice mulimea X conine valori numerice;
- alfanumerice mulimea X conine i alte simboluri (litere, cifre, etc.).

1.3 Coduri numerice


1.3.1 Modaliti de reprezentare a numerelor n calculator
Datele de intrare pentru un program i/sau rezultatele pot fi numere ntregi
sau numere reale, pozitive sau negative. Aceste numere sunt preluate de
subsistemele de intrare i convertite din forma de reprezentare extern ntr-o
17

Reprezentarea informaiei n calculatoarele numerice

form intern. Subsistemele de ieire convertesc rezultatele numerice din forma


de reprezentare intern n forma extern, accesibil utilizatorului. n mod
obinuit, forma extern de reprezentare a numerelor este cea zecimal. Intern, n
calculator, numerele se reprezint n binar, printr-o secven de bii de 0 i 1
conform unor reguli de reprezentare. Codurile utilizate n reprezentarea
numerelor sunt coduri numerice. Reprezentarea unei valori numerice presupune
precizarea a dou elemente: codul folosit pentru a reprezenta acea valoare i
dimensiunea reprezentrii.
Modul de reprezentare intern a numerelor constituie o problem
important n proiectarea unui calculator, deoarece acesta determin
complexitatea unitii aritmetico-logice (unitatea care execut calculele
aritmetice i logice), domeniul valorilor permise (domeniul de reprezentare),
precizia calculelor i, ca urmare, posibilitatea de utilizare a calculatorului.
Pentru numerele reale, s-a stabilit urmtoarea convenie: virgula nu se
reprezint n calculator. Poziia acesteia este implicit, toate numerele care se
reprezint n calculator respectnd aceast convenie.
Pentru reprezentarea numerelor n calculator se folosesc dou formate de
reprezentare: formatul cu virgul fix i formatul cu virgul mobil.
Reprezentarea n formatul cu virgul fix se caracterizeaz prin aceea c
numrul de cifre la dreapta virgulei, poziia ei i numrul de cifre la stnga
virgulei sunt fixe. Virgula, care nu se reprezint n calculator (deci nu ocup o
poziie n reprezentarea numrului) are o poziie fix i poate fi amplasat
conform figurii 1.1:
parte parte
ntreag fracionar

a)

b)

c)

Fig. 1.1 Tipuri de reprezentri n formatul cu virgul fix


n figura anterioar sgeata indic poziia implicit a virgulei. Forma a)
este destinat reprezentrii numerelor ntregi, forma b) pentru numerele
subunitare iar forma c) pentru numerele care au att parte ntreag ct i parte
fracionar, fiecare reprezentat pe un numr fix de cifre. Formele cele mai
utilizate pentru reprezentarea numerelor n formatul cu virgul fix sunt a) i b).
Forma c) este folosit pentru calculatoarele dedicate. Dezavantajul principal al
acestei forme este urmtorul: toate numerele trebuie convertite la acest format,
prin utilizarea unor factori de scalare att la introducerea, ct i la extragerea lor
din calculator. De asemenea, domeniul de valori este restrns fa de situaiile
reale. Din aceste motive s-a adoptat o nou reprezentare, n formatul cu virgul
18

Introducere n tiina sistemelor i a calculatoarelor

mobil. Principala deosebire a acestui format fa de formatul cu virgul fix


const n poziia virgulei, care se poate modifica dup cum este necesar, atunci
cnd se efectueaz calculele.
n ambele formate trebuie remarcat numrul finit de bii ai reprezentrii.
Acest numr depinde de tipul calculatorului, fiind stabilit n faza de proiectare a
lui. Din aceast cauz, n calculator nu se pot reprezenta dect un numr finit de
valori. Numerele care se reprezint n calculator corespund unei anumite
mulimi finite din matematic i se numesc numere n precizie finit. Numerele
n precizie finit au proprieti, care difer de cele ale numerelor din matematic.
Astfel sunt: fenomenul de depire a capacitii de reprezentare (depirea
domeniului de valori reprezentabile) i algebra cu numere n precizie finit.
Pentru a exemplifica cele dou proprieti considerm c dispunem de o
main ipotetic (main zecimal) care folosete pentru reprezentarea
numerelor ntregi 3 cifre, avnd posibilitatea reprezentrii semnului. n acest
caz, domeniul de valori este [ 999, 999 ]. n urma operaiilor de adunare a dou
numere de acelai semn sau de nmulire, poate rezulta o valoare care s
depeasc acest domeniu. Dac se consider operaia de adunare a numerelor
400 i 700 (care aparin domeniului de valori) rezult o valoare mai mare dect
valoarea maxim Vmax = 999 (rezult 1100), valoare ce nu se poate reprezenta
pe trei digii (cifre zecimale). Apare astfel fenomenul de depire superioar a
domeniului de valori. Analog se poate obine i o depire inferioar, dac
rezult o valoare mai mic dect Vmin = 999 .
Algebra cu numere n precizie finit difer de algebra cu numere reale. S
lum ca exemplu legea asociativ:
a + (b c ) = (a + b ) c .
Utiliznd aceeai maina zecimal pentru evaluarea celor dou expresii, pentru
valorile a = 400 , b = 700 i c = 300 , obinem rezultate diferite. n expresia din
stnga se evalueaz mai nti paranteza i apoi se efectueaz operaia de
adunare, rezultatul fiind 800. La evaluarea expresiei din dreapta se calculeaz
mai nti paranteza i se obine depirea superioar a domeniului de valori.
Rezultatul de depinde de calculatorul folosit, dar nu va fi n nici un caz 1100.
Prin urmare rezultatul final obinut nu va fi cel corect. Deci legea de
asociativitate nu este respectat. De reinut c ordinea de efectuare a operaiilor
este important, programatorului revenindu-i sarcina de a transcrie corect n
program relaiile matematice.
1.3.2 Reprezentarea numerelor naturale (reprezentarea aritmetic)
Reprezentare numerelor naturale N = {0,1,2K} se realizeaz pe un numr
fix de poziii binare (formatul cu virgul fix), de regul 8, 16, 32 sau 64, fiind
numit i reprezentarea aritmetic (fig. 1.2).
19

Reprezentarea informaiei n calculatoarele numerice

n 1 n 2

2 n 1 2 n 2

2n 3

21

20

Fig. 1.2 Reprezentarea numerelor naturale pe n poziii binare


Regula de asociere a acestui cod este chiar reprezentarea binar a valorii
respective. n poziiile 1,2,K, n sunt nscrise cifrele binare corespunztoare
numrului natural reprezentat n binar. Alinierea numerelor naturale se
realizeaz la dreapta, eventualele zerouri nesemnificative fiind plasate n faa
numrului. Dac se cunoate numrul poziiilor binare pe care se reprezint un
numr natural, se poate stabili numrul maxim ce poate fi reprezentat aritmetic,
acesta ocupnd toate poziiile cu cifra 1. Presupunnd c reprezentarea se
realizeaz pe 8 poziii binare (8 bii), numrul maxim va fi reprezentat ca n
figura 1.3.
8
1
27

7
1
26

6
1
25

5
1
24

4
1
23

3
1
22

2
1
21

1
1
20

Fig. 1.3 Reprezentarea numrului natural maxim pe 8 poziii binare


Se observ c n cazul unei reprezentri pe 8 bii, numrul maxim ce poate fi
reprezentat este 28 1 = 255 i deci intervalul de reprezentare este [0, 255].

n cazul a n bii, se pot reprezenta numerele naturale din intervalul 0, 2 n 1 .


1.3.3 Reprezentarea numerelor ntregi cu semn
n multe aplicaii se lucreaz cu numere ntregi cu semn. Numerele
negative se pot reprezenta utiliznd diferite coduri. Dintre cele mai utilizate
coduri de reprezentare putem aminti: reprezentarea n semn-mrime (cod direct),
n complement fa de 2 (cod complementar), n complement fa de 1 (cod
invers), n exces. Exist i alte forme de reprezentare cum ar fi complement fa
de 10, complement fa de 9, etc. Formele menionate anterior sunt consacrate n
majoritatea sistemelor de calcul actuale. n anumite calculatoare specializate,
pentru un anumit tip de calcule i aplicaii, se folosesc i alte forme de
reprezentare. Utilizarea mai multor forme de reprezentare este motivat de
simplitatea efecturii anumitor calcule i conversii de reprezentare.
20

Introducere n tiina sistemelor i a calculatoarelor

1.3.3.1 Reprezentarea numerelor ntregi n semn-mrime (cod direct)


Reprezentarea n semn-mrime, numit i reprezentare algebric, este
asemntore reprezentrii numerelor naturale, cu deosebire c prima poziie
(primul bit) este ocupat de semnul numrului ntreg, S , astfel:
S = 0 , dac numrul este pozitiv, N 0 ;
S = 1 , dac numrul este strict negativ, N < 0 .
Reprezentarea numerelor ntregi pe n bii ( n fiind 8, 16, 32, 64) este redat n
figura 1.4.
n
S

n 1 n 2

n2

n 3

21

20

Fig. 1.4 Reprezentarea numerelor ntregi pe n poziii binare


n acest fel un ntreg cu semn se poate reprezenta pe n bii prin:
N = bn 2bn 3 Kb1b0 , cu
bi {0,1} .
Dac notm bitul din poziia semnului cu bn 1 , atunci
0 pentru N 0
bn 1 =
,
<
1
pentru
N
0

i numrul N poate fi scris:

N = bn 1bn 2bn 3 Kb1b0 = ( 1)

bn

n2

bi 2i .

(1.7)

i =0

Acest mod de reprezentare se mai numete i cod direct i este dat de


reprezentarea modulului (mrimea) unui numr, precedat de cifra semn.
Exemple: Considerm c dimensiunea reprezentrii este de 8 bii.
N = 10101 ;
N = +2110 = 0 0010101 , S = 0 ,
N = 10101 .
N = 2110 = 1 0010101 , S = 1 ,
Cunoscnd numrul de bii, n , ai reprezentrii, atunci intervalul posibil admis
de reprezentarea n mrime-semn este:
2 n 1 + 1, 2 n 1 1 .
Reprezentarea prin semn-mrime a numerelor ntregi este dezavantajoas din
punct de vedere al modelrii operaiilor matematice cu ajutorul circuitelor
electronice deoarece:
- biii de semn se trateaz diferit;

21

Reprezentarea informaiei n calculatoarele numerice

- exist dou reprezentri pentru numrul 0, de exemplu, pentru


reprezentrile pe 8 bii, avem:
- 0 + zero pozitiv, 0 0000000;
- 0 zero negativ, 1 0000000.
Faptul acesta creeaz probleme i este nevoie de un hard mai complex pentru a
corecta problemele care apar.
1.3.3.2 Reprezentarea numerelor n complement fa de 2 (codul
complementar)
Considerm un numr ntreg N . Complementul fa de 2, N c , al
numrului N se definete prin relaia:
N 0
N ,
Nc = n
(1.8)
2 + N = 2 n N , N < 0
unde N reprezint valoarea absolut a numrului N , iar n dimensiunea
reprezentrii (numrul de poziii binare inclusiv semnul). Pentru numere
pozitive, N 0 , reprezentarea n cod complementar este identic cu
reprezentarea n semn-mrime. n cele ce urmeaz se caut o expresie mai
convenabil pentru cazul numerelor negative. Numrul negativ N , n baza 2, are
reprezentarea (pe n bii, inclusiv semnul):
n2

N = bn 2bn 3 Kb1b0 = bi 2i ,

(1.9)

i =0

i atunci rezult c, pentru complementul fa de 2, se poate scrie:


N c = 2n

n2

K
bi 2i = 11
12
31 + 1

i =0

N c = 2 n 1 +

n2

n2

n2

i =0

i =0

i =0

bi 2i = 2 n 1 +

2i + 1

n2

(1 bi )2i + 1.

bi 2i

(1.10)

i =0

Introducem notaia 1 bi bi , unde bi reprezint inversul logic al bitului bi ,


adic 0 = 1 i 1 = 0 . Atunci relaia (1.10) se scrie n forma:
N c = 1bn 2bn 3 Kb1b0 + 1 .
(1.11)
Pe baza relaiilor (1.8-11), pentru reprezentarea numerelor negative n cod
complementar, se pot enuna urmtoarele trei reguli:
1. Se reprezint numrul n valoare absolut, apoi se inverseaz bit cu bit,
inclusiv bitul de semn (care devine 1) i se adun 1 la cel mai puin semnificativ
bit (bitul LSB).
Exemplu: Numrul N = 75 se reprezint pe n = 8 bii astfel:
22

Introducere n tiina sistemelor i a calculatoarelor

a) N = +75 = 0 1001011;
b) se inverseaz fiecare bit, inclusiv cel de semn: 1 0110100 ;
c) se adun 1: 1 0110100 + 1 = 1 0110101 , deci N c = 1 0110101 .
2. Se folosete definiia (1.8), unde n reprezint dimensiunea reprezentrii
(inclusiv semnul).
Exemplu: Pentru aflarea complementului fa de 2, pe n = 8 bii, al numrului
N = 75 se procedeaz astfel: N c = 28 N i deci
100000000 01001011
N c = 10110101 .
10110101
3. Codul complementar al unui numr negativ, N , se obine prin inversarea
biilor reprezentrii cu semn (inclusiv a bitului de semn) a valorii absolute, N ,
plecnd de la dreapta spre stnga, cu excepia primului bit de 1 i a tuturor
biilor de 0 dinaintea sa.
Exemple:
1. N = 75 . Se reprezint N cu semn N = +75 = 0 1001011 i aplicnd
regula 3 rezult: N c = 1 0110101 .
2. N = 112 N = +112 = 0 1110000 N c = 1001 0000 .
Se observ c, dac se aplic regula 1 unei valori negative reprezentate n
complement fa de 2, atunci se obine valoarea pozitiv echivalent. De
exemplu, pentru N c = 1 0110101 prin inversarea biilor obinem 0 1001010 i
prin adunarea lui 1 rezult 0 1001011 = +75 . n concluzie, pentru a interpreta o
valoare negativ reprezentat n cod complementar, se aplic regula 1 (numit i
regula de negare) i se obine numrul opus corespunztor.
Observaie: n complement fa de 2 avem o singur reprezentare pentru
valoarea zero.
N = 0 pe 8 bii se reprezint n semn-mrime prin 0 0000000 . Aplicnd prima
regul se obine: 11111111, i apoi adunnd 1 rezult reprezentarea n cod
complementar: N c = 0 0000000 .
Codul complementar este codul cel mai utilizat n reprezentarea
numerelor algebrice n calculator. Considernd c se folosesc pentru
reprezentare n bii (din care unul pentru semn), atunci domeniul de valori este:
2 n 1 , 2 n 1 1 .
Se observ c domeniul de valori nu este simetric: exist un numr negativ,
2 n 1 , care nu are corespondent pozitiv n domeniu.

23

Reprezentarea informaiei n calculatoarele numerice

1.3.3.3 Reprezentarea numerelor n complement fa de 1 (codul


invers)
Considerm un numr N ntreg i dimensiunea reprezentrii (inclusiv
semnul) fiind n . Complementul fa de 1, N i , al numrului N se definete prin
relaia:
N 0;
N ,
Ni = n
(1.12)
2 1 + N = 2 n 1 N , N < 0,
Pentru numerele pozitive reprezentarea n cod invers este identic cu
reprezentarea n semn-mrime. n cazul numerelor negative, efectund un
raionament similar cazului codului complementar fa de 2, se obine expresia
codului invers:
N i = 1bn 2bn 3 Kb1b0 .
(1.13)
Din relaiile (1.12) i (1.13) rezult dou reguli de obinere a codului
invers:
1. Se reprezint valoarea absolut a numrului n cod direct (mrime-semn) i
se inverseaz toi bii, inclusiv semnul.
Exemplu: numrul N = 75 se reprezint pe n = 8 bii astfel:
N = +75 = 0 1001011 i prin inversarea biilor rezult N i = 1 0110100 .
2. Se folosete definiia (1.12), unde n reprezint dimensiunea reprezentrii
(inclusiv semnul).
Exemplu: Pentru aflarea complementului fa de 1, pe n = 8 bii, al numrului
N = 75 se procedeaz astfel: N i = 28 1 N implic
11111111 01001011 i deci N i = 1 0110100 .
10110100

Observaie. Din definiie, se observ c dac efectum calculul N i + N ,


rezultatul (pe n bii) este 11K12 , adic 2 n 1 .
Domeniul de valori reprezentabile n cod invers este:
2 n 1 + 1, 2 n 1 1 .
Un dezavantaj al codului invers l constituie faptul c admite dou reprezentri
pentru 0. De exemplu, n cazul unei reprezentri pe n = 8 bii avem:
+ 0 = 0 0000000 i 0 = 11111111.

24

Introducere n tiina sistemelor i a calculatoarelor

1.3.3.4 Reprezentarea numerelor n cod exces


Aceast codificare const n adunarea unei valori constante la fiecare
numr ntreg (pozitiv sau negativ) care se reprezint. Valoarea constant, notat
E , care se adun, este de regul 2 n 1 sau 2 n 1 1 , unde n este numrul de bii
ai reprezentrii. Matematic, un numr ntreg N se reprezint n cod exces E
prin:
E+N.
n general, domeniul de valori ntregi ce se pot reprezenta pe n bii este:
2 n 1 + 1, 2 n 1 1 . Utiliznd codul exces 2 n 1 1 , domeniul de mai sus se

transform n domeniul de valori pozitive: 0, 2 n 1 . Deci codul n exces poate


transforma un domeniu de numere algebrice ntr-un domeniu de numere
aritmetice. Operaiile cu numere aritmetice se implementeaz mai simplu
(hardware sau software) dect cu numere aritmetice, aceasta constituind un
avantaj al codului n exces. Codul n exces se folosete n special la
reprezentarea exponentului numerelor n formatul cu virgul mobil.
1.3.4 Reprezentarea numerelor reale
Numerele reale se reprezint n calculator n formatul cu virgul mobil
(flotant). Un numr real N , reprezentat ntr-o anumit baz de numeraie B , se
poate scrie sub forma:
(1.14)
N = M BE ,
unde: E - se numete exponent i este un numr ntreg (pozitiv sau negativ), ce
determin ordinul de mrime al numrului;
M - este un numr fracionar numit mantis, ce determin precizia
numrului.
Remarcm c o astfel de reprezentare nu este unic. De exemplu, n baza 10,
numrul real 3,14 poate fi scris n mai multe forme:
3,14 = 3,14 10 0 = 31,4 10 1 = 0,314 101 .
Acest neajuns se nltur dac se consider o reprezentare n care mantisa M
satisface relaia:
1
= 0,1 M < 1.
(1.15)
B
n acest caz mantisa se numete normalizat, are obligatoriu dup marca
fracionar (virgul sau punct) o cifr diferit de cifra 0 i este n valoare
absolut un numr subunitar. Cu aceste considerente, numrul zecimal anterior
3,14 se reprezint unic sub forma 0,314 101 .
Observaie. Unele formate de reprezentare folosesc pentru normalizarea
mantisei relaia:
1 M < B .
(1.16)
25

Reprezentarea informaiei n calculatoarele numerice

n general, n formatul cu virgul mobil, un numr real se aduce n


forma:
(1.17)
N = M B E ,
n care mantisa M este normalizat i este considerat un numr pozitiv
subunitar. Prin urmare, un numr real N se reprezint pe n bii prin bitul de
semn al numrului, exponent i mantis ca n figura 1.5.
n-1
S

0
Exponent

Mantis
m bii

e bii

Fig. 1.5 Reprezentarea n virgul mobil


Se remarc faptul c informaia care nu se modific nu se reprezint, adic baza
i virgula. Deoarece se folosete un bit pentru semnul numrului, atunci mantisa
se consider un numr pozitiv i se reprezint prin mrime, baza de reprezentare
B , a mantisei (baza de reprezentare a numrului i a mantisei, de regul, sunt
aceleai) fiind 2, 4, 8 sau 16.
Dac baza de reprezentare este 2, bitul mai semnificativ al mantisei este
ntotdeauna 1 (mantisa este normalizat). Acest bit poate s fie reprezentat (s i
se aloce o poziie) sau nu n memoria calculatorului. n cazul n care nu se
reprezint, fiind implicit 1, efectul este acela de a dubla numrul de mantise
distincte ce se pot reprezenta. Aceast tehnic de reprezentare este des utilizat,
iar bitul care nu se reprezint se numete bit ascuns (hidden bit). Trebuie reinut
totui c tehnica cu bit ascuns se refer doar la reprezentarea numerelor n
memoria calculatorului nu i la operaiile efectuate de unitatea aritmetico-logic.
Condiia de normalizare a mantisei, care asigur unicitatea reprezentrii
numrului real n calculator, stabilete numrul de cifre ale mantisei. Acest
numr determin precizia reprezentrii. Precizia reprezentrii ne arat de fapt
numrul de cifre zecimale disponibile n acel format. Numrul total de mantise
distincte ce se pot reprezenta este:
(1.18)
N mantise = (B 1)B m 1 .
Pentru reprezentarea exponentului, care este ntotdeauna un numr ntreg
pozitiv sau negativ, se utilizeaz n general un cod n exces. Scopul utilizrii
codului n exces este acela de a deplasa domeniul valorilor exponentului ntr-un
interval pozitiv n vederea lucrului cu numere ntregi fr semn. De exemplu,
ntr-o reprezentare care aloc e bii pentru exponent, prin reprezentarea n cod
exces 2 e1 , domeniul de valori al exponentului D = 2 e 1 1 , 2 e 1 1 se

[(

transform n D = 1, 2 e 1 . Valoarea 0 a exponentului n cod exces este


26

Introducere n tiina sistemelor i a calculatoarelor

rezervat pentru reprezentarea numrului real 0.0, deoarece valoarea 0 nu poate


fi normalizat (mantisa M 0 ).
Exponentul reprezentat n cod exces se mai numete caracteristic.
n continuare evalum intervalul valorilor reprezentabile. Valoarea
maxim a exponentului este: Emax = 2 e 1 1 . Considernd cazul mantisei
subunitare, atunci valorile pozitive reprezentabile satisfac relaia:
Vmin = B Emax 1 M B E < B Emax = Vmax .
(1.19)
Reprezentnd domeniul de valori pe axa real avem cazul din figura 1.6.

-Vmax

-Vmin 0

Vmin

Vmax

Fig.1.6
Dac n urma unei operaii aritmetice rezult o valoare din intervalele
( ,Vmax ] sau [Vmax , ) atunci apare fenomenul de depire a capacitii de
reprezentare: depire flotant superioar (rezultat > Vmax ), respectiv depire
flotant inferioar (rezultat < Vmax ). Acest fenomen este semnalat de ctre
calculator, execuia programului fiind abandonat, odat cu afiarea unui mesaj
corespunztor. Fenomenul de depire n formatul cu virgul mobil poate apare
numai dac se depete capacitatea de reprezentare a exponentului. Dac
rezultatul unei operaii este n intervalul ( Vmin ,Vmin ) , atunci el este considerat
ca fiind 0 i nu se semnaleaz eroare.
Pentru mrirea capacitii de reprezentare se poate mri numrul de bii
rezervai exponentului sau se alege o baz mai mare.
Exist mai multe formate de reprezentare n virgul mobil: formatul
DEC, formatul IBM, standardul IEEE, etc. Standardul IEEE (Institute of
Electric and Electronic Egineering) a fost adoptat n 1985 i majoritatea firmelor
de microprocesoare cum ar fi Intel, Motorola, SPARC i MIPS produc
coprocesoare aritmetice care lucreaz cu reprezentarea standard n virgul
mobil. Baza de reprezentare este 2. Mantisa se reprezint n valoare absolut
folosind tehnica cu bit ascuns. Condiia de normalizare a mantisei este:
1,010 M < 2,010
sau
1,00K 010 M 1,11K12 .
Deoarece partea ntreag a mantisei este ntotdeauna 1, aceasta nu se mai
reprezint n calculator, reprezentndu-se numai cifrele de la dreapta virgulei.
Standardul IEEE definete trei formate:
- simpl precizie (32 bii);
- dubl precizie (64 bii);
27

Reprezentarea informaiei n calculatoarele numerice

- precizie extins (80 bii).


Formatul cu precizie extins se utilizeaz n interiorul unitilor aritmetice de
virgul mobil, la care programatorii nu au acces.
Formatul simpl precizie are un bit pentru semn, 8 bii pentru exponent i
23 bii pentru mantis. Exponentul se reprezint n cod exces 12710. Rezult
urmtoarele caracteristici ale acestui format, n simpl precizie (fig. 1.7):
Vmantisa _ min = 1,00K 0 2 = 1 ;
Vmantisa _ max = 1,11K12 = 2,0 2 23 ;
Vmin = 1,00K 0 2 2 126 = 1,1755 10 38 ;
Vmax = 1,11K12 2 +128 = 3,4028 10 38 ;

N mantise = 2 23 = 8388608 8,4 10 6 .

Precizia reprezentrii este de 6 cifre zecimale.


31 30
23 22
S Exponent + 127

0
Mantis normalizat

Fig. 1.7
Formatul dubl precizie folosete un bit pentru semn, 11 bii pentru
exponent i 52 bii pentru mantis. Exponentul este reprezentat n cod exces
1024 (210). Caracteristicile reprezentrii n dubl precizie sunt:
Vmin = 1,00 K 0 2 2 1022 = 2,225 10 308 ;

Vmax = 1,11K12 2 +1023 = 1,798 10 308 ;


N mantise = 2 52 4,5 1015 .

Se observ c domeniul de reprezentare este mult mai mare dect n simpl


precizie, iar precizia a crescut la 15 cifre zecimale exacte.
1.3.5 Reprezentarea cifrelor zecimale (coduri zecimal-binare)
n aceast clas de coduri zecimal-binare (BCD Binary Coded Decimal)
mulimea X a sursei primare de informaie ce trebuie codificat este format din
simbolurile cifrelor zecimale, X = {0,1,2,3,4,5,6,7,8,9} , deci mulimea cuvintelor
de cod trebuie s conin cel puin 10 cuvinte distincte. Cuvintele de cod trebuie
s aib cel puin 4 bii, deoarece 2 3 < 10 < 2 4 . Stabilind corespondena ntre
mulimea cifrelor zecimale i mulimea celor 16 cuvinte binare de 4 bii se obin
28

Introducere n tiina sistemelor i a calculatoarelor


10
n total A16
posibiliti de codificare. Din acest numr mare de coduri posibile
exist anumite variante mai uzuale care pot fi divizate n: coduri ponderate i
coduri neponderate.
Coduri ponderate. Un cod ponderat asociaz fiecrei cifre zecimale o
tetrad binar, iar ponderea fiecrui bit din tetrad este egal cu valoarea cifrei
din denumirea codului, tabelul 1.2. Cifra zecimal codificat se obine prin suma
biilor din cuvntul de cod, ponderai cu valoarea corespunztoare din
denumirea codului. Dac atam unei cifre zecimale zi {0,1,K ,9} un cuvnt de
cod ci = b3b2b1b0 , unde bk {0,1} , atunci se poate scrie:

zi =

bk pk ,

(1.20)

k =0

unde pk constituie ponderea corespunztoare rangului k . Dintre codurile


ponderate cele mai utilizate amintim: 8421, 2421,4221, 7421.
Cifr
zecimal
0
1
2
3
4
5
6
7
8
9

Tabelul 1.2 Coduri ponderate


8421
2421
4221
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

0000
0001
0010
0011
0100
1011
1100
1101
1110
1111

0000
0001
0010
0011
0110
1001
1100
1101
1110
1111

7421
0000
0001
0010
0011
0100
0101
0110
0111
1001
1010

Codul 8421 are ca ponderi puterile lui 2 (8=23, 4=22, 2=21, 1=20) i
cuvintele de cod sunt chiar numerele succesive n sistemul binar natural. Din
acest motiv codul 8421 se mai numete codul zecimal-binar natural NBCD
(Natural Binary Coded Decimal). n terminologia curent este denumit
(impropriu) doar codul BCD.
La codul 2421 (codul Aiken) codificarea primelor cinci cifre zecimale
este identic cu cea din codul 8421. n continuare codificarea cifrei zecimale 5
se obine din secvena corespunztoare cifrei zecimale 4 prin complementare
(complement fa de 1). Aceeai regul se aplic pentru obinerea cuvntului de
cod al cifrei 6 din cel al cifrei 3, respectiv 7 din 2, 8 din 1 i 9 din 0. Deci dou
cifre zecimale complementare fa de 9 (0 cu 9, 1 cu 8, 2 cu 7, 3 cu 6, 4 cu 5) au
cuvintele de cod obinute prin inversarea cifrelor binare. Codurile care prezint
aceast proprietate sunt denumite coduri cu autocomplementare.
29

Reprezentarea informaiei n calculatoarele numerice

Coduri neponderate. Dintre codurile neponderate cele mai utilizate


amintim: Exces 3 i codul Gray (tabelul 1.3).
Codul Exces 3 se obine din cuvntul de cod 8421 al cifrei zecimale
respective la care se adaug 0011 (3 n binar). Este un cod cu
autocomplementare i cifrei zecimale 0 i corespunde un cuvnt de cod ce
conine cifre binare de 1. n acest cod se poate face distincie, pentru o locaie de
memorie sau un registru, ntre lipsa unei informaii nscrise i nscrierea lui zero,
deoarece zero este codificat prin 0011 (a disprut din cod cuvntul 0000, ceea ce
reprezint lipsa unei informaii).
Codul Gray are proprietatea de adiacen, n sensul c trecerea de la o
cifr zecimal la urmtoarea se face prin modificarea unui singur bit din
cuvntul de cod. Acest cod este util pentru mrimile care cresc succesiv (de
exemplu la codificarea n diagrama Veitch-Karnaugh de minimizare a funciilor
logice). Dac notm cu a8 , a4 , a2 , a1 cifrele binare ale secvenelor codului 8421,
n ordinea ponderilor i cu b4 ,b3 ,b2 ,b1 cifrele binare ale secvenelor codului
Gray, n ordinea de la stnga spre dreapta, acestea din urm pot fi calculate
folosind relaiile:
(1.21)
b4 = a8 , b3 = a8 a 4 , b2 = a4 a2 , b1 = a 2 a1 .
Tabelul 1.3 Coduri neponderate
Cifr
Exces 3 Gray
zecimal
0
0011
0000
1
0100
0001
2
0101
0011
3
0110
0010
4
0111
0110
5
1000
0111
6
1001
0101
7
1010
0100
8
1011
1100
9
1100
1101
Reprezentarea unui numr zecimal ntr-un cod zecimal-binar se face
nlocuind fiecare cifr zecimal cu tetrada corespunztoare din acel cod. De
exemplu, n cod NBCD (pentru care vom utiliza terminologia BCD) numrul
zecimal N = 539 se reprezint prin:
N = 0101 0011 1001BCD ,
fiecare cifr zecimal fiind nlocuit cu corespondentul su n reprezentarea
binar.
Observaie. Reprezentarea binar a aceluiai numr este: 53910 = 10 0001 10112 .
30

Introducere n tiina sistemelor i a calculatoarelor

Codul BCD este cel mai utilizat cod pentru reprezentarea cifrelor
zecimale. Unele microprocesoare accept instruciuni n limbaj de asamblare
pentru efectuarea unor calcule n BCD. Pentru reprezentarea numerelor zecimale
n cod BCD exist dou forme de reprezentare:
BCD despachetat - fiecare cifr se reprezint pe un octet, din care doar cei
4 bii mai puin semnificativi sunt folosii;
BCD mpachetat fiecare cifr se reprezint pe 4 bii deci cte dou cifre
pe octet.
1.3.6 Operaii aritmetice
1.3.6.1 Operaii aritmetice n binar, octal, hexazecimal
Operaii aritmetice n binar
Regulile de operare n binar sunt urmtoarele:
Adunare
0+0=0
0+1=1
1+0=0
1 + 1 = 10

nmulire
00 = 0
01 = 0
10 = 0
11 = 1

Scdere
00=0
10=1
10=0
0 1 = 1*

unde * semnific un mprumut de pe poziia imediat urmtoare desczutului,


care pentru poziia curent nseamn 2 (deci se interpreteaz 2 1 = 1).
Observaie. Fiind date dou numere N i M suma lor n baza 10 este egal cu
suma lor n baza 2.
N10 + M 10 = N 2 + M 2 .
Exemplu: Se consider adunarea, scderea, nmulirea i mprirea n binar a
dou numere:
a)

237,62510 = 11101101,1012 +
90,12510 = 1011010,0012
327,75010 = 101000111,1102

b)

c)

6,7510 = 110,112
2,7510 = 10,112
11011
11011
00000
11011
10010,10012 = 18,562510

d)

31

69,75010 = 1000101,1102
58,37510 = 111010,0112
11,37510 =
1011,0112
10011,01 101,1
1011 11,1
10000
1011
1011
1011
------

Reprezentarea informaiei n calculatoarele numerice

n cazul d) dempritul este 19,2510, mpritorul 5,510 i ctul 3,510.


Operaii aritmetice n octal i hexazecimal
Se va ine seama de urmtoarele reguli:
la adunare i nmulire rezultatul adunrii, respectiv nmulirii, a dou
cifre va fi constituit din restul mpririi sumei sau produsului la baz, ctul
constituind transportul pentru poziia urmtoare;
la scdere, un mprumut de la poziia urmtoare a numrului nseamn
adunarea bazei la desczutul poziiei curente.
Exemple:
- n octal
a)
1475,367 +
562,51
22630,077
c)

357,26
3,7
321332
131602
1637,352

- n hexazecimal
a)
AE53C +
D8E2
BBE1E
c)

5DA2
B8
2ED10
405F6
434C70

b)

d)

34022,56
1234,25
32566,31
631,06 | 254,2
530,4 | 2,3
100,46
100,46
-------

b)

F000
1
EFFF

d)

42C28 | 5AE
3E7A BC
4488
4488
------

1.3.6.2 Operaii aritmetice cu numere cu semn n cod complementar


n majoritatea calculatoarelor se utilizeaz reprezentarea n cod
complementar. Din acest motiv vom analiza n detaliu operaiile aritmetice cu
aceste numere, evideniind avantajele utilizrii acestui cod. Vor fi tratate doar
cazurile de adunare i scdere (caz particular al adunrii), avnd n vedere c
operaiile complexe ca nmulire i mprire au la baz aceleai operaii de
adunare i scdere.
Adunarea n cod complementar
32

Introducere n tiina sistemelor i a calculatoarelor

Pentru operaia de adunare n cod complementar se folosete urmtoarea


teorem:
Fiind date dou numere x i y din intervalul de reprezentare i
presupunnd c suma x + y este cuprins n acest interval, atunci este valabil
relaia:
xc + yc = ( x + y )c ,
(1.22)
unde indicele c specific faptul c numrul este reprezentat n cod
complementar.
Operaiile de adunare i scdere se reduc la operaia de adunare a
numerelor reprezentate n cod complementar. Se adun cei doi operanzi bit cu
bit, inclusiv biii de semn, iar eventualul transport care rezult de la rangul de
semn, se va neglija. Rezultatul este obinut n cod complementar.
n continuare considerm separat cazurile cnd ambele numere sunt
pozitive, ambele negative i de semne diferite. Vor fi analizate cazurile cnd
apare fenomenul de depire a capacitii de reprezentare (overflow). Reamintim
c depirea capacitii de reprezentare nsemn c avnd la dispoziie n poziii
binare trebuie s nscriem un rezultat reprezentat pe un numr de bii mai mare
(se depete domeniul valorilor reprezentabile pe n bii). n cazul
exemplificrilor vom considera c dimensiunea reprezentrii este n = 8 , din care
un bit este folosit pentru semn, domeniul valorilor reprezentabile fiind
[ 128, 127 ].
a) Adunarea a dou numere pozitive x 0 , y 0
Din relaia de definiie (1.8) rezult c xc = x , y c = y . Considerm mai
nti dou numere zecimale a cror sum nu depete capacitatea de
reprezentare ( x + y < 2 7 = 128 ).
Exemplu: x = 30 , y = 50 i x + y = 80 .
x = +30
xc = 0 0011110 +
y = +50
yc = 0 0110010
xc + yc = 0 1010000c = + 8010.
Este evident c rezultatul obinut este corect i este tot n cod complementar.
S considerm acum dou numere zecimale a cror sum depete
valoarea maxim reprezentabil.
Exemplu: x = 30 , y = 100 i x + y = 130 > 127 .
xc = 0 0011110 +
yc = 0 1100100
xc + yc = 1 0000010c = 12610 , rezultat eronat.
33

Reprezentarea informaiei n calculatoarele numerice

Prin urmare, exist cazuri n care, la sumarea a dou numere pozitive, se


obine un rezultat fals. Cauza rezultatului eronat este insuficiena spaiului alocat
pentru reprezentare. Valoarea obinut este mai mare dect valoarea maxim
reprezentabil, aprnd fenomenul de depire a capacitii de reprezentare
(overflow). Circuitele care realizeaz sumarea celor dou numere trebuie s
sesizeze aceast situaie pentru a semnala faptul c rezultatul este eronat. n
cazul considerat sesizarea depirii se poate face observnd c la adunarea a
dou numere pozitive a rezultat un numr negativ sau c exist transport dinspre
rangul cel mai semnificativ spre cifra semn, dar nu exist transport n afara cifrei
semn. Transportul care apare de la rangul de semn se denumete carry
(transport).
b) Adunarea a dou numere negative x < 0 , y < 0
Conform relaiei de definiie (1.8) a complementului fa de 2, pentru
aceste numere putem scrie:
xc = 2 n x
yc = 2 n y .
i
n acest caz se obine:
xc + yc = 2 n x + 2 n y = 2 n x + y + 2 n = 2 n x + y = ( x + y )c ,
prin aplicarea coreciei 2 n = 0 , adic neglijarea transportului de la rangul de
semn. Considerm mai nti cazul n care suma lor este n domeniul de
reprezentare.
Exemplu: Fie numerelor zecimale x = 30 i y = 50 . Suma lor este
x + y = 80 , valoare care este n domeniul valorilor reprezentabile ( n = 8 bii,
inclusiv bitul de semn). Reprezentrile n cod direct pentru cele dou numere
sunt:
xd = 1 0011110

xc = 11100010 ,
y d = 1 0110010

yc = 11001110 .
Efectund adunarea:
xc = 11100010 +
yc = 11001110
1 1 0110000
se neglijeaz transportul de la rangul de semn (carry) i deci rezult:
(x + y )c = 1 0110000 sau (x + y )d = 11010000 = - 8010 .

Se observ c n acest caz exist carry i transport spre rangul semnului.


Considerm acum dou numere zecimale negative a cror sum este n
afara domeniului de reprezentare (exist depire a capacitii de reprezentare,
adic overflow).
34

Introducere n tiina sistemelor i a calculatoarelor

Exemplu: x = 30 i y = 100 . Suma lor este x + y = 130 , valoare care nu


aparine domeniului de reprezentare. Reprezentrile n cod complementar pentru
cele dou numere sunt:

xd = 1 0011110
xc = 11100010 ,
y d = 11100100

yc = 1 0011100 .
Efectund adunarea:
xc = 11100010 +
yc = 1 0011100

1 0 0111110
i neglijnd transportul de la rangul semn se obine:
xc + y c = 0 0111110 = +6210 , rezultat care este eronat.

n cazul prezentat exist depire a capacitii de reprezentare. Sesizarea


depirii se poate face observnd c la adunarea a dou numere negative a
rezultat un numr pozitiv sau prin faptul c exist transport de la rangul de semn
(carry) dar nu exist transport spre rangul de semn.
Observaie. Depirea capacitii de reprezentare (overflow) poate s
apar, n cazul operaiei de adunare, numai la adunarea a dou numere de
acelai semn.
Din cele prezentate anterior se observ c detectarea depirii capacitii
de reprezentare poate fi fcut considernd dou cifre pentru semn: 00 pentru
+ i 11 pentru . n cazul n care semnul sumei este 01 sau 10, se poate
afirma c s-a depit capacitatea de reprezentare.
c) Adunarea a dou numere cu semne diferite
Adunarea a dou numere cu semne diferite nu poate genera depire a
capacitii de reprezentare. Fie dou numere de semne opuse: x > 0 i y < 0 .
Analizm pe rnd cazurile n care x > y i x < y .
Cazul x > y
Din definiia complementului fa de 2 rezult: xc = x i yc = 2 n y .
Atunci, putem scrie:
xc + yc = x + 2 n y = 2 n + x y = x y = ( x + y )c ,
unde s-a realizat corecia 2 n = 0 , ceea ce este echivalent cu neglijarea
transportului de la rangul de semn.
Exemplu: Considerm numerele zecimale x = 50 i y = 30 . Reprezentrile n
cod complementar sunt:
35

Reprezentarea informaiei n calculatoarele numerice

xc = 0 0110010 ,
Prin sumare rezult:
xc = 0 0110010 +

yc = 11100010 .

yc = 1 1100010

1 0 0010100
i neglijnd transportul de la rangul semn xc + yc = 0 0010100 = +2010 .
Cazul x < y
n acest caz se obine:
xc + yc = x + 2 n y = 2 n ( y x ) = ( x + y )c ,
deci nu apare transport la rangul de semn.

Exemplu: x = 30 i y = 50 . n cod complementar avem: xc = 0 0011110 i


y c = 11001110 . Efectund sumarea:
xc = 0 0011110 +
yc = 1 1001110
1 1101100
i deci ( x + y )c = 11101100 sau ( x + y )d = 1 0010100 = -2010 .
Scderea a dou numere n cod complementar reprezint un caz particular
de adunare, n care se adun desczutul cu opusul scztorului, reprezentat tot n
cod complementar. De fapt se folosete faptul c x y = x + ( y ) .
Din cele prezentate anterior rezult urmtoarele avantaje ale utilizrii
reprezentrii n cod complementar:
rezultatul adunrii a dou numere se obine dup o singur operaie;
biii de semn se trateaz similar cu biii valorici;
scderea se poate substitui prin adunare;
se poate sesiza relativ simplu depirea capacitii de reprezentare.
1.3.6.3 Operaii aritmetice cu numere cu semn n cod invers
Operaiile de adunare i scdere se reduc la operaia de adunare a
numerelor reprezentate n cod invers. Se adun cei doi operanzi bit cu bit,
inclusiv biii de semn, iar eventualul transport care rezult de la rangul de semn,
se va aduna la rangul cel mai puin semnificativ. Rezultatul este obinut n cod
invers. Pentru operaia de adunare a dou numere reprezentate n cod invers este
valabil urmtoarea teorem:
Fiind date dou numere x i y din intervalul de reprezentare i
presupunnd c suma x + y este cuprins n acest interval, atunci este valabil
relaia:
36

Introducere n tiina sistemelor i a calculatoarelor

xi + yi = ( x + y )i ,
(1.23)
unde indicele i specific faptul c numrul este reprezentat n cod invers.
La fel ca n cazul codului complementar vom analiza adunarea a dou numere
pozitive, negative i de semne diferite. n exemple dimensiunea reprezentrii va
fi considerat n = 8 , inclusiv bitul de semn. Pentru aceast dimensiune domeniul
de reprezentare este: [ 127, 127 ] .
a) Adunarea a dou numere pozitive x 0 , y 0
Din relaia de definiie (1.12) rezult c xi = x i yi = y . Prin urmare
acest caz este identic cu cazul (a) de la codul complementar.
b) Adunarea a dou numere negative x < 0 , y < 0
Conform relaiei de definiie (1.12) a complementului fa de 1, pentru
aceste numere putem scrie:
xi = 2 n x 1
yi = 2 n y 1 .
i
n acest caz se obine:
xi + y i = 2 n x 1 + 2 n y 1 = 2 n x + y 1 + 2 n 1 =
= 2 n x + y 1 = ( x + y )i

prin aplicarea coreciei 2 n 1 = 0 . Acest lucru este echivalent cu adunarea


transportului de la rangul de semn la rangul cel mai puin semnificativ.
n continuare considerm dou exemple: unul n care suma numerelor este
n domeniul de valori admis i unul n care suma este n afara domeniului de
valori (depire).
Exemple:
1. x = 30 , y = 50 . Reprezentrile n cod invers sunt:

xd = 1 0011110
xi = 11100001 ,
y d = 1 0110010

yi = 11001101 .
Efectund suma:
xi = 11100001 +

yi = 11001101
1 1 0101110 +

101011111
rezult ( x + y )i = 10101111 sau ( x + y )d = 11010000 = 8010 , rezultat corect. n
acest caz avem transport n rangul semn i transport (carry) din rangul semn.

37

Reprezentarea informaiei n calculatoarele numerice

2. x = 30 i y = 100 . Suma lor este x + y = 130 , valoare care nu


aparine domeniului de reprezentare. Reprezentrile n cod invers pentru cele
dou numere sunt:
xd = 1 0011110

xi = 11100001 ,

y d = 11100100
yi = 1 0011011 .
Rezult:
xi = 11100001 +
yi = 1 0011011
1 01111100 +
1
01111101
Deci se obine ( x + y )i = 01111101 = +12510 , rezultat eronat datorat depirii
capacitii de reprezentare.
Observm c, la fel ca la codul complementar, sesizarea depirii se poate
face prin faptul c la sumarea a dou numere negative a rezultat un numr
pozitiv sau c exist transport de la rangul de semn (carry) dar nu avem transport
spre rangul de semn. De asemenea, depirea poate fi sesizat prin introducerea
a dou cifre binare pentru semn (00 pentru + i 11 pentru ).
c) Adunarea a dou numere de semne diferite
n acest caz nu poate s apar depire. Fie dou numere de semne opuse:
x > 0 i y < 0 . Analizm pe rnd cazurile n care x > y i x < y .
Cazul x > y
Se obine:
xi + yi = x + 2 n y 1 = 2 n 1 + x y = x y = ( x + y )i
unde s-a fcut corecia 2 n 1 = 0 , ceea ce este echivalent cu adunarea
transportului de la rangul de semn la rangul cel mai puin semnificativ.
Exemplu: Considerm numerele zecimale x = 50 i y = 30 . Reprezentrile n
cod invers sunt:
xi = 0 0110010 ,
yi = 11100001 .
Prin sumare rezult:

38

Introducere n tiina sistemelor i a calculatoarelor

xi = 0 0110010 +
yi = 1 1100001
1 0 0010011
1
0 0010100
i deci rezultatul este ( x + y )i = 0 0010100 = +2010 .
Se observ c exist transport i spre rangul semn i din rangul semn.
Cazul x < y
Din definiia codului invers se obine:
xi + yi = x + 2 n + y 1 = 2 n 1 + x + y = ( x + y )i ,
deci nu apare transport de la rangul semn.
Exemplu: x = 30 i y = 50 xi = 0 0011110 , yi = 11001101
xi = 0 0011110 +

yi = 1 1001101
0 1 1101011
Rezultatul este ( x + y )i = 11101011 sau ( x + y )d = 10010100 = 2010 .
Scderea a dou numere n cod invers reprezint un caz particular de
adunare, n care se adun desczutul cu opusul scztorului, reprezentat tot n
cod invers.
Observaie. Utilizarea codului invers prezint aceleai avantaje ca la codul
complementar, exceptnd faptul c rezultatul unei adunri nu se mai obine
printr-o singur operaie, fiind nevoie de o corecie.
1.3.6.4 Operaii cu numere n reprezentate n virgul mobil

Adunarea i scderea a dou numere n virgul mobil se efectueaz


astfel:
se compar cei doi exponeni pentru a-l determina pe cel mai mare;
se aliniaz mantisa numrului cu exponentul mai mic, prin deplasarea
virgulei corespunztor exponentului mai mare;
se adun (scad) mantisele aliniate atribuind exponentul comun;
se normalizeaz mantisa, eventual, concomitent cu modificarea
exponentului.
Exemplu: S se efectueze suma numerelor zecimale x = 0,75 i y = 7 n virgul
mobil, cu mantis normalizat (subunitar), baza de reprezentare fiind 2.
39

Reprezentarea informaiei n calculatoarele numerice

x = 0,112 = 0,11 2 0 ,
y = 1112 = 0,111 2 3
Deoarece y are exponentul mai mare, x se va alinia corespunztor:
x = 0,112 = 0,00011 2 3

x + y = 0,00011 23 +
0,11100 23
0,11111 23
Nu este necesar normalizarea mantisei.
Deci x + y = 0,11111 2 3 = 111,112 = 7,7510 .

Operaiile de nmulire i mprire presupun:


adunarea (scderea) exponenilor;
nmulirea (mprirea) mantiselor;
eventuala normalizare a mantisei.
Exemplu: S se efectueze n virgul mobil nmulirea numerelor zecimale
x = 5, y = 9.
x = 1012 = 0,101 2 3 ,

y = 10012 = 0,1001 2 4

x y = (0,101 0,1001) 2 3+ 4 = 0,0101101 2 7 = 0,101101 2 6 = 1011012 = 45 .

1.3.6.5 Operaii cu numere reprezentate n BCD

n codul BCD (denumirea improprie a codului NBCD) fiecare cifr


zecimal a unui numr este nlocuit cu tetrada corespunztoare din codul 8421
(codul NBCD). Reamintim c acest tip de reprezentare se mai numete i
zecimal codificat binar. n continuare vom arta cum se pot efectua calcule
aritmetice cu numere reprezentate n BCD utiliznd o unitate aritmetic care
lucreaz n binar.
Adunarea n zecimal codificat binar presupune:
1. exprimarea fiecrei cifre zecimale printr-o tetrad binar;
2. efectuarea adunrii poziie cu poziie, de la dreapta la stnga; pot s apar
urmtoarele situaii:
dac rezultatul aparine sistemului zecimal atunci suma din poziia
respectiv nu necesit corecii;
dac rezultatul sumei poziiei respective este un numr situat n
mulimea {16,17,18,19} atunci:
transportul generat se adun la poziia urmtoare;
40

Introducere n tiina sistemelor i a calculatoarelor

se adun 6 (0110) la suma din poziia respectiv, deoarece


transportul generat la poziia urmtoare a nsemnat practic
transferul numrului 16 (10000) i nu 10 ct era necesar;
dac rezultatul poziiei respective este situat n intervalul {10,K15},
atunci:
se adun 6 (0110) la suma din poziia respectiv, pentru a fora
transportul la poziia urmtoare;
se adun transportul generat la suma din poziia urmtoare.

Exemplu: S se efectueze n BCD suma 1683 + 2794.

5683 +
2794
8477

0101 +
0010
0001
1000
8

0110 +
0111
0001
1110 +
0110
1 0100
4

1000 +
1001
1 0001 +
0110
0111
7

0011 +
0100
0111
7

Mai sus transportul aprut din tetrada anterioar este evideniat prin .
Scderea n zecimal codificat binar se efectueaz astfel:
1. fiecare cifr zecimal se exprim printr-o tetrad binar;
2. se efectueaz scderea poziie cu poziie; dac pentru o poziie nu este
necesar mprumutul de la poziia urmtoare, atunci rezultatul este corect;
3. dac este necesar un mprumut, acesta va declana execuia urmtoarelor
operaiuni:
se scade 1 de la poziia urmtoare;
se adun 16 (10000) la desczutul operaiei curente;
se efectueaz scderea;
se scade 6 (0110) din rezultat pentru corecie, deoarece s-a mprumutat
16 i nu 10 ct era necesar.
Exemplu: S se efectueze n cod BCD diferena 539-175

539 275
264

1 0011 0111
1100 0110
0110
6

0101 0001
0100 0010
0010
2
41

1001 0101
0100
4

Reprezentarea informaiei n calculatoarele numerice

mprumutul de la o tetrad din poziia urmtoare a este evideniat prin .

1.4 Coduri alfanumerice


Informaia prelucrat de calculator nu se rezum numai la numere ntregi
sau reale. Exist i alte tipuri de informaii ce pot fi prelucrate n calculator ca de
exemplu text (format din caractere), caractere funcionale, etc. Toate tipurile de
informaie se reprezint intern n calculator, n form binar, prin secvene de 0
i 1.
Codurile alfanumerice stabilesc o coresponden biunivoc ntre mulimea
informaiei primare X , format din simbolurile alfabetice, simbolurile
numerice, caractere speciale i caractere funcionale (caractere de control) i
mulimea cuvintelor (binare) de cod de o lungime dat. Dintre codurile
alfanumerice cele mai utilizate amintim: EBCDIC (Extended Binary Coded
Decimal Information Interchange Code), standardul ASCII (American Standard
Code for Information Interchange), standardul Unicode.
Codul EBCDIC utilizeaz cuvinte de cod cu o lungime de 8 bii i deci
permite 28=256 posibiliti de reprezentare. Acest cod este mai puin rspndit
deoarece prezint urmtorul dezavantaj: nu ofer coduri succesive pentru literele
din alfabet, fapt ce creeaz unele probleme la ordonarea alfabetic.
Codul ASCII este cel mai utilizat cod alfanumeric. Codul ASCII standard
este un cod pe 7 bii, deci permite 27=128 de reprezentri distincte. Memorarea
codului unui caracter se realizeaz pe 8 opt bii (octet) al optulea fiind folosit ca
bit de paritate. Spre deosebire de codul EBCDIC, subsetul literelor mari,
subsetul literelor mici, respectiv cifrele ocup reprezentri consecutive. Acest
cod este utilizat de majoritatea terminalelor, imprimantelor i alte dispozitive de
intrare/ieire ce lucreaz cu informaie de tip text. Din cele 128 de coduri ASCII,
primele 32 sunt coduri de control. Caracterele de control au coduri cuprinse ntre
0 i 3110 (1FH). Unele din aceste coduri nu au o semnificaie precizat, ea
putnd fi stabilit de utilizator. n continuare prezentm cteva exemple de
caractere de control.
Exemple de caractere de control folosite pentru comunicaia ntre
dispozitive:
Cod Semnificaie
1
SOH (Start of Header)
2
STX (Start of Text)
3
ETX (End of Text)
4
EOT (End of Transmision)
Aceste caractere sunt folosite de protocolul de comunicaie ntre
dispozitive sau/i calculatoare pentru a marca nceputul antetului mesajului
transmis, nceputul blocului de date, sfritul blocului de date sau a transmisiei.
42

Introducere n tiina sistemelor i a calculatoarelor

Exemple de caractere de control pentru deplasare cursor:


Cod
8
9
10
11
12
13

Semnificaie
BS (Back Space)
HT (Horizontal Tabulation)
LF (Line Feed)
VT (Vertical Tabulation)
FF (Form Feed)
CR (Cariage Return)

Efect: deplasare cursor


o poziie napoi
n urmtorul TAB pe linie
o linie mai jos
mai jos pn la urmtorul TAB vertical
la nceptul paginii urmtoare
n marginea din stnga

n tabelele anterioare codurile sunt date n zecimal.


Caracterele cifrelor zecimale(0-9) ocup poziii consecutive cuprinse ntre
4810-5710 (30H-39H). Caracterele literelor mari din alfabet (A-Z) au coduri
cuprinse ntre 41H i 5AH, iar cele ale literelor mici (a-z) au codurile 61H-7AH.
Din cauza limitrii posibilitilor de codificare la 128, a aprut necesitatea
extinderii codului ASCII. Astfel a aprut codul ASCII extins pe 8 bii, care
folosete 8 bii i deci are 28=256 posibiliti de reprezentare. Codurile cuprinse
ntre 32 i 127 au aceeai semnificaie ca n codul ASCII standard. Restul sunt
utilizate pentru codificarea caracterelor din alte alfabete, caractere semigrafice,
caractere speciale din matematic, etc.
Standardul Unicode utilizeaz secvene de cod cu lungimea de 16 bii.
Este o extindere a codului ASCII la 16 bii, codul ASCII fiind un subset al
standardului Unicode. Caracterele de baz din toate limbile scrise existente pot
fi reprezentate prin acest cod.

1.5 Coduri detectoare i corectoare de erori


n procesul de transmisie a informaiei ntre dou dispozitive, codificarea
are ca scop principal protejarea informaiei de diferite perturbaii care pot duce
la apariia erorilor. De aceea, nainte de a se emite simbolurile de informaie pe
canalul de comunicaie, ce poate fi supus perturbaiilor, se adaug o anumit
redundan prin introducerea anumitor simboluri suplimentare, numite simboluri
de control. Rolul acestor simboluri este de a indica utilizatorului prezena
erorilor i chiar s-i dea posibilitatea de a le corecta. Codurile obinute astfel se
numesc coduri detectoare i corectoare de erori.
1.5.1 Coduri cu bit de paritate

Cel mai simplu cod care permite detecia unei erori sau a unui numr
impar de erori este codul cu bit de paritate. La emisia cuvntului de cod se
adaug un bit de paritate calculat astfel nct numrul biilor diferii de zero ai
noului cuvnt de cod s fie par sau impar n funcie de convenia adoptat. La
43

Reprezentarea informaiei n calculatoarele numerice

paritate par numrul total de bii de 1 (mpreun cu bitul de paritate) este par.
La paritate impar numrul total de bii de 1 (mpreun cu bitul de paritate) este
impar. Adugarea bitului de paritate la un cuvnt de cod poart denumirea de
paritate orizontal. La recepie se recalculeaz paritatea cuvntului de cod
recepionat i dac aceasta este diferit de cea stabilit nseamn c a aprut o
eroare sau un numr impar de erori.
Observaie. Codul cu bit de paritate permite detectarea strii de eroare,
adic existena unei erori, i nu determinarea exact a erorii.
De exemplu, se poate obine un cod pentru detectarea erorilor dac se
consider codul 8421 cruia i se adaug, n stnga, un bit de paritate. Utilizm
paritate impar i atunci noile cuvinte de cod pentru cifrele (0-5) sunt:
p 8 4 2 1
1 0 0 0 0
0 0 0 0 1
0 0 0 1 0
1 0 0 1 1
0 0 1 0 0
1 0 1 0 1
S presupunem c la recepie, n loc de ultimul cuvnt 10101, s-a recepionat
cuvntul 10111. Analiznd bitul paritatea cuvntului se constat c este par i
deci acest cuvnt este greit deoarece s-a utilizat paritate impar.
1.5.2 Coduri cu paritate ncruciat

Schema de control cu paritate orizontal descris anterior poate fi


mbuntit semnificativ prin adugarea paritii longitudinale, denumit i
paritate vertical. Informaia este structurat pe blocuri de secvene de cod i se
ataeaz un bit de paritate pentru fiecare secven (paritate orizontal) i pentru
fiecare coloan (paritate vertical) ce conine biii de acelai rang din toate
secvenele. Dac privim blocul de date ca o matrice dreptunghiular de n bii
lime (un cuvnt) i m bii nlime (numrul de cuvinte), pentru fiecare
coloan este calculat un bit de paritate, care este adugat ntr-o nou linie de la
sfritul matricei, fig. 1.8. Un astfel de control se numete prin paritate
ncruciat.
Simboluri
informaionale
a11 a12 K a1n

K
am1 am 2 L amn
44

Control
linie
l1
M
lm

Introducere n tiina sistemelor i a calculatoarelor

Control
coloan

c1

c2

K cn

cn +1

Fig. 1.8 Detectarea erorilor prin paritate ncruciat


La recepie se compar paritile recepionate cu cele calculate i n urma
controlului se poate afirma dac blocul de informaie a fost transmis cu erori sau
fr erori. Exist situaii n care starea de eroare s nu fie semnalat, i anume
cnd i pe vertical i pe orizontal exist un numr par de erori.
Exemplu: ntr-o transmisie de date n care este utilizat detectarea erorilor prin
paritate ncruciat (paritate par) este transmis un bloc de date corespunztor
cifrelor zecimale de la 0 la 5, codificate n codul 8421.

Cifra
Secvena Simboluri
zecimal
informaionale
s1
0000
0
s2
1
0001
s3
2
0010
s4
3
0011
s5
4
0100
s6
5
0101
Control coloan
0001

Control
linie
0
1
1
0
1
0
1

O secven este reprezentat prin codificarea unei singure cifre zecimale. Blocul
de informaie recepionat este urmtorul:
0000 0
0011 1
0010 1
0011 0
0100 1
0101 0
0001 1
La verificarea corectitudinii recepiei se constat c:
l 2 l 2calculat i c3 c3calculat .
Deci blocul a fost transmis eronat. Eroarea este n secvena s 2 pe poziia 3.
1.5.3 Coduri polinomiale ciclice

Codurile polinomiale ciclice sunt cele mai utilizate coduri pentru


detectarea erorilor dintr-un mesaj transmis. Ele mai sunt cunoscute i sub
45

Reprezentarea informaiei n calculatoarele numerice

numele de coduri cu redundan ciclic sau coduri CRC (Cyclic Redundancy


Code). Codurile polinomiale sunt bazate pe tratarea irurilor de bii ca
reprezentri de polinoame cu coeficienii 0 sau 1. O secven de cod de n + 1
bii, M = a n an 1 K a0 , este vzut ca o list de coeficieni ai unui polinom de
grad n :
M ( x) = an x n + an 1 x n 1 + K a1 x + a0 ,
ai {0,1}, i = 0, n .
Codurile polinomiale ciclice au proprietatea: dac M = a n a n 1 K a0 este un
cuvnt cu sens, atunci orice permutare ciclic a simbolurilor sale este un cuvnt
cu sens M i = ai ai 1 K a0 an an 1 K ai +1 .
n cazul utilizrii acestor coduri, mesajului M , ce trebuie transmis, i se
asociaz polinomul M (x) . Apoi, printr-un algoritm de codificare, polinomul
M (x) se transform ntr-un polinom T (x) , astfel nct T (x) s fie multiplu al
unui polinom G (x) , numit polinom de generare.
Pentru realizarea codificrii se poate utiliza algoritmul de nmulire sau
algoritmul de mprire a polinoamelor. Operaiile aritmetice asupra
coeficienilor polinoamelor se fac n modulo 2 i deci nu exist transport la
adunare sau mprumut la scdere.
Folosind algoritmul de nmulire: T ( x) = M ( x)G ( x) nu se obine o
separare a simbolurilor redundante de cele informaionale, acesta fiind
principalul motiv pentru care se prefer algoritmul de mprire, dei este mai
complicat.
Considerm c polinomul de generare este de grad r :
G ( x) = br x r + br 1 x r 1 + K + b0 ,
bi {0,1}, i = 0, r .
Algoritmul de codificare prin mprire este urmtorul:
se nmulete polinomul M ( x) cu x r obinndu-se M ( x) = x r M ( x) ;
se mparte M (x ) la G (x) :
M ( x)
R( x)
= C (x)
(1.24)
G ( x)
G ( x)
Gradul polinomului R(x) va fi cel mult egal cu r 1. Coeficienii polinomului
R(x) , considerat de grad r 1 (eventual completnd cu coeficieni nuli),
constituie simbolurile de control asociate mesajului informaional.
se adun (modulo 2) R(x) cu M (x ) , obinndu-se polinomul
T ( x ) = M ( x ) R ( x ) . Coeficienii polinomului T ( x) constituie mesajul ce se va
transmite: T = a n a n 1 K a0 cr 1 K c0 , care conine n poziiile semnificative cele
n + 1 simboluri informaionale, iar n poziiile mai puin semnificative cele r
simboluri de control.
Polinomul ataat mesajului transmis este un multiplu al polinomului de
generare. ntr-adevr:
46

Introducere n tiina sistemelor i a calculatoarelor

T ( x) M ( x) R( x) M ( x) R( x)
=
=

G ( x)
G ( x)
G ( x)
G ( x)
i folosind relaia (1.24) se obine:
T ( x)
R( x) R( x)
= C ( x)

= C ( x) .
G ( x)
G ( x) G ( x)
14
4244
3
=0

Polinomul T ( x) este divizibil cu G ( x) . Aceast proprietate este folosit


drept criteriu pentru detecia erorilor.
Fie mesajul recepionat T , cruia i se asociaz polinomul T ( x ) . Se poate
scrie c T ( x) = T ( x) E (x ) , unde E ( x) este polinomul erorilor. Aplicnd
criteriul de detecie a erorilor, obinem:
T ( x) T ( x) E ( x)
E ( x)
=

= C ( x)
.
G ( x)
G ( x) G ( x) G ( x)
Se observ c dac E (x) este multiplu al lui G ( x) , mesajul recepionat este
validat, dei conine erori. Dac E (x) nu este multiplu al lui G (x) , atunci
eroarea este sesizat.
Prin aceast metod sunt determinate toate pachetele de erori de lungime
mai mic dect gradul lui G ( x) + 1 . Prin pachet de erori se nelege o succesiune
de simboluri, corecte sau eronate, n care primul i ultimul simbol sunt eronate.
n transmisia datelor se folosesc trei polinoame generatoare, considerate
standarde internaionale:
CRC - 12 = x12 + x11 + x 3 + x 2 + x + 1 ,
CRC - 16 = x16 + x15 + x 2 + 1 ,
CRC - CCITT = x16 + x12 + x 5 + 1 .
Exemple:
1. S se determine mesajul transmis tiind c mesajul de transmis este
M = 1110101 i polinomul de generare este G ( x) = x 3 + x + 1 .
Rezolvare:
M ( x) = x 6 + x 5 + x 4 + x 2 + 1 ;

M ( x) = x 3 M ( x) , deoarece gradul lui G (x) este 3;


M ( x) = x 9 + x 8 + x 7 + x 5 + x 3 ;
se mparte M (x ) la G (x) :

47

Reprezentarea informaiei n calculatoarele numerice

x 9 + x8 + x 7 +
x9 +

x3 + x + 1

x5 + x3

x7 + x6

x6 + x5 + x3

x8 +

x6 + x5 + x3

x8 +

x6 + x5
x3

x3 + x + 1
x +1
Observaie. Adunarea i scderea n modulo 2 sunt echivalente.
Rezult c R( x) = x + 1 .
Polinomul transmis este T ( x) = M ( x) R ( x) :
T ( x) = x 9 + x 8 + x 7 + x 5 + x 3 + x + 1 .
Coeficienii acestui polinom reprezint mesajul ce se va transmite:
T = 1110101
011
{ .
1
424
3
simboluri
informationale

simboluri de
control

2. tiind c s-a recepionat mesajul T = 1010101011 , s se verifice


corectitudinea lui.
Rezolvare:
Mesajului recepionat i se asociaz polinomul T ( x) = x 9 + x 7 + x 5 + x 3 + x + 1 .
Aplicm criteriul de detecie a erorilor i mprind polinomul T (x) la G (x)
obinem ctul C ( x) = x 6 + x 3 + x 2 + x + 1 i restul E ( x) = x . Deoarece E ( x) 0
rezult c mesajul recepionat este eronat.
1.5.4 Coduri corectoare de erori

Exist coduri care, pe lng detecia erorilor permit i corectarea unor


erori. Un exemplu de astfel de cod este codul Hamming. Acesta asigur detecia
i corecia unei singure erori. Codul Hamming utilizeaz cuvinte de 7 bii, din
care 3 sunt bii de paritate i 4 bii de informaie (care constituie mesajul de
transmis). Cuvntul de cod are forma: p1 p 2 a3 p4 a5 a6 a7 , unde am notat cu pi
biii de control i cu ai biii mesajului de transmis. Fiecare bit de paritate se
calculeaz dup convenia de paritate impar din ali trei bii de cod (fig. 1.7):
p1 a3 , a5 , a7 ;
p 2 a3 , a 6 , a 7 ; p 4 a5 , a 6 , a 7 .

p1
B

p2
B

a3
B

48

p4
B

a5
B

a6
B

a7
B

Introducere n tiina sistemelor i a calculatoarelor

Fig. 1.7 Modul de aciune al biilor de paritate n codul Hamming


n depistarea poziiei bitului eronat din cod, bitul de paritate p1 are ponderea 1,
bitul p2 are ponderea 2, iar bitul p4 are ponderea 4. Bitul eronat este determinat
prin sumarea ponderilor biilor de paritate pentru care paritatea calculat este
greit (nu este impar).
Exemplu: S presupunem c se folosete codul Hamming pentru a se transmite
mesajul binar 0111. Atunci cuvntul de cod care se transmite are forma:
1100111. Considerm c s-a recepionat cuvntul de cod 1100101. Calculm
biii de paritate i obinem: p1 = 1 corect, p 2 = 0 incorect i p3 = 0 incorect.
Rezult c bitul de pe poziia 2+4=6 este greit i deci trebuie modificat.

1.6 Compresia datelor


Compresia este procesul prin care se reduce dimensiunea fizic a unui
bloc de informaie. Metodele de compresie cele mai des utilizate n acest scop
sunt: RLE, LZW, Huffman, JPEG i MPEG.
a) Compresia RLE
RLE (Run-Length Encoding) este un algoritm foarte eficient pentru
compresie cu aplicaii deosebite n grafica bitmap. Valoarea care se repet este
codificat prin numrul de apariii consecutive al valorii urmat de valoare.
Valoarea poate fi chiar un grup de octei).
Exemplu: Pentru irul 222266677111111 rezult codificarea 42362761.

Codificarea RLE parcurge datele iniiale scanate pe linii i genereaz i


genereaz secvene de perechi (numr, grup de date). Exist dou tipuri de
grupri posibile: gruparea unei curse i gruparea unei secvene. O curs este o
repetare succesiv a unui octet (a unei valori pixel). Acest grup este codificat ca
(numr, valoare octet). O secven este un grup de octei care nu se repet.
Acest grup este codificat ca (numr octei, valoare octet). Pentru simplitate, o
grupare nu se extinde dect pe o linie scanat de imagine.
Pentru a face distincie ntre cele dou tipuri de grupri, parametrul numr
se formeaz n mod diferit. Pentru o curs de n octei numrul este 1 n , n
timp ce pentru o secven de m octei numrul este m 1. n exemplul urmtor
se arat codificare RLE pentru o curs de octei n care octetul A se repet de
ase ori, dup care urmeaz o secven BCDE. Cursa este codificat prin
perechea (-5, A), iar secvena prin perechea (3BCDE).
49

Reprezentarea informaiei n calculatoarele numerice

Exemplu:

irul iniial este: AAAAAABCDE;


irul codificat este -5A3BCDE.

b) Compresia LZW
Compresia LZW (Lempel-Ziv-Welch) a devenit foarte cunoscut datorit
utilizrii n formatele de fiiere de tip GIF (Graphical Interchange Format) i a
compresiei foarte bune a fiierelor de imagine. Accesul se realizeaz la nivel de
octet. Metoda a fost publicat n 1977 de ctre J. Ziv i A. Lempel i mbuntit
apoi de ctre T. Welch n 1984.
Principiul compresiei LZW este nlocuirea irurilor de intrare care se
repet prin coduri de n bii. Pentru aceasta se utilizeaz o tabel de iruri de
caractere, numit tabel de codificare sau tabel de cutare, care este o
coresponden ntre irurile de caractere i codurile de compresie. Tabela se
iniializeaz cu iruri de cte un caracter, avnd, iniial, un numr de intrri egal
cu numrul de caractere distincte din mesaj. Codul irului reprezint chiar
indexul n tabel. Dimensiunea tabelei se modific pe msur ce se parcurge
mesajul.
Paii algoritmului sunt:
se delimiteaz n mesaj un ir s de lungime maxim, astfel nct s se
potriveasc cu un ir existent n tabel;
se scrie codul irului s n fiierul de ieire (fiierul comprimat);
se genereaz un nou ir din irul s la care se adaug urmtorul caracter
din mesaj. Notm acest nou ir cu s ;
se scrie irul s n tabel, dndu-i-se un nou cod;
se reia de la primul pas, ncepnd din poziia ultimului caracter citit din
mesaj.
Exemplu: fie mesajul ce conine 18 caractere:
abbcdabbdaabbbcbbb
Iniial tabela are patru intrri, ce conin irurile:
s1 = a (cod 1); s2 = b (cod 2); s3 = c (cod 3); s 4 = d (cod 4).

50

Introducere n tiina sistemelor i a calculatoarelor

5
6
7
8
9
10
11
12
13
14
15

Primul ir delimitat este s = a ; se nscrie n fiierul de ieire codul su, 1;


se adaug n tabel un nou ir, s5 = ab .
Urmtorul ir delimitat este s = b ; se nscrie n fiierul de ieire codul su,
2; se adaug n tabel irul s6 = bb .
Apoi din nou irul delimitat este s = b ; se nscrie n fiierul de ieire codul
2 i se adaug n tabel irul s7 = bc . Se continu din poziia caracterului c.
irul delimitat este s = c ; se nscrie n fiierul de ieire codul 3 i n tabel
irul s8 = cd .a.m.d.
n final, pentru mesajul considerat, se obine urmtoarea tabel:
cod
ir
1
a
2
b
3
c
4
d
5
ab
6
bb
7
bc
8
cd
9
da
10
abb
11
bd
12
daa
13 abbb
14
bcb
15
bbb
iar n fiierul de ieire s-au nscris urmtoarele coduri:
1 2 2 3 4 5 2 9 10 7 6 2.
Trebuie remarcat c tabela de codificare nu se include n fiierul comprimat.
51

Reprezentarea informaiei n calculatoarele numerice

c) Codificarea Huffman
A fost introdus de David Huffman i este dependent de frecvena de
apariie a caracterelor ntr-un mesaj. Caracterele nu se mai reprezint pe acelai
numr de bii. Lungimea codului unui caracter este invers proporional cu
frecvena de apariie a caracterului n mesaj.
Codurile caracterelor nu sunt unice, dar respect regula prefixului: codul
oricrui caracter nu este prefix al codului altui caracter. Codificarea Huffman
determin codul optim, folosind un numr minim de bii. Pentru a determina
codurile caracterelor trebuie cunoscute frecvenele de apariie a caracterelor n
mesaj sau ponderile lor. Lungimea medie a unui mesaj se determin cu relaia:
l m = pi ni bii/caracter,
unde pi este ponderea caracterului i , ni este numrul de bii pe care se codific
caracterul i .
Metoda folosete o structur de date de tip arbore binar (exist un nod
rdcin i fiecare nod are cel mult doi fii: fiu stnga i fiu dreapta), n care
caracterele din mesaj sunt frunze.
Metoda de codificare presupune urmtorii pai:
se stabilete frecvena de apariie pi a fiecrui caracter din mesaj;
se nlocuiesc dou caractere, cu ponderea minim, cu un caracter fictiv,
avnd ca pondere suma ponderilor celor dou caractere. Caracterul nou
creat introduce un nod n arbore, avnd ca fii cele dou caractere;
se continu recursiv procesul pn cnd n lista de caractere rmne un
singur caracter.
Dup construirea arborelui, codul unui caracter se determin traversnd
arborele de la rdcin pn la frunza care conine acel caracter. De-a lungul cii
parcurse, pentru fiecare fiu stnga se adaug un bit 0 la codul caracterului, iar
pentru fiecare fiu dreapta se adaug un bit 1. Codul astfel obinut nu este unic,
deoarece convenia de a aduga la codul caracterului un bit 0 sau 1, dup cum se
parcurge fiul stnga, respectiv dreapta al nodului fictiv, poate fi inversat.
Totui, numrul de bii pe care se codific fiecare caracter din mesaj este unic.
Exemplu: Considerm un mesaj format din cinci caractere, notate simbolic cu:
a, b, c, d, e. Ponderile caracterelor din mesaj sunt: 0.12, 0.4, 0.15, 0.08 i 0.25.
Arborele care se construiete este:

d
0.08

a
0.12

c
0.15

e
0.25

x
0.2
y
0.35
z
52

b
0.4

Introducere n tiina sistemelor i a calculatoarelor

0.6
w
1
Folosim convenia: 0 pentru fiul stnga i 1 pentru fiul dreapta.
0
b

1
1

0
e

0
c

1
0

Se obin urmtoarele coduri pentru cele 5 caractere din mesaj:


caracter
b
e
c
a
d

cod
0
10
110
1110
1111

Lungimea medie a mesajului este:


l m = 0.4 1 + 0.25 2 + 0.15 3 + 0.12 4 + 0.08 4 = 2.15 bii/caracter
fa de 3 bii/caracter pentru codificarea binar (sunt 5 caractere i cum
2 < log 2 5 < 3 rezult c este nevoie de 3 bii pentru a codifica un caracter).
n cazul codificrii Huffman tabela de codificare se include n fiierul
comprimat.
d) Compresia JPEG
Standardul JPEG (Joint Photographic Experts Group) este folosit pentru
comprimarea imaginilor statice cu tonuri continue (de exemplu fotografii), cu
aplicaii n sistemele multimedia. n momentul de fa este unul dintre cele mai
ntlnite formate de fiiere grafice. Algoritmul JPEG realizeaz o compresie
foarte bun 20:1, ceea ce l impune n situaiile practice. O caracteristic a
standardului este c permite execuia unor transformri geometrice asupra
imaginii (de exemplu, rotaia), direct asupra matricei transformate, fr
regenerarea imaginii iniiale.
e) Compresia MPEG
Standardele MPEG (Motion Picture Experts Group), sunt algoritmi n
principal folosii pentru conversia video i audio (din 1993). n procesul de
codificare se execut o interclasare a pachetelor de date video i audio. n cadrul
fiierului, vor apare i informaii referitoare la timp, utile decodificatorului.
53

Reprezentarea informaiei n calculatoarele numerice

Folosind informaiile de timp, decodificatorul poate separa i sincroniza datele


audio i video.

54

Introducere n tiina sistemelor i a calculatoarelor

Capitolul 2
ALGEBR LOGIC. CIRCUITE LOGICE
2.1. Elemente de algebr boolean
Algebra boolean sau algebra logicii reprezint o metod simbolic
pentru studierea relaiilor logice. Bazele acestei algebre au fost puse de
matematicianul englez George Boole n anul 1853, n lucrarea sa intitulat
Analiza legilor gndirii. Boole a fost primul care a introdus o simplificare n
reprezentarea i manipularea propoziiilor bivalente. Algebra boolean a fost
dezvoltat ulterior de E. Schrder, A.N. Witehead, B. Russel i C.E. Shannon,
acesta din urm fiind cel care a introdus denumirea de poart logic (SAU
respectiv I).
Ulterior, algebra boolean i-a gsit o larg aplicabilitate n analiza i
sinteza schemelor componente i blocurilor funcionale ale calculatoarelor
electronice numerice, datorit faptului c acestea utilizeaz elemente fizice
caracterizate prin dou stri distincte i lucreaz cu semnale care reprezint dou
valori, denumite semnale binare. Algebra boolean este construit pe o mulime
cu dou valori aflate n coresponden direct cu valorile semnalelor binare i cu
strile componentelor fizice ale calculatoarelor. Mai exact, algebra logicii
lucreaz cu propoziii reprezentnd afirmaii despre care se spune c sunt
adevrate sau false. Unei propoziii adevrate i se asociaz simbolul (valoarea)
1, iar uneia false simbolul (valoarea) 0.
n acest context simbolurile 0 i 1 au dimensiune calitativ nu cantitativ.
O propoziie nu poate fi simultan i adevrat i fals.
Definiie: Algebra boolean este o mulime de dou elemente M={0,1},
nzestrat cu dou legi de compoziie notate cu + (U) i (), o lege de
complementare notat cu (non) i un numr de axiome.
Pentru fiecare din legile algebrei booleene exist cte un operator
fundamental, ce poate fi definit prin tabel de adevr, funcie logic i simbol
grafic.
Operatorul sum logic (+) a dou variabile x i y, mai este denumit
reuniune (U sau V), SAU (OR) sau disjuncie i se definete cu urmtorul tabel
de adevr:

55

Algebr logic. Circuite logice

0
0
1
1

0
1
0
1

x+y
(x U y sau x V y)
0
1
1
1

Simbol
Funcia logic
f=x+y

Operatorul produs logic () a dou variabile x i y, mai este denumit


intersecie ( sau ), I (AND) sau conjuncie i se definete cu urmtorul tabel
de adevr:
x

0
0
1
1

0
1
0
1

xy
(x y sau x y)
0
0
0
1

Funcia logic
f=xy

Simbol

Operatorul de complementare (NU/NOT) a unei variabile x este unar


i se definete:
x
0
1

x
1
0

Funcia logic
f =x

Ansamblul format din {{0,1} M,+,, } formeaz o algebr pur deoarece


ndeplinete urmtoarele proprieti fundamentale (axiomele algebrei logice):

1. Unicitatea: elementele 0 i 1 sunt unice.


2. Mulimea este nchis n raport cu cei trei operatori:
(x + y ) M

x , y M (x y ) M
xM.

3. Exist element neutru att fa de adunarea logic ct i fa de nmulirea


logic:
0, astfel nct x + 0 = 0 + x = x
x M
1, astfel nct x 1 = 1 x = x .

56

Introducere n tiina sistemelor i a calculatoarelor

4. Exist element absorbant att fa de adunarea logic ct i fa de nmulirea


logic:
0, numit prim element, pentru care x 0 = 0 x = 0
x M
1, numit ultim element, pentru care x + 1 = 1 + x = 1 .
5. Teorema dublei negaii:

x=x .

6. Teoremele complementrii:
a) principiul contradiciei
b) principiul terului exclus
7. Teoremele de idempoten:

x x = 0;
x + x = 1.
x + x = x;
xx = x.

8. Teoremele de absorbie:

x + (x y ) = x ;
x (x + y ) = x .

9. Comutativitatea:

x + y = y + x;
xy = yx.

10. Asociativitatea:
x + (y + z ) = (x + y ) + z;
x ( y z ) = (x y ) z .
11. Distributivitatea:

x (y + z ) = x y + x z;
x + y z = (x + y ) (x + z ) .

12. Teoremele lui DeMorgan:


x + y = x y;
x y = x + y.

57

Algebr logic. Circuite logice

2.2. Funcii logice


Cu ajutorul variabilelor logice i a operatorilor logici se pot construi
funcii logice de una sau mai multe variabile. Pentru mulimea M={0,1} i
elementele xi , xiM, i=0,1...,n-1, se construiete:
a) O funcie logic de o singur variabil
0 propozitie falsa;
f : M M, f(x) =
1 propozitie adevarat .
b) O funcie logic de n variabile:
0
f : Mx
...
xM

M
,
f(x
,
x
,...x
)
=

0
1
n
1
1
424
3
1
n ori

propozitie falsa;
propozitie adevarata .

Funciile de mai multe variabile logice se obin ca rezultat al reuniunii


unor propoziii prin intermediul unor legturi logice.
2.2.1. Reprezentarea funciilor logice

Funciile logice se pot reprezenta n cel puin trei moduri: sub form de
tabele de adevr, prin realizant sau printr-o expresie logic.
1) O funcie logic se definete sub forma unui tabel de adevr, care conine
valorile variabilelor n toate combinaiile posibile i valorile corespunztoare
ale funciei. Pentru n variabile logice, numrul de combinaii de valori
posibile este 2n. De pild, pentru 3 variabile exist 23=8 combinaii ca n
tabelul de mai jos:
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f(x,y,z)
1
0
0
1
1
1
0
0

La rndul su, funcia boolean este de fapt o variabil binar ale crei
valori depind de variabilele x, y, z. Variabilele x, y, z se numesc independente
(pot fi alese arbitrar), iar f(x,y,z) este variabil dependent de variabilele
independente.
58

Introducere n tiina sistemelor i a calculatoarelor

Dou funcii logice sunt egale dac n urma evalurii fiecrei funcii
pentru toate combinaiile posibile, se obin valori identice.
Exemple

1. S se demonstreze a doua relaie a distributivitii


x + y z = (x + y ) (x + z ) , utiliznd tabelul de adevr.
Tabelul 2.1. Tabelul de adevr pentru a doua relaie a distributivitii
x
y
z
yz
x+yz
x+y
x+z
(x+y)(x+z)
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
1
1
1
0
1
0
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1

Expresii echivalente
2. S se demonstreze teoremele lui DeMorgan x + y = x y, x y = x + y ,
utiliznd tabelul de adevr.
Tabelul 2.2. Tabelul de adevr pentru teoremele lui DeMorgan
x
y
xy
xy
y
x + y x+y x + y
x
0
0
1
1

0
1
0
1

0
0
0
1

1
1
1
0

1
1
0
0

1
0
1
0

1
1
1
0

Expresii echivalente

0
1
1
1

1
0
0
0

xy
1
0
0
0

Expresii echivalente

2) Definirea unei funcii logice prin realizant. n acest caz se precizeaz pentru
ce combinaii (exprimate n zecimal) ale variabilelor de intrare funcia ia
valoarea 1 sau 0. De exemplu, pentru
f(x,y,z)=R1(0,2,3,7),
59

Algebr logic. Circuite logice

funcia ia valoarea 1 pentru combinaiile zecimale 0, 2, 3 i 7. Mai exact,


f(0,0,0)=1, f(0,1,0)=1, f(0,1,1)=1 i f(1,1,1)=1, n rest f(x,y,z)=0. Pentru
definirea de mai sus avem urmtorul tabel de adevr:
Echivalent
zecimal
0
1
2
3
4
5
6
7

f(x,y,z)

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
1
1
0
0
0
1

Funcia de mai sus se poate defini prin realizant n 0 astfel:


f(x,y,z)=R0(1,4,5,6).
3)

Definirea unei funcii logice prin expresii logice (definire analitic). Orice
funcie logic
f:{0,1}x......x{0,1}{0,1},

poate fi exprimat printr-o expresie logic n care sunt utilizate toate variabilele
independente, legate ntre ele prin operatorii de adunare logic, produs logic i
negare. De exemplu, funcia logic definit anterior prin realizant n 1,
f(x,y,z)=R1(0,2,3,7), se poate exprima analitic sub forma:
f ( x , y, z ) = x y z + x y z + x y z + x y z .
Definiie: Fiind dat o funcie logic, duala acesteia se obine inversnd
ntre ele produsul cu suma, 1 cu 0, variabilele rmnnd neschimbate. S
considerm de exemplu, cele dou teoreme ale complementrii, care reprezint
de fapt dou funcii logice duale:
x + x =1
.
xx =0

Dac dou funcii sunt egale, atunci i dualele lor sunt egale.
Definiie: O funcie boolean de n variabile este simetric din punct de
vedere a variabilelor, dac orice permutare ale acestor variabile nu schimb
funcia. Funcia f(x,y,z)=xy+xz+yz i duala acesteia f(x,y,z)=(x+y)(x+z)(y+z)
60

Introducere n tiina sistemelor i a calculatoarelor

sunt funcii simetrice n raport cu variabilele x, y, z, dar funcia


f ( x , y, z) = x y z + x y z + x y z nu este simetric n raport cu variabilele x,
y, z.
Observaii:
1. Modurile de definiie prin tabel i prin realizant sunt unice. Definirea
analitic nu este unic i se pot gsi expresii logice echivalente, pe baza
proprietilor algebrei booleene.
2. Toate formele de definiie sunt echivalente.
3. Plecnd de la expresia unei funcii logice, aceasta poate fi adus la o
form mai simpl, mai compact, cu mai puine operaii logice sau n care
variabilele logice apar de mai puine ori. Acest procedeu se numete
minimizare i va fi prezentat n cele ce urmeaz.
Funcii logice incomplet definite.
Uneori, pentru anumite combinaii ale valorilor variabilelor independente,
nu este precizat valoarea funciei, sau aceste combinaii nu apar niciodat n
sistemul fizic ce materializeaz funcia dat. Se spune c o astfel de funcie este
incomplet definit i prezint valori indiferente, care se vor nota utiliznd
caracterul .
Se consider funcia logic definit prin tabelul:

Echivalent
zecimal
0
1
3
5
6

0
0
0
1
1

0
0
1
0
1

0
1
1
1
0

0
0
1
1
0

x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f
0
0

1
0

Aceeai funcie poate fi exprimat i n una din urmtoarele forme:


f(x,y,z)=R1(3,5)+R(2,4,7),
f(x,y,z)=R0(0,1,6)+R(2,4,7).
2.2.2. Formele canonice ale funciilor logice

Pentru a reprezenta analitic o funcie logic se folosesc dou forme de


baz, numite forme canonice:
a) forma canonic (normal) disjunctiv, FCD (FCND), care reprezint
o sum de produse;
61

Algebr logic. Circuite logice

b) forma canonic (normal) conjunctiv, FCC (FCNC), care


reprezint un produs de sume.
Definiie: Un minterm (m) este o expresie logic elementar, definit
pe fiecare combinaie posibil a tuturor variabilelor independente legate
prin produs logic i care evaluat este ntotdeauna 1 logic.
Definiie: Un maxterm (M) este o expresie logic elementar, definit
pe fiecare combinaie posibil a tuturor variabilelor independente legate
prin sum logic i care evaluat este ntotdeauna 0 logic.

Pentru o funcie f(x,y,z), cu cele 8 combinaii posibile pentru variabilele


independente, mintermii i maxtermii sunt prezentai n tabelul 2.3.
Tabelul 2.3. Mintermii i maxtermii funciei f(x,y,z)=R1(0,2,3,7)
Echivalent
Mi
f(x,y,z)
x
y
z
mi
zecimal
0
0
0
0
m0 = x y z M0 = x + y + z
1
m1 = x y z M1 = x + y + z
1
0
0
1
0
2
0
1
0
m2 = x y z M2 = x + y + z
1
m3 = x y z M3 = x + y + z
3
0
1
1
1
4
1
0
0
m4 = x y z M4 = x + y + z
0
m5 = x y z M5 = x + y + z
5
1
0
1
0
6
1
1
0
m6 = x y z M6 = x + y + z
0
m7 = x y z M7 = x + y + z
7
1
1
1
1
Pentru aceeai combinaie de variabile independente, m i = M i i
M i = m i . De exemplu, M1 = x + y + z = x y z = m1 .
Observaii:
1. Produsul logic a doi mintermi mi i mj, cu ij, ai unei funcii logice, este
egal cu 0. Astfel, calculm m 0 m1 = x y z x y z = x y (z z ) = 0 .
123
0

2. Suma logic a doi maxtermi Mi i Mj, cu ij, ai unei funcii logice, este
egal cu 1. Calculm M 0 + M1 = x + y + z + x + y + z = x + y + (z + z ) = 1 .
123
1

3. Pentru orice minterm sau maxterm exist relaiile m i = I M j respectiv


i j

M i = U m j . Pentru a demonstra mai uor aceste proprieti se consider


i j

mintermii i maxtermii doar pentru dou variabile independente, x i y.


62

Introducere n tiina sistemelor i a calculatoarelor

Echivalent
zecimal
0
1
2
3

mi

Mi

0
0
1
1

0
1
0
1

m0 = x y
m1 = x y
m2 = x y
m3 = x y

M0 = x + y
M1 = x + y
M2 = x + y
M3 = x + y

x + xy+ xy+ {
M1 M 2 M 3 = ( x + y) ( x + y) ( x + y) = ( x{
y y) ( x + y ) =
0

x y + x x y + x y + x y y = x y = m0 .
123
123
0

m1 + m 2 + m 3 = x y + x y + x y = x y + x y + x y + x y =
y (1
x2
+3
x ) + x (y + y ) = x + y = M 0 .
123
1

Definiie. Forma canonic disjunctiv (FCD) este o sum logic (reuniune) de


mintermi:
FCD =

2 n 1

i=0

mi fi =

2 n 1

U mi fi

i=0

unde n este numrul de variabile independente iar fi reprezint valoarea funciei


pentru echivalentul zecimal i.
Se observ c FCD a unei funcii logice:
este echivalent cu definirea funciei prin tabel;
este o sum de termeni produs, construii dup urmtoarea regul: se
consider combinaiile pentru care funcia este 1, iar variabilele se iau
n forma direct dac sunt 1 i n forma invers dac sunt 0.
Pentru funcia definit n tabelul 2.3 avem
FCD = m 0 1 + m 2 1 + m 3 1 + m 7 1 = x y z + x y z + x y z + x y z .
Definiie. Forma canonic conjunctiv (FCC) este un produs logic (intersecie)
de maxtermi:
FCC =

2 n 1

2 n 1

i=0

i=0

(M i + f i ) = I (M i + f i ) ,

unde n este numrul de variabile independente iar fi reprezint valoarea funciei


pentru echivalentul zecimal i.
Remarcm c FCD a unei funcii logice:
este echivalent cu definirea funciei prin tabel;
63

Algebr logic. Circuite logice

este un produs de factori sum, construii dup regula: se consider


combinaiile pentru care funcia este 0, iar variabilele se iau n forma
direct dac sunt 0 i n forma invers dac sunt 1.
Pentru funcia definit n tabelul 2.3 avem
FCC = M1 + M 4 + M 5 + M 6 = (x + y + z ) (x + y + z ) (x + y + z ) (x + y + z ) .

2.3.Implementarea funciilor logice. Pori logice elementare.


Circuitele logice reprezint elementele de baz care formeaz unitile
funcionale i operaionale ale unui calculator numeric. Circuitele logice
reprezint modele fizice ale unor funcii booleene de mai multe variabile.
Indiferent de elementele constructive prin care se realizeaz, un circuit logic
reprezint un multipol avnd n intrri i m ieiri. Fiecare ieire (yj)
reprezint o funcie a celor n variabile de intrare:

yj=fj(x1,. . .,xn) .
Att intrrile ct i ieirile sunt mrimi binare ce fac parte din mulimea
binar M={0,1} i se materializeaz prin prezena unor impulsuri de tensiune
sau de curent. Funciile fj poart numele de funcii de rspuns sau de transfer ale
circuitului. Circuitele logice sunt combinaionale sau secveniale i vor fi
descrise n cele ce urmeaz. Deocamdat ne oprim asupra porilor logice, care
reprezint cele mai simple circuite combinaionale i care sunt asociate unor
funcii logice importante.
n cazul circuitelor poart, ieirea la un moment dat nu depinde de starea
anterioar a circuitului ci numai de combinaia existent la un moment dat ntre
variabilele de intrare. Pe lng porile logice fundamentale prezentate deja
(AND, OR, NOT), exist cteva pori importante care materializeaz funcii
logice des ntlnite n analiza i sinteza circuitelor logice.
n cele ce urmeaz sunt prezentate cteva funcii importante i porile
logice corespunztoare.
x
0
0
1
1

Funcia NAND (NOT AND)


y
Funcia logic (PIERCE): f = x y
xy
0
1
1
1
0
1
1
0

Structura intern echivalent a unei pori NAND cu dou intrri, realizat


n tehnologie TTL (vezi 2.5), este prezentat n figura 2.1. Fr a intra n prea
multe detalii legate de funcionarea acestei scheme intenionm doar s
64

Introducere n tiina sistemelor i a calculatoarelor

conturm imaginea legat de ceea ce se afl fizic n spatele simbolurilor aferente


porilor logice. Precizm c tranzistoarele lucreaz numai n comutaie, avnd
dou stri stabile: starea de blocare (jonciunea emitor-baz este blocat) i
starea de saturaie (jonciunea emitor-baz este deschis). Evident, aceste dou
stri pot fi asociate valorilor binare din algebra boolean.
Vcc
R2

R1

T2
x

D1

T3
D3

T1

R4

f
T4

D2
R3

Fig. 2.1. Schema electric a unei pori logice NAND, n tehnologie TTL
n schem, x i y reprezint intrrile, f ieirea porii iar Vcc tensiunea de
alimentare de +5 V. Dac ambele intrri sunt pe 1 logic, adic la un nivel ridicat
de tensiune, tranzistorul T1 este blocat deoarece ambele jonciuni emitor baz
sunt blocate. Prin urmare nivelul de tensiune din baza tranzistorului T2 este
ridicat, acesta se deschide i intr n saturaie, rezultnd un curent prin R2 i R3.
La rndul su tranzistorul T4 se satureaz datorit cderii de tensiune pe R3, iar
n colectorul acestuia vom avea un nivel sczut de tensiune ceea ce determin
blocarea tranzistorului T3. Astfel calea R4, T3, D3 este blocat i n punctul f vom
avea nivel sczut de tensiune asociat cu 0 logic.
Dac una din intrri este pe 0 logic, deci nivel sczut de tensiune, se
deschide jonciunea emitor baz corespunztoare, T1 se satureaz, n colectorul
su vom avea tensiune sczut ce nu poate deschide tranzistorul T2, acesta se
blocheaz i prin R3 nu circul curent. T4 va fi blocat iar T3 saturat datorit
tensiunii ridicate din baza acestuia (cderea de tensiune pe R2). La ieirea porii
(f) vom avea un potenial ridicat de tensiune care va codifica 1 logic.
Poarta NAND constituie un sistem complet, adic, folosind numai aceast
poart putem implementa orice expresie logic. Operatorii NOT, AND i OR
pot fi implementai cu pori NAND.
65

Algebr logic. Circuite logice

Fig. 2.2. Implementarea operatorilor NOT, AND i OR cu pori NAND


Funcia NOR
x y
x+y

0
0
1
1

0
1
0
1

Funcia logic (SHEFFER): f = x + y

1
0
0
0

i poarta NOR constituie un sistem complet, adic, folosind numai


aceast poart putem implementa orice expresie logic, inclusiv operatorii NOT,
AND i OR.

Fig. 2.3. Implementarea operatorilor NOT, AND i OR cu pori NOR


66

Introducere n tiina sistemelor i a calculatoarelor

x
0
0
1
1

Funcia SAU-EXCLUSIV (XOR) sau suma modulo 2


xy
y
Funcia logic: f = x y
0
0
1
1
0
1
1
0

Funcia logic XOR materializat de aceast poart are urmtoarele


proprieti, ce pot fi uor demonstrate utiliznd tabelul de adevr:
Asociativitatea;
Comutativitatea;
x 1= x ;
x 0= x;
x x = 1;
x y = x y + x y.
Funcia COINCIDEN reprezint complementara funciei XOR i are
urmtorul tabel de adevr:

x
y
xy
0
0
1
f = x y = (x + y ) ( x + y ) = x y + x y
0
1
0
1
0
0
1
1
1
Se poate demonstra uor c x y = x y . Funcia COINCIDEN se bucur
de proprietile de asociativitate i comutativitate.
Funcia INHIBARE a dou variabile x i y, nseamn att x ct i non y,
adic x y . Evident exist i forma x y .
Funcia IMPLICARE a dou variabile x i y, reprezint complementara
funciei INHIBARE i are una din expresiile x + y sau x + y .

Prin implementarea unei funcii logice se nelege realizarea ei cu ajutorul


porilor (circuitelor logice) fundamentale. O importan deosebit o reprezint
implementarea funciilor logice utiliznd numai pori NAND sau numai pori
NOR, pornind de la formele canonice. Astfel, pentru o funcie logic de n
variabile, forma canonic disjunctiv este:

67

Algebr logic. Circuite logice

f ( x 0 , x1 ,...x n 1 ) =

2 n 1

i=0

mi =

2 n 1

mi ,

i=0

ceea ce sugereaz implementarea cu pori NAND, ca n figura de mai jos:

Fig. 2.4. Implementarea unei funcii cu pori NAND


Pentru o funcie logic de n variabile, forma canonic conjunctiv are expresia:
f ( x 0 , x1 ,...x n 1 ) =

2 n 1

2 n 1

i=0

i=0

Mi = Mi ,

care sugereaz implementarea acesteia cu pori NOR (fig. 2.5).

Fig. 2.5. Implementarea unei funcii cu pori NOR


Definiie: Costul (C) unei funcii logice este egal cu numrul de intrri n
circuitele logice elementare ce realizeaz funcia dat.

68

Introducere n tiina sistemelor i a calculatoarelor

Definiie: Numrul de nivele (N) al unei implementri este dat de numrul


maxim de pori strbtute de un semnal de la intrare la ieire.
Exemplu: S se implementeze funcia logic f ( x 2 , x1 , x o ) = x1 x 2 + x1 x 0 .
Pentru aceast implementare C=6, N=2 iar schema logic este prezentat n
figura de mai jos.

Fig. 2.6. Implementarea funciei f ( x 2 , x1 , x o ) = x1 x 2 + x1 x 0


Exemplu: S se implementeze utiliznd numai pori NAND, apoi numai pori
NOR, funcia f ( x 2 , x1 , x 0 ) = R 1 (1,3,4) .
Tabelul de adevr este:

x2
0
0
0
0
1
1
1
1

x1
0
0
1
1
0
0
1
1

x0
0
1
0
1
0
1
0
1

f(x2, x1, x0)


0
M0
1
m1
0
M2
1
m3
1
m4
0
M5
0
M6
0
M7

Forma canonic disjunctiv are expresia:


FCD = m1 + m 2 + m 3 = m1 m 2 m 3 = (x 2 x1 x 0 ) (x 2 x1 x 0 ) (x 2 x1 x 0 ) ,
iar implementarea numai cu pori NAND este prezentat n figura 2.7.
n acest caz costul este 12 i numrul de nivele este 2.

69

Algebr logic. Circuite logice

Fig. 2.7. Implementarea funciei f ( x 2 , x1 , x 0 ) = R 1 (1,3,4) cu pori NAND


Forma canonic conjunctiv are expresia:
FCC = M 0 M 3 M 5 M 6 M 7 = M 0 + M 3 + M 5 + M 6 + M 7 =

(x 2 + x1 + x 0 ) + (x 2 + x1 + x 0 ) + (x 2 + x1 + x 0 ) + (x 2 + x1 + x 0 ) + (x 2 + x + x 0 ),
implementarea numai cu pori fiind NOR prezentat n figura 2.8.

Fig. 2.8. Implementarea funciei f ( x 2 , x1 , x 0 ) = R 1 (1,3,4) cu pori NOR


Numrul de nivele este 2 iar costul este 20. Pentru aceast funcie
implementarea numai cu pori NOR este mai costisitoare dect cea cu pori
NAND, dar nu este o regul i n alte cazuri poate fi invers.
70

Introducere n tiina sistemelor i a calculatoarelor

Exemplu: S se implementeze numai cu NAND-uri funcia


f ( x 2 , x1 , x 0 ) = x1 x 0 + x1 x 2 + x 2 x 0 .
Pentru funcia de mai sus putem scrie dou expresii pentru forma canonic
disjunctiv:

FCD1 = (x1 x 0 ) (x1 x 2 ) (x 2 x 0 ) ,

FCD 2 = x1 x 0 + x 2 (x1 + x 0 ) = x1 x 0 + x 2 x1 x 0 = (x1 x 0 ) x 2 x 2 x 0 .


Corespunztor celor dou forme avem implementrile de mai jos:

Fig. 2.9. Implementarea formei FCD1


C1=9, N1=2

Fig. 2.10. Implementarea formei FCD2


C1=8, N1=3

A doua implementare este mai economic dar mai lent deoarece


semnalele x 0 i x1 trebuie s strbat trei pori nu dou. n general, structurile
mai economicoase sunt mai lente.

2.4. Minimizarea funciilor logice


Minimizarea unei funcii logice presupune obinerea unei expresii cu cost
minim pentru un numr de nivele dat. O form mai simpl a unei funcii logice
se poate obine prin:
1. Utilizarea proprietilor i teoremelor algebrei logice. Metoda este ns
greu de aplicat n mod sistematic i nu se poate stabili cu certitudine cnd
s-a obinut expresia optim, mai ales dac avem mai mult de trei variabile.
2. Utilizarea metodelor sistematice ca de pild metoda Veitch-Karnaugh
(pentru 4-5 variabile independente) i metoda Quine Mc-Cluskey (pentru
mai mult de 5 variabile).

71

Algebr logic. Circuite logice

Exemple de minimizare a unor funcii booleene utiliznd proprietile algebrei


logice.
1.
f ( x 3 , x 2 , x 1 , x 0 ) = (x 3 + x 2 ) (x 1 + x 0 ) + ( x 3 + x 2 ) + x 1 x 0 =
1424
3 144244
3 {
DeMorgan

x0

DeMorgan

(x 3 + x 2 ) (x1 x 0 ) + (x 3 + x 2 ) x1 x 0 = (x 3 + x 2 ) (x1 x 0 + x1 x 0 ) =
(1
x 3 + x 2 ) x 1 (x 0 + x 0 ) = x 3 x 2 x 1 .
424
3
1424
3
DeMorgan

2. n acest exemplu se apeleaz n primul rnd la proprietatea de idempoten i


se adun de nc dou ori termenul x2x1x0, dup care se grupeaz convenabil.
f ( x 2 , x 1 , x 0 ) = x 2 x 1 x 0 + x 2 x 1 x 0 + x 2 x 1 x 0 + x 2 x1 x 0 =
x 2 x1 x 0 + x 2 x1 x 0 + x 2 x1 x 0 + x 2 x1 x 0 + x 2 x1 x 0 + x 2 x1 x 0 =

x 1 x 0 (x 2 + x 2 ) + x 2 x 0 (x 1 + x 1 ) + x 2 x 1 (x 0 + x 0 ) =
1424
3
1
424
3
1424
3
1

x1 x 0 + x 2 x 0 + x 2 x1.
Metoda de minimizare Veitch-Karnaugh
Definiie. Separarea unui ir de variabile n dou grupe se numete partiie
de variabile. Pentru irul de n variabile:
x n 1x n 2 L x1x 0

[x n 1 L x p ] ,
[x p 1 L x 0 ]

cu p=n/2 pentru n par i p=(n-1)/2 sau p=(n+1)/2 pentru n impar.


Metoda de minimizare const n parcurgerea urmtorilor pai:
1. Se construiete o matrice ce conine un numr de linii i coloane
determinat de partiia de variabile fixat: 2 k ,2 p , unde k reprezint
numrul de elemente din primul termen al partiiei iar p numrul de
elemente din al doilea termen al partiiei;
2. Pentru ordonarea liniilor i coloanelor se folosete codul Gray care are
proprietatea de adiacen. Adunnd dou conjuncii sau nmulind dou
disjuncii adiacente, dispare termenul care difer;
3. Se completeaz matricea cu valori de 1 (conjuncii) sau de 0 (disjuncii)
ale funciei n celule matricei, corespunztor combinaiilor variabilelor;
4. Se grupeaz celulele vecine n grupe ct mai mari, formate dintr-un numr
de elemente egal cu o putere a lui 2 (1, 2, 4, 8). Celule laterale care sunt
simetrice fa de o ax median imaginar sunt vecine;

72

Introducere n tiina sistemelor i a calculatoarelor

5. Fiecare grup formeaz un termen minimizat, termen ce nu conine


variabilele ce-i schimb semnul i astfel dispar.
Observaii:
Un element poate face parte din mai multe grupe;
Fiecare grup trebuie s conin cel puin un element nou fa de celelalte
grupe;
Orice element aparine mcar unei grupe, chiar i numai de un element;
Variabilele independente se scriu conform regulilor de la funciile
canonice.
Exemple

1. S se minimizeze funcia f(x3,x2,x1,x0)=R1(1,2,6,8,10,11,15).


Matricea construit dup regulile de mai sus are urmtoarea form:
00
01
11
10
x1x0
x3x2
00
1
1
I
01
1 II
11
1 III
10
1
1
1
IV
Dup gruparea elementelor, forma minimizat a funciei este:

f ( x 3 , x 2 , x1 , x 0 ) = x 3 x 2 x1 x 0 + x 3 x1 x 0 + x 3 x1 x 0 + x 3 x 2 x 0 .
144244
3 14243 14243 14243
I

II

III

IV

n acest caz, grupa I conine un singur element iar grupa IV conine dou
elemente simetrice fa de axa vertical median, elemente cu echivalenii
zecimali 8 i 10.
3. S se minimizeze funcia f(x3,x2,x1,x0)=R1(4,5,8,9,10,12,13).
x1x0

x3x2
00
01
11
10

00

01

1
1
1

1
1
1

11

10

1
73

Algebr logic. Circuite logice

Se formeaz un grup cu elementele cu echivalenii zecimali 4, 5, 12, 13, un


altul cu elementele cu echivalenii zecimali 9 i 13 i un al treilea grup cu
elementele cu echivalenii zecimali 8 i 10. Elementul cu echivalentul 13
aparine la dou grupuri distincte.
Forma minimal este f ( x 3 , x 2 , x1 , x 0 ) = x 3 x 2 x 0 + x 3 x1 x 0 + x 2 x1 .
3. S se minimizeze funcia incomplet definit f(x3,x2,x1,x0)= R1(0,1,2,4) +
R(3,5,10).
x1x0

x3x2
00
01
11
10

00

01

11

10

1
1

Se completeaz matricea i cu valorile indiferente care particip la formarea


celor dou grupe de elemente. Elementul cu echivalentul zecimal 10 nu este luat
n considerare. Forma minimizat este f ( x 3 , x 2 , x1 , x 0 ) = x 3 x 2 + x 3 x1 .
4. S se minimizeze funcia f(x3,x2,x1,x0)= R0(1,3,4,6,9,11,12,14).
n acest caz se va obine funcia minimizat sub forma canonic conjunctiv.
x1x0

x3x2
00
01
11
10

00

01

11

0
0

10
0
0

Elementele matricei se grupeaz cte patru, fiind simetrice dou cte dou fa
de axa vertical i cea orizontal. Funcia minimizat are forma
f ( x 3 , x 2 , x 1 , x 0 ) = (x 2 + x 0 ) (x 2 + x 0 ) .
5. S se sintetizeze i s se implementeze funciile de complementare fa
de 9 a codului 8421.
Pentru a rezolva aceast problem este necesar s se alctuiasc tabele de
adevr pentru enunul problemei, dup care se gsete forma minimal pentru
funciile logice de ieire funcie de variabilele de intrare. n final, se
implementeaz funciile obinute utiliznd pori logice. Tabelul de adevr este
prezentat mai jos. Variabilele xi sunt independente, indicele reprezentnd
74

Introducere n tiina sistemelor i a calculatoarelor

ponderea (cod 8421), iar variabilele de ieire fi sunt dependente de intrri


conform unor relaii ce trebuiesc deduse. Variabilele de intrare formeaz 16
combinaii posibile distincte, dar pentru scopul propus nu intereseaz dect cele
pn la echivalentul zecimal 9 (inclusiv). Combinaiile de la 1010 pn la 1111
nu au complement fa de 9 i sunt considerate redundante. Se utilizeaz metoda
de minimizare Veitch-Karnaugh pentru funciile f8, f4, f1 i f0 (dei pentru f1 i f0
expresiile se observ uor din tabelul de adevr), folosind i termenii redundani
acolo unde este necesar.
Tabelul 2.4. Tabelul de adevr pentru complementarea fa de 9 a codului 8421
x4
x2
x0
f8
f4
f2
f1
x8
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
0
0
0
1
0
0
1
1
1
0
0
1
1
0
1
1
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
0
0
0
1
1
0
0
0
1
1
0
1
1
1
0
0
1
0
1
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0

1
0
1
1

1
1
0
0

1
1
0
1

1
1
1
0

1
1
1
1

Pentru a obine forma minimal corespunztoare fiecrei ieiri, se construiesc


matricele urmtoare.
f4
f8
x1x0
00
01
11
10
x1x0
00
01
11
10
x3x2
x3x2
00
1
1
00
1
1
01
01
1
1
11

11

10

10

f2
f1
x1x0
00
01
11
10
x1x0
00
01
11
10
x3x2
x3x2
00
1
1
00
1
1
01
1
1
01
1
11

11

10

10
1

75

Algebr logic. Circuite logice

Din matricele de mai sus rezult urmtoarele funcii:


f8 = x 8 x 4 x 2 ; f 4 = x 4 x 2 + x 4 x 2

f 2 = x 2 ; f1 = x1

Cu aceste expresii minimizate ale funciilor de ieire, schema


dispozitivului de complementare fa de 9 pentru cifre scrise n cod 8421, arat
ca n figura de mai jos. Anticipnd, acesta este un circuit logic combinaional.

Fig. 2.11. Implementarea funciilor de complementare fa de 9 a codului 8421

2.5. Circuite logice


Un circuit logic digital implementeaz funcii logice elementare
(prezentate deja) sau funcii logice complexe. Circuitele integrate (chip-uri),
aprute n 1963, au revoluionat tehnologia de realizare a circuitelor logice. Un
chip este o pastil de siliciu de civa milimetri, care nglobeaz mai multe
tranzistoare, diode semiconductoare, rezistene, capaciti i trasee de
interconectare. Din considerente termice i mecanice, chip-ul este plasat ntr-o
capsul de plastic mai mare, iar conexiunile acestuia cu alte circuite integrate i
cu sursele de alimentare se realizeaz prin aa numiii pini, plasai pe laturile
capsulei de plastic.
n funcie de numrul de pori pe care le conin (gradul de integrare),
circuitele integrate se clasific astfel:
SSI (Small Scale Integrated) circuite cu integrare mic, pn la 10 pori
(pori logice, bistabile);
MSI (Medium Scale Integrated) circuite cu integrare pe scar medie,
10-100 pori ( ROM, RAM, PLA);
LSI (Large Scale Integrated) circuite cu integrare pe scar larg, pn la
100000 pori (procesoare simple, memorii, circuite specializate);
76

Introducere n tiina sistemelor i a calculatoarelor

VLSI (Very Large Scale Integrated) circuite cu integrare pe scar foarte


mare, peste 100000 pori (microprocesoare, memorii, circuite
specializate).
Exist mai multe tehnologii de realizare a circuitelor integrate, dup care
avem trei mari familii:
TTL (Transistor-Transistor Logic);
ECL (Emiter Coupled Logic);
MOS (Metal Oxid Semiconductors) cu variantele sale PMOS, NMOS i
CMOS.
Primele dou aparin tehnologiei bipolare. n proiectarea unui sistem, o
problem aparte o reprezint interfaarea circuitelor din familii logice diferite
MOS-TTL, MOS-ECL. De exemplu: tehnologia bipolar este mai rapid dect
cea MOS, nivelul minim de ieire n starea 1 pentru TTL este 2,3 V mai mic
dect nivelul minim de intrare (3,5 V) n starea 1 pentru circuite CMOS,
sursele de alimentare etc.
n funcie de tensiunile care codific valorile logice, circuitele logice
lucreaz n logic pozitiv sau logic negativ. n logica pozitiv, valorii logice
1 i corespunde un nivel ridicat de tensiune (ex. 3V, 12V sau 15V), iar valorii
0 logic i corespunde un nivel sczut de tensiune (0V, -12V sau 15V). n
logica negativ corespondena este invers: nivelul sczut de tensiune se
asociaz lui 1 logic iar nivelul ridicat de tensiune corespunde valorii binare
0. Circuitele TTL lucreaz n logic pozitiv, avnd corespondena 0 0V
i 1 3V.
Din cele prezentate pn acum reiese c la terminalele circuitelor integrate
(mai puin alimentarea) se regsesc dou valori logice: 0 i 1. Exist ns i
circuite care au la terminale trei valori logice i anume: 0, 1 i Z (starea de
nalt impedan). Aceste circuite se numesc TSL (Three State Logic). Din
punct de vedere tehnologic, conectarea circuitelor ntre ele poate fi de tip TTL,
cu colector n gol sau TSL. Circuitele TTL obinuite permit ca o singur ieire
s comande una sau mai multe pori n timp ce circuitele TSL permit ca una sau
mai multe ieiri s comande o aceeai linie de semnal. Aceast proprietate a
circuitelor TSL permite realizarea structurilor orientate pe magistral. Conceptul
de magistral precizeaz c ieirile i intrrile mai multor module pot fi
conectate la aceleai linii de semnal. De pild, un modul comand magistrala, iar
altele sunt comandate prin magistral, sau, la un anumit moment, un modul
comand magistrala fr ca alte module care ar putea comanda magistrala s fie
deconectate fizic.
Din punctul de vedere al funcionrii n timp, circuitele logice se mpart n
dou grupe:
circuite combinaionale, pentru care semnalele de ieire (rspuns) la un
moment dat nu depind de valorile anterioare ale semnalelor de intrare sau
de ieire, adic nu depind de starea anterioar a circuitului.
77

Algebr logic. Circuite logice

circuite secveniale, n cazul crora semnalele de ieire la un moment dat


depind de valorile lor anterioare, sau altfel spus depind de starea
anterioar a circuitului.
Caracteristicile circuitelor logice
Familiile (tehnologiile) de circuite logice se caracterizeaz prin parametri
dinamici i statici, dintre care amintim:
1. valorile tipice ale tensiunilor (High pentru 1 logic i Low pentru 0
logic) de intrare i de ieire;
2. fan-in reprezint curentul de intrare;
3. fan-out reprezint curentul de ieire i exprim numrul maxim de intrri
n paralel ale altor circuite ce pot fi alimentate de ieirea unui circuit;
4. impedanele de la intrare i ieire;
5. puterea consumat sau disipat;
6. plaja de temperatur n care lucreaz corect;
7. imunitatea la zgomot care reflect insensibilitatea circuitului la tot ce nu
este semnal util. Se definete ca fiind tensiunea maxim de zgomot
prezent la intrarea unui circuit i care nu comut circuitul n starea opus;
8. timpul de propagare a semnalului la traversarea circuitului (ns) este
timpul scurs ntre momentul modificrii unei variabile de intrare i
momentul stabilizrii variabilei de ieire.
2.5.1. Circuite combinaionale

La circuitele combinaionale, semnalele de ieire depind numai de valorile


semnalelor de intrare de la momentul respectiv, fr a exista semnale de reacie
(intrrile nu depind de ieiri). Pentru orice funcie (semnal) de ieire se poate
scrie:
y j = f j ( x 0 , x1 ,...x n 1 ), j = 1, m - 1
x0
xn-1

.
.
.

Circuit
combinaional

.
.
.

y0
ym-1

Fig. 2.12. Schema bloc a unui circuit combinaional


n general, pentru proiectarea unui circuit combinaional se parcurg urmtorii
pai (a se vedea exemplul 5 de la metoda Veitch-Karnaugh):
Se alctuiete tabelul de adevr pentru funciile de ieire;
Se minimizeaz expresiile funciilor logice de ieire;
Se implementeaz schema logic a funciilor minimizate.
78

Introducere n tiina sistemelor i a calculatoarelor

Dintre cele mai cunoscute circuite combinaionale utilizate n structura


calculatoarelor numerice, i asupra crora ne vom opri n cele ce urmeaz, sunt:
multiplexoare, demultiplexoare, codificatoare, decodificatoare, convertoare de
cod, comparatoare i sumatoare.
Multiplexorul (MUX) este un circuit combinaional cu n intrri de date
(x0,x1,...xn-1), m intrri de selecie (s0, s1,...sm-1) i o singur ieire y. ntre
numrul de intrri de date i numrul intrrilor de selecie exist relaia n=2m.
Multiplexorul propag un semnal de la o anumit intrare de date xi, selectat de
intrrile de selecie, spre ieire.

x0

.
.
.

xn-1

y
MUX
. . .

s0

sm-1

Fig. 2.13. Schema bloc a unui multiplexor


De exemplu, un multiplexor 4:1 are 4 intrri de date i 2 de selecie s0 i
s1 (s1 este bitul cel mai semnificativ). Tabelul de adevr este urmtorul:
s0
0
1
0
1

s1
0
0
1
1

y
x0
x1
x2
x3

Demultiplexorul (DMUX) este un circuit combinaional cu o intrare de


date (x), m intrri de selecie (s0, s1,...sm-1) i n ieiri (y0, y1,...yn-1), cu relaia
n=2m. Demultiplexorul (fig. 2.14) propag semnalul de la o intrare unic spre
ieirea selectat de intrrile de selecie.

DMUX

.
.
.

y0
yn-1

. . .

s0
sm-1
Fig. 2.14. Schema bloc a unui demultiplexor
79

Algebr logic. Circuite logice

Pentru un demultiplexor cu patru ieiri, la intrarea cruia se aplic 1 logic,


tabelul de adevr este:
s1
0
0
1
1

s0
0
1
0
1

y0
1
0
0
0

y1
0
1
0
0

y2
0
0
1
0

y3
0
0
0
1

Comparatorul determin o ordonare a intrrilor, activnd o singur


ieire. Un comparator elementar definete o ordonare ntre doi bii A i B. n
funcie de valorile logice ale intrrilor se activeaz una din ieirile A>B, A=B
sau A<B. Mai multe comparatoare elementare pot fi combinate pentru a permite
compararea unor cuvinte formate din mai muli bii.

A>B

A
B

A=B

COMP

A<B

a)
b)
Fig. 2.15. Schema bloc (a) i cea cu pori logice a unui comparator
Decodificatorul este un circuit digital combinaional cu n intrri
(x0,x1,...xn-1) i m ieiri (y0, y1,...ym-1), cu m=2n (fig. 2.16). La un moment dat
este activat o singur ieire yk avnd numrul de ordine k, reprezentat codificat
de intrri, n timp ce toate celelalte ieiri sunt inactive.

x0
xn-1

.
.
.

DEC

.
.
.

Fig. 2.16. Schema bloc a unui decodor


Un decodificator 3:8, cu urmtorul tabel de adevr:
80

y0
ym-1

Introducere n tiina sistemelor i a calculatoarelor

x2
0
0
0
0
1
1
1
1

x1
0
0
1
1
0
0
1
1

x0
0
1
0
1
0
1
0
1

y7
0
0
0
0
0
0
0
1

y6
0
0
0
0
0
0
1
0

y5
0
0
0
0
0
1
0
0

y4
0
0
0
0
1
0
0
0

y3
0
0
0
1
0
0
0
0

y2
0
0
1
0
0
0
0
0

y1
0
1
0
0
0
0
0
0

y0
1
0
0
0
0
0
0
0

Codificatorul genereaz un anumit cod binar la ieire pentru o anumit


intrare activ.

x0
xm-1

.
.
.

.
.
.

COD

y0
yn-1

Fig. 2.17. Schema bloc a unui codificator


Funcioneaz invers ca un decodificator. Pentru un codificator cu m=3 i
n=2, tabelul de adevr este urmtorul:
x2
0
1
0
0

x1
0
0
1
0

x0
0
0
0
1

y1
0
0
1
1

y0
0
1
0
1

Convertoarele de cod sunt circuite combinaionale care transform un


cod ntr-un alt cod. Un astfel de circuit are ni intrri i no ieiri, ni fiind numrul
de bii prin care se codific codul de intrare i no numrul de bii prin care se
codific codul rezultat. Dintre convertoarele de cod existente, amintim MMC
4030 (CMOS) care realizeaz complementarea fa de 9 pentru un numr
reprezentat n BCD i MMC 4030 (CMOS) care este un convertor paralel din
Gray n binar. Acesta din urm este un circuit integrat format din n-1 pori XOR
pentru conversia unui cuvnt de n bii. Rezultatul se obine dup (n-1)tp, unde
tp este timpul de propagare printr-o poart.

81

Algebr logic. Circuite logice

Fig. 2.18. Convertorul MMC 4030


Sumatorul realizeaz suma aritmetic a doi operanzi reprezentai fiecare
pe acelai numr de bii. Un astfel de sumator pe 4 bii (7483) are cte patru
intrri de date pentru fiecare operand (a0-a3 i b0-b3) o intrare de transport Tin,
patru ieiri pentru biii sum (s0-s3) i o ieire de transport Tout. Prin
interconectarea corespunztoare a mai multor astfel de circuite, ieirea de
transport a unui circuit conectat la intrarea de transport a circuitului urmtor, se
pot obine sumatoare pe 8, 12, 16, etc. bii.

Tin

b3 b2 b1 b0 a3 a2 a1 a0

Tout

c3 c2 c1 c0

Fig. 2.19. Sumator pe 4 bii


Circuite PLA
PLA (Programable Logic Array) este un circuit combinaional avnd n
intrri de date (x0,x1,...xn-1) i m funcii de ieire (y0, y1,...ym-1). Intern, circuitul
conine un nivel de pori AND i un al doilea de pori OR. Porile AND pot
realiza orice produs ntre variabilele de intrare n form direct sau negat, iar
porile OR pot realiza orice sum logic ntre produsele generate de primul
nivel. Circuitul poate fi programat de ctre utilizator pentru a obine la ieirile
circuitului un set de funcii logice combinaionale.

82

Introducere n tiina sistemelor i a calculatoarelor

2.5.2. Circuite logice secveniale

Schema general a unui circuit logic secvenial (CLS) este prezentat n


figura de mai jos. Circuitul are n intrri x0,x1,...xn-1 i m ieiri y0, y1,...ym-1. Pe
lng o parte de logic combinaional, circuitul dispune de un set de elemente
de memorare, care conin informaii ce reprezint starea circuitului. Prin urmare,
ieirile depind att de intrri ct i de starea memorat a circuitului.
x0
xn-1

.
.
.

CLS

.
.
.

Elemente de
memorare

y0

.
.
.

ym-1

.
.
.

Fig. 2.20. Schema bloc a unui circuit secvenial


Timpul apare ca variabil implicit n funcionarea circuitelor secveniale.
ntruct la astfel de circuite, starea urmtoare depinde de starea precedent, se
spune c n fiecare moment circuitul are memorie. Rezult c n funcionarea sa
un circuit secvenial trebuie s fie nzestrat cu o baz de timp, care s serveasc
drept referin n ceea ce privete momentul aplicrii semnalelor de intrare sau
momentul citirii semnalelor de ieire.
Modelul matematic al unui CLS, pentru un anumit moment de timp t, este
definit de dou seturi de ecuaii care reflect tranziia strilor i a ieirilor i
care pot fi grupate n cvadruplul:
CLS=(X,Y,Q,f,g),
unde X- mulimea variabilelor binare de intrare, Y - mulimea variabilelor binare
de ieire, Q - mulimea variabilelor binare de stare, f funcii de tranziie a
strilor iar g - funcii de tranziie a ieirilor.
Din punct de vedere al relaiei temporale de producere a evenimentelor n
CLS (schimbri n starea circuitului sau a ieirilor), aceste circuite se mpart n
dou categorii:
Circuite asincrone, la care momentele n care se produc evenimentele
sunt oarecare;
Circuite sincrone, n care evenimentele se produc la anumite momente
discrete, bine precizate n timp, pe baza unui semnal de ceas. Chiar dac
83

Algebr logic. Circuite logice

introducerea semnalului de sincronizare scade viteza unui CLS, se obine


ns avantajul unei funcionri mai stabile.
Fa de circuitele combinaionale, proiectarea CLS, mai ales a celor
sincrone, este mai laborioas (de pild metoda ASM Algorithmic State
Machine). Funcionarea unui CLS poate fi descris printr-un graf orientat, n
care fiecare nod reprezint tranziia dintr-o stare n alta. Pe fiecare arc de cerc se
scriu valorile semnalelor de intrare i valorile semnalelor de ieire (intrare/ieire)
corespunztoare tranziiei. n figura 2.21 este reprezentat graful unui CLS
simplu cu dou stri s0 i s1.
Pentru acest circuit se pot scrie:
Funciile strii urmtoare: pe
baza strii curente i a
semnalelor de intrare se
calculeaz starea urmtoare
Funciile ieirilor: pe baza strii
curente i a semnalelor de
intrare se calculeaz semnalele
de ieire din circuitul
secvenial.

g(s1,0)=s1
g(s1,1)=s2
g(s2,0)=s2
g(s2,1)=s1
f(s1,0)=0
f(s1,1)=0
f(s2,0)=1
f(s2,0)=1

Fig. 2.21. Graful unui CLS cu dou stri


Dintre cele mai importante circuite secveniale amintim: circuite
basculante bistabile, memorii, numrtoare, registre. Un circuit basculant
bistabil implementeaz un element de memorie care pstreaz un bit de
informaie.
Bistabilul RS asincron
Acest circuit este format din dou pori NAND, fiecare avnd ca una din
intrri ieirea celeilalte. Intrrile R (Reset) i S (Set) sunt active pe 0 iar
ieirea Q (respectiv Q ) poate lua una din dou valori logice stabile Q=1 ( Q =0)
sau Q=0 ( Q =1). Qt+1 reprezint starea ieirii Q la momentul urmtor, fa de
momentul curent t. Combinaia 00 la intrare nu respect definiia unui bistabil n
care ieirile Q i Q sunt complementare i de aceea este o combinaie interzis.
Combinaia 11 la intrare nu impune o stare anume ci pstreaz starea anterioar,
astfel nct ieirile reprezint o nedeterminare fa de intrare.

84

Introducere n tiina sistemelor i a calculatoarelor

Fig. 2.22. Bistabilul RS asincron


Tabelul de adevr ce descrie funcionarea bistabilului este:
Q t +1
S
R Qt+1
combinaie interzis
0
0
1
1
0
1
1
0
1
0
0
1
nedeterminare
1
1
Qt
Qt
Bistabilul RS sincron
Spre deosebire de bistabilul RS asincron, la bistabilul RS sincron pentru
controlul comutrii strii se utilizeaz un semnal de sincronizare care este
denumit semnal de ceas sau semnal de tact (T). Acesta este un tren de impulsuri
care se succed cu o perioad T i sunt obinute de la un oscilator, care marcheaz
timpul prin impulsuri de tact (fig. 2.23)

palier

front
cresctor

front
descresctor

T
Fig. 2.23. Tren de impulsuri
La bistabilul RS sincron (fig. 2.24) starea curent (momentul t) este
considerat Qt, cea dinaintea impulsului de ceas, iar starea urmtoare (momentul
t+1) este considerat Qt+1, cea care rezult dup impulsul de tact. Acest bistabil
comut pe frontul pozitiv (cresctor) sau pe palierul impulsului de tact. Intrrile
R i S sunt active pe 1 logic.

85

Algebr logic. Circuite logice

Fig. 2.24. Bistabilul RS sincron


n momentul dinaintea frontului pozitiv, care produce comutarea, intrrile
R, S nu trebuie s-i schimbe valorile un timp (set-up), iar dup front
informaia de intrare trebuie s fie pstrat un timp de meninere (hold time)
de circa 5 ns. Funcionarea bistabilului este descris de tabelul de adevr:
T
1
1
1
1
0

R
0
0
1
1
x

S
0
1
0
1
x

Q t +1

Q t +1
Qt
Qt
0
1
1
0
nedeterminare
Qt
Qt

Bistabilul RS master-slave
Un bistabil master-slave este compus din dou bistabile simple conectate
n cascad (fig. 2.25).

Fig. 2.25. Bistabilul RS master-slave


Pe durata impulsului de tact se introduce n bistabilul master starea
viitoare (final) a bistabilului. Aceast stare este transferat n bistabilul slave pe
86

Introducere n tiina sistemelor i a calculatoarelor

frontul descresctor al impulsului de tact, dup ce bistabilul master nu mai este


influenat de eventualele modificri de la intrrile R, S. Astfel se asigur o
funcionare sigur indiferent de durata impulsului de sincronizare iar ieirile Q i
Q sunt separate de intrrile R i S.
Bistabilul D
Bistabilul D (Delay) elimin starea de nedeterminare a bistabilului RS
sincron n care S=R=1. Bistabilul D transfer intrarea D sincron cu impulsul de
tact T

Fig. 2.26. Bistabilul D


Tabelul de adevr care descrie funcionarea acestui bistabil este urmtorul:
T
D
Q t +1
Q t +1
0
0
Qt
Qt
0
1
Qt
Qt
1
0
0
1
1
1
1
0
Bistabilul T
Acest bistabil are proprietatea c schimb starea la fiecare impuls de tact,
dac intrarea A este 1 logic. Dac A=0, starea bistabilului rmne neschimbat.

Fig. 2.27. Bistabilul T


87

Q t + 1 Q t +1

0
1
1

x
0
1

Qt
Qt

Qt

Qt
Qt
Qt

Algebr logic. Circuite logice

Bistabilul JK
Acest bistabil elimin nedeterminarea existent la bistabilul RS, avnd
urmtorul tabel de adevr:

Q t +1

0
0
1
1

0
1
0
1

Qt
0
1
Qt

Fig. 2.28. Bistabilul JK


Un bistabil JK se poate obine dintr-un bistabil RS, fcnd S = J Q i
R = K Q , ca in figura 2.28.
Registre
Registrele reprezint o categorie important de circuite secveniale. Un
registru pstreaz temporar o informaie codificat binar i este construit dintrun ansamblu de celule elementare de memorare. Numrul de bii ai informaiei
binare este egal cel al elementelor de memorie i se numete capacitatea
registrului sau lungimea cuvntului registru. Una din soluiile de implementare
const n utilizarea circuitelor bistabile conectate ntre ele ntr-o anumit
topologie. Fiecare bit bi al cuvntului registru este pstrat ntr-un bistabil Ri.
Bitul b0 este cel mai puin semnificativ iar bn-1 este cel mai semnificativ. n afar
de intrrile i ieirile de date, un registru conine anumite terminale pentru
controlul operaiilor ce se efectueaz asupra registrelor. De exemplu, momentul
ncrcrii n paralel a informaiei sau deplasarea acesteia se comand printr-un
semnal de tact, care se regsete la intrrile de ceas ale tuturor bistabilelor.
Asupra registrelor se pot efectua urmtoarele operaii:

ncrcarea i extragerea datelor care pot fi de tip serial sau paralel;


deplasarea datelor stnga sau dreapta;
rotaie stnga sau dreapta;
tergere.

Relativ la operaiile de ncrcare i extragere a datelor, registrele pot fi: cu


ncrcare i extragere paralel, cu ncrcare i extragere serial, ncrcare serial
i extragere paralel i cu ncrcare paralel i extragere serial.
88

Introducere n tiina sistemelor i a calculatoarelor

ncrcarea serial este prezentat n figura 2.29 i se realizeaz prin n


impulsuri de tact. La fiecare impuls de tact RiRi+1 i bkR0. Biii trec n mod
succesiv prin bistabilul R0 i ulterior se deplaseaz spre stnga lsnd locul
biilor mai puin semnificativi. Registrele paralele (fig. 2. 30) se ncarc ntr-un
singur impuls de tact: biRi.
Rn-1

bk

R0

R1

Fig. 2.29. Registru cu ncrcare serial


bn-1

b1

Rn-1

R1

b0
R0

Fig. 2.30. Registru cu ncrcare paralel


Registrele cu ncrcare paralel i extragere serial sunt utilizate la
serializarea cuvintelor sau la afiarea unei imagini dintr-o memorie video.
ncrcarea paralel a unui registru se realizeaz dintr-un alt registru sau de pe o
magistral de date. Registrele cu ncrcare serial i extragere paralel sunt
utilizate la recepia serial a datelor.
Deplasarea datelor dintr-un registru se poate face la stnga sau la dreapta
(fig. 2.31). Deplasarea la stnga seamn cu ncrcarea serial, cu deosebirea c
se realizeaz ntr-un singur tact (pas): la fiecare tact, informaia este deplasat de
la un bistabil la bistabilul urmtor, informaia din Rn-1 se pierde iar n R0 se va
nscrie informaia (0 sau 1) de la intrarea serial.

Rn-1

R1

R0

0,1 R
n-1

0,1

a)

Rn-2

R0

b)

Fig. 2.31. Deplasarea registrelor: a stnga, b - dreapta


n figura 2.32 sunt prezentate operaiile de rotire stnga i dreapta. Rotirea
seamn cu deplasarea cu deosebirea c bitul din poziia extrem nu se pierde i
reintr n registru. Astfel, n cazul rotirii stnga, RiRi-1 i R0Rn-1, iar n cazul
rotirii dreapta , RiRi-1 i R0Rn-1.

89

Algebr logic. Circuite logice

Rn-1

R1

Rn-1

R0

Rn-2

R0

a)
b)
Fig. 2 32. Rotirea registrelor: a stnga, b - dreapta
n calculatoarele numerice registrele sunt folosite ca locaii de memorie
rapid pstrnd date care urmeaz s fie prelucrate. n registre se pot pstra date,
adrese, coduri de instruciune, operanzi, rezultate, informaii de stare.
Numrtoare
Numrtorul este un circuit logic secvenial care numr (contorizeaz)
impulsurile aplicate la intrare. La fiecare impuls aplicat, fiecare bistabil i
modific starea conform conveniei de numrare. Numrtoarele se clasific
funcie de urmtoarele caracteristici:
Modul de codificare a informaiei: binar, binar-zecimal, exces 3, Gray;
Modul de comutare a bistabilelor: sincron (bistabilele ce compun
numrtorul basculeaz simultan funcie de semnalul de tact i de
informaiile aplicate la intrare), asincron (informaia se propag spre
ieire pas cu pas);
Sensul de numrare: direct, invers, reversibil (numr nainte i
napoi), ciclic.
Numrul de stri distincte ale unui numrtor se numete modul de
numrare i se noteaz cu c. Pentru a determina numrul de bistabile, n,
necesare realizrii unui numrtor se utilizeaz relaia 2 n c .
Funcionarea unui numrtor se poate ilustra prin graful strilor n care:
ntre dou noduri exist un singur arc de cerc;
Starea circuitului este reprezentat prin ieirile elementelor bistabile;
Numrtorul primete un semnal de ceas pe baza cruia are loc tranziia
dintr-o stare n alta.
Un numrtor se realizeaz simplu prin utilizarea unor bistabile de tip JK.
Ieirea unui bistabil se conecteaz la intrarea de tact a urmtorului, astfel c
apare o ntrziere succesiv pentru fiecare impuls numrat.

90

Introducere n tiina sistemelor i a calculatoarelor

Capitolul 3
ARHITECTURA UNUI SISTEM DE
CALCUL SECVENIAL
3.1. Schema bloc a unui calculator (modelul von Neumann)
Prin arhitectura unui sistem de calcul se nelege totalitatea dispozitivelor
componente precum i a conexiunilor existente ntre aceste dispozitive.
Arhitectura sistemelor de calcul actuale provine din dezvoltarea unui model
introdus de matematicianul John von Neumann n 1945, numit i model sau
arhitectur von Neumann. Majoritatea calculatoarelor moderne respect acest
model, ceea ce difer fiind doar tehnologia utilizat n realizarea modulelor
componente, modalitile de conectare dintre module i performanele atinse.
Arhitectura von Neumann const din trei tipuri de dispozitive (fig. 3.1):
unitatea central de prelucrare UCP (CPU Central Processing Unit);
memoria;
dispozitive de intrare/ieire I/O.

Memorie
Unitate
central
de
prelucrare

Magistral de adrese
Magistral de date
Magistral de comenzi
Dispozitive
I/O

Fig. 3.1 Schema bloc a unui calculator (model von Neumann)


n esen, cele trei elemente realizeaz urmtoarele:
91

Arhitectura unui sistem de calcul secvenial

- unitatea central de prelucrare, numit i procesor, deine tot controlul i


efectueaz toate calculele;
- memoria stocheaz datele i programele;
- dispozitivele de intrare/ieire asigur legtura cu mediul nconjurtor.
ntre cele trei tipuri de dispozitive circul informaie pe linii de
comunicaie specializate. Liniile de comunicaie sunt materializate fizic printrun set de circuite electrice sau optice. Informaia vehiculat ntre blocurile
structurale ale unui calculator conine date, adrese i semnale de comand sau
stare. Un semnal de stare conine informaii despre starea unui anumit dispozitiv
la un moment dat, de exemplu: ocupat, neocupat, etc. Conform celor trei
categorii de informaie, liniile de comunicaie sunt grupate n aa numitele
magistrale (bus). Prin urmare, n structura calculatorului exist trei tipuri
magistrale: magistrala de adrese, magistrala de date i magistrala de comenzi
sau stri.
Transferul de informaie se realizeaz ntotdeauna ntre un dispozitiv
emitor i unul sau mai multe dispozitive receptoare. n funcie de sensul de
transfer magistralele pot fi: unidirecionale sau bidirecionale. n cazul
magistralelor unidirecionale informaia este transferat ntr-un singur sens, de
regul de la dispozitivul master (stpn) la dispozitivul slave (sclav). Prin
dispozitiv master se nelege un dispozitiv care poate avea iniiativa unui
transfer. Dispozitivul slave doar rspunde la cererile unui dispozitiv master. n
cazul arhitecturii von Neumann exist un singur dispozitiv master, acesta fiind
unitatea central de prelucrare. Memoria i dispozitivele de I/O sunt dispozitive
slave. Magistralele bidirecionale permit schimbul de informaie n ambele
sensuri: de la master la slave (date, comenzi i stri); de la slave la master (date
i stri).
Prin intermediul magistralei de adrese se vehiculeaz informaia ce
permite identificarea i localizarea unor date sau instruciuni aflate fie n
memorie, fie n dispozitivele de intrare/ieire. Aceast magistral este
unidirecional. Prin intermediul magistralei de date se transfer informaiile
propriu-zise: date numerice, alfanumerice, coduri de instruciuni. Este o
magistral bidirecional. Prin intermediul magistralei de comenzi/stri unitatea
central de prelucrare emite semnale de comand i control ctre memorie sau
dispozitivele de intrare/ieire, iar acestea rspund cu semnale de stare.
Magistrala de comenzi/stri este o magistral bidirecional.
Unitatea central de prelucrare poate efectua operaii elementare ca:
- operaii de citire sau scriere de la, respectiv la, memorie sau dispozitivele de
intrare/ieire;
- operaii aritmetice sau operaii logice.
Operaiile elementare executate de UCP sunt codificate sub forma de
instruciuni. O secven de instruciuni care codific un algoritm ce rezolv o
anumit problem constituie un program.
92

Introducere n tiina sistemelor i a calculatoarelor

3.2. Structura funcional a unui sistem de calcul


Cele mai multe sisteme de calcul actuale, din punct de vedere funcional,
conin apte blocuri componente prezentate n figura 3.2.
comenzi de transfer
adrese

UCC

UAL

date

MEM

date

Canale I/O

comenzi

rezultate

instruciuni
instruciuni i
date iniiale

MEM
EXT

DPI/

DP/O

Fig. 3.2 Structura funcional a unui sistem de calcul


Semnificaia blocurilor funcionale este urmtoarea:
DPI/ - dispozitiv periferic de intrare: este un echipament avnd rolul de
introducere a datelor n vederea prelucrri (tastatur, mouse, etc.);
DP/O dispozitiv periferic de ieire: este un echipament de redare a
rezultatelor (display, imprimant):
Canale I/O canale de intrare/ieire care dirijeaz fluxul de date ce se
transfer de la DPI/, respectiv ctre DP/O, i memoria extern;
UAL unitate aritmetic-logic, care efectueaz toate operaiile
aritmetice i logice cu datele ce-i sunt furnizate din memorie. Rezultatul acestor
operaii va fi depus tot n memorie;
MEM memoria intern (principal) este componenta sistemului de
calcul destinat pstrrii datelor i instruciunilor programelor pe parcursul
execuiei acestora;
MEM EXT memoria extern (secundar) este memoria sistemului de
calcul solicitat atunci cnd prelucrrile depesc capacitatea memoriei interne
(MEM) sau pentru arhivarea datelor i programelor;
UCC unitatea de comand i control, care primete instruciunile
existente n memorie, le interpreteaz i, corespunztor interpretrii acestora,
emite comenzi de execuie ctre UAL, adrese ctre memoria intern, comenzi de
transfer ctre dispozitivele de intrare sau ieire DPI/O (prin intermediul
canalelor de intrare/ieire);
93

Arhitectura unui sistem de calcul secvenial

Modul de funcionare i execuie a operaiilor este controlat prin


intermediul informaiilor de stare (semnalelor de stare) schimbate reciproc ntre
componentele sistemului (reprezentate cu linie ntrerupt). Unitatea de comand
i control UCC i unitatea aritmetico-logic UAL, sunt pri componente ale
unitii centrale de prelucrare UCP. Unitatea central de prelucrare mpreun cu
memoria principal (intern) constituie unitatea central UC (uneori pentru
unitatea central de prelucrare se utilizeaz termenul de unitate central).
Modul de funcionare
Datele iniiale ce trebuie prelucrate i programul constituit din instruciuni
se introduc n sistemul de calcul prin intermediul unor dispozitive periferice de
intrare, DPI/. Prin intermediul canalelor de intrare/ieire att datele ct i
instruciunile programului sunt transferate n memoria intern a sistemului de
calcul, sub form binar, n locaii de memorie identificabile prin adresele lor. n
continuare, fiecare instruciune este trimis la UCC, care o interpreteaz i emite
comenzi ctre:
- memorie prin care se va solicit ca anumite date, localizate prin adresele la
care sunt memorate, s fie transferate ctre UAL pentru execuia anumitor
operaii; dup efectuarea operaiei se va specifica adresa din memorie unde se va
depune rezultatul operaiei efectuate de UAL;
- UAL, creia i se solicit execuia operaiei specificate prin instruciune;
- canalele de I/O n vederea prelucrrii altor date i instruciuni de la
dispozitivele periferice de intrare DPI/ sau nceperea transferului rezultatelor din
memorie ctre dispozitivele periferice de ieire.
Dup terminarea execuiei operaiilor solicitate, rezultatele memorate la
anumite adrese din memorie sunt transferate prin intermediul canalelor de I/O
ctre DP/O, n vederea vizualizrii rezultatelor prelucrrii, respectiv ctre
memoria extern, pentru arhivarea datelor i programelor, n scopul reutilizrii
lor.

3.3. Memoria unui sistem de calcul


Memoria este o component de baz a oricrui sistem de calcul,
capacitatea acesteia fiind unul din parametrii importani care caracterizeaz
puterea calculatoarelor. Rolul memoriei este de a pstra datele i instruciunile
prelucrate de unitatea central de prelucrare UCP. n funcie de poziia ocupat
n raport cu UCP, memoria poate fi:
intern sau principal;
extern sau secundar.
Memoria principal mai este denumit i memorie operativ. Memoria
secundar este denumit i memorie auxiliar. Memoria principal conine
informaia n curs de prelucrare: programe n curs de execuie i date cu care
94

Introducere n tiina sistemelor i a calculatoarelor

opereaz programul curent. Ea este direct accesibil unitii centrale de


prelucrare prin intermediul unei magistrale.
Memoria secundar este conectat n sistemul de calcul prin intermediul
unei interfee de intrare/ieire (fig. 3.2) Aceast memorie este folosit pentru
pstrarea informaiilor i ntr-o msur mai mic pentru operaii curente rapide.
Sistemele de operare actuale, utiliznd conceptul de memorie virtual, tind s
tearg diferenele, la nivel logic, dintre cele dou tipuri de memorii. n
categoria memoriilor externe intr: discul magnetic (flexibil i rigid), discul
optic, banda magnetic, etc.
Un model simplu, dar destul de utilizat, al memoriei unui sistem de calcul
este prezentat n figura 3.3.
coninut
adresa

n locaii de meorie

cuvnt memorie
Fig. 3.3 Model de organizare a memoriei unui sistem de calcul
n acest model, memoria este considerat ca o colecie de n locaii de memorie
consecutive. Toi productorii de calculatoare au adoptat standardul locaiei de
memorie de 8 bii (un octet sau byte), aceasta fiind cea mai mic unitate de
memorie adresabil. Octeii pot fi grupai n cuvinte de 16 bii, 32 bii sau 64
bii. Importana cuvntului provine din faptul c majoritatea instruciunilor unei
UCP opereaz cu cuvinte ntregi. Astfel, o unitate central de prelucrare pe 32
respectiv 64 de bii are registre de 32 respectiv 64 de bii.
Trebuie precizat c modelul de organizare liniar a locaiilor de memorie
este destul de simplist. n realitate, memoria unui calculator este structurat pe
mai multe nivele, fiecare nivel avnd anumite caracteristici i fiind implementat
cu tipuri diferite de circuite i dispozitive. Chiar n cadrul aceluiai nivel, de
obicei organizarea nu este liniar (cazul memoriilor de mare capacitate). Totui,
indiferent de dispozitivul sau componenta fizic folosit, informaia este
memorat n binar.

95

Arhitectura unui sistem de calcul secvenial

3.3.1. Memoria intern (principal)


Memoria intern este a fost implementat muli ani cu dispozitive care
foloseau o tehnologie ce se baza pe proprietile magnetice ale fierului, de aceea
se numeau memorii magnetice. Capacitatea i viteza acestor memorii erau
reduse, iar costul destul de ridicat. Astfel de dispozitive au fost tuburile de
memorie i liniile de ntrziere. Ele foloseau ca element de baz un inel de ferit,
ce putea fi orientat magnetic. Odat stabilit orientarea magnetic, era meninut
pn cnd se crea nou cmp diferit. Fluxul magnetic din inelul de ferit era
folosit pentru memorarea unui bit. Valoarea logic memorat era determinat de
orientarea fluxului magnetic. Cele dou fire electrice care strbteau inelul de
ferit permiteau nscrierea unei valori 0 sau 1 i, totodat, meninerea acestei
informaii. Diagrama flux magnetic funcie de intensitatea curentului electric
este o bucl hysteresis. Operaia de citire era distructiv. De aceea, orice
operaie de citire trebuia succedat de o operaie de scriere la aceeai adres de
memorie.
Odat cu apariia i dezvoltarea memoriilor semiconductoare s-a renunat
la aceast tehnologie pentru a implementa memoria principal. Totui, tehnica
de a memora informaie prin orientarea magnetic a unui material feros este
folosit n prezent la dispozitive de tip band sau disc magnetic.
n prezent, memoria intern este implementat cu circuite
semiconductoare integrate, realizate n diferite tehnologii. n cele ce urmeaz se
vor prezenta numai circuitele de memorii semiconductoare. Unele din aceste
circuite sunt circuite combinaionale altele sunt circuite secveniale.
3.3.1.1. Organizarea celulelor de memorie. Operaii realizate
Circuitele de memorie pstreaz informaiile binare n celule elementare
de memorie cu capacitatea de un bit. Celulele elementare de memorie pot fi
realizate n diferite tehnologii care asigur performane bune legate de puterea
consumat, timpul de acces, tipurile de operaii realizate, densitatea de integrare,
etc.
Celulele elementare de memorie sunt grupate n locaii de memorie
(uneori sunt numite celule de memorie). Locaia de memorie reprezint entitatea
la care se poate face acces. Capacitatea unei locaii, la diverse tipuri de memorii,
poate fi 1, 2, 4, sau 8 celule elementare de bit. Identificarea unei locaii de
memorie se face pe baza unei adrese. Adresa corespunztoare unei locaii este
unic. La un moment dat o singur locaie de memorie este activ (selectat).
Toate locaiile de memorie corespunztoare aceluiai dispozitiv (circuit) de
memorie au aceeai lungime. Reamintim c n domeniul calculatoarelor s-a
adoptat standardul locaiei de memorie de 8 bii, adic un octet (byte).
Combinaia binar citit sau nscris n memorie se numete cuvnt memorie.
96

Introducere n tiina sistemelor i a calculatoarelor

Locaiile de memorie pot fi organizate liniar (fig. 3.4a), cnd fiecare linie
conine o locaie, sau matriceal (fig. 3.4b), cnd fiecare element de matrice
conine o locaie.
coloane
adrese
locaii
0 bm-1 b1 b0
1
2

n-1

0
linii

c-1

0
1
2

l-1
locaie bm-1 b1

a)

b0

b)

Fig.3.4 Organizarea locaiilor de memorie: a) liniar, b) matriceal


La organizarea matriceal adresa unei locaii este format din adresa de linie i
adresa de coloan. n general, adresa unei locaii este format prin concatenarea
codurilor binare ale celor dou tipuri de adrese.
O locaie de memorie are o anumit capacitate de stocare dat de numrul
de bii ai locaiei de memorie. Capacitatea total a unui circuit de memorie se
obine nmulind numrul total de locaii de memorie cu capacitatea unei locaii.
Capacitatea unei memorii se poate exprima i n numrul de cuvinte de
memorie: 256 bii (cuvntul este un bit), 16 kilobii sau 16 kb, 32 kilooctei (ko)
sau 32 kB (kiloBytes) (cuvntul este un octet).
Dispozitivele de memorie se folosesc la stocarea sau extragerea de
informaie. Prin urmare, operaiile de baz realizate cu circuitele de memorie
sunt: citirea i scrierea. n plus, exist memorii care pot fi programate i
memorii la care informaia trebuie renscris pentru a nu se pierde, adic trebuie
realizat regenerarea.
Scrierea reprezint operaia prin care, precizndu-se o anumit adres de
locaie, se depune o informaie n memorie. Citirea reprezint operaia prin care
se regsete, pe baza unei adrese, o informaie stocat anterior ntr-o anumit
locaie de memorie. Informaia de adres este binar. Lungimea acestui cuvnt
de adres este funcie de numrul de locaii. Dac notm cu n numrul de locaii
de memorie, atunci lungimea cuvntului de adres (n binar), l , este cel mai mic
numr natural care satisface relaia:
l log 2 n .
De exemplu, dac dispunem de un circuit de memorie cu n = 1024 = 210 locaii
de memorie, atunci lungimea cuvntului de adres este l = log 2 1024 = 10 .
97

Arhitectura unui sistem de calcul secvenial

Avnd n vedere cele artate anterior, putem spune c un circuit de


memorie are, n general, urmtoarele conexiuni (fig. 3.5):

l
linii de adres
p

Memorie

m
linii de date

linii de control
Fig. 3.5 Conexiunile unui circuit de memorie

l linii de adres, prin intermediul crora se specific adresa unei locaii de


memorie;
- m linii de date, prin intermediul crora se realizeaz scrierea (respectiv
citirea) informaiei la (respectiv de la) o anumit adres specificat prin
liniile de adres;
- p linii de control, prin care se precizeaz tipul operaiei ce urmeaz a se
efectua cu circuitul de memorie (citire, scriere, programare, regenerare).
Pentru o organizare liniar a locaiilor de memorie, rezult o capacitate dat de
expresia:
2 l m bii.
Observaie. Liniile de adres i de control sunt unidirecionale, iar cele de date
pot fi unidirecionale (pentru memorii care permit numai operaii de citire) sau
bidirecionale (pentru memorii care permit att operaii de citire ct i de
scriere).
Ca exemplu, prezentm un circuit de memorie cu l = 10 linii de adres i
m = 8 linii de date (1kB), care permite operaii de citire i scriere. Conexiunile
acestui dispozitiv sunt prezentate n figura 3.6.
-

linii de
adres

A0
A1
Memorie
1kB

A9

linii de
control

R /W

D0
D1

linii de
date

D7

CS

Fig. 3.6 Conexiunile unui circuit de memorie de 1kB


98

Introducere n tiina sistemelor i a calculatoarelor

Circuitul devine operant la activarea intrrii de activare a circuitului (a chip-lui),


CS (Chip Select).
Pentru a realiza operaia de citire (Read) se plaseaz pe liniile de adres
A0 ,K, A9 adresa locaiei de memorie. Pe linia notat R / W se va plasa valoarea
logic 1, specificnd dispozitivului de memorie c se dorete o operaie de citire.
Pe baza acestor informaii, dispozitivul de memorie va selecta locaia de
memorie i va depune coninutul ei pe liniile de date D0 ,K, D7 .
n cazul unei operaii de scriere (Write) se depune pe liniile de adres
A0 ,K, A9 , adresa locaiei de memorie n care se va realiza scrierea. Pe linia
R / W se depune 0 logic, iar pe liniile de date, D0 ,K, D7 , se depune informaia
ce se dorete a fi scris.
Circuitele de memorii realizate cu semiconductoare se difereniaz printro serie de proprieti, cum ar fi:
geometria sau modul de organizare a memoriei;
capacitatea memoriei;
timpul de acces la memorie: intervalul de timp dintre momentul n care se
apeleaz la dispozitivul de memorie i momentul n care informaia este
disponibil la ieire; se exprim n microsecunde ( s ) sau nanosecunde ( ns );
ciclul de citire sau scriere: timpul scurs ntre dou citiri sau scrieri
consecutive; se exprim de asemenea n s sau ns - este superior timpului de
acces;
puterea consumat, exprimat n W / bit ;
volatilitatea: pierderea informaiei n timp; la memoriile volatile
informaia se pierde odat cu decuplarea tensiunii de alimentare; volatilitatea
este determinat de tehnologia de realizare;
tehnologia de realizare: bipolare (TTL, TTL Shottky, ECL), MOS,
CMOS, I2L; circuitele bipolare sunt foarte rapide dar au o densitate mic de
integrare. Circuitele MOS sunt mai simple, deci au o densitate de integrare mai
mare, dar au o vitez mai mic dect cele bipolare.
3.3.1.2. Clasificarea circuitelor de memorie

Memoriile se pot clasifica dup mai multe criterii: tipul operaiilor


permise, modul cum pstreaz informaiile nscrise, etc.
n funcie de tipul operaiilor permise exist memorii:
de tip ROM (Read Only Memory): accept doar operaii de citire;
de tip RAM (Random Acces Memory): accept operaii de citire/scriere
aleatoare.

99

Arhitectura unui sistem de calcul secvenial

3.3.1.2.1. Memorii ROM

Memoriile ROM sunt folosite doar pentru citirea informaiei nscris


anterior, informaie ce este rezident permanent n cadrul sistemului. Memoriile
ROM sunt utilizate pentru:
- stocarea secvenelor de instruciuni ce nu se schimb, ca de exemplu secvene
de iniializare;
- memorarea unor tabele de valori;
- stocarea unor informaii privind caracteristicile unui sistem de calcul, etc.
Memoriile ROM genereaz un set fix de cuvinte nscrise anterior atunci
cnd aceste cuvinte sunt adresate. n funcie cum sunt nscrise aceste cuvinte,
eventual terse, exist mai multe tipuri de memorii ROM:
memorii ROM cu mascare sau ROM: nscrierea informaiei se face n
timpul procesului tehnologic (prin folosirea unor mti). Aceste memorii sunt
cele mai rapide.
memorii ROM programabile PROM (Programmable ROM): Acestea
sunt produse fr a fi nscrise, nscrierea informaiilor fiind efectuat de
utilizator. Odat nscrise ele nu mai pot fi modificate. Fa de memoriile ROM,
au un timp de acces mai mare i o densitate de integrare mai mic.
Memorii ROM reprogramabile- EPROM (Erasable PROM): pot fi terse
i reprogramate. Dup cum se efectueaz tergerea, exist dou variante:
a) UV-EPROM: tergerea se efectueaz prin iluminare cu radiaii
ultraviolete sau radiaii X. n acest scop ele sunt prevzute cu un geam
de cuar. Memoriile de acest tip prezint urmtoarele dezavantaje:
pentru tergere trebuie scoase de pe soclu; timpul de tergere este
ridicat (de ordinul minutelor); se terge ntreg coninutul.
b) EEPROM (E2PROM Electric Erasable PROM): tergerea se face pe
cale electric. Se poate terge ntreg coninutul sau numai o parte.
Pentru a fi terse nu mai este necesar scoaterea de pe soclu, iar timpul
de tergere este de ordinul milisecundelor. Aceste memorii permit un
numr mare de cicluri de tergere i scriere (de ordinul a 105).
Structura circuitelor de memorie ROM, PROM i EPROM
Celulele elementare de memorie sunt organizate matriceal, iar locaiile
liniar (figura 3.7). Pe o linie se afl toate celulele elementare (celule de bit) care
alctuiesc un cuvnt de memorie, iar pe o coloan se afl toate celulele
elementare corespunztoare unui bit din toate cuvintele. Celulele de pe o
coloan sunt conectate la o aceeai linie de bit de date. La selectarea unei linii
cuvnt, pe liniile de date se propag coninutul locaiei respective. Prin
programare se poate nscrie ntr-o celul de bit o anumit valoare logic: 0 sau 1.
Iniial sau prin tergere toate celulele de bit sunt aduse la acelai coninut.
100

Introducere n tiina sistemelor i a calculatoarelor

cuvnt 0

A0
A1

cuvnt 1
celul de bit

Dec.
Adr.

Al-1
cuvnt 2l 1
CS
PROG
OE

Logic de
control

Amplificatoare date
Dm-1 Dm-2

D1

D0

Fig. 3.7 Schema bloc a unei memorii de tip ROM


Adresa de pe liniile de adres A0 ,K, Al 1 este decodificat, selectndu-se

cuvntul dorit din cele 2l cuvinte. Selecia circuitului se realizeaz prin


semnalul CS (Chip Select). Validarea datelor la ieire se face prin linia OE
(Output Enable). Datele citite din memorie se obin pe liniile de date
D0 ,K, Dm 1 .
Celula de bit este realizat cu tranzistoare sau diode. Principiul de
funcionare al celulei de memorie de tip ROM const n propagarea pe linia de
bit a unei anumite tensiuni, atta timp ct celula este selectat prin linia de
selecie cuvnt.
n figura 3.8a se prezint structura unei celule ROM realizat cu un
tranzistor MOS, notat n figur cu T .

Vcc

WL
DL

F
DL

a)

b)

WL
T1
DL
T2
c)

Fig. 3.8 Structura de principiu a unei celule de memorie


Cnd se activeaz linia de cuvnt WL , tranzistorul T se deschide i se propag
pe linia de bit DL un potenial cobort ( 0V ), deci 0 logic. n poziiile n care
celula de bit nu conine tranzistorul T , selectarea celulei las linia DL la
potenial ridicat, deci 1 logic.
101

Arhitectura unui sistem de calcul secvenial

n figura 3.8b este reprezentat celula de bit de tip PROM. Programarea


const n arderea fuzibilului F din polisiliciu, cu un curent relativ mare.
Celulele de bit selectate propag pe linia de bit DL un potenial ridicat, dac
fuzibilul F nu a fost ars i las linia pe potenial cobort, dac fuzibilul este
distrus. Celula de bit poate fi programat o singur dat.
Figura 3.8c prezint structura de principiu a unei celule EPROM.
Tranzistorul T2 este elementul programabil. El este programat pe 0 logic prin
injectarea de sarcini electrice pe gril. tergerea se face prin disiparea de
sarcinilor electrice i deci blocarea tranzistorului T2 . Disiparea sarcinilor se
poate face prin iradiere cu raze X sau ultraviolete (UV-EPROM) , sau prin
metode electrice (EEPROM).
3.3.1.2.2. Memorii RAM

Memoriile de tip RAM accept ambele tipuri de operaii: citire i scriere.


n funcie de modul cum pstreaz informaiile nscrise, memoriile RAM pot fi
clasificate n dou tipuri:
statice SRAM (Static RAM);
dinamice DRAM (Dynamic RAM).
Memorii RAM statice SRAM
La aceste circuite de memorie informaia odat nscris se pstreaz atta
timp ct este meninut tensiunea de alimentare. Celulele de bit sunt constituite
din bistabile, realizate n tehnologie bipolar. Prin urmare, memoriile RAM
statice sunt foarte rapide, dar au capaciti mici din cauza densitii de integrare
mai mic (implementarea fizic a unei celule de bit, fiind realizat cu bistabile,
necesit o structur mai complex; reamintim c cel mai simplu bistabil RS
asincron are dou pori NAND (I-NU)). Anticipnd, acest tip de memorii sunt
utilizate ca memorii cache.
Celulele de bit sunt organizate matriceal, la fel ca la memoriile ROM. n
plus apar circuite combinaionale necesare nscrierii informaiei. n figura 3.9
este prezentat un exemplu de structur intern a unui circuit de memorie RAM
static. Memoria are capacitatea de 2l cuvinte (locaii) a cte m bii. Circuitul
are l linii de adres, A0 ,K, Al 1 , care prin decodificare genereaz semnalele
pentru selecia cuvntului de memorie. Selecia circuitului se face prin semnalul
CS . Citirea sau scrierea sunt comandate prin semnalul R / W (1 citire, 0 scriere).
Liniile de date D0 ,K , Dm 1 sunt bidirecionale. Pot exista i circuite cu linii
unidirecionale, la care liniile pentru citirea datelor sunt diferite de liniile pentru
nscrierea lor.

102

Introducere n tiina sistemelor i a calculatoarelor

A0
A1

Dec.
Adr.

Al-1

CS
R /W

0
1

Matrice de celule bit

2l 1
Amplificare
Amplificare
la citire
la scriere
m
m
Circuite de intrare/ieire

Logic de
control

Dm-1 Dm-2

D1

D0

Fig. 3.9 Schema bloc intern a unui circuit de memorie RAM static
Memorii RAM dinamice DRAM
Pentru a realiza o capacitate de stocare mare se simplific structura celulei
elementare. Astfel se obine o densitate de integrare mai mare i un consum de
putere mai mic. Simplitatea duce ns la un dezavantaj: celula de bit pierde
informaia n timp i aceasta trebuie regenerat periodic. Perioada de regenerare
este tipic de 2 ms i nu depinde de capacitatea circuitului.
WL/W
WL/R
T2

T1

T3
C
DL
Fig. 3.10 Celul de bit de memorie dinamic
realizat cu trei tranzistoare MOS
n principiu, celula de bit este un condensator care are dou stri: ncrcat
cu sarcin electric i descrcat. O stare se codific prin 1 logic, iar cealalt prin
0 logic. De fapt, celula de bit are ca suport fizic starea de funcionare a unui
103

Arhitectura unui sistem de calcul secvenial

tranzistor MOS care poate fi comandat de sarcina stocat pe capacitatea de


intrare (gril-surs), aceasta determinnd un potenial de comand ce trebuie
meninut constant. Deoarece condensatorul se descarc n timp pe rezistena de
intrare, care nu este ideal (infinit), este necesar regenerarea (rencrcarea)
sarcinii electrice (refresh), cel puin o dat la 2 ms . n figura 3.10 este
reprezentat o celul de bit cu 3 transistoare MOS.
Organizarea celulelor de bit este matriceal dar, n general, cuvntul de
memorie este de un bit. Pentru obinerea unui cuvnt de date de o anumit
lungime, circuitele de memorie pot fi conectate n serie, iar pentru mrirea
capacitii se conecteaz n paralel. n figura 3.11 este prezentat schema bloc
de principiu a unui circuit de memorie DRAM, la care cuvntul de memorie este
de un bit. La memoriile DRAM, deoarece domeniul de adrese este mare, adresa
unui cuvnt este fragmentat n adres de linie i adres de coloan. Ambele
adrese se aplic la aceleai intrri, fiind validate de semnale diferite: RAS (Row
Address Strob) pentru adresa de linie i CAS (Column Address Strob) pentru
adresa de coloan.

0
RAS

Registru l/2
adres
linie

2l/2-1
0
1
2
M

Dec.
adr.
linie

2l/2-1
A0
A1 l/2
Al/2-1

Registru l/2
adres
coloan

Mux/Dmux
l/2
2 -1:1/1: 2l/2-1
OD

CAS

R /W

ID

3.11 Schema bloc de principiu a unui circuit de memorie DRAM


Memoriile dinamice accept trei tipuri de operaii: citire, scriere i
regenerare. Circuitele de memorie DRAM nu au linia CS (Chip Select), selecia
circuitului realizndu-se prin perechea de semnale RAS i CAS . Regenerarea se
face simultan pentru toate celulele de pe o linie din matrice. Prin urmare, la
regenerare este activat numai semnalul RAS , nu i CAS . De exemplu, n cazul
unei memorii de capacitate 16kb, matricea de celule are 128 linii i 128 coloane.
Adresa de linie sau de coloan are 7 bii. Sunt necesare 128 cicluri de regenerare
care trebuie s se desfoare n 2 ms . Rezult aproximativ 15 s pentru
regenerarea unei linii. n sistemele de calcul regenerarea are loc simultan n
104

Introducere n tiina sistemelor i a calculatoarelor

toate circuitele unitii de memorie. Deci, indiferent de capacitatea memoriei


sistemului de calcul, regenerarea are perioada de 2 ms , egal cu perioada de
regenerare a unui circuit.
La circuitele cu capacitate mai mare dect 16kb, la regenerare matricea de
celule este vzut cu 128 de linii i cu mai mult de 128 coloane. n cazul
operaiilor de citire/scriere matricea este vzut ptrat.
3.3.1.2.3 Alte clasificri

Dup modul cum pstreaz informaiile nscrise, memoriile pot fi


clasificate n:
nevolatile nu i pierd coninutul la decuplarea tensiunii de alimentare.
Dintre aceste memorii amintim: memoriile de tip ROM, memorii RAM CMOS
cu baterie ncorporat. Tehnologia CMOS este o tehnologie MOS (metal-oxidsemiconductor) care folosete cupru. Aceste dispozitive au un consum foarte
mic. Datorit acestui fapt ele sunt conectate tot timpul la o baterie (cnd sistemul
este nchis). Se folosesc n special pentru a memora anumite caracteristici ale
sistemului de calcul.
volatile- i pierd coninutul odat cu oprirea tensiunii de alimentare:
RAM static, RAM dinamic.
n funcie de modul de organizare, memoriile pot fi:
cu acces aleator (ROM, RAM) locaiile pot fi citite sau scrise pe baz
de adres ntr-o ordine oarecare;
cu acces secvenial: memorii FIFO primul intrat primul ieit (se mai
numesc i cozi); stiv LIFO ultimul intrat primul ieit;
cu acces prin coninut (memorii asociative) locaia cutat este
identificat prin coninut.
3.3.1.3 Tehnologii noi de memorii DRAM

Creterea frecvenei de lucru i a vitezei de calcul a noilor generaii de


procesoare a impus gsirea unor soluii pentru reducerea timpului de acces la
memoriile de mare capacitate. Timpul de propagare a semnalului electric prin
submodulele unui circuit de memorie (decodificator, celula elementar de
memorie i amplificator final) are o limit fizic. Prin urmare, pentru
mbuntirea timpului de acces, soluia care rmne este gsirea unor noi
modaliti de organizare intern a circuitelor de memorie, care s elimine
anumite etape ale ciclului de transfer i care favorizeaz accesul paralel. n
continuare prezentm cteva din realizrile ultimilor ani n acest domeniu.
Memorii FPM DRAM (Fast Page Mode DRAM)
Memoriile FPM DRAM, adic memoriile cu acces rapid pe pagin,
asigur un acces mai rapid la datele coninute ntr-o linie a matricei de memorie
105

Arhitectura unui sistem de calcul secvenial

(pagin), atunci cnd transferul este secvenial, de la adrese consecutive. n


regim de citire paginat adresa de linie se specific o singur dat, la nceputul
ciclului de transfer. n continuare se genereaz numai adrese de coloan n limita
unei pagini. n acest fel timpul mediu calculat pe o locaie de memorie scade.
Regimul obinuit de lucru al acestor memorii este 6-3-3-3, ceea ce nseamn c
prima citire dureaz ase uniti de timp, iar urmtoarele numai trei.
Memorii EDO DRAM (Extended Data Output DRAM)
Acestea sunt memorii DRAM cu validarea separat a amplificatorului de
ieire. n cazul memoriilor DRAM clasice circuitul de memorie este selectat prin
activarea intrrilor RAS i CAS . La transferul pe pagin, la fiecare activare i
dezactivare a semnalului CAS ieirile circuitului trec din starea de nalt
impedan n starea selectat i invers. Aceste treceri mresc durata unui ciclu
elementar de transfer. Circuitele de tip EDO RAM sunt prevzute cu o intrare de
selecie separat care permite validarea ieirii circuitului pe toat durata unui
transfer de bloc. n felul acesta se obine o reducere a unui ciclu elementar de
transfer. Reducerea timpului de acces este valabil numai pentru operaiile de
citire ale memoriei, nu i pentru cele de scriere. innd cont c, statistic,
numrul de citiri este de aproximativ 10 ori mai mare dect numrul de scrieri,
eficiena acestui procedeu este ridicat.
Memorii BEDO DRAM (Burst Extended Data Output DRAM)
Sunt memorii EDO DRAM cu regim de lucru n avalan. Regimul de
transfer paginat (al unei linii a matricei de memorie) este mbuntit prin
generarea automat a adreselor de coloan n interiorul circuitului. Dup
nscrierea unei adrese de coloan se genereaz alte trei adrese consecutive.
Astfel se poate realiza accesul la patru locaii de memorie cu o singur adres de
coloan. Regimul de lucru al acestor memorii este de 4-1-1-1, ceea ce nseamn
c prima locaie se citete n patru uniti de timp, iar urmtoarele trei ntr-o
singur unitate.
Memorii SDRAM (Synchronous DRAM)
Aceast clas de memorii cuprinde mai multe variante constructive.
Caracteristica lor comun este regimul de lucru sincron, controlat de un semnal
de tact. Memoriile SDRAM sunt adaptate standardului de magistral sincron
introdus de procesoarele familiei Intel P6 (Pentium Pro, Pentium II i Pentium
III).
Dintre caracteristicile funcionale mai importante putem aminti:
- funcionare sincron cu semnalul de tact al procesorului;
- memoria este organizat pe blocuri care pot s lucreze n paralel;
- favorizeaz accesul n regim de avalan;
- se utilizeaz un nucleu de tip DRAM, dar cu celule de memorie mai rapide;
106

Introducere n tiina sistemelor i a calculatoarelor

- adresarea se poate face n regim pipeline (fiecare etap a procesului de


adresare este realizat de alt submodul al circuitului de memorie);
- este permis lansarea unui nou acces nainte de terminarea celui anterior;
- timpul de acces mediu este de patru ori mai mic n comparaie cu o memorie
DRAM clasic.

CKE
CLK
WE\
CS\
CAS\
RAS\

Bloc
de
control

Adr. A.
adr.

Contor
regenerare
M
U
X

Reg.
adr.
+
dec.

Blocuri
de
memorie

Poart
intrare/
ieire

Ctrl.
blocuri
Ctrl.
reg.
col.

A.
ie.

Date

A.
int.

R.
col.

Fig. 3.12 Schema intern a unei memorii SDRAM (8MB)


n figura 3.12 s-a reprezentat schema intern a unei memorii SDRAM de
8 MB. Pentru notarea negaiei unui semnal s-a folosit simbolul \. Memoria
este organizat pe 4 blocuri, accesibile n mod concurent (paralel). Structura
memoriei favorizeaz ciclurile de citire scriere n regim burst (avalane). Se
poate programa lungimea transferului burst la 1, 2, 4, 8 locaii sau o pagin
ntreag. Accesul ncepe la o adres specificat i continu la adrese succesive
pn la lungimea programat.
Memorii DRDRAM (Direct Rambus DRAM)
Sunt memorii DRAM realizate n tehnologia de magistral Rambus.
Tehnologia DRDRAM a fost dezvoltat de firma Rambus cu scopul de a
107

Arhitectura unui sistem de calcul secvenial

satisface cerinele de vitez i mod de lucru al noilor generaii de procesoare


Intel. Magistrala Rambus asigur o vitez maxim de transfer de 1,6 GB pe
secund la o frecven a semnalului de tact de 800 MHz.
Memorii JEDEC SDRAM (Joint Electronic Device Engineering Council
SDRAM)
JDEC SDRAM reprezint un standard industrial pentru circuite de
memorie DRAM sincrone. Conform acestui standard, memoria este organizat
pe dou blocuri i poate funciona n mai multe regimuri de transfer n avalan
(burst). Pot lucra la frecvena de 83 MHz sau 100 MHz. Alte standarde similare
definite de firma Intel sunt PC66 SDRAM (pentru o magistral sistem de 66
MHz) , PC100 SDRAM, PC133 SDRAM.
Memorii ESDRAM (Enhanced SDRAM)
Sunt memorii SDRAM mbuntite (enhanced). Aceste circuite de
memorie includ o memorie static RAM de mic capacitate, pe lng memoria
SDRAM de mare capacitate. Memoria static joac rolul unei memorii cache de
mare vitez. Transferul de date dintre memoria static i cea dinamic se face
printr-o magistral de mare vitez, cu un numr mare de linii de date. Acest tip
de memorie este una dintre cele mai performante memorii actuale.
3.3.2 Modaliti de organizarea logic a memoriei. Memoria virtual

Din punct de vedere logic, organizarea memoriei unui sistem de calcul


poate fi realizat utiliznd mai multe tehnici: segmentare, paginare, sub form
de stiv.
Segmentarea
Segmentarea presupune divizarea logic a memoriei n zone compacte
denumite segmente de memorie. Acestea pot s aib lungime fix sau variabil.
Segmentele pot s ocupe poziii disjuncte n spaiul de adresare sau se pot
suprapune parial sau total. Adresarea unei locaii de memorie se face prin
specificarea adresei segmentului i a adresei relative n cadrul segmentului (fig.
3.13). Aceast modalitate de adresare ofer urmtoarele avantaje:
- accesul unui program sau a unui task (a unei sarcini) este limitat numai la
locaiile de memorie coninute n segmentele care i-au fost alocate;
- se pot separa zonele de memorie n funcie de destinaia acestora: cod (codul
executabil al instruciunilor), date, stiv;
- specificarea adresei relative n cadrul segmentului necesit un numr mai mic
de bii, ceea ce duce implicit la reducerea lungimii instruciunilor;
- segmentele de program pot fi amplasate n diverse locuri ale spaiului de
adresare sau pot fi relocate (se ajusteaz coninutul cmpurilor de adres
dependente de o adres de baz), cu modificri minore n cadrul programului.
108

Introducere n tiina sistemelor i a calculatoarelor

Adrese Memoria fizic


0
Adresa de segment
Segment

Adresa relativ n
segment

Locaie de
memorie

Adresa maxim

Fig. 3.13 Adresarea unei locaii dintr-un segment


Un segment logic poate s aib mai multe atribute, cum ar fi: adresa de
nceput a segmentului, lungimea, drepturile de acces la segment, etc. Cu ajutorul
atributelor asociate unui segment se controleaz accesul la locaiile segmentului.
Se pot verifica tipurile de operaii permise (citire, citire/scriere), nivelul de
prioritate solicitat, depirea limitei maxime a segmentului.
Implementarea efectiv a segmentrii depinde de suportul hardware oferit
de unitatea central de prelucrare (procesor). n capitolul 4 se va prezenta modul
de soluionare al segmentrii la procesoarele familiei Intel x86. Amplasarea
segmentelor n spaiul de adresare disponibil i ncrcarea acestora n memoria
principal este realizat de sistemul de operare.
Paginarea
Scopul principal al paginrii este de a extinde memoria intern a unui
sistem de calcul peste memoria extern. n acest scop att memoria intern ct i
cea extern este divizat logic n blocuri de lungime fix, numite pagini.
Concret, memoria intern este divizat n pagini de memorie de o anumit
lungime. Fiecare program ce urmeaz a fi ncrcat n memoria intern din
memoria extern, este fragmentat ntr-un numr de pagini de program (pagini)
de dimensiunea paginii de memorie intern. n timpul execuiei programului
paginile sunt ncrcate n memoria intern numai dac se solicit informaii
coninute n acestea. Adresa absolut a unei locaii de memorie ntr-o pagin se
calculeaz pe baza adresei absolute a paginii de memorie i a adresei relative n
pagina de memorie. n acest fel spaiul efectiv necesar pentru execuia unui
program este mult mai mic.
Paginarea este realizat de sistemul de operare i mecanismul respectiv
este transparent pentru utilizator. O influen deosebit asupra eficienei
paginrii o are dimensiunea paginii de memorie. ncrcarea paginii n memoria
intern necesit un anumit timp, denumit timp de penalizare. Timpul de
109

Arhitectura unui sistem de calcul secvenial

penalizare depinde de dimensiunea paginii i de viteza de transfer ntre memoria


intern i memoria extern (disc). Dac dimensiunea paginii este mic, timpul
de penalizare este mic dar vor fi mai multe solicitri i deci sunt necesare tabele
de dimensiuni mai mari pentru gestiunea paginilor (tabele care pstreaz
corespondena dintre paginile unui program i paginile de memorie intern n
care sunt ncrcate). Dac dimensiunea este mare, n comparaie cu dimensiunea
memoriei interne, aceasta poate duce la nlocuirea repetat a paginilor, ceea ce
scade eficiena implementrii.
Organizarea sub form de stiv
n acest tip de organizare accesul nu se mai realizeaz dup adres ci dup
o relaie de ordine. n acest scop se folosete o informaie suplimentar care
precizeaz tot timpul vrful stivei. Exist dou modaliti de organizare a
memoriei sub form de stiv, modaliti ce corespund la dou relaii de ordine:
stive de tip FIFO (First In First Out primul intrat, primul ieit);
stive de tip LIFO (Last In First Out ultimul intrat, primul ieit).
Stivele de tip FIFO sunt cunoscute sub numele de cozi. n organizarea
memoriei sub form de coad, prima informaie venit este prima extras.
Informaia este introdus n coad pe la un capt iar extragerea este fcut pe la
cellalt capt (fig. 3.14).
extragere

depunere
ultima informaie
depus

prima informaie
extras

Fig. 3.14 Organizarea sub form de coad FIFO


Stivele de tip LIFO sunt denumite simplu stive. Relaia de ordine care
determin modul de acces la informaia dintr-o stiv este de tip LIFO, deci
ultima informaie depus n stiv este prima extras (procesat sau servit).
Organizarea sub form de stiv presupune implementarea a dou operaii:
- o operaie de depunere a unei informaii n stiv, denumit PUSH;
- o operaie de extragere a unei informaii din stiv, denumit POP.
Stiva poate fi organizat n memoria fizic astfel nct dimensiunea ei s creasc
de la adrese mari spre adrese mici (fig.3.15) sau invers. De obicei, mecanismul
de acces la stiv este implementat prin hardware, existnd un registru n UCP
care conine adresa ultimei locaii ocupate n stiv.

110

Introducere n tiina sistemelor i a calculatoarelor

Memoria fizic
POP

PUSH

adrese mici
vrful stivei
stiva
baza stivei
adrese mari
Fig. 3.15 Organizarea sub form de stiv
Memoria virtual
Memoria virtual este un concept arhitectural prin care memoria intern
este extins peste spaiul de adresare al memoriei externe. Memoria virtual se
poate implementa prin segmentare sau paginare. Aceste tehnici pot fi combinate
pentru extinderea virtual a spaiului de adresare. Mecanismul memoriei virtuale
este folosit mai ales n cazul sistemelor de operare multi-tasking i multiutilizator (de ex. Windows, Unix, etc.). Reamintim c n cazul ambelor tehnici
(segmentare sau paginare) memoria intern i extern este divizat n blocuri. La
execuia unui program se ncarc n memoria intern numai acele blocuri care
sunt necesare pentru execuie. Astfel spaiul ocupat efectiv de un program n
memoria intern este mult mai mic dect dimensiunile acestuia. n acest fel se
pot utiliza medii de programare a cror dimensiune depete cu mult
dimensiunea fizic a memoriei interne. De asemenea, pot fi ncrcate n
memoria intern mai multe programe sau taskuri.
3.3.3 Ierarhii de memorii

Memoria unui sistem de calcul trebuie s satisfac mai multe cerine,


adesea contradictorii: capacitate mare, timp de acces mic, cost rezonabil i
dimensiuni reduse. Aceste cerine nu pot fi ndeplinite simultan de un singur tip
de memorie. Cu tehnologia actual se pot realiza memorii de mare vitez dar de
capacitate mic (RAM static), memorii de capacitate mare i de vitez medie
(variante de memorii DRAM) i memorii de capacitate foarte mare dar cu timp
de acces mare (memorii externe pe suport magnetic sau optic).
111

Arhitectura unui sistem de calcul secvenial

n sistemele de calcul performante spaiul de memorare este structurat


ierarhic pe mai multe nivele, fiecare nivel avnd o capacitate mai mare dect
predecesorul, dar i un timp de acces la informaie mai mare. n figura 3.16 este
reprezentat organizarea ierarhic a memorie unui sistem de calcul.

Registre
Crete viteza
i costul

Memoria cache
Memoria principal

Crete timpul
de acces i
capacitatea

Memoria secundar
Fig. 3.16 Structura ierarhic a memoriei unui calculator
n vrful ierarhiei se situeaz registrele generale ale procesorului (UCP),
dup care urmeaz memoria cache, memoria principal i memoria secundar.
Memoria cache
Memoria cache este o memorie RAM rapid de mic capacitate amplasat
ntre procesor i memoria principal (operativ), n scopul mbuntirii
performanelor unui sistem de calcul. Aceast memorie mai este numit i
memorie intermediar. Marea majoritate a operaiilor executate de procesor sunt
cu memoria intern, care este o memorie de capacitate mare dar cu o vitez de
lucru mai mic dect a procesorului. Pentru a nltura o parte din dezavantajele
acestui neajuns se utilizeaz o memorie foarte rapid, dar de capacitate mic, ca
un intermediar ntre procesor i memoria intern (fig. 3.17).
Din punct de vedere fizic, memoria cache poate fi plasat n interiorul sau
exteriorul procesorului. Se urmrete ca marea majoritate a operaiilor s fie
efectuate cu memoria cache. Prin urmare, n memoria cache sunt pstrate
instruciunile i datele care au cea mai mare probabilitate de a fi utilizate n
viitorul apropiat. n acest scop exist un dispozitiv care, pe baza unor algoritmi
de predicie, va extrage informaia din memoria intern i o va depune n
memoria cache. Dac informaia cutat nu este n memoria cache, atunci va fi
cutat n memoria intern.
Algoritmii de predicie pe baza crora informaia din memoria intern este
adus n memoria cache pot fi de dou feluri:
- algoritmi care se bazeaz pe principiul localizrii: se ncarc n memoria
cache informaia care se afl n jurul adresei la care s-a fcut ultimul acces;
112

Introducere n tiina sistemelor i a calculatoarelor

- algoritmi care se bazeaz pe principiul frecvenei acceselor: se aduce n


memoria cache informaia care este accesat mai des.

Procesor
(UCP)

Memoria
principal

Magistral
sistem

Memoria
cache
Fig. 3.17 Plasarea memoriei cache

O alt problem care trebuie rezolvat atunci cnd se lucreaz cu memoria


cache este cea a consistenei informaiei, adic trebuie ca informaia ce se
gsete n memoria cache s fie identic cu cea din memoria intern. Prin
urmare, trebuie reactualizat informaia din memoria cache.
O caracteristic important o constituie plasarea informaiei n memoria
cache. Astfel exist dou variante:
- cu memorie cache unic: datele i instruciunile folosesc aeeai memorie
cache;
- cu memorie cache divizat: instruciunile sunt ntr-o memorie cache i datele
n alta.
n cazul procesoarelor Intel memoria cache este organizat pe dou
nivele: L1 i L2. Nivelul L1, cel mai apropiat de procesor, este subdivizat n
dou blocuri de cte 16 koctei, unul pentru pstrarea instruciunilor i unul
pentru pstrarea datelor. Nivelul L2 este de dimensiune mai mare (256-512
koctei) i pstreaz att instruciuni ct i date. La ultimele variante de
procesoare memoria cache i unitatea de management a acestei memorii sunt
incluse n structura procesorului.
3.3.4 Memoria secundar

Memoria secundar este realizat n dispozitive periferice de mare vitez.


Totui, viteza de transfer a datelor este mult mai mic dect viteza de lucru a
memoriei principale. Dispozitivele de memorare utilizate pentru memoria
extern folosesc dou tehnologii: cea magnetic i cea optic. n prima categorie
intr discul magnetic i banda magnetic. A doua categorie include discurile
optice. Avantajul utilizrii memoriei secundare const n capacitatea foarte mare
sau nelimitat a acesteia. De exemplu capacitatea memoriei realizat pe band
113

Arhitectura unui sistem de calcul secvenial

magnetic depinde de dimensiunea arhivei de benzi (numrul benzilor


magnetice utilizate ca suport de memorare).
Discurile magnetice i banda magnetic folosesc acelai principiu de
nregistrare a informaiei ca i cel utilizat pentru a nregistra muzic pe band
magnetic. Spre deosebire de sunet, care este un semnal analogic, informaia din
calculator este informaie digital (bii 0 i 1). Pentru nregistrarea informaiei
digitale se utilizeaz un material sensibil magnetic, de regul un oxid de fier.
Materialul sensibil magnetic se depune pe o suprafa, tratat ca fiind o matrice
de mici zone sau puncte, ce pot fi sau nu magnetizate. Fiecare punct corespunde
unui bit de informaie. Pentru a nregistra informaia, se utilizeaz un dispozitiv
special, numit cap de citire/scriere, prin care circul curent electric. nregistrarea
informaiei binare se realizeaz prin variaia curentului n capul de nregistrare.
n cazul memoriilor optice, scrierea se realizeaz, n principiu, prin
arderea unor zone din materialul ce acoper suprafaa cu ajutorul unui fascicul
laser puternic. Citirea se bazeaz pe reflexia unei raze laser incident pe
suprafa. Reflexia este difuz n zonele arse anterior, iar n caz contrar este
puternic.
3.3.4.1 Banda magnetic

A fost primul dispozitiv folosit ca memorie secundar. Organizarea


informaiei pe band magnetic este prezentat n figura 3.18.
capete scriere/citire
pista 1

pista 9

cadru

1
2
3
4
5
6
7
8
9

gap

nregistrare fizic

Fig. 3.18 Organizarea informaiei pe band magnetic


Informaia coninut ntr-un cadru are 9 bii, din care 8 constituie
informai util, iar cel de-al noulea bit este un bit redundant bitul de paritate.
Scrierea i citirea informaiei este realizat de ctre nou capete de citire/scriere.
Mai multe cadre grupate la un loc formeaz o nregistrare fizic. nregistrrile
114

Introducere n tiina sistemelor i a calculatoarelor

fizice sunt separate ntre ele printr-un spaiu numit gap, care are lungime
constant. Densitatea de nregistrare se refer la numrul de cadre pe unitatea de
msur inch (1 inch = 2,54 cm) i este exprimat n octei/inch bpi (bytes per
inch). Valori tipice ale densitii de nregistrare sunt 1600 bpi, 6250 bpi, 12500
bpi.
Unitatea de band magnetic este un dispozitiv periferic cu acces
secvenial. Dac banda este poziionat la nceput, pentru a citi nregistrarea cu
numrul de ordine n , capetele de citire/scriere trebuie s parcurg toate cele
n 1 nregistrri de la nceputul benzii pn n poziia n . Din acest motiv banda
magnetic este un dispozitiv lent, dar cu o mare capacitate de nregistrare i o
bun fiabilitate. Se utilizeaz n special pentru pstrarea unor arhive de date (de
exemplu, salvrile de date, care se fac periodic n sistemele informatice).
3.3.4.2 Discul magnetic

Materialul sensibil magnetic, care memoreaz informaia binar, se


depune, de regul, pe ambele fee ale unui suport n form de disc (platan), din
mylar sau din aluminiu. n prezent, diametrul unui platan variaz ntre 3 cm i
12 cm. Informaia este nregistrat pe cercuri concentrice, numite piste (track).
La ora actual lrgimea unei piste variaz ntre 5 i 10 microni. Lrgimea uni bit
de pe o pist este ntre 0.1 i 0.2 microni. Pistele sunt mprite n sectoare de
lungime fix, de obicei de cte 512 octei de date, precedai de un preambul
(identificator) care permite capului de citire/scriere s identifice sectorul i s se
sincronizeze nainte de citire sau scriere. Pe lng date i identificator,
informaia din sector permite detectarea erorilor (de exemplu, memornd CRC).
Sectoarele consecutive sunt separate printr-un mic spaiu numit gap (intersector
gap). Aceast geometrie este activ n urma formatrii discului. Organizarea
informaiei pe disc este prezentat n figura 3.19.
Discul poate conine mai multe platane, dispuse pe acelai ax vertical (fig.
3.20). n acest caz, discul are un bra, prevzut cu cte un cap de citire/scriere
pentru fiecare fa a platanelor. Braul antreneaz toate capetele n aceeai
micare. Pistele care au aceeai poziie fa de axul discului (pistele aliniate
vertical) alctuiesc un cilindru. Un disc cu n platane are 2n fee i deci 2n
piste pe cilindru.
Platanele formeaz un aa numit hard-disk, disc-dur sau disc-rigid. Cel
mai des utilizat model de disc este discul Winchester, la care platanele sunt
ncapsulate. Prin rotaia platanelor se formeaz o pern de aer ntre capetele de
citire/scriere i suprafaa magnetic, astfel nct citirea i scrierea se face fr
contact direct cu suprafaa discului. Capacitatea acestor discuri este de ordinul
GB (1 GB = 109 octei).

115

Arhitectura unui sistem de calcul secvenial

sector
CRC

date
gap

preambul
CRC

cap de
citire/scriere

date
sector

sensul de rotaie

3.19. Organizarea informaiei pe o pist a discului

direcia de
micare
cilindru

Fig. 3.20 Construcia unui disc rigid


Operaia de transfer de date ntre memoria principal i disc se realizeaz
printr-o secven de cod, care constituie una din funciile nucleului sistemului de
operare. Pentru un transfer, codul respectiv trebuie s furnizeze urmtoarele
informaii:
- cilindrul i faa care mpreun determin n mod unic pista;
- numrul sectorului;
- numrul de cuvinte care se transfer;
- adresa din memoria principal unde/de unde se transfer informaia;
116

Introducere n tiina sistemelor i a calculatoarelor

- sensul transferului.
Timpul n care capetele de citire/scriere ajung la o pist se numete timp
de cutare. Timpii medii de cutare (ntre piste alese aleator) se situeaz n
intervalul 5-15 msec, iar cutrile ntre piste adiacente dureaz sub 1 msec.
Cutarea unui sector pe pista curent se numete ntrzierea de rotaie. Acest
timp poate varia ntre 0 (dac sectorul este chiar n dreptul capului) i timpul
necesar unei rotaii complete (dac sectorul tocmai a trecut prin dreptul capului
de citire/scriere). Majoritatea discurilor se rotesc la 3600, 5400 sau 7200
rotaii/minut. Timpul de acces la disc este dat de timpul de cutare, ntrzierea
de rotaie i timpul de transfer de date.
Pentru mrirea vitezei de citire sau scriere a datelor, discurile magnetice
au o memorie rapid (de exemplu 2Mb). Aceast memorie este similar cu
memoria cache (de altfel se mai numete i memorie cache a hard discului).
Discul flexibil sau discheta este constituit dintr-un singur platan de diferite
dimensiuni. Suportul informaiei este un disc flexibil realizat din mylar i
acoperit cu un material magnetic. Spre deosebire de discul dur, capetele de
citire/scriere sunt n contact permanent cu suprafaa discului, n timpul
operaiilor de citire sau scriere. Scrierea i citirea prin contact direct permite o
densitate mai mare de nregistrare, dar viteze de transfer mici, fiabilitate redus
i un timp de exploatare mai scurt.
3.3.4.3 Discul optic

Discurile optice reprezint o tehnologie nou fiind tot mai mult utilizate
ca memorie extern n ultimul timp. Aceste memorii folosesc pentru citirea i
scrierea informaiei fenomene electro-optice. Avantajul este acela al unei
capaciti de stocare de 102 pn la 104 ori mai mare dect capacitatea
suporturilor magnetice.
Dintre dispozitivele existente care folosesc aceste principiu amintim:
discurile CD-ROM, discurile CD-R, discurile CD-RW i discurile DVD.
Discurile CD-ROM (Compact Disc Read Only Memory) sunt discuri pe
care informaia este nregistrat n momentul fabricaiei lor, accesul la
informaie fiind doar pentru citire. Principiul de construcie este relativ simplu.
Cu ajutorul unui fascicul laser se fac guri (caviti) mici (pits), al cror
diametru este sub 1 micron, ntr-un disc matri. Zonele nearse dintre caviti se
numesc soluri (lands). Conform matriei se fac apoi copii din plastic. Discurile
din plastic (policarburi) sunt acoperite cu un strat subire din aluminiu
reflectorizant, acoperit cu un lac protector (vezi structura unui CD-R, fig. 3.22).
Citirea se face tot cu ajutorul unui fascicul laser, dar de putere mai mic. Un
detector msoar energia fasciculului laser reflectat, care este diferit dup cum
fasciculul laser este trimis pe o cavitate sau nu.
Cavitile i solurile sunt dispuse ntr-o spiral continu care pornete din
centrul discului (fig. 3.21). Viteza de citire a informaiei trebuie meninut
117

Arhitectura unui sistem de calcul secvenial

constant. Prin urmare, viteza de rotaie a CD-ului trebuie redus continuu odat
cu deplasarea capului de citire dinspre interior spre exterior.

spiral pe care
sunt nregistrate
datele

cavitate
sol (zon
nears)

bloc de
date

Fig. 3.21 Structura nregistrrii pe un CD


Codificarea informaiei utilizeaz coduri care permit corectarea erorilor,
cum ar fi codul Reed-Solomon, asemntor codului Hamming. Informaia este
organizat n locuri, fiecare bloc coninnd mai muli octei (obinuit 2048
octei). Un octet este codificat prin 14 bii. Formatul standard al unui CD-ROM
impune citirea a 75 blocuri de date pe secund. n acest caz rata de transfer este
de 75 2048 = 150 KB/s. Aceast valoare reprezint viteza 1x pentru un CDROM. Capacitile obinuite sunt de 650 MB sau 700 MB.
Discurile CD-R (CD Read) sunt CD-ROM-uri inscripionabile de
utilizator. La aceste discuri, ntre stratul de policarburi i stratul reflectorizant
(aluminiu sau aur) se adaug un strat de vopsea special (fig. 3.22). De obicei se
folosete ca vopsea cianina (culoare verde) i ftalocianina (culoare portocalie).
n starea iniial, stratul de vopsea este transparent. Cu ajutorul unui laser, la o
putere mare (circa 8-16 mW), este lovit un punct de vopsea i ca urmare acesta
se nclzete schimbndu-i structura molecular i devenind opac. La citire se
trimite pe suprafaa discului un fascicul laser de putere mai mic. Un
fotodetector sesizeaz diferena dintre zonele ntunecate (arse), n care vopseaua
a fost atins, i zonele transparente, n care vopseaua este intact. Aceast
diferen este interpretat ca i diferena dintre soluri i caviti la CD-urile
simple.

118

Introducere n tiina sistemelor i a calculatoarelor

strat de lac protector

etichet

strat reflectorizant
zon ntunecat ars de
laser n stratul de vopsea

1.2 mm

strat policarbonat
lentile
fotodetector

prism
diod cu laser n
infrarou

Fig. 3.22 Seciune transversal printr-un CD-ROM i modul de citire


Discurile CD-RW (CD-ReWritable) sunt CD-uri reinscripionabile. Ele
folosesc acelai suport ca i CD-R-urile, dar n loc de stratul de vopsea folosesc
un aliaj de argint, indium, antimoniu i teluriu pentru fabricarea startului
reflectorizant. Acest aliaj are dou stri stabile (una cristalin iar cealalt
amorf) cu reflectiviti diferite. Dispozitivele laser au n acest caz trei puteri
diferite. Puterea nalt se folosete pentru topirea aliajului, transformndu-l din
starea cristalin, puternic reflectorizant, n starea amorf, cu reflectivitate
sczut i care reprezint o cavitate. La o putere medie a laserului, aliajul trece
din starea amorf n starea cristalin, redevenind solid. Citirea datelor este
realizat la o putere joas a laserului.
Discurile DVD au aproape aceeai structur ca i CD-urile, diferena
constnd n:
- caviti mai mici (0.4 microni fa de 0.8 microni pentru CD);
- spirala mai strns (0.74 microni ntre piste fa de 1.6 microni pentru CD);
- un laser rou (la 0.65 microni fa de 0.78 microni pentru CD).
Ca rezultat al acestor schimbri, capacitatea a ajuns la 4.7 GB. n prezent ezist
urmtoarele tipuri de DVD-uri:
- singur fa, un singur strat 4.7 GB;
- singur fa, dou straturi 8.5 GB;
- dou fee, un singur strat 9.4 GB;
- dou fee, dou straturi 17 GB.

119

Arhitectura unui sistem de calcul secvenial

3.4 Unitatea central de prelucrare


Unitatea central de prelucrare UCP (sau procesorul) reprezint nucleul
unui calculator. Rolul ei este de a executa un program din memoria intern, care
prelucreaz un set de date tot din memoria intern. Programul i datele sunt
ncrcate n memoria principal din memoria extern (secundar). Reamintim c
un program este constituit dintr-o secven de instruciuni. Instruciunile
reprezint coduri numerice ale operaiilor ce trebuie s le efectueze unitatea
central de prelucrare. Fiecare instruciune este adus n UCP i executat. Apoi
se trece la instruciunea urmtoare i aa mai departe.
Unitatea central de prelucrare cuprinde trei componente principale
(fig.3.23):
blocul registrelor generale (RG);
unitatea aritmetic-logic (UAL);
unitatea de comand i control (UCC).

UCP
GT

GF

RI

DI + BCC

NP
RS

UCC

UAL

RG

A
R1

RN

R2

Magistrala sistem
Fig. 3.23 Structura unitii centrale de prelucrare (UCP)

120

Introducere n tiina sistemelor i a calculatoarelor

3.4.1 Blocul registrelor generale

Registrele generale (RG) au rolul unor locaii de memorie rapid n care


se pstreaz temporar diferite informaii: date, rezultate intermediare, operanzi,
etc. Registrele pot efectua operaii elementare, cum ar fi: tergere, deplasare,
rotaie, ncrcare paralel sau serial. Exist registre care pot efectua operaii de
incrementare decrementare, completnd funcia de registru cu cea de numrtor.
n registrele generale se depun datele citite din memoria principal sau se depun
datele care urmeaz s se transfere ntr-o locaie din memoria principal. n
cazul operaiilor de intrare/ieire n RG se nscriu datele care se citesc sau se
trimit ctre un dispozitiv periferic prin intermediul interfeelor de intrare/ieire.
Numrul i rolul RG difer la diverse tipuri de uniti centrale de prelucrare, n
funcie de acestea UCP-urile fiind mai performante sau mai puin performante.
n principiu, exist dou moduri de organizare a registrelor generale (fig.
3.24):
a) registre conectate direct ntre ele;
b) registre conectate prin magistrala intern a UCP.

R1

R2

R3

R1

R2

R3

R4

R5

R6

R4

R5

R6

a)

b)

Fig. 3.24 a) conectare direct ntre registre, b) conectare prin magistral


Primul tip de organizare permite transferul simultan al datelor ntre mai multe
registre, n timp ce al doilea tip permite ca la un moment dat s se poat realiza
un singur transfer, transfer ce duce la ocuparea magistralei interne de date.
n mod uzual, n cadrul registrelor generale exist un registru numit
acumulator (A), specializat n operaii ale unitii aritmetico-logice. Acest
registru are rolul de a stoca unul din operanzii implicai n execuia unei operaii
aritmetico-logice i tot n el este stocat rezultatul operaiei.
La fel ca i locaiile de memorie, registrele generale sunt identificate n
codul instruciunii printr-un cod de adres registru. Spre deosebire de locaiile
din memoria principal, unde la un moment dat se permite accesul la o singur
locaie, registrele generale pot fi accesate simultan.
121

Arhitectura unui sistem de calcul secvenial

3.4.2 Unitatea aritmetic-logic

Unitatea aritmetic-logic UAL execut operaiile logice i aritmetice


specificate de ctre instruciunile unui program. O UAL efectueaz operaii
logice ca: negaie, I, SAU, etc. i operaiile aritmetice ca: adunare, scdere,
nmulire, mprire, complement fa de 1, fa de 2, etc. n general, o UAL
primete doi operanzi i un cod de operaie (care selecteaz operaia efectuat
asupra operanzilor) i furnizeaz un rezultat, nsoit, eventual, de informaii
suplimentare asupra acestuia (condiii). Prin urmare, o UAL este un circuit
combinaional care se interpune ntre dou sau mai multe registre i modific
corespunztor datele n timpul transferului. Schema bloc de principiu a unei
uniti aritmetice-logice este prezentat n figura 3.25. n aceast schem nu s-a
mai figurat intrarea prin care se specific operaia efectuat.

R
n

A
n

UAL

Fig. 3.25 Schema bloc a unei uniti aritmetico-logice


Exist tipuri de structuri n care registrul R este un registru special numit
registru temporar sau un registru general oarecare. De asemenea, registrul n
care se depune rezultatul poate fi implicit registrul A (acumulator) sau oricare alt
registru general.
Algoritmii de nmulire i mprire se implementeaz folosind secvene
de adunri i deplasri succesive.
Exemplu: Considerm numrul natural zecimal N = 13 pe care dorim s-l
nmulim cu numrul zecimal 2. Considerm dimensiunea reprezentrii de 8 bii
i atunci numrul N se reprezint n binar prin N = 00001101 . Dac efectum
deplasarea spre stnga cu o poziie obinem 00011010 = 2610 , deci chiar
rezultatul nmulirii cu 2.

Prin urmare, o nmulire cu 2 k nseamn o deplasare spre stnga, n binar, cu k


poziii, iar o mprire ntreag cu 2 k nseamn o deplasare spre dreapta cu k
122

Introducere n tiina sistemelor i a calculatoarelor

poziii. Dac nmulitorul nu este o putere a lui 2 se efectueaz i adunri


repetate. De exemplu, pentru efectuarea operaiei 13 3 se procedeaz astfel:
13 3 = 13 (2 + 1) = 13 2 + 13 ,
adic se face o deplasare spre stnga cu o poziie i apoi o adunare cu
denmulitul.
Scderea se efectueaz ca o adunare cu complementul scztorului.
Rezult c operaia aritmetic de baz efectuat de UAL este adunarea. Prin
urmare, elementul de baz al unei UAL este un sumator. O variant simpl de
UAL conine un set de sumatoare elementare conectate n paralel (figura 3.26).
Numrul de sumatoare elementare este egal cu numrul de bii ai cuvntului de
date, sau capacitatea registrelor generale n .
Bn-1
Tn-1

An-1

n 1

Tn-2

B1
T1

A1

B0
T0

A0

Sn-1
S1
S0
Fig. 3.26 Schema bloc a unui sumator paralel pe n bii

Pentru operaiile logice sumatoarele elementare sunt nlocuite cu circuite


care realizeaz operaia SAU, NU sau I. Complementarea fa de 1 se face
printr-o simpl inversare a biilor operandului, iar complementarea fa de 2 este
o complementare fa de 1 urmat de o adunare cu 1.
3.4.3 Unitatea de comand i control

Unitatea de comand i control UCC aduce instruciunile din memoria


principal i determin tipul lor. O instruciune reprezint o codificare a unei
succesiuni de operaii elementare, numite i microoperaii. Semnalele care
comand aceste operaii elementare sunt referite ca mirocomenzi.
Microcomenzile sunt trimise elementelor de execuie din structura
calculatorului: registre, UAL, memorie, porturi, etc., care realizeaz operaii
elementare cum ar fi: nscriere, validare ieire, tergere, deplasare stnga, etc. O
instruciune este de fapt, o succesiune de microoperaii, care compun execuia
instruciunii. Toate microoperaiile care se execut n acelai timp definesc o
stare n execuia unei instruciuni, numit i faz. Unitatea de comand i control
descompune fiecare instruciune ntr-o succesiune de faze.
Pentru a putea realiza funciile descrise anterior, unitatea de comand i
control cuprinde urmtoarele componente:
123

Arhitectura unui sistem de calcul secvenial

Registrul de instruciuni (RI), n care se pstreaz codul instruciunii ce a


fost extras din memorie i urmeaz a fi decodificat, adic codul instruciunii n
curs de execuie.
Registrul numrtor de program (NP) (sau PC - Program Counter) - este
un registru numrtor de adrese care conine adresa instruciunii curente. Un
program ce trebuie executat (o succesiune de instruciuni) se afl nscris n
locaii de memorie succesive. Adresa locaiei ce conine codul instruciunii care
a fost adus din memorie este nscris n registrul NP. Coninutul registrului
numrtor de adrese este automat incrementat cu o unitate dup ce codul
instruciunii a fost adus din memorie n RI, pregtindu-se astfel instruciunea
urmtoare. n general, registrul NP este un numrtor cu prescriere. Posibilitatea
de prescriere a unei adrese permite existena salturilor n citirea locaiilor de
memorie. Salturile, ntr-un program, sunt necesare n urma operaiilor de
decizie. Pentru iniierea unui program trebuie ncrcat NP cu adresa de nceput
corespunztoare. De exemplu, prin comanda RESET, registrul NP este ncrcat
cu o adres fixat de productor, de obicei 0.
Registrul de stare (RS) este format dintr-un set de bistabile de stare care
conin informaii legate de modul de execuie al instruciunilor (de exemplu
execuia pas cu pas, validarea ntreruperilor), de rezultatele operaiilor aritmetice
i logice (de exemplu depirea capacitii de reprezentare, transport din rangul
superior) sau informaii legate de coninutul anumitor registre (coninutul unui
registru este par sau impar, coninutul este zero, etc.). Biii din registrul de stare
mai sunt numii indicatori de condiii sau fanioane (flags), iar registrul mai este
referit ca registrul indicatorilor de condiii. Orice unitate central de prelucrare
trebuie s conin cel puin urmtorii trei indicatori de condiie:
- C - Carry (transport): se poziioneaz (este setat) C = 1, dac n urma
execuiei unei instruciuni a aprut un transport de la rangul cel mai
semnificativ sau s-a fcut un mprumut la acest rang, i este resetat
C = 0 , dac nu a aprut transport;
- O - Overflow (depire): este setat O = 1 , dac a aprut o depire a
capacitii de reprezentare i resetat O = 0 , dac rezultatul este corect;
- Z - Zero (zero): este poziionat Z = 1 , dac rezultatul este nul, i Z = 0 ,
dac rezultatul este diferit de zero.
Existena registrului de stare la un procesor permite ca setul de
instruciuni s conin i instruciuni condiionate. O instruciune condiionat se
execut sau nu n funcie de valoarea unui anumit fanion.
Decodificatorul de instruciuni (DI) este un circuit care realizeaz
decodificarea instruciunii (stabilete tipul instruciunii).
Blocul circuitelor de comand (BCC) genereaz semnalele de comand
necesare execuiei instruciunilor. Semnalele de comand sunt specifice tipului
unei instruciuni, fazei curente i informaiei de stare din UCP. n general, acest
bloc este implementat prin microprogramare, adic algoritmul de funcionare
este nscris ca o succesiune de cuvinte ntr-o memorie de tip ROM.
124

Introducere n tiina sistemelor i a calculatoarelor

Generatorul de tact (GT) genereaz semnalele de tact (ceas, timp) pentru


funcionarea sincron a ntregului calculator. Frecvena sa determin viteza de
lucru a calculatorului.
Generatorul de faze (GF) construiete succesiunea de faze necesare
pentru execuia instruciunii al crei cod se afl n registru de instruciuni.
Fiecare instruciune se caracterizeaz printr-o secven specific de
microoperaii sau faze. Generarea fazei urmtoare este determinat de trei
elemente: faza curent, tipul instruciunii i coninutul registrului de stare RS.

3.5 Setul de instruciuni


3.5.1 Ciclul main. Ciclul instruciune

Execuia unei instruciuni de ctre un procesor implic execuia unor


operaii de baz. Aceste operaii de baz sunt: extragerea codului instruciunii
(fetch) din memorie, citirea din memorie, scrierea n memorie, citirea de la
dispozitivul de intrare, scrierea la dispozitivul de ieire, achitarea unei
ntreruperi, etc. Fiecare din aceste operaii de baz se desfoar n intervale de
timp bine stabilite, controlate de ceasul sistemului. Acesta are frecvene de
ordinul sutelor de MHz sau GHz. O perioad de ceas (ciclu de tact) se numete
stare, T . Intervalul de timp n care se execut o operaie de baz a instruciunii
se numete ciclu main (fig. 3.27). Ciclul instruciune reprezint o succesiune
de cicluri main, n care primul ciclu ( M 1 ) este ciclul de extragere din memorie
a codului instruciunii, ce urmeaz s se execute. Altfel spus, ciclul instruciune
reunete toate activitile ce se desfoar pe parcursul unei instruciuni. n
figura 5.18 este reprezentat un ciclu instruciune format din trei cicluri main:
M1 , M 2 , M 3 .

T
M1
extragere cod
instruciune

M2
citire din
memorie

M3
scriere n
memorie

ciclul instruciune
Fig. 3.27 Ciclul instruciune format din trei cicluri main
innd cont de operaiile de baz efectuate de un procesor, rezult c, n
general, un procesor are urmtoarele cicluri main:
125

Arhitectura unui sistem de calcul secvenial

- ciclul de extragere a codului instruciunii (fetch);


- ciclul de citire din memorie (read);
- ciclul de scriere n memorie (write);
- ciclul de citire de la un dispozitiv periferic de intrare (in);
- ciclul de scriere la un dispozitiv periferic de ieire (out);
- ciclul de acceptare a unei cereri de ntrerupere;
- ciclul de acceptare a unei cereri de magistral (atunci cnd un alt dispozitiv
solicit controlul magistralei, de exemplu pentru un transfer de date).
3.5.2 Execuia instruciunilor

Procesorul execut fiecare instruciune printr-o secven de pai:


1. extrage din memorie, de la adresa specificat de numrtorul de adrese
ale programului NP, codul instruciunii (sau primul cuvnt al instruciunii
- codul operaiei) n registrul de instruciuni RI;
2. modific numrtorul de adrese NP pentru a indica urmtoarea
instruciune;
3. determin tipul instruciunii extrase n RI;
4. dac instruciunea folosete date din memorie determin adresele
datelor;
5. extrage datele, dac exist, n registrele generale ale procesorului;
6. execut instruciunea;
7. nscrie rezultatele execuiei n locul indicat de instruciune;
8. sare la pasul 1 pentru a ncepe prelucrarea urmtoarei instruciuni.
Aceast secven se numete ciclul de extragere-decodficare-execuie. Toate
calculatoarele al cror procesor are o structur de tipul celei descrise n acest
capitol lucreaz respectnd aceti pai. Instruciunile sunt aduse pe rnd n UCP
i executate.
Execuia paralel a instruciunilor
Execuia unei instruciuni cuprinde dou etape distincte:
- etapa de aducerea a codului instruciunii (sau primul cuvnt COP) n
registrul de instruciuni (ciclul fetch) care este identic pentru toate
instruciunile;
- etapa de execuie propriu-zis a instruciunii.
Se urmrete ca un procesor s aib o vitez de execuie a instruciunilor
ct mai mare. Viteza de propagare a unui semnal electric este limitat i deci
rezult o vitez limitat a efecturii instruciunilor ntr-un calculator. Mrirea
vitezei de execuie a instruciunilor se realizeaz prin utilizarea unor structuri
paralele. n continuare descriem succint unele soluii utilizate n acest scop:
a) Cretere a vitezei de execuie se poate obine prin suprapunerea etapei
de execuie a unei instruciuni cu etapa de aducere din memorie a instruciunii
urmtoare (fig. 3.28).
126

Introducere n tiina sistemelor i a calculatoarelor

fetch

prima instruciune

execuie
fetch

a doua instruciune

execuie

Fig. 3.28 Suprapunerea ciclului fetch cu ciclul de execuie


b) O alt soluie este ca execuia unei instruciuni s fie efectuat n
paralel de ctre mai multe elemente de execuie (de exemplu, de ctre mai multe
UAL care execut n paralel operaiile care compun un algoritm de nmulire sau
mprire).
c) Pentru cretere vitezei de execuie se poate utiliza aa numita structur
pipeline (fig. 3.29a,b). De exemplu, pentru execuia unei instruciuni se
utilizeaz 5 uniti de procesare autonome. S presupunem c fiecare pas
dureaz n nsec. Atunci o instruciune se va executa n 5n nsec. Deoarece la un
moment dat se pot executa 5 instruciuni rezult o medie de n nsec pentru o
instruciune.

P1

Unitatea de extragere
instruciune

P2

Unitatea de analiz
instruciune

P3

Unitatea de calcul a
adresei

P4

Unitatea de execuie
instruciune

P5

Unitatea de extragere
date

P1
P2
P3
P4
P5

1 2 3 4
1 2 3
1 2
1

5
4
3
2
1

6
5
4
3
2

7
6
5
4
3

8
7
6
5
4

b)
a1
a2

b1
b2

UAL

bn

an

c1
c2

UAL
cn

a)

c)

Fig. 3.29 a) Structura unei maini pipeline cu cinci uniti de


prelucrare. b) Starea fiecrei uniti de execuie n timp.
c) Prelucrarea paralel a vectorilor a i b , rezultatul fiind vectorul c
127

Arhitectura unui sistem de calcul secvenial

d) Pentru prelucrarea vectorilor se pot utiliza structuri vectoriale. De


exemplu, n figura 3.29c este prezentat modul de prelucrare a doi vectori
(a1 , a2 ,K, an ) i (b1 , b2 ,K, bn ) , rezultatul fiind vectorul (c1 , c2 ,K, cn ) . Se
utilizeaz cte o UAL pentru obinerea fiecrei componente a vectorului
rezultant.
e) Exist structuri de matrici de procesoare lucrnd n paralel, n care
fiecare procesor are o memorie proprie i execut o anumit secven de
program. De asemenea se utilizeaz i structuri multiprocesor, care conin mai
multe procesoare conectate la o aceeai magistral. Procesoarele au att
memorie comun ct i memorie local.
3.5.3 Formatul instruciunilor

O instruciune executat de UCP este codificat ntr-un format binar.


Codul unei instruciuni trebuie s conin informaii necesare interpretrii i
executrii sale de ctre UCP: tipul operaiei efectuate, operanzii, modul de
calcul al adresei operanzilor, etc. Informaiile specificate pot fi organizate n mai
multe cmpuri. Formatul instruciunilor specific numrul de cuvinte de
memorie utilizat pentru codificarea fiecrui tip de instruciune i semnificaia
cmpurilor ce formeaz instruciunea. Codul unei instruciuni are, n general,
dou cmpuri:
- codul operaiei (COP) care indic operaia efectuat de instruciune;
- cmpul de adrese care specific modul de obinerea a operanzilor. Acest
cmp poate lipsi n cazul instruciunilor fr operanzi.

a)

COP

b)

COP

Adresa

c)

COP

Adresa 1

Adresa 2

d)

COP

Adresa 1

Adresa 2

Adresa 3

Fig. 3.30 Formate de instruciuni


Formatele tipice de instruciuni sunt (fig. 3.30):
a) instruciuni fr adres, care opereaz cu date din registrul implicit (de
exemplu registrul acumulator);
128

Introducere n tiina sistemelor i a calculatoarelor

b) instruciuni cu o adres, care opereaz cu date din acumulator ca registru


implicit i un registru sau o dat din memorie.
c) instruciuni cu dou adrese: acestea sunt de tipul registru-registru,
registru-memorie sau memorie-memorie; adresele specific registre sau
locaii de memorie;
d) instruciuni cu trei adrese: aceste instruciuni specific adresele celor doi
operanzi i adresa rezultatului, care pot fi registre sau locaii de memorie;
ele sunt mai puin utilizate.
Totalitatea instruciunilor pe care le poate executa un procesor constituie
setul de instruciuni al acelui procesor. Lungimea cmpului cod operaie se
determin n funcie de numrul de instruciuni distincte din set. Astfel, dac
setul are m instruciuni sunt necesari n = [log 2 m] bii pentru codificarea lor.
Lungimea cmpului de adres utilizat pentru specificarea unui operand
determin de fapt capacitatea memoriei ce poate fi adresat. Aceasta se
stabilete n funcie de modul de organizare a memoriei. De exemplu, o memorie
de capacitate 220 octei poate fi organizat fie ca o memorie avnd lungimea
cuvntului de memorie de 8 bii, fie ca o memorie avnd lungimea cuvntului de
32 bii. n primul caz sunt necesari 20 bii pentru specificarea adresei unui
cuvnt, n timp ce n al doilea caz sunt necesari 18 bii. Cmpul de adres din
instruciune trebuie s permit accesarea oricrei locaii de memorie. n
concluzie, pentru lungimea mare a cuvntului adresa este mai scurt i deci i
cmpul de adres din instruciune i implicit instruciunea este mai scurt.
Lungimea cuvntului de memorie este de dorit s fie un octet, dac
operandul este un caracter; dac operandul este un numr n virgul mobil, este
de preferat organizarea pe 32 bii, deoarece operandul se poate obine ntr-un
singur acces la memorie. Organizarea ideal a memoriei este aceea n care
accesul este permis att la nivel de octet, ct i la nivel de 16, 32 sau 64 bii.
Pentru un calculator cu destinaie general setul de instruciuni conine
urmtoarele tipuri de instruciuni: de deplasare (registru-registru, registrumemorie, memorie-memorie), aritmetice, logice, salt i oprire.
3.5.4 Clasificarea unitilor centrale de prelucrare

n decursul evoluiei calculatoarelor tendina fireasc a fost de a extinde


mereu setul de instruciuni acceptat de unitatea central de prelucrare, urmrind
n acest fel simplificarea activitii de programare n limbaj de asamblare. Au
fost implementate instruciuni tot mai performante, care se apropiau tot mai mult
de instruciunile din limbajele de nivel nalt (if, while, case). Aceast tendin de
cretere a setului de instruciuni a fost susinut i de introducerea tehnicii de
implementare a UCP prin microprogramare. Conform acestei tehnici o
instruciune complex n limbaj main se execut printr-o secven de
microinstruciuni (n cadrul microprogramrii generarea semnalelor de comand
necesare execuiei unei instruciuni se face prin citirea unor cuvinte de comand
129

Arhitectura unui sistem de calcul secvenial

stocate ntr-o memorie de control). Cu ct setul de instruciuni este mai mare,


microprogramul devine mai mare i deci mai lent. Mai multe instruciuni
nseamn mai mult timp pentru decodificare. Ctigul const ns n instruciuni
mai puternice la ndemna programatorului.
n urma unor analize pe mai multe tipuri de programe, scrise n diferite
limbaje de programare, n care s-a urmrit frecvena de apariie a diferitelor
tipuri de instruciuni, s-a constatat c o mare parte din timpul de lucru al UCP
(80-85%), este ocupat cu execuia unui set redus de instruciuni (10-20% din
setul de instruciuni). Instruciunile de complexitate mare sunt utilizate n
proporie sczut. A aprut ideea utilizrii unui set minimal (redus) de
instruciuni. Alegerea unui set redus de instruciuni duce la o simplificare a
arhitecturii UCP, pentru c este nevoie s se decodifice mai puine instruciuni.
n felul acesta UCP poate lucra la o vitez mai mare. Restul de instruciuni sunt
emulate (simulate) prin intermediul celorlalte tipuri instruciuni. Dezavantajul
const n efortul foarte mare de pus n faza de programare la nivel de limbaj de
asamblare sau ntr-o complexitate mai mare a compilatoarelor pe astfel de
calculatoare.
innd cont de cele artate anterior i de faptul c tipul i rolul registrelor
este diferit de la o unitate central de prelucrare la alta, rezult c pentru
clasificarea unitilor centrale se pot utiliza dou criterii:
a) complexitatea setului de instruciuni;
b) setul de registre.
a) n funcie de complexitatea setului de instruciuni pe care le pot
executa, unitile centrale de prelucrare pot fi mprite n dou tipuri:
de tip CISC (Complex Instruction Set Computer);
de tip RISC (REduced Instruction Set Computer).
Uniti centrale de prelucrare de tip CISC au un set extins (complex) de
instruciuni. La o astfel de UCP o instruciune se execut n mai multe perioade
de tact. Ca exemplu de calculatoare care au UCP de tip CISC amintim: Intel
Pentium, VAX, DEC, IBM 360.
Unitile centrale de prelucrare de tip RISC sunt cele care utilizeaz un set
redus de instruciuni. La o UCP de tip RISC o instruciune se execut ntr-un
singur tact. De exemplu, procesoare ca Motorola 88110 (Motorola), Alpha AXP
(DEC) i Power PC (IBM, Apple i Motorola) sunt de tip RISC.
b) n funcie de setul de registre, UCP-urile se pot clasifica n:
cu set ortogonal de registre: acestea permit utilizarea tuturor
registrelor n mod omogen (identic), neexistnd registre dedicate. Astfel de
procesoare sunt cele produse de firma Motorola.
cu set neortogonal de registre sau cu registre specializate. La acest
tip fiecare din registrele interne sunt utilizate n scopuri precise. Astfel de
procesoare sunt cele ale firmei Intel.

130

Introducere n tiina sistemelor i a calculatoarelor

3.6 Interfee de intrare/ieire


Un echipament periferic nu se conecteaz direct la magistralele
sistemului, ci prin intermediul unei interfee. Funcionarea nemijlocit a
echipamentelor periferice este coordonat de unitatea de comand a perifericului
conectat la sistemul de calcul prin interfa. Aceast delimitare net ntre
interfa i unitatea de comand a perifericului nu este ntotdeauna evident i
dac sunt incluse n acelai circuit integrat complex poart numele generic de
controller.
Din punct de vedere al comunicrii, un port este un punct prin care se face
schimb de informaie cu mediul exterior. Pentru sistem, portul n care se scrie
este port de ieire iar cel din care se citete este port de intrare, iar cel din care
se citete i se scrie este port de intrare/ieire.
O interfa de intrare/ieire trebuie s asigure compatibilitatea dintre
echipamentele periferice i sistemul de calcul, pentru a asigura transferul de
date bidirecional i controlul strii echipamentelor periferice. Funcional, o
interfa are dou pri distincte (fig. 3.31):
O parte compatibil (adaptat) cu (la) semnalele i modul de funcionare
al magistralei, care conine registre de intrare/ieire (porturi) pentru date,
comenzi i stare, direct adresabile de ctre microprocesor.
O parte compatibil (adaptat) cu (la) particularitile de funcionare ale
echipamentelor periferice. Aceast parte difer funcie de tipul dispozitivului
periferic i conine circuite pentru generarea semnalelor de comand i achiziie
a semnalelor de stare specifice dispozitivului periferic.
n componena unei interfae de intrare/ieire intr urmtoarele elemente:
- registre de date (de intrare i/sau ieire);
- registre de comenzi;
- registre de stare;
- bloc de selecie a registrelor (decodificator);
- dispozitiv de comand.
O interfa poate asigura transferul uni sau bidirecional. Pentru fiecare
canal de transmisie se aloc cte un port (registru) de date, care este identificat
printr-o adres.
Registrele de comenzi au rolul de a genera semnale de comand specifice
unui echipament periferic: se selecteaz modurile de lucru ale interfeei i se
selecteaz parametrii de transfer (frecvena de transmisie, formatul datelor
transmise, transfer pe octet sau pe bloc, etc.).
Registrele de stare ofer informaii despre starea interfeei i a
echipamentului periferic: echipament defect sau ocupat, registre intrare/ieire
goale, date recepionate. Aceste informaii sunt testate ciclic n protocolul de
comunicaie cu scopul de a detecta eventualele erori de transfer i pentru
adaptarea vitezei de transfer.
131

Arhitectura unui sistem de calcul secvenial

Codificatorul genereaz semnale de validare a porturilor pentru citire sau


pentru scriere, pe baza semnalelor de adres i de comand de pe magistralele
sistemului.
Magistral de adrese
Magistral de date

Bloc de selecie a
datelor
(decodificator)

Magistral de comenzi

Dispozitiv de
comand
Registre de Registre
comenzi de stare

Registru
de ieire

Registru
de intrare

Adaptor de semnale

Interfa

Echipament periferic
Fig. 3.31 Schema bloc a unei interfee de intrare-ieire
Uneori o interfa poate s conin i o memorie RAM sau ROM.
Memoria ROM este destinat pentru pstrarea driver-ului de interfa, care
este identificat la iniializarea sistemului i este inclus n rutinele de sistem ale
sistemului de operare. Memoria RAM se utilizeaz ca un tampon ntre
echipamentul periferic i memoria principal. Aceasta este necesar n cazul n
care fluxul de date este mare i este dificil sincronizarea vitezei de lucru a
perifericului cu viteza de transfer pe magistral (interfaa video sau cea de disc
dur).

132

Introducere n tiina sistemelor i a calculatoarelor

Capitolul 4
UNITI CENTRALE DE PRELUCRARE DE TIP
MICROPROCESOR
4.1. Scurt istoric
Microprocesorul este o unitate central de prelucrare realizat ntr-un
singur circuit integrat. Primul circuit de acest tip (I4004) a fost realizat de firma
Intel n 1971. Acesta era un microprocesor pe 4 bii. n anul urmtor a aprut
microprocesorul pe 8 bii, 8008. Ca urmarea a succesului obinut, s-a realizat n
continuare n 1974 , microprocesorul 8080 pe 8 bii i spaiul de adresare 64 kB
(kiloBytes). Au urmat microprocesoarele 8085 (1974, 8 bii, spaiu de adresare
64 kB), 8086 (1978, 16 bii, 1MB), 8088 (1980, 8 bii, 1MB), 80186 i 80188
(1982, 16 bii, 1MB, cu faciliti de I/O), 80286 (1982, 16 bii, 16 MB), 80386
(1985, 32 bii, 4 GB), 80486 (1989, 32 bii, 4 GB) ca versiune mai rapid a lui
80386, Pentium (1993, 32 bii, spaiu de adresare 64 GB, magistrala de date pe
64 bii), Pentium Pro (1995, 32 bii, 64 GB, magistrala de date pe 64 bii),
Pentium II (1997, 32 bii, 64 GB, magistrala de date pe 64 bii), Pentium III
(1999, 32 bii, 64 GB, magistrala de date pe 64 bii). Firma Intel a pstrat,
ncepnd cu 8086, regula compatibilitii. Procesoarele Intel au fost alese de
firma IBM la producerea calculatoarelor personale.
Alturi de circuitele Intel s-au dezvoltat i alte familii de microprocesoare,
dintre care cele mai performante sunt cele produse de firma Motorola.
Circuitele Motorola au evoluat n paralel cu cele realizate de firma Intel, ntre
ele existnd mereu o echivalen i o concuren pe piaa calculatoarelor. Firma
Motorola a nceput cu microprocesorul 6800, ca un rspuns la Intel 8080. n
1979 apare 68000 pe 16 bii i 16 MB, dar cu registre de 32 bii. Au urmat apoi
procesoarele 68010 (1983) cu faciliti de control a memoriei virtuale dar cu 16
MB, 68012 (1983, cu spaiu de adresare de 2GB), 68020 (1984, magistrale de
date i registre pe 32 bii, spaiu de adresare 4GB, utilizat pentru staiile Sun,
Apollo i Hewlett-Packard), 68030 (1987, cu managementul de memorie n
acelai integrat), 68040 (1989, conine n acelai integrat, ca i 80486,
coprocesorul de virgul flotant, unitatea de management a memoriei, memorie
cache). n general, firma Motorola a realizat cte un procesor ca rspuns la
fiecare generaie de procesoare produse de firma Intel. Aceeai regul a
compatibilitii se pstreaz i la circuitele din familia Motorola. Procesoarele
133

Uniti centrale de prelucrare de tip microprocesor

Motorola au fost alese de firme ca Macintosh, Atari, Amiga pentru


calculatoarele personale.
Evoluia microprocesoarelor este impresionant, att ca tehnologie i
performane ct i ca pre, ajungnd astzi s domine piaa de calculatoare. De
exemplu, n ce privete tehnologia, 8086 coninea aproximativ 29000 de
tranzistoare, iar un Pentium III conine aproximativ 5500000 de tranzistoare.
Datorit costului redus i a fiabilitii ridicate, microprocesoarele au o larg
utilizare, fiind folosite pentru realizarea de microcalculatoare, echipamente
periferice, sisteme de conducere a proceselor industriale, aparate medicale, etc.
Apariia acestora a revoluionat modul de proiectare a sistemelor de calcul i a
transformat calculatorul dintr-un instrument tiinific ntr-un dispozitiv uzual.

4.2. Structura fundamental a unui microprocesor


Dup cum am amintit anterior, microprocesorul este un circuit integrat
care, n principiu, implementeaz funciile unei uniti centrale de prelucrare
(procesor). Fiind un procesor, sistemele pe baz de microprocesor necesit
existena unei memorii iar procesarea informaiei se face la nivel de cuvnt.
Pentru un microprocesor lungimea n a cntului este o caracteristic principal,
aceasta reprezentnd capacitatea uzual de prelucrare. Lungimea cuvntului este
dat de capacitatea registrelor microprocesorului. Exist microprocesoare care
lucreaz cu lungimi ale cuvntului de 8, 16, 32 sau 64 bii.
Relund structura de principiu a unei UCP, n mare, un microprocesor
nglobeaz toate blocurile funcionale ale unei uniti centrale de prelucrare i
anume:
unitatea aritmetic i logic;
unitatea de comand;
registrele generale i speciale.
Aceste pri componente sunt conectate ntre ele nspre/dinspre exterior prin
intermediul magistralelor de date i de adrese (fig.4.1). Accesul la magistrale
este autorizat de semnalele de control generate de unitatea de comand (de fapt
de blocul circuitelor de comand).
Alturi de blocurile funcionale amintite mai sus pot fi integrate i alte
componente de baz ale unui microsistem, cum ar fi: memoria cache, porturi de
intrare/ieire, unitatea de management a memoriei, controlorul de ntreruperi,
etc.
Microprocesoarele actuale (ex.: 80486, Pentium), nglobeaz ntr-un
singur circuit mai multe uniti de procesare care pot efectua o serie de operaii
n paralel. Pentru un observator extern ns aceste procesoare se comport
asemenea unei singure uniti centrale.
n figura 4.1 prezentm structura fundamental a unui microprocesor cu o
magistral de date i un singur acumulator.
134

Introducere n tiina sistemelor i a calculatoarelor

Magistral
extern de
date
n - bii

Memorie
ROM

Magistral
extern de
adrese

Memorie
RAM

m - bii
Buffer de
adresare

Buffer de
intrare/ieire

Magistral intern
de adrese m-bii

Magistral intern
de date n-bii
Reg. ind. de
condiii

Reg. de
instruciuni
COP

UAL

Numrtor de
adrese PC

Adr.
operand

Decodificator
instruciuni
Reg.
acumulator

Blocul circ.
de comand

Clock
Semnale de comand
trimise/primite la/de la
elementele de
direcionare

MICROPROCESOR

Fig. 4.1 Structura fundamental a unui microprocesor cu o


magistral de date i un acumulator
Orice tip de microprocesor trebuie s aib n structura sa un minim de
ase registre cu funciuni specifice: registrul acumulator (A), registrul
numrtor de adrese ale programului (PC), registrul indicatorilor de condiii
(registrul de stare, RS), registrul de instruciuni (RI), registrul de adresare a
memoriei i registrul de intrare/ieire. Suplimentar, pot exista i alte registre de
utilizare general care mresc flexibilitatea microprocesorului n aplicaii.
135

Uniti centrale de prelucrare de tip microprocesor

Rolul registrului numrtor de adrese ale programului i al registrului de


stare a fost prezentat n capitolul 3.
Registrul de adresare a memoriei
Acest registru tampon de adresare cu ieire tip TSL (Three State Logic)
denumit buffer de adresare este conectat la magistrala (extern) de adresare a
memoriei sau a porturilor de intrare ieire. Coninutul registrului PC este
transferat n buffer-ul de ieire, care va aplica pe magistral extern de adresare
un cuvnt de m bii, ce reprezint adresa unei locaii de memorie sau a unui port
de intrare/ieire. ncrcarea buffer-ului de adrese se poate face i de la alte
elemente ale microprocesorului, nu numai de la PC. Rezult c pe magistrala de
adrese (intern) se pot aplica i cuvinte adres diferite de coninutul registrului
PC. Unele instruciuni pot ncrca coninutul registrului de ieire cu o adres
rezultat din coninutul PC, la care se adaug sau se scade un numr rezultat n
urma unor calcule.
Registrul de intrare/ieire (buffer I/O)
Prin acest buffer se realizeaz legtura ntre magistrala de date intern
microprocesorului i magistrala de date exterioar (a sistemului). Ca urmare,
prin el se vehiculeaz date i instruciuni.
Registrul de instruciuni
Dup ce un cuvnt instruciune este adus din memorie prin bufer-ul de I/O
pe magistrala intern a microprocesorului, o copie a cestui cuvnt va fi nscris
n registrul de instruciuni. Registrul RI pstreaz codul instruciunii (sau primul
cuvnt din codul instruciunii, cuvnt ce conine codul operaiei COP sau
OPCODE) pe durata execuiei acesteia. Odat copiat instruciunea n RI,
coninutul numrtorului de adrese este automat incrementat cu o unitate,
(PC)+1. n capitolul 5 s-a artat c instruciunea poate fi divizat n dou
cmpuri: cmpul codului operaiei COP i cmpul operandului sau adresei
operandului. Biii din codul operaiei se aplic decodificatorului de instruciuni,
care, prin blocul circuitelor de comand, va genera toate semnalele de comand
necesare execuiei instruciunii reprezentate de codul operaiei. Cmpul adresa
operandului se aplic buffer-ului de adrese pentru formarea adresei din memorie
unde se afl operandul necesar operaiei specificate de COP.
Registrul acumulator A
Este registrul din structura microprocesorului cu cea mai frecvent
utilizare. Acest registru este conectat la magistrala intern de date i la UAL.
Pentru structura de microprocesor cu un acumulator, cnd se proceseaz dou
cuvinte, O1 i O2 , la nceput cuvntul O1 se afl n acumulator, iar dup
procesare rezultatul operaiei dintre O1 i O2 este trecut din UAL tot n
136

Introducere n tiina sistemelor i a calculatoarelor

acumulator (informaia iniial din acumulator operandul O1 - se pierde). De


exemplu, s considerm executarea (simplificat) a instruciunii de adunare a
doi operanzi, notat abreviat ADD. Primul operand O1 se afl n acumulator, iar
cel de-al doilea se afl n memoria intern la adresa adr . Coninutul N al
registrului PC este transferat la registrul de ieire i aplicat pe magistrala de
adrese. Din memoria intern, de la adresa N este citit cuvntul instruciune care,
prin intermediul registrului I/O, este copiat n registrul RI. Cuvntul instruciune
este:
ADD = << COP >>
<< ADD adr >> cu semnificaia
adr = adresa operandului O2 .

Cmpul codul operaiei COP al instruciunii ADD este introdus n decodificator


i n urma decodificrii instruciunii n UCC se genereaz succesiunea de
comenzi care va realiza: adresa adr se aplic prin intermediul registrului de
adresare la memoria intern; de la locaia specificat operandul O2 este adus
prin intermediul registrului I/O pe magistrala intern de date; cei doi operanzi
O1 i O2 vor fi adunai n UAL, rezultatul fiind trecut tot n acumulator.
Registrul acumulator particip la transferul informaiei ntre o surs
(locaie de memorie, port I/O) i o destinaie (locaie de memorie, port I/O).
Transferul are loc n dou etape: nti cuvntul este deplasat n acumulator, apoi
din acumulator este deplasat la destinaie.
Microprocesorul permite efectuarea unor operaii (cu un singur operand)
folosind numai acumulatorul, cum ar fi: tergerea acumulatorului (toi biii sunt
pui pe valoarea 0), nscrierea tuturor biilor la valoarea 1, deplasare dreapta,
stnga, complementarea coninutului, etc. Aceste operaii, cu un singur operand,
pot fi deduse din funcionarea de principiu a unui registru (Capitolul 2).
Numrul de celule (bii) ai acumulatorului este egal cu lungimea
cuvntului procesat de microprocesor, n n cazul structurii din figura 6.1. Exist
structuri de microprocesoare care sunt nzestrate cu mai multe acumulatoare. n
cazul acestor structuri exist i instruciuni diferite pentru fiecare din
acumulatoare. Acumulatoarele pot fi luate i mpreun pentru a se lucra cu
cuvinte de lungime multiplu de n bii. Avantajul mai multor acumulatoare
rezult din posibilitatea lucrului acumulator-la-acumulator. De exemplu, cu un
acumulator se lucreaz normal i cu cellalt se pstreaz cuvntul iniial (de care
mai este nevoie ulterior) sau se pstreaz rezultatele. n cazul unui singur
acumulator, facilitile care ar fi introduse de existena unui al doilea acumulator
trebuie substituite de locaii de memorie sau de alte registre de utilitate general.

137

Uniti centrale de prelucrare de tip microprocesor

4.3. Semnalele unui microprocesor


Semnalele unui microprocesor se pot mpri, n funcie de rolul acestora,
n trei categorii:
- semnale de adres;
- semnale de date;
- semnale de comand i control.
Prin aceste semnale microprocesorul controleaz transferul de date i secvena
de evenimente dintr-un sistem de calcul. Aceste semnale sunt aplicate la
modulele de memorie i la interfeele de intrare/ieire (module prin intermediul
crora se conecteaz dispozitivele de intrare/ieire) prin intermediul unui set de
fire care alctuiesc o magistral.
Semnalele de adres sunt utilizate pentru adresarea locaiilor de memorie
sau a porturilor (registrelor) de intrare/ieire. Numrul de linii de adres
determin spaiul maxim de adresare al microprocesorului. Obinuit se folosesc
16, 20, 24, 32, 64 linii de adres.
Semnalele de date se utilizeaz pentru transferul informaiilor ntre
diferitele module conectate pe magistral. Numrul semnalelor de date
determin lungimea cuvntului de date ce se poate transfera printr-un ciclu de
transfer. De regul, numrul semnalelor de date este multiplu de 8 (exemplu: 8,
16, 32, 64).
Semnalele de comand i control au rolul de a controla fluxul de date i
de a sincroniza microprocesorul cu anumite evenimente externe. Aceste semnale
se pot clasifica, dup natura lor, n urmtoarele categorii:
- semnale de comand;
- semnale de ntrerupere;
- semnale pentru arbitrarea magistralei;
- semnale de stare;
- semnale diverse.

Semnale
de adres
Semnale
de date
Semnale de
comand
Semnale de
ntrerupere

Microprocesor

Semnale de arbitrare
a magistralei
Semnale de stare
Semnal de tact
Alte semnale
Alimentare

Fig. 4.2 Semnalele unui microprocesor


138

Introducere n tiina sistemelor i a calculatoarelor

Semnalele de comand specific sensul transferului de date (citire/scriere)


precum i sursa/destinaia transferului (memorie sau port de intrare/ieire).
Fiecare semnal de comand determin un anumit tip de ciclu de transfer: citire
memorie, scriere memorie, citire port de intrare, scriere port de ieire, achitare
cerere de ntrerupere, etc. Numele acestor semnale difer de la un procesor la
altul, dar semnificaia lor este aceeai.
Semnalele de ntrerupere sunt intrri pentru microprocesor i au rolul de a
indica apariia unor evenimente externe. Acceptarea unei ntreruperi este
confirmat de microprocesor prin activarea unui semnal de comand specific.
Semnalele de arbitrare a magistralei se utilizeaz pentru controlul
accesului la magistrala sistemului. Ele sunt necesare atunci cnd pe magistral
sunt conectate mai multe module, care au dreptul de a iniia transferuri de date
pe magistral. Reamintim c aceste module sunt module master. Ele pot fi
module procesor sau module de acces direct la memorie. Modulele care pot fi
citite/scrise de ctre modulele master sunt module slave.
Semnalele de stare permit monitorizarea funcionrii microprocesorului
de ctre un depanator sau de ctre alte module legate mai strns de
microprocesor (coprocesor, controloare de magistral, etc.).
ntr-un sistem cu microprocesor se pot utiliza mai multe magistrale de
acelai tip. Avantajul utilizrii mai multor magistrale const n posibilitatea
efecturii unor transferuri n paralel. Acest lucru se recomand n cazul n care
ntr-un sistem sunt mai multe module master.

4.4. Arhitectura procesoarelor Intel 8086/8088


De cteva decenii, familia de procesoare Intel joac un rol dominant n
evoluia sistemelor de mic i medie putere. Noile tehnologii i concepte
arhitecturale introduse n decursul anilor n noile versiuni de procesoare au dus
la o cretere a puterii de calcul a unui microprocesor de ordinul a 104. Au fost
introduse faciliti noi i suport hardware pentru optimizarea sistemului de
operare a limbajelor de nivel nalt (ex.: mecanisme de partajare a memoriei,
gestiunea task-rilor, acces la structuri complexe de date, etc.). Au fost introduse
tehnici de manipulare a datelor specifice unor domenii nou aprute cum ar fi
aplicaiile multimedia (prin tehnologia MMX), prelucrri de imagini, grafic
(prin aritmetica SIMD), aplicaiile Internet i n special aplicaiile Web (prin
tehnici de partajare i protecie).
n evoluia procesoarelor Intel, firma Intel a respectat principiul
compatibilitii software (la nivel de program), de jos n sus ntre diferitele
versiuni. Aceasta nseamn c un program scris pentru o anumit variant de
procesor se va putea executa fr modificri pe o nou versiune. Firma Intel a
asigurat aceast compatibilitate prin definirea unei arhitecturi de baz, denumit
arhitectur Intel, care s-a pstrat de la procesorul I8086 pn la ultimele
139

Uniti centrale de prelucrare de tip microprocesor

versiuni de astzi. La aceast arhitectur s-au adugat elemente noi, pstrndu-se


cele deja existente.
Pentru o mai bun nelegere a structurii i a modului de funcionare a
unui microprocesor, n continuare se vor prezenta cteva arhitecturi
reprezentative de microprocesoare de uz general, punnd accentul pe
procesoarele I8086 i I8088.
Procesoarele I8086 i I8088 sunt primele procesoare concepute conform
arhitecturii Intel. Ele sunt uniti centrale de prelucrare pe 16 bii, deci cuvntul
procesor (cantitatea de prelucrare) este de 16 bii. Aceste procesoare sunt
identice ca structur intern, diferena constnd n limea magistralei externe de
date (16 bii la I8086 i 8 bii la I8088). n cele ce urmeaz ne referim n special
la procesorul I8086.
EU

BIU

AH
BH
CH
DH

Sumator

AL
BL
CL
DL

16 bii
CS
DS
ES
SS
IP

SI
DI
BP
SP

Comand
mag.
extern

Mag. date
16 bii
Reg. temp.
UAL

Mag. adrese 20 bii

Unitatea
de c-d

8 bii

1 2 3 4 5 6
Coad de instruciuni

Reg. de stare

Fig. 4.3 Structura intern a microprocesorului I8086


Procesorul I8086 este realizat sub forma unei capsule cu 40 pini.
Capacitatea de adresare a memoriei este de 1Mo=220 octei, prin urmare numrul
liniilor de adres este de 20. Din cei 20 de pini pentru adres, 16 sunt folosii i
140

Introducere n tiina sistemelor i a calculatoarelor

ca pini de date. Folosirea acelorai pini pentru adrese i date reduce numrul de
pini ai microprocesorului, dar acest lucru nseamn de fapt o multiplexare n
timp a datelor i adreselor, ceea ce duce la o ncetinire a transferurilor de date.
Arhitectura intern a procesorului I8086 este organizat n jurul unei
magistrale i cuprinde dou uniti de prelucrare (fig. 4.3):
a) - unitatea de execuie EU (Execution Unit) care realizeaz execuia
propriu-zis a instruciunilor;
b) - unitatea de interfa cu magistrala extern BIU (Bus Interface Unit) care
se ocup cu transferul de informaii (date i instruciuni) ntre procesor i
magistrala extern.
a) Unitatea de execuie

Unitatea de execuie cuprinde urmtoarele elemente structurale:


blocul registrelor generale;
un registru de stare RS;
unitatea aritmetic i logic UAL;
unitatea de decodificare i execuie a instruciunilor (unitatea de comand);
registre temporare.

Blocul registrelor generale


Este constituit din 8 registre: AX, BX, CX, DX, SI, DI, BP, SP. Toate
aceste registre au dimensiunea de 16 bii. Ele pot fi folosite pentru a stoca
operanzi i rezultate. Pe lng aceast utilizare de uz general ele prezint i
anumite utilizri speciale. n funcie de destinaiile speciale, grupul celor 8
registre generale poate fi divizat n:
- registre de date: AX, BX, CX, DX;
- registre pointer i index: SI, DI, BP, SP.
Registrele de date pot fi folosite att pe 8 bii (octet) ct i pe 16 bii (cuvnt).
De exemplu, specificaia AX indic registrul AX utilizat pe cuvnt, iar
specificaiile AH i AL indic octetul superior (High), respectiv octetul inferior
(Low), al registrului AX.
Registrele generale au urmtoarele utilizri speciale:
1. registrul AX (Accumulator) este considerat registrul acumulator, adic
unele instruciuni presupun c unul din operanzi este n acest registru i vor
depune rezultatul tot n acest registru. Este utilizat n operaii aritmetice i logice
i este folosit n mod implicit n operaiile de nmulire i mprire.
2. registrul BX (Base) poate fi utilizat ca registrul baz n calculul
adreselor de memorie (conine implicit o adres de baz utilizat n calculul
unor adrese de memorie).
3. registrul CX (Count) poate fi folosit ca numrtor implicit pentru
contorizare (numrarea ciclurilor de program sau a datelor n cazul transferului
pe iruri).
141

Uniti centrale de prelucrare de tip microprocesor

4. registrul DX (Data) este folosit implicit pentru instruciunile de


nmulire i mprire i pentru adresarea porturilor de intrare/ieire.
5. registrul SP (Stack Pointer indicator de stiv) este utilizat pentru a
implementa o organizare de tip stiv n memoria intern. El va preciza vrful
stivei, adic ultima locaie ocupat. Considerm modelul de organizare liniar a
memoriei (fig. 4.4). Coninutul registrului SP precizeaz vrful stivei. La
procesoarele Intel stiva este organizat cu baza la o adres mai mare dect vrful
stivei. Prin urmare, introducerea de informaii n stiv duce la scderea valorii
din registrul SP iar extragerea informaiilor duce la creterea valorii din registrul
SP. Instruciunile care lucreaz cu stiva nu trebuie s specifice adresa memoriei
ci numai datele. Adresa este implicit specificat de ctre registrul indicator de
stiv SP.
Memoria
00000H
(SP)
stiva
baza stivei
FFFFFH
Fig. 4.4 Organizarea stivei la microprocesorul I8086
6. Registrul BP (Base Pointer) este un registru baz utilizat pentru
adresarea bazat i pentru accesarea stivei.
7. Registrele SI (Source Index) i DI (Destination Index) sunt utilizate
drept registre de index pentru adresarea irurilor de date (SI index ir surs, DI
index ir destinaie).
Sintetic se poate spune c funcia implicit a unui registru de tip P
(pointer) o reprezint accesul n structuri de tip stiv, iar a celui de tip I (Index)
formarea structurilor de tip tablou.
Registrul de stare
Registrul de stare sau registrul indicatorilor de condiii (flags) are rolul de
a caracteriza un rezultat obinut n urma unei prelucrri logice sau aritmetice. De
asemenea, existena acestui registru permite stabilirea unor condiii de
funcionare a microprocesorului. Din acest motiv acest registru mai este denumit
142

Introducere n tiina sistemelor i a calculatoarelor

i registrul de stare a programului PSW (Program Status Word cuvnt de


stare program).
Registrul indicatorilor de condiii la microprocesorul 8086 conine 16 bii
din care numai 9 sunt utilizai (fig. 4.5). Fiecare bit din acest registru reprezint
un fanion (flag). Fanioanele registrului de stare pot fi mprite n dou grupe:
a) de condiie: caracterizeaz rezultatul unei operaii;
b) de control: controleaz execuia unor funcii speciale.
a) Fanioanele de condiie sunt:
- CF (Carry Flag) este poziionat pe 1 dac n urma unei adunri rezult
un transport dinspre bitul cel mai semnificativ MSB (Most Significant Bit) sau
dac n urma unei scderi rezult un mprumut nspre MSB. De asemenea, exist
i alte instruciuni care afecteaz acest bit.
15 14 13 12 11 10
O D

9
I

8
T

7
S

6
Z

4
A

Depire capacitate
(Overflow)

2
P

0
C

Transport
(Carry)

Direcie
Trasare
Validare ntrerupere
Semn

Paritate
Transport auxiliar
Rezultat zero

Fig. 4.5 Structura registrului de stare la I8086


- PF (Parity Flag) este setat pe 1 logic dac octetul inferior al
rezultatului conine un numr par de cifre 1, altfel este 0.
- AF (Auxiliary carry Flag) este setat pe 1 logic dac exist un transport
de la bitul din rangul 3 spre bitul din rangul 4 n urma unei adunri sau dac
exist un mprumut dinspre bitul din rangul 4 n urma unei scderi. Acest fanion
este folosit exclusiv n cadrul operaiilor cu numere reprezentate n cod BCD.
- ZF (Zero Flag) este 1 dac rezultatul este zero sau 0 dac rezultatul
este diferit de 0.
- SF (Sign Flag) reprezint cel mai semnificativ bit MSB al rezultatului.
Avnd n vedere reprezentarea numerelor cu semn n complement fa de 2,
acest bit este 1 pentru numere negative i 0 pentru numere pozitive, indicnd
astfel dac rezultatul este un numr pozitiv sau negativ.
- OF (Overflow Flag) este poziionat pe 1 dac s-a obinut o depire,
adic dac rezultatul depete domeniul de reprezentare. Reamintim c, n
cazul adunrii, acest bit este setat dac exist un transport nspre MSB i nu
143

Uniti centrale de prelucrare de tip microprocesor

exist transport dinspre MSB sau invers. n cazul scderii este setat dac exist
un mprumut nspre MSB i nu exist mprumut dinspre MSB sau invers.
b) Fanioanele de control sunt:
- DF (Direction Flag) este folosit de instruciunile care prelucreaz iruri
de date. Dac este 0 atunci irul respectiv este prelucrat ncepnd cu elementul
avnd adresa cea mai mic. Dac este 1, atunci irul este prelucrat ncepnd cu
elementul avnd adresa cea mai mare.
- IF (Interrupt Enable Flag) poziionat pe 1 va valida funcionarea
sistemului de ntreruperi, poziionat pe 0 va invalida sistemul de ntreruperi.
- TF (Trace Flag) poziionat pe 1 foreaz unitatea central de prelucrare
s lucreze n modul pas cu pas (instruciune cu instruciune). Este util n cazul
depanrii unor secvene de instruciuni.
Registrele temporare sunt utilizate pentru a stoca temporar operanzii
implicai ntr-o prelucrare aritmetic sau logic. Aceste registre sunt transparente
pentru utilizator.
b) Unitatea de interfa cu magistrala extern

Unitatea de interfa cu magistrala extern BIU conine:


- blocul registrelor segment;
- registrul numrtor de instruciuni IP (Instruction Pointer);
- registrul de instruciuni IR (Instruction Register);
- mecanismul de calcul al adresei operanzilor i instruciunilor.
Registrele segment i mecanismul de calcul al adresei
Spaiul de adresare pentru memorie al microprocesorului I8086 este de
1Moctet. Pentru adresare microprocesorul folosete 20 linii de adres (1Mo=220
octei). Procesorul lucreaz cu lungimea cuvntului de 16 bii. Cu 16 bii se pot
adresa 216 octei = 64 Koctei. Pentru a accesa ntreg spaiul de memorie se
utilizeaz precizarea unei adrese relative n interiorul unei anumite zone de
memorie. Aceste zone de memorie sunt numite segmente (capitolul 3) i, pentru
procesorul I8086, au dimensiunea maxim de 64 ko.
Pentru a accesa o anumit locaie de memorie adresa fizic a acesteia se
calculeaz pe baza a dou adrese de 16 bii: o adres de segment i o adres de
offset. Adresa de segment precizeaz nceputul unui segment (baza
segmentului), iar adresa de offset indic poziia relativ a locaiei fa de
nceputul segmentului. Adresa de offset mai este numit i adres efectiv.
Adresele de segment sunt obinute cu ajutorul registrelor segment. Exist 4
registre segment care pstreaz adresele de nceput a segmentelor de memorie
accesibile unui program:
- CS (Code Segment) pentru segmentul de cod;
144

Introducere n tiina sistemelor i a calculatoarelor

DS (Data Segment) pentru segmentul de date;


SS (Stack Segment) pentru segmentul de stiv;
ES (Extra Segment) pentru extra-segmentul de date (segmentul
suplimentar de date).
Toate aceste registre au dimensiunea de 16 bii. Adresa efectiv sau
offsetul se poate obine combinnd (adunnd) coninutul registrelor BX (Base)
sau BP (Base Pointer) cu coninutul registrelor SI (Source Index) sau DI
(Destination Index) i eventual un deplasament (o constant). Adresa fizic
vehiculat pe magistrala de adrese are 20 de bii n timp ce adresele de segment
pstrate n registrele segment i adresa de offset au 16 bii. Obinerea unei adrese
de 20 de bii din dou de 16 bii are loc astfel: se multiplic cu 16 adresa de
segment (deplasare stnga cu 4 poziii binare sau cu o poziie hexazecimal) i
se nsumeaz cu adresa de offset (fig. 4.6).
16 bii
Adresa efectiv
(offset)

Adresa de segment

4 bii

+
0

16 bii
Adresa fizic

20 bii
Fig. 4.6 Formarea adresei fizice
Se observ c prin deplasarea spre stnga cu 4 poziii binare a coninutului
registrului segment corespunztor se obine o adres fizic de 20 de bii.
Calculul unei adrese fizice, AF , oarecare prin mecanismul segment-offset
prezentat n figura 6.6 se face conform formulei:
(1)
AF = (registru segment ) 10H + AE ,
unde prin AE am notat adresa efectiv.
Adresarea prin segment i offset permite divizarea spaiului de memorie
n uniti logice numite segmente. Informaiile aferente unui program se pot
grupa n mai multe segmente, funcie de natura acestora: segmente de cod,
segmente de date, segmente de stiv. Dimensiunea maxim a unui segment este
de 64 ko, iar adresa de nceput este multiplu de 16. Domeniul de adresare al unui
segment este cuprins ntre:
((Registru segment ) 10H, (Registru segment ) 10H + FFFFH ) .
145

Uniti centrale de prelucrare de tip microprocesor

Segmentele pot fi complet separate, suprapuse parial sau total. Divizarea


spaiului de memorie n segmente este artat n figura 4.7.

00000h
CS10h
DS10h

SS10h
ES10h

Memorie
Segment
cod

64 ko

Segment
date

64 ko

Segment
stiv

64 ko

Extrasegment

64 ko

FFFFFh
Fig. 4.7 Zonele de segment n memorie
Observaie. Registrul CS definete adresa de nceput a segmentului de cod, DS
a segmentului de date, SS a segmentului de stiv i ES a segmentului
suplimentar. La un moment dat microprocesorul poate adresa maximum 4
segmente cu ajutorul celor 4 registre segment. Prin modificarea coninutului
registrelor segment se pot schimba segmentele logice folosite.
Avantajele folosirii registrelor segment sunt urmtoarele:
1. permit adresarea unei memorii de capacitate 1Mo chiar dac adresele
asociate instruciunilor individuale au lungimea de numai 16 bii;
2. permit ca zonele de instruciuni, date sau stiv ale unui program s fie mai
mari de 64 ko prin folosirea mai mult de un segment de cod, date sau
stiv;
3. faciliteaz folosirea zonelor separate de cod, date i stiv n cadrul unui
program;
4. permit ca un program i/sau datele asociate s fie puse n zone diferite de
memorie la fiecare rulare.
Dei segmentele au lungimea de 64 ko ele se pot intersecta (suprapuse
parial) pentru o mai bun utilizare a spaiului de memorie. Aa cum se arat n
figura 4.8, un program poate ocupa numai o parte din segmentul 1 (segment de
cod) iar un alt segment, segmentul 2 (segment de cod, date sau stiv) se poate
suprapune peste poriunea rmas neutilizat din segmentul 1, mai puin o zon
146

Introducere n tiina sistemelor i a calculatoarelor

de civa octei cuprins ntre sfritul programului i prima adres multiplu de


16 dup sfritul programului.
Memorie

Program
Segment de cod 1
Prima adres
multiplu de 16
dup sfritul
programului

Segment de cod 2

Fig. 4.8 Segmente de cod intersectate


Se observ c o locaie fizic se poate regsi pe baza mai multor perechi
de adrese logice (segment:offset). De exemplu adresele 1200h:1234h i
1000h:3234h desemneaz aceeai locaie fizic de memorie. n total exist
216 16 posibiliti de a accesa o locaie fizic de memorie.
Registrul IP (Instruction Pointer)
Acest registru este un fel de registru numrtor de adrese ale programului.
El conine adresa efectiv (offset-ul) n cadrul segmentului de cod a instruciunii
urmtoare. Practic registrul IP reprezint un pointer ctre urmtoarea
instruciune ce urmeaz a fi extras din memorie. ntotdeauna adresa urmtoarei
instruciuni ce trebuie extras din memorie este dat de perechea de registre
CS:IP (codul instruciunii urmtoare se afl n segmentul de cod). De exemplu,
dac coninutul lui CS este (CS)=231Ch iar coninutul lui IP este (IP)=142Ah,
atunci adresa fizic a locaiei de memorie de unde se va extrage urmtoarea
instruciune este suma dintre (CS)10h i (IP), adic 245EAh (valoare pe 20
bii).
Registrul de instruciuni (Instruction Register)
Este organizat sub forma unei structuri de tip coad de 6 octei n care se
aduc n mod continuu instruciuni atunci cnd magistrala sistemului nu este
ocupat cu alte operaii. (Reamintim c ntr-o structur de tip coad primul
element intrat este primul ieit (first in first out)). Aceast anticipare duce la
mbuntirea performanelor unitii centrale de prelucrare UCP ntruct, n
147

Uniti centrale de prelucrare de tip microprocesor

timp ce este executat o instruciune, instruciunea urmtoare este deja prezent


n UCP economisindu-se timp prin suprapunerea (overlapping) fazelor de
aducere a instruciunii cu cea de execuie a unei instruciuni (vezi fig. 3.28,
capitolul 3). Dac instruciunea de executat este o instruciune de ramificaie
atunci coada este golit i nu se economisete timp dar acest lucru are n general
o pondere mic.
Pentru a reliefa timpul disponibil n care coada FIFO poate fi ncrcat se
consider o instruciune de nmulire pe 8 bii. Aceast instruciune reclam cel
puin 71 de impulsuri de ceas iar pentru a aduce un cuvnt din memorie sunt
necesare numai 4 impulsuri de ceas. Rezult c n timpul execuiei acestei
instruciuni va exista un numr mare de impulsuri de ceas n timpul crora
magistrala este liber i astfel se pot aduce noi instruciuni n coada de
instruciuni.
Trebuie remarcat faptul c coada de instruciuni funcioneaz ca o
memorie cache. Cele dou uniti de prelucrare pot s lucreze n paralel: unitatea
BIU extrage instruciuni n avans pentru a permite unitii de execuie UE s
lucreze fr ntrzieri. Acest mod de execuie prin dou uniti de prelucrare
anticipeaz structura pipeline pe mai multe nivele introdus n versiunile
ulterioare.

4.5. Moduri de adresare


Dup cum s-a vzut, subsistemul de memorie reprezint resursa unui
sistem de calcul n care se stocheaz att codul (instruciunii) ct i datele
(operanzi, rezultate). Orice unitate central de prelucrare conine instruciuni
care fac referiri (acceseaz) memoria. Referirea la o locaie de memorie implic
operaia de adresare.
Reamintim c, n general, codul unei instruciuni conine dou cmpuri.
Primul cmp, numit codul operaiei, indic operaia ce se va executa. Cel de-al
doilea cmp, numit cmpul de adrese (cmpul operanzilor), indic informaia de
care are nevoie instruciunea pentru a efectua operaia respectiv.
Mecanismul prin care, pornindu-se de la informaia prezent n formatul
unei instruciuni, se ajunge valoarea operanzilor sau adresa rezultatului se
numete mod de adresare.
n cele ce urmeaz analizm principalele moduri de adresare pentru o
unitate central de prelucrare oarecare, exemplele considerndu-le pentru
microprocesorul I8086.
1) Adresarea imediat

Codul instruciunii conine valoarea operandului. Operandul este adus din


memorie imediat, mpreun cu codul instruciunii. Avantajul acestui mod de
148

Introducere n tiina sistemelor i a calculatoarelor

adresare const n faptul c nu este necesar o faz suplimentar de aducere a


operandului. Inconvenientul const n limitarea valorii operandului de ctre
numrul de bii ai cmpului de adres. De exemplu, dac cmpul adres al
instruciunii este de 8 bii, operandul ca numr cu semn poate lua valori ntre
-127 i +127.
Exemplu:
MOV AX, 2791h ;operandul 2791h va fi ncrcat n registrul AX
MOV BL, 13h
;operandul este octetul cu valoarea 13h, care
;se ncarc n registrul BL.

Cod operaie Mod R/M


Mod de adresare
imediat
AX

2791

2791

Fig. 4.9 Adresarea imediat


Cmpul Mod R/M codific n esen modul de adresare i registrele utilizate
n calculul adreselor (registrele index sau registrele baz).
2) Adresarea direct

n acest mod n cmpul de adres al instruciunii se specific adresa


efectiv, AE, a operandului. Adresa efectiv AE este n raport cu adresa de
nceput a segmentului respectiv. Pentru a obine operandul este necesar un acces
suplimentar la memorie, dup citirea instruciunii.
Memorie
Cod operaie Mod R/M
Mod de adresare
direct

AE
Adr. segment+AE

Operand

Fig. 4.10 Adresarea direct


Se utilizeaz specificarea adresei efective i nu a adresei directe deoarece
adresele directe sunt prea scurte pentru a acoperi ntreg spaiul de adresare. De
exemplu, procesoarele I8086 i I8088 folosesc adrese directe pe 16 bii, iar
149

Uniti centrale de prelucrare de tip microprocesor

procesoarele I80386, I80486 i Pentium folosesc adrese directe pe 16 i 32 de


bii, adrese care nu pot acoperi spaiul de adresare al acestora.
n cazul procesorului I8086, adresa efectiv reprezint deplasamentul
(offset-ul) pe 16 bii fa de adresa de nceput a segmentului (DS)10h.
Exemple:
1. MOV AX, [2791]

8 bii

;depune n registrul AX valoarea care se gsete


;n memorie la adresa DS:2791.

8 bii

16 bii

00000h

Cod operaie Mod R/M

2791

Mod de adresare
direct

(DS)10h+2791

AX

35A3

Memorie

35A3

FFFFFh

Fig. 4.11 Adresarea direct pentru I8086


2. MOV AX, varA1

;copie n registrul AX cuvntul de 16 bii de la


;adresa varA1;
;Exemplu:
;
varA1 dw 35A3h

3. MOV varA1+4, BX

;cuvntul din registrul BX trece n locaia de la


;adresa varA1+4.

3) Adresarea registru

Conceptual, adresarea registru este la fel ca adresarea direct. Spre


deosebire de aceasta, n cmpul adres al instruciunii se specific un numr
reprezentnd un registru din setul de registre ale procesorului. Acest registru
conine operandul.
Spaiul de adrese al unui procesor poate fi mprit n dou: spaiul de
adrese pentru registre i pentru memorie. Prin urmare, o adres poate fi
considerat ca avnd dou pri: un cmp de un bit care specific dac se
adreseaz un registru sau o locaie de memorie, iar al doilea cmp precizeaz
care registru sau locaie de memorie se selecteaz. Deoarece sunt mult mai
150

Introducere n tiina sistemelor i a calculatoarelor

puine registre dect locaii de memorie, formatele instruciunilor vor avea


lungimi diferite.
Dac diferenierea ntre cele dou tipuri de instruciuni se face n codul
operaiei, rezult c va exista un bit n codul operaiei care va preciza spaiul de
adresare.
Utilizarea registrelor are dou motivaii: accesul la registre este mult mai
rapid dect la locaiile din memoria principal i, fiind numai cteva registre,
adresarea lor se face cu mai puini bii, ceea ce nseamn un cod instruciune mai
scurt.
Exemplu:
MOV AX, BX

;AX (BX) - valoarea aflat n registrul BX este


;copiat n registrul AX.

4) Adresarea indirect

Adresarea imediat sau direct specific locaia de memorie sau registrul


care conine operandul. n adresarea indirect, n cmpul adres din instruciune
se specific adresa unei locaii de memorie sau a unui registru care conine
adresa operandului. n figura 4.12 este prezentat ncrcarea indirect a
registrului Reg de la adresa Adr1. Pentru a obine operandul sunt necesare
dou accese la memorie, dup citirea instruciunii: un acces pentru a citi adresa
efectiv a operandului, Adr2, i altul pentru a obine operandul.
Menionm c la unele calculatoare este posibil adresarea indirect
printr-o locaie de memorie (de exemplu PDP 11), permindu-se chiar mai
multe nivele de indirectare, n timp ce la altele acest lucru nu este posibil. La
procesoarele Intel adresarea indirect se poate face numai printr-un registru.

Memorie
Cod operaie Mod R/M

Adr1

Mod de adresare
indirect

Reg

Adr1

Adr2

Adr2

Operand

Operand

Fig. 4.12 Adresarea indirect printr-o locaie de memorie


151

Uniti centrale de prelucrare de tip microprocesor

Deci adresa operandului nu poate fi n memorie. n acest caz unul dintre


registrele procesorului puncteaz la adresa efectiv. De exemplu, la procesorul
I8086 drept pointer ctre adresa efectiv AE se poate utiliza unul dintre
registrele BX, BP, SI, DI (fig. 4.13) n timp ce la I80386 pot fi utilizate toate
registrele.
Memorie
8 bii
8 bii
Cod operaie Mod R/M
BX
BP
SI
SP

AE

Operand

Fig. 4.13 Adresarea indirect printr-un registru la I8086

Exemplu:
MOV AX, [BX]

;AX (DS:BX) n reg. AX se ncarc valoarea ce se


;afl n memorie la adresa dat de coninutul reg. DS i
;de valoarea din reg. BX.

De exemplu, dac la ntlnirea instruciunii anterioare coninutul lui BX este


(BX)=1249h (fig. 4.14), atunci n AX va trece coninutul locaiei de memorie cu
adresa dat de perechea DS:1249h, adic AX (DS:1249h).
BX

1249

00000h

Memorie

Cod operaie Mod R/M


Mod de adresare
indirect cu reg. BX
AX

(DS)10h+1249

6142

6142

FFFFFh

Fig. 4.14. Exemplu de adresare indirect cu reg. BX


152

Introducere n tiina sistemelor i a calculatoarelor

5) Adresarea indexat

Adresa efectiv (AE) a operandului se obine prin nsumarea coninutului


unui registru general, numit registru index, cu o constant. Cmpul adres al
instruciunii conine numrul registrului index i o constant (fig. 4.15).
Memorie
Cod operaie Mod R/M

Registru index

constant

AE

Operand

Fig. 4.15 Adresarea indexat


Adresarea indexat se utilizeaz pentru a accesa un vector, ale crui
elemente se afl n locaii succesive de memorie. Adresa de nceput a vectorului
poate fi constanta din instruciune, iar registrul index conine indicele
elementului curent. Pentru a accesa elementul urmtor din vector se modific
valoarea din registrul index (prin incrementare sau decrementare, dup sensul de
parcurgere a vectorului), constanta rmnnd aceeai. O alt posibilitate este de
a ncrca registrul index cu adresa de nceput a vectorului, iar constanta va
reprezenta indexul care se modific de la un element la altul.
Un alt mod de utilizare a adresrii indexate este copierea unei zone de
cuvinte din memorie, de la o adres adr1 la adresa destinaie adr 2 . n acest caz
se folosete o instruciune cu dou cmpuri de adres, modul de adresare fiind
adresare indexat. Cele dou constante din instruciune se stabilesc la valorile
adr1 , respectiv adr 2 . Pentru transfer se utilizeaz un registru index ce va
conine indicele elementului curent att pentru surs, ct i pentru destinaie.
Deci transferul se poate realiza utiliznd un singur registru.
Folosirea registrelor index este avantajoas deoarece n cazul unor
instruciuni (cele orientate pe prelucrarea irurilor), dup utilizarea registrului
index, acesta se incrementeaz sau se decrementeaz automat. Modificarea
automat se numete autoindexare. Autoindexarea poate avea loc nainte sau
dup utilizarea registrului index.
Procesoarele Intel au dou registre index SI i DI, cu autoindexare
postinstruciune. Adresa efectiv a operandului se obine conform figurii 4.16, n
care este considerat cazul procesorului I8086.

153

Uniti centrale de prelucrare de tip microprocesor

8 bii
Cod operaie

8 bii
Mod R/M

16 bii
constant

SI
DI

Registre
index

00000h

Memorie

AE

Operand

FFFFFh
Fig. 4.16 Adresarea indexat la procesorul I8086
Exemple:
1. MOV AX, 47h [SI]

;coninutul registrului index SI este adunat cu


;47h obinndu-se adresa efectiv, dup care
;coninutul de la aceast adres trece n registrul
;AX (fig. 4.17).

00000h
COP

ModR/M

Registrul
index SI

4480h

Memorie

47h
AE
44C7

(DS) 10h+44C7

678Ah

FFFFFh
AX

678Ah

Fig. 4.17 Exemplu de adresare indexat cu registrul SI


2. ADD AX, TAB[SI]

;la coninutul registrului AX se adun valoarea


;coninut n locaia de memorie cu adresa dat
;de suma dintre adresa de nceput a structurii de
;date (TAB) cu un indice coninut n registrul
;index SI.

154

Introducere n tiina sistemelor i a calculatoarelor

6) Adresarea bazat

Un mod de adresare asemntor cu adresarea indexat este adresarea


bazat. Adresa efectiv a operandului se obine ca o sum dintre o constant i
coninutul unui registru special numit registru baz (fig. 4.18).
Memorie
Cod operaie Mod R/M deplasament

Registru baz

AE

Operand

Fig. 4.18 Adresarea bazat


Constanta, care este un numr ntreg, se numete deplasament. Adresa din
registru se numete adres baz sau adres de baz. Spre deosebire de adresarea
indexat nu are loc autoincrementarea sau autodecrementarea registrului baz.
Adresa de baz se poate modifica doar explicit prin program.
La procesoarele Intel exist dou registre baz BX i BP utilizate pentru
date. Tot cu rol de registre baz sunt registrele de segment CS, DS, ES i SS,
utilizate ca registre baz implicite sau explicite. De exemplu, n cazul
procesorului I8086 adresa efectiv a operandului se obine conform figurii 4.19.

8 bii
Cod operaie
Registre
baz

8 bii
Mod R/M
BX
BP

16 bii
deplasament

00000h

AE

Memorie

Operand

FFFFFh
Fig. 4.19 Adresarea bazat n cazul procesorului I8086
Cnd se folosete BX ca registru baz, n calculul adresei se utilizeaz implicit
registrul segment DS, iar dac se folosete BP ca registrul baz atunci se
utilizeaz implicit registrul segment SS.

155

Uniti centrale de prelucrare de tip microprocesor

Exemple:
1. MOV AX, varA1

;adresa cuvntului ce se ncarc n AX se


;calculeaz la 8086 ca suma dintre
;registrul baz implicit DS nmulit cu
;10h i adresa variabilei varA1.
;Deci (DS)10h + offset varA1.

2. MOV AX, [BX+413Ah]

;se depune n AX valoarea ce se afl n


;memorie la adresa
;(DS)10h + (BX)+413Ah.

3. MOV AX, [BP+413Ah]

;se depune n AX valoarea ce se afl n


;memorie la adresa
;(SS)10h + (BP)+413Ah.

Dac se dorete specificarea unui anumit registru segment, de exemplu ES,


atunci acest lucru se realizeaz ca n exemplul urmtor:
4. MOV BX, ES:[SI]

;registrul baz explicit este ES.


;operandului este (ES)10h+ (SI).

Adresa

7) Adresarea combinat

n programe se utilizeaz combinaii ale modurilor de adresare prezentate


anterior. Prin combinarea modurilor de adresare prezentate se pot obine moduri
noi. De regul, aceste moduri adaug noi nivele de indirectare la cele deja
existente. De exemplu, combinnd adresarea bazat cu cea indexat rezult
adresarea bazat indexat (fig. 4.20) n care adresa operandului se calculeaz pe
baza coninutului a dou registre: baz i index.

8 bii
Cod operaie

8 bii
Mod R/M

16 bii
deplasament

Registre
baz

BX
BP

Registre
index

SI
DI

00000h

AE
FFFFFh

Fig. 4.20 Adresarea bazat indexat la I8086


156

Memorie

Operand

Introducere n tiina sistemelor i a calculatoarelor

Combinnd adresarea indirect cu cea indexat se obine un mod de


adresare indirect indexat. n acest mod adresa obinut dup nsumarea
constantei cu coninutul registrului index reprezint adresa adresei operandului.
Exemplu:
MOV AX, 76Ah [BX] [SI]

;adresare bazat indexat. Adresa


;operandului care se ncarc n AX este
;(DS)10h + (BX) + (SI) + 76Ah.

8) Adresarea prin stiv

Considernd stiva organizat n memorie, accesul pentru introducerea sau


extragerea informaiei n sau din stiv se face numai prin intermediul registrului
SP (Stack Pointer), utiliznd dou instruciuni: PUSH, respectiv POP. Aceste
instruciuni acceseaz stiva i modific automat valoarea din registrul SP.
Presupunem stiva organizat astfel nct dimensiunea ei s creasc de la
adrese mari spre adrese mici (cazul procesoarelor Intel).
Instruciunea PUSH decrementeaz mai nti coninutul registrului SP i
apoi nscrie operandul la adresa din SP.
PUSH adresa
SP SP-1
(SP) (adresa).
Instruciunea POP citete cuvntul din vrful stivei (de la adresa din SP) i
incrementeaz coninutul lui SP.
POP adresa
(adresa) (SP)
SP SP+1.
Exemplu:
PUSH AX ;se introduce n stiv un cuvnt (coninutul lui AX)
POP BX ;se extrage din stiv un cuvnt n registrul BX.
Stiva se utilizeaz pentru transferul parametrilor ntre subprograme
(funcii, proceduri) i programul apelant, la alocarea spaiului pentru variabilele
locale din subprograme, pentru implementarea mecanismului de apel/revenire
din subprograme, pentru implementarea recursivitii.

4.6. Clase de instruciuni ale microprocesorului I8086


n limbaj de asamblare o instruciune se poate reprezenta pe maximum
128 de caractere i are urmtoarea form:
[<etichet>:] [<mnemonic> [<operanzi>] [<comentarii>]],
157

Uniti centrale de prelucrare de tip microprocesor

unde:
<etichet> este un identificator format din maximum 31 de caractere (litere,
cifre i caractere speciale - ?, $, _,,.) din care primul este o liter
sau un caracter special. Limbajul de asamblare utilizeaz nume
rezervate care nu pot fi utilizate ca etichete (mnemonice,
pseudoinstruciuni, operatori, registre, ?, $). Orice etichet are
asociat o valoare reprezentnd adresa relativ n cadrul
segmentului din care face parte primul octet din instruciunea
etichetat;
<mnemonic> indic tipul instruciunii ntr-un limbaj apropiat celui natural;
<operanzi> este un cmp a crui existen i form depinde de tipul
instruciunii (instruciune cu doi operanzi separai prin virgul, cu
un operand sau fr nici un operand);
<comentariul> este text explicativ precedat de separatorul punct i virgul.
Pentru o prezentare ct mai clar, notaiile folosite n cele ce urmeaz au
urmtoarele semnificaii:
d operatorul destinaie, al crui loc va fi ocupat de rezultatul
instruciunii;
s operatorul surs, care rmne neschimbat n urma execuiei
instruciunii;
n date de 8 bii: 0...0FFh;
nn date de 16 bii: 0...0FFFFh;
m8 coninutul unei locaii de memorie adresabil prin adresa efectiv;
m16 coninutul a dou locaii consecutive de memorie, formnd un
operand de 16 bii; adresa efectiv indic octetul mai puin semnificativ al
operandului, iar adresa efectiv +1 indic octetul mai semnificativ;
r8 registre de 8 bii: AL, AH, BL, BH, CL, CH, DL, DH;
r16 registre de 16 bii: AX, BX, CX, DX, SI, DI, BP;
rs registre segment: DS, ES, SS, CS;
F registrul indicatorilor de condiie;
nr numr de poziii binare.
Orice operand scris ntre paranteze drepte reprezint o adres de memorie. De
exemplu, [1AB0] reprezint coninutul locaiei de memorie cu adresa 1AB0, iar
[BX] reprezint coninutul locaiei de memorie a crei adres este dat de
valoarea din BX.
4.6.1. Clasa instruciunilor de transfer

n aceast categorie se ncadreaz instruciuni de transfer de tip clasic


(transfer informaii ntre registre i memorie), instruciuni de transfer pentru
adrese i pentru indicatorii de condiie.
158

Introducere n tiina sistemelor i a calculatoarelor

MOV copierea datelor


MOV d,s
Copie valoarea specificat de operatorul surs n operatorul destinaie
(ds). Operanzii pot fi pe 8 sau 16 bii. Destinaia poate fi: r8, r16, rs, m8, m16,
iar sursa: r8, r16, rs, m8, m16, n, nn. Nu sunt posibile urmtoarele transferuri:
MOV rs,rs (nu se transfer date direct ntre dou registre segment)
MOV rs,nn (instruciunea MOV cu sursa fiind operand imediat iar
destinaia registru segment)
MOV cs,*
MOV m,m (nu se transfer date direct ntre dou locaii de memorie)
Exemplu:
MOV AX,0B2A2h
MOV AL,1Bh
MOV BX,AX

;AXB2A2
;AL1B (AX conine B21Bh)
;BXAX (AX i BX sunt identice)

XCHG schimb operanzii ntre ei


XCHG d,s
Realizeaz rocada ntre surs i destinaie (ds, sd). Operanzii pot fi pe
8 sau 16 bii. Destinaia poate fi: r8, r16, iar sursa: r8, r16, m8, m16. Nu sunt
posibile urmtoarele instruciuni:
XCHG rs,rs
XCHG cs,*
Varianta
XCHG r16
realizeaz implicit schimbul cu acumulatorul AX.
Exemple:
1.
MOV AX,1234h
XCHG AL,AH

2. Instruciunea
XCHG BX,AX
este echivalent cu secvena
MOV CX,AX
MOV AX,BX
MOV BX,CX

;AX1234h
;AX3412h

AX
2
BX

1
CX
3

Dac am scrie doar


MOV AX,BX
MOV BX,AX
informaia din AX s-ar pierde i ambele registre vor conine informaia care era
nainte n BX.
159

Uniti centrale de prelucrare de tip microprocesor

Instruciunea XCHG are avantajul c nu ocup resurse suplimentare, dect


registrele implicate, n timp ce secvena echivalent utilizeaz un al treilea
registru suplimentar, CX.
PUSH - salvarea datelor n stiv
PUSH s
Instruciunea are un singur operand i lucreaz pe 16 bii. Sursa poate fi
r16 i m16. Este permis i salvarea a dou locaii consecutive din memorie,
adresate cu oricare din modurile de adresare prezentate anterior. Dac operandul
este un registru pe 16 bii, aciunile executate sunt:
SPSP-1
SS:SPr16h
SPSP-1
SS:SPr16l
PUSHF - salvarea indicatorilor de condiie n stiv
PUSHF
Aciunile executate sunt:
SPSP-1
SS:SPFh
SPSP-1
SS:SPFl
POP extragerea datelor din stiv
POP d
Extrage doi octei din stiv i i depune n destinaie care poate fi r16 (mai
puin CS) sau m16. Dac destinaia este r16, aciunile efectuate n cadrul
execuiei instruciunii sunt:

r16l[SS:SP]
SPSP+1
r16h[SS:SP]
SPSP+1
Instruciunile PUSH i POP sunt utilizate pentru a salva coninutul
registrelor n memoria intern atunci cnd registrele sunt utilizate temporar n
alte scopuri (de exemplu la apelul subrutinelor).
Secvena
PUSH AX
POP BX
este echivalent cu MOV BX,AX.
160

Introducere n tiina sistemelor i a calculatoarelor

POPF aducerea indicatorilor de condiii din stiv


Execuia instruciunii presupune efectuarea urmtoarelor operaii:
Fl[SS:SP]
SPSP+1
Fh[SS:SP]
SPSP+1
Exemplu: Care va fi coninutul registrelor AX, BX i CX la sfritul execuiei
urmtorului program?

.model small
.stack
.code
MOV AX,11AAh
MOV BX,0BB22h
MOV CX,0CC33h
PUSH AX
PUSH BX
PUSH CX
DEC SP
POP AX
POP BX
INC SP
POP CX
MOV AL,88h
end

; SPSP-1
; SPSP+1

Memorie
DEC SP
PUSH CX

PUSH BX

PUSH AX

xx
33
CC
22
BB
AA
11

POP AX

POP BX
INC SP
POP CX
SS:SP
final

SS:SP
iniial

Fig. 4.21
161

Uniti centrale de prelucrare de tip microprocesor

n figura 4.21 este prezentat modul n care stiva este ncrcat


decrementat (DEC), descrcat i incrementat (INC) conform secvenei de
program prezentate. La sfritul programului, registrele vor fi:
AX3388 (AL88h: ultima instruciune);
BX22CC;
CX11AA.
Exemplu: secvena
PUSH AX
PUSH BX
POP AX
POP BX
este echivalent cu instruciunea
XCHG BX,AX
LEA (Load Effective Address) ncarc adresa efectiv a unei variabile
LEA r16,s
Se ncarc n registrul destinaie adresa efectiv a operatorului destinaie.
LDS (Load Data Segment)
LDS d,s
ncarc n perechea de registre DS i d adresa fizic a operandului surs: n DS
adresa segmentului de date iar n d offset-ul.
LES (Load Extended Data) este similar cu LDS dar se incarc registrul ES
n loc de DS.
XLAT translatare n AL cu baza BX
Modific coninutul registrului AL utiliznd o tabel a crei adres de nceput
este coninut n registrul BX (AL[BX+AL]). Coninutul registrului AL este
interpretat ca adres relativ n tabel.
LAHF memoreaz octetul inferior al indicatorilor de condiii n AH (AHFl).
Octetul inferior are urmtoare structur:

SAHF ncarc coninutul registrului AH n octetul inferior al indicatorilor de


condiii (Fl AH ).
IN citire din port
OUT scriere n port

Asupra acestor instruciuni vom reveni la


descrierea transferului de date (4.8).
162

Introducere n tiina sistemelor i a calculatoarelor

4.6.2. Clasa instruciunilor aritmetice

Operaiile sunt posibile pe 8 sau 16 bii, sursa i destinaia avnd aceeai


dimensiune. Sursa i destinaia nu pot fi concomitent locaii de memorie, iar
adresarea imediat este posibil numai pentru surs. Destinaia poate fi: r8, r16,
m8, m16 iar sursa: r8, r16, m8, m16, n, nn. Toate operaiile din aceast clas
afecteaz corespunztor unul sau mai muli indicatori de condiii.
Reamintim c aceeai configuraie binar poate s fie privit ca un numr
cu semn sau fr semn. Astfel, pentru o reprezentare pe 8 bii, valoarea 80h
poate s fie considerat ca fiind numrul 128 (fr semn) sau 128 (cu semn). Se
pot executa adunri i scderi asupra numerelor reprezentate n BCD n format
mpachetat (2 cifre pe octet) sau despachetat (o cifr pe octet). nmulirile i
mpririle se pot executa doar asupra numerelor n BCD despachetat.
Microprocesorul poate executa cele patru operaii aritmetice considernd
numerele reprezentate cu semn n complement fa de 2 sau fr semn. Exist
instruciuni aritmetice diferite pentru numere cu semn respectiv fr semn numai
pentru nmulire i mprire. Pentru celelalte operaii se utilizeaz aceleai
instruciuni, indiferent dac este vorba de numere cu semn sau fr semn.
Rmne n sarcina programatorului s interpreteze rezultatele obinute pentru a
identifica de exemplu erorile de depire. De pild, dac se adun pe 8 bii
numerele 7Fh i 5h, rezultatul obinut 84h este corect dac se consider c s-au
adunat dou numere fr semn (127+5=132) i este incorect (negativ) dac se
consider c s-au adunat numere cu semn.
ADD - adunare
ADD d,s

Adun sursa cu destinaia i depune rezultatul n destinaie: dd+s.


Indicatori afectai sunt AF, CF, OF, PF, SF, ZF.
n exemplul urmtor se adun valoarea 1 la dou constante cu aceeai
reprezentare binar, reprezentnd dou valori diferite:
MOV AX,-1h ; AX11....11b
ADD AX,1 ; AX0
Valori cu semn

MOV AX,0FFFFh ; AX11....11b


ADD AX,1
; AX0
Valori fr semn

Instruciunea ADD a funcionat n ambele situaii n acelai mod, conform


regulilor aritmeticii n cod complementar.
ADC adunare cu tot cu bitul CF
ADC d,s
Adun operatorul destinaie cu operatorul surs plus valoarea bitului CF. Este
util cnd se lucreaz cu reprezentri pe mai mult de 16 bii. Se adun mai nti
163

Uniti centrale de prelucrare de tip microprocesor

cei doi octei mai puin semnificativi, un eventual transport fiind stocat n CF.
Apoi, se adun prile mai semnificative mpreun cu transportul rezultat.
Primul operand (destinaia): AX BX
Al doilea operand (sursa): CX DX

ADD BX,DX
ADC AX,CX

Rezultatul pe 32 de bii se obine n registrele AX (partea high) BX (low).


INC d
Incrementeaz (adun 1) la destinaie.
AAA - corecie zecimal dup adunare BCD despachetat, registrul AL
fiind implicit.
DAA - corecie zecimal dup adunare BCD mpachetat, registrul AL
fiind implicit.
SUB scdere
SUB d,s
Scade sursa din destinaie i depune rezultatul n destinaie: d d-s
SBB scdere cu borrow (mprumut)
SBB d,s

Se scade din destinaie att sursa ct i valoarea bitului CF (care acum


nseamn mprumut): d d-s-CF. Este util cnd se lucreaz pe mai mult de 16
bii, un eventual mprumut pentru octeii mai puin semnificativi fiind semnalat
cu CF=1.
DEC d
Decrementeaz (scade 1) din destinaie. Instruciunile INC i DEC sunt mai
rapide dect instruciunile ADD d,1 sau SUB d,1.
AAS - corecie zecimal dup scdere BCD despachetat, registrul AL
fiind implicit.
DAS corecie zecimal dup scdere BCD mpachetat, registrul AL
fiind implicit.
NEG negare aritmetic
NEG d
Realizeaz complementul fa de 2 a operandului destinaie (d0-d). CF este
setat automat, cu excepia cazului cnd operandul este 0.
164

Introducere n tiina sistemelor i a calculatoarelor

MUL nmulire ntre numere fr semn


MUL s

Destinaia este acumulatorul (AX).


Cnd lucreaz pe 8 bii AXAL*s8. Dac AH=0, atunci CF0, n alte cazuri
CF1 i OFCF.
Cnd lucreaz pe 16 bii DX:AXAX*s16. Dac DX=0, atunci CF0, n rest
CF1 i OFCF.
MUL AL sau MUL AX semnific ridicarea la ptrat a valorii din AL sau AX.
IMUL - nmulire ntre numere cu semn
IMUL s

Acumulatorul (AX) este destinaie.


Cnd se lucreaz pe 8 bii AXAL*s8. Dac AH=0 sau AH=FFh, atunci
CF0, n alte cazuri CF1 i OFCF.
Cnd se lucreaz pe 16 bii DX:AXAX*s16. Dac DX=0 sau DX=FFFFh,
atunci CF0, n rest CF1 i OFCF.
AAM - corecie zecimal dup nmulire pentru BCD despachetat.
nmulirea se realizeaz cu MUL, apoi se face corecia iar rezultatul
rmne n AX.
DIV - mprire ntre numere fr semn
DIV s

Indicatorii de condiii sunt nedefinii.


Cnd se lucreaz pe 8 bii ALctul (AX/s8), AHrestul (AX/s8).
Cnd se lucreaz pe 16 bii AX ctul (DX:AX/s16), DX restul (DX:AX/s16).
La obinerea unui ct care nu ncape n destinaie apare o ntrerupere de nivel 0.
IDIV - mprire ntre numere cu semn
IDIV s

Lucreaz similar cu instruciunea DIV dar n plus este necesar utilizarea


prealabil a instruciunilor CBW sau CBD pentru ajustarea lungimii
dempritului cu pstrarea semnului. La obinerea unui ct care nu ncape n
destinaie apare o ntrerupere de nivel 0.
CBW conversie de la Byte (8 bii) la Word (16 bii) cu pstrarea
semnului
165

Uniti centrale de prelucrare de tip microprocesor

CWD conversie de la Word (16 bii) la Dword (32 bii) cu pstrarea


semnului
AAD corecie zecimal nainte de mprire pentru BCD despachetat. Se
face corecia dempritului apoi se execut DIV. Rezultatul este depus n AL.
Exemple

1. Cu TurboDebugger-ul se poate urmri modul n care se modific coninutul


acumulatorului, funcie de nmulirea n care este implicat.
.model small
.stack 100h
.code
MOV AX,1111H
MOV BX,0002H
MUL BX
;AX2222h
MOV AX,1111H
MOV CX,2222H
MUL CX
; AX8642h i DX246h
MOV AX,0011H
MUL AL
; AX0121h
end
2. Diferena dintre instruciunile MUL i IMUL.
MOV AL,-30H
MOV BL,2H
MOV CL,2H
MUL BL
MOV AH,0H
MOV AL,-30H
IMUL CL

;AXD0h
;AX01A0h
;AX00D0h
;AXEEA0h

4.6.3. Clasa instruciunilor logice


AND I logic pe bit
AND d,s
Realizeaz operaia I logic la nivel de bit ntre surs i destinaie iar
rezultatul se depune n destinaie. Sursa se mai numete masc. Se utilizeaz
pentru a fora anumite poziii binare, indicate prin masc, pe 0 logic. Valorile de
1 logic din masc las neschimbate valorile corespunztoare din destinaie.
Modific indicatorii CF, OF, PF, SF i ZF.
166

Introducere n tiina sistemelor i a calculatoarelor

Exemplu:
AND AL,0h
AND AL,0FFh

;AL0h
;AL rmne neschimbat

OR SAU logic pe bit


OR d,s
Realizeaz operaia SAU logic la nivel de bit ntre surs i destinaie iar
rezultatul se depune n destinaie. Se utilizeaz pentru a fora anumite poziii
binare, indicate prin masc, pe 1 logic.
Exemplu:

OR AL,0h
OR AL,0FFh

;AL rmne neschimbat


;AL FFh

XOR d,s
Calculeaz SAU EXCLUSIV la nivel de bit a celor doi operanzi,
rezultatul fiind depus n destinaie: d ds. Modific indicatorii CF, OF, PF,
SF i ZF.
Exemplu:

XOR AX,AX
XOR AH,0FFh

; AX0
; se inverseaz toi biii din AH

NOT d
Realizeaz complementarea fa de 1 a operandului: dFFh-d (pe 8 bii)
sau dFFFFh-d (pe 16 bii). Nu sunt afectai indicatorii de condiii.
TEST d,s
Realizeaz operaii I logic pe bit ntre cei doi operanzi, fr a modifica
destinaia, dar modific indicatorii CF, OF, PF, SF i ZF.
CMP d,s
Compar aritmetic cei doi operanzi prin scdere (d-s), fr generarea
rezultatului. Poziioneaz doar indicatorii de condiii ca la operaia de scdere.
Modul de interpretare al operanzilor, cu sau fr semn, este foarte important n
cazul comparaiei a dou numere. Dac numerele sunt fr semn:
CF=0 i ZF=0 d>s
CF=0 i ZF=1 d=s
CF=1 i ZF=0 d<s
167

Uniti centrale de prelucrare de tip microprocesor

Pentru numere cu semn:


SF=OF d>s
ZF=1 d=s
SF OF d<s
Exemplu: Se evideniaz modul de lucru al instruciunilor NEG, NOT i XOR

MOV AX,0AA11H
MOV BX,0AA11H
MOV CX,0AA11H
NEG AX
NOT BX
XOR CX,0FFH

;AX55EFh
;AX55EEh
;CXAAEEh

4.6.4. Instruciuni pentru poziionarea indicatorilor de condiii


CLC (CLear Carry) pune pe 0 valoarea indicatorului CF
STC (SeT Carry) pune pe 1 valoarea indicatorului CF
CMC (CoMplement Carry) complementeaz valoarea indicatorului CF
CLD pune pe 0 valoarea indicatorului DF (stabilete direcie
cresctoare)
STD pune pe 1 valoarea indicatorului DF (stabilete direcie
descresctoare)
CLI dezactiveaz sistemul de ntreruperi (IF=0)
STI activeaz sistemul de ntreruperi (IF=1)
4.6.5. Clasa instruciunilor de deplasare i rotaie

Instruciunile din aceast clas opereaz numai asupra registrelor.


Deplasarea informaiei dintr-un registru se poate realiza la stnga sau la dreapta
i poate fi de tip logic sau aritmetic.
SAL (Shift Arithmetic Left)
SAL d,nr
Deplaseaz coninutul operandului destinaie la stnga cu numrul de
poziii specificat (nr), poziiile libere devenind 0. CF va conine ultimul bit
deplasat n afara registrului. Este echivalent cu nmulirea destinaiei cu 2nr.
Trebuie precizat c nr poate fi 1 sau valoarea din CL. O instruciune de tipul
SAL AL,4 va fi interpretat de asamblor ca 4 instruciuni consecutive SAL
AL,1.
Exemplu: SAL AL,3
168

Introducere n tiina sistemelor i a calculatoarelor

AL 1

se pierd
dup execuia instruciunii
nainte de execuia instruciunii
CF0 (al treilea bit deplasat la stnga n afara registrului)
SHL (SHift logic Left)
SHL d,nr
Funcioneaz similar cu instruciunea SAL. De altfel, asamblorul
asimileaz instruciunea SAL cu SHL.
SAR (Shift Arithmetic Right)
SAR d,nr
Deplaseaz coninutul operandului destinaie la dreapta cu numrul de
poziii specificat (nr), iar bitul de semn se extinde (propag). Valoarea nr este 1
sau reprezint coninutul registrului CL. CF va conine bitul cel mai puin
semnificativ (ultimul) deplasat. Este echivalent cu operaia de mprire a
destinaiei la 2nr. ntre cei doi bii ai rezultatului, cu cel mai nalt ordin, se
execut un SAU-EXCLUSIV pentru a poziiona indicatorul OF.
Exemplu: SAR AL,3

AL 1

se pierd
dup execuia instruciunii
nainte de execuia instruciunii
CF0 (al treilea bit deplasat la dreapta n afara registrului)
OF0 (11)
SHR (SHift Right)
SHR d,nr
Deplaseaz logic coninutul operandului destinaie la dreapta cu numrul
de poziii specificat (nr.). Informaia registrului este privit de aceast dat ca o
combinaie logic nu ca un numr i bitul cel mai semnificativ nu se extinde.
Poziiile binare rmase libere devin 0. Valoarea nr este 1 sau este coninutul
registrului CL. CF va conine bitul cel mai puin semnificativ (ultimul) deplasat.
Exemplu: SHR AL,3

AL 1

dup execuia instruciunii

se pierd
nainte de execuia instruciunii
169

Uniti centrale de prelucrare de tip microprocesor

CF0 (al treilea bit deplasat la dreapta n afara registrului)


Instruciunile de nmulire i mprire sunt cele mai lente instruciuni
executate de microprocesorul 8086. De aceea, ori de cte ori este posibil este de
preferat nlocuirea nmulirilor i mpririlor cu secvene de adunri i deplasri.
De exemplu, pentru secvena
XOR AH,AH
SHL AX,1
sunt necesare 4 cicluri main, n timp ce pentru secvena
MOV BL,2
MUL BL
sunt necesare mai mult de 70 de cicluri main.
ROL (Rotate Left)
ROL d,nr
Rotete coninutul destinaiei la stnga (ctre poziia cea mai
semnificativ), prin carry, cu numrul de poziii specificat, exceptnd bitul din
poziia cea mai semnificativ (MSB) care este mutat n poziia cea mai puin
semnificativ (LSB). Operandul destinaie poate fi un registru pe 8 sau 16 bii, o
locaie de memorie (8 bii) sau dou locaii de memorie (16 bii) iar nr are
aceeai semnificaie ca i la instruciunile de deplasare. Valoarea indicatorului
CF nu este parte a rezultatului dar recepioneaz o copie a bitului care a fost
deplasat de la un capt la cellalt. Pentru o singur rotaie (ROL 1), dac CF este
diferit de bitul de semn, atunci OF1. n celelalte cazuri OF este nedefinit.

CF

Registru

Exemplu: ROL AL,2

AL 1

nainte de execuie
CF0 (al doilea bit deplasat la dreapta din MSB)

dup execuie

ROR (Rotate Right)


ROR d,nr
Rotete coninutul destinaiei la dreapta (ctre poziia cea mai puin
semnificativ), prin carry, cu numrul de poziii specificat, exceptnd bitul din
170

Introducere n tiina sistemelor i a calculatoarelor

poziia cea mai puin semnificativ (LSB) care este mutat n poziia cea mai
semnificativ (MSB). Operandul destinaie poate fi: r8, r16, m8 sau m16 iar nr are
aceeai semnificaie ca i la instruciunile de deplasare. Valoarea indicatorului
CF nu este parte a rezultatului dar recepioneaz o copie a bitului care a fost
deplasat de la un capt la cellalt. Pentru o singur rotaie (ROR 1), dac CF este
diferit de bitul de semn, atunci OF1. n celelalte cazuri OF este nedefinit.
Registru

CF

Exemplu: ROR AL,2

nainte de execuie
CF1 (al doilea bit deplasat la dreapta din MSB)

dup execuie

RCL (Rotate with Carry Left)


RCL d,nr
Rotete coninutul destinaiei la stnga (ctre poziia cea mai
semnificativ) cu tot cu carry, cu numrul de poziii specificat. CF este parte din
informaia rotit. Instruciunea RCL deplaseaz CF n LSB i MSB n CF.
Operanzii au aceeai semnificaie ca i la precedentele instruciuni de rotaie.
Pentru o singur rotaie (RCL 1), dac CF este diferit de bitul de semn, atunci
OF1. n celelalte cazuri OF este nedefinit.

Registru

CF

RCR (Rotate with Carry Right)


RCR d,nr
Rotete coninutul destinaiei la dreapta cu tot cu carry, cu numrul de
poziii specificat. CF este parte din informaia rotit. Instruciunea RCL
deplaseaz CF n MSB i LSB n CF. Operanzii au aceeai semnificaie ca i la
precedentele instruciuni de rotaie. Sunt valabile aceleai precizri pentru OF.

Registru

CF
171

Uniti centrale de prelucrare de tip microprocesor

Exemple:
1. Diferena dintre instruciunile SHR i SAR

MOV AX,-4H
MOV CL,2H
SAR AX,CL
MOV BX,-4H
SHR BX,CL

;AX0FFFCh
;CL conine nr de poziii pentru deplasare
;deplasare aritmetic dreapta, AX0FFFFh
;BX0FFFCh
; deplasare logic dreapta (bitul de semn nu se extinde)
BX3FFFh

2. Transmiterea unui bit ntre dou registre


MOV AX,8008H
MOV DX,1000H
SHL AX,1H
;MSB=1 din AX trece n CF, AX0010h
RCL DX,1H
;CF trece n LSB din DX, DX0011h
3. Dou moduri de a nmuli acelai numr, 2, din registrele AX i BX, cu
acelai factor (25610=28 =0100h)
MOV AX,0002H
MOV BX,0002H
MOV CL,8H
SHL BX,CL
MOV CX,0100H
MUL CX

; AX0002h
; BX0002h
; CL08h, nr de poziii cu care se va face deplasarea stnga
;deplasare stnga cu 8 poziii, BX0200h
; CX0100h (25610), al doilea operand al nmulirii
;nmulirea acumulatorului cu CX, AX0200h

La sfritul acestei secvene de program registrele AX i BX vor conine


acelai rezultat.
4.6.6. Instruciuni de salt

Instruciunile de salt realizeaz o ntrerupere a secvenei de instruciuni,


urmnd a se ncepe execuia unei alte secvene de instruciuni, localizat ntr-o
alt zon de memorie. Mai exact, controlul va fi transferat la eticheta ce urmeaz
mnemonicului instruciunii de salt. Ca atare, coninutul registrului IP se va
modifica pentru a indica prima instruciune din noua secven.
Dac saltul se realizeaz fr verificarea unei condiii logice saltul se
numete necondiionat. Dac dimpotriv, saltul se realizeaz n urma verificrii
unei condiii (se testeaz indicatorii de condiii) saltul se numete condiionat.
n funcie de deprtarea (distana) la care se realizeaz saltul, exist
instruciuni de salt
intrasegment saltul se realizeaz n acelai segment de cod;
172

Introducere n tiina sistemelor i a calculatoarelor

intersegment - saltul se realizeaz n alt segment de cod.


O instruciune de salt necondiionat are forma
JMP dest

unde dest reprezint eticheta prin care se specific locul primei instruciuni din
noua secven.
n cazul saltului intrasegment relativ, dest specific o valoare n
complement fa de 2, pe 8 bii, care se va aduna la valoarea din registrul IP.
Valoarea poate fi pozitiv sau negativ astfel nct salturile pot avea ca
destinaie o instruciune precedent sau urmtoare. Destinaia nu poate fi n
avans mai mare de 128 octei sau mai departe de 127 octei.
n cazul saltului intrasegment direct, dest este o valoare pe 16 bii care
reprezint offset-ul instruciunii destinaie n cadrul segmentului de cod curent
(IPdest).
n cazul saltului intersegment dest este o valoare pe 32 de bii i va
specifica att segmentul ct i offset-ul instruciunii destinaie (CS:IPdest).
Instruciunile de salt condiionat sunt cu adresare relativ, deci dest
reprezint o valoare pe 8 bii. n cazul n care se dorete efectuarea unui salt
condiionat pe o distan mai mare de 128 octei, trebuie s se utilizeze dou
instruciuni de salt: una de salt condiionat i una de salt necondiionat. n
principiu, o instruciune de salt condiionat are formatul:
Jcondiie

dest.

La execuia instruciunii se verific condiia i dac aceasta este adevrat


se execut saltul la eticheta dest. n caz contrar, se execut instruciunea imediat
urmtoare. De cele mai multe ori, aceste instruciuni urmeaz operaiilor logice
sau aritmetice. n tabelul 4.1 sunt prezentate mnemonicele instruciunilor de salt
condiionat i condiiile pentru execuia saltului.
Tabelul 4.1
Mnemonic
JZ, JE
JL, JNGE
JLE, JNG
JB, JNAE, JC
JBE, JNA
JP, JPE
JO
JNE, JNZ
JNL, JGE

Condiie
ZF=1
SFOF (compar valori cu semn)
ZF=1 sau SFOF (compar valori cu semn)
CF=1 (compar valori fr semn)
CF=1 sau ZF=1 (compar valori fr semn)
PF=1
OF=1
ZF=1
SF=OF (compar valori cu semn)
173

Uniti centrale de prelucrare de tip microprocesor

JNLE, JG
JNB, JAE, JNC
JNBE, JA
JNP, JPO
JNO
JNS
JCXZ

ZF=0 i SF=OF (compar valori cu semn)


CF=0 (compar valori fr semn)
CF=ZF=0 (compar valori fr semn)
PF=0
OF=0
SF=0
coninutul reg. CX este zero

Se consider cazul comparrii a dou numere cu instruciunea CMP. n funcie


de tipul reprezentrii numerelor, cu sau fr semn, pentru a realiza execuia unui
salt pentru o condiie dat, se vor utiliza urmtoarele instruciuni:
Se execut salt dac
d>s
d=s
ds
d<s
d<=s
d>=s

Tabelul 4.2
Reprezentare fr semn
JA
JE
JNE
JB
JBE
JAE

Reprezentare cu semn
JG
JE
JNE
JL
JLE
JGE

4.6.7. Clasa instruciunilor de buclare

Aceste instruciuni au drept scop execuia repetat a unei secvene de


instruciuni (cicluri), depinznd de o anumit condiie
LOOP dest
unde dest specific o valoare n complement fa de 2, pe 8 bii, care se va
aduna la valoarea din registrul IP. Se repet secvena de instruciuni cuprins
ntre LOOP i adresa destinaie, pn cnd CX=0. La fiecare trecere prin bucl
se face decrementarea automat a registrului CX.
LOOPZ dest
Bucla este executat dac CX0 i ZF=1. Oprirea se face cnd fie CX=0
fie ZF=0.
LOOPNZ dest
Bucla este executat dac CX0 i ZF=0. Oprirea se face cnd fie CX=0
fie ZF=1.

174

Introducere n tiina sistemelor i a calculatoarelor

LOOPE dest
Funcioneaz ca i LOOPZ.
LOOPNE dest
Funcioneaz ca i LOOPNZ.
4.6.8. Subrutine. Transmiterea parametrilor

O subrutin este o secven de instruciuni ce poate fi apelat, n acelai


program, n mai multe rnduri, pentru efectuarea unor operaii bine precizate.
Utilizarea subrutinelor prezint avantajul c faciliteaz organizarea logic a
structurii programelor i reprezint principalul instrument al programrii
modulare, conform creia un program mai complex poate fi divizat n module
mai simple.
Pentru a putea implementa mecanismul de lucru cu subrutine este nevoie de:
o instruciune care s realizeze apelul subrutinei, adic s ntrerup
secvena curent (a programului apelant, principal), s memoreze locul de
revenire (instruciunea ce urmeaz dup apel) i s realizeze saltul pentru
execuia rutinei;
o instruciune de revenire din subrutin la secvena iniial, pe baza
informaiilor memorate la apel;
un mecanism care s asigure comunicarea i transferul de date ntre
subrutin i programul apelant.
Apelul unei subrutine se realizeaz cu instruciunea:
CALL dest,

unde dest reprezint eticheta subrutinei (a primei instruciuni).


Dac adresa subrutinei este n acelai segment se specific doar offset-ul:
SPSP-2
stiv IP
IP IP+dest16
Dac adresa subrutinei este n alt segment, se specific att adresa de
segment ct i adresa efectiv:
SPSP-2
stiv CS
SPSP-2
stiv IP
175

Uniti centrale de prelucrare de tip microprocesor

IP dest16
CSadresa de segment
Revenirea din subrutin se realizeaz cu instruciunea
RET.

Aceasta este ultima instruciune din subrutin i execuia sa are ca efect


extragerea din stiv a octeilor necesari pentru refacerea adresei de ntoarcere. n
cazul n care apelul a fost intrasegment cei doi octei din vrful stivei vor fi
ncrcai n IP, dup regulile cunoscute. n cazul unui apel intersegment primii
doi octei din vrful stivei vor fi ncrcai n IP iar urmtorii doi n CS.
Dac pe parcursul execuiei instruciunilor subrutinei se altereaz vrful
stivei, nu se va mai reveni n programul apelant dup instruciunea CALL i
programatorul trebuie s in cont de acest fapt. Registrele generale a cror
coninut se va modifica n cadrul subrutinei se vor salva n stiv nainte de
modificarea lor i se restaureaz nainte de ntoarcerea din subrutin.
Transmiterea parametrilor ntre programul apelant i rutin se realizeaz
fie prin intermediul registrelor fie prin intermediul stivei. n cazul rentoarcerii
din procedur se poate utiliza i forma
RET n ,
unde n este numrul de octei cu care se descarc stiva dup ce se preia adresa
de revenire. Aceast form este util n cazul n care argumentele procedurii se
transmit prin intermediul stivei, pentru a descrca stiva de valorile argumentelor.
n principiu, pentru a salva i reface coninutul registrelor exist dou modaliti:
Instruciuni PUSH i POP plasate n programul apelant, dar aceast
metod presupune consum de memorie pentru programul apelant;
PUSHF
.
.
PUSH DX
CALL sbr
POP DX
.
.
POPF

salt

revenire

sbr

RET

Instruciuni PUSH i POP plasate n subrutin.

176

Introducere n tiina sistemelor i a calculatoarelor

salt
CALL sbr

revenire

sbr
PUSHF
.
PUSH DX
.....................
POP DX
.
.
POPF
RET

Exemplu: acest program evideniaz un apel corect de subrutin (sbr), revenirea


n programul apelant fcndu-se la instruciunea ce urmeaz dup CALL.
Urmrii cu TurboDebugger-ul modul n care se modific coninutul registrelor
generale, a registrelor SP i IP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14

IP
0000
0000
0000
0000 B8 0011
0003 BB 0002
0006 E8 0002
0009 48
000A 43
000B F7 E3
000D 03 C3
000F F6 E0
0011 C3

.model small
.stack
.code
mov ax,0011H
mov bx,0002h
call sbr
;apelul rutinei sbr, 0009h stiv
dec ax
;AX050FH
inc bx
;BX0003H
sbr: mul bx
add ax,bx
mul al
ret
end

;AX0022H
;AX0024H
;AX0510H
;0009h IP

Exemplu: urmtorul program reprezint un exemplu de utilizare greit a stivei


n paralel cu apelul rutinei sb. Vrful stivei se altereaz datorit folosirii n
rutin a instruciunilor PUSH, INC SP i POP i prin urmare la execuia
instruciunii RET vrful stivei nu mai conine adresa de revenire a primei
instruciuni dup CALL ( adic 000Ah).

177

Uniti centrale de prelucrare de tip microprocesor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

IP
0000
0000
0000
0000 B8 0A11
0003 BB 0B22
0006 50
0007 E8 0002
000A 40
000B 43
000C 53
000D 44
000E 5B
000F 50
0010 C3

.model small
.stack
.code
mov ax,0a11H
mov bx,0b22H
push ax
call sb
;apelul rutinei sb, adresa instruciunii
inc ax
;de revenire 000AHstiv
inc bx
sb: push bx ;rutina, bxstiv
inc sp
;incrementeaz SP
pop bx
;BX0A0Bh
push ax
ret
end

4.6.9. Instruciuni pentru lucru cu iruri

Elementele unui ir de caractere pot fi octei sau cuvinte (doi octei).


Pentru toate instruciunile pe iruri de caractere se consider c irul surs
(dac exist) se afl n segmentul curent de date, a crui adres de nceput este
coninut n registrul DS, iar adresa relativ a irului n segment este coninut n
SI. irul destinaie (dac exist) se afl n segmentul extern de date, a crui
adres de nceput se afl n registrul ES, iar adresa relativ n segment se afl n
DI. Pentru irul surs se poate considera i alt registru de segment utiliznd un
prefix de registru adecvat. Indicatorul DF arat sensul de parcurgere n memorie
a irurilor, mai precis modul n care se actualizeaz registrele de index SI i DI
dup execuia operaiei. Dac DF=0 atunci se consider c irurile vor fi
parcurse n sens cresctor al adreselor elementelor irului i n sens descresctor
dac DF=1. Actualizarea se face prin incrementare (dac DF=0) sau
decrementare (pentru DF=1) cu unu sau cu doi dup cum se execut o operaie
care implic un octet sau un cuvnt. Numrul elementelor irului se afl n
contorul CX.
Operaiile pe iruri de caractere pot fi precedate de un prefix care indic
condiiile n care se repet execuia instruciunii (operaiei): epuizarea unui
contor prestabilit sau pn la ndeplinirea unei anumite condiii. Exist
urmtoarele prefixe de repetabilitate:
REP repetare pn cnd coninutul registrului CX devine 0;
REPE sau REPZ- repet pn cnd CX devine 0 sau pn cnd ZF=0;
178

Introducere n tiina sistemelor i a calculatoarelor

REPNZ sau REPNE repet pn cnd CX devine 0 sau pn cnd


ZF=1.

Prefixele REPE, REPZ, REPNZ sau REPNE au sens numai mpreun


cu instruciuni care afecteaz corespunztor indicatorii de condiii, iar mpreun
cu restul instruciunilor au acelai efect ca i prefixul REP. De exemplu:
REP MOVSW
poate fi nlocuit prin secvena:
aici: MOVSW
LOOP aici
Operaiile elementare pe irurile de caractere sunt transferurile i
comparaiile.
MOVS transfer un element din irul surs n irul destinaie, cu
urmtoarele mnemonice posibile:
MOVSB transfer elemente pe 8 bii;
MOVSW - transfer cuvinte (elemente pe 16 bii).
n cazul transferului pe 8 bii [ES:DI][DS:SI], iar n cazul transferului
pe 16 bii [ES:DI][DS:SI] i [ES:DI+1][DS:SI+1]. Dac DF=1 atunci
DIDI-n i SISI-n, unde n=1 pentru transferuri pe octet i n=2 pentru
transferuri pe cuvnt. Zonele de memorie surs i destinaie trebuie s nu se
suprapun. n cazul suprapunerii, copierea are loc dar nu n modul dorit. Aceste
instruciuni nu afecteaz indicatorii de condiii i prin urmare se va folosi numai
prefixul REP.
STOS realizeaz transferul unui element din acumulatorul AX sau AL
n irul destinaie. Mnemonicele posibile sunt STOSB (sursa fiind AL) i
STOSW (sursa fiind AX). n cazul transferului pe 8 bii [ES:DI]AL, iar n
cazul transferului pe 16 bii [ES:DI]AL i [ES:DI+1]AH. Rmn valabile i
celelalte observaii de la MOVS.
LODS transfer un element din irul surs n AL sau AX. Mnemonicele
posibile sunt LODB (destinaia fiind AL) i LODW (destinaia fiind AX). n
cazul transferului pe 8 bii AL[DS:SI], iar n cazul transferului pe 16 bii
AL[DS:SI] i AH[DS:SI+1]. Rmn valabile i celelalte observaii de la
MOVS i STOS.
CMPS realizeaz compararea unui element din irul surs cu cel
corespondent (aceeai poziie) din irul destinaie. Mnemonicele posibile sunt
CMPB (comparaie pe octet) i CMPW (comparaie pe cuvnt). Afecteaz
indicatorii de condiii AF, CF, OF, PF, SF, ZF i prin urmare se poate folosi
orice prefix.
179

Uniti centrale de prelucrare de tip microprocesor

SCAS - compar un element dintr-un ir cu informaia din registrul AL


sau AX. Mnemonicele posibile sunt SCASB (compar cu AL) i SCASW
(compar cu AX).
Exemplu: Se compar dou iruri de caractere declarate prin urmtoarele
segmente de date:

date1 segment
alfa db 1,2,3,4,5,6
lung equ this byte-alfa
date1 ends
date2 segment
beta db 1,2,3,5
date2 ends

;lungimea primului segment

Coninutul registrelor DS i ES se precizeaz cu pseudoinstruciunea


assume ds:date1, es:date2.
Dup ce se execut secvena de instruciuni:
mov si,offset alfa
mov di,offset beta
mov cx,lung
;CXlungimea irurilor
cld
;se specific direcia DF0
repz cmpsb
registrul CX va conine valoarea 2 (6-4) deoarece octeii din poziia 4 sunt
diferii, iar registrul DI va conine valoarea 4.
4.6.10. Instruciuni speciale de control
NOP instruciune fr operaie
HLT oprirea oricrei activiti a procesorului; se poate iei numai cu
RESET sau ntrerupere hard
WAIT intr ntr-o stare de ateptare pn cnd pinul BUSY (legtur
periferic) devine inactiv
LOCK rezervare magistral pentru procesor pe parcursul execuiei unei
instruciuni

180

Introducere n tiina sistemelor i a calculatoarelor

4.7. Sistemul de ntreruperi


Prin ntrerupere se nelege oprirea temporar a execuiei unui program,
la comanda unui semnal extern sau a unui eveniment intern i execuia unui
program specific de tratare a ntreruperii. Dup deservirea ntreruperii,
programul se reia din punctul ntrerupt. Sistemul de ntreruperi permite
sincronizarea activitii unitii centrale cu anumite evenimente externe,
detectarea rapid a unor situaii anormale precum i tratarea unor sarcini paralele
pe baza unei ierarhii de prioriti.
Procesorul Intel 8086 recunoate 258 de tipuri (nivele) de ntreruperi.
ntreruperile pot fi provocate de:
evenimente interne (de ex. depirea capacitii de reprezentare sau
mprirea la zero);
evenimente externe (transfer de date iniiat de un periferic).
ntreruperile externe sunt generate prin activarea semnalelor
INTR - ntreruperi mascabile;
NMI (Non-Mascable Interrupts) - ntreruperi nemascabile.
ntreruperile mascabile pot fi invalidate prin resetarea (tergerea)
indicatorului de condiie IF din PSW. Dup cum am artat, starea indicatorului
IF se poate modifica prin program cu ajutorul instruciunilor STI (IF=1) i CLI
(IF=0). Acest indicator este ters imediat n momentul deservirii unei ntreruperi,
blocnd astfel deservirea altei ntreruperi. Reactivarea ntreruperilor mascabile
se poate face fie explicit printr-o instruciune STI fie n mod implicit la
ncheierea rutinei de ntreruperi (execuia instruciunii IRET). Exist secvene de
instruciuni ce nu pot fi ntrerupte i care se numesc critice. Un exemplu n acest
sens sunt secvenele de temporizare.
O ntrerupere nemascabil (NMI) nu este afectat de indicatorul IF i este
utilizat n general pentru semnalizarea unor evenimente critice pentru
funcionarea sistemului, ca de pild cderea tensiunii de alimentare sau
detectarea unei erori de paritate.
ntreruperile interne sunt nemascabile i pot fi provocate de urmtoarele
evenimente:
ncercare de mprire la zero;
execuia unei instruciuni de tip INT n (n nivelul ntreruperii);
execuia instruciunii INTO (INTerrupt on Overflow) cnd indicatorul de
condiie OF este setat (OF=1);
ntrerupere dup fiecare instruciune executat, dac indicatorul TF este
setat (TF=1).

ntreruperile sunt deservite prin intermediul unor rutine de ntrerupere.


Rutina ce trebuie lansat n execuie pentru tratarea ntreruperii se identific
181

Uniti centrale de prelucrare de tip microprocesor

printr-o valoare (pe 8 bii) numit vector sau nivel de ntreruperi. Adresele de
nceput ale rutinelor de ntreruperi sunt memorate n aa numita tabel de
ntreruperi. Pentru fiecare ntrerupere sunt rezervai patru octei (dou cuvinte)
prin care se specific adresa de segment i adresa de offset, mai exact coninutul
registrelor CS i IP. Tabela este plasat la nceputul spaiului de memorie, 0h
3FFh (3FFh28*22-1, 28 256 nivele de ntreruperi, 22 4 octei pentru
fiecare rutin).
vector
ntreruperi
0

CS0
IP0
CS1
IP1

la dispoziia
programatorului

CS20
IP20

CS FF
IP FF

Fig. 4.22. Tabela vectorilor de ntreruperi


Dispozitivul care genereaz o ntrerupere extern furnizeaz valoarea
vectorului de ntreruperi. Aceast valoare este preluat de microprocesor de pe
magistrala de date n momentul n care accept ntreruperea. n cazul
ntreruperilor soft (instruciunea INT n) valoarea vectorului este transmis odat
cu instruciunea.
Exist vectori cu destinaie special:
0 pentru operaia de mprire la zero;
1 pentru execuia pas cu pas a instruciunilor;
2 ntrerupere nemascabil (NMI);
3 rutin pentru breakpoint;
4 tratarea depirilor;
5 tratarea erorilor de funcionare a imprimantei;
6,7 rezervai;
8 pentru ceasul de timp real;
9 tratarea ntreruperilor externe de la tastatur (prima rutin BIOS
pentru tastatur).
La apariia unei ntreruperi, procesorul va executa n mod automat
urmtoarele operaii:
salveaz n stiv registrul indicatorilor de condiii (PSW);
182

Introducere n tiina sistemelor i a calculatoarelor

salveaz n stiv coninutul registrelor CS i IP, mai exact locul de


revenire;
numai n cazul n care ntreruperea este generat de un semnal pe linia
INTR, microprocesorul genereaz dou cicluri INTA (INTerrupt
Acknowledge). n primul confirm acceptarea ntreruperii i identific
sursa de ntrerupere. n al doilea ciclu citete valoarea vectorului de
ntrerupere de pe magistrala de date;
se reseteaz bitul IF (IF=0) i astfel se invalideaz sistemul de ntreruperi
mascabile;
se reseteaz bitul TF (TF=0), adic se dezactiveaz logica pentru execuia
pas cu pas a instruciunilor. Dac acest bit ar fi 1 nu s-ar mai putea
executa niciodat rutina de tratare a ntreruperii;
folosind ca index vectorul de ntreruperi (n) se preia adresa rutinei din
tabela de ntreruperi: n*4CS i n*4+2IP;
se execut saltul la adresa rutinei de tratare a ntreruperii i se execut
rutina;
revenirea din rutina de tratare a ntreruperii se realizeaz prin execuia
instruciunii IRET, care presupune extragerea din stiv a adresei de
revenire (SS:SPIP, SS:SP+2CS) i refacerea cuvntului de stare
(SS:SP+4PSW);
se continu execuia programului ntrerupt.
ntreruperile generate la dorina programatorului sunt instruciuni de
forma INT n. O astfel de instruciune se poate utiliza pentru apelul unor funcii
a cror rutin de implementare se poate schimba n mod dinamic. Prin
modificarea tabelei de ntreruperi (zona aflat la dispoziia utilizatorului) se
poate redirecta apelul de funcie. Aceast metod se folosete pentru apelul
rutinelor de baz din nucleul sistemului de operare (BIOS) i pentru apelul
funciilor sistem.
Principalele puncte de intrare puse la dispoziia utilizatorilor de ctre
BIOS sunt:
INT 10H
ntrerupere pentru utilizarea terminalului grafic;
ntrerupere pentru determinarea configuraiei sistemului;
INT 11H
INT 12H
ntrerupere pentru determinarea capacitii RAM;
INT 13H
ntrerupere pentru utilizarea discului (flexibil sau dur);
INT 14H
ntrerupere pentru utilizarea interfeei seriale;
INT 15H
funcii specifice AT;
INT 16H
ntrerupere pentru utilizarea tastaturii (a doua rutin pentru
tastatur): trateaz cererile de ntrerupere solicitate de ctre
programe pentru obinerea unui caracter de la tastatur;
INT 17H
ntrerupere pentru utilizarea imprimantei;

183

Uniti centrale de prelucrare de tip microprocesor

INT 19H
INT 1Ah

ntrerupere pentru apelul ncrctorului sistemului de operare


rezident pe disc;
ntrerupere pentru controlul ceasului de timp real.

n cazul unor ntreruperi multiple deservirea acestora se realizeaz n ordinea


prioritilor. Prioritatea descrete cu nivelul de ntrerupere (nivelul 0 are
prioritate maxim).

Microprocesor

Controlerul de ntreruperi I8259A a fost proiectat pentru a deservi


familia de procesoare Intel. ncepnd cu varianta Pentium, funciile acestui
controler au fost integrate n procesor. Acest circuit poate deservi maximum 8
linii de ntreruperi.

Magistral
IRQ0
IRQ1

INTR
INTA

Interfa
intrare/ieire

Interfa
intrare/ieire

I8259A

IRQ7
Fig. 4.21. Conectarea controlerului I8259A n sistem
Pentru extinderea numrului de ntreruperi deservite, se pot conecta n
cascad mai multe controlere. Legtura dintre controler i microprocesor se
realizeaz prin semnalele INTR i INTA. Controlerul I8259A activeaz
semnalul INTR n cazul n care sunt ndeplinite condiiile:
exist o cerere de ntrerupere pe una din intrrile IRQ0-IRQ7 (Interrupt
ReQuest);
controlerul este validat;
intrarea pe care a aprut ntreruperea este nemascat;
nu este n curs de deservire o alt ntrerupere prioritar.
Dup ncheierea instruciunii n curs de desfurare, microprocesorul
iniiaz o secven de identificare a sursei de ntrerupere urmat de activarea
semnalului INTA i de generarea pe magistrala de date a vectorului ntreruperii
curente. n cazul unor ntreruperi multiple controlerul le prelucreaz pe baza
nivelului de prioritate. O ntrerupere prioritar poate ntrerupe execuia uneia cu
prioritate mai mic.
184

Introducere n tiina sistemelor i a calculatoarelor

4.8. Transferul de date


Transferul de date reprezint principala funcie a interfeelor de
intrare/ieire i se poate realiza n unul din urmtoarele moduri:
Transfer prin program;
Transfer prin ntreruperi;
Transfer prin acces direct la memorie;
Transfer prin procesor de intrare/ieire.
Alegerea modului de transfer optim pentru o anumit interfa depinde de:
Viteza de transfer a dispozitivului periferic;
Complexitatea dispozitivului periferic;
Restricii de cost i timp de realizare.
Accesul la interfeele corespunztoare echipamentelor periferice se
realizeaz prin intermediul unor instruciuni speciale. Citirea unor date sau
informaii de stare se face prin intermediul instruciunilor de forma:
IN AL,port ;pentru port cu un cod mai mic de 256
IN AL,DX ;DX conine codul (adresa) portului
Transmiterea unor date sau comenzi se realizeaz cu instruciunile:
OUT port,AL
OUT DX,AL

; port cu un cod mai mic de 256


; DX conine codul (adresa) portului

4.8.1. Transferul de date prin program

Transferul de date prin program este uor de realizat dar este


neperformant, deoarece unitatea central este implicat n realizarea transferului
pe toat durata acestuia. n general, un transfer de date cuprinde urmtoarele
etape: iniializarea transferului, transferul efectiv i verificarea terminrii i a
corectitudinii transferului. n cazul transferului prin program aceste etape conin
urmtoarele activiti:
1. iniializarea transferului, n care unitatea central stabilete adresa portului
de intrare sau de ieire, sensul de transfer, adresa de nceput a zonei de
memorie surs sau destinaie utilizat n transfer i iniializeaz un contor cu
numrul de cuvinte care urmeaz a se transfera;
2. transferul efectiv de date const n cicluri de transfer unitate central
memorie i unitate central porturi, astfel nct datele ajung de la un port
de intrare n memorie sau din memorie la un port de ieire. Evident, viteza de
lucru a unitii centrale trebuie s se adapteze la viteza perifericului, n
general mult mai mic. Exist dou metode de control a vitezei de transfer:
185

Uniti centrale de prelucrare de tip microprocesor

a) transferul programat necondiionat, n care unitatea central impune


viteza de transfer prin program, fr s utilizeze nici un semnal de rspuns
din partea interfeei. ntre dou transferuri succesive, se execut rutine de
ntrziere ceea ce determin adaptarea vitezei. Aceasta presupune
cunoaterea vitezei de transfer a perifericului, iar durata ntrzierilor
trebuie s fie suficient de mare pentru a acoperi orice situaie posibil i
de aceea metoda este lent.
b) transferul programat condiionat este mai rapid dect cel necondiionat.
UC citete periodic coninutul registrului de stare a interfeei (registru ce
indic dac interfaa este pregtit sau nu pentru un nou transfer) i pe
baza acestor informaii adapteaz viteza de transfer.
3. verificarea terminrii i a corectitudinii transferului.
Unitatea central controleaz toate cele trei faze prin intermediul unui
program denumit rutin de intrare/ieire. Dezavantajele transferului prin
program sunt: UC este ocupat n totalitate fr a putea efectua alte operaii n
paralel i durata minim a unui transfer este limitat.
4.8.2. Transferul prin ntreruperi

Transferul prin ntreruperi elimin o parte din neajunsurile transferului


prin program n sensul c unitatea central nu trebuie s atepte ntre dou
transferuri consecutive, timp n care poate executa alte secvene de program.
Sistemul de ntreruperi prezentat n 4.7 permite unitii centrale sincronizarea
cu anumite evenimente externe, detectarea rapid a unor situaii anormale i
tratarea pe baz de prioriti a unor sarcini paralele. n cazul transferului prin
ntreruperi, UC este eliberat de sarcina citirii periodice a semnalelor de stare ale
interfeei. Transferul de date prin ntreruperi se desfoar n mai muli pai
specifici lucrului cu ntreruperi:
Iniializarea, care presupune plasarea adresei rutinei de ntrerupere n
tabela de ntreruperi;
Transferul efectiv de date ce se realizeaz prin intermediul rutinei de
tratare a ntreruperii, care trebuie activat pentru fiecare dat n parte;
ncheierea transferului: rutina verific condiia de terminare a transferului,
dup care nivelul de ntrerupere corespunztor este dezactivat.
4.8.3. Transferul datelor prin acces direct la memorie

Accesul direct la memorie (DMA Direct Memory Acces) presupune un


transfer de date ntre memoria principal a unui sistem de calcul i un
echipament periferic fr intervenia direct a unitii centrale. Astfel UC nu mai
este ocupat cu transferul efectiv al datelor i n plus crete i viteza de transfer.
Acest tip de transfer de date este gestionat de aa numitul controler DMA, care
186

Introducere n tiina sistemelor i a calculatoarelor

este un circuit ce preia controlul magistralei n vederea transferului. Circuitul


I8237 este un exemplu de controler DMA proiectat pentru familia de procesoare
Intel x86. n figura 4.23 este prezentat modul de conectare a controlerului DMA
n sistemul de calcul.

Microprocesor

Memorie
Magistral de adrese
Magistral de date
Magistral de comenzi

HOLD
HLDA

Controler
DMA

DRQ

Interfa de
intrare/ieire

DACK

Fig. 4.23. Conectarea DMA n sistemul de calcul


n prima faz de iniializare a transferului, UC nscrie n registrele interne
ale controlerului DMA, adresa de nceput a blocului de memorie ce urmeaz a fi
transferat, numrul de octei ce urmeaz a fi transferai i sensul de transfer.
Faza de transfer efectiv a datelor este format din mai multe cicluri de transfer,
ntr-un ciclu transferndu-se un cuvnt de date.
O interfa de intrare/ieire lanseaz un transfer DMA genernd un semnal
de cerere DRQ (DMA ReQuest) ctre controlerul DMA. Acesta solicit unitii
centrale accesul pe magistral prin activarea semnalului HOLD. Dup
terminarea instruciunii n curs de execuie, UC suspend temporar activitatea pe
magistral prin dezactivarea amplificatoarelor de adrese, date i comenzi. Apoi
UC genereaz semnalul HLDA (HoLD Acknowledge) prin care anun
acceptarea cererii de cedare a magistralei. Controlerul DMA preia comanda
magistralei, genereaz semnale de comand, adresele pentru efectuarea
transferului i selecteaz interfaa implicat n transfer printr-un semnal de
scriere sau citire i un semnal de rspuns DACK (DMA ACKnowledge) la
cererea anterioar DRQ. Deci, selecia interfeei nu se face prin adres. Mai
mult, pentru a evita selecia eronat a porturilor datorit unor adrese de
memorie, se blocheaz decodificarea porturilor cu semnalul HLDA. La
ncheierea transferului DMA se dezactiveaz semnalul HOLD i se red unitii
187

Uniti centrale de prelucrare de tip microprocesor

centrale controlul magistralei. Datele sunt transferate direct ntre memorie i


interfa fr a trece prin controler.
Un controler DMA poate deservi mai multe interfee de intrare/ieire. n
cazul unor cereri simultane deservirea acestora se face pe baz de prioriti.
Transferul DMA se justific n cazul n care viteza de transfer impus de
periferic este destul de mare i procesorul nu poate s execute instruciunile din
ciclul de transfer n perioada dintre dou solicitri succesive. Exemple tipice n
acest sens sunt transferurile DMA pentru interfaa de disc flexibil i pentru
transferul serial pe bloc. Un canal DMA (uzual 0) poate fi utilizat pentru
remprosptarea memoriei dinamice. Controlerul DMA poate fi utilizat pentru
transferuri de tip memorie memorie, cu scopul de a muta un bloc de date dintro zon de memorie n alta, caz n care datele sunt memorate temporar ntr-un
registru al controlerului. Mai multe controlere pot fi conectate n cascad pentru
a mri numrul de canale DMA disponibile.
4.8.4. Transferul prin procesor de intrare/ieire

n cazul acestui tip de transfer unitatea central este foarte puin utilizat,
n comparaie cu celelalte metode de transfer. Majoritatea activitilor necesare
realizrii transferului sunt executate de ctre o alt unitate tip procesor.
Comunicaia ntre unitatea central i procesorul de intrare/ieire se realizeaz la
nivelul unor comenzi generale i a unor cuvinte de stare. Procesoarele de
intrare/ieire specializate au o structur intern cu memorie i magistral local
proprie, un set de instruciuni adaptate transferului de date, fiind compatibile cu
familia de procesoare pentru care au fost realizate (de exemplu circuitul I8089
pentru familia Intel).
Transferul prin procesor de intrare/ieire ofer o flexibilitate ridicat n
manipularea datelor i se recomand n cazul echipamentelor periferice
complexe, care au o vitez mare de transfer, ca de exemplu discul dur.
Dificultatea implementrii unei interfee cu procesor const n realizarea
protocolului de comunicaie ntre procesorul central i cel de intrare/ieire.

4.9. Alte procesoare din familia Intel


4.9.1. Procesorul I80286

Procesorul I80286 a fost lansat de firma Intel n anul 1982, lucra la o


frecven maxim de 12.5 MHz, cuprindea 134 K tranzistoare i putea executa
2.7 MIPS (de aproximativ 4 ori mai mult ca I8086) . Acest procesor a adus trei
modificri importante:

188

Introducere n tiina sistemelor i a calculatoarelor

1. Au fost introduse dou moduri de lucru distincte: modul protejat (Kernel)


utilizat pentru execuia sistemului de operare i a unor programe
privilegiate i modul utilizator pentru execuia programelor de aplicaii. n
mod protejat sunt disponibile instruciuni noi, neutilizabile ns n mod
utilizator. Avantajul acestor noi instruciuni const n faptul c pot fi
folosite pentru partajarea resurselor ntre task-uri (module independente
de program);
2. Spaiul de adresare a memoriei a crescut la 16 MB datorit faptului c au
fost adugate 4 linii noi de adres i s-a modificat modul de calcul al
adresei fizice;
3. Viteza de prelucrare a crescut att prin mrirea frecvenei de tact ct i
prin extinderea arhitecturii pipeline.
n structura procesorului I80286 se disting patru uniti funcionale
independente, specializate n efectuarea diferitelor faze din execuia unei
instruciuni. Aceste uniti lucreaz n paralel i astfel se reduce timpul mediu de
execuie a instruciunilor.

Unitatea de
adresare

Unitatea de
execuie

Unitatea de
interfa

Magistrala
extern

Unitatea de instruciuni:
Coada de
instruciuni

Decodor de
instruciuni

Fig. 4.24. Schema bloc a procesorului I80286


Unitatea de interfa cu magistrala conine amplificatoare de date i de
adrese i realizeaz operaiile de transfer pe magistral (extragerea
instruciunilor i citirea/scrierea operanzilor). Instruciunile citite sunt transferate
n unitatea de instruciuni unde sunt decodificate i apoi pstrate n coada de
instruciuni decodificate (maxim trei instruciuni decodificate). Din coad,
instruciunile sunt preluate i executate de ctre unitatea de execuie. Dac o
instruciune face referire la o adres de memorie, acea adres este transferat
unitii de adresare, care efectueaz toate calculele de adres pe care le implic
diferitele moduri de adresare.
189

Uniti centrale de prelucrare de tip microprocesor

4.9.2. Procesorul I80386

Acest procesor a fost lansat pe pia n anul 1985 i a fost primul cu o


arhitectur extins pe 32 de bii. Registrele generale sunt extinse la 32 de bii
prin adugarea a doi octei mai semnificativi; partea mai puin semnificativ a
unui registru se poate adresa prin aceleai nume simbolice ca i la procesoarele
pe 16 bii. La cele patru registre segment s-au mai adugat dou, FS i GS pe 16
bii. Deoarece pentru adresarea memoriei se utilizeaz 32 de linii de adres,
spaiul maxim de adresare este de 4 GB. Frecven maxim este de 20 MHz,
procesorul cuprinde 275 K tranzistoare i poate executa 6 MIPS.

Unitatea de
segmentare

Unitatea de
paginare
Unitatea de
interfa

Unitatea de
execuie

Unitatea de
prencrcare

Unitatea de
decodificare

Fig. 4.25. Schema bloc a procesorului I80386


Unitatea de segmentare asigur urmtoarele faciliti:
lungimea segmentului poate fi pn la 4GB;
segmentele pot fi protejate prin introducerea unor nivele de prioriti;
spaiul de amplasare este extins.
Unitatea de paginare are rolul de a extinde memoria operativ (direct
adresabil de procesor) peste memoria extern (adresabil printr-o interfa de
intrare/ieire). Paginile au lungime fix i anume 4 kB i pot fi transferate la
cerere din memoria extern n cea intern, n mod transparent. Paginarea i
segmentarea se implementeaz memoria virtual i n plus ofer suportul pentru
realizarea unor sisteme multiuser i multitasking. Pentru execuia eficient a
programelor scrise pentru procesoarele 8086 i 80286 a fost introdus modul de
lucru virtual.

190

Introducere n tiina sistemelor i a calculatoarelor

4.9.3. Procesorul I80486

Procesorul I80486 a aprut n prima sa variant, SX, n anul 1989 fiind


urmat la scurt timp de varianta DX. Varianta DX lucra la frecvena maxim de
100 MHz, gradul de integrare era de 1,2 M tranzistoare i executa 20 MIPS.
Noutile aduse de acest procesor sunt:
Includerea n acelai chip a coprocesorului matematic, a memoriei cache
de nivel L1 de 8 kB i a unitii de management a memoriei cache
extern. Prin urmare, s-a redus esenial timpul mediu de acces la memorie
i timpul necesar pentru transferul datelor.
Unitatea de extragere i execuie a instruciunilor a fost divizat i
sistemul de prelucrare pipeline a fost extins pe 5 nivele. Fiecare nivel
poate prelucra o alt instruciune. Trecerea de un nivel se face ntr-o
perioad de ceas i astfel, privind din exterior, fiecare instruciune se
execut ntr-un singur tact. Execuia pipeline a secvenei de instruciuni
este eficient att timp ct nu apar instruciuni de salt care produc
descrcarea liniei de prelucrare i ncetinirea execuiei.
A fost introdus mecanismul de management a consumului ce permite
comutarea sistemului n regimuri de lucru cu consum redus.
4.9.4. Procesoare Pentium

Primul procesor Pentium a fost lansat pe pia n anul 1993 i a adus n


lumea PC-urilor, concepte noi i performane deosebite:
Dimensiunea magistralei de date s-a extins la 64 de linii i s-a introdus
modul de transfer n avalan (burst), care permite ncrcarea rapid a
memoriei cache intern i asigur un timp de acces mai mic la memoria
operativ de tip DRAM.
Frecvena de lucru este de 60 MHz, conine 3.1 M tranzistoare pe chip iar
performana MIPS este de 100;
Anumite magistrale interne au 128 i chiar 256 de linii, dar procesorul
rmne unul pe 32 de bii.
Apare conceptul de arhitectur pipeline superscalar, care presupune
utilizarea mai multor linii de prelucrare pipeline autonome care lucreaz
n paralel. La prima variant, exist dou astfel de linii: pentru operaii cu
ntregi i pentru operaii n virgul mobil.
S-a introdus mecanismul de predicie a salturilor cu scopul de a crete
eficiena prelucrrii pipeline. Citirea n avans a instruciunilor i
introducerea lor n linia de prelucrare se face pe baza probabilitii de
realizare a unor salturi.
191

Uniti centrale de prelucrare de tip microprocesor

Memoria cache intern s-a dublat i s-a separat n memorie pentru


program i alta pentru date.
Controlerul de ntreruperi (APIC Advanced Programmable Interrupt
Controller) a fost inclus n structura procesorului, obinndu-se o tratarea
mai rapid a evenimentelor externe.
4.9.5. Procesoare Intel cu arhitectur P6

Procesoarele Pentium Pro (1995), Pentium II (1997) i Pentium III


(1999) fac parte din familia Intel P6 cu microarhitectur pipeline superscalar
i care utilizeaz sistemul de execuie dinamic a instruciunilor. Dei
dimensiunea registrelor a rmas la 32 de bii i magistrala de date la 64 de linii,
performanele procesoarelor au crescut spectaculos, ajungnd pentru P III la o
frecven de 1GHz, o integrare de 8,2 M tranzistoare i 1000 MIPS.
Pentium Pro aduce conceptul de structur pipeline superscalar bazat pe
trei linii autonome de prelucrare:
unitatea de extragere i decodificare a instruciunii;
unitatea de dispecerizare i execuie;
unitatea de retragere.
Acestea comunic ntre ele prin intermediul rezervorului de instruciuni
(Instruction pool).

Unitatea de extragere
i decodificare a
instruciunilor

Unitatea de
dispecerizare i
execuie

Unitatea de
retragere

Rezervor de
instruciuni

Fig. 4.26. Arhitectur pipeline superscalar


Aceast arhitectur ofer posibilitatea de a renuna la execuia liniar a
secvenei de instruciuni i de a trece la execuia instruciunilor ntr-o ordine
dictat de disponibilitatea datelor i a unitilor de execuie. Mai mult, se evit
ntrzierile pe linia pipeline datorate salturilor ce golesc coada sau datorit
faptului c operanzii nu sunt disponibili (fie sunt n memorie, fie reprezint
rezultatul unor operaii nc neexecutate).
192

Introducere n tiina sistemelor i a calculatoarelor

Unitatea de extragere i decodificare a instruciunilor realizeaz


extragerea n avans a instruciunilor i le decodific transformndu-le n
secvene de microoperaii. Aceast unitate cuprinde:
decodificatorul de instruciuni;
blocul de memorarea adreselor de salt;
secveniatorul de microinstruciuni;
alocatorul de registre copie (alias).

Instruciunile se extrag din memoria cache de nivel L1 dedicat


programului. Adresarea instruciunilor se realizeaz cu modulul Next_IP care
folosete informaiile coninute n blocul de memorare a ultimelor adrese de salt
i astfel vor fi extrase secvenele de instruciuni care au probabilitatea cea mai
mare de a fi executate n viitorul imediat.
De la BIU

L1 Cache

Next_IP

Bloc de memorare
adrese de salt
Decodificator de
instruciuni
(trei module
indepenedente)

Secveniator de
microinstr.
Bloc de memorare
adrese de salt

Ctre rezervorul
de microinstr.

Fig. 4.27. Unitatea de extragere i decodificare a instruciunilor


Pe durata unui tact se extrage cte o linie de memorie cache de 32 octei.
Se marcheaz nceputul fiecrei instruciuni iar codul extras este transmis ctre
cele trei module de decodificare independente (dou simple i unul pentru
instruciuni complexe). Deoarece arhitectura Intel are un numr restrns de
registre, unitatea de decodificare aloc microoperaiilor registre alias dintr-un
set de 40 de registre invizibile pentru programator. Aceste registre sunt utilizate
n operaii aritmetice i logice. Petru fiecare microoperaie exist bii de stare.
193

Uniti centrale de prelucrare de tip microprocesor

Microoperaiile sunt plasate n rezervorul de instruciuni. Acesta conine


registre pentru 40 de microoperaii ce urmeaz a fi executate sau care au fost
deja executate dar care nc nu au fost extrase.
Unitatea de dispecerizare i execuie selecteaz microoperaiile ce pot fi
executate i se ocup efectiv de execuia acestora. Aceasta cuprinde:
o staie de rezervare care extrage din rezervorul de instruciuni
microoperaii a cror condiii de execuie sunt ndeplinite i le transmite
unitilor de execuie funcie de specificul operaiei. Dispune de 5 porturi
prin care poate s comunice cu unitile de execuie. Dac mai multe
operaii sunt simultan disponibile se folosete un algoritm de planificare
de tip FIFO modificat care favorizeaz execuia n secven a
microoperaiilor.
UEI unitate de execuie pentru numere ntregi;
UEF - unitate de execuie pentru numere reprezentate n virgul flotant;
UE MMX unitate de execuie a operaiilor MMX (multimedia);
UES unitate de execuie a salturilor;
UGA unitate de generare a adreselor pentru citirea operanzilor i
scrierea rezultatului.
Microoperaiile executate i rezultatele obinute sunt plasate n rezervorul de
instruciuni.
Unitatea de retragere asambleaz rezultatele pariale n ordinea
prestabilit de program. Funcia de baz este de a extrage din rezervorul de
instruciuni microoperaiile a cror execuie este ncheiat i de a transfera
rezultatele pstrate n registrele alias n registrele arhitecturii de baz sau n
memorie. Unitatea poate extrage 3 microoperaii ntr-o perioad de tact.
Magistrala extern specific familiei P6 trebuie s fac fa vitezei mari
de lucru a procesoarelor. Principalele sale caracteristici sunt:
magistrala lucreaz n mod sincron astfel nct toate semnalele de pe
magistral sunt raportate la fronturile semnalului de tact; se asigur astfel
o vitez mai mare de transfer dar frecvena tactului limiteaz lungimea
magistralei deoarece faza semnalului de tact trebuie s fie aceeai la
ambele capete ale magistralei;
se pot conecta mai multe procesoare la aceeai magistral;
transferul de date se realizeaz pe baz de tranzacii ce se pot desfura n
paralel;
transferurile pe blocuri de date sunt favorizate;
metoda de transmisie a semnalelor asigur nealterarea semnalelor chiar i
la frecvene mari de transmisie;
sunt implementate sisteme de detecie i corecie a erorilor;
permite verificarea i meninerea informaiilor n memoria cache.
194

Introducere n tiina sistemelor i a calculatoarelor

Pe o magistral P6 se pot conecta maximum 8 module ce poart numele


de ageni: module procesor, module de memorie i module de adaptare pentru
magistrale mai lente. Agenii pot fi de tip master (au iniiativa n transferul de
date i pot fi maximum 4) sau slave (pot fi adresai de ageni master). Fiecare
agent poate urmri desfurarea n paralel a mai multor tranzacii. Un agent are
o anumit capacitate de memorie n care pstreaz informaiile relative la
tranzacii i prin urmare, numrul maxim de tranzacii care se pot desfura n
paralel este limitat de agentul cu memoria cea mai mic. Interfeele de
intrare/ieire se conecteaz pe o magistral diferit, conectat la rndul ei la
magistrala P6 printr-un bridge (adaptor).
Magistrala P6 este de mare vitez iar tehnologia TTL utilizat pn la
Pentium Pro nu a mai fcut fa. Astfel s-a dezvoltat o nou tehnologie GTL
(Gunning Tranceiver Logic) capabil s genereze i s transmit date la
frecven ridicat. Aceast tehnologie utilizeaz semnale de tensiune mai mic
pentru a scdea ntrzierile de comutare i precum noi tipuri de amplificatoare i
receptoare de magistral.
Magistrala sistemului P6 este tranzacional, ceea ce permite realizarea n
paralel a mai multor transferuri de date. Transferul de date se efectueaz n mai
multe faze, fiecare faz utiliznd un set specific al semnalelor de magistral. Mai
multe tranzacii se pot desfura n acelai timp, cu condiia ca tranzaciile s fie
n faze diferite. O tranzacie poate s fie n una din urmtoarele faze:
arbitrare unitatea master iniiaz transferul i solicit controlul
magistralei;
cerere de transfer se specific tipul i parametrii transferului;
spionarea se utilizeaz pentru meninerea consistenei memoriilor cache
din interiorul procesoarelor conectate pe magistral;
faza de eroare apare n cazul n care pe durata tranzaciei se detecteaz o
eroare;
faza de rspuns este utilizat de agentul adresat pentru a specifica tipul
de rspuns;
faza de transfer realizeaz transferul efectiv de date.
Procesorul Pentium II cuprinde tehnologia MMX dezvoltat special
pentru aplicaii multimedia. n acest scop s-au introdus un set de registre i un
set de instruciuni noi specifice operaiilor de prelucrare a semnalelor audio i
video. De asemenea, cuprinde mai multe moduri de control al consumului de
energie.
Procesorul Pentium III ncorporeaz o unitate de calcul n virgul
flotant de tip SIMD (Single Instruction Multiple Data o instruciune mai
multe date) ce permite execuia unei operaii aritmetice n paralel pe mai multe
date (prelucrri de imagini, grafic 2D/3D, prelucrarea semnalelor audio i
video). Pentru acest procesor s-a dezvoltat magistrala dual cu funcionare
195

Uniti centrale de prelucrare de tip microprocesor

independent DIB (Dual Independent Bus) care a permis creterea limii de


band a transferului de date.
4.9.6. Procesorul Pentium 4

Lansat efectiv pe pia n 2001 a adus cteva nouti eseniale pstrnd


compatibilitatea software cu restul familiei Intel. Dac ultimele variante de
procesoare Pentium III aveau n jur de 28 milioane de tranzistoare, prima
variant Pentium 4 avea aproximativ 42 milioane i putea lucra la 1.5 GHz, 1.6
GHz, 1.7 GHz, 1.8 GHz, 1.9 GHz, 2 GHz, 2.2 GHz i 2.0 GHz. Procesorul este
conceput pe noua microarhitectur NetBurst i pentru execuie pipeline pe 20 de
nivele, ceea ce nsemn c se pot executa simultan 20 de instruciuni aflate pe
nivele diferite de execuie. Procesul de fabricaie are la baz tehnologia de 0,13
microni, fa de 0,18 microni specific procesoarelor Pentium III.
Microarhitectura NetBurst a fost conceput pentru a oferi faciliti deosebite
aplicaiilor Java, XML, Flash, video i 3D n timp real. Se preconizeaz c
viitoarele procesoare bazate pe aceast tehnologie vor putea lucra la 8-10 GHz.
Printre facilitile noi i mbuntirile aduse de microarhitectura NetBurst
se regsesc:
tehnologia hiperpipeline care dubleaz practic capacitatea de prelucrare
pipeline a procesoarelor Pentim III, ajungnd la 20 de nivele i care conduce
la creterea semnificativ a frecvenei i performanelor;
magistral sistem de 400 MHz care permite un transfer de date din i n
procesor de 3,2 GB/s, n comparaie cu un transfer de 1,06 GB/s aferent unei
magistrale sistem de 133 MHz specific procesoarelor Pentium III. Aceast
magistral sistem impune folosirea memoriei RAM de tip DDRAM (Double
Data Random Access Memory);
Execution Trace Cache de nivel L1ce poate stoca pn la 12K microoperaii
decodificate n vederea execuiei. Astfel crete volumul de instruciuni trimis
unitii de execuie a procesorului i se reduce timpul de recuperare a
ramurilor de instruciuni omise de algoritmul de predicie;
Rapid Execution Engine cuprinde dou uniti aritmetico-logice (ALU) care
lucreaz la o frecven dubl fa de cea a procesorului. Pentru un procesor
Pentium 4 la 1,5 GHz, acest motor de execuie rapid lucreaz la 3 GHz.
Acest fapt face posibil ca instruciunile de baz cu ntregi ca de exemplu
ADD, SBB, AND, OR, etc. s fie executate ntr-o jumtate de tact;
Level 2 Advanced Transfer Cache (ATC) de 256kB sau 512 kB care asigur
un transfer ridicat de date (48 GB/s pentru un procesor la 1.5GHz) ntre
memoria cache L2 i celelalte blocuri componente ale procesorului;
Advance Dynamic Execution este un motor de execuie care permite
procesorului s vad 126 de instruciuni, s prelucreze 48 i s stocheze 24
n pipeline i n plus include un algoritm mbuntit de predicie a salturilor
care reduce cu 33% erorile de predicie ale generaiei P6;
196

Introducere n tiina sistemelor i a calculatoarelor

Enhanced Floating-Point and Multimedia Unit : registrele pentru virgul


mobil sunt extinse pn la 128 bii i mai apare un nou registru pentru
deplasare, care mpreun mbuntesc att performanele operaiilor n
virgul mobil ct i a aplicaiilor multimedia;
Internet Streaming SIMD Extensions 2 (SSE2) introduce 144 noi instruciuni
care se refer la operaii aritmetice SIMD cu numere ntregi pe 128 de bii i
operaii n virgul mobil dubl precizie SIMD pe 128 de bii. Astfel se
asigur creterea vitezei pentru aplicaiile video, prelucrare de imagini i
semnal vocal, aplicaii financiare i tiinifice;
faciliti privind testarea performanelor i monitorizarea regimului termic.

197

Uniti centrale de prelucrare de tip microprocesor

198

Introducere n tiina sistemelor i a calculatoarelor

BIBLIOGRAFIE
1. Ardelean I., Giuroiu H., Petrescu L.L., Circuite integrate MOS, Manual
de utilizare, Ed. Tehnic, Bucureti, 1986
2. Athanasiu I., Pnoiu A., Microprocesoarele 8086,286,386, Seria
Calculatoare personale, Ed. Teora, 1992
3. Diatcu E., Tertico A., Iacob F., Tache M., Racovi Z., Elemente
fundamentale ale teoriei sistemelor i calculatoarelor, Ed. Hyperion XXI,
Bucureti, 1996
4. Dodescu Gh., R. Mranu, F. Nstase, Calculatoare. Elemente
fundamentale de structur. Iniiere n utilizarea PC-urilor, Ed. ALL
EDUCATIONAL, Bucureti, 2000
5. Gorgan D., Sebestyen G., Structura calculatoarelor, Ed. Albastr, ClujNapoca, 2000
6. Huanu C., Postolache M., Pnescu D., Sisteme cu microprocesoare n
conducerea automat a proceselor, Ed. Academica, Iai. 1998
7. Karam G., Bryant J., Principles of computer systems, Carleton University,
Prentice-Hall, New Jersey, 1992
8. Paraschiv N., Echipamente numerice pentru conducerea proceselor,
Catedra de Automatic i Calculatoare, Univ. Petrol Gaze Ploieti, 1996
9. Somnea D., Teodor V., Programarea n Assembler, Seria Calculatoare
personale, Ed. Tehnic, Bucureti, 1992
10. Sztojanov I, .a., De la poarta TTL la microprocesor. Circuite integrate
digitale, Seria Electronic aplicat, Ed. Tehnic, Bucureti, 1987
11. Toace G., Introducere n microprocesoare, Ed. t. i Enciclopedic,
Bucureti, 1986
12. Tomescu M., Primii pai n lumea calculatoarelor, Ed. Albastr, ClujNapoca, 2001
13. Valachi A., Hoza F., Onofrei V., Silion R., Analiza, sinteza i testarea
dispozitivelor numerice, Ed. Nord-Est, Iai, 1993
14. Valachi A., Brsan M., Tehnici numerice i automate, Ed. Junimea, Iai,
1986
15. *** Colecia revistei CHIP
16. *** Colecia revistei PC World

199