Accelerarea procesului de adunare/scadere in virgula flotanta
Vom aborda problematica imbunatatirii performantei adunarii si scaderii in virgula flotanta, supunand analizei, prin prisma operatiilor consumatoare de timp, algoritmul din anteriorul paragraf. Dintre toate operatiile in care poate fi disecata procedura, drept critice se prezinta adunarile si scaderile [HePa03].
Astfel, referindu-ne
mai intai la adunari, acestea apar in pasii 3 (la evaluarea
complementului de doi), 5 (la calculul sumei/diferentei preliminare si
la eventuala complementare de doi a significand-ului rezultat preliminar)
si 8 (la adunarea unei unitati binare pentru rotunjire). Aparent
am fi confruntati cu patru activari ale sumatorului, dar, asa
cum remarcam la prezentarea pasului 5, atunci cand sunt indeplinite
conditiile care reclama complementarea de doi a lui, avem
deci adunarea/scaderea se executa exact si nu
mai este necesara rotunjirea din pasul 8. Cu alte cuvinte, algoritmul
prezentat implica, in caz defavorabil, cel mult trei activari ale
sumatorului. Dar oricum, acestea revendica un consum insemnat de timp,
luand in consideratie ca ele se executa pe (
) biti, avand, conform standardului IEEE 754,
biti in single -
precision, respectiv
biti in double -
precision.
Pe de alta
parte, referindu-ne la deplasari, acestea, in mod evident, sunt cu atat
mai critice cu cat se realizeaza pe mai multe pozitii binare. Ca
si anterior, in mod aparent, astfel de deplasari pe mai multi
biti ar trebui efectuate atat in pasul 4 (de aliniere a numerelor
significand), cat si in pasul 6 (dedicate normalizarii preliminare a
significand-ului rezultat), intrucat la normalizarea definitiva de
dupa rotunjirea din pasul 8 poate aparea doar deplasare cu o
pozitie la dreapta. Sa defalcam aceasta analiza in
functie de valoarea absoluta a diferentei exponentilor d,
si anume sa consideram, mai intai, situatia cand deci cand, in pasul 4, avem o deplasare - la dreapta - de cel
mult o pozitie. In aceste conditii, in pasul 6 poate rezulta o
deplasare - la stanga - de doua (a se vedea si cazul exemplu f, din
fig. 5.12) sau mai multe pozitii binare. Daca insa
in pasul 4 avem o deplasare - la dreapta - de mai multi
biti, situatie in care in pasul 6, asa cum am vazut, are
loc o deplasare - la stanga - de cel mult un bit (vezi si cazurile exemplu
a la e din fig. 5.12). Conclusiv, deplasari pe doua sau mai multe
pozitii binare nu pot aparea in ambii pasi, 4 si 6, ci doar
in unul dintre ei.
A Relativ la situatia expusa, o prima posibilitate de accelerare a procesului de adunare/scadere consta in apelarea la conceptul de pipeline aritmetic cu care imbunatatirea de performanta provine de la cresterea capacitatii de trecere (throughput). Aceasta inseamna ca, suprapunand etape ale desfasurarii procesului de adunare/scadere pentru diferite astfel de operatii inlantuite mai degraba decat executand in secventa aceste operatii, in acelasi interval de timp pot fi executate mai multe adunari/scaderi. Pentru a putea fi aplicata, metoda de executie suprapusa in maniera pipeline a operatiilor implica necesitatea ca acestea sa fie divizate in suboperatii atribuite unor asa numite stagii (stages) sau segmente, a caror durata sa fie cat mai echilibrata si care sa nu produca conflicte de resurse sau de date dupa modelul executiei suprapuse a instructiilor unui procesor [HePa03]. O schema generala pentru
|
Fig. 5.16 |
o structura pipeline destinata
aritmeticii este prezentata in fig. 5.16 [Haye98]. Fiecare stagiu are alocat un registru
latch
, uzual multicuvant pentru stocarea datelor, si o
subunitate de prelucrare a datelor
, constand, uzual, dintr-o schema
combinationala. Registrele
retin rezultatele
procesate partial pe masura ce acestea avanseaza prin
pipeline, dar folosesc si ca tampoane intre stagii vecine pentru a preveni
interferenta acestora. Schimbarile de stare la registrele
au loc, in mod sincron, sub controlul unui semnal de clock
comun. Fiecare registru
obtine un set de
date de intrare provenite de la anteriorul stage
(exceptandu-l pe
la care se aplica
date de la sursa externa) si reprezentand rezultate ale unor calcule
efectuate, prin
, in anteriorul ciclu de clock, asupra carora
opereaza prin
, in ciclul de clock current, inaintand rezultatele acestei
noi prelucrari urmatorului stagiu
. In acest mod, in fiecare ciclu de clock, fiecare stage
transfera rezultatele anterioare la urmatorul stage si
calculeaza un nou set de rezultate. Cu alte cuvinte, in fiecare stage se
realizeaza cate o parte din calcule, dar rezultatul final este
obtinut dupa ce un set de operanzi traverseaza toate stage-urile
pipeline-ului. Cresterea capacitatii de trecere se obtine atunci
cand se efectueaza mai multe operatii inlantuite intrucat
un stagiu care in ciclul de clock curent, executa o prelucrare
specifica asupra unui set de operanzi, devine disponibil pentru a executa o
prelucrare asupra setului urmator de operanzi. In acest mod de
executie suprapusa decalata pot fi in executie, la un
moment dat, in cazul ideal al lipsei unor conflicte de resurse sau date,
pana la m operatii, m fiind considerata adancimea pipeline-ului
(pipeline depth).
Orice operatie care poate fi descompusa intr-o secventa de suboperatii de aproximativ aceeasi complexitate poate fi implementata, asa cum am vazut in cazul operatiei de inmultire prin structuri matriciale combinationale (fig. 3.51), printr-o structura pipeline de tipul celei din fig. 5.16. referindu-ne la procedura de
|
Fig. 5.17 |
|
Fig. 5.18 |
adunare din paragraful anterior, o divizare
ipotetica de suboperatii pe potentiale stage ar fi cea din fig.
5.17. Astfel, la dimensionare, s-a luat in consideratie situatia cea
mai defavorabila in sensul ca, spre exemplu, la stage au fost atribuite
suboperatiile obligatorii de despachetare a operanzilor (operand
unpacking) si de comparare a exponentilor (exponent comparison), dar
si, doar in unele cazuri, necesara interschimbare a operanzilor (operand
swapping). La stage
, complementarea de doi (two's complementing) a unuia dintre
operanzi se realizeaza doar cand semnele operanzilor difera, dar deplasarea
unui significand (significand shifting) fiind necesara in toate cazurile,
exceptand-ul pe cel cand
. In stage-ul
se executa operatia
propriu-zisa de adunare/scadere a numerelor significand, pe cand in
stage-ul
, complementarea de doi a significand-ului rezultat are loc
doar atunci cand semnele operanzilor sunt diferite si cand, asa cum
am vazut,
. La suboperatia de normalizare a significand-ului
rezultat (significand normalizing), prevazuta tot in stage
, se apeleaza frecvent. Ultimului stage,
, i-au fost atribuite potentialele suboperatii de
rotunjire a significand-ului rezultat (significand rounding) si de
eventuala noua normalizare a acestuia, precum si
suboperatia obligatorie de impachetare a rezultatului (result packing).
Din analiza atribuirii suboperatiilor la cele 5 stage-uri se poate constata ca a primat rezultarea unei durate cat mai echilibrate a stage-urilor prevazute cu numarul defavorabil (cel mai mare) de suboperatii. In acest context, se impune remarcat faptul ca, dependent de tehnologia de care dispune proiectantul, suboperatiile din figura 5.17 pot fi grupate in mod diferit, asa cum se prezinta, spre exemplu, in [HePa03] variantele de implementare a unitatilor de adunare/scadere din unele chip-uri comerciale.
In situatia ca exista o asa numita pipeline-izare completa a subunitatilor functionale (sumatoare/scazatoare, dispozitive de deplasare, s.a.), adica structura unitatii de adunare/scadere include un numar suficient de resurse astfel incat sa poata fi executate simultan cate operatii de un anumit tip sunt necesare, atunci operatii inlantuite pot fi executate in maniera cu suprapunere decalata ideala ca in fig. 5.18. Daca insa, o anume subunitate functionala, spre exemplu, un adder, nu exista suficiente copii ale acestuia, atunci activitatea la nivelul respectivei subunitati trebuie serializata (se spune ca avem de-a face cu un hazard la nivel de structura) si situatia ideala prin prisma cresterii capacitatii de trecere se degradeaza in mod corespunzator.
B Pe langa solutiile bazate pe principiul pipeline-izarii aritmetice, accelerarea procesului de adunare/scadere poate fi intreprinsa uzitand de conceptul de paralelism, in particular, referindu-ne la executia simultana, in paralel, a doua procese de adunare/scadere [SeEv04] [SeEv01]. Fara a pierde din generalitate, vizam in mod concret adunarea, adaptarea problematicii la scadere fiind imediata. De asemenea, in scop de concretete, admitem ca, in ceea ce priveste rotunjirea, modul acceptat este cel "toward to nearest even" (fig. 5.9). In ceea ce priveste analiza accelerarii bazata pe paralelism, dependent de semnele operanzilor si de valoarea diferentei exponentilor, se impun luate in consideratie urmatoarele trei cazuri:
B1 Cazul cand semnele celor doi operanzi, X si Y, sunt identice (sign(X)=sign(Y)).
Parcurgerea algoritmului
descris anterior arata ca, in acest caz, complementarile de doi
din pasii 3 si 5 sunt evitate (vezi exemplul 2, fig. 5.15), deci nu
este activat sumatorul care ar fi implicat in aceasta operatie,
activare care este insa obligatorie pentru adunarea preliminara din
pasul 5 si este potentiala in pasul 8, de rotunjire. Problema
apare la adunarea din pasul 5 intrucat la aceasta operatie se poate
genera carry-out (), respectiv acest lucru poate sa nu se intample. Ca
atare, pozitia msb-ului sumei nu este cunoscuta apriori. Pentru o
introspectie mai amanuntita a situatiei, sa
consideram cazul, edificator in opinia noastra, din fig. 5.19, unde
am folosit doua sumatoare paralele (parallel adder), la cel din stanga admitand
ca nu se genereaza carry-out (
), iar la cel din dreapta admitand ca se genereaza
carry-out (
). Dar, pentru cele doua situatii, bitii de
rotunjire R si S pot fi generati in mod anticipativ, fara a
astepta terminarea adunarii, asa cum este ilustrat si in
figura 5.19.
|
Fig. 5.19 |
In acest sens, la
ambele alternative, se face uz de intrarea de carry-in () corespunzatoare celor doua sumatoare, dar in mod
diferit. La adunarea significand-ului nedeplasat
cu cel shift-at
, in cazul in care avem no carry-out (
), functia generala de rotunjire R (
) (fig. 5.9) se particularizeaza prin
si
, in asa fel incat pentru significand-ul suma, pe care
il notam, corespunzator acestei situatii, cu
obtinem:
(5.2)
unde prin inmultirea
cu s-a sugerat ca bitul general de rotunjire este
adunat la lsb-ul sumei, mantisa significand-ului fiind subunitara.
In
celalalt caz, cand se genereaza carry-out (), lucrurile se prezinta nitel mai complicat
avand in vedere ca la functia de rotunjire participa acum doi
biti ai sumei (
si
) si aceasta se impune aplicata cu un rang
decalat la stanga (datorita
) fata de situatia anterioara.
Avand in vedere aceste aspecte, in fig. 5.19, sumatorul paralel a fost
sectionat in doua parti, una constituita de rangul lsb
(intrari, in cazul adoptat,
si
, iesire
) si celelalte ranguri la care se aplica
segmentele
si
reprezentand
numerele significand
si
mai putin
rangurile lor lsb. Luand in consideratie noile particularitati
si
si rangul
la care se aplica bitul general de rotunjire, precum si notand cu
significand-ul
suma din cazul cand
, obtinem:
(5.3)
Avand in
vedere ca avem (la
sectiunea cu intrarile
si
) doar atunci cand
, se poate constata in mod facil ca bitul general
de rotunjire poate fi aplicat rangului lsb, eliminand poarta OR dintre
sectiuni (fig. 5.19) din calea critica, adica:
(5.4)
Cu aceste
precizari, mentionam ca sumatoarele functioneaza
simultan obtinand, in general, doua rezultate dintre care unul este,
in mod cert, corect. Acesta din urma se alege in functie de valoarea
obtinuta pentru si anume,
daca aceasta este 0, se alege rezultatul furnizat de sumatorul din stanga
(fig. 5.19), iar daca valoarea lui
este 1, rezultatul ales
va fi cel furnizat de sumatorul din dreapta (fig. 5.19). Remarcam ca
exista si o situatie limita, cand in urma adunarii
prin sumatorul din stanga se obtine un significand rezultat format doar
din biti de 1, iar prin sumatorul din dreapta doar biti de 0, cand aparent
ambele rezultate ar fi corecte. In acest caz, significand-ul rezultat al
sumatorului din dreapta depaseste plaja valoric tolerata (
), deci rezultatul corect este cel furnizat de sumatorul din
stanga.
Relativ la cazul sign(X)=sign(Y), se poate conchide ca apeland la executia simultana, in paralel, a celor doua adunari, in termeni de durata a calculelor intervalul pesimistic revendicat de cele trei activari de sumator, rezultate intr-o prima analiza, se poate reduce la cel corespunzator unei singure activari, constand intr-o accelerare consistenta.
B2 Cazul cand semnele celor doi operanzi, X
si Y, difera (dar au acelasi exponent (
Parcurgerea
algoritmului descris anterior arata ca, in acest caz, devine
obligatorie complementarea de doi din pasul 3, ca de altfel, si adunarea
preliminara din pasul 5, care ar putea fi succedata, in
conditiile cand msb-ul sumei rezulta 1 si nu exista carry -
out, de o noua complementare de doi, de aceasta data, a
significand-ului rezultat. In mod evident, in acest caz, suma este exacta,
facand inutila rotunjirea din pasul 8. Totusi, in caz
defavorabil, aceasta situatie reclama activarea de trei ori a
sumatorului paralel, admitand ca prin intermediul acestuia se
realizeaza complementarea de doi adunand un 1 aplicat intrarii de
carry - in la valoarea complementului de unu. Si aceasta
situatie pesimista poate fi surmontata uzitand de doua sumatoare
care sa opereze simultan, efectuand operatiile din fig. 5.20.
specificand ca, pentru simplitate, am folosit aceiasi notatie () si pentru numerele significand cu semn si ca
am notat cu 1 acea unitate binara care se aduna la cifrele lsb,
fara a mai lua in consideratie ponderea acesteia, se poate
remarca faptul ca in partea stanga se
|
Fig. 5.20 |
efectueaza operatia , iar in partea dreapta se efectueaza operatia
, unde prin
si
au fost notate
valorile complement de unu obtinute prin trecerea numerelor significand
si
prin wordgate-urile EXCLUSIVE
- OR, atunci cand este activ (pe 1) semnalul de control c, generat, la
indeplinirea conditiilor (
), de catre unitatea de control. Aplicand
si la
intrarile
ale celor
doua sumatoare, se obtin complementele de doi, astfel incat se
obtin rezultatele adunarilor
, respectiv
, care conduc la sumele
, respectiv
, ultima reprezentand complementul de doi a celei
dintai. In
acest mod, au fost comprimate intr-o
singura operatie complementarea de doi din pasul 3 si adunarea
din pasul 5, urmand a mai stabili semnul rezultatului. Sub acest aspect, este
de remarcat ca un rezultat suma,
, este pozitiv, cel pentru care
, iar celalalt,
, este negativ, cel pentru care
. Pentru a obtine forma dorita semn - marime a
significand-ului rezultat,
ar trebui supus unei
suplimentare complementari de doi. In consecinta, se
opteaza pentru valoarea
a carei alegere
se realizeaza pe seama faptului ca ea corespunde acelui sumator la
care s-a sesizat
.
Concluzia care se desprinde pentru acest caz este una similara cu cea de la B1 in sensul ca, apeland la doua sumatoare (in loc de unul) cu functionare simultana, procesul de adunare poate fi accelerat fiind necesara doar durata corespunzatoare unei singure activari a sumatorului in loc de cea corespunzatoare la, defavorabil, trei.
B3 Cazul cand semnele celor doi operanzi, X si Y,
difera (si difera si valorile exponentilor (
).
Preconizam
defalcarea analizei corespunzatoare acestui caz in functie de valoarea
absoluta a diferentei dintre valorile exponentilor, anume
B3a Subcazul si
Corespunzator
acestui subcaz, remarcam mai intai obligativitatea complementarii de
doi din pasul 3, precum si a adunarii preliminare din pasul 5. Problema
se pune in legatura cu rotunjirea din pasul 8, care devine nenecesara
daca suma prezinta doi sau mai multi biti leading de 0
(vezi si cazul exemplu f, fig. 5.12) intrucat, prin deplasare la stanga,
bitii implicati in rotunjire devin 0, deci adunarea se executa
exact. Exista
insa o situatie cand s-ar putea sa fie necesara rotunjirea
in sus, anume atunci cand bit-ul leading 1 al rezultatului coincide ca pozitie
cu respectivul bit al significand-ului operand nedeplasat, deci rezultatul e
normalizat si nu mai trebuie shift-at. Cu toate ca bitul sticky S
este 0, intrucat R si (bitul lsb al rezultatului) pot fi 1, conform cu fig. 5.9,
este posibil sa rezulte rotunjire in sus in pasul 8. In vederea
accelerarii, sa cumulam, mai intai, operatiile din
pasii 3 si 5, efectuand, la activarea semnalului de control c (cu o
semnificatie asemanatoare celei de la cazul B2), diferenta
dintre numerele significand
si
(reprezentand significand-ul
mai putin bitul
sau lsb,
), asa cum se prezinta in fig. 5.20. A fost
exemplificat, fara a pierde din generalitate, cazul in care sign(X)=1
si sign(Y)=0. Se observa la sumatorul din partea stanga
situatia corespunzatoare careia bitul din pozitia hidden a
significand-ului rezultat
admitem ca este 1
ca si omologul sau, al significand-ului operand
, cand, atunci cand
(alias
), rezulta ca necesara rotunjirea in sus. Dar
si aceasta operatie poate fi combinata cu celelalte
doua, toate fiind executate la momentul de timp corespunzator pasului
5, intrucat normalizarea lui
(pas 6) nu mai e
necesara (1 in pozitia hidden,
-vezi si fig. 5.20) si nici ajustarea valorilor lui
R si S (pas 7). Nu trebuie omis ca operatia de complementare din
pasul 3 se realizeaza concomitent cu adunarea preliminara din pasul
5, deci apare o inversare a pasului 4, de aliniere a numerelor significand, cu
pasul 3 in algoritmul descris in paragraful anterior. Din punct de vedere
tehnic, combinarea rotunjirii cu celelalte suboperatii este posibila
prin adaosul portii OR de intrarea
a sumatorului,
respectiv a portii AND avand ca intrari pe
si
. Pe de alta parte, daca bitul
a
significand-ului suma
rezulta 0,
atunci pasul 6, de normalizare, nu poate fi omis, dar, prin aceasta, R devine
0, deci rotunjirea nu trebuie realizata rezultatul fiind exact. Cu alte
cuvinte, sumatorul din dreapta nu efectueaza rotunjirea, iar
urmeaza
ca, dupa evaluarea significand-ului
, sa devina, prin normalizare, un bit al
acestuia. Prin urmare, alegerea dintre cele doua rezultate
, obtinute simultan, se face in functie de
valoarea bitului lor hidden,
(cand este 1,
este
obtinut rotunjit, iar cand este 0,
nu trebuie
rotunjit, dar trebuie normalizat). In acest mod, din nou, cele altfel trei
activari de sumator se reduc, in termeni de timp, la doar una, corespunzatoare
solutiei paralele descrise.
|
Fig. 5.21 |
B3b Subcazul si
.
Corespunzator
acestui subcaz, din nou, complementarea de doi din pasul 3 si adunarea
preliminara din pasul 5 sunt obligatorii, fiind posibila, dependent
de indeplinirea conditiilor din fig. 5.9, si rotunjirea din pasul 8
(vezi si cazurile exemplu a la e, fig. 5.12). Pe baza analizelor
anterioare, corespunzator acestei situatii pozitia bitului
leading 1 a diferentei poate fi doar una din doua, anume pozitia
bitului hidden sau cea imediat adiacenta pozitional la dreapta. In
vederea accelerarii executiei operatiei, preconizam si
in acest caz combinarea complementarii de doi din pasul 3 cu adunarea
preliminara din pasul 5 printr-o solutie asemanatoare cu
cea de la subcazul B3a, devansandu-le pe acestea doua prin pasul 4, de
aliniere a numerelor significand. Sa analizam efectele
interschimbarii pasilor 3 si 4 in ceea ce priveste valorile
bitilor de rotunjire g, r si s. Astfel, se poate observa in mod facil
ca la nivelul lui s nu apar modificari avand aceeasi valoare la
forma semn - marime ca si in cea complementata de doi. Lucrurile
se prezinta diferit referitor la g si r. Pentru a obtine
valorile corecte corespunzatoare acestora se impune o investitie
suplimentara constand din extensia sumatorului utilizat la calculul lui cu doua ranguri
la dreapta. Pentru a urmari modul de fructificare a acestei extensii, vom
face mai intai unele observatii referitoare la efectuarea diferentei
exemplu din fig. 5.22. Este de remarcat ca, atunci cand toate cifrele
binare ale operandului
situate la dreapta
celor (
) cifre binare a
|
Fig. 5.22 |
operand-ului sunt 0 (in fig. 5.22,
), atunci bitul de 1 adunat la bitul
al complementului de
unu,
, a lui
se propaga in calitate
de carry fiind adunat, in ultima instanta, la perechea lsb din
cele (
) ale operanzilor
si
, astfel ca suma
, pe (
) biti, rezulta in a consta din
. Pe de alta parte, daca doar unul sau mai
multi dintre bitii operandului
situati la
dreapta celor (
) ai operandului
(in fig. 5.22,
si
), atunci propagarea transportului provocat de adunarea la
bitul
al complementului de
unu
, a lui
va fi blocata,
astfel incat la perechea lsb din cele (
) ale operanzilor
si
ajunge sa se
adune 0, modalitate in care suma
, pe (
) biti, rezulta a consta din
.
Cu aceasta
observatie, revenind la sumatorul extins cu doua ranguri la dreapta
celor () biti in vederea obtinerii valorilor corecte
pentru bitii de rotunjire g si r, prezentam situatiile
alternative din fig. 5.23. Am considerat ca din significand-ul
se scade
deplasat in vederea
alinierii, la care am considerat, fara a pierde din generalitate,
cazul particular
,
si
. Operandul
este extins cu doua 0-uri nesemnificative, la dreapta bitului
sau lsb (
), devenind
, iar complementul de unu al operandului
are, in pozitiile
corespondente celor doua 0-uri a
lui
, bitii
si
, devenind
. Cele doua cazuri alternative apar in functie de
bitul sticky preliminar, s, a carui valoare a fost stabilita, in mod
corect in pasul 4. Astfel, cand
, se observa ca adunarea unui 1 la
face sa se propage
un
|
Fig. 5.23 |
carry (1 marcat cu sageata) inspre
rangul lsb al sumatorului, astfel ca, in conformitate cu adunarea din
partea stanga a fig. 5.22, obtinem significand-ul suma extins si el cu
corespondentele doua ranguri la dreapta, in forma
. In mod similar, cand
, prin adunarea unui 1 la
nu se genereaza
carry (0 marcat cu sageata) inspre rangul lsb al sumatorului, astfel
ca, in conformitate cu adunarea din partea dreapta a fig. 5.22,
obtinem pe
, de aceasta data in forma
. Mentionam ca esential este faptul
ca, in ambele situatii, bitii din pozitiile extinse ale lui
au valori corecte,
astfel incat poate fi intreprinsa, prin intermediul lor, rotunjirea in
conformitate cu cerintele algoritmului.
Cu aceste
precizari, in vederea accelerarii procesului de adunare, sa
incercam combinarea celor trei suboperatii amintite intr-una
singura, luand in consideratie cele doua situatii conform
carora bitul (hidden) a lui
ia valoarea 0,
respectiv 1. Obtinem deci alternativele prezentate in fig. 5.24, in care
ambele sumatoare paralele au fost extinse la dreapta cu doua full adder
cell (FAC) interconectate in maniera ripple carry adder (RCA).
Situatia din partea stanga a fig. 5.24 corespunde situatiei cand
, cand significand-ul suma final
ar mai trebui normalizat
prin deplasare la stanga cu o pozitie binara. Aceasta
ultima suboperatie nu trebuie facuta daca luam
bitii lui
decalati,
adica la pozitia hidden se aloca
iar lsb-ul lui
devine
. In mod corespunzator trebuie aplicata iesirea
functiei logice de rotunjire (vezi fig. 5.9) si anume prin
intermediul portii OR conectata pe intrarea
a FAC-ului avand
iesirea
. De asemenea, la aceasta alternativa, conform cu
cele din fig. 5.8,
si
, unde s preliminar se presupune ca a fost determinat in
pasul 4, de aliniere, care precede pasul combinat prezentat in fig. 5.24. In
rest, se remarca portile EX - OR care, conform si cu cele din
fig. 5.23, permit obtinerea lui
(prin
au fost notati
doar acei biti ai lui
care sunt aliniati
cu bitii lui
) si care sunt toate comandate de semnalul c, cu o
semnificatie asemanatoare cu cea de la fig. 5.20, respectiv fig.
5.21, provenit de la unitatea de
|
Fig. 5.24 |
control si care este, de asemenea, aplicat
intrarii a adder-ului extins,
permitand obtinerea complementului de doi.
Pe de
alta parte, situatia din partea dreapta a fig. 5.24
prezinta unele elemente distinctive cauzate de faptul ca la
aceasta alternativa avem bitul , ceea ce exclude operatia de normalizare.
Desigur, aceasta reclama ca significand-ul suma finala
sa
aiba
ca msb si z0
ca lsb, dar mai implica si mutarea portii OR astfel incat
functia logica de rotunjire (vezi fig. 5.9) sa fie aplicata,
prin intermediul acestei porti, pe intrarea
a FAC-ului
avand iesirea
. De asemenea, la aceasta alternativa,
conform cu cele din fig. 5.8,
si
, unde, din nou s se presupune ca a fost
determinat in pasul de aliniere.
In consecinta, si la acest subcaz, cele trei activari inlantuite ale unui sumator se reduce, in termeni de timp, la doar una in care functioneaza in paralel doua sumatoare, ca si in toate celelalte situatii analizate. Intr-o versiune de proiectare economica, se poate aplica reconfigurarea schemelor sumatoarelor in functie de semnele operanzilor, respectiv diferenta valorilor exponentilor, rezultand o solutie tehnica care sa se constituie intr-un concurent acerb pentru varianta bazata pe conceptual pipeline [BrLa01].
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 |