JP4620593B2 - 情報処理システムおよび情報処理方法 - Google Patents

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

Info

Publication number
JP4620593B2
JP4620593B2 JP2005514952A JP2005514952A JP4620593B2 JP 4620593 B2 JP4620593 B2 JP 4620593B2 JP 2005514952 A JP2005514952 A JP 2005514952A JP 2005514952 A JP2005514952 A JP 2005514952A JP 4620593 B2 JP4620593 B2 JP 4620593B2
Authority
JP
Japan
Prior art keywords
array
memory module
ordered set
value
global
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.)
Expired - Fee Related
Application number
JP2005514952A
Other languages
English (en)
Other versions
JPWO2005041066A1 (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 JPWO2005041066A1 publication Critical patent/JPWO2005041066A1/ja
Application granted granted Critical
Publication of JP4620593B2 publication Critical patent/JP4620593B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

本発明は、SIMD(Single Instruction Stream, Multiple Data Stream)を実現可能な並列コンピュータのアーキテクチャを採用した情報処理システムに関する。
社会全体のさまざまな場所にコンピュータが導入され、インターネットをはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積されるようになった。このような大規模データを処理するには、膨大な計算が必要で、そのために並列処理を導入しようと試みるのは自然である。
並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者(「共有メモリ型」)は、複数のプロセッサが1つの巨大なメモリ空間を共有する方式である。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。したがって、例えば10億個の浮動小数点変数の平方根を計算する際、単一CPUに対する加速比は、せいぜい100倍ということになる。経験的には、30倍程度が上限である。
後者(「分散メモリ型」)は、各プロセッサがそれぞれローカルなメモリを持ち、これらを結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込んだハードウェアシステムの設計が可能である。したがって、上記10億個の浮動小数点変数の平方根を計算する際の単一CPUに対する加速比を、数百〜数万倍とすることが可能である。しかしながら、後者においても、後述するいくつかの課題が存在する。
国際公開第WO00/10103号パンフレット(第3図および第4図)
[第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)では、プログラムの自由度が減少し、所望の結果をもたらすプログラムが開発できない事態も想定される。
本発明は、「分散メモリ型」の上記第1ないし3の課題を解決する方法およびコンピュータアーキテクチャを提供する。
ところで、本発明者は、表形式データを記憶するために、項目ごとの情報ブロックを形成し、当該情報ブロックに、項目値を記憶した値リスト、および、当該値リストを指定するための値(ポインタ値)を、レコードごとに記憶したポインタ配列を設け、レコード番号から、ポインタ配列および値リストを順次特定していくことにより、表形式のビューを取得できるような構造および処理方法を考案している(特許文献1参照)。この構造において、レコード数が増大するのにしたがって、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなるため、これを、複数のメモリで分掌した上で、単一命令により、検索、集計、ソートなどの処理が実行できるのが望ましい。
そこで、本発明は、分散メモリ型において、単一命令により種々のメモリに記憶された配列中の要素を入出力し、処理と通信を統合することで著しく高速な並列処理を実現可能なコンピュータアーキテクチャを提供することを目的とする。
本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、昇順または降順に重複なく順序付けられた値のリストを保持するように構成された情報処理システムであって、
前記各メモリモジュールの制御装置が、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信手段と、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信手段と、
前記データ受信手段により受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定手段とを備えたことを特徴とする情報処理システム、
により達成される。
本発明によれば、自己の値のリストの値と、他のメモリモジュールの値のリストとを比較することにより、自己の値リストの値について、他のメモリモジュールの値のリスト中の値を考慮したグローバルな順位を得ることが可能となる。
好ましい実施態様においては、前記順位判定手段が、他のメモリモジュールの各々の値のリストを考慮した、補助的な順位格納配列を生成し、前記補助的な順位格納配列の値を合成して、前記順位格納配列の値を決定する。特に、前記順位判定手段が、並列的に、前記補助的な順位格納配列を生成することにより、著しい処理の高速化を実現することができる。
また、好ましい実施態様においては、前記データ伝送路が、隣接するモジュールを接続し、リング状のデータ伝送路を構成する。
別の好ましい実施態様においては、データ伝送路が、一方のメモリモジュールから他方のメモリモジュールにデータを伝達する1以上のチャンネルを有する第1のデータ伝送路、および、他方のメモリモジュールから一方のメモリモジュールにデータを伝達する1以上のチャンネルを有する第2のデータ伝送路を有し、前記データ送信手段が、隣接するメモリモジュールの間で、一方および他方の何れかのデータ伝送路のうち、メモリモジュールごとに定められたチャンネルを利用して、自己の値のリストを送信するように構成され、
前記データ受信手段が、前記データ送信手段によるデータ送信と並列的に、一方および他方の伝送路を利用して、定められたチャンネルから他のメモリモジュールの値のリストを受信するように構成されている。
この実施態様によれば、第1のデータ伝送路および第2の伝送路中、メモリモジュールごとに定められたチャンネルに、並列的に、データを送信し、それぞれのメモリモジュールにおいて、他のメモリモジュールの値のリストの順位を考慮した上で、自分自身の掌握するローカルな値のリストに含まれる値の順位を決定することができる。したがって、それぞれのメモリモジュールにおいて、メモリモジュールの値のリスト全体の集合のうち、自己が掌握する部分集合の位置ないし順位を適切に把握することが可能となる。このように位置ないし順位を把握しておくことで、後述する検索およびソートの処理が円滑に実現することができる。
別の好ましい実施態様において、前記メモリモジュールの各々のメモリが、
各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成され、
各メモリモジュールの制御装置が、前記ポインタ配列のうち、グローバルな情報ブロックの部分集合として、自己の掌握する情報ブロックが、どの位置を占めるかを示すオフセット値を保持するオフセット値記憶手段と、
前記オフセット値に基づき、グローバルな情報ブロックにおけるグローバル順序集合配列を生成するグローバル順序集合配列生成手段と、
前記順位判定手段が、前記値のリストとして、前記値リストのグローバルな値の順位を決定し、前記グローバル順位格納配列に相当するグローバル値番号配列に決定された順位を格納するように構成されている。
より好ましい実施態様においては、前記順位判定手段が、他のメモリモジュールの各々の値リストを考慮した、相対的な値の順位を格納する補助的な値番号配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな値の順位を算出するように構成されている。
あるいは、他のメモリモジュールの値リストを受信するたびに、新たな相対的な順位ともとの順位との差異を算出して、その値を順次累算していくことで、グローバルな順位を算出してもよい。
より好ましい実施態様においては、さらに、前記データ受信手段により受信された値リストの項目値のうち、前記メモリモジュール自身の値リスト中の項目値と同一の値が存在する場合に、当該受信された値リストから、当該同一の値を消去する同一値消去手段を備えている。
別の好ましい実施態様においては、各メモリモジュールの制御装置が、
検索すべき項目に関して、当該項目の値リストと同じサイズのフラグ配列を生成し、検索条件に合致する項目値に対応するフラグ配列中に特定の値を付与するフラグ配列セットアップ手段と、
前記検索すべき項目に関して、順序集合配列が示す位置に対応するポインタ配列中の値を特定し、その後、ポインタ配列中の値が示す位置に対応するフラグ配列中の値を特定することにより、当該順序集合配列中の値に対応するレコードが、検索条件に合致するか否かを判定する検索条件判定手段と、
検索条件に合致する順序集合の値、および、対応するグローバル順序集合の値を、それぞれ、第2の順序集合配列および第2のグローバル順序集合配列に格納するローカル検索手段とを備え、
前記データ送信手段が、前記値のリストとして、前記第2のグローバル順序集合配列を、前記他のモジュールに送信し、かつ、前記データ受信手段が、前記値のリストとして前記他のメモリモジュールから第2のグローバル順序集合配列を受信し、さらに、
受信したそれぞれの第2のグローバル順序集合配列を参照して、自己の、グローバル順序集合配列中の値の、他のメモリモジュールとの間での相対的な順位を判定し、当該相対的な順位に基づいて、グローバルな情報ブロックにおける順位を決定し、当該グローバルな情報ブロックにおける順位を、グローバル順位格納配列に相当する第3のグローバル順序集合配列に格納する第2の順位判定手段を備え、前記第3のグローバル順序集合配列の値によって、検索条件に合致するレコードの順位が示される。
より好ましい実施態様においては、前記第2の順位判定手段が、他のメモリモジュールの各々の第2のグローバル順序集合配列を考慮して、相対的な値の順位を格納する補助的な順序集合配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな情報ブロックにおける値の順位を算出するように構成されている。
また、好ましい実施態様においては、各メモリモジュールの制御装置が、
前記グローバル順序集合配列の値の順位を、所定の項目に関するグローバル値番号配列中、当該グローバル順序集合配列に対応する値にしたがって決定し、第4のグローバル順序番号配列中、当該決定された順位に対応する位置に、前記グローバル順序集合配列の値を格納する第3の順位判定手段を備え、前記第4のグローバル順序集合配列が、前記グローバル値番号配列の値にしたがって前記グローバル順序集合を再配置したものとなる。
さらに別の好ましい実施態様においては、各メモリモジュールの制御装置が、
ソートすべき項目に関して、当該項目の値リストと同じサイズの存在数配列を生成し、値リスト中の項目値のそれぞれを指定する、前記順序集合配列の値の数を配置する存在数配列生成手段と、
前記存在数配列中の値を累計して、メモリモジュール内でソートされた際の、対応する項目値をもつレコードの先頭位置を示す累計数を算出し、当該累計数を累計数配列中に配置する累計数配列生成手段と、
第2のグローバル値番号配列、前記第4のグローバル順序集合配列および第3の順序集合配列を生成し、順序集合配列の値が示す項目値に対応する累計数配列中の累計数に基づき、前記第2のグローバル値番号配列中、前記累計数が示す位置に、前記項目値に対応するグローバル値番号を配置し、かつ、前記第3の順序集合配列、および、前記第4のグローバル順序集合配列中、前記累計数が示す位置に、前記順序集合配列の値、および、対応するグローバル順序集合配列の値を、それぞれ配置する、ローカルソート手段とを備え、
前記データ送信手段が、前記値のリストとして、少なくとも、第2のグローバル値番号配列を送信し、かつ、前記データ受信手段が、前記値のリストとして他のメモリモジュールの第2のグローバル値番号配列を受信し、さらに、
受信したそれぞれの第2のグローバル値番号配列を参照して、自己の、第2のグローバル値番号配列中の値の、他のメモリモジュールとの間での相対的な順位を判定し、当該グローバルな情報ブロックにおける順位を、グローバル順位格納配列に相当する第5のグローバル順序集合配列に格納する第4の順位判定手段を備え、前記第5のグローバル順序集合配列の値によって、ソートされたレコードの順位が示される。
より好ましい実施態様においては、前記第4の順位判定手段が、他のメモリモジュールの各々の第2のグローバル値番号配列を考慮して、相対的な値の順位を格納する補助的な順序番号配列を生成し、他のメモリモジュールの各々について判定された、前記相対的な順位と、もとの順位との差異の総和を、もとの順位に加えることにより、前記グローバルな情報ブロックにおける順位を算出するように構成されている。
また、本発明の目的は、上記情報処理システムにおいて各手段に対応するステップを、各メモリモジュールが備えたことによっても達成される。
たとえば、ある実施態様においては、情報処理方法は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、各メモリモジュールのメモリが、それぞれ、昇順または降順に重複なく順序付けられた値のリストを保持するように構成された情報処理システムにおいて、
各メモリモジュールにおいて、
各メモリモジュールにおいて、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信ステップと、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信ステップと、
前記データ受信ステップにおいて受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定ステップとを備えている。
さらに、本発明においては、それぞれ、メモリおよび制御装置を有する複数の情報処理ユニットを備え、前記情報処理ユニットの各々のメモリが、各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを保持し、各メモリモジュールが保持する表形式データの集合体により、グローバルな表形式データが形成されるような情報処理システムであって、
前記各情報処理ユニットが、前記グローバルな表形式データにおける各レコードの順位を示す値を収容するグローバル順序集合配列と、制御装置により受理された順位を指定する命令にしたがって、前記グローバル順序集合配列中の値を特定し、その値が示すレコードを取り出すレコード取り出し手段とを備えたことを特徴とする情報処理システムが提供される。
この発明によれば、プロセッサメモリモジュール(PMM)、パーソナルコンピュータ、サーバなどを含む情報処理ユニットにローカルな表形式データを分掌把握させ、ローカルな検索や集計を情報処理ユニット単独で実行させることもでき、かつ、グローバル順序集合配列を備えることにより、グローバルな表形式データの検索などを実現することも可能となる。なお、単一のパーソナルコンピュータやサーバが単一の情報処理ユニットに対応しても良いし、単一のパーソナルコンピュータやサーバに、複数の情報処理ユニットが含まれるような構成を採用しても良い。
好ましい実施態様においては、前記情報処理ユニットが、当該情報処理ユニット内でのソート順を反映するため、レコードを特定する値が入れ替えられた他の順序集合配列を有し、前記グローバル順序集合配列において、他の順序集合配列中の値が示すレコードの、前記グローバルな表形式データにおけるソート順を示すように、その順位を示す値が再配置される。このグローバル順序集合配列に再配置された値は昇順となる。
或いは、前記情報処理ユニットが、前記グローバル順序集合配列において、前記情報処理ユニット内でソートされたレコードの、前記グローバルな表形式データにおけるソート順を示すように、その順位を示す値が再配置されるような構成であっても良い。ここでも、グローバル順序集合配列に再配置された値は昇順となる。このように、本発明は、レコードを特定する値をソートして、これを他の順序集合配列に収容したような形態にも適用でき、また、レコード自体をソートにより並べ替えるような形態にも適用できる。
別の好ましい実施態様においては、前記情報処理ユニットの各々のメモリが、
各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成される。
さらに、本発明においては、それぞれ、メモリおよび制御装置を有する複数の情報処理ユニットを備え、前記情報処理ユニットの各々のメモリが、各々が項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現するための、特定の項目に属する項目値に対応した項目値番号の順に当該項目値が格納されている値リスト、および、一意的な順序集合配列の順に、当該項目値番号を指示するためのポインタ値が格納されたポインタ配列からなる情報ブロックを保持し、各メモリにて保持された情報ブロックの集合体により、グローバルな情報ブロックが形成されるような情報処理システムであって、
前記情報処理ユニットが、グローバルな情報ブロックにおける項目値の順位を示す値を収容するグローバル値番号配列と、制御装置により受理された順位を指定する命令にしたがって、前記グローバル値番号配列中の値を特定し、その値が示す、値リスト中の項目値を取り出す項目値取り出し手段とを備えたことを特徴とする情報処理システムが提供される。
また、本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、値のリストを保持するように構成された情報処理システムであって、
前記各メモリモジュールの制御装置が、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信手段と、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信手段と、
前記データ受信手段により受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定手段とを備えたことを特徴とする情報処理システムにより達成される。
さらに、本発明の目的は、それぞれ、メモリおよび制御装置を有する、複数のメモリモジュールと、
メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、
各メモリモジュールのメモリが、それぞれ、値のリストを保持するように構成された情報処理システムにおいて、
各メモリモジュールにおいて、
他のメモリモジュールに、前記値のリストに含まれる値を送信するデータ送信ステップと、
他のメモリモジュールから、前記値のリストに含まれる値を受信するデータ受信ステップと、
前記データ受信ステップにおいて受信された他のメモリモジュールの値のリストを参照して、他のすべてのメモリモジュールの値のリストに含まれる値を考慮したグローバルな値の順位を決定し、前記グローバルな値の順位を格納するためのグローバル順位格納配列の、自己のメモリモジュールの値に対応する位置に、前記決定された順位を格納する順位判定ステップとを備えたことを特徴とする情報処理方法によっても達成される。
本発明によれば、分散メモリ型において、処理と通信を統合することで著しく高速な並列処理を実現可能な情報処理装置を提供することが可能となる。
[ハードウェア構成]
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図1は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。図1に示すように、この実施の形態においては、複数のプロセッサ付きメモリモジュール(以下、「PMM」と称する)12−0、12−1、12−2、・・・がリング状に配置され、隣接するメモリモジュール間を、時計回りにデータを伝達する第1のバス(たとえば、符号14−0、14−1参照)、および、反時計回りにデータを伝達する第2のバス(たとえば、符号16−0、16−1参照)が接続している。第1のバスおよび第2のバスでは、PMM間のパケット通信が実行される。本実施の形態において、このパケット通信が実行される伝送路(パケット伝送路)を、第1のバスおよび第2のバスと称する。
図2は、PMM12の構造の一例を示す図である。図2に示すように、PMM12は、命令にしたがったメモリのアクセス、演算の実行などを制御する制御回路20と、バスインタフェース(I/F)22と、メモリ24とを備えている。
メモリ24は、複数のバンクBANK0、1、・・・、n(符号26−0、・・・、n)を有し、それぞれに、後述する所定の配列を記憶できるようになっている。
また、制御回路20は、外部の他のコンピュータ等とのデータ授受が可能である。また、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにアクセスできるようにしても良い。
[データの記憶構造]
図3は、表形式データの一例を示す図である。このように、表形式のデータでは、レコードごとに種々の項目(この例では、「性別」、「年齢」、「身長」および「体重」)に値が与えられている。本実施の形態にかかる情報処理装置では、これら表形式データを、原理的には、図4に示すようなデータ形式に基づいて保持する。
図4に示すように、順序集合の配列OrdSetには、順序番号ごとにレコード番号が値として配置される。この例では、すべてのレコードが表されるため、順序番号とレコード番号とは一致する。
たとえば、性別に関しては、実際の項目値である「男」或いは「女」という値が、所定の順序にてソートされた値リストVLと、順序集合の配列OrdSet中の要素(レコード番号)のそれぞれに対応して、当該レコード番号が指し示す値リスト中の番号が格納された、値リストへのポインタ配列VNoとにより、表形式データを表す。この値リストVLおよびポインタ配列VNoの組み合わせを「情報ブロック」とも称する(性別に関する情報ブロックは符号401に対応する)。
順序集合の配列OrdSet中の要素(レコード番号)が指し示す位置にある、ポインタ配列VNo中の値を特定し、さらに、その値が指し示す位置にある値リストVL中の項目値を取り出すことにより、レコード番号に対応する項目値を取得することができる。他の項目の情報ブロックについても同様の構造である。
単一のコンピュータが、単一のメモリ(物理的には複数であっても良いが、単一のアドレス空間に配置されアクセスされるという意味で単一のメモリ)であれば、当該メモリに、順序集合の配列OrdSet、各情報ブロックを構成する値リストVLおよびポインタ配列VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、その大きさにともなってメモリ容量も大きくなるため、これらを分散配置できるのが望ましい。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが望ましい。
そこで、本実施の形態においては、複数のPMMが、重なることなくレコードのデータを分掌把握し、PMM同士のパケット通信により、高速な検索、クロス集計、検索を実現している。
[コンパイル処理]
まず、複数のPMMにデータを分散配置し、かつ、これらを利用可能にするための処理(コンパイル処理)について説明する。たとえば、図5に示すように、4つのPMM(PMM−0〜PMM−3)に、所定のレコード数のデータを収容することを考える。この例では、レコード番号0〜2に関する一連のデータ、レコード番号3、4に関する一連のデータ、レコード番号5〜7に関する一連のデータ、および、レコード番号8、9に関する一連のデータを、それぞれ記憶することとした。各PMMにおいても、上記表形式データの部分は、情報ブロックの形式で記憶される。
図6および図7は、初期的にPMM−0〜4の各々にてそれぞれ分掌される表形式データの例を示す図である。これらの図から、各PMMには、項目ごとの情報ブロックの部分集合などが収容される。たとえば、図6において、項目「性別」の情報ブロック601では、もとのポインタ配列VNo(図4参照)の部分集合VNo(これも「ポインタ配列」と称する。)と、もとの値リストVL(図4参照)の部分集合VL(これも「値リスト」と称する。)とが含まれる。
ポインタ配列VNoの要素の数は、PMMが分掌するレコードの数に一致する。これに対して、値リストVLは、ポインタ配列VNoが示す値のみが抽出される。項目「性別」については、ポインタ配列VNoの値が、値リストVL全ての要素(項目値)を指し示しているため、値リストVLと、もとの値リストVLとは一致する。その一方、項目「年齢」、「身長」および「体重」については、もとの値リストVLから、ポインタ配列中の要素が指し示す値のみが、もとの値リストVLの部分集合として取り出されることが理解できるであろう。
さらに、分掌される情報ブロックにおいては、各PMMにおいて、ポインタ配列VNoの要素により適切に値リストVLの要素(項目値)が指し示されるように、つまり、PMM内のローカルな処理(ポインタ値の指定や項目値の指定)においても整合性が保たれるように、その要素は、対応するもとのポインタ配列VNoの要素から変換されている。
前述したように、分掌される情報ブロックにおいては、値リストVLにおいて、当該分掌された情報ブロックにおいて必要な要素(項目値)のみを保持している。よって、ポインタ配列VNoおよび値リストVLによって、ローカルな処理の整合性は保たれる。しかしながら、PMM間での処理の整合性を保つため、各PMMにて分掌される値リストVLの要素(項目値)の、値リスト全体における位置づけ、つまり、各項目値が、値リスト全体において、所定の順序のもと何番目であるかを把握する必要がある。そこで、本実施の形態では、分掌される各情報ブロックにおいて、グローバル値番号配列GVNoを配置し、項目値に対応する値の位置を示す番号を収容できるようにしている。
各PMMには、上記情報ブロックの部分集合を分掌するためのオフセット値(OFFSET)が割り当てられる。このオフセット値OFFSETは、PMMが分掌するレコードに関するもとの順序集合OrdSetにおける先頭の値に対応する。
また、各PMMにおいては、ローカルな処理における整合性をたもつため、新たな順序集合OrdSetが作られる。順序集合OrdSetの要素の数は、PMMが分掌するレコード数と一致する。その一方、PMM間での処理の整合性を保つため、各PMMが分掌するレコードが、全体の中ではどういった番号(順序集合の要素)を持っているかを把握しておく必要がある。このため、全体における各レコードの番号を収容したグローバル順序集合配列GOrdを設けている。
図8は、本実施の形態にかかるコンパイル処理を概略的に示すフローチャートである。図8に示すように、まず、各PMMに、図6〜図7に示す初期的な情報ブロックが生成される(ステップ801)。これは、たとえば、外部の他のコンピュータから、PMMに、それぞれが分掌すべき、順序集合OrdSet、各情報ブロックを構成するポインタ配列VNo、値リストVL、および、オフセット値OFFSETが与えられることにより実現できる。これら配列は、各PMM内のメモリ24に記憶される。
ステップ802以降は、各PMMにおけるローカルな処理およびPMM間のパケット通信にかかる処理に移行する。各PMMの制御回路20は、オフセット値を参照して、グローバル順序集合配列GOrd中に配置するそれぞれの値を算出し、配列中に値を配置する(ステップ802)。図9は、図6〜図7に示す例でのグローバル順序集合配列GOrdへの値の配置を示す図である。ここでは、順序集合の値にオフセット値OFFSETを加えたものを、グローバル順序集合配列GOrdの対応する位置に配置すればよい。ステップ1002は、各PMMにおけるローカルな処理で実現できる。
次いで、グローバル値リスト番号配列GVNoの値が決定される(ステップ803)。このグローバル値リスト番号配列GVNoの値の決定について、以下に詳細に説明する。以下、時計回りのバス14が、4チャンネルの伝送路を有し、同様に、反時計回りのバス16も、4チャンネルの伝送路を有すると考える。以下、時計回りの各チャンネルのバスについて、U−0〜U−3と称し、反時計回りの各チャンネルのバスについては、D−0〜D−3と称する。基本的には、PMMは、図14Aに示すように、バスからパケットを受理すると(ステップ1401)、パケット中のVLの値から、自己のVLの値と同一の値を消去して、送られてきたバスと同一のバスに、同一方向に、値の消去後のパケットを送信する(ステップ1403)。より詳細に、各PMMの処理について説明する。
(第1のタイミング)
図10に示すように、最初のタイミングで、PMM−0は、バスU−0に、PMM−0自身のVLの値の一覧を含むパケットを送出する(符号1001参照)。PMM−1は、バスU−1に、PMM−1自身のVLの値の一覧を含むパケットを送出する(符号1002参照)。同様に、PMM−2、PMM−3は、それぞれ、バスD−1、D−0に、自身のVLの値の一覧を含むパケットを送出する(符号1003、1004参照)。この例では、U−0、U−1は、それぞれ、PMM−0、PMM−1のVLの値を含むパケットを伝送するために用いられ、U−2、U−3は使用されない。また、D−0、D−1は、それぞれ、PMM−3、PMM−2のVLの値を含むパケットを伝送するために用いられ、D−2、D−3は使用されない。
(第2のタイミング)
パケットを受理したPMMは、そのパケットを、同じ方向に次のパケットに転送する。これに先立って、受理したパケットの値を参照して、自身の保持するVLの値と同一の値が存在していた場合には、これを消去した上で、パケットを転送する。図11に示すように、この例では、PMM−1は、PMM−0からバスU−0を介して伝送されたパケットを参照し、PMM−1自身のVLの値と同一の値があれば、これを消去した上で、バスU−0を介して、PMM−2に転送する。同様に、PMM−2は、PMM−3からバスD−0を介して伝送されたパケットを参照し、PMM−2自身のVLの値と同一の値があれば、これを消去した上で、バスD−0を介してPMM−1に転送する。
(第3のタイミング)
さらに、パケットを受理したPMMにおいては、受理したパケット中のVLの値を参照して、自身のVLと同一値を消去して、同じ方向の次のパケットに転送する。図12においては、PMM−1は、PMM−2から、バスD−0、D−1を介して伝送された、それぞれのパケット中のVLの値を参照して、PMM−1自身のVLの値と同一の値が存在していた場合には、これを消去した上で、それぞれのパケットを、バスD−0、D−1を介して、PMM−1に転送する。また、PMM−2は、PMM−1から、バスU−0、U−1を介して伝送された、それぞれのパケット中のVLの値を参照して、PMM−2自身のVLの値と同一の値が存在していた場合には、これを消去した上で、それぞれのパケットを、バスU−0、U−1を介して、PMM−3に転送する。
(第4のタイミング)
次のタイミングでも、パケットを受理したPMMにおいて、受理したパケット中のVLの値を参照して、自身のVLと同一値を消去する。たとえば、図13の例では、PMM−0においては、バスD−0、D−1を介して伝送された、それぞれのパケット中のVLの値を参照して、PMM−0自身のVLの値と同一の値が存在していた場合には、それぞれのパケット中のVLの値を消去する。同様に、PMM−3においては、バスU−0、U−1を介して伝送されたパケット中のVLの値を参照して、PMM−3自身のVLの値と同一の値が存在した場合には、それぞれのパケット中のVLの値を消去する。
図10〜図13に示す例では、図13に示す段階で、それぞれのPMMのVLの値が、全ての他のPMMを通り、他のPMMにおける同一値(つまり重複値)が削除されている状態となる。PMMが4つ以上の場合には、さらに、同一値の削除および転送が繰り返される。
以下、第1のタイミング〜第4のタイミングについて、U−0、U−1を伝送されるパケットに着目して、VLの値の消去について再度説明する。
第1のタイミング〜第4のタイミングで、それぞれのバスに以下の値を含むパケットが伝送される。
第1のタイミング
U−0:PMM−0のVLの値全て
U−1:PMM−1のVLの値全て
第2のタイミング
U−0:(PMM−0のVLの値全て)
−(PMM−1においても重複して存在する値)
U−1:PMM−1のVLの値全て
第3のタイミング
U−0:(PMM−0のVLの値全て)
−(PMM−1においても重複して存在する値)
−(PMM−2においても重複して存在する値)
U−1:(PMM−1のVLの値全て)
−(PMM−2においても重複して存在する値)
第4のタイミング
U−0:(PMM−0のVLの値全て)
−(PMM−1においても重複して存在する値)
−(PMM−2においても重複して存在する値)
−(PMM−3においても重複して存在する値)
U−1:(PMM−1のVLの値全て)
−(PMM−2においても重複して存在する値)
−(PMM−3においても重複して存在する値)
したがって、第4のタイミングが終了した時点で、PMM−3において保持される、バスU−0およびU−1からのパケットの値の和(和集合:「U−0+U−1」と表す)は、以下のような値を含むものとなる。
U−0+U−1:(重複のないPMM−0およびPMM−1のVLの値全て)
−(PMM−2或いはPMM−3において重複して存在する値)
したがって、PMM−2およびPMM−3は、「U−0+U−1」を参照することにより、それぞれのPMMにおけるVLの値を、正しく(つまり他のPMMの順序を考慮した状態で)順序付けることが可能となる。
この順序付けについて、以下に説明する。PMM−0は、受理したバスD−0からのパケットに含まれるVLの値を参照して、自己のGVNoの値を更新する。PMM−0では、既にVLを含むパケットを保持しているため、図14Bに示す、あるバスからのパケットの受理(ステップ1411)は省略される。たとえば、PMM−0は、D−0を経て与えられたパケット中のVLの値(つまり、PMM−3のVLの値:この例では[φ])を参照して、その値を考慮して、自己のVLの値の順位を決定し(ステップ1412)、グローバル値番号配列GVNoの値を決定する(ステップ1413)。上記D−0を経て与えられたパケット中のVLの値は[φ]であるため、GVNoの値は変化しない(図15の符号1501参照)。このパケットはU−0を経て、PMM−1に送られる(ステップ1414)。
また、PMM−0は、D−1を経て与えられたパケット中のVLの値(つまり、PMM−2のVLの値:ここでは、[20,33])を参照して、その値を考慮して、事故のVLの値の順位を決定し(ステップ1412)、グローバル値番号配列GVNoの値を決定する(ステップ1413、図15の符号1502参照)。このパケットは、U−1を経て、PMM−1に送られる(ステップ1414)。なお、PMM−0においては、D−0、D−1を経て受理したパケットを、それぞれU−0、U−1に向けて送信している。これ以降、パケットは、それぞれ、U−0、U−1で送信されることになる。
このようにして、必要なパケット中のVLの値を参照し終わると、それぞれのパケット中のVLの値に基づいたGVNoの更新結果が重ね合わせられる(ステップ1416)。より詳細には、GVNoの各値の加算値の総和を、GVNoのもとの値に加えればよい。図15の符号1501に示すように、PMM−3のVLの値を参照して更新されたGVNoが[1,2,3]であり、PMM−2のVLの値を参照して更新されたGVNoが[1,3,4]であるので、重ね合わせの結果、最終的なGVNoの値は、[1,3,4]となる(図15の符号1503参照)。
同様に、PMM−1は、PMM−0からのパケットを受理すると、同様の処理を実行して、受理したそれぞれのパケットを参照し、GVNoの値を更新する(図16の符号1601、1602参照)。ここでも、U−0を経て受信されたパケット中のVLの値(つまり、PMM−3のVLの値)に参照して更新されたGVNoが[0,4]であり、U−1を経て受信されたパケット中のVLの値(つまり、PMM−2のVLの値)を参照して更新されたGVNoが[0,5]であるから、重ね合わせの結果、最終的なGVNoの値は、[0,5]となる(図16の符号1603参照)。
その一方、PMM−3においては、U−0、U−1からそれぞれパケットを受理している。U−0を経て受理したパケット中のVLの値は、PMM−0のVLの値に基づくものであり、かつ、U−1を経て受理したパケット中のVLの値は、PMM−1のVLの値に基づくものである。PMM−3も、図14Bに示すような処理を実行して、GVNoの値を更新するとともに、更新結果を重ね合わせて、最終的なGVNoの値を得る(図17の符号1701〜1703参照)。その後、PMM−3は、PMM−0のVLの値に基づくパケットを、D−0を経てPMM−2に送信し、かつ、PMM−1のVLの値に基づくパケットを、D−1を経てPMM−2に送信する(図18の符号1801〜1803参照)。
このように、グローバル順序集合配列GOrdおよびグローバル値番号配列GVNoを求めることでコンパイルが終了する。コンパイル処理が終了すると、検索、クロス集計、ソートなどの処理を円滑かつ迅速に実行することができる。
[検索処理]
次に、検索処理について説明する。図19に示すように、まず、各PMMはて、検索対象となった項目について、値リストVLと同じサイズのフラグ配列を作成し(ステップ1901)、次いで、フラグ配列の値を合否条件でセットアップする(ステップ1902)。このセットアップに際して、検索条件に合致する項目値に対応するフラグ配列の値として「1」を設定し、それ以外のフラグ配列の値として「0」を設定する。
次いで、各PMMは、検索結果格納先領域である新たなグローバル順序集合配列GOrd’およびOrdSet’とを生成する(ステップ1903)。図20は、各PMMにおいて、値がセットアップされたフラグ配列および領域として新たなグローバル順序集合配列および順序集合配列が生成された状態の一例を示す図である。この例では、「年齢」という項目について、「20歳以上24歳以下」のレコードを検索することとしている。したがって、各PMMにおいて、項目値が20以上24以下であるようなものに対応するフラグ配列の値が「1」となっている。
次に、合否判定実行される(ステップ1904)。この処理においては、順序集合配列OrdSetの値ごとに、値リストへのポインタVNoの値(ポインタ値)が見出され、当該ポインタ値が示すフラグ配列の値を取得する(ステップ1911)。この値が「0」であれば(ステップ1912でノー(No))、なんら処理を実行しない。その一方、フラグ配列の値が「1」であれば(ステップ1912でイエス(Yes))、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に、順次、処理に関連するグローバル順序集合配列GOrdおよび順序集合配列OrdSetの値が、それぞれ収容される(ステップ1913)。
順序集合配列の末尾の要素まで、ステップ1911〜1613の処理が繰り返される(ステップ1914、1615参照)。上記図19の処理は、各PMMにおいてローカルに、かつ、並列的に実行される。図21は、各PMMにおいて、図19の処理が実行され、ローカルにかつ並列的に、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に値が配置される状態の例を示す。また、図22は、配列中、不要な領域を削除した状態を示す(符号2201〜2204参照)。
上記処理の後、PMM間のパケット通信にかかる処理に移行する。本実施の形態において、図1に示す時計回りに4チャンネルのバス(パケット伝送路)、反時計回りにも4つのバス(パケット伝送路)が存在すると考える。時計回りのバスをU−0〜U−3と称し、反時計回りのバスをD−0〜D−3と称する。
図23に示すように、バスU−0、U−1およびU−2は、それぞれ、PMM−0、PMM−1およびPMM−2のグローバル順序集合配列GOrd’を伝達し、バスD−0、D−1およびD−2は、それぞれ、PMM−3、PMM−2およびPMM−1のグローバル順序集合配列GOrd’を、バスU−0〜2とは逆向きに伝達する。
たとえば、PMM−0は、U−0を利用して、自身のGOrd’を含むパケットを送信し、D−0〜D−2から、それぞれ、PMM−3〜PMM−0のGOrd’を含むパケットを受信する。PMM−1は、U−1、D−2を利用して、自身のGOrd’を含むパケットを送信し、U−0、D−0およびD−1から、それぞれ、PMM−0、PMM−3およびPMM−2のGOrd’を含むパケットを受信する。
PMM−2は、U−2、D−1を利用して、自身のGOrd’を含むパケットを送信し、U−0、U−1およびD−0から、それぞれ、PMM−0、PMM−1およびPMM−3のGOrd’を含むパケットを受信する。また、PMM−3は、D−0を利用して、自身のGOrd’を含むパケットを送信し、U−0〜U−2から、それぞれ、PMM−0〜PMM−2のGOrd’を含むパケットを受信する。
各PMMにおける処理について、以下に説明する。図24に示すように、いずれかのバスからパケットを受理すると(ステップ2401)、PMMは、パケット中のGOrd’の値を参照して、その値を考慮した自身のGOrd’の値の順位を特定する(ステップ2402)。この順位に対応する値は、新たなグローバル順序集合配列GOrd”に収容される(ステップ2403)。PMMは、受理した全てのパケットに関して、同様な処理を実行する(ステップ2404参照)。したがって、受理したパケットの数だけ、GOrd”が生成されることになる。
図25〜図28は、それぞれ、PMM−0〜PMM−2にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示している。それぞれの図において、左側から3つのブロックが、新たに生成されたGord”を示す。
全てのパケットを受理した場合には、PMMは、各GOrd”中の各値への加算値の総和を算出し、得られた総和を、GOrd”のもとの値に加える(ステップ2405)。この加算結果からなる配列が、最終的に得るべきグローバル順序集合配列となる。図25〜図28のそれぞれの右端のブロックにおいて、GOrd”が求められたグローバル順序集合配列に相当する。
なお、値の加算処理(ステップ2405)は、全てのパケットを受理した後に行なう必要はなく、パケットが受理され、新たなグローバル順序集合配列GOrd”が生成されるごとに、GOrd”に対する加算値を、もとの値に加えても良い。
このような処理が、各PMMにて並列的に実行されることにより、PMMのグローバル順序集合配列GOrd”の値が確定する。配列GOrd”の値は、検索により抽出されたレコードの、全体における順位、つまり、グローバルな順位を表す。GOrd”を新たなGOrdとすれば、当該配列GOrd中の値にしたがって、順次レコードを取り出せば、所定の順序にしたがった検索結果を取得することが可能となる。
図29における各PMMの配列GOrdが、それぞれ、検索処理の結果得られた新たな配列である。この配列GOrdの値の小さな順に、対応する配列OrdSetの値、この値が示す値リストVLの値を取り出せば、「年齢」という項目について「20歳以上24歳以下」のレコードが、レコード番号(順序集合)の順でリストされ得る。
[ソート処理]
次に、ソート処理について説明する。ここでも、コンパイル処理が終了した状態から処理が開始される。図30に示すように、各PMMは、ソートすべき項目に関する値リストVLと同一のサイズの、存在数配列の領域を生成し(ステップ30101)、領域中の各値に初期値「0」を与える(ステップ3002)。図31は、「年齢」という項目について、それぞれのPMMにおいて、値リストVLと同一のサイズを有する領域が作られ、それぞれに初期値「0」が与えられた状態を示す。
次いで、各PMMは、存在数配列のそれぞれに対するカウントアップ処理を実行する(ステップ3003)。より詳細には、各PMMは、順序集合配列OrdSetの値を参照して、ソートすべき項目のポインタ配列VNoの値を特定する(ステップ3011)。次いで、各PMMは、存在数配列中、当該ポインタ配列VNoの値に示される位置の値をカウントアップする(ステップ3012)。このような処理が、順序集合配列OrdSetの末尾まで繰り返される(ステップ3013,3014参照)。
図32は、各PMMにおけるカウントアップの一例を示す図である。たとえば、PMM−0において、順序集合配列OrdSetの要素「0」が示す位置の、年齢のポインタ配列VNoの値は「0」である。したがって、存在数配列の「第0番目」の位置、つまり、先頭の位置にある値を、「0」から「1」にカウントアップする。他のPMMにおいても、同様の処理が実行されていることが理解できるであろう。
カウントアップ処理が終了すると、図33に示すように、各PMMは、存在数配列の要素を累計して、当該存在数配列を累計数配列に変換する(ステップ3301)。累計数配列の要素である累計数は、項目値を指し示すレコードの数を示す存在数を考慮して、当該累計数が配置されている位置の項目値を指し示すレコードの先頭の位置を示すようになっている。具体的には、各PMMが、配列の位置を示すパラメータ「i」を初期化して(ステップ3311)、パラメータが示す存在数配列中の値を取り出し(ステップ3312)、パラメータ「i」が示す位置より、後ろの位置、つまり、「i+1」、「i+2」、・・・の位置の存在数配列の値に、ステップ3312で取り出された値を、それぞれ加算する(ステップ3313)。ステップ3312、3313に示す処理を、値リストVLの要素(項目値)の個数だけ繰り返せばよい(ステップ3314、3315参照)。
このようにして、たとえば、図34に示すような累計数配列を得ることができる。さらに、各PMMは、後にPMM全体における順位を格納するための配列GVNo、GOrd’およびOrdSet’のための領域も作られる(ステップ3302)。これら配列のサイズは、それぞれ、値リストVLのサイズと一致する。
次に、各PMMにおけるローカルなソート処理が実行される。図35に示すように、各PMMは、順序集合配列OrdSetの値を取り出し(ステップ3501)、次いで、ポインタ配列VNo中、配列OrdSetの値が指し示す位置の値(ポインタ値)を特定する(ステップ3502)。その後、各PMMは、ソートすべき項目のグローバル値番号配列GVNo中、ポインタ配列VNoの値が示す位置の値を取得する(ステップ3503)。この値は、後述する値の格納処理に利用される。その一方、上記累計数配列においても、ポインタ配列VNoが示す位置の値が取得される(ステップ3504)。この値は、後述する値の格納処理において、配列中の位置を指定するために利用される。
次に値の格納処理が実行される。各PMMは、先に生成した配列GVNo中、ステップ3504で取得された累計数配列の値が示す位置に、ステップ3502で取得された、ソートすべき項目に関するGVNoの値を配置する(ステップ3505)。また、各PMMは、配列GOrd’、OrdSet’中、ステップ3504で取得された累計数配列の値が示す位置に、グローバル順序集合配列GOrdおよび順序集合配列OrdSetの値を、それぞれ配置する(ステップ3506)。次いで、処理に用いられた累計数配列の値がインクリメントされる(ステップ3507)。
上記ステップ3501〜3507の処理が、配列OrdSet中の全ての値について、順次実行される(ステップ3508、3509参照)。
図36および図37は、各PMMにおいてローカルなソート処理が実行されている状態の例を示す図である。たとえば、PMM−0に関して、図36においては、配列OrdSetの値「0」の取り出し(ステップ3501参照)、当該OrdSetの値「0」が示す位置の、配列VNoの値「0」の特定(ステップ3502参照)、当該配列VNoの値「0」が示す位置の、配列GVNoの値「1」の取得(ステップ3503)、および、配列VNoの値「0」が示す位置の、累計数配列の値「0」の取得(ステップ3504)が実行されていることが理解できるであろう。また、累計数配列の取得の後、当該累計数配列の値が、「0」から「1」になっていることもわかる(ステップ3507参照)。
また、PMM−0に関して、図37において、ステップ3503で取得された累計数配列の値の示す位置における、配列GVNo、GOrd’およびOrdSet’への、項目「年齢」に関する配列GVNoの値「1」、並びに、配列GOrdの値「0」および配列OrdSetの値「0」の配置(ステップ3505、3506)が示されていることが理解できるであろう。他のPMMについても、図36、37において、同様にステップ3501〜3505に示す処理が実行されていることがわかる。
上記ローカルな(つまり各PMMにおける)ソート処理により、図46に示すような配列を得ることができる。ローカルなソート処理の後、PMM間のパケット通信にかかる処理に移行する。本実施の形態において、図1に示す時計回りに4チャンネルのバス(パケット伝送路)、反時計回りにも4つのバス(パケット伝送路)が存在すると考える。時計回りのバスをU−0〜U−3と称し、反時計回りのバスをD−0〜D−3と称する。
図38に示すように、バスU−0、U−1およびU−2は、それぞれ、PMM−0、PMM−1およびPMM−2の、グローバル順序集合配列GOrd’およびグローバル値番号配列GVNo’を伝達し、バスD−0、D−1およびD−2は、それぞれ、PMM−3、PMM−2およびPMM−1のグローバル順序集合配列GOrd’ およびグローバル値番号配列GVNo’を、バスU−0〜2とは逆向きに伝達する。
たとえば、PMM−0は、U−0を利用して、自身のGOrd’およびGVNo’を含むパケットを送信し、D−0〜D−2から、それぞれ、PMM−3〜PMM−0のGOrd’および GVNo’を含むパケットを受信する。PMM−1は、U−1、D−2を利用して、自身のGOrd’およびGVNo’を含むパケットを送信し、U−0、D−0およびD−1から、それぞれ、PMM−0、PMM−3およびPMM−2のGOrd’およびGVNo’を含むパケットを受信する。
PMM−2は、U−2、D−1を利用して、自身のGOrd’ およびGVNo’を含むパケットを送信し、U−0、U−1およびD−0から、それぞれ、PMM−0、PMM−1およびPMM−3のGOrd’ およびGVNo’を含むパケットを受信する。また、PMM−3は、D−0を利用して、自身のGOrd’ およびGVNo’を含むパケットを送信し、U−0〜U−2から、それぞれ、PMM−0〜PMM−2のGOrd’ およびGVNo’を含むパケットを受信する。
各PMMにおける処理について、以下に説明する。図39に示すように、いずれかのバスからパケットを受理すると(ステップ3901)、PMMは、パケット中の値GVNo’の値を参照して、その値を考慮した自身のGVNo’の値の順位を特定する(ステップ3902)。この順位に対応する値は、新たなグローバル順序集合配列GOrd”に収容される(ステップ2403)。なお、配列GVNo’の値が同じときには、それぞれの対応するGOrd’の値が参照され、GOrd’の値が小さいほうが、上位となる。
PMMは、受理した全てのパケットに関して、同様な処理を実行する(ステップ2404参照)。したがって、受理したパケットの数だけ、GOrd”が生成されることになる。
図40〜図43は、それぞれ、PMM−0〜PMM−2にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示している。それぞれの図において、左側から3つのブロックが、新たに生成されたGord”を示す。
全てのパケットを受理した場合には、PMMは、各GOrd”中の各値への加算値の総和を算出し、得られた総和を、GOrd”のもとの値に加える(ステップ3905)。この加算結果からなる配列が、最終的に得るべきグローバル順序集合配列となる。図40〜図43において、右端のブロックが、GOrd”が求められたグローバル順序集合配列に相当する。
なお、値の加算処理(ステップ3905)は、全てのパケットを受理した後に行なう必要はなく、パケットが受理され、新たなグローバル順序集合配列GOrd”が生成されるごとに、GOrd”に対する加算値を、もとの値に加えても良い。このようにして、ソート順を示すグローバル順序集合GOrd’’が完成する。処理が終了すると、生成されたGOrd’’をGOrdと読み替え、かつ、OrdSet’をOrdSetと読み替えれば良い。これにより、各PMMにおいて、図44に示すような配列が取得される。ここで、配列GOrdの順に、レコードを順次取り出すことにより、ソートされた表形式データを得ることができる(図45参照)。
上述したように、生成されたGOrd”をGOrdと読み替え、かつ、OrdSet’をOrdSetと読み替えることにより、たとえば、各PMMにおいて、図44に示すような配列が取得される。ここで、配列GOrdの順に、レコードを順次取り出すことにより、ソートされた表形式データを得ることができる(図45参照)。
[システム構成、本発明の意義]
本発明にかかる情報処理システムは、たとえば、フロントエンドとなる端末装置と、リング状のチャネルを介して接続され、端末装置からの命令を、それぞれのPMMが受理することにより、PMMにおいて、上述したコンパイル、検索、クロス集計ソートの処理が実行できる。また。各PMMはパケットを何れかのバスを利用して送出すればよく、PMM間の同期等を外部から制御する必要もない。
また、制御装置には、上記コンパイル、検索などの繰り返し演算のためのハードウェア構成を備えたアクセラレータチップのほか、これに加えて、汎用CPUを含めても良い。汎用CPUは、端末装置からチャネルを介して伝達された命令を解釈し、アクセラレータチップに必要な指示を与えることができる。
さらに、制御装置、特に、その中のアクセラレータチップには、順序集合配列、グローバル順序集合配列など作業に必要な種々の配列を収容するためのレジスタ群が設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必要な値をロードしてしまえば、コンパイル、検索、クロス集計およびソートにかかる上述した処理演算中には、制御装置はメモリにアクセスすることなく、レジスタから値を読み出し、或いは、レジスタに値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる(演算処理前のロード、および、処理結果の書き込み)ことができ、処理時間を著しく短縮することが可能となる。
次に、本発明にて導入した配列GOrdおよび配列GVNoの意義について説明する。本発明において、グローバル順序集合配列GOrdは、各PMMが掌握するローカルな表形式データを集合させたグローバルな表形式データ中、各PMMの掌握する表形式データの各レコードの位置(順位)を示している。すなわち、本発明においては、グローバル順序集合配列GOrdおよび順序集合配列OrdSetにより、レコードの位置情報を、グローバルな成分とローカルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能となるとともに、各PMMが単独で処理を実行することも可能となる。
本実施の形態においては、PMMが各項目の情報ブロックを保持するように構成されていたが、PMMが表形式データをそのまま保持するような場合でも、上記GOrdは、後述するように同様に機能する。
たとえば、本実施の形態においてコンパイルが終了した状態(たとえば、図20参照)で、グローバル順序集合配列GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式データ全体のビューを作成することができる。検索が終了した状態(たとえば、図29参照)やソートが終了した状態(たとえば、図44参照)においても、同様である。
より詳細には、たとえば、図20において、PMM−2の制御回路20が、順位を示す値「5」を受理すると、グローバル順序集合配列GOrd中の値「5」に関連する(ローカルな)順序集合配列OrdSet中の値「0」が特定される。さらに、項目「年齢」に関して、ポインタ配列PV中の値「1」が特定され、次いで、値リストVL中の項目値「20」を特定することができる。無論、他の項目についても、ポインタ配列PV中の値、および、当該配列PV中の値にて特定される値リストVL中の項目値が特定される。これにより、順位を示す値に対応するレコードを取り出すことが可能となる。
また、情報ブロックを保持しないような構成であっても、上述したような、順位を示す値の受理に応答して、対応するレコードの取り出しを実現できる。これについては、図60を参照しつつ、後述する。
次に、情報ブロックを保持しないような構成を参照して、配列GOrdの意義について、さらに説明する。たとえば、図47の符号4710に示すように、表形式データを、値(項目値)そのものをソートするのではなく、項目を特定するアドレス情報となる順序集合配列の値をソートして、配列中の値を再配置することにより実現する場合を考える。図47の符号4700に示すような、順序集合配列OrdSetが、ソート後のレコードの順序を示している。
次に、上記順序集合配列OrdSetおよび表形式データの本体(図47の符号4700参照)を、複数のPMMにて分掌把握することを考える。順序集合配列OrdSetを分割し、かつ、表形式データ本体を分割して、分割された配列OrdSetおよび表形式データ本体の組を、PMMに分掌させた例を図48に示す。この場合、あるPMM配列OrdSet中の値が、他のPMMが保持するレコードを指し示す場合もある(たとえば、矢印4801、4802参照)。したがって、各PMMにて単独で実行できる処理が実質上存在しない。また、図48の例で、さらに、項目「性別」を「女性」という項目値に絞り込む(検索する)場合に、絞り込まれたレコードを示す値を収容する配列を、どのように分掌すれば良いか、明確な基準を作ることができない。つまり、上述した状態での検索は実質的に不可能となる。
これに対して、図49に示すように、順序集合配列OrdSetによって、各PMMが把握する表形式データの部分集合における、ローカルなソートされたレコードの順位を掌握し、かつ、グローバル順序集合配列GOrdが、ソートされたレコードのそれぞれの、全体における順位を掌握している。(ローカルな)順序集合配列OrdSetは、自己の掌握する表形式データの部分集合のレコードを指し示すため、PMM単独での処理が可能となる。
図49に示す例における、順位を示す値の受理に応答したレコードの取り出しについても、以下に説明する。たとえば、PMM−0の制御回路が、順位を示す値「5」を受理すると、グローバル順序集合配列GOrd中の値「5」に関連する(ローカルな)順序集合配列OrdSet中の値「1」が特定される。これにより、PMM−0内の、「性別:男」、「年齢:21」、「身長:172」および「体重:64」というレコードが取り出される。
さらに、特に、ここで注目すべきは、(ローカルな)順序集合配列OrdSetの値は、ローカルなソートが反映されるため、値の順位の逆転が生じ得るのに対して、グローバル順序集合配列GOrdの値が昇順になっていることである。これにより、高速なPMM間の処理およびPMM内の処理が可能となる。無論、検索処理やクロス集計処理の後においても、グローバル順序集合配列GOrdの値は昇順になっている。
このように配列GOrdが昇順であることは、以下のような利点を生じる。たとえば、先に説明した検索処理において、配列GOrd(処理に使用されるものは配列GOrd’)が昇順であるため、値の比較を高速に実現できる(図24〜図28参照)。同様に、先に説明したソート処理においても、配列GOrd(処理に使用されるものは配列GOrd’)が昇順であるため(これに加えて、後述する配列GVNoも昇順であるため)、値の比較処理を高速に実現できる(図39〜図43参照)。
また、ソートされたレコードを取り出して、ソートされたビューを作成する場合にも、各PMMは、グローバル順序集合配列GOrdが昇順であるから、先頭のレコードから順に、データを出力していけばよいため、処理を高速化することができる。
また、グローバル値番号配列GVNoを利用して、項目値を特定して取り出すこと、つまり、グローバルな表形式データにおける値(項目値)の順位を示す情報を、PMMが受理し、その順位に対応する項目値を取り出すことも有用である。たとえば、図20において、項目「年齢」に関して、先頭、つまり、第0番の項目値を知るために、値の順位「0」を示す命令を受理したPMM−1が、グローバル値番号配列GVNo中の値「0」に関連する値リストVL中の値「16」を特定することができる。無論、命令を受理したPMM−2が同様に動作しても良い。 さらに、グローバル値番号配列GVNoも昇順となる。これは、各PMMにて掌握される(ローカルな)値リストの項目値が昇順であれば、その順序は保存されるからである。したがって、上記ソート処理において、値の比較処理を高速に実現できる(図39〜図43参照)。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
前記実施の形態においては、PMMを、一方が時計回りにパケットを伝送する第1のバス(第1の伝送路)、他方が反時計回りにパケットを伝送する第2のバス(第2の伝送路)にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するPMMを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、PMMの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序集合配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。
さらに、前記実施の形態においては、PMMがデータをパケット化して伝送路に送信しているがこれに限定されるものではなく、パケット以外の形態でデータを送信しても良いことは言うまでもない。また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の3つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、3つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関する検索、ソートおよび集計を実現することができる。
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。
また、前記実施の形態において、同一値の消去は、たとえば、コンパイル処理における第2のタイミング〜第4のタイミング(図11〜図13)に示すように、各PMMに割り当てられたチャンネルからパケット伝送路を経て受信したパケット中の値を参照して、自己の値と同一の値を消去することにより実現しているがこれに限定されるものではなく、同一値の消去を以下のように行うことにより、コンパイル処理において、同一値の消去と、自己のリスト(あるいは配列)中の順位の決定を分離することもできる。
図50に示すように、リング状のパケット伝送路に、単一方向で、それぞれのPMMが、自己のVLの値を送信し、かつ、受信したパケットにおいて、自己のVLの値と同一の値があれば、それを消去した上で、さらに、前記単一方向に隣接する他のPMMに送信するような構成でもよい。図50の最上段に示すように、たとえば、PMM−0は、自己のVLの値[18,21,24]を送信する。その一方、PMM−0は、PMM−3からPMM−3のVLの値[18,24]を受信する。ここで、PMM−0が、自己のVLの値と、PMM−3のVLの値とを比較して、PMM−3のVLの値のうち重複するものを消去すると、図50の2段目に示すように、PMM−0からは、PMM−1に向けて[φ]つまり値のないパケットが送信される。それぞれのPMMにおいて、受信したVLの値から、自己のVLの値を消去して、前記単一方向に消去済みの値を含むパケットを送信することを、PMMの数(図50の例では4回)だけ繰り返すことにより、同一値の証拠された状態を作り出すことができる。さらに、図51に示すように、各PMMにおいて、重複値の消去に先だって、パケットを受信するごとに、受信したパケット中のVLの値を比較して、自己のVLの順位を決定しておき、PMMの数(上記例では4回)だけのパケットを伝送した後、パケットの受信ごとに、GVNoの各要素の値の加算値の総和を求めれば、GVNoの値を取得することもできる。
上記図50および図51に示す単一方向のパケット伝送による順位の決定および同一値の消去はソート処理についても適用することができる。
本発明は、特に、大量のデータを管理するシステム、たとえば、データベース、データウェアハウスに適用することができる。より具体的には、大規模な科学技術計算、受発注管理や証券取引などの基幹業務管理、事務管理に利用可能である。
図1は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。 図2は、本発明の実施の形態にかかるPMMの構造の一例を示す図である。 図3は、表形式データの一例を示す図である。 図4は、本実施の形態において、表形式データを保持する構造の原理を説明するための図である。 図5は、本実施の形態において、各PMMにて分掌把握される配列およびその値を説明する図である。 図6は、初期的にPMM−0〜4の各々にてそれぞれ分掌される表形式データの例を示す図である。 図7は、初期的にPMM−0〜4の各々にてそれぞれ分掌される表形式データの例を示す図である。 図8は、本実施の形態にかかるコンパイル処理を概略的に示すフローチャートである 図9は、図6〜図7に示す例でのグローバル順序集合配列GOrdへの値の配置を示す図である。 図10は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。 図11は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。 図12は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。 図13は、本実施の形態にかかるコンパイル処理におけるパケット伝送の例を示す図である。 図14A、図14Bは、それぞれ、本実施の形態にかかるコンパイル処理における、パケット送信および受理の際にPMMにて実行される処理を示すフローチャートである。 図15は、本実施の形態にかかるコンパイル処理における、パケット受信の際にPMMにて実行される処理を説明する図である。 図16は、本実施の形態にかかるコンパイル処理における、パケット受信の際にPMMにて実行される処理を説明する図である。 図17は、本実施の形態にかかるコンパイル処理における、パケット受信の際にPMMにて実行される処理を説明する図である。 図18は、本実施の形態にかかるコンパイル処理における、パケット受信の際にPMMにて実行される処理を説明する図である。 図19は、本実施の形態にかかる検索処理の部分を示すフローチャートである。 図20は、本実施の形態にかかる検索処理において、パケット伝送に先立って実行される処理を示すフローチャートである。 図21は、各PMMにおいて、図19の処理が実行され、ローカルにかつ並列的に、新たなグローバル順序集合配列GOrd’および順序集合配列OrdSet’に値が配置される状態の例を示す図である。 図22は、配列中、不要な領域を削除した状態を示す(符号2201〜2204参照)。 図23は、本実施の形態にかかる検索処理におけるパケット伝送の例を示す図である。 図24は、本実施の形態にかかる検索処理における、パケット受信の際にPMMにて実行される処理を示すフローチャートである。 図25は、本実施の形態にかかるPMM−0にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図26は、本実施の形態にかかるPMM−1にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図27は、本実施の形態にかかるPMM−2にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図28は、本実施の形態にかかるPMM−3にて、新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図29は、本実施の形態において検索処理により得られた新たな配列を示す図である。 図30は、本実施の形態にかかるソート処理の部分を示すフローチャートである。 図31は、「年齢」という項目について、それぞれのPMMにおいて、値リストVLと同一のサイズを有する領域が作られ、それぞれに初期値「0」が与えられた状態を示す図である。 図32は、各PMMにおけるカウントアップの一例を示す図である。 図33は、本実施の形態にかかるソート処理の部分(累計数配列の生成)を概略的に示すフローチャートである。 図34は、本実施の形態にかかる累計数配列の例を示す図である。 図35は、本実施の形態にかかる、各PMMにて実行されるローカルなソート処理を示すフローチャートである。 図36は、各PMMにおいてローカルなソート処理が実行されている状態の例を示す図である。 図37は、各PMMにおいてローカルなソート処理が実行されている状態の例を示す図である。 図38は、本実施の形態にかかるソート処理におけるにおけるパケット伝送の例を示す図である。 図39は、本実施の形態にかかるソート処理における、パケット受信の際にPMMにて実行される処理を示すフローチャートである。 図40は、本実施の形態にかかるソート処理により、PMM−0にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図41は、本実施の形態にかかるソート処理により、PMM−1にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図42は、本実施の形態にかかるソート処理により、PMM−2にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図43は、本実施の形態にかかるソート処理により、PMM−3にて新たなグローバル順序集合配列GOrd”の値が生成される例を示す図である。 図44は、本実施の形態にかかるソート処理によるソート結果を示す図である。 図45は、本実施の形態にかかるソート処理により得られた、項目「年齢」でソートされた表形式データの例を示す図である。 図46は、本実施の形態においてローカルなソート処理に得られた配列を示す図である。 図47は、表形式データのソートを、アドレス情報の再配置にて表現した例を示す図である。 図48は、図47に示す表形式データを、グローバル順序集合配列無しに、各PMMにて分掌把握した例を示す図である。 図49は、図47に示す表形式データを、グローバル順序集合配列を利用して、各PMMにて分掌把握した例を示す図である。 図50は、本発明にかかる同一値消去の他の手法の例を示す図である。 図51は、図50の手法を用いた場合の各PMMにおける順位の決定を示す図である。
符号の説明
12 PMM
14 第1のバス
16 第2のバス
20 制御回路
22 バスI/F
24 メモリ
26 バンク

Claims (10)

  1. メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置され、表形式データから検索対象となる項目に関する検索条件に合致するレコードを検索する情報処理システムであって、
    各メモリモジュールのメモリが、
    表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
    当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報ブロックと、
    を記憶し、
    各メモリモジュールの制御装置が、
    他のメモリモジュールの制御装置と並列的に動作し、当該メモリモジュールに分散配置されているレコードの中で、検索対象となる項目に関する検索条件に合致する項目値を含むレコードに対応するレコード番号及び指し示す値をグローバル順序集合配列及びローカル順序集合配列から取り出し、第2のグローバル順序集合配列及び第2のローカル順序集合配列にそれぞれ格納する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、当該メモリモジュールの第2のグローバル順序集合配列を他のメモリモジュールへ送信する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、他のメモリモジュールから当該他のメモリモジュールの第2のグローバル順序集合配列を受信する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、他のメモリモジュールの各々から受信した当該他のメモリモジュールの第2のグローバル順序集合配列の中のレコード番号を考慮して当該メモリモジュールの第2のグローバル順序集合配列の中のレコード番号の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第2のグローバル順序集合配列の中のレコード番号の中での当該メモリモジュールの第2のグローバル順序集合配列の中のレコード番号の順位を算出し、当該順位が昇順に格納されている第3のグローバル順序集合配列を生成する手段と、
    を備え、
    各検索条件に合致するレコードの配列が、メモリモジュールのメモリに記憶されている第3のグローバル順序集合配列及び第2のローカル順序集合配列によって、複数のメモリモジュールに分散配置されることを特徴とする情報処理システム。
  2. 項目毎に各メモリモジュールに分散配置されている情報ブロックが、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が所定の順序でソートされて格納されている値リストと、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列と、
    項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
    を含む、請求項1に記載の情報処理システム。
  3. 各メモリモジュールの制御装置において、前記第2のグローバル順序集合配列及び前記第2のローカル順序集合配列を生成する手段が、
    他のメモリモジュールの制御装置と並列的に動作し、検索対象となる項目に関する検索条件に合致する項目値に対応するフラグをセットする手段と、
    他のメモリモジュールの制御装置と並列的に動作し、当該メモリモジュールのメモリに記憶されているローカル順序集合配列から当該メモリモジュールに分散配置されているレコードを指し示す値を取得し、検索対象となる項目に関して、前記取得されたレコードを指し示す値を使って、当該メモリモジュールのメモリに記憶されているポインタ配列から値を取得し、前記取得された値を使って、当該メモリモジュールのメモリに分散配置されているレコードに含まれる項目値に対応するフラグがセットされているかどうかを判定する手段と、
    前記取得されたフラグがセットされていると判定された場合に、検索対象となる項目に関して、フラグがセットされた項目値に対応するグローバル順序集合配列中の値及びローカル順序集合配列中の値を第2のグローバル順序集合配列及び第2のローカル順序番号配列にそれぞれ収容する手段と、
    を含む、請求項2に記載の情報処理システム。
  4. メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置され、レコードを所定の項目に関してソートする情報処理システムであって、
    各メモリモジュールのメモリが、
    表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
    当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報と、
    項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
    を記憶し、
    各メモリモジュールの制御装置が、
    他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内でローカルソートすることにより、ローカルソート後のレコード番号が格納されている第2のグローバル順序集合配列、ローカルソート後のレコードを当該メモリモジュール内で指し示す値が格納されている第2のローカル順序集合配列、及び、ローカルソート後のレコードに含まれる項目値の順位を示す情報が昇順に格納されている第2のグローバル値番号配列を生成する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、当該メモリモジュールの第2のグローバル値番号配列及び第2のグローバル順序集合配列を他のメモリモジュールへ送信する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、データ伝送路を介して、他のメモリモジュールから当該他のメモリモジュールの第2のグローバル値番号配列及び第2のグローバル順序集合配列を受信する手段と、
    のメモリモジュールの各々から受信した第2のグローバル値番号配列の要素と第2のグローバル順序集合配列の要素との組を考慮して、当該メモリモジュールの第2のグローバル値番号配列の要素と第2のグローバル順序集合配列の要素との組の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第2のグローバル値番号配列の要素の中での当該メモリジュールの第2のグローバル値番号配列の要素の順位を算定し、当該順位が昇順に格納されている第3のグローバル順序番号配列に収容する手段と、
    を備え、
    所定の項目に関してソートされたレコードの配列が、メモリモジュールのメモリに記憶されている第3のグローバル順序集合配列及び第2のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする情報処理システム。
  5. 各メモリモジュールのメモリが、項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列をさらに記憶し、
    各メモリモジュールの制御装置において、第2のグローバル順序集合配列、第2のローカル順序集合配列、及び、第2のグローバル値番号配列を生成する手段が、
    他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列中の値を使って、ポインタ配列中の値を取得し、ポインタ配列中の値の存在数を取得し、前記取得された存在数を累計数に変換する手段と、
    他のメモリモジュールの制御装置と並列的に動作し、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列の要素、ローカル順序集合配列の当該要素に対応するグローバル順序集合配列の要素、及び、ローカル順序集合配列の当該要素に対応するグローバル値番号配列の要素を、それぞれ、ローカル順序集合配列の当該要素に対応する累計数の値が示す位置で、ローカルソート後の第2のローカル順序集合配列、ローカルソート後の第2のグローバル順序集合配列、及び、ローカルソート後の第2のグローバル値番号配列に配置する手段と、
    を含む、請求項4に記載の情報処理システム。
  6. メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置されている情報処理システムにおいて、表形式データから検索対象となる項目に関する検索条件に合致するレコードを検索する方法であって、
    各メモリモジュールのメモリには、
    表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
    当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報ブロックと、
    が記憶され、
    (a)各メモリモジュールの制御装置を並列的に用いて、当該メモリモジュールに分散配置されているレコードの中で、検索対象となる項目に関する検索条件に合致する項目値を含むレコードに対応するレコード番号及び指し示す値をグローバル順序集合配列及びローカル順序番号配列から取り出し、第2のグローバル順序集合配列及び第2のローカル順序集合配列にそれぞれ格納するステップと、
    (b)各メモリモジュールの制御装置を並列的に用いて、データ伝送路を介して、当該メモリモジュールの第2のグローバル順序集合配列を他のメモリモジュールへ送信すると共に他のメモリモジュールから当該他のメモリモジュールの第2のグローバル順序集合配列を受信し、他のメモリモジュールの各々から受信した当該他のメモリモジュールの第2のグローバル順序集合配列の中のレコード番号を考慮して当該メモリモジュールの第2のグローバル順序集合配列の中のレコード番号の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第2のグローバル順序集合配列の中のレコード番号の中での当該メモリモジュールの第2のグローバル順序集合配列の中のレコード番号の順位を算出し、当該順位が昇順に格納されている第3のグローバル順序集合配列を生成するステップと、
    を備え、
    各検索条件に合致するレコードの配列が、メモリモジュールのメモリに記憶されている第3のグローバル順序集合配列及び第2のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする方法。
  7. 項目毎に各メモリモジュールに分散配置されている情報ブロックが、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が所定の順序でソートされて格納されている値リストと、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列と、
    項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
    を含む、請求項6に記載の方法。
  8. 各メモリモジュールの制御装置を並列的に用いて、前記第2のグローバル順序集合配列及び前記第2のローカル順序集合配列を生成するステップ(a)が、
    (i)各メモリモジュールの制御装置を並列的に用いて、検索対象となる項目に関する検索条件に合致する項目値に対応するフラグをセットするステップと、
    (ii)各メモリモジュールの制御装置を並列的に用いて、当該メモリモジュールのメモリに記憶されているローカル順序集合配列から当該メモリモジュールに分散配置されているレコードを指し示す値を取得し、検索対象となる項目に関して、前記取得されたレコードを指し示す値を使って、当該メモリモジュールのメモリに記憶されているポインタ配列中の値を取得し、前記取得された値を使って、当該メモリモジュールのメモリに分散配置されているレコードに含まれる項目値に対応するフラグがセットされているかどうかを判定するステップと、
    (iii)前記取得されたフラグがセットされていると判定された場合に、この判定が行われたメモリモジュールの制御装置を並列的に用いて、検索対象となる項目に関して、フラグがセットされた項目値に対応するグローバル順序集合配列中の値及びローカル順序集合配列中の値を検索後のグローバル順序集合配列及び検索後のローカル順序番号配列にそれぞれ収容するステップと、
    (iv)すべてのメモリモジュールのローカル順序集合配列中の末尾の要素まで、ステップ(ii)及びステップ(iii)を繰り返すステップと、
    を含む、請求項6に記載の方法。
  9. メモリ及び制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールから他のメモリモジュールへデータを伝達するデータ伝送路とを備え、項目と当該項目に属する項目値とを含むレコードの配列として表される表形式データを表現する情報が複数のメモリモジュールに分散配置されている情報処理システムにおいて、レコードを所定の項目に関してソートする方法であって、
    各メモリモジュールのメモリには、
    表形式データ中での当該メモリモジュールに分散配置されているレコードのレコード番号が昇順に格納されているグローバル順序集合配列と、
    当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内で指し示す値が格納されているローカル順序集合配列と、
    項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値が保持されている情報と、
    項目毎に表形式データ中での当該メモリモジュールに分散配置されているレコードに含まれる項目値の順位を示す情報が格納されているグローバル値番号配列と、
    が記憶され、
    (a)各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールに分散配置されているレコードを当該メモリモジュール内でローカルソートすることにより、ローカルソート後のレコード番号が格納されている第2のグローバル順序集合配列、ローカルソート後のレコードを当該メモリモジュール内で指し示す値が格納されている第2のローカル順序集合配列、及び、ローカルソート後のレコードに含まれる項目値の順位を示す情報が昇順に格納されている第2のグローバル値番号配列を生成するステップと、
    (b)各メモリモジュールの制御装置を並列的に用いて、データ伝送路を介して、当該メモリモジュールの第2のグローバル値番号配列及び第2のグローバル順序集合配列を他のメモリモジュールへ送信すると共に他のメモリモジュールから当該他のメモリモジュールの第2のグローバル値番号配列及び第2のグローバル順序集合配列を受信し、のメモリモジュールの各々から受信した第2のグローバル値番号配列の要素と第2のグローバル順序集合配列の要素との組を考慮して、当該メモリモジュールの第2のグローバル値番号配列の要素と第2のグローバル順序集合配列の要素との組の相対的な順位を判定し、他のメモリモジュールの各々について判定された相対的な順位の総和に基づいて、複数のメモリモジュールの第2のグローバル値番号配列の要素の中での当該メモリジュールの第2のグローバル値番号配列の要素の順位を算定し、当該順位が昇順に格納されている第3のグローバル順序番号配列に収容するステップと、
    を備え、
    所定の項目に関してソートされたレコードの配列が、メモリモジュールのメモリに記憶されている第3のグローバル順序集合配列及び第2のローカル順序集合配列によって、複数のメモリモジュールに分散配置されていることを特徴とする方法。
  10. 各メモリモジュールのメモリには、項目毎に当該メモリモジュールに分散配置されているレコードに含まれる項目値を指定するポインタ配列がさらに記憶され、
    各メモリモジュールの制御装置を並列的に用いて、第2のグローバル順序集合配列、第2のローカル順序集合配列、及び、第2のグローバル値番号配列を生成するステップ(a)が、
    (i)各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列中の値を使って、ポインタ配列中の値を取得し、ポインタ配列中の値の存在数を取得し、前記取得された存在数を累計数に変換するステップと、
    (ii)各メモリモジュールの制御装置を並列的に用いて、ソートすべき項目に関して、当該メモリモジュールのメモリに記憶されているローカル順序集合配列の要素、ローカル順序集合配列の当該要素に対応するグローバル順序集合配列の要素、及び、ローカル順序集合配列の当該要素に対応するグローバル値番号配列の要素を、それぞれ、ローカル順序集合配列の当該要素に対応する累計数の値が示す位置で、ローカルソート後の第2のローカル順序集合配列、ローカルソート後の第2のグローバル順序集合配列、及び、ローカルソート後の第2のグローバル値番号配列に配置するステップと、
    を含む、請求項9に記載の方法。
JP2005514952A 2003-10-24 2004-10-19 情報処理システムおよび情報処理方法 Expired - Fee Related JP4620593B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003364218 2003-10-24
JP2003364218 2003-10-24
PCT/JP2004/015437 WO2005041066A1 (ja) 2003-10-24 2004-10-19 分散メモリ型情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2005041066A1 JPWO2005041066A1 (ja) 2007-04-26
JP4620593B2 true JP4620593B2 (ja) 2011-01-26

Family

ID=34510096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005514952A Expired - Fee Related JP4620593B2 (ja) 2003-10-24 2004-10-19 情報処理システムおよび情報処理方法

Country Status (4)

Country Link
US (1) US20070174843A1 (ja)
JP (1) JP4620593B2 (ja)
KR (1) KR101030249B1 (ja)
WO (1) WO2005041066A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1901183A4 (en) * 2005-05-24 2010-01-13 Turbo Data Lab Inc MULTIPROCESSOR SYSTEM AND INFORMATION PROCESSING METHOD
US7890705B2 (en) * 2005-08-15 2011-02-15 Turbo Data Laboratories, Inc. Shared-memory multiprocessor system and information processing method
US20070233868A1 (en) * 2006-03-31 2007-10-04 Tyrrell John C System and method for intelligent provisioning of storage across a plurality of storage systems
WO2010013320A1 (ja) * 2008-07-30 2010-02-04 株式会社ターボデータラボラトリー 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
JP5488609B2 (ja) * 2009-03-30 2014-05-14 日本電気株式会社 リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ
JP6550308B2 (ja) * 2015-09-14 2019-07-24 株式会社ターボデータラボラトリー 情報処理システム及びコンピュータプログラム

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
JP2001092796A (ja) * 1999-09-17 2001-04-06 Taabo Data Laboratory Kk 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3474106B2 (ja) 1998-06-17 2003-12-08 アルプス電気株式会社 液晶表示装置
JP3826860B2 (ja) * 2002-08-30 2006-09-27 セイコーエプソン株式会社 弁装置及び液体噴射装置

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
JP2001092796A (ja) * 1999-09-17 2001-04-06 Taabo Data Laboratory Kk 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Also Published As

Publication number Publication date
JPWO2005041066A1 (ja) 2007-04-26
KR101030249B1 (ko) 2011-04-22
WO2005041066A1 (ja) 2005-05-06
US20070174843A1 (en) 2007-07-26
KR20060111455A (ko) 2006-10-27

Similar Documents

Publication Publication Date Title
CN102640151A (zh) 信息系统中转换后的数据的高吞吐量、可靠复制
CN105956166A (zh) 数据库读写方法和读写装置
US20140181175A1 (en) Data-Intensive Computer Architecture
US6424970B1 (en) Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes
JP4758429B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
KR100719872B1 (ko) 병렬 컴퓨터 및 이를 이용한 정보처리유닛
JP4511469B2 (ja) 情報処理方法及び情報処理システム
JP4673299B2 (ja) 情報処理方法及び情報処理システム
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
JP4559971B2 (ja) 分散メモリ型情報処理システム
JP4772506B2 (ja) 情報処理方法、情報処理システムおよびプログラム
JPWO2009044486A1 (ja) 表形式データをソートする方法、マルチコア型装置、及び、プログラム
US11157692B2 (en) Neural networks using data processing units
JP4995724B2 (ja) 情報処理システムおよび情報処理方法
JP5208117B2 (ja) 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム
WO2010013320A1 (ja) 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
CN115577760A (zh) 一种数据处理方法、系统及相关设备
JPH04336324A (ja) データ選択処理方法
JPS62210537A (ja) サ−チ処理装置および方法
JPS63170766A (ja) 分割決定装置
JPH04235628A (ja) 分散デ−タ選択処理方式
JPH10307828A (ja) クラスタリング処理方法およびクラスタリング処理システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071009

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100617

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: 20101026

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: 20101028

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4620593

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees