(57)【要約】【課題】回路の動作クロック周波数を動的に変化させる省電力制御において、必要な動作クロック周波数の算出精度を向上し、正確な省電力制御を行うこと。【解決手段】単位時間毎に常時クロックを計数する第一のクロック計数部と、回路の無処理状態を検出する無処理状態検出部と、前記無処理状態検出部の指示に従い、回路の動作クロックの停止制御を行うクロック停止制御部と、前記クロック停止制御部が出力する動作クロックを計数する第二のクロック計数部と、前記第一のクロック計数部の計数値と第二のクロック計数部の計数値から必要な動作クロック周波数を算出する設定周波数演算部とを有し、前記第一の計数値と前記第二の計数値の差分が少なくなるように前記システムクロックの周波数を上下設定変更することにより、回路のの正確な省電力制御が可能となる。【選択図】図１
2006154903.tif 000002
【特許請求の範囲】
【請求項１】
回路の動作クロック周波数を動的に変化させる省電力制御において、
単位時間当たりの常時動作するシステムクロックの第一の計数値と回路の動作クロックの第二の計数値とから前記第一の計数値と前記第二の計数値の差分が少なくなるように前記システムクロックの周波数を上下設定変更することを特徴とする省電力制御方法。
【請求項２】
回路の動作クロック周波数を動的に変化させる省電力制御において、
クロック周波数を変更する周波数設定部と、
前記周波数設定部の指示によりシステムクロックを生成する第一のクロック生成部と、
前記システムクロックを計数する第一のクロック計数部と、
回路が無処理状態であることを指示する無処理状態検出部と、
前記無処理検出部の指示によりシステムクロックの停止制御を行うクロック停止制御部と、
前記クロック停止制御部の出力する動作クロックを計数する第二のクロック計数部と、
前記第一のクロック計数部と前記第二のクロック計数部の値により前記システムクロックの周波数を演算する設定周波数演算部と
を備えたことを特徴とする省電力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は低消費電力プロセッサの動的電力制御に関するものである。
【背景技術】
【０００２】
携帯電話やデジタルスチルカメラなど携帯用バッテリ駆動の製品に使用されるマイクロプロセッサや信号処理LSI等において、消費電力を削減することは連続動作時間の長時間化を実現する上でますます重要となってきている。
【０００３】
周知のように消費電力は、（数１）に示すように、動的電力と静的電力の和で求めることができる。
【０００４】
【数１】
2006154903.tif 000003
【０００５】
動的電力とは半導体回路が動作しているときに消費する電力で、半導体回路のスイッチキャパシタの容量と動作周波数と動作電圧の二乗の積で求まる。また、静的電力は半導体回路が動作していないときでも消費してしまう電力のことで、一般的にリーク電力と呼ばれ、回路電圧とリークする電流の積で求まる。この式が示すように、動作周波数を下げることによって、消費電力を抑えることができる。しかしながら、動作周波数を下げるとプロセッサで処理する能力も低下するため、プロセッサの処理負荷に合わせて動作周波数を切り替える方法がとられる。
【０００６】
従来のプロセッサ動作周波数の切り替制御としては、例えば、特許文献１が挙げられる。図５は、前記特許文献１に記載された従来の省電力制御装置を示すものである。
【０００７】
図５において、５００はプロセッサ部、５０１はプロセッサ部５００で処理するアプリケーションプログラムや演算処理データ保持を行うメモリ、５０２はプロセッサ部５００とメモリ５０１を接続するメモリバス、５０３はプロセッサ部５００およびメモリ５０１の動作クロックを生成するシステムクロック生成部、５０４はシステムクロック生成部５０３で生成されたシステムクロック、５０５はプロセッサ部５００からのシステムクロック周波数の設定値を保持する周波数設定部、５０６はプロセッサ部５００から周波数設定部５０５に設定する周波数設定信号、５０７は周波数設定部５０６からシステムクロック生成部に通知する周波数指示信号である。
【０００８】
次に図５を用いて、従来の省電力制御方法について説明する。特許文献１の７頁１２行から２０行によれば、従来の周波数変更方法は、メモリ５０１に格納されたアプリケーションプログラムをプロセッサ部５０１で実行する際に、同時にそのアプリケーションプログラムの処理負荷を計測するサブルーチンプログラムを実行し、必要な処理負荷に応じた動作周波数に変更する。
【特許文献１】特表２００２−５４３５１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前記従来の構成では、アプリケーションプログラムの処理負荷を計測するのに余分な計測用のサブルーチンプログラムを実行するため、サブルーチンプログラムの処理負荷分の消費電力が無駄であり、結果として省電力制御の精度が悪くなる。
【００１０】
本発明は、前記従来の課題を解決するもので、実行中のアプリケーションプログラムの処理負荷をプロセッサ処理とは独立してハードウェアで管理し、適切な動作クロック周波数に変更制御する省電力制御方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記従来の課題を解決するために、本発明の省電力制御方法および装置は、単位時間毎に常時クロックを計数する第一のクロック計数部と、プロセッサ部の無処理状態を検出する無処理状態検出部と、前記無処理状態検出部の指示に従いプロセッサ部の動作クロックの停止制御を行うクロック停止制御部と、前記クロック停止制御部が出力する動作クロックを計数する第二のクロック計数部と、前記第一のクロック計数部の計数値と第二のクロック計数部の計数値から必要な動作クロック周波数を算出する設定周波数演算部とを有し、前記設定周波数演算部において、プロセッサ部で実行しているアプリケーションプログラムの処理負荷を求め、処理負荷が100%になるようにプロセッサ動作クロックの周波数を上下設定制御する。
【００１２】
本構成によって、プロセッサ部の処理負荷を増加させることなく、正確に必要な動作クロックの周波数設定が可能となる。
【発明の効果】
【００１３】
本発明の省電力制御方法および装置によれば、アプリケーションプログラムの実行に必要最低限の動作クロックでプロセッサ部を動作させるため、正確な省電力制御が可能となる。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１における省電力制御装置の構成図である。
【００１６】
図１において、１００はプロセッサ部、１０１はプロセッサ部１００で処理するアプリケーションプログラムや演算処理データ保持を行うメモリ、１０２はプロセッサ部１００とメモリ１０１を接続するメモリバス、１０３はプロセッサ部１００およびメモリ１０１の動作クロックの基準となるクロックを生成するシステムクロック生成部、１０４はシステムクロック生成部１０３で生成されたシステムクロック、１０５は設定周波数演算部１１７からのシステムクロック周波数の設定値を保持する周波数設定部、１０６は設定周波数演算部１１７から周波数設定部１０５に設定する周波数設定信号、１０７は周波数設定部１０６からシステムクロック生成部１０７に通知する周波数指示信号、１０８はプロセッサ部の無処理状態であることを示す無処理状態信号、１０９はプロセッサ部１００の無処理状態を検出する無処理状態検出部、１１０はプロセッサ部１００およびメモリの動作クロックを停止制御するクロック停止信号、１１１はクロック停止信号１１０でシステムクロック１０４を停止制御するクロック停止制御部、１１２はプロセッサ部１００およびメモリ１０１およびクロック計数部２の動作クロック、１１３は常時動作しているシステムクロックを計数するシステムクロック計数部、１１４はクロック停止制御部１１１によりクロック停止制御された動作クロック１１２を計数する動作クロック計数部、１１５はシステムクロック計数部１１３の計数値、１１６は動作クロック計数部１１４の計数値、１１７はクロック計数値１１５とクロック計数値１１６とから必要な周波数を演算する設定周波数演算部である。
【００１７】
また図２は、本発明の実施の形態１における省電力制御方法の動作フローチャートである。
【００１８】
図２において、２００はシステムクロックの周波数を変更したことを示す周波数変更フラグをリセットする周波数変更フラグリセット処理、２０１はシステムクロック計数部１１３の計数値および動作クロック計数部１１４の計数値をリセットするクロック計数リセット処理、２０２はシステムクロック計数部１１３による計数および動作クロック計数部１１４による計数を行うクロック計数処理、２０３はシステムクロック計数部１１３および動作クロック計数部１１４の計数値を参照するタイミングかどうかを判断する１０ｍｓｅｃ検出処理、２０４はアプリケーションプログラムを実行する上でプロセッサ部に必要な周波数を演算する設定周波数演算処理、２０５は周波数の変更が必要かどうかを判断する設定周波数変更判断処理、２０６は設定周波数演算処理２０４で求めた周波数を周波数設定部に設定する周波数下設定処理、２０７は同一周波数が連続しているかどうかを判断する周波数変更フラグ判定処理、２０８は同一周波数が連続した場合に周波数を上げる設定を行う周波数上設定処理、２０９は周波数の変更を行った場合に設定する周波数変更フラグ設定処理である。
【００１９】
次に図１および図２を用いて、本発明の実施の形態１における省電力制御装置の動作説明を行う。プロセッサ部１００においてアプリケーションプログラムを実行すると、設定周波数演算部１１７により周波数変更フラグリセット処理２００およびクロック計数リセット処理２０１が実行され、システムクロック計数部１１３および動作クロック計数部１１４によってクロック計数処理２０２が実行される。設定周波数演算部１１７により１０ｍｓｅｃ検出処理２０３が実行されると、（数２）に示す設定周波数演算処理２０４を実行し、必要な周波数を求める。
【００２０】
【数２】
2006154903.tif 000004
【００２１】
（数２）によると、プロセッサ部１００が無処理状態、つまりアイドル状態が多い場合は動作クロック計数部１１４の値が少なくなるため、システムクロックの周波数を下げる作用が働く。また、プロセッサ部１００の無処理状態がない場合、つまり常時稼動状態の場合は、動作クロック計数部１１４の値とシステムクロック計数部１１３の値が等しいため、システムクロックの周波数を変更しない結果となる。
【００２２】
設定周波数演算処理２０４の結果と現在の周波数とを比較する設定周波数変更判断処理２０５にて、周波数を下げる判定の場合は、周波数下設定処理２０６にて設定周波数演算処理２０４の演算結果を周波数設定部１０５に設定する。逆に、システムクロックの周波数を変更しない場合は、プロセッサ部１００が常時稼動状態であり、処理能力が不足している可能性がある。そこで周波数変更フラグ判定処理２０７にて、連続して周波数変更がないことを検出した場合は周波数上設定処理２０８で（数３）に示す設定周波数演算処理を行い、３０％周波数を上げた結果を周波数設定部１０５に設定し、処理能力不足を解消する。
【００２３】
【数３】
2006154903.tif 000005
【００２４】
以上の処理を繰り返すことにより、プロセッサ部で実行するアプリケーションプログラムに必要な周波数を動的に上下変更制御可能となり、正確な省電力制御が可能となる。
【００２５】
なお、本実施の形態において、クロック計数値を参照するタイミングを１０ｍｓｅｃとしたが、これ以外でも同様な効果は得られる。
【００２６】
また、周波数を上げる場合は３０％ずつ上げるとしたが、これより以外でも同様な効果は得られる。
【００２７】
図３は本発明の実施の形態１における省電力制御装置の周波数を下げる場合のタイミングチャートである。
【００２８】
図３において、３００はシステムクロック計数部１１３および動作クロック計数部１１４の計数値を参照するタイミングとなる１０ｍｓｅｃ期間信号、３０１はシステムクロック生成部１０３が出力するシステムクロック波形、３０２はシステムクロック計数部１１３の計数動作、３０３はクロック停止制御部１１１が出力する動作クロック波形、３０４は無処理状態検出部１０９が出力するクロック信号停止信号１１０により動作クロックが停止中であることを示す動作クロック停止期間、３０５は無処理状態検出部１０９が出力するクロック信号停止信号波形、３０６は動作クロック計数部１１４の計数動作、３０７はシステムクロック計数部１１３の計数値１参照タイミング、３０８は動作クロック計数部１１４の計数値２参照タイミング、３０９は周波数を下げる判定をした場合の周波数設定１タイミング、３１０はシステムクロック計数部１１３の計数値３参照タイミング、３１１は動作クロック計数部１１４の計数値４参照タイミング、３１２は周波数設定２タイミング、３１３はシステムクロック計数部１１３の計数値５参照タイミング、３１４は動作クロック計数部１１４の計数値６参照タイミングである。
【００２９】
次に図３を用いて、本発明の実施の形態１における省電力制御装置の周波数を下げる場合の動作説明を行う。プロセッサ部１００においてアプリケーションプログラムを実行すると、システムクロック計数部１１３と動作クロック計数部１１４でそれぞれのクロック計数を開始する。設定周波数演算部１１７により１０ｍｓｅｃ期間信号３００が発行されると、システムクロック計数部１１３の計数値１と動作クロック計数部１１４の計数値２とから、（数２）の演算を行い、演算結果を周波数設定１タイミング３０９で設定周波数演算部１１７から周波数設定部１０５に設定する。例えば、最初にシステムクロックを２００MHｚとすると、１０ｍｓｅｃ時にシステムクロック計数部１１３の計数値１は２００００となる。一方、クロック停止信号３０５によってクロック停止が途中に入り、動作クロック計数部１１４の計数値２が例えば、１００００だとすると、（数２）の演算結果は、１００MHｚとなり、設定周波数演算部１１７は周波数設定部１０５に１００MHｚを設定する。以降、同様に、１０ｍｓｅｃ毎にシステムクロック計数部１１３の計数値１と動作クロック計数部１１４の計数値２とから、（数２）の演算を行い、プロセッサ部１００の動作クロックが停止制御されていれば、より低い周波数に設定を変更していくことで、アプリケーションプラグラムの実行に必要な動作クロック周波数に合わせていくことができる。
【００３０】
図４は本発明の実施の形態１における省電力制御装置の周波数を上げる場合のタイミングチャートである。
【００３１】
図４において、４００は１０ｍｓｅｃ期間信号、４０１はシステムクロック波形、４０２はシステムクロック計数部１１３の動作、４０３はプロセッサ部の動作クロック波形、４０４はクロック信号停止信号波形、４０５は動作クロック計数部１１４の動作、４０６はシステムクロック計数部１１３の計数値１参照タイミング、４０７動作クロック計数部１１４の計数値２参照タイミング、４０８はシステムクロック計数部１１３の計数値３参照タイミング、４０９は動作クロック計数部１１４の計数値４参照タイミング、４１０は周波数設定タイミング、４１１はシステムクロック計数部１１３の計数値５参照タイミング、４１２は動作クロック計数部１１４の計数値６参照タイミングである。
【００３２】
図４を用いて、本発明の実施の形態１における省電力制御装置の周波数を上げる場合の動作説明を行う。プロセッサ部１００においてアプリケーションプログラムを実行すると、システムクロック計数部１１３と動作クロック計数部１１４でそれぞれのクロック計数を開始する。設定周波数演算部１１７により１０ｍｓｅｃ期間信号４００が発行されると、システムクロック計数部１１３の計数値１と動作クロック計数部１１４の計数値２とから、（数２）の演算を行い、設定周波数と現在の周波数が同じの場合は、プロセッサ部１００の動作クロック１１２は常時動いており、クロック停止が全くない状態を示す。このとき、プロセッサ部１００での処理能力が十分なのか否かの判断がつかないため、連続して、設定周波数と現在の周波数が同じの場合は、（数３）に示す演算により、設定周波数を３０％上げる処理を行い、周波数設定タイミング４１０で周波数設定を行う。これにより、プロセッサ部１００における処理能力不足を解消し、アプリケーションプラグラムの実行に必要な動作クロック周波数に合わせていくことができる。
【００３３】
かかる構成によれば、プロセッサ部の処理負荷を増加させることなく、正確に必要な動作クロックの周波数設定が可能となり、プロセッサ部の正確な省電力制御が可能となる。
【産業上の利用可能性】
【００３４】
本発明にかかる省電力制御方法および装置は、携帯電話やモバイル機器等の低消費電力プロセッサとして有用である。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態１における省電力制御装置の構成図
【図２】本発明の実施の形態１における省電力制御方法のフローチャート
【図３】本発明の実施の形態１における周波数を下げる場合のタイミングチャート
【図４】本発明の実施の形態１における周波数を上げる場合のタイミングチャート
【図５】従来の省電力制御装置の構成図
【符号の説明】
【００３６】
１００    プロセッサ部
１０１    メモリ
１０２    メモリバス
１０３    システムクロック生成部
１０４    システムクロック
１０５    周波数設定部
１０６    周波数設定信号
１０７    周波数指示信号
１０８    プロセッサ部の無処理状態信号
１０９    無処理状態検出部
１１０    クロック停止信号
１１１    クロック停止制御部
１１２    プロセッサ部の動作クロック
１１３    クロック計数部１
１１４    クロック計数部２
１１５    クロック計数部１の計数値
１１６    クロック計数部２の計数値
１１７    設定周波数演算部
２００    周波数変更フラグリセット処理
２０１    クロック計数リセット処理
２０２    クロック計数処理
２０３    １０ｍｓｅｃ検出処理
２０４    設定周波数演算処理
２０５    設定周波数変更判断処理
２０６    周波数下設定処理
２０７    周波数変更フラグ判定処理
２０８    周波数上設定処理
２０９    周波数変更フラグ設定処理
３００    １０ｍｓｅｃ期間信号
３０１    システムクロック波形
３０２    システムクロック計数部１の動作
３０３    プロセッサ部の動作クロック波形
３０４    動作クロックの停止期間
３０５    クロック信号停止信号波形
３０６    動作クロック計数部２の動作
３０７    システムクロック計数部１の計数値１参照タイミング
３０８    動作クロック計数部２の計数値２参照タイミング
３０９    周波数設定１タイミング
３１０    システムクロック計数部１の計数値３参照タイミング
３１１    動作クロック計数部２の計数値４参照タイミング
３１２    周波数設定２タイミング
３１３    システムクロック計数部１の計数値５参照タイミング
３１４    動作クロック計数部２の計数値６参照タイミング
４００    １０ｍｓｅｃ期間信号
４０１    システムクロック波形
４０２    システムクロック計数部１の動作
４０３    プロセッサ部の動作クロック波形
４０４    クロック信号停止信号波形
４０５    動作クロック計数部２の動作
４０６    システムクロック計数部１の計数値１参照タイミング
４０７    動作クロック計数部２の計数値２参照タイミング
４０８    システムクロック計数部１の計数値３参照タイミング
４０９    動作クロック計数部２の計数値４参照タイミング
４１０    周波数設定タイミング
４１１    システムクロック計数部１の計数値５参照タイミング
４１２    動作クロック計数部２の計数値６参照タイミング
５００    プロセッサ部
５０１    メモリ
５０２    メモリバス
５０３    システムクロック生成部
５０４    システムクロック
５０５    周波数設定部
５０６    周波数設定信号
５０７    周波数指示信号
【図１】
2006154903.tif 000006
【図２】
2006154903.tif 000007
【図３】
2006154903.tif 000008
【図４】
2006154903.tif 000009
【図５】
2006154903.tif 000010