Sunteți pe pagina 1din 52

Evolutia Microprocesoarelor

Legea lui Moore


Gordon Moore 1965:
numarul de tranzistoare de pe un chip se va
dubla la fiecare doi ani

Legea lui Moore a alimentat o revolutie tehnologica,


pe masura ce Intel a crescut exponential numarul de
tranzistoare integrate in procesoarele sale pentru a
spori performantele si a eficientiza consumul de
energie.
1
Momente importante
1971: Microprocesorul 4004
Primul microprocesor Intel
Folosit la calculatorul Busicom
1972: Microprocesorul 8008
De doua ori mai puternic decat 4004
Folosit la Mark-8 unul din primele home
computers
1974: Microprocesorul 8080
Folosit pentru primul personal computer Altair
costa 395 USD. S-au vandut zeci de milioane.
2
Momente importante
1978: Microprocesorul 8086-8088
Un moment de cotitura pentru IBM PC.
Este procesorul care a propulsat compania Intel in
topul Fortune 500.
1982: Microprocesorul 286
Initial cunoscut ca 80286, a fost primul procesor pe
care putea rula tot software-ul scris pentru
predecesorul sau.
Caracteristica de baza: compatibilitatea cu versiunile
anterioare.
La 6 ani de la lansare, un numar de 15 milioane de
computere foloseau procesorul 286.
1985: Mircroprocesorul Intel386
275000 tranzistoare, de 100 de ori mai multe decat
4004.
Chip pe 32 de biti 3
multitasking
Momente importante
1989: Intel486 DX CPU
Coprocesor matematic cresterea vitezei de calcul
1993: Intel Pentium
Incorporare usoara a datelor din lumea reala
sunete, fotografii etc.
1995: Intel Pentium Pro
Destinat aplicatiilor pentru statii si servere pe 32 de
biti
Computer-aided design, calcule stiintifice
Fiecare procesor Intel Pentium Pro contine un al
doilea chip de memorie cache.
Contine 5.5 milioane de tranzistoare.
Unele procesoare au contacte cu pini si altele
montate in asa numitele BGA (Ball Grid Array) 4
Momente importante
1997: Intel Pentium II
7.5 milioane de tranzistoare
Tehnologie MMX pentru procesarea eficienta a
datelor video, audio si gragice.
Introdus in SEC Single Edge Contact Cartridge
care incorporeaza un chip de memorie cache
rapida.
Utilizatorii pot edita si partaja fotografii, text,
muzica, tranzitii de imagini in cadrul unui videoclip
si apoi pot trimite aceste date pe Internet.

5
Momente importante
1998: Intel Pentium II Xeon
Destinat pentru niveluri de performanta necesare
serverelor, potrivit strategiei Intel de a oferi
procesoare destinate unor segmente de piata
specifice.
Folosit pentru statii si servere pe care ruleaza
aplicatii de business consumatoare de resurse:
servicii Internet, data warehousing, creare de
continut digital, design.
Sistemele bazate pe acest procesor pot cotine
pana la 8 procesoare.

6
Momente importante
1999: Intel Celeron
Destinat segmentului de piata PC.
Performante inalte la preturi rezonabile
Excelent pentru gaming si software educational.
1999: Pentium III
70 de instructiuni noi
3-D, streaming audio, video.
Proiectat pentru browsing Internet confortabil, real-
time muzee online, magazine virtuale etc.
9.5 milioane de tranzistoare.
1999: Intel Pentium III Xeon
Performante suplimentare, ideal pentru aplicatii de e-
Commerce si pentru multiprocesoare (tehnologie
cache avansata ce creste viteza de transmitere a
7
datelor de la magistrala la procesor).
Momente importante
2000: Intel Pentium 4
Videoclipuri TV transmise prin Internet
Comunicare real-time de sunete, imagini si voce
Randare de grafica 3D
42 milioane de tranzistoare
Viteza de 1.5 GHz (fata de 4004 care avea viteza
de 108 KHz).
Daca viteza automobilelor ar fi avut aceeasi rata
de crestere, distanta de la San Francisco la New
York ar fi putut fi strabatuta in doar 13 secunde

