(1) KLIC の実行時システムの改良・拡張
研究代表者:近山 隆 教授
東京大学 工学系研究科 電子工学専攻
[目次]
- 研究体制
- 2年目の研究内容
- 想定されるソフトウェア成果
氏名 所属
研究代表者 近山 隆 東京大学工学系研究科電子工学専攻教授
研究協力者 松浦健一郎 東京大学工学系研究科電子工学専攻修士課程1年
研究協力者 遠藤 秀和 東京大学工学部電子工学科4年
前年度および今年度を通じて行なう研究の内容は, KLIC システム
をベースに, 諸機能に改良・拡張を加え, 並列論理型言語のためのプ
ログラミングシステムとして完成度の高いものとし, KLIC システム
の利用範囲を拡大することである. 今年度は以下の諸点を主たる内
容とする.
☆ 世代方式ガーベジコレクタの実現: 前年度に行なった設計を基に,
世代方式のGCを完成し, KLICの性能向上を目指す.
☆ トレース方式の改良: 前年度に行なったゴールオブジェクトの導
入によるKL1自身で記述したトレーサについて, ゴールオブジェ
クト機構の改良などによって, より実用性の高いものとする.
☆ 清書系の作成: KL1の項に対する, 読みやすい改行や段下げなど
を行なうプリティプリンタを設計, 作成する.
まず, KLIC のシステムの概要調査, 昨年度の開発内容の確認, 関
連する研究論文の調査, 学会参加などの方法により, 基本的な調査を
行なう. また, 随時関連研究の調査を行なう (海外を含む). つい
で新規参加メンバーの勉強のため KLIC システムの動作原理と内部構
造を, システムのコードを読み合わせることなどを通じて理解する.
この結果に基づき, 改良・拡張項目の詳細を決定し, 改良・拡張方式
の設計を行なう. この設計に基づいてプログラムを作成, システム
を構築する.
改良・拡張項目の一部については, 昨年度に開発途上の部分がある
ので, できる限りそれを利用しながら開発を行なう. ついで, 構築
したシステムが想定した通り動作する. これら一連の開発作業には,
当研究室に設置されている SparcStation 8システムを ethernet で
接続した実験装置などを用いる.
拡張機能の設計, 実装方式の設計にあたっては, KLIC の保守方針
を策定している KLIC タスクグループとの密接な連携を取り, 開発方
針の整合性が損なわれないように留意する. また, KLIC タスクグルー
プの協力を得て, 改良・拡張部分が KLIC の移植性を損なっていない
ことの確認を行なう予定である.
(1)作成されるソフトウェア名称
KLIC 第3版
(2)そのソフトウェアの機能/役割/特徴
機能:
KLIC 第3版は並列論理型言語 KL1 の並列処理系である.
- - KL1 から C へのコンパイラと、実行時システムを提供する。
- - 並列論理型 KL1 の主要機能を実現する.
- - 同じハードウェア上なら従来の Prolog システムの 2 倍以上の速度を、同
程度以下のコードサイズで実現する.
- - ステップ実行、スパイ機能、デッドロック検出機能などを備えたトレー
サを持っている。
- - C 言語、UNIX システムの標準的な機能のみを用いているので、多様な
UNIX システムにほとんど変更なく移植できる。
共有メモリ並列機や、PVM を備えたシステムで並列実行が可能である.
役割:
第五世代コンピュータプロジェクトの核言語として開発された
KL1 を, 並列および逐次の汎用計算機上での広範な利用を可能
にする.
特徴:
KL1言語を C 言語に翻訳する方式によって高い移植性と高性能
を同時に実現する.
- - KL1言語プログラムを最終的には機械語プログラムに翻訳してから
実行する方式をとることによって, インタプリタ方式などよりも
はるかに高い性能を実現する.
- - 機械語への翻訳にはC言語を経由する方式をとり, 低レベルの機械
依存の最適化を機種ごとのCコンパイラに任せることによって, 移
植性を損なわずに高性能を実現する.
- - 他言語プログラムとのリンクも容易である。
(3)ソフトウェアの構成/構造
システムは KL1 から C へのコンパイラと, コンパイル結果のコー
ドから呼ばれる実行時システムとからなる. 実行時システムは概略
以下のようなモジュールからなる. 本研究における改良・拡張の対
象部分を ○ で示す.
- ○ 実行管理
モジュール間に渡る呼出しや, 優先度に基づくゴールスケジュー
リングなどを行なう. 遅延タスク生成に基づく自動負荷分
散機構を付加する.
- - 割り込みの処理
メモリ不足, トレースなどの割出しや, 他プロセッサやタイ
マによる外部割込みを受けて, 必要なサブルーチンを呼び出
す.
- ○ メモリ管理
メモリの初期割り付けやゴミ集めなどを行なう. 世代型の
ガーベジコレクタを付加する.
- - ユニフィケーション, 組み込み述語, 組み込みデータ型
KL1 の基本的な組み込み述語や組み込みデータ型の操作を提
供する.
- ○ トレーサ
デバッグのためのトレース機能を提供する. KL1自身でトレー
サを記述できる枠組を付加する. また, 清書系を付加し,
トレースデータを見やすくする.
- - プロファイラ
性能チューニングのためのプロファイル機能を提供する.
- - 共有メモリ並列処理機構
共有メモリ並列計算機のための並列処理機能を提供する.
- - 分散メモリ並列処理機構
分散メモリ並列計算機のための並列処理機能を提供する.
本研究における改良・拡張対象は, この一部であるメッセー
ジ交換機構に対するものである.
(4)参考とされたICOTフリーソフトウェアとの関連
本研究は ICOT フリーソフトウェアとして配布している KLIC 処理系
第2版に対し, 改良・拡張を施すものである.
(5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど
記述には原則として C 言語を用い, トレーサの制御部分は KL1 自身
による記述を予定している. UNIX, C コンパイラ, X ウインドウな
どの広範に用いられている基本的なソフトウェアと KLIC 処理系以外
には, 特に他のソフトウェアを必要としない. このため, KLIC の高
いポータビリティを損なわないで機能拡張が可能である.
(6)ソフトウェアの予想サイズ(新規作成分の行数)
新規作成分は10,000行程度と見込まれる. この他に試験用・評価用
のソフトウェアを作成するが, これらは最終的に完成したソフトウェ
アには含まれない.
(7)ソフトウェアの利用形態
改良・拡張結果のソフトウェアシステムは, 従来の KLIC 処理系を置
き換えるもので, その利用範囲は非常に広い. より具体的には, 以
下のような利用形態が考えられる.
- - PIM 上で動作する ICOT フリーソフトウェアの移植
- - KL1 による並列プログラムの記述
- - C などで記述した逐次プログラムを, KL1 を結合させる糊として用
いて並列動作させるシステムの記述
従来の KLIC 処理系に比べ, 以下の諸点で利用者にとっての魅力が増
大する.
- - 強化されたデバッグ機能によって, より複雑な応用システムを短期
間に構築することが可能になる.
- - メモリ管理方式の改良によって, 従来の処理系による場合よりワー
キング・セット・サイズが小さく抑えられ, 大量のデータを扱うプ
ログラムの高速な実行が可能になる.
- - 自動負荷分散機構の利用により, 並列計算機上での負荷分散が簡単
な指示だけで行なえる.
(8)添付予定資料
ソフトウェア仕様書、ユーザマニュアル等
www-admin@icot.or.jp