(57)【特許請求の範囲】
【請求項１】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成し、当該手続管理情報の手続の状態を実行中とする工程と、
前記第１のプロセッサが、前記第２のプロセッサに前記手続管理情報のアドレスを通知して、前記第２のプロセッサに対して手続の呼び出しを行う工程と、
前記第２のプロセッサが、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行する工程と、
前記第２のプロセッサが、前記第１のプロセッサに前記手続管理情報のアドレスを通知して、前記第１のプロセッサに対して手続の終了を通知する工程と、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項２】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成し、当該手続管理情報の手続の状態を実行中とする工程と、
前記第１のプロセッサが、前記第２のプロセッサに前記手続管理情報のアドレスを通知して、前記第２のプロセッサに対して手続の呼び出しを行う工程と、
前記第２のプロセッサによる手続の実行が終了した後に、前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項３】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第２のプロセッサが、前記第１のプロセッサから前記メモリの、前記第１のプロセッサが管理するアドレス空間にある、当該第２のプロセッサが実行する手続を管理するための手続管理情報のアドレスを受け取り、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行する工程と、
前記第２のプロセッサが、前記第１のプロセッサに前記手続管理情報のアドレスを通知して、前記第１のプロセッサに対して手続の終了を通知する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項４】
前記第１のプロセッサは、前記メモリの、前記第２のプロセッサが管理するアドレス空間に存在するアドレスを指定して、前記第２のプロセッサに対して手続の呼び出しを行うことを特徴とする請求項１または２に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項５】
前記第２のプロセッサは、前記第１のプロセッサから前記メモリの、当該第２のプロセッサが管理するアドレス空間に存在するアドレスを受け取り、当該アドレスにある手続を起動して実行することを特徴とする請求項１に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項６】
前記第１のプロセッサは、当該第１のプロセッサが内蔵するレジスタに、前記手続管理情報のアドレスを書き込み、
前記第２のプロセッサは、前記プロセッサ間通信を介して前記レジスタから転送され、当該第２のプロセッサが内蔵するレジスタに書き込まれたアドレスを読み込むことを特徴とする請求項１に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【請求項７】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成させ、当該手続管理情報の手続の状態を実行中にさせる工程と、
前記第１のプロセッサに、前記第２のプロセッサに前記手続管理情報のアドレスを通知させ、前記第２のプロセッサに対して手続の呼び出しを行わせる工程と、
前記第２のプロセッサに、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行させる工程と、
前記第２のプロセッサに、前記第１のプロセッサに前記手続管理情報のアドレスを通知させ、前記第１のプロセッサに対して手続の終了を通知させる工程と、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【請求項８】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成させ、当該手続管理情報の手続の状態を実行中にさせる工程と、
前記第１のプロセッサに、前記第２のプロセッサに前記手続管理情報のアドレスを通知させ、前記第２のプロセッサに対して手続の呼び出しを行わせる工程と、
前記第２のプロセッサによる手続の実行が終了した後に、前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【請求項９】
互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第２のプロセッサに、前記第１のプロセッサから前記メモリの、前記第１のプロセッサが管理するアドレス空間にある、当該第２のプロセッサが実行する手続を管理するための手続管理情報のアドレスを受け取らせ、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行させる工程と、
前記第２のプロセッサに、前記第１のプロセッサに前記手続管理情報のアドレスを通知させ、前記第１のプロセッサに対して手続の終了を通知させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【請求項１０】
請求項７〜９のいずれか一つに記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体に関するものである。
【背景技術】
【０００２】
一般に、コンピュータシステムにおいて、複数のプロセッサを用いて、手続呼び出しにより並列処理を行う方法として、近距離での手続呼び出し法と、遠隔手続呼び出し法がある。図６および図７は、それぞれ近距離での手続呼び出し法および遠隔手続呼び出し法の概念を示す模式図である。図６に示すように、近距離での手続呼び出し法は、同一のマシン（コンピュータ）１内に設けられた第１のプロセッサ２と第２のプロセッサ３が同一の共有メモリ４を共有している構成において、第１のプロセッサ２と第２のプロセッサ３の間で手続呼び出しを行う方法である。
【０００３】
この近距離での手続呼び出し法には、プロセッサ２，３間の通信が高速に行えるという利点がある。しかし、複数のプロセッサ２，３が同一のメモリ領域を利用するため、プロセッサの数が増えると、メモリアクセスの競合によりメモリアクセスレイテンシが増大し、コンピュータの処理性能が向上しにくくなるという問題点がある。また、キャッシュのコヒーレンス制御を行う構成が必要であるが、プロセッサの数が増えると、このコヒーレンス制御機構が複雑になるという問題点もある。
【０００４】
一方、図７に示すように、遠隔手続呼び出し法は、独立したマシン５，６間でイーサネット（登録商標）等のネットワーク７を介して手続呼び出しを行う方法である。この場合、クライアントマシン５内のプロセッサ８は、同マシン５内のメモリ９を使用する。また、サーバマシン６内のプロセッサ１０は、同マシン６内のメモリ１１を使用する。従って、遠隔手続呼び出し法では、近距離での手続呼び出し法のような、メモリアクセスの競合によるメモリアクセスレイテンシの増大や、キャッシュのコヒーレンス制御機構の複雑化などの問題が起こらない。
【０００５】
遠隔手続呼び出し法の一つに、非同期遠隔手続呼び出し法がある（例えば、特許文献１参照。）。この非同期遠隔手続呼び出し法では、手続を要求する側のプロセッサ（以下、手続要求側プロセッサとする）が異なるプロセッサに対して同時に複数の遠隔手続を実行させることができる。従って、手続要求側プロセッサは、手続を実行する側のプロセッサ（以下、手続実行側プロセッサとする）から、手続が終了したという通知を受け取ったときには、その通知された手続が、それよりも前に要求した複数の手続のうちのどの手続であるかを識別する必要がある。
【０００６】
図８は、非同期遠隔手続呼び出し法の概念を示す模式図である。図８に示すように、非同期遠隔手続呼び出し法では、手続要求側プロセッサ、すなわちクライアントマシン５内のプロセッサ８は、手続呼び出し毎に、ＩＤ等の識別子をつけた手続管理情報１９を作成して、手続実行側プロセッサ、すなわちサーバマシン６内のプロセッサ１０に対して要求した複数の手続を管理している。この手続管理情報１９は、クライアントマシン５内のメモリ９に蓄積される。
【０００７】
手続要求側プロセッサが手続実行側プロセッサに対して非同期遠隔手続呼び出しを行う際には、手続要求側プロセッサは、手続実行側プロセッサに、該当する手続管理情報１９のＩＤを通知する。手続実行側プロセッサは、要求された手続の実行が完了すると、手続
要求側プロセッサに、起動時に渡されたＩＤを返す。手続要求側プロセッサは、手続実行側プロセッサからＩＤを返されると、終了処理を行い、終了の確認を行う。
【０００８】
【特許文献１】特開平５−２９０００３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、遠隔手続呼び出し法において、クライアントマシン５内のプロセッサ８がサーバマシン６内のプロセッサ１０に対して手続呼び出しを行うためには、クライアントマシン５内のプロセッサ８は、サーバマシン６内のメモリ１１の該当する手続のアドレスを指定する必要がある。しかし、クライアントマシン５とサーバマシン６が独立しているため、クライアントマシン５内のプロセッサ８がサーバマシン６内のメモリ１１の該当するアドレスを知ることはできない。
【００１０】
そこで、従来の遠隔手続呼び出し法では、メモリのようなハードウェアに関する記述を抽象化し、呼び出す手続をＩＤ番号等の識別子で指定するようにしている。非同期遠隔手続呼び出し法でも同様である。この場合、図９に模式的に示すサーバマシン６内のメモリ１１のアドレス空間のように、サーバプログラム用データ領域１２に、サーバプログラム用プログラム領域１３に展開されている手続１４，１５，１６，１７のアドレスとＩＤ番号等の識別子との対応関係を定めるテーブル１８を用意する必要がある。その分、サーバマシン６内のメモリ１１の使用量が増えるという問題点がある。
【００１１】
また、非同期型も含めて遠隔手続呼び出し法では、ネットワーク７を利用してマシン５，６間の通信を行うため、プロセッサ８，１０間の通信速度が近距離での手続呼び出し法に比べて著しく遅い。さらに、サーバマシン６側では、ＩＤ番号等の識別子に対応するアドレスをテーブル１８から検索する必要があるため、手続起動処理に時間がかかる。そのため、図１０に示すように、クライアントマシン５が手続呼び出しを発してから、サーバマシン６で該当する手続が実行されるまでの起動オーバーヘッドが長いという問題点がある。
【００１２】
さらに、非同期遠隔手続呼び出し法において、手続要求側プロセッサが終了処理を行う場合には、手続実行側プロセッサから返されたＩＤを有する手続管理情報１９の実行状態を「実行中」から「終了」に変更する必要がある。そのため、クライアントマシン５内のメモリ９のデータ領域に、手続管理情報１９のアドレスとＩＤとの対応関係を定めるテーブルを用意する必要がある。その分、クライアントマシン５内のメモリ９の使用量が増えるという問題点がある。さらにまた、手続実行側プロセッサから返されたＩＤに対応する手続管理情報１９のアドレスをテーブルから検索する必要があるため、終了処理に時間がかかるという問題点がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、メモリを共有した複数のプロセッサ間の通信に非同期遠隔手続呼び出し法を適用し、かつクライアントマシンおよびサーバマシン内のメモリの使用量の削減と、手続起動処理および終了処理の高速化を図ることができる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法を提供することを目的とする。また、本発明は、そのような非同期遠隔手続き呼び出し方法をコンピュータに実行させるための非同期遠隔手続き呼び出しプログラム、およびそのプログラムを記録した、コンピュータが読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサが同一のメモリを共有し、かつそのメモリに各プロセッサがそれぞれ独立したアドレス空間を有し
、さらに各プロセッサが互いにバスを利用したプロセッサ間通信を介して通信可能に構成された共有メモリ型マルチプロセッサに適用可能な非同期遠隔手続き呼び出し方法である。その非同期遠隔手続き呼び出し方法は、以下の特徴を有する。
【００１５】
まず、第１のプロセッサが、第２のプロセッサが管理するアドレス空間に存在する手続のアドレスと、第１のプロセッサが管理するアドレス空間に存在する手続管理情報のアドレスを指定して、第２のプロセッサに対して非同期遠隔手続の呼び出しを行う。その手続の呼び出しに応答して、第２のプロセッサは、第１のプロセッサにより指定されたアドレス（手続のアドレス）にある手続を起動して実行する。手続の実行が終了したら、第２のプロセッサは、第１のプロセッサに、起動時に渡された手続管理情報のアドレスを返し、手続の終了を通知する。その終了通知に応答して、第１のプロセッサは、該当する手続管理情報の実行状態を「実行中」から「終了」に変更する。
【発明の効果】
【００１６】
本発明によれば、非同期遠隔手続呼び出しにより呼び出された側のプロセッサが、呼び出した側のプロセッサにより指定されたアドレスから直接、手続を起動できる。従って、従来の遠隔手続呼び出し法の手続起動処理で必要であった、識別子に対応するアドレスを検索する処理を行わずに済むので、手続の起動処理に要する時間が短縮し、高速に手続を起動することができる。また、手続管理情報をＩＤを用いずにアドレスで指定することにより、従来の非同期遠隔手続呼び出し法の終了処理で必要であった、ＩＤに対応するアドレスを検索する処理を行わずに済むので、終了処理を高速で行うことができる。さらに、手続のアドレスと識別子との対応関係を定めるテーブル、および手続管理情報のアドレスとＩＤとの対応関係を定めるテーブルが不要であるので、メモリの使用量を削減することができる。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明にかかる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、本発明においては、マルチプロセッサとは、１個のＩＣチップに複数のプロセッサが設けられている場合と、複数のＩＣチップのそれぞれに１個または２個以上のプロセッサが設けられている場合の両方を含むものである。
【００１８】
図１は、本発明にかかる共有メモリ型マルチプロセッサにおける非同期遠隔手続呼び出し法の概念を示す模式図である。図１に示すように、同一のマシン（コンピュータ）２１内に設けられた第１のプロセッサ２２と第２のプロセッサ２３は、同一の共有メモリ２４を物理的に共有している。そして、共有メモリ２４の、第１のプロセッサ２２が管理するアドレス空間２５と、第２のプロセッサ２３が管理するアドレス空間２６は、独立している。
【００１９】
この構成では、第１のプロセッサ２２と第２のプロセッサ２３の間で、非同期遠隔手続呼び出し法を適用して手続呼び出しを行うことができる。その際、従来の非同期遠隔手続呼び出し法のようにメモリのアドレスを識別子で抽象化する必要はない。そのため、第１のプロセッサ２２は、第２のプロセッサ２３が管理するアドレス空間２６のアドレスを指定して、プロセッサ間通信２７を介して非同期遠隔手続呼び出しを行う。プロセッサ間通信２７としてバスを利用することにより、プロセッサ間の通信速度は、近距離での手続呼び出しと同様に高速化される。
【００２０】
また、手続呼び出しにより呼び出された第２のプロセッサ２３が、手続起動処理において識別子に対応するアドレスを検索する必要がないので、手続起動処理に要する時間が短
縮される。これら通信速度の高速化と手続起動処理時間の短縮化によって、第１のプロセッサ２２が第２のプロセッサ２３に手続呼び出しを通知してから、第２のプロセッサ２３が該当する手続の実行を開始するまでの起動オーバーヘッドが短縮されるので、高速に遠隔手続を起動できる。
【００２１】
また、識別子とアドレスの対応関係を定めるテーブルが不要になるので、共有メモリ２４の使用量を減らすことができる。さらに、アドレス空間２５，２６が独立していることにより、キャッシュのコヒーレンスの制御やメモリアクセスの競合の制御が簡単になるので、同一メモリを共有するプロセッサの数が３個以上に増えても、コンピュータの処理性能が向上する。
【００２２】
また、第１のプロセッサ２２は、第１のプロセッサ２２が管理するアドレス空間２５に手続管理情報を作成し、その手続管理情報のアドレスを第２のプロセッサ２３に渡す。第２のプロセッサ２３は、要求された手続の実行が完了すると、第１のプロセッサ２２に、起動時に渡されたアドレスを返す。第１のプロセッサ２２は、第２のプロセッサ２３から返されたアドレスにある手続管理情報の実行状態を「実行中」から「終了」に変更して、終了処理を行う。従って、第１のプロセッサ２２が、手続管理情報のＩＤに対応するアドレスを検索する必要がないので、終了処理に要する時間が短縮される。また、手続管理情報のＩＤとアドレスの対応関係を定めるテーブルが不要になるので、共有メモリ２４の使用量を減らすことができる。
【実施例１】
【００２３】
図２は、実施例１のハードウェア構成の要部を示すブロック図である。図２に示すように、第１のプロセッサ３１と第２のプロセッサ３２は、バス３３を介して共有メモリ３４に接続されており、この共有メモリ３４を物理的に共有している。第１のプロセッサ３１には、呼び出す手続のアドレスおよびその手続を管理する手続管理情報のアドレスが書き込まれる通信用レジスタ３５が設けられている。第２のプロセッサ３２には、呼び出される手続のアドレスおよびその手続を管理する手続管理情報のアドレスが書き込まれる通信用レジスタ３６が設けられている。
【００２４】
第１のプロセッサ３１の通信用レジスタ３５と第２のプロセッサ３２の通信用レジスタ３６は、バスを利用したデータ通信用プロセッサ間通信３７に接続されている。このデータ通信用プロセッサ間通信３７には、複数のキュー状のデータバッファ３８が設けられており、第１のプロセッサ３１の通信用レジスタ３５と第２のプロセッサ３２の通信用レジスタ３６の間で複数データの通信が行えるようになっている。また、第１のプロセッサ３１と第２のプロセッサ３２は、バスを利用した起動通知用プロセッサ間通信３９に接続されている。
【００２５】
図３は、ソフトウェアの構成を説明するための模式図である。図３に示すように、手続要求側プロセッサ、すなわち上記例の第１のプロセッサ３１には、クライアントプログラム４１と非同期遠隔手続呼び出し用のライブラリ（遠隔手続呼び出しライブラリ４２）が載っている。一方、手続実行側プロセッサである第２のプロセッサ３２には、サーバプログラム４３と非同期遠隔手続呼び出し用のライブラリ（遠隔手続呼び出しライブラリ４４）が載っている。第１のプロセッサ３１において、クライアントプログラム４１が遠隔手続呼び出しライブラリ４２に対して非同期遠隔手続呼び出しを要求すると、第２のプロセッサ３２で、ライブラリにより要求された手続が実行される。
【００２６】
図４は、実施例１の手続呼び出し方法の手順を示すフローチャートである。図４に示すように、まず、第１のプロセッサ３１では、クライアントプログラム４１が遠隔手続呼び出しライブラリ４２に対して非同期遠隔手続呼び出しを要求する（ステップＳ１）。それ
によって、第１のプロセッサ３１では、遠隔手続呼び出しライブラリ４２が共有メモリ３４の、第１のプロセッサ３１が管理するアドレス空間に手続管理情報を生成し、その管理情報の手続の実行状態を「実行中」に設定する（ステップＳ２）。次いで、遠隔手続呼び出しライブラリ４２は、要求された手続のアドレスを第１のプロセッサ３１の通信用レジスタ３５に書き込む（ステップＳ３）。続いて、第１のプロセッサ３１では、遠隔手続呼び出しライブラリ４２が、手続管理情報のアドレスを第１のプロセッサ３１の通信用レジスタ３５に書き込む（ステップＳ４）。
【００２７】
第１のプロセッサ３１の通信用レジスタ３５に書き込まれた内容は、データ通信用プロセッサ間通信３７に設けられたデータバッファ３８に順次格納される。データバッファ３８に最初に格納された手続のアドレスは、第２のプロセッサ３２の通信用レジスタ３６に転送され、書き込まれる。そして、第１のプロセッサ３１では、遠隔手続呼び出しライブラリ４２が第２のプロセッサ３２に対して手続の呼び出しを通知する（ステップＳ５）。
【００２８】
第２のプロセッサ３２は、第１のプロセッサ３１から手続の呼び出し通知を受け取ると、実行中の処理を中断する（ステップＳ６）。そして、第２のプロセッサ３２の遠隔手続呼び出しライブラリ４４は、第２のプロセッサ３２の通信用レジスタ３６から手続のアドレスを読み込む（ステップＳ７）。それによって、データバッファ３８に格納された手続管理情報のアドレスが、第２のプロセッサ３２の通信用レジスタ３６に転送され、書き込まれるので、第２のプロセッサ３２の遠隔手続呼び出しライブラリ４４は、第２のプロセッサ３２の通信用レジスタ３６から手続管理情報のアドレスを読み込む（ステップＳ８）。そして、第２のプロセッサ３２の遠隔手続呼び出しライブラリ４４が手続の起動処理を行い（ステップＳ９）、第２のプロセッサ３２のサーバプログラム４３によって手続が実行される（ステップＳ１０）。
【００２９】
手続の実行が終了すると、第２のプロセッサ３２の遠隔手続呼び出しライブラリ４４は、手続を起動する際に第１のプロセッサ３１から渡された手続管理情報のアドレスを第２のプロセッサ３２の通信用レジスタ３６に書き込む（ステップＳ１１）。第２のプロセッサ３２の通信用レジスタ３６に書き込まれたアドレスは、データ通信用プロセッサ間通信３７を介して第１のプロセッサ３１の通信用レジスタ３５に転送され、書き込まれる。そして、第２のプロセッサ３２では、遠隔手続呼び出しライブラリ４４が第１のプロセッサ３１に対して手続の終了を通知する（ステップＳ１２）。
【００３０】
第１のプロセッサ３１の遠隔手続呼び出しライブラリ４２は、第２のプロセッサ３２から手続の終了通知を受け取ると、第１のプロセッサ３１の通信用レジスタ３５から手続管理情報のアドレスを読み込む（ステップＳ１３）。そして、第１のプロセッサ３１の遠隔手続呼び出しライブラリ４２は、通信用レジスタ３５から読み込んだアドレスにある手続管理情報の手続の実行状態を「実行中」から「終了」に変更する（ステップＳ１４）。なお、第１のプロセッサ３１のクライアントプログラム４１が手続の終了確認を行うと、第１のプロセッサ３１の遠隔手続呼び出しライブラリ４２は、対応する手続管理情報の実行状態をクライアントプログラム４１に返す。
【実施例２】
【００３１】
実施例２のハードウェア構成とソフトウェアの構成は、実施例１と同じであるので、重複する説明を省略する。図５は、実施例２の手続呼び出し方法の手順を示すフローチャートである。図５に示すように、第２のプロセッサ３２は、常時、他のプロセッサからの手続の起動通知を待機している（ステップＳ２１）。その状態で、実施例１と同様に、第１のプロセッサ３１が手続のアドレスと手続管理情報のアドレスを指定して、第２のプロセッサ３２に対して手続の呼び出しを通知すると（ステップＳ１〜Ｓ５）、第２のプロセッサ３２は、第１のプロセッサ３１から手続の呼び出し通知を受け取り、ステップＳ２１の手続の起動通知待ち状態を解除する。
【００３２】
そして、第２のプロセッサ３２は、実施例１と同様に、第２のプロセッサ３２の通信用レジスタ３６から手続のアドレスと手続管理情報のアドレスを読み込み（ステップＳ７、Ｓ８）、手続の起動処理を行い、手続を実行する（ステップＳ９、Ｓ１０）。手続の実行が終了すると、第２のプロセッサ３２の遠隔手続呼び出しライブラリ４４は、手続を起動する際に第１のプロセッサ３１から渡された手続管理情報のアドレスを第２のプロセッサ３２の通信用レジスタ３６に書き込み（ステップＳ１１）、手続の終了を通知する（ステップＳ１２）。第１のプロセッサ３１は、第２のプロセッサ３２から手続の終了通知を受け取り、第１のプロセッサ３１の通信用レジスタ３５から手続管理情報のアドレスを読み込み（ステップＳ１３）、そのアドレスにある手続管理情報の手続の実行状態を「実行中」から「終了」に変更する（ステップＳ１４）。
【００３３】
なお、上述した実施例１または２において、データ通信用プロセッサ間通信３７にデータバッファ３８が設けられていなくてもよい。また、データ通信用プロセッサ間通信３７を設ける代わりに、第１のプロセッサ３１と第２のプロセッサ３２が共有する共有メモリ３４上に、プロセッサ間のデータ通信に使用されるデータ通信用領域が設けられており、第１のプロセッサ３１および第２のプロセッサ３２が、このデータ通信用領域を利用して手続のアドレスや手続管理情報のアドレスの授受を行うようにしてもよい。
【００３４】
（付記１）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成し、当該手続管理情報の手続の状態を実行中とする工程と、
前記第１のプロセッサが、前記第２のプロセッサに前記手続管理情報のアドレスを通知して、前記第２のプロセッサに対して手続の呼び出しを行う工程と、
前記第２のプロセッサが、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行する工程と、
前記第２のプロセッサが、前記第１のプロセッサに前記手続管理情報のアドレスを通知して、前記第１のプロセッサに対して手続の終了を通知する工程と、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００３５】
（付記２）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成し、当該手続管理情報の手続の状態を実行中とする工程と、
前記第１のプロセッサが、前記第２のプロセッサに前記手続管理情報のアドレスを通知して、前記第２のプロセッサに対して手続の呼び出しを行う工程と、
前記第２のプロセッサによる手続の実行が終了した後に、前記第１のプロセッサが、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００３６】
（付記３）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサが第２のプロセッサに対して非同期遠隔手続呼び出しを行う共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法において、
前記第２のプロセッサが、前記第１のプロセッサから前記メモリの、前記第１のプロセッサが管理するアドレス空間にある、当該第２のプロセッサが実行する手続を管理するための手続管理情報のアドレスを受け取り、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行する工程と、
前記第２のプロセッサが、前記第１のプロセッサに前記手続管理情報のアドレスを通知して、前記第１のプロセッサに対して手続の終了を通知する工程と、
を含むことを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００３７】
（付記４）前記第１のプロセッサは、前記メモリの、前記第２のプロセッサが管理するアドレス空間に存在するアドレスを指定して、前記第２のプロセッサに対して手続の呼び出しを行うことを特徴とする付記１または２に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００３８】
（付記５）前記第２のプロセッサは、前記第１のプロセッサから前記メモリの、当該第２のプロセッサが管理するアドレス空間に存在するアドレスを受け取り、当該アドレスにある手続を起動して実行することを特徴とする付記１に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００３９】
（付記６）前記第２のプロセッサは、前記第１のプロセッサから手続の呼び出し通知を受け取ると、実行中の処理を中断して、前記第１のプロセッサにより呼び出された手続を実行するための処理を開始することを特徴とする付記１、３または５のいずれか一つに記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００４０】
（付記７）前記第２のプロセッサは、手続の呼び出し通知が送られてくるのを待機し、前記第１のプロセッサから手続の呼び出し通知を受け取ると、前記第１のプロセッサにより呼び出された手続を実行するための処理を開始することを特徴とする付記１、３または５のいずれか一つに記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００４１】
（付記８）前記第１のプロセッサは、当該第１のプロセッサが内蔵するレジスタに、前記手続管理情報のアドレスを書き込み、
前記第２のプロセッサは、前記プロセッサ間通信を介して前記レジスタから転送され、当該第２のプロセッサが内蔵するレジスタに書き込まれたアドレスを読み込むことを特徴とする付記１に記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法。
【００４２】
（付記９）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成させ、当該手続管理情報の手続の状態を実行中にさせる工程と、
前記第１のプロセッサに、前記第２のプロセッサに前記手続管理情報のアドレスを通知させ、前記第２のプロセッサに対して手続の呼び出しを行わせる工程と、
前記第２のプロセッサに、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行させる工程と、
前記第２のプロセッサに、前記第１のプロセッサに前記手続管理情報のアドレスを通知させ、前記第１のプロセッサに対して手続の終了を通知させる工程と、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管
理情報の手続の状態を終了に変更させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【００４３】
（付記１０）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間に、前記第２のプロセッサに実行させる手続を管理するための手続管理情報を作成させ、当該手続管理情報の手続の状態を実行中にさせる工程と、
前記第１のプロセッサに、前記第２のプロセッサに前記手続管理情報のアドレスを通知させ、前記第２のプロセッサに対して手続の呼び出しを行わせる工程と、
前記第２のプロセッサによる手続の実行が終了した後に、前記第１のプロセッサに、前記メモリの、当該第１のプロセッサが管理するアドレス空間にある、前記第２のプロセッサから返された前記手続管理情報のアドレスにある手続管理情報の手続の状態を終了に変更させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【００４４】
（付記１１）互いにバスを利用したプロセッサ間通信を介して通信可能な複数のプロセッサが同一のメモリを共有し、かつ当該メモリに前記プロセッサがそれぞれ独立したアドレス空間を有する共有メモリ型マルチプロセッサの第１のプロセッサに第２のプロセッサに対して非同期遠隔手続呼び出しを行わせる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムにおいて、
前記第２のプロセッサに、前記第１のプロセッサから前記メモリの、前記第１のプロセッサが管理するアドレス空間にある、当該第２のプロセッサが実行する手続を管理するための手続管理情報のアドレスを受け取らせ、前記メモリの、当該第２のプロセッサが管理するアドレス空間にある、前記第１のプロセッサの手続呼び出しにより指定された手続を起動して実行させる工程と、
前記第２のプロセッサに、前記第１のプロセッサに前記手続管理情報のアドレスを通知させ、前記第１のプロセッサに対して手続の終了を通知させる工程と、
をコンピュータに実行させることを特徴とする共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラム。
【００４５】
（付記１２）付記９〜１１のいずれか一つに記載の共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出しプログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【産業上の利用可能性】
【００４６】
以上のように、本発明にかかる共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体は、複数のプロセッサが同一のメモリを物理的に共有する構成のマルチプロセッサに有用であり、特に、マルチプロセッサにより並列処理を行うコンピュータシステムに適している。
【図面の簡単な説明】
【００４７】
【図１】図１は、本発明にかかる共有メモリ型マルチプロセッサにおける非同期遠隔手続呼び出し法の概念を示す模式図である。
【図２】図２は、実施例１のハードウェア構成の要部を示すブロック図である。
【図３】図３は、ソフトウェアの構成を説明するための模式図である。
【図４】図４は、実施例１の非同期遠隔手続呼び出し方法の手順を示すフローチャートである。
【図５】図５は、実施例２の非同期遠隔手続呼び出し方法の手順を示すフローチャートである。
【図６】図６は、従来の近距離での手続呼び出し法の概念を示す模式図である。
【図７】図７は、従来の遠隔手続呼び出し法の概念を示す模式図である。
【図８】図８は、従来の非同期遠隔手続呼び出し法の概念を示す模式図である。
【図９】図９は、従来の遠隔手続呼び出し法におけるサーバマシン内のメモリのアドレス空間を示す模式図である。
【図１０】図１０は、従来の遠隔手続呼び出し法における手続起動時のタイミングを示す模式図である。
【符号の説明】
【００４８】
２２，２３，３１，３２  プロセッサ
２４，３４  共有メモリ
２５，２６  アドレス空間
２７，３７，３９  プロセッサ間通信
３５，３６  レジスタ
【図１】
0004734348.tif 000002
【図２】
0004734348.tif 000003
【図３】
0004734348.tif 000004
【図４】
0004734348.tif 000005
【図５】
0004734348.tif 000006
【図６】
0004734348.tif 000007
【図７】
0004734348.tif 000008
【図８】
0004734348.tif 000009
【図９】
0004734348.tif 000010
【図１０】
0004734348.tif 000011