(57)【特許請求の範囲】
【請求項１】
メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置され、表形式データから検索対象となる項目に関する検索条件に合致するレコードを検索する情報処理システムであって、
各メモリモジュールのメモリが、
表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報ブロックと、
を記憶し、
各メモリモジュールの制御装置が、
他のメモリモジュールの制御装置と並列的に動作し、当該メモリモジュールに分散配置されているレコードの中で、検索対象となる項目に関する検索条件に合致する項目値を含むレコードに対応するレコード番号及び指し示す値をグローバル順序集合配列及びローカル順序集合配列から取り出し、第２のグローバル順序集合配列及び第２のローカル順序集合配列にそれぞれ格納する手段と、
他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、当該メモリモジュールの第２のグローバル順序集合配列を他のメモリモジュールへ送信する手段と、
他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、他のメモリモジュールから当該他のメモリモジュールの第２のグローバル順序集合配列を受信する手段と、
他のメモリモジュールの制御装置と並列的に動作し、他のメモリモジュールの各々から受信した当該他のメモリモジュールの第２のグローバル順序集合配列の中のレコード番号を考慮して当該メモリモジュールの第２のグローバル順序集合配列の中のレコード番号の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第２のグローバル順序集合配列の中のレコード番号の中での当該メモリモジュールの第２のグローバル順序集合配列の中のレコード番号の順位を算出し、当該順位が昇順に格納されている第３のグローバル順序集合配列を生成する手段と、
を備え、
各検索条件に合致するレコードの配列が、メモリモジュールのメモリに記憶されている第３のグローバル順序集合配列及び第２のローカル順序集合配列によって、複数のメモリモジュールに分散配置されることを特徴とする情報処理システム。
【請求項２】
項目毎に各メモリモジュールに分散配置されている情報ブロックが、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が所定の順序でソートされて格納されている値リストと、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列と、
項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
を含む、請求項１に記載の情報処理システム。
【請求項３】
各メモリモジュールの制御装置において、前記第２のグローバル順序集合配列及び前記第２のローカル順序集合配列を生成する手段が、
他のメモリモジュールの制御装置と並列的に動作し、検索対象となる項目に関する検索条件に合致する項目値に対応するフラグをセットする手段と、
他のメモリモジュールの制御装置と並列的に動作し、当該メモリモジュールのメモリに記憶されているローカル順序集合配列から当該メモリモジュールに分散配置されているレコードを指し示す値を取得し、検索対象となる項目に関して、前記取得されたレコードを指し示す値を使って、当該メモリモジュールのメモリに記憶されているポインタ配列から値を取得し、前記取得された値を使って、当該メモリモジュールのメモリに分散配置されているレコードに含まれる項目値に対応するフラグがセットされているかどうかを判定する手段と、
前記取得されたフラグがセットされていると判定された場合に、検索対象となる項目に関して、フラグがセットされた項目値に対応するグローバル順序集合配列中の値及びローカル順序集合配列中の値を第２のグローバル順序集合配列及び第２のローカル順序番号配列にそれぞれ収容する手段と、
を含む、請求項２に記載の情報処理システム。
【請求項４】
メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置され、レコードを所定の項目に関してソートする情報処理システムであって、
各メモリモジュールのメモリが、
表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報と、
項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
を記憶し、
各メモリモジュールの制御装置が、
他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内でローカルソートすることにより、ローカルソート後のレコード番号が格納されている第２のグローバル順序集合配列、ローカルソート後のレコードを当該メモリモジュール内で指し示す値が格納されている第２のローカル順序集合配列、及び、ローカルソート後のレコードに含まれる項目値の順位を示す情報が昇順に格納されている第２のグローバル値番号配列を生成する手段と、
他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、当該メモリモジュールの第２のグローバル値番号配列及び第２のグローバル順序集合配列を他のメモリモジュールへ送信する手段と、
他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、他のメモリモジュールから当該他のメモリモジュールの第２のグローバル値番号配列及び第２のグローバル順序集合配列を受信する手段と、
他のメモリモジュールの各々から受信した第２のグローバル値番号配列の要素と第２のグローバル順序集合配列の要素との組を考慮して、当該メモリモジュールの第２のグローバル値番号配列の要素と第２のグローバル順序集合配列の要素との組の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第２のグローバル値番号配列の要素の中での当該メモリジュールの第２のグローバル値番号配列の要素の順位を算定し、当該順位が昇順に格納されている第３のグローバル順序番号配列に収容する手段と、
を備え、
所定の項目に関してソートされたレコードの配列が、メモリモジュールのメモリに記憶されている第３のグローバル順序集合配列及び第２のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする情報処理システム。
【請求項５】
各メモリモジュールのメモリが、項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列をさらに記憶し、
各メモリモジュールの制御装置において、第２のグローバル順序集合配列、第２のローカル順序集合配列、及び、第２のグローバル値番号配列を生成する手段が、
他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列中の値を使って、ポインタ配列中の値を取得し、ポインタ配列中の値の存在数を取得し、前記取得された存在数を累計数に変換する手段と、
他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列の要素、ローカル順序集合配列の当該要素に対応するグローバル順序集合配列の要素、及び、ローカル順序集合配列の当該要素に対応するグローバル値番号配列の要素を、それぞれ、ローカル順序集合配列の当該要素に対応する累計数の値が示す位置で、ローカルソート後の第２のローカル順序集合配列、ローカルソート後の第２のグローバル順序集合配列、及び、ローカルソート後の第２のグローバル値番号配列に配置する手段と、
を含む、請求項４に記載の情報処理システム。
【請求項６】
メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置されている情報処理システムにおいて、表形式データから検索対象となる項目に関する検索条件に合致するレコードを検索する方法であって、
各メモリモジュールのメモリには、
表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報ブロックと、
が記憶され、
（ａ）各メモリモジュールの制御装置を並列的に用いて、当該メモリモジュールに分散配置されているレコードの中で、検索対象となる項目に関する検索条件に合致する項目値を含むレコードに対応するレコード番号及び指し示す値をグローバル順序集合配列及びローカル順序番号配列から取り出し、第２のグローバル順序集合配列及び第２のローカル順序集合配列にそれぞれ格納するステップと、
（ｂ）各メモリモジュールの制御装置を並列的に用いて、データ伝送路を介して、当該メモリモジュールの第２のグローバル順序集合配列を他のメモリモジュールへ送信すると共に他のメモリモジュールから当該他のメモリモジュールの第２のグローバル順序集合配列を受信し、他のメモリモジュールの各々から受信した当該他のメモリモジュールの第２のグローバル順序集合配列の中のレコード番号を考慮して当該メモリモジュールの第２のグローバル順序集合配列の中のレコード番号の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第２のグローバル順序集合配列の中のレコード番号の中での当該メモリモジュールの第２のグローバル順序集合配列の中のレコード番号の順位を算出し、当該順位が昇順に格納されている第３のグローバル順序集合配列を生成するステップと、
を備え、
各検索条件に合致するレコードの配列が、メモリモジュールのメモリに記憶されている第３のグローバル順序集合配列及び第２のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする方法。
【請求項７】
項目毎に各メモリモジュールに分散配置されている情報ブロックが、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が所定の順序でソートされて格納されている値リストと、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列と、
項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
を含む、請求項６に記載の方法。
【請求項８】
各メモリモジュールの制御装置を並列的に用いて、前記第２のグローバル順序集合配列及び前記第２のローカル順序集合配列を生成するステップ（ａ）が、
（ｉ）各メモリモジュールの制御装置を並列的に用いて、検索対象となる項目に関する検索条件に合致する項目値に対応するフラグをセットするステップと、
（ｉｉ）各メモリモジュールの制御装置を並列的に用いて、当該メモリモジュールのメモリに記憶されているローカル順序集合配列から当該メモリモジュールに分散配置されているレコードを指し示す値を取得し、検索対象となる項目に関して、前記取得されたレコードを指し示す値を使って、当該メモリモジュールのメモリに記憶されているポインタ配列中の値を取得し、前記取得された値を使って、当該メモリモジュールのメモリに分散配置されているレコードに含まれる項目値に対応するフラグがセットされているかどうかを判定するステップと、
（ｉｉｉ）前記取得されたフラグがセットされていると判定された場合に、この判定が行われたメモリモジュールの制御装置を並列的に用いて、検索対象となる項目に関して、フラグがセットされた項目値に対応するグローバル順序集合配列中の値及びローカル順序集合配列中の値を検索後のグローバル順序集合配列及び検索後のローカル順序番号配列にそれぞれ収容するステップと、
（ｉｖ）すべてのメモリモジュールのローカル順序集合配列中の末尾の要素まで、ステップ（ｉｉ）及びステップ（ｉｉｉ）を繰り返すステップと、
を含む、請求項６に記載の方法。
【請求項９】
メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置されている情報処理システムにおいて、レコードを所定の項目に関してソートする方法であって、
各メモリモジュールのメモリには、
表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報と、
項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
が記憶され、
（ａ）各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内でローカルソートすることにより、ローカルソート後のレコード番号が格納されている第２のグローバル順序集合配列、ローカルソート後のレコードを当該メモリモジュール内で指し示す値が格納されている第２のローカル順序集合配列、及び、ローカルソート後のレコードに含まれる項目値の順位を示す情報が昇順に格納されている第２のグローバル値番号配列を生成するステップと、
（ｂ）各メモリモジュールの制御装置を並列的に用いて、データ伝送路を介して、当該メモリモジュールの第２のグローバル値番号配列及び第２のグローバル順序集合配列を他のメモリモジュールへ送信すると共に他のメモリモジュールから当該他のメモリモジュールの第２のグローバル値番号配列及び第２のグローバル順序集合配列を受信し、他のメモリモジュールの各々から受信した第２のグローバル値番号配列の要素と第２のグローバル順序集合配列の要素との組を考慮して、当該メモリモジュールの第２のグローバル値番号配列の要素と第２のグローバル順序集合配列の要素との組の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第２のグローバル値番号配列の要素の中での当該メモリジュールの第２のグローバル値番号配列の要素の順位を算定し、当該順位が昇順に格納されている第３のグローバル順序番号配列に収容するステップと、
を備え、
所定の項目に関してソートされたレコードの配列が、メモリモジュールのメモリに記憶されている第３のグローバル順序集合配列及び第２のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする方法。
【請求項１０】
各メモリモジュールのメモリには、項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列がさらに記憶され、
各メモリモジュールの制御装置を並列的に用いて、第２のグローバル順序集合配列、第２のローカル順序集合配列、及び、第２のグローバル値番号配列を生成するステップ（ａ）が、
（ｉ）各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列中の値を使って、ポインタ配列中の値を取得し、ポインタ配列中の値の存在数を取得し、前記取得された存在数を累計数に変換するステップと、
（ｉｉ）各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列の要素、ローカル順序集合配列の当該要素に対応するグローバル順序集合配列の要素、及び、ローカル順序集合配列の当該要素に対応するグローバル値番号配列の要素を、それぞれ、ローカル順序集合配列の当該要素に対応する累計数の値が示す位置で、ローカルソート後の第２のローカル順序集合配列、ローカルソート後の第２のグローバル順序集合配列、及び、ローカルソート後の第２のグローバル値番号配列に配置するステップと、
を含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ(Single Instruction Stream, Multiple Data Stream)を実現可能な並列コンピュータのアーキテクチャを採用した情報処理システムに関する。
【背景技術】
【０００２】
社会全体のさまざまな場所にコンピュータが導入され、インターネットをはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積されるようになった。このような大規模データを処理するには、膨大な計算が必要で、そのために並列処理を導入しようと試みるのは自然である。【０００３】
並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者（「共有メモリ型」）は、複数のプロセッサが１つの巨大なメモリ空間を共有する方式である。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。したがって、例えば１０億個の浮動小数点変数の平方根を計算する際、単一ＣＰＵに対する加速比は、せいぜい１００倍ということになる。経験的には、３０倍程度が上限である。【０００４】
後者（「分散メモリ型」）は、各プロセッサがそれぞれローカルなメモリを持ち、これらを結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込んだハードウェアシステムの設計が可能である。したがって、上記１０億個の浮動小数点変数の平方根を計算する際の単一ＣＰＵに対する加速比を、数百〜数万倍とすることが可能である。しかしながら、後者においても、後述するいくつかの課題が存在する。
【特許文献１】国際公開第ＷＯ００／１０１０３号パンフレット（第３図および第４図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
[第１の課題：巨大配列の分掌管理]
「分散メモリ型」の第１の課題は、データの分掌管理の問題である。
巨大なデータ（一般的には配列なので、以降、配列で説明する）は、１つのプロセッサの所有するローカルメモリに収容できるものではなく、必然的に複数のローカルメモリに分掌管理される。効率的かつ柔軟な分掌管理メカニズムを導入しないと、プログラムの開発および実行に際してさまざまな障害を抱え込むことになることは明らかである。【０００６】
[第２の課題：プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、巨大配列にアクセスしようとすると、自己の所有するローカルメモリ上の配列要素に対しては速やかにアクセスできるものの、他のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を必須とする。このプロセッサ間通信はローカルメモリとの通信に比べ、極端にパフォーマンスが低く、最低でも１００クロックかかると言われている。このため、ソート実施時には、巨大配列全域にわたる参照が実施され、プロセッサ間通信が多発するため、パフォーマンスが極端に低下する。【０００７】
この問題点につき、より具体的に説明を加える。１９９９年現在、パソコンは、１〜数個のＣＰＵを用いて、「共有メモリ型」として構成されている。このパソコンに使用される標準的なＣＰＵは、メモリバスの５〜６倍程度の内部クロックで動作し、その内部に自動的な並列実行機能やパイプライン処理機能が装備されており、およそ１データを１クロック（メモリバス）で処理できる。【０００８】
このため、「分散メモリ型」のマルチプロセッサシステムでは、プロセッサ数は多いのに、シングルプロセッサ（共有メモリ型）よりも１００倍遅くなることになりかねない。【０００９】
[第３の課題：プログラムの供給]
「分散メモリ型」の第３の課題は、多数のプロセッサにどうやってプログラムを供給するか、という問題である。【００１０】
非常に多数のプロセッサに、別々のプログラムをロードし、全体を協調動作させる方式（ＭＩＭＤ：Multiple Instruction Stream, Multiple Data Stream）では、プログラムの作成、コンパイル、配信のために多大な負荷を要する。【００１１】
その一方、多数のプロセッサを同一のプログラムで動作させる方式（ＳＩＭＤ：Single Instruction Stream, Multiple Data Stream）では、プログラムの自由度が減少し、所望の結果をもたらすプログラムが開発できない事態も想定される。【００１２】
本発明は、「分散メモリ型」の上記第１ないし３の課題を解決する方法およびコンピュータアーキテクチャを提供する。【００１３】
ところで、本発明者は、表形式データを記憶するために、項目ごとの情報ブロックを形成し、当該情報ブロックに、項目値を記憶した値リスト、および、当該値リストを指定するための値（ポインタ値）を、レコードごとに記憶したポインタ配列を設け、レコード番号から、ポインタ配列および値リストを順次特定していくことにより、表形式のビューを取得できるような構造および処理方法を考案している（特許文献１参照）。この構造において、レコード数が増大するのにしたがって、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなるため、これを、複数のメモリで分掌した上で、単一命令により、検索、集計、ソートなどの処理が実行できるのが望ましい。【００１４】
そこで、本発明は、分散メモリ型において、単一命令により種々のメモリに記憶された配列中の要素を入出力し、処理と通信を統合することで著しく高速な並列処理を実現可能なコンピュータアーキテクチャを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、昇順または降順に重複なく順序付けられた値のリストを保持するように構成された情報処理システムであって、
前記各メモリモジュールの制御装置が、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信手段と、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信手段と、
前記データ受信手段により受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定手段とを備えたことを特徴とする情報処理システム、
により達成される。【００１６】
本発明によれば、自己の値のリストの値と、他のメモリモジュールの値のリストとを比較することにより、自己の値リストの値について、他のメモリモジュールの値のリスト中の値を考慮したグローバルな順位を得ることが可能となる。【００１７】
好ましい実施態様においては、前記順位判定手段が、他のメモリモジュールの各々の値のリストを考慮した、補助的な順位格納配列を生成し、前記補助的な順位格納配列の値を合成して、前記順位格納配列の値を決定する。特に、前記順位判定手段が、並列的に、前記補助的な順位格納配列を生成することにより、著しい処理の高速化を実現することができる。【００１８】
また、好ましい実施態様においては、前記データ伝送路が、隣接するモジュールを接続し、リング状のデータ伝送路を構成する。【００１９】
別の好ましい実施態様においては、データ伝送路が、一方のメモリモジュールから他方のメモリモジュールにデータを伝達する１以上のチャンネルを有する第１のデータ伝送路、および、他方のメモリモジュールから一方のメモリモジュールにデータを伝達する１以上のチャンネルを有する第２のデータ伝送路を有し、前記データ送信手段が、隣接するメモリモジュールの間で、一方および他方の何れかのデータ伝送路のうち、メモリモジュールごとに定められたチャンネルを利用して、自己の値のリストを送信するように構成され、
前記データ受信手段が、前記データ送信手段によるデータ送信と並列的に、一方および他方の伝送路を利用して、定められたチャンネルから他のメモリモジュールの値のリストを受信するように構成されている。【００２０】
この実施態様によれば、第１のデータ伝送路および第２の伝送路中、メモリモジュールごとに定められたチャンネルに、並列的に、データを送信し、それぞれのメモリモジュールにおいて、他のメモリモジュールの値のリストの順位を考慮した上で、自分自身の掌握するローカルな値のリストに含まれる値の順位を決定することができる。したがって、それぞれのメモリモジュールにおいて、メモリモジュールの値のリスト全体の集合のうち、自己が掌握する部分集合の位置ないし順位を適切に把握することが可能となる。このように位置ないし順位を把握しておくことで、後述する検索およびソートの処理が円滑に実現することができる。【００２１】
別の好ましい実施態様において、前記メモリモジュールの各々のメモリが、
各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成され、
各メモリモジュールの制御装置が、前記ポインタ配列のうち、グローバルな情報ブロックの部分集合として、自己の掌握する情報ブロックが、どの位置を占めるかを示すオフセット値を保持するオフセット値記憶手段と、
前記オフセット値に基づき、グローバルな情報ブロックにおけるグローバル順序集合配列を生成するグローバル順序集合配列生成手段と、
前記順位判定手段が、前記値のリストとして、前記値リストのグローバルな値の順位を決定し、前記グローバル順位格納配列に相当するグローバル値番号配列に決定された順位を格納するように構成されている。【００２２】
より好ましい実施態様においては、前記順位判定手段が、他のメモリモジュールの各々の値リストを考慮した、相対的な値の順位を格納する補助的な値番号配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな値の順位を算出するように構成されている。【００２３】
あるいは、他のメモリモジュールの値リストを受信するたびに、新たな相対的な順位ともとの順位との差異を算出して、その値を順次累算していくことで、グローバルな順位を算出してもよい。【００２４】
より好ましい実施態様においては、さらに、前記データ受信手段により受信された値リストの項目値のうち、前記メモリモジュール自身の値リスト中の項目値と同一の値が存在する場合に、当該受信された値リストから、当該同一の値を消去する同一値消去手段を備えている。【００２５】
別の好ましい実施態様においては、各メモリモジュールの制御装置が、
検索すべき項目に関して、当該項目の値リストと同じサイズのフラグ配列を生成し、検索条件に合致する項目値に対応するフラグ配列中に特定の値を付与するフラグ配列セットアップ手段と、
前記検索すべき項目に関して、順序集合配列が示す位置に対応するポインタ配列中の値を特定し、その後、ポインタ配列中の値が示す位置に対応するフラグ配列中の値を特定することにより、当該順序集合配列中の値に対応するレコードが、検索条件に合致するか否かを判定する検索条件判定手段と、
検索条件に合致する順序集合の値、および、対応するグローバル順序集合の値を、それぞれ、第２の順序集合配列および第２のグローバル順序集合配列に格納するローカル検索手段とを備え、
前記データ送信手段が、前記値のリストとして、前記第２のグローバル順序集合配列を、前記他のモジュールに送信し、かつ、前記データ受信手段が、前記値のリストとして前記他のメモリモジュールから第２のグローバル順序集合配列を受信し、さらに、
受信したそれぞれの第２のグローバル順序集合配列を参照して、自己の、グローバル順序集合配列中の値の、他のメモリモジュールとの間での相対的な順位を判定し、当該相対的な順位に基づいて、グローバルな情報ブロックにおける順位を決定し、当該グローバルな情報ブロックにおける順位を、グローバル順位格納配列に相当する第３のグローバル順序集合配列に格納する第２の順位判定手段を備え、前記第３のグローバル順序集合配列の値によって、検索条件に合致するレコードの順位が示される。【００２６】
より好ましい実施態様においては、前記第２の順位判定手段が、他のメモリモジュールの各々の第２のグローバル順序集合配列を考慮して、相対的な値の順位を格納する補助的な順序集合配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな情報ブロックにおける値の順位を算出するように構成されている。【００２７】
また、好ましい実施態様においては、各メモリモジュールの制御装置が、
前記グローバル順序集合配列の値の順位を、所定の項目に関するグローバル値番号配列中、当該グローバル順序集合配列に対応する値にしたがって決定し、第４のグローバル順序番号配列中、当該決定された順位に対応する位置に、前記グローバル順序集合配列の値を格納する第３の順位判定手段を備え、前記第４のグローバル順序集合配列が、前記グローバル値番号配列の値にしたがって前記グローバル順序集合を再配置したものとなる。【００２８】
さらに別の好ましい実施態様においては、各メモリモジュールの制御装置が、
ソートすべき項目に関して、当該項目の値リストと同じサイズの存在数配列を生成し、値リスト中の項目値のそれぞれを指定する、前記順序集合配列の値の数を配置する存在数配列生成手段と、
前記存在数配列中の値を累計して、メモリモジュール内でソートされた際の、対応する項目値をもつレコードの先頭位置を示す累計数を算出し、当該累計数を累計数配列中に配置する累計数配列生成手段と、
第２のグローバル値番号配列、前記第４のグローバル順序集合配列および第３の順序集合配列を生成し、順序集合配列の値が示す項目値に対応する累計数配列中の累計数に基づき、前記第２のグローバル値番号配列中、前記累計数が示す位置に、前記項目値に対応するグローバル値番号を配置し、かつ、前記第３の順序集合配列、および、前記第４のグローバル順序集合配列中、前記累計数が示す位置に、前記順序集合配列の値、および、対応するグローバル順序集合配列の値を、それぞれ配置する、ローカルソート手段とを備え、
前記データ送信手段が、前記値のリストとして、少なくとも、第２のグローバル値番号配列を送信し、かつ、前記データ受信手段が、前記値のリストとして他のメモリモジュールの第２のグローバル値番号配列を受信し、さらに、
受信したそれぞれの第２のグローバル値番号配列を参照して、自己の、第２のグローバル値番号配列中の値の、他のメモリモジュールとの間での相対的な順位を判定し、当該グローバルな情報ブロックにおける順位を、グローバル順位格納配列に相当する第５のグローバル順序集合配列に格納する第４の順位判定手段を備え、前記第５のグローバル順序集合配列の値によって、ソートされたレコードの順位が示される。【００２９】
より好ましい実施態様においては、前記第４の順位判定手段が、他のメモリモジュールの各々の第２のグローバル値番号配列を考慮して、相対的な値の順位を格納する補助的な順序番号配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな情報ブロックにおける順位を算出するように構成されている。【００３０】
また、本発明の目的は、上記情報処理システムにおいて各手段に対応するステップを、各メモリモジュールが備えたことによっても達成される。
たとえば、ある実施態様においては、情報処理方法は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、各メモリモジュールのメモリが、それぞれ、昇順または降順に重複なく順序付けられた値のリストを保持するように構成された情報処理システムにおいて、
各メモリモジュールにおいて、
各メモリモジュールにおいて、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信ステップと、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信ステップと、
前記データ受信ステップにおいて受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定ステップとを備えている。【００３１】
さらに、本発明においては、それぞれ、メモリおよび制御装置を有する複数の情報処理ユニットを備え、前記情報処理ユニットの各々のメモリが、各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを保持し、各メモリモジュールが保持する表形式データの集合体により、グローバルな表形式データが形成されるような情報処理システムであって、
前記各情報処理ユニットが、前記グローバルな表形式データにおける各レコードの順位を示す値を収容するグローバル順序集合配列と、制御装置により受理された順位を指定する命令にしたがって、前記グローバル順序集合配列中の値を特定し、その値が示すレコードを取り出すレコード取り出し手段とを備えたことを特徴とする情報処理システムが提供される。【００３２】
この発明によれば、プロセッサメモリモジュール（ＰＭＭ）、パーソナルコンピュータ、サーバなどを含む情報処理ユニットにローカルな表形式データを分掌把握させ、ローカルな検索や集計を情報処理ユニット単独で実行させることもでき、かつ、グローバル順序集合配列を備えることにより、グローバルな表形式データの検索などを実現することも可能となる。なお、単一のパーソナルコンピュータやサーバが単一の情報処理ユニットに対応しても良いし、単一のパーソナルコンピュータやサーバに、複数の情報処理ユニットが含まれるような構成を採用しても良い。【００３３】
好ましい実施態様においては、前記情報処理ユニットが、当該情報処理ユニット内でのソート順を反映するため、レコードを特定する値が入れ替えられた他の順序集合配列を有し、前記グローバル順序集合配列において、他の順序集合配列中の値が示すレコードの、前記グローバルな表形式データにおけるソート順を示すように、その順位を示す値が再配置される。このグローバル順序集合配列に再配置された値は昇順となる。【００３４】
或いは、前記情報処理ユニットが、前記グローバル順序集合配列において、前記情報処理ユニット内でソートされたレコードの、前記グローバルな表形式データにおけるソート順を示すように、その順位を示す値が再配置されるような構成であっても良い。ここでも、グローバル順序集合配列に再配置された値は昇順となる。このように、本発明は、レコードを特定する値をソートして、これを他の順序集合配列に収容したような形態にも適用でき、また、レコード自体をソートにより並べ替えるような形態にも適用できる。【００３５】
別の好ましい実施態様においては、前記情報処理ユニットの各々のメモリが、
各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成される。【００３６】
さらに、本発明においては、それぞれ、メモリおよび制御装置を有する複数の情報処理ユニットを備え、前記情報処理ユニットの各々のメモリが、各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成されるような情報処理システムであって、
前記情報処理ユニットが、グローバルな情報ブロックにおける項目値の順位を示す値を収容するグローバル値番号配列と、制御装置により受理された順位を指定する命令にしたがって、前記グローバル値番号配列中の値を特定し、その値が示す、値リスト中の項目値を取り出す項目値取り出し手段とを備えたことを特徴とする情報処理システムが提供される。【００３７】
また、本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、値のリストを保持するように構成された情報処理システムであって、
前記各メモリモジュールの制御装置が、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信手段と、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信手段と、
前記データ受信手段により受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定手段とを備えたことを特徴とする情報処理システムにより達成される。【００３８】
さらに、本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、値のリストを保持するように構成された情報処理システムにおいて、
各メモリモジュールにおいて、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信ステップと、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信ステップと、
前記データ受信ステップにおいて受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定ステップとを備えたことを特徴とする情報処理方法によっても達成される。
【発明の効果】
【００３９】
本発明によれば、分散メモリ型において、処理と通信を統合することで著しく高速な並列処理を実現可能な情報処理装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００４０】
［ハードウェア構成］【００４１】
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図１は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。図１に示すように、この実施の形態においては、複数のプロセッサ付きメモリモジュール（以下、「ＰＭＭ」と称する）１２−０、１２−１、１２−２、・・・がリング状に配置され、隣接するメモリモジュール間を、時計回りにデータを伝達する第１のバス（たとえば、符号１４−０、１４−１参照）、および、反時計回りにデータを伝達する第２のバス（たとえば、符号１６−０、１６−１参照）が接続している。第１のバスおよび第２のバスでは、ＰＭＭ間のパケット通信が実行される。本実施の形態において、このパケット通信が実行される伝送路（パケット伝送路）を、第１のバスおよび第２のバスと称する。【００４２】
図２は、ＰＭＭ１２の構造の一例を示す図である。図２に示すように、ＰＭＭ１２は、命令にしたがったメモリのアクセス、演算の実行などを制御する制御回路２０と、バスインタフェース（Ｉ／Ｆ）２２と、メモリ２４とを備えている。【００４３】
メモリ２４は、複数のバンクＢＡＮＫ０、１、・・・、ｎ（符号２６−０、・・・、ｎ）を有し、それぞれに、後述する所定の配列を記憶できるようになっている。【００４４】
また、制御回路２０は、外部の他のコンピュータ等とのデータ授受が可能である。また、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにアクセスできるようにしても良い。【００４５】
［データの記憶構造］
図３は、表形式データの一例を示す図である。このように、表形式のデータでは、レコードごとに種々の項目（この例では、「性別」、「年齢」、「身長」および「体重」）に値が与えられている。本実施の形態にかかる情報処理装置では、これら表形式データを、原理的には、図４に示すようなデータ形式に基づいて保持する。【００４６】
図４に示すように、順序集合の配列OrdSetには、順序番号ごとにレコード番号が値として配置される。この例では、すべてのレコードが表されるため、順序番号とレコード番号とは一致する。【００４７】
たとえば、性別に関しては、実際の項目値である「男」或いは「女」という値が、所定の順序にてソートされた値リストVLと、順序集合の配列OrdSet中の要素（レコード番号）のそれぞれに対応して、当該レコード番号が指し示す値リスト中の番号が格納された、値リストへのポインタ配列VNoとにより、表形式データを表す。この値リストVLおよびポインタ配列VNoの組み合わせを「情報ブロック」とも称する（性別に関する情報ブロックは符号４０１に対応する）。【００４８】
順序集合の配列OrdSet中の要素（レコード番号）が指し示す位置にある、ポインタ配列VNo中の値を特定し、さらに、その値が指し示す位置にある値リストVL中の項目値を取り出すことにより、レコード番号に対応する項目値を取得することができる。他の項目の情報ブロックについても同様の構造である。【００４９】
単一のコンピュータが、単一のメモリ（物理的には複数であっても良いが、単一のアドレス空間に配置されアクセスされるという意味で単一のメモリ）であれば、当該メモリに、順序集合の配列OrdSet、各情報ブロックを構成する値リストVLおよびポインタ配列VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、その大きさにともなってメモリ容量も大きくなるため、これらを分散配置できるのが望ましい。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが望ましい。【００５０】
そこで、本実施の形態においては、複数のＰＭＭが、重なることなくレコードのデータを分掌把握し、ＰＭＭ同士のパケット通信により、高速な検索、クロス集計、検索を実現している。【００５１】
［コンパイル処理］
まず、複数のＰＭＭにデータを分散配置し、かつ、これらを利用可能にするための処理（コンパイル処理）について説明する。たとえば、図５に示すように、４つのＰＭＭ（ＰＭＭ−０〜ＰＭＭ−３）に、所定のレコード数のデータを収容することを考える。この例では、レコード番号０〜２に関する一連のデータ、レコード番号３、４に関する一連のデータ、レコード番号５〜７に関する一連のデータ、および、レコード番号８、９に関する一連のデータを、それぞれ記憶することとした。各ＰＭＭにおいても、上記表形式データの部分は、情報ブロックの形式で記憶される。【００５２】
図６および図７は、初期的にＰＭＭ−０〜４の各々にてそれぞれ分掌される表形式データの例を示す図である。これらの図から、各ＰＭＭには、項目ごとの情報ブロックの部分集合などが収容される。たとえば、図６において、項目「性別」の情報ブロック６０１では、もとのポインタ配列VNo（図４参照）の部分集合VNo（これも「ポインタ配列」と称する。）と、もとの値リストVL（図４参照）の部分集合VL（これも「値リスト」と称する。）とが含まれる。【００５３】
ポインタ配列VNoの要素の数は、ＰＭＭが分掌するレコードの数に一致する。これに対して、値リストVLは、ポインタ配列VNoが示す値のみが抽出される。項目「性別」については、ポインタ配列VNoの値が、値リストVL全ての要素（項目値）を指し示しているため、値リストVLと、もとの値リストVLとは一致する。その一方、項目「年齢」、「身長」および「体重」については、もとの値リストVLから、ポインタ配列中の要素が指し示す値のみが、もとの値リストVLの部分集合として取り出されることが理解できるであろう。【００５４】
さらに、分掌される情報ブロックにおいては、各ＰＭＭにおいて、ポインタ配列VNoの要素により適切に値リストVLの要素（項目値）が指し示されるように、つまり、ＰＭＭ内のローカルな処理（ポインタ値の指定や項目値の指定）においても整合性が保たれるように、その要素は、対応するもとのポインタ配列VNoの要素から変換されている。【００５５】
前述したように、分掌される情報ブロックにおいては、値リストVLにおいて、当該分掌された情報ブロックにおいて必要な要素（項目値）のみを保持している。よって、ポインタ配列VNoおよび値リストVLによって、ローカルな処理の整合性は保たれる。しかしながら、ＰＭＭ間での処理の整合性を保つため、各ＰＭＭにて分掌される値リストVLの要素（項目値）の、値リスト全体における位置づけ、つまり、各項目値が、値リスト全体において、所定の順序のもと何番目であるかを把握する必要がある。そこで、本実施の形態では、分掌される各情報ブロックにおいて、グローバル値番号配列GVNoを配置し、項目値に対応する値の位置を示す番号を収容できるようにしている。【００５６】
各ＰＭＭには、上記情報ブロックの部分集合を分掌するためのオフセット値(OFFSET)が割り当てられる。このオフセット値OFFSETは、ＰＭＭが分掌するレコードに関するもとの順序集合OrdSetにおける先頭の値に対応する。【００５７】
また、各ＰＭＭにおいては、ローカルな処理における整合性をたもつため、新たな順序集合OrdSetが作られる。順序集合OrdSetの要素の数は、ＰＭＭが分掌するレコード数と一致する。その一方、ＰＭＭ間での処理の整合性を保つため、各ＰＭＭが分掌するレコードが、全体の中ではどういった番号（順序集合の要素）を持っているかを把握しておく必要がある。このため、全体における各レコードの番号を収容したグローバル順序集合配列GOrdを設けている。【００５８】
図８は、本実施の形態にかかるコンパイル処理を概略的に示すフローチャートである。図８に示すように、まず、各ＰＭＭに、図６〜図７に示す初期的な情報ブロックが生成される（ステップ８０１）。これは、たとえば、外部の他のコンピュータから、ＰＭＭに、それぞれが分掌すべき、順序集合OrdSet、各情報ブロックを構成するポインタ配列VNo、値リストVL、および、オフセット値OFFSETが与えられることにより実現できる。これら配列は、各ＰＭＭ内のメモリ２４に記憶される。【００５９】
ステップ８０２以降は、各ＰＭＭにおけるローカルな処理およびＰＭＭ間のパケット通信にかかる処理に移行する。各ＰＭＭの制御回路２０は、オフセット値を参照して、グローバル順序集合配列GOrd中に配置するそれぞれの値を算出し、配列中に値を配置する（ステップ８０２）。図９は、図６〜図７に示す例でのグローバル順序集合配列GOrdへの値の配置を示す図である。ここでは、順序集合の値にオフセット値OFFSETを加えたものを、グローバル順序集合配列GOrdの対応する位置に配置すればよい。ステップ１００２は、各ＰＭＭにおけるローカルな処理で実現できる。【００６０】
次いで、グローバル値リスト番号配列GVNoの値が決定される（ステップ８０３）。このグローバル値リスト番号配列GVNoの値の決定について、以下に詳細に説明する。以下、時計回りのバス１４が、４チャンネルの伝送路を有し、同様に、反時計回りのバス１６も、４チャンネルの伝送路を有すると考える。以下、時計回りの各チャンネルのバスについて、Ｕ−０〜Ｕ−３と称し、反時計回りの各チャンネルのバスについては、Ｄ−０〜Ｄ−３と称する。基本的には、ＰＭＭは、図１４Ａに示すように、バスからパケットを受理すると（ステップ１４０１）、パケット中のＶＬの値から、自己のＶＬの値と同一の値を消去して、送られてきたバスと同一のバスに、同一方向に、値の消去後のパケットを送信する（ステップ１４０３）。より詳細に、各ＰＭＭの処理について説明する。【００６１】
（第１のタイミング）
図１０に示すように、最初のタイミングで、ＰＭＭ−０は、バスＵ−０に、ＰＭＭ−０自身のＶＬの値の一覧を含むパケットを送出する（符号１００１参照）。ＰＭＭ−１は、バスＵ−１に、ＰＭＭ−１自身のＶＬの値の一覧を含むパケットを送出する（符号１００２参照）。同様に、ＰＭＭ−２、ＰＭＭ−３は、それぞれ、バスＤ−１、Ｄ−０に、自身のＶＬの値の一覧を含むパケットを送出する（符号１００３、１００４参照）。この例では、Ｕ−０、Ｕ−１は、それぞれ、ＰＭＭ−０、ＰＭＭ−１のＶＬの値を含むパケットを伝送するために用いられ、Ｕ−２、Ｕ−３は使用されない。また、Ｄ−０、Ｄ−１は、それぞれ、ＰＭＭ−３、ＰＭＭ−２のＶＬの値を含むパケットを伝送するために用いられ、Ｄ−２、Ｄ−３は使用されない。【００６２】
（第２のタイミング）
パケットを受理したＰＭＭは、そのパケットを、同じ方向に次のパケットに転送する。これに先立って、受理したパケットの値を参照して、自身の保持するＶＬの値と同一の値が存在していた場合には、これを消去した上で、パケットを転送する。図１１に示すように、この例では、ＰＭＭ−１は、ＰＭＭ−０からバスＵ−０を介して伝送されたパケットを参照し、ＰＭＭ−１自身のＶＬの値と同一の値があれば、これを消去した上で、バスＵ−０を介して、ＰＭＭ−２に転送する。同様に、ＰＭＭ−２は、ＰＭＭ−３からバスＤ−０を介して伝送されたパケットを参照し、ＰＭＭ−２自身のＶＬの値と同一の値があれば、これを消去した上で、バスＤ−０を介してＰＭＭ−１に転送する。【００６３】
（第３のタイミング）
さらに、パケットを受理したＰＭＭにおいては、受理したパケット中のＶＬの値を参照して、自身のＶＬと同一値を消去して、同じ方向の次のパケットに転送する。図１２においては、ＰＭＭ−１は、ＰＭＭ−２から、バスＤ−０、Ｄ−１を介して伝送された、それぞれのパケット中のＶＬの値を参照して、ＰＭＭ−１自身のＶＬの値と同一の値が存在していた場合には、これを消去した上で、それぞれのパケットを、バスＤ−０、Ｄ−１を介して、ＰＭＭ−１に転送する。また、ＰＭＭ−２は、ＰＭＭ−１から、バスＵ−０、Ｕ−１を介して伝送された、それぞれのパケット中のＶＬの値を参照して、ＰＭＭ−２自身のＶＬの値と同一の値が存在していた場合には、これを消去した上で、それぞれのパケットを、バスＵ−０、Ｕ−１を介して、ＰＭＭ−３に転送する。【００６４】
（第４のタイミング）
次のタイミングでも、パケットを受理したＰＭＭにおいて、受理したパケット中のＶＬの値を参照して、自身のＶＬと同一値を消去する。たとえば、図１３の例では、ＰＭＭ−０においては、バスＤ−０、Ｄ−１を介して伝送された、それぞれのパケット中のＶＬの値を参照して、ＰＭＭ−０自身のＶＬの値と同一の値が存在していた場合には、それぞれのパケット中のＶＬの値を消去する。同様に、ＰＭＭ−３においては、バスＵ−０、Ｕ−１を介して伝送されたパケット中のＶＬの値を参照して、ＰＭＭ−３自身のＶＬの値と同一の値が存在した場合には、それぞれのパケット中のＶＬの値を消去する。【００６５】
図１０〜図１３に示す例では、図１３に示す段階で、それぞれのＰＭＭのＶＬの値が、全ての他のＰＭＭを通り、他のＰＭＭにおける同一値（つまり重複値）が削除されている状態となる。ＰＭＭが４つ以上の場合には、さらに、同一値の削除および転送が繰り返される。【００６６】
以下、第１のタイミング〜第4のタイミングについて、Ｕ−０、Ｕ−１を伝送されるパケットに着目して、ＶＬの値の消去について再度説明する。
第１のタイミング〜第４のタイミングで、それぞれのバスに以下の値を含むパケットが伝送される。【００６７】
第１のタイミング
Ｕ−０：ＰＭＭ−０のＶＬの値全て
Ｕ−１：ＰＭＭ−１のＶＬの値全て【００６８】
第２のタイミング
Ｕ−０：（ＰＭＭ−０のＶＬの値全て）
−（ＰＭＭ−１においても重複して存在する値）
Ｕ−１：ＰＭＭ−１のＶＬの値全て【００６９】
第３のタイミング
Ｕ−０：（ＰＭＭ−０のＶＬの値全て）
−（ＰＭＭ−１においても重複して存在する値）
−（ＰＭＭ−２においても重複して存在する値）
Ｕ−１：（ＰＭＭ−１のＶＬの値全て）
−（ＰＭＭ−２においても重複して存在する値）【００７０】
第４のタイミング
Ｕ−０：（ＰＭＭ−０のＶＬの値全て）
−（ＰＭＭ−１においても重複して存在する値）
−（ＰＭＭ−２においても重複して存在する値）
−（ＰＭＭ−３においても重複して存在する値）
Ｕ−１：（ＰＭＭ−１のＶＬの値全て）
−（ＰＭＭ−２においても重複して存在する値）
−（ＰＭＭ−３においても重複して存在する値）【００７１】
したがって、第4のタイミングが終了した時点で、ＰＭＭ−３において保持される、バスＵ−０およびＵ−１からのパケットの値の和（和集合：「Ｕ−０＋Ｕ−１」と表す）は、以下のような値を含むものとなる。
Ｕ−０＋Ｕ−１：（重複のないＰＭＭ−０およびＰＭＭ−１のＶＬの値全て）
−（ＰＭＭ−２或いはＰＭＭ−３において重複して存在する値）【００７２】
したがって、ＰＭＭ−２およびＰＭＭ−３は、「Ｕ−０＋Ｕ−１」を参照することにより、それぞれのＰＭＭにおけるＶＬの値を、正しく（つまり他のＰＭＭの順序を考慮した状態で）順序付けることが可能となる。【００７３】
この順序付けについて、以下に説明する。ＰＭＭ−０は、受理したバスＤ−０からのパケットに含まれるＶＬの値を参照して、自己のＧＶＮｏの値を更新する。ＰＭＭ−０では、既にＶＬを含むパケットを保持しているため、図１４Ｂに示す、あるバスからのパケットの受理（ステップ１４１１）は省略される。たとえば、ＰＭＭ−０は、Ｄ−０を経て与えられたパケット中のＶＬの値（つまり、ＰＭＭ−３のＶＬの値：この例では［φ］）を参照して、その値を考慮して、自己のＶＬの値の順位を決定し（ステップ１４１２）、グローバル値番号配列GVNoの値を決定する（ステップ１４１３）。上記Ｄ−０を経て与えられたパケット中のＶＬの値は［φ］であるため、GVNoの値は変化しない（図１５の符号１５０１参照）。このパケットはＵ−０を経て、ＰＭＭ−１に送られる（ステップ１４１４）。【００７４】
また、ＰＭＭ−０は、Ｄ−１を経て与えられたパケット中のＶＬの値（つまり、ＰＭＭ−２のＶＬの値：ここでは、[２０，３３]）を参照して、その値を考慮して、事故のVLの値の順位を決定し（ステップ１４１２）、グローバル値番号配列GVNoの値を決定する（ステップ１４１３、図１５の符号１５０２参照）。このパケットは、Ｕ−１を経て、ＰＭＭ−１に送られる（ステップ１４１４）。なお、ＰＭＭ−０においては、Ｄ−０、Ｄ−１を経て受理したパケットを、それぞれＵ−０、Ｕ−１に向けて送信している。これ以降、パケットは、それぞれ、Ｕ−０、Ｕ−１で送信されることになる。【００７５】
このようにして、必要なパケット中のＶＬの値を参照し終わると、それぞれのパケット中のＶＬの値に基づいたGVNoの更新結果が重ね合わせられる（ステップ１４１６）。より詳細には、GVNoの各値の加算値の総和を、GVNoのもとの値に加えればよい。図１５の符号１５０１に示すように、ＰＭＭ−３のＶＬの値を参照して更新されたGVNoが［１，２，３］であり、ＰＭＭ−２のＶＬの値を参照して更新されたGVNoが［１，３，４］であるので、重ね合わせの結果、最終的なGVNoの値は、［１，３，４］となる（図１５の符号１５０３参照）。【００７６】
同様に、ＰＭＭ−１は、ＰＭＭ−０からのパケットを受理すると、同様の処理を実行して、受理したそれぞれのパケットを参照し、GVNoの値を更新する（図１６の符号１６０１、１６０２参照）。ここでも、Ｕ−０を経て受信されたパケット中のＶＬの値（つまり、ＰＭＭ−３のＶＬの値）に参照して更新されたGVNoが［０，４］であり、Ｕ−１を経て受信されたパケット中のＶＬの値（つまり、ＰＭＭ−２のＶＬの値）を参照して更新されたGVNoが［０，５］であるから、重ね合わせの結果、最終的なGVNoの値は、［０，５］となる（図１６の符号１６０３参照）。【００７７】
その一方、ＰＭＭ−３においては、Ｕ−０、Ｕ−１からそれぞれパケットを受理している。Ｕ−０を経て受理したパケット中のＶＬの値は、ＰＭＭ−０のＶＬの値に基づくものであり、かつ、Ｕ−１を経て受理したパケット中のＶＬの値は、ＰＭＭ−１のＶＬの値に基づくものである。ＰＭＭ−３も、図１４Ｂに示すような処理を実行して、GVNoの値を更新するとともに、更新結果を重ね合わせて、最終的なGVNoの値を得る（図１７の符号１７０１〜１７０３参照）。その後、ＰＭＭ−３は、ＰＭＭ−０のＶＬの値に基づくパケットを、Ｄ−０を経てＰＭＭ−２に送信し、かつ、ＰＭＭ−１のＶＬの値に基づくパケットを、Ｄ−１を経てＰＭＭ−２に送信する（図１８の符号１８０１〜１８０３参照）。
このように、グローバル順序集合配列GOrdおよびグローバル値番号配列GVNoを求めることでコンパイルが終了する。コンパイル処理が終了すると、検索、クロス集計、ソートなどの処理を円滑かつ迅速に実行することができる。【００７８】
［検索処理］
次に、検索処理について説明する。図１９に示すように、まず、各ＰＭＭはて、検索対象となった項目について、値リストVLと同じサイズのフラグ配列を作成し（ステップ１９０１）、次いで、フラグ配列の値を合否条件でセットアップする（ステップ１９０２）。このセットアップに際して、検索条件に合致する項目値に対応するフラグ配列の値として「１」を設定し、それ以外のフラグ配列の値として「０」を設定する。【００７９】
次いで、各ＰＭＭは、検索結果格納先領域である新たなグローバル順序集合配列GOrd’およびOrdSet’とを生成する（ステップ１９０３）。図２０は、各ＰＭＭにおいて、値がセットアップされたフラグ配列および領域として新たなグローバル順序集合配列および順序集合配列が生成された状態の一例を示す図である。この例では、「年齢」という項目について、「２０歳以上２４歳以下」のレコードを検索することとしている。したがって、各ＰＭＭにおいて、項目値が２０以上２４以下であるようなものに対応するフラグ配列の値が「１」となっている。【００８０】
次に、合否判定実行される（ステップ１９０４）。この処理においては、順序集合配列OrdSetの値ごとに、値リストへのポインタVNoの値（ポインタ値）が見出され、当該ポインタ値が示すフラグ配列の値を取得する（ステップ１９１１）。この値が「０」であれば（ステップ１９１２でノー(No)）、なんら処理を実行しない。その一方、フラグ配列の値が「１」であれば（ステップ１９１２でイエス(Yes)）、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に、順次、処理に関連するグローバル順序集合配列GOrdおよび順序集合配列OrdSetの値が、それぞれ収容される（ステップ１９１３）。【００８１】
順序集合配列の末尾の要素まで、ステップ１９１１〜１６１３の処理が繰り返される（ステップ１９１４、１６１５参照）。上記図１９の処理は、各ＰＭＭにおいてローカルに、かつ、並列的に実行される。図２１は、各ＰＭＭにおいて、図１９の処理が実行され、ローカルにかつ並列的に、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に値が配置される状態の例を示す。また、図２２は、配列中、不要な領域を削除した状態を示す（符号２２０１〜２２０４参照）。【００８２】
上記処理の後、ＰＭＭ間のパケット通信にかかる処理に移行する。本実施の形態において、図１に示す時計回りに４チャンネルのバス（パケット伝送路）、反時計回りにも４つのバス（パケット伝送路）が存在すると考える。時計回りのバスをＵ−０〜Ｕ−３と称し、反時計回りのバスをＤ−０〜Ｄ−３と称する。【００８３】
図２３に示すように、バスＵ−０、Ｕ−１およびＵ−２は、それぞれ、ＰＭＭ−０、ＰＭＭ−１およびＰＭＭ−２のグローバル順序集合配列GOrd’を伝達し、バスＤ−０、Ｄ−１およびＤ−２は、それぞれ、ＰＭＭ−３、ＰＭＭ−２およびＰＭＭ−１のグローバル順序集合配列GOrd’を、バスＵ−０〜２とは逆向きに伝達する。【００８４】
たとえば、ＰＭＭ−０は、Ｕ−０を利用して、自身のGOrd’を含むパケットを送信し、Ｄ−０〜Ｄ−２から、それぞれ、ＰＭＭ−３〜ＰＭＭ−０のGOrd’を含むパケットを受信する。ＰＭＭ−１は、Ｕ−１、Ｄ−２を利用して、自身のGOrd’を含むパケットを送信し、Ｕ−０、Ｄ−０およびＤ−１から、それぞれ、ＰＭＭ−０、ＰＭＭ−３およびＰＭＭ−２のGOrd’を含むパケットを受信する。【００８５】
ＰＭＭ−２は、Ｕ−２、Ｄ−１を利用して、自身のGOrd’を含むパケットを送信し、Ｕ−０、Ｕ−１およびＤ−０から、それぞれ、ＰＭＭ−０、ＰＭＭ−１およびＰＭＭ−３のGOrd’を含むパケットを受信する。また、ＰＭＭ−３は、Ｄ−０を利用して、自身のGOrd’を含むパケットを送信し、Ｕ−０〜Ｕ−２から、それぞれ、ＰＭＭ−０〜ＰＭＭ−２のGOrd’を含むパケットを受信する。【００８６】
各ＰＭＭにおける処理について、以下に説明する。図２４に示すように、いずれかのバスからパケットを受理すると（ステップ２４０１）、ＰＭＭは、パケット中のGOrd’の値を参照して、その値を考慮した自身のGOrd’の値の順位を特定する（ステップ２４０２）。この順位に対応する値は、新たなグローバル順序集合配列GOrd”に収容される（ステップ２４０３）。ＰＭＭは、受理した全てのパケットに関して、同様な処理を実行する（ステップ２４０４参照）。したがって、受理したパケットの数だけ、GOrd”が生成されることになる。【００８７】
図２５〜図２８は、それぞれ、ＰＭＭ−０〜ＰＭＭ−２にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示している。それぞれの図において、左側から３つのブロックが、新たに生成されたGord”を示す。【００８８】
全てのパケットを受理した場合には、ＰＭＭは、各GOrd”中の各値への加算値の総和を算出し、得られた総和を、GOrd”のもとの値に加える（ステップ２４０５）。この加算結果からなる配列が、最終的に得るべきグローバル順序集合配列となる。図２５〜図２８のそれぞれの右端のブロックにおいて、GOrd”が求められたグローバル順序集合配列に相当する。【００８９】
なお、値の加算処理（ステップ２４０５）は、全てのパケットを受理した後に行なう必要はなく、パケットが受理され、新たなグローバル順序集合配列GOrd”が生成されるごとに、GOrd”に対する加算値を、もとの値に加えても良い。【００９０】
このような処理が、各ＰＭＭにて並列的に実行されることにより、ＰＭＭのグローバル順序集合配列GOrd”の値が確定する。配列GOrd”の値は、検索により抽出されたレコードの、全体における順位、つまり、グローバルな順位を表す。GOrd”を新たなGOrdとすれば、当該配列GOrd中の値にしたがって、順次レコードを取り出せば、所定の順序にしたがった検索結果を取得することが可能となる。【００９１】
図２９における各ＰＭＭの配列GOrdが、それぞれ、検索処理の結果得られた新たな配列である。この配列GOrdの値の小さな順に、対応する配列OrdSetの値、この値が示す値リストVLの値を取り出せば、「年齢」という項目について「２０歳以上２４歳以下」のレコードが、レコード番号（順序集合）の順でリストされ得る。【００９２】
［ソート処理］
次に、ソート処理について説明する。ここでも、コンパイル処理が終了した状態から処理が開始される。図３０に示すように、各ＰＭＭは、ソートすべき項目に関する値リストVLと同一のサイズの、存在数配列の領域を生成し（ステップ３０１０１）、領域中の各値に初期値「０」を与える（ステップ３００２）。図３１は、「年齢」という項目について、それぞれのＰＭＭにおいて、値リストVLと同一のサイズを有する領域が作られ、それぞれに初期値「０」が与えられた状態を示す。【００９３】
次いで、各ＰＭＭは、存在数配列のそれぞれに対するカウントアップ処理を実行する（ステップ３００３）。より詳細には、各ＰＭＭは、順序集合配列OrdSetの値を参照して、ソートすべき項目のポインタ配列VNoの値を特定する（ステップ３０１１）。次いで、各ＰＭＭは、存在数配列中、当該ポインタ配列VNoの値に示される位置の値をカウントアップする（ステップ３０１２）。このような処理が、順序集合配列OrdSetの末尾まで繰り返される（ステップ３０１３，３０１４参照）。【００９４】
図３２は、各ＰＭＭにおけるカウントアップの一例を示す図である。たとえば、ＰＭＭ−０において、順序集合配列OrdSetの要素「０」が示す位置の、年齢のポインタ配列VNoの値は「０」である。したがって、存在数配列の「第０番目」の位置、つまり、先頭の位置にある値を、「０」から「１」にカウントアップする。他のＰＭＭにおいても、同様の処理が実行されていることが理解できるであろう。【００９５】
カウントアップ処理が終了すると、図３３に示すように、各ＰＭＭは、存在数配列の要素を累計して、当該存在数配列を累計数配列に変換する（ステップ３３０１）。累計数配列の要素である累計数は、項目値を指し示すレコードの数を示す存在数を考慮して、当該累計数が配置されている位置の項目値を指し示すレコードの先頭の位置を示すようになっている。具体的には、各ＰＭＭが、配列の位置を示すパラメータ「ｉ」を初期化して（ステップ３３１１）、パラメータが示す存在数配列中の値を取り出し（ステップ３３１２）、パラメータ「ｉ」が示す位置より、後ろの位置、つまり、「ｉ＋１」、「ｉ＋２」、・・・の位置の存在数配列の値に、ステップ３３１２で取り出された値を、それぞれ加算する（ステップ３３１３）。ステップ３３１２、３３１３に示す処理を、値リストVLの要素（項目値）の個数だけ繰り返せばよい（ステップ３３１４、３３１５参照）。【００９６】
このようにして、たとえば、図３４に示すような累計数配列を得ることができる。さらに、各ＰＭＭは、後にＰＭＭ全体における順位を格納するための配列GVNo、GOrd’およびOrdSet’のための領域も作られる（ステップ３３０２）。これら配列のサイズは、それぞれ、値リストVLのサイズと一致する。【００９７】
次に、各ＰＭＭにおけるローカルなソート処理が実行される。図３５に示すように、各ＰＭＭは、順序集合配列OrdSetの値を取り出し（ステップ３５０１）、次いで、ポインタ配列VNo中、配列OrdSetの値が指し示す位置の値（ポインタ値）を特定する（ステップ３５０２）。その後、各ＰＭＭは、ソートすべき項目のグローバル値番号配列GVNo中、ポインタ配列VNoの値が示す位置の値を取得する（ステップ３５０３）。この値は、後述する値の格納処理に利用される。その一方、上記累計数配列においても、ポインタ配列VNoが示す位置の値が取得される（ステップ３５０４）。この値は、後述する値の格納処理において、配列中の位置を指定するために利用される。【００９８】
次に値の格納処理が実行される。各ＰＭＭは、先に生成した配列GVNo中、ステップ３５０４で取得された累計数配列の値が示す位置に、ステップ３５０２で取得された、ソートすべき項目に関するGVNoの値を配置する（ステップ３５０５）。また、各ＰＭＭは、配列GOrd’、OrdSet’中、ステップ３５０４で取得された累計数配列の値が示す位置に、グローバル順序集合配列GOrdおよび順序集合配列OrdSetの値を、それぞれ配置する（ステップ３５０６）。次いで、処理に用いられた累計数配列の値がインクリメントされる（ステップ３５０７）。【００９９】
上記ステップ３５０１〜３５０７の処理が、配列OrdSet中の全ての値について、順次実行される（ステップ３５０８、３５０９参照）。【０１００】
図３６および図３７は、各ＰＭＭにおいてローカルなソート処理が実行されている状態の例を示す図である。たとえば、ＰＭＭ−０に関して、図３６においては、配列OrdSetの値「０」の取り出し（ステップ３５０１参照）、当該OrdSetの値「０」が示す位置の、配列VNoの値「０」の特定（ステップ３５０２参照）、当該配列VNoの値「０」が示す位置の、配列GVNoの値「１」の取得（ステップ３５０３）、および、配列VNoの値「０」が示す位置の、累計数配列の値「０」の取得（ステップ３５０４）が実行されていることが理解できるであろう。また、累計数配列の取得の後、当該累計数配列の値が、「０」から「１」になっていることもわかる（ステップ３５０７参照）。【０１０１】
また、ＰＭＭ−０に関して、図３７において、ステップ３５０３で取得された累計数配列の値の示す位置における、配列GVNo、GOrd’およびOrdSet’への、項目「年齢」に関する配列GVNoの値「１」、並びに、配列GOrdの値「０」および配列OrdSetの値「０」の配置（ステップ３５０５、３５０６）が示されていることが理解できるであろう。他のＰＭＭについても、図３６、３７において、同様にステップ３５０１〜３５０５に示す処理が実行されていることがわかる。【０１０２】
上記ローカルな（つまり各ＰＭＭにおける）ソート処理により、図４６に示すような配列を得ることができる。ローカルなソート処理の後、ＰＭＭ間のパケット通信にかかる処理に移行する。本実施の形態において、図１に示す時計回りに４チャンネルのバス（パケット伝送路）、反時計回りにも４つのバス（パケット伝送路）が存在すると考える。時計回りのバスをＵ−０〜Ｕ−３と称し、反時計回りのバスをＤ−０〜Ｄ−３と称する。【０１０３】
図３８に示すように、バスＵ−０、Ｕ−１およびＵ−２は、それぞれ、ＰＭＭ−０、ＰＭＭ−１およびＰＭＭ−２の、グローバル順序集合配列GOrd’およびグローバル値番号配列GVNo’を伝達し、バスＤ−０、Ｄ−１およびＤ−２は、それぞれ、ＰＭＭ−３、ＰＭＭ−２およびＰＭＭ−１のグローバル順序集合配列GOrd’ およびグローバル値番号配列GVNo’を、バスＵ−０〜２とは逆向きに伝達する。【０１０４】
たとえば、ＰＭＭ−０は、Ｕ−０を利用して、自身のGOrd’およびGVNo’を含むパケットを送信し、Ｄ−０〜Ｄ−２から、それぞれ、ＰＭＭ−３〜ＰＭＭ−０のGOrd’および GVNo’を含むパケットを受信する。ＰＭＭ−１は、Ｕ−１、Ｄ−２を利用して、自身のGOrd’およびGVNo’を含むパケットを送信し、Ｕ−０、Ｄ−０およびＤ−１から、それぞれ、ＰＭＭ−０、ＰＭＭ−３およびＰＭＭ−２のGOrd’およびGVNo’を含むパケットを受信する。【０１０５】
ＰＭＭ−２は、Ｕ−２、Ｄ−１を利用して、自身のGOrd’ およびGVNo’を含むパケットを送信し、Ｕ−０、Ｕ−１およびＤ−０から、それぞれ、ＰＭＭ−０、ＰＭＭ−１およびＰＭＭ−３のGOrd’ およびGVNo’を含むパケットを受信する。また、ＰＭＭ−３は、Ｄ−０を利用して、自身のGOrd’ およびGVNo’を含むパケットを送信し、Ｕ−０〜Ｕ−２から、それぞれ、ＰＭＭ−０〜ＰＭＭ−２のGOrd’ およびGVNo’を含むパケットを受信する。【０１０６】
各ＰＭＭにおける処理について、以下に説明する。図３９に示すように、いずれかのバスからパケットを受理すると（ステップ３９０１）、ＰＭＭは、パケット中の値GVNo’の値を参照して、その値を考慮した自身のGVNo’の値の順位を特定する（ステップ３９０２）。この順位に対応する値は、新たなグローバル順序集合配列GOrd”に収容される（ステップ２４０３）。なお、配列GVNo’の値が同じときには、それぞれの対応するGOrd’の値が参照され、GOrd’の値が小さいほうが、上位となる。【０１０７】
ＰＭＭは、受理した全てのパケットに関して、同様な処理を実行する（ステップ２４０４参照）。したがって、受理したパケットの数だけ、GOrd”が生成されることになる。
図４０〜図４３は、それぞれ、ＰＭＭ−０〜ＰＭＭ−２にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示している。それぞれの図において、左側から３つのブロックが、新たに生成されたGord”を示す。【０１０８】
全てのパケットを受理した場合には、ＰＭＭは、各GOrd”中の各値への加算値の総和を算出し、得られた総和を、GOrd”のもとの値に加える（ステップ３９０５）。この加算結果からなる配列が、最終的に得るべきグローバル順序集合配列となる。図４０〜図４３において、右端のブロックが、GOrd”が求められたグローバル順序集合配列に相当する。【０１０９】
なお、値の加算処理（ステップ３９０５）は、全てのパケットを受理した後に行なう必要はなく、パケットが受理され、新たなグローバル順序集合配列GOrd”が生成されるごとに、GOrd”に対する加算値を、もとの値に加えても良い。このようにして、ソート順を示すグローバル順序集合GOrd’’が完成する。処理が終了すると、生成されたGOrd’’をGOrdと読み替え、かつ、OrdSet’をOrdSetと読み替えれば良い。これにより、各ＰＭＭにおいて、図４４に示すような配列が取得される。ここで、配列GOrdの順に、レコードを順次取り出すことにより、ソートされた表形式データを得ることができる（図４５参照）。【０１１０】
上述したように、生成されたGOrd”をGOrdと読み替え、かつ、OrdSet’をOrdSetと読み替えることにより、たとえば、各ＰＭＭにおいて、図４４に示すような配列が取得される。ここで、配列GOrdの順に、レコードを順次取り出すことにより、ソートされた表形式データを得ることができる（図４５参照）。【０１１１】
［システム構成、本発明の意義］  
本発明にかかる情報処理システムは、たとえば、フロントエンドとなる端末装置と、リング状のチャネルを介して接続され、端末装置からの命令を、それぞれのＰＭＭが受理することにより、ＰＭＭにおいて、上述したコンパイル、検索、クロス集計ソートの処理が実行できる。また。各ＰＭＭはパケットを何れかのバスを利用して送出すればよく、ＰＭＭ間の同期等を外部から制御する必要もない。【０１１２】
また、制御装置には、上記コンパイル、検索などの繰り返し演算のためのハードウェア構成を備えたアクセラレータチップのほか、これに加えて、汎用ＣＰＵを含めても良い。汎用ＣＰＵは、端末装置からチャネルを介して伝達された命令を解釈し、アクセラレータチップに必要な指示を与えることができる。【０１１３】
さらに、制御装置、特に、その中のアクセラレータチップには、順序集合配列、グローバル順序集合配列など作業に必要な種々の配列を収容するためのレジスタ群が設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必要な値をロードしてしまえば、コンパイル、検索、クロス集計およびソートにかかる上述した処理演算中には、制御装置はメモリにアクセスすることなく、レジスタから値を読み出し、或いは、レジスタに値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる（演算処理前のロード、および、処理結果の書き込み）ことができ、処理時間を著しく短縮することが可能となる。【０１１４】
次に、本発明にて導入した配列GOrdおよび配列GVNoの意義について説明する。本発明において、グローバル順序集合配列GOrdは、各ＰＭＭが掌握するローカルな表形式データを集合させたグローバルな表形式データ中、各ＰＭＭの掌握する表形式データの各レコードの位置（順位）を示している。すなわち、本発明においては、グローバル順序集合配列GOrdおよび順序集合配列OrdSetにより、レコードの位置情報を、グローバルな成分とローカルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能となるとともに、各ＰＭＭが単独で処理を実行することも可能となる。【０１１５】
本実施の形態においては、ＰＭＭが各項目の情報ブロックを保持するように構成されていたが、ＰＭＭが表形式データをそのまま保持するような場合でも、上記GOrdは、後述するように同様に機能する。【０１１６】
たとえば、本実施の形態においてコンパイルが終了した状態（たとえば、図２０参照）で、グローバル順序集合配列GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式データ全体のビューを作成することができる。検索が終了した状態（たとえば、図２９参照）やソートが終了した状態（たとえば、図４４参照）においても、同様である。【０１１７】
より詳細には、たとえば、図２０において、ＰＭＭ−２の制御回路２０が、順位を示す値「５」を受理すると、グローバル順序集合配列GOrd中の値「５」に関連する（ローカルな）順序集合配列OrdSet中の値「０」が特定される。さらに、項目「年齢」に関して、ポインタ配列PV中の値「１」が特定され、次いで、値リストVL中の項目値「２０」を特定することができる。無論、他の項目についても、ポインタ配列PV中の値、および、当該配列PV中の値にて特定される値リストVL中の項目値が特定される。これにより、順位を示す値に対応するレコードを取り出すことが可能となる。【０１１８】
また、情報ブロックを保持しないような構成であっても、上述したような、順位を示す値の受理に応答して、対応するレコードの取り出しを実現できる。これについては、図６０を参照しつつ、後述する。【０１１９】
次に、情報ブロックを保持しないような構成を参照して、配列GOrdの意義について、さらに説明する。たとえば、図４７の符号４７１０に示すように、表形式データを、値（項目値）そのものをソートするのではなく、項目を特定するアドレス情報となる順序集合配列の値をソートして、配列中の値を再配置することにより実現する場合を考える。図４７の符号４７００に示すような、順序集合配列OrdSetが、ソート後のレコードの順序を示している。【０１２０】
次に、上記順序集合配列OrdSetおよび表形式データの本体（図４７の符号４７００参照）を、複数のＰＭＭにて分掌把握することを考える。順序集合配列OrdSetを分割し、かつ、表形式データ本体を分割して、分割された配列OrdSetおよび表形式データ本体の組を、ＰＭＭに分掌させた例を図４８に示す。この場合、あるＰＭＭ配列OrdSet中の値が、他のＰＭＭが保持するレコードを指し示す場合もある（たとえば、矢印４８０１、４８０２参照）。したがって、各ＰＭＭにて単独で実行できる処理が実質上存在しない。また、図４８の例で、さらに、項目「性別」を「女性」という項目値に絞り込む（検索する）場合に、絞り込まれたレコードを示す値を収容する配列を、どのように分掌すれば良いか、明確な基準を作ることができない。つまり、上述した状態での検索は実質的に不可能となる。【０１２１】
これに対して、図４９に示すように、順序集合配列OrdSetによって、各ＰＭＭが把握する表形式データの部分集合における、ローカルなソートされたレコードの順位を掌握し、かつ、グローバル順序集合配列GOrdが、ソートされたレコードのそれぞれの、全体における順位を掌握している。（ローカルな）順序集合配列OrdSetは、自己の掌握する表形式データの部分集合のレコードを指し示すため、ＰＭＭ単独での処理が可能となる。【０１２２】
図４９に示す例における、順位を示す値の受理に応答したレコードの取り出しについても、以下に説明する。たとえば、ＰＭＭ−０の制御回路が、順位を示す値「５」を受理すると、グローバル順序集合配列GOrd中の値「５」に関連する（ローカルな）順序集合配列OrdSet中の値「１」が特定される。これにより、ＰＭＭ−０内の、「性別：男」、「年齢：２１」、「身長：１７２」および「体重：６４」というレコードが取り出される。【０１２３】
さらに、特に、ここで注目すべきは、（ローカルな）順序集合配列OrdSetの値は、ローカルなソートが反映されるため、値の順位の逆転が生じ得るのに対して、グローバル順序集合配列GOrdの値が昇順になっていることである。これにより、高速なＰＭＭ間の処理およびＰＭＭ内の処理が可能となる。無論、検索処理やクロス集計処理の後においても、グローバル順序集合配列GOrdの値は昇順になっている。【０１２４】
このように配列GOrdが昇順であることは、以下のような利点を生じる。たとえば、先に説明した検索処理において、配列GOrd（処理に使用されるものは配列GOrd’）が昇順であるため、値の比較を高速に実現できる（図２４〜図２８参照）。同様に、先に説明したソート処理においても、配列GOrd（処理に使用されるものは配列GOrd’）が昇順であるため（これに加えて、後述する配列GVNoも昇順であるため）、値の比較処理を高速に実現できる（図３９〜図４３参照）。【０１２５】
また、ソートされたレコードを取り出して、ソートされたビューを作成する場合にも、各ＰＭＭは、グローバル順序集合配列GOrdが昇順であるから、先頭のレコードから順に、データを出力していけばよいため、処理を高速化することができる。【０１２６】
また、グローバル値番号配列GVNoを利用して、項目値を特定して取り出すこと、つまり、グローバルな表形式データにおける値（項目値）の順位を示す情報を、ＰＭＭが受理し、その順位に対応する項目値を取り出すことも有用である。たとえば、図２０において、項目「年齢」に関して、先頭、つまり、第０番の項目値を知るために、値の順位「０」を示す命令を受理したＰＭＭ−１が、グローバル値番号配列GVNo中の値「０」に関連する値リストVL中の値「１６」を特定することができる。無論、命令を受理したＰＭＭ−２が同様に動作しても良い。  さらに、グローバル値番号配列GVNoも昇順となる。これは、各ＰＭＭにて掌握される（ローカルな）値リストの項目値が昇順であれば、その順序は保存されるからである。したがって、上記ソート処理において、値の比較処理を高速に実現できる（図３９〜図４３参照）。【０１２７】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。【０１２８】
前記実施の形態においては、ＰＭＭを、一方が時計回りにパケットを伝送する第１のバス（第１の伝送路）、他方が反時計回りにパケットを伝送する第２のバス（第２の伝送路）にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。【０１２９】
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するＰＭＭを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、ＰＭＭの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序集合配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。【０１３０】
さらに、前記実施の形態においては、ＰＭＭがデータをパケット化して伝送路に送信しているがこれに限定されるものではなく、パケット以外の形態でデータを送信しても良いことは言うまでもない。また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。【０１３１】
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の３つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、３つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関する検索、ソートおよび集計を実現することができる。【０１３２】
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。【０１３３】
また、前記実施の形態において、同一値の消去は、たとえば、コンパイル処理における第２のタイミング〜第４のタイミング（図１１〜図１３）に示すように、各ＰＭＭに割り当てられたチャンネルからパケット伝送路を経て受信したパケット中の値を参照して、自己の値と同一の値を消去することにより実現しているがこれに限定されるものではなく、同一値の消去を以下のように行うことにより、コンパイル処理において、同一値の消去と、自己のリスト（あるいは配列）中の順位の決定を分離することもできる。【０１３４】
図５０に示すように、リング状のパケット伝送路に、単一方向で、それぞれのＰＭＭが、自己のＶＬの値を送信し、かつ、受信したパケットにおいて、自己のＶＬの値と同一の値があれば、それを消去した上で、さらに、前記単一方向に隣接する他のＰＭＭに送信するような構成でもよい。図５０の最上段に示すように、たとえば、ＰＭＭ−０は、自己のＶＬの値［１８，２１，２４］を送信する。その一方、ＰＭＭ−０は、ＰＭＭ−３からＰＭＭ−３のＶＬの値［１８，２４］を受信する。ここで、ＰＭＭ−０が、自己のＶＬの値と、ＰＭＭ−３のＶＬの値とを比較して、ＰＭＭ−３のＶＬの値のうち重複するものを消去すると、図５０の２段目に示すように、ＰＭＭ−０からは、ＰＭＭ−１に向けて［φ］つまり値のないパケットが送信される。それぞれのＰＭＭにおいて、受信したＶＬの値から、自己のＶＬの値を消去して、前記単一方向に消去済みの値を含むパケットを送信することを、ＰＭＭの数（図５０の例では４回）だけ繰り返すことにより、同一値の証拠された状態を作り出すことができる。さらに、図５１に示すように、各ＰＭＭにおいて、重複値の消去に先だって、パケットを受信するごとに、受信したパケット中のＶＬの値を比較して、自己のＶＬの順位を決定しておき、ＰＭＭの数（上記例では４回）だけのパケットを伝送した後、パケットの受信ごとに、GVNoの各要素の値の加算値の総和を求めれば、GVNoの値を取得することもできる。【０１３５】
上記図５０および図５１に示す単一方向のパケット伝送による順位の決定および同一値の消去はソート処理についても適用することができる。
【産業上の利用可能性】
【０１３６】
本発明は、特に、大量のデータを管理するシステム、たとえば、データベース、データウェアハウスに適用することができる。より具体的には、大規模な科学技術計算、受発注管理や証券取引などの基幹業務管理、事務管理に利用可能である。
【図面の簡単な説明】
【０１３７】
【図１】図１は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。
【図２】図２は、本発明の実施の形態にかかるＰＭＭの構造の一例を示す図である。
【図３】図３は、表形式データの一例を示す図である。
【図４】図４は、本実施の形態において、表形式データを保持する構造の原理を説明するための図である。
【図５】図５は、本実施の形態において、各ＰＭＭにて分掌把握される配列およびその値を説明する図である。
【図６】図６は、初期的にＰＭＭ−０〜４の各々にてそれぞれ分掌される表形式データの例を示す図である。
【図７】図７は、初期的にＰＭＭ−０〜４の各々にてそれぞれ分掌される表形式データの例を示す図である。
【図８】図８は、本実施の形態にかかるコンパイル処理を概略的に示すフローチャートである
【図９】図９は、図６〜図７に示す例でのグローバル順序集合配列GOrdへの値の配置を示す図である。
【図１０】図１０は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。
【図１１】図１１は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。
【図１２】図１２は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。
【図１３】図１３は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。
【図１４】図１４Ａ、図１４Ｂは、それぞれ、本実施の形態にかかるコンパイル処理における、パケット送信および受理の際にＰＭＭにて実行される処理を示すフローチャートである。
【図１５】図１５は、本実施の形態にかかるコンパイル処理における、パケット受信の際にＰＭＭにて実行される処理を説明する図である。
【図１６】図１６は、本実施の形態にかかるコンパイル処理における、パケット受信の際にＰＭＭにて実行される処理を説明する図である。
【図１７】図１７は、本実施の形態にかかるコンパイル処理における、パケット受信の際にＰＭＭにて実行される処理を説明する図である。
【図１８】図１８は、本実施の形態にかかるコンパイル処理における、パケット受信の際にＰＭＭにて実行される処理を説明する図である。
【図１９】図１９は、本実施の形態にかかる検索処理の部分を示すフローチャートである。
【図２０】図２０は、本実施の形態にかかる検索処理において、パケット伝送に先立って実行される処理を示すフローチャートである。
【図２１】図２１は、各ＰＭＭにおいて、図１９の処理が実行され、ローカルにかつ並列的に、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に値が配置される状態の例を示す図である。
【図２２】図２２は、配列中、不要な領域を削除した状態を示す（符号２２０１〜２２０４参照）。
【図２３】図２３は、本実施の形態にかかる検索処理におけるパケット伝送の例を示す図である。
【図２４】図２４は、本実施の形態にかかる検索処理における、パケット受信の際にＰＭＭにて実行される処理を示すフローチャートである。
【図２５】図２５は、本実施の形態にかかるＰＭＭ−０にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図２６】図２６は、本実施の形態にかかるＰＭＭ−１にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図２７】図２７は、本実施の形態にかかるＰＭＭ−２にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図２８】図２８は、本実施の形態にかかるＰＭＭ−３にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図２９】図２９は、本実施の形態において検索処理により得られた新たな配列を示す図である。
【図３０】図３０は、本実施の形態にかかるソート処理の部分を示すフローチャートである。
【図３１】図３１は、「年齢」という項目について、それぞれのＰＭＭにおいて、値リストVLと同一のサイズを有する領域が作られ、それぞれに初期値「０」が与えられた状態を示す図である。
【図３２】図３２は、各ＰＭＭにおけるカウントアップの一例を示す図である。
【図３３】図３３は、本実施の形態にかかるソート処理の部分（累計数配列の生成）を概略的に示すフローチャートである。
【図３４】図３４は、本実施の形態にかかる累計数配列の例を示す図である。
【図３５】図３５は、本実施の形態にかかる、各ＰＭＭにて実行されるローカルなソート処理を示すフローチャートである。
【図３６】図３６は、各ＰＭＭにおいてローカルなソート処理が実行されている状態の例を示す図である。
【図３７】図３７は、各ＰＭＭにおいてローカルなソート処理が実行されている状態の例を示す図である。
【図３８】図３８は、本実施の形態にかかるソート処理におけるにおけるパケット伝送の例を示す図である。
【図３９】図３９は、本実施の形態にかかるソート処理における、パケット受信の際にＰＭＭにて実行される処理を示すフローチャートである。
【図４０】図４０は、本実施の形態にかかるソート処理により、ＰＭＭ−０にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図４１】図４１は、本実施の形態にかかるソート処理により、ＰＭＭ−１にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図４２】図４２は、本実施の形態にかかるソート処理により、ＰＭＭ−２にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図４３】図４３は、本実施の形態にかかるソート処理により、ＰＭＭ−３にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。
【図４４】図４４は、本実施の形態にかかるソート処理によるソート結果を示す図である。
【図４５】図４５は、本実施の形態にかかるソート処理により得られた、項目「年齢」でソートされた表形式データの例を示す図である。
【図４６】図４６は、本実施の形態においてローカルなソート処理に得られた配列を示す図である。
【図４７】図４７は、表形式データのソートを、アドレス情報の再配置にて表現した例を示す図である。
【図４８】図４８は、図４７に示す表形式データを、グローバル順序集合配列無しに、各ＰＭＭにて分掌把握した例を示す図である。
【図４９】図４９は、図４７に示す表形式データを、グローバル順序集合配列を利用して、各ＰＭＭにて分掌把握した例を示す図である。
【図５０】図５０は、本発明にかかる同一値消去の他の手法の例を示す図である。
【図５１】図５１は、図５０の手法を用いた場合の各ＰＭＭにおける順位の決定を示す図である。
【符号の説明】
【０１３８】
１２        ＰＭＭ
１４        第１のバス
１６        第２のバス
２０        制御回路
２２        バスＩ／Ｆ
２４        メモリ
２６        バンク
【図１】
0004620593.tif 000002
【図２】
0004620593.tif 000003
【図３】
0004620593.tif 000004
【図４】
0004620593.tif 000005
【図５】
0004620593.tif 000006
【図６】
0004620593.tif 000007
【図７】
0004620593.tif 000008
【図８】
0004620593.tif 000009
【図９】
0004620593.tif 000010
【図１０】
0004620593.tif 000011
【図１１】
0004620593.tif 000012
【図１２】
0004620593.tif 000013
【図１３】
0004620593.tif 000014
【図１４】
0004620593.tif 000015
【図１５】
0004620593.tif 000016
【図１６】
0004620593.tif 000017
【図１７】
0004620593.tif 000018
【図１８】
0004620593.tif 000019
【図１９】
0004620593.tif 000020
【図２０】
0004620593.tif 000021
【図２１】
0004620593.tif 000022
【図２２】
0004620593.tif 000023
【図２３】
0004620593.tif 000024
【図２４】
0004620593.tif 000025
【図２５】
0004620593.tif 000026
【図２６】
0004620593.tif 000027
【図２７】
0004620593.tif 000028
【図２８】
0004620593.tif 000029
【図２９】
0004620593.tif 000030
【図３０】
0004620593.tif 000031
【図３１】
0004620593.tif 000032
【図３２】
0004620593.tif 000033
【図３３】
0004620593.tif 000034
【図３４】
0004620593.tif 000035
【図３５】
0004620593.tif 000036
【図３６】
0004620593.tif 000037
【図３７】
0004620593.tif 000038
【図３８】
0004620593.tif 000039
【図３９】
0004620593.tif 000040
【図４０】
0004620593.tif 000041
【図４１】
0004620593.tif 000042
【図４２】
0004620593.tif 000043
【図４３】
0004620593.tif 000044
【図４４】
0004620593.tif 000045
【図４５】
0004620593.tif 000046
【図４６】
0004620593.tif 000047
【図４７】
0004620593.tif 000048
【図４８】
0004620593.tif 000049
【図４９】
0004620593.tif 000050
【図５０】
0004620593.tif 000051
【図５１】
0004620593.tif 000052