計算中のプロセスの計算状態を安全に操作可能にすることで、高い実行性能と安全性・正当性を両立させるための拡張C言語の仕様設計、実装技術および応用手法を提案し、それらを評価することで、多数のプロセッサやノードから成るシステムを統合できることを示そうとしている。提案方式は、言語仕様としては入れ子関数(クロージャ)をベースとし、関数呼出しの呼出し元のフレームで眠っている変数の値への正式なアクセスを可能としている。これを、L-closureと呼ぶ、高い実行性能を得るためのクロージャとして提案している。平成19年度は以下の成果を得た。 1.提案手法の評価環境の構築 提案する仕様と実装技術を、実動するコンパイラとして実現した。平成18年度までに、通常のC言語へのトランスレータとしての実装と、GNU C Compiler(GCC)のバージョン3.2を改造した実装を行ったが、平成19年度はさらにGCC3.4.6を用いた環境を構築した。また、GCC4対応に向けての調査を行った。 2.応用プログラムの開発・提案手法の検証 特にマルチスレッド、負荷分散、実行状態の保存・変更・復元、自動メモリ管理のポインタ補正を中心として応用プログラムを作成し、これらを用いた提案手法の有用性の検証を行った。結果として、特にレジスタ数の多い計算機において、高性能が達成されることが示された。 3.言語仕様の改良 L-closureへのポインタ(や型)を構造体メンバ、関数、配列、型定義などでも利用できるように、キーワードを付与した入れ子関数の定義についての構文の修正を行ってきた。平成19年度はさらに構文の修正を行い、L-closureを返すL-closure定義(意味的にはエラーになるが構文としては認められる)、関数プロトタイプ宣言における"*"記号の省略などに対応した。
|