Sunteți pe pagina 1din 48

Structura unitatii aritmetice si logice

!  sumator pentru numere reprezentate în comple-ment de unu, cu


detecţie a overflow-ului.
!  Sumatorul pentru în-sumarea numerelor în complement faţă de 2
va fi similar, cu diferenţa că acesta nu va avea recircularea
transportului.
An-1 A1 A0 Bn-1 B1 B0
•••
CY-out CY-in
SFS
& &
•••
+
Overflow Sn-1 S1 S0
Ai Bi
Simbolizare:
& ⊕ Ai Bi
Ci
Ci+1 Ci
FA i
& ⊕
Si
+
Ci+1 Si
An-1 Bn-1 A1 B1 A0 B0
Cn-1 Cn- C1 C0 C-1
FA n-1 FA 1 FA 0
1 . . .
Sn-1 S1 S0
•  RCA – Ripple Carry Adder
!  Sumatorul Mancester (Manchester Adder - MA) este de fapt un
sumator RCA la care calea de propagare a lui CY e formată din
switch-uri ce înlocuiesc porţile din această cale. Această cale de
propagare a lui CY este referită prin termenul de CY-path, ea fiind
mai rapidă decât cea a sumatorului RCA
1
SG
Ai⋅Bi
SP
Ci Ci-1
Ai ⊕ Bi
Ai⋅Bi
SO
pentru formarea
0 lui Si
Ai Bi
& ⊕ &
Ci-10
Ci-11
& & ⊕
+ + Si
Ci1
Ci0
!  Aceste ecuaţii stau la baza sintezei
celulei de rang i, numită Carry-
complete full adder - CFA, a
sumatorului CCA (Carry
Completion Adder )
An-1 A1 A0
Bn-1 B1 B0 0
C−1
1
C−1
CFA CFA CFA
C10 C00
C n −1 = C n1−1 C11 C 01
1 0
Cn−2 Cn−2
+ + +
Sn-1
S1 S0
&
Carry complete
!  Întrucât există 5 niveluri de logică şi calea de propagare a lui CY la nivelul
fiecărui CFA implică 2 τ, timpul de operare al CFA este dat după cum urmează
(în toate cele 3 cazuri s-au inclus două niveluri de întârziere pentru iniţializare):
!  Cazul cel mai favorabil: 7τ
!  Apare când nu există CY-uri şi timpul de operare este determinat de întârzierea
de la punctul de intrare până la ieşirea porţii ce formează CY complete.
!  Media cazurilor: (2log2n+4)τ
!  Calea de propagare a lui CY este prin ranguri, cu o întârziere de 2τ pentru
fiecare rang. Logica de formare a lui CY complete mai adaugă 2τ.
!  Cazul cel mai defavorabil: (2n+4)τ
!  Calea de propagare a lui CY este peste ranguri cu o întârziere de 2τ / rang la care
se adaugă 2τ pentru logica lui CY complete.
!  Pentru comparare cu alte sumatoare se va considera timpul mediei cazurilor ca şi
timp operaţional la acest sumator.
TOPCCA=(2log2n+4)τ
!  Ci = Ai⋅Bi + Ci-1⋅ (Ai ⊕ Bi) = Gi + Ci-1⋅ Pi
◦  Gi condiţia de generare a transportului în rangul i, iar
◦  Pi condiţia de propagare a transportului peste rangul i.
⇒ Ci = Gi + Pi ⋅ Gi-1 + Pi ⋅ Pi-1 ⋅ Gi-2 + ... + Pi ⋅ Pi-1 ⋅ Pi-2 ... ⋅ P0 ⋅ C-1
unde Gi= Ai⋅Bi şi Pi=Ai ⊕ Bi şi C-1 este transportul iniţial
!  Funcţia de propagare Pi poate fi înlocuită cu funcţia de transfer Ti:
Ti=Ai+Bi
B3 A3 B2 A2 B1 A1 B0 A0
& ⊕ & ⊕ & ⊕ & ⊕
C-1
& & & & & & & & & &
+ + + +
⊕ ⊕ ⊕ ⊕
C3
S3 S2 S1 S0
!  Pentru un număr mare de cifre binare sumatorul CLA în formă pură
este dificil de realizat. În practică se aplică principiul anticipării
transportului în cadrul unor blocuri având în jur de patru poziţii
binare.
!  Timpul de operare a unui asemenea sumator este 4τ, el nu depinde
de dimensiunea operanzilor, fiind compus din următoarele elemente:
!  τ pentru obţinerea semnalelor P, G şi cele ale sumelor parţiale
!  2τ pentru formarea semnalelor C
!  τ pentru asimilarea transporturilor şi a sumelor parţiale
!  Problema principală este dată de limitările ce apar datorită cerinţelor
de fan-in şi fan-out ridicat.
!  Ripple-Block Carry-Lookahead Adder - RCLA
Bm-1 Am-1 B1 A1 B0 A0
• • • • • • • • •
Cn-1 C2m-1 Cm-1 C-1
CLA CLA CLA
• • • • • • • • •
Sn-1 Sn-m Sn-m--1 S2m-1 Sm-1 Sm Sm-1 S1 S0
!  Deci, timpul de operare al sumatorului RCLA este dat
de suma următorilor termeni:
!  1 τ pentru formarea semnalelor P şi G
!  2τ pentru formarea lui
!  2(N-2)τ pentru propagare prin blocurile 1, 2, ..., N-2
!  3τ pentru formarea biţilor Sn-1, Sn-2, ..., Sn-m
(şi a lui Cm-1), ceilalţi biţi sumă fiind deja formaţi
!  Se obţine un timp total de adunare de valoare:
!  TOPRCLA=2(N+1)τ
!  Block Carry Lookahead Adder – BCLA
!  eficient doar dacă n este suficient de mare şi m este suficient de mic pentru
ca pierderea de viteză datorită propagării serie a transportului la nivelul
blocurilor să fie compensată de câştigul în viteză dat de anticiparea
transporturilor între blocuri
!  Unitatea CY-looka-head la nivel de bloc – BL – din Fig.3. 9 este construită
prin implementarea ecuaţiilor de anticipare de la nivelul unui singur bloc
B2m-1 A2m-1 Bm Am Bm-1 Am-1 B0 A0
• • • Cm+1 Cm C1 C0
FA FA FA FA FA FA FA FA FA
Sm Sm-1 S0
Pm Pm-1 P0
Gm Cm-1 Gm-1 G0 C-1
BL BL BL
Blocul 1 Blocul 0
Gi+3 Pi+3 Gi+2 Pi+2 Gi+1 Pi+1 Gi Pi
Ci-1
& & & &
Ci+3
+
!  Timpul total de adunare este:
TOPBCLA=2(m+N-1)τ
!  fiind compus din următoarele elemente:
!  1τ pentru a forma semnalele P şi G
!  2(N-1)τ pentru propagare prin unităţile CY-lookahead 0,1,...,N-2
!  2(m-1)τ pentru propagare prin primele (m-1) FA ale ultimului bloc
!  1τ pentru formarea lui Sn-1
!  Pentru o valoare dată pentru , dimensiunea de bloc optimă din
punctul de vedere al timpului de operare este cea pentru care:
Blocul 1 Blocul 0
• • •
FA FA FA FA FA FA FA FA FA
BL BL BL C-1
!  Pentru valori ale lui mai mici decât valoarea lui optimă,
există un număr mai mare de blocuri şi propagarea prin
unităţile lookahead va afecta performanţa sumatorului, iar
pentru valori ale lui mai mari decât valoarea lui optimă,
numărul FA din fiecare bloc este mare, şi propagarea prin
acestea va afecta performanţele sumatorului
!  Vom considera un sumator BCLA cu M blocuri de m cifre binare ce sunt grupate într-un superbloc,
şi la care al doilea nivel de anticipare acţionează la nivelul superblocului. Un asemenea sumator este
referit prin termenul de sumator cu anticiparea transportului între blocuri organizat pe două niveluri
(SuperBlock Carry-Lookahead Adder - SBCLA).
!  organizarea de principiu a unui asemenea sumator pe 32 biţi, cu m=4 şi M=4, iar în
Fig.3. 13 sunt date detaliile primului nivel de look-ahead.
B3 A3 B1 A1 B0 A0
FA FA FA FA FA FA FA FA FA FA FA FA
BL BL BL BL
G3’ P3’ G2’ P2’ G1’ P1’ G0’ P0’
c15 C-1
SBL
B16 A16
FA FA FA FA FA FA FA FA FA FA FA FA
BL BL BL BL
G7’ P7’ G6’ P6’ G5’ P5’ G4’ P4’
c31
SBL
Gjm+3 Pjm+3 Gjm+2 Pjm+2 Gjm+1 Pjm+1 Gjm
Pjm
Cjm-1
& & & & & & & &
+ +
Cjm+3 Gj’ Pj’
FA FA FA FA FA FA FA FA FA FA FA FA
• • • • • •
BL BL BL BL C-1
Blocul n-1 Blocul 0
SBL SBL
&N # Superblocul 0
Superblocul $$ −1 !!
%M "
!  Pentru o dimensiune de bloc dată şi pentru o dimensiune a operanzilor
dată, dimensiunea optimă a superblocurilor este cea pentru care:
(în practică valoarea întreagă cea mai apropiată de aceasta). Considerând
această valoare optimă, se observă că pentru o dimensiune de bloc dată şi
pentru o dimensiune a operanzilor ce se însumează şi ea dată, pentru
sumatorul SBCLA este mai bun decât sumatorul BCLA
!  Acest tip de sumator se obţine prin adăugarea unui al doilea nivel de
lookahead la sumatorul RCLA → un sumator numit Sumatorul cu
anticiparea transportului pe blocuri organizat pe două niveluri (SuperBlock-
Ripple Carry-Lookahead Adder - SRCLA) cu performanţe de viteză mai
mari datorită faptului că este redus timpul de propagare a transportului
între blocuri.
A31– A28 A27 – A24 A23 – A20 A19 – A16 A15 – A12 A11 – A8 A7 – A4 A3 – A0
B31– B28 B27 – B24 B23 – B20 B19 – B16 B15 – B12 B11– B8 B7 – B4 B3 – B0
CLA CLA CLA CLA CLA CLA CLA CLA
P3 - P7 P0 - P3 S0 - S3
G3 - G7 G0 - G3
BPG BPG BPG BPG BPG BPG BPG BPG
C27 C23 P0’
C19 C11 C7 C3
G0’
C31 C15 C-1
SBL SBL
• • • • • • • • •
CLA CLA CLA CLA CLA CLA CLA CLA CLA
BPG BPG BPG BPG CLA BPG BPG BPG BPG BPG
SBL SBL SBL C-1
Superblocul ( )
N
M
−1
Superblocul 0
!  Expresia timpului de operare arată că cele mai bune
performanţe vor fi obţinute dacă se aleg atât cât şi cât mai
mari posibile.
!  se observă că pentru valori date ale lui şi performanţele
SRCLA vor fi mai bune decât cele ale ISBCLA.
!  Întrucât valorile şi sunt determinate pentru ambele sumatoare
pe baza aceloraşi considerente de fan-out şi de fan-in, se poate
conclude că sumatoarele SRCLA sunt mai performante sub
aspectul timpului de operare decât sumatoarele ISBCLA.
!  Conform ecuaţiilor de implementare a sumatorului CLA în formă pură,
sinteza unui asemenea sumator pentru operare pe n biţi, reclamă un fan-in
de valoare n+1 atât pentru poarta OR cât şi pentru poarta AND cea mai
puţin semnificativă. De asemenea, semnalul trebuie să comande n porţi
AND. Aceste aspecte precum şi faptul că structura circuitului este destul de
neregulată implicând conexiuni lungi fac impracticabilă utilizarea
sumatorului CLA în formă pură pentru valori mari ale lui n.
!  Totuşi, pornind de la conceptul carry-lokahead, se poate construi un
sumator cu anticipare piramidală a transportului (Pyramidal CLA –
PyCLA), cu niveluri logice (mult mai puţine decât cele 2n impuse de un
sumator RCA) ce are o structură simplă şi regulată. La baza implementării
acestui sumator se află ideea construirii pe paşi a semnalelor şi . Ecuaţiile
implementării sunt următoarele:
!  unde G01 indică generarea unui CY de către blocul primilor 2 biţi, iar P01
reprezintă CY propagat prin acest bloc. Ecuaţiile pentru şi sunt
următoarele:
S7 S6 S5 S4 S3 S2 S1 S0
A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 A0 B0
A A A A A A A A
C6 C5 C4 C3 C2 C1 C0 C-1
B B B B
C5 C3 C1
B B
C3 C-1
B
Si
C-1 Ai Bi Gj+1,k Pj+1,k Cj
S i = Ai ⊕ Bi ⊕ Ci −1
pi = Ai + Bi Gij
A B Pij
g i = Ai ⋅ Bi Ci-1
gi, pi, Ci-1 Gi,k Pi,k Ci-1
!  Un sumator PyCLA are log2n niveluri, şi întrucât întârzierea prin fiecare
nivel este 2τ, timpul de operare a unui asemenea sumator este:
TOPPYCLA=(2log2n)τ
!  Acest sumator, numit sumator cu un nivel de omitere a transportului
(Carry-Skip Adder – CSkA) cu un nivel de omitere CY, se obţine
pornind de la un sumator RCA ale cărui ranguri sunt grupate în
blocuri (nu neapărat de aceeaşi dimensiune), ce se echipează cu o
logică de omitere (CY-skip) ce detectează dacă CY-in a blocului
poate omite blocul respectiv, fiind trecut astfel, direct, ca şi CY-in la
blocul următor.
!  Ideea de bază a sumatorului CSkA constă în faptul că, la nivelul
rangului i, dacă Ai=1 , sau dacă Bi=1 , CY-in al rangului i va omite
acest rang. Pe de altă parte, singura situaţie când rangul i are un CY-
in=1 şi nu generează CY-out este când atât Ai=0, cât şi Bi=0.
!  Sumatorul CSkA este utilizabil numai dacă semnalele CY-out pot fi
şterse uşor la-nceputul fiecărei operaţii (de exemplu prin pre-
încărcare în CMOS).
!  Ideea acestui sumator se pare că a fost inventată de Babbage. Prima
implementare a acestui sumator se regăseşte în sistemul de calcul
KDF-9.
A3m-1 B3m-1 A2m B2m A2m-1 B2m-1 Am Bm Am-1 Bm-1 A0 B0
... ... ...
C3m-1 C2m-1 Cm-1 C-1
+ RCA + RCA + RCA
T2m,3m- Tm,2m-1 T0,m-1
1
& & &
&n #
Blocul $ −1! Blocul 1 Blocul 0
%m "
• • •
CY- Skip
!  În acest scop, blocurile skip se grupează în superblocuri (superblock), ce se
prevăd fiecare în parte cu logică CY-skip.
B 2 m -1 -B 3 m -1 A 2m -A 3 m -1 B m -1- B 2 m -1 A m-A 2 m -1 B 0 -B m -1 A 0 -A m -1
. . . . . . . . .
C 2 m -1 C m -1 C -1
+ B lo c 2 + B lo c 1 + B lo c 0
T 2 m ,3 m -1 ... T m ,2 m -1 ... T 0 ,m -1 ...
& & &
K K K
2
&
1
& 0
&
&
••• •••
RCA RCA RCA RCA RCA RCA
•••
BSk BSk BSk
BSk BSk BSk
SBSk SBSk C-1
!  Sumatorul cu selecţia sumei (Carry-Select Adder -
CSlA), este bazat pe acelaşi principiu ca şi sumatorul
CdSumA, adică pe calculul mai multor seturi de biţi
sumă şi alegerea dintre acestea a unuia în funcţie de
valorile CY determinate.
!  În cele ce urmează vom prezenta un sumator CSlA ce utilizează pe
cât posibil CLA, întrucât acesta este cel mai performant pentru
asemenea sumatoare. Pe de altă parte sunt posibile şi alte variante de
utilizare a lui CLA, de genul: CLA cu propagare serială între
blocuri, respectiv cu propagare serială la nivelul blocurilor.
!  Sumatorul la care se face referire în continuare l se numeşte
Lookahead-Ripple Carry-Select Adder – LR-CSlA.
!  Fiecare din cele m blocuri poate fi văzut ca şi constând din:
!  o unitate CY,
!  o unitate de generare a sumei – GS ,
!  o unitate de selecţie a sumei - SS
!  În realitate cele 3 părţi nu sunt neapărat complet separate.
Bn+1 An+1 B2m+1 A2m+1 Bm+1Am+ Bm Am Bm-1 Am-1 B1 A1 B0 A0
1
••• ••• •••
1-CY sum 0-CY sum 1-CY sum 0-CY sum
Bn −1 ÷ B0
An −1 ÷ A0 S 1
S 0
S 1
S 1
S S 1 0
S 0
S 0
S 1
S 1
S 1
S 0
S10 S 00
n−1 n+1 2 m−1 m+1 m 2 m−1 m+1 m m−1 1 0 m−1
••• ••• ••• ••• ••• •••
DCY şi SS C-1
••• ••• •••
C31
Sm-1 S2m-1 Sm+1 Sm Sm-1 S0 S0
Bn+1 An+1 B2m+1 A2m+1 Bm+1Am+ Bm Am Bm-1 Am-1 B1 A1 B0 A0
1
••• ••• •••
GS ••• GS GS
••• funcţii lookahead
••• ••• •••
C2m-1 Cm-1
CY CY CY
biţii sumei condiţionale C-1
SS ••• SS SS
••• ••• •••
Cn-1 Sm-1 S2m-1 Sm+1 Sm Sm-1 S1 S0
în cazul cel mai dezavantajos, când toate cele n cifre ale înmulţitorului sunt
unităţi, timpul de înmulţire este dat de relaţia
◦  tinm=n(ta+td)
unde ta este timpul de adunare a doi operanzi cu n cifre binare, iar td este
timpul de deplasare a produsului parţial.
Pentru a reduce acest timp există mai multe posibilităţi, dintre care:
◦  Efectuarea însumării şi deplasării în acelaşi tact;
◦  Însumarea produselor parţiale fără propagarea transportului, folosind
sumatoare cu memorarea transportului (Carry Save Adder);
◦  Formarea şi însumarea în paralel a tuturor produselor parţiale, folosind o
schemă combinaţională iterativă.
R
TSA TSDA
A M
TSR
UAL
S
!  Sumator cu posibilitate de adunare şi deplasare simultană
!  Semnalul de comandă TSA (transferă suma în registrul A) apare la adunarea
normală, iar semnalul TSDA (transferă suma deplasată în registrul A)
apare la adunarea cu deplasare.
RM1 RMn-1 RMn
T0 Tn-2 Tn-1 Tn-1 Tn
∑1 ∑n-1 ∑n
“0”
S1 Sn-1
A1 An-1 An
RT1 RTn-1 RTn
RI1 RIn-1 RIn
Schema sumatorului pentru adunarea produselor parţiale fără propagarea
transporturilor
Pentru înmulţirea numerelor A1A2A3A4 şi B1B2B3B4, de exemplu, trebuie
adunate produsele parţiale:
A1B1 A2B1 A3B1 A4B1
A1B2 A2B2 A3B2 A4B2
A1B3 A2B3 A3B3 A4B3
A1B4 A2B4 A3B4 A4B4
P1 P2 P3 P4 P5 P6 P7 P8
rezultând produsul P1P2...P8, cu număr dublu de cifre binare.
A1B1 A2B1 A3B1 A4B1
A1B2 A2B2 A3B2 A4B2
T10 ∑11 T11 ∑12 T12 ∑13 T13 ∑14 “0”
S11 S12 S13 S14 A B
A1B3 2 3 A3B3
A4B3
∑21 T21 ∑22 T22 ∑23 T23 ∑24 “0”
T20
S21 S22 S23 S24
“0” A1B4 A2B4 A3B4
A4B4
∑31 T31 ∑32 T32 T33 ∑34 “0”
∑33
T30
S31 S32 S33 S34
P1 P2 P3 P4 P5 P6 P7 P8
Reţea iterativă combinaţională pentru înmulţirea a două numere cu câte 4 c.b.
!  timpul de înmulţire, tinm, este dat de timpul maxim de propagare a
transportului în reţea (până la sumatorului din colţul stânga sus), la care se
adaugă timpul de însumare al unei celule.
◦  Tinm=(n+(n-2))tT+tS=2(n-1)tT+TS
!  unde ts este timpul de însumare al unei celule, iar tT este timpul de obţinere
a transportului pe o celulă.
Principiul reprezentării numerelor în sistemul cu virgula mobilă
S C M
0 1 7 8 31
C - caracteristică , M - mantisă
Reprezentarea numerelor în sistemul cu virgulă mobilă
!  În calculatoarele familiei IRIS numerele se reprezintă în sistemul cu virgulă
mobilă, cu baza 16, zonele fiind aceleaşi ca în Fig.
1.  formatul scurt (32 c.b.). Prelungind mantisa cu 16 c.b. se obţine formatul mediu (48 c.b.) respectiv
adăugându-se 32 c.b.,
2.  formatul lung (64 c.b.).
Numerele negative se prezintă în cod complementar; mantisa lor este reprezentată de
complementul valorii sale absolute, iar caracteristica este reprezentată prin codul
său invers. Se adoptă acest mod de reprezentare pentru a face posibilă utilizarea
aceloraşi instrucţii de comparare, şi complementare ca şi pentru numerele
reprezentate în sistemul cu virgulă fixă. Mantisele sunt normalizate, cu excepţia
numărului 0 care are atât mantisa cât şi caracteristica 0.
!  Structura unităţii aritmetice cu virgulă mobilă în calculatorul IRIS-50
0
MS 16 M 31
15
YS VS
0 7 0 7
AS A V Y
UAE
CG
RE UAM
E
!  Iniţial cei doi operanzi se găsesc în registrele compuse MS-M, respectiv AS-A,
primele opt poziţii din MS şi AS, de la stânga la dreapta, semnul şi
caracteristica, iar restul poziţiilor din MS şi M respectiv AS şi A mantisa
NU
1 CA-CM>0
DA
AS←MS ; A←M R←1 3
2
MS←AS ; M←A
NU
4 |CA-CM|>6
DA NU
6 E≠0
5 AS←0 ; A←0
DA
7 (AS,A.CG)←4ddc(AS,A.CG)
8 E ← E±1
NU
9 E=0
E←MS(1-7)
10 MS(1)←MS(0)
MS(7)←MS(0)
DA
R=1
NU
AS←MS ; A←M
11 MS←AS ; M←A
!  codul zecimal binar cu ponderile 8,4,2,1, în care fiecare
cifră zecimală este codificată prin numărul binar
echivalent, cu patru cifre.