2005 Fiscal Year Annual Research Report
バイナリレベル複数スレッド化のためのバイナリコード解析技術の研究開発
Project/Area Number |
17700047
|
Research Institution | Utsunomiya University |
Principal Investigator |
大津 金光 宇都宮大学, 工学部, 助手 (00292574)
|
Keywords | バイナリ変換 / 複数スレッド化 / コード解析 / 実行時処理 / 自動変換 / 変数解析 |
Research Abstract |
本年度は、研究計画に沿って、バイナリレベル複数スレッド化のためのバイナリコード解析技術の開発を進めた。バイナリ変換による複数スレッド化を行なう上ではスレッド間でのデータ依存の把握が必要となるが、本研究ではその中でも解析が難しいメモリアクセスに伴うデータ依存を解析する「バイナリレベル変数解析手法」を開発している。本手法はメモリ上に配置された変数のアドレス値を計算木により表現し、その正規形同士の同形判定により同一アドレスへのアクセスであるかどうかを判定することを基本とする手法であり、これによりスレッド間依存変数であるかどうかを判定するものである。しかし、本手法により静的に解析できないメモリアクセスが存在することが明らかとなっており、実行時のチェックにより依存の判定を確実に行なう手法が必要であった。 本研究では、複数スレッド化の対象であるプログラム中のループにおいて変数の値の変化に着目し、スレッド間依存判定の対象である二変数間のそれぞれについて値が変化する場合と変化しない場合に分けて実行時チェックの処理方法を定義した。これにより、ループ実行前に依存の有無の判定が可能な場合が明らかとなり、高コストである依存判定処理をループ実行前の一度だけ行なうことで、実行時オーバヘッドが格段に削減できるようになる。実際のコードを用いての評価を行なった結果、全ての判定をメモリアクセス毎に行なう従来の方法に比べて、本判定法によりオーバヘッドが大きく削減されたことを示した。なお、この成果は現在論文として投稿中である。 また、バイナリレベル複数スレッド化を実行時に支援するシステムの全体設計を行ない成果として公表した。これはバイナリコードの静的変換が困難なレジスタ間接ジャンプ命令への対応や実行時処理を行なう以外に対処できない自己書き換えコードへの対応を実行時に行なうことを基本機能としており、さらに効率的な複数スレッド実行を支援するためのホットループ検出機能と投機的複数スレッド実行を支援するためのホットパス検出機能を備えるものである。本研究で開発している依存変数の実行時チェックについてもこの実行時支援システム上で実装される予定である。
|