JPWO2005106713A1 - 情報処理方法及び情報処理システム - Google Patents

情報処理方法及び情報処理システム Download PDF

Info

Publication number
JPWO2005106713A1
JPWO2005106713A1 JP2006512783A JP2006512783A JPWO2005106713A1 JP WO2005106713 A1 JPWO2005106713 A1 JP WO2005106713A1 JP 2006512783 A JP2006512783 A JP 2006512783A JP 2006512783 A JP2006512783 A JP 2006512783A JP WO2005106713 A1 JPWO2005106713 A1 JP WO2005106713A1
Authority
JP
Japan
Prior art keywords
processing module
value
item
list
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006512783A
Other languages
English (en)
Other versions
JP4673299B2 (ja
Inventor
古庄 晋二
晋二 古庄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Turbo Data Laboratories Inc
Original Assignee
Turbo Data Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Turbo Data Laboratories Inc filed Critical Turbo Data Laboratories Inc
Publication of JPWO2005106713A1 publication Critical patent/JPWO2005106713A1/ja
Application granted granted Critical
Publication of JP4673299B2 publication Critical patent/JP4673299B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

複数のプロセッサ間で大量のデータを分掌管理するための情報処理方法である。表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に項目値が格納されている値リストと、を含むローカルな情報ブロックを保持する各処理モジュールは、自処理モジュールの表形式データのレコードに、複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当て、自処理モジュールの値リストと他の処理モジュールの値リストとを比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与する。

Description

本発明は、大量のデータを処理する情報処理方法及び情報処理装置に係わり、特に、並列コンピュータのアーキテクチャを採用した情報処理方法及び情報処理システムに関する。
従来、大量の情報を蓄積し、蓄積された情報を検索、集計するデータ処理が行われている。これらのデータ処理は、例えば、CPUと、メモリと、周辺機器インタフェースと、ハードディスクのような補助記憶装置と、ディスプレイ及びプリンタのような表示装置と、キーボード及びマウスのような入力装置と、電源ユニットとがバスを介して接続された周知のコンピュータシステムで使用され、特に、市場で容易に入手可能なコンピュータシステムで動作可能なソフトウェアとして提供される。上記の検索・集計等のデータ処理を行うため、特に、大量のデータを蓄積する各種データベースが知られている。大量のデータの中でも、特に、表形式で表現され得るデータを処理したいという要求は強い。
大量のデータを効率よく検索、集計できるか否かは、大量のデータを格納する形式に依存する。従来、一般的な格納技術として、所謂「行単位」格納技術及び「項目単位」格納技術が知られている。行単位格納技術の場合、レコード番号毎に構成された性別、年齢及び職業の項目値の組がレコード番号順に、論理的アドレスが増加する順番でディスク上に格納されている。一方、項目単位格納技術の場合、項目毎にレコード番号順に、項目値が、論理的アドレスが増加する方向にディスク上に格納されている。
上記の従来技術の場合、全てのレコード番号の全ての項目に対する項目値が、そのまま、(レコード番号の1次元と、それ以外の項目値の1次元とからなる)2次元のデータ構造に格納されている。以下、このようなデータ構造を特に「データ表」と称する。従来技術の場合、蓄積されたデータを検索、集計する際には、このデータ表をアクセスすることにより行われている。
また、項目の値をそのまま項目値として格納する方法の他に、値をコード変換して、項目値としてコードを格納する方法も知られている。この場合でも、コード変換されたコードが項目値としてデータ表に格納されている点に変わりはない。
上記従来技術のデータ表タイプのデータ構造を用いて格納された大量のデータを検索、集計する場合、このようなデータ表をアクセスするためのアクセス時間に起因して検索、集計の処理時間が長くなるという問題点がある。
また、データ表には少なくとも以下に述べる本質的な欠点がある。
(1)データ表はサイズが巨大化しやすく、しかも例えば項目毎等に(物理的に)分割することが困難である。実際上、集計・検索のためにデータ表をメモリなどの高速な記憶装置上に展開することは困難である。
(2)データ表は、各項目値を同時にソートした形で保持できない。
(3)データ表には、同一値が何度も出現する。
これに対して、本願発明者は、大量のデータの検索・集計のスピードを大幅に向上させるため、従来のデータ表の機能を有すると共に、データ表に基づくデータ構造の上記問題点が解決されたデータ管理機構を設けることにより、表形式データを検索・集計・ソートする方法及びその方法を実施する装置を提案している(例えば、特許文献1を参照。)。
提案された表形式データを検索・集計する方法及び装置は、通常のコンピュータシステムで使用可能な新規のデータ管理機構を導入する。このデータ管理機構は原則として値管理テーブルと、値管理テーブルへのポインタ配列とを有する。
図1は、従来のデータ管理機構の説明図である。同図には、値管理テーブル110と値管理テーブルへのポインタ配列120とが示されている。値管理テーブル110とは、表形式データの各項目に対し、その項目に属する項目値が順序付け(整数化)された項目値番号の順番に、上記項目値番号に対応した項目値(符号111参照)と、上記項目値に関連した分類番号(符号112参照)とが格納されたテーブルである。値管理テーブルへのポインタ配列120とは、表形式データのある列(即ち、項目)の項目値番号、即ち値管理テーブル110へのポインタが表形式データのレコード番号順に格納された配列である。
値管理テーブルへのポインタ配列120と値管理テーブル110とを組み合わせることにより、あるレコード番号が与えられたとき、所定の項目に関する値管理テーブルへのポインタ配列120からそのレコード番号に対応して格納された項目値番号を取り出し、次に、値管理テーブル110内でその項目値番号に対応して格納された項目値を取り出すことにより、レコード番号から項目値を得ることができる。したがって、従来のデータ表と同様に、レコード番号(行)と項目(列)という座標を用いて全てのデータ(項目値)を参照することができる。
このように表形式データの項目中のある項目に対して生成された値管理テーブルと、値管理テーブルへのポインタ配列とを含むデータ管理機構は、以下の説明では、特に情報ブロックと呼ぶ。
従来のデータ表は、レコードに対応した行と、項目に対応した列とからなる座標を用いて全てのデータを一体的に管理しているのに対して、この情報ブロックは、表形式の列、即ち、項目毎にデータを完全に分離している点に特徴がある。このデータ管理機構によれば、大量のデータが項目毎に分離されているので、検索・集計に必要な項目に関するデータのみをメモリ等の高速な記憶装置上に取り込むことが可能であり、その結果としてデータへのアクセス時間が短縮されるので、検索・集計の処理が高速化され、項目数が非常に多いデータの場合でも、パフォーマンスを低下させることなく取り扱えるようになる。
また、この情報ブロックの場合、項目値は値管理テーブルに格納され、値が存在する位置を示すレコード番号は値管理テーブルへのポインタ配列に関連付けられているので、項目値がレコード番号順に並べられている必要がない。したがって、検索・集計に適するようにデータを項目値に関してソートすることができるようになる。これにより、目的の値と一致する項目値がデータ中に存在するか否かの判定が高速に行えるようになる。その上、項目値は項目値番号と対応しているので、項目値が長いデータや文字列等であっても整数として取り扱うことができる。
さらに、このデータ管理機構によれば、値管理テーブル110の全ての項目値番号は異なる項目値と対応しているので、特定の値を有する項目値を含むレコードを抽出する場合に必要とされる特定の値と項目値との比較の回数は、最大で項目値の種類の数、即ち、項目値番号の個数であり、比較演算の回数が著しく低減され、検索・集計の高速化が図られる。その際には、ある項目値が該当するかどうかを調べた結果を格納する場所が必要であるが、例えば分類番号112をその格納場所として使用することができる。
図2には、項目値を格納した項目値配列211と、分類番号を格納した分類番号配列212と、存在数を格納した存在数配列214とからなる値管理テーブル210を含む情報ブロックが示されている。存在数配列214には、ある項目に関する各項目値が全データ中に何個ずつ存在するかを示す数、換言すれば、所定の項目値を有するレコードの個数が格納される。このような存在数配列214を値管理テーブル210に準備しておくことにより、検索・ソート・集計の際に必要とされる「どのようなデータが(いくつ)存在するか?」、「このデータは上から何番目のデータであるか?」、或いは、「上から○○番目のデータは何か?」というような情報を直ちに得ることができるようになり、検索・ソート・集計の高速化が図れる。
しかし、このようなデータ管理機構においても、レコード数が増大するのにしたがって、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなるが、処理可能なデータ量は、利用されるハードウェア資源によって制限される。
大規模データの処理は、上記のような表形式データの情報処理以外の分野でも要求されている。社会全体のさまざまな場所にコンピュータが導入され、インターネットをはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積されるようになった。このような大規模データを処理するには、膨大な計算が必要で、そのために並列処理を導入しようと試みるのは自然である。
並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者(「共有メモリ型」)は、複数のプロセッサが1つの巨大なメモリ空間を共有する方式である。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。したがって、例えば10億個の浮動小数点変数の平方根を計算する際、単一CPUに対する加速比は、せいぜい100倍ということになる。経験的には、30倍程度が上限である。
後者(「分散メモリ型」)は、各プロセッサがそれぞれローカルなメモリを持ち、これらを結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込んだハードウェアシステムの設計が可能である。したがって、上記10億個の浮動小数点変数の平方根を計算する際の単一CPUに対する加速比を、数百〜数万倍とすることが可能である。
国際公開第WO00/10103号パンフレット
しかしながら、「分散メモリ型」の並列処理アーキテクチャにもいくつかの課題が存在する。
[第1の課題:巨大配列の分掌管理]
「分散メモリ型」の第1の課題は、データの分掌管理の問題である。
巨大なデータ(一般的には配列なので、以降、配列で説明する)は、1つのプロセッサの所有するローカルメモリに収容できるものではなく、必然的に複数のローカルメモリに分掌管理される。効率的かつ柔軟な分掌管理メカニズムを導入しないと、プログラムの開発および実行に際してさまざまな障害を抱え込むことになることは明らかである。
[第2の課題:プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、巨大配列にアクセスしようとすると、自己の所有するローカルメモリ上の配列要素に対しては速やかにアクセスできるものの、他のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を必須とする。このプロセッサ間通信はローカルメモリとの通信に比べ、極端にパフォーマンスが低く、最低でも100クロックかかると言われている。このため、ソート実施時には、巨大配列全域にわたる参照が実施され、プロセッサ間通信が多発するため、パフォーマンスが極端に低下する。
この問題点につき、より具体的に説明を加える。1999年現在、パソコンは、1〜数個のCPUを用いて、「共有メモリ型」として構成されている。このパソコンに使用される標準的なCPUは、メモリバスの5〜6倍程度の内部クロックで動作し、その内部に自動的な並列実行機能やパイプライン処理機能が装備されており、およそ1データを1クロック(メモリバス)で処理できる。
このため、「分散メモリ型」のマルチプロセッサシステムでは、プロセッサ数は多いのに、シングルプロセッサ(共有メモリ型)よりも100倍遅くなることになりかねない。
[第3の課題:プログラムの供給]
「分散メモリ型」の第3の課題は、多数のプロセッサにどうやってプログラムを供給するか、という問題である。
非常に多数のプロセッサに、別々のプログラムをロードし、全体を協調動作させる方式(MIMD:Multiple Instruction Stream, Multiple Data Stream)では、プログラムの作成、コンパイル、配信のために多大な負荷を要する。
その一方、多数のプロセッサを同一のプログラムで動作させる方式(SIMD:Single Instruction Stream, Multiple Data Stream)では、プログラムの自由度が減少し、所望の結果をもたらすプログラムが開発できない事態も想定される。
したがって、上記の従来の分散メモリ型の並列アーキテクチャに基づく情報処理技術では、プロセッサ間通信ができるだけ少なくなるように、大規模データをプロセッサ間で共有することなく、大規模データを個々のプロセッサ内に保持したまま、大規模データの処理を実現することが求められている。
そこで、本発明は、並列コンピュータのアーキテクチャを採用して大量のデータを情報処理する際に、複数のプロセッサ間でデータを分掌管理するための情報処理方法の提供を目的とする。
また、本発明は、上記の情報処理方法をコンピュータに実行させるためのプログラムの提供を目的とする。
更に、本発明は、上記の情報処理方法を実現する情報処理システムの提供を目的とする。
本発明は、表形式データの実体的要素である値リスト及びポインタ配列を個々の処理モジュールにローカルに保存し、複数の処理モジュール間では、データ自体ではなく、データの順序番号(又は、順位)という指標がグローバルに保持されるという分散メモリ型の並列処理アーキテクチャを採用している。また、本発明は、単一命令により種々のメモリに記憶されたデータを入出力し処理するように、処理と通信が統合されたアルゴリズムを採用している。
上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む、情報処理システムにおいて、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュールの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックを構築する情報処理方法が提供される。これにより、レコードに対応したグローバルな順序番号と、項目値に対応したグローバルな項目値番号を、複数の処理モジュール間で一意に決めることにより、グローバルな大量の表形式データを複数の処理モジュールで分掌管理するグローバルな情報ブロックを構築することが可能になる。
好ましい実施態様においては、前記グローバルな順序番号を割り当てるステップは、前記各処理モジュールの表形式データのレコードの順番を表す番号に、前記各処理モジュールに割り当てられたオフセット値を加算することにより、前記グローバルな順序番号を計算する。これにより、グローバルな順序番号は処理モジュール間で通信をしなくても一意に決めることができる。
好ましい実施態様においては、前記グローバルな項目値番号を付与するステップは、前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの値リストを受信し、前記他の処理モジュールから受信した値リスト中の項目値のうち、当該各処理モジュールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、当該各処理モジュールの値リスト中の項目値の項目値番号を該個数分だけ引き上げることにより前記グローバルな項目値番号を計算する。これにより、グローバルな項目値番号は、値リストの通信と統合した処理によって一意に決めることができる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
を有し、グローバルな情報ブロックのデータを削除する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意のレコードを削除することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、
を有し、グローバルな情報ブロックのデータを挿入する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の位置にレコードを追加することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、
前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの任意のレコードのデータを更新することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法が提供される。これにより、複数の処理モジュール間で分掌管理されている表形式データの不要なデータを消去し、メモリ使用効率、処理効率を高めることが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、情報処理システムにおいて、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法が提供される。これにより、アプリケーションの要求に応じて、処理モジュール間での表形式データの分掌の割り振りを自由に変更することが可能になる。
また、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を情報処理システムの処理モジュールのコンピュータに実行させるためのプログラムが提供される。
また、上記目的を達成するため、本発明によれば、上記本発明のプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
さらに、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を実行するように構成された処理モジュールを含む情報処理システムが提供される。
本発明によれば、分散メモリ型の並列処理アーキテクチャに基づいて、大量のデータを分掌管理することができる情報処理システムを提供することが可能となる。
[ハードウェア構成]
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図3は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。この実施形態では、処理モジュールは、プロセッサ付きメモリモジュール(以下、「PMM」と称する)により構成される。図3に示すように、この実施の形態においては、複数の処理モジュールを論理的に環状に接続するため、複数のプロセッサ付きメモリモジュールPMM32−0、PMM32−1、PMM32−2、・・・がリング状に配置され、隣接するメモリモジュール間を、時計回りにデータを伝達する第1のバス(たとえば、符号34−0、34−1参照)、および、反時計回りにデータを伝達する第2のバス(たとえば、符号36−0、36−1参照)が接続している。第1のバスおよび第2のバスでは、PMM間のパケット通信が実行される。本実施の形態において、このパケット通信が実行される伝送路(パケット伝送路)を、第1のバスおよび第2のバスと称する。
本実施の形態では、PMMを、一方が時計回りにパケットを伝送する第1のバス(第1の伝送路)、他方が反時計回りにパケットを伝送する第2のバス(第2の伝送路)にて、リング状に接続している。このような構成は、パケット伝送の遅延時間などを均一化することができるため有利である。
尚、処理モジュール間の物理的な接続形態は、本実施の形態に示されるような形態に限定されるものではなく、処理モジュールを論理的に環状に接続できる形態であればどのような形態でもよい。例えば、バス型、スター型などの種々の接続形態を採用することができる。
図4は、PMM32の構造の一例を示す図である。図4に示すように、各PMM32−iは、PMM間で共通の命令にしたがって、メモリのアクセス、演算の実行などを制御する制御回路40と、バスインタフェース(I/F)42と、メモリ44とを備えている。
メモリ44は、複数のバンクBANK0、1、・・・、n(符号46−0、・・・、n)を有し、それぞれに、後述する所定の配列を記憶できるようになっている。
また、制御回路40は、外部の他のコンピュータ等とのデータ授受が可能である。また、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにアクセスできるようにしても良い。
さらに、複数のプロセッサ付きメモリモジュールのメモリが同一のメモリ空間に存在していても構わない。この場合、パケット通信はメモリ参照で実現される。或いは、複数のプロセッサ付きメモリモジュールのプロセッサが物理的に同一のCPUであってもよい。
[表形式データ]
表形式データとは、情報の項目に対応した項目値を含むレコードの配列として表されるデータである。この表形式データは、例えば、ある項目(次元)のある項目値(次元値)毎に、別の項目の項目値(メジャー)を集計する処理の対象になる。ここで、メジャーの集計とは、メジャーの個数をカウントしたり、メジャーの総和を算出したり、メジャーの平均値を算出したりすることである。また、次元数は、2次元以上でも構わない。例えば、図5は、ある保育園における園児の性別・年齢・身長の論理的な表形式データである。ここで、性別の人数を求める処理や、性別・年齢別に身長の合計値を求める処理は、本発明を適用することにより実現される情報処理の一例としての集計処理である。
本発明は、このような表形式データの高速、並列的な情報処理を実現するためのデータ構造の構築技術、データの更新技術、及び、データの再配置技術を提供するものである。
[従来のデータの記憶構造]
図5に示された表形式データは、上述の国際公開第WO00/10103号に提案したデータ管理機構を用いることにより、単一コンピュータ内では図6に示されるようなデータ構造として記憶される。
図5に示すように、表形式データの各レコードの並び順の番号と、内部データの並び順の番号を対応付ける配列601(以下、この配列を「OrdSet」のように略記する。)には、表形式の各レコード毎に内部データの並び順番号が値として配置される。この例では、すべての表形式データが内部データとして表されるため、表形式データのレコード番号と内部データの並び順番号とは一致する。
例えば、性別に関しては、表形式データのレコード0に対応する内部データの並び順番号は、配列OrdSet601から「0」であることがわかる。並び順番号が「0」であるレコードに関する実際の性別の値、即ち、「男」又は「女」は、実際の値が所定の順序に従ってソートされた値リスト603(以下、値リストを「VL」のように略記する。)へのポインタ配列602(以下、ポインタ配列を「VNo」のように略記する。)を参照することによって取得できる。ポインタ配列602は、配列OrdSet601に格納されている並び順番号の順に従って、実際の値リスト603中の要素を指し示すポインタを格納している。これにより、表形式データのレコード「0」に対応する性別の項目値は、(1)配列OrdSet601からレコード「0」に対応する並び順番号「0」を取り出し、(2)値リストへのポインタ配列602から並び順番号「0」に対応する要素「1」を取り出し、(3)値リスト603から、値リストへのポインタ配列602から取り出された要素「1」によって指し示される要素「女」を取り出すことにより取得できる。
他のレコードに対しても、また、年齢及び身長に関しても同様に項目値を取得することができる。
このように表形式データは、値リストVLと、値リストへのポインタ配列VNoの組合せにより表現され、この組合せを、特に、「情報ブロック」と称する。図6には、性別、年齢及び身長に関する情報ブロックがそれぞれ情報ブロック608、609及び610として示されている。
単一のコンピュータが、単一のメモリ(物理的には複数であっても良いが、単一のアドレス空間に配置されアクセスされるという意味で単一のメモリ)であれば、当該メモリに、順序集合の配列OrdSet、各情報ブロックを構成する値リストVLおよびポインタ配列VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、その大きさに伴ってメモリ容量も大きくなるため、これらを分散配置できるのが望ましい。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが望ましい。
そこで、本実施の形態においては、複数のPMMが、重なることなくレコードのデータを分掌把握し、PMM同士のパケット通信により、高速な集計を実現している。
[本実施の形態によるデータ記憶構造]
図7は、本実施の形態によるデータ記憶構造の説明図である。同図では、図5及び図6によって示された表形式のデータが、一例として、PMM−0、PMM−1、PMM−2及びPMM−3の4個の処理モジュールに分散配置され、分掌把握されている。説明の便宜上、処理モジュールの個数は4個であるが、本発明は処理モジュールの個数によって限定されるものではない。
本実施の形態では、各PMMで分掌把握されているレコードを、PMM−0からPMM−3までの4個のPMMで掌握されているすべてのレコードの中で一意に順序付けることができるようにするため、各レコードにはグローバル・レコード番号が一意に割り当てられている。図7では、グローバル・レコード番号は「GOrd」として表されている。このグローバル・レコード番号GOrdは、各PMM内の配列OrdSetの各要素が、すべてのレコード中で何番目であるかを示している。ここで、配列OrdSetは、データ全体から各PMM内部への順序保存写像となるように定められているので、GOrdは昇順にすることができる。また、各PMM内において、GOrd配列(=グローバル順序配列)のサイズはOrdSet配列(順序配列)のサイズと一致している。
更に、本実施の形態では、各PMMで分掌把握されている項目値、即ち、値リストVL中の各値が、すべてのPMMで掌握されている項目値の中で何番目の位置にあるかを示すためのグローバル項目値番号が設けられる。図7では、このグローバル項目値番号は「GVNo」として示されている。値リストVLは値の順(例えば、昇順又は降順)に並べられているので、グローバル項目値番号GVNoも昇順(又は降順)に設定される。配列GVNoのサイズは、配列VLのサイズと一致している。各処理モジュールで個別に掌握されている項目値が全体の中で何番目であるかを識別することにより、各処理モジュールでの集計結果を全体として一つに統合することが可能になる。
尚、図7において、各PMMに割り当てられている値OFFSETは、当該PMMが分掌する先頭のレコードが、図6に示された一体的なレコードの中の何番目のレコードに対応しているかを示すためのオフセット値である。上述のように、各PMMの配列OrdSetは、データ全体から各PMM内部への順序保存写像となるように定められているので、このオフセット値OFFSETと当該PMMにおける配列OrdSetの要素の値を合計した値は、グローバル・レコード番号GOrdと一致する。好ましくは、このオフセット値が各PMMに通知され、各PMMはこのオフセット値OFFSETに基づいてグローバル・レコード番号を決定することができる。
各PMMのグローバル・レコード番号GOrd及びグローバル項目値番号GVNoは、予め各PMMの外部で計算して各PMMに設定することができるが、後述のコンパイル処理によって各PMM自体が設定することも可能である。
[グローバル集合配列Gordとグローバル項目値番号配列GNoについて]
次に、本実施の形態にて導入した配列GOrdおよび配列GVNoの意義について説明する。グローバル順序配列GOrdは、各PMMが掌握するローカルな表形式データを集合させたグローバルな表形式データ中、各PMMの掌握する表形式データの各レコードの位置(順位)を示している。即ち、本実施の形態では、グローバル順序配列GOrd及び順序配列OrdSetにより、レコードの位置情報を、グローバルな成分とローカルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能となるとともに、各PMMが単独で処理を実行することも可能となる。
以下の実施例の説明では、PMMが各項目の情報ブロックを保持するように構成されているが、PMMが表形式データをそのまま保持するような場合でも、上記GOrdは同様に機能する。
例えば、以下の実施例において後述のコンパイルが終了した状態で、グローバル順序配列GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式データ全体のビューを作成することができる。
[コンパイル処理の概要]
コンパイル処理は、各処理モジュールでデータを管理するために使用するグローバル・レコード番号GOrdとグローバル項目値番号GVNoを設定するための処理である。グローバル・レコード番号GOrdは、上述のオフセット値OFFSETを使用することにより簡単に設定することができる。一方、グローバル項目値番号GVNoは、各処理モジュールが個別に保持している値リストに基づいて、すべての処理モジュール間で共通に順序付けされる番号である。各処理モジュールは、この順序番号付与処理を用いることによってグローバル項目値番号GVNoを設定することが可能である。そこで、この順序番号付与処理について詳述する。
[順序番号付与処理]
本実施の形態による情報処理システムのように、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムでは、各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法、即ち、順序番号付与方法が必要である。
順序番号付与処理は、例えば、コンパイル処理において、グローバル項目値番号を設定する場合にも使用される。この順序番号付与処理は、同一値には唯一の番号しか付与しないことを特徴としている。したがって、このタイプの順序番号付与処理は、特に、同一値消去型の順序番号付与処理と称する。
図8は、実施の形態にかける順序番号付与方法のフローチャートである。同図に示されるように、各処理モジュールは、自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納する(ステップ801)。
次に、各処理モジュールは、自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する(ステップ802)。更に、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する(ステップ803)。
次に、各処理モジュールは、受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信し(ステップ804)、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する(ステップ805)。
続いて、各処理モジュールは、送信ステップ802において論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、ステップ2204とステップ2205を繰り返し実行する(ステップ806)。
この順序番号付与方法によれば、各処理モジュールは、他の処理モジュールが保持する値のリストを重複無く受け取り、自処理モジュールが保持する値にグローバルな順序番号を付与することができる。上述のように、各処理モジュールが予め順序付きの値のリストを保持している場合には、非常に効率的にグローバルな順序番号を付与することが可能である。なぜならば、値のリストが予め順序付けされている場合には、昇順(又は降順)の一方向に順序を比較するだけでよいからである。もちろん、各処理モジュールの保持する値のリストが順序付きでない場合でも同様の結果を得ることができる。その場合には、例えば、各処理モジュールは、他の処理モジュールから受信した値のリスト中の値と、自処理モジュールが保持している値のリスト中の値を、すべての組合せについて順番に比較して、各値よりも前に、即ち、上位に、順序付けされる値の個数をカウントして、各値の順序番号を更新すればよい。
本実施の形態の順序番号付与方法では、各処理モジュールは、他の処理モジュールから受信した値のリストを保存する必要はなく、自処理モジュールが保持している値のリストに順序を付けるだけで、すべての処理モジュールに共通の順序番号を付与することができる。
また、この順序番号付与方法は、他の処理モジュールからの値のリストの受信順に影響されないので、処理モジュール間の物理的な接続形態に全く依存しない。したがって、伝送路と順序番号更新回路を多重化することによって、更なる高速化を実現することができる。
図9A〜D及び図10A〜Dは、第1の順序番号付与処理の説明図である。図9A〜Dには、各PMMが次の段に接続されたPMMへ送信する値のリストがステップ毎に示されている。図10A〜Dには、各ステップで、PMMが前の段に接続されたPMMから受信した値のリストが示されている。この例では、初期状態として、PMM−0が値のリスト[1,3,5,6]を保持し、PMM−1が値のリスト[0,2,3,7]を保持し、PMM−2が値のリスト[2,4,6,7]を保持し、PMM−3が値のリスト[0,1,3,5]を保持している。
ステップ3の終了時点で、各PMMは、他のすべての処理モジュールからの値のリストを受信することができる。この時点で、自処理モジュールが保持している値のリストと、受信した値のリストを合わせることにより、すべての値の順序を決めることができる。更に、ステップ4の終了時点では、すべての値を重複無く受信できることが分かる。
この第1の順序番号付与処理では、処理モジュールは、図9A〜Dに示されるように、論理的に環状に接続され、各処理モジュールは自処理モジュール内に重複値を持たないリストを保持する。そして、各処理モジュールは、自処理モジュール内のリストを論理的に下流の処理モジュールへ送出し、論理的に上流の処理モジュールから1モジュール分のリストを受信する。各処理モジュールは、上流のモジュールから受信したリスト中の値から、自処理モジュール内に保持しているリスト中に含まれる値と一致した値を除き、リストを下流の処理モジュールへ送出する。
この第1の順序番号付与処理によれば、処理モジュールの総数がNであるとき、各処理モジュールは、(N−1)回の転送サイクル終了までに、他の処理モジュールの保持するリストを重複無く受け取ることができる。また、各処理モジュールは、N回の転送サイクル終了までに、全モジュールの保持するリストを重複無く受け取ることができる。特に、各処理モジュールに保持されている値のリストが、値の昇順又は値の降順に整列されているならば、重複値を消去する処理をより効率的に実行することができる。
この第1の順序番号付与処理は、全ての処理モジュールを同一の構造により実現できる点で非常に優れている。但し、この第1の順序番号付与処理では、1つの値が何回も消去され、及び/又は、多数回の転送が行われることがある。具体的には、同じ値が多数の処理モジュール内で発生している場合、その値は、その値を保持している処理モジュールを通過する都度消去される。また、処理モジュールの個数をN個とすると、ある処理モジュールに、最も遠い処理モジュールからのデータが到着するまでに、N−1回の転送が行われる。
この転送回数は、後述のトーナメント方式と呼ぶ付加的なメカニズムを導入することによってさらに削減することが可能である。
図11は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置1100の第1の例の説明図である。同図では、図9A〜D及び図10A〜Dに関して説明した例と同様に、初期状態として、PMM−0が値のリスト[1,3,5,6]を保持し、PMM−1が値のリスト[0,2,3,7]を保持し、PMM−2が値のリスト[2,4,6,7]を保持し、PMM−3が値のリスト[0,1,3,5]を保持している。
最初のステップで、PMM−0は自処理モジュール内の値のリスト[0,1,3,5]を統合装置1へ送出し、PMM−1は自処理モジュール内の値のリスト[0,2,3,7]を統合装置1へ送出し、PMM−2は自処理モジュール内の値のリスト[2,4,6,7]を統合装置2へ送出し、PMM−3は自処理モジュール内の値のリスト[0,1,3,5]を統合装置2へ送出する。
次のステップで、統合装置1は、PMM−0とPMM−1から受け取った値のリストから重複値を消去して値のリスト[0,1,2,3,5,6,7]を生成し、統合装置3へ送出する。同様に、統合装置2は、PMM−2とPMM−3から受け取った値のリストから重複値を消去して値のリスト[0,1,2,3,4,5,6,7]を生成し、統合装置3へ送出する。
最後のステップで、統合装置3は、統合装置1と統合装置2から受け取った値のリストから重複値を消去して値のリスト[0,1,2,3,4,5,6,7]を生成し、PMM−1〜PMM−4の各処理モジュールへこの値リストをブロードキャストする。
この例では、値のリストの重複値の消去は、処理モジュールではなく、統合装置において行われる。値のリストが昇順又は降順に整列されているならば、統合装置は、昇順又降順のリスト同士を統合すればよいので、フロー制御が可能であれば、統合装置を少ないバッファメモリで実現することが可能である。
この例では、統合装置と処理モジュールが完全に分離されているが、一部の統合処理を処理モジュールが担当してもよい。図12は、このような本発明の実施の形態にかかる順序番号を付与するトーナメント装置1200の第2の例の説明図である。同図では、図11と同様に、初期状態として、PMM−0が値のリスト[1,3,5,6]を保持し、PMM−1が値のリスト[0,2,3,7]を保持し、PMM−2が値のリスト[2,4,6,7]を保持し、PMM−3が値のリスト[0,1,3,5]を保持している。
最初のステップで、PMM−0は自処理モジュール内の値のリスト[0,1,3,5]をPMM−1へ送出し、PMM−2は自処理モジュール内の値のリスト[2,4,6,7]をPMM−3へ送出する。
次のステップで、PMM−1は、PMM−0から受け取った値のリストと自処理モジュール内の値のリスト[0,2,3.7]を統合し、重複値を消去して値のリスト[0,1,2,3,5,6,7]を生成し、統合装置3へ送出する。同様に、PMM−3は、PMM−2から受け取った値のリストと自処理モジュール内の値のリスト[0,1,3,5]を統合し、重複値を消去して値のリスト[0,1,2,3,4,5,6,7]を生成し、統合装置3へ送出する。
最後のステップで、統合装置3は、統合装置1と統合装置2から受け取った値のリストから重複値を消去して値のリスト[0,1,2,3,4,5,6,7]を生成し、PMM−1〜PMM−4の各処理モジュールへこの値リストをブロードキャストする。
図12の例では、処理モジュールPMM−2(及び/又は、PMM−0)は統合処理のため利用されていない。そこで、PMM−1からの出力とPMM−3空の出力を統合する統合装置3の役割をPMM−2又はPMM−0が代替してもよい。図13は、このような本発明の実施の形態にかかる順序番号を付与するトーナメント装置1300の第3の例の説明図である。この例によれば、統合装置の数は、処理モジュール数−1になるので、一般に、非常に多数の処理モジュールが存在する場合でも、図11又は12に示された例のように、処理モジュールとは別個に独立した統合装置を設けることなく、トーナメント方式の順序番号付与処理を実現することができる。
図11から図13を参照して説明した例では、メモリ空間は単一のメモリ空間でもよく、また、複数のCPUが存在していてもよい。処理モジュールや統合装置の間の通信路は論理的な通信路であり、通信が物理的にはメモリ参照によって実現される場合でも、トーナメント方式の順序番号付与処理を実現することができる。
[コンパイル処理の詳細]
図14は、表形式データを表現する単一コンピュータ(又は、処理モジュール)上の情報ブロックの説明図である。同図において、Ordsetは、既に説明したように、表形式データのレコードの順番を表す順序配列であり、VNoは、レコードの順番に項目値番号を指定する情報(或いは、項目値番号自体)が格納されたポインタ配列であり、VLは、項目値番号の順に項目値が格納された値リストである。コンパイル処理は、このような表形式データを、複数の処理モジュールで分掌管理するためのデータ構造を構築する処理である。
図15は、図14の表形式データを4個の処理モジュールPMM−0、PMM−1、PMM−2及びPMM−3で分掌管理するデータ構造の説明図である。同図において、Gordは、各処理モジュールで管理されているレコードが全体で何番目のレコードであるかを表すグローバル順序番号であり、GVNoは、各処理モジュールで管理されている値リスト中の値が、全体で何番目の位置にあるかを表すグローバル項目値番号である。
コンパイル処理は、図14に示されたデータ構造を図15に示されたデータ構造に変換する処理である。図16は、本発明の実施の形態にかかるコンパイル処理のフローチャートである。本例のコンパイル処理は、ステップ1601において、各処理モジュールの表形式データのレコードの順番を表す番号に、各処理モジュールに割り当てられたオフセット値を加算することにより、グローバルな順序番号、即ち、グローバル順序付き配列の要素の値を計算する。オフセット値は、各処理モジュールに割り当てるレコードの数に基づいて決まる。図15の例では、オフセット値は、PMM−0からPMM−3の順に、0、3、5及び8である。
次に、ステップ1602から1607では、各処理モジュールは、図8を参照して説明した順序番号付与処理を利用して、各処理モジュール内の項目値にグローバル項目値番号を与える。グローバル項目値番号は、記各処理モジュールが自処理モジュールの値リストと他の処理モジュールの値リストとを比較することにより、自処理モジュールの値リストの項目値に対して、複数の処理モジュール間で一意に決まるグローバルな項目値番号である。
各処理モジュールは、ステップ1602で、論理的に環状に接続された他の処理モジュールへ自処理モジュールの値リストを送信し、次に、ステップ1603で、他の処理モジュールから前記他の処理モジュールの値リストを受信する。ステップ1604で、各処理モジュールは、受信した値リストの重複値を消去する。各処理モジュールは、ステップ1605で、他の処理モジュールから受信した値リスト中の項目値のうち、自処理モジュールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、自処理モジュールの値リスト中の項目値の項目値番号をその個数分だけ引き上げる。各処理モジュールは、ステップ1606で、他の処理モジュールから受信し、重複値が削除された値リストを論理的に次に接続された他の処理モジュールへ送信する。各処理モジュールは、ステップ1607で、他の処理モジュールから送られた値リストに対して、ステップ1602からステップ1606までの処理を繰り返し、グローバル項目値番号の付与を終了する。
[データ更新処理]
図15に示されるようなデータ構造で管理されている表形式データに対して、様々な処理が行われる。検索、ソート、集計などの処理の他、データの削除、データの挿入、データの上書きなどの基本的な操作が表形式データに対して行われる。そこで、次に、各処理モジュールでデータが分掌管理されているような本発明のデータ構造に対するデータ更新処理を説明する。
[レコード削除処理]
例えば、図15に示された表形式データのうち、PMM−0に保持されているGOrd=2のレコードと、PMM−1に保持されているGOrd=3のレコードの2個のレコード(2行)を削除する場合に関して、本発明の実施の形態にかかるレコード削除処理を説明する。
レコード削除処理は、削除対象となるレコードを特定するステップと、前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、を含む。
図17には、削除されるべき2個のレコードに対応した文字が太字のイタリック体で示されている。レコードが削除されると、レコードに付与されているグローバル順序番号GOrdと、レコードの順番に項目値番号が格納されたポインタ配列VNoと、各処理モジュール内でレコードに一意に付与されているローカルな順序番号OrdSetを更新しなければならない。但し、この段階では、値リストVLは更新しない。値リストを更新するためには、値リストに格納された項目値を参照するレコードが存在しないこと、即ち、その項目値を指定するVNoが存在しないことを確かめる必要があるからである。値リストVLを更新しないので、グローバル項目値番号GNoも更新する必要がない。
GOrdの更新は、削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバル順序番号を削除される個数分だけ引き下げることによって行われる。本例では、最初に、PMM−0のGOrd=2と、PMM−1のGOrd=3と、を削除し、次に、グローバル順序番号が削除されたPMM内では、削除されたグローバル順序番号よりも後方に格納されているグローバル順序番号を前方へ移動する。PMM−0では、GOrd=2は末尾のグローバル順序番号であるため、グローバル順序番号の移動は行われないが、PMM−1では、削除されるGOrd=3の後方にGOrd=4が存在するので、このGOrd=4を1個分だけ前方へ移動させる。さらに、残ったグローバル順序番号は、当該グローバル順序番号よりも前方に削除されたグローバル順序番号が存在する場合、その削除された個数分だけグローバル順序番号の値を小さくする(降順の場合)。図18は、本発明の実施の形態にかかるレコード削除処理の説明図であり、同図には、グローバル順序番号GOrdが更新される様子が示されている。
OrdSetの更新は、削除されたGOrdと同じ場所にあるOrdSetを削除し、さらに、OrdSetが削除されたPMM内では、削除されたOrdSetよりも後方に格納されいてるOrdSetは、削除された個数分だけ前方へ移動されると共に、削除された個数分だけ値が減少させられる。図18には、OrdSetが更新される様子も示されている。
最後に、ポインタ配列VNoは、「性別」、「年齢」、「身長」及び「体重」の全ての項目に関して、削除されるレコードに対応したOrdSetにより指定されたVNoを削除し、VNoが削除されたPMM内では、削除されたVNoよりも後方に格納されいてるVNoは、削除された個数分だけ前方へ移動される。図18には、VNoが更新される様子も示されている。
以上の処理によって、図19に示されるようなレコード削除後の表形式データが得られる。
[レコード挿入処理]
例えば、図19に示された表形式データのうち、PMM−1に2個のレコードを挿入する場合に関して、本発明の実施の形態にかかるレコード挿入処理を説明する。本実施の形態によれば、レコードの挿入処理は、挿入するレコードの格納領域を確保する処理であり、挿入するレコードの項目値を所定の値とすることにより処理の高速化を図っている。例えば、挿入されるレコードの各項目の仮の項目値には、そのレコードが挿入されるPMM内に保持されている最小の項目値を使用する。
レコード挿入処理は、挿入対象となるレコードの挿入位置を特定するステップと、前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、により構成される。
図19の表形式データのPMM−1に、現在存在するレコードは、GOrd=2のレコード1つだけであるが、この表形式データは、図17の表形式データからレコードを削除することにより生成された表形式データであるため、PMM−1には、削除されたレコードの項目値、即ち、「性別」=女性、「年齢」=16、「身長」=172及び「体重」=48も存在している。このとき、PMM−1に保持されている最小の項目値は、
「性別」=男性、「年齢」=16、「身長」=172、「体重」=48
である。したがって、PMM−1に挿入されるレコードの仮の項目値は、
「性別」=男性、「年齢」=16、「身長」=172、「体重」=48
である。図20は、本発明の実施の形態にかかるレコード挿入処理の説明図である。同図では、挿入されるべきデータが太字、イタリック体で示されている。レコード挿入処理の手順の一例は次の通りである。
(手順1)レコードを挿入する位置に、GOrd、OrdSet、VNoを作成する。
(手順2)作成されたGOrdには、その作成された位置に対応した値をセットする。本例では、PMM−1内の1番目と2番目の位置にレコードが挿入されるので、その位置に対応したGOrdの値、2と3がセットされる。また、PMM−1内で挿入されたレコードよりも後方に順序付けられているレコードのGOrdは、挿入されたレコードの個数分だけインクリメントされる。
(手順3)作成されたOrdSetには、PMM内でそのOrdsetが作成された位置に対応した値をセットする。本例では、PMM−1内の1番目と2番目の位置にレコードが挿入されるので、その位置に対応したOrdSetの値、0と1がセットされる。また、PMM−1内で挿入されたレコードよりも後方に順序付けられているレコードのOrdSetは、挿入されたレコードの個数分だけインクリメントされる。
(手順4)作成されたVNoには、0をセットする。作成されたレコードの項目値は最小の項目値であるため、VNoは0に固定される。
以上の処理によって、図21に示されるようなレコード挿入後の表形式データが得られる。また、挿入されたレコードの値は、後述のデータ上書き処理によって所望の値にセットすることができる。
尚、上記の例では、VNoに一番小さい値0をセットしているが、例えば、ブランクのままでもよい。
また、上記の例では、PMM−1に1行以上のレコードが存在しているので、挿入されるレコードの項目値として、既存のデータのうちの最小の項目値を使用しているが、レコードを挿入するPMMにデータが存在しない場合には、例えば、グローバル項目値番号GVNo=0となる最小の項目値を使用してデータを作成することができる。この場合もVNoは0であり、VLの値は全てのPMMに保持されている項目値のうちの最小値である。
[データ上書き処理]
上記のレコード挿入処理で挿入されたデータは、所定の値にセットされているので、セットされた所定の値を実際に所望のデータで書き換えることが必要になる。そこで、次に、このようなデータの書き換えを行う本発明の実施の形態にかかるデータ上書き処理を説明する。図22は、図15に示された表形式データの一部、具体的には、PMM−0の2番目のレコード及び3番目のレコードの身長と、PMM−1の1番目のレコードの身長を上書きする例の説明図である。図23は、本発明の実施の形態にかかるデータ上書き処理のフローチャートである。
データ上書き処理は、ステップ2301で、上書きするデータ配列をコンパイルする。具体的には、上書き対象となるレコードを特定し、上書きデータを設定し、上書きデータを表現する項目値番号と項目値の組を生成する。図24は、上書きするデータを各PMMでコンパイルする処理の説明図である。同図には、PMM−0における処理が示されている。
次に、ステップ2302で、値リストVLがマージされる。生成された項目値番号と項目値の組をマージすることにより、上書き対象となるレコードを含むローカルな情報ブロックの値リストを生成する。図25A〜図25Dは、上書きデータと元データをマージする処理の説明図である。マージ処理では、最初に、上書きデータのVLの位置を示すP1と、元データのVLの位置を示すP2と、マージにより生成される新しい値リストVLの位置を示すポインタP3を0に初期化する。
図25Aのマージ処理の手順1では、P1とP2を比較し、P2が小さいので、P2が指定するConv.の位置0にP3の値0を格納する。次に、P2が指定するVLの値159を、新VLに格納する。続いて、P2、P3をインクリメントする。ここで、配列Conv.は、対応する値が新VLに格納される位置を表している。例えば、元データのVLの先頭の値159に対応するConv.の値は0であるので、項目値159は新VLの先頭の値である。
図25Bのマージ処理の手順2では、P1とP2を比較し、P1が小さいので、P1が指定するConv.の位置0にP3の値1を格納する。次に、P1が指定するVLの値160を、新VLに格納する。続いて、P1、P3をインクリメントする。
図25Cのマージ処理の手順3では、P1とP2を比較し、P2が小さいので、P2が指定するConv.の位置1にP3の値2を格納する。次に、P2が指定するVLの値168を、新VLに格納する。続いて、P2、P3をインクリメントする。
以下同様にVLのマージ処理の手順を続けると、図25Dに示されるようなマージ結果が得られる。
以上のVLのマージ処理の説明では、新しいVLを同時に生成しているが、上書きデータのVL及び対応したConv.と元データのVL及び対応したConv.から、新VLを生成することができる。
次に、ステップ2303では、上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列VNoを更新する。図26A〜Cは、ポインタ配列を更新する処理の説明図である。
最初に、図26Aに示されるように、上書きデータのVNoと元データのVNoをそれぞれ対応したConv.を利用して、新VLに対応したVNoへ変換する。例えば、上書きデータの配列VNoのレコード0に対応する位置には1が格納されているので、レコード0の現在のVLの項目値番号は1である。この現在VLの項目値番号1は、配列Conv.を参照すると、新VLの項目値番号4に対応していることがわかる。そこで、VNoのレコード0に対応する要素の値を1から4へ変換する。以下同様にして、上書きデータの全てのレコードと、元データの全てのレコードについて、VNoの値を変換する。
次に、図26Bに示されるように、VLを新VLに置き換え、上書きデータのVNoを元データのVNoの上書きすべき位置へ転送する。これにより、図26Cに示されるような新しいVNoとVLが完成する。
PMM−2についても同様にマージ処理を行うと、図22の表形式データは、図27に示されるような表形式データに変換されている。本例の上書き処理では、「身長」のデータが書き換えられるので、「身長」についてのグローバル項目値番号GVNoは再構築しなければならない。
そこで、最後に、ステップ2304で、グローバル項目値番号GVNoを再構築する。具体的には、各処理モジュールが論理的に環状に接続された他の処理モジュールへ自処理モジュールの値リストを送信し、他の処理モジュールから他の処理モジュールの値リストを受信し、自処理モジュールの値リストと他の処理モジュールの値リストとを比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で新しいグローバルな項目値番号を付与する。これは、上述の順序番号付与処理に対応している。これにより、グローバルな情報ブロックのデータを上書きすることができる。図28は、本例のデータ上書き処理によって完成した表形式データの説明図である。
[スウィープ処理]
上述のレコード削除処理やデータ上書き処理では、削除されたレコードに対応した項目値や、上書き前の元データに対応した項目値がそのまま残されているので、VL及びGVNoの中に実際には使用されていないデータが含まれることがある。このような使用されないデータは消去できることが望ましい。そこで、本発明によれば、不要なデータを除去するスウィープ処理が提供される。図29A、Bは、本発明の実施の形態にかかるスウィープ処理の説明図である。図29A、Bに示されるように、このスウィープ処理によれば、VLとGNoがコンデンスされ、VNoが更新される。
このスウィープ処理では、ローカルな情報ブロックの値リストVLに格納されている項目値のうち現在のポインタ配列VNoの要素によって指定されている現在の項目値番号に対応した項目値が現在の項目値番号の順序に格納されるように値リストを更新し、次に、更新された値リストに格納されている項目値を指定するように、現在のポインタ配列に格納される現在の項目値番号を更新する。値リストを更新することにより、使用されないグローバル項目値番号GVNoも消去される。これにより、グローバルな情報ブロックの不要なデータを除去する。
図30は本発明の実施の形態にかかるスウィープ処理のフローチャートである。図31A〜Hは、それぞれ、図29A、Bに示された例に基づく、このスウィープ処理の進行状態の説明図である。
ステップ3001:最初にフラグ配列Flagを生成する。FlagはVL(及びGVNo)と同じサイズの整数配列であり、要素を0で初期化する。
ステップ3002:VNoが指すアドレスのFlag配列の要素(図31Bにイタリック体で示されている)を0から1に変更する。フラグの値は0又は1である。
ステップ3003:Flagが1の位置に対応するVLの値(図31Cにイタリック体で示されている)を、新VLへ先頭から順番に入れる。
ステップ3004:Flagが1の位置に対応するGVNoの値(図31Dにイタリック体で示されている)を、新GVNoの先頭から順に入れる。
ステップ3005:Flagを累計数化し、1段後方へ移動する。累計数化したFlagはFlag'のように表す。Flagを累計数化したFlag'は、図31Eに示されている。
ステップ3006:最後に、Flag'を参照して、VNoを変換する。図31F〜Hには、VNoの変換処理が示されている。例えば、現在のVNoの先頭の要素VNo[0]=2に対して、配列Flag'の3番目の要素Flag'[2](太字、イタリック体で示されている)を参照すると、値は1であるので、VNo[0]に1をセットする(図31Fに2→1として示されている)。
以上の処理により、図29Aのスウィープ前のデータは図29Bのスウィープ後のデータに変換される。
尚、このスウィープ処理では、使用されるGVNoの値は、昇順(又は降順)を保つが、離散的な値になる可能性がある。GVNoは、昇順(又は降順)を維持する限り、離散的であっても、本発明によるグローバルな情報ブロックを操作して、検索、ソート、集計などの処理を行うことができる。勿論、必要に応じて、GVNoが連続値になるようにGVNoを再構築することができる。GVNoの再構築は、上述の順序番号付与処理を用いて実現することができる。
このスウィープ処理は自動的に行ってもよく、或いは、ユーザからの要求に応じて行ってもよい。
[データ再配置]
データ再配置とは、表形式データが複数の処理モジュールで分掌管理されているときに、どのレコードをどの処理モジュールが保持するかというデータの割付を変更することである。このデータ再配置は、表形式データの検索、ソート、集計などの処理結果をディスク装置などに出力するとき、表形式データの全部又は一部を独立させて別の表形式データとして管理するときなどに要求される。例えば、表形式データをシーケンシャルなデバイスへ出力する際には、この表形式データは情報処理システム上でもシーケンシャルに配置されている方が望ましい。
本発明の実施の形態にかかるデータ再配置処理は、グローバル順序番号GOrdには全ての処理モジュールの間で連続した昇順の番号を割り振り、OrdSetには各処理モジュール内で0から始まる昇順の番号を割り振る。
図32は本発明の実施の形態にかかるデータ再配置処理のフローチャートである。このデータ再配置処理が実行される情報処理システムは、論理的に環状に接続された複数の処理モジュールを含み、各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備している。ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む。各処理モジュールの表形式データのレコードには、複数の処理モジュール間で一意に決まるグローバルな順序番号GOrdが割り当てられ、各処理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグローバルな項目値番号GVNoが付与されている。この情報処理システムは、次のような手順で再配置処理を実行する。
ステップ3201:各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定する。
ステップ3202:新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき新しいレコードに割り当てる。
ステップ3203:各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、自処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信する。
ステップ3204:各処理モジュールが他の処理モジュールから他の処理モジュールの現在のグローバルな順序番号と、対応した現在の値リスト中の項目値と、を受信する。
ステップ3205:各処理モジュールが、他の処理モジュールから受信した現在のグローバルな順序番号の中で自処理モジュールに再配置されるべき新しいレコードに割り当てられた新しいグローバルな順序番号と一致する現在のグローバルな順序番号に対応した項目値を一時的な値リストとしてメモリに記憶する。
ステップ3206:各処理モジュールが、新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、一時的な値リスト中の項目値を新しい項目値番号の順序に格納した新しい値リストと、を生成する。
ステップ3207:各処理モジュールが論理的に環状に接続された他の処理モジュールへ自処理モジュールの新しい値リストを送信する。
各処理モジュールが他の処理モジュールから他の処理モジュールの新しい値リストを受信する。
各処理モジュールが自処理モジュールの新しい値リストと他の処理モジュールの新しい値リストとを比較し、自処理モジュールの新しい値リストの項目値に、複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与する。
この手順により、グローバルな情報ブロックのデータを再配置することができる。
例えば、図14及び15に示されるような表形式データを、「年齢」が25歳以下という条件で検索し、「年齢」の昇順にソートした検索・ソート結果を再配置する場合を考える。図33A〜Cは検索・ソート後の表形式データの説明図であり、図33Aは検索・ソート前のデータ一覧、図33Bは検索・ソート後のデータ一覧、図33Cは分掌管理されている検索・ソート処理後の表形式データを表している。
この例では、全体で8行(8個のレコード)が存在し、処理モジュールPMMの個数は4個であるので、各モジュールに2行ずつ配置する。以下の説明では、「身長」の項目に関する再構築を説明するが、他の項目についても同様に再構築できる。
データ再配置処理は、(手順1)新しいGOrdとOrdSetを生成する手順と、(手順2)GOrdとVLを転送し、各処理モジュールに収容する手順と、(手順3)VLをコンパイルする手順に大別される。
手順1:データは全体で8行あり、モジュール数は4個であるので、各モジュールに2行ずつ格納することとし、生成先に新しいGOrdとOrdSetを生成し、これらと同じサイズの値格納配列を生成する。このとき、各モジュールに配置される行数が分かっているので、GOrdは自明であり、OrdSetも各モジュール内で自明である。具体的には、データ再配置の計算式を全ての処理モジュールに通知することによって、各処理モジュールはGOrdを知ることができる。
図34A、Bは、データ再配置処理におけるGOrdとOrdSetの生成処理の説明図である。
手順2:各PMMからGOrdと値を他のPMMへ送出する。ここで、GOrdは昇順であり、かつ、ユニークである。各PMMは、他のPMMから送出されたGOrdと値を受信し、自PMM内のGOrdとマッチングするGOrdに対応した値を値格納配列に収容する。図35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明図である。
データ転送は、様々な方法で実現できる。例えば、処理モジュール間で相互に、即ち、送信側と受信側のペアを決めてデータを送信してもよく、或いは、環状に接続されたモジュール間で環状にデータを転送してもよい。
手順3:各処理モジュールの生成先に作成された値格納配列をコンパイルすることにより、「身長」に関して、各処理モジュールにポインタ配列VNoと値リストVLを生成すると共にグローバル項目値番号GVNoを付与する。例えば、PMM−0は、値格納配列に格納されている値172と168を昇順に並べ換え、値リストVLを生成する。これに応じて、ポインタ配列VNoに1、0の順に値をセットすることができる。全ての処理モジュールが同様に値リストVLとポインタ配列VNoを生成すると、次に、上述の順序番号付与処理を用いてグローバル項目値番号GVNoを付与することができる。図36は、このようなデータ再配置処理におけるVLコンパイル処理の説明図である。
他の項目も同様に再配置処理することによって図37に示すような表形式データを得ることができる。
[SIMD型並列処理]
並列化のアルゴリズムが稚拙である場合、SIMDを採用して所望の結果を得るためのプログラムの開発が困難であり、開発できたとしても、そのプログラムの自由度は低い。そこで、SIMDを採用するためには、SIMDに適した優れたアルゴリズムを開発する必要がある。この点、本実施の形態によるアルゴリズムは、
(1)処理の実行にあたって条件分岐がない。但し、検索処理の場合には、条件分岐が行われる可能性があるが、単純な条件分岐である。
(2)昇順のリストを相互に比較するなど、1つの命令で実行できる処理(ステップ数、クロック数)の占める割合が高い。
(3)すべての処理モジュールが平等に同じ役割を持つ。処理モジュール毎に違う役割があると、単一命令で処理を実現できない。
という点でデータ構造及びアルゴリズムが優れている。したがって、本実施の形態では、SIMDを採用する際にプログラムが簡単化され、プログラムの開発の容易性やプログラムの高い自由度を確保することができる。
[システム構成]
本発明にかかる情報処理システムは、例えば、フロントエンドとなる端末装置と、リング状のチャネルを介して接続され、端末装置からの命令を、それぞれのPMMが受理することにより、PMMにおいて、上述したコンパイル、データ更新、データ再配置の処理が実行できる。また。各PMMはパケットを何れかのバスを利用して送出すればよく、PMM間の同期等を外部から制御する必要もない。
また、制御装置には、コンパイルなどの繰り返し演算のためのハードウェア構成を備えたアクセラレータチップのほか、これに加えて、汎用CPUを含めても良い。汎用CPUは、端末装置からチャネルを介して伝達された命令を解釈し、アクセラレータチップに必要な指示を与えることができる。
さらに、制御装置、特に、その中のアクセラレータチップには、順序番号配列、グローバル順序番号配列など作業に必要な種々の配列を収容するためのレジスタ群が設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必要な値をロードしてしまえば、コンパイルなどにかかる上述した処理演算中には、制御装置はメモリにアクセスすることなく、レジスタから値を読み出し、或いは、レジスタに値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる(演算処理前のロード、および、処理結果の書き込み)ことができ、処理時間を著しく短縮することが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
尚、前記実施の形態においては、PMMを、一方が時計回りにパケットを伝送する第1のバス(第1の伝送路)、他方が反時計回りにパケットを伝送する第2のバス(第2の伝送路)にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するPMMを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、PMMの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序番号配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。
また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の3つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、3つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関する検索、ソートおよび集計を実現することができる。
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。
図1は、従来のデータ管理機構の説明図である。 図2は、従来のデータ管理機構の説明図である。 図3は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。 図4は、本発明の実施の形態にかかるPMMの構造の一例を示す図である。 図5は、表形式データの一例の説明図である。 図6は、従来の表形式データの記憶構造の説明図である。 図7は、本発明の実施の形態にかかる表形式データの記憶構造の一例の説明図である。 図8は、本発明の実施の形態にかかる順序番号付与方法のフローチャートである。 図9A〜Dは、それぞれ、本発明の実施の形態にかかる第1の順序番号付与方法の説明図(その1)である。 図10A〜Dは、それぞれ、本発明の実施例の形態にかかる第1の順序番号付与方法の説明図(その2)である。 図11は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第1の例の説明図である。 図12は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第2の例の説明図である。 図13は、本発明の実施の形態にかかる順序番号を付与するトーナメント装置の第3の例の説明図である。 図14は、単一の処理モジュールで管理される表形式データの説明図である。 図15は、複数の処理モジュールで分掌管理される表形式データの説明図である。 図16は、本発明の実施の形態にかかるコンパイル処理のフローチャートである。 図17は、レコード削除処理の対象となる表形式データの説明図である。 図18は、レコード削除処理の一例の説明図である。 図19は、レコード削除処理後の表形式データの説明図である。 図20は、レコード挿入処理の一例の説明図である。 図21は、レコード挿入処理後の表形式データの説明図である。 図22は、データ上書き処理の一例の説明図である。 図23は、本発明の実施の形態にかかるデータ上書き処理のフローチャートである。 図24は、上書きデータを処理モジュール内でコンパイルする処理の説明図である。 図25A〜Dは、それぞれ、上書きデータと元データをマージする処理の説明図である。 図26A〜Cは、それぞれ、ポインタ配列を更新する処理の説明図である。 図27は、データ上書き処理中の表形式データの説明図である。 図28は、データ上書き処理後の表形式データの説明図である。 図29A、Bは、本発明の実施の形態にかかるスウィープ処理の説明図である。 図30は、本発明の実施の形態にかかるスウィープ処理のフローチャートである。 図31A〜Hは、スウィープ処理の進行状態の一例の説明図である。 図31は、本発明の実施の形態にかかるデータ再配置処理のフローチャートである。 図33A〜Cは、それぞれ、分掌管理されている検索・ソート処理後の表形式データの説明図である。 図34A、Bは、データ再配置処理におけるGOrdとOrdSetの生成処理の説明図である。 図35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明図である。 図36は、データ再配置処理におけるVLコンパイル処理の説明図である。 図37は、データ再配置処理後の表形式データの説明図である。
符号の説明
32 PMM
34 第1のバス
36 第2のバス
40 制御回路
42 バスI/F
44 メモリ
46 バンク

Claims (21)

  1. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む、
    情報処理システムにおいて、
    前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当てるステップと、
    前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュールの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与するステップと、
    を有し、
    グローバルな情報ブロックを構築する情報処理方法。
  2. 前記グローバルな順序番号を割り当てるステップは、前記各処理モジュールの表形式データのレコードの順番を表す番号に、前記各処理モジュールに割り当てられたオフセット値を加算することにより、前記グローバルな順序番号を計算する、請求項1記載の情報処理方法。
  3. 前記グローバルな項目値番号を付与するステップは、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの値リストを受信し、
    前記他の処理モジュールから受信した値リスト中の項目値のうち、当該各処理モジュールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、当該各処理モジュールの値リスト中の項目値の項目値番号を該個数分だけ引き上げることにより前記グローバルな項目値番号を計算する、
    請求項1又は2記載の情報処理方法。
  4. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、
    削除対象となるレコードを特定するステップと、
    前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
    を有し、
    グローバルな情報ブロックのデータを削除する情報処理方法。
  5. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、
    挿入対象となるレコードの挿入位置を特定するステップと、
    前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、
    を有し、
    グローバルな情報ブロックのデータを挿入する情報処理方法。
  6. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、
    上書き対象となるレコードを特定し、上書きデータを設定するステップと、
    前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
    前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
    を有し、
    グローバルな情報ブロックのデータを上書きする情報処理方法。
  7. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、
    前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
    前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
    を有し、
    グローバルな情報ブロックの不要なデータを除去する情報処理方法。
  8. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、
    前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
    前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
    前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
    前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
    前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
    前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
    を有し、
    グローバルな情報ブロックのデータを再配置する情報処理方法。
  9. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当てるステップと、
    前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュールの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与するステップと、
    を実行させるためのプログラム。
  10. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    削除対象となるレコードを特定するステップと、
    前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除するステップと、
    を実行させるためのプログラム。
  11. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    挿入対象となるレコードの挿入位置を特定するステップと、
    前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保するステップと、
    を実行させるためのプログラム。
  12. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    上書き対象となるレコードを特定し、上書きデータを設定するステップと、
    前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、
    前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新するステップと、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与するステップと、
    を実行させるためのプログラム。
  13. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新するステップと、
    前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップと、
    を実行させるためのプログラム。
  14. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムにおいて、前記各処理モジュールのコンピュータに、
    前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定するステップと、
    前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てるステップと、
    前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信するステップと、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信するステップと、
    前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶するステップと、
    前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成するステップと、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信するステップと、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信するステップと、
    前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与するステップと、
    を実行させるためのプログラム。
  15. 請求項9乃至14のうちいずれか1項記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
  16. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含む、
    情報処理システムであって、
    前記各処理モジュールは、
    前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当てる手段と、
    前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュールの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与する手段と、
    を有する、
    情報処理システム。
  17. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムであって、
    前記各処理モジュールは、
    削除対象となるレコードを特定する手段と、
    前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対応した項目値番号を指定する情報をポインタ配列から削除する手段と、
    を有する、
    情報処理システム。
  18. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムであって、
    前記各処理モジュールは、
    挿入対象となるレコードの挿入位置を特定する手段と、
    前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象となるレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿入位置に確保する手段と、
    を有する、
    情報処理システム。
  19. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムであって、
    前記各処理モジュールは、
    上書き対象となるレコードを特定し、上書きデータを設定する手段と、
    前記上書きデータを表現する項目値番号と項目値の組を生成する手段と、
    前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する手段と、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジュールの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で新しいグローバルな項目値番号を付与する手段と、
    を有する、
    情報処理システム。
  20. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムであって、
    前記各処理モジュールは、
    前記ローカルな情報ブロックの値リストに格納されている項目値のうち現在のポインタ配列の要素によって指定されている現在の項目値番号に対応した項目値が該現在の項目値番号の順序に格納されるように前記値リストを更新する手段と、
    前記更新された値リストに格納されている項目値を指定するように、前記現在のポインタ配列に格納される前記現在の項目値番号を指定する情報を更新する手段と、
    を有する、
    情報処理システム。
  21. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメモリを具備し、
    前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納されている値リストと、を含み、
    前記各処理モジュールの表形式データのレコードには、前記複数の処理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、
    前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグローバルな項目値番号が付与されている、
    情報処理システムであって、
    前記各処理モジュールは、
    前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決定する手段と、
    前記新しいレコードの個数に基づいて、新しいグローバルな順序番号を再配置されるべき前記新しいレコードに割り当てる手段と、
    前記各処理モジュールが、論理的に環状に接続された他の処理モジュールへ、前記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番号と、該現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、を送信する手段と、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、を受信する手段と、
    前記各処理モジュールが、前記他の処理モジュールから受信した前記現在のグローバルな順序番号の中で前記各処理モジュールに再配置されるべき前記新しいレコードに割り当てられた前記新しいグローバルな順序番号と一致する前記現在のグローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記憶する手段と、
    前記各処理モジュールが、前記新しいレコードの順番に新しい項目値番号を指定する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前記新しい項目値番号の順序に格納した新しい値リストと、を生成する手段と、
    前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各処理モジュールの前記新しい値リストを送信する手段と、
    前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュールの前記新しい値リストを受信する手段と、
    前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の処理モジュールの前記新しい値リストとを比較し、前記各処理モジュールの前記新しい値リストの項目値に、前記複数の処理モジュール間で一意に定まる新しいグローバルな項目値番号を付与する手段と、
    を有する、
    情報処理システム。
JP2006512783A 2004-04-28 2005-04-26 情報処理方法及び情報処理システム Expired - Fee Related JP4673299B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004133320 2004-04-28
JP2004133320 2004-04-28
PCT/JP2005/007874 WO2005106713A1 (ja) 2004-04-28 2005-04-26 情報処理方法及び情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2005106713A1 true JPWO2005106713A1 (ja) 2008-07-31
JP4673299B2 JP4673299B2 (ja) 2011-04-20

Family

ID=35241862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006512783A Expired - Fee Related JP4673299B2 (ja) 2004-04-28 2005-04-26 情報処理方法及び情報処理システム

Country Status (3)

Country Link
US (1) US20080262997A1 (ja)
JP (1) JP4673299B2 (ja)
WO (1) WO2005106713A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576360B (zh) * 2009-09-29 2015-04-01 株式会社东芝 检索装置及系统
KR20130039213A (ko) * 2011-10-11 2013-04-19 한국전자통신연구원 장치 클라우드를 이용한 가상 머신 제공 시스템 및 그 방법
US9654335B2 (en) * 2013-02-27 2017-05-16 Hughes Network Systems, Llc System and method for provision and management of segmented virtual networks within a physical communications network
JP6336302B2 (ja) * 2014-03-11 2018-06-06 株式会社電通国際情報サービス 情報処理装置、情報処理方法及びプログラム
GB2578320B (en) * 2018-10-23 2023-07-05 Advanced Risc Mach Ltd Graphics processing
WO2022153401A1 (ja) * 2021-01-13 2022-07-21 株式会社エスペラントシステム 情報処理方法、情報処理装置及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000010103A1 (fr) * 1998-08-11 2000-02-24 Shinji Furusho Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
JP2001043290A (ja) * 1999-07-29 2001-02-16 Taabo Data Laboratory Kk 表形式データの提示方法、挿入方法、削除方法、更新方法およびこれら方法を利用したトランザクション処理方法、並列処理方法、並びに、上記方法を実現するプログラムを記憶した記憶媒体
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163149A (en) * 1988-11-02 1992-11-10 International Business Machines Corporation Combining switch for reducing accesses to memory and for synchronizing parallel processes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000010103A1 (fr) * 1998-08-11 2000-02-24 Shinji Furusho Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
JP2001043290A (ja) * 1999-07-29 2001-02-16 Taabo Data Laboratory Kk 表形式データの提示方法、挿入方法、削除方法、更新方法およびこれら方法を利用したトランザクション処理方法、並列処理方法、並びに、上記方法を実現するプログラムを記憶した記憶媒体
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Also Published As

Publication number Publication date
JP4673299B2 (ja) 2011-04-20
WO2005106713A1 (ja) 2005-11-10
US20080262997A1 (en) 2008-10-23

Similar Documents

Publication Publication Date Title
CN106055584B (zh) 管理数据查询
US20090089334A1 (en) Lazy updates to indexes in a database
CN100389420C (zh) 用协处理器加速文件系统操作的方法及装置
Nodine et al. Large-scale sorting in parallel memories
JP4673299B2 (ja) 情報処理方法及び情報処理システム
Jain et al. Input/output in parallel and distributed computer systems
US11960747B2 (en) Moving data in a memory and command for memory control
US20230289343A1 (en) Allocating partitions for executing operations of a query
US6424970B1 (en) Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes
CN111708894B (zh) 一种知识图谱创建方法
JP4511469B2 (ja) 情報処理方法及び情報処理システム
CN100445991C (zh) 用于数据库系统中大对象基础结构的系统和方法
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
JP4772506B2 (ja) 情報処理方法、情報処理システムおよびプログラム
JPWO2005073880A1 (ja) 分散メモリ型情報処理システム
KR101188761B1 (ko) 정보 처리 시스템 및 정보 처리 방법
WO2019113021A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
CN109760044A (zh) 一种数据处理方法及装置
CN108460059A (zh) 基于分布式数据库的数据操作方法、装置及系统
JP5208117B2 (ja) 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム
Fossum et al. A 64-GB Sort at 28 GB/s on a 4-GPU POWER9 Node for Uniformly-Distributed 16-Byte Records with 8-Byte Keys
Srirama Introduction to MapReduce
Hutchinson Parallel algorithms in external memory.
Lam Cache Optimization for the Modern Web

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110120

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees