Chapter 3 Arithmetic for Computers

Similar documents
Computer Architecture Set Four. Arithmetic

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

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

We are quite familiar with adding two numbers in decimal

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

Tailoring the 32-Bit ALU to MIPS

CS/COE0447: Computer Organization

CS/COE0447: Computer Organization

CENG 3420 Lecture 05: Arithmetic and Logic Unit

MIPS Integer ALU Requirements

CENG3420 L05: Arithmetic and Logic Unit

Number Systems and Their Representations

Review: MIPS Organization

Lets Build a Processor

Arithmetic for Computers

ECE 30 Introduction to Computer Engineering

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

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

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

EEC 483 Computer Organization

Chapter 3: Arithmetic for Computers

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

Number Systems and Computer Arithmetic

Week 7: Assignment Solutions

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

ECE260: Fundamentals of Computer Engineering

Basic Arithmetic (adding and subtracting)

LECTURE 4. Logic Design

CS/COE 0447 Example Problems for Exam 2 Spring 2011

Chapter 3. ALU Design

Integer Multiplication and Division

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

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

Computer Architecture. Chapter 3: Arithmetic for Computers

Binary Adders: Half Adders and Full Adders

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

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

Addition and multiplication

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

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

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

COMP 303 Computer Architecture Lecture 6

Arithmetic Logic Unit. Digital Computer Design

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

CENG 3420 Lecture 06: Datapath

Lecture 8: Addition, Multiplication & Division

CENG 3420 Computer Organization and Design. Lecture 06: MIPS Processor - I. Bei Yu

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

Lecture Topics. Announcements. Today: Integer Arithmetic (P&H ) Next: continued. Consulting hours. Introduction to Sim. Milestone #1 (due 1/26)

ECE331: Hardware Organization and Design

Unsigned Binary Integers

Unsigned Binary Integers

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

More complicated than addition. Let's look at 3 versions based on grade school algorithm (multiplicand) More time and more area

ECE 341 Midterm Exam

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

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

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

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

Experiment 7 Arithmetic Circuits Design and Implementation

Number Representations

ENCM 369 Winter 2013: Reference Material for Midterm #2 page 1 of 5

Instructions: MIPS ISA. Chapter 2 Instructions: Language of the Computer 1

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

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization

Integer Arithmetic. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

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

CS/COE 0447 Example Problems for Exam 2 Fall 2010

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

ECE260: Fundamentals of Computer Engineering

Review. Lecture #9 MIPS Logical & Shift Ops, and Instruction Representation I Logical Operators (1/3) Bitwise Operations

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

ECE331: Hardware Organization and Design

ECE260: Fundamentals of Computer Engineering

Fast Arithmetic. Philipp Koehn. 19 October 2016

Chapter 4. Combinational Logic

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

Overview. Introduction to the MIPS ISA. MIPS ISA Overview. Overview (2)

COMPUTER ORGANIZATION AND DESIGN

Assembly Programming

Chapter 3 Part 2 Combinational Logic Design

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

Computer Organization EE 3755 Midterm Examination

Chapter 3: part 3 Binary Subtraction

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

CS Computer Architecture Spring Week 10: Chapter

HW2 solutions You did this for Lab sbn temp, temp,.+1 # temp = 0; sbn temp, b,.+1 # temp = -b; sbn a, temp,.+1 # a = a (-b) = a + b;

CS 351 Exam 2 Mon. 11/2/2015

Binary Arithmetic. Daniel Sanchez Computer Science & Artificial Intelligence Lab M.I.T.

EE 109 Unit 6 Binary Arithmetic

Real Digital Problem Set #6

ECE Exam I February 19 th, :00 pm 4:25pm

ICS 233 COMPUTER ARCHITECTURE. MIPS Processor Design Multicycle Implementation

Computer Organization EE 3755 Midterm Examination

UC Berkeley College of Engineering, EECS Department CS61C: Combinational Logic Blocks

UC Berkeley College of Engineering, EECS Department CS61C: Combinational Logic Blocks

Combinational Circuits

Transcription:

Chapter 3 Arithmetic for Computers 1

Arithmetic Where we've been: Abstractions: Instruction Set Architecture Assembly Language and Machine Language What's up ahead: Implementing the Architecture operation a 32 ALU result 32 b 32 2

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 MIPS subi instruction; addi can add a negative number) How do we represent negative numbers? i.e., which bit patterns will represent which numbers? 3

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 4

MIPS 32 bit signed numbers: 0000 0000 0000 0000 0000 0000 0000 0000 two = 0 ten 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 1110 two = + 2,147,483,646 ten 0111 1111 1111 1111 1111 1111 1111 1111 two = + 2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0000 two = 2,147,483,648 ten 1000 0000 0000 0000 0000 0000 0000 0001 two = 2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0010 two = 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 1111 1111 1111 1111 1111 1111 1111 1111 two = 1 ten maxint minint 5

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: MIPS 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) 6

2 s complement 16-bit binary 0000 0000 0000 0010 two Negate number (invert & add 1) 1111 1111 1111 1101 two 1 two 1111 1111 1111 1110 two 7

2 s complement 0000 0000 0000 0000 0000 0000 0000 0010 two 1111 1111 1111 1111 1111 1111 1111 1101 two 1 two 1111 1111 1111 1111 1111 1111 1111 1110 two 8

Sign extension 16-bit 0000 0000 0000 0010 two 32-bit 0000 0000 0000 0000 0000 0000 0000 0010 two 16-bit 1111 1111 1111 1110 two 32-bit 1111 1111 1111 1111 1111 1111 1111 1110 two 9

Two s complement Number binary 2 s complement 5 0000 0101 1111 1011 12 0000 1100 1111 0100 16 0001 0000 1111 0000 37 0010 0101 1101 1011 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 256 128 64 32 16 8 4 2 1 10

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 11

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 12

Overflow Operation A B Result indicating overflow A + B 0 0 < 0 A + B < 0 < 0 0 A - B 0 < 0 < 0 A - B < 0 0 0 13

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

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. 15

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): 16

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: 17

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: Carryin (Cin) a b Sum Carryout (Cout) c out = a b + a c in + b c in sum = a xor b xor c in How could we build a 1-bit ALU for add, and, and or? How could we build a 32-bit ALU? 18

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

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

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 21

Supporting slt Binvert Operation Can we figure out the idea? a 0 1 b 0 2 Result 1 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 23

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 24

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 25

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? c 1 = b 0 c 0 + a 0 c 0 + a 0 b 0 c 2 = b 1 c 1 + a 1 c 1 + a 1 b 1 c 2 = c 3 = b 2 c 2 + a 2 c 2 + a 2 b 2 c 3 = c 4 = b 3 c 3 + a 3 c 3 + a 3 b 3 c 4 = Not feasible! Why? c 2 = b 1 (b 0 c 0 +a 0 c 0 +a 0 b 0 ) + a 1 (b 0 c 0 +a 0 c 0 +a 0 b 0 ) + a 1 b 1 26

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? p i = a i + b i Did we get rid of the ripple? c 1 = g 0 + p 0 c 0 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? 27

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 28

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

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 30

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

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