(57)【特許請求の範囲】
【請求項１】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて前記各処理モジュールが実行する情報処理方法であって、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
を有し、
グローバルな情報ブロックのデータを削除する情報処理方法。
【請求項２】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて前記各処理モジュールが実行する情報処理方法であって、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域をポインタ配列の挿入位置に確保するステップと、
を有し、
グローバルな情報ブロックのデータを挿入する情報処理方法。
【請求項３】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて前記各処理モジュールが実行する情報処理方法であって、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、
前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法。
【請求項４】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて前記各処理モジュールが実行する情報処理方法であって、
前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法。
【請求項５】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて前記各処理モジュールが実行する情報処理方法であって、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法。
【請求項６】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
を実行させるためのプログラム。
【請求項７】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域をポインタ配列の挿入位置に確保するステップと、
を実行させるためのプログラム。
【請求項８】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、
前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
を実行させるためのプログラム。
【請求項９】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
を実行させるためのプログラム。
【請求項１０】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
を実行させるためのプログラム。
【請求項１１】
請求項６乃至１０のうちいずれか１項記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムであって、
前記各処理モジュールは、
削除対象となるレコードを特定する手段と、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除する手段と、
を有する、
情報処理システム。
【請求項１３】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムであって、
前記各処理モジュールは、
挿入対象となるレコードの挿入位置を特定する手段と、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域をポインタ配列の挿入位置に確保する手段と、
を有する、
情報処理システム。
【請求項１４】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムであって、
前記各処理モジュールは、
上書き対象となるレコードを特定し、上書きデータを設定する手段と、
前記上書きデータを表現する項目値番号と項目値の組を生成する手段と、
前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する手段と、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与する手段と、
を有する、
情報処理システム。
【請求項１５】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムであって、
前記各処理モジュールは、
前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新する手段と、
前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新する手段と、
を有する、
情報処理システム。
【請求項１６】
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
情報処理システムであって、
前記各処理モジュールは、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定する手段と、
前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てる手段と、
前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信する手段と、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信する手段と、
前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶する手段と、
前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成する手段と、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信する手段と、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信する手段と、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与する手段と、
を有する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量のデータを処理する情報処理方法及び情報処理装置に係わり、特に、並列コンピュータのアーキテクチャを採用した情報処理方法及び情報処理システムに関する。
【背景技術】
【０００２】
従来、大量の情報を蓄積し、蓄積された情報を検索、集計するデータ処理が行われている。これらのデータ処理は、例えば、ＣＰＵと、メモリと、周辺機器インタフェースと、ハードディスクのような補助記憶装置と、ディスプレイ及びプリンタのような表示装置と、キーボード及びマウスのような入力装置と、電源ユニットとがバスを介して接続された周知のコンピュータシステムで使用され、特に、市場で容易に入手可能なコンピュータシステムで動作可能なソフトウェアとして提供される。上記の検索・集計等のデータ処理を行うため、特に、大量のデータを蓄積する各種データベースが知られている。大量のデータの中でも、特に、表形式で表現され得るデータを処理したいという要求は強い。【０００３】
大量のデータを効率よく検索、集計できるか否かは、大量のデータを格納する形式に依存する。従来、一般的な格納技術として、所謂「行単位」格納技術及び「項目単位」格納技術が知られている。行単位格納技術の場合、レコード番号毎に構成された性別、年齢及び職業の項目値の組がレコード番号順に、論理的アドレスが増加する順番でディスク上に格納されている。一方、項目単位格納技術の場合、項目毎にレコード番号順に、項目値が、論理的アドレスが増加する方向にディスク上に格納されている。【０００４】
上記の従来技術の場合、全てのレコード番号の全ての項目に対する項目値が、そのまま、（レコード番号の１次元と、それ以外の項目値の１次元とからなる）２次元のデータ構造に格納されている。以下、このようなデータ構造を特に「データ表」と称する。従来技術の場合、蓄積されたデータを検索、集計する際には、このデータ表をアクセスすることにより行われている。【０００５】
また、項目の値をそのまま項目値として格納する方法の他に、値をコード変換して、項目値としてコードを格納する方法も知られている。この場合でも、コード変換されたコードが項目値としてデータ表に格納されている点に変わりはない。【０００６】
上記従来技術のデータ表タイプのデータ構造を用いて格納された大量のデータを検索、集計する場合、このようなデータ表をアクセスするためのアクセス時間に起因して検索、集計の処理時間が長くなるという問題点がある。【０００７】
また、データ表には少なくとも以下に述べる本質的な欠点がある。
（１）データ表はサイズが巨大化しやすく、しかも例えば項目毎等に（物理的に）分割することが困難である。実際上、集計・検索のためにデータ表をメモリなどの高速な記憶装置上に展開することは困難である。
（２）データ表は、各項目値を同時にソートした形で保持できない。
（３）データ表には、同一値が何度も出現する。【０００８】
これに対して、本願発明者は、大量のデータの検索・集計のスピードを大幅に向上させるため、従来のデータ表の機能を有すると共に、データ表に基づくデータ構造の上記問題点が解決されたデータ管理機構を設けることにより、表形式データを検索・集計・ソートする方法及びその方法を実施する装置を提案している（例えば、特許文献１を参照。）。【０００９】
提案された表形式データを検索・集計する方法及び装置は、通常のコンピュータシステムで使用可能な新規のデータ管理機構を導入する。このデータ管理機構は原則として値管理テーブルと、値管理テーブルへのポインタ配列とを有する。【００１０】
図１は、従来のデータ管理機構の説明図である。同図には、値管理テーブル１１０と値管理テーブルへのポインタ配列１２０とが示されている。値管理テーブル１１０とは、表形式データの各項目に対し、その項目に属する項目値が順序付け（整数化）された項目値番号の順番に、上記項目値番号に対応した項目値（符号１１１参照）と、上記項目値に関連した分類番号（符号１１２参照）とが格納されたテーブルである。値管理テーブルへのポインタ配列１２０とは、表形式データのある列（即ち、項目）の項目値番号、即ち値管理テーブル１１０へのポインタが表形式データのレコード番号順に格納された配列である。【００１１】
値管理テーブルへのポインタ配列１２０と値管理テーブル１１０とを組み合わせることにより、あるレコード番号が与えられたとき、所定の項目に関する値管理テーブルへのポインタ配列１２０からそのレコード番号に対応して格納された項目値番号を取り出し、次に、値管理テーブル１１０内でその項目値番号に対応して格納された項目値を取り出すことにより、レコード番号から項目値を得ることができる。したがって、従来のデータ表と同様に、レコード番号（行）と項目（列）という座標を用いて全てのデータ（項目値）を参照することができる。【００１２】
このように表形式データの項目中のある項目に対して生成された値管理テーブルと、値管理テーブルへのポインタ配列とを含むデータ管理機構は、以下の説明では、特に情報ブロックと呼ぶ。【００１３】
従来のデータ表は、レコードに対応した行と、項目に対応した列とからなる座標を用いて全てのデータを一体的に管理しているのに対して、この情報ブロックは、表形式の列、即ち、項目毎にデータを完全に分離している点に特徴がある。このデータ管理機構によれば、大量のデータが項目毎に分離されているので、検索・集計に必要な項目に関するデータのみをメモリ等の高速な記憶装置上に取り込むことが可能であり、その結果としてデータへのアクセス時間が短縮されるので、検索・集計の処理が高速化され、項目数が非常に多いデータの場合でも、パフォーマンスを低下させることなく取り扱えるようになる。【００１４】
また、この情報ブロックの場合、項目値は値管理テーブルに格納され、値が存在する位置を示すレコード番号は値管理テーブルへのポインタ配列に関連付けられているので、項目値がレコード番号順に並べられている必要がない。したがって、検索・集計に適するようにデータを項目値に関してソートすることができるようになる。これにより、目的の値と一致する項目値がデータ中に存在するか否かの判定が高速に行えるようになる。その上、項目値は項目値番号と対応しているので、項目値が長いデータや文字列等であっても整数として取り扱うことができる。【００１５】
さらに、このデータ管理機構によれば、値管理テーブル１１０の全ての項目値番号は異なる項目値と対応しているので、特定の値を有する項目値を含むレコードを抽出する場合に必要とされる特定の値と項目値との比較の回数は、最大で項目値の種類の数、即ち、項目値番号の個数であり、比較演算の回数が著しく低減され、検索・集計の高速化が図られる。その際には、ある項目値が該当するかどうかを調べた結果を格納する場所が必要であるが、例えば分類番号１１２をその格納場所として使用することができる。【００１６】
図２には、項目値を格納した項目値配列２１１と、分類番号を格納した分類番号配列２１２と、存在数を格納した存在数配列２１４とからなる値管理テーブル２１０を含む情報ブロックが示されている。存在数配列２１４には、ある項目に関する各項目値が全データ中に何個ずつ存在するかを示す数、換言すれば、所定の項目値を有するレコードの個数が格納される。このような存在数配列２１４を値管理テーブル２１０に準備しておくことにより、検索・ソート・集計の際に必要とされる「どのようなデータが（いくつ）存在するか？」、「このデータは上から何番目のデータであるか？」、或いは、「上から○○番目のデータは何か？」というような情報を直ちに得ることができるようになり、検索・ソート・集計の高速化が図れる。【００１７】
しかし、このようなデータ管理機構においても、レコード数が増大するのにしたがって、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなるが、処理可能なデータ量は、利用されるハードウェア資源によって制限される。【００１８】
大規模データの処理は、上記のような表形式データの情報処理以外の分野でも要求されている。社会全体のさまざまな場所にコンピュータが導入され、インターネットをはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積されるようになった。このような大規模データを処理するには、膨大な計算が必要で、そのために並列処理を導入しようと試みるのは自然である。【００１９】
並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者（「共有メモリ型」）は、複数のプロセッサが１つの巨大なメモリ空間を共有する方式である。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。したがって、例えば１０億個の浮動小数点変数の平方根を計算する際、単一ＣＰＵに対する加速比は、せいぜい１００倍ということになる。経験的には、３０倍程度が上限である。【００２０】
後者（「分散メモリ型」）は、各プロセッサがそれぞれローカルなメモリを持ち、これらを結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込んだハードウェアシステムの設計が可能である。したがって、上記１０億個の浮動小数点変数の平方根を計算する際の単一ＣＰＵに対する加速比を、数百〜数万倍とすることが可能である。
【特許文献１】国際公開第ＷＯ００／１０１０３号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、「分散メモリ型」の並列処理アーキテクチャにもいくつかの課題が存在する。【００２２】
[第１の課題：巨大配列の分掌管理]
「分散メモリ型」の第１の課題は、データの分掌管理の問題である。【００２３】
巨大なデータ（一般的には配列なので、以降、配列で説明する）は、１つのプロセッサの所有するローカルメモリに収容できるものではなく、必然的に複数のローカルメモリに分掌管理される。効率的かつ柔軟な分掌管理メカニズムを導入しないと、プログラムの開発および実行に際してさまざまな障害を抱え込むことになることは明らかである。【００２４】
[第２の課題：プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、巨大配列にアクセスしようとすると、自己の所有するローカルメモリ上の配列要素に対しては速やかにアクセスできるものの、他のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を必須とする。このプロセッサ間通信はローカルメモリとの通信に比べ、極端にパフォーマンスが低く、最低でも１００クロックかかると言われている。このため、ソート実施時には、巨大配列全域にわたる参照が実施され、プロセッサ間通信が多発するため、パフォーマンスが極端に低下する。【００２５】
この問題点につき、より具体的に説明を加える。１９９９年現在、パソコンは、１〜数個のＣＰＵを用いて、「共有メモリ型」として構成されている。このパソコンに使用される標準的なＣＰＵは、メモリバスの５〜６倍程度の内部クロックで動作し、その内部に自動的な並列実行機能やパイプライン処理機能が装備されており、およそ１データを１クロック（メモリバス）で処理できる。【００２６】
このため、「分散メモリ型」のマルチプロセッサシステムでは、プロセッサ数は多いのに、シングルプロセッサ（共有メモリ型）よりも１００倍遅くなることになりかねない。【００２７】
[第３の課題：プログラムの供給]
「分散メモリ型」の第３の課題は、多数のプロセッサにどうやってプログラムを供給するか、という問題である。【００２８】
非常に多数のプロセッサに、別々のプログラムをロードし、全体を協調動作させる方式（ＭＩＭＤ：Multiple Instruction Stream, Multiple Data Stream）では、プログラムの作成、コンパイル、配信のために多大な負荷を要する。【００２９】
その一方、多数のプロセッサを同一のプログラムで動作させる方式（ＳＩＭＤ：Single Instruction Stream, Multiple Data Stream）では、プログラムの自由度が減少し、所望の結果をもたらすプログラムが開発できない事態も想定される。【００３０】
したがって、上記の従来の分散メモリ型の並列アーキテクチャに基づく情報処理技術では、プロセッサ間通信ができるだけ少なくなるように、大規模データをプロセッサ間で共有することなく、大規模データを個々のプロセッサ内に保持したまま、大規模データの処理を実現することが求められている。【００３１】
そこで、本発明は、並列コンピュータのアーキテクチャを採用して大量のデータを情報処理する際に、複数のプロセッサ間でデータを分掌管理するための情報処理方法の提供を目的とする。【００３２】
また、本発明は、上記の情報処理方法をコンピュータに実行させるためのプログラムの提供を目的とする。【００３３】
更に、本発明は、上記の情報処理方法を実現する情報処理システムの提供を目的とする。
【課題を解決するための手段】
【００３４】
本発明は、表形式データの実体的要素である値リスト及びポインタ配列を個々の処理モジュールにローカルに保存し、複数の処理モジュール間では、データ自体ではなく、データの順序番号（又は、順位）という指標がグローバルに保持されるという分散メモリ型の並列処理アーキテクチャを採用している。また、本発明は、単一命令により種々のメモリに記憶されたデータを入出力し処理するように、処理と通信が統合されたアルゴリズムを採用している。【００３５】
上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む、情報処理システムにおいて、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュールの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックを構築する情報処理方法が提供される。これにより、レコードに対応したグローバルな順序番号と、項目値に対応したグローバルな項目値番号を、複数の処理モジュール間で一意に決めることにより、グローバルな大量の表形式データを複数の処理モジュールで分掌管理するグローバルな情報ブロックを構築することが可能になる。【００３６】
好ましい実施態様においては、前記グローバルな順序番号を割り当てるステップは、前記各処理モジュールの表形式データのレコードの順番を表す番号に、前記各処理モジュールに割り当てられたオフセット値を加算することにより、前記グローバルな順序番号を計算する。これにより、グローバルな順序番号は処理モジュール間で通信をしなくても一意に決めることができる。【００３７】
好ましい実施態様においては、前記グローバルな項目値番号を付与するステップは、前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの値リストを受信し、前記他の処理モジュールから受信した値リスト中の項目値のうち、当該各処理モジュールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、当該各処理モジュールの値リスト中の項目値の項目値番号を該個数分だけ引き上げることにより前記グローバルな項目値番号を計算する。これにより、グローバルな項目値番号は、値リストの通信と統合した処理によって一意に決めることができる。【００３８】
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
を有し、グローバルな情報ブロックのデータを削除する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意のレコードを削除することが可能になる。【００３９】
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、
を有し、グローバルな情報ブロックのデータを挿入する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の位置にレコードを追加することが可能になる。【００４０】
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、
前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意のレコードのデータを更新することが可能になる。【００４１】
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの不要なデータを消去し、メモリ使用効率、処理効率を高めることが可能になる。【００４２】
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法が提供される。これにより、アプリケーションの要求に応じて、処理モジュール間での表形式データの分掌の割り振りを自由に変更することが可能になる。【００４３】
また、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を情報処理システムの処理モジュールのコンピュータに実行させるためのプログラムが提供される。【００４４】
また、上記目的を達成するため、本発明によれば、上記本発明のプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。【００４５】
さらに、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を実行するように構成された処理モジュールを含む情報処理システムが提供される。
【発明の効果】
【００４６】
本発明によれば、分散メモリ型の並列処理アーキテクチャに基づいて、大量のデータを分掌管理することができる情報処理システムを提供することが可能となる。
【発明を実施するための最良の形態】
【００４７】
［ハードウェア構成］
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図３は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。この実施形態では、処理モジュールは、プロセッサ付きメモリモジュール（以下、「ＰＭＭ」と称する）により構成される。図３に示すように、この実施の形態においては、複数の処理モジュールを論理的に環状に接続するため、複数のプロセッサ付きメモリモジュールＰＭＭ３２−０、ＰＭＭ３２−１、ＰＭＭ３２−２、・・・がリング状に配置され、隣接するメモリモジュール間を、時計回りにデータを伝達する第１のバス（たとえば、符号３４−０、３４−１参照）、および、反時計回りにデータを伝達する第２のバス（たとえば、符号３６−０、３６−１参照）が接続している。第１のバスおよび第２のバスでは、ＰＭＭ間のパケット通信が実行される。本実施の形態において、このパケット通信が実行される伝送路（パケット伝送路）を、第１のバスおよび第２のバスと称する。【００４８】
本実施の形態では、ＰＭＭを、一方が時計回りにパケットを伝送する第１のバス（第１の伝送路）、他方が反時計回りにパケットを伝送する第２のバス（第２の伝送路）にて、リング状に接続している。このような構成は、パケット伝送の遅延時間などを均一化することができるため有利である。【００４９】
尚、処理モジュール間の物理的な接続形態は、本実施の形態に示されるような形態に限定されるものではなく、処理モジュールを論理的に環状に接続できる形態であればどのような形態でもよい。例えば、バス型、スター型などの種々の接続形態を採用することができる。【００５０】
図４は、ＰＭＭ３２の構造の一例を示す図である。図４に示すように、各ＰＭＭ３２−ｉは、ＰＭＭ間で共通の命令にしたがって、メモリのアクセス、演算の実行などを制御する制御回路４０と、バスインタフェース（Ｉ／Ｆ）４２と、メモリ４４とを備えている。【００５１】
メモリ４４は、複数のバンクＢＡＮＫ０、１、・・・、ｎ（符号４６−０、・・・、ｎ）を有し、それぞれに、後述する所定の配列を記憶できるようになっている。【００５２】
また、制御回路４０は、外部の他のコンピュータ等とのデータ授受が可能である。また、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにアクセスできるようにしても良い。【００５３】
さらに、複数のプロセッサ付きメモリモジュールのメモリが同一のメモリ空間に存在していても構わない。この場合、パケット通信はメモリ参照で実現される。或いは、複数のプロセッサ付きメモリモジュールのプロセッサが物理的に同一のＣＰＵであってもよい。【００５４】
［表形式データ］
表形式データとは、情報の項目に対応した項目値を含むレコードの配列として表されるデータである。この表形式データは、例えば、ある項目（次元）のある項目値（次元値）毎に、別の項目の項目値（メジャー）を集計する処理の対象になる。ここで、メジャーの集計とは、メジャーの個数をカウントしたり、メジャーの総和を算出したり、メジャーの平均値を算出したりすることである。また、次元数は、２次元以上でも構わない。例えば、図５は、ある保育園における園児の性別・年齢・身長の論理的な表形式データである。ここで、性別の人数を求める処理や、性別・年齢別に身長の合計値を求める処理は、本発明を適用することにより実現される情報処理の一例としての集計処理である。【００５５】
本発明は、このような表形式データの高速、並列的な情報処理を実現するためのデータ構造の構築技術、データの更新技術、及び、データの再配置技術を提供するものである。【００５６】
［従来のデータの記憶構造］
図５に示された表形式データは、上述の国際公開第ＷＯ００／１０１０３号に提案したデータ管理機構を用いることにより、単一コンピュータ内では図６に示されるようなデータ構造として記憶される。【００５７】
図５に示すように、表形式データの各レコードの並び順の番号と、内部データの並び順の番号を対応付ける配列６０１（以下、この配列を「OrdSet」のように略記する。）には、表形式の各レコード毎に内部データの並び順番号が値として配置される。この例では、すべての表形式データが内部データとして表されるため、表形式データのレコード番号と内部データの並び順番号とは一致する。【００５８】
例えば、性別に関しては、表形式データのレコード０に対応する内部データの並び順番号は、配列OrdSet６０１から「０」であることがわかる。並び順番号が「０」であるレコードに関する実際の性別の値、即ち、「男」又は「女」は、実際の値が所定の順序に従ってソートされた値リスト６０３（以下、値リストを「VL」のように略記する。）へのポインタ配列６０２（以下、ポインタ配列を「VNo」のように略記する。）を参照することによって取得できる。ポインタ配列６０２は、配列OrdSet６０１に格納されている並び順番号の順に従って、実際の値リスト６０３中の要素を指し示すポインタを格納している。これにより、表形式データのレコード「０」に対応する性別の項目値は、（１）配列OrdSet６０１からレコード「０」に対応する並び順番号「０」を取り出し、（２）値リストへのポインタ配列６０２から並び順番号「０」に対応する要素「１」を取り出し、（３）値リスト６０３から、値リストへのポインタ配列６０２から取り出された要素「１」によって指し示される要素「女」を取り出すことにより取得できる。【００５９】
他のレコードに対しても、また、年齢及び身長に関しても同様に項目値を取得することができる。【００６０】
このように表形式データは、値リストVLと、値リストへのポインタ配列VNoの組合せにより表現され、この組合せを、特に、「情報ブロック」と称する。図６には、性別、年齢及び身長に関する情報ブロックがそれぞれ情報ブロック６０８、６０９及び６１０として示されている。【００６１】
単一のコンピュータが、単一のメモリ（物理的には複数であっても良いが、単一のアドレス空間に配置されアクセスされるという意味で単一のメモリ）であれば、当該メモリに、順序集合の配列OrdSet、各情報ブロックを構成する値リストVLおよびポインタ配列VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、その大きさに伴ってメモリ容量も大きくなるため、これらを分散配置できるのが望ましい。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが望ましい。【００６２】
そこで、本実施の形態においては、複数のＰＭＭが、重なることなくレコードのデータを分掌把握し、ＰＭＭ同士のパケット通信により、高速な集計を実現している。【００６３】
［本実施の形態によるデータ記憶構造］
図７は、本実施の形態によるデータ記憶構造の説明図である。同図では、図５及び図６によって示された表形式のデータが、一例として、ＰＭＭ−０、ＰＭＭ−１、ＰＭＭ−２及びＰＭＭ−３の４個の処理モジュールに分散配置され、分掌把握されている。説明の便宜上、処理モジュールの個数は４個であるが、本発明は処理モジュールの個数によって限定されるものではない。【００６４】
本実施の形態では、各ＰＭＭで分掌把握されているレコードを、ＰＭＭ−０からＰＭＭ−３までの４個のＰＭＭで掌握されているすべてのレコードの中で一意に順序付けることができるようにするため、各レコードにはグローバル・レコード番号が一意に割り当てられている。図７では、グローバル・レコード番号は「GOrd」として表されている。このグローバル・レコード番号GOrdは、各ＰＭＭ内の配列OrdSetの各要素が、すべてのレコード中で何番目であるかを示している。ここで、配列OrdSetは、データ全体から各ＰＭＭ内部への順序保存写像となるように定められているので、GOrdは昇順にすることができる。また、各ＰＭＭ内において、GOrd配列（＝グローバル順序配列）のサイズはOrdSet配列（順序配列）のサイズと一致している。【００６５】
更に、本実施の形態では、各ＰＭＭで分掌把握されている項目値、即ち、値リストVL中の各値が、すべてのＰＭＭで掌握されている項目値の中で何番目の位置にあるかを示すためのグローバル項目値番号が設けられる。図７では、このグローバル項目値番号は「GVNo」として示されている。値リストVLは値の順（例えば、昇順又は降順）に並べられているので、グローバル項目値番号GVNoも昇順（又は降順）に設定される。配列GVNoのサイズは、配列VLのサイズと一致している。各処理モジュールで個別に掌握されている項目値が全体の中で何番目であるかを識別することにより、各処理モジュールでの集計結果を全体として一つに統合することが可能になる。【００６６】
尚、図７において、各ＰＭＭに割り当てられている値OFFSETは、当該ＰＭＭが分掌する先頭のレコードが、図６に示された一体的なレコードの中の何番目のレコードに対応しているかを示すためのオフセット値である。上述のように、各ＰＭＭの配列OrdSetは、データ全体から各ＰＭＭ内部への順序保存写像となるように定められているので、このオフセット値OFFSETと当該ＰＭＭにおける配列OrdSetの要素の値を合計した値は、グローバル・レコード番号GOrdと一致する。好ましくは、このオフセット値が各ＰＭＭに通知され、各ＰＭＭはこのオフセット値OFFSETに基づいてグローバル・レコード番号を決定することができる。【００６７】
各ＰＭＭのグローバル・レコード番号GOrd及びグローバル項目値番号GVNoは、予め各ＰＭＭの外部で計算して各ＰＭＭに設定することができるが、後述のコンパイル処理によって各ＰＭＭ自体が設定することも可能である。【００６８】
［グローバル集合配列Gordとグローバル項目値番号配列GNoについて］
次に、本実施の形態にて導入した配列GOrdおよび配列GVNoの意義について説明する。グローバル順序配列GOrdは、各ＰＭＭが掌握するローカルな表形式データを集合させたグローバルな表形式データ中、各ＰＭＭの掌握する表形式データの各レコードの位置（順位）を示している。即ち、本実施の形態では、グローバル順序配列GOrd及び順序配列OrdSetにより、レコードの位置情報を、グローバルな成分とローカルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能となるとともに、各ＰＭＭが単独で処理を実行することも可能となる。【００６９】
以下の実施例の説明では、ＰＭＭが各項目の情報ブロックを保持するように構成されているが、ＰＭＭが表形式データをそのまま保持するような場合でも、上記GOrdは同様に機能する。【００７０】
例えば、以下の実施例において後述のコンパイルが終了した状態で、グローバル順序配列GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式データ全体のビューを作成することができる。【００７１】
［コンパイル処理の概要］
コンパイル処理は、各処理モジュールでデータを管理するために使用するグローバル・レコード番号GOrdとグローバル項目値番号GVNoを設定するための処理である。グローバル・レコード番号GOrdは、上述のオフセット値OFFSETを使用することにより簡単に設定することができる。一方、グローバル項目値番号GVNoは、各処理モジュールが個別に保持している値リストに基づいて、すべての処理モジュール間で共通に順序付けされる番号である。各処理モジュールは、この順序番号付与処理を用いることによってグローバル項目値番号GVNoを設定することが可能である。そこで、この順序番号付与処理について詳述する。【００７２】
［順序番号付与処理］
本実施の形態による情報処理システムのように、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムでは、各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法、即ち、順序番号付与方法が必要である。【００７３】
順序番号付与処理は、例えば、コンパイル処理において、グローバル項目値番号を設定する場合にも使用される。この順序番号付与処理は、同一値には唯一の番号しか付与しないことを特徴としている。したがって、このタイプの順序番号付与処理は、特に、同一値消去型の順序番号付与処理と称する。【００７４】
図８は、実施の形態にかける順序番号付与方法のフローチャートである。同図に示されるように、各処理モジュールは、自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納する（ステップ８０１）。【００７５】
次に、各処理モジュールは、自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する（ステップ８０２）。更に、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する（ステップ８０３）。【００７６】
次に、各処理モジュールは、受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信し（ステップ８０４）、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する（ステップ８０５）。【００７７】
続いて、各処理モジュールは、送信ステップ８０２において論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、ステップ２２０４とステップ２２０５を繰り返し実行する（ステップ８０６）。【００７８】
この順序番号付与方法によれば、各処理モジュールは、他の処理モジュールが保持する値のリストを重複無く受け取り、自処理モジュールが保持する値にグローバルな順序番号を付与することができる。上述のように、各処理モジュールが予め順序付きの値のリストを保持している場合には、非常に効率的にグローバルな順序番号を付与することが可能である。なぜならば、値のリストが予め順序付けされている場合には、昇順（又は降順）の一方向に順序を比較するだけでよいからである。もちろん、各処理モジュールの保持する値のリストが順序付きでない場合でも同様の結果を得ることができる。その場合には、例えば、各処理モジュールは、他の処理モジュールから受信した値のリスト中の値と、自処理モジュールが保持している値のリスト中の値を、すべての組合せについて順番に比較して、各値よりも前に、即ち、上位に、順序付けされる値の個数をカウントして、各値の順序番号を更新すればよい。【００７９】
本実施の形態の順序番号付与方法では、各処理モジュールは、他の処理モジュールから受信した値のリストを保存する必要はなく、自処理モジュールが保持している値のリストに順序を付けるだけで、すべての処理モジュールに共通の順序番号を付与することができる。【００８０】
また、この順序番号付与方法は、他の処理モジュールからの値のリストの受信順に影響されないので、処理モジュール間の物理的な接続形態に全く依存しない。したがって、伝送路と順序番号更新回路を多重化することによって、更なる高速化を実現することができる。【００８１】
図９Ａ〜Ｄ及び図１０Ａ〜Ｄは、第１の順序番号付与処理の説明図である。図９Ａ〜Ｄには、各ＰＭＭが次の段に接続されたＰＭＭへ送信する値のリストがステップ毎に示されている。図１０Ａ〜Ｄには、各ステップで、ＰＭＭが前の段に接続されたＰＭＭから受信した値のリストが示されている。この例では、初期状態として、ＰＭＭ−０が値のリスト［１，３，５，６］を保持し、ＰＭＭ−１が値のリスト［０，２，３，７］を保持し、ＰＭＭ−２が値のリスト［２，４，６，７］を保持し、ＰＭＭ−３が値のリスト［０，１，３，５］を保持している。【００８２】
ステップ３の終了時点で、各ＰＭＭは、他のすべての処理モジュールからの値のリストを受信することができる。この時点で、自処理モジュールが保持している値のリストと、受信した値のリストを合わせることにより、すべての値の順序を決めることができる。更に、ステップ４の終了時点では、すべての値を重複無く受信できることが分かる。【００８３】
この第１の順序番号付与処理では、処理モジュールは、図９Ａ〜Ｄに示されるように、論理的に環状に接続され、各処理モジュールは自処理モジュール内に重複値を持たないリストを保持する。そして、各処理モジュールは、自処理モジュール内のリストを論理的に下流の処理モジュールへ送出し、論理的に上流の処理モジュールから１モジュール分のリストを受信する。各処理モジュールは、上流のモジュールから受信したリスト中の値から、自処理モジュール内に保持しているリスト中に含まれる値と一致した値を除き、リストを下流の処理モジュールへ送出する。【００８４】
この第１の順序番号付与処理によれば、処理モジュールの総数がＮであるとき、各処理モジュールは、（Ｎ−１）回の転送サイクル終了までに、他の処理モジュールの保持するリストを重複無く受け取ることができる。また、各処理モジュールは、Ｎ回の転送サイクル終了までに、全モジュールの保持するリストを重複無く受け取ることができる。特に、各処理モジュールに保持されている値のリストが、値の昇順又は値の降順に整列されているならば、重複値を消去する処理をより効率的に実行することができる。【００８５】
この第１の順序番号付与処理は、全ての処理モジュールを同一の構造により実現できる点で非常に優れている。但し、この第１の順序番号付与処理では、１つの値が何回も消去され、及び／又は、多数回の転送が行われることがある。具体的には、同じ値が多数の処理モジュール内で発生している場合、その値は、その値を保持している処理モジュールを通過する都度消去される。また、処理モジュールの個数をＮ個とすると、ある処理モジュールに、最も遠い処理モジュールからのデータが到着するまでに、Ｎ−１回の転送が行われる。【００８６】
この転送回数は、後述のトーナメント方式と呼ぶ付加的なメカニズムを導入することによってさらに削減することが可能である。【００８７】
図１１は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置１１００の第１の例の説明図である。同図では、図９Ａ〜Ｄ及び図１０Ａ〜Ｄに関して説明した例と同様に、初期状態として、ＰＭＭ−０が値のリスト［１，３，５，６］を保持し、ＰＭＭ−１が値のリスト［０，２，３，７］を保持し、ＰＭＭ−２が値のリスト［２，４，６，７］を保持し、ＰＭＭ−３が値のリスト［０，１，３，５］を保持している。【００８８】
最初のステップで、ＰＭＭ−０は自処理モジュール内の値のリスト［０，１，３，５］を統合装置１へ送出し、ＰＭＭ−１は自処理モジュール内の値のリスト［０，２，３，７］を統合装置１へ送出し、ＰＭＭ−２は自処理モジュール内の値のリスト［２，４，６，７］を統合装置２へ送出し、ＰＭＭ−３は自処理モジュール内の値のリスト［０，１，３，５］を統合装置２へ送出する。【００８９】
次のステップで、統合装置１は、ＰＭＭ−０とＰＭＭ−１から受け取った値のリストから重複値を消去して値のリスト［０，１，２，３，５，６，７］を生成し、統合装置３へ送出する。同様に、統合装置２は、ＰＭＭ−２とＰＭＭ−３から受け取った値のリストから重複値を消去して値のリスト［０，１，２，３，４，５，６，７］を生成し、統合装置３へ送出する。【００９０】
最後のステップで、統合装置３は、統合装置１と統合装置２から受け取った値のリストから重複値を消去して値のリスト［０，１，２，３，４，５，６，７］を生成し、ＰＭＭ−１〜ＰＭＭ−４の各処理モジュールへこの値リストをブロードキャストする。【００９１】
この例では、値のリストの重複値の消去は、処理モジュールではなく、統合装置において行われる。値のリストが昇順又は降順に整列されているならば、統合装置は、昇順又降順のリスト同士を統合すればよいので、フロー制御が可能であれば、統合装置を少ないバッファメモリで実現することが可能である。【００９２】
この例では、統合装置と処理モジュールが完全に分離されているが、一部の統合処理を処理モジュールが担当してもよい。図１２は、このような本発明の実施の形態にかかる順序番号を付与するトーナメント装置１２００の第２の例の説明図である。同図では、図１１と同様に、初期状態として、ＰＭＭ−０が値のリスト［１，３，５，６］を保持し、ＰＭＭ−１が値のリスト［０，２，３，７］を保持し、ＰＭＭ−２が値のリスト［２，４，６，７］を保持し、ＰＭＭ−３が値のリスト［０，１，３，５］を保持している。【００９３】
最初のステップで、ＰＭＭ−０は自処理モジュール内の値のリスト［０，１，３，５］をＰＭＭ−１へ送出し、ＰＭＭ−２は自処理モジュール内の値のリスト［２，４，６，７］をＰＭＭ−３へ送出する。【００９４】
次のステップで、ＰＭＭ−１は、ＰＭＭ−０から受け取った値のリストと自処理モジュール内の値のリスト［０，２，３．７］を統合し、重複値を消去して値のリスト［０，１，２，３，５，６，７］を生成し、統合装置３へ送出する。同様に、ＰＭＭ−３は、ＰＭＭ−２から受け取った値のリストと自処理モジュール内の値のリスト［０，１，３，５］を統合し、重複値を消去して値のリスト［０，１，２，３，４，５，６，７］を生成し、統合装置３へ送出する。【００９５】
最後のステップで、統合装置３は、統合装置１と統合装置２から受け取った値のリストから重複値を消去して値のリスト［０，１，２，３，４，５，６，７］を生成し、ＰＭＭ−１〜ＰＭＭ−４の各処理モジュールへこの値リストをブロードキャストする。【００９６】
図１２の例では、処理モジュールＰＭＭ−２（及び／又は、ＰＭＭ−０）は統合処理のため利用されていない。そこで、ＰＭＭ−１からの出力とＰＭＭ−３空の出力を統合する統合装置３の役割をＰＭＭ−２又はＰＭＭ−０が代替してもよい。図１３は、このような本発明の実施の形態にかかる順序番号を付与するトーナメント装置１３００の第３の例の説明図である。この例によれば、統合装置の数は、処理モジュール数−１になるので、一般に、非常に多数の処理モジュールが存在する場合でも、図１１又は１２に示された例のように、処理モジュールとは別個に独立した統合装置を設けることなく、トーナメント方式の順序番号付与処理を実現することができる。【００９７】
図１１から図１３を参照して説明した例では、メモリ空間は単一のメモリ空間でもよく、また、複数のＣＰＵが存在していてもよい。処理モジュールや統合装置の間の通信路は論理的な通信路であり、通信が物理的にはメモリ参照によって実現される場合でも、トーナメント方式の順序番号付与処理を実現することができる。【００９８】
［コンパイル処理の詳細］
図１４は、表形式データを表現する単一コンピュータ（又は、処理モジュール）上の情報ブロックの説明図である。同図において、Ordsetは、既に説明したように、表形式データのレコードの順番を表す順序配列であり、VNoは、レコードの順番に項目値番号を指定する情報（或いは、項目値番号自体）が格納されたポインタ配列であり、VLは、項目値番号の順に項目値が格納された値リストである。コンパイル処理は、このような表形式データを、複数の処理モジュールで分掌管理するためのデータ構造を構築する処理である。【００９９】
図１５は、図１４の表形式データを４個の処理モジュールＰＭＭ−０、ＰＭＭ−１、ＰＭＭ−２及びＰＭＭ−３で分掌管理するデータ構造の説明図である。同図において、Gordは、各処理モジュールで管理されているレコードが全体で何番目のレコードであるかを表すグローバル順序番号であり、GVNoは、各処理モジュールで管理されている値リスト中の値が、全体で何番目の位置にあるかを表すグローバル項目値番号である。【０１００】
コンパイル処理は、図１４に示されたデータ構造を図１５に示されたデータ構造に変換する処理である。図１６は、本発明の実施の形態にかかるコンパイル処理のフローチャートである。本例のコンパイル処理は、ステップ１６０１において、各処理モジュールの表形式データのレコードの順番を表す番号に、各処理モジュールに割り当てられたオフセット値を加算することにより、グローバルな順序番号、即ち、グローバル順序付き配列の要素の値を計算する。オフセット値は、各処理モジュールに割り当てるレコードの数に基づいて決まる。図１５の例では、オフセット値は、ＰＭＭ−０からＰＭＭ−３の順に、０、３、５及び８である。【０１０１】
次に、ステップ１６０２から１６０７では、各処理モジュールは、図８を参照して説明した順序番号付与処理を利用して、各処理モジュール内の項目値にグローバル項目値番号を与える。グローバル項目値番号は、記各処理モジュールが自処理モジュールの値リストと他の処理モジュールの値リストとを比較することにより、自処理モジュールの値リストの項目値に対して、複数の処理モジュール間で一意に決まるグローバルな項目値番号である。【０１０２】
各処理モジュールは、ステップ１６０２で、論理的に環状に接続された他の処理モジュールへ自処理モジュールの値リストを送信し、次に、ステップ１６０３で、他の処理モジュールから前記他の処理モジュールの値リストを受信する。ステップ１６０４で、各処理モジュールは、受信した値リストの重複値を消去する。各処理モジュールは、ステップ１６０５で、他の処理モジュールから受信した値リスト中の項目値のうち、自処理モジュールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、自処理モジュールの値リスト中の項目値の項目値番号をその個数分だけ引き上げる。各処理モジュールは、ステップ１６０６で、他の処理モジュールから受信し、重複値が削除された値リストを論理的に次に接続された他の処理モジュールへ送信する。各処理モジュールは、ステップ１６０７で、他の処理モジュールから送られた値リストに対して、ステップ１６０２からステップ１６０６までの処理を繰り返し、グローバル項目値番号の付与を終了する。【０１０３】
［データ更新処理］
図１５に示されるようなデータ構造で管理されている表形式データに対して、様々な処理が行われる。検索、ソート、集計などの処理の他、データの削除、データの挿入、データの上書きなどの基本的な操作が表形式データに対して行われる。そこで、次に、各処理モジュールでデータが分掌管理されているような本発明のデータ構造に対するデータ更新処理を説明する。【０１０４】
［レコード削除処理］
例えば、図１５に示された表形式データのうち、ＰＭＭ−０に保持されているGOrd＝２のレコードと、ＰＭＭ−１に保持されているGOrd＝３のレコードの２個のレコード（２行）を削除する場合に関して、本発明の実施の形態にかかるレコード削除処理を説明する。【０１０５】
レコード削除処理は、削除対象となるレコードを特定するステップと、前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、を含む。【０１０６】
図１７には、削除されるべき２個のレコードに対応した文字が太字のイタリック体で示されている。レコードが削除されると、レコードに付与されているグローバル順序番号GOrdと、レコードの順番に項目値番号が格納されたポインタ配列VNoと、各処理モジュール内でレコードに一意に付与されているローカルな順序番号OrdSetを更新しなければならない。但し、この段階では、値リストVLは更新しない。値リストを更新するためには、値リストに格納された項目値を参照するレコードが存在しないこと、即ち、その項目値を指定するVNoが存在しないことを確かめる必要があるからである。値リストVLを更新しないので、グローバル項目値番号GNoも更新する必要がない。【０１０７】
GOrdの更新は、削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバル順序番号を削除される個数分だけ引き下げることによって行われる。本例では、最初に、ＰＭＭ−０のGOrd＝２と、ＰＭＭ−１のGOrd＝３と、を削除し、次に、グローバル順序番号が削除されたＰＭＭ内では、削除されたグローバル順序番号よりも後方に格納されているグローバル順序番号を前方へ移動する。ＰＭＭ−０では、GOrd＝２は末尾のグローバル順序番号であるため、グローバル順序番号の移動は行われないが、ＰＭＭ−１では、削除されるGOrd＝３の後方にGOrd＝４が存在するので、このGOrd＝４を１個分だけ前方へ移動させる。さらに、残ったグローバル順序番号は、当該グローバル順序番号よりも前方に削除されたグローバル順序番号が存在する場合、その削除された個数分だけグローバル順序番号の値を小さくする（降順の場合）。図１８は、本発明の実施の形態にかかるレコード削除処理の説明図であり、同図には、グローバル順序番号GOrdが更新される様子が示されている。【０１０８】
OrdSetの更新は、削除されたGOrdと同じ場所にあるOrdSetを削除し、さらに、OrdSetが削除されたＰＭＭ内では、削除されたOrdSetよりも後方に格納されいてるOrdSetは、削除された個数分だけ前方へ移動されると共に、削除された個数分だけ値が減少させられる。図１８には、OrdSetが更新される様子も示されている。【０１０９】
最後に、ポインタ配列VNoは、「性別」、「年齢」、「身長」及び「体重」の全ての項目に関して、削除されるレコードに対応したOrdSetにより指定されたVNoを削除し、VNoが削除されたＰＭＭ内では、削除されたVNoよりも後方に格納されいてるVNoは、削除された個数分だけ前方へ移動される。図１８には、VNoが更新される様子も示されている。【０１１０】
以上の処理によって、図１９に示されるようなレコード削除後の表形式データが得られる。【０１１１】
［レコード挿入処理］
例えば、図１９に示された表形式データのうち、ＰＭＭ−１に２個のレコードを挿入する場合に関して、本発明の実施の形態にかかるレコード挿入処理を説明する。本実施の形態によれば、レコードの挿入処理は、挿入するレコードの格納領域を確保する処理であり、挿入するレコードの項目値を所定の値とすることにより処理の高速化を図っている。例えば、挿入されるレコードの各項目の仮の項目値には、そのレコードが挿入されるＰＭＭ内に保持されている最小の項目値を使用する。【０１１２】
レコード挿入処理は、挿入対象となるレコードの挿入位置を特定するステップと、前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、により構成される。【０１１３】
図１９の表形式データのＰＭＭ−１に、現在存在するレコードは、GOrd＝２のレコード１つだけであるが、この表形式データは、図１７の表形式データからレコードを削除することにより生成された表形式データであるため、ＰＭＭ−１には、削除されたレコードの項目値、即ち、「性別」＝女性、「年齢」＝１６、「身長」＝１７２及び「体重」＝４８も存在している。このとき、ＰＭＭ−１に保持されている最小の項目値は、
「性別」＝男性、「年齢」＝１６、「身長」＝１７２、「体重」＝４８
である。したがって、ＰＭＭ−１に挿入されるレコードの仮の項目値は、
「性別」＝男性、「年齢」＝１６、「身長」＝１７２、「体重」＝４８
である。図２０は、本発明の実施の形態にかかるレコード挿入処理の説明図である。同図では、挿入されるべきデータが太字、イタリック体で示されている。レコード挿入処理の手順の一例は次の通りである。【０１１４】
（手順１）レコードを挿入する位置に、GOrd、OrdSet、VNoを作成する。【０１１５】
（手順２）作成されたGOrdには、その作成された位置に対応した値をセットする。本例では、ＰＭＭ−１内の１番目と２番目の位置にレコードが挿入されるので、その位置に対応したGOrdの値、２と３がセットされる。また、ＰＭＭ−１内で挿入されたレコードよりも後方に順序付けられているレコードのGOrdは、挿入されたレコードの個数分だけインクリメントされる。【０１１６】
（手順３）作成されたOrdSetには、ＰＭＭ内でそのOrdsetが作成された位置に対応した値をセットする。本例では、ＰＭＭ−１内の１番目と２番目の位置にレコードが挿入されるので、その位置に対応したOrdSetの値、０と１がセットされる。また、ＰＭＭ−１内で挿入されたレコードよりも後方に順序付けられているレコードのOrdSetは、挿入されたレコードの個数分だけインクリメントされる。【０１１７】
（手順４）作成されたVNoには、０をセットする。作成されたレコードの項目値は最小の項目値であるため、VNoは０に固定される。【０１１８】
以上の処理によって、図２１に示されるようなレコード挿入後の表形式データが得られる。また、挿入されたレコードの値は、後述のデータ上書き処理によって所望の値にセットすることができる。【０１１９】
尚、上記の例では、VNoに一番小さい値０をセットしているが、例えば、ブランクのままでもよい。【０１２０】
また、上記の例では、ＰＭＭ−１に１行以上のレコードが存在しているので、挿入されるレコードの項目値として、既存のデータのうちの最小の項目値を使用しているが、レコードを挿入するＰＭＭにデータが存在しない場合には、例えば、グローバル項目値番号GVNo＝０となる最小の項目値を使用してデータを作成することができる。この場合もVNoは０であり、VLの値は全てのＰＭＭに保持されている項目値のうちの最小値である。【０１２１】
［データ上書き処理］
上記のレコード挿入処理で挿入されたデータは、所定の値にセットされているので、セットされた所定の値を実際に所望のデータで書き換えることが必要になる。そこで、次に、このようなデータの書き換えを行う本発明の実施の形態にかかるデータ上書き処理を説明する。図２２は、図１５に示された表形式データの一部、具体的には、ＰＭＭ−０の２番目のレコード及び３番目のレコードの身長と、ＰＭＭ−１の１番目のレコードの身長を上書きする例の説明図である。図２３は、本発明の実施の形態にかかるデータ上書き処理のフローチャートである。【０１２２】
データ上書き処理は、ステップ２３０１で、上書きするデータ配列をコンパイルする。具体的には、上書き対象となるレコードを特定し、上書きデータを設定し、上書きデータを表現する項目値番号と項目値の組を生成する。図２４は、上書きするデータを各ＰＭＭでコンパイルする処理の説明図である。同図には、ＰＭＭ−０における処理が示されている。【０１２３】
次に、ステップ２３０２で、値リストVLがマージされる。生成された項目値番号と項目値の組をマージすることにより、上書き対象となるレコードを含むローカルな情報ブロックの値リストを生成する。図２５Ａ〜図２５Ｄは、上書きデータと元データをマージする処理の説明図である。マージ処理では、最初に、上書きデータのVLの位置を示すP1と、元データのVLの位置を示すP2と、マージにより生成される新しい値リストVLの位置を示すポインタP3を０に初期化する。【０１２４】
図２５Ａのマージ処理の手順１では、P1とP2を比較し、P2が小さいので、P2が指定するConv.の位置０にP3の値０を格納する。次に、P2が指定するVLの値１５９を、新VLに格納する。続いて、P2、P3をインクリメントする。ここで、配列Conv.は、対応する値が新VLに格納される位置を表している。例えば、元データのVLの先頭の値１５９に対応するConv.の値は０であるので、項目値１５９は新VLの先頭の値である。【０１２５】
図２５Ｂのマージ処理の手順２では、P1とP2を比較し、P1が小さいので、P1が指定するConv.の位置０にP3の値１を格納する。次に、P1が指定するVLの値１６０を、新VLに格納する。続いて、P1、P3をインクリメントする。【０１２６】
図２５Ｃのマージ処理の手順３では、P1とP2を比較し、P2が小さいので、P2が指定するConv.の位置１にP3の値２を格納する。次に、P2が指定するVLの値１６８を、新VLに格納する。続いて、P2、P3をインクリメントする。【０１２７】
以下同様にVLのマージ処理の手順を続けると、図２５Ｄに示されるようなマージ結果が得られる。【０１２８】
以上のVLのマージ処理の説明では、新しいVLを同時に生成しているが、上書きデータのVL及び対応したConv.と元データのVL及び対応したConv.から、新VLを生成することができる。【０１２９】
次に、ステップ２３０３では、上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列VNoを更新する。図２６Ａ〜Ｃは、ポインタ配列を更新する処理の説明図である。【０１３０】
最初に、図２６Ａに示されるように、上書きデータのVNoと元データのVNoをそれぞれ対応したConv．を利用して、新VLに対応したVNoへ変換する。例えば、上書きデータの配列VNoのレコード０に対応する位置には１が格納されているので、レコード０の現在のVLの項目値番号は１である。この現在VLの項目値番号１は、配列Conv.を参照すると、新VLの項目値番号４に対応していることがわかる。そこで、VNoのレコード０に対応する要素の値を１から４へ変換する。以下同様にして、上書きデータの全てのレコードと、元データの全てのレコードについて、VNoの値を変換する。【０１３１】
次に、図２６Ｂに示されるように、VLを新VLに置き換え、上書きデータのVNoを元データのVNoの上書きすべき位置へ転送する。これにより、図２６Ｃに示されるような新しいVNoとVLが完成する。【０１３２】
ＰＭＭ−２についても同様にマージ処理を行うと、図２２の表形式データは、図２７に示されるような表形式データに変換されている。本例の上書き処理では、「身長」のデータが書き換えられるので、「身長」についてのグローバル項目値番号GVNoは再構築しなければならない。【０１３３】
そこで、最後に、ステップ２３０４で、グローバル項目値番号GVNoを再構築する。具体的には、各処理モジュールが論理的に環状に接続された他の処理モジュールへ自処理モジュールの値リストを送信し、他の処理モジュールから他の処理モジュールの値リストを受信し、自処理モジュールの値リストと他の処理モジュールの値リストとを比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で新しいグローバルな項目値番号を付与する。これは、上述の順序番号付与処理に対応している。これにより、グローバルな情報ブロックのデータを上書きすることができる。図２８は、本例のデータ上書き処理によって完成した表形式データの説明図である。【０１３４】
［スウィープ処理］
上述のレコード削除処理やデータ上書き処理では、削除されたレコードに対応した項目値や、上書き前の元データに対応した項目値がそのまま残されているので、VL及びGVNoの中に実際には使用されていないデータが含まれることがある。このような使用されないデータは消去できることが望ましい。そこで、本発明によれば、不要なデータを除去するスウィープ処理が提供される。図２９Ａ、Ｂは、本発明の実施の形態にかかるスウィープ処理の説明図である。図２９Ａ、Ｂに示されるように、このスウィープ処理によれば、VLとGNoがコンデンスされ、VNoが更新される。【０１３５】
このスウィープ処理では、ローカルな情報ブロックの値リストVLに格納されている項目値のうち現在のポインタ配列VNoの要素によって指定されている現在の項目値番号に対応した項目値が現在の項目値番号の順序に格納されるように値リストを更新し、次に、更新された値リストに格納されている項目値を指定するように、現在のポインタ配列に格納される現在の項目値番号を更新する。値リストを更新することにより、使用されないグローバル項目値番号GVNoも消去される。これにより、グローバルな情報ブロックの不要なデータを除去する。【０１３６】
図３０は本発明の実施の形態にかかるスウィープ処理のフローチャートである。図３１Ａ〜Ｈは、それぞれ、図２９Ａ、Ｂに示された例に基づく、このスウィープ処理の進行状態の説明図である。【０１３７】
ステップ３００１：最初にフラグ配列Flagを生成する。FlagはVL（及びGVNo）と同じサイズの整数配列であり、要素を０で初期化する。【０１３８】
ステップ３００２：VNoが指すアドレスのFlag配列の要素（図３１Ｂにイタリック体で示されている）を０から１に変更する。フラグの値は０又は１である。【０１３９】
ステップ３００３：Flagが１の位置に対応するVLの値（図３１Ｃにイタリック体で示されている）を、新VLへ先頭から順番に入れる。【０１４０】
ステップ３００４：Flagが１の位置に対応するGVNoの値（図３１Ｄにイタリック体で示されている）を、新GVNoの先頭から順に入れる。【０１４１】
ステップ３００５：Flagを累計数化し、１段後方へ移動する。累計数化したFlagはFlag'のように表す。Flagを累計数化したFlag'は、図３１Ｅに示されている。【０１４２】
ステップ３００６：最後に、Flag'を参照して、VNoを変換する。図３１Ｆ〜Ｈには、VNoの変換処理が示されている。例えば、現在のVNoの先頭の要素VNo［０］＝２に対して、配列Flag'の３番目の要素Flag'［２］（太字、イタリック体で示されている）を参照すると、値は１であるので、VNo［０］に１をセットする（図３１Ｆに２→１として示されている）。【０１４３】
以上の処理により、図２９Ａのスウィープ前のデータは図２９Ｂのスウィープ後のデータに変換される。【０１４４】
尚、このスウィープ処理では、使用されるGVNoの値は、昇順（又は降順）を保つが、離散的な値になる可能性がある。GVNoは、昇順（又は降順）を維持する限り、離散的であっても、本発明によるグローバルな情報ブロックを操作して、検索、ソート、集計などの処理を行うことができる。勿論、必要に応じて、GVNoが連続値になるようにGVNoを再構築することができる。GVNoの再構築は、上述の順序番号付与処理を用いて実現することができる。【０１４５】
このスウィープ処理は自動的に行ってもよく、或いは、ユーザからの要求に応じて行ってもよい。【０１４６】
［データ再配置］
データ再配置とは、表形式データが複数の処理モジュールで分掌管理されているときに、どのレコードをどの処理モジュールが保持するかというデータの割付を変更することである。このデータ再配置は、表形式データの検索、ソート、集計などの処理結果をディスク装置などに出力するとき、表形式データの全部又は一部を独立させて別の表形式データとして管理するときなどに要求される。例えば、表形式データをシーケンシャルなデバイスへ出力する際には、この表形式データは情報処理システム上でもシーケンシャルに配置されている方が望ましい。【０１４７】
本発明の実施の形態にかかるデータ再配置処理は、グローバル順序番号GOrdには全ての処理モジュールの間で連続した昇順の番号を割り振り、OrdSetには各処理モジュール内で０から始まる昇順の番号を割り振る。【０１４８】
図３２は本発明の実施の形態にかかるデータ再配置処理のフローチャートである。このデータ再配置処理が実行される情報処理システムは、論理的に環状に接続された複数の処理モジュールを含み、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備している。ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む。各処理モジュールの表形式データのレコードには、複数の処理モジュール間で一意に決まるグローバルな順序番号GOrdが割り当てられ、各処理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグローバルな項目値番号GVNoが付与されている。この情報処理システムは、次のような手順で再配置処理を実行する。【０１４９】
ステップ３２０１：各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定する。【０１５０】
ステップ３２０２：新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき新しいレコードに割り当てる。【０１５１】
ステップ３２０３：各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、自処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信する。【０１５２】
ステップ３２０４：各処理モジュールが他の処理モジュールから他の処理モジュールの現在のグローバルな順序番号と、対応した現在の値リスト中の項目値と、を受信する。【０１５３】
ステップ３２０５：各処理モジュールが、他の処理モジュールから受信した現在のグローバルな順序番号の中で自処理モジュールに再配置されるべき新しいレコードに割り当てられた新しいグローバルな順序番号と一致する現在のグローバルな順序番号に対応した項目値を一時的な値リストとしてメモリに記憶する。【０１５４】
ステップ３２０６：各処理モジュールが、新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、一時的な値リスト中の項目値を新しい項目値番号の順序に格納した新しい値リストと、を生成する。【０１５５】
ステップ３２０７：各処理モジュールが論理的に環状に接続された他の処理モジュールへ自処理モジュールの新しい値リストを送信する。【０１５６】
各処理モジュールが他の処理モジュールから他の処理モジュールの新しい値リストを受信する。【０１５７】
各処理モジュールが自処理モジュールの新しい値リストと他の処理モジュールの新しい値リストとを比較し、自処理モジュールの新しい値リストの項目値に、複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与する。【０１５８】
この手順により、グローバルな情報ブロックのデータを再配置することができる。【０１５９】
例えば、図１４及び１５に示されるような表形式データを、「年齢」が２５歳以下という条件で検索し、「年齢」の昇順にソートした検索・ソート結果を再配置する場合を考える。図３３Ａ〜Ｃは検索・ソート後の表形式データの説明図であり、図３３Ａは検索・ソート前のデータ一覧、図３３Ｂは検索・ソート後のデータ一覧、図３３Ｃは分掌管理されている検索・ソート処理後の表形式データを表している。【０１６０】
この例では、全体で８行（８個のレコード）が存在し、処理モジュールＰＭＭの個数は４個であるので、各モジュールに２行ずつ配置する。以下の説明では、「身長」の項目に関する再構築を説明するが、他の項目についても同様に再構築できる。【０１６１】
データ再配置処理は、（手順１）新しいGOrdとOrdSetを生成する手順と、（手順２）GOrdとVLを転送し、各処理モジュールに収容する手順と、（手順３）VLをコンパイルする手順に大別される。【０１６２】
手順１：データは全体で８行あり、モジュール数は４個であるので、各モジュールに２行ずつ格納することとし、生成先に新しいGOrdとOrdSetを生成し、これらと同じサイズの値格納配列を生成する。このとき、各モジュールに配置される行数が分かっているので、GOrdは自明であり、OrdSetも各モジュール内で自明である。具体的には、データ再配置の計算式を全ての処理モジュールに通知することによって、各処理モジュールはGOrdを知ることができる。【０１６３】
図３４Ａ、Ｂは、データ再配置処理におけるGOrdとOrdSetの生成処理の説明図である。【０１６４】
手順２：各ＰＭＭからGOrdと値を他のＰＭＭへ送出する。ここで、GOrdは昇順であり、かつ、ユニークである。各ＰＭＭは、他のＰＭＭから送出されたGOrdと値を受信し、自ＰＭＭ内のGOrdとマッチングするGOrdに対応した値を値格納配列に収容する。図３５Ａ〜Ｃは、データ再配置処理におけるデータ転送と値格納処理の説明図である。【０１６５】
データ転送は、様々な方法で実現できる。例えば、処理モジュール間で相互に、即ち、送信側と受信側のペアを決めてデータを送信してもよく、或いは、環状に接続されたモジュール間で環状にデータを転送してもよい。【０１６６】
手順３：各処理モジュールの生成先に作成された値格納配列をコンパイルすることにより、「身長」に関して、各処理モジュールにポインタ配列VNoと値リストVLを生成すると共にグローバル項目値番号GVNoを付与する。例えば、ＰＭＭ−０は、値格納配列に格納されている値１７２と１６８を昇順に並べ換え、値リストVLを生成する。これに応じて、ポインタ配列VNoに１、０の順に値をセットすることができる。全ての処理モジュールが同様に値リストVLとポインタ配列VNoを生成すると、次に、上述の順序番号付与処理を用いてグローバル項目値番号GVNoを付与することができる。図３６は、このようなデータ再配置処理におけるVLコンパイル処理の説明図である。【０１６７】
他の項目も同様に再配置処理することによって図３７に示すような表形式データを得ることができる。【０１６８】
［ＳＩＭＤ型並列処理］
並列化のアルゴリズムが稚拙である場合、ＳＩＭＤを採用して所望の結果を得るためのプログラムの開発が困難であり、開発できたとしても、そのプログラムの自由度は低い。そこで、ＳＩＭＤを採用するためには、ＳＩＭＤに適した優れたアルゴリズムを開発する必要がある。この点、本実施の形態によるアルゴリズムは、
（１）処理の実行にあたって条件分岐がない。但し、検索処理の場合には、条件分岐が行われる可能性があるが、単純な条件分岐である。
（２）昇順のリストを相互に比較するなど、１つの命令で実行できる処理（ステップ数、クロック数）の占める割合が高い。
（３）すべての処理モジュールが平等に同じ役割を持つ。処理モジュール毎に違う役割があると、単一命令で処理を実現できない。
という点でデータ構造及びアルゴリズムが優れている。したがって、本実施の形態では、ＳＩＭＤを採用する際にプログラムが簡単化され、プログラムの開発の容易性やプログラムの高い自由度を確保することができる。【０１６９】
［システム構成］
本発明にかかる情報処理システムは、例えば、フロントエンドとなる端末装置と、リング状のチャネルを介して接続され、端末装置からの命令を、それぞれのＰＭＭが受理することにより、ＰＭＭにおいて、上述したコンパイル、データ更新、データ再配置の処理が実行できる。また。各ＰＭＭはパケットを何れかのバスを利用して送出すればよく、ＰＭＭ間の同期等を外部から制御する必要もない。【０１７０】
また、制御装置には、コンパイルなどの繰り返し演算のためのハードウェア構成を備えたアクセラレータチップのほか、これに加えて、汎用ＣＰＵを含めても良い。汎用ＣＰＵは、端末装置からチャネルを介して伝達された命令を解釈し、アクセラレータチップに必要な指示を与えることができる。【０１７１】
さらに、制御装置、特に、その中のアクセラレータチップには、順序番号配列、グローバル順序番号配列など作業に必要な種々の配列を収容するためのレジスタ群が設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必要な値をロードしてしまえば、コンパイルなどにかかる上述した処理演算中には、制御装置はメモリにアクセスすることなく、レジスタから値を読み出し、或いは、レジスタに値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる（演算処理前のロード、および、処理結果の書き込み）ことができ、処理時間を著しく短縮することが可能となる。【０１７２】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。【０１７３】
尚、前記実施の形態においては、ＰＭＭを、一方が時計回りにパケットを伝送する第１のバス（第１の伝送路）、他方が反時計回りにパケットを伝送する第２のバス（第２の伝送路）にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。【０１７４】
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するＰＭＭを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、ＰＭＭの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序番号配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。【０１７５】
また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。【０１７６】
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の３つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、３つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関する検索、ソートおよび集計を実現することができる。【０１７７】
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。
【図面の簡単な説明】
【０１７８】
【図１】図１は、従来のデータ管理機構の説明図である。
【図２】図２は、従来のデータ管理機構の説明図である。
【図３】図３は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。
【図４】図４は、本発明の実施の形態にかかるＰＭＭの構造の一例を示す図である。
【図５】図５は、表形式データの一例の説明図である。
【図６】図６は、従来の表形式データの記憶構造の説明図である。
【図７】図７は、本発明の実施の形態にかかる表形式データの記憶構造の一例の説明図である。
【図８】図８は、本発明の実施の形態にかかる順序番号付与方法のフローチャートである。
【図９】図９Ａ〜Ｄは、それぞれ、本発明の実施の形態にかかる第１の順序番号付与方法の説明図（その１）である。
【図１０】図１０Ａ〜Ｄは、それぞれ、本発明の実施例の形態にかかる第１の順序番号付与方法の説明図（その２）である。
【図１１】図１１は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第１の例の説明図である。
【図１２】図１２は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第２の例の説明図である。
【図１３】図１３は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第３の例の説明図である。
【図１４】図１４は、単一の処理モジュールで管理される表形式データの説明図である。
【図１５】図１５は、複数の処理モジュールで分掌管理される表形式データの説明図である。
【図１６】図１６は、本発明の実施の形態にかかるコンパイル処理のフローチャートである。
【図１７】図１７は、レコード削除処理の対象となる表形式データの説明図である。
【図１８】図１８は、レコード削除処理の一例の説明図である。
【図１９】図１９は、レコード削除処理後の表形式データの説明図である。
【図２０】図２０は、レコード挿入処理の一例の説明図である。
【図２１】図２１は、レコード挿入処理後の表形式データの説明図である。
【図２２】図２２は、データ上書き処理の一例の説明図である。
【図２３】図２３は、本発明の実施の形態にかかるデータ上書き処理のフローチャートである。
【図２４】図２４は、上書きデータを処理モジュール内でコンパイルする処理の説明図である。
【図２５】図２５Ａ〜Ｄは、それぞれ、上書きデータと元データをマージする処理の説明図である。
【図２６】図２６Ａ〜Ｃは、それぞれ、ポインタ配列を更新する処理の説明図である。
【図２７】図２７は、データ上書き処理中の表形式データの説明図である。
【図２８】図２８は、データ上書き処理後の表形式データの説明図である。
【図２９】図２９Ａ、Ｂは、本発明の実施の形態にかかるスウィープ処理の説明図である。
【図３０】図３０は、本発明の実施の形態にかかるスウィープ処理のフローチャートである。
【図３１】図３１Ａ〜Ｈは、スウィープ処理の進行状態の一例の説明図である。
【図３２】図３１は、本発明の実施の形態にかかるデータ再配置処理のフローチャートである。
【図３３】図３３Ａ〜Ｃは、それぞれ、分掌管理されている検索・ソート処理後の表形式データの説明図である。
【図３４】図３４Ａ、Ｂは、データ再配置処理におけるGOrdとOrdSetの生成処理の説明図である。
【図３５】図３５Ａ〜Ｃは、データ再配置処理におけるデータ転送と値格納処理の説明図である。
【図３６】図３６は、データ再配置処理におけるVLコンパイル処理の説明図である。
【図３７】図３７は、データ再配置処理後の表形式データの説明図である。
【符号の説明】
【０１７９】
３２        ＰＭＭ
３４        第１のバス
３６        第２のバス
４０        制御回路
４２        バスＩ／Ｆ
４４        メモリ
４６        バンク
【図１】
0004673299.tif 000002
【図２】
0004673299.tif 000003
【図３】
0004673299.tif 000004
【図４】
0004673299.tif 000005
【図５】
0004673299.tif 000006
【図６】
0004673299.tif 000007
【図７】
0004673299.tif 000008
【図８】
0004673299.tif 000009
【図９】
0004673299.tif 000010
【図１０】
0004673299.tif 000011
【図１１】
0004673299.tif 000012
【図１２】
0004673299.tif 000013
【図１３】
0004673299.tif 000014
【図１４】
0004673299.tif 000015
【図１５】
0004673299.tif 000016
【図１６】
0004673299.tif 000017
【図１７】
0004673299.tif 000018
【図１８】
0004673299.tif 000019
【図１９】
0004673299.tif 000020
【図２０】
0004673299.tif 000021
【図２１】
0004673299.tif 000022
【図２２】
0004673299.tif 000023
【図２３】
0004673299.tif 000024
【図２４】
0004673299.tif 000025
【図２５】
0004673299.tif 000026
【図２６】
0004673299.tif 000027
【図２７】
0004673299.tif 000028
【図２８】
0004673299.tif 000029
【図２９】
0004673299.tif 000030
【図３０】
0004673299.tif 000031
【図３１】
0004673299.tif 000032
【図３２】
0004673299.tif 000033
【図３３】
0004673299.tif 000034
【図３４】
0004673299.tif 000035
【図３５】
0004673299.tif 000036
【図３６】
0004673299.tif 000037
【図３７】
0004673299.tif 000038