Capitolul 3 AMP

14
Curs preluat de la Domnul Profesor Corneliu Burileanu III. Dezvoltarea funcţională a unui µP pe 16 biţi de uz general, CISC …:::3.1 Organizarea funcţională a unui µP 16 UG tipic:::… Funcţii: UE (unitate de execuţie) - prelucrează operanzii; - conţine registrele generale şi UAL (Unitate aritmetica logica); - acceptă informaţiile aferente instrucţiunilor deja aduse de către UIM; - primeşte operanzii de la UIM; - trimite rezultatele la UIM; - conţine unitatea de control a microprocesorului. adresare memorie numerator program diverse functii unitate de control set registre structura coada

description

Fisier curs POLITEHNICA

Transcript of Capitolul 3 AMP

  • Curs preluat de la Domnul Profesor Corneliu Burileanu

    III. Dezvoltarea funcional a unui P pe 16 bii de uz general, CISC

    :::3.1 Organizarea funcional a unui P 16 UG tipic:::

    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.

    adresare

    memorie

    numerator

    program diverse

    functii

    unitate de

    control

    set registre

    structura

    coada

  • 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

    *

    **

    ***

    ****

    * 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

    AH AL AX

    BH BL BX

    CH CL CX

    DH DL DX

    SP

    BP

    SI

    DI

    IP

    F

    CS

    SS

    DS

    ES

  • 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 a memoriei

    (registre segment).

    :::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 dimensiunea adresei fizice care are 20 bii, adica 1 megalocatii.

    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.