1 instructions and addressing iosup/courses/2011_ti1400_4.ppt

53
1 Instructions and Addressing ttp://www.pds.ewi.tudelft.nl/~iosup/Courses/2011_ti1400_4.ppt

Post on 22-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

1

Instructions and Addressinghttp://www.pds.ewi.tudelft.nl/~iosup/Courses/2011_ti1400_4.ppt

Page 2: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

22

Lecture 1Making functions

time

A,B Y

A

BYADD

nand gates

Page 3: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

3

Lecture 1Making functions

Circuit Diagramhttp://xkcd.com/730/

Page 4: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

4

Lecture 2Programmable device

2,1 3ProgrammableDevice

input stream output stream

programREAD(X)READ(Y)ADD(X,Y,Z)WRITE(Z)

• READ(X) means read next input value from input stream and store it internally as variable X

• WRITE(X) means put value in variable X on output stream• ADD(X,Y,Z) means assign value of X+Y to Z

Page 5: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

5

Lecture 3Von Neumann Architecture

READ(X)READ(Y)ADD(X,Y,Z)WRITE(Z)

X: 1Y: 2Z: 3 • •

TEMP_A: TEMP_B: RESULT:

IR:

PC:

arithmeticunit

Central Processing Unit

CONTROL

Memory

Input

Output

Page 6: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

6

Problem: How to Represent and Use Data?

1. Representation2. Arithmetic3. Conversion

Page 7: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

7

Lecture 2Von Neumann Architecture

READ(X)READ(Y)ADD(X,Y,Z)WRITE(Z)

X: 1Y: 2Z: 3 • •

TEMP_A: TEMP_B: RESULT:

IR:

PC:

arithmeticunit

Central Processing Unit

CONTROL

Memory

Input

Output

Page 8: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

8

Problem: How to Represent and Use Data Instructions?

1. Representation2. Use (Addressing Data)

Page 9: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

99

Instructions and Addressing

1. Memory Layout2. Types of Instructions3. Use of Accumulator/Registers4. Execution of Instructions5. Addressing

Page 10: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

10

Computer System

READ(X)READ(Y)ADD(X,Y,Z)WRITE(Z)

X: 1Y: 2Z: 3 • •

IR:

PC:

arithmeticunit

Central Processing Unit

controlunit

Main Memory

Input

Output

registers

Data and Instructions Instruction RegisterProgram Counter

Page 11: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

11

Main Memory Addressing

000000000 00000000 000000000000000

000000000 00000000 000000000000000

000000000 00000000 000000000000000

Bit

Byte(8 bits)

Word(16-64

bits)

Address0

Address31

0

8 16 24

1 2 3

0

Page 12: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

12

Q1: How many bits required to address?1. 1KB of memory

A. By Bit (13)B. By Byte (10)C. By Word of 32 bits

(8)

2. 1MB of memoryA. By Bit (23)B. By Byte (20)C. By Word of 32 bits

(18)

3. 1GB of memoryA. By BitB. By ByteC. By Word of 32 bits

4. 1TB of memoryA. By BitB. By ByteC. By Word of 32 bits

Q2: How much memory can be addressed by byte for a 32-bit architecture?Q3: Why use byte memory addressing?

Page 13: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

13

Instruction and wordlength (1/3)

instruction

instruction

instructioninstruction

012345678910

word

instructioninstructioninstruction instructioninstruction instruction

012345678910

wordaddress address

Page 14: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

14

Instruction and wordlength (2)

instructioninstructioninstruction instructioninstruction instruction

012345678910

wordaddress

instructioninstructioninstruction instructioninstruction instruction

Page 15: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

15

Instruction and wordlength (3)

012345678910

wordaddress

instructioninstr. instrinstruction instr. instrinstruction instr. instr

instructioninstr. instrinstruction instr. instrinstruction instr. instr

Page 16: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

16

32 bit word formats

opcode specifier operand specifiers

31 30 1 0

byte byte byte byte

a two’s complement number

4 ASCII characters

32 bit

a machine instruction

Page 17: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

17

Byte ordering (endianness)

0 1 2 34 5 6 78 9 - -- - - -- - - -

0

21

Word Index

Big endiane.g., Motorola PowerPC 68k

3 2 1 07 6 5 4- - 9 8- - - -- - - -

0

21

Little endiane.g., Intel

Jonathan Swift’s Gulliver’s Travells

Page 18: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

18

Q1 (the NUXI problem)

• What problems can occur in porting data between machines with big-endian and little-endian storage? (Hint: networked machines)

Q2 Why use the little endian byte ordering?

Q3 Why use the big endian byte ordering?

• (Hint: value 4 as single- and multi-byte)

Page 19: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

1919

Instructions and Addressing

1. Memory Layout2. Types of Instructions3. Use of Accumulator/Registers4. Execution of Instructions5. Addressing 2.1. Data Copy Operations

2.2. Arithmetic And Logic Ops.2.3. Program flow control Ops.2.4. I/O operations

Page 20: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

20

Types of Instructions

• There are 4 types of instructions- Data Copy operations

• between memory and registers• between memory locations • between registers

- Arithmetic and Logic operations- Program flow control operations- I/O operations

Page 21: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

21

Symbolic notation

• Copy instructions [R1 ] M(LOC)

• Arithmetic operations M(C) M(A) + M(B)

• LOC, A, and B are memory addresses• M(address) means contents of memory

location at address.• [R] means contents of register R.

Page 22: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

22

Operand specification formats

• Three-address instructionsformat: INSTR source#1,source#2,destinationexample: Add A,B,Cmeans: M(C) M(B) + M(A)

• Problem: 3-address instructions means long instruction words.- If k bits are needed for memory addressing,

then 3k bits are needed for addressing operands. (k=32 for 32-bit platforms.)

Page 23: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

23

Operand specification formats

• Two address instructionsformat: INSTR source, destinationexample: Add A,Bmeans: M(B) M(B) + M(A)

• Problem: 2-address instructions mean somewhat long word or multiple FETCHes per instruction. - If k bits are needed for memory addressing,

then 2k bits for addressing operands. (k=32 for 32-bit platforms.)

Page 24: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

24

Two address instruction Additional Problem: Operand OverrideAdd A,B

• Two operand instructions destroy contents of the B location

• Need other instruction to avoid that:Move B,C

• We then have Move B,C

Add A,C

meaning: M(C) M(B); M(C) M(C) + M(A);

Page 25: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

25

One address instructions

• One address - have implicit source (often called Accumulator)Load AAdd BStore Cmeaning[Accu ] M(A);[Accu ] [Accu ] + M(B);M(C) [Accu ]

Page 26: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

2626

Instructions and Addressing

1. Memory Layout2. Types of Instructions3. Use of Accumulator/Registers4. Execution of Instructions5. Addressing

Page 27: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

27

Registers

• Many computers have a number of General-Purpose registers inside the CPU

• Access to registers is faster than to memory locations

• Used to store temporary data during processing

• Registers require less bits of address than main memory

Page 28: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

28

Register addressing

• Let Ri denote register• General operation ADD A,B,C can be

broken down toMove A,R0Add B,R0Store R0,Cmeaning [R0] M(A); [R0] [R0] + M(B); M(C) [R0]

Page 29: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

29

Instruction Formats (Summary)

opcode specifier operand specifiers

general format

one operand addressing

opcode operand operand

two operand addressing

opcode operand

Page 30: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

30

Accumulator architecture

AccumulatorPC

CPU

MainMemory

Page 31: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

31

Question

How many instructions can be defined when the opcode field is 5 bit ?

Page 32: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

32

Example

instruction

accu

4 bits 12 bits

opcode operandm

15 0

sign bit

Page 33: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

33

Instruction setCode Opcode Meaning

01000101011001111000100110101011

LoadStoreAddSubMulDivAndOr

[Accu] M(m)M(m) [Accu][Accu] [Accu] + M(m)[Accu] [Accu] - M(m)[Accu] [Accu] * M(m)[Accu] [Accu] / M(m)[Accu] [Accu] & M(m)[Accu] [Accu] v M(m)

000000010010

JMPJSRRTS

Goto mCall Subroutine at mReturn from Subroutine

1100110111101111

JZJNZJPJN

Goto m if [Accu]= 0Goto m if [Accu] =/ 0Goto m if [Accu] > 0Goto m if [Accu] < 0

Page 34: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

34

Multiple register architecture

R0CPU

MainMemory

R1

R2

R3

Page 35: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

3535

