Up: 「KLICの実行時システムの改良・拡張」に関する成果概要
Previous: 研究の内容
研究上の成果
- 世代方式ガーベジコレクタの実現
- KLIC に対する世代方式のガーベジ
コレクタとしては、第五世代コンピュータの研究基盤化プロジェクトにおいて、
設計・部分試作されたものがあった。この設計について見直しを行なったとこ
ろ、世代間の参照を管理するアルゴリズムに問題があり、複雑な挙動をするプ
ログラムに対してはそのままでは正しく動作しない場合があることがわかった。
この結果に基づき、新たな世代間参照管理アルゴリズムを設計、従来のアルゴ
リズムの問題点を解決し、機能を拡張したアルゴリズムを設計した。
- デバッグ機能の強化
- KLIC の従来持っていた処理系レベルでのトレー
ス機構に加えて、KL1 自身で記述したデバッグ機構を実現するために、KLIC
の持つジェネリック・オブジェクトの枠組にしたがって、ゴール・オブジェク
トと呼ぶ、新たなメタレベル機構を導入した。この機構により、実行可能なゴー
ルをデータとして管理しながら、ゴールの子ゴールへのリダクションは KLIC
処理系に任せることが可能になった。また、データ不足による実行中断、ゴー
ルのリダクションやユニフィケーションの失敗などの処理を、処理系の低レベ
ルで行なうのではなく、ゴールを管理する KL1 プログラムに報告することが
可能になった。
このゴール・オブジェクトを用いたステッピング・トレーサを試作し、処理系
レベルでのトレーサと同等の機構を実現することを通じて、ゴール・オブジェ
クトの機構が柔軟なトレーサの実現機構として妥当なものであることを確認し
た。
- 自動負荷分散機構の実現
- 単純な負荷分散を行なうと、通信量や通信頻
度の増加が生じ、かえって計算速度の低下を招くおそれが強い。そこで、プロ
グラム中に負荷分散候補となるゴールを指定することによって、通信負荷を抑
制しながら負荷分散を実現する方式が従来から試みられている。
本研究においては、通信負荷の増大を最小限に止めるために、あるワーカ・プ
ロセスで生じたゴールは、なるべくそのワーカ・プロセス内で処理するような
負荷分散モデルを設計した。この実現のために、各ワーカ毎に負荷分散単位
(「タスク」と呼ぶ) を管理するプロセス (ローカル・マネージャ) を置き、
全体としてワーカ間での負荷調整のためにワーカの忙しさを管理するプロセス
(グローバル・マネージャ) を置く管理方式を設計、実装を通じて設計の妥当
性・有効性を確かめた。
- 上位レベル言語の設計
- 従来の KL1 上にオブジェクト指向言語を構成
する試み (A'UM, AYA など) は、いずれもプロセス指向のプログラミング・ス
タイルをそのまま言語機能として取り込む設計をとっていた。この方法は全
体として統一性の高い構成になる利点がある一方、KL1 とは外見上まったく異
なる言語となることから、従来から KL1 でプログラミングしてきたユーザに
受け入れられにくいという欠点があった。
この点を克服し、KL1 プログラムとの親和性の高い言語とするために、オブジェ
クト指向言語の諸機能の内、継承機能に焦点を絞った言語を設計、これを実装
し、KLIC の段階的な拡張の一方向を示した。
ソフトウェアとしての成果
- 世代方式ガーベジコレクタの実現
- 今年度は既存の部分試作システムの
見直しと、アルゴリズムの再設計に止まり、ソフトウェアとしてまとまった成
果を出すには至らなかった。
- デバッグ機能の強化
- 以下のふたつのモジュールからなる。
- 自動負荷分散機構の実現
- 自動負荷分散機構を実現する管理機構を KL1
自身で記述したもの。自分で実行すべきタスクがなくなったワーカ上のローカ
ル・マネージャが、グローバル・マネージャにその旨を報告すると、グローバ
ル・マネージャが、タスクを多く抱える他のローカル・マネージャに通知して、
タスク単位の分散を行なわせる方式を取っている。
また、分散候補ゴール指定を付加記述した KL1 プログラムを、この管理機構
下で実行するのに必要な形式に自動変換するツールも提供する。
- 上位レベル言語の設計
- 継承機構を持つ上位言語のプログラムを、通常
の KL1 言語プログラムに変換するコンパイラ。変換後のプログラムは通常の
KLIC 処理系でコンパイル・実行できる。
この他にも、処理系の比較的細かな諸点について数多くの改良・拡張や、バグ
修正などを行なってきた。
残された課題
- 世代方式ガーベジコレクタの実現
- 設計したアルゴリズムに基づく世代
方式 GC の実装と、その評価が課題として残されている。
- デバッグ機能の強化
- 試作したステッピング・トレーサには、以下の点
で改良の余地が残されている。
- 処理速度の改善。現状では、ブレークポイントを指定した実行など、ユー
ザとの対話が不要な場合も、ゴール・オブジェクト機構を用いたステップ実行
を KL1 プログラム・レベルで繰り返している。このため、処理系の低レベル
で実現したトレーサに比べてかなり低速である。速度の改善のためには、ゴー
ル・オブジェクト機構自体の機能拡張も必要と考えられる。
- トレーサ機能強化。処理系の低レベルで実現したトレーサと同様の機能
が実現できることは示せたが、さらに柔軟なトレース指定などが可能なような
拡張が望ましい。トレーサが KL1 自身で記述されていることから、このよう
な拡張に大きな困難はないだろうと予測される。
- 自動負荷分散機構の実現
- 実現した負荷分散方式の評価は未だ不十分で
ある。また、ほぼ同じ枠組でも細部で異なるさまざまな方式が考えられること
から、そのような諸方式を実現し、比較評価する必要がある。
- 上位レベル言語の設計
- 実装した処理系を、実際にプログラミングに用
いて評価する必要がある。また、その結果に基づき、実行時システムにどのよ
うな改良・拡張を施すことがこうした上位レベル言語の実現に役立つかを検討
していく必要がある。
評価
上述のように全体として実装・評価に不十分な点が少なくない。この主原因は、
今年度の年度途中から開始したばかりの研究であるため、研究担当者のシステ
ムの理解に時間がかかり、研究にかける時間が不足していた点にある。
しかしながら、KLICの実行時システムについて、さまざまな面からの改良・拡
張の試みを行なうことができ、今後の研究の道筋をつけることができた成果は
大きいものと考える。
www-admin@icot.or.jp