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