(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の値の決定について、以下に詳細に説明する。以下、時計回りのバスを利用して、パケットを転送することにより、処理が進められる。図１０は、各段階において伝送されるパケットの状態を示す図、図１１は、各ＰＭＭにおいて、一時的に記憶されるリストを示す図である。【００６５】
図１０に示すように、本実施の形態においては、ステップ１において、各ＰＭＭは、自己のVLの値をパケット化して送信する。ここでは、ＰＭＭ−０〜ＰＭＭ−３において、それぞれ、［１８，２１，２４］、［１６，２８］、［１６，２０，３３］および［１８，２４］が時計回りに隣接するパケットに送信される。各ＰＭＭは、受理したパケット中の値と、自己のVLの値とを比較して、同一値を消去して、受理したパケットの値から同一値の消去された値からなるパケットを、さらに、時計回りに転送する。ステップ２は、最初の同一値消去が終了してパケットが送信された状態を示す。たとえば、ＰＭＭ−１において、受信したパケットの値［１８，２４］と自己のVLの値［１８，２１，２４］とが比較される。ここでは、受信したパケットの値全てが重複しているため、ＰＭＭ−１から送信されるパケットは［φ］となる。他のＰＭＭにおいても同様な処理が実行されて、パケットが送信される。このような処理を繰り返すことにより、全てのＰＭＭのVLの値が、重複値が消去されつつ、他の全てのＰＭＭに受信されることで、図１１に示すように、各ＰＭＭには、同一値の消去されたVLの値が蓄積される。この例では、４つのＰＭＭが存在するため、４回のデータ転送が行われれば（図１０のステップ１〜ステップ４）、各ＰＭＭのVLの値が他のＰＭＭに受信される。【００６６】
図１１を参照すると、各ＰＭＭにて蓄積されたVLの値が一致することが理解できるであろう。次いで、受信したそれぞれのVLの値と、自己のVLの値とを比較し、他のＰＭＭの順位を考慮した自己のVLの値の順位を決定する。それぞれのVLの値を考慮して得られた、自己のVLの値の順位の加算値の総和が、当該VLの値の、他の全てのＰＭＭを考慮したグローバルな順位となる。図１２において、重ね合わせの結果におけるGVNoの値が、各ＰＭＭのVLの対応する値の順位に相当する。【００６７】
[内部ジョイン処理]
次に、本発明にかかる情報処理装置によるジョイン処理について説明する。図１３Ａは、本実施の形態にかかるジョイン処理にて結合される一方の表の論理的な構成を示す図である。このような表について、本発明に従うと、単一のコンピュータでは、図１３Ｂに示すようにそれぞれの項目について、値リストVLおよび値リスト中の番号を示すためのポインタ配列VNoが設けられる。図１３Ｂに示す構成においては、順序集合配列OrdSetの値から、ポインタ配列VNoの値を特定し、さらに、VNoが指し示す位置の値を取り出すことにより、図１３Ａに示すような表を得ることができる。【００６８】
さらに、本実施の形態では、論理的には、図１４に示すようにＰＭＭ−０〜ＰＭＭ−４の４つのＰＭＭに表形式データの部分集合が分掌されると考える。実際には、各ＰＭＭ−０〜ＰＭＭ−４のメモリなどには、図１５に示すようなデータが記憶される。なお、図１５に示す種々の配列は、ＰＭＭのＲＡＭなどのメモリに記憶することに限定されず、アクセスをより高速にするためレジスタに記憶しておいても良い。【００６９】
図１６Ａは、ジョイン処理にて結合される他方の表の論理的な構成を示す図、図１６Ｂは、本発明にしたがって単一のコンピュータで、図１３Ａに示す表形式データを表わすために保持される種々の配列を示す図である。本実施の形態においては、ＰＭＭ−０〜ＰＭＭ−３において、論理的に、図１７に示すように表形式データの部分集合が分掌されると考える。ここでは、各ＰＭＭにおいては、図１８に示すような配列が設けられる。図１５および図１８に示す配列において、グローバル順序集合GOrdおよびグローバル値番号配列GVNoは、上述したコンパイル処理にて得ることができる。【００７０】
ジョインは、二つのテーブルの所定の項目の値を共通化して、結合された表形式データを作ることである。図１３Ａ、Ｂおよび図１６Ａ、Ｂに示す表において、テーブル１（図１３Ａ、Ｂ）の「年齢」という項目と、テーブル２（図１６Ａ、Ｂ）の「Ｅ年齢」という項目とを共通化することで、図１９の下側に示すようなジョインされたテーブル（ビュー）が取得される。なお、以下の処理において、最終的に出力される表（ビュー）のデフォルトのソート順が反映されるテーブルをマスタテーブルと称し、他方のテーブルをスレーブテーブルと称する。上述した例では、マスタテーブルの項目は、「年齢」であり、スレーブテーブルの項目が「Ｅ年齢」となる。また、本実施の形態では、デフォルトのソート順として、グローバル順序集合GOrd中の値の順序が利用される。無論、デフォルトのソート順として他の配列等の値の順序を利用可能であることはいうまでもない。【００７１】
以下、本実施の形態に示す複数のＰＭＭでデータ（配列）が分掌把握されている場合におけるジョイン処理についてより詳細に説明する。ここでは、図１３Ａ、Ｂおよび図１６Ａ、Ｂ示す表（実際には、図１５および図１８にて各ＰＭＭにて分掌される配列）に基づいて、項目「年齢（テーブル１）」および項目「Ｅ年齢（テーブル２）」をジョインする場合を考える。【００７２】
［グローバル値番号配列GVNo’の共通化処理］
図２０に示すフローチャート、および、図２１に示す各ＰＭＭにおける配列を示す図から理解できるように、まず、それぞれのＰＭＭは、当該ＰＭＭが分掌するテーブル１、テーブル２の部分集合を構成する配列中、項目「年齢（テーブル１）」、項目「Ｅ年齢（テーブル２）のそれぞれについて、グローバル値番号配列GVNo’を生成し、それぞれのGVNo’の値を初期化する（ステップ２００１）。図２１に示すように、初期的には、各ＰＭＭにおける項目「年齢」および項目「Ｅ年齢」におけるGVNo’には、昇順の値が初期値として与えられる。【００７３】
次いで、各ＰＭＭは、所定の方向にＰＭＭが持つVLの値を含むパケットを送出する（ステップ２００２および図２２）。図２２に示すように、本実施の形態では、反時計回りのバスにそれぞれパケットを送出している。各ＰＭＭにおいて、テーブル１に関するVLの値を含むパケットは時計回りのバスに送出され、テーブル２に関するVLの値を含むパケットは反時計回りのバスに送出される。無論、それぞれが逆の向きに送出されるように構成しても良い。【００７４】
また、ＰＭＭ−０およびＰＭＭ−３においては、実際にはパケットが送出されるのではなく、後述するように、次のステップで、送出にかかるVLの項目のテーブルではない、もう一方のテーブルに関して同一値を消去するために利用される。以下の説明から明らかなように、たとえば、ＰＭＭ−０のテーブル１に関するVLの値を含むパケットは、以下の経路で伝送される。【００７５】
ＰＭＭ−１（テーブル１に関する処理用）−（時計回りのバス）−ＰＭＭ−２（テーブル１に関する処理用）−（時計回りのバス）−ＰＭＭ−３（テーブル１に関する処理用）−（ＰＭＭ内のデータ転送）−ＰＭＭ−３（テーブル２に関する処理用）−（反時計回りのバス）−ＰＭＭ−２（テーブル２に関する処理用）−（反時計回りのバス）−ＰＭＭ−１（テーブル２に関する処理用）−ＰＭＭ−０（テーブル２に関する処理用）【００７６】
各ＰＭＭは、パケットを受信すると、当該パケットに含まれる他のＰＭＭのVLの値中、自己のVLと同一の値を消去し（ステップ２００３）、同一値の消去後の他のＰＭＭのVLの値と、自己のVLの値とを比較し、自己のVLの順位を決定して、当該順位を配列GVNo’に格納する（ステップ２００４）。図２３に示すように、たとえば、ＰＭＭ−０のテーブル１に関しては、同じＰＭＭ−０のテーブル２に関するVLの値を含むパケット［１８］が内部転送される。そこで、ＰＭＭ−０は、テーブル１に関するVLの値［１８，２１，２４］とを比較して、内部転送されたパケットから同一値「「１８」を削除する。また、同一値が削除された残りのパケットは［φ］となるため、自己のVLの順位に変更はなく、したがって、GVNoの値も変わらない。【００７７】
また、ＰＭＭ−１のテーブル１に関しては、ＰＭＭ−０のテーブル１に関するVLの値を含むパケット［１８，２１，２４］が受信される。ここでは同一値は存在しないため、同一値の削除は行われない。その一方、ＰＭＭ−１のVLの値を、上記受信したパケットに含まれる値とから、ＰＭＭ−１のVLの順位が決定され、GVNo’の値が更新される。他のＰＭＭにおいても同様の処理が実行される。【００７８】
各ＰＭＭにおいてVLの値の順位が決定され、GVNo’に値が格納されると、同一値が消去された後の値を含むパケットが、さらに、定められた方向に送出される（ステップ２００５）。【００７９】
受信したパケットにおける同一値の消去、パケットの値を参照した自己のVL中の値の順位の決定、および、同一値が消去された後のパケットの送出を繰り返すことにより、図２４に示すように、他のＰＭＭのVLの値を考慮したVLのグローバルな順位を示すグローバル値番号配列GVNo’を得ることができる。図２４が、各ＰＭＭにおいてグローバル値番号配列GVNo’が得られた状態を示す図である。【００８０】
ここでは、各ＰＭＭにて分掌されたテーブル１およびテーブル２に関するVLが、それぞれのＰＭＭを通り、テーブル１に関する順位決定およびテーブル２に関する順位決定に使われることで、テーブル１およびテーブル２の共通化を図ることができる。つまり、それぞれのテーブルにおけるGVNo’の値が同じであれば、それは同じVLの値を指すことになる。【００８１】
[スレーブテーブルのソート]
次に、テーブル２において、項目「Ｅ年齢」をキーとしたソート処理が実行される。ソートは、ソートすべき項目のグローバル値番号配列GVNo（本実施の形態ではGVNo’）を用いて、グローバル順序番号配列GOrdを再配置することに相当する。なお、例示したテーブル２はすでに、項目「Ｅ年齢」でソートされている状態であるため、ここでは、上記ソート処理は省略される。【００８２】
［スレーブテーブルのカウントアップ］
ソート処理が終了すると、図２５に示すように、各ＰＭＭは、スレーブテーブルに相当するテーブル２について、各ＰＭＭは、GVNo’の値ごとに、当該ＰＭＭが分掌する部分集合において、当該値が現れる個数（出現数）をカウントする（ステップ２５０１）。この出現数は、各ＰＭＭが分掌するレコード（順序集合配列OrdSetの要素）が、各ＰＭＭの値リストVL中の各値が、どれだけの数の、当該ＰＭＭが分掌するレコード（順序集合配列OrdSetの要素）により指し示されているかを示す。なお、GVNo’の値ごとに出現数を算出することと、GVNoの値ごとに出現数を算出することは等価である。【００８３】
より具体的には、図２６に示すように、各ＰＭＭは、テーブル２について、カウントアップ領域配列Countを作成し、配列中の各値に初期値「０」を格納しておく。【００８４】
各ＰＭＭは、順序集合配列OrdSetの値を取り出して、当該OrdSetの値が指し示すGVNoの値の位置のカウント値をカウントアップする。これを繰り返すことにより（図２７および図２８参照）、VLの値についての出現数を、カウント配列Countに得ることができる。【００８５】
その後、各ＰＭＭは、自己のGVNoと対応する出現数との組を含むパケットを、所定の方向のバスに送出する（ステップ２５０２）。図２９Ａに示すように、本実施の形態においては、時計方向のバスに上記組を含むパケットが送出されている。各ＰＭＭは、パケットを受理すると、パケット中の組のうち、GVNoの値を調べ、自己のグローバル値番号配列GVNoの値のうち、当該GVNoの値と同じものが存在する場合には、当該自己のGVNoの値と対応付けられたカウント配列中のカウント値に、受信したGVNoの値と組になった出現数を加算する（ステップ２５０３）。次いで、受信したパケットを、上記所定の方向のバスに送出する（ステップ２５０４）。ステップ２５０３〜２５０４を所定数繰り返すことにより、各ＰＭＭにおいて、カウント配列には、他のＰＭＭのGVNoおよびその値の出現数を考慮した値（グローバルな出現数）を配置することができる。本実施の形態では、図２９Ａ〜Ｄに示すように、ＰＭＭの数に対応する４回だけ、データの送出を繰り返すことで、カウント配列にグローバルな出現数を得ることが可能となる。無論、後述するように、各ＰＭＭにおいて、GVNoごとの出現数を取得できることから、ジョインされた表におけるグローバルな値リストの値の番号を示す配列GVNo’の出現数を把握できることも言うまでもない。【００８６】
なお、図２５の処理において、ＰＭＭは受信したパケットの内容を変更せずに所定の方向に送出している。したがって、ＰＭＭは、パケットを受信したら、これを自己のメモリやレジスタに一時的に記憶した後、パケットを所定の方向に送信し、その後に、出現数の加算の処理を実行しても良い。これにより、各ＰＭＭにおいて処理を並列化することが可能となる。【００８７】
［マスタテーブルに関する処理］
次いで、各ＰＭＭは、テーブル１について、スレーブテーブルであるテーブル２との整合を図るために、２つの配列（カウンタ配列Countおよびアグリゲーション配列Aggr）を構築する。この配列の意義については後述する。【００８８】
本実施の形態においては、テーブル２についての各ＰＭＭ中の配列の情報を、すべてのＰＭＭに送信し、それぞれのＰＭＭが、受信したテーブル２についての配列の情報に基づいて、カウンタ配列Countおよびアグリゲーション配列Aggrを生成する。図３１は、ＰＭＭ−０に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関するグローバル値番号配列GVNo’の値および対応するカウント配列の値の組(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す。ここで、ＰＭＭ−０のテーブル２に関する値の組から構成されるパケットは、バスを経ることなく、直接自身に伝達され得る。他のＰＭＭ−１〜３のテーブル２に関する値の組から構成されるパケットは、バスを経てＰＭＭ−０に受信される。【００８９】
ここで、それぞれのＰＭＭが別のバスを利用してＰＭＭ−０にデータを送信すれば、ＰＭＭ−０において並列的にカウント配列およびアグリゲーション配列の生成が可能となる。無論、同一或いは異なるバスを利用して、ＰＭＭ−１〜２が、順次ＰＭＭ−０にパケットを送信するように構成しても良い。【００９０】
図３０は、パケットを受信したＰＭＭにて実行される処理を示すフローチャートである。図３０に示すように、ＰＭＭは、パケットを受信すると（ステップ３００１）、当該パケット中のGVNo’の値を参照して、テーブル１に関するGVNo’に同じ値が存在するかを判断する（ステップ３００２）。ステップ３００２でイエス(Yes)と判断されると、ＰＭＭは、テーブル１のカウント配列Count中、対応する位置の値を、パケット中のCountの値だけカウントアップする（ステップ３００３）とともに、テーブル１のアグリゲーション配列Aggr中、上記位置の次の位置（つまり、配列の位置を示す番号が一つ増大したような位置）の値を、パケット中のCountの値だけカウントアップする（ステップ３００４）。【００９１】
その一方、ステップ３００２でノー(No)と判断されると、ＰＭＭは、テーブル１のGVNo’中、パケット中のGVNo’の値より大きくかつ最小の値を見出す（ステップ３００５）。次いで、ＰＭＭは、テーブル１のカウント配列Count中、見出された値に対応する位置の値を、パケット中のCountの値だけカウントアップする（ステップ３００６）。このような処理を、受理した全てのパケットの値について実行する（ステップ３００７、３００８参照）。【００９２】
図３１の例において、ＰＭＭ−０からテーブル２の(GVNo’の値，Countの値)として、（１，２）が伝達される。テーブル１に関して、GVNo’中には値「１」が存在する。したがって、対応する位置のカウント配列Count中の値が、パケット中のCountの値にしたがって、「０」から「２」にカウントアップされる。また、アグリゲーション配列Aggr中、次の位置の値が、パケット中のCountの値にしたがって、「０」から「２」にカウントアップされる。【００９３】
ＰＭＭ−１からテーブル２の（GVNo’の値，Countの値）として、（２，１）および（４，２）が与えられる。この場合には、テーブル１に関して、GVNo’の値「２」は存在しない。そこで、テーブル１に関するGVNo’の値中、「２」より大きい値のうち最小の値が「３」であること（および、その値の位置が「１」であること）がわかる。そこで、その位置のAggrの値が、パケット中のCountの値にしたがって、「０」から「１」にカウントアップされる。同様に、テーブル１に関して、GVNo’の値「４」は存在しない。そこで、テーブル１に関するGVNo’の値中、「４」より大きい値のうち最小の値が「５」であること（および、その値の位置が「２」であること）がわかる。そこで、その位置のAggrの値が、パケット中のCountの値にしたがって、「０」から「２」にカウントアップされる。【００９４】
他のＰＭＭ（ＰＭＭ−２およびＰＭＭ−３）から受信した（GVNo’の値，Countの値）についても同様の処理が実行され、それぞれ、カウント配列Countおよびアグリゲーション配列の値が算出される。【００９５】
それぞれのＰＭＭから受信したパケットに基づいてカウント配列Countおよびアグリゲーション配列Aggrを生成すると、これらを合成して最終的なカウント配列Countおよびアグリゲーション配列Aggrを生成する。ここでは、図３２に示すように、ＰＭＭは、生成されたそれぞれのカウント配列Countでカウントアップされた値の総和を算出し（ステップ３２０１）、最終的なカウント配列Countの値とする（ステップ３２０２および図３３Ａ参照）。同様に、ＰＭＭは、生成されたアグリゲーション配列Aggrでカウントアップされた値の総和を算出し（ステップ３２０３および図３３Ａ参照）、さらに、取得した値を先頭から累算する（ステップ３２０４）ことで、最終的なアグリゲーション配列Aggrの値とする（ステップ３２０５）。図３３Ｂは、ＰＭＭ−０において最終的に得られたカウント配列Countおよびアグリゲーション配列Aggrを示す図である。【００９６】
他のＰＭＭにおいても同様の処理が実行されて、カウント配列Countおよびアグリゲーション配列Aggrを取得することができる。図３４は、ＰＭＭ−１について、ＰＭＭ−０〜ＰＭＭ−２からの（GVNo’の値，Countの値）に基づいて、それぞれ、カウント配列Countおよびアグリゲーション配列が生成されることを説明する図、図３５は、最終的なカウント配列Countおよびアグリゲーション配列Aggrの生成を説明する図である。また、図３６、図３８は、ＰＭＭ−２、ＰＭＭ−３について、ＰＭＭ−０〜ＰＭＭ−２からの（GVNo’の値，Countの値）に基づいて、それぞれ、カウント配列Countおよびアグリゲーション配列が生成されることを、それぞれ説明する図、図３７、図３９は、ＰＭＭ−２およびＰＭＭ−３について、最終的なカウント配列Countおよびアグリゲーション配列Aggrの生成を、それぞれ説明する図である。【００９７】
カウンタ配列中の値は、各ＰＭＭにおいて、他のＰＭＭのスレーブテーブルの値を考慮した、値の出現数を表わす。また、アグリゲーション配列Aggrは、この時点において、スレーブテーブルを考慮した値の出現数に基づいて、GVNoの値を越えないGVNoの値の累計数を示す。  このようにして、各ＰＭＭにおいて、自己が掌握するマスタテーブルについて、全てのスレーブテーブルの出現数を含むカウント配列、および、GVNoの値の累計数を表わすアグリゲーション配列が生成されると、ＰＭＭ間で、以下に述べるデータを交換して、マスタテーブル全体のレコードの重複度が算出される。ここでは、以下に詳述するように、GOrdの値を超えない論理的なレコードの総数を表わすアグリゲーション配列SetAggrが生成される。アグリゲーション配列SetAggrにより、マスタテーブル全体の重複度を把握することが可能となる。図９３は、アグリゲーション配列SetAggrを生成するために各ＰＭＭにて実行される処理を示すフローチャートである。図９３に示すように、ＰＭＭは、メモリ中に、アグリゲーション配列SetAggrのための領域を生成し、その値を初期化する（ステップ９３０１）。アグリゲーション配列SetAggrのサイズは、配列GOrdやOrdSetと同じである。また、ＰＭＭは、配列SetAggr、GordおよびOrdSetの格納位置番号を示すポインタを初期化する。【００９８】
次いで、ＰＭＭは、格納位置番号が実施ステップ位置の配列OrdSetの値が示す配列VNoの値を特定し、その後、特定されたVNoの値が示すカウント配列Count中の値を特定する（ステップ９３０３）。ＰＭＭは、特定されたカウント配列Countの値を、アグリゲーション配列SetAggr中、格納位置番号が示す位置に格納する。図９４は、配列SetAggrに、配列Countの値が格納される様子を示す図である。図９４中、たとえば、ＰＭＭ−０に関して、格納位置番号「０」の配列OrdSetの値「０」が示す配列VNoの値は「０」である。当該配列VNoの値「０」が示す位置のカウント配列Countの値は「２」である。したがって、アグリゲーション配列SetAggr中、格納位置番号「０」の位置には「２」が格納される。他のＰＭＭ（ＰＭＭ−１〜３）においても同様の処理が実行される。これにより、アグリゲーション配列SetAggrには、図９５Ａに示すような値が格納される。さらに、ＰＭＭは、アグリゲーション配列SetAggrを累計数化する（ステップ９３０７）。累計数化において、ＰＭＭは、配列SetAggrの値を、その格納位置番号が「１」だけ大きい位置の値に加えるような処理を繰り返せばよい。これにより、図９５Ｂに示すようなアグリゲーション配列SetAggrを取得することができる。【００９９】
次いで、ＰＭＭ間で、配列GOrdの値および配列Countの対応する値の組を交換することで、最終的に、全てのＰＭＭを考慮したマスタテーブルのレコードの重複度を示す配列SetAggrを完成させる。【０１００】
図９６および図９７は、各ＰＭＭにおいて最終的なSetAggrを得るために実行される処理を示すフローチャートである。図９６に示すように、ＰＭＭは、配列Gordと配列Countの対応する値との組（Gordの値，Countの値）を含むパケットを、伝送路を介して所定の方向に送出する（ステップ９６０１）。図９８は、（Gordの値，Countの値）の生成を説明する図である。たとえば、ＰＭＭ−０において、配列Gordの最初の値「０」について、同じ格納位置番号が示す配列OrdSetの値「０」が示す配列VNoの値「０」特定される。さらに、配列VNoの値「０」が示す位置の、配列Countの値は「２」となる。したがって、まず、（０，２）というパケットが作られる。同様に、配列Gordの次の値「１」について、（１，０）、配列Gordのさらに次の値「２」について、（２，０）というパケットが作られる。したがって、ＰＭＭ−０からは、所定の方向に、（０，２）、（１，０）、（２，０）を含むパケットが送出される。他のＰＭＭについても同様の処理により、パケットが生成されることが理解できるであろう。【０１０１】
本実施の形態においては、図１に示すように、ＰＭＭがリング状に第１のバス、第２のバスで接続されている。したがって、定められた何れかのバスにデータを送出すればよい。なお、後述するが、複数のバスを利用してＰＭＭ間のデータ伝送が可能であれば、処理を並列化することが可能である。たとえば、本実施の形態では、第１のバス１４を利用して、図９９および図１００に示すように、パケットが伝達される。図９９に示すように、最初のステップでは、ＰＭＭ−０は、ＰＭＭ−１にパケットを送出し、また、ＰＭＭ−１、２、３は、それぞれ、ＰＭＭ−２、３、０にパケットを送出する。【０１０２】
ＰＭＭは他のＰＭＭからのパケットを受信すると（ステップ９６０２）、ＰＭＭは、当該他のＰＭＭから受信したパケット中のGOrdの値と、自己のＰＭＭの配列GOrdの値とを比較する（ステップ９６０３）。【０１０３】
ＰＭＭは、パケット中のGordの値に基づき、自己のＰＭＭの配列GOrdについて、他のＰＭＭのGOrdの値（つまりパケット中のGOrdの値）より大きな値の範囲を特定する（ステップ９６０４）。次いで、ＰＭＭは、配列SetAggr中、ステップ９６０４で特定された範囲の値に加算すべき値として、パケット中のGOrdと組になったCountの値を、記憶装置に一時的に記憶する（ステップ９６０５）。なお、他のＰＭＭのGOrdの値が、自己のＰＭＭの配列GOrdの全ての値よりも大きければ、ステップ９６０４の値の範囲は存在せず（つまり、範囲は「φ」となり）、加算すべき値も存在しない（或いは、「０」となる）。ステップ９６０３ないしステップ９６０５の処理は、受信したパケット中の全ての（GOrdの値，Countの値）の組に対して実行される（ステップ９６０６およびステップ９６０７参照）。【０１０４】
その後、ＰＭＭは、全ての（GOrdの値，Countの値）の組について一時的に記憶された、配列SetAggrのそれぞれの値に加算すべき値を累算して、累算値を記憶装置に一時的に記憶する（ステップ９６０８）。この累算値は、ある他のＰＭＭについて、配列SetAggrのそれぞれの値に対して加算すべき値を表わす。【０１０５】
その後、受信したパケットは、伝送路を介して所定の方向に送出される（ステップ９６０９）。なお、この受信したパケットの送出は、この段階に限定されず、パケット中のデータを一時的に記憶装置中に記憶してしまえば、ステップ９６０３〜ステップ９６０７の処理に先立って送信してしまっても良い。【０１０６】
このような処理は、全ての他のＰＭＭに関するパケットに関して実行される（図９７のステップ９７０１、９７０２参照）。ステップ９７０１においてノー(No)と判断された場合には、ステップ９６０２に戻り、他のＰＭＭのパケットを受信して、当該パケット中の（GOrdの値，Countの値）の組について処理を繰り返す。【０１０７】
全ての他のＰＭＭについて処理が終了すると、ＰＭＭは、配列SetAggrのそれぞれの値について、一時的に記憶された累算値を加算して、全ての他のＰＭＭについて、配列SetAggrのそれぞれの値に対して加算すべき値の合成値を算出する（ステップ９７０３）。次いで、ＰＭＭは、算出されたそれぞれの合成値を、配列SetAggrのそれぞれの値に加算して、最終的な配列SetAggrを得る（ステップ９７０４）。【０１０８】
再度、図９９を参照すると、パケット送出の最初のステップ（図９９のステップ１）においては、ＰＭＭ−０においては、他のＰＭＭとしてＰＭＭ−３に関するパケットを受信して、受信したパケットについて処理が実行される。また、ＰＭＭ−１、２、３においては、それぞれ、他のＰＭＭとしてＰＭＭ−０、１、２に関するパケットを受信して、受信したパケットについて処理が実行される。【０１０９】
次のパケット送出ステップ（図９９のステップ２）では、ＰＭＭ−０、１、２、３において、それぞれ、ＰＭＭ−２、３、０、１に関するパケットを受信して、受信したパケットについて処理が実行され、さらに次のパケット送出ステップ（図９９のステップ３）では、ＰＭＭ−０、１、２、３において、それぞれ、ＰＭＭ−１、２、３、０に関するパケットを受信して、受信したパケットについて処理が実行される。このように、ＰＭＭにより受信されたパケットがさらに所定の方向に送出されることで、あるＰＭＭには、他の全てのＰＭＭに関する（Gordの値，Countの値）を受信することが可能となる。図１００は、上記図９９に示すステップ１〜ステップ３において、それぞれのＰＭＭが既に受信したパケットを示す図である。【０１１０】
図１０１〜図１０４は、それぞれ、ＰＭＭ−０、１、２、３において、パケットの受信に応答して処理が実行される状態を示す図である。たとえば、ＰＭＭ−０において、ＰＭＭ−３に関するパケットを受信した場合（図９９、図１００におけるステップ１に相当）、パケット中のGOrdは、「８」および「９」である。このため、何れのGOrdの値についても、自己のＰＭＭの配列GOrdについて、他のＰＭＭのGOrdの値よりも大きな値の範囲は存在しない、つまり、「φ」である。そこで、配列SetAggrに加算すべき値も存在しない（或いは「０」と考えても良い）。他のＰＭＭに関するパケットについても、同様である。したがって、図９６および図９７の処理を施した場合に、配列SetAggrのそれぞれの値に加算すべき値（ステップ９７０３の合成値）は「０」であるため、配列SetAggrの値は、処理前と変化なく、［０，２，２］となる（図１０１）。【０１１１】
図１０２を参照すると、ＰＭＭ−１は、ＰＭＭ−０に関するパケットを受信した場合、パケット中のGOrdの値は、「０」、「１」、「２」である。たとえば、ＰＭＭ−０に関するGOrdの値「０」については、自己のＰＭＭの配列Gordの先頭の値「３」であるため、先頭以降のすべての要素が値の範囲となる。そこで、当該ＰＭＭ−０に関するGOrdの値「０」については、組となったCountの値「２」が、配列SetAggrの全ての値に対する加算すべき値となる。【０１１２】
ＰＭＭ−０に関するGOrdの値「１」、「２」についても、自己のＰＭＭの配列Gordの先頭の値「３」であるため、先頭以降のすべての要素が値の範囲となる。そこで、ＰＭＭ−０に関するGOrdの値「１」、「２」についても、組となったCountの値が、配列SetAggrの全ての値に対する加算すべき値となる。ただし、この場合には、組となったCountの値はそれぞれ「０」であるため、配列SetAggrのそれぞれの値に対する加算すべき値は「０」となる。【０１１３】
また、ＰＭＭ−３およびＰＭＭ−２に関するパケットを受信して図９６および図９７の処理を実行した結果、配列SetAggrに加算すべき値はすべて「０」となる。【０１１４】
したがって、配列SetAggrの先頭の値に加算すべき合成値が「２」、次の値に加算すべき合成値も「２」となる。その結果、配列SetAggrの値は、［２，２］となる。【０１１５】
ＰＭＭ−２およびＰＭＭ−３においても、図１０３、図１０４にそれぞれ示すように、同様に処理が実行され、配列SetAggrの値のそれぞれに加算すべき合成値が算出されて、最終的な配列SetAggrの値を取得することが可能であることが理解できるであろう。【０１１６】
図４０は、上述した処理を実行した後のＰＭＭ−０〜ＰＭＭ−３におけるテーブル１に関するデータを示す図である。これを、論理的な表形式に直すと、図４１に示すようなものとなる。また、図４２は、上述した処理を事項した後のＰＭＭ−０〜ＰＭＭ−３におけるテーブル２に関するデータを示す図である。これを論理的な表形式に直すと、図４３に示すようになる。【０１１７】
［配列CountおよびAggr生成のための他の手法］
上述した例では、各ＰＭＭにおいて、スレーブテーブルをカウントアップした後に（図２６〜図２８参照）、自己のGVNoと対応する出現数との組を含むパケットを、所定の方向のバスに送出している（図２５のステップ２５０２および図２９Ａ参照）。ここでは、受信したパケット中に、自己のGVNoの値と同じものが存在する場合には、当該自己のGVNoの値と対応付けられたカウント配列中のカウント値に、受信したGVNoの値と組になった出現数を加算している。しかしながら、この処理を省略して、自己のGVNo’の値と、各ＰＭＭにおいてスレーブテーブルに関して生成された配列Countの対応する値（出現数）との組を含むパケットを、他のＰＭＭに、それぞれ送信し、他のＰＭＭにおいて、マスタテーブルに関する配列CountおよびAggrを生成しても良い。この処理によれば、図２９Ａ〜Ｄに示すようなパケットの転送ステップを省略することができる。【０１１８】
図８５は、ＰＭＭ−０に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図、図８６は、ＰＭＭ−０における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図である。これらは、ぞれぞれ、図３１および図３３Ａ、Ｂに、ほぼ対応している。ここで留意すべきは、図３１の例と比較して、ＰＭＭ１から送信されるパケットにおいて、GVNo’の値に対応する出現数が異なることである。これは、本手法では、図２９Ａ〜Ｄに示したような、同じGVNo’の値を有する出現数は、何れかのＰＭＭにまとめるような処理が省略されているためである。また、同じ理由で、ＰＭＭ−２について、GVNo’中の「４」という値に関して、この値と対応する出現数との組がパケットとして送信されている。【０１１９】
図８７は、ＰＭＭ−１に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図、図８８は、ＰＭＭ−１における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図であり、それぞれ、図３４、３５にほぼ対応する。【０１２０】
図８９は、ＰＭＭ−２に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図、図９０は、ＰＭＭ−２における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図であり、これらは、それぞれ、図３６および図３７にほぼ対応する。【０１２１】
また、図９１は、ＰＭＭ−３に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図、図９２は、ＰＭＭ−３における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図であり、これらは、それぞれ、図３８および図３９に対応する。【０１２２】
この手法を利用しても、図８６、８８、９０および９２に示すように、マスタテーブルに関して、配列CountおよびAggrを生成することができる。
［配列の値の読み出し］
図４０および図４２に示す形式のデータからのデータの読み出しについて以下に説明する。図４４は、読み出しの際にＰＭＭにて実行される処理を示すフローチャートである。【０１２３】
ＰＭＭは、読み出し要求レコード番号RNoを「０」に初期化する（ステップ４４００）。次いで、当該RNo以下の最大数のSetAggrの値（以下、値「Ａ」とも称する。）が存在するか否かを判断する（ステップ４４０１）。ステップ４４０１でノー(No)と判断されれば、RNoをインクリメントする（ステップ４４０２）。【０１２４】
ステップ４４０１でイエス(Yes)と判断された場合には、ＰＭＭは、当該SetAggrに対応するOrdSetの値、および、OrdSetの値に特定される位置のVNoの値から、VNoの値の示す位置のCountの値（以下、値「Ｃ」とも称する。）を特定する（ステップ４４０３）。このCountの値により、表にした場合に、そのレコードが「Ｃ」個存在することがわかる。【０１２５】
次いで、ＰＭＭは、RNo＜「Ａ＋Ｃ」であるかを判断する（ステップ４４０４）。ステップ４４０４でノー(No)である場合には、ステップ４４０２に進む。その一方、ステップ４４０４でイエス(Yes)と判断された場合には、ＰＭＭは、テーブル２を参照するためのベースとして、Countの値と対応する位置のAggrの値を参照する（ステップ４４０５）。このAggrの値を以下、「Base」とも称する。値「Base」は、テーブル２のGordの値の基礎となる。【０１２６】
以下、ＰＭＭは、テーブル２の値を特定するための処理を進める。まず、テーブル２に関するオフセット値Offsetが、「RNo−Ａ」により算出される（ステップ４４０６）。次いで、テーブル２のGordの値が、「Base＋Offset」に一致するものが特定され（ステップ４４０７）、その値と同じ位置のOrdSetの値が指し示す、テーブル２のVNoの値が特定される（ステップ４４０８）。【０１２７】
ステップ４４０８に到達した場合には、ステップ４４０３において、テーブル１のOrdSetの値からVNoが特定され得るため、テーブル１のVLの値を取り出すことができる。VLの値は、共通化された項目に関する値のみならず、他の項目の値についても同様に特定され得る。また、ステップ４４０７およびステップ４４０８において、テーブル２のOrdSetの値から、テーブル２のVNoの値が特定される。したがって、テーブル２のVLの値も同様に取り出すことができる。取り出された値は、テーブル２の値として表中に配置され得る（ステップ４４０９）。スレーブテーブルであるテーブル２についても、VLの値は、共通化された項目に関する値のみならず、他の項目の値についても同様に特定され得る。【０１２８】
図４５〜図５０は、ＰＭＭ−０〜ＰＭＭ−３における読み出しの状況を示す図である。また、図５１Ａ〜Ｆは、それぞれ、図４５〜図５０の処理が終了した時点で読み出されたジョインテーブルを示す図である。【０１２９】
各段階で読み出されたテーブルを合成すると、最終的には、図５２に示すような結合された表（ビュー）を取得することが可能となる。【０１３０】
［多項目ジョイン］
本発明では、単一の項目をキー項目としてジョインするだけでなく、複数の項目をキー項目としてジョインを実現することもできる。複数の項目をキー項目としてジョインすることを、ここでは「多項目ジョイン」と称する。たとえば、図１３Ａ〜図１５に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）、並びに、図５３〜図５５に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）の下で、項目「性別」と「Ｅ性別」とをジョインするとともに、項目「年齢」と「Ｅ年齢」とをジョインして、ジョインされたテーブルを作る場合を考える。図５６は、ジョインの結果生成される表（ビュー）を示す。なお、この例では、項目「性別」および「年齢」のソート順が保持されるため、これら項目を含むテーブル（以下、「テーブル１」とも称する。）が、マスタテーブルとなり、項目「Ｅ年齢」および「Ｅ性別」を含むテーブル（以下、「テーブル２」とも称する）が、スレーブテーブルとなる。【０１３１】
多項目ジョインにおいては、ジョインすべきそれぞれの項目について、共通化されたグローバル値番号配列GVNo’が生成される。より詳細には、ＰＭＭにて図２０〜図２４を参照して説明した処理を実行すれば良い。上記例では、項目「性別」と「Ｅ性別」とにおいて、GVNo’を共通化した結果を図５７に示し、項目「年齢」と「Ｅ年齢」とにおいて、GVNo’を共通化した結果を図５８に示す。また、図５９は、それぞれのGVNo’を共通化した後のマスタテーブルの状態を示し、図６０は、それぞれのGVNo’を共通化した後のスレーブテーブルの状態を示す。【０１３２】
次いで、マスタテーブルに関して、項目「性別」および「年齢」の共通化された値番号配列GVNo’が結合され、項目「性別×年齢」に関するGVNoが生成される。図６１は、結合された項目に関するGVNoの生成を概略的に示すフローチャートである。図６１に示すように、まず、各ＰＭＭは、結合される項目の一方について、順序集合OrdSetの値ごとに、対応するGVNo’の値を格納した中間リストを生成する（ステップ６１０１）。図６２において、各ＰＭＭの順序集合配列OrdSetから値が取り出され、その値が示す、項目「性別」に関するポインタ配列VNoの値を経て、当該VNoの値が示す位置のGVNo’の値を特定することができる。ＰＭＭは、特定されたGVNo’の値を、項目「性別」に関する中間体リスト中、OrdSetの値の位置に対応する位置に配置する（図６２の矢印参照）。このような処理をOrdSetの値のそれぞれについて実行することにより、項目「性別」に関する中間体リストを完成させることができる。【０１３３】
同様に、ＰＭＭは、結合される項目の他方についても、順序集合OrdSetの値ごとに、対応するGVNo’の値を格納した中間リストを生成する（ステップ６１０２）。図６３は、上述した例で、項目「年齢」に関する中間リストの生成を説明する図である。【０１３４】
その後、各ＰＭＭにおいて、結合された項目の値リストVLが生成される（ステップ６１０３）。この結合された項目の値リストＶＬにおいては、項目の一方の一定の順序（たとえば昇順）になるように、項目の一方の中間リストの値および他方の中間リストの値の組が並べ替えられる。図６４において，右側の項目「性格×年齢」のＶＬが、結合された項目の値リストに相当する。ここでは、項目「性格」が昇順になるように、「性格」の値および「年齢」の値の組が並べ替えられている。無論、これに応じて、ポインタ配列VNoの順序も並べ替えられる。【０１３５】
このような処理の後、ＰＭＭ間のコンパイル処理により、結合された項目に関するグローバル値番号配列GVNoが生成される（ステップ６１０４）。ＰＭＭ間のコンパイル処理は、図８〜図１２を参照して説明したように実行すれば良い。図６５は、上記例にて生成されたグローバル値番号配列GVNoを示す図である。【０１３６】
ＰＭＭは、スレーブテーブルに関しても、結合された項目（上記例では、「性別」および「年齢」）の共通化された値番号配列GVNo’を結合し、結合された項目（「性別×年齢」）に関するGVNoを生成する。図６６は、上記例において、スレーブテーブルの項目「Ｅ性別」についての中間リストの生成を説明する図、図６７は、スレーブテーブルの項目「Ｅ年齢」についての中間リストの生成を説明する図、図６８は、結合された項目「Ｅ性別」×「Ｅ年齢」のＰＭＭ内コンパイルによる、結合された項目の値リストの生成を説明する図、図６９は、ＰＭＭ間のコンパイルによる、結合された項目のグローバル値番号配列GVNoの生成を説明する図である。【０１３７】
これ以後の処理は、先に説明した単一の項目のジョインと同様である。ここでは、結合された項目について、スレーブテーブルのソート、スレーブテーブルのカウントアップ、マスタテーブルに関する処理、配列の値の読み出しを実行すれば良い。【０１３８】
［外部ジョイン］
次に、外部ジョインについて説明する。外部ジョインにおいては、マッチングキーが相手方のテーブル（スレーブテーブル）に存在しない場合には、そこをブランクのレコードとして残すように処理される。いままで説明したジョイン（これを、「内部ジョイン」とも称する。）においては、マッチングキーが相手側に存在しない場合、そのレコードは削除されている。その一方、外部ジョインでは、ブランクレコードを挿入することで、自分のレコードを残しておくことができる。【０１３９】
図１３Ａ〜図１５に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）の下で、外部ジョインを実行すると、図７０の下欄に示すような表（ビュー）が生成される。図７０の下欄から、スレーブテーブル（テーブル２）にマッチングキーが存在しない場合には、ジョインされたテーブルにおいてブランクとなっていることが理解できるであろう。【０１４０】
外部ジョインにおいては、マスタテーブル（テーブル１）について、スレーブテーブルであるテーブル２との整合を図るためのカウント配列Countおよびアグリゲーション配列Aggrの生成が、内部ジョインと若干相違する。【０１４１】
外部ジョインにおいては、各ＰＭＭにおいて、カウント配列Countおよびアグリゲーション配列Aggrが取得されたときに（図３３Ａ、Ｂ、３５、３７および３９参照）、Countの値が「０」である場合、当該値を「１」に変更するとともに、アグリゲーション配列Aggr中、対応する位置の値を「−１」にする。これは、マスタテーブルにおいて、マッチングキーが存在しない場合でも、ブランクレコードが表示できるように、表示領域を確保するための処理である。ここで、Aggrの値を「−１」とするのは、ありえない値を与えておくことで、ビューの作成時にブランクの領域を作るべきことを示すためである。【０１４２】
図７１（特に、右欄）を参照すると、図３３Ａ、Ｂ、３５，３７および３９に示す例において、外部ジョインのために、Countの値が「０」である要素について値が「１」に変更され、かつ、対応するAggrの値が「−１」にされていることが理解できるであろう。【０１４３】
図７２は、テーブル１（マスタテーブル）において、カウント配列Countおよびアグリゲーション配列Aggrなど必要な配列が生成された状態を示す図、図７３は、テーブル２（スレーブテーブル）において、カウント配列Countおよびアグリゲーション配列Aggrなど必要な配列が生成された状態を示す図である。【０１４４】
このように必要な配列が生成されると、各ＰＭＭにおいて配列中の値が読み出される。基本的には、内部ジョインの場合と同様に、図４４に示す処理に基づいて値が読み出されるが、Aggrの値が「−１」の場合に異なる手順がある。図７４に示すように、ステップ４４０５が終了した状態で、ＰＭＭは、値「base」が「−１」であるか否かを判断する（ステップ７４０１）。ステップ７４０１でノー(No)と判断されれば、ステップ４４０６に進む。その一方、ステップ７４０１でイエス(Yes)と判断されると、ＰＭＭは、値の無い状態を示す情報たとえば、記号「−」を、テーブル２の表中の対応する位置に配置し（ステップ７４０２）、ステップ４４０２に戻る。【０１４５】
図７５〜図７７は、ＰＭＭ−０〜ＰＭＭ−３における読み出しの状況を示す図である。図７５、図７６の例は、内部ジョインの例と同様である（図４５，４６参照）。これに対して、図７７の例では、ＰＭＭ−０において、「RNo（＝２）」以下のSetAggrの値（＝２）が存在し（ステップ４４０１参照）、かつ、「RNo（＝２）＜Ａ＋Ｃ（＝２＋１）」が成立する（ステップ４４０４でイエス(Yes)）。しかしながら、Aggrの値（Base）が「−１」であるため、テーブル２の値がない状態となる。したがって、テーブル２については、図７８の「ＪＯＩＮテーブルのレコード＝２」に示されるものとなる。図７８は、ジョインテーブルの各レコードにおけるテーブル１の値およびテーブル２の値を示す図である。図７８に示すように、テーブル２について値が無い状態のものには、便宜上「−（マイナス）」が値として与えられている。これを組み合わせることで、図７０の下欄に示すような表（ビュー）を得ることが可能となる。【０１４６】
[検索等]
本実施の形態においては、ジョインテーブルの検索やソートも可能である。検索においては、検索のキー項目により、GOrdおよびOrdSetを絞り込み、絞り込まれた状態でジョインを実行すれば良い。図１３Ａ〜図１５に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）および図１６Ａ〜図１８に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）を考える。このような例では、キー項目（たとえば性別）で検索して、項目「性別」のGVNoの値が、「女性」に対応する「１」であるような、GOrdの値およびOrdSetの値の組のみと取り出しておく。このような状態で、たとえば、項目「年齢
および「Ｅ年齢」について、内部ジョインに関する処理を実行することにより、図８０の左欄に示すような値の組を取得でき、これに基づいて、図８０の右欄に示すような表（ビュー）を得ることができる。【０１４７】
また、ジョインされたテーブルのソートも実現可能である。ソートにおいては、マスタテーブルにおいて、キーとなる項目で、GVNoにしたがって、GOrdの値を再配置しておけばよい。Gordの値の順序の入れ替えにしたがって対応するOrdSetの値も入れ替えられる。図１３Ａ〜図１５に示すような表形式データ（および各ＰＭにおけるデータ分掌）および図１６Ａ〜図１８に示すような表形式データ（および各ＰＭＭにおけるデータの分掌）を考える。このような例において、年齢でソートした上で、項目「年齢」および「Ｅ年齢」で内部ジョインを実行する場合について簡単に説明する。【０１４８】
まず、マスタテーブルについて項目「年齢」をキーにして、ソートを実行する。図８１は、ソート前のGOrdおよびOrdSet、並びに、ソート後のGOrdおよびOrdSetを説明する図である。ＰＭＭは、ソート後のGordおよびOrdSetを利用して、スレーブテーブル（テーブル２）についてCountを生成し、かつ、マスタテーブル（テーブル１）について必要な配列（Count、Aggr、SetAggr）を生成する。図８２は、マスタテーブルに関する種々の配列を示す図、図８３はスレーブテーブルに関する種々の配列を示す図である。なお、これらの図において、項目「年齢」、「Ｅ年齢」以外の項目に関する配列は省略されている。【０１４９】
図８２および図８３に示す配列から、先に説明したような手順で読み出しをすることにより、図８４の左欄に示すような値が取り出され、これに基づいて、図８４の右欄に示すような表（ビュー）を得ることができる。【０１５０】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。【０１５１】
前記実施の形態においては、ＰＭＭを、一方が時計回りにパケットを伝送する第１のバス（第１の伝送路）、他方が反時計回りにパケットを伝送する第２のバス（第２の伝送路）にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。【０１５２】
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するＰＭＭを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、ＰＭＭの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序集合配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。【０１５３】
さらに、前記実施の形態においては、ＰＭＭがデータをパケット化して伝送路に送信しているがこれに限定されるものではなく、パケット以外の形態でデータを送信しても良いことは言うまでもない。【０１５４】
また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。【０１５５】
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の３つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、３つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関するジョインを実現することができる。【０１５６】
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。【０１５７】
さらに、前記実施の形態においては、実際の項目値が所定の順序でソートされた値リストVLと、順序集合の配列OrdSet中の要素のそれぞれに対応して、当該レコード番号が指し示す値リスト中の番号が格納された、値リストへのポインタ配列VNoとにより、表形式データを表している。しかしながら、これに限定されるものではなく、実際の項目値が所定の順序でソートされた記憶された値のリストを用いた場合でも、本発明を適用できる。この場合、たとえば、値の共通化においては、ＰＭＭが、他のＰＭＭの、マスタテーブルの項目の値のリストおよびスレーブテーブルの項目の値のリストを参照して、他のすべてのＰＭＭのマスタテーブルおよびスレーブテーブルの値のリストに含まれる値を考慮した、共通化された値のリストを生成する。
【図面の簡単な説明】
【０１５８】
【図１】図１は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。
【図２】図２は、本発明の実施の形態にかかるＰＭＭの構造の一例を示す図である。
【図３】図３は、表形式データの一例を示す図である。
【図４】図４は、本実施の形態において、表形式データを保持する構造の原理を説明するための図である。
【図５】図５は、本実施の形態において、各ＰＭＭにて分掌把握される配列およびその値を説明する図である。
【図６】図６は、初期的にＰＭＭ−０〜４の各々にてそれぞれ分掌される表形式データの例を示す図である。
【図７】図７は、初期的にＰＭＭ−０〜４の各々にてそれぞれ分掌される表形式データの例を示す図である。
【図８】図８は、本実施の形態にかかるコンパイル処理を概略的に示すフローチャートである
【図９】図９は、図６〜図７に示す例でのグローバル順序集合配列GOrdへの値の配置を示す図である。
【図１０】図１０は、本実施の形態において各段階において伝送されるパケットの状態を示す図である。
【図１１】図１１は、本実施の形態にかかる各ＰＭＭにおいて、一時的に記憶されるリストを示す図である。
【図１２】図１２は、本実施の形態において、一時的に記憶された配列の値を重ね合わせてGVNo’の値を取得する処理を説明する図である。
【図１３】図１３Ａは、ジョイン処理にて結合される一方の表の論理的な構成を示す図、図１３Ｂは、本発明にしたがって単一のコンピュータで図１３Ａの表を表わすために必要な種々の配列を示す図である。
【図１４】図１４は、各ＰＭＭにて分掌される論理的な表を示す図である。
【図１５】図１５は、各ＰＭＭにて分掌される実際の配列を示す図である。
【図１６】図１６Ａは、ジョイン処理にて結合される他方の表の論理的な構成を示す図、図１６Ｂは、本発明にしたがって単一のコンピュータで図１６Ａの表を表わすために必要な種々の配列を示す図である。
【図１７】図１７は、各ＰＭＭにて分掌される論理的な表を示す図である。
【図１８】図１８は、各ＰＭＭにて分掌される実際の配列を示す図である。
【図１９】図１９は、二つの表形式データをジョインして、ジョインされたテーブル（ビュー）が得られた状態を示す図である。
【図２０】図２０は、グローバル値番号配列GVNo’の共通化処理を示すフローチャートである。
【図２１】図２１は、グローバル値番号配列GVNo’の共通化処理を説明する図である。
【図２２】図２２は、グローバル値番号配列GVNo’の共通化処理を説明する図である。
【図２３】図２３は、グローバル値番号配列GVNo’の共通化処理を説明する図である。
【図２４】図２４は、グローバル値番号配列GVNo’の共通化処理を説明する図である。
【図２５】図２５は、本実施の形態にかかるスレーブテーブルのカウントアップ処理を示すフローチャートである。
【図２６】図２６は、スレーブテーブルのカウントアップ処理を説明する図である。
【図２７】図２７は、スレーブテーブルのカウントアップ処理を説明する図である。
【図２８】図２８は、スレーブテーブルのカウントアップ処理を説明する図である。
【図２９】図２９Ａ〜Ｄは、それぞれ、グローバルなカウント値を取得するためのパケット送信を説明する図である。
【図３０】図３０は、パケットを受信したＰＭＭにて実行される処理を示すフローチャートである。
【図３１】図３１は、ＰＭＭ−０に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図３２】図３２は、各ＰＭＭに関するカウント配列Countおよびアグリゲーション配列Aggrの値を合成して、最終的なカウント配列Countおよびアグリゲーション配列Aggrを取得する処理を示すフローチャートである。
【図３３】図３３Ａ、Ｂは、それぞれ、ＰＭＭ−０における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図である。
【図３４】図３４は、ＰＭＭ−１に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図３５】図３５は、ＰＭＭ−１における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図である。
【図３６】図３６は、ＰＭＭ−２に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図３７】図３７は、ＰＭＭ−２における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図である。
【図３８】図３８は、ＰＭＭ−３に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図３９】図３９は、ＰＭＭ−３における最終的なカウント配列Countおよびアグリゲーション配列Aggrの取得を説明する図である。
【図４０】図４０は、ジョイン処理の結果得られたマスタテーブルに関する配列を示す図である。
【図４１】図４１は、図４０に示す配列を論理的な表形式に示す図である。
【図４２】図４２は、ジョイン処理の結果得られたスレーブテーブルに関する配列を示す図である。
【図４３】図４３は、図４０に示す配列を論理的な表形式に示す図である。
【図４４】図４４は、ジョインされた表の読み出し処理を示すフローチャートである。
【図４５】図４５は、表の読み出し処理を説明する図である。
【図４６】図４６は、表の読み出し処理を説明する図である。
【図４７】図４７は、表の読み出し処理を説明する図である。
【図４８】図４８は、表の読み出し処理を説明する図である。
【図４９】図４９は、表の読み出し処理を説明する図である。
【図５０】図５０は、表の読み出し処理を説明する図である。
【図５１】図５１Ａ〜Ｆは、それぞれ、図４５〜図５０の処理で得られたジョインされた表を示す図である。
【図５２】図５２は最終的に得られる表を示す図である。
【図５３】図５３は、は、ジョイン処理にて結合される一方の表の論理的な構成を示す図、および、本発明にしたがって単一のコンピュータで表を表わすために必要な種々の配列を示す図である。
【図５４】図５４は、各ＰＭＭにて分掌される論理的な表を示す図である。
【図５５】図５５は、各ＰＭＭにて分掌される実際の配列を示す図である。
【図５６】図５６は、マスタテーブル（テーブル１）、スレーブテーブル（テーブル２）、および、ジョインにより得られるテーブルを示す図である。
【図５７】図５７は、項目「性別」と「Ｅ性別」とにおいて、GVNo’を共通化した結果を示す図である。
【図５８】図５８は、項目「年齢」と「Ｅ年齢」とにおいて、GVNo’を共通化した結果を示す図である。
【図５９】図５９は、GVNo’を共通化した後のマスタテーブルの状態を示す図である。
【図６０】図６０は、GVNo’を共通化した後のスレーブテーブルの状態を示す図である。
【図６１】図６１は、結合された項目に関するGVNoの生成を概略的に示すフローチャートである。
【図６２】図６２は、マスタテーブルにおける一方の項目の中間リストの生成を説明する図である。
【図６３】図６３は、マスタテーブルにおける他方の項目の中間リストの生成を説明する図である。
【図６４】図６４は、マスタテーブルにおける結合された項目に関する値リストVLを説明する図である。
【図６５】図６５は、結合された項目について生成されたグローバル値番号配列GVNoを示す図である。
【図６６】図６６は、スレーブテーブルの項目「Ｅ性別」についての中間リストの生成を説明する図である。
【図６７】図６７は、スレーブテーブルの項目「Ｅ年齢」についての中間リストの生成を説明する図である。
【図６８】図６８は、結合された項目「Ｅ性別」×「Ｅ年齢」のＰＭＭ内コンパイルによる、結合された項目の値リストの生成を説明する図である。
【図６９】図６９は、ＰＭＭ間のコンパイルによる、結合された項目のグローバル値番号配列GVNoの生成を説明する図である。
【図７０】図７０は、外部ジョインにより生成された表（ビュー）を示す図である。
【図７１】図７１は、外部ジョインにおけるCountoおよびAggrを説明する図である。
【図７２】図７２は、マスタテーブルにおいて、必要な配列が生成された状態を示す図である。
【図７３】図７３は、スレーブテーブルにおいて、必要な配列が生成された状態を示す図である。
【図７４】図７４は、外部ジョインにおいて、ジョインされた表の読み出し処理の部分を示すフローチャートである。
【図７５】図７５は、ＰＭＭ−０〜ＰＭＭ−３における読み出しの状況を示す図である。
【図７６】図７６は、ＰＭＭ−０〜ＰＭＭ−３における読み出しの状況を示す図である。
【図７７】図７７は、ＰＭＭ−０〜ＰＭＭ−３における読み出しの状況を示す図である。
【図７８】図７８は、外部ジョインにおいて読み出された情報を示す図である。
【図７９】図７９は、メインテーブルにおける検索を説明する図である。
【図８０】図８０は、検索およびジョインにより生成された表（ビュー）を説明する図である。
【図８１】図８１は、メインテーブルにおけるソートを説明する図である。
【図８２】図８２は、ソート後のマスタテーブルを説明する図である。
【図８３】図８３は、ソート後のスレーブテーブルを説明する図である。
【図８４】図８４は、ソートおよびジョインにより生成された表（ビュー）を説明する図である。
【図８５】図８５は、他の手法に基づいて、ＰＭＭ−０に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図８６】図８６は、他の手法に基づいて、ＰＭＭ−０における最終的な配列CountおよびAggrの取得を説明する図である。
【図８７】図８７は、他の手法に基づいて、ＰＭＭ−１に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図８８】図８８は、他の手法に基づいて、ＰＭＭ−１における最終的な配列CountおよびAggrの取得を説明する図である。
【図８９】図８９は、他の手法に基づいて、ＰＭＭ−２に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図９０】図９０は、他の手法に基づいて、ＰＭＭ−２における最終的な配列CountおよびAggrの取得を説明する図である。
【図９１】図９１は、他の手法に基づいて、ＰＭＭ−３に対して、ＰＭＭ−０〜ＰＭＭ−３から、テーブル２に関する(GVNoの値，Countの値)から構成されるパケットが送信されている状態を示す図である。
【図９２】図９２は、他の手法に基づいて、ＰＭＭ−３における最終的な配列CountおよびAggrの取得を説明する図である。
【図９３】図９３は、アグリゲーション配列SetAggrを生成するために各ＰＭＭにて実行される処理を示すフローチャートである。
【図９４】図９４は、配列SetAggrに、配列Countの値が格納される様子を示す図である。
【図９５】図９５Ａ、Ｂは、それぞれ、図９３の処理が施された配列SetAggrの状態を示す図である。
【図９６】図９６は、各ＰＭＭにおいて最終的なSetAggrを得るために実行される処理を示すフローチャートである。
【図９７】図９７は、各ＰＭＭにおいて最終的なSetAggrを得るために実行される処理を示すフローチャートである。
【図９８】図９８は、（GOrdの値，Countの値）の生成を説明する図である。
【図９９】図９９は、ＰＭＭ間のパケットの伝送を説明する図である。
【図１００】図１００は、各ＰＭＭにおいて、パケット伝送により受信済みのパケットを示す図である。
【図１０１】図１０１は、ＰＭＭ−０において、パケットの受信に応答して処理が実行される状態を示す図である。
【図１０２】図１０２は、ＰＭＭ−１において、パケットの受信に応答して処理が実行される状態を示す図である。
【図１０３】図１０３は、ＰＭＭ−２において、パケットの受信に応答して処理が実行される状態を示す図である。
【図１０４】図１０４は、ＰＭＭ−３において、パケットの受信に応答して処理が実行される状態を示す図である。
【符号の説明】
【０１５９】
１２        ＰＭＭ
１４        第１のバス
１６        第２のバス
２０        制御回路
２２        バスＩ／Ｆ
２４        メモリ
２６        バンク
【図１】
0004559971.tif 000002
【図２】
0004559971.tif 000003
【図３】
0004559971.tif 000004
【図４】
0004559971.tif 000005
【図５】
0004559971.tif 000006
【図６】
0004559971.tif 000007
【図７】
0004559971.tif 000008
【図８】
0004559971.tif 000009
【図９】
0004559971.tif 000010
【図１０】
0004559971.tif 000011
【図１１】
0004559971.tif 000012
【図１２】
0004559971.tif 000013
【図１３】
0004559971.tif 000014
【図１４】
0004559971.tif 000015
【図１５】
0004559971.tif 000016
【図１６】
0004559971.tif 000017
【図１７】
0004559971.tif 000018
【図１８】
0004559971.tif 000019
【図１９】
0004559971.tif 000020
【図２０】
0004559971.tif 000021
【図２１】
0004559971.tif 000022
【図２２】
0004559971.tif 000023
【図２３】
0004559971.tif 000024
【図２４】
0004559971.tif 000025
【図２５】
0004559971.tif 000026
【図２６】
0004559971.tif 000027
【図２７】
0004559971.tif 000028
【図２８】
0004559971.tif 000029
【図２９】
0004559971.tif 000030
【図３０】
0004559971.tif 000031
【図３１】
0004559971.tif 000032
【図３２】
0004559971.tif 000033
【図３３】
0004559971.tif 000034
【図３４】
0004559971.tif 000035
【図３５】
0004559971.tif 000036
【図３６】
0004559971.tif 000037
【図３７】
0004559971.tif 000038
【図３８】
0004559971.tif 000039
【図３９】
0004559971.tif 000040
【図４０】
0004559971.tif 000041
【図４１】
0004559971.tif 000042
【図４２】
0004559971.tif 000043
【図４３】
0004559971.tif 000044
【図４４】
0004559971.tif 000045
【図４５】
0004559971.tif 000046
【図４６】
0004559971.tif 000047
【図４７】
0004559971.tif 000048
【図４８】
0004559971.tif 000049
【図４９】
0004559971.tif 000050
【図５０】
0004559971.tif 000051
【図５１】
0004559971.tif 000052
【図５２】
0004559971.tif 000053
【図５３】
0004559971.tif 000054
【図５４】
0004559971.tif 000055
【図５５】
0004559971.tif 000056
【図５６】
0004559971.tif 000057
【図５７】
0004559971.tif 000058
【図５８】
0004559971.tif 000059
【図５９】
0004559971.tif 000060
【図６０】
0004559971.tif 000061
【図６１】
0004559971.tif 000062
【図６２】
0004559971.tif 000063
【図６３】
0004559971.tif 000064
【図６４】
0004559971.tif 000065
【図６５】
0004559971.tif 000066
【図６６】
0004559971.tif 000067
【図６７】
0004559971.tif 000068
【図６８】
0004559971.tif 000069
【図６９】
0004559971.tif 000070
【図７０】
0004559971.tif 000071
【図７１】
0004559971.tif 000072
【図７２】
0004559971.tif 000073
【図７３】
0004559971.tif 000074
【図７４】
0004559971.tif 000075
【図７５】
0004559971.tif 000076
【図７６】
0004559971.tif 000077
【図７７】
0004559971.tif 000078
【図７８】
0004559971.tif 000079
【図７９】
0004559971.tif 000080
【図８０】
0004559971.tif 000081
【図８１】
0004559971.tif 000082
【図８２】
0004559971.tif 000083
【図８３】
0004559971.tif 000084
【図８４】
0004559971.tif 000085
【図８５】
0004559971.tif 000086
【図８６】
0004559971.tif 000087
【図８７】
0004559971.tif 000088
【図８８】
0004559971.tif 000089
【図８９】
0004559971.tif 000090
【図９０】
0004559971.tif 000091
【図９１】
0004559971.tif 000092
【図９２】
0004559971.tif 000093
【図９３】
0004559971.tif 000094
【図９４】
0004559971.tif 000095
【図９５】
0004559971.tif 000096
【図９６】
0004559971.tif 000097
【図９７】
0004559971.tif 000098
【図９８】
0004559971.tif 000099
【図９９】
0004559971.tif 000100
【図１００】
0004559971.tif 000101
【図１０１】
0004559971.tif 000102
【図１０２】
0004559971.tif 000103
【図１０３】
0004559971.tif 000104
【図１０４】
0004559971.tif 000105