Csce 212 chapter 3 arithmetic for computers
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

CSCE 212 Chapter 3: Arithmetic for Computers PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on
  • Presentation posted in: General

CSCE 212 Chapter 3: Arithmetic for Computers. Instructor: Jason D. Bakos. Lecture Outline. Review of topics from 211 Overflow Binary Multiplication Binary Division IEEE 754 Floating Point Floating-Point Addition and Multiplication MIPS Floating-Point. Review.

Download Presentation

CSCE 212 Chapter 3: Arithmetic for Computers

An Image/Link below is provided (as is) to download presentation

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


CSCE 212Chapter 3: Arithmetic for Computers

Instructor: Jason D. Bakos


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Review

  • Binary and hex representation

  • Converting between binary/hexidecimal and decimal

  • Two’s compliment representation

  • Sign extention

  • Binary addition and subtraction


Addition


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Overflow

  • Overflow for unsigned addition

    • Carry-out

  • Overflow for unsigned subtraction

    • No carry-out

  • Overflow for signed

  • Overflow causes exception

    • Go to handler address 80000080

    • Registers BadVAddr, Status, Cause, and EPC used to handle

  • SPIM has a simple interrupt handler built-in that deals with interrupts


Overflow

  • Test for signed ADD overflow:

    addu$t0,$t1,$t2# sum but don’t trap

    xor$t3,$t1,$t2# check if signs differ

    slt$t3,$t3,$zero# $t3=1 if signs differ

    bne$t3,$zero, No_OVF

    xor$t3,$t0,$t1# signs of operands same, compare sign of result

    slt$t3,$t3,$zero

    bne$t3,$zero,OVF

  • Test for unsigned ADD overflow:

    addu$t0,$t1,$t2# sum but don’t trap

    nor$t3,$t1,$zero# invert bits of $t1 (-$t1–1), 232-$t1-1

    sltu$t3,$t3,$t2# 232-$t1-1 < $t2, 232-1 < $t1+$t2

    bne$t3,$zero,OVF


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Binary Multiplication

1000

x 1001

1000

0000

0000

1000

1001000

multiplicand

multiplier

product


Binary Multiplication


Binary Multiplication

works with signed but must sign extend shifts


Multiplication Example


Faster Multiplication


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Binary Division


Binary Division


Binary Division

For signed, convert to positive and negate quotient if signs disagree


Division Example


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Fixed-Point

  • Need a way to represent fractional numbers in binary

  • Fixed-point

    • Assume a decimal point at some location in a value:

    • Example:

      • 6-bit (unsigned) value

      • = 1x21 + 0x20 + 1x2-1 + 1x2-2 + 0x2-3 + 1x2-4

      • For signed, use two’s compliment

        • Range = [-2N-1/2M, 2N-1/2M – 1/2M]

        • For above, [-25/24, 25/24-1/24]  [-2,2-1/16]


Precision

  • Assume we have 4 binary digits to the right of the point…

    • Convert .8749 to binary…

    • .1101 = .8125

    • Actual value – represented value = .0624 (bound by 2-4)


Floating Point

  • Floating point represent values that are fractional or too large

    • Expressed in scientific notation (base 2) and normalized

    • 1.xxxx2 * 2yyyy

    • xxxx is the significand (fraction) and yyyy is the exponent

    • First bit of the significand is implicit

    • Exponent bias is 127 for single-precision and 1023 for double-precision

  • IEEE 754 standard

    • Single-precision (2x10-38 to 2x1038)

      • bit 31: sign of significand

      • bit 30..23 (8) exponent

      • bit 22..0 (23) significand

    • Double-precision (2x10-308 to 2x10308)

      • Significand is 52 bits and the exponent is 11 bits

  • Exponent => range, significand => precision

  • To represent:

    • zero: 0 in the exponent and significand

    • +/- infinity: all ones in exponent, 0 in significand

    • NaN: all ones in exponent, nonzero signficand


Conversion

  • To convert from decimal to binary floating-point:

    • Significand:

      • Use the iterative method to convert the fractional part to binary

      • Convert the integer part to binary using the “old-fashioned” method

      • Shift the decimal point to the left until the number is normalized

      • Drop the leading 1, and set the exponent to be the number of positions you shifted the decimal point

      • Adjust the exponent for bias (127/1023)

  • When you max out the exponent, denormalize the significand


IEEE 754


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


Floating-Point Addition

  • Match exponents for both operands by un-normalizing one of them

    • Match to the exponent of the larger number

  • Add significands

  • Normalize result

  • Round significand


Example

  • Assume 11-bit limited representation:

    • 1 bit sign bit

    • 6 bit significand (precision 2-6 = 0.0156)

    • 4 bit exponent (bias 7)

      • range 1 x 2-7 (7.8 x 10-3) to 1.111111 x 28 (5.1 x 102)

      • (assuming no denormalized numbers)


Accurate Arithmetic

  • Keep 2 additional bits to the right during intermediate computation

    • Guard, round, and sticky

  • Worst case for rounding:

    • Actual number is halfway between two floating point representations

    • Accuracy is measured as number of least-significant error bits (units in the last place (ulp))

  • IEEE 754 guarantees that the computer is within .5 ulp (using guard and round)


Floating-Point Addition Hardware


Floating-Point Multiplication

  • Un-bias and add exponents

  • Multiply significands

    • Move point

  • Re-normalize

  • Set sign based on sign of operands


Lecture Outline

  • Review of topics from 211

  • Overflow

  • Binary Multiplication

  • Binary Division

  • IEEE 754 Floating Point

  • Floating-Point Addition and Multiplication

  • MIPS Floating-Point


MIPS Floating-Point

  • $f0 - $f31 coprocessor registers

    • Used in pairs for doubles

  • Arithmetic: [add | sub | mul | div].[s | d]

  • Data transfer: lwc1, swc1 (32-bits only)

  • Conditional branch:

    • c.lt.[s | d] (compare less-than)

    • bclt (branch if true), bclf (branch if false)

  • Register transfer:

    • mfc1, mtc1 (move to/from coprocessor 1, dest. is first)


  • Login