Académique Documents
Professionnel Documents
Culture Documents
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
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:
FETCH-DECODE-EXECUTE !!!
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
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.
*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.
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);
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%.
*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
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).
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:
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!
exemplu:
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:
exemplu:
*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!
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:
- 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:
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
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)
DIV CX :
5. Return la apelul din programul principal (ultimele 2 randuri, paranteze drepte, pentru
intersegment, restul intrasegment):
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);
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.
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.
d) mai multe seturi de registre logice pentru multiprocesare (mai multe seturi de
registre fizice):
-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.
LOAD r, mem;
(mem) (r)
STORE mem, r;
, unde
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.
rn
, unde
rn
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
ri
)+(
rj
,(
ri
), (
rj
- 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:
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:
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.
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:
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).
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).
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;
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!).
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).
-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)
*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!
Avem 5 intreruperi software rezervate ! Primul kb il lasam neocupat fiindca vom avea
tabela de vectori !
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).
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!
*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.
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:
*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).
Varianta comoda:
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.