JP3872034B2 - Multiprocessor system, data processing method, data processing system, computer program, semiconductor device - Google Patents
Multiprocessor system, data processing method, data processing system, computer program, semiconductor device Download PDFInfo
- Publication number
- JP3872034B2 JP3872034B2 JP2003106871A JP2003106871A JP3872034B2 JP 3872034 B2 JP3872034 B2 JP 3872034B2 JP 2003106871 A JP2003106871 A JP 2003106871A JP 2003106871 A JP2003106871 A JP 2003106871A JP 3872034 B2 JP3872034 B2 JP 3872034B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- data processing
- processing means
- collision
- broadcast
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明は、複数のデータ処理手段によりデータ処理を行うデータ処理システム、例えばマルチプロセッサシステム及びデータ処理方法に関する。
【0002】
【発明の背景】
高度情報化社会が進み、コンピュータ等のデータ処理装置によるデータ処理量は増大する傾向にある。また、データ処理の内容も複雑化、高度化している。従来、CPU(Central Processing Unit)などのプロセッサの高性能化や、複数のプロセッサによるマルチプロセッサ化により、データ処理装置全体の処理能力の向上を図っている。
しかし、近年、要求されるデータ処理能力の増大のスピードは、プロセッサの高性能化のスピードを凌駕するまでになっている。プロセッサの高性能化は、その開発期間が長いこともあり一朝一夕に行えるものではない。
一方、例えばマルチプロセッサによるデータ処理能力は、使用するプロセッサの数や、その処理方法により決まり、個々のプロセッサの高性能化への依存度が小さい。そのために、データ処理装置の処理能力を向上させるための有効な手段の一つとなっている。
【0003】
マルチプロセッサによるデータ処理方法を、一つのプロセッサがデータ処理時に必要とするデータの範囲により分類すると、以下のようになる。
(1)データ処理を行うプロセッサが、隣接して接続されるプロセッサにより処理されたデータのみを使用する
このような制御は、セル・オートマトン、画像フィルタ、布や波の運動の計算、曲面からのポリゴン生成の計算等に向いている。
(2)データ処理を行うプロセッサが、複数のプロセッサのうちの一部のプロセッサにより処理されたデータのみを使用する
このような制御は、多対多の衝突判定等に向いている。
【0004】
上記の(1)の場合のデータ処理は、従来の並列プロセッサによって、効率よく実現可能である。しかし、(2)のデータ処理は、並列プロセッサ間の通信速度によりシステム全体の処理速度が制限されてしまい、各プロセッサの処理速度を十分に発揮できない。例えば、すべてのプロセッサ間をクロスバー接続することにより、(2)のデータ処理を高速に行うことも可能であるが、この場合、必要なハードウェアが膨大になり、現実的ではない。
【0005】
本発明の課題は、例えば上記の(2)のデータ処理を従来よりも効率よく行うことのできるデータ処理システム及びデータ処理方法を提供することにある。
【0006】
【課題を解決するための手段】
上記課題を解決するため、本発明のマルチプロセッサシステムは、それぞれが、所定の仮想空間内に分布する複数のオブジェクトを少なくとも一つ管理しており、自分が管理するオブジェクトの前記仮想空間内における位置を表す位置データを生成する複数のプロセッサと、すべてのプロセッサから前記位置データを取得可能であり、取得した位置データをすべてのプロセッサにブロードキャストするコントローラと、を備えており、前記複数のプロセッサの各々は、前記コントローラからブロードキャストされた位置データにより、この位置データで位置が表されるオブジェクトが自分が管理するオブジェクトが分布する範囲内にあるか否かを判定して、前記範囲内にある場合にのみ、当該オブジェクトが自分が管理するオブジェクトと衝突する位置にあるか否かを判定するようになっている。
前記複数のプロセッサの各々は、例えば二以上の前記オブジェクトを管理する。
【0007】
前記複数のプロセッサは、自分の管理するオブジェクトについて、前記仮想空間内における速度を表す速度データを生成するようになっていてもよい。この場合、前記コントローラが、すべての前記プロセッサから前記位置データ及び前記速度データを取得可能であり、取得した位置データ及び速度データを一組ずつすべてのプロセッサにブロードキャストすれば、前記プロセッサは、ブロードキャストされた位置データで位置が表されるオブジェクトが自分の管理下にあるオブジェクトと衝突位置にある場合に、ブロードキャストされたオブジェクトの前記速度データにより、衝突による衝撃の強さを定量的に表す衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを生成することができるようになる。
また、前記複数のプロセッサに、各々を識別するための識別データを割り当て、前記衝突強度データを生成したプロセッサからは衝突強度データをそのプロセッサの識別データと共に取り込み、前記衝突強度データを生成していないプロセッサからは衝突強度データの値よりも小さい値をそのプロセッサの衝突強度データとして識別データと共に取り込んで、最も大きい衝突強度データを生成したプロセッサを特定し、特定したプロセッサの識別データを前記コントローラに送る最大値検出機構をさらに備えるようにしてもよい。これにより前記コントローラは、前記最大値検出機構から送られた識別データにより表されるプロセッサから、衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを取得することができるようになる。
【0008】
また、このようなマルチプロセッサシステムにおいて、前記プロセッサは、例えば、位置データがブロードキャストされたオブジェクトと自分の管理下にあるオブジェクトとの距離を算出することにより、当該オブジェクトが自分の管理下にあるオブジェクトと衝突位置にあるか否かを判定するようになっている。
【0009】
本発明のデータ処理方法は、所定の仮想空間内に分布しており複数のクラスタに分けられる複数のオブジェクトを、それぞれが異なる一つのクラスタ毎に管理する複数のデータ処理手段と、すべての前記オブジェクトの前記仮想空間内における位置を記憶するとともに、すべてのデータ処理手段に、前記オブジェクトの位置を表す位置データをブロードキャスト可能な制御手段と、を有する装置又はシステムにおいて実行される方法であって、前記制御手段が、すべてのオブジェクトの前記位置データを一つずつすべてのデータ処理手段にブロードキャストする第1段階と、前記複数のデータ処理手段の各々が、自分が管理するクラスタに属するオブジェクトが分布する範囲内に、前記第1段階で前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定する第2段階と、前記複数のデータ処理手段の各々が、前記第2段階で前記制御手段からブロードキャストされた位置データで表されるオブジェクトが前記範囲内にある場合にのみ、当該オブジェクトが、自分が管理するクラスタに属するオブジェクトと衝突する位置にあるか否かを判定する第3段階と、を含む。
【0010】
本発明のデータ処理システムは、各々を識別するための識別データが割り当てられており、各々が、所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つについて、前記仮想空間内における当該オブジェクトの位置を表す位置データを生成するとともに、当該オブジェクトに他のオブジェクトが衝突する際の衝撃の強さを定量的に表す衝突強度データを生成する複数のデータ処理手段と、前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から送信された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えている。前記複数のデータ処理手段の各々は、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定するものである。
このシステムは、例えば二以上の前記オブジェクトの位置データを生成する。
【0011】
本発明が提供するコンピュータプログラムは、各々を識別するための識別データが割り当てられており、各々が、所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つについて、前記仮想空間内における当該オブジェクトの位置を表す位置データを生成するとともに、当該オブジェクトに他のオブジェクトが衝突する際の衝撃の強さを定量的に表す衝突強度データを生成する複数のデータ処理手段と、前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から出力された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えたコンピュータ搭載の装置に於いて、前記コンピュータに、前記複数のデータ処理手段の各々が、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定する処理、を実行させるためのコンピュータプログラムである。
本発明が提供する半導体デバイスは、各々を識別するための識別データが割り当てられており、各々が、所定の仮想空間内に分布する複数のオブジェクトの少なくとも一つについて、前記仮想空間内における当該オブジェクトの位置を表す位置データを生成するとともに、当該オブジェクトに他のオブジェクトが衝突する際の衝撃の強さを定量的に表す衝突強度データを生成する複数のデータ処理手段と、前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から出力された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えたコンピュータ搭載の装置に組み込まれることにより、前記コンピュータに、前記複数のデータ処理手段の各々が、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定する処理、を実行させる半導体デバイスである。
【0012】
【発明の実施の形態】
以下に、本発明をデータ処理システムの一例となるマルチプロセッサシステムに適用した場合の実施の形態を説明する。
【0013】
<全体構成>
図1は、マルチプロセッサシステムの構成例を示した図である。このマルチプロセッサシステム1は、データ処理及びデータ記録及び読み出しのための制御手段であるブロードキャストメモリコントローラ(以下、「BCMC(Broadcast Memory Controller)」という。)10と、各々データ処理手段の一例となる複数のセルプロセッサ20と、データ処理のための所要の機能を種々形成するための複数のWTA(Winner Take All)・総和回路30と、を含んで構成されている。
BCMC10とすべてのセルプロセッサ20とは、ブロードキャストチャネル(一斉送出可能な通信チャネル)により接続されている。
【0014】
このマルチプロセッサシステム1は、各セルプロセッサ20によるデータ処理結果の一例となる状態変数値をBCMC10で管理し、BCMC10からすべてのセルプロセッサ20の状態変数値を、参照用数値の一例としてブロードキャストにより送出するものである。これにより、各セルプロセッサ20は、高速に他のセルプロセッサ20において発生した状態変数値を参照可能とする。
【0015】
ブロードキャストチャネルは、BCMC10と複数のセルプロセッサ20との間の伝送経路であって、アドレスの受け渡しに使用されるアドレスバスと、状態変数値などのデータの受け渡しに使用されるデータバスとを含んで構成される。アドレスには、個々のセルプロセッサ20を特定するためのセルアドレスと、すべてのセルプロセッサ20を対象とするブロードキャストアドレスとがある。
セルアドレスは、メモリ上のアドレス(物理アドレス又は論理アドレス)に対応しており、セルプロセッサ20からの状態変数値は、常に、当該セルプロセッサ20を示すセルアドレスに対応するアドレスに記憶されるようになっている。各セルプロセッサ20には、各々を識別するための識別情報として、ID(identification)が付されている。セルアドレスは、このIDにも対応するようになっている。これにより、状態変数値がどのセルプロセッサ20から出力されたのかを、セルアドレスによって特定することができる。
【0016】
WTA・総和回路30は、図1に示すように接続される。即ち、WTA・総和回路30は、セルプロセッサ20側を一段目としてピラミッド状に接続される。一段目のWTA・総和回路30の入力端には2つのセルプロセッサ20が接続され、出力端は二段目のWTA・総和回路30の入力端に接続される。
二段目以降は、入力端の各々に下位の段の2つのWTA・総和回路30の出力端が接続され、出力端に上位の段のWTA・総和回路30の入力端が接続される。最上段のWTA・総和回路30は、入力端に下段の2つのWTA・総和回路30の出力端が接続され、出力端はBCMC10に接続される。
【0017】
なお、図示の接続形態の他に、WTA・総和回路30をカスケードに接続しても、本発明を実施することが可能である。この場合、一段目のWTA・総和回路30の入力端には2つのセルプロセッサ20を接続し、出力端を上位の段の入力端に接続する。二段目以降のWTA・総和回路30の入力端には、下位の段のWTA・総和回路30の出力端とセルプロセッサ20が接続され、出力端は上位の段の入力端に接続される。最上段のWTA・総和回路30は、入力端に下位の段のWTA・総和回路30の出力端とセルプロセッサ20とが接続され、出力端はBCMC10に接続される。
【0018】
次に、BCMC10、セルプロセッサ20、WTA・総和回路30のそれぞれについて詳細に説明する。
【0019】
<BCMC>
BCMC10は、ブロードキャストチャネルによりすべてのセルプロセッサ20にデータをブロードキャストするとともに、各セルプロセッサ20からの状態変数値を取り込んで保持する。図2にBCMC10の構成例を示す。
BCMC10は、マルチプロセッサシステム1全体の動作を制御するCPUコア101と、SRAM(Static Random Access Memory)などの書き換え可能なメインメモリ102と、DMAC(Direct Memory Access Controller)103とがバスB1で接続されて構成される。CPUコア101は、メインメモリ102と協働し、所定のコンピュータプログラムを読み込んで実行することにより、本発明の特徴的なデータ処理を行うための機能を形成するコンピュータ搭載の半導体デバイスである。メインメモリ102は、システム全体の共有メモリとして使用されるようになっている。
バスB1には、最上段のWTA・総和回路30の出力端及びハードディスクや可搬性メディア等の外部メモリも接続される。
【0020】
CPUコア101は、起動時に上記の外部メモリから起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、データ処理に必要となる種々のデータを上記の外部メモリから読み出し、これをメインメモリ102に展開する。メインメモリ102には、各セルプロセッサ20の状態変数値などのデータも記憶されるようにする。状態変数値は、当該状態変数値を算出したセルプロセッサ20のセルアドレスに応じたメインメモリ102のアドレスに記憶される。
CPUコア101は、また、メインメモリ102から読み出したデータに基づいて、各セルプロセッサ20に対してブロードキャストするブロードキャストデータを生成する。ブロードキャストデータは、例えば、状態変数値と当該状態変数値を算出したセルプロセッサ20を示すセルアドレスとの組からなるペア(組)データである。ペアデータは、1組又は複数組生成される。
【0021】
DMAC103は、メインメモリ102と各セルプロセッサ20との間のダイレクトメモリアクセス転送制御を行う半導体デバイスである。例えば、各セルプロセッサ20に対しては、ブロードキャストチャネルを介して、ブロードキャストデータをブロードキャストする。また、各セルプロセッサ20のデータ処理結果を個別に取得して、メインメモリ102に書き込む。
【0022】
<セルプロセッサ>
各セルプロセッサ20は、ブロードキャストデータの中から必要となるデータを取捨選択してデータ処理を行い、データ処理の終了時に、その旨をWTA・総和回路30へ報告する。データ処理結果である状態変数値を、BCMC10からの指示により、BCMC10へ送出する。各セルプロセッサ20間は、図示しない共有メモリを介してリング接続される。各セルプロセッサ20は、データ処理を同期的なクロックで行ってもよく、各々異なるクロックで行ってもよい。図3にセルプロセッサ20の構成例を示す。
セルプロセッサ20は、セルCPU201と、入力バッファ202と、出力バッファ203と、WTAバッファ204と、プログラムコントローラ205と、命令メモリ206と、データメモリ207と、を含んで構成される。
【0023】
セルCPU201は、プログラマブルな浮動小数点演算器を備えたプロセッサであり、セルプロセッサ20内の動作を制御して、データ処理を行うものである。セルCPU201は、BCMC10からブロードキャストされたブロードキャストデータを入力バッファ202を介して取得し、ペアデータのセルアドレスにより自己が行うべき処理に必要なデータか否かを判断し、必要であればデータメモリ207の対応するアドレスに状態変数値を書き込む。また、データメモリ207から状態変数値を読み出してデータ処理を行い、データ処理結果を出力バッファ203に書き込み、WTA・総和回路30にデータ処理の終了を示すデータを送る。
【0024】
入力バッファ202は、BCMC10からブロードキャストされたブロードキャストデータを保持するものである。保持されたブロードキャストデータは、セルCPU201からの要求により、セルCPU201へ送られる。
出力バッファ203は、セルCPU201の状態変数値を保持するものである。保持された状態変数値は、BCMC10からの要求により、BCMC10へ送信される。
入力バッファ202及び出力バッファ203は、この他に制御用のデータ等の送受を行ってもよい。
WTAバッファ204は、セルCPU201によるデータ処理の終了時に、セルCPU201からデータ処理の終了を示すデータを受信して、これをWTA・総和回路30へ送信することにより、データ処理の終了をWTA・総和回路30に報告するものである。データ処理の終了を示す終了データには、例えば、自セルプロセッサ20のIDと、出力バッファ203に保存された状態変数値がBCMC10へ読み取られるときの優先度を決める優先度データとが含まれる。
【0025】
プログラムコントローラ205は、セルプロセッサ20の動作を規定するプログラムをBCMC10から取り込むものである。セルプロセッサ20の動作を規定するプログラムには、セルプロセッサ20で実行されるデータ処理のためのプログラムや、当該セルプロセッサ20で処理に必要なデータを決めるデータ選択プログラム、処理結果がBCMC10へ読み取られるときの優先度を決める優先度決定プログラムなどがある。
命令メモリ206は、プログラムコントローラ205により取り込んだプログラムを保存するものである。保存したプログラムは、必要に応じてセルCPU201に読み込まれる。
【0026】
データメモリ207は、セルプロセッサ20において処理されるデータを保存するものである。セルCPU201により必要と判断されたブロードキャストデータが書き込まれる。ブロードキャストデータは、セルアドレスに応じたアドレスに保存される。
また、本実施形態ではデータメモリ207の一部は共有メモリを介して隣接するセルプロセッサ20に繋がっており、1サイクル毎に隣接するセルプロセッサ20とデータの送受が可能となっている。
【0027】
<WTA・総和回路>
複数のWTA・総和回路30は、各セルプロセッサ20から送られるデータ処理の終了を示すデータにより、BCMC10がセルプロセッサ20から状態変数値を取り込む順序を決めてBCMC10へ報告する。
図4にWTA・総和回路30の構成例を示す。
各WTA・総和回路30は、2つの入力レジスタA、B(以下、第1入力レジスタ301、第2入力レジスタ302)と、切換器303と、比較器304と、加算器305と、出力レジスタ306と、を含んで構成される。
【0028】
第1入力レジスタ301及び第2入力レジスタ302は、それぞれ整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタには、例えばセルプロセッサ20から送られるデータ処理の終了を示す終了データのうち、IDが書き込まれ、浮動小数点レジスタには、例えば優先度データが書き込まれる。
切換器303は、比較器304及び加算器305のいずれか一方を活性化する。具体的には、動作モードに従って一方のみを使用可能とする。動作モードは、例えばBCMC10からの指示により決められる。動作モードについては後述する。
比較器304は、第1入力レジスタ301及び第2入力レジスタ302の各々の浮動小数点レジスタが保持する浮動小数点値の比較を行い、大きい方(又は小さい方)の値と、それに付随する整数とを、出力レジスタ306へ書き込む。
加算器305は、第1入力レジスタ301及び第2入力レジスタ302の各々の浮動小数点レジスタが保持する浮動小数点値の和を算出し、算出結果を出力レジスタ306へ書き込む。
出力レジスタ306は、第1入力レジスタ301及び第2入力レジスタ302とほぼ同じに構成される。つまり、整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタにはIDが書き込まれ、浮動小数点レジスタには優先度データが書き込まれるようになっている。
【0029】
WTA・総和回路30は、以下に説明する3つの動作モードをもつ。
【0030】
・最大値(WTA)モード:
切換器303により、比較器304が活性化される。比較器304は、第1入力レジスタ301及び第2入力レジスタ302の各々の浮動小数点レジスタが保持する浮動小数点値A、Bの比較を行い、大きい方(又は小さい方)の値と、それに付随する整数値を出力レジスタ306に書き込む。出力レジスタ306への書き込みが終了すると、第1入力レジスタ301及び第2入力レジスタ302をクリアする。出力レジスタ306の内容は、上位の段のWTA・総和回路30の入力レジスタに書き込まれる。このとき、書き込み先の入力レジスタがクリアされていないときは、書き込みがストールして、そのサイクルでは書き込みを行わず、次のサイクルで書き込むようにする。
【0031】
・加算モード:
切換器303により、加算器305が活性化される。加算器305により、第1入力レジスタ301及び第2入力レジスタ302の各々の浮動小数点レジスタが保持する浮動小数点値A、Bの和を算出し、算出結果を出力レジスタ306に書き込む。出力レジスタ306の内容は、上位の段のWTA・総和回路30の入力レジスタに書き込まれる。
【0032】
・近似ソートモード:
切換器303により、比較器304が活性化される。比較器304は、第1入力レジスタ301及び第2入力レジスタ302の各々の浮動小数点レジスタが保持する浮動小数点値A、Bの比較を行い、大きい方(又は小さい方)の値と、それに付随する整数値とを出力レジスタ306に書き込む。
その後、出力レジスタ306に書き込まれた値を保持していた入力レジスタのみをクリアし、出力レジスタ306の内容を、上位の段のWTA・総和回路30の入力レジスタに書き込む。書き込み先の入力レジスタがクリアされていない場合は、書き込みがストールし、そのサイクルでは書き込みを行わない。ただし、下位の段のWTA・総和回路30の出力レジスタ306からの書き込み動作は行われる。
近似ソートモードにより、BCMC10がWTA・総和回路30の最上段の出力レジスタ306から受け取るデータが、浮動小数点が大きい順或いは小さい順にソートされた(並び替えられた)ものとなる。
【0033】
なお、各モードに入る前には、すべてのWTA・総和回路30の第1入力レジスタ301、第2入力レジスタ302及び出力レジスタ306がクリアされる。
【0034】
各モードを切替えて使用することにより、複数のWTA・総和回路30全体として、上記のソートのための機構(ソート機構)及び/又は総和回路として機能する。つまり、近似ソートモードで動作するときは、ソート機構を実現するものとなり、加算モードで動作するときは、総和回路を実現するものとなる。
【0035】
最大値モード、近似ソートモードで動作するWTA・総和回路30は、次に示すようにして実現してもよい。
すなわち、セルプロセッサ20と同数の入力レジスタと、切換器と、比較器と、加算器と、出力レジスタとを含んでWTA・総和回路が構成される。
入力レジスタがセルプロセッサ20の数と同じだけ用意されており、それぞれが、第1レジスタ301、第2レジスタ302と同様に、整数レジスタ及び浮動小数点レジスタを備える。比較器は、すべての入力レジスタの浮動小数点レジスタが保持する浮動小数点値の比較を行う。加算器は、すべての入力レジスタの浮動小数点レジスタが保持する浮動小数点値の和を算出する。
出力レジスタは、図4のWTA・総和回路30の出力レジスタと同様である。
【0036】
比較器により、各入力レジスタの浮動小数点レジスタが保持する優先度データを比較して、優先度の高い順に、付随するIDを順次出力レジスタに書き込む。これにより、IDを、優先度の高い順序でBCMC10へ送ることができる。
加算器により、各浮動小数点レジスタが保持するデータを加算して、その総和を求めることができる。
このようなWTA・総和回路は、図1に示すような接続形態をとらなくとも、一つで、本発明におけるソート機構、総和回路として機能する。
【0037】
<データ処理方法>
本実施形態におけるマルチプロセッサシステム1は、以下のように動作することにより、所要のデータ処理を実行する。図5は、このマルチプロセッサシステム1において実行される処理の流れを示すフローチャートである。
【0038】
BCMC10のメインメモリ102には、すべてのセルプロセッサ20の状態変数値の初期値が予め記憶される。
BCMC10は、このセルプロセッサ20の状態変数値とセルプロセッサ20を示すセルアドレスとからなるペアデータにより、ブロードキャストデータを作成する(ステップS101)。そして、作成したブロードキャストデータを、すべてのセルプロセッサ20へブロードキャストする(ステップS102)。
各セルプロセッサ20は、ブロードキャストデータを、入力バッファ202に取り込む。セルCPU201は、命令メモリ206に記憶されたデータ選択プログラムにより、入力バッファ202が保持するブロードキャストデータのセルアドレスを調べて、自セルプロセッサ20が行うデータ処理に要する状態変数値があるか否かを確認する(ステップS103)。自らが行うデータ処理に要する状態変数値が無い場合、セルプロセッサ20は、処理動作を終了する(ステップS103:無)。自らが行うデータ処理に要する状態変数値が有る場合は(ステップS103:有)、該当する状態変数値を、この状態変数値とペアデータを組むセルアドレスに対応するデータメモリ207上のアドレスへ上書きする(ステップS104)。
以上により、BCMC10から各セルプロセッサ20へのデータのブロードキャストが終了する。
【0039】
ブロードキャストが終了すると、各セルプロセッサ20は、命令メモリ206に記憶されたデータ処理のプログラムにより、データメモリ207に記録された状態変数値をデータ処理して新たな状態変数値を生成する。新たな状態変数値は、データメモリ207に書き込まれるとともに、出力バッファ203にも書き込まれる(ステップS105)。新たな状態変数値は、データメモリ207上の、自らのセルアドレスに対応するアドレスに、上書きされる。
データ処理が終了すると、セルCPU201は、WTAバッファ204を介して1段目のWTA・総和回路30の入力レジスタへIDと優先度データとを含む終了データを送信して、データ処理の終了を報告する(ステップS106)。優先度データは、データ処理の前又は後に、所定の優先度決定プログラムによって生成される。
【0040】
1段目のWTA・総和回路30は、各セルプロセッサ20から送られる終了データのうち、IDを入力レジスタの整数レジスタへ、優先度データを浮動小数点レジスタでそれぞれ保持する。ここで、WTA・総和回路30は近似ソートモードで動作する。そのために、切換器303は、比較器304を活性化する。
WTA・総和回路30の第1入力レジスタ301及び第2入力レジスタの整数レジスタは、各々異なるセルプロセッサ20から送られたIDを保持する。また、各々の浮動小数点レジスタは、IDに付随した優先度データを保持する。比較器304は、第1入力レジスタ301及び第2入力レジスタ302の浮動小数点レジスタからそれぞれ優先度データを読み出し、優先度を比較する。比較の結果、優先度が高い方の優先度データ及びそれに付随したIDを、出力レジスタ306の浮動小数点レジスタ及び整数レジスタへ書き込む。出力レジスタ306へ内容が書き込まれた入力レジスタは、その内容がクリアされる。出力レジスタ306へ書き込まれたID及び優先度データは、上位の段のWTA・総和回路30の入力レジスタへ書き込まれる。
このような処理を各段のWTA・総和回路30で行う。最上段のWTA・総和回路30は、出力レジスタ306の整数レジスタに書き込まれたIDをBCMC10へ送る。
以上のような処理により、WTA・総和回路30全体としては、IDを、優先度の高い順序でBCMC10へ送ることとなる(ステップS107)。
【0041】
BCMC10は、WTA・総和回路30から送られるIDに該当するセルプロセッサ20の出力バッファ203から、データ処理された状態変数値を取得する。取得した状態変数値は、BCMC10内のメインメモリ102上の、処理を行ったセルプロセッサ20を示すセルアドレスに対応するアドレスに上書きされる(ステップS108)。
以上で、状態変数値の処理動作の1サイクルが終了する。
【0042】
BCMC10が、各セルプロセッサ20からデータ処理結果を取得し、これによりブロードキャストデータを生成する。
各セルプロセッサ20は、ブロードキャストデータから自分に必要となるデータのみを取捨選択してデータ処理を行う。このブロードキャストデータを用いてデータ処理を行うことにより、他のすべてのセルプロセッサ20により処理されたデータを利用する処理が可能となる。また、ブロードキャストデータを、各セルプロセッサ20からのデータ処理結果とこのデータ処理結果を生成したセルプロセッサ20を示すセルアドレスとからなるペアデータにより作成することにより、特定のセルプロセッサ20のデータ処理結果のみを用いる処理が可能となる。さらに、隣接するセルプロセッサ20間は共有メモリを介して接続されているので、従来と同様に、隣接するセルプロセッサ20間の処理も可能である。
各セルプロセッサ20が、メインメモリ102に、直接、自セルプロセッサ20で必要とするデータを取り込みに行くことがなく、ブロードキャストデータから必要となるデータを選択して、各セルプロセッサ20内にデータを保持して処理を行うので、データの競合が起こらずに高速処理が可能となる。
【0043】
[実施例1]
次に、上記のマルチプロセッサシステム1の実施例を具体的に説明する。
この実施例では、あるセルプロセッサ20とそれに隣接する他のセルプロセッサ20により処理されたデータのみを使用する場合の例を、図6を参照して説明する。
図6において、「○」はセルプロセッサを表しており、網掛された「○」がデータ処理を行うセルプロセッサ、「●」が必要とされるデータを保持するセルプロセッサである。
n×n(nは2以上の自然数)の格子の各格子点についてのデータ(格子点データ)に対して、次のようなフィルタ計算を連続的に実行する場合を考える。
Xi,j=(Xi-1,j+Xi+1,j+Xi,j-1+Xi,j+1)/4
i:格子点の行番号、j:格子点の列番号
【0044】
BCMC10は、格子点データを行又は列でグループ化したブロードキャストデータとして、n個のセルプロセッサ20にブロードキャストする。
図8は、格子点データをグループ化した例示図であり、「○」で示される格子点データを5個ずつグループ化してある。一つのグループ化した格子点データが、一つのセルプロセッサ20で処理される。
セルプロセッサ20では、ブロードキャストデータから必要とするグループ化された格子点データをデータメモリ207に保存する。データメモリ207から、格子点データを順次読み出してデータ処理する。
【0045】
共有メモリを介して接続されるセルプロセッサ20との間では、共有メモリを用いてデータ転送を行う。共有メモリへのデータの書込動作を1サイクルとすると、セルプロセッサ20間のグループ化されたデータの転送は、2nサイクルで行うことができる。
各セルプロセッサ20を同期的に動作させ、共有メモリへの書き込みと演算とをパイプライン処理のように同時に実行することにより、セルプロセッサ20間の通信と演算を同時に行うことができる。
【0046】
次のブロードキャストデータは、グループ化された格子点データのデータ処理が終了する度に、BCMC10によりブロードキャストされる。セルプロセッサ20は、ブロードキャストされるデータのi、jにより、必要なデータか否かを判断する。
ブロードキャストデータをグループ化することにより行又は列方向のデータを処理可能であり、共有データを介してデータ転送することにより列又は行方向のデータ処理が可能となる。
【0047】
[実施例2]
この実施例では、すべてのセルプロセッサ20のうち、一部のセルプロセッサ20により処理されたデータのみを使用する場合の例を、図7を参照して説明する。図7において、「○」はセルプロセッサを表しており、網掛された「○」がデータ処理を行うセルプロセッサ、「●」が必要とされるデータを保持するセルプロセッサである。このようなマルチプロセッサシステムは、ホップフィールドの連想記憶器の実現に有用である。
各セルプロセッサ20は、データ処理結果である状態変数値とその状態変数値の重要度を表す重み係数とを保持するものとする。また、セルプロセッサ20には、番号が付されており、BCMC10は、番号順にセルプロセッサ20から状態変数値を取り込む。
BCMC10は、すべてのセルプロセッサ20から取り込んだ状態変数値をブロードキャストデータとしてブロードキャストする。各セルプロセッサ20は、ブロードキャストデータから必要な状態変数値のみを選択して重み係数との積和演算を行い、状態変数値を更新する。必要な状態変数値が、ブロードキャストデータに含まれるすべての状態変数値の場合、すべてのプロセッサにより処理されたデータを使用する処理に該当することとなる。
【0048】
[実施例3]
次に、パターンマッチング計算処理の例を説明する。
ここでは、入力データの特徴に最も類似するデータを保持するセルプロセッサ20を特定する処理を行う。この処理は、以下のようにして行う。
各セルプロセッサ20は、予め比較対象となるテンプレートデータを保持する。
BCMC10は、入力データをすべてのセルプロセッサ20にブロードキャストする。各セルプロセッサ20は、自らが保持するテンプレートデータの特徴と入力データの特徴との差分値を算出する。差分値は、IDとともにWTA・総和回路30へ送られる。
WTA・総和回路30は、最大値モードで動作する。入力レジスタの整数レジスタはIDを保持し、浮動小数点レジスタは差分値を保持する。差分値を比較器304により比較して、小さい方の差分値とそれに付随するIDを出力レジスタ306へ送る。これをWTA・総和回路30全体で行い、最も小さい差分値とそれに付随するIDを求める。このID及び差分値をBCMC10へ送る。
BCMC10は、IDによりセルプロセッサ20を特定する。これにより、入力データの特徴に最も類似するテンプレートデータ及び入力データの特徴と最も類似するテンプレートデータとの差分値も検出できる。
【0049】
[実施例4]
次に、画像処理等の際に用いられる、動くオブジェクトの衝突判定アルゴリズムの処理例について説明する。「衝突判定アルゴリズム」は、ある空間内に存在するn個のオブジェクト(物体)が互いに他のオブジェクトと衝突するかどうか、衝突する場合はどの程度の強度かを判定するアルゴリズムである。
n個のオブジェクトの空間分布には偏りがあり、m個のクラスタに分かれているとする。ここでは、例えば、1個のオブジェクトが、他の(n−1)個のオブジェクトのいずれと最も強く衝突するかについて判定するものとする。
図9は、このような空間内のオブジェクトの例示図であり、「○」で表されるオブジェクトを矩形で囲んで1クラスタとしており、図9ではオブジェクトが5個のクラスタに分けられている。オブジェクトを示すデータは、BCMC10からブロードキャストされ、クラスタ毎にセルプロセッサ20に取り込まれる。セルプロセッサ20は、取り込んだ1つのクラスタに含まれるオブジェクトに関する空間内での位置、運動についての処理を行う。
図9の例では、セルプロセッサA〜Eにより5個のクラスタに分けられたオブジェクトに関する処理が行われる。
図10により、衝突判定アルゴリズムの処理の流れを説明する。
【0050】
BCMC10は、オブジェクトの位置や速度のデータを含むオブジェクトデータと、当該オブジェクトが属するクラスタを示すクラスタデータとを含むブロードキャストデータを生成し、すべてのセルプロセッサ20にブロードキャストする(ステップS201)。各セルプロセッサ20は、ブロードキャストデータから、オブジェクトデータをクラスタデータに基づいて取捨選択して取り込む。
オブジェクトデータを取り込んだセルプロセッサ20は、オブジェクトの現在の位置データと速度データとから、単位時間後の新しい位置データを算出する。
新しい位置データから、新しいバウンディングボックスの値を得る(ステップS202)。バウンディングボックスとは、例えば、図9における、オブジェクトを囲む矩形である。バウンディングボックスの値とは、例えば、バウンディングボックスの頂点の座標である。
BCMC10は、オブジェクトの新しい位置データを各セルプロセッサ20から取り込んで位置データを更新する(ステップS203)。
【0051】
次に、BCMC10は、取得した新しい位置データ等を含むオブジェクトデータを一つずつ全セルプロセッサ20にブロードキャストする(ステップS204)。つまり、衝突判定の対象となる1個のオブジェクト(以下、「判定対象オブジェクト」という)の位置を表す位置データを全セルプロセッサ20に送る。
各セルプロセッサ20では、まず、ステップS202で計算したバウンディングボックスを用いて、判定対象オブジェクトが衝突する可能性があるか否かを判断する(ステップS205)。具体的には、判定対象オブジェクトの位置がバウンディングボックス内にあるか否かを判断する。
衝突する可能性がある場合、つまり、判定対象オブジェクトがバウンディングボックス内にある場合は(ステップS205:Y)、そのセルプロセッサ20で処理される、バウンディングボックス内の各オブジェクトとの距離計算を順次行い(ステップS206)、衝突の判定を行う(ステップS207)。判定対象オブジェクトがバウンディングボックス内のいずれかのオブジェクトと衝突する場合には(ステップS207:Y)、その衝突による衝撃の強さを定量的に表すデータ(衝突強度データ)、衝突による判定対象オブジェクトへの影響を表すデータ等を含む衝突データを生成する(ステップS208)。また、セルプロセッサ20は、生成した衝突データのうち衝突強度データを、そのIDとともにWTA・総和回路30に送る(ステップS209)。
【0052】
判定対象オブジェクトがバウンディングボックス外にある場合(ステップS205:N)、または距離計算の結果、衝突しないと判定した場合(ステップS207:N)、各セルプロセッサ20は、WTA・総和回路30に、例えば「−1.0」を、衝突強度データとして送る(ステップS210)。
WTA・総和回路30は最大値モードで動作する。WTA・総和回路30は、セルプロセッサ20から送られる衝突強度データを比較して、最も衝突による衝撃の強さが大きいことを表す衝突強度データを検出して(ステップS211)、検出した衝突強度データを生成したセルプロセッサ20を特定する。そして特定したセルプロセッサ20を表すIDをBCMC10へ送る。
BCMC10は、WTA・総和回路30の最上段から送られたIDにより表されるセルプロセッサ20から衝突データを取得する(ステップS212)。ステップS204以降の処理をすべてのオブジェクトについて行うことにより、空間内のすべてのオブジェクト間の衝突判定が行われる。
【0053】
[実施例5]
次に、WTA・総和回路30の加算器305を用いる場合の例を説明する。
各セルプロセッサ20は、データ処理結果をWTA・総和回路30へ入力する。WTA・総和回路30では、加算器305によりデータ処理結果を加算し、最終的に、すべてのセルプロセッサ20のデータ処理結果の総和を得る。このようにして、WTA・総和回路30により高速にデータ処理結果の総和を得ることが可能である。
データ処理結果の総和は、BCMC10に送られて、各セルプロセッサ20にブロードキャストにより、高速に送信可能である。データ処理結果の総和は、例えば、ニューロなどの最適化計算において、正規化計算に用いられる。
【0054】
以上の説明において、BCMC10とWTA・総和回路30とは各々独立したものとしたが、BCMC10にWTA・総和回路30を組み込んだ一つのブロックとして、コントローラを構成してもよい。
【0055】
なお、以上の説明は、データ処理手段がセルプロセッサ20であり、制御手段がコントローラ(BCMC10)である場合の例であるが、本発明の構成要素は、このような例に限定されるものではない。
例えば複数のデータ処理端末を広域ネットワークを介して双方向通信が可能な形態で接続し、そのうちの一つ又は複数のデータ処理端末を制御手段、他の複数のデータ処理端末をデータ処理手段として動作させ、制御手段に、複数のデータ処理手段の一部又は全部より受け取ったデータ処理結果及び少なくとも一つのデータ処理手段によるデータ処理に用いるデータを含むブロードキャストデータをブロードキャストする機能をもたせ、複数のデータ処理手段の各々に、制御手段によりブロードキャストされたブロードキャストデータから自らが行うデータ処理に必要なデータのみを取捨選択してデータ処理を行うとともに、その処理結果を制御手段に送出させる機能をもたせるようにしてもよい。
【0056】
また、複数のデータ処理手段として、予め定めた識別情報(例えば上述した識別データ)によりそれを特定できる汎用のデータ処理端末を用い、これらの汎用のデータ処理端末と双方向通信可能なサーバ、あるいはCPU及びメモリを内蔵した半導体デバイスを搭載した装置をのみをもってデータ処理システムを構成するようにしてもよい。
この場合のサーバ又は装置は、その内部のCPUが所定のコンピュータプログラムを読み込んで実行することにより、サーバ本体又は装置内に、少なくとも一つのデータ処理手段としてのデータ処理端末を特定するとともに特定したデータ処理端末の識別情報とそのデータ処理端末宛のデータ処理用データとを含むブロードキャストデータを生成する機能と、複数のデータ処理端末の一部又は全部から当該データ処理端末で行われたデータの処理結果を取得する機能と、受け取った処理結果をブロードキャストデータに含め、当該ブロードキャストデータを複数のデータ処理端末の各々にブロードキャストする機能とを形成するものである。
【0057】
【発明の効果】
以上のような本発明により、複数のデータ処理手段を用いる場合のデータ処理手段間のデータ処理を効率的に行えるようになる。
【図面の簡単な説明】
【図1】本発明を適用したマルチプロセッサシステムの構成例を示した図。
【図2】BCMCの構成図。
【図3】セルプロセッサの構成図。
【図4】WTA・総和回路の構成図。
【図5】本実施形態によるマルチプロセッサシステムの処理の流れを示すフローチャート。
【図6】隣接するプロセッサのデータ処理結果を使用する概念図。
【図7】一部のプロセッサのデータ処理結果を使用する概念図。
【図8】格子点データをグループ化した例示図。
【図9】オブジェクトをクラスタに分けた場合の例示図。
【図10】衝突判定アルゴリズムの処理の流れを示すフローチャート。
【符号の説明】
10 BCMC
101 CPUコア
102 メインメモリ
103 DMAC
20 セルプロセッサ
201 セルCPU
202 入力バッファ
203 出力バッファ
204 WTAバッファ
205 プログラムコントローラ
206 命令メモリ
207 データメモリ
30 WTA・総和回路
301 第1入力レジスタ
302 第2入力レジスタ
303 切換器
304 比較器
305 加算器
306 出力レジスタ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data processing system that performs data processing using a plurality of data processing means, such as a multiprocessor system and a data processing method.
[0002]
BACKGROUND OF THE INVENTION
As an advanced information society advances, the amount of data processed by a data processing device such as a computer tends to increase. In addition, the contents of data processing are becoming more complex and sophisticated. 2. Description of the Related Art Conventionally, processing performance of an entire data processing apparatus has been improved by improving the performance of a processor such as a CPU (Central Processing Unit) or by using a plurality of processors.
However, in recent years, the required speed of increasing data processing capacity has surpassed that of high performance processors. High performance processors cannot be performed overnight because of the long development period.
On the other hand, for example, the data processing capability of a multiprocessor is determined by the number of processors to be used and the processing method thereof, and is less dependent on the performance enhancement of individual processors. Therefore, it is one of effective means for improving the processing capability of the data processing apparatus.
[0003]
The data processing method by the multiprocessor is classified as follows according to the range of data required by one processor during data processing.
(1) A processor that performs data processing uses only data processed by an adjacent processor.
Such control is suitable for cellular automata, image filters, cloth and wave motion calculations, polygon generation calculations from curved surfaces, and the like.
(2) A processor that performs data processing uses only data processed by some of the plurality of processors.
Such control is suitable for many-to-many collision determination and the like.
[0004]
Data processing in the above case (1) can be efficiently realized by a conventional parallel processor. However, in the data processing (2), the processing speed of the entire system is limited by the communication speed between the parallel processors, and the processing speed of each processor cannot be fully exhibited. For example, it is possible to perform the data processing (2) at high speed by cross-bar connecting all the processors. However, in this case, the necessary hardware becomes enormous and is not realistic.
[0005]
An object of the present invention is to provide, for example, a data processing system and a data processing method capable of performing the above-described data processing (2) more efficiently than before.
[0006]
[Means for Solving the Problems]
In order to solve the above problems, the multiprocessor system of the present invention manages at least one of a plurality of objects distributed in a predetermined virtual space, and positions of objects managed by the multiprocessor system in the virtual space. Each of the plurality of processors, and a controller that can acquire the position data from all the processors and that broadcasts the acquired position data to all the processors. Is determined based on the position data broadcast from the controller if the object whose position is represented by the position data is within the range in which objects managed by the controller are distributed. Only if the object It is adapted to determine whether the position.
Each of the plurality of processors manages, for example, two or more of the objects.
[0007]
The plurality of processors may generate velocity data representing a velocity in the virtual space for an object managed by the plurality of processors. In this case, if the controller can acquire the position data and the velocity data from all the processors and broadcast the acquired position data and velocity data to all the processors one by one, the processor is broadcast. Collision intensity data that quantitatively represents the strength of impact due to collision based on the velocity data of the broadcast object when the object whose position is represented by the position data is at the collision position with the object under its control In addition, it is possible to generate data representing the influence on the object due to the collision.
Further, identification data for identifying each is assigned to the plurality of processors, and the collision intensity data is taken together with the identification data of the processor from the processor that generated the collision intensity data, and the collision intensity data is not generated. A value smaller than the value of the collision strength data is fetched from the processor together with the identification data as the collision strength data of the processor, the processor that generated the largest collision strength data is specified, and the identification data of the specified processor is sent to the controller A maximum value detection mechanism may be further provided. As a result, the controller can acquire the collision strength data and data representing the influence on the object due to the collision from the processor represented by the identification data sent from the maximum value detection mechanism.
[0008]
Further, in such a multiprocessor system, the processor, for example, calculates the distance between the object whose position data is broadcast and the object under its management, so that the object is under its management. It is determined whether or not it is in the collision position.
[0009]
The data processing method of the present invention includes a plurality of data processing means for managing a plurality of objects distributed in a predetermined virtual space and divided into a plurality of clusters for each different cluster, and all the objects And a control means capable of storing position data representing the position of the object to all data processing means, and storing the position of the object in the virtual space. The control means obtains the position data of all objectsOne by oneBroadcast to all data processing meansFirstEach of the plurality of data processing means is within a range in which objects belonging to a cluster managed by the plurality of data processing means are distributed.In the first stageIt is determined whether or not there is an object whose position is represented by the position data broadcast from the control means.SecondAnd each of the plurality of data processing means comprises:In the second stageOnly when the object represented by the position data broadcast from the control means is within the range, it is determined whether or not the object is in a position where it collides with an object belonging to a cluster managed by itself.ThirdStages.
[0010]
The data processing system of the present invention includes:Identification data for identifying each is assigned, and eachOf multiple objects distributed within a given virtual spaceFor at least oneIn the virtual spaceA plurality of data processing means for generating position data representing the position of the object and generating collision intensity data quantitatively representing the strength of impact when another object collides with the object; and the plurality of data Maximum value detecting means for acquiring the identification data and the collision strength data from a processing means, detecting the largest collision strength data, and outputting the acquired identification data together with the detected collision strength data, and the plurality of data processing means The position data of all the objects is acquired by acquiring the position data from each of them, and the position data is broadcast to the plurality of data processing means, and the identification data transmitted from the maximum value detecting means Control means for acquiring collision intensity data from any data processing means based on Eteiru. Each of the plurality of data processing means is within a range in which objects whose positions are represented by the position data generated by itself are distributed.From the control meansBroadcastIt is determined whether or not there is an object whose position is represented by the position data.HimselfDetermine whether or not it is in a position where it collides with the object that generated the position dataIs.
This system generates, for example, position data of two or more objects.
[0011]
The computer program provided by the present invention is:Identification data for identifying each is assigned, and for each of at least one of a plurality of objects distributed in a predetermined virtual space, position data representing the position of the object in the virtual space is generated. And a plurality of data processing means for generating impact strength data quantitatively representing the strength of impact when another object collides with the object, and the identification data and the collision strength data from the plurality of data processing means. A maximum value detecting means for detecting the largest collision intensity data and outputting identification data obtained together with the detected collision intensity data, and acquiring the position data from each of the plurality of data processing means. The position data of all objects is acquired, and this position data is sent to the plurality of data processing means. And a control means for acquiring collision intensity data from any of the data processing means based on the identification data output from the maximum value detecting means. Each of the plurality of data processing means has an object whose position is represented by position data broadcast from the control means within a range in which objects whose positions are represented by the position data generated by itself are distributed. A computer program for executing a process for determining whether or not the object is in a position where it collides with the object that has generated the position data only when the object is within the range. .
The semiconductor device provided by the present invention is:Identification data for identifying each is assigned, and for each of at least one of a plurality of objects distributed in a predetermined virtual space, position data representing the position of the object in the virtual space is generated. And a plurality of data processing means for generating impact strength data quantitatively representing the strength of impact when another object collides with the object, and the identification data and the collision strength data from the plurality of data processing means. A maximum value detecting means for detecting the largest collision intensity data and outputting identification data obtained together with the detected collision intensity data, and acquiring the position data from each of the plurality of data processing means. The position data of all objects is acquired, and this position data is sent to the plurality of data processing means. And a control means for acquiring collision intensity data from any data processing means based on the identification data output from the maximum value detection means, and incorporated in a computer-equipped apparatus comprising In the computer, each of the plurality of data processing means has an object whose position is represented by position data broadcast from the control means within a range in which objects whose positions are represented by the position data generated by itself are distributed. A semiconductor device that executes a process of determining whether or not the object is in a position where it collides with the object that has generated the position data only when the object is within the range. .
[0012]
DETAILED DESCRIPTION OF THE INVENTION
An embodiment in which the present invention is applied to a multiprocessor system as an example of a data processing system will be described below.
[0013]
<Overall configuration>
FIG. 1 is a diagram illustrating a configuration example of a multiprocessor system. The
[0014]
The
[0015]
The broadcast channel is a transmission path between the
The cell address corresponds to an address (physical address or logical address) on the memory, and the state variable value from the
[0016]
The WTA /
In the second and subsequent stages, the output terminals of the two lower WTA /
[0017]
In addition to the connection configuration shown in the figure, the present invention can also be implemented by connecting the WTA /
[0018]
Next, each of the
[0019]
<BCMC>
The
In the
The bus B1 is also connected to the output terminal of the uppermost WTA /
[0020]
The
The
[0021]
The DMAC 103 is a semiconductor device that performs direct memory access transfer control between the
[0022]
<Cell processor>
Each
The
[0023]
The
[0024]
The
The
In addition to this, the
The
[0025]
The
The
[0026]
The
In this embodiment, a part of the
[0027]
<WTA / sum circuit>
The plurality of WTA /
FIG. 4 shows a configuration example of the WTA /
Each WTA /
[0028]
The
The switch 303 activates one of the
The
The
The
[0029]
The WTA /
[0030]
・ Maximum value (WTA) mode:
The
[0031]
・ Addition mode:
The
[0032]
・ Approximate sort mode:
The
Thereafter, only the input register holding the value written in the
In the approximate sort mode, the data received by the
[0033]
Before entering each mode, the
[0034]
By switching and using each mode, the plurality of WTA /
[0035]
The WTA /
That is, the same number of input registers, switches, comparators, adders, and output registers as the
The same number of input registers as the number of
The output register is the same as the output register of the WTA /
[0036]
The comparator compares the priority data held in the floating-point registers of the input registers, and sequentially writes the accompanying IDs to the output registers in descending order of priority. Thereby, ID can be sent to BCMC10 in order of high priority.
The adder can add the data held by each floating-point register to obtain the sum.
Such a WTA / sum circuit does not have the connection form shown in FIG. 1, and functions as a sorting mechanism and a sum circuit in the present invention.
[0037]
<Data processing method>
The
[0038]
In the
The
Each
Thus, the data broadcast from the
[0039]
When the broadcast ends, each
When the data processing is completed, the
[0040]
The WTA /
Each of the
Such processing is performed by the WTA /
Through the processing as described above, the WTA /
[0041]
The
Thus, one cycle of the state variable value processing operation is completed.
[0042]
The
Each
Each
[0043]
[Example 1]
Next, a specific example of the
In this embodiment, an example in which only data processed by a
In FIG. 6, “◯” represents a cell processor, where the shaded “◯” is a cell processor that performs data processing, and “●” is a cell processor that holds data that needs to be processed.
Consider a case where the following filter calculation is continuously executed on data (grid point data) for each lattice point of a lattice of n × n (n is a natural number of 2 or more).
Xi, j = (Xi-1, j + Xi + 1, j + Xi, j-1 + Xi, j + 1) / 4
i: Grid point row number, j: Grid point column number
[0044]
The
FIG. 8 is an exemplary diagram in which lattice point data is grouped, and five pieces of lattice point data indicated by “◯” are grouped. One grouped grid point data is processed by one
In the
[0045]
Data transfer is performed using the shared memory with the
Each
[0046]
The next broadcast data is broadcast by the
Data in the row or column direction can be processed by grouping the broadcast data, and data processing in the column or row direction can be performed by transferring data via shared data.
[0047]
[Example 2]
In this embodiment, an example of using only data processed by some of the
Each
The
[0048]
[Example 3]
Next, an example of pattern matching calculation processing will be described.
Here, a process of specifying the
Each
The
The WTA /
The
[0049]
[Example 4]
Next, a processing example of a moving object collision determination algorithm used in image processing or the like will be described. The “collision judgment algorithm” is an algorithm for judging whether or not n objects (objects) existing in a certain space collide with other objects, and if so, how strong they are.
It is assumed that the spatial distribution of n objects is biased and divided into m clusters. Here, for example, it is assumed that it is determined which of the (n−1) objects most strongly collides with one object.
FIG. 9 is an illustration of an object in such a space. The object represented by “◯” is surrounded by a rectangle to form one cluster, and in FIG. 9, the object is divided into five clusters. Data indicating the object is broadcast from the
In the example of FIG. 9, the cell processors A to E perform processing related to objects divided into five clusters.
The flow of the collision determination algorithm process will be described with reference to FIG.
[0050]
The
The
A new bounding box value is obtained from the new position data (step S202). The bounding box is, for example, a rectangle surrounding the object in FIG. The value of the bounding box is, for example, the coordinates of the vertex of the bounding box.
The
[0051]
Next, the
Each
When there is a possibility of collision, that is, when the determination target object is in the bounding box (step S205: Y), the distance calculation with each object in the bounding box, which is processed by the
[0052]
When the determination target object is outside the bounding box (step S205: N), or when it is determined that there is no collision as a result of the distance calculation (step S207: N), each
The WTA /
The
[0053]
[Example 5]
Next, an example in which the
Each
The sum of the data processing results is sent to the
[0054]
In the above description, the
[0055]
The above description is an example in which the data processing means is the
For example, a plurality of data processing terminals are connected via a wide area network in a form capable of bidirectional communication, and one or a plurality of data processing terminals are operated as control means and the other data processing terminals are operated as data processing means. The control means is provided with a function of broadcasting broadcast data including data processing results received from some or all of the plurality of data processing means and data used for data processing by at least one data processing means. Each of the means is provided with a function of selecting only data necessary for data processing performed by itself from the broadcast data broadcast by the control means and performing data processing and sending the processing result to the control means. Also good.
[0056]
In addition, as a plurality of data processing means, a general-purpose data processing terminal capable of specifying it with predetermined identification information (for example, identification data described above) is used, and a server capable of bidirectional communication with these general-purpose data processing terminals, or You may make it comprise a data processing system only with the apparatus which mounts the semiconductor device incorporating CPU and memory.
In this case, the server or device identifies and specifies the data processing terminal as at least one data processing means in the server body or device by reading and executing a predetermined computer program by the internal CPU. A function of generating broadcast data including identification information of a processing terminal and data processing data addressed to the data processing terminal, and processing results of data performed by the data processing terminal from a part or all of the plurality of data processing terminals And a function of including the received processing result in broadcast data and broadcasting the broadcast data to each of a plurality of data processing terminals.
[0057]
【The invention's effect】
According to the present invention as described above, data processing between data processing means when a plurality of data processing means are used can be performed efficiently.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration example of a multiprocessor system to which the present invention is applied.
FIG. 2 is a configuration diagram of BCMC.
FIG. 3 is a configuration diagram of a cell processor.
FIG. 4 is a configuration diagram of a WTA / sum circuit.
FIG. 5 is a flowchart showing a process flow of the multiprocessor system according to the embodiment.
FIG. 6 is a conceptual diagram using data processing results of adjacent processors.
FIG. 7 is a conceptual diagram using data processing results of some processors.
FIG. 8 is an exemplary diagram in which lattice point data is grouped.
FIG. 9 is an exemplary diagram when an object is divided into clusters.
FIG. 10 is a flowchart showing a flow of processing of a collision determination algorithm.
[Explanation of symbols]
10 BCMC
101 CPU core
102 Main memory
103 DMAC
20 cell processor
201 cell CPU
202 Input buffer
203 Output buffer
204 WTA buffer
205 Program controller
206 Instruction memory
207 data memory
30 WTA / sum circuit
301 First input register
302 Second input register
303 switcher
304 Comparator
305 Adder
306 Output register
Claims (10)
すべてのプロセッサから前記位置データを取得可能であり、取得した位置データをすべてのプロセッサにブロードキャストするコントローラと、を備えており、
前記複数のプロセッサの各々は、前記コントローラからブロードキャストされた位置データにより、この位置データで位置が表されるオブジェクトが自分が管理するオブジェクトが分布する範囲にあるか否かを判定して、前記範囲内にある場合にのみ、当該オブジェクトが自分が管理するオブジェクトと衝突する位置にあるか否かを判定するようになっている、
マルチプロセッサシステム。A plurality of processors each managing a plurality of objects distributed in a predetermined virtual space, and generating position data representing positions in the virtual space of the objects managed by the user;
A controller capable of acquiring the position data from all processors and broadcasting the acquired position data to all processors, and
Wherein each of the plurality of processors, the position data broadcast from the controller, the object which the object whose position is represented by the position data they manage is determined whether the range of distribution, the range Only when the object is in the position, it is determined whether or not the object is in a position where it collides with the object that it manages.
Multiprocessor system.
請求項1記載のマルチプロセッサシステム。Each of the plurality of processors manages two or more of the objects;
The multiprocessor system according to claim 1.
前記コントローラは、すべての前記プロセッサから前記位置データ及び前記速度データを取得可能であり、取得した位置データ及び速度データを一組ずつすべてのプロセッサにブロードキャストするようになっており、
前記プロセッサは、ブロードキャストされた位置データで位置が表されるオブジェクトが自分の管理下にあるオブジェクトと衝突位置にある場合に、ブロードキャストされたオブジェクトの前記速度データにより、衝突による衝撃の強さを定量的に表す衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを生成するようになっている、
請求項1記載のマルチプロセッサシステム。The plurality of processors generate velocity data representing a velocity in the virtual space for an object managed by the plurality of processors.
The controller can acquire the position data and the velocity data from all the processors, and broadcasts the acquired position data and velocity data to all the processors one by one,
When the object whose position is represented by the broadcast position data is in a collision position with an object under its control, the processor quantifies the intensity of impact caused by the collision based on the speed data of the broadcast object. To generate the impact intensity data and the impact impact on the object.
The multiprocessor system according to claim 1.
前記衝突強度データを生成したプロセッサからは衝突強度データをそのプロセッサの識別データと共に取り込み、前記衝突強度データを生成していないプロセッサからは衝突強度データの値よりも小さい値をそのプロセッサの衝突強度データとして識別データと共に取り込んで、最も大きい衝突強度データを生成したプロセッサを特定し、特定したプロセッサの識別データを前記コントローラに送る最大値検出機構を備えており、
前記コントローラは、前記最大値検出機構から送られた識別データにより表されるプロセッサから、衝突強度データ及び衝突によるオブジェクトへの影響を表すデータを取得するようになっている、
請求項3記載のマルチプロセッサシステム。Identification data for identifying each of the plurality of processors is assigned,
Collision intensity data is fetched together with the identification data of the processor from the processor that has generated the collision intensity data, and a value smaller than the value of the collision intensity data is obtained from the processor that has not generated the collision intensity data. And a maximum value detection mechanism that identifies the processor that has generated the largest collision strength data, and sends the identification data of the identified processor to the controller,
The controller is configured to acquire collision strength data and data representing an influence on the object due to the collision from a processor represented by identification data sent from the maximum value detection mechanism.
The multiprocessor system according to claim 3.
請求項1記載のマルチプロセッサシステム。The processor determines whether the object is in a collision position with an object under its control by calculating a distance between the object whose position data is broadcast and the object under its control. It has become,
The multiprocessor system according to claim 1.
前記制御手段が、すべてのオブジェクトの前記位置データを一つずつすべてのデータ処理手段にブロードキャストする第1段階と、
前記複数のデータ処理手段の各々が、自分が管理するクラスタに属するオブジェクトが分布する範囲内に、前記第1段階で前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定する第2段階と、
前記複数のデータ処理手段の各々が、前記第2段階で前記制御手段からブロードキャストされた位置データで表されるオブジェクトが前記範囲内にある場合にのみ、当該オブジェクトが、自分が管理するクラスタに属するオブジェクトと衝突する位置にあるか否かを判定する第3段階と、を含む、
データ処理方法。A plurality of data processing means for managing a plurality of objects distributed in a predetermined virtual space and divided into a plurality of clusters for each different cluster, and positions of all the objects in the virtual space A method executed in an apparatus or system having storage means and control means capable of broadcasting position data representing the position of the object to all data processing means,
A first stage in which the control means broadcasts the position data of all objects one by one to all data processing means;
Whether each of the plurality of data processing means has an object whose position is represented by the position data broadcast from the control means in the first step within the range in which objects belonging to the cluster managed by the data processing means are distributed. A second stage of determining whether or not
Each of the plurality of data processing means belongs to the cluster managed by itself only when the object represented by the position data broadcast from the control means in the second stage is within the range. A third stage for determining whether or not the object collides with the object,
Data processing method.
前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、
前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から送信された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えており、
前記複数のデータ処理手段の各々は、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定するものである、
データ処理システム。Identification data for identifying each is assigned, and for each of at least one of a plurality of objects distributed in a predetermined virtual space, position data representing the position of the object in the virtual space is generated. And a plurality of data processing means for generating collision strength data that quantitatively represents the strength of impact when another object collides with the object;
Obtaining the identification data and the collision strength data from the plurality of data processing means, detecting the largest collision strength data, and outputting the identification data acquired together with the detected collision strength data;
The position data of all objects is acquired by acquiring the position data from each of the plurality of data processing means, and the position data is broadcast to the plurality of data processing means, and from the maximum value detecting means. Control means for acquiring collision intensity data from any of the data processing means based on the transmitted identification data,
Whether each of the plurality of data processing means has an object whose position is represented by position data broadcast from the control means within a range in which objects whose position is represented by the position data generated by itself is distributed. Only when it is within the range, it is determined whether or not the object is in a position where it collides with the object that generated the position data by itself.
Data processing system.
請求項7記載のデータ処理システム。 At least one of the plurality of data processing means generates the position data of two or more objects;
The data processing system according to claim 7.
前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、
前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から出力された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えたコンピュータ搭載の装置に於いて、前記コンピュータに、
前記複数のデータ処理手段の各々が、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定する処理、
を実行させるためのコンピュータプログラム。Identification data for identifying each is assigned, and for each of at least one of a plurality of objects distributed in a predetermined virtual space, position data representing the position of the object in the virtual space is generated. And a plurality of data processing means for generating collision strength data that quantitatively represents the strength of impact when another object collides with the object;
Obtaining the identification data and the collision strength data from the plurality of data processing means, detecting the largest collision strength data, and outputting the identification data acquired together with the detected collision strength data;
The position data of all objects is acquired by acquiring the position data from each of the plurality of data processing means, and the position data is broadcast to the plurality of data processing means, and from the maximum value detecting means. In a computer-equipped device comprising control means for acquiring collision intensity data from any data processing means based on the output identification data, the computer includes:
Whether each of the plurality of data processing means has an object whose position is represented by the position data broadcast from the control means within a range in which the object whose position is represented by the position data generated by itself is distributed. A process of determining whether or not the object is in a position where it collides with the object that generated the position data only when it is within the range,
A computer program for running.
前記複数のデータ処理手段から前記識別データ及び前記衝突強度データを取得して、最も大きい衝突強度データを検出し、検出した衝突強度データとともに取得した識別データを出力する最大値検出手段と、
前記複数のデータ処理手段の各々から前記位置データを取得することですべてのオブジェクトの位置データを取得し、前記複数のデータ処理手段に対してこの位置データをブロードキャストするとともに、前記最大値検出手段から出力された識別データに基づいていずれかのデータ処理手段から衝突強度データを取得する制御手段と、を備えたコンピュータ搭載の装置に組み込まれることにより、前記コンピュータに、
前記複数のデータ処理手段の各々が、自身で生成した前記位置データにより位置が表されるオブジェクトが分布する範囲内に、前記制御手段からブロードキャストされた位置データで位置が表されるオブジェクトがあるか否かを判定し、前記範囲内にある場合にのみ、当該オブジェクトが自身で位置データを生成したオブジェクトと衝突する位置にあるか否かを判定する処理、
を実行させる半導体デバイス。Identification data for identifying each is assigned, and for each of at least one of a plurality of objects distributed in a predetermined virtual space, position data representing the position of the object in the virtual space is generated. And a plurality of data processing means for generating collision strength data that quantitatively represents the strength of impact when another object collides with the object;
Obtaining the identification data and the collision strength data from the plurality of data processing means, detecting the largest collision strength data, and outputting the identification data acquired together with the detected collision strength data;
The position data of all objects is acquired by acquiring the position data from each of the plurality of data processing means, and the position data is broadcast to the plurality of data processing means, and from the maximum value detecting means. By being incorporated in a computer-equipped device comprising control means for acquiring collision intensity data from any data processing means based on the output identification data,
Whether each of the plurality of data processing means has an object whose position is represented by the position data broadcast from the control means within a range in which the object whose position is represented by the position data generated by itself is distributed. A process of determining whether or not the object is in a position where it collides with the object that generated the position data only when it is within the range,
A semiconductor device that makes it run.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003106871A JP3872034B2 (en) | 2000-09-27 | 2003-04-10 | Multiprocessor system, data processing method, data processing system, computer program, semiconductor device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000294732 | 2000-09-27 | ||
JP2003106871A JP3872034B2 (en) | 2000-09-27 | 2003-04-10 | Multiprocessor system, data processing method, data processing system, computer program, semiconductor device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001289588A Division JP3426223B2 (en) | 2000-09-27 | 2001-09-21 | Multiprocessor system, data processing system, data processing method, and computer program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005572A JP2004005572A (en) | 2004-01-08 |
JP3872034B2 true JP3872034B2 (en) | 2007-01-24 |
Family
ID=30445643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003106871A Expired - Fee Related JP3872034B2 (en) | 2000-09-27 | 2003-04-10 | Multiprocessor system, data processing method, data processing system, computer program, semiconductor device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3872034B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4302143B2 (en) | 2007-01-11 | 2009-07-22 | 株式会社ソニー・コンピュータエンタテインメント | Object collision processing method, object collision processing program, and object collision processing apparatus |
KR100888475B1 (en) | 2007-02-02 | 2009-03-12 | 삼성전자주식회사 | Method and apparatus for detecting model collision |
-
2003
- 2003-04-10 JP JP2003106871A patent/JP3872034B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004005572A (en) | 2004-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3426223B2 (en) | Multiprocessor system, data processing system, data processing method, and computer program | |
JP4778561B2 (en) | Method, program, and system for image classification and segmentation based on binary | |
Liu et al. | Data-flow graph mapping optimization for CGRA with deep reinforcement learning | |
Khoram et al. | Accelerating graph analytics by co-optimizing storage and access on an FPGA-HMC platform | |
Ulusel et al. | Hardware acceleration of feature detection and description algorithms on low-power embedded platforms | |
JP2015531934A (en) | Method and system for power management in pattern recognition processing | |
Yin et al. | Experiences with ml-driven design: A noc case study | |
CN112465133B (en) | Control flow multi-core parallel method, computer device and storage medium | |
CN112799599B (en) | Data storage method, computing core, chip and electronic equipment | |
Chen et al. | Dygnn: Algorithm and architecture support of dynamic pruning for graph neural networks | |
Zhang et al. | Point-x: A spatial-locality-aware architecture for energy-efficient graph-based point-cloud deep learning | |
Rai et al. | Using criticality of GPU accesses in memory management for CPU-GPU heterogeneous multi-core processors | |
US20220147804A1 (en) | Computation unit, related apparatus, and method | |
JP3872034B2 (en) | Multiprocessor system, data processing method, data processing system, computer program, semiconductor device | |
CN111831582A (en) | Memory management device and method for intelligent processor and electronic equipment | |
US20220375145A1 (en) | Tile-Based Scheduling Using Per-Tile Hash Values | |
CN106708473B (en) | A kind of unified more warp fetching circuits of stainer array | |
Yang et al. | An improved mesh topology and its routing algorithm for NoC | |
Fangzhou et al. | To Rip or not to Rip: A Reinforcement Learning-based Rip-up and Reroute Algorithm for Global Routing | |
JP2002140717A (en) | Image processing method, image processor and computer program | |
CN111831333A (en) | Instruction decomposition method and device for intelligent processor and electronic equipment | |
Pal et al. | Efficient management of scratch-pad memories in deep learning accelerators | |
Salapura et al. | Exploiting workload parallelism for performance and power optimization in Blue Gene | |
Zhu et al. | A multi-mode visual recognition hardware accelerator for AR/MR glasses | |
Dublish | Managing the memory hierarchy in GPUs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050826 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060404 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060413 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061017 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061018 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3872034 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101027 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111027 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121027 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131027 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |