Sunteți pe pagina 1din 57

ARHITECTURA CALCULATOARELOR 1

1 ARITMETICA 1.1 Reprezentarea numerelor n calculator 1.1.1 Clasificarea informaiei Informaia n calculator este organizat_ n cuvinte (words). Cuvntul este unitatea de informaie care are lungime fix_. El admite n cifre binare sau bii, unde n este primar determinat din considerente ale costului hard. n general este un multiplu de byte. Clasificarea informaiei: Binary Instruction Fixed Point Decimal Information Numbers Binary Data Floating Point Decimal Non numerical Data ASCII (American Standard Code for Information Interchange)

1.1.2 Formate pentru numere


Pentru selectarea unei reprezent_ri de num_r care s_ fie utilizat_ n calculator trebuie s_ se in_ cont de urm_toarele: - tipul numerelor de reprezentat; - domeniul valoric care trebuie acoperit de reprezentare; - precizia numerelor, strict legat_ de acurateea maxim_ a reprezent_rii; - costul hardware-ului necesar memor_rii numerelor; Exist_ dou_ formate de reprezentare a numerelor: - formate de virgul_ mobil_(flotant_); - formate de vigul_ fix_; Formatele de virgul_ fix_ au un domeniu mai restrns, dar i costul circuisticii hardware este mai mic.

1.1.2.1 Reprezentarea numerelor n vigul_ fix_


Este dedus_ n mod direct din forma zecimal_ ordinar_ a numerelor, n conformitate cu care numerele prezint_ o virgul_ zecimal_, la partea stng_ a acesteia corespunznd partea ntreag_ a num_rului, iar la partea dreapt_ 1

corespunde partea zecimal_. Fiecare poziie are asociat_ o pondere, fapt pentru care se spune c_ numerele sunt scrise ntr-o notaie ponderat_: notaie poziional_.

N =
0 ci < r

i 1 i

ci * r i i = m

r- baz_ a sistemului de numeraie; parte ntreag_: 1 0

i 1

parte zecimal_: 1 0

1.1.2.1.1 Numere binare


Pentru o reprezentare uniform_ a numerelor binare cu semn, din cei n bii considerai disponibili, unul este sacrificat pentru semn, i prin convenie este bitul situat n partea stng_ (bitul cel mai semnificativ). Tot prin convenie se atribuie 0 pentru semnul + i 1 pentru semnul -. Biii pot fi numerotai de la dreapta la stnga (cum se ntmpl_ la SPARC), caz n care se numete reprezentare Little Endian, sau de la stnga la dreapta (cum se ntmpl_ la familia INTEL), caz n care se numete reprezentare Big Endian. Cel dou_ moduri de numerotare se vor reprezenta mai jos:

c n 1 c n 2 ............. c 1 c 0 ........ c 1 ... c m


binary point

Little Endian

c 0 c 1 .............. c n 1

Big Endian

Se face o distincie net_ ntre numere ntregi, pe de o parte, i numere fracionare pe de alta parte. n mod clar virgula nu revendic_ n acest caz o poziie binar_ suplimentar_, ci este implicit_: la clasa numerelor ntregi este admis_ la dreapta poziiei cea mai puin semnificativ_, iar la cele fracionare e implicit situat_ ntre primii doi bii, cei mai semnificativi bii din stnga.

x 0 x 1 .............. x n 1
binary point la numere ntregi

x 0 . x 1 ........ x n 1
binary point la numere fracionare

Exist_ 3 reprezent_ri fundamentale ale numerelor binare n virgul_ fix_:

a) Signmagnitude (semnm_rime)

x 0 . x 1 ....... x i ....... x n . ,
1
sign magnitude implicit binary point

Caracteristicile reprezent_rii n semnm_rime sunt: n ceea ce privete domeniul valoric: pentru numerele ntregi avem gama valoric_:

0 N 2 n 1 1
pentru numere fracionare gama valoric_ este:

0 N 1 2 n +1
n ceea ce privete precizia numerelor raportat_ la reprezentarea zecimal_ lucrurile se prezint_ astfel:

lo g 2 ( N ) = n 1 lo g 2 ( N ) = lo g 1 0 ( N ) * lo g 2 1 lo g 1 0 ( N ) = x n 1 x= lo g 2 1 0
n reprezentarea semn-m_rime operaiile de nmulire i mp_rire sunt simplu de implementat, dar cele mai frecvente operaii, care sunt adunarea i sc_derea, ntmpin_ dificult_i n traducerea n circuitele mainii de calcul. Facem apel la un principiu fundamental al proiect_rii calculatoarelor care este make the common case fast (favorizeaz_ cazul mai frecvent n detrimentul cazului mai puin frecvent), principiu enunat de Amdahl. n acest caz acest principiu nu este rescpectat. Faptul pentru care adunarea i sc_derea sunt dificil de implementat n calculator rezult_ din 3

= 2 n 1 = 1 0 x

urm_toarele exemple foarte simple: +3 =0 011 +(-3)=1 011 1 110= -6(?!) 0 +1=0 001 +(-6)=1 110 1 111= -7(?!) -5

Cnd efectu_m operaia de adunare ntre numere care difer_ ca semn trebuie s_ se in_ cont de semn la implementarea operaiei de adunare, ori aceast_ chestiune complic_ circutele i reprezint_ o sc_dere a reprezent_rii semn-m_rime. Pentru cifra 0 a c_rei testare n calculator se efectueaz_ foarte frecvent avem dou_ reprezent_ri:

+ 0 = 0000 0 = 1000
b) Ones complement (complement de 1)
n conformitate cu aceast_ reprezentare fiecare cifr_ binar_ este substituit_ prin valoarea ei complementar_, adic_ 0 este substituit prin 1 i invers. Fa_ de cealalt_ reprezentare numerele pozitive au aceiai reprezentare, dar difer_ doar reprezentarea numerelor negative. Complementul de 1 nu mai are o notaie poziional_. i n cazul complementului de 1 exist_ dou_ sc_deri: - i n acest caz trebuie s_ se in_ cont de semn pentru c_ ntr-un fel se adun_ dou_ numere negative, n alt fel se adun_ un num_r pozitiv i unul negativ i n alt fel se adun_ dou_ numere pozitive. n primele dou_ situaii menionate se apeleaz_ la corecia end-around carry. Ex: -2= 1 101+ -4= 1 011 11 000+ 1 1 001= -6 7= 0 111+ +(-3)= 1 100 10 011+ 1 0 100= -4

end-around carrry

La ambele exemple apare un transport(carry) la bitul de semn reprezentat prin acel 1(n plus) din faa rezultatului, 1 care va fi adunat la rezultat pentru efectuarea coreciei end-around carry. - A doua sc_dere este c_ 0 are i n acest caz dou_ reprezent_ri:

+ 0 = 0000 0 = 1111
c) Twos complement (complement de 2)
La fel ca la complementul de 1 numerele pozitive r_mn la fel, dar difer_ cele negative i anume obinerea complementului de 2 se face astfel: se complementeaz_ de 1 num_rul dup_ care la acesta se mai adaug_ o unitate binar_.

x x x

num_rul n semn-m_rime; complementul de 1; complementul de 2;

x = x 0 . x 1 ....... x i ....... x n 1 + 0 .0 0 0 ....0 ....0 1 (modulo 2) la numere ntregi


implicit binary point

x = x 0 x 1 ..... x i .... x n 1 .+ 1 (modulo 2 n ) la numere zecimale


impicit binary point

Nu se ia n consideraie transportul (carry) care apare la bitul de semn. Pentru reprezentarea numerelor avem urm_toarele caracteristici: % toate reprezent_rile au x 0 ca bit de semn; % ambele reprezent_ri complementare pentru numere negative nu au corespondent ntr-o notaie poziional_; % n codurile complementare operaia de sc_dere se realizeaz_ prin adunarea complementului; % n codurile complementare, exceptnd cazul end-around carry, bitul de semn nu revendic_ o tratare special_. El poate fi tratat ca i un bit de num_r(bii ordinari). % operaiile de nmulire i mp_rire sunt mai dificil de efectuat n codurile complementare fa_ de codul semn-m_rime; % apare anomalia complementului de 2 din cauza lui -8: % overflowunderflow (dep_ire n susdep_ire n jos): la operaia de adunare a dou_ numere cu semn se spune c_ apare dep_ire n sus/jos 5

atunci cnd semnul rezultatului difer_ de cel(acelai) al numerelor. Situaia aceasta e o condiie de excepie n calculator, care n mod uzual duce la o deviere(trap) a calculelor, deviere care prin program trebuie s_ tatoneze dac_ situaia este normal_ sau nu. F_r_ a pierde din generalitate s_ consider_m numerele reprezentate pe n bii:

X = x 0 x 1 x 2 ... x i ... x n 1 Y = y 0 y 1 y 2 ... y i ... y n 1 Z = X + Y Z = z 0 z 1 z 2 ... z i ... z n 1

(Sumator complet)

Vom prezenta ecuaia fundamental_ de a obine suma la un sumator complet(full adder): z i = x i y i c i +1 + x i y i c i +1 + x i y i c i +1 = = ( x i y i + x i y i ) c i +1 + ( x i y i + x i y i ) c i +1 = = x i y i c i +1 + ( x i y i ) c i +1 = = ( x i y i ) c i +1 = = x i y i c i +1 Ecuaia fundamental_ care acoper_ un sumator complet este urm_toarea:

c i = x i y i c i +1 + x i y i c i +1 + x i y i c i +1 + x i y i c i +1 = = x i c i +1 + y i c i +1 + x i y i
unde c i este carry-ul(transportul) din rangul curent, iar c i +1 este carry-ul din rangul anterior.

z 0 = x 0 y 0 c1

= x 0 y 0 c1 + x 0 y 0 c1
= x 0 y 0 c1 x 0 y 0 c1 0 = = x 0 y 0 ( c 1 1) x 0 y 0 c 1 = = x 0 y 0 x 0 y 0 c1 x 0 y 0 c1 = = x 0 y 0 ( x 0 y 0 ) c1 = = x 0 y 0 ( x 0 y 0 1) c 1 = = x 0 y 0 x 0 c1 y 0 c1 c1 c i = x i c i +1 + y i c i +1 + x i y i = = x i c i +1 y i c i +1 x i y i c i +1 x i y i x i y i c i +1 x i y i c i +1 x i y i c i +1 = = x i y i x i c i +1 y i c i +1 = x 0 y 0 x 0 c1 y 0 c1 c1 = c 0 c1

c0

