You are on page 1of 5

Arhitectura calculatoarelor. Laborator 5. nmulitorul combinaional.

5.1. Modaliti de calcul


Fiind date dou numere ntregi i pozitive: X = x0x1x2xn-1 Y = y0y1y2yn-1 notm produsul acestora cu P = y0p1p2p2n-1 ntruct reprezentarea este poziional:
X = xi 2 n 1 i

Y = y j 2n 1 j

P = xi y j 2 2 n 2 i j

Din punctul de vedere al implementrii cu circuite logice, produsul aritmetic al doi bii este echivalent cu funcia I, iar nmulirea cu o putere a lui doi este echivalent cu o deplasare la stnga. Pe parcursul dezvoltrii tehnologiei circuitelor integrate i a microprocesoarelor au existat mai multe faze de realizare a operaiei de nmulire. Primele microprocesoare de 8 bii, i8080 (Intel) i Z80 (ZILOG) nu aveau instrucii de nmulire i mprire. Aceste operaii se executau prin programe scrise de ctre programatorul de aplicaie, sau existente n biblioteci de programe. Pentru calculul produsului se foloseau instruciile disponibile n unitatea aritmetico-logic: adunare, scdere, deplasri, comparaii etc. La i8086, primul microprocesor pe 16 bii, operaiile de nmulire i mprire au fost implementate hardware, ca instrucii ale unitii aritmetico-logice. Implementarea era cu scheme de tip secvenial. Un astfel de dispozitiv de nmulire conine trei registre, unul pentru denmulit, unul pentru nmulitor i unul pentru produs. Acest al treilea registru este de tip acumulator. Produsul se formeaz treptat n acumulator prin adunri repetate, urmate de deplasri la stnga. Putem spune c, la un pas de calcul, se nmulete ntreg numrul X cu cte un bit al numrului Y iar ponderea acestui bit se evideniaz prin deplasarea la stnga a rezultatului parial. Caracterul secvenial al operaiei are ca efect creterea timpului de calcul. Astfel, la i8086, instruciile de nmulire i mprire dureaz circa 100 cicluri de tact, fa de o durat tipic de 10 cicluri de tact pentru toate celelalte instrucii aritmetico-logice. Proiectarea unor structuri paralele, complet combinaionale, pentru realizarea nmulirii este posibil, dar necesit un numr foarte mare de pori logice. La nivelul actual al dezvoltrii tehnologiei circuitelor integrate acest lucru nu mai constituie o problem.

Un nmulitor paralel conine dou componente principale: o matrice de pori I care calculeaz produsele xiyj pentru fiecare i i fiecare j o cascad de sumatoare care nsumeaz n paralel toi biii calculai anterior. Evidenierea ponderii fiecrui bit nu se mai face prin deplasri n registre ci prin modul n care snt conectate sumatoarele.

5.2. Implementarea unui nmulitor paralel


Considerm numerele

P = p0p1p2p3p4p5 = x0y024 + (x0y1+x1y0)23 + (x2y0+x1y1+x0y2)22 + (x2y1+x1y2)21 + x2y220


Modul n care se construiete aceast sum rezult att analitic, prin calcul aritmetic, ct i intuitiv, dac reprezentm poziional cele dou numere i produsele pariale, exact aa cum facem atunci cnd calculm produsul a dou numere n baza 10 cu creionul pe hrtie. Denmulitul Y se nmulete cu fiecare cifr a nmulitorului X, rezultnd cte un produs parial. Produsele pariale se scriu unul sub cellalt, decalate la stnga cu cte o poziie pe msur ce crete rangul bitului din nmulitor care intervine n calcul.

i produsul lor

X = x0x1x2 = x022 + x121 + x220 Y = y0y1y2 = y022 + y121 + y220

y0 y1 y2 * x 0 -------------------------x2y0+ x2y1+ x2y2 x1y0+ x1y1+ x1y2 x0y0+ x0y1+ x0y2 -----------------------------------------------------p0 p1 p2 p3 p4 p5
Exemplu: 7 * 5 = 35 n binar: 111 * 101 = 10011

x1

x2

1 1 1 * 1 -------------------------1+ 1+ 1 0+ 0+ 0 1+ 1+ 1 -----------------------------------------------------1 0 0 0 1 1

De notat faptul c, cu excepia bitului p5, toi ceilali se calculeaz ca suma coloanei de deasupra lor, la care se adaug transportul din rangul anterior. ntruct se adun coloane de numere, dac folosim sumatoare elementare de doi bii, transportul trebuie propagat spre stnga la fiecare rang, pe msur ce se adun pe coloan.

Exemplul de mai sus evideniaz mai degrab situaiile particulare, n care se pot face simplificri, aceasta deoarece am ales un caz particular n care cei doi operanzi sunt de rang mic. n cazul general, pentru un bit dintr-un produs partial avem de nsumat, ca intrri: - bitul curent (produsul curent) - bitul care se propag sub form de sum pe vertical, de sus n jos - bitul care se propag sub form de transport pe orizontal, de la dreapta spre stnga. Rezult, ca ieiri: - suma, care se propag pe vertical, n jos - transportul, care se propag pe orizontal, spre stnga. Aadar, pentru a sugera detalii de implementare, plecm de la urmtoarele observaii: 1. Prima parte a schemei va conine 9 pori I, care vor calcula cele 9 produse pariale. 2. A doua parte a schemei va conine o cascad de sumatoare, care va face adunrile pe coloane. Privind schema observm c: - p5 se obine direct, de la ieirea porii care calculeaz x2y2. - Pentru a calcula p4 este suficient un semisumator elementar care adun x2y1 cu x1y2. Ctre p4 dinspre p5 nu avem transport, dar dinspre p4 ctre p3 avem. - Pentru a calcula p3 sunt necesare dou sumatoare. Primul va calcula x2y0 + x1y1 + transportul dinspre p4. Al doilea va aduna suma care vine din anterior (de sus) cu x0y2 (n principiu, este suficient un semisumator). - Pe coloanele urmtoare situaia ncepe s se simplifice. n final, cazurile particulare, cele n care se poate simplifica schema sunt puine, dac avem n vedere situaii reale, n care trebuie s proiectm nmulitoare pentru operanzi reprezentai pe 16 sau 32 de bii. Aadar, o soluie omogen de proiectare este s prevedem cte un sumator complet pentru fiecare poziie din fiecare linie, cu excepia primeia. Eventualele simplificri care ar aprea se vor face legnd pur i simplu la zero unele intrri de la unele sumatoare. n cazul general, pentru a nmuli dou numere de lungime n fiecare vor fi necesare n*n pori i n*(n+1) sumatoare. Tranziia de la nmulirea numerelor pozitive la cele reprezentate n cod semn-mrime este banal. Partea mrime a rezultatului va fi produsul mrimilor celor doi operanzi, iar semnul rezultatului se va calcula separat dup regula cunoscut din aritmetic. n general, dac operanzii sunt reprezentai pe n bii, din care unul pentru semn i n-1 pentru mrime, atunci pentru rezultat se va aloca un numr de bii dublu, adic unul pentru semn i 2n-1 pentru mrime. Se observ c pentru mrime s-a alocat un bit n exces, din necesitatea ca lungimea rezultatului s fie o putere a lui 2. Acest bit se va poziiona pe zero.

5.3. Inmulitoare paralele n cod complement de doi


Principala limitare a nmulitorului paralel prezentat mai sus este c opereaz cu numere reprezentate ntregi pozitive, eventual reprezentate n cod semn-mrime, n timp ce codificarea preferat, cea care s-a impus, este cea n cod complement de doi. Exist o variant de rezolvare a problemei nmulirii care evit soluia paralel, anume realizarea de nmulitoare hardware secveniale. Acestea calculeaz la fiecare pas produsul parial al denmulitului cu cte un bit al nmulitorului. Pentru operanzi de n bii aceast operaie se repet de n ori. La fiecare pas, produsul parial calculat n pasul curent se adun sau se scade din rezultatul parial calculat pn n acel moment.

