Sunteți pe pagina 1din 90

Alex Mihăilă, 422B

Arhitectura Microprocesoarelor 2015

MICROCALCULATORUL = o masina Von Neumann, programabila, de prelucrare a


informatiei, cu 2 componente inseparabile:
- Hardware
- Software

A. Hardware:

1. UCP(unitatea centrala de prelucrare)=blocul functional care prelucreaza datele si


conduce TOT sistemul. Se prezinta sub forma unui singur cip, MICROPROCESOR. Celelate
componente ale sistemului nu au putere de decizie.

2. MEMORIA=are rolul de stocare a informatiei intr-o secventa de locatie; prezinta 2


entitati informationale:
-continutul : un sir de cifre binare 0 si 1, biti, ce reprezinta de fapt coduri, numere etc. ;
marimea unei locatii va fi denumita formatul memoriei, exprimat in numar de biti (8,16,32,64
biti).
-adresa : numarul de ordine al unei locatii, ce permite identificarea locatiei respective in cadrul
secventei de locatii a memoriei (intre adresa si locatia de memorie exista o corespondenta
biunivoca)

Notiuni complementare:

Harta Memoriei= totalitatea locatiilor de memorie pe care le poate adresa


microprocesorul.
exemplu: adresa pe 8 biti, cate locatii? raspunsul este 2^8 locatii de memorie
adresa pe 2 biti, cate locatii? raspunsul este 2^2 locatii de memorie
Respectiva harta a memoriei o putem descompune in subdiviziuni logice, numite „segmente”, o
impartire virtuala a memoriei.
Memoria interna= structura fizica a memoriei unui microcalculator, formata din unul
sau mai multe cipuri cu capacitati diverse de stocare; capacitatea totala de stocare a informatiei
pe care o realizeaza fizic cipurile de memorie.
observatie: memoria interna≠harta memoriei
Memoria, de asemenea, dispune de 2 zone (semnificatia continutului memoriei
microcalculatorului):
-memoria de date(RAM-ul, fizic vorbind): contine operanzi, rezultate; se pot efectua scrierea si
citirea; este locul în care ajung datele înainte de a fi prelucrate de microprocesor – această
memorie este spaţiul de lucru al calculatorului;
-memoria de program(ROM): contine instructiuni, de regula; se poate doar citi.

Instructiunea= informatia codificata binar, impusa unui microprocesor pentru a


efectua o actiune. Intre cod (un sir de cifre binare) si instructiune exista, de asemenea, o

1
Alex Mihăilă, 422B

corespondenta biunivoca. Instructiunea mai poate fi definita ca cea mai simpla actiune din
activitatea unui microcalculator, a carui UCP este un microprocesor anume.
Microprocesorul citeste din memorie, recunoaste si executa doar codurile
instructiunilor pe care el a fost conceput sa le recunoasca !; totalitatea instructiunilor pe care
un microprocesor le poate recunoaste si executa se numeste setul de instructiuni al
microprocesorului respectiv; aceasta insiruire de instructiuni este structurata sub forma de
programe(secventa de coduri structurate in asa fel incat sa urmeze un anumit algoritm pentru o
sarcina prestabilita).
observatie: memoria nu are niciun control asupra semnificatiei informatiei pe care o detine, ci
programatorul si microprocesorul!

3. DISPOZITIVELE de INTRARE/IESIRE (I/O)= o succesiune de porturi prin care


se realizeaza comunicarea cu mediul exterior.
Exista o asemanare intre porturi si locatiile de memorie; dpdv logic, porturile sunt identice cu
memoria, fizic, evident, nu. Putem discuta astfel despre o „harta a porturilor”, deoarece fiecare
port are si el continut si adresa, exact ca memoria.
Magistrala = conexiunile fizice intre schemele bloc prin care circula informatia cu o
semnificatie prestabilita. Fiecare sistem are magistrala lui unica. Dpdv functional, magistrala se
imparte in 3 feluri:
-magistrala de date : intr-o masina Von Neumann este esentiala, bidirectionala, prin ea circula
datele, instructiunile, adresele etc. , pe scurt, cirucla toate tipurile de informatii
-magistrala de adrese: unidirectionala, permite microprocesorului sa localizeze informatia in
memorie sau in dispozitivele de I/O, deci circula doar adrese .
-magistrala de control: bidirectionala, permite circulatia semnalelor de comanda si control de
la sau spre microprocesor

B. Software: o serie de programe organizate in 2 categorii:


-sistem de operare(programe ce permit accesul la resursele calculatorului);
-software-ul utilizatorului(totalitatea programelor folosite pentru sarcini specifice) necesitatii
utilizatorului)
Arhitectura = proprietatile unui sistem(microprocesorul), vizibile si disponibile
utilizatorului. Exemple de proprietati: registre, setul de instructiuni etc.
observatie: arhitectura e legata de semnificatia informatiei, de aspectul logic al informatiei ,
structura in schimb, e axata pe aspectul fizic , deci arhitectura≠structura.

Clasificarea notiunii de microprocesoare:


1. Dupa latimea magistralei de date avem: microprocesoare pe 8,16,32,64 biti.
-un sistem cu latimea magistralei pe 8,16,32 sau 64 biti = microprocesor pe 8,16,32 sau
64 biti;
2. Dupa tipul de sarcini eficient realizabile:
-microprocesoare de uz general, nespecializate;
-microprocesoare specializate, precum: procesoare de intrare/ iesire, coprocesoare aritmetice
etc.
3. Dupa principiile de baza ale arhitecturii:
-procesoare c-un set complex de instructiuni : CISC
-procesoare c-un set redus de instructiuni : RISC
2
Alex Mihăilă, 422B

Reprezentarea informatiei in sisteme digitale:


-bit=un bit(0 sau 1) (b)
-nibble= insiruire de 4 biti (n)
-byte=insiruire de 8 biti (B)
-word=insiruire de 2 octeti (w)
-double word= insiruire de 4 octeti (dw)
*prefixe:

k = 2^10=10^3 - kilo P=2^50=10^15 - peta

M=2^20=10^6 - mega E=2^60=10^18 - exa

G=2^30=10^9 - giga Z=2^70=10^21 - zetta

T=2^40=10^12 - tera Y=2^80=10^24 - yotta

REPREZENTAREA INTERNA:

Formatul instructiunilor ≠ formatul memoriei ! reprezinta totalitatea cifrelor binare


necesare pentru codificare. Se lucreaza in octeti. (in reprezentarea programelor)
 in reprezentarea numerelor:

-intregi, fara semn, in binar natural;

observatie: Semnul numărului este reprezentat de msb cu următoarea convenţie:


-msb = 0 semnifică număr pozitiv;
-msb = 1 semnifică număr negativ.
Pentru un număr fără semn cu 8 biţi, plaja numerelor reprezentabile acoperă 256
de poziţii, intre 0 şi 255, in zecimal.
Pentru un număr cu semn, plaja numerelor reprezentabile acoperă tot 256 de
poziţii, dar in intervalul -128 ÷ +127, presupunand 0 număr pozitiv.

-intregi, cu semn :
*marime si semn;
*complement fata de 1;
*complement fata de 2; --- toate procesoarele folosesc complementul fata de 2!

3
Alex Mihăilă, 422B

REPREZENTAREA EXTERNA: cum apare informatia prelucrata de microcalculator,


utilizatorului.
- pentru codurile instructiunilor se vor folosi „mnemonicele”, cuvinte-cheie specifice limbajului
de asamblare sau cuvinte-cheie impuse de fabricant : MOV, ADD, ADC etc.;
- pentru numere avem: reprezentarea binara, octala, hexazecimala;
- pentru caractere: reprezentarile alfanumerice, ce folosesc codul ASCII.

LA CISC-RISC:
-CISC se caracterizeaza printr-un format al instructiunii intre 1 si 15 octeti, variabil in functie
de complexitatea lui;

-RISC au un numar egal de octeti pe toate instructiunile (4 octeti), deci formatul e de lungime
fixa;

Altfel spus: microprocesoarele CISC se caracterizeaza printr-un format diferit al instructiunii,


o masina CISC pe 32 de biti are orice numar intre 1 si 15 octeti; un microproceosr RISC are un
format uniform ,toate instructiunile are exact acelasi numar de octeti, unitatea de control e mai
simpla atunci! o masina RISC pe 32 de biti are toate instructiunile pe 4 octeti!

BONUS DE LA PROF !!!!!!!


Scheme bloc functionale, Circuite combinationale, Circuitele secventiale, Conventii
pentru notatii=> explicit in curs AMP electronic pdf, fisier word separat din folder-ul de
curs, platformele de pe Moodle sau ce s-a predat efectiv la curs!!!

Structura unui nucleu de microprocesor de uz general – CISC


Microprocesorul=unitatea centrala de prelucrare a informatiei intr-un sistem
programabil, organizat ca o masina „Von Neumann”.
Functionarea consta in existenta unui program memorat, alcatuit dintr-o secventa de
instructiuni pe care procesorul le oate recunoaste si executa. ORICE instructiune din
respectivul program parcurge 3 etape:
-microprocesorul acceseaza si citeste din memorie codul instructiunii;
-microprocesorul decodifica acest cod si recunoaste instructiunea;
-executa instructiunea recunoascuta

FETCH-DECODE-EXECUTE !!!

4
Alex Mihăilă, 422B

Pasul 1 de detaliere : registrul de date(RD) si registrul de adrese(RA)

Registrele RD si RA nu sunt atribute de arhitectura! Functia lor este de a sincroniza activitatea


pe magistrala de date, respectiv adrese. Sunt niste dimensiuni impuse de constrangerile
sistemului.

*Despre RD:

-registru fizic, sincronizeaza activitatea pe magistrala de date;


-dimensiunea lui este aceeasi ca dimensiunea magistralei de date;
-este bidirectional;
Odata ce informatia a fost inscrisa in RD, este disponibila in microprocesor. Observam pe
imaginea de sus ca dinspre exterior spre microprocesor RD primeste informatia de la memorie si
porturi, iar dinspre interior spre exterior trimite informatia spre memorie si porturi!

*Despre RA:

-registru fizic, sincronizeaza activitatea pe magistrala de adrese; in el se scrie adresa fizica a unei
locatii de memorie si/sau a unui port;
-TOATE adresele trimise catre memorie prin RA vor fi adrese fizice (adresa ce ne permite sa
gasim orice locatie in harta memoriei);
-este unidirectional;
-dimensiunea lui RA depinde de dimensiunea hartii de memorie;
-adresa scrisa prin RA este disponibila intregului sistem; in el se scrie adresa fizica a unei locatii
de memorie si / sau a unui port!

Observatie: nu exista nicio legatura intre cele 2 registre, RA si RD; marimile lor, de asemenea,
sunt complet diferite.

5
Alex Mihăilă, 422B

Pasul 2 de detaliere : registrele generale

O caracteristica importanta a microprocesorului: setul de registre de uz general, cu


functia principala de a stoca n biti de informatie. In acest context, e ca si cum am avea o mica
memorie in microprocesor (n-are legatura cu harta memoriei!!!);
-rolul de stocare temporara a unor informatii utile programatorului, de fel operanzi (o
arie de stocare cea mai rapid accesibila, fiind in interiorul microprocesorului);
-sunt atribute de arhitectura (printre cele mai importante);
-dimensiunea acestor registre este de regula data de dimensiunea operanzilor in zona de
lucru;
-numarul si lungimea registrelor generale reprezinta un criteriu de performanta a
microprocesorului;
-de 2 feluri: logice si fizice!
De acum incolo, cand vorbim despre registre, trebuie sa avem in vedere urmatoarele
caracteristici: cat de mare e, daca e fizic sau logic, daca este sau nu atribut de arhitectura si ce
functie are!
Avem 2 categorii de registre:

 dedicate (functia registrului este impusa de un fabricant);


 multifunctionale (putem alege ce tip de informatie sa stocheze registrul).

Magistrala interna de date (ce-i cu font galben in imagini)= setul de conexiuni intre
blocurile functionale ale microprocesorului, inclusiv registrul de date. Alt criteriu de performanta
a microprocesorului este cat de mare e magistrala interna de date. De regula, dimensiunea
magistralei in cauza = dimensiunea magistralei de date externe, dar nu mereu!

exemplu: putem avea 32 biti pe externa, dar pe interna 256 biti!

6
Alex Mihăilă, 422B

Pasul 3 de detaliere : unitatea aritmetica de procesare

1.UAL (unitatea aritmetica logica)= se ocupa cu efectuarea de operatii pe 8,16,32 biti


cu 2 sau mai multi operanzi. Putem selecta diverse operatii, spre exemplu:
-operatii logice c-un operand sau doi;
-operatii logice c-un operand complement fata de 2;
-operatii logice cu 2 operanzi: SI, SAU, SAU EXCLUSIV;
-aritmetice tipice: un operand (incrementare, decrementare);
-aritmetice tipice cu 2 operanzi: +,-,*,/ ;
obs: alt criteriu de performanta- tipurile de operatii aritmetice ce le poate efectua in UAL
microprocesorul!

2.Grupul de fanioane(FLAGS), exista 2 tipuri de fanioane:


- aritmetico-logice
- speciale
Fanioanele sunt asamblate de microprocesor intr-un registru virtual (este un exemplu tipic de
registru logic! ). Este un registru tipic logic, nu fizic!
obs: C- carry, un transport, tot un fanion!

3. Registrul acumulator=registru fizic, atribut de arhitectura, cu dimensiunea la fel ca cea


a operanzilor in zona de lucru. Functia e una clar stabilita : contine operandul si dupa operatie,
rezultatul, apoi , obligatoriu, rezultatul distruge operandul.

4.Registrul de deplasare= singurul registru din microprocesor care executa deplasari


stanga-dreapta (inmulteste sau imparte cu baza de numeratie un operand). De regula stocheaza un
operand iar dupa deplasare rezultatul. Este un registru fizic, nu e atribut de arhitectura, iar
lungimea, de regula, e data de operanzii din zona de lucru.
Inmulteste sau imparte cu baza de numeratie un operand; stocheaza un operand iar dupa
deplasare rezultatul !

7
Alex Mihăilă, 422B

COMENTARIU:

*Se selecteaza registrul care contine operandul.

*Se citeste informatia din registru (se aduce operandul pe magistrala


interna de date).

*Se inscrie operandul in registrul de deplasare.

*Se comanda registrul de deplasare (selectia functiei de deplasare stanga


cu o pozitie).

*Se citeste continutul registrului respectiv, rezutatul deplasarii e dus pe


magistrala interna de date.

*Se selecteaza din nou registrul vizat la primul pas.

*Se inscrie in acest registru rezultatul operatiei de deplasare, rezultat care


ia astfel locul operandului initial.

8
Alex Mihăilă, 422B

Pasul 4 de detaliere : unitatea de control al adresarii memoriei (UCAM)

UCAM = modul in care microprocesorul fabrica adresele fizice si putem localiza


informatia; blocul functional care preluand informatia de pe magistrala interna de date livreaza
adresa fizica catre registrul de adrese.

UCAM are 2 functii principale:


-sa furnizeze adrese pentru memoria de program;
-preluarea informatiilor de pe magistrala interna de date .
1.Furnizarea de adrese se poate face in 2 feluri:
a) instructiune dupa instructiune;
b) prin secvente, salturi, cicluri etc;
2.Preluarea informatiei:
a) accesarea de date elementare;
b) date structurate temporale (stiva, coada);
c) date structurate spatial(tablouri).

Interiorul UCAM-ului arata astfel:

9
Alex Mihăilă, 422B

Procesorul foloseste in respectiva schema ORGANIZAREA LINIARA a


MEMORIEI = toate locatiile de memorie sunt accesibile in mod egal; utilizatorul foloseste si el
adresele fizice, astfel, inseamna ca adresele fizice sunt atribute de arhitectura. De mentionat ca
nu este singurul mod de organizare!

Circuitul care va returna adresele succesive intr-o memorie organizata liniar este
numaratorul(PC). Numaratorul :

-mereu incarcat cu adresa fizica a instructiunii curente;


-nu este atribut de arhitectura, adica utilizatorul nu-l poate modifica, fiind o functie foarte
importanta, care modificata neprofesionist ar da sistemul peste cap; cu el practic se citesc
instructiunile de program;
-dimensiunea lui e impusa de lungimea adresei fizice; impune marimea hartii memoriei!
-furnizeaza localizarea instructiunilor in memoria de program (furnizarea memoriei de program).
-accesul memoriei de program prin PC!
OBSERVATII IMPORTANTE:

Am incarcat direct adresa in RA, fac saltul impunand noua adresa, o trimit in memorie si
actualizez numaratorul PC.
Un microprocesor pe 16 biti, daca adresa are 32 de biti -> scad criteriile de performanta!

In cazul functiei 1 a): numaratorul de program furnizeaza la iesire adresa fizica a


instructiunii curente; locatie dupa locatie inseamna instructiune dupa instructiune in memoria de
program; inscrisa in RA instructiunea devine valabila in memorie, o citesc(inscrisa in RD),
numaratorul se incrementeaza, pregatindu-se pentru urmatoarea instructiune.
b): printr-o adresa de salt, inscrisa in RA apoi actualizarea
numaratorului de program e facuta disponibila in memorie.
In cazul functiei 2 a): o adresa furnizata catre memoria de date.
b): toate microprocesoarele folosesc STIVE! ; avem indicatorul de
stiva(un numarator special) are furnizeaza o adresa in memoria de date , utilizatorul impune
initial de unde sa plece stiva, initializat cu adresa fizica a bazei de stiva, apoi microprocesorul

10
Alex Mihăilă, 422B

actualizeaza in orice moment varful stivei, actualizarea indicatorului se face detectand adresa
fizica a varfului stivei!

Stiva, din punct de vedere informational, este o colectie de date ce sunt plasate in locatii
succesive in memorie sau intr-o regiune de acces, prevazute cu mecanisme specifice de acces.
Poate fi de 2 feluri:
-stiva HARD (tipica RISC, foarte rapida, dar limitata pe partea de stocare )
-stiva SOFT(cele mai multe microprocesoare o folosesc, acces mai lent, dimensiune
mare)
Stiva e folosita intens de catre microprocesoarele standard, in urmatoarele operatiuni
caracteristice:
a) stocarea temporara a datelor, cu instructiuni speciale PUSH, POP;
b) in mecanismul de apelare a subprogramelor;
c) in cererile de intrerupere, pentru a opri executia programului principal si se sare la
programul de executie a intreruperii.

*Accesul in stiva se realizeaza prin 2 cai: PUSH, POP.


-PUSH r; : (SP)<--(SP)-1, apoi ((SP))<--(r) , mai intai decrementeaza sa faca loc, apoi vine
continutul din registrul r in locatia de memorie SP ; push la sursa!
-POP r; : (r)<--((SP)), apoi (SP)<--(SP)+1 , selectam locatie din varf, o citim, o inscriem in
microprocesor, varful stivei s-a mutat , cealalta locatie pierzandu-si semnificatia, nu se sterge! ;
pop la destinatie!
obs: SP - registru numarator, fizic, atribut de arhitectura; adresa fizica al varfului curent al
stivei;

*Dimensiunea stivei e in functie de adresa fizica in cazul organizarii liniare a memoriei!


obs: stiva creste in jos!(nu e obligatoriu insa, e doar un detaliu; pe masura ce adaug elemente in
stiva, varful ei se duce spre adrese inferioare; pe masura ce citesc, varful stivei se muta in sus)

2 c): accesul in tabloul de date, responsabile cateva blocuri: in primul


rand un set de registre, numite registre index(obisnuite, fara alte proprietati, nu sunt numaratoare!),
niste mux-uri si un sumator;
Pentru o structura unidimensionala: unul dintre registre este incarcat cu adresa fizica a
bazei sirului de numere, noi furnizam doar o adresa relativa, adica al catelea element din sir ma
11
Alex Mihăilă, 422B

intereseaza(disp), microprocesorul calculeaza automat suma dintre baza si pozitia relativa, facuta in
MUX 5, apoi incarcata in RA.
Registrele index: registre fizice, atribute de arhitectura, trebuie sa initializam noi
inceputul; functia: contin adresele fizice ale bazelor unor potentiale tablouri de memorie;
dimensiunea e data de dimensiunea adreselor fizica, daca memoria e organizata liniar.
obs: numarul de registre index este un criteriu de performanta! ; marimea deplasamentului
(numarul care-l dorim) da marimea tabloului; un deplasament pe 8 biti--> un tablou cu 256 de
numere (2^8);
Existenta acestor registre index conduc la realizarea unei structurari a datelor in memorie
(blocuri, tablouri).

*Microprocesorul calculeaza adresa unui element dintr-un tablou de date. Identificarea


unui element din tablou se face printr-o adresa relativa la baza prestabilita a tabloului, numita
deplasament (disp).

COMENTARIU (a 3-a imagine de la pasul 4) :

ciclu FETCH:
* Incarcarea lui RA cu adresa furnizata de PC, adresa devine disponibila pe magistrala de
adrese;
* Incrementarea lui PC, pentru a se pregati sa localizeze urmatoarea informatie din memorie;
* Generarea unui semnal de citire din memorie (MREAD) pe magistrala de control;
* Codul instructiunii localizat este citit din memorie si facut disponibil pe magistrala externa de
date==>se poate inscrie in RD;
* Codul e adus in RD, pe magistrala interna de date intr-un RI ;

ciclu DECODE: unde se decodifica codul binar adus din RI.

ciclu EXECUTE: activare a diverselor blocuri din UCP.

12
Alex Mihăilă, 422B

Pasul 5 de detaliere : unitatea de control al microprocesorului


*Indeplineste 2 functii:
-defasurarea „in spatiu”: tine de formatul unui instructiuni;

-desfasurarea in timp: daca eu comand procesorului sa faca o inmultire spre exemplu, executa o
serie de actiuni elementare; caracteristici:
*starea:perioada de tact a microprocesorului (1 ns)
*ciclu masina: set de actiuni bine definite (citire din memorie, scriere in memorie, citire din stiva,
scriere in stiva, de aducere a codului, adica citire din memoria de program etc. )
Un microprocesor are de regula cateva cicluri masina care combinate in diverse feluri duc la executia
oricarei instructiuni din setul de instructiuni ale microprocesorului!

Orice unitate de control pentru CISC, are un registru numit registru de instructiuni (RI) !
Dimensiunea lor depinde de dimensiunile uzuale ale operanzilor; nu e atribut de arhitectura,
este registru fizic!

Decodorul este un circuit complex. Aici se decodifica codul binar adus din RI si se recunoaste
sau nu.

Control si sincronizare= bloc microprogramat (tipic cisc – stocarea in interiorul unitatii de


control a succesiunii de stari), rememoreaza toate secventele de stari pentru toate instructiunile din
setul de instructiuni. Totodata mai furnizeaza si semnale de control sistemului.

exemplu: fie un microprocesor CISC, schemele bloc functionale care le utilizeaza sunt cele din
subcapitolele 2.2.5, cu urmatoarele precizari:
-microprocesorul organizeaza liniar memoria;
-magistrala de date si interna si externa are 8 biti;
-adresele fizice au 16 biti; (AF)
13
Alex Mihăilă, 422B

-formatul memoriei este octetul;


-exista un registru de date, unde are 8 biti; (RD)
-exista un registru de adrese, unde are 16 biti; (RA)
-exista un numarator de program care are 16 biti; (PC)
-exista un registru de instructiuni care are 8 biti;
Fie niste registre generale (R1, R2, R3, R4) de cate 8 biti fiecare ; avem si un acumulator (A), si
el de 8 biti. Care este desfasurarea in timp a acestei instructiuni, a carei descriere formala a
semanticii este :

(A) ← ((R1) ↑ (R2))+((R3) ↑ (R4)) - instructiunea aduna continutul locatiei de memorie a carei
adresa se afla in resgistrele r1 concatenat cu r2 cu continutul locatiei de memorie a carei adresa se
afla in registrele r3 concatenat cu r4...rezultatul de 8 biti stocandu-se in A.
obs: adunarea se face cu 2 numere de aceeasi lungime!!! nu intamplator acumulatorul are
si el 8 biti, ca sa lucreze normal cu rezultatul.

COMENTARIU:

*Un prim ciclu masina: de FETCH (in care microprocesorul trebuie sa-si aduca codul
instructiunii si sa-l interpreteze) :

(RA)← (PC)
READ
-prima stare: numaratorul de program acceseaza codul instructiunii curente, inscrierea in RA;
(PC) ← (PC) + 1
-a 2-a stare: numaratorul de program isi face functia lui de baza, se pregateste pentru urmatoarea
instructiune; incrementaea numaratorului de program;
(RD) ← ((RA))
-a 3-a stare: codul instructiunii este adus in microprocesor; codul este citit, este inscris in RD,
disponibil oriunde astfel in microprocesor ;
(RI) ← (RD)
-a 4-a stare: luam codul din RD si-l inscriem in acel registru special unde aduc codurile, RI;
decodificare
-a 5-a stare: decodificarea, microprocesorul stie ce are de facut.

*Un al doilea ciclu:


(RA) ← (R1) ↑ (R2)
READ
-prima stare: furnizam in RA prima jumatate a adresei fizice, pentru primul operand;
(RD) ← ((RA))
-a 2-a stare: citesc in memoria de date primul operand si-l aduc in microprocesor, in RD;
(A) ← (RD)
-a 3-a stare: inscrierea in acumulator(A),fiindca ne pregatim pentru o operatie aritmetica ; primul
operand e pregatit in acumulator.

14
Alex Mihăilă, 422B

*Un al treilea ciclu masina:

(RA) ← (R3) ↑ (R4)


READ
-prima stare: furnizam noua adresa fizica, pentru al doilea operand emitem READ;
(RD) ← ((RA))
-a 2-a stare: l-am localizat si aduc din memorie al doilea operand din microprocesor, inscriem in
RD;
(A) ← (RD) + (A)
-a 3-a stare: aducem in acumulator suma dintre cele 2 jumatati ale adresei fizice.

observatii:

-avem 3 cicluri mari in exemplul nostru! (ciclu masina de fetch, apoi 2 cicluri masina de citire
din memoria de date, a 2-a este insa o citire + o operatie, adunare);
-tot ce am comentat este in conformitate cu schemele bloc prezentate;
-1.3 aduc din memorie de program in microprocesor codul instructiunii curente ; 2.2 aduc
din memoria de date un operand in microprocesor; 3.2 aduc din alta parte din memoria de
date un operand in microproesor (formal sunt identice, dar se executa altfel);

15
Alex Mihăilă, 422B

Organizarea functionala a unui microprocesor pe 16 sau 32 de biti:


Vom lucra pe generatia a 3-a de procesoare, cu noile atribute de arhitectura ce au aparut
odata cu respectiva generatie, precum:

a) avem mai multe unitati care lucreaza


in paralel, cu functii distincte;
b) coada de instructiuni (o unitate se
ocupa cu realizarea unei cozi de
instructiuni, ducerea in microprocesor a
unor instructiuni astfel incat dupa
executia unei instructiuni
microprocesorul nu mai asteapta
aducerea instructiunii urmatoare- preia
din coada de instructiuni alta
instructiune);
c) versatilitatea functiilor registrelor:
-dedicate (functie a registrului stabilita
de fabricant, astfel nu poate fi
modificata – acumulator,stiva etc.)
-multifunctionale (cu functii implicite
si alternative, pe care noi le decidem, nu
fabricantul !)
d) unitatea de calcul a adreselor
(accesul in memorie se face calculand
adrese/ pointeri);
e) structurarea logica a memoriei
(optional, exista microprocesoare care realizeaza virtual structuri logice de memorie / descompune
in segmente).

Avem 2 functii principale care lucreaza in paralel:

1.UE (unitatea de executie):


-prelucreaza operanzii;
- contine registrele generale si ALU ( Unitate aritmetica logica);
- accepta informatiile aferente instructiunilor deja aduse de catre UIM;
- primeste operanzii de la UIM;
- trimite rezultatele la UIM, dupa ce prelucreaza operanzii;
- contine unitatea de control al microprocesorului.
2.UIM (unitatea de interfata cu magistrala):
- furnizeaza (calculeaza) adrese pentru instructiuni si date;
- aduce instructiuni din memoria de program si le stocheaza intr-o structura de tip coada;
(deosebire fata de a le astepta din memorie, deci viteza de executie mai mare)
- intrerupe umplerea cozii de instructiuni cand se impune aducerea operanzilor
sau trimiterea rezultatelor;

16
Alex Mihăilă, 422B

- realizeaza structurarea logica a memoriei (de pilda: organizarea segmentata a


memoriei).

CONCLUZII: Se lucreaza in paralel: in timp ce se executa o instructiune(UE) sunt aduse din


