Sunteți pe pagina 1din 26

1 INTRODUCERE

1.1 Limbaje. Masina virtuala


Un calculator numeric este o masina care poate rezolva probleme, numite taskuri,
executind anumite instructiuni pe care le primeste la intrare. O secventa de instructiuni care
precizeaza cum se realizeaza un task se numeste program.
Aceste instructiuni pot fi simple, cum ar fi adunarea a doua numere, deplasarea unei
date dintr-un registru in memorie, etc. Acest set de baza de instructiuni formeaza un limbaj
numit limbajul masina. Limbajul masina este caracteristic fiecarui tip de calculator si este
cel mai simplu limbaj prin care utilizatorul calculatorului poate comunica cu acesta. Sa
numim acest limbaj L1 [Tan90].
Utilizarea limbajului L1 este greoaie. Rezolvarea consta in crearea unui nou limbaj
L2, mult mai apropiat de modul natural de gindire, operare al omului. Utilizatorul poate scrie
programe atit in L1 cit si in L2 dar, calculatorul va executa intotdeauna setul de instructiuni
L1, pentru care a fost proiectat fizic.
Exista doua posibilitati de executie a unui program in limbajul L2:
(1) inlocuirea fiecarei instructiuni din programul scris in L2 cu instructiuni din L1, care apoi
sa se execute. Aceasta tehnica se numeste translatare;
(2) analizarea fiecarei instructiuni din programul scris in L2 si executia ei printr-o secventa
echivalenta de instructiuni din L1. Aceasta tehnica se numeste interpretare.
Avind in vedere ca utilizatorul lucreaza cu o masina care are limbajul L2, dar care in
final executa taskul tot in L1 sa numim calculatorul avind limbajul L2 masina virtuala. In
general este dificil sa se construiasca o masina fizica care sa lucreze direct in L2.
Daca programarea in L2 este de asemenea greoaie se creaza un alt limbaj L3. Executia
unui program in L3 se face la fel prin doua tehnici: traducerea programului intr-un program
echivalent in L2 sau interpretarea sa prin instructiuni din L2. Deci masina virtuala avind
limbajul L3 are la baza masina de nivel imediat inferior - masina virtuala cu limbajul L2.
Metoda se poate extrapola pentru diferite limbaje si masini din ce in ce mai performante. In
literatura de specialitate aceste tipuri de masini sau calculatoare se numesc generic nivele.
Istoria dezvoltarii calculatoarelor nu este altceva decit o evolutie a diferitelor nivele de
masini virtuale si a limbajelor asociate lor. De asemenea, evolutia calculatoarelor trebuie
vazuta si ca o dezvoltare a tehnologiei in care au fost realizata masina fizica M1 avind
limbajul L1.
Calculatoarele actuale constau din sapte nivele (Figura 1-1). Nivelul 0 numit nivelul
logic digital, executa instructiunile masina ale nivelului 1. Acest nivel este realizat fizic din
circuite logice dintre care elementul fundamental este poarta logica. Nivelul 1, numit nivelul
microprogram contine deja conceptul de program. Acest program, numit microprogram
interpreteaza instructiunile nivelului 2 si le executa folosind nivelul 0. Fiecare instructiunile a
nivelului 2 este executata de cite un microprogram. Nivelele 0 si 1 pot diferi pentru un
acelasi tip de calculatoare. In general, compatibilitatea calculatoarelor facute de diferite firme
se asigura la nivelul 2. De aceea acest nivel se numeste nivelul de masina conventionala.
Unele masini nu au nivelul microprogram. Instructiunile din nivelul 2 sunt direct executate de
masina logica digitala (componentele hardware ale calculatorului).
Urmeaza nivelul 3 care este un nivel hibrid deoarece cuprinde atit instructiuni
interpretate de nivelul 3 cit si instructiuni interpretate de nivelul 2. De asemenea, intre
masinile nivelului 3 realizate de diverse firme, exista in general mult mai multe diferente.
Acest nivel se numeste sistemul de operare. Nivelele 0 - 3 nu sunt folosite de catre

1-1

majoritatea programatorilor. Aceste nivele contin interpretoare si translatoare, construite de


catre programatorii de sisteme specializati in proiectarea si implementarea masinilor viruale.
Aceste unelte servesc nivelele superioare.
Nivelul 4 numit nivelul limbajului de asamblare, este destinat programatorilor de
aplicatii, care au de realizat un anumit task. Nivelele 2 si 3 sunt intotdeauna interpretate.
Nivelele 4 si 5 sunt de obicei translatate. De asemenea limbajele nivelelor 1, 2 si 3 sunt
numerice, ele constau din secvente de numere greu de manipulat de catre utilizatori. Incepind
cu nivelul 4 se utilizeaza cuvinte, mnemonice pentru diferite notiuni operate. Programele
scrise pentru nivelul 4, in limbaj de asamblare, sunt translatate de catre un program special
numit asamblor si interpretate de catre nivelele 1, 2 si 3.

Nivelul 6

Nivelul orientat pe aplicatie


Translatare (compilare)

Nivelul 5

Limbajul de nivel inalt


Translatare (compilare)

Nivelul 4

Limbaj de asamblare
Translatare (asamblare)

Nivelul 3

Sistemul de operare
Interpretare (sistem de operare)

Nivelul 2

Masina conventionala
Interpretare (microprogram)

Nivelul 1

Microprogram
Microprogram executat direct
de componenta hardware

Nivelul 0
Figura 1.1

Nivelul logic digital


Nivelele de masini virtuale corespunzatoare
calculatoarelor actuale.

Nivelul 5 consta din limbajele utilizate pentru scrierea programelor de aplicatie. Acest
nivel se numeste limbaje de nivel inalt. Cele mai cunoscute masini, nivele sunt pentru
limbajele BASIC, FORTRAN, COBOL, C, Pascal, LISP, Modula-2, etc.
Programele scrise in limbajele nivelului 5 sunt translatate in limbajele nivelului 4 sau
3 de catre programe specializate numite compilatoare.

1-2

Nivelul 6 este nivelul destinat aplicatiilor specializate si se numeste nivelul aplicatie.


Contine limbaje destinate unor domenii foarte specializate cum ar fi proiectare asistata,
economie, administratie, grafica, etc.
Se defineste notiunea de arhitectura calculatorului ca fiind setul de tipuri de date,
operatii si alte facilitati oferite de fiecare nivel, vizibile programatorilor.
Notiunea de hardware defineste circuitele electronice, memoria, dispozitivele de intrare/
iesire, deci masina de nivel 0, care executa programul nivelului 1. Prin software se intelege
algoritmii si reprezentarea lor in calculator, deci programele. O notiune intermediara este
firmware care defineste software incorporat in dispozitivele electronice de catre fabricanti.
Tehnica firmware se utilizeaza pentru programe nemodificabile (fixe) sau care nu trebuie sa
se piarda (nevolatile) la deconectarea tensiunii de alimentare.
1.2 Istoric
1.2.1 Calculatoarele mecanice
Prima masina de calculat a fost construita in 1642 de catre francezul Blaise Pascal
(1623-1662), in onoarea caruia s-a dat si numele limbajului atit de cunoscut. Masina sa putea
realiza numai adunari si scaderi. Treizeci de ani mai tirziu, matematicianul german Baron
Gottfried Wielhelm von Leibnitz (1646-1716) a construit o masina care putea realiza si
inmultiri si impartiri.
Dupa 150 de ani, profesorul de matematica de la Universitatea Cambridge, Charles
Babbage (1792-1871) a construit masina diferentiala si apoi masina analitica. Masina sa
continea patru parti: memoria, unitatea de calcul, un cititor de cartela perforata si un
perforator de cartela. Memoria putea pastra 1000 de cuvinte de 50 de cifre pentru variabile si
rezultate. Unitatea de calcul putea executa operatii ca adunare, scadere, inmultire, impartire,
citire si scriere in memorie. Prima programatoare a acestei masini a fost Ada Lovelace, fiica
poetului englez Lord Byron.
Alte realizari semnificative sunt calculatorul germanului Konrad Zuse, al lui John
Atanasoff de la Iowa State College si al lui George Stibbitz de la Bell Labs (1940).
In 1944, Howard Aiken, la Harvard a construit cu relee masinile Mark I si Mark II,
dupa un plan echivalent masinii lui Babbage. Masina avea o memorie de 72 cuvinte a cite 23
de cifre. Instructiunea se executa intr-un ciclu masina. Intrarile si iesirile se faceau de pe
banda perforata.
1.2.2 Prima generatie de calculatoare. Tuburi electronice
Este perioada 1945 - 1955. Era calculatoarelor moderne a inceput in perioada celui de
al doilea razboi mondial. In Anglia s-a realizat primul calculator cu tuburi numit COLOSSUS
pentru a descifra mesajele codificate cu ajutorul masinilor ENIGMA. Calculatorul era
operational in 1943, dar proiectul a ramas inaccesibil din motive militare. La proiectarea
acestui calculator a participat si matematicianul englez Alan Turing.
In 1943 John Mauchley si J. Presper Eckert, pornind de la experientele cunoscute ale
lui Atanasoff si Stibbitz, au construit calculatorul ENIAC (Electronic Numerical Integrator
And Computer). Era realizat cu 18 000 tuburi electronice, 1500 relee, cintarea 30 tone si
cosuma 140 kw. Arhitectura sa avea 20 registre de capacitate 10 cifre zecimale. Nu a fost
terminat pina in 1946 la terminarea razboiului, dar a constituit proiectul de baza pentru alte
realizari: EDSAC (1949, Cambridge University, UK), ILLIAC (University of Illinois),
MANIAC (Los Alamos Laboratory), EDVAC ca o a doua varianta a lui ENIAC.

1-3

La proiectul ENIAC a participat una din personalitatile marcante ale matematicii si


stiintei calculatoarelor, John von Neumann, care apoi a realizat versiunea sa la calculatorul
EDVAC, numita masina IAS. Von Neumann este considerat la fel ca Leonardo Da Vinci un
geniu al timpului sau. Lui ii este atribuita stabilirea configuratiei calculatorului formata din
cinci parti de baza: (1) memoria, (2) unitatea logica si aritmetica, (3) unitatea de control a
programului, (4) dispozitivele de intrare si (5) de iesire (Figura 1.2). Unitatea aritmetica si
logica, viitoarea unitate centrala (UCP - Unitatea Centrala de Prelucrare, sau CPU in
engleza), cuprindea un registru special numit acumulator care prin anumite instructiuni putea
sa pastreze rezultatul adunarii sale cu un cuvint din memorie sau se putea inscrie in memorie.

Memoria

Unitatea de

Unitatea logica
si aritmatica

Intrare

control
acumulator
Figura 1.2

Iesire

Structura masinii lui John von Neumann.

Alte realizari sunt Whirlwind I de la MIT, proiectat pentru controlul in timp real,
UNIVAC al companiei Eckert si Mauchley, IBM70 in 1953 (cu memorie de 2k cuvinte de 36
biti, cu doua instructiuni pe cuvint), apoi 704 (4k cuvinte, instructiuni pe 36 biti si calcul in
virgula flotanta). In 1958, IBM a inceput productia ultimului sau calculator cu tuburi IBM
709.
1.2.3 Generatia a doua de calculatoare. Tranzistoare
Perioada 1955 - 1965. Tranzistorul a fost inventat de catre John Bardeen,
Walter Brattain si William Shockley in 1948 la Bell Labs. Pentru inventia lor au luat Premiul
Nobel in fizica, in 1956.
Primul calculator cu tranzistoare a fost TX-0 (Tranzistorized eXperimental computer
0), la MIT ca o continuare a calculatorului Wirlwind. In 1961 a aparut PDP-1 al firmei DEC
(4k cuvinte de 18 biti, ciclul instructiune de 5 microsecunde). Era cel mai puternic si ieftin
calculator din acea vreme. Firma IBM lanseaza varianta tranzistorizata a modelului IBM 709,
care s- numit IBM7090. Una din principalele inventii introduse de catre PDP-1 a fost
utilizarea afisajului pe tub CRT cu control al oricarui punct de pe ecranul cu rezolutie de 512
x 512. PDP-1 a permis primul joc video pe calculator.
Dupa citiva ani DEC a introdus calculatorul PDP-8 caracterizat printr-o unica
magistrala care conecta modulele: CPU, memorie, consola, unitatile de intrare si iesire pe

1-4

banda de hirtie, alte dispozitive de intrare/iesire. Era calculatoarelor moderne incepuse prin
vinzarea a cel putin 50 000 de calculatoare PDP-8.
IBM s-a impus prin calculatorul IBM7094 (32 k cuvinte de 36 biti, ciclu de 2
microsec.), si in special prin calculatorul comercial IBM1401.
In 1964 a aparut CDC 6600, primul calculator care utiliza prelucrarea paralela in
unitatea centrala.
1.2.4 Generatia a treia de calculatoare. Circuite integrate
Perioada 1965-1980. Este dominata de calculatoarele IBM360 si PDP-11.
Principala caracteristica a lui IBM360 era portabilitatea programelor la nivel de limbaj de
asamblare pentru diferite modele de masini. Toate aveau acelasi limbaj de asamblare. Alte
caracteristici: ciclul de 250 nsec, memoria de pina la 512 kcuvinte, spatiul de adresare 224 (16
megaocteti), organizarea memoriei pe octeti in timp ce registrele de lucru interne sunt pe 32
biti. Cea mai importanta inovatie este multiprogramarea. Multiprogramarea permite
existenta in memorie si executia in acelasi timp a mai multor programe.
Calculatorul PDP-11 avea 16 biti pe cuvint. A fost considerat cel mai performant
minicalculator, avind un succes enorm, in special in universitati.
1.2.5 Generatia a patra de calculatoare. Calculatoare personale si VLSI
Incepe in 1980. Circuitele VLSI (Very Large Scale Integration) au permis realizarea
unor structuri de calculatoare compacte (relativ la puterea lor de calcul), foarte ieftine si
deosebit de performante. Daca inainte un departament putea sa cumpere un calculator, acum
calculatoarele pot fi cumparate de o persoana. Aceste calculatoare, in general realizate cu un
singur procesor, deservesc o singura persoana, de unde si-au primit denumirea de calculatoare
personale.
Unul din reprezentatele tehnologiei moderne este supercalculatorul Cray, proiectat de
catre Seymour Cray, acelasi care a proiectat calculatorele CDC 6600 si CDC 7600.
Familia de circuite Intel
A inceput in 1968 prin realizarea primelor circuite de memorie. La solicitarea unor
beneficiari de a realiza o unitate centrala si un controler, Intel a realizat procesoarele 4004 pe
4 biti (1971) si 8008 pe 8 biti (1972). Acestea au fost primele Unitati Centrale de Prelucrare
(CPU - Cental Processing Unit) realizate intr-un singur circuit integrat. Ca urmare a
succesului avut s-a realizat in continuare, in 1974, procesorul 8080 pe 8 si spatiu de adresare
64 kocteti. Au urmat procesoarele 8085 (1974, 8 biti, 64 kocteti), 8086 (1978, 16 biti, 1M),
8088 (1980, 8 biti, 1M), 80186 si 80188 (1982, 16 biti, 1 M, cu facilitati de I/O), 80286
(1982, 16 biti, 16 M), 80386 (1985, 32 biti, 70Tera - 240), 80486 (1989, 32 biti, 70T) ca
versiune mai rapida a lui 80386.
Firma IBM a utilizat procesorul 8088 in primul calculator personal IBM-PC care a
devenit standard in industria calculatoarelor personale. 80286 a fost utilizat in calculatoarele
personale IBM-PC/AT si in modelele PS/2. Setul de instructiuni cuprindea instructiunile
procesoarelor precedente la care au fost adaugate altele mai performante. Se asigura astfel
compatibilitatea cu calculatoarele aflate deja pe piata. Organizarea memoriei era insa diferita.
Procesorul 80386 are atit magistrala de date cit si registrele pe 32 biti si un spatiu de
adresare mult mai mare. Se pastreaza in continuare regula compatibilitatii.

1-5

Procesorul 80486 este o imbunatatire a lui 80386 in ce priveste viteza. Viteza mare
este atinsa prin existenta coprocesorului de virgula flotanta, a controlerului de memorie si a
unei memorii cache de 8k in acelasi integrat cu UCP.
Evolutia procesoarelor este impresionanta atit ca tehnologie si performante cit si ca
pret. S-a evoluat de la 4 biti la 32 biti cu un factor de performanta de peste 1000. In ce
priveste tehnologia, 8086 continea 30.000 trazistoare, iar 80486 contine peste 1 milion.
Familia de circuite Motorola
Alaturi de circuitele Intel s-au dezvoltat si alte familii de microprocesoare, dintre care
cele mai performante sunt cele produse de firma Motorola. Circuitele Motorola au evoluat in
paralel cu cele realizate de Intel, intre ele existind mereu o echivalenta si o concurenta pe
piata calculatoarelor.
S-a inceput cu 6800 ca un raspuns la Intel 8080. In 1979 apare 68000 pe 16 biti si
16M memorie, dar cu registre de 32 biti. Acest procesor a fost ales de firme ca Macintosh,
Atari, Amiga pentru calculatoarele personale.
68010 (1983) are facilitati de control a memoriei virtuale, dar numai 16M memorie.
68012 (1983) adauga un spatiu de adresare de 2G.
Urmatorul procesor 68020 (1984) are un succes urias datorita magistralei de date si a
registrelor pe 32 biti, spatiu de adresare de 4G. A fost utilizat pentru statiile de lucru Sun,
Apollo si Hewlett-Packard. Succesorul este 68030 (1987) care adauga managementul de
memorie in acelasi integrat.
In 1989 apare 68040, care ca si 80486 contine CPU, coprocesorul de virgula flotanta,
unitatea de management a memoriei, memoria cache in acelasi integrat. Aceeasi regula a
compatibilitatii se pastreaza si la circuitele din familia Motorola.

1-6

2 REPREZENTAREA INFORMATIEI
Calculatoarele digitale prelucreaza informatia reprezentata prin doua stari codificate
prin simbolurile 0 si 1. Reprezentarea informatiei prin doua simboluri se numeste
reprezentare binara. Unitatea informationala este deci starea binara numita bit. Un bit se
codifica prin 0 sau 1, dar poate reprezenta numere sau valori logice. La reprezentarea
numerelor simbolurile 0 si 1 sunt interpretate ca cifre binare, iar la reprezentarea valorilor
logice simbolurile 0 si 1 sunt interpretate ca valori logice "adevarat" (TRUE) si fals
(FALSE). Cu numere opereaza aritmetica binara, iar cu valori logice opereaza algebra
booleana. Numele algebrei este dat dupa numele matematicianului englez George Boole
(1815-1864), descoperitorul ei. Calculatoarele opereaza cu ambele tipuri de informatie
utilizind aceeasi reprezentare la nivel de bit dar reprezentari conventionale diferite la nivel de
informatii complexe (numere cu semn, virgula flotanta, etc.).
Sa analizam in continuare citeva elemente de reprezentare a numerelor si a informatiei
logice si posibilitati de operare cu aceste informatii.
2.1 Reprezentarea numerelor. Operatii aritmetice
2.1.1 Sisteme de numeratie
Sistemul de numeratie defineste totalitatea simbolurilor si regulilor de reprezentare a
numerelor. Numarul de simboluri utilizat se numeste baza sistemului de numeratie. De
exemplu, sistemul de numeratie cu baza b = 10 este sistemul zecimal, b = 2 este sistemul
binar, etc.
Exemplu:
Sistemul zecimal:
b = 10, simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Sistemul binar:
b = 2, simboluri: 0, 1
Sistemul octal:
b = 8, simboluri: 0, 1, 2, 3, 4, 5, 6, 7
Sistemul hexazecimal:
b = 16, simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E, F
Fie un numar N intreg, N 0. Reprezentarea in baza b a numarului N este secventa
de simboluri: xmxm-1x1x0 care verifica relatiile:
a) 0 xi < b, i = 1, , m, xm 0
b) N = xmbm + xm-1bm-1 + +x1b + x0
Exemple:
b = 10,
N = 452310 = 4 103 + 5 102 + 2 10 + 3
b = 8,
N = 5738 = 5 82 + 7 8 + 3
b = 2,
N = 1010012 = 1 25 + 0 24 + 1 23 + 0 22 + 0 21 + 1
Sunt sisteme de numeratie pozitionale, fiecare cifra are o pondere in functie de pozitia pe care
o ocupa in raport cu celelalte cifre din numar. Numerele reale au o reprezentare asemanatoare,
insa contin punctul fractionar (sau virgula) care desparte partea intreaga de partea fractionara.
Fie un numar r real, r 0. Reprezentarea in baza b a numarului r este secventa de
simboluri: xmxm-1x1x0.x -1x -2 care verifica relatiile:
a) 0 xi < b, i = m, ,1, 0, -1, -2, , xm 0
b) nu exista un rang k astfel incit incepind de la acel rang xk = xk-1 = = b-1

2-1

c) r = xmbm + xm-1bm -1 + + x1b + x0 + x -1b-1 + x -2b-2 +


Exemple:
b = 10,
N = 45.2310 = 4 10 + 5 + 2 10-1 + 3 10-2
b = 8,
N = 5.738 = 5 8 + 7 8-1 + 3 8-2
b = 2,
N = 101.0012 = 1 22 + 0 2 + 1 + 0 2-1 + 0 2-2 + 1 2-3
2.1.2 Conversia unui numar dintr-o baza in alta
Sa consideram pentru inceput cazul numerelor intregi pozitive. Reprezentarea cu care
suntem familiarizati este sistemul zecimal. Deci reprezentarea intr-o baza oarecare b se
reduce la transformarea reprezentarii din zecimal in baza b.
2.1.2.1 Numere intregi
Sa observam ca numarul N se poate scrie sub forma:
N = xmbm + xm-1bm-1 + +x1b + x0 = (((xm+ 0)b + xm-1)b + +x1)b + x0
sau

N = N1b + x0, unde N1 este citul, iar x0 restul impartirii intregi a lui N la b
N1 = N2b + x1,
...
Nm-1 = Nmb + xm-1,
Nm = 0 b + xm

operatia de descompunere continua pina cind Ni devine 0.


Exemplu:
N = 73, b =10
conversia in baza 2:
N = 73 = 36 2 + 1, N1 = 36, x0 = 1
N1 = 36 = 18 2 + 0, N2 = 18, x1 = 0
N2 = 18 = 9 2 + 0, N3 = 9, x2 = 0
N3 = 9 = 4 2 + 1, N4 = 4, x3 = 1
N4 = 4 = 2 2 + 0, N5 = 2, x4 = 0
N5 = 2 = 1 2 + 0, N6 = 1, x5 = 0
N6 = 1 = 0 2 + 1, N7 = 0, x6 = 1
deci reprezentarea N = 7310 = 10010012
In general baza indice se scrie doar in cazurile cind pot apare confuzii de interpretare.
2.1.2.2 Numere reale
Fie numarul real r = rI + rS, unde rI este partea intreaga iar rS este partea subunitara.
Conversia partii intregi in baza b este la fel ca pentru numerele intregi. Sa analizam conversia
partii subunitare.
Deci 0 < rS < 1, unde rS = 0.x -1x -2
iar
rS = x -1b-1 + x -2b-2 +
Daca inmultim cu b fiecare membru al expresiei, rezulta:

2-2

b rS = x -1 + x -2b-1 + = x -1 + rS1 < b, x -1 {0, 1, , b-1}, 0 rS1 < 1


b rS1 = x -2 + x -3b-1 + = x -2 + rS2 < b, x -2 {0, 1, , b-1}, 0 rS2 < 1
...
b rSk-1 = x -k + rSk < b, x -k {0, 1, , b-1},
operatia de inmultire continua pina cind rSk devine egal cu zero sau s-a ajuns la un rang k
sufient pentru precizia de reprezentare a numerelor fractionare.
Exemplu:
r = 37.28 = rI + rS,
0 < rS = 0.28 < 1,
conversia in baza b = 16:
16 rS = 4.48 = 4 + 0.48 = x -1 + rS1 < 16, x -1 = 4, rS1 = 0.48
16 0.48 = 7.68 = x -2 + rS2 , x -2 = 7, rS2 = 0.68
16 0.68 = 10.88 = x -3 + rS3 , x -3 = A, rS3 = 0.88
16 0.88 = 14.08 = x -4 + rS4 , x -4 = E, rS4 = 0.08
16 0.08 = 1.28 = x -5 + rS5 , x -5 = 1, rS5 = 0.28
consideram k =5 precizia suficienta de reprezentare a numarului.
Deci reprezentarea partii fractionare este: rS = 0.2810 = 0.47AE116
Partea intreaga are reprezentarea rI = 3710 = 2516 , deci: r = 37.2810= 25.47AE116
2.1.2.3 Conversia binar-octal-hexazecimal
Reprezentarea interna in calculator este binara dar utilizatorii folosesc ca reprezentare
externa o alta baza mult mai simplu de interpretat: baza 10, 8 sau 16. Sistemul zecimal il
folosim in operatiile cotidiene. Sistemul octal sau hexazecimal au avantajul unei reprezentari
mai scurte fata de sistemul binar, dar dezavantajul utilizarii mai multor tipuri de simboluri.
Apare deci utila transformarea rapida din binar in octal sau hexazecimal si invers.
Reprezentarea in binar a cifrelor din octal necesita 3 biti (8 = 23), iar a cifrelor din
hexazecimal necesita 4 biti (16 = 24):
Cifra
din
octal

Codul
in
binar

0
1
2
3
4
5
6
7

000
001
010
011
100
101
110
111

Cifra
din
hexazecimal
0
1
2
3
4
5
6
7
8
9
A
2-3

Codul
in
binar
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

B
C
D
E
F

1011
1100
1101
1110
1111

Conversia din binar in octal


Fie r = xmxm-1x1x0 . x -1x -2 reprezentarea in binar a numarului real r.
r = xm2m + xm-12m -1 + + x12 + x0 + x -12-1 + x -22-2 +
cifra octala se reprezinta prin trei biti, deci grupind in triade rezulta:
r = (x3k+223k+2 + x3k+123k+1 + x3k23k) + + (x222 + x12 + x0) + (x -12-1 + x -22-2 + x -32-3) +
sau
r = 23k(x3k+222 + x3k+12 + x3k) + + (x222 + x12 + x0) + 2-3(x -122 + x -22 + x -3) +
r = 8kyk + + 80y0 + 8-1y -1 , 0 yi = x3i+222 + x3i+12 + x3i < 8
Regula de conversie: fiind data reprezentarea in binar a unui numar real, reprezentarea in
octal se obtine grupind cite trei cifre binare de la marca fractionara (punct, virgula) spre stinga
si spre dreapta si substituind fiecare triada cu echivalentul sau octal. Grupele extreme se
completeaza cu zerouri nesemnificative, daca este cazul.
Conversia din octal in binar se face prin inlocuirea fiecarei cifre octale cu echivalentul
sau binar. Conversia din binar in hexazecimal se face asemanator conversiei binar-octal cu
deosebirea ca gruparea cifrelor binare se face cite patru.
Exemplu:
r = 101011001.000101112 = 531.0568 = 159.1716

2.1.3 Operatii aritmetice elementare


2.1.3.1 Adunarea
Adunarea a doua cifre in baza b se face modulo b. Transportul se considera cifra de
rang superior. De exemplu, adunarea in baza 2 se defineste conform tabelului urmator:
x
0
0
1
1
Exemplu:
2510 = 110012 +
1310 = 011012

y
0
1
0
1

5A4B +
C983

2-4

+
0
1
1
10

3810 = 1001102

123CE

2.1.3.2 Scaderea
Scaderea a doua cifre in baza 2 se defineste in tabelului urmator:
x
0
0
1
1
Exemplu:
2510 = 110012 1310 = 011012

y
0
1
0
1

0
1
1
0

CA4B +
59 83

1210 = 011002

70C8

2.1.3.3 Inmultirea
Inmultirea a doua cifre in baza 2 se defineste in tabelului urmator:
x
0
0
1
1

y
0
1
0
1

*
0
0
0
0

Exemplu:
25.510 = 11001.1002 *
13.2510 = 01101.0102
00000000
11001100
00000000
11001100
00000000
11001100
11001100
00000000
337.87510 =

101010001.1110002

2.1.3.4 Impartirea
Impartirea a doua numere nu are sens daca impartitorul este egal cu zero. Impartirea a
doua cifre binare este simpla 0:1 = 0, 1:1 = 1.
Exemplu:

2-5

42310 : 2110 = 2010 rest 3


42310 = 1101001112
2110 = 101012
110100111
10101
10101
10100 = 2010
0010101
- -10101
- -----11 = 310

2.1.4 Reprezentarea numerelor cu semn. Operatii aritmetice


Numerele fara semn se reprezinta simplu prin corespondentul lor binar. Numarul
minim de biti necesar pentru reprezentarea numarului N este egal cu n, unde n trebuie sa
indeplineasca conditia 2n-1 N < 2n.
Numerele cu semn se pot reprezenta prin 3 forme: in semn - marime, in complement
fata de 1 si in complement fata de 2. Exista si alte forme de reprezentare cum ar fi
complement fata de 10, complement fata de 9, etc. Primele trei forme au o utilizare mai larga,
generala, spre deosebire de celelalte care se folosesc in calculatoare specializate pentru un
anumit tip de calcule si aplicatii. Utilizarea mai multor forme de reprezentare isi are motivatia
in simplitatea efectuarii anumitor calcule si conversii de reprezentare, asa cum vom vedea in
continuare.
2.1.4.1 Reprezentarea numerelor in semn - marime
Consideram reprezentarea numarului pe n+1 biti. Formatul de reprezentare contine pe
primul bit din stinga semnul numarului:
s = 0, daca numarul N 0
s = 1, daca numarul N < 0,
ceilalti n biti contin marimea numarului egala cu reprezentarea binara a valorii absolute |N|.
S
1

M-marime

n biti

Exemplu:
n = 5 2510 = 0 11001, S = 0, M = 11001
-25 = 1 11001, S = 1, M = 11001
Reprezentarea numerelor reale cu semn este asemanatoare reprezentarii numerelor intregi.
Conditia care se pune este utilizarea unui numar n1 de biti pentru partea intreaga si n2 pentru
partea fractionara. Se impune astfel o pozitie fixa pentru punctul fractionar. Acest tip de
reprezentare se numeste reprezentare cu virgula fixa, spre deosebire de reprezentarea cu
virgula mobila, care va fi prezentata ulterior.
Formatul de reprezentare :
S M1-marime partea intreaga M2-marime partea fractionara
1

n1

n2 biti

2-6

Exemplu:
r = 37.2810= 25.47AE116 = 0 000 0010 0101.0100 0111 1010 1110 0001
Utilizam 1 bit pentru semn, partea intreaga n1 = 11 biti, 1 bit pentru punctul fractionar,
partea fractionara n2 = 20 biti.
0 000 0010 0101 0100 0111 1010 1110 0001
2.1.4.2 Reprezentarea numerelor cu semn in complement fata de 1
Pentru numere pozitive N 0 reprezentarea in complement fata de 1 este identica cu
reprezentarea in semn - marime.
Daca N < 0, atunci S = 1, si marimea M = C1(|N|) = 2n -1-|N|, unde n este numarul de
biti utilizati pentru reprezentarea marimii.
Exista doua metode de calcul a complementului fata de 1:
a). conform definitiei:
daca N < 0 S = 1, M = 2n -1-|N|
Exemplu:
n = 7, N1 = 75 = 0 1001011
N2 = -75 S = 1, M = 27 -1-|N2| = 128 -1 -75 = 52 = 0110100
-75 = 1 0110100
b). prin inversarea bitilor reprezentarii cu semn a valorii absolute |N| a numarului N.
Exemplu:
N = -75. Se reprezinta |N| cu semn: 0 1001011
Se inverseaza fiecare bit: 1 0110100
2.1.4.3 Reprezentarea numerelor cu semn in complement fata de 2
Pentru numere pozitive N 0 reprezentarea in complement fata de 2 este identica cu
reprezentarea in semn - marime si cu reprezentarea in complement fata de 1.
Daca N < 0, atunci S = 1, si marimea M = C2(|N|) = 2n - |N|, unde n este numarul de
biti utilizati pentru reprezentarea marimii.
Exista trei metode de calcul a complementului fata de 2:
a). conform definitiei:
daca N < 0 S = 1, M = 2n -|N|
Exemplu:
n = 7, N1 = 75 = 0 1001011
N2 = -75 S = 1, M = 27 -|N2| = 128 -75 = 53 = 0110101
-75 = 1 0110101
b). prin inversarea bitilor reprezentarii cu semn a valorii absolute |N| a numarului N, la care se
adauga 1.
Exemplu:
N = -75. Se reprezinta |N| cu semn: +75 = 0 1001011
Se inverseaza fiecare bit: 1 0110100
Se aduna 1: 1 0110100 + 1 = 1 0110101
Deci -75 = 1 0110101

