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

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

Info

Publication number
JPWO2005041067A1
JPWO2005041067A1 JP2005514953A JP2005514953A JPWO2005041067A1 JP WO2005041067 A1 JPWO2005041067 A1 JP WO2005041067A1 JP 2005514953 A JP2005514953 A JP 2005514953A JP 2005514953 A JP2005514953 A JP 2005514953A JP WO2005041067 A1 JPWO2005041067 A1 JP WO2005041067A1
Authority
JP
Japan
Prior art keywords
value
processing module
values
list
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.)
Granted
Application number
JP2005514953A
Other languages
English (en)
Other versions
JP4511469B2 (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 JPWO2005041067A1 publication Critical patent/JPWO2005041067A1/ja
Application granted granted Critical
Publication of JP4511469B2 publication Critical patent/JP4511469B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (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)では、プログラムの自由度が減少し、所望の結果をもたらすプログラムが開発できない事態も想定される。
したがって、本発明の目的は、上記の従来の分散メモリ型の並列アーキテクチャの問題点に鑑みて、プロセッサ間通信ができるだけ少なくなるように、大規模データをプロセッサ間で共有することなく、大規模データを個々のプロセッサ内に保持したまま、大規模データのソートや集計を実現可能な情報処理方法を提供することである。
本発明の更なる目的は、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて、集計処理を高速に実現するため、各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法を提供することである。
更に、本発明は、上記の情報処理方法を実現する情報処理システムの提供を目的とする。
また、本発明は、上記の情報処理方法を実現するためコンピュータによって実行されるプログラムの提供を目的とする。
本発明は、表形式データの実体的要素である値リスト及びポインタ配列を個々の処理モジュールにローカルに保存し、複数の処理モジュール間では、データ自体ではなく、データの順序番号(又は、順位)という指標がグローバルに保持されるという分散メモリ型の並列処理アーキテクチャを採用している。また、本発明は、単一命令により種々のメモリに記憶されたデータを入出力し処理するように、処理と通信が統合されたアルゴリズムを採用している。
本発明の目的は、複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順序に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、情報処理システムにおいて、
複数の処理モジュールに格納されている項目値を集計する情報処理方法であって、
各処理モジュールが、自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号と、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号とをメモリに記憶するステップと、
各処理モジュールが、自処理モジュール内で、少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするステップと、
各処理モジュールが、レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番を表す次元値番号を付与してメモリに格納するステップと、
各処理モジュールが、他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるステップと、
各処理モジュールが、グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出するステップと、
各処理モジュールが、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するステップと、
を有する情報処理方法により達成される。
本発明によれば、表形式データの値リストとポインタ配列を各処理モジュールで分掌管理したまま、各処理モジュール内でのソート処理と、グローバルな次元値番号の付与処理と、ローカルな集計処理と、ローカルな集計結果の集計と、によって表形式データの全体についての集計を高速に行うことができる。
好ましい実施形態によれば、情報処理方法は、各処理モジュールが、集計値を算出するステップの後に、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成するステップを更に有する。これにより、集計結果がテーブルの形で保持されるので、集計結果を更なる集計のために利用できるようになる。
更に、本発明の目的は、上記情報処理方法を実施する情報処理システムによって達成あされる。本発明の情報処理システムは、複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順番に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、情報処理システムであって、
各処理モジュールは、自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号、及び、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号を更にメモリに記憶し、
各処理モジュールは、
自処理モジュール内で少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするローカル・ソート手段と、
レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番に次元値番号を付与してメモリに格納する次元値番号付け手段と、
他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるグローバル次元値番号付け手段と、
グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出する集計手段と、
他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するグローバル集計手段と、
を有する情報処理システムである。
好ましい実施形態によれば、この情報処理システムにおいて、各処理モジュールは、グローバル集計手段に接続され、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成する手段を更に有する。
また、本発明の目的は、複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順番に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、情報処理システムにおいて、
処理モジュールのコンピュータに、
自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号と、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号とをメモリに記憶するステップと、
自処理モジュール内で少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするステップと、
レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番に次元値番号を付与してメモリに格納するステップと、
他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるステップと、
グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出するステップと、
各処理モジュールが、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するステップと、
を実行させるためのプログラムによって達成される。
好ましい実施形態において、前記プログラムは、処理モジュールのコンピュータに、集計値を算出するステップの後に、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成するステップを更に実行させる。
また、本発明の更なる目的は、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて、
各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法であって、
各処理モジュールが自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納するステップと、
各処理モジュールが自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する第1の送信ステップと、
各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第1の更新ステップと、
各処理モジュールが受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する第2の送信ステップと、
各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第2の更新ステップと、
各処理モジュールが第1の送信ステップにおいて論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、第2の送信ステップと第2の更新ステップを繰り返し実行するステップと、
を有する情報処理方法によって達成される。
また、本発明の更なる目的は、上記情報処理方法を実現する情報処理システムによって達成される。本発明による情報処理システムは、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールと、複数の処理モジュールを論理的に環状に接続する伝送路と、を含み、各処理モジュール内の値のリスト中の値に複数の処理モジュール間で共通の順序番号を付与する情報処理システムであって、
各処理モジュールは、
自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納し、自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する初期化手段と、
論理的に前の段に接続された処理モジュールから値のリストを受信する受信手段と、
自処理モジュール内の値のリスト中の各値に対し、受信手段によって受信された値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する更新手段と、
受信手段によって受信された値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する送信手段と、
初期手段を起動し、初期化手段によって送信した値のリストが、論理的に環状に接続された他のモジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、受信手段、更新手段及び送信手段を繰り返し動作させる制御手段と、
を有する、
情報処理システムである。
更に、本発明の更なる目的は、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて上記情報処理方法をコンピュータに実行させるためのプログラムによって達成される。このプログラムは、処理モジュールのコンピュータに、
自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納するステップと、
自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する第1の送信ステップと、
自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第1の更新ステップと、
受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する第2の送信ステップと、
自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第2の更新ステップと、
第1の送信ステップにおいて論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、第2の送信ステップと第2の更新ステップを繰り返し実行するステップと、
を実行させる。
本発明によれば、分散メモリ型の並列処理アーキテクチャに基づいて、新規のデータ構造及び並列処理アルゴリズムを採用することにより、著しく高速な並列処理を実現可能な情報処理方法及び情報処理システムを提供することが可能となる。
[ハードウェア構成]
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図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は、外部の他のコンピュータ等とのデータ授受が可能である。また、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにアクセスできるようにしても良い。
[集計処理の対象]
本実施の形態における集計とは、例えば、情報の項目に対応した項目値を含むレコードの配列として表される表形式データから、ある項目(次元)のある項目値(次元値)毎に、別の項目の項目値(メジャー)を集計することである。メジャーの集計とは、メジャーの個数をカウントしたり、メジャーの総和を算出したり、メジャーの平均値を算出したりすることである。また、次元数は、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自体が設定することも可能である。
[集計処理]
次に、本実施の形態による集計処理を説明する。本実施の形態による集計アルゴリズムは、すべての処理モジュールで同じ処理を実行できるように構成されている。また、この集計アルゴリズムは、単一の集計処理命令を複数の処理モジュールへ与えることにより、複数の処理モジュールが並列に動作して集計処理を実行できるように構成されている。すべての処理モジュールは、同じ動作を実行するので、一つのプログラムを作成するだけで、並列処理を実現できる。
本実施の形態の集計アルゴリズムは、集計のための次元値にすべての処理モジュール間で共通のグローバル次元値番号を付与し、各処理モジュール内で次元値番号毎にメジャーを集計し、最後に、グローバルに、即ち、すべての処理モジュール間で共通にメジャーを集計する。このため、本実施の形態の集計アルゴリズムによれば、値リスト、及び、値リストへのポインタ配列は、各処理モジュールでローカルに保持される。また、この集計アルゴリズムによれば、値リスト及びポインタ配列は、複数の処理モジュール間で共通に保持されるのではなく、次元値の順番という基準が複数の処理モジュール間でグローバルに保持される。その結果として、複数の処理モジュールが集計に必要なデータを取得するために相互にメモリへアクセスすることが回避され、次元値の順番を決定するために必要なデータだけが処理モジュール間で通信されるので、通信量が削減され処理の高速化が図られる。
図8は、本実施の形態による集計処理のフローチャートである。図8に示されるように、最初に、各処理モジュールに分掌管理された表形式データを準備する(ステップ801)。より具体的には、各処理モジュールは、自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号と、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号とをメモリに記憶する。
次に、各処理モジュールは、自処理モジュール内で、少なくとも1次元以上の指定された項目のグローバル項目値番号の組の番号順にレコードをソートする(ステップ802)。
更に、各処理モジュールは、レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番に次元値番号を付与してメモリに格納する(ステップ803)。
次に、各処理モジュールは、他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けられる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付ける(ステップ804)。
続いて、各処理モジュールは、グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出する(ステップ805)。
最後に、各処理モジュールは、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出する(ステップ806)。
また、各処理モジュールは、集計値を算出するステップ806の後に、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成することができる(ステップ807)。この結果テーブル自体は、テーブルの形で保持されているので、このテーブルをさらに集計することにより、別の次元に関する集計を簡単に得ることができる。例えば、性別・年齢別で得られた集計結果から性別の集計結果を簡単に作成することができる。
図5に示した表形式データに基づいて、本実施の形態による集計処理をより詳細に説明する。例えば、図5に示されるような表形式データを複数の処理モジュールで分掌管理し、上述のステップ801を実行すると、図7に示されるようなデータの記憶構造が得られる。
ここで、図7に示されたようなデータに対して、「性別・年齢別に身長の合計値を求める」という集計処理を適用する。ここで、性別及び年齢はディメンジョン(次元)であり、身長はメジャー(測度)である。
ステップ802では、図7に示されたデータに対して、各処理モジュール、即ち、各ローカル環境において、次元「年齢」と次元「性別」の2次元に関して、各ローカル環境のレコードをソートする。2次元以上でソートする場合には、適当な次元の順にソートを段階的に行うことになる。一般的には、項目値の種類の個数が多いほどソートに伴う順番の入れ替えが頻繁に生じるので、項目値の種類の個数の多い次元から順番にソートする方が効率的である。本例では、性別と年齢を比べると、性別の項目値の種類(男と女の2個)よりも年齢の項目値の種類(1歳、2歳及び3歳の3個)の方が多いので、年齢、性別の順にソートを行う。
本実施の形態では、ローカル環境下でのソートは、並び順番号の配列OrdSetの要素の順番を入れ替えることに相当する。例えば、初期の並び順番号の配列の要素が0(即ち、レコード0)、1(即ち、レコード1)、2(即ち、レコード2)であり、レコード0の年齢の値が3歳、レコード1の年齢の値が1歳、レコード2の年齢の値が2歳である場合を考える。年齢の若い順にレコードを並べ替えると、レコード1、レコード2、レコード3の順番になる。このときのソート結果は、並び順番号の配列を1、2、0の順番に入れ替えることによって表される。並び順番号の配列OrdSetには、後の処理のため、このローカル・ソート後の順番を設定しておく。
図9は、図7で示されたデータに対して、各処理モジュール内で年齢によるソートと性別によるソートを順次適用した結果を示す図である。尚、図9では、簡単のため、身長に関する情報ブロックは示されていない。年齢によるソートは年齢の若い順に行われ、性別によるソートは、男性、女性の順に行われる。このローカル・ソートによって、PMM−0内のレコードは、レコード1(男性、1歳、82cm)、レコード2(女性、2歳、69cm)、レコード0(女性、3歳、78cm)の順に順序付けされ、PMM−1内のレコードは、レコード1(男性、3歳、91cm)、レコード0(女性、1歳、82cm)の順に順序付けされ、PMM−2内のレコードは、レコード0(女性、1歳、76cm)、レコード1(女性、1歳、78cm)、レコード2(女性、2歳、84cm)の順に順序付けされ、PMM−3内のレコードは、レコード0(男性、3歳、87cm)、レコード1(女性、3歳、80cm)の順に順序付けされる。このローカル・ソートについては、後述する。
ステップ803では、各処理モジュールは、ローカル・ソートされたレコード順(即ち、入れ替え後の並び順番号の配列OrdSetの要素の順)に、選択された次元(本例では、性別及び年齢)の項目値番号の組に順序番号を付ける。図10は、本例における順序番号付与の説明図である。簡単のため、身長に関する情報ブロックは省略されている。
PMM−0のレコード1に関して説明すると、性別の値番号は、「0」であり、値番号「0」に対応したグローバル項目値番号は「0」である。また、年齢の値番号は、「0」であり、年齢の値番号「0」に対応したグローバル項目値番号は「0」である。よって、PMM−0内のレコード1に対応した項目値番号の組は、(0,0)であり、この(0,0)にローカル・ソートされたレコード順に順序番号が付けられる。項目値番号の組に順序番号を付与することは、内部的には、性別のグローバル値項目値番号と年齢のグローバル項目値番号に同一の順序番号「0」を与えることによって実現できる。本例では、PMM−0内のレコード1はローカル・ソートされた1番目のレコードであるため、対応した項目値番号の組(0,0)に対して、順序番号「0」が付与される。PMM−0内のレコードは、レコード1、レコード2、レコード0の順に順序付けられているので、以下、レコード2に対応したグローバル項目値番号の組(1,1)に順序番号「1」を与え、レコード0に対応したグローバル項目値番号の組(1,2)に順序番号「2」を与える。
順序番号は、レコードに対応して設定されるので、PMM内に次元値が一致するレコードが2個以上存在する場合には、レコード毎に別々の順序番号が付与されている。例えば、図10において、PMM−2内のレコード0とレコード1は、共に、性別が女性であり、年齢が1歳であるため、グローバル項目値番号の組は、どちらも(0,1)である。検索やソートが目的である場合には、グローバル値番号の組が一致していても、異なるレコードは別個に取り扱う必要がある。例えば、グローバル値番号の組と、グローバル・レコード番号GOrdとを組み合わせて使用することによって、すべてのレコードを別個に取り扱うことができる。しかし、本例のように集計を目的とする場合、グローバル項目値番号の組が一致するレコード、即ち、次元値が一致するレコードは、同じ次元として取り扱う方が都合がよい。そのため、本実施の形態では、グローバル項目値番号の組が一致するレコードには、同じ番号が付与されるように順序番号を付与し直す。このように付け直された順序番号を、以下では、ローカル次元値番号LDimNoと称する。ローカル次元値番号は、グローバル項目値番号の組が異なる場合に初めて1ずつインクリメントされるような番号である。図11は、このようなローカル次元値番号付与の説明図である。本例では、PMM−0、PMM−1及びPMM−3内では、順序番号とローカル次元値番号は同じであるが、PMM−2内では、ローカル次元値番号は、ソートされたレコードの順に、「0」、「0」、「1」のようになる。
次に、ステップ804において、各処理モジュールは、グローバル項目値番号の組に対して付与されたローカル次元値番号LDimNoを、複数の処理モジュール間で共通のグローバル次元値番号GDimNoに変換することにより、次元値に対してグローバルな順位付けを行う。次元値にグローバルな順位付けがなされると、後述のように、各処理モジュール内で次元値毎に集計を行った後、その集計結果を統合することにより、全体の集計結果を得ることができるようになる。
図12はグローバル次元値番号付与の説明図である。このグローバル次元値番号付与は、各処理モジュール内で順位付けされたグローバル項目値番号の組を、複数の処理モジュール間で共通に順位付けすることである。そのため、各処理モジュールは、グローバル次元値番号GDimNoの領域を確保し、ローカル次元値番号LDimNoからグローバル次元値番号GDimNoの初期値を生成する。同じローカル次元値番号LDimNoが割り当てられているレコードに対しては、一つのグローバル次元値番号GDimPosの領域だけを確保する。そのため、グローバル次元値番号GDimNoからローカル次元値番号LDimNoへの対応表GDimPosも同時に作成する。
次に、他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組のグローバル次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付ける。このように、各処理モジュールで個別に順序付けされている値、即ち、ローカル次元値番号に、複数の処理モジュール間で共通の順序番号、即ち、グローバル次元値番号を付与する方法は、同一の値に別個のグローバル次元値番号が付与されないように、同一の値の重複を排除する必要がある。この順序番号付与方法については後述する。
図13は、図12の例による処理モジュールPMM−0からPMM−3内における、ローカル次元値番号LDimNo、性別のグローバル項目値番号GVNo1、年齢のグローバル項目値番号GVNo2、及び、グローバル次元値番号GDimNoをまとめた図表である。同図からわかるように、グローバル次元値番号GDimNoは、性別のグローバル項目値番号GVNo1を上位の桁とし、年齢のグローバル項目値番号GVNo2を下位の桁としたときのグローバル項目値番号の組の番号順に0,1,2,4の番号が割り当てられている。
ステップ805において、各処理モジュールは、自処理モジュール内で、グローバル項目値番号の組毎に、即ち、グローバル次元値番号毎に項目値を集計する。本例では、PMM−0からPMM−3は、各モジュール内で性別・年齢別に身長の値を合計する。
図14及び15は、各処理モジュール内でグローバル次元値番号毎に項目値を集計する処理の説明図である。最初に、図14に示されるように、メジャーを格納するための領域として、グローバル次元値番号GDimNoの配列と同じサイズの配列GMsrを作成する。本例では、身長の合計を集計するので、浮動小数点又は整数のような格納領域を作成する。次に、図15に示されるように、各処理モジュール内で、例えば、グローバル次元値番号の組の順に入れ替えられた配列OrdSetの要素の順に、集計すべき項目値を取り出し、メジャー配列GMsrに集計する。
例えば、PMM−0では、並び順番号の配列OrdSetの先頭の要素が「1」番(即ち、レコード1)であることが分かるので、身長の情報ブロック内の値リストへのポインタ配列VNoのインデックス「1」の内容を参照する。ポインタ配列には、値「2」が格納されているので、PMM−0のレコード0に関する身長の値は、値リストVLのインデックス「2」の内容を獲得することにより、「82」として得られる。この値「82」がメジャー配列GMsrに集計されるべき値である。本例では、集計値は合計値であるので、この値「82」が加算される。
次に、この値「82」を、メジャー配列GMsrのどの要素に加算すべきであるか、即ち、メジャー配列GMsrのインデックスを特定する必要がある。上述のように、ローカル次元値番号LDimNoの配列は、グローバル次元値番号の組の順に並べられているので、並び順番号の配列OrdSetとローカル次元値番号の配列LDimNoの要素の並び順、即ち、インデックスは対応している。そのため、配列OrdSetの先頭に関するメジャーは、配列LDimNoの先頭によって示されるメジャー配列GMsrの格納領域に集計すればよい。図15の例では、配列OrdSetの先頭に対応した配列LDimNoの先頭の要素は「0」であるので、値「82」は、メジャー配列GMsrのインデックス「0」で示される場所に加算される。
PMM−1、PMM−2及びPMM−3についても同様に配列OrdSetの先頭の要素について身長の値「91」、「76」及び「87」を取得し、メジャー配列GMsrの先頭の領域に集計する。以下、PMM−0からPMM−3に関して、配列OrdSetの2番目以降の要素についても同様に項目値を取得してメジャー配列GMsrに集計する。
尚、PMM−2では、配列OrdSetの先頭の要素「0」と2番目の要素「1」に対して、ローカル次元値番号LDimNoが共に「0」であるため、対応した身長の値「76」と「78」は、共に、メジャー配列GMsrの先頭の領域に集計されるので、配列GMsrの先頭の集計結果は、76+78=154になる。
続いて、ステップ806では、各処理モジュールは、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出する。このグローバルな集計は、処理モジュール間の物理的な伝送路の構成に応じて、例えば、次の2通りの方法で実現できる。
第1のグローバル集計方法では、各処理モジュールは、グローバル次元値番号GDimNoと、グローバル次元値番号GDimNoに対応して集計されたメジャーGMsrの組を他の処理モジュールへ送信する。この方法は、処理モジュール間に複数の伝送路を確保できる場合に適している。図16は、第1のグローバル集計方法の説明図である。PMM−0(符号1600)、PMM−1(符号1601)、PMM−2(符号1602)及びPMM−3(符号1603)の4台の処理モジュールは、全体として1604で表される伝送路を介して接続されている。
例えば、処理モジュールPMM−0は、図15で示されるようなローカル環境下での集計結果として、グローバル次元値番号GDimNoとメジャーGSMsrの3個の組、即ち、
(0,82)
(3,69)
(4,78)
を他の処理モジュールPMM−1、PMM−2及びPMM−3へ送信する。また、処理モジュールPMM−0は、処理モジュールPMM−1から送信された2個の組、
(1,91)
(2,82)
と、処理モジュールPMM−2から送信された2個の組、
(2,154)
(3,84)
と、処理モジュールPMM−3から送信された2個の組、
(1,87)
(4,80)
を伝送路1604を介して受け取る。処理モジュールPMM−1、PMM−2及びPMM−3についても同様に自処理モジュールのローカル集計結果を他のモジュールへ送信すると共に、他の処理モジュールからローカル集計結果を受信する。
各処理モジュールは、相互に交換したローカル集計結果を、各処理モジュール内でグローバル次元値番号毎に加算して、グローバル集計結果を算出する。図17は、グローバル集計結果算出の説明図である。各処理モジュールが他の処理モジュールから受信したローカル集計結果の中で、実際に各処理モジュール内でグローバル集計に利用されるデータは、各処理モジュールのローカル集計結果のグローバル次元値番号と一致するグローバル次元値番号を含むデータだけである。図17では、各処理モジュールが他の処理モジュールから受信したデータの中で、実際のグローバル集計に利用されないデータが二重取消線で示されている。そして、各処理モジュールは、他の処理モジュールから受信したメジャーを並列的に加算することも可能である。これにより、全体的な処理速度が高速化できる。
ローカル集計結果の加算により、図17に示されるように、各処理モジュールには、グローバル集計結果が得られる。例えば、グローバル次元値番号「0」は、元々、PMM−0だけに存在していたので、グローバル次元値番号「0」についての集計結果は、PMM−0だけに現れる。一方、グローバル次元値番号「3」は、PMM−0とPMM−2の2個の処理モジュールにおいてローカル集計されていたので、グローバル次元値番号「3」に対応するグローバル集計結果は、PMM−0とPMM−2の2個の処理モジュールに現れている。もちろん、グローバル次元値番号「3」に関するPMM−0とPMM−2の両方のグローバル集計値は、同じ値「153」をとる。
このような重複したグローバル集計結果は削除しておいた方が後の処理のために都合がよい。そのため、処理モジュールに予め順位を割り当てておき、各処理モジュールは、自処理モジュールよりも上位の処理モジュールが自処理モジュールで保持しているグローバル次元値番号についてのグローバル集計値と同じグローバル集計値を保持している場合には、自処理モジュールで保持しているグローバル集計値を削除するように構成することができる。図18は、このようなグローバル集計値の重複を排除するための処理の説明図である。同図において、二重取消線は、グローバル集計値の重複の排除を表している。この処理を加えることにより、すべての処理モジュールを通じて、各グローバル次元値番号に対して1個のグローバル集計値が保持されることになる。
最後に、ステップ807では、最終的なグローバル集計値を保持している処理モジュールは、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成する。図19は、結果テーブル生成の説明図である。集計結果をこのような結果テーブルの形で表現することにより、更なる集計処理に利用できるという利点が得られる。図18の例では、最終的なグローバル集計値は、処理モジュールPMM−0とPMM−1に保持されているので、処理モジュールPMM−0とPMM−1において、結果テーブルを作成すればよい。
例えば、処理モジュールPMM−0において、グローバル次元値番号「0」のグローバル集計結果は「82」である。グローバル次元値番号GDimNo「0」に対するローカル次元値番号LDimNoは、図12を参照して説明したグローバル次元値番号からローカル次元値番号への対応表GDimPosを用いることにより獲得することができる。図19の例では、GDimNo「0」に対するGDimPosの値は「0」であるため、配列LDimNoの先頭の要素「0」がローカル次元値番号である。ローカル次元値番号「0」には、性別のグローバル項目値番号「0」と年齢のグローバル項目値番号「0」が対応している。性別のグローバル項目値番号「0」に対応する項目値、即ち、次元値は「男」であり、年齢のグローバル項目値番号「0」に対応する項目値、即ち、次元値は「1」である。よって、グローバル次元値番号「0」に対して、性別の次元値「男」と、年齢の次元値「1」と、集計値(=身長の合計値)「82」を得ることができる。処理モジュールPMM−0の他のグローバル次元値番号と、処理モジュールPMM−1のグローバル次元値番号に対しても同様の処理を適用することにより、結果テーブルを得ることができる。図20は、このようにして作成された結果テーブルの説明図である。処理モジュールPMM−0とPMM−1は、性別次元値・年齢次元値・集計値の結果テーブルを生成する。処理モジュールPMM−2とPMM−3は、結果テーブルを生成しない。
図16乃至18では、第1のグローバル集計方法について説明したが、本実施の形態の変形例では、第2のグローバル集計方法が実施される。図21は、第2のグローバル集計方法の説明図である。この集計方法は、処理モジュールに予め順位を割り当てておき、ローカル集計結果である配列GMsrを上位の処理モジュールから下位の処理モジュールへ順次送る。2番目以降の処理モジュールでは、前の処理モジュールから受信した集計結果配列GMsrに自処理モジュール内でのローカル集計結果を合算し、合算後の集計結果配列GMsrを次の処理モジュールへ送信する。このように、集計結果を合算しながら集計結果配列GMsrを後続の処理モジュールへ順送りすることにより、処理モジュールの連なりを一巡して最初の最上位の処理モジュールへ戻される集計結果配列は、すべてのグローバル次元値番号に関するグローバル集計結果を格納した配列である。
図21の例では、最初に、最上位の処理モジュールPMM−0から次の処理モジュールPMM−1へ集計結果配列(82,−,−,69,78)が送信される。ここで、「−」は、ローカル集計結果が存在しないことを表す。処理モジュールPMM−1は、受信した集計結果配列(82,−,−,69,78)に自処理モジュール内のローカル集計結果(−,91,82,−,−)を合わせて更なる集計結果配列(82,91,82,69,78)を生成し、次の処理モジュールPMM−2へ送信する。PMM−2も同様に、受信した集計結果配列に、自処理モジュール内のローカル集計結果(−,−,154,84,−)を合わせて更なる集計結果配列(82,91,236,153,78)を生成し、次の処理モジュールPMM−3へ送信する。PMM−3も同様に、受信した集計結果配列に、自処理モジュール内のローカル集計結果(−,87,−,−,80)を合わせて、更なる集計結果配列(82,178,236,153,158)を生成する。PMM−3は、最下位の処理モジュールであるため、PMM−3から出力される集計結果配列は、最終的な集計結果である。
[順序番号付与処理]
本実施の形態による情報処理システムのように、順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムでは、各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法、即ち、順序番号付与方法が必要である。
例えば、図12を参照して説明したように、グローバル次元値番号を付与する際には、各処理モジュールで個別に順序付けされている値に、複数の処理モジュール間で共通の順序番号を付与する順序番号付与処理が使用される。また、この順序番号付与処理は、グローバル次元値番号を付与する場合の他に、後述のコンパイル処理において、グローバル項目値番号を設定する場合にも使用される。
図22は、本実施の形態における順序番号付与方法のフローチャートである。同図に示されるように、各処理モジュールは、自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納する(ステップ2201)。
次に、各処理モジュールは、自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する(ステップ2202)。更に、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する(ステップ2203)。
次に、各処理モジュールは、受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信し(ステップ2204)、各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から上記各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する(ステップ2205)。
続いて、各処理モジュールは、送信ステップ2202において論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、ステップ2204とステップ2205を繰り返し実行する(ステップ2206)。
この順序番号付与方法によれば、各処理モジュールは、他の処理モジュールが保持する値のリストを重複無く受け取り、自処理モジュールが保持する値にグローバルな順序番号を付与することができる。上述のように、各処理モジュールが予め順序付きの値のリストを保持している場合には、非常に効率的にグローバルな順序番号を付与することが可能である。なぜならば、値のリストが予め順序付けされている場合には、昇順(又は降順)の一方向に順序を比較するだけでよいからである。もちろん、各処理モジュールの保持する値のリストが順序付きでない場合でも同様の結果を得ることができる。その場合には、例えば、各処理モジュールは、他の処理モジュールから受信した値のリスト中の値と、自処理モジュールが保持している値のリスト中の値を、すべての組合せについて順番に比較して、各値よりも前に、即ち、上位に、順序付けされる値の個数をカウントして、各値の順序番号を更新すればよい。
本実施の形態の順序番号付与方法では、各処理モジュールは、他の処理モジュールから受信した値のリストを保存する必要はなく、自処理モジュールが保持している値のリストに順序を付けるだけで、すべての処理モジュールに共通の順序番号を付与することができる。
また、この順序番号付与方法は、他の処理モジュールからの値のリストの受信順に影響されないので、処理モジュール間の物理的な接続形態に全く依存しない。したがって、伝送路と順序番号更新回路を多重化することによって、更なる高速化を実現することができる。
図23A〜D及び図24A〜Dは、順序番号付与処理の説明図である。図23A〜Dにおいては、各PMMが次の段に接続されたPMMへ送信する値のリストがステップ毎に示されている。図24A〜Dにおいては、各ステップで、PMMが前の段に接続されたPMMから受信した値のリストが、それぞれ、示されている。この例では、初期状態として、PMM−0が値のリスト[18,21,24]を保持し、PMM−1が値のリスト[16,28]を保持し、PMM−2が値のリスト[16,20,33]を保持し、PMM−3が値のリスト[18,24]を保持している。
ステップ3の終了時点で、各PMMは、他のすべての処理モジュールからの値のリストを受信することができる。この時点で、自処理モジュールが保持している値のリストと、受信した値のリストを合わせることにより、すべての値の順序を決めることができる。更に、ステップ4の終了時点では、すべての値を重複無く受信できることが分かる。
[コンパイル処理]
コンパイル処理は、各処理モジュールでデータを管理するために使用するグローバル・レコード番号GOrdとグローバル項目値番号GVNoを設定するための処理である。グローバル・レコード番号GOrdは、上述のオフセット値OFFSETを使用することにより簡単に設定することができる。一方、グローバル項目値番号GVNoは、各処理モジュールが個別に保持している値リストに基づいて、すべての処理モジュール間で共通に順序付けされる番号である。
したがって、各処理モジュールは、上述の順序番号付与処理を用いることによってグローバル項目値番号GVNoを設定することが可能である。
[ローカル・ソート処理]
ローカル・ソート処理は、図9を参照して説明したように、グローバルな集計処理の一部として、或いは、グローバルなソート処理の一部として実行される処理である。本実施の形態では、ローカル・ソート処理が各処理モジュールで独立に行われるので、このローカル・ソート処理を高速化することにより、集計処理の処理速度を高速化することができる。
以下、このローカル・ソート処理について説明する。尚、ローカル・ソート処理は、図25に示されるように、コンパイル処理が終了した状態から処理が開始されるものとして説明する。図26は、ローカル・ソート処理のフローチャートである。図26に示すように、各PMMは、ソートすべき項目に関する値リストVLと同一のサイズの、存在数配列の領域を生成し(ステップ2601)、領域中の各値に初期値「0」を与える(ステップ2502)。図27は、「年齢」という項目について、それぞれのPMMにおいて、値リストVLと同一のサイズを有する領域が作られ、それぞれに初期値「0」が与えられた状態を示す。
次いで、各PMMは、存在数配列のそれぞれに対するカウントアップ処理を実行する(ステップ2603)。より詳細には、各PMMは、順序集合配列OrdSetの値を参照して、ソートすべき項目のポインタ配列VNoの値を特定する(ステップ2611)。次いで、各PMMは、存在数配列中、当該ポインタ配列VNoの値に示される位置の値をカウントアップする(ステップ2612)。このような処理が、順序集合配列OrdSetの末尾まで繰り返される(ステップ2613、2614参照)。
図28は、各PMMにおけるカウントアップの一例を示す図である。たとえば、PMM−0において、順序集合配列OrdSetの要素「0」が示す位置の、年齢のポインタ配列VNoの値は「0」である。したがって、存在数配列の「第0番目」の位置、つまり、先頭の位置にある値を、「0」から「1」にカウントアップする。他のPMMにおいても、同様の処理が実行されていることが理解できるであろう。
カウントアップ処理が終了すると、図29に示すように、各PMMは、存在数配列の要素を累計して、当該存在数配列を累計数配列に変換する(ステップ2901)。累計数配列の要素である累計数は、項目値を指し示すレコードの数を示す存在数を考慮して、当該累計数が配置されている位置の項目値を指し示すレコードの先頭の位置を示すようになっている。具体的には、各PMMが、配列の位置を示すパラメータ「i」を初期化して(ステップ2911)、パラメータが示す存在数配列中の値を取り出し(ステップ2912)、パラメータ「i」が示す位置より、後ろの位置、つまり、「i+1」、「i+2」、・・・の位置の存在数配列の値に、ステップ2912で取り出された値を、それぞれ加算する(ステップ2913)。ステップ2912、2913に示す処理を、値リストVLの要素(項目値)の個数だけ繰り返せばよい(ステップ2914、2915参照)。
このようにして、たとえば、図30に示すような累計数配列を得ることができる。さらに、各PMMは、後でPMM全体における順位を格納するための配列GVNo、GOrd’及びOrdSet’のための領域も作られる(ステップ2902)。これら配列のサイズは、それぞれ、値リストVLのサイズと一致する。
次に、各PMMにおけるローカルなソート処理が実行される。図31に示すように、各PMMは、順序集合配列OrdSetの値を取り出し(ステップ3101)、次いで、ポインタ配列VNo中、配列OrdSetの値が指し示す位置の値(ポインタ値)を特定する(ステップ3102)。その後、各PMMは、ソートすべき項目のグローバル項目値番号配列GVNo中、ポインタ配列VNoの値が示す位置の値を取得する(ステップ3103)。この値は、後述する値の格納処理に利用される。その一方、上記累計数配列においても、ポインタ配列VNoが示す位置の値が取得される(ステップ3104)。この値は、後述する値の格納処理において、配列中の位置を指定するために利用される。
次に値の格納処理が実行される。各PMMは、先に生成した配列GVNo中、ステップ3104で取得された累計数配列の値が示す位置に、ステップ3102で取得された、ソートすべき項目に関するGVNoの値を配置する(ステップ3105)。また、各PMMは、配列GOrd’、OrdSet’中、ステップ3104で取得された累計数配列の値が示す位置に、グローバル順序集合配列GOrd及び順序集合配列OrdSetの値を、それぞれ配置する(ステップ3106)。次いで、処理に用いられた累計数配列の値がインクリメントされる(ステップ3107)。
上記ステップ3101〜3107の処理が、配列OrdSet中の全ての値について、順次実行される(ステップ3108、3109参照)。
図32及び図33は、各PMMにおいてローカルなソート処理が実行されている状態の例を示す図である。たとえば、PMM−0に関して、図32においては、配列OrdSetの値「0」の取り出し(ステップ3101参照)、当該OrdSetの値「0」が示す位置の、配列VNoの値「0」の特定(ステップ3102参照)、当該配列VNoの値「0」が示す位置の、配列GVNoの値「1」の取得(ステップ3103)、および、配列VNoの値「0」が示す位置の、累計数配列の値「0」の取得(ステップ3104)が実行されていることが理解できるであろう。また、累計数配列の取得の後、当該累計数配列の値が、「0」から「1」になっていることもわかる(ステップ3107参照)。
また、PMM−0に関して、図33において、ステップ3103で取得された累計数配列の値の示す位置における、配列GVNo、GOrd’及びOrdSet’への、項目「年齢」に関する配列GVNoの値「1」、並びに、配列GOrdの値「0」及び配列OrdSetの値「0」の配置(ステップ3105、3106)が示されていることが理解できるであろう。他のPMMについても、図32及び33において、同様にステップ3101〜3105に示す処理が実行されていることがわかる。
以上のローカルな(つまり各PMMにおける)ソート処理により、図34に示すような配列を得ることができる。尚、図32乃至34において、図中の「昇順2」とは、グローバル・レコード番号GOrd'は、グローバル項目値番号GVNo'が同一値である範囲内で「昇順」になるということを意味する。
ここで説明したローカル・ソート処理は、比較演算を行わないという優れた性質がある。一般的に、比較を行うソートは、データ数をnとするとき、O(n*log(n))の処理量が発生し、比較を行わないソートでは、処理量はO(n)である。比較を行わないカウンティングソートは、数え上げ、累計数化、及び、転送のおよそ3つの段階を含む。処理ステップは、全てのデータが異なる場合、3nになる。そこで、n個の重複しないデータがあって、m台のコンピュータがある場合、n個のデータをm分割して、各分割部分をローカルにソートし、それをグローバル・ソートで統合するモデルでは、グローバル・ソートのおおよそのステップは
(m−1)*(2*n/m)
になる。最初の項(m−1)は、各コンピュータが他のコンピュータから受け取って処理しなければならない回数を表し、2番目の項(2*n/m)は、n/m個の2つの昇順リストを比較する際に、平均的に発生する比較の回数である。mが大きければ、
2*n
となり、グローバル・ソートのステップ数は、O(n)になる。即ち、比較を行うソートO(n*log(n))よりも効率がよい。これは、昇順のリストを比較することにより、効率化されたためと考えることができる。一方、mが消えていることは、コンピュータの台数が増えても、グローバル・ソートにおける1台あたりの処理量は変わらないことを意味している。
[ローカル・ソート処理の他の実施形態]
上述のローカル・ソート処理は、各処理モジュールを並列に動作させ得る点で優れている。しかし、ローカル・ソート処理は、他の方式でも実現できる。例えば、コンピュータの台数mがデータの個数nに匹敵する場合には、上述の順序番号付与処理の考え方を用いてローカル・ソート処理を実現してもよい。
例えば、図9を参照して説明した「年齢」と「性別」でソートする例に関して、この他の実施形態によるローカル・ソート処理を説明する。
年齢と性別でソートする例では、各PMMにおいて、レコード毎に性別GVNo、年齢GVNo、及び、GOrdの3次元の配列を作り、この3次元の配列に一気に順序番号を付与すれば、上述のローカル・ソート処理と同じ結果が得られる。図35A〜Fは、それぞれ、順序番号付与処理を使用するローカル・ソート処理の説明図である。
最初に、図35Aに示されるように、OrdSetの各要素について、性別のGVNo、年齢のGVNo及びGOrdからなる3次元配列を作成する。以下の説明では、OrdSet=iの3次元配列を、A[i]=(a,b,c)のように表現することにする。本例では、
A[0]=(1,2,0)
A[1]=(0,0,1)
A[2]=(1,1,2)
である。
次に、図35Bに示されるように順序番号を初期化する。
次に、図35Cに示されるように、順序番号を付与する。本例では、A[0]をOrdSet1へ送り、A[1]をOrdSet2へ送り、A[2]をOrdSet0へ送り、自分の保持する3次元配列と送られてきた配列を比較し、順序番号を付与する。
更に、図35Dに示されるように、A[0]をOrdSet2へ送り、A[1]をOrdSet0へ送り、A[2]をOrdSet1へ送り、自分の保持する3次元配列と送られてきた配列を比較し、順序番号を付与する。
このような順序番号付与処理の結果として、図35Eに示されるような結果が得られる。図35Fには、順序番号の順に入れ替えた結果が示されている。図35Fに示されている結果は、図9に示されているローカル・ソートの結果と一致している。
[SIMD型並列処理]
並列化のアルゴリズムが稚拙である場合、SIMDを採用して所望の結果を得るためのプログラムの開発が困難であり、開発できたとしても、そのプログラムの自由度は低い。そこで、SIMDを採用するためには、SIMDに適した優れたアルゴリズムを開発する必要がある。この点、本実施の形態によるアルゴリズムは、
(1)処理の実行にあたって条件分岐がない。但し、検索処理の場合には、条件分岐が行われる可能性があるが、単純な条件分岐である。
(2)昇順のリストを相互に比較するなど、1つの命令で実行できる処理(ステップ数、クロック数)の占める割合が高い。
(3)すべての処理モジュールが平等に同じ役割を持つ。処理モジュール毎に違う役割があると、単一命令で処理を実現できない。
という点でデータ構造及びアルゴリズムが優れている。したがって、本実施の形態では、SIMDを採用する際にプログラムが簡単化され、プログラムの開発の容易性やプログラムの高い自由度を確保することができる。
[システム構成]
本発明にかかる情報処理システムは、例えば、フロントエンドとなる端末装置と、リング状のチャネルを介して接続され、端末装置からの命令を、それぞれのPMMが受理することにより、PMMにおいて、上述したコンパイル、ソート、集計の処理が実行できる。また。各PMMはパケットを何れかのバスを利用して送出すればよく、PMM間の同期等を外部から制御する必要もない。
また、制御装置には、コンパイル、ソートなどの繰り返し演算のためのハードウェア構成を備えたアクセラレータチップのほか、これに加えて、汎用CPUを含めても良い。汎用CPUは、端末装置からチャネルを介して伝達された命令を解釈し、アクセラレータチップに必要な指示を与えることができる。
さらに、制御装置、特に、その中のアクセラレータチップには、順序集合配列、グローバル順序集合配列など作業に必要な種々の配列を収容するためのレジスタ群が設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必要な値をロードしてしまえば、コンパイル、ソート、及び、集計にかかる上述した処理演算中には、制御装置はメモリにアクセスすることなく、レジスタから値を読み出し、或いは、レジスタに値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる(演算処理前のロード、および、処理結果の書き込み)ことができ、処理時間を著しく短縮することが可能となる。
[グローバル集合配列Gordとグローバル項目値番号配列GNoについて]
次に、本実施の形態にて導入した配列GOrdおよび配列GVNoの意義について説明する。グローバル順序集合配列GOrdは、各PMMが掌握するローカルな表形式データを集合させたグローバルな表形式データ中、各PMMの掌握する表形式データの各レコードの位置(順位)を示している。即ち、本実施の形態では、グローバル順序集合配列GOrd及び順序集合配列OrdSetにより、レコードの位置情報を、グローバルな成分とローカルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能となるとともに、各PMMが単独で処理を実行することも可能となる。
本実施の形態においては、PMMが各項目の情報ブロックを保持するように構成されていたが、PMMが表形式データをそのまま保持するような場合でも、上記GOrdは同様に機能する。
例えば、本実施の形態においてコンパイルが終了した状態(例えば、図25参照)で、グローバル順序集合配列GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式データ全体のビューを作成することができる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
前記実施の形態においては、PMMを、一方が時計回りにパケットを伝送する第1のバス(第1の伝送路)、他方が反時計回りにパケットを伝送する第2のバス(第2の伝送路)にて、リング状に接続している。このような構成により、パケット伝送の遅延時間などを均一化することができるため有利である。しかしながら、これに限定されず、バス型など他の形態の伝送路を採用しても良い。
また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有するPMMを利用しているが、これに限定されるものではなく、パーソナルコンピュータ、サーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、PMMの代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバが、複数の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報処理ユニットが、レコードの順位を示す値を受理し、グローバル順序集合配列GOrdを参照することにより、レコードを特定することができる。また、グローバル値番号配列を参照することにより、項目値を特定することも可能である。
また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用しても良い。
単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東京支社、福岡支社の3つの表形式データを用意し、通常は、各支社の単位で、検索、集計、ソートなどを実行する。さらに、3つの支社を統合したグローバルな表形式データを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グローバルな表形式データに関する検索、ソートおよび集計を実現することができる。
無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、および、グローバルな表形式データに関する処理を実現することもできる。
本発明は、特に、大量のデータを管理するシステム、たとえば、データベース、データウェアハウスに適用することができる。より具体的には、大規模な科学技術計算、受発注管理や証券取引などの基幹業務管理、事務管理に利用可能である。
図1は、従来のデータ管理機構の説明図である。 図2は、従来のデータ管理機構の説明図である。 図3は、本発明の実施の形態にかかる情報処理システムの概略を示すブロックダイヤグラムである。 図4は、本発明の実施の形態にかかるPMMの構造の一例を示す図である。 図5は、表形式データの一例の説明図である。 図6は、従来の表形式データの記憶構造の説明図である。 図7は、本発明の実施の形態にかかる表形式データの記憶構造の一例の説明図である。 図8は、本発明の実施の形態にかかる集計処理のフローチャートである。 図9は、ローカル・ソート処理の結果の説明図である。 図10は、本発明の実施の形態にかかる順序番号付与処理の説明図である。 図11は、本発明の実施の形態にかかるローカル次元値番号付与処理の説明図である。 図12は、本発明の実施にかかるグローバル次元値番号付与処理の説明図である。 図13は、グローバル次元値番号付与処理の結果の説明図である。 図14は、本発明の実施の形態にかかるローカル集計処理の説明図である。 図15は、本発明の実施の形態にかかるローカル集計処理の説明図である。 図16は、本発明の実施の形態にかかる第1のグローバル集計方法の説明図である。 図17は、本発明の実施の形態にかかるグローバル集計結果算出の説明図である。 図18は、本発明の実施の形態にかかるグローバル集計値の重複排除処理の説明図である。 図19は、本発明の実施の形態にかかる結果テーブル生成処理の説明図である。 図20は、結果テーブルの説明図である。 図21は、本発明の実施の形態にかかる第2のグローバル集計方法の説明図である。 図22は、本発明の実施の形態にかかる順序番号付与方法のフローチャートである。 図23A〜Dは、それぞれ、本発明の実施の形態にかかる順序番号付与方法の説明図である。 図24A〜Dは、それぞれ、本発明の実施の形態にかかる順序番号付与方法の説明図である。 図25は、コンパイル処理終了時の状態の一例の説明図である。 図26は、本発明の実施の形態にかかるローカル・ソート処理のフローチャートである。 図27は、ローカル・ソート処理の初期状態の一例の説明図である。 図28は、各PMMにおけるカウントアップ処理の一例の説明図である。 図29は、累計数配列作成処理の一例の説明図である。 図30は、累計数配列の一例の説明図である。 図31は、ローカル・ソート処理の詳細なフローチャートである。 図32は、各PMMにおけるローカル・ソート処理の実行状態の一例の説明図である。 図33は、各PMMにおけるローカル・ソート処理の実行状態の一例の説明図である。 図34は、各PMMにおけるローカル・ソート処理の結果の一例の説明図である。 図35A〜Fは、それぞれ、ローカル・ソート処理の他の実施形態の説明図である。
符号の説明
32 PMM
34 第1のバス
36 第2のバス
40 制御回路
42 バスI/F
44 メモリ
46 バンク

Claims (10)

  1. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順序に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、情報処理システムにおいて、
    複数の処理モジュールに格納されている項目値を集計する情報処理方法であって、
    各処理モジュールが、自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号と、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号とをメモリに記憶するステップと、
    各処理モジュールが、自処理モジュール内で、少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするステップと、
    各処理モジュールが、レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番を表す次元値番号を付与してメモリに格納するステップと、
    各処理モジュールが、他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるステップと、
    各処理モジュールが、グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出するステップと、
    各処理モジュールが、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するステップと、
    を有する情報処理方法。
  2. 各処理モジュールが、集計値を算出するステップの後に、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成するステップを更に有する、請求項1に記載の情報処理方法。
  3. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順番に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、
    情報処理システムであって、
    各処理モジュールは、自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号、及び、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号を更にメモリに記憶し、
    各処理モジュールは、
    自処理モジュール内で少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするローカル・ソート手段と、
    レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番に次元値番号を付与してメモリに格納する次元値番号付け手段と、
    他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるグローバル次元値番号付け手段と、
    グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出する集計手段と、
    他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するグローバル集計手段と、
    を有する情報処理システム。
  4. 各処理モジュールは、グローバル集計手段に接続され、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成する手段を更に有する、請求項3に記載の情報処理システム。
  5. 複数の処理モジュールが論理的に環状に接続され、
    各処理モジュールは、情報の項目に対応した項目値を含むレコードの配列として表される表形式データを、項目値に対応した項目値番号の順番に該項目値が格納されている値リスト、及び、レコードの順番に項目値番号を指定する情報が格納されたポインタ配列の形式で記憶するメモリを具備している、情報処理システムにおいて、
    処理モジュールのコンピュータに、
    自処理モジュール内のレコードに対して複数の処理モジュール間で一意に割り当てられたグローバル・レコード番号と、自処理モジュール内の項目値に対して複数の処理モジュール間で順序付けられたグローバル項目値番号とをメモリに記憶するステップと、
    自処理モジュール内で少なくとも1個以上の指定された項目のグローバル項目値番号の組によって順序付けられた順番でレコードをソートするステップと、
    レコードに対応したグローバル項目値番号の組を、ソートされたレコードの順番に次元値番号を付与してメモリに格納するステップと、
    他の処理モジュールからグローバル項目値番号の組を相互に取得し、自処理モジュール内のグローバル項目値番号の組よりも前に順序付けされる組の個数をカウントし、自処理モジュール内のグローバル項目値番号の組の次元値番号をカウントされた個数分だけ引き上げることにより、グローバル項目値番号の組に対して、複数の処理モジュール間で共通のグローバル次元値番号を付けるステップと、
    グローバル項目値番号の組毎に、所定の情報の項目の項目値を所定の規則に従って集計することによりローカル集計値を算出するステップと、
    各処理モジュールが、他の処理モジュールからグローバル項目値番号の組毎のローカル集計値を取得し、取得された集計値をグローバル項目値番号の組毎に集計することにより集計値を算出するステップと、
    を実行させるためのプログラム。
  6. 処理モジュールのコンピュータに、集計値を算出するステップの後に、グローバル項目値番号の組から項目値の組を復元し、項目値の組、及び、項目値の組に対応した集計値を含む結果テーブルを生成するステップを更に実行させるための請求項5に記載のプログラム。
  7. 順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて、
    各処理モジュールで個別に順序付けされている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法であって、
    各処理モジュールが自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納するステップと、
    各処理モジュールが自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する第1の送信ステップと、
    各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第1の更新ステップと、
    各処理モジュールが受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する第2の送信ステップと、
    各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第2の更新ステップと、
    各処理モジュールが第1の送信ステップにおいて論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、第2の送信ステップと第2の更新ステップを繰り返し実行するステップと、
    を有する情報処理方法。
  8. 順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールと、複数の処理モジュールを論理的に環状に接続する伝送路と、を含み、各処理モジュール内の値のリスト中の値に複数の処理モジュール間で共通の順序番号を付与する情報処理システムであって、
    各処理モジュールは、
    自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納し、自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する初期化手段と、
    論理的に前の段に接続された処理モジュールから値のリストを受信する受信手段と、
    自処理モジュール内の値のリスト中の各値に対し、受信手段によって受信された値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する更新手段と、
    受信手段によって受信された値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する送信手段と、
    初期手段を起動し、初期化手段によって送信した値のリストが、論理的に環状に接続された他のモジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、受信手段、更新手段及び送信手段を繰り返し動作させる制御手段と、
    を有する、
    情報処理システム。
  9. 順序付きの値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて、
    処理モジュールのコンピュータに、
    自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納するステップと、
    自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する第1の送信ステップと、
    自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第1の更新ステップと、
    受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する第2の送信ステップと、
    自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第2の更新ステップと、
    第1の送信ステップにおいて論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、第2の送信ステップと第2の更新ステップを繰り返し実行するステップと、
    を実行させるためのプログラム。
  10. 値のリストを格納しているメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されている情報処理システムにおいて、
    各処理モジュールで個別に保持されている値に複数の処理モジュール間で共通の順序番号を付与する情報処理方法であって、
    各処理モジュールが自処理モジュール内の値のリスト中の各値の順序番号の初期値をメモリに格納するステップと、
    各処理モジュールが自処理モジュールのメモリに格納されている値のリストを論理的に次の段に接続された処理モジュールへ送信する第1の送信ステップと、
    各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第1の更新ステップと、
    各処理モジュールが受信した値のリスト中の値から自処理モジュール内の値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続された処理モジュールへ送信する第2の送信ステップと、
    各処理モジュールが、自処理モジュール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュールから受信した更なる値のリストの中から該各値よりも前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納する第2の更新ステップと、
    各処理モジュールが第1の送信ステップにおいて論理的に次の段に接続された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信されるまで、第2の送信ステップと第2の更新ステップを繰り返し実行するステップと、
    を有する情報処理方法。
JP2005514953A 2003-10-27 2004-10-19 情報処理方法及び情報処理システム Expired - Fee Related JP4511469B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003365643 2003-10-27
JP2003365643 2003-10-27
PCT/JP2004/015439 WO2005041067A1 (ja) 2003-10-27 2004-10-19 分散メモリ型情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2005041067A1 true JPWO2005041067A1 (ja) 2007-04-26
JP4511469B2 JP4511469B2 (ja) 2010-07-28

Family

ID=34510182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005514953A Expired - Fee Related JP4511469B2 (ja) 2003-10-27 2004-10-19 情報処理方法及び情報処理システム

Country Status (4)

Country Link
US (1) US7849289B2 (ja)
JP (1) JP4511469B2 (ja)
CN (1) CN100452032C (ja)
WO (1) WO2005041067A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007034878A (ja) * 2005-07-29 2007-02-08 Turbo Data Laboratory:Kk 情報処理方法、情報処理装置および情報処理プログラム
JP4881435B2 (ja) * 2007-06-21 2012-02-22 株式会社ターボデータラボラトリー メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置
JP5208117B2 (ja) * 2007-08-28 2013-06-12 株式会社ターボデータラボラトリー 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム
WO2010013320A1 (ja) * 2008-07-30 2010-02-04 株式会社ターボデータラボラトリー 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
JP5598279B2 (ja) * 2010-11-16 2014-10-01 日本電気株式会社 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム
JP5382383B2 (ja) * 2011-03-24 2014-01-08 日本電気株式会社 データベース処理装置、データベース処理方法、プログラム及びデータベースのデータ構造
WO2014045320A1 (ja) * 2012-09-21 2014-03-27 富士通株式会社 制御プログラム、制御方法および制御装置
CN105940367B (zh) * 2014-02-07 2017-07-11 三菱电机株式会社 信息处理装置以及信息处理方法
US9268863B2 (en) * 2014-06-03 2016-02-23 International Business Machines Corporation Hierarchical in-memory sort engine
CN108696559B (zh) * 2017-04-11 2021-08-20 华为技术有限公司 流处理方法及装置
CN112416319B (zh) * 2020-11-12 2021-07-30 北京和德宇航技术有限公司 卫星系统变量保护方法、装置、电子设备及存储介质
CN115525795B (zh) * 2021-06-25 2024-01-30 中科寒武纪科技股份有限公司 一种在多核处理器中对数据进行排序的方法

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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) * 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6934785B2 (en) * 2000-12-22 2005-08-23 Micron Technology, Inc. High speed interface with looped bus

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
WO2005041067A1 (ja) 2005-05-06
CN100452032C (zh) 2009-01-14
JP4511469B2 (ja) 2010-07-28
US20070245124A1 (en) 2007-10-18
CN1886739A (zh) 2006-12-27
US7849289B2 (en) 2010-12-07

