JP3560662B2 - 並列プロセッサ装置 - Google Patents
並列プロセッサ装置 Download PDFInfo
- Publication number
- JP3560662B2 JP3560662B2 JP30249994A JP30249994A JP3560662B2 JP 3560662 B2 JP3560662 B2 JP 3560662B2 JP 30249994 A JP30249994 A JP 30249994A JP 30249994 A JP30249994 A JP 30249994A JP 3560662 B2 JP3560662 B2 JP 3560662B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- data
- group
- belonging
- dpr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
(目次)
産業上の利用分野
従来の技術(図36〜図49)
発明が解決しようとする課題(図36〜図49)
課題を解決するための手段
作用
実施例
(a)第1実施例の説明(図1〜図8)
(b)第2実施例の説明(図9〜図17)
(c)第3実施例の説明(図18〜図20)
(d)第4実施例の説明(図21〜図23)
(e)第5実施例の説明(図24〜図29)
(f)第6実施例の説明(図30〜図35)
発明の効果
【0002】
【産業上の利用分野】
本発明は、並列的に動作する複数のプロセッサをそなえてなる並列プロセッサ装置に関する。
特に、本発明は、システムが複数の業務を同時並列に行ない、且つ、一つの業務にシステムの部分集合である複数のプロセッサが参加する、いわゆるMIMD(Multiple Instruction Multiple Data) 型のシステム(並列プロセッサ装置)における、各プロセッサ間通信および処理実行アルゴリズムに関連する技術である。
【0003】
【従来の技術】
一般に、プロセッサ数がかなり多い並列プロセッサシステムでは、全てのプロセッサが磁気ディスク記憶装置等の入出力装置(以下、I/O装置という)を直接共用することが困難であり、I/O装置をプロセッサ間で共用せず、プロセッサ間でデータ交換をI/Oバスとは別の通信機構、例えばバス構造や通信ネットワーク機構を経由して行なう必要が生じる。本発明もまた、1つのI/O装置が複数のプロセッサから動的共用はされない形態を想定した技術である(ただし、後述する本発明のシステムやプロセッサは、1つのI/O装置が複数のプロセッサから共用される形態でも使用することもできる)。
【0004】
また、プロセッサ数がかなり多い並列プロセッサシステムでは、ある業務による処理対象である一連のデータ群、例えばRDB(Relational DataBase)システムにおける1テーブル(リレーション)は、1つのプロセッサのみの配下におかれず、複数のプロセッサが並列的にそのテーブル内のデータを読み出すことにより性能改善を目的として、複数のプロセッサ配下のI/O装置に分割して格納されることが多い。
【0005】
このような環境で、例えばRDB処理(Relational Algebra: 関係代数) の一つの選択〔Selection;条件に合致したテーブルの行=タプル(Tuple;エンティティ,レコードと同意) の抽出〕は、これら対象テーブルを分割格納したプロセッサ群〔以下、本発明では、このプロセッサ群に属するプロセッサをS−DPr(Source Data Processor)と呼ぶ〕がそれぞれデータを読み出しながらタプル選択を行なえば完了する。
【0006】
一方、同じ関係代数でも複数のテーブル間の結合である等価結合(EquivalentJoin;同業者には自明の技術であるので、詳細説明は省略)では、S−DPr側のみでは処理は終了しない。結合されるべき2つのテーブルのS−DPr集合が一致するとは限らず、たとえ集合が一致しても結合されるべきタプル対が全て同一のS−DPrに格納されているとは保証されないからである。
【0007】
等価結合のようにデータとデータ(RDBではタプルとタプル)の突き合わせ処理が必要なものを多数のプロセッサで実現する場合、全てのデータ相互の突き合わせを本当に実行(いわゆるCartesian Product 処理) してから条件に合致する組み合わせを選択する方式もあるが、これは処理量がデータ数の自乗に比例して増加し、プロセッサ間の通信頻度が高くなるために並列プロセッサシステムには向かない。プロセッサ演算性能はプロセッサ台数に比例して増加するが、同時に通信頻度も増加してしまい性能向上が見込めなくなる。
【0008】
これに代わる方式として、ハッシュ結合(Hash Join)と呼ばれる等価結合処理方式がある。これは、等価結合の結合キーの値により予めS−DPr側でタプル群を分類しておき、その分類により作成された各タプル集合(以下、チャンクもしくはバケットと呼ぶ)をそれぞれ1つのプロセッサに転送して、各プロセッサの内部で突き合わせ処理を行なわせるものである。等価結合は結合キーの値が等しいタプル同士の結合を行なう処理であるから、値による分類によって異なるバケットに分類されたタプル間の結合の可能性は無い。
【0009】
これにより、プロセッサ間で転送されるデータ量はデータの1乗のみ比例し、処理量を激減させることができる。このようなハッシュ結合処理方式の概念も既知のものである。
ただし、ハッシュ結合による等価結合方式でも並列プロセッサシステムの潜在的性能をうまく引き出すことができない要因が存在する。
【0010】
その要因は、以下の5種類のスキュー(各プロセッサに対する負荷の偏り)として知られ、これらのスキューのために特定のプロセッサに相対的な負荷が集中し、これがボトルネックとなりシステム全体の処理終了時間が延びてしまう。
(A1)初期分布のスキュー
S−DPrに分割格納されているデータ量が、そもそも各S−DPr間で異なることにより、タプルの読み出し時間そのものがS−DPr間でばらつく現象をいう。
【0011】
(A2)選択率のスキュー
通常、等価結合は、選択(Selection)によって結合対象のタプルを絞り込みながら実行される。この選択は、S−DPrによるタプルの読み出し/分類と同時に行なわれる。この選択を通過するタプル数の大小は、転送処理頻度の大小であり、S−DPr間での処理負荷のばらつきを生む。
【0012】
(A3)再配置のスキュー
結合キーの値による分類は、具体的には通常ハッシュ関数などの評価関数をこの結合キーに対して適用し、その出力を転送先のプロセッサ番号として使用するなどして行なわれる。この評価関数は、現実世界のデータを完全に等量にこれら転送先プロセッサ間で分割することはできない。このため、転送先プロセッサに送付されるタプル数間にバラつきが発生し、転送先プロセッサの処理量に差が出てしまう。
【0013】
(A4)生成率のスキュー
同一数のタプルが転送先プロセッサに送付されたとしても、そのタプル群の中に結合条件を満たすタプル対がどれだけあるかは不明であり、評価関数による分類とデータの性質との関連に起因する偏りが、結合成立の率、つまり結果タプルの生成率に大きな差を生む可能性がある。結果タプルの生成率の大小は格納処理頻度の大小になるから、転送先プロセッサ間の処理量に差が生じてしまう。
【0014】
(A5)MIMDのスキュー
いずれのプロセッサでも複数の互いに独立な業務を同時並列に実行している可能性があり、しかも業務の質も数も異なっている可能性がある。つまり、ある業務から見て、同一種であるべきプロセッサがその業務に費やすことのできる演算性能・転送性能・I/O性能は互いに大きく異なりうる。当然、最も多忙で小さな性能しかその業務に割り振ることのできないプロセッサに、同量の負荷を与えたしまっては処理時間が伸びてしまうことになる。
【0015】
上述のような各スキューを解消するための手段としては、従来、次のようなものが挙げられる。
(B1)初期分布のスキューの解消手段
タプル単位でラウンドロビン(Round Robin)によるS−DPr間分配を行なうなどして、リレーションの初期格納時にS−DPrの格納データ容量がどのテーブルに対しても等しくなるように制御する。
【0016】
(B2)選択率のスキューの解消手段
本質的に回避できないスキューであり、現状、対策は提案されていない。
(B3)再配置のスキューの解消手段
直接、バケットを「突き合わせを行なうプロセッサ」に集めるのではなく、一度、所定のプロセッサ集合〔以下、本発明では、このプロセッサ集合に属するプロセッサをT−DPr(Target Data Processor)と呼ぶ〕に均等分配する。つまり、あるバケットの部分集合をサブバケット(サブチャンク)と呼ぶことにすれば、各T−DPrに送付されたサブバケットはそれが属するバケットが同じならばT−DPr間でできるだけ均等になるように分配する。
【0017】
この後、T−DPr群への前データの分配が終了した時点で各バケットのサイズを調べ、バケットをいくつか組み合わせて「突き合わせを行なうプロセッサ」台数個のほぼ大きさの等しいバケット群に再構成する。これを「バケットサイズチューニング」処理と呼ぶ。このために、S−DPrで行なわれる評価関数適用の時点で生成されるバケット数は「突き合わせを行なうプロセッサ」台数の数倍程度生成するようにしておく。
【0018】
サイズの調整を受けたバケットデータは各「突き合わせを行なうプロセッサ」に集められ、通常の等価結合処理と同様、プロセッサ内部での突き合わせが行なわれる。この段階の転送処理では、どのT−DPrにもほぼ等しい容量のタプル群がほぼ等しい分布で存在するので、初期分布/選択率(選択処理がない)/再配置のスキューとも存在しない。
【0019】
上述のように1段階だけ余分に転送処理を行なう技術は、一見余計な転送やI/O処理を増加させ性能を犠牲にしているようであるが、現実世界の再配置のスキューは、プロセッサ間負荷を数倍のオーダでばらつかせてしまい、より悪影響があることが判っている。この技術の詳細は「中村・喜連川他、〔スーパデータベースコンピュータ(SDC)上での平坦化ハッシュジョインの評価〕並列シンポジウムJSPP’92」他に記述され、公知のものである。
【0020】
以下では、この方式を「バケット平坦化方式」と略称する。また、「バケット平坦化処理」という言葉を、S−DPrからデータを読み出した後、T−DPrに全バケットを均等に分割格納するまで(サブバケットの容量情報を収集してバケットサイズチューニングを実際に行なう処理の前)のために使用する。
(B4)生成率のスキューの解消手段
既知の技術で生成率のスキューに効果的に対応できるものはない。ただし、後述する本発明の技術は生成率のスキューに対応することができる。
【0021】
(B5)MIMDのスキューの解消手段
S−DPrのMIMDのスキューは、選択率のスキューと同様、本質的に回避できないスキューであり、現状、方式的な対策は提案されていない。ただし、S−DPrとしての資源割り当てはそれ以外の動作に対する資源割り当てよりも優先して行ない、S−DPrのMIMDのスキューを具体的に縮小することは既存技術の枠内で実現でき、大きな問題とはならない。
【0022】
S−DPr以外の動作に関するMIMDのスキューに対して効果的に対応できる既知技術はない。ただし、後述する本発明の技術はT−DPrの動作に関するMIMDのスキューを低減することができる。
以下に、図36〜図49により、既存の技術について説明する。
図36は、並列プロセッサシステムで等価結合(Equivalent Join)を、「バケット平坦化方式」を使用したハッシュ結合(Hash Join)により実行するための既存技術を示すブロック図である。
【0023】
なお、以下に説明する既存の技術は、「M.Kitsuregawa,S.Hirano,M.Harada,M.Nakamura,M.Takagi.The Super Database Computer(SDC):System Architecture,Algorithm and Preliminary Evaluation.In Proc.of the 25th Hawaii International Conference on System Sciences pp.308−319(HICSS−25),1992.1」、および、「田村、中村、喜連川、高木。スーパーデータベースコンピュータ(SDC)のバケット平坦化ネットワークにおける縮退動作支援アルゴリズムとその評価:SWOPP 92. 日向難サマーワークショップ、情報処理学会、計算機アーキテクチャ研究会Vol.195,No.16 119−126,1992」から引用した基本技術に基づくものである。
【0024】
また、以下に示す動作は、等価結合全体の動作ではなく、従来技術と本発明との差である「バケット平坦化処理」の部分のみに関するものである。
図36において、100は複数のプロセッサ100A,100B,…,100Cからなるプロセッサ群で、このプロセッサ群100に属する各プロセッサ100A〜100Cは、データをI/O装置から読み出し、必要な選択処理および分類処理を行なって、分類結果(バケットID)および業務の識別子をタプルに付加してネットワーク機構200に送付するもの、つまり前述したS−DPrである。
【0025】
ここで、ネットワーク機構200は、S−DPr群100から投入された個々のタプルに対して自律的に送付先を決定する機能をもつインテリジェントなもので、例えば図37,図38にて後述するように構成されている。
300は複数のプロセッサ300A,300B,…,300Cからなるプロセッサ群で、このプロセッサ群300に属する各プロセッサ300A〜300Cは、ネットワーク機構200からタプルデータとこれに付加されたバケットIDや業務識別子とを受理し、各バケットID毎の受理タプル数の計数を行なった上、各自のI/O装置(後述)にバケットID毎に分類/格納するもの、つまり前述したT−DPrである。
【0026】
なお、物理的には、各T−DPr100A〜100Cと各S−DPr300A〜300Cとは同一のプロセッサである場合もありうるが、ここでは説明のために送受信プロセッサはあたかも常に別プロセッサであるかのように図示および説明する。
図37はネットワーク機構200の内部構造を示すブロック図で、この図37に示すネットワーク機構200は、2入力2出力のスイッチングユニット201〜212がΩ網と呼ばれる結合トポロジで相互に結合されて構成され、8台のS−DPrと8台のT−DPrとを結合して相互に通信可能にする8入力8出力のスイッチング機構となっている。
【0027】
図38はスイッチングユニット201〜212の内部構造を示すブロック図である。この図38において、260,261は各スイッチングユニット201〜212への入力線、262,263は各スイッチングユニット201〜212からの出力線である。220,221はそれぞれ入力線260,261を通じて入力されたタプルを保持する入力レジスタ、224,225はそれぞれ出力線262,263を通じて出力されるべきタプルを保持する出力レジスタである。222,223はそれぞれ入力レジスタ220,221に格納されたデータのうちいずれか一方を選択して出力レジスタ224,225に投入するセレクタ回路である。
【0028】
230は各スイッチングユニット201〜212の動作を決定する演算回路、240はこの演算回路230の動作上必要な情報を保持するメモリである。このメモリ240には、当該スイッチングユニット201〜212を経由してタプル転送を行なう可能性のある各業務に対応して作業テーブル250〜252が格納されている。図38に示す例では、当該スイッチングユニット201〜212を経由してタプル転送を行なう可能性のある業務が3つであるものと仮定する。
【0029】
264は図示しない制御プロセッサから各201〜212への入力線で、業務開始に先立ち、この入力線264を通じて、各スイチイングユニット201〜212の出力線262および263を経由してそれぞれ到達することのできる各業務にとってのT−DPrの数が、図39に示すように、制御プロセッサから各テーブル250〜252のフィールド280,281に記入されるようになっている。
【0030】
図39は、上述したメモリ240に格納される作業テーブル250〜252の内容を示す図で、この図39において、270〜279は各業務で使用されるバケットIDに対応して設けられる符号(±)付き計数値を保持するフィールドで、これらのフィールド270〜279における値は、業務開始に先立って“0”にリセットされるようになっている。また、フィールド280および281には、前述の通り、2本の出力線262および263に対応して、それぞれの出力線262,263から到達することのできる、各業務にとってのT−DPrの数が保持される。
【0031】
図40は、各スイッチングユニット201〜212の入出力データ(転送データ)の論理的フォーマットを示す図で、この図40において、290は当該転送データの転送モード等を示す制御情報フィールドで、少なくとも以下の情報▲1▼および▲2▼を保持するものである。
▲1▼転送モード:本説明がその対象とする「バケット平坦化」のために各スイッチングユニット201〜212があるタプルの転送方向を自ら決定するモード(バケット平坦化モード)と、動作上の指示情報を送ったりここで注目する種類の業務ではない場合など特定のプロセッサ間の通信のために送受信を行なうモード(通常モード)とのいずれがこの転送データに対して適用されるべきかを指定する。
【0032】
▲2▼フォーマット情報:バケットIDなどの後述するフィールドはバケット平坦化処理でこそ必要だが他の一般のメッセージ送付では必要ない場合もある。このように転送データのフォーマットに何種類かあることが想像され、その内どの形態(フォーマット)が使用されるかがこのフィールドに記述される。
また、図40において、291は当該転送データの発信源であるS−DPrのプロセッサ識別子を保持するフィールドで、このフィールド291は、転送モードが通常モードである時、各スイッチングユニット201〜212のスイッチング方向の決定に使用されるが、通常モードの動作詳細は同業者には自明であるので、その説明は省略する。
【0033】
292は当該転送データの送信先であるT−DPrのプロセッサ識別子を保持するフィールドで、このフィールド292は、上記転送モードが通常モードである時のみ有効となる。これも説明は省略する。
293は当該転送データがいずれの業務のために転送されようとしているのかを示す業務識別子を保持するフィールドである。このフィールド293は、通常モードでは障害発生時にはエラー回復のために使用され、ここで説明しようとするバケット平坦化モードでは、各スイッチングユニット201〜212が内部の作業テーブル250〜252のいずれを使用してスイッチング方向を決定すべきかを設定するために使用される。
【0034】
294はバケットIDを保持するフィールドで、このフィールド294は、バケット平坦化モードでのみ使用される。
295はタプルデータを保持するフィールドである。
図41は、各S−DPr100A〜100Cの内部のハードウエア構成を示すブロック図である。後述する通り、各T−DPr300A〜300Cのハードウエア構成も、この図41に示すものと全く同じであり、物理的には同一のプロセッサが同時に同一業務または別業務についてS−DPrかつT−DPrであることも許される。
【0035】
図41において、101は各S−DPr100A〜100Cの内部にあってS−DPr処理を統括・実行するマイクロプロセッサ、102は処理データおよびマイクロプロセッサ101を駆動するソフトウェアコードを格納する主記憶部である。
103は前述のネットワーク機構200から入力線114を通じて送付されたデータを受理する入力ポート回路で、この入力ポート回路103は、少なくともデータ入力があったことをマイクロプロセッサ101に通知する機能と、マイクロプロセッサ101の指示に従って入力したデータを主記憶部102中のマイクロプロセッサ101が指定したアドレスに格納する機能とを有している。従来技術の、しかも本説明の範囲では、各S−DPr100A〜100Cの動作についてこの入力ポート回路103が動作することはない。
【0036】
104は出力線115を通じ前述のネットワーク機構200に対してデータを送出する出力ポート回路で、この出力ポート回路104は、マイクロプロセッサ101の指示に従って、マイクロプロセッサ101が指定したアドレスから、既にマイクロプロセッサ101により前述の図40の形状に整形されたデータを読み出し、これをネットワーク機構200に送出する機能を有している。
【0037】
105〜107はI/Oバス駆動回路で、これらのI/Oバス駆動回路105〜107は、それぞれ、I/Oバス111〜113を経由してI/O装置108〜110を駆動するもので、I/O装置108〜110がI/Oバス111〜113を経由してI/O処理終了を報告するためのI/O割り込みを通知してきた時に割り込みをマイクロプロセッサ101に対して発生する機能や、マイクロプロセッサ101が指定した主記憶部102内の領域と各I/O装置108〜110とのデータ授受を実行する機能を有している。
【0038】
116は図示しない制御プロセッサからの入力線で、この入力線116は、マイクロプロセッサ101への割り込み信号線およびデータ授受バスから構成されて、マイクロプロセッサ101の状態を外部からモニタしたり、マイクロプロセッサ101に対して業務実行に必要なデータ(例えば後述するタプル選択のための条件を記述した情報)を与えたり、業務実行の開始を指示したりするために使用されるものである。
【0039】
図42は、各T−DPr300A〜300Cの内部のハードウエア構成を示すブロック図で、一見して判る通り各S−DPr100A〜100Cとほぼ同じ構成となっている。つまり、図42において符号301〜316を付して示される構成要素は、それぞれ図41により前述した符号101〜116を付した構成要素とほぼ同じものである。唯一の差異は、入力ポート回路303および出力ポート回路304の内、本説明の範囲かつ各T−DPr300A〜300Cとしての動作の範囲では入力ポート回路303のみが使用され出力ポート回路304が使用されることはない点である。
【0040】
以上の構成要素を使用して、従来技術では次に述べるアルゴリズムにより処理を行なう。まず、各S−DPr100A〜100Cの動作アルゴリズムを、図43を参照しながら説明する。
(C1)各S−DPr100A〜100Cのマイクロプロセッサ101は、このS−DPr100A〜100Cに結合されているI/O装置108〜110のファイルディレクトリ(File Directory)102Aを参照して当該業務の処理対象であるテーブルの格納位置を入手し、該領域からデータを読み出すことを、I/Oバス駆動装置105〜107の適当なものに指示する(ステップ101A;“Issue Read Request”) 。この指示には、対象となるI/O装置108〜110の識別子,装置内の格納アドレス,読み出しデータの主記憶部102内の格納アドレス〔図43中のI/Oバッファ102Bのアドレス〕が含まれている。
【0041】
(C2)I/O処理が終了すると、マイクロプロセッサ101は、I/Oバッファ領域102B中に格納されたデータに対して、図示しない制御プロセッサから入力線116を経由して予め伝達された選択条件(Condition for SELECT)102Cにより記述される、タプル内における以後の処理に必要なフィールドの選択・抽出〔即ち関係代数でいうリストリクション(Restriction)とプロジェクション(Projection)〕を実行する(ステップ101B)。なお、上述の選択条件102Cは、例えばSQLのような記述言語で記述されてもよいし、もっと低いレベルの言語であってもよいし、あるいは、マイクロプロセッサ101で走行するプログラムそのものであってもよい。詳細は技術の本質に関係ないので、その説明は省略する。
【0042】
(C3)上記処理で抽出された個々のタプルに対して、マイクロプロセッサ101は、次にハッシュ処理を行ない(ステップ101C;“Hash”)、このタプルが属するバケットのIDを決定する。
(C4)マイクロプロセッサ101は、バケットID,業務(タスク)ID,および当該S−DPr100A〜100Cの物理識別子に基づいて、図40に示したフォーマットの出力データを生成する(ステップ101D;“Form Send Data”)。この時、転送データの転送モードを指定するための制御情報フィールド290には「バケット平坦化モード」がセットされる。これにより、通常モードではなくなるため、宛先(受信側)プロセッサの識別子は無効となる。
【0043】
(C5)マイクロプロセッサ101は、生成した出力データ(Send Data)のアドレスを出力ポート回路104に対し出力要求として発行・伝達することにより、その出力データのネットワーク機構200への出力を指示する(ステップ101E;“Issue Send Request”)。
(C6)以上の動作を、当該S−DPr100A〜100Cに結合されているI/O装置108〜110に格納されている処理対象テーブル中の全てのタプルを読み出し終わるまで繰り返し、図示しない制御プロセッサに対して処理の終了を報告する。
【0044】
次に、図36〜図38に示すネットワーク機構200内の各スイッチングユニット201〜212の動作を説明する。
(D1)例えば、スイッチングユニット201の一方の入力レジスタ220に前段のS−DPr100A〜100Cから転送データが到着すると、その事象は演算回路230に通知される。なお、スイッチングユニット201〜204の前段はS−DPr100であるが、スイッチングユニット205〜212の前段は他のスイッチングユニットである。前段が、S−DPr100A〜100Cであっても他のスイッチングユニットであっても、転送データが各スイッチングユニット201〜212に到着すると、その事象は演算回路230に通知される。
【0045】
(D2)演算回路230は、入力レジスタ220から、転送データの一部(図40のフィールド290〜294)を読み出す。
(D3)演算回路230は、フィールド290の転送モードを指定する値からこの転送データが「バケット平坦化モード」により転送されるべきことを知る。(D4)演算回路230は、フィールド293の値により内部の作業テーブル250〜252のいずれを使用すべきかを特定する。ここでは、例えば作業テーブル250に特定されたものとする。
【0046】
(D5)演算回路230は、作業テーブル250内で符号付き計数値を保持するフィールド270〜279のうち、転送データのフィールド294の値をカウンタ識別子としてアクセスされる1つのカウンタフィールドを特定する。ここでは、例えばフィールド270に特定されたものとする。
(D6)カウンタフィールド270には符合付き計数値が格納されており、演算回路230は、その計数値とフィールド280に保持される数とを加算した値と、その計数値からフィールドカウンタ281に保持される数を減算した値とのいずれの絶対値が小さいかを判断する。
【0047】
(D7)もしカウンタ280の数を加算した値の絶対値の方が小さいならば、この転送データは出力線263側に出力されるべきであり、演算回路230は、フィールド270の内容にフィールド280の数を加算してフィールド270に格納した後、セレクタ回路223に指示を出力して入力レジスタ220の内容を出力レジスタ225に格納させ、出力線263を経由して次段のスイッチングユニットあるいはT−DPr300A〜300Cに対してデータを送出する。
【0048】
(D8)もしカウンタ281の数を減算いた値の絶対値の方が小さいならば、この転送データは出力線262側に出力されるべきであり、演算回路230は、フィールド270の内容からカウンタ281の数を減算してフィールド270に格納した後、セレクタ回路222に指示を出力してレジスタ220の内容を出力レジスタ224に格納させ、出力線262を経由してレジスタ220の次段のスイッチングユニットあるいはT−DPr300A〜300Cに対してデータを送出する。
【0049】
(D9)もしカウンタ280の数を加算した値の絶対値とカウンタ281の数を減算した値の絶対値とが等しい時には、演算回路230は、出力線262と263のどちらを選択してもよい。
(D10)ただし、全てのケースで、演算回路230は、「フィールド280の値が“0”であるなら出力線262に出力してはならない」および「フィールド281の値が“0”であるなら出力線263に出力してはならない」というルールを守らねばならない。
【0050】
(D11)2本の入力線260,261があるため、上記論理で出力線262が一方の入力のためにビジーである時、他方の入力線はこの出力線262を使用できないことがある。勿論、上記引用した論文では、この問題を解決する手段を提示しているが、ここでは簡単のためにこのような場合はいずれかの入力に関する処理が出力線262が使用可能な状態になるまで待たされるものとする。この簡略化は従来技術と本発明との差に関係ない。
【0051】
(D12)容易に理解できる通り、各スイッチングユニット201〜212による局所的な平坦化が上記アルゴリズムにより行なわれ、ネットワーク全体としてT−DPr300A〜300C間のバケット平坦化分布が達成されることになる。
次に、各T−DPr300A〜300Cの動作アルゴリズムを、図44を参照しながら説明する。
【0052】
(E1)各T−DPr300A〜300Cの入力ポート回路303にネットワーク機構200から1タプルに相当する転送データ(Receive Data)が到達すると、入力ポート回路303は、その転送データを主記憶部302の特定アドレスに格納してから、その転送データの到着をマイクロプロセッサ301に伝達する。
【0053】
(E2)マイクロプロセッサ301は、転送データのフィールド290,293,294にアクセスし、バケット平坦化処理のために、いずれの業務のいずれのバケットIDのタプルが到着したかを知る。そして、マイクロプロセッサ301は、バケット平坦化処理にT−DPr300として参加する各業務の各バケットIDに対し幾つのタプルが到着したかをカウントし、そのカウント値をフィールド302A〜302Cに保持する(ステップ301A;“Count Bucket Size ”)。この情報(カウント値)は、本説明が対象とする「バケット平坦化処理」の後「バケットサイズチューニング」時に使用される。
【0054】
(E3)マイクロプロセッサ301は、当該転送データのフィールド293および294から当該転送データ内のタプルがいずれの業務のいずれのバケットに属するかを知り、同一業務の同一バケットIDをもつタプルをI/O処理に備えて同一メモリブロック内(例えば図44ではI/Oバッファ302D〜302F)に蓄積する(ステップ301B;“Blocking Tuples ”)。
【0055】
このような蓄積を行なう理由は、通常、I/O処理の単位(Fixed Block Architectureによる磁気ディスクについてはセクタと呼ばれる単位)は固定長であり、この単位よりも小さい単位でI/O処理を行なうと「セレクタ単位読み出し→セクタ内データの部分変更→セクタ単位書き込み」というシーケンスになってオーバーヘッドが大きいため、このセクタを超える大きさ(さらにはI/O処理オーバーヘッド)を相対的に小さなものにするために固定数のセクタより成るかなり大きなブロック単位で入出力を行なうことが好ましいためである。前述したように、この後、バケットサイズチューニング、さらには、変更された1バケットに属するタプル群を同一の「突き合わせを行なうプロセッサ」に転送する処理が行なわれるため、同一バケットに属するタプル群はできるだけ物理的にも同一箇所(各I/Oバッファ302D〜302F)に格納したい。
【0056】
(E4)上記蓄積処理によりI/O処理の単位として使用されるある容量以上のタプル数がある業務のあるバケットIDに対するブロック(各I/Oバッファ302D〜302F)内に蓄積されると、マイクロプロセッサ301は、I/O装置308〜310のうちどれを利用するべきかを、ファイルディレクトリ(File Directory)302Gを参照して決定してから(ステップ301C;“Form I/O Request”)、このブロックに関するI/O書き込み要求を生成し(ステップ301D;“Issue Write Request ”)、そのブロックを、I/Oバス駆動回路305〜307のうち適切なものに対して発行することにより、ステップ301Cで決定されたI/O装置308〜310のいずれかに書き込む。
【0057】
ところで、次に、図45〜図49により、上記「突き合わせ処理」部分についての既存技術の概要を説明する。
図45はその「突き合わせ処理」を実行するための既存技術を示すブロック図で、この図45において、200は図36〜図38により前述したものと同様に構成されたネットワーク機構で、このネットワーク機構200により、全てのプロセッサ相互通信が同時に可能になっている。
【0058】
また、300も図36により前述したプロセッサ群で、このプロセッサ群300は、複数(図45では3台)のプロセッサ300A〜300Cを有している。各プロセッサ300A〜300C内の二次記憶装置(I/O装置)320A〜320Cには、図43,図44にて前述した手順で、ハッシュ関数により既にグループ分割されたサブバケット1000〜1002;1010〜1012;1020〜1023が格納されているものとする。
【0059】
ここで、各サブバケットを示す符号においては、一の位をバケット識別子とし、十の位を、そのサブバケットが格納されているプロセッサ群300の構成要素である各プロセッサ300A〜300Cの識別子とする。つまり、サブバケットの種類としては識別子“0”〜“3”の4種類が存在するとともに、プロセッサ300A〜300Cの識別子がそれぞれ“0”〜“2”となっている。
【0060】
また、図45に示す例では、前述した通り、バケット種類は4種類あり、識別子“0”〜“2”のサブバケットは全て等しく全てのプロセッサ300A〜300Cに存在するが、識別子“3”のバケットはプロセッサ300Cのみに存在している。
図45において、40は複数(図45では3台)のプロセッサ40A,40B,40Cからなるプロセッサ群で、このプロセッサ群40に属する各プロセッサ40A〜40Cは、上述した「突き合わせを行なうプロセッサ」であり、各プロセッサ40A〜40Cには、二次記憶装置(I/O装置)42A〜42Cがそなえられている。
【0061】
また、50は主記憶部上のバケット割当テーブル(Bucket Allocation Table;図46参照)に基づき図46にて後述する手順に従ってプロセッサ群300からプロセッサ群40へのバケット転送割当を決定・管理するための任意のプロセッサである。
なお、上述したプロセッサ300A〜300C,40A〜40Cや50は、図36に示したプロセッサ100A〜100Cも含めて、同一のプロセッサである場合もありうるが、ここでは説明のために各プロセッサはあたかも常に別プロセッサであるかのように図示および説明する。
【0062】
従来技術では、「突き合わせ処理」の最初に、プロセッサ群300を構成するプロセッサ300A〜300Cそれぞれが、ネットワーク機構200を介して自身の内部に存在するサブバケットのバケット識別子をプロセッサ50に送る。その識別子を受信したプロセッサ50は、プロセッサ群300全体として何種類のサブバケットが存在し、またどのようなバケット識別子のサブバケットが存在するのかをその情報に基づいて知る。
【0063】
この直後に、プロセッサ50は、「どのバケットがどのプロセッサ群40の構成要素たるプロセッサ40A〜40Cにより処理されるべきか」を決定してしまい、ネットワーク機構200を通じて、プロセッサ群300とプロセッサ群40との全てのプロセッサ300A〜300C,40A〜40Cにその決定結果を同報する。
【0064】
以後、プロセッサ群40の各プロセッサ40A〜40Cは、自身に割り当てられたバケットデータの送信をプロセッサ群300全体に対して指示し、あるバケットのデータが全てこれに対応するプロセッサ群40の構成要素のあるプロセッサ40A〜40Cに送付されると、このバケットに対するプロセッサ内部での結合(Join)演算が開始される。プロセッサ内部での結合演算の詳細については、本説明に直接関係せず、また同業者には自明のものであるので、その説明は省略する。
【0065】
次に、図46にてバケット割当テーブル(Bucket Allocation Table)の概略フォーマット例について説明した後、図47〜図49に示すフローチャートに従って、各プロセッサ50,300A〜300C,40A〜40Cの従来動作をより詳細に説明する。
図46は、プロセッサ50に保持されるバケット割当テーブルの概略フォーマット例を示すもので、この図46に示すテーブルは、プロセッサ300A〜300Cから存在が報告された1バケットについて1行(1Row)を費やす構造になっている。
【0066】
図46に示すテーブルにおいて、各行の第1カラム(Column)には、その行に対応するバケットのバケット識別子が格納される。このバケット識別子は、各バケットを特定するために、全てのプロセッサ300A〜300C,40A〜40C,50で使用される。
また、各行の第2カラムには、プロセッサ300A〜300Cのいずれにそのバケットの部分集合であるサブバケットが存在するかが記述され、そのバケットの存在を報告してきたプロセッサ群が網羅されている。この第2カラムとしては、例えば、各プロセッサ300A〜300C毎に1ビットを割り当てたビットマップが用いられる。
【0067】
さらに、各行の第3カラムには、初期化直後は「いずれのプロセッサにも割り当てられていない」ことを示す値が記入されるべきであり、割当処理が行なわれた後はこのバケットが割り当てられたプロセッサ40A〜40Cのいずれかのプロセッサ識別子が記入される。
図47は、プロセッサ500の動作概要を説明するためのフローチャート(ステップS500〜S505)である。
【0068】
この図47に示すように、プロセッサ500は、動作を開始すると、まず、図46に示したバケット割当テーブルの内容を初期化する(ステップS500)。この初期化処理は、予想されるバケット数を記述できるだけの充分な容量のテーブル領域を確保し、その全ての行(各バケットに対応)を無効化するものである。
【0069】
そして、プロセッサ500は、各プロセッサ300A〜300Cから、どのようなバケットが生成されたかについての報告が行なわれるのを待ち(ステップS501)、報告を受けると、その内容をバケット割当テーブルに格納する(ステップS502)。
これらのステップS501,S502による処理動作は、プロセッサ300A〜300Cの全てから報告がなされるまで繰り返し実行される(ステップS503)。
【0070】
全てのプロセッサ300A〜300Cから、生成されたバケットについての報告が行なわれると、プロセッサ500は、それらのバケットとプロセッサ40A〜40Cとの対応関係を一括して割り当ててしまう(ステップS504)。例えば、各プロセッサ40A〜40Cに割り当てられるバケット個数が同じになるように、バケットの割当を決定する。
【0071】
プロセッサ50は、ステップS504で決定された割当の内容をプロセッサ300A〜300Cおよび40A〜40Cに同報する(ステップS505)。
以後、プロセッサ300A〜300Bとプロセッサ40A〜40Cとの間のデータ転送に対して、プロセッサ50が関与する義務はなく、プロセッサ50としての作業は、以上で終了する。
【0072】
図48は、プロセッサ300A〜300Cの動作概要を説明するためのフローチャート(ステップS510〜S513)である。
この図48に示すように、各プロセッサ300A〜300Cは、動作を開始すると、まず、二次記憶装置320A〜320Cにおけるサブバケットの存在を認識することにより、バケット生成処理を行なう(ステップS510)。
【0073】
このバケット生成処理により、どのようなバケットが自身の内部に存在するかを確認すると、各プロセッサ300A〜300Cは、プロセッサ50に対してその確認情報を報告する(ステップS511)。
この後、各プロセッサ300A〜300Cは、プロセッサ50からのバケットと各プロセッサ40A〜40Cとの対応関係の割当結果の通知(図47のステップS505の処理)を待つ(ステップS512)。
【0074】
そして、プロセッサ50から割当結果を通知されると、プロセッサ40A〜40Cとの間でネットワーク機構200を介して適当な同期を確立し、自身の内部に格納されたバケットデータを各プロセッサ40A〜40Cへ転送する(ステップS513)。このとき、どのバケットデータをどのプロセッサ40A〜40Cへ転送するかについては、ステップS512でプロセッサ50から通知された割当情報に従う。
【0075】
図49は、プロセッサ40A〜40Cの動作概要を説明するためのフローチャート(ステップS520〜S522)である。
この図49に示すように、各プロセッサ40A〜40Cは、動作を開始すると、まず、プロセッサ50からのバケットと各プロセッサ40A〜40Cとの対応関係の割当結果の通知(図47のステップS505の処理)を待つ(ステップS520)。このステップS520により、少なくとも自身に割り当てられた全てのバケットの識別子が受信されるものとする。
【0076】
この後、各プロセッサ40A〜40Cは、各プロセッサ300A〜300Cに対して自身に割り当てられたバケットの送付を指示し、そのバケットデータを全て受信する(ステップS521)。そして、各プロセッサ40A〜40Cは、ステップS521にて受信されたデータに対して、DBMS処理〔例えば結合(Join)処理〕を実行する(ステップS522)。
【0077】
【発明が解決しようとする課題】
しかしながら、図36〜図44により説明した従来技術では、以下の項目(F1)〜(F3)のような課題がある。
(F1)ネットワーク部分(ネットワーク機構200)のハードウエア物量が大きい。
【0078】
▲1▼ネットワーク物量は、プロセッサ台数nに対してn lognオーダで増加する(レジスタ領域の容量は総計n2lognオーダで増加する)。
▲2▼このようなネットワーク物量のうち、問題となるのはレジスタ領域(単なるメモリで実現できるから問題にならない)を除く部分であり、可変長タプルを取り扱うことができるようなスイッチングユニット201〜212をこのオーダで準備することは困難である。現在、VLSIを使用しワイアードロジックによりこのオーダで作成することは勿論可能であるが、プロセッサ側もマイクロプロセッサベースで作成されるため、ネットワーク機構200の物量がプロセッサ側の物量を上回りかねないことになる。
【0079】
(F2)生成率のスキュー,MIMDのスキューには全く対応できない。
▲1▼上述した既存技術は、各スイッチングユニット201〜212での配分に関する重み付け(フィールド280,281への値記入)が業務開始時のみで行なわれ、かつT−DPrの台数のみをカウントして行なわれている。つまり、「全てのT−DPrの入力データ量を等しくすること」しか狙っていない。
【0080】
▲2▼これに対して、生成率のスキュー,MIMDのスキューは「T−DPrの入力データ量が均等であっても発生する負荷の偏り」であって、上記既存技術はこれらスキューに対して無力である。
▲3▼また、MIMD環境では「負荷の偏りの補正」は他業務開始・終了が動的に発生するため、これに対応して動的な手法で行なわれねばならず、業務開始時のみに負荷調整値(フィールド280,281に記入される重み付け値など)を決定していたのでは不十分である。
【0081】
(F3)プロセッサ間タプルデータ転送のオーバーヘッドが大きい。
▲1▼上記既存技術は、論理的な平坦化処理対象(つまりタプル)が物理的なネットワーク内でのルーティング制御対象と一致しているため、あくまでプロセッサ間の物理転送単位が1タプルであることを要求する。
▲2▼一般に、1回の転送処理に要するプロセッサ側処理量はかなり大きいため、複数タプル群を一括して転送単位とできないこの方式ではプロセッサ側の転送処理オーバーヘッドがかなり大きなものとなってしまう。
【0082】
一方、図45〜図49により説明した従来技術では、プロセッサ50によるバケットとプロセッサとの対応関係の決定が上記「突き合わせ」処理開始時にスタティックに行なわれることに起因して、以下のような課題が生じている。
生成率のスキューがどの程度になるかは「突き合わせ」処理を行なう前には予測することができない。従って、既存技術の方式では、生成率のスキューを低減することは全く不可能である。
【0083】
また、「突き合わせ」処理に関するMIMDのスキューとは、つまり上述したプロセッサ群40に属するプロセッサ40A〜40Cの一部が他の業務を行なっていたり、一部のプロセッサにおいてこの業務を行なっている間に新たな業務が投入されたり終了したりして、この業務を実行する上での速度が大幅に上下し、このためプロセッサ群40に属するプロセッサ40A〜40Cの当該業務に関する演算速度と負荷との間の関係が崩れることである。
【0084】
理想的な負荷−演算性能関係とは、どのプロセッサでもこれらの比がほぼ一定であることであるが、従来技術では、各プロセッサの「演算速度」に関する情報を収集していないし、また「突き合わせ」処理の開始時にいくらプロセッサの演算速度の情報を収集してもこれらは他業務の開始・終了でいくらでも動的に変化するものであり、かつ業務の開始や終了に関する予測を完全に行なうことは不可能である。
【0085】
このため、図45〜図49に示した従来技術では、生成率のスキューやプロセッサ群40のMIMDのスキューを低減することはできず、システム演算性能が理想的なものから比べて大幅に低下してしまう。
本発明は、このような課題に鑑み創案されたもので、以下のような目的を果たすものである。
【0086】
つまり、上記既存技術で問題になるのはメモリ以外の論理演算回路の物量であり、メモリは今日の技術ではかなりの大容量を容易に実装できるので問題になることは少ない。本発明の第1の目的は、メモリ容量を除く部分のハード回路量(ハード物量)の低減をはかった並列プロセッサ装置を提供することである。
また、前述の通り、バケット平坦処理はそもそも再配置のスキューを低減するために提案されているが、本発明の第2の目的は、これに加えて、生成率のスキューおよびT−DPr側のMIMDのスキューへの対応を可能にした並列プロセッサ装置を提供することである。
【0087】
さらに、本発明の第3の目的は、複数タプルを一括して一度のプロセッサ間転送処理により送受信可能にして、プロセッサ間データ転送処理のオーバーヘッドを相対的に縮小できるようにした並列プロセッサ装置を提供することである。
またさらに、本発明の第4の目的は、「突き合わせ」等の処理に際してのMIMDのスキューおよび生成率のスキューに確実に対応可能な並列プロセッサ装置を提供することである。
【0088】
【課題を解決するための手段】
上記目的を達成するために、本発明の並列プロセッサ装置(請求項1〜6)は、少なくとも、後述するS−DPr集合(以下、ソースデータプロセッサ群という場合がある)およびT−DPr集合(以下、ターゲットデータプロセッサ群もしくは第1プロセッサ群という場合がある)と、ソースデータプロセッサ群から転送されて第1プロセッサ群に格納されたデータを、第1プロセッサ群から送付され、送付されたデータに対する処理を実行する第2プロセッサ群とを含み、この第2プロセッサ群が前記処理を実行するのに先立ち、前記処理の対象となるデータをソースデータプロセッサ群から第1プロセッサ群に属する各プロセッサに分散して格納し、第1プロセッサ群に属する各プロセッサにおいて格納されたデータを所定規則に従って少なくとも一つのデータグループに予めグルーピングするものである。そして、本発明の各並列プロセッサ装置(請求項1〜6)は以下の特徴を有している。
1.まず、本発明の並列プロセッサ装置(請求項1)は、並列的に動作する複数のプロセッサをそなえて構成される並列プロセッサ装置であって、以下の特徴を有している。
【0089】
(a)単一の処理(以下「処理単位」)の対象となるデータの塊(以下「チャンク」)があり、このチャンクが、上記複数の個々のプロセッサ(実際には各プロセッサに接続されたI/O装置群)にその部分集合(以下「サブチャンク」)に分割されて格納されている。
(b)サブチャンクは、さらに個々に独立して処理を受けることが可能なデータ項目(以下「エンティティ」)複数個からなる。
【0090】
(c)「ある評価関数の適用結果(出力値)によりエンティティ群を分類し、個々の出力値に対応したエンティティ集合を得る」場合に、下記(1)〜(5)のアルゴリズムを採用する。
(1)処理対象であるチャンクの部分集合であるサブチャンクを、I/O装置にもつプロセッサ集合をS−DPr(Source Data Processors)集合と仮称するとともに、その集合に属するプロセッサをS−DPrと仮称する。
【0091】
(2)S−DPr集合とは必ずしも構成要素(プロセッサ)が一致してもしなくても良いプロセッサ集合をT−DPr(Target Data Processors)集合と仮称するとともに、その集合に属するプロセッサをT−DPrと仮称する。
(3)各S−DPrは、独立してサブチャクをI/O装置から読み出し、これに含まれる個々のエンティティに対して上記評価関数を適用してこのエンティティに対応する出力値を得る。
【0092】
(4)各S−DPrは、エンティティをT−DPrを一つ選択してこれに転送するものとする。この時、転送するエンティティに上記評価関数の出力値を付加して送る。
(5)T−DPrは、受理したエンティティを配下のI/O装置に格納する。この時、上記エンティティに付加して送付された評価関数の出力値が等しいエンティティ群は、後にまとめて取り出すことが可能なように分類して格納する。
【0093】
(d)個々に上記条件(a)〜(c)を満足する複数個の業務が、それぞれS−DPr集合とT−DPr集合を使用して動作しており、且つ、これら異なる業務が使用するプロセッサ集合は、その要素たるプロセッサが必ずしも排反の関係にあることが保証されない。
(e)そして、上述の(c)の項目 (4)に示した送付先T−DPrを決定するアルゴリズムとして下記(1)〜(3)を採用する。
【0094】
(1)各S−DPrは、「T−DPrの識別子(第1指定要素)」および「評価関数出力値(第2指定要素)」の2者を添字としてアクセス可能な2次元配列を転送宛先プロセッサ決定用テーブルとして有している。このテーブルには、「対応する識別子」をもつT−DPrに「対応する評価関数出力値」をもつエンティティをいくつ転送したかを示すカウント値が、2次元配列要素として保持されている。
【0095】
(2)各S−DPrは、上記評価関数の出力値があるエンティティに対して判明すると、上記転送宛先プロセッサ決定用テーブルの一方の軸座標(座標軸Xとする)として該評価関数出力値を使用することにより、他方の軸方向(座標軸Yとする)に含まれる全ての配列要素(カウント値)を抽出し、これら全ての値を相互に比較し、最も小さなカウント値をもつ配列要素のY座標(T−DPr識別子に対応する)から転送先のT−DPrを特定して転送を行なう。
【0096】
(3)転送先のT−DPrが決定されると、S−DPrは、上記「当該T−DPrおよび当該評価関数出力値」に対応する配列要素の内容(カウント値)を1だけインクリメントする。
2.また、本発明の並列プロセッサ装置(請求項2)は、項目1.にて上述した並列プロセッサ装置とほぼ同様に構成されるが、下記機構上の特徴を有している。
【0097】
(a)S−DPr間で、同一チャンクに属するサブチャンクデータの格納量は互いにほぼ等しくなるように分布させる。
(b)ある一つの業務についての、あるS−DPrからあるT−DPrへのエンティティ転送に際して、以下▲1▼〜▲4▼のアルゴリズムを採用する。
▲1▼各S−DPr内に、当該業務に対して全てのT−DPrに1対1に対応し、エンティティをその構成要素とする待ち行列機構が準備される。つまり、この待ち行列機構は、1対のS−DPr:T−DPr通信関係に対して、この通信関係を使用する業務個数分だけS−DPr内に作成される。
【0098】
▲2▼各T−DPrは、当該業務に関するあるS−DPrからの受信が可能な状態になると、このS−DPrに対して送信開始指示を行なうように構成されている。
▲3▼「あるT−DPrがある業務についてこの業務に関するS−DPr群の任意のものに対して送信開始指示を行なう事象」は、当該T−DPr内における、当該業務についてのT−DPrとしての処理の進捗状況と比例した頻度で行なわれる。
【0099】
▲4▼T−DPrは、ある業務に関する上記送信開始指示を、当該業務にS−DPrとして参加するすべてのプロセッサに対して等しい頻度で送付する。
(c)各S−DPrは、当該業務に関するT−DPr集合の中の任意のT−DPrに対して自身内部に作成される上記待ち行列機構内に現在どれだけの数の転送対象エンティティが蓄積されているかを知る蓄積数検出手段を有している。
【0100】
(d)そして、あるエンティティが送付されるべきT−DPrを決定するS−DPr内アルゴリズムとして、下記▲1▼〜▲3▼を採用する。
▲1▼各S−DPrは、「T−DPrの識別子(第1指定要素)」および「評価関数出力値(第2指定要素)」の2者を添字としてアクセス可能な2次元配列を転送宛先プロセッサ決定用テーブルとして有している。このテーブルには、「対応する識別子」をもつT−DPrに「対応する評価関数出力値」をもつエンティティをいくつ転送したかを示すカウント値が、2次元配列要素として保持されている。
【0101】
▲2▼各S−DPrは、上記評価関数の出力値があるエンティティに対して判明すると、上記転送宛先プロセッサ決定用テーブルの一方の軸座標(座標軸Xとする)として該評価関数出力値を使用することにより、他方の軸方向(座標軸Yとする)に含まれる全ての配列要素(カウント値)を抽出し、これら全ての値を相互に比較し、最も小さなカウント値をもつ配列要素のY座標(T−DPr識別子に対応する)から転送先のT−DPrを特定して転送を行なう。
【0102】
▲3▼転送先のT−DPrが決定されると、S−DPrは、上記「当該T−DPrおよび当該評価関数出力値」に対応する配列要素の内容(カウント値)を、該時点で該業務およびT−DPrに対する上記待ち行列構造内に蓄積されている転送対象エンティティ数(上記蓄積数検出手段による検出数)に1を加算した値、あるいは、この加算値に0以外の定数を乗算した値だけインクリメントする。
【0103】
3.上述した項目1.および2.の並列プロセッサ装置において、S−DPrからT−DPrへの転送単位は、複数のエンティティの集合体としてもよい(請求項3)。このとき、その転送単位は、上記評価関数の適用結果である出力値が互いに異なることが許される複数エンティティの集合体である。
そして、前述した通り、各S−DPrでは、転送時に同一の転送単位に含まれる個々のエンティティに対して上記評価関数の出力値が付与され、各T−DPrは、その転送単位を受理すると、個々のエンティティに付与された上記評価関数出力値を参照することにより個別のエンティティを評価関数出力値別に分離・分類するようになっている。
【0104】
4.さらに、本発明の並列プロセッサ装置(請求項4)は、上述した項目2.および項目3.の機能を有する並列プロセッサ装置において、あるエンティティが送付されるべきT−DPrを決定するS−DPr内アルゴリズムとして、下記(1)〜(4)を採用している。
(1)各S−DPrは、項目2.にて前述した蓄積数検出手段の代わりに、当該業務に関するT−DPr集合の中の任意のT−DPrに対して自身内部に作成される上記待ち行列機構内に現在どれだけのデータ量の転送対象エンティティが蓄積されているかを知る蓄積データ量検出手段を有している。
【0105】
(2)各S−DPrは、「T−DPrの識別子(第1指定要素)」および「評価関数出力値(第2指定要素)」の2者を添字としてアクセス可能な2次元配列を転送宛先プロセッサ決定用テーブルとして有している。このテーブルには、「対応する識別子」をもつT−DPrに「対応する評価関数出力値」をもつエンティティをどれだけ転送したかを示すデータ量が、2次元配列要素として保持されている。
【0106】
(3)各S−DPrは、上記評価関数の出力値があるエンティティに対して判明すると、上記転送宛先プロセッサ決定用テーブルの一方の軸座標(座標軸Xとする)として該評価関数出力値を使用することにより、他方の軸方向(座標軸Yとする)に含まれる全ての配列要素(データ量)を抽出し、これら全ての値を相互に比較し、最も小さなデータ量をもつ配列要素のY座標(T−DPr識別子に対応する)から転送先のT−DPrを特定して転送を行なう。
【0107】
(4)転送先のT−DPrが決定されると、S−DPrは、上記「当該T−DPrおよび当該評価関数出力値」に対応する配列要素の内容(データ量)を、該時点で該業務およびT−DPrに対する上記待ち行列構造内に蓄積されている転送対象エンティティデータ量(上記蓄積データ量検出手段による検出結果)と現在処理中のエンティティのデータ量とを加算した値、あるいは、この加算値に0以外の定数を乗算した値だけインクリメントする。
【0108】
5.上述した並列プロセッサ装置では、複数のプロセッサが一つの業務に参加し全体として当該業務を実行すべく、当該業務における処理対象のデータが、上記複数のプロセッサに含まれる第1プロセッサ群(T−DPr集合)に分散して格納され、この第1プロセッサ群に格納されたデータが、上記複数のプロセッサに含まれる第2プロセッサ群に対して送付され、当該データに対する処理が第2プロセッサ群にて実行される。
【0109】
なお、データは、所定規則に従ってグルーピングを受けることが可能であって、該グルーピングを受けた後のあるデータグループが全て上記第2プロセッサ群に属する一つのプロセッサに送付された場合、このプロセッサは、そのデータグループの処理を行なうに際して、他のプロセッサと交信する必要がない。
このとき、上述した項目1.〜項目4.にて上述した並列プロセッサ装置において、下記(1)〜(7)の要件が満たされるように構成してもよい(請求項5)。
【0110】
(1)予め上記第1プロセッサ群に属する各プロセッサは、自プロセッサに格納されているデータに対してのみ上記グルーピングを行なう。
(2)上記第1プロセッサ群に属する各プロセッサは、上記複数のプロセッサに含まれる任意の一プロセッサ(以下、管理用プロセッサAという;上記第1プロセッサ群または上記第2プロセッサ群に属するものであっても、あるいはいずれにも属さないものであっても良い)にどのようなグループが生成されたかを通知する。
【0111】
(3)上記管理用プロセッサAは、上記第1プロセッサ群内にどのようなグループが格納されているかを記憶する。
(4)上記第2プロセッサ群に属する各プロセッサは、「上記データグループの新たな処理を開始できる状況」になると、上記管理用プロセッサAに対してデータグループの割当を依頼する。
【0112】
(5)上記管理用プロセッサAは、データグループを、割当を依頼してきた第2プロセッサ群に属するプロセッサ(以下、プロセッサB)に割り当てると、以後このデータグループを他のプロセッサには割り当てない。
(6)上記第1プロセッサ群に属する各プロセッサ群は、上記管理用プロセッサAによる割当に従い、上記プロセッサBに対して、自身に格納されたデータのうち該当するデータグループに含まれる全てのデータを送付する。
【0113】
(7)上記プロセッサBは、該当するデータの全てを受信すると、当該データグループの処理を開始する。この処理が終了した時、再びプロセッサBは「上記データグループの新たな処理を開始できる状況」となる。
6.また、項目1.〜項目4.にて上述した並列プロセッサ装置において、下記(1)〜(3)の特徴をそなえてもよい(請求項6)。
【0114】
(1)上記項目5.の(2)において、上記第1プロセッサ群に属する各プロセッサが、管理用プロセッサAに対し、グルーピング結果として各データグループの識別子と容量とをを通知する。
(2)上記項目5.の(3)において、上記管理用プロセッサAが、上記第1プロセッサ群に属する各プロセッサから送付された容量を各データグループについて積算し、上記第1プロセッサ群全体について各データグループの大きさ(容量)を各データグループの識別子とともに記憶する。
【0115】
(3)上記項目5.の(5)において、上記管理用プロセッサAが、上記第2プロセッサ群に属する各プロセッサからデータグループの割当依頼を受けると、当該割当依頼を行なったプロセッサに対し、記憶しているデータグループのうち容量の大きなものから順に割り当てを行なう。
【0116】
【作用】
「ネットワーク自身に平坦化分配機能を持たせる」こと、「多段網ネットワークを構成する個々のスイッチングユニットが局所的な平坦化作業を行なうことにより全体として全てのT−DPrおよびチャンク(バケット)に対して平坦化が行なわれる」ことが、前述した既存技術の基本発想であるが、上述した本発明の並列プロセッサ装置は、これを採用せず、「ネットワークに特殊な機能を期待しない」こと、「各S−DPrが送出したデータに関するT−DPr負荷(エンティティ)が全て等しくなるように局所的な平坦化を行なうことにより、全体として全てのT−DPrおよびバケットに対して平坦化が行なわれる」ことを基本発想とする。
【0117】
「ネットワークに特殊な機能を期待しない」以上、本発明のネットワークの機能としては、例えば前述したネットワーク機構(図36の符号200参照)の説明中で言うところの「通常モード」による通信機能のみが提供されれば十分である。従って、本発明の並列プロセッサ装置では、プロセッサ間のデータ授受を行なう機構はプロセッサ間のいわゆる「全点対全点通信」が可能でありさえすればよく、ネットワーク機構自体に対して、上記の多段網であってもバス結合であっても特別な機構やトポロジを期待しない。
【0118】
その代わりに、本発明では、チャンクの平坦化作業を全てS−DPrおよびT−DPrの各プロセッサ側で行なう。前述のように、その基本発想は「あるS−DPrから送出されたデータについて、全てのT−DPr間の負荷が等しくなることを当該S−DPr内部で保証する」ことである。この時、「T−DPrの負荷」をどのように定義するかにより、MIMDのスキューと生成率のスキューに対応するか否かが分かれる。
【0119】
上述した本発明の並列プロセッサ装置(請求項1)では、「必要なハード物量(メモリ除く)が小さいバケット平坦化処理の実現方式」のうちT−DPrの負荷につき既存技術と同じく「T−DPrへの入力データ総量」のみに着目し、転送宛先プロセッサ決定用テーブルを用いてこれを均等化している。
また、本発明の並列プロセッサ装置(請求項2)では、T−DPrの負荷につき生成率のスキューやMIMDのスキューをも考慮し、転送宛先プロセッサ決定用テーブルにおいてT−DPr入力量を動的に調整することにより、「作業を行なうために必要なT−DPr処理時間」を均等化することができる。
【0120】
さらに、上述した並列プロセッサ装置においては、プロセッサ間転送単位が個々のエンティティ(タプル)である必要はなくなるため、受信側T−DPrが同一であるならば異なる評価関数出力値(バケットID)をもつエンティティ群(タプル群)を送信側のS−DPrでまとめてしまい、これを転送単位とすることにより、プロセッサ間データ転送のためのオーバヘッドを小さくすることができる(請求項3)。
【0121】
ただし、T−DPrの負荷の調整を行なうために、転送宛先プロセッサ決定用テーブルにおいて「各T−DPrに入力されるタプル数を増減する」方式と、「各T−DPrに入力される各エンティティのデータ量(タプル長)の和を増減する」方式とが考えられる。
上記既存技術ではタプル数を増減している訳だが、前述のようにプロセッサ間の転送単位がエンティティ群となる場合、1回の転送単位は、転送されるエンティティ群のデータ量総和が適当な固定値になるように設定されることが予想される。
【0122】
請求項2記載の並列プロセッサ装置は、「各T−DPrからS−DPr群に対して等しい頻度でデータ受信試行が行なわれる」ことを骨子としており、1度の送受信作業で転送される単位が、上記のように固定エンティティ数(固定タプル数)ではなくそのデータ量総和が固定になるように設定されるならば、上述のようにプロセッサ間転送単位をエンティティ群とすることは、当然、「各T−DPrに入力されるエンティティのデータ量の和を増減する」方式を採用していることと同義である。
【0123】
これは、請求項2に係る発明で記述する、S−DPr側で転送宛先プロセッサ決定用テーブルを用いて「注目するエンティティをあるT−DPrに送付した場合そのT−DPrの負荷はどのようになるか」を判定する方式に反映されるべきだが、しかしこれを反映しなければ全く動作しないというものでもない。
つまり、非常に多いタプル数を扱うならば、どのチャンク/T−DPrでも平均的なエンティティのデータ量(タプル長)はほぼ同じになることが予想され、エンティティ数ベースの負荷調整は、エンティティのデータ量総和ベースの負荷調整と同じ結果になることが期待できる。即ち、このようなケースでは上記反映の必要はあまりないと予想できる。
【0124】
これに対して、それ程タプル数が多くない場合には、やはり上記反映を行なっておいた方が負荷の平坦化はより確実に実行することができる。従って、請求項4に係る発明の並列プロセッサ装置では、プロセッサ間転送単位をエンティティ群とし、さらに請求項2に係る発明の「T−DPrの負荷を予測する方式」を上記議論にあわせて修正し、エンティティのデータ量総和ベースの負荷調整を行なうようにしてる。
【0125】
一方、請求項5記載の並列プロセッサ装置では、管理用プロセッサAにより、第1プロセッサ群に属する各プロセッサに格納されているデータグループが記憶・管理されており、第2プロセッサ群に属するプロセッサBが第1プロセッサ群に格納されるデータグループについて新たな処理を開始できる状況になると、このプロセッサBから管理用プロセッサAに対してデータグループの割当が依頼される。
【0126】
この割当依頼を受けた管理用プロセッサAにより、プロセッサBに対し、未割当のデータグループの割当が行なわれ、そのデータ割当に従って、第1プロセッサ群に属する各プロセッサからプロセッサBに対し、該当するデータグループに含まれる全てのデータが送付される。この後、プロセッサBにより、当該データグループに対する処理が開始される。
【0127】
また、請求項6記載の並列プロセッサ装置では、管理用プロセッサAにおいて、第1プロセッサ群に属する各プロセッサに格納されているデータグループの容量が各データグループについて積算され、第1プロセッサ群全体について各データグループの容量が各データグループの識別子とともに記憶・管理されており、第2プロセッサ群に属するプロセッサBが第1プロセッサ群に格納されるデータグループについて新たな処理を開始できる状況になると、このプロセッサBから管理用プロセッサAに対してデータグループの割当が依頼される。
【0128】
この割当依頼を受けた管理用プロセッサAにより、プロセッサBに対し、記憶しているデータグループのうち容量の大きいものから順に割当が行なわれる。そして、そのデータ割当に従って、第1プロセッサ群に属する各プロセッサからプロセッサBに対し、該当するデータグループの全データが送付された後、プロセッサBにより、当該データグループに対する処理が開始される。
【0129】
【実施例】
以下、図面を参照して本発明の実施例を説明する。
(a)第1実施例の説明
(a1)第1実施例において必要な構成要件
第1実施例は、第1発明の並列プロセッサ装置にかかる技術で、この第1実施例で必要な構成要件は、下記(1) 〜(3) の通りである。
【0130】
(1) 各S−DPrに、「どのT−DPrに、どのバケット(チャンク)に属するタプル(エンティティ)を、いくつ送出したか」が記述される「S−DPrでの局所平坦化を実現するための2次元テーブル」(転送宛先プロセッサ決定用テーブル)が設けられる。
(2) 各S−DPrは、あるタプルのバケットID(当該タプルに対して所定評価関数を適用した際の出力値)が確立すると、そのバケットIDをもつ転送宛先プロセッサ決定用テーブルの要素(カウント値)を全て抽出し、その要素の中で最も小さな値をもつ要素に対応するT−DPrを、当該タプルの転送宛先として決定する。
【0131】
(3) この後、タプル転送を行なったS−DPrは、転送宛先プロセッサ決定用テーブル上の当該バケットIDと当該転送宛先T−DPrとに対応する要素(カウント値)に1を加算する。
(a2)第1実施例の正当性の説明
上述のような構成要件をもつ第1実施例では、あるS−DPrから送出されるタプル数が、各バケットID毎に、全てのT−DPrについてほぼ等しくなる理由は明らかであるため、その詳細な説明は省略する。
【0132】
各S−DPrを見たとき、T−DPr側に送付するタプル数は、同一バケットIDに対してたかだか1しか違わない。従って、システム全体でT−DPr間の受信タプル数はたかだかS−DPr台数しか違わない。この数は、一般にタプル総数やバケットサイズに比べて十分に小さく、T−DPrの入力タプル数によってT−DPrの負荷を計る限り負荷の平坦化は十分に達成される。
【0133】
(a3)第1実施例の実装形態の説明
図1は本発明の第1実施例としての並列プロセッサ装置の全体構成を示すブロック図で、この図1において、400は複数のS−DPr400A,400B,…,400CからなるS−DPr群、600はS−DPr群400に属するS−DPr400A〜400Cのうちの任意のものから後述するT−DPrの任意のものへデータ送信を行ないうるネットワーク機構、700は複数のT−DPr700A,700B,…,700CからなるT−DPr群である。
【0134】
また、図2は第1実施例におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図で、この図2を一見して分かる通り、各S−DPr400A〜400Cのハードウエア構成は、図41に示した既存技術のものとほぼ同様である。
ただし、本実施例の各S−DPr400A〜400Cと既存技術の各S−DPr100A〜100Cとの主要な相違点は、本発明を実現するために主記憶部402中に転送宛先プロセッサ決定用テーブル420がそなえられていることである。
【0135】
また、図6にて後述する通り、各T−DPr700A〜700Cのハードウエア構成も、各S−DPr400A〜400C側のみに転送宛先プロセッサ決定用テーブル420が存在すること以外は、各S−DPr400A〜400Cのハードウエア構成と同じであり、物理的には同一のプロセッサが同時に同一業務または別業務についてS−DPrかつT−DPrであることが許される。
【0136】
図2において、401は各S−DPr400A〜400Cの内部にあってS−DPr処理を統括・実行するマイクロプロセッサ、402は処理データおよびマイクロプロセッサ401を駆動するソフトウェアコードを格納する主記憶部である。
403は前述のネットワーク機構600から送付されたデータを受理する入力ポート回路で、この入力ポート回路403は、入出力線414を経由してネットワーク機構600に結合されるほか、少なくとも自プロセッサ宛のメッセージまたはデータ入力があったことをマイクロプロセッサ401に通知する機能と、マイクロプロセッサ401の指示に従って入力したデータを主記憶部402中のマイクロプロセッサ401が指定したアドレスに格納する機能とを有している。
【0137】
ここで、第1実施例に関する本発明の範囲で、各S−DPr400A〜400C内における入力ポート回路403がマイクロプロセッサ401から見て動作することはないが、後述するように、第1実施例ではネットワーク機構600が共通バス構造(図4にて後述)であることを仮定したため、自S−DPr宛でないメッセージあるいはデータもこの入力ポート回路403に送付される。
【0138】
従って、本実施例の入力ポート回路403は、送信データ中の宛先プロセッサ識別子フィールドに自らアクセスして自S−DPr宛であるか否かを判定し、自S−DPr宛でないならばそのデータを破棄する機能も有している。なお、マイクロプロセッサ403に対して自S−DPrの識別子を通知する作業は、例えばシステム立ち上げ時に、後述する入力線416を経由して図示しない制御プロセッサからマイクロプロセッサ401を経由して行なわれるようになっている。
【0139】
404は入出力線414を通じネットワーク機構600に対してデータを送出する出力ポート回路で、この出力ポート回路404は、マイクロプロセッサ401の指示に従って、マイクロプロセッサ401が指定したアドレスから、既にマイクロプロセッサ401により後述する形状に整形されたデータを読み出し、これをネットワーク機構600に送出する機能を有している。
【0140】
405〜407はI/Oバス駆動回路で、これらのI/Oバス駆動回路105〜107は、それぞれ、I/Oバス411〜413を経由してI/O装置408〜410を駆動するもので、I/O装置408〜410がI/Oバス411〜413を経由してI/O処理終了を報告するためのI/O割り込みを通知してきた時に割り込みをマイクロプロセッサ401に対して発生する機能のほか、マイクロプロセッサ401が発行したI/OコマンドをI/O装置408〜410に送付する機能や、さらにマイクロプロセッサ401が指定した主記憶部402内の領域と各I/O装置408〜410とのデータ授受を実行する機能を有している。
【0141】
416は図示しない制御プロセッサからの入力線で、この入力線416は、マイクロプロセッサ401への割り込み信号線およびデータ授受バスから構成されて、前述のごとく各S−DPr400A〜400Cの識別子を通知したり、マイクロプロセッサ401の状態を外部からモニタしたり、マイクロプロセッサ401に対して業務実行に必要なデータ(例えば後述するタプル選択のための条件を記述した情報)を与えたり、業務実行の開始を指示したりするために使用されるものである。
【0142】
420は前述した本実施例において必要な構成要件である転送宛先プロセッサ決定用テーブルで、その具体的な構成例が図3に示される。
この図3に示す転送宛先プロセッサ決定用テーブル420では、各列(カラム:Column) が当該業務に関するT−DPr700A〜700Cの個々の識別子(第1指定要素)に対応し、各行(Row)が当該業務に関するバケットID(ハッシュ関数等の所定評価関数の出力値;第2指定要素)に対応する。
【0143】
この転送宛先プロセッサ決定用テーブル420は、各S−DPr400A〜400C内に1業務当たり1個存在し、当該業務に関して各S−DPr400A〜400Cから送出されるデータにつきT−DPr700A〜700C間での入力調整を行なうためのものである。従って、もし、あるプロセッサが複数の業務につきS−DPrとして動作しており、それぞれの業務が「バケット平坦化処理」である時、一つのS−DPr内部に転送宛先プロセッサ決定用テーブル420は複数個存在する。
【0144】
図3に示す転送宛先プロセッサ決定用テーブル420では、0番目のカラム(カラム0)がこの業務に参加している識別子“07”のT−DPrに対応しており、以下、同様に、第1カラムが識別子“0A”のT−DPr、第2カラムが識別子“02”のT−DPr(以下略)に対応している。このようなカラムとプロセッサ識別子との対応関係が主記憶部402上の変換1次元リスト421として準備される。
【0145】
なお、本実施例の範囲内で転送宛先プロセッサ決定用テーブル420のカラム数は各T−DPr700A,700B,…,700Cに対応していれば良く、その並び順に対して特に要求はない。カラム識別子とT−DPrのプロセッサ識別子との相互変換の手法についても本発明による要求は特になく、リスト421の存在は、本発明における必須構成要件ではない。リスト421は、テーブル420のカラム識別子によりアクセスされて、対応するプロセッサ識別子を与えるものである。
【0146】
図4は第1実施例におけるプロセッサ間通信機構(ネットワーク機構600)の構成例を示す図であり、この第1実施例では、図4に示すように、既存技術との差を明確にするため、ネットワーク機構600は、単なる共通バス601によるプロセッサ間結合により構成されるものとする。
この第1実施例では、バケット平坦化のためのインテリジェンスは、全てプロセッサ(S−DPr400A〜400C,T−DPr700A〜700C)側に置く。このため、プロセッサ間結合機構としてのネットワーク機構600は、多段網等の特定のトポロジや機能が期待されることなく、物量などの要求に対して最適なハードウエア構成を採用することができる。
【0147】
ここで、共通バス601は、各プロセッサ400A〜400C,700A〜700Cから送出されたデータ内容は、全てのプロセッサ400A〜400C,700A〜700Cに対して同報される。そして、前述した通り、各プロセッサ400A〜400C,700A〜700C(入力ポート回路403,703)は、その同報データの中の宛先プロセッサ識別子フィールドを参照し、自プロセッサ宛でないデータを破棄している。なお、共通バスベースのプロセッサ間結合機構については同業者にとって自明であるので詳細な説明は行なわない。
【0148】
図5は第1実施例におけるプロセッサ間で送受されるデータのフォーマットを示す図で、この図5において、500は制御情報フィールドで、この制御情報フィールド500には、既存技術とは異なり、ネットワーク機構600に対して平坦化処理のための特別な動作を命ずるための情報は含まれていない。
また、501は宛先プロセッサ識別子を格納するフィールドで、このフィールド501に格納される宛先プロセッサ識別子を各プロセッサ400A〜400C,700A〜700Cの入力ポート回路403,703にて参照することにより、自プロセッサ宛の送信データであるか否かが判定されるようになっている。
【0149】
502は送信元プロセッサのプロセッサ識別子を格納されるフィールドで、このフィールド502に格納されるプロセッサ識別子は、障害発生時以外使用されないものである。
503は当該データがいずれの業務のために送信されたものであるかを示す情報を格納するフィールド、504はバケットIDを格納するフィールド、505はタプルデータを格納するフィールドである。
【0150】
図6は第1実施例におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図であり、前述した通り、図6に示す第1実施例の各T−DPr700A〜700Cは、図2に示した各S−DPr400A〜400Cと同様に構成されて、S−DPrの機能とT−DPrの機能とを一つのプロセッサで兼ねることが可能になっている。
【0151】
また、図6において符号701〜714,716を付して示される構成要素は、それぞれ図2により前述した符号401〜414,416を付した構成要素とほぼ同じものである。
ただし、各T−DPr700A〜700Cが各S−DPr400A〜400Cと異なる点は、転送宛先プロセッサ決定用テーブル420を主記憶部702上に有していない点と、入力ポート回路703がマイクロプロセッサ701から見て動作することがある一方で出力ポート回路704が使用されることがない点との2つである。
【0152】
次に、上述のごとく構成された第1実施例の装置における各S−DPr400A〜400Cの動作アルゴリズムを、図7を参照しながら説明する。
(1) 各S−DPr400A〜400Cのマイクロプロセッサ401は、このS−DPr400A〜400Cに結合されているI/O装置408〜410のファイルディレクトリ(File Directory)402Aを参照して当該業務の処理対象であるテーブルの格納位置を入手し、該領域からデータを読み出すことを、I/Oバス駆動装置405〜407の適当なものに指示する(ステップ401A;“Issue Read Request”) 。この指示には、対象となるI/O装置408〜410の識別子,装置内の格納アドレス,読み出しデータの主記憶部402内の格納アドレス〔図7中のI/Oバッファ402Bのアドレス〕が含まれている。
【0153】
(2) I/O処理が終了すると、マイクロプロセッサ401は、I/Oバッファ領域402B中に格納されたデータに対して、図示しない制御プロセッサから入力線416を経由して予め伝達された選択条件(Condition for SELECT)402Cにより記述される、タプル内における以後の処理に必要なフィールドの選択・抽出〔即ち関係代数でいうリストリクション(Restriction)とプロジェクション(Projection)〕を実行する(ステップ401B)。なお、上述の選択条件402Cは、例えばSQLのような記述言語で記述されてもよいし、もっと低いレベルの言語であってもよいし、あるいは、マイクロプロセッサ401で走行するプログラムそのものであってもよい。詳細は技術の本質に関係ないので、その説明は省略する。
【0154】
(3) 上記処理で抽出された個々のタプルに対して、マイクロプロセッサ401は、次にハッシュ処理を行ない(ステップ401C;“Hash”)、このタプルが属するバケットのID(所定評価関数の出力値)を決定する。
以上の(1) 〜(3) の動作は、図43により説明した既存技術の動作と全く同様である。
【0155】
(4) バケットIDの決定後、マイクロプロセッサ401は、転送宛先プロセッサ決定用テーブル420の参照すべき行をバケットIDにより決定し、その行の中で最も小さな欄(最も小さなカウント値を記入されている欄)を求める。図3に示す例で説明すると、バケットIDが“5”である時、第5行(先頭行はバケットID“0”に対応する第0行とする)が参照すべき行であり、その内容が図3に示すようなものであったとすると、最も小さな値“15”を記入されている第3列(同様に先頭列は第0列とする)が選択され、変換1次元リスト421により列番号がプロセッサIDに変換されて宛先プロセッサ(T−DPr)の識別子“1F”(ヘキサデシマル)が得られる(ステップ401D;“Scan Row &Fix T−DPr”)。
【0156】
(5) マイクロプロセッサ401は、上記処理により特定されたテーブル420の第5行第3列の内容を1だけインクリメントし、その内容を“15”から“16”に変更する(ステップ401E;“Increment Table 420 ”)。つまり、テーブル420の内容は、各列に対応するT−DPr(700A〜700C)に各行に対応するバケットIDをもつタプルデータをいくつ転送したか表すものとなっている。上記処理により、T−DPr群700に属するどのT−DPr700A〜700Cに対しても、各S−DPr400A〜400Cから送出されたデータに関しては、あるバケットIDをもつタプルはほぼ等しい個数(±1の誤差範囲)だけ転送される。
【0157】
(6) 次に、マイクロプロセッサ401は、当該S−DPr400A〜400Cのプロセッサ識別子,業務識別子(タスクID),バケットID,上記宛先T−DPrのプロセッサ識別子およびタプルデータから、送出されるべき転送データを図5に示したフォーマットで主記憶部402内に作成する(ステップ401F;“Form Send Data”)。
【0158】
(7) そして、マイクロプロセッサ401は、主記憶部402中の転送データの先頭アドレスを示して出力ポート回路404に対して出力処理を指示する(ステップ401G;“Issue Send Request”)。
(8) 以上の動作を、当該S−DPr400A〜400Cに結合されているI/O装置408〜410に格納されている処理対象テーブル中の全てのタプルを読み出し終わるまで繰り返し、図示しない制御プロセッサに対して処理の終了を報告する。
【0159】
次に、上述のごとく構成された第1実施例の装置における各T−DPr700A〜700Cの動作アルゴリズムを、図8に示す。この図8に示すように、本実施例の各T−DPr700A〜700Cの動作アルゴリズムは、図44にて示した既存技術におけるT−DPr側動作アルゴリズムと同じである。
異なる点は、入力ポート回路703が自プロセッサ宛の転送データの到着を確認してマイクロプロセッサ701に通知するというインテリジェンスをもたなければならない点のみである。
【0160】
つまり、入力ポート回路703が自プロセッサ宛の転送データの到着を確認した後、既存技術と全く同様の動作アルゴリズムで、各T−DPr700A〜700Cは動作することになるので、その詳細な説明は省略する〔詳細については図44による説明、項目(E1)〜(E4)参照〕。
なお、図8において符号702A〜702Gを付して示される構成要素は、それぞれ図44により前述した符号302A〜302Gを付した構成要素と全く同じものであり、図8におけるステップ701A〜701Dによる処理は、それぞれ図44におけるステップ301A〜301Dによる処理と全く同じである。
【0161】
このように、本発明の第1実施例の並列プロセッサ装置によれば、以下のような効果が得られる。
主要な効果は、ネットワーク機構600の部分のハードウェア物量の低減である。既存技術では、上記の通り多段網による構成が必須であり、かつスイッチングユニットに要求されるインテリジェンスがかなり高いものであるため、当然、物量が増大する。これに対して、上述した通り、第1実施例の並列プロセッサ装置では、多段網であろうが共通バスであろうが、ネットワーク機構600に関して特に特別な機構や機能を必要としなくなる。
【0162】
特に、問題になるのは必要な作業メモリとしてのメモリ以外の論理回路物量である。メモリ量については、上述した通り既存技術ではスイッチングユニット内のレジスタ領域の容量和がプロセッサ台数nに対してn2 log nオーダであるのに対して、本実施例における代替物である転送宛先プロセッサ決定用テーブル420の容量和はn3 オーダであり、むしろ拡大している。しかし、現在メモリの容量に対するコストは十分に低く、一方、論理回路は開発コストも含めて考えると同量のトランジスタ数ではメモリとは比較にならない程高いコストになる。
【0163】
例えば、既存技術ではスイッチングユニット内にS−DPr/T−DPrと同じ種類のマイクロプロセッサを使用する可能性すらあり、この場合には全体のコスト(システムコスト)は少なくともプロセッサ側コストの(1+log n)倍となる。nが数百のオーダである時、この値はシステムコストがプロセッサ側コストの6〜7倍以上となる可能性があることを示唆している。
【0164】
一方、nが数百の程度になっても、転送宛先プロセッサ決定用テーブル420の容量は1プロセッサ内では精々数MBのオーダであり、これはコストで言えば高性能プロセッサチップ1個にも満たない。つまり、本実施例によれば、追加されるシステムコストはプロセッサ側の元々のコストに達せず、コスト上の有利点は明らかである。
【0165】
(b)第2実施例の説明
(b1)第2実施例において必要な構成要件
第2実施例は、第2発明の並列プロセッサ装置にかかる技術で、この第2実施例で必要な構成要件は、下記(1) 〜(9) の通りである。
(1) 上記第1実施例と同様に、T−DPrの識別子およびバケットIDによりその要素(カウント値)が決定されるカウンタテーブル(転送宛先プロセッサ決定用テーブル)が、S−DPr内に関連する業務単位に設けられる。
【0166】
(2) S−DPr内には、ある業務についての送信先T−DPr個々に対応して送信データをそのエントリとする待ち行列機構(転送キュー)が一つずつ作成される。各転送キューの管理アルゴリズムについて、特にFIFO型メモリが採用される必要はないが、原則として途中離脱のない、キュー長の定常期待値については、各転送キューがFIFO型メモリで管理された場合と同じ値になる制御アルゴリズムが採用されなけばならない。
【0167】
(3) 各転送キューについて「未だ転送されていないタプルの数」を同一S−DPr処理のために行なわれる「転送宛先プロセッサを決定する処理」に対して通知する機構〔各転送キューに蓄積される転送対象エンティティ(タプル)の数を検出する蓄積数検出手段〕が準備される。
(4) 「転送宛先プロセッサを決定する処理」は、1タプルのハッシュ値(バケットID)が決定すると、上記転送宛先プロセッサ決定用テーブル中のこのバケットIDにより、アクセスできる各要素(各T−DPrに対応する)の中で最も現在の値が小さい要素を探し、これに対応するT−DPrをこのタプルが送付されるべき宛先プロセッサに決定する。
【0168】
(5) この後、S−DPrは、転送宛先プロセッサ決定用テーブル上の当該バケットIDおよび当該転送宛先T−DPrとに対応する要素に対して、当該業務および当該T−DPrに対応する転送キューに内に現在蓄積されている「未だ転送されていないタプルの数」に1(該時点で転送宛先が決定したタプルの分)を加算した値にさらに0以外の正の整数を乗算した値を加算する。
【0169】
(6) S−DPrからT−DPrへのデータ転送が実際に行なわれるトリガは、T−DPr側から与えられる。つまり、各T−DPrは、各S−DPrに対して「1単位(第2実施例では1タプル)の送信を行なえ」という趣旨のトリガ信号を発行することができる。このトリガ信号を受理したS−DPrは、送信すべきデータ(当該業務および当該T−DPrのためのデータであって、且つ、上記転送キュー中に存在する未だ転送されていないデータ)が存在するならばT−DPrからの指示に従って、当該S−DPrから当該T−DPrに対して1単位のデータを送信する。送信後、当該S−DPrは、対応する転送キュー中に存在する「未だ転送されていないデータの数」を転送された1タプル分減少させる。
【0170】
(7) もし、上記トリガ信号が送付された時、当該S−DPr中に当該T−DPrに対する未転送データが存在しないならば、当該S−DPrは、「転送されるべき転送データが現在存在しない」旨の応答を当該T−DPrに応答してデータ転送を行なわない。
(8) T−DPr(正確には該業務についてT−DPrとしての動作が指示されている物理プロセッサ)中の当該業務のT−DPrとしての動作を行なうプロセスは、当該業務に関するS−DPr群に属する各S−DPrに対し、等しい頻度で上記転送処理のためのトリガ信号を送付する。
【0171】
(9) T−DPrからS−DPr群への上記トリガ信号の発行は、T−DPr側処理の進捗上新たなるデータを入力することが可能な状況になった時点で行なわれる。つまり、T−DPrとしての処理速度と上記トリガ信号の発行頻度とはある程度長い時間で見れば比例する。
(b2)第2実施例の正当性の説明
上述のような構成要件をもつ第2実施例では、各T−DPrが各S−DPrに対して均等に上記トリガ信号を送付し、この頻度がある程度長い時間で見れば該T−DPrの動作速度(該業務およびT−DPrとしての処理速度)に比例するならば、あるS−DPrから見て上記トリガ信号の到来する頻度は、各T−DPrの動作速度、あるいは、当該業務のT−DPrとしての演算性能に比例することになる。
【0172】
S−DPrが業務毎かつT−DPr毎に対応して作成する待ち行列機構(転送キュー)の長さは、各転送キューヘのタプル投入頻度を上記トリガ信号が対応するT−DPrから当該業務のために送付される頻度で割った値ρにより、ほぼρ/(1−ρ)で近似することができる。
もし、S−DPr側の宛先決定アルゴリズムが「どのT−DPrに対しても単一業務ついては等しい待ち行列長になるように制御する」というものであるならば、ρ0 /(ρ0 −1)=ρ1 /(1−ρ1 )が成立し、0≦ρ0 ,ρ1 ≦1であるから、即ちρ0 =ρ1 ということになる。これは「転送キューへのタプル投入頻度と該転送キューに対応するT−DPrの処理性能が比例する」ことを意味する。
【0173】
ただし、待ち行列長の瞬間的な値は必ずしも上記T−DPrの演算性能に比例しない。ある業務に関するS−DPr側プロセスの走行タイミングとT−DPr側プロセスの走行タイミングとがずれただけで簡単に待ち行列長が伸びてしまうからである。待ち行列の評価も時間軸上の平均が必要で、待ち行列長を加算した値が等しくなるように制御することにより、これを達成することができる。
【0174】
転送キューへのタプル投入頻度は、即ち該S−DPrからT−DPrへの送信頻度であり、これがT−DPr側の処理性能と比例するということは、S−DPrから各T−DPrへの送信量がT−DPr側の処理性能に比例した配分になっているということである。T−DPr側の処理性能は、T−DPrのMIMDのスキューや生成率のスキューを加味した総合性能で評価されるから、本発明の目的の一つである「生成率のスキューおよびT−DPr側のMIMDのスキューへの対応を可能にすること」が実現されることになる。
【0175】
(b3)第2実施例の実装形態の説明
図9は本発明の第2実施例としての並列プロセッサ装置の全体構成を示すブロック図で、この図9において、800は複数のS−DPr800A,800B,…,800CからなるS−DPr群、600は第1実施例と全く同様構成のものでS−DPr群800に属するS−DPr800A〜800Cのうちの任意のものから後述するT−DPrの任意のものへデータ送信を行ないうるネットワーク機構、900は複数のT−DPr900A,900B,…,900CからなるT−DPr群である。
【0176】
また、図10は第2実施例におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図で、この図10に示す通り、各S−DPr800A〜800Cのハードウエア構成は、符号830〜832を付した構成要素を除けば、図2に示した第1実施例のものと同様である。つまり、図10において符号801〜814,816,820を付して示される構成要素は、それぞれ図2により前述した符号401〜414,416,420を付した構成要素と同じものである。
【0177】
以下に、第2実施例の各S−DPr800A〜800Cの構成について、第1実施例と異なる点のみを説明する。
入力ポート回路803は、第2実施例においてはマイクロプロセッサ801から見て動作している。つまり、T−DPr900A〜900C側からの送信トリガ信号が入力ポート回路803に投入されると、この入力ポート回路803は、その内容を後述するアルゴリズムに従ってマイクロプロセッサ801に伝達する。
【0178】
また、転送宛先プロセッサ決定用テーブル820、および、このテーブル820の列の識別子をT−DPrのプロセッサ識別子に変換する変換1次元リスト(第2実施例では図示せず)の構成自体は、第1実施例のテーブル420およびリスト421と同様であるが、テーブル820の内容の更新アルゴリズムについては後述するように差がある。
【0179】
そして、第2実施例の各S−DPr800A〜800Cの主記憶部802上には、ある一つ業務についての送信先T−DPr900A〜900C個々に対応して送信データ(タプル)をそのエントリとする転送キュー(待ち行列機構)830〜832がそなえられている。
図11は第2実施例における転送キューの構造の一例を示す図で、この図11に示す転送キューの構造は、第2実施例における転送単位(図5に示した第1実施例のものと同じ転送単位)を双方向のポインタで結合したものとする。この構造は、各転送キュー830〜832に共通のものであり、個々の業務およびT−DPr900A〜900Cに対応してこれらの転送キュー(待ち行列構造)が1つ作成されている。
【0180】
この例では、一度、転送キュー830〜832に投入された転送データ(SendData)840が転送されずに転送キュー830〜832の途中からデキューされることはないものとする。
また、新たに転送データ840が各転送キュー830〜832にエンキューされる場合、その転送データ840は、このリスト構造末尾に接続され、図11に示すキュー長(Queue Length)フィールド841の内容に1だけ加算される。一方、新たに転送データ840が各転送キュー830〜832からデキューされる場合、その転送データ840は、このリスト構造の先頭からデキューされ、図11に示すキュー長フィールド841の内容から1だけ減算される。
【0181】
上述した「未だ転送されていないデータの数」(未転送データ量,未転送タプル数)とは、キュー長フィールド841に保持される値であり、このフィールド841の値を読み取ることにより、各S−DPr800A〜800Cとしての処理を行なうプロセス(マイクロプロセッサ801)は、この業務および各T−DPr900A〜900Cに対する未転送のデータの数を知ることができる。
【0182】
従って、上記プロセス(マイクロプロセッサ801)から読み取ることが可能にキュー長フィールド841を作成することにより、前述した蓄積数検出手段〔各転送キュー830〜832に蓄積される転送対象エンティティ(タプル)の数を検出するもの〕が構成されることになる。
なお、図11において、842は各転送キュー830〜832の先頭位置を示すポインタ(Top of Queue Pointer)、843は各転送キュー830〜832の末尾位置を示すポインタ(Bottom of Queue Pointer)、844は各転送データ840に付され前のエントリ位置を示すポインタ(Previous Entry Pointer)、845は各転送データ840に付され次のエントリ位置を示すポインタ(Next Entry Pointer)、846は各転送データ840に付されその転送データ840についてのバイト数(Byte Count of Send Data)を保持するフィールドである。
【0183】
図12は第2実施例におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図で、この図12に示す通り、各T−DPr900A〜900Cのハードウエア構成は、符号922〜923を付した構成要素を除けば、図6に示した第1実施例のものと同様である。つまり、図12において符号901〜914,916を付して示される構成要素は、それぞれ図6により前述した符号701〜714,716を付した構成要素と同じものである。従って、第2実施例においても、S−DPrの機能とT−DPrの機能とを一つのプロセッサで兼ねることが可能になっている。
【0184】
以下に、第2実施例の各T−DPr900A〜900Cの構成について、第1実施例と異なる点のみを説明する。
出力ポート回路904は、前述の送信トリガ信号を各S−DPr800A〜800Cへ送付するためにマイクロプロセッサ901からの指示で動作するようになっている。
【0185】
また、全てのS−DPr800A〜800Cに対して等しい頻度で上記送信トリガ信号を送付するために、この第2実施例では、ラウンドロビン方式で送信トリガ信号を送付する対象(S−DPr800A〜800C)を決定するものとする。
そこで、第2実施例の各T−DPr900A〜900Cの主記憶部902上には、ラウンドロビン方式を実現するために、ラウンドロビンポインタ922と、S−DPr内の相対機番を物理プロセッサの絶対識別子に変換するための1次元テーブル923とがそなえられ、ラウンドロビンポインタ922が、1次元テーブル923上の位置を順次指し示し、このラウンドロビンポインタ922による指示位置の相対機番に対応したS−DPr900A〜900Cへ、上記送信トリガ信号が送付されるようになっている。
【0186】
これらのラウンドロビンポインタ922および1次元テーブル923の詳細な構造の例を図13に示す。この図13に示すように、第2実施例では、1次元テーブル923は、ラウンドロビンポインタ922の内容によりアクセスされ、S−DPr内の相対番号を物理プロセッサの識別子に変換するようになっている。ここで、1次元テーブル923には、当該業務に参加するS−DPr800A〜800Cの台数分、例えばn台分の物理プロセッサの識別子がそれぞれ識別子フィールド923−0〜923−(n─1)に保持されるとともに、その台数情報(the Number of S−DPrs)が台数情報フィールド923Aに保持されている。
【0187】
また、ラウンドロビンポインタ922の示す値は、送信トリガ信号をS−DPrへ送付する都度、1ずつインクリメントされ、台数情報フィールド923Aに保持される値nに応じて、“0”から“n−1”まで増加すると、再び“0”に戻るようになっている。
次に、上述のごとく構成された第2実施例の装置における各S−DPr800A〜800Cの動作アルゴリズムを、図14および図15を参照しながら説明する。
【0188】
(1) 図14は、各S−DPr800A〜800Cが、自プロセッサ配下のI/O装置808〜810からタプルデータを読み出し、そのタプルデータを転送するために、転送キュー830〜832のいずれかに投入するまでの処理の流れを示している。第2実施例では、この処理と実際の転送処理とは、非同期的に実行され、独立した処理となる。
【0189】
(2) 各S−DPr800A〜800Cの動作は、ハッシュ処理を行ないバケットIDを求める所までは、前述の既存技術の場合の例と同じである。
(3) さらに、転送宛先プロセッサ決定用テーブル820を使用して宛先プロセッサ(T−DPr)を決定する論理も第1実施例のために使用したものと同じである。つまり、図14において符号802A〜802Cを付して示される構成要素は、それぞれ図7により前述した符号402A〜402Cを付した構成要素と全く同じものであり、図14におけるステップ801A〜801Dによる処理は、それぞれ図7におけるステップ401A〜401Dによる処理と全く同じである。
【0190】
(4) マイクロプロセッサ801は、以上の処理により特定されたテーブル820の特定要素の値に対して、上記処理により決定された宛先T−DPrに対応する転送キュー(ここでは符号830を対象とする)のキュー長フィールド841の値に1を加えたもの(1を加える理由は、この後、この宛先決定処理の直接の対象である1タプルをエンキューするから)を加算して更新する(ステップ801E;“Update Table 820”)。
【0191】
前述した通り、このような更新処理を行なうことにより、転送宛先プロセッサ決定用テーブル820の各要素の値は、対応するT−DPr900A〜900Cの演算性能に比例した重み付けを加えられた上で、どのバケットIDに関してどれだけの負荷を各T−DPr900A〜900Cに対して与えたかを概ね示す指標となる。そして、本実施例では、このような転送宛先プロセッサ決定用テーブル820の各要素の値が、あるバケットID内で、どのT−DPrについてもできるだけ等しくなるように制御されることになる。
【0192】
(5) なお、転送データフォーマットは、図5に示した第1実施例のものと同一であり、その転送データの作成作業も第1実施例の説明で記述したものと同じである(ステップ801F;“Form Send Data”)。
(6) そして、マイクロプロセッサ801は、特定された宛先T−DPrに対応した転送キュー830にこの転送データをエンキューする(ステップ801G;“Enqueue Send Data ”)。以後、実際にこの転送データがT−DPr900A〜900Cに送信される作業は、各T−DPr900A〜900C側から上記送信トリガ信号が送付されるのを待ち、そのトリガ信号が到着して初めて行なわれる。
【0193】
(7) 実際に転送データをS−DPr800A〜800C側からT−DPr900A〜900C側へ送付する処理手順が、図15に示されている。T−DPr900A〜900C側から送信処理開始を指示する上記トリガ信号(Trigger Signal)が送信されてくると、入力ポート回路803は、そのトリガ信号の到着をマイクロプロセッサ801に対して割り込みにより伝達する。マイクロプロセッサ801の取込み許可応答により、入力ポート回路803は、マイクロプロセッサ801が示した主記憶部802上のアドレスに、トリガ信号としての電文1100Aを格納する。図16に、このトリガ信号のための電文1100Aのフォーマットの一例を示す。
【0194】
(8) 図16において、1100は符号290,500を付して前述したものと同様の制御情報フィールドで、この制御情報フィールド1100に、転送データが以下に示すフォーマットであることが記述される。1101は宛先S−DPr(つまり、ここで注目しているプロセッサ)の物理プロセッサ識別子を保持するフィールド、1102は発信者であるT−DPr900A〜900Cの物理プロセッサ識別子を保持するフィールド、1103は各T−DPr900A〜900C上で走行するソフトウェアが記入した電文内容で上記トリガ信号たることを示す内容が記述されるフィールドである。この第2実施例では、1つのトリガ信号に対して固定個数(例えば1タプル)の送信単位しか転送しないので、図16に示す電文フォーマットには、転送されるべきデータ個数あるいは長さを指示するフィールドは設けられていない。
【0195】
(9) マイクロプロセッサ801は、主記憶部802に格納された電文1100Aのフィールド1103を参照することにより、この電文1100Aが送信トリガ信号であることを知り、同様にフィールド1102を参照することにより送信が行なわれるべき対象の宛先T−DPr識別子を知る。
(10)マイクロプロセッサ801は、送信トリガ信号の送信元であるT−DPrに対応する転送キュー830(または831,832)を参照し、そのキュー長フィールド841の値が“0”であるか否かを判断する。もし“0”であった場合、マイクロプロセッサ801は、「送信すべきデータがないために即時終了とする」旨の電文を作成し、これを送信トリガ信号の送信元T−DPrに返送する。この電文のフォーマットは図16に示したものと同様であるが、フィールド1103内部に上記趣旨を記述したコードが記入されるものとする。
【0196】
(11)もし送信トリガ信号が送付された時点で対応する転送キュー830内に未送信データが蓄積されていた場合、つまり、キュー長フィールド841の値が“0”でなかった場合、マイクロプロセッサ801により、1タプル分に相当する転送データが転送キュー830からデキューされ、その転送データが送信トリガ信号の送信元T−DPrに送付される。
【0197】
即ち、マイクロプロセッサ801は転送キュー830の先頭から1エントリ(1タプル)をデキューし(ステップ801I;“Dequeue 1 Tuple ”)、その先頭アドレスと長さとを出力ポート回路804に伝達することにより、デキューされた転送データの送出を指示する(ステップ801J;“Issue Send Request”)。そして、出力ポート回路804は、その転送データを主記憶部802から取り出して、送信トリガ信号の送信元T−DPrへ送出する。
【0198】
なお、デキュー処理は図11により説明した通りであるので、その詳細な説明はここでは省略する。また、T−DPr識別子から転送宛先の物理プロセッサIDへの変換処理は、第1実施例と同様に、転送宛先プロセッサ決定用テーブル820に付属するリスト構造(図示せず)により行なわれるので、その詳細な説明は省略する。
【0199】
次に、上述のごとく構成された第2実施例の装置における各T−DPr900A〜900Cの動作アルゴリズムを、図17に示す。
(1) S−DPr800A〜800Cからデータが送付された後の各T−DPr900A〜900Cの動作は、図8にて説明した第1実施例の動作つまりは図44にて説明した既存技術の動作と同様であるので、その説明は省略する。
【0200】
(2) この第2本実施例では、各T−DPr900A〜900Cのマイクロプロセッサ901(T−DPrとしての機能を実現するプロセス)は、自プロセッサが新たなデータを受理できる状況になると、主記憶部902のラウンドロビンポインタ922にアクセスし、次にデータ送信のためのトリガ信号を送付する対象であるS−DPrの相対機番を知り、その相対機番に対応するS−DPrを送信トリガ信号送付先として選択する(ステップ901A;“Select S−DPr to betriggered”)。
【0201】
(3) この後、マイクロプロセッサ901は、ポインタ922の示す値を1だけインクリメントして更新する(ステップ901B;“Update Round Robin Pointer”)。このポインタ922の示す値は、前述した通り、テーブル923内部にあるS−DPr台数(台数情報フィールド923Aの値)nから1を減算した値“n−1”と等しくなると、次にはマイクロプロセッサ901により“0”にリセットされる。
【0202】
(4) 一方、マイクロプロセッサ901は、ラウンドロビンポインタ922の示す値からトリガ信号送付先の相対機番を選択すると、テーブル923にアクセスしてその相対機番をS−DPrの物理プロセッサ識別子に変換してから(ステップ901C;“Convert S−DPr ID to Physical Processor ID ”)、図16に示した構成による上記トリガ信号のための送信データ(電文)を作成し(ステップ901D;“Form Send Data”)、その電文を、選択されたS−DPrに対して送付する(ステップ901E;“Issue Send Request”)。なお、この送付処理の詳細は上記各例と同様であるので、その説明は省略する。
【0203】
このように、本発明の第2実施例の並列プロセッサ装置によれば、以下のような効果が得られる。
主要な効果は、任意の理由によるT−DPr900A〜900Cの性能の差に対して、統計的手法ではあるもののこれを相殺する方向に自動的かつ動的に調整が行なわれることである。発明者が行なったミュレーションでは、このことによる性能向上率は、勿論動作環境やデータおよびハッシュ関数への依存性はあるものの数十%から数百%にも及ぶことが確認された。
【0204】
なお、上述の記載で「任意の理由」としているが、当然、本発明では、MIMDのスキューや生成率のスキューを主要な対象と想定している。しかし、これ以外にも障害発生によるT−DPr900A〜900C側の縮退運転発生やDASDフラグメンテーションを原因とする性能低下など、全ての理由に対して、本実施例は原理的に有効である。
【0205】
(c)第3実施例の説明
(c1)第3実施例において必要な構成要件
第3実施例は、第2実施例と同様構成の並列プロセッサ装置において、S−DPrからT−DPrへの転送単位を複数のタプルデータの集合体としたもので、この第3実施例で必要な構成要件は、下記(1) 〜(3) の通りである。
【0206】
(1) 上記第2実施例において、S−DPr800A〜800CからT−DPr900A〜900Cへの1転送処理において転送されるタプル数を複数個とする。この値は、少なくともあるS−DPrから見てどのT−DPr900A〜900Cに対しても等しい値でなければならない。
(2) 上記一度の転送処理で転送されるタプル個数をmとすると、これらm個のタプルをもつタプル群は、上記第2実施例に示した転送対象のT−DPr900A〜900C毎に対応して作成される各転送キュー830〜832において、先頭からm個のタプルデータに対応する。
【0207】
(3) あるS−DPrにおいて、あるT−DPrに対応する転送キュー内に上記m個(第3実施例により1度に転送されるべきタプルの個数)のタプルが蓄積されていない場合に、もしこのT−DPrから上記トリガ信号が送付された時には、当該S−DPrは「転送を行なうに十分な量の転送データが蓄積されていない」旨の応答をT−DPrに行なって、データ転送は行なわない。
【0208】
(c2)第3実施例の正当性の説明
上述のような構成要件をもつ第3実施例では、既存技術では平坦化処理を行なう単位は1タプル単位になっている。その理由は、ネットワーク機構(図36の符号200参照)においてバケットIDを見て動的にスイッチング方向を決定するため、少なくとも転送単位内でバケットIDは全て等しくなければならず、かつ複数の同じバケットIDのタプルをブロッキングして転送することは以下のデメリットをもつからである。
【0209】
(1) 同一のバケットIDをもつタプルを複数個集めるために幾つのタプルを読まねばならないかは平均期待値のみ定まるもののバラツキのある事象である。これを行なうことによりブロッキングのための主記憶バッファを準備しなければならなくなる。
(2) 同様に上記のようなバラツキのある事象について固定個数のタプルを集めないと転送できないとすると、固定個数のタプルがどのバケットIDに対しても集まらず転送が開始できない時間が大幅に増加する可能性がある。一方、転送が開始されると連続して転送が可能となる場合もあり、ネットワーク上の負荷が時間的に大幅に変動する要素が増加する。
【0210】
(3) 入出力レジスタは転送単位を全て格納する大きさが必要であるから、ブロッキングして転送することは全てのスイッチングユニット(図37,図38の符号201〜212参照)における物量の増加を意味する。
従って、このような既存技術においては、転送のためのオーバヘッドが多少大きくとも1タプル単位での転送が必要であった。
【0211】
一方、上述した第2実施例において、転送対象のT−DPr900A〜900Cに対応する転送キュー830〜832内では、異なるバケットIDをもつタプル群が任意の順序で並び得る。もし、これらを一括して転送したとしても個々のタプルに既にバケットIDを添付している以上、タプル群を受理した側のT−DPrT−DPr900A〜900Cで増加する処理はたかだかこれらのタプルをブロッキングされた状態から分解するのみであって、処理の増加はほとんどなく、且つプロセッサ間の転送に対する悪影響も少ない。追加されるべきブロッキングバッファも不要である。ただし、T−DPr900A〜900Cからのトリガ信号に対して「送信すべきデータがない」という判断が「タプルの有無」から「一定個数のタプルが蓄積されているか」に変わるのみである。
【0212】
勿論、物量増加は、転送キュー830〜832の平均容量,各プロセッサ800A〜800C,900A〜900Cの入力ポート回路803,903および出力ポート回路804,904中のバッファ容量などに発生するが、その物量増加は既存技術の場合と比較して少なくとも1/log n以下である。ネットワーク機構600に対する負荷増減の悪影響も小さい。従って、転送処理オーバヘッドを小さくすることができる効果を享受することが可能である。
【0213】
(b3)第3実施例の実装形態の説明
この第3実施例の並列プロセッサ装置の全体構成は、図9に示した第2実施例のものと全く同様であるので、その説明は省略する。第3実施例と第2実施例とで異なる点は、各S−DPr800A〜800Cおよび各T−DPr900A〜900Cの内部構成にあるので、以下、図18,図19を参照しながら、各S−DPr800A〜800Cおよび各T−DPr900A〜900Cの内部構成について説明する。
【0214】
図18は本発明の第3実施例としての並列プロセッサ装置におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図で、この第3実施例における各S−DPr800A〜800Cも、図10に示した第2実施例のものとほぼ同様に構成されているが、第3実施例では、主記憶部802に送信バッファ850が新たに追加されている点のみが異なっている。なお、図18中、図10にて記載した符号と同一の符号は同一部分を示しているので、その説明は省略する。
【0215】
ここで、送信バッファ850は、上述した一括転送処理によりT−DPrへ転送されるべき複数のタプルからなる転送データ(タプル群)を作成・格納するためのものである。
この送信バッファ850の領域は、各T−DPr900A〜900Cから送信トリガ信号が当該S−DPrに送付され、当該S−DPr側でこれに応えてデータ送信を行なうことが決定された時点で、マイクロプロセッサ801により主記憶部802内に取得される。
【0216】
そして、マイクロプロセッサ801が、転送キュー830〜832のうち転送先T−DPrに対応するものから、上記予め定まった個数のタプルをデキューして送信バッファ850内に格納することにより送信データが作成されるようになっている。
また、マイクロプロセッサ801は、送信バッファ850内に作成された転送データ(タプル群)の送信時に、送信バッファ850の先頭アドレスと容量とを出力ポート回路804に伝達し、これを送出させる。
【0217】
一方、図19は本発明の第3実施例としての並列プロセッサ装置におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図で、この第3実施例における各T−DPr900A〜900Cも、図12に示した第2実施例のものとほぼ同様に構成されているが、第3実施例では、主記憶部902に受信バッファ950が新たに追加されている点のみが異なっている。なお、図19中、図12にて記載した符号と同一の符号は同一部分を示しているので、その説明は省略する。
【0218】
ここで、受信バッファ950は、上記一括転送処理により各S−DPr800A〜800Cから転送されてきた複数のタプル(タプル群)を格納するためのものである。
この受信バッファ950の領域は、各T−DPr900A〜900Cから各S−DPr800A〜800Cに対して転送を指示する送信トリガ信号を送信する時に、マイクロプロセッサ901により取得されて主記憶部902上に準備される。
【0219】
そして、S−DPr側からの転送データが当該T−DPrに到着した時点で、マイクロプロセッサ901がそのアドレスを入力ポート回路903に指示することにより、複数のタプルをその内に含む転送データを格納するようになっている。
図20は、第3実施例における転送データフォーマットの一例を説明するための図であり、この図20に示すものと同様のフォーマットにより、各S−DPr800A〜800C側の送信バッファ850、および、各T−DPr900A〜900C側の受信バッファ950が作成されるものとする。
【0220】
図20において、2100は通信のための制御情報フィールドであり、符号290,500,1100を付して前述したものと同様に転送データのフォーマットを記述するものである。
また、2101はこの転送データの発信源であるS−DPrのプロセッサ識別子を保持するフィールド、2102はこの転送データの送信先であるT−DPrのプロセッサ識別子を保持するフィールド、2103はこの転送データがいずれの業務のために転送されようとしているのかを示す業務識別子を保持するフィールド、2104は以下の転送されるべきデータ本体の容量値を保持するフィールドである。このフィールド2104に保持される容量値は、このフィールド2104直後のデータから以後の全てのデータのバイト数とする。
【0221】
さらに、2110〜2130は個々のタプルに対応するデータを保持するフィールドである。各フィールド2110〜2130における各タプルに対応するデータのフォーマットをフィールド2110を例にとって説明すると、そのフィールド2110には、バケットIDを保持するフィールド2111と、タプルデータ部分の長さを保持するフィールド2112と、実際のタプルデータを保持するフィールド2113とがある。
【0222】
次に、上述のごとく構成された第3実施例の装置における各S−DPr800A〜800Cの動作アルゴリズムを説明する。第3実施例の各S−DPr800A〜800Cでは、送信部分の制御が一部異なるだけであるので、詳細な図示は省略し、第2実施例と異なる部分についてのみ説明する。
あるT−DPr900A〜900Cから前述のトリガ信号が送付されたS−DPrは、予め定められた個数のタプルが、転送を要求したT−DPrに対応する転送キュー830〜832に蓄積されているならば転送を行ない、そうでなければ「転送を行なうに十分な量の転送データが蓄積されていない」旨の応答をT−DPrに行なって、データ転送は行なわない。
【0223】
データ転送時には、当該S−DPrのマイクロプロセッサ801は、送信バッファ850を主記憶部802上に作成し、予め定められた個数のタプル群を上記転送要求を発生したT−DPrに対応する転送キュー830〜832からデキューし、図20に示したフォーマットの転送データを送信バッファ850中に作成する。
【0224】
送信バッファ850中に転送データを作成する作業が終了すると、マイクロプロセッサ801は、送信バッファ850の先頭アドレスと容量を出力ポート回路804に通知して転送を行なう。
そして、転送が終了すると、マイクロプロセッサ801は、主記憶部802上の送信バッファ850を解放する。
【0225】
さらに、上述のごとく構成された第3実施例の装置における各T−DPr900A〜900Cの動作アルゴリズムを説明する。第3実施例の各T−DPr900A〜900Cでは、受信部分の制御が一部異なるだけであるので図示は省略し、第2実施例と異なる部分についてのみ説明する。
T−DPr900A〜900Cは、送信トリガ信号を送付する際に受信バッファ950を主記憶部902上に作成する。この時、受信バッファ950は、予想されるタプル対応の転送データの最大長と予め定められた転送タプル数との積だけの容量を考慮して確保される。この後、マイクロプロセッサ901は、トリガ信号の送出を出力ポート回路904に指示する。
【0226】
S−DPr800A〜800Cからのデータ送信が送信トリガ信号の送付に対応して行なわれると、マイクロプロセッサ901は、入力ポート回路903に対して受信バッファ950の先頭アドレスを指定することによりデータの格納を指示する。
そして、マイクロプロセッサ901は、受信バッファ950に含まれる個々のタプルに対応するデータに対して、第1実施例や第2実施例において個別のタプルに対応するデータが転送された場合と同様に、計数,分類および格納作業を行なう。
【0227】
このように、本発明の第3実施例の並列プロセッサ装置によれば、以下のような効果が得られる。
主要な効果は、バケット平坦化処理を行ないながら、プロセッサ800A〜800C,900A〜900C間のデータ転送に付随するプロセッサの動作オーバヘッドを減少させることである。このことは既存技術では実現できないことは上述した通りである。
【0228】
(d)第4実施例の説明
(d1)第4実施例において必要な構成要件
第4実施例は、第3発明の並列プロセッサ装置にかかる技術で、この第4実施例で必要な構成要件は、下記(1) 〜(4) の通りである。
(1) 第2実施例と同様構成の装置において、S−DPrからT−DPrへの一度の転送処理において転送されるデータ量は固定の容量値Aを上限、固定の容量値Bを下限として可能な限り多いタプル(相当)により構成されるデータ量とする。この容量値A,Bは、少なくとも、あるS−DPrから見てどのT−DPrに対しても等しい値でなければならない。
【0229】
(2) 上記一度の転送処理で転送されるタプル群は、上記容量条件を満たす範囲で、第2実施例で示した転送対象のT−DPrに対応して作成される転送キューの、第2実施例における転送の順序で先頭から抽出される。
(3) あるS−DPrにおいて、あるT−DPrに対応する転送キュー内に容量総和が上記容量値Bを上回る転送量になるタプルが蓄積されていない時、このT−DPrから送信トリガ信号が送付された時、当該S−DPrは「転送を行なうに十分な量の転送データが蓄積されていない」旨の応答をT−DPrに行なって、データ転送は行なわない。
【0230】
(4) 第2実施例において、転送宛先プロセッサ決定用テーブルの個別要素の加算値は、転送宛先となるT−DPrに対応する転送キュー中に現在蓄積されているタプル(あるいはこのタプルに対応する転送データ)の総容量に、現在転送宛先を決定しようとしているタプルの長さ(あるいはこのタプルに対応する転送データの長さ)を加算したものとする。
【0231】
(d2)第4実施例の正当性の説明
上述のような構成要件をもつ第4実施例では、前述した等価結合(EquivalentJoin)のような大量のデータを扱う処理では、処理負荷は単に処理されるべきタプル数で決定されるのではなく、それらタプルのデータ量の和により決まる場合がある。どちらがより支配的な要因かはプロセッサ上で動作するソフトウェアの実装などに依存する。
【0232】
このため、もしあるシステムでタプル数ではなくタプルデータ量の和がより強く処理負荷を支配する要因であったならば、上記S−DPrで行なわれるべき負荷の調整作業の負荷指標も「送ったタプル数」ではなく「送ったデータ量」になるべきである。
また、実装上もバッファの取得や管理は、転送量そのものが固定長であった場合の方が第3実施例にて記述した「タプル数が固定」の場合よりも容易になる。第3実施例では、少なくともT−DPrの受信バッファ(図18の符号850参照)は「タプルの最大長×送信タプル数」だけの容量を必要とする。タプルの平均長と最大長とでは通常数十倍の容量差を発生しうるから、取得された送信バッファを有効に使用することは一般に難しい。これに対して、転送されるデータ量がある範囲内にあることが保証されているならば、送信バッファは常にその使用効率が保証されることになる。
【0233】
このように利点の多い「データ量ベースの均等化」を実現するためには、第3実施例と比較して以下の2点が変更されなければならない。
(1) データ転送は、上限および下限の決定された「一定の範囲内の容量」を1回の単位として行なわれる。
(2) 負荷の評価のための指標、つまり転送宛先プロセッサ決定用テーブルに積算される値は、第3実施例の「転送キュー中のタプル数に1を加えたもの」から、「転送キュー中のタプル容量に現在処理しているタプルの容量を加算したもの」あるいはこれに意味的には等価な「転送キュー中のタプル容量と処理しているタプルに対応する転送データの容量との総和」に変更される。
【0234】
(d3)第4実施例の実装形態の説明
この第4実施例の並列プロセッサ装置の全体構成は、図9に示した第2実施例のものと全く同様であるので、その説明は省略する。
また、この第4実施例におけるS−DPrおよびT−DPrは、それぞれ図21および図23に示すごとく、図18および図19に示した第3実施例におけるS−DPrおよびT−DPrとほぼ同様に構成されている。
【0235】
まず、図21は本発明の第4実施例としての並列プロセッサ装置におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図で、この図21に示すように、第4実施例におけるS−DPr1200も、後述する点を除き、図18に示した第3実施例における各S−DPr800A〜800Cとほぼ同様に構成されている。
【0236】
なお、図21において符号1201〜1214,1216,1220,1230〜1232,1250を付して示される構成要素は、それぞれ図18により前述した符号801〜814,816,820,830〜832,850を付した構成要素とほぼ同じものであるので、その詳細な説明は省略する。
さて、第4実施例のS−DPr1200では、送信バッファ1250の取得タイミングは、第3実施例における送信バッファ850のタイミングと同様であるが、マイクロプロセッサ1201は、この送信バッファ1250に関する上述した下限容量値および上限容量値を満たす個数だけのタプル(もしくはこれに相当する転送データ)をデキューし、送信バッファ1250内に格納して送信データを作成する。このときの転送データフォーマットも第3実施例のものと同じである。ただ、この第4実施例では、その容量(主記憶部1202上に取得された送信バッファ1250の容量)が、必ず上述した下限容量値と上限容量値との間に入っている。
【0237】
図22は第4実施例の転送キュー1230〜1232の構造の一例を示す図である。この図22により、第4実施例と第3実施例との主要な差の一つである転送キュー1230〜1232の構造(待ち行列構造)を具体的に説明する。
第2実施例や第3実施例に示した転送キュー構造と、第4実施例の転送キュー構造との相違点は、個々の転送データのバイトカウントの総和(Sum of Byte Count of Send Data)を保持する転送データ量フィールド1247が各転送キュー1230〜1232のアンカー情報内に追加されている点である。
【0238】
このフィールド1247は、個々のタプル(これに対応する転送データ)がエンキューされる度にその転送データの長さだけ増加し、また個々のタプル(これに対応する転送データ)がデキューされる度にその転送データの長さだけ減算される。
従って、第4実施例においては、マイクロプロセッサ1201から読み取ることが可能に転送データ量フィールド1247を作成することにより、前述した蓄積データ量検出手段〔各転送キュー1230〜1232に蓄積される転送対象エンティティ(タプル)のデータ量を検出するもの〕が構成されることになる。
【0239】
なお、図22において符号1240〜1246を付して示される構成要素は、それぞれ図11により前述した符号840〜846を付した構成要素とほぼ同じものであるので、その詳細な説明は省略する。
一方、図23は本発明の第4実施例としての並列プロセッサ装置におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図で、この図23に示すように、第4実施例におけるT−DPr1300も、後述する点を除き、図19に示した第3実施例における各T−DPr900A〜900Cとほぼ同様に構成されている。
【0240】
なお、図23において符号1301〜1314,1316,1322,1323,1350を付して示される構成要素は、それぞれ図19により前述した符号901〜914,916,922,923,950を付した構成要素とほぼ同じものであるので、その詳細な説明は省略する。
第4実施例のT−DPr1300では、受信バッファ1350の取得や解放のタイミングは、第3実施例における受信バッファ950のタイミングと同様であるが、その容量は、セッサ1201は、第3実施例の受信バッファ940のように「タプルの最大長×転送されるタプル数(固定値)」ではなく、上記転送データの上限容量値に設定すればよい。
【0241】
次に、上述のごとく構成された第4実施例の装置におけるS−DPr1200の動作アルゴリズムを、第3実施例と異なる部分についてのみ説明する。
S−DPr1200の1タプルの宛先を決定する動作については、バケットIDを求め、且つ、このバケットIDに基づいて転送宛先プロセッサ決定用テーブル1220上の行または列を定め、この1次元配列中で最も値の小さな要素に対応するT−DPrをタプルデータの転送先とすることは、上述した第3実施例と同じである。
【0242】
ただし、第4実施例では、転送宛先であるT−DPrが決定した後、転送宛先プロセッサ決定用テーブル1220の上記要素に対して、マイクロプロセッサ1201は、「該T−DPrに対応する転送キュー(待ち行列構造)の転送データ量フィールド1247の値と、図20に示した各フィールド2112(各タプルデータの長さ)のバイト数を加算した値(つまり現在処理中のタプルに対応する転送データの長さ)と」を加算しなければならない。
【0243】
あるT−DPrから前述のトリガ信号が送付されたS−DPr1200のマイクロプロセッサ1201は、当該T−DPrに対応する転送キュー1230〜1232の転送データ量フィールド1247の値を参照し、この値が転送データ量の下限値を下回る場合には「転送を行なうに十分な量の転送データが蓄積されていない」旨の応答を当該T−DPrに行なって、データ転送は行なわない。
【0244】
もし、転送データ量フィールド1247の値が転送データ量の下限値以上であるならば、マイクロプロセッサ1201は、送信バッファ1250を主記憶部1202上に取得する。このとき、その送信バッファ1250の容量は転送データ量の上限値とする。
そして、マイクロプロセッサ1201は、当該T−DPrに対応する転送キュー1230〜1232から送信バッファ1250の中にタプル(あるいはこのタプルに対応する転送データ)を一つずつデキューし、この送信バッファ1250に送信データを作成していく。
【0245】
このとき、新たなタプル(あるいはこのタプルに対応する転送データ)の追加が、転送データ量の上限値を超えさせてしまうことを検出すると、マイクロプロセッサ1201は、このタプルのデキューを抑止し、転送データ作成の終了を認識する。
なお、マイクロプロセッサ1201は、転送キュー1230〜1232から1タプル(もしくはこれに対応する転送データ)をデキューする都度、転送データ量フィールド1247の値から、デキューされた転送データの長さを減算してゆく。
【0246】
さらに、上述のごとく構成された第4実施例の装置におけるT−DPr1300の動作アルゴリズムを、第3実施例と異なる部分についてのみ説明する。
第4実施例のT−DPr1300も、第3実施例の場合と同様に、S−DPr1200へ送信トリガ信号を送付する際に受信バッファ1350を主記憶部1302上に作成するが、このとき、第4実施例では、その受信バッファ1350の容量が転送データの上限容量値に設定される点のみが、第3実施例と異なっている。
【0247】
このように、本発明の第4実施例の並列プロセッサ装置によれば、T−DPr1300の負荷が主として入力されたタプルデータのバイト容量に比例すると考えられる時、第3実施例よりもより良くT−DPr1300の負荷の均等化を実現することができる。
(e)第5実施例の説明
第5実施例は、第4発明の並列プロセッサ装置にかかる技術で、上述した「突き合わせ処理」部分に適用されるものである。
【0248】
そして、図24は本発明の第5実施例としての並列プロセッサ装置の全体構成を示すブロック図で、この図24において、1400は複数のプロセッサ1400A,1400B,…,1400Cからなる第1プロセッサ群、1500は複数のプロセッサ1500A,1500B,…,1500Cからなる第2プロセッサ群である。
【0249】
ここで、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cには、所定業務における処理対象のデータ(バケット)が分散して格納されており、この第1プロセッサ群1400は、第1〜第4実施例で前述したようにバケット平坦化処理を受けたT−DPr群に対応するものである。つまり、処理対象のデータは、ハッシュ関数(所定規則)に従って、第1プロセッサ群1400上に予めグルーピングされている。
【0250】
また、各プロセッサ1400A〜1400Cは、自プロセッサにおけるグルーピング結果を後述する管理用プロセッサ1600に通知する機能を有してほか、後述する管理用プロセッサ1600によるデータ割当に従い、第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cに対して該当するバケット(データグループ)の全データを送付する機能も有している。
【0251】
第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cは、第1プロセッサ群1400に格納されたバケットを送付されて、当該バケットに対する処理(本実施例では「突き合わせ処理」)を実行するものである。また、各プロセッサ1500A〜1500Cは、第1プロセッサ群1400に格納されたバケットについて新たな処理を開始できる状況になると、後述する管理用プロセッサ1600に対してバケットの割当を依頼する機能を有している。
【0252】
一方、図24において、600は第1〜第4実施例にて前述したものと全く同様のネットワーク機構であり、このネットワーク機構600により、第1プロセッサ群1400に属するプロセッサ1400A〜1400Cうちの任意のものから、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cうちの任意のものへデータ送信を行なえるようになっている。
【0253】
また、1600は管理用プロセッサで、この管理用プロセッサ1600は、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cからの通知を受けて各プロセッサ1400A〜1400Cに格納されているバケットを記憶する第1の機能と、第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cからバケット(データグループ)の割当依頼を受けると当該割当依頼を行なったプロセッサに対して未割当のバケットの割当を行なう第2の機能とを有している。
【0254】
そして、管理用プロセッサ1600の主記憶部上には、上記第1の機能および第2の機能を果たすために、バケットと第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cとの対応関係を記述するバケット割当テーブル(Bucket−Allocation−Table;図25参照)1601と、第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cの状態(未走行状態,走行状態,終了状態等)を記述する状態管理テーブル(State−Control−Table;図26参照)1602とがそなえられている。
【0255】
ここで、図25はバケット割当テーブル1601の概要を説明するための図であり、この図25に示すテーブル1601は、プロセッサ1400A〜1400Cから存在が報告されたバケット1つについて1行(1Row)を費やす構造になっている。
そして、図25に示すように、各行の第1カラム(Column)には、その行に対応するバケットのバケット識別子が格納される。このバケット識別子は、各バケットを特定するために、全てのプロセッサ1400A〜1400C,1500A〜1500C,1600で使用される。
【0256】
また、各行の第2カラムには、プロセッサ1400A〜1400Cのいずれにそのバケットの部分集合であるサブバケットが存在するかが記述され、そのバケットの存在を報告してきたプロセッサ群が網羅されている。この第2カラムとしては、例えば、各プロセッサ1400A〜1400C毎に1ビットを割り当てたビットマップが用いられる。
【0257】
さらに、各行の第3カラムには、初期化直後は「いずれのプロセッサにも割り当てられていない」ことを示す値が記入されるべきであり、割当処理が行なわれた後はこのバケットが割り当てられたプロセッサ1500A〜1500Cのいずれかのプロセッサ識別子が記入される。図46に示す既存技術のテーブルでは、プロセッサ識別子の記入が実際のバケット移動に先立って一斉に行なわれていたのに対して、この実施例では、プロセッサ識別子は、プロセッサ1500A〜1500Cの処理進行と並行して動的にテーブル1601に記入されている。
【0258】
一方、図26は状態管理テーブル1602の概要を説明するための図であり、この図26に示すテーブル1602は、各プロセッサ1500A〜1500Cに対応して1行を費やす構造となっている。
そして、図26に示すように、各行の第1カラムには、その行に対応するプロセッサ1500A〜1500Cの識別子が格納される。
【0259】
また、各行の第2カラムには、その行に対応するプロセッサ1500A〜1500Cに対して現在割り当てられているバケットの有無、および、割当バケットが有る場合には、そのバケット識別子が記入される。なお、割り当てられているバケットが無い場合には、無効な識別子が記入されている。
さらに、各行の第3カラムには、その行に対応するプロセッサ1500A〜1500Cが、現在、「未走行状態(Ready State)」,「停止状態(Finished State)」,「走行状態(Running State)」のいずれにあるかが記入される。
【0260】
なお、プロセッサ1400A〜1400C,1500A〜1500C,1600のハードウエア構成は、いずれも、第1〜第4実施例にて説明したS−DPrやT−DPrと同じであり、物理的には同一のプロセッサが同時に同一業務または別業務について、第1プロセッサ群1400,第2プロセッサ群1500,管理用プロセッサ1600のうちの少なくとも2つを兼ねても構わない。
【0261】
次に、上述のごとく構成された第5実施例の装置全体の動作の流れを説明すると、第5実施例でも、図45〜図49にて説明した既存技術と同様に、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cは、自プロセッサの二次記憶装置内に存在するサブバケット群のバケットIDを管理用プロセッサ1600に送付するが、この管理用プロセッサ1600は、バケットと第2プロセッサ群1500に属するプロセッサ1500A〜1500Cとの対応関係をこの時点では決定しない。
【0262】
そして、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cは、新たなバケットの処理が開始できる状況(つまり、それ以前に行なっていたバケットの自プロセッサ内部での結合演算処理が終了したか、あるいは、管理用プロセッサ1600に対してサブバケットに関する情報を送付し終わった)になると、管理用プロセッサ1600に対して「バケットの割当」をメッセージAとして要求する。
【0263】
管理用プロセッサ1600は、第1プロセッサ群1400の全てのプロセッサ1400A〜1400Cからサブバケットに関する情報を受理し終わると、第2プロセッサ群1500からの要求に応じてバケットの割当を開始する。
ここで、バケットの割当とは、管理用プロセッサ1600にその存在が通知されたバケットIDの一つを選択し、そのバケットの処理を上記「バケットの割当」要求を送付してきた第2プロセッサ群1500に属するプロセッサ1500A〜1500Cに委託することである。一度、委託先のプロセッサが決定したバケットは、以後、割当の対象にはならない。
【0264】
この第5実施例では、割当は、管理用プロセッサ1600から第2プロセッサ群1500に属するプロセッサ1500A〜1500Cに対して割当が成立したこと、および、割り当てられたバケットIDを含むメッセージBをネットワーク機構600を経由して送付することによりなされるものとする。
この後、割当のための上記メッセージBを受理した第2プロセッサ群1500に属するプロセッサ1500A〜1500Cは、自ら、第1プロセッサ群1400を構成する全てのプロセッサ1400A〜1400Cに対して該バケットIDをもつサブバケットに属する全てのデータを自プロセッサに送付させる旨の指示メッセージCを同報する。
【0265】
上記指示メッセージCを受理した第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cは、自プロセッサの配下の二次記憶装置に格納されている対応するデータを全て第2プロセッサ群1500に属する上記指示メッセージ送付元のプロセッサに対して送付する。
第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cは、バケットデータを全て転送すると、転送終了報告のメッセージDを上記指示メッセージ送付元のプロセッサに送付する。
【0266】
そして、上記指示メッセージ送付元のプロセッサは、第1プロセッサ群1400に属する全てのプロセッサ1400A〜1400Cから上記メッセージDを受理すると、受信したデータの総和(つまりバケット)に対してプロセッサ内部でのハッシュ結合処理等のDBMS処理を行なう。
このプロセッサ内部での処理が終了すると、上記指示メッセージ送付元のプロセッサは、再び「新たなバケットの処理が開始できる状態」になり、管理用プロセッサ1600に対して新たなバケットの割当を要請するためにメッセージAを送付する。
【0267】
管理用プロセッサ1600において割り当てされるべきバケットが無い場合には、処理終了を指示するメッセージEが、上記メッセージAに対する回答として管理用プロセッサ1600から第2プロセッサ群1500に属する上記メッセージAの送付元プロセッサへ送付される。
そして、管理用プロセッサ1600は、第2プロセッサ群1500に属する全てのプロセッサ1500A〜1500Cに対して処理終了メッセージEを発行すると、全処理の終了を認識し、第1プロセッサ群1400に属する全てのプロセッサ1400A〜1400C処理終了メッセージEを同報する。
【0268】
次に、第5実施例における各プロセッサ1600,1400A〜1400C,1500A〜1500Cの動作概要を、図27〜図29に示すフローチャートに従ってより詳細に説明する。
まず、図27は第5実施例における管理用プロセッサ1600の動作を説明するためのフローチャート(ステップS600〜S612)であり、この図27に示すように、管理用プロセッサ1600は、動作を開始すると、まず、バケット割当テーブル1601の内容を初期化する(ステップS600)。その初期化処理の内容は、予想されるバケット数を記述するだけの充分な容量のテーブル領域を主記憶部上に確保し、その全ての行(各バケットに対応)を無効化することである。
【0269】
バケット割当テーブル1601の初期化後、管理用プロセッサ1600は、各プロセッサ1400A〜1400Cから、どのようなバケットが生成されたかについての報告が行なわれるのを待ち(ステップS601)、報告を受けると、その内容をバケット割当テーブル1601に格納する(ステップS602)。
これらのステップS601,S602による処理動作は、プロセッサ1400A〜1400Cの全てから報告がなされるまで繰り返し実行される(ステップS603)。
【0270】
全てのプロセッサ1400A〜1400Cからバケット生成についての報告がなされると、次に、管理用プロセッサ1600は、各プロセッサ1500A〜1500Cのための状態管理テーブル1602の内容を初期化する(ステップS604)。
その初期化処理の内容は、プロセッサ1500A〜1500Cの情報を格納するのに充分な容量のテーブル領域を主記憶部上に確保し、図26を参照して言うならば、その全ての行(各プロセッサ1500A〜1500Cに対応)に対してプロセッサ識別子(第1カラム)を記入し、第3カラムのプロセッサ状態に、「未走行状態」を表すコードを記入し、さらに、第2カラムに「いずれのバケットも割り当てられていない」ことを意味するコードを記入することである。
【0271】
状態管理テーブル1602の初期化後、管理用プロセッサ1600は、各プロセッサ1500A〜1500Cから、新たなバケットの割当を要求するメッセージが到着するのを待ち受け(ステップS605)、そのメッセージが到着すると、未だいずれのプロセッサ1500A〜1500Cにも割り当てられていないバケットが存在するか否かをチェックする(ステップS606)。
【0272】
未割当のバケットが存在する場合、管理用プロセッサ1600は、バケット割当テーブル1601の第3カラムを縦方向にスキャンすることにより、いずれのプロセッサ1500A〜1500Cに対しても未だ割り当てられていないバケットを探索し(ステップS607)、ステップS605で割当要求を送付してきたプロセッサ1500A〜1500Cのうちの一つに対して、ステップS607で探索されたバケットのバケットIDを送付する(ステップS608)。
【0273】
この後、管理用プロセッサ1600は、バケット割当テーブル1601に、ステップS607で選択されたバケットがステップS605で割当要求を送付してきたプロセッサ1500A〜1500Cの一つに割り当てられたことを記入するとともに、状態管理テーブル1602に、プロセッサ1500A〜1500Cの一つが「走行状態」になり上記バケットを割り当てられたことを記入してから(ステップS609)、ステップS605の処理に戻る。
【0274】
一方、ステップS606で全てのバケットが割当済であると判定された場合、管理用プロセッサ1600は、ステップS605で割当要求を送付してきたプロセッサ1500A〜1500Cの一つに対して、「割当可能なバケットが残っていないので処理を終了せよ」という内容のメッセージを送付する(ステップS610)。
【0275】
そして、管理用プロセッサ1600は、上記終了指示を送付されたプロセッサ1500A〜1500Cの一つが「停止状態」に入ったことを状態管理テーブル1602に記入してから(ステップS611)、全てのプロセッサ1500A〜1500Cが「停止状態」に入ったか否かを判定する(ステップS612)。
もし、未だ「走行状態」にあるプロセッサが存在するならば、ステップS605の処理に戻る一方、全てのプロセッサ1500A〜1500Cが「停止状態」に入ったならば、全処理の終了が認識され、管理用プロセッサ1600は処理を終了する。
【0276】
図28は第5実施例における第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cの動作を説明するためのフローチャート(ステップS620〜S624)であり、この図28に示すように、各プロセッサ1400A〜1400Cは、動作を開始すると、まず、各プロセッサ1400A〜1400Cが格納するサブバケットのバケットIDを認識することにより、自プロセッサ(二次記憶装置)内におけるバケット種類を確認する(ステップS620)。
【0277】
このステップS620における各プロセッサ1400A〜1400Cの状態は、例えば、第1〜第4実施例で前述したようにハッシュ関数(所定規則)に従ってバケットを分類・格納したT−DPrの状態と同一であり、図28のステップS620には、「各プロセッサの記憶装置内にバケットを作成する」という一般的な記載がなされている。
【0278】
この後、各プロセッサ1400A〜1400Cは、ステップS620で得られたバケットに関する情報を管理用プロセッサ1600に送付し(ステップS621)、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cから、バケットIDを伴った送付要求メッセージが送付されてくるのを待ち受ける状態になる(ステップS622)。
【0279】
そして、各プロセッサ1400A〜1400Cは、ステップS622でプロセッサ1500A〜1500Cからの送付要求メッセージを受理すると、そのバケット送付要求に従って、該要求に記述されたバケット識別子をもつ自プロセッサ内部のサブバケットを要求元のプロセッサ1500A〜1500Cに送付する(ステップS623)。
【0280】
サブバケットの送付後、各プロセッサ1400A〜1400Cは、自プロセッサ内部の全てのサブバケットを送付し終わったか否かを判定し(ステップS624)、もし未だ送付されていないサブバケットが存在するならば、ステップS622の処理に戻る一方、全てのサブバケットが送付され終わっていれば、処理を終了する。
【0281】
図29は第5実施例における第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cの動作を説明するためのフローチャート(ステップS630〜S635)であり、この図29に示すように、各プロセッサ1500A〜1500Cは、動作を開始すると、まず、現在新たなバケットの受理と処理とが可能な状況であるから、管理用プロセッサ1600に対して新たなバケットの割当を要求するメッセージを送付し(ステップS630)、管理用プロセッサ1600から、割当要求に対する応答が送付されてくるのを待ち受ける状態になる(ステップS631)。
【0282】
そして、各プロセッサ1500A〜1500Cは、ステップS631で管理用プロセッサ1600からの応答を受理すると、その応答が「処理の終了指示」であるか否かを判定し(ステップS632)、もし、その応答が「処理の終了指示」であるならば処理を終了する。
一方、ステップS632でその応答が「処理の終了指示」ではないと判定された場合には、その応答(メッセージ)の内容は、バケットの割当であるから、各プロセッサ1500A〜1500Cは、管理用プロセッサ1600からのバケット割当メッセージに記載されていたバケットIDを使用して、第1プロセッサ群1400に属するプロセッサ1400A〜1400Cに対し、該バケット(正確にはプロセッサ1400A〜1400Cに格納されているバケットIDが一致するサブバケット群)を自プロセッサに送付する旨の要求メッセージを同報送付する(ステップS633)。
【0283】
そして、各プロセッサ1500A〜1500Cは、上記要求メッセージの応答として、割り当てられたバケットをプロセッサ1400A〜1400Cから受理し(ステップS634)、受理したバケットデータに対してDBMS処理〔例えばハッシュ結合(Hash Join) 処理等〕を実行した後(ステップS635)、ステップS630に戻る。このステップS630へ戻った時点で、各プロセッサ1500A〜1500Cは、新たなバケットの処理が開始できる状況になる。
【0284】
このように、本発明の第5実施例の並列プロセッサ装置によれば、第2プロセッサ群1500に属するあるプロセッサがMIMDのスキューおよび生成率のスキューにより極めて早くバケットの処理を終了した場合、即時、他のバケットの処理のためにこのプロセッサの演算性能が使用されることになり、システム全体の等該業務のために割り当てられた演算性能が無駄にならない。
【0285】
一方、第2プロセッサ群1500に属するあるプロセッサがMIMDのスキューおよび生成率のスキューにより予想より極めて長い処理時間を要した場合でも、第2プロセッサ群1500に属する他のプロセッサがその分の処理を引き受けることになるので、システム性能に対する影響を低く抑えることができる。
(f)第6実施例の説明
第6実施例は、第5発明の並列プロセッサ装置にかかる技術で、第5実施例と同様、上述した「突き合わせ処理」部分に適用されるものである。
【0286】
そして、図30は本発明の第5実施例としての並列プロセッサ装置の全体構成を示すブロック図で、この図30に示すように、第6実施例の装置も図24に示した第5実施例の装置とほぼ同様に構成されている。この第6実施例では、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cにおける若干の機能と、符号1700を付して示す管理用プロセッサの機能とが、第5実施例のものと異なっているだけで、他の部分の構成は第5実施例のものと全く同様である。同様構成の部分の説明は、ここでは省略する。
【0287】
第6実施例における第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cは、自プロセッサにおけるグルーピング結果を後述する管理用プロセッサ1700に通知する際に、バケットID(各データグループの識別子)とともにその容量を通知する機能を有している。
また、第6実施例の管理用プロセッサ1700は、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cからの通知を受けると、その通知に含まれる容量を各バケットついて積算し、第1プロセッサ群1400全体について各バケットの大きさ(容量)を各バケットIDとともに記憶する第1の機能と、第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cからバケットの割当依頼を受けると、当該割当依頼を行なったプロセッサに対して、記憶しているバケットで未割当のもののうち容量の大きなものから順に割り当てを行なう第2の機能とを有している。
【0288】
そして、管理用プロセッサ1700の主記憶部上には、上記第1の機能および第2の機能を果たすためにバケットと第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cとの対応関係を記述するバケット割当テーブル(Bucket−Allocation−Table;図31参照)1701と、第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cの状態(未走行状態,走行状態,終了状態等)を記述する状態管理テーブル(State−Control−Table;図32参照)1702とがそなえられている。
【0289】
ここで、図31はバケット割当テーブル1701の概要を説明するための図であり、この図31に示すように、第6実施例のテーブル1701も図25に示した第5実施例のものとほぼ同様の構造を有しているが、この第6実施例のテーブル1701には、第5実施例と同様の構造に、さらに第4カラムが追加されている。
【0290】
この第4カラムには、その行に対応するバケットの容量が格納される。この第4カラムは、管理用プロセッサ1600において、「プロセッサ未割当状態にあるバケット群のうち、最も容量の大きいものを、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cに対する次の割当処理の対象とする」という第2の機能を実現するために使用される。なお、第4カラムの初期値は“0”に設定される。
【0291】
また、図32は状態管理テーブル1702の概要を説明するための図であり、この図32に示すように、第7実施例のテーブル1702は図26に示した第5実施例のものと全く同様の構造を有しているので、その説明は省略する。
次に、上述のごとく構成された第6実施例の装置全体の動作の流れを説明すると、第6実施例の装置も、図24〜図29にて説明した第5実施例とほぼ同様に動作するので、ここでは、第5実施例との相違点についてのみ説明する。
【0292】
つまり、第6実施例では、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cは、自プロセッサの二次記憶装置に格納される各サブバケットにつき、その識別子(バケットID)とともにその容量を管理用プロセッサ1600に送付している。
また、管理用プロセッサ1600は、第5実施例と同様に如何なる識別子をもつバケットが第1プロセッサ群1400内に存在するかを管理する他に、それぞれのバケットの容量を、第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cが送付してきたサブバケットの容量をバケットID別に積算することにより管理・記憶している。
【0293】
そして、管理用プロセッサ1600は、上記「バケットの割当要求」のメッセージAが第2プロセッサ群1500から送付され、且つ「バケットの割当」が可能な状況(可能となる条件は第5実施例と同様)にある時、バケット割当テーブル1701を参照して、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cにも未だ割り当てられていないバケットのうち、記憶された各バケットの容量の大きなものから順に割当を行なう。
【0294】
その他の動作は、第5実施例の場合と同じある。
次に、第6実施例における各プロセッサ1700,1400A〜1400C,1500A〜1500Cの動作概要を、図33〜図35に示すフローチャートに従ってより詳細に説明する。
まず、図33は第6実施例における管理用プロセッサ1600の動作を説明するためのフローチャート(ステップS700〜S713)であり、この図33に示すように、管理用プロセッサ1700も、第5実施例の管理用プロセッサ1600とほぼ同様の動作を行ない、図33におけるステップS700〜S712の処理は、それぞれ図27に示したステップS600〜S612の処理に対応しているので、以下の説明では、第5実施例の動作と異なる部分のみ記述する。
【0295】
この第6実施例の管理用プロセッサ1700は、ステップS700におけるバケット割当テーブル1701の内容の初期化に際して、第5実施例のステップS600と同様の処理を行なうとともに、追加された第4カラムの初期値を全て“0”に設定する。
また、ステップS701において管理用プロセッサ1700待ち受ける、第1プロセッサ群1400に属するプロセッサ1400A〜1400Cからのメッセージには、第5実施例では、バケットIDのみが記載されていればよかった(バケットの存在のみを認識できればよかった)のに対して、この第6実施例では、バケットIDに加えて各サブバケットの容量が記載されている。
【0296】
そして、ステップS702において、管理用プロセッサ1700は、ステップS701で第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cから受理したメッセージ内に示される全てのサブバケットに対して、バケット割当テーブル1701の同一バケットに対応する行の第3カラムに、そのバケットのデータがメッセージ送信元プロセッサに存在することを記入し、さらに第4カラムの値に、そのサブバケット容量を加算する作業を行なう。
【0297】
上述のごとく第4カラムに処理を行なう点が、第6実施例と第5実施例との大きな相違点である。これにより、各バケットのプロセッサ1400A〜1400C内での積算容量が、バケット割当テーブル1701の第4カラムに生成されることになる。
なお、ステップS702において、もし、当該バケットIDを第1カラムにもつ行が存在しなかった場合、管理用プロセッサ1700は、そのバケットIDのための新たな行を取得し、その第3カラムに「いずれのプロセッサ1400A〜1400Cにもそのバケットは存在しない」ことを示す情報、および、第4カラムに“0”を設定する。
【0298】
さて、本実施例でも、これらのステップS701,S702による処理動作は、プロセッサ1400A〜1400Cの全てから報告がなされるまで繰り返し実行されるが(ステップS703)、この第6実施例では、全てのプロセッサ1400A〜1400Cからバケット生成についての報告がなされると、次に、管理用プロセッサ1700は、第5実施例のステップS604と同様のステップS704の処理を行なう前に、新たに追加されたステップS713の処理を実行している。
【0299】
このステップS713では、バケット割当テーブル1701の行が、第4カラムのバケット容量により昇順または降順にソートして並び替えられる。別に物理的な配置を置き換える必要はなく、例えばバケット割当テーブル1701内に行間のポインタを格納するカラムを追加するなどして、ポインタによる順列の表示で並替を行なう。このステップS713におけるソート処理は、後述するステップS707において、「未割当のバケットで最もバケット容量の大きいものを選択する」ことを目的に行なわれるものである。
【0300】
そして、ステップS707において、管理用プロセッサ1700は、上述した通り、第2プロセッサ群1500に属するプロセッサ1500A〜1500Cのいずれにも未だ割り当てが行なわれていないバケットで、最もバケット容量が大きいものを選択する。一方、第5実施例では、全てのバケットが唯一つのプロセッサに最終的に割り当てられるならば、どのバケットがどの順序で選択されても構わなかったが、この点が、バケット容量の大きい順で割当を行なう第6実施例との大きく異なる点である。
【0301】
図34は第6実施例における第1プロセッサ群1400に属する各プロセッサ1400A〜1400Cの動作を説明するためのフローチャート(ステップS720〜S724)であり、この図34に示すように、各プロセッサ1400A〜1400Cも、第5実施例のものとほぼ同様の動作を行ない、図34におけるステップS720〜S724の処理は、それぞれ図28に示したステップS620〜S624の処理に対応しているので、以下の説明では、第5実施例の動作と異なる部分のみ記述する。
【0302】
この第6実施例の各プロセッサ1400A〜1400Cの動作と、第5実施例のものと相違点は、図33によっても前述した通り、第6実施例の各プロセッサ1400A〜1400Cが、ステップS721で、自プロセッサ内部に格納されているサブバケットの存在を認識すると、それら全てのバケットIDとサブバケット容量とを対にして管理用プロセッサ1700に送付する点のみである。これに対し、第5実施例では、バケットIDのみを送付すればよかった。
【0303】
図35は第6実施例における第2プロセッサ群1500に属する各プロセッサ1500A〜1500Cの動作を説明するためのフローチャート(ステップS730〜S735)であり、この図35に示すように、各プロセッサ1500A〜1500Cは、第5実施例のものと全く同様の動作を行ない、図35におけるステップS730〜S735の処理は、それぞれ図29に示したステップS630〜S635の処理に完全に対応しているので、その説明は省略する。
【0304】
このように、本発明の第6実施例の並列プロセッサ装置による効果を以下に説明する。
この第6実施例の装置は、MIMDのスキューや生成率のスキューが「最後のバケット」において特に大き場合の影響を低減しようとするものである。
あるバケットに対してMIMDのスキューや生成率のスキューが与える悪影響の大きさ(尺度は該バケットの処理にかかる時間が予想からどれだけ伸びたか)は、当然、バケットのデータ量と正の相関をもつと予想される。
【0305】
もし、処理の初期に大きなスキュー値が発生したとしても、第5実施例の装置では、その分の演算性能を他のプロセッサが提供するからシステム性能への影響を最小に抑えることができる。しかし、このことは「スキューにより性能低下したプロセッサが本来処理すべきだったバケットを他のプロセッサにまかせることができる」からこそ可能である。
【0306】
つまり、もし最後のバケットにつき極めて大きなスキューが発生して処理時間が遅延したとしても、この遅延を補償することはできない。
そこで、第6実施例では、「最後のバケット」に関して大きなスキューが発生してもバケットの大きさそのものが小さいならばシステム性能に対する影響が十分小さくなることを利用して、第5実施例の装置をさらに改善している。
【0307】
【発明の効果】
以上詳述したように、本発明の並列プロセッサ装置(請求項1)によれば、多段網であろうが共通バスであろうが、ネットワーク機構に関して特に特別な機構や機能を必要としなくなり、メモリ容量を除く部分のハード回路量を大幅に低減することができ、装置構成に要するコストを大幅に削減することができる。
【0308】
また、本発明の並列プロセッサ装置(請求項2)によれば、任意理由によるT−DPrの性能の差を相殺する方向に自動的かつ動的に調整が行なわれ既知技術では対処できなかった「生成率のスキュー」および「T−DPr動作に関するMIMDのスキュー」が大幅に低減される。
このとき、プロセッサ間転送単位をエンティティ群とすることで、チャンクの平坦化処理を行ないながら、プロセッサ間のデータ転送に付随するプロセッサの動作オーバヘッドを確実に減少させることできる(請求項3)。
【0309】
さらに、本発明の並列プロセッサ装置(請求項4)によれば、T−DPrの負荷が主として入力されたエンティティのデータ量に比例する場合、より良くT−DPrの負荷の均等化を実現することができる。
ここで、「生成率のスキュー」および「T−DPr動作に関するMIMDのスキュー」は容易にプロセッサ間負荷を数倍のオーダでバラつかせ、従って理想的なシステム性能から見て実効性能を数分の1(最も遅いプロセッサでの処理終了までシステム全体の処理は終わらない)に落としてしまうことが判っているが、上述した本発明の並列プロセッサ装置によれば、シミレーションの結果、かなり広範囲のケースに対して、実効性能を数倍改善しほぼ理想性能を達成できることが明確である。また、本発明の並列プロセッサ装置によれば、チャンク(バケット)の平坦化を極めて安価で且つ効率良く行なうことができる。
【0310】
なお、請求項5記載の並列プロセッサ装置によれば、第2プロセッサ群に属するプロセッサが、MIMDのスキューおよび生成率のスキューにより極めて早く、あるデータグループ(バケット,チャンク)に対する処理を終了した場合、他のデータグループの処理のために、即時、そのプロセッサの演算性能が使用されることになり、システム全体の業務のために割り当てられた演算性能が無駄にならない。
【0311】
逆に、第2プロセッサ群に属するプロセッサが、MIMDのスキューおよび生成率のスキューにより予想より極めて長い処理時間を要した場合でも、他のプロセッサがその分の処理を引き受けることになり、システム性能に対する影響を低く抑えることができる。
従って、突き合わせ等の処理に際してのMIMDのスキューおよび生成率のスキューに確実に対応することができる。
【0312】
また、請求項6記載の並列プロセッサ装置によれば、上述した請求項5記載の並列プロセッサ装置と同様の効果を得られるが、特に、本装置によれば、データ量の大きいデータグループから順に割当を行なうことで、万一、最後に割り当てたデータグループについて大きなスキューが発生したとしても、データグループの大きさそのものが小さければ、システム性能に対する影響が十分に小さくなるので、MIMDのスキューおよび生成率のスキューに、より確実に対応できる効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例としての並列プロセッサ装置の全体構成を示すブロック図である。
【図2】第1実施例におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図3】第1実施例における転送宛先プロセッサ決定用テーブルの具体的な構成例を示す図である。
【図4】第1実施例におけるプロセッサ間通信機構の構成例を示す図である。
【図5】第1実施例におけるプロセッサ間で送受されるデータのフォーマットを示す図である。
【図6】第1実施例におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図7】第1実施例におけるS−DPrの動作アルゴリズムを説明するための図である。
【図8】第1実施例におけるT−DPrの動作アルゴリズムを説明するための図である。
【図9】本発明の第2実施例としての並列プロセッサ装置の全体構成を示すブロック図である。
【図10】第2実施例におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図11】第2実施例における転送キューの構造の一例を示す図である。
【図12】第2実施例におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図13】第2実施例のT−DPrにおいてラウンドロビン方式での送信トリガ信号の送付を実現するためのポインタおよび一次元テーブルの詳細な構造の例を示す図である。
【図14】第2実施例におけるS−DPrの動作アルゴリズムを説明するための図である。
【図15】第2実施例におけるS−DPrの動作アルゴリズムを説明するための図である。
【図16】第2実施例におけるT−DPrからのトリガ信号のための電文フォーマットの一例を示す図である。
【図17】第2実施例におけるT−DPrの動作アルゴリズムを説明するための図である。
【図18】本発明の第3実施例としての並列プロセッサ装置におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図19】本発明の第3実施例としての並列プロセッサ装置におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図20】第3実施例における転送データフォーマットの一例を説明するための図である。
【図21】本発明の第4実施例としての並列プロセッサ装置におけるS−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図22】第4実施例における転送キューの構造の一例を示す図である。
【図23】本発明の第4実施例としての並列プロセッサ装置におけるT−DPrの内部ハードウェア構成を概略的に示すブロック図である。
【図24】本発明の第5実施例としての並列プロセッサ装置の全体構成を示すブロック図である。
【図25】第5実施例におけるバケット割当テーブルの概要を説明するための図である。
【図26】第5実施例における状態管理テーブルを説明するための図である。
【図27】第5実施例における管理用プロセッサの動作を説明するためのフローチャートである。
【図28】第5実施例における第1プロセッサ群に属する各プロセッサの動作を説明するためのフローチャートである。
【図29】第5実施例における第2プロセッサ群に属する各プロセッサの動作を説明するためのフローチャートである。
【図30】本発明の第6実施例としての並列プロセッサ装置の全体構成を示すブロック図である。
【図31】第6実施例におけるバケット割当テーブルの概要を説明するための図である。
【図32】第6実施例における状態管理テーブルを説明するための図である。
【図33】第6実施例における管理用プロセッサの動作を説明するためのフローチャートである。
【図34】第6実施例における第1プロセッサ群に属するプロセッサの動作を説明するためのフローチャートである。
【図35】第6実施例における第2プロセッサ群に属するプロセッサの動作を説明するためのフローチャートである。
【図36】従来の並列プロセッサ装置の全体構成を示すブロック図である。
【図37】従来の並列プロセッサ装置におけるネットワーク機構の内部構造を示すブロック図である。
【図38】図37に示すネットワーク機構を構成する各スイッチングユニットの内部構造を示すブロック図である。
【図39】各スイッチングユニットにおける作業テーブルの内容を示す図である。
【図40】各スイッチングユニットの入出力データの論理的フォーマットを示す図である。
【図41】従来の並列プロセッサ装置におけるS−DPrの内部ハードウエア構成を示すブロック図である。
【図42】従来の並列プロセッサ装置におけるT−DPrの内部ハードウエア構成を示すブロック図である。
【図43】従来の並列プロセッサ装置におけるS−DPrの動作アルゴリズムを説明するための図である。
【図44】従来の並列プロセッサ装置におけるT−DPrの動作アルゴリズムを説明するための図である。
【図45】従来の並列プロセッサ装置の他例の全体構成を示すブロック図である。
【図46】従来の並列プロセッサ装置の他例におけるバケット割当テーブルの概略フォーマット例を示す図である。
【図47】従来の並列プロセッサ装置の他例の動作概要を説明するためのフローチャートである。
【図48】従来の並列プロセッサ装置の他例の動作概要を説明するためのフローチャートである。
【図49】従来の並列プロセッサ装置の他例の動作概要を説明するためのフローチャートである。
【符号の説明】
400 ソースデータプロセッサ群
400A〜400C ソースデータプロセッサ(S−DPr)
401 マイクロプロセッサ
402 主記憶部
403 入力ポート回路
404 出力ポート回路
405〜407 I/O駆動回路
408〜410 I/O装置
411〜413 I/Oバス
414 入出力線
416 入力線
420 転送宛先プロセッサ決定用テーブル
421 変換1次元リスト
600 ネットワーク機構
601 共通バス
700 ターゲットデータプロセッサ群
700A〜700C ターゲットデータプロセッサ(T−DPr)
701 マイクロプロセッサ
702 主記憶部
703 入力ポート回路
704 出力ポート回路
705〜707 I/O駆動回路
708〜710 I/O装置
711〜713 I/Oバス
714 入出力線
716 入力線
800 ソースデータプロセッサ群
800A〜800C ソースデータプロセッサ(S−DPr)
801 マイクロプロセッサ
802 主記憶部
803 入力ポート回路
804 出力ポート回路
805〜807 I/O駆動回路
808〜810 I/O装置
811〜813 I/Oバス
814 入出力線
816 入力線
820 転送宛先プロセッサ決定用テーブル
830〜832 転送キュー(待ち行列機構)
840 転送データ
841 キュー長フィールド(蓄積数検出手段)
850 送信バッファ
900 ターゲットデータプロセッサ群
900A〜900C ターゲットデータプロセッサ(T−DPr)
901 マイクロプロセッサ
902 主記憶部
903 入力ポート回路
904 出力ポート回路
905〜907 I/O駆動回路
908〜910 I/O装置
911〜913 I/Oバス
914 入出力線
916 入力線
922 ラウンドロビンポインタ
923 1次元テーブル
923A 台数情報フィールド
923−0〜923−(n−1) 識別子フィールド
950 受信バッファ
1200 ソースデータプロセッサ(S−DPr)
1201 マイクロプロセッサ
1202 主記憶部
1203 入力ポート回路
1204 出力ポート回路
1205〜1207 I/O駆動回路
1208〜1210 I/O装置
1211〜1213 I/Oバス
1214 入出力線
1216 入力線
1220 転送宛先プロセッサ決定用テーブル
1230〜1232 転送キュー(待ち行列機構)
1240 転送データ
1241 キュー長フィールド(蓄積数検出手段)
1250 送信バッファ
1247 転送データ量フィールド(蓄積データ量検出手段)
1300 ターゲットデータプロセッサ(T−DPr)
1301 マイクロプロセッサ
1302 主記憶部
1303 入力ポート回路
1304 出力ポート回路
1305〜1307 I/O駆動回路
1308〜1310 I/O装置
1311〜1313 I/Oバス
1314 入出力線
1316 入力線
1322 ラウンドロビンポインタ
1323 1次元テーブル
1350 受信バッファ
1400 第1プロセッサ群
1400A〜1400C プロセッサ
1500 第2プロセッサ群
1500A〜1500C プロセッサ
1600,1700 管理用プロセッサ
1601,1701 バケット割当テーブル
1602,1702 状態管理テーブル
Claims (6)
- 並列的に動作する複数のプロセッサをそなえ、
該複数のプロセッサに、
単一の処理の対象となるデータの塊(以下、チャンクという)を分割した複数の部分集合(以下、サブチャンクという)をそれぞれ格納するプロセッサの集合(以下、ソースデータプロセッサ群という)と、
該ソースデータプロセッサ群に属する各プロセッサに格納された該サブチャンクを構成する、個々に独立して処理を受けることが可能な複数のデータ項目(以下、エンティティという)を、該ソースデータプロセッサ群に属する各プロセッサから転送されて一旦格納するプロセッサの集合(ターゲットデータプロセッサ群;以下、第1プロセッサ群という)と、
該ソースデータプロセッサ群から転送されて該第1プロセッサ群に格納されたデータを、該第1プロセッサ群から送付され、送付されたデータに対する前記処理を実行する第2プロセッサ群とを含み、
該第2プロセッサ群が前記処理を実行するのに先立ち、前記処理の対象となるデータを該ソースデータプロセッサ群から該第1プロセッサ群に属する各プロセッサに分散して格納し、該第1プロセッサ群に属する各プロセッサにおいて格納されたデータを所定規則に従って少なくとも一つのデータグループに予めグルーピングする並列プロセッサ装置であって、
該ソースデータプロセッサ群に属する各プロセッサは、個々に独立して前記サブチャンクを構成する各エンティティに対して所定の評価関数を適用し、各エンティティに対応する該所定の評価関数の出力値を得てから、当該出力値を付加したエンティティを該第1プロセッサ群に属するプロセッサの一つに転送する一方、
該第1プロセッサ群に属する各プロセッサは、該ソースデータプロセッサ群に属する各プロセッサからのエンティティを受理すると、当該エンティティに付加された該所定の評価関数の出力値を参照し、受理したエンティティを、付加された出力値毎に分類して格納するものであり、
該ソースデータプロセッサ群に属する各プロセッサが、該第1プロセッサ群に属する各プロセッサの識別子を第1指定要素とし前記所定の評価関数の出力値を第2指定要素とし、該第1指定要素の識別子をもつプロセッサに該第2指定要素の出力値をもつエンティティをいくつ転送したかを示すカウント値を保持する転送宛先プロセッサ決定用テーブルをそなえ、
該ソースデータプロセッサ群に属する各プロセッサは、転送すべきエンティティに対応する該所定の評価関数の出力値を得ると、前記転送宛先プロセッサ決定用テーブルにおいて当該出力値に対応するカウント値を参照し、当該出力値をもつエンティティを該第1プロセッサ群に属する各プロセッサに対して既にいくつ転送したかを把握し、そのカウント値の最も小さいプロセッサを当該エンティティの転送宛先に決定するとともに、当該カウント値を1だけ増加させることを
特徴とする、並列プロセッサ装置。 - 並列的に動作する複数のプロセッサをそなえ、
該複数のプロセッサに、
単一の処理の対象となるデータの塊(以下、チャンクという)を分割した複数の部分集合(以下、サブチャンクという)をそれぞれ格納するプロセッサの集合(以下、ソースデータプロセッサ群という)と、
該ソースデータプロセッサ群に属する各プロセッサに格納された該サブチャンクを構成する、個々に独立して処理を受けることが可能な複数のデータ項目(以下、エンティティという)を、該ソースデータプロセッサ群に属する各プロセッサから転送されて一旦格納するプロセッサの集合(ターゲットデータプロセッサ群;以下、第1プロセッサ群という)と、
該ソースデータプロセッサ群から転送されて該第1プロセッサ群に格納されたデータを 、該第1プロセッサ群から送付され、送付されたデータに対する前記処理を実行する第2プロセッサ群とを含み、
該第2プロセッサ群が前記処理を実行するのに先立ち、前記処理の対象となるデータを該ソースデータプロセッサ群から該第1プロセッサ群に属する各プロセッサに分散して格納し、該第1プロセッサ群に属する各プロセッサにおいて格納されたデータを所定規則に従って少なくとも一つのデータグループに予めグルーピングする並列プロセッサ装置であって、
該ソースデータプロセッサ群に属する各プロセッサは、個々に独立して前記サブチャンクを構成する各エンティティに対して所定の評価関数を適用し、各エンティティに対応する該所定の評価関数の出力値を得てから、当該出力値を付加したエンティティを該第1プロセッサ群に属するプロセッサの一つに転送するもので、該第1プロセッサ群に属する全てのプロセッサに1対1に対応して転送対象エンティティを順次蓄積しうる待ち行列機構と、該待ち行列機構に蓄積される該転送対象エンティティの数を検出する蓄積数検出手段とを有して構成される一方、
該第1プロセッサ群に属する各プロセッサは、該ソースデータプロセッサ群に属する各プロセッサからエンティティ受信可能な状態になると、該ソースデータプロセッサ群に属する全てのプロセッサに対して等しい頻度で送信開始指示を送付し、該ソースデータプロセッサ群に属する各プロセッサからのエンティティを受理すると、当該エンティティに付加された該所定の評価関数の出力値を参照し、受理したエンティティを、付加された出力値毎に分類して格納するものであり、
該ソースデータプロセッサ群に属する各プロセッサが、該第1プロセッサ群に属する各プロセッサの識別子を第1指定要素とし前記所定の評価関数の出力値を第2指定要素とし、該第1指定要素の識別子をもつプロセッサに該第2指定要素の出力値をもつエンティティをいくつ転送したかを示すカウント値を保持する転送宛先プロセッサ決定用テーブルをそなえ、
該ソースデータプロセッサ群に属する各プロセッサは、転送すべきエンティティに対応する該所定の評価関数の出力値を得ると、前記転送宛先プロセッサ決定用テーブルにおいて当該出力値に対応するカウント値を参照し、当該出力値をもつエンティティを該第1プロセッサ群に属する各プロセッサに対して既にいくつ転送したかを把握し、そのカウント値の最も小さいプロセッサを当該エンティティの転送宛先に決定するとともに、当該カウント値を、該時点で該蓄積数検出手段により検出された該待ち行列機構内の転送対象エンティティ数に1を加算した値、もしくは、この加算値に0以外の定数を乗算した値だけ増加させることを
特徴とする、並列プロセッサ装置。 - 該ソースデータプロセッサ群に属する各プロセッサから該第1プロセッサ群に属する各プロセッサへのエンティティ転送単位が、複数のエンティティの集合体であることを特徴とする、請求項1または請求項2に記載の並列プロセッサ装置。
- 並列的に動作する複数のプロセッサをそなえ、
該複数のプロセッサに、
単一の処理の対象となるデータの塊(以下、チャンクという)を分割した複数の部分集合(以下、サブチャンクという)をそれぞれ格納するプロセッサの集合(以下、ソースデータプロセッサ群という)と、
該ソースデータプロセッサ群に属する各プロセッサに格納された該サブチャンクを構成する、個々に独立して処理を受けることが可能な複数のデータ項目(以下、エンティティという)を、該ソースデータプロセッサ群に属する各プロセッサから転送されて一旦格納するプロセッサの集合(ターゲットデータプロセッサ群;以下、第1プロセッサ群という)と、
該ソースデータプロセッサ群から転送されて該第1プロセッサ群に格納されたデータを、該第1プロセッサ群から送付され、送付されたデータに対する前記処理を実行する第2プロセッサ群とを含み、
該第2プロセッサ群が前記処理を実行するのに先立ち、前記処理の対象となるデータを該ソースデータプロセッサ群から該第1プロセッサ群に属する各プロセッサに分散して格納し、該第1プロセッサ群に属する各プロセッサにおいて格納されたデータを所定規則に従って少なくとも一つのデータグループに予めグルーピングする並列プロセッサ装置であって、
該ソースデータプロセッサ群に属する各プロセッサは、個々に独立して前記サブチャンクを構成する各エンティティに対して所定の評価関数を適用し、各エンティティに対応する該所定の評価関数の出力値を得てから、当該出力値を付加した複数のエンティティを一つの転送単位として該第1プロセッサ群に属するプロセッサの一つに転送するもので、該第1プロセッサ群に属する全てのプロセッサに1対1に対応して転送対象エンティティを順次蓄積しうる待ち行列機構と、該待ち行列機構に蓄積される該転送対象エンティティのデータ量を検出する蓄積データ量検出手段とを有して構成される一方、
該第1プロセッサ群に属する各プロセッサは、該ソースデータプロセッサ群に属する各プロセッサからエンティティ受信可能な状態になると、該ソースデータプロセッサ群に属する全てのプロセッサに対して等しい頻度で送信開始指示を送付し、該ソースデータプロセッサ群に属する各プロセッサからのエンティティを受理すると、当該エンティティに付加された該所定の評価関数の出力値を参照し、受理したエンティティを、付加された出力値毎に分類して格納するものであり、
該ソースデータプロセッサ群に属する各プロセッサが、該第1プロセッサ群に属する各プロセッサの識別子を第1指定要素とし前記所定の評価関数の出力値を第2指定要素とし、該第1指定要素の識別子をもつプロセッサに該第2指定要素の出力値をもつエンティティをどれだけ転送したかを示すデータ量を保持する転送宛先プロセッサ決定用テーブルをそなえ、
該ソースデータプロセッサ群に属する各プロセッサは、転送すべきエンティティに対応する該所定の評価関数の出力値を得ると、前記転送宛先プロセッサ決定用テーブルにおいて当該出力値に対応するデータ量を参照し、当該出力値をもつエンティティを該第1プロセッサ群に属する各プロセッサに対して既にどれだけ転送したかを把握し、そのデータ量の最も小さいプロセッサを当該エンティティの転送宛先に決定するとともに、当該データ量を、該時点で該蓄積数検出手段により検出された該待ち行列機構内の転送対象エンティティのデータ量と現在処理中のエンティティのデータ量とを加算した値、もしくは、この加算値に0以外の定数を乗算した値だけ増加させることを
特徴とする、並列プロセッサ装置。 - 該第1プロセッサ群に属する各プロセッサは、自プロセッサにおけるグルーピング結果を該複数のプロセッサに含まれる管理用プロセッサに通知するものであり、
該管理用プロセッサは、該第1プロセッサ群に属する各プロセッサからの通知を受け、該第1プロセッサ群に属する各プロセッサに格納されているデータグループを記憶するものであり、
該第2プロセッサ群に属する各プロセッサは、上記データグループについて新たな処理を開始できる状況になると、該管理用プロセッサに対してデータグループの割当を依頼するものであり、
該管理用プロセッサは、該第2プロセッサ群に属する各プロセッサからデータグループの割当依頼を受けると、当該割当依頼を行なったプロセッサに対し、未割当のデータグループの割当を行ない、
該第1プロセッサ群に属する各プロセッサは、該管理用プロセッサによるデータ割当に従い、該第2プロセッサ群に属する各プロセッサに対して該当するデータグループの全データを送付することを特徴とする、請求項1〜請求項4のいずれか一項に記載の並列プロセッサ装置。 - 該第1プロセッサ群に属する各プロセッサは、自プロセッサにおけるグルーピング結果として各データグループの識別子と容量とを該複数のプロセッサに含まれる管理用プロセッサに通知するものであり、
該管理用プロセッサは、該第1プロセッサ群に属する各プロセッサからの通知を受け、該第1プロセッサ群に属する各プロセッサに格納されているデータグループの容量を各データグループについて積算し、該第1プロセッサ群全体について各データグループの容量を各データグループの識別子とともに記憶するものであり、
該第2プロセッサ群に属する各プロセッサは、上記データグループについて新たな処理を開始できる状況になると、該管理用プロセッサに対してデータグループの割当を依頼するものであり、
該管理用プロセッサは、該第2プロセッサ群に属する各プロセッサからデータグループの割当依頼を受けると、当該割当依頼を行なったプロセッサに対し、記憶しているデータグループのうち容量の大きいものから順に割当を行ない、
該第1プロセッサ群に属する各プロセッサは、該管理用プロセッサによるデータ割当に従い、該第2プロセッサ群に属する各プロセッサに対して該当するデータグループの全データを送付することを特徴とする、請求項1〜請求項4のいずれか一項に記載の並列プロセッサ装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30249994A JP3560662B2 (ja) | 1994-12-06 | 1994-12-06 | 並列プロセッサ装置 |
US08/525,171 US5724600A (en) | 1994-12-06 | 1995-09-08 | Parallel processor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30249994A JP3560662B2 (ja) | 1994-12-06 | 1994-12-06 | 並列プロセッサ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08161275A JPH08161275A (ja) | 1996-06-21 |
JP3560662B2 true JP3560662B2 (ja) | 2004-09-02 |
Family
ID=17909703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30249994A Expired - Fee Related JP3560662B2 (ja) | 1994-12-06 | 1994-12-06 | 並列プロセッサ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5724600A (ja) |
JP (1) | JP3560662B2 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3560690B2 (ja) * | 1995-06-14 | 2004-09-02 | 富士通株式会社 | 並列プロセッサ装置 |
JP3510042B2 (ja) | 1996-04-26 | 2004-03-22 | 株式会社日立製作所 | データベース管理方法及びシステム |
US5826095A (en) * | 1996-08-27 | 1998-10-20 | Hewlett-Packard Company | Method and apparatus for maintaining the order of data items processed by parallel processors |
US5832509A (en) * | 1996-12-17 | 1998-11-03 | Chrysler Corporation | Apparatus and method for adjusting data sizes in database operations |
JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
US6065005A (en) * | 1997-12-17 | 2000-05-16 | International Business Machines Corporation | Data sorting |
US6338033B1 (en) * | 1999-04-20 | 2002-01-08 | Alis Technologies, Inc. | System and method for network-based teletranslation from one natural language to another |
JP2001175611A (ja) * | 1999-12-17 | 2001-06-29 | Nec Corp | プロセッサ間通信インタフェース回路及び半導体集積回路装置 |
JP2001297026A (ja) * | 2000-04-11 | 2001-10-26 | Hitachi Ltd | 複数のデータベースマネージメントシステムを有する計算機システム |
US6588008B1 (en) * | 2000-04-11 | 2003-07-01 | International Business Machines Corporation | Assembler tool for processor-coprocessor computer systems |
US6505269B1 (en) * | 2000-05-16 | 2003-01-07 | Cisco Technology, Inc. | Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system |
US7076482B2 (en) * | 2001-10-25 | 2006-07-11 | Bea Systems, Inc. | Multi-part looked-up table fields and its use in data processing operations involving multiple tables of a relational database |
US7194568B2 (en) * | 2003-03-21 | 2007-03-20 | Cisco Technology, Inc. | System and method for dynamic mirror-bank addressing |
US8453147B2 (en) * | 2006-06-05 | 2013-05-28 | Cisco Technology, Inc. | Techniques for reducing thread overhead for systems with multiple multi-threaded processors |
US8041929B2 (en) | 2006-06-16 | 2011-10-18 | Cisco Technology, Inc. | Techniques for hardware-assisted multi-threaded processing |
US8010966B2 (en) * | 2006-09-27 | 2011-08-30 | Cisco Technology, Inc. | Multi-threaded processing using path locks |
US7926058B2 (en) | 2007-02-06 | 2011-04-12 | Mba Sciences, Inc. | Resource tracking method and apparatus |
KR100943763B1 (ko) * | 2007-12-12 | 2010-02-23 | 한국전자통신연구원 | 이동통신망에서 채널을 추정하는 방법 및 이를 수행하는장치 |
WO2010064661A1 (ja) * | 2008-12-04 | 2010-06-10 | 日本電気株式会社 | 並列計算システム、その方法及びそのプログラム |
EP2214100A1 (en) * | 2009-01-30 | 2010-08-04 | BRITISH TELECOMMUNICATIONS public limited company | Allocation of processing tasks |
JP5544099B2 (ja) * | 2009-02-27 | 2014-07-09 | 株式会社日立製作所 | コントローラ通信方法およびコントローラ通信装置 |
US9438656B2 (en) * | 2012-01-11 | 2016-09-06 | International Business Machines Corporation | Triggering window conditions by streaming features of an operator graph |
CN105164634A (zh) * | 2013-03-29 | 2015-12-16 | 惠普发展公司,有限责任合伙企业 | 批处理元组 |
US11947927B2 (en) * | 2019-12-26 | 2024-04-02 | Yahoo Assets Llc | Sorting unsorted rows of a composite dataset after a join operation |
CN113342885B (zh) * | 2021-06-15 | 2022-08-12 | 深圳前海微众银行股份有限公司 | 数据导入方法、装置、设备及计算机程序产品 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530051A (en) * | 1982-09-10 | 1985-07-16 | At&T Bell Laboratories | Program process execution in a distributed multiprocessor system |
CA1293819C (en) * | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
US5241677A (en) * | 1986-12-19 | 1993-08-31 | Nippon Telepgraph and Telehone Corporation | Multiprocessor system and a method of load balancing thereof |
JP2738692B2 (ja) * | 1988-01-29 | 1998-04-08 | 株式会社日立製作所 | 並列化コンパイル方法 |
US5438680A (en) * | 1988-04-29 | 1995-08-01 | Intellectual Properties And Technology, Inc. | Method and apparatus for enhancing concurrency in a parallel digital computer |
US5146590A (en) * | 1989-01-13 | 1992-09-08 | International Business Machines Corporation | Method for sorting using approximate key distribution in a distributed system |
US5168572A (en) * | 1989-03-10 | 1992-12-01 | The Boeing Company | System for dynamic selection of globally-determined optimal data path |
JP2960123B2 (ja) * | 1989-11-06 | 1999-10-06 | 優 喜連川 | データ分配方式 |
JP3395208B2 (ja) * | 1991-07-10 | 2003-04-07 | 株式会社日立製作所 | 分散データベースのソート方法およびアクセス方法 |
JPH05216842A (ja) * | 1992-02-05 | 1993-08-27 | Mitsubishi Electric Corp | 資源管理装置 |
US6101321A (en) * | 1992-04-10 | 2000-08-08 | Eastman Kodak Company | Method and apparatus for broadcasting data in a ring connected multiprocessor |
JP2977688B2 (ja) * | 1992-12-18 | 1999-11-15 | 富士通株式会社 | マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ |
JP2931490B2 (ja) * | 1992-12-18 | 1999-08-09 | 富士通株式会社 | 並列処理方式 |
JP3266351B2 (ja) * | 1993-01-20 | 2002-03-18 | 株式会社日立製作所 | データベース管理システムおよび問合せの処理方法 |
-
1994
- 1994-12-06 JP JP30249994A patent/JP3560662B2/ja not_active Expired - Fee Related
-
1995
- 1995-09-08 US US08/525,171 patent/US5724600A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08161275A (ja) | 1996-06-21 |
US5724600A (en) | 1998-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3560662B2 (ja) | 並列プロセッサ装置 | |
US11200486B2 (en) | Convolutional neural networks on hardware accelerators | |
JP6100712B2 (ja) | 記憶側記憶要求管理 | |
US6119143A (en) | Computer system and method for load balancing with selective control | |
US10452971B2 (en) | Deep neural network partitioning on servers | |
US6587938B1 (en) | Method, system and program products for managing central processing unit resources of a computing environment | |
US5191578A (en) | Packet parallel interconnection network | |
US5854938A (en) | Parallel processor apparatus in which data is divided in sequential stages | |
KR101827369B1 (ko) | 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법 | |
JP4772854B2 (ja) | 計算機システムの構成管理方法、計算機システム及び構成管理プログラム | |
US20050223096A1 (en) | NAS load balancing system | |
JPH04229356A (ja) | ロードバランスシステム | |
WO2007002443A2 (en) | Control of service workload management | |
CN1410905A (zh) | 一种全分布式的集群网络服务器*** | |
JP3584630B2 (ja) | データベース処理システムにおける分類集計処理方法 | |
Paul et al. | MG-Join: A scalable join for massively parallel multi-GPU architectures | |
US20230164088A1 (en) | Low Latency Queuing System | |
EP0841617A2 (en) | Dynamic allocation of buffer space between requests and responses | |
Guo | Aggregating uncertain incast transfers in BCube-like data centers | |
US11556382B1 (en) | Hardware accelerated compute kernels for heterogeneous compute environments | |
US20080034054A1 (en) | System and method for reservation flow control | |
JP4353869B2 (ja) | 並列ソートシステム、並列ソートサーバ、クライアント、並列ソート方法、プログラム、記録媒体 | |
CN1324026A (zh) | 基于自主附网虚拟盘阵列的集群视频服务器及方法 | |
Moose et al. | Link models for networks with dynamic topologies | |
Abawajy | An integrated resource scheduling approach on cluster computing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040210 |
|
A521 | Written amendment |
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 |
|
LAPS | Cancellation because of no payment of annual fees |