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


【手続補正００２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２２
【補正方法】変更
【補正の内容】
【請求項２２】前記情報処理ユニットが、
当該情報処理ユニット内でのソート順を反映するため、前記ローカル順序集合の値が入れ替えられた場合に、
前記グローバル順序集合配列において、他の順序集合配列中の値が示すレコードの、前記グローバルな表形式データにおけるソート順を示すように、その順位を示す値を再配置することを特徴とする請求項２１に記載の情報処理システム。




【国際調査報告】
2004092948.tif 000064
2004092948.tif 000065