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


  • 110 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 212 chapter 3 arithmetic for computers

CSCE 212Chapter 3: Arithmetic for Computers

Instructor: Jason D. Bakos


Lecture outline

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

Review

  • Binary and hex representation

  • Converting between binary/hexidecimal and decimal

  • Two’s compliment representation

  • Sign extention

  • Binary addition and subtraction


Addition

Addition


Lecture outline1

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

  • 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


Overflow1

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 outline2

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

Binary Multiplication

1000

x 1001

1000

0000

0000

1000

1001000

multiplicand

multiplier

product


Binary multiplication1

Binary Multiplication


Binary multiplication2

Binary Multiplication

works with signed but must sign extend shifts


Multiplication example

Multiplication Example


Faster multiplication

Faster Multiplication


Lecture outline3

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 division1

Binary Division


Binary division2

Binary Division

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


Division example

Division Example


Lecture outline4

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

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

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

  • 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

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

IEEE 754


Lecture outline5

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

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

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

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 Addition Hardware


Floating point multiplication

Floating-Point Multiplication

  • Un-bias and add exponents

  • Multiply significands

    • Move point

  • Re-normalize

  • Set sign based on sign of operands


Lecture outline6

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

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