Similar Documents

Publication Publication Date Title
US11893018B2 (en) Dispersing data and parity across a set of segments stored via a computing system
JP4339381B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
JP4511469B2 (ja) 情報処理方法及び情報処理システム
US9420036B2 (en) Data-intensive computer architecture
Jain et al. Input/output in parallel and distributed computer systems
JP4758429B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
Petersohn et al. Flexible rule-based decomposition and metadata independence in modin: a parallel dataframe system
JP4673299B2 (ja) 情報処理方法及び情報処理システム
CN114185895A (zh) 数据导入导出方法、装置、电子设备及存储介质
CN114443680A (zh) 数据库管理系统、相关装置、方法和介质
US20120290608A1 (en) Data management in relational databases
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP4772506B2 (ja) 情報処理方法、情報処理システムおよびプログラム
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
JP4559971B2 (ja) 分散メモリ型情報処理システム
JPWO2009044486A1 (ja) 表形式データをソートする方法、マルチコア型装置、及び、プログラム
JP4995724B2 (ja) 情報処理システムおよび情報処理方法
WO2010013320A1 (ja) 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
Riha et al. An Adaptive Hybrid OLAP Architecture with optimized memory access patterns
JP5208117B2 (ja) 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム
CN118829977A (zh) 在列存储数据库上对行存储表达式求值
CN117708060A (zh) 数据仓的文件处理方法、装置及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071009

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

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

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

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4511469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160514

Year of fee payment: 6

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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