Page 1
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 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 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 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 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 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 7 6.035 ©MIT Fall 1998
Instruction Scheduling
• Reorder instructions so that pipeline stalls are minimized
Page 8
Saman Amarasinghe 8 6.035 ©MIT Fall 1998
Constraints On Scheduling
• Data dependencies
• Control dependencies
• Resource Constraints
Page 9
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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