0% found this document useful (0 votes)
74 views29 pages

ALU (3) - Division Algorithms: Humboldt-Universität Zu Berlin

This document contains lecture slides about division algorithms and floating point arithmetic. It discusses restoring and non-restoring division algorithms, division by repeated multiplication, and division using reciprocals. It also covers floating point number formats, normalization, addition/subtraction of floating point numbers, multiplication/division of floating point numbers, underflow and overflow, and rounding in floating point arithmetic. Logical functions are also briefly mentioned.

Uploaded by

Rajarshi Poddar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views29 pages

ALU (3) - Division Algorithms: Humboldt-Universität Zu Berlin

This document contains lecture slides about division algorithms and floating point arithmetic. It discusses restoring and non-restoring division algorithms, division by repeated multiplication, and division using reciprocals. It also covers floating point number formats, normalization, addition/subtraction of floating point numbers, multiplication/division of floating point numbers, underflow and overflow, and rounding in floating point arithmetic. Logical functions are also briefly mentioned.

Uploaded by

Rajarshi Poddar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

HUMBOLDT-UNIVERSITT ZU BERLIN

INSTITUT FR INFORMATIK

Lecture 12

ALU (3) - Division Algorithms


Sommersemester 2002 Leitung: Prof. Dr. Miroslaw Malek
www.informatik.hu-berlin.de/rok/ca

CA - XII - ALU(3) - 1

FIXED-POINT, FLOATING-POINT ARITHMETIC AND LOGICAL FUNCTIONS


A. FIXED-POINT ARITHMETIC (continued)
RESTORING DIVISION NONRESTORING DIVISION DIVISION BY REPEATED MULTIPLICATION DIVISION BY USING RECIPROCAL (CRAY)

B. FLOATING-POINT ARITHMETIC
FORMATS ADDITION/SUBTRACTION MULTIPLICATION/DIVISION

C. LOGIC FUNCTIONS

CA - XII - ALU(3) - 2

ALGORITHM FOR RESTORING DIVISION


DO n TIMES SHIFT A & Q LEFT ONE BINARY POSITION SUBTRACT M FROM A, PLACING THE ANSWER BACK IN A IF THE SIGN OF A IS 1, SET q0 TO 0 AND ADD M BACK TO A (RESTORE A); OTHERWISE, SET q0 TO 1 SHIFT LEFT DIVIDEND Q
an-1 ACCUMULATOR an a0 A qn-1 q0

QUOTIENT SETTING

n+1 bit adder


0

ADD/SUBTRACT

CONTROL LOGIC

mn-1

m0

DIVISOR M
CA - XII - ALU(3) - 3

RESTORING DIVISION ALGORITHM FOR POSITIVE INTEGERS A-Accumulator


START
Q dividend COUNT 0 M divisor A0 Left-shift A, Q A A-M A < 0? No Q(0) 1 COUNT= n-1? Yes No Yes Q(0) 0 A A+M COUNT COUNT+1 M-Divisor Q-Dividend/Quotient

STOP

Quotient in Q
CA - XII - ALU(3) - 4

Remainder in A

A R E S T O R I N G D I V I S I O N E X A M P L E

Initially Shift Substract Set LSB Restore Shift Subtract Set LSB Restore Shift Subtract Set LSB Shift Subtract Set LSB Restore

A M

00000 00011 00001 11101 11110 11 00001 00010 11101 11111 11 00010 00100 11101 0 0 0001 00010 11101 11111 11 00010

1000 000

Add 2s complement of divisor First cycle

000 0 000 0 0 0 0 0 0 0 0 0 0 0 1 0 1

Second cycle Third cycle

Fourth cycle 0 0 1 0 Quotient Remainder


CA - XII - ALU(3) - 5

NONRESTORING DIVISION
ALGORITHM FOR NONRESTORING DIVISION STEP 1: DO n TIMES

IF THE SIGN OF A IS 0, SHIFT A AND Q LEFT ONE BINARY POSITION AND SUBTRACT M FROM A; OTHERWISE, SHIFT A AND Q LEFT AND ADD M TO A. IF THE SIGN OF A IS 0, SET Q0 TO 1; OTHERWISE SET Q0 TO 0.

STEP 2:

IF THE SIGN OF A IS 1, ADD M TO A


The negative result is restored by adding, i.e., Ri ( R i - M ) +M ( 1) and is followed by a shift left one (i.e., multiplication by 2) and subtract: R i+1 2Ri-M (2) The two operations (1) and (2) are then merged into a single one:

R i+1

2 [( R i - M) + M] - M = 2 R i - M
CA - XII - ALU(3) - 6

A NONRESTORING DIVISION ALGORITHM FOR POSITIVE INTEGERS


St art Q divid end COUNT 0

