(57)【特許請求の範囲】
【請求項１】
複数のノード装置がリング状に双方向のリンクによって接続され、さらに前記各ノード装置にそれぞれ異なる処理装置が接続され、処理装置からのパケットをノード装置間で送受信しつつ目的の処理装置に到達させる双方向リングネットワークに於いて、
前記各ノード装置には、リングに沿って順にノード番号が付されており、且つ、
前記各ノード装置が、
自ノード装置に接続されている処理装置からのパケットを保持して到着順にサービスする入力バッファと、
デッドロック回避のための切断点とするノード装置のノード番号を記録する書き換え可能な切断点記録レジスタと、
前記入力バッファに保持されているパケットの出力先に関し、前記双方向のリンクの内のどちらに送出すべきかを判定するルート決定手段であって、前記切断点記録レジスタの値によって示される切断点のノード装置が自ノード装置である場合、および前記入力バッファに保持されているパケットの送信先のノード装置である場合は、パケットの送出方向を任意と判定し、それ以外の場合は、自ノード装置と前記切断点のノード装置との間の所定方向のホップ数と、前記パケットの送信先のノード装置と前記切断点のノード装置との間の前記所定方向のホップ数とに基づいてパケットの送出方向を決定するルート決定手段と、
を有することを特徴とする双方向リングネットワーク。
【請求項２】
請求項１記載の双方向リングネットワークにおいて、
前記各ノード装置が、
自ノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第一の減算器と、
前記入力バッファに保持されているパケットの送信先のノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第二の減算器とを有し、
前記ルート決定手段が、
前記第一の減算器の出力が０である場合は、パケットの送出方向を任意と判定する第一のステップと、
前記第二の減算器の出力が０である場合は、パケットの送出方向を任意と判定する第二のステップと、
前記第一の減算器の出力値と前記第二の減算器の出力値とを符号なし整数として比較し、前者の方が大きい場合にはパケットの送出方向をノード番号が降順となる逆方向に、後者の方が大きい場合にはパケットの送出方向をノード番号が昇順となる順方向に決定する第三のステップとを行う構成を有することを特徴とする双方向リングネットワーク。
【請求項３】
請求項１記載の双方向リングネットワークにおいて、
前記切断点記録レジスタには、順方向ループの切断点にするノード装置のノード番号が記録され、且つ、
前記ルート決定手段が、
前記切断点記録レジスタの値によって示される順方向ループの切断点とするノード装置が、自ノード装置である場合は、パケットの送出方向を任意と判定し、
前記順方向ループの切断点のノード装置よりも順方向ループに沿って１つ先のノード装置が、自ノード装置である場合は、パケットの送出方向を任意と判定し、
それ以外の場合は、自ノード装置と前記順方向ループの切断点のノード装置との間の所定方向のホップ数と、パケットの送信先のノード装置と前記順方向ループの切断点のノード装置との間の前記所定方向のホップ数とに基づいて、パケットの送出方向を決定する構成を有することを特徴とする双方向リングネットワーク。
【請求項４】
請求項１記載の双方向リングネットワークにおいて、
前記切断点記録レジスタには、順方向ループの切断点とするノード装置のノード番号が記録され、
前記各ノード装置が、
自ノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第一の減算器と、
前記入力バッファに保持されているパケットの送信先のノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第二の減算器とを有し、
前記ルート決定手段が、
前記第一の減算器の出力が０である場合は、パケットの送出方向を任意と判定する第一のステップと、
前記第一の減算器の出力が１である場合は、パケットの送出方向を任意と判定する第二のステップと、
前記切断点記録レジスタの値が０であり、且つ自ノード装置固有のノード番号が双方向リングネットワーク中で最大の値である場合は、パケットの送出方向を任意と判定する第三のステップと、
前記第二の減算器の出力が０である場合は、パケットの送出方向をノード番号が昇順となる順方向に決定する第四のステップと、
前記第一の減算器の出力値と前記第二の減算器の出力値とを符号なし整数として比較し、前者の方が大きい場合はパケットの送出方向をノード番号が降順になる逆方向に、後者の方が大きい場合はパケットの送出方向をノード番号が昇順になる順方向に決定する第五のステップとを行う構成を有することを特徴とする双方向リングネットワーク。
【請求項５】
複数のノード装置がリング状に双方向のリンクによって接続され、さらに前記各ノード装置にそれぞれ異なる処理装置が接続され、処理装置からのパケットをノード装置間で送受信しつつ目的の処理装置に到達させる双方向リングネットワークに於いて、
前記各ノード装置には、リングに沿って順にノード番号が付されており、且つ、
前記各ノード装置が、
自ノード装置に接続されている処理装置からのパケットを保持して到着順にサービスする入力バッファと、
デッドロック回避のための切断点とするノード装置のノード番号を記録する書き換え可能な切断点記録レジスタと、
前記入力バッファに保持されているパケットの出力先に関し、前記切断点記録レジスタの値から、前記双方向のリンクの内のどちらに送出すべきかを判定するルート決定手段と、
切断点記録レジスタに記録されているノード番号の変更を指示する制御用特殊パケットが、自ノード装置に接続されている処理装置、もしくは隣接するノード装置から到着した場合、前記制御用特殊パケットに先行するパケットの処理が完了してから自ノード装置内の切断点記録レジスタの値を前記制御用特殊パケットの指示に従って更新する構成を有することを特徴とする双方向リングネットワーク。
【請求項６】
請求項５記載の双方向リングネットワークにおいて、
前記各ノード装置が、
自ノード装置に接続されている処理装置から到着した、前記切断点記録レジスタに記録されているノード番号の変更を指示する制御用特殊パケットを隣接するノード装置の内の一方のノード装置へ送出する構成を有すると共に、隣接する一方のノード装置から到着した制御用特殊パケットを隣接する他方のノード装置へ送出する構成を有することを特徴とする双方向リングネットワーク。
【請求項７】
請求項６記載の双方向リングネットワークにおいて、
前記各ノード装置が、
自ノード装置に接続されている処理装置から制御用特殊パケットが到着した場合、該制御用特殊パケットの内容と現時点の順方向ループの切断点のノード装置とに基づいて切断点の双方向リングネットワーク上での移動方向を判断し、前記制御用特殊パケットが流れる方向が前記切断点の移動方向とは反対の方向になるように、前記制御用特殊パケットを隣接するノード装置の内の何れか一方のノード装置へ送出する構成を有することを特徴とする双方向リングネットワーク。
【請求項８】
請求項４記載の双方向リングネットワークに於いて、
前記ルート決定手段が、
前記第一のステップにおいて送出方向を任意と判定した場合にはパケットの送出方向をノード番号が降順となる方向に決定し、前記第二もしくは第三のステップにおいて送出方向を任意と判定した場合にはノード番号が昇順となる方向にパケットの送出方向を決定する構成を有することを特徴とする双方向リングネットワーク。
【請求項９】
自ノード装置に接続される処理装置からのパケットを保持して到着順にサービスする入力バッファと、
デッドロック回避のための切断点とするノード装置のノード番号を記録する書き換え可能な切断点記録レジスタと、
前記入力バッファに保持されているパケットの出力先に関し、自ノード装置に接続される双方向のリンクの内のどちらに送出すべきかを判定するルート決定手段であって、前記切断点記録レジスタの値によって示される切断点のノード装置が自ノード装置である場合、および前記入力バッファに保持されているパケットの送信先のノード装置である場合は、パケットの送出方向を任意と判定し、それ以外の場合は、自ノード装置と前記切断点のノード装置との間の所定方向のホップ数と、前記パケットの送信先のノード装置と前記切断点のノード装置との間の前記所定方向のホップ数とに基づいてパケットの送出方向を決定するルート決定手段と、
を有することを特徴とするノード装置。
【請求項１０】
請求項９記載のノード装置において、
自ノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第一の減算器と、
前記入力バッファに保持されているパケットの送信先のノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第二の減算器とを有し、且つ、
前記ルート決定手段が、
前記第一の減算器の出力が０である場合は、前記パケットの送出方向を任意と判定する第一のステップと、
前記第二の減算器の出力が０である場合は、前記パケットの送出方向を任意と判定する第二のステップと、
前記第一の減算器の出力値と前記第二の減算器の出力値とを符号なし整数として比較し、前者の方が大きい場合にはパケットの送出方向をノード番号が降順となる逆方向に、後者の方が大きい場合にはパケットの送出方向をノード番号が昇順となる順方向に決定する第三のステップとを行う構成を有することを特徴とするノード装置。
【請求項１１】
請求項９記載のノード装置において、
前記切断点記録レジスタには、順方向ループの切断点にするノード装置のノード番号が記録され、
前記ルート決定手段が、
前記切断点記録レジスタの値によって示される順方向ループの切断点とするノード装置が自ノード装置である場合は、パケットの送出方向を任意と判定し、
前記順方向ループの切断点のノード装置よりも順方向ループに沿って１つ先のノード装置が自ノード装置である場合は、パケットの送出方向を任意と判定し、
それ以外の場合は、自ノード装置と前記順方向ループの切断点のノード装置との間の所定方向のホップ数と、前記パケットの送信先のノード装置と前記順方向ループの切断点のノード装置との間の前記所定方向のホップ数とに基づいてパケットの送出方向を決定する構成を有することを特徴とするノード装置。
【請求項１２】
請求項９記載のノード装置において、
前記切断点記録レジスタには、順方向ループの切断点とするノード装置のノード番号が記録され、且つ、
自ノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第一の減算器と、
前記入力バッファに保持されているパケットの送信先のノード装置のノード番号から前記切断点記録レジスタに記録されているノード番号を減算し、結果を符号付整数で出力する第二の減算器とを有し、且つ、
前記ルート決定手段が、
前記第一の減算器の出力が０である場合は、パケットの送出方向を任意と判定する第一のステップと、
前記第一の減算器の出力が１である場合は、パケットの送出方向を任意と判定する第二のステップと、
前記切断点記録レジスタの値が０であり、且つ自ノード装置固有のノード番号が双方向リングネットワーク中で最大の値である場合は、パケットの送出方向を任意と判定する第三のステップと、
前記第二の減算器の出力が０である場合は、パケットの送出方向をノード番号が昇順となる順方向に決定する第四のステップと、
前記第一の減算器の出力値と前記第二の減算器の出力値とを符号なし整数として比較し、前者の方が大きい場合はパケットの送出方向をノード番号が降順となる逆方向に、後者の方が大きい場合はパケットの送出方向をノード番号が昇順となる順方向に決定する第五のステップとを行う構成を有することを特徴とするノード装置。
【請求項１３】
自ノード装置に接続される処理装置からのパケットを保持して到着順にサービスする入力バッファと、
デッドロック回避のための切断点とするノード装置のノード番号を記録する書き換え可能な切断点記録レジスタと、
前記入力バッファに保持されているパケットの出力先に関し、前記切断点記録レジスタの値から、自ノード装置に接続される双方向のリンクの内のどちらに送出すべきかを判定するルート決定手段と、
切断点記録レジスタに記録されているノード番号の変更を指示する制御用特殊パケットが、自ノード装置に接続される処理装置、もしくは自ノード装置に双方向のリンクによって接続される隣接ノード装置から到着した場合、前記制御用特殊パケットに先行するパケットの処理が完了してから自ノード装置内の切断点記録レジスタの値を前記制御用特殊パケットの指示に従って更新する構成を有することを特徴とするノード装置。
【請求項１４】
請求項１３記載のノード装置において、
自ノード装置に接続される処理装置から到着した、切断点記録レジスタに記録されているノード番号の変更を指示する制御用特殊パケットを、隣接するノード装置の内の一方のノード装置へ送出する構成を有すると共に、隣接する一方のノード装置から到着した制御用特殊パケットを隣接する他方のノード装置へ送出する構成を有することを特徴とするノード装置。
【請求項１５】
請求項１４記載のノード装置に於いて、
自ノード装置に接続される処理装置から制御用特殊パケットが到着した場合、該制御用特殊パケットの内容と前記切断点記録レジスタの内容とに基づいて切断点の双方向リングネットワーク上での移動方向を判断し、前記制御用特殊パケットが流れる方向が前記切断点の移動方向とは反対の方向になるように、前記制御用特殊パケットを隣接するノード装置の内の一方のノード装置へ送出する構成を有することを特徴とするノード装置。
【請求項１６】
請求項１２記載のノード装置に於いて、
前記ルート決定手段が、
前記第一のステップにおいて送出方向を任意と判定した場合には、パケットの送出方向をノード番号が降順となる逆方向に決定し、前記第二もしくは第三のステップにおいて送出方向を任意と判定した場合には、パケットの送出方向をノード番号が昇順となる順方向に決定する構成を有することを特徴とするノード装置。
【請求項１７】
複数のノード装置がリング状に双方向のリンクによって接続され、さらに前記各ノード装置にそれぞれ異なる処理装置が接続され、処理装置からのパケットをノード装置間で送受信しつつ目的の処理装置に到達させる双方向リングネットワークであって、
前記各ノード装置には、リングに沿って順にノード番号が付されており、且つ、
前記各ノード装置が、
自ノード装置に接続されている処理装置からのパケットを保持して到着順にサービスする入力バッファと、
デッドロック回避のための切断点とするノード装置のノード番号を記録する書き換え可能な切断点記録レジスタと、
前記入力バッファに保持されているパケットの出力先に関し、前記切断点記録レジスタの値から、前記双方向のリンクの内のどちらに送出すべきかを判定するルート決定手段と、
を有する双方向リングネットワークを制御する双方向リングネットワーク制御方法であって、
自ノード装置に接続されている処理装置もしくはリングを形成している隣接したノード装置から切断点記録レジスタに記録されているノード番号の変更を指示する制御用特殊パケットが到着した場合、前記制御用特殊パケットに先行するパケットの処理が完了してから前記制御用特殊パケットによって、自ノード装置内の切断点記録レジスタの値が更新されることを特徴とする双方向リングネットワーク制御方法。
【請求項１８】
請求項１７記載の双方向リングネットワーク制御方法において、
前記処理装置から到着した制御用特殊パケットが、
前記処理装置に接続されているノード装置内の切断点記録レジスタの値を更新し、
さらにリングネットワーク上を各ノード装置の前記切断点記録レジスタの内容を更新しつつ一周することにより、
デッドロックを回避するための依存関係の切断点を双方向リングネットワーク上で移動させることを特徴とする双方向リングネットワーク制御方法。
【請求項１９】
請求項１８記載の双方向リングネットワーク制御方法において、
前記制御用特殊パケットは、
デッドロックを回避するための依存関係の切断点を双方向リングネットワーク上で移動させる方向とは逆の回転方向にリングネットワーク上を一周することを特徴とする双方向リングネットワーク制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ間のデータ通信ネットワークに関し、さらに詳しくは複数のノード装置をリング状に接続して双方向に通信する双方向リングネットワークに関する。
【０００２】
【従来の技術】
コンピュータネットワークの一つの方式としてリングネットワークがある。一般に複数のノード装置をリング状に接続したものをリングネットワークと呼ぶが、各ノード装置間の通信が一方向にのみ可能であるものを単方向リングネットワーク、各ノード装置間が双方向に通信可能であるものを双方向リングネットワークと呼ぶ。リングネットワークにはノード装置数に比してリンク数が比較的少ないため、安価に実現できるというメリットがある。
【０００３】
リングネットワークによってデータ通信を行う場合の一つの課題は、デッドロックの回避である。デッドロックとはリソース獲得時の競合によって処理が先に進めなくなる「すくみ」の状態を指す。一般にパケット交換方式によって通信する場合には、各パケットがノード装置内バッファをリソースとして取り合うことになる。このときリソースの依存関係がループを構成すると、デッドロックの可能性がある。
【０００４】
４ノードリングネットワークでデッドロックに陥るケースを説明する。図１０は４ノードリングネットワークを示している。各ノード装置1001(0) 〜1001(3) は計算機などの処理装置1003(0) 〜1003(3) と一対一に接続されており、隣接するノード装置から入力されたパケットを一つだけ保持するバッファ1002(0) 〜1002(3) と、処理装置1003(0) 〜1003(3) から入力されたパケットを保持するバッファ1004(0) 〜1004(3) とを有している。
【０００５】
入力されたパケットが自分（に接続された処理装置）宛でなかった場合にはリング接続された次のノード装置にパケットをフォワードする。しかし、パケットを次のノード装置に渡すためには次のノード装置のバッファが空いている必要がある。バッファ1002(0) 〜1002(3) にはそれぞれ固有の宛先が記述されたパケット1005(0) 〜1005(3) が保持されている。図中のパケット1005(0) 〜1005(3) に記述された数字1,2,3,0 は宛先のノード番号を示している。例えばノード装置1001(1) 内のバッファ1002(1) にはノード装置1001(2) に通信すべきパケット1005(2) が保持されているが、宛先のノード装置1001(2) 内のバッファ1002(2) には既に別のパケット1005(3) が保持されており、ノード装置1001(1) はノード装置1001(2) にパケット1005(2) を受け渡すことができない。すべてのノード装置において上記と同様の状態が発生するため、すべてのノード装置がリソースが空くのを待ちつづけるすくみ状態、すなわちデッドロックに陥る。
【０００６】
これは蓄積交換によるルーティングを行っている場合だが、ワームホールルーティングの場合にもリソースとしてリンクを取り合うために、同様にデッドロックに陥ることがある。
【０００７】
富田眞治著「並列コンピュータ工学」（昭晃堂,1996 ）p.42〜p.47では、「相互結合網におけるデッドロック」として４ノードで構成された単方向リングネットワークのデッドロックの例が紹介され、以下の解決策が提示されている。
【０００８】
１．チャネルの共有化、すなわち仮想チャネルによって依存関係のサイクルを切断する。さらにノード装置内のバッファ数、仮想チャネル数を増やして任意のノードペア間の通信において競合を回避するよう構成した構造化バッファプールと呼ばれる方式もある。
【０００９】
２．チャネルが獲得できない場合に獲得してきたチャネルを解放する。しかし、この場合チャネル解放のためのバッファに関してデッドロックの問題が発生するため、この方式はデッドロックの根本的な解決にはならない。
【００１０】
３．一度に全チャネルを獲得する。この方式は集中制御を必要とし、各ノード装置による分散制御では実現困難である。
【００１１】
４．特定のパケットが優先的にチャネルを獲得する方式。この方式はデッドロックの可能性がない場合にも特定のパケットが優先的にチャネルを獲得することを回避できず、非効率となる。
【００１２】
５．リングの切断、すなわちリソースの依存関係が構成するサイクルを断ち切る。但し単方向リングネットワークにおいては直接通信不可能なノード装置ができてしまうため、通信を中継ノードにおいて一旦完結させるか、あるいは逆方向のリングを付加するなどの対策を取る必要がある。
【００１３】
デッドロックの回避方法としてもっとも一般的なのは、１．に示した仮想チャネルを使用してリソースの依存関係にあるサイクルを断ち切ることである。仮想チャネルの基本的な考え方は、物理的なリンクの本数を増やさずに仮想的にノード装置間のチャネル本数を増やし、チャネルの依存関係がサイクルを構成しないようにリソースの獲得を制御することである。これはノード装置内に複数のバッファを用意し、パケット送信先などによって使用バッファを決定することによって実現されている。これらの手法は Dallyらの米国特許（U.S. patent 4,933,933 Torus routing chip）などに詳述されている。
【００１４】
このような仮想チャネルによってデッドロックを回避した場合には、チャネルの数分のバッファを用意する必要があり、複数のバッファを制御するための制御回路も複雑化する。また、必要となるチャネル数はノード数に依存するため、ノード装置の構成によってネットワークの大きさが制限され、拡張性に乏しいという問題もある。
【００１５】
構造化バッファプールの場合にもノード装置内のバッファ数増加と、それに伴う制御回路の複雑化の問題は避けられない。
【００１６】
次に５．のリングの切断について説明する。
【００１７】
逆方向のリング接続を付加した４ノード双方向リングネットワークにおいて、ルーティングの方向を制限することによって特定チャネル間の依存関係を解消し、デッドロックを回避する例を図１１に示す。
【００１８】
図１１は４ノード双方向リングネットワークの構成図である。通信リンクC1〜C8によって双方向に通信可能なリング状に接続されたノード装置1101(0) 〜1101(3) は、それぞれ計算機などの処理装置1102(0) 〜1102(3) と一対一に接続されている。各ノード装置1101(0) 〜1101(3) は時計回り方向のリンクから受信したパケットを保持するバッファ1103(0) 〜1103(3) と、反時計回り方向のリンクから受信したパケットを保持するバッファ1104(0) 〜1104(3) と、直接接続された処理装置1102(0) 〜1102(3) から受信したパケットを保持するバッファ1105(0) 〜1105(3) をそれぞれ有している。隣接するノード装置1101(0) 〜1101(3) からパケットを受信した場合にはその送信先ノード番号を確認して処理装置1102(0) 〜1102(3) に渡すか次のノード装置1101(0) 〜1101(3) にフォワードするかのいずれかの処理を行う。
【００１９】
図１２は図１１の双方向リングネットワークにおける、チャネルの依存関係を有向グラフで表現したものである。C1〜C8は図１１に示されたリンクにそれぞれ対応している。この図ではC1→C2→C3→C4→C1とC5→C6→C7→C8→C5の二つのサイクルが存在し、デッドロックの可能性がある。
【００２０】
そこで、ルーティングに以下のような制限を設ける。「ノード装置1101(0) はパケットを中継しない、すなわち、ノード装置1101(0) のバッファ1103(0) とバッファ1104(0) には、常に送信先ノード番号が０を示すパケットのみが入力される。」図１３に上記の制限を加えた場合のチャネルの依存関係のグラフを示す。図１３においては依存関係のサイクルは存在せず、デッドロックは回避されている。
【００２１】
図１４は上記のルーティング方向制限によってデッドロック回避を行った場合の具体的なルーティング方法を示している。図のように、送信元ノードと送信先ノードとによってパケットの経路が固定的に決定される。ノード装置1101(0) が送信元ノード、もしくは送信先ノードである場合には、パケットが選択可能な経路が複数存在する。図１４ではそのような場合に経路の短い方を選択して記してある。ノード1101(0) からノード1101(2) への通信、およびノード1101(2) からノード1101(0) への通信は距離の等しい二つの選択可能な経路が存在し、図１４にはその両方を記してある。
【００２２】
このように、ノード数が４以下であればデッドロックフリーで且つノード間距離が最短になるようにパケットのルートを決定可能となることが、"A Survey of Wormhole Routing Techniques in Direct Networks",L.M.Ni and P.K.McKinley, IEEE Computer,Feb 1993,p.62-76などに示されている。
【００２３】
このようにリングの切断によってデッドロックを回避した場合には、ノード数が増加した場合にパケット経路を最短距離で設定できないという問題はあるものの、ノード装置の構成は比較的単純であり、しかもネットワークの規模が大きい場合、つまりノード数が多い場合にも、ノード装置の構成には影響を与えないというメリットがある。
【００２４】
【発明が解決しようとする課題】
しかし、リングの切断によってデッドロックを回避した場合には、ルーティングが固定化されているため、ネットワークの状態に応じてパケットのルートを変更することができないということが問題として指摘されている。例えば、ノード番号「０」〜「９」の１０台のノード装置Ｎ０〜Ｎ９が、ノード番号の順に双方向のリンクによってリング状に接続され、且つノード番号「０」のノード装置Ｎ０が切断点にされている双方向リングネットワークにおいて、ネットワークの状態が変化し、切断点のノード装置Ｎ０に隣接するノード装置Ｎ１，Ｎ９間のトラフィックが最も多くなったとしても、ノードＮ１，Ｎ９間のパケットは、最も遠回りの経路を通って送受信され続けることになるという問題がある。
【００２５】
また、パケットのルートをテーブルなどに記録することで変更可能なように設計した場合にも、テーブルの書き換え時にはチャネルの依存関係を考慮した上で人手で設計する必要があり、且つネットワークの運用中には変更できないという問題があった。
【００２６】
【発明の目的】
本発明は上記の課題に鑑みてなされたものであり、その目的は次の通りである。
【００２７】
第一の目的は、デッドロックを回避するための依存関係の切断点を変更するという簡単な操作を行うだけで、双方向リングネットワークのルーティングを容易に変更できるようにすることにある。
【００２８】
第二の目的は、上記依存関係の切断点の変更に際し、変更をノード装置に指示するための専用接続を必要とせず、ネットワークの通常パスを流れるパケットによって可能にすることにある。
【００２９】
第三の目的は、上記依存関係の切断点の変更を、ネットワークの運用を継続しつつ行えるようにすることにある。
【００３０】
第四の目的は、上記依存関係の切断点を変更することによって、双方向リングネットワーク中の特定のリンクを未使用状態に設定し、ネットワークの拡張、あるいは保守などを容易に行えるようにすることにある。これらの目的を達成するノード装置は、構成が単純であり、且つネットワーク中のノード数の増加にも同じ構成のノード装置を使用して容易に対応可能なものでなくてはならない。
【００３１】
【課題を解決するための手段】
本発明では、基本的にリンクの切断によってデッドロックを回避するアプローチを取る。このためにノード数が５以上の場合にパケットが遠回りの経路を選択することは避けられないが、ノード数が増えた場合にも同一のノード装置でリングネットワークを構成可能となる。
【００３２】
上記の目的を達成するために、本発明によるノード装置は、双方向リングネットワーク中の依存関係の切断点を記録する書き換え可能な切断点記録レジスタを有し、
受信したパケットの送信先ノード番号から上記切断点記録レジスタに設定された値を減算する演算器を有し、
さらに自身のノード番号から上記切断点記録レジスタに設定された値を減算する演算器を有し、
二つの演算器の出力結果の比較に基づいてパケットの送信先を決定するルート決定手段を有する。
【００３３】
さらに、本発明によるノード装置は、上記切断点記録レジスタに対して、双方向リングネットワーク中を流れる制御用特殊パケットに従って内容を書き換える構成を有する。
【００３４】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００３５】
図１は、本発明の第一の実施例のブロック図であり、請求項１，２に示す発明を実施した双方向リングネットワークを構成するノード装置の一例を示している。本ノード装置によって構成されるリングネットワークは双方向リングネットワークである。
【００３６】
ここでは説明の簡略化のために蓄積交換式のネットワークを例にとって説明する。しかし以下に示す方式は、パケットを第一番目のフリットと読み替え、行き先アドレスを持たない第二番目以降のフリットを第一番目のフリットと同じ行き先にルーティングするよう制御することで、容易にワームホールルーティングの場合にも適用可能である。
【００３７】
ノード装置101 は３つの入出力ポートを有している。一つ目の入出力ポートは入力ポート114 と出力ポート115 とから構成され、計算機などの処理装置（図示せず）に接続される。入力バッファ部108 は処理装置からの入力を入力ポート114 を介して受け取るバッファ部であり、出力制御部109 は出力ポート115 を介して処理装置へのパケットの出力を制御する。
【００３８】
残る二つの入出力ポートは、リングネットワークを構成する別のノード装置と接続される。二つ目の入出力ポート、すなわち入力ポート116 と出力ポート117 は別のノード装置に接続され、三つ目の入出力ポート、すなわち入力ポート119 と出力ポート118 もまた別のノード装置に接続される。従って入力ポート116 および出力ポート118 の接続はリングネットワークにおける一方向のループを形成する接続であり、入力ポート119 および出力ポート117 は双方向リングネットワークにおいて前記のループと逆方向のループを形成する接続である。ここでは、入力ポート116 および出力ポート118 によって形成されるループを順方向のループ、入力ポート119 および出力ポート117 によって形成されるループを逆方向のループと呼ぶ。
【００３９】
順方向のループを形成する入力バッファ部110 は、順方向ループを流れるパケットを保持するバッファ（図示せず）を有している。このバッファはFirst In First Outの規則に従って制御される。入力バッファ部110 は、順方向のループを形成する出力制御部112 のほかに、処理装置への出力制御部109 と、切断点記録レジスタ102 に対して接続されている。
【００４０】
逆方向のループを形成する入力バッファ部113 は、逆方向のループを流れるパケットを保持するバッファ（図示せず）を有している。このバッファはFirst In First Outの規則に従って制御される。入力バッファ部113 は、逆方向のループを形成する出力制御部111 のほかに、処理装置への出力制御部109 と、切断点記録レジスタ102 に対して接続されている。
【００４１】
処理装置からの入力を受ける入力バッファ部108 は、パケットを保持するバッファ（図示せず）を有している。このバッファはFirst In First Outの規則に従って制御される。入力バッファ部108 は送信先記録レジスタ103 への書き込み手段を有し、ルート決定手段105 からの指示を受け、順方向のループを形成する出力制御部112 と、逆方向のループを形成する出力制御部111 とにパケットを出力することができる。また、切断点記録レジスタ102 への書き込み手段を有している。
【００４２】
送信先記録レジスタ103 は、入力バッファ部108 のパケットの送信先ノード番号を記録するレジスタである。この値は減算器107 に入力される。送信先記録レジスタ103 には、ネットワークを構成するノード装置数の最大値を記録するに十分なサイズが必要とされる。
【００４３】
切断点記録レジスタ102 はデッドロックを回避するために依存関係を切断する場所を記録するレジスタである。このレジスタは入力バッファ部110 、入力バッファ部113 、入力バッファ部108 によって書き込み可能であり、その値は減算器106 と減算器107 に入力される。切断点記録レジスタ102 には、ネットワークを構成するノード装置数の最大値を記録するに十分なサイズが必要とされる。
【００４４】
ノード番号記録レジスタ104 はリングネットワークにおいて各ノード装置に付与される固有のノード番号を記録するレジスタであり、各パケットはこの番号を行き先として使用する。本発明においてこの値は、リングネットワークを構成するあるノード装置に０番の番号が付与され、続いて順方向のループに沿って隣接するノード装置に対して１，２，…のように昇順に番号が付与される。ノード番号記録レジスタ104 の値はネットワークの運用開始前に設定される値であり、入力バッファ部108,110,113 の指示によって書き込み可能とする。但し図においては書きこみ手段を省略している。（専用線によって書き込み可能としても良い。）ノード番号記録レジスタ104 の値は、減算器106 とルート決定手段105 に入力される。ノード番号記録レジスタ104 には、ネットワークを構成するノード装置数の最大値を記録するに十分なサイズが必要とされる。
【００４５】
減算器106 はノード番号記録レジスタ104 の値から切断点記録レジスタ102 の値を減算する回路であり、出力値はルート決定手段105 に入力される。切断点記録レジスタ102 の値の方がノード番号記録レジスタ104 の値よりも大きい場合には、結果は２の補数の形で符号付のビット列として出力される。減算器106 の出力値は、切断点のノード装置から自ノード装置までの順方向のホップ数に相当するものになる。なお、減算器106 は演算結果を符号付のビット列で表現するため、出力値のビット幅は、ノード番号記録レジスタ104 および切断点記録レジスタ102 で必要となる、ネットワークを構成するノード装置数の最大値を記録するに必要なビット数よりも１ビット以上大きくとる。
【００４６】
減算器107 は送信先記録レジスタ103 の値から切断点記録レジスタ102 の値を減算する回路であり、出力値はルート決定手段105 に入力される。切断点記録レジスタ102 の値の方が送信先記録レジスタ103 の値よりも大きい場合には、結果は２の補数の形で符号付のビット列として出力される。減算器107 の出力値は、切断点のノード装置からパケットの送信先のノード装置までの順方向のホップ数に相当するものになる。なお、減算器107 は演算結果を符号付のビット列で表現するため、出力値のビット幅は、送信先記録レジスタ103 および切断点記録レジスタ102 で必要となる、ネットワークを構成するノード装置数の最大値を記録するに必要なビット数よりも１ビット以上大きくとる。
【００４７】
ルート決定手段105 は、減算器107 、減算器106 、ノード番号記録レジスタ104 からの入力を受け、入力バッファ部108 に保持されるパケットの出力先を判定・指示する機能を有する。尚、このような機能を有するルート決定手段105 は、比較器等を用いて低コストで実現することができる。
【００４８】
次にノード装置101 の動作について説明する。
【００４９】
順方向のループにおいては、入力バッファ部110 がループを流れるパケットを受信する。入力バッファ部110 では受け取ったパケットの送信先ノード番号を判定し、これがノード装置固有の番号と一致している場合にはパケットは出力制御部109 、出力ポート115 を介して処理装置に出力される。送信先ノード番号とノード装置固有の番号が異なる場合にはループの方向に沿って出力制御部112 、出力ポート118 を介して次のノード装置にパケットを受け渡す。このノード装置固有の番号はノード番号記録レジスタ104 に保持されている値に等しい。図ではノード番号記録レジスタ104 の値を読み出して判断するように描かれているが、入力バッファ部110 がこの値のコピーを保持していても良い。
【００５０】
逆方向のループにおいては、入力バッファ部113 がループを流れるパケットを受信する。入力バッファ部113 では、順方向のループの場合と同様に、受け取ったパケットの送信先ノード番号とノード装置固有の番号を比較する。一致した場合にはパケットは出力制御部109 と出力ポート115 を介して処理装置へと受け渡され、不一致であった場合には、パケットは逆方向のループに沿って出力制御部111 と出力ポート117 を介して別のノード装置に出力される。
【００５１】
ここまでの動作は双方向リングネットワークを構成する従来のノード装置と変わらない。次にノード装置101 が処理装置からパケットを受け取った場合の動作を説明する。
【００５２】
処理装置から入力されたパケットは入力バッファ部108 に入力される。入力バッファ部108 では、パケットの送信先ノード番号を読み出して送信先記録レジスタ103 に入力する。
【００５３】
次に減算器107 は書き込まれた送信先記録レジスタ103 の値から、切断点記録レジスタ102 の値を減算し、結果をルート決定手段105 に入力する。
【００５４】
ルート決定手段105 は、上記減算器107 の減算結果のほかに、減算器106 によるノード番号記録レジスタ104 の値から切断点記録レジスタ102 の値を減算した結果とノード番号記録レジスタ104 の値とを入力として受け、入力バッファ部108 に保持されたパケットの出力先を決定する。
【００５５】
ルート決定手段105 によるパケットの出力先の決定方法を図２の流れ図を用いて説明する。但し本実施例では、送信元ノード番号と送信先ノード番号が同じケース、つまり自分自身への通信は起こり得ないものとしている。図２によるルートの決定方法においては、切断点記録レジスタ102 に指定された値と同じ番号を持つノード装置が、順方向のループおよび逆方向のループ両方の依存関係の切断点となっている。
【００５６】
まずステップ201 では減算器106 の値を確認する。この値はノード番号記録レジスタ104 と切断点記録レジスタ102 の値の差分である。この値が０である場合には、このノード装置101 自身が順方向のループと逆方向のループの両方の依存関係の切断点となっている。この場合はステップ202 に示すようにパケットの出力先は任意である。つまり、どちらのループにパケットを送出した場合であっても、デッドロックは発生しない。
【００５７】
送出方向が任意である場合には、何らかの方法によって送出方向を決定する必要がある。例えば、固定的に順方向もしくは逆方向に流す、順方向と逆方向を交互に利用する、順方向と逆方向のうちノード装置のホップ数が少ない方を判定することによって決定する、などの方法がある。入力バッファ部108 は、送出方向が順方向ループに決定した場合には出力制御部112 に、送出方向が逆方向ループに決定した場合には出力制御部111 に、パケットを送出する。
【００５８】
次にステップ203 において、減算器107 の値を確認する。この値は送信先記録レジスタ103 と切断点記録レジスタ102 の値の差分である。この値が０である場合には、パケットの送信先のノード装置が順方向のループと逆方向のループの両方の依存関係の切断点となっている。この場合はステップ204 に示すようにパケットの出力先は任意である。つまり、どちらのループにパケットを送出した場合であっても、デッドロックは発生しない。ステップ204 ではステップ202 の場合と同様、何らかの規則に従ってパケットの送出方向を決定する。
【００５９】
次にステップ205 において、減算器106 の出力値と減算器107 の出力値を比較する。減算器の出力が負の値であった場合には２の補数の形式で出力されているが、ステップ205 においてはそれぞれの出力値を符号なし整数として扱って比較する。従って減算結果が負の数であった場合には、減算結果が正の数であった場合よりも大きい数値であるとして扱われる。この比較の結果、減算器106 の出力値が減算器107 の出力値よりも大きかった場合、ステップ206 において送出方向は逆方向ループに決定される。この場合入力バッファ部108 のパケットは出力制御部111 に対して出力される。一方、減算器106 の出力値が減算器107 の出力値よりも小さい値であった場合には、ステップ207 において送出方向は順方向ループに決定される。この場合入力バッファ部108 のパケットは出力制御部112 に対して出力される。
【００６０】
次に本発明によるノード装置101 を使用して６ノード双方向リングネットワークを構成した場合を例にとり、そのルーティング方向の決定について図３を用いて説明する。
【００６１】
図３は６ノード双方向リングネットワークの構成図である。本発明によるノード装置301(0)〜301(5)はリンクC1〜C12 によってリング状に接続されている。ノード装置301(0)〜301(5)にはそれぞれ計算機などの処理装置が接続されているが、図３では省略している。
【００６２】
ここでは切断点記録レジスタ102 に２が記録されている場合を例に取る。この場合、ノード番号が２であるノード装置301(2)が順方向のループと逆方向のループの両方の依存関係を切断するノード装置となる。この場合のリンクの依存関係を図４に示す。ノード装置301(2)において依存関係が切断されているため、リンクC2からリンクC3への依存関係がない。つまり、リンクC2を使用してノード装置301(2)に到達したパケットは、常にノード装置301(2)が送信先ノードであり、順方向ループのリンクC3を使用してノード装置301(3)に出力されることはない。同様に逆方向のループに関しても、リンクC10 からリンクC11 への依存関係がない。従って、逆方向ループのリンクC10 を使用してノード装置301(2)に到達したパケットは、常にノード装置301(2)が送信先ノードであり、逆方向ループのリンクC11 を使用してノード装置301(1)に送られることはない。
【００６３】
ルート決定手段105 の動作をより具体的に説明する。以下に４つの通信パターンにおいて実際にどのようにルートが決定されるかを示している。ここでリングネットワークを構成するノード数は６であるので、切断点記録レジスタ102 、送信先記録レジスタ103 、ノード番号記録レジスタ104 のビット幅を3 ビット、減算器106 および減算器107 の出力ビット幅を４ビットとする。
【００６４】
(1) ノード装置301(3)からノード装置301(5)までパケットを送る場合。このとき減算器107 の出力は５−２＝３（二進数で0011）、減算器106 の出力は３−２＝１（二進数で0001）となる。図２のステップ205 において減算器106 の出力は減算器107 の出力よりも小さいため、ステップ207 に従ってパケットは順方向ループに送出される。
【００６５】
(2) ノード装置301(3)からノード装置301(1)までパケットを送る場合。このとき減算器107 の出力は１−２＝−１（二進数で２の補数によって表現すると1111）、減算器106 の出力は３−２＝１（二進数で0001）となる。図２のステップ205 における比較は符号なし整数として扱われるため、減算器107 の出力値（1111）が減算器106 の出力値（0001）よりも大きいと判断され、ステップ207 に従ってパケットは順方向ループに送出される。
【００６６】
(3) ノード装置301(1)からノード装置301(0)までパケットを送る場合。このとき減算器107 の出力は０−２＝−２（二進数で２の補数によって表現すると1110）、減算器106 の出力は１−２＝−１（二進数で２の補数によって表現すると1111）となる。図２のステップ205 における比較は符号なし整数として扱われるため、減算器107 の出力値（1110）は減算器106 の出力値（1111）よりも小さいと判断され、ステップ206 に従ってパケットは逆方向ループに送出される。
【００６７】
(4) ノード装置301(2)からノード装置301(4)までパケットを送る場合。このときステップ201 において減算器106 の出力が２−２＝０となるため、ステップ202 に従ってパケットの送出方向は任意となる。この場合は別の方法によって送出方向を決定することになる。
【００６８】
図５は、本発明によるノード装置101 を使用した６ノード双方向リングネットワークにおいて、切断点記録レジスタ102 に保持された値が２である場合、ルート決定手段105 においてどのルートが選択されるかを、パケットの送信元ノード番号と送信先ノード番号毎に示したものである。
【００６９】
次に、このノード装置101 を使用して構成した双方向リングネットワークにおいて、運用中に依存関係の切断点を変更する場合について説明する。本発明による双方向リングネットワークにおいては、このような依存関係の切断点の移動を、専用線による各ノード装置への指示ではなく、処理装置からのネットワーク管理用のパケットが通常のループ上を伝播することによって行うことが可能となる。
【００７０】
図３に示した６ノード双方向リングネットワーク（ノード装置として本発明による図１のノード装置を使用）において、依存関係の切断点をノード装置301(2)からノード装置301(1)へと変更する場合の例である。ノード装置301(0)〜301(5)はリンクC1〜C12 によってリング状に接続されており、各ノード装置301(0)〜301(5)には計算機などの処理装置が接続されるが、図では省略している。
【００７１】
最初の時点ではノード装置301(0)〜301(5)内の切断点記録レジスタ102 には２が記録されている。この時点においてノード装置301(2)から、依存関係の切断点を移動させる指示が、通常の通信パケットとしてネットワークに投入される。このパケットを以下では制御用特殊パケットと記載する。
【００７２】
制御用特殊パケットのノード装置301(2)での動作を図１を用いて説明する。制御用特殊パケットは処理装置と接続された入力ポート114 を使用して入力バッファ部108 に対して入力される。入力バッファ部108 はパケットが制御用特殊パケットであることを判別すると、パケットの出力先を決定する。この場合パケットの出力先はルート決定手段105 によっては設定されず、依存関係の切断点が移動する方向と逆向きのループに沿って移動するように、入力バッファ部108 によって決定される。この例においては依存関係の切断点は逆方向ループと同じ方向（つまりノード装置固有の番号が−１される方向）に移動させるため、パケット自身は順方向ループに沿ってリングを一周する。このために入力バッファ部108 は順方向のループを形成する出力制御部112 に対してパケットを送出する。パケットの送出と同時に、入力バッファ部108 は切断点記録レジスタ102 の内容を２から１に更新する。以後、ノード装置301(2)においては依存関係の切断点はノード装置301(1)にあるものとしてルートを決定する。
【００７３】
次にノード装置301(3)が制御用特殊パケットを受信してからの動作を図１を用いて説明する。制御用特殊パケットは順方向ループの入力ポート116 から入力バッファ部110 に入力される。入力バッファ部110 内のバッファは First In First Out の規則に従ってサービスを行うため、制御用特殊パケットのサービスの順番になるまで何も特別な処理は行われない。サービス順になると、このパケットは順方向ループに沿って出力制御部112 に渡される。このとき同時に、入力バッファ部110 は切断点記録レジスタ102 の内容を２から１に書き換える。以後、ノード装置301(3)においては依存関係の切断点はノード装置301(1)にあるものとしてルートを決定する。
【００７４】
ノード装置301(4),301(5),301(0)において、制御用特殊パケットは上記ノード装置301(3)の場合と同様に処理される。
【００７５】
制御用特殊パケットがノード装置301(4)においてサービスされた直後の状態を想定し、過渡状態におけるリンクの依存関係を示す。この時点ではノード装置301(2),301(3),301(4)においては、切断点記録レジスタ102 の値は１に更新されているため、依存関係の切断点はノード装置301(1)にあるものと認識している。ノード装置301(5),301(0),301(1)においては、切断点記録レジスタ102 の値は２となっているため、依存関係の切断点はノード装置301(2)にあるものと認識している。
【００７６】
まず順方向のループに関して着目すると、ノード装置301(2),301(3),301(4)はノード装置301(1)が依存関係の切断点であると認識しているため、ノード装置301(2),301(3),301(4)によって送信されたパケットによって、C3→C4→C5→C6→C1のようにリンクの依存関係が形成されることになる。一方、ノード装置301(5),301(0),301(1)はノード装置301(2)が依存関係の切断点であると認識しているため、ノード装置301(5),301(0),301(1)によって送信されたパケットは、C6→C1→C2のような依存関係を形成する。このときC2→C3の依存関係が存在しないのでサイクルは形成されず、デッドロックは起こり得ない。
【００７７】
次に逆方向のループに関して着目すると、ノード装置301(2),301(3),301(4)はノード装置301(1)が依存関係の切断点であると認識しているため、ノード装置301(2),301(3),301(4)によって送信されたパケットによって、C9→C10 →C11 のようにリンクの依存関係が形成されることになる。一方、ノード装置301(5),301(0),301(1)はノード装置301(2)が依存関係の切断点であると認識しているため、ノード装置301(5),301(0),301(1)によって送信されたパケットは、C12 →C7→C8→C9→C10 のような依存関係を形成する。このときC11 →C12 の依存関係が存在しないのでサイクルは形成されず、デッドロックは起こり得ない。
【００７８】
従ってこの双方向リングネットワークにおいては、制御用特殊パケットがネットワークを巡回中にもデッドロックは起こり得ない。
【００７９】
次に、制御用特殊パケットがノード装置301(1)に到達した後の動作を図１を用いて説明する。制御用特殊パケットは順方向ループの入力ポート116 から入力バッファ部110 に入力される。入力バッファ部110 内のバッファは First In First Out の規則に従ってサービスを行うため、制御用特殊パケットのサービスの順番になるまで何も特別な処理は行われない。サービス順になると、入力バッファ部110 は、制御用特殊パケットによって示される新しい依存関係の切断点が自分のノード番号と一致することを認識し、パケットを廃棄する。このとき同時に、入力バッファ部110 は切断点記録レジスタ102 の内容を２から１に書き換える。以後、ノード装置301(1)においては依存関係の切断点はノード装置301(1)にあるものとしてルートを決定する。
【００８０】
以上説明したように、制御用特殊パケットがノード装置301(2)から順方向ループに沿って301(1)まで到達することによって、リングネットワークを構成するすべてのノード装置301(0)〜(5) が依存関係の切断点を301(1)にあるものとして認識し、ネットワークにおけるパケットのルートが変更される。但しネットワークがワームホールルーティングを採用している場合には、各ノードにおける切断点記録レジスタ102 の更新に際し、パケット単位で処理が完結している必要があることに注意しなければならない。
【００８１】
依存関係の切断点をノード装置301(2)から順方向のループに沿ってノード装置301(3)に移動させる場合には、制御用制御パケットをノード装置301(2)から逆方向ループに沿ってノード装置301(3)まで到達させることによって実現可能である。
【００８２】
次に本発明の第二の実施例として、請求項３，４に示した発明を実施した例を説明する。
【００８３】
図６は、請求項３，４にかかる本発明を実施した双方向リングネットワークを構成するノード装置101aの一例である。上記ノード装置101aは、図１に示した請求項１，２にかかる発明を実施した双方向リングネットワークを構成するノード装置101 とほぼ同様の構成を有している。そのため共通点については説明を省略し、相違点のみを説明する。
【００８４】
図６に示したノード装置101aにおいては、図１に示したノード装置101 と比較してノード数記録レジスタ601 と加算器602 とが追加され、さらにルート決定手段105 の代わりにルート決定手段105aを備えている。ノード数記録レジスタ601 はリングネットワークを構成するノード装置の数を記録するレジスタである。ノード数記録レジスタ601 の値はネットワークの運用開始前に設定される値であり、入力バッファ部108,110,113 の指示によって書き込み可能とする。但し図においては書きこみ手段を省略している。（専用線によって書き込み可能としても良い。）ノード数記録レジスタ601 の値は加算器602 に入力される。ノード数記録レジスタ601 には、ネットワークを構成するノード装置数の最大値を記録するに十分なサイズが必要とされる。
【００８５】
加算器602 は、ノード数記録レジスタ601 の値と減算器106 の出力値とを加算する回路であり、出力値はルート決定手段105aに入力されている。加算器602 は減算器106 と同じビット幅を必要とする。
【００８６】
次にノード装置101aの動作について説明する。
【００８７】
ノード装置101aがリングネットワークを構成する他のノード装置からパケットを受信した場合の動作は、図１に示したノード装置の場合と変わらない。処理装置からパケットを受信した場合もほとんど同様であるが、ルート決定手段105aの動作が異なる。
【００８８】
ルート決定手段105aによるパケットの出力先の決定方法を図７の流れ図を用いて説明する。但し本実施例では、送信元ノード番号と送信先ノード番号が同じケース、つまり自分自身への通信は起こり得ないものと仮定する。
【００８９】
図７によるルート決定方法においては、切断点記録レジスタ102 に指定された値と同じ番号を持つノード装置が順方向のループの依存関係の切断点となり、上記ノード装置の順方向ループに沿って一つ先に接続されたノード装置が逆方向のループの依存関係の切断点となる。
【００９０】
まずステップ701 では減算器106 の値を確認する。この値はノード番号記録レジスタ104 と切断点記録レジスタ102 の値の差分である。この値が０である場合には、このノード装置101a自身は順方向のループの依存関係の切断点となっている。従って順方向のループを使用すればネットワーク中のどのノード装置であっても通信可能である。また、順方向に沿って一つだけ先にあるノード装置が逆方向のループの依存関係の切断点となっている。従ってやはり逆方向のループによってもネットワーク中のどのノード装置に対しても通信可能となる。この場合ステップ702 に示すようにパケットの出力先は任意である。どちらのループにパケットを送出した場合であっても、デッドロックは発生しない。
【００９１】
送出方向が任意である場合には、図１に示したノード装置101 の動作例の場合と同様、何らかの方法によって送出方向を決定する必要がある。入力バッファ部108 は、送出方向が順方向ループに決定した場合には出力制御部112 に、送出方向が逆方向ループに決定した場合には出力制御部111 に、パケットを出力する。
【００９２】
次にステップ703 において、再び減算器106 の値を確認する。この値が１である場合には、このノード装置101a自身は逆方向のループの依存関係の切断点となっている。従って逆方向のループを使用すればネットワーク中のどのノード装置であっても通信可能である。また、逆方向に沿って一つだけ先にあるノード装置が、順方向のループの依存関係の切断点となっている。従ってやはり順方向のループによってもネットワーク中のどのノード装置に対しても通信可能となる。この場合ステップ704 に示すようにパケットの出力先は任意である。どちらのループにパケットを送出した場合であっても、デッドロックは発生しない。
【００９３】
ノード装置101a自身のノード番号が０である場合、逆方向のループの依存関係の切断点であっても、ステップ703 においてそれが発見できない。これを発見するために次のステップ705 において加算器602 の出力値を確認する。この値はノード数記録レジスタ601 と減算器106 の値の和である。この値が１となるのは、ネットワークを構成するノード装置数（すなわちノード数記録レジスタ601 の値）をＮとして、切断点記録レジスタ102 の値がＮ−１、ノード番号記録レジスタ104 の値が０の場合のみである。ノード装置101aは逆方向のループの依存関係の切断点となるので、ステップ703 の場合と同様、送出方向は任意となる（ステップ706 ）。
【００９４】
次にステップ707 において、減算器107 の出力値を確認する。この値は送信先記録レジスタ103 と切断点記録レジスタ102 の値の差分である。この値が０のとき、送信先のノードは順方向のループの依存関係の切断点となっており、順方向のループを使用して通信可能である。しかし、このノード装置から順方向のループに沿って一つだけ先に接続されたノード装置が、逆方向のループの依存関係の切断点となっているため、逆方向のループを使用して通信することは不可能である。この場合ステップ708 において送出方向は順方向ループに決定される。入力バッファ部108 のパケットは出力制御部112 に対して出力される。
【００９５】
次にステップ709 において、減算器106 の出力値と減算器107 の出力値を比較する。減算器の出力が負であった場合には２の補数の形式で出力されているが、ステップ709 においてはそれぞれの出力値を符号なし整数として扱って比較する。従って減算結果が負の数であった場合には、減算結果が正の数であった場合よりも大きい数値であるとして扱われる。この比較の結果、減算器106 の出力値が減算器107 の出力値よりも大きかった場合、ステップ710 において送出方向は逆方向ループに決定される。この場合入力バッファ部108 のパケットは出力制御部111 に対して出力される。一方、減算器106 の出力値が減算器107 の出力値よりも小さい値であった場合には、ステップ711 において送出方向は順方向ループに決定される。この場合入力バッファ部108 のパケットは出力制御部112 に対して出力される。
【００９６】
次に本発明によるノード装置101aを使用して６ノード双方向リングネットワークを構成した場合を例にとり、そのルーティング方向の決定について、図を用いて説明する。
【００９７】
６ノード双方向リングネットワークは、図１によるノード装置101 を使用した場合と同様に構成される。このため説明には同じ図３を使用する。ノード装置301(0)〜301(5)はリンクC1〜C12 によってリング状に接続されている。ノード装置301(0)〜301(5)にはそれぞれ計算機などの処理装置が接続されているが、図３では省略している。
【００９８】
ここでは切断点記録レジスタ102 に２が記録されている場合を例に取る。この場合、ノード番号が２であるノード装置301(2)が順方向のループの依存関係を切断するノードとなり、ノード番号が３であるノード装置301(3)が逆方向のループの依存関係を切断するノードとなる。この場合のリンクの依存関係を図８に示す。ノード装置301(2)において順方向のループの依存関係が切断されているため、リンクC2からリンクC3への依存関係がない。つまり、リンクC2を使用してノード装置301(2)に到達したパケットは、常にノード装置301(2)が送信先ノードであり、順方向ループのリンクC3を使用してノード装置301(3)に出力されることはない。同様に逆方向のループに関しては、ノード装置301(3)においてループの依存関係が切断されているため、リンクC9からリンクC10 への依存関係がない。従って、リンクC9を使用してノード装置301(3)に到達したパケットは、常にノード装置301(3)が送信先ノードであり、逆方向ループのリンクC10 を使用してノード装置301(2)に出力されることはない。
【００９９】
図９は、本発明によるノード装置101aを使用した６ノード双方向リングネットワークにおいて、切断点記録レジスタ102 に保持された値が２である場合、ルート決定手段105aにおいてどのルートが選択されるかを、パケットの送信元ノード番号と送信先ノード番号毎に示したものである。
【０１００】
次に、このノード装置101aを使用して構成した双方向リングネットワークにおいて、運用中に依存関係の切断点を変更する場合について説明する。本発明による双方向リングネットワークにおいては、このような依存関係の切断点の移動を、専用線による各ノード装置への指示ではなく、処理装置からのネットワーク管理用のパケットが通常のループ上を伝播することによって行うことが可能となる。
【０１０１】
図３に示した６ノード双方向リングネットワーク（ノード装置として本発明による図６のノード装置を使用）において、順方向ループの依存関係の切断点をノード装置301(2)からノード装置301(1)に、逆方向ループの依存関係の切断点をノード装置301(3)からノード装置301(2)へと変更する場合の例である。ノード装置301(0)〜301(5)はリンクC1〜C12 によってリング状に接続されており、各ノード装置301(0)〜301(5)には計算機などの処理装置が接続されるが、図では省略している。
【０１０２】
最初の時点ではノード装置301(0)〜301(5)内の切断点記録レジスタ102 には２が記録されており、ネットワーク中のリンクの依存関係は図８のようになっている。この時点においてノード装置301(2)から、依存関係の切断点を移動させる指示が、制御用特殊パケットとしてネットワークに投入される。
【０１０３】
制御用特殊パケットがノード装置301(2)に入力された時の動作を図６を用いて説明する。制御用特殊パケットは処理装置と接続された入力ポート114 を使用して入力バッファ部108 に対して入力される。入力バッファ部108 はパケットが制御用特殊パケットであることを判別すると、パケットの出力先を決定する。この場合パケットの出力先はルート決定手段105aによっては設定されず、依存関係の切断点が移動する方向と逆向きのループに沿って移動するように、入力バッファ部108 によって決定される。この例においては依存関係の切断点は逆方向ループと同じ方向（つまりノード装置固有の番号が−１される方向）に移動させるため、パケット自身は順方向ループに沿ってリングを一周する。このために入力バッファ部108 は順方向のループを形成する出力制御部112 に対してパケットを送出する。パケットの送出と同時に、入力バッファ部108 は切断点記録レジスタ102 の内容を２から１に更新する。以後、ノード装置301(2)においては、順方向ループの依存関係の切断点はノード装置301(1)にあるものとし、逆方向ループの依存関係の切断点はノード装置301(2)にあるものとしてルートを決定する。
【０１０４】
次にノード装置301(3)が制御用特殊パケットを受信してからの動作を図６を用いて説明する。制御用特殊パケットは順方向ループの入力ポート116 から入力バッファ部110 に入力される。入力バッファ部110 内のバッファは First In First Out の規則に従ってサービスを行うため、制御用特殊パケットのサービスの順番になるまで何も特別な処理は行われない。サービス順になると、このパケットは順方向ループに沿って出力制御部112 に渡される。このとき同時に、入力バッファ部110 は切断点記録レジスタ102 の内容を２から１に書き換える。以後、ノード装置301(3)においては、順方向ループの依存関係の切断点はノード装置301(1)にあるものとし、逆方向ループの依存関係の切断点はノード装置301(2)にあるものとしてルートを決定する。
【０１０５】
ノード装置301(4),301(5),301(0)において、制御用特殊パケットは上記ノード装置301(3)の場合と同様に処理される。
【０１０６】
制御用特殊パケットがノード装置301(4)においてサービスされた直後の状態を想定し、過渡状態におけるリンクの依存関係を示す。この時点ではノード装置301(2),301(3),301(4)においては、切断点記録レジスタ102 の値は１に更新されているため、順方向ループの依存関係の切断点はノード装置301(1)にあるものと認識し、逆方向ループの依存関係の切断点はノード装置301(2)にあるものと認識している。ノード装置301(5),301(0),301(1)においては、切断点記録レジスタ102 の値は２となっているため、順方向ループの依存関係の切断点はノード装置301(2)にあるものと認識し、逆方向ループの依存関係の切断点はノード装置301(3)にあるものと認識している。
【０１０７】
まず順方向のループに関して着目すると、ノード装置301(2),301(3),301(4)はノード装置301(1)が依存関係の切断点であると認識しているため、ノード装置301(2),301(3),301(4)によって送信されたパケットによって、C3→C4→C5→C6→C1のようにリンクの依存関係が形成されることになる。一方、ノード装置301(5),301(0),301(1)はノード装置301(2)が依存関係の切断点であると認識しているため、ノード装置301(5),301(0),301(1)によって送信されたパケットは、C6→C1→C2のような依存関係を形成する。このときC2→C3の依存関係が存在しないのでサイクルは形成されず、デッドロックは起こり得ない。
【０１０８】
次に逆方向のループに関して着目すると、ノード装置301(2),301(3),301(4)はノード装置301(2)が依存関係の切断点であると認識しているため、ノード装置301(2),301(3),301(4)によって送信されたパケットによって、C11 →C12 →C7→C8→C9→C10 のようにリンクの依存関係が形成されることになる。一方、ノード装置301(5),301(0),301(1)はノード装置301(3)が依存関係の切断点であると認識しているため、ノード装置301(5),301(0),301(1)によって送信されたパケットは、C12 →C7→C8→C9のような依存関係を形成する。このときC10 →C11 の依存関係が存在しないのでサイクルは形成されず、デッドロックは起こり得ない。
【０１０９】
従ってこの双方向リングネットワークにおいては、制御用特殊パケットがネットワークを巡回中にもデッドロックは起こり得ない。
【０１１０】
次に、制御用特殊パケットがノード装置301(1)に到達した後の動作を図６を用いて説明する。制御用特殊パケットは順方向ループの入力ポート116 から入力バッファ部110 に入力される。入力バッファ部110 内のバッファは First In First Out の規則に従ってサービスを行うため、制御用特殊パケットのサービスの順番になるまで何も特別な処理は行われない。サービス順になると、入力バッファ部110 は、このパケットに従って切断点記録レジスタ102 の内容を２から１に更新する。このとき更新後の切断点記録レジスタの値と、自身のノード装置番号が一致することを認識すると、入力バッファ部110 は制御用特殊パケットを廃棄する。
【０１１１】
以上説明したように、制御用特殊パケットがノード装置301(2)から順方向ループに沿って301(1)まで到達することによって、リングネットワークを構成するすべてのノード装置301(0)〜301(5)が、順方向ループの依存関係の切断点をノード装置301(2)からノード装置301(1)に、逆方向ループの依存関係の切断点をノード装置301(3)からノード装置301(2)へと移動させ、ネットワークにおけるパケットのルートが変更される。但しネットワークがワームホールルーティングを採用している場合には、各ノードにおける切断点記録レジスタ102 の更新に際し、パケット単位で処理が完結している必要があることに注意しなければならない。
【０１１２】
依存関係の切断点を順方向のループに沿って移動させる場合には、制御用特殊パケットをノード装置301(3)から逆方向ループに沿って一周させることによって実現可能である。制御用特殊パケットはノード装置の入力バッファ部113 において、更新後の切断点記録レジスタ102 の値と、自身のノード番号（ノード番号記録レジスタ104 の値）を比較するため、パケット自身が逆方向ループ上を移動した場合には、制御用特殊パケット自身は発行元のノード装置301(3)まで到達する。
【０１１３】
次に、請求項８に示した発明について説明する。
【０１１４】
図３の６ノード双方向リングネットワークにおいて、各ノード装置301(0)〜301(5)内の切断点記録レジスタ102 の内容が２である場合を例に取る。この場合既に説明したように、各ノード間リンクの依存関係は図８のように示され、パケットの送出方向はルート決定手段105aによって図９のように決定される。パケットが任意の方向に送出できるのは、送信元ノード番号が２もしくは３の場合である。パケットの送出方向決定は図７に示した方法に従っているが、送出方向が任意であると判定された後、
・ステップ702 において送出方向が任意となった場合には逆方向ループに対して送出
・ステップ704,706 において送出方向が任意となった場合には順方向ループに対して送出のように設定すると、リンクC3とリンクC10 、すなわちノード装置301(2)とノード装置301(3)の間のリンクはまったく使用されなくなる。上記のような設定によってノード装置301(2)と301(3)の間のリンクを未使用状態に設定した後、リンクに使用するケーブル等の交換作業や、ノードの追加作業を行うことが可能になる。
【０１１５】
【発明の効果】
以上、説明したように、本発明においては、次のような効果を奏する。
【０１１６】
第一の効果は、双方向リングネットワークにおけるパケットのルートを、ネットワークの状態に応じて容易に変更できるということである。その理由は、切断点記録レジスタに記録されている切断点のノード装置のノード番号に基づいて、デッドロックの発生しないパケットのルートを自動的に決定するルート決定手段を備えているので、切断点記録レジスタの値を変更するという簡単な操作を行うだけでパケットのルートを変更できるからである。
【０１１７】
第二の効果は、上記依存関係の切断点の変更に際し、変更をネットワークの通常パスを流れるパケットによって可能としたことにより、変更をノード装置に指示するための専用接続が不要となることである。
【０１１８】
第三の効果は、上記依存関係の切断点の変更を、ネットワークの運用を継続しつつ行えることである。
【０１１９】
第四の効果は、上記依存関係の切断点を変更することによって、双方向リングネットワークの特定のリンクを未使用状態に設定することによって、ネットワークの保守、拡張が容易に行える環境を提供できることである。
【図面の簡単な説明】
【図１】  請求項１，２，９，１０にかかるノード装置101 の構成例を示すブロック図である。
【図２】  ノード装置101 内のルート決定手段105 が行う処理の一例を示す流れ図である。
【図３】  ６ノード双方向リングネットワークの構成例を示すブロック図である。
【図４】  図３の６ノード双方向リンクネットワークをノード装置101 を用いて構成した場合の、リンク間の依存関係を示す有向グラフの一例を示す図である。
【図５】  図３の６ノード双方向リンクネットワークをノード装置101 を用いて構成した場合の、ルーティング設定の一例を示す図である。
【図６】  請求項３，４，１１，１２にかかるノード装置101aの構成例を示すブロック図である。
【図７】ノード装置101a内のルート決定手段105aが行う処理の一例を示す流れ図である。
【図８】  図３の６ノード双方向リンクネットワークをノード装置101aを用いて構成した場合の、リンク間の依存関係を示す有向グラフの一例を示す図である。
【図９】  図３の６ノード双方向リンクネットワークをノード装置101aを用いて構成した場合の、ルーティング設定の一例を示す図である。
【図１０】単方向リングネットワークにおけるデッドロックの一例を示す図である。
【図１１】  従来技術による４ノード双方向リングネットワークの構成例を示すブロック図である。
【図１２】  従来技術による４ノード双方向リングネットワークにおけるリンク間の依存関係を示す有向グラフの一例を示す図である。
【図１３】  従来技術による４ノード双方向リングネットワークにおいて、ルーティング方向制限によるデッドロック回避を実施した場合のリンク間の依存関係を示す有向グラフの一例を示す図である。
【図１４】  従来技術による４ノード双方向リングネットワークにおいて、ルーティング制限によるデッドロック回避を実施した場合のルーティング設定の一例を示す図である。
【符号の説明】
101,101a…ノード装置
102 …切断点記録レジスタ
103 …送信先記録レジスタ
104 …ノード番号記録レジスタ
105,105a …ルート決定手段
106,107 …減算器
108,110,113 …入力バッファ部
109,111,112 …出力制御部
114,116,119 …入力ポート
115,117,118 …出力ポート
301(0)〜301(5)…ノード装置
C1〜C12 …リンク
601 …ノード数記録レジスタ
602 …加算器
1001(0) 〜1001(3) …ノード装置
1002(0) 〜1002(3) …ループを構成するバッファ
1003(0) 〜1003(3) …処理装置
1004(0) 〜1004(3) …処理装置からの入力を受けるバッファ
1005(0) 〜1005(3) …パケット
1101(0) 〜1101(3) …ノード装置
1102(0) 〜1102(3) …処理装置
1103(0) 〜1103(3) …順方向ループを構成するバッファ
1104(0) 〜1104(3) …逆方向ループを構成するバッファ
1105(0) 〜1105(3) …処理装置からの入力を受けるバッファ
【図１】
0003758523.tif 000002
【図２】
0003758523.tif 000003
【図３】
0003758523.tif 000004
【図４】
0003758523.tif 000005
【図５】
0003758523.tif 000006
【図６】
0003758523.tif 000007
【図７】
0003758523.tif 000008
【図８】
0003758523.tif 000009
【図９】
0003758523.tif 000010
【図１０】
0003758523.tif 000011
【図１１】
0003758523.tif 000012
【図１２】
0003758523.tif 000013
【図１３】
0003758523.tif 000014
【図１４】
0003758523.tif 000015