Sunteți pe pagina 1din 14

III.

Dezvoltarea funcional a
unui P pe 16 bii de uz general, CISC
:::3.1 Organizarea funcional a unui P 16 UG tipic:::

set registre
structura
coada

adresare
memorie

unitate de
control
numerator
program
diverse
functii

Funcii:
UE (unitate de execuie)
- prelucreaz operanzii;
- conine registrele generale i UAL (Unitate aritmetica logica);
- accept informaiile aferente instruciunilor deja aduse de ctre UIM;
- primete operanzii de la UIM;
- trimite rezultatele la UIM;
- conine unitatea de control a microprocesorului.

Curs preluat de la Domnul Profesor Corneliu Burileanu

UIM (unitatea de interfa cu magistrala)


- furnizeaz (calculeaz) adrese pentru instruciuni i date;
- aduce instruciuni din memoria de program i le stocheaz ntr-o coad; (deosebire de a
le atepta din memorieviteza de execuie mai mare)
- ntrerupe umplerea cozii de instruciuni cnd se impune aducerea operanzilor sau
trimiterea rezultatelor;
- realizeaz structurarea logic a memoriei (de exemplu: organizarea segmentat a
memoriei).
Observaii:
Unitatea de Interfa cu Magistrala este o generalizare a UCAM (care a aprut la P
pe 8 bii de uz general)
Operanzii sunt primii de ctre UE de la UIM i apoi rezultatele sunt trimise ctre
UIM.
CONCLUZIE:
Aceste uniti au funcii distincte, lucreaz n paralel i duc la creterea vitezei de
execuie.
Noile Atribute care apar la P pe 16 bii de uz general:
1. mai multe procesoare care lucreaz n paralel, cu funcii distincte.
2. coada de instruciuni o unitate se ocup cu realizarea unei cozi de instruciuni,
aducerea n P a unor instruciuni astfel nct dup execuia unei instruciuni, P
nu mai ateapt aducerea instruciunii urmtoare).
n momentul unui salt se golete stiva i se continu de acolo.
3. versatilitatea funciilor registrelor : registre multifuncionale
- multifuncional este opus dedicat
unde dedicat = funcie a registrului stabilit de fabricant care nu poate fi modificat
(acumulator, stiv)
- registrele multifuncionale au funcii
- implicit
- alternativ
4. unitate de calcul a adreselor
accesul n memorie se face calculnd adrese (pointeri)

Curs preluat de la Domnul Profesor Corneliu Burileanu

5. structurarea logic a memoriei


opional sunt P care realizeaz structuri logice de memorie
Se realizeaz alternative la organizarea liniar a memoriei organizare segmentat.

:::3.2 Structura registrelor:::


3.2.1 Microprocesoare Intel
AH
BH
CH
DH

AL
BL
CL
DL

**

SP
BP
SI
DI

***

IP
F

****

CS
SS
DS
ES

AX
BX
CX
DX

* Registre generale = stocare temporal a operanzilor i/sau rezultatelor


- toate sunt atribute de arhitectur;
- dimensiunile lor in de tipul de P;
- utilizabile i pe jumti (iar cele pe 32 pe sfert)
- multifuncionale

AX (Accumulator) (cu jumtile AH i AL)


-

acumulatorul implicit pe 16 bii, iar pe 8 bii AL i AH


pe 32 bii EAX

Curs preluat de la Domnul Profesor Corneliu Burileanu

-alternativ AX, AL, AEX pot fi registre normale de date

BX (Base) (cu jumtile BH i BL)


-

stocheaz o adres registru de tip index, conine adresa de baz

-alternativ BX acumulator pe 16 bii


BL, BH acumulatoare pe 8 bii
BX registru obinuit de date

CX (Contor) (cu jumtile CH i CL)


- funcie de numrtor numr elementele
- conine implicit numrul dintr-un set de date
- este implicit contor ntr-un ciclu cu contor
- alternativ ECX acumulator pe 32 bii
CL, CH acumulatoare sau registre obinuite de date pe 8 bii

DX (Data) (cu jumtile DH i DL)


-

implicit este registru de date


alternativ DX, DL, DH acumulatoare

** Registre indicatoare i index


- sunt atribute de arhitectur
- sunt toate multifuncionale
- toate pe 16 sau 32 bii
- nici unul accesibil pe buci !!!

SP (Stack Pointer) - Indicator de stiv


-

alternativ acumulator i registru de date

BP (Base Pointer) Indicatorul bazei n stiv


-

indicator de stiv (stive secundare, intrare secundar stiv primar)


alternativ acumulator i registru de date

SI (Source Index) Registru index, DI (Destination Index)


Registru destinaie
- registre index
- implicit conin adrese dou categorii de siruri: surs i destinaieadrese efective

Curs preluat de la Domnul Profesor Corneliu Burileanu

- alternativ acumulatoare i registre de date

*** Registre dedicate


IP (Instruction Pointer) Indicatorul de instruciuni
- indicator de instruciuni (numrtor de program numai ca el conine adresa efectiv i
nu adresa fizic a instruciunii curente)
- nu e atribut de arhitectur
- are 16 bii pentru procesoare de 16 bii i 32 pentru procesoarele de 32 bii.

F (Flags Register) - Registrul de fanioane

- este un registru virtual


care e alctuit din concatenare de bistabili, adic cu celule care conin
informaii
- e atribut de arhitectur
- numele registrului pe 16 bii este F i pe 32 bii este EF

Exist fanioane logico - aritmetice


C fanion transport
P fanion de paritate
A fanion de transport auxiliar (1 si 2 nibblearitmetica ZCB)
Z fanion de 0 (setat 1 de fiecare data cand rezultatul unei operantii e 1)
S fanion de semn, preia semnul rezultatului unei operatii aritmetice intre 2
intregi cu semn
O fanion de depasire
i fanioane generale stocheaz fenomene oarecare din P
D fanion de direcie si permite parcurgerea unui sir de date, numere n ordine
cresctoare sau descresctoare a adreselor elementelor sirului
I fanion de validare a unor intreruperi
Curs preluat de la Domnul Profesor Corneliu Burileanu

T fanion de capcana si foloseste pentru a propune procesorului functionarea pas


cu pas ( instructiune cu instructiune)
Toate microprocesoarele conin un numr de indicatori de stare (flags), grupai sub
forma unui registru special (F) asociat, de regul, unitii aritmetice si logice. Din punct
de vedere "hard", un indicator de stare este un circuit basculant bistabil independent iar
din punct de vedere "soft", este o variabil logic de supraveghere a unei stri (si numai
una), care ia valoarea 0 sau 1.
Fiecare indicator are o stare activ (de regul 1) si una pasiv (0). La initializarea
microprocesorului, toti indicatorii trec automat n starea pasiv; n timpul execuiei
programului un indicator basculeaz n starea activ cnd se produce evenimentul
specific sarcinii sale. Valoarea logic a fiecrui indicator poate fi testat direct sau
indirect, prin intermediul instruciunilor. De regul, n funcie de valoarea unui indicator
de stare se ia o decizie cu privire la modul n care se vor desfura prelucrrile urmtoare.
Valorile logice ale indicatorilor de stare formeaz "cuvntul de stare" al
microprocesorului, care are ca sediul n "registrul de stare"; acesta avnd diferite
denumiri date de proiectanii de microprocesoare:
- Registrul cuvntului de stare;
- Registrul de condiii - CR (Condition Register);
- Cuvntul de stare al programului - PSW (Program Status Word);
- Registrul de control - CR (Control Register);
- Registrul F (Flags);
Indicatorii de stare prezeni la microprocesoarele de 8 bii, preluai ulterior si de
microprocesoarele evoluate, alturi de noi indicatori sunt:
1. Indicatorul de zero Z (Zero): testeaz dac rezultatul unei operaii aritmetice este
nul (Z=1 dac rezultatul este 000...0);
2. Indicatorul de transport C (Carry): marcheaz apariia unui bit de transport
(depirea lungimii normale a rezultatului) la adunare sau de mprumut la scdere;
3. Indicator de semn S (Sign): arat semnul rezultatului unei operaii efectuate ntre
operanzi cu semn ( S=0 pentru "+" si S=1 pentru "-" );
4. Indicatorul de depire a capacitii O (Overflow): semnalizeaz valorile interzise
ale rezultatului n cazul operaiilor n complement fa de 2;
5. Indicator de transport la jumtate AC ( Auxiliary Carry): marcheaz apariia unui
bit de transport intermediar (ntre doi digii compactai); este util cnd se lucreaz n cod
BCD;
6. Indicator de paritate P (Parity): arat dac numrul cifrelor binare "1" dintr-un
cuvnt este par (P=1) sau impar (P=0).
7. Indicatorul de funcionare "pas cu pas" sau capcan T (Trap): intervine n
cazul rulrii pas cu pas a programului, pentru depanare;
8. Indicatorul de ntreruperi I (Interrupt): autorizeaz sau interzice tratarea
ntreruperilor mascabile;