M A

diviso r 0

Lef t -shift A, Q

A-M

A No

0?

Yes

LefNo t A, Q t -shif Q(0) A 1 A- M

Lef t -shif t A, Q

Q(0) A

0 A+ M

COUNT = n - 1? Yes

No COUNT COUNT+ 1

Quot ient in Q Remainder in A Yes 0? A A +M St op

A No

CA - XII - ALU(3) - 7

A NONRESTORING DIVISION EXAMPLE


Initially Shift Substract Set LSB Shift Add Set LSB Shift Add Set LSB Shift Subtract Set LSB Add Remainder A M 00000 00011 00001 11101 11 1 1 0 11100 00011 1 1 1111 11110 00011 00001 00010 11101 1 1 1111 11111 00011 00010
CA - XII - ALU(3) - 8

1000 000 0000 000 Second cycle 0 0 00 000 Third cycle 0001 0 01 0 01 0 Quotient Restore remainder Fourth cycle First cycle

DIVISION BY REPEATED MULTIPLICATION


Q= DIVIDEND x F 0 x F 1 x ... DIVISOR DIVISOR = V = 1-y F0 = 1+y x F 0 x F 1 x ... F1 = 1+y2

V x F0 = 1-y2 V x F0 x F1 = (1-y2) (1+y2) = 1-y4 Multiply top & bottom by (1+y), then (1+y2 ), ...

1 = 1 1 + y = (1 + y )( 1 + y 2 ) = y x 1 1 y2 1 y4
1 (1 + y )(1 + y 2 )(1 + y 4 )....(1 + y 2 ) = x 1 y 2i
i 1

Key idea: 0 Find a simple function (factor) so that by a repeated multiplication the value approaches 1
CA - XII - ALU(3) - 9

FLOATING-POINT ARITHMETIC (scientific notation)


COMPONENTS OF A FLOATING-POINT NUMBER REPRESENTATION
- Sign - Exponent ( Xe ) (Ye) - Mantissa (Xm) (Ym) X = Xm * B Xe Examples:

+ 1.23 * 102 9.999 999 x 1099 a. Sign is included as an extension of the mantissa. b. Exponent (1) Scale Factor (B) base or radix (2) Biasing. Exponent values are usually biased about some excess value. For example if we have an exponent field capable of having values 00 to 99 to represent plus and minus values we would assign exponents excess 50. The exponent -50 would be represented by 0, exponent 0 by 50, and exponent 49 by 99. 0 < EB < 99 Exponent Field -50 < E < 49 Exponent Represented The reason for using this technique is that the magnitudes of numbers may be compared without regard to whether the number is in floating-point format or not, i.e., magnitudes are compared in the same way as for integer arithmetic.
CA - XII - ALU(3) - 10

FLOATING-POINT NUMBERS FORMATS


a) A 32-bit binary format E
Sign of number

32 bits M 24-bit fractional mantissa 001....... Unnormalized value

7-bit signed exponent 0 0001001 +0.001...x29

b) Binary normalization example

c) Hexadecimal (base 16) normalization example with excess 64-exponent (bias 64)

0 0000111 1....... +0.1...x27 Normalized version Normalization keeps mantissa at the value of 1 - 64<E< 63 2 <M<1 excess - 64 format E=E+ 64 0<E<127 1 0000011 -0.00000101...x163 1 0000010 -0.0101...x162

00000101....... Unnormalized value 0101....... Normalized version


CA - XII - ALU(3) - 11

Exception: Underflow E<64 Overflow E>63 - set to 0

THE IEEE STANDARD FORMAT


Value=(-1)Sx(1+M1x2-1+M2x2-2+...+M23x2-23)x2E7...E1E0-127 Value=(-1)Sx(1+M1x2-1+M2x2-2+...+M52x2-52)x2E10...E1E0-1023 Value=(-1)Sx(M0+M1x2-1+M2x2-2+...+M63x2-63)x2E14...E1E0-16383 Short real (32 bits)
Range of value 1,18x10-38 < |x| < 3,40x10+38, precision 24 bits 31 30 23 22 0 S E7..... E0 M1 .......... M23 S: sign bit (1=negative mantissa, 0=positive mantissa) E7...E0: exponent (8bits, bias 127) M1...M23: mantissa (23 bits plus implicit M0=1)

(short real) (long real) (temporary real)

Long real (64 bits)


Range of value 2,23x10-308 < |x| < 1,79x10+308, precision 53 bits 63 62 52 51 0 S E10..........E0 M1 .......... M52 bias 1023

Temporary real (80 bits)


Range of value 3,37x10-4932 < |x|<1,79x10+4932, precision 53 bits 79 78 64 63 S E14.........E0 M1 .......... bias 16.383
CA - XII - ALU(3) - 12