Instructions and Addressing

1. Memory Layout2. Types of Instructions3. Use of Accumulator/Registers4. Execution of Instructions5. Addressing

Page 36: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

36

Straight-line sequencing

…...…...

…….

Move A,R0Add B,R0Move R0,C • •

ii+4i+8

AB

C

address

Program for M(C)=M(B)+M(A)

Page 37: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

37

Straight-line sequencing

Add Nn,R0Move R0,S

Move N1,R0Add N2,R0Add N3,R0 • •

ii+4i+8

i+4n-4i+4n

address

Program for addition of n numbers

Page 38: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

38

Branching

......

n

Clear R0Move N,R1

Decr R1Branch>0 LMove R0,S

L

SNN1

NnProgram for addition of n numbers

Determine address of“next” number and add itto R0

programloop

Page 39: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

39

Common branch conditions

• N (negative) set to 1 of result is negative• Z (zero) set to 1 of result is zero• V (overflow) set to 1 of result overflows• C (carry) set to 1 of carry-out results

Page 40: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

40

Question

Why is the carry condition important?

Page 41: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

4141

Instructions and Addressing

1. Memory Layout2. Types of Instructions3. Use of Accumulator/Registers4. Execution of Instructions5. Addressing 5.1. Addressing Modes

5.2. Immediate Addressing5.3. Direct Addressing5.4. Indirect Addressing5.5. Index Addressing

Page 42: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

42

Addressing modes

• Addressing modes determine how the address of operands is determined

• Typical 4 addressing modes- immediate addressing- direct addressing- indirect addressing- index addressing

Page 43: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

43

Immediate addressing (1)

opcode specifier operand

instruction

ADD # -1JNZ 10 • •

10

example: simple counting loop

Page 44: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

44

Immediate addressing (2)• Advantages:

- no additional calculations needed to obtain operand

- fast

• Disadvantages:- Operand value must be known- Operand value cannot be changed- Limited no of bits available

• Notation: MOVE #200,R0• Meaning: [R0] 200

Page 45: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

45

Direct addressing(1)

opcode specifier mem or reg address

instruction

memoryor

registers

ADD 13JNZ 10 • # -1

10

13

Page 46: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

46

Direct addressing(2)• Advantages:

- Operand separate from instruction- Can be changed- Full word length available

• Disadvantages:- More memory accesses- More storage occupation

• Notation: ADD R1,R2• Meaning: [R2] [R2] +[R1]• Also called “Absolute addressing” (Ham.)

Page 47: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

47

Indirect addressing (1)

ADD (12)JNZ 10 13 # -1

10

13

opcode specifier mem or reg address

instruction

op. address

operand

memoryor

registers

Page 48: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

48

Indirect addressing (2)

• Advantages:- Actual address of operand is not in instruction- Can be changed

• Disadvantages:- Even more memory or register references- More memory occupation

• Notation: ADD (R1),R2• Meaning: [R2] [R2] + M([R1])

Page 49: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

49

Example indirect addressing

programloop L

N

N1

Clear R0

Move N,R1

Move #N1,R2

Add (R2),R0

Add #4,R2

Decr R1

Branch>0 L

Move R0,S

n

S

Page 50: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

50

Index addressing (1)

opcode Reg index

instruction

operand

memoryor

registers

operand

+

registers

Page 51: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

51

Index addressing (2)

• Advantages:- Allows specification of fixed offset to operand

address

• Disadvantages:- Extra addition to operand address

• Notation: ADD X(R1),R3 (X=number)• Meaning: [R3] [R3] + M([R1] + X)

Page 52: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

52

Example index addressing

NE

Program with index addressing

programloop

sexagesalary

nEmpoyee IDsexagesalaryEmpoyee ID

L

Move #E,R0

Move N,R1

Clear R2

Add 8(R0),R2

Add #16,R0

Decrement R1

Branch>0 L

Div R1,R2

Move R2,Sum

Move N,R1

Page 53: 1 Instructions and Addressing iosup/Courses/2011_ti1400_4.ppt

TU-DelftTI1400/11-PDS

53

Additional modes

• Some computers have auto-increment (decrement instructions)

• Example: (R0)+• Meaning .. M(R0)..; [R0] [R0]+1• Example: -(R0)• Meaning [R0] [R0]-1; .. M(R0)..