m3 – alu designbt.nitk.ac.in/c/17b/co200/notes/m3-1.multiply.divide.pdfmodule outline integer...

51
M3 – ALU Design

Upload: voliem

Post on 07-Mar-2018

262 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

M3 – ALU Design

Page 2: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Module Outline

● Integer Arithmetic– Adder, Subtractor, Multiplier, Divider

● Arithmetic and Logical Unit Design– ALU Design in SystemC

Page 3: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

1000× 1001 1000 0000 0000 1000 1001000

Page 4: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

Page 5: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0

Page 6: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001

Page 7: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

Page 8: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

100000100000 10102 10001000

Page 9: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

100000100000 10102 10001000

Page 10: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

100000100000 10102 10001000

10000001000000 113 10001000

Page 11: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

100000100000 10102 10001000

10000001000000 113 10010001001000

Page 12: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000 10011001

MultiplicandMultiplicand MultiplierMultiplier

0 10001000

ProductProduct

1000010000 1001001 10001000

100000100000 10102 10001000

10000001000000 113 10010001001000

10000000100000004 10010001001000

Page 13: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

Page 14: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

StartStart

1. TestMultiplier0

1. TestMultiplier0

Page 15: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

1. TestM10

1. TestM10

P = P + M2P = P + M2

M10 = 1 M1

0 = 0

Page 16: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

1. TestM10

1. TestM10

P = P + M2P = P + M2

M10 = 1

Shift-left M2 by 1 bitShift-left M2 by 1 bit

M10 = 0

Page 17: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

1. TestM10

1. TestM10

P = P + M2P = P + M2

M10 = 1

Shift-left M2 by 1 bit,

Shift-right M1 by 1 bit

Shift-left M2 by 1 bit,

Shift-right M1 by 1 bit

M10 = 0

Page 18: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

1. TestM10

1. TestM10

P = P + M2P = P + M2

M10 = 1

Shift-left M2 by 1 bit,Shift-right M1 by 1 bit

Shift-left M2 by 1 bit,Shift-right M1 by 1 bit

nth

repetition?

nth

repetition?

M10 = 0

Page 19: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication HardwareStartStart

1. TestM10

1. TestM10

P = P + M2P = P + M2

M10 = 1

Shift-left M2 by 1 bit,Shift-right M1 by 1 bit

Shift-left M2 by 1 bit,Shift-right M1 by 1 bit

nth

repetition?

nth

repetition?

DoneDone

M10 = 0

Y

N

Page 20: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

Page 21: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

ProductWrite

ProductWrite

Page 22: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

ProductWrite

ProductWrite

n-bit ALU

Page 23: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

ProductWrite

ProductWrite

n-bit ALU

Page 24: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

ProductWrite

ProductWrite

n-bit ALU

ControlTest

ControlTest

M10

Page 25: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication Hardware

MultiplicandShift left

MultiplicandShift left

MultiplierShift right

MultiplierShift right

ProductWrite

ProductWrite

n-bit ALU

ControlTest

ControlTest

M10

Page 26: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

MIPS Multiplication● Two 32-bit registers for product

– HI: most-significant 32 bits– LO: least-significant 32-bits

Page 27: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

MIPS Multiplication● Two 32-bit registers for product

– HI: most-significant 32 bits– LO: least-significant 32-bits

● Instructions– mult rs, rt / multu rs, rt

● 64-bit product in HI/LO

Page 28: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

MIPS Multiplication● Two 32-bit registers for product

– HI: most-significant 32 bits– LO: least-significant 32-bits

● Instructions– mult rs, rt / multu rs, rt

● 64-bit product in HI/LO

– mfhi rd / mflo rd● Move from HI/LO to rd● Can test HI value to see if product overflows 32 bits

Page 29: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

MIPS Multiplication● Two 32-bit registers for product

– HI: most-significant 32 bits– LO: least-significant 32-bits

● Instructions– mult rs, rt / multu rs, rt

● 64-bit product in HI/LO

– mfhi rd / mflo rd● Move from HI/LO to rd● Can test HI value to see if product overflows 32 bits

– mul rd, rs, rt● Least-significant 32 bits of product –> rd

Page 30: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Division

10011000 1001010 -1000 10 101 1010 -1000 10

n-bit operands yield n-bitquotient and remainder

quotient

dividend

remainder

divisor

Page 31: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Division● Check for 0 divisor● Long division approach

– If divisor ≤ dividend bits● 1 bit in quotient, subtract

– Otherwise● 0 bit in quotient, bring down next dividend bit

● Restoring division– Do the subtract, and if remainder goes < 0, add divisor

back● Signed division

– Divide using absolute values– Adjust sign of quotient and remainder as required

Page 32: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Division Hardware

Page 33: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Division Hardware

Initially dividend

Initially divisor in left half

Page 34: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

MIPS Division

● Use HI/LO registers for result– HI: 32-bit remainder– LO: 32-bit quotient

● Instructions– div rs, rt / divu rs, rt– No overflow or divide-by-0 checking

● Software must perform checks if required

– Use mfhi, mflo to access result

Page 35: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Module Outline

● Integer Arithmetic– Adder, Subtractor, Multiplier, Divider

● Arithmetic and Logical Unit Design– ALU Design in SystemC

Page 36: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Extra

Page 37: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

100010000

Page 38: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

Page 39: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1 1000 x 01000 x 0+

Page 40: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

Page 41: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000 x 01000 x 0+1000001000002

Page 42: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

100000010000003

Page 43: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000 x 11000 x 1+

1000001000002

100000010000003

Page 44: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

100000010000003

100100010010004

Page 45: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

100000010000003

100100010010004

MultiplicandMultiplicand MultiplierMultiplier

Page 46: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

100000010000003

100100010010004

MultiplicandMultiplicand MultiplierMultiplier

Shift leftShift left Add (0 OR Multiplicand)Add (0 OR Multiplicand)

Page 47: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Multiplication

● Start with long-multiplication approach

10001000 10011001x

10001000

1000010000

0

1

1000001000002

100000010000003

100100010010004

MultiplicandMultiplicand MultiplierMultiplier

Shift leftShift left Add (0 OR Multiplicand)Add (0 OR Multiplicand)

Length of the product is sum of operand lengthsLength of the product is sum of operand lengths

Page 48: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Optimized Multiplication Hardware

● Perform steps in parallel: add/shift

Page 49: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Fast Multiplication

● Using multiple adders

Page 50: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Optimized Divider

● One cycle per partial-remainder subtraction● Looks a lot like a multiplier!

– Same hardware can be used for both

Page 51: M3 – ALU Designbt.nitk.ac.in/c/17b/co200/notes/M3-1.Multiply.Divide.pdfModule Outline Integer Arithmetic – Adder, Subtractor, Multiplier, Divider Arithmetic and Logical Unit Design

Faster Division

● Can’t use parallel hardware as in multiplier– Subtraction is conditional on sign of remainder

● Faster dividers (e.g. SRT division) generate multiple quotient bits per step– Still require multiple steps