Top Banner
EE466: VLSI Design Lecture 14: Datapath Functional Units
54

EE466: VLSI Design Lecture 14: Datapath Functional Units.

Dec 21, 2015

Download

Documents

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: EE466: VLSI Design Lecture 14: Datapath Functional Units.

EE466: VLSIDesign

Lecture 14: Datapath Functional Units

Page 2: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 2CMOS VLSI Design

Outline Comparators Shifters Multi-input Adders Multipliers

Page 3: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 3CMOS VLSI Design

Comparators 0’s detector: A = 00…000 1’s detector: A = 11…111 Equality comparator: A = B Magnitude comparator: A < B

Page 4: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 4CMOS VLSI Design

1’s & 0’s Detectors 1’s detector: N-input AND gate 0’s detector: NOTs + 1’s detector (N-input NOR)

A0

A1

A2

A3

A4

A5

A6

A7

allones

A0

A1

A2

A3

allzeros

allones

A1

A2

A3

A4

A5

A6

A7

A0

Page 5: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 5CMOS VLSI Design

Equality Comparator Check if each bit is equal (XNOR, aka equality gate) 1’s detect on bitwise equality

A[0]B[0]

A = B

A[1]B[1]

A[2]B[2]

A[3]B[3]

Page 6: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 6CMOS VLSI Design

Magnitude Comparator Compute B-A and look at sign B-A = B + ~A + 1 For unsigned numbers, carry out is sign bit

A0

B0

A1

B1

A2

B2

A3

B3

A = BZ

C

A B

N A B

Page 7: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 7CMOS VLSI Design

Signed vs. Unsigned For signed numbers, comparison is harder

– C: carry out– Z: zero (all bits of A-B are 0)– N: negative (MSB of result)– V: overflow (inputs had different signs, output sign B)

Page 8: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 8CMOS VLSI Design

Shifters Logical Shift:

– Shifts number left or right and fills with 0’s• 1011 LSR 1 = ____ 1011 LSL1 = ____

Arithmetic Shift:– Shifts number left or right. Rt shift sign extends

• 1011 ASR1 = ____ 1011 ASL1 = ____ Rotate:

– Shifts number left or right and fills with lost bits• 1011 ROR1 = ____ 1011 ROL1 = ____

Page 9: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 9CMOS VLSI Design

Shifters Logical Shift:

– Shifts number left or right and fills with 0’s• 1011 LSR 1 = 0101 1011 LSL1 = 0110

Arithmetic Shift:– Shifts number left or right. Rt shift sign extends

• 1011 ASR1 = 1101 1011 ASL1 = 0110 Rotate:

– Shifts number left or right and fills with lost bits• 1011 ROR1 = 1101 1011 ROL1 = 0111

Page 10: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 10CMOS VLSI Design

Funnel Shifter A funnel shifter can do all six types of shifts Selects N-bit field Y from 2N-bit input

– Shift by k bits (0 k < N)

B C

offsetoffset + N-1

0N-12N-1

Y

Page 11: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 11CMOS VLSI Design

Funnel Shifter Operation

Computing N-k requires an adder

Page 12: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 12CMOS VLSI Design

Funnel Shifter Operation

Computing N-k requires an adder

Page 13: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 13CMOS VLSI Design

Funnel Shifter Operation

Computing N-k requires an adder

Page 14: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 14CMOS VLSI Design

Funnel Shifter Operation

Computing N-k requires an adder

Page 15: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 15CMOS VLSI Design

Funnel Shifter Operation

Computing N-k requires an adder

Page 16: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 16CMOS VLSI Design

Simplified Funnel Shifter Optimize down to 2N-1 bit input

Page 17: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 17CMOS VLSI Design

Simplified Funnel Shifter Optimize down to 2N-1 bit input

Page 18: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 18CMOS VLSI Design

Simplified Funnel Shifter Optimize down to 2N-1 bit input

Page 19: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 19CMOS VLSI Design

Simplified Funnel Shifter Optimize down to 2N-1 bit input

Page 20: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 20CMOS VLSI Design

Simplified Funnel Shifter Optimize down to 2N-1 bit input

Page 21: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 21CMOS VLSI Design

Funnel Shifter Design 1 N N-input multiplexers

– Use 1-of-N hot select signals for shift amount

– nMOS pass transistor design (Vt drops!)k[1:0]

s0s1s2s3Y3

Y2

Y1

Y0

Z0Z1Z2Z3Z4

Z5

Z6

left Inverters & Decoder

Page 22: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 22CMOS VLSI Design

Funnel Shifter Design 2 Log N stages of 2-input muxes

– No select decoding needed

Y3

Y2

Y1

Y0Z0

Z1

Z2

Z3

Z4

Z5

Z6

k0k1

left

Page 23: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 23CMOS VLSI Design

Multi-input Adders Suppose we want to add k N-bit words

– Ex: 0001 + 0111 + 1101 + 0010 = _____

Page 24: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 24CMOS VLSI Design

Multi-input Adders Suppose we want to add k N-bit words

– Ex: 0001 + 0111 + 1101 + 0010 = 10111

Page 25: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 25CMOS VLSI Design

Multi-input Adders Suppose we want to add k N-bit words

– Ex: 0001 + 0111 + 1101 + 0010 = 10111 Straightforward solution: k-1 N-input CPAs

– Large and slow

+

+

0001 0111

+

1101 0010

10101

10111

Page 26: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 26CMOS VLSI Design

Carry Save Addition A full adder sums 3 inputs and produces 2 outputs

– Carry output has twice weight of sum output N full adders in parallel are called carry save adder

– Produce N sums and N carry outsZ4Y4X4

S4C4

Z3Y3X3

S3C3

Z2Y2X2

S2C2

Z1Y1X1

S1C1

XN...1 YN...1 ZN...1

SN...1CN...1

n-bit CSA

Page 27: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 27CMOS VLSI Design

CSA Application Use k-2 stages of CSAs

– Keep result in carry-save redundant form Final CPA computes actual result

4-bit CSA

5-bit CSA

0001 0111 1101 0010

+

10110101_

0001 0111+1101 10110101_

XYZSC

0101_ 1011 +0010

XYZSC

ABS

Page 28: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 28CMOS VLSI Design

CSA Application Use k-2 stages of CSAs

– Keep result in carry-save redundant form Final CPA computes actual result

4-bit CSA

5-bit CSA

0001 0111 1101 0010

+

10110101_

01010_ 00011

0001 0111+1101 10110101_

XYZSC

0101_ 1011 +0010 0001101010_

XYZSC

01010_+ 00011

ABS

Page 29: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 29CMOS VLSI Design

CSA Application Use k-2 stages of CSAs

– Keep result in carry-save redundant form Final CPA computes actual result

4-bit CSA

5-bit CSA

0001 0111 1101 0010

+

10110101_

01010_ 00011

0001 0111+1101 10110101_

XYZSC

0101_ 1011 +0010 0001101010_

XYZSC

01010_+ 00011 10111

ABS

10111

Page 30: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 30CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510

Page 31: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 31CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510 1100

Page 32: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 32CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510 1100 0000

Page 33: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 33CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510 1100 0000 1100

Page 34: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 34CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510 1100 0000 1100 0000

Page 35: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 35CMOS VLSI Design

Multiplication Example: 1100 : 1210

0101 : 510 1100 0000 1100 000000111100 : 6010

Page 36: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 36CMOS VLSI Design

Multiplication Example:

M x N-bit multiplication– Produce N M-bit partial products– Sum these to produce M+N-bit product

1100 : 1210 0101 : 510 1100 0000 1100 000000111100 : 6010

multiplier

multiplicand

partialproducts

product

Page 37: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 37CMOS VLSI Design

