Multiplication & Division

Slides:



Advertisements
Similar presentations
Arithmetic for Computers
Advertisements

Datorteknik IntegerMulDiv bild 1 MIPS mul/div instructions Multiply: mult $2,$3Hi, Lo = $2 x $3;64-bit signed product Multiply unsigned: multu$2,$3Hi,
CMPE 325 Computer Architecture II
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Computer Organization Lecture 8 - Multiplication.
THE ARITHMETIC-LOGIC UNIT. BINARY HALF-ADDER BINARY HALF-ADDER condt Half adder InputOutput XYSC
Lecture 15: Computer Arithmetic Today’s topic –Division 1.
CMPT 334 Computer Organization Chapter 3 Arithmetic for Computers [Adapted from Computer Organization and Design 5 th Edition, Patterson & Hennessy, ©
Lecture Objectives: 1)Perform binary division of two numbers. 2)Define dividend, divisor, quotient, and remainder. 3)Explain how division is accomplished.
CML CML CS 230: Computer Organization and Assembly Language Aviral Shrivastava Department of Computer Science and Engineering School of Computing and Informatics.
Integer Multiplication and DivisionICS 233 – KFUPM © Muhamed Mudawar slide 1 Multiplicand and HI are sign-extended  Sign is the sign of the result Signed.
Chapter 3 Arithmetic for Computers. Multiplication More complicated than addition accomplished via shifting and addition More time and more area Let's.
361 div.1 Computer Architecture ECE 361 Lecture 7: ALU Design : Division.
Integer Multiplication and Division ICS 233 Computer Architecture and Assembly Language Dr. Aiman El-Maleh College of Computer Sciences and Engineering.
Computer Organization Multiplication and Division Feb 2005 Reading: Portions of these slides are derived from: Textbook figures © 1998 Morgan Kaufmann.
Chap 3.3~3.5 Construction an Arithmetic Logic Unit (ALU) Jen-Chang Liu, Spring 2006.
Integer Multiplication and Division
1 Lecture 8: Binary Multiplication & Division Today’s topics:  Addition/Subtraction  Multiplication  Division Reminder: get started early on assignment.
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 6: Logic/Shift Instructions Partially adapted from Computer Organization and Design, 4.
CPSC 321 Computer Architecture ALU Design – Integer Addition, Multiplication & Division Copyright 2002 David H. Albonesi and the University of Rochester.
DIGITAL SYSTEMS TCE1111 Representation and Arithmetic Operations with Signed Numbers Week 6 and 7 (Lecture 1 of 2)
Lecture Objectives: 1)Explain the relationship between addition and subtraction with twos complement numbering systems 2)Explain the concept of numeric.
Multiplication CPSC 252 Computer Organization Ellen Walker, Hiram College.
Computer Arithmetic Nizamettin AYDIN
Lec 13Systems Architecture1 Systems Architecture Lecture 13: Integer Multiplication and Division Jeremy R. Johnson Anatole D. Ruslanov William M. Mongan.
Computer Arithmetic II Instructor: Mozafar Bag-Mohammadi Spring 2006 University of Ilam.
King Fahd University of Petroleum and Minerals King Fahd University of Petroleum and Minerals Computer Engineering Department Computer Engineering Department.
Multiplication of signed-operands
July 2005Computer Architecture, The Arithmetic/Logic UnitSlide 1 Part III The Arithmetic/Logic Unit.
Lecture 6: Multiply, Shift, and Divide
Computer Arithmetic II Instructor: Mozafar Bag-Mohammadi Ilam University.
Chapter 3 Arithmetic for Computers (Integers). Florida A & M University - Department of Computer and Information Sciences Arithmetic for Computers Operations.
Conversion to Larger Number of Bits Ex: Immediate Field (signed 16 bit) to 32 bit Positive numbers have implied 0’s to the left. So, put 16 bit number.
05/03/2009CA&O Lecture 8,9,10 By Engr. Umbreen sabir1 Computer Arithmetic Computer Engineering Department.
Integer Multiplication and Division
Integer Multiplication and Division ICS 233 Computer Architecture and Assembly Language Dr. Aiman El-Maleh College of Computer Sciences and Engineering.
Csci 136 Computer Architecture II – Multiplication and Division
Division Check for 0 divisor Long division approach – If divisor ≤ dividend bits 1 bit in quotient, subtract – Otherwise 0 bit in quotient, bring down.
CDA 3101 Spring 2016 Introduction to Computer Organization
Integer Multiplication and Division COE 301 Computer Organization Dr. Muhamed Mudawar College of Computer Sciences and Engineering King Fahd University.
Integer Operations Computer Organization and Assembly Language: Module 5.
Integer Multiplication and Division ICS 233 Computer Architecture & Assembly Language Prof. Muhamed Mudawar College of Computer Sciences and Engineering.
1 Lecture 5Multiplication and Division ECE 0142 Computer Organization.
William Stallings Computer Organization and Architecture 8th Edition
Computer Architecture & Operations I
Multiplication and Division basics
CHAPTER 18 Circuits for Arithmetic Operations
Computer Architecture & Operations I
Integer Multiplication and Division
MIPS mul/div instructions
Morgan Kaufmann Publishers Arithmetic for Computers
Morgan Kaufmann Publishers
Morgan Kaufmann Publishers
Lecture 8: Binary Multiplication & Division
CDA 3101 Summer 2007 Introduction to Computer Organization
William Stallings Computer Organization and Architecture 7th Edition
CDA 3101 Spring 2016 Introduction to Computer Organization
Lecture 8: Addition, Multiplication & Division
Lecture 8: Addition, Multiplication & Division
CSCE 350 Computer Architecture
Topic 3c Integer Multiply and Divide
CDA 3101 Summer 2007 Introduction to Computer Organization
ECEG-3202 Computer Architecture and Organization
Computer Architecture
October 15 Chapter 4 – Multiplication/Division Go to the State Fair!
Computer Architecture EECS 361 Lecture 6: ALU Design
CHAPTER 18 Circuits for Arithmetic Operations
October 5 Register to vote! Go to the State Fair! (15-24 October)
MIPS Arithmetic and Logic Instructions
Presentation transcript:

