Today s Outline. CS152 Computer Architecture and Engineering Lecture 5. VHDL, Multiply, Shift

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

Today s Outline. CS152 Computer Architecture and Engineering Lecture 5. VHDL, Multiply, Shift

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

Review from last time. CS152 Computer Architecture and Engineering Lecture 6. Verilog (finish) Multiply, Divide, Shift

MIPS Integer ALU Requirements

Tailoring the 32-Bit ALU to MIPS

COMP 303 Computer Architecture Lecture 6

14:332:331. Computer Architecture and Assembly Language Fall Week 5

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

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

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

CENG3420 L05: Arithmetic and Logic Unit

CENG 3420 Lecture 05: Arithmetic and Logic Unit

Arithmetic for Computers

CPS 104 Computer Organization and Programming

Reduced Instruction Set Computer (RISC)

Review: MIPS Organization

The MIPS Instruction Set Architecture

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

Reduced Instruction Set Computer (RISC)

Number Systems and Their Representations

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

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

ECE232: Hardware Organization and Design. Computer Organization - Previously covered

Integer Multiplication and Division

Computer Architecture. The Language of the Machine

Computer Architecture and Engineering Lecture 7: Divide, Floating Point, Pentium Bug

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

ECE331: Hardware Organization and Design

Integer Multiplication and Division

Q1: /30 Q2: /25 Q3: /45. Total: /100

EEC 483 Computer Organization

Assembly Programming

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

Mark Redekopp, All rights reserved. EE 357 Unit 11 MIPS ISA

EECS150 - Digital Design Lecture 13 - Combinational Logic & Arithmetic Circuits Part 3

Lecture 8: Addition, Multiplication & Division

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

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

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

software hardware Which is easier to change/design???

Number Systems and Computer Arithmetic

6.004 Computation Structures Spring 2009

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

CS/COE 0447 Example Problems for Exam 2 Spring 2011

Computer Architecture. MIPS Instruction Set Architecture

Programming the processor

Computer Architecture Set Four. Arithmetic

CS352H: Computer Systems Architecture

ECE260: Fundamentals of Computer Engineering

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013

Computer Architecture Experiment

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

ECE 2035 Programming HW/SW Systems Spring problems, 6 pages Exam One 4 February Your Name (please print clearly)

structure syntax different levels of abstraction

Here is a list of lecture objectives. They are provided for you to reflect on what you are supposed to learn, rather than an introduction to this

Computer Arithmetic Multiplication & Shift Chapter 3.4 EEC170 FQ 2005

F. Appendix 6 MIPS Instruction Reference

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

CS 152 Computer Architecture and Engineering

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam One 22 September Your Name (please print clearly) Signed.

Mark Redekopp, All rights reserved. EE 352 Unit 3 MIPS ISA

COMPUTER ORGANIZATION AND DESIGN

ECE260: Fundamentals of Computer Engineering

LAB 9 The Performance of MIPS

Integer Arithmetic. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Computer Organization EE 3755 Midterm Examination

Chapter 3 Arithmetic for Computers

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

LAB 9 The Performance of MIPS

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

Lecture 7: Instruction Set Architectures - IV

ECE410 Design Project Spring 2013 Design and Characterization of a CMOS 8-bit pipelined Microprocessor Data Path

Chapter 3 Arithmetic for Computers (Part 2)

Final Project: MIPS-like Microprocessor

EE 109 Unit 8 MIPS Instruction Set

Midterm. Sticker winners: if you got >= 50 / 67

ECE260: Fundamentals of Computer Engineering

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

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

Microcomputers. Outline. Number Systems and Digital Logic Review

Week 10: Assembly Programming

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

LAB 9 The Performance of MIPS

Review: Organization. CS152 Computer Architecture and Engineering Lecture 2. Review of MIPS ISA and Design Concepts

MIPS Instruction Set

CS Computer Architecture Spring Week 10: Chapter

CS 61c: Great Ideas in Computer Architecture

EE 109 Unit 13 MIPS Instruction Set. Instruction Set Architecture (ISA) Components of an ISA INSTRUCTION SET OVERVIEW

MIPS Instruction Reference

Computer Architecture. Chapter 3: Arithmetic for Computers

CAD4 The ALU Fall 2009 Assignment. Description

MIPS Instruction Format

CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro

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

CENG 3420 Lecture 06: Datapath

CS 61c: Great Ideas in Computer Architecture

ECE 2035 Programming HW/SW Systems Fall problems, 6 pages Exam One 19 September 2012

Transcription:

Today s Outline CS152 Computer Architecture and Engineering Lecture 5 VHDL, Multiply, Shift September 14, 2001 John Kubiatowicz (http.cs.berkeley.edu/~kubitron) Review of Last lecture on-line lab notebook Intro to VHDL Administrative Issues Designing a Multiplier Booth s algorithm Shifters lecture slides: http://www-inst.eecs.berkeley.edu/~cs152/ Lec5.1 Lec5.2 Review: ALU Design Review: Elements of the Design Process Bit-slice plus extra on the two ends Overflow means number too large for the representation Carry-look ahead and other adder tricks signed-arith and cin xor co Ovflw a31 A b31 ALU31 co cin s31 32 S 32 B 32 a0 b0 ALU0 co cin s0 4 M C/L to produce select, comp, c-in Lec5.3 Divide and Conquer (e.g., ALU) Formulate a solution in terms of simpler components. Design each of the components (subproblems) Generate and Test (e.g., ALU) Given a collection of building blocks, look for ways of putting them together that meets requirement Successive Refinement (e.g., multiplier, divider) Solve "most" of the problem (i.e., ignore some constraints or special cases), examine and correct shortcomings. Formulate High-Level Alternatives (e.g., shifter) Articulate many strategies to "keep in mind" while pursuing any one approach. Work on the Things you Know How to Do The unknown will become obvious as you make progress. Lec5.4

Review: Summary of the Design Process Hierarchical Design to manage complexity Top Down vs. Bottom Up vs. Successive Refinement Importance of Design Representations: Block Diagrams Decomposition into Bit Slices Truth Tables, K-Maps Circuit Diagrams top down bottom up Why should you keep an design notebook? Keep track of the design decisions and the reasons behind them Otherwise, it will be hard to debug and/or refine the design Write it down so that can remember in long project: 2 weeks ->2 yrs Others can review notebook to see what happened Record insights you have on certain aspect of the design as they come up Record of the different design & debug experiments Memory can fail when very tired Other Descriptions: state diagrams, timing diagrams, reg xfer,... Industry practice: learn from others mistakes Optimization Criteria: Gate Count [Package Count] Area Logic Levels Fan-in/Fan-out Delay Power Pin Out Cost Design time Lec5.5 Lec5.6 Why do we keep it on-line? How should you do it? You need to force yourself to take notes Open a window and leave an editor running while you work 1) Acts as reminder to take notes 2) Makes it easy to take notes 1) + 2) => will actually do it Take advantage of the window system s cut and paste features It is much easier to read your typing than your writing Also, paper log books have problems Limited capacity => end up with many books May not have right book with you at time vs. networked screens Can use computer to search files/index files to find what looking for Keep it simple DON T make it so elaborate that you won t use (fonts, layout,...) Separate the entries by dates type date command in another window and cut&paste Start day with problems going to work on today Record output of simulation into log with cut&paste; add date May help sort out which version of simulation did what Record key email with cut&paste Record of what works & doesn t helps team decide what went wrong after you left Index: write a one-line summary of what you did at end of each day Lec5.7 Lec5.8

On-line Notebook Example 1st page of On-line notebook (Index + Wed. 9/6/95) * Index ============================================================== Refer to the handout: Example of On-Line Log Book on cs152 home page (handouts section) Wed Sep 6 00:47:28 PDT 1995 - Created the 32-bit comparator component Thu Sep 7 14:02:21 PDT 1995 - Tested the comparator Mon Sep 11 12:01:45 PDT 1995 - Investigated bug found by Bart in comp32 and fixed it + ==================================================================== Wed Sep 6 00:47:28 PDT 1995 Goal: Layout the schematic for a 32-bit comparator I ve layed out the schemtatics and made a symbol for the comparator. I named it comp32. The files are ~/wv/proj1/sch/comp32.sch ~/wv/proj1/sch/comp32.sym Wed Sep 6 02:29:22 PDT 1995 - ==================================================================== Add 1 line index at front of log file at end of each session: date+summary Start with date, time of day + goal Make comments during day, summary of work End with date, time of day (and add 1 line summary at front of file) Lec5.9 Lec5.10 2nd page of On-line notebook (Thursday 9/7/95) + ==================================================================== Thu Sep 7 14:02:21 PDT 1995 Goal: Test the comparator component I ve written a command file to test comp32. I ve placed it in ~/wv/proj1/diagnostics/comp32.cmd. I ran the command file in viewsim and it looks like the comparator is working fine. I saved the output into a log file called ~/wv/proj1/diagnostics/comp32.log Notified the rest of the group that the comparator is done. Thu Sep 7 16:15:32 PDT 1995 - ==================================================================== 3rd page of On-line notebook (Monday 9/11/95) + ==================================================================== Mon Sep 11 12:01:45 PDT 1995 Goal: Investigate bug discovered in comp32 and hopefully fix it Bart found a bug in my comparator component. He left the following e-mail. ------------------- From bart@simpsons.residence Sun Sep 10 01:47:02 1995 Received: by wayne.manor (NX5.67e/NX3.0S) id AA00334; Sun, 10 Sep 95 01:47:01-0800 Date: Wed, 10 Sep 95 01:47:01-0800 From: Bart Simpson <bart@simpsons.residence> To: bruce@wanye.manor, old_man@gokuraku, hojo@sanctuary Subject: [cs152] bug in comp32 Status: R Hey Bruce, I think there s a bug in your comparator. The comparator seems to think that ffffffff and fffffff7 are equal. Can you take a look at this? Bart ---------------- Lec5.11 Lec5.12

4th page of On-line notebook (9/11/95 contd) I verified the bug. here s a viewsim of the bug as it appeared.. (equal should be 0 instead of 1) ------------------ SIM>stepsize 10ns SIM>v a_in A[31:0] SIM>v b_in B[31:0] SIM>w a_in b_in equal SIM>a a_in ffffffff\h SIM>a b_in fffffff7\h SIM>sim time = 10.0ns A_IN=FFFFFFFF\H B_IN=FFFFFFF7\H EQUAL=1 Simulation stopped at 10.0ns. ------------------- Ah. I ve discovered the bug. I mislabeled the 4th net in the comp32 schematic. I corrected the mistake and re-checked all the other labels, just in case. I re-ran the old diagnostic test file and tested it against the bug Bart found. It seems to be working fine. hopefully there aren t any more bugs:) 5th page of On-line notebook (9/11/95 contd) On second inspectation of the whole layout, I think I can remove one level of gates in the design and make it go faster. But who cares! the comparator is not in the critical path right now. the delay through the ALU is dominating the critical path. so unless the ALU gets a lot faster, we can live with a less than optimal comparator. I e-mailed the group that the bug has been fixed Mon Sep 11 14:03:41 PDT 1995 - ==================================================================== Perhaps later critical path changes; what was idea to make compartor faster? Check log book! Lec5.13 Lec5.14 Added benefit: cool post-design statistics Sample graph from the Alewife project: Representation Languages Hardware Representation Languages: Block Diagrams: FUs, Registers, & Dataflows Register Transfer Diagrams: Choice of busses to connect FUs, Regs Flowcharts State Diagrams Two different ways to describe sequencing & microoperations For the Communications and Memory Management Unit (CMMU) These statistics came from on-line record of bugs Fifth Representation "Language": Hardware Description Languages E.G., ISP VHDL Verilog Descriptions in these languages can be used as input to simulation systems synthesis systems hw modules described like programs with i/o ports, internal state, & parallel execution of assignment statements "software breadboard" generate hw from high level description Lec5.15 "To Design is to Represent" Lec5.16

Simulation Before Construction Levels of Description "Physical Breadboarding" discrete components/lower scale integration preceeds actual construction of prototype verify initial design concept No longer possible as designs reach higher levels of integration! Architectural Simulation Functional/Behavioral Register Transfer models programmer s view at a high level; written in your favorite programming language more detailed model, like the block diagram view commitment to datapath FUs, registers, busses; register xfer operations are clock phase accurate Less Abstract More Accurate Slower Simulation Simulation Before Construction high level constructs implies faster to construct play "what if" more easily limited performance accuracy, however Logic Circuit model is in terms of logic gates; higher level MSI functions described in terms of these electrical behavior; accurate waveforms Schematic capture + logic simulation package like Powerview Special languages + simulation systems for describing the inherent parallel activity in hardware Lec5.17 Lec5.18 VHDL (VHSIC Hardware Description Language) Interface Goals: Support design, documentation, and simulation of hardware Digital system level to gate level Technology Insertion Concepts: Design entity Time-based execution model. Design Entity == Hardware Component Interface == External Characteristics Externally Visible Characterisitcs Ports: channels of communication - (inputs, outputs, clocks, control) Generic Parameters: define class of components - (timing characterisitcs, size, fan-out) --- determined where instantiated or by default Internally Visible Characteristics Declarations: Assertions: constraints on all alternative bodies (i.e., implementations) Interface view to other modules Architecture (Body ) == Internal Behavior or Structure Lec5.19 Architecture details of implementation Lec5.20

