情報処理方法及び情報処理システム
技術分野
[0001] 本発明は、大量のデータを処理する情報処理方法及び情報処理装置に係わり、特 に、並列コンピュータのアーキテクチャを採用した情報処理方法及び情報処理シス テムに関する。
背景技術
[0002] 従来、大量の情報を蓄積し、蓄積された情報を検索、集計するデータ処理が行わ れている。これらのデータ処理は、例えば、 CPUと、メモリと、周辺機器インタフェース と、ハードディスクのような補助記憶装置と、ディスプレイ及びプリンタのような表示装 置と、キーボード及びマウスのような入力装置と、電源ユニットとがノ スを介して接続さ れた周知のコンピュータシステムで使用され、特に、巿場で容易に入手可能なコンビ ユータシステムで動作可能なソフトウェアとして提供される。上記の検索'集計等のデ ータ処理を行うため、特に、大量のデータを蓄積する各種データベースが知られてい る。大量のデータの中でも、特に、表形式で表現され得るデータを処理したいという 要求は強い。
[0003] 大量のデータを効率よく検索、集計できる力否かは、大量のデータを格納する形式 に依存する。従来、一般的な格納技術として、所謂「行単位」格納技術及び「項目単 位」格納技術が知られている。行単位格納技術の場合、レコード番号毎に構成され た性別、年齢及び職業の項目値の組がレコード番号順に、論理的アドレスが増加す る順番でディスク上に格納されている。一方、項目単位格納技術の場合、項目毎に レコード番号順に、項目値が、論理的アドレスが増加する方向にディスク上に格納さ れている。
[0004] 上記の従来技術の場合、全てのレコード番号の全ての項目に対する項目値力 そ のまま、(レコード番号の 1次元と、それ以外の項目値の 1次元と力もなる) 2次元のデ ータ構造に格納されている。以下、このようなデータ構造を特に「データ表」と称する 。従来技術の場合、蓄積されたデータを検索、集計する際には、このデータ表をァク
セスすることにより行われて!/、る。
[0005] また、項目の値をそのまま項目値として格納する方法の他に、値をコード変換して、 項目値としてコードを格納する方法も知られている。この場合でも、コード変換された コードが項目値としてデータ表に格納されている点に変わりはない。
[0006] 上記従来技術のデータ表タイプのデータ構造を用いて格納された大量のデータを 検索、集計する場合、このようなデータ表をアクセスするためのアクセス時間に起因し て検索、集計の処理時間が長くなるという問題点がある。
[0007] また、データ表には少なくとも以下に述べる本質的な欠点がある。
(1)データ表はサイズが巨大化しやすぐしかも例えば項目毎等に (物理的に)分割 することが困難である。実際上、集計'検索のためにデータ表をメモリなどの高速な記 憶装置上に展開することは困難である。
(2)データ表は、各項目値を同時にソートした形で保持できな!/、。
(3)データ表には、同一値が何度も出現する。
[0008] これに対して、本願発明者は、大量のデータの検索'集計のスピードを大幅に向上 させるため、従来のデータ表の機能を有すると共に、データ表に基づくデータ構造の 上記問題点が解決されたデータ管理機構を設けることにより、表形式データを検索 · 集計'ソートする方法及びその方法を実施する装置を提案している (例えば、特許文 献 1を参照。)。
[0009] 提案された表形式データを検索'集計する方法及び装置は、通常のコンピュータシ ステムで使用可能な新規のデータ管理機構を導入する。このデータ管理機構は原則 として値管理テーブルと、値管理テーブルへのポインタ配列とを有する。
[0010] 図 1は、従来のデータ管理機構の説明図である。同図には、値管理テーブル 110と 値管理テーブルへのポインタ配列 120とが示されている。値管理テーブル 110とは、 表形式データの各項目に対し、その項目に属する項目値が順序付け (整数化)され た項目値番号の順番に、上記項目値番号に対応した項目値 (符号 111参照)と、上 記項目値に関連した分類番号 (符号 112参照)とが格納されたテーブルである。値管 理テーブルへのポインタ配列 120とは、表形式データのある列(即ち、項目)の項目 値番号、即ち値管理テーブル 110へのポインタが表形式データのレコード番号順に
格納された配列である。
[0011] 値管理テーブルへのポインタ配列 120と値管理テーブル 110とを組み合わせること により、あるレコード番号が与えられたとき、所定の項目に関する値管理テーブルへ のポインタ配列 120からそのレコード番号に対応して格納された項目値番号を取り出 し、次に、値管理テーブル 110内でその項目値番号に対応して格納された項目値を 取り出すことにより、レコード番号力も項目値を得ることができる。したがって、従来の データ表と同様に、レコード番号 (行)と項目(列)という座標を用いて全てのデータ( 項目値)を参照することができる。
[0012] このように表形式データの項目中のある項目に対して生成された値管理テーブルと 、値管理テーブルへのポインタ配列とを含むデータ管理機構は、以下の説明では、 特に情報ブロックと呼ぶ。
[0013] 従来のデータ表は、レコードに対応した行と、項目に対応した列とからなる座標を用 いて全てのデータを一体的に管理しているのに対して、この情報ブロックは、表形式 の列、即ち、項目毎にデータを完全に分離している点に特徴がある。このデータ管理 機構によれば、大量のデータが項目毎に分離されているので、検索'集計に必要な 項目に関するデータのみをメモリ等の高速な記憶装置上に取り込むことが可能であり 、その結果としてデータへのアクセス時間が短縮されるので、検索'集計の処理が高 速化され、項目数が非常に多いデータの場合でも、パフォーマンスを低下させること なく取り扱えるようになる。
[0014] また、この情報ブロックの場合、項目値は値管理テーブルに格納され、値が存在す る位置を示すレコード番号は値管理テーブルへのポインタ配列に関連付けられてい るので、項目値がレコード番号順に並べられている必要がない。したがって、検索' 集計に適するようにデータを項目値に関してソートすることができるようになる。これに より、目的の値と一致する項目値がデータ中に存在するか否かの判定が高速に行え るようになる。その上、項目値は項目値番号と対応しているので、項目値が長いデー タゃ文字列等であっても整数として取り扱うことができる。
[0015] さらに、このデータ管理機構によれば、値管理テーブル 110の全ての項目値番号 は異なる項目値と対応して ヽるので、特定の値を有する項目値を含むレコードを抽
出する場合に必要とされる特定の値と項目値との比較の回数は、最大で項目値の種 類の数、即ち、項目値番号の個数であり、比較演算の回数が著しく低減され、検索- 集計の高速化が図られる。その際には、ある項目値が該当するかどうかを調べた結 果を格納する場所が必要であるが、例えば分類番号 112をその格納場所として使用 することができる。
[0016] 図 2には、項目値を格納した項目値配列 211と、分類番号を格納した分類番号配 列 212と、存在数を格納した存在数配列 214とからなる値管理テーブル 210を含む 情報ブロックが示されている。存在数配列 214には、ある項目に関する各項目値が 全データ中に何個ずつ存在するかを示す数、換言すれば、所定の項目値を有する レコードの個数が格納される。このような存在数配列 214を値管理テーブル 210に準 備しておくことにより、検索 'ソート'集計の際に必要とされる「どのようなデータが(いく つ)存在するか?」、 「このデータは上から何番目のデータであるか?」、或いは、「上 から〇〇番目のデータは何か?」と 、うような情報を直ちに得ることができるようになり 、検索 'ソート'集計の高速化が図れる。
[0017] しかし、このようなデータ管理機構においても、レコード数が増大するのにしたがつ て、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなる力 処理可 能なデータ量は、利用されるハードウ ア資源によって制限される。
[0018] 大規模データの処理は、上記のような表形式データの情報処理以外の分野でも要 求されている。社会全体のさまざまな場所にコンピュータが導入され、インターネット をはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積 されるようになった。このような大規模データを処理するには、膨大な計算が必要で、 そのために並列処理を導入しようと試みるのは自然である。
[0019] 並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者(「 共有メモリ型」)は、複数のプロセッサが 1つの巨大なメモリ空間を共有する方式であ る。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので 、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。し たがって、例えば 10億個の浮動小数点変数の平方根を計算する際、単一 CPUに対 する加速比は、せいぜい 100倍ということになる。経験的には、 30倍程度が上限であ
る。
[0020] 後者(「分散メモリ型」)は、各プロセッサがそれぞれローカルなメモリを持ち、これら を結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込 んだノヽードゥエアシステムの設計が可能である。したがって、上記 10億個の浮動小 数点変数の平方根を計算する際の単一 CPUに対する加速比を、数百〜数万倍とす ることが可能である。
特許文献 1:国際公開第 WO00Z10103号パンフレット
発明の開示
発明が解決しょうとする課題
[0021] しかしながら、「分散メモリ型」の並列処理アーキテクチャにもいくつかの課題が存在 する。
[0022] [第 1の課題:巨大配列の分掌管理]
「分散メモリ型」の第 1の課題は、データの分掌管理の問題である。
[0023] 巨大なデータ(一般的には配列なので、以降、配列で説明する)は、 1つのプロセッ サの所有するローカルメモリに収容できるものではなぐ必然的に複数のローカルメ モリに分掌管理される。効率的かつ柔軟な分掌管理メカニズムを導入しないと、プロ グラムの開発および実行に際してさまざまな障害を抱え込むことになることは明らか である。
[0024] [第 2の課題:プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、巨大配列にアクセスしょうとすると、自己の 所有するローカルメモリ上の配列要素に対しては速やかにアクセスできるものの、他 のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を必須とする。こ のプロセッサ間通信はローカルメモリとの通信に比べ、極端にパフォーマンスが低ぐ 最低でも 100クロック力かると言われている。このため、ソート実施時には、巨大配列 全域にわたる参照が実施され、プロセッサ間通信が多発するため、パフォーマンスが 極端に低下する。
[0025] この問題点につき、より具体的に説明を加える。 1999年現在、パソコンは、 1〜数 個の CPUを用いて、「共有メモリ型」として構成されている。このパソコンに使用される
標準的な CPUは、メモリバスの 5〜6倍程度の内部クロックで動作し、その内部に自 動的な並列実行機能やパイプライン処理機能が装備されており、およそ 1データを 1 クロック (メモリバス)で処理できる。
[0026] このため、「分散メモリ型」のマルチプロセッサシステムでは、プロセッサ数は多いの に、シングルプロセッサ(共有メモリ型)よりも 100倍遅くなることになりかねない。
[0027] [第 3の課題:プログラムの供給]
「分散メモリ型」の第 3の課題は、多数のプロセッサにどうやってプログラムを供給す る力、という問題である。
[0028] 非常に多数のプロセッサに、別々のプログラムをロードし、全体を協調動作させる方 式 (MIMD : Multiple Instruction Stream, Multiple Data Stream)では、プログラムの 作成、コンパイル、配信のために多大な負荷を要する。
[0029] その一方、多数のプロセッサを同一のプログラムで動作させる方式(SIMD: Single Instruction Stream, Multiple Data Stream)では、プログラムの自由度が減少し、所望 の結果をもたらすプログラムが開発できない事態も想定される。
[0030] したがって、上記の従来の分散メモリ型の並列アーキテクチャに基づく情報処理技 術では、プロセッサ間通信ができるだけ少なくなるように、大規模データをプロセッサ 間で共有することなぐ大規模データを個々のプロセッサ内に保持したまま、大規模 データの処理を実現することが求められている。
[0031] そこで、本発明は、並列コンピュータのアーキテクチャを採用して大量のデータを情 報処理する際に、複数のプロセッサ間でデータを分掌管理するための情報処理方法 の提供を目的とする。
[0032] また、本発明は、上記の情報処理方法をコンピュータに実行させるためのプロダラ ムの提供を目的とする。
[0033] 更に、本発明は、上記の情報処理方法を実現する情報処理システムの提供を目的 とする。
課題を解決するための手段
[0034] 本発明は、表形式データの実体的要素である値リスト及びポインタ配列を個々の処 理モジュールにローカルに保存し、複数の処理モジュール間では、データ自体では
なぐデータの順序番号 (又は、順位)という指標がグローバルに保持されるという分 散メモリ型の並列処理アーキテクチャを採用している。また、本発明は、単一命令に より種々のメモリに記憶されたデータを入出力し処理するように、処理と通信が統合さ れたアルゴリズムを採用して 、る。
[0035] 上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環 状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロッ クを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコー ドの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データ の項目値に対応した項目値番号の順序に該項目値が格納されて 、る値リストと、を 含む、情報処理システムにおいて、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール 間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュ 一ルの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数 の処理モジュール間で一意に決まるグロ一ノ レな項目値番号を付与するステップと
を有し、
グローバルな情報ブロックを構築する情報処理方法が提供される。これにより、レコー ドに対応したグローバルな順序番号と、項目値に対応したグローバルな項目値番号 を、複数の処理モジュール間で一意に決めることにより、グローバルな大量の表形式 データを複数の処理モジュールで分掌管理するグローバルな情報ブロックを構築す ることが可能になる。
[0036] 好ま 、実施態様にぉ 、ては、前記グローバルな順序番号を割り当てるステップは 、前記各処理モジュールの表形式データのレコードの順番を表す番号に、前記各処 理モジュールに割り当てられたオフセット値を加算することにより、前記グローバルな 順序番号を計算する。これにより、グローバルな順序番号は処理モジュール間で通 信をしなくても一意に決めることができる。
[0037] 好ま 、実施態様にぉ 、ては、前記グロ一ノ レな項目値番号を付与するステップ
は、前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該 各処理モジュールの値リストを送信し、前記各処理モジュールが前記他の処理モジ ユールから前記他の処理モジュールの値リストを受信し、前記他の処理モジュールか ら受信した値リスト中の項目値のうち、当該各処理モジュールの値リスト中の項目値よ りも前に順序付けされる値の個数をカウントし、当該各処理モジュールの値リスト中の 項目値の項目値番号を該個数分だけ引き上げることにより前記グローバルな項目値 番号を計算する。これにより、グローバルな項目値番号は、値リストの通信と統合した 処理によって一意に決めることができる。
[0038] また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象とな るレコードに対応した項目値番号を指定する情報をポインタ配列力 削除するステツ プと、
を有し、グローバルな情報ブロックのデータを削除する情報処理方法が提供される。 これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の レコードを削除することが可能になる。
[0039] また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの
レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象とな るレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の 挿入位置に確保するステップと、
を有し、グローバルな情報ブロックのデータを挿入する情報処理方法が提供される。 これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の 位置にレコードを追加することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、 前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、 前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象 となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する ステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジユー ルの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リ ストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュ ール間で新 U、グローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法が提供される。これに より、複数の処理モジュール間で分掌管理されている表形式データの任意のレコー ドのデータを更新することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
前記ローカルな情報ブロックの値リストに格納されて 、る項目値のうち現在のポイン タ配列の要素によって指定されて 、る現在の項目値番号に対応した項目値が該現 在の項目値番号の順序に格納されるように前記値リストを更新するステップと、 前記更新された値リストに格納されて 、る項目値を指定するように、前記現在のポ インタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップ と、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法が提供される。こ れにより、複数の処理モジュール間で分掌管理されて 、る表形式データの不要なデ ータを消去し、メモリ使用効率、処理効率を高めることが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!ヽる値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決 定するステップと、
前記新し 、レコードの個数に基づ 、て、新し 、グローバルな順序番号を再配置さ れるべき前記新し 、レコードに割り当てるステップと、
前記各処理モジュール力 論理的に環状に接続された他の処理モジュールへ、前 記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番 号と、該現在のグロ一ノ レな順序番号に対応した現在の値リスト中の項目値と、を送 信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、 を受信するステップと、
前記各処理モジュール力 前記他の処理モジュール力 受信した前記現在のグロ 一バルな順序番号の中で前記各処理モジュールに再配置されるべき前記新 、レ コードに割り当てられた前記新 、グローバルな順序番号と一致する前記現在のグ ローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記 憶するステップと、
前記各処理モジュール力 前記新 、レコードの順番に新 、項目値番号を指定 する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前 記新 、項目値番号の順序に格納した新 、値リストと、を生成するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記新 、値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の 処理モジュールの前記新 、値リストとを比較し、前記各処理モジュールの前記新し V、値リストの項目値に、前記複数の処理モジュール間で一意に定まる新し 、グロ一 バルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法が提供される。これに より、アプリケーションの要求に応じて、処理モジュール間での表形式データの分掌 の割り振りを自由に変更することが可能になる。
[0043] また、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を 情報処理システムの処理モジュールのコンピュータに実行させるためのプログラムが 提供される。
[0044] また、上記目的を達成するため、本発明によれば、上記本発明のプログラムを記録 したコンピュータ読み取り可能な記録媒体が提供される。
[0045] さらに、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法 を実行するように構成された処理モジュールを含む情報処理システムが提供される。 発明の効果
[0046] 本発明によれば、分散メモリ型の並列処理アーキテクチャに基づいて、大量のデー タを分掌管理することができる情報処理システムを提供することが可能となる。
発明を実施するための最良の形態
[0047] [ハードウェア構成]
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図 3は、本 発明の実施の形態に力かる情報処理システムの概略を示すブロックダイヤグラムで ある。この実施形態では、処理モジュールは、プロセッサ付きメモリモジュール(以下 、「PMM」と称する)により構成される。図 3に示すように、この実施の形態においては
、複数の処理モジュールを論理的に環状に接続するため、複数のプロセッサ付きメ モリモジュール PMM32— 0、 PMM32— 1、 PMM32— 2、 · · ·がリング状に配置さ れ、隣接するメモリモジュール間を、時計回りにデータを伝達する第 1のバス (たとえ ば、符号 34— 0、 34—1参照)、および、反時計回りにデータを伝達する第 2のバス( たとえば、符号 36— 0、 36— 1参照)が接続している。第 1のバスおよび第 2のノ スで は、 PMM間のパケット通信が実行される。本実施の形態において、このパケット通信 が実行される伝送路 (パケット伝送路)を、第 1のバスおよび第 2のバスと称する。
[0048] 本実施の形態では、 PMMを、一方が時計回りにパケットを伝送する第 1のバス (第 1の伝送路)、他方が反時計回りにパケットを伝送する第 2のバス (第 2の伝送路)にて 、リング状に接続している。このような構成は、パケット伝送の遅延時間などを均一化 することができるため有利である。
[0049] 尚、処理モジュール間の物理的な接続形態は、本実施の形態に示されるような形 態に限定されるものではなぐ処理モジュールを論理的に環状に接続できる形態で あればどのような形態でもよい。例えば、バス型、スター型などの種々の接続形態を 採用することができる。
[0050] 図 4は、 PMM32の構造の一例を示す図である。図 4に示すように、各 PMM32— i は、 PMM間で共通の命令にしたがって、メモリのアクセス、演算の実行などを制御 する制御回路 40と、ノ スインタフェース (IZF) 42と、メモリ 44とを備えている。
[0051] メモリ 44は、複数のバンク BANK0、 1、 · · ·、 n (符号 46— 0、 · · ·、 n)を有し、それ ぞれに、後述する所定の配列を記憶できるようになって 、る。
[0052] また、制御回路 40は、外部の他のコンピュータ等とのデータ授受が可能である。ま た、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにァクセ スできるようにしても良い。
[0053] さらに、複数のプロセッサ付きメモリモジュールのメモリが同一のメモリ空間に存在し ていても構わない。この場合、パケット通信はメモリ参照で実現される。或いは、複数 のプロセッサ付きメモリモジュールのプロセッサが物理的に同一の CPUであってもよ い。
[0054] [表形式データ]
表形式データとは、情報の項目に対応した項目値を含むレコードの配列として表さ れるデータである。この表形式データは、例えば、ある項目(次元)のある項目値 (次 元値)毎に、別の項目の項目値 (メジャー)を集計する処理の対象になる。ここで、メ ジャーの集計とは、メジャーの個数をカウントしたり、メジャーの総和を算出したり、メ ジャーの平均値を算出したりすることである。また、次元数は、 2次元以上でも構わな い。例えば、図 5は、ある保育園における園児の性別'年齢 '身長の論理的な表形式 データである。ここで、性別の人数を求める処理や、性別'年齢別に身長の合計値を 求める処理は、本発明を適用することにより実現される情報処理の一例としての集計 処理である。
[0055] 本発明は、このような表形式データの高速、並列的な情報処理を実現するための データ構造の構築技術、データの更新技術、及び、データの再配置技術を提供する ものである。
[0056] [従来のデータの記憶構造]
図 5に示された表形式データは、上述の国際公開第 WOOOZ10103号に提案し たデータ管理機構を用いることにより、単一コンピュータ内では図 6に示されるような データ構造として記憶される。
[0057] 図 5に示すように、表形式データの各レコードの並び順の番号と、内部データの並 び順の番号を対応付ける配列 601 (以下、この配列を「OrdSet」のように略記する。 ) には、表形式の各レコード毎に内部データの並び順番号が値として配置される。この 例では、すべての表形式データが内部データとして表されるため、表形式データのレ コード番号と内部データの並び順番号とは一致する。
[0058] 例えば、性別に関しては、表形式データのレコード 0に対応する内部データの並び 順番号は、配列 OrdSet601から「0」であることがわかる。並び順番号が「0」であるレ コードに関する実際の性別の値、即ち、「男」又は「女」は、実際の値が所定の順序に 従ってソートされた値リスト 603 (以下、値リストを「VL」のように略記する。)へのポイン タ配列 602 (以下、ポインタ配列を「VNo」のように略記する。)を参照することによって 取得できる。ポインタ配列 602は、配列 OrdSet601に格納されている並び順番号の 順に従って、実際の値リスト 603中の要素を指し示すポインタを格納している。これに
より、表形式データのレコード「0」に対応する性別の項目値は、(1)配列 OrdSet601 力もレコード「0」に対応する並び順番号「0」を取り出し、(2)値リストへのポインタ配列 602から並び順番号「0」に対応する要素「1」を取り出し、(3)値リスト 603から、値リス トへのポインタ配列 602から取り出された要素「1」によって指し示される要素「女」を 取り出すことにより取得できる。
[0059] 他のレコードに対しても、また、年齢及び身長に関しても同様に項目値を取得する ことができる。
[0060] このように表形式データは、値リスト VLと、値リストへのポインタ配列 VNoの組合せに より表現され、この組合せを、特に、「情報ブロック」と称する。図 6には、性別、年齢及 び身長に関する情報ブロックがそれぞれ情報ブロック 608、 609及び 610として示さ れている。
[0061] 単一のコンピュータ力 単一のメモリ(物理的には複数であっても良いが、単一のァ ドレス空間に配置されアクセスされるという意味で単一のメモリ)であれば、当該メモリ に、順序集合の配列 OrdSet、各情報ブロックを構成する値リスト VLおよびポインタ配 列 VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、 その大きさに伴ってメモリ容量も大きくなるため、これらを分散配置できるのが望まし い。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが 望ましい。
[0062] そこで、本実施の形態においては、複数の PMM力 重なることなくレコードのデー タを分掌把握し、 PMM同士のパケット通信により、高速な集計を実現している。
[0063] [本実施の形態によるデータ記憶構造]
図 7は、本実施の形態によるデータ記憶構造の説明図である。同図では、図 5及び 図 6によって示された表形式のデータが、一例として、 PMM— 0、 PMM— 1、 PMM 2及び PMM— 3の 4個の処理モジュールに分散配置され、分掌把握されて!、る。 説明の便宜上、処理モジュールの個数は 4個である力 本発明は処理モジュールの 個数によって限定されるものではな 、。
[0064] 本実施の形態では、各 PMMで分掌把握されているレコードを、 PMM— 0から PM M— 3までの 4個の PMMで掌握されて!、るすべてのレコードの中で一意に順序付け
ることができるようにするため、各レコードにはグローバル 'レコード番号が一意に割り 当てられている。図 7では、グローバル 'レコード番号は「GOrd」として表されている。 このグローバル.レコード番号 GOrdは、各 PMM内の配列 OrdSetの各要素が、すべ てのレコード中で何番目であるかを示している。ここで、配列 OrdSetは、データ全体 力 各 PMM内部への順序保存写像となるように定められているので、 GOrdは昇順 にすることができる。また、各 PMM内において、 GOrd配列(=グローバル順序配列) のサイズは OrdSet配列(順序配列)のサイズと一致して 、る。
[0065] 更に、本実施の形態では、各 PMMで分掌把握されている項目値、即ち、値リスト VL中の各値が、すべての PMMで掌握されて!、る項目値の中で何番目の位置にあ るかを示すためのグローバル項目値番号が設けられる。図 7では、このグローバル項 目値番号は「GVNo」として示されている。値リスト VLは値の順 (例えば、昇順又は降 順)に並べられているので、グローバル項目値番号 GVNoも昇順 (又は降順)に設定 される。配列 GVNoのサイズは、配列 VLのサイズと一致している。各処理モジュール で個別に掌握されている項目値が全体の中で何番目であるかを識別することにより、 各処理モジュールでの集計結果を全体として一つに統合することが可能になる。
[0066] 尚、図 7において、各 PMMに割り当てられている値 OFFSETは、当該 PMMが分掌 する先頭のレコードが、図 6に示された一体的なレコードの中の何番目のレコードに 対応しているかを示すためのオフセット値である。上述のように、各 PMMの配列 OrdSetは、データ全体力 各 PMM内部への順序保存写像となるように定められて いるので、このオフセット値 OFFSETと当該 PMMにおける配列 OrdSetの要素の値を 合計した値は、グローバル 'レコード番号 GOrdと一致する。好ましくは、このオフセット 値が各 PMMに通知され、各 PMMはこのオフセット値 OFFSETに基づ!/、てグローバ ル 'レコード番号を決定することができる。
[0067] 各 PMMのグローバル 'レコード番号 GOrd及びグローバル項目値番号 GVNoは、予 め各 PMMの外部で計算して各 PMMに設定することができる力 後述のコンパイル 処理によって各 PMM自体が設定することも可能である。
[0068] [グローバル集合配列 Gordとグローバル項目値番号配列 GNoにつ!/、て]
次に、本実施の形態にて導入した配列 GOrdおよび配列 GVNoの意義にっ 、て説
明する。グローバル順序配列 GOrdは、各 PMMが掌握するローカルな表形式データ を集合させたグローバルな表形式データ中、各 PMMの掌握する表形式データの各 レコードの位置 (順位)を示している。即ち、本実施の形態では、グロ一ノ レ順序配列 GOrd及び順序配列 OrdSetにより、レコードの位置情報を、グローバルな成分とロー カルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能とな るとともに、各 PMMが単独で処理を実行することも可能となる。
[0069] 以下の実施例の説明では、 PMMが各項目の情報ブロックを保持するように構成さ れているが、 PMMが表形式データをそのまま保持するような場合でも、上記 GOrdは 同様に機能する。
[0070] 例えば、以下の実施例において後述のコンパイルが終了した状態で、グローバル 順序配列 GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式 データ全体のビューを作成することができる。
[0071] [コンパイル処理の概要]
コンパイル処理は、各処理モジュールでデータを管理するために使用するグローバ ル.レコード番号 GOrdとグローバル項目値番号 GVNoを設定するための処理である。 グローバル.レコード番号 GOrdは、上述のオフセット値 OFFSETを使用することにより 簡単に設定することができる。一方、グローバル項目値番号 GVNoは、各処理モジュ ールが個別に保持して 、る値リストに基づ 、て、すべての処理モジュール間で共通 に順序付けされる番号である。各処理モジュールは、この順序番号付与処理を用い ることによってグローバル項目値番号 GVNoを設定することが可能である。そこで、こ の順序番号付与処理にっ 、て詳述する。
[0072] [順序番号付与処理]
本実施の形態による情報処理システムのように、順序付きの値のリストを格納してい るメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されてい る情報処理システムでは、各処理モジュールで個別に順序付けされて 、る値に複数 の処理モジュール間で共通の順序番号を付与する情報処理方法、即ち、順序番号 付与方法が必要である。
[0073] 順序番号付与処理は、例えば、コンパイル処理にお!、て、グローバル項目値番号
を設定する場合にも使用される。この順序番号付与処理は、同一値には唯一の番号 しか付与しないことを特徴としている。したがって、このタイプの順序番号付与処理は 、特に、同一値消去型の順序番号付与処理と称する。
[0074] 図 8は、実施の形態にかける順序番号付与方法のフローチャートである。同図に示 されるように、各処理モジュールは、自処理モジュール内の値のリスト中の各値の順 序番号の初期値をメモリに格納する (ステップ 801)。
[0075] 次に、各処理モジュールは、自処理モジュールのメモリに格納されている値のリスト を論理的に次の段に接続された処理モジュールへ送信する (ステップ 802)。更に、 各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に 前の段に接続された処理モジュール力 受信した値のリストの中から上記各値よりも 前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各 値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール 内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納す る(ステップ 803)。
[0076] 次に、各処理モジュールは、受信した値のリスト中の値から自処理モジュール内の 値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続さ れた処理モジュールへ送信し (ステップ 804)、各処理モジュールは、 自処理モジュ ール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュール 力 受信した更なる値のリストの中力 上記各値よりも前に順序付けされる値の個数 をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた 個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序 番号を更新し、更新された順序番号をメモリに格納する (ステップ 805)。
[0077] 続いて、各処理モジュールは、送信ステップ 802において論理的に次の段に接続 された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処 理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信 されるまで、ステップ 2204とステップ 2205を繰り返し実行する(ステップ 806)。
[0078] この順序番号付与方法によれば、各処理モジュールは、他の処理モジュールが保 持する値のリストを重複無く受け取り、自処理モジュールが保持する値にグローバル
な順序番号を付与することができる。上述のように、各処理モジュールが予め順序付 きの値のリストを保持している場合には、非常に効率的にグローバルな順序番号を付 与することが可能である。なぜならば、値のリストが予め順序付けされている場合には 、昇順 (又は降順)の一方向に順序を比較するだけでよいからである。もちろん、各処 理モジュールの保持する値のリストが順序付きでな 、場合でも同様の結果を得ること ができる。その場合には、例えば、各処理モジュールは、他の処理モジュールから受 信した値のリスト中の値と、自処理モジュールが保持している値のリスト中の値を、す ベての組合せについて順番に比較して、各値よりも前に、即ち、上位に、順序付けさ れる値の個数をカウントして、各値の順序番号を更新すればょ 、。
[0079] 本実施の形態の順序番号付与方法では、各処理モジュールは、他の処理モジュ 一ルカ 受信した値のリストを保存する必要はなぐ自処理モジュールが保持して ヽ る値のリストに順序を付けるだけで、すべての処理モジュールに共通の順序番号を付 与することができる。
[0080] また、この順序番号付与方法は、他の処理モジュールからの値のリストの受信順に 影響されないので、処理モジュール間の物理的な接続形態に全く依存しない。した がって、伝送路と順序番号更新回路を多重化することによって、更なる高速化を実現 することができる。
[0081] 図 9A〜D及び図 10A〜Dは、第 1の順序番号付与処理の説明図である。図 9A〜 Dには、各 PMMが次の段に接続された PMMへ送信する値のリストがステップ毎に 示されている。図 10A〜Dには、各ステップで、 PMMが前の段に接続された PMM 力 受信した値のリストが示されている。この例では、初期状態として、 PMM— 0が値 のリスト [1, 3, 5, 6]を保持し、 PMM—1が値のリスト [0, 2, 3, 7]を保持し、 PMM 2が値のリスト [2, 4, 6, 7]を保持し、 PMM— 3が値のリスト [0, 1, 3, 5]を保持し ている。
[0082] ステップ 3の終了時点で、各 PMMは、他のすべての処理モジュールからの値のリ ストを受信することができる。この時点で、 自処理モジュールが保持している値のリスト と、受信した値のリストを合わせることにより、すべての値の順序を決めることができる 。更に、ステップ 4の終了時点では、すべての値を重複無く受信できることが分かる。
[0083] この第 1の順序番号付与処理では、処理モジュールは、図 9A〜Dに示されるように 、論理的に環状に接続され、各処理モジュールは自処理モジュール内に重複値を 持たないリストを保持する。そして、各処理モジュールは、自処理モジュール内のリス トを論理的に下流の処理モジュールへ送出し、論理的に上流の処理モジュールから 1モジュール分のリストを受信する。各処理モジュールは、上流のモジュールから受 信したリスト中の値から、自処理モジュール内に保持して 、るリスト中に含まれる値と 一致した値を除き、リストを下流の処理モジュールへ送出する。
[0084] この第 1の順序番号付与処理によれば、処理モジュールの総数が Nであるとき、各 処理モジュールは、(N— 1)回の転送サイクル終了までに、他の処理モジュールの 保持するリストを重複無く受け取ることができる。また、各処理モジュールは、 N回の 転送サイクル終了までに、全モジュールの保持するリストを重複無く受け取ることがで きる。特に、各処理モジュールに保持されている値のリストが、値の昇順又は値の降 順に整列されているならば、重複値を消去する処理をより効率的に実行することがで きる。
[0085] この第 1の順序番号付与処理は、全ての処理モジュールを同一の構造により実現 できる点で非常に優れている。但し、この第 1の順序番号付与処理では、 1つの値が 何回も消去され、及び Z又は、多数回の転送が行われることがある。具体的には、同 じ値が多数の処理モジュール内で発生している場合、その値は、その値を保持して いる処理モジュールを通過する都度消去される。また、処理モジュールの個数を N個 とすると、ある処理モジュールに、最も遠い処理モジュールからのデータが到着する までに、 N— 1回の転送が行われる。
[0086] この転送回数は、後述のトーナメント方式と呼ぶ付カ卩的なメカニズムを導入すること によってさらに削減することが可能である。
[0087] 図 11は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 1100 の第 1の例の説明図である。同図では、図 9A〜D及び図 10A〜Dに関して説明した 例と同様に、初期状態として、 PMM— 0が値のリスト [1, 3, 5, 6]を保持し、 PMM 1が値のリスト [0, 2, 3, 7]を保持し、 PMM— 2が値のリスト [2, 4, 6, 7]を保持し 、 PMM— 3が値のリスト [0, 1, 3, 5]を保持している。
[0088] 最初のステップで、 PMM— 0は自処理モジュール内の値のリスト [0, 1, 3, 5]を統 合装置 1へ送出し、 PMM— 1は自処理モジュール内の値のリスト [0, 2, 3, 7]を統 合装置 1へ送出し、 PMM— 2は自処理モジュール内の値のリスト [2, 4, 6, 7]を統 合装置 2へ送出し、 PMM— 3は自処理モジュール内の値のリスト [0, 1, 3, 5]を統 合装置 2へ送出する。
[0089] 次のステップで、統合装置 1は、 PMM— 0と PMM—1から受け取った値のリストか ら重複値を消去して値のリスト [0, 1, 2, 3, 5, 6, 7]を生成し、統合装置 3へ送出す る。同様に、統合装置 2は、 PMM— 2と PMM— 3から受け取った値のリストから重複 値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、統合装置 3へ送出する。
[0090] 最後のステップで、統合装置 3は、統合装置 1と統合装置 2から受け取った値のリス トから重複値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、 PMM—1〜P MM— 4の各処理モジュールへこの値リストをブロードキャストする。
[0091] この例では、値のリストの重複値の消去は、処理モジュールではなぐ統合装置に おいて行われる。値のリストが昇順又は降順に整列されているならば、統合装置は、 昇順又降順のリスト同士を統合すればよいので、フロー制御が可能であれば、統合 装置を少ないバッファメモリで実現することが可能である。
[0092] この例では、統合装置と処理モジュールが完全に分離されている力 一部の統合 処理を処理モジュールが担当してもよい。図 12は、このような本発明の実施の形態 にかかる順序番号を付与するトーナメント装置 1200の第 2の例の説明図である。同 図では、図 11と同様に、初期状態として、 PMM— 0が値のリスト [1, 3, 5, 6]を保持 し、 PMM—1が値のリスト [0, 2, 3, 7]を保持し、 PMM— 2が値のリスト [2, 4, 6, 7 ]を保持し、 PMM— 3が値のリスト [0, 1, 3, 5]を保持している。
[0093] 最初のステップで、 PMM— 0は自処理モジュール内の値のリスト [0, 1, 3, 5]を P MM— 1へ送出し、 PMM— 2は自処理モジュール内の値のリスト [2, 4, 6, 7]を PM M— 3へ送出する。
[0094] 次のステップで、 PMM—1は、 PMM— 0から受け取った値のリストと自処理モジュ ール内の値のリスト [0, 2, 3. 7]を統合し、重複値を消去して値のリスト [0, 1, 2, 3, 5, 6, 7]を生成し、統合装置 3へ送出する。同様に、 PMM— 3は、 PMM— 2から受
け取った値のリストと自処理モジュール内の値のリスト [0, 1, 3, 5]を統合し、重複値 を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、統合装置 3へ送出する。
[0095] 最後のステップで、統合装置 3は、統合装置 1と統合装置 2から受け取った値のリス トから重複値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、 PMM— 1〜P MM— 4の各処理モジュールへこの値リストをブロードキャストする。
[0096] 図 12の例では、処理モジュール PMM— 2 (及び Z又は、 PMM— 0)は統合処理 のため利用されていない。そこで、 PMM—1からの出力と PMM— 3空の出力を統 合する統合装置 3の役割を PMM— 2又は PMM— 0が代替してもよい。図 13は、こ のような本発明の実施の形態に力かる順序番号を付与するトーナメント装置 1300の 第 3の例の説明図である。この例によれば、統合装置の数は、処理モジュール数 1 になるので、一般に、非常に多数の処理モジュールが存在する場合でも、図 11又は 12に示された例のように、処理モジュールとは別個に独立した統合装置を設けること なぐトーナメント方式の順序番号付与処理を実現することができる。
[0097] 図 11から図 13を参照して説明した例では、メモリ空間は単一のメモリ空間でもよぐ また、複数の CPUが存在していてもよい。処理モジュールや統合装置の間の通信路 は論理的な通信路であり、通信が物理的にはメモリ参照によって実現される場合でも 、トーナメント方式の順序番号付与処理を実現することができる。
[0098] [コンパイル処理の詳細]
図 14は、表形式データを表現する単一コンピュータ(又は、処理モジュール)上の 情報ブロックの説明図である。同図において、 Ordsetは、既に説明したように、表形 式データのレコードの順番を表す順序配列であり、 VNoは、レコードの順番に項目値 番号を指定する情報 (或いは、項目値番号自体)が格納されたポインタ配列であり、 VLは、項目値番号の順に項目値が格納された値リストである。コンパイル処理は、こ のような表形式データを、複数の処理モジュールで分掌管理するためのデータ構造 を構築する処理である。
[0099] 図 15は、図 14の表形式データを 4個の処理モジュール PMM— 0、 PMM— 1、 P MM— 2及び PMM— 3で分掌管理するデータ構造の説明図である。同図にお!/、て 、 Gordは、各処理モジュールで管理されているレコードが全体で何番目のレコードで
あるかを表すグローバル順序番号であり、 GVNoは、各処理モジュールで管理されて いる値リスト中の値力 全体で何番目の位置にあるかを表すグローバル項目値番号 である。
[0100] コンパイル処理は、図 14に示されたデータ構造を図 15に示されたデータ構造に変 換する処理である。図 16は、本発明の実施の形態にカゝかるコンパイル処理のフロー チャートである。本例のコンパイル処理は、ステップ 1601において、各処理モジユー ルの表形式データのレコードの順番を表す番号に、各処理モジュールに割り当てら れたオフセット値を加算することにより、グロ一ノ レな順序番号、即ち、グローバル順 序付き配列の要素の値を計算する。オフセット値は、各処理モジュールに割り当てる レコードの数に基づいて決まる。図 15の例では、オフセット値は、 ΡΜΜ— (½ ΡΜ Μ— 3の順に、 0、 3、 5及び 8である。
[0101] 次に、ステップ 1602から 1607では、各処理モジュールは、図 8を参照して説明し た順序番号付与処理を利用して、各処理モジュール内の項目値にグローバル項目 値番号を与える。グローバル項目値番号は、記各処理モジュールが自処理モジユー ルの値リストと他の処理モジュールの値リストとを比較することにより、自処理モジユー ルの値リストの項目値に対して、複数の処理モジュール間で一意に決まるグローバル な項目値番号である。
[0102] 各処理モジュールは、ステップ 1602で、論理的に環状に接続された他の処理モジ ユールへ自処理モジュールの値リストを送信し、次に、ステップ 1603で、他の処理モ ジュールから前記他の処理モジュールの値リストを受信する。ステップ 1604で、各処 理モジュールは、受信した値リストの重複値を消去する。各処理モジュールは、ステツ プ 1605で、他の処理モジュールから受信した値リスト中の項目値のうち、自処理モジ ユールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、自処理 モジュールの値リスト中の項目値の項目値番号をその個数分だけ引き上げる。各処 理モジュールは、ステップ 1606で、他の処理モジュール力 受信し、重複値が削除 された値リストを論理的に次に接続された他の処理モジュールへ送信する。各処理 モジュールは、ステップ 1607で、他の処理モジュールから送られた値リストに対して 、ステップ 1602からステップ 1606までの処理を繰り返し、グローバル項目値番号の
付与を終了する。
[0103] [データ更新処理]
図 15に示されるようなデータ構造で管理されている表形式データに対して、様々な 処理が行われる。検索、ソート、集計などの処理の他、データの削除、データの挿入 、データの上書きなどの基本的な操作が表形式データに対して行われる。そこで、次 に、各処理モジュールでデータが分掌管理されているような本発明のデータ構造に 対するデータ更新処理を説明する。
[0104] [レコード削除処理]
例えば、図 15に示された表形式データのうち、 PMM— 0に保持されている GOrd= 2のレコードと、 PMM- 1に保持されて!、る GOrd= 3のレコードの 2個のレコード(2 行)を削除する場合に関して、本発明の実施の形態にかかるレコード削除処理を説 明する。
[0105] レコード削除処理は、削除対象となるレコードを特定するステップと、前記削除対象 となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバ ルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対 応した項目値番号を指定する情報をポインタ配列力 削除するステップと、を含む。
[0106] 図 17には、削除されるべき 2個のレコードに対応した文字が太字のイタリック体で示 されている。レコードが削除されると、レコードに付与されているグローバル順序番号 GOrdと、レコードの順番に項目値番号が格納されたポインタ配列 VNoと、各処理モジ ユール内でレコードに一意に付与されているローカルな順序番号 OrdSetを更新しな ければならない。但し、この段階では、値リスト VLは更新しない。値リストを更新するた めには、値リストに格納された項目値を参照するレコードが存在しないこと、即ち、そ の項目値を指定する VNoが存在しな 、ことを確かめる必要があるからである。値リスト VLを更新しな!、ので、グローバル項目値番号 GNoも更新する必要がな!、。
[0107] GOrdの更新は、削除対象となるレコードに対応したグローバルな順序番号よりも後 に順序付けされたグローバル順序番号を削除される個数分だけ引き下げることによ つて行われる。本例では、最初に、 PMM— C GOrd= 2 PMM— 1の GOrd= 3と 、を削除し、次に、グロ一ノ レ順序番号が削除された PMM内では、削除されたグロ
一バル順序番号よりも後方に格納されているグローバル順序番号を前方へ移動する
。 PMM— 0では、 GOrd= 2は末尾のグローバル順序番号であるため、グローバル順 序番号の移動は行われないが、 PMM— 1では、削除される GOrd= 3の後方に GOrd =4が存在するので、この GOrd=4を 1個分だけ前方へ移動させる。さらに、残ったグ ローバル順序番号は、当該グローバル順序番号よりも前方に削除されたグローバル 順序番号が存在する場合、その削除された個数分だけグローバル順序番号の値を 小さくする(降順の場合)。図 18は、本発明の実施の形態に力かるレコード削除処理 の説明図であり、同図には、グローバル順序番号 GOrdが更新される様子が示されて いる。
[0108] OrdSetの更新は、削除された GOrdと同じ場所にある OrdSetを削除し、さらに、
OrdSetが削除された PMM内では、削除された OrdSetよりも後方に格納されいてる OrdSetは、削除された個数分だけ前方へ移動されると共に、削除された個数分だけ 値が減少させられる。図 18には、 OrdSetが更新される様子も示されている。
[0109] 最後に、ポインタ配列 VNoは、「性別」、「年齢」、「身長」及び「体重」の全ての項目 に関して、削除されるレコードに対応した OrdSetにより指定された VNoを削除し、 VNo が削除された PMM内では、削除された VNoよりも後方に格納されいてる VNoは、肖 IJ 除された個数分だけ前方へ移動される。図 18には、 VNoが更新される様子も示され ている。
[0110] 以上の処理によって、図 19に示されるようなレコード削除後の表形式データが得ら れる。
[0111] [レコード挿入処理]
例えば、図 19に示された表形式データのうち、 PMM— 1に 2個のレコードを挿入 する場合に関して、本発明の実施の形態にカゝかるレコード挿入処理を説明する。本 実施の形態によれば、レコードの挿入処理は、挿入するレコードの格納領域を確保 する処理であり、挿入するレコードの項目値を所定の値とすることにより処理の高速 ィ匕を図っている。例えば、挿入されるレコードの各項目の仮の項目値には、そのレコ 一ドが揷入される PMM内に保持されている最小の項目値を使用する。
[0112] レコード挿入処理は、挿入対象となるレコードの挿入位置を特定するステップと、前
記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされ たグローバルな順序番号を削除される個数分だけ引き上げ、前記挿入対象となるレ コードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿 入位置に確保するステップと、により構成される。
[0113] 図 19の表形式データの PMM— 1に、現在存在するレコードは、 GOrd= 2のレコー ド 1つだけであるが、この表形式データは、図 17の表形式データからレコードを削除 することにより生成された表形式データであるため、 PMM— 1には、削除されたレコ ードの項目値、即ち、「性別」 =女性、「年齢」 = 16、「身長」 = 172及び「体重」 =48 も存在している。このとき、 PMM—1に保持されている最小の項目値は、 「性別」 =男性、「年齢」 = 16、「身長」 = 172、「体重」 =48
である。したがって、 PMM—1に挿入されるレコードの仮の項目値は、
「性別」 =男性、「年齢」 = 16、「身長」 = 172、「体重」 =48
である。図 20は、本発明の実施の形態に力かるレコード挿入処理の説明図である。 同図では、挿入されるべきデータが太字、イタリック体で示されている。レコード挿入 処理の手順の一例は次の通りである。
[0114] (手順 1)レコードを挿入する位置に、 GOrd、 OrdSet, VNoを作成する。
[0115] (手順 2)作成された GOrdには、その作成された位置に対応した値をセットする。本 例では、 PMM— 1内の 1番目と 2番目の位置にレコードが挿入されるので、その位置 に対応した GOrdの値、 2と 3がセットされる。また、 PMM— 1内で挿入されたレコード よりも後方に順序付けられているレコードの GOrdは、挿入されたレコードの個数分だ けインクリメントされる。
[0116] (手順 3)作成された OrdSetには、 PMM内でその Ordsetが作成された位置に対応 した値をセットする。本例では、 PMM— 1内の 1番目と 2番目の位置にレコードが揷 入されるので、その位置に対応した OrdSetの値、 0と 1がセットされる。また、 PMM— 1内で挿入されたレコードよりも後方に順序付けられているレコードの OrdSetは、挿入 されたレコードの個数分だけインクリメントされる。
[0117] (手順 4)作成された VNoには、 0をセットする。作成されたレコードの項目値は最小 の項目値であるため、 VNoは 0に固定される。
[0118] 以上の処理によって、図 21に示されるようなレコード挿入後の表形式データが得ら れる。また、挿入されたレコードの値は、後述のデータ上書き処理によって所望の値 にセットすることができる。
[0119] 尚、上記の例では、 VNoに一番小さい値 0をセットしている力 例えば、ブランクのま までもよ 、。
[0120] また、上記の例では、 PMM—1に 1行以上のレコードが存在しているので、挿入さ れるレコードの項目値として、既存のデータのうちの最小の項目値を使用して 、るが 、レコードを挿入する PMMにデータが存在しない場合には、例えば、グローバル項 目値番号 GVNo = 0となる最小の項目値を使用してデータを作成することができる。こ の場合も VNoは 0であり、 VLの値は全ての PMMに保持されている項目値のうちの最 小値である。
[0121] [データ上書き処理]
上記のレコード挿入処理で挿入されたデータは、所定の値にセットされて ヽるので
、セットされた所定の値を実際に所望のデータで書き換えることが必要になる。そこで 、次に、このようなデータの書き換えを行う本発明の実施の形態に力かるデータ上書 き処理を説明する。図 22は、図 15に示された表形式データの一部、具体的には、 P MM— 0の 2番目のレコード及び 3番目のレコードの身長と、 PMM— 1の 1番目のレ コードの身長を上書きする例の説明図である。図 23は、本発明の実施の形態にかか るデータ上書き処理のフローチャートである。
[0122] データ上書き処理は、ステップ 2301で、上書きするデータ配列をコンパイルする。
具体的には、上書き対象となるレコードを特定し、上書きデータを設定し、上書きデ ータを表現する項目値番号と項目値の組を生成する。図 24は、上書きするデータを 各 PMMでコンパイルする処理の説明図である。同図には、 PMM— 0における処理 が示されている。
[0123] 次に、ステップ 2302で、値リスト VLがマージされる。生成された項目値番号と項目 値の組をマージすることにより、上書き対象となるレコードを含むローカルな情報プロ ックの値リストを生成する。図 25A〜図 25Dは、上書きデータと元データをマージす る処理の説明図である。マージ処理では、最初に、上書きデータの VLの位置を示す
PIと、元データの VLの位置を示す P2と、マージにより生成される新しい値リスト VLの 位置を示すポインタ P3を 0に初期化する。
[0124] 図 25Aのマージ処理の手順 1では、 P1と P2を比較し、 P2が小さいので、 P2が指定 する Conv.の位置 0に P3の値 0を格納する。次に、 P2が指定する VLの値 159を、新
VLに格納する。続いて、 P2、 P3をインクリメントする。ここで、配列 Conv.は、対応する 値が新 VLに格納される位置を表している。例えば、元データの VLの先頭の値 159に 対応する Conv.の値は 0であるので、項目値 159は新 VLの先頭の値である。
[0125] 図 25Bのマージ処理の手順 2では、 P1と P2を比較し、 P1が小さいので、 P1が指定す る Conv.の位置 0に P3の値 1を格納する。次に、 P1が指定する VLの値 160を、新 VLに 格納する。続いて、 Pl、 P3をインクリメントする。
[0126] 図 25Cのマージ処理の手順 3では、 P1と P2を比較し、 P2が小さいので、 P2が指定 する Conv.の位置 1に P3の値 2を格納する。次に、 P2が指定する VLの値 168を、新
VLに格納する。続いて、 P2、 P3をインクリメントする。
[0127] 以下同様に VLのマージ処理の手順を続けると、図 25Dに示されるようなマージ結 果が得られる。
[0128] 以上の VLのマージ処理の説明では、新しい VLを同時に生成している力 上書きデ ータの VL及び対応した Conv.と元データの VL及び対応した Conv.から、新 VLを生成 することができる。
[0129] 次に、ステップ 2303では、上書き対象となるレコードを含むローカルな情報ブロック のポインタ配列 VNoを更新する。図 26A〜Cは、ポインタ配列を更新する処理の説明 図である。
[0130] 最初に、図 26Aに示されるように、上書きデータの VNoと元データの VNoをそれぞ れ対応した Conv.を利用して、新 VLに対応した VNoへ変換する。例えば、上書きデ ータの配列 VNoのレコード 0に対応する位置には 1が格納されているので、レコード 0 の現在の VLの項目値番号は 1である。この現在 VLの項目値番号 1は、配列 Conv.を 参照すると、新 VLの項目値番号 4に対応していることがわかる。そこで、 VNoのレコー ド 0に対応する要素の値を 1から 4へ変換する。以下同様にして、上書きデータの全 てのレコードと、元データの全てのレコードについて、 VNoの値を変換する。
[0131] 次に、図 26Bに示されるように、 VLを新 VLに置き換え、上書きデータの VNoを元デ ータの VNoの上書きすべき位置へ転送する。これにより、図 26Cに示されるような新し い VNoと VLが完成する。
[0132] PMM— 2についても同様にマージ処理を行うと、図 22の表形式データは、図 27に 示されるような表形式データに変換されている。本例の上書き処理では、「身長」のデ ータが書き換えられるので、「身長」につ 、てのグローバル項目値番号 GVNoは再構 築しなければならない。
[0133] そこで、最後に、ステップ 2304で、グローバル項目値番号 GVNoを再構築する。具 体的には、各処理モジュールが論理的に環状に接続された他の処理モジュールへ 自処理モジュールの値リストを送信し、他の処理モジュールから他の処理モジュール の値リストを受信し、自処理モジュールの値リストと他の処理モジュールの値リストとを 比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で新しい グローバルな項目値番号を付与する。これは、上述の順序番号付与処理に対応して いる。これにより、グローバルな情報ブロックのデータを上書きすることができる。図 28 は、本例のデータ上書き処理によって完成した表形式データの説明図である。
[0134] [スウィープ処理]
上述のレコード削除処理やデータ上書き処理では、削除されたレコードに対応した 項目値や、上書き前の元データに対応した項目値がそのまま残されているので、 VL 及び GVNoの中に実際には使用されて ヽな 、データが含まれることがある。このような 使用されないデータは消去できることが望ましい。そこで、本発明によれば、不要な データを除去するスウィープ処理が提供される。図 29A、 Bは、本発明の実施の形態 にかかるスウィープ処理の説明図である。図 29A、 Bに示されるように、このスウィープ 処理によれば、 VLと GNoがコンデンスされ、 VNoが更新される。
[0135] このスウィープ処理では、ローカルな情報ブロックの値リスト VLに格納されている項 目値のうち現在のポインタ配列 VNoの要素によって指定されている現在の項目値番 号に対応した項目値が現在の項目値番号の順序に格納されるように値リストを更新し 、次に、更新された値リストに格納されている項目値を指定するように、現在のポイン タ配列に格納される現在の項目値番号を更新する。値リストを更新することにより、使
用されないグロ一ノ レ項目値番号 GVNoも消去される。これにより、グローバルな情 報ブロックの不要なデータを除去する。
[0136] 図 30は本発明の実施の形態に力かるスウィープ処理のフローチャートである。図 3 1A〜Hは、それぞれ、図 29A、 Bに示された例に基づぐこのスウィープ処理の進行 状態の説明図である。
[0137] ステップ 3001:最初にフラグ配列 Flagを生成する。 Flagは VL (及び GVNo)と同じサ ィズの整数配列であり、要素を 0で初期化する。
[0138] ステップ 3002 : VNoが指すアドレスの Flag配列の要素(図 31Bにイタリック体で示さ れている)を 0から 1に変更する。フラグの値は 0又は 1である。
[0139] ステップ 3003: Flagが 1の位置に対応する VLの値(図 31 Cにイタリック体で示されて いる)を、新 VLへ先頭カゝら順番に入れる。
[0140] ステップ 3004 : Flagが 1の位置に対応する GVNoの値(図 31Dにイタリック体で示さ れている)を、新 GVNoの先頭力 順に入れる。
[0141] ステップ 3005 : Flagを累計数ィ匕し、 1段後方へ移動する。累計数ィ匕した Flagは Flag' のように表す。 Flagを累計数ィ匕した Flag'は、図 31Eに示されている。
[0142] ステップ 3006 :最後に、 Flag'を参照して、 VNoを変換する。図 31F〜Hには、 VNo の変換処理が示されている。例えば、現在の VNoの先頭の要素 VNo [0] = 2に対して
、配列 Flag'の 3番目の要素 Flag' [2] (太字、イタリック体で示されている)を参照すると
、値は 1であるので、 VNo[0]に 1をセットする(図 31Fに 2→1として示されている)。
[0143] 以上の処理により、図 29Aのスウィープ前のデータは図 29Bのスウィープ後のデー タに変換される。
[0144] 尚、このスウィープ処理では、使用される GVNoの値は、昇順 (又は降順)を保つが、 離散的な値になる可能性がある。 GVNoは、昇順 (又は降順)を維持する限り、離散的 であっても、本発明によるグローバルな情報ブロックを操作して、検索、ソート、集計 などの処理を行うことができる。勿論、必要に応じて、 GVNoが連続値になるように GVNoを再構築することができる。 GVNoの再構築は、上述の順序番号付与処理を用 いて実現することができる。
[0145] このスウィープ処理は自動的に行ってもよぐ或いは、ユーザからの要求に応じて行
つてもよい。
[0146] [データ再配置]
データ再配置とは、表形式データが複数の処理モジュールで分掌管理されて 、る ときに、どのレコードをどの処理モジュールが保持するかというデータの割付を変更 することである。このデータ再配置は、表形式データの検索、ソート、集計などの処理 結果をディスク装置などに出力するとき、表形式データの全部又は一部を独立させて 別の表形式データとして管理するときなどに要求される。例えば、表形式データをシ 一ケンシャルなデバイスへ出力する際には、この表形式データは情報処理システム 上でもシーケンシャルに配置されて 、る方が望まし!/、。
[0147] 本発明の実施の形態に力かるデータ再配置処理は、グローバル順序番号 GOrdに は全ての処理モジュールの間で連続した昇順の番号を割り振り、 OrdSetには各処理 モジュール内で 0から始まる昇順の番号を割り振る。
[0148] 図 32は本発明の実施の形態に力かるデータ再配置処理のフローチャートである。
このデータ再配置処理が実行される情報処理システムは、論理的に環状に接続され た複数の処理モジュールを含み、各処理モジュールは表形式データを表現するロー カルな情報ブロックを格納するメモリを具備している。ローカルな情報ブロックは、表 形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配 列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納され ている値リストと、を含む。各処理モジュールの表形式データのレコードには、複数の 処理モジュール間で一意に決まるグローバルな順序番号 GOrdが割り当てられ、各処 理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグロ一 バルな項目値番号 GVNoが付与されている。この情報処理システムは、次のような手 順で再配置処理を実行する。
[0149] ステップ 3201:各処理モジュールに再配置されるべきそれぞれの新しいレコードの 個数を決定する。
[0150] ステップ 3202:新し!/、レコードの個数に基づ 、て、新し 、グローバルな順序番号を 再配置されるべき新し 、レコードに割り当てる。
[0151] ステップ 3203 :各処理モジュール力 論理的に環状に接続された他の処理モジュ
ールへ、 自処理モジュールの現在のレコードに割り当てられた現在のグローバルな 順序番号と、現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、 を送信する。
[0152] ステップ 3204:各処理モジュールが他の処理モジュールから他の処理モジュール の現在のグローバルな順序番号と、対応した現在の値リスト中の項目値と、を受信す る。
[0153] ステップ 3205:各処理モジュール力 他の処理モジュールから受信した現在のグロ 一バルな順序番号の中で自処理モジュールに再配置されるべき新し 、レコードに割 り当てられた新 、グローバルな順序番号と一致する現在のグローバルな順序番号 に対応した項目値を一時的な値リストとしてメモリに記憶する。
[0154] ステップ 3206:各処理モジュール力 新し!/、レコードの順番に新し!/、項目値番号を 指定する情報が格納された新しいポインタ配列と、一時的な値リスト中の項目値を新 L 、項目値番号の順序に格納した新 、値リストと、を生成する。
[0155] ステップ 3207 :各処理モジュールが論理的に環状に接続された他の処理モジユー ルへ自処理モジュールの新し 、値リストを送信する。
[0156] 各処理モジュールが他の処理モジュールから他の処理モジュールの新し 、値リスト を受信する。
[0157] 各処理モジュールが自処理モジュールの新し!/、値リストと他の処理モジュールの新 しい値リストとを比較し、自処理モジュールの新しい値リストの項目値に、複数の処理 モジュール間で一意に定まる新し 、グロ一ノ レな項目値番号を付与する。
[0158] この手順により、グローバルな情報ブロックのデータを再配置することができる。
[0159] 例えば、図 14及び 15に示されるような表形式データを、「年齢」が 25歳以下という 条件で検索し、「年齢」の昇順にソートした検索'ソート結果を再配置する場合を考え る。図 33A〜Cは検索'ソート後の表形式データの説明図であり、図 33Aは検索'ソ ート前のデータ一覧、図 33Bは検索'ソート後のデータ一覧、図 33Cは分掌管理され て 、る検索 ·ソート処理後の表形式データを表して 、る。
[0160] この例では、全体で 8行(8個のレコード)が存在し、処理モジュール PMMの個数 は 4個であるので、各モジュールに 2行ずつ配置する。以下の説明では、「身長」の項
目に関する再構築を説明するが、他の項目についても同様に再構築できる。
[0161] データ再配置処理は、(手順 1)新しい GOrdと OrdSetを生成する手順と、(手順 2) GOrdと VLを転送し、各処理モジュールに収容する手順と、(手順 3) VLをコンノ ィル する手順に大別される。
[0162] 手順 1:データは全体で 8行あり、モジュール数は 4個であるので、各モジュールに 2 行ずつ格納することとし、生成先に新しい GOrdと OrdSetを生成し、これらと同じサイ ズの値格納配列を生成する。このとき、各モジュールに配置される行数が分力つてい るので、 GOrdは自明であり、 OrdSetも各モジュール内で自明である。具体的には、デ ータ再配置の計算式を全ての処理モジュールに通知することによって、各処理モジ ユールは GOrdを知ることができる。
[0163] 図 34A、 Bは、データ再配置処理における GOrdと OrdSetの生成処理の説明図であ る。
[0164] 手順 2:各 PMMから GOrdと値を他の PMMへ送出する。ここで、 GOrdは昇順であ り、かつ、ユニークである。各 PMMは、他の PMMから送出された GOrdと値を受信し 、自 PMM内の GOrdとマッチングする GOrdに対応した値を値格納配列に収容する。 図 35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明図である
[0165] データ転送は、様々な方法で実現できる。例えば、処理モジュール間で相互に、即 ち、送信側と受信側のペアを決めてデータを送信してもよぐ或いは、環状に接続さ れたモジュール間で環状にデータを転送してもよい。
[0166] 手順 3:各処理モジュールの生成先に作成された値格納配列をコンパイルすること により、「身長」に関して、各処理モジュールにポインタ配列 VNoと値リスト VLを生成す ると共にグローバル項目値番号 GVNoを付与する。例えば、 PMM— 0は、値格納配 列に格納されている値 172と 168を昇順に並べ換え、値リスト VLを生成する。これに 応じて、ポインタ配列 VNoに 1、 0の順に値をセットすることができる。全ての処理モジ ユールが同様に値リスト VLとポインタ配列 VNoを生成すると、次に、上述の順序番号 付与処理を用いてグローバル項目値番号 GVNoを付与することができる。図 36は、こ のようなデータ再配置処理における VLコンパイル処理の説明図である。
[0167] 他の項目も同様に再配置処理することによって図 37に示すような表形式データを 得ることができる。
[0168] [SIMD型並列処理]
並列化のアルゴリズムが稚拙である場合、 SIMDを採用して所望の結果を得るため のプログラムの開発が困難であり、開発できたとしても、そのプログラムの自由度は低 い。そこで、 SIMDを採用するためには、 SIMDに適した優れたアルゴリズムを開発 する必要がある。この点、本実施の形態によるアルゴリズムは、
(1)処理の実行にあたって条件分岐がない。但し、検索処理の場合には、条件分岐 が行われる可能性があるが、単純な条件分岐である。
(2)昇順のリストを相互に比較するなど、 1つの命令で実行できる処理 (ステップ数、ク ロック数)の占める割合が高 、。
(3)すべての処理モジュールが平等に同じ役割を持つ。処理モジュール毎に違う役 割があると、単一命令で処理を実現できない。
という点でデータ構造及びアルゴリズムが優れている。したがって、本実施の形態で は、 SIMDを採用する際にプログラムが簡単ィ匕され、プログラムの開発の容易性ゃプ ログラムの高い自由度を確保することができる。
[0169] [システム構成]
本発明にかかる情報処理システムは、例えば、フロントエンドとなる端末装置と、リン グ状のチャネルを介して接続され、端末装置からの命令を、それぞれの PMMが受 理することにより、 PMMにおいて、上述したコンパイル、データ更新、データ再配置 の処理が実行できる。また。各 PMMはパケットを何れかのバスを利用して送出すれ ばよぐ PMM間の同期等を外部から制御する必要もない。
[0170] また、制御装置には、コンパイルなどの繰り返し演算のためのハードウェア構成を備 えたァクセラレータチップのほ力、これに加えて、汎用 CPUを含めても良い。汎用 CP Uは、端末装置カゝらチャネルを介して伝達された命令を解釈し、ァクセラレータチップ に必要な指示を与えることができる。
[0171] さらに、制御装置、特に、その中のァクセラレータチップには、順序番号配列、グロ 一バル順序番号配列など作業に必要な種々の配列を収容するためのレジスタ群が
設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必 要な値をロードしてしまえば、コンパイルなどにかかる上述した処理演算中には、制 御装置はメモリにアクセスすることなぐレジスタ力も値を読み出し、或いは、レジスタ に値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる(演算処理前 のロード、および、処理結果の書き込み)ことができ、処理時間を著しく短縮すること が可能となる。
[0172] 本発明は、以上の実施の形態に限定されることなぐ特許請求の範囲に記載された 発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含される ものであることは言うまでもない。
[0173] 尚、前記実施の形態においては、 PMMを、一方が時計回りにパケットを伝送する 第 1のバス (第 1の伝送路)、他方が反時計回りにパケットを伝送する第 2のバス (第 2 の伝送路)にて、リング状に接続している。このような構成により、パケット伝送の遅延 時間などを均一化することができるため有利である。し力しながら、これに限定されず 、ノ ス型など他の形態の伝送路を採用しても良い。
[0174] また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有する P MMを利用している力 これに限定されるものではなぐパーソナルコンピュータ、サ ーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、 PMMの 代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバ力 複数 の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報 処理ユニットが、レコードの順位を示す値を受理し、グローバル順序番号配列 GOrd を参照することにより、レコードを特定することができる。また、グローバル値番号配列 を参照することにより、項目値を特定することも可能である。
[0175] また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用して も良い。
[0176] 単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採 用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東 京支社、福岡支社の 3つの表形式データを用意し、通常は、各支社の単位で、検索 、集計、ソートなどを実行する。さらに、 3つの支社を統合したグローバルな表形式デ
ータを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グ ローバルな表形式データに関する検索、ソートおよび集計を実現することができる。
[0177] 無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に 、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、お よび、グローバルな表形式データに関する処理を実現することもできる。
図面の簡単な説明
[0178] [図 1]図 1は、従来のデータ管理機構の説明図である。
[図 2]図 2は、従来のデータ管理機構の説明図である。
[図 3]図 3は、本発明の実施の形態に力かる情報処理システムの概略を示すブロック ダイヤグラムである。
[図 4]図 4は、本発明の実施の形態に力かる PMMの構造の一例を示す図である。
[図 5]図 5は、表形式データの一例の説明図である。
[図 6]図 6は、従来の表形式データの記憶構造の説明図である。
[図 7]図 7は、本発明の実施の形態に力かる表形式データの記憶構造の一例の説明 図である。
[図 8]図 8は、本発明の実施の形態に力かる順序番号付与方法のフローチャートであ る。
[図 9]図 9A〜Dは、それぞれ、本発明の実施の形態にかかる第 1の順序番号付与方 法の説明図(その 1)である。
[図 10]図 10A〜Dは、それぞれ、本発明の実施例の形態に力かる第 1の順序番号付 与方法の説明図(その 2)である。
[図 11]図 11は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 1の例の説明図である。
[図 12]図 12は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 2の例の説明図である。
[図 13]図 13は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 3の例の説明図である。
[図 14]図 14は、単一の処理モジュールで管理される表形式データの説明図である。
[図 15]図 15は、複数の処理モジュールで分掌管理される表形式データの説明図で ある。
[図 16]図 16は、本発明の実施の形態に力かるコンパイル処理のフローチャートであ る。
[図 17]図 17は、レコード削除処理の対象となる表形式データの説明図である。
[図 18]図 18は、レコード削除処理の一例の説明図である。
[図 19]図 19は、レコード削除処理後の表形式データの説明図である。
[図 20]図 20は、レコード挿入処理の一例の説明図である。
[図 21]図 21は、レコード挿入処理後の表形式データの説明図である。
[図 22]図 22は、データ上書き処理の一例の説明図である。
[図 23]図 23は、本発明の実施の形態に力かるデータ上書き処理のフローチャートで ある。
[図 24]図 24は、上書きデータを処理モジュール内でコンパイルする処理の説明図で ある。
[図 25]図 25A〜Dは、それぞれ、上書きデータと元データをマージする処理の説明 図である。
[図 26]図 26A〜Cは、それぞれ、ポインタ配列を更新する処理の説明図である。 圆 27]図 27は、データ上書き処理中の表形式データの説明図である。
圆 28]図 28は、データ上書き処理後の表形式データの説明図である。
[図 29]図 29A、 Bは、本発明の実施の形態に力かるスウィープ処理の説明図である。
[図 30]図 30は、本発明の実施の形態に力かるスウィープ処理のフローチャートである
[図 31]図 31A〜Hは、スウィープ処理の進行状態の一例の説明図である。
[図 32]図 31は、本発明の実施の形態に力かるデータ再配置処理のフローチャートで ある。
圆 33]図 33A〜Cは、それぞれ、分掌管理されている検索'ソート処理後の表形式デ ータの説明図である。
[図 34]図 34A、 Bは、データ再配置処理における GOrdと OrdSetの生成処理の説明
図である。
[図 35]図 35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明 図である。
[図 36]図 36は、データ再配置処理における VLコンパイル処理の説明図である。
[図 37]図 37は、データ再配置処理後の表形式データの説明図である。
符号の説明
32 PMM
34 第 1のバス
36 第 2のバス
40 制御回路
42 バス I/F
44 メモリ
46 バンク