2006 Fiscal Year Annual Research Report
バイナリレベル複数スレッド化のためのバイナリコード解析技術の研究開発
Project/Area Number |
17700047
|
Research Institution | Utsunomiya University |
Principal Investigator |
大津 金光 宇都宮大学, 工学部, 助手 (00292574)
|
Keywords | バイナリ変換 / 複数スレッド化 / コード解析 / 実行時処理 / 自動変換 / 変数解析 |
Research Abstract |
本年度は研究計画に従い、バイナリレベル複数スレッド化のためのバイナリコード解析技術の開発を継続して進めた。バイナリ変換による複数スレッド化を行う場合に、複数スレッド化前のコードと同じ計算結果になることを保証する(つまり「正しい実行」を保証する)ためにはバイナリコードを対象としてスレッド間でのデータ依存の把握が必要となるが、本研究ではこのデータ依存の把握を行うためにメモリ上に配置された変数のアドレス値を計算木により表現し、その正規形同士の同形判定により同一変数への参照であるかどうかを静的に判定する解析技術「バイナリレベル変数解析手法」と、静的に依存関係を解析し切れない変数について静的な解析情報を前提として実行時にスレッド間で真にデータ依存が存在するかどうかの判定を行う「スレッド間データ依存実行時判定手法」の開発を行っている。今年度は主に「スレッド間データ依存実行時判定手法」の開発を進めた。前年度において、複数スレッド化の対象とするプログラムループ中に含まれる各変数のアドレスの値変化に着目して、各変数がスレッド間でデータ依存関係になるかどうかの判定処理を実行時に行う際に変数間のそれぞれのアドレスについて値変化する場合と変化しない場合に分けて検討を行い、変数のアドレス値の変化範囲がループ実行前に算出可能である場合に、ループの実行開始前に依存の有無の判定を行うことで、ループの各イテレーション毎に行っていたため高コストになっていた依存判定処理の回数を大幅に削減し、低オーバーヘッド化を実現できることを示した。本年度は、ループ内の変数のアドレス値の変化範囲がループ実行前に算出困難な場合についての低コストな実行時判定方法を検討し、初期評価を行った。その結果、正しいプログラムの実行は可能であるものの、チェックによるオーバーヘッドの削減が不十分であることが判明した。 また、昨年度設計を行ったバイナリレベル複数スレッド化を実行時に支援するシステムの実装を進めた。本年度は、社会で幅広く使われているx86プロセッサを搭載したLinux PCシステムを前提として、任意のユーザプログラムに対してバイナリコードのパッチ当てを行う機能を実現し、動作確認を行った。今後、本実行時支援システム上に、先に述べたスレッド間依存変数の実行時チェック機能を実現する予定である。
|