Let’s build a !

Designing a CPU CPU: “” computer: CPU + display + optical disk + metal case + power supply + ...

the difference between your computer Last lecture: circuit that implements an and a TV set

This lecture: circuit that implements a CPU

Introduction to Computer Science • Robert Sedgewick and Kevin Wayne • Copyright © 2008 • http://www.cs.Princeton.EDU/IntroCS 2

TOY Lite Primary Components of Toy-Lite CPU

TOY machine.

• 256 16- words of memory. opcode Rs Rd1 Rd2 Arithmetic and Logic Unit (ALU) • 16 16-bit registers. 1 8-bit program . 4 to specify • opcode Rs addr one of 16 registers • 2 instruction types Memory 16 instructions. • 8 bits to specify one of 256 memory words TOY-Lite machine. Toy-Lite Registers • 16 10-bit words of memory. opcode Rs Rd1 Rd2 4 10-bit registers. • 2 bits to specify • 1 4-bit . opcode Rs addr one of 4 registers • 2 instruction types Registers: Program Counter and 16 instructions. 4 bits to specify • one of 16 memory words

“Control”

Goal: CPU circuit for TOY-Lite (same design extends to TOY, your computer)

3 4 Review of Combinational Circuits Useful Combinational Circuits

Controlled .

Adder Gates.

Incrementer (easy, add 0001)

Sum-of products implementation of Boolean functions Bitwise AND, XOR (easy)

Decoder

Adder Shifter (clever, but we’ll skip details)

Multiplexer

5 6

Decoder Decoder application: ALU!

Decoder. [n-bit] TOY arithmetic • n address inputs, 2n data outputs. 1: add input buses Addressed output bit is 1; others are 0. 2: subtract • TOY opcode bits • Implements n Boolean functions 3: and 4: xor sub 5: shift left 6: shift right add x0 x1 x2 z0 z6 z7 and 0 0 0 1 0 0 0 0 0 0 0 xor 0 0 1 0 1 0 0 0 0 0 0

0 1 0 0 0 1 0 0 0 0 0 Details: shift 0 1 1 0 0 0 1 0 0 0 0 • All circuits compute their result. Decoder lines AND all results. 1 0 0 0 0 0 0 1 0 0 0 • • “one-hot” OR collects answer. right 1 0 1 0 0 0 0 0 1 0 0

1 1 0 0 0 0 0 0 0 1 0

1 1 1 0 0 0 0 0 0 0 1

output 3-bit Decoder

7 8 Primary Components of Toy-Lite CPU Nuts and Bolts: Buses and

Bus. Parallel wires connecting major component. ! Arithmetic and Logic Unit (ALU) • Ex. Carry register bits to ALU. • Ex. Carry register bits to memory

Memory . Combinational circuit that selects among input buses. • Exactly one select line i is activated. • Copies bits from input bus i to output bus. Toy-Lite Registers

Processor Registers: Program Counter and Instruction Register

“Control”

CPU is a circuit: everything is “connected” but wires that can be “on” can be selected by other wires. 9 10

Nuts and Bolts: Buses and Multiplexers A New Ingredient: Circuits With Memory

Bus. Parallel wires connecting major component. Combinational circuits. • Ex. Carry register bits to ALU. • Output determined solely by inputs. • Ex. Carry register bits to memory • Ex: majority, adder, decoder, MUX, ALU.

Multiplexer (MUX). Combinational circuit that selects among input buses. Sequential circuits. • Exactly one select line i is activated. • Output determined by inputs and current “state”. • Copies bits from input bus i to output bus. • Ex: memory, program counter, CPU.

Ex. Simplest feedback loop. • Two controlled A and B, both connected to power, each blocked by the other. B • State determined by whichever switches first. Stable. • A

Aside. Feedback with an odd number of switches is a buzzer (not stable). Doorbell: buzzer made with relays. CPU is a circuit: everything is “connected” but wires that can be “on” can be selected by other wires. 11 12 SR Flip-Flop Memory Overview

x y x y SR Flip-flop. OR NOR and TOY have several memory components. • Two cross-coupled NOR gates x + y ( x + y )! • Program counter and other processor registers. OR gate NOR gate A way to control the feedback loop. TOY registers (4 10-bit words in Toy-Lite). • write 0 write 1 • • Abstraction that "remembers" one bit. • Main memory (16 10-bit words in Toy-Lite). write 0 write 1

• Basic building block for memory and registers. memory bit Implementation. memory bit Use one flip-flop for each bit of memory. • read • Use buses and multiplexers to group bits into words.

Access mechanism: when are contents available? • Processor registers: enable write. • Main memory: select and enable write. • TOY register: dual select and enable write need to be able to read two registers at once

Caveat. Timing, switching delay.

13 14

Processor register Bit Memory Bit Interface

Processor register bit. Extend a flip-flop to allow easy access to values. Memory and TOY register bits: Add selection mechanism.

[ TOY PC, IR ] [ TOY main memory ] [ TOY registers ]

15 16 Memory Bit: Switch Level Implementation Processor Register

Memory and TOY register bits: Add selection mechanism. Processor register. don't confuse with TOY register • Stores k bits. • Register contents always available on output bus. • If enable write is asserted, k input bits get copied into register.

Ex 1. TOY-Lite program counter (PC) holds 4-bit address. Ex 2. TOY-Lite instruction register (IR) holds 10-bit current instruction.

(4-bit)

[ TOY PC, IR ] [ TOY main memory ] [ TOY registers ]

17 18

Processor Register Processor Register

Processor register. don't confuse with TOY register Processor register. don't confuse with TOY register • Stores k bits. • Stores k bits. • Register contents always available on output bus. • Register contents always available on output bus. • If enable write is asserted, k input bits get copied into register. • If enable write is asserted, k input bits get copied into register.

Ex 1. TOY program counter (PC) holds 8-bit address. Ex 1. TOY program counter (PC) holds 8-bit address. Ex 2. TOY instruction register (IR) holds 16-bit current instruction. Ex 2. TOY instruction register (IR) holds 16-bit current instruction.

(4-bit)

19 20 Memory Bank Memory: Interface

Memory bank. Bank of n registers; each stores k bits. (four 6-bit words) • 6-bit • Read and write information to one of n registers. Address inputs specify which one. • log2n address bits needed • Addressed bits always appear on output. • If write enabled, k input bits are copied into addressed register.

Ex 0 (for lecture). 4-by-6 (four 6-bit words)

Ex 1. Main memory bank. • TOY: 256-by-16 • TOY-Lite: 16-by-10

Ex 2. Registers. 2-bit • TOY: 16-by-16 6-bit • TOY Lite: 4-by-10 Two output buses. • 21 22

Memory: Component Level Implementation Memory: Switch Level Implementation

Decoder plus memory selection: connect only to addressed word. (four 6-bit words)

23 24 TOY-Lite Memory Toy-Lite Registers

16 10-bit words 4 10-bit words • input connected to registers for “store” • Dual-ported to support connecting two different registers to ALU • output connected to registers for “load” • Input MUX to support input connection to ALU, memory, IR, PC addr connect to processor Instruction Register (IR) to ALU (in) to ALU (out) • MUX select to registers (in) to registers (out) to IR

to memory, IR to PC 25 26

Primary Components of Toy-Lite CPU How To Design a Digital Device

How to design a digital device. • Design interface: input buses, output buses, control wires. ! ALU • Determine components. • Determine requirements: "flow" of bits. • Establish control sequence. ! Memory

Warmup. Design a program counter (3 devices, 3 control wires).

! Registers

Goal. Design TOY-Lite computer (10 devices, 27 control wires). ! Processor Registers: Program Counter and Instruction Register

Not quite done. Need to be able to increment.

“Control”

27 28 Program Counter: Interface Program Counter: Components

Counter. Holds value that represents a binary number. Components. • Load: set value from input bus. • Register. • Increment: add one to value. • Incrementer. • Enable Write: make value available on output bus. • Multiplexer (to provide connections for both load and increment).

Ex. TOY-Lite program counter (4-bit).

29 30

Program Counter: Datapath and Control Program Counter: Datapath and Control

Datapath. Datapath. • Layout and interconnection of components. • Layout and interconnection of components. • Connect input and output buses. • Connect input and output buses.

Control. Choreographs the "flow" of information on the datapath. Control. Choreographs the "flow" of information on the datapath.

31 32 Program Counter: Datapath and Control Program Counter: Datapath and Control

Datapath. • Layout and interconnection of components. • Connect input and output buses.

Control. Choreographs the "flow" of information on the datapath.

1. load: 3. increment: copy input to register output plus 1 available in MUX copy to register

2. enable write: 4. enable write: register contents available on output register contents available on output

33 34

Primary Components of Toy-Lite CPU How To Design a Digital Device

How to design a digital device. • Design interface: input buses, output buses, control wires. ! ALU • Determine components. • Determine datapath requirements: "flow" of bits. • Establish control sequence. ! Memory

Warmup. Design a program counter (3 devices, 3 control wires).

! Toy-Lite Registers

