(57)【要約】【課題】  制御対象の稼動状態の観測結果に応じた動作周波数制御において、動作周波数を制限したり許容値等を指定できるようにし、性能の向上や省電力化等を実現する。【解決手段】  周波数制御装置１において、可変制御される周波数に基いて動作する制御対象２の稼動状態を観測する観測手段３と、稼動状態に応じてクロック周波数を決定する周波数決定手段４と、周波数決定手段４により決定されるクロック周波数について、その範囲又は値を制限する周波数制限手段５を設ける。制御対象２の稼動状態に応じて決定される周波数が許容範囲である場合には、該周波数に従って制御を行うが、周波数が許容範囲外である場合等において周波数を制限できるように構成した。【選択図】        図１
2004355599.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の稼動状態を観測して、該制御対象の動作周波数を制御する周波数制御装置において、
上記制御対象の稼動状態に応じて上記動作周波数を決定する周波数決定手段と、
上記周波数決定手段により決定される上記動作周波数について、その範囲又は値を制限する周波数制限手段を備えている
ことを特徴とする周波数制御装置。
【請求項２】
請求項１に記載の周波数制御装置において、
上記制御対象に供給されてその動作周波数を規定するためのクロック信号の周波数が、予め規定され若しくは指定された周波数範囲又は周波数値でない場合に、上記周波数制限手段によって、上記クロック信号の周波数が上記周波数範囲又は周波数値に制限される
ことを特徴とする周波数制御装置。
【請求項３】
請求項２に記載の周波数制御装置において、
上記周波数制限手段が、上記クロック信号の周波数の上限又は下限の閾値を設定する閾値設定手段を備えている
ことを特徴とする周波数制御装置。
【請求項４】
請求項３に記載の周波数制御装置において、
上記閾値設定手段として、プログラムの実行により閾値を動的に変更することができる周波数設定用レジスタを有する
ことを特徴とする周波数制御装置。
【請求項５】
請求項３に記載の周波数制御装置において、
上記閾値設定手段によって上限及び下限の閾値を同時に設定することにより、上記クロック信号の周波数幅が制限される
ことを特徴とする周波数制御装置。
【請求項６】
請求項５に記載の周波数制御装置において、
上記閾値設定手段によって、上限及び下限の閾値を同じ値に設定することにより、上記クロック信号の周波数が一定値に制限される
ことを特徴とする周波数制御装置。
【請求項７】
請求項２に記載の周波数制御装置において、
上記周波数制限手段が、上記クロック信号の周波数を指定するための周波数指定手段を備えている
ことを特徴とする周波数制御装置。
【請求項８】
請求項１に記載の周波数制御装置において、
一定時間毎に上記制御対象の稼動状態を観測して、該稼動状態に基いて上記周波数決定手段が動作周波数を決定する
ことを特徴とする周波数制御装置。
【請求項９】
請求項１に記載の周波数制御装置において、
上記制御対象が、複数のクロック周波数のうち設定された周波数に基いて動作する演算処理用デバイスである
ことを特徴とする周波数制御装置。
【請求項１０】
随時に可変設定される周波数に基いて動作する対象デバイスの稼動状態を観測して、該対象デバイスに供給されるクロック信号の周波数を制御する情報処理装置において、
上記対象デバイスの稼動状態に応じて上記周波数を決定する周波数決定手段と、
上記周波数決定手段により決定される上記周波数について、その範囲又は値を制限する周波数制限手段を備えている
ことを特徴とする情報処理装置。
【請求項１１】
請求項１０に記載の情報処理装置において、
上記対象デバイスに供給されるクロック信号の周波数が、予め規定され若しくは指定された周波数範囲又は周波数値でない場合に、上記周波数制限手段によって、上記クロック信号の周波数が上記周波数範囲又は周波数値に制限される
ことを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置において、
上記周波数制限手段が、上記クロック信号の周波数の上限又は下限の閾値を設定する閾値設定手段を備えている
ことを特徴とする情報処理装置。
【請求項１３】
請求項１２に記載の情報処理装置において、
上記閾値設定手段として、プログラムの実行により閾値を動的に変更することができる周波数設定用レジスタを有する
ことを特徴とする情報処理装置。
【請求項１４】
請求項１３に記載の情報処理装置において、
上記閾値設定手段によって上限及び下限の閾値を同時に設定することにより、上記クロック信号の周波数幅が制限される
ことを特徴とする情報処理装置。
【請求項１５】
請求項１４に記載の情報処理装置において、
上記閾値設定手段によって、上限及び下限の閾値を同じ値に設定することにより、上記クロック信号の周波数が一定値に制限される
ことを特徴とする情報処理装置。
【請求項１６】
請求項１１に記載の情報処理装置において、
上記周波数制限手段が、上記クロック信号の周波数を指定するための周波数指定手段を備えている
ことを特徴とする情報処理装置。
【請求項１７】
請求項１０に記載の情報処理装置において、
一定時間毎に上記対象デバイスの稼動状態を観測して、該稼動状態に基いて上記周波数決定手段がクロック周波数を決定する
ことを特徴とする情報処理装置。
【請求項１８】
請求項１０に記載の情報処理装置において、
上記対象デバイスが演算処理用デバイスである
ことを特徴とする情報処理装置。
【請求項１９】
制御対象の稼動状態を観測して、該制御対象の動作周波数を制御するための装置に用いられて機能するプログラムにおいて、
負荷の特性又は処理の精度に合わせて上記動作周波数を制限するための制限値を、起動の際又は起動後に設定するステップを有する
ことを特徴とするプログラム。
【請求項２０】
請求項１９に記載したプログラムにおいて、
起動の際又は起動後に行われた動作周波数の制限に係る設定を解除し又は再設定するステップを有する
ことを特徴とするプログラム。
【請求項２１】
請求項４に記載した周波数制御装置において、
動作中の各プログラムからその動作に応じた上記クロック信号の周波数について要求される情報の通知を受けて、該情報を統一的に管理する周波数管理手段を設け、該周波数管理手段の設定指令に基づき上記閾値設定手段によって上記クロック信号の周波数範囲又は周波数値が規定される
ことを特徴とする周波数制御装置。
【請求項２２】
請求項２１に記載した周波数制御装置において、
動作中の各プログラムから、上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報の通知を上記周波数管理手段が受けた場合に、各情報のうち最高の周波数値を採用して上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする周波数制御装置。
【請求項２３】
請求項２１に記載した周波数制御装置において、
動作中の各プログラムから、上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報の通知を上記周波数管理手段が受けた場合に、各情報の周波数値を加算した周波数値を採用して上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする周波数制御装置。
【請求項２４】
請求項２１に記載した周波数制御装置において、
あるプログラムが終了した場合には、該プログラムの終了が上記周波数管理手段に通知されて、動作中の他のプログラムから上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報に基づいて上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする周波数制御装置。
【請求項２５】
請求項２３に記載した周波数制御装置において、
上記プログラムに係るプロセス又はスレッドで必要とされる上記クロック信号の周波数が予め登録されており、動作中の各プログラムに関して、新たにプロセス又はスレッドを起動する前に、該プロセス又はスレッドを含む全体に係る周波数の加算総計値を上記周波数管理手段が算出した上で周波数設定を行い、また、起動された上記プロセス又はスレッドが終了した場合にはその終了直後にその周波数を上記周波数管理手段が上記加算総計値から減算する
ことを特徴とする周波数制御装置。
【請求項２６】
請求項１３に記載した情報処理装置において、
動作中の各プログラムからその動作に応じた上記クロック信号の周波数について要求される情報の通知を受けて、該情報を統一的に管理する周波数管理手段を設け、該周波数管理手段の設定指令に基づき上記閾値設定手段によって上記クロック信号の周波数範囲又は周波数値が規定される
ことを特徴とする情報処理装置。
【請求項２７】
請求項２６に記載した情報処理装置において、
動作中の各プログラムから、上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報の通知を上記周波数管理手段が受けた場合に、各情報のうち最高の周波数値を採用して上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする情報処理装置。
【請求項２８】
請求項２６に記載した情報処理装置において、
動作中の各プログラムから、上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報の通知を上記周波数管理手段が受けた場合に、各情報の周波数値を加算した周波数値を採用して上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする情報処理装置。
【請求項２９】
請求項２６に記載した情報処理装置において、
あるプログラムが終了した場合には、該プログラムの終了が周波数管理手段に通知されて、動作中の他のプログラムから上記クロック信号の周波数について要求される下限周波数値又は上限周波数値を含む情報に基づいて上記クロック信号の周波数範囲又は周波数値が決定される
ことを特徴とする情報処理装置。
【請求項３０】
請求項２８に記載した情報処理装置において、
上記プログラムに係るプロセス又はスレッドで必要とされる上記クロック信号の周波数が予め登録されており、動作中の各プログラムに関して、新たにプロセス又はスレッドを起動する前に、該プロセス又はスレッドを含む全体に係る周波数の加算総計値を上記周波数管理手段が算出した上で周波数設定を行い、また、起動された上記プロセス又はスレッドが終了した場合にはその終了直後にその周波数を上記周波数管理手段が上記加算総計値から減算する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象の稼動状態を観測して動作周波数を適正に制御するための技術に関する。
【背景技術】
【０００２】
電子回路システムにおける消費電力は、該システムを稼動するための電源電圧やクロック周波数に左右される（電源電圧の２乗に比例し、クロックの周波数に比例する。）が、コンピュータ等の情報処理装置では稼動状態や負荷状況が一定ではない。例えば、処理すべきタスクが存在する場合にシステムが動作し、タスク処理後に、別のタスクが存在しない場合に待機状態となるようにシステムステートを遷移させる構成形態が知られている。
【０００３】
システムの稼動状態を観測してクロック等を制御することで無駄な消費電力を削減する方法として、システムが待機状態になったことを検出してクロック周波数を低減させる方法（例えば、特許文献１参照）や、バスの負荷状況を計測して所定時間内でのバスアクセス率を計算し、該アクセス率に応じてクロックを切り替える方法（例えば、特許文献２参照）が挙げられる。
【０００４】
尚、システムが待機状態と動作状態を頻繁に繰り返す場合に、その都度、クロック周波数の切替処理を行う必要が生じる等の問題、あるいは、バスの負荷状況を監視するための回路を必要があること及び必ずしもバスの負荷状況とシステムの負荷状況とが一致するとは限らず汎用性に問題があること等への対策として、本願出願人は、特願２００１−３４３０４２号にて、システムの稼動状態の割合に応じてクロック周波数を自動的に変更することができ、システムの消費電力をアクティビティ（所定時間においてターゲット回路が稼動している状態の割合）に応じて最適な制御を実現することで、汎用性が高く、システムの負荷を軽減できるようにした構成形態を提案している。
【０００５】
【特許文献１】特開平１１−２１９２３７号公報
【０００６】
【特許文献２】特開平１１−１８４５５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、従来の装置では、システムの稼動状態にとって適正な動作周波数を決定するための制御に関して、設計上の自由度等に問題がある。
【０００８】
例えば、ターゲット回路（周波数制御対象）の稼動状態を監視するために観測回路等を設けた構成形態において、クロック周波数の観測結果から一定の回路計算により最適なクロック周波数を算出するためのハードウェア構成を備えている場合に、精度や負荷自体の特性等に対して充分な配慮をもって周波数制御を行うことが難しい。システム（コンピュータ機器等）において処理すべき仕事（タスク）には、とにかく早く終わらせたい仕事（通常の計算処理や検索処理等）や、一定の負荷しかかからない仕事であって、早く終わらせなくてもいい仕事（例えば、音楽再生や動画再生）等、各種の状況が想定されるため、それらの全てについて、最適な周波数を決定するための構成を実現することは殆ど不可能であるか、あるいはハードウェアの実装面において非常に複雑な構成や処理を強いられるため、コストや設計面で問題が残る。つまり、制御対象に係る動作周波数の制御によって高性能化や省電力化の効果を充分に発揮させるためには、時々刻々と変化する状況に応じて適切な動作周波数を決定することが必要であるが、各種状況に応じて周波数決定の考え方やアルゴリズムを変える必要性が生じたり、大幅な設計変更等を余儀なくされる場合がある（制御ロジックにおいて工夫が必要となる等）。
【０００９】
そこで、本発明は、制御対象の稼動状態の観測結果に応じた動作周波数制御において、動作周波数を制限したり許容値等を指定できるように構成し、性能の向上や省電力化等を実現することを課題とする。
【課題を解決するための手段】
【００１０】
本発明に係る周波数制御装置は、制御対象の稼動状態（稼動状況）に応じて動作周波数を決定する周波数決定手段と、周波数決定手段により決定される動作周波数についてその範囲又は値を制限する周波数制限手段を備えたものである。
【００１１】
また、本発明に係る情報処理装置は、随時に可変設定される周波数に基いて動作する対象デバイスの稼動状態を観測し、該対象デバイスの稼動状態に応じてクロック周波数を決定する周波数決定手段と、周波数決定手段により決定されるクロック周波数について、その範囲又は値を制限する周波数制限手段を備えたものである。
【００１２】
さらには、上記構成において下記の手段を設けることができる。
【００１３】
・クロック信号の周波数の上限又は下限の閾値を設定する閾値設定手段
・プログラムの実行により閾値を動的に変更することができる周波数設定用レジスタ
・クロック信号の周波数を指定するための周波数指定手段
・動作中の各プログラムからその動作に応じたクロック信号の周波数について要求される情報の通知を受けて該情報を統一的に管理する周波数管理手段。
【００１４】
従って、これらの発明によれば、制御対象の稼動状態に応じて決定される周波数が許容範囲又は許容値である場合には、該周波数に従って制御を行うが、周波数が許容範囲外である場合等において、該周波数を制限することで、制御の適正化を図り、予期せぬ事態の発生を未然に防止することができる。
【００１５】
また、本発明に係るプログラムは、制御対象の稼動状態を観測しその動作周波数を制御するための装置に用いられ、負荷の特性又は処理の精度に合わせて動作周波数を制限するための制限値を、起動の際又は起動後に設定するステップを有している。
【００１６】
従って、この発明によれば、プログラムの実行によって周波数を制限することができ、処理すべき仕事の性質等に応じて柔軟な周波数制御を実現することができる。
【発明の効果】
【００１７】
本発明に係る周波数制御装置や情報処理装置によれば、制御対象に係る動作周波数について制限を加えるための手段を講じることによって、負荷の特性等に応じて適正な周波数制御が行われるように保証し、性能の向上や省電力化を実現することが可能である。しかも、そのために装置構成の大幅な設計変更等を伴うことがない。
【００１８】
また、動作周波数が、予め規定され若しくは指定された周波数範囲を逸脱しないように制限したり、あるいは予期しない周波数値を無効化することができる。
【００１９】
そして、上記閾値設定手段を設けることで、クロック周波数の上限や下限を規制することができる。
【００２０】
さらには、上記周波数設定用レジスタを設けることにより、ソフトウェアにより閾値設定を行えるので、制御の柔軟性が高い。また、既存のハードウェア構成を大幅に変更せずに済む。
【００２１】
そして、上下限値の同時設定により、クロック周波数の許容幅を随時に制限することができる。
【００２２】
また、上下限値を同じ値に設定し、あるいはクロック周波数を特定の値に指定することで、目的別の周波数制御が可能となる（例えば、性能を重視して周波数を高くしたい場合等）。
【００２３】
制御対象の稼動状態を定期的に観測することにより、その観測結果に基づいて動作周波数を適正に制御することができる。
【００２４】
また、演算処理用デバイスへの適用において、その処理能力を十分にひき出したり、あるいは処理にとって必要十分なクロック周波数を設定することで消費電力を低減させることができる。
【００２５】
クロック信号の周波数情報を統一的に管理する周波数管理手段を設けることによって、複数のプログラムを動作させた場合に状況を把握して最適な周波数設定を行うことができる。その際、最も高い周波数値の情報に合わせて周波数を動的に設定し、又は各周波数値を加算した情報に合わせて周波数を動的に設定することができ、プログラムの終了によって周波数範囲又は周波数値の設定を自動的に更新することが可能である。
【００２６】
そして、動作中のプログラムに関して、プロセス又はスレッドを起動する前や終了した後に、周波数設定を変更できるように構成することにより、精緻かつ迅速な周波数設定が可能である。
【００２７】
本発明に係るプログラムによれば、最適な周波数値や周波数範囲を指定できるので、性能低下や消費電力の増加等を防止することができる。また、プログラムによる動作周波数制限の設定が、該プログラムの終了後の処理に波及して悪影響を及ぼさないようにすることができる。
【発明を実施するための最良の形態】
【００２８】
図１は本発明に係る基本構成例を概念的に示したものであり、周波数制御装置１の制御対象２としては、その動作周波数について制御が可能であることが前提とされる。例えば、複数のクロック周波数のうち設定された周波数に基いて動作する演算処理用デバイスとして、ＣＰＵ（中央処理装置）、コプロセッサあるいは撮像素子等が挙げられる。
【００２９】
周波数制御装置１は、制御対象２の稼動状態を観測するために観測手段３を有し、制御対象２の動作周波数を制御する。
【００３０】
周波数決定手段４は、観測手段３によって観測される制御対象２の稼動状態に応じて動作周波数を決定するために設けられている。つまり、制御対象２を観測して得られる情報に基いて、周波数決定手段４により、現在の状態にとって最適と推定され又は予測される周波数が算定される（尚、具体的な算定方法については後で詳述する。）。
【００３１】
周波数決定手段４の出力は、周波数制限手段５を介して制御手段６に送出される。
【００３２】
周波数制限手段５は、周波数決定手段４により決定される動作周波数について、その範囲又は値を制限するために設けられている。即ち、周波数決定手段４によって決定される動作周波数をそのまま制御手段６に通知しても良いか否かについて検閲し、例えば、動作周波数が許容範囲を逸脱している場合には該周波数を制限する。
【００３３】
制御対象２としてＣＰＵ等を想定した場合において、ＣＰＵ等に供給されてその動作周波数を規定するためのクロック信号の周波数（観測結果に基いて周波数決定手段４により決定されるクロック周波数）が、予め規定され若しくは指定された周波数範囲又は周波数値でない場合において、周波数制限手段５は、クロック信号の周波数を、所定の周波数範囲又は周波数値に制限する役目をもつ。例えば、周波数が許容範囲の上限値を超えていると判断した場合には、周波数を上限値以下に制限し、又は周波数が許容範囲の下限値を下回っていると判断した場合には、周波数を下限値以上に制限する。この場合に、クロック信号の周波数についてその上限又は下限の各閾値、あるいは上限及び下限の両閾値を設定するための閾値設定手段を周波数制限手段５が備えている。
【００３４】
制御手段６は、周波数制限手段５の出力を受けて制御対象２の動作周波数を制御するものである。例えば、周波数制限手段５からの周波数情報をもとにクロック信号（システムクロック）を生成して制御対象２に供給するためのクロック信号供給回路等が用いられる。
【００３５】
また、電源供給手段７は、周波数制限手段５の出力を受けて制御対象２の動作周波数に見合った電源電圧を、周波数制御装置１や該周波数制御装置１を含むシステムの各部に供給するものであり、クロック周波数に適合した電源電圧の供給に必要とされる。
【００３６】
周波数決定手段４はシステムのハードウェアを構成しているが、制御対象２に係る動作周波数の決定処理を全てハードウェアに委ね、決定された周波数情報の指示をそのまま制御手段６に送ったのでは、周波数制御において柔軟性が得られない。そこで、ハードウェアが決定する周波数情報に対して、例えば、周波数の上限を制限する機構や下限を制限する機構を設け、周波数が許容範囲を逸脱しないように、強制的に周波数を変更してしまうことが望ましい。そして、これら上限値や下限値については、ソフトウェアにより動的に変更できるように構成し、また、制限機構を有効にするか又は無効にするかをソフトウェアにより指定できるように構成する。そのためには、上限又は下限の閾値設定手段として、プログラムの実行により閾値を動的に変更することができる周波数設定用レジスタを使用すれば良く、各閾値については、プログラムの解釈・実行手段（ＣＰＵ）からみた場合に、レジスタ値とされ、その値を変更することで上記の機構が実現される。
【００３７】
尚、閾値設定の形態には、下記に示す例が挙げられる。
【００３８】
・上限及び下限の閾値を同時に設定して、クロック信号の周波数幅を制限する形態
・上限及び下限の閾値を同じ値に設定して、クロック信号の周波数を一定値に固定する形態（周波数を固定値にすることで、ハードウェアによる周波数自動変更を、一時的に無効化することができる。）。
【００３９】
この他、クロック信号の周波数を指定するための周波数指定手段（周波数指定レジスタ等）を設ける構成を採用した場合には、クロック周波数の値を直接設定し、クロック周波数を決定する周波数決定手段４により計算されるクロック周波数を無効化して、該周波数をソフトウェアや外部ハードウェア等で指定することができる。
【００４０】
以上の機構により、例えば、以下に示すような制御が可能となる。
【００４１】
・観測手段３からの情報に基いて周波数決定手段４が現在の周波数を上（下）げると判断した場合でも、それを無効化して、周波数をソフトウェア等で設定可能な一定値より上（下）げないように制御すること。
【００４２】
・観測手段３からの情報に基いて周波数決定手段４が決定する周波数を、一時的に無効化してソフトウェア等による固定周波数あるいは可変周波数での制御を行うこと。
【００４３】
次に、制御対象２の稼動状態を観測して、制御対象２の動作周波数を制御するための装置に用いられて機能するプログラムについて説明する。例えば、ユーティリティやアプリケーション、ＯＳ（Operating System）等の基本ソフトウェアにおいて機能を実現するプログラム等に適用することができる。
【００４４】
図２は、アプリケーション（プログラム）の起動時や終了時に、上記制御を行うか否かを判断して、適切な周波数値を設定する場合の処理例を概略的に示している。該アプリケーションを起動することにより、その動作中（プログラム実行中）におけるシステムの動作や性能、消費電力等について最適化することができる。
【００４５】
先ず、アプリケーションを起動する際には、ステップＳ１で該アプリケーションの起動要求がなされた後、次ステップＳ２に示す周波数制限の設定処理に進む。つまり、負荷の特性や処理の精度等に合わせてクロック周波数（動作周波数）を制限するための制限値を設定する。例えば、音楽再生や動画再生等を行う場合において、周波数決定回路によって必要以上にクロック周波数が上がったり、下がったりしないように、ソフトウェア処理で一時的に制限することにより、性能の向上や消費電力の低減が可能となる。
【００４６】
次ステップＳ３においてアプリケーションが起動されて、その後動作中となり、所定のプログラム処理が行われる。
【００４７】
そして、アプリケーションの終了の際には、ステップＳ４で該アプリケーションの終了要求がなされた後、次ステップＳ５に示す周波数制限の再設定又は解除処理に進む。つまり、アプリケーション起動の際に行われた周波数制限を解除したり、あるいは、稼動状態に応じた適正な周波数が得られるように再設定を行う。それからステップＳ６にてアプリケーションが終了する。
【００４８】
尚、本例に示す上記ステップＳ２、Ｓ５の処理については、ＯＳやデバイスドライバ、ライブラリ（サブルーチン群）等によって行われるが、以上の処理については、アプリケーション自身が行うことも可能であり、その場合には、ステップＳ２とＳ３の順序が逆になり、アプリケーションの起動後に周波数制限の設定が適時に行われる（また、ステップＳ５については、アプリケーションの終了時に限らず、処理内容や負荷の軽重等を考慮して必要に応じてアプリケーションの動作中に行うことが可能である。）。
【００４９】
これらの制御は、例えば、以下に示すようなケースで行われる。
【００５０】
・ハードウェアとして一定周波数が必要とされる回路を動作させるときだけに、その周波数を最低周波数に設定して回路を動作させるとともに、回路を動作させないときには、その制限を解除し、さらに低い周波数の設定を行えるようにする場合。
【００５１】
・低い（又は高い）周波数領域では動作しないハードウェアに対して、動作周波数を適切な設定範囲に制限する場合。
【００５２】
・オーディオ信号やビデオ信号のデコード又はエンコード等のように、ソフトウェアとして最低動作周波数の要求や、最高動作周波数の要求が明らかであるものを動作させるときに、周波数制限を行うことにより、周波数の不用意な変更を防ぐ場合や、アプリケーション動作時に周波数が不用意に上昇又は下降しないように防止する場合。
【００５３】
・性能や処理速度等が要求されるようなアプリケーションを動作させる場合に、所望の周波数を指定したり、最低周波数（下限）を高い値に設定することによって、消費電力の増加を容認してまでも性能を向上させたい場合（例えば、装置への着脱が可能な半導体メモリ媒体へのデータ書き込みやデータ読み出し等）。
【実施例】
【００５４】
本発明に係る実施の一例について説明する。尚、本例に示す情報処理装置としては、例えば、コンピュータ機器や、ＰＤＡ(Personal Digital Assistance)、移動体通信端末装置、映像機器や撮像機器等への適用が可能である。
【００５５】
図３は、情報処理装置１０の要部について構成例を示したブロック図である。
【００５６】
制御対象であるターゲット回路には、ＣＰＵ１１が用いられており、上記観測手段３を構成するタイマ１２、カウンタ１３と、上記周波数決定手段４を構成する制御回路１４が設けられている。また、クロック供給回路１５が上記制御手段６を構成し、電源電圧供給回路１６が上記電源供給手段７を構成している。尚、本例ではタイマ１２、カウンタ１３、制御回路１４、クロック供給回路１５により周波数制御回路が構成される。
【００５７】
ＣＰＵ１１は、複数のクロック周波数のうち随時設定される周波数に基いて動作し、後述するように、多階調（段階）のクロック周波数を生成することができるクロック供給回路１５から供給されるシステムクロック「ＳＹＳＣＬＫ」に同期して動作する（例えば、待機状態と稼動状態を繰り返しながら、所望のタスクを処理する。）。
【００５８】
ＣＰＵ１１は、これが動作状態にあるときに、アクティブであることを示す１ビットのフラグ（以下、「アクティビティフラグ」と呼び、「ＡＣＦＬＧ」と記す。）がセットされるアクティビティフラグレジスタ１１１を有する。アクティビティフラグレジスタ１１１には、例えば、ＣＰＵ１１が稼働している状態のときに論理値「１」がセットされ、待機状態のときに非アクティブを示す論理値「０」がセットされる。
【００５９】
そして、ＣＰＵ１１は、ＡＣＦＬＧレジスタ１１１にセットされるＡＣＦＬＧをカウンタ１３に送ることにより、その稼動状態を通知する。
【００６０】
ＣＰＵ１１のアクティビティ（所定時間における稼動状態の割合）を計測するための計測時間Ｔは、タイマ１２により計測される。
【００６１】
タイマ１２は、周波数が固定のクロック信号（これを「ＦＸＣＬＫ」と記す。）に同期して動作することにより、一定の時間を計測し、計測結果をその都度、信号「Ｓ１２」としてカウンタ１３及び制御回路１４に出力する。
【００６２】
図４はタイマ１２について構成例を示す図であり、カウンタ１２１、コンペアレジスタ１２２、コンパレータ１２３を有している。
【００６３】
カウンタ１２１は、「ＣＬＫ」で示すクロック信号を計数して、そのカウント値（これを「ＶＣＮＴ」と記す。）をコンパレータ１２３に送る。また、コンペアレジスタ１２２で保持される比較値（これを「ＶＣＭＰ」と記す。）がコンパレータ１２３に送られ、カウント値ＶＣＮＴと比較値ＶＣＭＰとが比較される。
【００６４】
タイマ１２において、比較値ＶＣＭＰは制御回路１４からの信号Ｓ１４１により設定され、カウント値ＶＣＮＴが比較値ＶＣＭＰと一致した時点で、該一致を報知する一致信号Ｓ１２がコンパレータ１２３からカウンタ１３及び制御回路１４に出力されるとともに、該信号Ｓ１２がカウンタ１２１のリセット端子に送られてカウント値がクリアされる。こうして、比較値ＶＣＭＰに相当する計測時間Ｔに従い、一定の周期で一致信号Ｓ１２が出力される。
【００６５】
図３に示すカウンタ１３は、ＣＰＵ１１のアクティビティを計測するための回路であり、システムクロックＳＹＳＣＬＫに同期して動作し、ＣＰＵ１１のＡＣＦＬＧに従い、ＣＰＵ１１が動作しているときにＳＹＳＣＬＫのパルスをカウントし、このカウント値を信号「Ｓ１３」として制御回路１４に出力する。
【００６６】
図５はカウンタ１３の構成例を示す図である。
【００６７】
ＡＣＦＬＧによるイネーブル（ＥＮ）信号がカウンタ１３に与えられ、ＡＣＦＬＧが論理値「１」を示す状態のときに、ＳＹＳＣＬＫに同期してアップカウント動作が行われる（加算）。また、カウンタ１３は、タイマ１２からの一致信号Ｓ１２をクリア信号として受けて、一致信号Ｓ１２が入力される度にカウント値が初期化される。
【００６８】
図６はカウンタ１３の動作を説明するためのタイミングチャート図であり、ＳＹＳＣＬＫを（Ａ）図に、ＡＣＦＬＧを（Ｂ）図に、カウンタ１３の状態を（Ｃ）図にそれぞれ示している。
【００６９】
カウンタ１３では、図６（Ｃ）に示すように、タイマ１２から計測時間Ｔごとに送られてくる一致信号Ｓ１２に従い、カウント値が初期化される。
【００７０】
図６（Ｂ）に示すように、ＣＰＵ１１によるＡＣＦＬＧの値が、ＣＰＵ１１の動作状態を示しているとき（本例では、ＡＣＦＬＧが論理値「１」を示すとき）にカウント動作（加算処理）が行われる。
【００７１】
一方、ＣＰＵ１１によるＡＣＦＬＧの値が、ＣＰＵ１１の待機状態を示しているとき（本例では、ＡＣＦＬＧが論理値「０」を示すとき) にはカウント動作が停止される。
【００７２】
図３に示す制御回路１４は、一定時間毎に観測されるＣＰＵ１１の稼動状態に基いてＳＹＳＣＬＫの周波数を決定するために設けられている。本回路は、タイマ１２からの一致信号Ｓ１２に同期してカウンタ１３からの信号Ｓ１３をとりこみ、計測時間ＴにおけるＣＰＵ１１のアクティビティ（これを「ＡＣＴ」と記す。）を計測する。そして、計測したＡＣＴに基づき次に設定すべきＳＹＳＣＬＫの周波数を決定する。
【００７３】
ＣＰＵ１１の稼動状態に応じて決定されるクロック周波数に対して、その上限や下限の閾値を設定するための閾値設定手段１７が設けられており、上記周波数制限手段５を構成している。本例では、プログラムの実行により閾値を動的に変更することができる周波数設定用レジスタ１７Ｕ、１７Ｌが設けられている。つまり、レジスタ１７Ｕが上限周波数設定用とされ、レジスタ１７Ｌが下限周波数設定用とされ、ＣＰＵ１１によるコマンド実行結果として出力ポート経由で設定される、それらのレジスタ値が制御回路１４で参照される。周波数の上限や下限を指定するレジスタを設けることにより、周波数制御回路において算出される周波数の上限や下限を制限する（クロック周波数を、上限及び下限に示す範囲内に規制する。）。あるいは、上限と下限を同じ値に規定して特定の周波数が得られるように一時的に固定するといった制御を、ソフトウェア処理によって行えるので、状況に応じた柔軟な周波数制御が可能となる。
【００７４】
制御回路１４は、こうして決定された周波数をもつＳＹＳＣＬＫをＣＰＵ１１やカウンタ１３に供給するための制御信号「Ｓ１４２」をクロック供給回路１５に出力し、また、上述したように、タイマ１２のコンペアレジスタ１２２に設定すべき比較値ＶＣＭＰの信号Ｓ１４１をタイマ１２に出力する。
【００７５】
尚、クロック周波数をソフトウェアにより直接指定するための周波数指定手段１８として、周波数指定用レジスタを設けた構成形態では、ＣＰＵ１１によるコマンド実行結果として設定されるレジスタ値に対応する周波数が制御回路１４において決定され、この場合、ＡＣＴの計測結果に基づいて決定される周波数については無効化される（図３には便宜上、レジスタ１７Ｕ、１７Ｌを用いる形態と、レジスタ１８を用いる形態について併せて示している。）。但し、周波数を上げたい場合に指定された周波数値にいきなり変更できないときには、指定周波数値を徐々に変化させて目的値に近づける等の配慮が必要である（このことは、レジスタ１７Ｕ、１７Ｌを用いて特定の周波数を指定する形態でも同様であり、周波数幅を徐々に狭めていってゼロに漸近させるといった処理を行えば良い）。
【００７６】
また、上記のような周波数制限や周波数指定に係る設定をソフトウェアにより解除するためには、例えば、レジスタ値として特別な値をセットするか、あるいは数値的に制限の意味をもたない値（最高許容周波数を超える値やゼロ等）をセットする等の方法を用いれば良い。
【００７７】
クロック供給回路１５は、異なる周波数のクロック信号を生成してＣＰＵ１１等に送出する回路である。本回路はＳＹＳＣＬＫとして多階調（段階）のクロック周波数の信号を生成することが可能であり、制御回路１４からの制御信号Ｓ１４２により指示されたクロック周波数をもつＳＹＳＣＬＫを、ＣＰＵ１１、カウンタ１３に供給する。尚、多階調のクロック周波数を得るための構成としては、周波数に係る複数の選択肢（クロック信号）から１つを選択する形態や、クロック発振回路における周波数値の設定を任意に変更できるようにした形態、例えば、複数の周波数を時間的に組み合わせて各周波数のクロック信号を決められた時間間隔で切り替える（所定時間に亘る平均周波数値を制御する）形態等が挙げられる。
【００７８】
図７はクロック供給回路１５の構成例を示す図である。
【００７９】
本例では、所定周波数のクロック信号を発振する位相同期ループ回路（ＰＬＬ回路）１５１と、分周器１５２、セレクタ１５３が用いられる。
【００８０】
ＰＬＬ回路１５１から分周器１５２に送られたクロック信号は、異なる分周比に従って、複数（本例では、４つのクロック周波数ｆ０、ｆ１、ｆ２、ｆ３を示す。）のクロック信号が生成される。
【００８１】
セレクタ１５３は、制御回路１４からの制御信号Ｓ１４２により指示されたクロック周波数をもつＳＹＳＣＬＫを選択して出力する。
【００８２】
例えば、ＰＬＬ回路１５１から分周器１５２に、周波数３００ＭＨｚのクロック信号が供給され、分周比が、１／３、１／４、１／６、１／１２にそれぞれ規定されている場合、クロック分周により、ｆ０（＝１００ＭＨｚ）、ｆ１（＝７５ＭＨｚ）、ｆ２（＝５０ＭＨｚ）、ｆ３（＝２５ＭＨｚ）のクロック周波数のいずれかがセレクタ１５３で選択され、ＳＹＳＣＬＫとして出力される。尚、各周波数を組み合わせた制御では、例えば、ｆ１をｔ１秒間選択し、ｆ２をｔ２秒間選択することを繰り返し行うことで、「（ｆ１・ｔ１＋ｆ２・ｔ２）／（ｔ１＋ｔ２）」といった中間的な周波数を設定することが可能である。
【００８３】
制御回路１４の制御信号Ｓ１４２は、クロック供給回路１５の他、電源電圧供給回路１６（図３参照）にも送られる。つまり、クロック供給回路１５に指示された周波数においてシステムの動作を保証するために必要な最低の電源電圧（これを「ＶDD」と記す。）をシステムの各部に供給する（制御信号Ｓ１４２の指示に従い、電源電圧ＶDDを変化させ、あるいは維持する。）。
【００８４】
次に、制御回路１４において、システムの周波数決定にある程度のマージンを考慮し、クロック供給回路１５で多階調の周波数の刻みを考慮した場合の動作について、先ず、図８のフローチャート図に従って説明する。
【００８５】
ＣＰＵ１１は、多階調のクロック周波数を生成することができるクロック供給回路１５から供給されるシステムクロックＳＹＳＣＬＫに同期して動作し、待機状態と稼動状態を繰り返しながら、所望のタスクを処理している。先ず、ステップＳＴ１では、上記アクティビティＡＣＴを計測する。
【００８６】
処理手順をまとめると下記のようになる。
【００８７】
（１）ＣＰＵ１１が動作状態にあるときに、ＡＣＦＬＧがレジスタ１１１にセット（論理値「１」）され、また、待機状態のときには、レジスタ１１１にＡＣＦＬＧがクリア（論理値「０」）される
（２）レジスタ１１１の値がカウンタ１３に送出されて稼動状態が通知される
（３）タイマ１２からの計測時間Ｔを示す信号Ｓ１２を受けて、カウンタ１３では、ＡＣＦＬＧの示す値に従って計数動作を行う（即ち、ＣＰＵ１１が動作状態の期間中、ＳＹＳＣＬＫをカウントする。）
（４）カウント値を制御回路１４に出力し、制御回路１４が、所定の計測時間ＴにおいてＣＰＵ１１が動作していた時間の占める割合（つまり、システムのＡＣＴ）を算出する。
【００８８】
次のステップＳＴ２では、得られたアクティビティＡＣＴを第一の閾値（現在の周波数「ｆｃ」からマージン「ＭＧＮ１」を差し引いた値）と比較し、ＡＣＴが該閾値よりも大きいと判別した場合に、ステップＳＴ３に進むが、そうでない場合にはステップＳＴ４に進む。尚、ＡＣＴ、ｆｃの比較時には、ＡＣＴがｆｃの関数であることを考慮して周波数に換算するか（ＡＣＴを百分率で表す場合に、ＡＣＴ＝１００％が、計測期間Ｔにおいてｆｃのクロックを全てカウントした数に相当する。）、あるいはＡＣＴが計測時間Ｔでのクロックカウント値を表す場合において、ｆｃを計測時間Ｔでのクロックカウント値に換算する等、両者を同等の立場で比較する必要があることは勿論である。
【００８９】
ステップＳＴ３では、ＳＹＳＣＬＫの周波数を上げる必要があるため、現在の周波数「ｆｃ」に対して所定の周波数刻み分（これを「Δｆ」と記す。）を加算した周波数値を採用する。つまり、現在の周波数ｆｃよりも１段階上げた周波数（ｆｃ＋Δｆ）を次の周波数とする決定が行われた後で、ステップＳＴ７に進む。
【００９０】
また、ステップＳＴ４では、前ステップＳＴ１で得られたＡＣＴを第二の閾値（現在の周波数「ｆｃ」から周波数刻み分Δｆを引算して１段階下げた周波数からさらにマージン「ＭＧＮ２」を差し引いた値）と比較し、ＡＣＴが該閾値よりも小さいと判別した場合にステップＳＴ５に進み、そうでない場合にはステップＳＴ６に進む。
【００９１】
ステップＳＴ５では、ＳＹＳＣＬＫの周波数を下げる必要があるため、現在の周波数ｆｃに対して所定の周波数刻み分Δｆを引算した周波数値を採用する。つまり、現在の周波数ｆｃよりも１段階下げた周波数（ｆｃ−Δｆ）を次の周波数とする決定が行われた後で、ステップＳＴ７に進む。
【００９２】
ステップＳＴ６に到達するのは、ステップＳＴ２およびＳＴ４のいずれの条件も満たさない場合であり、ＡＣＴがＳＹＳＣＬＫの周波数に対して適切な状態にあることを意味する。よって、現在の周波数（ｆｃ）を維持したままで、ステップＳＴ７に進む。
【００９３】
上記ステップＳＴ３、ＳＴ５、ＳＴ６の後、ステップＳＴ７では、変更又は維持された周波数値を、上記レジスタ（図３の１７、１８参照）によって規定される周波数範囲や周波数値と比較することでチェックする。そして、周波数値が許容される場合にはステップＳＴ１に戻るが、許容されない場合にはステップＳＴ８に進む。
【００９４】
ステップＳＴ８では周波数値について上限又は下限を制限し、あるいは特定の周波数値が得られるように制限した後、ステップＳＴ１に戻る。
【００９５】
こうして決定される周波数値に応じて、クロック供給回路１５では、制御回路１４からの制御信号Ｓ１４２によりクロック信号が指示される。即ち、該当するクロック周波数をもつＳＹＳＣＬＫが選択されてＣＰＵ１１、カウンタ１３に供給される。
【００９６】
このように、所定の計測時間Ｔを周期として周波数の変更又は維持が繰り返されることになる。
【００９７】
尚、システムクロックに関して、現在の周波数をもとに次の周波数を決定するためには、周波数を上げるための条件及び上限と次の周波数の与え方、あるいは周波数を下げるための条件及び下限と次の周波数の与え方を、システムの構成や特性等に応じて適切に規定してやれば良い。また、マージンＭＧＮ１、ＭＧＮ２の設定については、両者を同じ値にする方法や両者を異なる値にする方法（例えば、マージンをＡＣＴや周波数範囲等に応じて段階的又は連続的に変化させる等。）を適宜に用いることが可能である。
【００９８】
図９は制御回路１４の構成について一例を示したものである。尚、本例では上記「ＭＧＮ１」と「ＭＧＮ２」を同じ値「ＭＧＮ」（正値）としている。
【００９９】
本例では、制御回路１４が、加算器１４１、減算器１４２、加算器１４３、比較器１４４、１４５、セレクタ１４６、リミッタ１４７、記憶素子１４８、デコーダ１４９から構成されている。
【０１００】
記憶素子１４８には現在の周波数ｆｃを示すデータが保持されており、該データが加算器１４１、減算器１４２、セレクタ１４６、比較器１４５にそれぞれ送出される。
【０１０１】
加算器１４１は、ｆｃとΔｆとの加算値「ｆｃ＋Δｆ」を求めて、これをセレクタ１４６に対して出力し、また、減算器１４２は、ｆｃからΔｆを引算して「ｆｃ−Δｆ」を求めて、これをセレクタ１４６、比較器１４４に対して出力する。
【０１０２】
加算器１４３は、前記カウンタ１３の出力するＡＣＴとＭＧＮを加算して、「ＡＣＴ＋ＭＧＮ」を比較器１４４、１４５に送出する。
【０１０３】
比較器１４４は、減算器１４２が出力する「ｆｃ−Δｆ」と、加算器１４３が出力する「ＡＣＴ＋ＭＧＮ」について大小関係を比較し、比較結果をセレクタ１４６に送出する。
【０１０４】
また、比較器１４５は、現在の周波数ｆｃと、加算器１４３が出力する「ＡＣＴ＋ＭＧＮ」について大小関係を比較し、比較結果をセレクタ１４６に送出する。
【０１０５】
セレクタ１４６には、ｆｃ、「ｆｃ＋Δｆ」、「ｆｃ−Δｆ」の各データが供給され、比較器１４４、１４５によるそれぞれの比較結果に基いて周波数を選択して、リミッタ１４７に送出する。
【０１０６】
リミッタ１４７は、前記したレジスタ（１７又は１８）による周波数値（上下限値や特定周波数値）を参照して、セレクタ１４６からの周波数値を制限し、その結果を記憶素子１４８に送る。記憶素子１４８に新たな周波数のデータが格納される（これによりｆｃの値が更新されるが、これは前記タイマ１２からの指示に従って計測時間Ｔ毎に行われる。）。
【０１０７】
記憶素子１４８に格納されているｆｃのデータはデコーダ１４９に送られ、ここでは該データをもとに、前記クロック供給回路１５においてクロックを選択するための指示信号（Ｓ１４２）を生成して出力する。
【０１０８】
従って、図８のＳＴ２の比較判断が比較器１４５で行われ、ＳＴ４の比較判断が比較器１４４で行われ、また、ステップＳＴ３、ＳＴ５、ＳＴ６については、セレクタ１４６により行われる。そして、ステップＳＴ７、ＳＴ８については、レジスタ値を基にしてリミッタ１４７で処理される。
【０１０９】
以上説明したように、ＣＰＵ１１はＳＹＳＣＬＫに同期して、待機状態や動作状態を繰り返しながらタスクを処理し、ＡＣＦＬＧをカウンタ１３に送ることにより、計測時間ＴでのＣＰＵの稼動状態を表すアクティビティが計測される。そして、計測されたアクティビティに基づき次に設定すべきＳＹＳＣＬＫの周波数が決定されることになるが、その際には、クロック周波数がレジスタで指定される上限閾値や下限閾値により制限されたり、あるいは特定の周波数値となるように制限される。こうしてチェックされた周波数をもつＳＹＳＣＬＫがクロック供給回路１５により発生されてＣＰＵ１１等に送られる。従って、周波数制限を受けない場合には、システムのアクティビティ（稼動状態の割合）に応じてクロック周波数が自動的に変更され、また周波数制限を受ける場合には、許容範囲外の周波数が上限値又は下限値に規制され、あるいは、無効化されて特定の周波数に変更される。
【０１１０】
尚、上記の説明では、制御対象としてＣＰＵ１１だけを取り上げたが、クロック周波数を制御する対象が複数の場合でも構わない。例えば、ＣＰＵ１１と、複数の周辺回路の稼働状態をそれぞれ観測した結果に基づいてＳＹＳＣＬＫの周波数制御を行うことができる。実際の回路システムでは、ＣＰＵ１１と他の周辺回路が同時に動作している状態もあれば、ＣＰＵ１１は動作しているが周辺回路が待機状態であったり、逆に、ＣＰＵ１１が待機状態であって周辺回路が動作している場合もある。
【０１１１】
そこで、ＣＰＵや周辺回路のそれぞれの稼動状態を示す信号を用いて、その論理和（ＯＲ）信号を求め、該信号をカウンタ１３にイネーブル信号として供給すれば、複数の制御対象について稼動状態を総合的に計測した結果に基づいてＳＹＳＣＬＫの周波数制御を行える。つまり、制御対象毎の稼動状態をそれぞれに示すＡＣＦＬＧを用いて、各フラグの論理和信号をカウント１３に送ることで、該論理和信号が示すフラグについてシステム全体の稼動状態を示すＡＣＦＬＧとみなすことができる。これによって、制御対象の数や種類によらず、同一の制御方法を採用することができるので、汎用性が高い。また、各制御対象の稼動状態を１ビットのＡＣＦＬＧの値で管理することができるので、大幅な回路変更等を伴うことがない。
【０１１２】
次に、複数のアプリケーションが動作している場合におけるクロック周波数の管理について説明する。  従来の周波数管理においては、例えば、アプリケーションに対応した単純な周波数の指定等が可能であるにすぎず、マルチタスク機能をもつＯＳを搭載した装置等で複数のアプリケーションを動作させた場合に、十分な性能を得ることが困難とされ、また、アプリケーションの起動や終了のタイミングをトリガにして周波数の設定等が行われる程度であって大まかな管理であったために、詳細な周波数の管理を行うことが困難である。
【０１１３】
そこで、以下では、動作中のプログラムからその動作や処理に応じたクロック周波数に係る要求情報の通知を受けて、該情報を統一的に管理する手段（周波数管理手段）を設けた構成形態について説明する。尚、周波数管理手段（以下、「周波数マネージャ」という。）は、例えば、ソフトウェアとして構成され（ＯＳの一部やデバイスドライバ等）、制御できる設定上のパラメータとして、システムクロックの周波数や、ハードウェアで自動制御されるクロック周波数の上限周波数、下限周波数等が挙げられる。
【０１１４】
図１０は、制御アルゴリズムの一例について説明するための図である。
【０１１５】
本例では２つのアプリケーションプログラム「ＰＡ」と「ＰＢ」が時間的にオーバーラップする期間（以下、「重複期間」という。）をもって動作している様子を示しており、各プログラムから呼び出されるライブラリ（又はデバイスドライバ等）８を介して周波数マネージャ９にシステムクロックの周波数要求が通知される。また、図中に示す「ＴＡ１」の時点においてＰＡからライブラリ等がコールされ、「ＴＡ２」の時点で呼び出した処理が終了し、また、「ＴＢ１」の時点においてＰＢからライブラリ等がコールされ、「ＴＢ２」の時点で呼び出した処理が終了する。尚、ＴＡ１やＴＢ１については、各プログラムが起動された時点でも良いし、また、特定の処理が必要となった時点でも良い。
【０１１６】
本システム上で動くアプリケーションＰＡ、ＰＢから、動画処理や音声処理等の特定の処理においてライブラリやデバイスドライバが呼ばれた場合に、各ライブラリやデバイスドライバは、処理に必要な周波数情報を周波数マネージャ９に与え、そこで最適な設定を行ってもらう。尚、ライブラリやデバイスドライバは、自分の動作内容を事前に把握しているので、その動作に応じた最適な設定パラメータの情報を数値あるいは参照テーブル等の形態で保有することができる。
【０１１７】
システムクロック情報等の設定については、以下の例が挙げられる。
【０１１８】
・最低限必要な周波数があるアプリケーションにおいて、最低の周波数を設定すること（例えば、シリアル通信を行う場合に周波数を１６ＭＨｚ（メガヘルツ）以上にする等。）
・性能を上げるために一時的に周波数の下限値を高くすること（例えば、半導体メモリ等を用いた２次記憶装置を使用する場合に、周波数を９６ＭＨｚ以上にする等。）
・性能やデータ品質の低下等を防止するために周波数が下限値未満にならないようにすること（例えば、ＰＣＭ音声データのミキシング時に周波数を３２ＭＨｚ以上にしたり、動画の録画時に周波数を６４ＭＨｚ以上にする等。）
・一定以上の性能を必要としないアプリケーションにおいて、最高の周波数を設定すること（例えば、音声データの再生時に周波数を６４ＭＨｚ以下にする等。）
・アプリケーションに見合った固定の周波数値あるいは周波数の初期値を設定すること。
【０１１９】
この他、処理対象であるデータの種類や転送レート、フォーマット等に応じて周波数の下限値又は上限値を設定することができる。動画像データや音声データを含むファイルを開く場合等においてそのビットレートに応じてＣＰＵやＤＳＰ（Digital Signal Processor）等の動作周波数の下限値を規定する場合に、例えば、ＭＰＥＧ（Moving Picture Experts Group）４のビットレート（７８６ｋｂｐｓ）に合わせて周波数下限値（１２３ＭＨｚ）を規定することが好ましい（ビットレートが高いほど下限値を高くする。）。
【０１２０】
システム全体で見た場合、複数のアプリケーションが同時的に処理される（フォアグラウンドプロセスに対して、バックグラウンドプロセスが背後にまわりながら動く。）状況下で、アプリケーションやライブラリ又はデバイスドライバ等からは、現時点で他にどのようなプログラムが実行されているかが分からないため、個別的な周波数設定を直接行ったのでは、最適な設定を行うことができない。従って、統一的な周波数の管理を行う手段が必要であり、周波数マネージャ９は、周波数の設定情報に基づいて閾値設定を変更することによって周波数範囲や周波数値を規定する役目を有する。
【０１２１】
図１０に示す例では、最低周波数６４ＭＨｚのプログラムＰＡと最低周波数３２ＭＨｚのプログラムＰＢが、ＴＢ１の時点からＴＡ２の時点にかけてオーバーラップして動いている状況を表している。各プログラムから呼び出されたライブラリ（又はデバイスドライバ）８は、その入口と出口において最適な周波数設定情報を周波数マネージャ９に伝える。そして、周波数マネージャ９はこれらの情報をもとに最適な設定を行う。
【０１２２】
例えば、ＴＡ１の時点からＴＢ１の時点にかけての期間において最低周波数が６４ＭＨｚに設定され、また、ＴＡ２の時点からＴＢ２にかけての期間において最低周波数３２ＭＨｚに設定される。尚、図中の「通常動作」とは、周波数マネージャ９やＯＳ等のように、システムにとって最低限必要な要素が動作している状態（アプリケーション等が動作していない状態での最低周波数の設定状態）を意味する。
【０１２３】
複数のプログラムが動作している重複期間において、周波数マネージャ９が適正な周波数を設定するためのアルゴリズムとして、例えば、以下に示す２つの形態が挙げられる。
【０１２４】
（Ｉ） 指示された最低周波数（下限値）又は最高周波数（上限値）、あるいは特定の周波数の中でもっとも大きい情報を採用して設定する形態（最大方式）
（ＩＩ）指示された最低周波数（下限値）又は最高周波数（上限値）、あるいは特定の周波数について、それぞれを加算した情報を採用して設定する形態（加算あるいは総和方式）。
【０１２５】
先ず、（Ｉ）では、クロック周波数について要求される下限周波数値又は上限周波数値を含む情報の通知を周波数マネージャ９が受けた場合に、各情報のうち最高の周波数値を採用する。例えば、動作中の各アプリケーションからライブラリ等を介して要求される下限又は上限の周波数を「ｆｉ」（ｉ＝１、２、…）と記し、最大値関数を「ＭＡＸ（）」と記すとき、「ｆs＝ＭＡＸ（ｆ１,ｆ２,…）」によって設定値「ｆs」を算定する。
【０１２６】
図１０の例に（Ｉ）を適用した場合、ＴＢ１の時点からＴＡ２の時点にかけての重複期間において、６４ＭＨｚと３２ＭＨｚの領域が重なっており、「ＭＡＸ（６４,３２）＝６４（ＭＨｚ）」が設定される。
【０１２７】
また、（ＩＩ）では、クロック周波数について要求される下限値又は上限値を含む情報の通知を周波数マネージャ９が受けた場合に、各情報の周波数値を加算した周波数値を採用する。例えば、上記「ｆｉ」（ｉ＝１、２、…）を用いて、「ｆs＝Σｆｉ」（「Σ」は自然数変数「ｉ」についての総和を示す。）によって設定値「ｆs」を算定する。あるいは、さらに一般化して各ｆｉに加重係数「ｋｉ」を乗じた値を加算する（「ｆs＝Σ（ｋｉ・ｆｉ）」といった形態でも構わない。
【０１２８】
図１０の例に（ＩＩ）を適用した場合、ＴＢ１の時点からＴＡ２の時点にかけての重複期間において、「６４＋３２＝９６（ＭＨｚ）」が設定される。
【０１２９】
尚、（Ｉ）と（ＩＩ）を状況や条件等に応じて併用した形態も勿論可能であり、各種の算定方法に従ってクロック信号の周波数範囲（上下限値）や周波数値が決定される。また、システムにおいて、あるプログラムが終了した場合には、該プログラムの終了が周波数マネージャ９に通知され、必要に応じて周波数設定が更新されることで、最適な設定に戻す処理が行われる。例えば、（Ｉ）の場合には、あるプログラムの終了によって、残るプログラムの周波数情報のうち、最大値が採用され、また、（ＩＩ）の場合には、あるプログラムの終了によって該プログラムの周波数情報を、それまでの総和から減算したものが採用される。いずれにしても、動作中の他のプログラムからクロック周波数について要求される下限周波数値又は上限周波数値を含む情報に基づいて周波数範囲又は周波数値が決定されることになる。尚、（ＩＩ）については、複数のプログラムからのリソース（資源）獲得の要求が競合する場合に用いることが好ましく、また、そのような競合の心配がない場合において（Ｉ）を用いることが可能である。
【０１３０】
これまでの周波数管理では、複数のアプリケーションが動作することを考慮しておらず、例えば、ある特定のアプリケーションが実行された場合に、該アプリケーションに固有の設定が行われる程度とされ、よって、上記したような緻密な設定を行うことができなかったが、ライブラリやデバイスドライバ等で高い処理性能が必要となる部分において周波数設定の要求を周波数マネージャ９に出せるので、アプリケーションにおける処理の一部（タスク）で性能が要求される状況等にも対応できる。また、複数の性能を要求するアプリケーションが動作していても、周波数マネージャ９によって統一的に周波数の管理を行えるので、アプリケーション側からみた個別的な観点では困難とされる、システム全体に亘る最適設定を実現することが可能である（全体の状況を充分に把握した上で周波数を設定することができる。）。
【０１３１】
以上に説明したように、システムクロック等を制御する場合に、例えば、クロック周波数の上下限をソフトウェアで制御できるシステムにおいて、アプリケーションを実行する際に該アプリケーションから呼ばれるライブラリやデバイスドライバ等が、その動作に合わせたシステムクロック情報を周波数マネージャに送信して、該周波数マネージャがシステム全体の周波数を制御することが好ましい。
【０１３２】
尚、上記の説明では、アプリケーションからライブラリやデバイスドライバを介して 周波数マネージャ９と通信する形態を示したが、これに限らず、アプリケーション自身が周波数マネージャ９と通信するといった各種形態での実施が可能である。
【０１３３】
また、アプリケーション、あるいはアプリケーションから呼び出されるライブラリ等を処理単位として周波数の要求情報を周波数マネージャに送信する形態には限られず、例えば、プロセス（コンピュータ資源の割り当て単位であり、実行プログラムやスレッド等を含む。）やスレッド（プロセッサの割り当ての最小単位であり、プログラムカウンタや各種レジスタセット、スタック領域、プライベートな記憶領域等で構成される。）を単位として、さらに緻密な制御が可能である。
【０１３４】
消費電力を低減する場合に、ＣＰＵやＤＳＰ、メモリ、バス等のクロック周波数を必要に応じて変化させる技術が使われるが、マルチスレッド環境（１つのプロセス内で複数のスレッドをもつことが可能なシステム環境）で同時に動作するプロセスやスレッドが特定されないシステムにおいては、ＣＰＵ等に対する必要なクロック周波数をどのように決めるかが問題となる。
【０１３５】
シングルスレッドのシステムでは、予めそのスレッドで必要となるＣＰＵやＤＳＰ、バス等のクロックが判っているので、それらの動作を満足するクロック周波数に設定しておけば良いが、マルチスレッドのシステムでは、予め各クロック周波数を特定することが出来ない。そこで、例えば、ＣＰＵ等の稼動状況を計測してクロック周波数を動的に可変制御する方法が採られるが、その応答時間の遅れが問題となる場合には、例えば、必要な性能が不足したことが計測により判明してからクロック周波数が上がることになる。そのため、負荷の重いスレッドやプロセスが起動された場合に、一時的に性能が足りなくなる虞があったり、また、スレッドやプロセスが終了した場合に、ＣＰＵ等の性能に余力があることが計測後に判明してからクロック周波数が下げられるので、その間無駄な電力を消費してしまうことになる。
【０１３６】
そこで、上記形態（ＩＩ）を採用する場合において、以下では、下記に示す制御を採用する。
【０１３７】
・プロセス又はスレッドで必要とされるクロック周波数を予め登録しておくこと
・システムにおいて動作中の各プログラムに関して、現在起動されている全てのプロセス又はスレッドに係る周波数の加算総計値を周波数マネージャが算出して、クロック周波数の設定管理を行うこと
・起動されたプロセスやスレッドが終了した場合には、それらに係る周波数を周波数マネージャが周波数の加算総計値から減算することでクロック周波数を更新すること。
【０１３８】
つまり、各プロセスやスレッドで必要となる周波数を、事前にデータベースや参照テーブル、ヘッダ等に登録しておいて、現時点で起動されている全てのプロセス又はスレッドで必要な周波数を満足する周波数を算出するために、各プロセス又はスレッドが起動される前に必要な周波数を足し込み、また、プロセス又はスレッドが終了した直後には、その分の周波数を総和値から減算することによって常に最適な周波数を設定して、該周波数のクロックをＣＰＵ、ＤＳＰやメモリ、バス等に供給する。尚、適用されるシステムについては、例えば、下記の形態が挙げられる。
【０１３９】
・動的（ダイナミック）な可変設定が可能なクロックが、ＣＰＵ等、システム上の機能においてそれぞれ独立している構成形態
・一部の機能のみについてクロック周波数の可変設定が可能な構成形態
・全ての機能や複数の機能をまとめてクロック周波数の可変設定を行うことができる構成形態。
【０１４０】
以下では、簡単化のため、一つのクロックの周波数を動的に可変できる構成形態を例にして、図１１を用いて説明する。
【０１４１】
ＯＳで必要となるクロック周波数又はシステムの機能を保証するために必要な最小限のクロック周波数を「Ａ０」とする。尚、ここで、「Ａ０」としては、ＯＳに必要な周波数値と、システム保証に必要な周波数値のうち、大きい方をとる。
【０１４２】
スレッド１(本例では、スレッドについて説明するが、以下の説明で「スレッド」と表記した部分を、プロセスと適宜に置換しても良い。）で必要となるクロック周波数は、予め計測された「Ａ１」であり、同様にして、スレッド２で必要となるクロック周波数が「Ａ２」、スレッド３について「Ａ３」、以下「Ａ４」、「Ａ５」、…という具合に、全てのスレッドに関して必要とされる各クロック周波数が予め計測されて判明しているものとする。
【０１４３】
ＯＳのみが動作している場合のクロック周波数は「Ａ０」であり、ここで、スレッド１を起動しようとする場合にスレッド１で必要となるクロック周波数Ａ１をＡ０に足した「Ａ０＋Ａ１」が設定され、その周波数のクロックがＣＰＵ等に供給されてからスレッド１を起動する。さらに、スレッド２を起動する場合は現状の「Ａ０＋Ａ１」に対して、スレッド２で必要となるクロック周波数Ａ２を加算した「Ａ０＋Ａ１＋Ａ２」にクロック周波数を上げてからスレッド２を起動する。このようにスレッドを起動する場合にはそのスレッドで必要となる周波数を加算した周波数となるようにクロックを制御してからスレッドを起動させる。予め必要なクロック周波数に上昇させてからスレッドを起動するので、新たに起動されたスレッドによって性能が不足することはない。尚、実際に設定される周波数が連続量として任意に変更し得るとは限らないので、例えば、ハードウェア構成によっては、「Ａ０＋Ａ１＋Ａ２」のクロック周波数をそのまま正確に設定できない場合もあるが、そのような場合には「Ａ０＋Ａ１＋Ａ２」を下回らない周波数に設定すれば良い（「Ａ０＋Ａ１＋Ａ２」を越える周波数の選択肢のうち、それに最も近い値を選ぶか、あるいは、周波数の異なる複数のクロックを時間的に組み合わせて近似値を使用する等。）。
【０１４４】
逆に、スレッド１乃至３が起動されていて（そのときのクロック周波数は「Ａ０＋Ａ１＋Ａ２＋Ａ３」である。）、スレッド２を終了させる場合にはスレッド２を終了させた後、該スレッド２で必要であったクロック周波数Ａ２を減算した「Ａ０＋Ａ１＋Ａ３」にクロック周波数を落とす。さらにスレッドＡ１を終了させた場合には「Ａ０＋Ａ３」にクロック周波数を落とす。このようにスレッドを終了させてからクロック周波数を下げることにより、性能不足等が発生しないように防止し、また、スレッドの終了直後にその分のクロック周波数を落とすことで、直ちに消費電力を下げることが可能となる。
【０１４５】
尚、上記した方法は、可変できるクロック周波数のソース（クロック信号発生手段）が複数ある場合にも同様に適用することができ、別のクロックに対する必要周波数（Ｂ０、Ｂ１、Ｂ２、・・・やＣ０、Ｃ１、Ｃ２、・・・等）を、スレッド又はプロセスの起動又は終了に応じて各別に加算し又は減算すれば良い。
【０１４６】
上記に説明した構成によれば、例えば、下記に示す利点が得られる。
【０１４７】
・ハードウェアだけで把握できない情報を用いて、周波数や電源電圧の制御を行うことにより、性能を向上させたり、消費電力を低下させることができる
・アプリケーション等によって、最適な周波数や周波数の範囲を指定することが可能となり、不用意な周波数低下による性能劣化や、不必要な周波数の増大による消費電力の増加を避けることができる。
【０１４８】
・複数のアプリケーションが動作しており、バックグラウンドで他のジョブが処理されているような状況においても、周波数マネージャがその状況を適正に把握して管理することで、最適な周波数設定を行うことが可能である。
【０１４９】
・スレッド又はプロセスが起動される前に、必要となるクロック周波数に上げることができるので起動直後に性能不足が起きない。また、スレッド又はプロセスを終了する場合は、その終了直後にクロック周波数を下げることができるので、すぐに消費電力を低減することができる（各スレッドやプロセスで必要となるクロック周波数を予め測定してあるので、必要なクロック周波数を過不足なく供給することができ、厳密な電力制御が可能となる。）。
【０１５０】
尚、本発明の適用において、前記した装置やこれに用いるプログラムに限らず、上記した動作周波数の制限機能を有するプログラムを記録した情報記録媒体（情報処理機器に装着してそのプログラムをメモリロードできるようにした各種の記録媒体や記憶媒体）や、制御対象に係る動作周波数の制限法等に幅広く適用することができる。
【図面の簡単な説明】
【０１５１】
【図１】本発明に係る基本構成を示す概念図である。
【図２】周波数制限について処理例を示すフローチャート図である。
【図３】図４乃至図９とともに、本発明に係る実施例を示すものであり、本図は要部の構成例を示すブロック図である。
【図４】タイマ１２の構成例を示す図である。
【図５】カウンタ１３の構成例を示す図である。
【図６】カウンタ１３の動作を説明するためのタイミングチャート図である。
【図７】クロック供給回路１５の構成例を示す図である。
【図８】図９とともに制御回路１４について説明するための図であり、本図は動作説明用のフローチャート図である。
【図９】回路構成の一例を示す図である。
【図１０】周波数マネージャによる制御例の説明図である。
【図１１】スレッドの生成、終了に伴う周波数設定例について説明するための概念図である。
【符号の説明】
【０１５２】
１…周波数制御装置、２…制御対象、４…周波数決定手段、５…周波数制限手段、９…周波数管理手段、１０…情報処理装置、１７…閾値設定手段、１７Ｕ、１７Ｌ…周波数設定用レジスタ、１８…周波数指定手段
【図１】
2004355599.tif 000003
【図２】
2004355599.tif 000004
【図３】
2004355599.tif 000005
【図４】
2004355599.tif 000006
【図５】
2004355599.tif 000007
【図６】
2004355599.tif 000008
【図７】
2004355599.tif 000009
【図８】
2004355599.tif 000010
【図９】
2004355599.tif 000011
【図１０】
2004355599.tif 000012
【図１１】
2004355599.tif 000013