CS251 - Computer Organization and Design - Spring 2008

Lecture 14 - Putting It Together


Practical Details

  1. Assignment 3, question 2
  2. Read 5.1 to 5.4, C.2

Floating Point Numbers

Representation

Sign, exponent, significand (mantissa)

Value is sign * (1 + significand) * 2^(exponent - bias)

Distribution

Clustering matters in practice

Exponent |    smallest |    largest |     delta
================================================
   bias  |          -2 |          2 |    2^(-23) 
      0  |   -2^(-127) |   2^(-127) |   2^(-151)
    256  |    -2^(129) |    2^(129) |    2^(105)
================================================

Exercises for the reader:

  1. Check the values in this table.
  2. Plot on a number line all 13 values for a 2-bit exponent and a 2-bit significand

Double Precision

64 bit number

And there is even extended precision

What goes wrong

  1. Addition
  2. Multiplication/division

Importance of NaN.

Where are these problems observed?

Algorithms for Addition and Multiplication

Addition/Subtraction

  1. Equalize exponents
    1. Shift right significand of number with smaller exponent
    2. Add 1 to its exponent
    3. Until exponents are equal
  2. Add/subtract significands
    1. Put one bit bit 23
    2. Use sign bit top create TCIs
    3. Sign extend
    4. Add as TCIs: extra precision not needed
  3. Normalize result
    1. Shift significand left or right
    2. Add 1 to or subtract 1 from exponent
    3. Until significand is normalized

Multiplication (Division)

  1. Add (subtract) exponents
  2. Multiply significands
  3. Normalize result

Pathologies

Exponent can overflow or underflow.

Significand can underflow

NaN (Not a Number)

Possible values

  1. Too large to represent
  2. Too small to represent
  3. Infinity
  4. Underflow

Single-Cycle Processor

Datapath & control for a mini-MIPS (MIPS = Multiprocessor without Interlocked Pipeline Stages). Operations

  1. load and store
  2. add, subtract, AND, OR, set on less than
  3. jump and conditional branch

which is enough to write just about any program.

Exercise: What is missing? (Answer. Shift)

MIPS Architecture

32 32-bit registers, numbered 0 to 31

Memory of 32-bit words

All instructions are 32-bit

Instructions

Load & store

  1. addressing modes
  2. load: lw $s1, 100($s2) - load into register 1 whatever is 100 bytes from the value in register 2
  3. store: sw $s1, 100($s2) - store the contents of register 1 into the memory at 100 bytes from the value in register 2

Add, subtract, AND, OR, set

  1. add: add $s1, $s2, $s3 - add the values in regusters 2 and 3 and put the result in register 1

Conditional branch

  1. branch on equal: beq $s0, $s1, 10 - is the value in register 0 equals the value in register 1 set PC <= PC + 4 + 40

Unconditional branch

  1. jump: j 1000 - PC <= 4000

MIPS Functional Units

  1. Program counter (PC) used to fetch instruction from instruction memory
  2. Instruction used to fetch register operands from register file
  3. Instruction plus registers used to fetch memory operands from data memory
  4. ALU computes result
  5. Result put into register file or data memory

Return to: