copyright © 2001 stephen a. edwards all rights reserved esuif: an open esterel compiler stephen a....
Post on 22-Dec-2015
213 views
TRANSCRIPT
![Page 1: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/1.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
ESUIF: An Open Esterel CompilerESUIF: An Open Esterel Compiler
Stephen A. Edwards
Department of Computer Science
Columbia University, New York
www.cs.columbia.edu/~sedwards
![Page 2: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/2.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Not Another One…Not Another One…
My research agenda is to push Esterel compilation technology much farther
We still don’t have a technique that builds fast code for all large programs
No decent Esterel compiler available in source form
![Page 3: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/3.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Quick History of Esterel CompilersQuick History of Esterel Compilers
Automata-based• V1, V2, V3 (INRIA/CMA) [Berry, Gonthier 1992]• Excellent for small programs with few states• Don’t scale well
Netlist-based• V4, V5 (INRIA/CMA)• Scales very nicely• Produces slow code for sequential programs
Executables for these available at www.esterel.org
Not open-source
![Page 4: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/4.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Quick History of Esterel CompilersQuick History of Esterel Compilers
Control-flow-graph based• EC [Edwards 1999, 2000, 2002]• Produces very efficient code for acyclic programs
Discrete-event based• SAXO-RT [Weil et al. 2000]• Produces efficient code for acyclic programs
Both proprietary & unlikely to ever be released
Neither has V5’s ability to analyze static cycles• Many valid programs are rejected
![Page 5: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/5.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
ESUIFESUIF
New, open-source compiler being developed at Columbia University
Based on SUIF 2 infrastructure (Stanford University)
Divided into many little passes
Common database represents program throughout
![Page 6: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/6.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Open, Flexible ArchitectureOpen, Flexible Architecture
Common database used throughout
SUIF 2 database
Esterel
Source
ECL
Source
C
Source
Passes:
Dismantlers, optimization
Front-ends
![Page 7: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/7.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
SUIF 2 DatabaseSUIF 2 Database
Main component of the SUIF 2 system:
User-customizable persistent, object-oriented database
Written in C++
Not the most efficient, but very flexible
![Page 8: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/8.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
SUIF 2 DatabaseSUIF 2 Database
Database schema written in their own “hoof” language
Automatically translated into C++
class New : public SuifObject{
public:int get_x();void set_x(int the_value); ~New();void print(…);static const Lstring
get_class_name(); …
}
concrete New{ int x; }
hoof
C++
![Page 9: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/9.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Three Intermediate RepresentationsThree Intermediate Representations Front end generates AST-like database
• One-to-one mapping between classes and Esterel statements
Dismantled into concurrent IC-like statements• Described next
Scheduling produces C code• SUIF 2 has complete schema for C
![Page 10: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/10.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Intermediate RepresentationIntermediate Representation
Goal: simpler semantics than IC [Gonthier 1988]
Slightly lower-level
More symmetry between strong and weak abort• IC uses awkward implicit exceptions for weak abort
More division between concurrency and exception handling
![Page 11: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/11.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
IR PrimitivesIR Primitives
var := expr if (expr) { stmts } else { stmts } Label: goto Label
resume (state-var) { stmts } pause
trapScope (Handler-Label) T1,…,Tn { stmts } fork L1, …, Ln join thread (exit-var, Join-Label) { stmts } exitAt n
![Page 12: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/12.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Pause and ResumePause and Resume
Idea: single pair of primitives that implement ability to suspend and resume sequences of instructions
Semantics:• pause sends control just past its enclosing resume• resume sends control to just after the last-executed
pause
Trivial translation into a C switch statement
Simple enumeration of states (just pause statements)
Strong and weak abort just tests before and after
![Page 13: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/13.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Translating Strong AbortTranslating Strong Abort
abort
pause;
pause
when S
goto SurfaceDepth: if (S) { goto Terminate } resume { Surface: pause pause goto Terminate } pause goto DepthTerminate:
Strong preemption:
Predicate tested before body is resumed
Control initially sent directly into the body
This pause suspends and resumes the abort statement
![Page 14: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/14.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
First ReactionFirst Reaction
abort
pause;
pause
when S
goto SurfaceDepth: if (S) { goto Terminate } resume { Surface: pause pause goto Terminate } pause goto DepthTerminate:
![Page 15: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/15.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Second ReactionSecond Reaction
abort
pause;
pause
when S
goto SurfaceDepth: if (S) { goto Terminate } resume { Surface: pause pause goto Terminate } pause goto DepthTerminate:
![Page 16: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/16.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Translating Weak AbortTranslating Weak Abort
abort
pause;
pause
when S
goto SurfaceDepth:resume { Surface: pause pause goto Terminate } if (S) { goto Terminate } pause goto DepthTerminate:
Weak preemption:
Predicate tested after body has a chance to run
![Page 17: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/17.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
DismantlingDismantling
Multiple passes dismantle AST-like Esterel into the IR
Each dismantles a single Esterel statement
Most are trivial
![Page 18: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/18.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Parallel, Trap, and ExitParallel, Trap, and Exit
Translation of exit differs depending on parallel behavior
trap T in Does not terminate siblings
exit T No prioritization of exits
end
trap T in Terminates siblings
stmts || exit TMust worry about trap priorities
end
![Page 19: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/19.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Parallel, Trap, and ExitParallel, Trap, and Exit
Translation is tedious, but not difficult
Uses Berry and Gonthier’s encoding of exit levels:
0 = terminate
1 = pause
2 = exit innermost trap
3 = exit next innermost trap
4 = etc.
![Page 20: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/20.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Ideas for Code GenerationIdeas for Code Generation
ESUIF does not currently have a back-end
I am considering a few possibilities
![Page 21: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/21.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Static UnrollingStatic Unrolling
Cyclic programs can always be evaluated by unrolling: lfp(F) = F()n
Three-valued evaluation costly, not clear with control-flow
Theorem (suggested to me by Berry)
Proof: F is monotonic, lfp does not contain
If a program is causal, then two- and three-valued evaluation will produce the same result
![Page 22: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/22.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Program Dependence GraphProgram Dependence Graph
Program Dependence Graph [Ferrante et al., TOPLAS 1987] is concurrent
• Represents only control and data dependencies• Natural for Esterel because it represents concurrency
present A then emit Belse emit Cend;emit D;present B then emit Eend
A
C BD
B
E
Data dependence
Control dependence
![Page 23: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/23.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Program Dependence GraphProgram Dependence Graph
Idea: Represent Esterel program as a program dependence graph
• Unroll to resolve cycles (duplicate code)
Generate code that conforms to the program dependence graph
Some PDGs do not require additional predicates when sequentialized [Ferrante et al., Steensgaard]
Heuristics will have to be used to insert a minimum number of predicates in most cases
![Page 24: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/24.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
Discrete-Event ApproachesDiscrete-Event Approaches
Weil et al. [CASES 2000] have taken this approach
Successful, but scheduler could be better
Does not handle statically cyclic programs
Techniques such as French et al. [DAC 1995] schedule as much as possible beforehand, but allow some dynamic behavior
Idea: Generate an unrolled schedule and invoke unduplicated basic blocks more than once per reaction (solves causality and schizophrenia)
![Page 25: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/25.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
ConclusionsConclusions
ESUIF compiler under development at Columbia• Front-end completed• Most dismantlers written• Work beginning on back-end
New intermediate representation• pause and resume primitives
Some new ideas for code generation• Static unrolling with two-valued evaluation• Program Dependence Graph• Event-driven Approaches
![Page 26: Copyright © 2001 Stephen A. Edwards All rights reserved ESUIF: An Open Esterel Compiler Stephen A. Edwards Department of Computer Science Columbia University,](https://reader031.vdocuments.us/reader031/viewer/2022032523/56649d805503460f94a645e2/html5/thumbnails/26.jpg)
Copyright © 2001 Stephen A. Edwards All rights reserved
For More InformationFor More Information
Visit my website
http://www.cs.columbia.edu/~sedwards