basic dividers lecture 10. required reading chapter 13, basic division schemes 13.1, shift/subtract...

37
Basic Dividers Lecture 10

Upload: angela-bryant

Post on 21-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Basic Dividers

Lecture 10

Page 2: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Required Reading

Chapter 13, Basic Division Schemes13.1, Shift/Subtract Division Algorithms13.3, Restoring Hardware Dividers13.4, Non-Restoring and Signed Division

Chapter 15 Variation in Dividers15.6, Combined Multiply/Divide Units

Behrooz Parhami, Computer Arithmetic: Algorithms and Hardware Design

Page 3: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Notation and

Basic Equations

Page 4: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

4

Notation

z Dividend z2k-1z2k-2 . . . z2 z1 z0

d Divisor dk-1dk-2 . . . d1 d0

q Quotient qk-1qk-2 . . . q1 q0

s Remainder sk-1sk-2 . . . s1 s0

(s = z - dq)

Page 5: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

5

Basic Equations of Division

z = d q + s

sign(s) = sign(z)

| s | < | d |

z > 00 s < | d |

z < 0- | d | < s 0

Page 6: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

6

Unsigned Integer Division Overflow

z = zH 2k + zL < d 2k

Condition for no overflow (i.e. q fits in k bits):

z = q d + s < (2k-1) d + d = d 2k

zH < d

• Must check overflow because obviously the quotient q can also be 2k bits. • For example, if the divisor d is 1, then the quotient q is the

dividend z, which is 2k bits

Page 7: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

7

Sequential Integer DivisionBasic Equations

s(0) = z

s(j) = 2 s(j-1) - qk-j (2k d) for j=1..k

s(k) = 2k s

Page 8: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

8

Sequential Integer DivisionJustification

s(1) = 2 z - qk-1 (2k d)s(2) = 2(2 z - qk-1 (2k d)) - qk-2 (2k d)s(3) = 2(2(2 z - qk-1 (2k d)) - qk-2 (2k d)) - qk-3 (2k d)

. . . . . .

