(57)【特許請求の範囲】
【請求項１】
バスを介してプロセッサと連携する複数の回路ブロックのそれぞれに対して設けられる帯域制御部と、
前記帯域制御部のそれぞれを制御する管理部と、を備え、
前記帯域制御部のそれぞれは、
前記複数の回路ブロックのそれぞれによる前記バスの使用帯域を監視する帯域監視部、
前記複数の回路ブロックのそれぞれの動作期間の開始時間と終了時間とを監視し、前記動作期間の値を取得する動作期間観測部、および
前記複数の回路ブロックのそれぞれに対して前記バスの使用帯域を制限可能な制限部を有し、
前記管理部は、前記動作期間観測部により、前記複数の回路ブロックのそれぞれの動作期間において前記帯域監視部から取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域を取得し、タイマーによって計時される所定監視期間において前記帯域監視部から取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間に限定されない所定監視期間における前記バスの平均使用帯域を取得し、
前記複数の回路ブロックのそれぞれの動作期間と、前記動作期間における前記バスの動作中平均使用帯域と前記回路ブロックのそれぞれの前記所定監視期間における前記バスの平均使用帯域とに応じて前記バスの使用帯域を制限する帯域制御回路。
【請求項２】
前記管理部は、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域の総和が所定の基準値を超える場合に、前記複数の回路ブロックによる前記バスの使用帯域を制限する請求項１に記載の帯域制御回路。
【請求項３】
前記管理部は、前記複数の回路ブロックのうち、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域が閾値(T)を超えている回路ブロックに
対して、前記動作期間の割合に基づいて前記バスの使用帯域を制限する請求項１に記載の帯域制御回路。
【請求項４】
前記管理部は、前記複数の回路ブロックを前記バスの動作中平均使用帯域が前記閾値以上の第１のグループと、前記バスの動作中平均使用帯域が前記閾値未満の第２のグループについて、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域の前記第１のグループにおける総和と前記回路ブロックのそれぞれの動作期間に限定されない所定監視期間における前記バスの平均使用帯域の前記第２のグループにおける総和とが所定の条件の満足するように前記閾値を決定する請求項３に記載の帯域制御回路。
【請求項５】
前記管理部は、前記複数の回路ブロックのそれぞれについて、前記バスの動作中平均使用帯域が前記閾値を超えている回路ブロックに対して、制限割合＝前記回路ブロックのそれぞれの動作期間に限定されない前記所定監視期間における前記バスの平均使用帯域／前記バスの動作中平均使用帯域によって算出される制限割合によって、使用帯域を制限する請求項３または４に記載の帯域制御回路。
【請求項６】
プロセッサと、
前記プロセッサとバスを介して連携する複数の回路ブロックと、
前記複数の回路ブロックのそれぞれに対して設けられる帯域制御部と、
前記帯域制御部のそれぞれを制御する管理部と、を備え、
前記帯域制御部のそれぞれは、
前記複数の回路ブロックのそれぞれによる前記バスの使用帯域を監視する帯域監視部、
前記複数の回路ブロックのそれぞれの動作期間の開始時間と終了時間とを監視し、前記動作期間の値を取得する動作期間観測部、および
前記複数の回路ブロックのそれぞれに対して前記バスの使用帯域を制限可能な制限部を有し、
前記管理部は、前記動作期間観測部により、前記複数の回路ブロックのそれぞれの動作期間において前記帯域監視部から取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域を取得し、タイマーによって計時される所定監視期間において前記帯域監視部から取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間に限定されない所定監視期間における前記バスの平均使用帯域を取得し、
前記複数の回路ブロックのそれぞれの動作期間と、前記動作期間における前記バスの動作中平均使用帯域と前記回路ブロックのそれぞれの前記所定監視期間における前記バスの平均使用帯域とに応じて前記バスの使用帯域を制限する演算処理装置。
【請求項７】
プロセッサと、バスを介して前記プロセッサと連携する複数の回路ブロックとを備える装置の帯域制御方法であって、
前記複数の回路ブロックのそれぞれによる前記バスの使用帯域を監視し、
前記複数の回路ブロックのそれぞれの動作期間の開始時間と終了時間とを監視し、前記動作期間の値を取得し、
前記複数の回路ブロックのそれぞれの動作期間において取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間における前記バスの動作中平均使用帯域を取得し、タイマーによって計時される所定監視期間において取得される前記複数の回路ブロックのそれぞれによる前記バスの使用帯域から、前記複数の回路ブロックのそれぞれの動作期間に限定されない所定監視期間における前記バスの平均使用帯域を取得し、
前記複数の回路ブロックのそれぞれの動作期間と、前記動作期間における前記バスの動作中平均使用帯域と前記回路ブロックのそれぞれの前記所定監視期間における前記バスの
平均使用帯域とに応じて前記複数の回路ブロックによる前記バスの使用帯域を制限する、装置の帯域制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帯域制御回路、演算処理装置、および装置の帯域制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータのCentral Processing Unit(ＣＰＵ)は微細化による性能向上が鈍
化している。そのため、Field Programmable Gate Array（ＦＰＧＡ）等の回路ブロック
をＣＰＵのアクセラレータとして利用して、コンピュータの高性能化を実現する事が検討されている。
【０００３】
図１にＦＰＧＡを含むコンピュータ８１０の構成を例示する。コンピュータ８１０は、情報処理装置とも呼ばれる。図１のコンピュータ８１０は、ＣＰＵ８０１と、メモリ８０２と、ＦＰＧＡ８０５を有する。ＣＰＵ８０１とＦＰＧＡ８０５とは、例えば、拡張バス８０４Ａを介して接続される。ＦＰＧＡ８０５は、制御部・バスブリッジ８５２を有し、拡張バス８０４Ａを通じてＣＰＵ８０１と通信する。また、ＦＰＧＡ８０５は、複数のUser Defined Logic（ＵＤＬ）８５１を有する。それぞれのＵＤＬ８５１は、制御部・バスブリッジ８５２、および、拡張バス８０４Ａを通じてＣＰＵ８０１、メモリ８０２と通信する。
【０００４】
また、ＣＰＵ８０１は、複数の仮想マシン（ＶＭ）８１２を提供する。仮想マシン（ＶＭ）８１２は仮想コンピュータとも呼ばれる。仮想コンピュータは、ユーザにリソースとして仮想ＣＰＵを提供する。このような仮想マシンを提供するコンピュータ８１０のＣＰＵ８０１は、物理ＣＰＵとも呼ばれる。また、メモリ８０２は物理メモリとも呼ばれる。図１の例では、ＣＰＵ８０１は、キャッシュ８１１を有している。
【０００５】
近年のコンピュータでは、仮想コンピュータの技術が普及しており、図１の例では、物理ＣＰＵの数より多い数の仮想ＣＰＵが利用可能である。すなわち、仮想コンピュータでは、ユーザは物理的な計算機リソースを持たずに、ネットワークを介して仮想的な計算機リソースを利用する。ユーザは、物理ＣＰＵ、物理メモリ等の物理的な計算機リソースを購入することなく、必要に応じて計算機リソースを増減可能であり、仮想コンピュータは、クラウド型サービスを提供する。一方、物理ＣＰＵあるいは仮想ＣＰＵのアクセラレートとなる回路ブロックを含むデバイス、例えば、ＦＰＧＡにおいても、回路を動作させながら部分的に一部を書き換える事が出来る機能が搭載されるようになっている。
【０００６】
ところで、バスを多く利用するアクセラレータが同時に動作した場合、バスが競合して、システム全体のパフォーマンスに影響を与えてしまう場合がある。特に、各アクセラレータが汎用的に設計されている場合、アクセラレータの起動元(使用者)の要求を満たす帯域以上にバスの帯域を消費してしまう問題がある。そこで、従来技術では、固定の回路、アプリケーションを想定して、システムが滞りなく処理できる総帯域を保障するため、予め、ある程度アクセラレータの特性が分かっている前提で、適切なアービトレーション、あるいは、帯域割り当て等が実施さている。
【０００７】
しかし、コンピュータがＦＰＧＡ等の複数の回路ブロックを利用する場合に、複数の回路ブロック間で、ＣＰＵ、メモリ等と、各回路ブロックとを接続するバスのアービトレーション、あるいは帯域割り当てが適切になされない場合がある。例えば、今日のように、仮想コンピュータシステムなどで複数のアプリケーション、スレッド、仮想マシン(ユー
ザ)等が、複数のアクセラレータを共用で使用する場合には、上記アービトレーション、
あるいは帯域割り当てが適切になされない場合がある。さらに、例えば、あるアプリケー
ションにおいて、ある特定のアクセラレータの処理時間がボトルネックとなる場合は、極力優先させたいという事情が生じ得る。ところが、他のアプリケーションにおいては、その特定のアクセラレータの処理時間がボトルネックになるとは限らない。したがって、他のアプリケーションにおいては、その特定のアクセラレータには帯域制限を設定し、むしろ、他のアクセラレータを優先した方が望ましい、という状況が生じ得る。つまり、特定のアプリケーションに着目することがコンピュータシステムの全体最適にはならないという事が起こり得る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００８−５４１２１７号公報
【特許文献２】特開２００６−３５０５７３号公報
【特許文献３】特開２０１２−１９９７８８号公報
【特許文献４】特開２００４−３２６１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
１つの側面では、本発明は、ＣＰＵ等のプロセッサと連携する複数の回路ブロックを利用する場合に、プロセッサと複数の回路ブロックとの間で、それぞれの回路ブロックの動作状況に応じた効果的なバスの帯域制御を行うことを目的とする。
【課題を解決するための手段】
【００１０】
一側面は、バスを介してプロセッサと連携する複数の回路ブロックのそれぞれに対して設けられる帯域制御部と、帯域制御部のそれぞれを制御する管理部と、を備える帯域制御回路によって例示できる。この帯域制御部のそれぞれは、上記複数の回路ブロックのそれぞれによる上記バスの使用帯域を監視する帯域監視部、上記複数の回路ブロックのそれぞれの動作期間の開始と終了とを監視する動作期間観測部、および上記複数の回路ブロックのそれぞれに対して上記バスの使用帯域を制限可能な制限部を有する。
【００１１】
また、管理部は、上記複数の回路ブロックのそれぞれの上記バスの平均使用帯域と動作期間とに応じて上記バスの使用帯域を制限する。
【発明の効果】
【００１２】
本帯域制御回路によれば、ＣＰＵ等のプロセッサと連携する複数の回路ブロックを利用する場合に、プロセッサと複数の回路ブロックとの間で、回路ブロックの動作状況に応じた効果的なバスの帯域制御を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】ＦＰＧＡを含むコンピュータの構成を例示する図である。
【図２】実施形態の情報処理装置の構成を例示する図である。
【図３】情報処理装置におけるバスの構成を例示する図である。
【図４】帯域制御部の詳細構成を例示する図である
【図５】ＵＤＬの動作期間と所定監視期間との関係を例示する図である。
【図６】ＵＤＬの使用帯域が制御される処理を例示する図である。
【図７】管理部が実行する閾値決定の処理フローを例示する図である。
【図８】帯域制限処理のフローを例示する図である。
【図９】実施形態の処理による効果を例示する図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、一実施形態に係る帯域制御回路を含む情報処理装置について説
明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。本実施形態では、バスを介してプロセッサと連携する複数のアクセラレータと、プロセッサとを含む情報処理装置が例示される。アクセラレータとしては、例えば、ＦＰＧＡとして提供される複数の回路ブロックを想定する。ＦＰＧＡとして提供される複数の回路ブロックは、複数のUser Defined Logic（ＵＤＬ）と呼ばれる。さらに、本実施形態のアクセラレータであるＦＰＧＡは、複数のＵＤＬに対してそれぞれ帯域制御を行う帯域制限回路を含む。
【００１５】
図１は比較例に係る情報処理装置８１０の構成を例示する。本実施形態では、情報処理装置上で、仮想コンピュータなど、複数の仮想マシン（Virtual Machine、ＶＭ）がユー
ザに提供され、さらに、複数のユーザがそれぞれの仮想マシンの処理に対してＦＰＧＡを適宜マッピングして利用するケースを想定する。仮想マシンの処理に対してマッピングされるＦＰＧＡの回路ブロックは、ソフトウェアライブラリの様に、ＦＰＧＡを利用するアプリケーションの要求性能によらず、可能な限り性能が高くなるように設計される事が想定される。
【００１６】
一方で、アクセラレータの中にはバス利用量、すなわち使用帯域が相対的に少なく演算が主体となるものと、バスを多く利用するものが混在する。しかしながら、動的に回路が配置される場合には、同時期に動作する回路間でのバス等の共有リソースの調整を予め決定することが困難な場合がある。そこで、本情報処理装置は、ＦＰＧＡが使うバス帯域を観測する事によって、アプリケーションによる使われ方を含めた動作期間を観測し、動作期間の所定期間中に対する比率である動作率（稼働率ともいう）を推定する。そして、本情報処理装置は、観測した動作期間、あるいは、推定した動作率を根拠に、共有リソースでの１つあるバスの帯域の個々のＦＰＧＡ内のＵＤＬへの効果的な割り当てを実現する手法を提供する。なお、ＦＰＧＡが使用するバスの帯域としては、ＦＰＧＡからメモリに至るメモリバスを例示できる。ただし、本実施形態の手法は、メモリバスに限定されず、ＦＰＧＡから例えば、ＣＰＵに至るバスにも適用できる。
【００１７】
＜構成＞
図２に、本実施形態の情報処理装置１０の構成を例示する。情報処理装置１０は、ＣＰＵ１と、メモリ２と、ＦＰＧＡ５を有する。なお、図２では、省略されているが、情報処理装置１０は、外部記憶装置、Network Interface Card（ＮＩＣ）等の周辺装置を有してもよい。ＣＰＵ１は、キャッシュ１１を有し、キャッシュ１１を用いてメモリ２にアクセスする。ＣＰＵ１上では、複数の仮想マシン（ＶＭ）１２がユーザに提供される。ユーザが利用するアプリケーションプログラムは、仮想マシン１２の割り当てを受けて、仮想マシン１２上で実行される。ただし、ＣＰＵ１は、仮想マシン１２を介さずに、プロセス、スレッド等によってプログラムを実行するものでもよい。ＣＰＵ１はプロセッサの一例である。ＣＰＵ１とＦＰＧＡ５とが演算処理装置の一例である。ただし、情報処理装置１０が演算処理装置の一例であってもよい。
【００１８】
ＦＰＧＡ５は、制御部・バスブリッジ５２と、ＵＤＬ５１と、帯域制御部６と、管理部７を有する。ＦＰＧＡ５の各構成要素は、ゲート、メモリ等のデジタル回路を組み合わせたハードウェア回路である。ただし、ＦＰＧＡ５の各構成要素にプロセッサとプログラムを記憶したメモリが含まれてもよい。
【００１９】
制御部・バスブリッジ５２は、ＦＰＧＡ５内の回路と、ＣＰＵ１、あるいは、メモリ２との間で、バスを介して情報を授受する。本実施形態において、制御部・バスブリッジ５２の構成に限定がある訳ではない。制御部・バスブリッジ５２は、例えば、アドレスラインとデータラインと制御ラインとによってＣＰＵ１、あるいは、メモリ２と接続されてもよい。また、制御部・バスブリッジ５２は、パケットを授受するシリアルバスによってＣ
ＰＵ１、あるいは、メモリ２と接続されてもよい。制御部・バスブリッジ５２がパケットを授受するシリアルバスによってＣＰＵ１、あるいは、メモリ２と接続される場合には、制御部・バスブリッジ５２は、ルータとも呼ばれる。
【００２０】
ＵＤＬ５１は、例えば、ＦＰＧＡ５上で再構成可能なデジタル回路の組み合わせである。ＵＤＬ５１は、回路を再構成することで、様々なアプリケーションプログラムに対するアクセラレータとしての処理を提供する。このようにＦＰＧＡ５のＵＤＬ５１がアプリケーションに要求される様々な処理を提供する場合に、ＵＤＬ５１が当該処理に割り当てられる、あるいは、マッピングされるという。ＵＤＬ５１は回路ブロックの一例である。
【００２１】
ＵＤＬ５１の回路規模は、提供する機能に応じて様々である。ＵＤＬ５１は、例えば、信号処理用の積和演算回路、画像処理用のフィルタ回路、データの暗号化回路あるいは復号化回路、コンピュータグラフィクス用の処理回路等である。ＵＤＬ５１は、実行する処理に応じて、演算処理を主に実行するもの、バスを介してメモリ２等とのデータ授受を主として行うもの、演算処理とデータ授受の両方を同程度の比率で行うものなどに分類できる。
【００２２】
帯域制御部６は、それぞれのＵＤＬ５１と対になって設けられる。帯域制御部６は、ＣＰＵ１からＵＤＬ５１の処理を起動する信号、処理を終了する信号、およびＵＤＬ５１とバスとの間のデータの入出力の信号を観測し、観測結果を管理部７に報告する。そして、帯域制御部６は、管理部７からの指示にしたがって、対となっているＵＤＬ５１によるバスの使用帯域を制限する。
【００２３】
管理部７は、各帯域制御部６からの観測結果を受け取り、ＦＰＧＡ５内のＵＤＬ５１全体によるバスの使用帯域を確認し、各ＵＤＬ５１の動作状況とバスの使用帯域、ＦＰＧＡ５内のＵＤＬ５１全体のバスの使用帯域の総和等から、各ＵＤＬ５１に対してバスの使用帯域を効果的に割り当てる。
【００２４】
すなわち、帯域制御部６と管理部７は、連携して、ＵＤＬ５１間のバスの使用帯域の割当、または使用帯域の制限を決定する。そして、帯域制御部６と管理部７は、様々な処理にマッピングされ動作している各ＵＤＬ５１の組み合わせが動的に変化しても、適切に各ＵＤＬ５１に対するバスの使用帯域の割当、または使用帯域の制限を決定する。すなわち、帯域制御部６と管理部７は、個々のＵＤＬ５１の動作時の使用帯域に加え、動作時以外の時間を含む所定監視期間において、ＵＤＬ５１の動作状況を把握する。また、帯域制御部６と管理部７は、個々のＵＤＬを観測する事で間接的に、ＦＰＧＡ５内のＵＤＬ５１全体の動作状況を把握する。管理部７は、上記動作状況の観測結果に基づいて、バスの帯域制御の対象とするＵＤＬ５１を決定し、決定したＵＤＬ５１の動作状況に応じて帯域制御を実施する。
【００２５】
より具体的には、帯域制御部６は、ＣＰＵ１からＵＤＬ５１への起動信号と終了信号を観測し、ＵＤＬ５１の動作期間を把握する。そして、帯域制御部６は、ＵＤＬ５１の起動から終了までの１つの動作期間で、ＵＤＬ５１によるバスの使用帯域を観測する。また、帯域制御部６は、ＵＤＬ５１の動作期間とは無関係に、１つの動作期間より長い所定監視期間当たりで回路の動作率、つまり、所定監視期間中の動作期間の比率を計測する。なお、帯域制御部６は、動作率に代えて、非動作期間（アイドル期間）の比率を計測してもよい。計測した動作率（非動作率）は、ＵＤＬ５１の固有の特性を示す動作率の推定値として用いられる。また、帯域制御部６は、この所定監視期間おけるＵＤＬ５１によるバスの平均使用帯域を観測する。
【００２６】
管理部７は、ＵＤＬ５１が起動されるタイミング、予め決められたタイミング、あるい
は予め決められた周期で、ＦＰＧＡ５のＵＤＬ５１全体によるバスの使用帯域の総和を確認する。そして、バスの使用帯域の総和が不足する場合に、管理部７は、ＦＰＧＡ５中のＵＤＬ５１のうち、帯域制限するＵＤＬ５１を決定し、帯域制限を行う。より具体的には、管理部７は、動作中のＵＤＬ５１について、バスの使用帯域の総和を計測し、計測したバスの使用帯域の総和が所定の基準値（Starget）以上か否かを判定する。ただし、管理
部７は、「基準値（Starget）以上か否か」の代わりに、「基準値（Starget）を超えるか否か」を判定してもよい。
【００２７】
そして、管理部７は、バスの使用帯域の高低を判定するための閾値を動的に決定する。そして、バスの使用帯域の総和が不足する場合に、管理部７は、バスの使用帯域が閾値を超えるＵＤＬ５１のうち、動作率が相対的に低いものに対して帯域制限を実施する。
【００２８】
例えば、バスの使用帯域が閾値以上のもののうち、動作率が相対的に低いものは間欠的な動作を行っていると判断され、より強く帯域制限を受ける。つまり、間欠動作しているＵＤＬ５１は、現時点を含む短期間は帯域を大きく消費するが、ある長期間で見ると帯域消費が相対的に低いと判断できる。したがって、間欠動作しているＵＤＬ５１に帯域制限を実施してもある程度の長期間で見ると、帯域制限の影響は小さいと考えられる。
【００２９】
一方、バスの使用帯域が閾値以上のもののうち、動作率が相対的に高いものはクリティカルタスクを実行していると判断される。クリティカルタスクを実行しているＵＤＬ５１には優先的にバスの使用帯域が割り当てられる。また、バスの使用帯域が閾値未満のものは、演算が主に支配的なタスクを実行していると判断される。演算が支配的なＵＤＬ５１には優先的にバスの使用帯域が割り当てられる。
【００３０】
図３に、本情報処理装置におけるバスの構成を例示する。図３のように、ＣＰＵ１、メモリ２、およびＦＰＧＡ５は、チップセット３とチップセット３に接続されるバスによって接続される。すなわち、チップセット３は内部バス３Ａを介してＣＰＵ１に接続されるとともに、メモリバス３Ｂを介してメモリ２に接続される。さらに、チップセット３は外部バス３Ｃを介して拡張バスインターフェース４に接続される。拡張バスインターフェース４は、拡張バス４Ａを介してＦＰＧＡ５の制御部・バスブリッジ５２に接続される。制御部・バスブリッジ５２は、ＦＰＧＡ内の伝送路４Ｂを介して帯域制御部６に接続される。また、それぞれの帯域制御部６は、管理部７に接続される。
【００３１】
したがって、ＵＤＬ５１がメモリ２、あるいはＣＰＵ１と情報を授受する場合に、情報授受の経路となる伝送路４Ｂ、拡張バス４Ａ、外部バス３Ｃ、メモリバス３Ｂ、内部バス３Ａ等のうち、最も帯域が狭いバスにおける帯域の割り当てが問題となる。本実施形態では、帯域制御部６は、ＵＤＬ５１が伝送路４Ｂとの間でデータを授受するときのＵＤＬ５１の動作期間の開始および終了と、使用帯域とを観測し、ＵＤＬ５１の伝送路４Ｂの使用帯域を制限する。伝送路４Ｂの使用帯域が制限されることで、上記経路となる伝送路４Ｂ、拡張バス４Ａ、外部バス３Ｃ、メモリバス３Ｂ、内部バス３Ａ等での使用帯域が制限される。伝送路４Ｂ、拡張バス４Ａ、外部バス３Ｃ、メモリバス３Ｂ、内部バス３Ａがバスの一例である。
【００３２】
図４に、帯域制御部６の詳細構成を例示する。ただし、図４では、帯域制御部６とともに、ＵＤＬ５１、制御部・バスブリッジ５２、管理部７、共有タイマー８も記載されている。図４のように、帯域制御部６は、モニタ６１と、平均データ量観測部６２と、動作期間観測部６３と、制御部６４と、帯域制限部６５と、リクエスト遮断部６６を有する。すでに述べたように、ＦＰＧＡ５の各構成要素は、ゲート、メモリ等のデジタル回路を組み合わせたハードウェア回路である。したがって、帯域制御部６、管理部７も、ゲート、メモリ等のデジタル回路を組み合わせたハードウェア回路である。ただし、帯域制御部６、
または、管理部７に、プロセッサとプログラムを記憶したメモリが含まれてもよい。
【００３３】
モニタ６１は、ＵＤＬ５１と制御部・バスブリッジ５２との間の信号を監視する。例えば、モニタ６１は、ＵＤＬ５１と制御部・バスブリッジ５２との間の信号線を分岐し、平均データ量観測部６２および動作期間観測部６３に送出する。したがって、モニタ６１は、信号の分岐回路を有していればよい。モニタ６１が監視する信号は、例えば、シリアルバスのパケットでもよいし、データ線、アドレス線、制御線等を含む信号線であってもよい。
【００３４】
制御部・バスブリッジ５２からＵＤＬ５１には初期化または処理の起動を指示する信号が送出される。初期化または処理の起動を指示する信号は、ＣＰＵ１上のアプリケーション（あるいは仮想マシン）がＵＤＬ５１を起動し、あるいは、初期化する指令を伝える信号である。一方、ＵＤＬ５１から制御部・バスブリッジ５２には、終了または動作中を示す信号、およびリクエスト信号が送出される。終了または動作中を示す信号は、ＵＤＬ５１が処理を終了したこと、あるいは動作中であることを伝える信号である。リクエスト信号は、例えば、メモリ２からの読み出し、あるいは、メモリ２への書き込みを要求する信号である。リクエスト信号は、例えば、読み出し、あるいは書き込みの指示、メモリ２の読み出しアドレスあるいは書き込みアドレス、および読み出しデータ量あるいは書き込みデータ量を含む。動作期間観測部６３は、モニタ６１から送出された初期化または起動中を指示する信号、終了または起動中を示す信号を基にＵＤＬ５１の動作期間の開始と終了を特定し、制御部６４に伝達する。動作期間観測部６３は、複数の回路ブロックのそれぞれの動作期間の開始と終了とを監視する動作期間観測部の一例である。制御部６４は、ＵＤＬ５１の動作期間の開始と終了を平均データ量観測部６２に伝達する。
【００３５】
平均データ量観測部６２は、ＵＤＬ５１が動作中の期間（以下、動作期間）における平均使用帯域、および、ＵＤＬ５１の動作期間とは無関係な所定監視期間における平均使用帯域を計測し、制御部６４に伝達する。平均データ量観測部６２は、複数の回路ブロックのそれぞれによるバスの使用帯域を監視する帯域監視部の一例である。制御部６４は、平均データ量観測部６２で計測された２つの平均使用帯域を管理部７に伝達する。平均データ量観測部６２は、例えば、ＵＤＬ５１からメモリ２に送出されるリクエスト信号を取得する。ただし、平均データ量観測部６２は、例えば、シリアルバスについては、ＵＤＬ５１からメモリ２に送出されるリクエストパケットを取得すればよい。平均データ量観測部６２は、リクエスト信号に含まれる読み出しまたは書き込みデータ量を取得し、データ量を積算する。そして、平均データ量観測部６２は、積算されたデータ量から、単位時間当たりのデータ量である、上記２つの平均使用帯域を算出する。なお、読み出しデータまたは書き込みデータが固定長で入出力される場合には、平均データ量観測部６２は、リクエスト信号の送信回数を計数し、データ量を積算すればよい。
【００３６】
管理部７は、各ＵＤＬ５１の帯域を積算した平均使用帯域の総和が所定の基準値（Starget）を超える場合には、各ＵＤＬ５１の動作期間の情報、および各ＵＤＬ５１の２つの
平均使用帯域を基に、帯域制限するＵＤＬ１５を決定する。そして、管理部７は、帯域制限するＵＤＬ５１の帯域制御部６の制御部６４に目標帯域制限値を通知する。
【００３７】
通知を受けた制御部６４は、通知を受けた目標帯域制限値を帯域制限部６５に指示する。制御部６４は、帯域制御部６の各部と管理部７とのインターフェース回路ということができる。
【００３８】
帯域制限部６５は、指示された目標帯域制限値にしたがって、リクエスト遮断部６６のスイッチをオンあるいはオフに制御する。リクエスト遮断部６６はＵＤＬ５１から制御部・バスブリッジ５２へのリクエスト信号を遮断または接続するスイッチを有する。リクエ
スト遮断部６６は、帯域制限部６５からの指示にしたがってスイッチをオンまたはオフに接続する。なお、本実施形態における帯域制限部６５からリクエスト遮断部６６へのスイッチをオンまたはオフの指示は、ＵＤＬ５１において、リクエスト信号に対する応答受信時にＵＤＬ５１の動作が継続不能となるタイムアウトエラーが発生しうる場合、タイムアウトしない範囲で行う。すなわち、本実施形態では、ＵＤＬ５１においてタイムアウトエラーが発生しない範囲でスイッチオフの期間が設定される。帯域制限部６５とリクエスト遮断部６６は、複数の回路ブロックのそれぞれに対してバスの使用帯域を制限可能な制限部の一例である。
【００３９】
共有タイマー８は、時間を計測し、帯域制御部６に通知する。例えば、帯域制御部６の平均データ量観測部６２は、共有タイマー８により計時し、所定監視期間内の平均使用帯域を算出する。
【００４０】
図５に、ＵＤＬ５１の動作期間と、所定監視期間の関係を例示する。図５では、２つのＵＤＬ１５（ＵＤＬ５１ＡとＵＤＬ５１Ｂ）について、それぞれの動作期間と使用帯域が例示されている。図５で横軸が時間（期間）であり、縦軸が帯域である。図５では、ＵＤＬ５１ＡおよびＵＤＬ５１Ｂは、ともに所定監視期間Ｐ０中に、それぞれ３回の動作期間を含む。ただし、ＵＤＬ５１Ａの動作期間は、ＵＤＬ５１Ｂの動作期間よりも短い。一方、ＵＤＬ５１Ａの動作期間中の平均使用帯域は、ＵＤＬ５１Ｂの動作期間中の平均使用帯域より大きい。図５のように、動作期間が短いが平均使用帯域が大きいＵＤＬ５１Ａと、ＵＤＬ５よりも動作期間が長いが平均使用帯域が小さいＵＤＬ５１Ｂの使用帯域を以下の２種類の算出方法で評価する。
【００４１】
第１の平均使用帯域は、ＵＤＬ５１の動作期間中に、バスに入出されるデータ量を動作期間の長さ（時間）で割り算した平均使用帯域をいう。第１の平均使用帯域は、動作中平均使用帯域の一例である。第２の平均使用帯域は、所定監視期間中にバスに入出されるデータ量を所定監視期間の長さ（時間）で割り算した平均使用帯域をいう。したがって、第２の平均使用帯域は、ＵＤＬ５１の動作期間とは無関係に決定される平均使用帯域ということができる。第２の平均使用帯域は、回路ブロックのそれぞれの動作期間に限定されない所定監視期間におけるバスの平均使用帯域の一例である。
【００４２】
以上の構成から、ＦＰＧＡ５は以下の構成を有する。
Ａ．ＦＰＧＡ５は、１つ以上のＣＰＵ１で実行されるアプリケーションの処理にマッピングされる複数の回路ブロック（ＵＤＬ）を有し、上記一つ以上のＣＰＵ１が相互に連携して信号処理を行う。
Ｂ．ＦＰＧＡ５は、ＵＤＬ５１の起動、終了などの動作状況を観測し、あらかじめ決められた期間におけるＵＤＬ５１の動作率を測定する動作期間観測部６３を有する。動作率は、例えば、｛（一定期間−ＵＤＬの停止中）／一定期間｝等の式によって算出される。
Ｃ．ＦＰＧＡ５は、平均データ量観測部６２を有する。平均データ量観測部６２は、メモリ２等へのアクセスのリクエスト信号から、帯域制御が掛かっていない場合のＵＤＬ５１の動作期間に入出力されるデータ量の時間平均（第１の平均使用帯域）を計測する。また、平均データ量観測部６２は、ＵＤＬ５１の動作期間と無関係に計測される、所定監視期間において入出力されるデータ量の時間平均（第２の平均使用帯域）を観測する。
Ｄ．ＦＰＧＡ５は、予め決められた平均データ量に帯域を制限する帯域制御部６５を有する。
Ｅ．ＦＰＧＡ５は、帯域制御部６５からのオンおよびオフ信号にしたがって、バスの新規リクエストを遮断するスイッチをもつリクエスト遮断部６６を有する。
Ｆ．管理部７は、例えば、ＵＤＬ５１を新たに起動するときに、新たに起動されるＵＤＬ５１とすでに動作中のＵＤＬ５１の使用帯域の総和が、予め決められた閾値超える場合に、動作中のＵＤＬ５１を観測した動作状況から、いずれかのＵＤＬ５１の帯域制御を行う
事を決定する。ただし、新たに起動されるＵＤＬ５１の使用帯域は、任意の初期値（例えば、０）として設定される。そして、所定回数の繰り返し計算により、管理部７は、使用帯域の総和が、予め決められた閾値を超えるか否かを判定する。
Ｇ．Ａ．〜Ｆ．の各処理は、一定期間停止していたＵＤＬ５１を新たに起動する際に実行される。ただし、Ａ．〜Ｆ．の各処理は、所定のタイミング、あるいは所定の周期で実行されるようにしてもよい。
【００４３】
＜使用形態＞
本実施形態の帯域制御部６および管理部７は、ＦＰＧＡ５に適用される。ＣＰＵ１は、１または複数のＵＤＬ５１をＣＰＵ１で実行されるアプリケーションの処理に適用する。ＦＰＧＡ５が、例えば、部分再構成機能（パーシャルリコンフィグ機能）と呼ばれる部分的な回路構成の書き換え機能を有する場合には、本実施形態の帯域制御部６および管理部７が効果を発揮する。
【００４４】
さらに、ＣＰＵ１が仮想マシンを提供し、仮想マシン上で動作しているアプリケーションが１または複数のＵＤＬ５１を占有して利用するケースにおいて、本実施形態の帯域制御部６および管理部７が効果を発揮する。
【００４５】
なお、複数の仮想マシン、プロセスが１または複数のＵＤＬを共有する場合には、ＣＰＵ１のデバイスドライバ、制御部・バスブリッジ５２、ＵＤＬ５１のインターフェース等で、アクセスがシリアル化されるので、本実施形態の帯域制御部６および管理部７が適用可能である。本実施形態では、ＵＤＬ５１の動作期間、バスの平均使用帯域は、ＵＤＬ５１の単位で計測される。したがって、本実施形態に例示の処理では、帯域制御部６および管理部７は、１つの仮想マシン（あるいはプロセス）からの起動による処理か、複数の仮想マシン（あるいはプロセス）からの起動による処理かを区別しなくてもよい。
【００４６】
＜処理フロー＞
図６にＵＤＬ５１の使用帯域が制御される処理を例示する。図６で横軸は、時間を示し、縦方向の長さは、各ＵＤＬ５１が使用するバスの使用帯域を例示する。図６では、区間１において、３つのＵＤＬ５１（ＵＤＬ５１Ａ、ＵＤＬ５１Ｂ、ＵＤＬ５１Ｃ）が起動している。区間１において、ＵＤＬ５１Ａは、他のＵＤＬ５１と比較して、動作期間は短いが使用帯域が大きい。そして、図６では、区間２の始めに、ＵＤＬ５１Ｄが起動されている。図６では、ＵＤＬ５１Ａの動作期間中の使用帯域が大きいために、ＵＤＬ５１Ｄが起動されると、ＵＤＬ５１ＡからＵＤＬ５１Ｄまでの全体の使用帯域が所定の制限値（Starget）を超えてしまう場合を想定している。そこで、図６では、動作率が他よりも低いＵ
ＤＬ５１Ａの使用帯域を制限することで、ＵＤＬ５１Ｄの使用帯域が確保される。
【００４７】
管理部７は、一定期間、例えば、所定監視期間以上停止していたＵＤＬ５１（図６ではＵＤＬ５１Ｄ）を起動したとき、または定期的に、以下の処理を実行する。管理部７は、動作中のＵＤＬ５１の第１の平均使用帯域を集計し、動作中のＵＤＬ５１すべてについての第1の平均使用帯域の総和St1が、閾値Stargetより高い（あるいは閾値Starget以上）か否かを判定する。そして、総和St1が、閾値Stargetより高い（あるいは閾値Starget以上
、以下同様）と判断された場合に、管理部７は、ＵＤＬ５１の中から第１の平均使用帯域が閾値Ｔ以上のもの（あるいは閾値Ｔを超えるもの、以下同様）を選択し、帯域制限を実施する。定性的には以下のような優先順位づけが行われる。
【００４８】
管理部７は、第１の平均使用帯域が閾値Ｔ以上のもののうち、動作率が低いものは、間欠動作しているとみなし、帯域制限を掛ける候補（複数）とする。一方、管理部７は、第１の平均使用帯域が閾値Ｔ以上のものでも動作率が高いものについては、クリティカルタスクとしてなるべく優先する。また、第１の平均使用帯域が閾値Ｔ未満のものについては
、管理部７は、帯域小であるか、または演算主体のＵＤＬ５１であると判断する。すなわち、第１の平均使用帯域が閾値Ｔ未満のものは消費帯域が低いので、そのまま優先される。
【００４９】
ここで、閾値Ｔは、第１の平均使用帯域と第２の平均使用帯域と各ＵＤＬ５１の動作期間によって決定される。管理部７は、閾値Ｔを基に帯域制限の候補となるＵＤＬ５１を選定し、選定された候補について優先的に帯域を制御することで、ＦＰＧＡ５内のＵＤＬ５１全体が目標帯域を満たすように制御する。
【００５０】
閾値Ｔの決定フローは以下の通りである。
（ステップ１）ある閾値Ｔを与えた時、管理部７は、閾値Ｔを基にＵＤＬ５１を分類する。すなわち、管理部７は、第１の平均使用帯域が閾値Ｔ以上の第１のグループと、閾値Ｔ未満の第２のグループにＵＤＬ５を分類する。
（ステップ２）そして、管理部７は、第１の平均使用帯域がＴ以上のＵＤＬ５１（第1の
グループ）についての第１の平均使用帯域の総和Sht1、および第２の平均使用帯域の総和Sht2を算出する。また、管理部７は、第１の平均使用帯域がＴ未満のＵＤＬ５１（第２のグループ）についての第１の平均使用帯域の総和Slt1、および第２の平均使用帯域の総和Slt2を算出する。したがって、ＵＤＬ５１動作中の第1の平均使用帯域の総和をSt1、および、ＵＤＬ５１非動作時を含む所定監視期間における第２の平均使用帯域の総和をSt2と
して、以下の式１，式２が成立する。
【００５１】
St1=Sht1+Slt1；（式１）
St2=Sht2+Slt2；（式２）
（ステップ３）そして、管理部７は、Sht1+Slt2を計算し、Sht1+Slt2が目標帯域Starget
以下になるようにＴを決定する。より具体的には、管理部７は、閾値Ｔを変更して、ステップ１〜ステップ３を繰り返すことで、Sht1+Slt2が目標帯域Starget以下になる閾値Ｔを求める。例えば、管理部７は、２分探索などの手法でSht1+Slt2 <= Stargetとなるように、閾値Ｔを決定する。ただし、管理部７は、Sht1+Slt2の各項に重みAlpha, Betaを用いてAlpha・Sht1+Beta・Slt2 <= Stargetとなるように閾値Ｔを決定してもよい。ここで、Alpha、Betaは、１未満の任意の正数である。Alpha、Betaを１に設定してもよい。
【００５２】
図７に、管理部７が実行する閾値Ｔ決定の処理フローを例示する。この処理は、ＵＤＬ５１が一定期間停止した後に起動されるか（Ｓ１でＹＥＳ）、共有タイマー８によって所定のタイミングまたは所定の周期で開始する。処理が起動されると、管理部７は、閾値Ｔと繰り返し数ｎを初期化する（Ｓ２）。初期化のためのパラメータは、例えば、ＣＰＵ１がＦＰＧＡ５内のレジスタに格納しておけばよい。
【００５３】
次に、管理部７は、閾値Ｔによって定まる第１のグループに対する第１の平均使用帯域の総和Sht1、第２のグループに対する第１の平均使用帯域の総和Slt1、第１のグループに対する第２平均使用帯域の総和Sht2、第２のグループに対する第２の平均使用帯域の総和Slt2を計算する（Ｓ３）。
【００５４】
そして、管理部７は、繰り返し数ｎが０になったか否かを判定する（Ｓ４）。そして、繰り返し数ｎが０になっていない場合、管理部７は、Alpha・Sht1+Beta・Slt2 <= Stargetか否かを判定する（Ｓ５）。
【００５５】
そして、Ｓ５の判定でＹＥＳの場合、閾値Ｔをプラス方向に更新するとともに、ｎを１つカウントダウンする（Ｓ６）。閾値Ｔの更新は、例えば、閾値Ｔの値の現在値から最大値までの範囲での２分探索で行ってもよい。また、閾値Ｔの更新は、固定値の増分を加算するものでもよい。閾値Ｔの範囲および増分は、例えば、ＣＰＵ１がＦＰＧＡ５のレジス
タに設定すればよい。そして、管理部７は、Ｓ３の処理に戻る。
【００５６】
一方、Ｓ５の判定でＮＯの場合、閾値Ｔをマイナス方向に更新するとともに、ｎを１つカウントダウンする（Ｓ７）。閾値Ｔの更新は、例えば、Ｔの値の現在値から最小値までの範囲での２分探索で行ってもよい。また、閾値Ｔの更新は、固定値の増分を減算するものでもよい。そして、管理部７は、Ｓ３の処理に戻る。
【００５７】
そして、Ｓ３の判定で繰り返し数ｎが０になった場合、管理部７は、算出された帯域制限値（閾値Ｔ）を新帯域制限値（算出された新たな閾値Ｔ）に更新する（Ｓ８）。そして、管理部７は、閾値Ｔ決定の処理フローを終了する。管理部７がＳ２−Ｓ８の処理を実行することは、複数の回路ブロックのそれぞれの動作期間におけるバスの動作中平均使用帯域の第１のグループにおける総和と回路ブロックのそれぞれの動作期間に限定されない所定監視期間におけるバスの平均使用帯域の第２のグループにおける総和とが所定の条件の満足するように閾値を決定することの一例である。
【００５８】
次に、図７の処理で決定された閾値Ｔによる帯域制限処理について説明する。管理部７は、決定した閾値Ｔ以上のＵＤＬ５１の中で、動作率に応じて帯域に制限を掛ける。直接的には第１、第２の平均使用帯域の値から、第1の平均使用帯域を抑制する値を求めて制
御を行う。ただし、最低帯域保証などの閾値を別途設けても良い。
【００５９】
（処理例１）
ＵＤＬ５１毎に、管理部７は、リクエスト遮断部６６による遮断の割合を開閉率＝(第２
の平均使用帯域)/(第１の平均使用帯域)に設定し、帯域制御部６に指示する。この結果、究極的には、各ＵＤＬ５１の帯域が第２の平均使用帯域に制限されることになる。開閉率＝(第２の平均使用帯域)/(第１の平均使用帯域)の値は、動作率が低いほど小さな値とな
る。なぜなら、動作率が低いほど動作中の割合が少なくなり、図６のＵＤＬ５１Ａのように、所定監視期間Ｐ０における未動作の期間が多くなり、第１の平均使用帯域と比較して、第２の平均使用帯域の値が小さくなるからである。したがって、処理例１では、動作率が低いＵＤＬ５１ほど、強い帯域制限が加えられること結果となる。
【００６０】
図８に処理例１による帯域制限処理のフローを例示する。管理部７は、ＦＰＧＡ５内のすべてのＵＤＬ５１に対して図８の処理を実行する。いま、次に処理するＵＤＬ５１をＵＤＬ５１ｎ（ｎ＝１，２，・・・）とする。まず、管理部７は、ＵＤＬ５１ｎが第１の平均使用帯域Ｔ１（動作期間中における平均使用帯域）の総和St1が基準値Starget以上か否かを判定する（Ｓ１０）。総和St1が基準値Starget未満の場合には、管理部７は、処理を終了する。一方、総和St1が基準値Starget以上の場合、管理部７は、ＵＤＬ５１ｎの第１の平均使用帯域Ｔ１、第２の平均使用帯域Ｔ２を所定の記憶先（メモリ２等）から読み出す（Ｓ１１）。そして、管理部７は、ＵＤＬ５１ｎの第１の平均使用帯域Ｔ１が閾値Ｔ以上か否かを判定する（Ｓ１２）。ＵＤＬ５１ｎの第１の平均使用帯域Ｔ１が閾値Ｔ以上の場合には、管理部７は、リクエスト遮断部６６の開閉率を第２の平均使用帯域／第１の平均使用帯域に設定する（Ｓ１３）。一方、ＵＤＬ５１ｎの第１の平均使用帯域Ｔ１が閾値Ｔ未満の場合には、管理部７は、リクエスト遮断部６６の開閉率を１（１００％）に設定する（Ｓ１４）。そして、管理部７は、開閉率をＵＤＬ５１ｎの帯域制御部６に送信する（Ｓ１５）。ここで、開閉率は制限割合の一例である。そして、管理部７は、すべてのＵＤＬ５１ｎ（ｎ＝１，２，・・・）について処理を終了したか否かを判定する（Ｓ１６）。そして、未処理のＵＤＬ５１ｎがある場合には、管理部７は、Ｓ１１の処理に戻る。一方、すべてのＵＤＬ５１ｎについて処理を終了した場合には、管理部７は、処理を終了する。なお、図８の処理では、新たに起動されたＵＤＬ５１について、平均使用帯域の初期値が０に設定された場合には、Ｓ１０の判断でＮＯとなり、処理が終了することがあり得る。しかしながら、図８の処理は、次に新たなＵＤＬ５１が起動された場合、あるいは、
共有タイマー８により定期的に起動される。次回のタイミングでは、今回新たに起動されたＵＤＬ５１については、平均使用帯域の実測値が計測済みであり、帯域制限の対象に含めることができる。
【００６１】
（処理例２）
第１の平均使用帯域が閾値Ｔ以上のＵＤＬ５１の帯域を一律（係数=Slt2/Slt1に）制限する。その結果、第１の平均使用帯域が閾値Ｔ以上であるＵＤＬ５１のバスの使用帯域が一律制限される結果となる。この場合には、Ｓ１３において、開閉率が係数=Slt2/Slt1に設定されることになる。
【００６２】
管理部７が、図７、図８の処理を実行することは、管理部が複数の回路ブロックのそれぞれのバスの平均使用帯域と動作期間とに応じてバスの使用帯域を制限することの一例である。また、管理部７が、Ｓ１０の判定でＹＥＳの場合にＳ１１からＳ１５の処理を実行することは、複数の回路ブロックのそれぞれの動作期間におけるバスの動作中平均使用帯域の総和が所定の基準値を超える場合に、複数の回路ブロックによるバスの使用帯域を制限することの一例である。また、管理部７が、Ｓ１２の判定でＹＥＳの場合にＳ１３、およびＳ１５の処理を実行することは、複数の回路ブロックのうち、複数の回路のそれぞれの動作期間におけるバスの動作中平均使用帯域が閾値を超えている回路ブロックに対して、動作期間の割合に基づいてバスの使用帯域を制限することの一例である。また、Ｓ１２、Ｓ１３の処理は、バスの動作中平均使用帯域が前記閾値を超えている回路ブロックに対して、制限割合＝所定監視期間おけるバスの平均使用帯域／前記バスの動作中平均使用帯域によって算出される制限割合によって、使用帯域を制限することの一例である。
【００６３】
＜実施形態の効果＞
図９に、実施形態の処理による効果を例示する。今、第１の平均使用帯域の総和St1が
所定の基準値Stargetを超えて場合を想定する。図７の処理によって、少なくとも、第１
の平均使用帯域が閾値Ｔ以上の第１のグループ（ｈグループ）についての第１の平均使用帯域Sht1と、第１の平均使用帯域が閾値Ｔ未満の第２のグループ（ｌグループ）についての第２の平均使用帯域Slt2の和であるSht1+Slt2が所定の基準値Starget以下になるように、閾値Ｔが設定される。そして、第１の平均使用帯域Ｔ１が閾値Ｔ以上のＵＤＬ５１について、強制的に開閉率が処理例１、２のように設定される。したがって、いずれの処理例であっても、時間の経過とともに、第１の平均使用帯域が抑制される。
【００６４】
処理例１の場合には、第１の平均使用帯域がそれぞれのＵＤＬ５１の第２の平均使用帯域に近づく。この場合に、動作率が低いＵＤＬ５１ほど、第１の平均使用帯域に対する第２の平均使用帯域の比率が小さいので、開閉率は小さく設定され、帯域制限が強くなる。また、処理例２の場合には、開閉率は係数=Slt2/Slt1によって、一律に設定される。この場合には、第１の平均使用帯域Ｔ１が閾値Ｔ以上のＵＤＬ５１について、一律強制的に帯域制限を実施できる。
【００６５】
そして、処理例１、２のいずれであっても、第１の平均使用帯域Ｔ１が閾値Ｔ以上のＵＤＬ５１の帯域が制限され、第１の平均使用帯域Ｔ１が閾値Ｔ未満となる方向にバスの使用帯域が制御される。その結果、時間の経過とともに、第１の平均使用帯域のすべてのＵＤＬ５１に対する総和は、Stargetに近づく。
【００６６】
以上述べたように、本実施形態の帯域制御回路である帯域制御部６と管理部７によれば、ＦＰＧＡ５内の複数のＵＤＬ５１のそれぞれのバスの平均使用帯域と動作期間とに応じて、複数のＵＤＬ５１のそれぞれのバスの使用帯域を制限する。したがって、帯域制御部６と管理部７は、ＵＤＬ５１の動作状況を反映してＵＤＬ５１の帯域制御を実行できる。
【００６７】
また、本実施形態の管理部７は、ＵＤＬ５１の動作期間におけるバスの平均使用帯域（動作中平均使用帯域）の総和が所定の基準値（Starget）を超える場合に（図８のＳ１０
でＹＥＳの場合）、帯域制御を実行するので、帯域制限が望ましい場合に限定して処理を実行できる。
【００６８】
また、本実施形態の管理部７は、複数のＵＤＬ５１のうち、動作期間におけるバスの平均使用帯域Ｔ１が閾値Ｔを超えているＵＤＬ５１に対して帯域制御を実行するので（図８のＳ１２のＹＥＳの場合）、帯域制限が望ましいＵＤＬ５１に対して帯域制御を実行できる。
【００６９】
また、本実施形態の管理部７は、複数のＵＤＬ５１を動作期間におけるバスの平均使用帯域Ｔ１が閾値Ｔ以上の第１のグループと、平均使用帯域Ｔ１が閾値Ｔ未満の第２のグループとに分類する。そして、動作期間中の平均使用帯域の第１のグループにおける総和Sht1と、所定監視期間における平均使用帯域の第２のグループにおける総和Slt2とがSht1+Slt2がStarget以下となるように閾値Ｔを決定する。したがって、閾値Ｔとして、平均使用帯域の総和の目標値に対応して望ましい値を設定できる。
【００７０】
また、本実施形態の管理部７は、複数のＵＤＬ５１を動作期間におけるバスの平均使用帯域Ｔ１が閾値Ｔ以上の第１のグループと、平均使用帯域Ｔ１が閾値Ｔ未満の第２のグループとに分類する。そして、動作期間中の平均使用帯域の第１のグループにおける総和Sht1と、所定監視期間における平均使用帯域の第２のグループにおける総和Slt2とがSht1+Slt2がStarget以下となるように閾値Ｔを反復的に決定する。したがって、複数のＵＤＬの動作状況を反映して、複数のＵＤＬの帯域制御を実行できる。
【００７１】
また、本本実施形態の管理部７は、平均使用帯域Ｔ１が閾値Ｔを超えるＵＤＬ５１について（図８のＳ１２でＹＥＳ）、Ｓ１３のように、開閉率＝所定監視期間おける平均使用帯域（第２の平均使用帯域）／ＵＤＬ５１の動作期間の平均使用帯域の割合で帯域制限を実行する。したがって、ＵＤＬ動作期間におけるバスの平均使用帯域が、所定監視期間におけるバスの平均使用帯域に近づくように帯域を制限できる。また、所定監視期間おける平均使用帯域／ＵＤＬ５１の動作期間の平均使用帯域の割合でＵＤＬ５１の使用帯域を制限するので、動作率の低いＵＤＬほど強く使用帯域を制限できる。
【００７２】
＜変形例＞
第１の平均使用帯域は、実測値である第２の平均使用帯域との比較計算で使用される。このため、第１の平均使用帯域も実測値であることが望ましい。しかし、処理の初期段階では、第１の平均使用帯域として、例えば、ユーザが管理部７に固定値をパラメータとして与えるようにしてもよい。すなわち、ＵＤＬ５１が初めて起動される場合には第１の平均使用帯域の値が確定していない。そこで、ユーザが第1の平均使用帯域の初期値として
任意の値を設定できるようにしてもよい。例えば、初回の計算では初期値0として、管理
部７が徐々に計測値に近づけても良い。また、初期値は、設計時に見積もった値などであってもよい。また、初期値は、図７、図８が実行されるときに動作しているもっとも大きな(小さい)他のＵＤＬ５１の第１の平均使用帯域の値を用いても良い。ＣＰＵ１で実行されるアプリケーションが過去に動作させた時の情報を外部記憶装置などに記録しておき、次回アプリケーション実行時にＣＰＵ１が外部記憶装置の過去の動作時の値を読み込み、ＦＰＧＡ５に設定するようにしてもよい。
【００７３】
また、動作期間については、管理部７は、帯域制限が掛かっていない状態での起動から終了までの期間の値をＦＰＧＡ５から取得する。管理部７は、起動のたびに、旧値と新値の差分に係数をかけて旧値に加算するなど、動作期間の測定値を緩やかに制御しても良い。また、管理部７は、各ＵＤＬ５１について、動作期間を毎回更新しなくてもいい。また
、管理部７は、帯域制限が掛かっているかどうかにかかわらず起動から終了までの期間の値を取得して、動作期間の値として更新するようにしても良い。
【００７４】
第２の平均使用帯域については、ＵＤＬ５１が初めて起動された後、一定期間経つまで値が確定しない。値が確定するまで、管理部７は、計算途中の最新の第２の平均使用帯域の計算結果を用いればよい。管理部７は、第２の平均使用帯域として、第１の平均使用帯域で代用してもよいし、任意の固定値で代用してもよい。管理部７は、図７、図８が実行されるときに動作しているもっとも大きな(小さい)他のＵＤＬ５１ｎの第１の平均使用帯域の値を用いても良い。なお、第２の平均使用帯域について、平均を取る期間は移動平均でも、一定周期ごとでも良い。
【００７５】
また、各値の初期値については、ユーザが精度を重視する場合には、初期値を何らかの方法、例えば、実験値等を蓄積する等することで、で設定しても良い。ただし、ユーザが過渡状態を許容する場合には、固定を初期値が用いられてもよい。すなわち、いずれ定常状態に収束していくことが期待されるからである。
【符号の説明】
【００７６】
１    ＣＰＵ
２    メモリ
３    チップセット
３Ａ  内部バス
３Ｂ  メモリバス
３Ｃ  外部バス
４    拡張バスインターフェース
４Ａ  拡張バス
４Ｂ  伝送路
５    ＦＰＧＡ
６    帯域制御部
７    管理部
５２    制御部・バスブリッジ
６１    モニタ
６２    平均データ量観測部
６３    動作期間観測部
６４    制御部
６５    帯域制限部
６６    リクエスト遮断部
【図１】
0006551049.tif 000002
【図２】
0006551049.tif 000003
【図３】
0006551049.tif 000004
【図４】
0006551049.tif 000005
【図５】
0006551049.tif 000006
【図６】
0006551049.tif 000007
【図７】
0006551049.tif 000008
【図８】
0006551049.tif 000009
【図９】
0006551049.tif 000010