以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としてのリングバス転送システム1の構成を図1に示す。図1において、リングバス転送システム1は、複数のノードとして、マスタノード10およびn個のスレーブノード20(20_1、20_2、・・・、20_n)を備える。なお、nは1以上の整数である。これらのノードは、リングバス90上に環状に接続されている。また、リングバス90は、通信方向が一方向に定められているものとする。本実施の形態では、マスタノード10、スレーブノード20_1、20_2、・・・20_n、マスタノード10・・・の順に情報が送信されるものとする。以降、リングバス90上において、あるノードにとって情報を送信する方向にあるノードを、そのノードがマスタノード10であるかスレーブノード20であるかに関わらず、「次のノード」とも記載する。同様に、リングバス90上において、あるノードにとって情報を受信する方向にあるノードを、そのノードがマスタノード10であるかスレーブノード20であるかに関わらず、「前のノード」とも記載する。
マスタノード10の機能ブロック構成を図2に示す。図2において、マスタノード10は、周回命令発行処理部11と、リングバス送受信部12とを含む。
周回命令発行処理部11は、周回命令を発行する。周回命令とは、各ノードに20に実行させる命令を表すものとする。周回命令発行処理部11により発行される周回命令は、その内容に応じて、各スレーブノード20において次のノードに送信されるタイミングが定められる。例えば、周回命令は、その種類によって、次のノードへの送信タイミングがあらかじめ定められていてもよい。あるいは、例えば、周回命令は、次のノードへの送信タイミングを示す情報を含んでいてもよい。
また、次のノードへの送信タイミングとは、例えば、その周回命令の受信を契機とするタイミングであってもよい。また、次のノードへの送信タイミングとは、例えば、その周回命令の表す処理の完了を契機とするタイミングであってもよい。
また、周回命令発行処理部11は、リングバス90を周回した周回命令に対応する処理を実行する。リングバス90を周回した周回命令は、後述のリングバス送受信部12によって前のノードから受信される。
リングバス送受信部12は、リングバス90上を流れる情報を送受信する。具体的には、リングバス送受信部12は、周回命令発行処理部11によって発行された周回命令をリングバス90上の次のノードに送信する。また、リングバス送受信部12は、リングバス90上を周回した周回命令を、前のノードから受信する。
次に、スレーブノード20の機能ブロック構成を図3に示す。図3において、スレーブノード20は、リングバス送受信制御部21と、周回命令実行部22とを含む。
リングバス送受信制御部21は、リングバス90上を流れる情報を送受信する。具体的には、リングバス送受信制御部21は、リングバス90上を流れる周回命令を前のノードから受信する。また、リングバス送受信制御部21は、受信した周回命令の内容に応じたタイミングで、その周回命令をリングバス90上の次のノードに送信する。
例えば、リングバス送受信制御部21は、周回命令の内容に応じて、その周回命令の受信を契機とするタイミング、または、その周回命令の表す処理の完了を契機とするタイミングで、その周回命令を次のノードに送信してもよい。
周回命令実行部22は、リングバス送受信制御部21によって受信された周回命令の表す処理を実行する。
以上のように構成されたリングバス転送システム1のリングバス転送動作について、図4を参照して説明する。なお、図4において、左図はマスタノード10の動作を示し、右図はスレーブノード20_i(i=1〜n)の動作を示す。
まず、マスタノード10において、周回命令発行処理部11は、周回命令を発行する。そして、リングバス送受信部12は、発行された周回命令を、次のノードであるスレーブノード20_1に送信する(ステップS1)。
次に、スレーブノード20_iにおいて、リングバス送受信制御部21は、前のノードから周回命令を受信する(ステップS2)。
次に、リングバス送受信制御部21は、この周回命令を周回命令実行部22に通知するとともに、この周回命令の送信タイミングを、その内容に基づいて判断する。周回命令を通知された周回命令実行部22は、通知された周回命令の表す処理の実行を開始する(ステップS3)。
ここで、この周回命令が、その受信を契機とするタイミングで次のノードに送信されるよう定められている場合について説明する(ステップS4で「受信後」)。
この場合、リングバス送受信制御部21は、この周回命令を次のノードであるスレーブノード20_i+1に送信する(ステップS6)。ただし、スレーブノード20_nの場合、このステップにおける周回命令の送付先は、次のノードであるマスタノード10となる。
一方、この周回命令が、処理の完了を契機とするタイミングで次のノードに送信されるよう定められている場合について説明する(ステップS4で「完了後」)。
この場合、リングバス送受信制御部21は、ステップS3で開始された処理が完了するまで待機する。そして、処理が完了すると(ステップS5でYes)、リングバス送受信制御部21は、この周回命令を次のノードであるスレーブノード20_i+1に送信する(ステップS6)。ただし、スレーブノード20_nの場合、このステップにおける周回命令の送付先は、次のノードであるマスタノード10となる。
このようにして、スレーブノード20_i(i=1〜n)は、順次、ステップS2〜S6を実行する。
次に、マスタノード10において、リングバス送受信部12は、前のノードであるスレーブノード20_nから周回命令を受信する。そして、周回命令発行処理部11は、リングバス送受信部12によって受信された周回命令に対応する処理を実行する(ステップS7)。
以上で、リングバス転送システム1は、リングバス転送動作を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としてのリングバス転送システムは、リングバス上のあるノードから多数の他のノードに対して行われる通信の転送効率を、より向上させることができる。
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が、各スレーブノードに実行させる命令を表す周回命令を発行し、リングバス送受信部が、発行された周回命令をリングバス上の次のノードに送信するからである。そして、この周回命令は、次のスレーブノードのリングバス送受信制御部によって受信される。すると、このスレーブノードの周回命令実行部が、周回命令の表す処理を実行するとともに、リングバス送受信制御が、周回命令の内容に応じたタイミングで、この周回命令をリングバス上の次のノードに送信するからである。このようにして、リングバス上のスレーブノードを順次転送された周回命令は、マスタノードのリングバス送受信部によって受信される。すると、周回命令発行処理部が、戻された周回命令に対応する処理を実行するからである。
このように、本実施の形態は、リングバス上の多数のノードに対して処理を行う命令を1つに集約することができる。その結果、本実施の形態は、リングバス上の命令数を削減することができ、リングバスの転送効率を向上させることができる。
具体的には、本実施の形態では、リングバス上のマスタノードは、他の多数のスレーブノードに対して処理の実行を開始させたい場合に、1つの周回命令をリングバス上に周回させればよい。具体的には、マスタノードは、その受信を契機とするタイミングで次のスレーブノードに送信されるよう定められた内容の1つの周回命令を、リングバス上に送信すればよい。
また、本実施の形態は、リングバス上のマスタノードが、他の多数のスレーブノードに実行させた処理が完了した状態を確認したい場合に、1つの周回命令をリングバス上に周回させればよい。具体的には、この場合、マスタノードは、処理の完了を契機とするタイミングで次のスレーブノードに送信されるよう定められた内容の1つの周回命令を、リングバス上に送信すればよい。
なお、本実施の形態において、スレーブノードにおける周回命令の送信タイミングが、その受信を契機とするタイミング、または、周回命令の表す処理の完了を契機とするタイミングである例について説明した。これに限らず、スレーブノードにおける周回命令の送信タイミングは、その内容に応じて他のタイミングが定められていてもよい。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本実施の形態では、本発明における周回命令として、同期命令および同期応答を適用するケースについて説明する。
ここで、同期について説明する。同期とは、リングバス上の全ノードにおける、それぞれのバッファ内にある全ての処理の実行完了を確認する処理である。リングバス上での一般的な同期方式では、マスタノードが、1つの同期命令を他の全てのノードに対して送信する。各ノードは、同期命令を受信すると、バッファ内の全処理の実行完了を確認次第、同期応答をマスタノードに返信する。マスタノードは、全ノードからそれぞれ同期応答が返信されると、同期の完了を確認できる。しかしながら、この同期方式では、リングバス全体で返信される同期応答の数がノード数と同数になる。そのため、リングバスを通過する命令数が増加してしまう。本実施の形態では、リングバス上での同期において命令数を削減する例を示す。
まず、本発明の第2の実施の形態としてのリングバス転送システム2の構成を図5に示す。図5において、リングバス転送システム2は、マスタノード30およびn個のスレーブノード40(40_1、40_2、・・・、40_n)を備える。なお、nは1以上の整数である。これらのノードは、リングバス90上に環状に接続されている。
マスタノード30の機能ブロック構成を図6に示す。
図6において、マスタノード30は、本発明の第1の実施の形態としてのマスタノード10に対して、周回命令発行処理部11に替えて周回命令発行処理部31を備える点が異なる。
周回命令発行処理部31は、周回命令として同期命令を発行する。同期命令とは、各スレーブノード40において同期処理の開始を指示する命令である。また、同期処理とは、各スレーブノード40においてバッファ(図示せず)内に存在する処理を全て完了したことを確認する処理である。同期命令は、同期命令であることを表す命令列からなり、追加のペイロードを含んでいなくてもよい。同期命令は、各スレーブノード40において受信を契機とするタイミングで次のノードに送信されるよう定められる。
また、周回命令発行処理部31は、同期命令を発行後、周回命令として同期応答を発行する。同期応答とは、各スレーブノード40において同期処理が完了したことを確認する命令である。同期応答は、各スレーブノード40における同期処理の完了を契機とするタイミングで次のスレーブノード40に送信されるよう定められる。
また、周回命令発行処理部31は、リングバス90上を周回した同期命令の受信により、同期命令が各スレーブノード40を通過したことを認識できる。つまり、周回命令発行処理部31は、周回済みの同期命令の受信により、全てのスレーブノード40が同期処理を開始したことを確認できる。そして、周回命令発行処理部31は、受信した周回済みの同期命令を破棄してもよい。
また、周回命令発行処理部31は、リングバス90上を周回した同期応答の受信により、同期応答が各スレーブノード40を通過したことを認識できる。つまり、周回命令発行処理部31は、周回済みの同期応答の受信により、全てのスレーブノード40において同期処理が完了したことを確認できる。
次に、スレーブノード40の機能ブロック構成を図7に示す。
図7において、スレーブノード40は、本発明の第1の実施の形態としてのスレーブノード20に対して、リングバス送受信制御部21に替えてリングバス送受信制御部41と、周回命令実行部22に替えて周回命令実行部42とを備える。さらに、スレーブノード40は、同期確認部43と、同期確認レジスタ44と、同期応答バッファ45とを備える。なお、同期確認部43、同期確認レジスタ44、および同期応答バッファ45は、それぞれ本発明の周回命令実行部の一部の一実施形態を構成する。
リングバス送受信制御部41は、受信した周回命令が同期命令であるとき、その受信を契機とするタイミングでその同期命令を次のノードに送信する。また、リングバス送受信制御部41は、受信した同期命令を、後述の周回命令実行部42に通知する。
また、リングバス送受信制御部41は、受信した周回命令が同期応答であるとき、先行して受信された同期命令による同期処理の完了を契機とするタイミングで、その同期応答を次のノードに送信する。具体的には、リングバス送受信制御部41は、受信した同期応答を、後述の周回命令実行部42に通知する。そして、リングバス送受信制御部41は、周回命令実行部42から同期処理の完了を通知されると、同期応答を次のノードに送信する。
周回命令実行部42は、リングバス送受信制御部41によって同期命令が受信されると、同期処理を開始する。具体的には、周回命令実行部42は、同期確認部43を用いて、同期処理を開始する。
同期確認部43は、周回命令実行部42からの通知により、同期処理を行う。前述のように、同期処理とは、自ノードのバッファ(図示せず)内に溜まっていた全ての命令の処理が完了したか否かを確認する処理である。つまり、同期確認部43は、自ノードのバッファ内に命令が存在しなくなるまで、確認処理を繰り返せばよい。以降、自ノードのバッファ内に命令が存在しなくなることを、同期処理の完了というものとする。同期確認部43は、同期処理の完了を確認すると、同期処理の完了を周回命令実行部42に通知する。
同期確認レジスタ44は、自ノードが、同期処理が完了した状態にあるかどうかを保存するレジスタである。例えば、同期確認レジスタ44は、同期処理が完了した状態にある場合、あらかじめ定められた値の同期完了ステータスを保存するようにしてもよい。
同期応答バッファ45は、受信された同期応答を保存するバッファである。
また、周回命令実行部42は、同期確認部43から同期処理の完了を通知されると、同期確認レジスタ44に、同期完了ステータスを保存する。ただし、同期確認部43から同期処理の完了を通知された時点で、既にリングバス送受信制御部41により同期応答が受信済みである場合、周回命令実行部42は、同期確認レジスタ44に同期完了ステータスを保存しなくてもよい。この場合、周回命令実行部42は、後述の同期応答バッファ45に保存されている同期応答を次のノードに送信するよう、リングバス送受信制御部41に通知する。
また、周回命令実行部42は、リングバス送受信制御部41から同期応答を通知されると、その同期応答を同期応答バッファ45に保存する。ただし、同期応答が通知された時点で、既に同期確認レジスタ44に同期完了ステータスが保存されている場合、周回命令実行部42は、同期応答バッファ45に同期応答を保存しなくてもよい。この場合、周回命令実行部42は、受信した同期応答を次のノードに送信するよう、リングバス送受信制御部41に通知する。そして、周回命令実行部42は、同期確認レジスタ44の同期完了ステータスをクリアすればよい。
以上のように構成されたリングバス転送システム2の動作について、図面を参照して説明する。
まず、リングバス転送システム2における同期命令および同期応答の転送動作の概略を図8に示す。
図8では、まず、マスタノード30は、同期命令を発行し、スレーブノード40_1に送信する(ステップS201)。
具体的には、周回命令発行処理部31が、同期命令を発行する。そして、リングバス送受信部12が、発行された同期命令を、スレーブノード40_1に送信する。
次に、同期命令を受信したスレーブノード40_1は、スレーブノード40_2へ、同期命令を送信するとともに、同期処理を開始する(ステップS202_1)。
以降、同期命令を受信したスレーブノード40_iは、スレーブノード40_i+1へ、同期命令を送信するとともに、同期処理を開始する(ステップS202_i)。
このようにして、同期命令は、スレーブノード40_1〜40_nまで順次転送される。そして、同期命令を受信したスレーブノード40_nは、次のノードであるマスタノード30へ、同期命令を送信するとともに、同期処理を開始する(ステップS202_n)。ステップS202_iの詳細については後述する。
次に、スレーブノード40_nから同期命令を受信したマスタノード30は、同期命令がリングバス90上の全てのスレーブノード40を通過したこと認識し、同期命令を破棄する(ステップS203)。
具体的には、リングバス送受信部12が、同期命令を受信する。そして、周回命令発行処理部31が、同期命令の全ノード通過を確認し、同期命令を破棄する。
また、マスタノード30は、同期応答を発行し、スレーブノード40_1に送信する(ステップS211)。このステップは、ステップS201の実行後、任意のタイミングで実行される。
具体的には、周回命令発行処理部31が、同期応答を発行する。そして、リングバス送受信部12が、発行された同期応答を、スレーブノード40_1に送信する。
次に、同期応答を受信したスレーブノード40_1は、ステップS202_1で開始した同期処理の完了を確認後、スレーブノード40_2へ、同期応答を送信する(ステップS212_1)。
以降、同期応答を受信したスレーブノード40_iは、ステップS202_iで開始した同期処理の完了を確認後、スレーブノード40_i+1へ、同期応答を送信する(ステップS212_i)。
このようにして、同期応答は、スレーブノード40_1〜40_nまで順次転送される。そして、同期応答を受信したスレーブノード40_nは、ステップS202_nで開始した同期処理の完了を確認後、次のノードであるマスタノード30へ、同期応答を送信する(ステップS212_n)。ステップS212_iの詳細については後述する。
次に、スレーブノード40_nから同期応答を受信したマスタノード30は、同期応答がリングバス90上の全スレーブノード40の同期を確認したと判断し、同期完了を確認する(ステップS213)。
具体的には、リングバス送受信部12が、同期応答を受信する。そして、周回命令発行処理部31が、同期応答の全ノード通過により、リングバス90上の全スレーブノード40において同期処理が完了したことを確認する。
以上で、リングバス転送システム2における転送動作の概略の説明を終了する。なお、上記の説明において、ステップS201〜S203は、同期命令がリングバス90を周回する動作である。また、ステップS211〜S213は、同期応答がリングバス90を周回する動作である。なお、ステップS212_iは、ステップS202_iの終了後に実行される。
次に、ステップS202_iにおけるスレーブノード40_iの同期命令受信時の動作の詳細を、図9に示す。
図9では、まず、リングバス送受信制御部41は、前のノードから同期命令を受信する。そして、リングバス送受信制御部41は、同期命令を周回命令実行部42に通知するとともに、同期命令を次のノードに送信する(ステップA1)。
次に、同期命令を通知された周回命令実行部42は、同期確認部43を用いて同期処理を開始する(ステップA2)。
次に、周回命令実行部42は、同期確認部43から同期処理の完了が通知されるまで待機する。そして、同期処理の完了を通知されると(ステップA3でYes)、周回命令実行部42は、既に同期応答が到着しているか否かを判断する(ステップA4)。この判断処理は、同期応答バッファ45に同期応答が保存されているか否かを確認することにより行われる。
ここで、同期応答がまだ到着していない場合(ステップA4でNo)、周回命令実行部42は、同期確認レジスタ44に、同期完了ステータスを保存する(ステップA5)。
一方、同期応答が既に到着している場合(ステップA4でYes)、スレーブノード40_iの動作は、後述の図10におけるステップB3を実行する。
以上で、スレーブノード40_iは、ステップS202_iの動作を終了する。
次に、ステップS212_iにおけるスレーブノード40_iの同期応答受信時の動作の詳細を、図10に示す。
図10では、まず、リングバス送受信制御部41は、前のノードから同期応答を受信する。そして、リングバス送受信制御部41は、同期応答を周回命令実行部42に通知する(ステップB1)。
次に、同期応答を通知された周回命令実行部42は、同期処理の完了が既に確認されているか否かを判断する(ステップB2)。この判断処理は、同期確認レジスタ44に同期完了ステータスが保存されているか否かを確認することにより行われる。
ここで、同期処理の完了が既に確認されている場合、周回命令実行部42は、同期応答を次のノードに送信するよう、リングバス送受信制御部41に通知する。そして、リングバス送受信制御部41は、同期応答を次のノードに送信する。また、周回命令実行部42は、同期確認レジスタ44の同期完了ステータスをクリアする(ステップB3)。ただし、図9のステップA4でYesとなってこのステップを実行する場合、同期確認レジスタ44に同期完了ステータスは保存されていないので、そのクリア処理は不要である。
一方、ステップB2で、同期処理の完了が未だ確認されていないと判断された場合、周回命令実行部42は、同期応答を同期応答バッファ45に保存する(ステップB4)。
次に、周回命令実行部42は、同期確認部43から同期処理の完了が通知されるまで待機する。そして、同期処理の完了を通知されると(ステップB5でYes)、周回命令実行部42は、同期応答バッファ45に保存した同期応答を、次のノードに送信するよう、リングバス送受信制御部41に通知する。そして、リングバス送受信制御部41は、同期応答バッファ45の同期応答を次のノードに送信する。そして、周回命令実行部42は、同期応答バッファ45をクリアする(ステップB6)。
以上で、スレーブノード40_iは、ステップS212_iの動作を終了する。
なお、ステップA3またはステップB5において同期処理の完了を待機する間、スレーブノード40_iは、同期処理との関連がない他の動作を実行可能であるものとする。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としてのリングバス転送システムは、リングバス上で複数のノードの同期処理を行う際の転送効率を、より向上させることができる。
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が周回命令として同期命令を発行し、リングバス送受信部を介して次のノードに送信する。そして、この同期命令は、次のスレーブノードのリングバス送受信制御部によって受信される。同期命令は、各スレーブノードにおいてその受信を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、リングバス送受信制御部が、この同期命令を次のノードに送信するとともに、周回命令実行部が、同期処理を開始するからである。このようにして、同期命令は、リングバス上の各スレーブノードで同期処理を開始させながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、マスタノードの周回命令発行処理部が、同期命令の受信により、全てのスレーブノードにおいて同期処理が開始したことを認識するからである。
そして、本実施の形態では、マスタノードにおいて、周回命令発行処理部が、発行した同期命令によって開始された同期処理の完了を確認するため、同期応答を発行し、リングバス送受信部を介して次のスレーブノードに送信する。そして、この同期応答は、次のスレーブノードのリングバス送受信制御部によって受信される。同期応答は、各スレーブノードにおいて同期処理の完了を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、周回命令実行部が、先行して受信された同期命令による同期処理の完了を確認後、リングバス送受信制御部が、この同期命令を次のノードに送信するからである。このようにして、同期応答は、リングバス上の各スレーブノードでの同期完了を確認しながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、周回命令発行処理部が、同期応答の受信により、全てのスレーブノードにおいて同期処理が完了したことを確認できるからである。
ここで、前述の特許文献1に記載された関連技術を用いてリングバス上で同期を行うことを考える。この場合、この関連技術は、1つの状態検査パケットで、全てのノードにおける同期処理の完了状態を確認する。しかしながら、この関連技術を用いて同期を行う場合、少なくとも一部のノードにおいて同期が完了していない状態であることを示す状態検査パケットが戻されることもある。したがって、この場合、全てのノードにおいて同期が完了した状態を示す状態検査パケットが戻されるまで、マスタノードは、状態検査パケットを連続して送出しなければならない。したがって、この関連技術を用いてリングバス上の同期を行うと、状態検査パケットがリングバスを占有してしまう。さらに、同期の高速な検出のためには、状態検査パケットの送付回数を増加させることになり、リングバスが状態検査パケットで飽和してしまう。
これに対して、上述したように、本実施の形態では、1つの同期命令を周回させることにより、各スレーブノードが同期処理を開始する。そして、本実施の形態は、1つの同期応答を周回させると、各スレーブノードが、同期完了の確認まで同期応答の次ノードへの送付を遅延する。これにより、本実施の形態は、同期応答がマスタノードに戻ることにより、同期完了を確認する。したがって、本実施の形態では、リングバス上に1つの同期命令および1つの同期応答を周回させるだけで同期を行うことができ、転送効率を向上させる。なお、各スレーブノードは、同期応答の送付待ち合わせ中であっても、同期応答と無関係なデータを送受信することができる。したがって、1つに集約された同期応答の待ち合わせのために、リングバスの転送効率が低下することはない。
なお、本実施の形態において、スレーブノードは、同期確認レジスタおよび同期応答バッファとして、通常のレジスタ、ステータスレジスタ、通信用バッファ等、自ノードが有する任意の記憶域を適用可能である。また、スレーブノードにおいて、周回命令実行部が同期応答を発行する機能を有する場合がある。この場合、周回命令実行部は、同期応答バッファに同期応答そのものを保存しなくてもよい。その代わり、周回命令実行部は、同期応答を退避中であるというステータス情報をレジスタ等に保存しておき、同期応答の送付タイミングで、同期応答を発行すればよい。
また、本実施の形態において、同期処理とは、各スレーブノードにおいてバッファ内に存在する処理を全て完了したことを確認する処理であるとして説明した。ただし、同期処理において完了の確認をする処理の対象は、全ての処理である場合に限らない。例えば、同期処理の対象は、各スレーブノードのバッファ内における一部の処理であってもよい。具体例としては、同期処理の対象は、ある一部のメモリ領域に対する読み書き処理であってもよい。なお、その場合、リングバス転送システムは、同期処理を実行中においても、その同期処理との関連のない他の処理に関するデータをリングバス上で転送可能である。あるいは、同期処理は、各スレーブノードにおいて全動作の停止を確認する処理であってもよい。このような場合であっても、本実施の形態は、同様に動作して上述の効果を奏することができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本実施の形態では、本発明のスレーブノードとして、ブロック長mのインターリーブ化されたメモリを適用する例について説明する。また、本実施の形態では、本発明における周回命令として、インターリーブ化されたメモリに対するブロックリード命令を適用するケースについて説明する。
ここで、ブロックリードについて説明する。ブロックリードとは、インターリーブ化されたメモリ(ノード)を対象としたブロック単位の読み込み処理をいう。リングバス上での一般的なブロックリード方式では、マスタノードが、読込対象のブロックが割り当てられた各メモリの読み出し開始アドレスを計算する。そして、マスタノードは、各メモリ(ノード)に対して読み出し開始アドレスを含む読み出し命令を送付する。この一般的なブロックリード方式では、マスタノードは、連続したアドレス空間の読み出しにもかかわらず、各メモリ(ノード)について1命令、すなわち、合計でノード数分だけ命令を送付する必要がある。そのため、リングバスを通過する命令数が増加してしまう。本実施の形態では、リングバス上でインターリーブ化されたメモリに対するブロックリードにおいて命令数を削減する例について示す。
まず、本発明の第3の実施の形態としてのリングバス転送システム3の構成を図11に示す。図11において、リングバス転送システム3は、マスタノード50およびn個のスレーブノード60(60_1、60_2、・・・、60_n)を備える。なお、nは1以上の整数である。これらのノードは、リングバス90上に環状に接続されている。
マスタノード50の機能ブロック構成を図12に示す。
図6において、マスタノード50は、本発明の第1の実施の形態としてのマスタノード10に対して、周回命令発行処理部11に替えて周回命令発行処理部51と、リングバス送受信部12に替えてリングバス送受信部52とを備える。さらに、マスタノード50は、データバッファ53を備える。なお、データバッファ53は、本発明における周回命令発行処理部の一部の一実施形態を構成する。
周回命令発行処理部51は、周回命令としてブロックリード命令を発行する。ブロックリード命令とは、各スレーブノード60のメモリ66に分散格納されたデータに対するブロック単位の読み出し命令である。ブロックリード命令は、ブロックリード命令であることを表す情報(命令列)と、読み出し対象のブロックの開始アドレスを含むペイロードとからなる。ブロックリード命令は、各スレーブノード60において受信を契機とするタイミングで次のノードに送信されるよう定められる。
また、周回命令発行処理部51は、リングバス90上を周回したブロックリード命令を受信することにより、ブロックリード命令が各スレーブノード60を通過したことを認識できる。そして、周回命令発行処理部51は、受信したブロックリード命令を破棄してもよい。
リングバス送受信部52は、前のノードから受信した情報がブロックリード命令である場合、周回命令発行処理部51に通知する。また、リングバス送受信部52は、前のノードから受信した情報がデータである場合、データバッファ53に保存する。
データバッファ53は、各スレーブノード60から送信された、ブロックリード命令に対応するデータを、読み出し可能なブロックデータとして保存する。具体的には、データバッファ53は、各スレーブノード60から到着したデータを並べ替え、すべてのデータが到着した際にブロックリード可能な形に、整列して保存すればよい。例えば、周回命令発行処理部51は、各データの送信元のスレーブノード60を特定する。そして、周回命令発行処理部51は、各データを、その送信元のスレーブノード60毎にあらかじめ定められた格納位置に保存してもよい。なお、到着した各データに、送信元のスレーブノード60を特定する情報、または、各データの開始アドレスを示す情報が含まれていれば、各データの送信元のスレーブノード60は特定可能である。
次に、スレーブノード60の機能ブロック構成を図13に示す。図13において、スレーブノード60は、本発明の第1の実施の形態としてのスレーブノード20に対して、リングバス送受信制御部21に替えてリングバス送受信制御部61と、周回命令実行部22に替えて周回命令実行部62とを備える点が異なる。さらに、スレーブノード60は、メモリ66を備える。
メモリ66は、インターリーブ化されている。すなわち、ブロック長mのデータは、スレーブノード60_1〜60_nのメモリ66に分散格納される。また、メモリ66は、周回命令実行部62からデータの読み出し命令を受けると、該当するアドレスのデータを周回命令実行部62に返信する。
リングバス送受信制御部61は、受信した周回命令がブロックリード命令であるとき、その受信を契機とするタイミングでそのブロックリード命令を次のノードに送信する。
また、リングバス送受信制御部61は、周回命令実行部62によって読み出されたデータを、リングバス90を介してマスタノード50に送信する。
また、リングバス送受信制御部61は、前のノードからデータを受信すると、受信したデータを次のノードに送信する。前のノードから受信されるデータは、他のスレーブノード60においてブロックリード命令に応じて読み出されたデータである。これにより、あるスレーブノード60においてブロックリード命令に対応して読み出されたデータは、リングバス90上の他のスレーブノード60を経て、マスタノード50まで送信される。
周回命令実行部62は、ブロックリード命令の内容に基づいて自ノードのメモリ66における読み出し開始アドレスを算出する。そして、周回命令実行部62は、メモリ66において、算出した読み出し開始アドレスからデータを読み出す。
例えば、周回命令実行部62は、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて、自ノードのメモリ66における読み出し開始アドレスを算出する。
例えば、ブロック長をm、ノードの個数をn、ノード番号をi(i=1〜n)とする。また、ブロックリード命令に含まれる対象ブロックの先頭アドレスをaとする。この場合、ブロックデータが各メモリ66に分散格納されると、各メモリ66に割り当てられたデータの先頭アドレス(読み出し開始アドレス)は、
a+(m/n)*(i−1)・・・(1)
と表される。ここで、“/”は除算を表す。また、“*”は乗算を表す。
また、各メモリ66に割り当てられるデータ長は、
m/n・・・(2)
と表される。
そこで、周回命令実行部62は、ブロック長m、ノード数n、および、ブロックリード命令に含まれる対象ブロックの先頭アドレスaを、式(1)および(2)に適用することにより、自ノードの読み出し開始アドレスおよびデータ長を算出すればよい。一例として、m=1024、n=16、a=8192とし、このブロックデータが各メモリ66に分散格納されたとする。この場合、各メモリ66に割り当てられるデータ長は、式(2)により64と算出される。また、各メモリ66に割り当てられたデータの先頭アドレス(読み出し開始アドレス)は、式(1)により、8192+64*(i−1)となる。そこで、スレーブノード60_1の周回命令実行部62は、読み出し開始アドレスとして、8192を算出する。また、スレーブノード60_2の周回命令実行部62は、読み出し開始アドレスとして、8256を算出する。また、スレーブノード60_3の周回命令実行部62は、読み出し開始アドレスとして、8320を算出する。また、スレーブノード60_16の周回命令実行部62は、読み出し開始アドレスとして、9152を算出する。
以上のように構成されたリングバス転送システム3におけるブロックリード動作について、図面を参照して説明する。
まず、ブロックリード動作の概略を図14に示す。
図14では、まず、マスタノード50は、ブロックリード命令を発行し、スレーブノード60_1に送信する(ステップS301)。
具体的には、周回命令発行処理部51が、ブロックリード命令を発行する。このブロックリード命令には、読み出し対象のブロックの開始アドレスが含まれる。そして、リングバス送受信部52が、ブロックリード命令をスレーブノード60_1に送信する。
次に、ブロックリード命令を受信したスレーブノード60_1は、スレーブノード60_2へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する(ステップS302_1)。
以降、ブロックリード命令を受信したスレーブノード60_iは、スレーブノード60_i+1へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する(ステップS302_i)。
このようにして、ブロックリード命令は、スレーブノード60_1〜60_nまで順次転送される。そして、ブロックリード命令を受信したスレーブノード60_nは、次のノードであるマスタノード50へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する(ステップS302_n)。ステップS302_iの詳細については後述する。
次に、スレーブノード60_nからブロックリード命令を受信したマスタノード50は、ブロックリード命令がリングバス90上の全てのスレーブノード60を通過したこと認識し、ブロードリード命令を破棄する(ステップS303)。
具体的には、リングバス送受信部52が、ブロックリード命令を受信する。そして、周回命令発行処理部51が、受信されたブロックリード命令を破棄する。
また、各スレーブノード60_iでは、ステップS302_iにおいて、ブロックリード命令に応じた処理を開始している。すなわち、各スレーブノード60_iは、自ノードのメモリ66から、ブロックリード命令の読み出し対象に関するデータを読み込み、マスタノード50に送信する(ステップS312_i)。このステップの詳細については後述する。
そして、マスタノード50では、各スレーブノード60_iから返信されたデータに基づいて、読み出し可能なブロックデータを生成する(ステップS313)。
具体的には、リングバス送受信部52は、各スレーブノード60_iから返信されたデータを受信すると、データバッファ53に送付する。そして、データバッファ53は、各データを整列し、読み出し可能なブロックデータとして保存する。
以上で、ブロックリード動作の概略の説明を終了する。
次に、ステップS302_iおよびS312_iにおけるスレーブノード60_iの動作の詳細を、図15に示す。なお、1つのスレーブノード60の中では、ステップS302_iおよびS312_iは一連の動作として実行される。
図15では、まず、リングバス送受信制御部61は、前のノードからブロックリード命令を受信する。そして、リングバス送受信制御部61は、ブロックリード命令を周回命令実行部62に通知するとともに、ブロックリード命令を次のノードに送信する(ステップC1)。
次に、周回命令実行部62は、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて、自ノードのメモリ66における読み出し開始アドレスを算出する(ステップC2)。
前述のように、周回命令実行部62は、式(1)を用いて、自ノードにおける読み出し開始アドレスを算出すればよい。
次に、周回命令実行部62は、算出した読み出し開始アドレスから、所定のデータ長のデータを読み出す(ステップC3)。なお、前述のように、所定のデータ長は、ブロックデータ長およびノード数から式(2)により算出可能である。あるいは、周回命令実行部62は、そのようにして算出されたデータ長をあらかじめ記憶しておいてもよい。
次に、リングバス送受信制御部61は、ステップC3で読み出されたデータを、リングバス90を介してマスタノード50に送信する(ステップC4)。
以上で、スレーブノード60_iは、ステップS302_iおよびS312_iの動作を終了する。
次に、本発明の第3の実施の形態の効果について述べる。
本発明の第3の実施の形態としてのリングバス転送システムは、リングバス上でインターリーブ化されたメモリに対するブロックリードを行う際の転送効率を、より向上させることができる。
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が、周回命令としてブロックリード命令を発行し、リングバス送受信部を介して次のノードに送信する。そして、このブロックリード命令は、次のスレーブノードのリングバス送受信制御部によって受信される。ブロックリード命令は、各スレーブノードにおいてその受信を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、リングバス送受信制御部が、このブロックリード命令を次のノードに送信するとともに、周回命令実行部が、ブロックリード命令に対応する読み出し処理を開始する。このようにして、ブロックリード命令は、リングバス上の各スレーブノードでブロックリード命令に対応する読み出し処理を開始させながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、マスタノードにおいて、周回命令発行処理部が、ブロックリード命令の受信により、全てのスレーブノードにおいてブロックリード命令に対応する読み出し処理が開始したことを認識する。
そして、本実施の形態では、各スレーブノードにおいてブロックリード命令が受信されると、周回命令実行部が、読み出し対象のブロックデータのうち自ノードに割り当てられたデータの読み出し開始アドレスを算出する。読み出し開始アドレスは、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて算出される。そして、周回命令実行部は、自ノードのメモリにおいて、算出した読み出し開始アドレスからデータ長だけのデータを読み出す。そして、リングバス送受信制御部が、読み出されたデータを、リングバスを介してマスタノードに送信するからである。
そして、本実施の形態では、マスタノードにおいて、リングバス送受信部が、各スレーブノードで読み出されたデータを受信すると、データバッファが、各データを、その送信元または開始アドレスに基づき整列して保存する。これにより、データバッファには、対象のブロックデータが読み出し可能に保存されることになる。
ここで、前述したように、一般的なリングバス上でのブロックリードの場合、マスタノードは、各メモリ(ノード)について1つずつの命令、すなわち、合計でノード数分だけ命令を送付する必要があった。
これに対して、上述したように、本実施の形態では、1つのブロックリード命令を周回させることにより、各スレーブノードが、ブロックリード命令に基づき自ノードの読み出し開始アドレスを算出して読み出す処理を開始する。したがって、本実施の形態では、リングバス上でのブロックリードにおいて、リングバス上に送出される命令数を削減することができる。
(第4の実施の形態)
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第2および第3の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本実施の形態では、リングバス転送システムにおいて、複数のノードが複数のリングバスに接続される例について説明する。
まず、本発明の第4の実施の形態としてのリングバス転送システム4の構成を図16に示す。図16において、リングバス転送システム4は、マスタノード70およびn個のスレーブノード80(80_1、80_2、・・・、80_n)を備える。なお、nは1以上の整数である。これらのノードは、リングバス91および92上に環状に接続されている。リングバス91および92は、通信方向が互いに逆方向となっている。リングバス91では、マスタノード70、スレーブノード80_1、80_2、・・・80_n、マスタノード70・・・の順に情報が送信される。リングバス92では、マスタノード70、スレーブノード80_n、80_n−1、・・・80_1、マスタノード70・・・の順に情報が送信される。
マスタノード70の機能ブロック構成を図17に示す。図17において、マスタノード70は、周回命令発行処理部71と、リングバス送受信部72と、データバッファ53とを備える。
周回命令発行処理部71は、周回命令として、リングバス91および92に流すための略同一内容の周回命令を発行する。本実施の形態では、周回命令の一例として、同期命令、同期応答、および、ブロックリード命令を想定するが、これらに限らない。また、周回命令発行処理部71は、リングバス91および92に流す周回命令に、周回命令の指示する処理を識別する同一の処理IDを付加してもよい。
ここで、周回命令発行処理部71によってリングバス91および92に流すために発行される周回命令は、略同一内容であるが、次の部分が異なる場合もある。例えば、周回命令発行処理部71は、リングバス91および92に流す周回命令に、その通信方向またはリングバスの識別情報を表すタグ情報を付加してもよい。また、周回命令発行処理部71は、リングバス91および92に流す周回命令に、それぞれいずれのスレーブノード80を対象とする命令であるかを特定可能な宛先情報を付加してもよい。
なお、周回命令発行処理部71は、周回命令の内容によっては、リングバス91および92のどちらか一方に流す周回命令を発行する場合もある。
また、周回命令発行処理部71は、リングバス91または92上を周回した周回命令を受信すると、周回命令に対応する処理を実行する。
リングバス送受信部72は、周回命令発行処理部71によって発行された周回命令を、リングバス91または92における次のノードに送信する。リングバス91および92の全てに流すための複数の略同一内容の周回命令が発行された場合、リングバス送受信部72は、リングバス91および92における次のノードにそれぞれを送信すればよい。
次に、スレーブノード80の機能ブロック構成を図18に示す。図18において、スレーブノード80は、リングバス送受信制御部81と、周回命令実行部82と、同期確認部43と、同期確認レジスタ44と、同期応答バッファ45と、メモリ66と、同期命令到着レジスタ87とを備える。なお、同期命令到着レジスタ87は、本発明における周回命令実行部の一部の一実施形態を構成する。
リングバス送受信制御部81は、リングバス91または92から周回命令を受信すると、その周回命令の内容に応じたタイミングで、受信した側のリングバスにおける次のノードに、周回命令を送信する。
周回命令実行部82は、周回命令の内容に応じて、リングバス91および92から略同一内容の周回命令が全て到着後、または、リングバス91および92のいずれかから周回命令が到着後、周回命令の表す処理を実行する。あるいは、周回命令実行部82は、周回命令の内容に応じて、リングバス91または92から受信された周回命令の対象が自ノードであると判定した場合に、周回命令の表す処理を実行する。例えば、周回命令に宛先情報が含まれている場合を考える。この場合、周回命令実行部82は、宛先情報に自ノードが含まれている場合に、周回命令の表す処理を実行すればよい。あるいは、周回命令実行部82は、周回命令の内容に応じて、あらかじめ自ノードが反応する対象のリングバスを定めた反応情報を記憶しておいてもよい。そして、この場合、周回命令実行部82は、受信した周回命令の内容に応じて反応情報を参照し、自ノードが反応する対象であると判定した場合に、周回命令の表す処理を実行すればよい。
<同期命令の場合>
次に、同期命令を周回させる場合について、各機能ブロックの具体的構成を説明する。
マスタノード70の周回命令発行処理部71は、リングバス91および92のそれぞれに流すための、略同一内容の同期命令を発行する。この場合、周回命令発行処理部71は、各同期命令に前述のタグ情報を付加してもよい。そして、周回命令発行処理部71は、リングバス91および92のそれぞれを周回した同期命令を受信すると、各同期命令を破棄すればよい。
マスタノード70のリングバス送受信部72は、略同一内容で発行された同期命令を、リングバス91および92のそれぞれにおける次のノードに送信する。
スレーブノード80のリングバス送受信制御部81は、リングバス91または92から同期命令を受信した場合、受信を契機とするタイミングで、受信したリングバスにおける次のノードにその同期命令を送信する。また、リングバス送受信制御部81は、受信した同期命令を周回命令実行部82に通知する。
スレーブノード80の周回命令実行部82は、リングバス91および92から略同一内容の同期命令が全て到着後、同期確認部43を用いて同期処理を開始する。
ここで、同期命令については、リングバス91および92の全てから到着後に、同期処理が開始されるよう定められる。その理由について説明する。各ノードが複数のリングバス91および92に接続される場合、同期命令に先駆けて処理されている先行命令やデータ転送にも、複数のリングバス91または92が利用されている。そのため、マスタノード70により同期命令が発行された際に、複数のリングバス91および92上には、マスタノード70から送付された他の命令やデータのうち、宛先のスレーブノード80に到着していない命令やデータが存在する可能性がある。これらの他の命令やデータは、後続の同期命令が各スレーブノード80に到着する前に、各宛先のスレーブノード80に到着する。したがって、あるスレーブノード80において、リングバス91および92の一部だけから同期命令が到着した時点では、まだ同期命令が到着していない他のリングバスから他の命令やデータがそのノードに到着する可能性がある。したがって、周回命令実行部82が、全てのリングバス91および92より同期命令が到着した後に同期処理を開始することにより、先行する他の命令やデータが確実にそのノードに到着した状態で、同期処理を開始することができるからである。
具体的には、周回命令実行部82は、リングバス送受信制御部81から同期命令を通知されると、同期命令到着レジスタ87を確認する。もし、同期命令到着レジスタ87に、同期命令到着ステータスがまだ保存されていない場合、今回の同期命令の通知により、リングバス91および92の一部(片方)から、同期命令が到着したことになる。なお、同期命令到着ステータスとは、リングバス91および92の一部から同期命令が到着した状態を表す情報である。そこで、この場合、リングバス送受信制御部81は、同期命令到着ステータスを同期命令到着レジスタ87に保存する。
また、もし、同期命令到着レジスタ87に、同期命令到着ステータスが既に保存されている場合、今回の同期命令の通知により、リングバス91および92の全てから、同期命令が到着したことになる。この場合、リングバス送受信制御部81は、本発明の第2の実施の形態におけるリングバス送受信制御部41と同様に、同期処理を開始する。
なお、リングバス91および92のうちいずれから同期命令が到着したかを判断するためには、周回命令実行部82は、同期命令を受信した方向を判別してもよい。あるいは、前述のように、方向またはリングバスを識別するタグ情報が同期命令に付加されている場合、周回命令実行部82は、タグ情報に基づいて受信したリングバスを判断してもよい。
<同期応答の場合>
次に、同期応答を周回させる場合について、各機能ブロックの具体的構成を説明する。
マスタノード70の周回命令発行処理部71は、リングバス91および92にそれぞれ流すための、略同一内容の同期応答を発行する。この場合、周回命令発行処理部71は、それぞれの同期応答に、タグ情報および同一の処理IDを付加してもよい。
また、周回命令発行処理部71は、リングバス91および92のいずれか早い方から同期応答が到着すると、各スレーブノード80における同期処理が完了したことを確認できる。そこで、周回命令発行処理部71は、後から到着した同期応答を、破棄すればよい。例えば、リングバス91および92の双方に流した同期応答に同一の処理IDを付加したとする。この場合、周回命令発行処理部71は、到着した同期応答の処理IDを参照することにより、最初に到着した同期応答であるか後に到着した同期応答であるかを判断することができる。
マスタノード70のリングバス送受信部72は、略同一内容の同期応答を、リングバス91および92における次のノードにそれぞれ送信する。
スレーブノード80の周回命令実行部82は、リングバス91および92のそれぞれから同期応答が到着すると、本発明の第2の実施の形態の周回命令実行部42と略同様に、同期処理の完了を確認する処理を行う。
スレーブノード80のリングバス送受信制御部81は、リングバス91または92から同期応答を受信すると、同期応答を周回命令実行部82に通知する。また、リングバス送受信制御部81は、周回命令実行部82によって同期処理の完了が確認されると、リングバス91および92のそれぞれから受信した同期応答を、それぞれにおける次のノードに送信する。なお、この場合、同期確認レジスタ44および同期応答バッファ45は、リングバス91および92からの各同期応答に対応して設けられる。
<ブロックリード命令の場合>
次に、ブロックリード命令を周回させる場合について、各機能ブロックの具体的構成を説明する。
マスタノード70の周回命令発行処理部71は、リングバス91および92にそれぞれ流すための、略同一内容のブロックリード命令を発行する。そして、周回命令発行処理部71は、リングバス91および92のそれぞれを周回したブロックリード命令を受信すると、各ブロックリード命令を破棄すればよい。
マスタノード70のリングバス送受信部72は、略同一内容のブロックリード命令を、リングバス91および92における次のノードにそれぞれ送信する。
スレーブノード80のリングバス送受信制御部81は、リングバス91または92からブロックリード命令を受信した場合、受信を契機とするタイミングで、受信したリングバスにおける次のノードにそのブロックリード命令を送信する。また、リングバス送受信制御部81は、受信したブロックリード命令を周回命令実行部82に通知する。
また、リングバス送受信制御部81は、ブロックリード命令により読み出されたデータを、リングバス91および92のいずれかを用いて、マスタノード70に向けて送信する。なお、送信に用いられるリングバスとしては、自ノードとマスタノード70との間のノード数がより少ないリングバスが選択されることが望ましい。これにより、ブロックリード完了までの遅延を小さくできる可能性が高くなる。
スレーブノード80の周回命令実行部82は、リングバス91および92のいずれかからブロックリード命令が到着すると、本発明の第3の実施の形態の周回命令実行部62と同様に、ブロックリード命令に対応する読み出し処理を行う。また、周回命令実行部82は、その後もう片方のリングバスから到着したブロックリード命令については、処理を行わないようにする。あるいは、ブロックリード命令を破棄するスレーブノード80をあらかじめ定めておいてもよい。例えば、マスタノード70から最も遠く隣接している2つのスレーブノード80が、それぞれ、片方のリングバスから到着したブロックリード命令に対応する読み出し処理を行うとともに、そのブロックリード命令を次のノードに送信する代わりに破棄してもよい。この場合、各スレーブノード80には、リングバス91および92のいずれか一方からのみブロックリード命令が到着することになる。
以上のように構成されたリングバス転送システム4におけるリングバス転送動作を、図面を参照して説明する。
まず、リングバス転送システム4における同期命令周回動作の概略を図19に示す。
図19では、まず、マスタノード70において、周回命令発行処理部71は、リングバス91および92に流すための、略同一内容の同期命令を発行する(ステップS401)。
以下、ステップS411〜S413の動作は、リングバス91上の転送動作を示す。また、ステップS421〜S423の動作は、リングバス92上の転送動作を示す。なお、ステップS411〜S413の動作と、ステップS421〜S423の動作とは、並行して行われる。
まず、リングバス送受信部72は、ステップS401で発行されたうち一方の同期命令を、リングバス91上の次のノードであるスレーブノード80_1に転送する(ステップS411)。
次に、リングバス91から同期命令を受信したスレーブノード80_1は、スレーブノード80_2へ、同期命令を送信する(ステップS412_1)。
以降、リングバス91から同期命令を受信したスレーブノード80_iは、スレーブノード80_i+1へ、同期命令を送信する(ステップS412_i)。
このようにして、ステップS412_i(i=1〜n)が実行されることにより、同期命令は、スレーブノード80_1〜80_nまで順次転送される。そして、スレーブノード80_nは、受信した同期命令をマスタノード70へ送信する(ステップS412_n)。
次に、マスタノード70において、リングバス送受信部72は、スレーブノード80_nから同期命令を受信する。そして、周回命令発行処理部71は、同期命令がリングバス91上を周回して全てのスレーブノード80を通過したこと認識し、同期命令を破棄する(ステップS413)。
また、リングバス送受信部72は、ステップS401で発行されたうちの他方の同期命令を、リングバス92上の次のノードであるスレーブノード80_nに転送する(ステップS421)。
次に、リングバス92から同期命令を受信したスレーブノード80_nは、スレーブノード80_n−1へ、同期命令を送信する(ステップS422_n)。
以降、リングバス92から同期命令を受信したスレーブノード80_iは、スレーブノード80_i−1へ、同期命令を送信する(ステップS422_i)。
このようにして、ステップS422_i(i=n〜1)が実行されることにより、同期命令は、スレーブノード80_n〜80_1まで順次転送される。そして、スレーブノード80_1は、受信した同期命令をマスタノード70へ送信する(ステップS422_1)。
次に、マスタノード70において、リングバス送受信部72は、スレーブノード80_1から同期命令を受信する。そして、周回命令発行処理部71は、同期命令がリングバス92上を周回して全てのスレーブノード80を通過したこと認識し、同期命令を破棄する(ステップS423)。
また、各スレーブノード80_iは、リングバス91および92の双方から同期命令が到着後、同期処理を開始する(ステップS432_i)。
以上で、リングバス転送システム4は、同期命令周回動作を終了する。
次に、ステップS412_i、S422_i、および、S432_iにおけるスレーブノード80_iの同期開始動作の詳細を、図20に示す。なお、スレーブノード80_iにおいて、これらのステップは、一連の動作として実行される。
図20では、まず、リングバス送受信制御部81は、リングバス91および92のいずれかから、同期命令を受信する。そして、リングバス送受信制御部81は、受信した同期命令を、周回命令実行部82に通知するとともに、受信したリングバスにおける次のノードに送信する(ステップD1)。
次に、同期命令を通知された周回命令実行部82は、他のリングバスからの同期命令が既に到着しているか否かを判断する(ステップD2)。この判断処理は、同期命令到着レジスタ87に同期命令到着ステータスが保存されているか否かを確認することにより行われる。
ここで、まだ他のリングバスからの同期命令が到着していない場合、周回命令実行部82は、同期命令到着ステータスを、同期命令到着レジスタ87に保存する(ステップD3)。そして、スレーブノード80_iの動作は、ステップD1に戻る。
一方、ステップD2において、既に他のリングバスからの同期命令が到着していると判断された場合、リングバス91および92の全てから同期命令が受信されたことになる。
そこで、以降、スレーブノード80_iは、ステップA2〜A5まで、本発明の第2の実施の形態と同様に動作して、同期命令受信時の動作を終了する。ただし、スレーブノード80_iは、ステップA4において、同期応答が到着済であるか否かの判断処理を、リングバス91および92のそれぞれからの同期応答について別々に実行する。また、スレーブノード80_iは、ステップA5において、同期完了ステータスの保存処理を、リングバス91および92のそれぞれからの同期応答について別々に実行する。
次に、リングバス転送システム4における同期応答周回動作の概略を図21に示す。
図21では、まず、マスタノード70において、周回命令発行処理部71は、リングバス91および92に流すための、略同一内容の同期応答を発行する(ステップS501)。
以下、ステップS511〜S512の動作は、リングバス91上の転送動作を示す。また、ステップS521〜S522の動作は、リングバス92上の転送動作を示す。なお、ステップS511〜S512の動作と、ステップS521〜S522の動作とは、並行して行われる。
まず、リングバス送受信部72は、ステップS501で発行されたうち一方の同期応答を、リングバス91上の次のノードであるスレーブノード80_1に転送する(ステップS511)。
次に、リングバス91から同期応答を受信したスレーブノード80_1は、自ノードにおける同期処理の完了を確認してから、スレーブノード80_2へ、同期応答を送信する(ステップS512_1)。
以降、リングバス91から同期応答を受信したスレーブノード80_iは、自ノードにおける同期処理の完了を確認してから、スレーブノード80_i+1へ、同期応答を送信する(ステップS512_i)。
このようにして、ステップS512_i(i=1〜n)が実行されることにより、同期応答は、各スレーブノード80の同期処理の完了を確認しながら、スレーブノード80_1〜80_nまで順次転送される。そして、スレーブノード80_nは、自ノードにおける同期処理の完了を確認してから、マスタノード70へ同期応答を送信する(ステップS512_n)。
また、リングバス送受信部72は、ステップS501で発行されたうち他方の同期応答を、リングバス92上の次のノードであるスレーブノード80_nに転送する(ステップS521)。
次に、リングバス92から同期応答を受信したスレーブノード80_nは、自ノードにおける同期処理の完了を確認してから、スレーブノード80_n−1へ、同期応答を送信する(ステップS522_n)。
以降、リングバス92から同期応答を受信したスレーブノード80_iは、自ノードにおける同期処理の完了を確認してから、スレーブノード80_i−1へ、同期応答を送信する(ステップS522_i)。
このようにして、ステップS522_i(i=n〜1)が実行されることにより、同期応答は、各スレーブノード80の同期処理の完了を確認しながら、スレーブノード80_n〜80_1まで順次転送される。そして、スレーブノード80_1は、自ノードにおける同期処理の完了を確認してから、マスタノード70へ同期応答を送信する(ステップS522_1)。
次に、マスタノード70において、リングバス送受信部72は、スレーブノード80_1または80_nから、同期応答を受信する。そして、周回命令発行処理部71は、リングバス91および92のいずれか一方から同期応答を受信すると、全てのスレーブノード80において同期処理が完了したことを確認する。また、周回命令発行処理部71は、その後、他方のリングバスから同期応答を受信すると、この同期応答を破棄する(ステップS503)。
以上で、リングバス転送システム4は、同期応答周回動作を終了する。
なお、ステップS512_iおよびS522_iにおいて、各スレーブノード80_iが同期処理の完了を確認する動作の詳細は、図10に示した本発明の第2の実施の形態と同様である。ただし、図10の動作において、スレーブノード80_iは、対象のリングバスに対応する同期確認レジスタ44および同期応答バッファ45を利用すればよい。
次に、リングバス転送システム4におけるブロックリード動作の概略を図22に示す。ここでは、2つのスレーブノード80_kおよび80_k+1において、ブロックリード命令が破棄されるよう定められているものとする。ただし、kは1以上n−1以下の整数である。例えば、スレーブノード80_kおよび80_k+1は、マスタノード70から最も遠い隣接する2つのノードであってもよい。
図22では、まず、マスタノード70において、周回命令発行処理部71は、リングバス91および92に流すための、略同一内容のブロックリード命令を発行する(ステップS601)。
以下、ステップS611〜S612の動作は、リングバス91上の転送動作を示す。また、ステップS621〜S622の動作は、リングバス92上の転送動作を示す。なお、ステップS611〜S612の動作と、ステップS621〜S622の動作とは、並行して行われる。
まず、リングバス送受信部72は、ステップS601で発行されたうち一方のブロックリード命令を、リングバス91上の次のノードであるスレーブノード80_1に転送する(ステップS611)。
次に、リングバス91からブロックリード命令を受信したスレーブノード80_1は、スレーブノード80_2へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する(ステップS612_1)。
以降、リングバス91からブロックリード命令を受信したスレーブノード80_iは、スレーブノード80_i+1へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する(ステップS612_i)。
このようにして、ステップS612_i(i=1〜k)が実行されることにより、ブロックリード命令は、スレーブノード80_1〜80_kまで順次転送される。そして、スレーブノード80_kは、ブロックリード命令を次のノードに送信する代わりに破棄し、ブロックリード命令に対応する読み出し処理を開始する(ステップS612_k)。
また、リングバス送受信部72は、ステップS601で発行されたうち他方のブロックリード命令を、リングバス92上の次のノードであるスレーブノード80_nに転送する(ステップS621)。
次に、リングバス92からブロックリード命令を受信したスレーブノード80_nは、スレーブノード80_n−1へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する(ステップS622_n)。
以降、リングバス92からブロックリード命令を受信したスレーブノード80_iは、スレーブノード80_i−1へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する(ステップS622_i)。
このようにして、ステップS622_i(i=n〜k+1)が実行されることにより、ブロックリード命令は、スレーブノード80_n〜80_k+1まで順次転送される。そして、スレーブノード80_k+1は、ブロックリード命令を次のノードに送信する代わりに破棄し、ブロックリード命令に対応する読み出し処理を開始する(ステップS622_k+1)。
また、各スレーブノード80_iは、ステップS612_iまたはS622_iの実行後、本発明の第3の実施の形態と同様にステップS312_iを実行する。すなわち、スレーブノード80_iは、自ノードのメモリ66から、ブロックリード命令の読み出し対象に関するデータを読み込み、マスタノード70に送信する。ステップS612_iまたはS622_i、およびステップS312_iの動作の詳細は、図15を参照して説明した本発明の第3の実施の形態の動作と同様である。ただし、スレーブノード80_kおよび80_k+1は、ステップC1において、ブロックリード命令を次のノードへ送信する代わりに破棄する。
そして、マスタノード70は、本発明の第3の実施の形態と同様にステップS313を実行し、各スレーブノード80_iから返信されたデータに基づいて、読み出し可能なブロックデータを生成する。
以上で、リングバス転送システム4は、ブロックリード動作を終了する。
次に、本発明の第4の実施の形態の効果について述べる。
本発明の第4の実施の形態としてのリングバス転送システムは、複数のリングバスに接続された複数のノードにおいて、あるノードから多数の他のノードに対して行われる通信の転送効率を、より向上させることができる。
その理由について説明する。本実施の形態では、マスタノードが、各リングバスに略同一内容の周回命令を流す。そして、スレーブノードが、周回命令の内容に応じて、複数のリングバスからの周回命令が全て到着後、または、複数のリングバスのいずれかから周回命令が到着後、または、周回命令の対象が自ノードである場合に、周回命令の表す処理を実行するからである。
これにより、本実施の形態は、複数のリングバスに各ノードが接続される場合でも、周回命令の内容に応じて、周回命令の数を削減しながら適切に処理を実行することができる。
なお、本実施の形態において、複数のノードが2つのリングバスに接続される例について説明したが、リングバスの数を限定するものではない。例えば、本実施の形態は、3つ以上のリングバスに各ノードが接続される場合でも実施可能である。ただし、この場合、スレーブノードの同期命令到着レジスタは、到着済の同期命令の数を保存するようにしてもよい。そして、スレーブノードの周回命令実行部は、同期命令到着レジスタの値がリングバスの数に等しくなると、同期処理を開始するようにしてもよい。
また、本実施の形態において、2つのリングバスの通信方向が逆である例について説明したが、各リングバスの通信方向を限定するものではない。
また、本実施の形態において、各スレーブノードは、全てのリングバスからの同期命令が到着後、同期処理を開始するものとして説明した。ただし、マスタノードにおける同期命令発行時においてリングバス上で送付中の情報が、スレーブノードの同期に影響を与えないケースもある。そのような場合、各スレーブノードは、いずれかのリングバスからの同期命令が到着後、同期処理を開始してもよい。この場合、各スレーブノードは、後から到着した同期命令については無視すればよい。
また、本実施の形態において、マスタノードが、全てのリングバスにおいて略同一内容の同期応答を周回させ、いずれかのリングバスから最初に同期応答を受け取った時点で同期完了を確認する例について説明した。
この他、本実施の形態において、マスタノードは、同期応答をいずれか1つのリングバスを周回させることにより同期完了を確認してもよい。この場合、マスタノードおよびスレーブノードは、本発明の第2の実施の形態と同様に同期応答の転送動作を行えばよい。
あるいは、本実施の形態において、リングバス毎に、同期応答に反応するスレーブノードをあらかじめ定めおき、マスタノードは、全てのリングバスからの同期応答を受信した時点で、同期完了を確認してもよい。この場合、マスタノードは、各リングバスに流す同期応答に、反応すべきスレーブノードを表す宛先情報を含めてもよい。そして、スレーブノードの周回命令実行部は、受信した同期応答に含まれる宛先情報を参照することで、この同期応答の対象が自ノードであるか否かを判断すればよい。あるいは、各スレーブノードが、あらかじめいずれのリングバスからの同期応答に反応するかを表す反応情報を記憶しておいてもよい。この場合、スレーブノードの周回命令実行部は、反応情報を参照することで、この同期応答の対象が自ノードであるか否かを判断すればよい。いずれにしても、このようにリングバス毎に同期応答に反応するスレーブノードを定めおく場合、各スレーブノードは、到着した同期応答の対象が自ノードである場合に、同期処理の完了を確認後、該当するリングバス上の次のノードにその同期応答を送信すればよい。また、スレーブノードは、到着した同期応答の対象が自ノードでない場合、同期応答を単に通過させればよい。すなわち、この場合、スレーブノードは、同期応答を受信すると、同期処理の完了を確認せずに、受信したリングバス上の次のノードにその同期応答を送信すればよい。
また、本実施の形態において、マスタノードが同期応答を発行する例を中心に説明した。これに限らず、スレーブノードのいずれかが、自ノードにおける同期処理の完了を確認次第、複数のリングバスに向けて同期応答を発行するようあらかじめ定めておいてもよい。そのようなスレーブノードは、例えば、マスタノードから最も遠い1つのノードであることが望ましい。例えば、マスタノードおよび16個のスレーブノードがリングバスに接続されている場合、そのようなスレーブノードとは、マスタノードの隣から数えて8番目または9番目のスレーブノードであってもよい。そして、この場合、マスタノードは、複数のリングバスから同期応答を受信すると、全てのスレーブノードにおける同期処理の完了を確認できる。これにより、本実施の形態は、より高速に同期の確認を行うことができる。
また、本実施の形態において、マスタノードが、全てのリングバスにおいて略同一内容のブロックリード命令を周回させる例について説明した。この場合、スレーブノードは、いずれかのリングバスからブロックリード命令が到着すると読み出し処理を行い、その後他のリングバスから到着したブロックリード命令については処理を行わない例について説明した。あるいは、この場合、あらかじめ定められた隣接する2つのスレーブノードが、片方のリングバスから到着したブロックリード命令に対応する読み出し処理を行うとともに、そのブロックリード命令を破棄する例についても説明した。
この他、本実施の形態において、リングバス毎に、ブロックリード命令に反応するスレーブノードをあらかじめ定めおいてもよい。この場合、マスタノードは、各リングバスに流すブロックリード命令に、反応すべきスレーブノードを表す宛先情報を含めてもよい。そして、スレーブノードの周回命令実行部は、受信したブロックリード命令に含まれる宛先情報を参照することで、このブロックリード命令の対象が自ノードであるか否かを判断すればよい。あるいは、各スレーブノードが、あらかじめいずれのリングバスからのブロックリード命令に反応するかを表す反応情報を記憶しておいてもよい。この場合、スレーブノードの周回命令実行部は、反応情報を参照することで、このブロックリード命令の対象が自ノードであるか否かを判断すればよい。いずれにしても、このようにリングバス毎にブロックリード命令に反応するスレーブノードを定めおく場合、各スレーブノードは、到着したブロックリード命令の対象が自ノードである場合に、読み出し処理を開始するとともに、該当するリングバス上の次のノードにそのブロックリード命令を送信すればよい。また、スレーブノードは、到着したブロックリード命令の対象が自ノードでない場合、ブロックリード命令を単に通過させればよい。すなわち、この場合、スレーブノードは、ブロックリード命令を受信すると、読み出し処理を開始することなく、受信したリングバス上の次のノードにそのブロックリード命令を送信すればよい。
また、上述した本発明の各実施の形態では、周回命令の内容は、全てのスレーブノードを対象とする命令である例を中心に説明した。これに限らず、周回命令の内容は、一部のスレーブノードを対象とする命令であってもよい。この場合、マスタノードが、周回命令に前述の宛先情報を含めておいてもよい。あるいは、この場合、各スレーブノードがあらかじめ前述の反応情報を記憶しておいてもよい。
例えば、本発明の第2、第4の実施の形態は、ノード内のすべてのノードではなく、一部のノードを同期させることも可能である。この場合、マスタノードは、同期命令および同期応答に、対象となるスレーブノードを表す宛先情報を含めればよい。各スレーブノードは、宛先情報に自ノードが含まれる場合は、各実施の形態で説明した同期処理の開始または同期応答を行い、宛先情報に自ノードが含まれない場合は、各命令をそのまま次のノードに送信すればよい。
また、上述した本発明の各実施の形態において、マスタノードおよびスレーブノードの双方の機能を有するノードがあるケースについて考える。このようなノードにおいて、マスタノード部分がリングバスに接続され、スレーブノード部分がリングバスに接続されていないとする。この場合、マスタノード部分は、リングバスに接続された他の各スレーブノードに、各実施の形態において説明したように周回命令を実行させる。そして、マスタノード部分は、別途、リングバスに接続されていないスレーブノード部分との間で、周回命令と同等の内容を送受信すればよい。なお、このようなノードにおいて、マスタノード部分およびスレーブノード部分の双方がリングバスに接続されていれば、各実施の形態はそのまま適用可能である。
また、上述した本発明の各実施の形態において、リングバス上に複数のマスタノードが存在するケースについて考える。この場合、各マスタノードは、発行した周回命令に、命令発行ノードを識別する命令発行IDを含めてもよい。そして、この場合、各マスタノードは、受信した周回命令に含まれる命令発行IDが自ノードであれば、各実施の形態で説明したマスタノードとして機能する。また、各マスタノードは、受信した周回命令に含まれる命令発行IDが自ノードでなければ、受信した周回命令をそのまま次のノードに送信すればよい。
また、上述した本発明の各実施の形態において、周回命令の対象となる複数の要素が存在するケースについて考える。この場合、マスタノードは、周回命令に、対象要素を表す対象要素IDを含めてもよい。そして、各スレーブノードは、周回命令に応じた処理を、対象要素に対して実行すればよい。
例えば、本発明の第2、第4の実施の形態において、特定のメモリ領域に対するアクセスについて同期処理を実行するケースを考える。この場合、マスタノードは、同期命令および同期応答に、対象要素IDとしてメモリ領域を特定する情報を含める。ここでは、メモリ領域を特定する情報を、メモリ領域Aと記載する。そして、各スレーブノードは、対象要素IDとしてメモリ領域Aを含む同期命令を受信すると、この同期命令を次のノードに送信するとともに、メモリ領域Aに対するアクセス命令の完了の確認を開始する。また、各スレーブノードは、対象要素IDとしてメモリ領域Aを含む同期応答を受信すると、メモリ領域Aに対するアクセス命令の完了を確認次第、この同期応答を次のノードに送信すればよい。
また、このように周回命令に対象要素IDを含める場合、上述した本発明の各実施の形態は、複数の要素に対する周回命令を並行して実行することも可能である。例えば、メモリ領域Aに対するアクセスの同期処理と、メモリ領域Bに対するアクセスの同期処理とを並行して実行したいとする。この場合、マスタノードは、対象要素IDとしてメモリ領域Aを含む同期命令および同期応答を発行し周回させる。また、マスタノードは、対象要素IDとしてメモリ領域Bを含む同期命令および同期応答を発行し周回させる。各スレーブノードは、対象要素IDとしてメモリ領域Aを含む同期命令および同期応答を受信した際には、上述したように動作する。また、各スレーブノードは、対象要素IDとしてメモリ領域Bを含む同期命令を受信すると、この同期命令を次のノードに送信するとともに、メモリ領域Bに対するアクセス命令の完了の確認を開始する。また、各スレーブノードは、対象要素IDとしてメモリ領域Bを含む同期応答を受信すると、メモリ領域Bに対するアクセス命令の完了を確認次第、この同期応答を次のノードに送信すればよい。なお、この場合、各スレーブノードにおける同期確認部は、複数の対象要素の同期処理の完了の確認を並列して行うことが望ましい。また、この場合、同期確認レジスタおよび同期命令到着レジスタは、複数の対象要素IDについての情報を独立して保存できるものとする。また、この場合、同期応答バッファは、複数の対象要素IDを含む同期応答を独立して保存できるものとする。
また、本発明の各実施の形態において、リングバス転送システムは、例えば、リングバスで接続された複数のユニットを搭載するCPU(Central Processing Unit)であってもよい。ユニットとは、例えば、CPUに搭載される複数のCPUコアによりそれぞれ用いられるキャッシュメモリであってもよい。この場合、マスタノードとしては、リングバス上のバスコントローラが適用される。また、ノードとしては、各キャッシュメモリが適用される。
また、本発明の各実施の形態において、マスタノードは、いずれかのスレーブノード上に実現されてもよい。また、全てのノードまたは複数のノード上にマスタノードがそれぞれ実現され、状況に応じて、いずれかのノードがマスタノードとして機能してもよい。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
リングバスに接続された複数のノードを含むリングバス転送システムであって、
前記ノードのうちマスタノードは、
他の前記各ノード(スレーブノード)に実行させる命令を表す周回命令を発行するとともに、リングバスを周回した前記周回命令に対応する処理を実行する周回命令発行処理部と、
前記周回命令発行処理部によって発行された前記周回命令を前記リングバス上の次のノードに送信するとともに、前記リングバス上を周回した前記周回命令を前記リングバス上の前のノードから受信するリングバス送受信部と、
を有し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信し、受信した前記周回命令の内容に応じたタイミングで、前記周回命令を前記リングバス上の次のノードに送信するリングバス送受信制御部と、
前記リングバス送受信制御部によって受信された周回命令の表す処理を実行する周回命令実行部と、
を有するリングバス転送システム。
(付記2)
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令の内容に応じて、前記周回命令の受信を契機とするタイミングまたは前記周回命令の表す処理の完了を契機とするタイミングで、前記周回命令を前記次のノードに送信することを特徴とする付記1に記載のリングバス転送システム。
(付記3)
前記マスタノードの周回命令発行処理部は、前記各スレーブノードに同期処理を実行させる同期命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期命令であるとき、前記同期命令の受信を契機とするタイミングで前記同期命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記リングバス送受信制御部によって前記同期命令が受信されると、前記同期処理を開始することを特徴とする付記1または付記2に記載のリングバス転送システム。
(付記4)
前記マスタノードの周回命令発行処理部は、前記同期命令を発行後、前記同期処理の完了を確認する同期応答を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期応答であるとき、前記周回命令実行部による前記同期処理の完了を契機とするタイミングで、前記同期応答を前記次のノードに送信することを特徴とする付記3に記載のリングバス転送システム。
(付記5)
前記マスタノードの周回命令発行処理部は、前記各スレーブノードが有するメモリに分散格納されるブロックに対する読み出し処理を表すブロックリード命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記ブロックリード命令であるとき、前記ブロックリード命令の受信を契機とするタイミングで前記ブロックリード命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記ブロックリード命令の内容に基づいて自ノードのメモリにおける読み出し開始アドレスを算出し、算出した読み出し開始アドレスからデータを読み出し、
前記各スレーブノードのリングバス送受信制御部は、読み出されたデータを前記リングバスを介して前記マスタノードに送信し、
前記マスタノードの周回命令発行処理部は、前記各スレーブノードから送信された前記ブロックリード命令に対応するデータが前記リングバス送受信部によって受信されると、受信された各データに基づいて、読み出し可能なブロックデータを生成することを特徴とする付記1から付記4のいずれか1つに記載のリングバス転送システム。
(付記6)
前記各ノードが複数のリングバスに接続されるとき、
前記マスタノードの周回命令発行処理部は、前記周回命令として、前記各リングバスに流すための略同一内容の周回命令を発行し、
前記各スレーブノードの周回命令実行部は、前記周回命令の内容に応じて、前記複数のリングバスから略同一内容の前記周回命令が全て到着後、または、前記複数のリングバスのいずれかから前記周回命令が到着後、または、前記周回命令の対象が自ノードであると判定した場合に、前記周回命令の表す処理を実行することを特徴とする付記1から付記5のいずれか1つに記載のリングバス転送システム。
(付記7)
前記マスタノードの周回命令発行処理部は、前記周回命令に、処理対象となる要素を指定する情報を含めて発行し、
前記各スレーブノードの周回命令実行部は、前記周回命令の表す処理を、前記処理対象の要素に関して実行することを特徴とする付記1から付記6のいずれか1つに記載のリングバス転送システム。
(付記8)
付記1から付記7のいずれか1つに記載のリングバス転送システムに含まれるマスタノード。
(付記9)
付記1から付記7のいずれか1つに記載のリングバス転送システムに含まれるスレーブノード。
(付記10)
リングバスに接続された複数のノードのうちマスタノードは、
他の前記各ノード(スレーブノード)に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信すると、
前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信し、
前記マスタノードは、
前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行するリングバス転送方法。
(付記11)
リングバスに接続された複数のノードのうちマスタノードが、
他の前記各ノード(スレーブノード)に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、
前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行する方法。
(付記12)
リングバスに接続された複数のノードのうち付記11に記載の方法を実行するマスタノード以外の他のスレーブノードが、
前記リングバス上の前のノードから前記周回命令を受信すると、
前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信する方法。