(57)【要約】【課題】複数のバスマスタのクロック信号の周波数を個別に制御することができる情報処理装置及び情報処理装置の制御方法を提供することを課題とする。【解決手段】情報処理装置は、複数のクロック信号を基に複数のバスに対してそれぞれ通信する複数のバスマスタ（２０１〜２０３）と、前記複数のバスの帯域値をそれぞれ検出する帯域検出手段（２０４〜２０６）と、前記複数のバスの帯域値がそれぞれ前記複数のバスの目標帯域値範囲内になるように、前記複数のクロック信号の周波数を個別に制御するクロック制御手段（２１１）とを有する。【選択図】図１
2019012459.tif 000002
【特許請求の範囲】
【請求項１】
複数のクロック信号を基に複数のバスに対してそれぞれ通信する複数のバスマスタと、
前記複数のバスの帯域値をそれぞれ検出する帯域検出手段と、
前記複数のバスの帯域値がそれぞれ前記複数のバスの目標帯域値範囲内になるように、前記複数のクロック信号の周波数を個別に制御するクロック制御手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記クロック制御手段は、前記バスの帯域値が前記バスの目標帯域下限値より小さい場合には、前記クロック信号の周波数を高くし、前記バスの帯域値が前記バスの目標帯域上限値より大きい場合には、前記クロック信号の周波数を低くすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
さらに、前記複数のバスマスタが出力するバス使用要求が競合する場合に、前記競合する複数のバス使用要求の調停を行い、前記複数のバスマスタのうちのいずれか１つにバス使用権を与える調停手段を有し、
前記バス使用権が与えられたバスマスタは、前記バスに対して通信することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
さらに、前記バス使用権が与えられたバスマスタに対して通信を行うバススレーブを有し、
前記調停手段は、前記バス使用権が与えられたバスマスタと前記バススレーブとの間で非同期転送を行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記バススレーブは、メモリコントローラであり、
前記バスマスタは、前記バススレーブがライトするデータを前記バススレーブに送信、又は前記バススレーブがリードしたデータを前記バススレーブから受信することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記クロック制御手段は、前記複数のクロック信号の周波数として、複数の周波数のうちのいずれか１つをそれぞれ選択することを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記バスの帯域値は、通信時の単位時間当たりの通信量であることを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記帯域検出手段は、ライトデータのバス幅と、ライト転送数と、１サイクル周期と、ライト転送サイクル数を基に、ライト転送時のバスの帯域値を演算することを特徴とする請求項５に記載の情報処理装置。
【請求項９】
前記帯域検出手段は、リードデータのバス幅と、リード転送数と、１サイクル周期と、リード転送サイクル数を基に、リード転送時のバスの帯域値を演算することを特徴とする請求項５又は８に記載の情報処理装置。
【請求項１０】
前記複数のバスマスタは、速度性能目標がある通信を行うバスマスタと、速度性能目標が無い通信を行うバスマスタを有し、
前記クロック制御手段は、前記バスマスタのクロック信号の周波数を高くする場合には、前記クロック信号の周波数を高くするバスマスタに対してバス使用要求が競合し、かつ前記速度性能目標が無い通信を行うバスマスタが存在する場合には、前記速度性能目標が無い通信を行うバスマスタのクロック信号の周波数を低くすることを特徴とする請求項１〜９のいずれか１項に記載の情報処理装置。
【請求項１１】
複数のクロック信号を基に複数のバスに対してそれぞれ通信する複数のバスマスタを有する情報処理装置の制御方法であって、
帯域検出手段により、前記複数のバスの帯域値をそれぞれ検出する帯域検出ステップと、
クロック制御手段により、前記複数のバスの帯域値がそれぞれ前記複数のバスの目標帯域値範囲内になるように、前記複数のクロック信号の周波数を個別に制御するクロック制御ステップと
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来のコア間通信回路は、クロック信号の立ち上がり又は立ち下がりで、内部素子を駆動する同期式論理回路として設計されていた。しかし、設計容易性や消費電力、電磁放射の低減の観点から、コア間通信回路を非同期式論理回路として構成する大域非同期・局所同期（ＧＡＬＳ：Globally Asynchronous, Locally Synchronous)方式が注目されている。非同期式論理回路は、クロック信号の代わりにハンドシェイク信号を用い、回路内の記憶素子を制御する論理回路であり、記憶制御回路間で一対のハンドシェイク信号（要求信号と応答信号）を通信することで、フリップ・フロップ間の記憶タイミングを制御する。
【０００３】
ＧＡＬＳによれば、異なる機能ブロック間でクロック同期をとる必要がないため、クロック分配範囲を狭い範囲に限定できる。また、個々の機能ブロックのクロック周波数を、自由、かつ動的に設定することが可能になるため、クロック周波数を、機能ブロックが所定の動作を実現する必要最小限の周波数まで低くすることができる。クロック周波数を低くすると、回路遅延を大きくすることができ、電源電圧を下げることも可能になる。消費電力は、電源電圧の２乗とクロック周波数の積に比例するため、集積回路の消費電力を大きく削減することが可能になる。また、同期式コアの駆動タイミングを時間的に分散できるため、電力と電磁波照射を低減することも可能になる。
【０００４】
特許文献１は、データ転送に用いるバス帯域に応じてバスを解放するＤＭＡコントローラを開示する。ＤＭＡコントローラは、各モジュールがデータ転送に用いるバス帯域を取得する帯域設定レジスタ、各モジュールのデータ転送回数を取得する転送カウンタ、優先度を取得する優先度レジスタを有する。ＤＭＡコントローラは、バス帯域、データ転送回数、優先度を基に各モジュールの優先順位を決定し、決定した優先順位に従ってバスを解放する。これにより、帯域を保証したデータ転送を行わせる。また、ＤＭＡコントローラは、バス帯域に応じて、システムバスのクロック周波数を変更する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−７５９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１は、取得したバス帯域情報よりシステムバスの周波数を一律で変更することにより、バスを解放し、帯域を保証したデータ転送を行わせるよう制御する。つまり、特許文献１は、一律で周波数を変更するため、システム全体での制御しかできない。しかし、周波数を上げると、全体の消費電力が上がってしまう。
【０００７】
本発明の目的は、複数のバスマスタのクロック信号の周波数を個別に制御することができる情報処理装置及び情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、複数のクロック信号を基に複数のバスに対してそれぞれ通信する複数のバスマスタと、前記複数のバスの帯域値をそれぞれ検出する帯域検出手段と、前記複数のバスの帯域値がそれぞれ前記複数のバスの目標帯域値範囲内になるように、前記複数のクロック信号の周波数を個別に制御するクロック制御手段とを有する。
【発明の効果】
【０００９】
本発明によれば、複数のバスマスタのクロック信号の周波数を個別に制御することができる。
【図面の簡単な説明】
【００１０】
【図１】バス制御装置の構成例を示すブロック図である。
【図２】帯域モニタの構成例を示すブロック図である。
【図３】クロック制御部の構成例を示すブロック図である。
【図４】帯域制御モジュール部の構成例を示すブロック図である。
【図５】クロック周波数選択テーブルの一例を示す図である。
【図６】クロック制御モジュール部の構成例を示すブロック図である。
【図７】バス調停部の構成例を示すブロック図である。
【図８】非同期転送部の構成例を示すブロック図である。
【図９】リセット直後のクロック制御を説明するフローチャートである。
【図１０】データ転送する際のクロック制御を説明するフローチャートである。
【図１１】帯域モニタのライト転送時のタイムチャートである。
【図１２】帯域モニタのリード転送時のタイムチャートである。
【図１３】バス、帯域値、及びクロック制御信号のタイムチャートである。
【図１４】データ転送する際のクロック制御を説明するフローチャートである。
【図１５】バス、帯域値、及びクロック制御信号のタイムチャートである。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態によるバス制御装置１００の構成例を示すブロック図である。バス制御装置１００は、情報処理装置であり、バスマスタ２０１〜２０３、帯域モニタ２０４〜２０６、バス調停部２０７、バススレーブ２０８、ＣＰＵ２０９、基準クロック生成部２１０、及びクロック制御部２１１を有する。
【００１２】
バス制御装置１００において、データ通信の速度性能の指標として使用する帯域について説明する。バスを使用してデータ転送を行う際の帯域は、バスマスタ２０１〜２０３からバススレーブ２０８に対してデータ転送する際の、転送レートを示すものであり、単位時間当たりのデータ転送量で表現される。帯域値の単位は、Ｍバイト／ｓ等で表現され、例えば１秒間に１００Ｍバイトの転送量のデータを転送する場合には、帯域値は１００Ｍバイト／ｓとなる。バスマスタ２０１〜２０３からのデータ転送は、それぞれ、バスマスタ２０１〜２０３の第１〜第３のクロック信号に従って転送され、１サイクルの転送量はバスのビット幅と同じになる。従って、バスマスタ２０１〜２０３の帯域値は、それぞれ、バスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数と、バス幅（ビット幅）に依存する。もしバスマスタ２０１〜２０３より転送するデータが、第１〜第３のクロック信号の毎サイクルについて、バス幅全てを使用して転送される場合には、バスマスタ２０１〜２０３の帯域値は最大となる。しかし、実際には、複数のバスマスタ２０１〜２０３からの転送が競合して、バス調停部２０７のバス調停処理によってバスの使用を待たされたり、バススレーブ２０８がデータを受け取れる準備ができていないと、データの転送が待たされるため、帯域値は低下する。
【００１３】
バスマスタ２０１〜２０３は、それぞれ、第１〜第３のクロック信号を基に、第１〜第３のバスに対して第１〜第３のバス信号の通信を行う。バスマスタ２０１〜２０３は、バス上の通信を行うモジュールであり、それぞれ、バス調停部２０７に対してバス接続され、バス調停部２０７での調停の結果、バス使用権を得て、ターゲットとなるバススレーブ２０８に対してデータ通信を行う。バスマスタ２０１〜２０３は、第１〜第３のバス信号の通信を開始する際には、バススレーブ２０８のバス（第４のバス信号）を使用して転送する第１〜第３の要求信号（バス使用要求信号）＝１をバス調停部２０７へ出力する。バス調停部２０７は、第１〜第３の要求信号を参照して、第１〜第３の要求信号の中で要求信号＝１が複数存在する場合には、所定の調停ルールに従って調停を行い、第４のバス信号のバスの使用を許可するバスマスタ２０１〜２０３を決定する。バス調停部２０７は、調停の結果、第４のバス信号のバス使用許可を、第１〜第３の応答信号（バス使用権信号）によりバスマスタ２０１〜２０３へ通知する。バス調停部２０７は、バス使用を許可するバスマスタ２０１〜２０３については、第１〜第３の応答信号＝１を出力し、使用の許可を待たせるバスマスタ２０１〜２０３については、第１〜第３の応答信号＝０を出力する。バスマスタ２０１〜２０３は、バス調停部２０７より第１〜第３の応答信号＝１を入力すると、第１〜第３の要求信号＝０を出力し、要求を取り下げ、第１〜第３のバス信号の通信を開始する。
【００１４】
バス調停部２０７は、複数のバスマスタ２０１〜２０３が出力する第１〜第３の要求信号（バス使用要求信号）が競合する場合に、その競合する第１〜第３の要求信号の調停を行い、複数のバスマスタ２０１〜２０３のうちのいずれか１つにバス使用権を与える。例えば、第１〜第３の応答信号のうち、バス使用権が与えられたバスマスタ２０２の第２の応答信号が「１」になり、バス使用権が与えられなかった残りのバスマスタ２０１及び２０３の第１及び第３の応答信号が「０」になる。バス使用権が与えられたバスマスタ２０２は、バスに対して第２のバス信号の通信を行う。バススレーブ２０８は、バス使用権が与えられたバスマスタ２０２に対して通信を行う。バス調停部２０７は、バス使用権が与えられたバスマスタ２０２とバススレーブ２０８との間で非同期転送を行う。
【００１５】
帯域モニタ２０４〜２０６は、帯域検出手段であり、それぞれ、各バスマスタ２０１〜２０３とバス調停部２０７との間のバス上に接続され、バスマスタ２０１〜２０３の第１〜第３のバス信号のバスの通信時の帯域値を検出（測定）して収集する。帯域値は、通信時の単位時間当たりの通信量（通信データ量）である。帯域モニタ２０４〜２０６は、収集した各バス上の帯域値をＣＰＵ２０９へ送信する。帯域の詳細については後述する。バス調停部２０７は、バスに対する使用要求の競合を調整するモジュールであり、バスマスタ２０１〜２０３及びバススレーブ２０８とバス接続されている。バス調停部２０７は、所定の調停方式（優先順位、先着順位など）に従って、バスの使用権をバスマスタ２０１〜２０３へ与えて、バススレーブ２０８へのデータ転送を許可する。詳細については後述する。バススレーブ２０８は、バス上の転送制御を行うモジュールであり、バス調停部２０７とバス接続され、バス調停部２０７での調停の結果、バスの使用権を得て、ターゲットとなるバスマスタ２０１〜２０３からのデータ転送を受け取る。
【００１６】
ＣＰＵ２０９は、予め定められた命令セットを実現するデータ処理ユニットであり、バスマスタ２０１〜２０３、バス調停部２０７、バススレーブ２０８、クロック制御部２１１に対して、レジスタアクセスバスを経由して接続されている。ＣＰＵ２０９は、レジスタアクセスバスを経由して、接続される各モジュールのレジスタに対して、命令をセットすることにより、各モジュールの動作の制御を行う。基準クロック生成部２１０は、水晶発振子や、出力信号の周波数について任意の値に変更可能な水晶発振器などを有し、バス制御装置１００内で使用される各クロック信号の基準となる基準クロック信号を生成する。基準クロック生成部２１０は、生成した基準クロック信号をクロック制御部２１１へ供給する。クロック制御部２１１は、バス調停部２０７から供給される第１〜第４のクロック周波数変更要求信号、及び第１〜第４のクロック周波数情報信号と、基準クロック生成部２１０から供給される基準クロック信号より、第１〜第４のクロック信号を生成する。クロック制御部２１１の制御の詳細については後述する。
【００１７】
バスマスタ２０１は、第１のクロック信号で動作する。バスマスタ２０２は、第２のクロック信号で動作する。バスマスタ２０３は、第３のクロック信号で動作する。バススレーブ２０８は、第４のクロック信号で動作する。バスマスタ２０１〜２０３の数とバスマスタ２０８の数は、説明の簡略化のため、バスマスタ数は３モジュール、バススレーブ数は１モジュールとして記載したが、それ以外のバスマスタ数、バススレーブ数であってもよい。
【００１８】
図２は、図１の帯域モニタ２０４〜２０６の構成例を示すブロック図である。帯域モニタ２０４は、モニタ部３１１、モニタ制御部３２１、及び帯域値格納部３３１を有する。帯域モニタ２０５は、モニタ部３１２、モニタ制御部３２２、及び帯域値格納部３３２を有する。帯域モニタ２０６は、モニタ部３１３、モニタ制御部３２３、及び帯域値格納部３３３を有する。モニタ部３１１〜３１３は、バスマスタ２０１〜２０３の第１〜第３のバス信号のバスの帯域値を測定するモニタであり、図示しない内部の第１〜第３のモニタ開始レジスタにＣＰＵ２０９より設定することをトリガとして帯域値の測定を開始する。第１の実施形態において、モニタ部３１１〜３１３は、ライト転送時とリード転送時の帯域値について算出を行う。モニタ部３１１〜３１３は、帯域値の算出のために図示しない４つのカウンタを有する。モニタ部３１１〜３１３は、ライト転送時の帯域を算出するカウンタとして、ライト転送での転送数をカウントするライト転送数カウンタと、ライト転送での所要サイクル数をカウントするライト転送サイクル数カウンタを有する。また、モニタ部３１１〜３１３は、リード転送時の帯域を算出するカウンタとして、リード転送での転送数をカウントするリード転送数カウンタと、リード転送での所要サイクル数をカウントするリード転送サイクル数カウンタを有する。モニタ部３１１〜３１３における帯域値の測定動作の詳細については後述する。
【００１９】
モニタ部３１１〜３１３は、測定した帯域値の情報を、転送が完了する毎に、モニタ制御部３２１〜３２３を経由して、帯域値格納部３３１〜３３３へ出力する。モニタ制御部３２１〜３２３は、モニタ部３１１〜３１３、及び帯域値格納部３３１〜３３３の動作を制御するモジュールである。モニタ制御部３２１〜３２３は、ＣＰＵ２０９より、第１〜第３のモニタ開始信号を受信すると、モニタ部３１１〜３１３に対してモニタ開始信号を供給して、モニタ部３１１〜３１３による第１〜第３のバス信号における帯域値の測定を開始させる。モニタ制御部３２１〜３２３は、モニタ部３１１〜３１３が帯域値の測定を開始すると、モニタ部３１１〜３１３より、帯域信号が供給される度に、帯域値格納部３３１〜３３３へ帯域値の情報を格納するよう制御する。そして、モニタ制御部３２１〜３２３は、帯域値格納部３３１〜３３３へ格納された帯域値の情報が、ＣＰＵ２０９より予めレジスタ設定された帯域収集サイズに到達すると、帯域値格納部３３１〜３３３へ格納された帯域収集サイズ分の帯域値の情報を読み出す。モニタ制御部３２１〜３２３は、帯域値格納部３３１〜３３３から読み出した帯域収集サイズ分の帯域値の情報より、平均の帯域値を算出して、第１〜第３の帯域信号として、第１〜第３の帯域収集完了信号と共にクロック制御部２１１へ供給する。帯域値格納部３３１〜３３３は、例えばＳＲＡＭ等の不揮発性のメモリで構成され、モニタ制御部３２１から供給されるメモリアクセス制御信号に従って、帯域値の情報を格納する。
【００２０】
図３は、図１のクロック制御部２１１の構成例を示すブロック図である。クロック制御部２１１は、３つの帯域制御モジュール部４１１〜４１３と、４つのクロック制御モジュール部４２１〜４２４を有する。クロック制御部２１１は、帯域モニタ２０４〜２０６から出力される第１〜第３の帯域信号を基に、バスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数を制御する。よって、制御する第１〜第３のクロック信号は３本であるため、帯域制御モジュール部４１１〜４１３は３個である。各帯域制御モジュール部４１１〜４１３の内部構成は同じである。また、制御するクロック信号は、上記の第１〜第３のクロック信号の他に、バススレーブ２０８の第４のクロック信号が存在する為、合計で４本である。よって、クロック制御モジュール部４２１〜４２４は４個である。各クロック制御モジュール部４２１〜４２４の内部構成は同じである。
【００２１】
図４は、図３の帯域制御モジュール部４１１〜４１３の構成例を示すブロック図である。帯域制御モジュール部４１１は、帯域比較部４３１と周波数算出部４４１を有する。帯域制御モジュール部４１２は、帯域比較部４３２と周波数算出部４４２を有する。帯域制御モジュール部４１３は、帯域比較部４３３と周波数算出部４４３を有する。帯域比較部４３１〜４３３は、帯域モニタ２０４〜２０６から出力される第１〜第３の帯域収集完了信号を受け取ると、予め内部のレジスタに格納されている第１〜第３の目標帯域値と、帯域モニタ２０４〜２０６から出力される第１〜第３の帯域信号との比較を行う。第１〜第３の目標帯域値は、各バスマスタ２０１〜２０３の所定の動作に求められる目標帯域値範囲であり、ＣＰＵ２０９よりレジスタアクセスバス経由で予め設定されている。第１〜第３の目標帯域値は、第１の実施形態では、目標帯域の下限値から、目標帯域の上限値までの範囲で表現されるものであり、内部のレジスタとしては、それぞれ第１〜第３の目標帯域下限値、及び第１〜第３の目標帯域上限値の６個のレジスタが存在する。
【００２２】
帯域比較部４３１〜４３３は、第１〜第３の帯域信号が示す現在の第１〜第３の帯域値が、第１〜第３の目標帯域上限値より大きいか否かの比較を行う。そして、帯域比較部４３１〜４３３は、第１〜第３の帯域信号が示す現在の第１〜第３の帯域値が、第１〜第３の目標帯域下限値より小さいか否かの比較を行う。帯域比較部４３１〜４３３は、現在の第１〜第３の帯域値が、第１〜第３の目標帯域上限値より大きい場合には、第１〜第３の周波数ＵＰ要求信号＝１を後段の周波数算出部４４１〜４４３へ出力する。そうでない場合には、帯域比較部４３１〜４３３は、第１〜第３の周波数ＵＰ要求信号＝０を周波数算出部４４１〜４４３へ出力する。帯域比較部４３１〜４３３は、第１〜第３の周波数ＵＰ要求信号＝１を出力する際には、現在の第１〜第３の帯域値から、第１〜第３の目標帯域上限値を減算した値を、第１〜第３の帯域差分信号として周波数算出部４４１〜４４３に出力する。一方、帯域比較部４３１〜４３３は、現在の第１〜第３の帯域値が、第１〜第３の目標帯域下限値より小さい場合には、第１〜第３の周波数ＤＯＷＮ要求信号＝１を後段の周波数算出部４４１〜４４３へ出力する。そうでない場合には、帯域比較部４３１〜４３３は、第１〜第３の周波数ＤＯＷＮ要求信号＝０を周波数算出部４４１〜４４３に出力する。帯域比較部４３１〜４３３は、第１〜第３の周波数ＤＯＷＮ要求信号＝１を出力する際には、第１〜第３の目標帯域下限値から、現在の第１〜第３の帯域値を減算した値を、第１〜第３の帯域差分信号として周波数算出部４４１〜４４３に出力する。
【００２３】
周波数算出部４４１〜４４３は、前段の帯域比較部４３１〜４３３より第１〜第３の周波数ＵＰ要求信号、もしくは第１〜第３の周波数ＤＯＷＮ要求信号を入力する。その際、周波数算出部４４１〜４４３は、第１〜第３の帯域差分信号に応じて、変更する第１〜第３のクロック信号の候補の周波数を算出する。変更する第１〜第３のクロック信号の周波数の算出の式（１）の例を以下に示す。
【００２４】
変更後の候補の周波数＝（現在の周波数）×（（（第１〜第３の目標帯域上限値）＋（第１〜第３の目標帯域下限値）−（現在の第１〜第３の帯域値））÷（現在の第１〜第３の帯域値））  ・・・（１）
【００２５】
周波数算出部４４１〜４４３は、上記の第１〜第３のクロック信号の変更後の候補の周波数を算出した後に、後段のクロック制御モジュール部４２１〜４２３が分周可能な周波数を求める。周波数算出部４４１〜４４３は、ルックアップテーブルとして、予め作成された図５のクロック周波数選択テーブルを格納する。
【００２６】
図５は、周波数算出部４４１〜４４３に格納されるクロック周波数選択テーブルの一例を示す図である。クロック周波数選択テーブルは、クロック制御部２１１にて変更可能なクロック周波数の情報と、それに対応するクロック周波数選択信号の値を格納する。図５の例では、クロック制御部２１１にて変更可能なクロック周波数は、３００ＭＨｚ、２５０ＭＨｚ、２００ＭＨｚ、１５０ＭＨｚ、１００ＭＨｚの５通りである場合を示している。よって、クロック周波数選択テーブルのクロック周波数情報として、“３００”、“２５０”、“２００”、“１５０”、“１００”の値が格納されている。また、各クロック周波数情報に対応するクロック周波数選択値として、それぞれ“１”、“２”、“３”、“４”、“５”の値が格納されている。
【００２７】
周波数算出部４４１〜４４３は、算出した変更後の候補の周波数より、クロック周波数選択テーブルに格納されている複数の周波数情報の中から、最も近い周波数を、最終的な変更後の周波数として決定する。周波数算出部４４１〜４４３は、第１〜第３の周波数ＵＰ要求信号＝１の場合には、変更後の候補の周波数より大きい方向で近い周波数情報を、変更後の周波数として決定する。一方、周波数算出部４４１〜４４３は、第１〜第３の周波数ＤＯＷＮ要求信号＝１の場合には、変更後の候補の周波数より小さい方向で近い周波数情報を、変更後の周波数として決定する。
【００２８】
以下に、現在の周波数が２００ＭＨｚ、現在の第１〜第３の帯域値が８００Ｍバイト／ｓ、第１〜第３の目標帯域上限値が１１００Ｍバイト／ｓ、第１〜第３の目標帯域下限値が９００Ｍバイト／ｓの場合を例に説明する。この場合、式（１）より変更後の候補の周波数は、２００×（（１１００＋９００−８００）÷８００）＝３００ＭＨｚとなる。この時、第１〜第３の周波数ＵＰ要求信号＝１が出力されている為、クロック周波数選択テーブルに格納されている周波数情報の中で、大きい方向で最も近い値である“３００”が最終的な変更後の周波数として決定される。周波数算出部４４１〜４４３は、変更後のクロック周波数を決定すると、対応するクロック周波数選択値をクロック周波数選択テーブルより選択し、第１〜第３のクロック周波数選択信号として後段のクロック制御モジュール部４２１〜４２３へ出力する。上記の例の場合は、変更後の周波数として決定された周波数情報は“３００”であるので、周波数算出部４４１〜４４３は、第１〜第３のクロック周波数選択信号＝１を出力する。
【００２９】
周波数算出部４４１〜４４３は、第１〜第３のクロック周波数選択信号を出力するのと同じタイミングで、クロック制御モジュール部４２１〜４２３に対してクロック周波数の変更を要求する信号として、第１〜第３のクロック周波数変更要求信号＝１を出力する。クロック制御モジュール部４２１〜４２３は、クロック周波数の変更が完了すると、第１〜第３のクロック周波数変更応答信号＝１を周波数算出部４４１〜４４３に出力する。周波数算出部４４１〜４４３は、第１〜第３のクロック周波数変更応答信号＝１を入力すると、第１〜第３のクロック周波数変更要求信号＝０を出力する。
【００３０】
図６は、図３のクロック制御モジュール部４２１〜４２４の構成例を示すブロック図である。クロック制御モジュール部４２１は、ＰＬＬ同期制御部５１１と、分周器５２１，５３１，５４１，５５１と、マルチプレクサ（ＭＵＸ）５６１と、クロック周波数変更制御部５７１とを有する。クロック制御モジュール部４２２は、ＰＬＬ同期制御部５１２と、分周器５２２，５３２，５４２，５５２と、ＭＵＸ５６２と、クロック周波数変更制御部５７２とを有する。クロック制御モジュール部４２３は、ＰＬＬ同期制御部５１３と、分周器５２３，５３３，５４３，５５３と、ＭＵＸ５６３と、クロック周波数変更制御部５７３とを有する。クロック制御モジュール部４２４は、ＰＬＬ同期制御部５１４と、分周器５２４，５３４，５４４，５５４と、ＭＵＸ５６４とを有する。
【００３１】
ＰＬＬ同期制御部５１１〜５１４は、図示しない位相比較器、ループフィルタ、電圧制御発振器などを有し、基準クロック生成部２１０より入力された基準クロック信号の位相に同期したクロック信号を生成するモジュールである。分周器５２１〜５２４，５３１〜５３４，５４１〜５４４，５５１〜５５４は、ＰＬＬ同期制御部５１１〜５１４から供給されるクロック信号の周波数を分周して落とすモジュールである。分周器５２１〜５２４，５３１〜５３４，５４１〜５４４，５５１〜５５４は、分周する値をＣＰＵ２０９より任意の値に設定できるプログラマブル分周器である。分周器５２１〜５２４は、分周値として１．２が設定されているため、基準クロック信号の１／１．２周期の周波数のクロック信号を出力する。分周器５３１〜５３４は、分周値として１．５が設定されているため、基準クロック信号の１／１．５周期の周波数のクロック信号を出力する。分周器５４１〜５４４は、分周値として２が設定されているため、基準クロック信号の１／２周期の周波数のクロック信号を出力する。分周器５５１〜５５４は、分周値として３が設定されているため、基準クロック信号の１／３周期の周波数のクロック信号を出力する。
【００３２】
クロック周波数変更制御部５７１〜５７３は、帯域制御モジュール部４１１〜４１３から第１〜第３のクロック周波数変更要求信号、及び第１〜第３のクロック周波数選択信号を入力する。クロック周波数変更制御部５７１〜５７３は、第１〜第３のクロック周波数変更要求信号＝１の際に、第１〜第３のクロック周波数選択信号の値をクロック選択信号として、ＭＵＸ５６１〜５６３へ出力する。
【００３３】
ＭＵＸ５６１〜５６４は、それぞれ、５入力１出力のマルチプレクサである。ＭＵＸ５６１は、ＰＬＬ同期制御部５１１及び４個の分周器５２１，５３１，５４１，５５１により生成される５個の異なる周波数のクロック信号のうちの１つを、クロック周波数変更制御部５７１から供給されるクロック周波数選択信号の数値に従って選択する。ＭＵＸ５６１は、選択したクロック信号を、第１のクロック信号として出力する。
【００３４】
ＭＵＸ５６２は、ＰＬＬ同期制御部５１２及び４個の分周器５２２，５３２，５４２，５５２により生成される５個の異なる周波数のクロック信号のうちの１つを、クロック周波数変更制御部５７２から供給されるクロック周波数選択信号の数値に従って選択する。ＭＵＸ５６２は、選択したクロック信号を、第２のクロック信号として出力する。
【００３５】
ＭＵＸ５６３は、ＰＬＬ同期制御部５１３及び４個の分周器５２３，５３３，５４３，５５３により生成される５個の異なる周波数のクロック信号のうちの１つを、クロック周波数変更制御部５７３から供給されるクロック周波数選択信号の数値に従って選択する。ＭＵＸ５６３は、選択したクロック信号を、第３のクロック信号として出力する。
【００３６】
第１の実施形態においては、バススレーブ２０８の第４のクロック信号の周波数については、変更しない場合を例に説明する。これは、一般的にバススレーブ２０８となるＤＤＲ等のメモリコントローラは、クロック周波数を変更すると、メモリコントローラの設定変更に時間を要する為、第１の実施形態では、第４のクロック信号は、周波数を変更しない。従って、第１の実施形態では、第４のクロック信号を制御するクロック制御モジュール部４２４は、クロック周波数変更制御部を含まない。クロック制御モジュール部４２４におけるＭＵＸ５６４へ供給されるクロック周波数選択信号の値は、ＣＰＵ２０９のレジスタ設定により予め決められた値に設定される。
【００３７】
ＭＵＸ５６４は、ＰＬＬ同期制御部５１４及び４個の分周器５２４，５３４，５４４，５５４により生成される５個の異なる周波数のクロック信号のうちの１つを、ＣＰＵ２０９により設定されたクロック周波数選択信号の数値に従って選択する。ＭＵＸ５６４は、選択したクロック信号を、第４のクロック信号として出力する。
【００３８】
クロック周波数変更制御部５７１〜５７３は、クロック周波数選択信号を出力する。クロック周波数変更制御部５７１〜５７３は、周波数が変更された第１〜第３のクロック信号の位相が、基準クロック信号の位相と同期した後に、第１〜第３のクロック周波数変更応答信号を帯域制御モジュール部４１１〜４１３へ出力する。周波数が変更された第１〜第３のクロック信号の位相が、基準クロック信号の位相に同期するまでの時間は、ＰＬＬ同期制御部５１１〜５１３にて構成されるループフィルタの時定数によって大凡決定される。よって、第１〜第３のクロック周波数変更要求信号が発行されてから、ループフィルタの時定数と、周波数変更量を加味した予め決められた時間が経過したタイミングで、第１〜第３のクロック周波数変更応答信号として“１”が発行される。
【００３９】
図７は、図１のバス調停部２０７の構成例を示すブロック図である。バス調停部２０７は、非同期転送部８０１〜８０４と、バスアービタ８０５とを有する。非同期転送部８０１〜８０４は、動作クロック信号の周波数が異なり、非同期関係にある２つのモジュール間における非同期の転送を行う回路であり、第１の実施形態における、いわゆるＧＡＬＳ方式でのコア間通信のための非同期式論理回路に相当する回路である。非同期転送部８０１〜８０３は、それぞれ、バスマスタ２０１〜２０３とバスアービタ８０５の間の非同期転送回路である。非同期転送部８０４は、バスアービタ８０５とバススレーブ２０８の間の非同期転送回路である。上記の非同期転送部８０１〜８０４をバス調停部２０７におけるバスインターフェースに接続することにより、バスマスタ２０１〜２０３とバススレーブ２０８の動作クロック信号についてそれぞれ異なる周波数で個別に制御することが可能となる。動作クロック信号（第１〜第４のクロック信号）について独立して制御可能な構成とすることで、バスマスタ２０１〜２０３について、他のドメインを考慮することなく、個別に周波数を変更することができる。非同期転送部８０１〜８０４の詳細については後述する。
【００４０】
バスアービタ８０５は、バスに対する使用要求が競合した場合に、バスの使用権をバスマスタ２０１〜２０３の何れに与えるかを調停するモジュールである。バスアービタ８０５は、バスマスタ２０１〜２０３及びバススレーブ２０８に対して、非同期転送部８０１〜８０４を介してバス接続されている。バスアービタ８０５は、所定の調停方式（優先順位、先着順位など）に従って、バスの使用権をバスマスタ２０１〜２０３へ与えて、バススレーブ２０８へのデータ転送を許可する。また、バスアービタ８０５は、バス使用権の調停結果を基に、各バスマスタ２０１〜２０３に対してバス使用権を与えたタイミングで、バスの使用権を獲得した事を通知する第１〜第３のバス権獲得信号＝１を出力する。第１〜第３のバス権獲得信号は、クロック制御部２１１へ供給され、クロック制御部２１１におけるクロック周波数を変更するタイミング信号として利用される。
【００４１】
図８（ａ）は、図７の非同期転送部８０１〜８０４の構成例を示すブロック図である。非同期転送部８０１〜８０４は、それぞれ、３つのフリップ・フロップ（ＦＦ）８１１〜８１３と、各フリップ・フロップ８１１〜８１３に対応した３つの記憶制御回路（ＬＣ）８２１〜８２３を有する。記憶制御回路８２１は、次の段の記憶制御回路８２２に対して要求信号Ｒ０を出力し、記憶制御回路８２２は、次の段の記憶制御回路８２３に対して要求信号Ｒ１を出力する。記憶制御回路８２３は、前段の記憶制御回路８２２に対して応答信号Ａ１を出力し、記憶制御回路８２２は、前段の記憶制御回路８２１に対して応答信号Ａ０を出力する。また、記憶制御回路８２１〜８２３は、対応するフリップ・フロップ８１１〜８１３に、記憶制御信号Ｌ０〜Ｌ２を出力する。フリップ・フロップ８１１〜８１３は、記憶制御信号Ｌ０〜Ｌ２に応答してデータを記憶する。非同期転送部８０１〜８０４は、フリップ・フロップ８１１〜８１３に代表される記憶回路と、記憶制御回路８２１〜８２３とは、一組のレジスタとして扱われる。
【００４２】
図８（ｂ）は、フリップ・フロップ８１２及び記憶制御回路８２２の動作波形例を示すタイミングチャートである。フリップ・フロップ８１２及び記憶制御回路８２２は、以下のように動作する。まず、前段のフリップ・フロップ８１１は、バスマスタ２０１〜２０３より転送される第１〜第３のバス信号のデータｄ０をデータＤ０として記憶し（Ｄ０＝ｄ０）、データｄ０をフリップ・フロップ８１２に出力する。フリップ・フロップ８１１に対応した記憶制御回路８２１は、フリップ・フロップ８１１がデータｄ０を記憶した後、次段の記憶制御回路８２２に要求信号Ｒ０＝１を出力する。
【００４３】
記憶制御回路８２２は、要求信号Ｒ０＝１を入力することで、フリップ・フロップ８１２にデータが到着していることを検知する。記憶制御回路８２２は、記憶制御信号Ｌ１＝１を出力する。フリップ・フロップ８１２は、記憶制御信号Ｌ１＝１を入力すると、データｄ０をデータＤ１として記憶する（Ｄ１＝ｄ０）。
【００４４】
記憶制御回路８２２は、フリップ・フロップ８１２がデータｄ０を記憶すると、前段の記憶制御回路８２１に応答信号Ａ０＝１を出力し、データ記憶完了を通知する。前段の記憶制御回路８２１は、データ記憶完了の応答信号Ａ０＝１を入力すると、記憶制御回路８２２に要求信号Ｒ０＝０を出力する（要求信号を取り下げる）。その後、記憶制御回路８２２は、フリップ・フロップ８１２に対し、次のデータに対する準備を要求する。
【００４５】
記憶制御回路８２２は、フリップ・フロップ８１２がデータｄ０を記憶すると、次段の記憶制御回路８２３に要求信号Ｒ１＝１を出力し、フリップ・フロップ８２３でのデータ記憶を要求する。次段の記憶制御回路８２３は、記憶制御回路８２２から要求信号Ｒ１＝１を入力すると、記憶制御信号Ｌ２＝１を出力し、フリップ・フロップ８１３にデータｄ０を記憶させる。その後、記憶制御回路８２３は、応答信号Ａ１＝１を出力し、フリップ・フロップＦＦ８１３でのデータ記憶完了を通知する。
【００４６】
記憶制御回路８２２は、前段の記憶制御回路８２１から要求信号Ｒ０＝０を受け取り、かつ、次段の記憶制御回路８２３から応答信号Ａ１＝１を入力すると、記憶制御信号Ｌ１＝０を出力する。フリップ・フロップ８１２は、記憶制御信号Ｌ１＝０となることで、次のデータに対する準備状態になる。記憶制御回路８２２は、フリップ・フロップ８１２に次のデータに対する準備を行わせると、フリップ・フロップ８１２の準備完了を示す応答信号Ａ０＝０を、前段の記憶制御回路８２１に出力する。また、記憶制御回路８２２は、次段の記憶制御回路８２３に、次のデータに対する準備を要求する要求信号Ｒ１＝０を出力する。
【００４７】
前段の記憶制御回路８２１は、応答信号Ａ０＝０を入力した後に、フリップ・フロップ８１１に次のデータｄ１を記憶させる。次段の記憶制御回路８２３は、要求信号Ｒ１＝０を入力すると、フリップ・フロップ８１３に記憶制御信号Ｌ２＝０を出力し、次のデータに対する準備をさせる。記憶制御回路８２１〜８２３は、データｄ１に対しても、上記と同様の動作を行い、フリップ・フロップ８１２及び８１３に、データｄ１を転送する。なお、図８（ｂ）の波形図では、各信号が周期的に遷移しているが、非同期転送部８０１〜８０４は、上記の手順における各タイミングの何れで遅れが生じても、上記手順に従うように動作する。
【００４８】
上記に説明したように、非同期転送部８０１〜８０４は、クロック信号の代わりに記憶制御回路８２１〜８２３間での一対のハンドシェイク信号（要求信号と応答信号）を通信することで、フリップ・フロップ８１１〜８１３間の記憶タイミングを制御する。以下、本実施形態の特徴であるバスの使用状況に応じて、バスマスタ２０１〜２０３及びバススレーブ２０８の動作クロック信号の周波数を変更する制御について説明する。
【００４９】
図９は、バス制御装置１００が、リセット直後に行う、バスマスタ２０１〜２０３及びバススレーブ２０８の動作クロック信号の周波数の初期設定の制御に関わるフローチャートであり、バス制御装置１００の制御方法を示す。ステップＳ１００１において、ＣＰＵ２０９は、全体にかかるリセット信号が解除されることを待つ。ステップＳ１００２において、ＣＰＵ２０９は、リセット信号が解除されたか否かを判定する。ＣＰＵ２０９は、リセット信号が解除されたと判定した場合には、ステップＳ１００３に処理を進め、リセット信号が解除されていないと判定した場合には、ステップＳ１００１に処理を戻す。リセット信号は、バス制御装置１００内の基準クロック生成部２１０を除く全てのモジュールに対して入力される。この時、基準クロック生成部２１０は、基準クロック信号を出力し続けている。バス制御装置１００へリセット信号が発行されてから、所定の時間経過すると、リセット信号は解除される。
【００５０】
ステップＳ１００３において、ＣＰＵ２０９は、全てのバスマスタ２０１〜２０３の動作クロック信号（第１〜第３のクロック信号）の周波数について動作に必要最小限な値となるように設定する。リセット信号が解除されると、基準クロック信号が次に立ち上がるタイミングで、クロック周波数変更制御部５７１〜５７３は、予め決められた値のクロック周波数選択信号を出力する。予め決められたクロック周波数選択信号の値は、クロック制御部２１１からバスマスタ２０１〜２０３へ供給される動作クロック信号である、第１〜第３のクロック信号について、動作に必要最小限な値に設定される。
【００５１】
例えば、基準クロック信号の周波数が３００ＭＨｚであり、第１〜第３のクロック信号の必要最小限の周波数が、それぞれ、２５０ＨＭｚ、１５０ＭＨｚ、２００ＭＨｚの場合を例に説明する。分周器５２１〜５２３には、初期値の分周数が“１．２”として設定される。分周器５３１〜５３３には、初期値の分周数が“１．５”として設定される。分周器５４１〜５４３には、初期値の分周数が“２”として設定される。分周器５５１〜５５３には、初期値の分周数が“３”として設定される。この場合、分周器５２１〜３２３、分周器５３１〜５３３、分周器５４１〜５４３、分周器５５１〜５５３から出力されるクロック信号の周波数は、それぞれ、“２５０ＭＨｚ”、“２００ＭＨｚ”、“１５０ＭＨｚ”、“１００ＭＨｚ”となる。
【００５２】
よって、初期設定時に出力されるクロック周波数選択信号の値として、クロック周波数変更制御部５７１は、クロック周波数選択信号＝２を選択する。クロック周波数変更制御部５７２は、クロック周波数選択信号＝４を選択する。クロック周波数変更制御部５７３は、クロック周波数選択信号＝３を選択する。以上により、第１〜第３のクロック信号の周波数は、それぞれ、２５０ＨＭｚ、１５０ＭＨｚ、２００ＭＨｚに制御される。
【００５３】
図１０は、バス上でデータ転送する際の、バスマスタ２０１〜２０３の動作クロック信号の周波数の変更制御に関わるフローチャートであり、バス制御装置１００の制御方法を示す。図１０は、バスマスタ２０１〜２０３よりバススレーブ２０８を使用してデータ転送するジョブが実行された際の、帯域モニタ２０４〜２０６、バス調停部２０７、クロック制御部２１１で行われる制御のフローチャートを示している。
【００５４】
ジョブ実行時の第１〜第３のクロック信号の周波数、バスマスタ２０１〜２０３の第１〜第３の目標帯域値、第１〜第３の目標上限値、第１〜第３の目標下限値は、以下である場合を例に説明する。第１のクロック信号の周波数は２５０ＭＨｚ、第２のクロック信号の周波数は２００ＭＨｚ、第３のクロック信号の周波数は１５０ＭＨｚである。第１の目標帯域値は１００Ｍバイト／ｓ、第２の目標帯域値は５００Ｍバイト／ｓ、第３の目標帯域値は１００Ｍバイト／ｓである。
【００５５】
第１の目標帯域上限値は４０９５Ｍバイト／ｓ、第２の目標帯域上限値は５５０Ｍバイト／ｓ、第３の目標帯域上限値は４０９５Ｍバイト／ｓである。なお、第１の目標帯域上限値及び第３の目標帯域上限値について、設定されている４０９５Ｍバイト／ｓは、レジスタ設定できる最大値である。
【００５６】
第１の目標帯域下限値は０Ｍバイト／ｓ、第２の目標帯域下限値は４５０Ｍバイト／ｓ、第３の目標帯域下限値は０Ｍバイト／ｓである。なお、第１の目標帯域下限値及び第３の目標帯域下限値について、設定されている０Ｍバイト／ｓは、レジスタ設定できる最小値である。
【００５７】
ここで、バスマスタ２０１とバスマスタ２０３について実行されるジョブについては、帯域目標値を持たないジョブが実行されているとする。速度性能目標を持たないジョブが実行される場合は、第１及び第３の目標帯域上限値には最大値を設定し、第１及び第３の目標帯域下限値には最小値を設定する。
【００５８】
ステップＳ１１０１において、ＣＰＵ２０９は、帯域モニタ２０４〜２０６に、目標の帯域値を設定する。ＣＰＵ２０９は、バスマスタ２０１〜２０３からデータスレーブ２０８に対してデータ転送を行うジョブが受け付けられると、帯域モニタ２０４〜２０６に対して、目標の帯域値の設定を行う。各バスマスタ２０１〜２０３の目標の帯域値は、実行されるジョブの内容に応じて、必要な目標値が設定される。目標の帯域値の設定は、帯域比較部４３１〜４３３の第１〜第３の帯域上限値レジスタ、第１〜第３の帯域下限値レジスタに対して、ＣＰＵ２０９が所望の値を設定することにより行う。
【００５９】
バスマスタ２０１より転送を行う際には、第１の目標帯域上限値が４０９５Ｍバイト／ｓ、第１の目標帯域下限値が０Ｍバイト／ｓに設定される。バスマスタ２０２より転送を行う際には、第２の目標帯域上限値が５５０Ｍバイト／ｓ、第２の目標帯域下限値が４５０Ｍバイト／ｓに設定される。バスマスタ２０３より転送を行う際には、第３の目標帯域上限値が４０９５Ｍバイト／ｓ、第３の目標帯域下限値が０Ｍバイト／ｓに設定される。
【００６０】
次に、ステップＳ１１０２において、帯域モニタ２０４〜２０６は、それぞれ、バスマスタ２０１〜２０３の第１〜第３のバス信号の帯域値の取得を開始する。帯域モニタ２０４〜２０６による測定は、ＣＰＵ２０９よりレジスタアクセスバス経由で、帯域モニタ２０４〜２０６が有する第１〜第３のモニタ開始レジスタへ所定値を設定することにより開始される。
【００６１】
次に、ステップＳ１１０３において、各バスマスタ２０１〜２０３は、バススレーブ２０８に対してデータの通信（転送）を行う。各バスマスタ２０１〜２０３は、実行するジョブの内容に応じて、バススレーブ２０８を介してデータを通信する処理が必要な場合には、必要な通信量、第１〜第３のバス信号のデータ通信を行う。バスマスタ２０１〜２０３は、第１〜第３のバス信号のデータ通信を開始する際には、バススレーブ２０８への第４のバス信号のバスを使用して通信する第１〜第３の要求信号＝１をバス調停部２０７へ出力する。
【００６２】
バス調停部２０７は、第１〜第３の要求信号を参照して、第１〜第３の要求信号の中で１の信号が複数存在する場合には、所定の調停ルールに従って調停を行い、第４のバス信号のバス使用を許可するバスマスタ２０１〜２０３を決定する。バス調停部２０７は、調停の結果、第４のバス信号のバス使用の許可を、第１〜第３の応答信号によりバスマスタ２０１〜２０３へ通知する。バス調停部２０７は、使用を許可するバスマスタ２０１〜２０３については、第１〜第３の応答信号＝１を出力し、使用の許可を待たせるバスマスタ２０１〜２０３については、第１〜第３の応答信号＝０を出力する。バスマスタ２０１〜２０３は、バス調停部２０７より第１〜第３の応答信号＝１を入力すると、第１〜第３の要求信号＝０を出力し、要求を取り下げ、第１〜第３のバス信号のデータ通信を開始する。
【００６３】
次に、ステップＳ１１０４において、帯域モニタ２０１〜２０３は、バスマスタ２０１〜２０３の第１〜第３のバス信号の転送中の帯域値を取得する。帯域モニタ２０１〜２０３は、第１〜第３のバス信号として実際に転送される転送データ量と、転送に要したサイクル数より帯域値を算出する。以下、第１〜第３のバス信号について、標準的なバスインターフェースであるＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）を使用する場合を例に説明する。
【００６４】
図１１は、バスマスタ２０１〜２０３より、ライト転送する際の、帯域モニタ２０４〜２０６のモニタ部３１１〜３１３における帯域値算出処理を説明するタイミングチャートを示す。図１１では、バスマスタ２０１〜２０３が、ライトバースト転送により、４バースト分のデータを転送する場合を示している。図１１において、ＡＸＩの転送クロック信号ＡＣＬＫは、第１〜第３のクロック信号と同じである。例えば、バススレーブ２０８は、メモリコントローラであり、メモリに接続される。バスマスタ２０２は、バススレーブ２０８がライトするデータをバススレーブ２０８に送信する。
【００６５】
まず、タイミングＴ１において、モニタ部３１１〜３１３は、ライト転送数カウンタ、及びライト転送サイクル数カウンタをクリアする。モニタ部３１１〜３１３は、ライト転送が成立しているサイクルを示すＷＶＡＬＩＤ＝１かつＷＲＥＡＤＹ＝１のタイミングをカウントすることにより、ライト転送数をカウントする。よって、図１１において、モニタ部３１１〜３１３は、ライト転送が成立しているタイミングである、タイミングＴ２〜Ｔ５にて、ライト転送数カウンタの値に１を加算する。
【００６６】
タイミングＴ５において、モニタ部３１１〜３１３は、最後のライト転送が成立しているサイクルを示すＷＶＡＬＩＤ＝１かつＷＲＥＡＤＹ＝１かつＷＬＡＳＴ＝１のタイミングにて、ライト転送数カウンタ及びライト転送サイクル数カウンタによる加算を終了する。モニタ部３１１〜３１３は、タイミングＴ５におけるライト転送数として、ライト転送数カウンタより４を得る。また、モニタ部３１１〜３１３は、ライト転送サイクル数として、ライト転送サイクル数カウンタより１０サイクルを得る。
【００６７】
次のサイクルのタイミングＴ６において、モニタ部３１１〜３１３は、ライト転送データ量を算出する。第１の実施形態において、ライトデータＷＤＡＴＡのバス幅は、６４ビットである。従って、モニタ部３１１〜３１３は、ライト転送データ量として、６４ビット（ＷＤＡＴＡバス幅）×４（ライト転送数）＝２５６ビットを算出する。
【００６８】
次のサイクルのタイミングＴ７において、モニタ部３１１〜３１３は、ライト帯域値を算出する。まず、モニタ部３１１〜３１３は、取得したライト転送サイクル数より、ライト転送における所要時間を算出する。ここでは、バスマスタ２０２のジョブ開始時の第２のクロック信号の周波数である２００ＭＨｚの場合を例に説明する。第１〜第３のクロック信号の周波数が２００ＭＨｚの場合には、クロック信号の１サイクルの周期は５ｎｓである。よって、ライト転送における所要時間は、５ｎｓ（１サイクル周期）×１０サイクル（ライト転送サイクル数）＝５０ｎｓとして算出される。そして、モニタ部３１１〜３１３は、算出したライト転送データ量と所要時間より、ライト転送時のバスの帯域値を演算する。ライト転送時のバスの帯域値は、２５６ビット（ライト転送データ量）÷５０ｎｓ（所要時間）＝６１０Ｍバイト／ｓとして算出される。
【００６９】
図１２は、バスマスタ２０１〜２０３より、リード転送する際の、帯域モニタ２０４〜２０６のモニタ部３１１〜３１３における帯域値算出処理を説明するタイミングチャートを示す。図１２では、バスマスタ２０１〜２０３より、リードバースト転送により、４バースト分のデータを転送する場合を示している。図１２において、ＡＸＩの転送クロック信号ＡＣＬＫは、第１〜第３のクロック信号と同じである。例えば、バススレーブ２０８は、メモリコントローラであり、メモリに接続される。バスマスタ２０２は、バススレーブ２０８がリードしたデータをバススレーブ２０８から受信する。
【００７０】
タイミングＴ１において、モニタ部３１１〜３１３は、リード転送数カウンタ、及びリード転送サイクル数カウンタをクリアする。モニタ部３１１〜３１３は、リード転送が成立しているサイクルを示すＲＶＡＬＩＤ＝１かつＲＲＥＡＤＹ＝１のタイミングをカウントすることにより、リード転送数をカウントする。モニタ部３１１〜３１３は、図１２においてリード転送が成立しているタイミングである、タイミングＴ２〜Ｔ５のタイミングにて、リード転送数カウンタの値に１を加算する。
【００７１】
タイミングＴ５において、モニタ部３１１〜３１３は、最後のリード転送が成立しているサイクルを示すＲＶＡＬＩＤ＝１かつＲＲＥＡＤＹ＝１かつＲＬＡＳＴ＝１のタイミングにて、リード転送数カウンタ及びリード転送サイクル数カウンタによる加算を終了する。モニタ部３１１〜３１３は、タイミングＴ５におけるリード転送数として、リード転送数カウンタより４を得る。また、モニタ部３１１〜３１３は、リード転送サイクル数として、リード転送サイクル数カウンタより８サイクルを得る。
【００７２】
次のサイクルのタイミングＴ６において、モニタ部３１１〜３１３は、リード転送データ量を算出する。第１の実施形態において、リードデータＲＤＡＴＡのバス幅は、６４ビットである。モニタ部３１１〜３１３は、リード転送データ量として、６４ビット（ＲＤＡＴＡバス幅）×４（リード転送数）＝２５６ビットを算出する。
【００７３】
次のサイクルのタイミングＴ７において、モニタ部３１１〜３１３は、リード帯域値を算出する。まず、モニタ部３１１〜３１３は、取得したリード転送サイクル数より、リード転送における所要時間を算出する。ここでは、バスマスタ２０２のジョブ開始時の第２のクロック信号の周波数である２００ＭＨｚの場合を例に説明する。第１〜第３のクロック信号の周波数が２００ＭＨｚの場合には、クロック信号の１サイクルの周期は５ｎｓである。よって、リード転送における所要時間は、５ｎｓ（１サイクル周期）×８サイクル（リード転送サイクル数）＝４０ｎｓとして算出される。そして、モニタ部３１１〜３１３は、算出したリード転送データ量と所要時間より、リード転送時のバスの帯域値を演算する。リード転送時のバスの帯域値は、２５６ビット（リード転送データ量）÷４０ｎｓ（所要時間）＝７６３Ｍバイト／ｓとして算出される。
【００７４】
モニタ制御部３２１〜３２３は、モニタ部３１１〜３１３で算出された帯域値を帯域信号として、帯域値格納部３３１〜３３３へ格納する。帯域値格納部３３１〜３３３は、モニタ制御部３２１〜３２３において生成されるライトアドレス信号に従って格納する。ライトアドレス信号は、モニタ部３１１〜３１３より帯域信号を受け取る毎に、インクリメントされる。モニタ制御部３２１〜３２３は、ライトアドレス信号が示すライトアドレスが、ＣＰＵ２０９より予めレジスタ設定された帯域収集サイズに到達するタイミングで、帯域値格納部３３１〜３３３に格納された帯域収集サイズ分の帯域値を読み出す。モニタ制御部３２１〜３２３は、読み出した帯域収集サイズ分の帯域値より、平均の帯域値を算出して、第１〜第３の帯域信号として、第１〜第３の帯域収集完了信号と共にクロック制御部２１１へ出力する。
【００７５】
図１０のステップＳ１１０５において、帯域比較部４３１〜４３３は、第１〜第３の帯域信号と第１〜第３の目標帯域値（目標帯域値範囲）との比較を行い、第１〜第３の帯域信号が第１〜第３の目標帯域値より小さいか否かを判定する。帯域比較部４３１〜４３３は、第１〜第３の帯域信号が第１〜第３の目標帯域値より小さいと判定した場合には、ステップＳ１１０６に処理を進める。帯域比較部４３１〜４３３は、第１〜第３の帯域信号が第１〜第３の目標帯域値より小さくないと判定した場合には、ステップＳ１１０７に処理を進める。
【００７６】
ステップＳ１１０５において、帯域比較部４３１〜４３３は、帯域モニタ２０４〜２０６より入力した第１〜第３の帯域信号が示す帯域値と、予めＣＰＵ２０９よりレジスタ設定されている第１〜第３の目標帯域下限値とを比較する。例えば、バスマスタ２０１〜２０３からの転送要求が競合して、バスマスタ２０２の転送時の帯域値が、目標の帯域値を下回る場合を例に説明する。第１の実施形態において、ジョブ開始時には、バスマスタ２０２より転送されるデータの目標帯域値として、ＣＰＵ２０９より第２の目標帯域上限値＝５５０Ｍバイト／ｓ、第２の目標帯域下限値＝４５０Ｍバイト／ｓが予め設定されている。バスマスタ２０２の転送時の帯域値が下がり、帯域モニタ２０５より供給される第２の帯域信号が示す帯域値が第２の目標帯域下限値＝４５０Ｍバイト／ｓを下回ると、ステップＳ１１０５における条件分岐は“Ｙｅｓ”となり、ステップＳ１１０６へ進む。第２の帯域信号が示す帯域値が、第２の目標帯域下限値を下回らない場合は、ステップＳ１１０５における条件分岐は“Ｎｏ”となり、ステップＳ１１０７へ進む。
【００７７】
ステップＳ１１０６において、帯域比較部４３１〜４３３は、第１〜第３の目標帯域値を下回ったバスマスタ２０１〜２０３の第１〜第３のクロック信号について、周波数値が高くなるように変更する。帯域比較部４３１〜４３３は、第１〜第３のクロック信号の周波数を高くすることを通知する第１〜第３の周波数ＵＰ要求信号＝１を周波数算出部４４１〜４４３へ出力する。そして、周波数算出部４４１〜４４３は、クロック制御部２１１にて変更する周波数を選択するために使用する第１〜第３のクロック周波数選択信号を生成する。
【００７８】
例えば、第２の帯域信号＝４００Ｍバイト／ｓの場合、式（１）より変更後の候補の周波数は、２００×（（５５０＋４５０−４００）÷４００）＝３００ＭＨｚとなる。この時、第１〜第３の周波数ＵＰ要求信号＝１が出力されている為、クロック周波数選択テーブルに格納されている周波数情報の中で、大きい方向で最も近い値である“３００”が最終的な変更後の周波数として決定される。周波数算出部４４２は、それに対応するクロック周波数選択値をクロック周波数選択テーブルより選択し、第２のクロック周波数選択信号＝１、第２のクロック周波数変更要求信号＝１を出力する。
【００７９】
次に、クロック制御部２１１は、クロック周波数の変更を行う。クロック周波数変更制御部５７２は、第２のクロック周波数変更要求信号＝１を入力すると、第２のクロック周波数選択信号＝１をクロック選択信号として、ＭＵＸ５６２へ出力する。ＭＵＸ５６２は、ＭＵＸ５６２の第１の入力端子に入力されている３００ＭＨｚのクロック信号を選択し、第２のクロック信号として出力する。
【００８０】
ステップＳ１１０７において、帯域比較部４３１〜４３３は、第１〜第３の帯域信号と第１〜第３の目標帯域値（目標帯域値範囲）との比較を行い、第１〜第３の帯域信号が第１〜第３の目標帯域値より大きいか否かを判定する。帯域比較部４３１〜４３３は、第１〜第３の帯域信号が第１〜第３の目標帯域値より大きいと判定した場合には、ステップＳ１１０８へ処理を進める。帯域比較部４３１〜４３３は、第１〜第３の帯域信号が第１〜第３の目標帯域値より大きくないと判定した場合には、ステップＳ１１０９へ処理を進める。
【００８１】
ステップＳ１１０７において、帯域比較部４３１〜４３３は、帯域モニタ２０４〜２０６より入力した第１〜第３の帯域信号が示す帯域値と、予めＣＰＵ２０９よりレジスタ設定されている第１〜第３の目標帯域上限値とを比較する。例えば、ステップＳ１１０６において、第２のクロック信号の周波数を高くした後に、バスマスタ２０１〜２０３からの転送要求の競合が終了し、バスマスタ２０２の転送時の帯域値が、目標の帯域値を上回る場合を例に説明する。バスマスタ２０２の転送時の帯域値が上がり、帯域モニタ２０５より供給される第２の帯域信号が示す帯域値が第２の目標帯域上限値＝５５０Ｍバイト／ｓを上回ると、ステップＳ１１０７における条件分岐は“Ｙｅｓ”となり、ステップＳ１１０８へ進む。第２の帯域信号が示す帯域値が、第２の目標帯域上限値を上回らない場合は、ステップＳ１１０７における条件分岐は“Ｎｏ”となり、ステップＳ１１０９へ進む。
【００８２】
ステップＳ１１０８において、帯域比較部４３１〜４３３は、第１〜第３の目標帯域値を上回ったバスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数値を初期値に戻すよう変更する。帯域比較部４３１〜４３３は、第１〜第３のクロック信号の周波数を低くすることを通知する第１〜第３の周波数ＤＯＷＮ要求信号＝１を周波数算出部４４１〜４４３へ出力する。周波数算出部４４１〜４４３は、クロック制御部２１１にて変更する周波数を選択するために使用する第１〜第３のクロック周波数選択信号を生成する。例えば、第２の帯域信号＝６００Ｍバイト／ｓの場合、初期値“２００”が変更後の周波数として決定される。周波数算出部４４２は、それに対応するクロック周波数選択値をクロック周波数選択テーブルより選択し、第２のクロック周波数選択信号＝３、第２のクロック周波数変更要求信号＝１を出力する。
【００８３】
次に、クロック制御部２１１は、クロック周波数の変更を行う。クロック周波数変更制御部５７２は、第２のクロック周波数変更要求信号＝３を入力すると、第２のクロック周波数選択信号＝３をクロック選択信号として、ＭＵＸ５６２へ出力する。ＭＵＸ５６２は、ＭＵＸ５６２の第３の入力端子に入力されている２００ＭＨｚのクロック信号を選択し、第２のクロック信号として出力する。
【００８４】
ステップＳ１１０９において、ＣＰＵ２０９は、全ての転送が終了したか否かを判定する。ＣＰＵ２０９は、全ての転送が終了していると判定した場合には、データ転送を行うジョブに関わる、バス制御及びクロック制御の処理を終了する。ＣＰＵ２０９は、全ての転送が終了していないと判定した場合には、ステップＳ１１０１へ処理を戻す。
【００８５】
クロック制御部２１１は、複数のバスマスタ２０１〜２０３のバスの帯域値がそれぞれ複数のバスマスタ２０１〜２０３のバスの目標帯域値範囲内になるように、複数のバスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数を個別に制御する。クロック制御部２１１は、バスの帯域値がバスの目標帯域下限値より小さい場合には、クロック信号の周波数を高くし、バスの帯域値がバスの目標帯域上限値より大きい場合には、クロック信号の周波数を低くする。
【００８６】
図１３（ａ）及び（ｂ）は、第１の実施形態のバス制御装置１００の効果を示すタイミングチャートである。図１３（ａ）は、基本技術のバス制御装置１００における、バスマスタ２０２からバススレーブ２０８に対して転送を行っている途中より、バスマスタ２０１とバスマスタ２０３からの転送が競合する場合の一例を示すタイミングチャートである。図１３（ｂ）は、第１の実施形態のバス制御装置１００における、バスマスタ２０２からバススレーブ２０８に対して転送を行っている途中より、バスマスタ２０１とバスマスタ２０３からの転送が競合する場合の一例を示すタイミングチャートである。
【００８７】
図１３（ａ）及び（ｂ）では、説明の簡略化のため、バスマスタ２０１〜２０３からの転送タイミングについては、バス調停部２０７に対して転送要求を発行するタイミングである第１〜第３の要求信号＝１となるタイミングのみを矢印として記載する。同様に、バススレーブ２０８については、バススレーブ２０８へ入力される転送が完了するタイミングのみを矢印として記載する。また、バスマスタ２０２による転送と、バスマスタ２０１とバスマスタ２０３による転送を区別するため、バスマスタ２０２の転送は黒色の矢印、バスマスタ２０１とバスマスタ２０３の転送は灰色の矢印で記載する。
【００８８】
図１３（ａ）に示す基本技術のバス制御装置１００は、第１〜第３のクロック信号の周波数を変更しない為、バスマスタ２０１〜２０３からの第１〜第３のバス要求信号の発行が競合する場合には、第２のバス要求信号の発行（ｔ１〜ｔ８の要求）の間隔が広くなる。よって、バススレーブ２０８へ入力される転送の完了タイミング（ｔ１〜ｔ８の転送）の間隔も広くなり、結果として、バスマスタ２０２からの転送の所要時間が長くなり、目標転送時間を超えてしまう恐れがある。
【００８９】
これに対し、図１３（ｂ）に示す第１の実施形態のバス制御装置１００は、帯域モニタ２０４〜２０６より取得した帯域値が、目標帯域値の許容範囲を超えた場合に、第１〜第３のクロック信号の周波数が、目標帯域の範囲内に復帰するよう変更する。図１３（ｂ）に示すタイミングチャートでは、バスマスタ２０１〜２０３からの転送が競合すると、帯域モニタ２０５より取得する第２の帯域信号が示す帯域値が低下していき、タイミングＴ１で第２の目標帯域下限値を下回る。そして、タイミングＴ２において、クロック制御部２１１は、第２のクロック信号の周波数を目標帯域の範囲内に復帰するよう高くする。第２のクロック信号の周波数を高くすることにより、第２のバス要求信号の発行（ｔ１〜ｔ８の要求）の間隔が狭くなる。よって、バススレーブ２０８へ入力される転送の完了タイミング（ｔ１〜ｔ８の転送）の間隔も狭くなり、結果として、バスマスタ２０２からの転送の所要時間が短くなる。結果として、図１３（ａ）に示すバススレーブのｔ８の転送完了タイミングより、図１３（ｂ）に示すバススレーブのｔ８の転送完了タイミングが速くなる。
【００９０】
その後、バスマスタ２０１〜２０３からの転送の競合状態が解消されると、帯域モニタ２０５より取得する第２の帯域信号が示す帯域値が上昇していき、タイミングＴ３で第１の目標帯域下限値を上回る。そして、タイミングＴ４において、クロック制御部２１１は、第２のクロック信号の周波数を目標帯域の範囲内に復帰するよう元に戻す。
【００９１】
以上説明したように、第１の実施形態のバス制御装置１００は、帯域モニタ２０４〜２０６より転送中の帯域値を収集して、目標帯域の範囲を超えた場合には、第１〜第３のクロック信号の周波数を変更して、目標帯域の範囲内に復帰するよう制御する。これにより、データ転送中にバスマスタ２０１〜２０３からの転送が競合した場合においても、目標の速度性能を維持するよう制御することができる。
【００９２】
（第２の実施形態）
本発明の第１の実施形態では、転送中の帯域を測定し、転送中の帯域が目標帯域値よりも下回った場合に、転送中の帯域が目標帯域を満たすように、バスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数を高くする制御について説明した。本発明の第２の実施形態では、競合中のバスマスタ２０１〜２０３の転送ジョブが速度性能目標を持たない場合には、対応する第１〜第３のクロック信号の周波数を低くする制御を行う。これは、目標帯域値よりも下回ったバスマスタ２０１〜２０３の第１〜第３のクロック信号の周波数を高くすると、その分、バス制御装置１００全体の消費電力が上がってしまうからである。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００９３】
図１４は、第２の実施形態における、バス上でデータ転送する際の、バスマスタ２０１〜２０３、バススレーブ２０８の動作クロック信号の周波数の変更制御に関わるフローチャートであり、バス制御装置１００の制御方法を示す。図１４に示すフローチャートを説明するにあたり、ジョブ実行時の第１〜第３のクロック信号の周波数、バスマスタ２０１〜２０３の第１〜第３の目標帯域値、第１〜第３の目標上限値、第１〜第３の目標下限値は、第１の実施形態と同様である。また、バスマスタ２０２からの転送ジョブは速度性能目標があるが、バスマスタ２０１とバスマスタ２０３からの転送ジョブは速度性能目標が無い場合を例に説明する。
【００９４】
図１４に示す第２の実施形態のフローチャートは、図１０に示した第１の実施形態のフローチャートとほぼ同じであるため、異なる点を中心に説明する。ステップＳ１５０１からＳ１５０６までの処理は、第１の実施形態におけるステップＳ１１０１からＳ１１０６までの処理と同じであるため、説明を割愛する。
【００９５】
ステップＳ１５０７において、ＣＰＵ２０９は、実行するジョブ内容を確認し、競合するバスマスタ２０１〜２０３の転送が存在する場合には、当該転送について速度性能目標が無いか否かを判定する。ＣＰＵ２０９は、競合するバスマスタ２０１〜２０３の転送の速度性能目標が無いと判定した場合には、ステップＳ１５０８に処理を進め、競合するバスマスタ２０１〜２０３の転送の速度性能目標があると判定した場合には、ステップＳ１５０９に処理を進める。
【００９６】
ステップＳ１５０８において、クロック制御部２１１は、対応するクロック信号の周波数を低くするよう制御する。クロック制御部２１１は、クロック信号の周波数を低くする際には、クロック周波数選択テーブルより、現在の周波数として使用している周波数より一つ低い周波数を選択するよう制御する。例えば、バスマスタ２０１〜２０３の全ての転送が競合しているとする。ステップＳ１５０６において、バスマスタ２０２の第２のクロック信号の周波数を高くした場合、速度性能目標が無いバスマスタ２０１及び２０３の第１及び第３のクロック信号の周波数を低くするよう制御する。第１のクロック信号と第３のクロック信号の現在の周波数は、それぞれ、２５０ＭＨｚと１５０ＭＨｚが設定されている。クロック制御部２１１は、図５に示すクロック周波数選択テーブルにおいて、現在の周波数として設定されている周波数より一つ低い、２００ＭＨｚと１００ＭＨｚを変更後の周波数として選択する。
【００９７】
上記では、クロック制御部２１１は、使用可能な低い周波数の中から一番近い周波数を選択する例について説明した。それ以外にも、バスマスタ２０１及び２０３に対応する第１及び第３の目標帯域上限値を現状値より下げて、周波数算出部４４１及び４４３が変更後の周波数値を算出する方法でも良い。
【００９８】
ステップＳ１５０９からＳ１５１１までの処理は、第１の実施形態におけるステップＳ１１０７からＳ１１０９までの処理と同じであるため、説明を割愛する。ここで、バス制御装置１００において、クロック動作中に発生するダイナミック消費電力Ｐは、回路の負荷容量をＣ、電源電圧をＶｄｄ、動作クロック信号の周波数をＦとすると、式（２）で表せる。
Ｐ＝Ｃ×Ｖｄｄの２乗×Ｆ  ・・・（２）
【００９９】
式（２）よりわかるように、ダイナミック消費電力Ｐは、動作クロックの周波数Ｆに比例する。したがって、バスマスタ２０１〜２０３の転送が競合している際、バスマスタ２０２については、第２のクロック信号の周波数を２００ＭＨｚから３００ＭＨｚに高くする為、ダイナミック消費電力Ｐは１．５倍となる。一方、バスマスタ２０１については、第１のクロック信号を２５０ＭＨｚから２００ＭＨｚに低くする為、ダイナミック消費電力Ｐは１／２に低減する。また、バスマスタ２０３については、第３のクロック信号を１５０ＭＨｚから１００ＭＨｚに低くする為、ダイナミック消費電力Ｐは２／３に低減する。つまり、競合時に目標の帯域範囲内に復帰させるように、第２のクロック信号の周波数を高くする際に、速度性能目標が無いバスマスタ２０１及び２０３の周波数を低くすることにより、バス制御装置１００全体の消費電力を極力低減させることができる効果を奏する。
【０１００】
以上のように、バス制御装置１００は、速度性能目標がある通信を行うバスマスタ２０２と、速度性能目標が無い通信を行うバスマスタ２０１及び２０３を有する。ステップＳ１５０６において、クロック制御部２１１は、バスマスタ２０２の第２のクロック信号の周波数を高くする場合には、ステップＳ１５０７に処理を進める。ステップＳ１５０７において、クロック制御部２１１は、第２のクロック信号の周波数を高くするバスマスタ２０２に対して要求信号（バス使用要求信号）が競合し、かつ速度性能目標が無い通信を行うバスマスタ２０１及び２０３が存在するか否かを判定する。クロック制御部２１１は、存在する場合には、ステップＳ１５０８において、その速度性能目標が無い通信を行うバスマスタ２０１及び２０３の第１及び第３のクロック信号の周波数を低くする。
【０１０１】
図１５（ａ）及び（ｂ）は、第２の実施形態によるバス制御装置１００の効果を示すタイミングチャートである。図１５（ａ）は、第１の実施形態のバス制御装置１００における、バスマスタ２０２からバススレーブ２０８に対して転送を行っている途中より、バスマスタ２０１とバスマスタ２０３からの転送が競合する場合の一例を示すタイミングチャートである。図１５（ａ）に示すタイミングチャートは、図１３（ｂ）に示すタイミングチャートと同様である。図１５（ｂ）は、第２の実施形態のバス制御装置１００における、バスマスタ２０２からバススレーブ２０８に対して転送を行っている途中より、バスマスタ２０１とバスマスタ２０３からの転送が競合する場合の一例を示すタイミングチャートである。
【０１０２】
図１５（ｂ）に示す第２の実施形態のバス制御装置１００は、第２のクロック信号の周波数を高くするのと同時に、第１のクロック信号及び第３のクロック信号の周波数を低くするよう制御する。第１のクロック信号及び第３のクロック信号の周波数を低くすることにより、第１のバス要求信号及び第３のバス要求信号の発行の間隔が、第１の実施形態のバス制御装置１００に比べて広くなり、その分、第２のバス要求信号の発行の間隔が狭くなる。よって、バススレーブ２０８へ入力される転送の完了タイミング（ｔ１〜ｔ８の転送）の間隔も一層狭くなり、結果として、バスマスタ２０２からの転送の所要時間が短くなる。結果として、図１５（ａ）に示すバススレーブ２０８の転送完了タイミングｔ８より、図１５（ｂ）に示すバススレーブ２０８の転送完了タイミングｔ８が一層速くなる。
【０１０３】
以上説明したように、第２の実施形態のバス制御装置１００は、速度性能目標が無い転送に対応する第１及び第３のクロック信号の周波数を低くすることにより、バス制御装置１００全体の消費電力を低減するよう制御する。更に、速度性能目標がある転送に対応する第２のクロック信号の周波数は、目標の帯域範囲内に一層速く復帰するよう制御する。これにより、データ転送中にバスマスタ２０１〜２０３からの転送が競合した場合においても、消費電力を極力抑制しつつ、目標の速度性能を維持するよう制御することができる。
【０１０４】
第１及び第２の実施形態によれば、バス制御装置１００は、バスマスタ２０１〜２０３の第１〜第３のバス信号の帯域値を取得し、バスマスタ２０１〜２０３の第１〜第３のクロック信号を個別で変更する。クロック制御部２１１は、高速化が必要なバスマスタ２０２の第２のクロック信号の周波数を高くし、高速化が不要なバスマスタ２０１及び２０３の第１及び第３のクロック信号の周波数を低くすることができる。クロック制御部２１１は、第１〜第３のクロック信号のすべてを同じように制御するのではなく、第１〜第３のクロック信号を個別に制御することができる。バス制御装置１００は、転送中のバス帯域値を取得して、転送中のバス帯域値が目標の帯域範囲を下回る場合には、帯域値が下回ったバスマスタに対応するクロック信号の周波数を高くし、転送中のバス帯域値が目標の帯域範囲に復帰するよう制御する。これにより、複数のバスマスタ２０１〜２０３から同一のバススレーブ２０８に対するアクセスが競合し、バスの使用が待たされる場合でも、目標の速度性能を満たすよう制御することができる。
【０１０５】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１０６】
１００  バス制御装置、２０１〜２０３  バスマスタ、２０４〜２０６  帯域モニタ、２０７  バス調停部、２０８  バススレーブ、２０９  ＣＰＵ、２１０  基準クロック生成部、２１１  クロック制御部
【図１】
2019012459.tif 000003
【図２】
2019012459.tif 000004
【図３】
2019012459.tif 000005
【図４】
2019012459.tif 000006
【図５】
2019012459.tif 000007
【図６】
2019012459.tif 000008
【図７】
2019012459.tif 000009
【図８】
2019012459.tif 000010
【図９】
2019012459.tif 000011
【図１０】
2019012459.tif 000012
【図１１】
2019012459.tif 000013
【図１２】
2019012459.tif 000014
【図１３】
2019012459.tif 000015
【図１４】
2019012459.tif 000016
【図１５】
2019012459.tif 000017