aritmetičko-logička jedinica (alu)leda.elfak.ni.ac.rs/education/projektovanjevlsi/predavanja/03...

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

Upload: truongdiep

Post on 19-Mar-2018

221 views

Category:

Documents


2 download

TRANSCRIPT

Aritmetičko-logička jedinica(ALU)

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

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

S

CAB

0

1

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

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

CarryOut

0

1

Binvert

b 2

Less

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

set on less then111subtract110add010or001and000

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

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

32

32

32

ALU operation

Result

a

b

ALUOverflow

Zero

CarryOut

3

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

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

y0

cin = 0

S0

G0P0

FAx1y1

S1

G1P1

FAx2y2

S2

G2

P2

FAx3y3

S3

G3P3

c1

c2

c3

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

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

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

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