Just-In-Time Compilation for Multi-Core Virtual Machines

Research Context

With the rise of multi-core systems and many-core processors like the Tilera TILE64 [1, 2] concurrency becomes a major issue in the daily life of a programmer. Virtual machines like Sun’s Java Virtual Machine (JVM) and Microsoft’s Common Language Runtime (CLR) host a wide range of different languages and programming models and will have to provide support for different concurrent programming models, too. We are currently doing research on instruction set extensions, which add concurrency primitives to the VM bytecodes. The fundamental question to this approach is, whether the instruction set is the right place for such extensions.

General Objectives

The goal of this thesis is to implement such an instruction set extension and evaluate its benefits compared to an existing library implementation. The key benefits we currently see for this approach is an increased potential for just-in-time compiler (JIT) optimizations. Therefore, a major part of the thesis work will be an adaptation of an existing JIT for the instruction set extension.

Research Training

During the research training, you will become familiar with parallel programming i.e. programming with threads and locks[3]. The following tasks are planned:

  1. Port a set of parallel benchmarks to Lua
  2. Implement an instruction set extension with bytecodes for concurrency operations and adapt the Lua compiler to utilize the new bytecode set

The training will provide you with necessary knowledge for doing the thesis, therefore it is highly recommended to combine both.

Thesis

The goal of this thesis is to investigate the benefits which explicit support for concurrency operations like locking provides to optimizing just-in-time compilers. This should be compared to the current state of the art of implementing concurrency support with libraries. The following steps will have to be approached for this:

  • Adapt an existing JIT for the extended set of bytecodes implemented in the research training
  • Implement escape analysis [4] and other JIT compiler optimizations
  • Evaluate the results with benchmarks
  • Compare optimization approaches for the library and the extended bytecode version

Proposal for an Experiment Setting

Virtual machines are usually highly complex systems. The Jikes Research VM has almost 1mio lines of code, but is considered a production level JVM. Depending on your interests and experience, we highly recommend to use a far more manageable VM for this research. Lua is a small, embedded VM use for instance in games like Crysis, Far Cry, or World of Warcraft. It constitutes a full VM including a simple just-in-time compiler in about 20000 lines of code.

Requirements

  • Interest in virtual machines, language implementations and JIT compilation
  • C programming experience
  • Experience with threads, locks, and semaphores in p_threads or Java is beneficial

Contact

Stefan Marr

Email: stefan.marr at vub …

Office: 10F731

Literature and Links

  1. Wentzlaff, David; Griffin, Patrick; Hoffmann, Henry; Bao, Liewei; Edwards, Bruce; Ramey, Carl; Mattina, Matthew; Miao, Chyi-Chang; III, John F. Brown & Agarwal, Anant: On-Chip Interconnection Architecture of the Tile Processor In: IEEE Micro , Vol. 27 , No. 5 Los Alamitos, CA, USA: IEEE Computer Society (2007) , p. 15-31.
  2. Dongarra, J.; Fox, G.; Kennedy, K.; Torczon, L. & Gropp, W., ed.: The Sourcebook of Parallel Computing , Morgan Kaufmann (2002).
  3. Choi, Jong-Deok; Gupta, Manish; Serrano, Mauricio; Sreedhar, Vugranam C. & Midkiff, Sam: Escape Analysis for Java In: SIGPLAN Not. , Vol. 34 , No. 10 New York, NY, USA: ACM (1999) , p. 1-19.
 
teaching/thesis0910/proposals/jit_for_manycore.txt · Last modified: 07/07/2009 10:59 by smarr
 

© 2003-2010 • System and Software Engineering Lab • Submit comments and bugs to our Bugzilla or to the webmaster