Accelerarea procesului de inmultire binara prin cresterea valorii bazei sistemului de numeratie
Circuistica moderna pentru aritmetica nu foloseste in
mod direct recodificarile Booth, dar ele constituie baza intelegerii
si urmaririi recodificarii Booth in sisteme de numeratie cu
valoarea bazei mai mare decat 2, asa numitele higher radix of Booth's
recoding [Parh00], [SeFill05], [HePa03]. In mod evident, cresterea valorii
radix-ului r are ca efect reducerea numarului cifrelor si un algoritm
care realizeaza operatia de inmultire cifra cu cifra
(digit - at - a - time multiplication algorithm) va necesita un numar cu
atat mai mic de cicluri cu cat r este mai mare. Astfel, avand un operand pe n
biti, el poate fi interpretat ca avand cifre in r=4,
cifre in r=8,
s.a.m.d., unde barele
semnifica cel mai
mic intreg mai mare sau egal cu valoarea dintre bare. In schimb, dependent de
valoarea sporita a lui r, algoritmul trebuie sa asigure inspectarea
simultana a mai multor biti, 2 la r=4, 3 la r=8, s.a.m.d.
Acceptand, pentru inceput, r=4, sa adaptam iteratia (3.2) la noua conjunctura:
|
unde, pe
langa notatiile deja specificate, trebuie subliniat ca, de
aceasta data, poate lua valorile
0,1,2 si 3.
Daca formarea multiplelor de 0,1 si . O prima optiune de implementare a algoritmului
bazat pe (3.20) consta in calculul prealabil a lui 3Y si stocarea lui
intr-un registru pentru folosire ulterioara.
Inainte de a detalia problematica unei proceduri bazata pe (3.20), este momentul sa facem observatia conform careia, in ceea ce priveste procedurile fundamentale, am preconizat un stil de prezentare amanuntita atat a algoritmilor, cat si a dispozitivelor hardware care asigura implementarea acestora. S-a preconizat aceasta strategie pentru a intelege mecanismele in intimitatea lor, astfel incat lucrurile sa fie cat mai transparente, in imediata vecinatate a realizarii fizico - electronice. In incercarea de a asigura o prezentare cat mai unitara, vom prelua notatiile, devenite in material, consacrate, dar vom adera in continuare la o prezentare mai sintetica, insistand, inclusiv pentru a evita monotonia expunerii, doar asupra elementelor specifice diferitelor proceduri sau scheme. Totusi ne vom stradui sa pastram o transparenta cat mai mare a expunerii, care coroborata cu amanuntele date, sa permita penetrarea problemelor pana la nivelul de intimitate al tehnologiei de realizare.
|
Fig.3.30 |
In ideea de
mai sus, procedurii de inmultire in radix 4 bazata pe precomputarea
3Y si pe iteratia (3.20) ii putem asocia schema din fig. 3.30
[Parh00]. In aceasta, se observa comanda intrarilor de control a unui
multiplexor, MUX, prin perechea de biti - curent, , si vecinul sau la stanga,
- stocata in
rangurile cele mai putin semnificative ale unui registru alias Q. Prin MUX
trec inspre parallel adder, dependent de combinatia din Q[1]Q[0],
multiplii lui Y (0, Y, 2Y, 3Y) pentru a fi adunati, in conformitate cu
(3.20), la produsul partial cumulativ. Astfel, valoarea precalculata 3Y,
stocata intr-un registru suplimentar este adunata la continutul
unui registru alias A atunci cand
. Mai este important ca deplasarea, cand r=4, se face cu
2 biti (2 - bit shifts) la dreapta, ceea ce accelereaza considerabil
derularea operatiei.
Odata puse in relief particularitatile operarii in
r=4, sa analizam ce implica, pentru aceasta valoare a bazei
sistemului de numeratie, recodificarea Booth a multiplier-ului X, mai
exact prima astfel de transformare, cea exemplificata in fig. 3.13. In acest
sens, consideram un triplet de biti succesivi ai lui X, pe care ii
notam cu , apoi o pereche de biti succesivi ai lui
, pe care ii notam cu
, asociati celor din triplet, si, in fine,
notam cu
bitul asociat celor din pereche si care apartine
formei recodificate Booth in radix 4,
. Parcurgand, in mod exhaustiv, combinatiile
bitilor tripletului, rezulta valorile din tabelul prezentat in fig.
3.31. Considerand fiecare triplet
independent, valorile din coloanele xBi+1 si xBi se
obtin imediat pe seama regulilor convenite de recodificarea Booth (vezi
si fig. 3.13).
Valorile din ultima coloana, x4Bi, rezulta, intr-o
prima instanta, din valorile xBi+1 si xBi
tinand seama de ponderile alocate acestora, precum si de semnele lor.
Astfel, pentru perechea , ceea ce duce pentru rangul i (are ponderea
) al recodificarii in radix 4 la valoarea
. Tot asa, pentru perechea
, adica
. In vederea obtinerii recodificarii Booth radix 4,
se grupeaza pe perechi bitii recodificarii Booth radix 2 si
se folosesc corespondentele tabelului din fig. 3.31. De pilda,
sa consideram multiplier-ul nostru
si recodificarea sa Booth radix 2 (fig. 3.13),
situatie in care in fig. 3.32a se obtine, pe seama regulilor
statuate, forma sa recodificata radix 4,
.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fig.3.31 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Fig.3.32 |
Dar,
tranzitul prin forma recodificata radix 2 nu este necesar, conversia de
cod putandu-se realiza, in mod direct, luand in consideratie
tripletii si
din ultima coloana. Aici apare un aspect legat de
valoarea particulara a radix-ului, anume modul in care sunt grupati
bitii formei
in triplet. Intrucat r=4, saltul se face, in mod obligatoriu
peste 2 biti, deci apare necesitatea suprapunerii tripletilor la
nivelul unui bit! Reamintim ca specific acestui tip de recodificare Booth
in radix 2 am avut extensia formei
cu un bit de 0 la dreapta bitului lsb (
). Acest bit intra in componenta celui mai din
dreapta triplet, fiind lsb-ul acestuia. Aceasta extensie cu un bit la
dreapta, corelata cu folosirea cifrelor
la recodificarea in r
= 4 (ceea ce face necesara extensia cu un bit la stanga a partii
mai semnificative a produsului cumulativ si a sumatorului, dupa cum
vom vedea), reclama corectarea formei recodificate Booth radix 4, pentru
numere fractionare, prin inmultire cu 2. Astfel, in fig. 3.32b, se
arata suprapunerea tripletilor (overlapping triplets [HePa96]) in
cazul inmultitorului nostru exemplu, a carui valoare ponderata
se calculeaza, in conditiile precizate prin:
La forma recodificata Booth radix 4 s-a putut remarca, inclusiv in
fig. 3.32, injumatatirea numarului de cifre (cu
consecinte, evident, favorabile relativ la performanta procedurii),
dar si necesitatea generarii doar multiplilor ,
,
(care se obtin prin operatii simple, de shift-are
si/sau deplasare), fara a reclama multiplul
(obtenabil printr-o investitie de timp
considerabila, implicand o adunare) revendicat de anterioara
procedura de inmultire radix 4.
|
Fig.3.33 |
O
posibila implementare a algoritmului bazat pe recodificarea Booth radix 4
este data in fig. 3.33 (adaptare dupa Parh[00]). In aceasta, se
recunosc registrele Q si M, la registrul Q fiind reliefate cele 3 ranguri
de interes - Q[1], Q[0] si Q[-1] - in care apare, la un moment dat,
tripletul de analizat, precum si faptul ca, la fiecare deplasare,
continutul registrului dublu A .Q este mutat cu doi biti inspre dreapta.
Iesirile celor mai putin semnificative trei ranguri din Q se
aplica logicii de recodificare (recoding logic). Sinteza acestuia,
efectuata pe seama celor cuprinse in tabelul din fig. 3.31 (mai putin
coloanele
,
), se poate realiza, in mod simplu si eficient, generand
trei functii de iesire si anume : "zero" obtinuta prin
functia OR intre combinatiile decodificate corespunzatoare
primei linii (
), respectiv a ultimei linii (Q[1].Q[0].Q[-1]) a tabelului
(fig. 3.33), care activeaza controlul deplasarii (shift control,
alias semnalul
- fig. 3.15), "neg" obtinuta prin functia OR
(minimizata) intre combinatiile corespunzatoare tripletilor
(1,0,0), (1,0,1) si (1,1,0) - avand asociate valori negative pentru x4B
-, care activeaza controlul scaderii (subtract control, alias
semnalul
- fig. 3.15), si, in final, "two" obtinuta
prin functia OR intre combinatiile corespunzatoare
tripletilor (0,1,1) si (1,0,0) - avand asociate valori
pentru
-, care activeaza semnalul de selectie (select) a
multiplexorului MUX. Acesta din urma este alcatuit din (n+1) celule
de tipul celei din fig. 3.34, lasand sa treaca inspre cele (n+1)
intrari ale parallel adder-ului, atunci cand "two" este activ, valorile
logice de la iesirile rangurilor decalate cu un bit spre stanga ale
multiplicand-ului Y din registrul M (adica acelea care corespund la 2Y),
iar cand "two" este inactiv, prin celulele MUX-ului vor trece valorile logice
de la iesirile rangurilor lui M (adica acelea care corespund
|
Fig.3.34 |
In
consecinta, pe langa o celula de adunare suplimentara
la parallel adder, trebuie adaugat un rang in plus si la registrul
pentru formarea produsului cumulativ, alias registrul A (fig. 3.15). Faptul
ca prin penetreaza Y si atunci cand ar trebui sa fie 0 nu
deranjeaza, in aceste conditii se presupune a nu fi generat un semnal
omolog lui c2 din fig. 3.15 (ci doar unul omolog lui ).
|
Fig.3.35 |
In fig. 3.35 am aplicat procedura bazata pe recodificarea Booth
radix 4 la exemplul purtat din metodele anterioare. Se remarca extensia
registrului A cu un bit la stanga (pentru a putea fi adunate/scazute
valori de 2Y), ceea ce implica, la operarea cu (-Y) extensia bitului de semn cu o
pozitie inspre stanga. Ca si la algoritmul din fig. 3.14, respectiv
dispozitivul din fig. 3.15, deplasarea la dreapta se realizeaza prin
recircularea in A[7] a vechiului sau continut. De asemenea, se observa
ca, atunci cand este prevazuta deplasarea la dreapta, ea se
realizeaza, de fiecare data pe 2 biti, ceea ce implica
economisirea unui rang la contorul de iteratii COUNT. O ultima
remarca o facem legat de predarea rezultatului obtinut in cele 16 ranguri
ale registrului A .Q (9 din A si 7, cele mai semnificative, din Q).
Fara a mai insista, acest fapt este conex cu anterior amintita
corectie care a intervenit la calculul valorii lui (fig. 3.32).
In alta ordine de idei, pot fi sintetizate dispozitive de inmultire care sa faca uz de baze r mai mari decat 4 (8, 16, sau chiar mai mare), dupa modelul schematic din fig. 3.30, dar hardware-ul necesar generarii multiplilor (3Y, 5Y si 7Y in cazul r=8) devine complex, anuland majoritatea, daca nu integral, castigul in viteza realizat datorita numarului mai mic de cicluri. Dupa cum vom vedea insa in cele ce urmeaza, sunt posibile implementari hardware favorabile chiar si pentru baze mai mari decat 4.
Politica de confidentialitate |
![]() |
Copyright ©
2025 - 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 |