2-7

c). se analizeaza de la dreapta la stinga reprezentarea cu semn a valorii absolute |N| a


numarului N. Primii biti de 0 si primul bit de 1 se lasa neinversati, apoi se inverseaza toti
bitii, inclusiv bitul de semn.
Exemplu:
N1 = -75. Se reprezinta |N1| cu semn: =75 = 01001011
Se analizeaza bitii de la dreapta spre stinga si se inverseaza: 1 0110101
N2 = - 96. Se reprezinta |N2| cu semn: +96 = 01100000
Se analizeaza bitii de la dreapta spre stinga si se inverseaza: 1 0100000

2.1.4.4 Operatii aritmetice cu numere cu semn in complement fata de 2


2.1.4.4.1 Adunarea a doua numere cu acelasi semn
Numerele au reprezentare in complement fata de 2. Rezultatul trebuie sa aiba acelasi
semn cu al operanzilor. Poate genera depasire a capacitatii de reprezentare pe n+1 biti.
Exemple: n = 5
Un exemplu de adunare fara eroare este urmatorul:
-1710 = 1011112 +
-1010 = 1101102
-2710 = 1001012
Adunare cu eroare:
2710 = 0110112 +
2010 = 0101002
4710 1011112
Apare transport spre rangul de semn desi operanzii sunt pozitivi. Suma rezulta negativa, deci
este eroare. Pentru efectuarea corecta a operatiei de adunare ar trebui utilizati 6 biti pentru
partea de marime, care sa permita reprezentarea de exemplu, a sumei 47.
Tot eroare poate apare si la adunarea a doua numere negative:
-2710 = 1001012 +
-2010 = 1011002
-4710 0100012
Aici trebuie sa apara transport spre rangul de semn, pentru a rezulta o suma negativa.
2.1.4.4.2 Adunarea a doua numere cu semne diferite

2-8

Nu poate genera depasire a capacitatii de reprezentare pe n+1 biti.


Exemple: n = 5
-2710 = 1001012 +
2010 = 0101002
- 710 = 1110012
2.1.4.4.3 Scaderea a doua numere cu acelasi semn
Nu poate genera depasire a capacitatii de reprezentare pe n+1 biti. Scaderea se
efectueaza ca o adunare a primului operand cu complementul fata de 2 a reprezentarii celui de
al doilea operand.
Exemplu: n = 5
-2710 = 1001012 -2010 = 1011002

-2710 = 1001012 +
C2(-2010 ) = 0101002
- 710 = 1110012

2.1.4.4.4 Scaderea a doua numere cu semne diferite


Poate genera depasire a capacitatii de reprezentare pe n+1 biti. Scaderea se efectueaza
ca o adunare a primului operand cu complementul fata de 2 a reprezentarii celui de al doilea
operand. Prin complementarea celui de al doilea operand rezulta operanzi avind acelasi semn,
deci adunarea se reduce la primul caz - adunarea operanzilor cu acelasi semn.
Exemple: n = 5
-2710 = 1001012 2010 = 0101002

-2710 = 1001012 +
C2(2010 ) = 1011002
-4710 0100012

a aparut eroare de reprezentare. Bitul de semn al rezultatului este 0 desi ar trebui sa fie 1,
corespunzator sumei -7.
-2710 = 1001012 210 = 0000102

-2710 = 1001012 +
C2(210 ) = 1111102
-2910 = 1000112

rezultat corect.
2.1.5 Reprezentarea in virgula flotanta
In multe calculatoare domeniul numerelor utilizate este foarte mare. De exemplu, 1075
sau 10-83. Reprezentarea acestor numere prin semn marime ar necesita foarte multe cifre atit
in stinga cit si in dreapta punctului fractionar. Capacitatea de reprezentare in virgula fixa nu
depaseste in general n = 32 sau chiar 64, insuficienta pentru a pastra numere foarte mari.
2-9

Pentru reprezentarea unui domeniu foarte larg de numere se utilizeaza reprezentarea in


virgula mobila combinata cu reprezentarile in complement fata de 1 sau 2, care permit calcule
aritmetice simple.
2.1.5.1 Principiul reprezentarii in virgula flotanta
Numerele sunt reprezentate in notatia stiintifica: r = m x 10e, unde m se numeste
fractie sau mantisa, iar e este un intreg pozitiv sau negativ numit exponent. Acest tip de
notatie se numeste virgula flotanta sau virgula mobila. Exemple de numere exprimate in
aceasta forma:
5.231 = 0.5231 x 101 = 5.231 x 100
0.0047 = 0.47 x 10-2 = 4.7 x 10-3
7830 = 0.783 x 104 = 7.83 x 103
Deoarece exista mai multe forme de reprezentare pentru acelasi numar s-a stabilit o forma
standard in care mantisa este subunitara si pozitiva 0 m < 1. Pentru a analiza principiile
reprezentarii in virgula flotanta sa facem urmatoarele presupuneri: baza de numeratie 10,
reprezentarea mantisei ca un numar cu semn si trei cifre in domeniul 0.1 m < 1 sau zero,
reprezentarea exponentului ca un numar cu semn si doua cifre.
Rezulta astfel un domeniu intre +0.100x10-99 si +0.999x10+99, iar pentru reprezentarea
unui numar sunt suficiente doua semne si cinci cifre. Pozitionarea domeniului de reprezentare
pe axa numerelor reale este ca in figura 2-1.

1
depasire
negativa

-10 100

2
numere
negative
reprezentabile

3
numere
negative
prea
mici

-10 100

4
zero

5
numere
pozitive
prea
mici

6
numere
pozitive
reprezentabile

-10 100

7
depasire
pozitiva

-10 100

Figura 2- 1 Zonele reprezentabile in virgula mobila.


Zonele din figura 2-1 reprezinta urmatoarele numere:
1. numere foarte mari in valoare absoluta, dar negative mai mici decit -0.999x1099.
2. numere negative intre -0.999x10+99 si -0.100x10-99.
3. numere negative foarte mici, cu valoare absoluta mai mica decit 0.100x10-99.
4. zero.
5. numere pozitive foarte mici, cu valoare absoluta mai mica decit 0.100x10-99.
6. numere pozitive intre +0.100x10-99 si +0.999x10+99.
7. numere foarte mari in valoare absoluta, pozitive mai mari decit +0.999x1099.
Diferentele esentiale intre reprezentarea in virgula mobila prezentata ca exemplu si numerele
de pe axa reala sunt urmatoarele:
- numerele din zonele 1, 3, 5 si 7 nu pot fi reprezentate.

2-10

- erorile obtinute prin trunchierea numerelor din zonele 1 si 7 sunt mult mai mari decit erorile
obtinute prin trunchierea numerelor din zonele 3 si 5. Trunchierea apare la obtinerea unor
rezultate aritmetice din zonele 1, 3, 5 si 7 care nu se pot reprezenta, in exemplul ales.
Rezultatele se trunchiaza la valorile de la capetele zonelor.
- domeniile 2 si 6 nu sunt continue asa cum este multimea numerelor reale. Intre oricare doua
numere reale x si y se gaseste un numar real z. Reprezentarea prin virgula flotanta nu permite
ca intre doua numere vecine u si v sa se reprezinte un alt numar w. Aproximarea lui w la u
sau v se numeste rotunjire.
- intervalul dintre doua numere reprezentabile vecine u si v nu este constant pe tot domeniul 2
sau 6. De exemplu intervalul dintre +0.998x1099 si +0.999x1099 este mult mai mare decit
intervalul dintre +0.998x100 si +0.999x100 . Insa eroarea relativa la valoarea numarului este
aceeasi.
Prin marirea numarului de cifre utilizate pentru reprezentarea mantisei se mareste
precizia de reprezentare in cadrul domeniilor 2 si 6. Prin marirea numarului de cifre a
exponentului se maresc domeniile 2 si 6. In calculatoare baza 10 se utilizeaza mai rar. In
general se folosesc bazele 2, 4, 8 sau 16.
De asemenea, se foloseste reprezentarea in care mantisa are prima cifra din stinga
diferita de zero. Aceasta forma a mantisei se numeste normalizata. Se obtine astfel o
reprezentare unica pentru un numar.
Pentru a nu folosi exponenti negative se introduce notiunea de caracteristica.
Caracteristica este egala cu exponentul cu semn deplasat intr-un interval pozitiv. De exemplu
pentru un exponent in domeniul [-64, +63] se face deplasarea cu +64 si vor rezulta
caracteristici in domeniul [0, 127].
Exemple:
Utilizam urmatoarele cimpuri in formatul de reprezentare:
1 bit pentru semnul mantisei S
7 biti pentru caracteristica c
24 biti pentru mantisa m
S

caracteristica

mantisa

1 Consideram baza b = 16
Fie numarul r = +37.2810= 25.47AE16
in reprezentare normalizata r = 0.2547AEx 162 ,rezulta S = 0, c = 64 + 2 = 66 = 42h,
m = 0.2547AEh, am specificat prin h codificarea in hexazecimal.
Reprezentarea in virgula mobila este urmatoarea:
0100 0010 . 0010 0101 0100 0111 1010 1110 = 42 2547AE h
2 Consideram baza b = 2
Fie numarul r = +37.2810= 10 0101.0100 0111 1010 11102
in reprezentare normalizata r = 0.1001 0101 0001 1110 1011 1000 x 2-6 ,rezulta S = 0, c = 64
- 6 = 48 = 30h = 011 0000,
m = 0.1001 0101 0001 1110 1011 1000,
Reprezentarea in virgula mobila este urmatoarea:
0011 0000 . 1001 0101 0001 1110 1011 1000 = 30 951EB8 h

2-11

Observam ca cele doua reprezentari difera. Normalizarea in hexa inseamna ca prima cifra a
mantisei sa fie diferita de zero, deci cel putin un bit din primii patru. Normalizarea in binar
inseammna ca primul bit sa fie diferit de zero.
3 Consideram baza b = 16
Fie numarul r = -37.2810= -25.47AE16 . Utilizam reprezentarea in complement fata de 2
folosita in calculatoare, in special in aritmetica in virgula flotanta.
In reprezentare normalizata valoarea absoluta a lui r este r = 0.2547AEx 162 ,
rezulta S = 0, c = 64 + 2 = 66 = 42h,
m = 0.2547AEh, am specificat prin h codificarea in hexazecimal.
Reprezentarea in virgula mobila este urmatoarea:
0100 0010 . 0010 0101 0100 0111 1010 1110 = 42 2547AE h
Deoarece numarul r este negativ facem complementarea fata de 2, deci:
168 - 42 2547AE = BD DAB852
4 Consideram baza b = 2
Fie numarul r = -37.2810= 10 0101.0100 0111 1010 11102
Reprezentarea in virgula mobila este urmatoarea:
0011 0000 . 1001 0101 0001 1110 1011 1000 = 30 951EB8 h
Facem complementarea fata de 2 si rezulta:
232 - 30 951EB8 = CF 6AE148

2.1.5.2 Reprezentarea standard in virgula flotanta


In 1985 s-a adoptat standardul IEEE 754 care prevede reprezentarea numerelor in
virgula flotanta. Majoritatea firmelor producatoare de microprocesoare cum ar fi Intel,
Motorola, SPARC si MIPS produc coprocesoar aritmetice care lucreaza cu reprezentarea
standard in virgula flotanta.
Standardul defineste trei formate: simpla precizie (32 biti), dubla precizie (64 biti) si
precizie extinsa (80 biti). Formatul cu precizie extinsa se utilizeaza in interiorul unitatilor
aritmetice de virgula flotanta, deci la care programatorii nu au acces. Formatele simpla si
dubla precizie folosesc baza 2.
Formatul simpla precizie are 1 bit pentru semn, 8 pentru exponent si 23 pentru
mantisa. Formatul dubla precizie are 1 bit pentru semn, 11 biti pentru exponent si 52 biti
pentru mantisa. Transformarea exponentului in caracteristica foloseste excesul 127 pentru
simpla precizie si excesul 1023 pentru dubla precizie.

2-12

3. STRUCTURA I FUNCIONAREA UNUI SISTEM CU


MICROPROCESOR
Principiile generale prezentate n continuare se regsesc n structura i funcionarea
unui sistem de prelucrare numeric indiferent de tipul circuitului integrat pe scar larg
utilizat i care poate fi microprocesor, microcontroler sau procesor numeric de semnal (DSP).
Unitatea de informaie numeric sau logic utilizat n prelucrarea numeric este
variabila binar (bitul) cu valori numerice 0 i 1 sau logice DA i NU. Pentru reprezentarea
informaiei numerice sau logice se utilizeaz secvene de 8, 16, 24, sau 32 de bii, numite
cuvinte. Cuvintele de 8 bii se numesc octei.
Figura 3.1a reprezint arhitectura clasic a unui microcalculator cunoscut sub numele
de arhitectura Von Neumann, dup matematicianul John Von Neumann (1903 - 1957).
Dup cum se vede n figura 3.1.a arhitectura Von Neumann conine o singur memorie i o
singur magistral pentru transferul datelor din i dinspre unitatea central de procesare
(CPU). Pentru a analiza modul de fucionare a acestuia i a arhitecturilor ulterioare s
a. Arhitectura Von Neumann

b. Arhitectura Harvard

c. Arhitectura Super Harvard

Figura 3.1
Arhitectura microprocesoarelor. Arhitectura Von Neumann
folosete o singur memorie pentru a pstra att datele ct
i instruciunile. Arhitectura Harvard utilizeaz memorii
separate de date i instruciuni oferind vitez crescut.
Arhitectura Super Harvard mbuntete prin adugarea
unui cache de instruciuni i a unui controler de I/E.

presupunem c trebuie s multiplicm dou numere care se gsesc undeva n memorie. Pentru
aceasta trebuie s aducem trei valori binare din memorie: numerele care trebuiesc multiplicate
i instruciunea care descrie ce trebuie fcut. Multiplicarea a dou numere necesit cel puin
trei cicluri de clock, cte unul pentru transferul fiecrui numr prin magistral din memorie la
CPU. Nu am socotit timpul necesar pentru transferul rezultatului napoi n memorie pentru c
am presupus ca acesta rmne n CPU pentru manipulri ulterioare. Arhitectura Von

3-1

Neumann este destul de satisfctoare cnd este suficient executarea tuturor taskurilor n
serie. De fapt majoritatea calculatoarelor de astzi au arhitectur Von Neumann. Avem
nevoie de alte arhitecturi numai dac este nevoie de o procesare foarte rapid i suntem
dispui s pltim preul pentru o arhitectur mai complex. Aceasta necesitate a condus la
arhitectura Harvard prezentat n figura 3.1.b Cum se poate vedea aceasta are memorii
separate de date i program cu magistrale separate pentru fiecare. Deoarece aceste magistrale
lucreaz independent, instruciunile i datele pot fi aduse n acelai timp mbuntind viteza
fa de arhitectura cu o singur magistral. Figura 1.c prezint urmtoarea treapt de
complexitate, arhitectura Super Harvard sau arhitectura Harvard modificat. Aceasta
este construit dup arhitectura Harvard creia i s-au adus cteva mbuntiri, relevate n
figura 3.1.c: un cache pentru instruciuni i un controler de I/E.
Dezavantajul structurii Harvard este c magistrala memoriei de date este mai ocupat
dect magistrala memoriei de program. Cnd dou numere sunt multiplicate dou valori
binare (care reprezint numerele) trebuiesc transferate prin magistrala memoriei de date, n
timp ce numai o valoare binar (instruciunea de program) este transferat prin magistrala
memoriei de program. Pentru a mbuntii aceast situaie o parte din date se pot reloca n
memoria program. Spre exemplu coeficienii de nmulire se pot plasa n memoria de program
n timp ce semnalul de intrare se poate pstra in memoria de date. La prima vedere asta pare
s nu ajute deoarece n acest caz trebuie s transferm o valoare prin magistrala memoriei de
date (eantionul din semnalul de intrare) dar dou valori prin magistrala memoriei de program
( instruciunea de program i coeficientul). De fapt dac executm instruciuni aleatoare
situaia nu va fi cu nimic mai bun. Totui de obicei algoritmii de procesare digital a
semnalelor i desfoar o mare parte din timpul de execuie n bucle. Aceasta nseamn c
acelai set de instruciuni se vor transfera din memoria de program n CPU. Arhitectura Super
Harvard se folosete de acest lucru prin includerea unui cache (memorie imediat) de
instruciuni in CPU. Aceasta este o mica memorie de aproximativ 32 din cele mai recente
instruciuni. La prima trecere prin bucl instruciunea este transferat prin magistrala
memoriei de program. Aceasta duce la o execuie mai lent deoarece trebuie transferat prin
aceeai magistrala i coeficientul aflat tot n memoria de program. Totui la o nou execuie a
buclei instruciunea poate fi extras din memoria cache. Aceasta nseamn c toate
transferurile de la memorie la CPU pot fi realizate ntr-un singur ciclu: eantionul din
semnalul de intrare este transferat prin magistrala memoriei de date, coeficientul prin
magistrala memoriei de program, i instruciunea din cache-ul de instruciuni. Acest transfer
eficient de date este numit lime de mare band, de acces la memorie.
Structura unui sistem cu microprocesor este prezentat n detaliu n figura 3.2.
Componenta esenial este Unitatea Aritmetic i Logic (ALU) care poate efectua operaii de
adunare, scdere, nmulire, incrementare, decrementare, I, SAU, SAU-exclusiv etc. ALU
este un circuit combinaional deci pentru memorarea temporar a operanzilor i a rezultatului
unei operaii apare necesitatea unor registre de memorare. ALU genereaz rezultatul unei
operaii, i n funcie de acest rezultat, poziioneaz la nivel logic 0 sau 1 biii indicatori de
condiii. Acetia pot indica de exemplu una dintre condiiile: depirea domeniului de valori
corespunztor reprezentrii operanzilor ca urmare a unei operaii de adunare sau scdere,
obinerea unui rezultat zero ca urmare a unei operaii aritmetice sau logice, obinerea unui
rezultat pozitiv sau negativ, obinerea unui rezultat cu un numr par sau impar de bii cu
valori de 1 etc.
Operanzii i rezultatele operaiilor se numesc date. Datele se memoreaz n registre i
n locaii ale memoriei sistemului. Un registru sau o locaie care conine un operand pentru o
operaie se numete surs pentru operaia corespunztoare. Un registru sau o locaie n care se
ncarc rezultatul unei operaii se numete destinaie pentru operaia corespunztoare.
3-2

MAGISTRALA DE DATE

PORTURI
DE I/E

UNITATE
ARITMETIC
I LOGIC

MEMORIE
DE
DATE

MEMORIE
DE
PROGRAM

REGISTRU
NUMRTOR
DE ADRESE

REGISTRU CU
INDICATORI DE
CONDIII

REGISTRU
DE
INSTRUCIUNI

CIRCUITE DE
DECODIFICARE

GENERATOR
DE TACT

MAGISTRALA DE ADRESE

MAGISTRALA DE CONTROL

UNITATE DE
CONTROL I
SINCRONIZAR
E

REGISTRE
CU FUNCII
DEDICATE

Transferul datelor ntre componentele sistemului se realizeaz prin magistrala de date care
interconecteaz aceste componente. Din punct de vedere fizic magistrala const n conexiuni
de 8, 16, sau 32 fire de legtur paralele. n funcie de numrul de bii ai magistralei de date
se spune c sistemul este de 8, 16, sau 32 bii.
Memoria de date din structura unui sistem cu microprocesor (SMPU) se utilizeaz
pentru memorarea datelor i este de tip RAM sau ROM. Memoria de date de tip ROM se
utilizeaz pentru memorarea unor constante ce intervin n algoritmii de prelucrare numeric.
Adresarea locaiilor memoriei de date se face prin magistrala de adrese a SMPU de 16, 20,
24, sau 32 de bii. Fiecrei adrese referitoare la memoria de date i corespunde o locaie de
memorie la care se poate efectua o operaie de scriere a cuvntului ncrcat pe magistrala de
date de o alt component a SMPU, sau o operaie de citire de ctre o alt component a
SMPU a coninutului memoriei adresate, coninut ncrcat de memorie pe magistrala de date.
Magistralei de adrese de 16, 20, 24, sau 32 de bii i corespunde un spaiu de adresare de 64K,
1M, 16M i respectiv 4G cuvinte.
SMPU cu prinde un grup de registre de 8, 16 sau 32 bii, numite interne, avnd funcii
speciale (dedicate). Aceste registre conin date, adrese, i informaii de control. Astfel exist
registre dedicate care se utilizeaz ca surse cu operanzi sau ca destinaii ale rezultatelor pentru
anumite operaii. Un registru cu funcii dedicate este registrul acumulator, notat A sau ACC,
utilizat ca surs i destinaie n multe operaii aritmetice, logice i de transfer.
Transferul de date ntre SMPU i alte echipamente de intrare/ieire (I/E) se realizeaz
prin porturi de I/E care pot fi de tip paralel sau serie. n cazul unui port paralel, transferul unui
cuvnt ntre SMPU i un echipament de I/E se realizeaz printr-o magistral de I/E de 8, 16
sau 32 de linii, funcie de lungimea cuvntului. transferul unui cuvnt de la un echipament la
SMPU se numete operaie de intrare, iar transferul invers se numete operaie de ieire. n
cazul unui port serial, transferul de date se realizeaz prin dou linii de comunicaie, de
transmisie i respectiv de recepie. Biii corespunztori unui cuvnt se ncarc n ordine
succesiv, cu frecvena de comunicaie, pe linia de recepie sau de transmisie, funcie de
sensul transferului. Adresarea porturilor de I/E se realizeaz prin magistrala de adrese a
SMPU.
Din cele prezentate rezult c magistrala de adrese conine cuvinte de adresare a
datelor din memoria de date, registrele cu funcii speciale i porturile de intrare. Aceste
componente ale SMPU pot ncrca magistrala de date. Deoarece la un moment dat o singur
component a SMPU poate ncrca magistrala de date, rezult necesitatea seleciei
componentelor sistemului funcie de operaiile executate de acesta. Aceast selecie se
realizeaz prin magistrala de control a SMPU de ctre unitatea de control i sincronizare.
Funcia de prelucrare numeric este realizat de ctre sistem prin execuia secvenial
a unor operaii aritmetice, logice i de transfer. Operaiile de transfer se realizeaz ntre
componentele SMPU sau ntre SMPU i echipamentele de I/E. O operaie se realizeaz prin
execuia de ctre SMPU a unei instruciuni. Rezult c o succesiune de operaii corespunde
unei succesiuni de instruciuni, care formeaz un program. O instruciune este definit prin 14 cuvinte de 8 sau 16 bii, care conin codul operaiei de executat, operanzii sau adresele
operanzilor i adresa destinaiei. Cuvintele care definesc o instruciune reprezint codul
main al instruciunii. Elaborarea unui program prin scrierea codurilor main ale
instruciunilor corespunztoare se numete programare n limbaj main.
Fiecrei instruciuni i corespunde o scriere simbolic (cu caractere alfanumerice) care
trebuie s precizeze aceleai informaii ca i codul main, informaii care constau n codul
operaiei, operanzii sau adresele operanzilor i adresa destinaiei. Simbolul corespunztor
codului operaiei se numete mnemonic. Elaborarea unui program prin scrierea simbolic a
instruciunilor se numete programare n limbaj de asamblare.
3-4

