(57)【特許請求の範囲】
【請求項１】
リングバスに接続された複数のノードを含むリングバス転送システムであって、
前記ノードのうちマスタノードは、
他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行するとともに、リングバスを周回した前記周回命令に対応する処理を実行する周回命令発行処理部と、
前記周回命令発行処理部によって発行された前記周回命令を前記リングバス上の次のノードに送信するとともに、前記リングバス上を周回した前記周回命令を前記リングバス上の前のノードから受信するリングバス送受信部と、
を有し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信し、受信した前記周回命令の内容に応じたタイミングで、前記周回命令を前記リングバス上の次のノードに送信するリングバス送受信制御部と、
前記リングバス送受信制御部によって受信された周回命令の表す処理を実行する周回命令実行部と、
を有し、
前記各ノードが複数のリングバスに接続されるとき、
前記マスタノードの周回命令発行処理部は、前記周回命令として、前記各リングバスに流すための略同一内容の周回命令を発行し、
前記各スレーブノードの周回命令実行部は、前記周回命令の内容に応じて、前記複数のリングバスから略同一内容の前記周回命令が全て到着後、または、前記複数のリングバスのいずれかから前記周回命令が到着後、または、前記周回命令の対象が自ノードであると判定した場合に、前記周回命令の表す処理を実行するリングバス転送システム。
【請求項２】
前記マスタノードの周回命令発行処理部は、前記各スレーブノードに同期処理を実行させる同期命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期命令であるとき、前記同期命令の受信を契機とするタイミングで前記同期命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記リングバス送受信制御部によって前記同期命令が受信されると、前記同期処理を開始することを特徴とする請求項１に記載のリングバス転送システム。
【請求項３】
前記マスタノードの周回命令発行処理部は、前記同期命令を発行後、前記同期処理の完了を確認する同期応答を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期応答であるとき、前記周回命令実行部による前記同期処理の完了を契機とするタイミングで、前記同期応答を前記次のノードに送信することを特徴とする請求項２に記載のリングバス転送システム。
【請求項４】
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令の内容に応じて、前記周回命令の受信を契機とするタイミングまたは前記周回命令の表す処理の完了を契機とするタイミングで、前記周回命令を前記次のノードに送信することを特徴とする請求項１から請求項３のいずれか１項に記載のリングバス転送システム。
【請求項５】
前記マスタノードの周回命令発行処理部は、前記各スレーブノードが有するメモリに分散格納されるブロックに対する読み出し処理を表すブロックリード命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記ブロックリード命令であるとき、前記ブロックリード命令の受信を契機とするタイミングで前記ブロックリード命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記ブロックリード命令の内容に基づいて自ノードのメモリにおける読み出し開始アドレスを算出し、算出した読み出し開始アドレスからデータを読み出し、
前記各スレーブノードのリングバス送受信制御部は、読み出されたデータを前記リングバスを介して前記マスタノードに送信し、
前記マスタノードの周回命令発行処理部は、前記各スレーブノードから送信された前記ブロックリード命令に対応するデータが前記リングバス送受信部によって受信されると、受信された各データに基づいて、読み出し可能なブロックデータを生成することを特徴とする請求項１から請求項４のいずれか１項に記載のリングバス転送システム。
【請求項６】
前記マスタノードの周回命令発行処理部は、前記周回命令に、処理対象となるスレーブノードを指定する情報を含めて発行し、
前記各スレーブノードの周回命令実行部は、前記処理対象が自ノードであるとき、前記周回命令の表す処理を実行することを特徴とする請求項１から請求項５のいずれか１項に記載のリングバス転送システム。
【請求項７】
請求項１から請求項６のいずれか１項に記載のリングバス転送システムに含まれるマスタノード。
【請求項８】
請求項１から請求項６のいずれか１項に記載のリングバス転送システムに含まれるスレーブノード。
【請求項９】
リングバスに接続された複数のノードのうちマスタノードは、
他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信すると、
前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信し、
前記マスタノードは、
前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行し、
前記各ノードが複数のリングバスに接続されるとき、
前記マスタノードは、前記周回命令として、前記各リングバスに流すための略同一内容の周回命令を発行し、
前記各スレーブノードは、前記周回命令の内容に応じて、前記複数のリングバスから略同一内容の前記周回命令が全て到着後、または、前記複数のリングバスのいずれかから前記周回命令が到着後、または、前記周回命令の対象が自ノードであると判定した場合に、前記周回命令の表す処理を実行するリングバス転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リングバス転送システムにおけるリングバス上のデータ転送技術に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）に搭載されるユニットの数が増加している。このため、ＣＰＵ内の各ユニットの接続に、リングバスを利用するケースが増加している。リングバスは、実装や拡張が容易であるという利点を持つ。一方で、リングバスは、バス上にある各ユニット（以降、ノードとも記載する）のノード間通信が一つの通信路上に重畳されることから、各ノード間を接続する通信路上の通信量が増加しやすいという欠点を持つ。この欠点は、リングバス上である特定のノードから他の多数のノードに対して通信を行う場合に特に顕著である。したがって、このようなケースでは、命令数を削減しリングバス通信路の利用効率を高める手法が求められている。
【０００３】
このようなリングバス通信路の利用効率に関連する技術の一例が、特許文献１に記載されている。この関連技術は、１つの状態検査パケットにより、全てのノードの状態を確認する。具体的には、この関連技術では、リングバス上のマスタノードが、状態検査パケットを次のスレーブノードに送信する。状態検査パケットを受信したスレーブノードは、自ノードが、状態検査パケットで指定された検査対象に属している場合、状態検査パケットの状態データフィールドに自ノードの状態を表す情報を含めて、次のスレーブノードに送信する。このようにして、状態検査パケットは、リングバス上の各スレーブノードに順次転送され、マスタノードに戻される。マスタノードは、戻された状態検査パケットの状態ビットフィールドを調べることにより、全スレーブノードの状態を確認することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−４４４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された関連技術には、以下の課題がある。
【０００６】
この関連技術は、１つの状態検査パケットで、全てのノードの状態を確認する。しかしながら、この関連技術を用いて、全てのノードが所望の状態になったことを確認したい場合について考える。この場合、マスタノードは、全てのノードが所望の状態であることを示す状態検査パケットが戻されるまで、状態検査パケットを連続して送出する必要がある。したがって、この関連技術は、リングバス上の全てのノードが所望の状態になったことを確認する場合、状態検査パケットでリングバスを占有してしまう。その結果、他のデータの転送が妨げられ、各ノード間の転送性能が低下してしまう。さらに、所望の状態を高速に検出するためには、状態検査パケットの送付回数を増加させることになり、リングバスが状態検査パケットで飽和してしまう。その結果、リングバスの転送効率がますます低下する。
【０００７】
このように、この関連技術は、リングバス上であるノードから多数のノードに対して通信が行われる際に、転送効率を十分に向上できないケースがある。
【０００８】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、リングバス上のあるノードから多数のノードに対して行われる通信の転送効率を、より向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のリングバス転送システムは、リングバスに接続された複数のノードを含むリングバス転送システムであって、前記ノードのうちマスタノードは、他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行するとともに、リングバスを周回した前記周回命令に対応する処理を実行する周回命令発行処理部と、前記周回命令発行処理部によって発行された前記周回命令を前記リングバス上の次のノードに送信するとともに、前記リングバス上を周回した前記周回命令を前記リングバス上の前のノードから受信するリングバス送受信部と、を有し、前記各スレーブノードは、前記リングバス上の前のノードから前記周回命令を受信し、受信した前記周回命令の内容に応じたタイミングで、前記周回命令を前記リングバス上の次のノードに送信するリングバス送受信制御部と、前記リングバス送受信制御部によって受信された周回命令の表す処理を実行する周回命令実行部と、を有する。
【００１０】
また、本発明のマスタノードは、上述のリングバス転送システムに含まれる。
【００１１】
また、本発明のスレーブノードは、上述のリングバス転送システムに含まれる。
【００１２】
また、本発明のリングバス転送方法は、リングバスに接続された複数のノードのうちマスタノードは、他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、前記各スレーブノードは、前記リングバス上の前のノードから前記周回命令を受信すると、前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信し、前記マスタノードは、前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行する。
【発明の効果】
【００１３】
本発明は、リングバス上のあるノードから多数のノードに対して行われる通信の転送効率を、より向上させる技術を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第1の実施の形態としてのリングバス転送システムの構成を示すブロック図である。
【図２】本発明の第1の実施の形態におけるマスタノードの機能ブロック構成図である。
【図３】本発明の第1の実施の形態におけるスレーブノードの機能ブロック構成図である。
【図４】本発明の第1の実施の形態としてのリングバス転送システムの動作を説明するフローチャートである。
【図５】本発明の第２の実施の形態としてのリングバス転送システムの構成を示すブロック図である。
【図６】本発明の第２の実施の形態におけるマスタノードの機能ブロック構成図である。
【図７】本発明の第２の実施の形態におけるスレーブノードの機能ブロック構成図である。
【図８】本発明の第２の実施の形態としてのリングバス転送システムの同期命令および同期応答の転送動作を説明するフローチャートである。
【図９】本発明の第２の実施の形態におけるスレーブノードの同期命令受信時の動作を説明するフローチャートである。
【図１０】本発明の第２の実施の形態におけるスレーブノードの同期応答受信時の動作を説明するフローチャートである。
【図１１】本発明の第３の実施の形態としてのリングバス転送システムの構成を示すブロック図である。
【図１２】本発明の第３の実施の形態におけるマスタノードの機能ブロック構成図である。
【図１３】本発明の第３の実施の形態におけるスレーブノードの機能ブロック構成図である。
【図１４】本発明の第３の実施の形態としてのリングバス転送システムのブロックリード命令転送動作を説明するフローチャートである。
【図１５】本発明の第３の実施の形態におけるスレーブノードのブロックリード命令受信時の動作を説明するフローチャートである。
【図１６】本発明の第４の実施の形態としてのリングバス転送システムの構成を示すブロック図である。
【図１７】本発明の第４の実施の形態におけるマスタノードの機能ブロック構成図である。
【図１８】本発明の第４の実施の形態におけるスレーブノードの機能ブロック構成図である。
【図１９】本発明の第４の実施の形態としてのリングバス転送システムの同期命令転送動作を説明するフローチャートである。
【図２０】本発明の第４の実施の形態におけるスレーブノードの同期命令受信時の動作を説明するフローチャートである。
【図２１】本発明の第４の実施の形態としてのリングバス転送システムの同期応答転送動作を説明するフローチャートである。
【図２２】本発明の第４の実施の形態としてのリングバス転送システムのブロックリード命令転送動作を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１６】
（第１の実施の形態）
本発明の第１の実施の形態としてのリングバス転送システム１の構成を図１に示す。図１において、リングバス転送システム１は、複数のノードとして、マスタノード１０およびｎ個のスレーブノード２０（２０＿１、２０＿２、・・・、２０＿ｎ）を備える。なお、ｎは1以上の整数である。これらのノードは、リングバス９０上に環状に接続されている。また、リングバス９０は、通信方向が一方向に定められているものとする。本実施の形態では、マスタノード１０、スレーブノード２０＿１、２０＿２、・・・２０＿ｎ、マスタノード１０・・・の順に情報が送信されるものとする。以降、リングバス９０上において、あるノードにとって情報を送信する方向にあるノードを、そのノードがマスタノード１０であるかスレーブノード２０であるかに関わらず、「次のノード」とも記載する。同様に、リングバス９０上において、あるノードにとって情報を受信する方向にあるノードを、そのノードがマスタノード１０であるかスレーブノード２０であるかに関わらず、「前のノード」とも記載する。
【００１７】
マスタノード１０の機能ブロック構成を図２に示す。図２において、マスタノード１０は、周回命令発行処理部１１と、リングバス送受信部１２とを含む。
【００１８】
周回命令発行処理部１１は、周回命令を発行する。周回命令とは、各ノードに２０に実行させる命令を表すものとする。周回命令発行処理部１１により発行される周回命令は、その内容に応じて、各スレーブノード２０において次のノードに送信されるタイミングが定められる。例えば、周回命令は、その種類によって、次のノードへの送信タイミングがあらかじめ定められていてもよい。あるいは、例えば、周回命令は、次のノードへの送信タイミングを示す情報を含んでいてもよい。
【００１９】
また、次のノードへの送信タイミングとは、例えば、その周回命令の受信を契機とするタイミングであってもよい。また、次のノードへの送信タイミングとは、例えば、その周回命令の表す処理の完了を契機とするタイミングであってもよい。
【００２０】
また、周回命令発行処理部１１は、リングバス９０を周回した周回命令に対応する処理を実行する。リングバス９０を周回した周回命令は、後述のリングバス送受信部１２によって前のノードから受信される。
【００２１】
リングバス送受信部１２は、リングバス９０上を流れる情報を送受信する。具体的には、リングバス送受信部１２は、周回命令発行処理部１１によって発行された周回命令をリングバス９０上の次のノードに送信する。また、リングバス送受信部１２は、リングバス９０上を周回した周回命令を、前のノードから受信する。
【００２２】
次に、スレーブノード２０の機能ブロック構成を図３に示す。図３において、スレーブノード２０は、リングバス送受信制御部２１と、周回命令実行部２２とを含む。
【００２３】
リングバス送受信制御部２１は、リングバス９０上を流れる情報を送受信する。具体的には、リングバス送受信制御部２１は、リングバス９０上を流れる周回命令を前のノードから受信する。また、リングバス送受信制御部２１は、受信した周回命令の内容に応じたタイミングで、その周回命令をリングバス９０上の次のノードに送信する。
【００２４】
例えば、リングバス送受信制御部２１は、周回命令の内容に応じて、その周回命令の受信を契機とするタイミング、または、その周回命令の表す処理の完了を契機とするタイミングで、その周回命令を次のノードに送信してもよい。
【００２５】
周回命令実行部２２は、リングバス送受信制御部２１によって受信された周回命令の表す処理を実行する。
【００２６】
以上のように構成されたリングバス転送システム１のリングバス転送動作について、図４を参照して説明する。なお、図４において、左図はマスタノード１０の動作を示し、右図はスレーブノード２０＿ｉ（ｉ＝１〜ｎ）の動作を示す。
【００２７】
まず、マスタノード１０において、周回命令発行処理部１１は、周回命令を発行する。そして、リングバス送受信部１２は、発行された周回命令を、次のノードであるスレーブノード２０＿１に送信する（ステップＳ１）。
【００２８】
次に、スレーブノード２０＿ｉにおいて、リングバス送受信制御部２１は、前のノードから周回命令を受信する（ステップＳ２）。
【００２９】
次に、リングバス送受信制御部２１は、この周回命令を周回命令実行部２２に通知するとともに、この周回命令の送信タイミングを、その内容に基づいて判断する。周回命令を通知された周回命令実行部２２は、通知された周回命令の表す処理の実行を開始する（ステップＳ３）。
【００３０】
ここで、この周回命令が、その受信を契機とするタイミングで次のノードに送信されるよう定められている場合について説明する（ステップＳ４で「受信後」）。
【００３１】
この場合、リングバス送受信制御部２１は、この周回命令を次のノードであるスレーブノード２０＿ｉ＋１に送信する（ステップＳ６）。ただし、スレーブノード２０＿ｎの場合、このステップにおける周回命令の送付先は、次のノードであるマスタノード１０となる。
【００３２】
一方、この周回命令が、処理の完了を契機とするタイミングで次のノードに送信されるよう定められている場合について説明する（ステップＳ４で「完了後」）。
【００３３】
この場合、リングバス送受信制御部２１は、ステップＳ３で開始された処理が完了するまで待機する。そして、処理が完了すると（ステップＳ５でＹｅｓ）、リングバス送受信制御部２１は、この周回命令を次のノードであるスレーブノード２０＿ｉ＋１に送信する（ステップＳ６）。ただし、スレーブノード２０＿ｎの場合、このステップにおける周回命令の送付先は、次のノードであるマスタノード１０となる。
【００３４】
このようにして、スレーブノード２０＿ｉ（ｉ＝１〜ｎ）は、順次、ステップＳ２〜Ｓ６を実行する。
【００３５】
次に、マスタノード１０において、リングバス送受信部１２は、前のノードであるスレーブノード２０＿ｎから周回命令を受信する。そして、周回命令発行処理部１１は、リングバス送受信部１２によって受信された周回命令に対応する処理を実行する（ステップＳ７）。
【００３６】
以上で、リングバス転送システム１は、リングバス転送動作を終了する。
【００３７】
次に、本発明の第１の実施の形態の効果について述べる。
【００３８】
本発明の第１の実施の形態としてのリングバス転送システムは、リングバス上のあるノードから多数の他のノードに対して行われる通信の転送効率を、より向上させることができる。
【００３９】
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が、各スレーブノードに実行させる命令を表す周回命令を発行し、リングバス送受信部が、発行された周回命令をリングバス上の次のノードに送信するからである。そして、この周回命令は、次のスレーブノードのリングバス送受信制御部によって受信される。すると、このスレーブノードの周回命令実行部が、周回命令の表す処理を実行するとともに、リングバス送受信制御が、周回命令の内容に応じたタイミングで、この周回命令をリングバス上の次のノードに送信するからである。このようにして、リングバス上のスレーブノードを順次転送された周回命令は、マスタノードのリングバス送受信部によって受信される。すると、周回命令発行処理部が、戻された周回命令に対応する処理を実行するからである。
【００４０】
このように、本実施の形態は、リングバス上の多数のノードに対して処理を行う命令を1つに集約することができる。その結果、本実施の形態は、リングバス上の命令数を削減することができ、リングバスの転送効率を向上させることができる。
【００４１】
具体的には、本実施の形態では、リングバス上のマスタノードは、他の多数のスレーブノードに対して処理の実行を開始させたい場合に、１つの周回命令をリングバス上に周回させればよい。具体的には、マスタノードは、その受信を契機とするタイミングで次のスレーブノードに送信されるよう定められた内容の１つの周回命令を、リングバス上に送信すればよい。
【００４２】
また、本実施の形態は、リングバス上のマスタノードが、他の多数のスレーブノードに実行させた処理が完了した状態を確認したい場合に、１つの周回命令をリングバス上に周回させればよい。具体的には、この場合、マスタノードは、処理の完了を契機とするタイミングで次のスレーブノードに送信されるよう定められた内容の１つの周回命令を、リングバス上に送信すればよい。
【００４３】
なお、本実施の形態において、スレーブノードにおける周回命令の送信タイミングが、その受信を契機とするタイミング、または、周回命令の表す処理の完了を契機とするタイミングである例について説明した。これに限らず、スレーブノードにおける周回命令の送信タイミングは、その内容に応じて他のタイミングが定められていてもよい。
【００４４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００４５】
本実施の形態では、本発明における周回命令として、同期命令および同期応答を適用するケースについて説明する。
【００４６】
ここで、同期について説明する。同期とは、リングバス上の全ノードにおける、それぞれのバッファ内にある全ての処理の実行完了を確認する処理である。リングバス上での一般的な同期方式では、マスタノードが、１つの同期命令を他の全てのノードに対して送信する。各ノードは、同期命令を受信すると、バッファ内の全処理の実行完了を確認次第、同期応答をマスタノードに返信する。マスタノードは、全ノードからそれぞれ同期応答が返信されると、同期の完了を確認できる。しかしながら、この同期方式では、リングバス全体で返信される同期応答の数がノード数と同数になる。そのため、リングバスを通過する命令数が増加してしまう。本実施の形態では、リングバス上での同期において命令数を削減する例を示す。
【００４７】
まず、本発明の第２の実施の形態としてのリングバス転送システム２の構成を図５に示す。図５において、リングバス転送システム２は、マスタノード３０およびｎ個のスレーブノード４０（４０＿１、４０＿２、・・・、４０＿ｎ）を備える。なお、ｎは1以上の整数である。これらのノードは、リングバス９０上に環状に接続されている。
【００４８】
マスタノード３０の機能ブロック構成を図６に示す。
【００４９】
図６において、マスタノード３０は、本発明の第１の実施の形態としてのマスタノード１０に対して、周回命令発行処理部１１に替えて周回命令発行処理部３１を備える点が異なる。
【００５０】
周回命令発行処理部３１は、周回命令として同期命令を発行する。同期命令とは、各スレーブノード４０において同期処理の開始を指示する命令である。また、同期処理とは、各スレーブノード４０においてバッファ（図示せず）内に存在する処理を全て完了したことを確認する処理である。同期命令は、同期命令であることを表す命令列からなり、追加のペイロードを含んでいなくてもよい。同期命令は、各スレーブノード４０において受信を契機とするタイミングで次のノードに送信されるよう定められる。
【００５１】
また、周回命令発行処理部３１は、同期命令を発行後、周回命令として同期応答を発行する。同期応答とは、各スレーブノード４０において同期処理が完了したことを確認する命令である。同期応答は、各スレーブノード４０における同期処理の完了を契機とするタイミングで次のスレーブノード４０に送信されるよう定められる。
【００５２】
また、周回命令発行処理部３１は、リングバス９０上を周回した同期命令の受信により、同期命令が各スレーブノード４０を通過したことを認識できる。つまり、周回命令発行処理部３１は、周回済みの同期命令の受信により、全てのスレーブノード４０が同期処理を開始したことを確認できる。そして、周回命令発行処理部３１は、受信した周回済みの同期命令を破棄してもよい。
【００５３】
また、周回命令発行処理部３１は、リングバス９０上を周回した同期応答の受信により、同期応答が各スレーブノード４０を通過したことを認識できる。つまり、周回命令発行処理部３１は、周回済みの同期応答の受信により、全てのスレーブノード４０において同期処理が完了したことを確認できる。
【００５４】
次に、スレーブノード４０の機能ブロック構成を図７に示す。
【００５５】
図７において、スレーブノード４０は、本発明の第１の実施の形態としてのスレーブノード２０に対して、リングバス送受信制御部２１に替えてリングバス送受信制御部４１と、周回命令実行部２２に替えて周回命令実行部４２とを備える。さらに、スレーブノード４０は、同期確認部４３と、同期確認レジスタ４４と、同期応答バッファ４５とを備える。なお、同期確認部４３、同期確認レジスタ４４、および同期応答バッファ４５は、それぞれ本発明の周回命令実行部の一部の一実施形態を構成する。
【００５６】
リングバス送受信制御部４１は、受信した周回命令が同期命令であるとき、その受信を契機とするタイミングでその同期命令を次のノードに送信する。また、リングバス送受信制御部４１は、受信した同期命令を、後述の周回命令実行部４２に通知する。
【００５７】
また、リングバス送受信制御部４１は、受信した周回命令が同期応答であるとき、先行して受信された同期命令による同期処理の完了を契機とするタイミングで、その同期応答を次のノードに送信する。具体的には、リングバス送受信制御部４１は、受信した同期応答を、後述の周回命令実行部４２に通知する。そして、リングバス送受信制御部４１は、周回命令実行部４２から同期処理の完了を通知されると、同期応答を次のノードに送信する。
【００５８】
周回命令実行部４２は、リングバス送受信制御部４１によって同期命令が受信されると、同期処理を開始する。具体的には、周回命令実行部４２は、同期確認部４３を用いて、同期処理を開始する。
【００５９】
同期確認部４３は、周回命令実行部４２からの通知により、同期処理を行う。前述のように、同期処理とは、自ノードのバッファ（図示せず）内に溜まっていた全ての命令の処理が完了したか否かを確認する処理である。つまり、同期確認部４３は、自ノードのバッファ内に命令が存在しなくなるまで、確認処理を繰り返せばよい。以降、自ノードのバッファ内に命令が存在しなくなることを、同期処理の完了というものとする。同期確認部４３は、同期処理の完了を確認すると、同期処理の完了を周回命令実行部４２に通知する。
【００６０】
同期確認レジスタ４４は、自ノードが、同期処理が完了した状態にあるかどうかを保存するレジスタである。例えば、同期確認レジスタ４４は、同期処理が完了した状態にある場合、あらかじめ定められた値の同期完了ステータスを保存するようにしてもよい。
【００６１】
同期応答バッファ４５は、受信された同期応答を保存するバッファである。
【００６２】
また、周回命令実行部４２は、同期確認部４３から同期処理の完了を通知されると、同期確認レジスタ４４に、同期完了ステータスを保存する。ただし、同期確認部４３から同期処理の完了を通知された時点で、既にリングバス送受信制御部４１により同期応答が受信済みである場合、周回命令実行部４２は、同期確認レジスタ４４に同期完了ステータスを保存しなくてもよい。この場合、周回命令実行部４２は、後述の同期応答バッファ４５に保存されている同期応答を次のノードに送信するよう、リングバス送受信制御部４１に通知する。
【００６３】
また、周回命令実行部４２は、リングバス送受信制御部４１から同期応答を通知されると、その同期応答を同期応答バッファ４５に保存する。ただし、同期応答が通知された時点で、既に同期確認レジスタ４４に同期完了ステータスが保存されている場合、周回命令実行部４２は、同期応答バッファ４５に同期応答を保存しなくてもよい。この場合、周回命令実行部４２は、受信した同期応答を次のノードに送信するよう、リングバス送受信制御部４１に通知する。そして、周回命令実行部４２は、同期確認レジスタ４４の同期完了ステータスをクリアすればよい。
【００６４】
以上のように構成されたリングバス転送システム２の動作について、図面を参照して説明する。
【００６５】
まず、リングバス転送システム２における同期命令および同期応答の転送動作の概略を図８に示す。
【００６６】
図８では、まず、マスタノード３０は、同期命令を発行し、スレーブノード４０＿１に送信する（ステップＳ２０１）。
【００６７】
具体的には、周回命令発行処理部３１が、同期命令を発行する。そして、リングバス送受信部１２が、発行された同期命令を、スレーブノード４０＿１に送信する。
【００６８】
次に、同期命令を受信したスレーブノード４０＿１は、スレーブノード４０＿２へ、同期命令を送信するとともに、同期処理を開始する（ステップＳ２０２＿１）。
【００６９】
以降、同期命令を受信したスレーブノード４０＿ｉは、スレーブノード４０＿ｉ＋１へ、同期命令を送信するとともに、同期処理を開始する（ステップＳ２０２＿ｉ）。
【００７０】
このようにして、同期命令は、スレーブノード４０＿１〜４０＿ｎまで順次転送される。そして、同期命令を受信したスレーブノード４０＿ｎは、次のノードであるマスタノード３０へ、同期命令を送信するとともに、同期処理を開始する（ステップＳ２０２＿ｎ）。ステップＳ２０２＿ｉの詳細については後述する。
【００７１】
次に、スレーブノード４０＿ｎから同期命令を受信したマスタノード３０は、同期命令がリングバス９０上の全てのスレーブノード４０を通過したこと認識し、同期命令を破棄する（ステップＳ２０３）。
【００７２】
具体的には、リングバス送受信部１２が、同期命令を受信する。そして、周回命令発行処理部３１が、同期命令の全ノード通過を確認し、同期命令を破棄する。
【００７３】
また、マスタノード３０は、同期応答を発行し、スレーブノード４０＿１に送信する（ステップＳ２１１）。このステップは、ステップＳ２０１の実行後、任意のタイミングで実行される。
【００７４】
具体的には、周回命令発行処理部３１が、同期応答を発行する。そして、リングバス送受信部１２が、発行された同期応答を、スレーブノード４０＿１に送信する。
【００７５】
次に、同期応答を受信したスレーブノード４０＿１は、ステップＳ２０２＿１で開始した同期処理の完了を確認後、スレーブノード４０＿２へ、同期応答を送信する（ステップＳ２１２＿１）。
【００７６】
以降、同期応答を受信したスレーブノード４０＿ｉは、ステップＳ２０２＿ｉで開始した同期処理の完了を確認後、スレーブノード４０＿ｉ＋１へ、同期応答を送信する（ステップＳ２１２＿ｉ）。
【００７７】
このようにして、同期応答は、スレーブノード４０＿１〜４０＿ｎまで順次転送される。そして、同期応答を受信したスレーブノード４０＿ｎは、ステップＳ２０２＿ｎで開始した同期処理の完了を確認後、次のノードであるマスタノード３０へ、同期応答を送信する（ステップＳ２１２＿ｎ）。ステップＳ２１２＿ｉの詳細については後述する。
【００７８】
次に、スレーブノード４０＿ｎから同期応答を受信したマスタノード３０は、同期応答がリングバス９０上の全スレーブノード４０の同期を確認したと判断し、同期完了を確認する（ステップＳ２１３）。
【００７９】
具体的には、リングバス送受信部１２が、同期応答を受信する。そして、周回命令発行処理部３１が、同期応答の全ノード通過により、リングバス９０上の全スレーブノード４０において同期処理が完了したことを確認する。
【００８０】
以上で、リングバス転送システム２における転送動作の概略の説明を終了する。なお、上記の説明において、ステップＳ２０１〜Ｓ２０３は、同期命令がリングバス９０を周回する動作である。また、ステップＳ２１１〜Ｓ２１３は、同期応答がリングバス９０を周回する動作である。なお、ステップＳ２１２＿ｉは、ステップＳ２０２＿ｉの終了後に実行される。
【００８１】
次に、ステップＳ２０２＿ｉにおけるスレーブノード４０＿ｉの同期命令受信時の動作の詳細を、図９に示す。
【００８２】
図９では、まず、リングバス送受信制御部４１は、前のノードから同期命令を受信する。そして、リングバス送受信制御部４１は、同期命令を周回命令実行部４２に通知するとともに、同期命令を次のノードに送信する（ステップＡ１）。
【００８３】
次に、同期命令を通知された周回命令実行部４２は、同期確認部４３を用いて同期処理を開始する（ステップＡ２）。
【００８４】
次に、周回命令実行部４２は、同期確認部４３から同期処理の完了が通知されるまで待機する。そして、同期処理の完了を通知されると（ステップＡ３でＹｅｓ）、周回命令実行部４２は、既に同期応答が到着しているか否かを判断する（ステップＡ４）。この判断処理は、同期応答バッファ４５に同期応答が保存されているか否かを確認することにより行われる。
【００８５】
ここで、同期応答がまだ到着していない場合（ステップＡ４でＮｏ）、周回命令実行部４２は、同期確認レジスタ４４に、同期完了ステータスを保存する（ステップＡ５）。
【００８６】
一方、同期応答が既に到着している場合（ステップＡ４でＹｅｓ）、スレーブノード４０＿ｉの動作は、後述の図１０におけるステップＢ３を実行する。
【００８７】
以上で、スレーブノード４０＿ｉは、ステップＳ２０２＿ｉの動作を終了する。
【００８８】
次に、ステップＳ２１２＿ｉにおけるスレーブノード４０＿ｉの同期応答受信時の動作の詳細を、図１０に示す。
【００８９】
図１０では、まず、リングバス送受信制御部４１は、前のノードから同期応答を受信する。そして、リングバス送受信制御部４１は、同期応答を周回命令実行部４２に通知する（ステップＢ１）。
【００９０】
次に、同期応答を通知された周回命令実行部４２は、同期処理の完了が既に確認されているか否かを判断する（ステップＢ２）。この判断処理は、同期確認レジスタ４４に同期完了ステータスが保存されているか否かを確認することにより行われる。
【００９１】
ここで、同期処理の完了が既に確認されている場合、周回命令実行部４２は、同期応答を次のノードに送信するよう、リングバス送受信制御部４１に通知する。そして、リングバス送受信制御部４１は、同期応答を次のノードに送信する。また、周回命令実行部４２は、同期確認レジスタ４４の同期完了ステータスをクリアする（ステップＢ３）。ただし、図９のステップＡ４でＹｅｓとなってこのステップを実行する場合、同期確認レジスタ４４に同期完了ステータスは保存されていないので、そのクリア処理は不要である。
【００９２】
一方、ステップＢ２で、同期処理の完了が未だ確認されていないと判断された場合、周回命令実行部４２は、同期応答を同期応答バッファ４５に保存する（ステップＢ４）。
【００９３】
次に、周回命令実行部４２は、同期確認部４３から同期処理の完了が通知されるまで待機する。そして、同期処理の完了を通知されると（ステップＢ５でＹｅｓ）、周回命令実行部４２は、同期応答バッファ４５に保存した同期応答を、次のノードに送信するよう、リングバス送受信制御部４１に通知する。そして、リングバス送受信制御部４１は、同期応答バッファ４５の同期応答を次のノードに送信する。そして、周回命令実行部４２は、同期応答バッファ４５をクリアする（ステップＢ６）。
【００９４】
以上で、スレーブノード４０＿ｉは、ステップＳ２１２＿ｉの動作を終了する。
【００９５】
なお、ステップＡ３またはステップＢ５において同期処理の完了を待機する間、スレーブノード４０＿ｉは、同期処理との関連がない他の動作を実行可能であるものとする。
【００９６】
次に、本発明の第２の実施の形態の効果について述べる。
【００９７】
本発明の第２の実施の形態としてのリングバス転送システムは、リングバス上で複数のノードの同期処理を行う際の転送効率を、より向上させることができる。
【００９８】
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が周回命令として同期命令を発行し、リングバス送受信部を介して次のノードに送信する。そして、この同期命令は、次のスレーブノードのリングバス送受信制御部によって受信される。同期命令は、各スレーブノードにおいてその受信を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、リングバス送受信制御部が、この同期命令を次のノードに送信するとともに、周回命令実行部が、同期処理を開始するからである。このようにして、同期命令は、リングバス上の各スレーブノードで同期処理を開始させながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、マスタノードの周回命令発行処理部が、同期命令の受信により、全てのスレーブノードにおいて同期処理が開始したことを認識するからである。
そして、本実施の形態では、マスタノードにおいて、周回命令発行処理部が、発行した同期命令によって開始された同期処理の完了を確認するため、同期応答を発行し、リングバス送受信部を介して次のスレーブノードに送信する。そして、この同期応答は、次のスレーブノードのリングバス送受信制御部によって受信される。同期応答は、各スレーブノードにおいて同期処理の完了を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、周回命令実行部が、先行して受信された同期命令による同期処理の完了を確認後、リングバス送受信制御部が、この同期命令を次のノードに送信するからである。このようにして、同期応答は、リングバス上の各スレーブノードでの同期完了を確認しながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、周回命令発行処理部が、同期応答の受信により、全てのスレーブノードにおいて同期処理が完了したことを確認できるからである。
【００９９】
ここで、前述の特許文献１に記載された関連技術を用いてリングバス上で同期を行うことを考える。この場合、この関連技術は、１つの状態検査パケットで、全てのノードにおける同期処理の完了状態を確認する。しかしながら、この関連技術を用いて同期を行う場合、少なくとも一部のノードにおいて同期が完了していない状態であることを示す状態検査パケットが戻されることもある。したがって、この場合、全てのノードにおいて同期が完了した状態を示す状態検査パケットが戻されるまで、マスタノードは、状態検査パケットを連続して送出しなければならない。したがって、この関連技術を用いてリングバス上の同期を行うと、状態検査パケットがリングバスを占有してしまう。さらに、同期の高速な検出のためには、状態検査パケットの送付回数を増加させることになり、リングバスが状態検査パケットで飽和してしまう。
【０１００】
これに対して、上述したように、本実施の形態では、１つの同期命令を周回させることにより、各スレーブノードが同期処理を開始する。そして、本実施の形態は、１つの同期応答を周回させると、各スレーブノードが、同期完了の確認まで同期応答の次ノードへの送付を遅延する。これにより、本実施の形態は、同期応答がマスタノードに戻ることにより、同期完了を確認する。したがって、本実施の形態では、リングバス上に１つの同期命令および１つの同期応答を周回させるだけで同期を行うことができ、転送効率を向上させる。なお、各スレーブノードは、同期応答の送付待ち合わせ中であっても、同期応答と無関係なデータを送受信することができる。したがって、１つに集約された同期応答の待ち合わせのために、リングバスの転送効率が低下することはない。
【０１０１】
なお、本実施の形態において、スレーブノードは、同期確認レジスタおよび同期応答バッファとして、通常のレジスタ、ステータスレジスタ、通信用バッファ等、自ノードが有する任意の記憶域を適用可能である。また、スレーブノードにおいて、周回命令実行部が同期応答を発行する機能を有する場合がある。この場合、周回命令実行部は、同期応答バッファに同期応答そのものを保存しなくてもよい。その代わり、周回命令実行部は、同期応答を退避中であるというステータス情報をレジスタ等に保存しておき、同期応答の送付タイミングで、同期応答を発行すればよい。
【０１０２】
また、本実施の形態において、同期処理とは、各スレーブノードにおいてバッファ内に存在する処理を全て完了したことを確認する処理であるとして説明した。ただし、同期処理において完了の確認をする処理の対象は、全ての処理である場合に限らない。例えば、同期処理の対象は、各スレーブノードのバッファ内における一部の処理であってもよい。具体例としては、同期処理の対象は、ある一部のメモリ領域に対する読み書き処理であってもよい。なお、その場合、リングバス転送システムは、同期処理を実行中においても、その同期処理との関連のない他の処理に関するデータをリングバス上で転送可能である。あるいは、同期処理は、各スレーブノードにおいて全動作の停止を確認する処理であってもよい。このような場合であっても、本実施の形態は、同様に動作して上述の効果を奏することができる。
【０１０３】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１０４】
本実施の形態では、本発明のスレーブノードとして、ブロック長ｍのインターリーブ化されたメモリを適用する例について説明する。また、本実施の形態では、本発明における周回命令として、インターリーブ化されたメモリに対するブロックリード命令を適用するケースについて説明する。
【０１０５】
ここで、ブロックリードについて説明する。ブロックリードとは、インターリーブ化されたメモリ（ノード）を対象としたブロック単位の読み込み処理をいう。リングバス上での一般的なブロックリード方式では、マスタノードが、読込対象のブロックが割り当てられた各メモリの読み出し開始アドレスを計算する。そして、マスタノードは、各メモリ（ノード）に対して読み出し開始アドレスを含む読み出し命令を送付する。この一般的なブロックリード方式では、マスタノードは、連続したアドレス空間の読み出しにもかかわらず、各メモリ（ノード）について１命令、すなわち、合計でノード数分だけ命令を送付する必要がある。そのため、リングバスを通過する命令数が増加してしまう。本実施の形態では、リングバス上でインターリーブ化されたメモリに対するブロックリードにおいて命令数を削減する例について示す。
【０１０６】
まず、本発明の第３の実施の形態としてのリングバス転送システム３の構成を図１１に示す。図１１において、リングバス転送システム３は、マスタノード５０およびｎ個のスレーブノード６０（６０＿１、６０＿２、・・・、６０＿ｎ）を備える。なお、ｎは1以上の整数である。これらのノードは、リングバス９０上に環状に接続されている。
【０１０７】
マスタノード５０の機能ブロック構成を図１２に示す。
【０１０８】
図６において、マスタノード５０は、本発明の第１の実施の形態としてのマスタノード１０に対して、周回命令発行処理部１１に替えて周回命令発行処理部５１と、リングバス送受信部１２に替えてリングバス送受信部５２とを備える。さらに、マスタノード５０は、データバッファ５３を備える。なお、データバッファ５３は、本発明における周回命令発行処理部の一部の一実施形態を構成する。
【０１０９】
周回命令発行処理部５１は、周回命令としてブロックリード命令を発行する。ブロックリード命令とは、各スレーブノード６０のメモリ６６に分散格納されたデータに対するブロック単位の読み出し命令である。ブロックリード命令は、ブロックリード命令であることを表す情報（命令列）と、読み出し対象のブロックの開始アドレスを含むペイロードとからなる。ブロックリード命令は、各スレーブノード６０において受信を契機とするタイミングで次のノードに送信されるよう定められる。
【０１１０】
また、周回命令発行処理部５１は、リングバス９０上を周回したブロックリード命令を受信することにより、ブロックリード命令が各スレーブノード６０を通過したことを認識できる。そして、周回命令発行処理部５１は、受信したブロックリード命令を破棄してもよい。
【０１１１】
リングバス送受信部５２は、前のノードから受信した情報がブロックリード命令である場合、周回命令発行処理部５１に通知する。また、リングバス送受信部５２は、前のノードから受信した情報がデータである場合、データバッファ５３に保存する。
【０１１２】
データバッファ５３は、各スレーブノード６０から送信された、ブロックリード命令に対応するデータを、読み出し可能なブロックデータとして保存する。具体的には、データバッファ５３は、各スレーブノード６０から到着したデータを並べ替え、すべてのデータが到着した際にブロックリード可能な形に、整列して保存すればよい。例えば、周回命令発行処理部５１は、各データの送信元のスレーブノード６０を特定する。そして、周回命令発行処理部５１は、各データを、その送信元のスレーブノード６０毎にあらかじめ定められた格納位置に保存してもよい。なお、到着した各データに、送信元のスレーブノード６０を特定する情報、または、各データの開始アドレスを示す情報が含まれていれば、各データの送信元のスレーブノード６０は特定可能である。
【０１１３】
次に、スレーブノード６０の機能ブロック構成を図１３に示す。図１３において、スレーブノード６０は、本発明の第１の実施の形態としてのスレーブノード２０に対して、リングバス送受信制御部２１に替えてリングバス送受信制御部６１と、周回命令実行部２２に替えて周回命令実行部６２とを備える点が異なる。さらに、スレーブノード６０は、メモリ６６を備える。
【０１１４】
メモリ６６は、インターリーブ化されている。すなわち、ブロック長ｍのデータは、スレーブノード６０＿１〜６０＿ｎのメモリ６６に分散格納される。また、メモリ６６は、周回命令実行部６２からデータの読み出し命令を受けると、該当するアドレスのデータを周回命令実行部６２に返信する。
【０１１５】
リングバス送受信制御部６１は、受信した周回命令がブロックリード命令であるとき、その受信を契機とするタイミングでそのブロックリード命令を次のノードに送信する。
【０１１６】
また、リングバス送受信制御部６１は、周回命令実行部６２によって読み出されたデータを、リングバス９０を介してマスタノード５０に送信する。
【０１１７】
また、リングバス送受信制御部６１は、前のノードからデータを受信すると、受信したデータを次のノードに送信する。前のノードから受信されるデータは、他のスレーブノード６０においてブロックリード命令に応じて読み出されたデータである。これにより、あるスレーブノード６０においてブロックリード命令に対応して読み出されたデータは、リングバス９０上の他のスレーブノード６０を経て、マスタノード５０まで送信される。
【０１１８】
周回命令実行部６２は、ブロックリード命令の内容に基づいて自ノードのメモリ６６における読み出し開始アドレスを算出する。そして、周回命令実行部６２は、メモリ６６において、算出した読み出し開始アドレスからデータを読み出す。
【０１１９】
例えば、周回命令実行部６２は、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて、自ノードのメモリ６６における読み出し開始アドレスを算出する。
【０１２０】
例えば、ブロック長をｍ、ノードの個数をｎ、ノード番号をｉ（ｉ＝１〜ｎ）とする。また、ブロックリード命令に含まれる対象ブロックの先頭アドレスをａとする。この場合、ブロックデータが各メモリ６６に分散格納されると、各メモリ６６に割り当てられたデータの先頭アドレス（読み出し開始アドレス）は、
ａ＋（ｍ／ｎ）＊（ｉ−１）・・・（１）
と表される。ここで、“／”は除算を表す。また、“＊”は乗算を表す。
また、各メモリ６６に割り当てられるデータ長は、
ｍ／ｎ・・・（２）
と表される。
【０１２１】
そこで、周回命令実行部６２は、ブロック長ｍ、ノード数ｎ、および、ブロックリード命令に含まれる対象ブロックの先頭アドレスａを、式（１）および（２）に適用することにより、自ノードの読み出し開始アドレスおよびデータ長を算出すればよい。一例として、ｍ＝１０２４、ｎ＝１６、ａ＝８１９２とし、このブロックデータが各メモリ６６に分散格納されたとする。この場合、各メモリ６６に割り当てられるデータ長は、式（２）により６４と算出される。また、各メモリ６６に割り当てられたデータの先頭アドレス（読み出し開始アドレス）は、式（１）により、８１９２＋６４＊（ｉ−１）となる。そこで、スレーブノード６０＿１の周回命令実行部６２は、読み出し開始アドレスとして、８１９２を算出する。また、スレーブノード６０＿２の周回命令実行部６２は、読み出し開始アドレスとして、８２５６を算出する。また、スレーブノード６０＿３の周回命令実行部６２は、読み出し開始アドレスとして、８３２０を算出する。また、スレーブノード６０＿１６の周回命令実行部６２は、読み出し開始アドレスとして、９１５２を算出する。
【０１２２】
以上のように構成されたリングバス転送システム３におけるブロックリード動作について、図面を参照して説明する。
【０１２３】
まず、ブロックリード動作の概略を図１４に示す。
【０１２４】
図１４では、まず、マスタノード５０は、ブロックリード命令を発行し、スレーブノード６０＿１に送信する（ステップＳ３０１）。
【０１２５】
具体的には、周回命令発行処理部５１が、ブロックリード命令を発行する。このブロックリード命令には、読み出し対象のブロックの開始アドレスが含まれる。そして、リングバス送受信部５２が、ブロックリード命令をスレーブノード６０＿１に送信する。
【０１２６】
次に、ブロックリード命令を受信したスレーブノード６０＿１は、スレーブノード６０＿２へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する（ステップＳ３０２＿１）。
【０１２７】
以降、ブロックリード命令を受信したスレーブノード６０＿ｉは、スレーブノード６０＿ｉ＋１へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する（ステップＳ３０２＿ｉ）。
【０１２８】
このようにして、ブロックリード命令は、スレーブノード６０＿１〜６０＿ｎまで順次転送される。そして、ブロックリード命令を受信したスレーブノード６０＿ｎは、次のノードであるマスタノード５０へブロックリード命令を送信するとともに、ブロックリード命令に応じた読み出し処理を開始する（ステップＳ３０２＿ｎ）。ステップＳ３０２＿ｉの詳細については後述する。
【０１２９】
次に、スレーブノード６０＿ｎからブロックリード命令を受信したマスタノード５０は、ブロックリード命令がリングバス９０上の全てのスレーブノード６０を通過したこと認識し、ブロードリード命令を破棄する（ステップＳ３０３）。
【０１３０】
具体的には、リングバス送受信部５２が、ブロックリード命令を受信する。そして、周回命令発行処理部５１が、受信されたブロックリード命令を破棄する。
【０１３１】
また、各スレーブノード６０＿ｉでは、ステップＳ３０２＿ｉにおいて、ブロックリード命令に応じた処理を開始している。すなわち、各スレーブノード６０＿ｉは、自ノードのメモリ６６から、ブロックリード命令の読み出し対象に関するデータを読み込み、マスタノード５０に送信する（ステップＳ３１２＿ｉ）。このステップの詳細については後述する。
【０１３２】
そして、マスタノード５０では、各スレーブノード６０＿ｉから返信されたデータに基づいて、読み出し可能なブロックデータを生成する（ステップＳ３１３）。
【０１３３】
具体的には、リングバス送受信部５２は、各スレーブノード６０＿ｉから返信されたデータを受信すると、データバッファ５３に送付する。そして、データバッファ５３は、各データを整列し、読み出し可能なブロックデータとして保存する。
【０１３４】
以上で、ブロックリード動作の概略の説明を終了する。
【０１３５】
次に、ステップＳ３０２＿ｉおよびＳ３１２＿ｉにおけるスレーブノード６０＿ｉの動作の詳細を、図１５に示す。なお、１つのスレーブノード６０の中では、ステップＳ３０２＿ｉおよびＳ３１２＿ｉは一連の動作として実行される。
【０１３６】
図１５では、まず、リングバス送受信制御部６１は、前のノードからブロックリード命令を受信する。そして、リングバス送受信制御部６１は、ブロックリード命令を周回命令実行部６２に通知するとともに、ブロックリード命令を次のノードに送信する（ステップＣ１）。
【０１３７】
次に、周回命令実行部６２は、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて、自ノードのメモリ６６における読み出し開始アドレスを算出する（ステップＣ２）。
【０１３８】
前述のように、周回命令実行部６２は、式（１）を用いて、自ノードにおける読み出し開始アドレスを算出すればよい。
【０１３９】
次に、周回命令実行部６２は、算出した読み出し開始アドレスから、所定のデータ長のデータを読み出す（ステップＣ３）。なお、前述のように、所定のデータ長は、ブロックデータ長およびノード数から式（２）により算出可能である。あるいは、周回命令実行部６２は、そのようにして算出されたデータ長をあらかじめ記憶しておいてもよい。
【０１４０】
次に、リングバス送受信制御部６１は、ステップＣ３で読み出されたデータを、リングバス９０を介してマスタノード５０に送信する（ステップＣ４）。
【０１４１】
以上で、スレーブノード６０＿ｉは、ステップＳ３０２＿ｉおよびＳ３１２＿ｉの動作を終了する。
【０１４２】
次に、本発明の第３の実施の形態の効果について述べる。
【０１４３】
本発明の第３の実施の形態としてのリングバス転送システムは、リングバス上でインターリーブ化されたメモリに対するブロックリードを行う際の転送効率を、より向上させることができる。
【０１４４】
その理由について述べる。本実施の形態では、リングバス上のマスタノードにおいて、周回命令発行処理部が、周回命令としてブロックリード命令を発行し、リングバス送受信部を介して次のノードに送信する。そして、このブロックリード命令は、次のスレーブノードのリングバス送受信制御部によって受信される。ブロックリード命令は、各スレーブノードにおいてその受信を契機とするタイミングで次のノードに送信されるよう定められている。そこで、このスレーブノードにおいて、リングバス送受信制御部が、このブロックリード命令を次のノードに送信するとともに、周回命令実行部が、ブロックリード命令に対応する読み出し処理を開始する。このようにして、ブロックリード命令は、リングバス上の各スレーブノードでブロックリード命令に対応する読み出し処理を開始させながら、各スレーブノードを順次転送されて、マスタノードのリングバス送受信部によって受信される。すると、マスタノードにおいて、周回命令発行処理部が、ブロックリード命令の受信により、全てのスレーブノードにおいてブロックリード命令に対応する読み出し処理が開始したことを認識する。
【０１４５】
そして、本実施の形態では、各スレーブノードにおいてブロックリード命令が受信されると、周回命令実行部が、読み出し対象のブロックデータのうち自ノードに割り当てられたデータの読み出し開始アドレスを算出する。読み出し開始アドレスは、ブロックリード命令に含まれるブロックデータの開始アドレスに基づいて算出される。そして、周回命令実行部は、自ノードのメモリにおいて、算出した読み出し開始アドレスからデータ長だけのデータを読み出す。そして、リングバス送受信制御部が、読み出されたデータを、リングバスを介してマスタノードに送信するからである。
【０１４６】
そして、本実施の形態では、マスタノードにおいて、リングバス送受信部が、各スレーブノードで読み出されたデータを受信すると、データバッファが、各データを、その送信元または開始アドレスに基づき整列して保存する。これにより、データバッファには、対象のブロックデータが読み出し可能に保存されることになる。
【０１４７】
ここで、前述したように、一般的なリングバス上でのブロックリードの場合、マスタノードは、各メモリ（ノード）について１つずつの命令、すなわち、合計でノード数分だけ命令を送付する必要があった。
【０１４８】
これに対して、上述したように、本実施の形態では、１つのブロックリード命令を周回させることにより、各スレーブノードが、ブロックリード命令に基づき自ノードの読み出し開始アドレスを算出して読み出す処理を開始する。したがって、本実施の形態では、リングバス上でのブロックリードにおいて、リングバス上に送出される命令数を削減することができる。
【０１４９】
（第４の実施の形態）
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第２および第３の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１５０】
本実施の形態では、リングバス転送システムにおいて、複数のノードが複数のリングバスに接続される例について説明する。
【０１５１】
まず、本発明の第４の実施の形態としてのリングバス転送システム４の構成を図１６に示す。図１６において、リングバス転送システム４は、マスタノード７０およびｎ個のスレーブノード８０（８０＿１、８０＿２、・・・、８０＿ｎ）を備える。なお、ｎは1以上の整数である。これらのノードは、リングバス９１および９２上に環状に接続されている。リングバス９１および９２は、通信方向が互いに逆方向となっている。リングバス９１では、マスタノード７０、スレーブノード８０＿１、８０＿２、・・・８０＿ｎ、マスタノード７０・・・の順に情報が送信される。リングバス９２では、マスタノード７０、スレーブノード８０＿ｎ、８０＿ｎ−１、・・・８０＿１、マスタノード７０・・・の順に情報が送信される。
【０１５２】
マスタノード７０の機能ブロック構成を図１７に示す。図１７において、マスタノード７０は、周回命令発行処理部７１と、リングバス送受信部７２と、データバッファ５３とを備える。
【０１５３】
周回命令発行処理部７１は、周回命令として、リングバス９１および９２に流すための略同一内容の周回命令を発行する。本実施の形態では、周回命令の一例として、同期命令、同期応答、および、ブロックリード命令を想定するが、これらに限らない。また、周回命令発行処理部７１は、リングバス９１および９２に流す周回命令に、周回命令の指示する処理を識別する同一の処理ＩＤを付加してもよい。
【０１５４】
ここで、周回命令発行処理部７１によってリングバス９１および９２に流すために発行される周回命令は、略同一内容であるが、次の部分が異なる場合もある。例えば、周回命令発行処理部７１は、リングバス９１および９２に流す周回命令に、その通信方向またはリングバスの識別情報を表すタグ情報を付加してもよい。また、周回命令発行処理部７１は、リングバス９１および９２に流す周回命令に、それぞれいずれのスレーブノード８０を対象とする命令であるかを特定可能な宛先情報を付加してもよい。
【０１５５】
なお、周回命令発行処理部７１は、周回命令の内容によっては、リングバス９１および９２のどちらか一方に流す周回命令を発行する場合もある。
【０１５６】
また、周回命令発行処理部７１は、リングバス９１または９２上を周回した周回命令を受信すると、周回命令に対応する処理を実行する。
【０１５７】
リングバス送受信部７２は、周回命令発行処理部７１によって発行された周回命令を、リングバス９１または９２における次のノードに送信する。リングバス９１および９２の全てに流すための複数の略同一内容の周回命令が発行された場合、リングバス送受信部７２は、リングバス９１および９２における次のノードにそれぞれを送信すればよい。
【０１５８】
次に、スレーブノード８０の機能ブロック構成を図１８に示す。図１８において、スレーブノード８０は、リングバス送受信制御部８１と、周回命令実行部８２と、同期確認部４３と、同期確認レジスタ４４と、同期応答バッファ４５と、メモリ６６と、同期命令到着レジスタ８７とを備える。なお、同期命令到着レジスタ８７は、本発明における周回命令実行部の一部の一実施形態を構成する。
【０１５９】
リングバス送受信制御部８１は、リングバス９１または９２から周回命令を受信すると、その周回命令の内容に応じたタイミングで、受信した側のリングバスにおける次のノードに、周回命令を送信する。
【０１６０】
周回命令実行部８２は、周回命令の内容に応じて、リングバス９１および９２から略同一内容の周回命令が全て到着後、または、リングバス９１および９２のいずれかから周回命令が到着後、周回命令の表す処理を実行する。あるいは、周回命令実行部８２は、周回命令の内容に応じて、リングバス９１または９２から受信された周回命令の対象が自ノードであると判定した場合に、周回命令の表す処理を実行する。例えば、周回命令に宛先情報が含まれている場合を考える。この場合、周回命令実行部８２は、宛先情報に自ノードが含まれている場合に、周回命令の表す処理を実行すればよい。あるいは、周回命令実行部８２は、周回命令の内容に応じて、あらかじめ自ノードが反応する対象のリングバスを定めた反応情報を記憶しておいてもよい。そして、この場合、周回命令実行部８２は、受信した周回命令の内容に応じて反応情報を参照し、自ノードが反応する対象であると判定した場合に、周回命令の表す処理を実行すればよい。
【０１６１】
＜同期命令の場合＞
次に、同期命令を周回させる場合について、各機能ブロックの具体的構成を説明する。
【０１６２】
マスタノード７０の周回命令発行処理部７１は、リングバス９１および９２のそれぞれに流すための、略同一内容の同期命令を発行する。この場合、周回命令発行処理部７１は、各同期命令に前述のタグ情報を付加してもよい。そして、周回命令発行処理部７１は、リングバス９１および９２のそれぞれを周回した同期命令を受信すると、各同期命令を破棄すればよい。
【０１６３】
マスタノード７０のリングバス送受信部７２は、略同一内容で発行された同期命令を、リングバス９１および９２のそれぞれにおける次のノードに送信する。
【０１６４】
スレーブノード８０のリングバス送受信制御部８１は、リングバス９１または９２から同期命令を受信した場合、受信を契機とするタイミングで、受信したリングバスにおける次のノードにその同期命令を送信する。また、リングバス送受信制御部８１は、受信した同期命令を周回命令実行部８２に通知する。
【０１６５】
スレーブノード８０の周回命令実行部８２は、リングバス９１および９２から略同一内容の同期命令が全て到着後、同期確認部４３を用いて同期処理を開始する。
【０１６６】
ここで、同期命令については、リングバス９１および９２の全てから到着後に、同期処理が開始されるよう定められる。その理由について説明する。各ノードが複数のリングバス９１および９２に接続される場合、同期命令に先駆けて処理されている先行命令やデータ転送にも、複数のリングバス９１または９２が利用されている。そのため、マスタノード７０により同期命令が発行された際に、複数のリングバス９１および９２上には、マスタノード７０から送付された他の命令やデータのうち、宛先のスレーブノード８０に到着していない命令やデータが存在する可能性がある。これらの他の命令やデータは、後続の同期命令が各スレーブノード８０に到着する前に、各宛先のスレーブノード８０に到着する。したがって、あるスレーブノード８０において、リングバス９１および９２の一部だけから同期命令が到着した時点では、まだ同期命令が到着していない他のリングバスから他の命令やデータがそのノードに到着する可能性がある。したがって、周回命令実行部８２が、全てのリングバス９１および９２より同期命令が到着した後に同期処理を開始することにより、先行する他の命令やデータが確実にそのノードに到着した状態で、同期処理を開始することができるからである。
【０１６７】
具体的には、周回命令実行部８２は、リングバス送受信制御部８１から同期命令を通知されると、同期命令到着レジスタ８７を確認する。もし、同期命令到着レジスタ８７に、同期命令到着ステータスがまだ保存されていない場合、今回の同期命令の通知により、リングバス９１および９２の一部（片方）から、同期命令が到着したことになる。なお、同期命令到着ステータスとは、リングバス９１および９２の一部から同期命令が到着した状態を表す情報である。そこで、この場合、リングバス送受信制御部８１は、同期命令到着ステータスを同期命令到着レジスタ８７に保存する。
【０１６８】
また、もし、同期命令到着レジスタ８７に、同期命令到着ステータスが既に保存されている場合、今回の同期命令の通知により、リングバス９１および９２の全てから、同期命令が到着したことになる。この場合、リングバス送受信制御部８１は、本発明の第２の実施の形態におけるリングバス送受信制御部４１と同様に、同期処理を開始する。
【０１６９】
なお、リングバス９１および９２のうちいずれから同期命令が到着したかを判断するためには、周回命令実行部８２は、同期命令を受信した方向を判別してもよい。あるいは、前述のように、方向またはリングバスを識別するタグ情報が同期命令に付加されている場合、周回命令実行部８２は、タグ情報に基づいて受信したリングバスを判断してもよい。
【０１７０】
＜同期応答の場合＞
次に、同期応答を周回させる場合について、各機能ブロックの具体的構成を説明する。
【０１７１】
マスタノード７０の周回命令発行処理部７１は、リングバス９１および９２にそれぞれ流すための、略同一内容の同期応答を発行する。この場合、周回命令発行処理部７１は、それぞれの同期応答に、タグ情報および同一の処理ＩＤを付加してもよい。
【０１７２】
また、周回命令発行処理部７１は、リングバス９１および９２のいずれか早い方から同期応答が到着すると、各スレーブノード８０における同期処理が完了したことを確認できる。そこで、周回命令発行処理部７１は、後から到着した同期応答を、破棄すればよい。例えば、リングバス９１および９２の双方に流した同期応答に同一の処理ＩＤを付加したとする。この場合、周回命令発行処理部７１は、到着した同期応答の処理ＩＤを参照することにより、最初に到着した同期応答であるか後に到着した同期応答であるかを判断することができる。
【０１７３】
マスタノード７０のリングバス送受信部７２は、略同一内容の同期応答を、リングバス９１および９２における次のノードにそれぞれ送信する。
【０１７４】
スレーブノード８０の周回命令実行部８２は、リングバス９１および９２のそれぞれから同期応答が到着すると、本発明の第２の実施の形態の周回命令実行部４２と略同様に、同期処理の完了を確認する処理を行う。
【０１７５】
スレーブノード８０のリングバス送受信制御部８１は、リングバス９１または９２から同期応答を受信すると、同期応答を周回命令実行部８２に通知する。また、リングバス送受信制御部８１は、周回命令実行部８２によって同期処理の完了が確認されると、リングバス９１および９２のそれぞれから受信した同期応答を、それぞれにおける次のノードに送信する。なお、この場合、同期確認レジスタ４４および同期応答バッファ４５は、リングバス９１および９２からの各同期応答に対応して設けられる。
【０１７６】
＜ブロックリード命令の場合＞
次に、ブロックリード命令を周回させる場合について、各機能ブロックの具体的構成を説明する。
【０１７７】
マスタノード７０の周回命令発行処理部７１は、リングバス９１および９２にそれぞれ流すための、略同一内容のブロックリード命令を発行する。そして、周回命令発行処理部７１は、リングバス９１および９２のそれぞれを周回したブロックリード命令を受信すると、各ブロックリード命令を破棄すればよい。
【０１７８】
マスタノード７０のリングバス送受信部７２は、略同一内容のブロックリード命令を、リングバス９１および９２における次のノードにそれぞれ送信する。
【０１７９】
スレーブノード８０のリングバス送受信制御部８１は、リングバス９１または９２からブロックリード命令を受信した場合、受信を契機とするタイミングで、受信したリングバスにおける次のノードにそのブロックリード命令を送信する。また、リングバス送受信制御部８１は、受信したブロックリード命令を周回命令実行部８２に通知する。
【０１８０】
また、リングバス送受信制御部８１は、ブロックリード命令により読み出されたデータを、リングバス９１および９２のいずれかを用いて、マスタノード７０に向けて送信する。なお、送信に用いられるリングバスとしては、自ノードとマスタノード７０との間のノード数がより少ないリングバスが選択されることが望ましい。これにより、ブロックリード完了までの遅延を小さくできる可能性が高くなる。
【０１８１】
スレーブノード８０の周回命令実行部８２は、リングバス９１および９２のいずれかからブロックリード命令が到着すると、本発明の第３の実施の形態の周回命令実行部６２と同様に、ブロックリード命令に対応する読み出し処理を行う。また、周回命令実行部８２は、その後もう片方のリングバスから到着したブロックリード命令については、処理を行わないようにする。あるいは、ブロックリード命令を破棄するスレーブノード８０をあらかじめ定めておいてもよい。例えば、マスタノード７０から最も遠く隣接している２つのスレーブノード８０が、それぞれ、片方のリングバスから到着したブロックリード命令に対応する読み出し処理を行うとともに、そのブロックリード命令を次のノードに送信する代わりに破棄してもよい。この場合、各スレーブノード８０には、リングバス９１および９２のいずれか一方からのみブロックリード命令が到着することになる。
【０１８２】
以上のように構成されたリングバス転送システム４におけるリングバス転送動作を、図面を参照して説明する。
【０１８３】
まず、リングバス転送システム４における同期命令周回動作の概略を図１９に示す。
【０１８４】
図１９では、まず、マスタノード７０において、周回命令発行処理部７１は、リングバス９１および９２に流すための、略同一内容の同期命令を発行する（ステップＳ４０１）。
【０１８５】
以下、ステップＳ４１１〜Ｓ４１３の動作は、リングバス９１上の転送動作を示す。また、ステップＳ４２１〜Ｓ４２３の動作は、リングバス９２上の転送動作を示す。なお、ステップＳ４１１〜Ｓ４１３の動作と、ステップＳ４２１〜Ｓ４２３の動作とは、並行して行われる。
【０１８６】
まず、リングバス送受信部７２は、ステップＳ４０１で発行されたうち一方の同期命令を、リングバス９１上の次のノードであるスレーブノード８０＿１に転送する（ステップＳ４１１）。
【０１８７】
次に、リングバス９１から同期命令を受信したスレーブノード８０＿１は、スレーブノード８０＿２へ、同期命令を送信する（ステップＳ４１２＿１）。
【０１８８】
以降、リングバス９１から同期命令を受信したスレーブノード８０＿ｉは、スレーブノード８０＿ｉ＋１へ、同期命令を送信する（ステップＳ４１２＿ｉ）。
【０１８９】
このようにして、ステップＳ４１２＿ｉ（ｉ＝１〜ｎ）が実行されることにより、同期命令は、スレーブノード８０＿１〜８０＿ｎまで順次転送される。そして、スレーブノード８０＿ｎは、受信した同期命令をマスタノード７０へ送信する（ステップＳ４１２＿ｎ）。
【０１９０】
次に、マスタノード７０において、リングバス送受信部７２は、スレーブノード８０＿ｎから同期命令を受信する。そして、周回命令発行処理部７１は、同期命令がリングバス９１上を周回して全てのスレーブノード８０を通過したこと認識し、同期命令を破棄する（ステップＳ４１３）。
【０１９１】
また、リングバス送受信部７２は、ステップＳ４０１で発行されたうちの他方の同期命令を、リングバス９２上の次のノードであるスレーブノード８０＿ｎに転送する（ステップＳ４２１）。
【０１９２】
次に、リングバス９２から同期命令を受信したスレーブノード８０＿ｎは、スレーブノード８０＿ｎ−１へ、同期命令を送信する（ステップＳ４２２＿ｎ）。
【０１９３】
以降、リングバス９２から同期命令を受信したスレーブノード８０＿ｉは、スレーブノード８０＿ｉ−１へ、同期命令を送信する（ステップＳ４２２＿ｉ）。
【０１９４】
このようにして、ステップＳ４２２＿ｉ（ｉ＝ｎ〜１）が実行されることにより、同期命令は、スレーブノード８０＿ｎ〜８０＿１まで順次転送される。そして、スレーブノード８０＿１は、受信した同期命令をマスタノード７０へ送信する（ステップＳ４２２＿１）。
【０１９５】
次に、マスタノード７０において、リングバス送受信部７２は、スレーブノード８０＿１から同期命令を受信する。そして、周回命令発行処理部７１は、同期命令がリングバス９２上を周回して全てのスレーブノード８０を通過したこと認識し、同期命令を破棄する（ステップＳ４２３）。
【０１９６】
また、各スレーブノード８０＿ｉは、リングバス９１および９２の双方から同期命令が到着後、同期処理を開始する（ステップＳ４３２＿ｉ）。
【０１９７】
以上で、リングバス転送システム４は、同期命令周回動作を終了する。
【０１９８】
次に、ステップＳ４１２＿ｉ、Ｓ４２２＿ｉ、および、Ｓ４３２＿ｉにおけるスレーブノード８０＿ｉの同期開始動作の詳細を、図２０に示す。なお、スレーブノード８０＿ｉにおいて、これらのステップは、一連の動作として実行される。
【０１９９】
図２０では、まず、リングバス送受信制御部８１は、リングバス９１および９２のいずれかから、同期命令を受信する。そして、リングバス送受信制御部８１は、受信した同期命令を、周回命令実行部８２に通知するとともに、受信したリングバスにおける次のノードに送信する（ステップＤ１）。
【０２００】
次に、同期命令を通知された周回命令実行部８２は、他のリングバスからの同期命令が既に到着しているか否かを判断する（ステップＤ２）。この判断処理は、同期命令到着レジスタ８７に同期命令到着ステータスが保存されているか否かを確認することにより行われる。
【０２０１】
ここで、まだ他のリングバスからの同期命令が到着していない場合、周回命令実行部８２は、同期命令到着ステータスを、同期命令到着レジスタ８７に保存する（ステップＤ３）。そして、スレーブノード８０＿ｉの動作は、ステップＤ１に戻る。
【０２０２】
一方、ステップＤ２において、既に他のリングバスからの同期命令が到着していると判断された場合、リングバス９１および９２の全てから同期命令が受信されたことになる。
【０２０３】
そこで、以降、スレーブノード８０＿ｉは、ステップＡ２〜Ａ５まで、本発明の第２の実施の形態と同様に動作して、同期命令受信時の動作を終了する。ただし、スレーブノード８０＿ｉは、ステップＡ４において、同期応答が到着済であるか否かの判断処理を、リングバス９１および９２のそれぞれからの同期応答について別々に実行する。また、スレーブノード８０＿ｉは、ステップＡ５において、同期完了ステータスの保存処理を、リングバス９１および９２のそれぞれからの同期応答について別々に実行する。
【０２０４】
次に、リングバス転送システム４における同期応答周回動作の概略を図２１に示す。
【０２０５】
図２１では、まず、マスタノード７０において、周回命令発行処理部７１は、リングバス９１および９２に流すための、略同一内容の同期応答を発行する（ステップＳ５０１）。
【０２０６】
以下、ステップＳ５１１〜Ｓ５１２の動作は、リングバス９１上の転送動作を示す。また、ステップＳ５２１〜Ｓ５２２の動作は、リングバス９２上の転送動作を示す。なお、ステップＳ５１１〜Ｓ５１２の動作と、ステップＳ５２１〜Ｓ５２２の動作とは、並行して行われる。
【０２０７】
まず、リングバス送受信部７２は、ステップＳ５０１で発行されたうち一方の同期応答を、リングバス９１上の次のノードであるスレーブノード８０＿１に転送する（ステップＳ５１１）。
【０２０８】
次に、リングバス９１から同期応答を受信したスレーブノード８０＿１は、自ノードにおける同期処理の完了を確認してから、スレーブノード８０＿２へ、同期応答を送信する（ステップＳ５１２＿１）。
【０２０９】
以降、リングバス９１から同期応答を受信したスレーブノード８０＿ｉは、自ノードにおける同期処理の完了を確認してから、スレーブノード８０＿ｉ＋１へ、同期応答を送信する（ステップＳ５１２＿ｉ）。
【０２１０】
このようにして、ステップＳ５１２＿ｉ（ｉ＝１〜ｎ）が実行されることにより、同期応答は、各スレーブノード８０の同期処理の完了を確認しながら、スレーブノード８０＿１〜８０＿ｎまで順次転送される。そして、スレーブノード８０＿ｎは、自ノードにおける同期処理の完了を確認してから、マスタノード７０へ同期応答を送信する（ステップＳ５１２＿ｎ）。
【０２１１】
また、リングバス送受信部７２は、ステップＳ５０１で発行されたうち他方の同期応答を、リングバス９２上の次のノードであるスレーブノード８０＿ｎに転送する（ステップＳ５２１）。
【０２１２】
次に、リングバス９２から同期応答を受信したスレーブノード８０＿ｎは、自ノードにおける同期処理の完了を確認してから、スレーブノード８０＿ｎ−１へ、同期応答を送信する（ステップＳ５２２＿ｎ）。
【０２１３】
以降、リングバス９２から同期応答を受信したスレーブノード８０＿ｉは、自ノードにおける同期処理の完了を確認してから、スレーブノード８０＿ｉ−１へ、同期応答を送信する（ステップＳ５２２＿ｉ）。
【０２１４】
このようにして、ステップＳ５２２＿ｉ（ｉ＝ｎ〜１）が実行されることにより、同期応答は、各スレーブノード８０の同期処理の完了を確認しながら、スレーブノード８０＿ｎ〜８０＿１まで順次転送される。そして、スレーブノード８０＿１は、自ノードにおける同期処理の完了を確認してから、マスタノード７０へ同期応答を送信する（ステップＳ５２２＿１）。
【０２１５】
次に、マスタノード７０において、リングバス送受信部７２は、スレーブノード８０＿１または８０＿ｎから、同期応答を受信する。そして、周回命令発行処理部７１は、リングバス９１および９２のいずれか一方から同期応答を受信すると、全てのスレーブノード８０において同期処理が完了したことを確認する。また、周回命令発行処理部７１は、その後、他方のリングバスから同期応答を受信すると、この同期応答を破棄する（ステップＳ５０３）。
【０２１６】
以上で、リングバス転送システム４は、同期応答周回動作を終了する。
【０２１７】
なお、ステップＳ５１２＿ｉおよびＳ５２２＿ｉにおいて、各スレーブノード８０＿ｉが同期処理の完了を確認する動作の詳細は、図１０に示した本発明の第２の実施の形態と同様である。ただし、図１０の動作において、スレーブノード８０＿ｉは、対象のリングバスに対応する同期確認レジスタ４４および同期応答バッファ４５を利用すればよい。
【０２１８】
次に、リングバス転送システム４におけるブロックリード動作の概略を図２２に示す。ここでは、２つのスレーブノード８０＿ｋおよび８０＿ｋ＋１において、ブロックリード命令が破棄されるよう定められているものとする。ただし、ｋは１以上ｎ−１以下の整数である。例えば、スレーブノード８０＿ｋおよび８０＿ｋ＋１は、マスタノード７０から最も遠い隣接する２つのノードであってもよい。
【０２１９】
図２２では、まず、マスタノード７０において、周回命令発行処理部７１は、リングバス９１および９２に流すための、略同一内容のブロックリード命令を発行する（ステップＳ６０１）。
【０２２０】
以下、ステップＳ６１１〜Ｓ６１２の動作は、リングバス９１上の転送動作を示す。また、ステップＳ６２１〜Ｓ６２２の動作は、リングバス９２上の転送動作を示す。なお、ステップＳ６１１〜Ｓ６１２の動作と、ステップＳ６２１〜Ｓ６２２の動作とは、並行して行われる。
【０２２１】
まず、リングバス送受信部７２は、ステップＳ６０１で発行されたうち一方のブロックリード命令を、リングバス９１上の次のノードであるスレーブノード８０＿１に転送する（ステップＳ６１１）。
【０２２２】
次に、リングバス９１からブロックリード命令を受信したスレーブノード８０＿１は、スレーブノード８０＿２へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６１２＿１）。
【０２２３】
以降、リングバス９１からブロックリード命令を受信したスレーブノード８０＿ｉは、スレーブノード８０＿ｉ＋１へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６１２＿ｉ）。
【０２２４】
このようにして、ステップＳ６１２＿ｉ（ｉ＝１〜ｋ）が実行されることにより、ブロックリード命令は、スレーブノード８０＿１〜８０＿ｋまで順次転送される。そして、スレーブノード８０＿ｋは、ブロックリード命令を次のノードに送信する代わりに破棄し、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６１２＿ｋ）。
【０２２５】
また、リングバス送受信部７２は、ステップＳ６０１で発行されたうち他方のブロックリード命令を、リングバス９２上の次のノードであるスレーブノード８０＿ｎに転送する（ステップＳ６２１）。
【０２２６】
次に、リングバス９２からブロックリード命令を受信したスレーブノード８０＿ｎは、スレーブノード８０＿ｎ−１へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６２２＿ｎ）。
【０２２７】
以降、リングバス９２からブロックリード命令を受信したスレーブノード８０＿ｉは、スレーブノード８０＿ｉ−１へブロックリード命令を送信するとともに、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６２２＿ｉ）。
【０２２８】
このようにして、ステップＳ６２２＿ｉ（ｉ＝ｎ〜ｋ＋１）が実行されることにより、ブロックリード命令は、スレーブノード８０＿ｎ〜８０＿ｋ＋１まで順次転送される。そして、スレーブノード８０＿ｋ＋１は、ブロックリード命令を次のノードに送信する代わりに破棄し、ブロックリード命令に対応する読み出し処理を開始する（ステップＳ６２２＿ｋ＋１）。
【０２２９】
また、各スレーブノード８０＿ｉは、ステップＳ６１２＿ｉまたはＳ６２２＿ｉの実行後、本発明の第３の実施の形態と同様にステップＳ３１２＿ｉを実行する。すなわち、スレーブノード８０＿ｉは、自ノードのメモリ６６から、ブロックリード命令の読み出し対象に関するデータを読み込み、マスタノード７０に送信する。ステップＳ６１２＿ｉまたはＳ６２２＿ｉ、およびステップＳ３１２＿ｉの動作の詳細は、図１５を参照して説明した本発明の第３の実施の形態の動作と同様である。ただし、スレーブノード８０＿ｋおよび８０＿ｋ＋１は、ステップＣ１において、ブロックリード命令を次のノードへ送信する代わりに破棄する。
【０２３０】
そして、マスタノード７０は、本発明の第３の実施の形態と同様にステップＳ３１３を実行し、各スレーブノード８０＿ｉから返信されたデータに基づいて、読み出し可能なブロックデータを生成する。
【０２３１】
以上で、リングバス転送システム４は、ブロックリード動作を終了する。
【０２３２】
次に、本発明の第４の実施の形態の効果について述べる。
【０２３３】
本発明の第４の実施の形態としてのリングバス転送システムは、複数のリングバスに接続された複数のノードにおいて、あるノードから多数の他のノードに対して行われる通信の転送効率を、より向上させることができる。
【０２３４】
その理由について説明する。本実施の形態では、マスタノードが、各リングバスに略同一内容の周回命令を流す。そして、スレーブノードが、周回命令の内容に応じて、複数のリングバスからの周回命令が全て到着後、または、複数のリングバスのいずれかから周回命令が到着後、または、周回命令の対象が自ノードである場合に、周回命令の表す処理を実行するからである。
【０２３５】
これにより、本実施の形態は、複数のリングバスに各ノードが接続される場合でも、周回命令の内容に応じて、周回命令の数を削減しながら適切に処理を実行することができる。
【０２３６】
なお、本実施の形態において、複数のノードが２つのリングバスに接続される例について説明したが、リングバスの数を限定するものではない。例えば、本実施の形態は、３つ以上のリングバスに各ノードが接続される場合でも実施可能である。ただし、この場合、スレーブノードの同期命令到着レジスタは、到着済の同期命令の数を保存するようにしてもよい。そして、スレーブノードの周回命令実行部は、同期命令到着レジスタの値がリングバスの数に等しくなると、同期処理を開始するようにしてもよい。
【０２３７】
また、本実施の形態において、２つのリングバスの通信方向が逆である例について説明したが、各リングバスの通信方向を限定するものではない。
【０２３８】
また、本実施の形態において、各スレーブノードは、全てのリングバスからの同期命令が到着後、同期処理を開始するものとして説明した。ただし、マスタノードにおける同期命令発行時においてリングバス上で送付中の情報が、スレーブノードの同期に影響を与えないケースもある。そのような場合、各スレーブノードは、いずれかのリングバスからの同期命令が到着後、同期処理を開始してもよい。この場合、各スレーブノードは、後から到着した同期命令については無視すればよい。
【０２３９】
また、本実施の形態において、マスタノードが、全てのリングバスにおいて略同一内容の同期応答を周回させ、いずれかのリングバスから最初に同期応答を受け取った時点で同期完了を確認する例について説明した。
【０２４０】
この他、本実施の形態において、マスタノードは、同期応答をいずれか１つのリングバスを周回させることにより同期完了を確認してもよい。この場合、マスタノードおよびスレーブノードは、本発明の第２の実施の形態と同様に同期応答の転送動作を行えばよい。
【０２４１】
あるいは、本実施の形態において、リングバス毎に、同期応答に反応するスレーブノードをあらかじめ定めおき、マスタノードは、全てのリングバスからの同期応答を受信した時点で、同期完了を確認してもよい。この場合、マスタノードは、各リングバスに流す同期応答に、反応すべきスレーブノードを表す宛先情報を含めてもよい。そして、スレーブノードの周回命令実行部は、受信した同期応答に含まれる宛先情報を参照することで、この同期応答の対象が自ノードであるか否かを判断すればよい。あるいは、各スレーブノードが、あらかじめいずれのリングバスからの同期応答に反応するかを表す反応情報を記憶しておいてもよい。この場合、スレーブノードの周回命令実行部は、反応情報を参照することで、この同期応答の対象が自ノードであるか否かを判断すればよい。いずれにしても、このようにリングバス毎に同期応答に反応するスレーブノードを定めおく場合、各スレーブノードは、到着した同期応答の対象が自ノードである場合に、同期処理の完了を確認後、該当するリングバス上の次のノードにその同期応答を送信すればよい。また、スレーブノードは、到着した同期応答の対象が自ノードでない場合、同期応答を単に通過させればよい。すなわち、この場合、スレーブノードは、同期応答を受信すると、同期処理の完了を確認せずに、受信したリングバス上の次のノードにその同期応答を送信すればよい。
【０２４２】
また、本実施の形態において、マスタノードが同期応答を発行する例を中心に説明した。これに限らず、スレーブノードのいずれかが、自ノードにおける同期処理の完了を確認次第、複数のリングバスに向けて同期応答を発行するようあらかじめ定めておいてもよい。そのようなスレーブノードは、例えば、マスタノードから最も遠い１つのノードであることが望ましい。例えば、マスタノードおよび１６個のスレーブノードがリングバスに接続されている場合、そのようなスレーブノードとは、マスタノードの隣から数えて８番目または９番目のスレーブノードであってもよい。そして、この場合、マスタノードは、複数のリングバスから同期応答を受信すると、全てのスレーブノードにおける同期処理の完了を確認できる。これにより、本実施の形態は、より高速に同期の確認を行うことができる。
【０２４３】
また、本実施の形態において、マスタノードが、全てのリングバスにおいて略同一内容のブロックリード命令を周回させる例について説明した。この場合、スレーブノードは、いずれかのリングバスからブロックリード命令が到着すると読み出し処理を行い、その後他のリングバスから到着したブロックリード命令については処理を行わない例について説明した。あるいは、この場合、あらかじめ定められた隣接する２つのスレーブノードが、片方のリングバスから到着したブロックリード命令に対応する読み出し処理を行うとともに、そのブロックリード命令を破棄する例についても説明した。
【０２４４】
この他、本実施の形態において、リングバス毎に、ブロックリード命令に反応するスレーブノードをあらかじめ定めおいてもよい。この場合、マスタノードは、各リングバスに流すブロックリード命令に、反応すべきスレーブノードを表す宛先情報を含めてもよい。そして、スレーブノードの周回命令実行部は、受信したブロックリード命令に含まれる宛先情報を参照することで、このブロックリード命令の対象が自ノードであるか否かを判断すればよい。あるいは、各スレーブノードが、あらかじめいずれのリングバスからのブロックリード命令に反応するかを表す反応情報を記憶しておいてもよい。この場合、スレーブノードの周回命令実行部は、反応情報を参照することで、このブロックリード命令の対象が自ノードであるか否かを判断すればよい。いずれにしても、このようにリングバス毎にブロックリード命令に反応するスレーブノードを定めおく場合、各スレーブノードは、到着したブロックリード命令の対象が自ノードである場合に、読み出し処理を開始するとともに、該当するリングバス上の次のノードにそのブロックリード命令を送信すればよい。また、スレーブノードは、到着したブロックリード命令の対象が自ノードでない場合、ブロックリード命令を単に通過させればよい。すなわち、この場合、スレーブノードは、ブロックリード命令を受信すると、読み出し処理を開始することなく、受信したリングバス上の次のノードにそのブロックリード命令を送信すればよい。
【０２４５】
また、上述した本発明の各実施の形態では、周回命令の内容は、全てのスレーブノードを対象とする命令である例を中心に説明した。これに限らず、周回命令の内容は、一部のスレーブノードを対象とする命令であってもよい。この場合、マスタノードが、周回命令に前述の宛先情報を含めておいてもよい。あるいは、この場合、各スレーブノードがあらかじめ前述の反応情報を記憶しておいてもよい。
【０２４６】
例えば、本発明の第２、第４の実施の形態は、ノード内のすべてのノードではなく、一部のノードを同期させることも可能である。この場合、マスタノードは、同期命令および同期応答に、対象となるスレーブノードを表す宛先情報を含めればよい。各スレーブノードは、宛先情報に自ノードが含まれる場合は、各実施の形態で説明した同期処理の開始または同期応答を行い、宛先情報に自ノードが含まれない場合は、各命令をそのまま次のノードに送信すればよい。
【０２４７】
また、上述した本発明の各実施の形態において、マスタノードおよびスレーブノードの双方の機能を有するノードがあるケースについて考える。このようなノードにおいて、マスタノード部分がリングバスに接続され、スレーブノード部分がリングバスに接続されていないとする。この場合、マスタノード部分は、リングバスに接続された他の各スレーブノードに、各実施の形態において説明したように周回命令を実行させる。そして、マスタノード部分は、別途、リングバスに接続されていないスレーブノード部分との間で、周回命令と同等の内容を送受信すればよい。なお、このようなノードにおいて、マスタノード部分およびスレーブノード部分の双方がリングバスに接続されていれば、各実施の形態はそのまま適用可能である。
【０２４８】
また、上述した本発明の各実施の形態において、リングバス上に複数のマスタノードが存在するケースについて考える。この場合、各マスタノードは、発行した周回命令に、命令発行ノードを識別する命令発行ＩＤを含めてもよい。そして、この場合、各マスタノードは、受信した周回命令に含まれる命令発行ＩＤが自ノードであれば、各実施の形態で説明したマスタノードとして機能する。また、各マスタノードは、受信した周回命令に含まれる命令発行ＩＤが自ノードでなければ、受信した周回命令をそのまま次のノードに送信すればよい。
【０２４９】
また、上述した本発明の各実施の形態において、周回命令の対象となる複数の要素が存在するケースについて考える。この場合、マスタノードは、周回命令に、対象要素を表す対象要素ＩＤを含めてもよい。そして、各スレーブノードは、周回命令に応じた処理を、対象要素に対して実行すればよい。
【０２５０】
例えば、本発明の第２、第４の実施の形態において、特定のメモリ領域に対するアクセスについて同期処理を実行するケースを考える。この場合、マスタノードは、同期命令および同期応答に、対象要素ＩＤとしてメモリ領域を特定する情報を含める。ここでは、メモリ領域を特定する情報を、メモリ領域Ａと記載する。そして、各スレーブノードは、対象要素ＩＤとしてメモリ領域Ａを含む同期命令を受信すると、この同期命令を次のノードに送信するとともに、メモリ領域Ａに対するアクセス命令の完了の確認を開始する。また、各スレーブノードは、対象要素ＩＤとしてメモリ領域Ａを含む同期応答を受信すると、メモリ領域Ａに対するアクセス命令の完了を確認次第、この同期応答を次のノードに送信すればよい。
【０２５１】
また、このように周回命令に対象要素ＩＤを含める場合、上述した本発明の各実施の形態は、複数の要素に対する周回命令を並行して実行することも可能である。例えば、メモリ領域Ａに対するアクセスの同期処理と、メモリ領域Ｂに対するアクセスの同期処理とを並行して実行したいとする。この場合、マスタノードは、対象要素ＩＤとしてメモリ領域Ａを含む同期命令および同期応答を発行し周回させる。また、マスタノードは、対象要素ＩＤとしてメモリ領域Ｂを含む同期命令および同期応答を発行し周回させる。各スレーブノードは、対象要素ＩＤとしてメモリ領域Ａを含む同期命令および同期応答を受信した際には、上述したように動作する。また、各スレーブノードは、対象要素ＩＤとしてメモリ領域Ｂを含む同期命令を受信すると、この同期命令を次のノードに送信するとともに、メモリ領域Ｂに対するアクセス命令の完了の確認を開始する。また、各スレーブノードは、対象要素ＩＤとしてメモリ領域Ｂを含む同期応答を受信すると、メモリ領域Ｂに対するアクセス命令の完了を確認次第、この同期応答を次のノードに送信すればよい。なお、この場合、各スレーブノードにおける同期確認部は、複数の対象要素の同期処理の完了の確認を並列して行うことが望ましい。また、この場合、同期確認レジスタおよび同期命令到着レジスタは、複数の対象要素ＩＤについての情報を独立して保存できるものとする。また、この場合、同期応答バッファは、複数の対象要素ＩＤを含む同期応答を独立して保存できるものとする。
【０２５２】
また、本発明の各実施の形態において、リングバス転送システムは、例えば、リングバスで接続された複数のユニットを搭載するＣＰＵ（Central Processing Unit）であってもよい。ユニットとは、例えば、ＣＰＵに搭載される複数のＣＰＵコアによりそれぞれ用いられるキャッシュメモリであってもよい。この場合、マスタノードとしては、リングバス上のバスコントローラが適用される。また、ノードとしては、各キャッシュメモリが適用される。
【０２５３】
また、本発明の各実施の形態において、マスタノードは、いずれかのスレーブノード上に実現されてもよい。また、全てのノードまたは複数のノード上にマスタノードがそれぞれ実現され、状況に応じて、いずれかのノードがマスタノードとして機能してもよい。
【０２５４】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０２５５】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０２５６】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
リングバスに接続された複数のノードを含むリングバス転送システムであって、
前記ノードのうちマスタノードは、
他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行するとともに、リングバスを周回した前記周回命令に対応する処理を実行する周回命令発行処理部と、
前記周回命令発行処理部によって発行された前記周回命令を前記リングバス上の次のノードに送信するとともに、前記リングバス上を周回した前記周回命令を前記リングバス上の前のノードから受信するリングバス送受信部と、
を有し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信し、受信した前記周回命令の内容に応じたタイミングで、前記周回命令を前記リングバス上の次のノードに送信するリングバス送受信制御部と、
前記リングバス送受信制御部によって受信された周回命令の表す処理を実行する周回命令実行部と、
を有するリングバス転送システム。
（付記２）
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令の内容に応じて、前記周回命令の受信を契機とするタイミングまたは前記周回命令の表す処理の完了を契機とするタイミングで、前記周回命令を前記次のノードに送信することを特徴とする付記１に記載のリングバス転送システム。
（付記３）
前記マスタノードの周回命令発行処理部は、前記各スレーブノードに同期処理を実行させる同期命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期命令であるとき、前記同期命令の受信を契機とするタイミングで前記同期命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記リングバス送受信制御部によって前記同期命令が受信されると、前記同期処理を開始することを特徴とする付記１または付記２に記載のリングバス転送システム。
（付記４）
前記マスタノードの周回命令発行処理部は、前記同期命令を発行後、前記同期処理の完了を確認する同期応答を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記同期応答であるとき、前記周回命令実行部による前記同期処理の完了を契機とするタイミングで、前記同期応答を前記次のノードに送信することを特徴とする付記３に記載のリングバス転送システム。
（付記５）
前記マスタノードの周回命令発行処理部は、前記各スレーブノードが有するメモリに分散格納されるブロックに対する読み出し処理を表すブロックリード命令を前記周回命令として発行し、
前記各スレーブノードのリングバス送受信制御部は、受信した周回命令が前記ブロックリード命令であるとき、前記ブロックリード命令の受信を契機とするタイミングで前記ブロックリード命令を前記次のノードに送信し、
前記各スレーブノードの周回命令実行部は、前記ブロックリード命令の内容に基づいて自ノードのメモリにおける読み出し開始アドレスを算出し、算出した読み出し開始アドレスからデータを読み出し、
前記各スレーブノードのリングバス送受信制御部は、読み出されたデータを前記リングバスを介して前記マスタノードに送信し、
前記マスタノードの周回命令発行処理部は、前記各スレーブノードから送信された前記ブロックリード命令に対応するデータが前記リングバス送受信部によって受信されると、受信された各データに基づいて、読み出し可能なブロックデータを生成することを特徴とする付記１から付記４のいずれか１つに記載のリングバス転送システム。
（付記６）
前記各ノードが複数のリングバスに接続されるとき、
前記マスタノードの周回命令発行処理部は、前記周回命令として、前記各リングバスに流すための略同一内容の周回命令を発行し、
前記各スレーブノードの周回命令実行部は、前記周回命令の内容に応じて、前記複数のリングバスから略同一内容の前記周回命令が全て到着後、または、前記複数のリングバスのいずれかから前記周回命令が到着後、または、前記周回命令の対象が自ノードであると判定した場合に、前記周回命令の表す処理を実行することを特徴とする付記１から付記５のいずれか１つに記載のリングバス転送システム。
（付記７）
前記マスタノードの周回命令発行処理部は、前記周回命令に、処理対象となる要素を指定する情報を含めて発行し、
前記各スレーブノードの周回命令実行部は、前記周回命令の表す処理を、前記処理対象の要素に関して実行することを特徴とする付記１から付記６のいずれか１つに記載のリングバス転送システム。
（付記８）
付記１から付記７のいずれか１つに記載のリングバス転送システムに含まれるマスタノード。
（付記９）
付記１から付記７のいずれか１つに記載のリングバス転送システムに含まれるスレーブノード。
（付記１０）
リングバスに接続された複数のノードのうちマスタノードは、
他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、
前記各スレーブノードは、
前記リングバス上の前のノードから前記周回命令を受信すると、
前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信し、
前記マスタノードは、
前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行するリングバス転送方法。
（付記１１）
リングバスに接続された複数のノードのうちマスタノードが、
他の前記各ノード（スレーブノード）に実行させる命令を表す周回命令を発行して前記リングバス上の次のノードに送信し、
前記リングバスを周回した前記周回命令を前記リングバス上の前のノードから受信すると、受信した周回命令に対応する処理を実行する方法。
（付記１２）
リングバスに接続された複数のノードのうち付記１１に記載の方法を実行するマスタノード以外の他のスレーブノードが、
前記リングバス上の前のノードから前記周回命令を受信すると、
前記周回命令の表す処理を実行するとともに、前記周回命令の内容に応じたタイミングで前記周回命令を前記リングバス上の次のノードに送信する方法。
【符号の説明】
【０２５７】
１、２、３、４    リングバス転送システム
１０、３０、５０、７０    マスタノード
１１、３１、５１、７１    周回命令発行処理部
１２、５２、７２    リングバス送受信部
５３    データバッファ
２０、４０、６０、８０    スレーブノード
２１、４１、６１、８１    リングバス送受信制御部
２２、４２、６２、８２    周回命令実行部
４３    同期確認部
４４    同期確認レジスタ
４５    同期応答バッファ
６６    メモリ
８７    同期命令到着レジスタ
９０、９１、９２    リングバス
２０＿１  スレーブノード
２０＿ｉ  スレーブノード
２０＿ｎ  スレーブノード
４０＿１  スレーブノード
４０＿２  スレーブノード
４０＿ｉ  スレーブノード
４０＿ｎ  スレーブノード
６０＿１  スレーブノード
６０＿２  スレーブノード
６０＿３  スレーブノード
６０＿１６  スレーブノード
８０＿１  スレーブノード
８０＿１  スレーブノード
８０＿ｉ  スレーブノード
８０＿ｋ  スレーブノード
８０＿ｋ＋１  スレーブノード
８０＿ｎ  スレーブノード
【図１】
0006536069.tif 000002
【図２】
0006536069.tif 000003
【図３】
0006536069.tif 000004
【図４】
0006536069.tif 000005
【図５】
0006536069.tif 000006
【図６】
0006536069.tif 000007
【図７】
0006536069.tif 000008
【図８】
0006536069.tif 000009
【図９】
0006536069.tif 000010
【図１０】
0006536069.tif 000011
【図１１】
0006536069.tif 000012
【図１２】
0006536069.tif 000013
【図１３】
0006536069.tif 000014
【図１４】
0006536069.tif 000015
【図１５】
0006536069.tif 000016
【図１６】
0006536069.tif 000017
【図１７】
0006536069.tif 000018
【図１８】
0006536069.tif 000019
【図１９】
0006536069.tif 000020
【図２０】
0006536069.tif 000021
【図２１】
0006536069.tif 000022
【図２２】
0006536069.tif 000023