Software Optimization and Analysis Framework Phoenix By Joel Messer.

Slides:



Advertisements
Similar presentations
Compilers Course 379K, TTH 9:30-11:00 Instructor: Dr. Doron A. Peled Office Hours: Mon 11:00-12:00.
Advertisements

1 Lecture 10 Intermediate Representations. 2 front end »produces an intermediate representation (IR) for the program. optimizer »transforms the code in.
Compilation (Semester A, 2013/14) Lecture 14: Compiling Object Oriented Programs Noam Rinetzky Slides credit: Mooly Sagiv 1.
ECE Synthesis & Verification - Lecture 2 1 ECE 667 Spring 2011 ECE 667 Spring 2011 Synthesis and Verification of Digital Circuits High-Level (Architectural)
Phoenix: a framework for Code Generation, Optimization and Program Analysis Andrew Pardoe Phoenix team
The Phoenix Compiler and Tools Framework
Lecture 01 - Introduction Eran Yahav 1. 2 Who? Eran Yahav Taub 734 Tel: Monday 13:30-14:30
Modern Compiler Internal Representations Silvius Rus 1/23/2002.
Greg MorrisettFall  Compilers.  (duh)  Translating one programming language into another.  Also interpreters.  Translating and running a language.
10/22/2002© 2002 Hal Perkins & UW CSEG-1 CSE 582 – Compilers Intermediate Representations Hal Perkins Autumn 2002.
Cpeg421-08S/final-review1 Course Review Tom St. John.
1 Semantic Processing. 2 Contents Introduction Introduction A Simple Compiler A Simple Compiler Scanning – Theory and Practice Scanning – Theory and Practice.
1 Intermediate representation Goals: –encode knowledge about the program –facilitate analysis –facilitate retargeting –facilitate optimization scanning.
Intermediate Code CS 471 October 29, CS 471 – Fall Intermediate Code Generation Source code Lexical Analysis Syntactic Analysis Semantic.
Code Generation Compiler Baojian Hua
ECE1724F Compiler Primer Sept. 18, 2002.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
Types of software. Sonam Dema..
“Our role is more important than ever before” “We are required to innovate and deliver much faster” “I need a cross-platform mobile development strategy”
Lecture 2 Phases of Compiler. Preprocessors, Compilers, Assemblers, and Linkers Preprocessor Compiler Assembler Linker Skeletal Source Program Source.
LLVM Developed by University of Illinois at Urbana-Champaign CIS dept Cisc 471 Matthew Warner.
Using Microsoft Phoenix in Education and Research Dragan Bojić University of Belgrade
AutoHacking with Phoenix Enabled Data Flow Analysis Richard Johnson |
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
Session 1 - Introduction and Data Access Layer
Andy Ayers Microsoft VC++
(Ncc is not a C Compiler) 4 조 ( 말년병장 ) 심민조 김호철.
10/1/2015© Hal Perkins & UW CSEG-1 CSE P 501 – Compilers Intermediate Representations Hal Perkins Autumn 2009.
Phoenix John LeforShahrokh Mortazavi Microsoft ResearchDeveloper Division.
ICD-C Compiler Framework Dr. Heiko Falk  H. Falk, ICD/ES, 2008 ICD-C Compiler Framework 1.Highlights and Features 2.Basic Concepts 3.Extensions.
CS412/413 Introduction to Compilers and Translators May 3, 1999 Lecture 34: Compiler-like Systems JIT bytecode interpreter src-to-src translator bytecode.
Compiler course 1. Introduction. Outline Scope of the course Disciplines involved in it Abstract view for a compiler Front-end and back-end tasks Modules.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
COMPILER OVERVIEW. Compiler Phases  Syntactic Analysis (Lexing, Parsing)  c = (a + b) * (a + b);
Macro instruction synthesis for embedded processors Pinhong Chen Yunjian Jiang (william) - CS252 project presentation.
Joe Hummel, the compiler is at your service Chicago Code Camp 2014.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Programming Languages and the Programming Process.
CS 671 Compilers Prof. Kim Hazelwood Spring 2008.
COP 4620 / 5625 Programming Language Translation / Compiler Writing Fall 2003 Lecture 1, 08/28/03 Prof. Roy Levow.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Overview of Compilers and JikesRVM John.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
Intermediate Code Representations
Compiler Introduction 1 Kavita Patel. Outlines 2  1.1 What Do Compilers Do?  1.2 The Structure of a Compiler  1.3 Compilation Process  1.4 Phases.
Chapter 1 Introduction. Chapter 1 -- Introduction2  Def: Compiler --  a program that translates a program written in a language like Pascal, C, PL/I,
 Chapter 2 Language Processors Fall Chart 2  Translators and Compilers  Interpreters  Real and Abstract Machines  Interpretive Compilers 
12/18/2015© Hal Perkins & UW CSEG-1 CSE P 501 – Compilers Intermediate Representations Hal Perkins Winter 2008.
Chuck Mitchell Senior Architect, Phoenix Product Unit Microsoft Corporation.
 Programming - the process of creating computer programs.
The Model of Compilation Natawut Nupairoj, Ph.D. Department of Computer Engineering Chulalongkorn University.
Joe Hummel, the compiler is at your service SDC Meetup, Sept 2014.
What is a compiler? –A program that reads a program written in one language (source language) and translates it into an equivalent program in another language.
Joe Hummel, the compiler is at your service Chicago Coder Conference, June 2016.
LLVM IR, File - Praakrit Pradhan. Overview The LLVM bitcode has essentially two things A bitstream container format Encoding of LLVM IR.
Objective of the course Understanding the fundamentals of the compilation technique Assist you in writing you own compiler (or any part of compiler)
CHAPTER 1 INTRODUCTION TO COMPILER SUNG-DONG KIM, DEPT. OF COMPUTER ENGINEERING, HANSUNG UNIVERSITY.
Computer System Structures
CS 404 Introduction to Compiler Design
COP 5621 Compiler Construction
PRINCIPLES OF COMPILER DESIGN
Chapter 1 Introduction.
Introduction to Advanced Topics Chapter 1 Text Book: Advanced compiler Design implementation By Steven S Muchnick (Elsevier)
CMPUT Compiler Design and Optimization
Chapter 1 Introduction.
CSc 453 Compilers & Systems Software 00. Background
Intermediate Representations Hal Perkins Autumn 2011
Compiler Construction
Intermediate Representations Hal Perkins Autumn 2005
Introduction to AltaAPI™
Presentation transcript:

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 –Contains the Phoenix framework, samples and API documentation

Phoenix Layout

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

Phases

View inside Phoenix-Based C2 AST HIR MIRLIREIR CIL Reader Type Checker MIR Lower SSA Const SSA Dest Canon Addr Modes Lower Reg Alloc EH Lower Stack Alloc Frame Gen Switch Lower Block Layout Flow Opts Encode Lister C2C1 CILCIL SOURCESOURCE OBJECTOBJECT From Andy Ayers Microsoft Phoenix

Phoenix Architecture

Uses

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

Questions?