2005 Fiscal Year Annual Research Report
並列分散システム統合のための安全な計算状態操作機構
Project/Area Number |
17650008
|
Research Institution | Kyoto University |
Principal Investigator |
八杉 昌宏 京都大学, 情報学研究科, 助教授 (30273759)
|
Keywords | スタック / レジスタ / C言語 / コンパイラ / 入れ子関数 |
Research Abstract |
計算中のプロセスの計算状態を安全に操作可能にすることで、高い実行性能と安全性・正当性を両立させるための拡張C言語の仕様設計、実装技術および応用手法を提案し、それらの評価することで、多数のプロセッサやノードから成るシステムを統合できることを示そうとしている。平成17年度は以下の成果を得た。 1.入れ子関数の仕様設計 言語仕様としては入れ子関数(クロージャ)を利用することにした。入れ子関数はC以外の言語ではよく用いられていて、関数呼出しの呼出し元のフレームで眠っている変数の値への正式なアクセスを可能としてくれる。一方で、calleeセーブ・レジスタを利用した変数へのレジスタ割当てなどの最適化を事実上不可能にすると考えられてきた。本研究ではこの常識を打ち破り、入れ子関数を持つ関数においてレジスタ割当てを可能にする新しいコンパイル技術を確立した。 既存のC言語や拡張C言語との整合性を考慮し、最適化を阻害しない入れ子関数を持てるような言語設計を行った。 2.入れ子関数の実装技術の開発 実装技術のキーとなるのは、lazyな実行スタック操作である。呼出し元でのレジスタ保存を「とりあえず」後回しする既存のcalleeセーブ・レジスタの利用も、このカテゴリに属する。本研究では、入れ子関数の存在下でもこれを実現した。実行中の大部分は入れ子関数のアロケーションを含めて「とりあえず」の状態として実行し、いざ入れ子関数を呼び出す際に実行スタックを「見せられる」状態にすることで、入れ子関数からのアクセスが可能となった。
|