(57)【要約】【課題】マルチプロセッサシステムによる高速なデータ処理を実現する。【解決手段】所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、仮想空間内における位置を表す位置データを生成する複数のセルプロセッサ２０と、すべてのセルプロセッサからオブジェクトの位置データを取得可能であり、取得した位置データを一つずつすべてのセルプロセッサにブロードキャストするＢＣＭＣ１０と、を備えたマルチプロセッサシステムである。複数のセルプロセッサの各々は、ＢＣＭＣからブロードキャストされた位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する。【選択図】　　　図１
2004005572.tif 000002
【特許請求の範囲】
【請求項１】
所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成する複数のプロセッサと、
すべての前記プロセッサから前記オブジェクトの位置データを取得可能であり、取得した位置データを一つずつすべてのプロセッサにブロードキャストするコントローラと、を備えており、
前記複数のプロセッサの各々は、前記コントローラからブロードキャストされた位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定するようになっている、
マルチプロセッサシステム。
【請求項２】
前記複数のプロセッサは、自分の管理するオブジェクトについて、前記仮想空間内における速度を表す速度データを生成するようになっており、
前記コントローラは、すべての前記プロセッサから前記位置データ及び前記速度データを取得可能であり、取得した位置データ及び速度データを一組ずつすべてのプロセッサにブロードキャストするようになっており、
前記プロセッサは、ブロードキャストされた位置データで位置が表されるオブジェクトが自分の管理下にあるオブジェクトと衝突位置にある場合に、ブロードキャストされたオブジェクトの前記速度データにより、衝突による衝撃の強さを定量的に表す衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを生成するようになっている、
請求項１記載のマルチプロセッサシステム。
【請求項３】
前記複数のプロセッサには、各々を識別するための識別データが割り当てられており、
前記衝突強度データを生成したプロセッサからは衝突強度データをそのプロセッサの識別データと共に取り込み、前記衝突強度データを生成していないプロセッサからは衝突強度データの値よりも小さい値をそのプロセッサの衝突強度データとして識別データと共に取り込んで、最も大きい衝突強度データを生成したプロセッサを特定し、特定したプロセッサの識別データを前記コントローラに送る最大値検出機構を備えており、
前記コントローラは、前記最大値検出機構から送られた識別データにより表されるプロセッサから、衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを取得するようになっている、
請求項２記載のマルチプロセッサシステム。
【請求項４】
前記プロセッサは、位置データがブロードキャストされたオブジェクトと自分の管理下にあるオブジェクトとの距離を算出することにより、当該オブジェクトが自分の管理下にあるオブジェクトと衝突位置にあるか否かを判定するようになっている、
請求項１記載のマルチプロセッサシステム。
【請求項５】
所定の仮想空間内に分布する複数のオブジェクトをクラスタ単位に分けて、それぞれが異なる一つのクラスタを管理する複数のデータ処理手段と、すべての前記オブジェクトの前記仮想空間内における位置及び速度を管理するとともに、前記複数のデータ処理手段に、前記オブジェクトの位置を表す位置データ及び速度を表す速度データをブロードキャストする制御手段と、を有する装置又はシステムにおいて実行される方法であって、
前記制御手段が、すべてのオブジェクトの前記位置データ及び前記速度データを、オブジェクトが属するクラスタを表すクラスタデータとともにすべてのデータ処理手段にブロードキャストする段階と、
前記複数のデータ処理手段の各々が、自分の管理するオブジェクトについての位置データ及び速度データを、前記クラスタデータに基づいて取り込み、取り込んだ位置データ及び速度データから、新しい位置データ及び速度データを生成する段階と、
前記制御手段が、前記複数のデータ処理手段の各々から、各オブジェクトの新しい位置データ及び速度データを取り込むとともに、取り込んだ位置データを一つずつすべてのデータ処理手段にブロードキャストする段階と、
前記複数のデータ処理手段の各々が、前記制御手段からブロードキャストされた新しい位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に当該新しい位置データで表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する段階と、をこの順序で実行する、
データ処理方法。
【請求項６】
所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行うシステムであって、
前記仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成するとともに、生成した位置データを前記制御手段に送る手段と、
前記制御手段から一つずつブロードキャストされる位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する手段と、を備えている
データ処理システム。
【請求項７】
所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行う、コンピュータ搭載の装置に於いて、前記コンピュータに以下の機能を形成させるためのコンピュータプログラム。
（１）前記仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成するとともに、生成した位置データを前記制御手段に送る手段、
（２）前記制御手段から一つずつブロードキャストされる位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する手段。
【請求項８】
所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行う、コンピュータ搭載の装置に組み込まれることにより、前記コンピュータに以下の機能を形成させる半導体デバイス。
（１）前記仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成するとともに、生成した位置データを前記制御手段に送る手段、
（２）前記制御手段から一つずつブロードキャストされる位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する手段。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のデータ処理手段によりデータ処理を行うデータ処理システム、例えばマルチプロセッサシステム及びデータ処理方法に関する。
【０００２】
【発明の背景】
高度情報化社会が進み、コンピュータ等のデータ処理装置によるデータ処理量は増大する傾向にある。また、データ処理の内容も複雑化、高度化している。従来、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）などのプロセッサの高性能化や、複数のプロセッサによるマルチプロセッサ化により、データ処理装置全体の処理能力の向上を図っている。
しかし、近年、要求されるデータ処理能力の増大のスピードは、プロセッサの高性能化のスピードを凌駕するまでになっている。プロセッサの高性能化は、その開発期間が長いこともあり一朝一夕に行えるものではない。
一方、例えばマルチプロセッサによるデータ処理能力は、使用するプロセッサの数や、その処理方法により決まり、個々のプロセッサの高性能化への依存度が小さい。そのために、データ処理装置の処理能力を向上させるための有効な手段の一つとなっている。
【０００３】
マルチプロセッサによるデータ処理方法を、一つのプロセッサがデータ処理時に必要とするデータの範囲により分類すると、以下のようになる。
（１）データ処理を行うプロセッサが、隣接して接続されるプロセッサにより処理されたデータのみを使用する
このような制御は、セル・オートマトン、画像フィルタ、布や波の運動の計算、曲面からのポリゴン生成の計算等に向いている。
（２）データ処理を行うプロセッサが、複数のプロセッサのうちの一部のプロセッサにより処理されたデータのみを使用する
このような制御は、多対多の衝突判定等に向いている。
【０００４】
上記の（１）の場合のデータ処理は、従来の並列プロセッサによって、効率よく実現可能である。しかし、（２）のデータ処理は、並列プロセッサ間の通信速度によりシステム全体の処理速度が制限されてしまい、各プロセッサの処理速度を十分に発揮できない。例えば、すべてのプロセッサ間をクロスバー接続することにより、（２）のデータ処理を高速に行うことも可能であるが、この場合、必要なハードウェアが膨大になり、現実的ではない。
【０００５】
本発明の課題は、例えば上記の（２）のデータ処理を従来よりも効率よく行うことのできるデータ処理システム及びデータ処理方法を提供することにある。
【０００６】
【課題を解決するための手段】
上記課題を解決するため、本発明のマルチプロセッサシステムは、所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成する複数のプロセッサと、すべての前記プロセッサから前記オブジェクトの位置データを取得可能であり、取得した位置データを一つずつすべてのプロセッサにブロードキャストするコントローラと、を備えており、前記複数のプロセッサの各々は、前記コントローラからブロードキャストされた位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定するようになっている。
【０００７】
前記複数のプロセッサは、自分の管理するオブジェクトについて、前記仮想空間内における速度を表す速度データを生成するようになっていてもよい。この場合、前記コントローラが、すべての前記プロセッサから前記位置データ及び前記速度データを取得可能であり、取得した位置データ及び速度データを一組ずつすべてのプロセッサにブロードキャストすれば、前記プロセッサは、ブロードキャストされた位置データで位置が表されるオブジェクトが自分の管理下にあるオブジェクトと衝突位置にある場合に、ブロードキャストされたオブジェクトの前記速度データにより、衝突による衝撃の強さを定量的に表す衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを生成することができるようになる。
また、前記複数のプロセッサに、各々を識別するための識別データを割り当て、前記衝突強度データを生成したプロセッサからは衝突強度データをそのプロセッサの識別データと共に取り込み、前記衝突強度データを生成していないプロセッサからは衝突強度データの値よりも小さい値をそのプロセッサの衝突強度データとして識別データと共に取り込んで、最も大きい衝突強度データを生成したプロセッサを特定し、特定したプロセッサの識別データを前記コントローラに送る最大値検出機構をさらに備えるようにしてもよい。これにより前記コントローラは、前記最大値検出機構から送られた識別データにより表されるプロセッサから、衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを取得することができるようになる。
【０００８】
また、このようなマルチプロセッサシステムにおいて、前記プロセッサは、例えば、位置データがブロードキャストされたオブジェクトと自分の管理下にあるオブジェクトとの距離を算出することにより、当該オブジェクトが自分の管理下にあるオブジェクトと衝突位置にあるか否かを判定するようになっている。
【０００９】
本発明のデータ処理方法は、所定の仮想空間内に分布する複数のオブジェクトをクラスタ単位に分けて、それぞれが異なる一つのクラスタを管理する複数のデータ処理手段と、すべての前記オブジェクトの前記仮想空間内における位置及び速度を管理するとともに、前記複数のデータ処理手段に、前記オブジェクトの位置を表す位置データ及び速度を表す速度データをブロードキャストする制御手段と、を有する装置又はシステムにおいて実行される方法であって、前記制御手段が、すべてのオブジェクトの前記位置データ及び前記速度データを、オブジェクトが属するクラスタを表すクラスタデータとともにすべてのデータ処理手段にブロードキャストする段階と、前記複数のデータ処理手段の各々が、自分の管理するオブジェクトについての位置データ及び速度データを、前記クラスタデータに基づいて取り込み、取り込んだ位置データ及び速度データから、新しい位置データ及び速度データを生成する段階と、前記制御手段が、前記複数のデータ処理手段の各々から、各オブジェクトの新しい位置データ及び速度データを取り込むとともに、取り込んだ位置データを一つずつすべてのデータ処理手段にブロードキャストする段階と、前記複数のデータ処理手段の各々が、前記制御手段からブロードキャストされた新しい位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に当該新しい位置データで表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する段階と、をこの順序で実行する。
【００１０】
本発明のデータ処理システムは、所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行うシステムであって、前記仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成するとともに、生成した位置データを前記制御手段に送る手段と、前記制御手段から一つずつブロードキャストされる位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する手段と、を備えている。
【００１１】
本発明が提供するコンピュータプログラムは、所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行う、コンピュータ搭載の装置に於いて、前記コンピュータに以下の機能を形成させるためのコンピュータプログラムであり、本発明が提供する半導体デバイスは、所定の仮想空間内に分布する複数のオブジェクトの、前記仮想空間内における位置を表す位置データを管理する制御手段との間で双方向通信を行う、コンピュータ搭載の装置に組み込まれることにより、前記コンピュータに以下の機能を形成させる半導体デバイスである。
（１）前記仮想空間内に分布する複数のオブジェクトの少なくとも一つを管理して、当該オブジェクトについて、前記仮想空間内における位置を表す位置データを生成するとともに、生成した位置データを前記制御手段に送る手段、
（２）前記制御手段から一つずつブロードキャストされる位置データを取り込んで、自分の管理下にあるオブジェクトが分布する範囲内に、取り込んだ位置データで位置が表されるオブジェクトがあるか否かを判定し、範囲内にある場合に、当該オブジェクトが自分の管理下にあるオブジェクトと衝突する位置にあるか否かを判定する手段。
【００１２】
【発明の実施の形態】
以下に、本発明をデータ処理システムの一例となるマルチプロセッサシステムに適用した場合の実施の形態を説明する。
【００１３】
＜全体構成＞
図１は、マルチプロセッサシステムの構成例を示した図である。このマルチプロセッサシステム１は、データ処理及びデータ記録及び読み出しのための制御手段であるブロードキャストメモリコントローラ（以下、「ＢＣＭＣ（Ｂｒｏａｄｃａｓｔ　Ｍｅｍｏｒｙ　Ｃｏｎｔｒｏｌｌｅｒ）」という。）１０と、各々データ処理手段の一例となる複数のセルプロセッサ２０と、データ処理のための所要の機能を種々形成するための複数のＷＴＡ（Ｗｉｎｎｅｒ　Ｔａｋｅ　Ａｌｌ）・総和回路３０と、を含んで構成されている。
ＢＣＭＣ１０とすべてのセルプロセッサ２０とは、ブロードキャストチャネル（一斉送出可能な通信チャネル）により接続されている。
【００１４】
このマルチプロセッサシステム１は、各セルプロセッサ２０によるデータ処理結果の一例となる状態変数値をＢＣＭＣ１０で管理し、ＢＣＭＣ１０からすべてのセルプロセッサ２０の状態変数値を、参照用数値の一例としてブロードキャストにより送出するものである。これにより、各セルプロセッサ２０は、高速に他のセルプロセッサ２０において発生した状態変数値を参照可能とする。
【００１５】
ブロードキャストチャネルは、ＢＣＭＣ１０と複数のセルプロセッサ２０との間の伝送経路であって、アドレスの受け渡しに使用されるアドレスバスと、状態変数値などのデータの受け渡しに使用されるデータバスとを含んで構成される。アドレスには、個々のセルプロセッサ２０を特定するためのセルアドレスと、すべてのセルプロセッサ２０を対象とするブロードキャストアドレスとがある。
セルアドレスは、メモリ上のアドレス（物理アドレス又は論理アドレス）に対応しており、セルプロセッサ２０からの状態変数値は、常に、当該セルプロセッサ２０を示すセルアドレスに対応するアドレスに記憶されるようになっている。各セルプロセッサ２０には、各々を識別するための識別情報として、ＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が付されている。セルアドレスは、このＩＤにも対応するようになっている。これにより、状態変数値がどのセルプロセッサ２０から出力されたのかを、セルアドレスによって特定することができる。
【００１６】
ＷＴＡ・総和回路３０は、図１に示すように接続される。即ち、ＷＴＡ・総和回路３０は、セルプロセッサ２０側を一段目としてピラミッド状に接続される。一段目のＷＴＡ・総和回路３０の入力端には２つのセルプロセッサ２０が接続され、出力端は二段目のＷＴＡ・総和回路３０の入力端に接続される。
二段目以降は、入力端の各々に下位の段の２つのＷＴＡ・総和回路３０の出力端が接続され、出力端に上位の段のＷＴＡ・総和回路３０の入力端が接続される。最上段のＷＴＡ・総和回路３０は、入力端に下段の２つのＷＴＡ・総和回路３０の出力端が接続され、出力端はＢＣＭＣ１０に接続される。
【００１７】
なお、図示の接続形態の他に、ＷＴＡ・総和回路３０をカスケードに接続しても、本発明を実施することが可能である。この場合、一段目のＷＴＡ・総和回路３０の入力端には２つのセルプロセッサ２０を接続し、出力端を上位の段の入力端に接続する。二段目以降のＷＴＡ・総和回路３０の入力端には、下位の段のＷＴＡ・総和回路３０の出力端とセルプロセッサ２０が接続され、出力端は上位の段の入力端に接続される。最上段のＷＴＡ・総和回路３０は、入力端に下位の段のＷＴＡ・総和回路３０の出力端とセルプロセッサ２０とが接続され、出力端はＢＣＭＣ１０に接続される。
【００１８】
次に、ＢＣＭＣ１０、セルプロセッサ２０、ＷＴＡ・総和回路３０のそれぞれについて詳細に説明する。
【００１９】
＜ＢＣＭＣ＞
ＢＣＭＣ１０は、ブロードキャストチャネルによりすべてのセルプロセッサ２０にデータをブロードキャストするとともに、各セルプロセッサ２０からの状態変数値を取り込んで保持する。図２にＢＣＭＣ１０の構成例を示す。
ＢＣＭＣ１０は、マルチプロセッサシステム１全体の動作を制御するＣＰＵコア１０１と、ＳＲＡＭ（Ｓｔａｔｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）などの書き換え可能なメインメモリ１０２と、ＤＭＡＣ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌｌｅｒ）１０３とがバスＢ１で接続されて構成される。ＣＰＵコア１０１は、メインメモリ１０２と協働し、所定のコンピュータプログラムを読み込んで実行することにより、本発明の特徴的なデータ処理を行うための機能を形成するコンピュータ搭載の半導体デバイスである。メインメモリ１０２は、システム全体の共有メモリとして使用されるようになっている。
バスＢ１には、最上段のＷＴＡ・総和回路３０の出力端及びハードディスクや可搬性メディア等の外部メモリも接続される。
【００２０】
ＣＰＵコア１０１は、起動時に上記の外部メモリから起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、データ処理に必要となる種々のデータを上記の外部メモリから読み出し、これをメインメモリ１０２に展開する。メインメモリ１０２には、各セルプロセッサ２０の状態変数値などのデータも記憶されるようにする。状態変数値は、当該状態変数値を算出したセルプロセッサ２０のセルアドレスに応じたメインメモリ１０２のアドレスに記憶される。
ＣＰＵコア１０１は、また、メインメモリ１０２から読み出したデータに基づいて、各セルプロセッサ２０に対してブロードキャストするブロードキャストデータを生成する。ブロードキャストデータは、例えば、状態変数値と当該状態変数値を算出したセルプロセッサ２０を示すセルアドレスとの組からなるペア（組）データである。ペアデータは、１組又は複数組生成される。
【００２１】
ＤＭＡＣ１０３は、メインメモリ１０２と各セルプロセッサ２０との間のダイレクトメモリアクセス転送制御を行う半導体デバイスである。例えば、各セルプロセッサ２０に対しては、ブロードキャストチャネルを介して、ブロードキャストデータをブロードキャストする。また、各セルプロセッサ２０のデータ処理結果を個別に取得して、メインメモリ１０２に書き込む。
【００２２】
＜セルプロセッサ＞
各セルプロセッサ２０は、ブロードキャストデータの中から必要となるデータを取捨選択してデータ処理を行い、データ処理の終了時に、その旨をＷＴＡ・総和回路３０へ報告する。データ処理結果である状態変数値を、ＢＣＭＣ１０からの指示により、ＢＣＭＣ１０へ送出する。各セルプロセッサ２０間は、図示しない共有メモリを介してリング接続される。各セルプロセッサ２０は、データ処理を同期的なクロックで行ってもよく、各々異なるクロックで行ってもよい。図３にセルプロセッサ２０の構成例を示す。
セルプロセッサ２０は、セルＣＰＵ２０１と、入力バッファ２０２と、出力バッファ２０３と、ＷＴＡバッファ２０４と、プログラムコントローラ２０５と、命令メモリ２０６と、データメモリ２０７と、を含んで構成される。
【００２３】
セルＣＰＵ２０１は、プログラマブルな浮動小数点演算器を備えたプロセッサであり、セルプロセッサ２０内の動作を制御して、データ処理を行うものである。セルＣＰＵ２０１は、ＢＣＭＣ１０からブロードキャストされたブロードキャストデータを入力バッファ２０２を介して取得し、ペアデータのセルアドレスにより自己が行うべき処理に必要なデータか否かを判断し、必要であればデータメモリ２０７の対応するアドレスに状態変数値を書き込む。また、データメモリ２０７から状態変数値を読み出してデータ処理を行い、データ処理結果を出力バッファ２０３に書き込み、ＷＴＡ・総和回路３０にデータ処理の終了を示すデータを送る。
【００２４】
入力バッファ２０２は、ＢＣＭＣ１０からブロードキャストされたブロードキャストデータを保持するものである。保持されたブロードキャストデータは、セルＣＰＵ２０１からの要求により、セルＣＰＵ２０１へ送られる。
出力バッファ２０３は、セルＣＰＵ２０１の状態変数値を保持するものである。保持された状態変数値は、ＢＣＭＣ１０からの要求により、ＢＣＭＣ１０へ送信される。
入力バッファ２０２及び出力バッファ２０３は、この他に制御用のデータ等の送受を行ってもよい。
ＷＴＡバッファ２０４は、セルＣＰＵ２０１によるデータ処理の終了時に、セルＣＰＵ２０１からデータ処理の終了を示すデータを受信して、これをＷＴＡ・総和回路３０へ送信することにより、データ処理の終了をＷＴＡ・総和回路３０に報告するものである。データ処理の終了を示す終了データには、例えば、自セルプロセッサ２０のＩＤと、出力バッファ２０３に保存された状態変数値がＢＣＭＣ１０へ読み取られるときの優先度を決める優先度データとが含まれる。
【００２５】
プログラムコントローラ２０５は、セルプロセッサ２０の動作を規定するプログラムをＢＣＭＣ１０から取り込むものである。セルプロセッサ２０の動作を規定するプログラムには、セルプロセッサ２０で実行されるデータ処理のためのプログラムや、当該セルプロセッサ２０で処理に必要なデータを決めるデータ選択プログラム、処理結果がＢＣＭＣ１０へ読み取られるときの優先度を決める優先度決定プログラムなどがある。
命令メモリ２０６は、プログラムコントローラ２０５により取り込んだプログラムを保存するものである。保存したプログラムは、必要に応じてセルＣＰＵ２０１に読み込まれる。
【００２６】
データメモリ２０７は、セルプロセッサ２０において処理されるデータを保存するものである。セルＣＰＵ２０１により必要と判断されたブロードキャストデータが書き込まれる。ブロードキャストデータは、セルアドレスに応じたアドレスに保存される。
また、本実施形態ではデータメモリ２０７の一部は共有メモリを介して隣接するセルプロセッサ２０に繋がっており、１サイクル毎に隣接するセルプロセッサ２０とデータの送受が可能となっている。
【００２７】
＜ＷＴＡ・総和回路＞
複数のＷＴＡ・総和回路３０は、各セルプロセッサ２０から送られるデータ処理の終了を示すデータにより、ＢＣＭＣ１０がセルプロセッサ２０から状態変数値を取り込む順序を決めてＢＣＭＣ１０へ報告する。
図４にＷＴＡ・総和回路３０の構成例を示す。
各ＷＴＡ・総和回路３０は、２つの入力レジスタＡ、Ｂ（以下、第１入力レジスタ３０１、第２入力レジスタ３０２）と、切換器３０３と、比較器３０４と、加算器３０５と、出力レジスタ３０６と、を含んで構成される。
【００２８】
第１入力レジスタ３０１及び第２入力レジスタ３０２は、それぞれ整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタには、例えばセルプロセッサ２０から送られるデータ処理の終了を示す終了データのうち、ＩＤが書き込まれ、浮動小数点レジスタには、例えば優先度データが書き込まれる。
切換器３０３は、比較器３０４及び加算器３０５のいずれか一方を活性化する。具体的には、動作モードに従って一方のみを使用可能とする。動作モードは、例えばＢＣＭＣ１０からの指示により決められる。動作モードについては後述する。
比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値の比較を行い、大きい方（又は小さい方）の値と、それに付随する整数とを、出力レジスタ３０６へ書き込む。
加算器３０５は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値の和を算出し、算出結果を出力レジスタ３０６へ書き込む。
出力レジスタ３０６は、第１入力レジスタ３０１及び第２入力レジスタ３０２とほぼ同じに構成される。つまり、整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタにはＩＤが書き込まれ、浮動小数点レジスタには優先度データが書き込まれるようになっている。
【００２９】
ＷＴＡ・総和回路３０は、以下に説明する３つの動作モードをもつ。
【００３０】
・最大値（ＷＴＡ）モード：
切換器３０３により、比較器３０４が活性化される。比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ、Ｂの比較を行い、大きい方（又は小さい方）の値と、それに付随する整数値を出力レジスタ３０６に書き込む。出力レジスタ３０６への書き込みが終了すると、第１入力レジスタ３０１及び第２入力レジスタ３０２をクリアする。出力レジスタ３０６の内容は、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込まれる。このとき、書き込み先の入力レジスタがクリアされていないときは、書き込みがストールして、そのサイクルでは書き込みを行わず、次のサイクルで書き込むようにする。
【００３１】
・加算モード：
切換器３０３により、加算器３０５が活性化される。加算器３０５により、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ、Ｂの和を算出し、算出結果を出力レジスタ３０６に書き込む。出力レジスタ３０６の内容は、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込まれる。
【００３２】
・近似ソートモード：
切換器３０３により、比較器３０４が活性化される。比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ、Ｂの比較を行い、大きい方（又は小さい方）の値と、それに付随する整数値とを出力レジスタ３０６に書き込む。
その後、出力レジスタ３０６に書き込まれた値を保持していた入力レジスタのみをクリアし、出力レジスタ３０６の内容を、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込む。書き込み先の入力レジスタがクリアされていない場合は、書き込みがストールし、そのサイクルでは書き込みを行わない。ただし、下位の段のＷＴＡ・総和回路３０の出力レジスタ３０６からの書き込み動作は行われる。
近似ソートモードにより、ＢＣＭＣ１０がＷＴＡ・総和回路３０の最上段の出力レジスタ３０６から受け取るデータが、浮動小数点が大きい順或いは小さい順にソートされた（並び替えられた）ものとなる。
【００３３】
なお、各モードに入る前には、すべてのＷＴＡ・総和回路３０の第１入力レジスタ３０１、第２入力レジスタ３０２及び出力レジスタ３０６がクリアされる。
【００３４】
各モードを切替えて使用することにより、複数のＷＴＡ・総和回路３０全体として、上記のソートのための機構（ソート機構）及び／又は総和回路として機能する。つまり、近似ソートモードで動作するときは、ソート機構を実現するものとなり、加算モードで動作するときは、総和回路を実現するものとなる。
【００３５】
最大値モード、近似ソートモードで動作するＷＴＡ・総和回路３０は、次に示すようにして実現してもよい。
すなわち、セルプロセッサ２０と同数の入力レジスタと、切換器と、比較器と、加算器と、出力レジスタとを含んでＷＴＡ・総和回路が構成される。
入力レジスタがセルプロセッサ２０の数と同じだけ用意されており、それぞれが、第１レジスタ３０１、第２レジスタ３０２と同様に、整数レジスタ及び浮動小数点レジスタを備える。比較器は、すべての入力レジスタの浮動小数点レジスタが保持する浮動小数点値の比較を行う。加算器は、すべての入力レジスタの浮動小数点レジスタが保持する浮動小数点値の和を算出する。
出力レジスタは、図４のＷＴＡ・総和回路３０の出力レジスタと同様である。
【００３６】
比較器により、各入力レジスタの浮動小数点レジスタが保持する優先度データを比較して、優先度の高い順に、付随するＩＤを順次出力レジスタに書き込む。これにより、ＩＤを、優先度の高い順序でＢＣＭＣ１０へ送ることができる。
加算器により、各浮動小数点レジスタが保持するデータを加算して、その総和を求めることができる。
このようなＷＴＡ・総和回路は、図１に示すような接続形態をとらなくとも、一つで、本発明におけるソート機構、総和回路として機能する。
【００３７】
＜データ処理方法＞
本実施形態におけるマルチプロセッサシステム１は、以下のように動作することにより、所要のデータ処理を実行する。図５は、このマルチプロセッサシステム１において実行される処理の流れを示すフローチャートである。
【００３８】
ＢＣＭＣ１０のメインメモリ１０２には、すべてのセルプロセッサ２０の状態変数値の初期値が予め記憶される。
ＢＣＭＣ１０は、このセルプロセッサ２０の状態変数値とセルプロセッサ２０を示すセルアドレスとからなるペアデータにより、ブロードキャストデータを作成する（ステップＳ１０１）。そして、作成したブロードキャストデータを、すべてのセルプロセッサ２０へブロードキャストする（ステップＳ１０２）。
各セルプロセッサ２０は、ブロードキャストデータを、入力バッファ２０２に取り込む。セルＣＰＵ２０１は、命令メモリ２０６に記憶されたデータ選択プログラムにより、入力バッファ２０２が保持するブロードキャストデータのセルアドレスを調べて、自セルプロセッサ２０が行うデータ処理に要する状態変数値があるか否かを確認する（ステップＳ１０３）。自らが行うデータ処理に要する状態変数値が無い場合、セルプロセッサ２０は、処理動作を終了する（ステップＳ１０３：無）。自らが行うデータ処理に要する状態変数値が有る場合は（ステップＳ１０３：有）、該当する状態変数値を、この状態変数値とペアデータを組むセルアドレスに対応するデータメモリ２０７上のアドレスへ上書きする（ステップＳ１０４）。
以上により、ＢＣＭＣ１０から各セルプロセッサ２０へのデータのブロードキャストが終了する。
【００３９】
ブロードキャストが終了すると、各セルプロセッサ２０は、命令メモリ２０６に記憶されたデータ処理のプログラムにより、データメモリ２０７に記録された状態変数値をデータ処理して新たな状態変数値を生成する。新たな状態変数値は、データメモリ２０７に書き込まれるとともに、出力バッファ２０３にも書き込まれる（ステップＳ１０５）。新たな状態変数値は、データメモリ２０７上の、自らのセルアドレスに対応するアドレスに、上書きされる。
データ処理が終了すると、セルＣＰＵ２０１は、ＷＴＡバッファ２０４を介して１段目のＷＴＡ・総和回路３０の入力レジスタへＩＤと優先度データとを含む終了データを送信して、データ処理の終了を報告する（ステップＳ１０６）。優先度データは、データ処理の前又は後に、所定の優先度決定プログラムによって生成される。
【００４０】
１段目のＷＴＡ・総和回路３０は、各セルプロセッサ２０から送られる終了データのうち、ＩＤを入力レジスタの整数レジスタへ、優先度データを浮動小数点レジスタでそれぞれ保持する。ここで、ＷＴＡ・総和回路３０は近似ソートモードで動作する。そのために、切換器３０３は、比較器３０４を活性化する。
ＷＴＡ・総和回路３０の第１入力レジスタ３０１及び第２入力レジスタの整数レジスタは、各々異なるセルプロセッサ２０から送られたＩＤを保持する。また、各々の浮動小数点レジスタは、ＩＤに付随した優先度データを保持する。比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の浮動小数点レジスタからそれぞれ優先度データを読み出し、優先度を比較する。比較の結果、優先度が高い方の優先度データ及びそれに付随したＩＤを、出力レジスタ３０６の浮動小数点レジスタ及び整数レジスタへ書き込む。出力レジスタ３０６へ内容が書き込まれた入力レジスタは、その内容がクリアされる。出力レジスタ３０６へ書き込まれたＩＤ及び優先度データは、上位の段のＷＴＡ・総和回路３０の入力レジスタへ書き込まれる。
このような処理を各段のＷＴＡ・総和回路３０で行う。最上段のＷＴＡ・総和回路３０は、出力レジスタ３０６の整数レジスタに書き込まれたＩＤをＢＣＭＣ１０へ送る。
以上のような処理により、ＷＴＡ・総和回路３０全体としては、ＩＤを、優先度の高い順序でＢＣＭＣ１０へ送ることとなる（ステップＳ１０７）。
【００４１】
ＢＣＭＣ１０は、ＷＴＡ・総和回路３０から送られるＩＤに該当するセルプロセッサ２０の出力バッファ２０３から、データ処理された状態変数値を取得する。取得した状態変数値は、ＢＣＭＣ１０内のメインメモリ１０２上の、処理を行ったセルプロセッサ２０を示すセルアドレスに対応するアドレスに上書きされる（ステップＳ１０８）。
以上で、状態変数値の処理動作の１サイクルが終了する。
【００４２】
ＢＣＭＣ１０が、各セルプロセッサ２０からデータ処理結果を取得し、これによりブロードキャストデータを生成する。
各セルプロセッサ２０は、ブロードキャストデータから自分に必要となるデータのみを取捨選択してデータ処理を行う。このブロードキャストデータを用いてデータ処理を行うことにより、他のすべてのセルプロセッサ２０により処理されたデータを利用する処理が可能となる。また、ブロードキャストデータを、各セルプロセッサ２０からのデータ処理結果とこのデータ処理結果を生成したセルプロセッサ２０を示すセルアドレスとからなるペアデータにより作成することにより、特定のセルプロセッサ２０のデータ処理結果のみを用いる処理が可能となる。さらに、隣接するセルプロセッサ２０間は共有メモリを介して接続されているので、従来と同様に、隣接するセルプロセッサ２０間の処理も可能である。
各セルプロセッサ２０が、メインメモリ１０２に、直接、自セルプロセッサ２０で必要とするデータを取り込みに行くことがなく、ブロードキャストデータから必要となるデータを選択して、各セルプロセッサ２０内にデータを保持して処理を行うので、データの競合が起こらずに高速処理が可能となる。
【００４３】
［実施例１］
次に、上記のマルチプロセッサシステム１の実施例を具体的に説明する。
この実施例では、あるセルプロセッサ２０とそれに隣接する他のセルプロセッサ２０により処理されたデータのみを使用する場合の例を、図６を参照して説明する。
図６において、「○」はセルプロセッサを表しており、網掛された「○」がデータ処理を行うセルプロセッサ、「●」が必要とされるデータを保持するセルプロセッサである。
ｎ×ｎ（ｎは２以上の自然数）の格子の各格子点についてのデータ（格子点データ）に対して、次のようなフィルタ計算を連続的に実行する場合を考える。
Ｘｉ，ｊ＝（Ｘｉ−１，ｊ＋Ｘｉ＋１，ｊ＋Ｘｉ，ｊ−１＋Ｘｉ，ｊ＋１）／４
ｉ：格子点の行番号、ｊ：格子点の列番号
【００４４】
ＢＣＭＣ１０は、格子点データを行又は列でグループ化したブロードキャストデータとして、ｎ個のセルプロセッサ２０にブロードキャストする。
図８は、格子点データをグループ化した例示図であり、「○」で示される格子点データを５個ずつグループ化してある。一つのグループ化した格子点データが、一つのセルプロセッサ２０で処理される。
セルプロセッサ２０では、ブロードキャストデータから必要とするグループ化された格子点データをデータメモリ２０７に保存する。データメモリ２０７から、格子点データを順次読み出してデータ処理する。
【００４５】
共有メモリを介して接続されるセルプロセッサ２０との間では、共有メモリを用いてデータ転送を行う。共有メモリへのデータの書込動作を１サイクルとすると、セルプロセッサ２０間のグループ化されたデータの転送は、２ｎサイクルで行うことができる。
各セルプロセッサ２０を同期的に動作させ、共有メモリへの書き込みと演算とをパイプライン処理のように同時に実行することにより、セルプロセッサ２０間の通信と演算を同時に行うことができる。
【００４６】
次のブロードキャストデータは、グループ化された格子点データのデータ処理が終了する度に、ＢＣＭＣ１０によりブロードキャストされる。セルプロセッサ２０は、ブロードキャストされるデータのｉ、ｊにより、必要なデータか否かを判断する。
ブロードキャストデータをグループ化することにより行又は列方向のデータを処理可能であり、共有データを介してデータ転送することにより列又は行方向のデータ処理が可能となる。
【００４７】
［実施例２］
この実施例では、すべてのセルプロセッサ２０のうち、一部のセルプロセッサ２０により処理されたデータのみを使用する場合の例を、図７を参照して説明する。図７において、「○」はセルプロセッサを表しており、網掛された「○」がデータ処理を行うセルプロセッサ、「●」が必要とされるデータを保持するセルプロセッサである。このようなマルチプロセッサシステムは、ホップフィールドの連想記憶器の実現に有用である。
各セルプロセッサ２０は、データ処理結果である状態変数値とその状態変数値の重要度を表す重み係数とを保持するものとする。また、セルプロセッサ２０には、番号が付されており、ＢＣＭＣ１０は、番号順にセルプロセッサ２０から状態変数値を取り込む。
ＢＣＭＣ１０は、すべてのセルプロセッサ２０から取り込んだ状態変数値をブロードキャストデータとしてブロードキャストする。各セルプロセッサ２０は、ブロードキャストデータから必要な状態変数値のみを選択して重み係数との積和演算を行い、状態変数値を更新する。必要な状態変数値が、ブロードキャストデータに含まれるすべての状態変数値の場合、すべてのプロセッサにより処理されたデータを使用する処理に該当することとなる。
【００４８】
［実施例３］
次に、パターンマッチング計算処理の例を説明する。
ここでは、入力データの特徴に最も類似するデータを保持するセルプロセッサ２０を特定する処理を行う。この処理は、以下のようにして行う。
各セルプロセッサ２０は、予め比較対象となるテンプレートデータを保持する。
ＢＣＭＣ１０は、入力データをすべてのセルプロセッサ２０にブロードキャストする。各セルプロセッサ２０は、自らが保持するテンプレートデータの特徴と入力データの特徴との差分値を算出する。差分値は、ＩＤとともにＷＴＡ・総和回路３０へ送られる。
ＷＴＡ・総和回路３０は、最大値モードで動作する。入力レジスタの整数レジスタはＩＤを保持し、浮動小数点レジスタは差分値を保持する。差分値を比較器３０４により比較して、小さい方の差分値とそれに付随するＩＤを出力レジスタ３０６へ送る。これをＷＴＡ・総和回路３０全体で行い、最も小さい差分値とそれに付随するＩＤを求める。このＩＤ及び差分値をＢＣＭＣ１０へ送る。
ＢＣＭＣ１０は、ＩＤによりセルプロセッサ２０を特定する。これにより、入力データの特徴に最も類似するテンプレートデータ及び入力データの特徴と最も類似するテンプレートデータとの差分値も検出できる。
【００４９】
［実施例４］
次に、画像処理等の際に用いられる、動くオブジェクトの衝突判定アルゴリズムの処理例について説明する。「衝突判定アルゴリズム」は、ある空間内に存在するｎ個のオブジェクト（物体）が互いに他のオブジェクトと衝突するかどうか、衝突する場合はどの程度の強度かを判定するアルゴリズムである。
ｎ個のオブジェクトの空間分布には偏りがあり、ｍ個のクラスタに分かれているとする。ここでは、例えば、１個のオブジェクトが、他の（ｎ−１）個のオブジェクトのいずれと最も強く衝突するかについて判定するものとする。
図９は、このような空間内のオブジェクトの例示図であり、「○」で表されるオブジェクトを矩形で囲んで１クラスタとしており、図９ではオブジェクトが５個のクラスタに分けられている。オブジェクトを示すデータは、ＢＣＭＣ１０からブロードキャストされ、クラスタ毎にセルプロセッサ２０に取り込まれる。セルプロセッサ２０は、取り込んだ１つのクラスタに含まれるオブジェクトに関する空間内での位置、運動についての処理を行う。
図９の例では、セルプロセッサＡ〜Ｅにより５個のクラスタに分けられたオブジェクトに関する処理が行われる。
図１０により、衝突判定アルゴリズムの処理の流れを説明する。
【００５０】
ＢＣＭＣ１０は、オブジェクトの位置や速度のデータを含むオブジェクトデータと、当該オブジェクトが属するクラスタを示すクラスタデータとを含むブロードキャストデータを生成し、すべてのセルプロセッサ２０にブロードキャストする（ステップＳ２０１）。各セルプロセッサ２０は、ブロードキャストデータから、オブジェクトデータをクラスタデータに基づいて取捨選択して取り込む。
オブジェクトデータを取り込んだセルプロセッサ２０は、オブジェクトの現在の位置データと速度データとから、単位時間後の新しい位置データを算出する。新しい位置データから、新しいバウンディングボックスの値を得る（ステップＳ２０２）。バウンディングボックスとは、例えば、図９における、オブジェクトを囲む矩形である。バウンディングボックスの値とは、例えば、バウンディングボックスの頂点の座標である。
ＢＣＭＣ１０は、オブジェクトの新しい位置データを各セルプロセッサ２０から取り込んで位置データを更新する（ステップＳ２０３）。
【００５１】
次に、ＢＣＭＣ１０は、取得した新しい位置データ等を含むオブジェクトデータを一つずつ全セルプロセッサ２０にブロードキャストする（ステップＳ２０４）。つまり、衝突判定の対象となる１個のオブジェクト（以下、「判定対象オブジェクト」という）の位置を表す位置データを全セルプロセッサ２０に送る。
各セルプロセッサ２０では、まず、ステップＳ２０２で計算したバウンディングボックスを用いて、判定対象オブジェクトが衝突する可能性があるか否かを判断する（ステップＳ２０５）。具体的には、判定対象オブジェクトの位置がバウンディングボックス内にあるか否かを判断する。
衝突する可能性がある場合、つまり、判定対象オブジェクトがバウンディングボックス内にある場合は（ステップＳ２０５：Ｙ）、そのセルプロセッサ２０で処理される、バウンディングボックス内の各オブジェクトとの距離計算を順次行い（ステップＳ２０６）、衝突の判定を行う（ステップＳ２０７）。判定対象オブジェクトがバウンディングボックス内のいずれかのオブジェクトと衝突する場合には（ステップＳ２０７：Ｙ）、その衝突による衝撃の強さを定量的に表すデータ（衝突強度データ）、衝突による判定対象オブジェクトへの影響を表すデータ等を含む衝突データを生成する（ステップＳ２０８）。また、セルプロセッサ２０は、生成した衝突データのうち衝突強度データを、そのＩＤとともにＷＴＡ・総和回路３０に送る（ステップＳ２０９）。
【００５２】
判定対象オブジェクトがバウンディングボックス外にある場合（ステップＳ２０５：Ｎ）、または距離計算の結果、衝突しないと判定した場合（ステップＳ２０７：Ｎ）、各セルプロセッサ２０は、ＷＴＡ・総和回路３０に、例えば「−１．０」を、衝突強度データとして送る（ステップＳ２１０）。
ＷＴＡ・総和回路３０は最大値モードで動作する。ＷＴＡ・総和回路３０は、セルプロセッサ２０から送られる衝突強度データを比較して、最も衝突による衝撃の強さが大きいことを表す衝突強度データを検出して（ステップＳ２１１）、検出した衝突強度データを生成したセルプロセッサ２０を特定する。そして特定したセルプロセッサ２０を表すＩＤをＢＣＭＣ１０へ送る。
ＢＣＭＣ１０は、ＷＴＡ・総和回路３０の最上段から送られたＩＤにより表されるセルプロセッサ２０から衝突データを取得する（ステップＳ２１２）。ステップＳ２０４以降の処理をすべてのオブジェクトについて行うことにより、空間内のすべてのオブジェクト間の衝突判定が行われる。
【００５３】
［実施例５］
次に、ＷＴＡ・総和回路３０の加算器３０５を用いる場合の例を説明する。
各セルプロセッサ２０は、データ処理結果をＷＴＡ・総和回路３０へ入力する。ＷＴＡ・総和回路３０では、加算器３０５によりデータ処理結果を加算し、最終的に、すべてのセルプロセッサ２０のデータ処理結果の総和を得る。このようにして、ＷＴＡ・総和回路３０により高速にデータ処理結果の総和を得ることが可能である。
データ処理結果の総和は、ＢＣＭＣ１０に送られて、各セルプロセッサ２０にブロードキャストにより、高速に送信可能である。データ処理結果の総和は、例えば、ニューロなどの最適化計算において、正規化計算に用いられる。
【００５４】
以上の説明において、ＢＣＭＣ１０とＷＴＡ・総和回路３０とは各々独立したものとしたが、ＢＣＭＣ１０にＷＴＡ・総和回路３０を組み込んだ一つのブロックとして、コントローラを構成してもよい。
【００５５】
なお、以上の説明は、データ処理手段がセルプロセッサ２０であり、制御手段がコントローラ（ＢＣＭＣ１０）である場合の例であるが、本発明の構成要素は、このような例に限定されるものではない。
例えば複数のデータ処理端末を広域ネットワークを介して双方向通信が可能な形態で接続し、そのうちの一つ又は複数のデータ処理端末を制御手段、他の複数のデータ処理端末をデータ処理手段として動作させ、制御手段に、複数のデータ処理手段の一部又は全部より受け取ったデータ処理結果及び少なくとも一つのデータ処理手段によるデータ処理に用いるデータを含むブロードキャストデータをブロードキャストする機能をもたせ、複数のデータ処理手段の各々に、制御手段によりブロードキャストされたブロードキャストデータから自らが行うデータ処理に必要なデータのみを取捨選択してデータ処理を行うとともに、その処理結果を制御手段に送出させる機能をもたせるようにしてもよい。
【００５６】
また、複数のデータ処理手段として、予め定めた識別情報（例えば上述した識別データ）によりそれを特定できる汎用のデータ処理端末を用い、これらの汎用のデータ処理端末と双方向通信可能なサーバ、あるいはＣＰＵ及びメモリを内蔵した半導体デバイスを搭載した装置をのみをもってデータ処理システムを構成するようにしてもよい。
この場合のサーバ又は装置は、その内部のＣＰＵが所定のコンピュータプログラムを読み込んで実行することにより、サーバ本体又は装置内に、少なくとも一つのデータ処理手段としてのデータ処理端末を特定するとともに特定したデータ処理端末の識別情報とそのデータ処理端末宛のデータ処理用データとを含むブロードキャストデータを生成する機能と、複数のデータ処理端末の一部又は全部から当該データ処理端末で行われたデータの処理結果を取得する機能と、受け取った処理結果をブロードキャストデータに含め、当該ブロードキャストデータを複数のデータ処理端末の各々にブロードキャストする機能とを形成するものである。
【００５７】
【発明の効果】
以上のような本発明により、複数のデータ処理手段を用いる場合のデータ処理手段間のデータ処理を効率的に行えるようになる。
【図面の簡単な説明】
【図１】本発明を適用したマルチプロセッサシステムの構成例を示した図。
【図２】ＢＣＭＣの構成図。
【図３】セルプロセッサの構成図。
【図４】ＷＴＡ・総和回路の構成図。
【図５】本実施形態によるマルチプロセッサシステムの処理の流れを示すフローチャート。
【図６】隣接するプロセッサのデータ処理結果を使用する概念図。
【図７】一部のプロセッサのデータ処理結果を使用する概念図。
【図８】格子点データをグループ化した例示図。
【図９】オブジェクトをクラスタに分けた場合の例示図。
【図１０】衝突判定アルゴリズムの処理の流れを示すフローチャート。
【符号の説明】
１０　ＢＣＭＣ
１０１　ＣＰＵコア
１０２　メインメモリ
１０３　ＤＭＡＣ
２０　セルプロセッサ
２０１　セルＣＰＵ
２０２　入力バッファ
２０３　出力バッファ
２０４　ＷＴＡバッファ
２０５　プログラムコントローラ
２０６　命令メモリ
２０７　データメモリ
３０　ＷＴＡ・総和回路
３０１　第１入力レジスタ
３０２　第２入力レジスタ
３０３　切換器
３０４　比較器
３０５　加算器
３０６　出力レジスタ
【図１】
2004005572.tif 000003
【図２】
2004005572.tif 000004
【図３】
2004005572.tif 000005
【図４】
2004005572.tif 000006
【図５】
2004005572.tif 000007
【図６】
2004005572.tif 000008
【図７】
2004005572.tif 000009
【図８】
2004005572.tif 000010
【図９】
2004005572.tif 000011
【図１０】
2004005572.tif 000012