Next. Design TOY-Lite computer (10 devices, 27 control wires). ! Processor Registers: Program Counter and Instruction Register

“Control”

35 36 TOY-Lite: Interface TOY-Lite: Components

CPU is a circuit.

Interface: switches and lights. • set memory contents • set PC value • press RUN • [details of connection to circuit omitted]

37 38

TOY-Lite: Layout TOY-Lite Datapath Requirements: Fetch

Basic machine operation is a cycle. • Fetch Fetch • Execute

Fetch. • Memory[PC] to IR Execute • Increment PC

Execute. • Datapath depends on instruction

39 40 TOY-Lite Datapath Requirements: Execute TOY-Lite: and Control

Instructions determine datapaths and control sequences for execute

. . . 0 halt . . . 1 add

2 subtract IR opcode to control 3 and control to ALU control wires 4 xor two registers to ALU ALU to register MUX 5 shift left 6 shift right 7 load address . . . 8 load . . . 9 store . . . A load indirect . . . B store indirect . . . C branch zero D branch positive . . . E jump register F jump and link datapaths

41 42

Datapath: Add Datapath: Load

fetch: fetch:

Memory[PC] to IR Memory[PC] to IR

execute: execute: IR opcode to control IR opcode to control increment control to ALU increment IR to addr MUX memory to register MUX increment PC two registers to ALU increment PC ALU to register MUX

43 44 Last step Clock

Solution 3? Control. Each instruction corresponds to a sequence of control signals. Clock. • Fundamental abstraction: regular on-off pulse. Q. How do we create the sequence? – on: fetch phase A. Need a “physical” clock. – off: execute phase Solution 2: Use a buzzer [need sufficiently long cycle to cover CPU switching] “external” device. clock • Synchronizes operations of different circuit elements. Solution 1: Use some other technology • • Requirement: clock cycle longer than max switching time.

CPU CPU cycle time

on

Clock off

45 46

How much does it Hert? Clocking Methodology

Frequency is inverse of cycle time. Two-cycle design. n Expressed in . • Each control signal is in one of four epochs. n Frequency of 1 Hz means that there is 1 cycle per second. – fetch [set memory address from pc] – 1 kilohertz (kHz) means 1000 cycles/sec. – fetch and clock [write instruction to IR] – 1 megahertz (MHz) means 1 million cycles/sec. – execute [set ALU inputs from registers] – 1 gigahertz (GHz) means 1 billion cycles/sec. – execute and clock [write result of ALU to registers] – 1 terahertz (THz) means 1 trillion cycles/sec.

Fetch

Fetch

Heinrich Rudolf Hertz (1857-1894) Execute

Clock

47 48 Control Tick-Tock

Control. Circuit that determines control line sequencing. CPU is a circuit, driven by a clock.

data bus to memory input Switches initialize memory, PC contents

external clock just ticks Clock ticks • fetch instruction from memory[PC] to IR • increment PC execute instruction control lines • to processor registers [details of instruction execution differ]

Fetch • fetch next instruction • ... opcode from IR Execute data bus control lines from ALU to ALU That’s all there is to it!

49 50

TOY-Lite CPU TOY "Classic", Back Of Envelope Design

51 52 Real (MIPS R10000) Layers of Abstraction

Abstraction Built From Examples

Abstract Switch raw materials transistor,

Connector raw materials wire

Clock raw materials crystal oscillator

abstract switches, Logic Gates AND, OR, NOT connectors

decoder, multiplexer, Combinational Circuit logic gates, connectors adder, ALU

logic gates, clock, Sequential Circuit flip-flop connector

decoder, multiplexer, registers, ALU, Components adder, flip-flop counter, control

Computer components TOY

53 54

History + Future Overview

Computer constructed by layering abstractions. What is COS 126? • Better implementation at low levels improves everything. ! Broad, but technical, intro to CS. • Ongoing search for better abstract switch! No prerequisites, intended for novices.

History. Goals. 1820s: mechanical switches. • ! Demystify computer systems. 1940s: relays, vacuum tubes. • ! Empower you to exploit available technology. • 1950s: transistor, core memory. ! Build awareness of substantial intellectual underpinnings. • 1960s: . • 1970s: microprocessor. • 1980s: VLSI. Topics. • 1990s: integrated systems. ! Programming in Java. • 2000s: web computer. ! Machine architecture. • Future: quantum, optical soliton, … ! Theory of computation.

Ray Kurzweil ! http://en.wikipedia.org/wiki/Image:PPTMooresLawai.jpg Applications to science, engineering, and commercial computing.

55 56