0% found this document useful (0 votes)
71 views39 pages

Arithmetic Logic Unit (ALU) : Introduction To Computer P Yung-Yu Chuang

Here is a 3-bit decoder: Inputs: a2 a1 a0 Outputs: z0 z1 z2 z3 z4 z5 z6 z7 z0 = a0 z1 = a0'a1 z2 = a0'a1'a2 z3 = a0'a1a2 z4 = a0a1'a2' z5 = a0a1'a2 z6 = a0a1a2' z7 = a0a1a2 24 N-bit Decoder N-bit decoder  N address inputs, p 2N

Uploaded by

sifat islam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views39 pages

Arithmetic Logic Unit (ALU) : Introduction To Computer P Yung-Yu Chuang

Here is a 3-bit decoder: Inputs: a2 a1 a0 Outputs: z0 z1 z2 z3 z4 z5 z6 z7 z0 = a0 z1 = a0'a1 z2 = a0'a1'a2 z3 = a0'a1a2 z4 = a0a1'a2' z5 = a0a1'a2 z6 = a0a1a2' z7 = a0a1a2 24 N-bit Decoder N-bit decoder  N address inputs, p 2N

Uploaded by

sifat islam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

Arithmetic Logic Unit (ALU)

Introduction to Computer
p
Yung-Yu Chuang

with slides by Sedgewick & Wayne (introcs.cs.princeton.edu), Nisan & Schocken


(www.nand2tetris.org) and Harris & Harris (DDCA)
Let's Make an Adder Circuit

Goal. x + y = z for 4-bit integers.


 We build 4-bit adder: 9 inputs,
p 4 outputs.
p
 Same idea scales to 128-bit adder.
 Key computer component.
1 1 1 0

2 4 8 7

+ 3 5 7 9

6 0 6 6

2
Binary addition

Assuming a 4-bit system:

0 0 0 1 1 1 1 1
1 0 0 1 + 1 0 1 1+
0 1 0 1 0 1 1 1

0 1 1 1 0 1 0 0 1 0

no overflow overflow

 Algorithm: exactly the same as in decimal addition


 Overflow (MSB carry) has to be dealt with.

Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org , Chapter 2: Boolean Arithmetic slide 3
Representing negative numbers (4-bit system)

0 0000  The codes of all positive numbers


begin with a “0”
1 0001 1111 -1
2 0010 1110 -2  The codes of all negative numbers
3 0011 1101 -3 begin with a “1“
4 0100 1100 -4
 To convert a number:b
5 0101 1011 -5 leave all trailing 0’s and first 1 intact,
6 0110 1010 -6 and flip all the remaining bits
7 0111 1001 -7
1000 -8

Example:
p 2 - 5 = 2 + (-5) = 0010
+1011
1101 = -3
3

Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org , Chapter 2: Boolean Arithmetic slide 4
Let's Make an Adder Circuit

Step 1. Represent input and output in binary.

1 1 0 0

0 0 1 0

+ 0 1 1 1

1 0 0 1

x3 x2 x1 x0

+ y3 y2 y1 y0

z3 z2 z1 z0

5
Let's Make an Adder Circuit

Goal. x + y = z for 4-bit integers.


cout cin

x3 x2 x1 x0

Step 2. [first attempt]


+ y3 y2 y1 y0

Build truth table.


z3 z2 z1 z0

4-Bit Adder Truth Table

c0 x3 x2 x1 x0 y3 y2 y1 y0 z3 z2 z1 z0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 1 1 0 0 1 1 28+1 = 512 rows!
0 0 0 0 0 0 1 0 0 0 1 0 0
. . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1

Q. Why is this a bad idea?


A 128-bit adder: 2256+1
A. 56 rows >> # electrons

in universe!
6
1-bit half adder

We add numbers one bit at a time.


x c
ADD
y s

x y s c

7
1-bit full adder

x y
x y Cin Cout s
Cin
ADD
Coutt

8
8-bit adder

9
Let's Make an Adder Circuit

Goal. x + y = z for 4-bit integers. c out c3 c2 c1 c0 = 0

x3 x2 x1 x0

Step 2. [do one bit at a time] + y3 y2 y1 y0

 Build truth table for carry bit. z3 z2 z1 z0

 Build truth table for summand bit.

Carry Bit Summand Bit

xi yi ci ci+1 xi yi ci zi
0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 1
0 1 0 0 0 1 0 1
0 1 1 1 0 1 1 0
1 0 0 0 1 0 0 1
1 0 1 1 1 0 1 0
1 1 0 1 1 1 0 0
1 1 1 1 1 1 1 1

10
Let's Make an Adder Circuit

Goal. x + y = z for 4-bit integers.

Step 3.
 Derive (simplified) Boolean expression.

Carry Bit Summand Bit

xi yi ci ci+1 MAJ xi yi ci zi ODD


0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1 1 1
0 1 0 0 0 0 1 0 1 1
0 1 1 1 1 0 1 1 0 0
1 0 0 0 0 1 0 0 1 1
1 0 1 1 1 1 0 1 0 0
1 1 0 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1

11
Let's Make an Adder Circuit

Goal. x + y = z for 4-bit integers.

Step 4.
 Transform Boolean expression into circuit.
 Chain together 1-bit adders.

12
Adder: Interface

13
Adder: Component Level View

14
Adder: Switch Level View

15
Subtractor

Subtractor circuit: z = x – y.
 One approach:
pp design
g like adder circuit
Subtractor

Subtractor circuit: z = x – y.
 One approach:
pp design
g like adder circuit
 Better idea: reuse adder circuit
– 2’s complement: to negate an integer, flip bits, then add 1

17
Subtractor

Subtractor circuit: z = x – y.
 One approach:
pp design
g like adder circuit
 Better idea: reuse adder circuit
– 2’s complement: to negate an integer, flip bits, then add 1

18
Shifter
Only one of them will be on at a time.
s0 s1 s2 s3

x0

x1
SHIFT
x2

x3

z0 z1 z2 z3

4 bit Shifter
4-bit Shift

19
Shifter

z0 z1 z2 z3
s0
s1
s2
s3

20
Shifter

z0 z1 z2 z3
s0 x0 x1 x2 x3
s1 0 x0 x1 x2
s2 0 0 x0 x1
s3 0 0 0 x0

z0 = s0‧x0 + s1‧0 + s2‧0 + s3‧0


z1 = s0‧x1 + s1‧x0 + s2‧0 + s3‧0
z2 = s0‧x2 + s1‧x1 + s2‧x0 + s3‧0
z3 = s0‧x3 + s1‧x2 + s2‧x1 + s3‧x0
21
Shifter

z0 = s0‧x0 + s1‧0 + s2‧0 + s3‧0


z1 = s0‧x1 + s1‧x0 + s2‧0 + s3‧0
z2 = s0‧x2 + s1‧x1 + s2‧x0 + s3‧0
z3 = s0‧x3 + s1‧x2 + s2‧x1 + s3‧x0
22
N-bit Decoder

N-bit decoder
 N address inputs,
p 2N data outputs
p
 Addresses output bit is 1;
all others are 0

23
N-bit Decoder

N-bit decoder
 N address inputs,
p 2N data outputs
p
 Addresses output bit is 1;
all others are 0

24
2-Bit Decoder Controlling 4-Bit Shifter

Ex. Put in a binary amount r0r1 to shift.

25
Arithmetic Logic Unit

Arithmetic logic unit (ALU). Computes all


p
operations in parallel.
p
 Add and subtract.
 Xor.
 A d
And.
 Shift left or right.

Q. How to select desired answer?


Q

26
1 Hot OR

1 hot OR. adder

 All devices compute


p their answer;
we pick one.
 Exactly one select line is on.
 Implies exactly one output line is xor

relevant.

x.1 = x
x.0
0=0 shifter

x+0=x

27
1 Hot OR
x.11 = x
adder
x.0 = 0

x+0=x
xor
decoder

shift

28
Bus

16-bit bus
 Bundle
u of
f 16 w
wires
 Memory transfer
Register transfer

8-bit bus
 Bundle of 8 wires
 TOY memory y address

4 bit bus
4-bit b
 Bundle of 4 wires
 TOY register address

29
Bitwise AND, XOR, NOT

Bitwise logical operations


 Inputs
p x and y:
y n bits each
 Output z: n bits
 Apply logical operation to each corresponding pair
of bits

30
TOY ALU

TOY ALU
 Big
g combinational logic
g
 16-bit bus
 Add, subtract, and, xor, shift left, shift right,
copy input 2

31
Device Interface Using Buses
16 bit words for TOY memory
16-bit

Device. Processes a word at a time.


p bus. Wires on top.
Input p
Output bus. Wires on bottom.
Control. Individual wires on side.

32
ALU

Arithmetic logic unit.


 Add and subtract.
 Xor.
 And.
 Shift left or right.
right

Arithmetic logic unit.


 Computes all operations in
parallel.
 Uses 1-hot OR to pick each
bit answer.
answer

How to convert opcode to


1-hot OR signal?
33
34
35
Hack ALU

16
x 16
16-bit
16
out
adder
y

zx nx zy ny f no out(x, y, control bits) =


x+y, x-y, y–x,
0, 1, -1,
x
16 bits x, y, -x, -y,
ALU out
y 16 bits x!, y!,
16 bits
x+1 y+1
x+1, y+1, x
x-1,
1 yy-1,
1
x&y, x|y
zr ng
Hack ALU
The ALU in the CPU context (a sneak preview of the Hack platform)

c1,c2, … ,c6

D
D register

a
out

ALU
A
A register

A/M

Mux
M
RAM M

(selected
register)

Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org , Chapter 2: Boolean Arithmetic slide 38
Perspective

 Combinational logic

 Our adder design is very basic: no parallelism

 It pays to optimize adders

 Our ALU is also very basic: no multiplication, no division

 Wh
Where is the
th seat
s t of
f more
m advanced
d n d math
m th operations?
p ti ns?
a typical hardware/software tradeoff.

Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org , Chapter 2: Boolean Arithmetic slide 39

You might also like