近年、 並列計算環境のハードウェア的な基盤が 急速に整備されつつあるのに対し、 ソフトウェアに関する課題は山積しており, 特に高い性能を発揮するプログラムを容易に開発する技術が強く求められている。 そこで、KL1をはじめとする並行/並列型のプログラミング言語が期待されている。 これらの言語は、 プログラムの並行性/並列性の記述を 言語の基本的プリミティブとして備えているため、 並列処理にともなうバグ混入を最小化できるという特質を持つ。 また、並行/並列プロセスのネットワークを自然に記述できるため、 所謂データ並列に留まらない多種多様な応用と プログラミング・パラダイムに対する高い包容力も有している。
しかしながら、 並列処理の重要な側面である高速性の観点からは、 これらの並行/並列型言語の処理システムの性能は十分とは言えない。 この性能上の問題点の大きな理由に、 言語の本質である並行性制御にともなうオーバヘッドがある。 KL1はその端的な例の一つであり、各々のゴールが並行実行の単位であるため、 ゴール・スケジューリングの方式がプログラムの性質に適合していないと、 本来逐次的に実行するのが最適な部分を並行実行するなど、 無駄な処理によるオーバヘッドが著しく大きくなる場合がある。
本研究の目的は、 KL1のゴール・スケジューリングを 個々のプログラムに対してできるだけ適合させることができる、 コンパイラとランタイム・システムを得ることにある。
一般に並行/並列型プログラムのスケジューリングでは、 逐次実行が最適であるようなシーケンスを発見し、 それを逐次的に実行する逐次化が重要である。 例えばKLIC [1]などこれまでのKL1処理系では、 プログラムを深さ/左優先に実行するのが逐次化の最適シーケンスとみなしている、 と考えることができる。 しかしプログラムの性質が、 このような単純な推定には適合しないことが普通であり、 様々な性能上の問題点が発生する。 したがって、コンパイル時により詳細な解析を行って、 プログラムの性質に適合した逐次化を行うことが、 まず第一の目的となる。 次に、適切に逐次化されたプログラム断片を効率的に実行するには、 本質的な並行動作との関係などによる逐次実行の中断に対して、 最小のオーバヘッドで対処できるようにすることも必要である。 この実行メカニズムを求めることが、 本研究の第二の目的である。