160 likes | 355 Views
Software Optimization and Analysis Framework. Phoenix. By Joel Messer. Developers. Developed by Microsoft in Redmond, WA Academic Program Launched in 2003 Provided researchers with early access to the latest compiler technology Phoenix RDK (Research Development Kit) Core of the program
E N D
Software Optimization and Analysis Framework Phoenix By Joel Messer
Developers • Developed by Microsoft in Redmond, WA • Academic Program • Launched in 2003 • Provided researchers with early access to the latest compiler technology • Phoenix RDK (Research Development Kit) • Core of the program • Launched in Sept. 2003 • Contains the Phoenix framework, samples and API documentation
Source Languages • Developed to read • Binary Code • CIL used in Microsoft’s CLR • Microsoft’s C++ frontend • Readers can also be written to create an intermediate from for Phoenix. • Lex / Yacc (Abstract Syntax Tree)
Architectures • Analysis and code generation through Phoenix can target a particular hardware architecture. • Optimizations and more tools are the selected based on that architecture. • Current • x86 • Future • x64 • ia64 • arm • ppc
View inside Phoenix-Based C2 S O U R C E O B J E C T CI L HIR AST MIR LIR EIR CIL Reader Type Checker MIR LowerSSA Const SSA Dest Canon Addr Modes Lower Reg Alloc EH Lower Stack Alloc Frame Gen Switch Lower Block Layout Flow Opts Encode Lister C1 C2 From Andy Ayers Microsoft Phoenix
Strengths • Accepts a general IR form from the front end • Modular optimizations • 25-30 optimization phases built in. • Can also add additional DLLs for optimizations • Program analysis tools • Code Injection • into .net assemblies • native code • Simple Plug-ins • Made backend compiler’s programmable
Weaknesses • Unable to optimize the JIT compiler • Still in development stages • Only truly directed towards x86 • Possible to adjust it for other architectures fairly quickly (less than 6 months)
Usage in the Real World • Shipping the RDK • 200 downloads worldwide • Well received • Number of papers published using Phoenix • About a dozen research grants given to various universities
Goals • Agile Development • Sprints • Rebuild the Windows OS with Phoenix • slowly turning on more and more optimizations • Current in use with Vista • x64 JIT compilers