Asc Fragment 10dec2014

Embed Size (px)

DESCRIPTION

Arhitectura sistemelor de calcul

Citation preview

  • 7/18/2019 Asc Fragment 10dec2014

    1/84

    Arhitectura sistemelor de calculFragment curs

    Dragulici Dumitru Daniel

    Facultatea de matematica si informatica,

    Universitatea Bucuresti

    2014

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    2/84

    Multiplexor

    Multiplexor:

    Unmultiplexor (multiplexer) cu selector pe n bitiMUXn, n1, este uncomutator de tip many into one, care care poate conecta o intrare selectabilaprintr-un cod numeric la o iesire unica.

    Simbol:

    El primeste ca intrare: un sistem de valori xn1, . . . , x0, numit selector, care este reprezentarea n

    calculator a unui numar natural k {0, 2n 1} ca ntreg fara semn; un sistem de valori oarecare i0, . . . , i2n1;

    si furnizeaza ca iesire: ik.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    3/84

    Multiplexor

    Constructie:

    Decodificatorul transforma selectorul k= (xn1, . . . , x0) n sistemul de iesiri0, . . . , 0, 1, 0, . . . , 0, unde 1 este pe pozitiak; aceste iesiri sunt conjugate curespectiv intrarile i0, . . . , i2n1, rezultand sistemul de valori 0, . . . , 0, ik, 0, . . . , 0,unde ikeste pe pozitiak; aceste valori intra ntr-o poarta OR, careefectueaza 0 + +ik+ + 0, rezultand n final ik.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    4/84

    Multiplexor

    Pentru n= 1 obtinemmultiplexorul elementar (elementary multiplexer),

    EMUX; variante de simbolizare (n primul caz subntelegem ca intrareacorespunzatoare selectorului s= 0 este n stanga):

    Constructie:

    http://goforward/http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    5/84

    Multiplexor

    De asemenea, vom folosi si MUX2, pentru care avem si simbolizarea:

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    6/84

    Multiplexor

    Multiplexorul este si el un circuit universal, deoarece putem implementa orice

    funtie booleana scalara cu un multiplexor.Exemplu: Implementati functia booleana urmatoare cu un multiplexor:

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    7/84

    Multiplexor

    Intuitiv, fiecare sistem de valori ale variabilelor x, y, z, care este reprezentareaunui numar natural 0 k7, selecteaza: din tabel, valoarea lui f din linia k; cu muliplexorul, intrarea ikde sus.Asadar, multiplexorul implementeaza pe f daca plasam coloana valorilor lui fca sistem de intrari i0, . . . , i7; ntrucat sistemul de valori 0, 0, 0 ale variabilelorselecteaza valoarea din linia de sus a tabelului si intrarea idin stanga amultiplexorului, coloana valorilor lui f trebuie plasata orizontal, cu partea desus spre stanga; notam ca variabila cea mai semnificativa, x, a fost desenata,

    conform conventiilor adoptate, n tabel n stanga si la multiplexor jos.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    8/84

    Multiplexor

    O functie booleana vectoriala f :B2n B2

    k, k>1, poate fi implemetataprintr-un sistem de k multiplexoare MUXn, fiecare calculand cate una dincomponentele functiei, f1, . . . , fk; liniile corespunzatoare variabilelor lui f intrasimultan ca selector n toate multiplexoarele, iar acestea au ca sisteme deintrari icoloanele de valori ale componentelor lui f pe care le calculeaza:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    9/84

    Multiplexor

    MUXn admite si o constructie recursiva; mai exact:

    se poate construi ca:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    10/84

    Multiplexor

    In interiorul dreptunghiurilor am notat intrarile/iesirile proprii alemultiplexoarelor (parametrii formali), iar langa dreptunghiuri am notat liniileconectate la ele (parametri actuali).

    De exemplu, intrarea i2n1 a lui MUXn este conectata la intrarea i0 a luiMUXn1 din dreapta.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    11/84

    Multiplexor

    Echivalenta celor doua circuite este usor de nteles daca facem o comparatie cu

    tablul de valori al functiei implementate; vom ilustra pentru functia dinexemplul anterior, presupunand ca (x, y, z) = (0, 1, 0):

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    12/84

    Multiplexor

    Iesirea ya lui MUX3 este valoarea finala a lui f; dupa valoarea variabilei celeimai semnificative, x, ea este aleasa din prima sau a doua jumatate a tabelului,respectiv din ceea ce furnizeaza primul sau al doilea MUX2; ntrucat x= 0, sealege din prima jumatate a tebelului, respectiv ce furnizeaza MUX2 din stanga.

    Sistemul valorilor celor mai putin semnificative variabile, (y, z), apare de douaori n tabel, o data n prima jumatate, o data n a doua jumatate, si n fiecarecaz selecteaza valoarea lui f de pe o linie aflata la aceeasi distanta d fata denceputul jumatatii; corepunzator, sistemul (y, z) intra ca selector n ambeleMUX2 si n fiecare caz selecteaza intrarea icu acelasi indice d; ntrucat(y, z) = (1, 0), se alege din fiecare jumatate a tabelului valoarea lui f din linia

    2 (numarand de la 0) si de la fiecare MUX2 intrarea i2 (d= 2 = 102).Intrucat variabila cea mai semnificativa este x= 0, prima dintre cele douavalori, adica 0, este emisa ca valoare finala.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    13/84

    Multiplexor

    Proprietatea algebrica pe care se bazeaza constructia recursiva de mai sus esteteorema care da o descriere recursiva a unei funct ii booleene scalare cu nvariabile prin doua functii booleene scalare cu n 1 variabile:

    xn1, . . . , x0 B2,f(xn1, . . . , x0) =xn1f(0, xn2, . . . , x0) +xn1f(1, xn2, . . . , x0)

    MUXn construit recursiv implementeaza f : B2n B2;

    MUXn1 din stanga (a carui iesire este selectata de EMUX pentru xn1 = 0)implementeaza f0 : B2

    n1 B2, f0(xn2, . . . , x0) =f(0, xn2, . . . , x0);MUXn1 din dreapta (a carui iesire este selectata de EMUX pentru xn1 = 1)

    implementeaza f

    1 :B

    2

    n1

    B

    2, f

    1(xn

    2, . . . ,x

    0) =f

    (1,xn

    2, . . . ,x

    0).Formula de recursie din teorema este functia implementata de un EMUX:EMUX(s, a, b) =s a+sb.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    14/84

    Multiplexor

    Observatie: Si alte circuite 0 DS, ca de exemplu DCDn sau DMUXn, admito constructie recursiva (exercitiu).

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    15/84

    Multiplexor

    Putem continua constructia recursiva a lui MUXn de mai devreme, exprimandfiecare MUXn1 prin cate doua MUXn2 si un EMUX, s.a.m.d., pana obinemun circuit, asemanator unui arbore, alcatuit doar din EMUX-uri.

    Astfel, ntrucat orice functie booleana scalara se poate implementa cu unmultiplexor iar orice multiplexor se poate nlocui cu un arbore de EMUX-uri,rezulta ca orice functie booleana scalara se poate implementa cu un circuitalcatuit doar din EMUX-uri.Deci, si EMUXeste circuit universal.

    Observatie: Alte circuite universale sunt NAND si NOR(putem implementa

    orice functie booleana folosind doar NAND-uri sau doar NOR-uri) - exercitiu.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    16/84

    Multiplexor

    Exemplu: Functia din exemplul precedent se poate implementa cu EMUX-uri

    astfel:

    Daca pastram conventiile anterioare privind pozitia intrarilor si iesirilor pedesenul EMUX-urilor, nu mai este nevoie sa notam aceste intrari si iesiri.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    17/84

    Multiplexor

    O functie booleana vectoriala f :B2n B2

    k, k>1, poate fi implemetata

    printr-un sistem de karbori de EMUX-uri, fiecare calculand cate una dincomponentele functiei, f1, . . . , fk; fiecare linie corespunzatoare unei variabile alui f intra ca selector n EMUX-urile de pe un acelasi rand n toti arborii, iaracestia au ca sisteme de intrari icoloanele de valori ale componentelor lui f pecare le calculeaza:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    18/84

    Multiplexor

    Numarul EMUX-urilor prin care se implementeaza o functie booleana poate firedus, daca observam ca:

    Astfel, daca acceptam si prezenta portilor NOT, EMUX-urile aflate pe

    primul rand al arborilor dispar, iar uneori dispar si EMUX-uri de pe randurileurmatoare.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    19/84

    MultiplexorExemplu: Reduceti la maxim numarul de EMUX prin care se implementeazafunctia fdin exemplele anterioare:

    Desenul care pastreaza doar EMUX-urile ramase este:

    Sfat: Desenul circuitului redus este bine sa fie realizat de jos n sus, deoarece

    avem o perspectiva mai clara care linii trebuie sterse sau redirectionate.

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    20/84

    Observatie:

    In notatiile si simbolizarile grafice folosite pana acum, daca dam nume indexatevariabilelor, intrarilor, iesirilor, nu mai este nevoie sa respectam o anumitaordine de scriere/desenare a acestora. De exemplu, n cazul unui MUX3, vomsti ca intrarea i3 corespunde valorii selectorului x2 = 0, x1 = 1, x0 = 1,

    indiferent unde sunt scrise/desenate aceste linii:

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    21/84

    Daca folosim nume neindexate, conteaza ordinea semnificatiilor variabilelor sicea de scriere/desenare n functie de semnificatie. De exemplu, daca inversamordinea liniilor selectorului unui MUX3, intrarea i3 se interschimba cu i6:

    Oricare conventie de ordonare este buna, dar trebuie aleasa una si pastrata cuconsecventa.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    22/84

    Conventia de ordonare folosita n acest curs este:

    - variabila cea mai semnificativa este scrisa n stanga notatiei cu paranteze afunctiei, n coloana din stanga a tabelului de valori si n partea de jos a

    selectorului blocurilor decodificator, codificator, demultiplexor, multiplexor;- iesirea y corespunzatoare valorii 0 = (0, . . . , 0) a selectorului blocurilordecodificator si demultiplexor este scrisa n stanga sau sus;

    - intrarea i corespunzatoare valorii 0 = (0, . . . , 0) a selectorului bloculuimultiplexor este scrisa n stanga sau sus.

    http://goforward/http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    23/84

    http://goforward/http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    24/84

    In cele ce urmeaza, pana la sfarsitul sectiunii referitoare la 0 DS, vom nota:, , , , \, operatiile de algebra booleana OR, AND, NOT,

    XOR, diferentasi vom nota:

    +, , sau juxtapunere, div, mod, operatiile aritmetice pe numere ntregide adunare, scadere, nmultire, aflarea catului ntreg, aflarea restului ntreg.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    25/84

    Sumator

    Sumator:

    Unsumator pe n bitiADDn, n1, este un circuit care implementeazaoperatia pe care la nceputul sectiunii Reprezentarea numerelor n calculatoram notat-o cu +.

    Mai exact, el primeste ca intrare doua siruri de bit ian1, . . . , a0, bn1, . . . , b0 sieventual un transport de intrare cin (pentru pozitia 0) si le aplica algoritmul deadunare cu reprezentarile binare ale numerelor naturale folosit n matematica;transportul din pozitian 1 se pierde (de fapt, el este emis pe o linie separata).

    Am vazut ca rezultatul acestei operatii are semnificatia de suma atat n cazul

    cand sirurile de biti reprezinta numere naturale ca ntregi fara semn, cat si ncazul cand ele reprezinta numere ntregi n complement fata de 2.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    26/84

    Sumator

    Simbol:

    sau, daca consideram si un transport de intrare:

    Vom defini mai ntai sumatorii pe un bit, apoi, pe baza acestora, sumatorii pemai multi biti.

    http://goforward/http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    27/84

    Sumator

    Sumator pe un bit:

    Sumatorii pe un bit pot fi folosit i:

    - pentru adunarea bitilor cei mai putin semnificativi (bitii de rang 0, aiunitatilor) ai unor operanzi mai lungi si atunci nu avem transport de intrare(carry in), dar avem transport de iesire (carry out); circuitul respectiv s.n. halfadder;

    - pentru adunarea bitilor mai semnificativi (de rang 1) ai unor operanzi mailungi si atunci avem si transport de intrare (carry in) si transport de iesire

    (carry out); circuitul respectiv s.n. full adder.

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    28/84

    Sumator

    Half adder (HA):

    Primeste ca intrare: a, b(doi operanzi de un bit).Efectueaza adunarea: a+b.Furnizeaza ca iesire: s(bitul suma, trimis n locatia destinatie), cout (carry out).Observam ca: s= (a+b) mod2, cout= (a+b) div2.

    Simbol si tabel de adevar:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    29/84

    Sumator

    Constructia ca PROM:

    O constructie cu mai putine porti se poate obtine observand din tabel ca:s=a b, cout=a b:

    Half adder-ul implementeaza functia booleanaHA: B2

    2 B22, HA(a, b) = (HAs(a, b), HAc(a, b)), unde

    HAs(a, b) =s=a b, HAc(a, b) =cout=a b.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    30/84

    Sumator

    Full adder (FA):

    Primeste ca intrare: a

    ,b

    (doi operanzi de un bit),c

    in (carry in).Efectueaza adunarea: a+b+cin.Furnizeaza ca iesire: s(bitul suma, trimis n locatia destinatie), cout (carry out).Observam ca: s= (a+b+cin) mod2, cout= (a+b+cin) div2.

    Simbol si tabel de adevar:

    Full adder-ul implementeaza functia booleanaFA: B2

    3 B22, FA(a, b, c) = (FAs(a, b, c), FAc(a, b, c)), unde

    FAs(a, b, c) =s= (a+b+c) mod2, FAc(a, b, c) =cout= (a+b+c) div2.

    http://goforward/http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    31/84

    Sumator

    Daca din tabelul anterior extragem FND, rezulta ca pentru a, b, c=cin date,avem:

    FAs(a, b, c) = (a b c) (a b c) (a b c) (a b c) =(((a b) (a b)) c) (((a b) (a b)) c) =((a b) c) (a b c) = (a b) c=HAs(HAs(a, b), cin)

    FAc(a, b, c) = (a b c) (a b c) (a b c) (a b c) =(((a b) (a b)) c) (a b (c c)) = ((a b) c) (a b) =HAc(HAs(a, b), cin) HAc(a, b) =HAc(HAs(a, b), cin) HAc(a, b)

    Ultima egalitate de jos se bazeaza pe faptul ca HAc(HAs(a, b), cin) si HAc(a, b)

    nu pot fi simultan 1 (de aceea, n loc de putem folosi ); ntr-adevar,conform tabelului lui half adder, daca HAc(a, b) = 1, atunci HAs(a, b) = 0,deci HAc(HAs(a, b), cin) =HAc(0, cin) = 0.

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    32/84

    Sumator

    Atunci putem construi un circuit full adder folosind doua circuite half adder si

    un OR sau XOR, astfel:

    S

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    33/84

    Sumator

    Sumator serial:

    Sumatorul serial pe n bitiADDn calculeaza bitii sumei succesiv, de la cel derang minim la cel de rang maxim, folosind la calculul fiecarui nou bittransportul (carry out) obtinut la bitul anterior.

    El se poate defini (construi) recursiv, astfel:

    ADD1 este un FA

    ADDn, n>1, este extensia seriala a unui ADDn1 cu un FA:

    Dezavantaj: dezvoltarea pe verticala a circuitului (numarul de niveluri de legaren serie) este mare si depinde de n; astfel, circuitul este lent.

    S

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    34/84

    Sumator

    Sumator paralel:

    Sumatorul paralel pe n bitiADDn este o varianta mai rapida, care efectueazansumarea separata a transportului fiecarei sume binare, folosind un circuit CL(carry lookahead).

    Daca pentru orice 0 in notam:ai, bi, si bitii de pe pozitia i ai operanzilor si, respectiv, sumei,

    cicarry in la pozitia i(si carry out la pozitia i 1, daca i1),iarcn este carry out final (de pe pozitian 1),atunci, din formulele obtinute pentru FAs, FAcmai devreme, rezulta ca pentruorice 0 in, avem:

    ci+1= (ai bi) ((ai bi) ci) =Gi (Pi ci),

    unde am notat:Gi =ai bi, deplasarea generata la pozitia i,Pi =ai bi, deplasarea propagata la pozitia i.

    Avand n vedere ca ai bi si ai binu pot fi simultan 1 (se poate vedea, deexemplu, folosind tabelele de valori), n formula lui ci+1 de mai sus n loc de se poate folosi .

    S

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    35/84

    Sumator

    Iterand formula anterioara, rezulta ca pentru orice 0 in avem:

    ci+1 =Gi (Pi Gi1) (Pi Pi1 Gi2) (Pi Pi1 P0 c0)

    si, ca mai nainte, n aceasta formula n loc de se poate folosi .

    Intrucat fiecare Gi, Pi depinde de ai, bi printr-o formula cu un nivel (o operatie, respectiv ), iar fiecare ci+1 depinde de sistemul de Gi-uri, Pi-uri si c0printr-o formula cu doua niveluri (o disjunctie de conjunctii), rezulta ca

    fiecare ci+1 depinde de sistemul de ai-uri, bi-uri si c0 printr-o formula cu treiniveluri, deci se poate calcula din sistemul de ai-uri, bi-uri si c0 n timpconstant (care nu mai depinde de n).

    Notam ca pentru orice 0 in, cel mult unul din termenii disjunctiei princare se calculeaza ci+1 poate fi 1.

    Intr-adevar, daca tot iGi, . . . , G0 sunt 0, atunci ci+1=Pi Pi1 P0 c0.Altfel, fie 0 ki cel mai mare indice a.. Gk= 1; atunci, pentru j>k avemPi Pi1 Pj+1 Gj= 0, deoarece Gj= 0, iar pentru j

  • 7/18/2019 Asc Fragment 10dec2014

    36/84

    Sumator

    Formula de calcul a lui ci+1, 0 in, de mai sus are asociate urmatoarele

    observatii intuitive: la o pozitie 0 in se genereaza carry out d.d. ai =bi= 1, i.e. Gi = 1; nacest caz, suma ramasa pentru pozit ia ieste 0, iar Pi= 0;

    carry out-ul generat la pozitia ise propaga spre pozitii jaflate tot mai lastanga (valori jtot mai mari) atat timp cat la pozitiile respective s-au adunat

    aj= 0 si bj= 1 sau aj= 1 si bj= 0 (pentru ca suma ramasa pentru pozit iaj safie 1), adica atat timp cat Pj= 1; notam ca pentru aceste pozitii avem Gj= 0;

    daca la stanga lui iavem doar valori Pj= 1 (va rezulta Gj= 0), carry-ulgenerat la pozitia iva fi carry out final cn;

    altfel, consideram cea mai mica pozitiek>i a.. Pk= 0; atunci la pozitiak

    s-au adunat ak= 0 si bk= 0 sau ak= 1 si bk= 1, deci suma ramasa pentrupozitiakeste 0 si atunci carry-ul generat la pozit ia i se opreste n acest 0 (nuse propaga mai departe); nu este obligatoriu ca Gk= 1 (avem asa doar daca lapozitiaks-au adunat ak= 1 si bk= 1), deci k este urmatoarea pozitiei >i unde se genereaza carry out;

    S t

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    37/84

    Sumator

    astfel, cantitatea totala transportata printr-o pozitie 0 in nu va finiciodata >1 (carry out-urile nu ajung sa se cumuleze);

    un carry out final cn+1 = 1 poate proveni:- fie de la un c0 = 1, daca toate Pi, 0 in, sunt 1 (atunci toate Gi,0 in, sunt 0, deci nici o pozitie nu genereaza carry out, iar numerele de nbiti adunate sunt unul complementul fata de unu al celuilalt);- fie de la cea mai mare pozitie 0 in unde s-a generat carry out, adica

    Gi= 1, daca pentru pozitiile j>i avem Pj= 1 (adica se permite propagarea);eventualele carry out venite din spate se vor opri cel mult n pozitiak.

    Sumator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    38/84

    Sumator

    Circuitul CL implementeaza formula anterioara de calcul pentru toate carryout-urile ci, 1 in, si are doua niveluri (un nivel si un nivel ), decinumarul de niveluri si timpul de calcul nu depind de n.

    Simbol:

    Sumator

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    39/84

    Sumator

    Constructie pentru n= 4:

    Circuitul implementeaza formulele:c4 =G3 (P3 G2) (P3 P2 G1) (P3 P2 P1 G0) (P3 P2 P1 P0 c0)c3 =G2 (P2 G1) (P2 P1 G0) (P2 P1 P0 c0)c2 =G1 (P1 G0) (P1 P0 c0)c1 =G0 (P0 c0)

    Sumator

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    40/84

    SumatorConstructia sumatorului:

    Intr-adevar, formulele anterioare ne arata ca pentru orice 0 in 1 avem:si =FAs(ai, bi, ci) =HAs(HAs(ai, bi), ci) =HAs(ai, bi) ciGi =ai bi =HAc(ai, bi)Pi =ai bi =HAs(ai, bi)

    Circuitul are 4 niveluri de legare n serie (deoareceHA are un nivel iar CL doua

    niveluri), deci numarul de niveluri si timpul de calcul nu depind den

    .

    Circuit pentru incrementare

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    41/84

    Circuit pentru incrementare

    Circuit pentru incrementare:

    Uncircuit pentru incrementare pe n biti INCn, n1 este un circuit careaduna aritmetic 1 la un numar natural/ntreg reprezentat binar pe n biti,transportul din bitul cel mai semnificativ fiind emis pe o linie separata; cu altecuvinte, efectueaza +1, n sensul operatiei+ definita la nceputul sectiuniiReprezentarea numerelor n calculator.

    Simbol:

    Variante de constructie: Constructie seriala - exercitiu:

    n= 1 : NOTn n + 1 : INCn extins serial cu HA

    ADDn cu intrarea bfixata pe 0 . . . 01

    ;

    n

    Circuit pentru incrementare

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    42/84

    Circuit pentru incrementare Constructie paralela (cea mai perfomanta):

    Se bazeaza pe urmatoarele observatii:

    la ADDn, daca fixam bi= 0, 0 in 1, si c0 = 1, obtinem INCn; la CL, daca fixam bi= 0, 0 in 1, si c0 = 1, atunci

    pentru orice 0 in 1 avem Gi =ai 0 = 0, Pi =ai 0 =ai, decici+1 =Gi (Pi ci) =ai ci = = ai a0 c0 =ai a0.

    Atunci obtinem circuitul:

    Intuitiv: la fiecare pozitie i se aduna ai cu carry venit din urma ai1 a0

    si se obtine un bi si un carry out ce nu mai trebuie calculat aici, deoarece serecalculeaza la pozitia i+ 1.

    Circuitul are doar doua niveluri de legare n serie, deci este rapid (iar timpul decalcul nu depinde de n); aceast fapt este important, deoarece programeleefectueaza n general multe incrementari (ex: ++i ntr-o instructiune for)

    si este important ca ele sa se execute repede.

    Circuit pentru scadere

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    43/84

    Circuit pentru scadere

    Circuit pentru scadere:

    Uncircuit pentru scadere pe n bitiSUBn, n1, este un circuit careimplementeaza operatia pe care la nceputul sectiunii Reprezentarea numerelorn calculator am notat-o cu .

    Mai exact, el primeste ca intrare doua siruri de bit ian

    1, . . . , a0, bn

    1, . . . , b0 siun mprumut de intrare cin si le aplica algoritmul de scadere cu reprezentarilebinare ale numerelor naturale folosit n matematica, obtinand un sir de biti airezultatului (diferentei) dn1, . . . , d0 si un mprumut de iesire cout, care esteemis pe o linie separata.

    Am vazut ca rezultatul acestei operatii are semnificatia de diferenta atat n

    cazul cand sirurile de biti reprezinta numere naturale ca ntregi fara semn, catsi n cazul cand ele reprezinta numere ntregi n complement fata de 2.

    Circuit pentru scadere

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    44/84

    Circuit pentru scadere

    Simbol:

    Variante de constructie:

    Constructie seriala - exercitiu:n= 1 : se defieste un circuit FS (full substract), n aceeasi maniera ca FA;

    n n + 1 : se extinde serial SUBn cu un FS(si se mai pot face niste simplificari).

    Constructia bazata pe ADDn:Se bazeaza pe observatia ca daca a, bsunt numere naturale/ntregi pe n biti,

    c este numarul 0 sau 1 pe un bit, iar a, b, c sunt numerele obtinute negandbitii din reprezentarile lui a, b, respectiv c(complementele fata de 1), atunci:

    b+b= 2n 1, c+ c= 1,deci

    a b c=a +b 2n + 1 + c 1 =a +b+ c 2n.

    Circuit pentru scadere

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    45/84

    Circuit pentru scadere

    Rezulta circuitul:

    Asadar, scaderea se reduce la adunare (se poate efectua cu circuitul pentruadunare).

    Multiplicator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    46/84

    Multiplicator

    Multiplicator:

    Un multiplicator pe n bitiMULn, n 1, este un circuit care primeste caintrare doua siruri de bitian1, . . . , a0, bn1, . . . , b0 si le aplica algoritmul denmultire cu reprezentarile binare ale numerelor naturale folosit n matematica,obtinand un sir de biti ai rezultatului (produsului) x2n1, . . . , x0.Cu un asemenea circuit se poate efectua nmultirea unor numerenaturale/ntregi.

    Prezentam mai jos varianta de constructie descrisa n cartea:Adrian Atanasiu: Arhitectura calculatorului, Ed. InfoData, 2006:

    Multiplicator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    47/84

    u t p cato

    Se foloseste un bloc pentru nmultirea pe un bit (cu ajutorul unei port i AND)si adunarea produselor si carry-urilor vecine (cu ajutorul unui FA); constructiablocului (stanga) si simbolul sau (dreapta) sunt urmatoarele:

    Multiplicator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    48/84

    pConstructia multiplicatorului pe n biti este ilustrata mai jos, pentru n= 4:

    Multiplicator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    49/84

    p

    Dezavantaj: dezvoltarea pe verticala a circuitului (numarul de niveluri de legaren serie) este mare si depinde de n; astfel, circuitul este lent.

    De aceea, pentru nmultirea hardware nu se foloseste un 0 DS, careefectueaza calculul ntr-un singur pas foarte lent, ci un 2 DS, care efectueazacalculul prin adunari si shiftari repetate, pe parcursul mai multor pasi rapizi(vom vedea mai tarziu).

    Comparator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    50/84

    p

    Comparator:

    Uncomparator pe n bitiCAn, n1, este un circuit care efectueazacomparatia aritmetica a doua numere ntregi.

    El primeste ca intrare reprezentarile celor doua numere a si b n complementfata de 2 pe n biti,an1, . . . , a0 si respectiv bn1, . . . , b0, si furnizeaza trei iesiride un bit, corespunzatoare celor trei relatii posibile n care se pot afla a si b:z1(a b) (fiecare iesire este 1 sau 0 dupa cum relatia

    respectiva are sau nu loc).

    Simbol:

    Comparator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    51/84

    p

    Notand ca mai nainte a, bnumerele obtinute prin negarea bitilor dinreprezentarile lui a, respectiv b(complementele fata de 1), vom avea:

    a>ba b>0 a+b+ 1 2n >0 a +b>2n 1

    a

    +b

    are carry out = 1.Similar, a< ba+bare carry out = 1.

    In fine, a=b i {0, . . . , n 1}, ai=bi i {0, . . . , n 1}, ai bi = 1 ( . . este operatia NXOR)a0 b0 . . . an1 bn1 = 1.

    Comparator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    52/84

    Atunci, putem construi comparatorul astfel:

    Comparator

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    53/84

    unde am folosit urmatoarele simboluri:

    Comparator

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    54/84

    O varianta mai simpla, cu un singur sumator, se poate obtine observand ca:

    a>ba+bare carry out = 1 (am vazut).

    a=ba b= 0 a+b+ 1 2n = 0 a +b= 2n 1a+bare toti bitii 1 conjunctia a bitilor lui a+beste 1.

    a

  • 7/18/2019 Asc Fragment 10dec2014

    55/84

    Obtinem circuitul:

    Shifter

    http://find/http://goback/
  • 7/18/2019 Asc Fragment 10dec2014

    56/84

    Circuit pentru deplasare (shifter):

    Uncircuit pentru deplasare (shifter) pe n biti,n 1, este un circuit care

    primeste ca intrare un sir de n bitian1, . . . , a0 si un numar natural k prinreprezentarea sa n calculator ca ntreg fara semn si furnizeaza ca iesire siruldeplasat la stanga sau la dreapta cu k pozitii. Bitii care ies din sistemul de n sepierd (eventual sunt recuperati pe alte linii), iar locurile goale aparute n parteaopusa se completeaza dupa o anumita regula, n functie de tipul de shiftare.

    Exista trei tipuri de shiftare: Shiftare logica la stanga (instructiunea sll din limbajul MIPS):Furnizeaza sirul: ank1, ank2, . . . , a0, 0, . . . , 0

    k biti

    Shiftare logica la dreapta (instructiunea srl din limbajul MIPS):

    Furnizeaza sirul: 0, . . . , 0 , an1, an2, . . . , akk biti

    Shiftare aritmetica la dreapta (instructiunea sra din limbajul MIPS):Furnizeaza sirul: an1, . . . , an1

    , an1, an2, . . . , ak

    k biti

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    57/84

    Daca an1, . . . , a0 este reprezentarea n calculator a unui numar natural a cantreg fara semn sau a unui numar ntreg a n complement fata de 2, atunci:

    shiftarea logica la stanga cu k furnizeaza reprezentarea lui a 2k;

    shiftarea logica la dreapta cu k furnizeaza reprezentarea lui a/2k, doarpentru numere a 0;

    shiftarea aritmetica la dreapta cu k furnizeaza reprezentarea lui a/2k,pentru orice numar ntreg a reprezentat n complement fata de 2 (eacompleteaza locurile goale aparute n stanga cu copii ale bitului de semn).

    In toate cazurile, proprietatea are loc cu conditia ca rezultatul sa se afle nmultimea valorilor reprezentabile (sa nu apara overflow).

    Deci, shiftarile pot fi folosite pentru a efectua rapid nmultiri si mpartiri aleunor numere ntregi cu puteri ale lui 2.

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    58/84

    Pentru construtia circuitului, presupunem 0 k2p 1; ca sa reprezentamvalorilorilekca ntregi fara semn, avem nevoie de pbiti.

    Atunci, pentru fiecare bit destinatiebi, 0 in 1, construim un MUXp

    care, n functie de numarul de pozitiikde shiftare (keste valoarea de selectie amultiplexorului), alege dintre ai, . . . , ai2p+1 (n cazul shiftarii la stanga) saudintre ai+2p1, . . . , ai (n cazul shiftarii la dreapta), anume l alege pe aik.Intrarile multiplexoarelor care corespund unor aj inexistenti vor primi 0 (n cazulshiftarilor logice) sau an1 (n cazul shiftarii aritmetice la dreapta).

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    59/84

    Daca desenam generic aceasta asociere evidentiind intrarile legate la o iesire bi,obtinem:

    pentru shiftarea la stanga:

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    60/84

    pentru shiftarea la dreapta:

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    61/84

    Daca desenam generic aceasta asociere evidentiind iesirile la care este legata ointrareai, obtinem:

    pentru shiftarea la stanga:

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    62/84

    pentru shiftarea la dreapta:

    Regula de tinut minte: fiecare aise ramifica de 2p ori spre directia de shiftare.

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    63/84

    Exemplu: Explicitati circuitele de shiftare pentru n= 4, p= 2.

    Shiftarea logica la stanga:

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    64/84

    Shiftarea logica la dreapta:

    Shifter

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    65/84

    Shiftarea aritmetica la dreapta:

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    66/84

    Unitate aritmetica si logica (ALU):

    O unitate aritmetica si logica (arithmetic logic unit, ALU) pe n bitiALUn,n 1, este un circuit care aplica unor operanzi numere ntregi pe n biti ooperatie aritmetica sau logica selectata printr-un cod numeric; operanzii sicodul operatiei sunt dati prin reprezentarea lor n calculator ca sir de biti.

    Simbol:

    unde: a, bsunt operanzii (pe n biti), opeste codul operatiei (pe k biti), r esterezultatul (pe n biti), eeste un sistem de palte iesiri: carry out, overflow, etc.(uneori, o parte din aceste iesiri se deseneaza n partea de jos a simbolului).

    ALU implementeaza un numar t2k de operatii, a.. valorile valide ale lui opsunt doar tdintre numerele de la 0 la 2k 1 (nu neaparat succesive).

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    67/84

    O implementare directa se poate face astfel:

    - construim tblocuri 0 DS, care implementeaza operatiile considerate;presupunem ca valorile valide ale lui opsunt numerele succesive de la 0 la t 1;notam blocurile operatiilor corespunzatoare acestor valori OP0, . . ., OPt1;

    - operanzii a si bintra simultan n blocurile OP0, . . ., OPt1;

    - fiecare iesire finala ri sau ei, este aleasa dintre iesirile corespunzatoare cuacelasi iale blocurilor OP0, . . ., OPt1 folosind un MUXkce are ca selector peop (opintra simultan ca selector n toate aceste multiplexoare).

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    68/84

    Constructia circuitului:

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    69/84

    O implementare cu mai putine componente ar presupune sa nu construimblocuri separate pentru fiecare operatie ci sa refolosim cat mai multecomponente - de exemplu, scaderea se face cu sumatorul, dar introducand b sicin negate.

    O alta idee este sa construim cate un ALUoptimizat ca mai sus pentru fiecarebit, iar ALU pe n biti sa se obtina prin legarea n paralel a n ALUpe un bit.

    Vom ilustra aceasta ultima varianta pe un caz particular: ALU32 folosit ndiversele variante de procesor MIPS care vor fi prezentate mai tarziu.

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    70/84

    Simbol:

    ALU

    a (32b) b (32b)

    Zero (1b)Result (a op b) (32b)

    Overflow (1b)

    ALU Op(3b)

    efectueaza: +, , AND, OR, slt

    Carry Out(1b)

    a, b, Result, sunt operanzii, respectiv rezultatul, operat iei (32 biti), ALU Opeste codul operatiei (3 biti), Carry out, Overflow, Zerosunt iesiri de 1 bit princare se emite 1 d.d. la efectuarea operatiei a existat transport sau mprumut nbitul cel mai semnificativ, respectiv a avut loc depasire, respectiv rezultatul aavut toti bitii 0.

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    71/84

    Acest ALU implementeaza operatiile: + (adunare), (scadere), AND (si pebiti), OR(sau pe biti), slt, deci numai 5 dintre cele 8 numere naturale carese pot scrie pe 3 bit i: 0, . . . , 7, sunt valori valide ale lui op.

    slt (set if less then) este operatia MIPS care se aplica la trei registrii:slt reg1, reg2, reg3

    si efectueaza: reg1 :=

    1, daca reg2< reg30, altfel

    Unitate aritmetica si logicaOperatia slt este utila la implementarea calculelor booleene. De exemplu,

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    72/84

    p p p ,secventa de cod n limbajul C:

    x = ( a < b ) & & ( c < d )

    poate fi tradusa de compilator n :

    lw $t0, a # se incarca operandul a din memorie in registrul $t0

    lw $t1, b # se incarca operandul b din memorie in registrul $t1

    slt $t2, $t0, $t1

    # registrul $t2 primeste valoarea 1/0 a expresiei a < b

    lw $t0, c # se incarca operandul c din memorie in registrul $t0

    lw $t1, d # se incarca operandul d din memorie in registrul $t1slt $t3, $t0, $t1

    # registrul $t3 primeste valoarea 1/0 a expresiei c < d

    and $t0, $t2, $t3

    # registrul $t0 primeste valoarea expresiei

    # (a < b) & (c < d) ("si" pe biti in limbajul C);

    # intrucat $t2, $t3 pot contine 1 doar in bitul de rang 0,

    # aceasta este echivalenta cu# (a < b) && (c < d) ("si" in limbajul C);

    sw $t0, x

    # se scrie rezultatul din registrul $t0 in variabila x din memorie

    Astfel, expresia conditionala se evalueaza cu un cod ce se executa liniar, nlocul unor blocuri conditionale mbricate.

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    73/84

    Pentru constructia circuitului ALU32, vom construi blocuri ALU1 (ALU pe 1bit), apoi vom lega n paralel 32 asemenea blocuri.

    ALU1 se construieste diferit n functie de rangul bitului: 0, 1 i30, 31 (de

    exemplu, valoarea 1/0 furnizata deslt

    este determinata la pozitia 31 si emisaca rezultat la pozitia 0).

    Vom nota aceste ALU1 cu ALU0, ALUi (1 i30), respectiv ALU31 (a nuse confunda notatia indexata ALUi, care nseamna ALU pe i biti, cu ALUi,care nseamna ALU1 de la pozitia i).

    Unitate aritmetica si logica

    Cazul 0:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    74/84

    Simbol:

    a, bsunt operanzii (1 bit);lteste o informatie emisa ca rezultat n cazul slt

    (rezultatul pe 32 biti va fi 0. . . 0 0sau 0. . . 0 1);b31 b0 b31 b0

    binv este 0 sau 1 dupa cum se va aduna a cu bsau a cub;

    (la adunare trebuie efectuat a+b, la scadere trebuie efectuat a+b+ 1);

    opeste 0, 1, 2, 3 (reprezentat pe 2 biti) pentru a desemna respectiv operatiile, , +/(distinctia va fi facuta de binv),

  • 7/18/2019 Asc Fragment 10dec2014

    75/84

    Observatii:- folosim HA, nu FA, deoarece asa este construit circuitul ADD cu CL;

    - pentru pozitia 0, avem cin =

    0, n cazul +1, n cazul

    =binv; de aceea binv se

    compune XOR cu spentru a da r (a se vedea circuitul ADD cu CL);- lteste generat de ALU1 de la pozitia 31 si emis prin pozitia 0.

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    76/84

    Cazul 1 i30:Simbol:

    Unitate aritmetica si logicaConstructia circuitului:

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    77/84

    Observatie: aici avem cin, care vine din CL , iar lteste mereu 0, deoarecenumai n pozitia 0 se poate emite ceva = 0 (la operatia lt rezultatul este0 . . . 00 sau 0 . . . 01).

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    78/84

    Cazul 31:

    Simbol:

    Observatie: Apare n plus iesirea Set, care va intra ca lt n ALUde la pozitia 0.

    Unitate aritmetica si logica

    Constructia circuitului n cazul 31 este asemanatoare celei din cazurile

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    79/84

    1 i30, cu sigura diferenta ca iesirea din XOR iese si prin Set:

    Intr-adevar, avem lt= 1 d.d. pentru operanzii pe 32 bit ia si bavem a< b,d.d. a b

  • 7/18/2019 Asc Fragment 10dec2014

    80/84

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    81/84

    Observatie: pentru sltse efectueaza scaderea si se testeaza daca rezultatul este

  • 7/18/2019 Asc Fragment 10dec2014

    82/84

    p purmatorului tabel:

    Exercitiu: Implementati acest circuit ca PLA, PROM (sau mai simplu,observand ca binv=ALU Op2, op1 =ALU Op1, op0 =ALU Op0).

    Unitate aritmetica si logica

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    83/84

    Detectie Overfloweste un circuit 0 DScare detecteaza depasirea la +, ,dupa urmatoarea regula:

    Observatie: A avea depasire nu este totuna cu a avea transport/mprumut nbitul cel mai semnificativ (desi poate exista o legatura ntre ele). De exemplu,n limbajul C pe 32 biti, calculul 0 - 1 = -1 efectuat n cadrul tipului int

    (numere ntregi pe 32 biti) are mprumut n bitul cel mai semnificativ (deoarecepe biti se efectueaza 0 . . . 00 0 . . . 01 = 1 . . . 1), dar nu are depasire,deoarece rezultatul 1 ncape n mult imea de valori {231, 231 1} a tipuluiint.

    Unitate aritmetica si logica

    C f lil d l i l f d 2

    http://find/
  • 7/18/2019 Asc Fragment 10dec2014

    84/84

    Conform regulilor de reprezentare a numerelor ntregi n complement fata de 2,avem x0 d.d. x31= 1. Atunci tabelul de valori implementat de circuitulDetectie Overfloweste urmatorul:

    Observatie: Overflow are sens doar la +, si de aceea, n rest, spunem cavaloarea Overflow este 0.

    Exercitiu: Implementati acest circuit ca PLA, PROM.

    http://find/