Codurile main ale instruciunilor unui program sunt plasate la adrese succesive n
memoria de program a SMPU. Memoria de program de tip ROM sau RAM, este conectat ca
i memoria de date la magistrala de date i de adrese ale SMPU. Rezult c magistrala de date
se ncarc i cu cuvintele reprezentnd codurile instruciunilor.
Execuia unei instruciuni ncepe cu extragerea din memoria de program a primului
cuvnt din codul main, cuvnt care precizeaz codul operaiei corespunztoare instruciunii.
Sub comanda unitii de control i sincronizare, acest cuvnt este transferat prin magistrala de
date n registrul de instruciuni. Registrul de instruciuni realizeaz memorarea temporar a
cuvntului cod operaie n scopul decodificrii. Rezultatul decodificrii este transmis la
unitatea de control i sincronizare care comand funcionarea componentelor SMPU pentru
execuia instruciunii identificat prin decodificare. Aceast comand se realizeaz prin
magistrala de control. n cazul n care codul main al instruciunii conine mai mult de un
cuvnt execuia instruciunii cuprinde i extragerea din memoria de program a celorlalte
cuvinte coninnd date i/sau adrese. Extragerea n ordine succesiv a cuvintelor
reprezentnd codurile main ale instruciunilor unui program se realizeaz prin adresarea
memoriei de program cu registrul numrtor de adrese ale programului (PC). Registrul PC
(de 16 bii) se incrementeaz cu o unitate dup fiecare extragere de cuvnt cod de
instruciune. Unitatea de control i sincronizare poate comanda ncrcarea n registrul PC i a
altor valori dect cele rezultate din numrare n ordine natural, rezultnd salturi n citirea
memoriei de program. Efectuarea unui astfel de salt se numete transfer al controlului i poate
rezulta ca urmare a execuiei unei instruciuni de transfer al controlului (salt, apel de
subrutin, revenire din subrutin) sau ca urmare a unei cereri de ntrerupere.
Din cele prezentate rezult c execuia unei instruciuni de ctre SMPU cuprinde
urmtoarele operaii de baz:
- extragere cod operaie transferul din memoria de program n registrul de
instruciuni al primului cuvnt din codul main al instruciunii, cuvnt care conine codul
operaiei de executat prin instruciune;
- decodificare analiza cuvntului cod operaie cu circuitele pentru decodificarea
instruciunilor i transferul rezultatului decodificrii la unitii de control i sincronizare;
- transfer operanzi - transferul operanzilor ntre componentele SMPU (memorie de
program, memorie de date, registre, porturi de I/E) n scopul execuiei instruciunii;
- execuie execuia operaiei aritmetice, logice sau de transfer precizat de codul
operaie al instruciunii.
Execuia unei instruciuni ncepe cu extragere cod operaie i decodificare, continund
cu o secven specific de operaii de baz de transfer operanzi execuie. Astfel este necesar
funcionarea secvenial i sincronizat a SMPU, care se obine prin comanda componentelor
SMPU de ctre unitatea de control i sincronizare. Viteza de execuie a instruciunilor este
funcie de frecvena semnalului de tact al SMPU. n general o operaie de baz se efectueaz
n 3 12 perioade ale semnalului de tact. Intervalul corespunztor efecturii unei operaii de
baz se numete ciclu main al sistemului. Ciclurile main corespunztoare unei
instruciuni definesc un ciclu de instruciune. Execuia unei instruciuni dureaz cteva
cicluri main incluznd : ciclu de extragere cod operaie, ciclu de decodificare i apoi funcie
de tipul instruciunii, cicluri de citire/scriere, cicluri de intrare/ieire i cicluri de execuie.
Efectuarea acestor cicluri poate implica componente diferite ale SMPU. Rezult posibilitatea
ca SMPU s efectueze simultan cicluri diferite din execuia unei instruciuni sau din execuia
unor instruciuni succesive. Aceast tehnic de suprapunere n timp a execuiei ciclurilor
main (operaie paralel) se numete tehnic pipeline i utilizarea ei n funcionarea unui
SMPU conduce la mrirea vitezei de lucru a acesteia.

3-5

n general, realizarea unui SMPU se bazeaz pe utilizarea unui circuit integrat pe scar
larg de tip microprocesor, microcontroler sau procesor numeric de semnal, care conine,
pentru orice tip, urmtoarele componente din structura general a unui SMPU: unitate
aritmetic i logic, registru cu indicatori de condiii, registru numrtor de adrese, registru de
instruciuni, circuite de decodificare a instruciunilor, unitate de control i sincronizare i
registre cu funcii speciale. Toate aceste componente se numesc interne, relativ la circuitul
integrat utilizat ca baz pentru realizarea SMPU. n acest sens registrele din structura SMPU
se numesc registre interne. Un circuit de tip microcontroler conine toate componentele din
structura general a unui SMPU deci conine i memorie intern i porturi de I/E.
3.1 Microprocesorul. Definitie
Microprocesorul este o unitate centrala de prelucrare realizata intr-un singur circuit
integrat. In unele lucrari de specialitate, in categoria microprocesoarelor sunt incluse si
procesoarele realizate cu un numar redus de circuite VLSI (de exemplu procesoarele obtinute
prin alipirea mai multor unitati elementare de prelucrare pe un bit - arhitecturi bit-slice).
Datorita costului redus si fiabilitatii ridicate microprocesoarele au o larga
aplicabilitate fiind folosite pentru realizarea de microcalculatoare, echipamente periferice,
sisteme de conducere a proceselor industriale, aparate medicale, etc. Aparitia acestora a
revolutionat modul de proiectare al sistemelor de calcul.
3.2 Structura interna a unui microprocesor
In principiu un microprocesor inglobeaza toate blocurile functionale ale unei unitati
centrale si anume:
-unitatea aritmetica si logica
-unitatea de comanda
-registre generale si speciale.
Un microprocesor dispune de un set de instructiuni adaptat structurii sale interne. In
cazul microprocesoarelor actuale (ex.: 8088, 80486, Pentium) intr-un singur cip sunt
inglobate mai multe procesoare care pot efectua o serie de operatii in paralel. Pentru un
observator extern insa aceste procesoare se comporta asemeni unei singure unitati centrale.
3.2.1 Semnalele unui microprocesor
Semnalele unui microprocesor se pot imparti functie de rolul acestora in trei categorii:
adrese, date si comenzi. Prin aceste semnale microprocesorul controleaza fluxul de date si
secventa de evenimente dintr-un sistem de calcul. Aceste semnale sunt conectate la modulele
de memorie si de intrare/iesire ale sistemului de calcul prin intermediul unui set de fire
paralele care alcatuiesc o magistrala.
Numarul de linii de adresa determina spatiul de adresare al microprocesorului sau
altfel spus numarul maxim de locatii de memorie sau de locatii dde intrare/iesire care pot fi
adresate de microprocesor. Daca n este numarul acestor linii atunci spatiul maxim de
adresare este 2 n . In mod obisnuit se folosesc 16, 20, 24 si 32 de linii.
Numarul de semnale de date de pe magistrala determina latimea maxima a cuvintului
de date (sau cod) care se poate transfera . Numarul de semnale de date este in strinsa corelatie
cu structura interna a microprocesorului. De obicei numarul semnalelor de date este multiplu
de 8 (8, 16, 32, 64).

3-6

Mag. Adrese
P

Mag. Date
Mag. Comenzi

Memorie

Interfata
de I/E

Interfata
de I/E

Dispozitive
periferice
Figura 3.3. Configuratia de principiu a unui sistem cu microprocesor
Pe linga semnale de adrese si date un procesor utilizeaza si o serie de semnale de
control. Aceste semnale au rolul de a controla fluxul de date si de a sincroniza
microprocesorul cu anumite evenimente externe. Aceste semnale pot fi clasificate dupa natura
lor in urmatoarele categorii:
-semnale de control
-semnale de intrerupere
-semnale pentru arbitrarea magistralei
-semnale de stare
-semnale diverse.
Adrese
Date

Semnale de arbitrare
a magistralei

Microprocesor

Semnale de stare
Semnale de
Control

Semnal de ceas
Alte semnale

Intreruperi
Alimentare
Figura 3.4 Semnalele unui microprocesor
Semnalele de control (figura 3.4) indica sensul transferului de date (citire/scriere)
precum si sursa/destinatia transferului (memorie sau port de intrare/iesire).
Semnalele de intrerupere sunt intrari pentru microprocesor si au rolul de a indica
aparitia unor evenimente externe. Microprocesorul anunta acceptarea unei intreruperi prin
activarea unui semnal specific.
Semnalele de arbitrare a magistralei sunt necesare pentru reglarea traficului pe
magistrala; permit accesul mai multor unitati master la resursele conectate pe magistrala.
Unitatile master sunt cele care pot controla fluxul de date pe magistrala (ex: microprocesoare,

3-7

unitati de acces direct la memorie). Unitatile slave sunt cele care pot fi accesate (citite/scrise)
de catre unitatile master.
Semnalele de stare permit monitorizarea functionarii microprocesorului de catre un
depanator sau de catre alte module intim legate de microprocesor (coprocesor, controloare de
magistrala etc.).
Intr-un sistem cu microprocesor se pot utiliza mai multe magistrale. Avantajul
utilizarii mai multor magistrale consta in posibilitatea efectuarii unor transferuri in paralel.
Utilizarea mai multor magistrale este indicata mai ales in cazul in care intr-un sistem sunt mai
multe unitati master.

3-8

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