- dac_ s-a obinut dep_ire atunci aceast_ variabil_ este pus_ pe 1. Testarea de overflow/underflow se testeaz_ cu relaia: c 0 c 1 .
% Eroarea de rotunjire, care se manifest_ n urm_toarea situaie: admitem c_ avem de nmulit dou_ numere reprezentate pe cte n bii fiecare, rezultatul obinndu-se pe 2n bii . Dar dac_ de dragul reprezent_ri numerelor se va reprezenta rezultatul pe n bii atunci se renun_ la cei mai puin semnifcativi n bii. Renunarea f_r_ intervenie la aceti mai puin semnificativi n bii se numete trunchiere. Uneori se apeleaz_ la operaia suplimentar_ de rotunjire (rounding) care face ca eroarea de rotujire (round off error) s_ fie mai puin important_ pentru rezultat ca eroarea de trunchere. De exemplu n sistemul zecimal dorim ca num_rul 0,346712 s_ l rotunjim la 3 cifre zecimale. Dac_ rezultatul se truncheaz_ atunci vom obine 0,346.

rj 2
rbaza sistemului de numeraie; jponderea corespunz_toare celei mai puin semnificative cifre a rezultatului trunchiat;

rj Operaia suplimentar_ const_ n ad_ugarea lui dup_ care se 2

apeleaz_ la trunchiere: 7

1 0 3 = 0 ,0 0 0 5 j = 3 2 0 , 3 4 6 71 2 + 0 ,0 0 0 5 0 , 7 21 2 3
4
0 ,347

Pentru a surmonta problema erorilor de trunchiere/rotunjire, uneori, pe parcursul calculelor se apeleaz_ la efectuarea operaiilor n aa numita precizie multipl_, cu corespunz_toarea investiie n circuite. n precizie multipl_ anteriorul rezultat se poate folosi un cuvnt corespunz_tor majorat.

1.1.2.1.2 Numere zecimale


Exist_ multe aplicaii n care operaia dominant_ reprezint_ intrarea i ieirea de date, ori este cunoscut c_ n lumea exterioar_ oper_m n sistemul zecimal iar n lumea calculatoarelor oper_m n sistemul binar. Operaia implic_ multe conversii zecimalbinare respectiv binarzecimale. Aceste reprezent_ri implic_ multe calcule consumatoare de timp deci soluiile sunt nesatisf_c_toare. Accelerarea operaiei de conversie se obine pentru nite reprezent_ri aparte a numerelor zecimale i una dintre ele se caracterizeaz_ prin faptul c_ fiecare cifr_ zecimal_ este convertit_ n mod separat. Un astfel de cod poart_ denumirea de cod BCD (binary-coded- decimal), care este caracterizat prin faptul c_

fiecare cifr_ binar_ este substituit_ printr-un cvartet binar.

b i , 3 b i , 2 b i ,1 b i , 0 , i 1
Se obine un cod ponderat pentru numere zecimale caracterizat prin faptul c_ fiecare cifr_ binar_ b i , j are asociat_ ponderea 1 0
i 1

2 j , i 1, j 0 .

N = 4 3 7 = 0 1 000 0 110 1 11 ,,,


4 3 7

Conversia este foarte simpl_, dar ea are dezavantajul c_ operaia cea mai frecvent_ care este adunarea ntmpin_ dificultatea constituit_ de corecia de 6.

437 + 578 1015

0100 = 0101 1001 0001 1010 + 1 ,


1

0110 0000
0

, ,
+ 1
1

0011 0111 1010 0001 1011 0110 0001

0111 1000 1111 + 0110 1 0101

,
5

La operaia de adunare, care se efectueaz_ cifr_ zecimal_ cu cifr_ zecimal_ sau cvartet binar cu cvartet binar, fie se obine carry din cifra cea mai semnificativ_ a cvartetului fie se obine echivalentul binar corespunz_tor valorilor zecimale 10,11,12,13,14,15. Se aplic_ corecia de 6 constnd din adunarea echivalentului binar al cifrei zecimale 6 la cvartetul rezultatului. Un alt cod este codul zecimal exces de 3. Adunarea numerelor n acest codul se efectueaz_ f_r_ nici un fel de intervenie de tipul coreciei de 6 prin circuitele care realizeaz_ aceast_ operaie asupra numerelor binare. Regula de obinere a rezultatului n cod exces de 3 este: % dac_ n urma efectu_rii operaiei de adunare a doi cvartei binari nu rezult_ transport atunci se obine rezultatul corect prin sc_derea valorii 3(a echivalentului binar al cifrei 3); dac_ la adunarea a doi cvartei binari se obine transport atunci rezultatul corect se obine prin adunarea lui 3.
4 37 + 5 72 1 00 9 = = 1 0 11 1 1 00 0 0 00 0 1 0 11 0 1 01 0 0 00 0 0 1 01 0 0 10 1 1 11 1

+ 0 01 1 + 0 01 1 0 10 0 0 01 1
1 0

, , , ,
+ 0 01 1 0 01 1
0 9

0 01 1 1 10 0 9

Prin eroare se schimb_ num_rul de bii de 1 corespunz_tori codific_rii cifrei zecimale iar eroarea poate fi detectat_ imediat. Codul 2 din 5 este codul de eroare, el revendicnd, pentru atributul suplimentar al detect_rii erorilor, investiia suplimentar_ cu un bit. Relativ la codific_rile zecimale putem spune c_: % ele revendic_ un num_r mai mare de bii. De exemplu dac_ avem un num_r cu n bii lungime prestabilit_ atunci nu mai pot fi codificate n binar

2 n numere ci 2 0 , 8 3 n , unde valoarea 0,83n se obine din raionamentul:


9

2 10 1 0 2 4 1 0 0 0 1 0 3 1 0 ..............3 n 10 x ............... x = n = 0 ,8 3 n 4 12
Capacitatea de reprezentare a num_rului pe n bii este: % n binar 2
n

numere;
n 4

n BCD 1 0 .

la circuitele care lucreaz_ cu aceste numere operaiile fundamentale de adunare sunt mai complicate datorit_ faptului c_ transportului posibil ntre biii adiaceni nu i corespunde o pondere determinat_ fix_, ci ea difer_: dac_ e intracvartet sau intercvartet.

1.1.2.2 Reprezentarea numerelor n virgul_ mobil_


Exist_ multe aplicaii, cu prec_dere n domeniul calculelor tiinifice, care necesit_ acoperirea unui domeniu valoric mare, care n general nu poate fi acoperit prin reprezentarea n virgul_ fix_. n aceste cazuri se apeleaz_ la cel de-al doi-lea tip de reprezentare, care face apel la aa numita notaie tiinific_(nu este o notaie poziional_), n conformitate cu care un num_r este reprezentat prin 3 numere n forma:

M *BE
unde E-exponent, B-baza, M-mantisa. Mantisa M este reprezentat_ n semn-m_rime sau n complement de 2, iar exponentul E este reprezentat n semn-m_rime sau n cod exces de o valoare. Baza B este uzual 2 sau o putere a lui 2 i foarte rar este 10. Se spune despre baz_ c_ este built-into-circuit (s_pat_ n hardware) pentru c_ ea nu apare n mod explicit. Domeniul valoric al unui num_r reprezentat n virgul_ flotant_ depinde n principal de mantis_, dar i de baz_. ntr-un num_r de n bii dat pot fi reprezentate doar 2 numere, i cu ct baza este mai mare cu att gama valoric_ este mai mare dar valorile sunt mai rare n intervalul dat. Precizia depinde de mantis_ i n acest_ reprezentare avem posibilitatea de a reprezenta numere reale. Reprezentarea n virgul_ flotant_ se confrunt_ cu dou_ probleme:
n

10

1. Problema mantisei, n conformitate cu care un num_r poate fi reprezentat n mod redundant:

0 ,1 * 1 0 1 8 = 1 * 1 0 1 7
n vederea nceperii unor operaii n virgul_ flotant_ i n vederea obinerii rezultatelor n virgul_ flotant_ se apeleaz_ la o form_ normal_ de reprezentare a numerelor sau altfel spus se apeleaz_ la operaia de normalizare a numerelor astfel: % dac_ num_rul de virgul_ flotant_ este reprezentat n semn-m_rime atunci se consider_ un num_r normalizat dac_ prima cifr_ binar_ normal_ succesiv_ virgulei este 1 i nu 0, adic_ se elimin_ zero-urile nesemnificative (leading 0's); dac_ num_rul de virgul_ flotant_ este reprezentat n complement de 2 atunci se spune c_ este normalizat dac_ x 0 (bitul de semn) i

x 1 (bitul cel mai semnificativ al mantisei) difer_ valoric;


% operaia de normalizare implic_ deplas_ri ale reprezent_rii(ale vigulei) la dreapta, cu incrementarea exponentului, i la stnga, cu decrementarea exponentului; prin normalizare mantisa obine valori n cmpul restrns:

1 M < 1. 2
2. Problema exponentului, care este legat_ de problema lui 0.

0*BE
Datorit_ unei erori de rotunjire sau alt_ eroare mantisa n loc s_ fie 0 este un num_r foarte mic 0 i dac_ exponentul are o valoare semnificativ_ atunci n ansamblu num_rul ar putea fi mult diferit de 0. Pentru a evita aceast_ situaie evident c_ exponentul ar trebui s_ fie cel mai mic num_r reprezentabil n cmpul de exponent. Dac_ avem k bii alocai exponentului din care un bit atribuit semnului atunci rezult_ c_ n cmpul de exponent pot fi reprezentate 2 numere: n semn-m_rime n intervalul 2 de 2 n intervalul 2
k

k 1

; 2 k 1 1] , diferena fiind datorat_ anomaliei


11

k 1

+ 1; 2 k 1 1] , iar n complement

complementului de 2 (cu 2 reprezent_ri pentru 0). n calculator apare necesitatea test_rii lui 0 care este inclus_ ca microoperaie n mai multe instrucii. Pentru a uniformiza aceste test_ri pentru numere ntregi i pentru numere n virgul_ flotant_, se cere ca pattern-ul (modelul) de 0 s_ fie constituit dintr-un ir de bii de 0, dar, din precizarea anterioar_ rezult_ c_ la exponent ar trebui s_ avem k ( 2 1 sau 2 ). Din aceast_ cauz_ exponentul se preconizeaz_ a fi reprezentat ntr-un cod exces de k, obinndu-se un exponent deplasat alias caracteristic_, obinut pe seama unui deplasament alias bias, egal cu k ( 2 1 sau 2 exces de k 0 va fi reprezentat printr-un ir de zerouri.
k 1 k 1 k 1 k 1

). n reprezentarea

1.1.2.2.1 Standardul IEEE 754 pentru reprezentarea numerelor n virgul_


