安全なTSA

SafeTSA ( Safe T yped Single Assignment ) は、Javaプログラミング言語と標準の Java 仮想マシン (JVM)バイトコードのすべての型安全性を表現できる静的単一代入形式(SSA) 中間表現です。

2005 年現在、多くの最適化コンパイラ (JVM で使用されるジャストインタイム コンパイラを含む) は内部で SSA 表現を使用しています。一般的な JVM 用ジャストインタイム コンパイラは、JVM スタック マシン バイトコードを内部の静的単一代入表現に変換し、最適化を実行し、SSA 形式をホスト CPU のマシンコードに類似した低レベル形式に変換し、プラットフォーム固有の最適化をいくつか実行してから、最終的に実行されるネイティブ コードを作成します。SafeTSA はこれらの SSA 内部表現に類似した外部表現ですが、SafeTSA は標準 JVM バイトコードの完全な型安全性 (クラス ロード時のセキュリティ検証可能性を含む) も提供します。理論上、これにより JVM の利点が維持されると同時に、プログラムを効率的に実行するために JVM が実行する必要がある作業量が削減されます。

SafeTSAの開発者たちは、IBM JikesRVM(当時はJalapeño JVMと呼ばれていました)を改造し、標準JVMバイトコードとSafeTSAバイトコードの両方を使用できるようにしました。その後、標準的なJavaベンチマークスイートを実行し、SafeTSAの入力がジャストインタイムコンパイラからより高速に実行されるネイティブコード出力を生成することを示す論文を発表しました。さらに、研究者たちはSafeTSAがネイティブコードへのコンパイル時間も短縮されることを示しました。

一方、スタック マシン バイトコード (標準 JVM バイトコードなど) の利点には、インタープリタを簡単に実装できることが挙げられます。

2005年後半の商用JVMのほとんどは、バイトコード解釈とバイトコードのジャストインタイム最適化コンパイルを組み合わせて使用​​していましたが、SafeTSA研究で使用されたJikesRVMは、ジャストインタイムコンパイルに2つの異なる最適化レベルのみを使用しています。研究プラットフォームはSafeTSAバイトコードの実行に解釈を使用しなかったため、商用JVMの改変版でSafeTSAバイトコードがどのように動作するかは明確ではありません。

2005 年後半現在[アップデート]、SafeTSA は学術界でのみ使用されているようです。

  • ターゲットサイトでの動的最適化をサポートすることを目的とした型安全なモバイルコード表現 (2000) W. Amme、N. Dalton、M. Franz、J. von Ronne
  • SafeTSA: 静的単一代入形式に基づく型安全かつ参照的に安全なモバイルコード表現 (2001) W. Amme、N. Dalton、J. von Ronne、M. Franz
  • SafeTSA表現を用いた既存Java仮想マシンのパフォーマンス向上(2002)W. Amme、J. von Ronne、M. Franz
「https://en.wikipedia.org/w/index.php?title=SafeTSA&oldid=1306039903」より取得