Computer Architecture Set Four. Arithmetic

Similar documents
Chapter 3 Arithmetic for Computers

Chapter Three. Arithmetic

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

CPE 335 Computer Organization. MIPS Arithmetic Part I. Content from Chapter 3 and Appendix B

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

Part I: Translating & Starting a Program: Compiler, Linker, Assembler, Loader. Lecture 4

Floating Point Arithmetic

MIPS Integer ALU Requirements

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

Tailoring the 32-Bit ALU to MIPS

CENG3420 L05: Arithmetic and Logic Unit

We are quite familiar with adding two numbers in decimal

Review: MIPS Organization

ECE260: Fundamentals of Computer Engineering

CENG 3420 Lecture 05: Arithmetic and Logic Unit

CS Computer Architecture. 1. Explain Carry Look Ahead adders in detail

Chapter 3: Arithmetic for Computers

Chapter 3 Arithmetic for Computers (Part 2)

Number Systems and Computer Arithmetic

Arithmetic for Computers

CS/COE0447: Computer Organization

CS/COE0447: Computer Organization

Number Systems and Their Representations

Week 7: Assignment Solutions

ECE 30 Introduction to Computer Engineering

COMPUTER ORGANIZATION AND DESIGN

CSE 141 Computer Architecture Summer Session Lecture 3 ALU Part 2 Single Cycle CPU Part 1. Pramod V. Argade

Computer Architecture. Chapter 3: Arithmetic for Computers

Divide: Paper & Pencil

Lets Build a Processor

VTU NOTES QUESTION PAPERS NEWS RESULTS FORUMS Arithmetic (a) The four possible cases Carry (b) Truth table x y

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

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

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

CPE300: Digital System Architecture and Design

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

CS/COE 0447 Example Problems for Exam 2 Spring 2011

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

Module 2: Computer Arithmetic

Arithmetic Circuits. Nurul Hazlina Adder 2. Multiplier 3. Arithmetic Logic Unit (ALU) 4. HDL for Arithmetic Circuit

ECE331: Hardware Organization and Design

Review 1/2 MIPS assembly language instructions mapped to numbers in 3 formats. CS61C Negative Numbers and Logical Operations R I J.

Timing for Ripple Carry Adder

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

EEC 483 Computer Organization

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

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

COMP2611: Computer Organization. Data Representation

At the ith stage: Input: ci is the carry-in Output: si is the sum ci+1 carry-out to (i+1)st state

Chapter 3. Arithmetic Text: P&H rev

COMP 303 Computer Architecture Lecture 6

Arithmetic for Computers. Hwansoo Han

Slide Set 5. for ENCM 369 Winter 2014 Lecture Section 01. Steve Norman, PhD, PEng

Slide Set 5. for ENCM 369 Winter 2018 Section 01. Steve Norman, PhD, PEng

Arithmetic. Chapter 3 Computer Organization and Design

CO212 Lecture 10: Arithmetic & Logical Unit

Arithmetic Logic Unit. Digital Computer Design

Review. Steps to writing (stateless) circuits: Create a logic function (one per output)

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

Chapter 3 Arithmetic for Computers

ECE468 Computer Organization & Architecture. The Design Process & ALU Design

Lecture 8: Addition, Multiplication & Division

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

Chapter 5 : Computer Arithmetic

By, Ajinkya Karande Adarsh Yoga

EC2303-COMPUTER ARCHITECTURE AND ORGANIZATION

Computer Organization EE 3755 Midterm Examination

Chapter 3. ALU Design

Computer Architecture and Organization

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

Integer Multiplication and Division

Data Representation Type of Data Representation Integers Bits Unsigned 2 s Comp Excess 7 Excess 8

DLD VIDYA SAGAR P. potharajuvidyasagar.wordpress.com. Vignana Bharathi Institute of Technology UNIT 3 DLD P VIDYA SAGAR

Thomas Polzer Institut für Technische Informatik

Basic Arithmetic (adding and subtracting)

Computer Arithmetic Ch 8

Computer Arithmetic Ch 8

Integer Arithmetic. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

EEM 486: Computer Architecture. Lecture 2. MIPS Instruction Set Architecture

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

3.5 Floating Point: Overview

Arithmetic Logic Unit

Review of Last lecture. Review ALU Design. Designing a Multiplier Shifter Design Review. Booth s algorithm. Today s Outline

ECE331: Hardware Organization and Design

Fast Arithmetic. Philipp Koehn. 19 October 2016

Chapter 03: Computer Arithmetic. Lesson 09: Arithmetic using floating point numbers

COMP MIPS instructions 2 Feb. 8, f = g + h i;

Numeric Encodings Prof. James L. Frankel Harvard University

LECTURE 4. Logic Design

CS 5803 Introduction to High Performance Computer Architecture: Arithmetic Logic Unit. A.R. Hurson 323 CS Building, Missouri S&T

Floating Point. CSE 351 Autumn Instructor: Justin Hsia

Two-Level CLA for 4-bit Adder. Two-Level CLA for 4-bit Adder. Two-Level CLA for 16-bit Adder. A Closer Look at CLA Delay

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

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

DIGITAL TECHNICS. Dr. Bálint Pődör. Óbuda University, Microelectronics and Technology Institute

CSE 141 Computer Architecture Summer Session Lecture 2 Performance, ALU. Pramod V. Argade

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

Principles of Computer Architecture. Chapter 3: Arithmetic

Addition and multiplication

Inf2C - Computer Systems Lecture 2 Data Representation

Transcription:

Computer Architecture Set Four Arithmetic

Arithmetic Where we ve been: Performance (seconds, cycles, instructions) Abstractions: Instruction Set Architecture Assembly Language and Machine Language What s up ahead: Implementing the Architecture Operation a 32 ALU 32 Result b 32

Numbers Bits are just bits (no inherent meaning) conventions define relationship between bits and numbers Binary numbers (base 2) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001... decimal: 0...2 n 1 Of course, it gets more complicated: numbers are finite (overflow) fractions and real numbers negative numbers e.g., no M IPS subi instruction; addi can add a negative number) How do we represent negative numbers? i.e., which bit patterns will represent which numbers?

Possible Representations Sign Magnitude One s Complement Two s Complement 000 = +0 000 = +0 000 = +0 001 = +1 001 = +1 001 = +1 010 = +2 010 = +2 010 = +2 011 = +3 011 = +3 011 = +3 100 = 0 100 = 3 100 = 4 101 = 1 101 = 2 101 = 3 110 = 2 110 = 1 110 = 2 111 = 3 111 = 0 111 = 1 Issues: balance, number of zeros, ease of operations Which one is best? Why?

MIPS 32 bit signed numbers: 0000 0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0000 0001 two = + 1 ten 0000 0000 0000 0000 0000 0000 0000 0010 two = + 2 ten... 0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646 ten 0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0000two = 2,147,483,648 ten 1000 0000 0000 0000 0000 0000 0000 0001two = 2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0010two = 2,147,483,646 ten... 1111 1111 1111 1111 1111 1111 1111 1101 two = 3 ten 1111 1111 1111 1111 1111 1111 1111 1110 two = 2 ten maxint minint 1111 1111 1111 1111 1111 1111 1111 1111 two = 1 ten

Two s Complement Operations Negating a two s complement number: invert all bits and add 1 remember: negate and invert are quite different! Converting n bit numbers into numbers with more than n bits: M IPS 16 bit immediate gets converted to 32 bits for arithmetic copy the most significant bit (the sign bit) into the other bits 0010 > 0000 0010 1010 > 1111 1010 "sign extension" (lbu vs. lb)

Addition & Subtraction Just like in grade school (carry/borrow 1s) 0111 0111 0110 + 0110 0110 0101 Two s complement operations easy subtraction using addition of negative numbers 0111 + 1010 Overflow (result too large for finite computer word): e.g., adding two n bit numbers does not yield an n bit number 0111 +0001 note that overflow term is somewhat misleading, 1000 it does not mean a carry overflowed

Detecting 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 Consider the operations A + B, and A B Can overflow occur if B is 0? Can overflow occur if A is 0?

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 new MIPS nstructions: addu, addiu, subu note: addiu still sign extends! note: sltu, sltiu for unsigned comparisons

Review: Boolean Algebra & Gates Problem: Consider a logic function with three inputs: A, B, and C. Output D is true if at least one input is true Output E is true if exactly two inputs are true Output F is true only if all three inputs are true Show the truth table for these three functions. Show the Boolean equations for these three functions. Show an implementation consisting of inverters, AND, and OR gates.

An ALU (arithmetic logic unit) Let s build an ALU to support the andi and ori instructions we ll just build a 1 bit ALU, and use 32 of them operation Op A B Res a b result Possible Implementation (sum of products):

Review: The Multiplexor Selects one of the inputs to be the output, based on a control input S A B 0 1 C note: we call this a 2 input mux even though it has 3 inputs! Lets build our ALU using a MUX:

Different Implementations Not easy to decide the best way to build something Don t want too many inputs to a single gate Dont want to have to go through too many gates for our purposes, ease of comprehension is important Let s look at a 1 bit ALU for addition: Carry In a b Sum cout = a b + a cin + b cin sum = a xor b xor cin Carry Out How could we build a 1 bit ALU for add, and, and or? How could we build a 32 bit ALU?

Building a 32 bit ALU Operation Operation a0 b0 ALU0 CarryOut Result0 a 0 a1 b1 ALU1 CarryOut Result1 1 Result b 2 a2 b2 ALU2 CarryOut Result2 CarryOut a31 b31 ALU31 Result31

What about subtraction (a b)? Two s complement approch: just negate b and add. How do we negate? A very clever solution: Binvert Operation a 0 1 Result b 0 1 2 CarryOut

Tailoring the ALU to the MIPS Need to support the set on less than instruction (slt) remember: slt is an arithmetic instruction produces a 1 if rs < rt and 0 otherwise use subtraction: (a b) < 0 implies a < b Need to support test for equality (beq $t5, $t6, $t7) use subtraction: (a b) = 0 implies a = b

Supporting slt Binvert Operation a 0 Can we figure out the idea? 1 b 0 2 1 Result Less 3 a. CarryOut Binvert Operation a 0 1 b 0 2 Result 1 Less 3 Set b. Overflow detection Overflow

Binvert Operation a0 b0 ALU0 Less CarryOut Result0 a1 b1 0 ALU1 Less CarryOut Result1 a2 b2 0 ALU2 Less CarryOut Result2 a31 b31 0 ALU31 Less Set Result31 Overflow

Test for equality Notice control lines: Bnegate Operation 000 = and 001 = or 010 = add 110 = subtract 111 = slt a0 b0 a1 b1 0 ALU0 Less CarryOut ALU1 Less CarryOut Result0 Result1 Zero a2 b2 0 ALU2 Less CarryOut Result2 Note: zero is a 1 when the result is zero! a31 b31 0 ALU31 Less Result31 Set Overflow

Conclusion We can build an ALU to support the MIPS instruction set key idea: use multiplexor to select the output we want we can efficiently perform subtraction using two s complement we can replicate a 1 bit ALU to produce a 32 bit ALU Important points about hardware all of the gates are always working the speed of a gate is affected by the number of inputs to the gate the speed of a circuit is affected by the number of gates in series (on the critical path or the deepest level of logic ) Our primary focus: comprehension, however, Clever changes to organization can improve performance (similar to using better algorithms in software) we ll look at two examples for addition and multiplication

Problem: ripple carry adder is slow Is a 32 bit ALU as fast as a 1 bit ALU? Is there more than one way to do addition? two extremes: ripple carry and sum of products Can you see the ripple? How could you get rid of it? c1 = b0c0 + a0c0 + a0b0 c2 = b1c1 + a1c1 + a1b1 c2 = c3 = b2c2 + a2c2 + a2b2 c3 = c4 = b3c3 + a3c3 + a3b3 c4 =

Problem: ripple carry adder is slow Two extremes: ripple carry and sum of products Can you see the ripple? How could you get rid of it? By successive substitutions of c i+1 by c i c1 = b0c0 + a0c0 + a0b0 c2 = b1c1 + a1c1 + a1b1 c 2 = (b 0 c 0 + a 0 c 0 + a 0 b 0 ) b 1 + (b 0 c 0 + a 0 c 0 + a 0 b 0 ) a 1 + a 1 b 1 = b 0 c 0 b 1 + a 0 c 0 b 1 + a 0 b 0 b 1 + b 0 c 0 a 1 + a 0 c 0 a 1 + a 0 b 0 a 1 + a 1 b 1 c 3 = b 2 c 2 + a 2 c 2 + a 2 b 2 c 3 = c4 = b3c3 + a3c3 + a3b3 c4 = Not feasible! Why?

Carry lookahead adder An approach in between our two extremes Motivation: If we didn t know the value of carry in, what could we do? When would we always generate a carry? g i = a i b i When would we propagate the carry? pi = ai + bi Did we get rid of the ripple? c1 = g0 + p0c0 c 2 = g 1 + p 1 c 1 c 2 = c 3 = g 2 + p 2 c 2 c 3 = c 4 = g 3 + p 3 c 3 c 4 = Feasible! Why?

Use principle to build bigger adders a0 b0 a1 b1 a2 b2 a3 b3 ALU0 P0 G0 C1 pi gi ci + 1 Result0 3 Carry lookahead unit a4 b4 a5 b5 a6 b6 a7 b7 a8 b8 a9 b9 a10 b10 a11 b11 ALU1 P1 G1 ALU2 P2 G2 C2 C3 pi + 1 gi + 1 ci + 2 pi + 2 gi + 2 ci + 3 Result4 7 Result8 11 Can t build a 16 bit adder this way... (too big) Could use ripple carry of 4 bit CLA adders Better: use the CLA principle again! a12 b12 a13 b13 a14 b14 a15 b15 ALU3 P3 G3 C4 pi + 3 gi + 3 ci + 4 Result12 15 CarryOut

Multiplication More complicated than addition accomplished via shifting and addition More time and more area Let s look at 3 versions based on gradeschool algorithm 0010 (multiplicand) x_1011 (multiplier) Negative numbers: convert and multiply there are better techniques, we won t look at them

Multiplication: Implementation Start Multiplier0 = 1 1. Test Multiplier0 Multiplier0 = 0 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 64 bits Write Control test 3. Shift the Multiplier register right 1 bit 32nd repetition? No: < 32 repetitions Yes: 32 repetitions Done

Multiplication: Implementation Multiplicant Controller CNT ALU Accumulator Multiplier

Multiplication: Algorithm

State Control Machine

Division Algo Acc A 00000 1110 Divide 14=1110 by 3=11. B contains 0011 00001 110 step 1: Shift 00011 step 2: subtract 00010 1100 step 3: result negative; set quotient bit to 0 00001 1100 step 4: restore 00011 100 step 1: shift 00011 step 2: subtract 00000 1001 step 3: result non negative; set quotient bit to 1 00001 001 step 1: shift 00011 step 2: subtract 00010 0010 step 3: result is negative; set quotient bit 0 00001 0010 step 4: restore 00010 010 step 1: shift 00011 step 2: subtract 00001 0100 step 3: result is negative; set quotient bit to 0 00010 0100 step 4: restore; Quot = 0100, Remaider = 00010

Array Multiplier x 0 2 2 x 1 2 1 x 2 2 0 y 0 2 2 y 1 2 1 y 2 2 0 x 0 y 0 2 2 2 x 0 y 1 2 2 1 x 0 y 2 2 2 0 x 1 y 0 2 1 2 x 1 y 1 2 1 1 x 1 y 2 2 1 0 x 2 y 0 2 0 2 x 2 y 1 2 0 1 x 2 y 2 2 0 0

AND Array y 0 y 1 y 2 x 2 x 2 y 0 x 2 y 1 x 2 y 2 x 1 x 1 y 0 x1 y 1 x 1 y 2 x 0 x 0 y 0 x 0 y 1 x 0 y 2

Array Multiplier (Cont.) x y x y 2 0 x y 2 1 1 1 x 2 y 2 x 1 y 2 x 1 y 0 Adder Adder x 0 y 1 x 0 y 2 x 0 y 0 Adder Adder Adder Adder z 0 z 1 z 2 z 3 z 4 z 5

Array Multiplier Basics Multiplication Time for n bit numbers = 2(n 1) D + D where D and D are the propagation delays of an Adder and an AND gate. Component cost ~ n 2 ANDs and Adders can combine into a single cell.

Carry Save Adder 2 Stages x y x y x y x y 0 0 1 1 2 2 3 3 z z z 0 1 2 z 3 c c 1 2 c 3 + + + + s s s s w 0 1 2 3 0 w w 1 3 w 2 + + + +

Carry Save Adder: Basics The n bit Carry Save Adder consists of n disjoint Adders Inputs: 3 n bit numbers to be added Outputs: n sum bits (s k ) ; n carry bits (c k ) No carry propagation within adder m >= 3 numbers may be added together by using a tree structure of carry save adders.

Floating Point (a brief look) We need a way to represent numbers with fractions, e.g., 3.1416 very small numbers, e.g.,.000000001 very large numbers, e.g., 3.15576 10 9 Representation: sign, exponent, significand: ( 1) sign significand 2 exponent more bits for significand gives more accuracy more bits for exponent increases range IEEE 754 floating point standard: single precision: 8 bit exponent, 23 bit significand double precision: 11 bit exponent, 52 bit significand

IEEE 754 floating point standard Leading 1 bit of significand is implicit Exponent is biased to make sorting easier all 0s is smallest exponent all 1s is largest bias of 127 for single precision and 1023 for double precision summary: ( 1) sign (1+significand) 2exponent bias Example: decimal:.75 = 3/4 = 3/2 2 binary:.11 = 1.1 x 2 1 floating point: exponent = 126 = 01111110 IEEE single precision: 10111111010000000000000000000000

Floating Point Adder A = a 2 p B = b 2 q A B = a 2 p b 2 q = c 2 r r = max p,q t = p q min p,q Algorithm Compare p and q ; Shift Right fraction of min exponent min(p,q) by t Add shifted fraction Count # of zeros, say u ; shift left leading zero to norm Shift Right = Divide by 2 Shift Left = Multiply by 2

Floating Point Adder

Floating Point Complexities Operations are somewhat more complicated (see text) In addition to overflow we can have underflow Accuracy can be a big problem IEEE 754 keeps two extra bits, guard and round four rounding modes positive divided by zero yields infinity zero divide by zero yields not a number other complexities Implementing the standard can be tricky Not using the standard can be even worse see text for description of 80x86 and Pentium bug!

Summary Computer arithmetic is constrained by limited precision Bit patterns have no inherent meaning but standards do exist two s complement IEEE 754 floating point Computer instructions determine meaning of the bit patterns Performance and accuracy are important so there are many complexities in real machines (i.e., algorithms and implementation). We are ready to move on (and implement the processor) you may want to look back (Section 4.12 is great reading!)