(57)【要約】  伝送速度が異なるバスを相互接続した構成で、予め想定した伝送品質を維持することを可能とする技術を提供する。  半導体回路のバスシステムは、第１伝送レートを有する分散型の第１バス、および第１伝送レートよりも速い第２伝送レートを有する第２バスと、送信ノードと、送信ノードを第１バスに接続するバスインタフェース（ＩＦ）と、第１および第２バスを接続するルータと、第２バスに接続された受信ノードとを備えている。バスＩＦは、ルータからの、各伝送経路の送信量に関する情報に基づいて、第１バスの各伝送経路を流れるデータの流量を制御する。ルータは、所定の基準に従って第１バスの各伝送経路にデータ送信量を割り当て、各伝送経路の送信量に関する情報をバスＩＦに通知する。またルータは、第２バスに流れるデータの流量を制御する。
2014073188.tif 000002
【特許請求の範囲】
【請求項１】
第１伝送レートを有する第１バス、および前記第１伝送レートよりも速い第２伝送レートを有する第２バスと、
データを送信する第１ノードと、
前記第１ノードを前記第１バスに接続するバスインタフェースと、
前記第１バスおよび前記第２バスを接続するルータと、
前記第２バスに接続され、前記データを受信する第２ノードと
を備えた半導体回路のバスシステムであって、
前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、
前記ルータは、
所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、
前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、
前記第２バスに流れる前記データの流量を制御する第２制御部と
を備え、
前記バスインタフェースは、
前記第１ノードから受け取った前記データを、前記第１バスの各伝送経路に転送する転送処理部と、
前記ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部と
を備えた、半導体回路のバスシステム。
【請求項２】
前記第２制御部は、前記第１バスの各伝送経路のスループット、および前記第２バスのスループットを利用して、前記第２バスに流れる前記データの流量を制御する、請求項１に記載のバスシステム。
【請求項３】
前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、
前記所定の基準として、前記第１バスの各伝送経路の送信可能なパケット数の上限値の情報が予め定められており、
前記ルータの割当部は、前記上限値の情報に従って、前記各伝送経路に送信可能なデータ送信量を割り当てる、請求項１または２に記載のバスシステム。
【請求項４】
前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、
前記ルータの割当部は、前記所定の基準として、前記第１バスの各伝送経路のスループットに従って、前記各伝送経路に送信可能なデータ送信量を割り当てる、請求項１または２に記載のバスシステム。
【請求項５】
前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、
前記ルータの割当部は、前記パケット数の上限値の情報に加えて、さらに前記第１バスの各伝送経路のスループットの情報を前記所定の基準として用いて、前記各伝送経路に送信可能なデータ送信量を割り当てる、請求項３に記載のバスシステム。
【請求項６】
前記ルータの割当部は、前記第１バスの全ての伝送経路のスループットに対する各伝送経路のスループットの割合に従って、前記各伝送経路に送信可能なデータ送信量を割り当てる、請求項４または５に記載のバスシステム。
【請求項７】
前記第２ノードは、前記第１ノードにデータを送信することが可能であり、
前記ルータ処理部は、前記第２ノードから受け取ったデータを、前記第１バスを介して前記第１ノードに転送する、請求項１に記載のバスシステム。
【請求項８】
前記ルータ処理部は、前記第２ノードから受け取ったデータを、前記第１バスの複数の伝送経路を介して前記第１ノードに転送する、請求項７に記載のバスシステム。
【請求項９】
第１伝送レートを有する第１バス、および前記第１伝送レートよりも速い第２伝送レートを有する第２バスと、
各々がデータを送信する複数の第１ノードと、
前記複数の第１ノードの各々を前記第１バスに接続する複数のバスインタフェースと、
前記第１バスおよび前記第２バスを接続するルータと、
前記第２バスに接続され、前記データを受信する、少なくとも１つの第２ノードと
を備えた半導体回路のバスシステムであって、
前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、
前記ルータは、
所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、
前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、
前記第２バスに流れる前記データの流量を制御する第２制御部であって、前記複数の第１ノードから受け取った複数のデータを、第１ノード毎に保証すべき伝送レートを確保できるよう集約して、前記第２ノードに伝送する、第２制御部と
を備え、
各バスインタフェースは、
接続された第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、
保証されるべき伝送レートに基づいて制限された伝送帯域、および、前記ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部と
を備えた、半導体回路のバスシステム。
【請求項１０】
保証されるべき伝送レートに基づいて制限された前記伝送帯域は、前記ルータ、または前記ルータとは異なるルータによって制限された伝送帯域である、請求項９に記載のバスシステム。
【請求項１１】
第１伝送レートを有する第１バス、前記第１伝送レートよりも遅い第２伝送レートを有する第２バス、および前記第２バスよりも速い第３バスと、
データを送信する第１ノードと、
前記第１ノードを前記第１バスに接続するバスインタフェースと、
前記第１バスおよび前記第２バスを接続する第１ルータと、
前記第２バスおよび前記第３バスを接続する第２ルータと、
前記第３バスに接続され、前記データを受信する第２ノードと
を備えた半導体回路のバスシステムであって、
前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、
前記第１ルータは、
所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、
前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、
前記第２バスに流れる前記データの流量を制御する第２制御部と
を備え、
前記第２ルータは、
前記第２バスの各伝送経路を流れる前記データを受け取って前記第３バスに転送するルータ処理部と、
前記第３バスに流れる前記データの流量を制御する第２制御部と
を備え、
前記バスインタフェースは、
前記第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、
前記第１ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部と
を備えた、半導体回路のバスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体回路のバスシステムに関する。
【背景技術】
【０００２】
図１（ａ）は、集中型のバス制御の例を示す。集中型のバス制御を行う従来の集積回路では、主に複数のバスマスタとメモリとの間は１つのバスによって接続され、アービターによって各バスマスタからメモリへのアクセスが調停される。しかし、集積回路の高機能化、マルチコア化により、回路の規模が増大し、トラヒックも複雑に変動しながらバスを流れており、集中型のバス制御による集積回路の設計が困難になってきている。【０００３】
その一方で、近年、並列計算機での接続技術や、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）網などのネットワーク制御の技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図１（ｂ）は、分散型のバス制御の例を示す。分散型のバスを有する半導体集積回路は、複数のルータが複数のバスで接続されて構成されている。近年、図１（ｂ）に示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送するネットワークオンチップ（Ｎｅｔｗｏｒｋ ｏｎ Ｃｈｉｐ）の取り組みがある。【０００４】
分散型のバス制御を行うＮｏＣ上でも、バスのトラヒックは増加する傾向にあり、バスの伝送性能の向上が求められている。バスの伝送性能を維持するためには、トラヒックの増加にあわせて、伝送路を並列化して高速化する方法が考えられる。【０００５】
特許文献１は、イーサネット（登録商標）規格のネットワーク（通信網）において複数の通信端末が伝送路を共有しながら通信を行う、一般的な通信システムを開示する。特許文献１は、伝送路を並列化して高速化する方法として、必要に応じて、１つの送信端末が複数の伝送路を使用して広帯域化を図る通信方式を提案している。【０００６】
図２は、特許文献１に記載された通信システムの構成を示している。この通信システムでは、伝送路よりも左側に記載された送信端末と、伝送路よりも右側に記載された受信端末とが、複数の伝送路を用いてより高速な通信を行う。【０００７】
従来技術では、伝送路毎の通信品質を往復伝搬遅延時間（ＲＴＴ）として計測する。ＲＴＴが大きい場合は、伝送路は混雑していると判断し、送信レートを下げる。逆に、ＲＴＴが小さい場合は、伝送路は空いていると判断し、送信レートを上げる。従って、従来技術では伝送路が混雑して破綻するまで伝送を行い、輻輳制御を行うため、予め想定した伝送品質を維持してデータを伝送するのは難しい（特許文献１、非特許文献１）。【０００８】
イーサネット（登録商標）回線を用いるような一般のネットワークでは、ルータのバッファでのパケットの溢れなどの破綻が生じた場合には、ルータが自動的にパケットを廃棄する。一方、ＮｏＣでは、一般のネットワークと異なり、ルータはパケットを廃棄しない。その理由は、ＮｏＣでは、ネットワークに接続されるバスマスタ等が予め想定され、ネットワーク上を流れるトラヒックデータのデータ量を見込むことができるため、パケットを廃棄しなくてもよいよう、ＮｏＣを設計できるからである。【０００９】
したがって、一般のネットワークに適用されてきた技術を、ＮｏＣにそのまま適用することはできない。バスの伝送性能を維持するために、これまでの技術を用いて伝送路を並列化して高速化することは困難である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−４９７４２号公報
【非特許文献】
【００１１】
【非特許文献１】マルチパス環境における高速高信頼トランスポートプロトコルの性能評価、電子情報通信学会信学技法、２００５．２
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ＮｏＣにおいても、バスの伝送性能を維持するために、データの伝送効率をより高めることが求められている。【００１３】
本願の、限定的ではない例示的なある実施形態は、たとえば、集積回路上の複数のノードがバスで接続され、分散型のバス制御が行われるＮｏＣにおいて、効率的なパケット伝送を実現する技術を提供する。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明の一態様は、第１伝送レートを有する第１バス、および前記第１伝送レートよりも速い第２伝送レートを有する第２バスと、データを送信する第１ノードと、前記第１ノードを前記第１バスに接続するバスインタフェースと、前記第１バスおよび前記第２バスを接続するルータと、前記第２バスに接続され、前記データを受信する第２ノードとを備えた半導体回路のバスシステムであって、前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、前記バスインタフェースは、前記第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、前記ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部とを備え、前記ルータは、所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、前記第２バスに流れる前記データの流量を制御する第２制御部とを備えた、半導体回路のバスシステムを含む。【００１５】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１６】
本発明の一態様にかかる半導体回路のバスシステムによれば、半導体システムのデータ伝送において、伝送速度が異なるバスを相互接続していても、バスの混雑を回避し、バス動作周波数を抑制したバスの広帯域化が可能になる。
【図面の簡単な説明】
【００１７】
【図１】（ａ）は集中型のバス制御の例を示す図であり、（ｂ）は分散型のバス制御の例を示す図である。
【図２】従来の文献に記載された通信システムの構成を示す図である。
【図３】例示的な実施形態による伝送システムの構成例を示す図である。
【図４】パケット６００の伝送フォーマットの一例と、パケット６００を複数のフリットに分割した例とを示す図である。
【図５】例示的な実施形態によるルータ６００の構成を示す図である。
【図６】ルータ６００の動作手順を示すフローチャートである。
【図７】ローカルバスとシステムバスとの関係を具体的に示す図である。
【図８】システムバス１０に接続されているローカルバスの構成を示す図である。
【図９】システムバス上のメモリとルータにおいてトラヒックの干渉が生じている例を模式的に示す図である。
【図１０】例示的な実施形態による半導体回路のバスシステム１００の構成を示す図である。
【図１１】往路での並列伝送時におけるＮＩＣ８０３の動作手順を示すフローチャートである。
【図１２】往路での並列伝送時におけるＮＩＣ８０３とルータＧＷ８０７との動作シーケンスを示す図である。
【図１３】ローカルバスの伝送経路１〜３を模式的に示す図である。
【図１４】図１３に示す伝送経路１〜３の各伝送量の割当規則を示す図である。
【図１５】往路での並列伝送時における、ルータＧＷの処理手順を示すフローチャートである。
【図１６】往路での並列伝送時におけるＮＩＣとルータＧＷとの動作シーケンスを示す図である。
【図１７】復路における伝送帯域のギャップに対応するための処理の手順を示す図である。
【図１８】３つの伝送経路４〜６を用いてデータを伝送する態様を示す図である。
【図１９】システムバスとローカルバスで生じる伝送帯域のギャップに対応する処理の手順を示すフローチャートである。
【図２０】プロセッサと伝送経路との対応付けを示す図である。
【図２１】３つのバスマスタであるプロセッサから伝送されるトラヒックと保証レートとを示す図である。
【図２２】クラスに応じた調停順位を示す図である。
【図２３】往路における保証レートを超えた伝送処理の手順を示すフローチャートである。
【図２４】データが、主経路と、空き帯域のある伝送経路とを用いて伝送される様子を示す図である。
【図２５】（ｉ）は主経路の帯域の割当状況を示す図であり、（ｉｉ）は空き帯域が存在する、主経路以外の伝送経路の帯域の割当状況を示す図である。
【図２６】複数のＳｏＣを相互接続する場合に適用する場合の例を示す図である。
【発明を実施するための形態】
【００１８】
本願発明者らは、上述した従来の技術の問題を検討した。
【００１９】
集積回路上の複数のノードがバスで接続され、分散型のバス制御が行われるＮｏＣのバスの伝送性能を維持するためには、トラヒックの増加にあわせて、バス動作周波数を高めていくか、バス幅を大きくする必要がある。しかしながら、バス動作周波数を高めると消費電力が高くなり、バス幅を大きくすると配線の混雑を引き起こしやすくなる。
【００２０】
これらの課題を解決するためのアプローチとして、機能ブロック（たとえば、映像、音声、ペリフェラルの各ブロック）に応じて、バス幅やバス動作周波数を変更する構成が採用されている。例えば、機能ブロック単位で構成されるローカルバスと、機能ブロック間を相互接続するシステムバスとを有する半導体バスシステムが構築されている。システムバスを設けることにより、機能ブロック間やバスマスタ間でメモリ上のデータを共有することが可能となる。このような構成において、ローカルバスのバス動作周波数はシステムバスのバス動作周波数よりも低く設定される。つまり、ローカルバスの伝送速度が相対的に低くなり、システムバスの動作速度が相対的に高くなる。これにより、ＮｏＣのバス伝送性能の維持を図っている。
【００２１】
しかしながら、このような半導体バスシステムでは、ローカルバスとシステムバスとが接続されるノードにおいて、伝送帯域のギャップに起因してデータ処理の停滞が生じやすい。また、システムバスではローカルバス間のトラヒック干渉が生じやすく、伝送可能なトラヒック量が時々刻々と変化する。以上の原因で、ローカルバスとシステムバスを接続するルータや、ローカルバス、システムバスにおいて、混雑が発生しやすくなる。よって、伝送性能が異なるバスを介してトラヒックを伝送する際には、伝送性能（スループットや遅延）を維持することが困難である。
【００２２】
そこで本開示は、複数の送信ノードで伝送路を共有しつつ、伝送速度が異なるバスが相互接続されたネットワークモデルに対して、予め想定した伝送品質を維持しながら、複数の伝送路を活用したバスの広帯域化を実現する技術を提供する。
【００２３】
本発明の一態様の概要は以下のとおりである。
【００２４】
本発明の一態様であるバスシステムは、第１伝送レートを有する第１バス、および前記第１伝送レートよりも速い第２伝送レートを有する第２バスと、データを送信する第１ノードと、前記第１ノードを前記第１バスに接続するバスインタフェースと、前記第１バスおよび前記第２バスを接続するルータと、前記第２バスに接続され、前記データを受信する第２ノードとを備えた半導体回路のバスシステムであって、前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、前記ルータは、所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、前記第２バスに流れる前記データの流量を制御する第２制御部とを備え、前記バスインタフェースは、前記第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、前記ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部とを備えている。
【００２５】
例示的なある実施形態において、前記第２制御部は、前記第１バスの各伝送経路のスループット、および前記第２バスのスループットを利用して、前記第２バスに流れる前記データの流量を制御する。
【００２６】
例示的なある実施形態において、前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、前記所定の基準として、前記第１バスの各伝送経路の送信可能なパケット数の上限値の情報が予め定められており、前記ルータの割当部は、前記上限値の情報に従って、前記各伝送経路に送信可能なデータ送信量を割り当てる。
【００２７】
例示的なある実施形態において、前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、前記ルータの割当部は、前記所定の基準として、前記第１バスの各伝送経路のスループットに従って、前記各伝送経路に送信可能なデータ送信量を割り当てる。
【００２８】
例示的なある実施形態において、前記バスインタフェースの転送処理部は、前記第１ノードから受け取ったデータを、パケット化して前記第１バスの各伝送経路に転送し、前記ルータの割当部は、前記パケット数の上限値の情報に加えて、さらに前記第１バスの各伝送経路のスループットの情報を前記所定の基準として用いて、前記各伝送経路に送信可能なデータ送信量を割り当てる。
【００２９】
例示的なある実施形態において、前記ルータの割当部は、前記第１バスの全ての伝送経路のスループットに対する各伝送経路のスループットの割合に従って、前記各伝送経路に送信可能なデータ送信量を割り当てる。
【００３０】
例示的なある実施形態において、前記第２ノードは、前記第１ノードにデータを送信することが可能であり、前記ルータ処理部は、前記第２ノードから受け取ったデータを、前記第１バスを介して前記第１ノードに転送する。
【００３１】
例示的なある実施形態において、前記ルータ処理部は、前記第２ノードから受け取ったデータを、前記第１バスの複数の伝送経路を介して前記第１ノードに転送する。
【００３２】
本発明の他の一態様であるバスシステムは、第１伝送レートを有する第１バス、および前記第１伝送レートよりも速い第２伝送レートを有する第２バスと、各々がデータを送信する複数の第１ノードと、前記複数の第１ノードの各々を前記第１バスに接続する複数のバスインタフェースと、前記第１バスおよび前記第２バスを接続するルータと、前記第２バスに接続され、前記データを受信する、少なくとも１つの第２ノードとを備えた半導体回路のバスシステムであって、前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、前記ルータは、所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、前記第２バスに流れる前記データの流量を制御する第２制御部であって、前記複数の第１ノードから受け取った複数のデータを、第１ノード毎に保証すべき伝送レートを確保できるよう集約して、前記第２ノードに伝送する、第２制御部とを備え、各バスインタフェースは、接続された第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、保証されるべき伝送レートに基づいて制限された伝送帯域、および、前記ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部とを備えている。
【００３３】
例示的なある実施形態において、保証されるべき伝送レートに基づいて制限された前記伝送帯域は、前記ルータ、または前記ルータとは異なるルータによって制限された伝送帯域である。
【００３４】
本発明のさらに他の一態様であるバスシステムは、第１伝送レートを有する第１バス、前記第１伝送レートよりも遅い第２伝送レートを有する第２バス、および前記第２バスよりも速い第３バスと、データを送信する第１ノードと、前記第１ノードを前記第１バスに接続するバスインタフェースと、前記第１バスおよび前記第２バスを接続する第１ルータと、前記第２バスおよび前記第３バスを接続する第２ルータと、前記第３バスに接続され、前記データを受信する第２ノードとを備えた半導体回路のバスシステムであって、前記第１バスは、前記バスインタフェースから前記ルータへ至る伝送経路を複数有する分散型バスであり、前記第１ルータは、所定の基準に従って前記第１バスの各伝送経路に送信可能なデータ送信量を割り当て、各伝送経路の送信量に関する前記情報を前記バスインタフェースに通知する割当部と、前記第１バスの各伝送経路を流れる前記データを受け取って前記第２バスに転送するルータ処理部と、前記第２バスに流れる前記データの流量を制御する第２制御部とを備え、前記第２ルータは、前記第２バスの各伝送経路を流れる前記データを受け取って前記第３バスに転送するルータ処理部と、前記第３バスに流れる前記データの流量を制御する第２制御部とを備え、前記バスインタフェースは、前記第１ノードから受け取ったデータを、前記第１バスの各伝送経路に転送する転送処理部と、前記第１ルータから通知された、各伝送経路の送信量に関する情報に基づいて、前記第１バスの各伝送経路を流れるデータの流量を制御する第１制御部とを備え、ている。
【００３５】
以下、添付の図面を参照しながら、本開示による伝送装置および伝送方法の実施形態を説明する。
【００３６】
なお、以下の説明では、「バスマスタ」は、たとえばプロセッサや画像処理などの演算処理を行うノードである。バスマスタはトラヒックを送信する役割を有しているため、「送信ノード」と呼ぶことがある。また、「スレーブ」は、たとえばメモリ（メモリコントローラも含む）やＩ／Ｏである。スレーブはトラヒックを受信する役割を有しているため、「受信ノード」または「宛先ノード」と呼ぶことがある。本実施形態では、スレーブはメモリであるとして説明する。
【００３７】
＜１．システム構成＞
図３は、本実施形態による伝送システムの構成例を示す。図示されるシステムは、送信ノードとして８個のバスマスタ（ＢＭ）１０１を有し、受信ノードとして８個のメモリ１０５を有している。これら複数のバスマスタ１０１および複数のメモリ１０５は、１２個のルータ６００を介してバスで多段に接続されている。図３に示されるネットワーク構成は、いわゆるメッシュ網と呼ばれる。
【００３８】
このように、図３に示す伝送システムは、多段接続網（Ｍｕｌｔｉｓｔａｇｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋ：ＭＩＮ）を構成している。
【００３９】
本実施形態におけるバスマスタ１０１は、例えばプロセッサやＤＳＰなどの、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ１０５は、例えばＤＲＡＭやＳＲＡＭ等の半導体メモリである。なお、本開示の実施形態としては、メモリ１０５を、プロセッサ、ＤＳＰ、Ｉ/Ｏなど、メモリ以外のノードを接続する形態で構成してもよい。ルータ６００は、例えば半導体回路であり、複数のバスマスタ１０１および複数のメモリ１０５の間で伝送されるデータを中継する機能を備えている。
【００４０】
バスマスタ１０１からメモリ１０５へのデータ伝送は、パケット交換方式により行われる。各バスマスタは、図３（ａ）に示すように、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接のルータに送信する。１つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造の詳細は後述する。
【００４１】
図３に示す多段接続網を構成する各ルータは、２入力２出力のクロスバスイッチを備えている。各ルータは、図３（ｂ）に示すように、クロスバスイッチを切り替えることによって入力と出力の組合せを変更することができる。このため、トラヒックの流れを２つの伝送経路（伝送経路１、２）の間で切り替えることができる。出力先の伝送経路が異なっていれば、ルータは２つのトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各ルータでのスイッチの切り替えによって、全バスマスタと全メモリ間で、必ず１つ以上の伝送経路を構築することができる。
【００４２】
メッシュ網では、複数の送信ノードで伝送路を共有しつつ、必要に応じて、１つの送信ノードが複数の伝送路を使用して、広帯域化を図る通信方式を適用することが可能である。なお、本実施形態においてはメッシュ網を例に挙げて説明するが、これは一例である。集積回路の構成がその他のトポロジー（例えば、バタフライ網）であっても本開示を適用することが可能である。
【００４３】
＜２．パケット、フリットの構成＞
次に、本実施形態におけるパケットおよびフリットの構造を説明する。なお、本実施形態では、パケットまたはフリットを例として説明しているが、伝送に際してパケット化することは設計事項に過ぎない。パケットまたはフリットを一般化して、単に「データ」と呼んでもよい。
【００４４】
図４は、パケット６００の伝送フォーマットの一例と、パケット６００を複数のフリットに分割した例とを示している。パケット６００は、ヘッダフィールド６０１、データフィールド６０２、および制御コードフィールド６０３を有している。
【００４５】
ヘッダフィールド６０１には、たとえば、送信先のアドレス、送信元のアドレス、パケットの送信されてからの経過時間を示す情報（経時情報）が記述される。経時情報の記述方法は任意であり、送信されてから経過した時間を判別できる値であればどのような記述方法であっても良い。例えば、送信された時刻が直接記載されてもよいし、送信されてからの経過時刻、また、現在までに通過したルータの数（ホップ数）などが記載されても良い。各ルータはパケット６００を中継する度に、ホップ数をインクリメントしてもよいし、予め定められた最大ホップ数を順にデクリメントさせてもよい。
【００４６】
ヘッダフィールド６０１には、上記以外の情報が記述されていてもよい。ヘッダフィールド６０１のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット６００の中継処理と、受信側での受信処理とが行われる。
【００４７】
データフィールド６０２には、例えば、映像データや音声データなどが記述される。制御コードフィールド６０３には、例えば、予め定められたパケット６００の終了コードが記述される。ルータは、終了コードを検出することによってパケット６００の末尾を判別できる。制御コードフィールド６０３には、終了コード以外の情報が格納されていてもよい。
【００４８】
送信側のバスマスタ１０１は、前述のように、パケット６００を、フリットと呼ばれる小さなパケット単位に分解して伝送する。１フリットのサイズは、バスを使って１サイクルで伝送可能なサイズであり、バス幅に応じて決定される。パケット６００は、ヘッダフリット６０４、複数のデータフリット６０５、およびテイルフリット６０６に分割される。
【００４９】
ヘッダフリット６０４には、上記のヘッダフィールド６０１に格納されたフラグ情報や送信先アドレス情報などが含まれる。
【００５０】
ヘッダフリット６０４に続く各フリット（データフリット６０５、テイルフリット６０６）には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット６０４に続く各フリットは、ヘッダフリット６０４と同じ宛先に送られるためである。ヘッダフリット６０４によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファ６０６が決まると、後に続くフリットは、ヘッダフリット６０４と同じ出力バッファ６０６を利用してヘッダフリット６０４が示す宛先に伝送される。
【００５１】
テイルフリット６０６には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報（制御コードフィールド６０３に格納されている終了コード）が付与されている。また、ヘッダフリット６０４とテイルフリット６０６以外の複数のフリット６０５は、主にデータを伝送するフリット（データフリット）であり、パケット６００のデータフィールド６０２に対応する。
【００５２】
受信側のメモリ１０５は、テイルフリット６０６に記述されたフラグ情報（終了コード）を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
【００５３】
１パケットのサイズは、例えば１２８バイトであり、１フリットのサイズは、例えば３２ビットまたは６４ビットに設定される。ただし、１パケットのサイズおよび１フリットのサイズはアプリケーションによって異なり得るため、上記のサイズは一例に過ぎない。１フリットの長さは、送信先のアドレスや送信元のアドレスなどの制御データを記述できる長さを基準としてもよい。
【００５４】
後述するように、各ルータは、送られてきたフリットを蓄えるためのバッファを備えている。フリットは、一旦そのバッファに蓄えられた後、スイッチの切り替えによって宛先のメモリへと続くルータ、または宛先のメモリへ送信される。
【００５５】
＜３．ルータの構成および動作＞
＜３．１．ルータの概略構成＞
図５は、ルータ６００の構成を示す。図６は、ルータ６００の動作手順を示すフローチャートである。
【００５６】
ルータ６００は、複数の入力ポート６１３および出力ポート６１５を備えている。前段のルータ（群）６００ａから入力ポート６１３を経由してフリットを受け取り、出力ポート６１５を介して、後段のルータ（群）６００ｂにフリットを送出する。
【００５７】
ルータ６００は、入力バッファ２０３と、スイッチ２０４と、ルーティング処理部２０５と、バッファアロケータ部２０６と、スイッチアロケータ部２０７とを有している。以下、図６の各ステップを説明しながら、ルータ６００の各構成要素の機能または動作を説明する。
【００５８】
まずルータ６００は、入力ポート６１３において隣接ルータ（群）６００ａからのフリットを受信し、受信したフリットを入力バッファ２０３に格納する（Ｓ３０１）。ルーティング処理部２０５はフリットの転送先のノードを決定する（Ｓ３０２）。次に、バッファアロケータ部２０６は、隣接する後段のルータ（群）６００ｂのどの入力バッファにフリットを格納するかを決定する（Ｓ３０３）。スイッチアロケータ部２０７は、入力バッファ２０３と転送先のルータのバッファ２０３とを対応付けてスイッチを設定する（Ｓ３０４）。スイッチアロケータ部２０７がスイッチを接続することにより、出力ポート６１５を介してフリットが転送先のルータ２０２のバッファへ送信される（Ｓ３０５）。
【００５９】
なお、図５の隣接ルータ（群）６００ａおよび６００ｂに代えて、それぞれバスマスタおよび／またはメモリが設けられていてもよい。
【００６０】
図７および図８は、ローカルバスとシステムバスとの関係を具体的に示している。
【００６１】
図７に例示されるように、半導体バスシステムは、複数のローカルバス（ローカルバス１〜３）を備えている。そして基幹となるシステムバス１０が、それらローカルバスを相互に接続している。換言すると、１つのシステムバス１０が、ローカルバス１〜３を集約している。
【００６２】
図７はまた、システムバス１０においてトラヒックの干渉が生じている例を模式的に示している。システムバス１０がローカルバス１〜３を集約しているため、システムバス１０では、各ローカルバスからメモリへ向かうトラヒックが干渉することがある。図７に示される二種類の破線は、それぞれトラヒックを表している。共通のメモリへアクセスするトラヒック同士がシステムバス１０上で干渉するため、システムバス１０では、伝送可能なトラヒック量は時間的に変動する。
【００６３】
図８は、システムバス１０に接続されているローカルバスの構成を示している。図３に関連して説明したように、ローカルバスは、３つのバスマスタ（ＢＭ１〜ＢＭ３）がバスを共有できるよう、メッシュ型で構成されている。バスインタフェース（Ｉ／Ｆ）とも呼ばれるＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）は、バスマスタとルータとを接続するために設けられており、バスマスタから出力されるデータをパケット化してルータに送信し、ルータから受け取ったパケットを脱パケット化し、得られたデータをバスマスタに送信する。
【００６４】
また、ＮＩＣは並列的にデータを伝送するかどうかの判断と、伝送経路の伝送量を制御する。図８には、空き経路を活用したトラヒックの伝送例が模式的に示されている。図７の例では、バスマスタＢＭ２から出力されたデータのトラヒックが３つの伝送経路で並列的に伝送されている。図８に示される三本の破線の各々は、別個のトラヒックを表している。なお、バスマスタＢＭ２とＮＩＣとの間の伝送経路は３つのトラヒックを同時に伝送できる帯域が確保されているとする。
【００６５】
ローカルバスは、ルータＧＷを介してシステムバス１０と接続されている。ルータＧＷは、システムバスの伝送速度とローカルバスの伝送速度との違いを吸収するために、比較的大きい容量のバッファを備えている。ルータＧＷは速度変換ルータとも呼ばれることがある。
【００６６】
各バスマスタには、主経路が予め定義されている。主経路とは、バスマスタが、システムバスとローカルバスとを相互に接続するルータＧＷ（ゲートウェイ）までトラヒックを送信する際に、主として利用する伝送経路である。図８に示されるように、バスマスタＢＭ１に関してはバスマスタＢＭ１からルータＧＷまでの最短経路が主経路として定義されている。図の例では、全てのバスマスタの主経路は最短経路で定義されている。主経路は設計者が自由に設定することが可能である。
【００６７】
並列伝送に使用する伝送経路の数や、ローカルバスやシステムバスでのトラヒック干渉などにより、伝送できるトラヒック量は時間的に変動する。特定のバスマスタがあまりに大量のトラヒックを送信すると、他のバスマスタが伝送できるトラヒック量が大幅に減少し、必要な処理ができなくなる。そこで、バスマスタ毎の伝送可能なデータ量（伝送量）が定義されている。すなわち、各バスマスタには予め「パケットの最大送信数」が定義されている。バスマスタは、パケットの最大送信数を上限とする数のパケットをネットワーク上に送信することができる。パケットの最大送信数が定義されることにより、１回の送信処理によって連続して送信可能なパケット数を制限することができる。
【００６８】
パケットを送信したバスマスタは、送信したパケットに対する応答パケットをスレーブ（宛先のノード）から受信した場合には、受信した応答パケットの分だけパケットをさらに送信することができる。従って、伝送路上にはそのバスマスタから送信されたパケットが、最大でも当該最大送信数分しか伝送されないことになる。これにより、バスの伝送性能（スループットや遅延）を維持、保証することが可能となり、あるバスマスタが想定以上のパケットを送信することによるバスの混雑を回避することが可能となる。
【００６９】
主経路以外の経路も利用してパケットを伝送するかどうかの判断や伝送量の判断に関しては、ルータＧＷが、各伝送経路からの伝送要求や伝送量に基づき一括して行えばよい。または、そのような判断を各ＮＩＣが分散的に行ってもよい。そのときは、バスマスタに接続された各ＮＩＣ間で、各伝送経路からの伝送要求や、伝送量に関する情報を交換すればよい。本実施形態においては、後に図１３および図１４を参照しながら、ルータＧＷが一括して判断を行う例を説明する。
【００７０】
図９は、システムバス上のメモリとルータにおいてトラヒックの干渉が生じている例を模式的に示す。図９は、図７に示すトラヒックの干渉がルータに関しても、メモリに関しても発生している様子を示す。トラヒックの干渉は、各ロ―カルバスから伝送されてきたトラヒック（破線）が交わっていること、または共通するメモリに送られていることによって示されている。
【００７１】
上述のとおり、システムバスのルータやメモリで伝送できるトラヒック量は時間的に変動する。そこで、伝送されるトラヒック（データ）の重要度の決定が行われる。ローカルバス３に存在するバスマスタは、処理優先度、データ種別、締切時刻などにより、伝送されるデータの重要度を決定する。この重要度に応じて、伝送を中継するルータやメモリにおける処理の優先順位が決定される。ルータおよびメモリで処理すべきトラヒック量に応じて処理時間が変化する。この結果、伝送できるトラヒック量は時間的に変動する。この状況はローカルバス上においても同様に発生し得る。たとえば、ローカルバス内にあるメモリやルータにより、ローカルバスで伝送できるトラヒック量は時間的に変動する。
【００７２】
図１０は、本実施形態による半導体回路のバスシステム１００の構成を示す。バスシステム１００は、バスマスタと、ＮＩＣ８０３と、アクセスルータと、ルータＧＷ８０７と、スレーブとを有している。アクセスルータと、ルータＧＷ８０７との間には、ローカルバスが設けられている。
【００７３】
ＮＩＣ８０３は、バスマスタをローカルバスに接続するために設けられている。ＮＩＣ８０３は、転送処理部８０１と送信流量制御部８０２とを有する。
【００７４】
転送処理部８０１は、バスマスタからのデータをパケット化し、スレーブからのパケットを脱パケット化する。
【００７５】
送信流量制御部８０２は、伝送経路の伝送量を制御する。この制御は、ローカルバス内で並列的にデータを伝送する際にも行われる（図８）。
【００７６】
いま、ＮＩＣ８０３に接続されるルータを「アクセスルータ」と定義し、ローカルバスとシステムバスとを接続するルータを「ゲートウェイ」（ＧＷ）と定義する。以下では「ルータＧＷ」と記述する。
【００７７】
ルータＧＷはパケットの転送機能を備えたルータ処理部８０４と、システムバスへのパケットの送信量を制御する送信流量制御部８０５と、ローカルバスの各伝送経路の伝送量を決定する受信量割当部８０６とを有する。上述した機能以外の機能に関しては、以下で詳細に説明する。なお、ルータ処理部８０４は、図５で示したルータの構成（２０３〜２０７）に対応する。また、本実施形態では、ルータＧＷを除いては、アクセスルータも含めたルータは図５に示す一般的な構成を備えるとする。
【００７８】
図の例では、バスマスタからルータＧＷを結ぶバスをローカルバスとし、ルータＧＷからスレーブを結ぶバスをシステムバスとしている。一般的に、システムバスはローカルバスよりもバス動作周波数を高く設定する。
【００７９】
ここでは、説明を単純化するためにシステムバスは１本のみで記しているが、ローカルバスと同様に、システムバスが複数本存在して、同一のスレーブに伝送される形態であってもよい。つまり、Ｍ対Ｎ型のトポロジーでバスを構築してもよい。例えば、システムバスにある複数の伝送経路の最大送信数の算出方法をローカルバスの最大送信数の算出方法と同様にすれば実現は可能である。
【００８０】
さらに、図１０では１つのスレーブが示されているが、複数のスレーブが設けられていてもよい。各スレーブに複数本のシステムバスが接続されていてもよい。たとえばスレーブであるメモリが複数存在してもよい。
【００８１】
なお、図１０では、ルータＧＷ８０７とスレーブとがシステムバスによって直結されているように記載されている。しかしながら、スレーブもまたＮＩＣを介してシステムバスに接続され得る。このとき、メモリコントローラがスレーブに対応する。メモリコントローラはＮＩＣを介してシステムバスに接続されている。メモリへのアクセスはメモリコントローラを介して行われる。
【００８２】
図１１は、往路での並列伝送時におけるＮＩＣ８０３の動作手順を示すフローチャートである。図１２は、往路での並列伝送時におけるＮＩＣ８０３とルータＧＷ８０７との動作シーケンスを示す。
【００８３】
いま、ユースケース（例えば、実行されるアプリケーションの種類）が切り替わるタイミングに注目する。このタイミングで、たとえば異なるバスマスタが新たにデータの送信を開始する。新たに動作するバスマスタに接続されたＮＩＣ８０３の送信流量制御部８０２は、ルータＧＷ８０７の受信量割当部８０６に対して各伝送経路に関するパケットの最大送信数を要求する（Ｓ９０１）。この動作により、各伝送経路において最大に送信できるパケット数を規定する。本実施形態では、この規定値はユースケース毎に予め設計段階で決められているとする。
【００８４】
ルータＧＷ８０７において、ルータ処理部８０４がパケットの最大送信数の要求を受け取ると、受信量割当部８０６は、ユースケースに応じた各バスマスタに対応した伝送経路毎の最大送信数を、自らが管理するテーブルから読み込む（Ｓ９０２）。管理している情報の例としては、図１３および図１４を例として挙げることができる。詳細は図１３および図１４を参照しながら説明する。
【００８５】
受信量割当部８０６は、各バスマスタに対応した伝送経路毎の通信量に関する情報、より具体的には最大送信数を特定する情報を、ルータ処理部８０４を介してＮＩＣ８０３の送信流量制御部８０２へ送信する（Ｓ９０３）。これによりＮＩＣ８０３は、伝送経路毎の最大送信数を特定することができる。ＮＩＣ８０３の送信流量制御部８０２は、ルータＧＷ８０７から通知された伝送経路毎の最大送信数の情報にしたがって、伝送経路の伝送量を制御する。
【００８６】
上述の動作の後にＮＩＣ８０３はバスマスタにデータの送信を許可する。その結果、バスマスタはデータ送信を開始する。以上の手順により、ユースケースに適したパケット送信数で各バスマスタはトラヒック伝送できるようになり、ローカルバス、システムバス、ルータＧＷ８０７などでの混雑を抑制することが可能となる。なお、システムバスには複数のルータＧＷが接続され得る。
【００８７】
図１３は、ローカルバスの伝送経路１〜３を模式的に示し、図１４は当該伝送経路１〜３の各伝送量の割当規則を示す。
【００８８】
ルータＧＷ８０７の受信量割当部８０６で管理する最大送信数の例に関して説明する。図１３および図１４の例は、各バスマスタの最短経路が、各バスマスタが優先的に利用する主経路（例：バスマスタＢＭ１の主経路は経路１）として設定されている。ユースケース毎に、ルータＧＷ８０７では各バスマスタの伝送経路毎に最大送信数が割り当てられている。
【００８９】
例えば、ＢＭ１に関しては、５個のパケットが経路１へのパケットの最大送信数として割り当てられている。ＢＭ２に関しては、３、５、４個のパケットがそれぞれ経路１、２、３へのパケットの最大送信数として割り当てられている。一方、ＢＭ３に関しては、いずれの経路にもパケットの最大送信数は割り当てられていない。なお、ゲートウェイで集中的に最大送信数を管理する方法を説明したが、各バスマスタが備えるＮＩＣで分散的に管理をしてもよい。
【００９０】
図１５は、往路での並列伝送時における、ルータＧＷの処理手順を示すフローチャートである。より具体的には、図１５に示すフローチャートは、ルータＧＷの受信量割当部８０６によって実行される。また図１６は、往路での並列伝送時におけるＮＩＣとルータＧＷとの動作シーケンスを示す。
【００９１】
１つのバスマスタから特定のスレーブ（たとえばメモリ）へ、ローカルバスの複数の伝送経路を用いてパケットを伝送する場合（往路）に、ローカルバスにおける伝送経路毎の伝送量の制御方法を説明する。
【００９２】
ルータＧＷ８０７の受信量割当部８０６は、ルータＧＷ８０７からスレーブへの伝送部分であるシステムバスでのスループット（単位時間当たりの送信パケット数）を計測する（Ｓ１２０１）。なお、スループットの計測は、ルータＧＷ８０７で行ってもよいし、受信側であるスレーブで行ってもよい。また、実装を簡略化するためにスループットの値の計測は行わずに、システムバスで設計時に規定する最大送信数を、スループットとして固定値で与えてもよい。図１６に示した動作シーケンスでは、システムバスへ転送している単位時間当たりのパケット数を「ＴＳ」で表している。
【００９３】
次に、受信量割当部８０６は、ローカルバスの各伝送経路でのスループットの計測を行う（Ｓ１２０２）。ローカルバスのスループットの計測についても、バスマスタ側のＮＩＣで行ってもよいし、受信側であるゲートウェイで行ってもよい。図１６では、ルータＧＷ８０７の受信量割当部８０６において、ローカルバスの各伝送経路のスループットＴＨ１〜ＴＨ３を計測している。
【００９４】
受信量割当部８０６は、システムバスでのスループットとローカルバスの伝送経路毎のスループットとに基づいて、ローカルバスの各伝送経路で転送可能なパケット数を算出する。具体的には、受信量割当部８０６は、システムバスでのスループットに対してローカルバスの各伝送経路でのスループットの比率を掛けて、ローカルバスの各伝送経路でのパケットの最大送信数を求める（Ｓ１２０３）。例えば、図１６の例では、ローカルバスの１つの伝送経路でのパケットの最大送信数ＰＬ１を求める。図１６のステップＳ１２０３に示されるように、ＰＬ１＝ＴＨ１＊ＴＳ／（ＴＨ１＋ＴＨ２＋ＴＨ３）で求めることができる。
【００９５】
受信量割当部８０６は、各伝送経路で伝送されるパケット数がローカルバスの各伝送経路で転送処理できる最大送信数以下に制限されるよう、バスマスタからルータＧＷ８０７に伝送されたパケットに応答して、バスマスタに応答パケットを送信する応答処理を行う（Ｓ１２０４）。この応答処理により、バスマスタからの過剰なパケットの伝送を抑制できる。
【００９６】
以上の手順により、ローカルバスの各伝送経路の最大送信数を固定的に、設計時に決めておくよりは、動的に決定することで、ローカルバスやシステムバスでのトラヒック変動に強くなる。これにより、ゲートウェイでの混雑の回避や、ローカルバスやシステムバスでの伝送効率（スループットとレイテンシ）を高めることが可能となる。なお、システムバスとローカルバスのスループットの計測は、独立かつ、定期的に行ってもよい。
【００９７】
図１７および図１８は、復路に対するシステムバスとローカルバスで生じる伝送帯域のギャップに対応する処理を示す。
【００９８】
いま、システムバスの伝送速度は相対的に大きく、ローカルバスの伝送速度は相対的に小さいという条件が与えられたとする。この条件では、システムバスとローカルバスとの間で伝送帯域のギャップが発生する。具体的には、この条件ではシステムバスからローカルにデータを伝送する復路において伝送帯域は狭くなるため、ローカルバスの入口で混雑が発生する。この混雑は、特定の伝送経路のみを用いてデータが伝送されることに起因している。
【００９９】
そこで、ローカルバスにおいて複数の伝送経路を用いてデータを伝送することで、ローカルバスのバス動作周波数を上げずに、ローカルバスの伝送速度をシステムバスの伝送速度まで高めることができる。以下では、復路において、伝送帯域のギャップをなくす目的で、復路の伝送路を複数用いる場合を説明する。
【０１００】
図１７は、復路における伝送帯域のギャップに対応するための処理の手順を示す。図１８は、３つの伝送経路４〜６を用いてデータを伝送する態様を示す。本来１本であった伝送経路を３本に分けるため、この処理を本明細書では分割処理とも呼ぶことがある。
【０１０１】
ユースケースの変化時点に、各バスマスタに接続されたＮＩＣ８０３の送信流量制御部８０２は、ゲートウェイＧＷ８０７の受信量割当部８０６に対して、復路に関しては並列伝送を行うか否かの問い合わせを行う（Ｓ１３０１）。この問い合わせは、並列伝送の実施の有無と、並列伝送を行う場合において使用する伝送経路に関している。
【０１０２】
復路にて並列伝送を行うかどうかは、設計時にバスマスタが要求する伝送品質から決定しておく。また、復路において並列伝送を行う場合には、バスマスタ間でのトラヒック干渉が生じないように並列伝送に用いる伝送経路を決定しておく。なお、ゲートウェイＧＷ８０７で集中的に並列伝送を管理する方法を説明したが、各バスマスタが備えるＮＩＣで分散的に管理をしてもよい。
【０１０３】
図１８の例では、復路においてバスマスタＢＭ２のみが並列伝送を行い、他のバスマスタはデータ伝送を行わないとする。すると、バスマスタＢＭ２が伝送経路を３つ利用して並列伝送を行うことが可能である。
【０１０４】
復路での伝送時には、並列伝送を行うバスマスタに対しては、ゲートウェイＧＷ８０７の送信流量制御部８０５は設計時に予め決めた伝送経路数にデータを分割して伝送を行う（Ｓ１３０２）。図１８の例では３つの伝送経路４〜６で並列伝送を行うため、データを３分割している。実装を簡略化するために、ゲートウェイＧＷ８０７はシステムバスから受信したパケットを、対象となる伝送経路に対してラウンドロビンで均等になるように振り分けて伝送してもよい。
【０１０５】
なお、図１８に示す経路番号は、図１３および図１４に示す経路番号と異なっている。これは、往路と復路とが独立して伝送経路を決定できることを意味している。往路に伝送経路１で送信されたトラヒック、またはそのトラヒックに起因して発生した別のトラヒックが、復路でも同じ伝送経路１で伝送されるとは限られないことを意味している。
【０１０６】
バスマスタＢＭ２側のＮＩＣ８０３の送信流量制御部８０２は、分割されたデータを統合してバスマスタＢＭ２に渡す（Ｓ１３０３）。図１８の例では、復路での伝送経路の数である３つ分のトラヒックがＮＩＣで統合されて、バスマスタＢＭ２へ伝送されている。ＮＩＣ８０３の送信流量制御部８０２は、各伝送経路への振分け前のパケットの順序とＮＩＣ８０３で統合した後のパケットの順序が一致するようにパケットの順序制御をＮＩＣの送信流量制御部８０２で行う。例えば、送信流量制御部８０２は、分割した順に番号を割り当てて管理する。
【０１０７】
以上の手順により、復路において、ローカルバスとシステムバス間の伝送帯域のギャップの課題に対して、同一のローカルバス内のバスマスタ間でのトラヒック干渉を抑えながら、ローカルバス内での伝送を高速化することが可能となり、伝送帯域のギャップも抑えることができる。
【０１０８】
図１９は、システムバスとローカルバスで生じる伝送帯域のギャップに対応する処理の手順を示すフローチャートである。図１９は、プロセッサのデータを伝送する処理を示している。図２０は、プロセッサと伝送経路との対応付けを示す図である。
【０１０９】
ローカルバスの各伝送経路と、プロセッサとの対応付けを行いやすくするために、バスマスタから発行されたメモリのリード要求に対して、ＮＩＣ８０３の送信流量制御部８０２は、送信元であるバスマスタを区別できる情報をパケットに付与する（Ｓ１４０１）。図２０の例では、各バスマスタＢＭには、予めそのバスマスタＢＭに割り当てられた主経路が割り当てられている。これにより、伝送経路が独立され、トラヒック干渉を防ぐことが可能になる。
【０１１０】
各バスマスタからのトラヒックを、ゲートウェイＧＷ８０７のルータ処理部８０４は保証レートの観点から集約し、送信流量制御部８０５は、システムバスで要求される伝送品質で、ゲートウェイＧＷ８０７からデータを伝送する（Ｓ１４０２）。ゲートウェイＧＷ８０７では、各バスマスタからの伝送量が保証レート（プロセッサが必要とするスループット）を確保できるように、送信流量制御８０５が帯域制御を行う。実現方法として、例えば、固定レートで伝送レートを制御する方法でよい。ローカルバスで予め帯域制御を行うことで、システムバスでは、保証レートが高い１つの送信ノードからトラヒックが伝送されているように扱えるため、システムバスでのルータの性能保証のための実装が簡略化できる。
【０１１１】
たとえば図２１は、３つのバスマスタであるプロセッサから伝送されるトラヒックと保証レートとを示す。
【０１１２】
図２１に示すように、複数のバスマスタであるプロセッサからトラヒックが伝送される場合、各バスマスタにとって保証されるべき保証レートを超えてトラヒックが伝送される場合がある。この場合、全てのバスマスタの保証レートを保証するために、ローカルバスからシステムバスにデータを受け渡すルータＧＷの直前に配置されたルータ（ルータＲ１、Ｒ２、Ｒ３）は、各バスマスタから出力されるトラヒックに割り当てる帯域を制限する。図の例では、バスマスタＢＭ１に対してはＢ１の伝送帯域が割り当てられ、バスマスタＢＭ２に対してはＢ２の伝送帯域が割り当てられ、バスマスタＢＭ３に対してはＢ３の伝送帯域が割り当てられる。帯域制限は、ルータＧＷによって設定された最大送信数に基づく帯域制限に加えて課される。なお、帯域制限に関しては、前述したようにルータＧＷにて一括で行ってもよい。
【０１１３】
そして、各プロセッサから送信されたトラヒックは、プロセッサクラスの１つのトラヒックとして集約されて、受信ノードに伝送される。図２１に示されるように、このトラヒックの伝送帯域は、Ｂ１＋Ｂ２＋Ｂ３である。
【０１１４】
なお、トラヒックには伝送の優先度に相当する「クラス」が設定され得る。たとえば、遅延の条件が最も厳しい「低遅延クラス」、その次に遅延の条件が厳しい「プロセッサクラス」、そして、上記２つのクラスよりも遅延の条件が緩やかな「グラフィックスクラス」である。たとえば図２１のルータＧＷには、各クラスのデータを保持するためのバッファが別個設けられている。これらのバッファは、たとえば送信流量制御部８０５に設けられる。
【０１１５】
図２１においては、各バスマスタに付随したＮＩＣが示されていないが、これは単に記載を省略しているに過ぎない。帯域制限されることにより、各ＮＩＣからのパケットの出力は制限される。また、図２１においては、各バスマスタからルータＧＷに至るローカルバスは特に分散型バスとして明示されていない。しかしながら、これは便宜的な記載である。バスマスタから、たとえば帯域を制限するルータＲｎ（ｎ：整数）までの伝送経路は分散型バスであってもよい。
【０１１６】
図の例では、要求品質の違いでルータのバッファを用意すればよい。要求品質に応じて、３つのクラス（「低遅延」、「プロセッサ」、「グラフィックス」）が用意されている。ルータは、「低遅延」、「プロセッサ」、「グラフィックス」の順に優先的にデータを送信する。
【０１１７】
なお、保証レートを超えたトラヒックは、全てのバスマスタの保証レート分のトラヒックを伝送していない期間でトラヒックを伝送する。これにより、システムバス側のルータはプロセッサの数（バスマスタの数）だけ、ルータのバッファを備える必要はなくなるため、ルータの実装を簡略化することが可能となる。
【０１１８】
図２２は、クラスに応じた調停順位を示す。保証レート以下の範囲内においては、上述の規則に従い、「低遅延」、「プロセッサ」、「グラフィックス」の調停順位にしたがってデータが伝送される（調停順位（１）〜（３））。そして保証レートを超過した場合には、予め定められた上限（閾値）未満までであれば、「プロセッサ」、「グラフィックス」の順でデータが伝送される（調停順位（４）、（５））。予め定められた上限（閾値）以上であれば、さらに空き帯域がある場合にデータが伝送される（調停順位（６））。この調停順位に従えば、プロセッサクラスのデータに関しては、調停順位に相違が生じるものの、保証レートには上限がないと言える。上記の説明では、プロセッサクラスには保証レートの上限がないとしたが、同様にグラフィックスクラスに対しても、この調停方法を適用してもよい。
【０１１９】
再び図１９を参照する。
【０１２０】
メモリコントローラがリード要求を解釈し、要求に対応するデータをメモリから読み出し、往路のシステムバスと往路のローカルバスを介してバスマスタへデータを送信する（Ｓ１４０３）。
【０１２１】
ルータＧＷ８０７の送信流量制御部８０５は、システムバスを介してメモリから伝送されてきたデータを、ローカルバスの伝送経路に振り分けて、そのデータのリード要求を発行したバスマスタ（プロセッサ）へ伝送する（Ｓ１４０４）。
【０１２２】
メモリからバスマスタに伝送する復路の伝送では、メモリから伝送されるトラヒックは中継するルータでブロックされることなく、伝送する必要がある。このため、本実施形態では、復路の伝送経路は、往路の伝送経路の逆を辿るよう設定される。これは、たとえばゲートウェイ８０７の送信流量制御部８０５が、各バスマスタからの要求をそれぞれ識別可能な情報（たとえばパケットＩＤ）を保持しておき、そのパケットＩＤとローカルバスの経路とを対応付けて情報を保持しておくことにより、実現される。リード要求に応答して読み出され、メモリから送信されたデータにも同じパケットＩＤが付加されることにより、ゲートウェイ８０７の送信流量制御部８０５は復路のデータを、往路と同じ経路で、そのデータのリード要求を発行したバスマスタに伝送することができる。復路の伝送はプロセッサ毎に独立して行われる。これにより、復路でのトラヒック干渉を抑制することができる（図２０）。
【０１２３】
本実施形態では、具体例としてプロセッサを対象に説明したが、グラフィックスや他の同様な特性を備えたバスマスタであっても同様に実現することができる。他の図の例の説明に関しても、用途はプロセッサに限定されない。また、伝送経路は、図で示したように直線的な経路を取る必要は無い。予め経路を静的に決定する方法や動的に経路を決定する方法を用いて任意の伝送経路で実現してもよい。同様に、他の図の例の説明に関しても、任意の伝送経路で実現してもよい。上述の例では、読み込み処理を例にして示したが、書き込みの場合も同様に実現することができる。
【０１２４】
図２３は、往路における保証レートを超えた伝送処理の手順を示す。
【０１２５】
保証レートを超えた伝送とは、例えば、保証レート以内のパケット伝送は主経路のみを使い、保証レートを超えたパケット伝送は、迂回路も用いて伝送することを示す。保証レートとは、バスマスタの必要最小限の伝送帯域を表し、保証レートを超えて伝送することで、バスマスタでの処理を円滑にし、パケット伝送の効率（スループットや遅延）もより一層高めることができる。
【０１２６】
バスマスタ側のＮＩＣ８０３は、ゲートウェイ８０７に保証レートを超えた伝送の要求を発行する（Ｓ１５０１）。
【０１２７】
ゲートウェイ８０７の受信量割当部８０６は、バスマスタからゲートウェイ８０７までの各伝送経路の伝送量を計測する（Ｓ１５０２）。
【０１２８】
受信量割当部８０６は、計測した伝送量に基づいて空き帯域を明らかにし、空き帯域に応じて主経路以外にも使用できる伝送経路を抽出する（Ｓ１５０３）。例えば受信量割当部８０６は、５０％の空き帯域があれば主経路以外にも伝送できる経路であると認定する。但し、主経路は５０％の空き帯域がなくても伝送できるとする。
【０１２９】
ゲートウェイ８０７の受信量割当部８０６は、使用するローカルバスの伝送経路（主経路と空き帯域のある伝送経路）を決定し、ルータ処理部８０４を介して対象となるＮＩＣに通知する（Ｓ１５０４）。
【０１３０】
バスマスタ側のＮＩＣ８０３の送信流量制御部８０２は、決定された伝送経路に基づき各伝送経路で伝送できる伝送レートの上限を設定する（Ｓ１５０５）。
【０１３１】
送信流量制御部８０２は、主経路には保証レート内のトラヒックを伝送し、他の空き帯域のある伝送路には保証レートを超えたトラヒックを伝送する（Ｓ１５０６）。
【０１３２】
図２４は、データが、主経路と、空き帯域のある伝送経路とを用いて伝送される様子を示す。伝送対象は、バスマスタＢＭ１から伝送される、プロセッサクラスの要求である。データの一部は、保証レートＢ１で主経路で伝送される。データの残りの一部は、保証レートＢ１では伝送しきれずに残されたデータであり、空き帯域が存在する他の経路で伝送される。
【０１３３】
図２５の（ｉ）は主経路の帯域の割当状況を示し、図２５の（ｉｉ）は、空き帯域が存在する、主経路以外の伝送経路の帯域の割当状況を示す。図２５の（ｉ）に示されるように、主経路で伝送する保証レート内のトラヒックに対しては、予め設計時に伝送帯域が確保される。一方、図２５の（ｉｉ）に示されるように、主経路以外の伝送経路は、主経路として伝送されている／伝送される可能性のある伝送帯域（設計時に確保されている帯域）と、主経路ではないが伝送している伝送量の両方を、伝送経路が伝送できる最大の帯域から減算して空き帯域を求める。なお、保証レートを超えたトラヒックに対しては、各バスマスタが各伝送経路の帯域を予約／解放の手続きをゲートウェイとバスマスタ間で行う方法で実現してもよい。これにより、空き帯域の計測処理は不要になり、ハード実装は簡略化できる。
【０１３４】
主経路で伝送する保証レート内のトラヒックは高優先度で、主経路以外で伝送される保証レートを超えたトラヒックは、同じ伝送路で伝送される保証レート内のトラヒックよりも低優先度で、バスマスタからゲートウェイまでを中継するルータにおいて、転送処理されるとする。従って、保証レートを超えたトラヒックは、保証レート内のトラヒックよりも低い優先度で処理されてもよい。このようなトラヒックは、例えば、プロセッサを対象としたアプリケーションで、高優先度に対応付けられたメディア処理のアプリケーションは保証レート内の伝送に対応付け、低優先度に対応付けられたＷｅｂやメイルのアプリケーションは保証レートを超えた伝送に対応付ける。このようにプロセッサの処理ではアプリケーションにより要求性能が大きく異なる。
【０１３５】
以上の構成により、ローカルバスのバス動作周波数を低く抑えながら、バスの混雑を回避しながら、システムバスと同様な高速なトラヒック伝送を実現することができる。
【０１３６】
本開示は、チップ内のバス配線だけではなく、チップ間のバス配線に対しても適用が可能である。図２６は、複数のＳｏＣを相互接続する場合に適用する場合の例を示す。ＳｏＣ間をつなぐ配線は、プリント基板上に実装されるため、チップ内で配線される場合に比べて、高速にデータを伝送することが難しい。このため、ＳｏＣ間をつなぐ配線部分Ｚに対して伝送経路の並列化を図ることで、バス動作周波数を大きく上げずにバス伝送の高速化が可能となる。
【０１３７】
また、図２６のように、速度差がある３つ以上のバス（ＳｏＣ１内のバス、ＳｏＣ２内のバス、ＳｏＣ１とＳｏＣ２とを接続するバス）で構成される場合でも適用してもよい。
【０１３８】
なお図２６においても、ＮＩＣは記載されていないが、単に記載を省略したに過ぎない。各ＳｏＣは、図１０に示すバスマスタからルータＧＷに相当する構成を有している。そして各ＳｏＣのルータＧＷ同士が、ＳｏＣ間を接続するバスを介して接続されている。
【産業上の利用可能性】
【０１３９】
本開示にかかる半導体回路のバスシステムは、システムＬＳＩ上のデータ伝送に利用可能である。
【符号の説明】
【０１４０】
１００  半導体回路のバスシステム
８０１  転送処理部
８０２  送信流量制御部
８０３  ネットワークインタフェースコントローラ（ＮＩＣ）
８０４  ルータ処理部
８０５  送信流量制御部
８０６  受信料割当部
８０７  ルータＧＷ
【図１】
2014073188.tif 000003
【図２】
2014073188.tif 000004
【図３】
2014073188.tif 000005
【図４】
2014073188.tif 000006
【図５】
2014073188.tif 000007
【図６】
2014073188.tif 000008
【図７】
2014073188.tif 000009
【図８】
2014073188.tif 000010
【図９】
2014073188.tif 000011
【図１０】
2014073188.tif 000012
【図１１】
2014073188.tif 000013
【図１２】
2014073188.tif 000014
【図１３】
2014073188.tif 000015
【図１４】
2014073188.tif 000016
【図１５】
2014073188.tif 000017
【図１６】
2014073188.tif 000018
【図１７】
2014073188.tif 000019
【図１８】
2014073188.tif 000020
【図１９】
2014073188.tif 000021
【図２０】
2014073188.tif 000022
【図２１】
2014073188.tif 000023
【図２２】
2014073188.tif 000024
【図２３】
2014073188.tif 000025
【図２４】
2014073188.tif 000026
【図２５】
2014073188.tif 000027
【図２６】
2014073188.tif 000028
【国際調査報告】
2014073188.tif 000029
2014073188.tif 000030