8
Momente importante

2001: Intel Itanium


Primul din familia de procesoare pe 64 de biti de
la Intel.
Destinat statiilor si serverelor enterprise
Arhitectura noua, bazata pe EPIC Explicitly
Parallel Instruction Computing design technology.
Performante inalte pentru aplicatii e-Commerce,
tranzactii securizate, baze de date mari, calcule
stiintifice complexe.

9
Momente importante

2003: Intel Pentium M


Intel Pentium M, Intel 855 si Intel
Pro/Wireless 2100 sunt cele trei
componente bazate pe tehnologia Intel
Centrino ofera portabilitate, wireless LAN
incorporat, performante mobile ridicate.
2006: Intel Core
2006: Pentium Dual-Core

10
Legea lui Moore

11
Dihotomia limbaj de nivel inalt-masina
tinta (1)
Un mare volum din programele destinate
microcalculatoarelor este scris prin utilizarea limbajelor
de nivel inalt.

Cel mai bun mod de imbunatatire a performantelor


microcalculatoarelor: cresterea eficientei de executie
pentru astfel de limbaje.
Prapastie semantica intre
modul in care limbajul de nivel
inalt este vazut de catre
programator si modul de
implementare a acestui limbaj
pe masina tinta.

12
Dihotomia limbaj de nivel inalt-masina
tinta (2)
Memorie:
In limbajele de nivel inalt memoria este privita
drept constand dintr-un set de variabile carora li
s-au asociat nume, set care nu reflecta relatii de
tipul: vecinatatea variabilelor, pozitia lor relativa
etc.

Dar:
Masina fizica are memoria organizata ca o
matrice liniara cu locatii de dimensiuni egale,
fiecarei locatii asociindu-i-se o adresa.
13
Dihotomia limbaj de nivel inalt-masina
tinta (3)
Structuri de date
Limbajele de nivel inalt folosesc structuri de date
multidimensionale (de exemplu matrice cu mai
multi indici), in timp ce organizarea memoriei
unei masini reale poate manipula structuri de
date cu o singura dimensiune.

Apel de proceduri
In unele limbaje de nivel inalt, programarea
structurata necesita o multitudine de apeluri de
proceduri care implica:
transfer de parametri
alocare dinamica a memoriei. 14
Diferenta Cod - Date

Limbajele de nivel inalt fac diferentierea neta intre


cod si date, diferentiere inexistenta in memoria
masinii reale.

Alte caracteristici ale masinii care nu sunt luate in


considerare de limbajele de nivel inalt:
registrele UCP
aritmetica binara
intreruperi.

15
Clasificari Arhitecturale (1)
Diferentele intre clasele de arhitecturi constau
in volumul de prelucrari efectuate prin
program si prin intermediul echipamentului la
executia unui program scris in limbaj de nivel
inalt.

16
Clasificari Arhitecturale (2)

Unele masini necesita volume importante de


translatari din limbajul de nivel inalt in cel
apropiat masinii, ca urmare a nivelului foarte
scazut al limbajului masina, caz in care un
mare volum de prelucrari se efectueaza de
catre software.

Alte masini, avand functii de nivel inalt


implementate in arhitecturi hardware,
necesita un proces de compilare mai simplu.
17
Alocarea Memoriei in Limbaje de Nivel
Inalt (1)
Spatiul de memorie ocupat de un program
este divizat in doua sectiuni principale:
o sectiune read-only - contine codul si constantele
o sectiune read-write - stocheaza toate variabilele
declarate si auxiliare utilizate de catre program

Zona de date poate fi subdivizata in:


zona pentru stiva (stack),
zona pentru variabilele declarate
zona cu acces aleatoriu (heap - gramada
neorganizata), folosita pentru variabilele create
dinamic
18
Alocarea Memoriei in Limbaje de Nivel
Inalt (2)
Memorie Memorie
alocata alocata
programului programului
principal principal

