(57)【特許請求の範囲】
【請求項１】
情報処理装置の第１要素の状態変化であってユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含む第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態であって前記情報処理装置の中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含む第２要素の状態と、の各組み合わせに対して、前記中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第１要素の状態変化を検出する検出部と、
前記検出部によって前記第１要素の状態変化が検出された場合に前記第２要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備え、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする情報処理装置。
【請求項２】
前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第１要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第２要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
情報処理装置の第１要素の状態変化であってユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含む第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態であって前記情報処理装置の中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含む第２要素の状態と、の各組み合わせに対して、前記中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第１要素の状態変化を検出し、
前記第１要素の状態変化を検出した場合に前記第２要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させ、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする情報処理プログラム。
【請求項８】
情報処理装置の第１要素の状態変化であってユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含む第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態であって前記情報処理装置の中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含む第２要素の状態と、の各組み合わせに対して、前記中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第１要素の状態変化を検出し、
前記第１要素の状態変化を検出した場合に前記第２要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御し、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラムおよび情報処理方法に関する。
【背景技術】
【０００２】
従来、携帯端末に限らず、組み込み系のシステムで多く利用されてきたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：オペレーティングシステム）はシングルタスクシステムであり、利用可能なアプリケーションも限られている。この性質を利用し、従来、アプリケーションごとに利用されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）の動作周波数を計測等により取得しておき、アプリケーションの起動と停止を検出することで、ＣＰＵの動作周波数を制御する技術が知られている。ＣＰＵの動作周波数を適切に制御することで、処理性能の確保と消費電力の抑制が可能になる（たとえば、下記特許文献１〜４参照。）。
【０００３】
これに対して、スマートフォン等はパソコン用のＯＳと同じく、多種多様なアプリケーションをユーザが自由にダウンロードしてインストールすることが可能であるため、アプリケーションが要求するＣＰＵの動作周波数を事前に取得しておくことが困難である。同様に、アプリケーション開発者も、多様な端末で自分が作成したアプリケーションがどの程度のＣＰＵ性能を利用するかの情報を把握することが困難であり、アプリケーションが利用するＣＰＵの動作周波数の情報を提供することができない。
【０００４】
ＣＰＵの動作周波数の制御のアーキテクチャとしては、たとえば、ＣＰＵの動作周波数の制御ポリシ（ＣＰＵの動作周波数を変更するアルゴリズム、変更の際の割合、上限／下限周波数等のパラメータ）をＯＳのカーネルに指示するアーキテクチャがある。カーネルは、ＣＰＵの利用率を監視し、ＣＰＵの利用率と制御ポリシから目標とするＣＰＵの動作周波数を決定する。そして、カーネルは、決定した目標周波数をＣＰＵの電圧およびクロックを制御する回路のドライバに通知する。ドライバは、カーネルからの通知に基づいて、回路の特性に合わせた手順によりＣＰＵの周波数と電圧を目標値に設定する。
【０００５】
このようなアーキテクチャにおいてＣＰＵの動作周波数を適切に制御するためには、制御ポリシを端末の利用目的や状態に合わせて選択することが求められる。たとえば、従来、アプリケーションの起動や終了、液晶ディスプレイのオン／オフ、外部給電の開始／停止、バッテリ残量の低下などのイベントと制御ポリシを１対１で対応付けることによって制御ポリシを決定する技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１３７５６号公報
【特許文献２】特開２００４−３５５５９９号公報
【特許文献３】特開２００１−２０２１６６号公報
【特許文献４】特開２００１−２７３０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、たとえばスマートフォンなどの多機能な情報処理装置においてはアプリケーションやハードウェアが様々な状態で動作するため、ＣＰＵの動作周波数を状況に応じて適切に設定することが困難であるという問題がある。
【０００８】
本発明は、上述した従来技術による問題点を解消するため、ＣＰＵの動作周波数を状況に応じて適切に設定することができる情報処理装置、情報処理プログラムおよび情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示技術は、情報処理装置の第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、前記第１要素の状態変化を検出し、前記第１要素の状態変化を検出した場合に前記第２要素の状態を判定し、前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する。
【発明の効果】
【００１０】
本発明の一側面によれば、ＣＰＵの動作周波数を状況に応じて適切に設定することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明にかかる情報処理装置の機能ブロック図である。
【図２】図２は、情報処理装置のハードウェア構成図である。
【図３】図３は、実施の形態１にかかる情報処理装置の機能ブロック図である。
【図４】図４は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。
【図５】図５は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。
【図６】図６は、システム状態調査モジュールによる処理の一例を示すフローチャートである。
【図７】図７は、実施の形態１にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図８−１】図８−１は、電力優先アルゴリズムおよび制限値の一例を示す図である。
【図８−２】図８−２は、処理優先アルゴリズムの一例および制限値を示す図である。
【図９−１】図９−１は、実施の形態１にかかる動作周波数の制御の一例を示す図（その１）である。
【図９−２】図９−２は、実施の形態１にかかる動作周波数の制御の一例を示す図（その２）である。
【図９−３】図９−３は、実施の形態１にかかる動作周波数の制御の一例を示す図（その３）である。
【図１０】図１０は、実施の形態２にかかる情報処理装置の機能ブロック図である。
【図１１】図１１は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。
【図１２】図１２は、実施の形態２にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図１３−１】図１３−１は、実施の形態２にかかる動作周波数の制御の一例を示す図（その１）である。
【図１３−２】図１３−２は、実施の形態２にかかる動作周波数の制御の一例を示す図（その２）である。
【図１３−３】図１３−３は、実施の形態２にかかる動作周波数の制御の一例を示す図（その３）である。
【図１４】図１４は、ＣＰＵの負荷と動作周波数の関係の一例を示す図である。
【図１５】図１５は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。
【図１６】図１６は、図１５に示した負荷判定処理の一例を示すフローチャートである。
【図１７】図１７は、図１６に示した負荷判定処理の変形例を示すフローチャートである。
【図１８】図１８は、実施の形態３にかかる情報処理装置の機能ブロック図である。
【図１９】図１９は、検査対象リストの一例を示す図である。
【図２０】図２０は、プロセス監視モジュールによる処理の一例を示すフローチャートである。
【図２１】図２１は、活動状態検査処理の一例を示すフローチャートである。
【図２２】図２２は、変化検出処理の一例を示すフローチャートである。
【図２３】図２３は、実施の形態３にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図２４】図２４は、実施の形態４にかかる情報処理装置の機能ブロック図である。
【図２５】図２５は、インストーラによる処理の一例を示すフローチャートである。
【図２６】図２６は、実施の形態５にかかる情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラムおよび情報処理方法の実施の形態を詳細に説明する。
【００１３】
（情報処理装置）
図１は、本発明にかかる情報処理装置の機能ブロック図である。図１に示すように、本発明にかかる情報処理装置１００は、たとえば、記憶部１１０と、検出部１２０と、判定部１３０と、検索部１４０と、制御部１５０と、中央処理装置１６０と、を備えている。
【００１４】
記憶部１１０は、対応情報１１１を記憶する。対応情報１１１は、情報処理装置１００の第１要素の状態変化（イベント）と、情報処理装置１００の第２要素の状態と、の各組み合わせに対して、中央処理装置１６０の動作周波数の制御規則が対応付けられる対応情報である。第１要素、第２要素および制御規則については後述する。
【００１５】
検出部１２０は、情報処理装置１００の第１要素の状態変化を検出する。検出部１２０は、第１要素の状態変化を検出した場合に、第１要素の状態変化を検出したことを判定部１３０および検索部１４０へ通知する。判定部１３０は、検出部１２０から第１要素の状態変化を検出したことを通知されると、情報処理装置１００の第２要素の状態を判定する。判定部１３０は、判定した第２要素の状態を検索部１４０へ通知する。
【００１６】
検索部１４０は、記憶部１１０に記憶された対応情報１１１から、検出部１２０から検出を通知された第１要素の状態変化と、判定部１３０から通知された第２要素の状態と、の組み合わせに対応する制御規則を検索する。検索部１４０は、検索により得られた制御規則を制御部１５０へ通知する。
【００１７】
制御部１５０は、検索部１４０から通知された制御規則に基づいて中央処理装置１６０の動作周波数を制御する。中央処理装置１６０は、情報処理装置１００のＣＰＵである。中央処理装置１６０は、情報処理装置１００のハードウェアを制御したり、情報処理装置１００のソフトウェアを実行したりする。
【００１８】
＜第１要素について＞
情報処理装置１００の第１要素は、たとえば情報処理装置１００が備えるハードウェアである。この場合は、第１要素の状態変化の一例として、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）のオン／オフ、外部給電の開始／終了、電池残量の閾値未満への低下などを挙げることができる。
【００１９】
または、第１要素は、たとえば情報処理装置１００の特定のソフトウェアである。この場合は、第１要素の状態変化の一例として、特定のソフトウェアの起動や停止などを挙げることができる。特定のソフトウェアは、たとえば、情報処理装置１００にインストールされ中央処理装置１６０によって実行される各アプリケーションのうちの特定のアプリケーションである。
【００２０】
＜第２要素について＞
情報処理装置１００の第２要素は、第１要素と異なる情報処理装置１００の要素である。たとえば、第２要素は、情報処理装置１００が備えるハードウェアである。この場合は、第２要素の状態の一例としては、ＬＣＤのオン／オフの状態、外部給電の状態、電池残量などを挙げることができる。または、情報処理装置１００の第２要素は、情報処理装置１００の特定のソフトウェアである。この場合は、第２要素の状態の一例としては、特定のソフトウェアが実行中か否かの状態などを挙げることができる。
【００２１】
＜制御規則＞
制御規則は、たとえば、中央処理装置１６０の動作周波数を制御するアルゴリズムやパラメータなどの制御ポリシである。中央処理装置１６０の処理能力および消費電力は、動作周波数の制御ポリシによって変化する。また、制御規則は、制御ポリシの変更方法を指示するアクションなどであってもよい。
【００２２】
動作周波数を制御するアルゴリズムとしては、たとえば、中央処理装置１６０の負荷（たとえば利用率や実行中のアプリケーションの数など）の変化に基づいて中央処理装置１６０の動作周波数の変更量を決定するアルゴリズムなどを挙げることができる。動作周波数を制御するパラメータとしては、たとえば、中央処理装置１６０の動作周波数の上限値や下限値などを挙げることができる。
【００２３】
たとえば、中央処理装置１６０の動作周波数が比較的高くなる制御ポリシを適用すると、中央処理装置１６０の処理能力および消費電力が比較的高くなる。一方、中央処理装置１６０の動作周波数が比較的低くなる制御ポリシを適用すると、中央処理装置１６０の処理能力および消費電力が比較的低くなる。
【００２４】
このように、情報処理装置１００においては、第１要素の状態変化だけでなく第２要素の状態も参照して中央処理装置１６０の制御規則を制御する。これにより、情報処理装置１００のソフトウェアやハードウェアが様々な状態で動作する場合において、状況に応じて処理能力と消費電力を適切に制御することが可能になる。
【００２５】
（情報処理装置のハードウェア構成）
図２は、情報処理装置のハードウェア構成図である。図２に示す情報処理装置１００は、図１に示した情報処理装置１００の構成例である。情報処理装置１００は、たとえばスマートフォンやタブレットＰＣなどの携帯情報端末である。
【００２６】
情報処理装置１００は、ＣＰＵ２０１と、メインメモリ２０２と、補助メモリ２０３と、クロック供給回路２０４と、電圧供給回路２０５と、ＲＦ部２０６と、アンテナ２０７と、電池パック２０８と、をハードウェアモジュールとして備えている。また、情報処理装置１００は、電源回路２０９と、カメラモジュール２１０と、ブルートゥースインターフェース２１１と、ＧＰＳモジュール２１２と、ＬＣＤ２１３と、センサ２１４と、外部給電部２１５と、をハードウェアモジュールとして備えている。各ハードウェアモジュールは、たとえばバスによって接続されている。
【００２７】
ＣＰＵ２０１は、図１に示した中央処理装置１６０に対応する構成である。ＣＰＵ２０１は、情報処理装置１００の全体の制御を司る。また、ＣＰＵ２０１は、クロック供給回路２０４から供給されるクロック信号および電圧供給回路２０５から供給される電圧によって動作する。メインメモリ２０２は、たとえばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メインメモリ２０２は、ＣＰＵ２０１のワークエリアとして使用される。
【００２８】
補助メモリ２０３は、たとえば、ハードディスクやフラッシュメモリなどの不揮発メモリである。補助メモリ２０３には、情報処理装置１００を動作させる各種のプログラムが記憶されている。補助メモリ２０３に記憶されたプログラムは、メインメモリ２０２にロードされてＣＰＵ２０１によって実行される。
【００２９】
クロック供給回路２０４は、周波数が可変のクロック信号をＣＰＵ２０１へ供給する。クロック供給回路２０４は、たとえば、クロック信号を発振する水晶振動子およびＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）などによって実現することができる。電圧供給回路２０５は、電源回路２０９から供給される電力によってＣＰＵ２０１に可変の電圧を供給する。電圧供給回路２０５は、たとえばボルテージディテクタおよびボルテージレギュレータなどによって実現することができる。
【００３０】
ＲＦ部２０６（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ：高周波）は、ＣＰＵ２０１からの制御により、高周波信号をアンテナ２０７から他の無線通信装置へ送信するトランスミッタの機能を有する。また、ＲＦ部２０６は、アンテナ２０７によって受信された高周波信号をベースバンド信号に変換してＣＰＵ２０１へ出力するレシーバの機能を有する。
【００３１】
電池パック２０８は、電源回路２０９へ電力を供給する。電池パック２０８は、たとえばリチウムイオン電池などの電池と電池保護用のＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：集積回路）などによって実現することができる。電源回路２０９は、電池パック２０８から供給される電力を情報処理装置１００の各ハードウェアモジュールへ供給する。また、電源回路２０９は、外部給電部２１５に外部電源が接続されている場合は、外部給電部２１５から供給される電力を情報処理装置１００の各ハードウェアモジュールへ供給してもよい。電源回路２０９は、たとえばスイッチングレギュレータおよびボルテージレギュレータによって実現することができる。
【００３２】
カメラモジュール２１０は、ＣＰＵ２０１からの制御により、被写体を撮影し、撮影により得られた映像データを取得する。ブルートゥースインターフェース２１１は、ＣＰＵ２０１からの制御により、他の通信装置との間でＢｌｕｅｔｏｏｔｈ（登録商標）による無線通信を行う通信インターフェースである。また、情報処理装置１００は、ブルートゥースインターフェース２１１の他に、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：構内通信網）などの無線通信インターフェースを備えていてもよい。
【００３３】
ＧＰＳモジュール２１２（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ：全地球測位システム）は、ＣＰＵ２０１からの制御により、人工衛星の発する電波を受信することによって情報処理装置１００の地球上の現在位置を示す位置情報を取得する。
【００３４】
ＬＣＤ２１３は、ＣＰＵ２０１からの制御により、ユーザに対して画像を表示する画像表示装置である。また、ＬＣＤ２１３は、タッチパッドなどの位置入力機能も兼ね備えたタッチパネルであってもよい。
【００３５】
センサ２１４は、ＣＰＵ２０１からの制御により、情報処理装置１００の内部の各状態を示す情報を取得する。センサ２１４としては、たとえば、加速度センサ、ジャイロセンサ、照度センサ、地磁気センサ、傾きセンサ、加圧センサ、接近センサ、温度センサなどを挙げることができる。
【００３６】
（実施の形態１）
（実施の形態１にかかる情報処理装置の構成）
図３は、実施の形態１にかかる情報処理装置の機能ブロック図である。図３に示すように、実施の形態１にかかる情報処理装置１００は、ハードウェア３１０としてＣＰＵ３１１および周波数／電圧制御回路３１２を備えている。ＣＰＵ３１１は、図２に示したＣＰＵ２０１に対応する構成である。周波数／電圧制御回路３１２は、図２に示したクロック供給回路２０４および電圧供給回路２０５に対応する構成である。
【００３７】
周波数／電圧制御回路３１２は、カーネル３２０から出力される制御命令に基づいてＣＰＵ３１１の動作周波数およびＣＰＵ３１１に供給される電圧を制御する。たとえば、周波数／電圧制御回路３１２は、ＣＰＵ３１１の動作周波数を減少させる場合はＣＰＵ３１１の電圧も減少させる。また、周波数／電圧制御回路３１２は、ＣＰＵ３１１の動作周波数を増加させる場合はＣＰＵ３１１の電圧も増加させる。
【００３８】
また、情報処理装置１００は、カーネル３２０と、ハードウェア監視モジュール３３０と、監視対象アプリ一覧３４１と、アプリ起動／停止監視モジュール３４２と、ポリシ制御ソフト３５０と、の機能を有する。また、情報処理装置１００は、システム状態調査モジュール３６０と、制御ポリシ変更ルール表３７０と、の機能を有する。図１に示した制御部１５０は、たとえば、周波数／電圧制御回路３１２、カーネル３２０およびポリシ制御ソフト３５０によって実現することができる。
【００３９】
カーネル３２０は、たとえば、ＣＰＵ３１１によって実行されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：オペレーティングシステム）の一部である。カーネル３２０は、ＣＰＵスケジューラ３２１と、目標周波数計算モジュール３２２と、動作周波数設定モジュール３２３と、システム状態取得用Ｉ／Ｆ３２４と、を備えている。
【００４０】
ＣＰＵスケジューラ３２１は、ＣＰＵ３１１の利用率を定期的に取得し、取得したＣＰＵ３１１の利用率を目標周波数計算モジュール３２２へ通知する。目標周波数計算モジュール３２２は、ＣＰＵ３１１の動作周波数の制御ポリシと、ＣＰＵスケジューラ３２１から通知された利用率と、に基づいて目標とするＣＰＵ３１１の動作周波数を決定する。また、目標周波数計算モジュール３２２は、ポリシ制御ソフト３５０から出力される設定変更命令にしたがって制御ポリシを変更する。目標周波数計算モジュール３２２は、決定した目標の動作周波数を動作周波数設定モジュール３２３へ通知する。
【００４１】
動作周波数設定モジュール３２３は、ＣＰＵ３１１の動作周波数が、目標周波数計算モジュール３２２から通知された動作周波数となるように周波数／電圧制御回路３１２へ制御命令を出力するドライバである。
【００４２】
ハードウェア監視モジュール３３０は、システム状態取得用Ｉ／Ｆ３２４から出力されるハードウェア状態を監視し、情報処理装置１００のハードウェアの状態変化を検出する。ハードウェア監視モジュール３３０は、ハードウェアの状態変化を検出すると、ハードウェアの状態変化を検出したことを示すハードウェア状態変化イベントをポリシ制御ソフト３５０へ通知する。
【００４３】
監視対象アプリ一覧３４１は、ＣＰＵ３１１によって実行される情報処理装置１００のアプリケーションのうちの監視対象のアプリケーション（特定のソフトウェア）を示す情報である。監視対象のアプリケーションは、たとえば、音楽や動画の再生アプリ、通話アプリなどの、ＣＰＵ３１１の大きな処理能力が要求されるアプリケーションである。監視対象アプリ一覧３４１は、たとえば図２に示した補助メモリ２０３に記憶されている。
【００４４】
アプリ起動／停止監視モジュール３４２は、システム状態取得用Ｉ／Ｆ３２４から出力されるアプリ／プロセス状態を監視し、監視対象アプリ一覧３４１に含まれるアプリケーション（プロセスなどでもよい）の起動または停止を検出する。アプリ起動／停止監視モジュール３４２は、アプリケーションの起動または停止を検出すると、アプリケーションの起動または停止を検出したことを示すアプリ起動／停止イベントをポリシ制御ソフト３５０へ通知する。図１に示した検出部１２０は、たとえばハードウェア監視モジュール３３０およびアプリ起動／停止監視モジュール３４２の少なくとも一方によって実現することができる。
【００４５】
ポリシ制御ソフト３５０は、目標周波数計算モジュール３２２へ設定変更命令を出力することで、ＣＰＵ３１１の動作周波数の制御ポリシを制御する。具体的には、ポリシ制御ソフト３５０は、ハードウェア監視モジュール３３０からハードウェア状態変化イベントが通知された場合に、システム状態取得用Ｉ／Ｆ３２４から出力されるハードウェア状態やアプリ／プロセス状態などのシステム状態を取得する。ポリシ制御ソフト３５０は、ハードウェア監視モジュール３３０から通知されたハードウェア状態変化イベントと、システム状態取得用Ｉ／Ｆ３２４から取得したシステム状態と、をキーとして制御ポリシ変更ルール表３７０からアクションリストを検索する。
【００４６】
また、ポリシ制御ソフト３５０は、アプリ起動／停止監視モジュール３４２からアプリ起動／停止イベントが通知された場合に、システム状態取得用Ｉ／Ｆ３２４から出力されるハードウェア状態やアプリ／プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト３５０は、アプリ起動／停止監視モジュール３４２から通知されたアプリ起動／停止イベントと、システム状態取得用Ｉ／Ｆ３２４から取得したシステム状態と、をキーとしてポリシ制御ソフト３５０からアクションリストを検索する。
【００４７】
ポリシ制御ソフト３５０は、検索したアクションにしたがって制御ポリシを変更することを指示する設定変更命令をカーネル３２０へ通知する。これにより、カーネル３２０の目標周波数計算モジュール３２２によってＣＰＵ３１１の動作周波数の制御ポリシが変更される。図１に示した検索部１４０は、たとえばポリシ制御ソフト３５０によって実現することができる。
【００４８】
システム状態調査モジュール３６０は、ポリシ制御ソフト３５０からの要求に応じて、ハードウェア状態やアプリ／プロセス状態などのシステム状態をシステム状態取得用Ｉ／Ｆ３２４から取得する。ハードウェア状態は、情報処理装置１００のハードウェアの状態を示す情報である。アプリ／プロセス状態は、情報処理装置１００の特定のアプリケーションやプロセスが実行中であるか否かを示す情報である。システム状態調査モジュール３６０は取得したシステム情報をポリシ制御ソフト３５０へ出力する。図１に示した判定部１３０は、たとえばシステム状態調査モジュール３６０によって実現することができる。
【００４９】
制御ポリシ変更ルール表３７０は、第１要素の状態変化（イベント）と、第２要素の状態と、の組み合わせごとにアクションリスト（アクション）が対応付けられた対応情報である。第１要素の状態変化には、ハードウェア状態変化イベントやアプリ起動／停止イベントなどが含まれる。第２要素の状態には、ハードウェア状態やアプリ／プロセス状態などが含まれる。アクションリストが示すアクションとしては、たとえば、動作周波数の制御のアルゴリズム（処理優先や電力優先など）の変更や、動作周波数の制御のパラメータ（動作周波数の変更割合、上限値や下限値など）の増減などを挙げることができる。
【００５０】
制御ポリシ変更ルール表３７０は、たとえば図２に示した補助メモリ２０３に記憶されている。テーブル３７１は、制御ポリシ変更ルール表３７０の具体例である。テーブル３７１においては、ハードウェア状態変化イベントやアプリ起動／停止イベントなどのイベントと、ハードウェア状態（ハード状態）と、アプリ／プロセス状態（アプリ状態）と、の組み合わせごとにアクションが対応付けられている。
【００５１】
このように、実施の形態１にかかる情報処理装置１００は、システム状態調査モジュール３６０を備え、イベント通知時にシステム状態を調査する。そして、情報処理装置１００は、イベントとシステム状態の組み合わせをキーとして多次元の制御ポリシ変更ルール表３７０を検索し、検索結果に基づいて制御ポリシを変更する。これにより、ＣＰＵ３１１の動作周波数を状況に応じて適切に設定することができる。
【００５２】
たとえば、ＬＣＤ２１３をオフ、または外部給電部２１５からの外部給電を中断などのイベントが発生した場合でも、特定のアプリケーションが起動している場合は、特定のアプリケーションが起動していない場合よりもＣＰＵの動作周波数の上限値を高くする。これにより、特定のアプリケーションの応答性能を向上させることができる。
【００５３】
また、制御ポリシ変更ルール表３７０は、制御ポリシそのものではなく、制御ポリシの変更のアクションを格納する構造とすることにより、制御ポリシ変更ルール表３７０のエントリ数（ルール数）を少なくすることができる。たとえば、動作周波数の上限値や下限値などのアクションはそれぞれ１つ（１行）のエントリに格納することができるため、現在の上限値や下限値ごとに変更後の上限値や下限値を対応付ける場合と比べてエントリ数を少なくすることができる。
【００５４】
ただし、制御ポリシ変更ルール表３７０に制御ポリシそのものを格納する構成とすることも可能である。この場合も、ＣＰＵ３１１の動作周波数を状況に応じて適切に設定することができる。
【００５５】
（情報処理装置による動作周波数の制御）
図４は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。情報処理装置１００は、ＣＰＵ３１１の動作周波数の制御として、たとえば図４に示す各ステップを実行する。まず、情報処理装置１００は、たとえば補助メモリ２０３に記憶された設定ルールを読み取る（ステップＳ４０１）。
【００５６】
設定ルールは、たとえば、情報処理装置１００のシステム状態と、ＣＰＵ３１１の動作周波数の制御ポリシと、を対応付ける情報である。システム状態には、たとえば、情報処理装置１００のハードウェアの状態や、情報処理装置１００のアプリケーションの起動または停止の状態などが含まれる。
【００５７】
つぎに、情報処理装置１００は、情報処理装置１００のシステム状態を取得する（ステップＳ４０２）。つぎに、情報処理装置１００は、ＣＰＵ３１１の動作周波数の制御ポリシの初期設定を行う（ステップＳ４０３）。具体的には、情報処理装置１００は、ステップＳ４０１によって読み取った設定ルールにおいて、ステップＳ４０２によって取得したシステム状態に対応する制御ポリシをＣＰＵ３１１の動作周波数の制御ポリシとして目標周波数計算モジュール３２２に設定する。
【００５８】
つぎに、情報処理装置１００は、情報処理装置１００のシステムイベントが発生したか否かを判断し（ステップＳ４０４）、システムイベントが発生するまで待つ（ステップＳ４０４：Ｎｏのループ）。システムイベントには、たとえば、特定のハードウェアの状態が所定の状態に変化したことを示すイベントや、特定のアプリケーションの起動や停止などのイベントなどが含まれる。
【００５９】
ステップＳ４０４において、システムイベントが発生すると（ステップＳ４０４：Ｙｅｓ）、情報処理装置１００は、発生したシステムイベントが情報処理装置１００のシャットダウンのイベントであるか否かを判断する（ステップＳ４０５）。シャットダウンのイベントである場合（ステップＳ４０５：Ｙｅｓ）は、情報処理装置１００は一連の制御を終了する。
【００６０】
ステップＳ４０５において、シャットダウンのイベントでない場合（ステップＳ４０５：Ｎｏ）は、情報処理装置１００は、情報処理装置１００のシステム状態を取得する（ステップＳ４０６）。つぎに、情報処理装置１００は、制御ポリシ変更ルール表３７０から、ステップＳ４０４において発生したシステムイベントとステップＳ４０６によって取得したシステム状態をキーとしてアクションリストを検索する（ステップＳ４０７）。つぎに、情報処理装置１００は、ステップＳ４０７によって検索したアクションリストが示すアクションを実行し（ステップＳ４０８）、ステップＳ４０４へ戻る。
【００６１】
以上の各ステップにより、システム状態に基づいてＣＰＵ３１１の動作周波数の制御ポリシの初期設定を行うことができる。また、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてＣＰＵ３１１の動作周波数の制御ポリシを変更することができる。
【００６２】
（ポリシ制御ソフトによる処理）
図５は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。図５に示す各ステップは、たとえば図４に示したステップＳ４０４，Ｓ４０６〜Ｓ４０８に対応する処理である。まず、ポリシ制御ソフト３５０は、ハードウェア監視モジュール３３０またはアプリ起動／停止監視モジュール３４２からシステムイベントが通知されたか否かを判断し（ステップＳ５０１）、システムイベントが通知されるまで待つ（ステップＳ５０１：Ｎｏのループ）。
【００６３】
ステップＳ５０１において、システムイベントが通知されると（ステップＳ５０１：Ｙｅｓ）、ポリシ制御ソフト３５０は、システム状態調査モジュール３６０へシステム状態の調査を依頼する（ステップＳ５０２）。つぎに、ポリシ制御ソフト３５０は、ステップＳ５０２による調査の依頼に対してシステム状態調査モジュール３６０から通知されたシステム状態を取得する（ステップＳ５０３）。
【００６４】
つぎに、ポリシ制御ソフト３５０は、ステップＳ５０１において通知されたシステムイベントと、ステップＳ５０３によって取得したシステム状態と、の組み合わせをキーとして制御ポリシ変更ルール表３７０を検索する（ステップＳ５０４）。そして、ポリシ制御ソフト３５０は、ステップＳ５０４による検索において、キーが一致するエントリが制御ポリシ変更ルール表３７０にあるか否かを判断する（ステップＳ５０５）。
【００６５】
ステップＳ５０５において、一致するエントリがない場合（ステップＳ５０５：Ｎｏ）は、ポリシ制御ソフト３５０は、ステップＳ５０１へ戻る。一致するエントリがある場合（ステップＳ５０５：Ｙｅｓ）は、ポリシ制御ソフト３５０は、一致するエントリのアクションリストを制御ポリシ変更ルール表３７０から取得する（ステップＳ５０６）。
【００６６】
つぎに、ポリシ制御ソフト３５０は、ステップＳ５０６によって取得したアクションリストの内容を実行し（ステップＳ５０７）、ステップＳ５０１へ戻る。以上の各ステップにより、ポリシ制御ソフト３５０は、システムイベントが発生した時のシステム状態を取得し、システムイベントとシステム状態の組み合わせに応じてＣＰＵ３１１の動作周波数の制御ポリシを変更することができる。
【００６７】
以上の各ステップにより、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてＣＰＵ３１１の動作周波数の制御ポリシを変更することができる。
【００６８】
（システム状態調査モジュールによる処理）
図６は、システム状態調査モジュールによる処理の一例を示すフローチャートである。システム状態調査モジュール３６０は、たとえば図６に示す各ステップを実行する。まず、システム状態調査モジュール３６０は、ポリシ制御ソフト３５０からシステム状態の調査の依頼があったか否かを判断し（ステップＳ６０１）、調査の依頼があるまで待つ（ステップＳ６０１：Ｎｏのループ）。
【００６９】
ステップＳ６０１において、調査の依頼があると（ステップＳ６０１：Ｙｅｓ）、システム状態調査モジュール３６０は、調査対象のシステム状態をカーネル３２０から取得する（ステップＳ６０２）。つぎに、システム状態調査モジュール３６０は、ステップＳ６０２によって取得したシステム状態をポリシ制御ソフト３５０へ通知し（ステップＳ６０３）、ステップＳ６０１へ戻る。以上の各ステップにより、ポリシ制御ソフト３５０からのシステム状態の調査の依頼に対して、調査対象のシステム状態をカーネル３２０から取得してポリシ制御ソフト３５０へ通知することができる。
【００７０】
（実施の形態１にかかる制御ポリシ変更ルール表）
図７は、実施の形態１にかかる制御ポリシ変更ルール表の一例を示す図表である。図７に示す制御ポリシ変更ルール表３７０は、図３に示した制御ポリシ変更ルール表３７０の一例である。図７に示すように、制御ポリシ変更ルール表３７０においては、「イベント」（第１要素の状態変化）と、「ハード状態」および「監視対象アプリ状態」（第２要素の状態）と、の組み合わせに対してアクションリストが対応付けられている。制御ポリシ変更ルール表３７０の「ＡＮＹ」は任意の状態を示している。
【００７１】
「イベント」の「ＬＣＤオン」は、ＬＣＤ２１３がオフからオンになったことを示すイベントである。「イベント」の「ＬＣＤオフ」は、ＬＣＤ２１３がオンからオフになったことを示すイベントである。「イベント」の「監視対象アプリ起動」は、監視対象のアプリケーションが起動されたことを示すイベントである。「監視対象アプリ停止」は、監視対象のアプリケーションが停止されたことを示すイベントである。
【００７２】
「ハード状態」は、情報処理装置１００の各ハードウェアの状態を示している。「ＬＣＤ」は、ＬＣＤ２１３のオン／オフの状態を示している。「バッテリ残量」は、電池パック２０８の残量を示している。「外部給電有無」は、電源回路２０９に接続された外部電源からの給電の有無を示している。「装置内部温度」は、センサ２１４によって計測された情報処理装置１００の内部の温度を示している。「無線」は、たとえばブルートゥースインターフェース２１１や無線ＬＡＮなどの無線機能のオン／オフの状態を示している。
【００７３】
「監視対象アプリ状態」は、監視対象のアプリケーションの「アクティブ」または「スリープ」の状態を示している。「アクティブ」は、監視対象のアプリケーションが起動されていることを示している。「スリープ」は、監視対象のアプリケーションが起動していないことを示している。
【００７４】
アクションリストの「処理優先アルゴリズム」および「電力優先アルゴリズム」は、ＣＰＵ３１１の動作周波数の制御のアルゴリズムを示している。「処理優先アルゴリズム」は、「電力優先アルゴリズム」よりもＣＰＵ３１１の動作周波数および消費電力が高くなるアルゴリズムである（たとえば図８−１，図８−２参照）。
【００７５】
図７に示すように、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンになった場合は、制御ポリシのアルゴリズムを「処理優先アルゴリズム」にするとともに、ＣＰＵ３１１の動作周波数の制限値として「上限値１」および「下限値１」を設定する。「上限値１」は、後述の「上限値２」より高い上限値である。「下限値１」は、後述の「下限値２」より高い下限値である。
【００７６】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフになり、かつ監視対象のアプリケーションの状態が「スリープ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値２」および「下限値２」を設定する。
【００７７】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフになり、かつ監視対象のアプリケーションの状態が「アクティブ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値１」および「下限値１」を設定する。
【００７８】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンの状態で監視対象のアプリケーションが起動すると、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンの状態で監視対象のアプリケーションが停止すると、「監視対象アプリケーション状態」を「スリープ」に設定する。
【００７９】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフの状態で監視対象のアプリケーションが起動すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値１」および「下限値１」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【００８０】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフの状態で監視対象のアプリケーションが停止すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値２」および「下限値２」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【００８１】
（アルゴリズムおよび制限値）
図８−１は、電力優先アルゴリズムおよび制限値の一例を示す図である。図８−１において、横軸は時間を示し、縦軸はＣＰＵ３１１の動作周波数を示している。タイミングｔ１からタイミングｔ２にかけて情報処理装置１００が実行中のアプリケーションの数が増加し、タイミングｔ２より後は情報処理装置１００が実行中のアプリケーションの数が減少したとする。上限値８１１および下限値８１２は、それぞれ図７に示した「上限値１」および「下限値１」を示している。
【００８２】
動作周波数変化８１０は、「電力優先アルゴリズム」を用いた場合のＣＰＵ３１１の動作周波数の変化を示している。動作周波数変化８１０に示すように、情報処理装置１００が実行中のアプリケーションの数が増加すると、ＣＰＵ３１１の動作周波数が上限値８１１となるまで比較的緩やかに段階的に増加する。
【００８３】
また、情報処理装置１００が実行中のアプリケーションの数が減少すると、ＣＰＵ３１１の動作周波数が下限値８１２となるまで比較的急峻に段階的に低下する。これにより、ＣＰＵ３１１の動作周波数が全体的に低くなる。このため、ＣＰＵ３１１の電圧も低くなり、ＣＰＵ３１１の消費電力を低くすることができる。なお、ＣＰＵ３１１の消費電力は、たとえばＣＰＵ３１１の動作周波数および電圧の２乗に比例して変化する。このため、ＣＰＵ３１１の動作周波数や電圧を低下させることでＣＰＵ３１１の消費電力を低下させることができる。
【００８４】
図８−２は、処理優先アルゴリズムの一例および制限値を示す図である。図８−２において、図８−１に示した部分と同様の部分については説明を省略する。図８−２に示す上限値８２１および下限値８２２は、それぞれ図７に示した「上限値２」および「下限値２」を示している。したがって、上限値８２１および下限値８２２は図８−１に示した上限値８１１および下限値８１２より高い値である。
【００８５】
動作周波数変化８２０は、「処理優先アルゴリズム」を用いた場合のＣＰＵ３１１の動作周波数の変化を示している。動作周波数変化８２０に示すように、情報処理装置１００が実行中のアプリケーションの数が増加すると、ＣＰＵ３１１の動作周波数が上限値８２１まで急峻に増加する。
【００８６】
また、情報処理装置１００が実行中のアプリケーションの数が減少すると、ＣＰＵ３１１の動作周波数が下限値８２２となるまで比較的緩やかに段階的に低下する。これにより、ＣＰＵ３１１の動作周波数が全体的に高くなり、ＣＰＵ３１１の処理能力を高くすることができる。これにより、起動したアプリケーションをスムーズに実行し、たとえばアプリケーションの応答性能を向上させることができる。
【００８７】
（実施の形態１にかかる動作周波数の制御）
図９−１〜図９−３は、実施の形態１にかかる動作周波数の制御の一例を示す図である。図９−１〜図９−３において、横軸は時間を示し、縦軸はＣＰＵ３１１の動作周波数を示している。縦軸の周波数ｆ５は、図７に示した「上限値１」に対応する周波数であるとする。縦軸の周波数ｆ３は、図７に示した「上限値２」に対応する周波数であるとする。
【００８８】
図９−１に示す動作周波数変化９１０は、ＬＣＤ２１３がオンになった場合に設定される制御ポリシによるＣＰＵ３１１の動作周波数の変化を示している。ＬＣＤ２１３がオンになった場合は、図７の制御ポリシ変更ルール表３７０に示したように、「処理優先アルゴリズム」および動作周波数の「上限値１」が設定される。このため、動作周波数の上限値は比較的高い周波数ｆ５となり、たとえばアプリケーションの起動に対して動作周波数が急峻に増加する。
【００８９】
図９−２に示す動作周波数変化９２０は、ＬＣＤ２１３がオフになり、監視対象のアプリケーションが実行中である場合に設定される制御ポリシによるＣＰＵ３１１の動作周波数の変化を示している。この場合は、図７の制御ポリシ変更ルール表３７０に示したように、「電力優先アルゴリズム」および動作周波数の「上限値１」が設定される。このため、動作周波数の上限値は比較的高い周波数ｆ５としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【００９０】
図９−３に示す動作周波数変化９３０は、ＬＣＤ２１３がオフになり、監視対象のアプリケーションが実行中でない場合に設定される制御ポリシによるＣＰＵ３１１の動作周波数の変化を示している。この場合は、図７の制御ポリシ変更ルール表３７０に示したように、「電力優先アルゴリズム」および動作周波数の「上限値２」が設定される。このため、動作周波数の上限値は比較的低い周波数ｆ１としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【００９１】
これにより、たとえば、ＬＣＤ２１３がオフになった際に、監視対象のアプリケーションが実行中である場合は、監視対象のアプリケーションが実行中でない場合よりもＣＰＵ３１１の動作周波数の上限値を高く設定することができる。たとえば監視対象のアプリケーションが音楽の再生アプリケーションである場合は、再生アプリケーションを実行中にＬＣＤ２１３がオフになっても、ＣＰＵ３１１の動作周波数の上限値を比較的高く設定することができる。これにより、再生アプリケーションのためのＣＰＵ３１１の処理能力を確保し、音飛びなどを回避することができる。
【００９２】
このように、実施の形態１にかかる情報処理装置１００によれば、第１要素の状態変化だけでなく第２要素の状態も参照してＣＰＵ３１１の動作周波数の制御規則を決定することができる。これにより、アプリケーションやハードウェアが様々な状態で動作する場合においても、状況に応じて処理能力と省電力を適切に制御することができる。
【００９３】
具体的には、ＣＰＵ３１１の高い処理能力が求められる状況ではＣＰＵ３１１の動作周波数が高くなる制御ポリシを設定することができる。また、ＣＰＵ３１１の高い処理能力が求められない状況や省電力が求められる状況ではＣＰＵ３１１の動作周波数が低くなる制御ポリシを設定することができる。
【００９４】
たとえば、ユーザが情報処理装置１００の操作を終了する場合のハードウェアの状態変化（操作終了時の状態変化）を第１要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第２要素の状態とする。そして、対応情報においては、操作終了時の状態変化と特定のソフトウェアが実行中の状態との組み合わせに対して、操作終了時の状態変化と特定のソフトウェアが実行中でない状態との組み合わせよりもＣＰＵ３１１の処理能力が高くなる制御規則を対応付ける。
【００９５】
ユーザが情報処理装置１００の操作を終了する場合のハードウェアの状態変化は、たとえばＬＣＤ２１３のオンからオフへの変化などである。ただし、ユーザが情報処理装置１００の操作を終了する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置１００の傾きの変化（たとえば傾いた状態から水平状態への変化）などであってもよい。これにより、たとえば、ユーザが情報処理装置１００の操作を終了する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる（処理性能が高くなる）制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。たとえば特定のソフトウェアが音楽再生や通話のアプリケーションである場合は、処理不足による音飛びなどを回避することができる。
【００９６】
また、情報処理装置１００への外部電源の供給停止などを第１要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第２要素の状態としてもよい。そして、対応情報においては、供給停止と特定のソフトウェアが実行中の状態との組み合わせに対して、供給停止と特定のソフトウェアが実行中でない状態との組み合わせよりもＣＰＵ３１１の処理能力が高くなる制御規則を対応付ける。これにより、たとえば、外部電源の供給が停止する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる（処理性能が高くなる）制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。
【００９７】
また、ＣＰＵ３１１によって実行される特定のソフトウェアの起動を第１要素の状態変化とし、情報処理装置１００の電池残量が閾値以上であるか否かの状態を第２要素の状態としてもよい。そして、対応情報においては、特定のソフトウェアの起動と電池残量が閾値以上でない状態との組み合わせに対して、特定のソフトウェアの起動と電池残量が閾値以上である状態との組み合わせよりもＣＰＵ３１１の消費電力が低くなる制御規則を対応付ける。これにより、たとえば、特定のソフトウェアを起動する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる（消費電力が低くなる）制御ポリシを適用し、消費電力を抑えることが可能になる。たとえば、バッテリ残量が少ないために電力優先の制御ポリシを適用している場合において、ＣＰＵ３１１の多くの処理能力が要求されるアプリケーションを起動した場合に、処理能力優先の制御ポリシを適用してしまうことを回避することができる。
【００９８】
また、ユーザが情報処理装置１００の操作を開始する場合のハードウェアの状態変化（操作開始時の状態変化）を第１要素の状態変化とし、情報処理装置１００の電池残量が閾値以上であるか否かの状態を第２要素の状態としてもよい。そして、対応情報においては、操作開始時の状態変化と電池残量が閾値以上でない状態との組み合わせに対して、操作開始時の状態変化と電池残量が閾値以上である状態との組み合わせよりもＣＰＵ３１１の消費電力が低くなる制御規則を対応付ける。
【００９９】
ユーザが情報処理装置１００の操作を開始する場合のハードウェアの状態変化は、たとえばＬＣＤ２１３のオフからオンへの変化などである。ただし、ユーザが情報処理装置１００の操作を開始する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置１００の傾きの変化（たとえば水平状態から傾いた状態への変化）やタッチパネルの操作などであってもよい。これにより、たとえば、ユーザが情報処理装置１００の操作を開始する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる（消費電力が低くなる）制御ポリシを適用し、消費電力を抑えることが可能になる。
【０１００】
また、情報処理装置１００のハードウェアのイベントとしては、上記の他に、ＧＰＳのオン／オフ、無線ＬＡＮのオン／オフ、情報処理装置１００の内部の温度の変化などを用いてもよい。また、情報処理装置１００のハードウェアの状態としては、上記の他に、ＧＰＳのオン／オフの状態、無線ＬＡＮのオン／オフの状態、情報処理装置１００の内部の温度などを用いてもよい。
【０１０１】
また、対応情報において対応付ける制御規則を、動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報とすることで、対応情報のエントリ数（ルール数）を少なくすることができる。これにより、対応情報の記憶に要求されるメモリ容量を削減することができる。また、対応情報を定義するシステム開発者やユーザの負担を軽減することができる。
【０１０２】
なお、図３に示した情報処理装置１００において、ハードウェア監視モジュール３３０およびアプリ起動／停止監視モジュール３４２のいずれかを省いた構成としてもよい。この場合は、図７に示した制御ポリシ変更ルール表３７０において、ハードウェア監視モジュール３３０およびアプリ起動／停止監視モジュール３４２のうちの省いたモジュールによって検出されるイベントを省いてもよい。
【０１０３】
（実施の形態２）
（実施の形態２にかかる情報処理装置の構成）
図１０は、実施の形態２にかかる情報処理装置の機能ブロック図である。図１０において、図３に示した部分と同様の部分については同一の符号を付して説明を省略する。図１０に示すように、実施の形態２にかかる情報処理装置１００は、図３に示した構成に加えてシステム負荷監視モジュール１００１を備えている。
【０１０４】
システム負荷監視モジュール１００１は、システム状態取得用Ｉ／Ｆ３２４からシステム負荷を監視する。システム負荷は、たとえばＣＰＵ３１１の利用率（たとえばＣＰＵ３１１が処理を実行している時間の割合）である。または、システム負荷は、ＣＰＵ３１１の処理待ち状態にあるプロセスの個数などであってもよい。システム負荷監視モジュール１００１は、システム負荷の所定の変化が発生すると、負荷変化イベントをポリシ制御ソフト３５０へ通知する。
【０１０５】
ポリシ制御ソフト３５０は、システム負荷監視モジュール１００１から負荷変化イベントが通知された場合に、システム状態取得用Ｉ／Ｆ３２４から出力されるハードウェア状態やアプリ／プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト３５０は、システム負荷監視モジュール１００１から通知された負荷変化イベントと、システム状態取得用Ｉ／Ｆ３２４から取得したシステム状態と、をキーとしてポリシ制御ソフト３５０からアクションリストを検索する。
【０１０６】
（システム負荷監視モジュールによる処理）
図１１は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。システム負荷監視モジュール１００１は、たとえば図１１に示す各ステップを実行する。まず、システム負荷監視モジュール１００１は、一定時間待機する（ステップＳ１１０１）。つぎに、システム負荷監視モジュール１００１は、システム状態取得用Ｉ／Ｆ３２４から現在のＣＰＵ３１１の負荷を取得する（ステップＳ１１０２）。
【０１０７】
つぎに、システム負荷監視モジュール１００１は、ステップＳ１１０２によって取得した負荷と閾値を比較し、ＣＰＵ３１１の負荷の高低を判定する（ステップＳ１１０３）。具体的には、システム負荷監視モジュール１００１は、負荷が閾値より高い場合は負荷を「高」と判定し、負荷が閾値より低い場合は負荷を「低」と判定する。または、システム負荷監視モジュール１００１は、負荷が第１閾値より高い場合は負荷を「高」と判定し、負荷が第２閾値（＜第１閾値）より低い場合は負荷を「低」と判定してもよい。
【０１０８】
つぎに、システム負荷監視モジュール１００１は、今回のステップＳ１１０３による判定結果を情報処理装置１００のメモリ（たとえば補助メモリ２０３）に記憶する（ステップＳ１１０４）。つぎに、システム負荷監視モジュール１００１は、前回のステップＳ１１０３による判定結果を情報処理装置１００のメモリ（たとえば補助メモリ２０３）から取得する（ステップＳ１１０５）。つぎに、システム負荷監視モジュール１００１は、ステップＳ１１０５により取得した前回の判定結果から、今回のステップＳ１１０３による判定結果が変化したか否かを判断する（ステップＳ１１０６）。
【０１０９】
ステップＳ１１０６において、判定結果が変化していない場合（ステップＳ１１０６：Ｎｏ）は、システム負荷監視モジュール１００１は、ステップＳ１１０１へ戻る。判定結果が変化した場合（ステップＳ１１０６：Ｙｅｓ）は、システム負荷監視モジュール１００１は、ステップＳ１１０７へ移行する。すなわち、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷が「低」から「高」、または「高」から「低」に変化したことを示す負荷変化イベントをポリシ制御ソフト３５０へ通知し（ステップＳ１１０７）、ステップＳ１１０１へ戻る。
【０１１０】
ポリシ制御ソフト３５０による処理は、たとえば図５に示した各ステップと同様である。ただし、ポリシ制御ソフト３５０は、ＣＰＵ３１１の負荷が変化したことがシステム負荷監視モジュール１００１から通知されると、ステップＳ５０１においてシステムイベントが通知されたと判断し、ステップＳ５０２へ移行する。
【０１１１】
これにより、ＣＰＵ３１１の負荷の変化を契機として、ＣＰＵ３１１の負荷に応じて制御ポリシを変更することができる。これにより、たとえば、「電力優先アルゴリズム」によりＣＰＵ３１１の動作周波数を制御している場合におけるＣＰＵ３１１の過負荷を回避することが可能になる。
【０１１２】
（実施の形態２にかかる制御ポリシ変更ルール表）
図１２は、実施の形態２にかかる制御ポリシ変更ルール表の一例を示す図表である。図１２において、図７に示した部分と同様の部分については説明を省略する。図１２に示す制御ポリシ変更ルール表３７０には、第２要素の状態として情報処理装置１００の「動作モード」が含まれている。「動作モード」には「通常モード」および「省電力モード」が含まれる。「省電力モード」は「通常モード」より消費電力が少ない動作モードである。
【０１１３】
ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンになると「動作モード」を「通常モード」に設定する。また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフになると「動作モード」を「省電力モード」に設定する。
【０１１４】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフで「動作モード」が「省電力モード」の状態でＣＰＵ３１１の負荷が「低」から「高」に変化すると、ＣＰＵ３１１の動作周波数の上限値を増加させる。また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフで「動作モード」が「省電力モード」の状態でＣＰＵ３１１の負荷が「高」から「低」に変化すると、ＣＰＵ３１１の動作周波数の上限値を減少させる。
【０１１５】
これにより、ＬＣＤ２１３がオフの状態で、「省電力モード」に設定されている場合においても、ＣＰＵ３１１の処理量が増加した場合はＣＰＵ３１１の動作周波数の上限値を増加させ、過負荷の状態を回避することができる。
【０１１６】
（実施の形態２にかかる動作周波数の制御）
図１３−１〜図１３−３は、実施の形態２にかかる動作周波数の制御の一例を示す図である。図１３−１〜図１３−３において、横軸は時間を示し、縦軸はＣＰＵ３１１の動作周波数を示している。図１３−１に示す動作周波数変化１３１０，１３２０，１３３０は、「電力優先アルゴリズム」において動作周波数の上限値がそれぞれ周波数ｆ３，ｆ４，ｆ５である制御ポリシによるＣＰＵ３１１の動作周波数の変化を示している。
【０１１７】
図１２の制御ポリシ変更ルール表３７０に示したように、ＣＰＵ３１１の負荷が「低」から「高」になると動作周波数の上限値が増加する。このため、動作周波数変化１３１０の状態でＣＰＵ３１１の負荷が「低」から「高」になると、動作周波数変化１３２０の状態へ移行する。また、動作周波数変化１３２０の状態でＣＰＵ３１１の負荷が「低」から「高」になると、動作周波数変化１３３０の状態へ移行する。
【０１１８】
また、図１２の制御ポリシ変更ルール表３７０に示したように、ＣＰＵ３１１の負荷が「高」から「低」になると動作周波数の上限値が減少する。このため、動作周波数変化１３３０の状態でＣＰＵ３１１の負荷が「高」から「低」になると、動作周波数変化１３２０の状態へ移行する。また、動作周波数変化１３２０の状態でＣＰＵ３１１の負荷が「高」から「低」になると、動作周波数変化１３１０の状態へ移行する。
【０１１９】
このように、ＣＰＵ３１１の負荷に応じてＣＰＵ３１１の動作周波数の上限値を変更し、ＣＰＵ３１１が過負荷になることを回避することができる。ここではＣＰＵ３１１の動作周波数の上限値について説明したが、ＣＰＵ３１１の負荷に応じてＣＰＵ３１１の動作周波数の下限値を変更してもよい。
【０１２０】
（システム負荷監視モジュールによる処理の変形例）
図１４は、ＣＰＵの負荷と動作周波数の関係の一例を示す図である。図１４において、横軸は時間を示し、左側の縦軸はＣＰＵ３１１の動作周波数を示し、右側の縦軸はＣＰＵ３１１の利用率（負荷）を示している。利用率変化１４１０は、アプリケーションの起動や停止などに起因するＣＰＵ３１１の利用率の変化を示している。動作周波数変化１４２０は、制御ポリシに基づくＣＰＵ３１１の動作周波数の変化を示している。
【０１２１】
利用率変化１４１０および動作周波数変化１４２０に示すように、ＣＰＵ３１１の動作周波数は、ＣＰＵ３１１の負荷に追従して変化する性質を有する。この性質を利用して、システム負荷監視モジュール１００１（算出部）は、ＣＰＵ３１１の動作周波数をシステム状態取得用Ｉ／Ｆ３２４から取得し、取得した動作周波数に基づいてＣＰＵ３１１の負荷を監視してもよい。具体的には、現在の制御ポリシにおける動作周波数の上限値でＣＰＵ３１１が動作している時間の割合を算出することでＣＰＵ３１１の負荷を算出することができる。
【０１２２】
図１５は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。システム負荷監視モジュール１００１は、たとえば図１５に示す各ステップを実行してもよい。まず、システム負荷監視モジュール１００１は、一定時間待機する（ステップＳ１５０１）。つぎに、システム負荷監視モジュール１００１は、負荷判定処理を行うことによってＣＰＵ３１１の負荷の高低を判定する（ステップＳ１５０２）。負荷判定処理については後述する。図１５に示すステップＳ１５０３〜Ｓ１５０６は、図１１に示したステップＳ１１０４〜Ｓ１１０７と同様である。
【０１２３】
図１６は、図１５に示した負荷判定処理の一例を示すフローチャートである。システム負荷監視モジュール１００１は、図１５に示したステップＳ１５０２において、たとえば図１６に示す各ステップを実行する。まず、システム負荷監視モジュール１００１は、周波数利用時間履歴をシステム状態取得用Ｉ／Ｆ３２４から取得する（ステップＳ１６０１）。周波数利用時間履歴は、たとえば、カーネル３２０が動作を開始してから現在までの期間における、ＣＰＵ３１１の動作周波数ごとの動作時間を示す情報である。
【０１２４】
つぎに、システム負荷監視モジュール１００１は、今回のステップＳ１６０１によって取得した周波数利用時間履歴を情報処理装置１００のメモリ（たとえば補助メモリ２０３）に記憶する（ステップＳ１６０２）。つぎに、システム負荷監視モジュール１００１は、前回のステップＳ１６０１によって取得した周波数利用時間履歴を情報処理装置１００のメモリ（たとえば補助メモリ２０３）から取得する（ステップＳ１６０３）。
【０１２５】
つぎに、システム負荷監視モジュール１００１は、今回のステップＳ１６０１によって取得した周波数利用時間履歴と、ステップＳ１６０３により取得した前回の周波数利用時間履歴と、の差分を算出する（ステップＳ１６０４）。具体的には、システム負荷監視モジュール１００１は、ＣＰＵ３１１の動作周波数ごとに、今回取得した周波数利用時間履歴が示すＣＰＵ３１１の動作時間と、前回取得した周波数利用時間履歴が示すＣＰＵ３１１の動作時間と、の差分を算出する。これにより、前回チェック時から現在までの経過時間におけるＣＰＵ３１１の動作周波数ごとの動作時間を算出することができる。
【０１２６】
つぎに、システム負荷監視モジュール１００１は、ステップＳ１６０４によって算出した動作周波数ごとの動作時間のうちの現在のＣＰＵ３１１の上限周波数での動作時間の、前回チェック時から現在までの経過時間に対する比率を算出する（ステップＳ１６０５）。つぎに、システム負荷監視モジュール１００１は、ステップＳ１６０５によって算出した比率が閾値より大きいか否かを判断する（ステップＳ１６０６）。
【０１２７】
ステップＳ１６０６において、算出した比率が閾値より大きい場合（ステップＳ１６０６：Ｙｅｓ）は、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷を「高」と判定し（ステップＳ１６０７）、一連の処理を終了する。算出した比率が閾値以下である場合（ステップＳ１６０６：Ｎｏ）は、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷を「低」と判定し（ステップＳ１６０８）、一連の処理を終了する。
【０１２８】
以上の各ステップにより、ＣＰＵ３１１の負荷の高低をＣＰＵ３１１の動作周波数に基づいて判定することができる。このため、実際のＣＰＵ３１１の負荷に即した負荷状態を判定することが可能になる。
【０１２９】
図１７は、図１６に示した負荷判定処理の変形例を示すフローチャートである。システム負荷監視モジュール１００１は、図１５に示したステップＳ１５０２において、たとえば図１７に示す各ステップを実行してもよい。図１７に示すステップＳ１７０１〜Ｓ１７０６は、図１６に示したステップＳ１６０１〜Ｓ１６０６と同様である。
【０１３０】
ただし、ステップＳ１７０５において、システム負荷監視モジュール１００１は、上限周波数での動作時間の経過時間に対する第１比率を算出する（ステップＳ１７０５）。つぎに、システム負荷監視モジュール１００１は、ステップＳ１７０５によって算出した第１比率が第１閾値より大きいか否かを判断する（ステップＳ１７０６）。
【０１３１】
ステップＳ１７０６において、第１比率が第１閾値より大きい場合（ステップＳ１７０６：Ｙｅｓ）は、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷を「高」と判定し（ステップＳ１７０７）、一連の処理を終了する。
【０１３２】
第１比率が第１閾値以下である場合（ステップＳ１７０６：Ｎｏ）は、システム負荷監視モジュール１００１は、ステップＳ１７０８へ移行する。すなわち、システム負荷監視モジュール１００１は、ステップＳ１７０４によって算出した動作周波数ごとの動作時間のうちの現在のＣＰＵ３１１の下限周波数での動作時間の、前回チェック時から現在までの経過時間に対する第２比率を算出する（ステップＳ１７０８）。
【０１３３】
つぎに、システム負荷監視モジュール１００１は、ステップＳ１７０８によって算出した第２比率が第２閾値より大きいか否かを判断する（ステップＳ１７０９）。第２閾値は、たとえば第１閾値より低い閾値である。第２比率が第２閾値より大きい場合（ステップＳ１７０９：Ｙｅｓ）は、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷を「中」と判定し（ステップＳ１７１０）、一連の処理を終了する。
【０１３４】
第２比率が第２閾値より大きくない場合（ステップＳ１７０９：Ｎｏ）は、システム負荷監視モジュール１００１は、ＣＰＵ３１１の負荷を「低」と判定し（ステップＳ１７１１）、一連の処理を終了する。以上の各ステップにより、ＣＰＵ３１１の負荷を「高」「中」「低」と判定することができる。ここでは第１閾値と第２閾値を用いてＣＰＵ３１１の負荷を３段階で判定する場合について説明したが、３つ以上の閾値を用いてＣＰＵ３１１の負荷を４段階以上で判定してもよい。
【０１３５】
このように、実施の形態２にかかる情報処理装置１００によれば、ＣＰＵ３１１の負荷量の閾値未満から閾値以上への負荷増加を第１要素の状態変化とし、負荷増加が検出された場合にＣＰＵ３１１の動作周波数の上限値を増加させることができる。これにより、ＣＰＵ３１１の負荷に応じてＣＰＵ３１１の動作周波数の上限値を制御し、ＣＰＵ３１１が過負荷になることを回避することができる。
【０１３６】
このため、たとえば、電力優先の制御ポリシを適用している場合に、ＣＰＵ３１１の処理能力が多量に要求される状況になると、ＣＰＵ３１１の動作周波数の上限値を増加させることができる。
【０１３７】
また、ＣＰＵ３１１の負荷（利用率）に対してＣＰＵ３１１の動作周波数が追従する場合において、ＣＰＵ３１１が動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて負荷増加を検出することで負荷増加を精度よく検出することができる。
【０１３８】
（実施の形態３）
図１８は、実施の形態３にかかる情報処理装置の機能ブロック図である。図１３において、図１０に示した部分と同様の部分については同一の符号を付して説明を省略する。図１８に示すように、実施の形態３にかかる情報処理装置１００は、図１０に示した構成に加えて、検査対象リスト１８０１と、プロセス監視モジュール１８０２と、を備えている。アプリ起動／停止監視モジュール３４２は、アプリケーションの起動または停止を検出すると、アプリ起動／停止イベントをプロセス監視モジュール１８０２へ通知する。
【０１３９】
検査対象リスト１８０１は、監視対象アプリ一覧３４１の各アプリケーションのうちの検査中のアプリケーションを示す情報である。検査対象リスト１８０１は、たとえば図２に示した補助メモリ２０３に記憶されている。
【０１４０】
プロセス監視モジュール１８０２は、アプリ起動／停止監視モジュール３４２からアプリ起動イベントが通知されると、起動したアプリケーションを検査対象リスト１８０１に追加する。また、プロセス監視モジュール１８０２は、アプリ起動／停止監視モジュール３４２からアプリ停止イベントが通知されると、停止したアプリケーションを検査対象リスト１８０１から削除する。
【０１４１】
また、プロセス監視モジュール１８０２は、検査対象リスト１８０１が示す各アプリケーションのＣＰＵ３１１の所定期間内の利用時間をシステム状態取得用Ｉ／Ｆ３２４から取得する。そして、プロセス監視モジュール１８０２は、取得した利用時間に基づいて、検査対象リスト１８０１が示す各アプリケーションが実際に利用されているか否かを定期的に判定する。たとえば、プロセス監視モジュール１８０２は、取得した利用時間が閾値以上であるか否かによってアプリケーションが実際に利用されているか否かを判定する。
【０１４２】
プロセス監視モジュール１８０２は、判定結果が変化すると、アプリ動作状態変化イベントをポリシ制御ソフト３５０へ通知する。これにより、実行中のアプリケーションについて、ユーザによる利用が開始された場合に、利用が開始された旨のアプリ動作状態変化イベントをポリシ制御ソフト３５０へ通知することができる。また、実行中のアプリケーションについて、ユーザによる利用が終了した場合に、利用が終了した旨のアプリ動作状態変化イベントをポリシ制御ソフト３５０へ通知することができる。
【０１４３】
ポリシ制御ソフト３５０は、プロセス監視モジュール１８０２からアプリ動作状態変化イベントが通知された場合に、システム状態取得用Ｉ／Ｆ３２４から出力されるハードウェア状態やアプリ／プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト３５０は、プロセス監視モジュール１８０２から通知されたアプリ動作状態変化イベントと、システム状態取得用Ｉ／Ｆ３２４から取得したシステム状態と、をキーとしてポリシ制御ソフト３５０からアクションリストを検索する。
【０１４４】
（検査対象リスト）
図１９は、検査対象リストの一例を示す図である。図１９に示す検査対象リスト１８０１は、図１８に示した検査対象リスト１８０１の一例である。検査対象リスト１８０１には、実行中の各アプリケーション（プロセス等でもよい）が含まれている。
【０１４５】
また、検査対象リスト１８０１の各アプリケーションには「ＣＰＵ利用時間」および「活動状態」が対応付けられている。「ＣＰＵ利用時間」は、システム状態取得用Ｉ／Ｆ３２４から取得したアプリケーションによるＣＰＵ３１１の所定期間内の累積の利用時間を示す情報である。
【０１４６】
「活動状態」はアプリケーションが実際に利用されているか否かを示す情報である。「活動状態」が「アクティブ」である場合は、アプリケーションが実際に利用されていることを示している。「活動状態」が「スリープ」である場合は、アプリケーションは実行中（起動済みで停止していない状態）であるが実際に利用されていないことを示している。
【０１４７】
たとえば、「ＣＰＵ利用時間」が閾値以上であるアプリケーションは「活動状態」が「アクティブ」となる。また、「ＣＰＵ利用時間」が閾値未満であるアプリケーションは「活動状態」が「スリープ」となる。
【０１４８】
（プロセス監視モジュールによる処理）
図２０は、プロセス監視モジュールによる処理の一例を示すフローチャートである。プロセス監視モジュール１８０２は、たとえば図２０に示す各ステップを実行する。まず、プロセス監視モジュール１８０２は、アプリ起動／停止監視モジュール３４２からアプリ起動イベントが通知されたか否かを判断する（ステップＳ２００１）。
【０１４９】
ステップＳ２００１において、アプリ起動イベントが通知された場合（ステップＳ２００１：Ｙｅｓ）は、プロセス監視モジュール１８０２は、アプリ起動イベントの対象アプリケーションを検査対象リスト１８０１に追加し（ステップＳ２００２）、ステップＳ２００５へ移行する。アプリ起動イベントが通知されていない場合（ステップＳ２００１：Ｎｏ）は、プロセス監視モジュール１８０２は、アプリ起動／停止監視モジュール３４２からアプリ停止イベントが通知されたか否かを判断する（ステップＳ２００３）。
【０１５０】
ステップＳ２００３において、アプリ停止イベントが通知された場合（ステップＳ２００３：Ｙｅｓ）は、プロセス監視モジュール１８０２は、アプリ停止イベントの対象アプリケーションを検査対象リスト１８０１から削除し（ステップＳ２００４）、ステップＳ２００５へ移行する。アプリ停止イベントが通知されていない場合（ステップＳ２００３：Ｎｏ）は、プロセス監視モジュール１８０２は、検査対象リスト１８０１の全アプリケーションをステップＳ２００６で処理済みか否かを判断する（ステップＳ２００５）。
【０１５１】
ステップＳ２００５において、検査対象リスト１８０１の全アプリケーションを処理済みでない場合（ステップＳ２００５：Ｎｏ）は、ステップＳ１６０１は、ステップＳ２００６へ移行する。すなわち、プロセス監視モジュール１８０２は、検査対象リスト１８０１に含まれる各アプリケーションのうちの未処理のアプリケーションについて活動状態を検査する活動状態検査処理を行う（ステップＳ２００６）。活動状態検査処理についてはたとえば図２１において説明する。
【０１５２】
ステップＳ２００５において、検査対象リスト１８０１の全アプリケーションを処理済みである場合（ステップＳ２００５：Ｙｅｓ）は、プロセス監視モジュール１８０２は、ステップＳ２００７へ移行する。すなわち、プロセス監視モジュール１８０２は、検査対象リスト１８０１に基づいて、検査対象リスト１８０１に含まれる各アプリケーションの活動状態を情報処理装置１００のメモリ（たとえば補助メモリ２０３）に記憶する（ステップＳ２００７）。
【０１５３】
つぎに、プロセス監視モジュール１８０２は、前回の各アプリケーションの活動状態を情報処理装置１００のメモリ（たとえば補助メモリ２０３）から読み出す（ステップＳ２００８）。つぎに、プロセス監視モジュール１８０２は、ステップＳ２００７によって読み出した前回の各アプリケーションの活動状態および検査対象リスト１８０１に基づいて変化検出処理を行い（ステップＳ２００９）、ステップＳ２００１へ戻る。変化検出処理についてはたとえば図２２において説明する。
【０１５４】
図２１は、活動状態検査処理の一例を示すフローチャートである。プロセス監視モジュール１８０２は、図２０に示したステップＳ２００６の活動状態検査処理として、検査対象アプリケーションについてたとえば図２１に示す各ステップを実行する。まず、プロセス監視モジュール１８０２は、検査対象アプリケーションの現在のＣＰＵ利用時間をシステム状態取得用Ｉ／Ｆ３２４から取得する（ステップＳ２１０１）。
【０１５５】
つぎに、プロセス監視モジュール１８０２は、今回のステップＳ２１０１によって取得したＣＰＵ利用時間をメモリ（たとえば補助メモリ２０３）に記憶する（ステップＳ２１０２）。つぎに、プロセス監視モジュール１８０２は、検査対象アプリケーションの前回のＣＰＵ利用時間をメモリ（たとえば補助メモリ２０３）から取得する（ステップＳ２１０３）。つぎに、プロセス監視モジュール１８０２は、ステップＳ２１０１によって取得した今回のＣＰＵ利用時間と、ステップＳ２１０３によって取得した前回のＣＰＵ利用時間と、の差分を算出する（ステップＳ２１０４）。
【０１５６】
つぎに、プロセス監視モジュール１８０２は、検査対象アプリケーションの活動状態を検査対象リスト１８０１から取得する（ステップＳ２１０５）。つぎに、プロセス監視モジュール１８０２は、ステップＳ２１０５によって取得した前回チェック時の活動状態がアクティブだったか否かを判断する（ステップＳ２１０６）。
【０１５７】
ステップＳ２１０６において、前回チェック時の活動状態がアクティブだった場合（ステップＳ２１０６：Ｙｅｓ）は、プロセス監視モジュール１８０２は、ステップＳ２１０４によって算出した差分が第１閾値より小さいか否かを判断する（ステップＳ２１０７）。差分が第１閾値より小さい場合（ステップＳ２１０７：Ｙｅｓ）は、プロセス監視モジュール１８０２は、検査対象リスト１８０１の活動状態をスリープに設定し（ステップＳ２１０８）、一連の処理を終了する。差分が第１閾値以上である場合（ステップＳ２１０７：Ｎｏ）は、プロセス監視モジュール１８０２は、一連の処理を終了する。
【０１５８】
ステップＳ２１０６において、前回チェック時の活動状態がアクティブでなくスリープであった場合（ステップＳ２１０６：Ｎｏ）は、プロセス監視モジュール１８０２は、ステップＳ２１０４によって算出した差分が第２閾値より大きいか否かを判断する（ステップＳ２１０９）。差分が第２閾値より大きい場合（ステップＳ２１０９：Ｙｅｓ）は、プロセス監視モジュール１８０２は、検査対象リスト１８０１の活動状態をアクティブに設定し（ステップＳ２１１０）、一連の処理を終了する。
【０１５９】
ステップＳ２１０９において、差分が第２閾値以下である場合（ステップＳ２１０９：Ｎｏ）は、プロセス監視モジュール１８０２は、一連の処理を終了する。以上の各ステップにより、検査対象リスト１８０１の各アプリケーションの活動状態を検査し、検査結果を検査対象リスト１８０１に反映させることができる。
【０１６０】
図２２は、変化検出処理の一例を示すフローチャートである。プロセス監視モジュール１８０２は、図２０に示したステップＳ２００９の変化検出処理として、たとえば図２２に示す各ステップを実行する。まず、プロセス監視モジュール１８０２は、検査対象リスト１８０１に活動状態がアクティブのアプリケーションが存在するか否かを判断する（ステップＳ２２０１）。
【０１６１】
ステップＳ２２０１において、検査対象リスト１８０１に活動状態がアクティブのアプリケーションが存在しない場合（ステップＳ２２０１：Ｎｏ）は、プロセス監視モジュール１８０２は、ステップＳ２２０２へ移行する。すなわち、プロセス監視モジュール１８０２は、図２０に示したステップＳ２００８によって取得した前回の各アプリケーションの活動状態がアクティブか否かを判断する（ステップＳ２２０２）。
【０１６２】
ステップＳ２２０２において、前回の各アプリケーションの活動状態がアクティブでなくスリープである場合（ステップＳ２２０２：Ｎｏ）は、プロセス監視モジュール１８０２は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がアクティブである場合（ステップＳ２２０２：Ｙｅｓ）は、プロセス監視モジュール１８０２は、ステップＳ２２０３へ移行する。すなわち、プロセス監視モジュール１８０２は、前回の活動状態がアクティブであったアプリケーションがスリープになった旨のイベント（アプリ動作状態変化イベント）をポリシ制御ソフト３５０へ通知し（ステップＳ２２０３）、一連の処理を終了する。
【０１６３】
ステップＳ２２０１において、検査対象リスト１８０１に活動状態がアクティブのアプリケーションが存在する場合（ステップＳ２２０１：Ｙｅｓ）は、プロセス監視モジュール１８０２は、ステップＳ２２０４へ移行する。すなわち、プロセス監視モジュール１８０２は、図２０に示したステップＳ２００８によって取得した前回の各アプリケーションの活動状態がスリープか否かを判断する（ステップＳ２２０４）。
【０１６４】
ステップＳ２２０４において、前回の各アプリケーションの活動状態がスリープでなくアクティブである場合（ステップＳ２２０４：Ｎｏ）は、プロセス監視モジュール１８０２は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がスリープである場合（ステップＳ２２０４：Ｙｅｓ）は、プロセス監視モジュール１８０２は、ステップＳ２２０５へ移行する。すなわち、プロセス監視モジュール１８０２は、前回の活動状態がスリープであったアプリケーションがアクティブになった旨のイベント（アプリ動作状態変化イベント）をポリシ制御ソフト３５０へ通知し（ステップＳ２２０５）、一連の処理を終了する。
【０１６５】
以上の各ステップにより、プロセス監視モジュール１８０２の各アプリケーションのうちの活動状態が変化したアプリケーションについてのアプリ動作状態変化イベントをポリシ制御ソフト３５０へ通知することができる。
【０１６６】
（実施の形態３にかかる制御ポリシ変更ルール表）
図２３は、実施の形態３にかかる制御ポリシ変更ルール表の一例を示す図表である。図２２において、図１２に示した部分と同様の部分については説明を省略する。図２３に示す制御ポリシ変更ルール表３７０のイベント（第１要素の状態変化）には、監視対象のアプリケーションの起動や停止に代えて監視対象のアプリケーションのアクティブやスリープが規定されている。
【０１６７】
ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンの状態で監視対象のアプリケーションがスリープからアクティブになると（利用が開始されると）、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオンの状態で監視対象のアプリケーションがアクティブからスリープになると（利用が終了すると）、「監視対象アプリケーション状態」を「スリープ」に設定する。
【０１６８】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフの状態で監視対象のアプリケーションがスリープからアクティブになると（利用が開始されると）、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値１」および「下限値１」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【０１６９】
また、ポリシ制御ソフト３５０は、ＬＣＤ２１３がオフの状態で監視対象のアプリケーションがアクティブからスリープになると（利用が終了すると）、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト３５０は、ＣＰＵ３１１の動作周波数の制限値として「上限値２」および「下限値２」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【０１７０】
このように、実施の形態３にかかる情報処理装置１００によれば、特定のアプリケーションの動作状態の変化を第１の状態変化とすることで、特定のアプリケーションの実際の利用状態に応じてＣＰＵ３１１の動作周波数の制御ポリシを変更することができる。また、特定のアプリケーションの動作状態の変化は、特定のアプリケーションによるＣＰＵ３１１の利用時間に基づいて検出することができる。
【０１７１】
たとえば、音楽再生などのアプリケーションを起動しているが実際に利用していない（たとえば音楽を再生していない）状態で情報処理装置１００を持ち運ぶ場合に、処理能力優先の制御ポリシを適用し続けて消費電力が大きくなることを回避することができる。
【０１７２】
また、特定のアプリケーションの動作状態の変化の検出処理を、特定のアプリケーションが起動すると開始し、特定のアプリケーションが停止すると終了することができる。これにより、特定のアプリケーションが実行中でない場合は検出処理を行わないようにし、情報処理装置１００の処理量を低減することができる。
【０１７３】
なお、図１８に示した情報処理装置１００において、システム負荷監視モジュール１００１を省いた構成としてもよい。この場合は、図２３に示した制御ポリシ変更ルール表３７０において、システム負荷監視モジュール１００１によって検出されるイベントを省いてもよい。
【０１７４】
（実施の形態４）
（実施の形態４にかかる情報処理装置の構成）
図２４は、実施の形態４にかかる情報処理装置の機能ブロック図である。図２４において、図３に示した部分と同様の部分については同一の符号を付して説明を省略する。図２４に示すように、実施の形態４にかかる情報処理装置１００は、図３に示した構成に加えて、監視対象アクセス許可情報リスト２４０１と、インストーラ２４０２と、ストレージ２４０３と、を備えている。
【０１７５】
監視対象アクセス許可情報リスト２４０１は、監視対象とすべきアプリケーションに含まれるアクセス許可情報を示す情報である。アクセス許可情報は、アプリケーションがアクセスする情報処理装置１００の機能（周辺機器など）や情報（個人情報など）を示す権限（パーミッション）を示す情報であり、たとえばアプリケーションのパッケージ内部にあらかじめ格納されている。監視対象アクセス許可情報リスト２４０１は、たとえば図２に示した補助メモリ２０３に記憶されている。
【０１７６】
インストーラ２４０２には、インストール対象のアプリケーションのパッケージが入力される。インストーラ２４０２は、入力されたパッケージをストレージ２４０３に格納することによってアプリケーションを情報処理装置１００にインストールする。
【０１７７】
また、インストーラ２４０２は、インストールするアプリケーションのパッケージに格納されたアクセス許可情報を取得する。そして、インストーラ２４０２は、取得したアクセス許可情報が監視対象アクセス許可情報リスト２４０１に含まれている場合は、インストールしたアプリケーションを監視対象アプリ一覧３４１に追加する。また、インストーラ２４０２は、取得したアクセス許可情報が監視対象アクセス許可情報リスト２４０１に含まれていない場合は、インストールしたアプリケーションを監視対象アプリ一覧３４１に追加しない。
【０１７８】
これにより、アプリケーションをインストールする際に、インストールするアプリケーションを監視対象とすべきか否かをアクセス許可情報に基づいて判断し、監視対象とすべきアプリケーションを監視対象アプリ一覧３４１に追加することができる。たとえば、通話や音楽再生、センサやＧＰＳを利用するアプリケーションなどのＣＰＵ３１１の処理能力が重要なアプリケーションに含まれるアクセス許可情報（たとえば通話やＧＰＳの機能へのアクセス権限）を監視対象アクセス許可情報リスト２４０１に格納しておく。
【０１７９】
これにより、処理能力が重要なアプリケーションをインストールする場合にアプリケーションを監視対象アプリ一覧３４１に自動的に追加することができる。また、監視対象アプリ一覧３４１へのアプリケーションの登録を容易にし、たとえばユーザが手動で登録を行う場合に比べてユーザの負担を軽減することができる。
【０１８０】
また、インストーラ２４０２は、ストレージ２４０３に格納されたアプリケーションを削除することによってアプリケーションをアンインストールするアンインストーラの機能を有していてもよい。インストーラ２４０２は、監視対象アプリ一覧３４１に含まれるアプリケーションをアンインストールする場合に、アンインストールするアプリケーションを監視対象アプリ一覧３４１から削除する。
【０１８１】
これにより、アンインストールされたアプリケーションをアプリ起動／停止監視モジュール３４２が監視し続けることを回避することができる。また、監視対象アプリ一覧３４１からのアプリケーションの削除を容易にし、たとえばユーザが手動で削除を行う場合に比べてユーザの負担を軽減することができる。
【０１８２】
（インストーラによる処理）
図２５は、インストーラによる処理の一例を示すフローチャートである。インストーラ２４０２は、アプリケーションのインストールまたはアンインストールの処理を行う場合に、たとえば図２５に示す各ステップを実行する。まず、インストーラ２４０２は、処理内容がインストールか否かを判断する（ステップＳ２５０１）。処理内容がインストールである場合（ステップＳ２５０１：Ｙｅｓ）は、インストーラ２４０２は、監視対象アクセス許可情報リスト２４０１を情報処理装置１００のメモリ（たとえば補助メモリ２０３）から読み取る（ステップＳ２５０２）。
【０１８３】
つぎに、インストーラ２４０２は、インストールの対象アプリケーションのアクセス許可情報を取得する（ステップＳ２５０３）。そして、インストーラ２４０２は、ステップＳ２５０３によって取得したアクセス許可情報が、ステップＳ２５０２によって読み取った監視対象アクセス許可情報リスト２４０１に存在するか否かを判断する（ステップＳ２５０４）。
【０１８４】
ステップＳ２５０４において、アクセス許可情報が監視対象アクセス許可情報リスト２４０１に存在しない場合（ステップＳ２５０４：Ｎｏ）は、インストーラ２４０２は、一連の処理を終了する。アクセス許可情報が監視対象アクセス許可情報リスト２４０１に存在する場合（ステップＳ２５０４：Ｙｅｓ）は、インストーラ２４０２は、監視対象アプリ一覧３４１に対象アプリケーションを追加し（ステップＳ２５０５）、一連の処理を終了する。
【０１８５】
ステップＳ２５０１において、処理内容がインストールでなくアンインストールである場合（ステップＳ２５０１：Ｎｏ）は、インストーラ２４０２は、アンインストールの対象アプリケーションが監視対象アプリ一覧３４１に存在するか否かを判断する（ステップＳ２５０６）。
【０１８６】
ステップＳ２５０６において、対象アプリケーションが監視対象アプリ一覧３４１に存在しない場合（ステップＳ２５０６：Ｎｏ）は、インストーラ２４０２は、一連の処理を終了する。対象アプリケーションが監視対象アプリ一覧３４１に存在する場合（ステップＳ２５０６：Ｙｅｓ）は、インストーラ２４０２は、監視対象アプリ一覧３４１から対象アプリケーションを削除し（ステップＳ２５０７）、一連の処理を終了する。
【０１８７】
以上の各ステップにより、インストールの対象アプリケーションのアクセス許可情報に基づいてインストールの対象アプリケーションを監視対象アプリ一覧３４１に追加するか否かを自動的に判定することができる。また、アンインストールの対象アプリケーションを監視対象アプリ一覧３４１から自動的に削除することができる。
【０１８８】
実施の形態４にかかる制御ポリシ変更ルール表３７０は、たとえば図７に示した制御ポリシ変更ルール表３７０と同様である。
【０１８９】
このように、実施の形態４にかかる情報処理装置１００によれば、インストールの対象のアプリケーションのアクセス権限が特定のアクセス権限である場合に対象のアプリケーションを特定のアプリケーションとして記憶することができる。これにより、特定のアプリケーションを容易に登録し、ユーザの負担を軽減することができる。
【０１９０】
また、情報処理装置１００によれば、アンインストールの対象のアプリケーションを特定のアプリケーションから除外することができる。これにより、特定のアプリケーションを容易に削除し、ユーザの負担を軽減することができる。
【０１９１】
（実施の形態５）
図２６は、実施の形態５にかかる情報処理装置の機能ブロック図である。図２６において、図１８または図２４に示した部分と同様の部分については同一の符号を付して説明を省略する。図２６に示すように、実施の形態５にかかる情報処理装置１００は、図１８に示した構成に加えて、監視対象アクセス許可情報リスト２４０１と、インストーラ２４０２と、ストレージ２４０３と、を備えている。
【０１９２】
このように、実施の形態３にかかる情報処理装置１００の構成と、実施の形態４にかかる情報処理装置１００の構成と、を組み合わせた構成としてもよい。これにより、特定のアプリケーションの実際の利用状態に応じてＣＰＵ３１１の動作周波数の制御ポリシを変更することができるとともに、ユーザの負担を軽減することができる。
【０１９３】
以上説明したように、情報処理装置、情報処理プログラムおよび情報処理方法によれば、ＣＰＵの動作周波数を状況に応じて適切に設定することができる。これにより、たとえば、ソフトウェアの応答性能を確保しつつ消費電力を削減することが可能になる。
【０１９４】
なお、上記の各実施の形態において説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１９５】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【０１９６】
（付記１）情報処理装置の第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第１要素の状態変化を検出する検出部と、
前記検出部によって前記第１要素の状態変化が検出された場合に前記第２要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備えることを特徴とする情報処理装置。
【０１９７】
（付記２）前記第１要素の状態変化は、ユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含み、
前記第２要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記１に記載の情報処理装置。
【０１９８】
（付記３）前記操作を終了する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオンからオフへの変化を含むことを特徴とする付記２に記載の情報処理装置。
【０１９９】
（付記４）前記第１要素の状態変化は、前記情報処理装置への外部電源の供給停止を含み、
前記第２要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記供給停止と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記供給停止と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記１〜３のいずれか一つに記載の情報処理装置。
【０２００】
（付記５）前記第１要素の状態変化は、前記中央処理装置によって実行される特定のソフトウェアの起動を含み、
前記第２要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報においては、前記特定のソフトウェアの起動と前記電池残量が閾値以上でない状態との組み合わせに対して、前記特定のソフトウェアの起動と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記１〜４のいずれか一つに記載の情報処理装置。
【０２０１】
（付記６）前記第１要素の状態変化は、ユーザが前記情報処理装置の操作を開始する場合のハードウェアの状態変化を含み、
前記第２要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報は、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上でない状態との組み合わせに対して、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記１〜５のいずれか一つに記載の情報処理装置。
【０２０２】
（付記７）前記操作を開始する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオフからオンへの変化を含むことを特徴とする付記６に記載の情報処理装置。
【０２０３】
（付記８）前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする付記１〜７のいずれか一つに記載の情報処理装置。
【０２０４】
（付記９）前記第１要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする付記１〜８のいずれか一つに記載の情報処理装置。
【０２０５】
（付記１０）前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする付記９に記載の情報処理装置。
【０２０６】
（付記１１）前記第１要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする付記１〜１０のいずれか一つに記載の情報処理装置。
【０２０７】
（付記１２）前記検出部は、前記特定のソフトウェアが起動すると前記動作状態の変化の検出処理を開始し、前記特定のソフトウェアが停止すると前記検出処理を終了することを特徴とする付記１１に記載の情報処理装置。
【０２０８】
（付記１３）前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第１要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第２要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする付記１〜１２のいずれか一つに記載の情報処理装置。
【０２０９】
（付記１４）前記情報処理装置にアプリケーションをアンインストールするアンインストーラを備え、
前記第１要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第２要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記アンインストーラは、アンインストールの対象のアプリケーションを前記特定のソフトウェアから除外することを特徴とする付記１〜１２のいずれか一つに記載の情報処理装置。
【０２１０】
（付記１５）情報処理装置の第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第１要素の状態変化を検出し、
前記第１要素の状態変化を検出した場合に前記第２要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【０２１１】
（付記１６）情報処理装置の第１要素の状態変化と、前記第１要素と異なる前記情報処理装置の第２要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第１要素の状態変化を検出し、
前記第１要素の状態変化を検出した場合に前記第２要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
ことを特徴とする情報処理方法。
【符号の説明】
【０２１２】
３７０  制御ポリシ変更ルール表
３７１  テーブル
８１０，８２０，９１０，９２０，９３０，１３１０，１３２０，１３３０，１４２０  動作周波数変化
８１１，８２１  上限値
８１２，８２２  下限値
１４１０  利用率変化
１８０１  検査対象リスト
【図１】
0005729197.tif 000002
【図２】
0005729197.tif 000003
【図３】
0005729197.tif 000004
【図４】
0005729197.tif 000005
【図５】
0005729197.tif 000006
【図６】
0005729197.tif 000007
【図７】
0005729197.tif 000008
【図８−１】
0005729197.tif 000009
【図８−２】
0005729197.tif 000010
【図９−１】
0005729197.tif 000011
【図９−２】
0005729197.tif 000012
【図９−３】
0005729197.tif 000013
【図１０】
0005729197.tif 000014
【図１１】
0005729197.tif 000015
【図１２】
0005729197.tif 000016
【図１３−１】
0005729197.tif 000017
【図１３−２】
0005729197.tif 000018
【図１３−３】
0005729197.tif 000019
【図１４】
0005729197.tif 000020
【図１５】
0005729197.tif 000021
【図１６】
0005729197.tif 000022
【図１７】
0005729197.tif 000023
【図１８】
0005729197.tif 000024
【図１９】
0005729197.tif 000025
【図２０】
0005729197.tif 000026
【図２１】
0005729197.tif 000027
【図２２】
0005729197.tif 000028
【図２３】
0005729197.tif 000029
【図２４】
0005729197.tif 000030
【図２５】
0005729197.tif 000031
【図２６】
0005729197.tif 000032