(57)【要約】 ＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）の通信バスにおいて低いバス動作周波数で広帯域な通信を実現する。 バス制御装置は、ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する半導体回路のバス制御システムの、当該第１ノードに直接接続される。バス制御装置は、第１ノードから第２ノードに向かう往路群、および第２ノードから第１ノードに向かう復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、当該経路群の経路負荷が均一化されるように、経路群の中から候補となる経路を抽出する経路候補抽出部と、抽出結果、および予め定められた選択規則に基づいて、データの伝送経路を決定する経路決定部と、当該経路を示す経路情報を格納したヘッダ情報を利用して、第１ノードと第２ノードとの間でデータを伝送するデータ送受信部とを備えている。
2013168427.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記第１ノードに直接接続されるバス制御装置であって、
前記第１ノードから前記第２ノードに向かう２以上の経路を往路群とし、前記第２ノードから前記第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、
前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、
予め定められた選択規則を記憶した選択規則記憶部と、
前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、
決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、
前記ヘッダ情報に基づいて特定される前記経路を利用して、前記第１ノードと前記第２ノードとの間でデータを伝送するデータ送受信部と
を備えた、バス制御装置。
【請求項２】
前記経路負荷検出部は、前記往路群および前記復路群の少なくとも一方の経路群に割り当てられているバスの利用帯域を、前記経路負荷として検出する、請求項１に記載のバス制御装置。
【請求項３】
前記少なくとも一方の経路群は前記往路群であり、
前記経路候補抽出部は前記往路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項４】
前記少なくとも一方の経路群は前記復路群であり、
前記経路候補抽出部は前記復路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項５】
前記選択規則記憶部は、経路に関する制限が無い選択規則、特定の経路を利用する選択規則、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則、およびレート非保証型のフローであることを示す選択規則の少なくとも１つを記憶する、請求項１に記載のバス制御装置。
【請求項６】
前記選択規則記憶部は、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則を記憶しており、
新たなフローとの間で順序性を有する他のフローの経路が既に決定されており、かつ、フローの順序性を示す前記選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、前記他のフローの経路と同一の経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項７】
前記選択規則記憶部は、レート非保証型のフローであることを示す選択規則を記憶しており、
レート非保証型のフローの経路が既に決定されており、かつ、レート非保証型のフローであることを示す前記選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項８】
前記選択規則記憶部が、特定の経路を利用する選択規則を記憶しており、かつ、前記特定の経路を利用する選択規則が新たなフローに適用される場合において、
前記経路決定部は、前記経路候補抽出部の抽出結果に拘わらず、前記選択規則によって特定される経路を、前記データを伝送する経路として決定する、請求項５に記載のバス制御装置。
【請求項９】
レート非保証型のフローの経路が既に決定されており、
前記選択規則記憶部がレート非保証型のフローであることを示す選択規則を記憶しており、かつ、前記レート非保証型のフローであることを示す選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項５に記載のバス制御装置。
【請求項１０】
前記選択規則記憶部は、さらに前記第１ノードのフローの優先度を示す優先度情報を保持しており、
前記経路候補抽出部は、前記優先度情報に基づいて、優先度がより低いフローが割り当てられた経路を、前記候補となる経路として抽出する、請求項５に記載のバス制御装置。
【請求項１１】
前記データ送受信部は、パケット方式で前記データを送受信し、
前記ヘッダ構築部は、パケットのヘッダに前記ヘッダ情報を格納する、請求項１に記載のバス制御装置。
【請求項１２】
少なくとも１つの第１ノードと、
少なくとも１つの第２ノ―ドと、
前記少なくとも１つの第１ノードに直接接続された、請求項１から１１のいずれかに記載のバス制御装置と、
前記バス制御装置および前記少なくとも１つの第２ノ―ドとの間に複数の経路を形成するネットワーク化されたバスと、
を備え、前記バスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する、バス制御システム。
【請求項１３】
複数のメモリの各々に割り当てられたデータのフローを交換するマイグレータをさらに備え、
前記複数のメモリは、前記少なくとも１つの第２ノードであり、
前記少なくとも１つの第１ノードから前記複数のメモリとの間には複数の経路が設けられており、
前記マイグレータは、前記複数の経路に割り当てられているバスの利用帯域と、各メモリ上で利用される容量とに基づいて、複数のメモリの各々に割り当てられたデータのフローを交換する、請求項１２に記載のバス制御システム。
【請求項１４】
前記複数の経路は空間的に分離された複数のバスとして構成される、請求項１２に記載のバス制御システム。
【請求項１５】
前記複数の経路はバス上の単一の信号線によって構成される、請求項１２に記載のバス制御システム。
【請求項１６】
前記複数の経路はバス上の単一の信号線を時分割多重することによって構成される、請求項１５に記載のバス制御システム。
【請求項１７】
ネットワーク化された前記バスは、前記複数の経路が設けられたローカルバスと、システムバスとを備えており、
前記ローカルバスと前記システムバスとを接続するバスブリッジをさらに備えた、請求項１２に記載のバス制御システム。
【請求項１８】
請求項１２から１７のいずれかに記載のバス制御システムにおいて用いられるネットワークインタフェースであって、
前記ネットワークインタフェースは、
帯域情報を管理する帯域情報管理部であって、前記帯域情報は、対応する経路に現在割り当てられている、データ伝送単位であるフローの帯域に関する情報である、帯域情報管理部と、
前記第１ノードから前記第２ノードへのデータ、および前記第２ノードから前記第１ノードへのデータを送受信するデータ送受信部と
を備えている、ネットワークインタフェース。
【請求項１９】
前記帯域情報管理部は、前記バス制御システムに包含される前記バス制御装置の経路負荷検出部からの要求に応答して、前記データ送受信部を介して前記帯域情報を出力する、請求項１８に記載のネットワークインタフェース。
【請求項２０】
前記ヘッダ情報に格納された前記復路を示す経路情報に基づいて、前記復路を特定する情報を生成し、宛先を特定する情報とともにパケットのヘッダに格納する復路ヘッダ構築部をさらに備えた、請求項１８に記載のネットワークインタフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ネットワーク化された通信バスを備える半導体チップにおいて、通信バスの制御を行うための技術に関する。
【背景技術】
【０００２】
ＮｏＣ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ）は、ネットワーク化された通信バスであり、ＮｏＣ上で効率的に転送データを分散させる従来の方法として、特許文献１に記載の方法がある。図１は、特許文献１のバスの構成を示す。図１において、送信機能モジュールＡの各々は、受信側機能モジュールＢにデータを転送するためのＲ１からＲ４の４つの経路のうちのいずれかを選択できる。送信機能モジュールＡの各々は、受信側機能モジュールＢへのデータの転送に先立ち、受信側機能モジュールＢから経路Ｒ１からＲ４の４つの経路それぞれの流量を取得し、経路Ｒ１からＲ４の流量が出来るだけ均一になるように自らのデータ転送経路を選択する。送信機能モジュールＡの各々が独立にこのような動作を行うことにより、４つの経路Ｒ１からＲ４の間の流量の偏りが最小化され、バスを低い動作周波数で動作させながら広帯域なデータ転送を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４７９６６６８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図２は、一般的なＳｏＣシステムの構成を示す。図２に示すように、一般的なＳｏＣでは、プロセッサとしてのＣＰＵ、メディア処理用ＤＳＰとしてのエンコードエンジンＥＮＣ、デコードエンジンＤＥＣ、外部とのデータ入出力用ＡＳＩＣであるＩＯ、グラフィック処理用ＡＳＩＣ（図示せず）など多数のイニシエータが往路バス（ライトバス）、復路バス（リードバス）を介して共有メモリと接続される。イニシエータから往路バスを用いてメモリに転送されるデータへの経路の割当は、設計時に決定されたイニシエータ間の優先度関係を反映させた形で行われる必要がある。リアルタイム系の信号処理を行うＥＮＣ、ＤＥＣ、ＩＯなどは、レート保証型のイニシエータであり、設計帯域以上のメモリへのデータ転送は行わない。しかしながら、レート非保証のイニシエータであるＣＰＵなどは、例えばユーザの機器操作に基づく多数のタスクの起動や、内部キャッシュのミスヒットなどにより、メモリに対して瞬間的に大量のデータ転送を要求することがある。【０００５】
レート非保証のイニシエータが存在する場合には、最大要求帯域を事前に定義することはできない。したがって、上述した特許文献１の技術を利用したとしても、より効率的なデータ転送が依然として求められる。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記第１ノードに直接接続されるバス制御装置であって、前記バス制御装置は、前記第１ノードから前記第２ノードに向かう２以上の経路を往路群とし、前記第２ノードから前記第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、予め定められた選択規則を記憶した選択規則記憶部と、前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、前記ヘッダ情報に基づいて特定される前記経路を利用して、前記第１ノードと前記第２ノードとの間でデータを伝送するデータ送受信部とを備えたバス制御装置を含む。【０００７】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【０００８】
本発明のある実施形態にかかるバス制御装置によれば、より効率的なデータ転送が実現される。
【図面の簡単な説明】
【０００９】
【図１】従来のバス構成図である。
【図２】一般的なＳｏＣシステムの構成を示す図である。
【図３】本発明の一実施形態にかかるＳｏＣシステム４００を示す図である。
【図４】イニシエータ４０１から４０４の要求帯域を示す図である。
【図５】フロー割当状況の時間変化を示す図である。
【図６】パケットヘッダの構築例を示す図である。
【図７】応答パケットのパケットヘッダの構成の例を示す図である。
【図８】主としてイニシエータ側のネットワークインタフェース（ＮＩ）１１０の構成の例を示す図である。
【図９】ＮＩ４１３のローカルバスの経路選択規則の例を示す図である。
【図１０】経路Ａ、経路Ｂの各帯域情報管理部から取得された情報の例を示す図である。
【図１１】フロー間での到着順序が崩れる経路割当の例を示す図である。
【図１２】往路、復路の経路割当結果の格納例を示す図である。
【図１３】フロー関連情報の通知パケットの構成例を示す図である。
【図１４】本発明の一例である第１の実施形態にかかる、イニシエータ側のＮＩにおける処理フローを示す図である。
【図１５】本発明の一例である第２の実施形態にかかるＳｏＣシステムを示す図である。
【図１６】ＮＩ２０１１、ＮＩ２０１２、ＮＩ２０１３が参照する経路選択規則の例を示す図である。
【図１７】イニシエータ２００１によるフロー２００１０１の割当要求時に、経路Ａ、経路Ｃの帯域情報管理部から取得された情報の例を示す図である。
【図１８】イニシエータ２００２によるフロー２００２０１の割当要求時に、経路Ａ、経路Ｃの帯域情報管理部から取得された情報の例を示す図である。
【図１９】フロー関連情報の通知パケットの構成例を示す図である。
【図２０】本発明の一例である第３の実施形態にかかるＳｏＣシステムの構成例を示す図である。
【図２１】各イニシエータが生成するフローの特性を示す図である。
【図２２】フローの割当状態の例を示す図である。
【図２３】本発明の一例である第４の実施形態にかかるネットワークの構成例を示す図である。
【図２４】経路分離の方法例を示す図である。
【発明を実施するための形態】
【００１０】
近年、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）が利用される組込機器分野や汎用プロセッサ分野において、半導体チップの高機能化への要求が高まっている。半導体チップの高機能化に伴い、チップ上の通信バスを介して転送されるデータの要求帯域が増加し、通信バスの広帯域化が必要となってきている。通信バスの広帯域化のためには、バスの動作周波数を上げることで、単位時間あたりのデータ転送量を増やすことが考えられる。しかしながら、動作周波数の増加により消費電力の増加、実装面積の増加、レイアウト実装の複雑化の課題が生じる。動作周波数を上げずに通信バスの広帯域化を行う為には、低速な通信経路を並列的に用いて、転送データ負荷を並列バス上で効率的に分散することが有効である。
【００１１】
リアルタイム系のレート保証型のイニシエータに対する経路選択は、要求帯域が経路間で均一となるように行うのが望ましい。一方、レート非保証型のイニシエータに対する経路選択は、要求帯域の均一性を重視せず異なる経路に割り当てることが望ましい。その理由は、レート保証系とレート非保証系の干渉及びレート非保証系の相互干渉を排除するためである。このように往路でのバスの経路を割り当てる場合には、イニシエータ毎の転送データの特性も加味した上で行う必要がある。
【００１２】
一方、復路を用いてメモリコントローラから各イニシエータに返信されるデータは、往路でイニシエータ間の優先度に応じた調停が既に行われ、調停順序に基づいてメモリから読み出されたものである。よって、単純に経路間の返信の帯域が均一となるように復路の経路を割り当てれば良い。また各イニシエータの要求帯域の設計が往路での要求帯域（ライトの帯域）と復路での要求帯域（リードの帯域）に分離して設計される場合もあり、往路と復路それぞれの要求帯域に基づいて、経路選択を行うことでバス帯域を充分に利用可能となる。
【００１３】
ここでさらに留意すべき事項が２つある。
【００１４】
第１の留意事項は、システムの大規模化に対するスケーラビリティである。図２において、ＥＮＣ１がバスイニシエータとして動作し、メモリＥへのデータの書き込みと読み出しを行う場合、ＥＮＣ１はメモリＥへのデータの転送に先立ち、経路Ｒ１からＲ４の往路での流量を取得し、最適な経路を選択した上で、メモリＥに対してデータの転送を行う。選択された経路はＥＮＣ１側に記憶され、以降のメモリＥへのデータ転送は該経路が用いられる。ＥＮＣ１から転送データを受理したメモリコントローラＣは、メモリＥへのアクセス処理を行い、結果のデータをＥＮＣ１に返信する。メモリコントローラＣは、データ返信に先立ち、経路Ｒ１からＲ４の復路での流量を取得し、最適な経路を選択した上で、ＥＮＣ１に対してデータの転送を行う。選択された経路はメモリコントローラＣに記憶され、以降のＥＮＣ１へのデータ転送は該経路が用いられる。
【００１５】
一般的なＳｏＣの構成では、多数のイニシエータがメモリを共用する構成であるため、メモリコントローラＣが管理すべき復路の情報は、イニシエータの増加に従い増大し、メモリコントローラのリソースの増加と処理負荷の増加をもたらす。また更に復路の経路選択には、各復路の流量を取得するための制御情報交換の遅延が生じるため、メモリＥへのアクセスレイテンシの増加や、その間メモリＥから読み出されたデータを一時的に蓄積するためのバッファも必要となり、メモリコントローラのリソースの増加と処理遅延の増加をもたらす。よって、イニシエータの増加に対し、共用メモリ側のメモリコントローラのスケーラビリティを確保できるような構成が必要とされている。
【００１６】
第２の留意事項は、ＳｏＣの品種展開時などにイニシエータの個数などの変更があった場合、イニシエータへの復路の情報を管理するメモリコントローラへも設計変更が波及し、設計工数と検証工数を増大させることである。そのような設計工数および検証工数の増大の抑制もまた必要とされている。
【００１７】
本願発明者らは、スケーラビリティおよび設計変更の容易さを向上させつつ、往路と復路、レート保証系とレート非保証系などの転送データの特性を考慮した経路割当を行う技術を開発した。
【００１８】
たとえば本願発明のある実施形態によるバス制御装置は、ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、第１ノードに直接接続される。バス制御装置は、第１ノードから第２ノードに向かう２以上の経路を往路群とし、第２ノードから第１ノードに向かう２以上の経路を復路群としたときにおいて、往路群および復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、少なくとも一方の経路群の経路負荷が均一化されるように、経路群の中から候補となる経路を抽出する経路候補抽出部と、予め定められた選択規則を記憶した選択規則記憶部と、経路候補抽出部の抽出結果、および選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、決定された経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、ヘッダ情報に基づいて特定される経路を利用して、第１ノードと第２ノードとの間でデータを伝送するデータ送受信部とを備えている。
【００１９】
上述のバス制御装置を用いたバス制御システムでは、往路または復路の少なくとも一方の経路においてバス動作周波数の低減が可能になり、消費電力削減、実装面積削減、レイアウトが容易となる。また往路、復路のデータ転送経路を第１ノード（イニシエータ）側で管理できるため、システムの大規模化と品種展開時の設計、検証工数の削減に対応可能となる。また複数のメモリを有するシステムにおいて、メモリの使用率も向上させることができる。
【００２０】
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記第１ノードに直接接続されるバス制御装置であって、前記バス制御装置は、前記第１ノードから前記第２ノードに向かう２以上の経路を往路群とし、前記第２ノードから前記第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、予め定められた選択規則を記憶した選択規則記憶部と、前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、前記ヘッダ情報に基づいて特定される前記経路を利用して、前記第１ノードと前記第２ノードとの間でデータを伝送するデータ送受信部とを備えたバス制御装置を含む。
【００２１】
例示的なある実施形態において、前記経路負荷検出部は、前記往路群および前記復路群の少なくとも一方の経路群に割り当てられているバスの利用帯域を、前記経路負荷として検出する。
【００２２】
例示的なある実施形態において、前記少なくとも一方の経路群は前記往路群であり、前記経路候補抽出部は前記往路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する。
【００２３】
例示的なある実施形態において、前記少なくとも一方の経路群は前記復路群であり、前記経路候補抽出部は前記復路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する。
【００２４】
例示的なある実施形態において、前記選択規則記憶部は、経路に関する制限が無い選択規則、特定の経路を利用する選択規則、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則、およびレート非保証型のフローであることを示す選択規則の少なくとも１つを記憶する。
【００２５】
例示的なある実施形態において、前記選択規則記憶部は、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則を記憶しており、新たなフローとの間で順序性を有する他のフローの経路が既に決定されており、かつ、フローの順序性を示す前記選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、前記他のフローの経路と同一の経路を、前記候補となる経路として抽出する。
【００２６】
例示的なある実施形態において、前記選択規則記憶部は、レート非保証型のフローであることを示す選択規則を記憶しており、レート非保証型のフローの経路が既に決定されており、かつ、レート非保証型のフローであることを示す前記選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する。
【００２７】
例示的なある実施形態において、前記選択規則記憶部が、特定の経路を利用する選択規則を記憶しており、かつ、前記特定の経路を利用する選択規則が新たなフローに適用される場合において、前記経路決定部は、前記経路候補抽出部の抽出結果に拘わらず、前記選択規則によって特定される経路を、前記データを伝送する経路として決定する。
【００２８】
例示的なある実施形態において、レート非保証型のフローの経路が既に決定されており、前記選択規則記憶部がレート非保証型のフローであることを示す選択規則を記憶しており、かつ、前記レート非保証型のフローであることを示す選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する。
【００２９】
例示的なある実施形態において、前記選択規則記憶部は、さらに前記第１ノードのフローの優先度を示す優先度情報を保持しており、前記経路候補抽出部は、前記優先度情報に基づいて、優先度がより低いフローが割り当てられた経路を、前記候補となる経路として抽出する。
【００３０】
例示的なある実施形態において、前記データ送受信部は、パケット方式で前記データを送受信し、前記ヘッダ構築部は、パケットのヘッダに前記ヘッダ情報を格納する。
【００３１】
本発明のある例示的な実施形態にかかるバス制御システムは、少なくとも１つの第１ノードと、少なくとも１つの第２ノ―ドと、前記少なくとも１つの第１ノードに直接接続された、上述したいずれかの例示的な実施形態にかかるバス制御装置と、前記バス制御装置および前記少なくとも１つの第２ノ―ドとの間に複数の経路を形成するネットワーク化されたバスと、を備え、前記バスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する。
【００３２】
ある例示的な実施形態において、前記バス制御システムは、複数のメモリの各々に割り当てられたデータのフローを交換するマイグレータをさらに備え、前記複数のメモリは、前記少なくとも１つの第２ノードであり、前記少なくとも１つの第１ノードから前記複数のメモリとの間には複数の経路が設けられており、前記マイグレータは、前記複数の経路に割り当てられているバスの利用帯域と、各メモリ上で利用される容量とに基づいて、複数のメモリの各々に割り当てられたデータのフローを交換する。
【００３３】
例示的なある実施形態において、前記バス制御システム中の前記複数の経路は空間的に分離された複数のバスとして構成される。
【００３４】
例示的なある実施形態において、前記バス制御システム中の前記複数の経路はバス上の単一の信号線によって構成される。
【００３５】
例示的なある実施形態において、前記バス制御システム中の前記複数の経路はバス上の単一の信号線を時分割多重することによって構成される。
【００３６】
例示的なある実施形態において、前記バス制御システム中のネットワーク化された前記バスは、前記複数の経路が設けられたローカルバスと、システムバスとを備えており、前記バス制御システムは、前記ローカルバスと前記システムバスとを接続するバスブリッジをさらに備えている。
【００３７】
本発明のある実施形態にかかるネットワークインタフェースは、上述のいずれかに記載のバス制御システムにおいて用いられる。前記ネットワークインタフェースは、帯域情報を管理する帯域情報管理部であって、前記帯域情報は、対応する経路に現在割り当てられている、データ伝送単位であるフローの帯域に関する情報である、帯域情報管理部と、前記第１ノードから前記第２ノードへのデータ、および前記第２ノードから前記第１ノードへのデータを送受信するデータ送受信部とを備えている。
【００３８】
例示的なある実施形態において、前記帯域情報管理部は、前記バス制御システムに包含される前記バス制御装置の経路負荷検出部からの要求に応答して、前記データ送受信部を介して前記帯域情報を出力する。
【００３９】
例示的なある実施形態において、前記ネットワークインタフェースは、前記ヘッダ情報に格納された前記復路を示す経路情報に基づいて、前記復路を特定する情報を生成し、宛先を特定する情報とともにパケットのヘッダに格納する復路ヘッダ構築部をさらに備えている。
【００４０】
以下、添付の図面を参照しながら、本発明のある実施形態によるバス制御装置および通信システムを説明する。以下の実施形態の説明では、バス制御装置は、ネットワークインタフェースであるとして説明する。また、データを相互に伝送する複数のノードは、イニシエータおよびメモリであるとして説明する。
【００４１】
（実施形態１）
図３は、本実施形態にかかるＳｏＣシステム４００を示す。イニシエータ４０１−４０４の各々は、ローカルバス４７０およびシステムバス４８０を介して共用メモリ４６１との間でデータの転送を行う。ＳｏＣシステムを構成するＮｏＣバスでは、ローカルバス４７０およびシステムバス４８０上でのデータの転送は、パケット単位で行われる。データの転送を実現するための接続関係は以下のとおりである。
【００４２】
まず、イニシエータ４０１から４０４は、ネットワークインタフェースＮＩ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ）４１１から４１４を介してローカルバス４７０に接続される。メモリ４６１はメモリコントローラ４５１およびＮＩ４４１を介してシステムバス４８０に接続される。各ＮＩは、パケット化や脱パケット化の処理を行ってデータを転送する。
【００４３】
ローカルバス４７０とシステムバス４８０はバスブリッジ４３１を介して相互に接続されている。バスブリッジ４３１は、ローカルバス側に２つの入出力インタフェースを持ち、それぞれ経路ＡとＢに接続される。
【００４４】
ローカルバス４７０は、ルータ４２１から４２４によってネットワーク化され、いずれのイニシエータからもメモリ４６１とのデータ転送において、経路Ａと経路Ｂが選択可能な構成となっている。バスブリッジ４３１には、経路ＡおよびＢの各々に対応してインタフェース部１２０ａおよび１２０ｂを有している。インタフェース部１２０ａおよび１２０ｂの構成は後に図８に関連して説明する。
【００４５】
ローカルバス４７０において、実線の矢印は各イニシエータからバスブリッジ４３１にデータを転送するための往路バス４７１を表し、点線の矢印はバスブリッジ４３１から各イニシエータにデータを返信するための復路バス４７２を表す。
【００４６】
システムバス４８０は、バスブリッジ４３１からメモリ４６１にデータを転送するための往路バス４８１と、メモリ４６１からバスブリッジ４３１にデータを返信するための復路バス４８２から構成される。
【００４７】
本実施形態では、システムバス４８１、４８２は各３２ビット幅、２００ＭＨｚのバスであり、接続可能なバンド幅は、８００ＭＢ／ｓである。またローカルバス４７１、４７２は各３２ビット幅、１００ＭＨｚのバスであり、接続可能なバンド幅は、経路Ａで４００ＭＢ／ｓ、経路Ｂで４００ＭＢ／ｓであり、２つの経路の合計で８００ＭＢ／ｓである。
【００４８】
ローカルバス４７０では、１００ＭＨｚの低動作周波数の２つの経路ＡとＢを均等に用いることで、システムバス４８０と比較して半分のバス動作周波数で動作可能な構成となっている。この構成は、後述するように、単純にバス幅を２倍にして転送速度を半分に落とすことのみを意味しているのではない。複数の経路でデータを伝送可能とすることで、経路毎に独立してフローを伝送できることを意図している。複数の経路を設けることにより、バス幅が実質的に拡大し、配線および当該配線上を伝送されるデータが局所的に集中することを抑制可能となる。
【００４９】
図４は、イニシエータ４０１から４０４の要求帯域を示す。要求帯域の単位は１秒間に転送可能なメガバイト数で表している。この値は瞬間的な計測値ではなく、イニシエータ毎の要求帯域の設計値または、機器のユースケース毎に定められるような比較的長い時間に渡る要求帯域を示している。
【００５０】
上述した構成のＳｏＣシステム４００を用いて、メモリアクセス動作の概要を説明する。
【００５１】
本実施形態では、イニシエータ４０１、４０２、４０３、４０４の順に、それぞれ時刻ｔｃ＝１０００、２０００、３０００、４０００にメモリ４６１へのアクセスを開始するものとする。時刻ｔｃはシステム起動時を起点とし、バス動作周波数を基準としたサイクル数で時刻を表した値とする。
【００５２】
ｔｃ＝０のシステム起動時点では未だどのイニシエータもメモリ４６１へのアクセスを行っていないため、いずれの経路にも帯域が割り当てられていない状態である。
【００５３】
図５は、フロー割当状況の時間変化を示す。図５の第３列に示されるように、ｔｃ＝０においては要求帯域は全て０である。
【００５４】
ｔｃ＝１０００において、イニシエータ４０１がメモリ４６１へのアクセスを開始する際、ＮＩ４１１はバスブリッジ４３１から、経路Ａの往路、復路と経路Ｂの往路、復路の割当帯域を取得する。この時点ではいずれも割当が行われていない。そのため、往路では経路Ａに対して３００ＭＢ／ｓ、復路では経路Ａに対して１００ＭＢ／ｓの帯域の割当要求をバスブリッジ４３１に対して行う。図５の第４列には、イニシエータ４０１の帯域が割り当てられた後の各径路の帯域が示されている。
【００５５】
次に、ｔｃ＝２０００において、イニシエータ４０２がメモリ４６１へのアクセスを開始する。このとき、ＮＩ４１２はバスブリッジ４３１から、経路Ａの往路、復路と経路Ｂの往路、復路の割当帯域を取得する。この時点では図５の第４列に示すような割当状態となっている。そこで、２つの経路間で割当帯域を均一化すべく、ＮＩ４１２はバスブリッジ４３１に対し、往路では経路Ｂに対して２００ＭＢ／ｓ、復路では経路Ｂに対して３００ＭＢ／ｓの帯域の割当要求を行う。図５の第５列は、イニシエータ４０２の帯域がさらに割り当てられた後の各径路の帯域が示されている。
【００５６】
次に、ｔｃ＝３０００において、イニシエータ４０３がメモリ４６１へのアクセスを開始する。このとき、ＮＩ４１３はバスブリッジ４３１から、経路Ａの往路、復路と経路Ｂの往路、復路の割当帯域を取得する。この時点では図５の第５列に示すような割当状態となっている。そこで、２つの経路間で割当帯域を均一化すべく、ＮＩ４１３はバスブリッジ４３１に対し、往路では経路Ｂに対して２００ＭＢ／ｓ、復路では経路Ａに対して３００ＭＢ／ｓの帯域の割当要求を行う。図５の第６列は、イニシエータ４０３の帯域がさらに割り当てられた後の各径路の帯域が示されている。
【００５７】
最後に、ｔｃ＝４０００において、イニシエータ４０４がメモリ４６１へのアクセスを開始する。このとき、ＮＩ４１４はバスブリッジ４３１から、経路Ａの往路、復路と経路Ｂの往路、復路の割当帯域を取得する。この時点では図５の第６列に示すような割当状態となっている。そこで、２つの経路間で割当帯域を均一化すべく、ＮＩ４１４はバスブリッジ４３１に対し、往路では経路Ａに対して１００ＭＢ／ｓ、復路では経路Ｂに対して１００ＭＢ／ｓの帯域の割当要求を行う。図５の第７列は、イニシエータ４０４の帯域がさらに割り当てられた後の各径路の帯域が示されている。
【００５８】
ｔｃ＝４０００以降は、図５の第７列に示した割当状態により、経路Ａと経路Ｂ間で転送データ量が往路、復路ともに均一に分散された状態となる。各イニシエータに対して行われた往路及び復路の経路割当結果は、各イニシエータに接続されたＮＩによって記憶され、イニシエータから受理した転送データのパケット化を行う際に、パケットのヘッダに往路及び復路の経路情報を格納する。
【００５９】
図６はイニシエータ側のＮＩで生成されるパケットヘッダの構成例である（後述）。ローカルバスのルータ４２１から４２４は、往路ではパケットヘッダの第２フィールドを宛先としてパケット転送を行い、システムバスのルータ（図示せず）は第１フィールドを宛先としてパケット転送を行う。メモリ側のＮＩ４４１に到着したパケットは脱パケット化されると同時に、復路への返信パケットに付与するパケットヘッダを往路パケットヘッダの格納情報から生成する。
【００６０】
図７は復路パケットヘッダの例である。メモリ４６１から読み出した転送データは、図７に示されるパケットヘッダを用いてパケット化され、システムバス復路４８２を用いて転送される。システムバス復路４８２からパケットを受理したバスブリッジ４３１は、パケットヘッダの第２フィールドを参照し、ローカルバスの復路の経路を決定し、ローカルバス復路４７２に返信パケットを送出する。返信パケットは、パケットヘッダの第１フィールドを宛先として転送され、イニシエータ側ＮＩまで届けられ、脱パケット化された後にイニシエータに渡されることでメモリアクセスが完了する。
【００６１】
図８は、イニシエータ側のネットワークインタフェース（ＮＩ）１１０の構成の例を示す。このＮＩ１１０は、イニシエータに直接接続されるインタフェースであり、図３に示すＮＩ４１１から４１４に対応する。以下、ＮＩ１１０の例として図３のＮＩ４１３を挙げて説明する。
【００６２】
ＮＩ１１０は、選択規則記憶部１１１と、経路負荷検出部１１２と、経路決定部１１５と、ヘッダ構築部１１６と、データ送受信部１１７と、経路候補抽出部１１８とを備えている。以下、ＮＩ１１０の各構成要素およびその動作を詳細に説明する。
【００６３】
なお、本実施形態では、第１ノードであるイニシエータから第２ノードであるメモリまでの往路、および、メモリからイニシエータまでの復路の両方に関して、負荷分散を行う例を説明する。しかしながら、往路または復路のいずれかのみに関して負荷分散を行ってもよい。すなわち本実施形態は、往路および復路の少なくとも一方に関して負荷分散を行うことを想定している。これは、本実施形態の説明を援用する他の実施形態に関しても同様である。
【００６４】
（選択規則記憶部１１１）
選択規則記憶部１１１は、イニシエータと各メモリとの間の経路を選択するために利用される選択規則を格納する。
【００６５】
図９は、ＮＩ４１３に関するローカルバスの経路選択規則の例を示す。第１列にはＮＩ４１３に与えられたシステム上で一意のＩＤ（本実施形態では数字列）が示されており、第２列にはイニシエータ４０１からのフローを区別するための番号が示されている。第１列のＩＤの数字列と第２列のフロー番号とを合わせると、システムで一意なフローを区別するための識別子であるフローＩＤが得られる。本実施形態においては、フローＩＤは、たとえば「４１３０１」、「４１３０２」などと表される。
【００６６】
ここで「フロー」とは、設計時あるいは動作時におけるメモリへのアクセスの要求帯域の単位を表す。例えばイニシエータ４０３がコーデックエンジンであり、エンコード処理タスクに往路２００ＭＢ／ｓ、復路３００ＭＢ／ｓの要求設計帯域が与えられ、デコード処理タスクに往路１００ＭＢ／ｓ、復路１００ＭＢ／ｓの要求設計帯域が与えられているとする。この場合のこれら２つのタスクが、イニシエータの２つのフローに対応する。
【００６７】
第３列および第４列はそれぞれローカルバスでの往路と復路での経路を割り当てる際の選択規則を表す。フローＩＤが４１３０１のフローに適用される選択規則を例に挙げて説明すると、このフローには往路、復路とも制限無の規則が適用されており、経路の制限も設けられていない。これは、経路間のデータ転送量が均一となるように、経路Ａ、経路Ｂのいずれの経路の割当も可能であることを示す。
【００６８】
他の例として、フロー４１３０２のフローに適用される選択規則は、往路、復路とも経路Ｂに固定され経路Ａは選択されないことを示す。これは、例えばシステム上に平均要求帯域は設計されているが、最大要求帯域はバスの物理帯域を上限とするようなレート非保証系のイニシエータが他にも存在する場合に有効である。複数のイニシエータが同一の経路を選択することで、最大要求帯域が相互に干渉し、イニシエータのパフォーマンスが瞬間的に急低下する可能性がある。フローの経路を固定する規則を設けることにより、そのようなパフォーマンスの低下を回避することができる。そのような状況では、一方のレート非保証系のイニシエータは往路、復路とも経路Ａに固定する選択規則とし、他方のレート非保証系のイニシエータは往路、復路とも経路Ｂに固定する選択規則としてもよい。
【００６９】
またシステム上に、メモリへのアクセス・レイテンシが非常に短いイニシエータが存在する場合、割当帯域が制限された特定の優遇経路を設け、該経路に該イニシエータの経路割当を固定する場合の選択規則として利用してもよい。
【００７０】
フローＩＤが４１３０３と４１３０４のフローに適用される選択規則では、これら２つのフローに属するメモリからの応答パケットに対して、イニシエータ４０３への到着順序が守られる必要があることを示す。選択規則記憶部１１１へのフローの登録は、初期化処理としてシステム起動前や、システム動作の切換前に行われてもよいし、各フローの開始時点でイニシエータによって行われてもよい。
【００７１】
（経路負荷検出部１１２）
経路負荷検出部１１２は、経路選択候補となる各経路上の帯域情報管理部１０１に帯域情報を要求し、データ送受信部１２２を介して帯域情報管理部１０１から送信された、現在の経路毎の帯域割当状況を取得する。帯域割当状況の取得は、イニシエータからのフローの送信開始要求を受信したタイミングで行われる。
【００７２】
図１０は経路Ａ、経路Ｂの各帯域情報管理部から取得された情報の例を示す。図１０は、ＮＩ４１３のエンコード処理タスクのフローに関し、経路Ｂの往路、復路には、それぞれ２００ＭＢ／ｓ、３００ＭＢ／ｓの帯域が既に割り当てられている状態であることを示している。帯域情報管理部１０１からの帯域上の取得は、バス上での制御パケットの交換によって行ってもよいし、専用の制御信号のハンドシェイクによって行ってもよい。バス上での制御パケットの交換によって行う場合は、ＮＩ４１３から各経路上の帯域情報管理部に対して、制御パケットをユニキャストパケットとして送信してもよいし、ブロードキャストパケットとして送信してもよい。また往路の帯域情報を取得する制御パケットと復路の帯域情報を取得する制御パケットを同一の制御パケットとして処理してもよいし、別個の制御パケットとして処理してもよい。
【００７３】
（経路候補抽出部１１８）
経路候補抽出部１１８は、往路群および復路群のうちの少なくとも一方の経路群の経路負荷が均一化されるように、経路群の中から候補となる経路を抽出する。候補となる経路の抽出には、経路負荷検出部１１２によって取得された種々の経路の負荷の情報が利用される。
【００７４】
なお、本願明細書では、「経路群の経路負荷が均一化されるように」という文言は、以下の意味で用いられる。すなわちこの文言は、経路群の少なくとも１つに既に帯域が割り当てられている状況において、新たに帯域を割り当てようとするときに、経路群全体で負荷の差が小さくなるように、という意味で用いられる。経路群全体で負荷の差が小さくなるように帯域の割り当てが行われていればよい。経路群の負荷の差が存在しないことが最も好ましいが、実際には負荷の差は存在し得る。そのような負荷の差の存在は許容される。なお、「フローの帯域を均一化する」などにおける「均一化」という意味も同様に、経路群全体で負荷の差が小さくなるように、という意味で用いられ、負荷の差が完全になくなることを必要としないことに留意されたい。
【００７５】
経路候補抽出部１１８は、往路候補抽出部１１３および復路候補抽出部１１４を有する。往路に関しては、往路候補抽出部１１３が候補となる経路を抽出する。復路に関しては、復路候補抽出部１１４が候補となる経路を抽出する。
【００７６】
（往路候補抽出部１１３）
往路候補抽出部１１３は、経路負荷検出部１１２によって、帯域情報管理部１０１から取得された、経路ｉ毎の往路割当済帯域の値Ｕｉと、割当対象のフローｊの往路要求帯域ｕｊとから、経路ｉにフローｊの割当を行った場合の経路ｉの往路割当帯域の値Ｅｉｊを算出する。数１内のｆｗｄは往路を示す添字である。
【数１】
2013168427.tif 000003
【００７７】
ここで、図１０は、往路割当済帯域（Ｕｉ）の値の例を示す。
【００７８】
全ての選択候補経路に対して、Ｅｉｊの算出を行い、各経路の中でＥｉｊの値が最も小さくなる経路Ｒｊをフローｊへの往路割当経路の候補として選択する。
【数２】
2013168427.tif 000004
【００７９】
（復路候補抽出部１１４）
復路候補抽出部１１４は、経路負荷検出部１１２によって、帯域情報管理部１０１から取得された、経路ｉ毎の復路割当済帯域の値Ｕｉと、割当対象のフローｊの復路要求帯域ｕｊとから、経路ｉにフローｊの割当を行った場合の経路ｉの復路割当帯域の値Ｅｉｊを算出する。数１内のｂａｃｋは復路を示す添字である。
【数３】
2013168427.tif 000005
【００８０】
図１０はまた、復路割当済帯域（Ｕｉ）の値の例を示す。
【００８１】
全ての選択候補経路に対して、Ｅｉｊの算出を行い、各経路の中でＥｉｊの値が最も小さくなる経路Ｒｊをフローｊへの往路割当経路の候補として選択する。
【数４】
2013168427.tif 000006
【００８２】
（経路決定部１１５）
経路決定部１１５は、イニシエータ４１３からのフロー開始要求を検出し、フローＩＤを検索キーとして選択規則記憶部１１１を検索し、該フローに関する経路選択規則を抽出する。フローＩＤが４１３０１のフロー（図９）に対する処理の例を説明すると、経路決定部１１５は、経路負荷検出１１２に対して帯域情報の取得を行わせ、往路候補抽出部１１３と復路候補抽出部１１４の結果を得る。該フローの往路選択規則は、制限無となっているため、往路間の割当帯域の均一性が最も高くなる往路候補抽出部１１３の出力経路を往路の割当経路として決定する。また復路選択規則も、制限無となっているため、復路間の割当帯域の均一性が最も高くなる復路候補抽出部１１４の出力経路を復路の割当経路として決定する。該フローには、往路、復路とも選択規則に制限が無いため、それぞれ独立に割当帯域が最も均一となる経路が選択される。またフローＩＤが４１３０２のフロー（図９）に対する処理の例を説明すると、往路、復路のいずれも割当経路が固定された選択規則となっているため、帯域情報を取得する必要はなく、往路、復路ともに指定された経路を割当経路として決定する。
【００８３】
またフローＩＤが４１３０３と４１３０４のフロー（図９）に関しては、往路での選択規則に制限は無いが、復路の選択規則はフロー間での応答パケットの到着順序が崩れない条件の下で経路選択を行うべきことを示している。これはアクセスに順序性を有する単一のフローを、送信帯域を確保するために２つの経路を用いて並列的に送信する場合などに該当する。
【００８４】
なお、本実施形態のＮｏＣでは、送信元と送信先がそれぞれ決まると、そのデータを中継するルータも一意に定まる構成であることを想定している。したがって、本実施形態では、パケットの送信順序を決定すれば順序を維持できる。なお、上述した「送信先」とは、最終的な送信宛先であるメモリではなく、バスブリッジの経路インタフェースを意味することに留意されたい。
【００８５】
図１１は、フロー間での到着順序が崩れる経路割当の例を示す。フロー４１３０３に属する応答パケット４１３０３ａと、フロー４１３０４に属する応答パケット４１３０４ａは、メモリ１１０１からバスブリッジ１１０２にアクセス順序に従って到着する。もしフロー４１３０３に対してローカルバスの復路で経路Ａが、フロー４１３０４に対してローカルバスの復路で経路Ｂが割り当てられた状態であり、経路Ａよりも経路Ｂのほうが転送が速かった場合には、イニシエータ１１０３に到着する順序は、４１３０４ｃ、４１３０３ｃのようにアクセス順序とは逆になるため、該フローの選択規則により該割当状態を禁止する。具体的には、フロー４１３０３に対する割当が、フロー４１３０４に対する割当前に発生した場合には、フロー４１３０３に対する割当は、フロー４１３０１と同様に、往路、復路に対して独立に経路が選択される。しかる後にフロー４１３０４に対する割当が発生した際には、往路に対してはフロー４１３０１の往路と同様に各経路の往路割当済帯域に基づいて往路を決定するが、復路の割当については、各経路の復路割当済帯域に基づくことなく、先行して割り当てられた関連フロー４１３０３の復路を、フロー４１３０４への割当先の復路として決定する。経路Ａ、経路Ｂ間のデータ転送のタイミングの差によるイニシエータへの到着順序の逆転が防止できる。選択規則に従って決定された各フローの往路、復路の経路割当結果は、経路決定部１１５によって記憶され、各フローに属するメモリアクセスが行われる際に、ヘッダ構築部１１６によって参照され、パケットヘッダの生成に利用される。
【００８６】
図１２は往路、復路の経路割当結果の格納例を示す。経路決定部１１５は、該フローに対する往路、復路の割当が完了すると、該割当経路上の帯域情報管理部１０１に対して、割当を行ったフローに関する情報であるフロー関連情報を通知する。フロー関連情報には、少なくとも該フローの要求帯域に関する情報が含まれる。
【００８７】
図１３はフロー関連情報の通知パケットの構成例を示す。該パケットは、メモリアクセスの要求パケットではないため、第１列目のフィールドのメモリ側ＮＩのＩＤはＮＵＬＬが格納される。第２列目のフィールドには、往路の割当結果である経路のＩＤ、第３列目のフィールドには、送信元であるイニシエータ側ＮＩのＩＤ、第４列目のフィールドには、復路の割当結果である経路のＩＤが格納される。また第５列目のフィールドには、往路に対して割り当てられた要求帯域を示す値が、第６列目のフィールドには、復路に対して割り当てられた要求帯域を示す値が格納され、これらの要求帯域に関する情報が、該パケットにより、帯域情報管理部１０１に伝達されることにより、各経路上の帯域情報管理部１０１は、経路上に割り当てられた全てのフローの要求帯域を管理することが可能となる。
【００８８】
経路決定部１１５は、メモリ・アクセスが完了すると、往路および復路の解放通知を出力する。この通知に基づいて、帯域情報管理部１０１は、往路および復路の経路を解放し、往路割当済帯域および復路割当済帯域の各値を更新する。
【００８９】
（ヘッダ構築部１１６）
ヘッダ構築部１１６は、経路決定部１１５に記憶されたフロー毎の往路、復路の経路割当結果を参照することで、メモリに対して送信するメモリアクセスの要求パケットのパケットヘッダを構築する。
【００９０】
図６は、パケットヘッダの構築例を示す。
【００９１】
パケットフィールドの第１列には、アクセスする宛先メモリのＩＤを示す値が格納される。宛先メモリのＩＤは、イニシエータ４０３からＮＩ４１３に対してメモリアクセス要求を出力する度に受信してもよいし、アクセス先のメモリアドレスから宛先メモリのＩＤに変換するための変換テーブルをＮＩ４１３に保持し、それを参照することで解決してもよい。
【００９２】
パケットフィールドの第２列には、往路割当結果を示す値が格納される。図１２は、経路割当結果の例を示す。ヘッダ構築部１１６は、フローＩＤに基づいて図１２に示した経路割当結果の記憶領域を検索することで、往路割当結果を示す値を抽出し、パケットフィールドの第２列に格納する。
【００９３】
パケットフィールドの第３列には、イニシエータ４０３を示すＩＤが格納される。イニシエータ４０３のＩＤは、ＮＩ４０３の初期化時にイニシエータ４０３からＮＩ４０３に対してレジスタ等を用いて設定してもよい。またシステムで一意なＮＩ４０３のＩＤとしてＮＩ４０３内に事前に記憶していてもよい。パケットフィールドの第４列には、フローＩＤに基づいて図１２に示した経路割当結果の記憶領域を検索することで抽出した復路割当結果を示す値が格納される。またこれら以外のシステムで必要とされる情報もヘッダ内にフィールドを設けて格納してもよい。
【００９４】
（データ送受信部１１７）
イニシエータ４０３から、メモリへのライトまたはリードのアクセス要求を受理したデータ送受信部１１７は、該アクセスのフローＩＤを特定し、ヘッダ構築部１１６に通知することで、メモリに送信するためのアクセス要求パケットのパケットヘッダを獲得する。またイニシエータ４０３からライトデータを受理した場合には、パケットヘッダと共に初段のルータ４２２に対して要求パケットの送信を行う。またルータ４２２から応答パケットを受信した場合は、応答パケットからパケットヘッダを除去し、リードデータを受理した場合には、イニシエータ４０３に対して送信する。イニシエータ４０３とのデータの送受信については、イニシエータが対応するバスプロトコルへの変換処理も必要に応じて行う。
【００９５】
ここで図８および図３を参照する。
【００９６】
図８のメモリ側インタフェース部１２０は、図３のＮＩ４４１の構成の例である。また図８に示すように、メモリが複数存在する場合にはメモリ側インタフェース部１２０も複数設けられる。つまり、経路が異なれば、経路ごとにインタフェース部が設けられる。
【００９７】
同様の理由で、メモリ側インタフェース部１２０と同等の構成を有するインタフェース部１２０が、各経路ＡおよびＢについてインタフェース部１２０ａおよび１２０ｂ（図３）として設けられる。以下では、図８のインタフェース部１２０が、図３のＮＩ４４１に対応するとして説明するが、インタフェース部１２０ａおよび１２０ｂ（図３）の構成も同等であることに留意されたい。
【００９８】
メモリ側インタフェース部１２０は、帯域情報管理部１０１と、復路ヘッダ構築部１２１と、データ送受信部１２２とを備えている。以下、メモリ側インタフェース部１２０の構成要素およびその動作を詳細に説明する。
【００９９】
（復路ヘッダ構築部１２１）
復路ヘッダ構築部１２１は、イニシエータ側のＮＩ４１１からＮＩ４１４より受信したメモリアクセスの要求パケットのパケットヘッダに基づいて、メモリアクセス結果を格納する応答パケットのパケットヘッダを構築する。ローカルバス内の応答パケットの割当経路は、イニシエータ側のＮＩ４１１からＮＩ４１４内で管理されるため、応答パケットがとるべき復路の経路に関する情報は、要求パケットのパケットヘッダ内に格納されてメモリ側のＮＩ４４１に通知される。
【０１００】
図７は、応答パケットのパケットヘッダの構成の例を示す。応答パケットの第１列目のフィールドは、応答パケットの最終的な宛先となるイニシエータ側のＮＩのＩＤが、図６に示す要求パケットのパケットヘッダの第３列目のフィールドから複製され格納される。応答パケットの第２列目のフィールドは、ローカルバスの復路を示すＩＤであり、要求パケットの第４列目のフィールドから複製され格納される。応答パケットの第３列目のフィールドは、応答パケットの送信元であるメモリ側のＮＩ４４１のＩＤであり、要求パケットの第１列目のフィールドと同一の値が格納される。応答パケットの第４列目のフィールドは、ローカルバス往路のＩＤであり、要求パケットの第２フィールドから複製され格納される。なお、復路においてはローカルバス往路の情報は特に必要はないため、ローカルバス往路のＩＤを設けなくてもよい。
【０１０１】
（データ送受信部１２２）
データ送受信部１２２は、システムバス往路４８１を介して、要求パケットを受信する。データ送受信部１２２は、要求パケットからパケットヘッダを分離し、ライトデータまたはリード要求を、メモリコントローラ４５１に送信する。またデータ送受信部１２２は、要求パケットヘッダから分離したパケットヘッダを復路ヘッダ構築部１２１に通知する。また、メモリコントローラ４５１から、メモリ４６１へのライトまたはリードのアクセス応答を受理した場合は、復路ヘッダ構築部１２１から応答パケットのパケットヘッダを獲得し、該アクセス応答に含めて応答パケットを生成し、システムバス復路４８２を介してイニシエータに対して送信する。メモリコントローラ４５１とのデータの送受信については、メモリコントローラ４５１が対応するバスプロトコルへの変換処理も必要に応じて行う。
【０１０２】
（帯域情報管理部１０１）
帯域情報管理部１０１は、本実施形態では、バスブリッジ４３１のローカルバス側インタフェース上に存在する構成をとっているが、各経路の帯域情報が管理できる場所であれば、経路上のどこにあってもよい。経路ｉ上の帯域情報管理部１０１は、経路ｉに対して現在割り当てられているフローの割当済帯域Ｕｉを管理し、経路決定部１１５から受理した割当結果の通知に基づいてＵｉを更新する。システム起動時などの未だフローが何も割り当てられていない状態において、割当済帯域Ｕｉは数５、数６に従い初期化される。式中のfwdは往路を表し、backは復路を表す添字である。
【数５】
2013168427.tif 000007
【数６】
2013168427.tif 000008
【０１０３】
図１３は、フローｊの割当処理完了に伴い、経路決定部１１５から受理する割当結果の通知のパケットの例を示す。パケットの第２列目に格納された往路のＩＤが、帯域情報管理部１０１が管理する経路ｉに対応するＩＤであれば、パケットの第５列目のフィールドに格納された該フローｊの往路割当帯域の値ujを用いて、数７に従って割当済帯域Ｕｉの値を更新する。
【数７】
2013168427.tif 000009
【０１０４】
パケットの第４列目に格納された復路のＩＤが、帯域情報管理部１０１が管理する経路ｉに対応するＩＤであれば、パケットの第６列目のフィールドに格納された該フローｊの復路割当帯域の値ujを用いて、数８に従って割当済帯域Ｕｉの値を更新する。
【数８】
2013168427.tif 000010
【０１０５】
また一方、経路iに割当済であるフローjが、イニシエータの状態変化などにより消滅した場合には、経路決定部１１５から受理する割当済帯域の解放通知などに基づき、割当済帯域Ｕｉを数９、数１０に従い更新する。
【数９】
2013168427.tif 000011
【数１０】
2013168427.tif 000012
【０１０６】
経路ｉへのフローの割当、解放に伴って常に割当済帯域Ｕｉを更新することにより、経路ｉの往路、復路に割り当てられている要求帯域を帯域情報管理部１０１で管理することが可能となる。帯域情報管理部１０１は、経路負荷検出部１１２からの要求に従い、割当済帯域Ｕｉの値を通知する。
【０１０７】
図１４は、本実施形態のイニシエータ側のＮＩにおける処理フローを示す。まずステップＳ１４０１において、経路決定部１１５はイニシエータからのフロー開始要求を検出する。ステップＳ１４０２において、経路決定部１１５は、選択規則記憶部１１１から、選択規則を読み出す。
【０１０８】
ステップＳ１４０３において、往路候補抽出部１１３は、経路毎の割当済帯域（往路）を取得する。具体的には、往路候補抽出部１１３は、経路負荷検出部１１２によって帯域情報管理部１０１から取得された、経路ｉ毎の往路割当済帯域の値Ｕｉと、割当対象のフローｊの往路要求帯域ｕｊとから、経路ｉにフローｊの割当を行った場合の経路ｉの往路割当帯域の値Ｅｉｊ（数１）を算出する。
【０１０９】
ステップＳ１４０４において、復路候補抽出部１１４は、経路毎の割当済帯域（復路）を取得する。具体的には、復路候補抽出部１１４は、経路負荷検出部１１２によって、帯域情報管理部１０１から取得された、経路ｉ毎の復路割当済帯域の値Ｕｉと、割当対象のフローｊの復路要求帯域ｕｊとから、経路ｉにフローｊの割当を行った場合の経路ｉの復路割当帯域の値Ｅｉｊを算出する。
【０１１０】
ステップＳ１４０５において、経路決定部１１５は、往路候補抽出部１１３と復路候補抽出部１１４の結果を得て選択規則記憶部１１１を検索し、選択規則に従った経路（往路、復路）を決定する。
【０１１１】
ステップＳ１４０６において、経路決定部１１５は、割当経路上のメモリ側インタフェース部１２０の帯域情報管理部１０１に、経路（往路、復路）の決定結果を通知する。
【０１１２】
ステップＳ１４０７においてメモリ・アクセスが開始され、ステップＳ１４０８においてメモリ・アクセスが終了する。
【０１１３】
そしてステップＳ１４０９において、経路決定部１１５は経路（往路、復路）の解放通知を出力する。この結果、帯域情報管理部１０１は、往路および復路の経路を解放し、往路割当済帯域および復路割当済帯域の各値を更新する。
【０１１４】
本実施形態では、イニシエータのデータ転送先はシステムメモリとして説明したが、ローカルメモリやグラフィックメモリなどでもよいし、入出力ポートやバッファ、デバイスであってもよいし、イニシエータ間の直接通信であってもよい。例えばイニシエータ４０１からイニシエータ４０４へ、メモリ４６１を介さず、ローカルバス内で直接通信する場合には、パケットの宛先としてイニシエータ側のＮＩ４１４のＩＤを指定すればよい。その場合、ＮＩ４１１から送信された要求パケットは、バスブリッジ４３１でループバックされ、ＮＩ４１４に送られる。またＮＩ４１４から送られた応答パケットは、バスブリッジ４３１でループバックされ、ＮＩ４１１に返される。直接通信のためのフローの割当も、メモリ・アクセスのフローに対する経路割当の処理と同様に行えばよい。かかる構成によればバスの利用帯域を往路、復路毎に最適に制御することが可能となり、低いバス動作周波数の並列構成のバスを用いて、広帯域なデータ転送を行うことができる。
【０１１５】
（実施形態２）
実施形態１においては、各イニシエータが発生させるフローjの最大要求帯域ujが定義可能な場合の例を説明した。フロー毎の最大要求帯域は、ＳｏＣの帯域設計の方法により粒度は異なるものの、メモリアクセス性能の保証の必要性から、レート保証型のイニシエータについては設計時に定義される設計パラメータと考えてよい。
【０１１６】
しかし実際のＳｏＣシステムの構成時には、プロセッサやメモリアクセス性能を問わないレート非保証型のイニシエータも存在する。レート非保証型のイニシエータでは、平均要求帯域は定義可能な場合もある。しかしながら、例えばユーザの機器操作に基づく多数のタスクの起動や、内部キャッシュのミスヒットなどにより、メモリに対して瞬間的に大量のデータ転送を要求することがある。このときの最大要求帯域の上限はバスの物理帯域となる。
【０１１７】
このようなレート非保証型の広帯域なメモリアクセスが、メモリアクセス性能の保証が必要なリアルタイム系のイニシエータのメモリアクセスと相互に干渉するのを防ぐため、本実施形態においては、バスの帯域を時分割多重したり、またはルータでのパケット転送時における優先度制御を行う。
【０１１８】
図１５は、本実施形態におけるＳｏＣシステムを示す。
【０１１９】
イニシエータ２００１−２００３はいずれもレート非保証系のイニシエータである。リアルタイム系のイニシエータの記載は省略するが、帯域の時分割多重やパケット優先度制御が行われているのであれば、システム上に存在していても良い。
【０１２０】
レート非保証系のイニシエータ２００１−２００３はバスを介して共用メモリ２０５１、２０５２との間でデータの転送を行う。イニシエータ２００１−２００３は、ネットワーク・インタフェースであるＮＩ２０１１、２０１２、２０１３を介してルータ２０２１−２０２３にそれぞれ接続される。メモリ２０５１、２０５２は、メモリコントローラ２０４１、２０４２、ネットワーク・インタフェースであるＮＩ２０３１、２０３２を介してルータ２０２４、２０２５に接続される。ルータ２０２１−２０２５は、各隣接間で接続されたバスを形成する。
【０１２１】
イニシエータ２００１、２００２、２００３はメモリ２０５１、２０５２のいずれにもアクセスが可能である。例えばイニシエータ２００１からメモリ２０５１へアクセスを行う際には、イニシエータ２００１は、イニシエータ２００１から実線で示したバスを通ってルータ２０２４の経路Ａ側のインタフェースを経由しメモリ２０５１に至る経路Ａと、点線で示したバスを通ってルータ２０２４の経路Ｂ側のインタフェースを経由しメモリ２０５１に至る経路Ｂの２つの経路を選択可能である。イニシエータ２００１からメモリ２０５２へのアクセスについても同様に、経路Ｃ、経路Ｄの２つの経路を選択可能である。またイニシエータ２００２、２００３についても同様に、メモリ２０５１、２０５２へのアクセスにおいて、それぞれ２つの経路を選択可能である。
【０１２２】
図１６は、ＮＩ２０１１、ＮＩ２０１２、ＮＩ２０１３が参照する経路選択規則の例を示す。フロー２００１０１、２００２０１、２００３０１は、いずれもレート非保証型のフローである。フロー２００１０１と２００２０１は同じ優先度を持つ。フロー２００３０１の優先度はフロー２００１０１、２００２０１の優先度より低い。この優先度の情報は、選択規則記憶部によって選択規則と共に保持されている。
【０１２３】
図１５に実線及び点線で示したバスは、それぞれ往路と復路から構成されるが、実施形態１と同様であるため図１５には図示していない。本実施形態では、バスの物理帯域は、往路、復路とも、各３２ビット幅、２００ＭＨｚのバスであり、接続可能なバンド幅は、８００ＭＢ／ｓである。該構成のＳｏＣシステムを用いて、レート非保証系のイニシエータにおける経路割当の詳細な方法を、実施形態１と同様の部分については省略し、異なる部分についてのみ行う。
【０１２４】
イニシエータ２００３は、イニシエータ２００１に先立ち、メモリ２０５２へのアクセスを行うためのレート非保証系のフロー２００３０１の割当要求を開始する。この時点では他のレート非保証系のフロー２００１０１、２００２０１は未だ割当が行われていないため、たとえば、他のレート保証型のフローの割当状況、メモリ２０５２に至る経路Ｃ、経路Ｄ間のホップ数の差を加味して、経路Ｃが割り当てられる。次にイニシエータ２００１から、メモリ２０５１にアクセスするためのレート非保証系のフロー２００１０１の割当要求が出されると、ＮＩ２０１１は、選択可能な各経路上の帯域情報管理部からレート非保証系のフローの割当状況を取得し、経路Ｂではなく、経路Ａを選択する。これにより、イニシエータ２００３が行うレート非保証系のメモリアクセスと点線の経路上で干渉することを防ぎ、フロー２００１０１、フロー２００３０１の双方とも、物理帯域を上限とするメモリへのアクセスが可能となる。またその後、イニシエータ２００２から、メモリ２０５２にアクセスするためのレート非保証型のフロー２００２０１の割当要求が出されると、ＮＩ２０１２は、選択可能な各経路上の帯域情報管理部からレート非保証系のフローの割当状況を取得し、経路Ａにレート非保証系の高優先度のフロー２００１０１が割当済であり、経路Ｂにレート非保証系の低優先度のフロー２００３０１が割当済であることを検出する。フロー２００２０１の優先度は、フロー２００１０１と同様で高いため、ＮＩ２０１２は、高優先度のフロー間での干渉を防ぐため、フロー２００２０１を経路Ｂに割り当てる。
【０１２５】
図８のイニシエータ側ネットワーク・インタフェース（ＮＩ）１１０は、図１５のＮＩ２０１１、ＮＩ２０１２、ＮＩ２０１３の構成の例である。実施形態１のＮＩ１１０と同じ機能を有する構成要素の説明は省略し、機能が異なる構成要素を詳細に説明する。
【０１２６】
（選択規則記憶部１１１）
いずれのフローもレート非保証型であり、最大要求帯域が定義できないため、選択規則記憶部１１１が格納する選択規則にはレート非保証であることを示す情報が格納される。またレート非保証型のフロー間に優先度関係が存在する場合は、優先度を示す情報も格納される。
【０１２７】
（経路負荷検出部１１２）
経路負荷検出部１１２は、経路選択候補となる各経路上の帯域情報管理部１０１から、現在の経路毎のレート非保証型のフローの割当状況を取得する。
【０１２８】
図１７は、イニシエータ２００１によるフロー２００１０１の割当要求時に、経路Ａ、経路Ｃの帯域情報管理部から取得された情報の例を示す。経路Ａにはレート非保証型のフローは割り当てられていないため、往路、復路とも０の状態である。一方、経路Ｃには既にイニシエータ２００３のレート非保証型のフローが１本割り当てられているため、往路、復路とも１の状態である。
【０１２９】
また図１８は、イニシエータ２００２によるフロー２００２０１の割当要求時に、経路Ａ、経路Ｃの帯域情報管理部から取得された情報の例を示す。経路Ａには既にイニシエータ２００１のレート非保証型のフローが１本割り当てられているため、往路、復路とも１の状態である。経路Ｃには既にイニシエータ２００３のレート非保証型のフローが１本割り当てられているため、往路、復路とも１の状態である。
【０１３０】
割当状況を表す値については、本実施形態では、該経路に割り当てられたレート非保証型のフローの本数としているが、割当が為されているかどうかを示すバイナリ値としてもよいし、レート非保証型のフローに平均要求帯域が定義できる場合には、平均要求帯域で重み付けをした値としてもよい。
【０１３１】
（経路候補抽出部１１８）
経路候補抽出部１１８は、往路候補抽出部１１３および復路候補抽出部１１４の少なくとも一方を動作させ、往路および復路の少なくとも一方の経路群の経路負荷が均一化されるように、経路群の中から候補となる経路を抽出する。具体的には、次に説明するように、往路候補抽出部１１３および復路候補抽出部１１４を動作させる。
【０１３２】
（往路候補抽出部１１３）
往路候補抽出部１１３は、経路負荷検出部１１２によって、帯域情報管理部１０１から取得された、経路ｉ毎の往路のレート非保証型の割当状況に基づいて、先ずレート非保証型のフロー割当が為されていない経路を選択する。そして、そのような経路が存在しない場合には、往路候補抽出部１１３は、割当対象のフローの優先度よりも低い優先度のフローのみが割り当てられている経路を選択する。そのような経路も存在しない場合には、往路候補抽出部１１３は、割当対象のフローの優先度と同等かそれ以上の優先度のフローの割当数が最小の経路ｉを該フローへの往路割当経路の候補として選択する。
【０１３３】
（復路候補抽出部１１４）
復路候補抽出部１１４は、経路負荷検出部１１２によって、帯域情報管理部１０１から取得された、経路ｉ毎の往路のレート非保証型の割当状況に基づいて、先ずレート非保証型のフロー割当が為されていない経路を選択する。そして、そのような経路が存在しない場合には、復路候補抽出部１１４は、割当対象のフローの優先度よりも低い優先度のフローのみが割り当てられている経路を選択する。そのような経路も存在しない場合には、復路候補抽出部１１４は、割当対象のフローの優先度と同等かそれ以上の優先度のフローの割当数が最小の経路ｉを該フローへの往路割当経路の候補として選択する。
【０１３４】
（経路決定部１１５）
経路決定部１１５は、イニシエータ２００１からのレート非保証型のフローの開始要求を検出し、フローＩＤを検索キーとして選択規則記憶部１１１を検索し、該フローに関する経路選択規則を抽出する。フローＩＤが２００１０１のフローに対する処理の例としては、経路負荷検出部１１２に対してレート非保証系の割当状況の取得を行わせ、往路候補抽出部１１３と復路候補抽出部１１４の結果を得る。該フローの往路選択規則としては、レート非保証型となっているため、往路間の割当フロー数の均一性が最も高くなる往路候補抽出部１１３の出力経路を往路の割当経路として決定する。また復路選択規則としても、レート非保証型となっているため、復路間の割当フロー数の均一性が最も高くなる復路候補抽出部１１４の出力経路を復路の割当経路として決定する。経路決定部１１５は、該レート非保証系フローに対する往路、復路の割当が完了すると、該割当経路上の帯域情報管理部１０１に対して、割当を行ったフローに関する情報であるフロー関連情報を通知する。フロー関連情報には、少なくとも該フローがレート非保証系のフローであることを示す情報が含まれる。
【０１３５】
図１９は、フロー関連情報の通知パケットの構成例を示す。該パケットは、メモリアクセスの要求パケットではないため、第１列目のフィールドのメモリ側ＮＩのＩＤはＮＵＬＬが格納される。第２列目のフィールドには、往路の割当結果である経路のＩＤ、第３列目のフィールドには、送信元であるイニシエータ側ＮＩのＩＤ、第４列目のフィールドには、復路の割当結果である経路のＩＤが格納される。また第５列目のフィールドには、往路に対して新たに１本のレート非保証型のフローが割り当てられたことを示す１が、第６列目のフィールドには、往路に割り当てられたフローの優先度が、第７列目のフィールドには、復路に対して新たに１本のレート非保証型のフローが割り当てられたことを示す１が、第８列目のフィールドには、復路に割り当てられたフローの優先度が格納され、通知用パケットとして、帯域情報管理部１０１に伝達されることにより、各経路上の帯域情報管理部１０１は、経路上でのレート非保証型のフローの割当状況を管理することが可能となる。
【０１３６】
（帯域情報管理部１０１）
帯域情報管理部１０１は、本実施形態では、ルータ２０２４の経路Ａ側のインタフェース部と、ルータ２０２５の経路Ｃ側のインタフェース部に位置する構成をとっているが、各経路の帯域情報が管理できる場所であれば、経路上のどこにあってもよい。経路ｉ上の帯域情報管理部１０１は、経路ｉに対して現在割り当てられているレート非保証型のフローの割当状態Ａｉをフローの優先度毎に管理し、経路決定部１１５から受理した割当結果の通知に基づいてＡｉを更新する。システム起動時などの未だフローが何も割り当てられていない状態において、レート非保証型フローの割当本数などを示すＡｉは数１１、数１２に従い初期化される。式中のfwdは往路を表し、backは復路を表す添字である。
【数１１】
2013168427.tif 000013
【数１２】
2013168427.tif 000014
【０１３７】
図１９は、フローｊの割当処理完了に伴い、経路決定部１１５から受理する割当結果の通知のパケットの例を示す。パケットの第２列目に格納された往路のＩＤが、帯域情報管理部１０１が管理する経路ｉに対応するＩＤであれば、パケットの第５列目のフィールドに格納された該フローｊの往路割当状況の値ａjを用いて、数１３に従ってレート非保証系の割当状況Ａｉの値を更新する。
【数１３】
2013168427.tif 000015
【０１３８】
パケットの第４列目に格納された復路のＩＤが、帯域情報管理部１０１が管理する経路ｉに対応するＩＤであれば、パケットの第６列目のフィールドに格納された該フローｊの復路割当状況の値ａjを用いて、数１４に従ってレート非保証系の割当状況Ａｉの値を更新する。
【数１４】
2013168427.tif 000016
【０１３９】
また一方、経路iに割当済であるレート非保証型フローjが、イニシエータの状態変化などにより消滅した場合には、経路決定部１１５から受理するレート非保証系の割当状況の解放通知などに基づき、割当済帯域Ａｉを数１５、数１６に従い更新する。
【数１５】
2013168427.tif 000017
【数１６】
2013168427.tif 000018
【０１４０】
経路ｉへのレート非保証型のフローの割当、解放に伴って常に優先度毎の割当状況Ａｉを更新することにより、経路ｉの往路、復路に割り当てられているレート非保証型のフローの割当状況を帯域情報管理部１０１で管理することが可能となる。帯域情報管理部１０１は、経路負荷検出部１１２からの要求に従い、レート非保証型のフローの優先度毎の割当状況Ａｉの値を通知する。
【０１４１】
上述の構成によればシステム上にバスの物理帯域上限までのメモリアクセスを行うレート非保証系のイニシエータが複数存在する状況下でも、バスの利用帯域を往路、復路毎に最適に制御することが可能となり、低いバス動作周波数の並列構成のバスを用いて、広帯域なデータ転送を行うことができる。また往路もしくは復路のいずれか一方だけで、フローの割当処理を行っても良い。
【０１４２】
（実施形態３）
イニシエータからメモリへのアクセスに注目すると、同等の要求帯域を有する複数のフローがあった場合でも、各フローがメモリ上で使用する容量には差があるのが一般的である。そのため、メモリへ至る経路のフローの帯域を均一化するだけではなく、該フローが占有するメモリ領域の容量についても考慮する必要がある。
【０１４３】
図２０は、本実施形態におけるＳｏＣシステムの構成例を示す。メモリ２０５１およびメモリ２０５２は、マイグレータ２０６１により接続されている。実施形態２に関連して説明したＳｏＣシステムの構成要素と同じ機能を有する構成要素の説明は省略する。
【０１４４】
また図２１は、各イニシエータが生成するフローの特性を示す。イニシエータ２００１、イニシエータ２００２は、いずれも要求帯域が定義可能なリアルタイム系のイニシエータである。
【０１４５】
本実施形態では、帯域情報管理部１０１は、マイグレータ２０６１の経路Ａ、経路Ｂのインタフェース上にあり、それぞれメモリ２０５１、メモリ２０５２に割り当てられたフローの割当済帯域情報と割当済容量を管理する。各フローは、図２１に示された開始時刻になると、フローの割当要求を出して利用するメモリの割当を行う。
【０１４６】
実施形態１と同様に各フローのメモリへの割当処理が時間順に行われる。
【０１４７】
図２２は、フローの割当状態の例を示す。時刻ｔｃ＝４０００ｃｙｃｌｅにおいて、最後のフロー２００２０２へのメモリの割当が完了した時点では、往路、復路とも、メモリ２０５１には２００ＭＢ／ｓの帯域が割り当てられ、メモリ２０５２には２００ＭＢ／ｓの帯域が割り当てられている。すなわち、メモリ間での割当済帯域が均一となった状態となる。
【０１４８】
一方、各メモリでの割当済容量を比較すると、メモリ２０５１では２００ＭＢの領域が使用され、メモリ２０５２では８００ＭＢの領域が使用される状態となる。これでは、８００ＭＢの物理容量を有する２つのメモリで構成したシステムにおいては、メモリ２０５１の利用可能容量のうちの６００ＭＢが未使用となってしまう。
【０１４９】
マイグレータ２０６１は、割当済容量を比較することによってメモリの利用可能容量が不均衡の状態にあることを検出し、フローの割当状態の更新を行う。具体的には、要求帯域が同等であるフロー２００１０１とフロー２００１０２を選択し、フロー２００１０１をメモリ２０５１からメモリ２０５２へ移動させ、フロー２００１０２をメモリ２０５２からメモリ２０５１へ移動させることで、メモリ２０５１の利用容量を５００ＭＢとし、メモリ２０５２の利用容量を５００ＭＢとする。これにより、メモリ２０５１、メモリ２０５２間で、割当済帯域、割当済容量が共に最適となる。
【０１５０】
図２０のＮＩ２０１１、ＮＩ２０１２の構成は、図８のイニシエータ側ネットワーク・インタフェース（ＮＩ）１１０と同じである。メモリ間で交換するためのフローを決定するため、帯域情報管理部１０１は、フローＩＤ毎に該フローの要求帯域と要求容量の両方を管理し、それらの情報に基づいて、メモリ間の割当済帯域と割当済容量が共に最適となるように交換対象のフローを選択する。交換が完了すると、マイグレータ２０６１は、関係するイニシエータ側のＮＩに対して変更通知を送信し、変更通知を受信したイニシエータ側のＮＩは、経路割当結果を更新する。
【０１５１】
（実施形態４）
実施形態２では、図１５においてイニシエータからメモリに至る選択経路は空間的に分離された構成として示したが、本発明はこの構成に限らない。
【０１５２】
図２３は、本実施形態にかかるネットワークの構成例を示す。イニシエータ２００１、２００２、２００３は、ＮＩ２０１１、２０１２、２０１３を介してルータ２０２１に接続され、ルータ２０２１はルータ２０２２と広帯域リンク２０８１で接続される。広帯域リンク２０８１はバス幅の拡張により広帯域化されていても良いし、データ転送のための動作周波数を高くすることにより広帯域化されていても良い。バス幅の拡張により広帯域化する場合は、リンク２０８１のバス幅を、イニシエータとルータ２０２１間を結ぶリンクのバス幅の２倍にしても良い。リンク２０８１の信号線のうちの半分は経路Ａに、残りの半分は経路Ｂに割り当てられ、ルータ２０２２上に経路Ａと経路Ｂの帯域情報を管理する２つの帯域情報管理部１０１を有する。
【０１５３】
またリンク２０８１のデータ転送のための動作周波数を高くすることにより広帯域化する場合は、ルータ２０２１、２０２２は、半分に分周された動作周波数をバスクロックとして使用し、クロックの立ち上がりで経路Ａを、立ち下がりで経路Ｂを認識しても良い。たとえば図２４（ａ）〜（ｄ）は、経路分離の方法例を示す。リンク２０８１は、各イニシエータの出力リンクの帯域の２倍のデータ転送能力を有する（図２４（ａ））。そこで、図２４（ｂ）に示すようにリンク２０８１のバスクロックを２分周し、２分周したクロックの立ち上がりおよび立ち下がりのタイミングで、経路ＡおよびＢのデータ転送を行えばよい。たとえば図２４（ｃ）は、２分周したクロックの立ち上がりのタイミングで経路Ａのデータ転送を行う例を示し、図２４（ｄ）は、２分周したクロックの立ち下がりのタイミングで経路Ｂのデータ転送を行う例を示す。このように構成することにより、実施形態１と同様の経路分散効果が得られる。
【産業上の利用可能性】
【０１５４】
本発明は、組込機器向けのＳｏＣにおけるオンチップバスや、汎用プロセッサ、ＤＳＰ上のローカルバスにおける、データ転送経路の制御技術を備えたネットワークバス制御装置、制御方法、制御プログラムに利用可能である。
【符号の説明】
【０１５５】
１１０  イニシエータ側ネットワーク・インタフェース（ＮＩ）
１１１  選択規則記憶部
１１２  経路負荷検出部
１１３  往路候補抽出部
１１４  復路候補抽出部
１１５  経路決定部
１１６  ヘッダ構築部
１１７  データ送受信部
１１８  経路候補抽出部
１２０  メモリ側ネットワーク・インタフェース（ＮＩ）
１２１  復路ヘッダ構築部
１２２  データ送受信部
１０１  帯域情報管理部
４００  ＳｏＣシステム
４０１−４０４  イニシエータ
４１１−４１４  イニシエータ側ネットワーク・インタフェース（ＮＩ）
４２１−４２４  ルータ
４３１  バスブリッジ
４４１  メモリ側ネットワーク・インタフェース（ＮＩ）
４５１  メモリコントローラ
４６１  メモリ
４７０  ローカルバス
４７１  往路ローカルバス
４７２  復路ローカルバス
４８０  システムバス
４８１  往路システムバス
４８２  復路システムバス
１１０１  メモリ
１１０２  バスブリッジ
１１０３  イニシエータ
２００１−２００３  イニシエータ
２０１１−２０１３  イニシエータ側ネットワーク・インタフェース（ＮＩ）
２０２１−２０２５  ルータ
２０３１−２０３２  メモリ側ネットワーク・インタフェース（ＮＩ）
２０４１−２０４２  メモリコントローラ
２０５１−２０５２  メモリ
２０６１  マイグレータ
２０８１  広帯域リンク
【図１】
2013168427.tif 000019
【図２】
2013168427.tif 000020
【図３】
2013168427.tif 000021
【図４】
2013168427.tif 000022
【図５】
2013168427.tif 000023
【図６】
2013168427.tif 000024
【図７】
2013168427.tif 000025
【図８】
2013168427.tif 000026
【図９】
2013168427.tif 000027
【図１０】
2013168427.tif 000028
【図１１】
2013168427.tif 000029
【図１２】
2013168427.tif 000030
【図１３】
2013168427.tif 000031
【図１４】
2013168427.tif 000032
【図１５】
2013168427.tif 000033
【図１６】
2013168427.tif 000034
【図１７】
2013168427.tif 000035
【図１８】
2013168427.tif 000036
【図１９】
2013168427.tif 000037
【図２０】
2013168427.tif 000038
【図２１】
2013168427.tif 000039
【図２２】
2013168427.tif 000040
【図２３】
2013168427.tif 000041
【図２４】
2013168427.tif 000042
【手続補正書】
【提出日】平成25年10月25日(2013.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスを介して第１ノードと第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記第１ノードに直接接続されるバス制御装置であって、
前記第１ノードから前記第２ノードに向かう２以上の経路を往路群とし、前記第２ノードから前記第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、
前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、
同一の優先度を持つフロー間に適用される、予め定められた選択規則を記憶した選択規則記憶部と、
前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、
決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、
前記ヘッダ情報に基づいて特定される前記経路を利用して、前記第１ノードと前記第２ノードとの間でデータを伝送するデータ送受信部と
を備えた、バス制御装置。
【請求項２】
前記経路負荷検出部は、前記往路群および前記復路群の少なくとも一方の経路群に割り当てられているバスの利用帯域を、前記経路負荷として検出する、請求項１に記載のバス制御装置。
【請求項３】
前記少なくとも一方の経路群は前記往路群であり、
前記経路候補抽出部は前記往路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項４】
前記少なくとも一方の経路群は前記復路群であり、
前記経路候補抽出部は前記復路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項５】
前記選択規則記憶部は、経路に関する制限が無い選択規則、特定の経路を利用する選択規則、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則、およびレート非保証型のフローであることを示す選択規則の少なくとも１つを記憶する、請求項１に記載のバス制御装置。
【請求項６】
前記選択規則記憶部は、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則を記憶しており、
新たなフローとの間で順序性を有する他のフローの経路が既に決定されており、かつ、フローの順序性を示す前記選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、前記他のフローの経路と同一の経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項７】
前記選択規則記憶部は、レート非保証型のフローであることを示す選択規則を記憶しており、
レート非保証型のフローの経路が既に決定されており、かつ、レート非保証型のフローであることを示す前記選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項１に記載のバス制御装置。
【請求項８】
前記選択規則記憶部が、特定の経路を利用する選択規則を記憶しており、かつ、前記特定の経路を利用する選択規則が新たなフローに適用される場合において、
前記経路決定部は、前記経路候補抽出部の抽出結果に拘わらず、前記選択規則によって特定される経路を、前記データを伝送する経路として決定する、請求項５に記載のバス制御装置。
【請求項９】
レート非保証型のフローの経路が既に決定されており、
前記選択規則記憶部がレート非保証型のフローであることを示す選択規則を記憶しており、かつ、前記レート非保証型のフローであることを示す選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項５に記載のバス制御装置。
【請求項１０】
前記選択規則記憶部は、さらに前記第１ノードのフローの優先度を示す優先度情報を保持しており、
前記経路候補抽出部は、前記優先度情報に基づいて、優先度がより低いフローが割り当てられた経路を、前記候補となる経路として抽出する、請求項５に記載のバス制御装置。
【請求項１１】
前記データ送受信部は、パケット方式で前記データを送受信し、
前記ヘッダ構築部は、パケットのヘッダに前記ヘッダ情報を格納する、請求項１に記載のバス制御装置。
【請求項１２】
少なくとも１つの第１ノードと、
少なくとも１つの第２ノ―ドと、
前記少なくとも１つの第１ノードに直接接続された、請求項１から１１のいずれかに記載のバス制御装置と、
前記バス制御装置および前記少なくとも１つの第２ノ―ドとの間に複数の経路を形成するネットワーク化されたバスと、
を備え、前記バスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する、バス制御システム。
【請求項１３】
複数のメモリの各々に割り当てられたデータのフローを交換するマイグレータをさらに備え、
前記複数のメモリは、前記少なくとも１つの第２ノードであり、
前記少なくとも１つの第１ノードから前記複数のメモリとの間には複数の経路が設けられており、
前記マイグレータは、前記複数の経路に割り当てられているバスの利用帯域と、各メモリ上で利用される容量とに基づいて、複数のメモリの各々に割り当てられたデータのフローを交換する、請求項１２に記載のバス制御システム。
【請求項１４】
前記複数の経路は空間的に分離された複数のバスとして構成される、請求項１２に記載のバス制御システム。
【請求項１５】
前記複数の経路はバス上の単一の信号線によって構成される、請求項１２に記載のバス制御システム。
【請求項１６】
前記複数の経路はバス上の単一の信号線を時分割多重することによって構成される、請求項１５に記載のバス制御システム。
【請求項１７】
ネットワーク化された前記バスは、前記複数の経路が設けられたローカルバスと、システムバスとを備えており、
前記ローカルバスと前記システムバスとを接続するバスブリッジをさらに備えた、請求項１２に記載のバス制御システム。
【請求項１８】
請求項１２から１７のいずれかに記載のバス制御システムにおいて用いられるネットワークインタフェースであって、
前記ネットワークインタフェースは、
帯域情報を管理する帯域情報管理部であって、前記帯域情報は、対応する経路に現在割り当てられている、データ伝送単位であるフローの帯域に関する情報である、帯域情報管理部と、
前記第１ノードから前記第２ノードへのデータ、および前記第２ノードから前記第１ノードへのデータを送受信するデータ送受信部と
を備えている、ネットワークインタフェース。
【請求項１９】
前記帯域情報管理部は、前記バス制御システムに包含される前記バス制御装置の経路負荷検出部からの要求に応答して、前記データ送受信部を介して前記帯域情報を出力する、請求項１８に記載のネットワークインタフェース。
【請求項２０】
前記ヘッダ情報に格納された前記復路を示す経路情報に基づいて、前記復路を特定する情報を生成し、宛先を特定する情報とともにパケットのヘッダに格納する復路ヘッダ構築部をさらに備えた、請求項１８に記載のネットワークインタフェース。
【手続補正書】
【提出日】平成26年9月26日(2014.9.26)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つの第１ノードと、
少なくとも１つの第２ノ―ドと、
ネットワーク化されたバスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記少なくとも１つの第１ノードに直接接続されるバス制御装置であって、
前記少なくとも１つの第１ノードから前記少なくとも１つの第２ノードに向かう２以上の経路を往路群とし、前記少なくとも１つの第２ノードから前記少なくとも１つの第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、
前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、
予め定められた選択規則を記憶した選択規則記憶部と、
前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、
決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、
前記ヘッダ情報に基づいて特定される前記経路を利用して、前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送するデータ送受信部と、
を備えたバス制御装置と、
前記バス制御装置および前記少なくとも１つの第２ノ―ドとの間に複数の経路を形成するネットワーク化されたバスと、
複数のメモリの各々に割り当てられた、データ伝送単位であるデータのフローを交換するマイグレータと、
を備え、
前記バスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送し、
前記複数のメモリは、前記少なくとも１つの第２ノードであり、
前記少なくとも１つの第１ノードから前記複数のメモリとの間には複数の経路が設けられており、
前記マイグレータは、前記複数の経路に割り当てられているバスの利用帯域と、各メモリ上で利用される容量とに基づいて、複数のメモリの各々に割り当てられた前記フローを交換する、バス制御システム。
【請求項２】
少なくとも１つの第１ノードと、
少なくとも１つの第２ノ―ドと、
ネットワーク化されたバスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する、半導体回路のバス制御システムにおいて、前記少なくとも１つの第１ノードに直接接続されるバス制御装置であって、
前記少なくとも１つの第１ノードから前記少なくとも１つの第２ノードに向かう２以上の経路を往路群とし、前記少なくとも１つの第２ノードから前記少なくとも１つの第１ノードに向かう２以上の経路を復路群としたときにおいて、前記往路群および前記復路群の少なくとも一方の経路群に関して各経路の負荷を検出する経路負荷検出部と、
前記少なくとも一方の経路群の経路負荷が均一化されるように、前記経路群の中から候補となる経路を抽出する経路候補抽出部と、
予め定められた選択規則を記憶した選択規則記憶部と、
前記経路候補抽出部の抽出結果、および前記選択規則記憶部に記憶された選択規則に基づいて、データを伝送する経路を決定する経路決定部と、
決定された前記経路を示す経路情報を格納したヘッダ情報を生成するヘッダ構築部と、
前記ヘッダ情報に基づいて特定される前記経路を利用して、前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送するデータ送受信部と、
を備えたバス制御装置と、
前記バス制御装置および前記少なくとも１つの第２ノ―ドとの間に複数の経路を形成するネットワーク化されたバスであって、前記複数の経路が設けられたローカルバスと、システムバスとを有するネットワーク化されたバスと、
前記ローカルバスと前記システムバスとを接続するバスブリッジと、
を備え、
前記バスを介して前記少なくとも１つの第１ノードと前記少なくとも１つの第２ノードとの間でデータを伝送する、バス制御システム。
【請求項３】
前記経路負荷検出部は、前記往路群および前記復路群の少なくとも一方の経路群に割り当てられているバスの利用帯域を、前記経路負荷として検出する、請求項１または２に記載のバス制御システム。
【請求項４】
前記少なくとも一方の経路群は前記往路群であり、
前記経路候補抽出部は前記往路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１または２に記載のバス制御システム。
【請求項５】
前記少なくとも一方の経路群は前記復路群であり、
前記経路候補抽出部は前記復路群の経路のうち、前記経路負荷が最も小さくなる経路を、前記候補となる経路として抽出する、請求項１または２に記載のバス制御システム。
【請求項６】
前記選択規則記憶部は、経路に関する制限が無い選択規則、特定の経路を利用する選択規則、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則、およびレート非保証型のフローであることを示す選択規則の少なくとも１つを記憶する、請求項１または２に記載のバス制御システム。
【請求項７】
前記選択規則記憶部は、データ伝送単位であるフローが複数存在する場合におけるフローの順序を示す選択規則を記憶しており、
新たなフローとの間で順序性を有する他のフローの経路が既に決定されており、かつ、フローの順序性を示す前記選択規則が新たなフローに適用される場合において、前記経路候補抽出部は、前記他のフローの経路と同一の経路を、前記候補となる経路として抽出する、請求項１または２に記載のバス制御システム。
【請求項８】
前記選択規則記憶部は、レート非保証型のフローであることを示す選択規則を記憶しており、
レート非保証型のフローの経路が既に決定されており、かつ、レート非保証型のフローであることを示す前記選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項１または２に記載のバス制御システム。
【請求項９】
前記選択規則記憶部が、特定の経路を利用する選択規則を記憶しており、かつ、前記特定の経路を利用する選択規則が新たなフローに適用される場合において、
前記経路決定部は、前記経路候補抽出部の抽出結果に拘わらず、前記選択規則によって特定される経路を、前記データを伝送する経路として決定する、請求項６に記載のバス制御システム。
【請求項１０】
レート非保証型のフローの経路が既に決定されており、
前記選択規則記憶部がレート非保証型のフローであることを示す選択規則を記憶しており、かつ、前記レート非保証型のフローであることを示す選択規則が新たなフローに適用される場合において、
前記経路候補抽出部は、既存の前記レート非保証型のフローの経路とは異なる経路を、前記候補となる経路として抽出する、請求項６に記載のバス制御システム。
【請求項１１】
前記選択規則記憶部は、さらに前記少なくとも１つの第１ノードのフローの優先度を示す優先度情報を保持しており、
前記経路候補抽出部は、前記優先度情報に基づいて、優先度がより低いフローが割り当てられた経路を、前記候補となる経路として抽出する、請求項６に記載のバス制御システム。
【請求項１２】
前記データ送受信部は、パケット方式で前記データを送受信し、
前記ヘッダ構築部は、パケットのヘッダに前記ヘッダ情報を格納する、請求項１または２に記載のバス制御システム。
【請求項１３】
前記複数の経路は空間的に分離された複数のバスとして構成される、請求項１または２に記載のバス制御システム。
【請求項１４】
前記複数の経路はバス上の単一の信号線によって構成される、請求項１または２に記載のバス制御システム。
【請求項１５】
前記複数の経路はバス上の単一の信号線を時分割多重することによって構成される、請求項１４に記載のバス制御システム。
【請求項１６】
請求項１から１５のいずれかに記載のバス制御システムにおいて用いられるネットワークインタフェースであって、
前記ネットワークインタフェースは、
帯域情報を管理する帯域情報管理部であって、前記帯域情報は、対応する経路に現在割り当てられている、データ伝送単位であるフローの帯域に関する情報である、帯域情報管理部と、
前記少なくとも１つの第１ノードから前記少なくとも１つの第２ノードへのデータ、および前記少なくとも１つの第２ノードから前記少なくとも１つの第１ノードへのデータを送受信するデータ送受信部と
を備えている、ネットワークインタフェース。
【請求項１７】
前記帯域情報管理部は、前記バス制御システムに包含される前記バス制御装置の経路負荷検出部からの要求に応答して、前記データ送受信部を介して前記帯域情報を出力する、請求項１６に記載のネットワークインタフェース。
【請求項１８】
前記ヘッダ情報に格納された前記復路を示す経路情報に基づいて、前記復路を特定する情報を生成し、宛先を特定する情報とともにパケットのヘッダに格納する復路ヘッダ構築部をさらに備えた、請求項１６に記載のネットワークインタフェース。
【国際調査報告】
2013168427.tif 000043
2013168427.tif 000044
2013168427.tif 000045
2013168427.tif 000046