Curs preluat de la Domnul Profesor Corneliu Burileanu

9. Indicatorul nivelului de privilegiu I/O ( Privilege Level): stabilete nivelul de


protecie al unui program i drepturile de acces la memorie;
10. Indicatorul de direcie D (Direction): valideaz sensul de examinare (prin
incrementarea sau prin decrementarea adresei) pentru un sir de operanzi din memorie.
1. Indicatorul Z (Zero)
El supravegheaz rezultatul unei operaii aritmetice sau logice: are starea pasiv
"0" i se poziioneaz automat n "1" cnd rezultatul ultimei operaii aritmetice este nul (0
0 0 . . . 0). Este de remarcat c nu coninutul unui registru poziioneaz indicatorul Z, ci
numai rezultatul unei operaii aritmetice (dac se ncarc n acumulator, de exemplu, un
numr nul, indicatorul Z nu comut n "1", pentru c operaia de transfer nu este
aritmetic sau logic).
Una din aplicaiile tipice ale indicatorului Z este supravegherea unui registru
numrtor, care este decrementat la fiecare operaie elementar executat; cnd
numrtorul ajunge la 000. . . 0, procesul trebuie oprit, deoarece s-au executat toate
operaiile programate.
Pentru stabilirea momentului opririi, se testeaz dup fiecare etap indicatorul Z ;
dac este ''0'', se continu procesul repetitiv, iar dac este ''1'', procesul trebuie oprit.
Observaie: n mod natural, o incrementare (se adun 1) sau o decrementare (se scade 1)
sunt operaii aritmetice; la unele microprocesoare ns aceste operaii nu afecteaz
indicatorul Zero.
2. Indicatorul de transport C (Carry)
Atunci cnd se execut o adunare, este posibil s rezulte un transport spre rangul
uperior, care depete dimensiunea registrului ce conine rezultatul. Bitul de transport nu
se pierde, deoarece el va poziiona n ''1'' un indicator, cel de transport C. n mod
asemntor, la scdere apare necesitatea unui mprumut la rangul superior, care
poziioneaz n ''1'' logic indicatorul C.
Rezultatul corect al unei adunri sau scderi include ntotdeauna i indicatorul
Carry.
Indicatorul Carry este strict necesar cnd se efectueaz operaii de adunare sau
scdere ntre numere reprezentate pe mai muli octei dect permite unitatea aritmetic. n
aceste cazuri, operaia se efectueaz octet cu octet (sau cuvnt cu cuvnt) i se include n
operaie valoarea precedent a lui Carry.
Pentru operaiile de adunare i scdere, n setul de instruciuni al
microprocesoarelor exist cte dou variante de instruciuni (exemplele sunt de la Intel
8086):
- Adunare simpl (ADD), fr a fi luat n consideraie transportul (Carry);
- Adunare cu Carry (ADC), n care, la suma a doi operanzi se adun i valoarea
curent a lui Carry (bitul de transport, 0 sau 1);
- Scdere simpl (SUB), fr a fi luat n consideraie Carry;
- Scdere cu mprumut (SBB), n care, din rezultatul scderii se scade i valoarea
curent a lui Carry (bitul de mprumut, 0 sau 1).
Curs preluat de la Domnul Profesor Corneliu Burileanu

3. Indicatorul de semn S (Sign)


Intervine n operaiile aritmetice ntre numere cu semn. Conform conveniei, se
utilizeaz ''0'' pentru semnul plus i ''1'' pentru semnul minus, bitul de semn fiind cel de
pe poziia cea mai semnificativ (stnga).
Indicatorul Sign este copia valorii bitului de semn al rezultatului unei operaii
aritmetice (bitul 7, la octei sau bitul 15 la cuvinte de 16 bii). Dac se lucreaz cu
operanzi fr bit de semn, indicatorul Sign va fi egal totui cu bitul cel mai semnificativ
al rezultatului, deoarece ''el nu tie'' dac programatorul consider operanzii cu sau fr
semn.
Pentru a testa dac un numr este pozitiv sau negativ, se examineaz indicatorul S,
dup o operaie care nu schimb valoarea numrului (de exemplu adunare cu 0).
4. Indicatorul de depire (Overflow)
Cnd se execut operaii aritmetice ntre operanzi cu semn, este posibil s apar bit
de transport ctre bitul de semn, ceea ce face ca rezultatul s fie eronat. Indicatorul de
depire supravegheaz transportul de la bitul 6 ctre 7 (sau 14 ctre 15, etc.) sau
generarea unui transport la bitul 7, 15, 31, etc.
n cazul operanzilor cu semn, n reprezentarea pe 8 bii, domeniul valorilor este
-128 . . +127. Dac rezultatul unei operaii aritmetice nu se ncadreaz n acest domeniu,
el este eronat, iar indicatorul de depire se poziioneaz n ''1''. n cazul reprezentrii pe
16, 32, 64 de bii, domeniul este mai larg, dar de asemenea limitat, iar indicatorul de
depire are acelai rol.
Numerele negative se reprezint intern n complement fa de 2, astfel nct o
scdere este nlocuit prin adunarea cu complementul.
5. Indicatorul de transport la jumtate AC (Auxiliary Carry)
n cod BCD (zecimal codat binar), cifrele 0, 1, . . . , 9 se codific pe 4 bii de la
0000 la 1001. Cnd se execut operaii n BCD, pot interveni erori dac apare transport
sau mprumut ntre rangurile zecimale.
Indicatorul AC memoreaz bitul de transport de la rangul 3 la rangul 4, n vederea
corectrii rezultatului dup o operaie aritmetic n cod BCD.
n cazul operaiilor aritmetice n BCD pot s apar 3 categorii de erori:
- depirea domeniului 0, . . . , 9, care se manifest prin coduri pe 4 bii inexistente
n BCD: 1010, 1011, 1100, 1101, 1110, 1111;
- transport ctre rangul 8, memorat de Carry;
- transport ctre rangul 4, memorat de Auxiliary Carry.
Toate aceste erori sunt previzibile i corectabile, deoarece orice microprocesor
execut operaiile aritmetice numai n binar natural.
Corecia rezultatului se face prin introducerea n program a unor instruciuni
specifice de corecie, dup fiecare operaie aritmetic ce se execut cu operanzi exprimai
n BCD.

Curs preluat de la Domnul Profesor Corneliu Burileanu

La microprocesoarele Intel, instruciunile de corecie sunt: DAA (Decimal Adjust


for Addition) i DAS (Decimal Adjust for Substraction).
6. Indicatorul de ntrerupere (I - Interrupt)
O ntrerupere este un eveniment care perturb temporar activitatea
microprocesorului, pentru tratarea prioritar urgent a unui subprogram.
Cnd un eveniment extern solicit procesorului o ntrerupere, acesta examineaz
indicatorul de ntreruperi pentru a ti dac acestea sunt autorizate de program. Aadar,
programul este cel care n anumite perioade comut indicatorul, n scop de autorizare sau
interzicere a cererilor de ntrerupere, de exemplu:
- n ''0'' logic pentru autorizarea ntreruperilor;
- n ''1'' logic pentru interzicerea temporar a ntreruperilor.
7. Indicatorul de ''pas cu pas'' (T - Trap)
La construirea unui program complex, este foarte probabil ca el s conin erori de
concepie (cele de sintax sunt detectate automat de ctre compilatoare sau interpretoare).
Aceste erori duc la o comportare bizar a programului sau chiar nefuncionare. Pentru a
detecta erorile de acest tip, o metod eficient este rularea instruciune cu instruciune, cu
posibilitatea analizrii operaiilor ce se execut, ''pas cu pas'', fr limit de timp. Pentru
ca procesorul s execute o instruciune i apoi ''stop'', pentru a permite analiza efectelor,
s-a introdus indicatorul Trap (T) sau Step, sau Single Step. Dac el este activ (''1''),
microprocesorul, care l consult permanent, se oprete dup fiecare instruciune
executat. Dac el este inactiv (''0''), microprocesorul ruleaz normal, la viteza dat de
frecvena de tact (zeci sau sute MHz).
8. Indicatorul de direcie (D - Direction)
Cnd se transfer blocuri lungi de date dintr-o zon de memorie n alta, transferul se
poate face prin incrementarea adreselor surs i destinaie sau prin decrementarea
acestora. Dac D=0, adresele vor fi modificate prin incrementare, iar dac D=1, adresele
vor fi decrementate dup fiecare transfer de octet.

**** Registre segment


- dedicate, ele conin nite entiti numite adrese segment.
- ele folosesc pentru realizarea n memoria P a unor diviziuni logice numite segmente.
- aceast segmentare este o alternativ la organizarea liniar.
- toate sunt atribute de arhitectur.

Curs preluat de la Domnul Profesor Corneliu Burileanu

Registrele segment sunt urmtoarele:


- CS (Cod Segment) - segment de cod
- DS (Data Segment) - segment de date
- SS (Stack Segment) segment de stiv
- ES (Extended Segment) - segment de date suplimentar
Sunt registre de 16 bii care conin adresa de baz a unui segment de memorie.
Memoria direct adresabil de 1 MB necesit o magistral de adrese de 20 bii.
Registrele interne ale procesorului fiind de 16 bii, memoria este divizat din punct
de vedere logic n segmente de 64 KB, fiecare segment fiind astfel adresabil cu 16
bii. Procesorul poate s utilizeze simultan attea segmente de memorie cte
registre de segment posed.
Adresele de nceput (de baz) ale celor 4 segmente sunt coninute n cele 4 registre
de segment (Cod, Date, Stiv i de Date suplimentar).
Registrul CS conine adresa de nceput a segmentului de cod unde se afl codurile
instruciunilor.
Pentru a adresa o instruciune, microprocesorul combin coninutul registrului
segment de cod CS cu al registrului indicator de adres, IP, obinnd o adres
fizic de 20 bii.
Registrul DS conine adresa de nceput a segmentului de date, registrul SS
conine adresa de nceput a segmentului stiv, iar registrul ES conine adresa de
nceput a unui segment de date suplimentar. Segmentul de cod conine
instruciuni, iar ultimele trei segmente de memorie sunt dedicate operanzilor
(datelor).

Caracteristicile seturilor de registre CISC


1. Numr de registre
P CISC numr mic de registre (8 registre Intel)
2. dimensiunea registrelor
- dimensiunea operanzilor de lucru
16 bii pe P de 16
32 bii pe P de 16
3. majoritatea registrelor sunt multifuncionale
funcii implicite/alternative:
a) acumulatoare
b) registre de date
c) registre index
d) indicator de stiva
e) numrtor

Curs preluat de la Domnul Profesor Corneliu Burileanu

4. registrele folosesc pentru


i. realizarea mai multor stive
ii. realizarea mai multor tablouri
5. registrele folosesc pentru realizarea unor mecanisme superioare
La microprocesoarele Intel structurarea segmentat
(registre segment).

memoriei

:::3.3 Organizarea memoriei calculatorului:::

1. dimensiunile hrii memoriei ce memorie poate s acceseze memoria fizica


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

Microprocesoarele Intel n modul real


1. harta memoriei dat de
megalocatii.

dimensiunea adresei fizice care are 20 bii, adica 1

2. formatul memoriei octetul


3. informaii stocate pe octei succesivi care se acceseaz conform conveniei micului
indian (informaia cea mai puin semnificativa este pe adresa cea mai mica)
4. mi ofer alternativa
organizarea segmentata a memoriei
Intel x86 realizeaza in memoria fizica nite subdiviziuni logice numite segmente
Exista doua tipuri de organizare:
organizare liniar
- adresa fizica : AF

Curs preluat de la Domnul Profesor Corneliu Burileanu

organizare segmentat
adresa logica AL = adr32 compusa din:
adresa segment AS = adr16
adresa efectiva AE = adr16

adresa logic este atribut de arhitectur

ori de cte ori se face referina, utilizatorul indic adresa efectiv i adresa
segment; pentru adresare se folosete adresa fizic care este calculata pornind de la
adresa logic translatarea adresei logice

adresa fizica a bazei unui segment se face nmulind cu 16 baza AS, iar apoi n
interiorul segmentului poziionarea se face adunnd AE la el

ultima e formula de translatare din adresa logica in cea fizica

Observaii:
1. prima deosebire in organizarea liniara si cea segmentata este ca in cazul
organizrii liniara adresa fizica este atribut de arhitectura in schimb in cea segmentata nu
este atribut de arhitectura.
2. adresarea segmentata. poziionarea segmentului in memorie si apoi adresare
liniara in segment.

Curs preluat de la Domnul Profesor Corneliu Burileanu

se pierd 12 bii, dar ei se regsesc n organizarea virtual n memorie

adresa segment se afla n registru segment

adresa efectiv ( nu fizic !)

AS impune:
1. numrul se segmente realizabile simultan
cate registre segment am attea segmente pot sa realizez
2. tipurile de segmente
Intel mi impune ca in funcie de registrul segment sa folosesc in memorie
segmente cu o funcie stabilita in memorie
- segment curent de program (CS)
- segment curent stiva principala (SS)
- segment de date (DS)
- segment suplimentar de date (ES, FS, GS)
3. contribuie la stabilirea poziiei absolute a segmentelor
utilizata pentru stabilirea poziiei absolute in memoria fizica a segmentului (adrese
fizice multiple de 16)
4. pozitia relativa a segmentelor
poziiile relative ale segmentelor sunt la latitudinea utilizatorului
segmentele pot si suprapuse
a) total
b) parial
c) deloc
AE impune:
- dimensiunea segmentelor

Curs preluat de la Domnul Profesor Corneliu Burileanu

::::Redefinirea utilizrii unui segment :::


se face prin redirecionare

Observaii:
1. redirecionarea segmentelor utilizarea unor segmente pentru alte informaii
stabilite implicit de fabricant
2. redirecionarea nseamn c segmentele n memorie pot avea funcii implicite i
alternative
3. redirecionarea segmentelor este restricionata
4. redirecionarea se face n mod explicit in program cu un prefix de redirecionare (care
reprezinta un mnemonic n asembler)
-

segmentul de program poate fi dedicat sau multifuncional

suprapunerea segmentelor
- utilizarea fr restricii
programe relocabile dinamic
care folosesc toate informaiile intr-un singur segment, nu depesc
graniele segmentului.

Curs preluat de la Domnul Profesor Corneliu Burileanu