学位論文要旨



No 214108
著者(漢字) 増原,英彦
著者(英字)
著者(カナ) マスハラ,ヒデヒコ
標題(和) 並行オブジェクト指向言語における自己反映アーキテクチャの設計と部分計算を用いたコンパイル技法
標題(洋) Architecture Design and Compilation Techniques Using Partial Evaluation in Reflective Concurrent Object-Oriented Languages
報告番号 214108
報告番号 乙14108
学位授与日 1999.01.25
学位種別 論文博士
学位種類 博士(理学)
学位記番号 第14108号
研究科
専攻
論文審査委員 主査: 東京大学 教授 萩谷,昌己
 東京大学 教授 平木,敬
 東京大学 教授 玉井,哲雄
 早稲田大学 教授 二村,良彦
 東京大学 助教授 清水,謙多郎
内容要旨

 並列・分散プログラムを開発する際には、実行効率や耐故障性を向上させるために、解こうとしている問題の性質や対象とするハードウェア環境に特有の改造を行うことが多い。このような改造は、素朴に記述されたプログラムの構造を大きく改変したり、プログラム全体に渡って何箇所も単純な変更を施すことによって実現されるため、プログラムの再利用を困難にしている。自己反映(リフレクティブ)言語は、言語処理系の内部構造を抽象化された形で提供することで、アプリケーション中から処理系の挙動を変更・拡張することを可能にしている。このような枠組は自己反映アーキテクチャと呼ばれるが、これによって、問題や実行環境に特有の改造を、言語処理系の拡張としてアプリケーションから切り離して記述することができ、結果としてアプリケーション・改造部分両方の移植性・再利用性を高めることができる。一方、自己反映言語の実行モデルは解釈実行に依存しているため、素朴に作られた処理系は、自己反映的でない言語(非自己反映言語)と比べて実行速度が非常に遅い。既存の自己反映言語の処理系の多くは、拡張・変更できる対象を制限する、つまり、一部の命令のみが解釈実行されるように限定し、その以外の命令をコンパイル実行することで、効率の改善を図っている。しかしこの方法では、解釈実行を完全に除去することができないため、満足のゆく効率が得られるとは限らない。さらに、解釈実行とコンパイル実行が混在するモデルは、自己反映アーキテクチャの見通しを悪くする。

 本論文では、自己反映並行オブジェクト指向言語ABCL/R3の自己反映アーキテクチャの設計とコンパイル技法の提案を行う。部分計算を利用したコンパイルを行うことで、高い拡張性を持った自己反映アーキテクチャを提供しつつ、解釈実行のない効率的な実行を達成している。具体的には、自己反映アーキテクチャの構成要素を、メタインタプリタ(3章)とメタオブジェクト(4章)に分類し、それぞれについて設計およびコンパイル技法の提案を行っている。

 メタインタプリタは、式の解釈実行部分を司るオブジェクトである。この設計に関しては、いくつかのアプリケーション例を挙げ、そこで有用となる最適化などの改造を検討し、それらが無理なく記述できるものを提案している。さらに、委譲機構を提案することで、メタインタプリタの拡張部分の合成や適用範囲の制御が容易に行える方法を与えている。

 メタオブジェクトはメソッドの選択や排他制御機構などを司るオブジェクトである。従来のメタオブジェクトは、状態遷移機械として設計されていたため、部分計算による最適化が困難であったが、本論文では、並行オブジェクト指向言語Schematicで提案された読み出し・書き込みメソッドの概念を用いることで、状態に関する操作を分離して記述することで解決している。

 本論文ではまた、それぞれの構成要素に対してコンパイル技法の提案をしている。そこでは、部分計算を用いて、メタインタプリタやメタオブジェクトの定義をアプリケーションプログラムに特化することで、解釈実行を除去したコードを生成する。具体的には、並行オブジェクトとして定義されたメタインタプリタやメタオブジェクトを逐次言語に変換し、逐次言語の部分計算を適用し、その結果から(非自己反映的な)並行オブジェクトの定義を生成する。ベンチマークプログラムによる性能評価では、提案した方法による実行は、非自己反映言語に対する速度低下は約3倍以下に過ぎず、解釈実行による処理系と比べると約5倍から数千倍の改善になり、本論文の手法の有効性が示されている。

審査要旨

 自己反映(リフレクティブ)言語は、言語処理系の内部構造を抽象化された形で提供することで、アプリケーション中から処理系の挙動を変更・拡張することを可能にしているが、自己反映言語の実行モデルは解釈実行に依存しているため、素朴に作られた処理系は、自己反映的でない言語(非自己反映言語)と比べて実行速度が非常に遅い。

 本論文では、自己反映並行オブジェクト指向言語ABCL/R3の自己反映アーキテクチャの設計とコンパイル技法の提案が行われている。従来の方法と異なり、部分計算を利用したコンパイルを行うことで、高い拡張性を持った自己反映アーキテクチャを提供しつつ、解釈実行のない効率的な実行を達成されている。具体的には、自己反映アーキテクチャの構成要素を、メタインタプリタ(3章)とメタオブジェクト(4章)に分類し、それぞれについて設計およびコンパイル技法の提案が行われている。

 メタインタプリタは、式の解釈実行部分を司るオブジェクトである。この設計に関しては、いくつかのアプリケーション例を挙げ、そこで有用となる最適化などの改造を検討し、それらが無理なく記述できるものが提案されている。さらに、委譲機構を提案することで、メタインタプリタの拡張部分の合成や適用範囲の制御が容易に行える方法が与えられている。

 メタオブジェクトはメソッドの選択や排他制御機構などを司るオブジェクトである。従来のメタオブジェクトは、状態遷移機械として設計されていたため、部分計算による最適化が困難であったが、本論文では、並行オブジェクト指向言語Schematicで提案された読み出し・書き込みメソッドの概念を用いることで、状態に関する操作を分離して記述することで解決されている。

 本論文ではまた、それぞれの構成要素に対してコンパイル技法の提案がなされている。そこでは、部分計算を用いて、メタインタプリタやメタオブジェクトの定義をアプリケーションプログラムに特化することで、解釈実行を除去したコードが生成される。具体的には、並行オブジェクトとして定義されたメタインタプリタやメタオブジェクトが逐次言語に変換され、逐次言語の部分計算が適用されて、その結果から(非自己反映的な)並行オブジェクトの定義が生成される。ベンチマークプログラムによる性能評価では、提案した方法による実行は、非自己反映言語に対する速度低下は約3倍以下に過ぎず、解釈実行による処理系と比べると約5倍から数千倍の改善になり、本論文の手法の有効性が示されている。

 なお、本論文は、米澤明憲氏、松岡聡氏、浅井健一氏との共同研究に基づいているが、論文提出者が主体となって分析及び検証を行なったもので、論文提出者の寄与が十分であると判断する。

 従って、博士(理学)を授与できると認める。

UTokyo Repositoryリンク http://hdl.handle.net/2261/54096