Basic Dividers

1 / 54

# Basic Dividers - PowerPoint PPT Presentation

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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Basic Dividers' - harley

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Lecture 10

Basic Dividers

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

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’

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

• Restoring
• Non-restoring
• regular
• SRT
• regular using carry save adders
• SRT using carry save adders

Array

Dividers

Fig. 15.8 Nonrestoring array divider built of controlledadd/subtract cells.

Sequential

Dividers

with

Fig. 14.8 Block diagram of a radix-2 divider with partialremainder in stored-carry form.

Process to derive the details:

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)

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

Pentium bug (3)

Error traced back to the look-up table used by

2048 cells, 1066 non-zero values {-2, -1, 1, 2}

to the lookup table due to an error in the C script

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

• 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

Follow-up courses

Computer Arithmetic

ECE 645

ECE 646

Cryptography and

Computer Network Security

(Fall 2011)

ECE 746

Cryptography

(Spring 2012 or 2013)

ECE 899

Cryptographic Engineering

(Spring 2012)

Cryptography and Computer

Network Security

Cryptography

Operations in the Galois Fields GF(2n)

Modular integer arithmetic

• AES
• Stream ciphers
• Elliptic curve cryptosystems
• Random number generators
• Smart cards
• Attacks against implementations
• (timing, power, fault analysis)
• Efficient and secure
• implementations of cryptography
• Security in various kinds of
• networks (IPSec, wireless)
• Zero-knowledge identification
• schemes
• Historical ciphers
• Classical encryption
• (DES, Triple DES, RC5, IDEA)
• Public key encryption
• (RSA)
• Hash functions and MACs
• Digital signatures
• Public key certificates
• PGP
• Secure Internet Protocols
• Cryptographic standards
Selected Topics
• True Random Number Generators
• Fast Finite Field Multiplication
• Elliptic and Hyperelliptic Curve Cryptography
• Instruction Set Extensions for Cryptographic Applications
• FPGA and ASIC Implementations of AES
• Secure and Efficient Implementation of Symmetric Encryption
• Block Cipher Modes of Operation in Hardware
• Basics of Side-Channel Analysis
• Improved Techniques for Side-Channel Analysis
• Electromagnetic Attacks and Countermeasures
• Microarchitectural Attacks and Countermeasures (cache attacks)