Sunteți pe pagina 1din 78

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 internaharta 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;
-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
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
saricna 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 arhitecturastructura.

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
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 numrului este reprezentat de msb cu urmtoarea convenie:


-msb = 0 semnific numr pozitiv;
-msb = 1 semnific numr negativ.
Pentru un numr fr semn cu 8 bii, plaja numerelor reprezentabile acoper 256
de poziii, intre 0 i 255, in zecimal.
Pentru un numr cu semn, plaja numerelor reprezentabile acoper tot 256 de
poziii, dar in intervalul -128 +127, presupunand 0 numr pozitiv.
-intregi, cu semn :
-marime si semn;
-complement fata de 1;
-complement fata de 2; --- toate procesoarele folosesc complementul fata de 2!
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.

BONUS DE LA PROF !!!!!!!


Scheme bloc functionale, Circuite combinationale, Circuitele secventiale, Conventii
pentru notatiiexplicit in caiet!!!

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 !!!

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 de 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 date;
-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!
Observatie: nu exista nicio legatura intre cele 2 registre, RA si RD; marimile lor, de asemenea,
sunt complet diferite.

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= 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 midd=dimensiunea magistralei
de date externe, dar nu mereu!
exemplu: putem avea 32 biti pe externa, dar pe interna 256 biti!

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!
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 stangadreapta. Este un registru fizic, nu e atribut de arhitectura, iar lungimea, de regula, e data de
operanzii din zona de lucru.

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 .
a)Furnizarea de adrese se poate face in 2 feluri:
-instructiune dupa instructiune;
-prin secvente, salturi, cicluri etc;
b)Preluarea informatiei:
-accesarea de date elementare;
-date structurate temporale (stiva, coada);
-date structurate spatial(tablouri).

Procesorul organizeaza 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;
-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 de instructiune.
1 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 actualizeaza in orice moment varful

stivei, actualizarea indicatorului se face detectand adresa fizica a varfului


stivei!
Stiva 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 pentru transferuri de date( ce implica 2 membri:sursa si destinatie),
*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;
*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)

Functia 2c) 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 muxuri 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
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);
*Microprocesorul calculeaza adresa unui element dintr-un tablou de date.

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!
Dimensiunea lor depinde de dimensiunile uzuale ale operanzilor; nu e atribut de arhitectura,
este registru fizic!
Decodorul este un circuit complex.
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;
-formatul memoriei este octetul;
-exista un registru de date, unde are 8 biti;
-exista un registru de adrese, unde are 16 biti;
-exista un numarator de program care are 16 biti
-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, este citit, este inscrisa in RD,
disponibila 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.

*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.

obs:
-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);

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 acea 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);
c)versatilitatea functiilor registrelor:
-dedicate (functie a registrului stabilita
de fabricant, astfel nu poate fi
modificata acumulator,stiva etc.)
-multifunctionale (cu functii implicite,
oferite de fabricant, si alternative)
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 :
-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 :
- 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;
- 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 att o utilizare
implicit sugerat de fabricant, ct 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!
*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 acesa in 2:
-DL: pe 8 biti;
-DH: pe 8 biti;
alternativ: DL, 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 ua secundara;
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 segmente
(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.

*Reg
istrel
e

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
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, fiindca vom lucra cu adrese logice , pe 32 biti, si
compuse din 2 parti (efectiva AE si segment AS)
*Microprocesorul are org. segmentata cu 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:

-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.
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)

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!

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.
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)

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

Cel mai imp 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:

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


instructiunii instrutiunii 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.
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.
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.
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!

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.
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.
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:

*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!

Tehnici de adresare pentru Intel 8086:

E posibila redirectionarea segmentelor: :

Adresare indirecta+Adresare directa prin registru:

Adresare indirecta prin registre+Adresare cu preindexare:

2 adresari indirecte prin registre:

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 membri, 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.
Exemple:

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

- 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) (d ) (s)
- fara acumulator: (d) (s 1) (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
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.

Alte primitive:
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
exemple de instructiuni logice:

-IMUL inmultirea cu semn!

DIV CX :

Observatie: si multe alte instructiuni intr-un pdf separat!

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;
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):

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

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;
- 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
(la

sir de registre, fiecare identificat dupa numarul sau de ordine r0, r1, r2 etc.
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.

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 dea 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):

- 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:

- 8 seturi de lucru : putem avea 8 programe care se pot apela unele pe altele;
- 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
(r) (mem)

LOAD r, mem;

(mem) (r)

STORE mem, r;

- accesul in memorie se face DOAR cu aceste instructiuni;


- r si mem trebuie sa aiba aceeasi dimensiune.
b) instructiuni aritemetico-logice:
(d) (s 1) (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!
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 =

rn

, unde

rn

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:
r

AF = ( n )
- 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 = (

rn

) +adr

6. Relativa la baza, cu registru index:


AF = (

ri

)+(

rj

,(

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;
DE REMARCAT: Orice registru poate fi baza si oricare registru poate fi index!

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.

* 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.

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.

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.

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 .

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, inseamana 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!

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).

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).

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
OUT

d, port;
port, s ;

(d) (port)
(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.
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;

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).
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 .

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!).

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!

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;


Algortimul 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;
-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).
-dimensiunea vectorului de intrerupere (numarul de octeti al adresei complete) : m bytes

-cat de mare e codul in biti? dimensiunea informatiei(tip) ; daca acest cod este pe n biti
atunci marimea tabelei de vectori este m*2^n octeti (bytes)!

- localizarea tabelei in harta memoriei; avem doua categorii de microprocesoare din punct
de vedere al pozitiei in tabela cu vectori de intrerupere :
microprocesoare care spun unde se afla tabela;
micrprocesoare ce pot sa foloseasca anumite zone.
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.

cu

vector_de_ntrerupere = ((I)
tip 0)

tip

0 + 1)

((I)

-vectorul de intrerupere are 2 octeti;


-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;


- 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, hardware (foloseste
aceeasi tabela cu vectori de intrerupere ) !

*unde [tip]- un numar ce poate fi dat in zecimal, intre 0 si 255 ; numarul venind de pe magistrala
de date!
- al doilea rand==>salveaz 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 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), calculata sau implicita daca acest numar
nu exista in formatul instructiunii!
obs: INT corespunde vectorului de tip 3!
*alte intreruperi software :
*INTO (interact if overflow) : dedicata situatiei cand tin seama de depasirea unei operatii
aritmetice.
aceasta intrerupere corespunde vetorului de tip 4!

*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!

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).

- 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) ;
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).

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).

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).

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

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)

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


asteptam sa folosim o instructiune cu 3 octeti

M1, M2, M3 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).

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 .

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):

*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.
Concluzii:
1) CISC, incepand cu generatia a 3-a, au noi atribute de arhitectura care permit
cresterea vitezei de executie in timp;
2) 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;
3) prin acest tip de functionare se atinge limita ocuparii magistralei de date
a microcalculatorului.

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), 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.

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:

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:

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

Optimizarea ntrzierilor pentru a preveni execuia 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!

Intarzieri din cauza accesului in memorie


Varianta incomoda:

LOAD r1, mem


ADD r3, r2, r1 - continutul lui r1 nu e cel corect!

Varianta comoda:

LOAD r1, mem


NOP
NOP
...
NOP
ADD r3, r2, r1

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
AND

r1, r2, r7
r6, r1, r3

Varianta incomoda:

Varianta comoda:

ADD
NOP
NOP
AND

r1, r2, r7
r6, r1, r3

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.