340 likes | 446 Views
ELEC 5200-001/6200-001 Computer Architecture and Design Spring 2008 Symbol Representation and Floating Point Numbers (Chapters 2 and 3). Vishwani D. Agrawal James J. Danaher Professor Department of Electrical and Computer Engineering Auburn University, Auburn, AL 36849
E N D
ELEC 5200-001/6200-001Computer Architecture and DesignSpring 2008Symbol Representation and Floating Point Numbers (Chapters 2 and 3) Vishwani D. Agrawal James J. Danaher Professor Department of Electrical and Computer Engineering Auburn University, Auburn, AL 36849 http://www.eng.auburn.edu/~vagrawal vagrawal@eng.auburn.edu ELEC 5200-001/6200-001 Lecture 13
Symbol Representation • Early versions (60s and 70s) • Six-bit binary code (CDC) • EBCDIC – extended binary coded decimal interchange code (IBM) • Presently used – • ASCII – American standard code for information interchange – byte (8 bit) code specified by American National Standards Institute (ANSI) • Unicode – 16 bit code and an extended 32 bit version ELEC 5200-001/6200-001 Lecture 13
ASCII • Each byte pattern represents a character (symbol) • Convenient to write in hexadecimal, e.g., • 00000000 0ten00hex null • 01000001 65ten 41hex A • 01100001 97ten 61hex a • See Figure 2.21, page 91 • C program – string – terminating with a null byte 01000101 01000011 01000101 00000000 69ten or 45hex 67ten or43hex 69ten or 45hex 00ten or 00hex E C E ELEC 5200-001/6200-001 Lecture 13
MIPS: load byte, store byte • lb $t2, 0($t1) # read byte from memory and place in right-most 8 bits of $t2 • sb $t2, 0($t3) # write byte to memory from right-most 8 bits of $t2 • Examine the string copy procedure (C code) and the corresponding MIPS assembly code on pages 92-93. ELEC 5200-001/6200-001 Lecture 13
Integers and Real Numbers • Integers: the universe is infinite but discrete • No fractions • No numbers between consecutive integers, e.g., 5 and 6 • A countable (finite) number of items in a finite range • Referred to as fixed-point numbers • Real numbers – the universe is infinite and continuous • Fractions represented by decimal notation • Rational numbers, e.g., 5/2 = 2.5 • Irrational numbers, e.g., 22/7 = 3.14159265 . . . • Infinite numbers exist even in the smallest range • Referred to as floating-point numbers ELEC 5200-001/6200-001 Lecture 13
Wide Range of Numbers • A large number: 976,000,000,000,000 = 9.76 × 1014 • A small number: 0.0000000000000976 = 9.76 × 10 –14 ELEC 5200-001/6200-001 Lecture 13
Scientific Notation • Decimal numbers • 0.513×105, 5.13×104 and 51.3×103 are written in scientific notation. • 5.13×104 is the normalized scientific notation. • Binary numbers • Base 2 • Binary point – multiplication by 2 moves the point to the right. • Normalized scientific notation, e.g., 1.0two×2 –1 ELEC 5200-001/6200-001 Lecture 13
Floating Point Numbers • General format ±1.bbbbbtwo×2eeee or (-1)S × (1+F) × 2E • Where • S = sign, 0 for positive, 1 for negative • F = fraction (or mantissa) as a binary integer, 1+F is called significand • E = exponent as a binary integer, positive or negative (two’s complement) ELEC 5200-001/6200-001 Lecture 13
Binary to Decimal Conversion Binary (-1)S (1.b1b2b3b4) × 2E Decimal (-1)S × (1 + b1×2-1 + b2×2-2 + b3×2-3 + b4×2-4) × 2E Example: -1.1100 × 2-2 (binary) = - (1 + 2-1 + 2-2) ×2-2 = - (1 + 0.5 + 0.25)/4 = - 1.75/4 = - 0.4375 (decimal) ELEC 5200-001/6200-001 Lecture 13
MIPS Single Precision • – 128 ≤ E ≤ 127, Max |E| ~ 127, 2127 ~ 1038 • Range of magnitudes, 2×10-38 to 2×1038 • Overflow: Exponent requiring more than 8 bits. Number can be positive or negative. • Underflow: Fraction requiring more than 23 bits. Number can be positive or negative. S E: 8-bit Exponent F: 23-bit Fraction bits 23-30 bits 0-22 bit 31 ELEC 5200-001/6200-001 Lecture 13
MIPS Double Precision • Max |E| ~ 1023, 21023 ~ 10308 • Range of magnitudes, 2×10-308 to 2×10308 • Overflow: Exponent requiring more than 11 bits. Number can be positive or negative. • Underflow: Fraction requiring more than 52 bits. Number can be positive or negative. S E: 11-bit Exponent F: 52-bit Fraction + bits 20-30 bits 0-19 bit 31 Continuation of 52-bit Fraction bits 0-31 ELEC 5200-001/6200-001 Lecture 13
William Morton (Velvel) Kahan Architect of the IEEE floating point standard 1989 Turing Award Citation: For his fundamental contributions to numerical analysis. One of the foremost experts on floating-point computations. Kahan has dedicated himself to "making the world safe for numerical computations." b. 1933, Canada Professor of Computer Science, UC-Berkeley ELEC 5200-001/6200-001 Lecture 13
Numbers in 32-bit Formats • Two’s complement integers • Floating point numbers • Ref: W. Stallings, Computer Organization and Architecture, Sixth Edition, Upper Saddle River, NJ: Prentice-Hall. Expressible numbers -231 0 231-1 Positive underflow Negative underflow Positive zero – ∞ Negative zero + ∞ Expressible positive numbers Expressible negative numbers Negative Overflow Positive Overflow -2-127 0 2-127 - (2 – 2-23)×2128 (2 – 2-23)×2128 ELEC 5200-001/6200-001 Lecture 13
IEEE 754 Floating Point Standard • Biased exponent: true exponent range [-126,127] is changed to [1, 254]: • Biased exponent is an 8-bit positive binary integer. • True exponent obtained by subtracting 127ten or 01111111two • First bit of significand is always 1: ± 1.bbbb . . . b × 2E • 1 before the binary point is implicitly assumed. • Significand field represents 23 bit fraction after the binary point. • Significand range is [1, 2), to be exact [1, 2 – 2-23] ELEC 5200-001/6200-001 Lecture 13
IEEE 754 FP Standard (p. 194) E: exponent, F: fraction, NaN: not a number, * see page 217 ELEC 5200-001/6200-001 Lecture 13
Examples Biased exponent (0-255), bias 127 (01111111) to be subtracted 1.1010001 × 210100 = 0 10010011 10100010000000000000000 = 1.6328125 × 220 -1.1010001 × 210100 = 1 10010011 10100010000000000000000 = -1.6328125 × 220 1.1010001 × 2-10100 = 0 01101011 10100010000000000000000 = 1.6328125 × 2-20 -1.1010001 × 2-10100 = 1 01101011 10100010000000000000000 = -1.6328125 × 2-20 1.0 0.5 0.125 0.0078125 1.6328125 8-bit biased exponent 107 – 127 = – 20 23-bit Fraction (F) of significand Sign bit ELEC 5200-001/6200-001 Lecture 13
Example: Conversion to Decimal normalized E F • Sign bit is 1, number is negative • Biased exponent is 27+20 = 129 • The number is bits 23-30 bits 0-22 Sign bit S 1 10000001 01000000000000000000000 (-1)S × (1 + F) × 2(exponent – bias) = (-1)1 × (1 + F) × 2(129 – 127) = - 1 × 1.25 × 22 = - 1.25 × 4 = - 5.0 ELEC 5200-001/6200-001 Lecture 13
IEEE 754 Floating Point Format • Floating point numbers Positive underflow Negative underflow – ∞ + ∞ Expressible positive numbers Expressible negative numbers Negative Overflow Positive Overflow -2-126 0 2-126 - (2 – 2-23)×2127 (2 – 2-23)×2127 ELEC 5200-001/6200-001 Lecture 13
Positive Zero in IEEE 754 • + 1.0 × 2-127 • Smallest positive number in single-precision IEEE 754 standard. • Interpreted as positive zero. • True exponentless than -126 is positive underflow; can be regarded as zero. 00000000000000000000000000000000 Biased exponent Fraction ELEC 5200-001/6200-001 Lecture 13
Negative Zero in IEEE 754 • - 1.0 × 2-127 • Smallest negative number in single-precision IEEE 754 standard. • Interpreted as negative zero. • True exponent less than -126 is negative underflow; may be regarded as 0. 10000000000000000000000000000000 Biased exponent Fraction ELEC 5200-001/6200-001 Lecture 13
Positive Infinity in IEEE 754 • + 1.0 × 2128 • Largest positive number in single-precision IEEE 754 standard. • Interpreted as + ∞ • If true exponent = 128 and fraction ≠ 0, then the number is greater than ∞. It is called “not a number” or NaN and may be interpreted as ∞. 01111111100000000000000000000000 Biased exponent Fraction ELEC 5200-001/6200-001 Lecture 13
Negative Infinity in IEEE 754 • -1.0 × 2128 • Smallest negative number in single-precision IEEE 754 standard. • Interpreted as - ∞ • If true exponent = 128 and fraction ≠ 0, then the number is less than - ∞. It is called “not a number” or NaN and may be interpreted as - ∞. 11111111100000000000000000000000 Biased exponent Fraction ELEC 5200-001/6200-001 Lecture 13
Addition and Subtraction 0. Zero check - Change the sign of subtrahend, i.e., convert to summation - If either operand is 0, the other is the result 1. Significand alignment: right shift significand of smaller exponent until two exponents match. 2. Addition: add significands and report exception if overflow occurs. If significand = 0, return result as 0. 3. Normalization - Shift significand bits to normalize. - report overflow or underflow if exponent goes out of range. 4. Rounding ELEC 5200-001/6200-001 Lecture 13
Example (4 Significant Fraction Bits) • Subtraction: 0.5ten – 0.4375ten • Step 0: Floating point numbers to be added 1.000two× 2 –1 and –1.110two× 2 –2 • Step 1: Significand of lesser exponent is shifted right until exponents match –1.110two× 2 –2 → – 0.111two× 2 –1 • Step 2: Add significands, 1.000two + ( – 0.111two) Result is 0.001two× 2 –1 01000 +11001 00001 2’s complement addition, one bit added for sign ELEC 5200-001/6200-001 Lecture 13
Example (Continued) • Step 3: Normalize, 1.000two× 2– 4 No overflow/underflow since 127 ≥ exponent ≥ –126 • Step 4: Rounding, no change since the sum fits in 4 bits. 1.000two× 2– 4 = (1+0)/16 = 0.0625ten ELEC 5200-001/6200-001 Lecture 13
IEEE 754 “guard” and “round” Bits • Two extra bits, called guard and round, on the right are used for all intermediate additions. • Illustration by decimal addition: • Consider 3 significant digits • Use one guard digit and one round digit 2.34 × 102 +2.56 × 100 = 2.3400 × 102 +0.0256 × 102 With guard/round digits Without guard/round digits 2.3400 2.34 + 0.0256+ 0.02 2.3656 2.36 Result: 2.37 × 102 Result: 2.36 × 102 ELEC 5200-001/6200-001 Lecture 13
FP Multiplication: Basic Idea • Separate sign • Add exponents • Multiply significands • Normalize, round, check overflow/underflow • Replace sign ELEC 5200-001/6200-001 Lecture 13
FP Multiplication: Step 0 Multiply, X × Y X = 0? Y = 0? no no Steps 1 - 5 yes yes Z = 0 Return ELEC 5200-001/6200-001 Lecture 13
FP Multiplication Illustration • Multiply 0.5ten and – 0.4375ten (answer = – 0.21875ten) or • Multiply 1.000two×2–1 and –1.110two×2–2 • Step 1: Add exponents –1 + (–2) = – 3 • Step 2: Multiply significands 1.000 ×1.110 0000 1000 1000 1000 1110000 Product is 1.110000 ELEC 5200-001/6200-001 Lecture 13
FP Mult. Illustration (Cont.) • Step 3: • Normalization: If necessary, shift significand right and increment exponent. Normalized product is 1.110000 × 2 –3 • Check overflow/underflow: 127 ≥ exponent ≥ –126 • Step 4: Rounding: 1.110 × 2 –3 • Step 5: Sign: Operands have opposite signs, Product is –1.110 × 2 –3 (Decimal value = – (1+0.5+0.25)/8 = – 0.21875ten) ELEC 5200-001/6200-001 Lecture 13
FP Division: Basic Idea • Separate sign. • Check for zeros and infinity. • Subtract exponents. • Divide significands. • Normalize and detect overflow/underflow. • Perform rounding. • Replace sign. ELEC 5200-001/6200-001 Lecture 13
MIPS Floating Point Instructions • 32 floating point registers, $f0, . . . , $f31 • FP registers used in pairs for double precision; $f0 denotes double precision content of $f0,$f1 • Data transfer instructions: • lwc1 $f1, 100($s2) # $f1←Mem[$s2+100] • swc1 $f1, 100($s2) # Mem[$s2+100]←$f1 • Arithmetic instructions: (xxx=add, sub, mul, div) • xxx.s single precision • xxx.d double precision ELEC 5200-001/6200-001 Lecture 13
MIPS Floating Point Instructions • Conditional branch instructions: • bc1t cc offset # if(condition cc is true) go to PC + 4 + 4×offset • bc1f cc offset # if(condition cc is false) go to PC + 4 + 4×offset • c.xx.s cc $f2, $f4 # xx=eq, lt, le, gt, ge, neq where cc = 0 or 1, is a condition flag ELEC 5200-001/6200-001 Lecture 13
Recommended • Visit www.computerhistory.org to learn about the developments in computers. Many names and events in your book and those discussed in the class appear there. • When in Silicon Valley, visit the Computer History Museum (Route 101, Mountain View, CA). ELEC 5200-001/6200-001 Lecture 13