(57)【要約】【課題】要求されている性能を満足するための、伝送効率の向上を可能とする技術を提供する。【解決手段】バスインターフェース装置は、第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、第１ノードと中継装置との間に設けられる。第１ノードは、第２ノードへの要求に関するデータを発行するノードである。データは、伝送の順位を決める優先度に従って処理される対象である。バスインターフェース装置は、データを格納するバッファと、同一の時刻に発行された、同一の優先度を有する複数のデータに異なる優先度を割り当て、優先度を含むヘッダを生成するヘッダ構成部と、ヘッダおよびデータを用いてパケットを生成するパケット化部とを備えている。【選択図】図６
2014197789.tif 000002
【特許請求の範囲】
【請求項１】
第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、前記第１ノードと前記中継装置との間に設けられるバスインターフェース装置であって、
前記第１ノードは、前記第２ノードへの要求に関するデータを発行するノードであり、
前記データは、伝送の順位を決める優先度に従って処理される対象であり、
前記データを格納するバッファと、
同一の時刻に発行された、同一の優先度を有する複数の前記データに異なる優先度を割り当て、前記優先度を含むヘッダを生成するヘッダ構成部と、
前記ヘッダおよび前記データを用いてパケットを生成するパケット化部と
を備えたバスインターフェース装置。
【請求項２】
第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、前記第１ノードと前記中継装置との間に設けられるバスインターフェース装置であって、
前記第１ノードが発行した、前記第２ノードへの要求に関するデータを格納するバッファと、
前記締切時刻の情報を含むヘッダを生成するヘッダ構成部であって、前記バッファに格納された前記データを送信する送信時刻に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、
前記ヘッダおよび前記データを用いてパケットを生成するパケット化部と
を備えたバスインターフェース装置。
【請求項３】
第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、前記第１ノードと前記中継装置との間に設けられるバスインターフェース装置であって、
前記バスシステムでは、前記第１ノードが要求を発生させた時刻である要求発生時刻を用いて、前記要求の処理に関する当初締切時刻が決定され、
前記第１ノードが発行した、前記第２ノードへの要求に関するデータを格納するバッファと、
前記当初締切時刻よりも遅い締切時刻を計算し、前記締切時刻の情報を含むヘッダを生成するヘッダ構成部であって、前記バッファに格納された前記データを送信する送信時刻に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、
前記ヘッダおよび前記データを用いてパケットを生成するパケット化部と
を備えたバスインターフェース装置。
【請求項４】
前記ヘッダ構成部は、前記バッファに格納された前記データを送信する送信時刻、および予め定められた許容遅延時間に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算する、請求項１から３のいずれかに記載のバスインターフェース装置。
【請求項５】
前記第１ノードは複数存在しており、
複数の第１ノードの各々が発行する前記要求は、少なくとも、前記複数の第１ノード間の平均伝送遅延を小さくする必要がある第１要求、および相対的に前記複数の第１ノード間の平均伝送遅延を小さくする必要がない第２要求に分類され、
第１ノードが発行した前記要求が前記第１要求に分類されるときは、前記ヘッダ構成部は、前記データを送信する送信時刻に基づいて、前記締切時刻を計算する、請求項１から３のいずれかに記載のバスインターフェース装置。
【請求項６】
前記第１ノードは複数存在しており、
前記ヘッダ構成部は、
複数の第１ノード間で締切時刻の桁あふれのタイミングを同期させたラップアラウンド判定用ビット、および
前記データの伝送の締切時刻を表す締切時刻ビット
を用いて、桁数制限された締切時刻の情報を生成する、請求項１から３のいずれかに記載のバスインターフェース装置。
【請求項７】
少なくとも１つの第１ノードは複数存在しており、
前記ヘッダ構成部は、
前記中継装置における締切時刻の比較対象となる前記複数の第１ノードの中で、最大の許容遅延時間と、前記複数の第１ノードの間で生じるシステムクロックの最大誤差との和を表現できる桁数以上の締切時刻ビット、および
締切時刻の桁あふれを判定するためのラップアラウンド判定用ビット
を用いて桁数制限された締切時刻を生成する、請求項１から３のいずれかに記載のバスインターフェース装置。
【請求項８】
少なくとも１つの第１ノードは複数存在しており、
複数の第１ノードの各々が発行する前記要求は、少なくとも、前記複数の第１ノード間の平均伝送遅延を小さくする必要がある第１要求、および相対的に前記複数の第１ノード間の平均伝送遅延を小さくする必要がない第２要求のいずれかに分類され、
前記第１ノードが発行した要求が前記第２要求に分類されるときは、前記ヘッダ構成部は、前記データを送信する送信時刻に代えて、前記要求の発行時刻に基づいて前記締切時刻を計算する、請求項１から３のいずれかに記載のバスインターフェース装置。
【請求項９】
前記第１ノードが送信した前記要求が、前記第１要求に分類されるか否かに応じて、前記締切時刻を、前記データを送信する送信時刻に基づいて計算するか、前記要求の発行時刻に基づいて計算するかが指定された第１の規則が予め用意されており、
前記ヘッダ構成部は、前記第１の規則を参照して、前記第１ノードが送信した前記要求が、前記第１要求に分類されるか、前記第２要求に分類されるかに応じて、前記締切時刻の計算方法を決定する、請求項８に記載のバスインターフェース装置。
【請求項１０】
前記パケットの送信を制御して前記パケットを送信する送信制御部をさらに備え、
前記バスインターフェース装置が送信可能な最大送信パケット数、前記バッファの格納領域、および送信レートの少なくともいずれかの情報を含む第２の規則が予め用意されており、
前記第２規則に前記バスインターフェース装置が送信可能な最大送信パケット数の情報を含む場合、受信した前記データは、前記第２の規則の前記バッファの格納領域に従って、前記バッファに格納され、
前記第２規則に前記送信可能な最大送信パケット数を含む場合、前記送信制御部は、前記第２の規則の前記送信可能な最大送信パケット数を超えないよう、生成された前記パケットの送信を制御し、
前記第２規則に送信レートを含む場合、前記送信制御部は、前記パケットの送信レートを前記第２の規則の送信レートで送信を制御する、請求項９に記載のバスインターフェース装置。
【請求項１１】
前記ヘッダ構成部は、バス幅又はバス動作周波数で決定される伝送能力、少なくとも１つの中継装置の中継段数、宛先である第２ノードの処理能力の少なくとも１つ以上の情報で前記最大送信パケット数を決定する、請求項１０に記載のバスインターフェース装置。
【請求項１２】
各々が送信ノードである複数の第１ノード、受信ノードである少なくとも１つの第２ノード、および少なくとも１つの中継装置が、集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、送信ノードと前記少なくとも１つの中継装置との間に設けられるバスインターフェース装置であって、
送信ノードが発行した、少なくとも１つの第２ノードへの要求に関するデータを格納するバッファと、
前記要求が前記少なくとも１つの第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、
前記ヘッダおよび前記データを用いてパケットを生成するパケット化部と
を備え、
前記ヘッダ構成部は、複数のビットによって前記締切時刻の情報を生成し、
前記複数のビットは、前記複数の第１ノード間で締切時刻の桁あふれのタイミングを同期させたラップアラウンド判定用ビット、および前記データの伝送の締切時刻を表す締切時刻ビットを含む、バスインターフェース装置。
【請求項１３】
前記締切時刻を表す締切時刻ビットは、前記中継装置における締切時刻の比較対象となる前記複数の第１ノードが送信するデータの中で、最大の許容遅延時間と、前記複数の第１ノードの間で生じるシステムクロックの最大誤差との和を表現できる桁数以上のビットサイズで構成されている、請求項１２に記載のバスインターフェース装置。
【請求項１４】
第１ノード、第２ノード、中継装置、前記第１ノードと前記中継装置との間に設けられたバスインターフェース装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムであって、
前記第１ノードは、前記第２ノードへの要求に関するデータを発行するノードであり、
前記データは、伝送の順位を決める優先度に従って処理される対象であり、
前記バスインターフェース装置は、
前記データを格納するバッファと、
前記第１ノードが同一の時刻に発行した、同一の優先度を有する複数の前記データを受け取り、複数の前記データに異なる優先度を割り当て、前記優先度を含むヘッダを生成するヘッダ構成部と、
前記ヘッダおよび前記データを用いてパケットを生成するパケット化部と
を備えた、バスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ネットワークオンチップにおけるバスインターフェース装置およびバスシステムに関する。
【背景技術】
【０００２】
集中型のバス制御を行う従来の集積回路では、複数のバスマスタとメモリとの間は１つのバスによって接続され、各バスマスタからメモリへのアクセス時には、各バスマスタとメモリとの間を流れるパケットはアービターによって調停される。しかしながら、近年では集中型のバス制御を行う集積回路の設計が困難になってきていた。その理由は、集積回路の高機能化、マルチコア化により、回路の規模が増大してきたこと、およびトラヒックが複雑に変動しながらバスを流れているためである。
【０００３】
その一方で、近年、並列計算機での接続技術や、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）網などのネットワーク制御の技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。分散型のバスを有する半導体集積回路は、複数のルータが複数のバスで接続されて構成されている。近年、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送するネットワークオンチップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ）の取り組みがある。
【０００４】
ネットワークオンチップでは、パケットを中継するルータがバスの間に配置される。ルータにはパケットを格納するための複数のバッファ（仮想チャネル）が備えられている。複数のバッファに格納された複数のパケットの中から送信するパケットの順位を決定する方法として、たとえば特許文献１は、Ａｇｅ−Ｂａｓｅｄ方式を提案している。Ａｇｅ−Ｂａｓｅｄ方式では、パケットが送信されてからの経過時間の長さや中継したホップ数に基づいて“Ａｇｅ”と呼ばれる値を定義する。そして、Ａｇｅが最も大きい（または小さい）パケットを、先に送信する。これにより、パケットが送信された順番を維持しつつ、各パケットの遅延時間が際限なく増加し、またはばらつくことを抑制できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第６６７４７２０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
Ａｇｅ−Ｂａｓｅｄ方式では、いつまでに処理を完了すべきかの情報を反映させてパケットの伝送を制御することが困難である。たとえば、より早く伝送すべきパケットが存在していても、そのパケットを優先的に伝送するための仕組みがＡｇｅ−Ｂａｓｅｄ方式には存在していない。その結果、そのパケットに関しては要求されている性能を満足できなくなる可能性があった。要求されている性能を満足するための、伝送効率の向上を可能とする技術が必要とされていた。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様は、第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、前記第１ノードと前記中継装置との間に設けられるバスインターフェース装置であって、前記第１ノードは、前記第２ノードへの要求に関するデータを発行するノードであり、前記データは、伝送の順位を決める優先度に従って処理される対象であり、前記データを格納するバッファと、同一の時刻に発行された、同一の優先度を有する複数の前記データに異なる優先度を割り当て、前記優先度を含むヘッダを生成するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備えたバスインターフェース装置である。
【０００８】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【０００９】
本開示の例示的な実施形態にかかるバスインターフェース装置を備えるバスシステムにおいては、ネットワークオンチップを対象とし、ルータでの伝送順位を決める締切時刻の比較において、比較処理の削減による中継装置（ルータ）での低遅延化、ヘッダサイズの削減による伝送効率の向上、および実装面積の削減を行うことができる。
【００１０】
また、伝送効率の向上によって、スループットの改善、またヘッダサイズの削減によりバス配線の削減ができ、バス周波数の削減、半導体の省電力化が可能となる。
【図面の簡単な説明】
【００１１】
【図１】（Ａ）および（Ｂ）は、特定のバスマスタの伝送負荷集中に関する例を示す図である。
【図２】要求の発生時刻、およびパケットの送信時刻を説明するための例を示す図である。
【図３】（Ａ）〜（Ｃ）は、本実施形態にかかるバスインターフェース装置の処理、およびその所要時間の概要を示す図である。
【図４】本開示にかかるバスシステム１００の構成例を示す図である。
【図５】宛先となるノードの例を説明する図である。
【図６】ＮＩＣ１０３の構成を示す図である。
【図７】ＮＩＣの動作を示すフローチャートである。
【図８】ルータ１０４の構成を示す図である。
【図９】ルータ１０４の動作を示すフローチャートである。
【図１０】ヘッダ構成規則の例を示す図である。
【図１１】ヘッダ構成部３０４の構成を示す図である。
【図１２】ヘッダ構成部３０４の動作を示すフローチャートである。
【図１３】ビットサイズを計算するプログラムの処理の手順を示すフローチャートである。
【図１４】コンピュータであるＰＣ２００のハードウェア構成を示す図である。
【図１５】ビットサイズ記憶部３０４１に記憶されるビットサイズの情報の例を示す図である。
【図１６】本実施形態によるビットの区分を示す図である。
【図１７】パケット２５０のデータ構造を示す図である。
【図１８】判定用ビットの同期を説明する図である。
【図１９】（Ａ）および（Ｂ）は、判定用ビットの時間幅を説明する図である。
【図２０】（Ａ）および（Ｂ）は、判定用ビットの時間幅に関し、システムクロックのマスタ間誤差によって生じる問題を説明する図である。
【図２１】（Ａ）および（Ｂ）は、本実施形態にかかるルータおよびＮＩＣを適用可能なバストポロジーを示す図である。
【発明を実施するための形態】
【００１２】
ネットワークオンチップでは、中継装置（ルータ）は、求められている性能（遅延とスループット）を保証するために、締切時刻が早く設定されているパケットを優先して伝送する。本実施形態において、「締切時刻」とは、たとえばパケットが宛先までに到着すべき時刻である。この時刻の情報は、パケットに付与された締切時刻は伝送の順位を決める優先度の決定に用いられる。優先度の決定処理は、各パケットに付与された締切時刻をルータが比較することによって行われる。このとき、締切時刻を表現するデータサイズ（ビット幅）が大きいと、締切時刻の比較処理にかかる遅延が大きくなり、通信オーバーヘッドの増加をもたらす。ルータはパケットの伝送順位に関する優先度を常時決定する必要があるため、通信オーバーヘッドが大きいとバスの伝送効率が低下する要因になりうる。
【００１３】
なお、本開示を適用するにあたり、パケットの「締切時刻」とはパケットが宛先に到着すべき時刻でなくてもよい。たとえば、パケットによって送信された要求に対応する応答が送信元である自ノードに到着すべき時刻であってもよい。「締切時刻」は本実施形態における一例である。締切時刻は中継装置で伝送の優先度を表す値であればよい。したがって、必ずしもあるノードへの伝送の締切を表してなくてもよい。
【００１４】
本願発明者らは、特定のバスマスタの伝送負荷集中を抑制するために、送信元マスタを区別して順次伝送する技術を開発した。図１（Ａ）および（B）は、特定のバスマスタの伝送負荷集中に関する例を示す。特定のバスマスタの伝送負荷集中とは、図１（Ａ）のようにメモリにアクセスする時、および図１（Ｂ）のようにバス上でトラヒックが干渉する時に発生し得る。伝送負荷集中により、他のバスマスタのトラヒックの伝送遅延が大きくなり、伝送性能が低下する。そして、当該技術と、締切時刻による優先度を用いる伝送技術とを組み合わせて利用することを検討した際、本願発明者らは、実装回路が複雑化し、実装面積が増大することを見出した。そこで本願発明者らは、さらなる改良として、締切時刻の優先度を用いるルータに大きな改変を行うことなく、パケットを送信元マスタごとに順次伝送する技術をなすに至った。この技術によれば、バスの伝送効率の低下を抑制することが可能となる。
【００１５】
本発明の一態様の概要は以下のとおりである。
【００１６】
バスインターフェース装置は、第１ノード、第２ノード、および中継装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、前記第１ノードと前記中継装置との間に設けられるバスインターフェース装置である。前記第１ノードは、前記第２ノードへの要求に関するデータを発行するノードであり、前記データは、伝送の順位を決める優先度に従って処理される対象である。
【００１７】
本発明の一態様であるバスインターフェース装置は、前記データを格納するバッファと、同一の時刻に発行された、同一の優先度を有する複数の前記データに異なる優先度を割り当て、前記優先度を含むヘッダを生成するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備えている。
【００１８】
本発明の他の一態様であるバスインターフェース装置は、前記第１ノードが発行した、前記第２ノードへの要求に関するデータを格納するバッファと、前記締切時刻の情報を含むヘッダを生成するヘッダ構成部であって、前記バッファに格納された前記データを送信する送信時刻に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備えている。
【００１９】
本発明のさらに他の一態様であるバスインターフェース装置は、前記第１ノードが要求を発生させた時刻である要求発生時刻を用いて、前記要求の処理に関する当初締切時刻が決定されるバスシステムにおいて用いられる。バスインターフェース装置は、前記第１ノードが発行した、前記第２ノードへの要求に関するデータを格納するバッファと、前記当初締切時刻よりも遅い締切時刻を計算し、前記締切時刻の情報を含むヘッダを生成するヘッダ構成部であって、前記バッファに格納された前記データを送信する送信時刻に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備えている。
【００２０】
前記ヘッダ構成部は、たとえば前記バッファに格納された前記データを送信する送信時刻、および予め定められた許容遅延時間に基づいて、前記要求が前記第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算する。
【００２１】
前記第１ノードは複数存在しており、複数の第１ノードの各々が発行する前記要求は、少なくとも、前記複数の第１ノード間の平均伝送遅延を小さくする必要がある第１要求、および相対的に前記複数の第１ノード間の平均伝送遅延を小さくする必要がない第２要求に分類される。第１ノードが発行した前記要求が前記第１要求に分類されるときは、前記ヘッダ構成部は、たとえば前記データを送信する送信時刻に基づいて、前記締切時刻を計算する。
【００２２】
前記第１ノードが複数存在しているとき、前記ヘッダ構成部は、たとえば複数の第１ノード間で締切時刻の桁あふれのタイミングを同期させたラップアラウンド判定用ビット、および前記データの伝送の締切時刻を表す締切時刻ビットを用いて、桁数制限された締切時刻の情報を生成する。
【００２３】
少なくとも１つの第１ノードが複数存在しているとき、前記ヘッダ構成部は、たとえば前記中継装置における締切時刻の比較対象となる前記複数の第１ノードの中で、最大の許容遅延時間と、前記複数の第１ノードの間で生じるシステムクロックの最大誤差との和を表現できる桁数以上の締切時刻ビット、および締切時刻の桁あふれを判定するためのラップアラウンド判定用ビットを用いて桁数制限された締切時刻を生成する。
【００２４】
少なくとも１つの第１ノードは複数存在しているとき、複数の第１ノードの各々が発行する前記要求は、少なくとも、前記複数の第１ノード間の平均伝送遅延を小さくする必要がある第１要求、および相対的に前記複数の第１ノード間の平均伝送遅延を小さくする必要がない第２要求のいずれかに分類され、前記第１ノードが発行した要求が前記第２要求に分類されるときは、前記ヘッダ構成部は、たとえば前記データを送信する送信時刻に代えて、前記要求の発行時刻に基づいて前記締切時刻を計算する。
【００２５】
前記第１ノードが送信した前記要求が、前記第１要求に分類されるか否かに応じて、前記締切時刻を、前記データを送信する送信時刻に基づいて計算するか、前記要求の発行時刻に基づいて計算するかが指定された第１の規則が予め用意されており、前記ヘッダ構成部は、たとえば前記第１の規則を参照して、前記第１ノードが送信した前記要求が、前記第１要求に分類されるか、前記第２要求に分類されるかに応じて、前記締切時刻の計算方法を決定する。
【００２６】
前記バスインターフェース装置は、前記パケットを送信する送信制御部をさらに備え、前記バスインターフェース装置が送信可能な最大送信パケット数、前記バッファの格納領域、および送信レートの少なくともいずれかの情報を含む第２の規則が予め用意されており、前記第２規則に前記バスインターフェース装置が送信可能な最大送信パケット数の情報を含む場合、受信した前記データは、前記第２の規則の前記バッファの格納領域に従って、前記バッファに格納され、前記第２規則に前記送信可能な最大送信パケット数を含む場合、前記送信制御部は、前記第２の規則の前記送信可能な最大送信パケット数を超えないよう、生成された前記パケットの送信を制御し、前記第２規則に送信レートを含む場合、前記送信制御部は、前記パケットの送信レートを前記第２の規則の送信レートで送信を制御する。
【００２７】
前記ヘッダ構成部は、バス幅又はバス動作周波数で決定される伝送能力、少なくとも１つの中継装置の中継段数、宛先である第２ノードの処理能力の少なくとも１つ以上の情報で前記最大送信パケット数を決定する。
【００２８】
本発明のさらに他の一態様であるバスインターフェース装置は、各々が送信ノードである複数の第１ノード、受信ノードである少なくとも１つの第２ノード、および少なくとも１つの中継装置が、集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムにおいて、送信ノードと前記少なくとも１つの中継装置との間に設けられる。前記バスインターフェース装置は、送信ノードが発行した、少なくとも１つの第２ノードへの要求に関するデータを格納するバッファと、前記要求が前記少なくとも１つの第２ノードに到達すべき締切時刻、または前記要求に対する応答が前記第１ノードに到達すべき締切時刻を計算するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備え、前記ヘッダ構成部は、複数のビットによって前記締切時刻の情報を生成し、前記複数のビットは、前記複数の第１ノード間で締切時刻の桁あふれのタイミングを同期させたラップアラウンド判定用ビット、および前記データの伝送の締切時刻を表す締切時刻ビットを含む。
【００２９】
前記締切時刻を表す締切時刻ビットは、前記中継装置における締切時刻の比較対象となる前記複数の第１ノードが送信するデータの中で、最大の許容遅延時間と、前記複数の第１ノードの間で生じるシステムクロックの最大誤差との和を表現できる桁数以上のビットサイズで構成されている。
【００３０】
本発明の一態様であるバスシステムは、第１ノード、第２ノード、中継装置、前記第１ノードと前記中継装置との間に設けられたバスインターフェース装置の各々を少なくとも１つ有し、それらが集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムである。前記第１ノードは、前記第２ノードへの要求に関するデータを発行するノードであり、前記データは、伝送の順位を決める優先度に従って処理される対象である。前記バスインターフェース装置は、前記データを格納するバッファと、前記第１ノードが同一の時刻に発行した、同一の優先度を有する複数の前記データを受け取り、複数の前記データに異なる優先度を割り当て、前記優先度を含むヘッダを生成するヘッダ構成部と、前記ヘッダおよび前記データを用いてパケットを生成するパケット化部とを備えている。
【００３１】
以下、添付の図面を参照しながら、本開示の例示的な実施形態にかかるバスインターフェース装置を説明する。具体的な構成を説明する前に、まず本実施形態にかかるバスインターフェース装置が、どのように伝送遅延を削減するかの概要を説明する。
【００３２】
まず、本明細書において、「バスインターフェース装置」とは、集積回路上に構築されたパケット交換方式のバスと、当該バスにデータを送信する送信ノードとを接続する装置をいう。バスインターフェース装置は、送信ノードから受信したデータをパケット化してバスに送出する機能、およびバスから受け取ったパケットからデータを抽出する処理（脱パケット化処理）を施して送信ノードに送る機能を有している。送信ノードとして、たとえばバスマスタ、メモリが想定される。
【００３３】
なお、バスマスタ（単に「マスタ」とも言う。）は、例えば、プロセッサ、ＤＳＰ、入出力（ＩＯ）のためのコントローラである。
【００３４】
本明細書では、バスインターフェース装置の別称として、「ネットワークインタフェースコントローラ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）」、またはその省略形として「ＮＩＣ」という語を用いることがある。
【００３５】
本実施形態においては、要求の発生時刻およびパケットの送信時刻を切り替えてパケットに設定する。
【００３６】
図２は、要求の発生時刻、およびパケットの送信時刻を説明するための例を示す。図２では画像データの要求の送信例である。ここでは、マスタが、メモリに格納された画像データにアクセスする例を考える。画像データは、４ピクセルｘ４ピクセル（計１６ピクセル）の矩形のデータであるとする。
【００３７】
マスタは、必要とする画像データの要求を、ライン毎に４つの要求に分解する。１ラインには４つのピクセルが含まれており、各ラインに含まれる４ピクセルを取得する要求１〜４が順に発行される。本願明細書では、これら要求１〜４の各々が発行された時刻を「要求の発生時刻」と呼ぶ。
【００３８】
要求１〜４は、生成された順にＮＩＣに送信される。
【００３９】
ＮＩＣは、要求を含むデータをパケット化し、メモリを宛先としてパケットを送信する。このとき、パケットがＮＩＣから送信される時刻が、「パケットの送信時刻」である。なお、ＮＩＣはパケットの送信時刻を決定できるため、パケットが実際に送信される前の時点において、パケットの送信時刻に基づく処理を行うことが可能である。
【００４０】
なお、ここでは画像データに対するアクセスを例に説明したが、メモリに格納されたデータは、複数のデータに対し同時にアクセスされる対象であればよく、例えば、音声データや行列データであってもよい。
【００４１】
以下、図３（Ａ）〜（Ｃ）を参照しながら、本実施形態にかかる処理に基づく所要時間の短さを説明する。
【００４２】
図３（Ａ）〜（Ｃ）は、本実施形態にかかるバスインターフェース装置の処理、およびその所要時間の概要を示す。
【００４３】
本実施形態にかかるバスインターフェース装置は、各パケットに締切時刻を示す情報を付与する。この情報は、バスに設けられたルータがパケットを伝送する際の優先度判定に用いられる。締切時刻を付与する際、本実施形態にかかるバスインターフェース装置は、マスタでの要求の発生時刻と、バスインターフェース装置のパケット送信時刻とを、切り替えてパケットに付与することができる。
【００４４】
要求の発生時刻に基づいて締切時刻を付与することにすると、本来の締切時刻（＝要求発生時刻＋許容遅延時間）に基づいて伝送優先度を表現できる。そのため、特に性能保証の厳しいトラヒックに対しては、要求の発生時刻に基づいて締切時刻を付与することが適切であると考えられる。ただし、単純に締切時刻を比較する、というルールだけでは、特定のマスタの伝送負荷集中が生じやすくなる。
【００４５】
例えば、図３（Ａ）は、要求発生時刻を用いて設定されたパケットの締切時刻をベースとする処理の例を示す。いま、マスタ０が時刻ｔ０に１００パケット分のデータの要求を発行し、マスタ１が時刻ｔ１（ただしｔ０＜ｔ１）に１パケットの要求を発行し、マスタ２が時刻ｔ２（ただしｔ１＜ｔ２）に１パケットの要求を発行したとする。各マスタの許容遅延時間が共通の値Ｄである場合、各マスタの要求の締切時刻はそれぞれ時刻ｔ０＋Ｄ、時刻ｔ１＋Ｄ、時刻ｔ２＋Ｄとなる。つまり、時刻ｔ０＋Ｄ、時刻ｔ１＋Ｄ、時刻ｔ２＋Ｄの順で締切時刻が到来する。単純に締切時刻順にルータで伝送するとすれば、ル―タはマスタ０の１００パケットを伝送し終えたあとに、マスタ１、マスタ２のパケットを伝送する。図示されるルータから各マスタの最後のパケットが伝送される順位は、マスタ０に関しては１００パケット目、マスタ１に関しては１０１パケット目、マスタ２に関しては１０２パケット目である。よって、各マスタがパケットの伝送を終えたときの順位の平均値は１０１パケット目となる。これは、特定のマスタの大量に同時発生したパケットによって伝送負荷集中が起こり、各マスタの遅延の平均値が大きくなりやすいことを意味している。図３（Ｃ）の（ａ）行は、上述した伝送順位およびその平均値を示している。
【００４６】
そこで本願発明者らは、（要求発生時刻＋許容遅延時間）によって定まる締切時刻とは異なる締切時刻として、バスインターフェース装置のパケット送信時刻をベースとして締切時刻を定め、パケットに付与することとした。具体的には、（バスインターフェース装置のパケット送信時刻＋許容遅延時間）によって定まる締切時刻を付与することとした。パケットの送信時刻に基づいて締切時刻を付与すると、締切時刻の計算の起点となる時刻がバスインターフェース装置の伝送性能に応じてパケットごとに遅れるため、締切時刻も徐々に遅くなる。これにより、同じ締切時刻を持ったパケットの発生を抑制することができる。特定のバスマスタが発行した要求を優先的に処理する必要がなくなるため、伝送負荷集中を抑制することができる。要求発生時刻が共通する複数のパケットが送信される場合であっても、簡便な実装で、付与する締切時刻を分散させることができる。このようにして、同じ要求発生時刻で、同じ伝送の優先度を持つ要求に対して、異なる優先度になるように優先度を計算することで、特定のバスマスタによる伝送負荷集中を抑制できる。
【００４７】
例えば、図３（Ｂ）は、パケットの送信時刻を用いて設定されたパケットの締切時刻をベースとする処理の例を示す。
【００４８】
いま、マスタ０が時刻ｔ０に１００パケット分のデータの要求を発行し、マスタ１が時刻ｔ１（ただしｔ０＜ｔ１）に１パケットの要求を発行し、マスタ２が時刻ｔ２（ただしｔ１＜ｔ２）に１パケットの要求を発行したとする。また、各マスタからＮＩＣの送信まで、換言するとパケットがルータに到達するまでにΔｔ（Δｔは任意の正の値）の時間がかかるとする。すると、マスタ０、１、２の各パケットがＮＩＣから送信される時刻は、それぞれ時刻ｔ０＋ｎ×Δｔ（１≦ｎ≦１００）、時刻ｔ１＋Δｔ、時刻ｔ２＋Δｔとなる。ここで、（ｔ０＋Δｔ）をＴ０１とおき、（ｔ１＋Δｔ）をＴ１、（ｔ２＋Δｔ）をＴ２、（ｔ０＋２×Δｔ）をＴ０２とおく。そして、Ｔ０１＜Ｔ１＜Ｔ２＜Ｔ０２という関係が成り立つとする。つまり、Ｔ０１は最初にＮＩＣから出力され、Ｔ０２は最後にＮＩＣから出力される。
【００４９】
そして各マスタの許容遅延時間が共通の値Ｄであるとする。すると、マスタ０の要求の締切時刻は、一般に時刻（ｔ０＋ｎ×Δｔ＋Ｄ）と表される。最初から２つのパケットに関しては、Ｔ０１＋Ｄ、およびＴ０２＋Ｄとなる。またマスタ１および２の各要求の締切時刻は、それぞれ時刻Ｔ１＋Ｄ、および時刻Ｔ２＋Ｄとなる。
【００５０】
締切時刻を比較すると、Ｔ０１＋Ｄ＜Ｔ１＋Ｄ＜Ｔ２＋Ｄ＜Ｔ０２＋Ｄという関係が成り立つ。
【００５１】
締切時刻順にルータで伝送する場合、マスタ０の１パケット目を伝送し終えたあとに、マスタ１、マスタ２のそれぞれ１パケットが順に伝送される。その後、マスタ０の２つ目以降のパケット（９９パケット）が伝送される。
【００５２】
図３（Ｂ）に示されるルータから各マスタの最後のパケットが伝送される順位は、マスタ０に関しては１０２パケット目、マスタ１に関しては２パケット目、マスタ２に関しては３パケット目である。よって、各マスタがパケットの伝送を終えたときの順位の平均値は３５．６６．．．パケット目となる。図３（Ｃ）の（ｂ）行は、上述した伝送順位およびその平均値を示している。
【００５３】
したがって、要求発生時刻のみに基づいて締切時刻を決定するよりも、送信時刻に基づいて締切時刻を決定する方が、各マスタの遅延の平均値を低減することができる場合があることがわかる。上述の例のように、特定のマスタが大量にパケットを同時発行した場合であっても、各パケットの締切時刻を分散させることができ、ルータでの特定のマスタの伝送負荷集中を抑制することができる。これにより、マスタの平均遅延を低減することができ、マスタに対し宛先ノードから、より早く応答を返信することができる。
【００５４】
なお、パケット送信時刻に基づいて締切時刻を付与すると、本来の締切時刻とは異なる優先順位で伝送が行われるため、マスタによっては要求する伝送性能を確保できない可能性が生じる。そのため、全てのマスタではなく、特定のマスタからのパケットに関してのみ、パケット送信時刻に基づく締切時刻を付与してもよい。たとえば、許容遅延が十分大きく遅延条件の厳しくないマスタや遅延を保証しなくてもよいマスタ（例えば、プロセッサやグラフィックス処理のマスタ）には、パケット送信時刻に基づく締切時刻を付与してもよい。
【００５５】
なお、パケットカウンタを用いることによっても、特定マスタのトラヒックを集中的に伝送することを抑制することはできると考えられる。ただし本願発明者らは、パケットカウンタを用いると、マスタ間の許容遅延の遅延条件に対する厳しさを表現できなくなるため、異なる遅延要求のある複数のマスタに対して適用するのが難しくなると考える。
【００５６】
以下、添付の図面を参照しながら、本実施形態を詳細に説明する。具体的には、まず図４および図５を参照しながら、本実施形態にかかるバスシステムを説明する。その後、図６、７、８、および９を参照しながら、バスシステムの構成要素であり、パケットの伝送を行うＮＩＣ、およびルータの構成および動作を概略的に説明する。ＮＩＣ、およびルータの構成要素に関する詳細な構成は、その後、説明する。
【００５７】
図４は、本開示にかかるバスシステム１００の構成例を示す。
【００５８】
図示された例では、バスシステム１００は、複数のローカルバス１０１ａ、１０１ｂと、１つのシステムバス１０１ｃとを含む。各ローカルバス１０１ａ、１０１ｂと、システムバス１０１ｃとは、互いにルータ（Ｒ）１０４で相互接続されている。
【００５９】
なお、「ローカルバス」とは、特定の機器同士での高速なデータの交換を実現するために、通常のバスとは別に用意された、機器同士を直結するかあるいはそれに準ずる形で接続されるバスである。「システムバス」はローカルバスを相互接続するためのバスである。
【００６０】
ローカルバス１０１ａは、バスインターフェース装置であるＮＩＣ１０３ａを介して、ノードであるバスマスタ１０２ａと接続されている。
【００６１】
ローカルバス１０１ｂは、バスインターフェース装置であるＮＩＣ１０３ｂおよび１０３ｃを介して、ノードであるバスマスタ１０２ｂおよびＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２ｃと接続されている。
【００６２】
システムバス１０１ｃは、バスインターフェース装置であるＮＩＣ１０３ｄおよび１０３ｅを介して、ノードであるバスマスタＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２ｄおよび１０２ｅと接続されている。
【００６３】
ＮＩＣは、ノードから送信されたデータをパケット化してバス上のルータ１０４に出力する。また、ＮＩＣは、バス上のルータ１０４から受信したパケットに脱パケット化処理を施し、得られたデータをノードに送信する。
【００６４】
ＳＲＡＭには、重要度が高い情報が格納される。具体的には、ＩＰＳｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）の鍵、動画キーフレーム、シーケンスヘッダ、復号化されたデータ、認識のテンプレートデータ、サムネール画像、処理優先度の高いプロセスのデータなどである。ＤＲＡＭには重要度が比較的低いデータが格納される。例えば、アプリケーションで必要となる詳細データや作業用データである。
【００６５】
なお、本実施形態では、ＮＩＣ１０３ａ〜１０３ｅの仕様はいずれも同じであるとする。また、ルータ１０４の仕様はいずれも同じであるとする。
【００６６】
図５は、宛先となるノードの例を説明する図である。
【００６７】
宛先としては３種類考えられる。１つ目は、システムバス１０１ｃに接続されたＤＲＡＭ（宛先１）（図５ではＤＲＡＭ１０２ｅ）、２つ目は、バスマスタ（図５ではバスマスタ１０２ｂ）（宛先２）、３つ目は、ローカルバス１０１ｂに接続されたＳＲＡＭ１０２ｃ（宛先３）である。
【００６８】
ＤＲＡＭはＳＲＡＭに比べて、大容量のデータを格納できるが、メモリへのアクセス速度は遅い。また、ＳＲＡＭを利用するよりも、メモリを介さずにバスマスタ間で直接通信する方が伝送速度は速くなるが、大容量のデータを転送するのは難しい。
【００６９】
本開示では、宛先毎にノードが処理可能なデータ量や伝送性能が異なる場合にも対応できるバスシステムを前提とする。この例では、メモリとしてＤＲＡＭ、ＳＲＡＭを対象としたが、本開示は、メモリの種類やメモリの性能には限定されない。
【００７０】
図６は、ＮＩＣ１０３の構成を示す。ＮＩＣ１０３は、図４および５のＮＩＣ１０３ａ〜１０３ｅに対応している。
【００７１】
上述のように、ＮＩＣは、バスマスタとルータを接続する要素である。図４および５では、ＮＩＣはバスマスタとは別個の構成要素として記載されているが、これは一例である。ＮＩＣは、バスマスタに組み込まれ、その構成要素の１つとして設けられてもよい。
【００７２】
ＮＩＣ１０３は、送信バッファ３０１と、パケット化部３０２と、記憶装置３０３と、ヘッダ構成部３０４と、送信間隔制御部３０５と、システムクロックカウンタ３０６とを備えている。ＮＩＣ１０３はさらに、パケットを送信する送信装置３０７ａと、パケットを受信する受信装置３０７ｂと、受信したパケットからデータを抽出する脱パケット化部３０８と、抽出したデータを格納する受信バッファ３０９とを有している。なお、送信装置３０７ａおよび受信装置３０７ｂは、たとえばバスと接続される接続端子である。なお、パケット送信時およびパケット受信時の処理を独立して行うことができることを前提として、送信装置３０７ａおよび受信装置３０７ｂを１つの接続端子によって共通化してもよい。
【００７３】
送信バッファ３０１は、バスマスタからのデータを格納する記憶装置（たとえば半導体メモリ）である。このデータは、たとえばバスマスタが発行した要求に関するデータである。送信バッファ３０１には、複数の部分バッファ（図示せず）が設けられている。各部分バッファは、データの宛先に応じて使い分けられる。なお部分バッファの各々は、１つのメモリを複数の領域に論理的に分けることによって構成されてもよいし、物理的に分けて構成されてもよい。
【００７４】
記憶装置３０３は、たとえばフリップフロップのような記憶素子であり、ヘッダ構成規則の情報を格納する。ヘッダ構成規則は、複数の規則を表現したデータのテーブルとして実装される。各規則は、バスマスタから送付される宛先情報に対応づけられた情報を表す。つまり、宛先毎に規則が設けられる。たとえばヘッダ構成規則は、宛先とパケットが宛先に到着すべき時刻を表現した締切時刻の情報との対応関係（第１の規則）、宛先とバスマスタから受信したデータを送信バッファの格納すべき領域を示す情報との対応関係（第２の規則）、宛先と該当データをパケット化した際にバスに送信できる最大送信パケット数の情報との対応関係（第３の規則）、宛先と送信レートの制限に関する情報との対応関係（第４の規則）を含み得る。後に詳述する図１０には、「最大送信パケット数」、「締切時刻」、「送信レート」、「格納領域」の４種類の情報が全て含まれる例が示されているが、この記載は一例であることに留意されたい。少なくとも、宛先と締切時間の計算方法との対応関係が含まれていればよい。
【００７５】
本実施形態においては、ヘッダ構成規則は、宛先（受信ノード）毎に上述した情報が対応付けられている。なお、本実施形態のヘッダ構成規則は、宛先情報に対応させた形で記述されているが、バスマスタが送信する複数のトラヒックを区別できればよい。従って、たとえば、トラヒックの識別子に対応させてヘッダ構成規則を記述してもよい。
【００７６】
システムクロックカウンタ３０６は、システムクロックをカウントするカウンタである。締切時刻を付与するときに用いる送信時刻は、このカウントされた値（カウント値）が利用される。
【００７７】
ヘッダ構成部３０４は、宛先情報に基づき、記憶装置３０３に格納された規則を用いてパケットのヘッダを構成する処理を行う回路である。
【００７８】
パケット化部３０２は、予め定められた長さでデータを分割してパケットヘッダを付与してパケットを生成する回路である。
【００７９】
送信間隔制御部３０５は、送信パケット数を予め定められた最大送信パケット数以下になるように制御しつつ、パケットの送信レートを指定された送信レート以下になるように制御し、パケットの送信を行う回路である。上述の「送信パケット数」とは、ＮＩＣ１０３が送信した要求パケットのうち、ＮＩＣ１０３に、まだその要求パケットに対応する応答パケットが戻ってきていない要求パケットの総数を意味する。既に処理が完了したパケットの数は含まれない。ＮＩＣ１０３は、予め定められた最大送信パケット数を超えて、要求パケットを送信できないため、バスシステム１００上にパケットが際限なく伝送される自体を回避できる。
【００８０】
ＮＩＣ１０３に送信間隔制御部３０５を設けて送信レートを制御することで、遅延条件とスループットの保証が必要な性能保証分のパケットに対し、遅延とスループットの性能を保証することができ、保証の必要のない出来高パケットに対しても、他のマスタの性能保証分とのパケットとの干渉を抑制できる。また例えば、出来高パケットに対して送信レート制御を行うことで、メモリからマスタへパケットを伝送する復路において、優先度を用いない伝送を行う場合に、出来高パケットが復路の経路を通るときの他のトラヒックへの干渉を抑制することができる。なお、他のトラヒックと干渉しても性能を保証できるほど、バスの伝送帯域が十分大きい場合には、送信間隔制御部３０５は送信レートを制御しなくてもよい。本実施形態において、送信間隔制御部３０５は必須ではない。本実施形態では、図３（Ｂ）に示すように、パケットがＮＩＣ１０３から送信された時刻に基づいて締切時刻を設定すればよいからである。
【００８１】
図７は、ＮＩＣの動作を示すフローチャートである。
【００８２】
ＮＩＣは、バスマスタ（送信ノード）が発行した要求に関するデータを受信し、送信バッファ３０１に当該データを格納する（ステップＳ７０１）。この処理はヘッダ構成部３０４によって制御される。すなわちヘッダ構成部３０４は、記憶装置３０３に格納されたヘッダ構成規則に基づき、宛先に応じてどの部分バッファに当該データを格納するかを決定する。
【００８３】
さらにヘッダ構成部３０４は、ヘッダ構成規則に基づき、宛先に応じた締切時刻を付与し、ヘッダを生成する（ステップＳ７０２）。パケット化部３０２は、ヘッダ、および送信バッファ３０１の部分バッファに格納されたデータを用いてパケットを生成する（ステップＳ７０３）。
【００８４】
なお、上述したように、送信間隔制御部３０５は必須ではないため、図７の処理には送信間隔制御部３０５の動作は含めていない。しかしながら、送信間隔制御部３０５が、最大送信パケット数を上限として、レートが送信レート以下になるようにパケット数を制御し、データ送信を行ってもよい。また同様に、パケットをルータから受信し脱パケット化する脱パケット化部３０８の処理、および受信バッファ３０９によるデータの格納処理も必須ではないため、図７の処理にはこれらの動作は含めていない。
【００８５】
図８は、ルータ１０４の構成を示す。
【００８６】
ルータ１０４は、ルーティング処理部８０１と、締切時刻解釈部８０２と、バッファ８０３と、フロー制御部８０４と、バッファ割当部８０５と、送信制御部８０６とを有している。
【００８７】
ルーティング処理部８０１は、宛先ＩＤと送信元ＩＤに基づき、転送先ノードを決定する回路である。
【００８８】
締切時刻解釈部８０２は、受信したパケットから締切時刻を解釈する回路である。
【００８９】
バッファ８０３は、記憶装置（たとえばフリップフロップのような記憶素子）である。バッファ８０３は、パケットを複数個格納できるように、論理的に分割された複数の部分バッファ（図示せず）を有している。各部分バッファはバッファＩＤにより識別できる。バッファ８０３は、各部分バッファに伝送されてきたパケットを格納する。
【００９０】
フロー制御部８０４は、転送先のルータ１０４に格納するバッファを特定する回路である。
【００９１】
バッファ割当部８０５は、パケットに付与された締切時刻に基づきバッファの割当を行う回路である。
【００９２】
送信制御部８０６は、締切時刻に基づきパケットの送信タイミングを制御してパケットを送信する回路である。なお図８では、送信制御部８０６から外部に向かう信号線が記載されているが、実際には、通信インタフェースとして出力ポートが設けられ得る。また、送信制御部８０６から外部へ向かう出力線は１本であるが、複数であってもよい。たとえばバス上の他の複数のルータに接続されてもよい。上述した出力ポートは、複数設けられる。
【００９３】
図９は、ルータ１０４の動作を示すフローチャートである。
【００９４】
ルータ１０４は、以下の手順で動作する。
【００９５】
まず、バッファ８０３は、ルータ１０４の通信インタフェース（図示せず）によって受信されたパケットを格納する（ステップＳ９０１）。
【００９６】
ルーティング処理部８０１は、ルーティングテーブルとパケットの宛先ＩＤとに基づき、対応する出力ポートを決定する（ステップＳ９０２）。「対応する出力ポート」とは、パケットの宛先に繋がる伝送経路に接続されている出力ポートを意味する。
【００９７】
フロー制御部８０４は、送信先のルータ（そのパケットを次に中継するルータ）から空きバッファのバッファＩＤを取得する（ステップＳ９０３）。
【００９８】
バッファ割当部８０５は、パケットに付与された締切時刻、および送信先ルータ１０４の空きバッファＩＤを用いて、締切時刻の早い順に、格納先バッファＩＤを決定する（ステップＳ９０４）。
【００９９】
送信制御部８０６は出力ポートごとに送信するパケットを決定し送信する（ステップＳ９０５）。より具体的には、送信制御部８０６は、パケットに付与された締切時刻の早いパケットから順に送信されるよう、パケットを決定する。
【０１００】
バスシステム１００では、上述したようにＮＩＣ１０３およびルータ１０４が動作することにより、送信ノード（たとえばバスマスタ）が発行した要求が、パケットに格納されて受信ノード（たとえばメモリ）に伝送される。
【０１０１】
以下では、ＮＩＣ１０３の構成および動作についてより詳細に説明する。
【０１０２】
図１０は、ヘッダ構成規則の例を示す。
【０１０３】
上述のように、ヘッダ構成規則は、バスマスタから送信される宛先情報に対応させて記述された、複数種類の情報である。本実施形態では、ヘッダ構成規則は、最大送信パケット数の情報、締切時刻の情報、送信レートの制限に関する情報、送信バッファにおける格納領域を示す情報である。ヘッダ構成規則に記述される情報のうち、予め定められた項目に関しては、バスシステム１００の設計者によって設定される。
【０１０４】
「最大送信パケット数」は、ＮＩＣ１０３の送信間隔制御部３０５がバスに送信できる最大パケット数である。最大送信パケット数は、宛先であるメモリの処理性能や、中継するルータ数、バス幅やバス動作周波数などの伝送能力で決定される。アクセスにかかる遅延が相対的に大きいメモリ（たとえば図５の宛先１に対応するＤＲＡＭ１０２ｅ）には相対的に大きい最大送信パケット数が与えられる。図１０の例では最大送信パケット数は１０パケットである。アクセスにかかる遅延が相対的に小さいメモリ（たとえば図５の宛先３に対応するＳＲＡＭ１０２ｃ）には相対的に小さい最大送信パケット数が与えられる。図１０の例では最大送信パケット数は７パケットである。一方、宛先がバスマスタの場合は、ＮＩＣ１０３のヘッダ構成部３０４は、パケットを伝送する前に宛先となるバスマスタと接続されたＮＩＣへ、送信元のＮＩＣが送信可能な最大送信パケット数を問い合わせてもよい。その理由は、バスマスタによって処理能力が異なり、一律にヘッダ構成規則として記述することは適切でないからである。図５の例では、ＮＩＣ１０３ａのヘッダ構成部３０４が、宛先２に対応するバスマスタ１０２ｂと接続されているＮＩＣ１０３ｂに、送信元のＮＩＣが送信可能な最大送信パケット数を問い合わせてもよい。宛先のバスマスタへ問い合わせることで、宛先のバスマスタに対し多くのバスマスタからの要求で負荷が集中しないように、各送信元マスタの最大送信パケット数を負荷の状況に合わせて、制限することができる。なお、予め通信するバスマスタが決まっている場合は、最大送信パケット数をバスシステム１００の設計時に固定値として定義しておいてもよい。
【０１０５】
上述のように、「締切時刻」は、たとえばパケットが宛先までに到着すべき時刻を示す。伝送の過負荷状態によって生じる伝送遅延の影響を考慮しなくてよいトラヒックの場合（たとえば図５の宛先１や宛先２のトラヒック）は、締切時刻は、要求発生時刻と許容遅延時間の和で表現される。なお、上述のとおり、要求発生時刻はバスマスタが要求を発行した時刻であり、許容遅延時間は、送信元のバスマスタが許容できる遅延時間である。単位は、サイクルや秒などで表現する。
【０１０６】
たとえば、動画再生時などにおいて、特にリアルタイム性が求められる動画コーデック処理に関するトラヒックは、他のトラヒックに対して伝送遅延の影響を考慮せずに優先的に伝送してよい。よって、動画コーデック処理に関するトラヒックの締切時刻は要求発生時刻を用いて算出することが考えられる。
【０１０７】
一方、伝送遅延の影響を考慮すべきトラヒックの場合（たとえば図５の宛先３のトラヒック）は、締切時刻は、送信時刻と許容遅延時間との和で表現される。ここでいう「送信時刻」は、送信元のＮＩＣ１０３からパケットを送信する時刻である。
【０１０８】
たとえば、宛先３のＳＲＡＭのように、複数のバスマスタから高速にアクセスされることを想定したメモリで、マスタ毎の伝送遅延の増加を抑制したい場合は、送信時刻を用いて締切時刻を算出することがより好ましい。また、プロセッサのように、データを伝送している間、マスタが処理を中断するような場合は、伝送遅延の増加が直接マスタのパフォーマンスの低下につながるため、伝送遅延の増加を抑制するために送信時刻を用いて締切時刻を算出することがより好ましい。具体的には、たとえば、複数のプロセッサが同じメモリにアクセスする場合に、データの平均伝送遅延が大きくなるとそれだけプロセッサ全体の処理を中断している時間が長くなる。送信時刻を用いて締切時刻を算出することで平均伝送遅延の増加を抑制すれば、それだけ処理の待ち時間を短くすることができる。なお、送信時刻を用いて締切時刻を算出すると、本来の締切時刻よりも遅い時刻が締切時刻としてパケットに付与されることになる。しかしながら、そのような遅い時刻が締切時刻としてパケットに付与されたとしても問題は生じない。バスの伝送速度が十分大きいか、あるいは性能保証の必要がなく、本来の締切時刻が伝送遅延の目標値として計算されているためである。
【０１０９】
さらに他の例として、広帯域のトラヒック（例えば、バースト発行）と狭帯域のトラヒック（例えば、コマンドやイベントを処理するための小さいデータ）とを伝送するケースを考える。広帯域のトラヒックの各パケットに、要求発生時刻に基づく同じ締切時刻が付与されていた場合、中継装置での伝送の過負荷により狭帯域のトラヒックのパケットの伝送遅延が大きくなりうる。狭帯域のトラヒックのパケットはコマンドやイベントを処理するためのパケットであるため、伝送遅延の増加は直接ユーザの待ち時間の増加につながる。そこでＮＩＣ１０３のヘッダ構成部３０４は、送信時刻に基づく締切時刻を計算してパケットヘッダに付与する。これにより、広帯域のトラヒックの各パケットには異なる締切時刻が付与されることになり、狭帯域のトラヒックのパケットを相対的に早く伝送しやすくなる。
【０１１０】
このように、平均伝送遅延を小さくする必要がある場合は、送信時刻に基づいて締切時刻を計算することが好ましい。
【０１１１】
なお、上述の締切時刻の算出方法は一例である。上述した締切時刻の算出方法は必須ではないことに留意されたい。
【０１１２】
締切時刻として要求発生時刻を用いた場合、バスマスタの要求を締切時刻に反映させやすいが、その反面、データは複数のパケットに分割され、同一の要求発生時刻が用いられる可能性が高くなる。そのため、特に、様々なバスマスタから同一のメモリへアクセスが集中する場合には、ルータやメモリコントローラで、同一の締切時刻のパケットを大量に処理する必要性が高くなる。これにより、ルータやメモリコントローラが、同一の締切時刻のパケットによって過負荷になる。過負荷になることで各マスタの伝送遅延が大きくなりやすくなり、スループットも低下しやすくなる。そこで、送信時刻を用いて締切時刻を決定する、という方式も利用可能とすることで、データが複数のパケットに分割されても、同一の締切時刻が付与される可能性を低減できる。これにより、ルータやメモリコントローラが過負荷になり、各マスタの遅延が増大しやすいという課題を低減することが可能となる。
【０１１３】
「送信レート」は、ＮＩＣ１０４での単位時間あたりのパケット送信量を制御するために設定される。設定される送信レート値は、例えば、パケット間の送信間隔、もしくはフリット間の送信間隔で表現してもよいし、単位時間当たりの送信するデータサイズで表現してもよい。図１０の例では、宛先１宛てのパケットは、パケットの送信する間隔は少なくとも１００サイクル以上の間隔を維持して送信し、宛先３宛てのパケットは、１０サイクル以上の間隔を維持して送信する。宛先２宛てのパケットは「制限なし」のため、送信間隔の制御をせずにパケットを送信する。
【０１１４】
「格納領域」は、バスマスタから受信したデータを送信バッファ３０１で格納する領域を示す。格納領域は、送信バッファ３０１内の格納位置（領域）と格納可能なデータサイズによって定義される。図１０では、宛先１〜宛先３に対して、送信バッファ３０１おける格納領域である領域Ａ〜領域Ｃが定められている。
【０１１５】
図１１は、ヘッダ構成部３０４の構成を示す。
【０１１６】
ヘッダ構成部３０４は、ビットサイズ記憶部３０４１と、締切時刻生成部３０４２と、ヘッダ生成部３０４３と、送信制御パラメータ決定部３０４４とを備えている。
【０１１７】
ビットサイズ記憶部３０４１は、ヘッダ構成部３０４に設けられた記憶素子である。ビットサイズ記憶部３０４１は、たとえば、回路であるヘッダ構成部３０４のレジスタである。ビットサイズ記憶部３０４１が保持するビットサイズの情報は、ビットサイズ計算プログラム２０によって、比較対象となるマスタ間で最大の許容遅延時間と最大の同期誤差を用いて算出される。
【０１１８】
本実施形態においてビットサイズを問題とする理由は、締切時間の比較処理を考慮したためである。パケットがバスシステム１００上を伝送される際、ルータは各パケットの締切時間を比較することにより、どのパケットを優先して出力するかを判断する。そのため、締切時間の比較処理において、比較対象となるデータのビットサイズが大きければ、その比較処理に時間を要することになる。
【０１１９】
より具体的に説明する。本実施形態におけるバスシステム１００は、半導体集積回路上に構築されることを想定している。そのような半導体集積回路では、多くの場合、実装面積を小さくすることが要求される。実装面積が小さくなった結果、２つの締切時間の比較処理（減算処理）に利用可能なレジスタのビット幅が制限される可能性がある。仮に、レジスタのビット幅の方がデータのビットサイズよりも小さい場合には、複数回に分けてレジスタを利用して減算処理を行う必要が生じ、比較処理に時間を要する。
【０１２０】
そこで本実施形態では、締切時間の情報の表現に利用されるビットサイズが、ルータに実装された比較処理に利用されるレジスタのビット数よりも小さくなるよう、ビットサイズ（すなわち締切時間を表現するためのデータの桁数）を制限することにした。この処理の詳細は後述する。
【０１２１】
締切時刻生成部３０４２は、ヘッダ構成規則に従って締切時刻を決定し、その情報を生成する。より具体的には、締切時刻生成部３０４２は、要求発生時刻に基づく締切時刻にするか、送信時刻に基づく締切時刻にするかを、宛先に応じて選択する。締切時刻生成部３０４２は、選択に基づいて締切時刻を決定する。そして締切時刻生成部３０４２は、ビットサイズ記憶部３０４１に保持されたビットサイズの情報に基づき、桁数制限された締切時刻の情報を生成する。
【０１２２】
ヘッダ生成部３０４３は、桁数制限された締切時刻、宛先ＩＤ、および送信元ＩＤを用いてヘッダを生成する。
【０１２３】
送信制御パラメータ決定部３０４４は、ヘッダ構成規則に基づいて宛先ＩＤに対応する最大送信パケット数、および送信レートを決定する。
【０１２４】
なお、図１１において送信制御パラメータ決定部３０４４が破線で示されている理由は、ヘッダ構成部３０４に送信制御パラメータ決定部３０４４を設けることは必須ではないからである。ヘッダ構成部３０４に送信制御パラメータ決定部３０４４を設けない代わりに、送信間隔制御部３０５（図６）が送信制御パラメータ決定部３０４４の処理を行ってもよい。
【０１２５】
図１１では、ビットサイズ計算プログラム２０はヘッダ構成部３０４の外に記載されている。これは、プログラム２０が、ヘッダ構成部３０４内に設けられる必要がないことを意味する。さらに、プログラム２０はＮＩＣ１０３内に設けられる必要もなく、バスシステム１００上でパケットが伝送されている時に、実際に実行される必要もない。たとえばプログラム２０はバスシステム１００の設計時に利用されるツールとして実装されてもよい。
【０１２６】
ただし、プログラム２０は、ヘッダ構成部３０４の内部に保持され、実行されてもよい。具体的には、次に説明する締切時刻生成部３０４２がプログラム２０を実行してビットサイズの情報を求め、自らの処理に利用してもよい。
【０１２７】
図１２は、ヘッダ構成部３０４の動作を示すフローチャートである。
【０１２８】
締切時刻生成部３０４２は、取得したヘッダ構成規則から宛先ＩＤに対応する締切時刻の算出方式を選択する。具体的には、締切時刻生成部３０４２は、ヘッダ構成規則に従って、要求発生時刻に基づく締切時刻の算出方式、または送信時刻に基づく締切時刻の算出方式のいずれの算出方式に基づいて締切時刻を決定するかを選択する。そして締切時刻生成部３０４２は、規則および選択した算出方式に従って、締切時刻を決定する（ステップＳ２２０１）。
【０１２９】
締切時刻生成部３０４２は、決定した締切時刻から、ビットサイズ記憶部３０４１に記憶されたビットサイズの情報を用いて、締切時刻を表す締切時刻ビットと締切時刻の桁あふれを表現するラップアラウンド判定用ビットを生成し、締切時刻ビットとラップアラウンド判定用ビットから桁数制限された締切時刻を生成する（ステップＳ２２０２）。ラップアラウンド判定用ビットについては後に詳述する。
【０１３０】
ヘッダ生成部３０４３は、送信元ＩＤ、宛先ＩＤ、桁数制限された締切時刻から、ヘッダを生成する（ステップＳ２２０３）。
【０１３１】
送信制御パラメータ決定部３０４４は、ヘッダ構成規則を用いて宛先ＩＤに対応する最大送信パケット数と送信レートを決定し、最大送信パケット数と送信レートを送信間隔制御部３０５に通知する（ステップＳ２２０４）。
【０１３２】
次に、図１３に示すビットサイズを計算するプログラム２０を説明する。
【０１３３】
図１３は、ビットサイズを計算するプログラムの処理の手順を示すフローチャートである。以下の説明では、当該プログラムがバスシステム１００の設計時に利用されるとして説明する。当該プログラムを実行するのは、設計時に利用されるコンピュータである。
【０１３４】
また図１４は、コンピュータであるＰＣ２００のハードウェア構成を示す。ＰＣ２００は、中央処理ユニット（ＣＰＵ）２０１と、メモリ２０２と、グラフィックコントローラ２０３と、入力装置２０４とを備えている。これらは互いに内部バス２０５で接続されており、データの授受が可能である。
【０１３５】
ＣＰＵ２０１は、メモリ２０２に格納されているプログラム２０を実行する。このプログラムの処理手順が、図１３のフローチャートに示されている。プログラム２０の実行にあたっては、設計者は、キーボード、マウス、タッチスクリーンパネル等の入力装置２０４を介してプログラムの実行に必要なパラメータを入力し、実行指示を与える。パラメータとして、各マスタには個別に許容遅延時間が設定されているとする。
【０１３６】
次に、図１３を参照する。動作の主体は、プログラムを実行するＣＰＵ２０１である。
【０１３７】
ＣＰＵ２０１は、パケットの締切時刻同士が比較されるマスタ間で、許容遅延時間の最大値とシステムクロックの同期誤差の最大値とを受け付ける（ステップＳ２４０１）。ＣＰＵ２０１は、許容遅延時間の最大値とシステムクロックの同期誤差の最大値との和Ｘを計算する（ステップＳ２４０２）。
【０１３８】
この和Ｘに対して、ＣＰＵ２０１は、和Ｘを表現するのに十分なビットサイズＢを計算する（ステップＳ２４０３）。なお、ビットサイズＢはｃｅｉｌｉｎｇ（ｌｏｇ2Ｘ）で計算される。ここで、ｃｅｉｌｉｎｇ（Ｎ）はＮ以上の最小の整数を表し、ｌｏｇ2Ｎは値Ｎに対する底が２の対数を表す。
【０１３９】
次に、ＣＰＵ２０１は、締切時刻ビットのビットサイズを、計算したビットサイズＢに変更する（ステップＳ２４０４）。そしてＣＰＵ２０１は、ラップアラウンド判定用ビットのビットサイズを、固定値（２ビット）とする（ステップＳ２４０５）。なお、本実施形態ではラップアラウンド判定用ビットを固定値の２ビットで説明しているが、３ビット以上であってもよい。計算結果として、ＣＰＵ２０１は、締切時刻ビットのビットサイズ、およびラップアラウンド判定用ビットのビットサイズを出力する（ステップＳ２４０６）。上述の通り、計算されたビットサイズの情報は、ビットサイズ記憶部３０４１に保持される。
【０１４０】
図１５は、ビットサイズ記憶部３０４１に記憶されるビットサイズの情報の例を示す。
【０１４１】
ビットサイズ記憶部３０４１は、３種類のビットサイズの情報を記憶している。１つは締切時刻ビットの桁あふれを表現するラップアラウンド判定用ビットのビットサイズ、１つは締切時刻を表す締切時刻ビットのビットサイズ、および１つは比較に用いない下位ビットに対するマスクのビットサイズである。ヘッダ構成部１０３は、締切時刻の情報から上記３つのビットサイズの情報を用いて、桁数制限された締切時刻を生成し、パケットのヘッダに付与している。その目的は、パケットのヘッダのデータサイズを制限すること、およびルータでの比較処理の時間を短縮することである。
【０１４２】
以下では、ラップアラウンド判定用ビットを「判定用ビット」と略記する。
【０１４３】
図１６は、本実施形態によるビットの区分を示す。
【０１４４】
いま、締切時刻が２進数で表現されている１０ビット以上の情報である場合を考える（図１６では１０ビットの例を示している）。パケットのヘッダに付与するための締切時刻は、本来の締切時刻として記述される２進数の桁数（１０ビット以上）を、それよりも少ない所定の桁数に制限することで生成される。
【０１４５】
本実施形態では、桁数制限された締切時刻は、締切時刻を表現し締切時刻比較に用いられる締切時刻ビット（５ビット）、および締切時刻の桁あふれを表現する判定用ビット（２ビット）によって表される。本来の締切時刻から桁数制限された締切時刻を生成する場合は、下位ビットをビットサイズ記憶部３０４１のマスクのビットサイズ分（３ビット分）だけ無視し、判定用ビット以上の上位ビットの桁は無視する。
【０１４６】
なお、下位、上位とは、表す値が大きい方を上位、小さい方を下位とする。締切時刻ビットとマスクビットが、表現できる最大値＋１（図の例では１１１１１１１１＋１）になると、判定用ビットが１増加し（図の例では００から０１に変化し）、締切時刻ビットとマスクビットは０に戻る（図の例では００００００００）。判定用ビットは、表現できる最大値＋１（図の例では、１１＋１）になると０に戻る（図の例では００）。判定用ビットより上位の桁に関しては、パケットのヘッダには付与されない。同様に、下位ビットに関しても、マスクを行うため、パケットのヘッダには付与されない。上位および下位の桁数を制限することで、パケットに付与する締切時刻の情報のデータサイズの削減、および締切時刻比較処理の処理時間を短縮することができる。なお、必ずしも下位と上位の両方のビットを制限する必要はない。
【０１４７】
本実施形態では、まず、締切時刻は、判定用ビット、締切時刻ビットの順に比較される。すなわち、まず判定用ビットによって、締切時刻が早いか遅いかが判断され、判定用ビットによってその判断ができないときは締切時刻ビットの情報を用いて締切時刻の早いか遅いかが判断される。
【０１４８】
判定用ビットを用いた判断に当たっては、３つのケースが存在し得る。具体的には、比較される２つのビットが同じ値であるケース１、２つのビットの差分が１以上２未満であるケース２、および２つのビットの差分が２以上であるケース３である。
【０１４９】
比較される２つの判定用ビットが同じ値であるケース１では、当該ビットだけではどちらの締切時刻が早いかを判定できない。そこで、締切時刻ビットの比較処理に進み、締切時刻ビットが小さい方を早い締切時刻として判定する。
【０１５０】
比較される２つの判定用ビットの差分が１以上２未満であるケース２では、判定用ビットの値が小さい方を早い締切時刻と判定する。例えば、「００」と「０１」の比較では「００」の方が早い締切時刻として優先的に伝送される。
【０１５１】
また、比較される２つの判定用ビットの差分が２以上であるケース３では、大きい値の方が早い締切時刻として優先的に伝送される。例えば、「００」と「１１」の比較では、「１１」の締切時刻を早い時刻と判定し、優先的に伝送処理する。
【０１５２】
なお、判定用ビットが２ビットの場合、２未満か２以上かでケース２とケース３の場合を場合分けするが、３ビットの場合、４未満か４以上かで場合分けをし、一般的には、Ｎビットの場合、２のＮ乗の値を２で割った値で場合分けする。このようにして、桁数制限された締切時刻の比較が可能となる。
【０１５３】
図１７は、パケット２５０のデータ構造を示す。
【０１５４】
パケット２５０は、ヘッダ２５０ａおよびデータ２５０ｂを有する。ヘッダ２５０ａは、たとえば宛先となるノードの識別子（ＩＤ）を示す宛先ＩＤ、送信元となるノードのＩＤを示す送信元ＩＤ、パケット２５０が宛先までに到着すべき時刻を表現した締切時刻の情報を記述する。締切時刻の情報は、締切時刻ビットと締切時刻ビットの桁あふれを判定するための、判定用ビットを含む。ヘッダ２５０ａの後に、予め定められたデータ長で分割されたデータ２５０ｂが配置される。なおパケット２５０は、ヘッダ２５０ａの宛先ＩＤの情報から出力される。
【０１５５】
図１８は、判定用ビットの同期を説明する図である。
【０１５６】
本実施形態において「同期」とは、２つ以上の値が同じ時刻に同じ値を持つこと、または、２つ以上の値が同じ時刻に同じ値を持つよう、一方を他方に近づけるように時刻のカウントを制御することをいう。
【０１５７】
締切時刻の比較対象となる複数のマスタの判定用ビットが同期していない場合には、締切時刻の比較が正しく行えないことを説明する。例えば、判定用ビットが複数のマスタ間で同期して動いていない場合を考える。図１８から理解されるように、判定用ビットの変更タイミングは、マスタ０およびマスタ２と、マスタ１との間で同期していないことが理解される。パケットの伝送の締切時刻は、絶対的には、マスタ０、１および２の順に早いとする。
【０１５８】
このような状況下で判定用ビットを比較すると、マスタ０（ビットは０１）とマスタ１（ビットは００）とではマスタ１の方が早い締切時刻であるとして判断され、マスタ１のデータを格納したパケットが先に伝送される。
【０１５９】
また、伝送の締切時刻に対応する判定用ビットを見ると、マスタ１（ビットは００）とマスタ２（ビットは１１）とでは、マスタ２の方が早い締切時刻のデータを伝送していると判断される（上述のケース３に該当する）。このように、マスタ間で判定用ビットが同期していない場合は、正しい締切時刻を反映できない。なお、締切時刻比較の対象にならないマスタ同士では、判定用ビットが同期している必要はないため、同期の対象から外すことができる。
【０１６０】
図１９（Ａ）および（Ｂ）は、判定用ビットの時間幅を説明する図である。
【０１６１】
「判定用ビットの時間幅」とは、ひとつの判定用ビットの値が表現できる時間の幅のことであり、締切時刻ビットの最大値＋１（サイクル）と同じ時間幅である。
【０１６２】
本実施形態では、判定用ビットのビットサイズが２ビットであるときの例を説明する。例えば、図１９（Ａ）の場合、パケット１には判定用ビット０１（２進数）の締切時刻が付与されており、パケット２には判定用ビット１１（２進数）の締切時刻が付与されているとする。この場合、パケット１の締切時刻とパケット２の締切時刻とが同じ伝送経路上で比較される場合、まず判定用ビット（つまり０１と１１）の大小が比較される。このとき、両者の時刻の差が判定用ビットの最小値から最大値までの時間幅の半分以上離れている場合は、正しい比較を行うことができない。具体的には、判定用ビットの最小値「００」から最大値「１１」までの時間幅４（図の例では、００、０１、１０、１１）のうち、半分である「１０」および「１１」の時間幅２以上離れている場合は、正しい比較を行うことができないと言える。
【０１６３】
逆に、判定用ビットの差がそれより小さい締切時刻同士であれば、時刻が連続に変化する順番を正しく判定することができ、正しい締切時刻の比較を行うことができる。
【０１６４】
問題となるのは、前者に該当するケースである。例えば、判定用ビットが２ビットである場合、判定用ビットに２以上（２進数で１０以上）差がある「００」と「１０」の比較や、「０１」と「１１」の比較では、それぞれどちらが早い時刻か判定することができない。
【０１６５】
そこで、図１９（Ｂ）のように、締切時刻の締切時刻ビットを大きくし、判定用ビットの表現できる時間幅を大きくする。これにより、判定用ビットの時間幅の半分以上差がある時刻同士の比較が起こらないようにする。
【０１６６】
具体的には、締切時刻の比較に必要な判定用ビットの時間幅は、少なくとも比較対象となるパケットの中で、最大の許容遅延時間を表現するのに必要な時間幅を用意すればよい。その理由は、許容遅延時間内の伝送が保証されているバスシステムにおいては、パケットは許容遅延時間内に伝送を終え、宛先ノードに到着することが保証されているからである。「０１」の締切時刻を付与されたパケットがバス上を伝送される時間帯は、ひとつ前の時間帯である「００」、もしくは「０１」だからである。同様に、「０１」と比較ができない「１１」のパケットは、少なくとも「１０」もしくは「１１」の時間帯に伝送される。このように、判定用ビットの時間幅が最大許容遅延時間以上であれば、判定用ビットが２以上差のあるパケット同士での比較は行われない。よって、判定用ビットの時間幅を、最大の許容遅延時間以上表現できる時間幅だけ用意すれば、正しい比較の行えない締切時刻の比較が起こらないようにすることができる。
【０１６７】
なお、判定用ビットは、付与された締切時刻の比較に用いるため、少なくとも比較の対象となるマスタ同士では、判定用ビットの挙動、すなわち桁あふれするタイミングをなるべく近づけるように同期させる必要がある。タイミングを同期させる方法は、複数存在し、本実施形態においては、締切時刻の比較対象となるマスタ間で、締切時刻の計算に用いるシステムクロックカウンタの送信時刻を同期させつつ、桁数制限された締切時刻を生成する際の判定用ビットのビットサイズ、および締切時刻を表す締切時刻ビットのビットサイズを同じにしておくことで同期することができる。
【０１６８】
なお、システムクロックカウンタの送信時刻の同期には、システムクロックの信号を各マスタのＮＩＣのシステムクロックカウンタに直接送るための信号線を設けることで、複数のマスタ間で同期をとることができる。また変形例として、判定用ビットの信号を、各マスタのＮＩＣのシステムクロックカウンタに直接送るための信号線を設け、複数のマスタ間で同期をとってもよい。
【０１６９】
なお、要求品質（スループットと許容遅延）の厳しさに応じて、複数のマスタをクラスに分類し、ルータでの伝送処理の優先度としてクラスと締切時刻の両方を用いる場合は、同じクラスのマスタ間で判定用ビットの同期をとればよい。すなわち、クラスと締切時刻の両方を伝送の優先度として用いる場合、クラスの優先度を用いて優先的に伝送順位を決定し、同じクラスのマスタに対し締切時刻の比較で優先度を決定することで、クラスの優先度を締切時刻よりも優先的に反映できる。そのとき、締切時刻の比較対象になるマスタは同じクラスに属するマスタであるため、少なくとも同じクラスのマスタ間で判定用ビットの同期を取ればよい。また、ローカルバスごとに同じクラスのマスタが配置されている場合は、ローカルバスごとに、同期をとればよい。
【０１７０】
図２０（Ａ）および（Ｂ）は、判定用ビットの時間幅に関し、システムクロックのマスタ間誤差によって生じる問題を説明する図である。
【０１７１】
判定用ビットの必要な時間幅は、システムクロックのマスタ間の同期の誤差を考慮する必要がある。
【０１７２】
図２０（Ａ）は、マスタ間のシステムクロックの誤差を考慮しないことにより、正しい比較ができない例を示す。図２０（Ａ）の例では、システムクロックのずれにより、正しい比較ができない。例えば、パケット１の締切時刻の判定用ビットは「００」で、パケット２の締切時刻は判定用ビットは「１０」の場合、「００」と「１０」の比較では大小関係が決められない。すなわち、ＮＩＣで締切時刻を付与するときのシステムクロックのずれにより、正しい比較のできない判定用ビット同士での比較が発生する。そこで、判定用ビットの必要な時間幅は、システムクロックのマスタ間の最大誤差だけさらに大きくする必要がある。
【０１７３】
図２０（Ｂ）は、判定用ビットをシステムクロックのマスタ間の最大誤差だけ大きくした場合を説明する。今、各マスタの送信時刻、および締切時刻は、図２０（Ａ）とは変えずに、判定用ビットの表現できる時間幅をシステムクロックの誤差の分だけ大きくすることで、各締切時刻の比較が、比較可能な判定用ビット同士の比較となる。具体的には、図２０（Ａ）では「００」と「１０」の比較になっていたのが、図２０（Ｂ）では「００」と「０１」の比較になり、正しく締切時刻の比較が可能になる。このように、判定用ビットの時間幅を、最大許容遅延時間とシステムクロックのマスタ間の最大誤差の和以上用意すれば、システムクロックの誤差によって生じうる「正しい比較ができない」ケースを起こらないようにすることができる。
【０１７４】
図２１（Ａ）および（Ｂ）は、本実施形態にかかるルータおよびＮＩＣを適用可能なバストポロジーを示す。図２１（Ａ）は単一方向にパケットが伝送されるリングバスを示す。図２１（Ｂ）は双方向にパケットが伝送されるリングバスを示す。
【０１７５】
本実施形態に記載のルータおよびＮＩＣは、適用するバストポロジーには依存しない。例えば図２１（Ａ）のバスでリングバスを構成した場合、複数のマスタからメモリへパケットを送信すると、各パケットは同じ経路を通る。したがって、パケット同士の干渉が発生しやすく、締切時刻の比較を行って伝送の優先順位を制御する必要がある。
【０１７６】
一方、図２１（Ｂ）のように、マスタとメモリの配置を考慮することでバス上でのパケット同士の干渉自体を抑制することができる。リングバスを双方向のリングバスとし、複数のメモリで構成される場合、メモリとメモリの間で収容するマスタの数を２個以下とすることで、マスタが選択できる伝送経路が増えるため、バス上でのトラヒック干渉を抑えやすくなる。特に、バス上で伝送性能を保証できない量のトラヒックをマスタが送信する場合に、トラヒック干渉によるパケットのルータでの待ち時間が増大しやすい。そこで、このような伝送性能の保証をしない量のトラヒックを送信するマスタの数をメモリ間で２個以下にし、２マスタの間でそれらのトラヒックの宛先を別の宛先にすることで、経路上のトラヒック干渉を大きく抑制することができる。
【産業上の利用可能性】
【０１７７】
本開示にかかるバスインターフェース装置およびバスシステムは、半導体の集積回路における分散型バスが設けられたシステムＬＳＩに利用できる。また、コンピュータプログラムとして実施することも可能である。
【符号の説明】
【０１７８】
１００  バスシステム
１０１ａ  ローカルバス
１０１ｂ  ローカルバス
１０１ｃ  システムバス
１０２ａ、１０２ｂ  バスマスタ
１０２ｃ  ＳＲＡＭ
１０２ｄ、１０２ｅ  ＤＲＡＭ
１０３、１０３ａ〜１０３ｅ  バスインターフェース装置（ネットワークインタフェースコントローラ；ＮＩＣ）
１０４  ルータ
２００  ＰＣ
２０１  ＣＰＵ
２０２  メモリ
２０３  グラフィックコントローラ
２０４  入力装置
２０５  内部バス
３０１  送信バッファ
３０２  パケット化部
３０３  記憶装置
３０４  ヘッダ構成部
３０５  送信間隔制御部
３０６  システムクロックカウンタ
８０１  ルーティング処理部
８０２  締切時刻解釈部
８０３  バッファ
８０４  フロー制御部
８０５  バッファ割当部
８０６  送信制御部
３０４１  ビットサイズ記憶部
３０４２  締切時刻生成部
３０４３  ヘッダ生成部
３０４４  送信制御パラメータ決定部
【図１】
2014197789.tif 000003
【図２】
2014197789.tif 000004
【図３】
2014197789.tif 000005
【図４】
2014197789.tif 000006
【図５】
2014197789.tif 000007
【図６】
2014197789.tif 000008
【図７】
2014197789.tif 000009
【図８】
2014197789.tif 000010
【図９】
2014197789.tif 000011
【図１０】
2014197789.tif 000012
【図１１】
2014197789.tif 000013
【図１２】
2014197789.tif 000014
【図１３】
2014197789.tif 000015
【図１４】
2014197789.tif 000016
【図１５】
2014197789.tif 000017
【図１６】
2014197789.tif 000018
【図１７】
2014197789.tif 000019
【図１８】
2014197789.tif 000020
【図１９】
2014197789.tif 000021
【図２０】
2014197789.tif 000022
【図２１】
2014197789.tif 000023