Multiplication & Division COE 308

Multiplication Algorithm 852 x 456 School Age Algorithm 6 x 852 x 100 5 x 852 x 101 + 4 x 852 x 102 Algorithm: Compute Partial Products Multiply Multiplicand by EACH DIGIT of Multiplier Single Digit Multiplication Multiply the product by the order of the digit (x 10i) Multiplication by a power of the base (10i) is a Shift Left by i positions Add Partial Products Multiple Additions COE 308

Multiplication in Binary 11010110 x 10011 1 x 11010110 x 20 1 x 11010110 x 21 0 x 11010110 x 22 0 x 11010110 x 23 + 1 x 11010110 x 24 Because there are only two digits in binary (0 and 1). The multiplication algorithm becomes only: Shift Multiplicand Easy to Implement Multiply Shifted Multiplicand by 1 or 0 A x 1 = A; A x 0 = 0 Add the Shifted Multiplicands Addition of many operands? Issue: How to add more than two operands at the same time ? COE 308

Adding Partial Products Issue: How to add more than two operands at the same time ? 00000000h (0 on 32 bits) Multiplicand Uses many Adders Need circuit that uses one to few adders because of size limitations Parallel Multipliers are used in high performance, multiplication intensive, architectures like DSP (Digital Signal Processing). bits 1 2 Multiplier 30 31 TOO EXPENSIVE + 31 31 + 31 + 31 + COE 308

Iterative Solution Full Parallel Multiplier is too expensive Solution Iteratively add the partial products Advantages Inconvenients Uses ONE Adder Only Much Slower than Parallel Multiplication Circuit COE 308

First Multiplication Algorithm Shift the Multiplicand Left to realize the multiplication by the order of the digit Multiplicand Shift the Multiplier right to get out each digit LSB first and MSB last Shift Left 64 bits Multiplier Shift Right 32 bits Add the product register content to every potential partial product (shifted multiplicand) all the time. Result is only written when appropriate 64-bit ALU Control test Product Write 64 bits Control the write of the product register to only add partial products corresponding to a multiplier digit equal to 1 COE 308

First Multiplication Algorithm(2) Start Bit 0 of Multiplier = 0 ? =1 =0 Product  Product + Multiplicand Shift Left Multiplicand with 1 bit Shift Right Multiplier with 1 bit 32nd Repetition? Yes: 32 repetitions No: < 32 repetitions Done COE 308

Multiplication Circuit Improvement Current Circuit has 64-bits Multiplier Register used to shift the Multiplier. Shifting the Multiplier means inserting 0s (known value). Reserving bits for holding known values is a waste of resources Anytime, Register contains 32 data bits and 32 0s. 100% overhead just to shift 64-bits Adder is not necessary because: Addition is done between two 32 bits operands Either add lower bits of product with lower 0s of the shifted multiplier Or add the higher bits of the product which are 0s with the leading bits of the shifted multiplicand Need to Reduce the cost of the Multiplication Circuit COE 308

Analogy Multiplication Method is the same. Two Ways of Implementing the same algorithm Shift the Multiplicand register forward and do not shift the Product register (what we have seen so far) Shift the Product register backward and do not shift the Multiplicand register (the other method) Similar to having two methods of making a moving scene in a movie COE 308

Is The Car Moving Forward or the Trees moving Backward ??? Movie Making Tips Is The Car Moving Forward or the Trees moving Backward ??? COE 308

The Car is Moving Forward The Camera/Observer is attached to the car Method 1 The Car is Moving Forward The Camera/Observer is attached to the car COE 308

Method 2 The Car is a Fake Car. The Camera/Observer and the Fake Car are both fixed The trees are pictures fixed on a moving panel COE 308

Shifting Backwards Shift Multiplicand Left 1010110 + 0000000 100000010 0100000010 00100000010 11001100010 10011 x  01010110 000100000010 1010110 1010110. + 0000000.. 0000000... 1010110.... 100000010 0100000010 11001100010 10011 x 0000000 Product Initial Product Initial Mcand x 1 Shiftd 0 bits Mcand x 1 Mcand x 1 Shiftd 1 bits Sh. Product Right Mcand x 1 Mcand x 0 Mcand x 0 Sh. Product Right Mcand x 0 Mcand x 1 Shiftd 4 bits Sh. Product Right Mcand x 0 Multiplicand Multiplier Product Sh. Product Right Mcand x 1 Shift Multiplicand Left No Shift for the Product No Shift for the Multiplicand Shift the Product Right (Backward) COE 308

Second Multiply Algorithm Multiplicand 32 bits Multiplier Shift Right 32-bit ALU 32 bits Control test Shift Right Write Product 64 bits COE 308

Second Multiply Algorithm (2) Start Bit 0 of Multiplier = 0 ? =1 =0 Product[63:32]  Product[63:32] + Multiplicand Shift Right Product with 1 bit Shift Right Multiplier with 1 bit 32nd Repetition? Yes: 32 repetitions No: < 32 repetitions Done COE 308

Merge the lower 32-bits of Product Register with Multiplier Register Another Improvement In Second Multiplication Algorithm: Initialize the 64-bit Product Register with 0s Only the Upper 32-bits are added to the Multiplicand The lower 32-bits 0s are shifted out as the Product register is shifted right Merge the lower 32-bits of Product Register with Multiplier Register COE 308

Third Multiply Algorithm Multiplier Register merged with lower 32 bits of Product register Multiplicand 32 bits 32-bit ALU Control test Shift Right Write Product 64 bits COE 308

Third Multiply Algorithm (2) Start Bit 0 of Product = 0 ? =1 =0 Product[63:32]  Product[63:32] + Multiplicand Shift Right Product with 1 bit 32nd Repetition? Yes: 32 repetitions No: < 32 repetitions Done COE 308

Signed Multiplication Convert multiplier and multiplicand into positive numbers Perform the multiplication Compute the sign of the product Apply the sign to the product by either complementing the product (<0) or leaving it as is (>0) COE 308

Booth’s Algorithm Principle: Minimization of Intermediate Additions by Virtually reducing multiplier Middle of run 0 1 1 1 1 0 End of run Beginning of run i+3 i+2 i+1 i Normal Method: Product = Product + Mcand.(2i+3 + 2i+2 + 2i+1 + 2i) Booth’s Method: Product = Product + Mcand. (2i+4 -2i) Current Bit Bit to the right Run Operation 1 Beginning of a run of 1s Subtract Multiplicand Middle of a run of 1s Do Nothing End of a run of 1s Add Multiplicand Middle of run of 0s Do nothing COE 308

Multiplication in MIPS Separate pair of 32 bits registers to contain the 64-bit product Hi and Lo: 32 bits each. Result of multiplication instructions always in Hi:Lo 2 instructions to move the result from Hi/Lo to MIPS registers: mflo and mfhi 2 Multiply instructions mult: signed multiplication multu: unsigned multiplication COE 308

Division 827 21 8 < 21 827 21 82 > 21 82 >= 21 x d 827 21 Select One digit from Dividend to compare to Divisor 827 21 8 < 21 Smaller than Divisor, Consider Two digits 827 21 82 > 21 Find biggest digit d (from 1 to 9) which satisfies: 82 >= 21 x d 82 > 21x1 82 > 21x2 82 > 21x3 82 < 21x 4 Use (4-1) = 3 Determine d using: Intuition (Guessing) when performed by a Human Algorithm that increases d until Either d x 21 > 82; use (d-1) Or d = 9 827 21 - 63 197 > 21x1 …………………… 197 > 21x8 197 > 21x9 Use 9 39 197 - 189 8 COE 308

Division Algorithm (in Decimal) Start M >= Divisor No Shift Left Next Digit of Dividend into M Define M: temporary storage Yes d = 1 Define Q: Quotient Q = 0 M <= d x Divisor No d = 9 No d = d + 1 M = Leftmost Digit of Dividend Yes Yes d = d - 1 M = M – (d x Divisor) Shift Left Next Digit of Dividend into M Shift in d into Q Done No More Digits in Dividend No Yes M: Remainder Q: Quotient COE 308

Division in Binary Many steps before finding a number > Divisor Presence of leading 0s disturbs the conventional algorithm 001100111011 000000010101 000000011001 Extract digits from Dividend and Shift them to align them with Divisor 000001000111 - 000000010101 000000000100 In binary, d can only take the value 0 or 1. Means: Divisor x d <= Extracted Digits from Dividend d = 1 000000100110 - 000000010101 000000010001 000000100011 Quotient Register: Shift Left Serial In from LSB - 000000010101 000000001110 Every step the Extracted Digits are compared to the Divisor: If Divisor x 1 > Extracted Digits  Shift in 0 in the Quotient If Divisor x 1 <= Extracted Digits  Shift in 1 in the Quotient 000000011101 - 000000010101 000000001000 Method of Extracting Digits from Dividend not Practical in Context of Logic Circuits COE 308

Rest of the Algorithm Remains the Same Forced Alignment To Force the Alignment of the Dividend and the Divisor: Multiply the Divisor by 2n (Shift Left by n), n being the number of bits of both the Dividend and the Divisor Shift right (divide by 2) the Divisor until Divisor <= Dividend 000000010101000000000000 000000000000001100111011 000000001010100000000000 000000000101010000000000 000000000010101000000000 000000000001010100000000 000000000000101010000000 000000000000010101000000 000000000000001010100000 < 0 >= 0 Rest of the Algorithm Remains the Same COE 308

First Division Algorithm Divisor Shift right 64 bits Quotient Shift Left 64-bit ALU 32 bits Control test Remainder Write 64 bits COE 308

First Division Algorithm (2) Start Remainder  Remainder - Divisor Remainder ≥ 0 Test Remainder Remainder < 0 Shift Quotient to left setting the new rightmost bit to 1 Restore original value of Remainder Remainder  Remainder + Divisor Shift Quotient to left setting the new rightmost bit to 1 Shift Right Divisor with 1 bit 33rd Repetition? Done Yes: 33 repetitions No: < 33 repetitions COE 308

Division Algorithm Improvement Current Circuit has 64-bits Divisor Register used to shift the Divisor. Shifting the Divisor means inserting 0s (known value). Reserving bits for holding known values is a waste of resources Anytime, Register contains 32 data bits and 32 0s. 100% overhead just to shift 64-bits ALU is not necessary because: Subtraction is done between two 32 bits operands (after alignment of Divisor and Dividend) Need to Reduce the cost of the Division Circuit COE 308

Shifting Dividend Forward Shifting the Divisor Backward (Right) and Fixing the Dividend/Remainder is equivalent to: Fixing the Divisor and Shifting the Dividend/Remainder Forward (Left) In Second Method: Dividend/Remainder Register still 64-bits, initialized with Dividend aligned right with upper 32-bits initialized to 0 Divisor Register is reduced to 32-bits and is not shifted. Similar to the Analogy made in improving the Multiplication Algorithm COE 308

Second Division Algorithm Divisor 32 bits Quotient Shift Left 32-bit ALU 32 bits Control test Shift Left Remainder Write 64 bits COE 308

Merge the lower 32-bits of Remainder Register with Quotient Register Another Improvement In Second Algorithm: Remainder Register upper 32-bits initialized to 0s Remainder Register is shifted left 32 times. 0s are inserted in the LSB of the Remainder Register Lower 32 bits end-up with 0s Quotient Register: 32-bit LSB serial-in left shift register Data is progressively shifted-in in the Quotient Register Merge the lower 32-bits of Remainder Register with Quotient Register COE 308

Final Division Algorithm Divisor 32 bits 32-bit ALU Shift Right Remainder Write Control test Shift Left 64 bits COE 308

Division in MIPS Separate pair of 32 bits registers to contain the 64-bit remainder: Hi and Lo: 32 bits each. Lo: Contains Quotient Hi: Contains Remainder 2 instructions to move the result from Hi/Lo to MIPS registers: mflo and mfhi 2 Divide instructions div: signed division divu: unsigned division COE 308