(57)【要約】  共有メモリに対して、要求品質の異なる複数のバスマスタからのアクセスを調停するアクセス制御装置において、バスマスタの構成や数の変更に対する拡張性を向上させる。  アクセス制御装置は、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停する。アクセス制御装置は、複数の第１ノードから要求品質と宛先とが異なる各データを、宛先および要求品質に応じて、分けて格納するバッファと、要求品質の厳しい順に、各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、クラス間調停部によって選択された要求品質、および宛先間調停部によって選択された宛先に基づき、データの送信を制御する送信制御部とを備えている。
2014027445.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えたアクセス制御装置。
【請求項２】
前記宛先間調停部は、さらに、前記クラス間調停部によって選択された各要求品質のデータの送信量を分散させるよう、送信すべきデータを選択する、請求項１に記載のアクセス制御装置。
【請求項３】
前記クラス間調停部は、前記宛先間調停部により選択された宛先のデータに関して、前記要求品質の厳しい順に、前記各データの要求品質を選択する、請求項１または２に記載のアクセス制御装置。
【請求項４】
前記要求品質の異なるデータには、相対的に要求品質の低い第１データ、および相対的に要求品質の高い第２データが含まれており、
前記第１データの送信量を測定する利用帯域測定部と、
前記第１データに保証される保証レートを超えて、先行して送信した前記第１データの送信量を記憶する先行アクセス記憶部と
をさらに備え、
前記送信制御部は、前記先行アクセス記憶部に記憶される前記送信量に基づき、前記第２データに対して送信量を割り当てる、請求項１から３のいずれかに記載のアクセス制御装置。
【請求項５】
前記要求品質のうち、要求品質の異なるデータは、少なくとも、プロセッサクラスのデータと、レート保証クラスのデータとを含む、請求項１から４のいずれかに記載のアクセス制御装置。
【請求項６】
前記プロセッサクラスの要求品質は、前記レート保証クラスの要求品質よりも高く設定されている、請求項５に記載のアクセス制御装置。
【請求項７】
前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在する場合には、前記送信制御部は、前記クラス間調停部により選択された要求品質のデータに対し、前記宛先間調停部によりデータの送信量を複数の宛先間で均一に近づけるように選択したデータを送信し、
前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在しない場合には、前記送信制御部は、前記宛先間調停部により選択された宛先のデータに対し、前記クラス間調停部により要求品質の厳しい順に選択したデータを送信する、請求項５または６に記載のアクセス制御装置。
【請求項８】
前記宛先間調停部は、前記各宛先へのデータの送信に関して送信待ちを発生させない範囲で、前記各宛先へのデータの送信量を制御する、請求項１に記載のアクセス制御装置。
【請求項９】
前記宛先間調停部は、前記各宛先の宛先間のデータの送信量の偏りを許容して、前記各宛先へのデータの送信量を制御する、請求項８に記載のアクセス制御装置。
【請求項１０】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停する中継装置であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、中継装置。
【請求項１１】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続されるネットワーク・インタフェース・コントローラであって、
所定の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、ネットワーク・インタフェース・コントローラ。
【請求項１２】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続されるメモリコントローラであって、
前記複数の第１ノードからの要求品質が異なる各データを、前記要求品質および前記データ送信元の第１ノードに応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、ネットワーク・インタフェース・コントローラ。
【請求項１３】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置の制御方法であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを受信するステップと、
前記各データを宛先および前記要求品質に応じて、バッファに分けて格納するステップと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するステップと、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させるステップと、
要求品質を選択する前記ステップによって選択された要求品質、および宛先を選択する前記ステップによって選択された宛先に基づき、前記データの送信を制御するステップと
を包含するアクセス制御方法。
【請求項１４】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置のシミュレーションを行うためのコンピュータプログラムであって、
前記コンピュータプログラムは、コンピュータに対し、請求項１３に記載のアクセス制御方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ネットワーク化された半導体バスを介し、複数のバスマスタからスレーブへのアクセスを調停するアクセス制御装置等に関する。
【背景技術】
【０００２】
半導体集積回路において、一定のレートでメモリへのアクセスを保証が必要なバスマスタ（以下、レート保証クラスのバスマスタ）と、メモリへのアクセス要求が不定期なバスマスタ（以下、プロセッサクラスのバスマスタ）が同一のメモリを共有するシステムが存在する。【０００３】
このようなシステムでは、プロセッサクラスのバスマスタからのアクセス要求の予測困難なため、レート保証クラスのアクセス要求とプロセッサクラスのアクセス要求との間で発生する競合を調停する回路が必要となる。このような調停回路において、予測困難なプロセッサクラスのバスマスタのアクセス要求に対し、即応性を高めたアクセス制御装置を提供する技術が開示されている。【０００４】
たとえば特許文献１は、レート保証クラスのバスマスタが共有メモリにアクセスする際、伝送帯域に空きがあり、さらに次のアクセス要求がある場合を想定する。特許文献１の技術は、レート保証クラスに対して本来設定されているレートを超えて先行してアクセスを実行させることで、周期的に実行しなければならない次のアクセスに対しマージンを設ける。そのマージンがある状態で、アクセス要求の発生予測が不可能なプロセッサクラスのバスマスタからアクセス要求があった場合に、先行してレート保証クラスのバスマスタに割り当てた伝送帯域を、プロセッサクラスのバスマスタに割り当てる。これにより、プロセッサクラスのバスマスタに対する即応性を高め、アクセスにかかる時間の低遅延化を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４４８５５７４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
あるノード（たとえば共有メモリ）に対して、要求品質の異なる複数のノード（たとえばバスマスタ）からのアクセスを調停するアクセス制御装置では、バスマスタの構成や数の変更に対する拡張性を向上させることが必要とされている。【０００７】
本願の、限定的ではない例示的なある実施形態は、様々な要求品質のバスマスタに対し、即応性が高く、遅延時間の短いデータ送信を実現するアクセス制御装置を提供する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置を含む。アクセス制御装置は、前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部とを備えている。【０００９】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１０】
本発明の一実施形態にかかるアクセス制御装置は、バスマスタの構成や数の変更に対応できる高い拡張性を備えている。そして、要求品質の異なる複数の第１ノード（たとえばバスマスタ）から第２ノード（たとえばスレーブ）へのアクセスの調停において、保証レート以上のプロセッサやグラフィックス処理等を始めとする様々な要求品質のバスマスタに対し、即応性が高く、遅延時間の短いデータ送信を実現できる。
【図面の簡単な説明】
【００１１】
【図１】従来技術のアクセス制御装置の概要を示す図である。
【図２】ＮｏＣの概要を説明する図である。
【図３】例示的な実施形態によるアクセス制御装置の概要を示す図である。
【図４Ａ】従来の中継装置の構成を示す図である。
【図４Ｂ】従来の中継装置の動作フローを示す図である。
【図５Ａ】例示的な実施形態による中継装置の構成を示す図である。
【図５Ｂ】例示的な実施形態による中継装置の動作フローを示す図である。
【図６】要求品質のクラスの定義を示す図である。
【図７】（Ａ）および（Ｂ）は、プロセッサクラスとレート保証クラスに関する送信レートの時間変化の様子を示す図である。
【図８】ＮＩＣ−Ｂ４０７の構成を示す図である。
【図９】バスマスタの送信レートを設定するＮＩＣ−Ｂ４０７（図８）の動作フロー図である。
【図１０】アクセス制御装置４０１の構成例を示す図である。
【図１１】アクセス制御装置４０１の全体の動作フローの概要を示す図である。
【図１２】クラス識別規則１１０１の例を示す図である。
【図１３】調停部４０５の全体の動作フロー図である。
【図１４】保証フラグ記憶部９１７に記録されるアクセス要求（データ）毎の保証フラグと送信量の値を示す図である。
【図１５】利用帯域測定部９０７の動作フロー図である。
【図１６】クラス間調停部９０８の動作フロー図である。
【図１７】宛先間調停部９１３の動作フロー図である。
【図１８】保証レート値記憶部９１４に記憶される遅延保証クラス、プロセッサクラス、レート保証クラスの保証レートの設定値の一例を示す図である。
【図１９】送信制御部９０９の動作フロー図である。
【図２０】バッファから保証レート分のアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す図である。
【図２１】クラス間の調停と宛先間の調停を行いながら、優先度の高いバッファから保証レート分のアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す図である。
【図２２】宛先間の調停を行いながら、優先度の高いバッファから保証レート分を超えたアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す図である。
【図２３】調停ルール記憶部９１１で記憶される情報を示す図である。
【図２４】調停ルールを動的に変更する場合の調停部４０５の動作を示す図である。
【図２５】プロセッサクラスとレート保証クラスで送信量の貸し借りを実現するアクセス制御装置２５０１の構成例を示す図である。
【図２６】先行アクセス記憶部２５０１に記憶される情報を示す図である。
【図２７】レート保証クラスとプロセッサクラスとの間で送信量の貸し借りを実現する送信制御部９０９の動作フローを示す図である。
【図２８】（Ａ）〜（Ｄ）は、先行して送信したレート保証クラスの送信量を、後から発生したプロセッサクラスに割当てることで、プロセッサクラスの遅延時間を削減する様子を示す図である。
【図２９】一般的に利用されるメッシュ型のトポロジーの例を示す図である。
【発明を実施するための形態】
【００１２】
従来のアクセス制御装置では、各アクセス要求はバスマスタ毎に区別して管理されるため、同じ要求品質であってもバスマスタ毎に独立したバッファや回路が必要であり、バスマスタ単位で調停する必要があった。このため、半導体集積回路上のバスマスタの構成や数の変更が必要な場合、従来技術のアクセス制御装置では、バスマスタの構成や数の変更に応じた回路変更が必要となる。また、バスマスタ数の増加に応じて調停処理にかかる時間が大きくなるため調停処理による遅延時間が増加する。
【００１３】
そこで本願発明者らは、以下のような構成により、上述の回路変更をできるだけ抑え、調停処理による遅延時間をできるだけ少なくするアクセス制御装置等をなすに至った。すなわち、本発明の一態様の概要は以下のとおりである。
【００１４】
本発明の一態様であるアクセス制御装置は、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停する。前記アクセス制御装置は、前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部とを備えている。
【００１５】
ある実施形態において、前記宛先間調停部は、さらに、前記クラス間調停部によって選択された各要求品質のデータの送信量が均一に近づくよう、送信すべきデータを選択する。
【００１６】
ある実施形態において、前記クラス間調停部は、前記宛先間調停部により選択された宛先のデータに関して、前記要求品質の厳しい順に、前記各データの要求品質を選択する。
【００１７】
ある実施形態において、前記アクセス制御装置は、前記要求品質の異なるデータには、相対的に要求品質の低い第１データ、および相対的に要求品質の高い第２データが含まれており、前記第１データの送信量を測定する利用帯域測定部と、前記第１データに保証される保証レートを超えて、先行して送信した前記第１データの送信量を記憶する先行アクセス記憶部とをさらに備え、前記送信制御部は、前記先行アクセス記憶部に記憶される前記送信量に基づき、前記第２データに対して送信量を割り当てる。
【００１８】
ある実施形態において、前記要求品質のうち、要求品質の異なるデータは、少なくとも、プロセッサクラスのデータと、レート保証クラスのデータとを含む。
【００１９】
ある実施形態において、前記プロセッサクラスの要求品質は、前記レート保証クラスの要求品質よりも高く設定されている。
【００２０】
ある実施形態において、前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在する場合には、前記送信制御部は、前記クラス間調停部により選択された要求品質のデータに対し、前記宛先間調停部によりデータの送信量を複数の宛先間で均一に近づけるように選択したデータを送信し、前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在しない場合には、前記送信制御部は、前記宛先間調停部により選択された宛先のデータに対し、前記クラス間調停部により要求品質の厳しい順に選択したデータを送信する。
【００２１】
ある実施形態において、前記宛先間調停部は、前記各宛先へのデータの送信に関して送信待ちを発生させない範囲で、前記各宛先へのデータの送信量を制御する。
【００２２】
ある実施形態において、前記宛先間調停部は、前記各宛先の宛先間のデータの送信量の偏りを許容して、前記各宛先へのデータの送信量を制御する。
【００２３】
本発明の一態様である中継装置は、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停する。前記中継装置は、前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部とを備えている。
【００２４】
本発明の一態様であるネットワーク・インタフェース・コントローラは、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続される。前記ネットワーク・インタフェース・コントローラは、所定の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部とを備えている。
【００２５】
本発明の一態様であるメモリコントローラは、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続されるメモリコントローラであって、前記複数の第１ノードからの要求品質が異なる各データを、前記要求品質および前記データ送信元の第１ノードに応じて、分けて格納するバッファと、前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部とを備えている。
【００２６】
本発明の一態様である方法は、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置の制御方法である。前記制御方法は、前記複数の第１ノードからの要求品質と宛先とが異なる各データを受信するステップと、前記各データを宛先および前記要求品質に応じて、バッファに分けて格納するステップと、前記要求品質の厳しい順に、前記各データの要求品質を選択するステップと、送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させるステップと、要求品質を選択する前記ステップによって選択された要求品質、および宛先を選択する前記ステップによって選択された宛先に基づき、前記データの送信を制御するステップとを包含する。
【００２７】
本発明の一態様であるコンピュータプログラムは、ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置のシミュレーションを行うためのコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータに対し、上述のアクセス制御方法を実行させる。
【００２８】
以下、添付の図面を参照しながら、本発明の例示的な一実施形態によるアクセス制御装置および、アクセス制御装置をチップ上に実装するための設計及び検証を行う実施形態を説明する。
【００２９】
各実施形態の説明に先立って、まず、本願明細書に記載された、例示的なある実施形態に係る発明が解決しようとする課題の概要を図１〜３を用いて説明する。
【００３０】
まず図１は、従来技術のアクセス制御装置の概要を示す。
【００３１】
アクセス制御装置３０１は、複数のバスマスタ３０２から共有メモリ３０３へのアクセスを調停する装置である。メモリコントローラ３０６は、共有メモリ３０３とのフロー制御や、共有メモリ内でデータを記録する場所（バンクやアドレス）の割当て等を行う装置であり、アクセス制御装置３０１は、バスマスタ３０２とメモリコントローラ３０６の間に配置される。
【００３２】
従来技術のアクセス制御装置３０１は、各バスマスタ３０２から共有メモリ３０３へは独立した伝送経路を備える。これにより、各バスマスタ３０２のアクセス要求に対して伝送帯域が保証されている。また、各バスマスタ３０２のアクセス要求は、バスマスタ毎に区別して独立したバッファ３０４で管理される。そのため、調停部３０５は、全てのバスマスタのアクセス要求を同時に直接比較することが可能である。調停部３０５は、全バスマスタの要求性能を満たす最適なアクセス要求を選択して、共有メモリに送信できる。
【００３３】
しかし、従来技術では、同じ要求品質を持つバスマスタであっても、アクセス要求を処理するための独立した伝送経路や回路、バッファが必要であり、また、調停もバスマスタ単位で行う必要がある。このため、バスマスタの数が多い場合は、アクセス要求管理部３０４や調停部３０５の回路構成が大きくなり、また、調停部３０５による調停処理にかかる時間も増加する。また、バスマスタ３０２の構成や数の変更に応じて、アクセス要求管理部３０４や調停部３０５の構成を変更する必要があった。
【００３４】
このように、従来技術のアクセス制御装置３０１は、バスマスタの構成や数の変更に対する拡張性が低く、半導体システムの規模が大きくなるにつれて適用が困難になる。
【００３５】
半導体システムの大規模化や高機能化に対し、バスをネットワーク化し、中継装置を用いてパケット交換方式の通信を行うＮｏＣ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ）の研究が行われている（たとえば、T. Bjerregaard et al., “A survey of research and practices of Network-on-chip, " ACM Computing Surveys, Vol.38, no.1, pp.1-51, 2006）。
【００３６】
図２は、本明細書で説明するＮｏＣの概要を示す。
【００３７】
バスマスタは、ネットワーク・インタフェース・コントローラ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ；以下本明細書では「ＮＩＣ」 とも記述する。）を介して中継装置と接続される。ＮＩＣはデータのパケット化、及びパケットからデータのデパケット化を行う。
【００３８】
パケットには、宛先を識別するアドレスが記述され、各中継装置はアドレスに基づき経路制御を行うことで、バスマスタからスレーブにデータが転送される。
【００３９】
バスマスタは、ＤＳＰ、プロセッサ、ＧＰＵ、Ｉ／Ｏなどである。バスマスタが要求する要求品質は図６を参照しながら後述する。
【００４０】
スレーブは、メモリ（ＤＲＡＭ，ＳＲＡＭ、ＳＤなど）、Ｉ／Ｏ、プロセッサである。本明細書では、スレーブの例としてメモリを挙げて説明する。
【００４１】
ＮｏＣでは、中継装置が複数のバスを集約する役割とバスバッファ（長配線を分割するリピータ）の役割とを担う。そのため、中継装置の配置の変更により、バスマスタの配置制約を緩和できる。また、中継装置での経路制御により、物理的なバスマスタ配置に依存せず、ルータの配置と宛先を変更することで柔軟な伝送経路の設定が可能となるためバスマスタの配置制約を緩和できる。このため、ＮｏＣを導入することで、大規模な半導体集積回路の開発を容易化できる。
【００４２】
図３は、本発明の例示的な実施形態によるアクセス制御装置の概要を示す。
【００４３】
アクセス制御装置４０１は、複数のバスマスタ４０２から共有メモリ４０３へのアクセス要求を受信してバッファ９１０に保持する。そしてアクセス制御装置４０１の調停部４０５は、バッファ９１０内のアクセス要求に対し、共有メモリ４０３へ送信する順序を調停する。
【００４４】
具体的には、本明細書の説明において主要な技術となるアクセス要求の調停処理機能を有する装置を、「アクセス制御装置」と定義する。
【００４５】
実施形態では、ＮｏＣを利用し、中継装置４０６を介して、複数のバスマスタ４０２と共有メモリ４０３が接続された半導体システムを構成する。ＮＩＣ−Ｂは、バスマスタが送信したアクセス要求のパケット化処理を行う。また、ＮＩＣ−Ｍは、中継装置４０６から受信したパケットのデパケット化処理を行う。
【００４６】
アクセス制御装置４０１は、全てのバスマスタからのアクセス要求の調停を行う機能を有するため、伝送経路において全てのアクセス要求が集約される中継装置４０６やＮＩＣ−Ｍ４０８、メモリコントローラ４０９のいずれかに実装されてもよい（図３）。中継装置内に実装される場合は、アクセス制御装置に中継装置独自の機能を付加することが必要である。当該機能の例として、ルーティング機能が知られている。アクセス制御装置４０１が中継装置内に実装される具体例を以下で説明する。
【００４７】
ＮｏＣにおける一般的な中継装置は、パケットを格納するための複数のバッファ（ＶＣ：Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌとも呼ばれる。）と、独自の機能としてパケットを宛先まで届けるための中継機能として、ルーティング機能、ＶＣアロケーション機能（ＶＡ）、スイッチアロケーション機能（ＳＡ）を備える（たとえば上述の文献を参照されたい）。
【００４８】
ルーティング機能とは、受信したパケットに記載された宛先のアドレスに基づき、次の中継先を決定する機能である。
【００４９】
ＶＣアロケーション機能（ＶＡ）は、次の中継先でパケットを格納するバッファ（Ｖｉｒｔｕｒａｌ  Ｃｈａｎｎｅｌ）を動的に確保する機能である。
【００５０】
スイッチアロケーション機能（ＳＡ）は、複数のパケット間で、送信スケジューリングを調停する機能である。
【００５１】
本実施形態のアクセス制御装置４０１を中継装置として実現するために、アクセス制御装置４０１のバッファ９１０は、中継装置内の複数のバッファを利用することでアクセス要求を管理し、また調停部４０５として、中継装置内のスイッチアロケーション機能（ＳＡ）を利用して調停を行う。なお、アクセス制御装置４０１の送信先は１つであるため、ルーティング機能は不要であり、次の中継先でパケットを格納するバッファも予め決定されておりＶＣアロケーション機能（ＶＡ）は不要である。
【００５２】
従って、中継装置４０６とアクセス制御装置４０１の違いは、中継装置４０６は上記の全ての機能を備える装置であるのに対し、アクセス制御装置４０１は、ルーティング機能とＶＣアロケーション機能（ＶＡ）が不要であり、データを格納するバッファと、データ間で送信を調停する機能を備える装置である。
【００５３】
このため、以下の説明では、アクセス制御装置４０１に直接関係のないルーティング機能とＶＣアロケーション機能に関する構成、及び動作の説明は省略する。
【００５４】
アクセス制御装置４０１では、複数のバスマスタが伝送経路を共有するため、バスマスタ間の競合により、伝送性能が低下する。そのため、各バスマスタの伝送性能をアクセス制御装置４０１で保証することが必要となる。
【００５５】
バスマスタ数に依存することなく、各バスマスタの伝送性能を保証するために、アクセス制御装置４０１のアクセス要求管理部４０４は、複数のバスマスタのアクセス要求を、要求品質に基づくクラスに分類し管理する。また、調停部４０５は、優先度の高いクラスから順番に予め定められたレートで伝送を行い、伝送帯域に空きがあれば、さらに優先度の高いクラスから予め定められたレートを超えた伝送を行う。
【００５６】
また、同一の伝送経路を介して複数の宛先にアクセス要求を送信する場合、一部の宛先へのアクセスが集中することで、他の宛先へのアクセス要求の送信で待ちが発生し、遅延が増加する。そのようなアクセス要求の送信待ちは、例えば中継装置４０１，４０６において発生する。このため、アクセス要求管理部４０４は、アクセス要求を宛先の違いを区別して管理し、調停部４０５は、複数の宛先間で送信量を均一に近づけるように調停を行うことで、一部の宛先へのアクセス要求の送信量が増加し、アクセスが集中することを回避し遅延時間を抑制する。なお、一部の宛先への送信量の集中を回避する方法としては、複数の宛先間の送信量を均一に近づける方法に限定されない。例えば、一部の宛先への送信量が集中しないように宛先をランダムに選択してもよい。
【００５７】
また、アクセス制御装置が調停を行う「複数の宛先」は、アクセス制御装置内において、送信待ち状態にあるアクセス要求の宛先であることを意味している。そのため、アクセス制御装置内において送信待ち状態のアクセス要求がない宛先については、調停の対象から除外しても良い。
【００５８】
以上のように、本発明の例示的な実施形態によるアクセス制御装置４０１は、アクセス要求（データ）の要求品質と宛先の違いに基づいて調停を行うことで、バスマスタの数に対する拡張性を持たせつつ、バスマスタ毎の伝送性能を保証し、遅延時間を抑えた即応性の高い調停を実現できる。
【００５９】
ＮｏＣの中継装置において、宛先に基づいた送信制御を行う技術として、特許第４８８０８０２号明細書に記載された技術が知られている。図４Ａ、図４Ｂ、図５Ａ、図５Ｂは、従来技術の中継装置と、本実施形態でアクセス制御装置を実装する中継装置４０６との違いを示す。
【００６０】
図４Ａは、従来の中継装置の構成を示す。従来の中継装置は、入力ポート毎に、宛先に関係なくパケットを格納する共通バッファ２９０１と、送信先の中継装置の共通バッファの割当を行うＶＣアロケーション機能（ＶＡ）２９０２と、２つの共通バッファからパケットを送信さえるバッファを決定するスイッチアロケーション機能（ＳＡ）２９０３とを備える。また、送信先の中継装置も同様に宛先に関係なくパケットを格納する共通バッファ２９０４を備えている。
【００６１】
図４Ｂは、従来の中継装置の動作フローを示す。
【００６２】
ステップ２９０５において、中継装置はパケットを受信すると、そのパケットを共通バッファ２９１０に格納する。
【００６３】
ステップ２９０６において、中継装置は、ＶＣアロケーション機能（ＶＡ）２９０２により、送信先の中継装置のバッファ２９０４の利用を許可する自身のバッファを選択する。
【００６４】
ここで自身の共通バッファ２９０１に、宛先の異なるパケットが格納される場合、従来のＶＣアロケーション機能は、それぞれの共通バッファ２９０１に対して、送信先の中継装置の共通バッファ２９０４の利用許可を交互に与えることで、同じ宛先のパケットに連続して利用許可を与えることを回避する。
【００６５】
ステップ２９０７において、中継装置は、スイッチアロケーション機能（ＳＡ）２９０３により、送信するパケットを１つ選択する。
【００６６】
ステップ２９０８において、中継装置は、選ばれたパケットを送信する。
【００６７】
図５Ａは、本実施形態の中継装置の構成を示す。
【００６８】
本実施形態の中継装置では、入力ポート毎にパケットの宛先の違いで区別した専用バッファ２９０９と、送信先の中継装置の専用バッファの割当を行うＶＣアロケーション機能（ＶＡ）を実現する制御回路２９１０と、同じ宛先のバッファ間での調停と、宛先の異なるバッファ間での調停を行うスイッチアロケーション機能（ＳＡ）を実現する制御回路２９１１を備える。また、送信先の中継装置も同様に宛先の違いで区別した専用バッファ２９１２を備える。
【００６９】
図５Ｂは、本実施形態の中継装置の動作フローを示す。
【００７０】
ステップ２９１３において、中継装置はパケットを受信すると、そのパケットをパケットの宛先を区別して専用バッファ２９０９に格納する。
【００７１】
ステップ２９１４において、中継装置のＶＣアロケーション機能（ＶＡ）を実現する制御回路２９１０は、宛先毎に送信先の中継装置のバッファ２９１２の利用を許可する自身のバッファ２９０９を選択する。
【００７２】
ステップ２９１５において、中継装置のスイッチアロケーション機能（ＳＡ）を実現する制御回路２９１１は、まず宛先が同じパケットどうしで送信するパケットを１つずつ選択する。
【００７３】
ステップ２９１６において、中継装置の制御回路２９１１は、ステップ２９０７で選択された宛先の異なるパケット間で、送信するパケットを１つ選択する。
【００７４】
ステップ２９１７において、中継装置の調停部は、選ばれたパケットを送信する。
【００７５】
このように、従来技術では、宛先の異なるパケット間の調停を、ＶＣアロケーション機能（ＶＡ）により実現しているのに対し、本実施例では拡張性を重視してスイッチアロケーション機能（ＳＡ）で実現する。
【００７６】
これにより、本実施形態では、従来技術に比べて専用バッファを備えるため実装面積は大きくなるもののＶＣアロケーション機能（ＶＡ）の拡張が不要であるため、本発明が課題とする拡張性が高い構成で、低遅延伝送が容易に実現できる。このような構成により、宛先毎の伝送負荷を均一化することで、遅延時間が増加する宛先がなくなるため、システムとしての低遅延化を図ることができる。
【００７７】
図６は、本実施形態で想定する要求品質のクラスの定義を示す。
【００７８】
また図７（Ａ）および（Ｂ）は、プロセッサクラスとレート保証クラスに関する送信レートの時間変化の様子を示す。
【００７９】
本願発明者らは、要求品質のクラスとして、４種類の品質クラスを設定した。具体的には、遅延保証クラス、プロセッサクラス、レート保証クラス、およびベストエフォートクラスである。バスマスタは、これらのいずれかに分類されるとする。
【００８０】
なお、このクラス分類は一例である。この例には制約を受けず、バスマスタが２つ以上の任意のクラスに分類されるような条件化で中継装置を構成することも可能である。
【００８１】
遅延保証クラスには、共有メモリとの通信において、許容遅延時間以内に伝送を完了しなければならないトラヒックを発行するバスマスタが分類される。例えば、映像処理や音声処理を行うバスマスタは、遅延保証クラスに該当する。
【００８２】
プロセッサクラスには、共有メモリとの通信において、所定のレートの送信レートの保証が必要なトラヒックを発行するバスマスタが分類される。プロセッサクラスのアクセス要求に関するトラヒックは、所定のレートを超えてもよい（たとえば図７（Ａ））し、要求レートが定義できないトラヒックのアクセス要求がプロセッサクラスに分類されてもよい。プロセッサクラスには、アクセス要求の発生頻度が不定期に変動することで、アクセス要求（データ）の総量が変動するバスマスタが分類されてもよい。例えばＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）はプロセッサクラスに該当する。また、ブラウザ・アプリケーションを実行するＣＰＵもまたプロセッサクラスに該当する。
【００８３】
レート保証クラスでは、共有メモリとの通信において、平均して送信レートの保証が必要であり、時間的に送信レートが変動するトラヒックを発行するバスマスタが分類される（図７（Ｂ））。時間的に見ると、保証すべき送信レートより高い送信レートのトラヒックが発生したり、保証すべき送信レートより小さい送信レートのトラヒックが発生することがある。例えば、画像データの加工などフィルタ処理を行うマスタは、レート保証クラスに該当する。また、音声信号の処理を行うマスタもレート保証クラスに該当する。
【００８４】
ベストエフォートクラスでは、共有メモリとの通信において、伝送性能の保証を必要としないトラヒックを発行するバスマスタが分類される。例えば、ＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）を合成するＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、ベストエフォートクラスに該当する。また、ＧＰＵに対し、例えば、高い応答性が必要な用途では、ＧＰＵはプロセッサクラスとして定義してもよい。
【００８５】
本実施形態では、各クラス間の優先順位は、（１）遅延保証クラス、（２）プロセッサクラス、（３）レート保証クラス、（４）ベストエフォートクラスの順に高いとする。
【００８６】
以下、本発明の一例である実施形態を説明する。
【００８７】
図８は、ＮＩＣ−Ｂ４０７の構成を示す。
【００８８】
ＮＩＣ−Ｂ４０７は、バスマスタ４０２から送信されるデータを、パケット化して中継装置４０６に送信する機能と、バスマスタ４０２から送信されるアクセス要求（データ）の送信レートが、所定のレートを超えないように送信レート制御を行う機能を備える。
【００８９】
本実施形態では、各バスマスタから保証レートを超えてアクセス要求（データ）をアクセス制御装置に送信できるように、ＮＩＣ−Ｂ４０７の送信レートは、保証レートより高い値に設定する。または、送信レートの上限を設定せず、バスマスタから送信されたアクセス要求（データ）をそのまま送信するように設定しても良い。
【００９０】
ＮＩＣ−Ｂ４０７は、受信バッファ７０１と、送信レート値記憶部７０２と、送信レート制御部７０３と、送信制御部７０４と、パケット化処理部７０５とを備えている。
【００９１】
受信バッファ７０１は、バスマスタ４０２から送信されたデータを格納するメモリである。
【００９２】
送信レート値記憶部７０２は、送信レートの上限の値を記憶するメモリである。送信レートの値はバスマスタ毎に予め設定されている。
【００９３】
送信レート制御部７０３は、送信レート値記憶部７０２に記憶されている送信レート値に基づき受信バッファ７０１に格納されたアクセス要求（データ）の送信間隔を制御する。
【００９４】
送信制御部７０４は、送信レート制御部７０３からの指示された送信間隔で受信バッファ７０１に格納されたアクセス要求（データ）を送信する。
【００９５】
パケット化処理部７０５は、アクセス要求（データ）を、パケットに変換し、中継装置へ送信する処理部である。
【００９６】
図９は、バスマスタの送信レートを設定するＮＩＣ−Ｂ４０７（図８）の動作フローである。
【００９７】
ステップ８０１において、ＮＩＣ−Ｂ４０７の受信バッファ７０１は、バスマスタ４０２からデータの送信要求があるかどうかを判定し、送信要求がある場合にはステップ８０２に移る。送信要求がない場合にはステップ８０１を繰り返す。
【００９８】
ステップ８０２において、ＮＩＣ−Ｂ４０７の受信バッファ７０１は、バスマスタ４０２から送信されたデータを格納する。
【００９９】
ステップ８０３において、送信レート制御部７０３は、送信レート値記憶部７０２に記憶されている送信レート値でデータ伝送が実現されるように、アクセス要求（データ）の送信間隔を制御し、受信バッファ７０１に格納されたアクセス要求（データ）を送信する。
【０１００】
ステップ８０４において、パケット化処理部７０５は、アクセス要求（データ）のパケット化を行う。
【０１０１】
ステップ８０５において、パケット化処理部７０５からパケットを送信し、ステップ８０１に戻る。
【０１０２】
ステップ８０１からステップ８０５を繰り返すことで、ＮＩＣ−Ｂ４０７は予め設定された送信レートでバスマスタからのアクセス要求（データ）を送信する。
【０１０３】
なお、本実施形態では、保証レートを越えた送信を行うプロセッサクラスとレート保証クラスのバスマスタと接続するＮＩＣ−Ｂ４０７では、送信レート値は 保証レートより高い値を設定する。なお、送信レート値は、保証すべきレートで設定してもよく送信レート値には制約されない。
【０１０４】
図１０は、アクセス制御装置４０１の構成例を示す。
【０１０５】
以下では、説明を簡単にするために、プロセッサクラスとレート保証クラスに限定してアクセス制御装置４０１の動作を説明する。ただし、アクセス制御装置４０１は、図６で説明した全てのクラスに関して動作する。
【０１０６】
本実施形態では、アクセス制御装置４０１を、複数のバスマスタからのアクセス要求が１つの伝送経路に集約される中継装置４０６の一部として実現した場合を例に説明する。なお、実際の中継装置４０６では、データを宛先まで届けるためのルーティング機能、および次の中継先でパケットを格納するバッファを確保するＶＣアロケーション機能を備える。しかしながら、複数のアクセス要求の調停に関する機能を説明し、ルーティング機能とＶＣアロケーション機能の説明は省略する。
【０１０７】
アクセス制御装置４０１は、アクセス要求管理部４０４と、調停部４０５とを備えている。以下、アクセス制御装置４０１の各構成ブロックを説明する。
【０１０８】
アクセス要求管理部４０４は、バスマスタからのアクセス要求（データ）を品質クラスと宛先の組合せ毎に区別して管理する。本実施形態のアクセス要求管理部４０４は、４種類の保証クラスを区別するために、アクセス要求のクラスによって異なる４種類のバッファ（記憶領域）９０３〜９０６を備える。このうち、プロセッサクラス用バッファ９０４は、共有メモリ１宛バッファ９０４ａと共有メモリ２宛バッファ９０４ｂとを含む。レート保証クラス用バッファ９０５もまた、共有メモリ１宛バッファ９０５ａと共有メモリ２宛バッファ９０５ｂとを含む。また、アクセス要求管理部４０４は、クラス識別規則記憶部９０１と、クラス振分部９０２、宛先振分部９１６を備える。
【０１０９】
クラス識別規則記憶部９０１は、各バスマスタ４０２に対して要求される伝送性能の保証クラスの関係を定義した識別規則を記録する。例えば、クラス識別規則記憶部９０１はメモリやレジスタなどの記憶装置である。
【０１１０】
クラス振分部９０２は、受信したアクセス要求（データ）の送信元と、クラス識別規則記憶部９０１で定義された識別規則に基づいて、送信元であるバスマスタがどの保証クラスに属するかの振分けを行う。クラス振分部９０２は、たとえばハードウェアとして実装された集積回路である。
【０１１１】
宛先振分部９１６は、受信したアクセス要求（データ）の宛先に基づいて、アクセス要求（データ）の振分けを行う。宛先振分９１６は、たとえばハードウェアとして実装された集積回路である。
【０１１２】
すなわちアクセス要求管理部４０４は、６種類のバッファ、およびバッファへのデータの入力、格納および出力を管理するコントローラ（集積回路）として実現される。
【０１１３】
バッファ（記憶領域）９０３は、遅延保証クラスのアクセス要求（データ）を格納するために利用される。バッファ（記憶領域）９０４（９０４ａと９０４ｂ）は、プロセッサクラスのアクセス要求（データ）を格納するために利用される。バッファ（記憶領域）９０５（９０５ａと９０５ｂ）は、レート保証クラスのアクセス要求（データ）を格納するために利用される。バッファ（記憶領域）９０６は、ベストエフォートクラスのアクセス要求（データ）を格納するために利用される。
【０１１４】
なお、アクセス要求管理部４０４に設けられる記憶領域９０３〜９０６は、共有メモリ４０３への伝送を切り替えることが可能であれば、種々の構成を採用できる。たとえば、物理的に分離されたバッファで記憶領域９０３〜９０６を構成してもよいし、１つのバッファ内の記録領域を論理的にわけて構成してもよい。または両方の方法を併用してもよい。
【０１１５】
以下の説明では、バッファ（記憶領域）９０３〜９０６は、物理的に個別のバッファ９０３〜９０６として構成されているとして説明する。
【０１１６】
調停部４０５は、要求品質の異なるアクセス要求に対し、共有メモリにアクセスするアクセス要求を１つ決定する。調停部４０５は、たとえばハードウェアとして実装された集積回路である。
【０１１７】
本実施形態の調停部４０５は、利用帯域測定部９０７、クラス間調停部９０８、送信制御部９０９、調停ルール記憶部９１１、調停ルール設定部９１２、宛先間調停部９１３、保証レート値記憶部９１４を備える。
【０１１８】
保証フラグ記憶部９１７は、クラスと宛先を区別して送信されたアクセス要求（データ）の送信量を記録し、保証レート分のアクセス要求（データ）が送信済であるかどうかを判定する保証フラグの値を記憶する。
【０１１９】
利用帯域測定部９０７は、クラス毎に区別して共有メモリ４０３へ送信されたアクセス要求（データ）の送信量を測定し、保証フラグ記憶部９１７に測定した送信量を記録する。さらに、送信量の累積値が保証レート分の送信量が送信済みかどうかを判定し、その結果を保証フラグ記憶部９１７に記録する。
【０１２０】
クラス間調停部９０８は、アクセス要求管理部４０４に格納されているクラス毎のアクセス要求の有無と、利用帯域測定部９０７で保証レート分の送信量が送信済みかどうかの判定結果に基づき、送信するアクセス要求をクラス間で調停する。たとえばクラス間調停部は、要求品質の厳しい順に、送信すべきデータの要求品質を選択する。
【０１２１】
宛先間調停部９１３は、アクセス要求管理部４０４に格納されているクラス毎のアクセス要求の有無に基づき、アクセス要求を調停する。より具体的には、宛先間調停部９１３は、アクセス要求管理部４０４に格納されているアクセス要求の中に、宛先の異なる複数のアクセス要求が存在する場合には、そのようなアクセス要求の間で調停を行う。たとえば宛先間調停部９１３は、各宛先へ送信されるアクセス要求（データ）の送信量が均一に近づくよう、送信すべきデータの宛先を選択したり、ランダムに送信すべきデータの宛先を選択する。
【０１２２】
調停ルール記憶部９１１は、クラス間調停部９０８と宛先間調停部９１３に対し、どちらの調停を先に行うか、調停のルール（調停の順序と各ルールを適用する条件）を記録する記憶部である。
【０１２３】
調停ルール設定部９１２は、調停ルール記憶部９１１に記録されているルールを元に、クラス間調停部９０８と宛先間調停部９１３に対し、先に調停を行う順序を設定する。
【０１２４】
保証レート値記憶部９１４は、各クラスの保証レートの値を記憶する。
【０１２５】
送信制御部９０９は、クラス間調停部９０８により選択されたクラスの保証レートを、保証レート値記憶部９１４から取得し送信量を設定し、さらに、宛先間調停部９１３とクラス間調停部９０８により選択されたアクセス要求管理部４０４のバッファから、アクセス要求（データ）を送信する。
【０１２６】
次にアクセス制御装置４０１の全体の動作フローを説明する。
【０１２７】
図１１は、アクセス制御装置４０１の全体の動作フローの概要を示す。
【０１２８】
ステップ１００１において、アクセス制御装置４０１のクラス振分部９０２は、ＮＩＣ−Ｍ４０８から共有メモリ４０３へのアクセス要求があるかどうかを判定し、アクセス要求を受信するとステップ１００２に移る。アクセス要求を受信しない場合はステップ１００１を繰り返す。
【０１２９】
ステップ１００２において、クラス振分部９０２は、クラス識別規則記憶部９０１に記録されているクラス識別規則に基づき、受信したアクセス要求の送信元であるバスマスタの品質クラスを判定する。
【０１３０】
ステップ１００３において、宛先振分部９１６は、受信したアクセス要求の宛先を判定する。
【０１３１】
ステップ１００４において、クラス振分部９０２と宛先振分部９１６は、ステップ１００２で判定された品質クラスと宛先に対応するバッファにアクセス要求（データ）を格納する。
【０１３２】
ステップ１００５において、調停部４０５は、アクセス要求管理部４０４内のバッファ９０３，９０４（９０４ａ、９０４ｂ），９０５（９０５ａ、９０５ｂ），９０６に格納されているアクセス要求（データ）に対し調停を行い、共有メモリ４０３へ送信するアクセス要求（データ）を１つ決定し、決定されたアクセス要求（データ）を送信する。
【０１３３】
調停部４０５の全体の動作を図１３を用いて説明する。また詳細な動作として、利用帯域測定部９０７、クラス間調停９０８、宛先間調停部９１３、送信制御部９０９の詳細な動作をそれぞれ図１５、図１６、図１７、図１８を用いて後に説明する。
【０１３４】
以上、ステップ１００１からステップ１００５を繰り返すことにより、アクセス制御装置４０１は、複数のバスマスタ４０２から送信されたアクセス要求（データ）を調停し、共有メモリ４０３へと送信する。
【０１３５】
図１２は、クラス識別規則１１０１の例を示す。クラス識別規則１１０１は、バスマスタのＩＤ（識別情報）と、そのバスマスタの品質クラスとの対応関係を記述した規則である。クラス識別規則１１０１は予め設計時に決定されており、クラス識別規則記憶部９０１に格納されている。
【０１３６】
図１２のクラス識別規則１１０１では、ＩＤ（識別情報）が００、０１、０２のバスマスタの品質クラスは遅延保証クラス、ＩＤ（識別情報）が０３のバスマスタはプロセッサクラス、ＩＤ（識別情報）が０４、０５のバスマスタはレート保証クラス、ＩＤ（識別情報）が０６のバスマスタはベストエフォートクラスであることが識別規則として定義されている。
【０１３７】
図１３は、調停部４０５の全体の動作フローを示す。
【０１３８】
調停部４０５は、アクセス要求管理部４０４に格納された複数のアクセス要求（データ）に対し、アクセス要求（データ）のクラスと宛先に基づき、アクセス要求（データ）の送信スケジューリングを調停する。
【０１３９】
ステップ１２０１において、クラス間調停部９０８は、各クラスのアクセス要求（データ）の有無を確認する。
【０１４０】
ステップ１２０２において、クラス間調停部９０８は、保証フラグ記憶部９１７を参照し、保証レート分のアクセス要求（データ）を送信済みのクラスを特定する。保証フラグ記憶部９１７に記憶される情報については、後に図１４を用いて説明する。
【０１４１】
ステップ１２０３において、クラス間調停部９０８は、複数のアクセス要求（データ）に対し、送信するクラスを選択する。クラス間調停部９０８の詳細な動作については、後に図１６を用いて説明する。
【０１４２】
ステップ１２０４において、宛先間調停部９１３は、複数のアクセス要求（データ）に対し、送信する宛先を選択する。宛先間調停部９１３の詳細な動作については、後に図１７を用いて説明する。
【０１４３】
ステップ１２０５において、送信制御部９０９は、選択されたクラスと宛先のアクセス要求に対して、送信量の値を設定し、アクセス要求（データ）を送信する。送信制御部９０９の詳細な動作については、後に図１９を用いて説明する。
【０１４４】
図１４は、保証フラグ記憶部９１７に記録されるアクセス要求（データ）毎の保証フラグと送信量の値を示す。本実施形態では、保証フラグと送信量は、プロセッサクラスのメモリ１宛とメモリ２宛、及びレート保証クラスのメモリ１宛とメモリ２宛のそれぞれのアクセス要求（データ）に対して設けられる。
【０１４５】
保証フラグの値は、保証レート分のアクセス要求（データ）が未送信な状態では０が設定され、保証レート分のアクセス要求（データ）が送信済みになると値が１に設定される。
【０１４６】
また、送信量の値は保証フラグが０の状態で、送信されたアクセス要求（データ）の累積値が記録され、保証フラグが１になると値が０にリセットされる。
【０１４７】
図１５は、利用帯域測定部９０７の動作フローを示す。
【０１４８】
利用帯域測定部９０７は、少なくともプロセッサクラスおよびレート保証クラスの各アクセス要求（データ）の送信量を測定する。そして利用帯域測定部９０７は、各クラスと宛先の組合せを区別して各バスマスタが保証レート分のアクセス要求（データ）を送信したかどうかを、保証フラグ記憶部９１７に記憶されている保証フラグの値を変更することで管理する。
【０１４９】
本実施形態では、保証フラグ値は、アクセス制御装置の起動時に０に設定される。また、値が１になった保証フラグも、保証レートに基づく所定の時間が経過する毎に、定期的に値を０にリセットにされる。
【０１５０】
ステップ１４０１において、利用帯域測定部９０７は、アクセス要求（データ）が送信されたかどうかを判定する。アクセス要求（データ）が送信を検出した場合にはステップ１４０２に移る。アクセス要求（データ）の送信を未検出の場合はステップ１４０１を繰り返す。
【０１５１】
ステップ１４０２において、利用帯域測定部９０７は、共有メモリ４０３へ送信されたアクセス要求（データ）の送信量を測定し、送信量を保証フラグ記憶部９１７に記憶する。
【０１５２】
ステップ１４０３において、利用帯域測定部９０７は、送信されたアクセス要求（データ）のクラスを特定し、特定されたクラスがプロセッサクラス、又はレート保証クラスであった場合は、ステップ１４０４に移る。特定されたクラスがプロセッサクラス、又はレート保証クラスでない場合には、ステップ１４０１に移る。
【０１５３】
ステップ１４０４において、利用帯域測定部９０７は、送信されたアクセス要求（データ）の宛先を判定する。
【０１５４】
ステップ１４０５において、利用帯域測定部９０７は、特定したクラスと宛先のアクセス要求（データ）が、保証レート分の送信量を送信したかどうかを判定する。
【０１５５】
保証レート分の送信量を送信済みの場合はステップ１４０６に移り、保証レート分の送信量をまだ送信していない場合は、ステップ１４０７に移る。
【０１５６】
ステップ１４０６において、利用帯域測定部９０７は、保証フラグ記憶部９１７において、該当するクラスと宛先の保証フラグを１に設定し、また、送信量を０にリセットする。そして、ステップ１４０１に移る。
【０１５７】
ステップ１４０７において、利用帯域測定部９０７は、測定したアクセス要求（データの）送信量の値を、保証フラグ記憶部９１７において、該当するクラスと宛先の送信量に加算する。そして、ステップ１４０１に移る。
【０１５８】
ステップ１４０１からステップ１４０７を繰り返すことで、利用帯域測定９０７は、プロセッサクラスとレート保証クラスのアクセス要求（データ）に対し、宛先を区別して、保証レート分の送信を行ったかどうかを保証フラグ記憶部９１７で記録される保証フラグの値として管理する。
【０１５９】
次に、クラス間調停部９０８の動作を説明する。
【０１６０】
クラス間調停部９０８は、アクセス要求管理部４０４に格納されているクラス毎のアクセス要求（データ）の有無と、保証フラグの値に基づき送信するクラスを選択する。
【０１６１】
図１６は、クラス間調停部９０８の動作フローを示す。
【０１６２】
ステップ１５０１において、クラス間調停部９０８は、アクセス要求管理部４０４の遅延保証クラスのバッファ９０３を参照し、アクセス要求（データ）が格納されているかどうかを判定する。アクセス要求（データ）が格納されていればステップ１５０２に移る。アクセス要求（データ）が格納されていなければステップ１５０３に移る。
【０１６３】
ステップ１３０２において、クラス間調停部９０８は、アクセス要求管理部４０４の遅延保証クラスを選択し、動作を終了する。
【０１６４】
ステップ１５０３において、クラス間調停部９０８は、アクセス要求管理部４０４のプロセッサクラスのバッファ９０４（９０４ａ、９０４ｂ）を参照し、アクセス要求（データ）が格納されているかどうかを判定する。アクセス要求（データ）が格納されていればステップ１５０４に移る。アクセス要求（データ）が格納されていなければステップ１５０６に移る。
【０１６５】
ステップ１５０４において、クラス間調停部９０８は、保証フラグ記憶部９１７で、プロセッサクラスの保証フラグを参照し、値が０のプロセッサクラスの保証フラグがあるかどうかを判定する。値が０の保証フラグがあれば、ステップ１５０５に移り、値が０の保証フラグがなければステップ１５０６に移る。
【０１６６】
ステップ１５０５において、クラス間調停部９０８は、アクセス要求管理部４０４のプロセッサクラスで保証フラグが０のアクセス要求（データ）を選択し、動作を終了する。
【０１６７】
ステップ１５０６において、クラス間調停部９０８は、アクセス要求管理部４０４のレート保証クラスのバッファ９０４（９０４ａ、９０４ｂ）を参照し、アクセス要求（データ）が格納されているかどうかを判定する。アクセス要求（データ）が格納されていればステップ１５０７に移る。アクセス要求（データ）が格納されていなければステップ１５０９に移る。
【０１６８】
ステップ１５０７において、クラス間調停部９０８は、保証フラグ記憶部９１７で、レート保証クラスの保証フラグを参照し、値が０のレート保証クラスの保証フラグがあるかを判定する。値が０の保証フラグがあれば、ステップ１５０８に移り、値が０の保証フラグがなければステップ１５０９に移る。
【０１６９】
ステップ１５０８において、クラス間調停部９０８は、アクセス要求管理部４０４のレート保証クラスで保証フラグが０のアクセス要求（データ）を選択し、動作を終了する。
【０１７０】
ステップ１５０９において、クラス間調停部９０８は、アクセス要求管理部４０４のプロセッサクラスのバッファ９０４を参照し、アクセス要求（データ）が格納されているかどうかを判定する。アクセス要求（データ）が格納されていればステップ１５１２に移る。アクセス要求（データ）が格納されていなければステップ１５１０に移る。
【０１７１】
ステップ１５１０において、クラス間調停部９０８は、アクセス要求管理部４０４のレート保証クラスのバッファ９０５を参照し、アクセス要求（データ）が格納されているかどうかを判定する。アクセス要求（データ）が格納されていればステップ１５０８に移る。アクセス要求（データ）が格納されていなければステップ１５１１に移る。
【０１７２】
ステップ１５１１において、クラス間調停部９０８は、アクセス要求管理部４０４のベストエフォートクラスのアクセス要求（データ）を選択し、動作を終了する。
【０１７３】
ステップ１５１２において、クラス間調停部９０８は、アクセス要求管理部４０４のプロセッサクラスのアクセス要求（データ）選択し、動作を終了する。
【０１７４】
ステップ１５１３において、クラス間調停部９０８は、アクセス要求管理部４０４のレート保証クラスのアクセス要求（データ）選択し、動作を終了する。
【０１７５】
以上、クラス間調停部９０８は、ステップ１５０１からステップ１５１３を実行することで、保証レート分と保証レートを超える送信量を区別する。そしてクラス間調停部９０８は、まずは保証レート分のアクセス要求（データ）を優先度の高いクラスから順番に選択し、さらに伝送帯域に空きがあれば保証レートを超えて先行して送信するアクセス要求（データ）を優先度の高いクラスから順番に選択する。
【０１７６】
次に、宛先間調停部９１３の動作を説明する。
【０１７７】
宛先間停部９１３は、アクセス要求管理部４０４に格納されている宛先毎のアクセス要求（データ）の有無に基づき送信するクラスを選択する。
【０１７８】
図１７は、宛先間調停部９１３の動作フローを示す。
【０１７９】
ステップ１６０１において、宛先間調停部９１３は、アクセス要求管理部４０４に対し、クラス間調停部９０８で選択されたクラスのバッファを参照し、複数の宛先に対するアクセス要求（データ）の有無を判定する。複数の宛先に対するアクセス要求（データ）がある場合にはステップ１６０２に移る。複数の宛先に対するアクセス要求（データ）がない場合には、ステップ１６０３に移る。
【０１８０】
ステップ１６０２において、宛先間調停部９１３は、アクセス要求のある複数の宛先から、ラウンドロビンにより宛先を１つ選択し、動作終了する。
【０１８１】
ステップ１６０３において、宛先間調停部９１３は、アクセス要求のある宛先を選択し、動作終了する。
【０１８２】
なお、ステップ１６０２において、宛先を選択する方法は、ラウンドロビン以外にも種々考えられる。たとえば、宛先をランダムに選択する方法や、一定時間の送信量をカウントして、カウントが所定の値になれば宛先を切り替える方法などである。これらは宛先間の伝送負荷を均一に近づけるための一例であると言える。宛先間の伝送負荷を均一に近づける方法であれば、別の方法を用いても良い。本明細書では、宛先間の伝送負荷を均一に近づける動作を、「分散」という語を用いて表現することがある。すなわち本明細書において、宛先間調停部９１３が送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる、などと表現すると、宛先間調停部９１３は、適切にデータの宛先を選択することによって、宛先間の伝送負荷が均一に近づくように各宛先へのデータの送信量を制御することを意味する。
【０１８３】
なお、伝送負荷を均一に近づける目的は、一部の宛先に伝送負荷が集中することで他のアクセス要求の送信で待ちが発生し、遅延が増加するのを回避することである。このため、一部の宛先への伝送負荷集中を回避できれば、宛先間の伝送負荷は厳密に均一である必要はない。例えば、アクセス制御装置において、宛先１と宛先２に対してデータを送信する際に、いずれか一方の宛先に伝送負荷が集中することにより、他方の宛先へのデータの送信に関して待ちが発生しない範囲であれば、宛先間のデータの送信量に偏りが発生しても良い。宛先間調停部９１３は、そのような偏りを許容しながら、データの送信量を制御することになる。このような形態もまた、各宛先へのデータの送信量を分散させることの範疇である。
【０１８４】
以上、宛先間調停部９１３は、ステップ１６０１からステップ１６０３を実行することで、宛先間の伝送負荷を均一化となるように宛先を選択する。
【０１８５】
本実施形態では、宛先間調停部９１３は、クラス間調停部９０８で選択されたクラスに対して、宛先の選択を行う。これにより、要求品質の厳しいクラスを優先し、さらに一部の宛先に伝送負荷が集中することで、他のアクセス要求の送信待ちが発生し、遅延が増加することを回避できる。
【０１８６】
図１８は、保証レート値記憶部９１４に記憶される遅延保証クラス、プロセッサクラス、レート保証クラスの保証レートの設定値の一例を示す。
【０１８７】
図１８では、保証レートとして、遅延保証クラスには３０、プロセッサクラスには２０、レート保証クラスには１０の値が設定されている。保証レートの値は、クラス毎に定義され事前に設定される。
【０１８８】
次に、送信制御部９０９の動作を説明する。
【０１８９】
送信制御部９０９は、クラス間調停部９０８で選択されたクラスと、宛先間調停部９１３で選択された宛先のアクセス要求（データ）に対して、保証レート分の送信量を設定し、アクセス要求（データ）を送信する。
【０１９０】
図１９は、送信制御部９０９の動作フローを示す。
【０１９１】
ステップ１８０１において、クラス間調停部９０８で選択されたクラスと、宛先間調停部９１３で選択された宛先を特定する。
【０１９２】
ステップ１８０２において、クラス間調停部９０８により選択されたクラスの種類を判定し、選択されたクラスがベストエフォートクラスであればステップ１８０６に移り、ベストエフォートクラス以外であればステップ１８０３に移る。
【０１９３】
ステップ１８０３において、クラス間調停部９０８と宛先間調停部９１３により選択されたクラスと宛先の保証フラグの値を参照し、保証フラグの値が０の場合は、ステップ１８０４に移る。保証フラグの値が１の場合は、ステップ１８０６に移る。
【０１９４】
ステップ１８０４において、選択されたアクセス要求は、保証フラグの値が０であり、保証レート分のデータの送信が完了していないため、送信制御部９０９は、保証レート値記憶部９１４を参照し、選択されたアクセス要求のクラスに対応する保証レートを設定する。次にステップ１８０５に移る。
【０１９５】
ステップ１８０５において、送信制御部９０９は、設定された保証レートに基づいてアクセス要求の送信量を設定し、ステップ１８０７に移る。
【０１９６】
ステップ１８０６において、選択されたアクセス要求は、ベストエフォートクラスか、または保証フラグの値が１であり、保証レート分のデータの送信を完了しているアクセス要求であるため、伝送路の空き帯域の大きさに基づいてアクセス要求（データ）の送信量を設定し、ステップ１８０７に移る。
【０１９７】
ステップ１８０７において、送信制御部９０９は、選択されたクラスと宛先のアクセス要求（データ）を、設定された送信量で、送信する。
【０１９８】
以上、ステップ１８０１からステップ１８０７を実行することにより、送信量制御９０９は、クラス間調停部９０８と宛先間調停部９１３により選択されたクラスと宛先のアクセス要求（データ）を設定された送信量で送信する。
【０１９９】
次に、調停部４０５による図１３の動作フローにより、アクセス要求管理部４０４に格納されたアクセス要求（データ）が共有メモリ４０３へ送信される例を図２０から２２を用いて説明する。なお、図２０から図２２では、説明を簡単にするため、プロセッサクラスレート保証クラスに対するアクセス要求（データ）があった場合を想定する。
【０２００】
まず、クラス間の調停のみを行い、宛先間の調停を行わない例を説明する。
【０２０１】
図２０は、バッファから保証レート分のアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す。
【０２０２】
図２０では、プロセッサクラスでメモリ１宛のアクセス要求（データ）は５つ、メモリ２宛のアクセス要求（データ）は４つ格納されており、レート保証クラスでメモリ１宛のアクセス要求（データ）は４つ、メモリ２宛のアクセス要求（データ）は５つ格納されて状態から保証レート分の送信量（３つ）のアクセス要求（データ）を送信した時の、送信の順番を示している。
【０２０３】
なお、バッファに格納されたアクセス要求（データ）、バッファの右側に格納されたアクセス要求（データ）から順に送信され、また、バッファ間の優先順位は上から高く設定されている。
【０２０４】
この場合、プロセッサクラスの保証分のアクセス要求（データ）が全て送信された後に、レート保証クラスの保証分のアクセス要求が送信することで、レート保証クラスに対しては、プロセッサクラスの遅延時間を削減できるが、メモリ１宛とメモリ２宛に対して宛先間の調停が行われないため、メモリ１宛のアクセス要求（データ）の送信が完了するまで、メモリ２宛のアクセス要求（データ）の送信が待たされる。
【０２０５】
このような場合、同じプロセッサクラスのアクセス要求であっても、メモリ１宛とメモリ２宛でアクセス要求が送信されるまでの遅延時間の差が大きくなってしまう。
【０２０６】
一方、図２１は、クラス間の調停と宛先間の調停を行いながら、優先度の高いバッファから保証レート分のアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す。
【０２０７】
この場合、プロセッサクラスの保証分のアクセス要求（データ）が全て送信された後に、レート保証クラスの保証分のアクセス要求が送信される。プロセッサクラスの遅延時間を削減した上で、さらに、異なる宛先に対し、送信量が均一になるようにデータを送信していくため、メモリ１宛とメモリ２宛のアクセス要求が送信されるまでの遅延時間の差を削減することができる。
【０２０８】
これにより、特定の宛先の遅延時間の増加を抑制することができる。
【０２０９】
図２２は、宛先間の調停を行いながら、優先度の高いバッファから保証レート分を超えたアクセス要求（データ）を送信した場合の、各バッファから送信されるアクセス要求（データ）の順番を示す。
【０２１０】
保証レートを超えたアクセス要求（データ）の送信においても、保証レート分のアクセス要求（データ）の送信と同様に、まずプロセッサクラスのアクセス要求（データ）があれば、レート保証クラスよりも優先して先に送信され、さらにメモリ１宛とメモリ２宛に対しても、複数の宛先間で送信量を均一になるように送信順序が割当てられる。
【０２１１】
以上のように、アクセス制御装置４０１は、複数のアクセス要求に対して要求品質に基づくクラス間の調停を行った後、宛先間の調停を行うことで、複数の宛先に対し伝送を行うプロセッサクラスに対し即応性の高い調停を実現できる。
【０２１２】
次に、アクセス制御装置４０１において、クラス間調停と、宛先間調停の順番を入れ替える処理の例を説明する。まず、要求品質に基づくクラス間の調停と、複数の宛先に対する宛先間の調停の順番と、性能保証の関係について説明する。
【０２１３】
クラス間調停の後に、宛先間調停を行う場合、常に優先度の高いプロセッサクラスからアクセス要求（データ）が選択されるため、プロセッサクラスの遅延時間を、レート保証クラスよりも低くできる。
【０２１４】
しかし、例えば、プロセッサクラスがメモリ１へ、レート保証クラスがメモリ２へそれぞれアクセス要求（データ）を送信する場合、常にメモリ１宛への送信が優先さるため、メモリ２への送信に待ちが発生し、メモリ２の利用効率が低くなる。
【０２１５】
一方、宛先間調停の後に、クラス間調停を行う場合、メモリ１とメモリ２対して同等のアクセス要求（データ）が届くため、メモリ１とメモリ２の両方の利用効率を高くできる。
【０２１６】
ここで、例えば、プロセッサクラスがメモリ１へ、レート保証クラスがメモリ２へ、それぞれアクセス要求（データ）を送信する場合を想定する。このような場合には、レート保証クラスが送信している間、プロセッサクラスの送信は待たされるため、プロセッサクラスの伝送遅延が高くなってしまう。
【０２１７】
このように、クラス間調停と、宛先間調停と順番の違いにより、伝送遅延とメモリの利用効率に対し、得られる効果が異なる。
【０２１８】
すなわち、クラス間の調停を先に行う場合には、低遅延化を優先しながら、メモリの利用効率を高めることができる。一方、宛先間調停を先に行う場合には、メモリの利用効率を優先して低遅延化を行うことができる。
【０２１９】
なお、低遅延化の要求の高いプロセッサクラス以上の優先度を持つクラス（低遅延クラス、プロセッサ）が存在し得る場合には、アクセス要求管理部４０４は動的に調停ルールを変更しても良い。たとえばアクセス要求管理部４０４は、伝送遅延を低下できる調停ルールを用いて、低遅延化への要求が低いクラス（レート保証クラス、ベストエフォートクラス）のみの場合には、両方のメモリの利用効率を高められる調停ルールを用いても良い。これにより、低遅延化への要求が低いクラスを予め伝送しておくことが可能となり、低遅延化の要求の高いクラス（低遅延クラス、プロセッサ）のアクセス要求に伴うトラヒックが発生したときに、速やかに当該クラスのトラヒックを伝送することが可能になる。
【０２２０】
調停ルールの変更は、予め調停ルール記憶部９１１に複数のルールと実行条件を設定しておき、アクセス要求管理部４０４に格納されるアクセス要求の種類に基づいて、調停ルール設定部９１２が実行するルールを変更することで行う。
【０２２１】
図２３は、調停ルール記憶部９１１で記憶される情報を示す。
【０２２２】
調停ルール記憶部９１１では、クラス間調停と宛先間調停を実行する順序とルールを選択する条件を定義した２つのルールが記録されている。
【０２２３】
ルール１では、複数のアクセス要求の中に、要求品質がプロセッサクラス以上のアクセス要求（データ）があれば、最初に要求品質に基づくクラス間での調停を行い、次に宛先の違いに基づく宛先間の調停を行うルールが定義されている。これにより、要求品質の厳しいアクセス要求の低遅延化を優先しながら、メモリの利用効率を高めることができる。
【０２２４】
ルール２では、複数のアクセス要求の中に、要求品質がプロセッサクラス以上のアクセス要求（データ）がなければ、最初に宛先の違いに基づく宛先間調停を行い、次に要求品質に基づくクラス間での調停を行うルールが定義されている。これにより、メモリの利用効率の向上を優先しながら、要求品質の厳しいアクセス要求の低遅延化を行うことができる。
【０２２５】
このように、遅延保証クラスやプロセッサクラス等、低遅延化が求められるクラスではルール１を選択し、レート保証クラスなどスループットの向上が要求されるクラスではルール２を選択する。
【０２２６】
図２４は、調停ルールを動的に変更する場合の調停部４０５の動作を示す。図１３と同様のステップについては、同じ番号を付与し、説明を省略する。
【０２２７】
ステップ２４０１において、調停ルール設定部９１２は、アクセス要求管理部４０４に格納されるアクセス要求（データ）の種類を参照し、プロセッサクラスよりも優先度が高いアクセス要求（データ）があるかどうかを判定する。プロセッサクラスよりも優先度の高いアクセス要求がある場合には、ステップ１１０３に移る。プロセッサクラスよりも優先度の高いアクセス要求がない場合には、ステップ２４０２に移る。
【０２２８】
ステップ２４０２の動作は、ステップ１１０４の動作と同じである。ステップ２４０２の動作が終わるとステップ２４０３に移る。
【０２２９】
ステップ２４０３の動作は、ステップ１１０３の動作と同じである。ステップ２４０３の動作が終わるとステップ１１０５に移る。
【０２３０】
以上、説明したように、要求品質がプロセッサクラスよりも高いアクセス要求（データ）の有無に応じて調停ルールを変更するで、プロセッサクラスのアクセス要求（データ）の遅延時間を低く抑えつつ、プロセッサクラスのアクセス要求（データ）がない場合に、メモリ間の利用効率を高めることができる。
【０２３１】
次に、プロセッサクラスの即応性を向上させるために、プロセッサクラスとレート保証クラスの間で送信量の貸し借りを行う調停方法について説明する。
【０２３２】
レート保証クラスでは、図７（Ｂ）に示すように、保証すべき送信レートより高いトラヒックが発生したり、保証すべき送信レートよりは小さいトラヒックが発生したりするが、平均して送信レートの保証ができればよい。このため、保証レートを超えて発生したアクセス要求を先行して送信しておくことで、後でレート保証クラスの送信量を減らしても、要求性能を保証することができる。
【０２３３】
一方、プロセッサクラスでは、図７（Ａ）に示すように、保証レートを超える送信レートのトラヒックが発生する。このようなトラヒックに関しては、保証レートよりも高い送信レートでトラヒックをより早く処理することが求められる。
【０２３４】
このため、プロセッサクラスのアクセス要求（データ）がない状態で、レート保証クラスのアクセス要求（データ）を先行して送信した送信量（先行アクセス量）を、プロセッサクラスのアクセス要求の発生時にプロセッサクラスの送信量に割当てることで、レート保証クラスの伝送性能を保証しつつ、プロセッサクラスの送信量を増加できる。これにより、プロセッサクラスの即応性を向上できる。
【０２３５】
アクセス制御装置は、レート保証クラスの送信量の削減と、プロセッサクラスの送信量の増加を行う。具体的には、アクセス制御装置は、レート保証クラスにおいて保証レートを超えて先行して送信したアクセス要求（データ）の送信量を記録する。そして、後にプロセッサクラスのアクセス要求（データ）が発生した際に、アクセス制御装置は、先行して送信したレート保証クラスの送信分の送信量をレート保証クラスの送信量から差し引き、差し引いた送信量をプロセッサクラスのアクセス要求（データ）の送信に利用する。これはすなわち、クラス間で送信帯域の貸し借りを行っていると言える。
【０２３６】
以下、プロセッサクラスとレート保証クラス間で、送信量の貸し借りを実現するアクセス制御装置の構成（図２５）および動作フロー（図２７）を説明する。
【０２３７】
図２５は、プロセッサクラスとレート保証クラスで送信量の貸し借りを実現するアクセス制御装置２５０１の構成例を示す。図１０のアクセス制御装置４０１と同じ構成については、図１０と同じ番号を付与し、説明を省略する。
【０２３８】
先行アクセス記憶部２５０１は、保証レートを超えて先行して送信されたアクセス要求（データ）の先行アクセス数を記録する。
【０２３９】
本実施形態では、レート保証クラスについて先行アクセス数を記録する。
【０２４０】
図２６は、先行アクセス記憶部２５０１に記憶される情報を示す。先行アクセス記憶部２５０１は、送信制御部９０９において、先行して送信したアクセス要求（データ）の送信量として先行アクセス数の値の情報を記憶する。
【０２４１】
図２６では、レート保証クラスの先行アクセス数の値として、１が記録されている。
【０２４２】
図２７は、レート保証クラスとプロセッサクラスとの間で送信量の貸し借りを実現する送信制御部９０９の動作フローを示す。図１９と同じステップについては、同じ番号を付与し説明を省略する。
【０２４３】
ステップ２６０１において、送信制御部９０９は、アクセス要求（データ）がレート保証クラスかどうかを判定する。アクセス要求（データ）がレート保証クラスである場合には、ステップ２６０２に移り、レート保証クラスでない場合にはステップ１８０７に移る。
【０２４４】
ステップ２６０１において、先行アクセス記憶部２５０１は、レート保証クラスが先行して送信したアクセス要求（データ）の送信量を、先行アクセス数として先行アクセス記憶部２５０１に記録して、ステップ１８０７に移る。
【０２４５】
ステップ２６０３において、送信制御部９０９は、送信されたアクセス要求（データ）がプロセッサクラスかどうか判定する。アクセス要求（データ）がプロセッサクラスの場合はステップ２６０４に移る。プロセッサクラスではない場合はステップ１８０７に移る。
【０２４６】
ステップ２６０４において、送信制御部９０９は、プロセッサクラスの送信量に対し、先行アクセス数分の送信量を加算することで、プロセッサの送信量を増加させる。さらに、送信制御部９０９は先行アクセス数の値を０に初期化し、ステップ１８０７に移る。
【０２４７】
以上、図２７の動作フローを行うことで、先行して送信されたレート保証クラスの送信量を先行アクセス数として記録する。そして、先行して送信した分の送信量を、後に送信されるプロセッサクラスの送信量に割当てることで、プロセッサクラスの送信量を増加させることが可能となる。
【０２４８】
図２８（Ａ）〜（Ｄ）は、先行して送信したレート保証クラスの送信量を、後から発生したプロセッサクラスに割当てることで、プロセッサクラスの遅延時間を削減する様子を示す。
【０２４９】
なお、説明を簡単にするため、宛先間の調停については説明を省略し、プロセッサクラスとレート保証クラスのクラス間での送信量の変化について説明する。
【０２５０】
図２８（Ａ）は、プロセッサクラスとレート保証クラスのアクセス要求を受信した状態でのアクセス要求管理部４０４内の様子を示す。
【０２５１】
図２８（Ａ）では、プロセッサクラスのアクセス要求（データ）は３つ格納されており、レート保証クラスのアクセス要求（データ）は４つ格納されている。また、プロセッサクラスとレート保証クラスのいずれに対しても保証レート分の送信量は３つに設定されている。
【０２５２】
図２８（Ｂ）は、プロセッサクラスとレート保証クラスの順に、保証レート分のアクセス要求（データ）が３つずつ送信した後の様子を示す。プロセッサクラスでは、保証分の送信量で全てのアクセス要求が送信され、レート保証クラスでは、アクセス要求（データ）が１つ残った状態となる。
【０２５３】
図２８（Ｃ）は、伝送経路に空き帯域があり、アクセス制御装置２５０１が、レート保証クラスで１つ残ったアクセス要求（データ）を先行して送信した様子を示す。
【０２５４】
送信制御部９０９は、レート保証クラスのアクセス要求（データ）を先行して送信すると、先行アクセス数を先行アクセス記憶部２５０１に記憶する。図２６に示す先行アクセス記憶部２５０１では、先行アクセス数として１が記録される。
【０２５５】
図２８（Ｄ）は、新たにアクセス要求（データ）がプロセッサクラスと、レート保証クラス４つずつ届いた状態で、それぞれ保証レート分の送信量を送信した様子を示す。
【０２５６】
プロセッサクラスでは、送信制御部９０９により、保証レート分の送信量（３つ）に対し、先行アクセス数分の送信量（１つ）が加算され、アクセス要求が４つ送信される。これにより、プロセッサクラスでは、レート保証クラスよりも先に１つ多いアクセス要求（データ）を送信できるため、プロセッサクラスの低遅延化を実現できる。
【０２５７】
また、プロセッサクラスの送信量が１つ増えたことで、レート保証クラスのアクセス要求（データ）の送信開始に遅れが発生するが、先行してアクセス要求（データ）が送信されているため要求品質を保証することができる。
【０２５８】
なお、本実施形態では、レート保証クラスの先行アクセス数に基づき、プロセッサクラスの保証レート分の送信量を増加する方法を例に説明したが、例えば、先行アクセス数の値に基づきレート保証クラスの送信量を削減する方法や、プロセッサクラスの送信量の増加とレート保証クラスの送信量の削減を同時に行う方法を用いても良い。
【０２５９】
なお、本実施形態では、全てのバスマスタのアクセス要求（データ）が、１つの伝送経路に集約される構成（図３）を例に説明したが、それ以外の構成であってもアクセス制御装置の適用は可能である。
【０２６０】
図２９は、一般的に利用されるメッシュ型のトポロジーの例を示す。
【０２６１】
中継装置は格子上に配置され、各中継装置に対応してバスマスタ、又はメモリが配置される。図２９では、３つのバスマスタからそれぞれ異なるメモリにアクセス要求を送信した状態を示している。
【０２６２】
メッシュ型のトポロジーにおいても、複数のメモリが配置される場合は、複数のバスマスタからメモリへの伝送経路上において、複数のアクセス要求が集約される中継装置が発生する。このため、複数のアクセス要求が集約される中継装置上（または、全ての中継装置上）にアクセス制御装置を実装することで、バスマスタ毎の伝送性能を保証し、遅延時間を抑えた即応性の高い調停ができる。
【０２６３】
メッシュ型のトポロジー以外にも、トーラス型やツリー型など、複数のアクセス要求が集約される構成であれば、アクセス制御装置を適用できる。
【０２６４】
また、本実施例ではアクセス制御装置４０１、２５０１を、中継装置上に実装した場合例に説明を行ったが、中継装置以外の装置にアクセス制御装置４０１、２５０１を実装してもよい。
【０２６５】
例えば、図３において、複数のアクセス要求（データ）が集約されるＮＩＣ−Ｍ４０８にアクセス制御装置４０１を実装してもよい。ＮＩＣ−Ｍ４０８は、中継措置４０６から受信したパケットをデータにデパケット化するための装置であり、パケットをデパケット化するためのバッファを備える。バッファにパケットを格納する際に、アクセス要求（データ）をクラスと宛先を区別して管理し、さらに、本実施例の調停部４０５の機能をＮＩＣ−Ｍ４０８上で実装し、送信制御を行うことにより、バスマスタの数に対する拡張性を持たせつつ、バスマスタ毎の伝送性能を保証し、遅延時間を抑えた即応性の高い調停ができる。
【０２６６】
また、図３において、メモリコントローラ４０９にアクセス制御装置４０１を実装してもよい。メモリコントローラ４０９では、ＮＩＣ−Ｍ４０８から受信したアクセス要求（データ）を格納するバッファを備える。このバッファにアクセス要求（データ）を格納する際に、アクセス要求（データ）をクラスと宛先を区別して管理し、さらに、本実施例の調停部４０５の機能をメモリコントローラ４０９上で実装し、送信制御を行うことにより、バスマスタの数に対する拡張性を持たせつつ、バスマスタ毎の伝送性能を保証し、遅延時間を抑えた即応性の高い調停ができる。なお、バッファにアクセス要求（データ）を格納する際に、アクセス要求（データ）をクラスとデータ送信元のバスマスタやＮＩＣを区別して管理し、さらに、本実施例の調停部４０５の機能をメモリコントローラ４０９上で実装し、送信制御を行ってもよい。
【０２６７】
上述の実施形態では、要求品質の種類として、遅延保証クラス、プロセッサクラス、レート保証クラス、ベストエフォートクラスの４種類にクラスを分類した例を説明した。しかしながら、クラスの分類は４種類に限定されない。
【０２６８】
プロセッサクラスでは、処理の内容によりメモリへのアクセス要求にレート保証が必要なタスクと、レート保証が不要なタスクが混在する場合がある。この場合、プロセッサクラスを、アクセス要求の発生が不定期に変動し、レート保証が必要なタスクのアクセス要求を管理する保証有プロセッサクラスと、アクセス要求の発生が不定期に変動し、レート保証が不要なアクセス要求を管理する保証無プロセッサクラスに分割しても良い。保証有プロセッサクラスの優先度は、元のプロセッサクラスと同じく、レート保証クラスよりも優先度が高く設定し、保証無プロセッサクラスの優先度は、レート保証クラスよりも優先度を低く設定している。
【０２６９】
プロセッサクラスの分割において、保証有プロセッサクラスと保証無プロセッサクラスのいずれで管理するかをバスマスタ毎に決定する方法や、１つのバスマスタであっても、レート保証が必要なタスクとレート保証が不要なタスクの両方を送信する場合には、アクセス要求を管理するクラスをタスク毎に決定しても良い。
【０２７０】
以上の説明では、アクセス制御装置の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムをアクセス制御装置に実装されたプロセッサ（コンピュータ）に実行させることによってアクセス制御装置の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図９、１１、１３、１５、１６、１７、１９、２４、２７のフローチャートに記載されているとおりである。
【０２７１】
上述の例示的な実施形態および利用例は、チップ上に実装されているとして説明した。しかしながら他の実施形態として、チップ上に実装するための設計及び検証を行うシミュレーションプログラムという形態も存在し得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば、図８や図１０に示される各構成要素は、シミュレーションプログラム上のオブジェクトクラスとして実装される。各オブジェクトクラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
【０２７２】
アクセス制御装置として実装されたオブジェクトクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、各要求品質の定義等の条件を決定する。
【０２７３】
アクセス制御装置として実装されたオブジェクトクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者は、各バスマスタから共有メモリへのアクセス性能の評価を行い、設計及び検証を行う。
【０２７４】
シミュレーションシナリオの各行には、例えば、送信元のバスマスタのＩＤと要求性能のクラスの種類、宛先となる共有メモリのＩＤ、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。
【０２７５】
また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジーやバスマスタと共有メモリの数や配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したシステム構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本開示は、設計及び検証ツールとして実施される際にも適用可能である。
【０２７６】
以上説明した通り、本開示によるアクセス制御装置は、バスマスタの構成や数の変更に対応できる高い拡張性を備えている。そして、要求品質の異なる複数の第１ノード（たとえばバスマスタ）から第２ノード（たとえばスレーブ）へのアクセスの調停において、保証レート以上のプロセッサやグラフィックス処理等を始めとする様々な要求品質のバスマスタに対し、即応性が高く、遅延時間の短いデータ送信を実現できる。
【０２７７】
また、遅延時間の短いデータ送信を実現できるため、要求品質の異なる複数の第１ノードから第２ノードへのスループットが向上し、バスの利用帯域を改善できる。
【産業上の利用可能性】
【０２７８】
本開示は、組込機器向けのＳｏＣにおけるオンチップバスや、汎用プロセッサ、ＤＳＰ上のローカルバスにおける、データ転送経路の制御技術を備えたネットワークバス制御装置、制御方法、制御プログラムに利用可能である。
【符号の説明】
【０２７９】
４０１  アクセス制御装置
４０４  アクセス要求管理部
４０５  調停部
４０７  ＮＩＣ−Ｂ
７０１  受信バッファ
７０２  送信レート値記憶部
７０３  送信レート制御部
７０４  送信制御部
７０５  パケット化処理部
９０１  クラス識別規則記憶部
９０２  クラス振分部
９０３  延長保証クラス用バッファ
９０４  プロセッサクラス用バッファ
９０４ａ  共有メモリ１宛バッファ
９０４ｂ  共有メモリ２宛バッファ
９０５  レート保証クラス用バッファ
９０５ａ  共有メモリ１宛バッファ
９０５ｂ  共有メモリ２宛バッファ
９０６  ベストエフォートクラス用バッファ
９０７  利用帯域測定部
９０８  クラス間調停部
９０９  送信制御部
９１０  バッファ
９１１  調停ルール記憶部
９１２  調停ルール設定部
９１３  宛先間調停部
９１４  保証レート値記憶部
９１６  宛先振分部
９１７  保証フラグ記憶部
【図１】
2014027445.tif 000003
【図２】
2014027445.tif 000004
【図３】
2014027445.tif 000005
【図４Ａ】
2014027445.tif 000006
【図４Ｂ】
2014027445.tif 000007
【図５Ａ】
2014027445.tif 000008
【図５Ｂ】
2014027445.tif 000009
【図６】
2014027445.tif 000010
【図７】
2014027445.tif 000011
【図８】
2014027445.tif 000012
【図９】
2014027445.tif 000013
【図１０】
2014027445.tif 000014
【図１１】
2014027445.tif 000015
【図１２】
2014027445.tif 000016
【図１３】
2014027445.tif 000017
【図１４】
2014027445.tif 000018
【図１５】
2014027445.tif 000019
【図１６】
2014027445.tif 000020
【図１７】
2014027445.tif 000021
【図１８】
2014027445.tif 000022
【図１９】
2014027445.tif 000023
【図２０】
2014027445.tif 000024
【図２１】
2014027445.tif 000025
【図２２】
2014027445.tif 000026
【図２３】
2014027445.tif 000027
【図２４】
2014027445.tif 000028
【図２５】
2014027445.tif 000029
【図２６】
2014027445.tif 000030
【図２７】
2014027445.tif 000031
【図２８】
2014027445.tif 000032
【図２９】
2014027445.tif 000033
【手続補正書】
【提出日】平成26年1月29日(2014.1.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えたアクセス制御装置。
【請求項２】
前記宛先間調停部は、さらに、前記クラス間調停部によって選択された各要求品質のデータの送信量を分散させるよう、送信すべきデータを選択する、請求項１に記載のアクセス制御装置。
【請求項３】
前記クラス間調停部は、前記宛先間調停部により選択された宛先のデータに関して、前記要求品質の厳しい順に、前記各データの要求品質を選択する、請求項１または２に記載のアクセス制御装置。
【請求項４】
前記要求品質の異なるデータには、相対的に要求品質の低い第１データ、および相対的に要求品質の高い第２データが含まれており、
前記第１データの送信量を測定する利用帯域測定部と、
前記第１データに保証される保証レートを超えて、先行して送信した前記第１データの送信量を記憶する先行アクセス記憶部と
をさらに備え、
前記送信制御部は、前記先行アクセス記憶部に記憶される前記送信量に基づき、前記第２データに対して送信量を割り当てる、請求項１から３のいずれかに記載のアクセス制御装置。
【請求項５】
前記要求品質のうち、要求品質の異なるデータは、少なくとも、プロセッサクラスのデータと、レート保証クラスのデータとを含む、請求項１から４のいずれかに記載のアクセス制御装置。
【請求項６】
前記プロセッサクラスの要求品質は、前記レート保証クラスの要求品質よりも高く設定されている、請求項５に記載のアクセス制御装置。
【請求項７】
前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在する場合には、前記送信制御部は、前記クラス間調停部により選択された要求品質のデータに対し、前記宛先間調停部によりデータの送信量を複数の宛先間で均一に近づけるように選択したデータを送信し、
前記バッファに、前記プロセッサクラス以上の要求品質のデータが存在しない場合には、前記送信制御部は、前記宛先間調停部により選択された宛先のデータに対し、前記クラス間調停部により要求品質の厳しい順に選択したデータを送信する、請求項５または６に記載のアクセス制御装置。
【請求項８】
前記宛先間調停部は、前記各宛先へのデータの送信に関して送信待ちを発生させない範囲で、前記各宛先へのデータの送信量を制御する、請求項１に記載のアクセス制御装置。
【請求項９】
前記宛先間調停部は、前記各宛先の宛先間のデータの送信量の偏りを許容して、前記各宛先へのデータの送信量を制御する、請求項８に記載のアクセス制御装置。
【請求項１０】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停する中継装置であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、中継装置。
【請求項１１】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続されるネットワーク・インタフェース・コントローラであって、
所定の第１ノードからの要求品質と宛先とが異なる各データを、宛先および前記要求品質に応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、ネットワーク・インタフェース・コントローラ。
【請求項１２】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置と接続されるメモリコントローラであって、
前記複数の第１ノードからの要求品質が異なる各データを、前記要求品質および前記データ送信元の第１ノードに応じて、分けて格納するバッファと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するクラス間調停部と、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させる宛先間調停部と、
前記クラス間調停部によって選択された要求品質、および前記宛先間調停部によって選択された宛先に基づき、前記データの送信を制御する送信制御部と
を備えた、メモリコントローラ。
【請求項１３】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置の制御方法であって、
前記複数の第１ノードからの要求品質と宛先とが異なる各データを受信するステップと、
前記各データを宛先および前記要求品質に応じて、バッファに分けて格納するステップと、
前記要求品質の厳しい順に、前記各データの要求品質を選択するステップと、
送信すべきデータの宛先を選択して、各宛先へのデータの送信量を分散させるステップと、
要求品質を選択する前記ステップによって選択された要求品質、および宛先を選択する前記ステップによって選択された宛先に基づき、前記データの送信を制御するステップと
を包含するアクセス制御方法。
【請求項１４】
ネットワーク化されたバスを介して、複数の第１ノードの各々から、宛先である複数の第２ノードのいずれかへ送信されるデータを調停するアクセス制御装置のシミュレーションを行うためのコンピュータプログラムであって、
前記コンピュータプログラムは、コンピュータに対し、請求項１３に記載のアクセス制御方法を実行させる、コンピュータプログラム。
【国際調査報告】
2014027445.tif 000034
2014027445.tif 000035
2014027445.tif 000036
2014027445.tif 000037
2014027445.tif 000038
2014027445.tif 000039