Vous êtes sur la page 1sur 8

Computer Architecture

Lecture 10: Combinational Circuits Previous two lectures.


! TOY machine.

Next two lectures.


!Digital circuits.

Culminating lecture.
George Boole (1815 – 1864) Claude Shannon (1916 – 2001) ! Putting it all together and building a TOY machine.

COS126: General Computer Sci ence • http://w w w .cs.Pri nceton.EDU/~cos126 2

Digital Circuits Wires

What is a digital system? Wires.


!Digital: signals are 0 or 1. !Propagate logical values from place to place.
!Analog: signals vary continuously. !Signals "flow" from left to right.
– A drawing convention, sometimes violated
Why digital systems? – Actually: flow from producer to consumer(s) of signal
!Accuracy and reliability.
Staggeringly fast and cheap.
0 0
!

Basic abstractions. 1 1
! On, off.
! Switch that can turn something on or off. 1
1
Digital circuits and you.
! Computer microprocessors. Input Output
! Antilock brakes.
! Cell phones.

3 4
Logic Gates Multiway AND Gates

Logical gates. AND(x0, x1, x2, x3, x4, x5, x6, x7).
! Fundamental building blocks. !1 if all inputs are 1.
!0 otherwise.

x x' x x
xy x+y
y y

0 0
0 0
0 0

0 0
0 1 0 1
1 1

1 1
1 0 0 1
0 0

1 1
1 1
1 1

NOT AND OR
5 6

Multiway OR Gates Boolean Algebra

OR(x0, x1, x2, x3, x4, x5, x6, x7). History.


!1 if at least one input is 1. ! Developed by Boole to solve mathematical logic problems (1847).
!0 otherwise. ! Shannon first applied to digital circuits (1937).

Basics.
! Boolean variable: value is 0 or 1.
! Boolean function: function whose inputs and outputs are 0, 1.

Relationship to circuits.
! Boolean variables: signals.
! Boolean functions: circuits.

7 8
Truth Table Truth Table for Functions of 2 Variables

Truth table. Truth table.


! Systematic method to describe Boolean function. ! 16 Boolean functions of 2 variables.
! One row for each possible input combination. – every 4-bit value represents one
! N inputs ! 2N rows.

Truth Table for All Boolean Functions of 2 Variables


0 x y ZERO AND x y XOR OR
AND Truth Table 0
0 0 0 0 0 0 0 0 0 0 0
x y AND(x, y) 0 1 0 0 0 0 1 1 1 1
0
0 0 0 0 1 0 0 0 1 1 0 0 1 1
1
1 1 0 1 0 1 0 1 0 1
0 1 0
1
1 0 0 0
0 Truth Table for All Boolean Functions of 2 Variables
1 1 1
1 x y NOR EQ y' x' NAND ONE
1
1 0 0 1 1 1 1 1 1 1 1
0 1 0 0 0 0 1 1 1 1
AND
1 0 0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 1 0 1
9 10

Truth Table for Functions of 3 Variables Universality of AND, OR, NOT

Truth table. Any Boolean function can be expressed using AND, OR, NOT.
! 16 Boolean functions of 2 variables. !"Universal."
– every 4-bit value represents one !XOR(x,y) = xy' + x'y
! 256 Boolean functions of 3 variables.
– every 8-bit value represents one
Expressing XOR Using AND, OR, NOT
2^(2^N) Boolean functions of N variables!
x y x' y' x'y xy' x'y + xy' XOR
!

0 0 1 1 0 0 0 0
Some Functions of 3 Variables 0 1 1 0 1 0 1 1
x y z AND OR MAJ ODD 1 0 0 1 0 1 1 1
0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
0 0 1 0 1 0 1
0 1 0 0 1 0 1 Notation Meaning
x' NOT x
0 1 1 0 1 1 0
xy x AND y
1 0 0 0 1 0 1
x+y x OR y
1 0 1 0 1 1 0
1 1 0 0 1 1 0
Exercise: {AND, NOT}, {OR, NOT}, {NAND}, {AND, XOR} are universal.
1 1 1 1 1 1 1

11 12
Sum-of-Products Translate Boolean Formula to Boolean Circuit

Any Boolean function can be expressed using AND, OR, NOT. Use sum-of-products form.
!Sum-of-products is systematic procedure. ! XOR(x, y) = xy' + x'y.
– form AND term for each 1 in truth table of Boolean function
– OR terms together

Expressing MAJ Using Sum-of-Products


x y z MAJ x'yz xy'z xyz' xyz x'yz + xy'z + xyz' + xyz
0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 1 1 1 1 0 0 0 1
1 0 0 0 0 0 0 0 0
1 0 1 1 0 1 0 0 1
1 1 0 1 0 0 1 0 1
1 1 1 1 0 0 0 1 1

13 14

Translate Boolean Formula to Boolean Circuit Simplification Using Boolean Algebra

Use sum-of-products form. Many possible circuits for each Boolean function.
! MAJ(x, y, z) = x'yz + xy'z + xyz' + xyz. !Sum-of-products not necessarily optimal in:
– number of gates (space)
– depth of circuit (time)

! MAJ(x, y, z) = x'yz + xy'z + xyz' + xyz = xy + yz + xz.

size = 8, depth = 3 size = 4, depth = 2


15 16
Expressing a Boolean Function Using AND, OR, NOT ODD Parity Circuit