flotant_ La nceputul anilor 80 fabricanii de calculatoare uzitau de modalit_i diferite de reprezentare ale numerelor n virgul_ flotant_, adic_ fiecare avea formatul propriu pentru virgul_ flotant_. Difereau num_rul de bii pentru reprezentarea num_rului i al mantisei, difereau modalit_ile de tratare ale underflow-ului i overflow-ului precum i a condiilor speciale(mp_rirea la 0, extragerea de r_d_cin_ p_tratic_ dintr-un num_r negativ, etc.). Toate acestea f_ceau ca software-ul elaborat pentru un tip de calculator s_ nu poat_ fi folosit pe un alt calculator, adic_ nu era asigurat_ portabilitatea programelor. Pentru a corecta acest_ situaie, la sfritul deceniului opt, IEEE a organizat un comitet pentru standardizarea aritmeticii n virgul_ mobil_. Scopul urm_rit era acela de a permite schimbul de date n vigul_ mobil_ ntre calculatoare diferite i de a furniza proiectaniilor hardware un model considerat corect. Rezultatele activit_ii au condus la Standardul IEEE 754(IEEE,1985) propus de profesorul de matematic_ William Kahan,de la Berkley. Standardul definete trei formate:precizie simpl_(32 bii), precizie dubl_(64 bii) i precizie extins_(80 bii).

N = ( 1) S * 2 E 1 2 7 * (1. M )

unde 0<E<255.

Exponentul are alocai 8 bii n care pot reprezenta pattern-urile binare. n realitate E este un num_r cu semn ntre -127 i +128, dar folosim reprezentarea n exces de 127. ntru-ct mantisa este reprezentat_ n semn-m_rime i este un num_r normalizat(adic_ prima cifr_ de 1 apare dup_ virgul_), tim c_ primul bit dup_ virgul_ este 1. S-a trecut la deplasarea spre stnga a num_rului normalizat a vechii mantise, iar 1 nu se mai reprezint_ explicit n forma c i , ci este built-into-circuit, deci este implicit, fapt prin care se m_rete precizia de reprezentare a num_rului n virgul_ flotant_. Mantisa (significantul) are cmpul 12

valoric nu

1 M < 1 ci 1 S < 2 . 2

n formatul pe 64 de bii n cmpul de exponeni avem 11 bii iar restul de 52 de bii sunt pentru mantis_.

N = ( 1) S * 2 E 1 0 2 3 * ( 1. M )

unde 0<E<2047.

Acest standard are n plus urm_toarele convenii de reprezentare a unor condiii speciale. Ele sunt urm_toarele: 1. E=255(2047) i M 0 corespunde aa numitului format NaN-not a number i prin acest format se semnaleaz_ procesorului apariia pe parcursul calculelor a unor situaii speciale de tipul mp_ririi la zero sau extragere de r_d_cin_ p_tratic_ dintr-un num_r negativ,etc. n acest caz intr_ ntr-un trap prin care se testeaz_ modul n care apare aceast_ situaie. E=255(2047) i M=0 corespunde formatului care indic_ situaia de
S

2.

overflow. N = ( 1) arat_ faptul c_ standardul admite aritmetica cu infinii. 3. E=0 i M 0, acest format corespunde situaiei de denormalizare.

N = ( 1) S * 2 1 2 6 ( 0 . M )
Diferena dintre numerele nenormalizate i numerele denormalizate este c_ la numerele nenormalizate se fac operaiile i de abia la sfrit se normalizeaz_. Numerele denormalizate prezint_ un underflow gradual adic_ un underflow de tipul: r = 10 pe 4 cifre semnificative

x = 0 ,1 2 3 4 * 1 0 E m in ; x = 0 , 0 1 2 3 * 1 0 E m in ; 10 x = 0 , 0 0 1 2 * 1 0 E m in ; 100 x = 0 , 0 0 0 1 * 1 0 E m in ; 1000 x = 0. 1 0 0 00
Situaia de denomalizare care corespunde acestei codific_ri speciale ne 13

permite prin pierdere de precizie obinerea unui underflow gradual n loc de flush-to-zero underflow.

y = 0 ,1 2 56 * 1 0 E m in ; y x = 0 y x = 0 , 0 0 22 * 1 0 E m in .
4. E=0 i M=0 atunci N = ( 1) * 0 . Acest format reprezint_ codificarea zero-ului de virgul_ flotant_.
S

1.1.2.2.2 Standardul IBM S/360, S/370


Standardul prezint_ trei formate:precizie simpl_(32 bii), precizie dubl_(64 bii) i precizie extins_(80 bii).

N = ( 1) S * 1 6 E 6 4 ( 0 . M )
n cmpul exponentului se reprezint_ numere ntregi n exces de 64 i pentru toate versiuniile e format din 7 bii. Mantisa este un num_r fracionar reprezentat n semn-m_rime i ea este f_r_ bit ascuns(hidden bit->(0.M)). Baza nu mai este 2 ci 16 i normalizarea se face n termeni hexazecimali. n acest standard nu avem posibilitatea de a reprezenta situaii speciale de tipul NaN-not a number, nici de overflow, nici de denormalizare, iar zero este reprezentat cu zero peste tot. Datorit_ bazei 16 cmpul valoric de reprezentare a numerelor este mult mai mare: 5 , 4 * 1 0
7 9

7 ,2 4 * 1 0 7 5 .

Exemple: 1) Reprezentarea lui N= -999,71875= -1111100111,10111 = -1,11110011110111* 2


9

9+127=128+8

=1.100|0100|0.111|1001|1110|1110|...0|...0

0 0

N=C479EE00 n IEEE 754

14

64+3=67

E=67

N=C3E7B80 n IBM S/360 2) IEEE 754


hidden bit

1.2. Dispozitive de adunare i sc_dere 1.2.1 Sumatorul serial (Serial adder) Este un automat secvenial a c_rui comportare este dat_ de tabelul de st_ri. Avem dou_ st_ri posibile din punct de vedere funcional: S 0 - starea la care se adun_ la un moment dat 2 bii i din starea anterioar_ nu a provenit transport(carry); S 1 - starea la care se adun_ la un moment dat 2 bii i avem transport.

Inputs

Outputs

xi
0 0 0 0 1 1 1 1

yi
0 0 1 1 0 0 1 1

c i +1
0 1 0 1 0 1 0 1

zi
0 1 1 0 1 0 0 1

ci
0 0 0 1 0 1 1 1 15

Tabelul tranziiilor este prezentat mai sus. La construirea sumatorului folosim bistabile de tip JK:

y ( t + 1) = J ( t ) y ( t ) + K ( t ) y ( t )
Ecuaiile corespunz_toare unei celule sumator complet sunt:
z = x 1 x 2 c ( t 1) c ( t ) = x 1 x 2 + x 1 c ( t 1) + x 2 c ( t 1)

La versiunea dat_ avem i o alternativ_ dac_ dup_ tabel am fi ales un bistabil de tip D (delay element). La fiecare impuls de clock adun 2 full adder cell bit, rezult_ c_ dac_ vreau s_ adun dou_ numere a n bii avem nevoie de n impulsuri de clock. Din nefericire un sumator serial execut_ suma ntr-un num_r de impulsuri de clock egal cu n, dac_ operanzii au n bii i de accea, uzual, se apeleaz_ la sumatoare paralele.

16

1.2.2 Sumatoare paralele 1.2.2.1 Ripple-carry-adderRCA (Sumator cu transport propagat serial) Un sumator cu transport propagat serial se obine prin legarea n serie (cascad_) a n celule sumator complet, dac_ avem operanzi pe n bii. Caracteristic_: Operaia propriu-zis_ se execut_ ntr-un singur impuls de clock numai c_ perioada acestui clock trebuie s_ acopere intervalul de timp necesar propag_rii transportului n manier_ serial_ prin ntreaga schem_. Dac_ delay-ul (ntrzierea) printr-un circuit poart_ este d, atunci perioada clock-ului trebuie s_ fie T 2nd. Operaia de sc_dere se bazeaz_ pe adunarea complementului, i pentru generarea complementului vom apela la o ad_ugare la schem_:

s = 0 A + B B + A ss = 1 B + A + 1 = B A , A
1.2.2.2 Sc_z_toare binare (Binary full subtracter) Cnd operaia dominant_ ca frecven_ este sc_derea se impune favorizat_ ipoteza unui sc_z_tor binar, adic_ s_ avem o schem_ de tipul RCA obinut_ prin cascadarea a n celule sc_z_toare complete (full subtracter) a c_ror sintez_ se realizeaz_ pornind de la urm_torul tabel de adev_r:

Inputs

Outputs

x0
0 0 0 0 1 1 1 1

y0
0 0 1 1 0 0 1 1

c1
0 1 0 1 0 1 0 1

z0
0 1 1 0 1 0 0 1

 0 1 0 0 0 0 1 0 17

unde b i este borrow in, iar b i +1 este borrow out.

y i x i bi = z i
Ecuaiile fundamentale ale unui sc_z_tor complet sunt:

z i = x i y i bi b i +1 = y i x i + y i b i + x i b i
Se obine un sc_z_tor complet din celule diferen_.

1.2.2.3. Carry-lookahead-adderCLA (Sumator cu transport anticipat) La anterioarele soluii faptul c_ transportul trebuia propagat n manier_ serial_ greva asupra performanei soluiei i s-a plecat de la ideea mbun_t_irii timpului de propagare a transportului prin generarea n mod anticipat al transportului ntr-o manier_ care s_ in_ cont de istorica valoric_ a operanzilor. g 0 -variabila de generare a transportului;

p 0 -variabila de propagare a transportului;


n manier_ recursiv_ avem: c 1 = a 0 b 0 + a 0 c 0 = a 0 b 0 + ( a 0 + b 0 ) c 0 g p c 2 = a 1 b1 + ( a 1 + b1 ) c 1 = g 1 + p 1 g 0 + p 1 p 0 c 0 g p c 3 = g 2 + p 2 g 1 + p 2 p 1 g 0 + p 2 p 1 p 0 c 0 c = g + p g + p p g + p p p g + p p p p c 3 2 1 0 0 3 3 2 3 2 1 3 2 1 0 4




0 0

1 1

Avantajul: 18

avem doar 5 niveluri logice fa_ de 2n niveluri logice ca la ripple-carry-adder pentru obinerea sumei. Cele 5 niveluri logice sunt: 1-generarea lui p i g; 2,3-generarea lui carry; 4,5-SAU-EXCLUSIV pentru sum_ ( se realizeaz_ pe 2 niveluri logice). Dezavantaje: crete num_rul intr_rilor din I-urile pentru carry i SAU-rile (pentru bitul i avem i+1 intr_ri); crete fan-out-ul p-urilor, adic_ num_rul de circuite pe care le poate alimenta. De exemplu fan-out-ul lui p n 1 este egal cu n; structura este neregulat_ i crete n complexitate i de aceea apar probleme la implementare. Toate aceste dezavantaje au deschis o problem_ a construciei CLA i problema acestei construcii se bazeaz_ pe urm_torul raionament:
c1 = g 0 + p 0 c 0 c 0 = G 0 ,1 + P0 ,1 c 0 = g 1 + p 1 g 0 + p 1 p 0 c 0 G 0 ,1 = g 1 + p 1 g 0 P0 ,1 = p 1 p 0

Generaliznd relaiile de mai sus avem:

