Documente Academic
Documente Profesional
Documente Cultură
A. Hardware:
Notiuni complementare:
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!
REPREZENTAREA INTERNA:
-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
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;
FETCH-DECODE-EXECUTE !!!
4
Alex Mihăilă, 422B
*Despre RD:
*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
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!
6
Alex Mihăilă, 422B
7
Alex Mihăilă, 422B
COMENTARIU:
8
Alex Mihăilă, 422B
9
Alex Mihăilă, 422B
Circuitul care va returna adresele succesive intr-o memorie organizata liniar este
numaratorul(PC). Numaratorul :
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!
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.
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).
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 ;
12
Alex Mihăilă, 422B
-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.
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
(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.
14
Alex Mihăilă, 422B
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
16
Alex Mihăilă, 422B
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!
-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!
-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
19
Alex Mihăilă, 422B
-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).
*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
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.
AS impune:
AE impune:
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
-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
Fetch CS nu IP
Operatii in stiva SS nu SP
Stocare variabile
(cu anumite data de modul de
exceptii) DS CS, SS, ES adresare
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:
-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:
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
*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;
exemplu:
25
Alex Mihăilă, 422B
Cel mai important mod de adresare pentru CISC ( la RISC acest mod nu prea
functioneaza):
-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!
exemplu:
26
Alex Mihăilă, 422B
exemplu:
27
Alex Mihăilă, 422B
exemplu:
exemplu:
28
Alex Mihăilă, 422B
exemplu:
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:
exemplu:
30
Alex Mihăilă, 422B
2 concluzii:
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
32
Alex Mihăilă, 422B
33
Alex Mihăilă, 422B
34
Alex Mihăilă, 422B
Tipuri de instructiuni
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
PUSH [BX] :
SP ← SP – 2
( (SS)↑0H + (SP)+1) ←( (DS)↑0H + (BX)+1)
( (SS)↑0H + (SP)) ←( (DS)↑0H + (BX))
37
Alex Mihăilă, 422B
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
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:
observatie: operatiile cu acumulator sunt tipice CISC, deoarece nu avem multe registre,
iar cele fara acumulator sunt tipice RISC!
Caracteristici:
-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 !
-nu orice combinatii de moduri de adresare, pentru sursa si destinatie, sunt posibile;
-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
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
CMPSB / CMPSW (compara un element dintr-un sir, cu un element din alt sir):
STOSB / STOSW
if (DF)=0 then
(DI)←DI+N
else
(DI)←DI-N
41
Alex Mihăilă, 422B
LODSB / LODSW
if (DF)=0 then
(SI)←SI+N
else
(SI)←SI-N
DIV CX :
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”;
43
Alex Mihăilă, 422B
exemple:
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
CARACTERISTICI DEFINITORII:
Setul de registre:
Registrele:
- 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.
-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.
47
Alex Mihăilă, 422B
d) mai multe seturi de registre logice pentru multiprocesare (mai multe seturi de
registre fizice):
48
Alex Mihăilă, 422B
-setul de lucru, de 32 de registre, este format din: 3 ferestre si registrele sale proprii.
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:
Dupa cum am stabilit, setul de instructiuni este mult simplificat (cel mult 128 de
instructiuni) si sunt „simple”. Avem urmatoarele tipuri de instructiuni RISC:
b) instructiuni aritemetico-logice:
50
Alex Mihăilă, 422B
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”.
1. In registru:
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 !
AF = (𝒓𝒏 )
- se acceseaza orice din harta memoriei;
- orice registru poae fi pointer;
- tipica RISC
AF = (𝐫𝐧 ) +adr
52
Alex Mihăilă, 422B
* Desfasurarea in spatiu:
- 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).
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:
CONCLUZII:
1. pentru diverse operatii de prelucrari de date se folosesc aceleasi componente
ale schemelor Block prezentate deja pentru un μP CISC;
54
Alex Mihăilă, 422B
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:
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:
56
Alex Mihăilă, 422B
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!
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 !
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 !
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.
58
Alex Mihăilă, 422B
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:
60
Alex Mihăilă, 422B
DEZAVANTAJE RISC:
3. UC realizata “cablat” este mai putin flexibila si mult mai greu de modificat.
61
Alex Mihăilă, 422B
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):
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:
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).
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.
63
Alex Mihăilă, 422B
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.
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!
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
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:
c) Intreruperi mascabile:
Nu toate microprocesoarele detin modulele de mai sus ( z80 e un exemplu care le detine pe
toate).
Daca „tip” are n biti, atunci avem 𝟐𝒏 vectori de intrerupere [octeti], deci 𝟐𝒏 rutine
potentiale de deservire a intreruperilor.
EXEMPLU:
68
Alex Mihăilă, 422B
cu
vector_de_întrerupere = ((I) ↑ tip ↑ 0 + 1) ↑ ((I) ↑ tip ↑ 0)
*unde [tip]- un numar ce poate fi dat in zecimal, intre 0 si 255 ; numarul venind de pe
magistrala de date!
*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
71
Alex Mihăilă, 422B
Avem 5 intreruperi software rezervate ! Primul kb il lasam neocupat fiindca vom avea tabela
de vectori !
*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.
72
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!
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!
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.
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 !).
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!
77
Alex Mihăilă, 422B
78
Alex Mihăilă, 422B
79
Alex Mihăilă, 422B
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!
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.
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
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!
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)
83
Alex Mihăilă, 422B
84
Alex Mihăilă, 422B
Primul rezultat apare in n+9! Starile n+5, n+6, n+7, n+8 reprezinta intarzieri (CPI >1).
85
Alex Mihăilă, 422B
86
Alex Mihăilă, 422B
Varianta comoda:
87
Alex Mihăilă, 422B
Varianta incomoda:
Varianta comoda:
88
Alex Mihăilă, 422B
Concluzii:
89
Alex Mihăilă, 422B
Succes si voua!
90