lecture08-processorese150/spring2020/... · 3/29/20 5 idea Òstore register and gate outputs in...

14
3/29/20 1 ESE150 Spring 2020 1 ESE 150 D IGITAL A UDIO B ASICS Lecture #8 – Stored-Program Processors Based on slides © 2009--2020 DeHon S O F AR 2 EULA -------- -------- click OK A/D sample domain conversion MP3 Player / iPhone / Droid compress freq D/A MIC speaker 2 4 3 Music Numbers correspond to course weeks 1 10101 10101001101 pyscho- acoustics 5,6 ESE150 Spring 2020 H OW P ROCESS Ò How do we build a machine to perform these operations? É From Digital Samples à compressed digital data à Digital Samples Ò With simple gates and registers É can build a machine to perform any digital computation É if we have enough of them. ESE150 Spring 2020 3 E CONOMY AND U NIVERSALITY Ò What if we only have a small number of gates? Ò OR … how many physical gates do we really need? É How do we perform computation with minimal hardware? Ò How do we change the computation performed by our hardware? ESE150 Spring 2020 4 L ECTURE T OPICS Ò Setup Ò Where are we? Ò Memory Ò One-gate processor Ò Wide-Word, Stored-Program Processor Ò Contemporary Processors: ARM, Arduino Ò Next Lab 5 ESE150 Spring 2020 C OURSE M AP 6 NIC 10101001101 EULA -------- -------- click OK NIC CPU A/D sample domain conversion MP3 Player / iPhone / Droid File- System 10101001101 compress freq pyscho- acoustics D/A MIC speaker 2 4 5,6 3 7,8,9 10 11 13 12 Music Numbers correspond to course weeks 1 ESE150 Spring 2020

Upload: others

Post on 25-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

1

ESE150 Spring 2020

1

ESE 150 –DIGITAL AUDIO BASICS

Lecture #8 – Stored-Program Processors

Based on slides © 2009--2020 DeHon

SO FAR

2

EULA----------------clickOK

A/D

sample

domain conversion

MP3 Player / iPhone / Droid

compressfreq

D/A

MIC

speaker

2 43

Music

Numbers correspond to course weeks

1

10101

10101001101

pyscho-acoustics

5,6

ESE150 Spring 2020

HOW PROCESS

Ò How do we build a machine to perform these operations?É From Digital Samples à compressed digital data à

Digital Samples

Ò With simple gates and registersÉ can build a machine to perform any digital computationÉ …if we have enough of them.

ESE150 Spring 2020

3

ECONOMY AND UNIVERSALITY

Ò What if we only have a small number of gates?Ò OR … how many physical gates do we really

need?É How do we perform computation with minimal hardware?

Ò How do we change the computation performed by our hardware?

ESE150 Spring 2020

4

LECTURE TOPICSÒ SetupÒ Where are we?Ò MemoryÒ One-gate processorÒ Wide-Word, Stored-Program ProcessorÒ Contemporary Processors: ARM, ArduinoÒ Next Lab

5

ESE150 Spring 2020

COURSE MAP

6

NIC

10101001101

EULA----------------clickOK

NIC

CPU

A/D

sample

domain conversion

MP3 Player / iPhone / Droid

File-System

10101001101

compressfreq pyscho-

acoustics

D/A

MIC

speaker

2 4

5,6

3

7,8,9

10

1113

12

Music

Numbers correspond to course weeks

1

ESE150 Spring 2020

Page 2: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

2

COURSE MAP – WEEK 9

7

EULA----------------clickOK

A/D

sample

domain conversion

MP3 Player / iPhone / Droid

compressfreq

D/A

MIC

speaker

2 43

Music

Numbers correspond to course weeks

1

10101001101

pyscho-acoustics

5,6

ESE150 Spring 2020

8

QUICK REMINDER

ESE150 Spring 2020

MULTIPLEXER GATE

Ò MUXÉ When S=0, output=i0É When S=1, output=i1

ESE150 Spring 2020

9

S i0 i1 Mux2(S,i0,i1)0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 01 0 1 11 1 0 01 1 1 1

STATE ELEMENT

Ò Latch or Register is a state elementÒ Allows circuit to remember a valueÒ Build computations that

É Depend on past inputsÉ Reuse hardware in time

ESE150 Spring 2020

10

MUX CAN BE A PROGRAMMABLE GATE

Ò Programmable GateÉ Can be programmed to act as any gateÉ Use state (e.g. FF) to “program” truth table of a gate

ESE150 Spring 2020

11

Input 0 Input 1 Output0 00 11 01 1

NAND UNIVERSALITY

Ò Can implement any combinational logic function out of a collection of NAND2 gatesÉ Or AND, OR, NOT combinationÉ Or Programmable MUX gates (OR)

ESE150 Spring 2020

12

Page 3: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

3

PRECLASS 1

Ò What Function?É o1=a&b | b&c | a&c; É o2=a^b^c;

Ò How many gates?

ESE150 Spring 2020

13

PRECLASS 1 IN GATESESE150 Spring 2020

14

a b b c a c

1 2 4

c

a b

6

7

3

5

15

MEMORY

ESE150 Spring 2020 ESE150 Spring 2020

16

RANDOM ACCESS MEMORY

Ò A Memory:É Series of locations (slots)É Can write values a slot (specified by address, WA)É Read values from (by address, RA)É Return last value written

Notation:slash on wiremeans multiple bits wide

Write?

WA

RA

Dout

Din

ESE150 Spring 2020

17

TWO PIECES OF A MEMORY

1. Element to remember a value2. Way to address/select that element

Write?

WA

RA

Dout

Din

COULD BUILD MEMORY W/ MUXES & LATCHES… COLLECTION OF REGISTERS

Ò Use latch to remember (store) values

Ò Perform read select (addressing) with a multiplexer

ESE150 Spring 2020

18

A[1:0]

Latches

latchenables

latch inputs

MUX

Page 4: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

4

COULD BUILD MEMORY W/ MUXES & LATCHES… COLLECTION OF REGISTERS

Ò Perform write select (addressing) with a decoder

ESE150 Spring 2020

19

Latches

MUX

in

outs

RA[1:0]

WA[1:0]

Write?

De

co

de

r

COULD BUILD MEMORY W/ MUXES & LATCHES… COLLECTION OF REGISTERS

Ò Show Decoder logic

Latches

MUX

in

outs

RA[1:0]

WA[1:0]

Write?

w0=Write? & !WA[1] & !WA[0]

Decoder

0 1 2 3

ESE150 Spring 2020

20

COULD BUILD MEMORY W/ MUXES & LATCHES… COLLECTION OF REGISTERS

Ò Show Decoder logic

ESE150 Spring 2020

21

Latches

MUX

in

outs

RA[1:0]

WA[1:0]

Write?

w0=Write? & !WA[1] & !WA[0]

Decoder

0 1 2 3

w1=Write? & !WA[1] & WA[0]

w2=Write? & WA[1] & ! WA[0]

w3=Write? & WA[1] & WA[0]

ESE150 Spring 2020

22

RANDOM ACCESS MEMORY (RAM)WITH CAPACITOR MEMORIES

Decoder

RA

Write?

Din

DoutLearn more: ESE370

WA

ESE150 Spring 2020

23

KEY ENGINEERING PROPERTY

Ò Store state compactly in memory

Ò A(memory cell) smallÉ A(mem) < A(gate)

Ò Depends on few inputs/outputs

É Memory cells shareinputs and ouptuts

Write?

WA

RA

Dout

Din

24

ONE-GATE PROCESSOR

ESE150 Spring 2020

Page 5: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

5

IDEA

Ò Store register and gate outputs in memoryÒ Compute one gate at a time

É Using a single physical gate

ESE150 Spring 2020

25

BASIC IDIOM

Repeat:1. Read gate value from memory2. Perform operation on gate3. Write result back to memory

ESE150 Spring 2020

26

In1

In0

FunctionLatches

MUX

in

outs

RA[1:0]

WA[1:0]

Write?

De

co

de

r

OPERATIONESE150 Spring 2020

27

a b b c a c

