(57)【要約】  トラヒック特性の違い及び、時々刻々と変化するメモリのアクセス負荷を加味した、より高効率および低遅延なネットワーク伝送を実現する。  中継器は、バスマスターとメモリとの間において、ネットワーク化された通信バス上で、データを伝送させる。この中継器は、データを送信する複数の伝送経路上に存在する他の中継器における処理遅延時間の情報を取得する遅延時間処理部と、取得した複数の伝送経路に関する処理遅延時間の情報に基づいて、メモリと、複数の伝送経路のうちのメモリへの伝送経路の１つとを選択する低遅延経路選択部とを備えている。
2011089899.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの第１ノードと、
複数の第２ノードと、
前記少なくとも１つの第１ノードから送信されたデータを、ネットワーク化された通信バスを介して中継し、前記複数の第２ノードの１つに伝送する中継器と
を備えた半導体システムであって、
前記中継器は前記少なくとも１つの第１ノードに接続されており、
前記中継器は、前記複数の第２ノードの各々および複数の伝送経路の各々の組み合わせの中から、各第２ノードの負荷値の情報および各伝送経路の負荷値の情報に基づいて１組の第２ノードと伝送経路を選択する低遅延経路選択部を備え、
前記中継器は、前記低遅延経路選択部によって選択された伝送経路を利用して選択された第２ノードに向けて前記データを中継する、半導体システム。
【請求項２】
前記低遅延経路選択部は、前記第２ノードの負荷値として、前記第２ノード直前の中継器のバッファ量、パケットの待ち時間、スループットおよびジッターの少なくとも一つを用いる、請求項１に記載の半導体システム。
【請求項３】
前記低遅延経路選択部は、前記伝送経路の負荷値として、中継段数、データ長、バス幅、バス帯域の少なくとも一つを用いる、請求項１に記載の半導体システム。
【請求項４】
前記低遅延経路選択部は、前記少なくとも１つの第１ノードと前記第２ノード間の往路に関する評価値と復路に関する評価値との和が最小となる前記第２ノードと伝送経路とを選択する、請求項１に記載の半導体システム。
【請求項５】
前記低遅延経路選択部は、ピーク変動の激しい、単発的なトラヒックを同一の伝送経路または前記第２ノードに優先的に集約する、請求項１に記載の半導体システム。
【請求項６】
前記複数の第２ノードは、メモリ、プロセッサ、デジタル信号プロセッサの少なくとも一つを含む、請求項１に記載の半導体システム。
【請求項７】
前記複数の第２ノードは、複数のネットワーク間を接続する中継器を含む、請求項１に記載の半導体システム。
【請求項８】
バスマスターとメモリとの間において、ネットワーク化された通信バス上で、データを伝送させる中継器であって、
前記データを送信する複数の伝送経路上に存在する他の中継器における処理遅延時間の情報を取得する遅延時間処理部と、
取得した前記複数の伝送経路に関する処理遅延時間の情報に基づいて、メモリと、前記複数の伝送経路のうちの前記メモリへの伝送経路の１つとを選択する低遅延経路選択部と
を備えた、中継器。
【請求項９】
前記低遅延経路選択部は、取得した前記複数の伝送経路に関する処理遅延時間の情報に基づいて、アクセス速度が異なる複数種類のメモリのうちのアクセス速度が相対的に高いメモリと、前記メモリへの遅延時間が最も小さい伝送経路とを選択する、請求項８に記載の中継器。
【請求項１０】
前記データの低遅延要求レベルを示す情報が予め定められた遅延時間を超えないレベルを示すときにおいて、
前記低遅延経路選択部は、前記複数の伝送経路の各々に流れるトラヒックの振幅、パケットサイズ、データサイズ、送信間隔の少なくとも１つの情報に基づいて、前記アクセス速度が相対的に高いメモリと、前記メモリへの遅延時間が最も小さい伝送経路とを選択する、請求項９に記載の中継器。
【請求項１１】
前記低遅延経路選択部は、前記複数種類のメモリのうちのアクセス速度が相対的に低いメモリを選択し、前記メモリへの伝送経路のトラヒックの振幅、パケットサイズ、データサイズ、送信間隔の少なくとも１つの大きさに基づいて前記メモリへの伝送経路を選択する、請求項１０に記載の中継器。
【請求項１２】
前記データを受信する受信部と、
前記処理遅延時間の情報を送信する送信部と
をさらに備え、前記中継器が前記複数種類のメモリのいずれかに接続されているときは、前記遅延時間処理部は、前記送信部を介して、前記受信部での前記処理遅延時間の情報を他の中継器へ転送する、請求項８に記載の中継器。
【請求項１３】
前記処理遅延時間の情報を受信する受信部をさらに備え、前記中継器が前記バスマスターに接続されているときは、前記遅延時間処理部は、前記受信部を介して、前記他の中継器における前記処理遅延時間の情報を収集する、請求項８に記載の中継器。
【請求項１４】
前記低遅延経路選択部は、低遅延を要求するトラヒックの遅延時間と、中継段数と、前記伝送単位のデータ長とを少なくとも１つ以上用いて生成された評価値に応じて、メモリと、前記複数の伝送経路のうちの前記メモリへの伝送経路の１つとを選択する、請求項８に記載の中継器。
【請求項１５】
前記低遅延経路選択部は、バスマスターとメモリ間の往路に関する評価値と復路に関する評価値との和が最小値となるメモリと伝送経路とを選択する、請求項１４に記載の中継器。
【請求項１６】
同一の対となるバスマスター間でデータが伝送されるとき、
前記低遅延経路選択部は、同一のメモリおよび伝送経路を選択する、請求項８に記載の中継器。
【請求項１７】
ピーク変動であるか否かと、単発的なトラヒックであるか否かに応じて、前記低遅延経路選択部は、同一のメモリおよび伝送経路を選択する、請求項８に記載の中継器。
【請求項１８】
前記遅延時間処理部は、前記低遅延要求レベルを示す情報が予め定められた遅延時間以上のレベルを示すときにおいて、前記複数の伝送経路に関する処理遅延時間の情報を取得する、請求項８に記載の中継器。
【請求項１９】
少なくとも１つのバスマスターと、
少なくとも１つのメモリと、
前記少なくとも１つのバスマスターおよび前記少なくとも１つのメモリの間のネットワーク化された通信バス上に複数設けられた、請求項８に記載の中継器と
を備えた、チップ回路。
【請求項２０】
前記少なくとも１つのバスマスターを利用して複数のアプリケーションソフトウェアが実行されるときにおいて、
前記低遅延経路選択部は、アプリケーションソフトウェアごとに、各アプリケーションソフトウェアが利用する前記少なくとも１つのメモリおよび前記複数の伝送経路の１つを選択する、請求項１９に記載のチップ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス負荷分散を実現する半導体システムにおける、低遅延伝送装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
従来から、半導体チップ回路でのメモリアクセス負荷を分散させるために、実現コストと処理性能を加味してアクセス速度の異なるメモリを有機的に結合した階層型メモリの半導体システム回路が提案されている。特に、バスの負荷集中の課題を解決するために、半導体チップ回路内のネットワーク、すなわちネットワークオンチップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ；以下本願明細書で「ＮｏＣ」と記述する。）により、複数の伝送経路にトラヒックを分散させる研究開発が行われている。【０００３】
本明細書では、ＮｏＣを用いてバスを分散化し、ＤＲＡＭやＳＲＡＭなどの書き換え可能なメモリを複数個、ＮｏＣに接続した半導体システムを想定する。【０００４】
このような半導体システムにおいて、時々刻々と変化するメモリアクセスの要求に追随できるメモリアクセスの負荷分散を実現するためには、データ格納先のメモリの決定と、バスマスター（例えば、ＣＰＵやＤＳＰ）からメモリまでの伝送経路の決定との両方が必要である。つまり、従来は、バスマスターが最適なメモリを選択する技術と、伝送経路を選択する技術が個別に開発されていた。【０００５】
従来のデータ格納先のメモリの決定方法として、要求順に処理を割当てるラウンドロビン方式が挙げられる。また、バスマスターからメモリまでの伝送経路の決定方法として、ネットワークオンチップでの効率的な伝送方式が提案されている。具体的には、中継器（ルータ）を用いた伝送経路のネットワーク化により、複数の伝送経路を選択して利用できるため、複数の経路を効率よく利用してバスの輻輳の課題を解決する技術が公開されている。【０００６】
例えば、特許文献１は、マルチプロセッサ間の相互接続を対象としたネットワーク伝送での経路選択技術を開示している。特許文献１では複数の経路が選択可能であることを想定し、伝送を行った経路で、一定時間内に応答がなければ、ルートごとの予め定められた選択確率の分布に従って、複数の予め定められた経路の１つを選択し、パケットの再送を行うという技術が公開されている。すなわち、半導体上のネットワークにおいて、経路の伝送品質を監視した結果に基づき、伝送経路の選択を行う技術が公開されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３８１６５３１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来の技術では、データ格納先のメモリと、バスマスターからメモリまでの伝送経路とをそれぞれ調整して伝送効率を向上させようとしていたが、今後は、さらに効率がよく、また、低遅延なネットワーク伝送の実現が必要とされている。また、従来の技術では、要求される伝送遅延特性がトラヒック毎に異なる場合の伝送方式への配慮がなされていなかった。【０００９】
具体的には、従来のデータ格納先のメモリの決定方法はラウンドロビン方式であるため、時々刻々と変化するメモリアクセス負荷に応じたデータの格納先の割当ができていない。例えば映像データのように、コンテンツに応じて符号量が時間的に大きく変化する場合、割当先のメモリ間でアクセス負荷に大きな違いが生じ、メモリアクセスの負荷分散が有効に働かない。【００１０】
また、ネットワークオンチップのネットワーク上では、低遅延伝送が要求されるトラヒックと、そうでないトラヒックが存在する。例えば、ユーザ操作のように高い応答性が必要な処理や、背景描写のように応答性が必要でないトラヒックが存在する。これらのトラヒックが同一のネットワーク上で混在する場合、トラヒックの相互干渉により、低遅延要求レベルの高いトラヒックが低遅延要求レベルの低いトラヒックに影響を与える。このため、トラヒックの特性（上記の例では、トラヒックレートや低遅延要求レベル）の違いを加味したデータ格納先のメモリの決定と伝送経路の決定方法が必要である。【００１１】
本発明の目的は、トラヒック特性の違い及び、時々刻々と変化するメモリのアクセス負荷を加味した、より高効率および低遅延なネットワーク伝送を実現することにある。
【課題を解決するための手段】
【００１２】
本発明による半導体システムは、少なくとも１つの第１ノードと、複数の第２ノードと、前記少なくとも１つの第１ノードから送信されたデータを、ネットワーク化された通信バスを介して中継し、前記複数の第２ノードの１つに伝送する中継器とを備えた半導体システムであって、前記中継器は前記少なくとも１つの第１ノードに接続されており、前記中継器は、前記複数の第２ノードの各々および複数の伝送経路の各々の組み合わせの中から、各第２ノードの負荷値の情報および各伝送経路の負荷値の情報に基づいて１組の第２ノードと伝送経路を選択する低遅延経路選択部を備え、前記中継器は、前記低遅延経路選択部によって選択された伝送経路を利用して選択された第２ノードに向けて前記データを中継する。【００１３】
前記低遅延経路選択部は、前記第２ノードの負荷値として、前記第２ノード直前の中継器のバッファ量、パケットの待ち時間、スループットおよびジッターの少なくとも一つを用いてもよい。【００１４】
前記低遅延経路選択部は、前記伝送経路の負荷値として、中継段数、データ長、バス幅、バス帯域の少なくとも一つを用いてもよい。【００１５】
前記低遅延経路選択部は、前記少なくとも１つの第１ノードと前記第２ノード間の往路に関する評価値と復路に関する評価値との和が最小となる前記第２ノードと伝送経路とを選択してもよい。【００１６】
前記低遅延経路選択部は、ピーク変動の激しい、単発的なトラヒックを同一の伝送経路または前記第２ノードに優先的に集約してもよい。【００１７】
前記複数の第２ノードは、メモリ、プロセッサ、デジタル信号プロセッサの少なくとも一つを含んでもよい。【００１８】
前記複数の第２ノードは、複数のネットワーク間を接続する中継器を含んでもよい。【００１９】
本発明による中継器は、バスマスターとメモリとの間において、ネットワーク化された通信バス上で、データを伝送させる中継器であって、前記データを送信する複数の伝送経路上に存在する他の中継器における処理遅延時間の情報を取得する遅延時間処理部と、取得した前記複数の伝送経路に関する処理遅延時間の情報に基づいて、メモリと、前記複数の伝送経路のうちの前記メモリへの伝送経路の１つとを選択する低遅延経路選択部とを備えている。【００２０】
前記低遅延経路選択部は、取得した前記複数の伝送経路に関する処理遅延時間の情報に基づいて、アクセス速度が異なる複数種類のメモリのうちのアクセス速度が相対的に高いメモリと、前記メモリへの遅延時間が最も小さい伝送経路とを選択してもよい。【００２１】
前記データの低遅延要求レベルを示す情報が予め定められた遅延時間を超えないレベルを示すときにおいて、前記低遅延経路選択部は、前記複数の伝送経路の各々に流れるトラヒックの振幅、パケットサイズ、データサイズ、送信間隔の少なくとも１つの情報に基づいて、前記アクセス速度が相対的に高いメモリと、前記メモリへの遅延時間が最も小さい伝送経路とを選択してもよい。【００２２】
前記低遅延経路選択部は、前記複数種類のメモリのうちのアクセス速度が相対的に低いメモリを選択し、前記メモリへの伝送経路のトラヒックの振幅、パケットサイズ、データサイズ、送信間隔の少なくとも１つの大きさに基づいて前記メモリへの伝送経路を選択してもよい。【００２３】
前記中継器は、前記データを受信する受信部と、前記処理遅延時間の情報を送信する送信部とをさらに備え、前記中継器が前記複数種類のメモリのいずれかに接続されているときは、前記遅延時間処理部は、前記送信部を介して、前記受信部での前記処理遅延時間の情報を他の中継器へ転送してもよい。【００２４】
前記処理遅延時間の情報を受信する受信部をさらに備え、前記中継器が前記バスマスターに接続されているときは、前記遅延時間処理部は、前記受信部を介して、前記他の中継器における前記処理遅延時間の情報を収集してもよい。【００２５】
前記低遅延経路選択部は、低遅延を要求するトラヒックの遅延時間と、中継段数と、前記伝送単位のデータ長とを少なくとも１つ以上用いて生成された評価値に応じて、メモリと、前記複数の伝送経路のうちの前記メモリへの伝送経路の１つとを選択してもよい。【００２６】
前記低遅延経路選択部は、バスマスターとメモリ間の往路に関する評価値と復路に関する評価値との和が最小値となるメモリと伝送経路とを選択してもよい。【００２７】
同一の対となるバスマスター間でデータが伝送されるとき、前記低遅延経路選択部は、同一のメモリおよび伝送経路を選択してもよい。【００２８】
ピーク変動であるか否かと、単発的なトラヒックであるか否かに応じて、前記低遅延経路選択部は、同一のメモリおよび伝送経路を選択してもよい。【００２９】
前記遅延時間処理部は、前記低遅延要求レベルを示す情報が予め定められた遅延時間以上のレベルを示すときにおいて、前記複数の伝送経路に関する処理遅延時間の情報を取得してもよい。【００３０】
本発明によるチップ回路は、少なくとも１つのバスマスターと、少なくとも１つのメモリと、前記少なくとも１つのバスマスターおよび前記少なくとも１つのメモリの間のネットワーク化された通信バス上に複数設けられた、上述のいずれかに記載の中継器とを備えている。【００３１】
前記少なくとも１つのバスマスターを利用して複数のアプリケーションソフトウェアが実行されるときにおいて、前記低遅延経路選択部は、アプリケーションソフトウェアごとに、各アプリケーションソフトウェアが利用する前記少なくとも１つのメモリおよび前記複数の伝送経路の１つを選択してもよい。
【発明の効果】
【００３２】
メモリアクセス負荷分散を実現する半導体システムにおいて、高効率伝送且つ低遅延なネットワーク伝送が可能である。
【図面の簡単な説明】
【００３３】
【図１】（ａ）はハードウェア接続構成例を示す図であり、（ｂ）はその模式図である。
【図２】２次元メッシュ型でバスマスターを結合したＮｏＣバスの構成例を示す図である。
【図３】本発明の実施形態１による経路制御方法に従って伝送経路の制御が行われるＮｏＣの一例の模式図である。
【図４】中継器の接続構成を示す図である。
【図５】中継器の構成を示すブロック図である。
【図６】バスマスターの種々の処理に関連して行われるメモリの動作と、中継器を介してバスマスターとメモリとの間で授受されるデータの例とを示す図である。
【図７】低遅延伝送を実現するＮｏＣのネットワーク構造を示す図である。
【図８】パケット６０の伝送フォーマットの一例と、パケット６０を複数のフリットに分割した例を示す図である。
【図９】ＮｏＣ上を流れるフローの特性例を説明する図である。
【図１０】遅延時間の収集と転送の処理手順を示すフローチャートである。
【図１１】（Ａ）および（Ｂ）は、低遅延伝送を実現するためのＮｏＣの構成を示す図である。
【図１２】中継器の処理手順を示すフローチャートである。
【図１３】図１２のステップＳ８０５の処理の詳細な手順を示すフローチャートである。
【図１４】メモリと経路の選択基準となる評価値の具体例を示す図である。
【図１５】メモリと経路の選択基準となる評価値に基づいてメモリと経路を選択する具体例を示す図である。
【図１６】（Ａ）および（Ｂ）は、往路と復路の評価値を総合してメモリと経路を決定する処理の例を示す図である。
【図１７】（Ａ）はアプリケーションが要求する伝送遅延を区別する処理タイプを示す図であり、（Ｂ）は図９で説明したフローの管理表に、上記の処理タイプを追加した例を示す図である。
【図１８】往路を加味した経路およびメモリの選択方法の処理手順を示すフローチャートである。
【図１９】（Ａ）および（Ｂ）は、往路と復路の違いを加味した評価値の具体例を示す図である。
【図２０】トラヒック特性による経路の集約方法の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００３４】
以下、添付の図面を参照して、本発明による低遅延伝送装置および低遅延伝送方法の実施形態を説明する。
【００３５】
まず、図１（ａ）および（ｂ）は、ＮｏＣの一部の構成を示す。図１（ａ）はハードウェア接続構成例を示す図であり、図１（ｂ）はその模式図である。図１（ａ）および（ｂ）によれば、チップ１０上に設けられたバスマスター１ａ〜１ｃが、それぞれ中継器（Ｒ）２を介してバス３に接続されていることが示されている。
【００３６】
図２は、２次元メッシュ型でバスマスターを結合した一般的なＮｏＣの構成例を示す。マイクロプロセッサやデジタル信号プロセッサ（ＤＳＰ）、メモリ、入出力回路等のバスマスター毎に、データ転送経路の制御を行う中継器Ｒが配置され、バス制御装置Ｒ間を短配線で接続（リンク）する。
【００３７】
次に、本発明の実施形態において想定するＮｏＣバスを有する半導体システムの構成を説明する。
【００３８】
図３は、本実施形態による経路制御方法に従って伝送経路の制御が行われるＮｏＣの一例を模式的に示す。図３のシステムでは、複数のチップがアービター（調停器）を介して、メモリアクセスを行う。そして、アービター内部がＮｏＣで構成されている。ＮｏＣを用いて複数のメモリへアクセスを分散化することで、バスの負荷を集中することなく、低い動作クロックでＮｏＣを動作することが可能となる。図の例では、インターネットの処理とメディア処理の２種類のトラヒックが混在し、トラヒック干渉により伝送遅延が発生する。
【００３９】
具体的には、インターネット機能を内蔵したテレビや携帯電話のバスをネットワークオンチップで構成した場合、ネットワークオンチップのネットワーク上では、低遅延伝送が要求されるトラヒックと、そうでないトラヒックが存在する。例えば、低遅延要求レベルの高い伝送として、テレビのチャンネル切替えにおけるユーザ操作のように、高い応答性が必要な処理がある。一方、低遅延要求レベルの低い伝送として、インターネットのコンテンツ表示での背景描写のように応答性が必要でないトラヒックが存在する。これらのトラヒックが同一のネットワーク上で混在する場合、トラヒックの相互干渉により、低遅延要求レベルの低いトラヒックが低遅延要求レベルの高いトラヒックに影響を与える。
【００４０】
本実施形態では、トラヒックの特性の違いがある伝送を想定する。トラヒックの特性として、例えば、トラヒックレート、アプリケーション毎のパケットサイズ、トラヒックフローの数、アプリケーションが必要とする低遅延の度合い（低遅延要求レベル）が挙げられる。そして、ＤＳＰやＣＰＵなどのバスマスター、ＤＲＡＭやＳＲＡＭなどの書き換え可能なメモリを複数個、ＮｏＣに接続した半導体システムにおいて、ＮｏＣに接続されたバスマスターから、伝送負荷が低い経路であり、且つ、アクセス負荷が低いメモリを動的に選択する用途を想定する。
【００４１】
本実施形態によるＮｏＣでは、規定の時間長の伝送スロットを設け、伝送スロットに同期して対象情報を伝送する通信方式を採用してもよいし、非同期で対象情報を伝送する通信方式を採用してもよい。また、中継器ではパケットの廃棄は発生せず、伝送が可能になるまでパケットは保持されるものとする。さらに、フロー制御を導入して、送信するパケット間隔を調整してもよい。なお、本実施形態においては、伝送されるデータの単位（伝送単位）を、パケット又はフリットとよぶ。これらの具体的な構成例は後に説明する。
【００４２】
図４および図５は、中継器の構成を示す。
【００４３】
図４は、複数のバスマスター２００１、中継器２００２およびメモリ２００３の接続関係を示している。バスマスター２００１（たとえばＤＳＰ、ＣＰＵ、ＩＯなど）からの要求に従い、複数段の中継器２００２を介して、複数のメモリ２００３のうちの適切なメモリへアクセスが行われる。トラヒックの負荷を分散させるために、複数の中継器２００２を多段接続することで、伝送経路上での輻輳が抑制される。また、複数のメモリ２００３を用意して、アクセス先を集中させないことで、メモリへのアクセス負荷を軽減する。
【００４４】
図５は、中継器内部の構成例を示す。この構成では、バスマスターからメモリへの伝送と、メモリからバスマスターへの伝送を独立して送受信制御する構成で実現している。
【００４５】
中継器は、受信部２０１および２０２と、送信部２０５および２０６とを有している。受信部（Ｂ１、・・・、ＢＸ）２０１は、他の中継器またはバスマスターから命令やデータ列を受信する。受信部（Ｍ１、・・・、ＭＺ）２０２は、他の中継器またはメモリからの命令やデータ列を受信する。送信部（Ｂ１、・・・、ＢＮ）２０５および送信部（Ｍ１、・・・、ＭＹ）２０６は、決定された伝送先（他の中継器またはメモリ）に命令やデータ列を送信する。
【００４６】
受信部を２系統有している理由は、複数の中継器やバスマスターからのトラヒックを同時に処理できるようにするためである。また送信部を２系統有している理由は、複数の中継器やメモリからのトラヒックを同時に処理できるようにするためである。なお、受信部および送信部の少なくとも一方が３系統以上設けられていてもよいし、一方または両方が１系統であってもよい。
【００４７】
また、図の構成では、バスマスターからのアクセス要求と、メモリからのアクセス要求を同時に処理できるようにするため、行き先ごと（バスマスター側又は、メモリ側）に受信バッファ（図示せず）を設けている。
【００４８】
中継器はさらに、パケット構造解析部２０３（またはパケット構造解析部２０４）と、遅延時間処理部２０７と、接続関係データベース２０８と、経路情報部２０９と、低遅延経路選択部２１０とを備えている。
【００４９】
パケット構造解析部２０３（またはパケット構造解析部２０４）は、受信したパケットの構造を解析し、低遅延伝送の要求の有無を判定する。
【００５０】
遅延時間処理部２０７は、中継器の接続関係を示す情報を格納した接続関係データベース２０８を参照して、トラヒックの遅延時間の収集又は、送信のいずれかの動作を決定する。より具体的には、遅延時間処理部２０７は、受信部２０１を介して、バスマスター側にある他の中継器、又は、バスマスターから受信状況の情報を受信する。受信状況の情報は、例えば、受信部のバッファ量やパケットの残留時間である。そして送信部２０６を介して受信状況の情報を、他の中継器又は、メモリへ伝送する。また遅延時間処理部２０７は、受信部２０２を介して、メモリ側にある他の中継器からの受信情報の情報、又は、メモリから受信状況の情報を受信し、送信部２０５を介して他の中継器又は、バスマスターへ伝送する。
【００５１】
経路情報部２０９は経路情報を管理する。低遅延経路選択部２１０は伝送先の中継器、又はメモリを決定する。
【００５２】
図６は、バスマスターの種々の処理に関連して行われるメモリの動作と、中継器を介してバスマスターとメモリとの間で授受されるデータの例とを示している。
【００５３】
たとえばバスマスターが行う撮像処理では、映像データおよび音声データがメモリに送信され、メモリに記録される。また、変換処理では、映像データおよび音声データがメモリから読み出され、バスマスターによって変換された映像データおよび音声データがメモリに送られてメモリに記録される。
【００５４】
図７は、低遅延伝送を実現するＮｏＣのネットワーク構造を示す。図の例では、中継処理をバイパスする経路と、バイパスしない普通の経路とが区別されている。また、低遅延要求レベルが高いトラヒックのみを収容するメモリと、そうでないメモリとが区別されて記載されている。例えば、低遅延要求レベルが予め定められたレベルよりも高いトラヒックのみを収容するメモリとして、ＳＲＡＭなどの物理的に高速なメモリを利用してもよい。低遅延要求レベルが予め定められたレベルよりも高くはないトラヒックを収容するメモリとして、上述の物理的に高速なメモリ以外のメモリ（たとえばＤＲＡＭなどの比較的低速なメモリ）を利用してもよい。バイパスする経路を選択する方法や、低遅延要求レベルが高いトラヒックを収容するメモリを選択する方法は、後に詳細に説明する。なお、バイパスする経路の設定は、図に示した例に制限されず、全ての中継器にバイパスする経路を設定しても良い。また、低遅延を要求するメモリは必ずしも設定する必要はない。
【００５５】
図８はパケット６０の伝送フォーマットの一例と、パケット６０を複数のフリットに分割した例を示す。
【００５６】
パケット６０は、ヘッダフィールド６１、データフィールド６２および制御コードフィールド６３を備えている。
【００５７】
ヘッダフィールド６１には、図面右側から順に、送信先のアドレス、送信元のアドレス、フローＩＤ、データ種別、低遅延要求レベル（低遅延要求のタイプ）、振幅を示す情報がそれぞれ記述される。低遅延要求のタイプの記述方法は任意であるが、多値で表現されてもよい。例えば、低遅延要求レベルが高く、高い応答性が必要なユーザインターフェースの処理は高い数値を、低遅延要求レベルが低く、バックグラウンド処理で対応可能な映像のトランスコード処理には低い数値を割当てる。これらの情報の後に、伝送するデータを記述する。
【００５８】
データフィールド６２には、たとえば映像データ、音声データが記述される。制御コードフィールド６３には、たとえば、予め定められたパケット６０の終了コードが記述される。
【００５９】
上述のヘッダフィールド６１のデータのうち、送信先のアドレスと、送信元のアドレスとに基づいて、パケットの中継処理と、受信側での受信処理とが行われる。また、低遅延要求のタイプに基づき、伝送経路が決定される。
【００６０】
送信側のバスマスターは、パケットを、フリットと呼ばれる小さなパケット単位に分解して伝送する。受信側のメモリでは、終了コードに基づき、伝送されたフリットをパケットへ再構築する。図の例で示したように、フリットの長さは、送信先のアドレスと、送信元のアドレス、低遅延要求のタイプを記述するフィールドなど、制御データを記述できる長さを基準としてもよい。
【００６１】
たとえば、１パケットのサイズは１２８バイト、１フリットのサイズは３２ビットまたは６４ビットである。ただし、１パケットのサイズおよび１フリットのサイズはアプリケーションによって異なり得るため、上述のサイズは一例に過ぎないことに留意されたい。
【００６２】
図９は、ＮｏＣ上を流れるフロー（トラヒック）の特性例を示す。
【００６３】
フローを識別するＩＤと、データ種別を識別する項目、低遅延伝送の要求の程度の高さ示す項目（図の例では、数値が低いほど要求が高い）、トラヒックの特性を示す項目を用意する。本実施形態では、トラヒックの振幅をトラヒックの特性として採用する。「トラヒックの振幅」とは、トラヒック量の大きさの時間的な変動幅を示し、平均的な振幅（トラヒック量）に対して、どの程度のずれがあるかを示している。たとえば「±３０％」は、平均の振幅に対して±３０％のずれがあることを示す。この数値が大きい程、トラヒックの負荷変動が高くなる。
【００６４】
上述したデータ種別、低遅延伝送の要求の高低、トラヒックの振幅の情報は、半導体の設計時に想定されるトラヒックを評価することにより、事前に把握されてもよい。または、現実的には、ユーザ操作などの、半導体の設計時点では見積もりきれないトラヒックが発生することに鑑み、半導体の動作時に各中継器を利用してそれらの情報を収集してもよい。このフローの特性に基づき、後述の方法で伝送経路やメモリを選択する。
【００６５】
図１０は、遅延時間の収集と転送の処理手順を示すフローチャートである。
【００６６】
ステップＳ４０１において、遅延時間処理部２０７は、接続関係データベース２０８を参照して、中継器の接続関係を把握する。ステップＳ４０２において遅延時間処理部２０７は、自身が所属する中継器（以下「自中継器」と記述する。）がバスマスターに接続されているか否かを判定する。バスマスターに接続されていれば処理はステップＳ４０３に進み、接続されていなければ処理はステップＳ４０４に進む。ステップＳ４０３では、遅延時間処理部２０７は、メモリに直接接続された全ての中継器の遅延時間の情報を収集し、その情報を内部に記憶する。
【００６７】
ステップＳ４０４では、遅延時間処理部２０７は、自中継器がメモリに接続されているか否かを判定する。メモリに接続されていれば処理はステップＳ４０５に進み、接続されていなければ処理はステップＳ４０１に戻る。
【００６８】
ステップＳ４０５では、遅延時間処理部２０７は、自中継器の受信部２０１での処理遅延時間の情報を、バスマスターに直接接続された全ての中継器へ送信する。送信先は、問い合わせをしてきたルータのアドレス、または、予め設定されたアドレスである。バスマスターに接続された中継器は、得られた遅延時間に基づき、伝送経路とメモリを決定する。
【００６９】
遅延時間の情報は、上述の中継器から定期的に送信されてもよいし、遅延時間処理部２０７から上述の中継器に対して要求を送信し、その要求に基づく中継器からの応答として送信されてもよい。遅延時間の情報は、受信部２０１でのデータの滞在時間で表現されてもよいし、単位時間当たりに処理したパケット数で表現されてもよい。
【００７０】
なお、次元順ルーティングなどＮｏＣで一般的なルーティングを実装や、メモリへの伝送経路が一意に決定されるネットワークの構造（例えば、バタフライ）を設計時に定義して宛先のメモリを選択することで、経路は一意に決定される。メモリに接続された中継器の遅延時間の情報を収集することで、主に、メモリのアクセス負荷を収集することが可能となる。
【００７１】
上述の伝送遅延は、バスマスターからメモリまでの経路で行ってもよい。また、遅延時間の情報のみならず、振幅の値を収集してもよい。
【００７２】
以上、バスマスターからメモリへのデータ伝送時に、メモリの直前に接続された中継器の受信部２０１の受信状態に基づいて遅延時間の収集を行う方法を説明した。バスマスターからメモリへのデータ伝送要求により、メモリからバスマスターへのデータ伝送時に、メモリの直前に接続された中継器の受信部２０２の受信状態に基づいて遅延時間を収集する。これにより、バスマスターからメモリへの往路だけでなく、メモリからバスマスターへの復路についても、遅延時間を用いたメモリと伝送経路の選択が可能となる。具体的な選択方法については後述する。メモリからバスマスターへのデータ伝送時の往路の説明を中心とするが、メモリからバスマスターへの復路についても同じ方法が適用可能である。
【００７３】
なお、中継器で生じる伝送遅延も含めたメモリと伝送経路の選択方法の詳細は図１３を参照しながら後述する。
【００７４】
図１１（Ａ）および（Ｂ）は、低遅延伝送を実現するためのＮｏＣの構成を示す。
【００７５】
図１１（Ａ）の例は、メモリのアクセス負荷値が小さいメモリとそのメモリへ至る伝送経路とを選択してトラヒックを伝送する、経路選択の例である。図の例では、バスマスターに接続された中継器群“Ｘ”、および、メモリの直前に接続された中継器群“Ｙ"までの伝送遅延が計測される。そしてバスマスターに接続された中継器群Ｘ間で、各メモリまでの伝送遅延時間の情報が共有される。遅伝送遅延時間の情報は延時間処理部２０７によって保持される。そして、低遅延経路選択部２１０は、バスマスターからメモリへのアクセスが発生した時に、取得した伝送遅延時間に基づき、アクセス先のメモリと伝送経路とをそれぞれ決定する。これにより、主にメモリのアクセス負荷を反映させたメモリと伝送経路の決定が可能になる。
【００７６】
なお、中継器群“Ｘ”、中継器群”Ｙ“を、ＮｏＣ分野で一般的なＮＩＣ（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃｏｎｔｒｏｌｌｅｒ）またはＮＩ（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ）と呼ばれるバスマスターとＮｏＣとを接続するゲートウェイ、または、メモリとＮｏＣとを接続するゲートウェイで構成してもよい。また、アクセス負荷は、各バスマスターが各メモリに独立に収集してもよい。
【００７７】
図１１（Ｂ）の例では、メモリ毎に相対的なアクセス速度が設定されている場合に、低遅延要求レベルの高さやトラヒックの振幅などのトラヒック特性に応じてトラヒックを分類して伝送先の各メモリおよび伝送経路を選択してトラヒックを伝送する、経路選択の例である。例えば、相対的に高速な内部メモリ（例：キャッシュメモリ）と低速な外部メモリ（例：ＤＲＡＭ）のように、物理的にメモリへのアクセス速度が異なるメモリ構成を想定する。そして低遅延要求レベルの高いトラヒックでは高速メモリを、そうでないトラヒックでは低速メモリを使用させる。どのメモリで、どのような低遅延要求レベルのトラヒックを収容するかは、設計時に決定すればよい。低遅延要求レベルの高いトラヒックは高速メモリに収容する。高速メモリにアクセスすることで、高い応答性が期待できるためである。
【００７８】
一方、振幅の時間変化が激しいトラヒックは、低速メモリに収容しても良い。振幅の時間変化が激しいトラヒックを集約することで、トラヒックの統計多重効果が働き、伝送効率が改善し、低遅延化も図れると期待できるためである。これにより、トラヒック特性を加味したメモリと伝送経路の決定が可能となる。
【００７９】
以下で、メモリのアクセス負荷で生じる遅延、中継器で発生する遅延、トラヒック特性を、有機的に関連づけて、メモリと伝送経路を選択する方法を説明する。
【００８０】
図１２は、中継器の処理手順を示すフローチャートである。
【００８１】
中継器は、他の中継器又はバスマスターからフリットを受信し、以下の処理手順に従って、メモリ又は中継器へフリットを転送する。
【００８２】
ステップＳ８０１において、受信部２０１は、他の中継器又はバスマスターからフリット単位のデータを受信する。ステップＳ８０２では、パケット構造解析部２０３は、図８で示すような、受信したフリット単位のデータ列から、図９で定義されるような低遅延伝送の要求の強さに関する記述を読み出す。ステップＳ８０３において、低遅延経路選択部２１０は、低遅延要求レベルが高いか否かを判定する。低遅延要求レベルが高いと判断されると、処理はステップＳ８０４に進み、低遅延要求レベルが低いと判断されると、処理はステップＳ８０６に進む。
【００８３】
なお、低遅延要求レベルの高低は、低遅延要求レベルが２値で示される場合にはその値の大小によって判断される。また、２値以外で表される場合には、予め定められたレベル（遅延時間）を基準としてその基準以上か否かで判断すればよい。
【００８４】
ステップＳ８０４において、低遅延経路選択部２１０は、各経路の遅延時間（Ｄ）を収集する。なお、遅延時間の取得は、常時、上記処理と並行して実施してもよい。
【００８５】
バスマスターから一定の中継器までは、処理に応じてどの経路が利用されるかが設計上予め定められている。本実施形態では、複数のメモリを設けているため、上述の設計上定められたバスマスターから一定の中継器までの経路に加え、さらにその中継器から、各メモリに直接接続されている中継器までの各経路の遅延時間の情報が取得される。
【００８６】
なお、経路は設計時に定められるとして説明したが、これは一例である。他には、適応ルーティングに代表されるような方法で動的に経路情報を構築してもよい。適応ルーティングによるルーティング方法で実現した場合、設計時には想定していなかった負荷上昇などへの対応が容易になる。
【００８７】
ステップＳ８０５において、低遅延経路選択部２１０は、低遅延要求レベルの高い要求を収容するメモリ（たとえば高速メモリ）を選択し、そのメモリへの遅延時間が最も小さい経路を選択する。なお、経路の具体的な選択方法は図１３で説明する。
【００８８】
ステップＳ８０６では、低遅延経路選択部２１０は、バスマスターに接続された中継器から各メモリへの各経路（経路の詳細は図１５で後述）のトラヒックの振幅の情報を、メモリの直前に接続された中継器から取得する。なお、前述のトラヒックの振幅情報を取得する中継器は、経路上の特定の中継器でもよい。メモリの直前に接続された中継器（経路上の特定の中継器でもよい）は、受信したトラヒックの最低の受信レートと最高の受信レートを計測し、その差をトラヒックの振幅とする。この値を遅延時間とともに、メモリの直前に接続された中継器（経路上の特定の中継器でもよい）からバスマスターに接続された中継器へ送信する。この算出された振幅と、バスマスターに接続された中継器から送信するトラヒックの振幅（図８で示したフリットの振幅の情報として得られる）とを比較して、低遅延経路選択部２１０は、低遅延要求レベルの高くない要求を収容するメモリ（例えば、低速メモリ）を選択するとともに、トラヒックの振幅が近い経路を選択する。そしてステップＳ８０８において、送信部は、ステップＳ８０５またはＳ８０７のいずれかで選択された経路に基づき、データを送信する。
【００８９】
図１３は、図１２のステップＳ８０５の処理の詳細な手順を示すフローチャートである。
【００９０】
本実施形態では、伝送先のメモリと伝送経路を選択するために評価式を定義する。この評価式では、主にメモリのアクセス負荷を反映したパラメータである「低遅延を要求するトラヒックの遅延時間（Ｄ）」だけではなく、中継器での中継処理によって生じる遅延時間に影響する「対象とするメモリまでの中継段数（Ｈ）」や「伝送対象とするデータのデータ長（Ｌ）」を加味する。これにより、伝送先のメモリと伝送経路を選択する。
【００９１】
そこでステップＳ９０１において、まず、ある中継器から、低遅延を要求するトラヒックの遅延時間（Ｄ）、対象とするメモリまでの中継段数（Ｈ）、伝送対象とするデータのデータ長（Ｌ）の各情報が収集される。
【００９２】
主にメモリのアクセス負荷を反映したパラメータである、低遅延を要求するトラヒックの遅延時間（Ｄ）については、図５で示した遅延時間処理部２０７が収集する。バスマスターに接続された中継器の遅延時間処理部２０７は、図１１（Ａ）で示したように、遅延時間の情報をメモリに接続された中継器から収集する。メモリに接続された中継器では、たとえば、中継器の受信部２０１でのパケットの残留量、パケットの待ち時間、その中継器のその時点でのバッファ量などの情報が遅延時間（すなわちアクセス負荷）を示す値として収集される。また、スループット（一定時間内に処理できるデータ量や、伝送レート）やジッター（パケット到着間隔の揺らぎ）などの伝送効率や伝送品質を示す情報をメモリのアクセス負荷の値として用いてもよい。なお、バスマスターに接続された中継器の遅延時間処理部２０７は、メモリに接続された中継器のバッファ量、パケットの待ち時間、スループットおよびジッターの少なくとも一つを、当該メモリの負荷値として用いることができる。
【００９３】
「対象とするメモリまでの中継段数（Ｈ）」は、対象とするメモリまでに介在する中継器の数である。上述の通り、中継段数は、設計時にバスマスターやメモリの構成方法で一意に決定される。そのため、各メモリまでの中継段数の情報を各中継器に与えておけばよい。または、システム構成の変更の容易さを考慮して、システム上に１箇所に各中継器から各メモリまでの中継段数に関する情報を集めておき、それを読み出しても良い。
【００９４】
「伝送対象とするデータのデータ長（Ｌ）」は、設計時に決定されるデータである。中継器、バスマスター、メモリで処理を行う基本単位である、設計時に決定したデータ長でデータの処理が行われる。システム構成の変更の容易さを考慮して、システム上に１箇所に各中継器から各メモリまでの中継段数に関する情報を集めておき、それを読み出して、中継器、バスマスター、メモリの各部が動作してもよい。
【００９５】
「対象とするメモリまでの中継段数（Ｈ）」、「伝送対象とするデータのデータ長（Ｌ）」以外にも、対象とするメモリまでの伝送経路のバス幅（Ｗ）を用いてもよい。なお、対象とするメモリまでに複数種類のバス幅のバス（例えば、バス幅６４ビットのバスと、バス幅１２８ビットのバス）が混在する場合には、一例として、バス幅が最も狭いバスをバスの評価値として採用してもよい。これにより、より適切な経路選択を基準として採用することができる。
【００９６】
また、対象とするメモリまでの伝送経路のバス帯域（Ｂ）を用いてもよい。なお、対象とするメモリまでに複数種類のバス帯域のバスが混在する場合には、例えば、最もバス帯域の小さいバスをバスの評価値として採用することで、より適切な経路選択の基準とすることができる。なお、バス帯域はたとえば、バスの動作周波数、伝送対象とするトラヒックに割当可能なバスの伝送帯域のいずれかで表現することができる。
【００９７】
前述の処理と同様に、システム構成の変更の容易さを考慮して、システム上に１箇所に各中継器から各メモリまでの中継段数に関する情報を集めておき、それを読み出して、中継器、バスマスター、メモリの各部が動作してもよい。
【００９８】
ステップＳ９０２では、低遅延経路選択部２０３は、これらの情報に基づいて、経路選択の計算（評価式＝Ｈ×Ｌ×Ｄ）および評価式によって計算された評価値を計算する。そしてその評価値に基づき、転送先を決定する。
【００９９】
また、対象とするメモリまでの伝送経路のバス幅（Ｗ）、対象とするメモリまでの伝送経路のバス帯域（Ｂ）も評価項目として評価式に加えて、同様に評価を行ってもよい。
【０１００】
なお、評価式は、Ｈ、Ｌ、Ｄ、Ｗ、Ｂの各項に重み付けして、重視すべき項目を明確化できる評価式で評価してもよい。また、乗算だけではなく、加算で式を構築することで演算量の少ない評価式で評価機能を構築することが可能となる。
【０１０１】
図１３の方法により、メモリのアクセス負荷だけではなく、中継器により生じる伝送遅延も含めたメモリと伝送経路の選択が可能となる。
【０１０２】
図１４は、メモリと経路の選択基準となる評価値の具体例を示す。
【０１０３】
評価値を算出するパラメータとして、バスマスターからメモリまでの中継段数（Ｈ）、パケットの長さ（Ｌ）、バスマスターからメモリまでの伝送遅延時間（Ｄ）を用いる。評価値の算出方法の具体例として、各パラメータ数値の掛け算が考えられる。
【０１０４】
図の例から理解されるように、中継段数が増加するほど、評価値は高くなる（図１４の（１））。また、データ長も長くなるほど評価値は高くなる（図１４の（２））。さらに、遅延時間も長くなるほど評価値は高くなる（図１４の（３））。図の例では評価値が高いほど、低遅延伝送には向かない経路であることがわかる。前述のフローの特性の低遅延要求レベルを示す数値に基づき、得られた評価値に合致した伝送経路とメモリを選択する。なお、低遅延要求レベルを示す数値と評価値の関係を事前に設計時に決めておき、動作時には、その関係から伝送経路とメモリを選択する。
【０１０５】
なお、本実施形態発明では、掛け算で評価式を構築したが、評価式は加減算や乗算であっても良い。バスマスターからメモリまでの中継段数（Ｈ）、パケットの長さ（Ｌ）、バスマスターからメモリまでの伝送遅延時間（Ｄ）に応じた評価結果を算出できる評価式であればよい。また、全ての中継段数（Ｈ）、パケットの長さ（Ｌ）、伝送遅延時間（Ｄ）の全ての指標を用いる必要はなく、１つ以上の指標を用いてメモリおよび伝送経路を選択できればよい。
【０１０６】
図１５は、メモリと経路の選択基準となる評価値に基づいてメモリと経路を選択する具体例を示す。
【０１０７】
バスマスターからメモリまでの経路を各中継器で管理する例である。図の例では、中継器（５）の経路情報（マスタ２から、各メモリへ伝送するための伝送経路）を示している。図の例（マスタ２  ⇒  中継器（３）  ⇒  メモリ１）ではマスタ２から中継器（１）を経てメモリ１に経路が設定されている。中継器（５）において、設定された各経路に対して評価値が算出されており、低遅延伝送が必要な場合、評価値の低い、「マスタ２  ⇒  中継器（３）  ⇒  メモリ１」の経路が選択される。
【０１０８】
一方、図の例のように、設計時にバスマスターからメモリへルーティングを固定的に決めておいた場合、ルーティングの実装やチップの消費電力を抑えることができる。この評価値を用いた方法を実現することで、メモリアクセスの負荷と中継器で発生する遅延の両方を加味したメモリと経路の選択が可能となる。
【０１０９】
図１６（Ａ）および（Ｂ）は、往路と復路の評価値を総合してメモリと経路を決定する処理の例を示す。
【０１１０】
図の例では、評価式として、中継段数と伝送遅延時間の積を用いて、評価値を算出している。図１６ではパケット長に関する情報の記載は省略している。
【０１１１】
図１６（Ａ）の例では、往路で評価値が小さくなる経路とメモリを選択して、復路の評価値を求めてメモリと経路を選択している。バスマスター１からメモリ１までの経路（中継段数  ４段、伝送遅延時間４０、評価値１６０）と、メモリ１からバスマスター４までの経路（中継段数  ７段、伝送遅延時間８０、評価値５６０）とが選択されている。
【０１１２】
図１６（Ｂ）の例では、往路と復路の評価値の和が最小になるように、メモリと経路とが選択されている。往路だけで考えた場合、メモリ１へのアクセスが最短になる（評価値１６０）。しかしながら、復路をも考慮し、往路と復路の評価値の和が小さくなるようにすると、メモリ１ではなくメモリ２が選択される。すなわち、バスマスター１からメモリ２までの経路（中継段数  ５段、伝送遅延時間５０、評価値２５０）と、メモリ２からバスマスター４までの経路（中継段数  ６段、伝送遅延時間５０、評価値３００）が選択される。
【０１１３】
往路と復路では、一般に伝送されるトラヒックの傾向が異なる。たとえばマスタからメモリへデータ転送要求（制御データ）は低遅延要求レベルが高く、それに対応するメモリからバスマスターへのデータの転送は低遅延要求レベルが低いことが多い。そのため、両方の評価値を考慮した方が、低遅延伝送を行いやすいと考えられる。
【０１１４】
図１７（Ａ）は、アプリケーションが要求する伝送遅延を区別する処理タイプを示す。
【０１１５】
図１７（Ａ）に関連して、アプリケーションが要求する伝送遅延の特性の違いにより、往路と経路を決定する方法を説明する。
【０１１６】
まず、アプリケーションが要求する伝送遅延の特性の違いを区別するために、処理タイプを定義する。ここで示す例では、２種類の処理タイプがある。アプリケーションとしては、１つは、例えば、背景画像の画像処理などリアルタイム性が低い処理（バッチ型処理）と、もう１つは、例えば、映像ストリーミングのように低遅延要求レベルが高い画像処理（リアルタイム型処理）が対応する。
【０１１７】
図１７（Ａ）に示したように、２種類の処理タイプ（バッチ型およびリアルタイム型）を想定する。
【０１１８】
バッチ型処理の場合、処理要求元であるバスマスターから処理先であるメモリへ要求がリアルタイムに伝えられる。一方、処理結果はリアルタイム性を保証しない（必要としない）。
【０１１９】
また、リアルタイム型処理の場合、処理要求元であるバスマスターと処理先であるメモリとの間の通信は、双方向でリアルタイムに通信される。図１７（Ｂ）は、図９で説明したフローの管理表に、上記の処理タイプを追加した例を示す。処理タイプを区別することで、往路と復路の評価値の違いを加味した柔軟な経路とメモリの選択が可能となる。リアルタイム型処理の場合、図１７（Ｂ）の例で示したように、往路と復路を区別して評価値を計算する必要があるが、バッチ型処理の場合、復路の応答性は高い必要はなく、経路を自由に設定することが可能となる。処理タイプの識別子を図８で前述したパケットのヘッダフィールド６１に記述できるように、記述してもよいし、低遅延要求レベルを示す項目に併せて記述してもよい。これにより、パケットの記述情報から、アプリケーションが要求する伝送遅延の特性の違いにより、往路と経路を決定することが可能となる。なお、ＮｏＣを利用してアプリケーションソフトウェアが複数実行される場合には、当該アプリケーションごとに、メモリおよび伝送経路を決定してもよい。そして、各アプリケーションの往路と経路に対して、それぞれ異なる伝送経路を設定してもよい。
【０１２０】
図１８は、往路を加味した経路およびメモリの選択方法の処理手順を示すフローチャートである。
【０１２１】
図１６（Ａ）の利用例に基づいて、処理タイプの違いを加味した往路と経路の決定方法を説明する。
【０１２２】
ステップＳ１００１において、低遅延経路選択部２１０は、送信元のマスタＳ（図１６の例ではマスタ１）の遅延時間処理部２０７から、メモリ１〜メモリＮを収容している各中継器の受信部２０１で生じている遅延時間の情報を収集する。これは、メモリ１〜メモリＮ（図１６の例ではメモリ１〜メモリ４）へデータ伝送を行う際の処理負荷を見積もるためである。マスタＳの低遅延経路選択部２１０は、収集された遅延時間に基づいて図１３で示した手順で行きの評価値を計算する（ステップＳ１００１）。
【０１２３】
ステップＳ１００２において、低遅延経路選択部２１０は、マスタＳのパケット構造解析部２０３でのパケットの解析結果から、処理タイプが「リアルタイム型」であるか否かを判定する。処理タイプがリアルタイム型である場合には、処理はステップＳ１００３に進み、処理がバッチ型である場合には、処理はステップＳ１００５に進む。
【０１２４】
ステップＳ１００５において、低遅延経路選択部２１０は、行きの評価値が最も小さいメモリへの経路を選択する。
【０１２５】
一方、ステップＳ１００３では、送信元のマスタＳの遅延時間処理部２０７は、メモリ１〜メモリＮを収容している各中継器の受信部２０２で生じている遅延時間の情報を収集する。マスタＳの低遅延経路選択部２１０は、収集された遅延時間に基づいて、図１３で示した手順で帰りの評価値を算出する（ステップＳ１００３）。ステップＳ１００４において、低遅延経路選択部２１０は、行きと帰りの評価値の和が最も小さい経路とメモリの組合せを選択する。
【０１２６】
図１９（Ａ）および（Ｂ）は、往路と復路の違いを加味した評価値の具体例を示す。図１６（Ａ）の利用例と、図５の中継器の構成に基づいて説明する。
【０１２７】
図の評価値の算出で用いられている評価式は、中継段数、データ長、遅延時間に基づいて図１３で示した手順で評価値を計算する。
【０１２８】
以下、各パラメータの取得、設定方法を説明する。中継段数は設計時にネットワーク構造（中継器、バスマスター、メモリの個数や配置）を決定することで一意に決まる。データ長は、設計時にアプリケーションや、メディアの種別（例えば、映像や音声など）で決定してよい。遅延時間は、図１８で示した手順で、中継器の遅延時間処理部２０７で収集する。得られたパラメータを用いて、図１３で説明した方法で評価値を低遅延経路選択部２１０にて計算する。図１９（Ａ）に往路、図１９（Ｂ）に復路の各パラメータと評価値を示す。アプリケーションで要求される伝送品質に応じて、これらの表を用いて、メモリと伝送経路を選択する。
【０１２９】
図１９（Ａ）は、マスタ１から各メモリへパケットを伝送する際に関係するパラメータ（中継段数、データ長、遅延時間）と評価値を示している。
【０１３０】
図１９（Ｂ）は、各メモリからマスタ４へパケットを伝送する際に関係するパラメータ（中継段数、データ長、遅延時間）と評価値を示している。図の例では、行きと帰りの評価値の和が最も小さい経路とメモリの組合せであるメモリ２が選択されている。
【０１３１】
図２０は、トラヒック特性による経路の集約方法の処理手順を示すフローチャートである。
【０１３２】
メモリと伝送経路の選択方法として、トラヒック特性を用いた経路の集約による選択方法を説明する。
【０１３３】
いま、同一のアプリケーションが異なるプロセッサに分割、並行処理されプロセッサ（バスマスター）間でメモリを介してデータの交換を行う例を想定する。プロセッサ間で同時に、複数のトラヒックが発生する場合、すべてのトラヒックが同一のメモリを用いるようにトラヒックを集約した方が管理の手間の削減や、性能保証の面で効果が期待できる。
【０１３４】
また、トラヒックの特性として、ピーク変動の激しいトラヒックや、単発的に発生するトラヒックを想定する。これらのトラヒックと、固定レートのトラヒックとを同一の経路上で伝送するよりも、ピーク変動の激しいトラヒックや、単発的に発生するトラヒックだけを区別して、同種のトラヒックを集約して同一の経路上で伝送する方が統計多重効果は働きやすくなる。よって、伝送効率は高めやすくなる。
【０１３５】
トラヒック特性については、設計時に、図９に示したようにトラヒックフロー毎に、フローＩＤを付与して、データ種別、低遅延伝送要求の強さ、トラヒックの振幅の大きさを定義しておく。なお、トラヒックの特性は、トラヒックの振幅だけに限られないたとえば、トラヒックの振幅に代えて、または、トラヒックの振幅とともに、パケットサイズやデータサイズ、トラヒックデータの到着間隔、トラヒックデータの送信間隔を用いて定義してもよい。これらの情報を用いることでトラヒックの類似性が明らかになる。
【０１３６】
パケットにこれら情報を記述して、バスマスターからデータ伝送を行う。これらの情報は、バスマスターに接続された中継器（例えば、図１１の“Ｘ”）のパケット構造解析部２０３で解釈し、低遅延経路選択部２１０で、これらの情報に基づいてメモリと伝送経路を選択する。
【０１３７】
図２０を参照しながら低遅延経路選択部２１０の詳細な動作を記す。
【０１３８】
まずステップＳ１２０１において、低遅延経路選択部２１０は、集約対象のトラヒックが同一の対となるバスマスター間の通信であるか否かを判定する。「同一の対となるバスマスター間の通信」とは、同一バスマスターで動作するアプリケーションで、送信先のバスマスターが同じになる通信をいう。同一の対となるバスマスター間の通信であれば、処理はステップＳ１２０３に進み、そうでない場合には処理はステップＳ１２０２に進む。
【０１３９】
ステップＳ１２０２では、ピーク変動の激しいトラヒックまたは単発的なトラヒックか否かが判断される。そのようなトラヒックであれば処理はステップＳ１２０３に進み、そうでない場合には処理はステップＳ１２０４に進む。
【０１４０】
ステップＳ１２０３では、低遅延経路選択部２１０は、集約先の候補となる経路やメモリを探索する。そして、ピーク変動の激しいトラヒックや、単発的に発生するトラヒックの通信が存在するか否かを探索する。集約先の候補となる経路やメモリがない場合は、評価値で集約先の経路やメモリを決定する。
【０１４１】
候補がある場合は、ステップＳ１２０４において低遅延経路選択部２１０は、集約先の候補の評価値を求めて集約先として適切か否かを判定し、転送先を決定する。
【０１４２】
上記の実現方法は、半導体でリアルタイムに実行する方法も考えるが、事前にトラヒックを模擬してシミュレーションした結果を半導体上に実装してもよい。例えば、どのアプリケーションのトラヒックを集約対象とするか、また、どの程度の振幅のトラヒック同士を集約させるか等を判断して、集約先を決定した結果を半導体上に実装してもよい。
【０１４３】
本願発明は、チップ（ＮｏＣ）上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施される。そのようなシミュレーションプログラムは、コンピュータによって実行される。本実施形態においては、図４に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、上述した実施形態の各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
【０１４４】
バスマスターとして実装されたクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、中継器のクラスにパケットを仮想的に送信するタイミング等の条件を決定する。そして、各経路での送信状態および本実施形態による処理をシミュレーションし、メモリおよび送信経路を決定する動作を行う。
【０１４５】
バスマスターとして実装されたクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行い、動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジーや性能の評価を行い、設計及び検証を行う。
【０１４６】
例えばシミュレーションシナリオの各行には、送信元バスマスターのＩＤ、宛先バスマスターまたはメモリのＩＤ、送信するパケットまたはフリットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジーやノード数、プロセッサやＤＳＰ、メモリ、周辺ＩＯの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適した網構成を特定することもできる。本実施形態による構成は、本態様の設計及び検証ツールとしても適用可能である。本願発明は、設計及び検証ツールとして実施される際にも適用可能である。
【０１４７】
なお、上述した「ノード」とは、プロセッサやＤＳＰなどのバスマスターおよびメモリを含む概念である。一般には中継器（ルータ）はノードの一部として分類される。しかしながら本願明細書では、中継器はノードには含めなくてもよい。本発明による中継器は、バスマスターおよびメモリなどの複数のノード間でデータを伝送する半導体システムにおいて利用することが可能である。
【０１４８】
その結果、より一般化すると以下のとおりである。本発明の実施形態においては、ある第１ノードと、第１ノードに接続された中継器と、複数の第２ノードとがネットワーク化された通信バスを介して接続されている半導体システムが構築されている。中継器の低遅延経路選択部は、複数の第２ノードの各々および複数の伝送経路の各々の組み合わせの中から、各第２ノードの負荷値の情報および各伝送経路の負荷値の情報に基づいて１組の第２ノードと伝送経路を選択する。その結果、中継器は、選択した伝送経路を利用して選択された第２ノードに向けてデータを中継することが可能になる。
【０１４９】
なお、中継器をノードとして取り扱うことが好ましい場合も存在する。たとえば、一般的には、システムＬＳＩが大規模化した場合、システムＬＳＩが複数のネットワークに分割されることが多い。そのような複数のネットワークを相互に接続するために、「ゲートウェイ」とも呼ばれる中継器が用いられる。当該中継器と直接接続されているネットワークに着目すると、当該中継器は、そのネットワークへデータを送信し、そのネットワークからデータを受信する機能を有する。これは、上述したバスマスターやメモリと同等の機能である。したがって、上述の例のような場合には、当該中継器を「ノード」として扱ってもよい。
【産業上の利用可能性】
【０１５０】
本発明にかかる低遅延伝送装置は、システムＬＳＩ上のデータ伝送に利用できる。より具体的には、本発明の代表的な用途として、プロセッサ、Ｉ/ＯなどのバスマスターからメモリへアクセスするシステムＬＳＩを想定する。但し、本発明は、プロセッサからメモリへのアクセスの用途に制約されるわけではない。メモリに代えて、マルチコアやグラフィックス・プロセッサとして、複数のプロセッサやＤＳＰ間で利用されてもよい。また、シミュレーションプログラムとしても利用可能である。
【符号の説明】
【０１５１】
２０１、２０２  受信部
２０３  パケット構造解析部
２０４  パケット構造解析部
２０５、２０６  送信部
２０７  遅延時間処理部
２０８  接続関係データベース
２０９  経路情報部
２１０  低遅延経路選択部
２００１  バスマスター
２００２  中継器
２００３  メモリ
【図１】
2011089899.tif 000003
【図２】
2011089899.tif 000004
【図３】
2011089899.tif 000005
【図４】
2011089899.tif 000006
【図５】
2011089899.tif 000007
【図６】
2011089899.tif 000008
【図７】
2011089899.tif 000009
【図８】
2011089899.tif 000010
【図９】
2011089899.tif 000011
【図１０】
2011089899.tif 000012
【図１１】
2011089899.tif 000013
【図１２】
2011089899.tif 000014
【図１３】
2011089899.tif 000015
【図１４】
2011089899.tif 000016
【図１５】
2011089899.tif 000017
【図１６】
2011089899.tif 000018
【図１７】
2011089899.tif 000019
【図１８】
2011089899.tif 000020
【図１９】
2011089899.tif 000021
【図２０】
2011089899.tif 000022
【国際調査報告】
2011089899.tif 000023
2011089899.tif 000024
2011089899.tif 000025
2011089899.tif 000026