Sinteza unui dispozitiv secvential de inmultire a numerelor binare reprezentate in semn-marime
Admitand, fara a pierde din generalitate, ca numerele binare sunt, de aceasta data, fractionare reprezentate in semn-marime, in particular pe 8 biti, sa prezentam in aceste circumstante procedura sustinuta de iteratia (3.2). Astfel, avem operanzii intrare:
|
la care bitii cei mai semnificativi (x7, respectiv y7), reprezinta semnele numerelor, iar restul bitilor partea de marime.
Se urmareste obtinerea rezultatului produs:
|
unde, in mod evident, p15 este semnul dat de operatia SAU EXCLUSIV , restul bitilor constituind partea de marime cu dimensiunea maxima de 14 biti (de la p14 la p1) la care se adauga inofensivul, prin prisma valorii lui P, p0=0, artificiu acceptat pentru a opera numere pe 8 biti sau pe un numar de biti multiplu de 8 (in cazul nostru, P este, deci, pe 16 biti).
Exceptand primirea operanzilor si predare rezultatului, partea de esenta a algoritmului o reprezinta repetarea pasilor de adunare - deplasare (la dreapta) dati de (3.2) de un numar de ori egal cu dimensiunea in biti a partii de marime (in cazul nostru 7) cu evaluarea in final, a semnului produsului.
Tradusa in termenii limbajului de descriere adoptat, pentru procedura de inmultire ii putem asocia secventa de cod din fig. 3.5, care, la randul ei, corespunde configuratiei hardware a dispozitivului de inmultire reprezentat in fig. 3.6.
|
Fig.3.5 |
Caracteristica esentiala a acestuia din urma este faptul ca operatia se executa printr-o serie de impulsuri de tact (CLOCK), care acceptam ca sosesc din exteriorul dispozitivului (sunt incluse in setul External control signals), de la unitatea centrala de prelucrare (Central Processing Unit, CPU). Referindu-ne la registrele structurii, avem, mai intai, cele doua registre in care sunt stocati operanzii initiali, anume inmultitorul X in registrul Q (Cu toate ca de importanta secundara, notarea cu litera Q a respectivului registru, este, intr-un anume fel consacrata [Haye98]. Denumirea multiplier ar fi justificat notarea registrului cu initiala M, dar aceasta litera a fost preferata pentru denumirea registrului multiplicand care are aceeasi initiala M. Intrucat dispozitivul din fig. 3.6, cu unele modificari care insa nu afecteaza configuratia de registre, poate fi utilizat pentru implementarea impartirii binare, situatie in care multiplier register este utilizat pentru stocarea catului, notarea respectivului registru s-a realizat prin initiala de la englezescul quantinent care, in traducere inseamna cat) si deinmultitul Y in registrul M. Mai avem si un al treilea registru notat cu A, de la acumulator.
Printr-o asociere "elastica" din punct de vedere functional, sintagma acumulator a fost preluata de la sumatorul unor calculatoare arhaice [Haye 88], care permitea nu numai efectuarea operatiei combinationale de adunare, ci si a memorarii cumulative a rezultatelor, (partiale si final), care formeaza impreuna cu Q un registru de lungime dubla (in cazul nostru, 16 biti) prevazut cu functie de deplasare la dreapta (vezi sageata care uneste A cu Q in fig. 3.6) si unde se formeaza produsele partiale descrise de (3.2), precum si cel final.
Dispozitivul include, de asemenea, un registru COUNT, prevazut cu functie de numarare, si a carui menire consta in contorizarea iteratiilor pentru a asigura controlul terminarii operatiei. Tinand cont de (3.3) si (3.4), numarul de executii a iteratiei (3.2), pentru o operatie completa, este 7 (situatie in care C[0]C[1]C[2]=111 si se genereaza semnalul COUNT=1), ceea ce revendica un numar de =3 ranguri pentru numaratorul de iteratii COUNT, unde prin barele vom nota de aici incolo cel mai mic intreg cu valoare mai mare, la limita egala, decat cea a logaritmului dintre bare [Yarb 97]. Toate registrele specificate sunt corespunzator declarate in secventa din fig. 3.5, unde regasim si declararea magistralei, in realitate, bidirectionala, dar care, in scop didactic pentru a evidentia cu claritate aplicarea semnalelor de control ci (i=0,.,6), a fost "despicata" in magistrala de intrare, INBUS, respectiv cea de iesire OUTBUS, ambele pe 8 biti.
|
Fig.3.6 |
Inainte de comenta algoritmul,
aratam ca structura cuprinde, pe langa elementele
mentionate, si un sumator paralel(parallel adder), reprezentand o
schema combinationala de unul dintre tipurile studiate in
precedentul capitol, precum si o unitate de control (control unit).
Sumatorul permite adunarea a doua numere de dimensiunea partilor
de marime ale celor doi operanzi, avand conectata intrarea de
transport cin(carry in ) la "
In ceea ce priveste control unit, conferind tratarii
problematicii un caracter de generalitate mai extins, putem asocia unei unitati
de control locale, cum este, in particular, cea pentru dispozitivul nostru de
inmultire (fig. 3.6), schema bloc din fig. 3.7 (adaptare dupa [HePa
98] si [Haye 98]). Unitatea de control reprezinta o schema
logica secventiala la ale carei intrari se
aplica, pe langa trenul de impulsuri de CLOCK deja amintit, doua
categorii de semnale de intrare. Prima dintre acestea provine de
acestei
categorii, anume BEGIN (fig. 3.7), care este activat atunci cand opecode decoder
are aplicat la intrari codul unei instructii de inmultire de
tipul MULT SM (Multiplication Sign Magnitude). Cea de-a doua categorie de
semnale de intrare corespund starilor dispozitivului comandat. De interes
pentru dispozitivul nostru (fig. 3.6) sunt, asa cum rezulta si
din descrierea algoritmului (fig. 3.5), doua semnale de stare, anume cel
corespunzator rangului Q[0] a registrului Q si anterior amintit
COUNT7. Insistand asupra semnalului Q[0], in functie de starea 0, respectiv
|
Fig.3.7 |
|
Inainte insa, amintim cea de-a doua categorie de semnale de iesire, anume cea trimisa in exteriorul dispozitivului (external control signals), care, in cazul nostru, cuprinde doar pe END (fig. 3.6). Acest semnal are menirea de a anunta CPU-ul, in maniera asincrona, ca operatia s-a terminat. Daca insa se asteapta un interval care acopera durata de executie cea mai lunga (implicand operanzii cei mai "defavorabili"), semnalul END (si cele "inrudite cu acesta") nu se mai genereaza (este si motivul pentru care a fost omis din fig. 3.7).
Referindu-ne la conventiile de reprezentare si functionale ale schemei din fig. 3.6, pe care intentionam sa le aplicam cat mai riguros si celorlalte scheme, in mod sintetic ele se rezuma la:
a) Se face o distinctie neta intre conexiunile folosite la transmisia semnalelor de date (inclusiv cele pentru semnale de stare), care sunt marcate cu linie plina, si conexiunile folosite la transmisia de semnale de control, care sunt marcate cu linie punctata.
b) In general, legaturile pentru date au asociat un numar (vezi fig. 3.6, valoarea 8 corespunzatoare conexiunii dintre INBUS si registrul M) care este egal cu cel al liniilor fizice. Este posibil ca numarul sa lipseasca, subintelegand prin aceasta ca avem o singura linie fizica (vezi fig. 3.6, legatura dintre poarta EX-OR si rangul A[7]). In acelasi context, anumite conexiuni de date se pot ramifica posibil inegal, situatie in care se foloseste punctul pentru a specifica ramificatia, iar pe fiecare ramura se va marca numarul de fire fizice. De asemenea, la un manunchi de conexiuni, se pot adauga si altele, caz in care pentru reuniunea legaturilor nu se va folosi punctul, ci o unificare "indulcita" dupa modelul atasarii la manunchiul celor 7 conexiuni de iesire a registrului A spre OUTBUS cu cel de-al 8 fir corespunzator rangului A[7] (fig. 3.6).
c) Pe unele conexiuni de date se
prevad cerculete la care se aplica cate un semnal de control,
acesta semnificand validarea incarcarii si/sau
descarcarii informatiei, spre exemplu, dintr-un registru sau
numai dintr-un rang al acestuia. Dependent de tehnologia circuisticii
disponibila, pot fi imaginate variate solutii de implementare cum ar
fi, de pilda, incarcarea registrului M cu operandul multiplicand din
INBUS aplicand tuturor intrarilor de CLOCK semnalul de control comun c0.
O alta solutie ar fi apelarea la un "strat" de circuite logice de tip
SI avand comun semnalul c0, care atunci cand este activat,
permite penetrarea informatiei de
d) La parallel adder, si in general pentru orice schema combinationala, se strobeaza printr-un semnal de control comun (in cazul nostru, c2) doar iesirile schemei, modificarile de semnale pe intrari fiind lipsite de interes.
e) La initializarea continutului unui registru (cum ar fi cele ale registrelor A si COUNT prin c0 - fig. 3.6), se considera ca semnalul de control este aplicat simultan tuturor rangurilor, spre exemplu, pe intrarea asincrona de resetare. Tot comun tuturor rangurilor este aplicat si un semnal de control care implementeaza o functie de deplasare sau numarare, cum este c3 in fig. 3.6.
|
Fig.3.8 |
f) Atata timp cat nu se afirma contrariul, vom considera ca prin implementare se permite "fructificarea" ambelor fronturi ale unui semnal de control in sensul ca pe frontul anterior se poate realiza citirea starii unui bistabil sau registru, iar pe frontul posterior poate fi scrisa o noua valoare logica, fiind admis ca durata respectivului semnal este suficienta pentru ca operatiile sa nu se perturbe reciproc. Aceasta conventie se aplica in cazul semnalului de control c4, care prin enuntul SIGN (fig. 3.5) permite atat citirea lui Q[0], in vederea stabilirii in A[7] a semnului rezultatului, cat si scrierea valorii logice 0 in Q[0].
Cu aceste precizari, sa trecem la comentarea algoritmului de inmultire descris in fig.3.5. Exceptand enunturile declarative referitoare la structura registrica si de comunicare prin magistrale, pot fi distinse 3 parti ale procedurii. Astfel, la enunturile BEGIN si INPUT, sub controlul semnalelor c0 si c1 se realizeaza initializarea acelor registre (A si COUNT) care pot ramane cu valori nedorite de la o anterioara parcurgere a algoritmului si se incarca, in registrele destinate lor (Q si M), cei doi operanzi intrare. Pe langa aceasta parte initiala, avem una finala data de enunturile SIGN si OUTPUT, care, sub controlul semnalelor c4 la c6, realizeaza operatiile elementare de evaluare a semnului rezultatului (prin operarea SAU EXCLUSIV - EXCLUSIVE OR a semnelor celor doi operanzi, cel al multiplicand-ului din M[7], si cel al multiplier-ului, ajuns in urma deplasarilor, la final, in Q[0]), de corectare a rezultatului prin anularea lui Q[0] in cazul unui multiplier negativ (fiind vorba despre obtinerea produsului (3.4) pe 16 biti cu inofensivul p0=0), precum si de predare, in doua transe de cate 8 biti a rezultatului pe magistrala OUTBUS.
Intre cele doua parti
extreme,este cuprinsa cea esentiala, in fond corpul
algoritmului, care prevede repetarea de un numar de ori egal cu cel al
bitilor de marime a iteratiei (3.2) in forma care evita
adunarea la produsul partial curent a echivalentului binar a lui 0.
Astfel, conform cu cele deja expuse, prin enuntul TEST1 este tatonata
valoarea din Q[0] determinand efectuarea adunarii, prevazuta
Fiind neconflictuala cu operatia de shiftare la dreapta, incrementarea continutului numaratorului de iteratii COUNT ( enunt INCREMENT) este prevazuta a fi controlata prin acelasi semnal c3. Prin enuntul TEST2 se verifica daca s-a efectuat numarul necesar (la noi, 7) de iteratii, atunci cand continutul lui COUNT (c[2]c[1]c[0] = 111), in urma decodificarii, determina generarea semnalului COUNT7=1. La acest moment de timp, in Q[0] a ajuns semnul multiplier-ului, astfel incat se poate trece la evaluarea semnului rezultatului (prin SIGN). Atata timp cat avem COUNT7=0, procedura se bucleaza intre TEST1 si TEST2 care delimiteaza partea centrala, corpul algoritmului.
Desigur ar fi interesant de urmarit cum este realizata sinteza unitatii de control care sa permita generarea secventei semnalelor de control. In acest sens, in anexa A.2 se prezinta variate solutii pentru problema sintezei plecand insa de la un algoritm diferit de cel expus, dar asemanator, anume algoritmul Robertson menit inmultirii numerelor binare reprezentate in complement de doi. Acesta din urma a fost preferat intrucat permite evidentierea mai multor elemente caracteristice ale diferitelor metode de sinteza, dar oricare dintre acestea poate fi aplicata pentru Control Unit din fig. 3.6.
In incheierea acestui paragraf, vom aborda un exemplu (fig. 3.9), care a fost astfel ales incat sa permita ilustrarea, prin comparatie, edificatoare ale aspectelor specifice diferitilor algoritmi.In calitate de operanzi acceptam valorile zecimale X= -89*2-7 si Y=-105*2-7, care, traduse in binar utilizand codul semn-marime conduc la reprezentarile XSM= 11011001= - (2-1 +2-3+2-4+2-7) = , respectiv YSM= 11101001. In forma tabelara, in fig. 3.8, sunt prezentate continuturile registrelor structurii, precum si semnale de control necesar a fi activate pentru a declansa o anume operatie elementara. Valorile captate din magistrala pentru operanzii de intrare, precum si cele doua jumatati a produsului, descarcat in magistrala sunt prezentate inramat. Mai sunt scoase in relief valorile din rangul Q[0], momentele de generare ale lui count si COUNT7, precum si, in mod sugestiv realizarea operatiei de deplasare. Obtinerea produsului PSM=010010010000001=+9345*2-14 necesita activarea in total 4 ori a circuitelor sumatorului paralel, o data pentru fiecare unitate binara din partea de marime a lui X, fiind necesare, asa cum era de asteptat, 7 operatii de deplasare dreapta.
Analizand procedura expusa, inclusiv pe exemplul din fig. 3.9. la o apreciere grosiera, luand in consideratie cazul cel mai defavorabil al unui multiplier X cu marimea alcatuita doar din unitati binare si pe de alta parte, ignorand operatiile preliminare si finale, de incarcare a operanzilor si de descarcare a rezultatului, algoritmul prezentat poate fi caracterizat, in termeni de impulsuri de CLOCK, ca fiind de complexitate O(2n), o imbunatatire indiscutabila fata de anterior expusul algoritm bazat pe numaratoare.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |