Arithmetic and Logic Circuits

Slides:



Advertisements
Similar presentations
Arithmetic for Computers
Advertisements

Combinational Circuits. Analysis Diagram Designing Combinational Circuits In general we have to do following steps: 1. Problem description 2. Input/output.
L10 – Transistors Logic Math 1 Comp 411 – Spring /22/07 Arithmetic Circuits Didn’t I learn how to do addition in the second grade?
Comparator.
Arithmetic Functions and Circuits
Mohamed Younis CMCS 411, Computer Architecture 1 CMCS Computer Architecture Lecture 7 Arithmetic Logic Unit February 19,
DPSD This PPT Credits to : Ms. Elakya - AP / ECE.
Computer Organization and Design Arithmetic & Logic Circuits Henry Fuchs Slides adapted from Montek Singh, who adapted them from Leonard McMillan and from.
Arithmetic II CPSC 321 E. J. Kim. Today’s Menu Arithmetic-Logic Units Logic Design Revisited Faster Addition Multiplication (if time permits)
L9 – Arithmetic Circuits 1 Comp 411 – Fall /14/09 Arithmetic Circuits Didn’t I learn how to do addition in the second grade?
Lecture 8 Arithmetic Logic Circuits
Design of Arithmetic Circuits – Adders, Subtractors, BCD adders
Arithmetic-Logic Units CPSC 321 Computer Architecture Andreas Klappenecker.
Basic Arithmetic (adding and subtracting)
Digital Arithmetic and Arithmetic Circuits
IKI a-Combinatorial Components Bobby Nazief Semester-I The materials on these slides are adopted from those in CS231’s Lecture Notes.
Chapter 6-1 ALU, Adder and Subtractor
Basic Arithmetic (adding and subtracting)
1 Arithmetic Logic Unit ALU. 2 The Bus Concept 3 CPU Building Blocks  Registers (IR, PC, ACC)  Control Unit (CU)  Arithmetic Logic Unit (ALU)
Computing Systems Designing a basic ALU.
Lecture 4 Chap 5 Types Instructors: Fu-Chiung Cheng ( 鄭福炯 ) Associate Professor Computer Science & Engineering Tatung University.
1 Lecture 6 BOOLEAN ALGEBRA and GATES Building a 32 bit processor PH 3: B.1-B.5.
CDA 3101 Fall 2013 Introduction to Computer Organization The Arithmetic Logic Unit (ALU) and MIPS ALU Support 20 September 2013.
1 Arithmetic I Instructor: Mozafar Bag-Mohammadi Ilam University.
Kavita Bala CS 3410, Spring 2014 Computer Science Cornell University.
Addition, Subtraction, Logic Operations and ALU Design
ECE/CS 552: Arithmetic I Instructor:Mikko H Lipasti Fall 2010 University of Wisconsin-Madison Lecture notes partially based on set created by Mark Hill.
Arithmetic-Logic Units. Logic Gates AND gate OR gate NOT gate.
Addition and multiplication Arithmetic is the most basic thing you can do with a computer, but it’s not as easy as you might expect! These next few lectures.
Lecture #23: Arithmetic Circuits-1 Arithmetic Circuits (Part I) Randy H. Katz University of California, Berkeley Fall 2005.
ECE DIGITAL LOGIC LECTURE 15: COMBINATIONAL CIRCUITS Assistant Prof. Fareena Saqib Florida Institute of Technology Fall 2015, 10/20/2015.
Computer Organization and Design Arithmetic & Logic Circuits Montek Singh Nov 2, 2015 Lecture 11.
EE204 L03-ALUHina Anwar Khan EE204 Computer Architecture Lecture 03- ALU.
Addition and multiplication1 Arithmetic is the most basic thing you can do with a computer, but it’s not as easy as you might expect! These next few lectures.
B0110 ALU ENGR xD52 Eric VanWyk Fall Today Back to Gates! Review Timing with Adders Compare Growth Characteristics Construct Adder/Subtractor Construct.
Combinational Circuits
Lecture 11: Hardware for Arithmetic
COMP541 Datapaths I Montek Singh Mar 28, 2012.
Addition and multiplication
Digital Systems Section 8 Multiplexers. Digital Systems Section 8 Multiplexers.
Combinational ALU Constructive Computer Architecture Arvind
Computer Organization and Design Arithmetic & Logic Circuits
MIPS ALU.
ECE/CS 552: Arithmetic and Logic
Computer Organization and Design Arithmetic & Logic Circuits
Computer Organization and Design Arithmetic & Logic Circuits
ECE 331 – Digital System Design
Arithmetic Circuits Didn’t I learn how
Topic 3b Computer Arithmetic: ALU Design
King Fahd University of Petroleum and Minerals
Arithmetic Functions & Circuits
Computer Organization and Design Arithmetic & Logic Circuits
Arithmetic Circuits (Part I) Randy H
Lecture 11: Hardware for Arithmetic
Topic 3b Computer Arithmetic: ALU Design
Digital Systems Section 12 Binary Adders. Digital Systems Section 12 Binary Adders.
CS 140 Lecture 14 Standard Combinational Modules
Overview Part 1 – Design Procedure Part 2 – Combinational Logic
Part III The Arithmetic/Logic Unit
COMS 361 Computer Organization
CSE 140 Lecture 14 Standard Combinational Modules
Addition and multiplication
Instructor: Mozafar Bag-Mohammadi University of Ilam
Logic Circuits I Lecture 3.
Multiple function unit design
Addition and multiplication
ECE 352 Digital System Fundamentals
Combinational Circuits
Computer Organization and Design Arithmetic Circuits
Number Representation
Presentation transcript:

Arithmetic and Logic Circuits Don Porter Lecture 12

Topics Arithmetic Circuits Logic Circuits adder subtractor Logic Circuits Arithmetic & Logic Unit (ALU) … putting it all together

… … … Review: 2’s Complement 8-bit 2’s complement example: N bits -2N-1 2N-2 … … … 23 22 21 20 Range: – 2N-1 to 2N-1 – 1 “sign bit” “binary” point 8-bit 2’s complement example: 11010110 = – 128 + 64 + 16 + 4 + 2 = – 42 Beauty of 2’s complement representation: same binary addition procedure will work for adding both signed and unsigned numbers as long as the leftmost carry out is properly handled/ignored Insert a “binary” point to represent fractions too: 1101.0110 = – 8 + 4 + 1 + 0.25 + 0.125 = – 2.625

Binary Addition Example of binary addition “by hand”: Let’s design a circuit to do it! Start by building a block that adds one column: called a “full adder” (FA) Then cascade them to add two numbers of any size… 1 Carries from previous column Adding two N-bit numbers produces an (N+1)-bit result A: 1101 B:+ 0101 10010 A B CO CI S FA A3 B3 A2 B2 A1 B1 A0 B0 S4 S3 S2 S1 S0 A B CO CI S FA 4-bit adder

Binary Addition Extend to arbitrary # of bits n bits: cascade n full adders Called “Ripple-Carry Adder” carries ripple through from right to left longest chain of carries has length n how long does it take to add the numbers 0 and 1? how long does it take to add the numbers -1 and 1? An-1 Bn-1 A2 B2 A1 B1 A0 B0 A B CO CI S FA A B CO CI S FA A B CO CI S FA A B CO CI S FA Sn Sn-1 S2 S1 S0

Designing a Full Adder (1-bit adder) Follow the step-by-step method Start with a truth table: Write down eqns for the “1” outputs: Simplifying a bit (seems hard, but experienced designers are good at this art!)

Simplifying the Boolean for Adder Start with definitions of xor (2 and 3 term): 𝐴⨁𝐵= 𝐴 𝐵+𝐴 𝐵 𝐴⨁𝐵⨁𝐶= 𝐴𝐵 𝐶+𝐴 𝐵𝐶 + 𝐴 𝐵 𝐶 +𝐴𝐵𝐶 Intuitively: Either only one is true, or all three are true i.e., an odd number of 1’s S is just the identify of a 3-term xor

Simplifying the Boolean for Adder Definition of 2-term xor: 𝐴⨁𝐵= 𝐴 𝐵+𝐴 𝐵 𝐶 𝑜 = 𝐶 𝑖 𝐴𝐵+ 𝐶 𝑖 𝐴 𝐵+ 𝐶 𝑖 𝐴 𝐵 + 𝐶 𝑖 𝐴𝐵 𝐶 𝑜 = 𝐶 𝑖 𝐴 𝐵+ 𝐶 𝑖 𝐴 𝐵 + 𝐶 𝑖 𝐴𝐵+𝐶 𝑖 𝐴𝐵 (Commutative) 𝐶 𝑜 = 𝐶 𝑖 𝐴 𝐵+ 𝐶 𝑖 𝐴 𝐵 + 𝐴𝐵( 𝐶 𝑖 +𝐶 𝑖 ) (Distributive) 𝐶 𝑜 = 𝐶 𝑖 𝐴 𝐵+ 𝐶 𝑖 𝐴 𝐵 +𝐴𝐵 (Identity 7) 𝐶 𝑜 = 𝐶 𝑖 ( 𝐴 𝐵+𝐴 𝐵 )+𝐴𝐵 (Distributive) 𝐶 𝑜 = 𝐶 𝑖 (𝐴⨁𝐵)+𝐴𝐵 (Def. of xor)

For Those Who Prefer Logic Diagrams A little tricky, but only 5 gates/bit! Ci A B S Co “Carry” Logic “Sum” Logic

Subtraction: A-B = A + (-B) Subtract B from A = add 2’s complement of B to A In 2’s complement: –B = ~B + 1 Let’s build an arithmetic unit that does both add and sub operation selected by control input: ~ = bit-wise complement B 1 But what about the “+1”? A B CO CI S FA A3 A2 A1 A0 S4 S3 S0 S1 S0 B3 B2 B1 B0 Subtract

Condition Codes One often wants 4 other bits of information from an arith unit: Z (zero): result is = 0 big NOR gate N (negative): result is < 0 Sn-1 C (carry): the most significant position produced a carry, e.g., “1 + (-1)” Carry from leftmost column V (overflow): indicates answer doesn’t fit when: both operands are +ve, but sum is -ve both operands are -ve, but sum is +ve another way to detect: carry into leftmost column is different from carry out of leftmost column

Condition Codes Subtraction is useful also for comparing numbers To compare A and B, perform A–B and use condition codes: Signed comparison: EQ == Z NE != ~Z LT < NV LE <= Z+(NV) GE >= ~(NV) GT > ~(Z+(NV)) Unsigned comparison: EQ == Z NE != ~Z LTU < ~C LEU <= ~C+Z GEU >= C GTU > ~(~C+Z) Subtraction is useful also for comparing numbers To compare A and B: First compute A – B Then check the flags Z, N, C, V Examples: LTU (less than for unsigned numbers) A < B is given by ~C LT (less than for signed numbers) A < B is given by NV Others in table

How long does addition take? (Latency) (TPD = max propagation delay or latency of the entire adder) An-1 Bn-1 An-2 Bn-2 A2 B2 A1 B1 A0 B0 A B CO CI S FA A B CO CI S FA A B CO CI S FA A B CO CI S FA A B CO CI S FA C … Sn-1 Sn-2 S2 S1 S0 Worst-case path: carry propagation from LSB to MSB, e.g., when adding 11…111 to 00…001. Total latency (max delay in producing outputs) is proportional to N: TPD  O(N) O(N) is read “order N” and tells us that the latency of our adder grows in proportion to the number of bits in the operands.

Can we add faster? Yes, there are many sophisticated designs that are faster… Carry-Lookahead Adders (CLA) Carry-Skip Adders Carry-Select Adders  See textbook for details

Adder Summary Adding is not only common, but it is also tends to be one of the most time-critical of operations As a result, a wide range of adder architectures have been developed that allow a designer to tradeoff complexity (in terms of the number of gates) for performance. Smaller / Slower Bigger / Faster Ripple Carry Carry Skip Carry Select Carry Lookahead Add A B S Add/Sub A B S At this point we’ll define a high-level functional unit for an adder, and specify the details of the implementation as necessary. sub

Shifting and Logical Operations

