平成9年度 委託研究ソフトウェアの提案

(9) KL1プログラム静的解析系

  
研究代表者: 上田 和紀 教授
早稲田大学 理工学部情報学科



[目次]

  1. 研究の背景
  2. 研究の目的
  3. 研究内容
  4. 研究体制/研究方法
  5. 想定されるソフトウェア成果

[研究の背景]

並列論理型言語のプログラミングとプログラムの効率的実行にとって、 モード解析をはじめとする各種の静的解析技法は非常に基本的な情報を 提供する。モード解析とは、データの流れや通信プロトコルに関する性 質を静的に解析するものである。その効率的な技法が研究代表者によっ て提案され、すでにklintシステム第1版として実装されている。さら に、同技法に基づくill-modedなプログラムの静的デバッガkimaも開発 し、公開してきた。抽象解釈に基づくモード解析の研究は多いが、本モー ド体系の特徴は、単一化による制約充足アルゴリズムに基づいており、 単純であってしかも大規模プログラムへの適用が容易な点である。

しかし、これらの経験を通じて、プログラムの静的デバッグおよび処理 系最適化のためには、解析したモード情報に立脚して、さらにデータ型 やデータ参照数を解析することが重要であることもはっきりしてきた。 これらの解析は、モード解析と類似の技法で効率良く行なうことができ るが、まだ実装されておらず、実際の大規模KL1プログラムでうまく機 能するかどうかはまだ実証されていない。


[研究の目的]

本研究の目的は、これまでに開発したモード解析系をさらに発展させつ つ、さらに型と参照数(あるデータの読み手が単数か複数かに関する情 報)の解析機能を付加しようとするものである。

これらの解析情報は、並行論理プログラムの実行時の性質に関する、実 装方式に依存しない性質である。処理系最適化のためには、間接参照ポ インタの段数をはじめとする実装方式依存の解析情報を抽象解釈によっ て得ることも有用であるが、このような抽象解釈も、モード体系や型体 系の存在を前提として、実装方式非依存の解析情報を得てから行なうこ とによって、見通しを格段に良くすることができる。

モード、型、参照数に関する情報は、(a)プログラムの静的デバッグ、 (b)プログラミングスタイルのチェック、(c)処理系最適化、(d)詳細な プログラム解析のための基礎情報の提供、(e)動的デバッグのための基 p礎情報の提供、などさまざまな応用がある。本研究開発ではまず、これ らの3種の情報を提供する解析系の完成を目指す。さらに、これらの情 報の、処理系最適化や静的デバッガへの応用を検討する。


[研究内容]

現在稼働しているモード解析系klintを発展させることによって、KL1プ ログラムの、実装方式非依存の解析情報を統合的に出力する解析系を構 築する。具体的には、次のような機能を順次検討し、実現する。

(a) KL1特有の言語機能の取扱いの実現

  • ガードおよびボディの組込述語の呼出し、特にベクタ操作など、 構造データへのランダムアクセス操作へのモードづけについて、 klint公開後、試験実装に成功したので、これをklintに組込む。
  • インライン機能のモードづけの可能性については、ひきつづき検 討する。

    (b) 現klintの改訂

    現在公開されているklintには、いくつかのバグがあることが最近 発見された。これらを改訂し、公開を行なう。

    (c) 型解析機能の設計と実装

    本研究で考える型とは、データ構造中の特定の場所に出現しうる関 数記号の集合のことである。リスト、整数、浮動小数点数、列挙型 (例:ストリーム中を流れるメッセージの種類を列挙したもの)な どを、これで表現することができる。モード情報と同様、単一化に 基づく解析によって求めることができる。この機能の設計、実装を 行なう。

    型解析のためには、「どのような関数記号の集合が型を構成するか」 に関する情報が必要である。整数型(=整数の集合)などの一部の 型は、システム既定の型としてあらかじめ用意しておくことが可能 だが、一般には、プログラマが型を定義する機能も必要である。そ こで、型定義機能をあわせて設計、実現する。

    (d) 参照数解析機能の設計と実現

    本研究で考える参照数とは、データ構造中の特定の場所に出現する データの読み手が、単数に限られるか複数になりうるかに関する情 報である。参照数情報は、他の情報と同様に、制約充足問題として 定式化することができ、近似的には単一化によって容易に求めるこ とができる。しかし、より詳細な解析を行なうためには、単一化よ りも複雑な制約充足(含意演算子を含む制約式の処理)が必要とな ることがわかっている。

    そこで、まずは近似解を効率良く求める機能を実装し、その後、正 確な解を求める方法の研究開発を行なう。

  • 
    

    [研究体制/研究方法]

    (1) 研究体制

       氏 名 所  属
    研究代表者上田和紀早稲田大学理工学部情報学科
    研究協力者網代育大早稲田大学大学院情報科学専攻
    研究協力者倉持聡早稲田大学大学院情報科学専攻

    
    

    (2) 研究の方法

    
    

    [想定されるソフトウェア成果]

    (1)作成されるソフトウェア名称

    (2)そのソフトウェアの機能/役割/特徴

    (3)ソフトウェアの構成/構造

    (4)参考とされたICOTフリーソフトウェアとの関連

    (5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど

    すべてKL1で記述する。

    (6)ソフトウェアの予想サイズ(新規作成分の行数)

    2000〜3000行程度

    (7)ソフトウェアの利用形態

    本システムはまず、KL1でプログラムを書くすべてのプログラマにとっ て有用な静的デバッグツールとなることを目指している。klint第1版 によって、KL1プログラムの開発中に犯す誤りの大多数が静的に検出除 去できることが経験されている。モード誤りが宣言なしで検出可能なの に対し、型や参照数の誤りを検出するには、型や参照数に関する宣言が 必要となると予想されるが、宣言さえ与えられれば、さらに多くの誤り が検出できるようになる。

    また、モード、型、参照数の解析を経たプログラムには、より容易に高 度な最適化を施すことができる。その性能向上以外の効果として、オブ ジェクトコードサイズの減少という効果も無視できない。現在のKLICで は、生成されたCコードのコンパイル速度が問題となっているが、コン パクトなCコードが生成できればKLICのコンパイル時間が短縮でき、静 的解析の手間をある程度吸収できると考えられる。

    さらに、今後開発されてゆくであろう種々のプログラム解析技術やプロ グラミング環境は、実装方式非依存の基本解析情報の存在を前提とする ことによって、より高度な技術内容を単純に実現することができる。

    (8) 今年度末の仕上がり状況

    (9)添付予定資料

    ユーザマニュアル


    www-admin@icot.or.jp