(57)【特許請求の範囲】
【請求項１】
複数回一定の時間間隔で送信されるパケット、及び該パケットに先行して送信される制御パケットが複数の入力チャネルからそれぞれ入力される入力ポート部と、
前記入力ポート部の複数の出力と複数の入力チャネルと複数の出力チャネルとを接続するクロスバー部と、
前記複数回、前記クロスバー部に対して、前記パケットが出力されると予想される出力チャネルを、前記パケットを受信する時刻であるフリット到着時刻の前に要求するフリット到着時刻管理部と、
該要求に対して前記入力ポート部の出力と前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を前記フリット到着時刻の前に行い、該要求が複数あって輻輳した場合は、前記フリット到着時刻の前に該要求を調停して前記入出力接続関係設定処理を行う、スイッチ割当て部と、
前記入出力接続関係設定処理が前記パケットの実際のルーティングと一致しているか否かを検証するスイッチ割当て検証部と、
を備え、
前記フリット到着時刻管理部は、前記制御パケットから、前記パケットの送信開始時刻と、前記パケットの送信間隔と、を含む制御パケット情報を取得し、前記フリット到着時刻を前記制御パケット情報に基づいて算出し、該フリット到着時刻と、前記制御パケット情報に含まれる前記送信間隔と、前記制御パケットの入力チャネル及び出力チャネルとを記録し、該記録に基づいて前記複数回の前記要求を行い、
前記クロスバー部は、前記入出力接続関係設定処理の結果を用いて到着したパケットのスイッチングを行うルータ。
【請求項２】
前記フリット到着時刻管理部は、前記制御パケットに記録された前記送信開始時刻に、パケットがルータを通過する最短の時間とパケットがチャネルを通過する時間との和に送信元から前記請求項１に記載のルータにたどり着くまでに経由するルータの数を乗じた値を加えたものを前記フリット到着時刻とすることを特徴とする請求項１に記載のルータ。
【請求項３】
前記フリット到着時刻管理部は、１のルータが動作に要する最小の時間を１サイクルとした場合、現在の時刻が、前記フリット到着時刻よりも１サイクル以内前の段階であって、前記フリット到着時刻に前記送信間隔のずれ幅の最大値を加えたもの以下であるときを前記フリット到着時刻の前であるとする請求項１又は２に記載のルータ。
【請求項４】
前記クロスバー部に対して、前記入力チャネル及び前記入力ポート部に存在するパケットが出力チャネルを要求し、
前記スイッチ割当て部は、前記入力チャネル及び前記入力ポート部に存在するパケットからの要求と前記フリット到着時刻管理部からの要求との調停を行い、調停された要求に対して前記入力ポート部の出力と前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を、前記フリット到着時刻の前に行うことを特徴とする請求項１乃至３のいずれか１項に記載のルータ。
【請求項５】
前記制御パケットに、前記パケットの送信回数が記録され、
前記フリット到着時刻管理部は、前記制御パケットに記録されている前記パケットの送信回数を記録し、更に、前記パケットの到着回数が、該送信回数に達した場合に、自身が記録している前記フリット到着時刻の記録のエントリを消去することを特徴とする請求項１乃至４のいずれか１項に記載のルータ。
【請求項６】
前記制御パケットに、前記パケットの送信間隔のずれ幅の最大値が記録され、
前記フリット到着時刻管理部は、前記フリット到着時刻の記録のうち、該到着時刻に前記送信間隔のずれ幅の最大値を加えた時刻になってもパケットが到着しないエントリが存在する場合、そのエントリを消去することを特徴とする請求項１乃至５のいずれか１項に記載のルータ。
【請求項７】
請求項１乃至６のいずれか１項に記載のルータを用いた情報処理装置であって、
該ルータと、該ルータに前記パケット及び前記制御パケットを送信するIntellectual Property（ＩＰ）とを備えた構成要素が２次元に配され、
前記ＩＰは、前記パケットを複数回一定の時間間隔で送信するとともに、前記パケットの送信開始時刻と、前記パケットの送信間隔と、を含む制御パケット情報を前記制御パケットに記録するＩＰ部と、前記制御パケットを前記パケットの送信に先行して送信する制御パケット投入部と、を有する情報処理装置。
【請求項８】
前記ルータは、前記パケットの送信元となる前記ＩＰから前記パケットの送信先となる前記ＩＰまでの経路にあり、且つ前記経路を屈曲させるルータであり、該ルータの前記フリット到着時刻管理部が、複数回前記クロスバー部に対して、前記パケットが出力されると予想される出力チャネルを、前記フリット到着時刻の前に要求する請求項７に記載の情報処理装置。
【請求項９】
前記ルータの前記スイッチ割当て部は、前記フリット到着時刻管理部からの前記要求が出力チャネルを要求していない場合、経路がルータに対して直進となるように、入力チャネルに対する出力チャネルの設定を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記ルータの前記スイッチ割当て検証部は、経路がルータに対して直進となるように、入力チャネルに対する出力チャネルが設定された場合にも、該設定が実際のルーティングと一致しているか否かを検証することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
送信元がパケットを複数回一定の時間間隔で送信する場合、前記パケットの送信開始時刻と、前記パケットの送信間隔と、を含む制御パケット情報を制御パケットに記録する手順と、
前記制御パケットを、前記パケットの送信に先行して送信する制御パケット投入手順と、
ルータが前記パケットの送信先までの経路の途中に存する場合に、前記ルータで、前記制御パケットを受信し、該受信した前記制御パケットから前記制御パケット情報を取得し、前記パケットを最初に受信する時刻であるフリット到着時刻を前記制御パケット情報に基づいて算出し、該フリット到着時刻と、前記制御パケット情報に含まれる前記送信間隔と、前記制御パケットの入力チャネル及び出力チャネルとを記録し、該記録に基づいて、前記ルータのクロスバー部に対して、前記パケットが出力されると予想される出力チャネルを、前記フリット到着時刻の前に要求するフリット到着時刻管理手順と、
該要求に対して前記入力チャネルと前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を前記フリット到着時刻の前に行い、該要求が複数あって輻輳した場合は、前記フリット到着時刻の前に該要求を調停して前記入出力接続関係設定処理を行う、スイッチ割当て手順と、
前記入出力接続関係設定処理の結果を用いて、前記クロスバー部が到着したパケットのスイッチングを行う手順と、
前記入出力接続関係設定処理が前記パケットの実際のルーティングと一致しているか否かを検証するスイッチ割当て検証手順と、
を備えることを特徴とするパケットのルーティング方法。
【請求項１２】
前記フリット到着時刻管理手順は、前記制御パケットに記録された前記送信開始時刻に、パケットがルータを通過する最短の時間とパケットがチャネルを通過する時間との和に送信元から前記パケットの送信先までの経路の途中に存する前記ルータにたどり着くまでに経由するルータの数を乗じた値を加えたものを前記フリット到着時刻とすることを特徴とする請求項１１に記載のパケットのルーティング方法。
【請求項１３】
前記フリット到着時刻管理手順は、１のルータが動作に要する最小の時間を１サイクルとした場合、現在の時刻が前記フリット到着時刻よりも１サイクル以内前の段階であって、前記フリット到着時刻に前記送信間隔のずれ幅の最大値を加えたもの以下であるときを前記フリット到着時刻の前であるとする請求項１１又は１２に記載のパケットのルーティング方法。
【請求項１４】
前記クロスバー部に対して、前記入力チャネル及び前記入力ポートに存在するパケットが出力チャネルを要求した場合に、
前記スイッチ割当て手順は、前記入力チャネル及び前記入力ポートに存在するパケットからの要求と前記フリット到着時刻管理部からの要求との調停を行い、調停された要求に対して前記入力チャネルと前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を、前記フリット到着時刻の前に行うことを特徴とする請求項１１乃至１３のいずれか１項に記載のパケットのルーティング方法。
【請求項１５】
前記制御パケット投入手順で、前記制御パケットに、前記パケットの送信回数を記録し、
前記フリット到着時刻管理手順は、前記制御パケットに記録されているパケットの送信回数を記録し、更に、前記パケットの到着回数が、該送信回数に達した場合に、自身が記録している前記フリット到着時刻の記録のエントリを消去することを特徴とする請求項１１乃至１４のいずれか１項に記載のパケットのルーティング方法。
【請求項１６】
前記制御パケット投入手順は、前記制御パケットに、前記パケットの送信間隔のずれ幅の最大値を記録し、
前記フリット到着時刻管理手順は、前記フリット到着時刻の記録のうち、該到着時刻に前記送信間隔のずれ幅の最大値を加えた時刻になってもパケットが到着しないエントリが存在する場合、そのエントリを消去することを特徴とする請求項１１乃至１５のいずれか１項に記載のパケットのルーティング方法。
【請求項１７】
前記ルータは、前記パケットの送信元から前記パケットの送信先までの経路にあり、且つ前記経路を屈曲させるルータであり、該ルータで前記フリット到着時刻管理手順が行われることを特徴とする請求項１１乃至１６のいずれか１項に記載のパケットのルーティング方法。
【請求項１８】
前記ルータでの前記スイッチ割当て手順は、前記フリット到着時刻管理手順からの前記要求が出力チャネルを要求していない場合、経路がルータに対して直進となるように、入力チャネルに対する出力チャネルの設定を行うことを特徴とする請求項１７に記載のパケットのルーティング方法。
【請求項１９】
前記ルータでの前記スイッチ割当て検証手順は、経路がルータに対して直進となるように、入力チャネルに対する出力チャネルが設定された場合にも、該設定が実際のルーティングと一致しているか否かを検証することを特徴とする請求項１８に記載のパケットのルーティング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットをルーティングするルータ、そのルータを有する情報処理装置及びパケットのルーティング方法に関する。
【背景技術】
【０００２】
プロセステクノロジの進展によって、1つのチップに多数のIntellectual Property (ＩＰ)を搭載することが可能になり、多機能、高性能への要求をこの手法で満たすようになった。【０００３】
このようなチップでは１つのＩＰは他の多くのＩＰと通信せねばならず、通信網が必要となる。この目的に応じて、ＩＰを、ポイントツーポイントのチャネルとルータで、構造化された方法で結合する方法が提案されており、Network on Chip（ＮｏＣ）と呼ばれている。【０００４】
図１に、ＮｏＣ技術を用いた情報処理装置の一般的な構造を示す。図１に示すように、ＩＰ、ネットワークインターフェイス、ルータからなる構成要素が２次元に配列されており、図１の左部に、隣接する二つの構成要素が一部拡大図により示されている。
ＩＰ１０１−１はインターフェイスとなるネットワークインターフェイス１０２−１を通じてネットワークノードとなるルータ１０３−１に接続される。またＩＰ１０１−２はインターフェイスとなるネットワークインターフェイス１０２−２を通じてネットワークノードとなるルータ１０３−２に接続される。ルータ１０３−１、１０３−２はポイントツーポイントのチャネル１０４によって接続される。ここで、ＩＰ１０１−１、１０１−は、プロセッサ、ＤＳＰ（Digital Signal Processor）、又はメモリコントローラなどのハードウェアモジュールである。【０００５】
ＩＰ間は、パケットと呼ばれるデータをやりとりすることで通信を行う。隣接するＩＰ１０１−１とＩＰ１０１−２との間では、まずＩＰ１０１−１はルータ１０３−１にパケットを渡す。このパケットは、送信元のＩＰに隣接するルータ１０３−１から、送信先のＩＰ１０１−２に隣接するルータ１０３−２へと移動し、最後に、送信先のＩＰ１０１−２に到達する。ＩＰ１０１−１とＩＰ１０１−２とが隣接してない場合には、パケットは、ルータ１０３−１から、１又は複数のルータを介してルータ１０３−２へと移動する。【０００６】
図１に示す各ルータは、複数の入力チャネルと複数の出力チャネルをつなぎ、パケットを受け渡す働きをする。つまり、各ルータは入力チャネルから来たパケットを適切な出力チャネルに出力し、次のルータにパケットを渡す。なお、ルータ間で転送されるデータの単位をフリットと呼び、パケットは１以上のフリットからなる。そのため、ルータ間で１パケットを送る場合、実際には、１個以上のヘッダフリットと、０個以上の後続フリットを送る。【０００７】
ルータの処理は４つの作業からなる。つまり、次のルータを決定するルーティング計算（Routing Calculation（ＲＣ））と、入力パケットにバーチャルチャネル番号を割り当てるバーチャルチャネル割り当て（Virtual Channel Allocation（ＶＡ））と、入力されたパケットのルータ内クロスバーの出力チャネル要求を調停し、調停結果に従ってクロスバーの入出力接続関係を設定するスイッチ割り当て（Switch Allocation（ＳＡ））と、フリットがクロスバー内を移動するスイッチ転送（Switch Traversal（ＳＴ））とである。【０００８】
図２に代表的なルータのブロック図を示す。ＳＡを、入出力対応関係割当て処理とも呼ぶ。なお、図２においてはルータの他に図１のＩＰに対応するＩＰ部２１２も示している。【０００９】
次に、パケットをルーティングするルータとＩＰとを含む装置の関連技術について説明する。【００１０】
図２を参照すると、フリットを入力チャネル２０１から入力し、入力ポート部２０２にバッファし、ルーティング計算部２０６が、次のホップはどのルータか、すなわち、どの出力チャネルから出力するかを決定する。【００１１】
バーチャルチャネル割当て部２０７は、パケットのバーチャルチャネル番号を決定する。スイッチ割当て部２０９が、入力チャネル２０１あるいは入力ポート部２０２にある複数のパケットについて、出力チャネルの間の調停を行い、クロスバー部２１０の入出力関係を決定する。そして、フリットはクロスバー部２１０を通って、適切な出力チャネル２１１に出力される。バーチャルチャネル割当て部２０７へは、クレジット入力２０８が入力され、入力ポート部２０２からクレジット出力２１６が出力される。【００１２】
非特許文献１では、ルータの４つの作業をなるべく並列に、また、パイプライン的に行うことにより、ルータの処理時間の短縮と、スループット向上を図る手法が示されている。これらの動作の間には依存があるため、処理は１ステージにはならない。例えば、ＲＣとＳＡの間には依存がある。このため、パイプラインステージは例えば４ステージとなる。図３（Ａ）にパイプラインステージの構成例を示す。【００１３】
非特許文献２では、ルータの作業を前倒しすることで、ルータの処理時間を短縮する。すなわち、パケットが、あるルータに到着した際に、次のルータの分のRouting Calculation（ＲＣ）を行っておく。こうすることでＲＣの作業を前倒しする。図３（Ｂ）にこの手法を適用した後のパイプラインステージの構成例を示す。【００１４】
非特許文献３では、ＶＡの作業とＳＡの作業を投機的に並列実行することで、ルータの処理時間を短縮する。図３（Ｃ）にこの手法を適用した後のパイプラインステージの構成例を示す。【００１５】
ここで、図４を参照すると、関連技術に係る、ルータ（例えば、非特許文献４）は、予測部３０３が、フリットが到着するであろう入力チャネル３０１に対し、出力チャネル３１１を予測する。その後フリットを入力チャネル３０１から入力する。パケットはクロスバー部３１０を通って、出力チャネル３１１に出力される。バーチャルチャネル割当て部３０７へは、クレジット入力３０８が入力され、入力ポート部３０２からクレジット出力３１６が出力される。ルーティング計算部３０６、バーチャルチャネル割当部３０７、スイッチ割当部３０９は、それぞれルーティング計算部２０６、バーチャルチャネル割当部２０７、スイッチ割当部２０９と同様な機能を有する。ＩＰ部３１２、クロスバー部３１０もＩＰ部２１２、クロスバー部２１０と同様な機能を有する。【００１６】
予測は、ルーティング計算部３０６によって検証され、予測ミスの際は、パケットは次のルータに到達する前に無効化される。予測により、予めクロスバースイッチの入出力接続関係設定処理を行っておくことで、Switch Allocation（ＳＡ）ステージの動作を前倒しする。図３（Ｄ）にこの手法を適用した場合のパイプラインステージの構成例を示す。【００１７】
又、図５を参照すると、関連技術に係るルータ（例えば、非特許文献５）は、データを送る場合は、制御パケットをデータパケットより前の時刻に宛先のルータに送信する。制御パケットが経路途中のルータに入力されると、ルーティング計算部４０２が、出力チャネルを決定する。さらに、出力スケジュール部４０３が、出力チャネルが空いていて、次のルータの入力バッファも空いている時刻を計算し、出力予約テーブル部４０４に記録する。そして、入力スケジュール部４０５が、データパケットが到着する時刻と、到着した際に格納する入力バッファの番号と、データパケットが出力チャネル４１０に移動する時刻とを入力予約テーブル部４０６に記録する。更に、データパケットが出力チャネル４１０に移動する時刻と、データパケットを格納する入力バッファの番号と、出力チャネル番号とを出力予約テーブル部４０４に記録する。出力予約テーブル部４０４へは、クレジット入力４１６が入力され、入力ポート部４０８からクレジット出力４１７が出力される。制御パケット出力チャネル４１８は出力スケジュール部４０３に接続される。【００１８】
なお、図２、図４及び図５においては、入力ポート部２０２、３０２、４０８の入力ポートの数がＮ個として示されるが、図１に示すＮｏＣ技術を用いた情報処理装置では各ルータは５つの入力ポートを持ち、Ｎは５となる。図２、図４においては、ルーティング計算部２０６、３０６は１つだけ示されているが、実際は入力ポートの数だけ設けられる。【００１９】
又、ＮｏＣに係る技術文献として特許文献１、特許文献２及び特許文献３が存在する。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００６−２５４４５０号公報
【特許文献２】特開２００７−１１０７０６号公報
【特許文献３】特表平１１−５０４４９６号公報
【非特許文献】
【００２１】
【非特許文献１】William James Dally and Brian Towles, "PrincＩＰles and Practices of Interconnection Networks", Morgan Kaufmann Publishers, pp. 305-312,     2004.
【非特許文献２】M. Galles, "Scalable PＩＰelined Interconnect for Distributed Endpoint Routing: The SGI Spider ChＩＰ", In proc. Hot Interconnects IV Symp., pp. 141-146, Aug. 1996.
【非特許文献３】Li-Shiuan Peh, William J. Dally, "A Delay Model and Speculative Architecture for PＩＰelined Routers", In proceedings of the 7th International Symposium on High-Performance Computer Architecture, 2001.
【非特許文献４】鎌倉 正司郎, 吉永 努, 鯉渕 道紘，"2D トーラスネットワークにおける動的予測ルーティング", SWoPP2006, 2006.
【非特許文献５】Li-Shiuan Peh and William J. Dally, "Flit-Reservation Flow Control", In proceedings of the 6th International Symposium on High-Performance Computer Architecture, pp. 73-84, January 2000.
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、上述の特許文献１、特許文献２及び特許文献３は、単に、あるルータから受け取ったフリットを、クロスバースイッチによって、更に別のルータに転送する技術についてその概略を述べたものに過ぎず、ルーティング時間の短縮には言及していないという課題がある。【００２３】
又、関連技術に係るルータの第１の問題点は、一定の時間間隔のパケットのやり取りに関しては、入力チャネルと出力チャネルの予測の精度が低くなり、ルータの処理時間の短縮ができないことがあることである。【００２４】
例えば、非特許文献４に係るパケットのルータは、ある入力チャネルについて、出力チャネルの過去の履歴を参照して、予測を行う。【００２５】
現在のサイクルをtとして、mを自然数として、t-1、t-2、…、t-mとm個さかのぼった履歴を、kを自然数として、t-1-k、t-2-k、…、t-m-kの履歴と比較して、mが最大となるような一致する履歴を探し、そのときのm、kの値をm'、k'として、t-k'の出力チャネルを、tの出力チャネルと予測する。【００２６】
図６にその例を示す。図６の表は、あるルータのある入力チャネルについて、４種類のパケットが各サイクルに要求する出力チャネルを示している。ここで、”Ａ”、”Ｂ”、”Ｃ”、”Ｄ"は４種の出力チャネルとする。なお、ここで１サイクルとは、１のルータが動作に要する最小の時間、例えばパケットが１のルータを通過する場合に要する最小の時間であるとする。【００２７】
出力チャネルＡでは、要求するパケットは８サイクルの間隔の通信で送信されるとする。出力チャネルＢでは、要求するパケットは７サイクルの間隔の通信で送信されるとする。出力チャネルＣでは、要求するパケットは６サイクルの間隔の通信で送信されるとする。出力チャネルＤでは、要求するパケットは５サイクルの間隔の通信で送信されるとする。このとき、図６の表に示すように、過去に要求された出力チャネルの履歴から、将来に要求されるであろう出力チャネルを予測することは難しい。このため、入力チャネルと出力チャネルの予測の精度が低くなり、ルータの処理時間の短縮ができないことがある。【００２８】
関連技術に係るルータの第２の課題は、ネットワークに投入される制御パケットの量が増大し、ネットワークの遅延の増大を招くことである。【００２９】
例えば、非特許文献５に係るパケットのルータは、データパケットを送信する前に、制御パケットを送信する。制御パケットをデータパケットと同じネットワークに投入する場合、そのネットワークに投入されるパケット数が増大し、ネットワークの遅延の増大を招く。【００３０】
本発明は上記の課題に鑑みてなされたものであり、コンピュータ又はＩＰのネットワークのルータにおいて、前倒し処理することで、ルーティングの時間を短縮するようなルータ、情報処理装置及びパケットのルーティング方法を提供することを典型的(exemplary)な目的とする。
【課題を解決するための手段】
【００３１】
上述の課題を解決するため、本発明に係る典型的なルータは、複数回一定の時間間隔で送信されるパケット、及び該パケットに先行して送信される制御パケットが複数の入力チャネルからそれぞれ入力される入力ポート部と、
前記入力ポート部の複数の出力と複数の入力チャネルと複数の出力チャネルとを接続するクロスバー部と、
前記複数回、前記クロスバー部に対して、前記パケットが出力されると予想される出力チャネルを、前記フリット到着時刻の前に要求するフリット到着時刻管理部と、
該要求に対して前記入力ポート部の複数の出力と前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を前記フリット到着時刻の前に行い、該要求が複数あって輻輳した場合は、前記フリット到着時刻の前に該要求を調停して前記入出力接続関係設定処理を行う、スイッチ割当て部と、
前記入出力接続関係設定処理が前記パケットの実際のルーティングと一致しているか否かを検証するスイッチ割当て検証部と、
を備え、
前記フリット到着時刻管理部は、前記制御パケットから、前記パケットの送信開始時刻と、前記パケットの送信間隔と、を含む制御パケット情報を取得し、前記パケットを受信する時刻であるフリット到着時刻を前記制御パケット情報に基づいて算出し、該フリット到着時刻と、前記制御パケット情報に含まれる前記送信間隔と、前記制御パケットの入力チャネル及び出力チャネルとを記録し、該記録に基づいて前記複数回の前記要求を行い、
前記クロスバー部は、前記入出力接続関係処理の結果を用いて到着したパケットのスイッチングを行うルータである。【００３２】
上述の課題を解決するため、本発明に係る典型的なパケットのルーティング方法は、  送信元がパケットを複数回一定の時間間隔で送信する場合、前記パケットの送信開始時刻と、前記パケットの送信間隔と、を含む制御パケット情報を制御パケットに記録する手順と、
前記制御パケットを、前記パケットの送信に先行して送信する制御パケット投入手順と、
ルータが前記パケットの送信先までの経路の途中に存する場合に、前記ルータで、前記制御パケットを受信し、該受信した前記制御パケットから前記制御パケット情報を取得し、前記パケットを最初に受信する時刻であるフリット到着時刻を前記制御パケット情報に基づいて算出し、該フリット到着時刻と、前記制御パケット情報に含まれる前記送信間隔と、前記制御パケットの入力チャネル及び出力チャネルとを記録し、該記録に基づいて、前記ルータのクロスバー部に対して、前記パケットが出力されると予想される出力チャネルを、前記フリット到着時刻の前に要求するフリット到着時刻管理手順と、
該要求に対して前記入力チャネルと前記出力チャネルとの接続関係を設定する入出力接続関係設定処理を前記フリット到着時刻の前に行い、該要求が複数あって輻輳した場合は、前記フリット到着時刻の前に該要求を調停して前記入出力接続関係設定処理を行う、スイッチ割当て手順と、
前記入出力接続関係処理の結果を用いて、前記クロスバー部が到着したパケットのスイッチングを行う手順と、
前記入出力接続関係設定処理が前記パケットの実際のルーティングと一致しているか否かを検証するスイッチ割当て検証手順と、
を備えることを特徴とするパケットのルーティング方法である。
【発明の効果】
【００３３】
本発明によれば、ルータにあらかじめパケットの経路が知らされるので、クロスバー部の処理が前倒しされ、ルーティングの処理時間を短縮することができる。
また、制御パケットをパケット送信に対応させて毎回送る必要がないので、ネットワークに投入されるパケット数を減少させることができる。
【図面の簡単な説明】
【００３４】
【図１】Network on Chip（ＮｏＣ）技術を用いた情報処理装置の例を示した図である。
【図２】関連技術のルータのブロック図である。
【図３】関連技術と、本発明のルータのパイプラインステージの構成を示した図である。
【図４】関連技術のルータのブロック図である。
【図５】関連技術のルータのブロック図である。
【図６】一定間隔でパケットを送信する例における、あるルータで要求される出力チャネルを時系列で示した図である。
【図７】本発明の第１の実施の形態に係るルータのブロック図である。
【図８】本発明の第１の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図９】本発明の第１の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１０】本発明の第１の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１１】本発明の第１の実施の形態の具体例における、ＩＰとルータのネットワークの図である。
【図１２】本発明の第１の実施の形態の具体例において、各ルータのフリット到着時刻管理部に記録されるデータを示す表である。
【図１３】本発明の第２の実施の形態に係るルータのブロック図である。
【図１４】本発明の第２の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１５】本発明の第２の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１６】本発明の第２の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１７】本発明の第２の実施の形態に係るルータ、及びＩＰにおける処理例を示すフローチャートである。
【図１８】パケットの経路について、直進の例を示す図である。
【図１９】本発明の第２の実施の形態の具体例における、ルータとネットワークの図である。
【図２０】本発明の第２の実施の形態の具体例において、各ルータのフリット到着時刻管理部に記録されるデータを示す表である。
【図２１】図７の一部のブロック間の接続関係を示すブロック図である。
【図２２】図１３の一部のブロック間の接続関係を示すブロック図である。
【発明を実施するための形態】
【００３５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。なお、本発明に係わる情報処理装置は本発明に係わるルータを有する装置であり、代表的にはＮｏＣ技術を用いた半導体チップがあげられ、以下に説明する実施形態においてもかかる例について説明するが、かかる例に限定されるものでない。また、本発明に係わるルータの構成はコンピュータネットワークにおけるルータにも適用することができる。
［第１の実施の形態］
図７は、本発明の第１の実施の形態に係るルータのブロック図である。図７ではＩＰ５１をルータの他に示している。図２１は図７の一部のブロック間の接続関係を示すブロック図である。図２１において、フリット到着時刻管理部５０３−１〜５０３−Ｎは図７のフリット到着時刻管理部５０３、ルーティング計算部５０６−１〜５０６−Ｎは図７のルーティング計算部５０６、バーチャルチャネル割り当て部５０７−１〜５０７−Ｎは図７のバーチャルチャネル割り当て部５０７に対応する。
【００３６】
図７を参照すると、本発明の第１の実施の形態に係るルータは、前のホップとなるルータからパケット（フリット）を入力する入力チャネル５０１と、フリットをバッファする入力ポート部５０２と、フリット到着時刻管理部５０３と、フリットに対し次のホップのルータを決定するルーティング計算部５０６と、パケットに対しバーチャルチャネル番号を割り当てるバーチャルチャネル割り当て部５０７と、ルータ内部のクロスバーの、フリットの間での調停と、入力チャネルと出力チャネルの接続関係の設定を行うスイッチ割り当て部５０９と、入力チャネル（入力ポート部の出力）と出力チャネルを接続するクロスバー部５１０と、を備える。フリット到着時刻管理部５０３は、一定間隔のパケット送信について、フリットの到着時刻、入力チャネル、出力チャネル、間隔、送信の回数、間隔のずれ幅の最大値を記録し、さらに、記録したフリット到着時刻とその間隔にしたがって複数回、フリット到着時刻の前に、クロスバー部５１０に対して、パケットが入力される入力チャネルに対して、入力チャネルのパケットが出力されると予想される出力チャネルを要求する。
【００３７】
また本発明の第１の実施の形態に係るルータは、次のルータに接続する出力チャネル５１１と、通信主体となるプロセッサなどからなるＩＰ部５１２と、一定間隔のパケットの送信についての情報を制御パケットに書き込み、ネットワークに投入する制御パケット投入部５１３と、スイッチ割当て部５０９によってフリット到着前に行われたクロスバー部の入力チャネルと出力チャネルの接続関係が正しかったかどうか検証するスイッチ割当て検証部５１７とを備える。
【００３８】
ＩＰ部５１２と制御パケット投入部５１３とは、ＩＰ５１を構成し、ＩＰ５１は図１１のＩＰ５１−１〜ＩＰ５１−４のそれぞれに該当する。図７のＩＰ部５１２と制御パケット投入部５１３以外の構成部はルータを構成し、図１１のルータ５２−１〜ルータ５２−４のそれぞれに該当する。フリット到着時刻管理部５０３、ルーティング計算部５０６、バーチャルチャネル割当部５０７は入力ポートの数だけ設けられる。図１１では入力ポートの数は５つなので、フリット到着時刻管理部５０３、ルーティング計算部５０６、バーチャルチャネル割当部５０７は５こずつ設けられることになる。入力ポートの数だけ設けられたバーチャルチャネル割当て部５０７へは、クレジット入力５０８がそれぞれ入力され、入力ポート部５０２からクレジット出力５１６が出力される。
【００３９】
図７を参照すると、本発明の第１の実施の形態にかかるルータは以下の動作を行う装置である。つまり、制御パケット投入部５１３が、ＩＰ部５１２からの一定間隔のパケットの送信について、その開始時刻、間隔と送信の回数と間隔のずれ幅の最大値がＩＰ部５１２によって書き込まれた制御パケットを、ＩＰ部５１２の複数回のパケット送信に対して１回だけネットワークに投入する。
【００４０】
フリット到着時刻管理部５０３は、入力チャネル５０１から制御パケットを入力し、フリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値を記録する。フリット到着時刻管理部５０３は、更に、記録したフリット到着時刻とその間隔にしたがって複数回、フリット到着時刻の前に、クロスバー部５１０に対して、入力チャネルに入力されるフリットが出力されると予想される出力チャネルを要求する。
【００４１】
スイッチ割当て部５０９は、この要求に対する調停と、調停の結果に基づくクロスバー部５１０の入出力接続関係設定処理をフリット到着時刻の前に行う。
【００４２】
クロスバー部５１０は、予め行われていた入出力対応関係割当ての結果を用いて到着したフリットのスイッチングを行い、結果として、入力チャネルに対する調停と、入出力接続関係設定処理を前倒しし、ルーティングの時間を短縮する。
【００４３】
スイッチ割当て検証部５１７は、予め行われていた入出力接続関係設定処理が実際到着したフリットのルーティングと一致しているか否かを検証する。又、制御パケットや、それに記録された一定間隔で送信が行われるパケットに加え、それ以外のパケットについて、以下の動作を行う。
【００４４】
入力ポート部５０２は入力チャネル５０１から入力したフリットをバッファする。ルーティング計算部５０６は、入力したフリットに対して次のルータを計算する。
【００４５】
バーチャルチャネル割り当て部５０７は入力したパケットに対するバーチャルチャネル番号を決定する。スイッチ割り当て部５０９はクロスバー部５１０の入力チャネルに対する出力チャネルの要求の調停と、入力チャネルと出力チャネルの接続関係の設定を行う。
【００４６】
クロスバー部５１０はフリットを適切な出力チャネル５１１に送出する。
【００４７】
次に本実施の形態に係るルータにおける一定間隔のパケットの送信に対する動作について、図７、図８〜図１０を参照して説明する。ここで、図８〜図１０は、本発明の第１の実施の形態に係るルータにおける処理例を示すフローチャートである。
【００４８】
まず、ルータに接続されたＩＰ部５１２が、一定の時間間隔で、ある送信先のＩＰ部５１２にパケットを送信するとする。図８に示すように、ＩＰ部５１２は、この送信先と、送信開始時刻と、送信回数と、送信間隔と、送信間隔のずれ幅の最大値とを、制御パケット情報として制御パケットに記録し、制御パケット投入部５１３を通して入力ポート部５０２に入力する（ステップＳ１１０１）。
【００４９】
送信開始時刻は、ＩＰ部５１２が送信を開始する時刻を、サイクル数で計ったものでもよい。送信先は、ＩＰやルータの番号で表現してもよいし、ＩＰやルータに到るクロスバー部５１０の出力チャネルの番号の列で表現してもよい。
【００５０】
ルータの処理において、入力チャネル５０１あるいは入力ポート部５０２からのクロスバー部５１０の出力チャネルへの要求の調停と、クロスバー部５１０の入力チャネルと出力チャネルの接続関係の設定の作業のパイプラインステージをSwitch Allocation（ＳＡ）ステージと呼ぶ。
【００５１】
ＳＡステージを前倒しできない際にパケットがルータを通過する時間をＴｓとし、ＳＡステージを前倒しできる際の時間、すなわちパケットがルータを通過する最短の時間をＴｆとした場合、制御パケットを送るタイミングは、送信先までのホップ数をＨとして、（Ｔｓ−Ｔｆ）×Ｈサイクル以上前でもよい。
【００５２】
制御パケットを、送信元ＩＰからルータを経て送信先ＩＰへ送り、制御パケットを用いて、ＩＰ部５１２からの経過時間を計っていく（ステップＳ１１０２）。この際に、ＩＰ部５１２が後に送るパケットと同じ経路をたどるように制御パケットを送る。ＩＰ部５１２からの経過時間はサイクル数で計ってもよいし、ホップ数を数えることで計ってもよい。
【００５３】
経路の途中にあるルータがこの制御パケットを受信し、フリット到着時刻管理部５０３が、制御パケットの情報を記録する（ステップＳ１１０３）。チャネルを通過する時間をＴｐとしたとき、記録する情報は、フリットに記録された送信開始時刻にＨ×（Ｔｆ+Ｔｐ）を加えたものを到着時刻としたものと（Ｈはホップ数）、制御パケットが入力された入力チャネルの番号と、制御パケットを次のルータにホップさせるクロスバー部５１０の出力チャネルの番号と、フリットの送信回数と、送信間隔と、送信間隔のずれ幅の最大値とである。
【００５４】
フリット到着時刻管理部５０３は、図９のステップＳ１１０４において、フリット到着時刻の記録のエントリについて、現在のサイクル（時刻）が、到着時刻に送信間隔のずれ幅の最大値を足したものより大きくなったものが存在する場合（ＹＥＳ）、すなわち、到着時刻に送信間隔のずれ幅の最大値を加えた時刻になってもフリットが到着しないエントリが存在する場合、当該フリット到着時刻の記録のエントリを消去する（ステップＳ１１０５）。こうすることで、送信回数が不明な場合でも送信が終わったものに対してエントリを消去できる。又、到着時刻のずれが大きい場合は、一定間隔で送信される他のパケットに与えるべき出力チャネルを与えてしまう可能性が高まるが、ステップＳ１１０４及びステップＳ１１０５での操作によってそのような場合を避けることができる。
【００５５】
フリット到着時刻管理部５０３は、フリット到着時刻の記録のエントリについて、現在のサイクル（時刻）が、フリット到着時刻の１つ前のサイクル以上で、当該フリット到着時刻に送信間隔のずれ幅の最大値を足したもの以下になっているようなものを探し、そのようなエントリに対し、ルータ内のクロスバー部５１０の出力チャネルをスイッチ割り当て部５０９に対して要求する（ステップＳ１１０６）。入力バッファにバッファリングされていて、かつＳＡステージが前倒しされていないフリット、入力チャネルに到着して、かつＳＡステージが前倒しされていないフリットについても、クロスバー部の出力チャネルが要求される。
【００５６】
スイッチ割り当て部５０９はクロスバー部５１０の出力チャネルに対する要求が輻輳した場合、これらの要求の調停を行い、さらに認められた要求に対してクロスバー部５１０の入力ポートと出力チャネルの接続関係の設定を行う（ステップＳ１１０７）。
【００５７】
この際に、フリットに与えられた優先度を用いて同じ入力ポート番号を持つ要求同士あるいは同じ出力チャネル番号を持つ要求同士を調停してもよい。また、要求が満たされなかった場合は、次のサイクルに再び要求を行う。
【００５８】
現在入力チャネルや入力ポートに存在するフリットもスイッチ割当て部５０９に要求を出す。スイッチ割当て部５０９は、これらの要求とフリット到着時刻管理部５０３からの要求をまとめて同じように扱い、要求の調停と、入力ポートに対する出力チャネルの接続関係の設定を行ってもよい。要求が輻輳する場合としては、具体的には、例えば次にあげる状態がある。１つのルータに他のルータから一の入力ポートに制御パケットが入力されて、その入力ポートに接続されるフリット到着時刻管理部５０３からスイッチ割り当て部５０９に、クロスバー部５１０の出力チャネルに対する要求が出されたものとする。一方、当該１つのルータに、そのルータと接続される制御パケット投入部５１３から他の入力ポートに制御パケットが入力されて、その他の入力ポートに接続される他のフリット到着時刻管理部５０３からスイッチ割り当て部５０９に、クロスバー部５１０の出力チャネルに対する要求が出されたとする。この場合に、クロスバー部５１０の出力チャネルに対する要求が輻輳し、スイッチ割り当て部５０９が調停を行う。
【００５９】
続く、図１０のステップＳ１２０１では、フリット到着時刻管理部５０３が予期した入力チャネルにフリットが到着したか否かを判別し、到着した場合（ＹＥＳ）、ステップＳ１２０２へ進む。そうでない場合（ＮＯ）、ステップＳ１２０９へ進む。
【００６０】
予期した入力チャネルにフリットが到着しない場合は、例えば、非特許文献４のような関連技術と同じ方法でルーティングを行う（ステップＳ１２０９）。そして、手順はステップＳ１２０６へ進む。
【００６１】
クロスバー部５１０が、予め行われていた入出力対応関係割当てを用いてスイッチングを行うことで、ＳＡのステージの時間を前倒しし、フリットは次のルータに送られる（ステップＳ１２０２）。図３（Ｃ）に関連技術におけるルータの作業のパイプラインステージを示す。関連技術ではＳＡ、ＳＴの作業を行う。ここでＳＡのステージが前倒しされることによって、実質ＳＴのステージのみとなり、ルーティングの時間が短縮される。なお、ＶＡのステージもＳＡのステージと同じタイミングで行うことによって前倒しをすることができる。
【００６２】
ステップＳ１２０３では、スイッチ割当て検証部５１７が、予期したフリットがルータに到着したか否かを判定し、到着した場合（ＹＥＳ）、ステップＳ１２０５へ進み、そうでない場合（ＮＯ）、ステップＳ１２０４へ進む。このステップＳ１２０３での判定は、スイッチ割当て検証部５１７が、フリットが到着した後に、ルーティング計算部５０６によりフリットが出力されるべきクロスバー部５１０の出力チャネルを計算し、その結果が、予め行われていたクロスバー部５１０の入出力対応関係割当てと一致していた場合に”ＹＥＳ”と判定するという方法で行う。
【００６３】
スイッチ割当て検証部５１７は、ＳＡステージの前倒しを行い、かつ、予期していないフリットがルータに到着した際は、フリットを、次のルータに到着する前に無効化する（ステップＳ１２０４）。無効化は、フリットがチャネルに出力されないようにしてもよい。
【００６４】
ステップＳ１２０５では、フリット到着時刻管理部５０３が、そのエントリについて、送信回数を１減らし、ゼロになった場合はエントリを消去する。ゼロにならなかった場合はフリット到着時刻に送信間隔を足しこむ。
【００６５】
サイクル数を１進め（ステップＳ１２０６）、図８に示すステップＳ１１０２に戻る。
【００６６】
続いて、図１１、図８〜図１０を参照して、第１の実施の形態に係るルータを含む、ＮｏＣ技術を用いた情報処理装置の具体例を説明する。
【００６７】
図１１は、４つのＩＰからなるネットワークを示す。図１１に示すように、ＩＰとルータからなる構成要素が２次元に配列されている。ＩＰ５１−１が、時刻５から、ＩＰ５１−４に、時間間隔５でパケットを送るとする。パケットは、ルータ５２−１、５２−２、５２−４の順に辿るとする。ここで、チャネルを通過する時間Ｔｐを1サイクル、ＳＡステージを前倒しできない際パケットがルータを通過する時間Ｔｓを２サイクル、ＳＡステージを前倒しできる際パケットがルータを通過する時間Ｔｆを１サイクルとする。なお、以下に記す時刻においても、その単位はサイクルであるとして、上述の条件で、以下、時系列での本実施の形態の動作について詳述する。
【００６８】
時刻０に、ＩＰ５１−１が、制御パケットの内容を、送信先がＩＰ５１−４、制御パケットの送信後に送信されるパケット（フリット）の送信開始時刻が５、時間間隔が５サイクル、回数が２、送信間隔のずれ幅の最大値を２サイクルと設定する。そして、ＩＰ５１−１が制御パケット投入部５１３を通じてＩＰ５１−４に向けて制御パケットを送る（ステップＳ１１０１）。
【００６９】
時刻０に、ルータ５２−１は、制御パケットがＩＰ５１−１から到着したため、内部クロスバーを、ＩＰ５１−１が入力、ルータ５２−２が出力となるよう設定する。ＳＡステージが前倒しできないため、制御パケットは時刻３にルータ５２−２に到着する。制御パケットを用いてその経過時間を計るため、制御パケットにＩＰ５１−１からのホップ数１を記録する（ステップＳ１１０２）。
【００７０】
ルータ５２−１は、制御パケットの内容をフリット到着時刻管理部５０３に記録する。記録する内容は、フリット到着時刻が５、入力チャネルがＩＰ５１−１、出力チャネルがルータ５２−２、送信回数が２、送信間隔のずれ幅の最大値が２サイクルである（ステップＳ１１０３）。
【００７１】
時刻０においては、ステップＳ１１０４からステップＳ１１０７、ステップＳ１２０１からステップＳ１２０５の処理は行われず、時刻であるサイクル数が１に進む（ステップＳ１２０６）。
【００７２】
時刻１においては、ステップＳ１１０２からステップＳ１１０７、ステップＳ１２０１からステップＳ１２０５の処理は行われず、時刻であるサイクル数が２に進む（ステップＳ１２０６）。
【００７３】
時刻２においては、ステップＳ１１０２からステップＳ１１０７、ステップＳ１２０１からステップＳ１２０５の処理は行われず、時刻であるサイクル数が３に進む（ステップＳ１２０６）。
【００７４】
時刻３に、ルータ５２−２は、制御パケットがルータ５２−１から到着したため、内部クロスバーをルータ５２−１が入力、ルータ５２−４が出力となるよう設定する。制御パケットは時刻６にルータ５２−４に到着するので、制御パケットを用いてその経過時間を計るため、制御パケットにＩＰ５１−１からのホップ数２を記録する（ステップＳ１１０２）。
【００７５】
又、ルータ５２−２は、制御パケットの内容をフリット到着時刻管理部５０３に記録する。記録する内容は、フリット到着時刻が７、入力チャネルがルータ５２−１、出力チャネルがルータ５２−４、送信回数が２、送信間隔のずれ幅の最大値が２サイクルである（ステップＳ１１０３）。
【００７６】
フリット到着時刻は、ＩＰ５１−１から送信されたフリットがルータ５２−２へ到着する時刻であり、制御パケットに記録された開始時刻に、ホップ数1に(Ｔｆ+Ｔｐ)を乗じたものを加えたものである。
【００７７】
時刻３においては、ステップＳ１１０４からステップＳ１１０７、ステップＳ１２０１からステップＳ１２０５の処理は行われず、時刻であるサイクル数が４に進む（ステップＳ１２０６）。
【００７８】
時刻４においては、ステップＳ１１０２からステップＳ１１０５の処理は行われない。ルータ５２−１において、フリット到着時刻管理部５０３のエントリの１つのフリット到着時刻が５であり、次のサイクルであるため、スイッチ割り当て部５０９に、ルータ５２−１の内部クロスバーについて、ＩＰ５１−１に接続されている入力ポートに対して、ルータ５２−２に接続されている出力チャネルを要求する（ステップＳ１１０６）。
【００７９】
スイッチ割り当て部５０９は、出力チャネルに対する調停を行う。この場合、要求は１つだけなので、要求を認める。さらに、クロスバー部５１０の設定を行う。すなわち、ＩＰ５１−１に接続されている入力ポートに対して、ルータ５２−２に接続されている出力チャネルがつながるように設定する（ステップＳ１１０７）。また、複数の要求が競合し、複数の「定期的到着の予告」が同じタイミングで同じ出力チャネルを要求したときは、スイッチ割り当て部５０９で調停されて、片方の要求が負ける。両方のパケットが同じタイミングで入力チャネルに到着した場合は、負けた方は（ステップＳ１２０１でＮｏの方を辿って）、従来の（３段くらいの）パイプラインステージを経てルーティングされて、余分な遅延時間が追加される。この遅延時間は、勝った方は出力チャネル要求を停止し、負けた方は出力チャネル要求を、当該ルータに実際に対応するパケットが到着するまでしばらく出し続ける（ステップＳ１１０４、Ｓ１１０６、Ｓ１２０５）。
【００８０】
時刻４においては、ステップＳ１２０１からステップＳ１２０５の処理は行われず、時刻であるサイクル数が５に進む（ステップＳ１２０６）。
【００８１】
時刻５においては、ステップＳ１１０２からステップＳ１１０７の処理は行われない。
【００８２】
時刻５に、ＩＰ５１−１がＩＰ５１−４をあて先としてフリットを送ろうと試みる場合、ルータ５２−１の、ＩＰ５１−１に接続されている入力チャネルに対してフリットが投入される。この場合は、フリット到着時刻管理部５０３が予期した入力チャネルにフリットが到着したため、予め行われていた入出力接続関係を用いてクロスバー部５１０はスイッチングを行う（ステップＳ１２０２）。つまり、先の制御パケットの送信での、ＩＰ５１−１が入力、ルータ５２−２が出力となるようなクロスバー部５１０の設定を用いる。
【００８３】
これにより、ＳＡステージが前倒しされたため、ルータを通過する時間はＴｆ（＝１サイクル）、チャネルを通過する時間はＴｐ（＝１サイクル）となり、パケットは時刻７にルータ５２−２に到着する。クロスバー部５１０の接続設定が予めなされていない場合は、ルータを通過する時間はＴｓ（＝２サイクル）、チャネルを通過する時間はＴｐ（＝１サイクル）となり、パケットは時刻８にルータ５２−３に到着することになる。
【００８４】
このフリットはフリット到着時刻管理部５０３が予期したフリットであったので、ルータ５２−１のフリット到着時刻管理部５０３の該当エントリについて、送信回数を1減らして１にする。さらに、フリット到着時刻に送信間隔５を足しこんで１０とする（ステップＳ１２０３、Ｓ１２０５）。
【００８５】
時刻であるサイクル数が６に進む（ステップＳ１２０６）。
【００８６】
時刻６に、ルータ５２−４は、制御パケットがルータ５２−２から到着したため、クロスバー部をルータ５２−２が入力、ＩＰ５１−４が出力となるよう設定する。制御パケットは送信先のＩＰ５１−４に隣接するルータに到着したため、これ以上作業を行わない。又、ルータ５２−４は、制御パケットの内容をフリット到着時刻管理部５０３に記録する。記録する内容は、フリット到着時刻が９、入力チャネルがルータ５２−２、出力チャネルがＩＰ５１−４、送信回数が２、送信間隔のずれ幅の最大値が２である（ステップＳ１１０３）。
【００８７】
ここで、フリット到着時刻は、ＩＰ５１−１から送信されたフリットがルータ５２−４へ到着する時刻であり、制御パケットに記録された開始時刻に、ホップ数２に(Ｔｆ+Ｔｐ)を乗じたものを加えたものである。図１２に、各ルータのフリット到着時刻管理部に記録される項目を示す。制御パケットは、ＩＰ部５１２が後に送るパケットと同じ経路をたどるように送られるので、図１２の入力チャネル及び出力ポート（出力チャネル）は、各ルータで制御パケットを送受信した入力チャネル及び出力ポートである。
【００８８】
時刻６においては、ステップＳ１１０４からステップＳ１１０５の処理は行われない。
【００８９】
ルータ５２−２において、フリット到着時刻管理部５０３のエントリの１つのフリット到着時刻が７であり、次のサイクルであるため、スイッチ割り当て部５０９に、ルータ５２−２のクロスバー部について、ルータ５２−１に接続されている入力チャネルに対して、ルータ５２−４に接続されている出力チャネルを要求する（ステップＳ１１０６）。
【００９０】
スイッチ割り当て部５０９は、出力チャネルに対する調停を行う。この場合、要求は１つだけなので、要求を認める。さらに、クロスバー部５１０の設定を行う。すなわち、ルータ５２−１に接続されている入力チャネルに対して、ルータ５２−４に接続されている出力チャネルがつながるように設定する（ステップＳ１１０７）。
【００９１】
時刻６においては、ステップＳ１２０１からステップＳ１２０５の処理は行われない。
【００９２】
時刻であるサイクル数が７に進む（ステップＳ１２０６）。
【００９３】
時刻７においては、ステップＳ１１０２からステップＳ１１０７の処理は行われない。
【００９４】
時刻７に、フリットがルータ５２−２に到着する。フリット到着時刻管理部５０３が予期した入力チャネルにフリットが到着したため、予め行われていた入出力対応関係割当てを用いてスイッチングを行う（ステップＳ１２０１、Ｓ１２０２）。ＳＡステージが前倒しされたため、フリットは時刻９にルータ５２−４に到着する。
【００９５】
このフリットはフリット到着時刻管理部５０３が予期したフリットであったので、ルータ５２−２のフリット到着時刻管理部５０３の該当エントリについて、送信回数を１減らして１にする。さらに、フリット到着時刻に送信間隔５を足しこんで１２とする（ステップＳ１２０３、Ｓ１２０５）。
【００９６】
時刻であるサイクル数が８に進む（ステップＳ１２０６）。
【００９７】
以降、同様に繰り返してフリットがＩＰ５２−４に向かって進んでいく。時刻８に、ルータ５２−４のクロスバー部５１０がルータ５２−２が入力、ＩＰ５１−４が出力となるよう調停、設定される。時刻９にフリットがルータ５２−４に到着し、この設定を用いて、時刻１１にＩＰ５２−４に到着する。
【００９８】
時刻９に、ルータ５２−１のクロスバー部５１０がＩＰ５１−１が入力、ルータ５２−２が出力となるよう調停、設定される。時刻１０に、再び、フリットがＩＰ５１−１によりルータ５２−１に投入され、時刻１２にルータ５２−２に到着する。この際に、ルータ５２−１のフリット到着時刻管理部５０３のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【００９９】
時刻１１に、ルータ５２−２のクロスバー部５１０が、ルータ５２−１が入力、ルータ５２−４が出力となるよう調停、設定される。時刻１２に、フリットがルータ５２−２に到着し、時刻１４にルータ５２−４に到着する。この際に、ルータ５２−２のフリット到着時刻管理部５０３のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【０１００】
時刻１３に、ルータ５２−４のクロスバー部５１０がルータ５２−２が入力、ＩＰ５１−４が出力となるよう調停、設定される。時刻１４に、フリットがルータ５２−４に到着し、時刻１６にＩＰ５１−４に到着する。この際に、ルータ５２−４のフリット到着時刻管理部５０３のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【０１０１】
この一連の動作により、一定間隔の、２回のパケット送信の処理が終了する。
【０１０２】
以上説明したように、第１の実施の形態によれば、ルーティングの処理時間を短縮することができる。
【０１０３】
その第１の理由は、一定間隔でパケットを送信する場合、クロスバー部５１０の入出力対応関係割当て処理に必要な情報を制御パケットに載せて、送信元から送信先に送ることにより、経路の途中にあるルータに対して、入出力対応関係割当て処理（ＳＡ）に必要な情報が知らされるため、クロスバー部５１０の入出力対応関係割当てを前倒して処理することができる。このことによって、パケットが到着してから入出力対応関係割当て処理を行う必要がなくなるためである。
【０１０４】
その第２の理由は、一定の時間間隔のパケットの送信について、そのフリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値をルータに記録することにより、従来のパケットのルータ（例えば、非特許文献４）において、ある入力チャネルに到着するフリットが要求する出力チャネルの予測が失敗するような場合にも、入力チャネルと出力チャネルの対応関係を正しく把握しルータ内のクロスバーの入出力対応関係割当てを前倒しすることができるためである。
【０１０５】
又、第１の実施の形態の具体例によれば、ルーティングの処理時間を短縮する際に、ネットワークの遅延の増大を抑えることができる。
【０１０６】
その理由は、従来のパケットのルータ（例えば、非特許文献５）は、データパケットを送信する前に、制御パケットを送信するが、本発明では、一定の時間間隔のパケットの送信について、最初に制御パケットを送れば、そのフリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値はルータのフリット到着時刻管理部５０３に記録され、何度も再利用されるため、毎回制御パケットを送る必要がないため、ネットワークに投入されるパケット数が減少するためである。
［第２の実施の形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。ここで図１３は、本発明の第２の実施の形態に係るルータのブロック図である。図１３ではＩＰ５１をルータの他に示している。図２２は図１３の一部のブロック間の接続関係を示すブロック図である。図２２において、フリット到着時刻管理部５０３’−１〜５０３’−Ｎは図１３のフリット到着時刻管理部５０３’、ルーティング計算部５０６−１〜５０６−Ｎは図１３のルーティング計算部５０６、バーチャルチャネル割り当て部５０７−１〜５０７−Ｎは図１３のバーチャルチャネル割り当て部５０７に対応する。
【０１０７】
図１３を参照すると、本発明の第２の実施の形態にかかるルータは、前のホップとなるルータからフリットを入力する入力チャネル５０１と、フリットをバッファする入力ポート部５０２と、フリット到着時刻管理部５０３’と、フリットに対し次のホップのルータを決定するルーティング計算部５０６と、パケットに対しバーチャルチャネル番号を割り当てるバーチャルチャネル割り当て部５０７と、ルータ内部のクロスバーの、フリットの間での調停と、入力チャネルと出力チャネルの接続関係の設定を行うスイッチ割り当て部５０９’と、入力チャネルと出力チャネルを接続するクロスバー部５１０と、を備える。フリット到着時刻管理部５０３’は、一定間隔のパケット送信について、フリットの到着時刻、入力チャネル、出力チャネル、間隔と、送信の回数と、間隔のずれ幅の最大値を記録し、さらに、記録したフリット到着時刻とその間隔にしたがって複数回、フリット到着時刻の前に、クロスバー部５１０に対して、パケットが入力される入力チャネルに対して、パケットが出力されると予想される出力チャネルを要求する。
【０１０８】
本発明の第２の実施の形態にかかるルータは、次のルータに接続する出力チャネル５１１と、通信主体となるプロセッサなどからなるＩＰ部５１２と、一定間隔のパケットの送信についての情報を制御パケットに書き込み、ネットワークに投入する制御パケット投入部５１３と、スイッチ割当て部５０９によってフリット到着前に行われたクロスバー部の入力チャネルと出力チャネルの接続関係が正しかったかどうか検証するスイッチ割当て検証部５１７とを備える。
【０１０９】
ＩＰ部５１２と制御パケット投入部５１３とは、ＩＰ５１を構成し、ＩＰ５１は図１８及び図１９のＩＰ５１−１〜ＩＰ５１−６のそれぞれに該当する。図１３のＩＰ部５１２と制御パケット投入部５１３以外の構成部はルータを構成し、図１３のルータ５２−１〜ルータ５２−６のそれぞれに該当する。フリット到着時刻管理部５０３’、ルーティング計算部５０６、バーチャルチャネル割当部５０７は入力ポートの数だけ設けられる。図１８及び図１９では入力ポートの数は５つなので、フリット到着時刻管理部５０３’、ルーティング計算部５０６、バーチャルチャネル割当部５０７は５こずつ設けられることになる。入力ポートの数だけ設けられたバーチャルチャネル割当て部５０７へは、クレジット入力５０８がそれぞれ入力され、入力ポート部５０２からクレジット出力５１６が出力される。
【０１１０】
図１３を参照すると、本発明の第２の実施の形態にかかるルータは以下の動作を行う装置である。つまり、制御パケット投入部５１３が、ＩＰ部５１２の一定間隔のパケットの送信について、その開始時刻、間隔と送信の回数と間隔のずれ幅の最大値を制御パケットに書き込み、その制御パケットを、ＩＰ部５１２の複数回のパケット送信に対して１回だけネットワークに投入する。
【０１１１】
フリット到着時刻管理部５０３’は、入力チャネル５０１から制御パケットを入力し、経路がルータに対して直進でないときのみ、フリットの到着時刻、入力チャネル、出力チャネル、間隔、送信の回数、間隔のずれ幅の最大値を記録する。
すなわち、経路が屈曲する箇所に存するルータにおいて、制御パケットを受信し、フリットの到着時刻、入力チャネル、出力チャネル、間隔、送信の回数、間隔のずれ幅の最大値を記録することになる。
【０１１２】
フリット到着時刻管理部５０３’は、更に、記録したフリット到着時刻とその間隔にしたがって複数回、フリット到着時刻の前に、クロスバー部５１０に対して、フリットが入力される入力チャネルに対して、フリットが出力されると予想される出力チャネルを要求する。
【０１１３】
スイッチ割り当て部５０９’は、この要求に対する調停と、調停の結果に基づくクロスバー部５１０の入出力接続関係設定処理をフリット到着時刻の前に行う。
【０１１４】
スイッチ割り当て部５０９’は、出力チャネルを要求していない入力チャネルについては、ルータに対して直進となるように、入力チャネルに対する出力チャネルの設定を行う。
【０１１５】
クロスバー部５１０は、予め行われていた入出力対応関係割当ての結果を用いて到着したフリットのスイッチングを行い、結果として、入力チャネルに対する調停と、入出力接続関係設定処理を前倒しし、ルーティングの時間を短縮する。
【０１１６】
スイッチ割当て検証部５１７は、予め行われていた入出力接続関係設定処理が実際到着したフリットのルーティングと一致しているか否かを検証する。又、制御パケットや、それに記録された一定間隔で送信が行われるパケットに加え、それ以外のパケットについて、以下の動作を行う。
【０１１７】
入力ポート部５０２は入力チャネル５０１から入力したフリットをバッファする。
【０１１８】
ルーティング計算部５０６は、入力したフリットに対して次のルータを計算する。
【０１１９】
バーチャルチャネル割り当て部５０７は入力したパケットに対するバーチャルチャネル番号を決定する。
【０１２０】
スイッチ割り当て部５０９’はクロスバー部５１０の入力チャネルに対する出力チャネルの要求の調停と、入力チャネルと出力チャネルの接続関係の設定を行う。
【０１２１】
クロスバー部５１０はフリットを適切な出力チャネル５１１に送出する。
【０１２２】
次に本実施の形態にかかるルータ における一定間隔のパケットの送信に対する動作について、図１３、図１４〜図１７を参照して説明する。ここで、図１４〜図１７は、本発明の第２の実施の形態に係るルータにおける処理例を示すフローチャートである。
【０１２３】
まず、ルータに接続されたＩＰ部５１２が、一定の時間間隔で、ある送信先のＩＰ部５１２にパケットを送信するとする。ＩＰ部５１２は、この送信先と、送信開始時刻と、送信回数と、送信間隔と、送信間隔のずれ幅の最大値を制御パケットに記録し、制御パケット投入部５１３を通して入力ポート部５０２に入力する（ステップＳ１４０１）。
【０１２４】
送信開始時刻は、ＩＰ部５１２が送信を開始する時刻を、サイクル数で計ったものでもよい。送信先は、ＩＰやルータの番号で表現してもよいし、ＩＰやルータに到るクロスバー部５１０の出力チャネルの番号の列で表現してもよい。
【０１２５】
ルータの処理において、入力チャネル５０１あるいは入力ポート部５０２からのクロスバー部５１０の出力チャネルへの要求の調停と、クロスバー部５１０の入力ポートと出力チャネルの接続関係の設定の作業のパイプラインステージをSwitch Allocation(ＳＡ)ステージと呼ぶ。
【０１２６】
ＳＡステージを前倒しできない際、パケットがルータを通過する時間をTsとする。ＳＡステージを前倒しできる際の時間をＴｆとした場合、制御パケットを送るタイミングは、送信先までのホップ数をＨとして、（Ｔｓ−Ｔｆ）×Ｈサイクル以上前でもよい。
【０１２７】
制御パケットを、送信元ＩＰからルータを経て送信先ＩＰへ送り、制御パケットは、ＩＰ部５１２からの経過時間を計っていく。（ステップＳ１４０２）。この際に、ＩＰ部５１２が後に送るパケットと同じ経路をたどるように制御パケットを送る。制御パケットを用いて、ＩＰ部５１２からの経過時間をサイクル数で計ってもよいし、ホップ数を数えることで計ってもよい。
【０１２８】
経路の途中にあるルータがこの制御パケットを受信し、次のホップのルータが入力チャネルに対して直進でなかった場合には、フリット到着時刻管理部５０３’が、制御用パケットの情報を記録する（ステップＳ１４０３）。直進ではあるとは、メッシュやトーラスネットワークなど、ルータに割り当てられた座標について、１つの次元の座標のみが変化する場合を指す。
【０１２９】
図１８に直進の例を示す。この例では、点線で記した経路がルータ５２−２に対して直進である。
【０１３０】
又、ステップＳ１４０３において、チャネルを通過する時間をＴｐとしたとき、記録する情報は、フリットに記録された送信開始時刻にＨ×（Ｔｆ+Ｔｐ）を加えたものを到着時刻としたものと（Ｈはホップ数）、制御パケットが入力された入力チャネルの番号と、制御パケットの次のホップのルータに対応する出力チャネルの番号と、フリットに記録された送信回数と、送信間隔と、送信間隔のずれ幅の最大値である。
【０１３１】
ステップＳ１４０４からステップＳ１４０６については、第１の実施の形態のステップＳ１１０４からステップＳ１１０６と同様であるので、説明を省略する。
【０１３２】
スイッチ割り当て部５０９’はクロスバー部５１０の出力チャネルに対する要求の調停を行い、要求が行われた出力チャネルについては調停結果に基づいて、要求が行われなかった出力チャネルについてはルータに対して直進となるように、クロスバー部５１０の入力ポートと出力チャネルの接続関係の設定を行う（ステップＳ１４０７）。
【０１３３】
この際に、フリットに与えられた優先度を用いて同じ入力ポート番号を持つ要求同士あるいは同じ出力チャネル番号を持つ要求同士を調停してもよい。また、要求が満たされなかった場合は、次のサイクルに再び要求を行う。
【０１３４】
続く、図１８のステップＳ１５０１では、フリット到着時刻管理部５０３が予期した入力チャネルにフリットが到着したか否かを判別し、到着した場合（ＹＥＳ）、ステップＳ１５０２へ進む。そうでない場合（ＮＯ）、ステップＳ１５０９へ進む。
【０１３５】
予期した入力チャネルにフリットが到着しない場合は、例えば、非特許文献４のような関連技術と同じ方法でルーティングを行う（ステップＳ１５０９）。そして、手順はステップＳ１５０６へ進む。
【０１３６】
クロスバー部５１０が、予め行われていた入出力対応関係割当てを用いてスイッチングを行うことで、ＳＡのステージの時間を前倒しし、フリットは次のルータに送られる（ステップＳ１５０２）。図３（Ｃ）に関連技術におけるルータの作業のパイプラインステージを示す。関連技術ではＳＡ、ＳＴの作業を行う。ここでＳＡのステージが前倒しされることによって、実質ＳＴのステージのみとなり、ルーティングの時間が短縮される。なお、ＶＡのステージもＳＡのステージと同じタイミングで行うことによって前倒しをすることができる。
【０１３７】
ステップＳ１５０３では、スイッチ割当て検証部５１７が、予期したフリットがルータに到着したか否かを判定し、到着した場合（ＹＥＳ）、ステップＳ１５０５へ進み、そうでない場合（ＮＯ）、ステップＳ１５０６へ進む。このステップＳ１５０３での判定は、スイッチ割当て検証部５１７が、フリットが到着した後に、ルーティング計算部５０６によりフリットが出力されるべきクロスバー部５１０の出力チャネルを計算し、その結果が、予め行われていたクロスバー部５１０の入出力対応関係割当てと一致していた場合にＹＥＳと判定するという方法で行う。
【０１３８】
フリット到着時刻管理部５０３’が、そのエントリについて、送信回数を1減らし、ゼロになった場合はエントリを消去する。ゼロにならなかった場合はフリット到着時刻に送信間隔を足しこむ（ステップＳ１５０５）。
【０１３９】
ステップＳ１５０６では、スイッチ割当て検証部５１７は、フリット到着時刻管理部５０３’によるスイッチ割当てと、入力チャネルについてルータに対して直進となるようなスイッチ割当ての両方について、その割当てが正しかったかどうか判定し、正しかった場合（ＹＥＳ）、ステップＳ１５０８へ進み、そうでない場合（ＮＯ）、ステップＳ１５０７へ進む。このステップＳ１５０６での判定は、スイッチ割当て検証部５１７が、フリットが到着した後に、ルーティング計算部５０６によりフリットが出力されるべきクロスバー部５１０の出力チャネルを計算し、その結果が、予め行われていたクロスバー部５１０の入出力対応関係割当てと一致していた場合にＹＥＳと判定するという方法で行う。
【０１４０】
スイッチ割当て検証部５１７は、正しくなかった場合は、フリットを、次のルータに到着する前に無効化する（ステップＳ１５０７）。無効化は、フリットがチャネルに出力されないようにしてもよい。
【０１４１】
サイクル数を１進め、図１４のステップＳ１４０２に戻る（ステップＳ１５０８）。
【０１４２】
続いて、図１９、図１４〜図１７を参照して、第２の実施の形態に係るルータの具体例を説明する。図１９に示すように、ＩＰとルータからなる構成要素が２次元に配列されている。
【０１４３】
図１９は、６つのＩＰからなるネットワークを示す。ＩＰ５１−１が、時刻５から、ＩＰ５１−６に、時間間隔５でパケットを送るとする。パケットは、ルータ５２−１、２、３、６の順に辿るとする。ここで、チャネルを通過する時間Ｔｐを1サイクル、ＳＡステージを前倒しできない際パケットがルータを通過する時間Ｔｓを２サイクル、ＳＡステージを前倒しできる際パケットがルータを通過する時間Ｔｆを１サイクルとする。なお、以下に記す時刻においても、その単位はサイクルであるとして、上述の条件で、以下、時系列での本実施の形態の動作について詳述する。
【０１４４】
時刻０に、ＩＰ５１−１が、制御パケットの内容を、送信先がＩＰ５１−６、送信開始時刻が５、時間間隔が５サイクル、回数が２、送信間隔のずれ幅の最大値を２サイクルと設定する。そして、ＩＰ５１−１が制御パケット投入部５１３を通じてＩＰ５１−６に制御パケットを送る（ステップＳ１４０１）。
【０１４５】
時刻０に、ルータ５２−１に制御パケットがＩＰ５１−１から到着する。ＳＡステージが前倒しできないため、制御パケットは時刻３にルータ５２−２に到着する。制御パケットを用いてその経過時間を計るため、ＩＰ５１−１からのホップ数1を記録する（ステップＳ１４０２）。
【０１４６】
ルータ５２−１は、制御パケットの内容をフリット到着時刻管理部５０３’に記録する。記録する内容は、フリット到着時刻が５、入力チャネルがＩＰ５１−１、出力チャネルがルータ５２−２、送信回数が２、送信間隔のずれ幅の最大値が２サイクルである（ステップＳ１４０３）。
【０１４７】
時刻０においては、ステップＳ１４０４からステップＳ１４０７、ステップＳ１５０１からステップＳ１５０７の処理は行われず、時刻であるサイクル数が１に進む（ステップＳ１５０８）。
【０１４８】
時刻１においては、ステップＳ１４０２からステップＳ１４０７、ステップＳ１５０１からステップＳ１５０７の処理は行われず、時刻であるサイクル数が２に進む（ステップＳ１５０８）。
【０１４９】
時刻２においては、ステップＳ１４０２からステップＳ１４０７、ステップＳ１５０１からステップＳ１５０７の処理は行われず、時刻であるサイクル数が３に進む（ステップＳ１５０８）。
【０１５０】
時刻３に、ルータ５２−２に制御パケットがルータ５２−１から到着する。制御パケットは時刻６にルータ５２−４に到着する。制御パケットを用いてその経過時間を計るため、制御パケットにＩＰ５１−１からのホップ数２を記録する（ステップＳ１４０２）。
【０１５１】
又、制御パケットは、ルータ５２−２を直進する、つまりルータ５２−１から到着してルータ５２−３へ進むため、制御パケットの内容をフリット到着時刻管理部５０３’に記録しない（ステップＳ１４０３）。
【０１５２】
時刻３においては、ステップＳ１４０４からステップＳ１４０７、ステップＳ１５０１からステップＳ１５０７の処理は行われず、時刻であるサイクル数が４に進む（ステップＳ１５０８）。
【０１５３】
時刻４においては、ステップＳ１４０２からステップＳ１４０５の処理は行われない。ルータ５２−１において、フリット到着時刻管理部５０３’のエントリの１つのフリット到着時刻が５であり、次のサイクルであるため、スイッチ割り当て部５０９に、ルータ５２−１のクロスバー部５１０について、ＩＰ５１−１に接続されている入力ポートに対して、ルータ５２−２に接続されている出力チャネルを要求する（ステップＳ１４０６）。
【０１５４】
スイッチ割り当て部５０９は、出力チャネルに対する調停を行う。この場合、要求は１つだけなので、要求を認める。さらに、クロスバー部５１０の設定を行う。すなわち、ＩＰ５１−１に接続されている入力ポートに対して、ルータ５２−２に接続されている出力チャネルがつながるように設定する（ステップＳ１４０７）。
【０１５５】
時刻４においては、ステップＳ１５０１からステップＳ１５０７の処理は行われず、時刻であるサイクル数が５に進む（ステップＳ１５０８）。
【０１５６】
時刻５においては、ステップＳ１４０２からステップＳ１４０７の処理は行われない。
【０１５７】
時刻５に、ＩＰ５１−１がＩＰ５１−６をあて先としてフリットを送ろうと試みる場合、ルータ５２−１の、ＩＰ５１−１に接続されている入力チャネルに対してフリットが投入される。この場合は、フリット到着時刻管理部５０３’が予期した入力チャネルにフリットが到着したため、予め行われていた入出力接続関係を用いてクロスバー部５１０はスイッチングを行う（ステップＳ１５０２）。つまり、先のサイクルでの、ＩＰ５１−１が入力、ルータ５２−２が出力となるようなクロスバー部５１０の設定を用いる。
【０１５８】
これにより、ＳＡステージが前倒しされたため、ルータを通過する時間はＴｆ（＝１サイクル）、チャネルを通過する時間はＴｐ（＝１サイクル）となり、パケットは時刻７にルータ５２−２に到着する。クロスバー部５１０の接続設定が予めなされていない場合は、ルータを通過する時間はＴｓ（＝２サイクル）、チャネルを通過する時間はＴｐ（＝１サイクル）となり、パケットは時刻８にルータ５２−３に到着することになる。
【０１５９】
このフリットはフリット到着時刻管理部５０３’が予期したフリットであったので、ルータ５２−１のフリット到着時刻管理部５０３’の該当エントリについて、送信回数を１減らして１にする。さらに、フリット到着時刻に送信間隔５を足しこんで１０とする（ステップＳ１５０３、Ｓ１５０５）。
【０１６０】
このフリットはフリット到着時刻管理部５０３’が予期したフリットであったので、フリット到着時刻管理部５０３’によるスイッチ割当てが正しかったことになり、時刻であるサイクル数が６に進む（ステップＳ１５０６、Ｓ１５０８）。
【０１６１】
時刻６に、制御パケットがルータ５２−２からルータ５２−３に到着する。また、ルータ５２−３は、制御パケットの内容をフリット到着時刻管理部５０３’に記録する。記録する内容は、フリット到着時刻が９、入力チャネルがルータ５２−２、出力チャネルがルータ５２−６、送信回数が２、送信間隔のずれ幅の最大値が２である（ステップＳ１４０３）。
【０１６２】
ここで、フリット到着時刻は、ＩＰ５１−１から送信されたフリットがルータ５２−３へ到着する時刻であり、制御パケットに記録された開始時刻に、ホップ数２に(Ｔｆ+Ｔｐ)を乗じたものを加えたものである。
【０１６３】
時刻６においては、ステップＳ１４０４からステップＳ１４０５の処理は行われない。
【０１６４】
ルータ５２−２において、フリット到着時刻管理部５０３’はスイッチ割り当て部５０９に出力チャネルを要求しない（ステップ１４０６）。従って、スイッチ割当て部５０９はルータ５２−１に接続されている入力チャネルに対し、ルータ５２−３に接続されている出力チャネルがつながるように設定する（ステップＳ１４０７）。
【０１６５】
時刻６においては、ステップＳ１５０１からステップＳ１５０７の処理は行われない。
【０１６６】
送信開始からのサイクル数が７に進む（ステップＳ１５０８）。
【０１６７】
時刻７においては、ステップＳ１４０２からステップＳ１４０７の処理は行われない。
【０１６８】
時刻７に、フリットがルータ５２−２に到着する。フリット到着時刻管理部５０３’が予期した入力チャネルにフリットが到着したわけではないため、関連技術と同様の方法でルーティングする（ステップＳ１５０１、Ｓ１５０９）。直前のサイクルで、直進するように、つまりルータ５２−１からルータ５２−３へ進むようにクロスバー部５１０が設定されており、これはこのフリットに対して正しい設定である（ステップＳ１５０６）。ＳＡステージが前倒しされたため、フリットは時刻９にルータ５２−３に到着する。
【０１６９】
時刻であるサイクル数が８に進む（ステップＳ１５０８）。
【０１７０】
時刻７においては、ステップＳ１４０２からステップＳ１４０５の処理は行われない。
【０１７１】
ルータ５２−３において、フリット到着時刻管理部５０３’のエントリの１つのフリット到着時刻が９であり、次のサイクルであるため、スイッチ割り当て部５０９に、ルータ５２−３のクロスバー部５１０について、ルータ５２−２に接続されている入力チャネルに対して、ルータ５２−６に接続されている出力チャネルを要求する（ステップ１４０６）。
【０１７２】
スイッチ割り当て部５０９は、出力チャネルに対する調停を行う。この場合、要求は１つだけなので、要求を認める。さらに、クロスバー部５１０の設定を行う。すなわち、ルータ５２−２に接続されている入力チャネルに対して、ルータ５２−６に接続されている出力チャネルがつながるように設定する（ステップＳ１４０７）。
【０１７３】
時刻８においては、ステップＳ１５０１からステップＳ１５０７の処理は行われない。
【０１７４】
時刻であるサイクル数が９に進む（ステップＳ１５０８）。
【０１７５】
時刻９に、制御パケットがルータ５２−３からルータ５２−６に到着する。制御パケットは送信先のＩＰ５１−６に隣接するルータに到着したため、これ以上作業を行わない。また、ルータ５２−６は、制御パケットの内容をフリット到着時刻管理部５０３’に記録する。記録する内容は、フリット到着時刻が１１、入力チャネルがルータ５２−３、出力チャネルがＩＰ５１−６、送信回数が２、送信間隔のずれ幅の最大値が２である（ステップＳ１４０３）。フリット到着時刻は、ＩＰ５１−１から送信されたフリットがルータ５２−６へ到着する時刻であり、制御パケットに記録された開始時刻に、ホップ数３に(Ｔｆ+Ｔｐ)を乗じたものを加えたものである。図２０に、各ルータのフリット到着時刻管理部に記録される項目を示す。
【０１７６】
時刻９に、ステップＳ１４０４はＮｏである。
【０１７７】
時刻９に、ルータ５２−１において、フリット到着時刻管理部５０３’のエントリの１つのフリット到着時刻が１０であり、次のサイクルであるため、ルータ５２−１のクロスバー部５１０は、ＩＰ５１−１が入力、ルータ５２−２が出力となるよう調停、設定される（ステップＳ１４０６、Ｓ１４０７）。これは、ＩＰ５１−１からの２回目の送信に相当する。
【０１７８】
時刻９に、フリットがルータ５２−３に到着する。フリット到着時刻管理部５０３’が予期した入力チャネルにフリットが到着したため、予め行われていた入出力対応関係割当てを用いてスイッチングを行う（ステップＳ１５０１、Ｓ１５０２）。ＳＡステージが前倒しされたため、フリットは時刻９にルータ５２−６に到着する。
【０１７９】
このフリットはフリット到着時刻管理部５０３’が予期したフリットであったので、ルータ５２−３のフリット到着時刻管理部５０３’の該当エントリについて、送信回数を１減らして１にする。さらに、フリット到着時刻に送信間隔５を足しこんで１２とする（ステップＳ１５０３、Ｓ１５０５）。
【０１８０】
ルータ５２−３のフリット到着時刻管理部５０３’によるスイッチの割当て、つまり、ルータ５２−２からルータ５２−６への割当ては正しかったので、時刻であるサイクルが１０に進む（ステップＳ１５０６、Ｓ１５０８）。
【０１８１】
以降の処理の実行は省略しながら説明する。
【０１８２】
時刻１０に、再び、フリットがＩＰ５１−１によりルータ５２−１に投入され、時刻１２にルータ５２−２に到着する。この際に、ルータ５２−１のフリット到着時刻管理部５０３’のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【０１８３】
時刻１０に、ルータ５２−６のクロスバー部５１０がルータ５２−３が入力、ＩＰ５１−６が出力となるよう調停、設定される。時刻１１にフリットがルータ５２−６に到着し、この設定を用いて、時刻１３にＩＰ５１−６に到着する。
【０１８４】
時刻１１に、ルータ５２−２のクロスバー部５１０がルータ５２−１が入力、ルータ５２−３が出力となるよう設定される。これは、フリット到着時刻管理部５０３’によるものではなく、出力チャネルの要求がなかったため、直進に設定されたためであることに注意されたい。時刻１２に、フリットがルータ５２−２に到着し、時刻１４にルータ５２−３に到着する。
【０１８５】
時刻１３に、ルータ５２−３のクロスバー部５１０がルータ５２−２が入力、ルータ５２−６が出力となるよう調停、設定される。時刻１４に、フリットがルータ５２−３に到着し、時刻１６にルータ５２−６に到着する。この際に、ルータ５２−３のフリット到着時刻管理部５０３’のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【０１８６】
時刻１５に、ルータ５２−６のクロスバー部５１０がルータ５２−３が入力、ＩＰ５１−６が出力となるよう調停、設定される。時刻１６に、フリットがルータ５２−６に到着し、時刻１８にＩＰ５１−６に到着する。この際に、ルータ５２−６のフリット到着時刻管理部５０３’のエントリの送信回数はゼロに減ぜられ、このエントリは消去される。
【０１８７】
この一連の動作により、一定間隔の、２回のパケット送信の処理が終了する。
【０１８８】
第２の実施の形態の具体例による、第１の実施の形態の具体例による効果以外の効果は以下の通りである。つまり、ルータ５２−２のフリット到着時刻管理部が何も記録する必要がないため、フリット到着時刻管理部の記憶容量を削減することができる。
【０１８９】
以上説明したように、本実施の形態によれば、ルーティングの処理時間を短縮することができる。
【０１９０】
その第１の理由は、一定間隔でパケットを送信する場合、ルータ内部のクロスバーの入出力対応関係割当て処理に必要な情報を制御パケットに載せて、送信元から送信先に送ることにより、経路の途中にあるルータに対して、入出力対応関係割当て処理に必要な情報が知らされるため、ルータ内のクロスバーの入出力対応関係割当てを前倒して処理できる。これによって、パケットが到着してから入出力対応関係割当て処理を行う必要がなくなるためである。
【０１９１】
その第２の理由は、一定の時間間隔のパケットの送信について、フリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大 値をルータに記録することにより、従来のパケットのルータ（例えば、非特許文献４）においてある入力チャネルに到着するフリットが要求する出力チャネルの予測が失敗するような場合にも、入力チャネルと出力チャネルの対応関係を正しく把握しルータ内のクロスバーの入出力対応関係割当てを前倒しすることができるためである。 
【０１９２】
又、本実施の形態によれば、ルーティングの処理時間を短縮する際に、ネットワークの遅延の増大を抑えることができる。
【０１９３】
その理由は、従来のパケットのルータ（例えば、非特許文献５）は、データパケットを送信する前に、制御パケットを送信するが、本発明では、一定の時間間隔のパケットの送信ついて、最初に制御パケットを送れば、そのフリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値はルータに記録され、何度も再利用されるため、毎回制御パケットを送る必要がないため、ネットワークに投入されるパケット数が減少するためである。
【０１９４】
更に、本実施の形態によれば、ルーティングの処理時間を短縮するため、一定の時間間隔のパケットの送信について、そのフリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値をルータに記録する際に、その記録と、記録の管理部の量を削減できる。
【０１９５】
その理由は、一定の時間間隔のパケットの送信について、その経路上の全てのルータについて、そのフリットの到着時刻、入力チャネル、出力チャネル、間隔、回数、間隔のずれ幅の最大値を記録するのではなく、経路のうち、ルータに対して直進する部分については、そのルータには記録しないためである。直進部分は、フリット到着時刻管理部は動作せず、スイッチ割当て部が代わりにＳＡステージの前倒し作業を行うからである。
［その他の実施の形態］
以上、本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、前記各実施の形態において、バーチャルチャネル割当て部を省略した構成にすることも可能である。
【０１９６】
以上、本発明の代表的な実施形態について説明したが、本発明は、本願の請求の範囲によって規定される、その精神または主要な特徴から逸脱することなく、他の種々の形で実施することができる。そのため、前述した各実施形態は単なる例示にすぎず、限定的に解釈されるべきではない。本発明の範囲は特許請求の範囲によって示すものであって、明細書や要約書の記載には拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲内のものである。
【０１９７】
本願は、２００８年４月３０日に出願された特願２００８−１１９０１９号を基礎とする優先権を主張するものである。そして、特願２００８−１１９０１９号に開示された全ての内容は本願の内容に含まれる。
【符号の説明】
【０１９８】
１０１  ＩＰ
１０２  ネットワークインターフェイス
１０３  ルータ
１０４  チャネル
２０１  入力チャネル
２０２  入力ポート部
２０６  ルーティング計算部
２０７  バーチャルチャネル割り当て部
２０８  クレジット入力
２０９  スイッチ割り当て部
２１０  クロスバー部
２１１  出力チャネル
２１２  ＩＰ部
２１６  クレジット出力
３０１  入力チャネル
３０２  入力ポート部
３０３  予測部
３０６  ルーティング計算部
３０７  バーチャルチャネル割り当て部
３０８  クレジット入力
３０９  スイッチ割り当て部
３１０  クロスバー部
３１１  出力チャネル
３１２  ＩＰ部
３１６  クレジット出力
４０１  制御パケット入力チャネル
４０２  ルーティング計算部
４０３  出力スケジュール部
４０４  出力予約テーブル部
４０５  入力スケジュール部
４０６  入力予約テーブル部
４０７  入力チャネル
４０８  入力ポート部
４０９  クロスバー部
４１０  出力チャネル
４１１  ＩＰ部
４１６  クレジット入力
４１７  クレジット出力
４１８  制御パケット出力チャネル
５０１  入力チャネル
５０２  入力ポート部
５０３，５０３’  フリット到着時刻管理部
５０６  ルーティング計算部
５０７  バーチャルチャネル割り当て部
５０８  クレジット入力
５０９，５０９’  スイッチ割り当て部
５１０  クロスバー部
５１１  出力チャネル
５１２  ＩＰ部
５１３  制御パケット投入部
５１６  クレジット出力
５１７  スイッチ割当て検証部
【図１】
0005387918.tif 000002
【図２】
0005387918.tif 000003
【図３】
0005387918.tif 000004
【図４】
0005387918.tif 000005
【図５】
0005387918.tif 000006
【図６】
0005387918.tif 000007
【図７】
0005387918.tif 000008
【図８】
0005387918.tif 000009
【図９】
0005387918.tif 000010
【図１０】
0005387918.tif 000011
【図１１】
0005387918.tif 000012
【図１２】
0005387918.tif 000013
【図１３】
0005387918.tif 000014
【図１４】
0005387918.tif 000015
【図１５】
0005387918.tif 000016
【図１６】
0005387918.tif 000017
【図１７】
0005387918.tif 000018
【図１８】
0005387918.tif 000019
【図１９】
0005387918.tif 000020
【図２０】
0005387918.tif 000021
【図２１】
0005387918.tif 000022
【図２２】
0005387918.tif 000023