Next: Up: Previous:

まとめと将来への方向性

 

ロックフリーな読みだし専用メソッドと複数の書き込みメソッドの オーバーラップ実行を許す並列オブジェクトモデルを提案した. これらのタイプの並列性なしでは, 起こりうるデッドロックを避けるために, プログラマはしばしば不自然なコードを書かなくてはならない. そのような場合は並列オブジェクトから構成される(もしかすると サイクリックな)データ構造上でのアルゴリズムで典型的に発生する.

ロックフリーな読みだし専用メソッドは並列オブジェクトの表現の単純な 技法によって実装される. Herlihy の方法論に影響され, インスタンス 変数のレコードを指すレコード(self record)のによってオブジェクトを 表現する. インスタンス変数のレコードそれ自身は mutable でない. 読みだし専用メソッドは一つのロード命令によってインスタンス変数の レコードへのポインタを読むことによって, 受信オブジェクトの一貫性のあるコピーを得ることができる. これまでのほとんどの並列オブジェクト指向言語とは違い, 読みだしオンリーメソッドはいかなる書き込み/ロック操作も必要としない. これはキャッシュコヒーレントな共有メモリハードウェアに おいて特に性能を向上させる.

オブジェクトのインスタンス変数の更新はそのオブジェクトの 新しい状態を表現する新しいレコードを作成し, それを一つの ストア命令で self record のレコードフィールドに置き換える. 書き込みメソッドはメソッドの先頭で受信オブジェクトをロックし, メソッドが更新を終えるとすぐに受信オブジェクトを解放する. ABCL/f では, 更新は全ての更新されるインスタンス変数の新しい値更新が 行なわれた後に評価される式を明示する become 式によって表現される. ABCL/f の文法は書き込みメソッドがメソッドのボディ内で 高々一つのbecomeしか行なわないことを保証する.

我々は現在我々の並列オブジェクトモデルの様々な性能改善について 研究中である. まず, 大きいオブジェクトに対するbecome の オーバヘッドは重大かもしれない. それはインスタンス変数を 小さい chunk の木に分割することによって軽減可能である. 二番目に, オブジェクトの排他制御はそのオブジェクトの使用を 調べることによってカスタマイズ可能である. 例えば, もしプログラムがある特定のオブジェクトに対して 複数の並列な書き込みを行なわないならば (すなわち書き込みが他の同期制約によって serialize されている ならば), 提案された become の実装の下では, 書き込みメソッドはそのオブジェクトに対しいかなるロックも必要としない.



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:24:01 JST 1997