Practic, n loc de a face n2 nmuliri i n2 sume concomitent, se vor face cte n nmuliri i n sume n n pai. Algoritmul de nmulire este acelai dar se execut paralel doar pe cte o linie de calcul la un moment dat. Schema presupune un sumator/scztor de n bii i un numr de trei registre de n bii. Dezavantajul acestei soluii este creterea timpului de calcul, aa cum am exemplificat i n primul paragraf al lucrrii. n timp ce microprocesoarele moderne i microcontrolerele cu putere mare de calcul au depit problema pe baza avansului tehnologic, folosind reprezentarea n virgul mobil acolo unde este nevoie de calcule cu precizie i gam de reprezentare mare, necesitatea de a face calcule rapide n virgul fix a rmas prezent. Ea apare n special la aa-numitele procesoare de semnal, att la cele de uz general ct i la cele specializate, integrate n aparate din cele mai largi categorii, tehnica audio/foto/video fiind doar un exemplu. De multe ori asemenea procesoare specializate nu folosesc dimensiunile de date tipice pentru calculatoare, anume 8/16/32 de bii, ci altele, 12 bii fiind o lungime de date preferat n procesarea semnalelor. Pentru a realiza un nmulitor paralel n cod complement de 2 soluia cea mai simpl conceptual este s prevedem o faz de conversie de la cod complement de 2 la cod semn-mrime, nainte de efectuarea nmulirii, i una de conversie de la cod semn-mrime la cod complement de 2, dup nmulire. Schema bloc a acestui nmulitor este prezentat n figura 5.1.

XC2

YC2

C2 -> SM

C2 -> SM

XS

XM

YS

YM

XOR

Inmultitor

ZS

ZM

SM -> C2

ZC2 Fig. 5.1.

Cei doi operanzi, X i Y, reprezentai n cod complement de 2, sunt convertii la codul semn-mrime. Semnele celor dou numere, XS i YS, dau semnul rezultatului, ZS. Separat rezult componentele de mrime ale operanzilor, XM i YM, care sunt, amndou, numere pozitive. Prin nmulire pe o schem paralel se obine componenta de mrime a produsului, ZM. n continuare rezultatul este convertit la cod complement de doi. Dei introduce dou faze suplimentare n calcul, cele de conversie, schema nu devine secvenial, ci i pstrez caracterul paralel. Cele dou conversii au la baz

acelai tip de calcul, anume al complementului de doi, aa cum a fost descris n prima lucrare de laborator. n cazul n care numrul este negativ se face o complementare bit cu bit, urmat de adunarea unui 1 pe poziia cea mai puin semnificativ, cu propagarea transportului. Vor fi necesare o poart inversoare i un semisumator pe fiecare bit. n practic schema a fost optimizat pentru a funciona direct pe operanzi C2. nc din anii 1970 au fost dezvoltate, plecnd de la aparatul matematic, asemenea scheme. Ele au la baz modificarea cascadei de sumatoare aa fel inct unele produse de bii s apar cu semn schimbat i s apar completri cu 0 sau cu 1 la stnga fiecrei linii ce se nsumeaz.

5.4. Exerciii
5.4.1. Se dau dou numere, X i Y, reprezentate pe lungime de 4 bii fiecare, n cod semn-mrime. S se proiecteze o schem care s calculeze produsul Z al celor dou numere n reprezentare semn-mrime pe 8 bii i s se simuleze funcionarea sa n Electronic Workbench. Se va proiecta o schem generic, prevznd cte un sumator complet pentru fiecare bit din produsele pariale, chiar i n situaiile n care s-ar putea reduce complexitatea schemei 5.4.2. Se dau dou numere, X i Y, reprezentate pe lungime de 4 bii fiecare, n cod complement de 2. S se proiecteze o schem care s calculeze produsul Z al celor dou numere n reprezentare complement de 2 pe 8 bii. Se va folosi nmulitorul proiectat la punctul anterior, la care se vor aduga etajele de conversie SM->C2 i C2->SM.

You might also like