0 M63

FLOATING-POINT REPRESENTATION IEEE STANDARD


(-1)S (1.M) 2E-bias S 8-bit exponent Mantissa with implied 1 Largest Error Precision Bias Exponent Range Smallest Number Largest Number Special Cases a) Zero (-1)S * 0 b) Infinity (-1)S (e.g., bias = 127) 24 bits 2-24 7 decimal digits 127 -126 E' 127 2-126 = 1.2 * 10 -38 (2 - 2-23) 2127 = 3.4 * 1038 E=0, M=0 23-bit mantissa 1 M' < 2 (single precision)

E=255, M=0 c) Not-a-number E=255, M0 d) Normalized (-1)S * (1.M) 2E-127 0 < E < 255 e) Unnormalized (-1)S * (0.M) 2-126 E=1, M0 (This Number cannot be normalized because a shift to the left would cause an underflow.) Examples S Exponent 0 10000001 0 01111111 0 10000000

Mantissa implied 1 1.00...0 = 1.0 * 2129-127 = 4.0 1.10...0 = 1.5 * 2127-127 = 1.5 1.010...0 = 1.25 * 2128-127 = 2.5
CA - XII - ALU(3) - 13

UNDERFLOW AND OVERFLOW

Underflow occurs when a resulting biased exponent is less than zero (0). In such case the floating point word is set to all zeros. Overflow occurs when a resulting biased exponent is greater than the maximum value allowed for the exponent field. In both cases an error bit in a status word usually is set or an interrupt enabled so that a programm can determine what action to take following an underflow or overflow.

CA - XII - ALU(3) - 14

NORMALIZATION AND SCALING


Normalization is a process assuring the maximum available accuracy of a given floating-point number Floating-point arithmetic units are usually designed to handle floating-point numbers in a normalized form. If the numbers are not presented to the unit in normalized form the unit often will not yield the correct result. The normalization of a number is related to the base or radius of the exponent. The normalization of a number must occur in shifts of binary digits in units represented by the base. In normalization a digit must appear in the left most mantissa "radix" position adjacent to the decimal. Each left shift of the mantissa represents a subtraction of 1 from the exponent each right shift an addition of 1 to the exponent.

Normalization and changing the scale factor works like the pen and pencil method in scientific notation. Examples : 1.27 x 105 = .127 x 106 0.03 x 102 = .30 x 101 42.1 x 10-6 = .421 x 10-4 0.022 x 10-4 = .220 x 10-5 For binary shift a single shift by a sinlge position is required while for a hexadecimal shift a shift by four positions nescessary (implied radix 16)
CA - XII - ALU(3) - 15

DIFFICULTY AND ROUNDING (OFF)


Arithmetic's Difficulty a. Multiplication and division are less complicated than addition or subtraction to implement. b. The addition or subtraction of numbers is complicated by the fact that the smaller number has to be shifted to be decimally aligned with the larger number before the arithmetic operation is performed. Rounding Fractional binary arithmetic because of limited bit representation can result in erroneous results. Guard bits or extended precision (larger registers) bits are often used to increase accuracy. The result after an operation is then rounded. Rounding Methods Chopping (Truncation) The result is not rounded. Normal Rounding A one is added to the results LSB if the result is followed by a 1 guard bit. Von Neumann A one bit is set in the results LSB if the result is followed by a guard bit. Results Guard Bits Comments .0010 .0010 ] .0010 .0011] .0011 .0100] .0010 .0011] .0011 .0011] 110 Biased Error: 0 - Chopped Bits Unbiased Error: - to + (LSB)

110 110

110 110
CA - XII - ALU(3) - 16

More Complex Imp. Unbiased Error: -1 to +1 (LSB)

EQUATIONS FOR FLOATING-POINT OPERATIONS


X E , Y E - exponents of X and Y X M, YM - mantissas of X and Y XE-YE YE X + Y = ( XM * 2 + YM ) * 2 XE-YE SUB X - Y = ( XM * 2 - YM ) * 2 XE +YE MULT X * Y = ( XM * YM ) * 2 XE-YE DIV X / Y = ( XM * YM) * 2 YE

ADD

CA - XII - ALU(3) - 17

FLOATING-POINT ARITHMETIC ALGORITHMS


ADD/SUB 1) CHOOSE THE NUMBER WITH SMALLER EXPONENT AND SHIFT IT'S MANTISSA RIGHT A NUMBER OF STEPS EQUAL TO THE DIFFERENCE IN EXPONENTS. 2) SET THE EXPONENT OF THE RESULT EQUAL TO THE LARGE EXPONENT. 3) PERFORM ADDITION-SUBTRACTION ON THE MANTISSAS AND DETERMINE THE SIGN OF THE RESULT. 4) NORMALIZE THE RESULT IF NECESSARY. 5) CHECK FOR OVERFLOW AND UNDERFLOW.

CA - XII - ALU(3) - 18

FLOATING-POINT MULTIPLICATION AND DIVISION


MULT 1) ADD EXPONENTS. 2) MULTIPLY MANTISSAS AND DETERMINE SIGN OF RESULT 3) NORMALIZE THE RESULTING VALUE IF NECESSARY 4) CHECK FOR OVERFLOW AND UNDERFLOW

DIV

1) SUBTRACT EXPONENTS 2) DIVIDE MANTISSAS & DETERMINE SIGN OF RESULT 3) NORMALIZE THE RESULTING VALUE IF NECESSARY 4) CHECK FOR OVERFLOW AND UNDERFLOW

OVERFLOW UNDERFLOW

EXP > + RANGE EXP < - RANGE


CA - XII - ALU(3) - 19

A floating-point arithmetic unit viewed as two fixed-point arithmetic units


Data bus Exponent unit Mantissa unit

Control bus

Control unit

Data-processing part of a simple floating-point arithmetic unit


Exponent unit E1 E2 Adder E Mantissa unit AC Adder MQ DR

Data bus
CA - XII - ALU(3) - 20

A combined fixed-point and floating-point arithmetic unit

AC

MQ

DR

Exponent adder

Mantissa adder

CA - XII - ALU(3) - 21

Floating-point adder of the IBM mainframe


Input bus E1 Adder 1 E1 - E2 Adder 2 Zero digit checker Adder 3 E3 Output bus R Shifter 2 M3 E2 M1 Shifter 1 M2 Exponent comparison and mantissa alignment Mantissa additionsubtraction Result normalization

CA - XII - ALU(3) - 22

Floating-point addition-subtraction unit


32-bit operands EA EB A: SA, EA, MA B: SB, EB, MB MA SWAP Shifter n hex digits to right MB M of number with smaller E M of number with larger E

7-bit substractor S A S B sign


Combinational CONTROL network

n = | EA - EB |
ADD/SUB

ADD/ SUBTRACTION

sign

EA EB MPX E X
7-bit substractor Leading hex zeros detector

24-bit adder/ substractor

Normalize and Round

E-X R: S R , ER ,
CA - XII - ALU(3) - 23

MR

32-bit result R=AB

FLOATING-POINT ADDITION-SUBTRACTION ALGORITHM


Start Load input operands Compare exponents Equalize exponents
E1 AC E2 DR XE XM YE YM

E1 - E2 E<0? No Yes
Right-shift DR E E+1

E>0?

No

Yes
Right-shift AC E E+1

Add-subtract mantissas

Yes
AC E

Add instruction? AC + DR max ( E1, E2)

No
AC E AC - DR max ( E1, E2)

1. Comparison of the exponents by subtraction 1 2. Alignment of the mantissas by shifting 3. Addition or subtraction of the mantissas 4. Normalization of the result Tests are performed for overflow and for aXII - ALU(3)mantissa in the CA - zero - 24

1 Mantissa overflowunderflow adjustment Zero result adjustment Result normalization No


AC overflow or underflow?

Yes

E Yes

Right-shift AC

E+1

Exponent overflow ?

No

No AC = zero ? No AC normalized ? Left - shift AC E E-1 Exponent underflow? Yes E 00...0

Yes

Set error flag

Stop

CA - XII - ALU(3) - 25

PIPELINED VERSION OF THE FLOATING-POINT ADDER


Input bus E1 Exponent comparison E4 Mantissa alignment E6 Mantissa addition E7 Normalization Adder 3 E3 Output bus Zero digit checker E2 M1 M2

Adder 1

E5

M4 Shifter 1 M6

M5

M7 Adder 2 R Shifter 2 M3

CA - XII - ALU(3) - 26

Implementation of four logical instructions AND, OR, EXCLUSIVE-OR and NOT


X m Y m
NOT XOR OR AND

1/4 Decoder

c1 c2

m Z
Z= c
1

X Y

+ OR

X Y

X Y

AND

EX - OR

NOT

CA - XII - ALU(3) - 27

Implementation of two conditional branch instructions SZA (skip on zero accumulator) and SNA (skip on nonzero accumulator)
Accumulator AC . . .

Zero flip-flop (flag)

IR 0 D 1 SNA SZA Instruction decoder

Count Enable

PC Program Counter

CA - XII - ALU(3) - 28

TEST FOR AND

A>B A=B

(or A<B) (or nonequality AB) A

A A Serial Shift B B B A AB AB B

. S R Q Q A>B A<B

. AB +AB 0

S R

AB Q Q A=B Reset Q=1

CA - XII - ALU(3) - 29

You might also like