(57)【特許請求の範囲】
【請求項１】
二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、転送元ノードと受信ノードとの間に存在するノード数をＭ（ＭはＮ未満の正の整数）とし、ｐ及びｑを正の整数とし、切上げ記号を〔  〕で表わす時、
マスター・ノードは、〔Ｎ／ｐ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送して転送動作を終了し、
データの転送を受けたスレーブ・ノードは、転送元ノードとの間にスレーブ・ノードが存在する場合には〔Ｍ／ｑ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送し、転送元ノードとの間にスレーブ・ノードが存在しない場合には転送元ノードとは反対方向に１離れたスレーブ・ノードにデータを転送して転送動作を終了し、
２回目の転送を受けたスレーブ・ノードは転送動作を停止する
ことを特徴とする二重リング・システムにおけるダウンロード方式。
【請求項２】
二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、ｒを固定の正の整数とし、ｎを歩進する正の整数とし、切上げ記号を〔  〕で表わす時、
マスター・ノードは、〔Ｎ／ｒn 〕が１になるまで〔Ｎ／ｒn 〕離れた上り及び下り方向のスレーブ・ノードに転送を繰り返し、
データの転送を受けたスレーブ・ノードは、転送を受けた時のｎに１加算した値をｎの初期値として、〔Ｎ／ｒn 〕が１になるまで〔Ｎ／ｒn 〕離れた上り及び下り方向のスレーブ・ノードに転送を繰り返し、転送元ノードとの間にスレーブ・ノードが存在しない場合には転送元ノードとは反対方向に１離れたスレーブ・ノードにデータを転送して転送動作を停止し、
２回目の転送を受けたスレーブ・ノードは転送動作を停止する
ことを特徴とする二重リング・システムにおけるダウンロード方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、二重化されたリング形式の通信路を有するシステム（以降、「二重リング・システム」と記載する。）における種々のデータのダウンロード方式に係り、特に、ダウンロードするデータの転送回数を縮減することができる二重リング・システムにおけるダウンロード方式に関する。
【０００２】
通信システムや監視制御システム等の二重リング・システムが広く実用化されている。これら二重リング・システムにおいては、二重化されたリング形式の通信路を介して音声、データ、画像などの通信情報や、監視データ及び制御データの転送を行なうだけでなく、二重リング・システムに接続されているノードを制御するプログラム・データやノードに設定する数値データ等のダウンロードも行なっている。
【０００３】
これらデータのダウンロードは、当該プログラム・データにバグが発見されて修正した時、当該プログラム・データのバージョン・アップを行なった時、及びノードに設定するデータの変更を行なった時等に実施される。
【０００４】
そして、多くの場合には二重リング・システム本来の機能を停止して種々のデータのダウンロードを行なうので、当然のことながらダウンロードに要する時間の短縮が必要である。
【０００５】
【従来の技術】
二重リング・システムによって通信システムや監視制御システムが構成される場合、該二重リング・システムには１つのマスター・ノードと複数のスレーブ・ノードが接続される。そして、ダウンロードは該マスター・ノードから該複数のスレーブ・ノードに対して行なわれる。
【０００６】
従来のダウンロード方式は、スレーブ・ノードに例えば順次１ずつ歩進するアドレスを設定しておき、マスター・ノードが隣接するスレーブ・ノードのアドレスを指定してデータを送信し、データを受信したスレーブ・ノードは当該データを格納すると共に、アドレスを１歩進、設定して隣接するスレーブ・ノードに転送し、設定されるアドレスがリング・システムにおける最大アドレスを超えた時にダウンロードを停止するというものが主である。
【０００７】
【発明が解決しようとする課題】
しかし、上記方式を採用する場合、二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とすれば、全てのスレーブ・ノードにデータのダウンロードを行なうためには（Ｎ−１）回の転送を行なわなければならず、ダウンロードのために二重リング・システム本来の機能を停止する時間が長くなるという問題がある。
【０００８】
本発明は、かかる問題に鑑み、ダウンロードするデータの転送回数を縮減し、以てダウンロードに要する時間を短縮することができる二重リング・システムにおけるダウンロード方式を提供することを目的とする。
【０００９】
【課題を解決するための手段】
第一の発明は、
二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、転送元ノードと受信ノードとの間に存在するノード数をＭ（ＭはＮ未満の正の整数）とし、ｐ及びｑを正の整数とし、切上げ記号を〔  〕で表わす時、
マスター・ノードは、〔Ｎ／ｐ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送して転送動作を終了し、
データの転送を受けたスレーブ・ノードは、転送元ノードとの間にスレーブ・ノードが存在する場合には〔Ｍ／ｑ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送し、転送元ノードとの間にスレーブ・ノードが存在しない場合には転送元ノードとは反対方向に１離れたスレーブ・ノードにデータを転送して転送動作を終了し、２回目の転送を受けたノードは転送動作を停止する
技術である。
【００１０】
第一の発明によれば、マスター・ノードから〔Ｎ／ｐ〕離れた上り方向のスレーブ・ノードは、マスター・ノードとの間にＭ1 のスレーブ・ノードが存在する場合には〔Ｍ1 ／ｑ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送し、スレーブ・ノードからデータの転送を受けたスレーブ・ノードは転送元のスレーブ・ノードとの間にＭ2 のノードが存在する場合には〔Ｍ2 ／ｑ〕離れた上り及び下り方向のスレーブ・ノードにデータを転送するという処理を行なってゆく。この結果、データを隣のスレーブ・ノードに転送するというケースが必ず生ずる。この場合には転送を受けたスレーブ・ノードは転送元である隣接するスレーブ・ノードにはデータを転送する必要がないので、転送元とは反対側のスレーブ・ノードにデータを転送する。
【００１１】
上記動作はマスター・ノードから下り方向に対しても全く同じように行なうので、最終的にはマスター・ノードから最も遠いスレーブ・ノードが両方向からのデータの転送を受ける（２回の転送を受ける）ことになる。この時点で全てのスレーブ・ノードにデータが転送され、ダウンロードが完了する。そして、両方向に同時に転送する分だけデータの転送回数が縮減される。
【００１２】
第二の発明は、
二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、ｒを固定の正の整数とし、ｎを歩進する正の整数とし、切上げ記号を〔  〕で表わす時、
マスター・ノードは、〔Ｎ／ｒn 〕が１になるまで〔Ｎ／ｒn 〕離れた上り及び下り方向のスレーブ・ノードに転送を繰り返し、
データの転送を受けたスレーブ・ノードは、転送を受けた時のｎに１加算した値をｎの初期値として、〔Ｎ／ｒn 〕が１になるまで〔Ｎ／ｒn 〕離れた上り及び下り方向のスレーブ・ノードに転送を繰り返し、転送元ノードとの間にスレーブ・ノードが存在しない場合には転送元ノードとは反対方向に１離れたスレーブ・ノードにデータを転送して転送動作を停止し、２回目の転送を受けたスレーブ・ノードは転送動作を停止する
技術である。
【００１３】
第二の発明によれば、マスター・ノードが隣接ノードに転送するようになるまで〔Ｎ／ｒn 〕離れたスレーブ・ノードに転送を行ない、マスター・ノード又は他のスレーブ・ノードから転送を受けたスレーブ・ノードは、転送元との間にスレーブ・ノードが存在する場合には〔Ｎ／ｒn 〕離れたスレーブ・ノードにデータを転送してゆく。上記動作をデータの転送を受けた全てのスレーブ・ノードが行なうので、データを隣のスレーブ・ノードに転送するというケースが必ず生ずる。この場合には転送元である隣接するスレーブ・ノードにデータを転送する必要がないので、転送元とは反対側のスレーブ・ノードにデータを転送してゆく。
【００１４】
最終的には、必ず、両方向からの転送を受ける（２回の転送を受ける）スレーブ・ノードが出て、この時点で全てのスレーブ・ノードにデータが転送され、ダウンロードが完了する。そして、両方向に同時に転送する分だけデータの転送回数が縮減される。
【００１５】
尚、上記では整数ｐ、ｑ及びｒを無作為に選定する場合を包含することを想定しているが、整数ｐ、ｑ及びｒを最適に選定すれば、データの転送元であったスレーブ・ノードの反対側のスレーブ・ノードに順次データを転送してゆく必要性がなくなり、転送回数をさらに縮減することができる。これについては、発明の実施の形態の欄において実例を以て示すことにする。
【００１６】
【発明の実施の形態】
図１は、第一の発明におけるマスター・ノードとスレーブ・ノードの動作を示すフローチャートで、図１（イ）がマスター・ノードの動作を示し、図１（ロ）がスレーブ・ノードの動作を示す。以降、図１の符号に沿って第一の発明におけるマスター・ノードとスレーブ・ノードの動作を論理的に説明し、その後に具体例を示すことにする。
【００１７】
先ず、マスター・ノードの動作は下記の通りである。
【００１８】
Ｓ１．転送先のアドレスを設定する。
【００１９】
即ち、二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、ｐを正の整数とし、切上げ記号を〔  〕で表わす時、〔Ｎ／ｐ〕離れた上り及び下り方向（リング・システムでは「Ｅ（East) 側、Ｗ（West) 側という表現をすることがあるが、本明細書では一貫して「上り」、「下り」を使用する。）のスレーブ・ノードのアドレスを設定する。今、マスター・ノードのアドレスを１とし、スレーブ・ノードのアドレスは１ずつ歩進する正の整数で表すものとすれば、具体的には、設定するアドレスは１＋〔Ｎ／ｐ〕とＮ＋１−〔Ｎ／ｐ〕である。
【００２０】
Ｓ２．ステップＳ１で設定した転送先スレーブ・ノードのアドレスと自分のアドレスを添付してデータを転送し、転送処理を終了する。
【００２１】
データには転送先スレーブ・ノードのアドレスが添付されているので、指定のスレーブ・ノードにデータを受信させることができる。又、当該データを受信したスレーブ・ノードに転送元ノードのアドレスを知らせることができ、データを受信したスレーブ・ノードは転送元ノードとの間に存在するスレーブ・ノードの数を知ることができる。
【００２２】
次に、スレーブ・ノードの動作は下記の通りである。
【００２３】
Ｓ１１．スレーブ・ノードは、転送先スレーブ・ノードのアドレスと自分のアドレスを比較して、一致していればデータを受信し、伝送フレーム上から一旦当該データを消去する。
【００２４】
Ｓ１２．ステップＳ１でのデータの受信は１回目か否かを判定する。
【００２５】
当該受信が１回目ではない、即ち、２回目に達している場合（Ｎｏ）には、これ以上転送を繰り返す必要がないので転送処理を終了する。
【００２６】
Ｓ１３．ステップＳ１２で、当該受信が１回目であると判定された場合（Ｙｅｓ）には、スパンが１であるか否か、即ち、隣のノードからの転送であるか否かを判定する。
【００２７】
これは、マスター・ノードがデータを転送する時には自分のアドレスを添付するし、後述するように、スレーブ・ノードがデータを転送する時にも自分のアドレスを添付する上、当然、スレーブ・ノードは自分のアドレスを認識できるので、データを受信したスレーブ・ノードは転送元のノードとの間に存在するスレーブ・ノード数を計算することができるから可能である。
【００２８】
Ｓ１４．ステップＳ１３で、スパンが１ではない、即ち、転送元ノードとの間にスレーブ・ノードが存在すると判定された場合（Ｎｏ）には、転送元ノードとの間に存在するスレーブ・ノード数をＭ（ＭはＮ未満の正の整数）とし、ｑを正の整数とするとき、自分のアドレスに〔Ｍ／ｑ〕を加算したアドレスと自分のアドレスから〔Ｍ／ｑ〕を減算したアドレスを設定する。
【００２９】
Ｓ１５．そして、ステップＳ１４で設定した転送先スレーブ・ノードのアドレスと自分のアドレスを添付して、ステップＳ１１で受信したデータを上り方向と下り方向に送出して転送処理を終了する。
【００３０】
Ｓ１６．ステップＳ３で、スパンが１である、即ち、転送元ノードとの間にスレーブ・ノードが存在しないと判定された場合（Ｙｅｓ）には、上り方向のノードから転送を受けたか否かを判定する。
【００３１】
Ｓ１７．ステップＳ１６で、上り方向のノードからデータの転送を受けたと判定された場合（Ｙｅｓ）には、少なくとも上り方向のノードに当該データを転送する必要がないので、自分のアドレスから１を減算したアドレスのみを設定する。
【００３２】
Ｓ１８．ステップＳ１６で、下り方向のノードからデータの転送を受けたと判定された場合（Ｎｏ）には、少なくとも下り方向のノードに当該データを転送する必要がないので、自分のアドレスから１を減算したアドレスのみを設定する。
【００３３】
Ｓ１９．ステップＳ１７及びステップＳ１８で設定したアドレスがマスター・ノードのアドレスか否かを判定する。
【００３４】
マスター・ノードのアドレスであると判定された場合（Ｙｅｓ）には、処理を終了する。
【００３５】
Ｓ２０．ステップＳ１９で、設定したアドレスがマスター・ノードのアドレスではないと判定された場合（Ｎｏ）には、転送先のアドレスと自分のアドレスを添付して、ステップＳ１１で受信したデータを送出して転送処理を終了する。
【００３６】
図２は、図１に示した動作を具体的に説明する例（その１）で、二重リング・システムを構成するノードの総数Ｎを１４とし、整数ｐを５とし、整数ｑを２とした例である。
【００３７】
図２において、数字１乃至１４（これが各ノードのアドレスでもある。）を内部に記載した円がノードで、二重の円がマスター・ノード、一重の円がスレーブ・ノードである。そして、ノード１乃至１４は二重化されたリング状の通信路に接続されているが、図の煩雑化を避けるために一本の線でこれを表現している。これは、以降の図でも同様に表現する。ここで、二重化されたリング状の通信路における伝送方向は互いに逆方向である。尚、ノードのアドレスが増える方向、即ち、ノード１からノード１４の方向を上り方向とし、ノード１がマスター・ノードであるものとする。
【００３８】
そして、ノード間をわたる曲線の矢印がデータの転送を表しており、該矢印の傍らに付した括弧付の数字が転送回数を示している。
【００３９】
Ｎ＝１４、ｐ＝５であるので、マスター・ノードであるノード１は１＋〔１４／５〕＝４と、１４＋１−〔１４／５〕＝１２を転送先アドレスに設定して両方向にデータを送出する。尚、両方向にデータを送出する場合には、必ず二重化された通信路の上り方向と下り方向の両方を使用する。
【００４０】
当該データを受信したスレーブ・ノード４は、転送元アドレス１と自分のアドレス４とから、転送元のマスター・ノード１との間に（４−１）−１＝２のスレーブ・ノードが存在することを知る。
【００４１】
ここで、ｑ＝２であるので、４＋〔２／２〕＝５と４−〔２／２〕＝３を転送先アドレスとして、自分のアドレス４も添付してスレーブ・ノードであるノード３とノード５にデータを送出する。
【００４２】
データを受信したスレーブ・ノード３は、上り方向の隣接スレーブ・ノード４からデータの転送を受けたことが判るので、下り方向に１離れたスレーブ・ノードであるノード２のみにデータを転送する。尚、一方向にデータを転送する場合には、二重化された通信路のいずれかを任意に選択すればよい。
【００４３】
スレーブ・ノード３からデータの転送を受信したスレーブ・ノード２は、隣接スレーブ・ノード３から転送を受けたので下り方向のアドレス２−１＝１を設定するが、アドレス１のノードはマスター・ノードで転送の必要性がないので転送動作を停止する。
【００４４】
一方、データを受信したスレーブ・ノード５は、下り方向の隣接スレーブ・ノード４からデータの転送を受けたことが判るので、上り方向に１離れたスレーブ・ノードであるノード６のみにデータを転送する。
【００４５】
以降、ノード６及び７も同様な転送動作を行なう。
【００４６】
上記と同じ動作は、マスター・ノードであるノード１からデータの転送を受けたスレーブ・ノード１２を起点にして行なわれる。
【００４７】
そして、上り方向の隣接ノードから転送を受けたスレーブ・ノード２は、次の転送先がマスター・ノードになるので転送処理を停止し、下り方向の隣接ノードから転送を受けたスレーブ・ノード１４は、次の転送先がマスター・ノードになるので転送処理う停止する。又、最終的に、スレーブ・ノード８へはスレーブ・ノード７とスレーブ・ノード９からデータの転送が行なわれ、スレーブ・ノード８は２回のデータの転送を受けたことを認識できる。これによってスレーブ・ノード８はデータの転送動作を停止する。
【００４８】
そして、転送の度にスパンが短くなってゆくので、２つのノード間で上り方向の通信路と下り方向の通信路が同時に使用されることは絶対にないので、図２に示した例の場合には、５回のデータの転送で全てのスレーブ・ノードへのダウンロードが終了する。従来のダウンロード方式では１４−１＝１３回の転送が必要であるので、転送回数を大幅に縮減することができる。
【００４９】
図３は、図１に示した動作を具体的に説明する例（その２）で、二重リング・システムを構成するノードの総数Ｎを１４とし、整数ｐを４とし、整数ｑを２とした例である。
【００５０】
Ｎ＝１４、ｐ＝４であるので、マスター・ノードであるノード１は１＋〔１４／４〕＝５と、１４＋１−〔１４／４〕＝１１を転送先アドレスに設定してデータを送出する。
【００５１】
当該データを受信したノード５は、転送元アドレス１と自分のアドレス５とから、転送元のマスター・ノードとの間に（５−１）−１＝３のスレーブ・ノードが存在することを知る。
【００５２】
ここで、ｑ＝２であるので、５＋〔３／２〕＝７と５−〔３／２〕＝３を転送先アドレスとして、自分のアドレス５も添付してスレーブ・ノードであるノード３とノード７にデータを送出する。
【００５３】
データを受信したノード３は、上り方向のノード５からデータの転送を受けたことが判るので、３＋〔１／２〕＝４と３−〔１／２〕＝２を転送先アドレスに設定してデータを転送する。
【００５４】
そして、ノード２は設定アドレスがマスター・ノードのアドレスであることから転送動作を停止する。一方、ノード４は下り方向の隣接ノード３からデータの転送を受けたので、上り方向に１離れたノード５にデータを転送する。
【００５５】
ノード５は、既にノード１からの転送を受けているのにノード４からも転送を受けたので、これ以上の転送動作を停止する。
【００５６】
上記と同様な動作は、ノード５からデータの転送を受けたノード７を起点にしても行なわれる。
【００５７】
又、上記と同様な動作はノート１からデータの転送を受けたノード１１を基点にしても行われる。
【００５８】
そして、ノード８へはノード７とノード９からデータの転送が行なわれ、ノード８は２回のデータの転送を受けたことを認識できる。これによってノード８はデータの転送動作を停止する。
【００５９】
即ち、図３に示した例の場合には、４回の転送で全てのノードへのデータのダウンロードが完了する。従来のダウンロード方式では１４−１＝１３回の転送が必要であるので、転送回数を大幅に縮減することができる。
【００６０】
尚、例えばスレーブ・ノード５にはスレーブ・ノード４とスレーブ・ノード６から転送を受けるが、データを転送するノードが自分のアドレスだけを添付する場合には上記転送が行なわれる。しかし、データを転送するノードがそれ以前の転送元のノードのアドレスを全て添付すれば、スレーブ・ノード４とスレーブ・ノード６はスレーブ・ノード５に転送する必要がないことを認識できるので、３回の転送で全てのスレーブ・ノードにデータがダウンロードされる。ただ、この場合には図１のフローチャートを若干修正する必要があるが、これは、図１（ロ）のステップＳ１９において、転送先ノードがマスター・ノードであるか否かを判定すると共に、転送先ノードが既に転送元ノードになった履歴があるか否かを判定するように修正するだけでよい。
【００６１】
さて、上記修正をしてｐ＝４、ｑ＝２に設定する例が、第一の発明では最も効率がよい。というのは、リング・システムを４等分してマスター・ノードからのデータの転送を行ない、マスター・ノードからのデータの転送を受けたスレーブ・ノードを起点にして上り方向と下り方向に転送元のノードと受信ノードの間に存在するノード数の１／２だけ離れたノードに対してデータの転送を行なってゆくので、リング・システムの全ての部分における転送が対象に行なわれ、図２の例のような一方向に順次転送する必要性がなくなるからである。
【００６２】
そして、ｐ＝４、ｑ＝２に設定する場合には、一般的に総転送回数は〔  〕を切上げ記号として、〔ｌｏｇ2 （Ｎ＋１）−１〕で与えられることが判る。
【００６３】
図４は、第二の発明におけるマスター・ノードとスレーブ・ノードの動作を示すフローチャートで、図４（イ）がマスター・ノードの動作を示し、図４（ロ）がスレーブ・ノードの動作を示す。以降、図４の符号に沿って第二の発明におけるマスター・ノードとスレーブ・ノードの動作を論理的に説明し、その後に具体例を示すことにする。
【００６４】
先ず、マスター・ノードの動作は下記の通りである。
【００６５】
Ｓ３１．歩進する正の整数ｎに１を設定する。
【００６６】
Ｓ３２．転送先のアドレスを設定する。
【００６７】
即ち、二重リング・システムを構成するノードの総数をＮ（Ｎは正の整数）とし、ｒを正の整数とし、転送する度に歩進する正の整数をｎとし、切上げ記号を〔  〕で表わす時、〔Ｎ／ｒn 〕離れた上り及び下り方向のスレーブ・ノードのアドレスを設定する。今、マスター・ノードのアドレスを１とし、スレーブ・ノードのアドレスは１ずつ歩進した値であるものとすれば、具体的には、設定するアドレスは１＋〔Ｎ／ｒn 〕とＮ＋１−〔Ｎ／ｒn 〕である。
【００６８】
尚、ステップＳ３１からステップＳ３２に初めて移行した時には、当然ｎ＝１である。
【００６９】
Ｓ３３．ステップＳ３２で設定した転送先スレーブ・ノードのアドレスが隣接ノードのアドレスであるか否か、即ち、スパンが１であるか否かを判定する。
【００７０】
Ｓ３４．ステップＳ３３で、スパンが１でない、即ち２以上であると判定された場合（Ｎｏ）には、ステップＳ３２で設定した転送先スレーブ・ノードのアドレスと整数ｒの値及び転送時のｎの値を添付してデータを転送する。
【００７１】
転送先スレーブ・ノードのアドレスが添付されているので、指定のスレーブ・ノードにデータを受信させることができる。又、当該データを受信したスレーブ・ノードがデータの転送時のｎの値及びｒの値が添付されているので、受信したノードに隣接ノードからの転送であるか否かを判定させることができる。
【００７２】
Ｓ３５．整数ｎを歩進して、ステップＳ３２にジャンプする。
【００７３】
Ｓ３６．ステップＳ３３で、スパンが１であると判定された場合（Ｙｅｓ）には、スパンが１であると判定された回数が１であるか否かを判定する。
【００７４】
１回目であると判定された場合（Ｙｅｓ）には、ステップＳ３２で設定した転送先スレーブ・ノードのアドレスと転送時のｎの値を添付してデータを転送し、ステップＳ３５、ステップＳ３２、ステップＳ３３を経由して再度ステップＳ３６で１回目か否かの判定を行なう。
【００７５】
前回スパンが１であったから、今回も必ずスパンが１となり、判定は１回目ではないのでＮｏとなる。これは、隣接ノードに２回目のデータ転送を行なうことを意味し、無駄な転送であるので、転送動作を停止して処理を終了する。
【００７６】
次に、スレーブ・ノードの動作を説明する。
【００７７】
Ｓ４１．スレーブ・ノードは、転送先スレーブ・ノードのアドレスと自分のアドレスを比較して、一致していればデータを受信し、伝送フレーム上から一旦当該データを消去する。
【００７８】
Ｓ４２．ステップＳ４１でのデータの受信は１回目か否かを判定する。
当該受信が１回目ではない、即ち、２回目に達している場合（Ｎｏ）には、処理を終了する。
【００７９】
Ｓ４３．ステップＳ４２で、当該受信が１回目であると判定された場合（Ｙｅｓ）には、隣のノードからの転送であるか否かを判定する。
【００８０】
これは、マスター・ノードがデータを転送する時には．歩進する整数ｎの値するし、当然、スレーブ・ノードにはリング・システムを構成する総ノード数Ｎを格納しておくことができるので、スレーブ・ノードは〔Ｎ／ｒn 〕を計算することによって転送元のノードとの間に存在するスレーブ・ノード数を知ることができるために可能なことである。
【００８１】
Ｓ４４．ステップＳ４３で、隣のノードからの転送ではない、即ち、スパンが２以上であると判定された場合（Ｎｏ）には、整数ｎを歩進する。
【００８２】
Ｓ４５．転送先のアドレスを設定する。
【００８３】
即ち、〔Ｎ／ｒn+1 〕離れた上り及び下り方向のスレーブ・ノードのアドレスを設定する。
【００８４】
Ｓ４６．ステップＳ４５で設定した転送先スレーブ・ノードのアドレスが隣接ノードのアドレスであるか否か、即ち、スパンが１であるか否かを判定する。
【００８５】
Ｓ４７．ステップＳ４６で、スパンが１でない、即ち２以上であると判定された場合（Ｎｏ）には、ステップＳ４５で設定した転送先スレーブ・ノードのアドレスと転送時のｎの値を添付してデータを転送する。
【００８６】
転送先スレーブ・ノードのアドレスが添付されているので、指定のスレーブ・ノードにデータを受信させることができ、且つ、当該データを受信したスレーブ・ノードがデータの転送を行なう時に設定すべき歩進する整数の値を知らせると共に隣接ノードからの転送であるか否かを判定させることができる。
【００８７】
そして、ステップＳ４４にジャンプする。
【００８８】
Ｓ４８．ステップＳ４６で、スパンが１であると判定された場合（Ｙｅｓ）には、スパンが１であると判定された回数が１であるか否かを判定する。
【００８９】
１回目であると判定された場合（Ｙｅｓ）には、ステップＳ４５で設定した転送先スレーブ・ノードのアドレスと転送時のｎの値を添付してデータを転送し、ステップＳ４４、ステップＳ４５、ステップＳ４６を経由して再度ステップＳ４８で１回目か否かの判定を行なう。
【００９０】
前回スパンが１であったから、今回も必ずスパンが１となり、判定は１回目ではないのでＮｏとなる。これは、隣接ノードに２回目のデータ転送を行なうことを意味し、無駄な転送であるので、転送動作を停止して処理を終了する。
【００９１】
Ｓ４９．ステップＳ４３で、スパンが１である、即ち、転送元ノードとの間にスレーブ・ノードが存在しないと判定された場合（Ｙｅｓ）には、上り方向のノードから転送を受けたか否かを判定する。
【００９２】
Ｓ５０．ステップＳ４９で、上り方向のノードからデータの転送を受けたと判定された場合（Ｙｅｓ）には、少なくとも上り方向のノードに当該データを転送する必要がないので、自分のアドレスから１を減算したアドレスのみを設定する。
【００９３】
Ｓ５１．ステップＳ４９で、下り方向のノードからデータの転送を受けたと判定された場合（Ｎｏ）には、少なくとも下り方向のノードに当該データを転送する必要がないので、自分のアドレスから１を減算したアドレスのみを設定する。
【００９４】
Ｓ５２．ステップＳ５０及びステップＳ５１で設定したアドレスがマスター・ノードのアドレスか否かを判定する。
【００９５】
マスター・ノードのアドレスであると判定された場合（Ｙｅｓ）には、処理を終了する。
【００９６】
Ｓ５３．ステップＳ５２で、設定したアドレスがマスター・ノードのアドレスではないと判定された場合（Ｎｏ）には、転送先のアドレスと自分のアドレスを添付して、ステップＳ４１で受信したデータを送出して処理を終了する。
【００９７】
図５は、図４に示した動作を具体的に説明する例（その１）で、二重リング・システムを構成するノードの総数Ｎを１４とし、整数ｒを４とした例である。
【００９８】
Ｎ＝１４、ｒ＝４であるので、マスター・ノードであるノード１は１＋〔１４／４1〕＝５と、１４＋１−〔１４／４1〕＝１１を転送先アドレスに設定してデータを送出する。
【００９９】
次いで、マスター・ノードはｎを歩進して１＋〔１４／４2〕＝２と、１４＋１−〔１４／４2〕＝１４を転送先アドレスに設定する。この時、転送先ノードとの間のスパンが１であるが、スパン１で転送するのは初めてであるので、スレーブ・ノード２と１４にデータを転送する。
【０１００】
更に、マスター・ノードはｎを歩進して１＋〔１４／４3〕＝２と、１４＋１−〔１４／４3〕＝１４を転送先アドレスに設定する。この時、転送先ノードとの間のスパンが１であり、スパン１で転送するのは２回目になるので、データの転送を終了する。
【０１０１】
一方、マスター・ノードからデータの転送を受けたスレーブ・ノード５は、リング・システムのノード総数１４、整数ｒ＝４及び転送時のｎ＝１とから、転送元ノードとの間に〔１４／４1〕−１＝３のスレーブ・ノードが存在することを知る。
【０１０２】
従って、転送先アドレスとして５＋〔１４／４2 〕＝６及び５−〔１４／４2 〕＝４を設定する。これは隣接ノードのアドレスであるが、隣接ノードへの転送は初めてであるので、ｒ＝４とｎ＝２を添付してデータを転送する。
【０１０３】
次いで、スレーブ・ノード５はｎを歩進して転送先アドレスとして５＋〔１４／４3 〕及び５−〔１４／４3 〕を設定する。これは隣接ノードのアドレスであり、隣接ノードへの転送は２回目となるので、データの転送動作を終了する。
【０１０４】
さて、スレーブ・ノード５からデータの転送を受けたスレーブ・ノード４は、上り方向の隣接ノードからの転送であることが判るので下り方向にアドレスが１離れたスレーブ・ノード３のみにデータを転送して処理を終了し、マスター・ノード１から転送を受けたスレーブ・ノード２も又上り方向にアドレスが１離れたスレーブ・ノード３のみにデータを転送して処理を終了する。
【０１０５】
スレーブ・ノード３は、スレーブ・ノード２とスレーブ・ノード３から転送を受けたので直ちに転送動作を終了する。
【０１０６】
そして、スレーブ・ノード５からの転送を受けたスレーブ・ノード６以降のスレーブ・ノードでも同様に一方向に転送をしてゆく。
【０１０７】
一方、マスター・ノード１から転送を受けたスレーブ・ノード１１を起点とする転送動作も上記と同様である。そして、スレーブ・ノード８は両側からデータの転送を受けた時点で転送動作を終了する。
【０１０８】
即ち、図５に示した例の場合には、４回のデータの転送で全てのスレーブ・ノードへのダウンロードが終了する。従来のダウンロード方式では１４−１＝１３回の転送が必要であるので、転送回数を大幅に縮減することができる。
【０１０９】
図６は、図４に示した動作を具体的に説明する例（その２）で、二重リング・システムを構成するノードの総数Ｎを１４とし、整数ｒを３とした例である。
【０１１０】
Ｎ＝１４、ｒ＝３であるので、マスター・ノードであるノード１は１＋〔１４／３1〕＝６と、１４＋１−〔１４／３1〕＝１０を転送先アドレスに設定してデータを送出する。
【０１１１】
次いで、マスター・ノードはｎを歩進して１＋〔１４／３2〕＝３と、１４＋１−〔１４／３2〕＝１３を転送先アドレスに設定してデータを送出する。
【０１１２】
次いで、マスター・ノードはｎを歩進して１＋〔１４／３3〕＝２と、１４＋１−〔１４／３3〕＝１４を転送先アドレスに設定する。この時、転送先ノードとの間のスパンが１であるが、スパン１で転送するのは初めてであるので、スレーブ・ノード２と１４にデータを転送する。
【０１１３】
更に、マスター・ノードはｎを歩進して１＋〔１４／４4〕＝２と、１４＋１−〔１４／４4〕＝１４を転送先アドレスに設定する。この時、転送先ノードとの間のスパンが１であり、スパン１で転送するのは２回目になるので、データの転送を終了する。
【０１１４】
一方、マスター・ノードからデータの転送を受けたスレーブ・ノード６は、リング・システムのノード総数１４、整数ｒ＝４及び転送時のｎ＝１とから、転送元ノードとの間に〔１４／３1〕−１＝４のスレーブ・ノードが存在することを知る。
【０１１５】
従って、転送先アドレスとして６＋〔１４／３2 〕＝８及び６−〔１４／３2 〕＝４を設定する。これは隣接ノードのアドレスではないので、両方向にｒ＝４とｎ＝２を添付してデータを転送する。
【０１１６】
次いで、転送先アドレスとして６＋〔１４／３3 〕＝７及び６−〔１４／３3 〕＝５を設定する。これは隣接ノードのアドレスであるが、隣接ノードへの転送は初めてであるので、ｒ＝４とｎ＝２を添付してデータを転送する。
【０１１７】
更に、スレーブ・ノード６はｎを歩進して転送先アドレスとして６＋〔１４／３4 〕及び６−〔１４／３4 〕を設定する。これは隣接ノードのアドレスであり、隣接ノードへの転送は２回目となるので、データの転送動作を終了する。
【０１１８】
さて、スレーブ・ノード６からデータの転送を受けたスレーブ・ノード４は、隣接ノードからの転送ではないことが判るので上り方向の隣接ノード５と下り方向の隣接ノード３にデータの転送をし、マスター・ノード１から転送を受けたスレーブ・ノード３も、隣接ノードからの転送ではないことが判るので上り方向の隣接ノード４と下り方向の隣接ノード２にデータの転送をする。
【０１１９】
この時、ノード２乃至ノード５は２回目の転送を受けることになるので、ノード２乃至ノード５は転送処理を終了する。
【０１２０】
他のスレーブ・ノードにおいても同様な転送動作が行なわれ、図６の例の場合には３回の転送で全てのスレーブ・ノードにデータの転送を行なうことができる。従来のダウンロード方式では１４−１＝１３回の転送が必要であるので、転送回数を大幅に縮減することができる。
【０１２１】
さて、ｒ＝３に設定する図６の例が、第二の発明では最も効率がよい。というのは、リング・システムを３等分してマスター・ノードからのデータの転送をスパンを変えて行ない、マスター・ノードからのデータの転送を受けたスレーブ・ノードを起点にして上り方向と下り方向にデータの転送をスパンを変えて行なうので、リング・システムの全ての部分における転送が対象に行なわれ、図５の例のような一方向に順次転送する必要性がなくなるからである。
【０１２２】
そして、ｒ＝３に設定する場合には、一般的に総転送回数は〔  〕を切上げ記号として、〔ｌｏｇ3 Ｎ〕で与えられることが判る。
【０１２３】
図７は、ノード総数に対する転送回数を示す表（その１）、図８は、ノード総数に対する転送回数を示す表（その２）で、第一の発明の場合にはｐ＝４、ｑ＝２として転送元ノードのアドレスを全て添付して転送する場合、第二の発明の場合にはｒ＝３とした場合の転送回数を示してある。
【０１２４】
図７において、ノード数が２、即ちマスター・ノードと１つのスレーブ・ノードでリング・システムが構成される場合には、当然、従来の技術と本発明の技術には差が生じないが、ノード総数が３以上では本発明の技術の方が転送回数が必ず少ないことが判る。
【０１２５】
又、図８に示すようにノード総数が多くなればなるほど転送回数の低減効果が大きいことが判る。
【０１２６】
さて、上記では転送先を決めるアルゴリズムのみを記載し、データの送信と受信及び再送信については記載していないが、データの送信と受信及び再送信の技術は二重リング・システムにおける通常の技術で、記載する必要がないからである。
【０１２７】
【発明の効果】
第一の発明によれば、マスター・ノードから〔Ｎ／ｐ〕離れた上り方向のスレーブ・ノードは、マスター・ノードとの間にＭ1 のノードが存在する場合には〔Ｍ1 ／ｑ〕離れた上り及び下り方向のノードにデータを転送し、スレーブ・ノードからデータの転送を受けたノードは転送元のノードとの間にＭ2 のノードが存在する場合には〔Ｍ2 ／ｑ〕離れた上り及び下り方向のノードにデータを転送するという処理を行なってゆく。この結果、データを隣のノードに転送するというケースが必ず生ずる。この場合には転送を受けたノードは転送元の隣のノードに転送する必要がないので、転送元とは反対側のノードにデータを転送してゆく。
【０１２８】
上記動作はマスター・ノードから下り方向に対しても全く同じように行なうので、最終的にはマスター・ノードから最も遠いノードが両方向からの転送を受ける（２回の転送を受ける）ことになる。この時点で全てのスレーブ・ノードにデータが転送されている。そして、両方向に同時に転送する分だけデータの転送回数が縮減される。
【０１２９】
第二の発明によれば、マスター・ノード隣接ノードに転送するようになるまで〔Ｎ／ｒn 〕離れたスレーブ・ノードに転送を行ない、マスター・ノード又は他のスレーブ・ノードから転送を受けたスレーブ・ノードは、転送元との間にノードが存在する場合には〔Ｎ／ｒn 〕離れたノードにデータを転送してゆく。上記動作をデータの転送を受けた全てのスレーブ・ノードが行なうので、データを隣のノードに転送するというケースが必ず生ずる。この場合には転送元の隣のノードに転送する必要がないので、転送元とは反対側のノードにデータを転送してゆく。
【０１３０】
最終的には両方向からの転送を受ける（２回の転送を受ける）ノードが出て、この時点で全てのスレーブ・ノードにデータが転送されている。そして、両方向に同時に転送する分だけデータの転送回数が縮減される。
【図面の簡単な説明】
【図１】  第一の発明におけるマスター・ノードとスレーブ・ノードの動作を示すフローチャート。
【図２】  図１に示した動作を具体的に説明する例（その１）。
【図３】  図１に示した動作を具体的に説明する例（その２）。
【図４】  第二の発明におけるマスター・ノードとスレーブ・ノードの動作を示すフローチャート。
【図５】  図４に示した動作を具体的に説明する例（その１）。
【図６】  図４に示した動作を具体的に説明する例（その２）。
【図７】  ノード総数に対する転送回数（その１）。
【図８】  ノード総数に対する転送回数（その２）。
【図１】
0003911974.tif 000002
【図２】
0003911974.tif 000003
【図３】
0003911974.tif 000004
【図４】
0003911974.tif 000005
【図５】
0003911974.tif 000006
【図６】
0003911974.tif 000007
【図７】
0003911974.tif 000008
【図８】
0003911974.tif 000009