just-in-time compilation keith w. krajewski 3/4/2011 paper:

Post on 23-Feb-2016

51 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Just-In-Time Compilation Keith W. Krajewski 3/4/2011 paper: A Brief History of Just-In-Time (2003) John Aycock. Overview. What is JIT? Why know about JIT? Who has used JIT (and to what end)? Simulation JIT in modern languages Classifying JIT techniques Tools for JIT compilation. - PowerPoint PPT Presentation

TRANSCRIPT

Just-In-Time Compilation

Keith W. Krajewski3/4/2011

paper:A Brief History of Just-In-Time (2003)

John Aycock

Overview

What is JIT? Why know about JIT? Who has used JIT (and to what end)? Simulation JIT in modern languages Classifying JIT techniques Tools for JIT compilation

What is JIT?

Dynamic compilation “JIT” itself a new term to computing, ~1993 Theoretically unnecessary

Goals of JIT

Compiled programs are faster Interpreted programs are smaller Interpreted programs are more portable Interpreter has access to runtime info

Why know about JIT?

Because JIT is like the cure for scurvy.

Who has used JIT (and how)?

Early sightings LC^2 APL mixed/throw-away

code Fortran Smalltalk Self

Oberon Erlang O'caml Modern stuff

Ancient Runes

McCarthy, Lisp (1960), punch cards! Univ. of Michigan IBM 7060 (1966) Thompson, regular expressions (1968)

LC^2

Language for conversational computing Mitchell, Perlis, & van Zoeren (1968) Mostly forgettable Cached the actions it performed

APL

Phillip S. Abrams, 1970 Drag-along Beating

Mixed & Throw-Away Code

Mixed – Dakin & Poole (1973) & Dawson (1973)

Throw-away – Basic

Fortran

Hansen's 1974 optimization Frequency-of-execution counter Threshold levels Ordered set of machine-specific optimizations

Smalltalk

Lazy compilation to native code No pagination of compiled code

Self

David Ungar, Randall Smith, 1987 Pure OO, dynamically typed 3 generations

Customization (Pitfall: over-customization) Optimized type info for loops (Pitfall: compilation

time) Illusion of speed

Influenced Sun's later works (Java)

Oberon

Niklaus Wirth, 1986 Compiled to “slim binary” Supported dynamic loading of modules Continuous re-optimization in background

Erlang

Ericsson, 1986 HiPe – explicit invocation Mixed code, switch upon method invocation or

exception

O'caml

Specialized the interpreter's instruction set to include “macro opcodes”

… without much benefit

Simulation

1st gen – straight 1 by 1 translation 2nd gen – 1 by 1 translation with cache 3rd gen – blocks of source 4th gen

Profiled execution Hot path detection Code generation Bailout

HP Dynamo

Compiled HPA-8000 code into HPA-8000 code ...amazingly, this worked. 30% performance

increase Important to be able to bail out

Java

Static explicit compilation to JVM bytecode Early JVM did straight interpretation Motivation for JIT research Now very portable and relatively quick

C#/.Net

Static compilation to CIL (MSIL), then bytecode Dynamic per-method compilation to native

machine

Classifying JIT

3 properties Invocation – explicit/implicit Executability – monoexecutable/polyexecutable Concurrency

Toolkits for JIT compilation

Keppel (1991), Engler & Proebsting (1994), Ramsey & Fernandez (1995), Engler (1996), Fraser & Proebsting (1999)

Address three main problems Binary code generation Cache coherence Execution

Summary

Dynamic compilation Combines best features of both compiled and

interpreted programs Lazy compilation, incremental optimization,

mixed code, throw-away code, hotspot detection, machine-specific optimization, customization, simulation

Don't re-invent the wheel again

Works cited

Aycock, John. A Brief History Of Just-In-Time. 2003.

Petzold, Charles. .NET Book Zero. 2006.http://www.charlespetzold.com/dotnet/DotNetBookZero11.pdf

Wikipedia: Just-In-Time Compilation.http://en.wikipedia.org/wiki/JIT_compilation

top related