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

Arithmetic

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Arithmetic

1

Arithmetic

• Where we've been:

– Abstractions: Instruction Set Architecture Assembly Language and Machine Language

• What's up ahead:

– Implementing the Architecture

32

32

32

operation

result

a

b

ALU

Page 2: Arithmetic

2

• Problem: Consider a logic function with three inputs: A, B, and C.

Output D is true if at least one input is trueOutput E is true if exactly two inputs are trueOutput 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.

Review: Boolean Algebra & Gates

Page 3: Arithmetic

3

• 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

b

a

operation

result

op a b res

An ALU (arithmetic logic unit)

Page 4: Arithmetic

4

• Selects one of the inputs to be the output, based on a control input

• What does it look like on the inside?

• Let’s build our ALU using a MUX:Figure 4.9, p. 231

S

CA

B0

1

Review: The Multiplexor

note: we call this a 2-input mux even though it has 3 inputs!

Page 5: Arithmetic

5

• 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. 234)

• How could we build a 32-bit ALU? (p. 235)

Different Implementations

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

Sum

CarryIn

CarryOut

a

b

Page 6: Arithmetic

6

Building a 32 bit ALU

b

0

2

Result

Operation

a

1

CarryIn

CarryOut

Result31a31

b31

Result0

CarryIn

a0

b0

Result1a1

b1

Result2a2

b2

Operation

ALU0

CarryIn

CarryOut

ALU1

CarryIn

CarryOut

ALU2

CarryIn

CarryOut

ALU31

CarryIn

Page 7: Arithmetic

7

• Two's complement approach: just negate b and add.

• How do we negate?

• A very clever solution (p. 236):

What about subtraction (a – b) ?

0

2

Result

Operation

a

1

CarryIn

CarryOut

0

1

Binvert

b

Page 8: Arithmetic

8

• 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

Tailoring the ALU to the MIPS

Page 9: Arithmetic

Supporting slt

• Can we figure out the idea?0

3

Result

Operation

a

1

CarryIn

CarryOut

0

1

Binvert

b 2

Less

0

3

Result

Operation

a

1

CarryIn

0

1

Binvert

b 2

Less

Set

Overflowdetection

Overflow

a.

b.

Page 10: Arithmetic

10

Seta31

0

ALU0 Result0

CarryIn

a0

Result1a1

0

Result2a2

0

Operation

b31

b0

b1

b2

Result31

Overflow

Binvert

CarryIn

Less

CarryIn

CarryOut

ALU1Less

CarryIn

CarryOut

ALU2Less

CarryIn

CarryOut

ALU31Less

CarryIn

Page 11: Arithmetic

11

Test for equality

• Notice control lines:

000 = and001 = or010 = add110 = subtract111 = slt

•Note: zero is a 1 when the result is zero!

•See p. 241 for ALU symbolSet

a31

0

Result0a0

Result1a1

0

Result2a2

0

Operation

b31

b0

b1

b2

Result31

Overflow

Bnegate

Zero

ALU0Less

CarryIn

CarryOut

ALU1Less

CarryIn

CarryOut

ALU2Less

CarryIn

CarryOut

ALU31Less

CarryIn

Page 12: Arithmetic

12

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 pp. 241-249