*
Quick Links|Home|Worldwide
Microsoft*
Search for


Advanced Compiler Technology

Overview

The Advanced Compiler Technology group studied programming language implementation and design from 2001 to 2007.  The group is currently inactive. Juan Chen and Zhaozhong Ni remain at Microsoft Research and continue to pursue their research. Our goal was to help people build robust, secure, and high-performance software economically by using better programming languages in practice.

The group's research had the following themes:

  • Implementation and optimization techniques for modern object-oriented programming languages

We studied these issues using the Bartok research compiler and runtime system.   See the projects section below for more information on Bartok.

  • Compiler, language, and runtime support for systems programming

Most systems programming is done in C and C++. We were investigating how to implement modern object-oriented languages, such as C#, so that they are suitable for systems programming. We worked with other researchers to build a prototype research OS kernel, called Singularity, in managed code. Bartok is the compiler and runtime system for this effort.

We were recently looking at how to do garbage collection in an OS kernel. We also studied language extensions, leveraging our work on typed intermediate languages and on incorporating regions into automatic storage management.

  • Increasing the reliability of compilers and systems

We were studying typed intermediate languages for object-oriented languages, with the goal of applying it in real-world systems.  Juan Chen continues this work. Most work on typed intermediate languages has concentrated on functional languages, which are different from languages that are widely used in practice.   A compiler that uses a typed intermediate language can typecheck a program after each step of compilation.   A system can typecheck machine code programs, making certain kinds of errors, such as executing arbitrary machine code, very unlikely.

  • Techniques for programming highly parallel hardware

We looked at programming language support for future hardware. VLSI technology is already being used to build parallel hardware. This trend will accelerate as VLSI technology allows billions of transistors to be put on a chip. The key problem is programming highly-parallel hardware effectively. We studied data-parallel languages as one possible approach.

People

Primary Contact: David Tarditi



Mangus,
Qunyan

Plesko,
Mark

    

Affiliate Members

Photo Not Available




Zhang,
Ye
   
 
Projects
  • Bartok Compiler and Runtime System

The Bartok Compiler and Runtime System is the compiler and runtime system for Singularity, a research operating system being developed at Microsoft Research.   We used Bartok to study a variety of topics, including:

  • Compiler, language, and runtime support for systems programming.
  • Implementation and optimization techniques for managed languages and object-oriented languages, such as C#.
  • Software transactional memory

The compiler translates Common Intermediate Language (CIL) to optimized native machine code.    The runtime system is a small, modular research runtime system that provides support for core managed language features such as automatic storage management, threading, and marshalling of data to and from native code.    We say the runtime is modular because a programmer can choose the base class library, the garbage collector, and other supported features on a per-application basis.    The runtime system is used with different base class libraries in Singularity, including a kernel BCL, a device-driver BCL, and an application BCL.  

The system is implemented entirely in C#, including the garbage collectors.    The system supports separate compilation as well as compilation of unverifiable CIL.      The design for Bartok builds upon previous work by Microsoft Research on an optimizing whole-program compiler for Java called Marmot.

Singularity is a prototype research operating system written using managed code. The goal of Singularity is to explore issues of system reliability. In this context, reliability is loosely defined as, "the system never does anything unexpected or unanticipated by its designers, developers, administrators, or users."

You can read about Singularity in this technical report:

Galen Hunt, James R. Larus, Martin Abadi, Mark Aiken, Paul Barham, Manuel Fahndrich, Chris Hawblitzel, Orion Hodson. Steven Levi, Nick Murphy, Bjarne Steensgaard, David Tarditi, Ted Wobber, and Brian D. Zill, An Overview of the Singularity Project,   Technical Report MSR-TR-2005-135, Microsoft Corporation, October 2005.

  • Phoenix

Phoenix is Microsoft's new compiler and programming tools infrastructure.   We helped start the project along with people from Microsoft's VC++ team.    We continue to actively work with them on Phoenix.    You can find much more information on Phoenix here.

You can now download the Phoenix Research Development Kit for non-commercial use.     You can find a link to the download site here.

  • Accelerator

The Accelerator project is investigating the design and compilation of data-parallel languages.     We looked at compilation of data-parallel programs to graphics processor units (GPUs) and multiprocessors.      We published a technical report on our work on compiling to GPUs:

David Tarditi, Sidd Puri, Jose Oglesby. "Accelerator: simplified programming of graphics-processing units for general-purpose uses via data-parallelism",  Technical Report MSR-TR-2004-184, Microsoft Corporation, December, 2005.

You can now download version 1.1 of the Microsoft Research Accelerator system for non-commercial use.  The download is available here.

 
Publications:

Here are some publications:

Recent publications

  • A Study of Concurrent Real-time Garbage Collectors. Filip Pizlo, Erez Petrank, and Bjarne Steensgaard. To appear, PLDI 2008.
  • Type-Preserving Compilation for Large-Scale Optimizing Object-Oriented Compilers Juan Chen, Chris Hawblitzel, Frances Perry, Mike Emmi, Jeremy Condit, Derrick Coetzee, and Polyvios Pratikakis. To appear, PLDI 2008.

Singularity

Concurrency

Garbage collection

  • Compiler Optimizations for Nondeferred Reference-Counting Garbage Collection. Pramod Joisha. 2006 International Symposium on Memory Management (ISMM '06). Ottawa, Ontario, Canada. June 2006.  ACM.

Typed intermediate languages

Language design

Last updated: March 19, 2008



©2008 Microsoft Corporation. All rights reserved. Terms of Use |Trademarks |Privacy Statement