(57)【要約】【課題】複数のプロセスを高速に効率良く実行できる分散処理システム、分散処理方法及びプログラムを提供すること。【解決手段】第１の処理部１０２は、第１のメモリ部１０１の所定の領域へデータを格納し、または第１のメモリ部１０１の所定の領域に格納されているデータを読み出し、一方のプロセッシング・エレメント１００の第１の通信部１０３、１０４は、他方のプロセッシング・エレメント２００に対して第１のメモリ部１０１から読み出したデータを通信経路を用い送信し、または他方のプロセッシング・エレメント２００から前記通信経路を用い受信したデータを第１のメモリ部１０１へ格納し、いずれか一つのプロセッシング・エレメントは、２つ以上のデータの通信経路を有し、通信経路に応じてメモリ部の異なる領域を用いてデータの通信を行うことを特徴とする。【選択図】        図３
2008059282.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントが相互に接続された分散処理システムであって、
前記処理部は、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出し、
一方の前記プロセッシング・エレメントの前記通信部は、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納し、
少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記通信経路を有し、
前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの通信を行うことを特徴とする分散処理システム。
【請求項２】
前記通信部は、送信部と受信部との少なくともいずれか一方を有し、
一方の前記プロセッシング・エレメントの前記受信部は、他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域へ直接格納し、
一方の前記プロセッシング・エレメントの前記送信部は、一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域に格納されている前記データを、他方の前記プロセッシング・エレメントへ前記通信経路を用い送信することを特徴とする請求項１に記載の分散処理システム。
【請求項３】
前記通信経路に応じて前記データを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、
前記通信経路ごとに前記領域は異なることを特徴とする請求項１または２に記載の分散処理システム。
【請求項４】
少なくともいずれか一つの前記プロセッシング・エレメントは前記通信経路ごとに異なる前記領域を、少なくとも２つ有していることを特徴とする請求項３に記載の分散処理システム。
【請求項５】
２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられていることを特徴とする請求項１〜４のいずれか一項に記載の分散処理システム。
【請求項６】
２つ以上の前記プロセッシング・エレメントは、それぞれ同一の基板に設けられていることを特徴とする請求項１〜４のいずれか一項に記載の分散処理システム。
【請求項７】
２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられているものと、それぞれ同一の基板に設けられているものとを含むことを特徴とする請求項１〜４のいずれか一項に記載の分散処理システム。
【請求項８】
前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、
他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することを特徴とする請求項１〜７のいずれか一項に記載の分散処理システム。
【請求項９】
前記送信部は、前記メモリ部に格納されている前記データを送信してから、前記データの受信完了を受信するまでの間、及び／又は、データ受信完了を受信後、データ送信開始応答を受信するまでの間は省電力状態となること、及び／又は前記受信部は、前記前記データを受信してから、次のデータ送信開始要求信号を受信するまでの間は省電力状態となることを特徴とする請求項１〜８のいずれか一項に記載の分散処理システム。
【請求項１０】
２つ以上の前記プロセッシング・エレメント間の前記データと制御情報との送信及び受信においてＭＰＩを用いることを特徴とする請求項１〜９のいずれか一項に記載の分散処理システム。
【請求項１１】
それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントを相互に接続する分散処理方法であって、
前記処理部が、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出すステップと、
一方の前記プロセッシング・エレメントの前記通信部が、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納するステップとを有し、
少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記データの通信経路を有し、
前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの格納または読み出しを行うことを特徴とする分散処理方法。
【請求項１２】
前記通信ステップは、受信ステップ及び／または送信ステップを有し、
受信ステップにおいて、一方の前記プロセッシング・エレメントの前記受信部は、他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域へ直接格納し、
前記送信ステップにおいて、一方の前記プロセッシング・エレメントの前記送信部は、一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域に格納されている前記データを、他方の前記プロセッシング・エレメントへ前記通信経路を用い送信することを特徴とする請求項１１に記載の分散処理方法。
【請求項１３】
前記通信ステップにおいて、前記通信経路に応じて前記データを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、
前記通信経路ごとに前記領域は異なることを特徴とする請求項１１または１２に記載の分散処理方法。
【請求項１４】
前記通信経路ごとに異なる前記領域を、少なくとも２つ有していることを特徴とする請求項１３に記載の分散処理方法。
【請求項１５】
前記通信ステップでは、それぞれ異なる基板に設けられている２つ以上のプロセッシング・エレメント間において少なくとも前記データの送信または受信を行うことを特徴とする請求項１１〜１４のいずれか一項に記載の分散処理方法。
【請求項１６】
前記通信ステップでは、それぞれ同一の基板に設けられている２つ以上のプロセッシング・エレメント間において少なくとも前記データの送信または受信を行うことを特徴とする請求項１１〜１４のいずれか一項に記載の分散処理方法。
【請求項１７】
２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられているものと、それぞれ同一の基板に設けられているものとを含むことを特徴とする請求項１１〜１４のいずれか一項に記載の分散処理方法。
【請求項１８】
前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、
他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することを特徴とする請求項１１〜１７のいずれか一項に記載の分散処理方法。
【請求項１９】
２つ以上の前記プロセッシング・エレメント間の前記データと制御情報との送信及び受信においてＭＰＩを用いることを特徴とする請求項１１〜１８のいずれか一項に記載の分散処理方法。
【請求項２０】
それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントが相互に接続された分散処理システム用のプログラムであり、コンピュータにより読み取り可能なプログラムであって、
前記処理部は、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出し、
一方の前記プロセッシング・エレメントの前記通信部は、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納し、
少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記通信経路を有し、
前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの通信を行うようにコンピュータを機能させることを特徴とするプログラム。
【請求項２１】
前記通信部は、受信部及び／または送信部を有し、
前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、
他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することを特徴とする請求項２０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システム、特に、それぞれ異なる基板に設けられているプロセッシング・エレメント間においてデータの送信、受信を行う分散処理システム、分散処理方法、及びそのプログラムに関するものである。
【背景技術】
【０００２】
複数のプロセッサが協調して処理を進める種々の分散処理システムが知られている。ここで、最も簡単な構成例として、従来から、同一の基板、例えば同一のマザーボード内に設けられている複数のプロセッサ間におけるデータの送信及び受信の構成が提案されている（例えば非特許文献１参照）。
【０００３】
非特許文献１に提案された構成では、同一の基板内において、１つのメモリ部を共有している。本構成によれば、同一基板内の複数のプロセッサ間においては、ある程度までは効率的にデータの送信及び受信を行うことができる。
【０００４】
【非特許文献１】マシュー，エヌ．，ストーンズ，アール（Ｍａｔｔｈｅｗ，Ｎ．，Ｓｔｏｎｅｓ，Ｒ．）著、「Ｌｉｎｕｘプログラミング（Ｂｅｇｉｎｎｉｎｇ  Ｌｉｎｕｘ  Ｐｒｏｇｒａｍｍｉｎｇ）」、（米国）、改定第２版、ワイリー  パブリッシング（Ｗｉｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ）、２００３年、ｐ．６１５−６２３
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数のプログラムが同時に立ち上がっている状態、即ち、複数のプロセスが実行されている状態では、複数のプロセスを走らせるタイミング、及びデータの送信または受信のタイミングを最適化することが重要となる。従来技術のように、同一の基板内においては、複数のプロセスの演算処理のある程度の高速化を図ることができる。
【０００６】
しかしながら、例えば地球規模の気象シミュレーションのように、さらなる高速化のために、異なる基板をまたいで複数のプロセスを効率的に実行することが望まれている。このとき、複数の処理部が、同一の機能を有している場合、及びそれぞれ異なる機能を有している場合がある。そして、いずれの場合も複数の処理部がデータの送信または受信、即ちデータ通信のために、その処理能力を十分に発揮していないことが多い。このため、同一の基板内、及び異なる基板間において複数の処理部による複数のプロセスの実行の高速化を図ることは困難である。
【０００７】
本発明は、上記に鑑みてなされたものであって、複数のプロセスを高速に効率良く実行できる分散処理システム、分散処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明によれば、それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントが相互に接続された分散処理システムであって、前記処理部は、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出し、一方の前記プロセッシング・エレメントの前記通信部は、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納し、少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記通信経路を有し、前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの通信を行うことを特徴とする分散処理システムを提供できる。
【０００９】
また、本発明の好ましい態様によれば、前記通信部は、送信部と受信部との少なくともいずれか一方を有し、一方の前記プロセッシング・エレメントの前記受信部は、他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域へ直接格納し、一方の前記プロセッシング・エレメントの前記送信部は、一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域に格納されている前記データを、他方の前記プロセッシング・エレメントへ前記通信経路を用い送信することが望ましい。
【００１０】
また、本発明の好ましい態様によれば、前記通信経路に応じて前記データを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、前記通信経路ごとに前記領域は異なることが望ましい。
【００１１】
また、本発明の好ましい態様によれば、少なくともいずれか一つのプロセッシング・エレメントは前記通信経路ごとに異なる領域を、少なくとも２つ有していることが望ましい。
【００１２】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられていることが望ましい。
【００１３】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメントは、それぞれ同一の基板に設けられていることが望ましい。
【００１４】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられているものと、それぞれ同一の基板に設けられているものとを含むことが望ましい。
【００１５】
また、本発明の好ましい態様によれば、前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することが望ましい。
【００１６】
また、本発明の好ましい態様によれば、前記送信部は、前記メモリ部に格納されている前記データを送信してから、前記データの受信完了を受信するまでの間、及び／又は、データ受信完了を受信後、データ送信開始応答を受信するまでの間は省電力状態となること、及び／又は前記受信部は、前記前記データを受信してから、次のデータ送信開始要求信号を受信するまでの間は省電力状態となることが望ましい。
【００１７】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメント間の前記データと制御情報との送信及び受信においてＭＰＩを用いることが望ましい。
【００１８】
また、本発明によれば、それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントを相互に接続する分散処理方法であって、前記処理部が、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出すステップと、一方の前記プロセッシング・エレメントの前記通信部が、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納するステップとを有し、少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記データの通信経路を有し、前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの格納または読み出しを行うことを特徴とする分散処理方法を提供できる。
【００１９】
また、本発明の好ましい態様によれば、前記通信ステップは、受信ステップ及び／または送信ステップを有し、受信ステップにおいて、一方の前記プロセッシング・エレメントの前記受信部は、他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域へ直接格納し、前記送信ステップにおいて、一方の前記プロセッシング・エレメントの前記送信部は、一方の前記プロセッシング・エレメントの前記メモリ部の所定の領域に格納されている前記データを、他方の前記プロセッシング・エレメントへ前記通信経路を用い送信することが望ましい。
【００２０】
また、本発明の好ましい態様によれば、前記通信ステップにおいて、前記通信経路に応じて前記データを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、前記通信経路ごとに前記領域は異なることが望ましい。
【００２１】
また、本発明の好ましい態様によれば、前記通信経路ごとに異なる前記領域を、少なくとも２つ有していることが望ましい。
【００２２】
また、本発明の好ましい態様によれば、前記通信ステップでは、それぞれ異なる基板に設けられている２つ以上のプロセッシング・エレメント間において少なくとも前記データの送信または受信を行うことが望ましい。
【００２３】
また、本発明の好ましい態様によれば、前記通信ステップでは、それぞれ同一の基板に設けられている２つ以上のプロセッシング・エレメント間において少なくとも前記データの送信または受信を行うことが望ましい。
【００２４】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメントは、それぞれ異なる基板に設けられているものと、それぞれ同一の基板に設けられているものとを含むことが望ましい。
【００２５】
また、本発明の好ましい態様によれば、前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することが望ましい。
【００２６】
また、本発明の好ましい態様によれば、２つ以上の前記プロセッシング・エレメント間の前記データと制御情報との送信及び受信においてＭＰＩを用いることが望ましい。
【００２７】
また、本発明によれば、それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントが相互に接続された分散処理システム用のプログラムであり、コンピュータにより読み取り可能なプログラムであって、前記処理部は、前記メモリ部の所定の領域へデータを格納し、または前記メモリ部の所定の領域に格納されているデータを読み出し、一方の前記プロセッシング・エレメントの前記通信部は、他方の前記プロセッシング・エレメントに対して前記メモリ部から読み出した前記データを通信経路を用い送信し、または他方の前記プロセッシング・エレメントから前記通信経路を用い受信した前記データを前記メモリ部へ格納し、少なくともいずれか一つの前記プロセッシング・エレメントは、２つ以上の前記通信経路を有し、前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの通信を行うようにコンピュータを機能させることを特徴とするプログラムを提供できる。
【００２８】
また、本発明の好ましい態様によれば、前記通信部は、受信部及び／または送信部を有し、前記通信経路の一方の前記プロセッシング・エレメントの前記受信部は、データ送信開始要求信号を受信したとき、前記通信経路の他方の前記プロセッシング・エレメントへデータ送信開始応答信号を返し、他方の前記プロセッシング・エレメントは、前記データ送信開始応答信号を検出したとき、一方の前記プロセッシング・エレメントへ前記データを送信することが望ましい。
【発明の効果】
【００２９】
本発明によれば、複数のプロセスを高速に効率良く実行できる分散処理システム、分散処理方法及びプログラムを提供できる。
【発明を実施するための最良の形態】
【００３０】
以下に、本発明に係る分散処理システム、分散処理方法及びプログラムについて説明する。なお、この実施例により、この発明が限定されるものではない。
【実施例１】
【００３１】
本発明の実施例１に係る分散処理システムについて説明する。図１は、プロセッシング・エレメント１００の概略構成を示す。プロセッシング・エレメント１００は、メモリ部１０１と、処理部１０２と、送信部１０３と、受信部１０４を有している。送信部１０３と受信部１０４とで、通信部に対応する。
【００３２】
処理部１０２は、データを処理する。送信部１０３は、データを送信する相手側のプロセッシング・エレメントの受信部に対してデータを送信する。受信部１０４は、データ送信を要求してきたプロセッシング・エレメントの送信部からのデータを受信する。また、メモリ部１０１は、送信または受信するデータ、及び通信を制御する情報（以下、適宜「コマンド」という。）を格納する。
【００３３】
図２は、２つ以上、例えば６つのプロセッシング・エレメント１００、２００、３００、４００、５００、６００を備えている分散処理システムを示す。例えば、プロセッシング・エレメント１００は、他のプロセッシング・エレメント２００、プロセッシング・エレメント３００、またはプロセッシング・エレメント５００との間において、それぞれデータの送信または受信を行うことができる。
【００３４】
プロセッシング・エレメント１００、２００、３００、４００、５００、６００は、それぞれ同一の基板内に設けられている場合、及び異なる基板内に設けられている場合のいずれでも良い。
【００３５】
理解の簡単のため、２つのプロセッシング・エレメント１００、２００の間におけるデータの通信を考える。図３を用いて、プロセッシング・エレメント１００からプロセッシング・エレメント２００へのデータの送信について説明する。ここで、プロセッシング・エレメント１００は、基板ＭＢ１に設けられている。また、プロセッシング・エレメント２００は、他の基板ＭＢ２に設けられている。
【００３６】
第１のプロセッシング・エレメント１００は、第１のメモリ部１０１と、第１の処理部１０２と、第１の送信部１０３と、第１の受信部１０４とを備えている。また、第２のプロセッシング・エレメント２００は、第２のメモリ部２０１と、第２の処理部２０２と、第２の送信部２０４と、第２の受信部２０３とを備えている。
【００３７】
第１の処理部１０２は、第１のメモリ部１０１の所定の領域へデータを格納すること、または第１のメモリ部１０１の所定の領域に格納されているデータを読み出すことを行う。第１のプロセッシング・エレメント１００の第１の受信部１０４は、他方のプロセッシング・エレメント２００から受信したデータを一方のプロセッシング・エレメント１００の第１のメモリ部１０１の所定の領域へ直接格納する。さらに、一方のプロセッシング・エレメント１００の第１の送信部１０３は、一方のプロセッシング・エレメント１００の第１のメモリ部１０１の所定の領域に格納されているデータを、他方のプロセッシング・エレメント２００へ送信する。このように、プロセッシング・エレメント１００において、第１の処理部１０２と第１の送信部１０３との間、または第１の処理部１０２と第１の受信部１０４の間では、直接通信を行なわない。なお、適宜、メモリ部の一部の領域を単に「領域」と呼ぶ。
【００３８】
なお、プロセッシング・エレメント１００からプロセッシング・エレメント２００へデータを送信するとき、第１の受信部１０４と第２の送信部２０４は用いない。以下、フローチャートを用いて第１の処理部１０２、第１の送信部１０３、第２の受信部２０３、第２の処理部２０２のそれぞれの処理手順を説明する。
【００３９】
図４は、第１の処理部１０２の処理手順を示すフローチャートである。ステップＳ４０１において、第１のメモリ部１０１は使用可能か否かが判断される。ステップＳ４０１の判断結果が真（ＹＥＳ）のとき、ステップＳ４０２において、第１の処理部１０２は、データを処理し、処理結果を第１のメモリ部１０１の所定の領域へ格納する。判断結果が偽（ＮＯ）のとき、ステップＳ４０１を繰り返す。
【００４０】
ステップＳ４０３において、第２のメモリ部２０１は使用可能か否かが判断される。ステップＳ４０３の判断結果が真のとき、第１の処理部１０２は、ステップＳ４０４において、第１のメモリ部使用フラグと第２のメモリ部使用フラグとをセットする。また、判断結果が偽のとき、ステップＳ４０３を繰り返す。ステップＳ４０５において、第１の処理部１０２はデータ送信開始要求を第２の受信部２０３へ送る。そして、ステップＳ４０１へ戻って再び同様の処理手順を行なう。
【００４１】
図５は、第１の送信部１０３の処理手順を示すフローチャートである。ステップＳ５０１において、第２の受信部２０３からデータ送信開始応答を受信したか否かが判断される。ステップＳ５０１の判断結果が真のとき、ステップＳ５０２において、第１の送信部１０３は、第１のメモリ部１０１に格納されているデータを第２の受信部２０３へ送信する。また、判断結果が偽のとき、ステップＳ５０１を繰り返す。
【００４２】
ステップＳ５０３において、第１のメモリ部使用フラグをクリアする。これにより、第１のメモリ部１０１は使用可能となる。ステップＳ５０４において、第２の処理部からデータ受信完了を受信したか否かが判断される。ステップＳ５０４の判断結果が偽のとき、ステップＳ５０４を繰り返す。判断結果が真のとき、ステップＳ５０５において、第２のメモリ部使用フラグをクリアする。これにより、第２のメモリ部２０１は使用可能となる。そして、ステップＳ５０１へ戻って再び同様の処理手順を行なう。
【００４３】
図６は、第２の送信部２０３の処理手順を示すフローチャートである。ステップＳ６０１において、第１の処理部１０２からデータ送信開始要求を受信したか否かが判断される。ステップＳ６０１の判断結果が真のとき、ステップＳ６０２において、第２の受信部２０３は、データ送信開始応答を第１の送信部１０３に送信する。判断結果が偽のとき、ステップＳ６０１を繰り返す。
【００４４】
ステップＳ６０３において、第２の受信部２０３は、データを受信する。そして、第２の受信部２０３は、受信したデータを第２のメモリ部２０１の所定の領域に格納する。ステップＳ６０４において、第２の処理部２０２に対してデータを受信したことを通知する。
【００４５】
図７は、第２の処理部２０２の処理手順を示すフローチャートである。ステップＳ７０１において、第２の受信部２０３がデータ受信を知らせてきたか否かが判断される。ステップＳ７０１の判断結果が真のき、ステップＳ７０２において、第２の処理部２０２は、第２のメモリ部２０１の所定の領域に格納されているデータを他の領域、例えばワークメモリにコピーする。判断結果が偽のとき、ステップＳ７０１を繰り返す。
【００４６】
ステップＳ７０３において、第１の送信部１０３に対してデータ受信完了を送信する。ステップＳ７０４において、第２の処理部２０２は、コピーしたデータを処理する。
【００４７】
図８の（ａ）、（ｂ）、（ｃ）、（ｄ）、（ｅ）、（ｆ）は、それぞれ第１の処理部１０２、第１の送信部１０３、第２の受信部２０３、第２の処理部２０２、第１のメモリ部使用フラグ、第２のメモリ部使用フラグを示すタイミングチャートである。タイミングチャートにおいて、処理部、送信部、受信部が処理を実行している状態をＨｉｇｈ、待機している状態をＬｏｗでそれぞれ示す。
【００４８】
図８の（ａ）から明らかなように、第１の処理部１０２は、第１のメモリ部１０１と第２のメモリ部２０１とが使用不可の時間を除いてＨｉｇｈの状態、即ち処理を実行できる状態となる。このため、プロセッシング・エレメント１００からプロセッシング・エレメント２００へデータを送信するとき、通信による処理の中断を大幅に低減できる。この結果、第１の処理部１０２を高効率に稼動させることができる。
【００４９】
また、図８の（ｂ）から明らかなように、第１の送信部１０３は、第１のメモリ部１０１に格納されているデータを送信してから、データの受信完了を受信するまでの間及び、データ受信完了を受信してから、次のデータ送信開始応答（不図示）を受信するまでの間は省電力状態となる。同様に、図８の（ｃ）に示すように、第２の受信部２０３は、データを受信してから、次のデータ送信開始応答（不図示）を受信するまでの間は省電力状態となる。
【００５０】
また、分散処理システムのハードウウエアのためのプログラムとして、コンピュータにより読み取り可能なプログラムであって、第１の処理部１０２は、第１のメモリ部１０１の所定の領域へデータを格納し、または第１のメモリ部１０１の所定の領域に格納されているデータを読み出し、一方のプロセッシング・エレメント２００の通信部（第２の受信部２０３、第２の送信部２０４）は、他方のプロセッシング・エレメント１００に対して第１のメモリ部１０１から読み出したデータを送信し、または他方のプロセッシング・エレメント２００から受信したデータを第１のメモリ部１０１へ格納するようにコンピュータを機能させることを特徴とするプログラムを用いることが望ましい。
【００５１】
処理部、送信部、受信部の機能は、例えば、ＣＰＵを用いて実現できる。なお、本分散処理システムは、情報記憶媒体からコンピュータにプログラムを読み取らせて実現することも可能である。
【００５２】
また、情報記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカードやバーコード等の符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭ等のメモリ）及び外部記憶装置等、コンピュータによって読み取ることができる種々の媒体を用いることができる。そのプログラムの読み取り方式は接触方式であっても、非接触方式であっても良い。
【００５３】
さらに、情報記憶媒体に代えて、上述した各機能を実現するために、プログラムを伝送路を介してホスト装置等からダウンロードすることによって上述した各機能を実現することも可能である。
【００５４】
（変形例）
次に、本発明の変形例に係る分散処理方法について説明する。図９は、本分散処理方法を行なうプロセッシング・エレメント１００の構成を示す。上記実施例１と同一の部分には同一の符号を付し、重複する説明は省略する。第１の処理部１０２、第１の送信部１０３、第１の受信部１０４は、それぞれ第１のメモリ部１０１とデータ及びコマンドを送信または受信できるように構成されている。
【００５５】
本実施例では、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いる。ＭＰＩは、ＭＰＩ  Ｆｏｒｕｍにより制定されたメッセージパッシング関数仕様である。ＭＰＩは、プログラムの移植性及び異機種間のデータ通信を目的として、通信関数の機能やインターフェースを統一するために作成されている。なお、以下、ソフトウエア的に処理する手順について説明するが、本発明はこれに限られるものではなく、同様の論理を持つハードウエアで構成することもできる。
【００５６】
また、通信には、大別してコマンド転送とデータ転送とがある。コマンドは、例えばデータの転送や要求の通知等に必要なデータサイズやメモリアドレス、送信側のＩＤ、受信側のＩＤ、通信開始要求、通信開始応答等を含む制御情報である。そして、第１の処理部１０２と第１の送信部１０３との間、または第１の処理部１０２と第１の受信部１０４との間のデータ、コマンドの通信は、第１のメモリ部１０１を介して行なう。第１のメモリ部１０１は、例えば容量が２５６ＫＢのローカルメモリである。
【００５７】
以下、通信時にコマンドやデータを格納して送受信を行うためのデータ構造を「メールボックス」という。メールボックスには、コマンド送信用(ＣＳＭＢ)、コマンド受信用(ＣＲＭＢ)、データ送信用(ＤＳＭＢ)、データ受信用(ＤＲＭＢ)の４種類がある。そして、メールボックスの通信状態を制御するメールコントロールデータ構造(ＭＡＩＬ＿ＣＯＮＴＲＯＬ）を設ける。メールコントロールとメールボックスとは、ローカルメモリに図１０のようにマッピングする。
【００５８】
ここで、データ通信は、常に少なくともコマンド通信を伴っている。これに対して、データ通信を伴わないコマンド通信を行なう場合もある。このため、少なくとも常にコマンド通信は行われることになる。
【００５９】
また、図１１は、メールコントロールデータ構造(ＭＡＩＬ＿ＣＯＮＴＲＯＬ）の構造を示す。各内容を以下に説明する。
８：ＳＴＣＮ：通信セッションを管理する送信セッションカウンタ
（０：通信が何も行われていない状態、０以外：データ通信中）
１６：ＳＭＦ：処理部プロセスに送信メールボックスの使用中を通知する送信メールボックスフルフラグ
（０：エンプティ、１：フル）
２４：ＲＭＦ：通信部プロセスから処理部プロセスにデータの受信を通知する受信メールボックスフルフラグ
（０：エンプティ、１：フル）
【００６０】
図１２は、コマンド用メールボックスの構造を示す。なお、コマンド受信用メールボックスとコマンド送信用メールボックスとの構造は共通である。また、図１３は、図１２に示したメールボックス構造の各ワードに格納するコマンドの詳細を示す。データ用メールボックスは転送するデータだけを格納する。
【００６１】
ここでは、コマンドメールボックスは、６４バイトの固定領域とする。また、コマンドメールボックスは、以下の４つのコマンドを格納する。
（１）データの送受信を行なうハードウェアまたはソフトウェアのＩＤ
（２）制御信号
（３）送信側および受信側のデータ格納アドレス
（４）送受信するデータのサイズとパケット数
（５）データ通信の繰り返し回数
【００６２】
さらに、制御信号は、以下の信号を含んでいる。
ＲＥＱ信号：送信側プロセッシング・エレメントからのデータ送信開始要求
ＡＣＫ信号：データ送信開始要求に対する受信側プロセッシング・エレメントＰＥからのデータ送信開始応答
ＦＩＮ信号：データの受信完了を送信側プロセッシング・エレメントに通知するデータ受信完了
【００６３】
また、データメールボックスは、最適なサイズや個数をアプリケーションによって決定できる構成とすることが望ましい。
【００６４】
次に、以下の通信条件（１）〜（６）を満足するときのコマンド用メールボックスの使用例を図１４に示す。なお、プロセッシング・エレメントを適宜「ＰＥ」と省略する。
通信条件：
（１）ＰＥ１上のアプリケーション１(送信側ＩＤ１０５)からＰＥ７上のアプリケーション２(受信側ＩＤ７０２)に対して通信を行う。
（２）データ量は１０パケット（６４０バイト）
（３）制御信号はデータ送信開始要求
（４）受信したデータはＰＥ７のローカルメモリのアドレス０ｘ０００２４８８０から６４０バイトの領域に格納する。
（５）送信するデータはＰＥ１のローカルメモリのアドレス０ｘ０００２０８８０から６４０バイトの領域に格納してある。
（６）転送は繰り返さない（分割して転送せず、全データを一回で送信する）。
【００６５】
（処理モデル）
一般に、データ通信においては、データどうしが衝突する可能性がある。次に、データの衝突を回避する手順について説明する。まず、処理モデルについて説明する。図１５の（ａ）に示す処理モデルＡでは、プロセッシング・エレメントＰＥ０とプロセッシング・エレメントＰＥ１とプロセッシング・エレメントＰＥ２とが接続されている。そして、データは、プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１に対して送信される。さらに、データは、プロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ２に対して送信される。このように、処理モデルＡでは、データは、一方向に出力されている。
【００６６】
これに対して、図１５の（ｂ）に示す処理モデルＢでは、プロセッシング・エレメントＰＥ０とプロセッシング・エレメントＰＥ１とプロセッシング・エレメントＰＥ２とが接続されている。そして、データは、プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へ送信される。また、データは、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へ送信される。このように、処理モデルＢでは、データは、二方向から入力されている。
【００６７】
図１６、図１７は、処理モデルＡにおいてデータの衝突を回避する手順を説明するための図である。また、図１８は、処理モデルＢにおいてデータの衝突を回避する手順を説明するための図である。これらの図において、以下の符号を用いる。
【００６８】
（送信側、受信側）
Ｐ：処理部
Ｓ：送信部
Ｒ：受信部
（制御情報種別）
ＲＥＱ：データ送信開始要求
ＡＣＫ：データ送信開始応答
ＦＩＮ：データ受信完了
（メールボックス）
ＳＭＢ：送信メールボックス
ＲＭＢ：受信メールボックス
なお、図中において、「送信側／制御情報種別／受信側」というように記述する。
【００６９】
参考のために衝突する可能性を有している信号（データ）の組み合わせは、例えば以下のとおりである。なお、これに限られず、この他の組み合わせの場合でも、衝突することはある。
（１）ＦＩＮとＲＥＱとの衝突
（２）ＲＥＱとＡＣＫとの衝突
（３）ＲＥＱとＲＥＱとの衝突
【００７０】
本実施例における手順では、少なくとも一方のプロセッシング・エレメントＰＥ１は、２つ以上のデータの通信経路を有している。そして、後述するように、通信経路に応じてメモリ部の異なる領域を用いてデータの通信を行う構成である。換言すると、通信相手となるプロセッシング・エレメントに応じて送信用または受信用に特定のメールボックスを割り当てることで、通信を実現している。
【００７１】
まず、図１６に基づいて処理モデルＡについて説明する。上述したように、データ通信は、常に少なくともコマンド通信を伴っている。なお、以下の説明においては、コマンド通信に注目して説明をする。
【００７２】
プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へコマンドを送信するときの所定の通信経路について、プロセッシング・エレメントＰＥ０のメモリ部は、コマンド送信のためのメールボックス（送信領域）ＳＭＢ２を有し、プロセッシング・エレメントＰＥ１のメモリ部は、コマンドの受信のためのメールボックス（受信領域）ＲＭＢ１を有する。プロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ２へコマンドを送信するときの他の通信経路についても、同様にプロセッシング・エレメントＰＥ１のメールボックス（送信領域）ＳＭＢ２と、プロセッシング・エレメントＰＥ２のメールボックス（受信領域）ＲＭＢ１とが設けられている。また、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へコマンドを送信するときの所定の通信経路については、プロセッシング・エレメントＰＥ２のメールボックス（送信領域）ＳＭＢ１と、プロセッシング・エレメントＰＥ１のメールボックス（受信領域）ＲＭＢ２とが設けられている。プロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ０へコマンドを送信するときの所定の通信経路についても、同様にプロセッシング・エレメントＰＥ１のメールボックス（送信領域）ＳＭＢ１と、プロセッシング・エレメントＰＥ０のメールボックス（受信領域）ＲＭＢ２とが設けられている。
【００７３】
このように、通信経路に応じてデータを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、かつ通信経路ごとにその領域は異なっている。例えば、プロセッシング・エレメントＰＥ１に着目すると、メモリ部の領域Ａと領域Ｂとの２つの異なる領域を有している。
【００７４】
そして、プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へデータを送信するとき、及びプロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ２へデータを送信するとき、メールボックスＳＭＢ２からメールボックスＲＭＢ１へコマンドを送信する。
【００７５】
これに対して、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へデータを送信するとき、及びプロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ０へデータを送信するとき、メールボックスＳＭＢ１からメールボックスＲＭＢ２へコマンドを送信する。
【００７６】
このように、通信経路、即ち通信相手によってメールボックスの番号を決めている。これにより、図１６から明らかなように、プロセッシング・エレメントＰＥ２からの受信完了とプロセッシング・エレメントＰＥ０からの送信要求とがプロセッシング・エレメントＰＥ１の受信メールボックス上で衝突することを回避できる。この結果、高速な通信を実現できる。
【００７７】
図１７は、処理モデルＡにおける、他の通信手順を示す図である。図１７において、プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へデータを送信するとき、及びプロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ２へデータを送信するとき、メールボックスＳＭＢ２からメールボックスＲＭＢ１へコマンドを送信する。
【００７８】
これに対して、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へデータを送信するとき、及びプロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ０へデータを送信するとき、メールボックスＳＭＢ１からメールボックスＲＭＢ２へコマンドを送信する。このように、通信経路に応じてデータを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、かつ通信経路ごとにその領域は異なっている。例えば、プロセッシング・エレメントＰＥ１に着目すると、メモリ部の領域Ａと領域Ｂとの２つの異なる領域を有している。
【００７９】
これにより、図１７から明らかなように、プロセッシング・エレメントＰＥ２からの送信要求と、プロセッシング・エレメントＰＥ１からの送信要求を受けてプロセッシング・エレメントＰＥ１に返す送信要求応答とが、プロセッシング・エレメントＰＥ２の送信メールボックス上で衝突することを回避できる。この結果、高速な通信を実現できる。
【００８０】
図１８は、処理モデルＢにおける通信手順を説明するための図である。上述したように、データ通信は、常に少なくともコマンド通信を伴っている。このため、コマンド通信に着目して説明する。
【００８１】
プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へコマンドを送信するときの所定の通信経路について、プロセッシング・エレメントＰＥ０のメモリ部は、コマンドの送信のためのメールボックス（送信領域）ＳＭＢ２を有し、プロセッシング・エレメントＰＥ１のメモリ部は、コマンドの受信のためのメールボックス（受信領域）ＲＭＢ１を有する。プロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ２へコマンドを送信するときの他の通信経路についても、同様にプロセッシング・エレメントＰＥ１のメールボックス（送信領域）ＳＭＢ２と、プロセッシング・エレメントＰＥ２のメールボックス（受信領域）ＲＭＢ１とが設けられている。また、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へコマンドを送信するときの所定の通信経路については、プロセッシング・エレメントＰＥ２のメールボックス（送信領域）ＳＭＢ１と、プロセッシング・エレメントＰＥ１のメールボックス（受信領域）ＲＭＢ２とが設けられている。プロセッシング・エレメントＰＥ１からプロセッシング・エレメントＰＥ０へコマンドを送信するときの所定の通信経路についても、同様にプロセッシング・エレメントＰＥ１のメールボックス（送信領域）ＳＭＢ１と、プロセッシング・エレメントＰＥ０のメールボックス（受信領域）ＲＭＢ２とが設けられている。
【００８２】
このように、通信経路に応じてデータを含む通信に必要な領域を各々のプロセッシング・エレメントは確保し、かつ通信経路ごとにその領域は異なっている。例えば、プロセッシング・エレメントＰＥ１に着目すると、メモリ部の領域Ａと領域Ｂとの２つの異なる領域を有している。
【００８３】
そして、プロセッシング・エレメントＰＥ０からプロセッシング・エレメントＰＥ１へデータを送信するとき、メールボックスＳＭＢ２からメールボックスＲＭＢ１へコマンドを送信する。
【００８４】
これに対して、プロセッシング・エレメントＰＥ２からプロセッシング・エレメントＰＥ１へデータを送信するとき、メールボックスＳＭＢ１からメールボックスＲＭＢ２へコマンドを送信する。
【００８５】
このように、通信経路、即ち通信相手によってメールボックスの番号を決めている。これにより、図１８から明らかなように、プロセッシング・エレメントＰＥ１からの送信要求とプロセッシング・エレメントＰＥ２からの送信要求とがプロセッシング・エレメントＰＥ１の受信メールボックス上で衝突することを回避できる。この結果、高速な通信を実現できる。
【００８６】
なお、上記処理モデルＡ、Ｂは最も簡単なモデルの一つであるが、本解決方法では、自プロセッシング・エレメントＰＥに接続されているプロセッシング・エレメントＰＥの数（通信経路の数）に対応したメールボックスのペア（送信用と受信用）を用意すれば、プロセッシング・エレメントＰＥのネットワーク形状に関わらず、データ処理網を拡張することができる。
【００８７】
（ハードウエアとソフトウエアとの関係）
次に、上述した構成におけるハードウエアとソフトウエアとの関係について説明する。図１９、図２０は、それぞれアプリケーション（ソフトウエア）とハードウエアとの関係を説明するための図である。これらの図において、以下の符号を用いる。
【００８８】
（メールボックス）
ＣＳＭＢ：送信コマンドメールボックス
ＤＳＭＢ：送信データメールボックス
ＣＲＭＢ：受信コマンドメールボックス
ＤＲＭＢ：受信データメールボックス
（メールコントロール）
ＳＭＦ：送信メールボックスフル
ＲＭＦ：受信メールボックスフル
ＳＴＣＮ：送信セッションカウンタ
（通信の種類）
ＲＥＱ：データ送信開始要求
ＡＣＫ：データ送信開始応答
ＦＩＮ：データ受信完了
一点鎖線の矢印は、フラグ操作とシステムコール、
実線の矢印は、データ、コマンドの書き込み、読み出し、
破線の矢印は、メールボックス通信、
両端が黒い丸印の実線は、通信待機状態、をそれぞれ示している。
【００８９】
（フローの説明）
（１）（処理部１アプリケーション）
データ送信開始要求(ＲＥＱ)信号と送信側データ格納アドレスなどの送信コマンドを送信コマンドメールボックスに格納する。
（２）（処理部１アプリケーション）
送信データを送信データメールボックスに格納する。
（３）（処理部１アプリケーション）
システムコール１（データ送信開始要求命令）を実行する。
【００９０】
（４）（処理部１）
送信メールボックスフルと送信セッションカウンタ（ＳＴＣＮ）をセットする。
（５）（処理部１）
送信コマンドメールボックスから受信側のＩＤを抽出し、ＲＥＱ信号を格納した送信コマンドを通信部２に送信する。
（６）（通信部２）
ＲＥＱ信号を格納した送信コマンドを受信すると、通信待機状態から復帰する。
【００９１】
（７）（通信部２）
データ送信開始応答(ＡＣＫ)信号と受信側データ格納アドレスなどの送信コマンドを送信コマンドメールボックスに格納する。
（８）（通信部２）
ＡＣＫ信号を格納した送信コマンドを通信部１に送信する。
（９）（通信部１）
ＡＣＫ信号を格納した送信コマンドを受信すると、通信待機状態から復帰する。
【００９２】
（１０）（通信部１）
送信データメールボックスに格納された送信データを通信部２に送信する。
（１１）（通信部１）
送信メールボックスフルをクリアし、次のコマンドの受信を待機する。処理部１アプリは次に送信するコマンドとデータを送信メールボックスに格納することが可能となる。
（１２）（通信部２）
受信データメールボックスにデータを受信する。
【００９３】
（１３）（通信部２）
受信メールボックスフルをセットし、通信待機状態に入る。
（１４）（処理部２アプリケーション）
受信メールボックスフルを検知し、ワークメモリにデータを格納する。
（１５）（処理部２アプリケーション）
データ受信完了(ＦＩＮ)信号などの送信コマンドを送信コマンドメールボックスに格納する。
【００９４】
（１６）（処理部２アプリケーション）
システムコール２（データ受信完了通知命令）を実行する。
（１７）（処理部２）
受信メールボックスフルをクリアする。
（１８）（処理部２）
送信コマンドメールボックスから受信側のＩＤを抽出し、ＦＩＮ信号を格納した送信コマンドを通信部１に送信する。
【００９５】
（１９）（通信部１）
ＦＩＮ信号を格納した送信コマンドを受信すると、通信待機状態から復帰する。
（２０）（通信部１）
送信セッションカウンタをクリアし、通信待機状態に入る。処理部１アプリはシステムコール１を実行可能となる。
【００９６】
なお、処理部１アプリケーション、処理部２アプリケーションとは、各処理部上で実行するアプリケーションプログラム上の記述を指している。処理部１、処理部２は、アプリケーションから直接見えない処理部によるフラグやメールボックスの操作などを指している。
【００９７】
また、システムコールは、プロセッシング・エレメントＰＥ間通信を実現するための命令をいう。上記例では、データ送信を要求するシステムコール１とデータの受信完了を通知するシステムコール２を使用している。
【００９８】
また、本発明によれば、例えば、以下の全ての場合について処理の高速化を図ることができる。
（１）複数の同じ（ユニーク）処理部が、同一の基板内に設けられている場合
（２）複数の異なる機能の処理部が、同一の基板内に設けられている場合
（３）複数の同じ（ユニーク）処理部が、異なる基板に設けられている場合
（４）複数の異なる機能の処理部が、異なる基板に設けられている場合
（５）（１）〜（４）を組み合わせた場合
【００９９】
以上説明したように、本発明に係る分散処理システムは、それぞれ少なくとも処理部とメモリ部と通信部とを有する２つ以上のプロセッシング・エレメントが相互に接続されている。処理部は、メモリ部の所定の領域へデータを格納し、またはメモリ部の所定の領域に格納されているデータを読み出す。一方のプロセッシング・エレメントの通信部は、他方のプロセッシング・エレメントに対してメモリ部から読み出したデータを送信し、または他方のプロセッシング・エレメントから受信したデータをメモリ部へ格納する。そして、少なくとも一方の前記プロセッシング・エレメントは、２つ以上の前記データの通信経路を有し、前記通信経路に応じて前記メモリ部の異なる領域を用いて前記データの通信を行う構成である。
【０１００】
これにより、通信部が、データの送信または受信を行っている間、処理部は、データ通信とは異なる他の処理を実行できる。このため、処理部は、データの通信のために、自らの処理を中断すること、または処理能力を低減することがない。さらに、２つ以上の異なる通信経路による通信において、メモリの異なる領域を使用している。このため、通信どうしにおいて、異なる通信経路からのデータが同一の領域を使用すること、即ちデータの衝突を回避できる。
【０１０１】
この結果、処理部は、常に稼働率を向上することができる。この結果、複数のプロセスを高速に効率良く実行できる分散処理システムを提供できる。
【０１０２】
また、ＭＰＩに限られず、いわゆるソケットを用いて制御することもできる。このように、本発明は、その趣旨を逸脱しない範囲で様々な変形例をとることができる。
【産業上の利用可能性】
【０１０３】
以上のように、本発明に係る分散処理システムは、複数のプロセスを高速に実行するシステムに有用である。
【図面の簡単な説明】
【０１０４】
【図１】本発明の実施例のプロセッシング・エレメントの構成を示す図である。
【図２】複数のプロセッシング・エレメント間の通信の概要を示す図である。
【図３】２つのプロセッシング・エレメント間の通信の概要を示す図である。
【図４】実施例の第１の処理部の手順を示すフローチャートである。
【図５】実施例の第１の送信部の手順を示すフローチャートである。
【図６】実施例の第２の受信部の手順を示すフローチャートである。
【図７】実施例の第２の処理部の手順を示すフローチャートである。
【図８】実施例の分散処理システムのタイミングチャートである。
【図９】実施例のプロセッシング・エレメントの構成を示す図である。
【図１０】実施例のローカルメモリマップの構成を示す図である。
【図１１】実施例のＭＡＩＬ＿ＣＯＮＴＲＯＬの構成を示す図である。
【図１２】実施例のコマンド用メールボックスの構成を示す図である。
【図１３】実施例のコマンドの詳細を示す図である。
【図１４】実施例のコマンド用メールボックスの使用例を示す図である。
【図１５】実施例の処理モデルを示す図である。
【図１６】実施例のデータの衝突回避の手順を示す図である。
【図１７】実施例のデータの衝突回避の手順を示す他の図である。
【図１８】実施例のデータの衝突回避の手順を示すさらに他の図である。
【図１９】実施例のハードウエアとソフトウエアとの関係を示す図である。
【図２０】実施例のハードウエアとソフトウエアとの関係を示す他の図である。
【符号の説明】
【０１０５】
１００  プロセッシング・エレメント
１０１  第１のメモリ部
１０２  第１の処理部
１０３  第１の送信部
１０４  第１の受信部
２００、３０、４００、５００、６００  プロセッシング・エレメント
２０１  第２のメモリ部
２０２  第２の処理部
２０３  第２の受信部
２０４  第２の送信部
７００  分散処理システム
７０１  メールボックス
７０２  第１の処理部
７０３  第２の処理部
ＣＳＭＢ  送信コマンドメールボックス
ＤＳＭＢ  送信データメールボックス
ＣＲＭＢ  受信コマンドメールボックス
ＤＲＭＢ  受信データメールボックス
ＳＭＦ  送信メールボックスフル
ＲＭＦ  受信メールボックスフル
ＳＴＣＮ  送信セッションカウンタ
ＲＥＱ  データ送信開始要求
ＡＣＫ  データ送信開始応答
ＦＩＮ  データ受信完了
【図１】
2008059282.tif 000003
【図２】
2008059282.tif 000004
【図３】
2008059282.tif 000005
【図４】
2008059282.tif 000006
【図５】
2008059282.tif 000007
【図６】
2008059282.tif 000008
【図７】
2008059282.tif 000009
【図８】
2008059282.tif 000010
【図９】
2008059282.tif 000011
【図１０】
2008059282.tif 000012
【図１１】
2008059282.tif 000013
【図１２】
2008059282.tif 000014
【図１３】
2008059282.tif 000015
【図１４】
2008059282.tif 000016
【図１５】
2008059282.tif 000017
【図１６】
2008059282.tif 000018
【図１７】
2008059282.tif 000019
【図１８】
2008059282.tif 000020
【図１９】
2008059282.tif 000021
【図２０】
2008059282.tif 000022