学位論文要旨



No 125128
著者(漢字) 小笠原,武史
著者(英字)
著者(カナ) オガサワラ,タケシ
標題(和) 仮想機械上での言語機能固有オーバーヘッドの適応的最適化に関する研究
標題(洋) Adaptive Optimization of Language-Specific Overhead for Java Virtual Machines
報告番号 125128
報告番号 甲25128
学位授与日 2009.03.23
学位種別 課程博士
学位種類 博士(学際情報学)
学位記番号 博学情第27号
研究科 学際情報学府
専攻 学際情報学専攻
論文審査委員 主査: 東京大学 教授 坂村,健
 東京大学 教授 暦本,純一
 東京大学 教授 清水,謙多郎
 東京大学 准教授 越塚,登
 東京大学 准教授 中尾,彰宏
内容要旨 要旨を表示する

本論文はプログラムの開発効率を上げるためのプログラミング言語の機能が実行時に引き起こす性能オーバヘッドをJava実行環境で削減する手法を提案する.堅牢性,移植性,マルチプロセッサ上でのスケーラビリティを高めるためにJavaは例外処理,浮動小数点演算の精度保証,マルチスレッドを提供している.Javaが様々な分野で主要なプログラム開発言語として利用されるにつれ,こうした機能が多くのプログラムで利用されるようになった.そのためJava実行環境がプログラムを最適化してこれら言語機能を利用する際の性能オーバヘッドを削減することはプログラムの性能向上の鍵となる.

最適化のために,言語機能を利用するコードの実行時特性に適応した手法を用いる.標準ベンチマークや実環境を反映した実験プログラムを用いて言語機能を実装するコードの挙動を分析し,それを基にコードの実行時パスに重点をおいてJava実行環境で最適化するアプローチをとる.例外処理コストに対するアプローチは,実行時ライブラリにより例外処理を頻発させるコールスタックを収集し,ジャストインタイム(JIT)コンパイラが収集されたコールスタックについて例外処理の複雑な処理を単純分岐に変換する.実際に処理される例外のみに適応した動的最適化を行い,例外処理を行わない実行パスには余分なペナルティがない.浮動小数点演算精度保証コストに対するアプローチは,JITコンパイラが1つの精度モードでより長く実行するコードを生成する.メソッドに対しメソッドの呼出サイトと同じ浮動小数点精度モードを持つコードを必要に応じて生成する.また実行されるコードのプロファイル情報に基づきモード切替が実行頻度の高いコードで起きないようにする.これにより浮動小数点モードを持つプロセッサ上で単精度演算と倍精度演算が混在するプログラムを実行する際の精度保証コストを減らすことができる.スレッド同期コストに対するアプローチは,共有オブジェクトのロックが同じスレッドから続きやすいという特性を利用してロックはその解放後も最後に取得したスレッドが仮所有する.スレッドがロックを仮所有する限り,ロック操作とそうでない操作の直列化によるコストを削減できる.別スレッドがロックを取得すると所有権はそのスレッドに移る.

提案した最適化手法が言語機能を利用したJavaプログラムの性能をどの程度改善できるかについて評価結果を示す.例外処理と精度保証の最適化の評価において提案手法をIBM Java JITコンパイラに実装した.業界標準であるSPECjvm98ベンチマークの7プログラム中4つで,既存の代表的手法より高い性能を確認した.特に例外処理最適化はIBM Java実行環境の製品に組み込まれ,Javaの多くのプログラム製品の性能向上に貢献している.例外処理最適化はSPECjvm98ベンチマークの2つのプログラム_228_jackと_213_javacの性能をそれぞれ18.3%と13.8%改善した.精度保証最適化は,メソッドインライン展開最適化の複数の方針および異なるアーキテクチャの複数のプロセッサで,既存手法より高い性能を確認した.SPECjvm98ベンチマークの2つのプログラム_227_mtrtと_222_mpegaudioの性能をそれぞれ8.36%と21.2%改善した.ロック最適化は,共有オブジェクトを利用するJavaサーバアプリケーションの2つの実世界シナリオにおいて,既存手法より102%と80%の性能向上を確認した.

審査要旨 要旨を表示する

小笠原武史氏が提出した博士論文は、"Adaptive Optimization of Language-Specific Overhead for Java Virtual Machines"(仮想機械上での言語機能固有オーバーヘッドの適応的最適化に関する研究)と題するもので、Java言語が持つソフトウェアの開発効率向上のための機能が引き起こす性能オーバーヘッドを削減する手法を提案するものである。本論文では特に、Java言語の特徴である堅牢性、移植性、マルチプロセッサ上のスケーラビリティといった特徴のために備えている例外処理、浮動小数点演算の精度保証、マルチスレッドの機能に着目し、これらを最適化し、性能オーバーヘッドを削減し、プログラムの性能向上を達成した。

まず、Java言語の最適化のための基本的な手法としては、言語機能を利用するコードの実行時特性に適応した手法を用いている。標準ベンチマークや実環境を反映した実験プログラムを用いて言語機能を実装するコードの挙動を分析し、それを基にコードの実行時パスに重点をおいてJava実行環境で最適化するアプローチをとっている。

次に具体的に、まず例外処理コストに対するアプローチは、実行時ライブラリにより例外処理を頻発させるコールスタックを収集し、JITコンパイラ収集されたコールスタックについて例外処理の複雑な処理を単純分岐に変換するものである。実際に処理される例外のみに適応した動的最適化を行い、例外処理をおこなわない実行パスには余分なペナルティをなくすことができる。

第二に、浮動小数点数演算制度保証コストに対するアプローチは、JITコンパイラが1つの精度モードでより長く実行するコードを生成する方式である。メソッドに対し、メソッドの呼び出しサイトと同じ浮動小数点精度モードを持つコードを必要に応じて生成する。また実行されるコードのプロファイル情報に基づき、モード切替が実行頻度の高いコードで起きないようにする。これにより、浮動小数点モードを持つプロセッサ上で、単精度演算と倍精度演算が混在するプログラムを実行する際の精度保証コストを減らすことができた。

第三に、スレッド同期コストに対するアプローチは、共有オブジェクトのロックが同じスレッドから起きやすいという特性を利用して、ロックはその解放後も最後に取得したスレッドが仮所有する方式である。スレッドがロックを借り所有する限り、ロック操作とそうでない操作の直列化によるコストを削減することができる。別スレッドがロックを取得すると、所有権はそのスレッドに移る。

提案したこれらの最適化手法が、言語機能を利用したJavaプログラムの性能をどのていど改善できるかについての評価結果も次のものが得られている。例外処理と精度保証の最適化の評価において、提案手法を商用のJava JITコンパイラに実装した。業界標準であるSPECjvm98ベンチマークの7プログラム中4つで、既存の代表的手法より高い性能を確認した、特に例外処理最適化はJava実行環境の製品に組み込まれ、Javaの多くのプログラム製品の性能向上に寄与した。

第一に、例外処理最適化は、SPECjvm98ベンチマークの2つのプログラム _228_jackと_213_javacの性能をそれぞれ18.3%と13.8%改善した。第二に、精度保証最適化は、メソッドインライン展開最適化の複数の方針及び、異なるアーキテクチャの複数のプロセッサで、既存手法より高い性能を確認した。SPECjvm98ベンチマークの2つのプログラム_227_mtrtと_222_mpeguadioの性能をそれぞれ8.36%と21.2%改善した第三に、ロック最適化は、既存手法より102%と80%の性能向上を確認した。

本研究の成果の主要な業績として、ジャーナル論文5本を執筆しており、十分に高い業績を有している。更に本研究の成果は、商用のJavaコンパイラ製品等に搭載され、実際の世の中のソフトウェアの性能向上に寄与している点も、高く評価できる。また、小笠原武史氏は、過去においては、すでに先行研究を含めれば、10本以上の査読付き論文や、18件の特許出願をしており、計算機科学分野の研究者として、すでに十分に確立している。

そこで、本審査委員会は、本論文が博士(学際情報学)の学位に相当するものと判断する。

UTokyo Repositoryリンク