c = G i , K + Pi , K c i K +1 G i , K = G j +1 , K + P j +1 , K G i , j Pi , K = Pi , j P j +1 , K
Aceste relaii sunt valabile dac_ i,j,k: i j < K i G i , i = g i i Pi = p i ,i . De exemplu pentru i=0, k=3 iar j=0,1,2 :
P0 , 3 = P0 ,1 P2 , 3 = P0 , 0 P1 ,1 P2 , 2 P3 , 3 G 0 , 3 = G 2 , 3 + G 0 , 2 P2 , 3 = G 3 , 3 + P3 , 3 G 2 , 2 + P2 , 2 P3 , 3 ( G 1 ,1 + G 0 , 0 P1 ,1 ) = = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p1 g 0

Schema CLA este prezentat_ n cele ce urmeaz_:

19

n termeni de VLSI (very large scale integration) schema se implementeaz_ foarte uor c_tigndu-se spaiu de siliciu. Complexitatea circuitului n termeni de spaiu este n lo g 2 n , iar n termeni de timp este lo g 2 n . Dependent de tehnologie este posibil ca soluia CLA s_ o combin_m cu soluia RCA pentru c_ aceast_ combinaie s-ar putea s_ duc_ la o combinaie favorabil_ n termeni de timp/cost. O soluie hibrid_ cu RCA este prezentat_ n urm_toarea figur_:

20

Mai exist_ nc_ o soluie hibrid_ sugerat_ de figura urm_toare:

1.2.2.4 Carry-skip adder(CSkA) Aceast_ soluie este situat_ ca i cost i performan_ de siliciu ntre RCA i CLA, i ea pornete de la ecuaia corespunz_toare lui CLA:
P0 , 3 = p 3 p 2 p 1 p 0 G 0 ,3 = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p 1 g 0

S-a ajuns la urm_toarea soluie tehnic_: Aceast_ soluie tehnic_ se bazeaz_ pe faptul c_ n ceea ce privete tehnologia CMOS prin precharging este posibil s_ se realizeze iniial carry-urile cu 0(intersegment), prezentate mai sus. Carry-ul se poate genera simultan pentru toate segmentele, ignornd carry-ul care intr_ n porile I. 21

n situaia n care din intr_ri pentru un anumit segment nu s-a generat carry datorit_ carry-ului de intare n segment, este posibil totui s_ fie generat carry dar acesta nu va fi generat n manier_ serial_ conform soluiei RCA ci va omite(skip) propagarea serial_ prin traversarea porii I condiionat_ pe intr_ri de factorul logic Pi , j , care n manier_ CLA reprezint_ produsul p 3 p 2 p 1 p 0 . Se spune c_ corespunz_tor fiec_rui segment care este RCA se genereaz_ termeni de tipul G. Termenii P0 , 0 , P0 ,1 , ... se obin mult mai simplu dect termenii

G 0 , 0 , G 0 ,1 , ... .Termenii de tip P sunt generai la segmentele externe. S_


admitem c_ n primul segment RCA avem n general k ranguri i s_ admitem c_ pe 2 niveluri logice avem o ntrziere d. n aceste condiii n situaia cea mai defavorabil_ cnd avem o propagare de transport este valabil_ relaia de mai jos:

num_rul de segmente interne

num_rul de segmente externe

unde: Tad - timpul maxim n care sumatorul adun_ dou_ numere; k - num_rul de ranguri corespunz_toare unui segment; n - num_rul total de ranguri ale sumatorului; d - ntrzierea pe 2 niveluri logice. De exemplu, pentru schema noastr_ timpul de propagare maxim este:

Ta d = ( 4 + ( n = 20

20 2 ) + 4 ) d = 1 1d 4

Se poate obine o soluie mai performant_ dac_ se mparte sumatorul n segmente inegale( se apeleaz_ la un artificiu). Aceast_ soluie are timpul de propagare:

T a d = ( 6 + 1,5 + 2 ) d
Concluzie: Este posibil ca prin divizarea num_rului de ranguri al sumatorului n segmente inegale RCA s_ se obin_ o soluie mai performant_ dect cea corespunz_toare mp_ririi n segmente RCA egale. 22

1.2.2.5 Carry-select adder (CSeA) Este o alt_ modalitate de a efectua operaia de adunare paralelizat, pe baza unei investiii suplimentare care este sugerat_ de figura de mai jos. n anumite tehnologii faptul c_ semnalul de carry trebuie s_ comande foarte multe intr_ri duce la ntrzieri i de aceea semnalul trebuie amplificat. Carry-ul real selecteaz_ suma parallel calculat_(anterior calculat_). Problema care se pune este cum s_ se fac_ mp_rirea intr_rilor n segmente RCA astfel inct adunarea s_ se fac_ n forma cea mai favorabil_.

Vom face o comparaie ntre toate soluiile de sumatoare prezentate pn_ acum: Type RCA CLA CSkA CSeA Space O( n ) O( n lo g n ) O( n ) O( n ) 23 Time O( n ) O( lo g 2 n ) O( n ) O( n )

1.2.2.6 Manchester (Kilborn) adder Este un sumator asem_n_tor soluiei RCA care prezint_ un lan serial, care poart_ o denumire specific_ Manchester Chain, i care este implementat nu cu pori logice lente ci cu comutatoare (switch-uri) rapide situate de-a lungul unui lanului.

S g -swich generation (comutatorul de generare a transportului); S 0 -0 carry (adic_ nu se genereaz_ carry); S p -switch plus (comutatorul de propagare a transportului care vine de la rangul
anterior).

Dac_ avem a i b i atunci se propag_ oricum 1 logic, iar dac_ avem a i b i atunci se propag_ oricum 0 logic. Soluia a revenit odat_ cu epoca VLSI prin aa numitele pass transistors, de exemplu la AMD-29050 (Lynch-Swartzlnder). n termeni de VLSI aceste celule se implementeaz_ favorabil, de mare vitez_.

1.2.2.7 Carry-completion adder (CCA) Pn_ la aceast_ soluie am considerat c_ am lucrat sincron. Ea urm_rete ca n dependen_ de configuraiile binare particulare ale operanzilor s_ determin terminarea operaiei ntr-o manier_ asincron_. n vederea implement_ri acestei idei se uziteaz_ suplimentar de dou_ linii de carry:

24

carry0, care se genereaz_ fie cnd ambii bii care se adun_ de c_tre o celul_ sunt 0, fie cnd unul dintre ei este 1, dar din rangul anterior nu a venit transport(incoming carry); carry1,care se genereaz_ cnd cei doi bii care se adun_ de c_tre o celul_ sunt 1, dar din rangul anterior a venit transport. Pentru a implementa aceast_ idee, clasica structur_ de full adder se modific_ prin adaosul revendicat de propagarea celor dou_ tipuri de carry: carry0 i carry1.Vom avea:
c i0+1 = a i b i + ( a i b i + a i b i ) c i0 1 c i +1 = a i b i + ( a i b i + a i b i ) c i1

Carry-completion adder-ul are urm_toarea figur_:

Este posibil s_ apar_ semnalul parazit carry-completion signal(CC), care 25

are urm_toarea form_:


1 C C = ( c 10 + c 11 ) ... ( c i0 + c i1 ) ... ( c n0 1 + c n 1 )

Circuitul I are un num_r mare de intr_ri(53) i nu poate fi realizat pe un singur nivel, ceea ce reprezint_ o sc_dere(pentru c_ apar ntrzieri).

1.2.2.8 Parity checked adder. Duplication carry. Carry-dependent sum

adder
Avnd n vedere proliferarea aplicaiilor la care se dorete maximizat atributul de fiabilitate sau de toleran_ la defectare, tot mai frecvent se apeleaz_ la soluii orientate, croite, spre a permite atingerea dezideratelor de fiabilitate. Drept consecin_ unul din controalele foarte des r_spndite n domeniul calculatoarelor e controlul de paritate uzitat din cele mai vechi timpuri pentru verificarea informaiei, se dorete extins n ceea ce privete acoperirea operaiilor aritmetice i logice.

n situaia n care la dispozitivul de nsumare se manifest_ un defect se impune controlul corectei funcion_ri a acestuia. Defectul mai probabil e s_ fie singular i, din paleta de defecte posibile, vom considera defectul de tip logic, adic_ bloc_ri la 0 (stuck-at-0) sau la 1 (stuck-at-1) logic (o intrare sau o 26

ieire r_mne ag_at_ pe o valoare i nu se mai mic_ de pe ea). Pentru controlul posibilelor defecte dintr-un calculator n general una din strategiile foarte r_spndite const_ n aa numitul control de paritate. Asta implic_ prin definiie ca fiecare cuvnt rezultat n calculator s_ fie alc_tuit dintr-un num_r, fie par (even parity), fie impar (odd parity) de unit_i binare. Pentru aceast_ codificare este necesar sacrificiul unui bit suplimentar ce trebuie ad_ugat cuvntului format din biii utili. Cuvntul codificat ntr-un cod de paritate (par_/impar_) e emis pe magistral_, i la recepia cuvntului se verific_ paritatea i dac_ corespunde atunci se consider_ c_ emisia s-a efectuat corect, iar dac_ nu se verific_ se spune c_ s-a detectat o eroare(provocat_ de un defect). Acest control este utilizat la transmiterea informaiei la memorie. Punem n discuie problema nsum_rii controlate prin paritate. F_r_ a pierde din generalitate admitem c_ lucr_m n pariate par_. Avem doi operanzi:

A = a n 1 ... a 0 B = b n 1 ... b 0
c_rora le ata_m 2 bii de paritate:

a p = a n 1 ... a i ... a 0

b p = b n 1 ... b i ... b 0
Suma lor este S = s n 1 ... s 0 cu bitul de paritate s p = s n 1 ... s i ... s 0 .

s p = ( a n 1 b n 1 c n 1 ) ... ( a i b i c i ) ... ( a 1 b 1 c 1 ) ( a 0 b 0 c 0 ) = = a p b p c n 1 ... c 0



cp

Pot s_ efectuez un control al operaiei de adunare care s_ se bazeze pe schema prezentat_ anterior. Checker-ul este o poriune de control care se ataeaz_ sumatorului propri-zis pentru a se controla operaiile care se fac cel mai des. Dac_ defectul se manifest_ pe lanul de carry atunci num_rul de bii de carry mpreun_ cu num_rul de bii de sum_ eronai e ntotdeauna par(burst error), i prezena unui astfel de tip de defect nu poate fi detectat prin controlul de paritate. Un astfel de exemplu cu situaia de stuck-at-1 este prezentat n continuare:

27

A = 0 1 1 01 1 0 1 B = 0 0 1 01 1 1 0 // S = 1 0 0 11 0 11 // C = 1 1 0 11 0 0 0
1 1 1 0

ap =1 bp = 0 sp = 1 cp = 0 ap =1 bp = 1 sp = 0 cp = 0

Un exemplu de burst error cu situaia de stuck-at-0 l prezent_m n continuare:

A = 1 0 1 01 1 0 1
0 1 1 1

B = 0 0 0 10 1 1 0 //// S = 11 0 0 0 0 1 1 /// C = 0 0 111 0 0 0


0 0 0

n cazul cnd eroarea nu poate fi detectat_ avem dou_ soluii: A) Carry-dependent sum adder

Ideea fundamental_ a acestei soluii este ca atunci cnd c i + j este n eroare s_ fie provocat_ n mod artificial i afectarea prin eroare a bitului imediat inferior al sumei, adic_ s i + j . Provocnd un pachet de erori cu un num_r impar de erori poate fi pus n eviden_ controlul de paritate.

28

s i = a i c i c i +1 + b i c i c i +1 + a i c i c i +1 + b i c i c i +1 + a i b i c i c i +1 + a i b i c i c i +1 g i = a i bi p i = a i + bi s i = p i c i c i +1 + g i c i c i +1 + p i c i c i +1 + g i c i c i +1

B) Duplicarea lanului de carry

Am conturat clasica structur_ de carry lookahead. Am prezentat soluia de verificare a sumatoarelor i am dat versiuni prin care la defecte singulare ca de exemplu blocare la o valoare apar dou_ noi tipuri de sumatoare: sumatoare cu duplicarea lanului de carry i sumatoare care depind de carry. 1.2.2.9 Conditional-sum adder (CSuA) Principiul sumatoarelor cu sum_ condiionat_ const_ n generarea sumei gradual pe pai,n fiecare pas efectundu-se suma pe stagii formate din perechi att n situaia n care se genereaz_ carry ct i n cazul n care nu se genereaz_ carry. Stagiile iniiale formate din perechi de bii se dubleaz_ ca dimensiune la fiecare pas, la pasul 2 avem un grup de 4 bii, la pasul 3 avem 8 bii, etc. La fiecare se dubleaz_ num_rul biilor de sum_ coreci. Schema const_ dintr-o construcie piramidal_ format_ din niveluri, unde n reprezint_ num_rul de bii ai cuvintelor nsumate. Detaliind principiul expus avem urm_toarea secven_ de pai: 29

Pas1: Pentru fiecare pereche de bii se genereaz_ biii de sum_ respectiv carry n condiiile n care din rangul anterior sosete pe de o parte carry0 i carry1. Pas2: Se generez_ 2 stagii formate din perechi i se selecteaz_ n dependen_ de valoarea lui carry interstagii, valorile corespunz_toare pentru sum_ i carry. Pas3: Se repet_ pasul 2 n mod iterativ dublndu-se la fiecare iteraie dimensiunea stagiilor, proces care se continu_ pn_ la epuizarea biilor. Stage i A B S S =0 C C=0 C=1 C=0 S=1 C=1 C=0 S=2 C=1 C=0 S=3 Stagii: C=1 7 1 0 C 0 1 0 0 0 0 0 /// S 1 0 1 1 1 1 1 /// /// 6 0 0 C 0 0 S 0 1 0 1 0 1 0 /// /// 5 0 1 C 0 1 0 1 S 1 0 1 0 1 0 0 /// /// 4 1 0 C 0 1 S 1 0 1 0 1 0 0 /// /// 0 /// /// 0 /// /// 1 /// /// 0 /// 3 0 1 C 0 1 1 1 1 S 1 0 0 0 0 2 1 1 C 1 1 S 0 1 0 1 0 1 0 0 C 0 0 0 S 0 1 1 1 1 0 0 0 1 1 C 1 S 0

30

Detaliul circuitului:

s0 c1 s1 c 2

= a 0 b0 = a 0 b0 = ( a 1 b1 ) c1 + a 1 b1 c1 = a 1 b1 c1 = ( a 1 + b1 ) c1 + a 1 b1 c 1

Apar nite forme degenerate ale carry-ului i sumei:

s2 = (a 2 b2 ) c 2 + a 2 b2 c 2 c 3 = ( a 2 + b 2 ) c 2 + a 2 b 2 c 2
c3 = a 2 + b2 a 2 b2 + a 2 + b2 c2 + a 2 b2 c2 s3 = (a 3 b3 ) c3 + a 3 b3 c3 = ( a 3 b3 ) a 2 + b2 c 2 + ( a 3 b3 ) a 2 b2 c2 + a 3 b3 (a 2 + b2 ) c2 + a 3 b3 a 2 b2 c 2 c 4 = ( a 3 + b 3 ) c 3 + a 3 b 3 c 3 = ( a 3 + b3 ) ( a 2 + b2 ) c 2 + (a 3 + b3 ) a 2 b2 c2 + a 3 b3 a 2 b2 c2 + a 3 b3 a 2 b2 c2

31

1.2.2.10 Carry-save adder(CSA) Aceast_ soluie se caracterizeaz_ prin faptul c_ este alc_tuit din mai multe niveluri de celule sumatoare complet disjuncte. O astfel de structur_ de sumatoare permite nsumareala fiecare nivel nu a doi operanzi ci a trei operanzi. Ea apare ca foarte util_ la accelerarea operaiei de nmulire, care se bazeaz_ pe adun_ri repetate. Menion_m c_ pentru a obine suma corect_ bazat_ pe CSA la salvarea transportului este obligatoriu ca ultimul nivel de nsumare s_ fie reprezentat de un sumator clasic(de exemplu un RCA). Dac_ la fiecare etaj de carry-save mp_n_m un nivel de registre atunci operaia de nmulire se poate executa n flux, pe m_sur_ ce nivelul de carrysave adun_ operanzii se poate efectua o suprapunere de operaii pe mai multe nivele. Are loc un overlap total prin care pot accelera operaia de nmulire simultan i care duce la creterea capacit_ii.

Este evident c_ la nivelul unui singur bit produsul aritmetic coincide cu produsul logic.

32

1.2.2.11 Decimal ripple carry adder La adunarea numerelor zecimale reprezentate n BCD pot fi utilizate toate soluiile de adunare prezentate anterior i pentru simplitate vom expune problema n contextul RCA, scop n care prezent_m urm_toarea schem_:

1.3 Binary multipliers (nmulitoare binare) 1.3.1 Caracteristici generale ale implement_rii operaiei de nmulire n calculator
Fie: X-multiplier; Y-multiplicand; P-product; X*Y=P

33

Pentru a efectua produsul exist_ mai multe soluii: a. Bazat_ pe utilizarea unui num_r_tor care s_ asigure adunarea repetat_ a multiplicand-ului Y la el nsui de un num_r de ori egal cu valoarea multiplier-ului X; Operaia se poate efectua adunnd produsele pariale de 1 bit corespunz_tor deplasate dup_ clasicul exemplu al efectu_rii operaiei cu creionul pe hrtie. Stocarea acestor produse intermediare de 1 bit deranjeaz_ prin spaiul de memorie revendicat de aceea n calculator nu se implementeaz_ aceast_ forma ci o proxim_ form_. Bazat_ pe calculul unor produse pariale de tipul Pi +1 = Pi + x i * 2 Y . ntr-o manier_ secvenial_ p_strnd fix ca poziie produsul parial i deplasndu-l pe Y se efectueaz_ adun_ri repetate.
i

b.

c.

d.

Uneori este favorabil s_ nu se p_streze fix produsul ca poziie ci s_ se p_streze fix ca poziie Y, deplasndu-l nu la stnga ca n cazul c) ci deplasnd produsul parial la dreapta.

P = Pi + x i * Y 1 Pi +1 = 2 * Pi
1.3.2 Dispozitiv secvenial pentru nmulirea numerelor reprezentate

n semn-m_rime
Vom prezenta o structur_ de dispozitiv de nmulire care permite corespunz_tor unor operanzi de n bii efectuarea operaiei de nmulire n n cicluri de clock. Pentru a efectua operaia sunt necesare 3 registre n care s_ fie stocai n prim_ instan_ operanzii, ntr-o alt_ instan_ produsele intermediare i n ultim_ instan_ produsul final. Vom considera c_ operaia de nmulire se efectueaz_ ntre numere fracionare pe 8 bii dintre care bitul cel mai semnificativ este bitul de semn. Schema este compus_ din urm_toarele componente: - o magistral_ bidirecional_, mp_rit_ n 2 p_ri; - 3 registre, fiecare pe 8 bii: - registrul Q (quotient) stocheaz_ iniial operandul nmulitor (multiplier) X; - registrul M stocheaz_ pe tot parcursul operaiei cel_lalt operand denmulitul Y; - registrul A (acumulator) iniial este ters i el mpreun_ cu registrul Q formeaz_ un registru de deplasare pe 16 bii, n acest registru A.Q vor fi stocate 34

produsele pariale i n final rezultatul nmulirii pe 2*8=16 bii dintre care cei mai semnificativi sunt n registrul A i cei mai puin semnificativi sunt n registrul Q. - un sumator paralel pe 8 bii; - o unitate de control care se ocup_ de semnalele de control.

X = x 7 x 6 ... x 1 x 0 = x 7 x M P = X Y = P1 4 P M Y = y 7 y 6 ... y 1 y 0 = y 7 y M
unde x 7 , y 7 i P1 4 sunt biii de semn, iar x M , y M i P M biii de m_rime. Avnd n vedere c_ p_rile de m_rime ale numerelor sunt pe 7 bii produsul poate fi pe maxim 14 bii. Operaia se desf_oar_ printr-o secven_ de pai de adunare/deplasare descrii astfel:

Pi = Pi + x i Y 1 Pi +1 = 2 * Pi
Deplasarea la dreapta cu o poziie este echivalent cu a mp_ri num_rul la 2. Pe parcursul operaiei bitul nmulitorului x i care a fost deja operat nu mai este necesar ulterior n cadrul calculelor i el poate fi eliminat. Renunarea la el 35

se face prin deplasarea dublului registru A.Q cu o poziie la dreeapta i proximul bit x i va fi n rangul sel mai puin semnificativ Q 0 a registrului Q. Testarea valorii lui x i se face mereu din bitul Q 0 al registrului Q i acesta e aranjamentul favorabil care a f_cut ca n calculator implementarea operaiei s_ se realizeze prin nmulitor deplasabil i prin produs parial deplasabil(a 4-a versiune din paragraful anterior). Pe aceast_ schem_ au fost marcate valori pentru leg_turi care reprezint_ dimensiunea leg_turii, excepie f_cnd acele leg_turi constituite dintr-un singur fir. Semnalele de control au fost reprezentate printr-o linie ntrerupt_ spre deosebire de cele de date care sunt reprezentate printr-o linie continu_. Funcionarea unei asfel de structuri se poate descrie principial n dou_ moduri distincte: fie printr-o ordinogram_(flow chart), fie printr-o descriere printr-un limbaj hard de tipul VHDL. Ordinograma este o schem_ logic_ care este caracterizat_ prin dou_ categorii de blocuri:operative i decizionale. Blocurilor operative li se aloc_ microoperaiile care pot fi aglomerate pe acelai impuls de clock, iar blocurilor decizionale le corespunde testerea anumitor condiii n funcie de care pot fi efectuate salturi, respectiv pot ap_rea bucle n reprezentarea prin ordinogram_.

COUNT7 reprezint_ starea nemodificat_ a lui 1 peste tot n num_r_torul COUNT, adic_ stare corespunz_toare st_rii pailor (celor 7 pai de adunare/deplasare)

36

cnd se iese din aceast_ bucl_ dup_ SAUEXCLUSIV n bitul A 7 se introduce semnul i se face ajustarea produsului. Pentru descrierea funcional_ care este prezentat_ printr-o ordinogram_, alternativa se obine printr-un limbaj de descriere hardware VHDL(Very Hardware Description Language) a lui Charles Babbage. O descriere VHDL a unui sumator incomplet este: entity half-adder is port(x,y:in bit,sum,carry:out bit); end half-adder; arhitecture behavior of half-adder is begin sum x XOR y; carry x and y; end behavior; arhitecture structure of half-adder is component xor-circuit port(a,b:in bit,c:out bit); end component; component nand-gate port(d,e:in bit,f:out bit); end component; signal alpha:bit; begin XOR:xor-circuit portmap(a x,b y,c sum); NAND1:nand-gate portmap(d x,e y,f alpha); NAND2:nand-gate portmap(d alpha,e alpha,f carry); end structure; Exist_ dou_ p_ri eseniale: % partea de entity, care constituie un enun formal al structurii sistemului ca i cnd ar avea o singur_ component_. Aceast_ parte descrie conexiunile sistemului cu sisteme, dispozitive externe f_r_ a descrie n nici un fel comportarea i structura intern_ a sistemului. Prin partea de entity se specific_ numele sistemului i se specific_ semnalele de intrare/ieire(in/out) cu numele acestora. Se precizeaz_ c_ semnalele se identific_ prin teminalele lor, care poart_ i denumirea de porturi. Se face distincie ntre ieiri i intr_ri prin numele in/out i se specific_ dimensiunea ieirilor i intr_rilor prin num_rul de bii, care n cazul n care dimensiunea este de un bit se scrie bit. Partea de entity corespunz_tor acestui sistem corespunde n form_ grafic_ unui dreptunghi cu dou_ intr_ri (x, y) i 2 ieiri (sum, carry).

37

Partea de entity reprezint_ descrierea sistemului la nivelul cel mai nalt. % pentru descrierea comportamentului sistemului i a descrierii structurii interne a acestuia exist_ dou_ structuri din arhitecture: % behavior, care face uz de o notaie bogat_ cu care este nzestrat limbajul, i n aceast_ descriere intervine notaia care nseamn_ atribuire de semnale n conformitate cu care variabilele de ieire sum i carry li se atribuie funcii booleene predefinite n cadrul limbajului, care conecteaz_ variabilele de intrare de tipul x i y. n cadrul descrierii se uziteaz_ de paranteze ( ), de begin i end, n care intervin variabile cu o relaie ntre ele intr-o form_ specific_ limbajelor de programare. Limbajul este bogat n posibilit_i de descriere a funciilor schemelor.De exemplu: carry x and y; if xy=11' then carry=1 else carry=0; De asemenea limbajul are multe posibilit_i: dac_ aceast_ funcie este realizat_ pentru un circuit caracterizat printr-un timp de propagare de 5 nsec, descrierea n cadrul limbajului se face astfel: carry x and y after 5 ns; % structural, n cazul n care se insist_ asupra structurii interne atunci circuitul i schemele cu un ordin de m_rime mai mic i atunci sunt descrise n maniera entity, specificndu-se semnalele de intare respectiv semnalele de ieire ale acestora. Leg_turile interne(lines, bass) sunt specificate prin signals, dndu-se dimensiunea lor. n final, ntre begin i end, se specific_ fiecare tip de circuit, dn38

du-se de fapt aa numita list_ de conexiune specific_ cablajului dintre circuitele componente ale sistemului sau dispozitivelor. O descriere printr-un limbaj de tipul VHDL este flexibil_, ea poate fi mai concis_ dect o descriere de tip ordinogram_, dar apelarea la aceasta n vederea prezent_rii este o chestiune greoaie i prin urmare nu vom apela la descrieri, ci la un limbaj de descriere hardware simplificat, care prezint_ cteva carecteristici ale VHDL-ului. Vom apela la un limbaj simplificat caracterizat prin: a. Se declar_ registrele prin numele acestora, prin denumirea lor, i prin ordinea rangurilor (de exemplu A[7]); b. Se apeleaz_ la o descriere similar_ a magistralelor; c. Un singur bistabil este nregistrat ca un registru de dimensiune 1; d. Microoperaiile care pot fi efectuate neconflictual prin acelai impuls de clock se separ_ prin virgul_, iar cele care se efectueaz_ la clock-uri diferite se despart prin ; . e. n cadrul programului de descriere se nl_nuie microoperaiile n ordinea natural_ a execuiei, fiind separate prin ; . f. n aceste programe este posibil_ apariia unor salturi de tip necondiionat prin go to sau salturi condiionate, precedate de testarea condiiilor de tip if .... then. g. Consider_m structura ca fiind bistabil de tip M-S care pot fi citite/scrise pe acelai impuls de clock. De exemplu descrierea unui nmulitor de vitez_ sc_zut_ care apeleaz_ la num_r_toare: 8. multiplier bc(IOBUS[16:0]); register Q[15:0],CQ,MS,CP[31:0]; BEGIN: Q:=INBUS[15:0], QS:=INBUS[16]; CM:=INBUS[15:0], MS:=INBUS[16], CQ:=Q, CP:=0; TEST1: if CO=0 or CM=0 then goto DONE, ADD : CQ:=CQ-1, CP:=CP+1; TEST2: if CQ 0 then goto ADD, SUB : CM:=CM-1, CQ:=Q; TEST3: if CM 0 then goto ADD, DONE : INBUS[16]:=QS xor MS, INBUS[15:0]:=CP[31:16]; INBUS[15:0]:=CP[15:0]; END. 9. multiplier (in:INBUS;out:OUTBUS); register A[7:0],Q[7:0],M[7:0],COUNT[2:0]; BEGIN : A:=0, COUNT:=0, M:=INBUS; Q:=INBUS; TEST1 : if Q=0 then goto Bi; 39

ADD : Bi : TEST2 : FINISH: END.

A[7:0]:=A[6:0]+M[6:0], A[7:0]:=0; A[6:0].Q:=A.Q[7:1], COUNT:=COUNT+1; if COUNT7=0 then goto TEST1, A[7]:=Q[0] xor M[7], Q[0]:=0; OUTBUS:=A; OUTBUS:=Q;

1.3.3 Dispozitiv de nmulire Robertson nmulirea numerelor n complement de 2 Din anteriorul paragraf a rezultat c_ reprezentarea numerelor n semnm_rime este simplu de implementat, i ca urmare atunci cnd avem numere de reprezentat n complement de 2 s-ar putea apela la anteriorul dispozitiv astfel: pentru operanzi negativi se complementeaz_ de 2 respectivi operanzi i se efectueaz_ operaia n termeni de numere n reprezentarea semn-m_rime iar n final, dac_ e cazul(un operand e pozitiv i altul negativ), se complementeaz_ de 2 produsul. O astfel de procedur_ ar apela la dispozitivul deja f_cut. Anterioara descriere implic_ un sacrificiu de 3 impulsuri de clock n cazul cel mai defavorabil, adic_ un operand este poziziv i altul e negativ. Pertru fiecare complementare se sacrific_ un impuls de clock, prin urmare aceast_ alternativ_ de implementare este inacceptabil_ ca performan_. n aceste condiii s-a apelat la dispozitivul Robertson n complement de 2. Exemplu:

0 ; X = 0 x n 2 ... x i ... x 1 x 0 = X = x n 1 x n 2 ... x i ... x 1 x 0 < 0 ; X = 1 x ' ... x ' ... x ' x ' n 2 i 1 0

x
i =0

n 1

2i

X = x n 1 x n 2 ... x i ... x 1 x 0 + 00 ...0 ...01(m od ulo 2 ) = = 11...1...11 x n 1 x n 2 ... x i ... x 1 x 0 + 00 ...0 ...01(m od ulo 2 ) = = 2 n x n 1 x n 2 ... x i ... x 1 x 0 (m od ulo 2 n ) = X X =2X X = 1. x n' 2 ... x i' ... x 1' x 0' = 1.0 ...0 ...00 + 0 . x n' 2 ... x i' ... x 1' x 0' (m od ulo 2 n ) = = 10 . 00 ...0 ... 01. 00 ...0 . + 0 . x n' 2 ... x i' ... x 1' x 0' (m od ulo 2 n ) =
00
.. 00
n 2 n 2

= 1.00 ...0 ...0 0 + x 2 = x n 1 2


i =0 ' i i

n 2

n 1

+ x i' 2 i (m od ulo 2 n )
i =0

n 2

Din prima relaie cu X rezult_ justificarea denumirii de complement de 2. 40

Complementul de 2 poate fi interpretat ca o parcurgere dinspre partea semnificativ_ spre partea cea mai puin semnificativ_. Exemplu:

X S M = 0 1 0 01 1 X C 2 = 1 0 1 10 1

n versiunea Robertson 19 este reprezentat astfel:

X C 2 = 1 2 5 + 1 2 3 + 1 2 2 + 1 2 0 = 3 2 + 8 + 4 + 1 = 1 9
Se folosete aceeai schem_ i pentru numere pozitive i pentru numere negative, pornindu-se de la bitul cel mai puin semnificativ. Plecnd de la reprezentarea lui Robertson a complementului de 2 operaia de nmulire se poate efectua tratnd numerele pozitive i negative ntr-un mod unitar ca i cnd ar fi pozitive, prin parcurgerea dinspre partea mai puin semnificativ_ cea mai semnificativ_, i tratnd bitul de semn ca i un bit ordinar al num_rului. Se poate utiliza structura dispozitivului de nmulire n semn-m_rime la care se vor mai efectua unele ajust_ri. Efectu_m analiza celor 4 cazuri posibile acceptnd c_, f_r_ a pierde din generalitate, vom considera nmulirea a 2 numere fracionare n reprezentarea:

X = x 7 x 6 ... x i ... x 1 x 0 Y = y 7 y 6 ... y i ... y 1 y 0


x 7 = 0; y 7 = 0
Reprezint_ o nmulire a 2 numere f_r_ semn (pozitive) prin pai de deplasare succesivi descrii de:

Pi = Pi + x i Y 1 Pi +1 = 2 Pi
x 7 = 0; y 7 = 1
Se parcurg f_r_ s_ apar_ nimic special de semnalat. Acei bii din X ncepnd cu x 0 care au valoarea 0, produsul parial pe parcursul acestor bii avnd tot timpul valoarea 0 iar n bitul cel mai semnificativ a 7 al acumulatorului se introduce tot timpul 0. Cnd se ntlnete y i 0 ntruct multiplicantul este negativ, produsul parial este negativ, i devenind negativ se introduce 1 n a 7 pentru c_ n mp_rirea la 2 n complement de 2 implic_ introducerea de leading 1 n loc de leading 0. 41

x 7 = 1; y 7 = 0
n acest caz se se parcurg aceiai pai succesivi descrii la pasul a pn_ n final cnd n ultimul pas, cel corespunz_tor bitului de semn, se efectueaz_ aa numitul pas de coreci n care din produsul parial 0 trebuie s_ se obin_ produsul negativ reprezentat n complement de 2 i acesta se realizeaz_ printr-o sc_dere:

P = Y + x i 2
i =0

i 7

Y = Y ( x 7 2 + x i 2 i 7 ) = X Y i =0

0

x 7 = 1; y 7 = 1
Ambele numere sunt negative i n acest caz se recurge la introducerea n a 7 a unui 1 n procesele de deplasare i n plus se adaug_ pasul de corecie de la cazul c. Pot fi operate numere negative i pozitive n complement de 2 printr-o structur_ care fa_ de cea cunoscut_ de la semn-m_rime se deosebete prin faptul c_ operaia de adunare nu se execut_ pe 7 bii ci pe 8 bii i de aceea se impune controlul logic al bitului care se ncarc_ n cel mai semnificativ bit al acumulatorului i acest lucru se face printr-un fanion: F=( x i and y 7 ) or F Prin urmare structura nmulitorului Robertson cu corespunz_toarea sa descriere comportamental_ n limbajul de descriere Hayes este urm_toarea:

42

C2 multiplier(in:INBUS;out:OUTBUS); register A[7:0],Q[7:0],M[7:0],COUNT[2:0],F; bus INBUS[7:0],OUTBUS[7:0]; BEGIN : A:=0, COUNT:=0, F:=0; INPUT : M:=INBUS; {c0} Q:=INBUS; {c1} TEST1 : if Q[0]=0 then goto RSHIFT, ADD : A[7:0]:=A[7:0]+M[7:0], {c2} F:=(Q[0] and M[7])or F; RSHIFT : A[7]:=F, A[6:0].Q:=A.Q[7:1], COUNT:=COUNT+1, if COUNT7=0 then goto TEST1; {c3} TEST2 : if Q[0]=0 then goto OUTPUT, SUBTRACTION: A[7:0]:=A[7:0]+M[7:0], Q[0]:=0; {c2,c4} OUTPUT : OUTBUS:=A; {c5} OUTBUS:=Q; {c6} END.{Issue completion signal END} Cu c1,c12,...,c6 au fost notate semnalele de control, ele fiind puse n dreptul instruciuniilor pe care le execut_. Exemplu:

79 84 ;Y = + 128 128 X S M = 1 1 0 01 1 1 1 X C 2 = 1 0 1 10 0 0 1 Y S M = 0 1 0 10 1 0 0 = Y C 2 X =
Sinteza unit_ii de control Aceast_ sintez_ se poate face dup_ 2 metode: n logic_ cablat_ (hardwired), care i se atribuie lui John von Neumann, i microprogramat_ (microprogrammed), care i se atribuie lui M.V. Wilkes. Soluia cablat_ se poate realiza prin 3 metode: - metoda tabelei de st_ri (state-table method) - metoda on-hot; - metoda delay-element; - metoda sequence-counter.

43

Metoda tabelului de st_ri (state-table method) Unitatea de control este considerat_ ca o main_ secvenial_ cu un num_r finit de st_ri. Plecnd de la descrierea comportamentului intrare/ieire a schemei, fie prin mai modernul stil al unui limbaj de descriere hardware dar i prin clasicul stil al ordinogramei, se elaboreaz_ aa numitul tabel de st_ri,care prezint_ cte un rnd distinct pentru fiecare stare intern_(starea memorat_ a maini corespunz_toare aciunii unui impuls de clock) i prezint_ cte o coloan_ corespunz_toare fiec_rui vector de intrare posibil. Dac_ not_m cu s i st_rile interne i cu i,j un vector posibil atunci avem

urm_toarele 2 tabele: S i , j reprezint_ starea intern_ urm_toare i i , j reprezint_ vectorul binar disponibil la aa numitele ieiri primare sau ieiri observabile. Aceast_ descriere comportamental_ este atribuit_ mainii mai generale Mealy, dar s-a dovedit n practica proiect_rii metodelor de control c_ vectorii de ieire sunt independeni de vectorii de intrare, ei depinznd n mod exclusiv de st_ri interne. Prin urmare avem un vector de ieire corespunz_tor fiec_rei st_ri , avem o descriere compact_ care este atribuit_ aa numitei maini Moore. Paii de sintez_ corespunz_tori acestei metode sunt: Pasul 1: identificarea num_rului de st_ri care s_ acopere descrierea comportamental_ a mainii secveniale(controller) constituit_ de unitatea de control. Admind c_ aceast_ descriere comportamental_ are la modul general P st_ri, se vor lua lo g 2 P (cel mai mic intreg cu valoarea logaritmului) elemente de memorare care, f_r_ a pierde din generalitate, le consider_m bistabile de tip D (Master-Slave). Pasul 2: se confer_ celor lo g 2 P bistabile cte un cod. Pasul 3: se elaboreaz_ tabela de excitaie bazat pe care se scriu ecuaiile logice n form_ minimizat_ corespunz_toare p_rii de logic_ combinaional_ a mainii secveniale.

44

Inputs : Begin, Q[7],COUNT7


States
0 1 10 11 100 101 110 111

Outputs

C 0 C1 C 2 C3 C4 C5 C6 C7
0 0 0 0 0 0 0 0

S0

S0

S0

S0

S0

S1

S1

S1

S1

S1

S2

S2

S2

S2

S2

S2

S2

S2

S2

S4

S4

S3

S3

S4

S4

S3

S3

S3

S4

S4

S4

S4

S4

S4

S4

S4

S4

S4

S6

S3

S5

S4

S6

S3

S5

S5

S6

S6

S6

S6

S6

S6

S6

S6

S6

S7

S7

S7

S7

S7

S7

S7

S7

S7

S0

S0

S0

S0

S0

S0

S0

S0

Ordinograma corespunz_toare va fi prezentat_ n cele ce urmeaz_:

45

46

Implementarea cu bistabile:

Metoda on-hot (delay-element method) Preambulul la introducerea acestei metode este constituit_ express de critica metodei prezentate. Dac_ metoda tabelului de st_ri prezint_ avantajul unui num_r minim de elemente de memorare(bistabile D) nu rezult_ n mod clar, predictibil, complexitatea p_rii de logic_ combinaional_(pori cu multe intr_ri), i uzual aceasta prezint_ conexiuni complexe neordonate(de tip random) care fac depanarea i mentenana unei astfel de realiz_ri dificil_. n consecin_, n detrimentul unui metode optime din punctul de vedere al elementelor de memorare au ap_rut celelalte dou_ metode dintre care metoda on-hot se caracterizeaz_ prin faptul c_ exist_ o relaie de cvasi 1 la 1 ntre st_rile descrieri intrare-ieire prin ordinogram_ i elementele de memorare ale metodei sau altfel zis dac_ ordinograma are P st_ri interne atunci vom avea P elemente de memorare, care f_r_ a pierde din generalitate le vom considera bistabile de tip D. Caracteristica acestei metode este c_ corespunz_tor fiec_rei st_ri interne avem activ (adic_ pe 1) la un moment dat unul i numai unul dintre elementele de memorare (bistabil), care se admite n starea on-hot (cald_), constituind astfel denumirea metodei. Aceast_ caracteristic_ rezult_ n mod direct din ordinogram_ astfel nct sacrificiul constituit dintr-un num_r mai mare de elemente de memorare va fi compensat prin diminuarea n complexitate, printr-un num_r mai redus de 47

circuite necesar sintezei de logic_ combinaional_. Aceast_ metod_ se aplic_ la maini RISC simple i la aa numitele controler-e de aplicaii specifice. Paii metodei on-hot sunt urm_torii: Pasul 1:identificarea num_rului de st_ri care s_ acopere descrierea comportamental_ i atribuirea cte unui bistastabil de tip D pentru fiecare stare intern_. Pasul 2:codificarea st_rilor interne atribuind un cod distinct fiec_rui bistabil. Pasul 3:elaborarea ecuaiilor logice care determin_ starea de 1 a bistabilelor de tip D prin urm_rirea condiiilor rezultate din ordinogram_. Aceast_ procedur_ se efectueaz_ i pentru semnalele de control dup_ care se trece la implementarea ecuaiilor rezultate. Exemplu: (Pas 3)

D 0+ + D1 D + 2 D 3+ + D4 D + 5 D 6+ + D7

= D 0 B E G IN + D 7 = D 0 B E G IN = D1 = D 2 Q[0] + D 4 Q[0] C O U N T 7 = D 2 Q[0] + D 3 + D 4 Q[0] C O U N T 7 = D 4 Q[0] C O U N T 7 = D 4 Q[0] C O U N T 7 + D5 = D6

c 0 = D 1 c = D 2 1 c 2 = D 3 + D 5 c 3 = D 4 c 4 = D 5 c 5 = D 6 c 6 = D 7 END = D0

48

Implementare:

Metoda delay-element La ambele metode avem o coresponden_ de 1 la 1 ntre elementele de memorare i st_rile puse n relief pe ordinogram_. La metoda delay-element avem cte un element de ntrziere notat cu DE pentru fiecare bloc operativ din ordinogram_. Observaii: 1. 2. Metoda delay-element se elaboreaz_ plecnd de la descrierea din ordinogram_ sau de la o descriere printr-un limbaj hardware. De fiecare dat_ cnd n ordinogram_ avem de-a face cu o numire a mai multor ramuri n transpunerea n circuite acest lucru apare ca un circuit SAU. 49

3.

Tratarea blocurilor de decizie se face astfel: dac_ n ordinogram_ avem un bloc de decizie de felul de mai jos atunci transpunerea lui n circuite este urm_toarea:

Acest DE (delay-element) nu este o linie de ntrzierede tip pasiv ci el reprezint_ uzual un bistabil de tip D care este prev_zut cu un clock.