memoria de program urmatoarele(UIM)-->viteza de executie creste
*salturile intarzie executia!-->ele golesc coada de instructiune, UIM stie doar secvential sa aduca
instructiunile, iar saltul poate conduce oriunde, astfel, trebuie sa folosim salturile doar cand e
imperios necesar
In timp au aparut unitati de predictie a salturilor: cu precizie de peste 90%.

PRINCIPIILE DE BAZA ALE UNEI ARHITECTURI TIPICE CISC


STRUCTURA REGISTRELOR:

*Registrele procesoarelor de tip x86, in modul real, pe 16 biti:

-avem putine registre(specific CISC);


-cu exceptia registrului IP, toate sunt atribute de
arhitectura;
-cu exceptia lui F, toate sunt registre fizice;
-primul grup de 4 registre, disponibile si pe 8 biti (o
caracteristica x86) sunt registrele generale, de date:
AX,BX,CX,DX

Setul de registre generale este completat cu


registre de tip indicator şi index. Pentru
fiecare din aceste registre există atât o utilizare
implicită sugerată de fabricant, cât şi una
alternativă.

*AX(acumulatorul): pe 16 biti; implicit in impartiri si inmultiri; se poate imparti si accesa in 2:


-AL: implicit in translatii, aritmetica BCD, inmultiri si impartiri pe 8 biti;
-AH: implicit in inmultiri si impartiri pe 8 biti;
alternativ: AH poate fi acumulator daca dorim!

17
Alex Mihăilă, 422B

*BX(baza in adresarea datelor): un registru pointer in mod implicit, care contine o adresa, adresa
efectiva a bazei unei structuri de date; se poate imparti si accesa in 2:
-BH: pe 8 biti
-BL: pe 8 biti
alternativ: BH si BL pot fi acumulatori!

*CX(contor): un registru numarator, folosit implicit in anumite instructiuni ale procesoarelor de tip
x86, precum ciclurile cu contor, operatiile cu siruri etc. ; se poate imparti si accesa in 2:
-CL: pe 8 biti; operatii de deplasare sau rotatie cu mai mult de 1 pozitie;
-CH: pe 8 biti;
alternativ: CL si CH pot fi acumulatori!

*DX(date): un registru general de date in mod implicit; se poate imparti si accesa in 2:


-DL: pe 8 biti;
-DH: pe 8 biti;
alternativ: DL si DH pot fi acumulatori!

-al 2-lea grup de 4 registre sunt registrele care implicit contin adrese, registrele de adresare/
registre pointer; nu sunt accesibile pe jumatati (tocmai fiindca pointerii au nevoie de 16 biti )
SP- contine adresa efectiva a varfului curent a stivei primare ;
BP- pointer pentru stiva alternativa; x86 poate forma 2 stive:una prima si una secundara;
deci BP – o intrare secundara in stiva primara;
SI, DI- registre index in mod implicit;
alternativ: toate aceste registre pot fi registre generale de date si acumulatoare!

-al 3-lea grup de 2 registre: registrele dedicate


IP- nu contine adresa fizica ci adresa efectiva a instructiunii curente;
F- registru logic, registru virtual, o concatenare a unor fanioane;

**avem 2 categorii de fanioane la x86:


-aritemetico-logice : C(carry-transport),P (parity), A (transport auxiliar, dupa primul nibble),
Z(fanionul de zero, cand reultatul unei op e zero), S(fanionul de semn, copiaza msb a unui numar
reprezentat in marime si semn), O (depasire);

-speciale : T (fanion de tip capcana, trap, folosit in anumite tipuri de intrerupere) , I(fanionul de
validare a unor intreruperi), D(fanionul de directie, permite sa ne alegem in ce ordine sa
parcurgem un sir);

-al 4-lea grup de 4 registre: registre fizice dedicate si atribute de arhitectura, registrele segment;
functia lor dedicata (n-am voie s-o schimb) este de a permite realizarea in memorie a segmentelor
(subdiviziuni virtuale logice ale memoriei); aceste registre contin adrese segment, de aceea ele
sunt folosite in crearea de segment:
CS: definim segmentul curent de program;
SS: definim segmentul curent de stiva;
DS: definim segmentul curent de date;
ES: segment suplimentar de date.
18
Alex Mihăilă, 422B

*Registrele procesoarelor de tip x86, in modul real, pe 32 biti:


- EAX (extended AX) etc. registrele generale se extind;
- registrele segement nu se extind, pastreaza dimensiunea, dar mai adauga 2 in plus(FS, GS);
- dimensinea registrelor este de regula dimensiunea operanzilor de lucru;
Toate caracteristicile de la 16 biti se aplica si la 32 de biti, cu mici diferente, abordate mai sus!

Putem conclude astfel urmatoarele caracteristici ale seturilor de registre CISC ,


comparand 2 microprocesoare, de la INTEL si MOTOROLA:
1. numar registre:
μP CISC –numar mic de registre (8 registre Intel, 15 Motorola)
-este clar ca Motorola are mai multe registre decat Intel
2. dimensiunea registrelor:
-dimensiunea operanzilor de lucru
16 biti pe μP de 16
32 biti pe μP de 16
-Motorola are dimensiunea registrelor mai mare decat la Intel
3. majoritatea registrelor sunt multifunctionale:
functii implicite/alternative:
a) acumulatoare
b) registre de date
c) registre index
d) indicator de stiva
e) numarator
-si din acest punct de vedere Motorola superior

19
Alex Mihăilă, 422B

4. registrele folosesc pentru:


i. realizarea mai multor stive
ii. realizarea mai multor tablouri
-si din acest punct de vedere Motorola superior (Motorola 15 potentiale, Intel
3 potentiale)
5. registrele folosesc pentru realizarea unor mecanisme superioare:
a. la Intel structurarea segmentata a memoriei
(registre segment)
b. la Motorola mecanism de protectie cu 2 nivele
(uSP si sSP)

ORGANIZAREA MEMORIEI MICROCALCULATORULUI


*Organizarea memoriei este un atribut de arhitectura a microprocesorului.

1. dimensiunile hartii memoriei - ce memorie poate sa acceseze memoria fizica;


2. formatul memoriei - memoria trebuie sa asigure formatul;
3. conventiile de stocare in memorie a datelor care ocupa mai mult de o locatie;
4. structura logica a memoriei -organizarea propriu-zisa.

x86, in modul real:


1. harta memoriei – data de dimensiunea adresei fizice, 20 biti adica 1
megalocatie;
2. formatul memoriei – octetul;
3. informatii stocate pe octeti succesivi care se acceseaza conform conventiei micului
indian (informatia cea mai putin semnificativa este pe adresa cea mai mica);
4. imi ofera alternativa: organizarea segmentata a memoriei(in memorie se definesc
subdiviziuni logice numite segmente, cu dimensiuni fixe, prestabilite).

-adresa fizica nu este atribut de arhitectura in acest tip de organizare a memoriei, fiindca
vom lucra cu adrese logice , pe 32 biti, si compuse din 2 parti (efectiva AE si segment AS).

*Microprocesorul are organizarea segmentata de 2 tipuri:


-intrasegment
-intersegment

*Translatarea adresei logice = trecerea de la o adresa logica spre una fizica; facuta automat de
microprocesor si transparenta pentru utilizator ;

*Adresa fizica a bazei unui segment se face inmultind cu 16 baza AS iar apoi in
interiorul segmentului pozitionarea se face adunand AE la el:

20
Alex Mihăilă, 422B

-ultima e formula de translatare din adresa logica in cea fizica.

Observatii:
1. prima deosebire in organizarea liniara si cea segmentata este ca in cazul organizarii
liniara adresa fizica este atribut de arhitectura in schimb in cea segmentata nu este atribut
de arhitectura;
2. adresarea segmentata - pozitionarea segmentului in memorie si apoi adresare liniara
in segment.

-se pierd 12 biti, dar ei se regasesc in organizarea virtuala in memorie:

-adresa segment se afla in registru segment

-adresa efectiva ( nu fizica !)

AS impune:

-4(16 biti) sau 6(32 biti) segmente simultan;


-un segment de program, un segment de stiva si 2 sau 4 segmente de date;
-pozitia absoluta a segementelor in memorie este pe adrese multiplu de 16;
-pozitiile relative ale segmentelor sunt la latitudinea utilizatorului segmentele pot fi si
suprapuse.
21
Alex Mihăilă, 422B

AE impune:

-dimensiunea lui AE imi da dimensiunea segmentelor : 2^16 locatii de memorie , 64 KB;


-dimensiunea hartii memoriei, data de adresa fizica: 2^20 locatii de memorie , 1MB ;
-organizarea memoriei:octetul cel mai putin semnificativ e adresa cea mai mica (micul indian).

*Mecanisme de utilizare a unui segment:

I. Redirectionarea segmentelor (segment overriding): -utilizarea unor segmente pentru alte


informatii stabilite implicit de fabricant;
-inseamna ca segmentele in memorie pot avea functii implicite si alternative;
-redirectionarea segmentelor este restrictionata;
-se face in mod explicit in program cu un prefix de redirectionare (un mnemonic in
assembler).

II. Suprapunerea:
Programele care pot rula intr-un singur segment, nu depasesc granitele segmentului, si
pentru care pozitia absoluta a segmentului nu conteaza , se numesc programele relocatabile din
memorie

OBSERVATIE: Organizare liniara a memoriei vs. Organizare segmentata a memoriei

-timp de access - pentru segmentare timp indelungat de access dar odata inauntru timpul
de accesare este rapid; exemplu: o memorie de 1mb e accesata mai rapid decat una de 64
kb in organizarea liniara a memoriei; in cea segmentata, statistic, accesarea e cu mult mai
rapida , deoarece accesul intrasegment este mult mai des decat accesul intersegment.
-ocuparea hartii memoriei - org. liniara mai eficace, org. segment risipeste
memoria
-modularizare - in favoarea organizarii segmentate (stive)

22
Alex Mihăilă, 422B

Tabel mai detaliat al REDIRECTIONARII:

Functii realizate Adresarea Adresarea Adresa efectiva


prin adresarea segment implicita segment
memoriei alternativa

Fetch CS nu IP
Operatii in stiva SS nu SP
Stocare variabile
(cu anumite data de modul de
exceptii) DS CS, SS, ES adresare

Formarea unui sir


„sursa” DS CS, SS, ES SI

Formarea unui sir


„destinatie” ES nu DI

Adresare in stiva
cu BP SS CS, DS, ES date de modul de
adresare
Adresare relativa
la BX DS CS, SS, ES date de modul de
adresare

23
Alex Mihăilă, 422B

TRANSFERURILE DE DATE:

Transferurile de date: deplasarile de operanzi si/sau rezultate in interiorul


microprocesorului, intre microprocesor si celelalte componente ale microcalculatorului,
sau intre microcalculator si lumea exterioara.
Din punctul de vedere al complexitatii transferurilor de date, se poate face
urmatoarea clasificare a microprocesoarelor de uz general:

-Categoria A: acumulator dedicat care ia parte la orice transfer de date:

-Categoria B: poate transfera direct cu alte registre ; are toate caracteristicile celor din
categoria A, sunt mai complicate astfel:

-Categoria C: transfera direct din locatia de memorie ; are toate caracteristicile lui A si
B:

-Categoria D: pot transfera un bloc de memorie dintr-o parte in alta; au toate


caracteristicile lui A, B si C:

OBSERVATII:
-ne referim la transferuri de numere! nu coduri! ci operanzi si rezultate!
-presupun 2 membrii: sursa si destinatie (copierea sursei la destinatie, sursa nu se distruge!)
-dimensiunea sursei si destinatiei sunt identice

Registrele care iau parte la transferurile de date dintr-un microprocesor sunt atribute de
arhitectura!

24
Alex Mihăilă, 422B

TEHNICI DE ADRESARE

Un alt atribut de arhitectura: tehnicile de adresare (modalitate de specificare, in formatul unei


instructiuni a locatiei <adresei> unui operand, rezultat sau a codului unei instructiuni).

*Tehnici de adresare simple: acele tehnici de adresare care le detine orice masina CISC. Avem
astfel urmatoarele:

a)Implicita in registru: este modul sau tehnica de adresare ce presupune ca in chiar codul
instructiunii curente exista niste campuri in care se specifica registrul sau perechea de registre in
care avem informatia tinta ( un operand sau rezultat, doar numere!).
obs: - nu e in memorie adresarea, ci este un mod de a localiza informatiile dorite chiar in
registrele generale ale microprocesorului;
- la limita un singur octet, deoarece se reduce la formatul instructiunii.
- registrele vizate sunt pe 8 sau 16 biti, depinzand de tipul microprocesorului;

ex: MOV AX, BX


b)Adresarea imediata: este modul sau tehnica de adresare ce presupune ca in formatul
instructiunii curente, imediat dupa cod, se afla informatia dorita (adica informatia se afla in
memoria de program).
-nu putem avea in formatul instructiunii curente alte instructiuni;
-cautam date in memoria de program! doar citim, nu scriem;
-in formatul instructiunii avem doar operanzi, nu si rezultate, avand in vedere ca doar
citim din memorie.
obs: cel putin 2 octeti (unul pentru cod, altul pentru rezultate)

ex: MOV AL, 0FFh

exemplu:

Fie un procesor CISC , un procesor pe 8 biti, cu urmatoarele caracteristici:


- adresare liniara a memoriei;
- o adresa fizica pe 2 octeti;
- formatul memoriei este de 8 biti;
-exista un numarator de program „PC” si pp ca numaratorul de program contine chiar
adresa codului instructiunii;
-2 operanzi: un operand pe un octet, un operand pe celalalt octet

25
Alex Mihăilă, 422B

Cel mai important mod de adresare pentru CISC ( la RISC acest mod nu prea
functioneaza):

c)Adresarea absoluta (extinsa, directa) : modul sau tehnica de adresare ce presupune ca


in formatul instructiunii curente gasim, imediat dupa cod, adresa completa a informatiei vizate;

*adresa completa = totalitatea elementelor necesare pentru a identifica fizic in memorie


informatia dorita;

-in cazul organizarii liniare a memorie, adresa fizica este adresa completa!
-in cazul organizarii segmentate a memoriei: adresa completa e adresa logica(efectiva
sau segment), avem cazuri:
*cand accesul este intrasegment: adresa efectiva = adresa completa!
*cand accesul este intersegment: adresa logica=adresa completa!

obs: -formatul maxim al instructiunii este de 3 octeti;


-cele mai multe instructiuni de salt, folosesc acest tip de adresare!

exemplu:

Fie o masina CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii pe un


octet si o adresa fizica de 2 octeti; de asemenea, acest procesor asculta de conventia micului indian:

26
Alex Mihăilă, 422B

d)Adresarea scurta: modul sau tehnica de adresare ce presupune ca in formatul


instructiunii curente se gaseste o parte din adresa completa a informatiei vizate, cealalta parte e
presupusa implicit;
obs: - formatul instructiunii este mai compact, neavand toata adresa completa--> minim 2 octeti(1
octet cod+1/2 octet la adresa completa);
- se refera atat la date cat si la instructiuni, deriva din adresa completa;
- localizarea informatiei in „pagina zero”, pentru instructiuni speciale.

exemplu:

Fie o masina CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii pe un


octet si o adresa fizica de 2 octeti (1/2 inferior in formatul instructiunii si 1/2 superior implicit 0):

e)Adresarea relativa: modul sau tehnica de adresare ce presupune ca in formatul


instructiunii curente gasim adresa relativa a informatiei vizate, la pozitia codului instructiunii
curente („in pagina curenta”).
Pozitia relativa este date de „deplasament”, care e un numar cu semn (ne putem duce
inainte sau dupa).
„disp”= deplasamentul , fie p 8 biti (disp8), pe 16 biti (disp16) etc.
obs: -informatia vizata poate fi data sau instructiune (de obicei aceasta modalitate de
adresare e folosita la cicluri cu contor);
- formatul este mai compact decat la adresarea absoluta--> minim 2 octeti.

27
Alex Mihăilă, 422B

exemplu:

Fie o masina CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii pe un


octet si o adresa fizica de 2 octeti:

f) 1. Adresarea indirecta prin registru: prezenta si la CISC si la RISC , presupune ca in


chiar codul instructiunii curente este indicat un registru sau o pereche de registre care unul dintre
ele contine adresa completa a informatiei vizate ;

obs:-in acest moment registrul este de fapt un pointer!


-formatul instructiunii este compact , avem minim un octet;
-putem accesa orice, si instructiuni si date!

ex: MOV AX, [SI] ; -de fel SI, DI, BX, BP

exemplu:

Fie un procesor CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii de


un octet, o adresa fizica de 2 octeti si o pereche de registre generale de 8 biti fiecare:

2. Adresarea indirecta cu memoria: presupune ca in formatul instructiunii curente se


gaseste adresa completa a adresei informatiei vizate ;
obs: -adresa adresei practic (timpul de acces se lungeste!, dar avem 2 avantaje: o relativa
independenta a localizarii datelor fata de program; al 2-lea: protectia informatiei );
-formatul este de minim 3 octeti, avand adresa completa!
-putem accesa orice, si date si instructiuni.

28
Alex Mihăilă, 422B

exemplu:

Fie un procesor CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii de


un octet, o adresa fizica pe 2 octeti si foloseste conventia micului indian:

g) 1. Adresarea cu preindexare: presupune ca in formatul instructiunii curente gasim


pozitia relativa a unei date, a unui numar, intr-o structura de date (tablou de date) predefinita;
obs: -formatul este mai compact decat o adresa completa: minim 2 octeti;
-pozitia relativa, deplasamentul, este un numar pozitiv!
-acest mod de adresare se refera doar la date!
-marimea deplasamentului da marimea tabloului;
-numarul de registre index indica numarul de tablouri potentiale;

29
Alex Mihăilă, 422B

exemplu:
Fie un procesor CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii de
un octet, o adresa fizica pe 2 octeti, cel putin un registru index de 16 biti si deplasamentul de 8, 16
biti:

2. Adresarea cu postindexare: o combinatie intre adresarea indirecta cu memoria si


preindexare; presupune ca in formatul instructiunii curente gasim adresa completa a
deplasamantului intr-o structura de date predefinita;
obs: -formatul are cel putin 3 octeti;
-acest mod de adresare se refera la date;

exemplu:

Fie un procesor CISC pe 8 biti, organizarea liniara a memoriei, formatul instructiunii de


un octet, o adresa fizica pe 2 octeti si un tabel de deplasament: aici, pozitiile relative ale
variabilelor se afla in ceea ce vom denumi tabele de deplasamente;

30
Alex Mihăilă, 422B

*Tehnicile de adresare compuse: rezultate din compunerea a 2 sau mai multe


tehnici de adresare!

2 concluzii:

a) modul sau tehnica de adresare contribuie decisiv la dimensiunea formatului


instructiunii curente;
b) semnificatia informatiei o stim noi si microprocesorul, nu memoria: adresarea directa
vs adresarea indirecta cu memoria vs cu adresare cu preindexare ,avem semnificatii diferite:
-pentru directa: adresa informatiei
-pentru indirecta: adresa adresei informatiei
-pentru adresare cu preindexare: adresa deplasamentului informatiei

obs: toate sunt aceeasi entitate-->o adresa completa, dar au semnificatii de informatie diferite!

COMENTARII:
(r) = continutul unui registru oarecare;
(r1,r2) = continutul a 2 registre concatenate;
(r)h = continutul jumatatii superioare;
((r)) = continutul unei locatii de memorie a carei adresa se afla intr-un registru (adresare
indirecta prin registru);
(mem) = continutul unei locatii de memeorie;
[ ] = optional.

31
Alex Mihăilă, 422B

Tehnici de adresare pentru Intel 8086:

E posibila redirectionarea segmentelor:

Adresare indirecta+Adresare directa prin registru:

Adresare indirecta prin registre+Adresare cu preindexare:

32
Alex Mihăilă, 422B

2 adresari indirecte prin registre:

33
Alex Mihăilă, 422B

34
Alex Mihăilă, 422B

Tipuri de instructiuni

CEL MAI IMPORTANT ATRIBUT DE ARHITECTURA: instructiunea!


-din punct de vedere semantic, μP imparte setul de instructiuni in 5 subseturi:

1) transfer de date
2) prelucrari date
3) instructiuni de control al programului
4) instructiuni IN / OUT
5) instructiuni de control al μcalculatorului

1)Transferul de date:
-presupune in general 2 membrii, o sursa si o destinatie: se copiaza sursa la destinatie( asta
e semantica); sursa ramane neschimbata;
-tipurile de entitati care participa la transfer, sursa sau destinatie, depind de clasa din care
face parte microprocesorul;
exemplu: fie un procesor de clasa A, fie S, fie D trebuie sa fie implicit acumulatorul
microprocesorului.
-localizarea informatiilor, fie la sursa fie la destinatie, se face folosind una din modurile de
adresare disponibile microprocesorului respectiv; niciodata la niciun microprocesor nu sunt
posibile orice combinatii, exista intotdeauna restrictii!
-destinatia unui transfer nu poate fi adresata imediat, deoarece destinatia trebuie sa
reprezinte un loc de depozitare a unei noi informatii, nu a unei constante!
-dimensiunea lui s = dimensiunea lui d;
-un transfer de date este considerat cel cu stiva, cu PUSH si POP etc.
-formatul instructiunii este foarte compact, deoarece trebuie sa permita un transfer masiv
de informatii.

35
Alex Mihăilă, 422B

Exemple:

36
Alex Mihăilă, 422B

DESCRIERI FORMALE ALE SEMANTICII UNOR INSTRUCTIUNI

Alte descrieri semantice:


obs: ne ghidam in functie de paginile 32-34 ! sesizati ca fiecare adresa fizica (AF) scrisa
acolo sunt ca o formula pentru descrierea in cauza; scriem separat destinatia si sursa, in
functie de tipul lor de adresare (care deseori e diferit, nu la fel ) !

PUSH [BX] :
SP ← SP – 2
( (SS)↑0H + (SP)+1) ←( (DS)↑0H + (BX)+1)
( (SS)↑0H + (SP)) ←( (DS)↑0H + (BX))
37
Alex Mihăilă, 422B

PUSH DI : cu adresare indirecta implicita la destinatie si adresare in registru implicita


la sursa
SP ← SP – 2
( (SS)↑0H + (SP)+1) ←(DI)h (high)
( (SS)↑0H + (SP)) ←(DI)l (low)

POP BX :
(BL)← ((SS)↑0H + (SP))
(BH)← ((SS)↑0H + (SP) +1)
SP ← SP + 2

POP [SI] :
((DS)↑0H + (SI))← ((SS)↑0H + (SP))
((DS)↑0H + (SI)+1)← ((SS)↑0H + (SP) +1)
SP ← SP + 2

XCHG BX, [BP+SI] : adresare in stiva implicita


(BL)← ((SS)↑0H + (BP)+(SI))
(BH)← ((SS)↑0H + (BP)+(SI) +1)

MOV [BX+SI+10H], FFAAh


( (DS)↑0H + (BX)+(SI)+10h) ←AAh
( (DS)↑0H + (BX)+ (SI)+11h) ← FFh

MOVSB/MOVSW: o instructiune tipica CISC


-copiaza un sir de numere dintr-o locatie de memorie la alta locatie de memorie;
-este o primitiva ce poate fi repetata cu REP, un prefix de repetabilitate, ce implica un
ciclu cu contor, o bucla! (face parte dintr-un set de tipuri de prefixe, pe care Intel le poate folosi !
exemplu: prefix de redirectionare etc.)
: REP MOVSB/MOVSW

38
Alex Mihăilă, 422B

- in formatul instructiunii apare, paradoxal, un octet inaintea codului (mai intai prefixul
apoi codul, acest aspect reprezinta o exceptie!);
-SI, DI, DS, ES, CX, DF- ca sa aiba rost, aceste registre trebuie actualizate, sunt
prestabilite;
-este un transfer intersegment ;
-caracteristica specifica INTEL: asocierea lui DI cu DS este obligatorie! nu-l putem
redirectiona;
-DF imi permite sa parcurgem intr-un fel sirul, de la stanga spre dreapta(DF=0), ori
invers(DF=1);

2)Prelucrari de date:

Avem 2 tipuri de operatii:

a)operatii cu un operand (monadice):


- cu acumulator: (d)← ⨂(d)
- fara acumulator: (d)← ⨂(s)
b)operatii cu 2 operanzi(diadice):
- cu acumulator: (d)← (𝒅)⨂(s)
- fara acumulator: (d)← (𝒔𝟏)⨂(s2)

observatie: operatiile cu acumulator sunt tipice CISC, deoarece nu avem multe registre,
iar cele fara acumulator sunt tipice RISC!

Caracteristici:

-tipuri de operatii uzuale:


a)logice: SI, SAU, XOR(diadice logice), complement fata de 1 si 2 (monadice logice)
b)aritmetice: +, - ,*, / (diadice aritmetice), incrementare, decrementare(monadice
aritmetice)
c)deplasari si rotatii(monadice aritmetice)

-sursa si destinatie pot fi, in principiu, registre generale, DAR si locatii de memorie !
observatie: utilizarea locatiilor de memorie ca membrii a operatiior aritmetice-logice, este o
caracteristica CISC !

-identificarea operanzilor si a rezultatului se face folosind modurile de adresare ale


μP respectiv, cu restrictii;

-nu orice combinatii de moduri de adresare, pentru sursa si destinatie, sunt posibile;

-ca si la transferuri, sursele si destinatiile au lungimi egale


39
Alex Mihăilă, 422B

exceptii: inmultirea, cu rezultatul pe dubla precizie


impartirea, unde deimpartitul este pe dubla precizie

-aceste instructiuni afecteaza fanioanele aritmetico-logice, modul in care ele sunt afectate, face
parte din semantica instructiunii!
avem 4 moduri de afectare a fanioanelor:
a) fanioane neafectate indiferent de operatii ( nu pot fi folosite in a lua decizii
ulterioare)
b) fanioane afectate ulterior
c) fanioane care sunt fie setate, fie resetate dupa o operatie indiferent de rezultat
d) fanioane care in functie de tipul operanzilor, in functie de valoarea operanzilor,
sunt setate sau resetate
obs: -nu toate fanioanele sunt afectate de orice instructiune de prelucrare de date
-exista instructiuni de prelucrari de date care afecteaza anumite fanioane la fel
-afecteaza fanioanele aleator

-performanta acestor tipuri de instructiuni este un compromis intre complexitatea instructiunii


si timpul de executie, tipic CISC !

Exemple:
Fie un procesor CISC pe 8 biti, organizare liniara a memorie, adrese fizice pe 16 biti,
memorie formatata pe octeti, numarator PC, indicator de stiva, registre generale R1, R2, R3,R4,R5,
R6 , 8 biti fiecare , acumulator A pe 8 biti, si fanion de transport optional.

40
Alex Mihăilă, 422B

Alte primitive: folosite in lucrul cu sirurile in special !

CMPSB / CMPSW (compara un element dintr-un sir, cu un element din alt sir):

-trebuie initializate: ES,DS,SI,DI,DF !

SCASB / SCASW (se compara o constanta cu elementele unui sir):

-utilizarea lui ES si DI e obligatorie;


-poate fi prefixat cu REP, REPZ, REPNZ

STOSB / STOSW

((ES)↑0H + (DI))← (AL) - pe 8 biti

[((ES)↑0H + (DI)+1)↑ ((ES) ↑ 0H + (DI)) ← (AX) ] – optional, pe 16 biti

if (DF)=0 then

(DI)←DI+N
else
(DI)←DI-N
41
Alex Mihăilă, 422B

LODSB / LODSW

(AL)←((DS)↑0H + (SI))← - pe 8 biti

[(AX) ←((DS)↑0H + (SI)+1)↑ ((DS) ↑ 0H + (SI))] – optional, pe 16 biti

if (DF)=0 then

(SI)←SI+N
else
(SI)←SI-N

exemple de instructiuni logice:

-IMUL – inmultirea cu semn!

DIV CX :

inainte de executia propriu-zisa a operatiei, se face verificarea pentru “impartirea la


zero”==>se genereaza automat o intrerupere software de tip 0, apeland un subprogram dedicat!
42
Alex Mihăilă, 422B

3)De control al programului:

Microprocesoarele ne pun la dispozitie 2 clase de actiuni: teste si salturi!

Testele:
A.testeaza un fanion;
B. testeaza combinatii logice fanioane;
C. testeaza un bit oarecare dintr-un operand oarecare;
D. testeaza linii de intrare “serie”;

Salturi: ma duc la alta locatie de memorie, decat cea imediat urmatoare.


*dupa efectuarea sau nu a unor teste:
-neconditionate
-conditionate
*dupa modul de adresare(mult mai retrictiv)-CISC foloseste patru salturi:

*dupa cum memoreaza sau nu valoarea curenta a numaratorului de program:


