shuJIT - Java Just-in-Time Compiler for x86 processors

last-modified: August 8, 2005 23:25 JST

[Japanese] [English]
http://www.shudo.net/jit/index-j.html
x86 プロセッサおよび Sun の Classic VM (JDK, Java 2 SE, JRE) 用の JavaTM Just-in-Time コンパイラです。 FreeBSD と Linux、NetBSD で動作します。

What's New

2005/8/8
0.8.0 をリリースしました。
詳しくは ChangeLogファイルをご覧下さい。
2003/4/9
shuJIT を参照している論文一覧を、このページに追加しました。
2003/1/20
0.7.14 をリリースしました。
2002/7/17
0.7.13 をリリースしました。
1999/8/21
0.3.7 をリリースしました。
1998/9/20
このページを用意し、最初の版をリリースしました。

もくじ


動作環境

FreeBSD

次の組合せで動作を確認しています。

Linux

次の組合せで動作を確認しています。

入手法

配布ページはこちらです。
shuJIT は GNU LGPL の各条項に従って頒布されます。
ChangeLog を眺めるのも面白いかもしれません。 コンパイル済みのバイナリも提供しています。

各種文書


性能

このページ (英語) に、 JIT コンパイラの性能を比較した結果を用意しています。 評価には、SPEC JVM98, SciMark 2.0, Linpack benchmark, エラトステネスのふるいを 用いています。

将来

以下を計画しています。
バイトコードの解釈を変える実験
JITコンパイラはバイトコードをいかようにもコンパイルできます。
つまり、JVMによるバイトコードの解釈はJITがコンパイラが決めています。
このアイディアに基づき、分散仮想マシンMetaVM (旧名 JITDO) を実装しました。
ソースコードが shuJIT のアーカイブに含まれています。ただし文書がありません。
Myrinetでの低遅延通信を実現する土台として shuJIT をハックした方もいます。
さらなるアイディア募集中。
高速化
配列の boundary check 処理の軽減。alignment を意識する。など。
MOBA 対応
スレッド移送システムと共に動く JIT コンパイラにします。
MMX, 3D Now!, SSE, SSE2 対応
嘘です。

Related Work

興味深いリソース

OpenJIT
JIT コンパイラの挙動を Java のコードでカスタマイズできるようにしようという、
東工大の松岡研、富士通(研)で JIT コンパイラに関わっている方々のプロジェクト。
Jaguar
ハードウェア資源、例えばネットワークカード上のメモリに、Javaプログラムから
JNIを使わずに直接アクセスさせることでデータのメモリコピーを減らし、
高性能通信およびI/Oを実現しようという研究、システム。
JIT が生成するコードの変更を、shuJIT を元に実現していた。
Matt Welshのプロジェクト。
Java VM Implementations
風間さんがメンテナンスしている Java Programming Information の一部。
Java 仮想マシンに関するリンクが集められている。

処理系

ORP: Open Runtime Platform (http://intel.com/research/mrl/orp/)
Intel の Microprosessor Research Labs で開発された x86 用の Java 実行系。
2種類の JIT コンパイラ (O3, O1) を持つ。
将来は、IA-64 向けのコードも公開される予定。
TYA (http://sax.sax.de/~adlibit/)
Sun の JVM および Linux, FreeBSD / x86 用の JIT コンパイラ。ソースが公開されている。
JBuilder JIT for Linux
Inprise社 が開発した、JDK 1.2/Linux/x86 用の JIT コンパイラ。
この JIT コンパイラは Sun/Inprise JDK 1.2.X に含まれている。
ElectricalFire
開発当初から高性能が目標の JVM。インタプリタを持たない。
Kaffe
0 から作成された PersonalJava 1.1 互換の Java 実行系。
ソースが公開されていて、JIT コンパイラを含んでいて、
数多くの OS、プロセッサに対応している。
Japhar
Java 実行系。インタプリタのみ。
BulletTrainTM
NaturalBridge LLC 社 が開発したスタティックコンパイラ (Ahead-of-Time コンパイラ)。
Javaバイトコードをネイティブコードに変換する。Win32 用。売り物 ($999)。
strictfpのセマンティクスをサポートしている。
Java-Linux
Linux 上の Java 関連情報。
FreeBSD Java Project
FreeBSD 用 JDK。

参考文献

The JIT Compiler Interface Specification
Sun の Classic VM 用に JIT を作成する際の C 言語 API。
Sun はもうこの API をサポートしない。
通常の場合は JNI (Java Native Interface) で事足りるものの、JIT コンパイラを作ろうとした場合、今だに、Sun がサポートしていないこのインタフェースに依る必要がある。
Java 仮想マシン仕様 第2版 (原題: The Java Virtual Machine Specification) (Tim Lindholm, Frank Yellin, 村上雅章訳)
Java 仮想マシンの仕様書。
4000円。ISBN4-89471-356-X。
C Magazine 誌 1996年 5月号 pp.56,57「コラム1 nativeメソッドのインタフェイス」
数少ない、JNI より前のネイティブメソッドインタフェース(NMI)の解説。
80386プログラミング (John H. Crawford, Patrick P. Gelsinger, 岩谷宏訳)
3500円。ISBN4-8759-128-X。
MMXテクノロジ最適化テクニック (小鷲英一)
数少ない、x86 アセンブラに関する日本語の本。
3500円。ISBN4-7561-0797-4。

shuJIT を refer している論文


謝辞

あたたかく御指導頂いた村岡先生、 村岡研分散コンピューティング班の皆様 ( 福盛さん, 根山くん, 秋岡さん)、 大原さん、 高橋秀明さん、 たなかけいしろうさん、 三浦さん、 加藤淳也さん、 丸山冬彦さん に感謝します。

Back to


Copyright (C) 1998,1999,2000,2001,2002,2003,2004,2005 首藤 一幸
<shudo at computer.org>