Top Banner
Aritmetičko-logička jedinica (ALU)
34

Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Mar 19, 2018

Download

Documents

truongdiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Aritmetičko-logička jedinica(ALU)

Page 2: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 3: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 4: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 5: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 6: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 7: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 8: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

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

Page 9: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry
Page 10: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• ALU извршава све аритметичке и логичке операције у рачунару.

• Због једноставности ћемо покушати да направимо 1-битну ALU.

• Пошто су речи код MIPS-a 32-битне, повезаћемо 32 такве ALU.

Page 11: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Користићемо већ познате “градивне блокове”.

S

CAB

0

1

Мултиплексер

Page 12: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU• Логичке операције су најлакше за имплементацију, јер већ имамо логичка кола која их реализују.

• Једнобитна ALU за операције AND и OR приказна је на слици.

операција

резултат0

1

а

b

Page 13: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Следећа фунцкија ALU је сабирање.

Sum

CarryIn

CarryOut

a

b

cout = ab + acin + bcinsum = a xor b xor cin

Page 14: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 15: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 16: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU• Одузимање је сабирање са двојичним комплементом умањиоца!

a-b = a +⎯b +1

0

2

Result

Operation

a

1

CarryIn

CarryOut

0

1

Binvert

b

Page 17: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Још увек нам треба подршка поређењу (инструкцији slt).

• slt има за резултат 1 ако је rs < rt, а иначе резултат је 0.

a – b < 0 ⇒ a < b• Значи да slt поставља се битове на 0 осимбита најмање тежине који се поставља узависности од резултата поређења.

Page 18: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

0

3

Result

Operation

a

1

CarryIn

CarryOut

0

1

Binvert

b 2

Less

Page 19: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

0

3

Result

Operation

a

1

CarryIn

0

1

Binvert

b 2

Less

Set

Overflow�detection Overflow

Page 20: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 21: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 22: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

set on less then111subtract110add010or001and000

ФункцијаУправљачке линије

Page 23: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

32

32

32

ALU operation

Result

a

b

ALUOverflow

Zero

CarryOut

3

Page 24: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• RCA је исувише спор!• Постоје многе шеме за предвиђање преноса код којих је потребно времеlog2n ако сабирају два n-тобитна броја.

• Једна таква шема је carry-lookaheadсабирач (понекад се овај тип зове и carry-anticipation сабирач.

Page 25: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 26: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Начин генерисања преноса може се изразити као

c0 = x0y0 (1)c1 = x1y1 + (x1 ⊕ y1)c0 (2)

• Заменом (1) у (2) добијамоc1 = x1y1 + (x1 ⊕ y1)x0y0 (3)

Page 27: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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)

Page 28: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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)

Page 29: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Дефинишимо сигнале Pi (carry - propagate) и Gi(carry - generate) за i-ти степен сабирача као:

Pi = xi ⊕ yi (8)Gi = xiyi (9)

• Pi указује на то када се улазни пренос i–тог степена простире ка наредном a Gi указује да се на излазу i–тог степена генерише пренос независно од улазног преноса.

Page 30: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 31: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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)

Page 32: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALUFAx0

y0

cin = 0

S0

G0P0

FAx1y1

S1

G1P1

FAx2y2

S2

G2

P2

FAx3y3

S3

G3P3

c1

c2

c3

Page 33: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција 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

Page 34: Aritmetičko-logička jedinica (ALU)leda.elfak.ni.ac.rs/education/projektovanjeVLSI/predavanja/03 ALU...Arithmetic Logic Unit Design 74181 TTL ALU Note that the sense of the carry

Конструкција ALU

• Међутим, превише би било компликовано направити овакав 16-битни или 32-битни сабирач!

• Уместо тога се праве групе (од по 4) CLA које се повезују на RC начин или чак поново на CL начин.