Toate aceste elemente DE au un semnal comun l i aceast_ afirmaie atrage dup_ sine faptul c_ atunci cnd sunt multe elemente DE i clock-ul trebuie s_ ajung_ la mai multe elemente simultan apare fenomenul de clock skew(alunecare de clock). Cu ct acest lan este mai laung cu att mai mult aceste elemente pot fi afectate de fenomenul de clock skew. n aceast_ metod_ investiia const_ n elementele de ntrziere DE. Dac_ avem n st_ri atunci avem n elemente DE fa_ de lo g 2 n elemente de la cealalt_ metod_. Aici partea de logic_ combinaional_ prin aceste multiplexoare pe 1 bit devine simpl_. Aceast_ metod_ prin claritatea transpunerii ordinogramei funcionale este preferabil_ n vederea mentenanei(ntreinerii) pentru c_ se depaneaz_ mai uor. Metoda sequence-counter Aceast_ metod_ se preteaz_ atunci cnd, comportamental, untitatea de control pe care o avem de proiectat parcurge n mod iterativ de mai multe ori o bucl_ funcional_ i uziteaz_ de o schem_ care poart_ numele de num_r_tor de secven_. 50

Metoda sequnce-counter uziteaz_ de o astfel de schem_ a c_rui detaliu este prezentat mai sus. Cnd trebuie s_ aplic_m metoda se pune problema determin_rii valorii lui k, care reprezint_ num_rul de faze.

Se analizeaz_ care este partea din ordinogram_ care se repet_ de cele mai multe ori, adic_ ciclul cel mai lung, i n funcie de num_rul de blocuri ale ciclului se alege k (k se va lua egal cu num_rul de blocuri ale ciclului respectiv). Dup_ determinarea num_rului k se determin_ num_rul de bistabile RS, care se alege egal cu num_rul de cicluri din ordinogram_. O ordinogram_ este constituit_ din 3 p_ri: o parte de nc_rcare o informaiei, o parte repetitiv_ i o parte final_ de de terminare i de predare a rezultatelor. n aceste condiii putem deja face o conturare a soluiei tehnice pentru problema noastr_. n exemplul nostru k va fi 2 i n mod conjunctural avem:

51

Logica combinaional_ este simpl_.

1.3.4 Algoritmul lui Booth Robertson i-a bazat metoda pe o observaie legat_ de complementul de 2. Elementul deranjant la Robertson este c_ dac_ avem operanzi pe n bii acest lucru implic_ activarea de n ori a sumatorului parallel. Cum performana calculatorului este afectat_ de timpul de adunare, care ncarc_ ca performan_ soluia de nmulire, se pune problema g_sirii unei metode de accelerare care s_ depind_ de configuraia binar_ particular_ a nmulitorului i anume dac_ nmulitorul prezint_ poriuni constituite din iruri de 0 sau de 1 atunci se poate beneficia de metoda lui Booth n vederea surmont_rii penalit_ii de performan_ tipic_ procedurii lui Robetson pe care am f_cut-o.

X = ... x * ... x * = x i x i +1 ... x i + k 1 x i + k x i + k +1 = 01 1


10 ...1
a row of 1's (un ir de 1) 52

F_r_ a pierde din generalitate s_ admitem c_ X este un num_r fracionar i vom spune c_ aportul lui x
*

la X*Y este dat de urm_toarea relaie:

j =i +1

i +k

Y = ( 2 ( i +1 ) + 2 ( i +2 ) + ...+ 2 ( i + k ) ) Y = 2 ( i + k ) ( 2 k 1 + 2 k 2 + ...+ 1) Y =

= 2 ( i + k ) ( 2 k 1 ) Y = 2 i Y 2 ( i + k ) Y
Se observ_ c_ se realizeaz_ doar dou_ activ_ri ale sumatorului paralel. Dac_ avem x i x i 1 bii ai nmulitorului i dac_ acetia sunt 01, sugernd c_ nmulitorul este parcurs de la stnga la dreapta, atunci n vederea obinerii produsului se efectueaz_ o adunare a lui Y la produsul parial. Dac_ x i x i 1 sunt 10 atunci se efectueaz_ o sc_dere a lui Y din produsul parial, iar n situaia n care cei doi bii sunt 00 sau 11, suntem pe parcursul baleerii unui ir de 1 sau 0 i nu se efectueaz_ nici o operaie. Algoritmul lui Booth este echivalent cu recodificarea nmulitorului ntr-o form_ special_(a signed digit form), n care se uziteaz_ de 3 semne i anume: 1 cnd se face o adunare(cnd cei doi bii adiaceni consultai sunt 01), 0 cnd sunt 00 sau 11 i 1 cnd sunt 10. De exemplu:

79 = 1.1 0 0 11 1 1; X C 2 = 1.0 1 1 00 01 0 ; ;X 1 2 8 SM 1 1 1 1 X * = 11010011 = 7 + 6 4 + 1 , ,,,,,, , 2 2 2 2 27 2 6 25 24 2 3 22 21 2 0 X =


multiplier

( 2 7 + 2 4 + 1) + ( 2 6 + 2 ) 1 1 1 1 79 recoding= 1 + 3 + 6 7 = = 7 7 2 2 2 2 2 2
n reprezentarea n complement de 2 a num_rului, pentru a putea lua n considerare i ultimul bit, se mai consider_ implicit un bit de 0(cel de dup_ bara vertical_). Algoritmul lui Booth are urm_toarea form_ n limbajul de descriere Heyes: Booth mutiplier(in:INBUS;out:OUTBUS); register A[7:0],Q[7:-1],M[7:0],COUNT[2:0]; bus INBUS[7:0],OUTBUS[7:0]; BEGIN : A:=0, COUNT:=0, INPUT : M:=INBUS; {c0} Q:=INBUS, Q[-1]:=0; {c1} 53

: if Q[0]Q[-1]=0 then A[7:0]:=A[7:0]+M[7:0], goto TEST; {c2} else if Q[0]Q[-1]=10 then A[7:0]:=A[7:0]-M[7:0]; {c2,c3} TEST : if COUNT7=1 then goto OUTPUT, RSHIFT: A[7]:=A[7], A[6:0].Q:=A.Q[7:-1], COUNT:=COUNT+1, goto SCAN; {c4} OUTPUT: OUTBUS:=A, Q[0]:=0; {c5} OUTBUS:=Q; {c6} END. end Booth multiplier {END} Schema se complic_ fa_ de Robertson pentru c_ avem cnd adunare cnd sc_dere.

SCAN

Algoritmul lui Booth modificat Cnd nmulitorul este format din alternane de 1 i 0 nu se beneficiaz_ de observaia lui Booth ci se nr_ut_ete per globalperformana nmulitorului, astfel s-a ajuns la algoritmul lui Booth modificat. La acest algoritm se ia n considerare situaia de 0 izolat respectiv de 1 izolat i n cazul unui 0 izolat se efectueaz_ doar 0 sc_dere, iar n cazul lui 1 izolat se efectueaz_ doar o 54

adunare. Dac_ avem biii: .... x i x i +1 x i +2 .... 1 0 1........ an izolated 0

2 i + 2 ( i +1 ) ( 2 1) = 2 ( i +1 ) (doar o sc_dere) ,
1

....0

1
i

0........ an izolated 1
( i +1 )

= 2 ( i +1 ) ( 2 1) = 2 ( i +1 ) (doar o adunare)

Se spune c_ se apeleaz_ la o nou_ recodificare a nmulitorului, recodificare care poart_ numele de canonic_ i care se efectueaz_ prin intermediul unui fanion (flag) F, care iniial este pus pe 0 i va fi pus pe 1 doar dac_ la parcurgerea de la dreapta spre stnga al nmulitorului se ntlnete un ir de 1 (2 sau mai muli de 1) i va fi repus pe 0 doar dac_ se ntlnete un ir de 0 (2 sau mai muli de 0). Dac_ atribuim flag-ului F o valoare boolean_, recodificarea Booth canonic_ se execut_ bazat pe urm_torul tabel:

x3
0 0 0 0 0 0 0 0 1 1 1

x2
0 0 0 0 1 1 1 1 0 0 0

x1
0 0 1 1 0 0 1 1 0 0 1

x0
0 1 0 1 0 1 0 1 0 1 0

x 3''
0 0 0 0 0 0 1 1
_

x 2''

x 1''

x 0''

H 3''

D 3''

H 2''

D 2''

H 1''

D 1''

H 0''

D 0''

0 0 1 1 1 1 0 0 0 0 0

0 0 1 0 0 0
_

0 1 0
_

0 0 0 0 0 0 1 1 1 1 1

0 0 0 0 0 0 0 0 1 1 1

0 0 0 1 1 1 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 0 1 0 0 0 1

0 0 0 0 0 0 1 0 0 0 0

0 1 0 1 0 1 0 1 0 1 0

0 0 0 1 0 0 0 1 0 0 0

1
0 1 0
_

1
0 0 0 1

1
0
_

1
_

1
_

1
0

55

1 1 1 1 1

0 1 1 1 1

1 0 0 1 1

1 0 1 0 1

0 0 0 0 0

1
_

0 0 0
_

1
0 1 0
_

0 0 0 0 0

0 0 0 0 0

1 1 1 0 0

1 1 1 0 0

0 0 0 1 0

0 0 0 1 0

1 0 1 0 1

1 0 0 0 1

1
1 0 0

1
0

De exemplu:

X C 2 = 1 1 0 1 10 0 0 1 26 24 +1 1 1 1 79 = 7 X = 01010 0 0 1 = 3 + 7 = 7 2 2 2 2 2 F = 1 1 1 10 0 00 0
**

n limbajul de descriere Hayes algoritmul lui Booth modificat va ar_ta astfel: modified Booth algorithm(in:INBUS;out:OUTBUS); register A[7:0],Q[8:0],M[7:0],COUNT[2:0],F,OVR; bus INBUS[7:0],OUTBUS[7:0]; BEGIN : A:=0, COUNT:=0, F:=0, INPUT : M:=INBUS; {c0} Q[7:0]:=INBUS[7:0], Q[8]:=INBUS[7]; {c1} ZEROTEST: if Q=0 then goto OUTPUT, if M 0 then goto SCAN, Q:=0, goto OUTPUT; {c2} SCAN : if F=0 then begin if Q[0]Q[1]=01 then A[7:0]:=A[7:0]+M[7:0], OVR:= ; {c3} else if Q[0]Q[1]=11 then A[7:0]:=A[7:0]-M[7:0], OVR:= , F:=1; end else goto TEST; {c3,c4,c5} if F=1 then begin if Q[0]Q[1]=00 then A[7:0]:=A[7:0]+M[7:0], OVR:= , F:=0; {c3,c6} 56

TEST RSHIFT

else if Q[0]Q[1]=10 then A[7:0]:=A[7:0]-M[7:0], OVR:= ; {c3,c4} end : if COUNT7=1 then goto OUTPUT,

: A[7]:=(A[7] and M[7] and O V R )or(F and M [ 7 ] )or (F and M[7] and OVR), A[6:0].Q:=A.Q[8:1], COUNT:=COUNT+1, goto SCAN;{c7} OUTPUT : OUTBUS:=A, Q[1]:=0; {c8} OUTBUS:=Q; {c9} END. end mBooth multiplier. ORQ ORM

57

S-ar putea să vă placă și