(57)【要約】【課題】消費電力を抑制する。【解決手段】記憶部２３は、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報３１を記憶する。導出部６０は、性能情報３１に基づき、プロセッサで実行されるアプリケーションの処理に必要な処理性能を導出する。周波数制御部６３は、導出部６０により導出された処理性能に応じてＣＰＵ２９の動作周波数を制御する。【選択図】図１
2014182512.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報を記憶する記憶部と、
前記性能情報に基づき、プロセッサで実行されるアプリケーションの処理に必要な処理性能を導出する導出部と、
前記導出部により導出された処理性能に応じて前記プロセッサの動作周波数を制御する周波数制御部と、
を有することを特徴とする周波数制御装置。
【請求項２】
前記プロセッサでアプリケーションを実行している際の当該アプリケーションに対する前記プロセッサの使用率および前記プロセッサの処理性能から当該アプリケーションの処理に必要な処理性能を算出して前記性能情報に登録する登録部
をさらに有することを特徴とする請求項１に記載の周波数制御装置。
【請求項３】
アプリケーションに対する操作を受け付けた場合、操作を受け付けたアプリケーションの処理の優先度を高く補正する補正部
をさらに有することを特徴とする請求項１または２に記載の周波数制御装置。
【請求項４】
前記補正部は、装置内の温度が所定の許容温度以上となった場合、前記プロセッサの動作周波数を低く補正することを特徴とする請求項３に記載の周波数制御装置。
【請求項５】
前記補正部は、前記プロセッサへ電力を供給するバッテリの残量が所定量以下の場合、前記プロセッサの動作周波数を低く補正する
ことを特徴とする請求項３または４に記載の周波数制御装置。
【請求項６】
前記補正部は、前記プロセッサで実行されるアプリケーションの画面を表示する表示部がオフ状態の場合、前記プロセッサの動作周波数を低く補正する
ことを特徴とする請求項３〜５の何れか１つに記載の周波数制御装置。
【請求項７】
前記補正部は、アプリケーションの処理がバックグランドで実行される場合、前記プロセッサの動作周波数を低く補正する
ことを特徴とする請求項３〜６の何れか１つに記載の周波数制御装置。
【請求項８】
前記補正部は、災害に関する通知を受信した場合、前記プロセッサの動作周波数を低く補正する
ことを特徴とする請求項３〜７の何れか１つに記載の周波数制御装置。
【請求項９】
前記補正部は、前記プロセッサの動作周波数が所定値以上の間、前記プロセッサの動作周波数を低く補正する
ことを特徴とする請求項３〜８の何れか１つに記載の周波数制御装置。
【請求項１０】
コンピュータが、
記憶部に記憶され、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報に基づき、プロセッサで実行されるアプリケーションの処理に必要な処理性能を導出し、
導出された処理性能に応じて前記プロセッサの動作周波数を制御する、
処理を実行することを特徴とする周波数制御方法。
【請求項１１】
コンピュータに、
記憶部に記憶され、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報に基づき、プロセッサで実行されるアプリケーションの処理に必要な処理性能を導出し、
導出された処理性能に応じて前記プロセッサの動作周波数を制御する、
処理を実行させることを特徴とする周波数制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周波数制御装置、周波数制御方法および周波数制御プログラムに関する。
【背景技術】
【０００２】
プロセッサには、動的に動作周波数（動作クロック）を変更可能なものがある。このようなプロセッサを備えた装置には、直前のプロセッサの使用率を検出して次のタイミングのプロセッサの動作周波数を決定するフィードバック制御を行って、消費電力を抑制しているものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１３３７２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、フィードバック制御は、直前のプロセッサの使用率から次のタイミングのプロセッサの動作周波数を決定するため、必ずしも最適な周波数を選択できていたとは言えず、低消費電力化が難しい場合があった。
【０００５】
一側面では、消費電力を抑制できる周波数制御装置、周波数制御方法および周波数制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、周波数制御装置は、記憶部と、導出部と、周波数制御部とを有する。記憶部は、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報を記憶する。導出部は、性能情報に基づき、プロセッサで実行されるアプリケーションの処理に必要な処理性能を導出する。周波数制御部は、導出部により導出された処理性能に応じて前記プロセッサの動作周波数を制御する。
【発明の効果】
【０００７】
消費電力を抑制できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、端末装置の全体構成を示す図である。
【図２】図２は、設定ファイルのデータ構成の一例を示す図である。
【図３】図３は、制御処理の手順を示すフローチャートである。
【図４】図４は、登録処理の手順を示すフローチャートである。
【図５】図５は、経時的な処理性能の変化の一例を示す図である。
【図６】図６は、周波数制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下に、本発明にかかる周波数制御装置、周波数制御方法および周波数制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１０】
実施例１について説明する。本実施例では、端末装置に内蔵されたＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等のプロセッサの動作周波数を制御する場合について説明する。図１は、端末装置の全体構成を示す図である。端末装置１０は、動的に動作周波数を変更可能なプロセッサを内蔵した装置であり、例えば、スマートフォン、ＰＤＡ（Personal  Digital  Assistant）、携帯電話機等の携帯端末装置である。なお、端末装置１０は、デスクトップ型ＰＣ、タブレット型ＰＣ、ノート型ＰＣなどの情報処理装置であってもよい。本実施例は、端末装置１０をスマートフォンとした場合を例とする。
【００１１】
図１に示すように、端末装置１０は、通信Ｉ／Ｆ（インタフェース）部２０と、表示部２１と、入力部２２と、記憶部２３と、メモリ２４とを有する。また、端末装置１０は、クロックコントローラ２５と、電源制御ＩＣ（Integrated  Circuit）２６と、バッテリ２７と、温度センサ２８と、ＣＰＵ２９とを有する。
【００１２】
通信Ｉ／Ｆ部２０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部２０は、図示しないネットワークを介して各種情報を送受信する。かかるネットワークとしては、有線または無線を問わず、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）、移動体通信網などの任意の通信網が挙げられる。例えば、通信Ｉ／Ｆ部２０は、移動体通信網を介して、災害に関する通知として、緊急地震速報を受信する。かかる通信Ｉ／Ｆ部２０の一態様としては、ＬＡＮカードなどのネットワークインタフェースカード、移動体通信モジュールが挙げられる。
【００１３】
表示部２１は、各種情報を表示する表示デバイスである。例えば、表示部２１としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。表示部２１は、各種情報を表示する。例えば、表示部２１は、後述するアプリケーションの画面など各種の画面を表示する。
【００１４】
入力部２２は、各種の情報を入力する入力デバイスである。例えば、入力部２２としては、端末装置１０に設けられた各種のボタンや、表示部２１上に設けられた透過型のタッチセンサなどの入力デバイスが挙げられる。なお、図１の例では、機能的な構成を示したため、表示部２１と入力部２２を別に分けているが、例えば、タッチパネルなど表示部２１と入力部２２を一体的に設けたデバイスで構成してもよい。また、入力部２２は、キーボード、マウスなどであってもよい。入力部２２は、ユーザからの操作入力を受け付け、受け付けた操作内容を示す操作情報をＣＰＵ２９へ出力する。
【００１５】
記憶部２３は、フラッシュメモリ、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの不揮発性の記憶装置である。記憶部２３は、ＣＰＵ２９で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２３は、各種のアプリケーションプログラム３０を記憶する。このアプリケーションプログラム３０には、端末装置１０の製造元でプレインストールされたものと、端末装置１０のユーザがネットワーク等を介して後からインストールされたものがある。また、記憶部２３は、各種データを記憶する。例えば、記憶部２３は、性能情報３１を記憶する。
【００１６】
性能情報３１は、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能に関する情報を記憶したデータである。図２は、性能情報のデータ構成の一例を示す図である。図２に示すように、性能情報３１は、「対象アプリケーション」、「必要処理性能」の各項目を有する。対象アプリケーションの項目は、処理性能を記憶する対象のアプリケーションに関する情報を記憶する領域である。ここで、本実施例では、アプリケーションの処理に必要な処理性能に関する情報として、アプリケーションを実行する際にＣＰＵ２９に生成されるスレッド毎に、必要な処理性能を記憶する。スレッドには、スレッドの処理を含んだアプリケーション名や、スレッド名などスレッドを識別する識別情報が含まれている。対象アプリケーションの項目には、スレッドの処理を含んだアプリケーション名およびスレッドの識別情報が記憶される。なお、図２の例は、各スレッドを識別し易くするため、スレッドＡ〜スレッドＤのスレッド名を記載している。必要処理性能の項目は、スレッドの処理に必要な処理性能に関する情報を記憶する領域である。本実施例では、必要な処理性能として、スレッドの処理の実行に必要な１秒間の処理回数を記憶する。必要処理性能の項目には、スレッドの処理の実行に必要な１秒間の処理回数がＭＩＰＳ（Million  Instructions  Per  Second）の値で格納される。端末装置１０の製造元でプレインストールされたアプリケーションプログラム３０については、スレッド毎の必要な処理性能を製造元で登録してもよい。後からインストールされたアプリケーションプログラム３０については、後述する登録部６４により必要な処理性能が登録される。
【００１７】
図２の例では、スレッドＡは、必要な処理性能が１５００［ＭＩＰＳ］であることを示す。スレッドＢは、必要な処理性能が２０００［ＭＩＰＳ］であることを示す。スレッドＣは、必要な処理性能が５００［ＭＩＰＳ］であることを示す。スレッドＤは、必要な処理性能が１０００［ＭＩＰＳ］であることを示す。
【００１８】
図１に戻り、メモリ２４は、各種データを一時的に記憶するデバイスである。例えば、メモリ２４としては、ＲＡＭ（Random  Access  Memory）などのデータを書き換え可能な半導体メモリが挙げられる。メモリ２４は、各種データを記憶するワーク領域として利用され、ＣＰＵ２９において実行される各種のプログラムやプログラムの処理で用いられる各種データが格納される。例えば、メモリ２４には、端末装置１０の起動時に、記憶部２３から性能情報３１が読み出されて性能情報３２として格納される。
【００１９】
クロックコントローラ２５は、ＣＰＵ２９の動作周波数の設定を行っており、後述する周波数制御部６３からの制御によりＣＰＵ２９の動作周波数を変更する。
【００２０】
電源制御ＩＣ２６は、バッテリ２７からＣＰＵ２９へ供給される電圧を制御しており、後述する周波数制御部６３からの制御によりＣＰＵ２９へ供給する電圧を変更する。また、電源制御ＩＣ２６は、バッテリ２７の端子電圧からバッテリ２７の残量を検出しており、バッテリ２７の残量をＣＰＵ２９へ通知する。なお、バッテリ２７の残量は、別なデバイスが検出してＣＰＵ２９へ通知してもよい。
【００２１】
バッテリ２７は、ＣＰＵ２９を含む端末装置１０内の各デバイスに図示しない電力配線を介して接続され、電力を供給する。
【００２２】
温度センサ２８は、端末装置１０内に配置され、端末装置１０内の温度を検出する。例えば、温度センサ２８は、ＣＰＵ２９の周辺など、高温になりやすい部分に配置される。温度センサ２８は、検出した温度をＣＰＵ２９へ通知する。
【００２３】
ＣＰＵ２９は、端末装置１０を制御するデバイスである。ＣＰＵ２９は、クロックコントローラ２５からの制御により、動的に動作周波数を変更可能とされている。なお、本実施例では、端末装置１０を、ＣＰＵ２９を１つ備えたシングルプロセッサ構成としたが、ＣＰＵ２９を複数備えたマルチプロセッサ構成としてもよい。端末装置１０は、ＣＰＵ２９を複数備える場合、非同期で各ＣＰＵ２９の動作周波数を変更可能なマルチプロセッサ構成であるものとする。
【００２４】
ＣＰＵ２９は、各種の処理手順を規定したプログラムの処理を実行する。例えば、ＣＰＵ２９は、ＯＳが読み込まれて動作することにより、スケジューラ４０と、カーネル４１と、ＣＰＵモニタ４２とを有する。また、ＣＰＵ２９は、カーネル４１からメモリ領域などの割り当てを受けて各種のアプリケーションプログラム３０の処理を実行することにより、アプリケーションプロセス４３が動作する。図１の例では、２つのアプリケーションプロセス４３Ａ、４３Ｂが動作する。カーネル４１は、マルチスレットに対応しており、１つのプロセスで複数のスレッドの処理を並列に実行可能としている。図１の例では、アプリケーションプロセス４３Ａは、スレッドＡ、スレッドＢが実行されている。アプリケーションプロセス４３Ｂは、スレッドＣ、スレッドＤが実行されている。
【００２５】
スケジューラ４０は、各プロセスの処理を効率的に実施するため、スケジューリングを行う。例えば、スケジューラ４０は、処理の優先度などの重み値に従い各アプリケーションプロセス４３の優先順位を定めて、処理を割り当てる順序等を決定し、決定した順序に従いＣＰＵ２９にアプリケーションプロセス４３の各スレッドの処理を割り当てる。
【００２６】
カーネル４１は、ＯＳの核となる部分であり、端末装置１０を動作させるための基本機能を提供する。例えば、カーネル４１は、各アプリケーションプロセス４３や周辺機器の監視、記憶部２３やメモリ２４などの資源の管理、割りこみ処理、プロセス間通信などＯＳとしての基本機能を提供する。
【００２７】
ＣＰＵモニタ４２は、ＣＰＵ２９による各種の処理を監視し、処理状況に関する情報を提供する。例えば、ＣＰＵモニタ４２は、処理状況に関する情報として、スレッド毎のＣＰＵ２９の使用率を提供する。
【００２８】
また、ＣＰＵ２９は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、ＣＰＵ２９は、導出部６０と、フィードバック制御部６１と、補正部６２と、周波数制御部６３と、登録部６４とを有する。
【００２９】
導出部６０は、ＣＰＵ２９で実行される処理に必要な処理性能を導出する。例えば、導出部６０は、ＣＰＵ２９で実行される各アプリケーションプロセス４３の各スレッドについて、性能情報３２を参照し、それぞれのスレッドの処理に必要な処理性能を導出する。例えば、導出部６０は、ＣＰＵ２９でスレッドＡ〜Ｄが実行される場合、スレッドＡの必要な処理性能を１５００［ＭＩＰＳ］と導出する。また、導出部６０は、スレッドＢの必要な処理性能を２０００［ＭＩＰＳ］と導出する。また、導出部６０は、スレッドＣの必要な処理性能を５００［ＭＩＰＳ］と導出する。また、導出部６０は、スレッドＤの必要な処理性能を１０００［ＭＩＰＳ］と導出する。
【００３０】
導出部６０は、各アプリケーションプロセス４３の各スレッドの処理に必要な処理性能が得られた場合、各スレッドの処理に必要な処理性能を加算して、全体として必要な処理性能を導出する。例えば、導出部６０は、ＣＰＵ２９でスレッドＡ〜Ｄが実行される場合、全体として必要な処理性能を、１５００＋２０００＋５００＋１０００＝５０００［ＭＩＰＳ］と導出する。
【００３１】
導出部６０は、全体として必要な処理性能から、当該処理性能が得られ、消費電力を最も抑制できるＣＰＵ２９の動作周波数を導出する。例えば、ＣＰＵ２９は、段階的に動作周波数を変更可能であり、動作周波数が低いほど消費電力が低いものとする。この場合、導出部６０は、全体として必要な処理性能が得られる最も低い動作周波数をＣＰＵ２９の動作周波数と特定する。例えば、ＣＰＵ２９が２ＧＨｚ、２.５ＧＨｚ、３ＧＨｚと段階的に動作周波数を変更可能であり、１ＧＨｚ当たりの処理性能を２１００［ＭＩＰＳ］とすると、２．５ＧＨｚの処理性能が５２５０［ＭＩＰＳ］、３ＧＨｚの処理性能が６３００［ＭＩＰＳ］である。この場合、導出部６０は、必要な処理性能を５０００［ＭＩＰＳ］とすると、２．５ＧＨｚをＣＰＵ２９の動作周波数と特定する。一方、例えば、ＣＰＵ２９が動作周波数を変更可能であり、所定の使用率（例えば、７０％）で動作する場合に消費電力が低いものとする。この場合、導出部６０は、ＣＰＵ２９が所定の使用率で全体として必要な処理性能となる動作周波数をＣＰＵ２９の動作周波数と特定する。例えば、導出部６０は、必要な処理性能を５０００［ＭＩＰＳ］とすると、５０００／（０．７×２１００）＝３．４ＧＨｚをＣＰＵ２９の動作周波数と特定する。なお、必要な処理性能毎に消費電力が最も低いＣＰＵ２９の動作周波数の情報を記憶し、導出部６０は、当該情報からＣＰＵ２９の動作周波数を特定してもよい。例えば、必要な処理性能を複数の範囲に分けた範囲毎に、必要な処理性能が得られ、消費電力が最も低いＣＰＵ２９の動作周波数を示した情報を記憶部２３に記憶させる。導出部６０は、記憶部２３に記憶された当該情報から、全体として必要な処理性能が含まれる範囲の動作周波数をＣＰＵ２９の動作周波数と特定してもよい。
【００３２】
フィードバック制御部６１は、ＣＰＵモニタ４２により検出されるＣＰＵ２９の使用率から次のタイミングのＣＰＵ２９の動作周波数を特定する。例えば、ＣＰＵ２９で実行されるアプリケーションプロセス４３のスレッドの必要な処理性能が性能情報３２に未登録の場合、導出部６０は、全体として必要な処理性能を導出できない。この場合は、フィードバック制御部６１により、ＣＰＵモニタ４２により検出されるＣＰＵ２９の使用率から次のタイミングのＣＰＵ２９の動作周波数を特定する。例えば、フィードバック制御部６１は、ＣＰＵモニタ４２により検出されるＣＰＵ２９の使用率が所定値以上である場合、現在よりも高い動作周波数に変更する。この所定値は、例えば、９０％とする。この所定値は、外部から調整可能としてもよい。
【００３３】
補正部６２は、各種の補正を行う。例えば、補正部６２は、入力部２２からアプリケーションに対する操作を受け付けた場合、操作を受け付けたアプリケーションの処理の優先度を高く補正する。これにより、スケジューラ４０は、優先度を高く変更されたアプリケーションのアプリケーションプロセス４３に優先的にＣＰＵ２９の処理を割り当てるので、操作を受け付けたアプリケーションの処理を優先的に実行できる。
【００３４】
また、例えば、補正部６２は、導出部６０またはフィードバック制御部６１により特定されたターゲットの動作周波数を補正する。ここで、端末装置１０は、温度が動作を保証する所定範囲を超えると、誤作動等の不具合が発生する場合がある。そこで、補正部６２は、温度センサ２８により検出される装置内部の温度が所定の許容温度以上となった場合、ＣＰＵ２９からの熱の発生を抑えるため、ターゲットの動作周波数を低く補正する。この所定の許容温度は、端末装置１０内のデバイスの仕様に応じて定められる。これにより、ＣＰＵ２９からの熱の発生を抑えることができる。
【００３５】
また、端末装置１０は、バッテリ２７の残量が少ない場合、端末装置１０をより長く使用可能な状態にするため、ＣＰＵ２９での電力消費を抑えてバッテリ２７の残量の減少を抑制することが好ましい。そこで、補正部６２は、バッテリ２７の残量が所定量以下となった場合、ＣＰＵ２９の動作周波数を低く補正する。この所定量は、例えば、２０％とする。この所定量は、外部から調整可能としてもよい。これにより、バッテリ２７の残量の減少を抑制できる。
【００３６】
また、端末装置１０は、表示部２１がオフ状態である場合、表示部２１にアプリケーションの画面を表示する必要がなく、端末装置１０で実行される処理に対するユーザの関心も低い状況であるため、バッテリ２７の消費を抑制することが好ましい。そこで、補正部６２は、表示部２１がオフ状態の場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、バッテリ２７の消費を抑制することができる。
【００３７】
また、端末装置１０は、表示部２１がオン状態である場合でも、表示部２１にアプリケーションの画面を表示させずにバックグランドで処理を実行している場合がある。バックグランドで実行される処理は、一般的に、優先度が低く、処理速度も重要視されない。そこで、補正部６２は、各アプリケーションの処理がバックグランドで実行される場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、バッテリ２７の消費を抑制することができる。
【００３８】
また、端末装置１０は、災害等が発生した場合、停電が発生してバッテリ２７への充電が行えなくなる場合がある。そこで、補正部６２は、災害に関する通知を受信した場合、ＣＰＵ２９の動作周波数を低く補正する。例えば、補正部６２は、緊急地震速報を受信した場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、バッテリ２７の消費を抑制することができる。なお、緊急地震速報を受信した場合、例えば、記憶部２３に緊急地震速報を受信した旨の情報を記憶させ、表示部２１に動作周波数を低く補正する設定が行われている旨を表示させ、補正部６２は、所定の解除操作が行われるまで継続して補正を行うものとする。
【００３９】
補正部６２は、装置内部の温度が所定の許容温度以上となった場合や、バッテリ２７の残量が所定量以下となった場合、表示部２１がオフ状態の場合、および、緊急地震速報を受信した場合について、それぞれ低下させるＣＰＵ２９の動作周波数を異ならせてもよい。また、補正部６２は、一部または全部の場合で、同じ動作周波数に低下させてもよい。例えば、それぞれの場合の低下させる動作周波数の割合または低下させる動作周波数を補正情報として記憶部２３に記憶させておき、補正部６２は、補正情報に基づいて、それぞれの場合が発生した際に動作周波数を低下させる。また、補正部６２は、複数のケースに該当する場合、低下させる動作周波数が最も低いものにターゲットの動作周波数を補正する。また、補正部６２は、ＣＰＵ２９の動作周波数が所定値以上の間、ＣＰＵ２９の動作周波数を低く補正してもよい。例えば、補正部６２は、ＣＰＵ２９が２ＧＨｚ、２.５ＧＨｚ、３ＧＨｚと段階的に動作周波数の変更可能である場合、電力消費が多い３ＧＨｚでＣＰＵ２９が動作している場合に、動作周波数を低く補正する。これにより、ＣＰＵ２９の電力消費が多い場合にのみ補正が行われるようにすることができる。
【００４０】
ここで、補正部６２は、ＣＰＵ２９の動作周波数を低く補正するが、ＣＰＵ２９の動作を停止させるわけではない。ＣＰＵ２９で実行されている各アプリケーションプロセス４３の処理は、処理にかかる時間が長くなるものの継続される。
【００４１】
周波数制御部６３は、ＣＰＵ２９の動作周波数を制御する。例えば、周波数制御部６３は、ＣＰＵ２９の動作周波数が、導出部６０により導出され、補正部６２により補正されたターゲットの動作周波数となるように電源制御ＩＣ２６およびクロックコントローラ２５を制御する。例えば、周波数制御部６３は、電源制御ＩＣ２６に対してターゲットの動作周波数での駆動電圧となるように電圧の変更を指示する。これにより、電源制御ＩＣ２６は、ターゲットの動作周波数がＣＰＵ２９の現在の動作周波数よりも低い場合、駆動電圧を低下させ、ターゲットの動作周波数がＣＰＵ２９の現在の動作周波数よりも高い場合、駆動電圧を上昇させる。周波数制御部６３は、クロックコントローラ２５に対してターゲットの動作周波数への動作周波数の変更を指示する。これにより、クロックコントローラ２５は、指示された動作周波数にＣＰＵ２９の動作周波数を変更する。
【００４２】
登録部６４は、アプリケーションの処理に必要な処理性能を性能情報３２に登録する。例えば、登録部６４は、必要な処理性能が性能情報３２に未登録のアプリケーションプロセス４３のスレッドがある場合、当該スレッドの処理に必要な処理性能を求める。登録部６４は、入力部２２に操作が行われていない期間が続いており、各スレッドの処理に変換が少ない定常状態において、ＣＰＵモニタ４２により各スレッドのＣＰＵ２９の使用率を検出する。そして、登録部６４は、スレッドのＣＰＵ２９の使用率と、ＣＰＵ２９の動作周波数からスレッドの処理に必要な処理性能を算出する。例えば、スレッドのＣＰＵモニタ４２により検出されるＣＰＵ２９の使用率が５０％であり、ＣＰＵ２９の動作周波数が１ＧＨｚであり、１ＧＨｚ当たりの処理性能を２１００［ＭＩＰＳ］であるものとする。この場合、登録部６４は、１×０．５×２１００＝１０５０とスレッドの処理に必要な処理性能を算出する。そして、登録部６４は、算出したスレッドの処理に必要な処理性能を性能情報３２に、当該スレッドの処理に必要な処理性能として登録する。これにより、必要な処理性能が未登録のアプリケーションプロセス４３のスレッドの必要な処理性能が性能情報３２に登録されるため、後からインストールされたアプリケーションプログラム３０についても、必要な処理性能を学習できる。なお、登録部６４は、未登録のアプリケーションプロセス４３のスレッドについて、必要な処理性能を複数回算出して平均値を登録してもよい。また、登録部６４は、製造元でプレインストールされたアプリケーションプログラム３０についても、必要な処理性能が未登録の場合、必要な処理性能を性能情報３２に登録してもよい。また、登録部６４は、既に必要な処理性能が性能情報３２に登録されているスレッドについても必要な処理性能を算出し、算出した必要な処理性能と登録済みの必要な処理性能との平均値に性能情報３２を更新してもよい。
【００４３】
登録部６４は、所定のタイミングで、メモリ２４に記憶された性能情報３２を記憶部２３に性能情報３１として上書きして格納する。例えば、登録部６４は、端末装置１０の電源がオフされるタイミングや、一定周期毎のタイミングで性能情報３２を性能情報３１として上書保存する。これにより、登録部６４は、性能情報３２に登録された処理性能を性能情報３１に反映させることができる。
【００４４】
次に、本実施例に係る端末装置１０がＣＰＵ２９の動作周波数を制御する制御処理の流れを説明する。図３は、制御処理の手順を示すフローチャートである。この制御処理は、例えば、アプリケーションプログラム３０が起動されたタイミングや、起動中のアプリケーションプログラム３０を終了したタイミングなど、実行されるアプリケーションプログラム３０が変化したタイミングで実行される。なお、制御処理は、周期的に実行してもよい。
【００４５】
図３に示すように、導出部６０は、性能情報３２を参照して、ＣＰＵ２９で実行される各アプリケーションプロセス４３の各スレッドの処理に必要な処理性能が性能情報３２に記憶されているか否かを判定する（Ｓ１０）。記憶されている場合（Ｓ１０肯定）、導出部６０は、性能情報３２からそれぞれのスレッドの処理に必要な処理性能を読み出して、それぞれのスレッドの処理に必要な処理性能を導出する（Ｓ１１）。そして、導出部６０は、各スレッドの処理に必要な処理性能を加算して全体として必要な処理性能を導出し、全体として必要な処理性能から、消費電力を最も抑制できるＣＰＵ２９の動作周波数を導出する（Ｓ１２）。
【００４６】
一方、一部のスレッドまたは全部のスレッドの処理性能が記憶されていない場合（Ｓ１０否定）、導出部６０は、後述する登録処理を起動する（Ｓ１３）。この登録処理は、制御処理と並列して処理が実行される。そして、フィードバック制御部６１は、ＣＰＵモニタ４２により検出されるＣＰＵ２９の使用率から次のタイミングのＣＰＵ２９の動作周波数を特定する（Ｓ１４）。
【００４７】
補正部６２は、入力部２２からアプリケーションに対する操作を受け付けたか否かを判定する（Ｓ１５）。操作を受け付けていない場合（Ｓ１５否定）、処理は、後述するＳ１７へ移行する。一方、操作を受け付けた場合（Ｓ１５肯定）、補正部６２は、操作を受け付けたアプリケーションの処理の優先度を高く補正する（Ｓ１６）。
【００４８】
補正部６２は、温度センサ２８により検出される装置内部の温度が所定の許容温度以上であるか否かを判定する（Ｓ１７）。装置内部の温度が所定の許容温度以上である場合（Ｓ１７肯定）、処理は、後述するＳ２２へ移行する。
【００４９】
一方、装置内部の温度が所定の許容温度以上ではない場合（Ｓ１７否定）、補正部６２は、バッテリ２７の残量が所定量以下であるか否か判定する（Ｓ１８）。バッテリ２７の残量が所定量以下である場合（Ｓ１８肯定）、処理は、後述するＳ２２へ移行する。
【００５０】
一方、バッテリ２７の残量が所定量以下ではない場合（Ｓ１８否定）、補正部６２は、表示部２１がオフ状態であるか否か判定する（Ｓ１９）。表示部２１がオフ状態である場合（Ｓ１９肯定）、処理は、後述するＳ２２へ移行する。
【００５１】
一方、表示部２１がオフ状態ではない場合（Ｓ１９否定）、各アプリケーションの処理がバックグランドで実行されているか否かを判定する（Ｓ２０）。各アプリケーションの処理がバックグランドで実行されている場合（Ｓ２０肯定）、処理は、後述するＳ２２へ移行する。
【００５２】
一方、一部または全部のアプリケーションの処理がバックグランドで実行されていない場合（Ｓ２０否定）、補正部６２は、災害に関する通知を受信したか否かを判定する（Ｓ２１）。災害に関する通知を受信した場合（Ｓ２１肯定）、処理は、後述するＳ２２へ移行する。一方、災害に関する通知を受信していない場合（Ｓ２１否定）、処理は、後述するＳ２３へ移行する。
【００５３】
補正部６２は、それぞれのケースに応じて、上述のＳ１２またはＳ１４で求めたターゲットの動作周波数を補正する（Ｓ２２）。周波数制御部６３は、ＣＰＵ２９の動作周波数が、ターゲットの動作周波数となるように電源制御ＩＣ２６およびクロックコントローラ２５を制御し（Ｓ２３）、処理を終了する。
【００５４】
次に、本実施例に係る端末装置１０が必要な処理性能が未登録のアプリケーションプロセス４３のスレッドの処理性能を登録する登録処理の流れを説明する。図４は、登録処理の手順を示すフローチャートである。この更新処理は、例えば、上述の制御処理のＳ１３から起動されたタイミングで実行される。
【００５５】
図４に示すように、登録部６４は、入力部２２に操作が行われていない定常状態において、ＣＰＵモニタ４２により未登録の各スレッドのＣＰＵ２９の使用率を検出する（Ｓ３０）。そして、登録部６４は、未登録の各スレッドのＣＰＵ２９の使用率と、ＣＰＵ２９の動作周波数から、未登録の各スレッドの処理に必要な処理性能を算出する（Ｓ３１）。登録部６４は、算出したスレッドの処理に必要な処理性能をメモリ２４に記憶された性能情報３２に、当該スレッドの処理に必要な処理性能として登録し（Ｓ３２）、処理を終了する。
【００５６】
このように、端末装置１０は、アプリケーション毎に、当該アプリケーションの処理に必要な処理性能を示す性能情報を記憶部２３に記憶する。端末装置１０は、性能情報に基づき、ＣＰＵ２９で実行されるアプリケーションの処理に必要な処理性能を導出する。そして、端末装置１０は、導出された処理性能に応じてＣＰＵ２９の動作周波数を制御する。これにより、端末装置１０は、アプリケーションの処理に必要な処理性能でＣＰＵ２９を動作させることができるため、消費電力を抑制できる。
【００５７】
また、端末装置１０は、ＣＰＵ２９でアプリケーションを実行している際の当該アプリケーションに対するＣＰＵ２９の使用率およびＣＰＵ２９の処理性能から当該アプリケーションの処理に必要な処理性能を算出して性能情報に登録する。これにより、端末装置１０は、アプリケーションが後から追加された場合でも、追加されたアプリケーションの処理に必要な処理性能を性能情報に登録できる。
【００５８】
また、端末装置１０は、アプリケーションに対する操作を受け付けた場合、操作を受け付けたアプリケーションの処理の優先度を高く補正する。これにより、端末装置１０は、操作を受け付けたアプリケーションの処理を優先的に実行させることができるため、アプリケーションの操作性が低下することを抑制できる。
【００５９】
また、端末装置１０は、装置内の温度が所定の許容温度以上となった場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、ＣＰＵ２９からの熱の発生を抑えられるため、装置内の温度が上昇することを抑制できる。
【００６０】
また、端末装置１０は、バッテリ２７の残量が所定量以下の場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、消費電力を抑制でき、バッテリ２７の残量の減少を抑制できる。
【００６１】
また、端末装置１０は、表示部２１がオフ状態の場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、消費電力を抑制でき、バッテリ２７の消費を抑制することができる。
【００６２】
また、端末装置１０は、アプリケーションの処理がバックグランドで実行される場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、消費電力を抑制でき、バッテリ２７の消費を抑制することができる。
【００６３】
また、端末装置１０は、災害に関する通知を受信した場合、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、消費電力を抑制でき、バッテリ２７の消費を抑制することができる。
【００６４】
また、端末装置１０は、ＣＰＵ２９の動作周波数が所定値以上の間、ＣＰＵ２９の動作周波数を低く補正する。これにより、端末装置１０は、ＣＰＵ２９が電力消費の多い高い動作周波数で動作することを抑制できる。
【００６５】
また、端末装置１０は、必要な処理性能を１秒間の処理回数として記憶する。これにより、端末装置１０は、ＣＰＵやＭＰＵなどプロセッサが異なる場合であっても、性能情報３１をそのまま利用でき、また、必要な動作周波数を簡易に算出できる。
【実施例２】
【００６６】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００６７】
例えば、上記の実施例では、アプリケーションの処理に必要な処理性能をスレッド毎に必要な処理性能として記憶する場合について説明したが、開示の装置はこれに限定されない。例えば、アプリケーション毎にスレッドの必要な処理性能を合算してアプリケーションの処理に必要な処理性能として記憶させてもよい。
【００６８】
また、上記の実施例では、必要な処理性能を１秒間の処理回数として記憶する場合について説明したが、開示の装置はこれに限定されない。例えば、アプリケーションの処理に必要な処理性能を動作周波数として記憶させてもよい。また、アプリケーションの処理に必要な処理性能を重み値、ＣＰＵ２９の使用率などとして記憶させてもよい。
【００６９】
また、上記の実施例では、アプリケーションに対する操作を受け付けた場合、補正部６２が、操作を受け付けたアプリケーションの処理の優先度を高く補正する場合について説明したが、開示の装置はこれに限定されない。例えば、補正部６２は、操作を受け付けたアプリケーションの処理に必要な処理性能を所定時間上昇させ、所定時間経過後、必要な処理性能を経時的な処理性能に戻すようにしてもよい。
【００７０】
また、上記の実施例では、性能情報３１に、定常状態でアプリケーションの処理に必要な処理性能を記憶する場合について説明したが、開示の装置はこれに限定されない。例えば、アプリケーションの処理に必要な経時的な処理性能を性能情報３１に記憶させ、性能情報３１に基づいて、アプリケーションの処理に必要な処理性能の経時的な変化に合わせてＣＰＵ２９の動作周波数を変化させてもよい。例えば、一定間隔で周期的にアプリケーションの処理のＣＰＵ２９の使用率をサンプリングする。そして、ＣＰＵ２９の動作周波数とサンプリングされた使用率からアプリケーションの処理に必要な経時的な処理性能を求め、所定個ずつ移動平均を求めて経時的な処理性能としてもよい。図５は、経時的な処理性能の変化の一例を示す図である。なお、図５の例では、必要な処理性能を動作周波数をとして示している。例えば、１０〜３００ｍｓ程度の間隔で周期的にアプリケーションの処理のＣＰＵ２９の使用率をサンプリングする。そして、図５の例では、ＣＰＵ２９の動作周波数と使用率を乗算してアプリケーションの処理に必要なＣＰＵ２９の動作周波数を実動作周波数として求め、それぞれ２つ前までの実動作周波数の移動平均を求めている。移動平均を求める実動作周波数の個数は、アプリケーションの処理に必要な処理性能の変化の特性に応じて調整すればよい。
【００７１】
また、例えば、性能情報３１に、アプリケーションの起動から定常状態に安定するまでの所定期間についてアプリケーションの処理に必要な経時的な処理性能と、定常状態の処理に必要な処理性能とを記憶させてもよい。この場合、端末装置１０は、アプリケーションの起動から所定期間、経時的な処理性能を用いてＣＰＵ２９の動作周波数を制御し、所定期間経過後、定常状態の処理に必要な処理性能を用いてＣＰＵ２９の動作周波数を制御するものとしてもよい。
【００７２】
また、例えば、性能情報３１に、アプリケーション毎に、複数の状態の必要な処理性能を記憶させ、アプリケーションの状態に応じて必要な処理性能を切替えてもよい。例えば、性能情報３１に、定常状態での必要な処理性能と、操作を受け付けた状態での必要な処理性能を記憶させる。そして、端末装置１０は、定常状態の場合、定常状態の必要な処理性能を用いてＣＰＵ２９の動作周波数を制御し、操作を受け付けた場合、操作を受け付けた状態の必要な処理性能を用いてＣＰＵ２９の動作周波数を制御してもよい。
【００７３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す導出部６０、フィードバック制御部６１、補正部６２、周波数制御部６３および登録部６４の各処理部が適宜統合または分割されてもよい。また、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７４】
［周波数制御プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図６は、周波数制御プログラムを実行するコンピュータを示す図である。
【００７５】
図６に示すように、コンピュータ３００は、ＣＰＵ３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３１０〜３４０の各部は、バス４００を介して接続される。
【００７６】
ＲＯＭ３２０には上記実施例の各処理部と同様の機能を発揮する周波数制御プログラム３２０ａが予め記憶される。例えば、上記実施例の導出部６０、フィードバック制御部６１、補正部６２、周波数制御部６３および登録部６４と同様の機能を発揮する周波数制御プログラム３２０ａを記憶させる。なお、周波数制御プログラム３２０ａについては、適宜分離しても良い。
【００７７】
ＨＤＤ３３０には、各種データを記憶する。例えば、ＨＤＤ３３０は、ＯＳや各種データを記憶する。
【００７８】
そして、ＣＰＵ３１０が、周波数制御プログラム３２０ａをＲＯＭ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、周波数制御プログラム３２０ａは、実施例の導出部６０、フィードバック制御部６１、補正部６２、周波数制御部６３および登録部６４と同様の動作を実行する。
【００７９】
なお、上記した周波数制御プログラム３２０ａについては、必ずしも最初からＲＯＭ３２０に記憶させることを要しない。周波数制御プログラム３２０ａはＨＤＤ３３０に記憶させてもよい。
【００８０】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、Compact  Disk  Read  Only  Memory（ＣＤ−ＲＯＭ）、Digital  Versatile  Disk（ＤＶＤ）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００８１】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８２】
１０      端末装置
２１      表示部
２２      入力部
２３      記憶部
２４      メモリ
２５      クロックコントローラ
２６      電源制御ＩＣ
２７      バッテリ
２８      温度センサ
３０      アプリケーションプログラム
３１、３２  性能情報
４０      スケジューラ
４１      カーネル
４２      ＣＰＵモニタ
４３、４３Ａ、４３Ｂ  アプリケーションプロセス
６０      導出部
６１      フィードバック制御部
６２      補正部
６３      周波数制御部
６４      登録部
【図１】
2014182512.tif 000003
【図２】
2014182512.tif 000004
【図３】
2014182512.tif 000005
【図４】
2014182512.tif 000006
【図５】
2014182512.tif 000007
【図６】
2014182512.tif 000008