General Form Multiplicand: Y = (yM-1, yM-2, …, y1, y0)

Multiplier: X = (xN-1, xN-2, …, x1, x0)

Product:

1 1 1 1

0 0 0 0

2 2 2M N N M

j i i jj i i j

j i i j

P y x x y

x0y5 x0y4 x0y3 x0y2 x0y1 x0y0

y5 y4 y3 y2 y1 y0

x5 x4 x3 x2 x1 x0

x1y5 x1y4 x1y3 x1y2 x1y1 x1y0

x2y5 x2y4 x2y3 x2y2 x2y1 x2y0

x3y5 x3y4 x3y3 x3y2 x3y1 x3y0

x4y5 x4y4 x4y3 x4y2 x4y1 x4y0

x5y5 x5y4 x5y3 x5y2 x5y1 x5y0

p0p1p2p3p4p5p6p7p8p9p10p11

multiplier

multiplicand

partialproducts

product

Page 38: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 38CMOS VLSI Design

Dot Diagram Each dot represents a bit

partial products

multiplier x

x0

x15

Page 39: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 39CMOS VLSI Design

Array Multipliery0y1y2y3

x0

x1

x2

x3

p0p1p2p3p4p5p6p7

B

ASin Cin

SoutCout

BA

CinCout

Sout

Sin

=

CSAArray

CPA

critical path BA

Sout

Cout CinCout

Sout

=Cin

BA

Page 40: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 40CMOS VLSI Design

Rectangular Array Squash array to fit rectangular floorplan

y0y1y2y3

x0

x1

x2

x3

p0

p1

p2

p3

p4p5p6p7

Page 41: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 41CMOS VLSI Design

Fewer Partial Products Array multiplier requires N partial products If we looked at groups of r bits, we could form N/r

partial products.– Faster and smaller?– Called radix-2r encoding

Ex: r = 2: look at pairs of bits– Form partial products of 0, Y, 2Y, 3Y– First three are easy, but 3Y requires adder

Page 42: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 42CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 43: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 43CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 44: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 44CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 45: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 45CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 46: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 46CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 47: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 47CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 48: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 48CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 49: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 49CMOS VLSI Design

Booth Encoding Instead of 3Y, try –Y, then increment next partial

product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product

Page 50: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 50CMOS VLSI Design

Booth Hardware Booth encoder generates control lines for each PP

– Booth selectors choose PP bits

Mi

yj

Xi

yj-1

2Xi

PPij

BoothSelector

BoothEncoder

x2i+1

x2i

x2i-1

Page 51: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 51CMOS VLSI Design

Sign Extension Partial products can be negative

– Require sign extension, which is cumbersome– High fanout on most significant bit

multiplier x

x0

x15

0

00

x-1

x16x17

ssssssssssssssss

ssssssssssssss

ssssssssssss

ssssssssss

ssssssss

ssssss

ssss

ss

PP0

PP1

PP2

PP3

PP4

PP5

PP6

PP7

PP8

Page 52: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 52CMOS VLSI Design

Simplified Sign Ext. Sign bits are either all 0’s or all 1’s

– Note that all 0’s is all 1’s + 1 in proper column– Use this to reduce loading on MSB

s111111111111111s

s1111111111111s

s11111111111s

s111111111s

s1111111s

s11111s

s111s

s1s

PP0

PP1

PP2

PP3

PP4

PP5

PP6

PP7

PP8

Page 53: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 53CMOS VLSI Design

Even Simpler Sign Ext. No need to add all the 1’s in hardware

– Precompute the answer!

ssss

ss1

ss1

ss1

ss1

ss1

ss1

ss

PP0PP1PP2PP3PP4PP5PP6PP7PP8

Page 54: EE466: VLSI Design Lecture 14: Datapath Functional Units.

12: Datapath Functional Units Slide 54CMOS VLSI Design

Advanced Multiplication Signed vs. unsigned inputs Higher radix Booth encoding Array vs. tree CSA networks