Computer Architecture Chapter 3. Fall 2005 Department of Computer Science Kent State University

Similar documents
Chapter 3: Arithmetic for Computers

Chapter 2 Float Point Arithmetic. Real Numbers in Decimal Notation. Real Numbers in Decimal Notation

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

Floating Point January 24, 2008

Systems I. Floating Point. Topics IEEE Floating Point Standard Rounding Floating Point Operations Mathematical properties

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

Computer Organization: A Programmer's Perspective

Floating Point (with contributions from Dr. Bin Ren, William & Mary Computer Science)

System Programming CISC 360. Floating Point September 16, 2008

Floating Point Puzzles The course that gives CMU its Zip! Floating Point Jan 22, IEEE Floating Point. Fractional Binary Numbers.

Giving credit where credit is due

Giving credit where credit is due

Chapter Three. Arithmetic

CS429: Computer Organization and Architecture

Signed Multiplication Multiply the positives Negate result if signs of operand are different

Floating point. Today. IEEE Floating Point Standard Rounding Floating Point Operations Mathematical properties Next time.

Floating Point. CSE 238/2038/2138: Systems Programming. Instructor: Fatma CORUT ERGİN. Slides adapted from Bryant & O Hallaron s slides

Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition. Carnegie Mellon

Floating Point : Introduction to Computer Systems 4 th Lecture, May 25, Instructor: Brian Railing. Carnegie Mellon

Foundations of Computer Systems

Today: Floating Point. Floating Point. Fractional Binary Numbers. Fractional binary numbers. bi bi 1 b2 b1 b0 b 1 b 2 b 3 b j

The course that gives CMU its Zip! Floating Point Arithmetic Feb 17, 2000

Floating point. Today! IEEE Floating Point Standard! Rounding! Floating Point Operations! Mathematical properties. Next time. !

Representing and Manipulating Floating Points

Arithmetic for Computers

Data Representation Floating Point

Arithmetic for Computers. Hwansoo Han

Data Representation Floating Point

COMP2611: Computer Organization. Data Representation

Representing and Manipulating Floating Points. Computer Systems Laboratory Sungkyunkwan University

Data Representation Floating Point

Representing and Manipulating Floating Points. Jo, Heeseung

Representing and Manipulating Floating Points

MIPS Integer ALU Requirements

Floating Point Numbers

Floating Point Numbers

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

Representing and Manipulating Floating Points

Floating Point Numbers

Number Systems and Their Representations

Computer Architecture Set Four. Arithmetic

COMPUTER ORGANIZATION AND DESIGN

CS 33. Data Representation (Part 3) CS33 Intro to Computer Systems VIII 1 Copyright 2018 Thomas W. Doeppner. All rights reserved.

Chapter 3. Arithmetic Text: P&H rev

Floating Point Numbers. Lecture 9 CAP

Lecture 8: Addition, Multiplication & Division

Floating Point Arithmetic

ECE260: Fundamentals of Computer Engineering

Numeric Encodings Prof. James L. Frankel Harvard University

Chapter 3 Arithmetic for Computers

Review: MIPS Organization

Chapter 3 Arithmetic for Computers (Part 2)

Thomas Polzer Institut für Technische Informatik

CO212 Lecture 10: Arithmetic & Logical Unit

Floating-Point Data Representation and Manipulation 198:231 Introduction to Computer Organization Lecture 3

Chapter 3 Arithmetic for Computers

Floating Point. CSE 351 Autumn Instructor: Justin Hsia

ECE232: Hardware Organization and Design

Floating Point. The World is Not Just Integers. Programming languages support numbers with fraction

Lecture 13: (Integer Multiplication and Division) FLOATING POINT NUMBERS

Module 2: Computer Arithmetic

Divide: Paper & Pencil

Computer Architecture and IC Design Lab. Chapter 3 Part 2 Arithmetic for Computers Floating Point

CS/COE0447: Computer Organization

CS/COE0447: Computer Organization

Floating-point Arithmetic. where you sum up the integer to the left of the decimal point and the fraction to the right.

3.5 Floating Point: Overview

Floating Point. CSE 351 Autumn Instructor: Justin Hsia

Outline. EEL-4713 Computer Architecture Multipliers and shifters. Deriving requirements of ALU. MIPS arithmetic instructions

Floa.ng Point : Introduc;on to Computer Systems 4 th Lecture, Sep. 10, Instructors: Randal E. Bryant and David R.

Computer Architecture. Chapter 3: Arithmetic for Computers

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

CS 261 Fall Floating-Point Numbers. Mike Lam, Professor.

Floating Point. CSE 351 Autumn Instructor: Justin Hsia

The ALU consists of combinational logic. Processes all data in the CPU. ALL von Neuman machines have an ALU loop.

ECE331: Hardware Organization and Design

CS 261 Fall Floating-Point Numbers. Mike Lam, Professor.

Integers and Floating Point

Number Systems and Computer Arithmetic

The Sign consists of a single bit. If this bit is '1', then the number is negative. If this bit is '0', then the number is positive.

C NUMERIC FORMATS. Overview. IEEE Single-Precision Floating-point Data Format. Figure C-0. Table C-0. Listing C-0.

EEC 483 Computer Organization

Arithmetic. Chapter 3 Computer Organization and Design

ECE331: Hardware Organization and Design

ecture 25 Floating Point Friedland and Weaver Computer Science 61C Spring 2017 March 17th, 2017

CS 101: Computer Programming and Utilization

CENG3420 L05: Arithmetic and Logic Unit

Floating Point Arithmetic

Inf2C - Computer Systems Lecture 2 Data Representation

Math in MIPS. Subtracting a binary number from another binary number also bears an uncanny resemblance to the way it s done in decimal.

CPS 104 Computer Organization and Programming

Chapter 3 Arithmetic for Computers. ELEC 5200/ From P-H slides

EE260: Logic Design, Spring n Integer multiplication. n Booth s algorithm. n Integer division. n Restoring, non-restoring

CSCI 402: Computer Architectures. Arithmetic for Computers (3) Fengguang Song Department of Computer & Information Science IUPUI.

Tailoring the 32-Bit ALU to MIPS

CENG 3420 Lecture 05: Arithmetic and Logic Unit

5DV118 Computer Organization and Architecture Umeå University Department of Computing Science Stephen J. Hegner. Topic 3: Arithmetic

Number Systems. Decimal numbers. Binary numbers. Chapter 1 <1> 8's column. 1000's column. 2's column. 4's column

Homework 3. Assigned on 02/15 Due time: midnight on 02/21 (1 WEEK only!) B.2 B.11 B.14 (hint: use multiplexors) CSCI 402: Computer Architectures

CO Computer Architecture and Programming Languages CAPL. Lecture 13 & 14

Transcription:

Computer Architecture Chapter 3 Fall 2005 Department of Computer Science Kent State University

Objectives Signed and Unsigned Numbers Addition and Subtraction Multiplication and Division Floating Point

The Binary Numbering System A computer s internal storage techniques are different from the way humans represent information in daily lives Humans Decimal numbering system to rep real numbers Base-10 Each position is a power of 10 3052 = 3 x 10 3 + 0 x 10 2 + 5 x 10 1 + 2 x 10 0

Binary Representation of Numbers Information inside a digital computer is stored as a collection of binary data Binary numbering system Base-2 Built from ones and zeros Each position is a power of 2 1101 = 1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 Digits 0,1 are called bits (binary digits)

Binary Representation of Numbers 6-Digit Binary Number (111001) 111001 = 1 x 2 5 + 1 x 2 4 + 1 x 2 3 + 0 x 2 2 + 0 x 2 1 + 1 x 2 0 = 32 + 16 + 8 + 0 + 0 + 1 = 57 5-Digit Binary Number (10111) 10111 = 1 x 2 4 +0 x 2 3 + 1 x 2 2 + 1 x 2 1 + 1 x 2 0 = 16 + 0 + 4 + 2 +1 = 23

Binary Representation of Numbers Computers use finite number of Bits for Integer Storage Size ( word ) Max Unsigned Number Allowed 16 1x2 15 + 1x2 14 + +1x2 1 +1x2 0 MIPS-32 1x2 31 +1x2 30 + +1x2 1 + 1x2 0 Otherwise Arithmetic Overflow

Number Representation MIPS word Example: how to translate 11 ten into binary? 11 ten = 1 x 2 3 +0 x 2 2 + 1 x 2 1 + 1 x 2 0 = 1011 two 31 30 29 28............... 7654 3210 0 0 0 0 0000 0000 0000 0000 0000 0000 1011 Most-significant bit Least-significant bit How many (unsigned) binary numbers can 32 bits represent?

How to represent negative numbers? You have a budget of 32 bits to represent positive numbers and negative numbers. In other words, you need to map any 32-bit code to a (binary) number You need to make some (simple) rules so that in your system, you will be able to recognize/separate positive numbers and negative numbers very easily Questions In your system, how many positive number and negative number you can express? In your system, how to perform add and sub operation?

What is a good coding? Balance Ideally, half positive, half negative, is it possible? Number of Zeros Easy of operations Easy of recognization

Signed-Magnitude Explicit sign bit Remaining bits encode unsigned magnitude Two representations for zero (+0 and -0) Addition and subtraction are more complicated Representation 000 001 010 011 100 101 110 111 Value +0 +1 +2 +3-0 -1-2 -3

Biased Add a bias to the signed number in order to make it unsigned Subtract the bias to return the original value Typically the bias is 2 k-1 for a k-bit representation Representation 000 001 010 011 100 101 110 111 Value -4-3 -2-1 0 1 2 3

Two's Complement Most significant bit has a negative weight Representation 000 Value 0 Implicit sign bit One negative number that has no positive Handles overflow well 001 010 011 100 101 +1 +2 +3-4 -3 110-2 111-1

Signed Number Representation Two s Complement Notation Leading 0s mean +ve Leading 1s mean -ve 1 0 0 0 0000 0000 0000 0000 0000 0111 0001 1 x 2 31 + 0 X2 30 + 1x2 6 + 1x2 5 + 1x2 4 + 0x2 3 + 0x2 2 +0x2 1 +1x2 0 = -2,147,483,648 + 64 + 32 +16 +1 = -2,147,483,535 Compare with sign/magnitude representation for -49

cf: Sign Magnitude/ Two s Complement Notations Sign Magnitude Up Close Two's Complement 000 = +0 000 = +0 001 = +1 001 = +1 010 = +2 010 = +2 011 = +3 011 = +3 100 = -0 100 = -4 101 = -1 101 = -3 110 = -2 110 = -2 111 = -3 111 = -1

32 bit signed numbers: MIPS Two s Complement Representation Value 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0000 0000 0000 0000 0000 0000 0000 0001 = + 1 0000 0000 0000 0000 0000 0000 0000 0010 = + 2... 0111 1111 1111 1111 1111 1111 1111 1110 = + 2,147,483,646 0111 1111 1111 1111 1111 1111 1111 1111 = + 2,147,483,647 1000 0000 0000 0000 0000 0000 0000 0000 = 2,147,483,648 1000 0000 0000 0000 0000 0000 0000 0001 = 2,147,483,647 1000 0000 0000 0000 0000 0000 0000 0010 = 2,147,483,646... 1111 1111 1111 1111 1111 1111 1111 1101 = 3 1111 1111 1111 1111 1111 1111 1111 1110 = 2 1111 1111 1111 1111 1111 1111 1111 1111 = 1

Some basic questions Consider you have a number (52, -52) in decimal, how do transform it into the Two s complement binary representation? How to perform add or sub operation in such a system?

Review What s is two s complement notation? Sign/magnitude? 1011, 0011 decimal (assume we only have 4 bits) Express -3 and 3 in two s complement notation (8 bits)

Two s Complement Operation To Negate a Two's complement number: First invert all bits then Add 1 to the inverted bits Let s work on some examples (-2 2, -2 2) To Convert n bit numbers into numbers with more than n bits: MIPS 16 bit immediate gets converted to 32 bits for arithmetic copy the most significant bit (the sign bit) into the LHS half of the word 0010 -> 0000 0010 1010 -> 1111 1010

Addition and Subtraction Addition (carries 1s) 0000 0000 0000 0000 0000 0000 0000 0011 = + 3 0000 0000 0000 0000 0000 0000 0000 0010 = + 2 0000 0000 0000 0000 0000 0000 0000 0101 = + 5 Subtraction: use addition of negative numbers 0000 0000 0000 0000 0000 0000 0000 0011 = + 3 1111 1111 1111 1111 1111 1111 1111 1110 = - 2 0000 0000 0000 0000 0000 0000 0000 0001 = + 1 Let s do some excises! 7+6, 7-6

Overflow if result too large to fit in the finite computer word of the result register e.g., adding two n-bit numbers does not yield an n-bit number 0111 +0001 1000 When the overflow can happen? One positive+one negative? Two positive/two negative?

Overflow No overflow when adding a positive and a negative number No overflow when signs are the same for subtraction Overflow occurs when the value affects the sign: overflow when adding two positives yields a negative or, adding two negatives gives a positive or, subtract a negative from a positive and get a negative or, subtract a positive from a negative and get a positive

Effects of Overflow An exception (interrupt) occurs Control jumps to predefined address for exception Interrupted address is saved for possible resumption Details based on software system / language example: flight control vs. homework assignment Don't always want to detect overflow

Overflow in MIPS In MIPS there are two versions of each add and subtract instruction Add (add), add immediate (addi), and subtract (sub) cause an exception on overflow Add unsigned (addu), add immediate unsigned (addiu), and subtract unsigned (subu) ignore overflow C++ code always uses the unsigned versions because it ignores overflow

Review Using two different methods to get -3 in two s complement notation (4 bits) What is (-3) s two s complementation notation with (8 bits) How to do 2+(-3), (-3)+(-2) in two s complement notation? What is overflow? How to detect overflow in two s complement notation?

Multiplication Recall: X 1000 ten 1001 ten Multiplicand Multiplier 1000 0000 0000 1000 1001000 ten Product Observations More storage required to store the product Place copy of multiplicand in proper location if multiplier is a 1 Place 0 in proper location if multiplier is 0 Product of n-bit Multiplicand and m-multiplier is (n + m)-bit long Number of steps (move digits to LHS) is n -1; where n rep the number of digits (1,0) Let's examine 2 versions of multiplication algorithm for binary numbers

Multiplication Version 1 Start Multiplier0 = 1 1. Test Multiplier0 = 0 Multiplier0 Multiplicand 64 bits Shift left 1a. Add multiplicand to product and place the result in Product register 64-bit ALU Multiplier Shift right 32 bits 2. Shift the Multiplicand register left 1 bit Product Write Control test 3. Shift the Multiplier register right 1 bit 64 bits 32nd repetition? No: < 32 repetitions Datapath Control Done Yes: 32 repetitions

Multiplication Refined Version Product0 = 1 Start 1. Test Product0 = 0 Product0 Multiplicand 32 bits Add multiplicand to product and place the result in? 32-bit ALU 3. Shift the Product register right 1 bit Product Shift right Write Control test 64 bits 32nd repetition? No: < 32 repetitions Yes: 32 repetitions Done

Multiplication Negative Numbers Convert Multiplicand and Multiplier to Positive Numbers Run the Multiplication algorithm for 31 iterations (ignoring the sign bit) Negate product only if original signs for Multiplicand and Multiplier are different

Multiply and Divide in MIPS Instructions in MIPS Multiply (mult) Multiply unsigned (multu) Divide (div) Divide unsigned (divu) The results are not stored in a general-purpose register; instead they are stored in two special registers called hi and lo Additional instructions move values between hi and lo and the general-purpose registers mflo, mfhi

Floating Point Puzzles For each of the following C expressions, either: Argue that it is true for all argument values Explain why not true x == (int)(float) x int x = ; float f = ; double d = ; Assume neither d nor f is NaN x == (int)(double) x f == (float)(double) f d == (float) d f == -(-f); 2/3 == 2/3.0 d < 0.0 ((d*2) < 0.0) d > f -f > -d d * d >= 0.0 (d+f)-d == f

IEEE Floating Point IEEE Standard 754 Established in 1985 as uniform standard for floating point arithmetic Before that, many idiosyncratic formats Supported by all major CPUs Driven by Numerical Concerns Nice standards for rounding, overflow, underflow (What is underflow?) Hard to make go fast Numerical analysts predominated over hardware types in defining standard

Fractional Binary Numbers 2 i 2 i 1 b i b i 1 b 2 b 1 b 0. b 1 b 2 b 3 b j 1/2 1/4 1/8 4 2 1 Representation 2 j Bits to right of binary point represent fractional i powers of 2 b k 2 k k =- j Represents rational number:

Value Frac. Binary Number Examples Representation 5-3/4 101.11 2 2-7/8 10.111 2 63/64 0.111111 2 Observations Divide by 2 by shifting right Multiply by 2 by shifting left Numbers of form 0.111111 2 just below 1.0 1/2 + 1/4 + 1/8 + + 1/2 i + 1.0 Use notation 1.0 ε

Representable Numbers Limitation Can only exactly represent numbers of the form x/2 k Other numbers have repeating bit representations Value Representation 1/3 0.0101010101[01] 2 1/5 0.001100110011[0011] 2 1/10 0.0001100110011[0011] 2

Floating Point Representation Numerical Form 1 s M 2 E Sign bit s determines whether number is negative or positive Significand M normally a fractional value in range [1.0,2.0). Exponent E weights value by power of two s exp frac Encoding MSB is sign bit exp field encodes E frac field encodes M

Encoding Floating Point Precisions s exp frac MSB is sign bit exp field encodes E frac field encodes M Sizes Single precision: 8 exp bits, 23 frac bits 32 bits total Double precision: 11 exp bits, 52 frac bits 64 bits total

Get extra leading bit for free Normalized Numeric Values Condition exp 000 0 and exp 111 1 Exponent coded as biased value E = Exp Bias Exp : unsigned value denoted by exp Bias : Bias value Single precision: 127 (Exp: 1 254, E: -126 127) Double precision: 1023 (Exp: 1 2046, E: -1022 1023) in general: Bias = 2 e-1-1, where e is number of exponent bits Significand coded with implied leading 1 M = 1.xxx x 2 xxx x: bits of frac Minimum when 000 0 (M = 1.0) Maximum when 111 1 (M = 2.0 ε)

Normalized Encoding Example Value Float F = 15213.0; 15213 10 = 11101101101101 2 = 1.1101101101101 2 X 2 13 Significand M = 1.1101101101101 2 frac = 11011011011010000000000 2 Exponent E = 13 Bias = 127 Exp = 140 = 10001100 2 Floating Point Representation (Class 02): Hex: 4 6 6 D B 4 0 0 Binary: 0100 0110 0110 1101 1011 0100 0000 0000 140: 100 0110 0 15213: 1110 1101 1011 01

Special Numbers IEEE FP also defines classes of special numbers Denormalized numbers Zero Infinity Not a Number (NaN)

Underflow Underflow occurs when a number is too small in magnitude to be represented This occurs when the exponent is less than the minimum representable value Be careful not to confuse negative overflow with underflow Underflow is unique to floating-point; integer arithmetic can never underflow

Denormalized Numbers It is also difficult to represent numbers that are close to zero in normalized form Denormalized numbers are stored unnormalized and therefore do not have a hidden bit IEEE also uses a special encoding for denormals Biased exponent is zero Fraction is not zero Denormals help prevent underflow Also known as subnormal numbers

Condition Denormalized Values exp = 000 0 Value Exponent value E = Bias + 1 Significand value M = 0.xxx x 2 Cases xxx x: bits of frac exp = 000 0, frac = 000 0 Represents value 0 Note that have distinct values +0 and 0 exp = 000 0, frac 000 0 Numbers very close to 0.0 Lose precision as get smaller Gradual underflow

Condition exp = 111 1 Cases Special Values exp = 111 1, frac = 000 0 Represents value (infinity) Operation that overflows Both positive and negative E.g., 1.0/0.0 = 1.0/ 0.0 = +, 1.0/ 0.0 = exp = 111 1, frac 000 0 Not-a-Number (NaN) Represents case when no numeric value can be determined E.g., sqrt( 1),, Dividing zero by zero

Not a Number (NaN) In IEEE an undefined operation results in a special value called Not a Number (NaN) Biased exponent is maximum (255 for single) Fraction is not zero Sign is ignored Example of undefined operations Dividing zero by zero Adding infinities of different signs Square root of a negative number Any operation on a NaN results in a NaN

Types of Numbers in IEEE Single Double Meaning Exponent Fraction Exponent Fraction 0 0 0 0 0 0 nonzero 0 nonzero Denormalized 1-254 - 1-2046 - Normalized 255 0 2047 Infinity 255 nonzero 2047 nonzero Not a Number (NaN)

Summary of Floating Point Real Number Encodings -Normalized -Denorm +Denorm +Normalized + NaN 0 +0 NaN

Answers to Floating Point Puzzles int x = ; float f = ; double d = ; x == (int)(float) x No: 24 bit significand x == (int)(double) x Yes: 53 bit significand f == (float)(double) f Yes: increases precision d == (float) d No: loses precision f == -(-f); Yes: Just change sign bit 2/3 == 2/3.0 2/3 == 2/3.0 No: 2/3 == 0 d < 0.0 0.0 ((d*2) ((d*2) < 0.0) 0.0) Yes! Assume neither d nor f is NAN d > f -f -f > -d -d Yes! >= 0.0 d * d >= 0.0 Yes! (d+f)-d == (d+f)-d == f No: Not associative