(57)【要約】  ＮｏＣ上の中継装置において、全ての仮想チャネルが同一の宛先へ向うパケットによって占有されると、別の宛先へと向うパケットが中継装置を通過できなくなり、パケットの伝送性能（スループットや遅延時間）が低下する。  中継装置は、複数の宛先の情報が付加されたヘッダおよびヘッダに関連するデータを含むデータ単位を受信する入力バッファと、宛先の情報に対応するデータ単位を格納する複数の仮想チャネルと、宛先が同一か否かにより、複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する宛先比較部と、送信先の中継装置の仮想チャネルの割り当てが決定された仮想チャネルから、格納されたデータ単位を出力する出力部とを備えている。
2012029215.tif 000002
【特許請求の範囲】
【請求項１】
複数の宛先の情報が付加されたヘッダおよび前記ヘッダに関連するデータを含むデータ単位を受信する入力バッファと、
前記宛先の情報に対応するデータ単位を格納する複数の仮想チャネルと、
前記宛先が同一か否かにより、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する宛先比較部と、
前記送信先の中継装置の仮想チャネルの割り当てが決定された仮想チャネルから、格納されたデータ単位を出力する出力部と
を備えた、中継装置。
【請求項２】
前記宛先比較部は、データ単位の宛先を区別し、送信先の中継装置の仮想チャネルが未割り当ての宛先へ送られるデータに対し、優先的に送信先の中継装置の仮想チャネルを割り当てるよう、前記割当順序を決定する、請求項１に記載の中継装置。
【請求項３】
前記宛先比較部は、前記宛先が同一であるデータ単位に対して、前記ヘッダに付与された時間情報に基づいて、前記送信先の中継装置の仮想チャネルの割当順序を決定する、請求項２に記載の中継装置。
【請求項４】
前記宛先比較部は、前記時間情報としてデータが送信されてからの経過時間を用い、前記経過時間が長いデータから優先的に前記送信先の中継装置の仮想チャネルを割り当てる、請求項３に記載の中継装置。
【請求項５】
前記宛先比較部は、前記時間情報として宛先に届くまでの締切時刻を用い、前記締切時刻の残り時間が少ないデータから優先的に前記送信先の中継装置の仮想チャネルを割り当てる、請求項３に記載の中継装置。
【請求項６】
宛先が定められたデータを各々が受け取る複数の入力ポートをさらに備え、
前記出力部は、
各々がデータを出力する複数の出力ポートと、
各入力ポートに対応して設けられ、受け取ったデータを格納する複数の仮想チャネルと、
前記仮想チャネルに格納されたデータの宛先ごとに、時間情報に基づく優先度が最も高いデータを格納する仮想チャネルと、前記優先度が最も高いデータの宛先に到達可能なバスに接続された出力ポートとを接続することで、前記データを各出力ポートから出力するクロスバスイッチと
を備える、請求項１に記載の中継装置。
【請求項７】
仮想チャネルに格納されたデータが送信されてからの経過時間が長いほど、前記時間情報に基づく優先度は高い、請求項６に記載の中継装置。
【請求項８】
仮想チャネルに格納されたデータが宛先に届くまでの締切時刻までの残り時刻が短いほど、前記時間情報に基づく優先度は高い、請求項６に記載の中継装置。
【請求項９】
前記データのパケットは複数のフリットから構成されており、前記データは、フリット単位で前記バス上を伝送されており、
自中継装置を通過するデータの負荷を測定する負荷測定部をさらに備え、
前記負荷測定部により測定された負荷が予め定められた閾値よりも大きい場合は、前記クロスバスイッチは、１フリットを送信する毎に、仮想チャネルと出力ポートとの接続を切り替え、負荷が閾値以下の場合は、１パケット分のフリットの送信が完了する毎に、仮想チャネルと出力ポートとの接続を切り替える、請求項６に記載の中継装置。
【請求項１０】
前記負荷測定部は、自中継装置内の仮想チャネル内に格納されているフリットの量を、前記中継装置を通過するデータの負荷として測定する、請求項９に記載の中継装置。
【請求項１１】
前記クロスバスイッチは、１フリットを送信する毎に、常に仮想チャネルと出力ポートとの接続を切り替える、請求項９に記載の中継装置。
【請求項１２】
宛先の異なるパケット間で、重複する宛先までの伝送経路を特定する伝送経路解析部と、
前記時間情報に基づいて、前記仮想チャネルの宛先ごとに、前記時間情報に基づく優先度が最も高いデータを格納する仮想チャネルと接続される出力チャネルを選択する出力チャネル選択部と
をさらに備え、
前記出力チャネル選択部は、前記伝送経路解析部によって特定された伝送経路に基づいて、互いに伝送経路の重複が相対的に少ない宛先のパケットを格納する中継装置から順番に、送信先の中継器の仮想チャネルを割り当てる、請求項１に記載の中継装置。
【請求項１３】
前記宛先比較部は、前記宛先までの経路上において通過する前記中継装置が同一か否かにより、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する、請求項１に記載の中継装置。
【請求項１４】
各々が、宛先に届くまでの締め切り時間情報が付加されたヘッダおよび前記ヘッダに関連するデータを含むデータ単位を格納する複数の仮想チャネルと、
前記時間情報が示す時刻に応じて、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する宛先比較部と
を備え、前記送信先の中継装置の仮想チャネルの割り当てが決定された仮想チャネルから、格納されたデータ単位を出力し、集積回路内を伝送されるデータ単位を中継する中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散型のバスを備える半導体の集積体回路において、バス間を接続する複数の中継器間を流れる複数のトラヒックの送信スケジューリングを調整する技術に関する。
【背景技術】
【０００２】
図１（Ａ）は、集中型のバス制御の例を示す。集中型のバス制御を行う従来の集積回路では、主に複数のバスマスタ（ＢＭ）とメモリ（ＭＥＭ）との間は１つのバスによって接続され、アービタによって各バスマスタからメモリへのアクセスが調停される。しかし、集積回路の高機能化、マルチコア化により、回路の規模が増大し、トラヒックも複雑に変動しながらバスを流れており、集中型のバス制御による集積回路の設計が困難になってきている。【０００３】
その一方で、近年、並列計算機での接続技術や、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）網などのネットワーク制御の技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図１（Ｂ）は、分散型のバス制御の例を示す。分散型のバスを有する半導体集積回路は、複数の中継装置（Ｒ）が複数のバスで接続されて構成されている。近年、図１（Ｂ）に示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送するネットワークオンチップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ）の取り組みがある。【０００４】
図２は、ＮｏＣ（Ｎｅｔｗｏｒｋ  ｏｎ  ｃｈｉｐ）や並列計算機、ＡＴＭ網などで利用される、中継装置の基本的な構成の概略である。これらの中継装置では、トラヒックデータはパケットやセルの単位に分割されて、宛先のノードまで送信される。中継装置に送られたデータは、一旦バッファに蓄えられる。【０００５】
また、異なるパケットを入力ポート毎に並行して送信処理するために、入力ポート毎に複数のバッファを並列化した仮想的なチャネル（「バーチャルチャネル」または「ＶＣ」（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ）とも呼ばれる）を備える。バーチャルチャネルの実体は中継装置のバッファメモリであるが、入力ポート毎に、かつ、各入力ポートに対して複数のバッファを物理的に実装して良いし、又は、複数のバッファが存在するかのようにバッファメモリ上のデータを管理することにより、仮想的なチャネルを実装することが可能である。【０００６】
クロスバスイッチは、各入力ポートと出力ポートの排他的な接続を決定するスイッチである。また、クロスバスイッチによる入力ポートと出力ポートの排他的な接続はアービタによって決定される。【０００７】
このように、中継装置では、アービタにより、クロスバスイッチの接続を切り替えることで、バッファ内に格納されたデータを目的の宛先へと中継する。【０００８】
次に、中継装置の入力ポートと出力ポートの接続の切り替えについて説明する。中継器の入力ポートと出力ポートはクロスバスイッチによって、それぞれ排他的に接続される。ここで「排他的な接続」とは、複数の入力ポートと複数の出力ポートとを同時に接続する場合に、１つの出力ポートには、多くても１つの入力ポートだけが接続されている状態と定義する。【０００９】
図３（Ａ）は、中継装置内の入力ポートから出力ポートへの接続要求（送信要求）の一例を示した図である。ここでは、入力ポート毎に仮想チャネルが２つあり、入力ポート０の仮想チャネル０は出力ポート０、入力ポート０の仮想チャネル１は出力ポート２、入力ポート１の仮想チャネル０は出力ポート０、入力ポート１の仮想チャネル１は出力ポート１、入力ポート２の仮想チャネル０は出力ポート２、入力ポート２の仮想チャネル１は出力ポート３、入力ポート３の仮想チャネル０は出力ポート０、入力ポート３の仮想チャネル１は出力ポート２へとパケットの送信が要求されている。【００１０】
アービタは、複数の入力チャネルから出力チャネルへの接続要求の中から、入力ポートと出力ポートが排他的に接続される組み合わせを選択し、クロスバスイッチの切り替えを行う。図３（Ａ）に示した接続要求に対して、アービタが選択する排他的な入力ポートと出力ポートの組み合わせとしては、例えば図３（Ｂ）に示すように、入力ポート０と出力ポート２、入力ポート１と出力ポート１、入力ポート２と出力ポート３、入力ポート３と出力ポート０とを排他的に接続する組み合わせが選択される。【００１１】
クロスバスイッチによる入力ポートと出力ポートの排他的な接続は、入力ポートと出力ポートを同時に接続できる数が多いほど、より多くのパケットを同時に送信できる。【００１２】
このため、一般的に並列計算機やＡＴＭでは、入力ポートと出力ポートの全ての組み合わせの中から最適な組み合わせを探索するＷａｖｅｆｒｏｎｔ  ａｌｌｏｃａｔｏｒや、入力ポート側と出力ポート側で、それぞれ独立して部分的な最適解を求め、これを繰り返すことで精度を上げるＰａｒａｌｌｅｌ  Ｉｔｅｒａｔｉｖｅ  Ｍａｔｃｈｉｎｇなどの方法が用いられている。（例えば、非特許文献１）。【００１３】
また、複数の仮想チャネルが同じ出力ポートへの接続を要求する場合、パケットが送信された順番を維持し、また、パケット間での遅延時間の増加やバラツキを抑制するために、送信からの経過時間の長さや中継したホップ数に基づいてＡｇｅと呼ばれる値を定義し、Ａｇｅが最も大きい（または小さい）パケットを、先に送信するＡｇｅ−Ｂａｓｅｄ方式が提案されている。（例えば特許文献１）
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国特許第６６７４７２０号明細書
【非特許文献】
【００１５】
【非特許文献１】Ｗ．  ＤＡＬＬＹ，  Ｂ．  ＴＯＷＬＥＳ，  “ＰＲＩＮＣＩＰＬＥＳ  ＡＮＤ  ＰＲＡＣＴＩＣＥＳ  ＯＦ  ＩＮＴＥＲＣＯＮＮＥＴＩＯＮ  ＮＥＴＯＷＲＫＳ”，  ＭＯＲＧＡＮ  ＫＡＵＦＭＡＮＮ  ＰＵＢＬＩＳＨＥＲＳ
【発明の概要】
【発明が解決しようとする課題】
【００１６】
これに対し、ＮｏＣでは集積回路上に複数の中継装置を構成する必要があるため、並列計算機やＡＴＭ網の中継装置に比べて、各中継装置上で構成できる仮想チャネルの数やサイズを多く設けることができない。たとえば、１個の仮想チャネルのサイズはパケット１つ分程度である。【００１７】
このため、ＮｏＣでは、より短い遅延時間内に、限られた仮想チャネルを効率的に利用しなければならず、中継装置内で入力ポートと出力ポートの接続数を最大にするだけでなく、送信先の中継装置においても、入力ポートと出力ポートの接続数が大きくなるよう配慮した送信スケジュールの制御が重要になる。【００１８】
また、ＮｏＣ上に構成する中継装置では、集積回路の規模や、許容できる遅延時間、消費電力などの制約を受ける。このため、Ｗａｖｅｆｒｏｎｔ  Ａｌｌｏｃａｔｏｒのような大規模な組み合せから最適な組み合わせを探索するアルゴリズムや、Ｐａｌｌａｌ  Ｍａｔｃｈｉｎｇ  Ｉｎｔｅｒａｔｅｒのように繰り返し処理を行うアルゴリズムを、そのままＮｏＣ上の各中継装置に設けることは好ましくない。並列計算機やＡＴＭで用いられている一般的な中継装置の仕組みをそのまま、ＮｏＣの中継装置に適用した場合には、アービタの回路規模や処理時間、消費電力が大きくなり、ＮｏＣの性能の低下や、処理時間の増加を引き起こしてしまうといった課題がある。【００１９】
この課題を、以下、より具体的に説明する。【００２０】
図４は、本発明が解決しようとする課題の具体的な一例を説明する図である。【００２１】
中継装置４０１は４つの入力ポートを介してパケットの送信元となる４つの中継装置（中継装置Ａ、中継装置Ｂ、中継装置Ｃ、中継装置Ｄ）と接続し、送られてくるパケットを受信する。また中継装置４０１は、４つの出力ポートを介してパケットの送信先となる４つの中継装置（中継装置Ｅ、中継装置Ｆ、中継装置Ｇ、中継装置Ｈ）と接続し、パケットの送信を行う。【００２２】
中継装置４０１の入力ポートには、それぞれ２個の仮想チャネルが備えられており、入力ポート毎に最大で２箇所の出力ポートに対して送信要求を行うことができる。【００２３】
しかし、送信元の中継装置から、同一の宛先に向けて連続してパケットが送信されると、例えばＡｇｅ−Ｂａｓｅｄのように、送信された順番を単純に維持してパケットを中継する場合には、１．同じ先に向かうパケットが連続して送信されることで、２．同じ宛先のパケットが入力ポート内の全仮想チャネル（ＶＣ）を占有が発生し、３．仮想チャネル（ＶＣ）間による出力ポートの獲得において、出力ポートを獲得できなかった入力ポートは、別の出力ポートが空いていてもパケットを送信できないため、中継装置の伝送性能を低下させることになる。さらに、中継装置４０１で送信待ちが発生すると、４．送信元の中継装置でも送信待ちが発生し、送信待ちのパケットの宛先とは別の宛先へ向うパケットがあっても、中継装置４０１内のパケットを追い越して先に送信することができない。【００２４】
例えば図４において、中継装置４０１は送信元の中継装置から、特定の宛先のパケットを連続して受信したことで、中継装置４０１の入力ポート０と入力ポート１の全ての仮想チャネルに出力ポート０へ送信されるパケットが格納され、また、中継装置４０１の入力ポート２と入力ポート３の全ての仮想チャネルに、出力ポート２へ送信されパケットが格納されている状態にあるとする。この時、各仮想チャネルが出力ポートに対してパケットの送信要求を行った結果、入力ポート０の仮想チャネル０が出力ポート０を獲得し、また、入力ポート２の仮想チャネル０が出力ポート１を獲得したとすると、入力ポート１と入力ポート３は、出力ポート１と出力ポート３が空いていても、これらの出力ポートに向けて送信するパケットが無いため、送信待ちの状態となってしまう。【００２５】
また、送信元の中継装置Ｂや中継装置Ｄに、出力ポート１や出力ポート３へ向かうパケットが格納されていたとしても、中継装置４０１内の入力ポート１と入力ポート３の仮想チャネル内のパケットを追い越して先に送信することができない。【００２６】
このように、入力ポート毎に全ての仮想チャネルが特定のパケットによって占有が、中継装置の伝送性能の低下を引き起こす。【００２７】
並列計算機やＡＴＭでは、比較的、仮想チャネルの数やサイズに対する制約や、遅延時間に対する制約が小さいため、同じ宛先に向かうパケットが連続して送信されても、中継装置内の仮想チャネルが同じ宛先に向かうパケットによって全て占有される状況が発生しにくい。また、同じ宛先に向かうパケットによって全ての仮想チャネルが占有されたとしても、占有状態が続く時間に比べ、並列計算やＡＴＭで許容できるパケットの遅延時間が長いため伝送性能への影響は少ない。【００２８】
一方、ＮｏＣでは、半導体回路上に中継装置を実装するため、仮想チャネルの数やサイズ、遅延時間に対する制約が大きく、中継装置内の仮想チャネルの不足が発生しやすく、ＮｏＣ全体の伝送性能に対し大きく影響する。【００２９】
本発明は上記課題を解決するためになされたものであり、その目的は、パケットの伝送性能（スループットや遅延時間）の低下を抑制し、ＮｏＣ全体の伝送性能を向上させる中継装置を提供することにある。
【課題を解決するための手段】
【００３０】
本発明による中継装置は、複数の宛先の情報が付加されたヘッダおよび前記ヘッダに関連するデータを含むデータ単位を受信する入力バッファと、前記宛先の情報に対応するデータ単位を格納する複数の仮想チャネルと、前記宛先が同一か否かにより、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する宛先比較部と、前記送信先の中継装置の仮想チャネルの割り当てが決定された仮想チャネルから、格納されたデータ単位を出力する出力部とを備えている。【００３１】
前記宛先比較部は、データ単位の宛先を区別し、送信先の中継装置の仮想チャネルが未割り当ての宛先へ送られるデータに対し、優先的に送信先の中継装置の仮想チャネルを割り当てるよう、前記割当順序を決定してもよい。【００３２】
前記宛先比較部は、前記宛先が同一であるデータ単位に対して、前記ヘッダに付与された時間情報に基づいて、前記送信先の中継装置の仮想チャネルの割当順序を決定してもよい。【００３３】
前記宛先比較部は、前記時間情報としてデータが送信されてからの経過時間を用い、前記経過時間が長いデータから優先的に前記送信先の中継装置の仮想チャネルを割り当ててもよい。【００３４】
前記宛先比較部は、前記時間情報として宛先に届くまでの締切時刻を用い、前記締切時刻の残り時間が少ないデータから優先的に前記送信先の中継装置の仮想チャネルを割り当ててもよい。【００３５】
前記中継装置は、宛先が定められたデータを各々が受け取る複数の入力ポートをさらに備え、前記出力部は、各々がデータを出力する複数の出力ポートと、各入力ポートに対応して設けられ、受け取ったデータを格納する複数の仮想チャネルと、前記仮想チャネルに格納されたデータの宛先ごとに、時間情報に基づく優先度が最も高いデータを格納する仮想チャネルと、前記優先度が最も高いデータの宛先に到達可能なバスに接続された出力ポートとを接続することで、前記データを各出力ポートから出力するクロスバスイッチとを備えていてもよい。【００３６】
仮想チャネルに格納されたデータが送信されてからの経過時間が長いほど、前記時間情報に基づく優先度が高くてもよい。【００３７】
仮想チャネルに格納されたデータが宛先に届くまでの締切時刻までの残り時刻が短いほど、前記時間情報に基づく優先度が高くてもよい。【００３８】
前記データのパケットは複数のフリットから構成されており、前記データは、フリット単位で前記バス上を伝送されており、前記中継装置は、自中継装置を通過するデータの負荷を測定する負荷測定部をさらに備え、前記負荷測定部により測定された負荷が予め定められた閾値よりも大きい場合は、前記クロスバスイッチは、１フリットを送信する毎に、仮想チャネルと出力ポートとの接続を切り替え、負荷が閾値以下の場合は、１パケット分のフリットの送信が完了する毎に、仮想チャネルと出力ポートとの接続を切り替えてもよい。【００３９】
前記負荷測定部は、自中継装置内の仮想チャネル内に格納されているフリットの量を、前記中継装置を通過するデータの負荷として測定してもよい。【００４０】
前記クロスバスイッチは、１フリットを送信する毎に、常に仮想チャネルと出力ポートとの接続を切り替えてもよい。【００４１】
前記中継装置は、宛先の異なるパケット間で、重複する宛先までの伝送経路を特定する伝送経路解析部と、前記時間情報に基づいて、前記仮想チャネルの宛先ごとに、前記時間情報に基づく優先度が最も高いデータを格納する仮想チャネルと接続される出力チャネルを選択する出力チャネル選択部とをさらに備え、前記出力チャネル選択部は、前記伝送経路解析部によって特定された伝送経路に基づいて、互いに伝送経路の重複が相対的に少ない宛先のパケットを格納する中継装置から順番に、送信先の中継器の仮想チャネルを割り当ててもよい。【００４２】
前記宛先比較部は、前記宛先までの経路上において通過する前記中継装置が同一か否かにより、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定してもよい。【００４３】
本発明による他の中継装置は、各々が、宛先に届くまでの締め切り時間情報が付加されたヘッダおよび前記ヘッダに関連するデータを含むデータ単位を格納する複数の仮想チャネルと、前記時間情報が示す時刻に応じて、前記複数の仮想チャネルの各々に格納されているデータ単位の送信先の中継装置の仮想チャネルの割当順序を決定する宛先比較部とを備え、前記送信先の中継装置の仮想チャネルの割り当てが決定された仮想チャネルから、格納されたデータ単位を出力し、集積回路内を伝送されるデータ単位を中継してもよい。
【発明の効果】
【００４４】
本発明によれば、中継装置内の仮想チャネルのサイズや数を増やすことなく、宛先の異なるパケットに対して仮想チャネルをより均一に割り当てることで、同一の宛先のパケットによる中継装置内の仮想チャネルが占有を回避する。これにより、各中継装置においてより多くの宛先に対して同時にパケットが送信できるため、次の中継装置においてデータが流れにくくなることを防ぐことができる。その結果、ＮｏＣ全体の伝送性能（スループット、遅延時間、ジッター）を向上させることができる。
【図面の簡単な説明】
【００４５】
【図１】（Ａ）は集中型のバス制御の例を示す図であり、（Ｂ）は分散型のバス制御の例を示す図である。
【図２】中継装置の基本的な構成の概略図である。
【図３】（Ａ）は、中継装置内の入力ポートから出力ポートへの接続要求（送信要求）の一例を示した図であり、（Ｂ）は入力ポートと出力ポートとを排他的に接続する組み合せの例を示す図である。
【図４】本発明が解決しようとする課題の具体的な一例を説明する図である。
【図５】本発明の中継装置５０１の動作の概要を示す図である。
【図６】実施形態１において想定する分散型のバスの構成図である。
【図７】パケット１１００の伝送フォーマットの一例と、パケット１０００を複数のフリットに分割した例を示す図である。
【図８】実施形態１における中継装置１２０１の構成図である。
【図９】仮想チャネル情報管理部１２０７で管理され保持される仮想チャネル情報１３０１の一例を示す図である。
【図１０】中継装置１２０１の動作の手順を示すフローチャートである。
【図１１】（Ａ）は中継装置１２０１が未だフリットを受信していない状態における入力ポート０に関する仮想チャネル情報１３０１を示す図であり、（Ｂ）は各バッファの様子を示す図である。
【図１２】（Ａ）は、中継装置１２０１にヘッダーフリット１１０４が受信された場合の仮想チャネル情報１３０１を示す図であり、（Ｂ）は、入力ポート０で受信されたヘッダーフリット１１０４が仮想チャネル０に格納された場合の各バッファの様子を示す図である。
【図１３】（Ａ）は、中継装置１２０１において仮想チャネルの出力ポートが設定された後の仮想チャネル情報１３０１を示す図であり、（Ｂ）は各チャネルの様子を示す図である。
【図１４】（Ａ）は中継装置１２０１において出力チャネルの決定された後の仮想チャネル情報１３０１を示す図であり、（Ｂ）は各チャネルの様子を示す図である。
【図１５】（Ａ）は中継装置１２０１がフリットを送信している状態の仮想チャネル情報１３０１を示す図であり、（Ｂ）は各チャネルの様子を示す図である。
【図１６】（Ａ）はテイルフリット１１０６が送信された後の仮想チャネル情報１３０１を示す図であり、（Ｂ）は各チャネルの様子を示す図である。
【図１７】仮想チャネル１２１６に対する出力バッファ１２０６の割り当ての手順を示すフローチャートである。
【図１８】（Ａ）および（Ｂ）は、中継装置１２０１内に複数のパケットを構成するフリットが格納されているときの、バッファ管理情報１３０１及び各バッファの状態の一例を示す図である。
【図１９】入力ポートと出力ポートを排他的に接続するクロスバスイッチの切り替え処理方法を示すフローチャートである。
【図２０】時間情報、および、時間情報の比較基準の例を示す図である。
【図２１】（Ａ）および（Ｂ）は、中継装置Ｒ１からみた種々の宛先の定義および各定義に該当し得る宛先の具体例を示す図である。
【図２２】（Ａ）および（Ｂ）はそれぞれ、４つの受信ノードＡ〜Ｄに対して、パケットを中継器１〜３を介してパケットを送信した場合の、各中継装置における送信スケジューリングの方法と、各バスを通過するフリットの送信順序の関係を示す図である。
【図２３】パケットの送信スケジューリングをパケット毎に行った場合と、フリット毎に行った場合のバスの利用効率とクロスバスイッチの切り替え回数の相対的な比較を説明する図である。
【図２４】実施形態２の中継装置の構成を示す図である。
【図２５】実施形態２の中継装置での仮想チャネルと出力ポートの接続の切り替え処理動作を示すフローチャートである。
【図２６】実施形態３において、多段接続網型のトポロジーによって構成されるＮｏＣにおける重複するバスの例を示す図である。
【図２７】実施形態による中継装置の構成を示す図である。
【図２８】実施形態３による中継装置の処理の手順を示すフローチャートである。
【図２９】（Ａ）〜（Ｃ）は、集積回路のトポロジーの例を示す図である。
【図３０】本発明の中継装置をメモリバスに利用した例を説明する図である。
【図３１】本発明の中継装置をマルチコアプロセッサ上で利用した例を説明する図である。
【発明を実施するための形態】
【００４６】
以下、添付の図面を参照しながら、本発明による中継装置の動作原理、および、実施形態を説明する。
【００４７】
図５は、本発明の中継装置５０１の動作の概要を示している。
【００４８】
並列計算機やＡＴＭなどで利用される中継装置では、仮想チャネル内のパケットをより多く送信することを主眼にパケットの送信スケジューリングが行われている。上述の利用環境では、ＮｏＣに比べて仮想チャネルの数やサイズに対する制約や、遅延時間への制約が少ないため、送信先の中継装置の仮想チャネルが全て同じ宛先へ送信されるパケットで占有されることを考慮する必要はなかった。実際、仮想チャネルに宛先の異なるパケットを格納するように配慮した仮想チャネルの割り当て制御は行われていなかった。
【００４９】
これに対し、本発明では、仮想チャネルの数やサイズに対する制約を受け、また、遅延時間の制約を受けるＮｏＣのような通信環境において利用される中継装置を想定している。具体的には、本発明による中継装置は、中継装置内に宛先の異なるパケットが複数存在する場合には、パケットが送信された順序を単純に維持して中継するのではなく、宛先の異なるパケットが、送信先の中継装置の仮想チャネルにおいて、できるだけ均一に格納されるように、パケットの送信スケジューリングを行う。
【００５０】
たとえば図５に示すように、１．送信元の中継装置が、宛先の異なるパケットを選別し、中継装置５０１の仮想チャネルにおいて、宛先の異なるパケットが均一に格納されるようにパケットを送信することで、２．宛先が同じパケットが全ての仮想チャネル（ＶＣ）を占有してしまう状況を回避する。これにより３．入力ポートと出力ポートの排他的な接続の組合せが増加し、送信待ち状態が削減されることで、伝送性能の低下が抑制される。
【００５１】
以下、本発明の各実施形態にかかる中継装置を説明する。
【００５２】
（実施形態１）
図６は、本実施形態において想定する分散型のバスの構成図である。
【００５３】
本実施形態では、送信ノードとしての複数のバスマスタ（ＢＭ）と、受信ノードとしての複数のメモリとを、複数の中継装置を介して接続した構成（多段接続網、ＭＩＮ：Ｍｕｌｔｉｓｔａｇｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋ）を例に説明する。各中継装置は、２入力および２出力であるとする。
【００５４】
図６では、８個のバスマスタ（ＢＭ０〜ＢＭ７）と、１２個の中継装置（Ｒ０〜Ｒ１１）と、８個のメモリ（メモリ０〜７）とがバスで接続される回路の様子を示している。
【００５５】
１２個の中継装置は、４個ずつ３つのグループに分類されている。３つのグループは、８個のバスマスタに接続されるグループ（Ｒ０、Ｒ１、Ｒ２、Ｒ３）、８個のメモリに接続されるグループ（Ｒ８、Ｒ９、Ｒ１０、Ｒ１１）、及び、バスマスタ、又はメモリに接続する中継装置を結ぶグループ（Ｒ４、Ｒ５、Ｒ６、Ｒ７）である。
【００５６】
多段接続網を構成する各中継装置は、２入力２出力のクロスバスイッチを備えている。図６（ｂ）に示すように、スイッチを切り替えることによって入力と出力の組合せを変更することで、トラヒックの流れを２種類の伝送経路へ切り替えて送信できる。なお、出力先の伝送経路が異なっていれば、中継装置は２つのトラヒックを各伝送経路に同時に出力することが可能である。
【００５７】
多段接続網では、各中継装置でのスイッチの切り替えによって、全バスマスタと全メモリ間で、必ず１つ以上の伝送経路を構築することができる。
【００５８】
一般的に、クロスバスイッチによって、Ｎ個のバスマスタとＭ個のメモリの全てを接続するためには、スイッチがＮ×Ｍ個の必要となる。そしてバスマスタやメモリの数が増えるにつれてスイッチの数は急激に増加してしまう。これに対し、多段接続網（ＭＩＮ）では、入出力数の小さいクロスバスイッチを階層的に接続することで少ないスイッチでバスマスタとメモリ間の接続を切り替えることができるという特徴がある。
【００５９】
なお、本実施形態においては多段接続網を例に挙げて説明するが、これは一例である。集積回路の構成がその他のトポロジーであっても本発明を適用することが可能である。また、本実施形態では、バスマスタからメモリへのデータ転送は、パケット交換方式により複数の中継装置を介して行われるとして説明する。
【００６０】
パケットは、図６（ａ）に示すように、フリットと呼ばれる、バスを使って１サイクルで伝送可能なサイズに分割されて、隣接する中継装置へと送信される。
【００６１】
図７は、パケット１１００の伝送フォーマットの一例と、パケット１０００を複数のフリットに分割した例を示す。
【００６２】
パケット１１００は、ヘッダフィールド１１０１、データフィールド１１０２および制御コードフィールド１１０３を備えている。
【００６３】
ヘッダフィールド１１０１には、たとえば、送信先のアドレス、送信元のアドレス、パケットが送信されてから経過した時刻の情報（時間情報）が記述される。時間情報の記述方法は任意であるが、そのパケットがバスマスタに送信されてからの経過時間を他のパケットとの間で比較できる値であれば良い。例えば、バスマスタに送信された時刻を直接記載する方法や、送信されてからの経過時刻、また、現在までに通過した中継装置のホップ数などを記載しても良い。
【００６４】
データフィールド１１０２には、たとえば映像データ、音声データが記述される。制御コードフィールド１１０３には、たとえば、予め定められたパケット１１００の終了コードが記述される。
【００６５】
上述のヘッダフィールド１１０１のデータのうち、送信先のアドレスと、送信元のアドレスとに基づいて、パケット１１００の中継処理と、受信側での受信処理とが行われる。
【００６６】
送信側のバスマスタは、パケット１１００を、フリットと呼ばれる小さなパケット単位に分解して伝送する。１フリットは、バスを使って１サイクルで伝送可能なデータであり、そのサイズはバス幅の大きさによって決定される。パケット１１００を分割したフリットのうち、最初に送信されるフリットは、ヘッダーフリット１１０４と呼ばれる。ヘッダーフリット１１０４には、パケットの先頭であることを示すフラグ情報、及びパケットの送信先のアドレス情報が付与されている。
【００６７】
なお、ヘッダーフリット１１０４に続く各フリットには、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダーフリット１１０４に続くフリットは、ヘッダーフリット１１０４と同じ宛先に送られるためである。ヘッダーフリット１１０４によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファが決まると、後に続くフリットは、ヘッダーフリット１１０４と同じ出力バッファを利用してヘッダーフリット１１０４が示す宛先に伝送される。
【００６８】
また、パケットの最終のフリットはテイルフリット１１０６と呼ばれる。テイルフリット１１０６には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報が付与されている。また、ヘッダーフリット１１０４とテイルフリット１１０６以外のフリットは、主にデータを伝送するフリットでありデータフリット１１０５と呼ぶ。
【００６９】
受信側のメモリは、制御コードフィールド１１０３に記述された終了コードを検出すると、その終了コードに基づき、伝送されたフリットをパケットへ再構築する。
【００７０】
たとえば、１パケットのサイズは１２８バイト、１フリットのサイズは３２ビットまたは６４ビットである。ただし、１パケットのサイズおよび１フリットのサイズはアプリケーションによって異なり得るため、上述のサイズは一例に過ぎないことに留意されたい。フリットの長さは、送信先のアドレスと、送信元のアドレスなど、制御データを記述できる長さを基準としてもよい。
【００７１】
各中継装置には、送られてきたフリットを蓄えるためのバッファが用意されている。フリットは一旦そのバッファに蓄えられた後、スイッチの切り替えによって目的の経路へと続く中継装置や、宛先のメモリへ送信される。なお図６は、バスマスタからメモリにフリットが送信される例を想定しているが、これは一例である。フリットの宛先はメモリには限られず、たとえば他のバスマスタや、周辺機器と接続するため入出力インターフェイスであってもよい。
【００７２】
図８は、本実施形態における中継装置１２０１の構成図である。
【００７３】
中継装置１２０１は、入力バッファ１２０４と、スイッチ１２０５と、出力バッファ１２０６と、仮想チャネル情報管理部１２０７と、時間情報比較部１２１０と、宛先比較部１２１１と、出力チャネル選択部１２１２と、送信チャネル選択部１２１３と、スイッチ切替部１２１５と、競合検出部１２１４とを有している。
【００７４】
以下、各構成要素の機能を説明する。
【００７５】
入力ポート１２１８は、隣接する中継装置、又は他の送信ノードから送られてきたフリットを受信する。
【００７６】
入力バッファ１２０４は、入力ポート側で隣接する中継装置（又は送信ノード）から送られてきたフリットを蓄えるバッファである。
【００７７】
入力バッファ１２０４を構成する一時バッファは、中継装置１２０１の入力ごとに１つ設けられていてもよいし、または、異なるパケット毎に個別のチャネルを利用して送信スケジュール制御ができるように、入力ごとに複数の仮想チャネル１２１６が設けられていてもよい。本実施形態では、図８に示すように入力バッファ１２０４ごとに４個ずつ仮想チャネル１２１６を備えているとする。
【００７８】
クロスバスイッチ１２０５は、中継装置１２０１の入力ポートと出力ポートの排他的な接続を切り替えるスイッチである。
【００７９】
出力ポート１２１９は中継装置から、隣接する中継装置、又は受信ノードへフリットを送信する送信部である。
【００８０】
出力バッファ１２０６は、出力ポート先の中継装置群１２０３へフリットを送信する際に利用する一時バッファである。
【００８１】
出力バッファ１２０６には、さらに複数の出力チャネル１２１７が設けられている。出力チャネル１２１７は、出力ポート１２１９の先に接続された中継装置１２０３の入力バッファ内の仮想チャネルと同じ数だけ設けられており、隣接の中継装置群１２０３の仮想チャネルと１対１の対応関係が決められている。
【００８２】
中継装置１２０１から送信されるフリットは、送信に利用した出力チャネルに対応する出力ポートの先に接続された中継装置群１２０３の仮想チャネルに蓄えられる。すなわち、中継装置１２０１は、フリットの送信に利用する出力チャネルを選択することで、出力ポートの先に接続された中継装置１２０３へ送信されたフリットが格納される中継装置１２０３の仮想チャネルを指定できる。
【００８３】
仮想チャネル情報管理部１２０７は、各仮想チャネル１２１６に格納されるフリットの情報を管理する。仮想チャネル情報管理部１２０７が管理している情報の内容については、図９を用いて後で説明する。
【００８４】
出力ポート選択部１２０８は、入力バッファ１２０４に新しいヘッダーフリットが送られてくると、それを受け取り、ヘッダーフリットに記述された宛先情報を基に、次に受け渡す中継装置を特定する。
【００８５】
時間情報比較部１２１０は、各仮想チャネル内に格納されているパケットに付与された時間情報に基づく優先度を比較し、優先度の高い順に仮想チャネルに順番をつける。
【００８６】
なお、本実施形態では、パケットに付与される時間情報として、パケットの送信時刻を想定し、また時間情報に基づく優先度は、パケットが送信されてからの経過時間が長いもの、すなわちパケットの送信時刻が古いものほど優先度が高いとする。
【００８７】
宛先比較部１２１１は、各仮想チャネル内に格納されているパケットの宛先で、仮想チャネルをグループ分けし、グループ毎に格納しているパケットの経過時間の長い順に仮想チャネルの割当順序を決定する。
【００８８】
出力チャネル選択部１２１２は、各仮想チャネル内に格納されているフリットのうち、送信時刻比較部１２１０による送信時刻の比較結果と、宛先比較部１２１１による宛先の違いの比較結果をもとに、出力バッファ１２０６で利用されていない出力チャネル１２１７を選択する。
【００８９】
送信チャネル選択部１２１３は、入力ポートごとに複数の仮想チャネルの中から、フリットを送信する仮想チャネルを１つ選択する。
【００９０】
スイッチ切替部１２１４は、クロスバスイッチ１２０５を制御して、送信チャネル選択部１２１３によって、入力ポートごとに１つ選択された仮想チャネルに対し、排他的な出力ポートが割り当てられるようにクロスバスイッチ１２０５を切り替える。
【００９１】
競合検出部１２１５は、１つの出力ポートに対して、複数の仮想チャネルでフリット送信の競合が発生した場合に、スイッチ切替部１２１４により出力ポートが割り当てられなかった入力ポートに対し、別の出力ポートに送信する仮想チャネルを選択するように指示する。競合が発生したか否かは、スイッチ切替部１２１４がクロスバスイッチ１２０５を切り替えられたか否かで判断することができる。
【００９２】
なお、本発明では、中継装置が受信したフリットを仮想チャネルに格納する処理に関与する入力ポート１２１８、入力バッファ１２０４、仮想チャネル１２１６の集まりをまとめて入力部１２０ａと定義する。また、仮想チャネルに格納されているフリットを中継装置から出力する処理に関与するクロスバスイッチ１２０５、送信チャネル選択部１２１３、スイッチ切替部１２１４、出力バッファ１２０６、出力チャネル１２１７、出力ポート１２１９の集まりをまとめて、出力部１２０ｂと定義する。
【００９３】
図９は、仮想チャネル情報管理部１２０７で管理され保持される仮想チャネル情報１３０１の一例である。
【００９４】
仮想チャネル情報として、各仮想チャネルを区別するために、入力ポートと仮想チャネルの識別番号が割り当てられており、さらに、仮想チャネルにパケットが格納されると、そのパケットの宛先を特定するためのアドレス情報、パケットが送信されてからの経過時間を示す時間情報、フリットを宛先まで送信するための出力ポートの番号、出力チャネルの番号が管理される。なお、時間情報は経過時間でなくてもよく、たとえばパケットの送信時刻であってもよい。
【００９５】
次に、各中継装置１２０１の動作の概要を、図１０のフローチャートと、図１１から図１８を用いて説明する。なお、図１１から図１８において、図８、図９と同じ構成には、同じ番号を付与し説明を省略する。
【００９６】
回路全体が起動すると中継装置１２０１は、入力ポート１２１８を介して隣接する中継装置１２０２、又は送信ノードから送信されるフリットの受信待ち状態となる。
【００９７】
図１１（Ａ）は中継装置１２０１が未だフリットを受信していない状態における入力ポート０に関する仮想チャネル情報１３０１を示し、図１１（Ｂ）は各バッファの様子を示す。以下、本明細書では入力ポート０に関する仮想チャネル情報を１３０１のみを例示する。参考のため、図１１（Ｂ）にはヘッダフリット（Ｈ）１１０４、データフリット（Ｄ）１１０５およびテイルフリット（Ｔ）１１０６が示されている。
【００９８】
未だフリットが届いていないため、仮想チャネルは未使用状態となる。
【００９９】
図１０のステップ１４００において、入力ポート１２１８は、フリットを受信したかどうかを判断する。フリットを受信した場合には処理はステップ１４０１に進み、フリットを受信していない場合には処理はステップ１４０２に進む。ステップ１４０１において、入力ポート１２１８は仮想チャネル１２１６に受信したフリットを格納する。なお格納先の仮想チャネル１２１６は、隣接する中継装置１２０２で決定される。
【０１００】
ステップ１４０２において、仮想チャネル１２１６は入力バッファにフリットが存在するか否かを判断する。フリットが存在する場合には処理はステップ１４０３に進み、フリットが存在しない場合には処理はステップ１４００に戻る。
【０１０１】
ステップ１４０３において、中継装置内の仮想チャネル１２１６は、格納されたフリットがヘッダーフリット１１０４であるかどうかを判定する。先頭フリットがヘッダーフリットである場合はステップ１４０４に進み、そうでない場合はステップ１４０７に進む。なお、ステップ１４０３からステップ１４０７へ進む例は、パケットの送信途中であっても、仮想チャネルと出力ポートの接続の切り替えが必要な状況がある。たとえば送信時刻が古いフリットが別の送信ノードから遅れて到着した場合である。そのため、ステップ１１０３からステップ１４０７に進むように構成している。既に排他接続が確保されている場合には、形式的にはステップ１４０７の処理を行わずステップ１４０８に進むことになる。
【０１０２】
ステップ１４０４において、格納されたフリットがヘッダーフリットであった場合、仮想チャネル情報管理部１２０７は、ヘッダーフリットに記録されている宛先のアドレスと、パケットが送信ノードから送信されてから経過した時間を表す時間情報を仮想チャネル情報１３０１に記録する。
【０１０３】
図１２（Ａ）は、中継装置１２０１にヘッダーフリット１１０４が受信された場合の仮想チャネル情報１３０１を示す。
【０１０４】
図１２（Ｂ）は、入力ポート０で受信されたヘッダーフリット１１０４が、ステップ１４０２により、仮想チャネル０に格納された場合の各バッファの様子を示している。
【０１０５】
ヘッダーフリット１１０４が、仮想チャネルに届くと、ヘッダーフリット１１０４に記載されている宛先のアドレスと、パケット（及びそれを構成するヘッダーフリット１４０１）が送信された時刻情報を仮想チャネル情報１３０１に記録する。
【０１０６】
図１２（Ａ）は、ヘッダーフリット１１０４に付与された宛先のアドレスと、送信時刻情報を記録した後の仮想チャネル情報１３０１の様子を示している。
【０１０７】
ここでは、パケットの宛先としてメモリ０のアドレス０００と、送信された時刻２０（サイクル）が仮想チャネル情報１３０１に記録されたものとする。
【０１０８】
図１２のステップ１４０５において、出力ポート選択部１２０８は、ヘッダーフリットを受け取り、仮想チャネル管理情報１２０７の出力ポートの番号が未だ設定されていない仮想チャネルに対し出力ポートを決定する。
【０１０９】
例えば、図６に示した多段接続網の場合では、各メモリに対し３桁の２進数でアドレスが割り当てられ、各パケットのヘッダーフリットには、宛先となるメモリのアドレスが、３桁の２進数が付与されている。
【０１１０】
各中継装置の出力ポート選択部１２０８は、ヘッダーフリットに付与された３桁のアドレスのうち、左から中継装置の段数と同じ桁の数字を読み取る。そしてその値が０ならば図５における右上の中継装置へフリットを送り、値が１ならば図５における右下の中継装置へフリットを送るように経路を決定する。
【０１１１】
例えば、バスマスタＢＭ２から、メモリ５（アドレス：１０１）へデータを送る場合には、アドレスに記載された３桁の数字に従って、まず中継装置Ｒ１では右下の中継装置Ｒ７へフリットが送信され、次に中継装置Ｒ７では右上の中継装置Ｒ１０にフリットが送信され、最後に中継装置Ｒ１０で右下のメモリ５へフリットが送信される。これにより、バスマスタＢＭ５からメモリ２へとフリットが伝送される。
【０１１２】
なお、出力ポート選択部１２０８で出力ポートの選択方法としては、分散バスのトポロジーに応じて、適切に目的地までフリットが送られる方法であれば、上記以外の方法であってもよい。
【０１１３】
図１３（Ａ）は、中継装置１２０１において仮想チャネルの出力ポートが設定された後の仮想チャネル情報１３０１を示し、図１３（Ｂ）は各チャネルの様子を示す。
【０１１４】
図１３（Ａ）では、入力ポート０の仮想チャネル０には、宛先のアドレスが０００のメモリ０へ送信されるフリットが格納されているため、仮想チャネル１２１６は、フリットをメモリ０へと向う出力ポート０から送信するために、出力ポート番号を０に設定する。
【０１１５】
図１０のステップ１４０６において、時間情報比較部１２１０と、宛先比較部１２１１と、出力チャネル選択部１２１２は、仮想チャネル情報管理部１２０７において、出力チャネルが未設定の仮想チャネルに対して、フリットの宛先と、時間情報に基づく優先度としてパケットの送信時刻の古さを基に、宛先ごとにパケットの送信時刻がもっとも古い仮想チャネルに対して、出力チャネルの割り当てを行う。
【０１１６】
図１４（Ａ）は中継装置１２０１において出力チャネルの決定された後の仮想チャネル情報１３０１を示し、図１４（Ｂ）は各チャネルの様子を示す。
【０１１７】
図１４（Ｂ）では、出力ポート０の出力チャネルはいずれも未使用である。本実施形態においては、入力ポート０の仮想チャネル０に出力チャネル０を利用させるために、図１４（Ａ）では出力チャネル番号に０が設定される。
【０１１８】
なお、中継装置内に複数のパケットが存在する場合の出力チャネルの割り当ての詳細については、図１７を用いて後で説明する。
【０１１９】
図１０のステップ１４０７において、送信チャネル選択部１２１３は、仮想チャネル情報１３０１を参照し、入力ポート毎に出力チャネルが設定済みの仮想チャネルを１つ選択する。
【０１２０】
またスイッチ切替部１２１４は、仮想チャネル情報１３０１を参照し、送信チャネル選択部１２１３で選択された仮想チャネルで設定されている出力ポートで競合しているものがないかを判定し、競合が発生した場合、競合している仮想チャネルのいずれか１つを選択する。
【０１２１】
これにより、入力ポートと出力ポートの間で排他的な接続が選択され、その結果に基づきスイッチ切替部１２１４はクロスバスイッチ１２０５を切り替える。
【０１２２】
ステップ１４０８において、クロスバスイッチの切り替えが終わると、送信チャネル選択部１２１３により選択された仮想チャネル１２１６は、それぞれで決定された出力ポートの出力チャネル１２０６を利用してフリットを送信する。
【０１２３】
図１５（Ａ）は中継装置１２０１がフリットを送信している状態の仮想チャネル情報１３０１を示し、図１５（Ｂ）は各チャネルの様子を示す。
【０１２４】
図１５（Ａ）および（Ｂ）では、中継装置内でパケットが１種類しかないため、入力ポート０の仮想チャネル０内のフリットが順番に、仮想チャネル情報１３０１に記録されている出力ポートの出力チャネルを通して、メモリ０へと送信される。
【０１２５】
図１０のステップ１４０９において、仮想チャネル１２１６は、フリットを送信する際に、送信したフリットがパケットを構成する最後のフリットであるかどうかを判定する。
【０１２６】
ステップ１４１０において、送信したフリットがパケットを構成する最後のフリットであった場合には、別のパケットがその仮想チャネルを利用できるように開放する必要がある。そこで仮想チャネル情報管理部１２０７は、該当する仮想チャネルの情報を初期化する。
【０１２７】
図１６（Ａ）はテイルフリット１１０６が送信された後の仮想チャネル情報１３０１を示し、図１６（Ｂ）は各チャネルの様子を示す。
【０１２８】
図１６（Ａ）および（Ｂ）では、テイルフリット１１０６が送信されたことにより、入力ポート０の仮想チャネル０内のフリットが全て送信され、未使用状態となる。よって、仮想チャネル情報１３０１は、仮想チャネル０の内容を初期化する。
【０１２９】
以上、ステップ１４０１からステップ１４１０の処理を繰り返すことにより、中継装置１２０１は、送られてきたパケットを宛先の受信ノードに向けて送信することができる。
【０１３０】
以下、図１７を参照しながら、ステップ１４０６における処理、すなわち仮想チャネルにヘッダーフリット１１０４が格納された際に、利用する出力チャネルの詳細な割り当て処理を説明する。また図１９を参照しながら、ステップ１４０７における、入力ポートと出力ポートとの接続を排他的に切り替える処理を詳細に説明する。
【０１３１】
図１７は、仮想チャネル１２１６に対する出力バッファ１２０６の割り当ての手順を示している。
【０１３２】
ここでは、中継装置１２０１内に複数のパケットを構成するフリットが格納されており、バッファ管理情報１３０１、及び各バッファの状態が、それぞれ図１８（Ａ）、図１８（Ｂ）に示す状態にある場合を例に説明する。図１８（Ｂ）では、ヘッダーフリットＨ、データフリットＤ、テイルフリットＴが示されている。これは、複数のパケットが並列的に入力ポート０および１にそれぞれ受信され、かつ、各出力されていることを意味する。
【０１３３】
ステップ１５０１において、中継装置１２０１の出力チャネル選択部１２１２は、各仮想チャネルのうち、出力ポートは設定されているが、出力チャネルが未設定の仮想チャネルがあるか確認する。
【０１３４】
図１８（Ａ）に示すバッファ管理情報１３０１では、入力ポート０の仮想チャネル１、及び入力ポート１の仮想チャネル１番に対して出力チャネルが未設定の状態にある。
【０１３５】
ステップ１５０２において、出力ポートが設定されているが、出力チャネルが未設定の仮想チャネルがある場合は、バッファ管理情報１３０１に記録されている出力ポートの中で出力チャネルに空きがあるかどうかを確認する。
【０１３６】
図１８（Ａ）の仮想チャネル情報１３０１では、入力ポート０の仮想チャネル１、及び入力ポート１の仮想チャネル１番は、ともに出力ポート１が設定されている。
【０１３７】
また、出力ポートの出力チャネルは、図１８（Ａ）の仮想チャネル情報１３０１より、出力チャネル２のみが入力ポート１の仮想チャネル２に利用されており、残り利用されていないため空き状態にある。
【０１３８】
ステップ１５０３において、時間情報比較部１２０１は、出力チャネルが未設定の仮想チャネル内の時間情報に基づく優先度（バスマスタＢＭから送信され時刻の古さ）を比較し、優先度の高い（送信時刻が古い）仮想チャネルから順序を付け、送信時刻が最も古く出力チャネルが未設定の仮想チャネルを１つ選択する。
【０１３９】
図１８（Ａ）のバッファ管理情報１３０１では、送信時刻が小さい入力ポート１の仮想チャネル１の方が、出力チャネルが未設定状態にある仮想チャネルの中で、最も古いパケットを格納しており、出力チャネルを設定する候補として選択する。
【０１４０】
ステップ１５０４において、宛先比較部１２１１は、選択された仮想チャネルの宛先と同じ宛先で、既に出力チャネル１２１７が割り当てられている仮想チャネル１２１６が存在するか否かを判定する。存在する場合には処理はステップ１５０５に進み、存在しない場合には処理はステップ１５０７に進む。
【０１４１】
図１８（Ａ）に示す仮想チャネル情報１３０１では、入力ポート１の仮想チャネル１と同じ宛先アドレスの入力ポート１の仮想チャネル２が既に出力ポートが割り当てられているため、処理はステップ１５０５に進む。
【０１４２】
次に図１７のステップ１５０５において、出力チャネル選択部１２１２は、選択中の仮想チャネルの次に送信時刻が古いパケットを格納し、さらに出力チャネルが未設定の仮想チャネルがあるか判定する。存在する場合には処理はステップ１５０６に進み、存在しない場合には処理はステップ１５０８に進む。
【０１４３】
図１８（Ａ）に示す仮想チャネル情報１３０１では、選択中の入力ポート１の仮想チャネル１の次に送信時刻が古いパケットを格納し、さらに出力チャネルが未設定の仮想チャネルが存在するため、処理はステップ１５０６に進む。
【０１４４】
ステップ１５０６において、出力チャネル選択部１２１２は、パケットの送信時刻が選択中の仮想チャネルに次いで古いパケットを格納し、出力チャネルが未設定の仮想チャネルを新たに出力チャネルを設定する候補として選択する。
【０１４５】
図１８（Ａ）に示す仮想チャネル情報１３０１では、現在、出力チャネルを設定する候補として選択中の入力ポート１の仮想チャネル１の次に送信時刻が古く、出力ポートが未設定の入力ポート０の仮想チャネル１を新たな候補に選択する。出力チャネル選択部１２１２は、選択した仮想チャネルが格納するパケットと同じ宛先へ送信されるパケットを格納する仮想チャネルに出力チャネルが既に設定されていないかの確認（ステップ１５０４）を繰り返す。
【０１４６】
ステップ１５０４において、同じ宛先が設定されている仮想チャネルが無い場合には、ステップ１５０７に移り、空いている出力チャネルを選択中の仮想チャネルに割り当てる。
【０１４７】
ステップ１５０４において、同じ宛先が設定されている仮想チャネルが無い場合には、処理はステップ１５０７に進み、出力チャネル選択部１２１２は空いている出力チャネルを選択中の仮想チャネルに割り当てる。
【０１４８】
図１８（Ａ）に示す仮想チャネル情報１３０１では、新たに出力チャネルを設定する候補となった出力ポートが未設定の入力ポート０の仮想チャネル１と、パケットの宛先が同じ、かつ出力チャネルが設定済みの仮想チャネルが存在しないので、ステップ１５０７に移り、出力チャネルが割り当てられる。
【０１４９】
また、ステップ１５０４からステップ１５０６を繰り返した結果、ステップ１５０５において、出力チャネルが未設定の仮想チャネルが他に存在しないと判定された場合には、ステップ１５０８に移り、最初に選択した（送信時刻が最も古く、出力チャネルが未設定）仮想チャネルに、空いている出力チャネルを割り当てる。これは、全ての宛先に対し出力チャネルが1つ以上割り当てられているため、異なる宛先間で均一に出力チャネルを割り当てるよりも、送信時刻の古いパケットに出力チャネルを割り当てることを優先したためである。
【０１５０】
ステップＳ１５０８において、出力チャネル選択部１２１２は空いている出力チャネルを、最初に選択した仮想チャネルに設定する。
【０１５１】
ステップ１５０４からステップ１５０８を行うことで、図１８（Ａ）の仮想チャネル情報１３０１では、経過時間のみで比較すると入力ポート１の仮想チャネル１は、出力チャネルが未設定の仮想チャネルの中で、送信時刻が最も古いフリットを格納している。しかしながら、そのフリットの宛先（アドレス０１１）は、入力ポート１の仮想チャネル２に格納されているフリットの宛先と同じである。そして入力ポート１の仮想チャネル２には、既に出力チャネル２が割り当てられている。よって、入力ポート０の仮想チャネル１には、出力ポート１の空きチャネルが割り当てられる。
【０１５２】
以上のように、図１７に示されるステップ１５０１からステップ１５０８を繰り返すことにより、宛先ごとに最も古いパケットを格納する仮想チャネルにのみ出力チャネルを割り当てることが可能となる。よって、全ての出力チャネル、すなわちそれに対応した出力ポート先の仮想チャネルを全て同じ宛先のパケットが占有するのを回避することが可能になる。
【０１５３】
図１９は、入力ポートと出力ポートを排他的に接続するクロスバスイッチの切り替え方法を示している。
【０１５４】
中継装置１２０１は、パケットの送信時の順番を維持し、また伝送遅延の増加を抑制するために、複数の仮想チャネル１２１６に格納されたパケット（フリット）のうち、送信ノードで送信されてから経過時間の古いパケットから順番に送信を行う。
【０１５５】
クロスバスイッチの切り替えにより、入力ポートと出力ポートを排他的に接続する場合、複数の入力ポートと出力ポートの要求に対し、より多くの入力ポートと出力ポートを同時に接続することで、より多くのフリットを転送することができる。
【０１５６】
このため、並列計算機やＡＴＭ網などでは、非特許文献１のように、クロスバスイッチの１回の切り替えに、入力ポートと出力ポートの全ての組み合わせから、より最適な組み合わせを探索するＷａｖｅｆｒｏｎｔ  Ａｌｌｏｃａｔｏｒや、フリットを送信する仮想チャネルの選択を入力ポート側と出力ポート側で独立して決定する処理を複数回繰り返すことでより最適な組み合わせを決定するＰａｒａｌｌｅｌ  Ｉｎｔｅｒａｔｉｖｅ  Ｍａｔｃｈｉｎｇなどの方法がとられている。
【０１５７】
しかし、ＮｏＣは、集積回路上に中継装置を構成するため、実装面積や許容される遅延時間、消費電力の制約により、並列計算機やＡＴＭなどで用いられる処理量や繰り返し回数が多い方法をそのまま適用するのは困難であり、より簡単な構成と処理量で、より多くの入力ポートと出力ポートを接続することが望ましい。
【０１５８】
このため、本発明の実施例では、フリットを送信する仮想チャネルの選択を入力ポート側と出力ポート側でそれぞれ独立して１回だけ決定し、出力ポート側での選択結果を、次回の入力切替の結果にフィードバックさせることで、クロスバスイッチによる入力ポートと出力ポートの接続がより多くなる組み合わせを決定する。
【０１５９】
そのため、送信チャネル選択部１２１３は、ステップ１６０１において、入力ポート毎に、送信されてからの経過時間が最も古いパケットを格納する仮想チャネルを１つ選択する。
【０１６０】
次に、ステップ１６０２において、スイッチ切替部１２１４は、ステップ１６０１で、送信チャネル選択部１２１３が選択した各入力ポートの仮想チャネル間で、出力ポートの利用で競合が発生した場合、出力ポート毎に経過時間の最も古いパケットを格納する仮想チャネルを１つ選択し、選択された仮想チャネルと出力ポートが接続するようにクロスバスイッチ１２０５の切り替えを行う。
【０１６１】
ステップ１６０３において、クロスバスイッチの切り替えが終わると、スイッチ切替部１２１４で選択された仮想チャネルは、格納しているフリットを送信する。
【０１６２】
ステップ１６０４において、競合検出部１２１３は、ステップ１６０２において、送信チャネル選択部１２１３によって選択されたが仮想チャネル間で、出力ポートの獲得で競合が発生したかどうかを判定する。具体的には、競合検出部１２１３は、スイッチ切替部１２１４から、スイッチの切り替えができたか否かの情報を受け取る。スイッチの切り替えができたときは競合が発生していないといえる。逆にスイッチの切り替えができなかったときは競合が発生していたといえる。この基準に基づいて、競合検出部１２１３は競合が発生したかどうかを判定する。
【０１６３】
ステップ１６０５において、仮想チャネル間で、出力ポートの獲得で競合が発生した場合には、競合検出部１２１３はスイッチ切替部１２１４により選択されなかった仮想チャネルを送信チャネル選択部１２１３に通知し、送信チャネル選択部１２１３は、出力ポートを獲得できなかった入力ポートに対し、別の出力ポートへ送信する仮想チャネルの中で、送信時刻が最も古い仮想チャネルを１つ選択し、ステップ１６０２に戻る。
【０１６４】
ステップ１６０１からステップ１６０５の処理を繰り返すことにより、より多くの入力チャネルと出力チャネルの排他的な接続数を多くし、伝送性能が向上するようにクロスバスイッチの切り替えを行う。
【０１６５】
このように、実施形態１の中継装置１２０１では、パケットの宛先を区別して、ＮｏＣの中継装置において限られた仮想チャネルを異なる宛先のパケットに対して割り当てることで、同じ宛先のパケットが１部の中継装置の仮想チャネルを占有し、他の宛先へと送信されるパケットが送信できなくなる状況を回避し、伝送性能（スループット、遅延時間、ジッター）の低下を抑制する。
【０１６６】
本実施形態では、時間情報比較部１２０１において、パケットに付与された時間情報に基づく優先度として、パケットが送信された時刻の古さを優先度と定義し、送信時刻の古いパケットから優先的に出力チャネルの割り当てを行った。しかしながら、送信時刻以外の時間情報を基準に優先度を定義し、出力チャネルを割り当ててもよい。
【０１６７】
図２０は、時間情報、および、時間情報に基づく優先度の比較基準の例を示す。
【０１６８】
時間情報としては、例えば、パケットが送信されてからの経過時間を用いても良い。
【０１６９】
時間情報として送信時刻を管理するためには、半導体システムが動作している期間を表現できるだけの桁数が必要である。よって、半導体システムが長時間動作する場合には時間情報の桁数が大きくなる。
【０１７０】
これに対し、時間情報としてパケットが送信されてからの経過時間を用いる場合には、パケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数があればよいので、比較的、時間情報の桁数を小さくすることが可能になる。時間情報として扱う値の桁数が小さければ、時間情報比較部１２１０における時間情報の比較回路を小さくできるため、半導体システムのリソース削減に有効である。
【０１７１】
また、送信時刻を用いるとしても、年月日時分秒で表現される送信時刻の一部（たとえばＭ桁の送信時刻の位の小さい方からｎ桁の値（ｎ：Ｍ＞ｎとなる整数））を用いることで、時間情報として扱う桁数を小さくすることができる。ｎ桁の値としては、例えばパケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数を用いることができる。
【０１７２】
この場合、時間情報比較部１２０１において、パケットに付与された時間情報に基づく優先度として、パケットが送信されてからの経過時間が大きいパケットから優先的に出力チャネルの割り当てを行う。
【０１７３】
また、時間情報として、パケットが受信ノードに届くまでの締切時刻を用いて、締切時刻が近いパケットから順に出力チャネルを割り当てても良い。
【０１７４】
一般的に、バスマスタの種類や処理の内容によって、パケットが受信ノードに届くまでに許容できる遅延時間が異なる。このため、送信ノードから、締切時刻までの時間が比較的に長いパケットが複数送信された後に、締切時刻までの時間が短いパケットが送信される状況を想定すると、中継装置において、送信時刻の古いパケットから順番に出力チャネルを割り当ててパケットを送信するよりも、締切時刻までの残り時間の短いパケットから出力チャネルを割り当ててパケットを送信する方が、より多くのパケットに対し、許容できる遅延時間を遵守できる。
【０１７５】
この場合、時間情報比較部１２０１において、パケットに付与された時間情報に基づく優先度として、パケットが受信ノードに届くまでの締切時刻が現時刻に近いパケットから優先的に出力チャネルの割り当てを行う。
【０１７６】
また、時間情報として、締切り時刻の代わりに締切り時刻までの残り時間を用いても良い。
【０１７７】
この場合、時間情報比較部１２０１において、パケットに付与された時間情報に基づく優先度として、パケットが受信ノードに届くまでの締切り時刻までの残り時間が短いパケットから優先的に出力チャネルの割り当てを行う。
【０１７８】
本実施形態では、宛先比較部１２１１において、宛先の区別を受信ノードのアドレスとして例に説明を行った。しかしながら、宛先の区別の定義は受信ノードのアドレスに限定されるものではない。
【０１７９】
たとえば宛先として、中継器を指定してもよい。図２１（Ａ）および（Ｂ）は、中継装置Ｒ１からみた種々の宛先の定義および各定義に該当し得る宛先の具体例を示している。例えば、図２１（Ａ）の構成において、パケットが受信ノードに届くまでの伝送経路上で通過する途中の中継装置を、宛先と定義する。
【０１８０】
図２１（Ａ）の中継装置Ｒ１に対して、宛先の定義を受信ノード（メモリ）とすると、中継装置Ｒ１にとってメモリ０からメモリ７までの８個が宛先となるが、宛先の定義を２つ先までの中継装置とすると、４つの中継装置Ｒ８〜Ｒ１１が宛先となり得る。さらに、宛先の定義を１つ先の中継装置とすると、２つの中継装置Ｒ５およびＲ７が宛先となり得る。
【０１８１】
このように宛先の定義を伝送経路上の途中の中継装置とすることで、受信ノードであるメモリを宛先とした場合よりも、宛先比較部１２１１で比較する宛先数を削減ができ、仮想チャネル間での宛先の比較にかかる処理を削減できる。
【０１８２】
宛先とされた中継装置にパケットが到達した場合には、その中継装置は再び、図２１（Ｂ）のいずれかの定義にしたがって宛先を設定し、パケットを送出すればよい。
【０１８３】
（実施形態２）
実施形態１では、仮想チャネルの数やサイズに制約の多いＮｏＣにおいて、中継装置内の仮想チャネルを宛先が異なるパケット間で均一に割り当てのスケジューリング制御により、仮想チャネルの利用を効率化し、ＮｏＣ全体の伝送性能を向上させた。
【０１８４】
これに対し、本実施形態の中継装置では、さらに入力ポートと出力ポートを接続するクロスバスイッチの切替を、パケットよりもサイズの小さい１フリット送信する毎に行うことで、ＮｏＣ全体のバスの利用を効率化し、ＮｏＣの伝送性能を向上させる。
【０１８５】
図２２を用いて、本実施形態による中継装置の動作の概要を説明する。
【０１８６】
図２２（Ａ）および（Ｂ）はそれぞれ、４つの受信ノード（受信ノードＡ、受信ノードＢ、受信ノードＣ、受信ノードＤ）に対して、パケットを中継器１、中継装置２、中継装置３を介してパケットを送信した場合、各中継装置における送信スケジューリングの方法と、各バスを通過するフリットの送信順序の関係を表している。図２２（Ａ）は、バスの利用率に偏りが発生している状態を示している。図２２（B）は、バスの利用率が均一化されている状態を示している。
【０１８７】
図２２（Ａ）は、各中継装置がクロスバスイッチの切り替えを、１パケットを送信する毎に行った場合に、各バス上を流れるフリットの送信順序を示している。
【０１８８】
１パケット毎に送信スケジューリングを行った場合には、１パケットを構成する全てのフリットの送信が完了するまで、同じバスが利用されるため、図２２（Ａ）に示すように、フリットの流れが混雑するバスとフリットの流れが空いている（利用されていない）バスに分かれ、バスの利用率に偏りが発生しやすい。
【０１８９】
また、図２２（Ｂ）は、各中継装置がクロスバスイッチの切り替えを１フリット送信する毎に行った場合に、各バス上を流れるフリットの送信順序を示している。
【０１９０】
１フリット毎に送信スケジューリングを行った場合には、宛先の異なるパケットを１サイクル毎に交代しながら同時に送信できるため、異なる宛先へと向うバス間で利用負荷が均一となり、バス全体を効率的に利用しやすい。
【０１９１】
図２３は、パケットの送信スケジューリングをパケット毎に行った場合と、フリット毎に行った場合のバスの利用効率とクロスバスイッチの切り替え回数の相対的な比較を示している。
【０１９２】
図２２（Ｂ）に示すようなクロスバスイッチの切り替えをフリット毎に行う場合、パケット毎に行う場合と比較すると、クロスバスイッチの切り替えの回数が多くなる。そのためクロスバの切り替えに必要な処理量が増える。その一方、異なる宛先へと向かうバスを同時に利用できるため、ＮｏＣ全体でのバスの利用効率が向上し、伝送性能を向上させることができる。
【０１９３】
このため、本実施形態による中継装置は、仮想チャネルの利用負荷に基づき、負荷が低い場合は、省電力化のためにスイッチの切り替え回数を少ないパケットを送信する毎にクロスバスイッチの切り替えを行い、負荷が所定の閾値よりも高い場合には、バスの伝送性能の向上が見込めるフリットを送信する毎にクロスバスイッチの切り替えを行う。
【０１９４】
図２４は、実施形態２の中継装置の構成を示す。
【０１９５】
実施形態１と同じ構成については、図８と同じ番号を付与し、説明を省略する。なお、図８に示されている「入力部１２０ａ」および「出力部１２０ｂ」は、図２４には示されていないが、図２４の構成においても同様に定義できる。
【０１９６】
負荷測定部２３０１は、入力バッファ１２０４の伝送負荷が、所定の閾値を超えているかどうかの判定を行う。入力バッファ１２０４での伝送負荷の測定方法としては、例えば入力バッファ１２０４内で、現在利用されている仮想チャネル１２１６の数や、仮想チャネル１２１６内に格納されているフリット数、フリットの滞在時間などを用いることで、負荷の大きさを定量的に測定することができる。
【０１９７】
図２５は、実施形態２の中継装置での仮想チャネルと出力ポートの接続の切り替え動作を表している。
【０１９８】
実施形態１と同じ処理については、図１９と同じ番号を付与し、説明を省略する。図２５は、ステップＳ２４０１〜Ｓ２４０４が追加されている点において図１９と相違する。
【０１９９】
ステップ２４０１において、負荷測定部２３０１は入力バッファ１２０４の負荷を測定する。そしてステップＳ２４０２において、測定した負荷が閾値以下か否かを判定する。
【０２００】
負荷が閾値以下であれば、ステップ１６０１に移り、経過時間の最も古いパケットを格納している仮想チャネルを選択する。負荷が閾値より大きい場合には、ステップ２４０３に移行する。
【０２０１】
ステップ２４０３において、負荷が閾値以下であれば、送信チャネル選択部１２１３は、入力ポート毎に、出力チャネルが設定されている仮想チャネルをラウンドロビンで順番に１つ選択する。
【０２０２】
ステップ２４０４において、さらに、スイッチ切り替え部１２１４は、送信チャネル選択部１２１３が選択した仮想チャネルのうち、出力ポートが同じ仮想チャネルがある場合は、ラウンドロビンで順番に１つ選択を行う。
【０２０３】
なお、ステップ２４０３と、ステップ２４０４は、中継装置から１フリット送信されるたびに、宛先の異なるフリットが送信される方法であれば、例えばランダムに仮想チャネルを選択するなど、別の方法であっても良い。
【０２０４】
以上のように、実施形態２の中継装置は、中継装置での伝送負荷の大きさに応じて、自動的に低負荷時にはスイッチの切り替えに必要な処理量が少ないモードと、負荷が高い場合には伝送性能が高いモードを切り分けた送信を行うことができる。
【０２０５】
なお、本実施形態では、入力バッファの負荷に応じて、仮想チャネルの切り替えをパケット毎に行うか、フリット毎に行うかを選択するとした。しかしながら、仮想チャネルの切り替えを常にフリット毎に行うとしてもよい。すなわち、中継装置は、複数のパケットをフリット単位でインターリーブして複数のパケットを見かけ上並列的に出力してもよい。これは出力バッファが複数存在する場合には特に効果的である。
【０２０６】
（実施形態３）
実施形態１においては、宛先毎に送信時刻が最も古いパケットを格納する仮想チャネルに対して出力チャネルを割り当てた。
【０２０７】
本実施形態では、既に出力チャネルを設定済みのパケットと、宛先までの伝送経路上で、重複する中継装置の数がより少ないパケットから優先して出力チャネルを割り当てることで、伝送経路上でのパケット間の干渉を削減し、ＮｏＣ全体の伝送性能を向上させる。
【０２０８】
図２６は、本実施形態の概要を示している。
【０２０９】
多段接続網の中継装置Ｒ３において、メモリ０、メモリ１、メモリ３宛のパケットが仮想チャネルに格納されている状態にあり、メモリ０へ送信するパケットを格納する仮想チャネルは既に出力チャネルが設定済みであり、メモリ１とメモリ３宛のパケットを格納する仮想チャネルに対して出力チャネルを割り当てる状況を想定している。
【０２１０】
既に出力チャネルが割り当てられているメモリ０宛てのパケットの伝送経路に対し、メモリ１宛てのパケットは中継装置Ｒ５においても同じ出力ポートを利用するのに対し、メモリ３宛てのパケットは、中継装置Ｒ５では、別の出力ポートを利用する。
【０２１１】
このため、実施形態３の中継装置では、伝送経路上で出力ポートでの競合を抑制するために、パケットの送信時刻の古さに加えて、既に出力チャネルが割り当てられた宛先と宛先までの伝送経路上において重複するバスの数が少ない宛先へ送信されるパケットを格納する仮想チャネルに対して、優先的に出力チャネルを割り当てる。
【０２１２】
図２７は、本実施形態による中継装置の構成を示している。また図２８は、本実施形態による中継装置の処理の手順を示している。
【０２１３】
図２７および図２８では、実施形態１と同じ構成および処理については図８および図１７と同じ番号を付与し、説明を省略する。なお、図８に示されている「入力部１２０ａ」および「出力部１２０ｂ」は、図２７には示されていないが、図２７の構成においても同様に定義できる。
【０２１４】
図２８のステップ３３０１において、伝送経路解析部３２０１は、出力チャネル設定済みの仮想チャネルが存在するか否かを判定する。存在する場合には処理はステップ３３０２に進み、存在しない場合には処理はステップ１５０３に進む。ステップ３３０２において、伝送経路解析部３２０１は、中継装置から各宛先の受信ノードまでの伝送経路上で、重複するバスの数を解析し、出力チャネル設定済みの宛先までの経路と、重複するバスの数が最も少ない宛先の仮想チャネルを選択する。
【０２１５】
例えば、図２６の多段接続網型のトポロジーによって構成されるＮｏＣでは、比較したい宛先の２進数で示されたアドレスの各桁の数値を左から比較し、数値が同じ桁数が、バスが重複する数となる。図２６では、メモリ０（アドレス０００）とメモリ１（アドレス００１）では、左から２桁目までが一致するため、それぞれの伝送経路上の２カ所でバスが重複する。メモリ０（アドレス０００）とメモリ３（アドレス０１１）では、左から１桁目までが一致するので、それぞれの伝送経路上の１カ所でバスが重複することを特定できる。
【０２１６】
図２８は、実施形態３の中継装置での出力チャネルの割り当ての動作を表している。実施形態１と同じ動作については、図１５と同じ番号を付与し説明を省略する。
【０２１７】
ステップ３３０１において、伝送経路解析部３２０１は、出力チャネルが設定済みの仮想チャネルが存在するかどうかを判定する。存在しない場合にはステップ１５０３に進み、存在する場合にはステップ３３０２に移る。
【０２１８】
図２６の中継装置Ｒ３の例では、中継装置Ｒ３は、メモリ０へ向かうパケットを格納する仮想チャネルに対して出力チャネルが設定済であるため、ステップ３３０２に進む。
【０２１９】
次にステップ３３０２において、伝送経路解析部３２０１は、出力チャネルが設定済みの宛先までの経路上で重複するバスの数が最も少ない宛先を特定し、出力チャネルを割り当てる候補として、その宛先へ向かうパケットを格納する仮想チャネルを選択する。その後、処理はステップ１５０７に進む。
【０２２０】
図２６の中継装置Ｒ３の例では、中継装置Ｒ３は、既に出力チャネルが設定済みのメモリ０までの経路上で重複するバスの数が、メモリ１へ向かう経路とメモリ３へ向かう経路のいずれの方で少ないかを比較する。
【０２２１】
図２６の例では、メモリ０への経路とメモリ１への経路ではバスの重複は２回、メモリ０への経路とメモリ３への経路ではバスの重複は１回である。よって、中継装置Ｒ３は、出力チャネルを割り当てる候補として、メモリ３宛てのパケットを格納する仮想チャネルを選択する。
【０２２２】
以上の図２７の構成を持ち、図２８の処理を行うことにより、実施形態３の中継装置は、既に出力チャネルが設定されているパケットと、宛先までの伝送経路上で重複するバスの少ないパケットから優先的に出力チャネルを設定するため、伝送経路上での出力ポートでの競合を減らし、伝送性能を向上させることができる。
【０２２３】
なお、伝送経路解析部３２０１は、重複する経路の解析をリアルタイムで行ってもよい。しかしながら、各中継装置から各メモリまでの経路は設計時点で特定可能である。したがって、重複する経路の数を予め求めておき、その情報をたとえばテーブル形式で伝送経路解析部３２０１に保持させておけばよい。これにより、伝送経路解析部３２０１は、そのテーブルを参照することにより、重複する経路の程度を特定してもよい。
【０２２４】
以上、本発明の実施形態を説明した。
【０２２５】
実施形態１から３では、各中継装置の出力バッファ１２０６には、複数の出力バッファ１２１７を備える構成を用いて、各仮想チャネル１２１６で格納されるパケットに対し、出力チャネル選択部１２１２が出力チャネル１２１７の割り当てる例を説明した。
【０２２６】
図８の構成で説明したように、複数の出力チャネル１２１７は、出力ポート１２１９を介して接続された送信先の中継装置１２０３内の仮想チャネルと同じ数だけ設けられており、中継装置１２０３の仮想チャネルと１対１の対応関係が決まっている。このため、出力チャネル選択部１２１２が出力チャネル１２１７を選択することは、間接的に送信先の中継装置１２０３の入力ポートの仮想チャネルを選択していることと同義となる。
【０２２７】
この考えをより発展させると、本実施形態１から３の中継装置は、出力チャネル選択部１２１２が、直接、送信先の中継装置１２０３の仮想チャネルを選択することで、出力チャネル１２１７や出力バッファ１２０６を持たない構成によっても実現されることが理解される。この場合、出力チャネル選択部１２１２は、（１）たとえば、送信先の中継器１２０３から、仮想チャネルの状態の情報を取得し、送信先の中継装置１２０３内の仮想チャネルの空き状態を参照し、（２）自身の仮想チャネル１２１６に格納されている各パケットに対し、送信先の中継装置１２０３において格納する仮想チャネルを選択し、（３）さらにフリットを仮想チャネルから送信する際に、中継装置１２０３に対してフリットを格納する中継装置１２０３の仮想チャネルの指示を行えばよい。このような、出力チャネル１２１７や出力バッファ１２０６を持たない構成によれば、中継装置１２０１内のバッファを減らすことが可能になるため、実装面積の削減や、制御回路の簡略化などの効果を期待できる。
【０２２８】
また、実施形態１から３では、集積回路のトポロジーが多段接続網の場合を例に説明したが、本発明の中継装置は多段接続網での利用に限定されるものではない。例えば、図２９（Ａ）に示すように中継装置を格子状に並べてメッシュ型トポロジーを構成してもよい。また図２９（Ｂ）に示すように上下左右で中継装置をリング状に接続したトーラス型トポロジーを構成してもよい。さらに図２９（Ｃ）に示すようにバスを階層的に接続した階層型トポロジーなどを構成してもよい。複数のバスマスタを分散型のバスを介して接続したトポロジーであれば、同様に本発明の中継装置の適用が可能である。
【０２２９】
図３０は、本発明の中継装置をメモリバスに利用した例を説明する図である。
【０２３０】
図３０では、携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、電子書籍リダーなどの携帯端末や、ＴＶ、ビデオレコーダ、ビデオカメラ、監視カメラ等で用いられる半導体回路上のバスマスタ（ＣＵＰ，ＤＳＰ、伝送処理部、画像処理部など）と複数のメモリを分散型のバスを利用して接続させた利用例を示している。
【０２３１】
複数の映像や音楽などの再生、記録、トランスコード、書籍や写真、地図でタの閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。各バスマスタからアクセスするメモリの数が１つだけの場合、アクセスが１箇所に集中してしまう。アクセス集中の解決のめには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
【０２３２】
このメモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分け、これらのバスマスタとメモリを分散型のバスで接続させることで、メモリアクセスの集中の回避が可能となる。
【０２３３】
しかし、例えば図３０において、あるバスマスタが、映像データを保存するためにメモリＡに対して高いレートでデータパケットを送信した場合、各中継装置が送られてきたデータパケットの順序を単純に維持したまま中継すると、伝送経路上の仮想チャネルが全てメモリＡ宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下や処理時間の増加が発生してしまう。
【０２３４】
これに対し、本発明の中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルを割り当てられるため、特定のメモリに向うパケットによる仮想チャネルの占有が回避され、半導体回路上の全てのアプリケーションやサービスの性能の向上や、処理時間の短縮化ができる。
【０２３５】
なお、上述のメモリは、揮発性のＤＲＡＭであってもよいし、不揮発性のフラッシュメモリであってもよい。揮発性メモリおよび不揮発性メモリが混在していてもよい。
【０２３６】
図３１は、本発明の中継装置をマルチコアプロセッサ（ｍｕｌｔｉ−ｃｏｒｅ  ｐｒｏｃｅｓｓｏｒ）上で利用した例を説明する図である。マルチコアプロセッサ内のコアは、たとえばＣＰＵ、ＧＰＵ、ＤＳＰなどである。
【０２３７】
図３１では、ＣＰＵやＧＰＵ，ＤＳＰ等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に並べ、これらを分散バスで接続したマルチコアプロセッサである。
【０２３８】
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われており、例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りし、共有が可能であり、これにより性能を向上させることができる。
【０２３９】
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ配置や距離（中継ホップ数）、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、仮想チャネルが全て特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継装置が発生し、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
【０２４０】
これに対し、本発明の中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルを割り当てられるため、特定のコアプロセッサに向うパケットにより仮想チャネルが占有された中継装置の発生が回避され、各コアプロセッサの性能の向上や、処理時間の短縮化ができる。
【産業上の利用可能性】
【０２４１】
本発明にかかる中継装置は、分散型のバスを備える集積回路において、送信パケットに対する各中継装置での仮想チャネルの割り当て順番のスケジューリングを効率的に行うことで、ＮｏＣ全体での伝送性能（スループット、伝送遅延、ジッター）を向上できる。当該中継装置によれば、実装時の制約の大きい仮想チャネルを増やす必要はない。このため、例えば複数のメディア処理用のＤＳＰや、高速なファイル転送を行うＣＰＵなどを、分散バスを用いて１つのＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）上に集積化する際に、実装に必要なリソースの省資源化と、処理の低遅延化の双方を実現する上で有用である。【０２４２】
また、リソースの省資源化と処理の低遅延化による、集積回路全体での省電化に対しても有用である。
【符号の説明】
【０２４３】
１１００  パケット
１１０１  ヘッダフィールド
１１０２  データフィールド
１１０３  制御コードフィールド
１２０１  中継装置
１２０２  入力ポート先の隣接の中継装置
１２０３  出力ポート先の隣接の中継装置
１２０４  入力バッファ
１２０５  クロスバスイッチ
１２０６  出力バッファ
１２０７  仮想チャネル情報管理部
１２０８  出力ポート選択部
１２１０  時間情報比較部
１２１１  宛先比較部
１２１２  出力チャネル選択部
１２１３  送信チャネル選択部
１２１４  スイッチ切替部
１２１５  競合検出部
１２１６  仮想チャネル
１２１７  出力チャネル
１２１８  入力ポート
１２１９  出力ポート
１３０１  バッファ管理情報
２３０１  負荷測定部
３２０１  伝送経路解析部
【図１】
2012029215.tif 000003
【図２】
2012029215.tif 000004
【図３】
2012029215.tif 000005
【図４】
2012029215.tif 000006
【図５】
2012029215.tif 000007
【図６】
2012029215.tif 000008
【図７】
2012029215.tif 000009
【図８】
2012029215.tif 000010
【図９】
2012029215.tif 000011
【図１０】
2012029215.tif 000012
【図１１】
2012029215.tif 000013
【図１２】
2012029215.tif 000014
【図１３】
2012029215.tif 000015
【図１４】
2012029215.tif 000016
【図１５】
2012029215.tif 000017
【図１６】
2012029215.tif 000018
【図１７】
2012029215.tif 000019
【図１８】
2012029215.tif 000020
【図１９】
2012029215.tif 000021
【図２０】
2012029215.tif 000022
【図２１】
2012029215.tif 000023
【図２２】
2012029215.tif 000024
【図２３】
2012029215.tif 000025
【図２４】
2012029215.tif 000026
【図２５】
2012029215.tif 000027
【図２６】
2012029215.tif 000028
【図２７】
2012029215.tif 000029
【図２８】
2012029215.tif 000030
【図２９】
2012029215.tif 000031
【図３０】
2012029215.tif 000032
【図３１】
2012029215.tif 000033
【国際調査報告】
2012029215.tif 000034
2012029215.tif 000035
2012029215.tif 000036
2012029215.tif 000037