(57)【特許請求の範囲】
【請求項１】
データ項目のうち少なくとも一つのデータ型が整数であるレコードからなるデータを各プロセッサに分散して格納し、共通の前記整数型のデータ項目を有するデータを用いて各プロセッサで分散して演算処理が実行され、
前記データに対してその前記データ項目の整数値に対する第１のグループ化関数の値を予め求め、該求められたグループ化関数値を有するデータに対する前記演算処理がどのプロセッサで実行すべきかを示す前記第１のグループ化関数の値と前記演算処理を実行する処理プロセッサの対応関係を格納した変換テーブルを各プロセッサに備え、
自プロセッサから他プロセッサに転送すべきデータの生成と並行してプロセッサ間で上記データの転送が行われ、該転送されたデータを用いて各プロセッサで前記演算処理が実行される並列プロセッサシステムにおいて、
前記並列プロセッサシステム内の各プロセッサが、それぞれ複数のデータ転送相手先プロセッサに対応して、転送すべきデータを一時的に格納する複数の第１のデータ記憶手段と、他プロセッサから転送されたデータを自プロセッサ内での前記演算処理を実行する単位毎に分割して格納する複数の第２のデータ記憶手段とを備え、
前記演算処理をシステム全体で実行するために、前記並列プロセッサシステム内の各プロセッサが、自プロセッサ内の前記データのデータ項目の整数値に対する第１のグループ化関数の値により前記変換テーブルを参照して、自プロセッサ内の当該データの転送相手先プロセッサを決定して対応する前記第１のデータ記憶手段に格納し、
前記並列プロセッサシステム内の各プロセッサが、前記他プロセッサから転送されたデータをそのデータ項目の整数値に対して第２のグループ化関数の値を求めて自プロセッサ内での前記演算処理を実行する単位毎に分割し、該転送されたデータを前記第２の記憶手段に格納するものであり、
さらに、前記第１のグループ化関数が前記プロセッサシステム内のプロセッサの台数の複数倍を越える素数による整数のデータの剰余演算であり、前記第２のグループ化関数が該プロセッサシステムで処理されるべきデータの総量を１つのプロセッサの主記憶容量で除算した商の複数倍を越える素数による整数データの剰余演算であることを特徴とする並列プロセッサシステム。
【請求項２】
前記第１のデータ記憶手段と、第２のデータ記憶手段とが、それぞれ前記各プロセッサ内の主記憶上に設けられることを特徴とする請求項１記載の並列プロセッサシステム。
【請求項３】
前記並列プロセッサシステム内の各プロセッサが、前記複数の第１のデータ記憶手段のそれぞれに格納されたデータの量があらかじめ定められたスレッショルド値を越えた時に、対応する転送相手先プロセッサにデータの一括転送を行うことを特徴とする請求項１記載の並列プロセッサシステム。
【請求項４】
前記並列プロセッサシステム内の各プロセッサが、前記他プロセッサから転送され、自プロセッサ内での処理の単位に分割されて前記複数の第２のデータ記憶手段のそれぞれに格納されたデータの量があらかじめ定められたスレッショルド値を越えた時に、該データを二次記憶装置に転送することを特徴とする請求項１記載の並列プロセッサシステム。
【請求項５】
前記第１のデータ記憶手段の数が、前記他プロセッサに転送すべきデータの格納と格納されたデータの転送とを同時に実行可能とするために、前記並列プロセッサシステム内のプロセッサの数の２倍以上であることを特徴とする請求項１記載の並列プロセッサシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は磁気ディスクなどの二次記憶装置がそれぞれ接続された複数のプロセッサをネットワークによって結合し、全体として１つの作業を遂行する並列プロセッサシステムに係り、更に詳しくは並列プロセッサシステムを構成する各プロセッサの間で処理されるデータを均一化するプロセッサ間データ分割方式に関する。
【０００２】
【従来の技術】
並列プロセッサシステムには、例えば複数の磁気ディスク装置に格納されたデータに対して、スイッチを介してシステム内の各プロセッサが自由にアクセスできるデータ共有型と、各プロセッサにそれぞれ専用の二次記憶装置が接続され、各プロセッサがネットワークを介してデータの交換を行うデータ分散型とがある。
【０００３】
図７はデータ分散型並列プロセッサシステムの構成ブロック図である。同図において、システムを構成する各プロセッサ１０に対してそれぞれ専用の二次記憶装置、例えば磁気ディスク１１が接続され、各プロセッサ１０の間ではネットワーク１２を介して相互にデータの交換が行われる。
【０００４】
図７のようなデータ分散型並列プロセッサシステムを用いたデータベース処理におけるハッシュジョインについて説明する。ハッシュジョインはエクイバレントジョインと言われるアルゴリズムの１つである。
【０００５】
図７において、各磁気ディスク１１にはデータベースにおける第１のテーブルＲと、第２のテーブルＳとの内容が分散して格納されているものとする。テーブルＲには従業員の識別番号と、その識別番号に対応する従業員名が格納され、テーブルＳには従業員の識別番号と、その識別番号に対応する従業員の年収が格納されているものとする。エクイバレントジョイン処理とは、テーブルＲとテーブルＳとの内容を検索し、従業員の識別番号をキーとして、従業員名とその従業員の年収を対として格納する第３のテーブルを作成する処理である。
【０００６】
ハッシュジョインはデータ分散型並列プロセッサシステムにおいて行われるエクイバレントジョインであり、この処理では識別番号を複数のグループにグループ分けし、同一グループに属するデータ、すなわちテーブルＲとテーブルＳとの内容を、そのグループのデータのエクイバレントジョイン処理を担当するプロセッサに、各プロセッサが転送を行い、そのグループのデータが全て転送された後に、担当プロセッサがエクイバレントジョイン処理を行うことになる。
【０００７】
このハッシュジョインの手順を、次の手順１〜手順４によって説明する。
手順１：個々のプロセッサ（プロセッサ番号０〜Ｎｐｅ−１）はディスクから論理的に１固まりとして扱われるべきデータ（レコードあるいはタプルと言う）を読み出し、これにあるグループ化関数を適用してこのデータを処理すべきプロセッサを特定する。
【０００８】
手順２：個々のプロセッサは上記プロセッサにこのデータを転送する。
手順３：上記処理を全てのデータに適用した後には、各プロセッサにはそれぞれの内部で処理されるべきデータが集中することになる。
【０００９】
手順４：各プロセッサは以後独立して内部でジョイン処理を行う。
上記において、グループ化関数は全てのプロセッサにおいて同じものが使用されねばならず、かつ同一のデータ値に対しては同一の値が返されるものが使用される。かつデータのプロセッサ間転送時には、同一のグループ化関数出力値を持つデータ群は、全て同一のプロセッサに対して転送される。
【００１０】
このことにより、同一のデータ値を持つ可能性のあるデータは全て同一のプロセッサに転送されるので、同一のデータ値を持つデータ間の処理は該プロセッサ内部に閉じて実行することができる。
【００１１】
ところで、上記処理において、グループ化関数の出力値の分布が大幅に偏っていると、つまりあるプロセッサのみ大量のデータが送信されると、このプロセッサの演算性能がボトルネックとなってシステム全体の性能が低下してしまう。
【００１２】
例えば前述の２つのテーブルＲとＳに各従業員の氏名が格納されており、前述のグループ化を氏名のうちの名字をキーとして行うものとすると、例えば鈴木や田中と言うような名字に対応するグループのデータの量は他の名字のグループのデータ量に比べてかなり大きくなり、そのような名字のグループのデータの処理を担当するプロセッサの負荷が大きくなり、システム全体の性能低下の原因となる。この性能低下を防ぐためにバケット組合せ調整処理が行われる。
【００１３】
バケットとは、前述のように例えば識別番号によってグループ化されたデータがグループとして全体的に集められたまとまりのことであり、バケット組合せ調整処理ではグループ化関数をうまく選んでバケットの大きさが十分小さくなるようにし、１つのプロセッサが複数のバケットのデータの処理を担当して、並列プロセッサシステム内の各プロセッサが担当する複数のバケットの組合せとしてのデータの総計が均一化されるように調整する処理である。この処理は次の手順１〜手順４によって行われる。
【００１４】
手順１：グループ化関数の出力の値の種類がプロセッサ台数を大幅に上回る様なものを選択する。より具体的には、１プロセッサ中のデータであって同一のグループ化関数出力値を持つデータ群をまとめたものをサブバケットと総称するが、最も大きなサブバケットのサイズがデータ総量をプロセッサ台数の自乗で割ったものよりも十分小さい様な関数を選択する。なお、システム内で同一のグループ化関数の（出力）値を持つサブバケットを全てのプロセッサから集めたものがバケットとなる。
【００１５】
手順２：予めこのグループ化関数を全データに適用しておき、各サブバケットの大きさを調べておく。
手順３：どのサブバケット同士を組み合わせて同一のプロセッサに転送すれば全プロセッサの処理データ量がほぼ同じくなるかを考え、これが実現できる様にサブバケット間の組合せを記憶しておく（あるプロセッサでサブバケットＢとサブバケットＣが組み合わされプロセッサＤに転送されるならば、全てのプロセッサでサブバケットＢとサブバケットＣが組み合わされてプロセッサＤに転送されなければならない。この為上記評価は全てのプロセッサでの全てのサブバケットサイズの情報を踏まえて行われる）。
【００１６】
手順４：実際のデータ処理が行われる時、各プロセッサは上記情報に基づいてサブバケット間の組合せを行い、他プロセッサへの転送を行う。グループ化関数の値が同一で、ある１つのプロセッサへ転送されるデータの総称がバケットである。
【００１７】
さてこの処理中での手順４では、各プロセッサは各バケットに対応して複数のデータバッファを主記憶上に準備し、データの生成（例えば二次記憶からのデータ読み出し）と並列してデータへのグループ化関数の適用と評価（サブバケットへの分割）を行い、対応するデータバッファに投入する。そしてこのデータバッファ内に蓄積されたデータ量があるスレッショルド値を越えた時、該データバッファ内容（バケットの一部）を対応するプロセッサに送信する。
【００１８】
データバッファリングを行う理由は通常プロセッサ間転送手段はデータ量に依存しないかなり大きなオーバヘッドを持つ為で、転送性能を低下させない為にはある程度まとまったデータ量を一括して転送することが必要だからである。
【００１９】
一般に並列プロセッサシステム内の１つのプロセッサの主記憶容量は、システム内で処理されるべきデータの総量をプロセッサの台数で割った値、すなわちバケットの組合せとして１つのプロセッサに転送されるデータの総量よりもかなり小さい。前述のハッシュジョイン処理を高速に行うためには、１つのグループとしてグループ化されたデータ、すなわちバケットの大きさが１つのプロセッサの主記憶上に乗ることが望ましい。このようにある程度まとまりを持つデータブロックを一括して主記憶上に展開し、データ処理を高速化する可能性はメモリコストの低下に伴って発生したものである。主記憶上に１つのグループのデータが乗るようにバケットを作成して、各プロセッサ内で処理を行う場合について、具体的なプロセッサシステムを対象として従来例をさらに詳しく説明する。
【００２０】
図８は並列プロセッサシステムの構成例である。同図において、ｎ＋１個のプロセッサ（Ａ０〜Ａｎ）が、外部バス（Ｂ）１６によって相互に接続されている。各プロセッサ１５はＣＰＵ２０、主記憶装置２１、二次メモリ２２、および主記憶装置２１と外部バス１６との間でデータの入出力に使用される入出力ポート２３から構成されている。このシステム内で、２つのプロセッサの間で行われるデータの転送について説明する。
【００２１】
図９は２つのプロセッサの間におけるデータ転送の従来例の説明図である。同図においてプロセッサＡｉからプロセッサＡｊへのデータ転送について説明する。同図において２４はプロセッサＡｉにおいて二次メモリ２２ｉから読み出されたデータ、例えば１つのレコードであり、２５はこのデータを他のプロセッサ、ここではＡｊに転送するために一時的にこのデータが格納されるバッファ群であり、２６ｉおよび２６ｊはそれぞれのプロセッサの中でデータの転送を処理するプロセスであり、２７はプロセッサＡｉから転送されたデータであり、２８は二次メモリ２２ｉから読み出されたデータ２４をバッファ群２５のうちのどのバッファに投入すべきかを決定するための変換テーブルであり、２９はプロセッサＡｊ内で転送されたデータを格納するための二次メモリ２２ｊ内の領域である。
【００２２】
図９において、プロセッサＡｉ側で二次メモリ２２ｉから読み出されたデータ２４に対して、プロセッサ２６ｉによってデータのグループ化のためのグループ化関数が適用される。そのグループ化関数の値によってそのデータが所属すべきバケットが決定され、またそのデータが転送されるべきプロセッサが決定される。このデータがどのバケットに所属し、またどのプロセッサに転送されるべきかは、全てのプロセッサのデータの予備読み込みによって、例えば図示しない親プロセッサ、または図８のプロセッサ１５のうちのいずれか１つによって、全てのプロセッサでの負荷が均一になるようなバケットの組合せとして決定されており、その結果が変換テーブル２８に格納されている。
【００２３】
図１０は転送元プロセッサでの変換テーブルの従来例である。同図において変換テーブル２８は、グループ化関数出力値からその出力値に対応するデータがどの中間バケットに所属すべきかを示す中間バケット識別子への変換テーブル２８ａと、中間バケット識別子からそのデータの転送相手先プロセッサへの変換テーブル２８ｂから構成されている。ここで中間バケットとはデータが転送相手先プロセッサに転送され、そのプロセッサ内で最終的なバケットとしてまとめられる過程における中間的なバケットを意味し、転送元プロセッサ内では前述のサブバケットに対応するものである。
【００２４】
データ２４に対して適用されるグループ化関数としては多くの種類が考えられるが、例えばデータが整数であり、またシステム内で扱われる全てのデータのグループ化結果としてのグループの数にあたる（中間）バケットの数がＭであるならば、５Ｍを越える素数による剰余演算をグループ化関数として用いることができる。
【００２５】
システム内に存在する（中間）バケットの数がＭである時、転送データ格納用バッファ群２５は、少なくともＭより大きい数Ｌ＋１個の小バッファから構成される。一般にバッファ群２５へのデータの格納と、バッファ群２５から他のプロセッサへのデータへの転送を同時に実行可能とするためにダブルバッファリングが行われ、小バッファの数Ｌ＋１はバケットの数の２倍、すなわち２Ｍより大きくなる。
【００２６】
プロセッサＡｉ側で二次メモリ２２ｉから読み出されたデータ２４は、そのデータが所属すべきバケットに対応するバッファ群２５内の小バッファに格納され、この小バッファの容量があるスレッショルド値Ａを越えた時、その小バッファ内のデータはその中間バケットが転送されるべきプロセッサ、ここではＡｊに転送される。転送されたデータ２７は、プロセス２６ｊによってその中間バケットが格納されるべき二次メモリ２２ｊ内の領域２９に格納され、全ての他のプロセッサから転送される対応する中間バケットと組み合わされて最終的なバケットに構成される。
【００２７】
【発明が解決しようとする課題】
図８〜図１０で説明したように、従来においては他のプロセッサに転送されるべきデータは、システム内に存在するバケットの数に対応する個数の小バッファによって構成されるバッファ群２５のうちのいずれかに格納され、そのバケットを処理すべきプロセッサに転送されるが、この小バッファの数が非常に多くなり、主記憶上に設けられるこれらの小バッファが主記憶の大部分の領域を占有してしまうと言う問題点があった。
【００２８】
前述のように、プロセッサの主記憶容量はシステム内で取り扱われるべきデータの総量をプロセッサの台数で割った値に比較して一般に非常に小さく、システム内に存在するバケットの数は非常に多くなる。二次メモリからデータが読み出される順序はあらかじめ予想することができないので、生成される可能生があるバケットの数Ｍを上回る数の小バッファが必要となり、しかも個々のバッファの容量としては、プロセッサ間で行われるデータ転送のオーバヘッドによって定まるスレッショルド値Ａ以上であることが必要である。
【００２９】
生成される可能性のあるバケットを予備読み込みによって調査することは不可能ではないが、その調査内容を全て記憶してバッファ管理に反映することは事実上不可能である。
【００３０】
システム内に存在するバケットの数Ｍはデータ総量をプロセッサの主記憶容量で割ったものに対応し、その結果図９で他のプロセッサへの転送データを一時的に格納するためのバッファ群２５の容量は全体として少なくとも次式で与えられる値を上回る必要がある。
【００３１】
Ａ×データ総量／プロセッサ主記憶容量
ここでＡはバッファ群２５の１つの小バッファ内のデータを一括転送するためのスレッショルド値である。
【００３２】
例えばこのスレッショルド値Ａが６４ＫＢ、データ総量が６４ＧＢ、主記憶容量が６４ＭＢ程度であるとすると、上式の値は６４ＭＢとなり、主記憶容量を全て使いきってしまうような容量のバッファ群２５が必要となることになり、実際問題としてこのような方式を実現することは不可能となる。このバッファ容量はシステム内の全てのプロセッサに対して必要となるものであり、このような方式を持つ並列プロセッサシステムは実現不可能であると言う問題点があった。
【００３３】
本発明は、バケットの大きさを主記憶容量の程度に止めてデータの高速処理を可能とし、かつ主記憶容量の圧迫と言う問題点を解決することができる並列プロセッサシステムを実現することを目的とする。
【００３４】
【課題を解決するための手段】
図１は本発明の原理構成ブロック図である。同図は、自プロセッサから他プロセッサに転送すべきデータの生成と並行してプロセッサ間でデータの転送が行われ、転送されたデータを用いて処理が実行される並列プロセッサシステムの原理ブロック図である。
【００３５】
図１において、第１のデータ記憶手段１は並列プロセッサシステム内の各プロセッサの内部に複数個設けられ、それぞれ複数のデータ転送相手先プロセッサに対応して転送すべきデータが一時的に格納されるものであり、例えば小バッファである。
【００３６】
また第２のデータ記憶手段２は、同様に各プロセッサの内部に複数個設けられ、他のプロセッサから転送されたデータを自プロセッサ内での処理の単位、例えばバケットに適合するように分割して格納するためのものであり、第１のデータ記憶手段１と同様に例えば小バッファである。
【００３７】
これらそれぞれ複数の第１のデータ記憶手段１、および第２のデータ記憶手段２に対応する小バッファ群は、例えば各プロセッサの主記憶上に設けられる。
【００３８】
【作用】
本発明においては、他のプロセッサに転送されるべきデータは転送相手先プロセッサに対応する小バッファに一次格納された後、その小バッファの容量があるスレッショルド値を越えた時点で相手先プロセッサに転送される。前述のように、１つのプロセッサに転送されるデータは各プロセッサでの処理量を均一化するために調整が行われた複数のバケットの組合せとなるが、本発明においてはこれらの複数のバケットを区別することなく、データ転送が行われる。
【００３９】
データ転送元プロセッサにおいては、例えば転送相手先プロセッサを決定するために第１のグループ化関数が適用され、転送相手先プロセッサが決定されたデータはその相手先プロセッサに対応する第１のデータ記憶手段１に格納され、その格納容量があるスレッショルド値を越えた時点で相手先プロセッサに転送される。
【００４０】
相手先プロセッサでは、転送されたデータに第２のグループ化関数を適用してそのデータを中間バケットに分割し、それぞれの中間バケットに対応する第２のデータ記憶手段２を構成する小バッファにそれら中間バケットを格納し、格納されたデータは格納容量があるスレッショルド値Ａ′を越えた時点で、二次メモリ内でその中間バケットが格納され、組み合わされて最終バケットとなるべき領域に格納される。
【００４１】
以上のように、本発明によればデータの転送元プロセッサにおいては転送データはバケットの区別を行うことなく、転送相手先プロセッサに対応する１つの小バッファに格納されることになる。
【００４２】
【実施例】
図２は本発明の実施例におけるプロセッサ間データ転送方式の説明図である。同図において、図９の従来例と異なる部分を中心にデータ転送を説明する。
【００４３】
図２において、データ転送元プロセッサＡｉには転送データを一時的に格納するデータバッファ群３０として、並列プロセッサシステム内のプロセッサの数に対応する個数の小バッファが設けられる。この小バッファの数は、システムに存在するバケットの個数がＭであれば、このＭをプロセッサ台数で割った商のオーダーである。
【００４４】
変換テーブル３１は、図９の変換テーブル２８と異なり、グループ化関数の出力値からデータの転送先プロセッサを決定するためのものである。
図３は変換テーブル３１の実施例であり、このテーブルによってグループ化関数出力値から転送先プロセッサ番号への変換が行われる。
【００４５】
図４は図３の変換テーブルの更に詳細な説明図である。同図において、例えばグループ化関数の出力値が１，１１１、および７５のデータがプロセッサ１に転送され、これらのデータがまとめられたものがバケット１となることを示している。なお、前述と異なり、ここではグループ化関数の出力値の１つのみでなく、３つの値が１つのバケットに対応するものとしている。
【００４６】
図２において、転送元プロセッサＡｉ側で二次メモリ２２ｉから読み出されたデータ２４に対し、プロセス２６ｉによってグループ化関数が適用される。テーブル３１の内容は、図９におけると同様に、データ転送が終了した時点で全てのプロセッサの負荷が均一となるようにあらかじめ設定されており、グループ化関数の出力値からデータ２４を転送すべきプロセッサが特定される。このグループ化関数としては図９で説明したものと同じものを用いてもよいが、ここでは転送先プロセッサを決定するのみでよいので、データが整数である時には、プロセッサ台数をＮｐｅとする時、５Ｎｐｅを越える素数による剰余演算をグループ化関数として用いることができる。
【００４７】
転送元プロセッサＡｉに設けられるデータバッファ群３０はシステム内のプロセッサ台数Ｎｐｅに対応し、少なくともこのプロセッサ台数より大きい数Ｄ＋１個の小バッファから構成される。従来例におけると同様に、転送先プロセッサ１台に対して２個の小バッファが用意され、ダブルバッファリングが行われるために、一般にＤ＋１はプロセッサ台数の２倍、すなわち２Ｎｐｅより大きい。
【００４８】
二次メモリ２２ｉから読み出されたデータ２４に対する転送相手先プロセッサが決定されると、そのデータはその相手先プロセッサに対応する小バッファに格納され、その小バッファの容量があるスレッショルド値Ａを越えた時点で転送相手先プロセッサ、ここではＡｊに転送される。
【００４９】
転送先プロセッサＡｊ側では、転送されたデータ２７に対して再びグループ化関数が適用され、データの属するバケットの決定が行われる。すなわちプロセッサＡｊ側のプロセス２６ｊによって転送されたデータに対してグループ化関数が適用され、そのグループ化関数の出力値によってデータバッファ群３２のうちのいずれかの小バッファに転送データが格納される。
【００５０】
ここで適用されるグループ化関数は転送元プロセッサ側で使われたものと同じでもよく、また違っていてもよい。このグループ化関数はあるデータの転送先プロセッサを特定するものではなく、あるデータが属する（中間）バケットを特定するためのものであり、多くの場合転送元プロセッサのグループ化関数とは異なるものが選択される。データが整数であり、システム全体に存在するバケット数がＭである時には、データを５Ｍを越える素数で剰余演算するものでもよい。
【００５１】
このグループ化関数の出力値に応じてデータが属すべき（中間）バケットが決定され、データバッファ群３２のうち、そのバケットに対応する小バッファに転送されたデータが一時的に格納されるが、このバケットの決定は変換テーブル３３の格納内容を用いて行われる。図５は変換テーブル３３の説明図である。同図において、グループ化関数の出力値をワードアドレスとしてアクセスすることにより、その出力値に対応する中間バケットの識別子が得られる。ここで１つのプロセッサに転送されるバケットの数は、システム内に存在するバケットの総数Ｍをプロセッサの台数Ｎｐｅで割った値のオーダであり、図５のテーブルから得られる中間バケット識別子は、そのプロセッサ内で処理が行われるバケットだけを識別することができるローカルな中間バケット識別子でもよいことになる。これに対して、従来例の図１０におけるテーブル２８ａで得られる中間バケット識別子はシステム全体の中でのバケットを識別するものであり、いわばグローバルな中間バケット識別子である。
【００５２】
図６は図５の変換テーブルの更に詳細な説明図である。同図において、グループ化関数の出力値に応じてローカルなバケット識別子が格納されている。ここでこのプロセッサに転送されるバケットは例えば３つであり、それぞれグループ化関数の値が１、１１１、および７５のバケットであるとして、それぞれに対応するローカルなバケット識別子が１，２および３としてこのテーブルに格納されている。
【００５３】
図５、図６の変換テーブルの内容を用いて、それぞれのバケットに対応する小バッファ、すなわちバッファ群３２内の１つの小バッファに格納された転送データは、その小バッファのデータ格納量があるスレッショルド値Ａ′を越えた時に二次メモリ２２ｊに送られ、対応する中間バケット格納部２９ｊに格納される。ここでのスレッショルド値Ａ′はデータ転送元における小バッファのスレッショルド値Ａとは異なり、プロセッサ間の通信のオーバヘッドにより決定されるものではなく、ディスクなどの二次メモリへのアクセスのオーバヘッドによって決定されるものである。
【００５４】
図２の実施例においては、図９の従来例と異なり各プロセッサにはデータの転送を受けてそのデータを分割して格納するためのバッファ群３２が必要となる。このバッファ群３２を構成する小バッファの個数は、システム全体に存在するバケットの総数、例えば１０００をプロセッサの台数、例えば６４で割った値となり、１６個程度である。
【００５５】
前述のシステム全体のデータ量６４ＧＢ、主記憶容量６４ＭＢ、他のプロセッサへのデータ転送のためのバッファ容量のスレッショルド値Ａ＝６４ＫＢ、およびプロセッサ台数６４を用いると、転送されたデータが格納された小バッファから二次メモリへのデータ転送を行う時のスレッショルド値Ａ′を４ＫＢとして、他プロセッサへのデータ転送のためのバッファ群３０の容量は最低４ＭＢ（６４ＫＢ×６４プロセッサ）、他プロセッサから転送されたデータを格納するためのバッファ群３２の容量は最低６４ＫＢ（４ＫＢ＋（６４ＧＢ／６４ＭＢ）／６４プロセッサ）となり、合計で４．０６４  ＭＢと従来例の６４ＭＢに比べて非常に小さくなることが分かる。しかもデータの受信側プロセッサでのバケット圧分、すなわち再グループ化処理はメモリ上で実行できるために、処理全体の実行速度には悪い影響を与えることなく行われる。
【００５６】
【発明の効果】
以上詳細に説明したように、本発明によればデータの転送時には相手先プロセッサを特定するのみでデータ転送を行うために、転送データを一時的に格納するためのバッファ容量を小さくすることができ、かつデータを主記憶に乗るような大きさのバケットに分割することが可能となり、更に各プロセッサでの処理すべき負荷を均一にすることができる。これによって並列プロセッサシステムでの処理の高速化に寄与するところが大きい。
【図面の簡単な説明】
【図１】本発明の原理構成ブロック図である。
【図２】実施例におけるプロセッサ間データ転送方式の説明図である。
【図３】データ転送時に用いられる変換テーブルの例を示す図である。
【図４】図３の変換テーブルの具体的な格納内容を説明する図である。
【図５】転送されたデータをバケットに分割するために用いられる変換テーブルの例を示す図である。
【図６】図５の変換テーブルの具体的な格納内容を説明する図である。
【図７】データ分散型並列プロセッサシステムの構成を示すブロック図である。
【図８】並列プロセッサシステムにおける各プロセッサの構成を示す図である。
【図９】プロセッサ間データ転送方式の従来例を説明する図である。
【図１０】データ転送時に用いられる変換テーブルの従来例を示す図である。
【符号の説明】
１  第１のデータ記憶手段
２  第２のデータ記憶手段
１０，１５  プロセッサ
１１，２２  二次メモリ
１２  ネットワーク
２０  中央処理装置（ＣＰＵ）
２１  主記憶装置
２３  入出力ポート
２８，３１  データ転送時に用いられる変換テーブル
２５，３０  転送データ格納用バッファ群
３２  転送されたデータを格納するためのバッファ群
３３  転送されたデータをバケットに分割するための変換テーブル
【図１】
0003617672.tif 000002
【図２】
0003617672.tif 000003
【図３】
0003617672.tif 000004
【図４】
0003617672.tif 000005
【図５】
0003617672.tif 000006
【図６】
0003617672.tif 000007
【図７】
0003617672.tif 000008
【図８】
0003617672.tif 000009
【図９】
0003617672.tif 000010
【図１０】
0003617672.tif 000011