Thomas Polzer Institut für Technische Informatik

Similar documents
Chapter 3. Arithmetic Text: P&H rev

Arithmetic for Computers. Hwansoo Han

TDT4255 Computer Design. Lecture 4. Magnus Jahre

Floating Point Arithmetic. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

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

COMPUTER ORGANIZATION AND DESIGN

Floating Point Arithmetic

Chapter 3. Arithmetic for Computers

Chapter 3. Arithmetic for Computers

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

Chapter 3. Arithmetic for Computers

Chapter 3 Arithmetic for Computers (Part 2)

Integer Arithmetic. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Boolean Algebra. Chapter 3. Boolean Algebra. Chapter 3 Arithmetic for Computers 1. Fundamental Boolean Operations. Arithmetic for Computers

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 3. Arithmetic for Computers

Written Homework 3. Floating-Point Example (1/2)

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

Computer Architecture. Chapter 3: Arithmetic for Computers

Review: MIPS Organization

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

ECE331: Hardware Organization and Design

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

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 3. Arithmetic for Computers

Chapter 3. Arithmetic for Computers

Arithmetic. Chapter 3 Computer Organization and Design

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

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 3. Arithmetic for Computers

Arithmetic for Computers. Integer Addition. Chapter 3

Integer Subtraction. Chapter 3. Overflow conditions. Arithmetic for Computers. Signed Addition. Integer Addition. Arithmetic for Computers

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 3. Arithmetic for Computers

ECE260: Fundamentals of Computer Engineering

MIPS Integer ALU Requirements

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

ECE331: Hardware Organization and Design

Chapter 3 Arithmetic for Computers

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

Divide: Paper & Pencil

xx.yyyy Lecture #11 Floating Point II Summary (single precision): Precision and Accuracy Fractional Powers of 2 Representation of Fractions

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

IEEE Standard 754 for Binary Floating-Point Arithmetic.

Tailoring the 32-Bit ALU to MIPS

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

ECE232: Hardware Organization and Design

Chapter 3 Arithmetic for Computers

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

CS61C : Machine Structures

Lecture 8: Addition, Multiplication & Division

Floating Point COE 308. Computer Architecture Prof. Muhamed Mudawar. Computer Engineering Department King Fahd University of Petroleum and Minerals

CS61C Floating Point Operations & Multiply/Divide. Lecture 9. February 17, 1999 Dave Patterson (http.cs.berkeley.edu/~patterson)

Review 1/2 Big Idea: Instructions determine meaning of data; nothing inherent inside the data Characters: ASCII takes one byte

3.5 Floating Point: Overview

Lecture 10: Floating Point, Digital Design

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

Number Systems and Computer Arithmetic

CSE 2021 Computer Organization. Hugh Chesser, CSEB 1012U W4-W

Integer Multiplication and Division

Arithmetic for Computers

UNIVERSITY OF MASSACHUSETTS Dept. of Electrical & Computer Engineering. Digital Computer Arithmetic ECE 666

Module 2: Computer Arithmetic

Floating-Point Arithmetic

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

COMPUTER ORGANIZATION AND. Edition. The Hardware/Software Interface. Chapter 3. Arithmetic for Computers

Fast Arithmetic. Philipp Koehn. 19 October 2016

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

Lecture 10: Floating Point, Digital Design

CO Computer Architecture and Programming Languages CAPL. Lecture 15

Floating Point Arithmetic

Organisasi Sistem Komputer

361 div.1. Computer Architecture EECS 361 Lecture 7: ALU Design : Division

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

Floating-Point Arithmetic

Chapter 3: Arithmetic for Computers

EEC 483 Computer Organization

CENG3420 L05: Arithmetic and Logic Unit

Instruction Set Architecture of. MIPS Processor. MIPS Processor. MIPS Registers (continued) MIPS Registers

ECE 154A Introduction to. Fall 2012

Chapter Three. Arithmetic

Recap from Last Time. CSE 2021: Computer Organization. It s All about Numbers! 5/12/2011. Text Pictures Video clips Audio

CENG 3420 Lecture 05: Arithmetic and Logic Unit

COMP2611: Computer Organization. Data Representation

Number Systems and Their Representations

Lecture Topics. Announcements. Today: Integer Arithmetic (P&H ) Next: The MIPS ISA (P&H ) Consulting hours. Milestone #1 (due 1/26)

ECE331: Hardware Organization and Design

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

Chapter Two MIPS Arithmetic

MIPS ISA. 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support

CPE300: Digital System Architecture and Design

Part III The Arithmetic/Logic Unit. Oct Computer Architecture, The Arithmetic/Logic Unit Slide 1

Computer Arithmetic Ch 8

Computer Arithmetic Ch 8

Floating Point Numbers

9 Floating-Point. 9.1 Objectives. 9.2 Floating-Point Number Representation. Value = ± (1.F) 2 2 E Bias

COMP 303 Computer Architecture Lecture 6

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

ECE 30 Introduction to Computer Engineering

Computer Architecture Set Four. Arithmetic

Computer Organisation CS303

Floating-Point Arithmetic

Floating Point Numbers. Lecture 9 CAP

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

Transcription:

Thomas Polzer tpolzer@ecs.tuwien.ac.at Institut für Technische Informatik

Operations on integers Addition and subtraction Multiplication and division Dealing with overflow Floating-point real numbers VO Rechnerstrukturen 2

Example: 7 + 6 Overflow if result out of range Adding a positive and a negative operands No overflow Adding two positive operands Overflow if result sign is 1 Adding two negative operands Overflow if result sign is 0 VO Rechnerstrukturen 3

Add negation of second operand Example: 7 6 7 6 = 7 + ( 6) +7: 0000 0000 0000 0111 6: 1111 1111 1111 1010 +1: 0000 0000 0000 0001 Overflow if result out of range Subtracting two positive or two negative operands No overflow Subtracting positive from negative operand Overflow if result sign is 0 Subtracting negative from positive operand Overflow if result sign is 1 VO Rechnerstrukturen 4

Overflow: Result cannot be represented in 32-bits Operation Operand A Operand B Result indicating overflow A + B 0 0 < 0 A + B < 0 < 0 0 A - B 0 < 0 < 0 A - B < 0 0 0 MIPS: Overflow raises exception (aka interrupt) VO Rechnerstrukturen 5

Some languages (e.g., C) ignore overflow Use MIPS addu, addui, subu instructions Other languages (e.g., Ada, Fortran) require raising an exception Use MIPS add, addi, sub instructions On overflow Exception handler invoked VO Rechnerstrukturen 6

Graphics and media processing operates on vectors of 8-bit and 16-bit data Use 64-bit adder, with partitioned carry chain Operate on 8 8-bit, 4 16-bit, or 2 32-bit vectors SIMD (single-instruction, multiple-data) Saturating operations On overflow, result is largest representable value e.g., clipping in audio, saturation in video VO Rechnerstrukturen 7

Binary multiplication is just a bunch of right shifts and adds n multiplicand multiplier n partial product array can be formed in parallel and added in parallel for faster multiplication double precision product 2n VO Rechnerstrukturen 8

Example: 8 * 9 1000 x 1001 1000 0000 0000 1000 _ 1001000 = 72 Length of product is the sum of operand lengths VO Rechnerstrukturen 9

Initially 0 VO Rechnerstrukturen 10

VO Rechnerstrukturen 11

Uses multiple adders Cost/performance tradeoff Can be pipelined Several multiplication performed in parallel VO Rechnerstrukturen 12

Two 32-bit registers for product HI: most-significant 32 bits LO: least-significant 32-bits Instructions mult rs, rt / multu rs, rt 64-bit product in HI/LO mfhi rd / mflo rd Move from HI/LO to rd Can test HI value to see if product overflows 32 bits mul rd, rs, rt Least-significant 32 bits of product > rd VO Rechnerstrukturen 13

Division is just a bunch of quotient digit guesses and left shifts and subtracts dividend = quotient x divisor + remainder divisor n n 0 0 0 0 n 0 0 quotient dividend partial remainder array remainder VO Rechnerstrukturen 14