Shifting Logic Shifting is useful for logic operations applied to groups of bits used for alignment Shifting also used for “short cut” arithmetic operations shift left logical (sll) X << 1 is the same as 2*X (unless result overflows) shift right logical (srl) X >> 1 is the same as X/2 for unsigned numbers shift right arithmetic (sra) like a right shift, but maintains the sign bit makes the sign bit “sticky” X >>> 1 is the same as X/2 for 2’s-compl. numbers

Shifting Logic Examples: X = 2010 = 000101002 Left Shift: shifts in a 0 from the right end (X << 1) = 001010002 = 4010 Right Shift: shifts in a 0 from the left end (X >> 1) = 000010102 = 1010 Signed or “Arithmetic” Right Shift: maintains the sign bit -X = -2010 = 2’s complement of X = 111011002 (-2010 >>> 1) = (111011002 >>> 1) = 111101102 = -1010

Shifting Logic: Other shift amounts 1 R7 R6 R5 R4 R3 R2 R1 R0 X7 X6 X5 X4 X3 X2 X1 X0 “0” SLL1 Circuit for shifting left by 1 if SLL1 is true shifts the input X: R  X << 1 if SLL1 is false does not shift X: R  X Other shift amounts shift left by 2 rewire the multiplexors so each Xi feeds into Ri+2 similarly: shift left by 4, etc. also: srl and sra have similar circuitry srl: each Xi feeds into a lower numbered Rj sra: sign bit stays the same

Shifting Logic: Other shift amounts Circuit for shifting left by any amount make blocks for SLL1, SLL2, SLL4, SLL8, SLL16 then, any arbitrary shift amount can be made by combining these shifts example: SLL 13 = SLL (8 + 4 + 1) shift left by 16 SLL16 shift left by 8 SLL8 shift left by 4 SLL4 shift left by 2 SLL2 shift left by 1 SLL1 1 shift amount 13 = 01101 in binary!

Boolean Operations It will also be useful to perform logical operations on groups of bits. Which ones? ANDing is useful for “masking” off groups of bits. ex. 10101110 & 00001111 = 00001110 (mask selects last 4 bits) ANDing is also useful for “clearing” groups of bits. ex. 10101110 & 00001111 = 00001110 (0’s clear first 4 bits) ORing is useful for “setting” groups of bits. ex. 10101110 | 00001111 = 10101111 (1’s set last 4 bits) XORing is useful for “complementing” groups of bits. ex. 10101110 ^ 00001111 = 10100001 (1’s invert last 4 bits) NORing is useful for.. uhm… ex. 10101110 # 00001111 = 01010000 (0’s invert, 1’s clear)

Boolean Unit It is simple to build up a Boolean unit using primitive gates and a mux to select the function. Since there is no interconnection between bits, this unit can be simply replicated at each position. The cost is about 7 gates per bit. One for each primitive function, and approx 3 for the 4-input mux. This is a straightforward design several optimizations possible to make it more efficient Ai Bi Qi Bool 00 01 10 11 This logic block is repeated for each bit (i.e. 32 times) 2

An ALU, at last (without comparisons) Combine add/sub, shift and Boolean units Flags N,V,C A B Result Bidirectional Shifter Boolean Add/Sub Sub Bool Shft Math 1 0 Z Flag • 2-bit Bool used for shifter flavor also • A is shift amount that B is shifted by Sub Bool Shft Math OP 0 XX X 1 A+B 1 XX X 1 A-B X 00 1 0 B<<A X 10 1 0 B>>A X 11 1 0 B>>>A X 00 0 0 A & B X 01 0 0 A | B X 10 0 0 A ^ B X 11 0 0 A | B 5-bit ALUFN

A Complete ALU With support for comparisons (LT and LTU) A B Result LTU = ~C and LT = NV A B Result Bidirectional Shifter Boolean Add/Sub Sub Bool Shft Math 1 0 Sub Bool Shft Math OP 0 XX 0 1 A+B 1 XX 0 1 A-B 1 X0 1 1 A LT B 1 X1 1 1 A LTU B X 00 1 0 B<<A X 10 1 0 B>>A X 11 1 0 B>>>A X 00 0 0 A & B X 01 0 0 A | B X 10 0 0 A ^ B X 11 0 0 A | B 5-bit ALUFN 0 1 <? Flags N,V,C Bool0 Z Flag

Next Circuits for Multiplication Division Floating-Point Operations