s(k) = 2(. . . 2(2(2 z - qk-1 (2k d)) - qk-2 (2k d)) - qk-3 (2k d) . . . - q0 (2k d) = = 2k z - (2k d) (qk-1 2k-1 + qk-2 2k-2 + qk-3 2k-3 + … + q020) = = 2k z - (2k d) q = 2k (z - d q) = 2k s

Page 9: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

9

Fig. 13.2 Examples of sequential division with integer and fractional operands.

Page 10: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Fractional Division

Page 11: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

11

Unsigned Fractional Division

zfrac Dividend .z-1z-2 . . . z-(2k-1)z-2k

dfrac Divisor .d-1d-2 . . . d-(k-1) d-k

qfrac Quotient .q-1q-2 . . . q-(k-1) q-k

sfrac Remainder .000…0s-(k+1) . . . s-(2k-1) s-2kk bits

Page 12: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

12

Integer vs. Fractional Division

For Integers:

z = q d + s 2-2k

z 2-2k = (q 2-k) (d 2-k) + s (2-2k)

zfrac = qfrac dfrac + sfrac

For Fractions:

wherezfrac = z 2-2k

dfrac = d 2-k

qfrac = q 2-k

sfrac = s 2-2k

Page 13: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

13

Unsigned Fractional Division Overflow

Condition for no overflow:

zfrac < dfrac

Page 14: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

14

Sequential Fractional DivisionBasic Equations

s(0) = zfrac

s(j) = 2 s(j-1) - q-j dfrac for j=1..k

2k · sfrac = s(k)

sfrac = 2-k · s(k)

Page 15: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

15

Sequential Fractional DivisionJustification

s(1) = 2 zfrac - q-1 dfrac

s(2) = 2(2 zfrac - q-1 dfrac) - q-2 dfrac

s(3) = 2(2(2 zfrac - q-1 dfrac) - q-2 dfrac) - q-3 dfrac

. . . . . .

s(k) = 2(. . . 2(2(2 zfrac - q-1 dfrac) - q-2 dfrac) - q-3 dfrac . . . - q-k dfrac = = 2k zfrac - dfrac (q-1 2k-1 + q-2 2k-2 + q-3 2k-3 + … + q-k20) = = 2k zfrac - dfrac 2k (q-1 2-1 + q-2 2-2 + q-3 2-3 + … + q-k2-k) = = 2k zfrac - (2k dfrac) qfrac = 2k (zfrac - dfrac qfrac) = 2k sfrac

Page 16: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Restoring Unsigned Integer Division

Page 17: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

17

Restoring Unsigned Integer Division

s(0) = zfor j = 1 to k if 2 s(j-1) - 2k d > 0 qk-j = 1 s(j) = 2 s(j-1) - 2k d else qk-j = 0 s(j) = 2 s(j-1) end for

Page 18: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

18

Fig. 13.6 Example of restoring unsigned division.

Page 19: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

19

Fig. 13.5 Shift/subtract sequential restoring divider.

Page 20: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Non-Restoring Unsigned Integer Division

Page 21: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Non-Restoring Unsigned Integer Division

s(0) = zs(1) = 2 s(0) - 2k dfor j = 2 to k if s(j-1) 0 qk-(j-1) = 1 s(j) = 2 s(j-1) - 2k d else qk-(j-1) = 0 s(j) = 2 s(j-1) + 2k dend forif s(k) 0 q0 = 1else q0 = 0 Correction step

Page 22: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

22

Non-Restoring Unsigned Integer Division

Correction step

z = q d + s

z = (q-1) d + (s+d)z = q’ d + s’

z, q, d ≥ 0 s<0

s = 2-k · s(k)

Page 23: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

23

Example of nonrestoring unsigned division

Page 24: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

24

Partial remainder variations for restoring andnonrestoring division

Page 25: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

25

s(j) = 2 s(j-1)

s(j+1) = 2 s(j) - 2k d = = 4 s(j-1) - 2k d

s(j) = 2 s(j-1) - 2k d

s(j+1) = 2 s(j) + 2k d = = 2 (2 s(j-1) - 2k d) + 2k d = = 4 s(j-1) - 2k d

Restoring division Non-Restoring division

Non-Restoring Unsigned Integer Division

Justification

s(j-1) ≥ 0 2 s(j-1) - 2k d < 0 2 (2 s(j-1) ) - 2k d ≥ 0

Page 26: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

May 2012 Computer Arithmetic, Division Slide 26

Convergence of the Partial Quotient to q

In restoring division, the partial quotient converges to q from below

Example

(0 1 1 1 0 1 0 1)two / (1 0 1 0)two

(117)ten/(10)ten = (11)ten = (1011)two

In nonrestoring division, the partial quotient may overshoot q, but converges to it after some oscillations 0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111Partial quotient

Iteration0 1 2 3 4

q

q(1) q(2)

q(3)

q(4)

q(2)

Restoring

Nonrestoring

q(0)

Page 27: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Signed Integer Division

Page 28: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

28

Signed Integer Division

z d

| z | | d | sign(z) sign(d)

| q | | s |

sign(s) = sign(z)

sign(q) =+

-

Unsigneddivision

sign(z) = sign(d)

sign(z) sign(d)

q s

Page 29: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

29

Examples of division with signed operands

z = 5 d = 3 q = 1 s = 2

z = 5 d = –3 q = –1 s = 2

z = –5 d = 3 q = –1 s = –2

z = –5 d = –3 q = 1 s = –2

Magnitudes of q and s are unaffected by input signsSigns of q and s are derivable from signs of z and d

Examples of Signed Integer Division

Page 30: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

Non-RestoringSigned Integer Division

Page 31: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

31

Non-Restoring Signed Integer Division

s(0) = zfor j = 1 to k if sign(s(j-1)) == sign(d) qk-j = 1 s(j) = 2 s(j-1) - 2k d = 2 s(j-1) - qk-j (2k d) else qk-j = -1 s(j) = 2 s(j-1) + 2k d = 2 s(j-1) - qk-j (2k d) end forq = BSD_2’s_comp_conversion(q)Correction_step

Page 32: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

32

Non-Restoring Signed Integer Division

Correction step

z = q d + s

z = (q-1) d + (s+d)z = q’ d + s’

z = (q+1) d + (s-d)z = q” d + s”

s = 2-k · s(k)

sign(s) = sign(z)

Page 33: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

33

Example of nonrestoring signed division========================z 0 0 1 0 0 0 0 124d 1 1 0 0 1 –24d 0 0 1 1 1 ========================s(0) 0 0 0 1 0 0 0 0 1 2s(0) 0 0 1 0 0 0 0 1 sign(s(0)) sign(d),+24d 1 1 0 0 1 so set q3 = 1 and add––––––––––––––––––––––––s(1) 1 1 1 0 1 0 0 1 2s(1) 1 1 0 1 0 0 1 sign(s(1)) = sign(d), +(–24d) 0 0 1 1 1 so set q2 = 1 and subtract––––––––––––––––––––––––s(2) 0 0 0 0 1 0 1 2s(2) 0 0 0 1 0 1 sign(s(2)) sign(d),+24d 1 1 0 0 1 so set q1 = 1 and add––––––––––––––––––––––––s(3) 1 1 0 1 1 1 2s(3) 1 0 1 1 1 sign(s(3)) = sign(d), +(–24d) 0 0 1 1 1 so set q0 = 1 and subtract––––––––––––––––––––––––s(4) 1 1 1 1 0 sign(s(4)) sign(z),+(–24d) 0 0 1 1 1 so perform corrective subtraction––––––––––––––––––––––––s(4) 0 0 1 0 1 s 0 1 0 1 q

1 11 1 ========================

p = 0 1 0 1 Shift, compl MSB 1 1 0 1 1 Add 1 to correct 1 1 0 0 Check: 33/(7) = 4

Page 34: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

34

BSD 2’s Complement Conversion

q = (qk-1 qk-2 . . . q1 q0)BSD =

= (pk-1 pk-2 . . . p1 p0 1)2’s complement

where

piqi

-1 011

Example:

1 -1 1 1qBSD

p

q2’scomp

1 0 1 1

0 0 1 1 1 = 0 1 1 1

no overflow if pk-2 = pk-1 (qk-1 qk-2)

Page 35: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

May 2012 Computer Arithmetic, Division Slide 35

Nonrestoring Hardware Divider

Quotient

k

Partial Remainder

Divisor

add/sub

k-bit adder

k

cout cin

Complement

qk–j 2s (j–1)MSB of

Divisor Sign

Complement of Partial Remainder Sign

Page 36: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

36

Multiply/DivideUnit

Page 37: Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers

37

The control unit proceeds through necessary steps for multiplication or division (including using the appropriate shift direction)

Fig. 15.9 Sequential radix-2 multiply/divide unit.

Multiplier x or quotient q

Mux

Adder out c

0 1

Partial product p or partial remainder s

Multiplicand a or divisor d

Shift control

Shift

Enable

in c

q k–j

MSB of 2s (j–1)

k

k

k

j x

MSB of p (j+1)

Divisor sign

Multiply/ divide control

Select

Mul Div

The slight speed penalty owing to a more complex control unit is insignificant

Multiply-Divide Unit