Cadru
Procedura A

19
Alocarea Memoriei in Limbaje de Nivel
Inalt (3)
Programarea recursiva impune ca fiecarei
apelari de proceduri sa i se ofere propria
copie de parametri si variabile definite in
cadrul procedurii.

In felul acesta, apelarea procedurii rezulta in


alocarea unei noi regiuni de memorie, numita
cadru (frame), care contine variabilele locale
ale lui A, parametrii sai, adresa de revenire si
orice alta informatie necesara adresarii
variabilelor exterioare lui A, dar vizibile din
procedura A.
20
Alocarea Memoriei in Limbaje de Nivel
Inalt (4) Frame pointer
niv. 0
Display Frame pointer
field niv. 1

Frame pointer
Registrul 0 niv. i-1
Structura Register
Save Area
posibila a unui Registrul n-1

nou cadru Parametri procedura

alocat in Variabile locale

memorie
Variabile
auxiliare
Adresa revenire

21
Alocarea Memoriei in Limbaje de Nivel
Inalt (5)
Cadru
program
principal

Cadru
Procedura
A

Cadru
Procedura
B

Cadru
Procedura
C

22
Organizarea Memoriei (1)
Toate microprocesoarele au un subsistem al
memoriei organizat ca o matrice liniara de !
elemente de baza de memorare, fiecare din ele
asociat cu o anumita adresa.

Dimensiunea elementului de baza de memorare este


rezultatul compromisului intre doua cerinte disjuncte:

a)reprezentarea compacta a datelor


b)acces eficient la datele stocate in memorie

Adresarea bitilor

Necesitatea unei reprezentari compacte a datelor


conduce la selectarea unei dimensiuni mici a 23
elementului de baza de memorare.
Organizarea Memoriei (2)
Situatia extrema:
Bitul - cea mai mica unitate adresabila a memoriei.
Penalizari asupra performantei si costului
(necesitatea ca bitii sa ajunga la unitatea centrala pe
linii fizice diferite)

Alternativa:
emularea adresarii la nivel de bit pe o masina care
utilizeaza elemente de baza de memorare de
dimensiuni mai mari (mecanism de
deplasare - mascare [barrel-shifter] care extrage
campul necesar intr-un singur ciclu)

Dezavantajele adresarii la nivel de bit au determinat


proiectantii de microprocesoare sa utilizeze elemente 24
de baza de memorie de dimensiuni mai mari.
Biti si Campuri de Biti (1)
Bitul - cea mai naturala reprezentare
interna a variabilelor booleene, but is it
practical?

Camp de biti (bit field) - sir contiguu de


biti in memorie, fara a exista vreo
interpretare speciala asociata
continutului sirului
Masinile care ofera suport pentru acest tip de date dispun de
instructiuni:

pentru copierea unui camp de biti intr-o locatie de memorie sau


intr-un registru

de aliniere a campului la una din frontierele locatiei in care acesta


se afla

de extindere, atunci cand este cazul, a semnului valorii asociate


campului de biti. 25
Biti si Campuri de Biti (2)

Pentru a defini un camp de biti sunt


necesare trei informatii:

a)A - adresa octetului;

b)P - offsetul bitului (primul al campului);

c)S - lungimea campului


26
Numere in Format BCD (Binar Codificat
Zecimal)
Ce este BCD?

BCD (de la binary - coded decimal) = numere


zecimale in codificare binara.
Stocarea in memorie a formatelor BCD in doua
formate:
BCD impachetat (packed BCD)
BCD neimpachetat (unpacked BCD).
Packed BCD Unpacked BCD
Hi Lo Continu Hi Lo Contin
t ut
1001 0001 19 0000 0001 1
0111 0011 37 0000 1001 9
0000 0011 3
0000 0111 7 27
Matrice (1)
Microprocesoarele nu ofera instructiuni pentru
manipularea datelor structurate in matrice (arrays),
insa ele poseda moduri de adresare create special
in scopul inlesnirii prelucrarii acestor structuri de
date.
(0,0)
(1,0)
(2,0)
(0,1) 0,0 0,1 0,2
(1,1) 1,0 1,1 1,2
(2,1) 2,0 2,1 2,2
(0,2)
(1,2)
(2,2) 28
Inregistrari

Inregistrare (record) = structura de


date compusa din variabile
heterogene.

29
Moduri de Adresare

Instrument principal pentru a reprezenta in


memoria masinii imaginea datelor asa cum
este aceasta vazuta de programatorul in
limbaj de nivel inalt.

Permit construirea si utilizarea de structuri


complexe, multidimensionale de date, in timp
ce echipamentul poate trata doar matrice
lineare cu elemente de dimensiune fixa. 30
Registre
Situate in
unitatea centrala de prelucrare (CPU)
unitatea de aritmetica in virgula mobila (FPU)
unitatea de gestiune a memoriei (MMU)

Principalele functii ale registrelor:

registru operand (operand register): continutul


registrului este insusi operandul la care se face referire

registru adresa (address register): continutul registrului


este adresa operandului la care se face referire

registru baza (base register): registrul contine o adresa


care, pentru obtinerea adresei complete a operandului,
se va utiliza in conjunctie cu continutul unui alt registru
sau al unui camp imediat al instructiunii. 31
Moduri de Adresare (2)
Adunarea
Toate modurile de adresare, cu exceptia celor mai
simple, necesita adunarea a doua sau mai multe valori.
Caz particular: incrementarea/decrementarea.
Adresarea indirecta
Functie al carei argument, de regula rezultat al unor
calcule, foloseste pentru a determina - prin adresarea
memoriei - operandul la care se face referire.
Modurile complexe de adresare pot folosi de mai multe
ori functia de adresare indirecta pentru a obtine adresa
finala a operandului.
Deplasarea
Utilizata la executarea operatiei de indexare.
Indexarea produce offsetul unui element din matricea
liniara, avand ca baza de plecare indicii elementului.
32
Adresarea Directa (1)
Adresa operandului este memorata ca un camp al
instructiunii.
Dupa citirea codului instructiunii (realizata prin modul de
adresare cu postincrementare) contorul programului indica
urmatorul camp al instructiunii.

Adresarea indirecta cu postincrementare permite accesul la


operand si actualizarea contorului programului. Intrucat
microprocesoarele de 8 si 16 biti au lungimea cuvintului de
adresa mai mare decat lungimea cuvintului de date, sunt
necesare mai multe cicluri de acces la memorie pentru citirea
adresei operandului.

Adresarea directa specifica adresa operandului ca parte


componenta a instructiunii, care se stabileste in momentul
compilarii si nu mai poate fi schimbata in timpul executiei
programului. 33
Adresarea Directa (2)
Limbajele de nivel inalt care folosesc recursivitatea nu
pot folosi adresarea directa ca urmare a dinamicii
adreselor in procesul de recursivitate.

Cu exceptia variabilelor globale, celelalte variabile au


adrese alocate in timpul rularii pentru programele
recursive, adrese care nu se pot insera in codul
instructiunii.

Utilizarea adreselor stocate in codul instructiunii este


legata de operatiile de salt sau apeluri de subrutine ,
deci nu de specificarea de variabile propriu - zise.
34
Organizarea Registrelor (1)

Practica a demonstrat utilitatea registrelor in


imbunatatirea performantelor microprocesoarelor

Exemplu: arhitectura procesoarelor RISC, unde


se intalnesc zeci sau chiar sute de registre in
componenta CPU.

35
Organizarea Registrelor (2)

Efectele pozitive ale utilizarii registrelor:


operatiile asupra continutului registrelor sunt
mai rapide decit cele asupra operanzilor
continuti in memorie, pentru ca ALU are acces
direct la registre
lungimea medie a programelor scade
DAR
continuturile registrelor (asa numitul context)
trebuie salvate la aparitia unei intreruperi sau
capcane sau atunci cand, in regim de
multiprogramare, are loc comutarea
programului curent.
36
Organizarea Registrelor (3)

In consecinta, un set numeros de registre


conduce la timpi mai lungi de tratare a
intreruperii sau de planificare a taskurilor

37
Organizarea Registrelor de Uz General
(1)

Numeroase microprocesoare dispun de un


set de registre interne care se pot utiliza
pentru toate functiile posibile, intrucat toate
instructiunile pot folosi orice registru,
indiferent de numele acestuia. Se spune ca
aceste masini au un set ortogonal de
instructiuni si un fisier de registre.

38
Organizarea Registrelor de Uz General
(2)
Fiecarui registru ii poate reveni una din urmatoarele functii:
acumulator: este utilizat pentru evaluarea de expresii;
index/baza: orice registru poate fi desemnat ca registru baza
sau registru index, utilizat la determinarea adresei
operandului
indicator al variabilei: registrul este folosit pentru memorarea
adresei sau este utilizat pentru explorarea unei date de
lungime mare, cum este sirul de caractere;
indicator de stiva: registrul permite implementarea
mecanismului de stiva;
registru de comanda: registrul contine informatii de
comanda a microprocesorului. Este cazul unui registru de uz
general care contine de ex., contorul programului.
39
Intreruperi
Intreruperea este produsa de un eveniment exterior
CPU, adesea de o operatie de intrare/iesire sau de
expirarea unei perioade de timp.

Efectul intreruperii:
suspendarea executiei programului aflat in
rulare
transferarea controlului unei rutine dedicate
tratarii intreruperii (interrupt handler - IH)

IH are sarcina de a efectua actiunile cerute de


evenimentul extern care a generat intreruperea
40
Timpul de Latenta
Timpul cerut de servirea unei cereri de intrerupere
depinde de operatiile necesitate de evenimentul
extern care a cauzat intreruperea, precum si de
intarzierea intre activarea cererii si inceputul
activitatii rutinei de testare. Aceasta intirziere este o
caracteristica microprocesorului si se numeste timp
de latenta.

Pentru a putea evalua timpul de latenta a unui


microprocesor trebuie examinata secventa de
operatii necesare pentru comutarea de la
programul intrerupt la rutina de servire a
intreruperii.
41
Prioritati
Ordinea de prioritate este, in general,
urmatoarea:
1. intreruperi cu relansare - ele au prioritatea
maxima, deoarece sunt asociate unor
evenimente care nu pot astepta terminarea
instructiunii curente pentru a fi servite;
2. intreruperi nemascabile - intreruperile din
aceasta clasa sunt mai prioritare decit cele
vectorizate sau nevectorizate, intrucat
evenimentele care le determina necesita o servire
rapida si intreruperile nu pot fi mascate;
3. intreruperi vectorizate;
4. intreruperi nevectorizate.
42
Capcane (Traps)
Capcana (trap) este un mecanism care produce
apelarea automata a unei proceduri. Spre
deosebire de o intrerupere, capcana este
activata, explicit sau implicit, de catre o actiune
efectuata de catre programul aflat in rulaj
(intreruperi software).

Capcanele sunt utilizate pentru tratarea unor


conditii de exceptie, adesea anormale, care apar
in cursul existentei unui program, sau pentru
activarea unor proceduri speciale, cum ar fi rutine
ale sistemului de operare.
43
Tipuri de Capcane

a) capcane activate intotdeauna ;

b) capcane activate/dezactivate prin program ;

c) capcane solicitate explicit prin program.

44
Manipularea Capcanelor
Actiunile cerute de manipularea capcanelor sunt
similare cu cele executate la aparitia unei intreruperi:
se salveaza in stiva contorul programului si indicatorii de
conditie
se executa saltul la rutina de tratare a capcanei.

Informatia despre rutina de tratare este memorata


intr-un vector stocat intr-o zona de memorie bine
precizata; in anumite cazuri capcanele si intreruperile
folosesc in comun acelasi vector.

De regula, rutina de tratare a capcanei se executa la


un nivel privilegiat superior fata de cel in care se afla
programul ce a produs capcana.
45
Prioritati
Aparitia simultana de intreruperi si capcane ridica probleme legate
de selectarea celei careia sa i se acorde atentie.

Ca si intreruperile, capcanele sunt servite, de regula, la terminarea


instructiunii curente. Unele capcane (cum este page fault trap)
trebuie servite imediat, intrerupand executia instructiunii curente.
Ele pot fi considerate similar cu intreruperile cu relansare.

Desi fiecare microprocesor are propriile sale reguli de prioritate


privind capcanele, se pot folosi urmatoarele criterii generale:
capcanele cu relansare au prioritatea maxima, ca si
intreruperile cu relansare;
celelalte capcane au prioritati superioare intreruperilor
mascabile, deoarece ele sunt folosite pentru detectarea
erorilor si starilor anormale, deci necesita atentie imediata;
intreruperile nemascabile pot intrerupe rutinele de tratare
a capcanelor si a intreruperilor. 46
Instrumente de Depanare
Depanarea este un proces dificil, care se simplifica
prin fragmentarea programelor in blocuri mai mici,
mai usor de stapanit. In sprijinul depanatorului se
pot oferi urmatoarele seturi de instrumente:

a) executie pas cu pas;

b) puncte de suspendare a executiei (breakpoints);

c) memorarea traseului programului (program


trace).
47
a) Executie Pas cu Pas

Primul instrument permite rularea


programului instructiune cu instructiune,
executia fiind stopata la sfarsitul fiecarei
instructiuni.

Prin examinarea starii CPU si a locatiilor de


memorie se poate determina eventuala
abatere a programului de la comportarea
dorita.

48
b) Puncte de Suspendare a Executiei
(Breakpoints)

Punctele de suspendare a executiei permit


suspendarea executiei unui program dupa
executia unei anumite instructiuni.

Permit executia unor blocuri mai mari de


program inainte de suspendarea executiei la
un anumit punct cu scopul testarii rezultatelor
intermediare.

49
Memorarea Traseului Programului
(Program Trace)

Traseul programului consta intr-o inregistrare


a tuturor instructiunilor executate de program
de la ultima suspendare si permite verificarea
corectitudinii fluxului de instructiuni parcurse
de program.

Pentru oferirea suportului necesar acestor


instrumente de depanare, toate
microprocesoarele moderne sunt prevazute
cu mecanismele hardware pentru trace.
50
Capcana de Traseu
Majoritatea microprocesoarelor sunt prevazute cu o
capcana speciala, numita trace trap - capcana de traseu.
Ea permite atat executia pas cu pas, cat si realizarea de
trasee ale programului. Capcana se activeaza
(dezactiveaza) prin intermediul unui indicator de conditie
special, accesibil prin program.

Cand este activa, capcana de traseu lanseaza in executie


rutina de tratare dupa ultima instructiune executata.
Desigur, capcana este dezactivata automat pe durata
executiei rutinei de tratare in scopul evitarii generarii unei
bucle infinite.

Rutina de tratare a capcanei de traseu permite


programatorului sa afiseze un set de informatii (starea
CPU, locatii de memorie) care sa inlesneasca depanarea
programului. Aceeasi rutina permite memorarea intr-un
tampon al traseului a datelor despre instructiunea 51
executata.
Concluzii
Caracteristicile arhitecturale ce fac obiectul acestui capitol
nu sunt special destinate implementarii programelor scrise
in limbaje de nivel inalt, poate cu exceptia celei referitoare
la aritmetica numerelor cu virgula mobila.
Aceste caracteristici au importanta in utilizarea
microprocesorului pentru aplicatii specifice. De exemplu,
tipul si viteza mecanismului de intreruperi definesc
comportarea microprocesorului la evenimente externe,
indisolubil legata de functionarea in sistemele de timp
real. Mai mult, asa cum se va constata, aceste
mecanisme sunt indispensabile in implementarea functiilor
complexe ale sistemelor de operare, cum sunt
gestiunea memoriei,
protectia,
multiprelucrarea. 52