平成10年度 委託研究ソフトウェアの提案 |
研究代表者: | 近山 隆 教授 |
東京大学 工学系研究科 電子情報工学専攻 |
| 氏名 | 所属 |
研究代表者 | 近山 隆 | 東京大学工学系研究科 電子情報工学専攻 |
研究協力者 | 吉川隆英 | 東京大学工学系研究科 情報工学専攻 |
KLIC第3版に世代管理を行なうガーベジコレクション (GC) を導入する。より具体的には以下の通りである。
さまざまなデータ構造を割付けるヒープ領域を、比較的長時間保持されているデータを格納する領域 (旧世代領域) と、最近割付けたデータを格納する領域 (新世代領域) に分割し、新世代領域に対するGCをより頻繁に行ない、旧世代領域に対するGCの頻度は減ずる。また、当初新世代領域に割付けられたデータ構造についても、時間の経過に伴い、徐々に旧世代領域に移動する。
旧世代領域に対するGCを行なわずに新世代領域のGCを行なうためには、旧世代領域から新世代領域を指し示すようなポインタを知る必要がある。このようなポインタを発見するための機構をKLICシステムに付加する。
新世代領域の大きさをどの程度にするのが最適であるかは、対象とする計算機のハードウェア構成、ことにキャッシュメモリの大きさに依存する。そこで、この大きさの調節を行なえるような実行時パラメタを付加する。
現在のKLIC処理系は、比較的短期間だけ必要とするようなさまざまな制御用のデータ構造なども、プログラム中から明示的に利用する通常のデータと同じヒープ領域に割付ける設計となっている。これは処理系の構造を単純にする効果をあげている反面、GC機構にかける負担が大きい。
世代管理を行なうGCを導入することによって、まずGCの実行自体のオーバヘッドが減る。これは比較的ガーベジになる確率が高い新世代領域のGC頻度を高くすることによって、回収メモリ量当りにした際のGCの手間を軽減できるからである。
また、短期間にガーベジになる新世代領域のGCを頻度高く行なえば、ヒープ中のガーベジの平均密度を低く抑え、逆に実際に使用する構造体を高い密度でメモリ中に配置することができる。このことはGC以外の通常の実行時におけるワーキングセットを小さくする効果を生じ、キャッシュミスヒットやページフォールトの頻度を低減することができる。
以上の結果、KLICのユーザにとっては同一のプログラムがより高速に実行されることになる。
世代別の領域サイズを指定する機能が付加される。これを用いて、ユーザは実行プラットフォームに適合した領域サイズを指定することによって、最適な効率を得ることができる。
www-admin@icot.or.jp