42
2nd March 2010 IFIP WG 2.11 St Andrews 1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

Embed Size (px)

Citation preview

Page 1: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 1

Costing by construction

Greg MichaelsonSchool of Mathematical & Computer

SciencesHeriot-Watt University

Page 2: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2

Overview

• how can we use cost information (e.g. WCET, space) to guide software construction?– mini-Hume

• compilation to stack machine• cost model

– box calculus– augmenting box calculus with costs– costulator

Page 3: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3

Overview

• mature WCET/space costs models for many languages

• analysis tools are whole program– apply after not during initial software

construction

• can we see cost implications at every stage as we construct software?

Page 4: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 4

Hume

• with Kevin Hammond (St Andrews)

• formally motivated language for resource aware system construction

• concurrent finite state boxes joined by wires

• box transitions from patterns to expressions

• rich polymorphic types

Page 5: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 5

Hume

• strong separation of:– coordination: between boxes & environment– expression: within boxes

• strong formal foundations– semantics + type system

• tool chain via abstract machine to code

• amortised cost models instantiated for concrete platforms

Page 6: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 6

Hume

• Turing complete - too big for this presentation

• mini-Hume– integers types only– no functions– no if/case– no * (ignore) pattern or expression

Page 7: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 7

mini-Humebox genin (n)out (n’,r)match (x) -> (x+1,x);

box din (x)out (y)match (n) -> (2*n);

stream output to “std_out”;

wire gen(gen.n’initially 0)(gen.n,d.x);

wire d (gen.r) (output);

n gen

x -> (x+1,x)

n’ r

x d

n -> 2*n

y

output

Page 8: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 8

mini-Hume

prog -> coord ; [coord]coord -> box | wire | streambox -> box id in (vars) out (vars) match (patts) -> (exp) | ...vars -> var | var , varspatts -> int | var | patt , pattsexp -> int | var | exp op exp | exp , expwire -> wire id (ins) (outs)ins -> var | var.var [initially int] | ins , insouts -> var | var.var | outs , outsstream -> stream id [from/to] “path”

Page 9: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 9

Execution model

forever

for each box - execute

find pattern matching inputs bind pattern variables

evaluate exp to produce outputs

for each box - super step

copy outputs to associated inputs

Page 10: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 10

Stack machinePUSHI integer stack[sp++] = integer VAR identifier allocate next memory addressPUSHM identifier stack[sp++] = mem[addr(identifier)]POPM identifier mem[addr(identifier)] = stack[--sp] POP sp--ADD stack[sp-2] = stack[sp-2]+stack[sp-1]; sp--SUB stack[sp-2] = stack[sp-2]-stack[sp-1]; sp--MULT stack[sp-2] = stack[sp-2]*stack[sp-1]; sp--DIV stack[sp-2] = stack[sp-2]/stack[sp-2]; sp--LABEL label JNEG label if(stack[sp--]<0) goto labelJZERO label if(stack[sp--]==0) goto labelJPOS label if(stack[sp--]>0) goto labelJNZERO label if(stack[sp--]!=0) goto labelJMP label goto label

Page 11: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 11

Compilationbox incdin (s,n) out (s',n',r) match (0,x) -> (1,x+1,x+1) | (1,x) -> (0,x+1,2*x);

stream output to "std_out";

wire incd(incd.s' initially 0, incd.n' initially 0)(incd.s,incd.n,output);

LABEL incd0- box/patt 0

PUSHM incdI0

PUSHI 0

SUB

JNZERO incd1- exp 0

PUSHI 1

POPM incdO0

PUSHM incdI1

PUSHI 1

ADD

POPM incdO1

PUSHM incdI1

PUSHI 1

ADD

POPM incdO2

JMP incdEND

- links

VAR incdI0 - s

VAR incdI1 - n

VAR incdO0 – s’

VAR incdO1 – n’

VAR incdO2 - r

VAR output

- initially

PUSHI 0

POPM incdI0

PUSHI 0

POPM incdI1

- execute

LABEL _MAIN

- pattern 1

LABEL incd1

...

- (pattern 2)

LABEL incd2

- super step

LABEL incdEND

PUSHM incdO0

POPM incdI0

PUSHM incdO1

POPM incdI1

PUSHM incdO2

POPM output

- loop

SHOW

JMP _MAIN

Page 12: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 12

Cost model

• box costs in executionbox -> box id

in (vars) out (vars) match (patts) -> (exps) | ... - max ((Σcost(patti) )+ cost (expi))+1 - JMP

patt -> int - 4 – PUSHM,PUSHI,SUB,JNZvar - 0patt , patts - cost(patt) + cost(patts)

exp -> int - 1 - PUSHIvar - 1 - PUSHMexp1 op exp2 - cost(exp1)+cost(exp2)+1 - opexp , exps - cost(exp)+1+cost(exps) - POPM

Page 13: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 13

Cost model

• wire costs in super stepwire -> wire id (ins) (outs) - cost(ins)+cost(outs)

ins -> var - 2 – PUSHM,POPM

var.var [initially int] - 2[+2] – PUSHM,POPM

[+PUSHI,POPM]

ins1 , ins2 - cost(ins1)+cost(ins2)

outs -> var - 2 – PUSHM,POPM

var.var - 2 – PUSHM,POPM

outs1 , outs2 - cost(outs1)+cost(outs2)

Page 14: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 14

Box calculus

• with Gudmund Grov (Heriot-Watt/ Edinburgh)

• based on BMF, fold/unfold, FP etc

• rules to:– introduce/eliminate boxes/wires– split/join boxes horizontally/vertically

• NB rules affect coordination and expressions layers

Page 15: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 15

Box calculus

x -> f (g x) (x,y) -> (f x,g y)

x -> g x

y -> f y

x -> f x y -> g y

x -> x

identity vertical split/join horizontal split/join

Page 16: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 16

Box calculus

x -> x x -> x

(x,y) -> x x -> (x,y)

input introduction/elimination output introduction/elimination

Page 17: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 17

Costing by construction

• augment rules with cost judgements

• construct software from scratch – use rules to justify each step– show cost impact of each rule application

Page 18: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 18

Box calculus + costs

x -> f (g x)

x -> g x

y -> f y

x -> x

identity vertical split/join

+/- cost patt x

+/- cost exp x +/- 2 - super step from x

+/- 2 - super step to x

+/- cost patt y

+/- 2 - super step from g x

+/- 2 - super step to y

Page 19: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 19

Box calculus + costs

(x,y) -> (f x,g y)

x -> f x y -> g y

horizontal split/join

no additional cost

Page 20: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 20

Box calculus + costs

x -> x x -> x

(x,y) -> x x -> (x,y)

input introduction/elimination output introduction/elimination

+/- cost patt y

+/- 2 - super step to y

+/- cost exp y

+/- 2 - super step from y

Page 21: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2121

Costulator

Rule COSTFile Code

Page 22: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2222

Costulator

Rule COSTFile Code

Page 23: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 23

IdentitySplit box >Join box >Add inAdd out...

23

Costulator

Rule COSTFile name?initially: 0space: link: 2 pattern: 0cost: 4

x -> xname?

Code

Page 24: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2424

Costulator

Rule COSTFile incinitially: 0space: link: 2 pattern: 0cost: 4

x -> xinc

Code

Page 25: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 25

IdentitySplit box >Join box >Add inAdd out...

25

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,y)inc

Code

Page 26: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2626

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,y)inc

Code

Page 27: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2727

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,y)inc

Code

Page 28: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2828

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,y)inc

Code

Page 29: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 2929

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,y)inc

Code

Page 30: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3030

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 6

x -> (x,x)inc

Code

Page 31: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3131

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

Code

Page 32: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3232

Costulator

Rule COSTFile incinitially: 0space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

Code

name: ?initially: ?

Page 33: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3333

Costulator

Rule COSTFile incinitially: 2space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

Code

name: ninitially: 0

Page 34: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3434

Costulator

Rule COSTFile incinitially: 2space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

Code

n

0

...

Page 35: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3535

Costulator

Rule COSTFile incinitially: 2space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

0

Code

n

n’ r

Page 36: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3636

Costulator

Rule COSTFile incinitially: 2space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

0

Code

n

n’ r

Show

Compile

Run

Page 37: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3737

Costulator

Rule COSTFile incinitially: 2space: link: 3 pattern: 0cost: 9

x -> (x+1,x)inc

0

Code

n

n’ rbox incin (n)out (n’,r)match( x) -> (x+1,x);wire inc (inc.n’ initially 0)(inc.n);

X

Page 38: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3838

X by construction

• syntax directed editing– also visual editing– editor obliges user to only follow grammar

rules in constructing/changing program

• correctness by construction– theorem prover obliges user to only apply

correctness preserving rules to composing correct constructs

– e.g. Martin-Löf type theory

Page 39: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 3939

X by construction

• too restrictive

• typically can’t make bad moves to get to a good state

• bad constructs are:– ungrammatical (syntax)– incorrect (correctness)

Page 40: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 4040

X by construction

• costing isn’t like that!

• everything has a cost, even “wrong” bits of program– cost is 0– cost is a variable

• maybe not the cost you want though so need cost monitoring

Page 41: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 4141

Conclusion

• Costing by construction:– lets you watch how your programming affects

costs as the program develops– does not oblige you to form

grammatical/correct/well costed constructs as you go along

– might cleanly augment an IDE

Page 42: 2nd March 2010IFIP WG 2.11 St Andrews1 Costing by construction Greg Michaelson School of Mathematical & Computer Sciences Heriot-Watt University

2nd March 2010 IFIP WG 2.11 St Andrews 42

Conclusion

• mini-Hume compiler + stack machine + cost analysis all written in Standard ML

• Costulator longer term project...

• thanks to:– Kevin Hammond: Hume + costs – Gudmund Grov: Box calculus