-salturi propriu-zise
-apeluri de subprograme
*dupa complexitate
A.salturi 2 posibilitati
B. salturi 3 posibilitati
C. cicluri
observatie:
-salturile neconditionate nu sunt recomandate de folosit ; in schimb salturile conditionate,
strict necesare, pot fi facute;
-apelurile de subprogame (CALL) = apelul de program, in esenta, este un salt
neconditionat (ca JMP, dar cu diferenta majora ca CALL poate sa revina la adresa de la care a
plecat, in programul principal)!!!
-apelurile de programe presupun salvarea adresei pentru reintoarcere, e regula facuta in
stiva, procesoarele CISC folosesc stiva pentru asta ; CALL este saltul la prima instructiune a
programului apelat; salveaza in stiva adresa urmatoarei instructiuni dupa CALL!

43
Alex Mihăilă, 422B

exemple:

1. Prin adresare directa intersegment; salt propriu-zis neconditionat :

2. Prin adresare implicita, intersegment, neconditionat:

3. Intel are toate salturile conditionate cu adresare relativa, intrasegment cu deplasament,


numai pe 8 biti :

4. Apelul (adresare directa, intersegment):

44
Alex Mihăilă, 422B

5. Return la apelul din programul principal (ultimele 2 randuri, paranteze drepte, pentru
intersegment, restul intrasegment):

45
Alex Mihăilă, 422B

Principiile de baza ale unei arhitecturi de microprocesor- RISC


Pe aceeasi masina VON NEUMANN, cu acelasi mod de functionare (fetch-decode-
execute), cu aceleasi tipuri de arhitectura, dar se manifesta in mod diferit!

CARACTERISTICI DEFINITORII:

1. Unitatea de control este realizata prin „logica de tip cablat”.


2. Instructiunile se desfasoara intr-o singura stare , deci durate de timp identice!
3. Numarul de instructiuni este mic (sub 128); ele sunt „simple” (nu exista operatii de tip
cicluri, adica nu avem loop-uri).
4. Dimensiunea este fixa pentru tot formatul instructiunilor (cat cea a operanzilor
tipici); de regula, sunt pe 32 de biti, dar in general informatiile (operanzi, rezultate,
instructiuni, adrese etc. ) vor fi uniforme pe 4 octeti !
5. Instructiunile au format uniform (nu mai mult de 4 tipuri de formate); informatiile din
formatul instructiunilor sunt putine, pentre decodificari cat mai simple cu putinta!
6. Numarul de moduri de adresare este mic (sub 4); pentru a nu avea coduri imense; sunt
putine, dar sunt compuse, nu simple!
7. Exista un numar mare de registre generale, atribute de arhitectura (cel putin 32) .
8. Accesul memoriei se face numai cu instructiuni de transferuri simple de date intre
registre si memorie (instructiuni de tip „LOAD” si „STORE”), operatiile de prelucrare
ale datelor folosesc numai registrele microprocesorului lor.

Setul de registre:

Avem de-a face cu urmatoarele avantaje in folosirea unui set de registre:

- marirea vitezei de procesare prin minimalizarea accesului in memorie a operanzilor


si/sau a rezultatelor;
- realizarea structurilor de date de tip stiva sau „coada” hard (in interiorul
microproesorului);
- transferul parametrilor intre programele apelante si apelate se face direct in interiorul
microprocesorului;
- deservirea cererilor de intrerupere si multiprocesare pot fi realizate direct in interiorul
microprocesorului;
- marirea „factorului de uniformitate” a cipului (numar total de circuite / numar de tipuri
de circuite: registre, UAL, numaratoare etc.).

Registrele:

Procesorul RISC are:

- in general foarte multe registre (de la 32.....2000 sau poate chiar mai mult, conform
ultimelor tehnologii aparute);
- dimensiunea registrelor = dimensiunea operanzilor de lucru (32, 64 biti);
- ele sunt fizice sau logice;
46
Alex Mihăilă, 422B

- toate registrele sunt multifunctionale, in general fara functii implicite; multe dintre ele fiind
folosite ca pointeri; nu avem acumulator, nici macar implicit!
- avand multe registre generale, putem defini subdiviziuni logice in setul de registre, ce
conduc la aparitia registrelor logice; intervine astfel in acest proces notiunea de set de lucru de
registre (subset de registre logice folosite in program);

Pentru un program care ruleaza, vom avea de a face de acum incolo cu setul de lucru de
registre (care se poate schimba de la un program la altul, de minim 32 de registre).
Ca microprocesorul sa treaca de la registrul logic la registrul fizic, se realizeaza translatarea
registrelor logice in registre fizice. Respectiva translatare se face automat si transparent pentru
utilizator.

*Tipuri de organizari a setului de registre:

a) setul de registre fizice simplu:

-un sir de registre, fiecare identificat dupa numarul sau de ordine r0, r1, r2
etc. (la fel ca-n organizarea liniara a memoriei) , apoi folosite cum dorim.

b) mai multe seturi de registre logice (unic set de registre fizice):

- se imparte setul de registre fizice in mai multe subseturi;


- fiecare subset de registre logice are cel putin 32 de registre,
ca sa fie set de lucru!
- prin intermediul unui pointer trecem de la un subset la altul;
avantajul: modularizarea programului ( nu mai salvam
continutul registrelor; trec de la un program la altul fara sa
mai salvez continutul unor registre care vor fi folosite si in
alt program);
-remarcam o corespondenta biunivoca intre registrul fizic si
cel logic.

47
Alex Mihăilă, 422B

c) seturi de registre logice partial suprapuse(unic set de registre fizice):

- - suprapunere = „ferestre de registre” care permit


comunicarea intre seturile de lucru;
- - in acest tip de organizare nu mai avem nicio
corespondenta biunivoca intre registrul fizic si logic;
- - fiecare set de registre logice reprezinta de fapt un set de
lucru!
- - permite transferul de parametrii intre programul apelant
si apelat !!
- - daca ultimul set de lucru se suprapune cu primul, avem
de-a face cu „ferestre circulare” ---> se incurajeaza
recursivitatea!
-microprocesorul impune numarul de suprapuneri;

d) mai multe seturi de registre logice pentru multiprocesare (mai multe seturi de
registre fizice):

48
Alex Mihăilă, 422B

- multiprocesarea = set fizic pentru fiecare proces ; trecerea de la un proces la altul se


face prin intermediul unui pointer.

Ca exemple, avem, de la inceputurile RISC-ului, urmatoarele registre ale


microprocesoarelor : Berkeley RISC I si II.

a) registrele disponibile pentru o anumita procedura:

-setul de lucru, de 32 de registre, este format din: 3 ferestre si registrele sale proprii.

b) registrele fizice si registrele logice:

49
Alex Mihăilă, 422B

- 8 seturi de lucru : putem avea 8 programe care se pot apela unele pe altele (A,B,C,...,H);
- primele 10 registre sunt comune, 10 registre dedicate fiecarui parametru de lucru;
- 6 registre din fiecare set se suprapun;
- ultimul set de 6 registre se suprapune peste ultimul;
- 8 seturi de lucru a cate 32 de registre fiecare;
- registrul R0= 0 stochez constanta 0 ! -->> consum de registre, aspect care nu-l regasim
si la CISC!
-in total: 138 de registre fizice!
- translatarea:

R0=A0=B0=C0=…=H0
...
R10=A10=H26
R15=A15=H31
R26=A26=B10
R31=A31=B15

etc.

*Setul de instructiuni si Tehnicile de adresare

Setul de instructiuni:

Dupa cum am stabilit, setul de instructiuni este mult simplificat (cel mult 128 de
instructiuni) si sunt „simple”. Avem urmatoarele tipuri de instructiuni RISC:

a) instructiuni pentru acces in memorie: LOAD/STORE

LOAD r, mem; (r) ← (mem)


STORE mem, r; (mem) ← (r)

- accesul in memorie se face DOAR cu aceste instructiuni;


- r si mem trebuie sa aiba aceeasi dimensiune.

b) instructiuni aritemetico-logice:

(d)← (𝒔𝟏)⨂(s2) , unde ⨂ - o operatie aritmetica, logica oaecare !

- nu se lucreaza cu acumulator (destinatia nu inlocuieste ua dintre surse);


- d, s1 si s2 sunt registre din setul de lucru;
- d, s1 si s2 au aceeasi dimensiune; nu vom avea niciodata locatii de memorie;
- tipuri de operatii:
1.operatii logice: SI, SAU, XOR (diadice), CF1, CF2(monadice);
2.operatii aritmetice: +, -, *, : (diadice), incrementare, decrementare (monadice);
obs: inmultirea si impartirea nu sunt considerate operatii complexe!

50
Alex Mihăilă, 422B

3.deplasari sau rotatii (monadice), care nu distrug operandul si au un numar variabil de


celule.

c) instructiuni de control:
*aici avem salturi proriu-zise, apeluri de subprograme si teste:
- apelurile de subprograme nu folosesc neaparat stiva „soft”, microprocesorul nu o
foloseste implicit, adresa de revenire poate fi salvata in stiva „hard” sau intr-un registru;
- daca exista stive, de multe ori ea este „hard”, nu „soft”.

Tipuri de moduri de adresare:

1. In registru:

AF =𝒓𝒏 , unde 𝒓𝒏 reprezinta un registru oarecare din setul de lucru registre;

2. Directa (absoluta), de regula intr-o portiune a hartii de memorie:

AF = adr
- se presupune ca adresa figureaza in formatul instructiunii;
- in formatul instructiunii am o bucata de din instructiunea curenta, astfel puem considera
ca avem o adresare scurta !

3. Indirecta prin registru:

AF = (𝒓𝒏 )
- se acceseaza orice din harta memoriei;
- orice registru poae fi pointer;
- tipica RISC

4. Adresarea imediata: constante care apar in formatul instructiunii.

*tipuri compuse de adresari:

5. Relativa la baza, directa:

AF = (𝐫𝐧 ) +adr

6. Relativa la baza, cu registru index:

AF = (𝐫𝐢 ) + (𝐫𝐣 ) , (ri ), (rj ) –orice registre din setul de lucru

obs: 5 si 6 sunt bazate pe adresarea indirecta prin registru!

7. Relativa (la PC):

AF = (PC) + disp , tipica pentru adresarea in programe;


51
Alex Mihăilă, 422B

DE REMARCAT: Orice registru poate fi baza si oricare registru poate fi index!

52
Alex Mihăilă, 422B

UNITATEA DE CONTROL A MICROPROCESORULUI RISC(UCP-ul):

Ca la orice procesor, UCP are 2 functii:


- desfasurarea in spatiu
- desfasurarea in timp

* Desfasurarea in spatiu:

Un RISC : la fiecare instructiune avem 4 octeti! Deci UCP-ul e simplificat! (fata


de CISC, unde avem intre 1 si 15 octeti pentru instructiuni).

- se observa ca-n formatul instructiunii putem avea : un cod, dezvoltarea pentru 3 registre
si un loc pentru un deplasament, instanta, adresa;
- 32 de registre de lucru;
- 2^6 instructiuni, din cod;
- o adresa are: 26 biti! (0-25).

Un CISC se prezinta sub forma urmatoare:

- linia punctata: suplimentar!


- linia continua: obligatoriu!

O masina RISC are toate instructinile desfasurate intr-un numar egal de stari!
Se poate face o desfasurare in paralel a mai multor instructiuni dintr-o secventa => o
desfasurare diferita cu fiecare TACT.

53
Alex Mihăilă, 422B

* Desfasurarea in timp:

a) CISC - inmultirea pe 32 de biti! unde se folosesc 2 acumulatori DX, AX:

CONCLUZII:
1. pentru diverse operatii de prelucrari de date se folosesc aceleasi componente
ale schemelor Block prezentate deja pentru un μP CISC;

2. operatiile aritmetice complexe dureaza un numar mare de stari, variabil,


depinzand de operanzi;

3. succesiunea de stari este stocata intr-o memorie de μprogram in care fiecare


instructiune e μprogramata;

acumulator + registru de deplasare => realizare prin concatenare de 2 registri


de 32 biti.

54
Alex Mihăilă, 422B

b) RISC - inmultirea pe 32 de biti!

CONCLUZII:
1. operatiile de prelucrare de date se realizeaza cu circuite dedicate,
combinationale de regula;
2. operatiile se realizeaza cablat, exista premise ca aceste operatii de prelucrari
de date, chiar cele complexe, sa se realizeze intr-o stare;
3. UC simplificata, astfel nu e nevoie de un automat complicat care sa genereze
succesiunile de stari. Acest aspect face diferenta majora dintre un RISC si
CISC!
obs: UC= unitate de control, neprogramata...e cablata!

Pe scurt:
-avantajul major: doar o stare la RISC, n stari la CISC! fiecare operatie pe RISC
reprezinta un circuit separat !!!! la CISC se folosesc aceleasi blocuri, aceeasi schema
pentru indiferent ce operatie, dar depinde de complexitatea operatiei daca avem sau nu
numar mare de stari!

observatie:
- totodata, la un RISC, circuitul trebuie optimizat pentru ca hazardurile sa fie sub o
perioada de clock !
- unitatea de control fiind mai simpla → desfasurarea in timp este mai rapida ; definim
CPI (clock per instruction = 1). In mod normal avem urmatoarele cazuri:

a) la RISC: CPI=1; cu exceptii CPI>1 (date de salturi);


b) la CISC: CPI>1 si variabil;
c) la unele procesoare, superscalare: CPI<1 (intr-o stare pot executa mai mult decat o
instructiune); exemplu: PENTIUM.

55
Alex Mihăilă, 422B

TEHNICA PIPELINE:
- durata este uniforma, egala practic pentru toate instructiunile intr-un numar mic de stari; in
principiu aceasta desfasurare uniforma in timp este posibila datorita :
 realizarii cablate a operatiilor, prelucrarilor de date;
 folosirii registrelor interne pentru operatii;
 instructiunile au format identic si putine tipuri de informatii;
 putine instructiuni (cod scurt);
 putine moduri de adresare → dureaza putin ;
 prezenta unei cozi de instructiuni.

*Daca un procesor executa toate instructiunile din setul de instructiuni, in cate n stari, executia
instructiunilor dintr-o secventa se poate suprapune asa incat, in fiecare moment de timp, avem n
instructiuni in diverse stadii de executie, astfel zicem ca avem o executie PIPELINE, cu n etaje.
Este posibil sa am un numar constant de stari pentru orice instructiune. Presupunem 5 (n=5)
stari, n; n+1; n+2 etc.(momente de timp) si k; k+1; k-1 etc.(instructiuni), toate desfasurate intr-un
moment de timp:

Avem urmatoarele semnificatii ale celor 5 stari :

a) pentru instructiunile de prelucrari de date:

S1(starea 1)- fetch;


S2(starea 2)- decodificare;
S3(starea 3)- citeste operanzi;
S4(starea 4)- executa operatia aritmetica sau logica;
S5(starea 5)-scrie rezulatul.

56
Alex Mihăilă, 422B

b) pentru operatiile de accesare a memoriei de date si/sau a memoriei de program(transferul de


date si instructiunile de control ale programului):

S1-fetch;
S2-decodificare;
S3-S4-S5-pentru accesarea memorie de date/ program.

obs: tinem insa cont ca nu toate instructiunile urmeaza succesiunile de stari de mai sus!

Caracteristici RISC la nivelul Software:

Consta in:
- impunerea de restrictii desfasurarii programelor;
- cel care proiecteaza procesorul poate sa optimizeze secventa de instructiuni cu care
sunt emulate instructiunile de nivel inalt;
- optimizari ulterioare ale codurilor sunt imposibile;
- translatarea registrelor logice in registre fizice (pentru folosirea registrelor).

Intr-o masina RISC este posibil sa blocam masina, fiindca nu stim detalii de
implementare a instructiunilor si conduce la conflicte !

Optimizarea Translatarii RISC:

Fie un set de lucru, cu 6 registre logice: A, B, C, D, E, F. Presupunem, de asemenea,


registrele logice organizate intr-un anume fel si-n orice moment translatarea registrelor logice in
trei registre fizice: R1, R2, R3 .

a) prin diagrama timpilor de utilizare a registrelor logice A, B, C, D, E, F;


b) graful de interferenta a utilizarii registrelor; alocarea registrelor fizice R1, R2, R3 .

57
Alex Mihăilă, 422B

Nodurile grafului sunt registre logice. Laturile grafului semnifica cel putin utilizarea
simultana a celor doua registre logice.
Alocarea registrelor logice se face evitand sa am acelasi registru fizic in doua noduri
unite de o latura. Daca alocarea nu e posibila, inseamna ca microprocesorul se blocheaza! (cazul
nodului F).
Acest caz poate fi evitat printr-o varianta software → sa avem grija ca
secventele de instructiuni sa permita intotdeauna translatarea pentru un minim de
registre fizice disponibile !

Exemplu de alta problema, cu 4 registre fizice de aceasta data, nu 3:

Fie un microprocesor RISC ale carui registre logice sunt folosite pentru o
secventa de instructiuni conform figurii de mai jos, considerand ca setul de lucru de
registre fizice cuprinde 4 registre (R1, R2, R3, R4). Sa se propuna corespondenta
optima intre registrele logice si cele fizice pentru transaltia corecta a setului de registre
logice.

consideram noi o asezare a registrelor logice (nodurilor) si trasam in functie de


diagrama de timp (figura de mai sus) graful urmator:
obs: pentru registrul logic A sesizam ca se desfasoara in acelasi timp cu registrele
logice B, C, D si E (se suprapun liniile albastre ale lui B, C, D, E cu linia lui A), deci A
va avea legaturi cu B, C, D si E in graful nostru; acelasi principiu si pentru celelalte
registre logice, daca se mai gasesc alte cazuri inafar’ de cele deja scrise;

58
Alex Mihăilă, 422B

- problema este rezolvabila cu alocarea tuturor celor 4 registre fizice si


microprocesorul nu intampina vreun blocaj !
!!! nu merge optimizat, adica nu putem scoate un registru fizic si ordona graful
pentru a functiona cu mai putin de 4 registre fizice !

Exemplu de problema care merge optimizata :


*tot 4 registre fizice, si 6 logice (A, B, C, ... )

graful cu 4 registre fizice alocate:

se poate optimiza, deci putem avea graful urmator, unde se folosesc doar 3
registre fizice (R1, R2, R3):

59
Alex Mihăilă, 422B

AVANTAJE RISC:

1. Realizarea fizica in structuri VLSI:


VLSI (Very Large Scale Integration) = procesul de creare a unui circuit integrat prin
combinarea a mii de tranzistoare intr-un singur cip.

- minimizarea ariei cipului dedicata UC al microprocesorului (sub 10%);


- marirea ariei cipului disponibila pentru registre generale;
- marirea „factorului de uniformitate „ a cipului (numar total de circuite/numar de tipuri de circuite:
UAL, registre, numaratoare etc. );
- posibilitatea utilizarii altor tehnologii decat cea a siliciului (ex. GaAs).

2. Marirea vitezei de procesare:

- prin realizarea cablata a UC si a prelucrarii datelor;


- prin utilizarea unui numar mare de registre interne se reduce traficul cu memoria;
- prin suprapunerea executiei instructiunilor;
- prin utilizarea tehnicii “intarzierii salturilor” se previne golirea cozii de
instructiuni.

3. Scaderea costului si marirea fiabilitatii:

- timp mai mic pentru proiectarea UC;


- timpul global de proiectare si punere in fabricatie este considerabil mai mic decat
pentru CISC;
- probabilitate mai mica de a avea erori de proiectare si usurinta de corectare;
- lungimea standard a formatului instructiunilor elimina riscul depasirii
limitelor paginilor de catre o instructiune. Gestionarea paginilor devine mai usoara.

4. Suport pentru limbajele de nivel inalt:

- realizarea compilatoarelor este mai simpla (numar mic de optiuni in alegerea


instructiunilor);
- cresterea eficientei prin utilizarea extensiva a operatiilor de prelucrare in interiorul
microprocesorului;
- tehnica “ferestrelor de registre” usureaza implementarea apelarii subrutinelor
(procedurilor).

60
Alex Mihăilă, 422B

DEZAVANTAJE RISC:

1. Numarul redus de instructiuni:


rezulta ca programele RISC sunt mai lungi decatcele CISC (in medie cu 30%).

2. Numarul mare de registre interne:


- timp de acces mai mare;
- utilizarea registrelor “pointer” pentru ferestre complica selectia unui registru la
decodare;
- spatiu mare pe cip;
- tehnici complicate de gestionare a ferestrelor;
- compilatoarele avansate folosesc mai eficient seturi reduse de registre;
- salvarea registrelor in contextul multiprocesarii (la trecerea de la un proces la
altul) presupune timp mai indelungat pentru stocare si recuperare in/din
memorie.

3. UC realizata “cablat” este mai putin flexibila si mult mai greu de modificat.

4. Formatul redus al instructiunilor face imposibila adresarea directa a unei


harti dememorie mare (de pilda, adrese fizice sau logice de 32 biti).

61
Alex Mihăilă, 422B

Strategii de intrare / iesire

Spatiul dispozitivelor de intrare / iesire


Discutam despre PORTURI si accesarea lor – tipic CISC:

a) ca porturi propriu-zise (tipic CISC):

Consuma coduri de instructiuni, existenta de instructiuni suplimentare mareste setul de


instructiuni, numarul de semnale de control si consuma terminale de pe magistrala de control;
avantajul este accesul rapid daca sunt indeplinite cele 3 conditii:
- daca d si s se cunosc (acumulatorul implicit sau dedicat - AX, AL);
- daca harta porturilor este foarte mica, mai mica decat harta memoriei;
- daca limitez drastic modurile de adresare la porturi : directa, indirecta prin registru.

De asemenea, aceasta accesare mai este caracterizata prin cicluri masina specifice si
semnale distincte pe magistrala de control: IOR si IOW (input output read si input output write):

IN d, port; (d) ← (port)


OUT port, s ; (port) ← (s)

exemple:
-Intel x86 este compatibil pentru astfel de organizari ale dispozitivelor
intrare/iesire;
-Intel x86 detine instructiuni dedicate cu cicluri masina speciale prin care se
valideaza:
* acumulator util implicit AL,AX,EAX;
* maximum harta porturilor: 64kiloporturi/octet;
32 pentru 2 octeti;
16 pentru 4 octeti;
* adresari
-adresare directa pe 8 biti;
-adresare indirecta prin DX obligatoriu (fara EDX).

b) ca locatii de memorie:

Dispozitive de intrare / iesire mapate in memorie. Este tipica RISC, nu adauga, nu


consuma instructiuni si nu consuma semnale de control !
Caracterizata prin cicluri masina de acces in memorie si semnale pe magistrala de control
folosite pentru accesul in memorie: MEMW si MEMR (memory read si memory write).
Toate caracteristicile transferurilor de date sunt transmise asupra instrcutiunilor de I / O.
Totodata, dar doar la CISC, extind utilizarea porturilor si in cadrul instructiunilor de prelucrari de
date.

62
Alex Mihăilă, 422B

Dezavantajele acestei accesari: consuma spatiu din harta memoriei si timp mare de acces
(formatul instructiunilor complicat, moduri de adresare multe- doar CISC).

observatii:
- oricare operatii in care se foloseste memoria se aplica si la porturi;
- oricare procesor care poate folosi aceasta caracteristica b) poate folosi si caracteristica
a);
- daca procesorul nu are a), atunci are b).

Tehnici de intrare / iesire uzuale:


Tehnici de sincronizare a microcalculatorului cu echipamentele periferice conectate prin
intermediul porturilor. Avem 2 tipuri principale de tehnici:

A. Sincrone cu programul curent. Interogarea continua (tehnica POLLING):

Presupune ca fiecare port are disponibil un asa zis „cuvant de stare” (de un octet sau mai
multi), in care portul informeaza daca este ocupat sau nu in conversatia cu perifericul de care e
legat.
Microprocesorul citeste periodic aceste cuvinte de stare al fiecarui port pana cand se
anunta ce port e disponibil pentru permiterea transferului de informatii intre exterior si port.

Multe avantaje, dar si dezavantaje majore:


Avantaje:
-nu implica hardware in plus(sarme etc. );
-totul se face sincron cu programul curent;
Dezavantaje:
-cat timp interogam un anumit port, pierdem timp;
-daca o cerere de conversatie a unui periferic e tinut blocat, putem pierde conversatia;

63
Alex Mihăilă, 422B

Exemplu de implementare a tehnicii:

Fie 2 porturi, fiecare prezinta un cuvant de stare, pe un octet, in care presupunem ca MSB ne
arata daca portul e ocupat sau nu (1 – e disponibil, 0 – nu e); comunicarea e pe 16 biti;
Care este timpul minim si maxim de interogare a unui port?
*minim: la limita inferioara calculam cate stari dureaza instructiunile cand se evalueaza o singura
data corpul acelui ciclu;
*maxim: pana la sfarsitul energiei calculatorului.

comentariu: citim cuvantul de stare, msb trece in fanionul de transport, testam fanionul de
transport , trecem mai departe in AX=16biti . JNC (jump if not carry, daca CF=1 trec mai departe).
ATENTIE, in cadrul problemelor:
- in loc de PORT1 si PORT2 (la IN) scriem adresele specifice respectivelor porturi ;
- randurile de OUT trebuie doar trecute daca-ti cere si iesirea;
- lucreaza cu memoria; adresele porturilor sunt înglobate în spaţiul de adrese al memoriei.

B. Asincrone cu programul in curs de desfasurare. Intreruperile.

Acesta tehnica presupune o legatura fizica speciala intre porturi si microprocesor;


porturile pot trimite semnale, nu logice, ca sunt disponibile si ca doresc transfer de la un terminal
specializat al microprocesorului, apoi microprocesorul raspunde intrerupandu-si programul intr-o
maniera specifica cererii unui port si revenind apoi la programul curent .

64
Alex Mihăilă, 422B

Respectiva tehnica este cea mai utilizata, incearca sa elimine cele 2 dezavantaje de la
cealalta tehnica.
obs: Avantajele de la punctul A sunt dezavantaje, iar dezavantajle avantaje!!
Cerere de intrerupere: semnal (0 sau 1) trimis unui terminal dedicat al
microprocesorului prin care un periferic (prin intermediul unui port) cere acces la
resursele sistemului.
Raspuns la o cerere de intrerupere: o secventa de actiuni pe care
microprocesorul o declanseaza parasind programul normal de functionare; totodata
reprezinta trecerea intr-o alta stare
Rutina de deservire a unei intreruperi (handler): un program prestabilit, aflat
la o adresa prestabilita, prin care microprocesorul raspunde la o anumita cerere de
intrerupere formulata de un anumit periferic. Adica fiecarui periferic trebuie sa-i raspundem intr-un
mod diferit!

Exemplu de implementare a tehnicii:


Fie o masina CISC, pe 8 biti, organizare liniara a memoriei, adresele fizice sunt pe 2
octeti, memoria formata pe octet, procesorul are registre generale, pe 8 biti, concatenabile cate 2 in
registre de 16, exista un numarator de program (PC) de lungime..., este tipic sa aiba o stiva
soft(fiind CISC), indicator de stiva SP, de lungime...; avem registrul de fanione(F), intre fanioane
avem un fanion special: fanion de validare a anumitor cereri de intrerupere(IF).

comentariu:
1. Raspunsul la o cerere de intrerupere pentru μP CISC foloseste stiva primara
sau propriu-zisa (stiva soft). Stiva este o zona de memorie, foarte sensibila fiind soft; inafar’ de
PUSH, POP, CALL, RET se pare ca se utilizeaza si pentru cererile de intrerupere!!
2. Procesorul salveaza in stiva F (registrul de fanioane), PC deci locul unde se
face intreruperea si optional alte registre atribute de arhitectura.
3. Resetarea lui IF inseamna invalidarea anumitor cereri de intreruperi care ar
putea aparea in rezolvare, in cursul raspunsului intreruperii curente.
4. O etapa in cadrul secventei de raspuns este apelarea etapei nr.5.(diverse tipuri
de intrerupere si dupa modul in care adr este prestabilita).
5. Reiau din stiva ceea ce era acolo pentru a putea continua programul initial. Apel al
procedurii de raspuns (difera de la un tip de intrerupere la altul!).
65
Alex Mihăilă, 422B

Intreruperi caracteristice microprocesoarelor de uz general:


Un procesor de uz general, fie CISC, fie RISC poate raspunde la mai multe tipuri de
intreruperi:

a) Accesul direct la memorie:

Caracteristici:
- este o intrerupere de prioritate maxima (se raspunde prima);
- este un criteriu de performanta ; timpul de raspuns nu asteapta ciclul masinii curent;
- raspunsul la intrerupere este HARD, nu SOFT (microprocesorul isi ingheata activitatea
– impedanta inalta asupra terminalelor, ca si cum l-am scoate din soclu);
- BUSRQ : bus request (controllerul preia controlul asupra magistralei);
- DMA(direct memory access) : pre-programat sa acceseze memoriilee si porturile si va
facilita un transport direct intre memorie si porturi;
- transferul de date direct intre memorie si porturi este considerat cel mai rapid mod de
tansfer de date de pe magistrala microprocesorului unui calculator.

