@article{oai:ipsj.ixsq.nii.ac.jp:00016893, author = {大山恵弘 and 田浦, 健次朗 and 米澤, 明憲 and Yoshihiro, Oyama and Kenjiro, Taura and Akinori, Yonezawa}, issue = {SIG02(PRO9)}, journal = {情報処理学会論文誌プログラミング(PRO)}, month = {Feb}, note = {並行拡張されたオブジェクト指向言語に,排他的なメソッドの複数の並行な呼び出しを融合する機構を導入する方法を示す.通常,排他的なメソッドの複数の並行な呼び出しは逐次化される.我々は逐次化された結果として実行待ち状態にある複数の排他的なメソッドの呼び出しを融合する.具体的には,それらの呼び出しを,たとえば単一の呼び出しなどのより高速な処理に動的に切り替える.たとえば,カウンタオブジェクトに対する,1を加算するメソッドの呼び出しと,2を加算するメソッドの呼び出しを融合して,3を加算するメソッドのみを呼び出す.どんな呼び出しの組をどんな処理に融合するかの仕様(融合規則)はプログラマが記述する.本機構は,排他的なメソッドの呼び出しが長時間実行待ち状態になるオブジェクト(同期ボトルネック)での効率化に特に役立つ.我々は本機構を持つ言語の処理系を実装し,共有メモリ並列計算機Sun Enterprise 10000を用いて実験を行った.その実験では,本機構が同期ボトルネックを持つプログラムの性能を大きく向上させた., This paper describes a mechanism for ``fusing'' concurrent invocations of exclusive methods. The target of our work is object-oriented languages with concurrent extensions. In such languages, invocations of exclusive methods are serialized: only one invocation is executed at one time and the others must wait for their turn. The proposed mechanism fuses multiple waiting invocations to a cheaper operation, such as a single invocation. For example, when an add-1 method and an add-2 method are waiting on a counter object, we replace these methods with an add-3 method. Programmers describe fusion rules, which specify method invocations that can be fused and an operation that is used to substitute for the invocations. The mechanism works effectively in the execution of synchronization bottlenecks, which are objects on which exclusive methods wait a long time for their turn. We implemented a language that has the mechanism and tested the usefulness of the mechanism through experiments on a symmetric multiprocessor, the Sun Enterprise 10000. We confirmed that the mechanism made programs with synchronization bottlenecks significantly faster.}, pages = {13--25}, title = {排他的なメソッドの並行な呼び出しを融合する機構を持つ言語}, volume = {42}, year = {2001} }