basic dividers lecture 10. required reading chapter 13, basic division schemes 13.1, shift/subtract...
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/35.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/36.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020417/5697bfb71a28abf838c9f058/html5/thumbnails/37.jpg)
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