(57)【特許請求の範囲】
【請求項１】
集積回路上に設けられたイニシエータと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、
前記バスネットワークはパケット交換方式ネットワークであり、前記イニシエータから前記バスネットワーク上のノードに宛てて、デッドライン時刻が指定された要求データが発行されたときに、前記要求データに応答した前記ノードによって発行された応答データが、前記デッドライン時刻までに前記イニシエータに受信されるよう設計されており、
前記インタフェース装置は、
前記イニシエータから発行された前記要求データの発行タイミングに基づいて、前記要求データのデッドライン時刻を補正して、補正済デッドライン時刻の情報を生成する補正部と、
前記補正済デッドライン時刻の情報を格納したパケットヘッダを生成するヘッダ生成部と、
前記要求データ、および前記パケットヘッダを利用して要求パケットを生成するパケット化処理部と
を備えた、インタフェース装置。
【請求項２】
前記イニシエータが、同じデッドライン時刻を指定して複数の要求データを発行したときにおいて、
前記補正部は、前記複数の要求データの発行タイミングの先後関係が維持されるよう、各要求データのデッドライン時刻を補正する、請求項１に記載のインタフェース装置。
【請求項３】
前記イニシエータが、同じデッドライン時刻を指定して第１要求データおよび第２要求データを順に発行したときにおいて、
前記補正部は、
前記第１要求データのデッドライン時刻を補正して、前記イニシエータによって指定された前記デッドラインよりも早い第１補正済デッドライン時刻を生成し、
前記第２要求データのデッドライン時刻を補正して、前記第１補正済デッドライン時刻よりも遅く、かつ前記イニシエータによって指定された前記デッドラインよりも早いまたは前記イニシエータによって指定された前記デッドラインと同じ第２補正済デッドライン時刻を生成する、請求項２に記載のインタフェース装置。
【請求項４】
前記補正部は、前記補正済第２デッドライン時刻として、前記第１補正済デッドライン時刻よりも遅く、かつ前記イニシエータによって指定された前記デッドライン時刻と同じ時刻を採用する、請求項３に記載のインタフェース装置。
【請求項５】
前記イニシエータが、前記第２要求データの後に、同じ前記デッドライン時刻を指定してさらに第３要求データを発行したときにおいて、
前記補正部は、最後に発行された前記第３要求データの補正後のデッドライン時刻である第３補正済デッドライン時刻として、前記イニシエータによって指定された前記デッドライン時刻と同じ時刻を採用する、請求項３に記載のインタフェース装置。
【請求項６】
前記補正部は、前記第１補正済デッドライン時刻と前記第２補正済デッドライン時刻との間隔と、前記第２補正済デッドライン時刻と前記第３補正済デッドライン時刻との間隔とが一定になるよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を生成する、請求項５に記載のインタフェース装置。
【請求項７】
前記補正部は、前記間隔が、前記バスネットワークにおいて予め定められている値に一致するよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を採用する、請求項６に記載のインタフェース装置。
【請求項８】
前記補正部は、前記第１補正済デッドライン時刻と前記第２補正済デッドライン時刻との間隔と、前記第２補正済デッドライン時刻と前記第３補正済デッドライン時刻との間隔とが異なる値になるよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を生成する、請求項５に記載のインタフェース装置。
【請求項９】
前記イニシエータには、同じデッドライン時刻を付与して発行することが可能な要求データの最大数が予め定められており、
前記補正部は、前記最大数に基づいて、複数の補正済デッドライン時刻間の間隔を決定する、請求項２に記載のインタフェース装置。
【請求項１０】
前記イニシエータは、同じデッドライン時刻を付与して発行する要求データのデータ数を示す情報を出力し、
前記補正部は、前記データ数に基づいて、複数の補正済デッドライン時刻間の間隔を決定する、請求項２に記載のインタフェース装置。
【請求項１１】
前記バスネットワークは、前記イニシエータから前記ノードまでの間でパケットを中継する少なくとも１つのルータを有し、かつ、前記バスネットワークには、前記イニシエータを含む複数のイニシエータが接続されており、
前記少なくとも１つのルータが中継するパケットの要求データを発行する２以上のイニシエータの各々には、同じデッドライン時刻を付与して発行することが可能な要求データの最大数が予め定められており、
前記補正部は、前記２以上のイニシエータに定められた各最大数のうちの最大値に基づいて、複数の補正済デッドライン時刻間の間隔を決定する、請求項２に記載のインタフェース装置。
【請求項１２】
前記ヘッダ生成部は、前記バスネットワーク上で前記イニシエータを一意に特定する識別子を前記パケットヘッダにさらに格納する、請求項１に記載のインタフェース装置。
【請求項１３】
前記ヘッダ生成部は、前記補正済デッドライン時刻の情報を前記パケットヘッダに格納し、かつ、前記バスネットワーク上で前記イニシエータを一意に特定する識別子を格納しない、請求項１に記載のインタフェース装置。
【請求項１４】
前記ヘッダ生成部は、前記補正済デッドライン時刻の情報を前記パケットヘッダに格納し、さらに前記要求データの送信元である前記イニシエータを特定する情報を前記パケットヘッダに格納する、請求項１に記載のインタフェース装置。
【請求項１５】
前記ノードは、前記バスネットワークとメモリとを接続するメモリコントローラであり、
前記ヘッダ生成部は、前記補正済デッドライン時刻と前記メモリコントローラの宛先の情報を前記パケットヘッダに格納する、請求項１に記載のインタフェース装置。
【請求項１６】
集積回路上に形成されたバスネットワークと
前記バスネットワークに接続されたイニシエータと、
請求項１から１５のいずれかに記載のインタフェース装置であって、前記イニシエータと前記バスネットワークとを接続するインタフェース装置と
を備えた、バスシステム。
【請求項１７】
集積回路上に形成されたバスネットワークと
前記バスネットワークに接続された複数のイニシエータと、
各々が、請求項１から１５のいずれかに記載の複数のインタフェース装置であって、前記複数のイニシエータの各々と前記バスネットワークとを接続する、複数のインタフェース装置と
を備えたバスシステムであって、
前記ルータは、
前記複数のイニシエータの各々と接続された各インタフェース装置から送信された要求パケットを格納するバッファと、
各々が異なる伝送経路に接続された、複数の出力ポートと、
特定の出力ポートから出力される要求パケットが複数存在する場合において、予め定められた調停ルールに従って定まる順序で、前記特定の出力ポートからの各要求パケットの送信を調停する調停器と
を備えた、バスシステム。
【請求項１８】
前記ルータの調停器は、デッドライン時刻が早く到来する要求パケットから出力されるように定められた調停ルールを有しており、前記特定の出力ポートから出力される複数の要求パケットにそれぞれ格納されている、複数の補正済デッドライン時刻と前記調停ルールとにしたがって、前記特定の出力ポートからの各要求パケットの送信を調停する、請求項１７に記載のバスシステム。
【請求項１９】
前記ノードは、前記バスネットワークとメモリとを接続するメモリコントローラであり、
各インタフェース装置のヘッダ生成部は、前記補正済デッドライン時刻と前記メモリコントローラの宛先の情報を前記パケットヘッダに格納する、請求項１７に記載のバスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ネットワーク化された通信バスを備える半導体チップにおいて、通信バスの制御を行うための装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）が利用される組込機器分野や汎用プロセッサ分野において、半導体チップの高機能化への要求が高まっている。半導体チップの高機能化に伴い、チップ上の通信バスを介して転送されるデータの要求帯域が増加し、通信バスの広帯域化が必要となってきている。低いバス動作周波数で通信バスを広帯域化するため、バス配線をプロセッサ間で共用し、資源利用効率の向上が可能なネットワーク・オン・チップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ；ＮｏＣ）が注目されている。【０００３】
ＮｏＣには、たとえば複数のイニシエータと、メモリコントローラが接続される。各イニシエータとメモリコントローラとの間の通信は、パケットを利用して行われる。パケットはＮｏＣ上に配置されたＮｏＣルータによって中継される。【０００４】
図１は、一般的なＮｏＣルータの構成を示す。ＮｏＣルータは、複数の入出力ポートを有しており、入力ポート側にバッファが設けられている。このバッファは、１つの入力ポートごとに２つの仮想チャネル（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ；ＶＣ）を有している。【０００５】
各仮想チャネル（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ；ＶＣ）には、入力された１つのパケットが格納される。ＶＣ内のパケットは、パケットのヘッダに格納されたパケットの宛先情報をもとに、クロスバスイッチにより、適切な出力ポートにスイッチされ、転送される。異なるＶＣ内に、同じ出力ポートに出力すべきパケットが複数存在する場合には、調停器の調停ルールに従い、パケットがひとつずつ選択され順次出力される。選択されずにＶＣ内に残ったパケットは、次の送信機会に再度調停される。【０００６】
特許文献１は、パケットの調停技術に関する。パケットヘッダ内にはパケットが生成されてからの経過時刻の情報が格納される。同一の出力ポートにスイッチして出力すべき複数のパケットが存在する場合には、その調停時に、ルータは各パケットヘッダ内の経過時刻を比較し、最も経過時刻の大きいパケットが選択され、出力ポートに割り当てられる。これにより、パケットのルータ網でのレイテンシを抑制し、高速なバスアクセスを実現することが可能になる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第６６７４７２０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
イニシエータが発行した要求を、その要求にしたがって確実に処理することができる技術が求められている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の一態様は、集積回路上に設けられたイニシエータと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、前記バスネットワークはパケット交換方式ネットワークであり、前記イニシエータから前記バスネットワーク上のノードに宛てて、デッドライン時刻が指定された要求データが発行されたときに、前記要求データに応答した前記ノードによって発行された応答データが、前記デッドライン時刻までに前記イニシエータに受信されるよう設計されており、前記インタフェース装置は、前記イニシエータから発行された前記要求データの発行タイミングに基づいて、前記要求データのデッドライン時刻を補正して、補正済デッドライン時刻の情報を生成する補正部と、前記補正済デッドライン時刻の情報を格納したパケットヘッダを生成するヘッダ生成部と、前記要求データ、および前記パケットヘッダを利用して要求パケットを生成するパケット化処理部とを備えている。【００１０】
上述の一般的または特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１１】
本発明の一態様にかかるインタフェース装置によれば、イニシエータから発行された要求データの発行タイミングに基づいて、要求データのデッドライン時刻が補正される。要求データには補正済デッドライン時刻が設定されてバスネットワークを伝送される。これにより、各イニシエータに要求される即応性を担保しながら、要求データの送信順序と応答データの受信順序とを一致させることが可能となる。【００１２】
順序によって要求データに対応する応答データを特定できるため、パケットＩＤをパケットヘッダに格納する必要がなくなる。これにより、パケットヘッダのサイズを削減することが可能となり、データ転送のオーバーヘッドを低減することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】一般的なＮｏＣルータの構成を示す図である。
【図２】（ａ）〜（ｅ）は、複数のイニシエータ側ＮＩＣからの要求パケットの送信タイミング、ルータでの転送タイミング、および各イニシエータ側ＮＩＣによる応答パケットの受信タイミングを示す図である。
【図３】レイテンシＬの定義を説明するための例を示す図である。
【図４】ＮｏＣにより複数のイニシエータと複数のメモリが接続されたＳｏＣ２００の構造を示す図である。
【図５】（ａ）〜（ｄ）は、ＮｏＣ上で送受信されるパケットの種類とその構成例を示す図である。
【図６】パケットのヘッダ５１の構成例を示す図である。
【図７】ＮＩＣ２０３の構成を示す図である。
【図８】ルータ２０５の構成を示す図である。
【図９】（ａ）〜（ｅ）は、本実施形態による、複数のイニシエータ側ＮＩＣからの要求パケットの送信タイミング、ルータでの転送タイミング、および各イニシエータ側ＮＩＣによる応答パケットの受信タイミングを示す図である。
【図１０】（ａ）はイニシエータ２０１ａが、メモリ２０６ｂ宛の４つのアクセス要求パケットＡ１、Ａ２、Ａ３、Ａ４を発行している様子を示す図であり、（ｂ）はルータ２０５ｃにおける、ＮＩＣ２０４ｂへのパケットＡ１、Ａ２、Ａ３、Ａ４の転送タイミングを示す図である。
【図１１】（ａ）はイニシエータ２０１ａが、同一のデッドライン時刻Ｔｄをもつ４つの要求パケットＡ１、Ａ２、Ａ３、Ａ４を時刻Ｔａ１、Ｔａ２、Ｔａ３、Ｔａ４に送信している様子を示す図であり、（ｂ）は上述の処理の結果ルータ２０５ｃから送信された、４つのパケットの順序を示す図である。
【図１２】（ａ）〜（ｄ）は、時刻Ｔｂ１、Ｔｂ２、Ｔｂ３、Ｔｂ４における、ルータ２０５ｃの各仮想チャネルＶＣの様子を示す図である。
【図１３】（ａ）はイニシエータ２０１ａ側ＮＩＣから送信されたパケット群の順序を示す図であり、（ｂ）はバスネットワーク２５０上を転送されるパケット群の順序を示す図である。
【図１４】（ａ）〜（ｄ）は、本実施形態にかかる補正済デッドライン時刻が設定されたときの、時刻Ｔｂ１、Ｔｂ２、Ｔｂ３、Ｔｂ４における、ルータ２０５ｃの各仮想チャネルＶＣの様子を示す図である。
【図１５】補正部１０２の処理フローを示す図である。
【図１６】（ａ）はｎ個のメモリアクセス要求Ｃ（０）、Ｃ（１）、・・・、Ｃ（ｎ−１）が時間順にバスマスタから要求され、これらｎ個の要求パケットに対するデッドライン時刻が全てｄである場合を示す図であり、（ｂ）は補正済デッドライン時刻Ｄ（０）、Ｄ（１）、・・・、Ｄ（ｎ−１）を示す図である。
【図１７】ヘッダ生成部１０３の処理フローを示す図である。
【図１８】パケットＩＤを用いない要求パケットヘッダの構成例を示す図である。
【発明を実施するための形態】
【００１４】
本願発明者らは、上述した従来の構成に存在する課題を検討した。
【００１５】
ＡＸＩ、ＯＣＰ、ＡＨＢなどのオンチップバス・プロトコルでインタフェースされるイニシエータやターゲットを、パケット交換ネットワークであるＮｏＣに相互接続するには、パケット化や脱パケット化処理を行うインタフェース装置が必要である。このようなインタフェース装置は、一般的にはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）と呼ばれる。すなわち、ＮＩＣは、イニシエータやターゲットなどノードと、ＮｏＣとを接続するために設けられる。
【００１６】
図２（ａ）〜（ｅ）は、複数のイニシエータ側ＮＩＣからの要求パケットの送信タイミング、ルータでの転送タイミング、および各イニシエータ側ＮＩＣによる応答パケットの受信タイミングを示す。
【００１７】
図２（ａ）および（ｂ）は、２つのイニシエータ（イニシエータａとイニシエータｂ）側のＮＩＣが、メモリにアクセス要求パケットを送信するタイミングを示す。図２（ｃ）は、イニシエータａ側ＮＩＣおよびイニシエータｂ側ＮＩＣの要求パケットを、転送経路上のルータが転送するタイミングを示す。全てのパケットは、このルータの同一の出力ポートから転送されるとする。図２（ｄ）および（ｅ）は、イニシエータａ側ＮＩＣおよびイニシエータｂ側ＮＩＣが、メモリからアクセス応答パケットを受信するタイミングを示す。横軸は時間の経過を表し、右にいくほど時間が進んでいることを示す。
【００１８】
イニシエータｂ側ＮＩＣは、時刻Ｔ０、Ｔ１に２つのパケットを送信する。それぞれのパケットのデッドライン時刻は、時刻Ｔ８、Ｔ９である。イニシエータａ側ＮＩＣは、時刻Ｔ２に１つのパケットを送信する。そのデッドライン時刻は、時刻Ｔ７である。
【００１９】
パケットの「デッドライン時刻」とは、該パケットの要求に対する応答がイニシエータに到着するまでに要する時間（レイテンシ）に対する最大許容限界の値である。デッドライン時刻はイニシエータによって指定される。
【００２０】
パケットＡ１、Ｂ１、Ｂ２は転送経路上のルータの仮想チャネルに格納され、次の調停タイミングで転送される。パケットＡ１、Ｂ１、Ｂ２が同一の出力ポートに転送されるよう経路が設定されている場合には、パケットの転送順序は、パケット生成時点からの経過時刻によって決定される。つまり、図２（ｃ）に示すように、パケットＢ１、Ｂ２、Ａ１の順に転送されることになる。これは、デッドライン時刻が最も早いイニシエータａ側ＮＩＣからのパケットが最後に処理されることを意味する。
【００２１】
このような転送経路上でのパケットＡ１の遅延により、イニシエータａ側ＮＩＣは、要求パケットＡ１に対する応答パケットａ１を、時刻Ｔ８に受信する。つまり、イニシエータａは、デッドライン時刻Ｔ７までに応答パケットａ１を受信できない。
【００２２】
デッドライン時刻を越えて応答がイニシエータに届いた場合には、イニシエータでの処理結果が保証されなくなる。一例として、いま、フレームレートが毎秒６０フレームの映像のフレームデータを受信する処理を考える。映像のフィルタリング処理などを行うイニシエータは、各フレームデータのメモリからの読み出しを１／６０秒以内に完了する必要がある。そのため、メモリからのフレームデータの読み出しの要求パケットに対するデッドライン時刻は、要求パケット発行時点から１／６０秒以内に設定される。しかしながら、デッドライン時刻を過ぎて応答パケットがイニシエータ側ＮＩＣに到着すると、イニシエータはフレームレート以内で各フレームの映像処理を行うことができない。その結果、再生画面がフリーズし、または再生画面の一部が欠落する、という異常を生じさせる。
【００２３】
このように、各イニシエータが異なるデッドライン時刻を指定するような場合には、経過時刻によって転送順序を決定する方法では、デッドライン時刻の早いパケットでメモリアクセスのレイテンシ制約が守れなくなる場合がある。
【００２４】
ここで図３を参照しながら、レイテンシを説明する。図３は、レイテンシＬの定義を説明するための例を示す。本例では、イニシエータがメモリアクセスを行う際のレイテンシを説明する。「レイテンシ」とは、イニシエータがメモリアクセスの要求をバスに対して発行した時刻を起点として、メモリアクセスの実行時間を含めて、メモリアクセスの結果である応答データがイニシエータに到着するまでに要した時間の全体を意味する。レイテンシが大きくなり、デッドライン時刻を越えてしまった場合、イニシエータ側の処理が要求するリアルタイム性を、該メモリアクセスが満たすことができない。その結果、上述の例からも明らかなように、該メモリアクセス結果のデータを用いて行われるはずの、イニシエータ側の処理の結果は保証されない。
【００２５】
なおデッドライン時刻は、イニシエータの行う処理の内容に依存して決まるため、デッドライン時刻も要求毎（パケット毎）に異なるのが普通である。例えば、映像を処理するイニシエータと、音声を処理するイニシエータのメモリアクセスに対するデッドライン時刻は異なる。よって、図２に示すイニシエータａおよびｂのように、デッドライン時刻が異なるパケットが送信されることは当然に想定される。
【００２６】
本発明の一態様の概要は以下のとおりである。
【００２７】
本発明の一態様であるインタフェース装置は、集積回路上に設けられたイニシエータと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、前記バスネットワークはパケット交換方式ネットワークであり、前記イニシエータから前記バスネットワーク上のノードに宛てて、デッドライン時刻が指定された要求データが発行されたときに、前記要求データに応答した前記ノードによって発行された応答データが、前記デッドライン時刻までに前記イニシエータに受信されるよう設計されており、前記インタフェース装置は、前記イニシエータから発行された前記要求データの発行タイミングに基づいて、前記要求データのデッドライン時刻を補正して、補正済デッドライン時刻の情報を生成する補正部と、前記補正済デッドライン時刻の情報を格納したパケットヘッダを生成するヘッダ生成部と、前記要求データ、および前記パケットヘッダを利用して要求パケットを生成するパケット化処理部とを備えている。
【００２８】
ある実施形態において、前記イニシエータが、同じデッドライン時刻を指定して複数の要求データを発行したときにおいて、前記補正部は、前記複数の要求データの発行タイミングの先後関係が維持されるよう、各要求データのデッドライン時刻を補正する。
【００２９】
ある実施形態において、前記イニシエータが、同じデッドライン時刻を指定して第１要求データおよび第２要求データを順に発行したときにおいて、前記補正部は、前記第１要求データのデッドライン時刻を補正して、前記イニシエータによって指定された前記デッドラインよりも早い第１補正済デッドライン時刻を生成し、前記第２要求データのデッドライン時刻を補正して、前記第１補正済デッドライン時刻よりも遅く、かつ前記イニシエータによって指定された前記デッドラインよりも早いまたは前記イニシエータによって指定された前記デッドラインと同じ第２補正済デッドライン時刻を生成する。
【００３０】
ある実施形態において、前記補正部は、前記補正済第２デッドライン時刻として、前記第１補正済デッドライン時刻よりも遅く、かつ前記イニシエータによって指定された前記デッドライン時刻と同じ時刻を採用する。
【００３１】
ある実施形態において、前記イニシエータが、前記第２要求データの後に、同じ前記デッドライン時刻を指定してさらに第３要求データを発行したときにおいて、前記補正部は、最後に発行された前記第３要求データの補正後のデッドライン時刻である第３補正済デッドライン時刻として、前記イニシエータによって指定された前記デッドライン時刻と同じ時刻を採用する。
【００３２】
ある実施形態において、前記補正部は、前記第１補正済デッドライン時刻と前記第２補正済デッドライン時刻との間隔と、前記第２補正済デッドライン時刻と前記第３補正済デッドライン時刻との間隔とが一定になるよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を生成する。
【００３３】
ある実施形態において、前記補正部は、前記間隔が、前記バスネットワークにおいて予め定められている値に一致するよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を採用する。
【００３４】
ある実施形態において、前記補正部は、前記第１補正済デッドライン時刻と前記第２補正済デッドライン時刻との間隔と、前記第２補正済デッドライン時刻と前記第３補正済デッドライン時刻との間隔とが異なる値になるよう、前記第１補正済デッドライン時刻、前記第２補正済デッドライン時刻、および前記第３補正済デッドライン時刻を生成する。
【００３５】
ある実施形態において、前記イニシエータには、同じデッドライン時刻を付与して発行することが可能な要求データの最大数が予め定められており、前記補正部は、前記最大数に基づいて、複数の補正済デッドライン時刻間の間隔を決定する。
【００３６】
ある実施形態において、前記イニシエータは、同じデッドライン時刻を付与して発行する要求データのデータ数を示す情報を出力し、前記補正部は、前記データ数に基づいて、複数の補正済デッドライン時刻間の間隔を決定する。
【００３７】
ある実施形態において、前記バスネットワークは、前記イニシエータから前記ノードまでの間でパケットを中継する少なくとも１つのルータを有し、かつ、前記バスネットワークには、前記イニシエータを含む複数のイニシエータが接続されており、前記少なくとも１つのルータが中継するパケットの要求データを発行する２以上のイニシエータの各々には、同じデッドライン時刻を付与して発行することが可能な要求データの最大数が予め定められており、前記補正部は、前記２以上のイニシエータに定められた各最大数のうちの最大値に基づいて、複数の補正済デッドライン時刻間の間隔を決定する。
【００３８】
ある実施形態において、前記ヘッダ生成部は、前記バスネットワーク上で前記イニシエータを一意に特定する識別子を前記パケットヘッダにさらに格納する。
【００３９】
ある実施形態において、前記ヘッダ生成部は、前記補正済デッドライン時刻の情報を前記パケットヘッダに格納し、かつ、前記バスネットワーク上で前記イニシエータを一意に特定する識別子を格納しない。
【００４０】
ある実施形態において、前記ヘッダ生成部は、前記補正済デッドライン時刻の情報を前記パケットヘッダに格納し、さらに前記要求データの送信元である前記イニシエータを特定する情報を前記パケットヘッダに格納する。
【００４１】
ある実施形態において、前記ノードは、前記バスネットワークとメモリとを接続するメモリコントローラであり、前記ヘッダ生成部は、前記補正済デッドライン時刻と前記メモリコントローラの宛先の情報を前記パケットヘッダに格納する。
【００４２】
本発明の他の一態様であるバスシステムは、集積回路上に形成されたバスネットワークと、前記バスネットワークに接続されたイニシエータと、上述のいずれかのインタフェース装置であって、前記イニシエータと前記バスネットワークとを接続するインタフェース装置とを備えている。
【００４３】
本発明の他の一態様であるバスシステムは、集積回路上に形成されたバスネットワークと、前記バスネットワークに接続された複数のイニシエータと、各々が、上述したいずれかのインタフェース装置であって、前記複数のイニシエータの各々と前記バスネットワークとを接続する、インタフェース装置を複数備えており、前記ルータは、前記複数のイニシエータの各々と接続された各インタフェース装置から送信された要求パケットを格納するバッファと、各々が異なる伝送経路に接続された、複数の出力ポートと、特定の出力ポートから出力される要求パケットが複数存在する場合において、予め定められた調停ルールに従って定まる順序で、前記特定の出力ポートからの各要求パケットの送信を調停する調停器を備えている。
【００４４】
ある実施形態において、前記ルータの調停器は、デッドライン時刻が早く到来する要求パケットから出力されるように定められた調停ルールを有しており、前記特定の出力ポートから出力される複数の要求パケットにそれぞれ格納されている、複数の補正済デッドライン時刻と前記調停ルールとにしたがって、前記特定の出力ポートからの各要求パケットの送信を調停する。
【００４５】
ある実施形態において、前記ノードは、前記バスネットワークとメモリとを接続するメモリコントローラであり、各インタフェース装置のヘッダ生成部は、前記補正済デッドライン時刻と前記メモリコントローラの宛先の情報を前記パケットヘッダに格納する。
【００４６】
以下、添付の図面を参照しながら、本実施形態を説明する。
【００４７】
（実施の形態１）
図４は、ＮｏＣにより複数のイニシエータと複数のメモリが接続されたＳｏＣ２００の構造を示す。ＳｏＣ２００は、パケット交換方式のバスネットワーク（分散型バスネットワーク）２５０を備えた半導体の集積回路（チップ）である。ＳｏＣ２００では、チップ上に構築されたネットワーク２５０によって、複数のイニシエータ２０１ａ〜２０１ｅと、複数のメモリ２０６ａ、２０６ｂとが接続されている。メモリ２０６ａ、２０６ｂに対応して、メモリコントローラ２０２ａおよび２０２ｂも設けられている。
【００４８】
イニシエータ２０１ａ〜２０１ｅは、プロセッサ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｏｒ）、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイスなどである。
【００４９】
図示されるＮＩＣ、およびメモリコントローラは、それぞれがチップ（ＳｏＣ２００）上に構築された電子的な回路であってもよいし、ＳｏＣ２００と配線されて動作するコンパニオン・チップのような形態であってもよい。ＮＩＣは、特定の物理層および／またはデータリンク層を使用して通信を行うことができる。
【００５０】
メモリ２０６ａ、２０６ｂはイニシエータ２０１ａ〜２０１ｅの各々からアクセスされる記憶装置である。メモリは、たとえばＤＲＡＭ、ＳＲＡＭ、ＥＥＰＲＯＭ等を含む。各イニシエータやメモリが混在するＳｏＣ２００上では、ＡＸＩ，ＡＨＢ，ＡＰＢ，ＯＣＰ，ＰＩＦなどの任意のバスプロトコル・インタフェースの混在が許される。各イニシエータやメモリは、イニシエータ側ＮＩＣ２０３ａ〜２０３ｅ、メモリ側ＮＩＣ２０４ａ、２０４ｂ、およびメモリコントローラ２０２ａおよび２０２ｂを介して、ルータで構成されるパケット交換ネットワーク２５０に接続される。各ＮＩＣはパケット交換ネットワーク２５０へのバスプロトコル変換処理を行い、イニシエータ−メモリ間で送受信されるメモリアクセスのデータを、パケット化／脱パケット化してＮｏＣバスにインタフェースする。
【００５１】
メモリコントローラ側ＮＩＣ２０４ａ、２０４ｂは、ルータ網から受信したデータを脱パケット化し、メモリコントローラ２０２ａ、２０２ｂに渡すと共に、メモリから読み出され、メモリコントローラ２０２ａ、２０２ｂから取得したアクセス結果をパケット化し、ルータ網に転送する。
【００５２】
本実施形態は、ＳｏＣのバスネットワークとして、ＳｏＣ上に設けられたメモリアクセス用バスを例に挙げて説明する。
【００５３】
図５（ａ）〜（ｄ）は、ＮｏＣ上で送受信されるパケットの種類とその構成例を示す。
【００５４】
図５（ａ）および（ｂ）は、ライトおよびリードの各要求パケットの構成例を示す。ライトの要求パケットは、ヘッダ５１ａおよび要求データ５２ａを含む。リードの要求パケットは、ヘッダ５１ｂおよび要求データ５２ｂを含む。
【００５５】
図５（ｃ）および（ｄ）は、ライトおよびリードの各応答パケットの構成例を示す。応答パケットとは、要求パケットに応答して実行された結果を示すデータを格納する。ライトの応答パケットは、ヘッダ５１ｃおよび応答データ５２ｃを含む。リードの応答パケットは、ヘッダ５１ｄおよびリードデータ５２ｄを含む。
【００５６】
図６は、パケットのヘッダ５１の構成例を示す。ヘッダ５１は、たとえばパケットＩＤフィールド５１−１、パケット種別フィールド５１−２、送信元フィールド５１−３、宛先フィールド５１−４、デッドライン情報フィールド５１−５、データサイズフィールド５１−６を有している。これら以外の情報を格納するフィールドがヘッダに含まれても良い。
【００５７】
パケットＩＤフィールド５１−１は、ＮＩＣで、送信したリクエストパケットと対応するレスポンスパケットの対応関係を管理するための、イニシエータ毎に一意の識別子（パケットＩＤ）を格納する。パケットＩＤは、要求パケットと応答パケットの対応付けを行うために用いられる。
【００５８】
パケット種別フィールド５１−２は、該パケットがリードの要求か応答か、ライトの要求か応答かを示す情報（パケット種別情報）を格納する。パケット種別情報は、メモリアクセスパケットやリード、ライトの区別、制御パケットの区別などを行うために利用される。
【００５９】
送信元フィールド５１−３や宛先フィールド５１−４は、ＮｏＣルータがパケットの配送経路をルーティングする場合に必要となる、システムで一意の宛先となるイニシエータやメモリのＩＤを格納する。
【００６０】
デッドライン情報フィールド５１−５は、要求パケットに対応した応答パケットのデータがイニシエータに返信されるまでに許容できるレイテンシから求められる値を格納する。
【００６１】
データサイズフィールド５１−６は、メモリからのリードやライトのデータサイズを指定するための情報を格納する。
【００６２】
図７は、本開示にかかるＮＩＣ２０３の構成を示す。ＮＩＣ２０３は、図４に示すイニシエータ側のＮＩＣ２０３ａ〜２０３ｅの各々に対応する。なお、パケット交換ネットワーク２５０上のＮＩＣ２０３ａ〜２０３ｅは、共通に参照可能な、または、ＮＩＣ間で同期された、計数カウンタＳＴＣ（Ｓｙｓｔｅｍ  Ｔｉｍｅ  Ｃｌｏｃｋ；図示せず）をもち、現在時刻の取得やデッドライン時刻の算出に用いることが可能である。
【００６３】
ＮＩＣ２０３は、パケット交換ネットワーク２５０に接続される。図７では、ＮＩＣ２０３は、イニシエータ１０６と、パケット交換ネットワーク２５０の一部を構成するルータ１０７とに接続されている。ＮＩＣ２０３は、イニシエータ１０６から、要求データとともにデッドライン時刻の情報を受信する。またＮＩＣ２０３は、イニシエータ１０６に、応答データを送信する。
【００６４】
ＮＩＣ２０３は、デッドライン時刻補正部１０２と、ヘッダ生成部１０３と、パケット化処理部１０４と、脱パケット化処理部１０５とを有している。
【００６５】
デッドライン時刻補正部１０２（以下、「補正部１０２」と記述する。）は、イニシエータ１０６のメモリアクセス要求の発行タイミングを検出する。そして補正部１０２は、その発行タイミングの順序が維持されるよう、要求データのデッドライン時刻を補正して、補正済デッドライン時刻ｄの情報を生成する。より具体的に説明すると、補正部１０２は、イニシエータ１０６が許容可能なレイテンシの値Ｌと、ＳＴＣから取得可能なイニシエータ１０６の要求発行時刻Ｓの値とを利用して、補正済デッドライン時刻ｄを計算する。
【００６６】
ヘッダ生成部１０３は、要求パケットのためのヘッダ５１を生成する。ヘッダ生成部１０３が生成するヘッダ５１の構造は、図６に示す通りである。ヘッダ生成部１０３は、補正部１０２により生成された補正済デッドライン時刻ｄの情報を、デッドライン情報フィールド５１−５に格納する。なお、通常のルータであれば、イニシエータ１０６に指定されたデッドライン時刻を示す情報をデッドライン情報フィールド５１−５に格納する。
【００６７】
パケット化処理部１０４は、イニシエータ１０６からの各メモリアクセス要求Ｃ（ｉ）に応じて、ヘッダ生成部１０３で生成された要求パケットのヘッダと、イニシエータからの要求データからアクセスするメモリのアドレス、ライトの場合にはライトするデータを取得し、要求パケットを生成する。パケット化処理部１０４が生成するパケットの構造は、図５（ａ）または図５（ｂ）に示す通りである。パケット化処理部１０４は、生成した要求パケットを、ルータ１０７に送信する。
【００６８】
脱パケット化処理部１０５は、ルータ１０７から受信した応答パケット（図５（ｃ）または図５（ｄ））を脱パケット化する。脱パケット化処理部１０５は、応答パケットがライト要求に対応するパケットである場合には、ライトのステータスを応答データ５２ｃとしてイニシエータ１０６に送信する。または、脱パケット化処理部１０５は、応答パケットがリード要求に対応するパケットである場合には、リードのステータスとリード結果であるリードデータ５２ｄを応答データとして、イニシエータ１０６に送信する。これにより、イニシエータ１０６のメモリへのアクセスが完了する。
【００６９】
図８は、ルータ２０５の構成を示す。ルータ２０５は、複数の入力ポート２１０と、調停器２１１と、バッファ２１２と、クロスバスイッチ２１３と、複数の出力ポート２１４とを備えている。複数の入力ポート２１０および複数の出力ポート２１４は、入出力のインタフェース端子である。バッファ２１２は、たとえばＲＡＭである。
【００７０】
図８に示されるルータ２０５は、図４に示すルータ２０５ｃに対応する。また図８では、ルータ２０５が、図４のルータ２０５ａ、２０５ｂ、およびＮＩＣ２０３ｅからパケットを受信し、ＮＩＣ２０４ｂにパケットを出力するとして記載している。
【００７１】
複数の入力ポート２１０は、他のルータやＮＩＣからのパケットを受信する。複数の入力ポート２１０において受信されたパケットは、バッファ２１２に格納される。バッファ２１２は、１つの入力ポートごとに２つの仮想チャネル（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ；ＶＣ）を有している。各仮想チャネルＶＣには、１つのパケットが格納される。図８には、パケットＡ１、Ｂ１およびＢ２が格納された３つの仮想チャネルと、まだパケットを格納していない３つのチャネルとが例示されている。
【００７２】
調停器２１１は、各仮想チャネルＶＣに格納されたパケットのパケットヘッダの宛先フィールド５１−４を参照し、パケットの宛先の情報を取得する。そして調停器２１１は、異なる仮想チャネルＶＣ内に、同じ出力ポートに出力すべきパケットが複数存在するか否かを判定する。そのようなパケットが存在する場合には、調停器２１１は、後述する調停ルールに従い、パケットをひとつずつ順次選択する。
【００７３】
調停器２１１は、選択したパケットが、その宛先に至る出力ポートに出力されるよう、クロスバスイッチ２１３を切り替える。これにより、パケットが宛先に向けて転送されることになる。なお、図８に示す例では、調停器２１１がクロスバスイッチ２１３の切り替え制御を行うとして説明するが、この構成は一例である。調停器２１１に代わる制御回路（図示せず）がクロスバスイッチ２１３の切り替え制御を行ってもよい。
【００７４】
選択されずに仮想チャネルＶＣ内に残ったパケットは、次の送信機会に再度調停される。
【００７５】
次に、図９を参照しながら、本実施形態にかかるルータ２０５の調停ルールを説明する。なお、前提として、図４のパケット交換ネットワーク２５０では、イニシエータ２０１ａからメモリコントローラ２０２ｂに向かうパケットは、ルータ２０５ａ、ルータ２０５ｃを経由して、メモリコントローラ２０２ｂに到達するよう、その経路が設定されている。またイニシエータ２０１ｂからメモリコントローラ２０２ｂに向かうパケットは、ルータ２０５ｂ、ルータ２０５ｃを経由して、メモリコントローラ２０２ｂに到達するよう、その経路が設定されている。また各メモリコントローラから各イニシエータに向かうパケットは、イニシエータからメモリコントローラに向かう経路と逆の経路を通るよう、その経路が設定されている。
【００７６】
図９（ａ）は、イニシエータ２０１ａ側ＮＩＣのパケット送信タイミングとデッドライン時刻との関係を示す。イニシエータ２０１ａ側ＮＩＣは、時刻Ｔ２にメモリ２０６ｂに対するリード要求パケットＡ１を送信している。そのデッドライン時刻は、時刻Ｔ７である。なお、図９（ａ）〜（ｅ）では、右にいくほど時間が進んでいることを示す。
【００７７】
また図９（ｂ）は、イニシエータ２０１ｂ側ＮＩＣのパケット送信タイミングとデッドライン時刻との関係を示す。イニシエータ２０１ｂ側ＮＩＣは、時刻Ｔ０、Ｔ１にメモリ２０６ｂに対する２つのメモリリードの要求パケットＢ１、Ｂ２を送信している。それぞれのパケットのデッドライン時刻は、時刻Ｔ８、Ｔ９である。
【００７８】
これらのパケットＡ１、Ｂ１、Ｂ２は、ルータ２０５ｃに到達し、その仮想チャネルＶＣに格納される。先に説明した図８は、ルータ２０５ｃにおいて、３つの要求パケットＡ１、Ｂ１、Ｂ２がＶＣ内に格納され、次の出力調停を待っている時刻Ｔ３における状態を示している。
【００７９】
出力ポート競合時のルータの調停ルールとして、調停器２１１は、競合する各パケットのヘッダ内に格納されているデッドライン情報を比較し、デッドライン時刻の早いパケットから先に出力ポートを割り当てる。本実施形態では、デッドライン情報は、時間経過を反映させた大小関係をもつことを前提に説明を行う。たとえば、デッドライン情報は、デッドライン時刻が早いほど小さく、遅いほど大きくしてもよいし、逆にデッドライン時刻が遅いほど小さく、早いほど大きくしてもよい。いずれにするかは設計事項である。ただし、このようなデッドライン情報の表現形式は一例である。これに限定される必要はない。
【００８０】
図９（ｃ）は、ルータ２０５ｃの調停器２１１が、デッドライン情報の小さいパケットから順に出力ポートを割り当てた結果、パケットＡ１、Ｂ１、Ｂ２がこの順で出力されている様子を示す。時刻Ｔ３での調停処理において、調停器２１１は、メモリ２０６ｂに到達可能な同一の出力ポートの割当を要求するパケットＡ１、Ｂ１、Ｂ２のデッドライン時刻である、Ｔ７、Ｔ８、Ｔ９を比較する。Ｔ７＜Ｔ８＜Ｔ９の関係から、調停器２１１は、まずパケットＡ１に出力ポートを割り当てる。その結果、時刻Ｔ３の調停では、パケットＡ１が転送される。また続いて時刻Ｔ４の調停では、調停器２１１は、Ｔ８＜Ｔ９の関係から、パケットＢ１に出力ポートを割り当てる。その結果、時刻Ｔ４の調停では、パケットＢ１が転送される。続いて時刻Ｔ５の調停では、出力ポートが競合するパケットが存在しないため、調停器２１１は、パケットＢ２を出力ポートから出力する。
【００８１】
図９（ｄ）は、イニシエータ２０１ａ側ＮＩＣが、要求パケットＡ１に対する応答パケットａ１を受信するタイミングを示す。転送経路上のルータでのデッドライン情報の比較によって仮想チャネルＶＣ内での待ち合わせ遅延が低減された結果、要求パケットＡ１に対する応答パケットａ１は、デッドライン時刻である時刻Ｔ７より早くイニシエータ２０１ａに到達することになる。すなわち、その時刻よりも前にイニシエータ２０１ａのメモリアクセスが完了する。
【００８２】
また図９（ｅ）はイニシエータ２０１ｂ側ＮＩＣが、要求パケットＢ１、Ｂ２に対する応答パケットｂ１、ｂ２を受信するタイミングを示す。応答パケットｂ１、ｂ２とも、それぞれのデッドライン時刻である時刻Ｔ８、Ｔ９より早くイニシエータ２０１ｂに到達している。つまり、時刻Ｔ８、Ｔ９よりも前にイニシエータ２０１ｂのメモリアクセスが完了している。このように、デッドライン情報を比較して、デッドライン時刻が早く到来するパケットから転送されるよう、パケット転送順序の調停を行うことにより、イニシエータ毎に異なるレイテンシの要求を守ることができる。
【００８３】
図１０（ａ）は、イニシエータ２０１ａ側ＮＩＣが、メモリ２０６ｂ宛ての４つのアクセス要求パケットＡ１、Ａ２、Ａ３、Ａ４を発行している様子を示す。各パケットのデッドライン時刻は、それぞれ時刻Ｔ１、Ｔ２、Ｔ３、Ｔ４であり、Ｔ１＜Ｔ２＜Ｔ３＜Ｔ４の関係が成り立つとする。
【００８４】
図１０（ｂ）は、ルータ２０５ｃにおける、ＮＩＣ２０４ｂへのパケットＡ１、Ａ２、Ａ３、Ａ４の転送タイミングを示す。パケットＡ１、Ａ２、Ａ３、Ａ４がルータ２０５ｃ内の仮想チャネルＶＣに格納された状態において、ルータ２０５ｃ内の調停器が各パケットのヘッダ内に格納されるデッドライン情報フィールド５１−５を参照する。そして調停器がデッドライン時刻を比較することにより、イニシエータ２０１ａが要求を発行した順序に従い、ルータ２０５ｃからパケットを転送する。
【００８５】
一般的に、イニシエータのアクセス要求は、イニシエータが要求を発行した順番で応答が得られることを仮定する。これは、「インオーダー制約」と呼ばれる。つまり先行するアクセスに対するデッドライン時刻は、後続のアクセスに対するデッドライン時刻よりも後になることはない。
【００８６】
このため、デッドライン時刻による調停ルールに従うルータで構成されたパケット交換ネットワークでは、転送経路上のルータが複数の仮想チャネルＶＣを備えている場合であっても、デッドライン時刻に違いがあれば、イニシエータが要求を発行した順序が変更されることはない。
【００８７】
一方、イニシエータが発行した複数の要求が、同じデッドライン時刻を有することはあり得る。この場合、ＮｏＣにおけるルータの転送方法に起因する問題が生じる。図１１および図１２を参照しながら、以下具体的に説明する。なお、ルータ２０５ｃはルータ２０５ａから送信されたパケットを仮想チャネルＶＣに格納しているとして説明する。
【００８８】
図１１（ａ）は、イニシエータ２０１ａが、同一のデッドライン時刻Ｔｄをもつ４つの要求パケットＡ１、Ａ２、Ａ３、Ａ４を時刻Ｔａ１、Ｔａ２、Ｔａ３、Ｔａ４に送信している様子を示す。
【００８９】
また図１２（ａ）〜（ｄ）は、時刻Ｔｂ１、Ｔｂ２、Ｔｂ３、Ｔｂ４における、ルータ２０５ｃの各仮想チャネルＶＣの様子を示す。時刻Ｔｂ１において、２つの仮想チャネルは、それぞれルータ２０５ａから受信した２つのパケットＡ１およびＡ２を格納している。最初のパケットＡ１は下側の仮想チャネルに格納され、次のパケットＡ２が上側の仮想チャネルに格納されている。
【００９０】
他の入力ポートに競合するパケットがない場合、時刻Ｔｂ１において、調停器２１１は、パケットＡ２およびＡ１のデッドライン情報を比較する。比較の結果、いずれのデッドライン時刻も時刻Ｔｄであるため、調停器２１１は上述した調停ルールを適用できず、いずれを優先させるかの順序を決定できない。そこで調停器２１１は、上側の仮想チャネルＶＣに格納されたパケットＡ２に出力ポートを割り当て、パケットＡ２を転送する（図１２（ａ））。
【００９１】
次の調停タイミングにあたる時刻Ｔｂ２では、調停器２１１は、パケットＡ３およびＡ１のデッドライン情報を比較する。デッドライン時刻が同じであるため、この場合も上述したパケットＡ１およびＡ２の関係と同様、調停器２１１は順序を決定できず、上側の仮想チャネルＶＣに格納されたパケットＡ３に出力ポートを割り当て、パケットＡ３を転送する。
【００９２】
さらに次の調停タイミングにあたる時刻Ｔｂ３でも全く同様に、調停器２１１は、上側の仮想チャネルＶＣに格納されたパケットＡ４に出力ポートを割り当て、パケットＡ４を転送する。
【００９３】
次の調停タイミングにあたる時刻Ｔｂ４では、ＶＣ内にはパケットＡ１のみが格納されているため、調停器２１１は、パケットＡ１に出力ポートを割り当てる。
【００９４】
図１１（ｂ）は、上述の処理の結果ルータ２０５ｃから送信された、４つのパケットの順序を示す。ルータ２０５ｃがパケットを転送する順序は、図１１（ｂ）に示すように、パケットＡ２、Ａ３、Ａ４、Ａ１の順となる。つまり、イニシエータ２０１ａの要求パケットの送信順序が守られていない。
【００９５】
そこで本実施形態では、イニシエータが同一のデッドライン時刻をもつ複数の要求パケットを送信した場合には、経路上のルータで送信順序を守るために、要求パケットに対する本来のデッドライン時刻を補正して、補正済デッドライン時刻の情報を生成する。そして、バスネットワーク２５０を介してパケットを転送する際には、各ルータの調停器は、補正済デッドライン時刻を利用して調停を行う。これにより、イニシエータのインオーダー制約を満たす。
【００９６】
具体的には、図１３（ａ）に示す順序でイニシエータ２０１ａ側ＮＩＣから送信されたパケット群が、図１３（ｂ）に示す順序でバスネットワーク２５０上を転送されるよう、イニシエータ側ＮＩＣ２０３（図７）がデッドライン時刻を補正する。以下具体的に説明する。
【００９７】
図１３（ａ）に示すように、イニシエータ２０１ａから共通の時刻Ｔｄをデッドライン時刻とする４つの要求データのパケットＡ１、Ａ２、Ａ３、Ａ４が発行されたとする。ＮＩＣ２０３ａの補正部１０２（図７）は、各パケットのパケットヘッダ中のデッドライン情報フィールド５１−５に格納されていた値を補正して、パケットＡ１、Ａ２、Ａ３、Ａ４の各デッドライン時刻を一定間隔ｘで順列させる。このとき、先に送信されたパケットほど、早くデッドライン時刻が到来するよう、補正済デッドライン時刻が設定される。
【００９８】
例えば、要求パケットＡ１の補正済デッドライン時刻をＴｄ−３ｘ、Ａ２の補正済デッドライン時刻をＴｄ−２ｘ、Ａ３の補正済デッドライン時刻をＴｄ−ｘ、Ａ４の補正済デッドライン時刻をＴｄとしてもよい。このとき、ｘ＝１として、要求パケットＡ１の補正済デッドライン時刻をＴｄ−３、Ａ２の補正済デッドライン時刻をＴｄ−２、Ａ３の補正済デッドライン時刻をＴｄ−１、Ａ４の補正済デッドライン時刻をＴｄとしてもよい。
【００９９】
上述のようにパケットＡ１、Ａ２，Ａ３、Ａ４の補正済デッドライン時刻に、イニシエータ２０１ａの要求データの発行順序に従った大小関係ができるため、経路上のルータが複数のＶＣを有する構成であっても、転送順序の入れ換わりを防止することができる。
【０１００】
図１４（ａ）〜（ｄ）は、本実施形態にかかる補正済デッドライン時刻が設定されたときの、時刻Ｔｂ１、Ｔｂ２、Ｔｂ３、Ｔｂ４における、ルータ２０５ｃの各仮想チャネルＶＣの様子を示す。この処理により、図１３（ｂ）に示すように、パケット送信時と同じ順序で各パケットが伝送される。
【０１０１】
以下、補正部１０２の具体的な動作を説明する。
【０１０２】
図１５は補正部１０２の処理フローを示す。
【０１０３】
まずステップＳ１において、補正部１０２は、イニシエータから発行されたデータのパケットを生成するために、デッドライン時刻を設定する。すなわち補正部１０２は、イニシエータ１０６が許容可能なレイテンシの値Ｌと、ＳＴＣから取得可能なイニシエータ１０６の要求発行時刻Ｓの値とを利用して、たとえば数１に示すようにデッドライン時刻ｄを算出する。
（数１） ｄ＝Ｓ＋Ｌ
【０１０４】
要求パケット毎にデッドライン時刻ｄが異なる場合、補正部１０２は、要求パケットのパケットヘッダに格納する補正済デッドライン時刻Ｄを、数２に示すように生成すればよい。
（数２）  Ｄ＝ｄ
【０１０５】
イニシエータからの要求データの発行時刻Ｓは異なっているが、デッドライン時刻ｄが同じ場合がある。例えばメモリから読み出された複数のリードデータを、ある期限までに全て揃えた後にデータの処理を行うイニシエータを想定する。このイニシエータからの要求データを格納した複数の要求パケットは、同一のデッドライン時刻ｄを有する状況が発生する。このような場合、補正部１０２は、数１によって算出したデッドライン時刻ｄを補正し、補正済デッドライン時刻Ｄを生成する。
【０１０６】
図１６（ａ）に示すように、ｎ個のメモリアクセス要求Ｃ（０）、Ｃ（１）、・・・、Ｃ（ｎ−１）が時間順にバスマスタから要求され、これらｎ個の要求パケットに対するデッドライン時刻が全てｄである場合、補正部１０２は、数３に従い、図１６（ｂ）に示すように補正済デッドライン時刻Ｄ（０）、Ｄ（１）、・・・、Ｄ（ｎ−１）を決定する。
（数３）  Ｃ（ｉ）：  Ｄ（ｉ）＝ｄ−（ｎ−１−ｉ）×Ｗ    （ｉ＝０，１，・・・，ｎ−１）
ステップＳ２においてｉが０にリセットされる。
【０１０７】
Ｗは予め設定された固定値としてもよいし、乱数などを用いた可変値としてもよい。ＷはＮＩＣ２０３内にパラメータとして実装されていてもよいし、イニシエータ１０６によってＮＩＣ２０３内のレジスタに設定されてもよい。全ての要求パケットの補正済デッドライン時刻Ｄ（ｉ）と補正前のデッドライン時刻ｄの差を最も小さくするには、Ｗ＝１の固定値とし、末尾の要求パケットであるＣ（ｎ−１）に付与される補正済デッドライン時刻Ｄ（ｎ−１）を、本来のデッドライン時刻ｄに一致させればよい。ただし、本実施形態はこれに限定されない。ここでいうＷ＝１は、たとえば、バスシステムにおいて用いられるシステム基準クロックの最小単位、つまりクロック周期あってもよいし、そのようなクロック周期と無関係の、無次元の値として決定されてもよい。この値は、たとえばバスネットワーク２５０の利用にあたって予め定められている値である。
【０１０８】
最も早く到来する補正済デッドライン時刻が付与される要求パケットは、Ｃ（０）である。補正部１０２は、数４に示すように補正済デッドライン時刻Ｄ（０）を算出する。
（数４）  Ｄ（０）＝ｄ−（ｎ−１）×Ｗ
【０１０９】
パケットＣ（０）の要求時刻をＳ（０）とすると、最も早い補正済デッドライン時刻が付与される要求パケットが要求の発行時刻以降のデッドライン情報をもつためには、数５が成立することが必要である。
（数５）  Ｓ（０）＜Ｄ（０）
数５より、数６の関係が導き出せる。
（数６）  Ｗ＜（ｄ−Ｓ（０））／（ｎ−１）
【０１１０】
イニシエータ１０６が発行する同一のデッドライン時刻を有する要求の最大数が予め決まっている場合は、最大数をＮとし、数７に従いＷを決めてもよい。
（数７）  Ｗ＝（ｄ−Ｓ（０））／（Ｎ−１）
【０１１１】
また同一のデッドライン時刻を有する一連の要求に対するデッドライン時刻ｄが数１のように決定される場合は、数７に数１を代入することで、数８のようにＷを決めてもよい。
（数８）  Ｗ＝（（Ｓ（０）＋Ｌ）―Ｓ（０））／（Ｎ−１）＝Ｌ／（Ｎ−１）
【０１１２】
ステップＳ３において、補正部１０２は、上述のように求めたＷが数３に組み込まれた式により、補正済デッドライン時刻を生成する。その後、ステップＳ４によりｉがインクリメントされ、ステップＳ５の判定処理により、補正部１０２は、全てのパケットについて補正済みデッドライン時刻を算出したかどうかを判定する。全てのパケットについて補正済みデッドライン時刻を算出した場合には、処理は終了する。
【０１１３】
なお、図４のように複数のイニシエータ２０１ａ〜２０１ｅがシステム上に存在する場合において、イニシエータ毎の同一のデッドライン時刻を有する要求の最大数をＮａ〜Ｎｅ、許容可能なレイテンシの値をＬａ〜Ｌｅとすると、補正部１０２は、Ｎ及びＬを数９及び数１０によって定義してもよい。
（数９）  Ｎ＝ｍａｘ｛Ｎａ，Ｎｂ，Ｎｃ，Ｎｄ，Ｎｅ｝
（数１０）  Ｌ＝ｍｉｎ｛Ｌａ，Ｌｂ，Ｌｃ，Ｌｄ，Ｌｅ｝
【０１１４】
数９及び数１０により定義されたＮ，Ｌを用いて数８によりＷを決定することで、全てのイニシエータで共通のデッドライン間隔Ｗを用いることができ、実装を簡略化できる。
【０１１５】
また、数９及び数１０において右辺の対象となるイニシエータを、イニシエータ２０１ａ〜２０１ｅの中で転送経路上のルータ２０５ａ〜２０５ｃでデッドライン情報が比較されるイニシエータだけに限定してもよい。例えば、イニシエータ２０１ａ、２０１ｂ、２０１ｃはルータでデッドライン情報が比較され、イニシエータ２０１ｄ、２０１ｅは実時間性を要求しないイニシエータであるなどの理由でデッドライン情報が比較されない場合を想定する。この場合には、補正部１０２は、数１１及び数１２により、同一のデッドライン時刻を有する要求の最大数Ｎと許容可能なレイテンシの値Ｌを定義してもよい。
（数１１）  Ｎ＝ｍａｘ｛Ｎａ、Ｎｂ、Ｎｃ｝
（数１２）  Ｌ＝ｍｉｎ｛Ｌａ，Ｌｂ，Ｌｃ｝
【０１１６】
数１１及び数１２により定義されたＮ，Ｌを用いて数８によりＷを決定することで、実時間性の要求の有無などのイニシエータ間の特性の違いも考慮した制御が可能となる。
【０１１７】
上述の処理により補正部１０２が生成した補正済デッドライン時刻は、ヘッダ生成部１０３により、デッドライン情報フィールド５１−５に格納される。
【０１１８】
図１７はヘッダ生成部１０３の処理フローを示す。
【０１１９】
ステップＳ１１において、ヘッダ生成部１０３は要求パケットのヘッダ５１（図６）を生成する。ステップＳ１２において、ヘッダ生成部１０３は補正部１０２から補正済デッドライン時刻の情報を取得する。ステップＳ１３においてヘッダ生成部１０３は、要求パケットヘッダのデッドライン情報フィールド５１−５に補正済デッドライン時刻の情報を格納する。ステップＳ１４において、ヘッダ生成部１０３は、要求パケットヘッダをパケット化処理部１０４に送信する。その結果、パケット化処理部１０４が、その要求パケットヘッダを有する要求パケットを生成して、ネットワーク２５０上にパケットを送信する。
【０１２０】
また本実施形態によれば、要求ヘッダ内にパケットＩＤを設ける必要もなくなる。これにより、要求ヘッダのサイズを削減することが可能となる。パケットＩＤは、ＮｏＣによりパケット交換する場合に一般的に使用される。イニシエータ側のＮＩＣ２０３が一意のＩＤを生成、管理し、要求パケットのヘッダ内にパケットＩＤとして格納して送信する。パケットＩＤは、イニシエータ１０６から異なるメモリに対してアクセス要求パケットを送信した場合などに受信した応答パケットがどちらのメモリからの応答かを識別する用途で用いられる。本実施形態では、イニシエータ１０６が送信する全ての要求パケットについて補正済デッドライン時刻が異なる状態となる。よって、補正済デッドライン時刻を用いることで、要求パケットと応答パケットの対応付けが可能となり、パケットＩＤを不要とすることが可能となる。
【０１２１】
図１８は、パケットＩＤを用いない要求パケットヘッダの構成例を示す。図６と比較してヘッダサイズが削減されており、パケット化による伝送のオーバーヘッドが削減される。
【産業上の利用可能性】
【０１２２】
本発明の一態様にかかるインタフェース装置は、組込機器向けのＳｏＣにおけるオンチップバスや、汎用プロセッサ、ＤＳ上のローカルバスにおける、バスとメモリとのインタフェース装置として利用可能である。本発明の他の態様として、インタフェース方法、インタフェース装置の制御プログラムにも利用可能である。
【符号の説明】
【０１２３】
２０３  インタフェース装置
１０２  デッドライン時刻補正部
１０３  ヘッダ生成部
１０４  パケット化処理部
１０５  脱パケット化処理部
１０６  イニシエータ
１０７  ルータ
２０１  イニシエータ
２０２  メモリコントローラ
２０３  イニシエータ側ＮＩＣ
２０４  メモリコントローラ側ＮＩＣ
２０５ａ〜２０５ｃ  ルータ
２０６  メモリ
【図１】
0005895153.tif 000002
【図２】
0005895153.tif 000003
【図３】
0005895153.tif 000004
【図４】
0005895153.tif 000005
【図５】
0005895153.tif 000006
【図６】
0005895153.tif 000007
【図７】
0005895153.tif 000008
【図８】
0005895153.tif 000009
【図９】
0005895153.tif 000010
【図１０】
0005895153.tif 000011
【図１１】
0005895153.tif 000012
【図１２】
0005895153.tif 000013
【図１３】
0005895153.tif 000014
【図１４】
0005895153.tif 000015
【図１５】
0005895153.tif 000016
【図１６】
0005895153.tif 000017
【図１７】
0005895153.tif 000018
【図１８】
0005895153.tif 000019