Arithmetic / Logic Unit – ALU Design

270 downloads 22486 Views 365KB Size Report
Carry out indicates carry out and unsigned integer overflow. 4. Function Ainvert Binvert Operation and. 0. 0. 00 or. 0. 0. 01 add. 0. 0. 10 subtract. 0. 1. 10 slt. 0. 1.
CSE 675.02: Introduction to Computer Architecture

Arithmetic / Logic Unit – ALU Design Presentation F Slides by Gojko Babi

Reading Assignment: B5, 3.4

32-bit ALU ALU Control

A

32

32-bit ALU B

32

Result Zero Overflow Carry out

32

• Our ALU should be able to perform functions: – logical and function – logical or function – arithmetic add function – arithmetic subtract function – arithmetic slt (set-less-then) function – logical nor function • ALU control lines define a function to be performed on A and B. g. babic

Presentation F

2

1

Functioning of 32-bit ALU ALU Control

ALU Control lines Function

Ainvert

Binvert

and

0

0

00

or

0

0

01

add

0

0

10

subtract

0

1

10

slt

0

1

11

nor

1

1

00

4

Operation A

32

32-bit ALU B

32

Result Zero Overflow Carry out

32

• Result lines provide result of the chosen function applied to values of A and B • Since this ALU operates on 32-bit operands, it is called 32-bit ALU • Zero output indicates if all Result lines have value 0 • Overflow indicates integer overflow of add and subtract functions; for unsigned integers, this overflow indicator does not provide any useful information • Carry out indicates carry out and unsigned integer overflow g. babic

Presentation F

3

Designing 32-bit ALU: Beginning 1. Let us start with and function 2. Let us now add or function

Operation

= 0  and = 1  or

a0 b0

Result0

0 1

a1 b1

0

Result1

1 a2 b2

0

Result2

1

a31 b31

0

Result31

1

g. babic

4

2

Designing 32-bit ALU: Principles Operation = 0  and

• A number of functions are performed internally, but only one a0 result is chosen for b0 the output of ALU

= 1  or

and or

a1

• 32-bit ALU is built out of 32 identical 1-bit ALU’s

1

and

b1

or

a2

Result1

0 1

and

b2 or

a31

Result0

0

Result2

0 1

and

b31 or

Result31

0 1

g. babic

5

Designing the Adder • 32-bit adder is built out of 32 1-bit adders 1-bit Adder

1-bit Adder Truth Table Input b

Carry In

Sum

Carry Out

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

Figure B.5.2

From the truth table and after minimization, we can have this design for CarryOut Figure B.5.5 g. babic

Output

a

Figure B.5.3 Presentation F

6

3

32-bit Adder “0” Cin

a0

sum0

+

b0

Cout

This is a ripple carry adder. Cin

a1

sum1

+

b1

Cout

Cin

a2

sum2

+

b2

The key to speeding up addition is determining carry out in the higher order bits sooner. Result: Carry look-ahead adder.

Cout

Cin

a31

sum31

+

b31

Cout

Carry out

g. babic

Presentation F

7

32-bit ALU With 3 Functions =0

1-bit ALU

Operation = 00  and = 01  or = 10  add

Figure B.5.6

Figure B.5.7 CarryOut

g. babic

Presentation F

+ carry out 8

4

32-bit Subtractor “0” “1” Cin

a0

Result0

+

b0

=A+B+1

Cout

Cin

a1

Result1

+

b1

A – B = A + (–B)

Cout

Cin

a2

Result2

+

b2

Cout

Cin

a31

Result31

+

b31

Cout

CarryOut

g. babic

Presentation F

9

32-bit Adder / Subtractor binvert

Cin

a0 b0

“0”

0

Result0

+ Cout

1 Cin

a1 b1

0

Result1

+ Cout

1 Cin

a2 b2

0

Result2

+

Binvert = 0  addition = 1  subtraction

Cout

1

Cin

a31 b31

0 1

g. babic

Result31

+ Cout

0 1

CarryOut

10

5

32-bit ALU With 4 Functions 1-bit ALU B in ve rt

B in v e r t

O p e r a tio n

O pe ra tion C a r r y In

a0 b0

a

C a rryI n ALU0

R e s u l t0

0

C a rryO u t 1

0

b

R e s u lt

a1 b1

2

1

Figure B.5.8 a2 b2

Control lines Binvert (1 line)

Operation (2 lines)

and

0

00

or

0

01

add

0

10

subtract

1

10

R e s u l t1

C a rryO u t

C a r ry O u t

Function

C a rryI n ALU1

C a rryI n ALU2

R e s u l t2

C a rryO u t

C a rr y In

a3 1 b3 1

g. babic

R e s u l t3 1

C a rryI n A L U 31

Presentation F

0

Carry Out

1

11

2’s Complement Overflow • 2’s complement overflow happens: – if a sum of two positive numbers results in a negative number – if a sum of two negative numbers results in a positive number

B in v e r t

O p e r a tio n C a r ry In

a 0

1

R e s u lt b

0

+

2

1 L e ss

3

Carry Out O v e r f lo w d e te c tio n

O v e rflo w

1-bit ALU for the most significant bit Other 1-bit ALUs, i.e. non-most significant bit ALUs, are not affected. g. babic

Presentation F

12

6

32-bit ALU With 4 Functions and Overflow B in v e r t

O p e r a tio n

a0 b0

C a rryI n ALU0

R e s u l t0

C a rryO u t

Control lines Binvert (1 line)

Operation (2 lines)

and

0

00

Function

or

0

01

add

0

10

subtract

1

10

a1 b1

C a rryI n ALU1

R e s u l t1

C a rryO u t

a2 b2

C a rryI n ALU2

R e s u l t2

C a rryO u t

C a rr y In

a3 1 b3 1

Missing: slt & nor functions and Zero output

C a rryI n A L U 31

R e s u l t3 1 O v e r flo w

Carry Out

g. babic

Presentation F

7