1 2 4

c

a b

6

7

3

5

In1

In0

Function

OPERATION SEQUENCEESE150 Spring 2020

28

Missing description?

Missing C step?

In1

In0

Function

OBSERVE

Ò We can sequentialize operations,reusing the single gate

Ò As long as we can specify the operation to be performed

Ò What are we specifying?É (break it down, what information need?)

ESE150 Spring 2020

29

In1

In0

Function

INSTRUCTION

Ò Call this specification an instructionÒ Instructs the programmable,

reusable operators on what to perform

ESE150 Spring 2020

30

In1

In0

Function

Page 6: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

6

EXPANDING THE STRUCTURE: INPUT

Ò Add a multiplexer to bring in inputs

Ò Allow as option to write into data memory

ESE150 Spring 2020

31

In1

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

value

Data Memory (Slots)

EXPANDING THE STRUCTURE: OUTPUT

Ò Add way to load a designated output register

ESE150 Spring 2020

32

In1

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

value

writeback enable, address, value(from bottom) −− goes to both memories

Data Memory (Slots)

load

selectoutput

EXPANDED CONTROL = INSTRUCTION

Ò Group the full control into instruction

Ò Set of bits that tells the structure what to do

ESE150 Spring 2020

33

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Outp

ut Load

C

ontr

ol

Type==WRITE

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

Type GateOp In1 In2 Out

FILLIN MISSING INSTRUCTIONESE150 Spring 2020

34

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Outp

ut Load

C

ontr

ol

Type==WRITE

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

Type GateOp In1 In2 Out

INSTRUCTION BITS

Ò Instructions are just a set of bits

Ò Type – 2 bitsÒ GateOp – 4 bitsÒ In1 – 3 bits

É Assume 8 slotsÒ In2 – 3 bitsÒ Out – 3 bits

ESE150 Spring 2020

35

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

Type GateOp In1 In2 Out

INSTRUCTION BITS EXAMPLE

Ò Fillin Missing

ESE150 Spring 2020

36

Page 7: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

7

INSTRUCTION SEQUENCE CONTROL

Ò How provide the sequence of instructions?

ESE150 Spring 2020

37

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

Type GateOp In1 In2 Out

INSTRUCTIONMEMORY

Ò Add Memory to hold set of InstructionsÉ Note contents match

table on p. 2 of preclass

Ò Counter to sequence instructions

ESE150 Spring 2020

38

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

Add 1

Address(ProgramCounter)

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Instruction Memory

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

000000000000000000000001000001000000010000010010001000001010010001001010100010111011100011010001000010100

010110000001011010110011010110100101110000001100101101000000

ANIMATE

Ò Start at PC=0

ESE150 Spring 2020

39

0

ANIMATE

Ò Start at PC=0Ò Read Instr. Mem at

0Ò (also compute next

PC by adding 1)

ESE150 Spring 2020

40

0

000000000000000

00

0000

000

000

000

1

ANIMATE

Ò Start at PC=0Ò Read Instr. Mem at

0Ò Decode

ESE150 Spring 2020

41

0

000000000000000

00

0000

000

000

000

10

a

1

ANIMATE

Ò Start at PC=0Ò Read Instr. Mem at

0Ò DecodeÒ From input

ESE150 Spring 2020

42

0

000000000000000

00

0000

000

000

000

10

a

a

a

1

Page 8: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

8

ANIMATE

Ò Start at PC=0Ò Read Instr. Mem at

0Ò DecodeÒ From inputÒ Write BackÒ Update PC

ESE150 Spring 2020

43

1

000000000000000

00

0000

000

000

000

10

a a

a

a

a

ANIMATE

Ò PC=1Ò Read Instr. Mem at

1

ESE150 Spring 2020

44

1

000000001000001

00

0000

000

001

001

10

a a

a

a

ab

2

ANIMATE

Ò PC=1Ò Read Instr. Mem at

1Ò DecodeÒ From Input

ESE150 Spring 2020

45

1

000000001000001

00

0000

000

001

001

10

a a

b

b

ab

2

ANIMATE

Ò PC=1Ò Read Instr. Mem at

1Ò DecodeÒ From InputÒ Writeback and

update PC

ESE150 Spring 2020

46

2

000000001000001

00

0000

000

001

001

10

a a

b

b

ab

bb

ANIMATE

Ò PC=2Ò Another read

ESE150 Spring 2020

47

2

000000010000010

00

0000

000

010

010

10

a a

c

c

ab

bb

c

3

ANIMATE

Ò PC=2Ò Another readÒ Writeback, update

PC

ESE150 Spring 2020

48

3

000000010000010

00

0000

000

010

010

10

a a

c

c

ab

bb

c

cc

Page 9: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

9

ANIMATE

Ò PC=3

ESE150 Spring 2020

49

3

010001000001011

01

0001

001

000

011

00

a a

ab

bb

c

cc

ba

a&b

a&b

ANIMATE

Ò PC=3Ò Writeback and

update PC

ESE150 Spring 2020

50

4

010001000001011

01

0001

001

000

011

00

a a

ab

bb

c

cc

ba

a&b

a&b

a&b

PROCESSOR

Ò Continue this sequenceÉ Given PCÉ Read from Instruction

MemoryÉ Instruction bits control

the datapath (memories, function, muxes)

Ð Read from data memoryÐ Perform operation

É Write results back to memory; update PC

ESE150 Spring 2020

51

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

Add 1

Address(ProgramCounter)

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Instruction Memory

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

000000000000000000000001000001000000010000010010001000001010010001001010100010111011100011010001000010100

010110000001011010110011010110100101110000001100101101000000

BASIC IDIOM

Repeat:1. Read gate value from memory2. Perform operation on gate3. Write result back to memory

ESE150 Spring 2020

52

In1

In0

Function

UNIVERSALPROCESSOR

Ò Can change computation simply be changing contents of instruction memory

ESE150 Spring 2020

53

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

Add 1

Address(ProgramCounter)

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Instruction Memory

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

000000000000000000000001000001000000010000010010001000001010010001001010100010111011100011010001000010100

010110000001011010110011010110100101110000001100101101000000

REVIEWÒ Single active

compute element (programmable gate)

Ò Sequence in timeÒ Store state in

memoryÒ Use Instruction

memory to select and sequence operations

ESE150 Spring 2020

54

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

Add 1

Address(ProgramCounter)

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Instruction Memory

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

000000000000000000000001000001000000010000010010001000001010010001001010100010111011100011010001000010100

010110000001011010110011010110100101110000001100101101000000

Page 10: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

10

55

STORED-PROGRAM PROCESSOR

ESE150 Spring 2020

“STORED PROGRAM” COMPUTER

Ò Can build physical machines that perform any computation.

Ò Can be built with limited hardware that is reused in time.

Ò Historically: this was a key contribution of Penn’s Moore SchoolÉ ENIACà EDVACÉ Computer Engineers:

Eckert and MauchlyÉ (often credited to

Von Neumann)

ESE150 Spring 2020

56

ESE150 Spring 2020

57

BASIC IDEA

Ò Express computationin terms of a few primitivesÉ E.g. Add, Multiply, OR, AND, NAND

Ò Provide one of each hardware primitiveÒ Store intermediates in memoryÒ Sequence operations on hardware to perform

larger computationÒ Store description of operation sequence in

memory as well – hence “Stored Program”Ò By filling in memory, can program to perform

any computation

BUILDING OUT

Ò How limited?Ò How might improve?

ESE150 Spring 2020

58

In1

Out

In0

Function

Input 0

Input 1

Input 3

Input 4

Input 5

Input 6

Input 7

Input 2

Type==READ

Output 0

Output 1

Output 2

Output 3

Output 4

Output 5

Output 6

Output 7

Ou

tpu

t L

oa

d

Co

ntr

ol

Type==WRITE

Add 1

Address(ProgramCounter)

enable address valuewriteback

writeback enable, address, value(from bottom) −− goes to both memories

(registers)

Instruction Memory

Data Memory (Slots)

(In1 bits are read address of right memory only)

(In0 bits are read address of left memory only)

000000000000000000000001000001000000010000010010001000001010010001001010100010111011100011010001000010100

010110000001011010110011010110100101110000001100101101000000

BEYOND SINGLE GATE

Ò Single gate extreme to make the high-level pointÉ Except in some particular cases, not practical

Ò Usually reuse larger blocksÉ AddersÉ Multipliers

Ò Get more done per cycle than one gateÒ Now it’s a matter of engineering the design point

É Where do we want to be between one gate and full circuit extreme?

É How many gate evaluations should we physically compute each cycle?

ESE150 Spring 2020

59

WORD-WIDE PROCESSORS

Ò Common to compute on multibit wordsÉ Add two 16b numbersÉ Multiply two 16b numbersÉ Perform bitwise-XOR on two 32b numbers

Ò More hardware É 16 full adders, 32 XOR gates

Ò All programmable gates doing the same thingÉ So don’t require more instruction bits

ESE150 Spring 2020

60

Page 11: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

11

MULTIBIT BUS SYMBOLSESE150 Spring 2020

61

b[3:0] a[3:0]

c[3:0]

4

a[0]b[0]a[1]b[1]a[2]b[2]a[3]b[3]

c[3] c[2] c[1] c[0]

Write?

WA

RA

Dout

Din

ESE150 Spring 2020

62

ARITHMETIC AND LOGIC UNIT (ALU)

Ò A common logic primitive is the ALUÉ Can perform any of a number of operations on a

series of words (strings of bits)É Operations:Add, subtract, shift-left, shift-right,

bitswise xor, and, or, invert, ….É Operates on “words”

Ò Identify a set of control bits that select the operation it formsÉ Makes it “programmable”

ESE150 Spring 2020

63

ALU OPS (ON 8BIT WORDS)

Ò ADD 00011000 00010100 =É Add 0x18 to 0x14 result is:É Add 24 to 20

ESE150 Spring 2020

64

ALU OPS (ON 8BIT WORDS)

Ò ADD 00011000 00010100 = 00101100É Add 0x18 to 0x14 =0x2C0É Add 24 to 20 =44

Ò SUB 00011000 00010100 = 00000100É Subtract 0x14 from 0x18 .. 0x04

Ò INV 00011000 XXXXXXXX =É Invert the bits in 0x18 ...gives us:

ESE150 Spring 2020

65

ALU OPS (ON 8BIT WORDS)

Ò XOR 00011000 00010100 = 0001100Ò xor 0x18 to 0x14 = 0x0C

Ò ADD 00011000 00010100 = 00101100É Add 0x18 to 0x14 =0x2C0É Add 24 to 20 =44

Ò SUB 00011000 00010100 = 00000100É Subtract 0x14 from 0x18 .. 0x04

Ò INV 00011000 XXXXXXXX = 11100111É Invert the bits in 0x18 …0xD7

Ò SRL 00011000 XXXXXXXX =É Shift right 0x18 … gives us:

ESE150 Spring 2020

66

ALU OPS (ON 8BIT WORDS)

Ò ADD 00011000 00010100 = 00101100É Add 0x18 to 0x14 =0x2C0É Add 24 to 20 =44

Ò SUB 00011000 00010100 = 00000100É Subtract 0x14 from 0x18 .. 0x04

Ò INV 00011000 XXXXXXXX = 11100111É Invert the bits in 0x18 …0xD7

Ò SLL 00011000 XXXXXXXX = 00001100É Shift right 0x18 …0x0C

Page 12: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

12

ESE150 Spring 2020

67

ALU OPS (ON 8BIT WORDS)

Ò ADD 00011000 00010100 = 00101100É Add 0x18 to 0x14 =0x2C0É Add 24 to 20 =44

Ò SUB 00011000 00010100 = 00000100É Subtract 0x14 from 0x18 .. 0x04

Ò INV 00011000 XXXXXXXX = 11100111É Invert the bits in 0x18 …0xD7

Ò SLL 00011000 XXXXXXXX = 00001100É Shift right 0x18 …0x0C

Ò XOR 00011000 00010100 = 0001100Ò xor 0x18 to 0x14 = 0x0C

ESE150 Spring 2020

68

ALU ENCODING

Ò Each operation has some bit sequenceÒ ADD 0000Ò SUB 0010Ò INV 0001Ò SLL 1110Ò SLR 1100Ò AND 1000

ALU-BASED WORD-WIDE PROCESSORESE150 Spring 2020

69

ALU

InstrMem

+1

ALU-BASED WORD-WIDE PROCESSORESE150 Spring 2020

70

ALU

InstrMem

+1

BEYOND LINEAR SEQUENCE

Ò So far, processor can run a fixed sequence

Ò CannotÉ Implement a loop É Implement an if-then-else

ESE150 Spring 2020

71

ALU

InstrMem

+1

BRANCHING

Ò Allow PC to advance by value other than 1É Could be negative

Ò Allow data to impactselectionÉ Only load when data bit is 1

Ò Add Instruction bits(or instruction) to control loading

Ò BRANCH if (SRC1[0]==1) to PC+SRC2

ESE150 Spring 2020

72

+

ALU

InstrMem

1

PC

Page 13: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

13

ESE150 Spring 2020

75

CONTEMPORARY PROCESSORS

ESE150 Spring 2020

76

Ò Compare ARM7

IPOD PROCESSOR

ARDUINOAVR

ESE150 Spring 2020

77

ATmega328/P Datasheet

ARDUINOAVRÒ Adds separate

Data Memory from Register File

Ò (common, omitted above for simplicity)

ESE150 Spring 2020

78

ATmega328/P Datasheet

ARDUINOAVRÒ 8-bit architecture

É 8b wide ALUÒ 32x8 Register File

É 32 registerÉ 8b wide

Ò 16b instructionsÉ “most” instructions

Ò 32KB program memoryÉ Flash2KB data

memoryÉ SRAM

ESE150 Spring 2020

79

ATmega328/P Datasheet

INSTRUCTIONS: TWO OPERAND

Ò Arduino (AVR) has 2-operand, where one operation is both source and destination

Ò ADD R1, R2É Says: R1ßR1+R2

Ò Use to make code more compact

ESE150 Spring 2020

80

Page 14: Lecture08-processorese150/spring2020/... · 3/29/20 5 IDEA ÒStore register and gate outputs in memory ÒCompute one gate at a time ÉUsing a single physical gate ESE150 Spring 2020

3/29/20

14

AVR INSTRUCTIONSESE150 Spring 2020

81

ATmega328/P Datasheet

AVR INSTRUCTIONS (LAB APPENDIX)

Instruction Encoding

Instruction Description Min Cycles Max Cycles

add Rd, Rr Add without carry: Rd = Rr + Rd and C is set to the carry-out bit

1 1adc Rd, Rr Add with carrying: Rd = Rd + Rr + C

(which was previously set); C is set to the new carry-out bit

1 1

and Rd, Rr Logical And: Rd = Rd AND Rr 1 1brne OFFSET Branch Not Equal: If Z=0, Move the

instruction execution (back or forward) by OFFSET.

1 2

brpl OFFSET Branch if Positive: If N=0, Move the instruction execution (back or forward) by OFFSET.

1 2

ESE150 Spring 2020

82

DATA MEMORY READ / WRITE (LOAD/STORE)

ESE150 Spring 2020

83

ATmega328/P Datasheet

NEXT LAB

Ò Look at Instruction-Level code for ArduinoÒ Understand performance from instruction-level

code

Ò Need to download Arduino IDE for your computer

84

ESE150 Spring 2020

BIG IDEAS

Ò Memory stores data compactlyÒ Can implement large computations on small

hardware by reusing hardware in timeÉ Storing computational state in memory

Ò Can store program control in instruction memoryÉ Change program by reprogramming memoryÉ Universal machine: Stored-Program Processor

85

ESE150 Spring 2020

LEARN MORE

Ò CIS240 – processor organization and assemblyÒ CIS371 – implement and optimize processors

É Including FPGA mapping in VerilogÒ ESE370 – implement memories (and gates)

using transistors

86

ESE150 Spring 2020