Documente Academic
Documente Profesional
Documente Cultură
1-1
Nivelul 6
Nivelul 5
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 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
1-3
Memoria
Unitatea de
Unitatea logica
si aritmatica
Intrare
control
acumulator
Figura 1.2
Iesire
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
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
2-2
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
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
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
2-8
-2710 = 1001012 +
C2(-2010 ) = 0101002
- 710 = 1110012
-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
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
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-12
b. Arhitectura 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