JP3789011B2 - Parallel computer - Google Patents
Parallel computer Download PDFInfo
- Publication number
- JP3789011B2 JP3789011B2 JP24593096A JP24593096A JP3789011B2 JP 3789011 B2 JP3789011 B2 JP 3789011B2 JP 24593096 A JP24593096 A JP 24593096A JP 24593096 A JP24593096 A JP 24593096A JP 3789011 B2 JP3789011 B2 JP 3789011B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- data
- nodes
- message
- access
- 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
Landscapes
- Multi Processors (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、複数のプロセッサを有する計算機システムにおいて、これらのプロセッサにより共有されている資源を持つ並列計算機に関し、特にそれぞれプロセッサを有する複数のノードがネットワークを介して結合されている並列計算機において資源を複数のノードに分散配置する並列計算機の構成方法に関する。
【0002】
【従来の技術】
大量のメディア情報を供給するメディアサーバとしては、複数のプロセッサから構成される並列計算機かまたは複数の計算機からなるクライアント・サーバ型の分散処理システムが知られている。本明細書では、並列計算機を構成する複数のプロセッサとクライアント・サーバ型の分散処理システムを構成する複数の計算機とを区別することなく言及するするために、分散処理システムの分散処理を実行する計算機要素を「ノード」と呼ぶ。
【0003】
メディア情報は並列計算機内の複数のディスク装置に分散して保持されることが多く、ユーザからのアクセス処理要求は複数のノードの協調動作により処理される。
【0004】
たとえば、メディアサーバの例としては、映画などの大量の映像情報を格納し、複数のユーザに映像情報を供給するビデオオンデマンドサーバがある。映像情報は供給時間が延びてしまうと画像の途切れや画面のちらつきが発生するという特徴をもつ。このため、遅延時間の短縮は重要な課題である。
【0005】
ところで、ビデオオンデマンド処理に関しては遅延時間の短縮に関して考慮しなければならないことがある。それは、メディア情報へのアクセスパターンである。つまり、ビデオオンデマンドサーバは、複数のユーザが同時に異なるタイトルをアクセスする場合と、同一のタイトルをアクセスするいずれの場合においても、高速に映像情報を提供しなければならない。
【0006】
前者の課題を解決するためには、映像情報をタイトル毎に複数のノードに分散配置すればよい。これにより、複数のノードに負荷を分散させることができる。ユーザは自分の見たいタイトルを格納しているノードと交信し、映像データを供給して貰えばよい。ユーザにより同時に要求される複数のタイトルが均等に複数ノードに分散されていれば、処理負荷を分散させることができる。
【0007】
しかし、この構成では後者の課題を解決できない。上記のシステム構成において、同一タイトルにアクセスが集中した場合、分散システムを構成するノード数が大きい場合でも負荷はそのタイトルを格納しているノードのみにかかってしまう。これでは1ノードからなるシステムと性能が変わらない。
【0008】
そこで、一つの映像タイトルを複数のセルデータに分割し、セルデータをハッシュ関数等の分配条件にしたがって、複数のディスクに分散配置を行う方法がよく用いられる。これは「ストライピング」と呼ばれる。例えば、参考文献1:「日経エレクトロニクス」602号、1994.2.28号、第13頁〜第14頁参照。このストライピングをディスクからノードに拡張し、同一タイトルを複数のノードに分散配置することを「ノード間ストライピング」と呼ぶ。これにより、たとえ同一タイトルに対して複数のユーザからアクセスがあった場合にでも、複数ノードに負荷を分散させることができ、分散システムの処理性能を向上させることができる。
【0009】
【発明が解決しようとする課題】
しかしながら、従来のノード間ストライピング方法をビデオオンデマンドサーバに適用した場合には、次ぎの問題が生じる。
【0010】
一人のユーザに対して映像データを供給するノード(インターフェスノードと呼ぶ)は映像データの連続性保証や順序保証を行わなければならず、ノード間ストライピングにより分散格納されたセルデータを集めてからユーザに供給する必要がある。
【0011】
ところが、分散処理システムでよく用いられるデータ交換方法としてTCP/IPを用いた場合には、転送されたセルデータを格納するメッセージが到着するたびに割込やアクノリッジ返送などのソフトウエア処理が必要である。このソフトウエア処理はインタフェースノードが本来行っているユーザインタフェース処理を邪魔してしまう。また、このオーバヘッドはノード間ストライピングを行うノード数に比例して増加するため、性能を向上するためデータ供給ノードを増やすとかえってインタフェースノードはセルの到着確認に忙殺され、ユーザインタフェース処理がますます邪魔され、ユーザサービスの質が低下する。
【0012】
また、映像情報は大規模であるため、例えば2時間の映画を見る場合にはデータを格納しているノードからインターフェスノードへのデータ供給性能は、ユーザに映像の途切れを感じさせない程度に速くなければならない。このためにデータを格納しているノードからインタフェースノードへ連続的にデータを供給する必要がある。(以下、ストリーム処理と呼ぶ。)このストリーム処理を実現するためにはデータの受取り側と送り手側でフロー制御を行う必要がある。
【0013】
フロー制御方法としてTCP/IPではパケットを受信する毎に割込を発生し、OS(オペレーティングシステム)が受信バッファの容量を計算してアクノリッジとして返送する。参考文献2:「UNIX 4.3BSDの設計と実装」第374頁〜第397頁、S.J.Leffler他著(1991)。
【0014】
しかし、このようなフロー制御方法では次の問題が起る。ノード間ストライピングにより1つのインタフェースノードが相手をしなければならないデータ供給ノードの数が増えるにしたがって、フロー制御情報を送信ノードに返送する回数が増大し、本来の処理であるユーザインタフェース処理が邪魔されてしまう。
【0015】
そこで、本発明の第1の目的は、複数ノードに分散している資源(映画情報等のデータ等、またプロセス等もデータと考える)をアクセスする場合に、分割されたデータが集まったことを高速に確認することができる並列計算機を提供することである。
【0016】
そして、本発明の第2の目的は、ノード間でのデータの転送に関して高速なフロー制御のできる並列計算機を提供することである。
【0017】
【課題を解決するための手段】
第1の目的を実現するために、本発明の並列計算機は、少なくとも1つ以上のプロセッサをそれぞれ有する複数のノードと、上記複数のノードの間でメッセージを交換するための上記ノードを相互に接続するネットワークとからなる並列計算機において、該複数のノードにより利用可能な少なくとも1つの資源と、その資源を複数のノードに分割して格納する手段を有し、その資源に対してアクセス要求を行うノードは、その資源を分割格納している複数のノードに対して一連のアクセス要求を行うときに、該一連のアクセス要求に対してアクセス結果が返答されたか否かを格納する手段(フラグと呼ぶ)を有し、該アクセス要求を受け付けたノードは、該アクセス要求に対してアクセス結果を返答するときに、アクセス結果とともに該フラグに対して自ノードがアクセス結果を返したことを記録するために、該フラグを指定する手段と、該フラグに対する記録方法を指定する手段とを有し、アクセス要求を行ったノードは、該アクセス結果を受け取ったときに、付帯する該フラグを指定する手段で示されるフラグに対して、該フラグに対する記録方法で指定された手段で記録を行い、そのフラグが全てのノードから返答があったことを示すか否かを判定する手段と、全てのノードから返答があったと判定された場合に該プロセッサに割込を発生する回路を有する。
【0018】
また第2の目的を実現するために、本発明の並列計算機は、少なくとも1つ以上のプロセッサをそれぞれ有する複数のノードと、上記複数のノードの間でメッセージを交換するための上記ノードを相互に接続するネットワークとからなる並列計算機において、該並列計算機は該複数のノードにより利用可能な少なくとも一つの資源を有し、該ノードには、その資源を直接アクセスする手段を有する第1のノードと、直接アクセスできない第2のノードがあり、該第2のノードは、該資源をアクセスする場合に、複数のアクセス結果を格納する手段を有し、該第1のノードは、該アクセス結果格納手段の空き数を格納する手段と、該アクセスに対する結果を第2のノードに返答するときに、上記格納手段に格納された該空き数を減少させる回路を有し、該第2のノードは、該アクセス結果を利用することにより、該アクセス結果格納手段を解放した場合に、該第1のノードにある該空き数を格納する手段に納められた空き数を増加させる回路を有し、該第1のノードは、該第2のノードの該アクセス結果格納手段に空きがあるか否かを判定する回路と、該空きの判定の結果が空きがない場合にアクセス結果の返答を遅延させる手段を有する。
【0019】
【発明の実施の形態】
以下、本発明にかかわる並列計算機を図面に示した実施の態様を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。なお、以下では実施の態様の1つの例を実施例と呼ぶ。
【0020】
(1)実施例
図1に本実施例1による並列計算機を示す。この並列計算機では、複数のノード2はネットワーク1により結合され、各ノード2は、少なくとも一つのプロセッサ24と、ディスク装置25を含み、このディスク装置25内に、ノード間ストライピングにより分散されたデータが保持されている。各データは、それを保持するノード(データ供給ノード)のみからアクセス可能であり、このデータをアクセスしたい他のノード(データ消費ノード)は、このデータ供給ノードにデータ供給要求を行う。
【0021】
なお、この並列計算機では、全てのノードは同じ構成をとり、同一の処理を行うことができが、本実施例では説明をわかりやすくするために図1において、ノード#0、ノード#1をデータ供給ノード、ノード#2をデータ消費ノードと位置付ける。そして、ノード#2がノード#0、ノード#1に分散配置されたデータをアクセスする場合について説明する。
【0022】
本実施例1ではノード#0、ノード#1のディスク装置25に分散格納されたデータ35をノード#2が読み出すときに、ノード#0が転送したデータとノード#1が転送したデータの両方が揃ったことを高速に判定することが第1の特徴である。そして、データ消費ノードではデータ供給ノードから連続的にデータを受信できる様に循環バッファ38を有している。この循環バッファ38の空き容量をデータ供給ノードが高速に判定できることが第2の特徴である。これら2つのためにノード2にはイベント制御回路500と、循環バッファへのデータの到着を示すフラグ37とこのフラグを操作するためのフラグレジスタ58とフロー制御レジスタ群52が設けられている。循環バッファ38はデータ供給ノードからのデータ転送と、データ消費ノードが転送されたデータを用いてユーザにサービスを提供する処理を並行して行うために設けられ、図2に示すような構成をとる。すなわち、ノード#0、ノード#1からそれぞれ転送されたデータを格納するバッファエリア、ノード#0用[m],ノード#1用[m]と、これらが到着しているか否かを示すフラグ[m]である。データ供給ノードはm=0から順番にデータをデータ消費ノードに転送し、データ消費ノードはm=0から順番に消費していく。
【0023】
フラグレジスタ58はノード2がメッセージ11を受信したときにローカルメモリ上のフラグ37を一時的に格納するレジスタである。
【0024】
また、フロー制御レジスタ群52は循環バッファ38の空き容量を管理するレジスタでデータ供給ノードで用いられる。データを転送すべきノード、ここではデータ消費ノードの循環バッファ38の空き容量を格納する。本実施例では、データ供給ノードがデータをデータ消費ノードに転送した場合に該当するフロー制御レジスタを減少させ、データ消費ノードが転送されたデータを処理し終えたら、データ供給ノードの該当フロー制御レジスタを増加させることに特徴がある。これにより、データ供給ノードは該当するフロー制御レジスタが0より大きければ、データを転送することができると判断可能であるとともに、データ消費ノードはメッセージの到着した時ではなく、データを消費する時にフロー制御を行うことができる。したがって、データ消費ノードでは、ユーザへのサービス処理への無駄な割込が防止できる。
【0025】
以下、本実施例の回路とその動作の詳細を説明する。
【0026】
(ノード2)
図1に示すように各ノード2は、データ供給プログラム31やデータ消費プログラム32を実行するプロセッサ24と、ローカルメモリ23と、ノードに分散されたデータ35を格納するディスク装置25と、本実施例で特徴的な高速フロー制御処理を行うための送信制御回路21と、受信制御回路22とから構成される。この並列計算機は、いわゆる分散メモリ型並列計算機で、ローカルメモリ23は他のノードからはアクセスできず、そのローカルメモリの属するノードのみアクセス可能である。そして、ローカルメモリ23にはそのノードで実行されるプログラムやそのプログラムが使用あるいは生成するデータを格納する。さらに、本実施例ではデータ供給ノードではディスク装置25から読み出したデータ35が一時的に格納された転送データ36が置かれる。一方、データ消費ノードではデータを受け取るための循環バッファ38とそのフラグ37が置かれる。
【0027】
また、このノード内の各回路は、システムバス26に接続され、メモリマップドIO方法により、プロセッサ24からロード命令やストア命令などのメモリアクセス命令でローカルメモリ23と区別することなくアクセスすることができる。
【0028】
送信制御回路21はメッセージ生成回路41と、送信パラメータ格納レジスタ42と送信状態レジスタST43から構成される。受信制御回路22は入力バッファ51と、メモリアクセス回路60とフロー制御レジスタ群52とから構成される。メモリアクセス回路60はネットワークから受信したデータをローカルメモリ23に書き込んだり、フラグ37を読み出してこれを更新して書き戻す。イベント制御回路500は、2つの入力が同一か否かを判定する一致制御回路53と、2つの入力の大小を比較する大小判定回路54と、2つの入力の加算、減算、ビットセット、ビットリセット、を行なう演算回路56と、セレクタ55、57、61と、アンド回路59とからなる。
【0029】
(ネットワーク1)
ネットワーク1は、形態は特に規定しないがメッセージ11のノード番号Nadで示されるノードにメッセージを伝達する。例えば、特願平6−53405号明細書に記載されたものと同じでよい。
【0030】
以下では、ノード#0、ノード#1のディスクに格納されたメディアデータ35をノード#2が読み出す手順を説明する。
【0031】
(フロー制御レジスタ群52の初期化)
各ノード2はシステムの起動時にフロー制御レジスタ群52を0に初期化する。
【0032】
(循環バッファ38の初期化)
ノード#2はメディアデータを読み出すための循環バッファ38とその読み出し完了を表すフラグ37をローカルメモり23に確保し、フラグ37には初期値として0を書き込む。この循環バッファ38は図2に示すようにノード#0用のデータ領域とノード#1用のデータ領域とそのフラグを1組として(m+1)組ある。後から述べるようにノード#0、ノード#1はこの循環バッファ38の先頭からデータ転送の宛先として用い、(m+1)組目まで進む。そして、次は0組目へと循環して用いる。このように循環して用いることにより、循環バッファ38よりも大きなメディアデータを読み出して、例えば表示装置に表示するなどの処理を行なうことができる。
【0033】
(ノード#0、ノード#1への読み出しリクエスト)
ノード#2はノード#0へ読み出すべきメディアデータのタイトルと、受信する循環バッファ38のノード#0用のエリアのアドレスと、フラグのアドレスと、循環バッファ38の大きさ(m+1)と、フロー制御に用いるフロー制御レジスタのIDであるR#を、ネットワークを介して伝える。図1には記載されていないが、これはイーサネットなどの従来技術を用いても構わない。同様にノード#1へも読み出しリクエストを伝える。さらに本実施例で特徴的なノード間ストライプ数をノード#2はノード#0とノード#1に伝達する。ここではノード#0とノード#1への2分割であるため2である。一般的にn台のノードに分割されている場合にはnである。またこの時、用いるフロー制御レジスタには0が設定されている。これは、ノード#0のデータ供給プログラム31からは循環バッファ38に空きがないことと等価にみえる。このため、ノード#0、ノード#1はデータの供給を停止して、フロー制御レジスタが0より大きくなることを待つ。
【0034】
(ノード#0、ノード#1への読み出し開始指示)
この段階ではノード#0およびノード#1はノード#2の循環バッファ38に空きがない状態であると認識しているため待機している。そこで、ノード#2は自ノードのデータ消費プログラム32の準備が完了したところでノード#0およびノード#1に読み出し開始指示を次の手順にしたがって行う。この開始指示はより具体的にはノード#0およびノード#1のフロー制御レジスタに循環バッファ38の空き容量を設定することである。
【0035】
すなわち、システムバス26を介してプロセッサ24は送信パラメタ格納レジスタ42に次の値を設定し、メッセージをノード#0、ノード#1に送信する。
【0036】
Nad:=ノード#0またはノード#1の識別子
CTL(R):=1[フロー制御レジスタ群宛のメッセージであることを示す]
CTL(R#):=宛先のフロー制御レジスタ識別子
Dad:=0[このメッセージでは参照されない]
Dln:=0[このメッセージでは参照されない]
Fad:=0[このメッセージでは参照されない]
Int:=0[このメッセージでは参照されない]
D0:=0[このメッセージでは参照されない]
D1:=(m+1)[循環バッファ38の容量]
Ct0:=0[このメッセージでは参照されない]
Ct1:=値設定を表すコード
Tad:=0[このメッセージでは参照されない]
このように送信パラメタを設定することにより、メッセージ生成回路41はメッセージ11を生成し、ネットワーク1へ送出する。そして、送信状態レジスタST43に送信完了を表すコードを書き込む。
【0037】
ネットワーク1はメッセージ11のNadが示すノード、ここではノード#0またはノード#1へメッセージを配送する。
【0038】
次に上記メッセージを受信したノード#0およびノード#1の動作について説明する。
【0039】
ノード2ではネットワーク1から受信したメッセージ11を一時的に入力バッファ51に格納し、各フィールドの切出しを行う。本メッセージはCTL(R)=1であることから本メッセージはフロー制御レジスタに対する更新要求であると判断する。また、Ct1が「値設定」であることから、イベント制御回路500はセレクタ57にD1を選択するように制御し、フロー制御レジスタ群52からCTL(R#)で示されるレジスタに対し、D1に格納された(m+1)を書き込む。
【0040】
これによりフロー制御レジスタ[R#]には循環バッファ58の空き容量として(m+1)が設定された。
【0041】
(データ供給ノードからのデータ転送)
一方ノードのプロセッサ2ではデータ供給プログラム31がシステムバス26を介してフロー制御レジスタ[R#]を監視し、0より大きくなるまで待機している。上記ノード#2からの読み出しリクエストによりフロー制御レジスタ[R#]は(m+1)になっているため、データ供給プログラム31はデータ転送処理を次の手順に従い行う。
【0042】
プロセッサ24はディスク装置25からデータ35をシステムバス26を介して読みだし、ローカルメモリ23に転送データ36として格納する。そして、このデータをノード#2に転送する。
【0043】
すなわち、プロセッサ24はシステムバス26を介して送信パラメタ格納レジスタ42に次のようにパラメタを設定する。
【0044】
Nad:=ノード#2の識別子
CTL(R):=0[フロー制御レジスタ宛ではなく、メモリ宛であることを示す]
Dad:=ノード#0(またはノード#1)用データ格納領域[i]の先頭アドレス、一番最初はi=0である。
Dln:=データ長[上記データ格納領域[i]の容量と同一]
Fad:=フラグ格納領域[i]の先頭アドレス、一番最初はi=0である。
Int:=1[割込を発生させることを示す]
D0:=2[データのノード間ストライプ数]
D1:=1[フラグの増分を表す]
Ct0:=0[一致判定を選択することを表す]
Ct1:=加算を表すコード
Tad:=転送データ36の先頭アドレス
これらのパラメタをプロセッサが書き込むことで、メッセージ生成回路41はメッセージ11を生成し、ネットワーク1へ送出する。このとき、メッセージ11の転送データフィールドにはTadに格納された先頭アドレス、すなわち転送データ36がパッキングされる。
【0045】
(データ供給ノードでのフロー制御レジスタの更新)
データを一つデータ消費ノードに転送し終えると、データ供給ノードではフロー制御レジスタの更新を行う。即ち、プロセッサ24はシステムバス26を介してフロー制御レジスタ[R#]から1を引く。この結果が0に場合、データ供給プログラム31は待機状態になる。さらにデータ供給プログラム31は次にデータを転送すべき循環バッファ38のアドレスをデータ用はノード#0(またはノード#1)用のデータ格納領域[i+1]、フラグアドレスをフラグ領域[i+1]に更新する。もしも、これらのアドレスがそれぞれデータ格納領域[m]、フラグ領域[m]より大きい場合には循環バッファの先頭アドレスであるデータ格納領域[0]、フラグ領域[0]に更新する。そして、タイトルで指定されたデータを全てノード#2に転送し終えるまで、こららの動作を繰り返す。
【0046】
(データ消費ノードでのデータの受信)
次に上記メッセージを受信したノード#2の動作について説明する。
【0047】
ノード2ではネットワーク1から受信したメッセージ11を一時的に入力バッファ51に格納し、各フィールドの切出しを行う。本メッセージはCTL(R)=0であることから本メッセージはローカルメモリ23へのデータ転送であると判断する。メッセージ11のDlnで示される長さの転送データを、メモリアクセス回路60はシステムバス26を介してDadが示す循環バッファ38のデータ格納領域の先頭アドレスへ書き込む。次にフラグの更新を行うが、これは本実施例で特徴的な動作である。メモリアクセス回路60はメッセージ11のFadで示されるアドレスからフラグ格納領域[i]の内容を読みだし、フラグレジスタ58に格納する。
【0048】
(フラグに該当する領域に対するデータ転送が始めての場合)
この場合、フラグ領域[i]に格納されたフラグは初期値0である。イベント制御回路500は、CTL(R)が0であることからセレクタ61でフラグレジスタ58を選択し、演算回路56の一方に入力する。そして、演算回路56のもう一方の入力にはD1すなわちここでは1を入力する。イベント制御回路500はCt1が加算を表すコードであることから演算回路56とセレクタ57を制御してセレクタ57の出力に演算回路56の二つの入力の加算結果を出力する。ここでは0+1=1である。そして、フラグレジスタ58に書き戻す。次に、イベント制御回路500はCt0=0すなわち、一致判定を示すコードであることから、一致判定回路53の一方の入力にD0、ここでは2を、他方にはセレクタ61で選択されている更新済のフラグレジスタ58の内容、ここでは1を、入力する。一致判定回路53は2つの入力線が不一致であるため、出力に0を出す。このため、セレクタ55で選ばれた出力は0になりアンド回路59の出力は0になる。したがって、プロセッサ24に対して割込を発生しない。すなわち、データが片側しか到着していなければプロセッサ24に無駄な割込を発生しない。これにより、データ消費プログラムの実行を阻害しない効果が実現できる。
【0049】
そして、メモリアクセス回路60はフラグレジスタ58に格納された更新済みのフラグの値1をFadが示すフラグ格納領域[i]へシステムバス26を介して書き戻す。
【0050】
(フラグに該当する領域に対するデータ転送が2つ目の場合)
同様にフラグの更新を行うが、今回はローカルメモリ23のフラグ格納領域[i]から読み出されたフラグの値は1である。したがって、演算回路56で1を加算されたフラグの値は2になり、この値がフラグレジスタ58に格納される。そして、一致判定回路53の2つの入力は今回はどちらも2になるため、一致判定回路53の出力は1になる。そして、アンド回路59の2つの入力はIntが1であるため、出力に1を出す。これにより、イベント制御回路500はプロセッサ24に割込をかけることができ、プロセッサは使用可能なデータを受信したことを無駄なく知ることができる。
【0051】
そして、メモリアクセス回路60はフラグレジスタ58に格納された更新済みのフラグの値2をFadが示すフラグ格納領域[i]へシステムバス26を介して書き戻す。
【0052】
(ノード#2によるデータの消費)
ノード#2はイベント制御回路500から受け取ったデータ受信完了割込により、データの受信を知らされると次の手順でデータを消費する。すなわち、循環バッファ38のフラグ37をシステムバス26を介して読み、フラグ37の値が2のエントリを探索する。ここで値が2とはノード#0、ノード#1に分割されたデータを正しく受信できたことを示す。データ消費プログラム32は正しく受信できたデータ格納領域からデータを取りだし、表示装置へ表示するなどの処理を行う。そして、このエントリに格納されたデータを消費し切ると次の手順で領域の解放を行う。すなわち、プロセッサ24はシステムバス26を介してローカルメモリ23に格納された上記エリアに対応するフラグ格納領域に0を書き込む。これは該当するエリアには有効なデータが存在しないこと、すなわちこの領域が空き領域であることを表す。そして、循環バッファ38の空き領域が増えたことをノード#0およびノード#1に伝えるために次の手順でメッセージを送信する。
【0053】
(ノード#2による循環バッファ38の空き領域増加の伝達)
すなわち、システムバス26を介してプロセッサ24は送信パラメタ格納レジスタ42に次の値を設定し、メッセージをノード#0、ノード#1に送信する。
【0054】
Nad:=ノード#0またはノード#1の識別子
CTL(R):=1[フロー制御レジスタ群宛のメッセージであることを示す]
CTL(R#):=宛先のフロー制御レジスタ識別子
Dad:=0[このメッセージでは参照されない]
Dln:=0[このメッセージでは参照されない]
Fad:=0[このメッセージでは参照されない]
Int:=0[このメッセージでは参照されない]
D0:=0[このメッセージでは参照されない]
D1:=1[循環バッファ38の空き容量の増分]
Ct0:=0[このメッセージでは参照されない]
Ct1:=加算を表すコード
Tad:=0[このメッセージでは参照されない]
このように送信パラメタを設定することにより、メッセージ生成回路41はメッセージ11を生成し、ネットワーク1へ送出する。そして、送信状態レジスタST43に送信完了を表すコードを書き込む。
【0055】
ネットワーク1はメッセージ11のNadが示すノード、ここではノード#0またはノード#1へメッセージを配送する。
【0056】
次に上記メッセージを受信したノード#0およびノード#1の動作について説明する。
【0057】
ノード2ではネットワーク1から受信したメッセージ11を一時的に入力バッファ51に格納し、各フィールドの切出しを行う。本メッセージはCTL(R)=1であることから本メッセージはフロー制御レジスタに対する更新要求であると判断する。また、Ct1が「加算」であることから、イベント制御回路500は演算回路56とセレクタ57、61を制御してD1に格納された値1をフロー制御レジスタ[R#]に格納された値に加算した結果をセレクタ57の出力に出す。そして、この出力結果をフロー制御レジスタ[R#」に書き戻す。また、このときIntは0であることから、アンド回路59の出力は0であり、プロセッサ24に対してイベント制御回路500は割込を発生しない。
【0058】
これにより、フロー制御レジスタに格納された循環バッファ58の空き容量は1つ増えたことになる。
【0059】
(読み出しの終了)
タイトルで指定されたデータを全て読み終えたデータ供給プログラム31は次にデータの読み出しリクエストが来るまで待機する。
【0060】
他方、データ消費プログラムは最後のデータを消費すると、次の手順にしたがって、データ供給ノードのフロー制御レジスタの値を初期値0に戻す。すなわち、システムバス26を介してプロセッサ24は送信パラメタ格納レジスタ42に次の値を設定し、メッセージをノード#0、ノード#1に送信する。
【0061】
Nad:=ノード#0またはノード#1の識別子
CTL(R):=1[フロー制御レジスタ群宛のメッセージであることを示す]
CTL(R#):=宛先のフロー制御レジスタ識別子
Dad:=0[このメッセージでは参照されない]
Dln:=0[このメッセージでは参照されない]
Fad:=0[このメッセージでは参照されない]
Int:=0[このメッセージでは参照されない]
D0:=0[このメッセージでは参照されない]
D1:=0[初期値]
Ct0:=0[このメッセージでは参照されない]
Ct1:=値設定を表すコード
Tad:=0[このメッセージでは参照されない]
このように送信パラメタを設定することにより、メッセージ生成回路41はメッセージ11を生成し、ネットワーク1へ送出する。そして、送信状態レジスタST43に送信完了を表すコードを書き込む。
【0062】
ネットワーク1はメッセージ11のNadが示すノード、ここではノード#0またはノード#1へメッセージを配送する。
【0063】
次に上記メッセージを受信したノード#0およびノード#1の動作について説明する。
【0064】
ノード2ではネットワーク1から受信したメッセージ11を一時的に入力バッファ51に格納し、各フィールドの切出しを行う。本メッセージはCTL(R)=1であることから本メッセージはフロー制御レジスタに対する更新要求であると判断する。また、Ct1が「値設定」であることから、イベント制御回路500はセレクタ57にD1を選択するように制御し、フロー制御レジスタ群52からCTL(R#)で示されるレジスタに対し、D1に格納された0を書き込む。
【0065】
これによりフロー制御レジスタ[R#]には循環バッファ58の空き容量として0が設定された。これにより、再びこのフロー制御レジスタを利用してフロー制御を行う場合に、読み出し開始要求が来るまでデータ供給プログラムが待機することを保証する。
【0066】
以上の動作を行うことにより、データ消費ノード(ノード#2)では分割されたデータが全て整ったときにのみ本来の処理であるデータ消費プログラム32に割込がかかり、メッセージの受信処理を行えば良い。これにより、データ消費プログラムが邪魔されて、たとえば表示装置への表示処理が途切れて、画像が乱れることを防止できる。
【0067】
また、循環バッファの空き容量の管理に関しては、メッセージが到着するごとにデータ消費プログラムが邪魔されることがなく、実際にバッファを解放したときにのみ空き容量をデータ供給プログラム31へ伝達すればよい。本実施例の説明では循環バッファの1つのエントリを消費した場合について述べたが、データ消費プログラム32の構造上の理由により、複数エントリを一括して消費しても構わない。この場合、データ消費ノードからデータ供給ノードに伝えられる循環バッファ38の空き容量の増分は1より大きくなる。
【0068】
そして、データ供給ノードではデータ供給プログラム31はローカルに配置されたフロー制御レジスタの値を調べることにより、送信先の循環バッファ38の空き容量を知ることができる。
【0069】
このようにそれぞれのプログラムがローカルな情報に基づいて動作をできるため、並行処理を行うことができ、並列計算機の性能を向上させることができる。
【0070】
(2)変形例
次に、上記で示した実施例1の変形例を示す。上記実施例1では分割されたデータの到着確認にデータ分割数を利用した。また上記実施例1では2分割であったため2であった。変形例では到着しているデータと到着していないデータを判別できるように上記実施例を変形して実現する。
【0071】
変形例ではフラグ37に格納される値の各ビットに対してデータ供給ノードからデータ到着済という意味を与える。
【0072】
例えば、ノード#0にはフラグのビット0を割り当て、ノード#1にはビット1を割り当てる。
【0073】
以下、このビット割り当てに基づき実施例1との相違点のみを説明する。
【0074】
(ノード#2による読みだしリクエスト)
実施例1では分割数2を知らせた代わりに変形例1では2^0+2^1=3、すなわちノード#0とノード#1の両方からデータが正しく到着したときのフラグの期待値を知らせる。ここで「^」はべき乗を表す。さらに、ノード#0に対しては、データを書き込むときに2^0=1をフラグに加算するように伝え、ノード#1には2^1=2を加算するように伝える。
【0075】
(データ供給ノードからのデータ転送)
データ供給ノードではデータをノード#2に転送するときに送信パラメタ格納レジスタの値を実施例1とは異なり以下のように設定する。
【0076】
Nad:=ノード#2の識別子
CTL(R):=0[フロー制御レジスタ宛ではなく、メモリ宛であることを示す]
Dad:=ノード#0(またはノード#1)用データ格納領域[i]の先頭アドレス
一番最初はi=0である。
【0077】
Dln:=データ長[上記データ格納領域[i]の容量と同一]
Fad:=フラグ格納領域[i]の先頭アドレス
一番最初はi=0である。
【0078】
Int:=1[割込を発生させることを示す]
D0:=3[両方のデータ到着した時のフラグの期待値=2^0+2^1]
D1:=2^0=1(ノード#0の場合)または2^1=2(ノード#1の場合)[フラグの増分を表す]
Ct0:=0[一致判定を選択することを表す]
Ct1:=加算を表すコード
Tad:=転送データ36の先頭アドレス
(フラグに該当する領域に対するデータ転送が始めての場合)
この場合、フラグ領域[i]に格納されたフラグは初期値0である。イベント制御回路500は、CTL(R)が0であることからセレクタ61でフラグレジスタ58を選択し、演算回路56の一方に入力する。そして、演算回路56のもう一方の入力にはD1すなわちここでは1または2を入力する。イベント制御回路500はCt1が加算を表すコードであることから演算回路56とセレクタ57を制御してセレクタ57の出力に演算回路56の二つの入力の加算結果を出力する。ここでは1または2である。そして、フラグレジスタ58に書き戻す。次に、イベント制御回路500はCt0=0すなわち、一致判定をしめすコードであることから、一致判定回路53の一方の入力にD0、ここでは3を他方にはセレクタ61で選択されている更新済のフラグレジスタ58の内容、ここでは1または2を入力する。一致判定回路53は2つの入力線が不一致であるため、出力に0を出す。このため、セレクタ55で選ばれた出力は0になりアンド回路59の出力は0になる。したがって、プロセッサ24に対して割込を発生しない。すなわち、データが片側しか到着していなければプロセッサ24に無駄な割込を発生しない。これにより、データ消費プログラムの実行を阻害しない効果が得られる。
【0079】
そして、メモリアクセス回路60はフラグレジスタ58に格納された更新済みのフラグの値1または2をFadが示すフラグ格納領域[i]へシステムバス26を介して書き戻す。
【0080】
これによりデータ消費プログラム32はフラグ格納領域[i]を読み出すことにより、この値が0であればどちらも受信していないことを判別できる。そして、1であればノード#0からだけデータを受信したことを判別できる。そして、2であればノード#1からだけデータを受信したことを判別できる。3であれば、両方を受信していることを判別できる。
【0081】
(フラグに該当する領域に対するデータ転送が2つ目の場合)
同様にフラグの更新を行うが、今回はローカルメモリ23のフラグ格納領域[i]から読み出されたフラグの値は1または2である。したがって、もう一方のデータを受信すると演算回路56で2または1を加算されるため、フラグの値はどちらの場合も3になり、この値がフラグレジスタ58に格納される。そして、一致判定回路53の2つの入力は今回はどちらも3になるため、一致判定回路53の出力は1になる。そして、アンド回路59の2つの入力はIntが1であるため、出力に1を出す。これにより、イベント制御回路500はプロセッサ24に割込をかけることができ、プロセッサは使用可能なデータを受信したことを無駄なく知ることができる。
【0082】
【発明の効果】
ノードは、一連のデータを分散されたノードへアクセスした際、分散されたノードから一連のデータの全体を受信したときに割り込みを発生するので、一連のデータの個々のデータを受信した時と比べ、割り込み回数を減らすことができ、当該ノードでの本来の処理を中断する回数が縁、ノードの処理効率を高めることができる。
【0083】
また、ノードアクセス時にノードにあるアクセス結果を格納する空き数に応じてアクセス結果の応答を遅延させる手段を有するので、フロー制御信号をノード間で送受信する場合と比べ、フロー制御信号を送受信する必要が無く、ノード間の信号送受信に新たな負荷をかけることなく、高速なフロー制御を行うことができる。
【図面の簡単な説明】
【図1】本発明による並列計算機の構成図である。
【図2】図1の循環バッファ38の詳細構成図である。
【符号の説明】
1 ネットワーク
2 ノード
21 送信制御回路、
22 受信制御回路、
23 ローカルメモリ、
24 プロセッサ、
25 ディスク装置、
38 循環バッファ、
42 送信パラメタ格納レジスタ、
500 イベント制御回路。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a parallel computer having a resource shared by these processors in a computer system having a plurality of processors, and in particular, to a resource in a parallel computer in which a plurality of nodes each having a processor are coupled via a network. The present invention relates to a configuration method of a parallel computer distributed and arranged in a plurality of nodes.
[0002]
[Prior art]
As a media server that supplies a large amount of media information, a parallel computer composed of a plurality of processors or a client-server type distributed processing system composed of a plurality of computers is known. In this specification, a computer that executes distributed processing of a distributed processing system in order to make a distinction between a plurality of processors that constitute a parallel computer and a plurality of computers that constitute a client-server type distributed processing system. Elements are called “nodes”.
[0003]
Media information is often distributed and held in a plurality of disk devices in a parallel computer, and an access processing request from a user is processed by a cooperative operation of a plurality of nodes.
[0004]
For example, as an example of a media server, there is a video on demand server that stores a large amount of video information such as a movie and supplies video information to a plurality of users. The video information has a feature that when the supply time is extended, the image is interrupted or the screen flickers. For this reason, shortening the delay time is an important issue.
[0005]
By the way, regarding the video on demand processing, it may be necessary to consider the reduction of the delay time. It is an access pattern to media information. That is, the video-on-demand server must provide video information at a high speed regardless of whether a plurality of users access different titles simultaneously or access the same title.
[0006]
In order to solve the former problem, video information may be distributed to a plurality of nodes for each title. Thereby, the load can be distributed to a plurality of nodes. The user may communicate with the node storing the title he / she wants to see and supply video data. If a plurality of titles requested simultaneously by the user are evenly distributed to a plurality of nodes, the processing load can be distributed.
[0007]
However, this configuration cannot solve the latter problem. In the system configuration described above, when accesses are concentrated on the same title, the load is applied only to the node storing the title even if the number of nodes constituting the distributed system is large. This does not change the performance of a system consisting of one node.
[0008]
Therefore, a method is often used in which one video title is divided into a plurality of cell data, and the cell data is distributed and arranged on a plurality of disks in accordance with a distribution condition such as a hash function. This is called “striping”. For example, see Reference 1: “Nikkei Electronics” No. 602, No. 1994.2.28, pages 13-14. Extending this striping from a disk to a node and distributing the same title to a plurality of nodes is called “inter-striping”. Thereby, even when a plurality of users access the same title, the load can be distributed to a plurality of nodes, and the processing performance of the distributed system can be improved.
[0009]
[Problems to be solved by the invention]
However, when the conventional inter-node striping method is applied to a video-on-demand server, the following problem occurs.
[0010]
A node that supplies video data to one user (referred to as an interface node) must guarantee the continuity and order of the video data, and collect cell data stored in a distributed manner by striping between nodes. Must be supplied to the user.
[0011]
However, when TCP / IP is used as a data exchange method often used in a distributed processing system, software processing such as interrupt and acknowledge return is required every time a message storing transferred cell data arrives. is there. This software processing interferes with the user interface processing originally performed by the interface node. In addition, since this overhead increases in proportion to the number of nodes that perform striping between nodes, increasing the number of data supply nodes in order to improve performance makes the interface nodes busy with cell arrival confirmation, which further hinders user interface processing. As a result, the quality of user service deteriorates.
[0012]
In addition, since the video information is large-scale, for example, when watching a two-hour movie, the data supply performance from the node storing the data to the interface node is fast enough not to make the user feel the video is interrupted. There must be. Therefore, it is necessary to continuously supply data from the node storing the data to the interface node. (Hereinafter referred to as stream processing.) In order to realize this stream processing, it is necessary to perform flow control on the data receiving side and the sender side.
[0013]
As a flow control method, TCP / IP generates an interrupt every time a packet is received, and the OS (operating system) calculates the capacity of the reception buffer and returns it as an acknowledge. Reference 2: “Design and Implementation of UNIX 4.3 BSD”, pages 374 to 397; J. et al. Leffler et al. (1991).
[0014]
However, such a flow control method has the following problems. As the number of data supply nodes that one interface node has to deal with increases due to inter-node striping, the number of times flow control information is returned to the transmission node increases, impeding the user interface processing that is the original processing. End up.
[0015]
Therefore, the first object of the present invention is that the divided data gathered when accessing resources (data such as movie information, and processes etc. are also considered as data) distributed to a plurality of nodes. It is to provide a parallel computer that can be confirmed at high speed.
[0016]
A second object of the present invention is to provide a parallel computer capable of high-speed flow control for data transfer between nodes.
[0017]
[Means for Solving the Problems]
In order to achieve the first object, a parallel computer of the present invention interconnects a plurality of nodes each having at least one processor and the nodes for exchanging messages between the plurality of nodes. Node having at least one resource that can be used by the plurality of nodes and means for dividing the resource into a plurality of nodes and making an access request to the resource Means for storing whether or not an access result is returned in response to a series of access requests when a series of access requests are made to a plurality of nodes that store the resource in a divided manner (referred to as a flag) And the node that has received the access request returns the access result together with the flag when returning the access result to the access request. In order to record that the own node has returned the access result, the node having designated the flag and the means for designating the recording method for the flag. When the result is received, the flag indicated by the means for specifying the flag to be attached is recorded by the means specified by the recording method for the flag, and the flag is answered from all nodes. And a circuit for generating an interrupt in the processor when it is determined that there is a response from all nodes.
[0018]
In order to achieve the second object, the parallel computer of the present invention mutually connects a plurality of nodes each having at least one processor and the nodes for exchanging messages between the plurality of nodes. In a parallel computer comprising a network to be connected, the parallel computer has at least one resource that can be used by the plurality of nodes, the node having a first node having means for directly accessing the resource, and direct access There is a second node that cannot be used, and the second node has means for storing a plurality of access results when the resource is accessed, and the first node is a free number of the access result storage means. And a circuit for reducing the number of vacancies stored in the storage means when a result of the access is returned to the second node And when the second node releases the access result storage means by using the access result, the number of empty spaces stored in the means for storing the empty number in the first node. The first node has a circuit for determining whether or not the access result storage means of the second node has a vacancy, and the result of the vacancy judgment is not vacant Means for delaying the response of the access result.
[0019]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, the parallel computer according to the present invention will be described in more detail with reference to the embodiments shown in the drawings. In the following, the same reference numerals represent the same or similar items. Hereinafter, one example of the embodiment will be referred to as an example.
[0020]
(1) Examples
FIG. 1 shows a parallel computer according to the first embodiment. In this parallel computer, a plurality of nodes 2 are connected by a
[0021]
In this parallel computer, all the nodes have the same configuration and can perform the same processing. In this embodiment, in order to make the explanation easy to understand, in FIG. The supply node, node # 2, is positioned as a data consumption node. A case where the node # 2 accesses data distributed to the
[0022]
In the first embodiment, when the node # 2 reads the data 35 distributedly stored in the
[0023]
The
[0024]
The flow
[0025]
Hereinafter, the circuit of this embodiment and details of its operation will be described.
[0026]
(Node 2)
As shown in FIG. 1, each node 2 includes a
[0027]
Each circuit in this node is connected to the
[0028]
The
[0029]
(Network 1)
The
[0030]
Hereinafter, a procedure in which the node # 2 reads the media data 35 stored in the disks of the
[0031]
(Initialization of flow control register group 52)
Each node 2 initializes the flow
[0032]
(Initialization of circular buffer 38)
The node # 2 reserves a circular buffer 38 for reading media data and a
[0033]
(Read request to
The node # 2 receives the title of the media data to be read to the
[0034]
(Read start instruction to
At this stage, the
[0035]
That is, the
[0036]
Nad: = identifier of
CTL (R): = 1 [indicating that the message is addressed to a flow control register group]
CTL (R #): = destination flow control register identifier
Dad: = 0 [not referenced in this message]
Dln: = 0 [not referenced in this message]
Fad: = 0 [not referenced in this message]
Int: = 0 [not referenced in this message]
D0: = 0 [not referenced in this message]
D1: = (m + 1) [capacity of the circular buffer 38]
Ct0: = 0 [not referenced in this message]
Ct1: = code indicating value setting
Tad: = 0 [not referenced in this message]
By setting the transmission parameters in this way, the
[0037]
The
[0038]
Next, operations of
[0039]
In the node 2, the message 11 received from the
[0040]
As a result, (m + 1) is set as the free capacity of the
[0041]
(Data transfer from the data supply node)
On the other hand, in the processor 2 of the node, the
[0042]
The
[0043]
That is, the
[0044]
Nad: = identifier of node # 2
CTL (R): = 0 [indicating that it is not addressed to the flow control register but is addressed to memory]
Dad: = Start address of data storage area [i] for node # 0 (or node # 1), i = 0 at the very beginning.
Dln: = data length [same as the capacity of the data storage area [i] above]
Fad: = first address of flag storage area [i], i = 0 at the very beginning.
Int: = 1 [indicates that an interrupt will be generated]
D0: = 2 [number of data stripes between nodes]
D1: = 1 [represents flag increment]
Ct0: = 0 [indicating that coincidence determination is selected]
Ct1: = code indicating addition
Tad: = start address of
When the processor writes these parameters, the
[0045]
(Updating the flow control register at the data supply node)
When data is transferred to the data consuming node, the data supply node updates the flow control register. That is, the
[0046]
(Reception of data at the data consumption node)
Next, the operation of the node # 2 that has received the message will be described.
[0047]
In the node 2, the message 11 received from the
[0048]
(When data transfer to the area corresponding to the flag is the first time)
In this case, the flag stored in the flag area [i] has an initial value of 0. The event control circuit 500 selects the
[0049]
Then, the memory access circuit 60 writes the updated
[0050]
(When the data transfer to the area corresponding to the flag is the second)
Similarly, the flag is updated, but the value of the flag read from the flag storage area [i] of the
[0051]
Then, the memory access circuit 60 writes the updated flag value 2 stored in the
[0052]
(Data consumption by node # 2)
When node # 2 is notified of data reception by the data reception completion interrupt received from event control circuit 500, it consumes data in the following procedure. That is, the
[0053]
(Communication of increase in free space in circular buffer 38 by node # 2)
That is, the
[0054]
Nad: = identifier of
CTL (R): = 1 [indicating that the message is addressed to a flow control register group]
CTL (R #): = destination flow control register identifier
Dad: = 0 [not referenced in this message]
Dln: = 0 [not referenced in this message]
Fad: = 0 [not referenced in this message]
Int: = 0 [not referenced in this message]
D0: = 0 [not referenced in this message]
D1: = 1 [Increase in free capacity of circular buffer 38]
Ct0: = 0 [not referenced in this message]
Ct1: = code indicating addition
Tad: = 0 [not referenced in this message]
By setting the transmission parameters in this way, the
[0055]
The
[0056]
Next, operations of
[0057]
In the node 2, the message 11 received from the
[0058]
As a result, the free capacity of the
[0059]
(End of reading)
The
[0060]
On the other hand, when the data consuming program consumes the last data, it returns the value of the flow control register of the data supply node to the
[0061]
Nad: = identifier of
CTL (R): = 1 [indicating that the message is addressed to a flow control register group]
CTL (R #): = destination flow control register identifier
Dad: = 0 [not referenced in this message]
Dln: = 0 [not referenced in this message]
Fad: = 0 [not referenced in this message]
Int: = 0 [not referenced in this message]
D0: = 0 [not referenced in this message]
D1: = 0 [initial value]
Ct0: = 0 [not referenced in this message]
Ct1: = code indicating value setting
Tad: = 0 [not referenced in this message]
By setting the transmission parameters in this way, the
[0062]
The
[0063]
Next, operations of
[0064]
In the node 2, the message 11 received from the
[0065]
As a result, the free capacity of the
[0066]
By performing the above operations, the data consumption program (node # 2) interrupts the data consumption program 32, which is the original process, only when all the divided data is ready, good. As a result, it is possible to prevent the data consumption program from being disturbed, for example, the display processing on the display device being interrupted, and the image from being disturbed.
[0067]
Regarding the management of the free capacity of the circular buffer, the data consumption program is not disturbed each time a message arrives, and the free capacity may be transmitted to the
[0068]
In the data supply node, the
[0069]
Thus, since each program can operate based on local information, parallel processing can be performed and the performance of the parallel computer can be improved.
[0070]
(2) Modification
Next, a modification of the first embodiment described above will be shown. In the first embodiment, the number of data divisions is used for confirming the arrival of the divided data. In Example 1 above, it was 2 because it was divided into 2 parts. In the modification, the above-described embodiment is modified and realized so that the data that has arrived and the data that has not arrived can be distinguished.
[0071]
In the modified example, the meaning that data has arrived from the data supply node is given to each bit of the value stored in the
[0072]
For example,
[0073]
Hereinafter, only differences from the first embodiment will be described based on this bit allocation.
[0074]
(Reading request by node # 2)
In the first embodiment, instead of notifying the division number 2, in the first modification, 2 ^ 0 + 2 ^ 1 = 3, that is, the expected value of the flag when the data arrives correctly from both the
[0075]
(Data transfer from the data supply node)
Unlike the first embodiment, the value of the transmission parameter storage register is set as follows when the data supply node transfers data to the node # 2.
[0076]
Nad: = identifier of node # 2
CTL (R): = 0 [indicating that it is not addressed to the flow control register but is addressed to memory]
Dad: = start address of data storage area [i] for node # 0 (or node # 1)
The first is i = 0.
[0077]
Dln: = data length [same as the capacity of the data storage area [i] above]
Fad: = start address of flag storage area [i]
The first is i = 0.
[0078]
Int: = 1 [indicates that an interrupt will be generated]
D0: = 3 [Expected value of flag when both data arrives = 2 ^ 0 + 2 ^ 1]
D1: = 2 ^ 0 = 1 (in the case of node # 0) or 2 ^ 1 = 2 (in the case of node # 1) [representing the increment of the flag]
Ct0: = 0 [indicating that coincidence determination is selected]
Ct1: = code indicating addition
Tad: = start address of
(When data transfer to the area corresponding to the flag is first)
In this case, the flag stored in the flag area [i] has an initial value of 0. The event control circuit 500 selects the
[0079]
Then, the memory access circuit 60 writes the updated
[0080]
As a result, the data consumption program 32 reads out the flag storage area [i], and can determine that neither is received if this value is 0. If it is 1, it can be determined that data is received only from
[0081]
(When the data transfer to the area corresponding to the flag is the second)
Similarly, the flag is updated, but the value of the flag read from the flag storage area [i] of the
[0082]
【The invention's effect】
When a node accesses a series of data to a distributed node, an interrupt is generated when the entire series of data is received from the distributed node. Therefore, compared to when individual data of a series of data is received. The number of interruptions can be reduced, and the number of times the original processing is interrupted at the node can be reduced, and the processing efficiency of the node can be improved.
[0083]
In addition, since it has means for delaying the response of the access result according to the number of free space for storing the access result in the node at the time of node access, it is necessary to transmit / receive the flow control signal compared to the case of transmitting / receiving the flow control signal between the nodes Therefore, high-speed flow control can be performed without placing a new load on signal transmission / reception between nodes.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a parallel computer according to the present invention.
FIG. 2 is a detailed configuration diagram of the circular buffer 38 of FIG.
[Explanation of symbols]
1 network
2 nodes
21 transmission control circuit,
22 reception control circuit,
23 local memory,
24 processor,
25 disk units,
38 circular buffer,
42 Transmission parameter storage register,
500 Event control circuit.
Claims (2)
該複数のノードにより利用可能な少なくとも1つの資源と、その資源を複数のノードに分割して格納する手段を有し、
その資源に対してアクセス要求を行うノードは、その資源を分割格納している複数のノードに対して一連のアクセス要求を行うときに、該一連のアクセス要求に対してアクセス結果が返答されたか否かを示すフラグ情報を格納するフラグ格納領域を有し、
前記アクセス要求を受け付けたノードは、該アクセス要求に対してアクセス結果を返答するときに、前記アクセス要求を行うノードのフラグ格納領域に対して自ノードがアクセス結果を返したことを記録するために、フラグ格納領域のアドレスを指定する手段と、該フラグ格納領域に対する記録方法を指定する手段と、前記アクセス結果のデータに指定されたフラグ格納領域のアドレスと指定された記録方法とが少なくとも付帯する送信メッセージを形成して送信する手段を有し、
アクセス要求を行ったノードは、前記送信メッセージを受け取ったときに、前記アクセス結果のデータに付帯する前記フラグ格納領域のアドレスに、前記アクセス結果のデータに付帯する記録方法で指定される方法で記録を行い、記録により形成されるフラグ情報が、全てのノードから返答があったことを示すか否かを判定する手段と、全てのノードから返答があったと判定された場合に該プロセッサに割込を発生する回路を有することを特徴とする並列計算機。In a parallel computer comprising a plurality of nodes each having at least one processor and a network interconnecting the nodes for exchanging messages between the plurality of nodes,
At least one resource that can be used by the plurality of nodes, and means for storing the resource divided into a plurality of nodes;
Whether a node that makes an access request for the resource makes a series of access requests to a plurality of nodes that divide and store the resource, and whether an access result is returned for the series of access requests A flag storage area for storing flag information indicating
In order to record that the node that has received the access request returns the access result to the flag storage area of the node that performs the access request when the access result is returned to the access request. and means for designating the address of the flag storage area, and means for specifying a recording method for the flag storage area, the recording method specified as the address of the flag storage area specified in the data of the access result is at least incidental Means for forming and sending a send message ;
When receiving the transmission message , the node that made the access request records the address in the flag storage area attached to the access result data by a method specified by the recording method attached to the access result data. Means for determining whether or not the flag information formed by recording indicates that there is a response from all nodes, and interrupts the processor when it is determined that there is a response from all nodes. A parallel computer having a circuit for generating
該並列計算機は該複数のノードにより利用可能な少なくとも一つの資源を有し、
該ノードには、その資源を直接アクセスする手段を有する第1のノードと、直接アクセスできない第2のノードがあり、
前記第2のノードは、該資源をアクセスする場合に、複数のアクセス結果のデータを順次格納する循環バッファを有し、
前記第1のノードは、前記第2ノード内の前記循環バッファのうちの空きバッファの数を格納するレジスタと、前記アクセス結果のデータを該第2のノードに返答するときに、前記レジスタに格納された前記空きバッファの数を減少させる回路を有し、
前記第2のノードは、前記循環バッファに格納されたアクセス結果のデータを利用し、利用した該アクセス結果のデータを循環バッファから解放した場合に、該題のノードの循環バッファのうちの空きバッファの数が増加したことを示すメッセージを前記第1のノードに送信する回路を有し、
前記第1のノードは、前記メッセージを受けて前記レジスタに格納された前記空きバッファの数を増加させる回路と、前記第2のノードの前記循環バッファに空きバッファがあるか否かを前記レジスタに格納された空きバッファの数により判定する回路と、該空きの判定の結果が空きバッファがない場合に前記第2のノードからの要求により実行した前期資源へのアクセス結果のデータの返答を遅延させる手段をさらに有することを特徴とする並列計算機。In a parallel computer comprising a plurality of nodes each having at least one processor and a network interconnecting the nodes for exchanging messages between the plurality of nodes,
The parallel computer has at least one resource available to the plurality of nodes;
The node has a first node having means for directly accessing the resource and a second node that cannot be directly accessed,
The second node has a circular buffer for sequentially storing a plurality of access result data when accessing the resource;
Storing said first node includes a register for storing the number of free buffers of said circular buffer within the second node, when reply data of said access result to the second node, to said register A circuit for reducing the number of free buffers that have been
When the second node uses the access result data stored in the circular buffer and releases the used access result data from the circular buffer, an empty buffer among the circular buffers of the subject node A circuit for transmitting to the first node a message indicating that the number of
The first node receives the message and increases the number of free buffers stored in the register, and whether the circular buffer of the second node has a free buffer in the register. A circuit that makes a determination based on the number of stored empty buffers, and delays the response of data of the access result to the previous resource executed in response to a request from the second node when the result of the empty determination is that there is no empty buffer . A parallel computer further comprising means.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24593096A JP3789011B2 (en) | 1996-09-18 | 1996-09-18 | Parallel computer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24593096A JP3789011B2 (en) | 1996-09-18 | 1996-09-18 | Parallel computer |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1091592A JPH1091592A (en) | 1998-04-10 |
| JP3789011B2 true JP3789011B2 (en) | 2006-06-21 |
Family
ID=17140977
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP24593096A Expired - Fee Related JP3789011B2 (en) | 1996-09-18 | 1996-09-18 | Parallel computer |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3789011B2 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP6340874B2 (en) * | 2014-03-31 | 2018-06-13 | ブラザー工業株式会社 | Non-ejection nozzle detector |
| JP2020198044A (en) * | 2019-06-05 | 2020-12-10 | 富士通株式会社 | Parallel processing device |
-
1996
- 1996-09-18 JP JP24593096A patent/JP3789011B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH1091592A (en) | 1998-04-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4707781A (en) | Shared memory computer method and apparatus | |
| US4933846A (en) | Network communications adapter with dual interleaved memory banks servicing multiple processors | |
| US8190682B2 (en) | Managing execution of programs by multiple computing systems | |
| US5907684A (en) | Independent channel coupled to be shared by multiple physical processing nodes with each node characterized as having its own memory, CPU and operating system image | |
| US4484262A (en) | Shared memory computer method and apparatus | |
| US6338095B1 (en) | Data transfer method for reduced number of messages by message passing library and direct intermemory data transfer library and computer system suitable therefor | |
| TW544589B (en) | Loosely coupled-multi processor server | |
| JP3344345B2 (en) | Shared memory type vector processing system, control method thereof, and storage medium for storing vector processing control program | |
| US6484220B1 (en) | Transfer of data between processors in a multi-processor system | |
| JP2633900B2 (en) | Common bus control method | |
| US6993599B2 (en) | Efficient command delivery and data transfer | |
| US5204954A (en) | Remote storage management mechanism and method | |
| JPH08305498A (en) | Data transfer device | |
| JP3789011B2 (en) | Parallel computer | |
| JPH11143779A (en) | Paging processing system for virtual storage device | |
| JPH08221372A (en) | Free resource management device in distributed processing system | |
| US6108694A (en) | Memory disk sharing method and its implementing apparatus | |
| JP2006099731A (en) | Resource management device | |
| CA2175970C (en) | Information processing system for performing mutual control of input/output devices among a plurality of clusters | |
| CA1138119A (en) | Shared memory computer method and apparatus | |
| JPH11120157A (en) | Method for high-speed communication within parallel computer system and parallel computer system operated by the method | |
| JP2011008678A (en) | Data transfer device and computer system | |
| JP2984594B2 (en) | Multi-cluster information processing system | |
| JP2002149619A (en) | Message queue management method | |
| JP2000137676A (en) | Buffer control system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050826 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051107 |
|
| 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: 20060322 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060327 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |