ALU (3) - Division Algorithms

Similar documents
Hakim Weatherspoon CS 3410 Computer Science Cornell University

Binary Floating-Point Numbers

Chapter 8: Solutions to Exercises

14:332:231 DIGITAL LOGIC DESIGN. 2 s-complement Representation

Numbers and Arithmetic

Graduate Institute of Electronics Engineering, NTU Basic Division Scheme

Chapter 4 Number Representations

14:332:231 DIGITAL LOGIC DESIGN. Why Binary Number System?

ECE380 Digital Logic. Positional representation

CHAPTER 2 NUMBER SYSTEMS

Numbers and Arithmetic

9. Datapath Design. Jacob Abraham. Department of Electrical and Computer Engineering The University of Texas at Austin VLSI Design Fall 2017

COMPUTERS ORGANIZATION 2ND YEAR COMPUTE SCIENCE MANAGEMENT ENGINEERING UNIT 3 - ARITMETHIC-LOGIC UNIT JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

Conversions between Decimal and Binary

Introduction CSE 541

Complement Arithmetic

Numbering Systems. Contents: Binary & Decimal. Converting From: B D, D B. Arithmetic operation on Binary.

CMP 334: Seventh Class

CprE 281: Digital Logic

Binary Multipliers. Reading: Study Chapter 3. The key trick of multiplication is memorizing a digit-to-digit table Everything else was just adding

Ex code

Linear Feedback Shift Registers (LFSRs) 4-bit LFSR

hexadecimal-to-decimal conversion

ECE260: Fundamentals of Computer Engineering

MATH Dr. Halimah Alshehri Dr. Halimah Alshehri

ENGIN 112 Intro to Electrical and Computer Engineering

The goal differs from prime factorization. Prime factorization would initialize all divisors to be prime numbers instead of integers*

Cs302 Quiz for MID TERM Exam Solved

EE260: Digital Design, Spring n Digital Computers. n Number Systems. n Representations. n Conversions. n Arithmetic Operations.

Hardware Design I Chap. 4 Representative combinational logic

Notes for Chapter 1 of. Scientific Computing with Case Studies

Part VI Function Evaluation

Residue Number Systems. Alternative number representations. TSTE 8 Digital Arithmetic Seminar 2. Residue Number Systems.

UNSIGNED BINARY NUMBERS DIGITAL ELECTRONICS SYSTEM DESIGN WHAT ABOUT NEGATIVE NUMBERS? BINARY ADDITION 11/9/2018

Computer Arithmetic. MATH 375 Numerical Analysis. J. Robert Buchanan. Fall Department of Mathematics. J. Robert Buchanan Computer Arithmetic

Binary addition example worked out

Arithmetic and Error. How does error arise? How does error arise? Notes for Part 1 of CMSC 460

Logic and Computer Design Fundamentals. Chapter 8 Sequencing and Control

Design of Sequential Circuits

Chapter 1: Solutions to Exercises

Adders, subtractors comparators, multipliers and other ALU elements

DSP Design Lecture 2. Fredrik Edman.

0,..., r 1 = digits in radix r number system, that is 0 d i r 1 where m i n 1

Adders, subtractors comparators, multipliers and other ALU elements

Rising 7th Grade Math. Pre-Algebra Summer Review Packet

CME 302: NUMERICAL LINEAR ALGEBRA FALL 2005/06 LECTURE 5. Ax = b.

NUMBERS AND CODES CHAPTER Numbers

convert a two s complement number back into a recognizable magnitude.

Fundamentals of Digital Design

EECS150 - Digital Design Lecture 24 - Arithmetic Blocks, Part 2 + Shifters


Menu. Review of Number Systems EEL3701 EEL3701. Math. Review of number systems >Binary math >Signed number systems

Representing Numbers on the Computer

Combinational Logic Design Arithmetic Functions and Circuits

QUADRATIC PROGRAMMING?

LABORATORY MANUAL MICROPROCESSOR AND MICROCONTROLLER

Lecture 11. Advanced Dividers

Mathematical preliminaries and error analysis

Digital Systems Overview. Unit 1 Numbering Systems. Why Digital Systems? Levels of Design Abstraction. Dissecting Decimal Numbers

Numbering Systems. Computational Platforms. Scaling and Round-off Noise. Special Purpose. here that is dedicated architecture

CSE 20 Discrete Math. Algebraic Rules for Propositional Formulas. Summer, July 11 (Day 2) Number Systems/Computer Arithmetic Predicate Logic

Lecture 2: Number Representations (2)

Carry Look Ahead Adders

EEE Lecture 1 -1-

A crash course in Digital Logic

Chapter 1 Error Analysis

Svoboda-Tung Division With No Compensation

Chapter 2 Basic Arithmetic Circuits

Jim Lambers MAT 610 Summer Session Lecture 2 Notes

Tunable Floating-Point for Energy Efficient Accelerators

Proposal to Improve Data Format Conversions for a Hybrid Number System Processor

EECS150 - Digital Design Lecture 27 - misc2

Computer Architecture, IFE CS and T&CS, 4 th sem. Representation of Integer Numbers in Computer Systems

Unit 1 - Computer Arithmetic

Number Representation and Waveform Quantization

EECS150 - Digital Design Lecture 25 Shifters and Counters. Recap

Four Important Number Systems

Unit II Chapter 4:- Digital Logic Contents 4.1 Introduction... 4

Design and FPGA Implementation of Radix-10 Algorithm for Division with Limited Precision Primitives

Logic Design II (17.342) Spring Lecture Outline

King Fahd University of Petroleum and Minerals College of Computer Science and Engineering Computer Engineering Department

Chapter 7 Logic Circuits

Lecture Notes 7, Math/Comp 128, Math 250

CSCI 255. S i g n e d N u m s / S h i f t i n g / A r i t h m e t i c O p s.

Introduction to Digital Logic Missouri S&T University CPE 2210 Subtractors

EAD 115. Numerical Solution of Engineering and Scientific Problems. David M. Rocke Department of Applied Science

Digital Techniques. Figure 1: Block diagram of digital computer. Processor or Arithmetic logic unit ALU. Control Unit. Storage or memory unit

Formal verification of IA-64 division algorithms

CPS 104 Computer Organization and Programming Lecture 11: Gates, Buses, Latches. Robert Wagner

FLOATING POINT ARITHMETHIC - ERROR ANALYSIS

FLOATING POINT ARITHMETHIC - ERROR ANALYSIS

EECS150 - Digital Design Lecture 21 - Design Blocks

A number that can be written as, where p and q are integers and q Number.

Chapter 1: Preliminaries and Error Analysis

Proposal to Improve Data Format Conversions for a Hybrid Number System Processor

Solutions for Appendix C Exercises

CSE140: Components and Design Techniques for Digital Systems. Decoders, adders, comparators, multipliers and other ALU elements. Tajana Simunic Rosing

DIVISION BY DIGIT RECURRENCE

1 Floating point arithmetic

Transcription:

HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR 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

DO n TIMES ALGORITHM FOR RESTORING DIVISION 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 q 0 TO 0 AND ADD M BACK TO A (RESTORE A); OTHERWISE, SET q 0 TO 1 a n ACCUMULATOR DIVIDEND Q a n-1 a 0 q n-1 q 0 A QUOTIENT SETTING SHIFT LEFT n+1 bit adder ADD/SUBTRACT CONTROL LOGIC 0 m n-1 m 0 DIVISOR M CA - XII - ALU(3) - 3

RESTORING DIVISION ALGORITHM FOR POSITIVE INTEGERS START Q dividend COUNT 0 M divisor A 0 Left-shift A, Q A A-M A-Accumulator M-Divisor Q-Dividend/Quotient A < 0? No Q(0) 1 Yes Q(0) 0 A A+M COUNT= n-1? Yes STOP No COUNT COUNT+1 Quotient in Q Remainder in A CA - XII - ALU(3) - 4

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 A 0 0 0 0 0 Q 1 0 0 0 M 0 0 0 1 1 Shift 0 0 0 0 1 0 0 0 Substract 1 1 1 0 1 Set LSB 1 1 1 1 0 Restore 1 1 0 0 0 0 1 0 0 0 0 Shift 0 0 0 1 0 0 0 0 Subtract 1 1 1 0 1 Set LSB 1 1 1 1 1 0 0 0 0 Restore 1 1 0 0 0 0 0 0 1 0 0 0 0 1 Shift 0 0 1 0 0 0 0 1 Subtract 1 1 1 0 1 Set LSB 0 0 0 0 1 Shift 0 0 0 1 0 0 0 1 0 Subtract 1 1 1 0 1 Set LSB 1 1 1 1 1 Quotient Restore 1 1 0 0 0 1 0 CA - XII - ALU(3) - 5 Remainder Add 2 s complement of divisor First cycle Second cycle Third cycle Fourth cycle

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 Q 0 TO 1; OTHERWISE SET Q 0 TO 0. STEP 2: IF THE SIGN OF A IS 1, ADD M TO A The negative result is restored by adding, i.e., R i ( R i - M ) +M ( 1) and is followed by a shift left one (i.e., multiplication by 2) and subtract: R i+1 2 R i - 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 Start Q dividend COUNT 0 M divisor A 0 Left-shift A, Q A A - M A 0? Yes No Left-shift No A, Q Lef t-shift A, Q Q(0) 1 A A - M Q(0) 0 A A + M COUNT = n - 1? No COUNT COUNT+1 Yes Yes A 0? A A + M Quot ient in Q Remainder in A Stop No CA - XII - ALU(3) - 7

A NONRESTORING DIVISION EXAMPLE Initially A 0 0 0 0 0 Q 1 0 0 0 M 0 0 0 1 1 Shift 0 0 0 0 1 0 0 0 Substract 1 1 1 0 1 Set LSB 11 1 1 0 0 0 0 0 First cycle Shift 1 1 1 0 0 0 0 Add 0 0 0 1 1 Set LSB 1 1 1 1 1 0 0 0 0 0 Second cycle Shift 1 1 1 1 0 0 Add 0 0 0 1 1 Set LSB 0 0 0 0 1 0 0 0 0 0 1 Third cycle Shift 0 0 0 1 0 Subtract 1 1 1 0 1 Set LSB 1 1 1 1 1 Add 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 Remainder 0 01 0 01 0 Quotient Fourth cycle Restore remainder CA - XII - ALU(3) - 8

DIVISION BY REPEATED MULTIPLICATION DIVIDEND x F 0 x F 1 x... Q = DIVISOR x F 0 x F 1 x... DIVISOR = V = 1-y F 0 = 1+y F 1 = 1+y 2 V x F 0 = 1-y 2 V x F 0 x F 1 = (1-y 2 ) (1+y 2 ) = 1-y 4 Multiply top & bottom by (1+y), then (1+y 2 ),... 1 x = 1 1 y 1 = x = (1 + 1 + y 1 y y)(1 + y 2 2 = )(1 + y 1 y 2i 4 (1 )...(1 + + y )(1 + 4 1 y Key idea: 0 Find a simple function (factor) so that by a repeated multiplication the value approaches 1 y 2 i 1 ) y 2 ) CA - XII - ALU(3) - 9

FLOATING-POINT ARITHMETIC (scientific notation) COMPONENTS OF A FLOATING-POINT NUMBER REPRESENTATION - Sign - Exponent ( X e ) (Y e ) - Mantissa (X m ) (Y m ) X = X m * B Xe Examples: + 1.23 * 10 2 9.999 999 x 10 99 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 < E B < 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 32 bits Sign of number 7-bit signed exponent b) Binary normalization example 0 0001001 001... +0.001...x2 9 CA - XII - ALU(3) - 11 M 24-bit fractional mantissa 0 0000111 1... +0.1...x2 7 Normalized version Normalization keeps mantissa at the value of 1 2 <M<1-64<E< 63 Unnormalized value excess - 64 format E =E+ 64 0<E <127 c) Hexadecimal (base 16) normalization example with excess 64-exponent (bias 64) 1 0000011 00000101... -0.00000101...x16 3 Unnormalized value Exception: Underflow E<64 Overflow E>63 - set to 0 1 0000010 0101... -0.0101...x16 2 Normalized version

THE IEEE STANDARD FORMAT Value=(-1) S x(1+m 1 x2-1 +M 2 x2-2 +...+M 23 x2-23 )x2 E7...E1E0-127 Value=(-1) S x(1+m 1 x2-1 +M 2 x2-2 +...+M 52 x2-52 )x2 E10...E1E0-1023 Value=(-1) S x(m 0 +M 1 x2-1 +M 2 x2-2 +...+M 63 x2-63 )x2 E14...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 E 7... E 0 M 1... M 23 S: sign bit (1=negative mantissa, 0=positive mantissa) E7...E0: exponent (8bits, bias 127) M 1...M 23 : mantissa (23 bits plus implicit M 0 =1) CA - XII - ALU(3) - 12 (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 E 10...E 0 M 1... M 52 bias 1023 Temporary real (80 bits) Range of value 3,37x10-4932 < x <1,79x10 +4932, precision 53 bits 79 78 64 63 0 S E 14...E 0 M 1... M 63 bias 16.383

FLOATING-POINT REPRESENTATION IEEE STANDARD (-1) S (1.M) 2 E-bias (e.g., bias = 127) S 8-bit exponent 23-bit mantissa Mantissa with implied 1 24 bits 1 M' < 2 Largest Error 2-24 Precision Bias 127 7 decimal digits Exponent Range -126 E' 127 Smallest Number 2-126 = 1.2 * 10-38 Largest Number (2-2 -23 ) 2 127 = 3.4 * 10 38 Special Cases a) Zero (-1) S * 0 E=0, M=0 b) Infinity (-1) S E=255, M=0 c) Not-a-number E=255, M 0 d) Normalized (-1) S * (1.M) 2 E-127 0 < E < 255 e) Unnormalized (-1) S * (0.M) 2-126 E=1, M 0 (This Number cannot be normalized because a shift to the left would cause an underflow.) Examples S Exponent Mantissa implied 1 0 10000001 1.00...0 = 1.0 * 2 129-127 = 4.0 0 01111111 1.10...0 = 1.5 * 2 127-127 = 1.5 0 10000000 1.010...0 = 1.25 * 2 128-127 = 2.5 CA - XII - ALU(3) - 13 (single precision)

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 10 5 =.127 x 10 6 0.03 x 10 2 =.30 x 10 1 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 Results Guard Bits Comments Chopping (Truncation).0010 110 Biased Error: The result is not rounded..0010 ] 0 - Chopped Bits Normal Rounding.0010 110 Unbiased Error: A one is added to the results.0011] -½ to +½ (LSB) LSB if the result is followed.0011 110 by a 1 guard bit..0100] Von Neumann.0010 110 More Complex Imp. A one bit is set in the.0011] Unbiased Error: results LSB if the result is.0011 110-1 to +1 (LSB) followed by a guard bit..0011] CA - XII - ALU(3) - 16

EQUATIONS FOR FLOATING-POINT OPERATIONS X E, Y E - exponents of X and Y X M, Y M - mantissas of X and Y X E -Y E ADD X + Y = ( X M * 2 + Y M ) * 2 Y E X E -Y E SUB X - Y = ( X M * 2 - Y M ) * 2 Y E X E +Y E MULT X * Y = ( X M * Y M ) * 2 X E -Y E DIV X / Y = ( X M * Y M ) * 2 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

Data bus A floating-point arithmetic unit viewed as two fixed-point arithmetic units Exponent unit Mantissa unit Control bus Control unit Data-processing part of a simple floating-point arithmetic unit Exponent unit Mantissa unit E1 E2 AC MQ DR Adder Adder E Data bus CA - XII - ALU(3) - 20

A combined fixed-point and floating-point arithmetic unit AC MQ DR Exponent adder Mantissa adder E CA - XII - ALU(3) - 21

Floating-point adder of the IBM mainframe Input bus E1 E2 M1 M2 Adder 1 Adder 3 E1 - E2 Zero digit checker Shifter 1 Adder 2 R Shifter 2 Exponent comparison and mantissa alignment Mantissa additionsubtraction Result normalization Output bus E3 M3 CA - XII - ALU(3) - 22

Floating-point addition-subtraction unit E A 32-bit operands E B A: S A, E A, M A B: S B, E B, M B M A M B 7-bit substractor S A S B sign n = E A - E B Combinational CONTROL network ADD/ SUBTRACTION E A E B sign ADD/SUB SWAP Shifter n hex digits to right 24-bit adder/ substractor M of number with smaller E M of number with larger E MPX E X Leading hex zeros detector Normalize and Round 7-bit substractor E - X R: S R, E R, M R CA - XII - ALU(3) - 23 32-bit result R = A ± B

FLOATING-POINT ADDITION-SUBTRACTION ALGORITHM Start Load input operands E1 AC E2 DR XE XM YE YM Compare exponents Equalize exponents E E1 - E2 E < 0? Yes Right-shift AC E E + 1 No E > 0? Yes Right-shift DR E E + 1 No Add-subtract mantissas Yes Add instruction? AC AC + DR E max ( E1, E2) No AC AC - DR E 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 a zero mantissa in the CA - XII - ALU(3) - 24

Mantissa overflowunderflow adjustment Zero result adjustment Result normalization No 1 AC overflow or underflow? AC = zero? No AC normalized? Left - shift AC E E - 1 Yes Yes E Right-shift AC E E + 1 00...0 Exponent overflow? Yes No No Exponent underflow? Yes Set error flag Stop CA - XII - ALU(3) - 25

PIPELINED VERSION OF THE FLOATING-POINT ADDER Input bus Exponent comparison E1 E2 M1 M2 Adder 1 Mantissa alignment E4 E5 M4 M5 Shifter 1 E6 M6 M7 Mantissa addition Adder 2 Normalization E7 Adder 3 Zero digit checker R Shifter 2 E3 M3 Output bus 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 c 1 c 2 m Z Z = c c X Y + 1 2 c c X 1 2 + c c Y 1 2 + c 1 c 2 X Y + c 1 c 2 X Y + c c 1 2 X AND OR 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) D 0 1 SNA SZA IR Instruction decoder Count Enable PC Program Counter CA - XII - ALU(3) - 28

TEST FOR A>B (or A<B) AND A=B (or nonequality A B) A Serial Shift B B B A A A A B B A B.. + A B + A B 0 S R S R A > B Q Q A < B A B Q Q A = B Reset Q = 1 CA - XII - ALU(3) - 29