VHDL Example: nand gate Modeling Delays ENTITY nand is PORT (a,b: IN VLBIT; y: OUT VLBIT) END nand ARCHITECTURE behavioral OF nand is BEGIN y <= a NAND b; END behavioral; Entity describes interface Architecture give behavior, i.e., function y is a signal, not a variable it changes when ever the inputs change drive a signal NAND process is in an infinite loop VLBit is 0, 1, X or Z Lec5.21 ENTITY nand is PORT (a,b: IN VLBIT; y: OUT VLBIT) END nand ARCHITECTURE behavioral OF nand is BEGIN y <= a NAND b after 1 ns; END behavioral; Model temporal, as well as functional behavior, with delays in signal statements; Time is one difference from programming languages y changes 1 ns after a or b changes This fixed delay is inflexible hard to reflect changes in technology Lec5.22 Generic Parameters ENTITY nand is GENERIC (delay: TIME := 1ns); PORT (a,b: IN VLBIT; y: OUT VLBIT) END nand ARCHITECTURE behavioral OF nand is BEGIN y <= a NAND b AFTER delay; END behavioral; Bit-vector data type ENTITY nand32 is PORT (a,b: IN VLBIT_1D ( 31 downto 0); y: OUT VLBIT_1D ( 31 downto 0) END nand32 ARCHITECTURE behavioral OF nand32 is BEGIN y <= a NAND b; END behavioral; Generic parameters provide default values may be overridden on each instance attach value to symbol as attribute Separate functional and temporal models VLBIT_1D ( 31 downto 0) is equivalent to powerview 32-bit bus Can convert it to a 32 bit integer How would you describe fix-delay + slope * load model? Lec5.23 Lec5.24

Arithmetic Operations Control Constructs ENTITY add32 is PORT (a,b: IN VLBIT_1D ( 31 downto 0); y: OUT VLBIT_1D ( 31 downto 0) END add32 ARCHITECTURE behavioral OF add32 is BEGIN y <= addum(a, b) ; END behavioral; addum (see VHDL ref. appendix C) adds two n-bit vectors to produce an n+1 bit vector except when n = 32! entity MUX32X2 is generic (output_delay : TIME := 4 ns); port(a,b: in vlbit_1d(31 downto 0); DOUT: out vlbit_1d(31 downto 0); SEL: in vlbit); end MUX32X2; architecture behavior of MUX32X2 is begin mux32x2_process: process(a, B, SEL) begin if (vlb2int(sel) = 0) then DOUT <= A after output_delay; else DOUT <= B after output_delay; end if; end process; end behavior; Process fires whenever is sensitivity list changes Evaluates the body sequentially VHDL provide case statements as well Lec5.25 Lec5.26 Administrative Matters Remember that first homework due next Wednesday First homework quiz at BEGINNING of class. No late homework (No exceptions) First Lab due next Wednesday at midnight via submit program No late labs! Mount filesystem as \\fileservice\cs152 On-line lab notebook is such a good idea, its required! (starting with Lab 3) MIPS arithmetic instructions Instruction Example Meaning Comments add add $1,$2,$3 $1 = $2 + $3 3 operands; exception possible subtract sub $1,$2,$3 $1 = $2 $3 3 operands; exception possible add immediate addi $1,$2,100 $1 = $2 + 100 + constant; exception possible add unsigned addu $1,$2,$3 $1 = $2 + $3 3 operands; no exceptions subtract unsigned subu $1,$2,$3 $1 = $2 $3 3 operands; no exceptions add imm. unsign. addiu $1,$2,100 $1 = $2 + 100 + constant; no exceptions multiply mult $2,$3 Hi, Lo = $2 x $3 64-bit signed product multiply unsigned multu$2,$3 Hi, Lo = $2 x $3 64-bit unsigned product divide div $2,$3 Lo = $2 $3, Lo = quotient, Hi = remainder Hi = $2 mod $3 divide unsigned divu $2,$3 Lo = $2 $3, Unsigned quotient & remainder Hi = $2 mod $3 Move from Hi mfhi $1 $1 = Hi Used to get copy of Hi Move from Lo mflo $1 $1 = Lo Used to get copy of Lo Reading Chapter 4 now Lec5.27 Lec5.28

MULTIPLY (unsigned) Paper and pencil example (unsigned): Multiplicand 1000 Multiplier 1001 1000 0000 0000 1000 Product 01001000 m bits x n bits = m+n bit product Unsigned Combinational Multiplier 0 0 0 0 B 0 B 1 B 2 Binary makes it easy: 0 => place 0 ( 0 x multiplicand) 1 => place a copy ( 1 x multiplicand) P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0 B 3 4 versions of multiply hardware & algorithm: successive refinement Stage i accumulates A * 2 i if B i == 1 Q: How much hardware for 32 bit multiplier? Critical path? Lec5.29 Lec5.30 How does it work? 0 0 0 0 0 0 0 Unisigned shift-add multiplier (version 1) B 0 B 1 64-bit Multiplicand reg, 64-bit ALU, 64-bit Product reg, 32-bit multiplier reg B 2 B 3 Multiplicand 64 bits Shift Left P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0 64-bit ALU Multiplier 32 bits Shift Right at each stage shift A left ( x 2) use next bit of B to determine whether to add in shifted multiplicand Product 64 bits Write Control accumulate 2n bit partial product at each stage Lec5.31 Multiplier = datapath + control Lec5.32

Multiply Algorithm Version 1 Start Observations on Multiply Version 1 Multiplier0 = 1 1. Test Multiplier0 Multiplier0 = 0 1 clock per cycle => 100 clocks per multiply Ratio of multiply to add 5:1 to 100:1 Product Multiplier Multiplicand 0000 0000 0011 0000 0010 0000 0010 0001 0000 0100 0000 0110 0000 0000 1000 0000 0110 1a. Add multiplicand to product & place the result in Product register 2. Shift the Multiplicand register left 1 bit. 3. Shift the Multiplier register right 1 bit. 32nd repetition? No: < 32 repetitions Yes: 32 repetitions Done Lec5.33 1/2 bits in multiplicand always 0 => 64-bit adder is wasted 0 s inserted in left of multiplicand as shifted => least significant bits of product never changed once formed Instead of shifting multiplicand to left, shift product to right? Lec5.34 MULTIPLY HARDWARE Version 2 32-bit Multiplicand reg, 32 -bit ALU, 64-bit Product reg, 32-bit Multiplier reg How to think of this? Remember original combinational multiplier: 0 0 0 0 B 0 Multiplicand 32 bits 32-bit ALU Multiplier 32 bits Shift Right B 1 B 2 Product 64 bits Shift Right Write Control B 3 P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0 Lec5.35 Lec5.36

Simply warp to let product move right... Multiply Algorithm Version 2 Start 0 0 0 0 B 0 Multiplier0 = 1 1. Test Multiplier0 Multiplier0 = 0 P 7 P 6 P 5 P 4 P 3 P 2 P 1 Multiplicand stay s still and product moves right B 1 B 2 B 3 P 0 Lec5.37 1a. Add multiplicand to the left half of product & place the result in the left half of Product register Product Multiplier Multiplicand 0000 0000 0011 0010 1: 0010 0000 0011 0010 2: 0001 0000 0011 0010 3: 0001 0000 0001 0010 1: 0011 0000 0001 0010 2: 0001 1000 0001 0010 3: 0001 1000 0000 0010 1: 0001 1000 0000 0010 2: 0000 1100 0000 0010 3: 0000 1100 0000 0010 1: 0000 1100 0000 0010 2: 0000 0110 0000 0010 3: 0000 0110 0000 0010 0000 0110 0000 0010 2. Shift the Product register right 1 bit. 3. Shift the Multiplier register right 1 bit. 32nd repetition? No: < 32 repetitions Yes: 32 repetitions Done Lec5.38 Still more wasted space! Start Observations on Multiply Version 2 Multiplier0 = 1 0000 0110 0000 0010 1. Test Multiplier0 1a. Add multiplicand to the left half of product & place the result in the left half of Product register Product Multiplier Multiplicand 0000 0000 0011 0010 1: 0010 0000 0011 0010 2: 0001 0000 0011 0010 3: 0001 0000 0001 0010 1: 0011 0000 0001 0010 2: 0001 1000 0001 0010 3: 0001 1000 0000 0010 1: 0001 1000 0000 0010 2: 0000 1100 0000 0010 3: 0000 1100 0000 0010 1: 0000 1100 0000 0010 2: 0000 0110 0000 0010 3: 0000 0110 0000 0010 Multiplier0 = 0 2. Shift the Product register right 1 bit. 3. Shift the Multiplier register right 1 bit. 32nd repetition? No: < 32 repetitions Yes: 32 repetitions Done Lec5.39 Product register wastes space that exactly matches size of multiplier => combine Multiplier register and Product register Lec5.40

MULTIPLY HARDWARE Version 3 Multiply Algorithm Version 3 Start 32-bit Multiplicand reg, 32 -bit ALU, 64-bit Product reg, (0-bit Multiplier reg) Multiplicand Product 0010 0000 0011 Product0 = 1 1. Test Product0 Product0 = 0 Multiplicand 32-bit ALU 32 bits 1a. Add multiplicand to the left half of product & place the result in the left half of Product register 2. Shift the Product register right 1 bit. Product (Multiplier) 64 bits Shift Right Write Control 32nd repetition? No: < 32 repetitions Lec5.41 Yes: 32 repetitions Done Lec5.42 Observations on Multiply Version 3 Motivation for Booth s Algorithm 2 steps per bit because Multiplier & Product combined MIPS registers Hi and Lo are left and right half of Product Gives us MIPS instruction MultU How can you make it faster? What about signed multiplication? easiest solution is to make both positive & remember whether to complement product when done (leave out the sign bit, run for 31 steps) apply definition of 2 s complement - need to sign-extend partial products and subtract at the end Booth s Algorithm is elegant way to multiply signed numbers using same hardware as before and save cycles - can handle multiple bits at a time Example 2 x 6 = 0010 x 0110: 0010 x 0110 + 0000 shift (0 in multiplier) + 0010 add (1 in multiplier) + 0010 add (1 in multiplier) + 0000 shift (0 in multiplier) 00001100 ALU with add or subtract gets same result in more than one way: 6 = 2 + 8 0110 = 00010 + 01000 = 11110 + 01000 For example 0010 x 0110 0000 shift (0 in multiplier) 0010 sub (first 1 in multpl.). 0000 shift (mid string of 1s). + 0010 add (prior step had last 1) 00001100 Lec5.43 Lec5.44

Booth s Algorithm middle end of run of run 0 1 1 1 1 0 Current Bit Bit to the Right Explanation Example Op 1 0 Begins run of 1s 0001111000 sub 1 1 Middle of run of 1s 0001111000 none 0 1 End of run of 1s 0001111000 add 0 0 Middle of run of 0s 0001111000 none Originally for Speed (when shift was faster than add) beginning of run Booths Example (2 x 7) Operation Multiplicand Product next? 0. initial value 0010 0000 0111 0 10 -> sub 1a. P = P - m 1110 + 1110 1110 0111 0 shift P (sign ext) 1b. 0010 1111 0011 1 11 -> nop, shift 2. 0010 1111 1001 1 11 -> nop, shift 3. 0010 1111 1100 1 01 -> add 4a. 0010 + 0010 0001 1100 1 shift 4b. 0010 0000 1110 0 done Replace a string of 1s in multiplier with an initial subtract when we first see a one and then later add for the bit after the last one 1 + 10000 01111 Lec5.45 Lec5.46 Booths Example (2 x -3) Operation Multiplicand Product next? 0. initial value 1a. P = P - m 0010 0000 1101 0 1110 + 1110 10 -> sub 1110 1101 0 shift P (sign ext) 1b. 0010 1111 0110 1 01 -> add + 0010 2a. 0001 0110 1 shift P 2b. 0010 0000 1011 0 10 -> sub + 1110 3a. 0010 1110 1011 0 shift MIPS logical instructions Instruction Example Meaning Comment and and $1,$2,$3 $1 = $2 & $3 3 reg. operands; Logical AND or or $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical OR xor xor $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical XOR nor nor $1,$2,$3 $1 = ~($2 $3) 3 reg. operands; Logical NOR and immediate andi $1,$2,10 $1 = $2 & 10 Logical AND reg, constant or immediate ori $1,$2,10 $1 = $2 10 Logical OR reg, constant xor immediate xori $1, $2,10 $1 = ~$2 &~10 Logical XOR reg, constant shift left logical sll $1,$2,10 $1 = $2 << 10 Shift left by constant shift right logical srl $1,$2,10 $1 = $2 >> 10 Shift right by constant shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift right (sign extend) shift left logical sllv $1,$2,$3 $1 = $2 << $3 Shift left by variable shift right logical srlv $1,$2, $3 $1 = $2 >> $3 Shift right by variable shift right arithm. srav $1,$2, $3 $1 = $2 >> $3 Shift right arith. by variable 3b. 0010 1111 0101 1 11 -> nop 4a 1111 0101 1 shift 4b. 0010 1111 1010 1 done Lec5.47 Lec5.48

Shifters Combinational Shifter from MUXes Two kinds: logical-- value shifted in is always "0" "0" msb lsb "0" Basic Building Block 8-bit right shifter sel A B 1 0 D A 7 A 6 A 5 A 4 S 2 S 1 S 0 arithmetic-- on right shifts, sign extend msb lsb "0" 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 Note: these are single bit shifts. A given instruction might request 0 to 32 bits to be shifted! R 7 R 6 R 5 R 4 What comes in the MSBs? How many levels for 32-bit shifter? R 3 R 2 R 1 R 0 Lec5.49 What if we use 4-1 Muxes? Lec5.50 General Shift Right Scheme using 16 bit example Funnel Shifter Instead Extract 32 bits of 64. S 0 (0,1) S 1 (0, 2) Y X Shift Right S 2 (0, 4) Shift A by i bits (sa= shift right amount) Logical: Y = 0, X=A, sa=i Y R X 32 32 S 3 (0, 8) If added Right-to-left connections could support Rotate (not in MIPS but found in ISAs) Lec5.51 Arithmetic? Y = _, X=_, sa=_ Rotate? Y = _, X=_, sa=_ Left shifts? Y = _, X=_, sa=_ Shift Right R 32 Lec5.52

Barrel Shifter Technology-dependent solutions: transistor per switch SR3 SR2 SR1 SR0 A6 A5 A4 D3 D2 D1 D0 Summary Intro to VHDL a language to describe hardware - entity = symbol, architecture ~ schematic, signals = wires behavior can be higher level - x <= boolean_expression(a,b,c,d); Has time as concept Can activate when inputs change, not specifically invoked Inherently parallel Multiply: successive refinement to see final design 32-bit Adder, 64-bit shift register, 32-bit Multiplicand Register Booth s algorithm to handle signed multiplies There are algorithms that calculate many bits of multiply per cycle (see exercises 4.36 to 4.39 in COD) Shifter: success refinement 1/bit at a time shift register to barrel shifter A3 A2 A1 A0 Lec5.53 What s Missing from MIPS is Divide & Floating Point Arithmetic: 9/14/01 Next time the Pentium Bug UCB Fall 2001 Lec5.54 To Get More Information Chapter 4 of your text book: David Patterson & John Hennessy, Computer Organization & Design, Morgan Kaufmann Publishers, 1994. David Winkel & Franklin Prosser, The Art of Digital Design: An Introduction to Top-Down Design, Prentice-Hall, Inc., 1980. Kai Hwang, Computer Arithmetic: Principles, archtiecture, and design, Wiley 1979 Lec5.55