next up previous
Next: 研究の成果 Up: 「KLICの実行時システムの改良・拡張」に関する成果概要 Previous: 研究の背景と目的

研究の内容

本研究では実行時システムの改良・拡張に主眼を置いた。すなわち KLIC のコンパイラによる KL1 から C への変換には原則として手を つけず、実行方式の基本は変えずに、実行時にリンクされるライブラ リの改良のみを行なう。この方式をとることにより、既存の KL1 プ ログラムとの整合を保ったまま改良・拡張を行なうことができる。

改良・拡張を加えるポイントは数多くあるが、本研究では当面以下の諸点に 着目した改良・拡張を行なう。

世代方式ガーベジコレクタの実現
KLIC 処理系は実行管理用も含めす べてのデータ構造に単一のヒープ領域を用いるが、これはメモリ管理を一元化 して簡潔にする利点が大きい反面、短寿命のガーベジを多く生成し、ガーベジ コレクションのオーバヘッドを大きくしている。

そこで、現在の KLIC に欠けている世代 GC を付け加えることによって、KLIC の設計にあたって短寿命のガーベジに対する効率的なメモリ管理を実現する。 また、世代 GC はキャッシュの有効な利用によって処理性能にも大きく寄与す る可能性が高いので、性能向上のためのチューニングを行ない、その効果を評 価する。

デバッグ機能の強化
KLIC 処理系は通常の論理型言語処理系と同様の 機能を持つトレーサが備わっているが、並列に動作する場合は各プロセッサ上 のトレーサの入出力を一本化しているに過ぎないなど、より統合化されたデバッ グ機能が必要である。現在のトレーサは全面的に C で記述されているため、 複雑な処理の記述には不適切で、実際トレース条件の指定などについては現在 のトレーサは単純な述語単位の指定程度しかできず、並列動作する複雑なプロ グラムのデバッグのためには十分とはいいがたい。

そこで、全プロセスを統括してトレースする制御プロセスを KL1 自身で記述 することによって、並列動作の統合的制御と、柔軟な制御を提供するトレーサ を作成する。

自動負荷分散機構の実現
KLIC においては計算負荷の分散はプログラ マの「プラグマ」による指定によって行なっている。この方式は、単純な自動 負荷分散が困難なプログラムに対して、解法アルゴリズムに沿った適切な負荷 分散を指定できるという利点を持っている一方、プログラマの負担が大きくな る欠点を持っていた。

そこで、プログラマがある負荷分散についてある程度のヒントをプログラム中 に指定することによる、半自動的な負荷分散機構を設計し、そのための管理ア ルゴリズムを設計、実装を通じて評価する。

上位レベル言語の設計
KLIC では、プロセス群がメッセージを交換し 合うようなプログラミング・スタイルによって、大規模なソフトウェアの構築 にも耐えるシステムとなっている。しかし、このようなスタイルを用いても、 各プロセスの実現については、良く似た機能を持つプロセスの記述などにおい て、特段の支援機構を持っていない。

そこで、良く似た機能を持つプロセスの記述のために有益な、継承機構を持つ ような簡易な上位レベル言語を設計、実装を通じてその設計を評価、実行時シ ステムの改良・拡張の方向性を探る。



www-admin@icot.or.jp