590 likes | 875 Vues
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.
E N D
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
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)
Basic Equations of Division z = d q + s | s | < | d | sign(s) = sign(z) z > 0 0 s < | d | z < 0 - | d | < s 0
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 = zH 2k + zL < d 2k zH < d
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
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
Fig. 13.2 Examples of sequential division with integer and fractional operands.
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
Integer vs. Fractional Division For Integers: z = q d + 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 dfrac = d 2-k qfrac = q 2-k sfrac = s 2-2k
Unsigned Fractional Division Overflow Condition for no overflow: zfrac < dfrac
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)
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) = = 2k zfrac - (2k dfrac) qfrac = 2k (zfrac - dfrac qfrac) = 2k sfrac
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)
Non-Restoring Unsigned Integer Division s(1) = 2 z - 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 = q d + s z, q, d ≥ 0 s<0 z = (q-1) d + (s+d) z = q’ d + s’
Fig. 13.8 Partial remainder variations for restoring andnonrestoring 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 Restoring division Non-Restoring division 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
Signed Integer Division z d | z | | d | sign(z) sign(d) Unsigned division sign(s) = sign(z) sign(z) = sign(d) + | q | | s | sign(q) = - sign(z) sign(d) 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
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) q = BSD_2’s_comp_conversion(q) Correction_step
Non-Restoring Signed Integer Division Correction step s = 2-k · s(k) z = q d + s sign(s) = sign(z) z = (q-1) d + (s+d) z = q’ d + s’ z = (q+1) d + (s-d) z = q” d + s”
======================== z 0 0 1 0 0 0 0 1 24d 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 1-1 1 ======================== Fig. 13.9 Example of nonrestoring signed division. 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
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 p -1 0 1 0 1 1 1 1 q2’scomp 0 0 1 1 1 = 0 1 1 1 no overflow if pk-2 = pk-1 (qk-1 qk-2)
Fast Review of Fast Dividers
Classification of Dividers Array Dividers Dividers by Convergence Sequential Radix-2 High-radix • Restoring • Non-restoring • regular • SRT • regular using carry save adders • SRT using carry save adders
Array Dividers
Fig. 15.7 Restoring array divider composed of controlledsubtractor cells.
Fig. 15.8 Nonrestoring array divider built of controlledadd/subtract cells.
Sequential Dividers with Carry-Save Adders
Fig. 14.8 Block diagram of a radix-2 divider with partialremainder in stored-carry form.
Radix r Divider Process to derive the details: Radix r Digit set [–, ] for q–j Number of bits of p (v and u) and d to be inspected Quotient digit selection unit (table or logic) Multiple generation/selection scheme Conversion of redundant q to 2’s complement Fig. 14.15 Block diagram of radix-r divider with partial remainder in stored-carry form.
Pentium bug (1) October 1994 Thomas Nicely, Lynchburg Collage, Virginia finds an error in his computer calculations, and traces it back to the Pentium processor November 7, 1994 First press announcement, Electronic Engineering Times Late 1994 Tim Coe, Vitesse Semiconductor presents an example with the worst-case error c = 4 195 835/3 145 727 Pentium = 1.333 739 06... Correct result = 1.333 820 44...
Pentium bug (2) Intel admits “subtle flaw” November 30, 1994 Intel’s white paper about the bug and its possible consequences Intel - average spreadsheet user affected once in 27,000 years IBM - average spreadsheet user affected once every 24 days Replacements based on customer needs December 20, 1994 Announcement of no-question-asked replacements
Pentium bug (3) Error traced back to the look-up table used by the radix-4 SRT division algorithm 2048 cells, 1066 non-zero values {-2, -1, 1, 2} 5 non-zero values not downloaded correctly to the lookup table due to an error in the C script
Multiply/Divide Unit
Multiply-Divide Unit The control unit proceeds through necessary steps for multiplication or division (including using the appropriate shift direction) The slight speed penalty owing to a more complex control unit is insignificant Fig. 15.9 Sequential radix-2 multiply/divide unit.
Learn to deal with approximations • In digital arithmetic one has to come to grips with approximation and questions like: • When is approximation good enough • What margin of error is acceptable • Be aware of the applications you are designing the arithmetic circuit or program for • Analyze the implications of your approximation
Calculators u = = 1.000 677 131 v = 21/1024 = 1.000 677 131 10 times y = (((v2)2)…)2 = 1.999 999 983 x = (((u2)2)…)2 = 1.999 999 963 10 times 10 times x’ = u1024 = 1.999 999 973 y’ = v1024 = 1.999 999 994 Hidden digits in the internal representation of numbers Different algorithms give slightly different results Very good accuracy
DIGITAL SYSTEMS DESIGN • Concentration advisors:Kris Gaj • ECE 545 Digital System Design with VHDL (Fall semesters)– K. Gaj, project, FPGA design with VHDL, Aldec/Synplicity/Xilinx/Altera • 2. ECE 645 Computer Arithmetic (Spring semesters)– K. Gaj, project, FPGA design with VHDL or Verilog, • Aldec/Synplicity/Xilinx/Altera • 3. ECE 586 Digital Integrated Circuits(Spring semesters) – D. Ioannou • 4. ECE 681 VLSI Design for ASICs (Fall semesters)– N. Klimavicz, project/lab, front-end and back-end ASIC design with Synopsys tools • 5. ECE 682 VLSI Test Concepts (Spring semesters)– T. Storey, homework