0% found this document useful (0 votes)
12 views37 pages

ECE645 Lecture10 Basic Dividers

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

ECE645 Lecture10 Basic Dividers

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

Lecture 10

Basic Dividers
Required Reading

Behrooz Parhami,
Computer Arithmetic: Algorithms and Hardware Design

Chapter 13, Basic Division Schemes


13.1, Shift/Subtract Division Algorithms
13.3, Restoring Hardware Dividers
13.4, Non-Restoring and Signed Division

Chapter 15 Variation in Dividers


15.6, Combined Multiply/Divide Units
Notation
and
Basic Equations
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)
4
Basic Equations of Division

z=dq +s

|s|<|d|

sign(s) = sign(z)

z>0 z<0
0s<|d| -|d|<s0
5
Unsigned Integer Division Overflow
• 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

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


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

z = z H 2k + z L < d 2 k

zH < d
6
Sequential Integer Division
Basic Equations

s(0) = z

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

s(k) = 2k s

7
Sequential Integer Division
Justification

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
8
Fig. 13.2 Examples of sequential division with integer
and fractional operands.

9
Fractional Division
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-2k


k bits

11
Integer vs. Fractional Division
For Integers:
z=qd+s  2-2k

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


For Fractions:

zfrac = qfrac dfrac + sfrac


where
zfrac = z 2-2k qfrac = q 2-k
dfrac = d 2-k sfrac = s 2-2k 12
Unsigned Fractional Division Overflow
Condition for no overflow:

zfrac < dfrac

13
Sequential Fractional Division
Basic 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)

14
Sequential Fractional Division
Justification

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) =
15
= 2 zfrac - (2 dfrac) qfrac = 2 (zfrac - dfrac qfrac) = 2 sfrac
k k k k
Restoring Unsigned Integer
Division
Restoring Unsigned Integer Division

s(0) = z
for 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

17
Fig. 13.6 Example of restoring unsigned division.

18
Fig. 13.5 Shift/subtract sequential restoring divider .

19
Non-Restoring Unsigned
Integer Division
Non-Restoring Unsigned Integer Division
s(0) = z
s(1) = 2 s(0) - 2k d
for 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 d
end for
if s(k)  0
q0 = 1
else
q0 = 0
Correction step
Non-Restoring Unsigned Integer Division
Correction step

s = 2-k · s(k)

z=qd+s

z, q, d ≥ 0 s<0

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

22
Example of nonrestoring unsigned
division

23
Partial remainder variations for restoring and
nonrestoring division

24
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

Restoring division Non-Restoring division

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

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


= 4 s(j-1) - 2k d = 2 (2 s(j-1) - 2k d) + 2k d =
= 4 s(j-1) - 2k d
25
Convergence of the Partial quotient
1111
Partial Quotient to q 1110

1101
Example 1100
q(2)
Nonrestoring q(4)
(0 1 1 1 0 1 0 1)two / (1 0 1 0)two 1011 q
1010
q(3)
(117)ten/(10)ten = (11)ten = (1011)two 1001
Restoring
1000
q(1) q(2)
In restoring division, the 0111

partial quotient converges 0110

to q from below 0101


0100

In nonrestoring division, 0011


the partial quotient may 0010
overshoot q, but converges 0001
to it after some oscillations q(0) Iteration
0000
0 1 2 3 4

May 2012 Computer Arithmetic, Division Slide 26


Signed Integer Division
Signed Integer Division
z d

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

Unsigned
division
sign(s) = sign(z)
|q| |s| + sign(z) = sign(d)
sign(q) =
- sign(z)  sign(d)

28
q s
Examples of Signed Integer Division

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 signs


Signs of q and s are derivable from signs of z and d

29
Non-Restoring
Signed Integer Division
Non-Restoring Signed Integer Division

s(0) = z
for 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 for
q = BSD_2’s_comp_conversion(q)
Correction_step
31
Non-Restoring Signed Integer Division
Correction step

s = 2-k · s(k)

z=qd+s

sign(s) = sign(z)

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


z = q’ d + s’ z = q” d + s”

32
Example of nonrestoring signed division
========================
z 0010 0001
24 d 1 1001
–2 d4
0 0111
========================
s(0) 0 0010 0001
2s(0) 0 0100 001 sign(s(0))  sign(d),
+24d 1 1001 so set q3 = 1 and add
––––––––––––––––––––––––
s(1) 1 1101 001
2s(1) 1 1010 01 sign(s(1)) = sign(d),
+(–24d) 0 0111 so set q2 = 1 and subtract
––––––––––––––––––––––––
s(2) 0 0001 01
2s (2)
0 0010 1 sign(s(2))  sign(d),
+24d 1 1001 so set q1 = 1 and add
––––––––––––––––––––––––
s(3) 1 1011 1
2s (3)
1 0111 sign(s(3)) = sign(d),
+(–24d) 0 0111 so set q0 = 1 and subtract
––––––––––––––––––––––––
s(4) 1 1110 sign(s(4))  sign(z),
+(–2 d)4
0 0111 so perform corrective subtraction
––––––––––––––––––––––––
s(4) 0 0101 p= 0 1 0 1 Shift, compl MSB
s 0101 1 1 0 1 1 Add 1 to correct
q 
1 11 1 1 1 0 0 Check: 33/(7) = 4 33
========================
BSD  2’s Complement Conversion

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

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

where Example:
qBSD 1 -1 1 1
qi pi
-1 0 p 1 011
1 1
q2’scomp 00111 =0111

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


Nonrestoring Hardware Divider
q k–j
MSB of Quotient
2s (j–1)
Partial Remainder

Divisor Sign

Divisor k
add/sub
Complement

cout cin
k-bit adder

k
Complement of
Partial Remainder Sign

May 2012 Computer Arithmetic, Division Slide 35


Multiply/Divide
Unit

36
Multiply-Divide Unit
k Mul Div
Shift
The control unit qk–j
Partial product p or Multiplier x
proceeds through partial remainder s or quotient q
xj
necessary steps for Shift control
multiplication or
MSB of 2s (j–1)
division
(including using
the appropriate Divisor sign
Multiplicand a
shift direction) or divisor d MSB of p (j+1) Multiply/
divide
k control
Enable
0 1
Mux
The slight speed Select
penalty owing to a k
more complex Adder
cout cin
control unit is
insignificant
Fig. 15.9 Sequential radix-2 multiply/divide unit.

You might also like