html5-img
1 / 12

Arithmetic

operation. a. ALU. 32. result. 32. b. 32. Arithmetic. Where we've been: Abstractions: Instruction Set Architecture Assembly Language and Machine Language What's up ahead: Implementing the Architecture. Review: Boolean Algebra & Gates.

kert
Download Presentation

Arithmetic

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 (NOT), AND, and OR gates.

  3. operation op a b res result 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 • Possible Implementation: • could use sum-of-products, but there’s an easier way a b

  4. S A C B Review: The Multiplexor • Selects one of the inputs to be the output, based on a control input • What does it look like on the inside? (p. B-10) • C = (A AND Not(S)) OR (B AND S) • Let’s build our ALU using a MUX:Figure B.5.1, p. B-26 note: we call this a 2-input mux even though it has 3 inputs! 0 1

  5. Different Implementations • Not easy to decide the “best” way to build something • Don't want too many inputs to a single gate • Don’t 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: • How could we build a 1-bit ALU for add, and, and or? (p. B-29) • How could we build a 32-bit ALU? (p. B-30) cout = a b + a cin + b cin (set if at least 2 inputs are set) sum = a xor b xor cin (set if exactly 1 input is set or all 3 are set

  6. Building a 32 bit ALU

  7. What about subtraction (a – b) ? • Two's complement approach: just negate b and add. • How do we negate? • A very clever solution (p. B-31):

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

  9. Supporting slt • Can we figure out the idea?

  10. Test for equality • Notice control lines:000 = and001 = or010 = add110 = subtract111 = slt • Note: zero is a 1 when the result is zero! • See p. B-36 for ALU symbol

  11. 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) • There are faster ways to do addition, for example. See section B.6

More Related