divisor quotient dividend remainder 1001 1000 1001010-1000 10 101 1010-1000 10 n-bit operands yield n-bit quotient and remainder Check for 0 divisor Long division approach If divisor dividend bits 1 bit in quotient, subtract Otherwise 0 bit in quotient, bring down next dividend bit Restoring division Do the subtract, and if remainder goes < 0, add divisor back Signed division Divide using absolute values Adjust sign of quotient and remainder as required VO Rechnerstrukturen 15

Initially divisor in left half Initially dividend VO Rechnerstrukturen 16

VO Rechnerstrukturen 17

Can t use parallel hardware as in multiplier Subtraction is conditional on sign of remainder Faster dividers generate multiple quotient bits per step Still require multiple steps VO Rechnerstrukturen 18

Use HI/LO registers for result HI: 32-bit remainder LO: 32-bit quotient Instructions div rs, rt / divu rs, rt No overflow or divide-by-0 checking Software must perform checks if required Use mfhi, mflo to access result VO Rechnerstrukturen 19

Left shift by i places multiplies an integer by 2 i Right shift divides by 2 i? Only for unsigned integers For signed integers Arithmetic right shift: replicate the sign bit e.g., 5 / 4 q = 1 11111011 2 >> 2 = 11111110 2 = 2 c.f. 11111011 2 >>> 2 = 00111110 2 = +62 VO Rechnerstrukturen 20

Representation for non-integral numbers Including very small and very large numbers Like scientific notation 2.34 10 56 +0.002 10 4 +987.02 10 9 In binary ±1.xxxxxxx 2 yyyy Types float and double in C normalized not normalized VO Rechnerstrukturen 21

Defined by IEEE Std 754-1985 Developed in response to divergence of representations Portability issues for scientific code Now almost universally adopted Two representations Single precision (32-bit) Double precision (64-bit) VO Rechnerstrukturen 22

single: 8 bits double: 11 bits single: 23 bits double: 52 bits S Exponent Fraction x = ( 1) S (1+ Fraction) 2 (Exponent Bias) S: sign bit (0 non-negative, 1 negative) Normalize significand: 1.0 significand < 2.0 Always has a leading pre-binary-point 1 bit, so no need to represent it explicitly (hidden bit) Significand is Fraction with the 1. restored Exponent: excess representation: actual exponent + bias Ensures exponent is unsigned (non-negative) Single: Bias = 127; Double: Bias = 1203 VO Rechnerstrukturen 23

Exponents 00000000 and 11111111 reserved Smallest value Exponent: 00000001 actual exponent = 1 127 = 126 Fraction: 000 00 significand = 1.0 ±1.0 2 126 ±1.2 10 38 Largest value exponent: 11111110 actual exponent = 254 127 = +127 Fraction: 111 11 significand 2.0 ±2.0 2 +127 ±3.4 10 +38 VO Rechnerstrukturen 24

Exponents 0000 00 and 1111 11 reserved Smallest value Exponent: 00000000001 actual exponent = 1 1023 = 1022 Fraction: 000 00 significand = 1.0 ±1.0 2 1022 ±2.2 10 308 Largest value Exponent: 11111111110 actual exponent = 2046 1023 = +1023 Fraction: 111 11 significand 2.0 ±2.0 2 +1023 ±1.8 10 +308 VO Rechnerstrukturen 25

Relative precision All fraction bits are significant Single: approx. 2 23 Equivalent to 23 log 10 2 23 0.3 6 decimal digits of precision Double: approx. 2 52 Equivalent to 52 log 10 2 52 0.3 16 decimal digits of precision 0.09999999403953552 < 0.1 < 0.10000000149011612 VO Rechnerstrukturen 26

Represent 0.75 0.75 = ( 1) 1 1.1 2 2 1 S = 1 Fraction = 1000 00 2 Exponent = 1 + Bias Single: 1 + 127 = 126 = 01111110 2 Double: 1 + 1023 = 1022 = 01111111110 2 Single: 1011111101000 00 Double: 1011111111101000 00 VO Rechnerstrukturen 27

What number is represented by the single-precision float 11000000101000 00 S = 1 Fraction = 01000 00 2 Exponent = 10000001 2 = 129 x = ( 1) 1 (1 + 0.01 2 ) 2 (129 127) = ( 1) 1.25 2 2 = 5.0 VO Rechnerstrukturen 28

Exponent = 111...1, Fraction = 000...0 ±Infinity Can be used in subsequent calculations, avoiding need for overflow check Exponent = 111...1, Fraction 000...0 Not-a-Number (NaN) Indicates illegal or undefined result e.g., 0.0 / 0.0 Can be used in subsequent calculations VO Rechnerstrukturen 29

Rounding algorithms Arithmetic operations (add, subtract, multiply, divide, square root, fused-multiply-add, remainder, etc.) Conversions (between formats, to and from strings, etc.) Exception handling Invalid ( -1), /0, over/under-flow http://754r.ucbtest.org/standards/754.pdf (ANSI/IEEE Std 754 1985) VO Rechnerstrukturen 30

Consider a 4-digit decimal example 9.999 10 1 + 1.610 10 1 1. Align decimal points Shift number with smaller exponent 9.999 10 1 + 0.016 10 1 2. Add significands 9.999 10 1 + 0.016 10 1 = 10.015 10 1 3. Normalize result & check for over/underflow 1.0015 10 2 4. Round and renormalize if necessary 1.002 10 2 VO Rechnerstrukturen 31

Now consider a 4-digit binary example 1.000 2 2 1 + 1.110 2 2 2 (0.5 + 0.4375) 1. Align binary points Shift number with smaller exponent 1.000 2 2 1 + 0.111 2 2 1 2. Add significands 1.000 2 2 1 + 0.111 2 2 1 = 0.001 2 2 1 3. Normalize result & check for over/underflow 1.000 2 2 4, with no over/underflow 4. Round and renormalize if necessary 1.000 2 2 4 (no change) = 0.0625 VO Rechnerstrukturen 32

Much more complex than integer adder Doing it in one clock cycle would take too long Much longer than integer operations Slower clock would penalize all instructions FP adder usually takes several cycles Can be pipelined VO Rechnerstrukturen 33

FP multiplier is of similar complexity to FP adder But uses a multiplier for significands instead of an adder FP arithmetic hardware usually does Addition, subtraction, multiplication, division, reciprocal, square-root FP integer conversion Operations usually takes several cycles Can be pipelined VO Rechnerstrukturen 34

FP hardware is coprocessor 1 Adjunct processor that extends the ISA Separate FP registers 32 single-precision: $f0, $f1, $f31 Paired for double-precision: $f0/$f1, $f2/$f3, Release 2 of MIPs ISA supports 32 64-bit FP reg s FP instructions operate only on FP registers Programs generally don t do integer ops on FP data, or vice versa More registers with minimal code-size impact FP load and store instructions lwc1, ldc1, swc1, sdc1 e.g., ldc1 $f8, 32($sp) VO Rechnerstrukturen 35

Single-precision arithmetic add.s, sub.s, mul.s, div.s e.g., add.s $f0, $f1, $f6 Double-precision arithmetic add.d, sub.d, mul.d, div.d e.g., mul.d $f4, $f4, $f6 Single- and double-precision comparison c.xx.s, c.xx.d (xx is eq, lt, le, ) Sets or clears FP condition-code bit e.g. c.lt.s $f3, $f4 Branch on FP condition code true or false bc1t, bc1f e.g., bc1t TargetLabel VO Rechnerstrukturen 36

Be careful with floating point operations: (1.50E+38 1.50E+38)+1.0 = = 0.0+1.0=1.0 1.50E+38+(-1.50E+38+1.0) = 1.50E+38 1.50E+38=0.0 WHY?: Insufficient precision to add numbers with largely different exponent: -1.50E+38+1.0 Result is -1.50E+38 VO Rechnerstrukturen 37

Bits have no inherent meaning Interpretation depends on the instructions applied Computer representations of numbers Finite range and precision Need to account for this in programs VO Rechnerstrukturen 38

Thomas Polzer tpolzer@ecs.tuwien.ac.at Institut für Technische Informatik