aritmetičko-logička jedinica (alu)leda.elfak.ni.ac.rs/education/projektovanjevlsi/predavanja/03...
TRANSCRIPT
Arithmetic Logic Unit Design74181 TTL ALU
S3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
S2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
S1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
S0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Logic Function F = not A F = A nand B F = (not A) + B F = 1 F = A nor B F = not B F = A xnor B F = A + not B F = (not A) B F = A xor B F = B F = A + B F = 0 F = A (not B) F = A B F = A
Cn = 0 F = A minus 1 F = A B minus 1 F = A (not B) minus 1 F = minus 1 F = A plus (A + not B) F = A B plus (A + not B) F = A minus B minus 1 F = A + not B F = A plus (A + B) F = A plus B F = A (not B) plus (A + B) F = (A + B) F = A F = A B plus A F= A (not B) plus A F = A
Cn = 1 F = A F = A B F = A (not B) F = zero F = A plus (A + not B) plus 1 F = A B plus (A + not B) plus 1 F = (A + not B) plus 1 F = A minus B F = (A + not B) plus 1 F = A plus (A + B) plus 1 F = A (not B) plus (A + B) plus 1 F = (A + B) plus 1 F = A plus A plus 1 F = AB plus A plus 1 F = A (not B) plus A plus 1 F = A plus 1
Selection M = 1 M = 0, Arithmetic Functions
Arithmetic Logic Unit Design74181 TTL ALU
Note that the sense of the carry in and out are OPPOSITE from the input bits
Fortunately, carry lookahead generatormaintains the correct sense of the signals
181A3A2A1A0B3B2B1B0
CnM
S3 S2 S1 S0
F3F2F1F0
A=B
GP
Cn+41
2
3 4 5 6
78
9101113
14
15
16
17
18
19
20
21
22
23182
P3P2P1P0G3G2G1G0
Cn
Cn+z
Cn+x
PG
Cn+y
13
31
14542
156
12119
107
16-bit ALU with CarryLookahead 182
P3P2P1P0G3G2G1G0Cn
Cn+z
Cn+x
PG
Cn+y
1331
14542
156
12119
107
181A3A2A1A0B3B2B1B0CnM
S3S2S1S0
F3F2F1F0
A=B
GP
Cn+41
2
3 4 5 6
78
9101113
14
15
1617
18
19
20
21
22
23
181A3A2A1A0B3B2B1B0CnM
S3S2S1S0
F3F2F1F0
A=B
GP
Cn+41
2
3 4 5 6
78
9101113
14
15
1617
18
19
20
21
22
23
181A3A2A1A0B3B2B1B0CnMS3S2S1S0
F3F2F1F0
A=B
GP
Cn+41
2
3 4 5 6
78
9101113
14
15
1617
18
19
20
21
22
23
181A3A2A1A0B3B2B1B0CnMS3S2S1S0
F3F2F1F0
A=B
GP
Cn+41
2
3 4 5 6
78
9101113
14
15
1617
18
19
20
21
22
23
C0
C16
Arithmetic Logic Unit Design
S1 0 0 1 1
S0 0 1 0 1
Function Fi = Ai
Fi = not Ai Fi = Ai xor Bi
Fi = Ai xnor Bi
Comment Input Ai transferred to output Complement of Ai transferred to output Compute XOR of Ai, Bi Compute XNOR of Ai, Bi
M = 0, Logical Bitwise Operations
M = 1, C0 = 0, Arithmetic Operations0 0 1 1
0 1 0 1
F = A F = not A
F = A plus B F = (not A) plus B
Input A passed to output Complement of A passed to output Sum of A and B Sum of B and complement of A
M = 1, C0 = 1, Arithmetic Operations
0 0 1 1
0 1 0 1
F = A plus 1 F = (not A) plus 1
F = A plus B plus 1 F = (not A) plus B plus 1
Increment A Twos complement of A Increment sum of A and B B minus A
Logical and Arithmetic Operations
Not all operations appear useful, but "fall out" of internal logic
rithmetic Logic Unit DesignSample ALU
Traditional Design Approach
Truth Table & Espresso
23 product terms!
Equivalent to 25 gates
.i 6
.o 2
.ilb m s1 s0 ci ai bi
.ob fi co
.p 23111101 10110111 101-0100 101-1110 1010010- 1010111- 10-10001 10010-01 10-11011 10011-11 10--1000 100-1-00 10--0010 100-0-10 10-0100- 10001-0- 10-0001- 10000-1- 10-1-1-1 01--1-01 01--0-11 01--110- 01--011- 01.e
M 0
1
1
S1 0
0
1
1
0
0
1
1
0
0
1
1
S0 0
1
0
1
0
1
0
1
0
1
0
1
Ci X X X X X X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
Ai 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 01 0 1 0 0 1 1 0 0 1 1
Bi X X X X 0 1 0 1 0 1 0 1 X X X X 0 1 0 1 0 1 0 1 X X X X 0 1 0 1 0 1 0 1
Fi 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0
Ci+1 X X X X X X X X X X X X X X X X 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1
Arithmetic Logic Unit DesignSample ALUMultilevel Implementation
.model alu.espresso
.inputs m s1 s0 ci ai bi
.outputs fi co
.names m ci co [30] [33] [35] fi110--- 1-1-11- 1--01-1 1--00-0 1.names m ci [30] [33] co-1-1 1--11 1111- 1.names s0 ai [30]01 110 1.names m s1 bi [33]111 1.names s1 bi [35]0- 1-0 1.end 12 Gates
\S1
\Bi
[35]
[35] M
M
MS1Bi
[33][33]
[33]
[33]
S0Ai
[30]
[30]
[30]
[30]
[30]
Ci
Ci
Ci
Ci
Co
\Co
\Co
\Co
\[30]\[35]
Fi
Arithmetic Logic Unit DesignClever Multi-level Logic Implementation
Sample ALU
8 Gates (but 3 are XOR)
S1 = 0 blocks BiHappens when operations involve Ai
onlySame is true for Ci when M = 0Addition happens when M = 1
Bi, Ci to Xor gates X2, X3S0 = 0, X1 passes AS0 = 1, X1 passes A
Arithmetic Mode:Or gate inputs are Ai Ci and
Bi (Ai xor Ci)
Logic Mode:Cascaded XORs form output from
Ai and Bi
BiS1 AiS0 CiM
FiCi+1
X1
X2
X3
A1 A2
A3 A4
O1
Конструкција ALU
• ALU извршава све аритметичке и логичке операције у рачунару.
• Због једноставности ћемо покушати да направимо 1-битну ALU.
• Пошто су речи код MIPS-a 32-битне, повезаћемо 32 такве ALU.
Конструкција ALU• Логичке операције су најлакше за имплементацију, јер већ имамо логичка кола која их реализују.
• Једнобитна ALU за операције AND и OR приказна је на слици.
операција
резултат0
1
а
b
Конструкција ALU
• Следећа фунцкија ALU је сабирање.
Sum
CarryIn
CarryOut
a
b
cout = ab + acin + bcinsum = a xor b xor cin
Конструкција ALU• 1-битна ALU која обавља функције AND, OR и сабирање.
b
0
2
R e su lt
O pe ra t ion
a
1
C a rry In
C a rryO ut
Конструкција ALU
• 32-битна ALU која обавља функције AND, OR и сабирање.
• Сабирач који се добија директним повезивањем преноса 1-битних сабирача назива се ripple carry adder.
Result31a31
b31
Result0
CarryIn
a0
b0
Result1a1
b1
Result2a2
b2
Operation
ALU0
CarryIn
CarryOut
ALU1
CarryIn
CarryOut
ALU2
CarryIn
CarryOut
ALU31
CarryIn
Конструкција ALU• Одузимање је сабирање са двојичним комплементом умањиоца!
a-b = a +⎯b +1
0
2
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b
Конструкција ALU
• Још увек нам треба подршка поређењу (инструкцији slt).
• slt има за резултат 1 ако је rs < rt, а иначе резултат је 0.
a – b < 0 ⇒ a < b• Значи да slt поставља се битове на 0 осимбита најмање тежине који се поставља узависности од резултата поређења.
Конструкција ALU
0
3
Result
Operation
a
1
CarryIn
0
1
Binvert
b 2
Less
Set
Overflow�detection Overflow
Конструкција ALU
S e ta 3 1
0
A L U 0 R e s u l t 0
C a r r y I n
a 0
R e s u l t 1a 1
0
R e s u l t 2a 2
0
O p e r a t io n
b 3 1
b 0
b 1
b 2
R e s u l t 3 1
O v e r f lo w
B in v e r t
C a r r y I n
L e s s
C a r r y I n
C a r r y O u t
A L U 1L e s s
C a r r y I n
C a r r y O u t
A L U 2L e s s
C a r r y I n
C a r r y O u t
A L U 3 1L e s s
C a r r y I n
Конструкција ALU
Seta31
0
Result0a0
Result1a1
0
Result2a2
0
Operation
b31
b0
b1
b2
Result31
Overflow
Bnegate
Zero
ALU0Less
CarryIn
CarryOut
ALU1Less
CarryIn
CarryOut
ALU2Less
CarryIn
CarryOut
ALU31Less
CarryIn
Конструкција ALU
• RCA је исувише спор!• Постоје многе шеме за предвиђање преноса код којих је потребно времеlog2n ако сабирају два n-тобитна броја.
• Једна таква шема је carry-lookaheadсабирач (понекад се овај тип зове и carry-anticipation сабирач.
Конструкција ALU
• Размотримо један четворобитни паралелни сабирач (RCA).
x ycout cin
S
S3
x3 y3
c3
S2
x2 y2
c2
S1
x1 y1
c1
S0
x0 y0
c0x ycout cin
S
x ycout cin
S
x ycout cin
S
Конструкција ALU
• Начин генерисања преноса може се изразити као
c0 = x0y0 (1)c1 = x1y1 + (x1 ⊕ y1)c0 (2)
• Заменом (1) у (2) добијамоc1 = x1y1 + (x1 ⊕ y1)x0y0 (3)
Конструкција ALU
• Слично је иc2 = x2y2 + (x2 ⊕ y2)c1 (4)
• Заменом (3) у (4) добијамоc2 = x2y2 + (x2 ⊕ y2)[x1y1 + (x1 ⊕ y1)x0y0]
= x2y2 + (x2 ⊕ y2)x1y1 + (x2 ⊕ y2) (x1 ⊕ y1)x0y0 (5)
Конструкција ALU
• Најзадc3 = x3y3 + (x3 ⊕ y3)c2 (6)
• Заменом (5) у (6) добија сеc3 = x3y3 + (x3 ⊕ y3)[x2y2 + (x2 ⊕ y2)x1y1 + (x2 ⊕ y2)(x1 ⊕ y1)x0y0]
= x3y3 + (x3 ⊕ y3)x2y2 + (x3 ⊕ y3)(x2 ⊕ y2)x1y1 + (x3 ⊕ y3)(x2 ⊕ y2) (x1 ⊕ y1)x0y0 (7)
Конструкција ALU
• Дефинишимо сигнале Pi (carry - propagate) и Gi(carry - generate) за i-ти степен сабирача као:
Pi = xi ⊕ yi (8)Gi = xiyi (9)
• Pi указује на то када се улазни пренос i–тог степена простире ка наредном a Gi указује да се на излазу i–тог степена генерише пренос независно од улазног преноса.
Конструкција ALU
• Заменом (8) и (9) у (1), (3), (5) и (7) добијамо
c0 = G0
c1 = G1 + G0 P1
c2 = G2 + G1 P2 + G0 P2 P1
c3 = G3 + G2 P3 + G1 P3 P2 + G0 P3 P2 P1
Конструкција ALU
• Пренос ка наредном степену је
ci+1 = xi yi + ci (xi + yi) = Gi + ci Pi (10)
• Заменом ci = Gi-1 + ci-1 Pi-1 у (10) добијамоci+1 = Gi + Gi-1 Pi + ci-1 Pi-1 Pi (11)
• Настављајући даље рекурзивно добијамо
ci+1 = Gi + Gi-1 Pi + Gi-2 Pi-1 Pi + ci-2 Pi-2 Pi-1 Pi = = . . . == Gi + Gi-1 Pi + Gi-2 Pi-2 Pi + ... + c0 P0 P1 ... Pi (12)
Конструкција ALUC a rry In
R e s u lt0 --3
A L U 0
C a rry In
R e s u lt4 --7
A L U 1
C a rry In
R e s u lt8 --1 1
A L U 2
C a rry In
C a rryO u t
R e s u lt1 2 --1 5
A L U 3
C a rry In
C 1
C 2
C 3
C 4
P 0G 0
P 1G 1
P 2G 2
P 3G 3
p ig i
p i + 1g i + 1
c i + 1
c i + 2
c i + 3
c i + 4
p i + 2g i + 2
p i + 3g i + 3
a 0 �b 0 �a 1 �b 1 �a 2 �b 2 �a 3 �b 3
a 4 �b 4 �a 5 �b 5 �a 6 �b 6 �a 7 �b 7
a 8 �b 8 �a 9 �b 9 �
a 1 0 �b 1 0 �a 1 1 �b 1 1
a 1 2 �b 1 2 �a 1 3 �b 1 3 �a 1 4 �b 1 4 �a 1 5 �b 1 5
C a r ry - lo o k a h e a d u n it