JP3617672B2 - 並列プロセッサシステム - Google Patents
並列プロセッサシステム Download PDFInfo
- Publication number
- JP3617672B2 JP3617672B2 JP04210494A JP4210494A JP3617672B2 JP 3617672 B2 JP3617672 B2 JP 3617672B2 JP 04210494 A JP04210494 A JP 04210494A JP 4210494 A JP4210494 A JP 4210494A JP 3617672 B2 JP3617672 B2 JP 3617672B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- processor
- transferred
- processors
- parallel
- 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 - Lifetime
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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
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)
- Computer And Data Communications (AREA)
Description
【産業上の利用分野】
本発明は磁気ディスクなどの二次記憶装置がそれぞれ接続された複数のプロセッサをネットワークによって結合し、全体として1つの作業を遂行する並列プロセッサシステムに係り、更に詳しくは並列プロセッサシステムを構成する各プロセッサの間で処理されるデータを均一化するプロセッサ間データ分割方式に関する。
【0002】
【従来の技術】
並列プロセッサシステムには、例えば複数の磁気ディスク装置に格納されたデータに対して、スイッチを介してシステム内の各プロセッサが自由にアクセスできるデータ共有型と、各プロセッサにそれぞれ専用の二次記憶装置が接続され、各プロセッサがネットワークを介してデータの交換を行うデータ分散型とがある。
【0003】
図7はデータ分散型並列プロセッサシステムの構成ブロック図である。同図において、システムを構成する各プロセッサ10に対してそれぞれ専用の二次記憶装置、例えば磁気ディスク11が接続され、各プロセッサ10の間ではネットワーク12を介して相互にデータの交換が行われる。
【0004】
図7のようなデータ分散型並列プロセッサシステムを用いたデータベース処理におけるハッシュジョインについて説明する。ハッシュジョインはエクイバレントジョインと言われるアルゴリズムの1つである。
【0005】
図7において、各磁気ディスク11にはデータベースにおける第1のテーブルRと、第2のテーブルSとの内容が分散して格納されているものとする。テーブルRには従業員の識別番号と、その識別番号に対応する従業員名が格納され、テーブルSには従業員の識別番号と、その識別番号に対応する従業員の年収が格納されているものとする。エクイバレントジョイン処理とは、テーブルRとテーブルSとの内容を検索し、従業員の識別番号をキーとして、従業員名とその従業員の年収を対として格納する第3のテーブルを作成する処理である。
【0006】
ハッシュジョインはデータ分散型並列プロセッサシステムにおいて行われるエクイバレントジョインであり、この処理では識別番号を複数のグループにグループ分けし、同一グループに属するデータ、すなわちテーブルRとテーブルSとの内容を、そのグループのデータのエクイバレントジョイン処理を担当するプロセッサに、各プロセッサが転送を行い、そのグループのデータが全て転送された後に、担当プロセッサがエクイバレントジョイン処理を行うことになる。
【0007】
このハッシュジョインの手順を、次の手順1〜手順4によって説明する。
手順1:個々のプロセッサ(プロセッサ番号0〜Npe−1)はディスクから論理的に1固まりとして扱われるべきデータ(レコードあるいはタプルと言う)を読み出し、これにあるグループ化関数を適用してこのデータを処理すべきプロセッサを特定する。
【0008】
手順2:個々のプロセッサは上記プロセッサにこのデータを転送する。
手順3:上記処理を全てのデータに適用した後には、各プロセッサにはそれぞれの内部で処理されるべきデータが集中することになる。
【0009】
手順4:各プロセッサは以後独立して内部でジョイン処理を行う。
上記において、グループ化関数は全てのプロセッサにおいて同じものが使用されねばならず、かつ同一のデータ値に対しては同一の値が返されるものが使用される。かつデータのプロセッサ間転送時には、同一のグループ化関数出力値を持つデータ群は、全て同一のプロセッサに対して転送される。
【0010】
このことにより、同一のデータ値を持つ可能性のあるデータは全て同一のプロセッサに転送されるので、同一のデータ値を持つデータ間の処理は該プロセッサ内部に閉じて実行することができる。
【0011】
ところで、上記処理において、グループ化関数の出力値の分布が大幅に偏っていると、つまりあるプロセッサのみ大量のデータが送信されると、このプロセッサの演算性能がボトルネックとなってシステム全体の性能が低下してしまう。
【0012】
例えば前述の2つのテーブルRとSに各従業員の氏名が格納されており、前述のグループ化を氏名のうちの名字をキーとして行うものとすると、例えば鈴木や田中と言うような名字に対応するグループのデータの量は他の名字のグループのデータ量に比べてかなり大きくなり、そのような名字のグループのデータの処理を担当するプロセッサの負荷が大きくなり、システム全体の性能低下の原因となる。この性能低下を防ぐためにバケット組合せ調整処理が行われる。
【0013】
バケットとは、前述のように例えば識別番号によってグループ化されたデータがグループとして全体的に集められたまとまりのことであり、バケット組合せ調整処理ではグループ化関数をうまく選んでバケットの大きさが十分小さくなるようにし、1つのプロセッサが複数のバケットのデータの処理を担当して、並列プロセッサシステム内の各プロセッサが担当する複数のバケットの組合せとしてのデータの総計が均一化されるように調整する処理である。この処理は次の手順1〜手順4によって行われる。
【0014】
手順1:グループ化関数の出力の値の種類がプロセッサ台数を大幅に上回る様なものを選択する。より具体的には、1プロセッサ中のデータであって同一のグループ化関数出力値を持つデータ群をまとめたものをサブバケットと総称するが、最も大きなサブバケットのサイズがデータ総量をプロセッサ台数の自乗で割ったものよりも十分小さい様な関数を選択する。なお、システム内で同一のグループ化関数の(出力)値を持つサブバケットを全てのプロセッサから集めたものがバケットとなる。
【0015】
手順2:予めこのグループ化関数を全データに適用しておき、各サブバケットの大きさを調べておく。
手順3:どのサブバケット同士を組み合わせて同一のプロセッサに転送すれば全プロセッサの処理データ量がほぼ同じくなるかを考え、これが実現できる様にサブバケット間の組合せを記憶しておく(あるプロセッサでサブバケットBとサブバケットCが組み合わされプロセッサDに転送されるならば、全てのプロセッサでサブバケットBとサブバケットCが組み合わされてプロセッサDに転送されなければならない。この為上記評価は全てのプロセッサでの全てのサブバケットサイズの情報を踏まえて行われる)。
【0016】
手順4:実際のデータ処理が行われる時、各プロセッサは上記情報に基づいてサブバケット間の組合せを行い、他プロセッサへの転送を行う。グループ化関数の値が同一で、ある1つのプロセッサへ転送されるデータの総称がバケットである。
【0017】
さてこの処理中での手順4では、各プロセッサは各バケットに対応して複数のデータバッファを主記憶上に準備し、データの生成(例えば二次記憶からのデータ読み出し)と並列してデータへのグループ化関数の適用と評価(サブバケットへの分割)を行い、対応するデータバッファに投入する。そしてこのデータバッファ内に蓄積されたデータ量があるスレッショルド値を越えた時、該データバッファ内容(バケットの一部)を対応するプロセッサに送信する。
【0018】
データバッファリングを行う理由は通常プロセッサ間転送手段はデータ量に依存しないかなり大きなオーバヘッドを持つ為で、転送性能を低下させない為にはある程度まとまったデータ量を一括して転送することが必要だからである。
【0019】
一般に並列プロセッサシステム内の1つのプロセッサの主記憶容量は、システム内で処理されるべきデータの総量をプロセッサの台数で割った値、すなわちバケットの組合せとして1つのプロセッサに転送されるデータの総量よりもかなり小さい。前述のハッシュジョイン処理を高速に行うためには、1つのグループとしてグループ化されたデータ、すなわちバケットの大きさが1つのプロセッサの主記憶上に乗ることが望ましい。このようにある程度まとまりを持つデータブロックを一括して主記憶上に展開し、データ処理を高速化する可能性はメモリコストの低下に伴って発生したものである。主記憶上に1つのグループのデータが乗るようにバケットを作成して、各プロセッサ内で処理を行う場合について、具体的なプロセッサシステムを対象として従来例をさらに詳しく説明する。
【0020】
図8は並列プロセッサシステムの構成例である。同図において、n+1個のプロセッサ(A0〜An)が、外部バス(B)16によって相互に接続されている。各プロセッサ15はCPU20、主記憶装置21、二次メモリ22、および主記憶装置21と外部バス16との間でデータの入出力に使用される入出力ポート23から構成されている。このシステム内で、2つのプロセッサの間で行われるデータの転送について説明する。
【0021】
図9は2つのプロセッサの間におけるデータ転送の従来例の説明図である。同図においてプロセッサAiからプロセッサAjへのデータ転送について説明する。同図において24はプロセッサAiにおいて二次メモリ22iから読み出されたデータ、例えば1つのレコードであり、25はこのデータを他のプロセッサ、ここではAjに転送するために一時的にこのデータが格納されるバッファ群であり、26iおよび26jはそれぞれのプロセッサの中でデータの転送を処理するプロセスであり、27はプロセッサAiから転送されたデータであり、28は二次メモリ22iから読み出されたデータ24をバッファ群25のうちのどのバッファに投入すべきかを決定するための変換テーブルであり、29はプロセッサAj内で転送されたデータを格納するための二次メモリ22j内の領域である。
【0022】
図9において、プロセッサAi側で二次メモリ22iから読み出されたデータ24に対して、プロセッサ26iによってデータのグループ化のためのグループ化関数が適用される。そのグループ化関数の値によってそのデータが所属すべきバケットが決定され、またそのデータが転送されるべきプロセッサが決定される。このデータがどのバケットに所属し、またどのプロセッサに転送されるべきかは、全てのプロセッサのデータの予備読み込みによって、例えば図示しない親プロセッサ、または図8のプロセッサ15のうちのいずれか1つによって、全てのプロセッサでの負荷が均一になるようなバケットの組合せとして決定されており、その結果が変換テーブル28に格納されている。
【0023】
図10は転送元プロセッサでの変換テーブルの従来例である。同図において変換テーブル28は、グループ化関数出力値からその出力値に対応するデータがどの中間バケットに所属すべきかを示す中間バケット識別子への変換テーブル28aと、中間バケット識別子からそのデータの転送相手先プロセッサへの変換テーブル28bから構成されている。ここで中間バケットとはデータが転送相手先プロセッサに転送され、そのプロセッサ内で最終的なバケットとしてまとめられる過程における中間的なバケットを意味し、転送元プロセッサ内では前述のサブバケットに対応するものである。
【0024】
データ24に対して適用されるグループ化関数としては多くの種類が考えられるが、例えばデータが整数であり、またシステム内で扱われる全てのデータのグループ化結果としてのグループの数にあたる(中間)バケットの数がMであるならば、5Mを越える素数による剰余演算をグループ化関数として用いることができる。
【0025】
システム内に存在する(中間)バケットの数がMである時、転送データ格納用バッファ群25は、少なくともMより大きい数L+1個の小バッファから構成される。一般にバッファ群25へのデータの格納と、バッファ群25から他のプロセッサへのデータへの転送を同時に実行可能とするためにダブルバッファリングが行われ、小バッファの数L+1はバケットの数の2倍、すなわち2Mより大きくなる。
【0026】
プロセッサAi側で二次メモリ22iから読み出されたデータ24は、そのデータが所属すべきバケットに対応するバッファ群25内の小バッファに格納され、この小バッファの容量があるスレッショルド値Aを越えた時、その小バッファ内のデータはその中間バケットが転送されるべきプロセッサ、ここではAjに転送される。転送されたデータ27は、プロセス26jによってその中間バケットが格納されるべき二次メモリ22j内の領域29に格納され、全ての他のプロセッサから転送される対応する中間バケットと組み合わされて最終的なバケットに構成される。
【0027】
【発明が解決しようとする課題】
図8〜図10で説明したように、従来においては他のプロセッサに転送されるべきデータは、システム内に存在するバケットの数に対応する個数の小バッファによって構成されるバッファ群25のうちのいずれかに格納され、そのバケットを処理すべきプロセッサに転送されるが、この小バッファの数が非常に多くなり、主記憶上に設けられるこれらの小バッファが主記憶の大部分の領域を占有してしまうと言う問題点があった。
【0028】
前述のように、プロセッサの主記憶容量はシステム内で取り扱われるべきデータの総量をプロセッサの台数で割った値に比較して一般に非常に小さく、システム内に存在するバケットの数は非常に多くなる。二次メモリからデータが読み出される順序はあらかじめ予想することができないので、生成される可能生があるバケットの数Mを上回る数の小バッファが必要となり、しかも個々のバッファの容量としては、プロセッサ間で行われるデータ転送のオーバヘッドによって定まるスレッショルド値A以上であることが必要である。
【0029】
生成される可能性のあるバケットを予備読み込みによって調査することは不可能ではないが、その調査内容を全て記憶してバッファ管理に反映することは事実上不可能である。
【0030】
システム内に存在するバケットの数Mはデータ総量をプロセッサの主記憶容量で割ったものに対応し、その結果図9で他のプロセッサへの転送データを一時的に格納するためのバッファ群25の容量は全体として少なくとも次式で与えられる値を上回る必要がある。
【0031】
A×データ総量/プロセッサ主記憶容量
ここでAはバッファ群25の1つの小バッファ内のデータを一括転送するためのスレッショルド値である。
【0032】
例えばこのスレッショルド値Aが64KB、データ総量が64GB、主記憶容量が64MB程度であるとすると、上式の値は64MBとなり、主記憶容量を全て使いきってしまうような容量のバッファ群25が必要となることになり、実際問題としてこのような方式を実現することは不可能となる。このバッファ容量はシステム内の全てのプロセッサに対して必要となるものであり、このような方式を持つ並列プロセッサシステムは実現不可能であると言う問題点があった。
【0033】
本発明は、バケットの大きさを主記憶容量の程度に止めてデータの高速処理を可能とし、かつ主記憶容量の圧迫と言う問題点を解決することができる並列プロセッサシステムを実現することを目的とする。
【0034】
【課題を解決するための手段】
図1は本発明の原理構成ブロック図である。同図は、自プロセッサから他プロセッサに転送すべきデータの生成と並行してプロセッサ間でデータの転送が行われ、転送されたデータを用いて処理が実行される並列プロセッサシステムの原理ブロック図である。
【0035】
図1において、第1のデータ記憶手段1は並列プロセッサシステム内の各プロセッサの内部に複数個設けられ、それぞれ複数のデータ転送相手先プロセッサに対応して転送すべきデータが一時的に格納されるものであり、例えば小バッファである。
【0036】
また第2のデータ記憶手段2は、同様に各プロセッサの内部に複数個設けられ、他のプロセッサから転送されたデータを自プロセッサ内での処理の単位、例えばバケットに適合するように分割して格納するためのものであり、第1のデータ記憶手段1と同様に例えば小バッファである。
【0037】
これらそれぞれ複数の第1のデータ記憶手段1、および第2のデータ記憶手段2に対応する小バッファ群は、例えば各プロセッサの主記憶上に設けられる。
【0038】
【作用】
本発明においては、他のプロセッサに転送されるべきデータは転送相手先プロセッサに対応する小バッファに一次格納された後、その小バッファの容量があるスレッショルド値を越えた時点で相手先プロセッサに転送される。前述のように、1つのプロセッサに転送されるデータは各プロセッサでの処理量を均一化するために調整が行われた複数のバケットの組合せとなるが、本発明においてはこれらの複数のバケットを区別することなく、データ転送が行われる。
【0039】
データ転送元プロセッサにおいては、例えば転送相手先プロセッサを決定するために第1のグループ化関数が適用され、転送相手先プロセッサが決定されたデータはその相手先プロセッサに対応する第1のデータ記憶手段1に格納され、その格納容量があるスレッショルド値を越えた時点で相手先プロセッサに転送される。
【0040】
相手先プロセッサでは、転送されたデータに第2のグループ化関数を適用してそのデータを中間バケットに分割し、それぞれの中間バケットに対応する第2のデータ記憶手段2を構成する小バッファにそれら中間バケットを格納し、格納されたデータは格納容量があるスレッショルド値A′を越えた時点で、二次メモリ内でその中間バケットが格納され、組み合わされて最終バケットとなるべき領域に格納される。
【0041】
以上のように、本発明によればデータの転送元プロセッサにおいては転送データはバケットの区別を行うことなく、転送相手先プロセッサに対応する1つの小バッファに格納されることになる。
【0042】
【実施例】
図2は本発明の実施例におけるプロセッサ間データ転送方式の説明図である。同図において、図9の従来例と異なる部分を中心にデータ転送を説明する。
【0043】
図2において、データ転送元プロセッサAiには転送データを一時的に格納するデータバッファ群30として、並列プロセッサシステム内のプロセッサの数に対応する個数の小バッファが設けられる。この小バッファの数は、システムに存在するバケットの個数がMであれば、このMをプロセッサ台数で割った商のオーダーである。
【0044】
変換テーブル31は、図9の変換テーブル28と異なり、グループ化関数の出力値からデータの転送先プロセッサを決定するためのものである。
図3は変換テーブル31の実施例であり、このテーブルによってグループ化関数出力値から転送先プロセッサ番号への変換が行われる。
【0045】
図4は図3の変換テーブルの更に詳細な説明図である。同図において、例えばグループ化関数の出力値が1,111、および75のデータがプロセッサ1に転送され、これらのデータがまとめられたものがバケット1となることを示している。なお、前述と異なり、ここではグループ化関数の出力値の1つのみでなく、3つの値が1つのバケットに対応するものとしている。
【0046】
図2において、転送元プロセッサAi側で二次メモリ22iから読み出されたデータ24に対し、プロセス26iによってグループ化関数が適用される。テーブル31の内容は、図9におけると同様に、データ転送が終了した時点で全てのプロセッサの負荷が均一となるようにあらかじめ設定されており、グループ化関数の出力値からデータ24を転送すべきプロセッサが特定される。このグループ化関数としては図9で説明したものと同じものを用いてもよいが、ここでは転送先プロセッサを決定するのみでよいので、データが整数である時には、プロセッサ台数をNpeとする時、5Npeを越える素数による剰余演算をグループ化関数として用いることができる。
【0047】
転送元プロセッサAiに設けられるデータバッファ群30はシステム内のプロセッサ台数Npeに対応し、少なくともこのプロセッサ台数より大きい数D+1個の小バッファから構成される。従来例におけると同様に、転送先プロセッサ1台に対して2個の小バッファが用意され、ダブルバッファリングが行われるために、一般にD+1はプロセッサ台数の2倍、すなわち2Npeより大きい。
【0048】
二次メモリ22iから読み出されたデータ24に対する転送相手先プロセッサが決定されると、そのデータはその相手先プロセッサに対応する小バッファに格納され、その小バッファの容量があるスレッショルド値Aを越えた時点で転送相手先プロセッサ、ここではAjに転送される。
【0049】
転送先プロセッサAj側では、転送されたデータ27に対して再びグループ化関数が適用され、データの属するバケットの決定が行われる。すなわちプロセッサAj側のプロセス26jによって転送されたデータに対してグループ化関数が適用され、そのグループ化関数の出力値によってデータバッファ群32のうちのいずれかの小バッファに転送データが格納される。
【0050】
ここで適用されるグループ化関数は転送元プロセッサ側で使われたものと同じでもよく、また違っていてもよい。このグループ化関数はあるデータの転送先プロセッサを特定するものではなく、あるデータが属する(中間)バケットを特定するためのものであり、多くの場合転送元プロセッサのグループ化関数とは異なるものが選択される。データが整数であり、システム全体に存在するバケット数がMである時には、データを5Mを越える素数で剰余演算するものでもよい。
【0051】
このグループ化関数の出力値に応じてデータが属すべき(中間)バケットが決定され、データバッファ群32のうち、そのバケットに対応する小バッファに転送されたデータが一時的に格納されるが、このバケットの決定は変換テーブル33の格納内容を用いて行われる。図5は変換テーブル33の説明図である。同図において、グループ化関数の出力値をワードアドレスとしてアクセスすることにより、その出力値に対応する中間バケットの識別子が得られる。ここで1つのプロセッサに転送されるバケットの数は、システム内に存在するバケットの総数Mをプロセッサの台数Npeで割った値のオーダであり、図5のテーブルから得られる中間バケット識別子は、そのプロセッサ内で処理が行われるバケットだけを識別することができるローカルな中間バケット識別子でもよいことになる。これに対して、従来例の図10におけるテーブル28aで得られる中間バケット識別子はシステム全体の中でのバケットを識別するものであり、いわばグローバルな中間バケット識別子である。
【0052】
図6は図5の変換テーブルの更に詳細な説明図である。同図において、グループ化関数の出力値に応じてローカルなバケット識別子が格納されている。ここでこのプロセッサに転送されるバケットは例えば3つであり、それぞれグループ化関数の値が1、111、および75のバケットであるとして、それぞれに対応するローカルなバケット識別子が1,2および3としてこのテーブルに格納されている。
【0053】
図5、図6の変換テーブルの内容を用いて、それぞれのバケットに対応する小バッファ、すなわちバッファ群32内の1つの小バッファに格納された転送データは、その小バッファのデータ格納量があるスレッショルド値A′を越えた時に二次メモリ22jに送られ、対応する中間バケット格納部29jに格納される。ここでのスレッショルド値A′はデータ転送元における小バッファのスレッショルド値Aとは異なり、プロセッサ間の通信のオーバヘッドにより決定されるものではなく、ディスクなどの二次メモリへのアクセスのオーバヘッドによって決定されるものである。
【0054】
図2の実施例においては、図9の従来例と異なり各プロセッサにはデータの転送を受けてそのデータを分割して格納するためのバッファ群32が必要となる。このバッファ群32を構成する小バッファの個数は、システム全体に存在するバケットの総数、例えば1000をプロセッサの台数、例えば64で割った値となり、16個程度である。
【0055】
前述のシステム全体のデータ量64GB、主記憶容量64MB、他のプロセッサへのデータ転送のためのバッファ容量のスレッショルド値A=64KB、およびプロセッサ台数64を用いると、転送されたデータが格納された小バッファから二次メモリへのデータ転送を行う時のスレッショルド値A′を4KBとして、他プロセッサへのデータ転送のためのバッファ群30の容量は最低4MB(64KB×64プロセッサ)、他プロセッサから転送されたデータを格納するためのバッファ群32の容量は最低64KB(4KB+(64GB/64MB)/64プロセッサ)となり、合計で4.064 MBと従来例の64MBに比べて非常に小さくなることが分かる。しかもデータの受信側プロセッサでのバケット圧分、すなわち再グループ化処理はメモリ上で実行できるために、処理全体の実行速度には悪い影響を与えることなく行われる。
【0056】
【発明の効果】
以上詳細に説明したように、本発明によればデータの転送時には相手先プロセッサを特定するのみでデータ転送を行うために、転送データを一時的に格納するためのバッファ容量を小さくすることができ、かつデータを主記憶に乗るような大きさのバケットに分割することが可能となり、更に各プロセッサでの処理すべき負荷を均一にすることができる。これによって並列プロセッサシステムでの処理の高速化に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】実施例におけるプロセッサ間データ転送方式の説明図である。
【図3】データ転送時に用いられる変換テーブルの例を示す図である。
【図4】図3の変換テーブルの具体的な格納内容を説明する図である。
【図5】転送されたデータをバケットに分割するために用いられる変換テーブルの例を示す図である。
【図6】図5の変換テーブルの具体的な格納内容を説明する図である。
【図7】データ分散型並列プロセッサシステムの構成を示すブロック図である。
【図8】並列プロセッサシステムにおける各プロセッサの構成を示す図である。
【図9】プロセッサ間データ転送方式の従来例を説明する図である。
【図10】データ転送時に用いられる変換テーブルの従来例を示す図である。
【符号の説明】
1 第1のデータ記憶手段
2 第2のデータ記憶手段
10,15 プロセッサ
11,22 二次メモリ
12 ネットワーク
20 中央処理装置(CPU)
21 主記憶装置
23 入出力ポート
28,31 データ転送時に用いられる変換テーブル
25,30 転送データ格納用バッファ群
32 転送されたデータを格納するためのバッファ群
33 転送されたデータをバケットに分割するための変換テーブル
Claims (5)
- データ項目のうち少なくとも一つのデータ型が整数であるレコードからなるデータを各プロセッサに分散して格納し、共通の前記整数型のデータ項目を有するデータを用いて各プロセッサで分散して演算処理が実行され、
前記データに対してその前記データ項目の整数値に対する第1のグループ化関数の値を予め求め、該求められたグループ化関数値を有するデータに対する前記演算処理がどのプロセッサで実行すべきかを示す前記第1のグループ化関数の値と前記演算処理を実行する処理プロセッサの対応関係を格納した変換テーブルを各プロセッサに備え、
自プロセッサから他プロセッサに転送すべきデータの生成と並行してプロセッサ間で上記データの転送が行われ、該転送されたデータを用いて各プロセッサで前記演算処理が実行される並列プロセッサシステムにおいて、
前記並列プロセッサシステム内の各プロセッサが、それぞれ複数のデータ転送相手先プロセッサに対応して、転送すべきデータを一時的に格納する複数の第1のデータ記憶手段と、他プロセッサから転送されたデータを自プロセッサ内での前記演算処理を実行する単位毎に分割して格納する複数の第2のデータ記憶手段とを備え、
前記演算処理をシステム全体で実行するために、前記並列プロセッサシステム内の各プロセッサが、自プロセッサ内の前記データのデータ項目の整数値に対する第1のグループ化関数の値により前記変換テーブルを参照して、自プロセッサ内の当該データの転送相手先プロセッサを決定して対応する前記第1のデータ記憶手段に格納し、
前記並列プロセッサシステム内の各プロセッサが、前記他プロセッサから転送されたデータをそのデータ項目の整数値に対して第2のグループ化関数の値を求めて自プロセッサ内での前記演算処理を実行する単位毎に分割し、該転送されたデータを前記第2の記憶手段に格納するものであり、
さらに、前記第1のグループ化関数が前記プロセッサシステム内のプロセッサの台数の複数倍を越える素数による整数のデータの剰余演算であり、前記第2のグループ化関数が該プロセッサシステムで処理されるべきデータの総量を1つのプロセッサの主記憶容量で除算した商の複数倍を越える素数による整数データの剰余演算であることを特徴とする並列プロセッサシステム。 - 前記第1のデータ記憶手段と、第2のデータ記憶手段とが、それぞれ前記各プロセッサ内の主記憶上に設けられることを特徴とする請求項1記載の並列プロセッサシステム。
- 前記並列プロセッサシステム内の各プロセッサが、前記複数の第1のデータ記憶手段のそれぞれに格納されたデータの量があらかじめ定められたスレッショルド値を越えた時に、対応する転送相手先プロセッサにデータの一括転送を行うことを特徴とする請求項1記載の並列プロセッサシステム。
- 前記並列プロセッサシステム内の各プロセッサが、前記他プロセッサから転送され、自プロセッサ内での処理の単位に分割されて前記複数の第2のデータ記憶手段のそれぞれに格納されたデータの量があらかじめ定められたスレッショルド値を越えた時に、該データを二次記憶装置に転送することを特徴とする請求項1記載の並列プロセッサシステム。
- 前記第1のデータ記憶手段の数が、前記他プロセッサに転送すべきデータの格納と格納されたデータの転送とを同時に実行可能とするために、前記並列プロセッサシステム内のプロセッサの数の2倍以上であることを特徴とする請求項1記載の並列プロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04210494A JP3617672B2 (ja) | 1994-03-14 | 1994-03-14 | 並列プロセッサシステム |
US08/724,428 US5901324A (en) | 1994-03-14 | 1996-10-01 | Parallel processor system for transmitting data in small buffers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04210494A JP3617672B2 (ja) | 1994-03-14 | 1994-03-14 | 並列プロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07249019A JPH07249019A (ja) | 1995-09-26 |
JP3617672B2 true JP3617672B2 (ja) | 2005-02-09 |
Family
ID=12626675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04210494A Expired - Lifetime JP3617672B2 (ja) | 1994-03-14 | 1994-03-14 | 並列プロセッサシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US5901324A (ja) |
JP (1) | JP3617672B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085769B1 (en) * | 2001-04-26 | 2006-08-01 | Ncr Corporation | Method and apparatus for performing hash join |
US7676588B2 (en) * | 2001-10-05 | 2010-03-09 | International Business Machines Corporation | Programmable network protocol handler architecture |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
JP2007011673A (ja) * | 2005-06-30 | 2007-01-18 | Fujitsu Ltd | ホスト間データ転送方法、プログラム及びシステム |
CN103392165B (zh) * | 2011-06-24 | 2016-04-06 | 株式会社日立制作所 | 存储系统 |
JP6421626B2 (ja) | 2015-02-02 | 2018-11-14 | 富士通株式会社 | データ転送制御方法、データ転送制御プログラムおよびデータ転送制御装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5301337A (en) * | 1990-04-06 | 1994-04-05 | Bolt Beranek And Newman Inc. | Distributed resource management system using hashing operation to direct resource request from different processors to the processor controlling the requested resource |
US5245337A (en) * | 1991-05-29 | 1993-09-14 | Triada, Ltd. | Data compression with pipeline processors having separate memories |
JP3679813B2 (ja) * | 1991-07-22 | 2005-08-03 | 株式会社日立製作所 | 並列計算機 |
JPH05342178A (ja) * | 1992-06-10 | 1993-12-24 | Hitachi Ltd | 調停回路およびそれを用いたデータ処理装置 |
-
1994
- 1994-03-14 JP JP04210494A patent/JP3617672B2/ja not_active Expired - Lifetime
-
1996
- 1996-10-01 US US08/724,428 patent/US5901324A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH07249019A (ja) | 1995-09-26 |
US5901324A (en) | 1999-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5842207A (en) | Method for storing records of a distributed database by plural processors to provide a host processor with sorted records belonging to one of a plurality of key sections | |
CN104731796B (zh) | 数据存储计算方法和系统 | |
US7966349B2 (en) | Moving records between partitions | |
US8195873B2 (en) | Ternary content-addressable memory | |
EP1736876A1 (en) | Parallel generation of bundles of data objects | |
JP2000187668A (ja) | グループ化方法と重複排除方法 | |
CA2235060A1 (en) | Processing records from a database | |
US20070142925A1 (en) | Bundling database | |
US6424970B1 (en) | Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes | |
JP3395208B2 (ja) | 分散データベースのソート方法およびアクセス方法 | |
JPH1097544A (ja) | データベース処理システム | |
JP3617672B2 (ja) | 並列プロセッサシステム | |
Xu et al. | Efficient similarity join based on Earth mover’s Distance using Mapreduce | |
GB2378789A (en) | Removal of duplicates from large data sets | |
Hua et al. | Dynamic load balancing in very large shared-nothing hypercube database computers | |
Gao et al. | Memory-efficient and skew-tolerant MapReduce over MPI for supercomputing systems | |
CN114527929A (zh) | 基于双哈希模糊布隆滤波器云存储数据融合方法 | |
JPS6150359B2 (ja) | ||
Kuratli | Distributed Join Result Materialization over High-Performance Networks | |
CN1097783C (zh) | 数据处理的系统和方法以及带有这类系统的通信系统 | |
KR101826029B1 (ko) | 대용량 데이터의 클러스터 결과 분석 시스템 및 방법 | |
CN102194002B (zh) | 哈希表的表项添加、删除、查找方法及哈希表存储装置 | |
Aguilar-Saborit et al. | On the use of bit filters in shared nothing partitioned systems | |
JPH01166230A (ja) | 分散システムにおけるデータベースの配置方式 | |
Bae et al. | Efficient RDF Representation and Parallel Join Processing Algorithm on General Purpose Many-Core |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040210 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040401 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040720 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040810 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041006 |
|
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: 20041102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041104 |
|
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: 20081119 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121119 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121119 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131119 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |