floating point operations
play

FLOATING POINT OPERATIONS Mahdi Nazm Bojnordi Assistant Professor - PowerPoint PPT Presentation

FLOATING POINT OPERATIONS Mahdi Nazm Bojnordi Assistant Professor School of Computing University of Utah CS/ECE 3810: Computer Organization Overview Notes Homework 6 will be posted tonight n Deadline: Mar. 5 th This lecture


  1. FLOATING POINT OPERATIONS Mahdi Nazm Bojnordi Assistant Professor School of Computing University of Utah CS/ECE 3810: Computer Organization

  2. Overview ¨ Notes ¤ Homework 6 will be posted tonight n Deadline: Mar. 5 th ¨ This lecture ¤ Floating point operations ¤ Basics of logic design

  3. Recall: Floating Point Addition ¨ Numbers maintain only 4 decimal digits and 2 exponent digits n 9.999 x 10 1 + 1.610 x 10 -1 ¤ Convert to the larger exponent n 9.999 x 10 1 + 0.016 x 10 1 ¤ Add n 10.015 x 10 1 ¤ Normalize n 1.0015 x 10 2 ¤ Check for overflow/underflow ¤ Round n 1.002 x 10 2 ¤ Re-normalize

  4. Recall: Floating Point Addition ¨ Numbers maintain only 4 decimal digits and 2 exponent digits n 9.999 x 10 1 + 1.610 x 10 -1 ¤ Convert to the larger exponent n 9.999 x 10 1 + 0.016 x 10 1 ¤ Add n 10.015 x 10 1 ¤ Normalize n 1.0015 x 10 2 If we had more fraction bits, ¤ Check for overflow/underflow these errors would be minimized ¤ Round n 1.002 x 10 2 ¤ Re-normalize

  5. Floating Point Addition ¨ Numbers maintain only 4 binary digits and 2 exponent digits n 1.010 x 2 1 + 1.100 x 2 3 ¤ Convert to the larger exponent n 0.0101 x 2 3 + 1.100 x 2 3 ¤ Add n 1.1101 x 2 3 ¤ Normalize n 1.1101 x 2 3 ¤ Check for overflow/underflow

  6. Floating Point Addition ¨ Numbers maintain only 4 binary digits and 2 exponent digits n 1.010 x 2 1 + 1.100 x 2 3 ¤ Convert to the larger exponent n 0.0101 x 2 3 + 1.100 x 2 3 ¤ Add n 1.1101 x 2 3 ¤ Normalize n 1.1101 x 2 3 ¤ Check for overflow/underflow ¤ IEEE 754 format (32-bit) 0 10000010 11010000000000000000000

  7. Floating Point Addition ¨ Example: add the following two single-precision floating point numbers. A: B: Steps: 1. Convert to larger exponent 2. Add 3. Normalize 4. Round

  8. Floating Point Addition ¨ Example: add the following two single-precision floating point numbers. A: B: E A = 128 M A = 1.11 two E B = 131 M B = 1.010011 two E A = 131 M A = 0.00111 two E B = 131 M B = 1.010011 two E A = E B = 131 M A + M B = 0.00111 two + 1.010011 two = 1.100001 two A + B:

  9. Floating Point Multiplication ¨ Similar steps are required for multiplication ¤ Compute exponent n Need to remove bias ¤ Multiply significands n May end up unnormalized ¤ Normalize n Shift the point ¤ Round n Fit in the number of bits ¤ Assign sign n Compute sign

  10. Floating Point Multiplication ¨ Example: multiply the following two single-precision floating point numbers. A: B: Steps: 1. Compute exponent 2. Multiply significands 3. Normalize 4. Round 5. Compute sign

  11. Floating Point Multiplication ¨ Example: multiply the following two single-precision floating point numbers. A: B: E A = 128 M A = 1.11 two E B = 131 M B = 1.010011 two E AxB = 128 + 131 – 127 = 132 M AxB = 10.01000101 two E AxB = 133 M AxB = 1.001000101 two A x B:

  12. Floating Point Instructions ¨ MIPS employs separate registers for floating point ¤ 32-bit registers: $f0, $f1, …, $f31. ¤ Each register represents a single-precision number ¤ Register pairs are used for double-precision n Example: $f0 refers to {$f0, $f1}

  13. Floating Point Instructions ¨ Load/Store instructions by coprocessor 1 (c1) ¤ Still use integer registers for address computation ¨ Comparison instructions ¤ Set an internal bit (cond) to be inspected by branch instructions

  14. Code Example ¨ Convert a temperature in Fahrenheit to Celsius float f2c(float fahr) { return ((5.0/9.0)*(fahr–32.0)); } ¤ Assume that constants are stored in global memory

  15. Code Example ¨ Convert a temperature in Fahrenheit to Celsius float f2c(float fahr) { return ((5.0/9.0)*(fahr–32.0)); } ¤ Assume that constants are stored in global memory $gp const9 Memory: const5

  16. Code Example ¨ Convert a temperature in Fahrenheit to Celsius float f2c(float fahr) { return ((5.0/9.0)*(fahr–32.0)); } ¤ Assume that constants are stored in global memory f2c: mtc1 $a0, $f12 lwc1 $f16, const5($gp) lwc1 $f18, const9($gp) $gp div.s $f16, $f16, $f18 const9 lwc1 $f18, const32($gp) Memory: sub.s $f18, $f12, $f18 mul.s $f0, $f16, $f18 jr $ra const5

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend