JPH096732A - 並列プロセッサ装置 - Google Patents

並列プロセッサ装置

Info

Publication number
JPH096732A
JPH096732A JP7147863A JP14786395A JPH096732A JP H096732 A JPH096732 A JP H096732A JP 7147863 A JP7147863 A JP 7147863A JP 14786395 A JP14786395 A JP 14786395A JP H096732 A JPH096732 A JP H096732A
Authority
JP
Japan
Prior art keywords
group
bucket
processor
data
tuple
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
JP7147863A
Other languages
English (en)
Other versions
JP3560690B2 (ja
Inventor
Yoshifumi Ojiro
嘉史 雄城
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP14786395A priority Critical patent/JP3560690B2/ja
Priority to US08/614,045 priority patent/US5854938A/en
Priority to DE69613517T priority patent/DE69613517T2/de
Priority to EP96104882A priority patent/EP0749066B1/en
Publication of JPH096732A publication Critical patent/JPH096732A/ja
Application granted granted Critical
Publication of JP3560690B2 publication Critical patent/JP3560690B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

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

Abstract

(57)【要約】 【目的】 本発明は、複数のプロセッサが同時並列的に
動作して所定の業務を実行する並列計算機システム等の
並列プロセッサ装置に関し、通常範囲のメモリ量でのバ
ケット書込/読出性能の保証のためのブロッキング作業
を可能にし、バケット書込/読出性能を大幅に改善する
ことを目的とする。 【構成】 第1分割手段5が、第1プロセッサ群2から
中間プロセッサ群4へのデータ送信時に、処理対象のデ
ータを、それぞれ複数種別のタプルの集合体である複数
組のバケットグループに分割して中間プロセッサ群4に
一時的に格納させるとともに、第2分割手段6が、中間
プロセッサ群4から第2プロセッサ群3へのデータ送信
時に、複数組のバケットグループを、各バケットグルー
プ毎に読み出して同一種別のタプルのみの集合体である
バケットに分割して第2プロセッサ群3に格納させるよ
うに構成する。

Description

【発明の詳細な説明】
【0001】(目次) 産業上の利用分野 従来の技術(図9〜図15) 発明が解決しようとする課題 課題を解決するための手段(図1) 作用(図1) 実施例(図2〜図8) 発明の効果
【0002】
【産業上の利用分野】本発明は、複数のプロセッサが同
時並列的に動作して所定の業務を実行する並列計算機シ
ステム等の並列プロセッサ装置に関する。
【0003】
【従来の技術】まず、一般的な並列計算機システム(並
列プロセッサ装置)の概要について説明する。なお、こ
の概要は、後述する本発明にも共通している。この一般
的な並列計算機システム(本発明が適用されるシステ
ム)は、次の条件を満たすものである。
【0004】システムを構成する複数のプロセッサは、
メモリおよび二次記憶装置を共用しない。つまり、ある
メモリやある二次記憶装置は、システムの動作中、ある
1プロセッサによってのみアクセスされる。また、複数
のプロセッサ間は、任意のプロセッサから任意のプロセ
ッサへのデータ転送が可能なネットワーク機構により相
互接続されている。
【0005】ここで、図9により一般的な並列計算機シ
ステムの構成例について説明すると、図9において、1
0−1〜10−Nはそれぞれ並列計算機システムを構成
するプロセッサモジュール(以下、PMと略記する場合
がある)で、これらのPM10−1〜10−Nは、並列
的に動作するもので、その相互間は、ネットワーク機構
11により通信可能に接続されている。
【0006】ネットワーク機構11は、PM10−1〜
10−N間の任意長データの全点対全点通信を論理的に
可能とするものである。このネットワーク機構11は、
実際には、固定長バケットをPM相互間で複数回数交換
することにより前記通信を行なうものであってもよい
し、ミクロな時間幅ではPM相互間のある結合関係が輻
輳現象などにより不可能(輻輳を起こした一方の通信が
待たされ遅延する)であってもよいが、マクロな視点で
任意のプロセッサ相互間の任意長のデータ転送が可能な
ものとする。
【0007】そして、PM10−1〜10−Nは、それ
ぞれ、CPU20,メモリ21,アクセス機構22およ
びI/O機構23を含んで構成されている。ここで、C
PU20は、各PM10−1〜10−Nに内蔵され、ア
クセス機構22やI/O機構23の動作を制御するほ
か、メモリ21上に存在するデータの読出やメモリ21
上へのデータの書込を行なう機能を有している。
【0008】メモリ21は、各PM10−1〜10−N
に内蔵されており、このメモリ21上の任意の位置にあ
る任意長のデータブロックに対して、CPU20,アク
セス機構22およびI/O機構23からアクセスするこ
とができるようになっている。アクセス機構22は、各
PM10−1〜10−Nに内蔵され、PM10−1〜1
0−Nの相互間を接続するネットワーク機構11へのア
クセスを行なうためのものである。このアクセス機構2
2は、CPU20から指定された自メモリ上位置(メモ
リ21のアドレス)に存在する任意長のデータブロック
をCPU20から指定された他プロセッサに対して転送
する機能と、ネットワーク機構11から与えられたデー
タブロックを自CPU20から指定された自メモリ上位
置に格納する機能とを(少なくとも論理的に)有してい
る。
【0009】I/O機構23は、各PM10−1〜10
−Nに内蔵され、各PM10−1〜10−Nに接続され
た二次記憶装置24へのアクセスを行なうためのもので
ある。このI/O機構23は、CPU20から指定され
た自メモリ上位置に存在する任意長のデータブロックを
CPU20から指定された二次記憶装置24の指定領域
に書き込む機能と、CPU20から指定された二次記憶
装置24の指定領域におけるデータブロックをCPU2
0から指定された自メモリ上位置に書き込む機能とを
(少なくとも論理的に)有している。
【0010】なお、各PM10−1〜10−Nに接続さ
れた二次記憶装置24は、例えば図12を参照しながら
後述するような磁気ディスク装置で、各PM10−1〜
10−Nに複数台接続されていてもよい。また、静的な
意味では1台の二次記憶装置24が複数のPMに対して
アクセスバスをもっていてもよい。しかし、ここで、述
べる範囲の処理に関しては、1台の二次記憶装置24に
アクセスするPM台数は1であるとする。
【0011】次に、上述した一般的な並列計算機システ
ムが行なう処理の概要(当該処理が満たす条件)につい
て、図10および図11により説明する。なお、この処
理の概要は、後述する本発明にも共通している。上述し
た一般的な並列計算機システムにおける論理的な処理
を、図10により説明する。
【0012】ある1ファイル、あるいは、RDB(Rela
tional DataBase)で定義される所の1テーブルがあるも
のとする。以下、RDB処理を例として説明する。これ
が図10に示すソーステーブル(Source Table)400で
ある。ソーステーブル400から1つのタプル(個々に
独立して処理を受けることが可能なデータ単位)500
が抽出され、このタプル500に対して分類関数f〔グ
ループ化関数(Grouping Function)401〕が適用され
る。
【0013】その結果(分類関数fの出力値)により、
このタプル500がいずれのタプルグループ〔バケット
(Bucket)402〜404〕に属するかが決定される。タ
プル500は、決定されたバケット402〜404に付
加される。このようにして生成されたバケット群は、二
次記憶装置(図9の符号24参照)に格納され、各バケ
ット402〜404毎に独立に適用される次段処理(Nex
tProcess)405〜407の入力情報となる。
【0014】図10にて説明した処理は、前述した一般
的な並列計算機システムの上では図11に示すように実
装されているものとする。即ち、入力テーブル(図10
のソーステーブル400)800は、第1プロセッサ群
60に属する各PM600〜602に接続された二次記
憶装置群に分割格納されている。各PM600〜602
の配下にある、入力テーブル800の部分集合900〜
902をサブテーブルと呼ぶ。
【0015】図10にて前述したタプルの抽出および分
類関数の適用は、第1のプロセッサグループ60に属す
る個々のPM600〜602により、並列的に実行され
る。タプル抽出の対象は、各サブテーブル900〜90
2である。分類関数の適用によって分類されたタプル群
(同一種別のタプルの集合体)は、最終的に第2プロセ
ッサ群70に格納されなければならない。ここで、第1
プロセッサ群60と第2プロセッサ群70とが排他的関
係にあることは要求されない。つまり、第1プロセッサ
群60と第2プロセッサ群70とは、全く同じプロセッ
サ群であってもよいし、一部のプロセッサが重複する関
係であってもよいし、全く異なるものであってもよい。
【0016】同一種別のタプルからなる1つのバケット
は、第2プロセッサ群70に属する1つのプロセッサに
集中して格納されてもよいし、第2プロセッサ群70に
属するある台数のプロセッサに分割して格納されてもよ
い。ここでの要求は、「次段処理の実行時に、特定のバ
ケットのデータのみを第2プロセッサ群70から選択し
て読み出すことができること」である。これを実現する
データ構造により、データ(第1プロセッサ群60に格
納されていた入力テーブル800)は、図11に示すよ
うに、第2プロセッサ群70に属する各PM700〜7
02(各二次記憶装置24)に、複数の部分1000〜
1299に分割されて格納される。
【0017】ここで注意すべき点は、第1プロセッサ群
60と第2プロセッサ群70との間の矢印は必ずしもネ
ットワーク上の直接交信を意味していないことである。
図11は、入力情報の格納形態と出力(結果)情報の格
納形態とを示そうとするものであって、その間の転送処
理に対して要求がないことに着目するためのものであ
る。以降に説明する本発明は、この図11に示される第
1プロセッサ群60から第2プロセッサ群70への矢印
を如何に実現するかに関する技術である。
【0018】ところで、RDB処理において、分類関数
(例えばハッシングや特定カラムの値による分類)によ
りタプル群を複数のグループ(バケット)に分割する作
業は極めて一般的である。例えば、SQL文の“Group
By”句は、このグループ分割処理を明らかに要求するも
のであるし、上述のような構成でジョイン(join)演算の
代表的方式であるハッシュジョインは、ハッシュ関数に
よるタプルのグループ分割を特徴としている。
【0019】並列データベースマシンや分散データベー
スシステムと呼ばれるシステムでは、末端ユーザから見
て論理的に1つのテーブルであるべきタプル群が、メモ
リや二次記憶装置を直接共用しない複数のプロセッサに
分割される場合が多い。これは、例えば同じテーブルへ
の条件検索処理が、テーブルの部分集合に対して同一の
検索処理を行なうプロセッサ群による実行により大幅に
性能改善されるなどの効果を狙ったものである。
【0020】このような環境で、上記グループ分割処理
は、これもまた各プロセッサが自身配下のテーブルの部
分集合(以下、サブテーブルという)に含まれる全タプ
ルに対して指定された分類関数を適用し、その適用結果
を論理的に和すること、つまり「結果を格納すべきプロ
セッサ群に、それぞれが生成したサブテーブルのグルー
プ分割された結果(サブバケット)を送付し、その結果
を受信したプロセッサ側で同一バケットに属するサブバ
ケットどうしを連結して最終的にバケットを作成し、こ
れを自身の二次記憶装置に格納すること」により実現さ
れる。
【0021】このとき、以下に記述する二次記憶装置2
4の特性〜から、このグループ分割処理によって生
成された各バケットの二次記憶装置への格納方式によっ
て、大きな処理性能差が、該グループ分割処理にも次段
処理(つまり生成されたバケット個々を読み出すことに
より行なわれる次の処理)にも発生する。なお、図12
は、代表的な二次記憶装置24としての磁気ディスク装
置を模式的に示すもので、図12において、300〜3
03はそれぞれ高速回転する磁気媒体、304は磁気媒
体300〜303の回転軸で、この回転軸304は、図
示しないモータに結合されている。また、305〜31
2は磁気ヘッドおよびヘッドアームからなるヘッド部
で、これらのヘッド部305〜312は、各磁気媒体3
00〜303を両面から挟むように配置されており、外
部から与えられたアドレスの一部により選択されたヘッ
ド部305〜312のみが磁気媒体300〜303のい
ずれかに対するデータ授受を行なうことができるように
なっている。さらに、313は各ヘッド部305〜31
2のヘッドアームを支持するための支持部材であり、こ
の支持部材313が、外部から与えられたアドレスのデ
ータを読み取ることのできる位置まで、ヘッド部305
〜312を移動させるようになっている。
【0022】図12にその概要が示される通り、代表
的な二次記憶装置24としての磁気ディスク装置は、高
速に回転する磁気媒体300〜303のうち、外部から
与えられたアドレスの上位で指定されるものが選択され
た上、その中心からの距離が外部から与えられたアドレ
スの中位で指定される部分にヘッド部(磁気ヘッド)3
05〜312が物理的に移動し、その磁気ヘッドがアク
セスする1円周上の、外部から与えられたアドレスの下
位で指定される領域に対してデータの書込/読出が行な
われる。
【0023】上述した現状の磁気ディスク装置では、
磁気媒体300〜303の回転速度に比較して、上記ヘ
ッド部305〜312の位置変更(回転媒体の選択切替
も、厳密にはヘッド位置の微調整を必要とするため、こ
れに含まれる)に要する時間が相対的に長い。このた
め、磁気ディスク装置に対する入出力処理の性能を向上
させるためには、ある特定量のデータの入出力に必要な
ヘッド部305〜312の移動回数および移動距離を小
さくすればする程、効果が大きい。ある容量のデータを
格納する時に、このようなヘッドの移動回数および移動
距離を最小とする二次記憶装置上の領域を以下では仮に
「物理連続な領域」と呼称する。以下の説明では、二次
記憶磁気媒体上の特定面積内に固まっていることが「物
理連続な領域」の定義ではない。
【0024】あるI/Oアクセスがこのような物理連
続な領域に対するアクセスであり、そのデータ転送量が
ある値以上に大きいならば、I/O処理の性能はこの二
次記憶装置の性能を充分に活用しているということがで
きる。このI/Oアクセスに関する物理連続な領域に期
待される容量は、現状の磁気ディスク装置の場合、数百
KB程度であり、これを下回るとI/O性能は急速に低
下する一方、これ以上大きくしても性能の改善効果は小
さい。
【0025】一般に、データベース(DB)処理では、
扱うデータ量が膨大であるためにI/O性能がその処理
性能のほとんどを決定する場合が多い。このため、上述
したI/Oアクセスに関する物理連続な領域の容量の保
証が可能であることの効果は大きい。その簡単な例を図
13および図14に示す。図13はアクセス効率の悪い
DB処理例を示すもので、図13の左側には、二次記憶
装置24に記入されるべきタプル群が、I/O要求に投
入される順序に並んで示されている。今、ここでは、2
つの「物理連続な領域」1200と1201とが存在す
るものとする。図13に示す例では、物理連続な領域1
200と1201とに記入されるべきタプルが交互に投
入されるため、この2領域間をヘッドが往復することに
なり、I/O性能は極めて低下してしまう。
【0026】一方、図14は相対的にアクセス効率の良
いDB処理例を示すもので、この図13に示す例では、
同一領域に記入されるべきタプルが連続して投入される
ため、いわゆる「まとめ書き」が可能であって、領域間
のヘッド移動は1回で済むことになる。従って、少なく
とも次段処理実行時の読出性能を保証しようとするなら
ば、1バケットが可能な限り少ない個数の「物理連続な
領域」に分割されて格納されているべきである。一方、
一般にDB処理では1バケットの容量は数メガバイト程
度にはなるので、これら全部を1つの「物理連続な領
域」に収めても上記議論から二次記憶装置の性能への寄
与は少ない。従って、具体的な要求は次のような2点
(A),(B)となる。
【0027】(A)上記I/Oアクセス性能保証のため
の「物理連続な領域」の容量に関する要求を満足する大
きさ(数百KB程度)を、1I/Oアクセス単位とす
る。この1I/Oアクセス単位中の全データは、二次記
憶装置中の1つの「物理連続な領域」に対して記入され
るとともに、該1つの「物理連続な領域」から読み出さ
れることになる。
【0028】(B)バケットデータの書込時、1I/O
アクセス単位中に混在するバケット種別数を可能な限り
小さくする。可能ならば、全てのI/Oアクセス単位中
に混在するバケット種別数を1とする。しかし、上述の
ような要求,を満足することは現在まで困難であっ
た。次に説明するように、既存技術では、1つのPMに
到来する可能性のあるバケット種別が極めて多いため、
バケット種別毎に上記I/Oアクセス単位の整数倍の容
量のブロッキングバッファを準備することは、現実的で
ない程巨大なメモリ容量を格納側(受信側である第2プ
ロセッサ群70)の各PM700〜702にそなえるこ
とを要求することになる。
【0029】次に、図15により既存技術について説明
する。図15は、図11に示した第2プロセッサ群70
に属するPM700〜702のうちの一つ(ここではP
M702)の内部構造を示すものである。既存技術の特
徴は、少なくとも、論理的に図11における送信側のP
M600〜602と受信側(格納側)のPM700〜7
02との間がネットワークにより直結されている点にあ
る。つまり、タプルやバケットに関して、PM600〜
602の出力ストリームは、特に加工されることなく最
終的な格納先であるPM700〜702に送付される。
【0030】また、既存技術では、送信側のPM600
〜602は、バケットと受信側の各PM700〜702
との対応関係を与えられており、あるバケットに属する
タプルを送出する際、その対応関係を満足するPMを宛
先として陽に指定して送出することになる。一方、受信
側の各PM700〜702では、図15に示すように、
これら複数の送信側の各PM600〜602からタプル
のストリーム(図15中の“InputTuple Stream”参
照)としてデータを受理し、そのデータを、各PM70
0〜702(図15中ではPM702)が担当すべき各
バケットに対して準備されたブロッキングバッファ(Bl
ocking Buffers)21Aにバケット種別毎に分類して蓄
積する。ブロッキングバッファ21Aの容量は、少なく
とも、上述したI/Oアクセス単位に、各PM700〜
702が格納すべきバケット種別数を乗算した値とな
る。なお、ブロッキングバッファ21Aの領域は、例え
ば図9に示したメモリ(主記憶)21内に設定される。
【0031】そして、各PM700〜702は、I/O
アクセス単位にその蓄積量が達したバケットについてブ
ロッキングバッファ21Aの内容(該バケットに対応す
る部分)を二次記憶装置24に書き込む。
【0032】
【発明が解決しようとする課題】ところが、上述のよう
な方式の場合、格納側のPM700〜702が担当しな
ければならないバケット数は、一般に極めて多い。ハッ
シュジョインの場合を例にとると、各PM700〜70
2のメモリ容量でデータベース容量を除算した値程度の
バケット数が必要になる。例えば100GB程度のデー
タベース容量を64MB程度の主記憶(メモリ21)を
もつPMで処理しようとする場合には、1600個程度
のバケットが全体として必要になる。
【0033】また、受信側のPM700〜702でのバ
ケットとPMとの対応関係を制限する、つまりあるバケ
ットは特定の受信側のPMのみが処理することになる
と、予め各バケットの容量を予測することは通常不可能
であるために、PM間で扱うデータ量に著しい不均等が
発生する可能性があり、可能ならば1バケットはどのP
Mにも均等に配布することが望ましい。このことは、1
つのPMが扱うバケット種別の低減が通常困難であるこ
とを意味する。
【0034】例えば、主記憶容量64MBのPMが格納
側のPMとして32台配置された場合、容量100GB
のデータベースを1.6K個のバケットに分割して格納
しなければならないとするならば、同一バケットに属す
るデータ量が格納側のPM間でほぼ同容量になるように
制御すると、1PM当たり平均バケット数はやはり1.
6K個程度になる。この平均バケット数に、処理に参加
するPMの台数は関係しない。
【0035】上述のような要求を満足するI/Oアクセ
ス単位がこの場合256KBであるとすると、1.6K
個のバケットに対してこれだけの容量を準備することが
上記ブロッキングバッファ21Aに対して要求されるこ
とになるため、400MB程度の主記憶(メモリ21)
が必要ということになる。上述した通り、準備可能な主
記憶はこの場合64MBが上限である。従って、ここで
記述した処理を行なうことは実際には不可能であり、I
/Oアクセス単位に関する容量を保証することができ
ず、つまり、書込性能や読出性能が悪化する事態を招く
ことになる。この場合、I/Oアクセス時の平均ブロッ
ク長はせいぜい41KBになってしまうから、通常のD
E(Disk Enclosure)では512KB単位の上記要求が
満足された場合の1/5以下の性能しか提供できない。
【0036】一方、1タプルの最大長をこのブロック長
が下回ることは当然許されない。現状のRDBシステム
では32〜64KB程度のタプルは普通に許されるか
ら、上記ケース(バッファ長41KB)の場合、既存技
術ではこの要求すら満たせなくなる可能性がある。そこ
で、商用データベースの多くは、上記ブロッキングバッ
ファ21Aを公知の仮想記憶空間に配置することによ
り、問題を回避しようとしている。しかし、これでは、
ほぼ確実に1タプル毎に1回の二次記憶装置24への読
出/書込が発生することになり、ブロッキングが可能に
なり次段処理の性能が保証されるが、バケット分割処理
の性能は著しく低下する。
【0037】そこで、本発明は、現実的なメモリ容量の
み消費しながら、しかも全体処理性能をほとんど低下さ
せることなく、前述した要求(A),(B)を満足する
手法を提供することを可能にしている。しかも、本発明
は、1PM当たりの担当バケット数を低減するために、
あるバケットを担当するPMを1台に制限することを要
求しない。これにより、通常発生するバケット間の容量
の差によるPM間の負荷の偏りの発生が防止されること
になる。
【0038】以上説明した通り、本発明は、バケット分
割処理の性能の低下を招くことなく、通常範囲のメモリ
量でのバケット書込/読出性能の保証のためのブロッキ
ング作業を可能にし、バケット書込/読出性能を大幅に
改善できるようにした、並列プロセッサ装置を提供する
ことを目的とする。
【0039】
【課題を解決するための手段】図1は本発明の原理ブロ
ック図で、この図1において、1は並列的に動作する複
数のプロセッサで、これらの複数のプロセッサ1が一つ
の業務に参加し全体として該業務を実行するとともに、
各プロセッサ1において、業務における処理対象のデー
タを、個々に独立して処理を受けることが可能なデータ
単位(以下、タプルという)として取り扱うようになっ
ている。
【0040】そして、本発明の並列プロセッサ装置を構
成する複数のプロセッサ1には、第1プロセッサ群2,
第2プロセッサ群3および中間プロセッサ群4が包含さ
れている。ここで、第1プロセッサ群2は、処理対象の
データを分散して予め格納するプロセッサ1のグループ
であり、第2プロセッサ群3は、第1プロセッサ群2か
ら送信されてくる処理対象のデータを、同一種別のタプ
ルのみの集合体であるバケットに分割した状態で格納す
るプロセッサ1のグループであり、中間プロセッサ群4
は、処理対象のデータを、第1プロセッサ群2から受信
して一時的に格納した後に、第2プロセッサ群3へ送信
するプロセッサ1のグループである。
【0041】また、本発明の並列プロセッサ装置には、
第1分割手段5および第2分割手段6がそなえられてい
る。第1分割手段5は、第1プロセッサ群2から中間プ
ロセッサ群4へのデータ送信時に、処理対象のデータ
を、それぞれ複数種別のタプルの集合体である複数組の
バケットグループに分割して中間プロセッサ群4に一時
的に格納させるためのものであり、第2分割手段6は、
中間プロセッサ群4から第2プロセッサ群3へのデータ
送信時に、第1分割手段5により分割されて中間プロセ
ッサ群4に一時的に格納される複数組のバケットグルー
プを、各バケットグループ毎に読み出して同一種別のタ
プルのみの集合体であるバケットに分割して第2プロセ
ッサ群3に格納させるためのものである(請求項1)。
【0042】なお、第1分割手段5に、処理対象のデー
タをなす各タプルを分類するためのグループ化関数を予
め設定しておき、第1分割手段5が、各タプルに対して
グループ化関数を適用して得られた、グループ化関数の
出力値としてのバケット識別子に基づいて、バケットグ
ループ分割処理を行なうように構成してもよい(請求項
2)。同様に、第2分割手段6に、処理対象のデータを
なす各タプルを分類するためのグループ化関数を予め設
定しておき、第2分割手段6が、各タプルに対してグル
ープ化関数を適用して得られた、グループ化関数の出力
値としてのバケット識別子に基づいて、バケット分割処
理を行なうように構成してもよい(請求項3)。
【0043】また、第1プロセッサ群2,第2プロセッ
サ群3および中間プロセッサ群4の動作状態を管理しこ
れらの第1プロセッサ群2,第2プロセッサ群3および
中間プロセッサ群4の動作を同期させながら第1分割手
段5および第2分割手段6による分割処理を実行させる
ための制御用プロセッサを、複数のプロセッサ1に包含
させておいてもよい(請求項4)。
【0044】さらに、同一バケットグループに属するタ
プルを、中間プロセッサ群4に属する各プロセッサ1に
対して均一またはほぼ均一に送付して、中間プロセッサ
群4に属する各プロセッサ1における負荷を平坦化する
ための第1負荷平坦化手段を、第1分割手段5にそなえ
てもよい(請求項5)。同様に、同一バケットグループ
に属するタプルを、第2プロセッサ群3に属する各プロ
セッサ1に対して均一またはほぼ均一に送付して、第2
プロセッサ群3に属する各プロセッサ1における負荷を
平坦化するための第2負荷平坦化手段を、第2分割手段
6にそなえてもよい(請求項6)。
【0045】
【作用】図1により上述した本発明の並列プロセッサ装
置では、第1プロセッサ群2から第2プロセッサ群3へ
のタプルデータの転送に際して、これらの第1プロセッ
サ群2と第2プロセッサ群3との間に中間プロセッサ群
4が介在されている。そして、第1プロセッサ群2から
中間プロセッサ群4へのデータ送信時には、第1分割手
段5により、処理対象のデータが、それぞれ複数種別の
タプルの集合体である複数組のバケットグループに分割
されてから、中間プロセッサ群4に一時的に格納され
る。
【0046】この後、中間プロセッサ群4から第2プロ
セッサ群3へのデータ送信時には、第2分割手段6によ
り、中間プロセッサ群4に一時的に格納されている複数
組のバケットグループが、各バケットグループ毎に読み
出され、同一種別のタプルのみの集合体であるバケット
に分割されてから、最終的に第2プロセッサ群3に格納
される。
【0047】このように中間プロセッサ群4を介在させ
て、少なくとも2段階のデータ分割処理を行なうことに
より、各プロセッサ1に、タプルの総種別数分(バケッ
ト総種別数分)のバッファをそなえることなく、第2プ
ロセッサ群3に属する各プロセッサ1に、データをバケ
ットに分割した状態で格納させることができる。従っ
て、バケット分割処理の性能の低下を招くことなく、通
常範囲のメモリ量でのバケット書込/読出性能の保証の
ためのブロッキング作業を行なうことが可能になる(請
求項1)。
【0048】なお、第1分割手段5におけるバケットグ
ループ分割処理は、各タプルに対してグループ化関数を
適用して得られたバケット識別子に基づいて行なうこと
ができるとともに(請求項2)、第2分割手段6におけ
るバケット分割処理も、各タプルに対してグループ化関
数を適用して得られたバケット識別子に基づいて行なう
ことができる(請求項3)。
【0049】また、制御用プロセッサを用いて、第1プ
ロセッサ群2,第2プロセッサ群3および中間プロセッ
サ群4の動作を同期させながら第1分割手段5および第
2分割手段6による分割処理を実行させることにより、
タプル種別を意識しながら各プロセッサ1に分散配置さ
れたデータを分割することができる(請求項4)。さら
に、第1負荷平坦化手段により、中間プロセッサ群4に
属する各プロセッサ1における負荷が平坦化されるとと
もに(請求項5)。第2負荷平坦化手段により、第2プ
ロセッサ群3に属する各プロセッサ1における負荷も平
坦化される(請求項6)。つまり、本発明の並列プロセ
ッサ装置では、ある種別のバケットを担当するプロセッ
サを1台に制限せず、各プロセッサ1における負荷の平
坦化を行なうことにより、通常発生するバケット間の容
量の差によるプロセッサ間の負荷の偏りの発生が防止さ
れる。
【0050】
【実施例】以下、図面を参照して本発明の実施例を説明
する。まず、図2を参照しながら、本発明の一実施例と
しての並列プロセッサ装置の原理的な構成および動作に
ついて説明する。図2に示す通り、本実施例の並列プロ
セッサ装置には、送信側のPM群(第1プロセッサ群)
60と受信側のPM群(第2プロセッサ群)70との間
に、中間プロセッサ群としての中間ブロッキングPM群
150が介在している。
【0051】そして、第1ステップ(図1にて前述した
第1分割手段5としての機能による処理動作)として、
送信側のPM群60と中間ブロッキングPM群150と
の間で全点対全点通信を行ない、ここでバケット群を大
きくm種類のバケットグループ920−1〜920−m
に分割し、各バケットグループを、中間ブロッキングP
M群150に属する各PM1500〜1502に接続さ
れた二次記憶装置24に格納する。ここで、m種類のバ
ケットグループ920−1〜920−mには、それぞれ
n種類のタプル(n種類のバケット)が含まれている。
【0052】このような第1ステップに際しての送信側
PM群60の処理について説明すると、まず、このPM
群60に属する各PM600〜602は、自身配下の処
理対象テーブルのサブテーブル(二次記憶装置24内に
格納)900〜902からタプルを読み出し、そのタプ
ルを、任意の配分論理により中間ブロッキングPM群1
50に送付する。ここでは、PM間の負荷平坦化を陽に
実現しないものとして説明を進めるので、ハッシュ関数
等のグループ化関数の適用を、送信側PM群60と中間
ブロッキングPM群150とのいずれで行なうかについ
ては特に指定しない。
【0053】また、第1ステップに際しての中間ブロッ
キングPM群150の処理について説明すると、中間ブ
ロッキングPM群150に属する各PM1500〜15
02は、バケット識別子とm種類のバケットグループと
の対応関係を把握しておく。バケット識別子は、予め外
部から指定されるか、あるいは、ルールとしてバケット
総種別数から予め与えられた計算方式により求められる
ものである。あるバケットは必ずたかだか一つのバケッ
トグループに属する。
【0054】各PM1500〜1502は、送信側の各
PM600〜602からタプルを受理し、もし、送信側
の各PM600〜602でタプルに対するグループ化関
数の適用が行なわれていないか、あるいは、送付された
タプルにグループ化関数の適用結果(出力値)によるバ
ケット識別子が添付されていなければ、そのタプルに対
してグループ化関数を適用して、そのタプルが属するバ
ケットのバケット識別子を求める。
【0055】そして、各PM1500〜1502は、そ
のタプルのバケット識別子に上記対応関係を適用し、そ
のタプルが属するべきバケットグループを把握する。こ
のとき、本実施例の各PM1500〜1502では、バ
ケットグループの各種類に対応して、I/Oブロッキン
グバッファ151がメモリ(主記憶;図9の符号21参
照)上に準備されている。これらのI/Oブロッキング
バッファ151は、送信側PM群60からのタプル受理
と自身の二次記憶装置24への書込とが同時並列的に実
行可能な個数だけ準備され、その個々の大きさは、上記
I/Oアクセス単位の容量保証に関する要求を満足する
ように設定されている。
【0056】各PM1500〜1502に入力されたタ
プルが属するバケットグループがいずれであるかの上記
認識に基づいて、そのタプルを、認識されたバケットグ
ループに対応したI/Oブロッキングバッファ151に
蓄積する。このようなタプルの蓄積作業により、あるI
/Oブロッキングバッファ151に蓄積されたタプル量
が上記I/Oアクセス単位に関する容量保証の要求を満
足するようになった場合、そのI/Oブロッキングバッ
ファ151に蓄積されたタプルを、まとめて自身の二次
記憶装置24内に格納する。これにより、処理対象デー
タが、m種類のバケットグループ910−1〜910−
mに分割された状態で、中間ブロッキングPM群150
の各二次記憶装置24内に格納されることになる。
【0057】ついで、第2ステップ(図1にて前述した
第2分割手段6としての機能による処理動作)として、
中間ブロッキングPM群150から各バケットグループ
が読み出され、各バケットグループが、受信側PM群7
0に送付され、受信側PM群70において個別のバケッ
ト(総数m・n個)920−1〜920−m・nに再分
割された状態で二次記憶装置24に格納される。
【0058】このような第2ステップに際しての中間ブ
ロッキングPM群150の処理について説明すると、ま
ず、このPM群150および受信側PM群70は、任意
のマクロな同期機構(図2には図示せず)により第2ス
テップの開始を一斉に認識する。ここで、マクロという
意味は、クロックレベルの詳細な同期は必要なく、メッ
セージパッシング程度の実現手段で構わない、つまり時
間の微小なずれは許容されるということである。また、
前記同期機構は、中間ブロッキングPM群150と受信
側PM群70との全てが相互に通信して同期を実現する
ものであってもよいし、全PMのマクロな制御を行なう
存在として別個にそなえてもよい。
【0059】受信側PM群70および中間ブロッキング
PM群150は、上記同期機構あるいはこれとは別に設
けられた同様の機構により指示されるか、あるいは、ル
ールとして予め与えられた法則により、いずれのバケッ
トグループが処理の対象となるべきかを認識する。この
認識は、受信側PM群70および中間ブロッキングPM
群150に属する全PMで、同様にマクロ的な意味でほ
ぼ同時に(実際のデータ転送に先立って)持たなければ
ならない。
【0060】中間ブロッキングPM群150に属する各
PM1500〜1502は、処理対象となったバケット
グループからタプル群を、自身の二次記憶装置24から
読み出し、そのタプルを、任意の配分論理により受信側
PM群70に送付する。ここでも、PM間の負荷平坦化
を陽に実現しないものとして説明を進めるので、バケッ
ト識別子に依存した制御を、中間ブロッキングPM群1
50と受信側PM群70とのいずれで行なうかについて
は特に指定しない。
【0061】あるバケットグループの送付を完了した場
合、中間ブロッキングPM群150および受信側PM群
70に属する全PMがそのバケットグループの送受信を
終了したことが、上記同期機構のいずれか、あるいは別
に設けられた同様の機構により認識された時点で、中間
ブロッキングPM群150および受信側PM群70は次
のバケットグループの処理を開始する。
【0062】また、第2ステップに際しての受信側PM
群70の処理について説明すると、受信側PM群70に
属する各PM700〜702は、中間ブロッキングPM
群150とともに、第2ステップの処理全体および各バ
ケットグループの処理の開始/終了をマクロ的な意味で
ほぼ同時に認識する。バケットグループの受理開始に先
立ち、本実施例の受信側PM群70に属する各PM70
0〜702では、各バケットグループに含まれるバケッ
トの種類に対応して、I/Oブロッキングバッファ71
がメモリ(主記憶;図9の符号21参照)上に準備され
ている。これらのI/Oブロッキングバッファ71は、
次に処理されるバケットグループに含まれるバケット数
に対応した「中間ブロッキングPM群150からのタプ
ル受理と二次記憶装置24への書込との同時並列実行」
が可能な個数だけ準備され、その個々の大きさは上記I
/Oアクセス単位に関する容量の保証に関する要求を満
たすように設定されている。
【0063】各PM700〜702は、処理対象である
バケットグループに含まれるタプルを中間ブロッキング
PM群150から受理すると、もし送付されたタプルに
バケット識別子が添付されていないならば、そのタプル
に対してグループ化関数を適用して、そのタプルが属す
るバケットのバケット識別子を求める。そして、各PM
700〜702は、そのタプルを、求められたバケット
識別子に基づいて、そのタプルが属するバケットに対応
したI/Oブロッキングバッファ71に蓄積する。
【0064】このようなタプルの蓄積作業により、ある
I/Oブロッキングバッファ71に蓄積されたタプル量
が上記I/Oアクセス単位に関する容量保証の要求を満
足するようになった場合、そのI/Oブロッキングバッ
ファ71に蓄積されたタプルを、まとめて自身の二次記
憶装置24内に格納する。これにより、各バケットグル
ープ910−1〜910−mに含まれるn種類のタプル
(n種類のバケット)が、それぞれ、その種類毎に分割
された状態で、受信側PM群70の各二次記憶装置24
内に格納されることになる。
【0065】ところで、本実施例では、図2により上述
したシステムにおいて、さらにPM間の負荷平坦化(前
述した第1負荷平坦化手段および第2負荷平坦化手段に
よる機能)を行なうことにより、特定PMへの負荷集中
による全体のスループットの低下を防止している。即
ち、前述した第1ステップにおいて、送信側PM群60
に属する各PM600〜602は、自身の二次記憶装置
24から読み出したタプルにグループ化関数を適用し、
m種類のバケットグループのいずれにそのタプルが属す
るかを認識する。
【0066】また、送信側PM群60に属する各PM6
00〜602は、前述した第1ステップにおいて、m種
類のバケットグループのそれぞれについて、そこに属す
るタプルが、中間ブロッキングPM群150に属するP
M1500〜1502のいずれにもほぼ同量だけ(均一
もしくは略均一に)転送されるように制御する機構(第
1負荷平坦化手段;図2には図示せず)をそなえる。こ
の機構は、例えば、ラウンドロビンポインタや、各バケ
ットおよび中間ブロッキングPM識別子によるアドレス
が可能で各中間ブロッキングPM1500〜1502へ
のデータ送付量を積算するテーブルなどにより実現する
ことができる。このような機構を使用して、どの中間ブ
ロッキングPM1500〜1502にも、送信側PM6
00〜602から、同一バケットグループに属するタプ
ルデータがほぼ同量送付されることになる。
【0067】さらに、中間ブロッキングPM群150に
属する各PM1500〜1502は、前述した第2ステ
ップにおいて、自身の二次記憶装置24から読み出した
タプルのバケット識別子を使用して、各バケットグルー
プに含まれるn種類のバケットのそれぞれについて、そ
こに属するタプルが、受信側PM群70に属するPM7
00〜702のいずれにもほぼ同量だけ(均一もしくは
略均一に)転送されるように制御する機構(第2負荷平
坦化手段;図2には図示せず)をそなえる。この機構
は、例えば、ラウンドロビンポインタや、各バケットお
よび受信側PM識別子によるアドレスが可能で各受信側
PM700〜702へのデータ送付量を積算するテーブ
ルなどにより実現することができる。このような機構を
使用して、どの受信側PM700〜702にも、中間ブ
ロッキングPM1500〜1502から、同一バケット
に属するタプルデータがほぼ同量送付されることにな
る。なお、各PM1500〜1502において、自身の
二次記憶装置24から読み出したタプルにバケット識別
子が添付されていない場合には、改めてグループ化関数
を適用してバケット識別子を得る。
【0068】次に、図2を参照しながら、本発明の並列
プロセッサ装置の概要について説明する。前述の通り、
通常の場合、あるデータベーステーブルにグループ化関
数を適用して得られるバケット個数は、個々のバケット
が主記憶に乗り切る程度の大きさであることが期待され
る場合などでは極めて大きくなり、I/Oアクセス単位
に関する容量の保証の要件を全てのバケット種別に対し
て同時に満足することが極めて難しい状況となる。
【0069】本発明は、バケット種別数だけのI/Oブ
ロッキングバッファを準備することは難しくても、これ
らバケット種別数の例えば平方根の数だけのI/Oブロ
ッキングバッファを準備することはそれ程困難ではない
ことに着目し、スループットこそ理想的速度の1/2で
はあるが、上記I/Oアクセス単位に関する容量の保証
の要件が満足されない場合(読出/書込がそれぞれ1/
5以下に低下するため全体としての性能低下は極めて大
きい)に比較すれば充分高速であることから、少なくと
も2回に分けてグルーピング(分割処理)を行なうこと
をその骨子としている。
【0070】まず、前述した第1ステップでは、バケッ
ト識別子の値域をm個に排他的に分割し、タプルをバケ
ット識別子によりm種類に分割する。この分割により作
成されたm個のタプル集合体を、それぞれバケットグル
ープと呼ぶ。各バケットグループの内部では、複数(こ
こではn種類)のバケットが、タプルレベルでの発生順
序は全くランダムに、格納されている。
【0071】そして、前述した第2ステップでは、各バ
ケットグループを格納している全てのPM1500〜1
502でマクロ的な同期をとりながら、同じバケットグ
ループ、つまり元々のテーブルの平均1/m個分のバケ
ットしか含まない領域に対して読出を行ない、同様にバ
ケット分割を行なう。もし元々のテーブルがn・m個の
バケットを含んでいたならば、この第2ステップでは平
均n個のバケットのみ現れることになる。このnなるバ
ケット数を完全に分割可能なだけのI/Oブロッキング
バッファ71が第2ステップで取得可能ならば、完全な
バケット分割が可能になる。
【0072】一般に、データベース容量と主記憶容量と
の比103 〜104 程度で収まるので、m≒nを仮定す
ると、m≒n≦102 ということになり、数百KBがI
/Oアクセス単位についての容量保証の具体的な要求値
であったとしても数MB〜数十MB程度、つまり主記憶
容量の範囲で、充分、I/Oブロッキングバッファ7
1,151を準備することができる。
【0073】さらに、本発明の発展形として、中間ブロ
ッキングPM群150を複数段に構成し、バケット数を
複数乗根し、極めて大きなバケット数にも対応すること
ができるようにすることも可能である。ただし、1段増
す度にそれだけ性能低下が発生するので、構成段数は、
次段処理を含めた性能利得を評価した上で判断されるべ
きである。
【0074】なお、ここでは、中間ブロッキングPM群
150が送信側PM群60や受信側PM群70とは別に
存在するかのうように記述しているが、物理的に中間ブ
ロッキングPM群150が送信側PM群60や受信側P
M群70と一致していたり、重なっていたり、包含関係
にあったり、あるいは全てのPM群60,70,150
が物理的に同じ集合であったとしても全く構わない。
【0075】また、前述した負荷平坦化処理を行なわな
いと、受信側PM群70や中間ブロッキングPM群15
0に属する各PMの二次記憶書込処理性能を含めて特定
のPMにデータを送付しようとする速度がそのPMの処
理性能を上回り、システムの演算性能を低下させてしま
う可能性がある。従って、負荷平坦化処理は、これを防
ぐために各段でのPM間負荷アンバランスが発生するの
を防止している。
【0076】以下に、図3〜図8を参照しながら、本発
明の一実施例としての並列プロセッサ装置(並列計算機
システム)について、より詳細に説明する。図3は本発
明の一実施例としての並列プロセッサ装置の全体構成を
概略的に示すブロック図で、この図3に示すように、制
御用PM1600が新たに追加されている以外は、図2
に示したものとほぼ同様の構成になっている。
【0077】図3に示すシステムに新たに追加されてい
る制御用PM1600は、前述したマクロなPM間同
期,および各PMで行なわれる処理の大筋の制御を行な
うものとして別個に存在している。この制御用PM16
00は、通信線1601および1602を介して各PM
600〜602,700〜702,1500〜1502
との間でコマンド送付/状況報告等のデータを授受する
ことにより、システムの全体を管理し全体処理を制御す
るものである。
【0078】本実施例では、中間ブロッキングPM群1
50に属する各PM1500〜1502には、それぞ
れ、m+1個のI/Oブロッキングバッファ151が準
備されている。これらのm+1個のバッファ151のう
ちm個は、前段つまり送信側PM600〜602から送
付されるタプルデータをバケットグループ毎に蓄積する
ためのものであり、残りの1個は、二次記憶装置24と
の間でデータ授受を行なうためのものである。
【0079】また、同様に、受信側PM群70に属する
各PM700〜702には、それぞれ、n+1個のI/
Oブロッキングバッファ71が準備されている。これら
のm+1個のバッファ71のうちm個は、前段つまり中
間ブロッキングPM1500〜1502から送付される
タプルデータをバケット毎に蓄積するためのものであ
り、残りの1個は、二次記憶装置24との間でデータ授
受を行なうためのものである。
【0080】なお、上述したI/Oブロッキングバッフ
ァ151および71は、いずれも、I/Oアクセス単位
に関する容量保証の要求を満たすだけの大きさのもので
ある。上述の構成により、この図3に示すシステムは、
制御用PM1600により管理・制御されながら、図2
に示したシステムと全く同様の動作を行なうようになっ
ている。
【0081】ここで、図4により、本実施例におけるP
M間ネットワークを流れるパケットの概略構成を説明す
る。PM間ネットワークを介して1タプル毎の送信を行
なう場合、図4に示すように、パケットのデータ部にタ
プルデータ(Tuple Data)が格納されるとともに、パケ
ットのヘッダ部には、宛先PMのネットワーク内の識別
子(Target PM ID)と、このタプルが属するバケット識
別子(Bucket ID;グループ化関数の出力値)と、タプル
長(Tuple Length)とが添付・格納されている。
【0082】さて、図5は、前述した第1ステップにお
ける送信側PM600の内部構造および動作を説明する
ためのブロック図であり、この図5において、1700
はPM600に接続された二次記憶装置(前述した二次
記憶装置24に対応)で、この二次記憶装置1700
は、処理対象のテーブルの部分集合(サブテーブル)9
00を格納している。
【0083】また、送信側PM600には、I/O回路
1701,CPU回路1702,主記憶1703および
対PM間ネットワークインタフェース回路1704が内
蔵されている。ここで、I/O回路1701は図9にて
前述したI/O機構23に対応し、CPU回路1702
は図9にて前述したCPU20に対応し、主記憶170
3は図9にて前述したメモリ21に対応し、インタフェ
ース回路1704は図9にて前述したアクセス機構22
に対応している。
【0084】さらに、1710〜1713および171
5〜1717は主記憶1703上の領域であり、171
0はサブテーブル900の内部の読出位置を示す読出ポ
インタで、この読出ポインタ1710は、主記憶170
3上の変数として実現されている。読出ポインタ171
0は、初期化直後にはサブテーブル900の先頭位置を
示し、サブテーブル900から1回の入力処理を行なう
度に、後述のバッファ1711の容量だけインクリメン
トされる。
【0085】1711は1回のI/O処理で読み出され
るデータを格納する入力バッファであり、その大きさ
(容量)は、I/Oアクセス単位に関する容量保証の要
求を満足するように設定されている。1712は各バケ
ットグループに対応して設けられた中間ブロッキングP
M1500〜1502のいずれにデータを転送すべきか
を示すラウンドロビンポインタ(第1負荷平坦化手段)
である。今、中間ブロッキングPM1500〜1502
の個数をA個とするならば、このラウンドロビンポイン
タ1712の値は0からA−1の間をラップする。
【0086】1713はラウンドロビンポインタ171
2の値から具体的な中間ブロッキングPM1500〜1
502のネットワーク上の識別子を求めるための変換表
である。この変換表1713のエントリ数は、中間ブロ
ッキングPM1500〜1502の個数に等しく、その
内部には個々の中間ブロッキングPM1500〜150
2のネットワーク上の識別子が格納されている。
【0087】1715は入力バッファ1711内のデー
タから抽出された1タプル分のデータ、1716は1タ
プル分のデータ1715にグループ化関数を適用した結
果として得られるバケット識別子を当該1タプル分のデ
ータ1715に接合したデータ、1717はデータ17
16にさらに宛先PMのネットワーク上の識別子を接合
したデータ(転送パケット)で、このデータ1717
は、図4に示すバケットフォーマットを満足するものと
なっている。
【0088】また、1718は二次記憶装置1700か
ら今まさに送信側PM600に読み込まれているデータ
部を示している。なお、図5中の括弧付数字(0)〜
(12)は、送信側PM600における処理に対応して
付されたもので、送信側PM600の動作を後述する際
に用いられるものである。また、図5には、送信側PM
600の構成のみ示しているが、他の送信側PM60
1,602も同様に構成されていることはいうまでもな
い。
【0089】上述のごとく構成された送信側PM600
の、前記第1ステップに際しての動作概要を以下に説明
する。この説明に際して、図5中の括弧付数字(0)〜
(12)と以下の項目の括弧付数字(0)〜(12)と
は対応している。 (0)図5には図示しない制御用PM1600(図3参
照)から、行なうべき処理の記述、例えば対象テーブル
の識別子,適用されるべきグループ化関数の識別子,m
およびAの値,中間ブロッキングPM群150の識別子
リストなどがCPU1702に送付され、これらのデー
タにより主記憶1703の内部制御テーブル群が初期化
される。初期化を終了すると、CPU1702は、その
旨を応答として制御用PM1600に返し、次に制御用
PM1600から処理開始の指示が来ると処理を開始す
る。
【0090】(1)CPU1702は、ポインタ171
0の内容を読み出して、バッファ1711の大きさに等
しいデータブロックを、該ポインタ1710が示す領域
から読み出す入力コマンドを生成し、そのコマンドをI
/O回路1701に与える。この後、ポインタ1710
の値をバッファ1711の大きさだけインクリメントし
ておく。
【0091】(2)I/O回路1701は、CPU17
02から指定されたデータ1718を、二次記憶装置1
700からバッファ1711内部に読み出す。 (3)I/O回路1701は、要求された入力処理を終
了したことを、割込みによりCPU1702に通知す
る。 (4)CPU1702は、バッファ1711内部から1
タプル分のデータ1715を抽出し、このデータ171
5に対して以下の処理(5)〜(11)を施す。
【0092】(5)タプルデータ1715が、CPU1
702に取り込まれ、指定されたグループ化関数の適用
を受ける。 (6)その適用結果であるバケット識別子がタプルデー
タ1715(図5中の左側)に接合される。 (7)そのバケット識別子は、整数m(バケットグルー
プの種類数)で割った余りによって同時にバケットグル
ープの識別子ともなる。CPU1702は、このタプル
データ1715が属するバケットグループの識別子を得
て、その識別子により、送信宛先を決定するためのラウ
ンドロビンポインタ1712(このバケットグループに
対応する値)を特定する。
【0093】(8)ラウンドロビンポインタ1712に
より指定されるポインタ値により、そのポインタ値をP
M識別子に変換する変換表1713が索引され、宛先情
報、つまりこのタプルデータ1715を受信すべき中間
ブロッキングPMの識別子が得られる。また、この時、
ポインタ(1712中の1エントリ)の内容は1だけイ
ンクリメントされた後、中間ブロッキングPM数による
整数剰余の値が代入され直す。
【0094】(9)得られた宛先情報が、〔タプルデー
タ+バケット識別子〕のデータ1716(図5中の左
側)に接続され、転送パケット1717が主記憶170
3上に生成される。 (10)CPU1702は、インタフェース回路170
4に対し、転送パケット1717の格納領域の主記憶内
先頭アドレスを示して送出を指示する。
【0095】(11)転送パケット(タプルデータ)1
717は、インタフェース回路1704により、即時に
(CPU1702に同期して)ネットワークに送出され
る。本実施例では、ネットワーク上のプロトコルは簡単
化され、CPU1702から可視のACK(Acknowledg
e)信号などの応答はないものとする。 (12)以上のような処理が二次記憶装置1700内の
サブテーブル900中の全てのデータに対して行なわれ
るまで、上記項目(1)の処理に戻る。もし、CPU1
702が、全てのデータの処理を終了したと判断した場
合には、内部資源を解放した上、処理の終了を制御用P
M1600に報告する。
【0096】図6は、前述した第1ステップにおける中
間ブロッキングPM1500の内部構造および動作を説
明するためのブロック図であり、この図6において、1
750はPM1500に接続された二次記憶装置(前述
した二次記憶装置24に対応)で、この二次記憶装置1
750は、後述するごとく、その内部に、送信側PM6
00(〜602)から受理したm種類のバケットグルー
プ910−1〜910−m(図3参照)の部分集合17
55を格納する領域を有している。
【0097】また、中間ブロッキングPM1500に
は、対PM間ネットワークインタフェース回路175
1,CPU回路1752,主記憶1753およびI/O
回路1754が内蔵されている。ここで、インタフェー
ス回路1751は図9にて前述したアクセス機構22に
対応し、CPU回路1752は図9にて前述したCPU
20に対応し、主記憶1753は図9にて前述したメモ
リ21に対応し、I/O回路1754は図9にて前述し
たI/O機構23に対応している。
【0098】さらに、1760〜1765は主記憶17
53上の領域であり、1760はPM間データ転送によ
り送信側PM600〜602のいずれかから送付された
タプルデータを一時的に格納する領域、1761はm種
類のI/Oブロッキングバッファ(0〜m−1;図2,
図3に示すI/Oブロッキングバッファ151に対応)
で、各I/Oブロッキングバッファ1761は、前述し
たように、二次記憶装置1750が要求するI/Oアク
セス単位の容量の保証の要求を満足する大きさを有し、
バケットグループ種別と1対1に対応している。
【0099】1762はI/O回路1754へ出力すべ
きデータもしくはI/O回路1754から入力されたデ
ータを一時的に格納する入出力バッファ(I/Oバッフ
ァ)、1763は領域1765内への書込ポインタで、
この書込ポインタ1763は、領域1765に対する入
出力処理を1回終了する度にバッファ1762の大きさ
だけインクリメントされるようになっている。
【0100】1764は各バケットグループが書き込ま
れたファイル内位置(アドレス)を記憶する領域176
5への書込ポインタで、書込ポインタ1764と領域1
765とは、1対1の対になって、それぞれのバケット
グループ種別に対応して設けられている。なお、図6中
の括弧付数字(0)〜(10)は、中間ブロッキングP
M1500における処理に対応して付されたもので、中
間ブロッキングPM1500の動作を後述する際に用い
られるものである。また、図6には、中間ブロッキング
PM1500の構成のみ示しているが、他の中間ブロッ
キングPM1501,1502も同様に構成されている
ことはいうまでもない。
【0101】上述のごとく構成された中間ブロッキング
PM1500の、前記第1ステップに際しての動作概要
を以下に説明する。この説明に際して、図6中の括弧付
数字(0)〜(10)と以下の項目の括弧付数字(0)
〜(10)とは対応している。 (0)図6には図示しない制御用PM1600(図3参
照)から、行なうべき処理の記述、例えば対象テーブル
の識別子,バケット識別子の値域幅,mの値,転送され
るデータ量の予想値,交信しなければならない送信側P
M群70の一覧などが送付される。これにより、CPU
1752は、主記憶1753内の制御表を初期化し、初
期化を終了すると、その旨を制御用PM1600に対し
て応答し、その後、制御用PM1600から処理開始の
指示が来ると処理を開始する。なお、初期化の例として
は、領域1765の全エントリを無効な値(例えば負の
値)に設定するとともに、書込ポインタ1764の全て
の値を0に設定する。
【0102】(1)ネットワークインタフェース回路1
751は、タプルを受信すると、これを割込みによりC
PU1752に伝達する。CPU1752は、領域17
60の先頭アドレスを通知することにより、タプルを領
域1760に取り込むことを指示する。 (2)タプル内のバケット識別子フィールドがCPU1
752により参照され、整数mによる整数剰余演算の結
果(余り値)がこのタプルのバケットグループ識別子と
して認識される。
【0103】(3)このバケットグループ識別子によ
り、当該タプル(正確にはバケット識別子+タプル長+
タプルデータ部分)が、バケットグループ種別に対応す
るI/Oブロッキングバッファ1761に蓄積される。
もし、この蓄積処理により、I/Oブロッキングバッフ
ァ1761内に蓄積されたデータ量が二次記憶装置17
50の要求するI/Oアクセス単位の容量の保証に関す
る要求を満たさないならば、後述する項目(10)の処
理へジャンプする。
【0104】(4)I/Oブロッキングバッファ176
1へのデータ蓄積量が、二次記憶装置1750の要求す
るI/Oアクセス単位の容量の保証に関する要求を満た
すようになったならば、このバッファ1761の内容
は、I/Oバッファ1762に転送された後、クリアさ
れる。 (5)CPU1752は、書込ポインタ1763の値の
内容を取り込み、書込位置を得る。また、その後、ポイ
ンタ1763の内容は、I/Oバッファ1762の大き
さけインクリメントされる。
【0105】(6)CPU1752により、吐き出しが
行なわれる対象であるバケットグループに対応した、書
込ポインタ1764と領域1765との対が選択され
る。 (7)上記項目(6)の処理で選択された書込ポインタ
1764と領域1765との対において、書込ポインタ
1764で示される領域1765のエントリが選択され
る。この後、その書込ポインタ1764の内容は1エン
トリ分だけインクリメントされる。
【0106】(8)上記項目(7)の処理で選択された
領域1765のエントリに上記項目(5)で得られた書
込位置が記入される。 (9)CPU1752は、I/Oバッファ1762の内
容を上記項目(5)の処理で得られた書込位置(二次記
憶装置1750上の位置)へ格納するための入出力コマ
ンドを生成し、そのコマンドをI/O回路1754に送
付する。
【0107】(10)そして、CPU1752は、制御
用PM1600からの終了信号、あるいは新たなタプル
の到着を示すネットワークインタフェース回路1751
からの割込み信号が到着するまで待機する。もし、制御
用PM1600からの終了信号が到来した場合には、バ
ッファ1761のうち空きでない全てのものについて、
上記項目(4)以降の処理を行ない、その上で内部制御
情報を書込ポインタ1764および領域1765を除い
て解放し、処理終了報告を制御用PM1600に返す。
【0108】図7は、前述した第2ステップにおける中
間ブロッキングPM1500の内部構造および動作を説
明するためのブロック図であり、この図7において、図
6で既述の符号と同一の符号は、基本的には同一部分を
示しているので、その詳細な説明は省略する。なお、図
7に示す状態では、PM1500に接続された二次記憶
装置1750の内部には、後述するごとく、前述した第
1ステップにより受理されたデータ〔m種類のバケット
グループ910−1〜910−m(図3参照)の和集
合〕1755を格納する領域がそなえられている。
【0109】また、主記憶1753上の領域1765に
は、前述した第1ステップで生成された、各バケットグ
ループの二次記憶装置1750内における格納アドレス
(書込位置)を記述する情報が格納されている。さら
に、第2ステップの処理を行なうに際して、各書込ポイ
ンタ1764は、各領域1765の情報内の、各I/O
アクセス単位に関する記述を逐次的にアクセスするため
のカウンタとして機能し、各ポインタ1764の内容か
ら、対応する領域1765内の各エントリのアドレスを
容易に生成できるようになっている。
【0110】そして、1770は二次記憶装置1750
内のデータ1755のデータブロックで、このデータブ
ロック1770は、あるバケットグループに属するデー
タのみが格納されているものであり、図7に示す状態で
現在まさに処理対象となっているものである。1771
〜1775は主記憶1753上の領域であり、1771
は二次記憶装置1750から読み出されたデータを一時
的に格納するI/Oバッファ(入出力バッファ)、17
72はI/Oバッファ1771から抽出されたタプルデ
ータ(厳密にはタプルデータに当該タプルが属するバケ
ットのバケット識別子を接合されたデータ)を一時的に
格納する領域である。
【0111】1773は各バケットグループに対応して
設けられた受信側PM700〜702のいずれに転送す
べきかを示すラウンドロビンポインタ(第2負荷平坦化
手段)である。今、受信側PM700〜702の個数を
B個とするならば、このラウンドロビンポインタ177
3の値0からB−1の間をラップする。1774はラウ
ンドロビンポインタ1773の値から具体的な受信側P
M700〜702のネットワーク上の識別子を求めるた
めの変換表である。この変換表のエントリ数は、受信側
PM700〜702の個数に等しく、その内部には個々
の受信側PM700〜702のネットワーク上の識別子
が格納されている。
【0112】1775はネットワークに送出されるべき
パケットデータを一時的に格納する領域である。この領
域1775から、インタフェース回路1751は、CP
U1752からの指示に従って、領域1772に格納さ
れたデータに、宛先たる受信側PMのネットワーク上の
識別子を接合したデータ(つまり図4に示したパケット
フォーマットを満足するデータ)を読み出し、そのデー
タをネットワーク上に送出するようになっている。
【0113】なお、図7中の括弧付数字(0)〜(1
2)は、中間ブロッキングPM1500における処理に
対応して付されたもので、中間ブロッキングPM150
0の動作を後述する際に用いられるものである。また、
図7には、中間ブロッキングPM1500の構成のみ示
しているが、他の中間ブロッキングPM1501,15
02も同様に構成されていることはいうまでもない。
【0114】上述のごとく構成された中間ブロッキング
PM1500の、前記第2ステップに際しての動作概要
を以下に説明する。この説明に際して、図7中の括弧付
数字(0)〜(12)と以下の項目の括弧付数字(0)
〜(12)とは対応している。 (0)図7には図示しない制御用PM1600(図3参
照)から、行なうべき処理の記述、例えば処理対象の領
域1755の識別子,nおよびBの値,受信側PM群7
0の識別子リストなどがCPU1752に送付され、こ
れらのデータにより主記憶1753の内部制御テーブル
群が初期化される。初期化を終了すると、CPU175
2は、その旨を応答として制御用PM1600に返し、
次に制御用PM1600から処理開始の指示が来ると処
理を開始する。具体的な処理は、各バケットグループ毎
に完結する。即ち、制御用PM1600は、処理開始の
指示に伴い、いずれのバケットグループを処理対象とす
るかを、0〜m−1の番号をこの指示内に含ませること
により指定する。
【0115】(1)CPU1752は、制御用PM16
00からの指示内に含まれる番号(0〜m−1)に応じ
たバケットグループの格納領域を記述するカウンタ17
64と領域1765との対を選択する。ここでは、バケ
ットグループの読出終了は、領域1765の無効なエン
トリを読み出すことにより判定可能であるものとする。
CPU1752は、選択したカウンタ1764の値を0
に初期化する。
【0116】(2)CPU1752は、現在処理対象に
なっているバケットグループに対応したカウンタ176
4の値から、二次記憶装置1750の領域1755内
の、当該バケットグループのデータの次の格納領域の値
を格納している領域1765内のエントリのアドレスを
得て、このエントリにアクセスし、その内容たる格納領
域アドレスを得る。この後、カウンタ1764の値は1
エントリ分だけインクリメントされる。なお、このとき
読み出された領域1765内のエントリの値が無効であ
る時(例えば負の値である時)には、このバケットグル
ープに対する処理は終了したと見做され、下記項目(1
2)の処理にジャンプする。CPU1752は、選択さ
れた領域1765のエントリから読み出された二次記憶
装置1750内部の格納アドレスを使用して、二次記憶
装置1750の領域から1ブロック分のデータを入力バ
ッファ1771に読み出すための入出力コマンドを生成
し、そのコマンドをI/O回路1754に通知してI/
O処理を開始させる。なお、上述した1ブロックの大き
さは、第1ステップのデータ格納に使用された大きさと
同じで、この大きさは、二次記憶装置1750が要求す
るI/Oアクセス単位の容量の保証要求を満足するもの
である。
【0117】(3)I/O回路1754は、CPU17
02から指定されたデータブロック1770を、二次記
憶装置1750からバッファ1771内部に読み出す。 (4)I/O回路1754は、要求された入力処理を終
了したことを、割込みによりCPU1752に通知す
る。 (5)CPU1752は、バッファ1771内部から1
タプル分のデータ(タプルデータにバケット識別子を接
合されたデータ)1772を抽出し、このデータ177
2に対して以下の処理(6)〜(10)を施す。この処
理は、バッファ1771内部にある全てのタプルに対し
て行なわれる。
【0118】(6)タプルデータ1772に接合された
バケット識別子がCPU1752に取り込まれる。CP
U1752は、そのバケット識別子に対応する、ラウン
ドロビンポインタ1773の1エントリを特定する。 (7)ラウンドロビンポインタ1773により指定され
るポインタ値により、そのポインタ値をPM識別子に変
換する変換表1713が索引され、宛先情報、つまりこ
のタプルデータ1772を受信すべき受信側PMの識別
子が得られる。また、この時、ポインタ(1773中の
1エントリ)の内容は1だけインクリメントされた後、
受信側PM数による整数剰余演算の結果が代入され直
す。
【0119】(8)得られた宛先情報が、〔タプルデー
タ+バケット識別子〕のデータ1772(図7中の左
側)に接続され、転送パケット1775が主記憶170
3上に生成される。 (9)CPU1752は、インタフェース回路1751
に対し、転送パケット1775の格納領域の主記憶内先
頭アドレスを示して送出を指示する。
【0120】(10)転送パケット(タプルデータ)1
775は、インタフェース回路1751により、即時に
(CPU1752に同期して)ネットワークに送出され
る。本実施例では、第1ステップにおける送信側PM6
00の動作においても前述した通り、ネットワーク上の
プロトコルは簡単化され、CPU1752から可視のA
CK(Acknowledge)信号などの応答はないものとする。
【0121】(11)上記項目(2)の処理に戻る。 (12)あるバケットグループの全データに対して処理
が終了したことが検出されると、CPU1752は、制
御用PM1600に対してその旨を報告し、制御用PM
1600からの指示を待つ。制御用PM1600からの
指示が処理終了指示であった場合には、CPU1752
は、全ての作業領域を解放し、処理を終了する。一方、
制御用PM1600からの指示が次のバケットグループ
に関する処理の開始指示(その指示の内部にバケットグ
ループの識別子を含む)であった場合〔上記項目(0)
の処理の後半部と同じ〕には、上記項目(1)以降の処
理を再開する。
【0122】図8は、前述した第2ステップにおける受
信側PM700の内部構造および動作を説明するための
ブロック図であり、この図8において、1780はPM
700に接続された二次記憶装置(前述した二次記憶装
置24に対応)で、この二次記憶装置1780は、後述
するごとく、その内部に、第2ステップで受理されたデ
ータ〔バケット920−1〜920−m・n(図3参
照)の和集合の部分集合〕1785を格納する領域を有
している。
【0123】また、受信側PM700には、対PM間ネ
ットワークインタフェース回路1781,CPU回路1
782,主記憶1783およびI/O回路1784が内
蔵されている。ここで、インタフェース回路1781は
図9にて前述したアクセス機構22に対応し、CPU回
路1782は図9にて前述したCPU20に対応し、主
記憶1783は図9にて前述したメモリ21に対応し、
I/O回路1784は図9にて前述したI/O機構23
に対応している。
【0124】さらに、1790〜1795は主記憶17
83上の領域であり、1795は、第2ステップの処理
で生成される、各バケットの二次記憶装置1780内に
おける格納アドレスを記述する情報を格納する領域であ
る。また、1794は、各領域1795の情報内の、各
I/Oアクセス単位に関する記述を逐次的にアクセスす
るためのカウンタであり、各ポインタ1794の内容か
ら、対応する領域1795内の各エントリのアドレスを
容易に生成できるようになっている。
【0125】1790はインタフェース回路1781が
中間ブロッキングPM群150から受理したデータを一
時的に格納する受信バッファ、1791はn種類のI/
Oブロッキングバッファ(0〜n−1;図2,図3に示
すI/Oブロッキングバッファ71に対応)で、各I/
Oブロッキングバッファ1791は、前述したように、
二次記憶装置1780が要求するI/Oアクセス単位の
容量の保証の要求を満足する大きさを有し、バケット種
別と1対1に対応している。
【0126】1792はI/O回路1784へ出力すべ
きデータもしくはI/O回路1784から入力されたデ
ータを一時的に格納する入出力バッファ(I/Oバッフ
ァ)、1793は領域1795内への書込ポインタで、
この書込ポインタ1793は、領域1795に対する入
出力処理を1回終了する度にバッファ1792の大きさ
だけインクリメントされるようになっている。
【0127】なお、前述したカウンタ1794は、各バ
ケットグループが書き込まれたファイル内位置(アドレ
ス)を記憶する領域1795への書込ポインタとしても
機能するもので、書込ポインタ(カウンタ)1794と
領域1795とは、1対1の対になって、それぞれのバ
ケット種別に対応して設けられている。なお、図8中の
括弧付数字(0)〜(9)は、受信側PM700におけ
る処理に対応して付されたもので、受信側PM700の
動作を後述する際に用いられるものである。また、図8
には、受信側PM700の構成のみ示しているが、他の
受信側PM701,702も同様に構成されていること
はいうまでもない。
【0128】上述のごとく構成された受信側PM700
の、前記第2ステップに際しての動作概要を以下に説明
する。この説明に際して、図8中の括弧付数字(0)〜
(9)と以下の項目の括弧付数字(0)〜(9)とは対
応している。 (0)図8には図示しない制御用PM1600(図3参
照)から、行なうべき処理の記述、例えば対象テーブル
の識別子,バケット識別子の値域幅,nの値,転送され
るデータ量の予想値,交信しなければならない中間ブロ
ッキングPM群150の一覧などが送付される。これに
より、CPU1782は、主記憶1783内の制御表を
初期化し、初期化を終了すると、その旨を制御用PM1
600に対して応答し、その後、制御用PM1600か
ら処理開始の指示が来ると処理を開始する。なお、初期
化の例としては、領域1795の全エントリを無効な値
(例えば負の値)に設定するとともに、書込ポインタ
(カウンタ)1794の全ての値を0に設定する。
【0129】(1)ネットワークインタフェース回路1
781は、タプルを受信すると、これを割込みによりC
PU1782に伝達する。CPU1782は、領域17
90の先頭アドレスを通知することにより、タプルを領
域1790に取り込むことを指示する。 (2)タプル内のバケット識別子フィールドがCPU1
782により参照され、このタプルが属するべきバケッ
トがいずれであるかが認識される。
【0130】(3)このバケット識別子により、領域1
790に格納されたデータからタプルデータ部分のみが
抽出され、そのタプルデータ部分が、そのバケット種別
に対応するI/Oブロッキングバッファ1791に蓄積
される。もし、この蓄積処理により、I/Oブロッキン
グバッファ1791内に蓄積されたデータ量が、二次記
憶装置1780の要求するI/Oアクセス単位の容量の
保証に関する要求を満たさないならば、後述する項目
(9)の処理へジャンプする。
【0131】(4)I/Oブロッキングバッファ179
1へのデータ蓄積量が、二次記憶装置1780の要求す
るI/Oアクセス単位の容量の保証に関する要求を満た
すようになったならば、このバッファ1791の内容
は、I/Oバッファ1792に転送された後、クリアさ
れる。 (5)CPU1782は、書込ポインタ1793の値の
内容を取り込み、書込位置を得る。また、その後、ポイ
ンタ1793の内容は、I/Oバッファ1792の大き
さけインクリメントされる。
【0132】(6)CPU1782により、吐き出しが
行なわれる対象であるバケットに対応した、書込ポイン
タ(カウンタ)1794と領域1795との対が選択さ
れる。 (7)上記項目(6)の処理で選択された書込ポインタ
1794と領域1795との対において、書込ポインタ
1794で示される領域1795のエントリが選択さ
れ、そのエントリに上記項目(5)の処理で得られた書
込位置が記入される。この後、その書込ポインタ179
4の内容は1エントリ分だけインクリメントされる。
【0133】(8)CPU1782は、I/Oバッファ
1792の内容を上記項目(5)の処理で得られた書込
位置(二次記憶装置1780上の位置)へ格納するため
の入出力コマンドを生成し、そのコマンドをI/O回路
1784に送付する。 (9)そして、CPU1752は、制御用PM1600
からの終了信号、あるいは新たなタプルの到着を示すネ
ットワークインタフェース回路1781からの割込み信
号が到着するまで待機する。もし、制御用PM1600
からの終了信号が到来した場合には、バッファ1791
のうち空きでない全てのものについて、上記項目(4)
以降の処理を行ない、その上で内部制御情報を書込ポイ
ンタ(カウンタ)1794および領域1795を除いて
解放し、処理終了報告を制御用PM1600に返す。こ
れらの書込ポインタ1794および領域1795に格納
されている情報は、二次記憶装置1780の領域178
5内に格納されたデータとともに本処理(第2ステッ
プ)の出力であって、これらの出力を用いることによ
り、次の処理において各バケット毎にデータを高速に読
み出すことを可能としている。
【0134】このようにして、本実施例は、並列プロセ
ッサ装置を構成する各PMにおいて必要とされる主記憶
容量の大幅な低減に寄与することになる。即ち、本実施
例において、バケット分割に必要なブロッキングバッフ
ァ容量の和は、高々、(m+n+2)×〔I/Oアクセ
ス単位〕で済む。ここで、m=nと仮定すれば、その値
は、ほぼ、2・〔バケット総数〕1/2 ・〔I/Oアクセ
ス単位〕である。従来、この値は、〔バケット総数〕・
〔I/Oアクセス単位〕であった。通常、バケット数は
数百のオーダであるから、本発明の主記憶容量の低減の
効果によれば、上記必要なブロッキングバッファ容量を
十数分の1にできることになる。
【0135】具体的には、容量100GBのデータベー
スを、容量64GBの主記憶をもつPMで取り扱う場
合、通常、バケット数は両者の比である1600個程度
となり、且つ、通常のI/O装置では、256KB程度
が、所謂、「性能保証のために必要とされるI/Oアク
セス単位最低容量」であるから、既存技術では容量40
0MBのバッファが個々のPMに必要である。このよう
なバッファは、勿論矛盾を発生しており、仮想記憶機構
を使用しなければ実現不可能ということになる。これに
対して、本発明によれば、中間ブロッキングPM群15
0および受信側PM群70を同一のPMで実現したとし
ても、1つのPM当たり容量20MBのバッファがあれ
ば良く、主記憶ベースで実現することができる。
【0136】また、このことにより、本発明の技術を、
例えば仮想記憶記憶にブロッキングバッファを配置した
既存技術と比較すると、その性能改善効果は、およそ次
の式で示されるオーダとなる。 〔改善効果〕=RS /(2・Rr ) ここで、RS はI/Oアクセス単位に関する性能保証の
ための要求が満足された場合の二次記憶性能であり、R
r はタプル単位のランダムアクセス処理を行なった場合
の二次記憶性能である。ただし、Rr の実効性能とは、
仮想記憶機構は一度要求された主記憶ページを二次記憶
から読み込み、上位アプリケーション(この場合、デー
タベース・マネージメント・システム)の処理が終了し
た後にそのページを二次記憶機構に書き戻すため、この
処理に要する時間で、タプル長を割った値である。アク
セスが本当にランダムで、ブロッキングバッファの必要
容量が主記憶容量に比較して余りに巨大な場合(このよ
うな場合をVR比が悪いという)、性能改善効果は上式
のようになる。
【0137】上式の値は、200B程度のタプル平均長
を例にとると、450程度になる。つまり、本発明によ
り、並列プロセッサ装置の性能は450倍程度改善され
たことになる。このように、本実施例では、充分なバケ
ット書込/読出性能を保証するために、あるバケットに
属するタプル群(レコード群)を、ある程度まとまった
量となるまで、メモリ(主記憶のI/Oブロッキングバ
ッファ)上で蓄積してから二次記憶装置に書き込む際
に、この作業のために必要とされるメモリ容量を抑制し
ている。
【0138】従って、既存技術では、上記バケット書込
/読出性能の保証のためのメモリ(主記憶)上のブロッ
キング作業は、莫大なメモリ量を要請し、結果として不
可能であったが、本発明によれば、通常範囲のメモリ量
(主記憶容量)でのバケット書込/読出性能の保証のた
めのブロッキング作業が初めて可能となり、結果として
バケット書込/読出性能が大幅に改善される。
【0139】また、本実施例では、ある種別のバケット
を担当するPMを1台に制限せず、各PMにおける負荷
の平坦化を行なうことにより、1つのPM当たりの担当
バケット数が低減されるとともに、通常発生するバケッ
ト間の容量の差によるPM間の負荷の偏りの発生が確実
に防止され、特定のPMへの負荷集中による全体のスル
ープットの低下が防止されるので、処理性能のさらなる
向上に寄与することができる。
【0140】なお、上述した実施例では、送信側PM群
60と受信側PM群70との間に、中間ブロッキングP
M群150を1段のみ介在させた構成の並列プロセッサ
装置について説明したが、本発明は、これに限定される
ものではなく、前述した通り、中間ブロッキングPM群
150を複数段に構成してバケット数を複数乗根するこ
とによってし、極めて大きなバケット数にも対応するこ
とができるようにすることも可能である。
【0141】また、上述した実施例では、第1負荷平坦
化手段および第2負荷平坦化手段をラウンドロビンポイ
ンタ1712,1773にて構成した場合について説明
したが、本発明は、これに限定されるものではなく、前
述したように、第1負荷平坦化手段として、各バケット
および中間ブロッキングPM識別子によるアドレスが可
能で各中間ブロッキングPM1500〜1502へのデ
ータ送付量を積算するテーブルを用い、第2負荷平坦化
手段として、各バケットおよび受信側PM識別子による
アドレスが可能で各受信側PM700〜702へのデー
タ送付量を積算するテーブルを用いてもよい。
【0142】この場合、各テーブルのデータ送付量を参
照し、そのデータ送付量の最も少ないPMに対してタプ
ルデータを送信するように構成することで、タプルデー
タを各PMに対して均一またはほぼ均一に送付して、各
PMにおける負荷を平坦化することができ、上記実施例
と同様の作用効果が得られる。
【0143】
【発明の効果】以上詳述したように、本発明の並列プロ
セッサ装置によれば、中間プロセッサ群を介在させて、
少なくとも2段階のデータ分割処理を行なうことによ
り、各プロセッサに、タプルの総種別数分のバッファを
そなえることなく、データをバケットに分割して第2プ
ロセッサ群に属する各プロセッサに格納させることがで
きるので、バケット分割処理の性能の低下を招くことな
く、通常範囲のメモリ量でのバケット書込/読出性能の
保証のためのブロッキング作業を行なうことが可能にな
り、結果としてバケット書込/読出性能が大幅に改善さ
れる効果がある(請求項1〜4)。
【0144】また、ある種別のバケットを担当するプロ
セッサを1台に制限せず、各プロセッサにおける負荷の
平坦化を行なうことにより、1つのプロセッサ当たりの
担当バケット数が低減されるとともに、通常発生するバ
ケット間の容量の差によるプロセッサ間の負荷の偏りの
発生が確実に防止され、特定プロセッサへの負荷集中に
よる全体のスループットの低下が防止されるので、処理
性能のさらなる向上に寄与できるという効果もある(請
求項5,6)。
【図面の簡単な説明】
【図1】本発明の原理ブロック図である。
【図2】本発明の一実施例としての並列プロセッサ装置
の原理的な構成および動作を説明するためのブロック図
である。
【図3】本発明の一実施例としての並列プロセッサ装置
の全体構成を概略的に示すブロック図である。
【図4】本実施例におけるPM間ネットワークを流れる
パケットの概略構成を説明するための図である。
【図5】本実施例の第1ステップにおける送信側PMの
内部構造および動作を説明するためのブロック図であ
る。
【図6】本実施例の第1ステップにおける中間ブロッキ
ングPMの内部構造および動作を説明するためのブロッ
ク図である。
【図7】本実施例の第2ステップにおける中間ブロッキ
ングPMの内部構造および動作を説明するためのブロッ
ク図である。
【図8】本実施例の第2ステップにおける受信側PMの
内部構造および動作を説明するためのブロック図であ
る。
【図9】一般的な並列計算機システムの構成例を示すブ
ロック図である。
【図10】一般的な並列計算機システムにおける論理的
な処理を説明するためのブロック図である。
【図11】一般的な並列計算機システムが行なう処理の
概要を説明するためのブロック図である。
【図12】代表的な二次記憶装置としての磁気ディスク
装置を示す模式図である。
【図13】アクセス効率の悪いデータベース処理例を説
明するための図である。
【図14】アクセス効率の良いデータベース処理例を説
明するための図である。
【図15】一般的な並列計算機システムにおける第2プ
ロセッサ群に属するプロセッサモジュールの内部構造を
説明するための図である。
【符号の説明】
1 プロセッサモジュール(PM) 2 第1プロセッサ群 3 第2プロセッサ群 4 中間プロセッサ群 5 第1分割手段 6 第2分割手段 60 送信側PM群(第1プロセッサ群) 600〜602 プロセッサモジュール(PM) 70 受信側PM群(第2プロセッサ群) 71 I/Oブロッキングバッファ 700〜702 プロセッサモジュール(PM) 150 中間ブロッキングPM群(中間プロセッサ群) 151 I/Oブロッキングバッファ 1500〜1502 プロセッサモジュール(PM) 1600 制御用PM(制御用プロセッサ) 1700 二次記憶装置 1701 I/O回路 1702 CPU回路 1703 主記憶 1704 対PM間ネットワークインタフェース回路 1712 ラウンドロビンポインタ(第1負荷平坦化手
段) 1750 二次記憶装置 1751 対PM間ネットワークインタフェース回路 1752 CPU回路 1753 主記憶 1754 I/O回路 1761 I/Oブロッキングバッファ 1773 ラウンドロビンポインタ(第2負荷平坦化手
段) 1780 二次記憶装置 1781 対PM間ネットワークインタフェース回路 1782 CPU回路 1783 主記憶 1784 I/O回路 1791 I/Oブロッキングバッファ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 並列的に動作する複数のプロセッサをそ
    なえ、該複数のプロセッサが一つの業務に参加し全体と
    して該業務を実行するとともに、 前記の各プロセッサにおいて、該業務における処理対象
    のデータを、個々に独立して処理を受けることが可能な
    データ単位(以下、タプルという)として取り扱う並列
    プロセッサ装置であって、 前記処理対象のデータを分散して予め格納するための第
    1プロセッサ群と、 該第1プロセッサ群から送信されてくる前記処理対象の
    データを、同一種別のタプルのみの集合体であるバケッ
    トに分割した状態で格納するための第2プロセッサ群
    と、 前記処理対象のデータを、該第1プロセッサ群から受信
    して一時的に格納した後に、該第2プロセッサ群へ送信
    するための中間プロセッサ群とが該複数のプロセッサに
    包含されており、 該第1プロセッサ群から該中間プロセッサ群へのデータ
    送信時に、前記処理対象のデータを、それぞれ複数種別
    のタプルの集合体である複数組のバケットグループに分
    割して該中間プロセッサ群に一時的に格納させるための
    第1分割手段と、 該中間プロセッサ群から該第2プロセッサ群へのデータ
    送信時に、該第1分割手段により分割されて該中間プロ
    セッサ群に一時的に格納される該複数組のバケットグル
    ープを、各バケットグループ毎に読み出して同一種別の
    タプルのみの集合体であるバケットに分割して該第2プ
    ロセッサ群に格納させるための第2分割手段とがそなえ
    られていることを特徴とする、並列プロセッサ装置。
  2. 【請求項2】 該第1分割手段に、前記処理対象のデー
    タをなす各タプルを分類するためのグループ化関数が予
    め設定されており、 該第1分割手段が、各タプルに対して該グループ化関数
    を適用して得られた、該グループ化関数の出力値として
    のバケット識別子に基づいて、バケットグループ分割処
    理を行なうことを特徴とする、請求項1記載の並列プロ
    セッサ装置。
  3. 【請求項3】 該第2分割手段に、前記処理対象のデー
    タをなす各タプルを分類するためのグループ化関数が予
    め設定されており、 該第2分割手段が、各タプルに対して該グループ化関数
    を適用して得られた、該グループ化関数の出力値として
    のバケット識別子に基づいて、バケット分割処理を行な
    うことを特徴とする、請求項1または請求項2に記載の
    並列プロセッサ装置。
  4. 【請求項4】 該第1プロセッサ群,該第2プロセッサ
    群および該中間プロセッサ群の動作状態を管理して該第
    1プロセッサ群,該第2プロセッサ群および該中間プロ
    セッサ群の動作を同期させながら該第1分割手段および
    該第2分割手段による分割処理を実行させるための制御
    用プロセッサが、該複数のプロセッサに包含されている
    ことを特徴とする、請求項1〜請求項3のいずれかに記
    載の並列プロセッサ装置。
  5. 【請求項5】 同一バケットグループに属するタプル
    を、該中間プロセッサ群に属する各プロセッサに対して
    均一またはほぼ均一に送付して、該中間プロセッサ群に
    属する各プロセッサにおける負荷を平坦化するための第
    1負荷平坦化手段が、該第1分割手段にそなえられてい
    ることを特徴とする、請求項1〜請求項4のいずれかに
    記載の並列プロセッサ装置。
  6. 【請求項6】 同一バケットグループに属するタプル
    を、該第2プロセッサ群に属する各プロセッサに対して
    均一またはほぼ均一に送付して、該第2プロセッサ群に
    属する各プロセッサにおける負荷を平坦化するための第
    2負荷平坦化手段が、該第2分割手段にそなえられてい
    ることを特徴とする、請求項1〜請求項5のいずれかに
    記載の並列プロセッサ装置。
JP14786395A 1995-06-14 1995-06-14 並列プロセッサ装置 Expired - Fee Related JP3560690B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP14786395A JP3560690B2 (ja) 1995-06-14 1995-06-14 並列プロセッサ装置
US08/614,045 US5854938A (en) 1995-06-14 1996-03-12 Parallel processor apparatus in which data is divided in sequential stages
DE69613517T DE69613517T2 (de) 1995-06-14 1996-03-27 Verteilte Parallelprozessorvorrichtung für Datensortierung nach dem Eimerprinzip
EP96104882A EP0749066B1 (en) 1995-06-14 1996-03-27 Distributed parallel processor apparatus for data bucket sort

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14786395A JP3560690B2 (ja) 1995-06-14 1995-06-14 並列プロセッサ装置

Publications (2)

Publication Number Publication Date
JPH096732A true JPH096732A (ja) 1997-01-10
JP3560690B2 JP3560690B2 (ja) 2004-09-02

Family

ID=15439958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14786395A Expired - Fee Related JP3560690B2 (ja) 1995-06-14 1995-06-14 並列プロセッサ装置

Country Status (4)

Country Link
US (1) US5854938A (ja)
EP (1) EP0749066B1 (ja)
JP (1) JP3560690B2 (ja)
DE (1) DE69613517T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113342A (ja) * 1997-04-18 1999-01-06 Fujitsu Ltd グループバイ処理方式
JPH11306200A (ja) * 1998-04-27 1999-11-05 Fujitsu Ltd グループバイ処理装置および方法
JP2004062898A (ja) * 1997-04-18 2004-02-26 Fujitsu Ltd 相関のあるデータ組み合わせの数え上げ方式

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3500026B2 (ja) * 1997-01-27 2004-02-23 矢崎総業株式会社 データ変調装置、及びデータ変調方法
US6308214B1 (en) 1998-09-23 2001-10-23 Inktomi Corporation Self-tuning dataflow I/O core
FR2792087B1 (fr) * 1999-04-07 2001-06-15 Bull Sa Procede d'amelioration des performances d'un systeme multiprocesseur comprenant une file d'attente de travaux et architecture de systeme pour la mise en oeuvre du procede
US7702806B2 (en) * 2000-09-07 2010-04-20 Riverbed Technology, Inc. Statistics collection for network traffic
US6978458B1 (en) * 2000-11-17 2005-12-20 Oracle International Corporation Distributing data items to corresponding buckets for use in parallel operations
US7085769B1 (en) * 2001-04-26 2006-08-01 Ncr Corporation Method and apparatus for performing hash join
US7027446B2 (en) * 2001-07-18 2006-04-11 P-Cube Ltd. Method and apparatus for set intersection rule matching
CA2529925C (en) * 2003-06-25 2016-08-23 Ab Initio Software Corporation Computer-aided parallelizing of computation graphs
US7756919B1 (en) * 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US7577809B2 (en) * 2005-11-02 2009-08-18 Promethean Storage Llc Content control systems and methods
US7571368B1 (en) * 2006-01-26 2009-08-04 Promethean Storage Llc Digital content protection systems and methods
US8243922B1 (en) 2006-02-24 2012-08-14 Hitachi Global Storage Technologies Netherlands B.V. Digital content modification for content protection
US7996899B1 (en) 2006-02-24 2011-08-09 Hitachi Global Storage Technologies Netherlands B.V. Communication systems and methods for digital content modification and protection
US7676807B2 (en) * 2006-02-28 2010-03-09 Sap Ag Method and system for cascaded processing a plurality of data objects
US9177111B1 (en) 2006-11-14 2015-11-03 Hitachi Global Storage Technologies Netherlands B.V. Systems and methods for protecting software
US7672935B2 (en) * 2006-11-29 2010-03-02 Red Hat, Inc. Automatic index creation based on unindexed search evaluation
US7676457B2 (en) * 2006-11-29 2010-03-09 Red Hat, Inc. Automatic index based query optimization
US8510538B1 (en) 2009-04-13 2013-08-13 Google Inc. System and method for limiting the impact of stragglers in large-scale parallel data processing
US11194778B2 (en) * 2015-12-18 2021-12-07 International Business Machines Corporation Method and system for hybrid sort and hash-based query execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127271A (ja) * 1989-11-06 1992-04-28 Masaru Kiregawa データ分配方式
JPH05216842A (ja) * 1992-02-05 1993-08-27 Mitsubishi Electric Corp 資源管理装置
JPH05242049A (ja) * 1991-07-10 1993-09-21 Hitachi Ltd 分散データベースのソート方法およびアクセス方法
JPH06214843A (ja) * 1993-01-20 1994-08-05 Hitachi Ltd データベース管理システムおよび問合せの処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146590A (en) * 1989-01-13 1992-09-08 International Business Machines Corporation Method for sorting using approximate key distribution in a distributed system
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge
EP0377993A3 (en) * 1989-01-13 1991-12-18 International Business Machines Corporation Sorting distributed data
US5121494A (en) * 1989-10-05 1992-06-09 Ibm Corporation Joining two database relations on a common field in a parallel relational database field
EP0522488B1 (en) * 1991-07-10 2002-02-20 Hitachi, Ltd. Method of sorting on distributed database system and method of accessing thereto
JP3415914B2 (ja) * 1993-10-12 2003-06-09 富士通株式会社 並列マージソート処理方法
JP3560662B2 (ja) * 1994-12-06 2004-09-02 富士通株式会社 並列プロセッサ装置
US5671405A (en) * 1995-07-19 1997-09-23 International Business Machines Corporation Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127271A (ja) * 1989-11-06 1992-04-28 Masaru Kiregawa データ分配方式
JPH05242049A (ja) * 1991-07-10 1993-09-21 Hitachi Ltd 分散データベースのソート方法およびアクセス方法
JPH05216842A (ja) * 1992-02-05 1993-08-27 Mitsubishi Electric Corp 資源管理装置
JPH06214843A (ja) * 1993-01-20 1994-08-05 Hitachi Ltd データベース管理システムおよび問合せの処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113342A (ja) * 1997-04-18 1999-01-06 Fujitsu Ltd グループバイ処理方式
JP2004062898A (ja) * 1997-04-18 2004-02-26 Fujitsu Ltd 相関のあるデータ組み合わせの数え上げ方式
JPH11306200A (ja) * 1998-04-27 1999-11-05 Fujitsu Ltd グループバイ処理装置および方法

Also Published As

Publication number Publication date
EP0749066A1 (en) 1996-12-18
EP0749066B1 (en) 2001-06-27
US5854938A (en) 1998-12-29
DE69613517D1 (de) 2001-08-02
DE69613517T2 (de) 2001-10-11
JP3560690B2 (ja) 2004-09-02

Similar Documents

Publication Publication Date Title
JPH096732A (ja) 並列プロセッサ装置
US10817184B2 (en) Control node for multi-core system
KR101502896B1 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US20160132541A1 (en) Efficient implementations for mapreduce systems
JP3560662B2 (ja) 並列プロセッサ装置
US7593948B2 (en) Control of service workload management
RU2487401C2 (ru) Способ обработки данных, узел-маршрутизатор и носитель информации
JP6535253B2 (ja) 複数のリンクされるメモリリストを利用する方法および装置
KR20160037827A (ko) 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
CN1981272A (zh) 在网络协议处理的卸载中支持存储器管理的设备和方法
GB2501572A (en) Parallel processing system with hardware routing based on the destination program instance of a packet
CN104834484B (zh) 基于嵌入式可编程逻辑阵列的数据处理系统及处理方法
EP4083776A1 (en) Systems, methods, devices, and apparatuses for adaptive near storage computation
US11757801B1 (en) Spatial dispersion buffer
US9264383B1 (en) Systems and methods for quality of service for link aggregation groups
CN115729864A (zh) 存储装置、电子装置以及电子装置的操作方法
CN113079113B (zh) 数据传输装置和数据传输系统
JP2023539212A (ja) ストレージレベルの負荷分散
CN113110943A (zh) 软件定义交换结构及基于该结构的数据交换方法
US11552907B2 (en) Efficient packet queueing for computer networks
Rupprecht Exploiting in-network processing for big data management
US20150254196A1 (en) Software Enabled Network Storage Accelerator (SENSA) - network - disk DMA (NDDMA)
JPH04288638A (ja) コンピュータシステム
CN112231096A (zh) 一种fpga池化资源任务均衡的方法、系统、设备及介质
US20150254100A1 (en) Software Enabled Network Storage Accelerator (SENSA) - Storage Virtualization Offload Engine (SVOE)

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040412

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040526

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090604

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100604

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees