ECE645 Lecture10 Basic Dividers
ECE645 Lecture10 Basic Dividers
Basic Dividers
Required Reading
Behrooz Parhami,
Computer Arithmetic: Algorithms and Hardware Design
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
0s<|d| -|d|<s0
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
z = z H 2k + z L < d 2 k
zH < d
6
Sequential Integer Division
Basic Equations
s(0) = z
s(k) = 2k s
7
Sequential Integer Division
Justification
......
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
11
Integer vs. Fractional Division
For Integers:
z=qd+s 2-2k
13
Sequential Fractional Division
Basic Equations
s(0) = zfrac
2k · sfrac = s(k)
14
Sequential Fractional Division
Justification
......
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
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
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
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)
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 11 1 1 1 0 0 Check: 33/(7) = 4 33
========================
BSD 2’s Complement Conversion
where Example:
qBSD 1 -1 1 1
qi pi
-1 0 p 1 011
1 1
q2’scomp 00111 =0111
Divisor Sign
Divisor k
add/sub
Complement
cout cin
k-bit adder
k
Complement of
Partial Remainder Sign
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.