Pentru o masina CISC, care presupune mai multe cicluri masina, fiecare cu mai multe
stari: nu se asteapta terminarea instructiunilor, ci teminarea ciclului de masina curent!

Concluzie :
DMA = tip de intrerupere puternic si rapid (odata primit pe un terminal specializat un
astfel de semnal , procesorul raspunde imediat==>timpul de raspuns e un criteriu de performanta!
nu avem de a face cu stiva, salvare in ea etc; este preprogramat! (sa controleze transferuri pe
magistrala de date pentru un acces direct intre porturi si memorie) – cel mai rapid transfer posibil
pe magistrala de date!

66
Alex Mihăilă, 422B

b) Intreruperi nemascabile:

* este formulata pe un terminal specializat (“NMI”);


* nu poate fi invalidata de catre utilizator(=nemascabila);
* ca prioritate, urmeaza dupa cererea de acces direct la memorie(DMA);
* asteapta terminarea instructiunii curente;
* urmeaza algoritmul general de raspuns la o cerere de întrerupere;
* rutina de deservire a întreruperii are o adresa prestabilita.

c) Intreruperi mascabile:

* este formulata pe un terminal specializat (“ INT ”);


* poate fi invalidata de catre utilizator (fanion / fanioane de validare a întreruperilor);
* ca prioritate, urmeaza dupa întreruperile nemascabile;
* asteapta terminarea instructiunii curente;
* urmeaza algoritmul general de raspuns la o cerere de întrerupere;
* rutina de deservire a întreruperii are o adresa care depinde de “modul de raspuns”
prestabilit:
 “modul 0” – perifericul stabileste adresa dar si instructiunea de apel a rutinei
de deservire a întreruperii; practic perifericul stie tot!
 “modul 1” – adresa rutinei de deservire a întreruperii este prestabilita; adica
perifericul nu stie ce-i intreruperea etc. si ii trimitem noi o procedura;
 “modul 2” – întreruperi vectorizate (combinatie intre modul 0 si 1).

Nu toate microprocesoarele detin modulele de mai sus ( z80 e un exemplu care le detine pe
toate).

Intreruperi vectorizate: adresa completa a unei rutine de deservire a intreruperii;

Algoritmul de vectorizare: adresarea indirecta cu memoria (independenta pozitionarii


datelor in program si protectie! ) , folosind o tabela cu vectori de intrerupere !
-un procesor are, de regula, mai multe proceduri de raspuns, si , deci, mai multi vectori de
intrerupere pregatiti (vectorul il alegem noi!);
-vectorii sunt organizati intr-o tabela, unul dupa altul intr-o zona predefinita; aceasta
tabela reprezinta legatura dintre codul intreruperii si procedura definita pentru a servi intreruperea
asociata cu acel cod;
-perifericul trimite prin intermediul portului cererea de intrerupere si un cod (un numar de
biti);
-microprocesorul calculeaza pornind de la acest cod adresa vectorului (adresa adresei
procedurii de raspuns corespunzatoare);
-citeste vectorul si transfera controlul la procedura de raspuns (salt la prima instructiune
din procedura);
- localizarea tabelei in harta memoriei; avem doua categorii de microprocesoare din punct
de vedere al pozitiei in tabela cu vectori de intrerupere :
67
Alex Mihăilă, 422B

 microprocesoare care spun unde se afla tabela;


 microprocesoare ce pot sa foloseasca anumite zone.

I. Dimensiunea vectorului de intrerupere (numarul de octeti al adresei complete) : m bytes:

Cand memoria este organizata:


- liniar, daca memoria total adresabila [octeti] are 𝟐𝑵 octeti, o adresa completa are
atunci N biti = m bytes (cu transformarile de rigoare) !
- segmentata, adresa completa = dimensiunea reg. segment (AS) + dimensiunea
offset(AE) => m bytes (4 octeti de fel, daca nu se specifica altfel in cerinta ) !

II. Codul „tip” [biti], numarul vectorilor de intrerupere:

Daca „tip” are n biti, atunci avem 𝟐𝒏 vectori de intrerupere [octeti], deci 𝟐𝒏 rutine
potentiale de deservire a intreruperilor.

III. Marimea tabelei de vectori este:


m*2^n [octeti]

*unde m = dimensiunea vectorului de intrerupere [octeti]


2^n = numarul vectorilor de intrerupere [octeti]

*cu proprietatea ca : memoria total adresabila [octeti] >= m*2^n [octeti]

EXEMPLU:

Fie o masina CISC (z80), microprocesor pe 8 biti, organizarea liniara a memorie, cu o


adresa pe 16 biti (o adresa completa are 2 octeti), memoria formatata pe octeti; acest
microprocesor poate raspunde la cererile de intrerupere mascabile, vectorizate, iar codul „tip”
primit de la periferic trebuie sa aiba 7 biti (128 de proceduri-->128 de vectori) ; exista un fanion
de validare a intreruperilor si exista un registru atribut de arhitectura, I, pe 8 biti, care ne permite
localizarea tabelei cu vectori de intrerupere.

68
Alex Mihăilă, 422B

cu
vector_de_întrerupere = ((I) ↑ tip ↑ 0 + 1) ↑ ((I) ↑ tip ↑ 0)

-vectorul de intrerupere are 2 octeti = m;


-„tip” are 7 biti;
-tabelul cu vectori de intrerupere : 2*2^7 bytes – 256 de bytes;
-iar localizarea tabelei este la alegerea utilizatorului.

*Concatenam cu 0 la dreapta( sau deplasam o pozitie la stanga): inmultim cu 2! (de ce?


obligatoriu pe adrese pare, intrarea in tabela e din 2 in 2! intrarile in tabele sunt obligatoriu pe
adrese pare!==> avand vectori pe 2 octeti, adresele vectorilor nu pot fi decat pare!

Tipuri de intreruperi la microprocesoarele Intel x86 in modul real

- vectorul de intrerupere are 4 octeti (2 octeti IP, 2 octeti CS) = m ;


- INTEL are „tip” 8 biti;
- tabela are un 1 kB;
- localizarea tabelei este prestabilita;
Intel impune ca aceasta tabela sa inceapa de la pozitia „0”; octetul se inmulteste cu 4!
(intrarile in tabela din 4 in 4, iar apoi partea mai semnificativa se completeaza cu zerouri, adresele
fizice pe 20 de biti).
O caracteristica interesanta din partea Intel este: intreruperea software.
Observatii:
*intreruperea - ceva asincron cu programul, de natura hardware (nu depinde de noi!)
*intreruperea software (depinde de noi; daca o vrem, apare) - o instructiune din microprocesor,
din setul de instructiuni; dar de ce o numeste intrerupere? deoarece este identica cu
succesiunea de actiuni ce o face procesorul cand primeste o intrerupere propriu-zisa, de natura
hardware (foloseste aceeasi tabela cu vectori de intrerupere ) !
69
Alex Mihăilă, 422B

*unde [tip]- un numar ce poate fi dat in zecimal, intre 0 si 255 ; numarul venind de pe
magistrala de date!

- al doilea rand==>salveaza in stiva registrul de fanioane;


- fanionul IF si TF, amandoua sunt invalidate, ca sa nu ne intrerupa alt periferic;
- al 6-lea rand==>se salveaza in stiva adresa segment curenta, ca sa stiu unde sa ne
intoacem, si se incarca jumatate din vectorul de intrerupere (jumatatea ce presupune
adresa segment a procedurii de raspuns);
- daca acest numar(„tip”) exista se incarca jumatatea superioara a vectorului de
intrerupere sau, altfel, se incarca automat adresa segment cu procedura de raspuns ;
- se salveaza in stiva adresa efectiva curenta si apoi se incarca adresa efectiva din
vectorul de intrerupere (jumatatea inferiora ramasa), calculata sau implicita daca acest
numar nu exista in formatul instructiunii!

Avem formula adresei unui vector de intrerupere : 4*tip ÷ 4*tip+3 !


obs: INT corespunde vectorului de tip 3! deci, conform formulei avem 0Ch ÷ 0Fh (se observa
ca-s chiar limitele unui interval in descrierea formala! )

In probleme, fie un tip = 16 : INT 16 ==> randurile 7,9,10,13,15,16 dispar, nu au rostul a


fi scrise din moment ce „tip” exista! in caz contrar, daca „tip” nu exista ==> radurile
7,8,9,13,14,15 dispar!

*Alte intreruperi software :

*INTO (interact if overflow) : dedicata situatiei cand tin seama de depasirea unei operatii
aritmetice.
aceasta intrerupere corespunde vetorului de tip 4! deci, conform formulei avem
10h ÷ 13h

70
Alex Mihăilă, 422B

*IRET (return after interact) : intoarcearea din procedura de raspuns.

De asemenea, de observat la instructiunea de impartire ca avem o intrerupere software la


mijloc!!!

DIV CX (impartire la „0”): vectorul


de tip 0!

71
Alex Mihăilă, 422B

Avem 5 intreruperi software rezervate ! Primul kb il lasam neocupat fiindca vom avea tabela
de vectori !

Dimensiunea temporala a arhitecturii de microprocesor de uz


general

Vom aborda urmatoarele aspecte:

1. Desfasurarea in timp in cazul unui procesor CISC clasic (fundamentele CISC);


2. Imbunatatirile aduse pentru microprocesoarele CISC de generatia a 3-a;
3. Modul in care executia PIPELINE poate fi intarziata din motive obiective (situatiile
cand CPI>1, de ce?) – la RISC.

*1.
Un nucleu CISC: desfasurarea in timp depinde de complexitatea instructiunii ; isi imparte
executia in cicluri masina (M1,M2... – un grup de actiuni elementare ce rezolva ceva, precum
FETCH) si stari (T1, T2...). Numar mic de cicluri masina, combinate in diverse feluri putem
realiza diverse instructiuni.
exemple de cicluri masina:
-FETCH („M1”) - inseamna ca ciclul masina M1, va fi ciclul masina de FETCH !
-decodifica;
-prelucrare de date;
-citeste din memorie;
-scrie in memorie;
etc.

Fie o masina CISC, cu urmatoarele caracteristici:


magistrala de date interna si externa pe 8 biti; organizarea liniara a memoriei; adresa fizica pe 16
biti; memorie organizata pe octeti; registre generale pe 8 biti concatenabile cate doua (R1...R6);
un acumulator pe 8 biti A; registru de fanione F pe 8 biti ; un numarator de program PC; un
indicator de stiva SP; un registru index, IX; un registru de instructiuni , RI, pe 8 biti; un registru
de date RD, RA si niste registre temporare (ATEMP, TEMP, AUX1, AUX2).

72
Alex Mihăilă, 422B

- ATEMP, TEMP: se ocupa cu sincronizarea operatiilor aritmetice si logice din UAL;


- AUX1, AUX2 : ele sunt registre ascunse, registre cache !

Pentru fiecare exemplu prezentat, vom avea in vedere urmatoarele aspecte:


1. Ce moduri de adresare sunt folosite in instructiunea propusa?
2. Care este formatul instructiunii propuse, cati octeti?
3. Propunerea desfasurarii in timp!

I. exemplu: un simplu transfer intre registre, in interiorul microprocesorului:

la T1: se acceseaza codul instructiunii curente din memoria de program; se emite un


impuls MREAD (memoria e avertizata ca urmeaza a fi citita); multe microprocesoare isi fac
cunoscuta starea (rand 2) , folosit pentru sincronizare cu restul dispozitivelor (apare obligatoriu in
prima stare, a primului ciclu masina, se inscrie in RD pe magistrala de date interna);
la T2: numaratorul de program (PC) este actualizat si urmeaza sa indice urmatorul octet;
se aduce codul instructiunii din memoria de program in microprocesor (discutate in 2.1);
la T3: tipic ciclului masina de FETCH, codul este adus in RI, un registru care primeste
codul si atat (nu-l vedem, nu-i atribut de arhitectura) ;
73
Alex Mihăilă, 422B

la T4: urmeaza decodificarea ; microprocesorul acum stie ce are de facut ; copiem din R3
in TEMP ; registrele interne din microprocesor sunt realizate fizic ca o mica memorie RAM;
la T5: folosim un registru tampon ; de ce TEMP? – trebuie sa defineasca 2 conditii :sa nu
fie atribut de arhitectura; trebuie sa am acces de pe magistrala interna de date (se observa pe
desenul de sus ca TEMP e legat de magistrala!) .

*Avand in vedere schemele bloc functionale din capitolul 2 cu precizarile facute in acest
capitol si principiile masinii Von Neumann, desfasurarea in timp urmareste minimizarea
timpului de executie ,in conditile date!
Conditiila date inseamna principiile masinii Von NEUMANN, schemele bloc functionale
stabilite si precizarile atributelor de arhitectura si de structura prezentate.
O masura importanta ca sa atingem scopul respectiv: de a incerca sa indeplinim mai multe
actiuni elementare intr-o stare !
Principii:
-putem avea mai multe actiuni elementare intr-o singura stare daca nu mai mult de o
actiune elementara foloseste magistrala interna de date;
-intr-o singura stare pot fi efectuate succesiv mai multe actiuni elementare daca este
evident ca niciuna dintre ele nu va dura cat o perioada de TACT.

Conventie:
Daca am 2 astfel de formule pe acelasi rand: actiuni elementare simultane. (precum T2)
Daca am 2 astfel de formule una dupa alta: actiuni elementare succesive. (precum T1)

obs: O actiune elementara = un set de comenzi trimise de la UC (unitatea de control) spre diverse
blocuri ; semnale de validare / selectie trimise diverselor componente ale procesorului.
Fiecare formula din exemplu reprezinta o actiune elementara!

Pentru astfel de actiuni, stabilim niste reguli :


a) actiunile succesive : trebuie sa dureze suficient de putin pentru a se incadra intr-o
perioada de TACT (actiunile combinationale-decodificarea , actiuni elementare in interiorul
microprocesoruui)
b) actiunile simultane: putem avea una sau mai multe actiuni elementare succesive
daca cel mult una din repesctivele actiuni elementare afecteaza magistrala interna de date

Ce trebuie avut in vedere!


1. adresare implicita in registru, si pentru sursa si destinatie; o copiere simpla!
2. 1 octet (datorita PC-ului).

74
Alex Mihăilă, 422B

II. in cadrul unui alt exemplu: avem o adunare in interiorul microprocesorului, pe 8 biti
; utilizarea acumulatorului este obligatorie (cand declaram ca avem un acumulator dedicat -
automat instructiunea va arata cum se prezinta mai jos):

la M1:
 T1, T2, T3 si o parte din T4 se observa ca sunt identice , deoarece orice
instructiune incepe cu FETCH SI DECODE (principiu VON NEUMANN), se
intampla la toate instructiunile, toate incep asa!!! (ca o sintaxa)
 la T4: dupa decodificare facem 2 actiuni simultan acum, nu una! pentru adunare
trebuie sa avem operanzii in TEMP si ATEMP! TEMP afecteaza magistrala
interna de date, ATEMP nu! (uita-te pe desen!)
la M2: in mod paradoxal se declanseaza un nou ciclu masina care lasa starea T1
nefolosita!
astfel:
- avem de fapt 4 stari, economisim o stare din 5; (executia PIPELINE)
- cele 2 instructiuni pot fi suprapuse partial;
- orice stare in cerc acceseaza magistrala interna de date ( o ocupa); nu exista 2 pe aceeasi
verticala!
- executia lui n+1 se realizeaza dupa 4 stari!

De remarcat ca suprapunerea nu este uniforma, pentru ca instructiunea nu se


desfasoara uniform! ==> SUPRAPUNERE PARTIALA SI NEUNIFORMA.

Ce trebuie avut in vedere!


1. adresare implicita in registru, si pentru sursa si destinatie; o copiere simpla!
2. 1 octet (datorita PC-ului);
75
Alex Mihăilă, 422B

III. in cadrul unui alt exemplu: tot o adunare, doar ca de aceasta data iesim din
microprocesor; al 2-lea operand este in memoria de date la adresa aflata in perechea R5, R6; ce
vedem este o adresare indirecta, parantezele sunt un pointer :

la M1:
 T1, T2, T3 sunt la fel din nou!
 la T4: decodificam si ATEMP primeste valoarea acumulatorului (pregatim
primul operand in ATEMP!);

la M2:
 la T1: citesc din memoria de date; furnizam adresa operandului si-l accesam;
 la T2: il aduc din memoria de date in microprocesor;
 la T3: il pregatesc pentru adunare.

la M3: prelucrarea datelor!

Observatii:

- complexitatea e mai mare (mai multe stari), deci timp mai mare;
- putem face si aici o suprapunere, dar castigul de timp este mai mic (aici
economisim o stare din 8 !).

Ce trebuie avut in vedere!


1. adresare indirecta prin registru
2. 1 octet (datorita PC-ului).

76
Alex Mihăilă, 422B

IV. in cadrul unui alt exemplu: o instructiune complexa, cu 4 cicluri masina si 13 stari!
operatia de transfer din memorie!

la M1: un FETCH pur, ca-n cazurile anterioare


 T1, T2, T3 la fel ca exemplele anterioare, iar la T4 doar decodifica;

la M2: citim din memoria de program primul octet;


la M3: citim din memoria de program al doilea octet;
*ambii operanzi ii ducem in niste acumulatoare! citim din memoria de program in M2, M3.
la M4: asamblam octetii sa formeze o adresa, accesam memoria de date!

*Actiuni elementare, formal identice, cu semnificatii diferite:


-T2 din M1 :aduc codul;
-T2 din M2, M3 :aduc o adresa;
-T2 din M4 : aduc un operand.

Ce trebuie avut in vedere!


1. adresare directa/absoluta a sursei si implicita a destinatiei;
2. 3 octeti (o data avem octetul de cod si obtinem apoi 2 octeti de adresa, operanzii, pentru a citi
formatul complet al instructiunii)

77
Alex Mihăilă, 422B

V. in cadrul unui alt exemplu: un salt neconditionat cu adresare directa, unde ne


asteptam sa folosim o instructiune cu 3 octeti

 M1 (FETCH pur), M2, M3(FETCH din memorie) la fel ca-n exemplul


anterior!
 M4 – inscrierea acestei adrese in RA inseamna de fapt saltul, accesam memoria de
program, nu de date! adresa din AUX1, AUX2 (registre tampon) folosite sa aducem adresa
operandului ! PC actualizat ulterior!
*M4 poate fi suprapus cu o instructiune urmatoare pentru ca saltul inseamna inceputul
unei noi instructiuni si se pot suprapune .

Ce trebuie avut in vedere!


1. salt cu adresare directa
2. 3 octeti (un octet de cod si 2 octeti de adresa).

78
Alex Mihăilă, 422B

VI. Cand ai ca destinatie o locatie de memorie!

destinatia: adresare indirecta prin registru


sursa: adresare implicita prin registru

Concluzii, caracteristice desfasurarii in timp pentru un procesor CISC


clasic:

1) desfasurarea in timp se bazeaza pe principiile VON NEUMANN, pe scheme bloc


prestabilite si cu precizarea absplut necesara a unor anumite atribute de arhitectura si de
structura;
2) urmareste o minimizarea a timpului de executie, in conditiile date;
3) caracteristica generala a desfasurarii in timp este neuniformitatea (numarul de
stari variaza in functie de complexitate instructiunii);
4) pentru minimizarea timpului s-a incercat suprapunerea a unor actiuni
elementare, dar si suprapunerea unor actiuni dintr-o secventa;
5) suprapunerea instructiunilor este posibila datorita unui numar mic de stari,
identic, la inceputul fiecarei instructiuni incat pana la urma avem o suprapunere
neuniforma si nesistematica .

79
Alex Mihăilă, 422B

CRESTEREA VITEZEI DE EXECUTIE PENTRU CISC


EVOLUATE

Incepand cu generatia a 3-a de procesoare CISC pana in zilele noastre s-au adus
atribute de arhitectura in plus . (de asemenea are in vedere schema bloc functionala din
subcapitolul 3.1- vezi slide). In respectivul capitol avem in vedere 2 caracteristici
fundamentale:

a) 2 sau mai multe unitati cu functii distincte (putem lucra in paralele, deci poate viteza va
creste, dubla etc. : UE (prelucreaza operanzi dar nu interfateaza cu restul), UIM ;
b) existenta conceptului de „coada de instructiuni” : UIM ( rolul de a aduce din memorie
instructiunea, poate aduce chiar mai multe fiindca are o „coada de instructiuni” la dispozitie, care
trebuie sa fie mereu plina-->procesorul nu mai asteapta, viteza poate creste!) ; timpul nu scade din
cauza neuniformitatii instructiunii!

Fie un procesor CISC clasic conform capitolului 2. Are de efectuat o secventa


de instructiuni care constau in cicluri masina ca mai jos. Alegerea este intamplatoare.
Succesiunea de instructiuni din punct de vedere al ciclurilor masina este
intamplatoare. Sa vedem ce fac UE, UIM si BUS(magistrala):

80
Alex Mihăilă, 422B

*faza de prelucrare (in UE) - UIM in acelasi timp aduce urmatoarea instructiune si inca
una cat timp UE inca prelucreaza – alta faza de prelucrare facute de UE - UIM nu poate face
FETCH, deoarece in momentul in care instructiunea 1 s-a terminat, trebuie sa se scrie rezultatul in
memorie, apoi ia instructiunea urmatoarea , se termina faza de prelucrare 2, apoi avem nevoie de
ceva din memorie (citire) , se aduce apoi alta instructiune, alta faza de prelucrare etc.

Comentariu mai detaliat:


1. in timp ce instructiunea 1 realizeaza o prelucrare, UIM are timp sa aduca, succesiv,
codurile a doua noi instructiuni (se formeaza astfel coada de instructiuni);
2.ciclul masina de prelucrare aferent celei de-a doua instructiuni poate incepe dupa ce doul
instructiunii corespunzatoare a fost adus in UIM si „recunoscut” in UCP;
3.in timp ce UE rezolva prelucrarea aferenta instructiunii 2, UIM isi poate permite sa
intrerupa aducerea codurilor de instructiuni si sa se ocupe de inscrierea in memorie a
rezultatului obtinut in ciclul masina de prelucrare inclus in instructiunea 1 care in acest fel
este terminata;
4.UIM continua cu ciclul de FETCH pentru instructiunea 4 si apoi citeste din memorie
operandul necesar instructiunii 3. UE poate incepe imediat dupa acesta ciclul de prelucrare
aferent instructiunii 3;
5.in acest timp, UIM poate aduce din memorie codul instructiunii 5 si poate continua cu un
eventual ciclu masina de conversatie cu memoria aferent instructiunii 4.

Concluzii:
a) CISC, incepand cu generatia a 3-a, au noi atribute de arhitectura care permit
cresterea vitezei de executie in timp;
b) cresterea vitezei de executie nu este direct proportionala cu numarul de
unitati care lucreaza in paralel, din cauza neuniformitatii instructiunii (fiind
CISC); viteza nu e dubla! ; desfasurarea in timp permite suprapunerea
sistematica dar tot neuniforma a instructiunilor dintr-o secventa;
c) prin acest tip de functionare se atinge limita ocuparii magistralei de date
a microcalculatorului.

81
Alex Mihăilă, 422B

DESFASURAREA IN TIMP LA PROCESOARELE RISC


Desfasurarea in timp la RISC are urmatoarele premise: instructiunile sunt uniforme
in timp, toate dureaza acelasi numar de stari; acest lucru este posibil deoarece:
 prelucrarea operanzilor este realizata cablat;
 exista multe registre interne ceea ce permite accesarea memoriei in mult
mai putine ocazii;
 avem putine instructiuni, codificarea este simpla si rapida;
 avem putine moduri de adresare, ea este simpla si rapida;
 format identic ca numar de octeti pentru toate instructiunile si putine
tipuri de format;

Acestea duc la simplificarea unitatii de control care este cablata si nu


microprogramata. Toate aceste premise permit desfasurarea uniforma si rapida.
Uniformitatea permite aplicarea PIPELINE.

Desfasurare PIPELINE, fie cu 5 etaje, N=5 (pot fi si 7, 9 etc. stari), care inseamna ca
orice instructiune dureaza 5 stari! Semnificatia fiecareia e diferita, depind de tipul instructiunii!

Exemplu: fie o instructiune RISC cu 5 stari. N=5

 S1: FETCH
 S2: DECODE
 S3, S4, S5: depind de tipul de instructiuni, de 2 feluri:
- pentru instructiuni de prelucrari de date;
S3- citeste operand;
S4- prelucrarea;
S5- scrie rezultat.
- pentru instructiuni de accesare a memoriei de date si/sau de program (LOAD, STORE
si salturi); S3, S4, S5: accesarea memoriei.

82
Alex Mihăilă, 422B

n, n+1,n+2...timpul
s1,s2,s3... starile, 5 in numar
k-4,k-3...rezultatul

*in fiecare moment de timp avem cate un rezultat; fiecare instructiune dureaza o stare!
(CPI=1 – doar la RISC)

OBSERVATIE: salturile sunt o problema!


Fie o succesiune de instructiuni oarecare, RISC:

83
Alex Mihăilă, 422B

La n+4 avem rezultatul saltului ! La n+5 se executa instructiunea asupra careia se


efectueaza saltul !
Ideea : acest mod de desfasurare PIPELINE este corect, DAR rezultatul este gresit!
(restul instructiunilor in starea n+5 sunt rezultate gresite!)
*Corectarea: Dupa salt se introduc niste instructiuni : NOP (no operation) – instructiune
care nu modifica atributele de arhitectura ==>nu se intampla nimic, n-avem rezultate, iar
programul nu se strica! Timp de 4 stari, se poate observa in imaginea urmatoare, ca procesorul sta
degeaba:

84
Alex Mihăilă, 422B

Primul rezultat apare in n+9! Starile n+5, n+6, n+7, n+8 reprezinta intarzieri (CPI >1).

MEREU, cand ajungem cu orice tip de salt la starea de rezultat(ultima coloana),


completam in stanga randul doar cu NOP-uri (vezi n+4) ! E logic intrucat noi nu am executat inca
saltul ca sa poate prelua deja instructiunea la care sare!

85
Alex Mihăilă, 422B

Optimizarea întârzierilor pentru a preveni execuţia incorectă a salturilor

Reprezinta optimizarea de la 4 stari la 3 stari!


*primul rand: se aduna continutul lui r1 la continutul lui r2 si rezultatul se
depune in r3;
*al doilea rand: se face un sir logic intre continutul lui r5 si continutul lui r6 si
rezultatul se depune in r0;

Numarul de NOP-uri care trebuie adaugat depinde de structura benzii


rulante!

86
Alex Mihăilă, 422B

Intarzieri din cauza accesului in memorie


Varianta incomoda:
LOAD r1, mem
ADD r3, r2, r1 - continutul lui r1 nu e cel corect!

Varianta comoda:

87
Alex Mihăilă, 422B

LOAD r1, mem


NOP
NOP
...
NOP
ADD r3, r2, r1
La n+4 am adaugat 2 NOP-uri ca sa citim la timp operandul rezultat (r1), folosit
de urmatoarea instructiune ADD!

Numarul de instructiuni NOP depinde de:


a) structura benzii rulante;
b) numarul de stari necesare accesarii memoriei;

Intarzieri din cauza dependentei datelor de utilizarea


registrelor
ADD r1, r2, r7
AND r6, r1, r3

Varianta incomoda:

Varianta comoda:

ADD r1, r2, r7


NOP
NOP
AND r6, r1, r3

88
Alex Mihăilă, 422B

Concluzii:

1) procesoarele RISC au drept caracteristica principala desfasurarea in timp uniforma a


tuturor instructiunilor;
2) in aceste conditii, se poate asigura o executie de tip PIPELINE, cu n etaje, care sa
permita CPI=1;
3) exista instructiuni pentru care este necesara introducerea intarzierilor: CPI>1 in acest
conditii;
4) global vorbind, avem o suprapunere sistematica si uniforma a tuturor instructiunilor

Astfel, privind din ansamblu:


-o masina CISC clasica: suprapunere nesistematica si neuniforma a
instructiunilor intr-o secventa;
-CISC cu generatia 3 incolo: sistematica dar tot neuniforma;
-RISC: sistematica si uniforma.

Sfârșitul! (c-un numar nelimitat de linii rosii)

89
Alex Mihăilă, 422B

Tin sa multumesc colegei mele de serie, Georgiana Ranghiuc,


fara de care multe informatii din acest fisier n-ar fi fost prezente.

Nebunul ce a batut-o la cap:

(culoarea mea naturala a pielii dupa ce am terminat de scris acest


almanah ingineresc!)

Succes si voua!

90

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