Top Banner
Saman Amarasinghe 1 6.035 ©MIT Simple Machine Model • Instructions are executed in sequence – Fetch, decode, execute, store results – One instruction at a time • For branch instructions, start fetching from a different location if needed – Check branch condition – Next instruction may come from a new location given by the branch instruction
92

Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Dec 22, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 1 6.035 ©MIT Fall 1998

Simple Machine Model

• Instructions are executed in sequence– Fetch, decode, execute, store results– One instruction at a time

• For branch instructions, start fetching from a different location if needed– Check branch condition– Next instruction may come from a new location

given by the branch instruction

Page 2: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 2 6.035 ©MIT Fall 1998

Simple Execution Model

• 5 Stage pipe-line

• Fetch: get the next instruction• Decode: figure-out what that instruction is• Execute: Perform ALU operation

– address calculation in a memory op

• Memory: Do the memory access in a mem. Op.• Write Back: write the results back

fetch decode execute memory writeback

Page 3: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 3 6.035 ©MIT Fall 1998

Simple Execution Model

IF DE EXE MEM WB

IF DE EXE MEM WB

Inst 1

Inst 2

time

Page 4: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 4 6.035 ©MIT Fall 1998

Simple Execution Model

IF DE EXE MEM WB

IF DE EXE MEM WB

Inst 1

Inst 2

time

IF DE EXE MEM WB

IF DE EXE MEM WB

IF DE EXE MEM WB

IF DE EXE MEM WB

IF DE EXE MEM WB

Inst 1

Inst 2

Inst 3

Inst 4

Inst 5

Page 5: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 5 6.035 ©MIT Fall 1998

From a Simple Machine Model to a Real Machine Model

• Many pipeline stages– MIPS R4000 has 8 stages

• Different instructions taking different amount of time to execute– mult 10 cycles– div 69 cycles– ddiv 133 cycles

• Hardware to stall the pipeline if an instruction uses a result that is not ready

Page 6: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 6 6.035 ©MIT Fall 1998

Real Machine Model cont.

• Most modern processors have multiple execution units (superscalar)– If the instruction sequence is correct, multiple

operations will happen in the same cycles– Even more important to have the right instruction

sequence

Page 7: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 7 6.035 ©MIT Fall 1998

Instruction Scheduling

• Reorder instructions so that pipeline stalls are minimized

Page 8: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 8 6.035 ©MIT Fall 1998

Constraints On Scheduling

• Data dependencies

• Control dependencies

• Resource Constraints

Page 9: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 9 6.035 ©MIT Fall 1998

Data Dependency between Instructions

• If two instructions access the same variable, they can be dependent

• Kind of dependencies – True: write read– Anti: read write– Output: write write

• What to do if two instructions are dependent.– The order of execution cannot be reversed – Reduce the possibilities for scheduling

Page 10: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 10 6.035 ©MIT Fall 1998

Computing Dependencies

• For basic blocks, compute dependencies by walking through the instructions

• Identifying register dependencies is simple– is it the same register?

• For memory accesses– simple: base + offset1 != base + offset2– data dependence analysis: a[2i] != a[2i+1]– interprocedural analysis: global != parameter– pointer alias analysis: p1 != p

Page 11: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 11 6.035 ©MIT Fall 1998

Representing Dependencies

• Using a dependence DAG, one per basic block

• Nodes are instructions, edges represent dependencies

Page 12: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 12 6.035 ©MIT Fall 1998

Representing Dependencies

• Using a dependence DAG, one per basic block

• Nodes are instructions, edges represent dependencies

1: r2 = *(r1 + 4)

2: r3 = *(r1 + 8)

3: r4 = r2 + r3

4: r5 = r2 - 1

Page 13: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 13 6.035 ©MIT Fall 1998

• Using a dependence DAG, one per basic block

• Nodes are instructions, edges represent dependencies

1: r2 = *(r1 + 4)

2: r3 = *(r1 + 8)

3: r4 = r2 + r3

4: r5 = r2 - 1 3

1

Representing Dependencies

2

4

Page 14: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 14 6.035 ©MIT Fall 1998

• Using a dependence DAG, one per basic block

• Nodes are instructions, edges represent dependencies

1: r2 = *(r1 + 4)

2: r3 = *(r1 + 8)

3: r4 = r2 + r3

4: r5 = r2 - 1

• Edge is labeled with Latency:– v(i j) = delay required between initiation times of i

and j minus the execution time required by i

3

1

Representing Dependencies

2

4

2 22

Page 15: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 15 6.035 ©MIT Fall 1998

Example

1: r2 = *(r1 + 4)

2: r3 = *(r2 + 4)

3: r4 = r2 + r3

4: r5 = r2 - 1

3

1 2

4

2 22

3

Page 16: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 16 6.035 ©MIT Fall 1998

Another Example

1: r2 = *(r1 + 4)

2: *(r1 + 4) = r3

3: r3 = r2 + r3

4: r5 = r2 - 1

3

1 2

4

Page 17: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 17 6.035 ©MIT Fall 1998

Another Example

1: r2 = *(r1 + 4)

2: *(r1 + 4) = r3

3: r3 = r2 + r3

4: r5 = r2 - 1

3

1 2

4

2 21

1

Page 18: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 18 6.035 ©MIT Fall 1998

Control Dependencies and Resource Constraints

• For now, lets only worry about basic blocks

• For now, lets look at simple pipelines

Page 19: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 19 6.035 ©MIT Fall 1998

Example

1: LA r1,array 2: LD r2,4(r1) 3: AND r3,r3,0x00FF 4: MULC r6,r6,100 5: ST r7,4(r6)6: DIVC r5,r5,1007: ADD r4,r2,r58: MUL r5,r2,r49: ST r4,0(r1)

Page 20: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 20 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

Page 21: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 21 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1

Page 22: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 22 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1

Page 23: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 23 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2

Page 24: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 24 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3

Page 25: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 25 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4

Page 26: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 26 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4

Page 27: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 27 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5

Page 28: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 28 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6

Page 29: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 29 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6

Page 30: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 30 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7

Page 31: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 31 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7

Page 32: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 32 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7 8

Page 33: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 33 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7 8 9

Page 34: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 34 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7 8 9

14 cycles!

Page 35: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 35 6.035 ©MIT Fall 1998

List Scheduling Algorithm

• Idea– Do a topological sort of the dependence DAG– Consider when an instruction can be scheduled

without causing a stall– Schedule the instruction if it causes no stall and all

its predecessors are already scheduled

• Optimal list scheduling is NP-complete– Use heuristics when necessary

Page 36: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 36 6.035 ©MIT Fall 1998

List Scheduling Algorithm

• Create a dependence DAG of a basic block

• Topological SortREADY = nodes with no predecessors

Loop until READY is empty

Schedule each node in READY when no stalling

Update READY

Page 37: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 37 6.035 ©MIT Fall 1998

Heuristics for selection

• Heuristics for selecting from the READY list– pick the node with the longest path to a leaf in the

dependence graph– pick a node with most immediate successors – pick a node that can go to a less busy pipeline (in a

superscalar)

Page 38: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 38 6.035 ©MIT Fall 1998

Heuristics for selection

• pick the node with the longest path to a leaf in the dependence graph

• Algorithm (for node x)– If no successors dx = 0

– dx = MAX( dy + cxy) for all successors y of x

– reverse breadth-first visitation order

Page 39: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 39 6.035 ©MIT Fall 1998

Heuristics for selection

• pick a node with most immediate successors

• Algorithm (for node x):– fx = number of successors of x

Page 40: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 40 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

Page 41: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 41 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

31: LA r1,array2: LD r2,4(r1)3: AND r3,r3,0x00FF4: MULC r6,r6,1005: ST r7,4(r6)6: DIVC r5,r5,1007: ADD r4,r2,r58: MUL r5,r2,r49: ST r4,0(r1)

Page 42: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 42 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

Page 43: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 43 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0

Page 44: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 44 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

Page 45: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 45 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

Page 46: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 46 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7

Page 47: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 47 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

Page 48: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 48 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5

Page 49: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 49 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

Page 50: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 50 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { }

Page 51: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 51 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { }1, 3, 4, 6

Page 52: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 52 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 6, 1, 4, 3 }1, 3, 4, 6

Page 53: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 53 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 6, 1, 4, 3 }

Page 54: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 54 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 6, 1, 4, 3 }

6

Page 55: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 55 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 1, 4, 3 }

6

Page 56: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 56 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 1, 4, 3 }

6

Page 57: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 57 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 1, 4, 3 }

6 1

Page 58: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 58 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 4, 3 }

6 1

2

Page 59: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 59 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 2, 4, 3 }

6 1

Page 60: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 60 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 2, 4, 3 }

6 1

Page 61: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 61 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 2, 4, 3 }

6 1

Page 62: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 62 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 2, 4, 3 }

6 1 2

Page 63: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 63 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 4, 3 }

6 1 2

7

Page 64: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 64 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 4, 3 }

6 1 2

Page 65: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 65 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 4, 3 }

6 1 2

Page 66: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 66 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 4, 3 }

6 1 2

Page 67: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 67 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 4, 3 }

6 1 2

Page 68: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 68 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 4, 3 }

6 1 2 4

Page 69: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 69 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 3 }

6 1 2 4

5

Page 70: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 70 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 3, 5 }

6 1 2 4

Page 71: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 71 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 3, 5 }

6 1 2 4

Page 72: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 72 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 3, 5 }

6 1 2 4

Page 73: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 73 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 7, 3, 5 }

6 1 2 4 7

Page 74: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 74 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 3, 5 }

6 1 2 4 7

8, 9

Page 75: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 75 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 3, 5, 8, 9 }

6 1 2 4 7

Page 76: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 76 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 3, 5, 8, 9 }

6 1 2 4 7

Page 77: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 77 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 3, 5, 8, 9 }

6 1 2 4 7 3

Page 78: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 78 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 5, 8, 9 }

6 1 2 4 7 3

Page 79: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 79 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 5, 8, 9 }

6 1 2 4 7 3

Page 80: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 80 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 5, 8, 9 }

6 1 2 4 7 3

Page 81: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 81 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 5, 8, 9 }

6 1 2 4 7 3 5

Page 82: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 82 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 8, 9 }

6 1 2 4 7 3 5

Page 83: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 83 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 8, 9 }

6 1 2 4 7 3 5

Page 84: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 84 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 8, 9 }

6 1 2 4 7 3 5

Page 85: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 85 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 8, 9 }

6 1 2 4 7 3 5 8

Page 86: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 86 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 9 }

6 1 2 4 7 3 5 8

Page 87: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 87 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 9 }

6 1 2 4 7 3 5 8

Page 88: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 88 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 9 }

6 1 2 4 7 3 5 8

Page 89: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 89 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { 9 }

6 1 2 4 7 3 5 8 9

Page 90: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 90 6.035 ©MIT Fall 1998

Example1

6

8

2

7

9

1

1

3

4

1

4

5

3

3

d=0 d=0

d=0

d=0 d=3

d=3

d=7d=4

d=5f=1f=0

f=0f=1f=1

f=1

f=2

f=0 f=0

READY = { }

6 1 2 4 7 3 5 8 9

Page 91: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 91 6.035 ©MIT Fall 1998

Example

6 1 2 4 7 3 5 8 9

Results In1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

9 cycles

Page 92: Saman Amarasinghe 16.035 ©MIT Fall 1998 Simple Machine Model Instructions are executed in sequence –Fetch, decode, execute, store results –One instruction.

Saman Amarasinghe 92 6.035 ©MIT Fall 1998

ExampleResults In

1: LA r1,array 1 cycle2: LD r2,4(r1) 1 cycle3: AND r3,r3,0x00FF 1 cycle4: MULC r6,r6,100 3 cycles5: ST r7,4(r6)6: DIVC r5,r5,100 4 cycles7: ADD r4,r2,r5 1 cycle8: MUL r5,r2,r4 3 cycles9: ST r4,0(r1)

1 2 3 4 st st 5 6 st st st 7 8 914 cycles

Vs9 cycles

6 1 2 4 7 3 5 8 9