basic dividers lecture 10. required reading chapter 13, basic division schemes 13.1, shift/subtract...
TRANSCRIPT
Basic Dividers
Lecture 10
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
Notation and
Basic Equations
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)
5
Basic Equations of Division
z = d q + s
sign(s) = sign(z)
| s | < | d |
z > 00 s < | d |
z < 0- | d | < s 0
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
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
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
9
Fig. 13.2 Examples of sequential division with integer and fractional operands.
Fractional Division
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
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
13
Unsigned Fractional Division Overflow
Condition for no overflow:
zfrac < dfrac
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)
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
Restoring Unsigned Integer Division
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
18
Fig. 13.6 Example of restoring unsigned division.
19
Fig. 13.5 Shift/subtract sequential restoring divider.
Non-Restoring Unsigned Integer Division
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
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)
23
Example of nonrestoring unsigned division
24
Partial remainder variations for restoring andnonrestoring division
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
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)
Signed Integer Division
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
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
Non-RestoringSigned Integer Division
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
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)
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
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)
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
36
Multiply/DivideUnit
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