Ingredients. ODD(x, y, z).


! AND gates. !1 if odd number of inputs are 1.
! OR gates. !0 otherwise.
! NOT gates.
! Wire.

Expressing ODD Using Sum-of-Products

Instructions. x y z ODD x'y'z x'yz' xy'z' xyz x'y'z + x'yz' + xy'z' + xyz
0 0 0 0 0 0 0 0 0
! Step 1: represent input and output signals with Boolean variables.
0 0 1 1 1 0 0 0 1
Step 2: construct truth table to carry out computation.
0 1 0 1 0 1 0 0 1
!

Step 3: derive (simplified) Boolean expression using sum-of products.


0 1 1 0 0 0 0 0 0
!

! Step 4: transform Boolean expression into circuit. 1 0 0 1 0 0 1 0 1


1 0 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 1 1

17 18

ODD Parity Circuit Let's Make an Adder Circuit

ODD(x, y, z). Goal: x + y = z for 4-bit integers. 1 1 1 0


!1 if odd number of inputs are 1. ! We build 4-bit adder: 9 inputs, 4 outputs. 2 4 8 7
0 otherwise. Same idea scales to 128-bit adder.
+ 3 5 7 9
! !

! Key computer component.


6 0 6 6

Step 1.
! Represent input and output in binary.
1 1 0 0

x3 0 0 1 0
x2 + 0 1 1 1
x1
1 0 0 1
x0 z3
+ z2
z1
x3 x2 x1 x0
z0
y3
+ y3 y2 y1 y0
y2
y1
c0 z3 z2 z1 z0
y0
19 20
Let's Make an Adder Circuit Let's Make an Adder Circuit

c0 c3 c2 c1 c0 = 0
Goal: x + y = z for 4-bit integers. Goal: x + y = z for 4-bit integers.
x3 x2 x1 x0 x3 x2 x1 x0
Step 2. (first attempt) + y3 y2 y1 y0 Step 2. (do one bit at a time) + y3 y2 y1 y0
Build truth table. Build truth table for carry bit.
z3 z2 z1 z0 z3 z2 z1 z0
! !

! Why is this a bad idea? ! Build truth table for summand bit.
– 128-bit adder: 2256+1 rows > # electrons in universe!

Carry Bit Summand Bit


4-Bit Adder Truth Table
xi yi ci ci+1 xi yi ci zi
c0 x3 x2 x1 x0 y3 y2 y1 y0 z3 z2 z1 z0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1
0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1
0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0
0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1
0 0 0 0 0 0 1 0 0 0 1 0 0 28+1 = 512 rows!
1 0 1 1 1 0 1 0
0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0
. . . . . . . . . . . . . 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
21 22

Let's Make an Adder Circuit Let's Make an Adder Circuit

c3 c2 c1 c0 = 0
Goal: x + y = z for 4-bit integers. Goal: x + y = z for 4-bit integers.
x3 x2 x1 x0
Step 3. + y3 y2 y1 y0 Step 4.
Derive (simplified) Boolean expression. Transform Boolean expression into circuit.
z3 z2 z1 z0
! !

! Chain together 1-bit adders.

Carry Bit Summand Bit


xi yi ci ci+1 MAJ xi yi ci zi ODD
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1 1 1
0 1 0 0 0 0 1 0 1 1
0 1 1 1 1 0 1 1 0 0
1 0 0 0 0 1 0 0 1 1
1 0 1 1 1 1 0 1 0 0
1 1 0 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1

23 24
Let's Make an Adder Circuit Subtractor

Goal: x + y = z for 4-bit integers. Subtractor circuit: z = x - y.


! One approach: design like adder circuit.
Step 4. ! Better idea: reuse adder circuit.
! Transform Boolean expression into circuit. – 2's complement: to negate an integer, flip bits, then add 1
! Chain together 1-bit adders.
x3
x2
x1
x0 z3
z2
x
+ z1

- y3 z0
x-y
y2
r ry
y1 ca
y y0
1

4-Bit Subtractor Interface 4-Bit Subtractor Implementation


25 26

Arithmetic Logic Unit: Interface Arithmetic Logic Unit: Implementation

ALU Interface. 16
!Add, subtract, bitwise and, bitwise xor, shift left, shift right, copy. Input 1
000
16 +
!Associate 3-bit integer with 5 primary ALU operations. Input 2
– ALU performs operations in parallel ~ carry in
– control wires select which result ALU outputs

& 001
16 16
Input 1
op 2 1 0 MUX
+, - 0 0 0
ALU 16
^
^
010
& 0 0 1
^ 0 1 0
<<, >> 0 1 1 << 011
input 2 1 0 0 16 >>
Input 2 3 op 2 1 0
+, - 0 0 0 100
ALU & 0 0 1
3
select ^ 0 1 0
shift subtract <<, >> 0 1 1
subtract shift direction ALU control
direction 27
input 2 1 0 0
28
Summary

Lessons for software design apply to hardware design!


! Interface describes behavior of circuit.
! Implementation gives details of how to build it.

Layers of abstraction apply with a vengeance!


! On/off.
! Controlled switch (transistor).
! Gates (AND, OR, NOT).
! Boolean circuit (MAJ, ODD).
! Adder.
! ...
! Arithmetic logic unit.
! ...
! TOY machine.

29

Vous aimerez peut-être aussi