slides
Upcoming SlideShare
Loading in...5
×
 

slides

on

  • 499 views

 

Statistics

Views

Total Views
499
Views on SlideShare
499
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

slides slides Presentation Transcript

  • Java Virtual Machine Case Study on the Design of JikesRVM
  • JVM
    • JVM runs Java application in bytecode
      • Other sources can also be compiled to bytecode
      • JVM is a process virtual machine
        • Hardware support exists
      • Execution by
        • Interpreter
        • JIT (just-in-time) compilation: HotSpot, JikesRVM
  • JikesRVM
    • Originally Jalapeno
    • A research compiler by IBM written mostly in Java
      • Why Java?
        • Software engineering
        • Bridging gap between runtime servers and user code
    • Most used research JVM in academics
  • Design Goals
    • Exploitation of high-performance processors
    • SMP scalability
    • Thread limits
    • Continuous availability
    • Rapid response
    • Library usage
    • Graceful degradation
  • Object Model and Memory Layout
    • Field and array access should be fast
    • Virtual method dispatch should be fast
    • Null pointer checks should be performed by the hardware
    • Other Java operations should not be prohibitively slow
  • Array and Scalar Object Layout
  • Object Header
    • TIB (type information block)
      • Reference to the object’s class
      • An array of objects
        • Class
        • Compiled methods
          • Array of instructions
    • Status
      • Locking field
      • Hashing field
      • Memory management
  • JTOC (JikesRVM Table of Contents)
  • Method Invocation Stack
  • Runtime Subsystem
    • Exceptions
    • Dynamic class loading
    • Input/Output
    • Reflection
  • Exceptions
    • Exceptions
      • Null pointer exception by hardware
      • Out of bound
      • Divided by zero
      • Method invocation stack overflow
      • Software-generated exceptions
    • Handling
      • Caught by a C interrupt handler and pass to deliverException method
      • deliverException collects stack trace, transfer control to “try” block if exists
  • Dynamic Class Loading
    • Java can load classes during execution
    • In JikesRVM, when a class not loaded is referred
      • Generate code to load, resolve and instantiate the class before execution
        • Subtleties for address resolution
  • Input and Output
    • Use OS’ services through system routine calls
  • Reflection
    • Reflection: runtime access to fields and runtime invocation of methods
      • For fields, JVM keep tracks type information
      • For method invocation, need to match the signature
    public int incrementField(String name, Object obj) throws... { Field field = obj.getClass().getDeclaredField(name); int value = field.getInt(obj) + 1; field.setInt(obj, value); return value; }
  • Threads and Synchronization
    • JikesRVM implemenst virtual processor as pthreads
      • Java threads are multiplexed on virtual processors
      • One virtual processor for each physical processor
    • Locks
      • Processor lock ( a java object with a field denting owner)
      • Thin lock: use lock field on an object header
      • Thick lock: object level lock with a queue of threads waiting for thelock
  • Memory Management
    • Java is an automatic memory managed language
    • Memory management is most critical for Java
      • We will spend several weeks on this topic
    • In JikesRVM (obsolete)
      • A family of memory managers
  • Choices
    • Copying or non-copying collectors
    • Incremental/concurrent or stop-the-world
    • Generational collectors
      • Most objects die young
      • Minor collection, major collection
      • Remember set
  • Compiler
    • JikesRVM provides three compilers
      • Baseline compiler
        • More of an interpreter
        • Easy to develop and verify
      • Quick (fast) compiler
        • Balance compile-time and execution time
      • Optimizing compiler
        • Deliver high-quality code with likely long compilation time
  • Quick Compiler
    • Compile each method as it executes for the first time
    • Apply a few highly effective optimizations
      • Minimal transformation
      • Decorate the byte code and optimized with
        • Copy propagation
        • Register allocation
  • Optimizing Compiler
    • For frequently executed method
      • Need a profiler
      • Dynamic versus adaptive
  • Optimizing Compiler Structure
  • Optimizations
    • HIR (n-tuple, register-based IR)
      • Local optimizations: CSE, elimination of redundant load
      • Flow-insensitive optimizations: dead code elimination
      • In-lining
  • Optimizations
    • LIR (adopt object layout and calling convention)
      • Larger than HIR
      • Local CSE
    • MIR (machine specific)
      • Instruction selection using BURS
      • Live variable analysis
      • Register allocation (linear scan)
  • Compilation Speeds
  • Performance on SPEC JVM98
  • Extra
    • Magic
    • Boot image
  • Byteocde Example int align2grain(int i, int grain) { return ((i + grain-1) & ~(grain-1)); } Method int align2grain(int,int) 0 iload_1 1 iload_2 2 iadd 3 iconst_1 4 isub 5 iload_2 6 iconst_1 7 isub 8 iconst_m1 9 ixor 10 iand 11 ireturn