情報処理装置、情報処理プログラムおよび情報処理方法
【課題】CPUの動作周波数を状況に応じて適切に設定すること。
【解決手段】記憶部110は、情報処理装置100の第1要素の状態変化と、第1要素と異なる情報処理装置100の第2要素の状態と、の各組み合わせに対して、情報処理装置100の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する。検出部120は、第1要素の状態変化を検出する。判定部130は、検出部120によって第1要素の状態変化が検出された場合に第2要素の状態を判定する。検索部140は、記憶部110によって記憶された対応情報から、検出部120によって検出された状態変化と、判定部130によって判定された状態と、の組み合わせに対応する制御規則を検索する。制御部150は、検索部140によって検索された制御規則に基づいて中央処理装置の動作周波数を制御する。
【解決手段】記憶部110は、情報処理装置100の第1要素の状態変化と、第1要素と異なる情報処理装置100の第2要素の状態と、の各組み合わせに対して、情報処理装置100の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する。検出部120は、第1要素の状態変化を検出する。判定部130は、検出部120によって第1要素の状態変化が検出された場合に第2要素の状態を判定する。検索部140は、記憶部110によって記憶された対応情報から、検出部120によって検出された状態変化と、判定部130によって判定された状態と、の組み合わせに対応する制御規則を検索する。制御部150は、検索部140によって検索された制御規則に基づいて中央処理装置の動作周波数を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理プログラムおよび情報処理方法に関する。
【背景技術】
【0002】
従来、携帯端末に限らず、組み込み系のシステムで多く利用されてきたOS(Operating System:オペレーティングシステム)はシングルタスクシステムであり、利用可能なアプリケーションも限られている。この性質を利用し、従来、アプリケーションごとに利用されるCPU(Central Processing Unit:中央処理装置)の動作周波数を計測等により取得しておき、アプリケーションの起動と停止を検出することで、CPUの動作周波数を制御する技術が知られている。CPUの動作周波数を適切に制御することで、処理性能の確保と消費電力の抑制が可能になる(たとえば、下記特許文献1〜4参照。)。
【0003】
これに対して、スマートフォン等はパソコン用のOSと同じく、多種多様なアプリケーションをユーザが自由にダウンロードしてインストールすることが可能であるため、アプリケーションが要求するCPUの動作周波数を事前に取得しておくことが困難である。同様に、アプリケーション開発者も、多様な端末で自分が作成したアプリケーションがどの程度のCPU性能を利用するかの情報を把握することが困難であり、アプリケーションが利用するCPUの動作周波数の情報を提供することができない。
【0004】
CPUの動作周波数の制御のアーキテクチャとしては、たとえば、CPUの動作周波数の制御ポリシ(CPUの動作周波数を変更するアルゴリズム、変更の際の割合、上限/下限周波数等のパラメータ)をOSのカーネルに指示するアーキテクチャがある。カーネルは、CPUの利用率を監視し、CPUの利用率と制御ポリシから目標とするCPUの動作周波数を決定する。そして、カーネルは、決定した目標周波数をCPUの電圧およびクロックを制御する回路のドライバに通知する。ドライバは、カーネルからの通知に基づいて、回路の特性に合わせた手順によりCPUの周波数と電圧を目標値に設定する。
【0005】
このようなアーキテクチャにおいてCPUの動作周波数を適切に制御するためには、制御ポリシを端末の利用目的や状態に合わせて選択することが求められる。たとえば、従来、アプリケーションの起動や終了、液晶ディスプレイのオン/オフ、外部給電の開始/停止、バッテリ残量の低下などのイベントと制御ポリシを1対1で対応付けることによって制御ポリシを決定する技術が知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−13756号公報
【特許文献2】特開2004−355599号公報
【特許文献3】特開2001−202166号公報
【特許文献4】特開2001−273057号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述した従来技術では、たとえばスマートフォンなどの多機能な情報処理装置においてはアプリケーションやハードウェアが様々な状態で動作するため、CPUの動作周波数を状況に応じて適切に設定することが困難であるという問題がある。
【0008】
本発明は、上述した従来技術による問題点を解消するため、CPUの動作周波数を状況に応じて適切に設定することができる情報処理装置、情報処理プログラムおよび情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
開示技術は、情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、前記第1要素の状態変化を検出し、前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する。
【発明の効果】
【0010】
本発明の一側面によれば、CPUの動作周波数を状況に応じて適切に設定することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明にかかる情報処理装置の機能ブロック図である。
【図2】図2は、情報処理装置のハードウェア構成図である。
【図3】図3は、実施の形態1にかかる情報処理装置の機能ブロック図である。
【図4】図4は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。
【図5】図5は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。
【図6】図6は、システム状態調査モジュールによる処理の一例を示すフローチャートである。
【図7】図7は、実施の形態1にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図8−1】図8−1は、電力優先アルゴリズムおよび制限値の一例を示す図である。
【図8−2】図8−2は、処理優先アルゴリズムの一例および制限値を示す図である。
【図9−1】図9−1は、実施の形態1にかかる動作周波数の制御の一例を示す図(その1)である。
【図9−2】図9−2は、実施の形態1にかかる動作周波数の制御の一例を示す図(その2)である。
【図9−3】図9−3は、実施の形態1にかかる動作周波数の制御の一例を示す図(その3)である。
【図10】図10は、実施の形態2にかかる情報処理装置の機能ブロック図である。
【図11】図11は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。
【図12】図12は、実施の形態2にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図13−1】図13−1は、実施の形態2にかかる動作周波数の制御の一例を示す図(その1)である。
【図13−2】図13−2は、実施の形態2にかかる動作周波数の制御の一例を示す図(その2)である。
【図13−3】図13−3は、実施の形態2にかかる動作周波数の制御の一例を示す図(その3)である。
【図14】図14は、CPUの負荷と動作周波数の関係の一例を示す図である。
【図15】図15は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。
【図16】図16は、図15に示した負荷判定処理の一例を示すフローチャートである。
【図17】図17は、図16に示した負荷判定処理の変形例を示すフローチャートである。
【図18】図18は、実施の形態3にかかる情報処理装置の機能ブロック図である。
【図19】図19は、検査対象リストの一例を示す図である。
【図20】図20は、プロセス監視モジュールによる処理の一例を示すフローチャートである。
【図21】図21は、活動状態検査処理の一例を示すフローチャートである。
【図22】図22は、変化検出処理の一例を示すフローチャートである。
【図23】図23は、実施の形態3にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図24】図24は、実施の形態4にかかる情報処理装置の機能ブロック図である。
【図25】図25は、インストーラによる処理の一例を示すフローチャートである。
【図26】図26は、実施の形態5にかかる情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラムおよび情報処理方法の実施の形態を詳細に説明する。
【0013】
(情報処理装置)
図1は、本発明にかかる情報処理装置の機能ブロック図である。図1に示すように、本発明にかかる情報処理装置100は、たとえば、記憶部110と、検出部120と、判定部130と、検索部140と、制御部150と、中央処理装置160と、を備えている。
【0014】
記憶部110は、対応情報111を記憶する。対応情報111は、情報処理装置100の第1要素の状態変化(イベント)と、情報処理装置100の第2要素の状態と、の各組み合わせに対して、中央処理装置160の動作周波数の制御規則が対応付けられる対応情報である。第1要素、第2要素および制御規則については後述する。
【0015】
検出部120は、情報処理装置100の第1要素の状態変化を検出する。検出部120は、第1要素の状態変化を検出した場合に、第1要素の状態変化を検出したことを判定部130および検索部140へ通知する。判定部130は、検出部120から第1要素の状態変化を検出したことを通知されると、情報処理装置100の第2要素の状態を判定する。判定部130は、判定した第2要素の状態を検索部140へ通知する。
【0016】
検索部140は、記憶部110に記憶された対応情報111から、検出部120から検出を通知された第1要素の状態変化と、判定部130から通知された第2要素の状態と、の組み合わせに対応する制御規則を検索する。検索部140は、検索により得られた制御規則を制御部150へ通知する。
【0017】
制御部150は、検索部140から通知された制御規則に基づいて中央処理装置160の動作周波数を制御する。中央処理装置160は、情報処理装置100のCPUである。中央処理装置160は、情報処理装置100のハードウェアを制御したり、情報処理装置100のソフトウェアを実行したりする。
【0018】
<第1要素について>
情報処理装置100の第1要素は、たとえば情報処理装置100が備えるハードウェアである。この場合は、第1要素の状態変化の一例として、LCD(Liquid Crystal Display:液晶ディスプレイ)のオン/オフ、外部給電の開始/終了、電池残量の閾値未満への低下などを挙げることができる。
【0019】
または、第1要素は、たとえば情報処理装置100の特定のソフトウェアである。この場合は、第1要素の状態変化の一例として、特定のソフトウェアの起動や停止などを挙げることができる。特定のソフトウェアは、たとえば、情報処理装置100にインストールされ中央処理装置160によって実行される各アプリケーションのうちの特定のアプリケーションである。
【0020】
<第2要素について>
情報処理装置100の第2要素は、第1要素と異なる情報処理装置100の要素である。たとえば、第2要素は、情報処理装置100が備えるハードウェアである。この場合は、第2要素の状態の一例としては、LCDのオン/オフの状態、外部給電の状態、電池残量などを挙げることができる。または、情報処理装置100の第2要素は、情報処理装置100の特定のソフトウェアである。この場合は、第2要素の状態の一例としては、特定のソフトウェアが実行中か否かの状態などを挙げることができる。
【0021】
<制御規則>
制御規則は、たとえば、中央処理装置160の動作周波数を制御するアルゴリズムやパラメータなどの制御ポリシである。中央処理装置160の処理能力および消費電力は、動作周波数の制御ポリシによって変化する。また、制御規則は、制御ポリシの変更方法を指示するアクションなどであってもよい。
【0022】
動作周波数を制御するアルゴリズムとしては、たとえば、中央処理装置160の負荷(たとえば利用率や実行中のアプリケーションの数など)の変化に基づいて中央処理装置160の動作周波数の変更量を決定するアルゴリズムなどを挙げることができる。動作周波数を制御するパラメータとしては、たとえば、中央処理装置160の動作周波数の上限値や下限値などを挙げることができる。
【0023】
たとえば、中央処理装置160の動作周波数が比較的高くなる制御ポリシを適用すると、中央処理装置160の処理能力および消費電力が比較的高くなる。一方、中央処理装置160の動作周波数が比較的低くなる制御ポリシを適用すると、中央処理装置160の処理能力および消費電力が比較的低くなる。
【0024】
このように、情報処理装置100においては、第1要素の状態変化だけでなく第2要素の状態も参照して中央処理装置160の制御規則を制御する。これにより、情報処理装置100のソフトウェアやハードウェアが様々な状態で動作する場合において、状況に応じて処理能力と消費電力を適切に制御することが可能になる。
【0025】
(情報処理装置のハードウェア構成)
図2は、情報処理装置のハードウェア構成図である。図2に示す情報処理装置100は、図1に示した情報処理装置100の構成例である。情報処理装置100は、たとえばスマートフォンやタブレットPCなどの携帯情報端末である。
【0026】
情報処理装置100は、CPU201と、メインメモリ202と、補助メモリ203と、クロック供給回路204と、電圧供給回路205と、RF部206と、アンテナ207と、電池パック208と、をハードウェアモジュールとして備えている。また、情報処理装置100は、電源回路209と、カメラモジュール210と、ブルートゥースインターフェース211と、GPSモジュール212と、LCD213と、センサ214と、外部給電部215と、をハードウェアモジュールとして備えている。各ハードウェアモジュールは、たとえばバスによって接続されている。
【0027】
CPU201は、図1に示した中央処理装置160に対応する構成である。CPU201は、情報処理装置100の全体の制御を司る。また、CPU201は、クロック供給回路204から供給されるクロック信号および電圧供給回路205から供給される電圧によって動作する。メインメモリ202は、たとえばRAM(Random Access Memory)である。メインメモリ202は、CPU201のワークエリアとして使用される。
【0028】
補助メモリ203は、たとえば、ハードディスクやフラッシュメモリなどの不揮発メモリである。補助メモリ203には、情報処理装置100を動作させる各種のプログラムが記憶されている。補助メモリ203に記憶されたプログラムは、メインメモリ202にロードされてCPU201によって実行される。
【0029】
クロック供給回路204は、周波数が可変のクロック信号をCPU201へ供給する。クロック供給回路204は、たとえば、クロック信号を発振する水晶振動子およびRTC(Real Time Clock)などによって実現することができる。電圧供給回路205は、電源回路209から供給される電力によってCPU201に可変の電圧を供給する。電圧供給回路205は、たとえばボルテージディテクタおよびボルテージレギュレータなどによって実現することができる。
【0030】
RF部206(Radio Frequency:高周波)は、CPU201からの制御により、高周波信号をアンテナ207から他の無線通信装置へ送信するトランスミッタの機能を有する。また、RF部206は、アンテナ207によって受信された高周波信号をベースバンド信号に変換してCPU201へ出力するレシーバの機能を有する。
【0031】
電池パック208は、電源回路209へ電力を供給する。電池パック208は、たとえばリチウムイオン電池などの電池と電池保護用のIC(Integrated Circuit:集積回路)などによって実現することができる。電源回路209は、電池パック208から供給される電力を情報処理装置100の各ハードウェアモジュールへ供給する。また、電源回路209は、外部給電部215に外部電源が接続されている場合は、外部給電部215から供給される電力を情報処理装置100の各ハードウェアモジュールへ供給してもよい。電源回路209は、たとえばスイッチングレギュレータおよびボルテージレギュレータによって実現することができる。
【0032】
カメラモジュール210は、CPU201からの制御により、被写体を撮影し、撮影により得られた映像データを取得する。ブルートゥースインターフェース211は、CPU201からの制御により、他の通信装置との間でBluetooth(登録商標)による無線通信を行う通信インターフェースである。また、情報処理装置100は、ブルートゥースインターフェース211の他に、無線LAN(Local Area Network:構内通信網)などの無線通信インターフェースを備えていてもよい。
【0033】
GPSモジュール212(Global Positioning System:全地球測位システム)は、CPU201からの制御により、人工衛星の発する電波を受信することによって情報処理装置100の地球上の現在位置を示す位置情報を取得する。
【0034】
LCD213は、CPU201からの制御により、ユーザに対して画像を表示する画像表示装置である。また、LCD213は、タッチパッドなどの位置入力機能も兼ね備えたタッチパネルであってもよい。
【0035】
センサ214は、CPU201からの制御により、情報処理装置100の内部の各状態を示す情報を取得する。センサ214としては、たとえば、加速度センサ、ジャイロセンサ、照度センサ、地磁気センサ、傾きセンサ、加圧センサ、接近センサ、温度センサなどを挙げることができる。
【0036】
(実施の形態1)
(実施の形態1にかかる情報処理装置の構成)
図3は、実施の形態1にかかる情報処理装置の機能ブロック図である。図3に示すように、実施の形態1にかかる情報処理装置100は、ハードウェア310としてCPU311および周波数/電圧制御回路312を備えている。CPU311は、図2に示したCPU201に対応する構成である。周波数/電圧制御回路312は、図2に示したクロック供給回路204および電圧供給回路205に対応する構成である。
【0037】
周波数/電圧制御回路312は、カーネル320から出力される制御命令に基づいてCPU311の動作周波数およびCPU311に供給される電圧を制御する。たとえば、周波数/電圧制御回路312は、CPU311の動作周波数を減少させる場合はCPU311の電圧も減少させる。また、周波数/電圧制御回路312は、CPU311の動作周波数を増加させる場合はCPU311の電圧も増加させる。
【0038】
また、情報処理装置100は、カーネル320と、ハードウェア監視モジュール330と、監視対象アプリ一覧341と、アプリ起動/停止監視モジュール342と、ポリシ制御ソフト350と、の機能を有する。また、情報処理装置100は、システム状態調査モジュール360と、制御ポリシ変更ルール表370と、の機能を有する。図1に示した制御部150は、たとえば、周波数/電圧制御回路312、カーネル320およびポリシ制御ソフト350によって実現することができる。
【0039】
カーネル320は、たとえば、CPU311によって実行されるOS(Operating System:オペレーティングシステム)の一部である。カーネル320は、CPUスケジューラ321と、目標周波数計算モジュール322と、動作周波数設定モジュール323と、システム状態取得用I/F324と、を備えている。
【0040】
CPUスケジューラ321は、CPU311の利用率を定期的に取得し、取得したCPU311の利用率を目標周波数計算モジュール322へ通知する。目標周波数計算モジュール322は、CPU311の動作周波数の制御ポリシと、CPUスケジューラ321から通知された利用率と、に基づいて目標とするCPU311の動作周波数を決定する。また、目標周波数計算モジュール322は、ポリシ制御ソフト350から出力される設定変更命令にしたがって制御ポリシを変更する。目標周波数計算モジュール322は、決定した目標の動作周波数を動作周波数設定モジュール323へ通知する。
【0041】
動作周波数設定モジュール323は、CPU311の動作周波数が、目標周波数計算モジュール322から通知された動作周波数となるように周波数/電圧制御回路312へ制御命令を出力するドライバである。
【0042】
ハードウェア監視モジュール330は、システム状態取得用I/F324から出力されるハードウェア状態を監視し、情報処理装置100のハードウェアの状態変化を検出する。ハードウェア監視モジュール330は、ハードウェアの状態変化を検出すると、ハードウェアの状態変化を検出したことを示すハードウェア状態変化イベントをポリシ制御ソフト350へ通知する。
【0043】
監視対象アプリ一覧341は、CPU311によって実行される情報処理装置100のアプリケーションのうちの監視対象のアプリケーション(特定のソフトウェア)を示す情報である。監視対象のアプリケーションは、たとえば、音楽や動画の再生アプリ、通話アプリなどの、CPU311の大きな処理能力が要求されるアプリケーションである。監視対象アプリ一覧341は、たとえば図2に示した補助メモリ203に記憶されている。
【0044】
アプリ起動/停止監視モジュール342は、システム状態取得用I/F324から出力されるアプリ/プロセス状態を監視し、監視対象アプリ一覧341に含まれるアプリケーション(プロセスなどでもよい)の起動または停止を検出する。アプリ起動/停止監視モジュール342は、アプリケーションの起動または停止を検出すると、アプリケーションの起動または停止を検出したことを示すアプリ起動/停止イベントをポリシ制御ソフト350へ通知する。図1に示した検出部120は、たとえばハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342の少なくとも一方によって実現することができる。
【0045】
ポリシ制御ソフト350は、目標周波数計算モジュール322へ設定変更命令を出力することで、CPU311の動作周波数の制御ポリシを制御する。具体的には、ポリシ制御ソフト350は、ハードウェア監視モジュール330からハードウェア状態変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。ポリシ制御ソフト350は、ハードウェア監視モジュール330から通知されたハードウェア状態変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとして制御ポリシ変更ルール表370からアクションリストを検索する。
【0046】
また、ポリシ制御ソフト350は、アプリ起動/停止監視モジュール342からアプリ起動/停止イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、アプリ起動/停止監視モジュール342から通知されたアプリ起動/停止イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0047】
ポリシ制御ソフト350は、検索したアクションにしたがって制御ポリシを変更することを指示する設定変更命令をカーネル320へ通知する。これにより、カーネル320の目標周波数計算モジュール322によってCPU311の動作周波数の制御ポリシが変更される。図1に示した検索部140は、たとえばポリシ制御ソフト350によって実現することができる。
【0048】
システム状態調査モジュール360は、ポリシ制御ソフト350からの要求に応じて、ハードウェア状態やアプリ/プロセス状態などのシステム状態をシステム状態取得用I/F324から取得する。ハードウェア状態は、情報処理装置100のハードウェアの状態を示す情報である。アプリ/プロセス状態は、情報処理装置100の特定のアプリケーションやプロセスが実行中であるか否かを示す情報である。システム状態調査モジュール360は取得したシステム情報をポリシ制御ソフト350へ出力する。図1に示した判定部130は、たとえばシステム状態調査モジュール360によって実現することができる。
【0049】
制御ポリシ変更ルール表370は、第1要素の状態変化(イベント)と、第2要素の状態と、の組み合わせごとにアクションリスト(アクション)が対応付けられた対応情報である。第1要素の状態変化には、ハードウェア状態変化イベントやアプリ起動/停止イベントなどが含まれる。第2要素の状態には、ハードウェア状態やアプリ/プロセス状態などが含まれる。アクションリストが示すアクションとしては、たとえば、動作周波数の制御のアルゴリズム(処理優先や電力優先など)の変更や、動作周波数の制御のパラメータ(動作周波数の変更割合、上限値や下限値など)の増減などを挙げることができる。
【0050】
制御ポリシ変更ルール表370は、たとえば図2に示した補助メモリ203に記憶されている。テーブル371は、制御ポリシ変更ルール表370の具体例である。テーブル371においては、ハードウェア状態変化イベントやアプリ起動/停止イベントなどのイベントと、ハードウェア状態(ハード状態)と、アプリ/プロセス状態(アプリ状態)と、の組み合わせごとにアクションが対応付けられている。
【0051】
このように、実施の形態1にかかる情報処理装置100は、システム状態調査モジュール360を備え、イベント通知時にシステム状態を調査する。そして、情報処理装置100は、イベントとシステム状態の組み合わせをキーとして多次元の制御ポリシ変更ルール表370を検索し、検索結果に基づいて制御ポリシを変更する。これにより、CPU311の動作周波数を状況に応じて適切に設定することができる。
【0052】
たとえば、LCD213をオフ、または外部給電部215からの外部給電を中断などのイベントが発生した場合でも、特定のアプリケーションが起動している場合は、特定のアプリケーションが起動していない場合よりもCPUの動作周波数の上限値を高くする。これにより、特定のアプリケーションの応答性能を向上させることができる。
【0053】
また、制御ポリシ変更ルール表370は、制御ポリシそのものではなく、制御ポリシの変更のアクションを格納する構造とすることにより、制御ポリシ変更ルール表370のエントリ数(ルール数)を少なくすることができる。たとえば、動作周波数の上限値や下限値などのアクションはそれぞれ1つ(1行)のエントリに格納することができるため、現在の上限値や下限値ごとに変更後の上限値や下限値を対応付ける場合と比べてエントリ数を少なくすることができる。
【0054】
ただし、制御ポリシ変更ルール表370に制御ポリシそのものを格納する構成とすることも可能である。この場合も、CPU311の動作周波数を状況に応じて適切に設定することができる。
【0055】
(情報処理装置による動作周波数の制御)
図4は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。情報処理装置100は、CPU311の動作周波数の制御として、たとえば図4に示す各ステップを実行する。まず、情報処理装置100は、たとえば補助メモリ203に記憶された設定ルールを読み取る(ステップS401)。
【0056】
設定ルールは、たとえば、情報処理装置100のシステム状態と、CPU311の動作周波数の制御ポリシと、を対応付ける情報である。システム状態には、たとえば、情報処理装置100のハードウェアの状態や、情報処理装置100のアプリケーションの起動または停止の状態などが含まれる。
【0057】
つぎに、情報処理装置100は、情報処理装置100のシステム状態を取得する(ステップS402)。つぎに、情報処理装置100は、CPU311の動作周波数の制御ポリシの初期設定を行う(ステップS403)。具体的には、情報処理装置100は、ステップS401によって読み取った設定ルールにおいて、ステップS402によって取得したシステム状態に対応する制御ポリシをCPU311の動作周波数の制御ポリシとして目標周波数計算モジュール322に設定する。
【0058】
つぎに、情報処理装置100は、情報処理装置100のシステムイベントが発生したか否かを判断し(ステップS404)、システムイベントが発生するまで待つ(ステップS404:Noのループ)。システムイベントには、たとえば、特定のハードウェアの状態が所定の状態に変化したことを示すイベントや、特定のアプリケーションの起動や停止などのイベントなどが含まれる。
【0059】
ステップS404において、システムイベントが発生すると(ステップS404:Yes)、情報処理装置100は、発生したシステムイベントが情報処理装置100のシャットダウンのイベントであるか否かを判断する(ステップS405)。シャットダウンのイベントである場合(ステップS405:Yes)は、情報処理装置100は一連の制御を終了する。
【0060】
ステップS405において、シャットダウンのイベントでない場合(ステップS405:No)は、情報処理装置100は、情報処理装置100のシステム状態を取得する(ステップS406)。つぎに、情報処理装置100は、制御ポリシ変更ルール表370から、ステップS404において発生したシステムイベントとステップS406によって取得したシステム状態をキーとしてアクションリストを検索する(ステップS407)。つぎに、情報処理装置100は、ステップS407によって検索したアクションリストが示すアクションを実行し(ステップS408)、ステップS404へ戻る。
【0061】
以上の各ステップにより、システム状態に基づいてCPU311の動作周波数の制御ポリシの初期設定を行うことができる。また、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてCPU311の動作周波数の制御ポリシを変更することができる。
【0062】
(ポリシ制御ソフトによる処理)
図5は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。図5に示す各ステップは、たとえば図4に示したステップS404,S406〜S408に対応する処理である。まず、ポリシ制御ソフト350は、ハードウェア監視モジュール330またはアプリ起動/停止監視モジュール342からシステムイベントが通知されたか否かを判断し(ステップS501)、システムイベントが通知されるまで待つ(ステップS501:Noのループ)。
【0063】
ステップS501において、システムイベントが通知されると(ステップS501:Yes)、ポリシ制御ソフト350は、システム状態調査モジュール360へシステム状態の調査を依頼する(ステップS502)。つぎに、ポリシ制御ソフト350は、ステップS502による調査の依頼に対してシステム状態調査モジュール360から通知されたシステム状態を取得する(ステップS503)。
【0064】
つぎに、ポリシ制御ソフト350は、ステップS501において通知されたシステムイベントと、ステップS503によって取得したシステム状態と、の組み合わせをキーとして制御ポリシ変更ルール表370を検索する(ステップS504)。そして、ポリシ制御ソフト350は、ステップS504による検索において、キーが一致するエントリが制御ポリシ変更ルール表370にあるか否かを判断する(ステップS505)。
【0065】
ステップS505において、一致するエントリがない場合(ステップS505:No)は、ポリシ制御ソフト350は、ステップS501へ戻る。一致するエントリがある場合(ステップS505:Yes)は、ポリシ制御ソフト350は、一致するエントリのアクションリストを制御ポリシ変更ルール表370から取得する(ステップS506)。
【0066】
つぎに、ポリシ制御ソフト350は、ステップS506によって取得したアクションリストの内容を実行し(ステップS507)、ステップS501へ戻る。以上の各ステップにより、ポリシ制御ソフト350は、システムイベントが発生した時のシステム状態を取得し、システムイベントとシステム状態の組み合わせに応じてCPU311の動作周波数の制御ポリシを変更することができる。
【0067】
以上の各ステップにより、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてCPU311の動作周波数の制御ポリシを変更することができる。
【0068】
(システム状態調査モジュールによる処理)
図6は、システム状態調査モジュールによる処理の一例を示すフローチャートである。システム状態調査モジュール360は、たとえば図6に示す各ステップを実行する。まず、システム状態調査モジュール360は、ポリシ制御ソフト350からシステム状態の調査の依頼があったか否かを判断し(ステップS601)、調査の依頼があるまで待つ(ステップS601:Noのループ)。
【0069】
ステップS601において、調査の依頼があると(ステップS601:Yes)、システム状態調査モジュール360は、調査対象のシステム状態をカーネル320から取得する(ステップS602)。つぎに、システム状態調査モジュール360は、ステップS602によって取得したシステム状態をポリシ制御ソフト350へ通知し(ステップS603)、ステップS601へ戻る。以上の各ステップにより、ポリシ制御ソフト350からのシステム状態の調査の依頼に対して、調査対象のシステム状態をカーネル320から取得してポリシ制御ソフト350へ通知することができる。
【0070】
(実施の形態1にかかる制御ポリシ変更ルール表)
図7は、実施の形態1にかかる制御ポリシ変更ルール表の一例を示す図表である。図7に示す制御ポリシ変更ルール表370は、図3に示した制御ポリシ変更ルール表370の一例である。図7に示すように、制御ポリシ変更ルール表370においては、「イベント」(第1要素の状態変化)と、「ハード状態」および「監視対象アプリ状態」(第2要素の状態)と、の組み合わせに対してアクションリストが対応付けられている。制御ポリシ変更ルール表370の「ANY」は任意の状態を示している。
【0071】
「イベント」の「LCDオン」は、LCD213がオフからオンになったことを示すイベントである。「イベント」の「LCDオフ」は、LCD213がオンからオフになったことを示すイベントである。「イベント」の「監視対象アプリ起動」は、監視対象のアプリケーションが起動されたことを示すイベントである。「監視対象アプリ停止」は、監視対象のアプリケーションが停止されたことを示すイベントである。
【0072】
「ハード状態」は、情報処理装置100の各ハードウェアの状態を示している。「LCD」は、LCD213のオン/オフの状態を示している。「バッテリ残量」は、電池パック208の残量を示している。「外部給電有無」は、電源回路209に接続された外部電源からの給電の有無を示している。「装置内部温度」は、センサ214によって計測された情報処理装置100の内部の温度を示している。「無線」は、たとえばブルートゥースインターフェース211や無線LANなどの無線機能のオン/オフの状態を示している。
【0073】
「監視対象アプリ状態」は、監視対象のアプリケーションの「アクティブ」または「スリープ」の状態を示している。「アクティブ」は、監視対象のアプリケーションが起動されていることを示している。「スリープ」は、監視対象のアプリケーションが起動していないことを示している。
【0074】
アクションリストの「処理優先アルゴリズム」および「電力優先アルゴリズム」は、CPU311の動作周波数の制御のアルゴリズムを示している。「処理優先アルゴリズム」は、「電力優先アルゴリズム」よりもCPU311の動作周波数および消費電力が高くなるアルゴリズムである(たとえば図8−1,図8−2参照)。
【0075】
図7に示すように、ポリシ制御ソフト350は、LCD213がオンになった場合は、制御ポリシのアルゴリズムを「処理優先アルゴリズム」にするとともに、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定する。「上限値1」は、後述の「上限値2」より高い上限値である。「下限値1」は、後述の「下限値2」より高い下限値である。
【0076】
また、ポリシ制御ソフト350は、LCD213がオフになり、かつ監視対象のアプリケーションの状態が「スリープ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定する。
【0077】
また、ポリシ制御ソフト350は、LCD213がオフになり、かつ監視対象のアプリケーションの状態が「アクティブ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定する。
【0078】
また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションが起動すると、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションが停止すると、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0079】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションが起動すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【0080】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションが停止すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0081】
(アルゴリズムおよび制限値)
図8−1は、電力優先アルゴリズムおよび制限値の一例を示す図である。図8−1において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。タイミングt1からタイミングt2にかけて情報処理装置100が実行中のアプリケーションの数が増加し、タイミングt2より後は情報処理装置100が実行中のアプリケーションの数が減少したとする。上限値811および下限値812は、それぞれ図7に示した「上限値1」および「下限値1」を示している。
【0082】
動作周波数変化810は、「電力優先アルゴリズム」を用いた場合のCPU311の動作周波数の変化を示している。動作周波数変化810に示すように、情報処理装置100が実行中のアプリケーションの数が増加すると、CPU311の動作周波数が上限値811となるまで比較的緩やかに段階的に増加する。
【0083】
また、情報処理装置100が実行中のアプリケーションの数が減少すると、CPU311の動作周波数が下限値812となるまで比較的急峻に段階的に低下する。これにより、CPU311の動作周波数が全体的に低くなる。このため、CPU311の電圧も低くなり、CPU311の消費電力を低くすることができる。なお、CPU311の消費電力は、たとえばCPU311の動作周波数および電圧の2乗に比例して変化する。このため、CPU311の動作周波数や電圧を低下させることでCPU311の消費電力を低下させることができる。
【0084】
図8−2は、処理優先アルゴリズムの一例および制限値を示す図である。図8−2において、図8−1に示した部分と同様の部分については説明を省略する。図8−2に示す上限値821および下限値822は、それぞれ図7に示した「上限値2」および「下限値2」を示している。したがって、上限値821および下限値822は図8−1に示した上限値811および下限値812より高い値である。
【0085】
動作周波数変化820は、「処理優先アルゴリズム」を用いた場合のCPU311の動作周波数の変化を示している。動作周波数変化820に示すように、情報処理装置100が実行中のアプリケーションの数が増加すると、CPU311の動作周波数が上限値821まで急峻に増加する。
【0086】
また、情報処理装置100が実行中のアプリケーションの数が減少すると、CPU311の動作周波数が下限値822となるまで比較的緩やかに段階的に低下する。これにより、CPU311の動作周波数が全体的に高くなり、CPU311の処理能力を高くすることができる。これにより、起動したアプリケーションをスムーズに実行し、たとえばアプリケーションの応答性能を向上させることができる。
【0087】
(実施の形態1にかかる動作周波数の制御)
図9−1〜図9−3は、実施の形態1にかかる動作周波数の制御の一例を示す図である。図9−1〜図9−3において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。縦軸の周波数f5は、図7に示した「上限値1」に対応する周波数であるとする。縦軸の周波数f3は、図7に示した「上限値2」に対応する周波数であるとする。
【0088】
図9−1に示す動作周波数変化910は、LCD213がオンになった場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。LCD213がオンになった場合は、図7の制御ポリシ変更ルール表370に示したように、「処理優先アルゴリズム」および動作周波数の「上限値1」が設定される。このため、動作周波数の上限値は比較的高い周波数f5となり、たとえばアプリケーションの起動に対して動作周波数が急峻に増加する。
【0089】
図9−2に示す動作周波数変化920は、LCD213がオフになり、監視対象のアプリケーションが実行中である場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。この場合は、図7の制御ポリシ変更ルール表370に示したように、「電力優先アルゴリズム」および動作周波数の「上限値1」が設定される。このため、動作周波数の上限値は比較的高い周波数f5としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【0090】
図9−3に示す動作周波数変化930は、LCD213がオフになり、監視対象のアプリケーションが実行中でない場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。この場合は、図7の制御ポリシ変更ルール表370に示したように、「電力優先アルゴリズム」および動作周波数の「上限値2」が設定される。このため、動作周波数の上限値は比較的低い周波数f1としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【0091】
これにより、たとえば、LCD213がオフになった際に、監視対象のアプリケーションが実行中である場合は、監視対象のアプリケーションが実行中でない場合よりもCPU311の動作周波数の上限値を高く設定することができる。たとえば監視対象のアプリケーションが音楽の再生アプリケーションである場合は、再生アプリケーションを実行中にLCD213がオフになっても、CPU311の動作周波数の上限値を比較的高く設定することができる。これにより、再生アプリケーションのためのCPU311の処理能力を確保し、音飛びなどを回避することができる。
【0092】
このように、実施の形態1にかかる情報処理装置100によれば、第1要素の状態変化だけでなく第2要素の状態も参照してCPU311の動作周波数の制御規則を決定することができる。これにより、アプリケーションやハードウェアが様々な状態で動作する場合においても、状況に応じて処理能力と省電力を適切に制御することができる。
【0093】
具体的には、CPU311の高い処理能力が求められる状況ではCPU311の動作周波数が高くなる制御ポリシを設定することができる。また、CPU311の高い処理能力が求められない状況や省電力が求められる状況ではCPU311の動作周波数が低くなる制御ポリシを設定することができる。
【0094】
たとえば、ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化(操作終了時の状態変化)を第1要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第2要素の状態とする。そして、対応情報においては、操作終了時の状態変化と特定のソフトウェアが実行中の状態との組み合わせに対して、操作終了時の状態変化と特定のソフトウェアが実行中でない状態との組み合わせよりもCPU311の処理能力が高くなる制御規則を対応付ける。
【0095】
ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化は、たとえばLCD213のオンからオフへの変化などである。ただし、ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置100の傾きの変化(たとえば傾いた状態から水平状態への変化)などであってもよい。これにより、たとえば、ユーザが情報処理装置100の操作を終了する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる(処理性能が高くなる)制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。たとえば特定のソフトウェアが音楽再生や通話のアプリケーションである場合は、処理不足による音飛びなどを回避することができる。
【0096】
また、情報処理装置100への外部電源の供給停止などを第1要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第2要素の状態としてもよい。そして、対応情報においては、供給停止と特定のソフトウェアが実行中の状態との組み合わせに対して、供給停止と特定のソフトウェアが実行中でない状態との組み合わせよりもCPU311の処理能力が高くなる制御規則を対応付ける。これにより、たとえば、外部電源の供給が停止する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる(処理性能が高くなる)制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。
【0097】
また、CPU311によって実行される特定のソフトウェアの起動を第1要素の状態変化とし、情報処理装置100の電池残量が閾値以上であるか否かの状態を第2要素の状態としてもよい。そして、対応情報においては、特定のソフトウェアの起動と電池残量が閾値以上でない状態との組み合わせに対して、特定のソフトウェアの起動と電池残量が閾値以上である状態との組み合わせよりもCPU311の消費電力が低くなる制御規則を対応付ける。これにより、たとえば、特定のソフトウェアを起動する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる(消費電力が低くなる)制御ポリシを適用し、消費電力を抑えることが可能になる。たとえば、バッテリ残量が少ないために電力優先の制御ポリシを適用している場合において、CPU311の多くの処理能力が要求されるアプリケーションを起動した場合に、処理能力優先の制御ポリシを適用してしまうことを回避することができる。
【0098】
また、ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化(操作開始時の状態変化)を第1要素の状態変化とし、情報処理装置100の電池残量が閾値以上であるか否かの状態を第2要素の状態としてもよい。そして、対応情報においては、操作開始時の状態変化と電池残量が閾値以上でない状態との組み合わせに対して、操作開始時の状態変化と電池残量が閾値以上である状態との組み合わせよりもCPU311の消費電力が低くなる制御規則を対応付ける。
【0099】
ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化は、たとえばLCD213のオフからオンへの変化などである。ただし、ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置100の傾きの変化(たとえば水平状態から傾いた状態への変化)やタッチパネルの操作などであってもよい。これにより、たとえば、ユーザが情報処理装置100の操作を開始する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる(消費電力が低くなる)制御ポリシを適用し、消費電力を抑えることが可能になる。
【0100】
また、情報処理装置100のハードウェアのイベントとしては、上記の他に、GPSのオン/オフ、無線LANのオン/オフ、情報処理装置100の内部の温度の変化などを用いてもよい。また、情報処理装置100のハードウェアの状態としては、上記の他に、GPSのオン/オフの状態、無線LANのオン/オフの状態、情報処理装置100の内部の温度などを用いてもよい。
【0101】
また、対応情報において対応付ける制御規則を、動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報とすることで、対応情報のエントリ数(ルール数)を少なくすることができる。これにより、対応情報の記憶に要求されるメモリ容量を削減することができる。また、対応情報を定義するシステム開発者やユーザの負担を軽減することができる。
【0102】
なお、図3に示した情報処理装置100において、ハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342のいずれかを省いた構成としてもよい。この場合は、図7に示した制御ポリシ変更ルール表370において、ハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342のうちの省いたモジュールによって検出されるイベントを省いてもよい。
【0103】
(実施の形態2)
(実施の形態2にかかる情報処理装置の構成)
図10は、実施の形態2にかかる情報処理装置の機能ブロック図である。図10において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図10に示すように、実施の形態2にかかる情報処理装置100は、図3に示した構成に加えてシステム負荷監視モジュール1001を備えている。
【0104】
システム負荷監視モジュール1001は、システム状態取得用I/F324からシステム負荷を監視する。システム負荷は、たとえばCPU311の利用率(たとえばCPU311が処理を実行している時間の割合)である。または、システム負荷は、CPU311の処理待ち状態にあるプロセスの個数などであってもよい。システム負荷監視モジュール1001は、システム負荷の所定の変化が発生すると、負荷変化イベントをポリシ制御ソフト350へ通知する。
【0105】
ポリシ制御ソフト350は、システム負荷監視モジュール1001から負荷変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、システム負荷監視モジュール1001から通知された負荷変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0106】
(システム負荷監視モジュールによる処理)
図11は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。システム負荷監視モジュール1001は、たとえば図11に示す各ステップを実行する。まず、システム負荷監視モジュール1001は、一定時間待機する(ステップS1101)。つぎに、システム負荷監視モジュール1001は、システム状態取得用I/F324から現在のCPU311の負荷を取得する(ステップS1102)。
【0107】
つぎに、システム負荷監視モジュール1001は、ステップS1102によって取得した負荷と閾値を比較し、CPU311の負荷の高低を判定する(ステップS1103)。具体的には、システム負荷監視モジュール1001は、負荷が閾値より高い場合は負荷を「高」と判定し、負荷が閾値より低い場合は負荷を「低」と判定する。または、システム負荷監視モジュール1001は、負荷が第1閾値より高い場合は負荷を「高」と判定し、負荷が第2閾値(<第1閾値)より低い場合は負荷を「低」と判定してもよい。
【0108】
つぎに、システム負荷監視モジュール1001は、今回のステップS1103による判定結果を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS1104)。つぎに、システム負荷監視モジュール1001は、前回のステップS1103による判定結果を情報処理装置100のメモリ(たとえば補助メモリ203)から取得する(ステップS1105)。つぎに、システム負荷監視モジュール1001は、ステップS1105により取得した前回の判定結果から、今回のステップS1103による判定結果が変化したか否かを判断する(ステップS1106)。
【0109】
ステップS1106において、判定結果が変化していない場合(ステップS1106:No)は、システム負荷監視モジュール1001は、ステップS1101へ戻る。判定結果が変化した場合(ステップS1106:Yes)は、システム負荷監視モジュール1001は、ステップS1107へ移行する。すなわち、システム負荷監視モジュール1001は、CPU311の負荷が「低」から「高」、または「高」から「低」に変化したことを示す負荷変化イベントをポリシ制御ソフト350へ通知し(ステップS1107)、ステップS1101へ戻る。
【0110】
ポリシ制御ソフト350による処理は、たとえば図5に示した各ステップと同様である。ただし、ポリシ制御ソフト350は、CPU311の負荷が変化したことがシステム負荷監視モジュール1001から通知されると、ステップS501においてシステムイベントが通知されたと判断し、ステップS502へ移行する。
【0111】
これにより、CPU311の負荷の変化を契機として、CPU311の負荷に応じて制御ポリシを変更することができる。これにより、たとえば、「電力優先アルゴリズム」によりCPU311の動作周波数を制御している場合におけるCPU311の過負荷を回避することが可能になる。
【0112】
(実施の形態2にかかる制御ポリシ変更ルール表)
図12は、実施の形態2にかかる制御ポリシ変更ルール表の一例を示す図表である。図12において、図7に示した部分と同様の部分については説明を省略する。図12に示す制御ポリシ変更ルール表370には、第2要素の状態として情報処理装置100の「動作モード」が含まれている。「動作モード」には「通常モード」および「省電力モード」が含まれる。「省電力モード」は「通常モード」より消費電力が少ない動作モードである。
【0113】
ポリシ制御ソフト350は、LCD213がオンになると「動作モード」を「通常モード」に設定する。また、ポリシ制御ソフト350は、LCD213がオフになると「動作モード」を「省電力モード」に設定する。
【0114】
また、ポリシ制御ソフト350は、LCD213がオフで「動作モード」が「省電力モード」の状態でCPU311の負荷が「低」から「高」に変化すると、CPU311の動作周波数の上限値を増加させる。また、ポリシ制御ソフト350は、LCD213がオフで「動作モード」が「省電力モード」の状態でCPU311の負荷が「高」から「低」に変化すると、CPU311の動作周波数の上限値を減少させる。
【0115】
これにより、LCD213がオフの状態で、「省電力モード」に設定されている場合においても、CPU311の処理量が増加した場合はCPU311の動作周波数の上限値を増加させ、過負荷の状態を回避することができる。
【0116】
(実施の形態2にかかる動作周波数の制御)
図13−1〜図13−3は、実施の形態2にかかる動作周波数の制御の一例を示す図である。図13−1〜図13−3において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。図13−1に示す動作周波数変化1310,1320,1330は、「電力優先アルゴリズム」において動作周波数の上限値がそれぞれ周波数f3,f4,f5である制御ポリシによるCPU311の動作周波数の変化を示している。
【0117】
図12の制御ポリシ変更ルール表370に示したように、CPU311の負荷が「低」から「高」になると動作周波数の上限値が増加する。このため、動作周波数変化1310の状態でCPU311の負荷が「低」から「高」になると、動作周波数変化1320の状態へ移行する。また、動作周波数変化1320の状態でCPU311の負荷が「低」から「高」になると、動作周波数変化1330の状態へ移行する。
【0118】
また、図12の制御ポリシ変更ルール表370に示したように、CPU311の負荷が「高」から「低」になると動作周波数の上限値が減少する。このため、動作周波数変化1330の状態でCPU311の負荷が「高」から「低」になると、動作周波数変化1320の状態へ移行する。また、動作周波数変化1320の状態でCPU311の負荷が「高」から「低」になると、動作周波数変化1310の状態へ移行する。
【0119】
このように、CPU311の負荷に応じてCPU311の動作周波数の上限値を変更し、CPU311が過負荷になることを回避することができる。ここではCPU311の動作周波数の上限値について説明したが、CPU311の負荷に応じてCPU311の動作周波数の下限値を変更してもよい。
【0120】
(システム負荷監視モジュールによる処理の変形例)
図14は、CPUの負荷と動作周波数の関係の一例を示す図である。図14において、横軸は時間を示し、左側の縦軸はCPU311の動作周波数を示し、右側の縦軸はCPU311の利用率(負荷)を示している。利用率変化1410は、アプリケーションの起動や停止などに起因するCPU311の利用率の変化を示している。動作周波数変化1420は、制御ポリシに基づくCPU311の動作周波数の変化を示している。
【0121】
利用率変化1410および動作周波数変化1420に示すように、CPU311の動作周波数は、CPU311の負荷に追従して変化する性質を有する。この性質を利用して、システム負荷監視モジュール1001(算出部)は、CPU311の動作周波数をシステム状態取得用I/F324から取得し、取得した動作周波数に基づいてCPU311の負荷を監視してもよい。具体的には、現在の制御ポリシにおける動作周波数の上限値でCPU311が動作している時間の割合を算出することでCPU311の負荷を算出することができる。
【0122】
図15は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。システム負荷監視モジュール1001は、たとえば図15に示す各ステップを実行してもよい。まず、システム負荷監視モジュール1001は、一定時間待機する(ステップS1501)。つぎに、システム負荷監視モジュール1001は、負荷判定処理を行うことによってCPU311の負荷の高低を判定する(ステップS1502)。負荷判定処理については後述する。図15に示すステップS1503〜S1506は、図11に示したステップS1104〜S1107と同様である。
【0123】
図16は、図15に示した負荷判定処理の一例を示すフローチャートである。システム負荷監視モジュール1001は、図15に示したステップS1502において、たとえば図16に示す各ステップを実行する。まず、システム負荷監視モジュール1001は、周波数利用時間履歴をシステム状態取得用I/F324から取得する(ステップS1601)。周波数利用時間履歴は、たとえば、カーネル320が動作を開始してから現在までの期間における、CPU311の動作周波数ごとの動作時間を示す情報である。
【0124】
つぎに、システム負荷監視モジュール1001は、今回のステップS1601によって取得した周波数利用時間履歴を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS1602)。つぎに、システム負荷監視モジュール1001は、前回のステップS1601によって取得した周波数利用時間履歴を情報処理装置100のメモリ(たとえば補助メモリ203)から取得する(ステップS1603)。
【0125】
つぎに、システム負荷監視モジュール1001は、今回のステップS1601によって取得した周波数利用時間履歴と、ステップS1603により取得した前回の周波数利用時間履歴と、の差分を算出する(ステップS1604)。具体的には、システム負荷監視モジュール1001は、CPU311の動作周波数ごとに、今回取得した周波数利用時間履歴が示すCPU311の動作時間と、前回取得した周波数利用時間履歴が示すCPU311の動作時間と、の差分を算出する。これにより、前回チェック時から現在までの経過時間におけるCPU311の動作周波数ごとの動作時間を算出することができる。
【0126】
つぎに、システム負荷監視モジュール1001は、ステップS1604によって算出した動作周波数ごとの動作時間のうちの現在のCPU311の上限周波数での動作時間の、前回チェック時から現在までの経過時間に対する比率を算出する(ステップS1605)。つぎに、システム負荷監視モジュール1001は、ステップS1605によって算出した比率が閾値より大きいか否かを判断する(ステップS1606)。
【0127】
ステップS1606において、算出した比率が閾値より大きい場合(ステップS1606:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「高」と判定し(ステップS1607)、一連の処理を終了する。算出した比率が閾値以下である場合(ステップS1606:No)は、システム負荷監視モジュール1001は、CPU311の負荷を「低」と判定し(ステップS1608)、一連の処理を終了する。
【0128】
以上の各ステップにより、CPU311の負荷の高低をCPU311の動作周波数に基づいて判定することができる。このため、実際のCPU311の負荷に即した負荷状態を判定することが可能になる。
【0129】
図17は、図16に示した負荷判定処理の変形例を示すフローチャートである。システム負荷監視モジュール1001は、図15に示したステップS1502において、たとえば図17に示す各ステップを実行してもよい。図17に示すステップS1701〜S1706は、図16に示したステップS1601〜S1606と同様である。
【0130】
ただし、ステップS1705において、システム負荷監視モジュール1001は、上限周波数での動作時間の経過時間に対する第1比率を算出する(ステップS1705)。つぎに、システム負荷監視モジュール1001は、ステップS1705によって算出した第1比率が第1閾値より大きいか否かを判断する(ステップS1706)。
【0131】
ステップS1706において、第1比率が第1閾値より大きい場合(ステップS1706:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「高」と判定し(ステップS1707)、一連の処理を終了する。
【0132】
第1比率が第1閾値以下である場合(ステップS1706:No)は、システム負荷監視モジュール1001は、ステップS1708へ移行する。すなわち、システム負荷監視モジュール1001は、ステップS1704によって算出した動作周波数ごとの動作時間のうちの現在のCPU311の下限周波数での動作時間の、前回チェック時から現在までの経過時間に対する第2比率を算出する(ステップS1708)。
【0133】
つぎに、システム負荷監視モジュール1001は、ステップS1708によって算出した第2比率が第2閾値より大きいか否かを判断する(ステップS1709)。第2閾値は、たとえば第1閾値より低い閾値である。第2比率が第2閾値より大きい場合(ステップS1709:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「中」と判定し(ステップS1710)、一連の処理を終了する。
【0134】
第2比率が第2閾値より大きくない場合(ステップS1709:No)は、システム負荷監視モジュール1001は、CPU311の負荷を「低」と判定し(ステップS1711)、一連の処理を終了する。以上の各ステップにより、CPU311の負荷を「高」「中」「低」と判定することができる。ここでは第1閾値と第2閾値を用いてCPU311の負荷を3段階で判定する場合について説明したが、3つ以上の閾値を用いてCPU311の負荷を4段階以上で判定してもよい。
【0135】
このように、実施の形態2にかかる情報処理装置100によれば、CPU311の負荷量の閾値未満から閾値以上への負荷増加を第1要素の状態変化とし、負荷増加が検出された場合にCPU311の動作周波数の上限値を増加させることができる。これにより、CPU311の負荷に応じてCPU311の動作周波数の上限値を制御し、CPU311が過負荷になることを回避することができる。
【0136】
このため、たとえば、電力優先の制御ポリシを適用している場合に、CPU311の処理能力が多量に要求される状況になると、CPU311の動作周波数の上限値を増加させることができる。
【0137】
また、CPU311の負荷(利用率)に対してCPU311の動作周波数が追従する場合において、CPU311が動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて負荷増加を検出することで負荷増加を精度よく検出することができる。
【0138】
(実施の形態3)
図18は、実施の形態3にかかる情報処理装置の機能ブロック図である。図13において、図10に示した部分と同様の部分については同一の符号を付して説明を省略する。図18に示すように、実施の形態3にかかる情報処理装置100は、図10に示した構成に加えて、検査対象リスト1801と、プロセス監視モジュール1802と、を備えている。アプリ起動/停止監視モジュール342は、アプリケーションの起動または停止を検出すると、アプリ起動/停止イベントをプロセス監視モジュール1802へ通知する。
【0139】
検査対象リスト1801は、監視対象アプリ一覧341の各アプリケーションのうちの検査中のアプリケーションを示す情報である。検査対象リスト1801は、たとえば図2に示した補助メモリ203に記憶されている。
【0140】
プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ起動イベントが通知されると、起動したアプリケーションを検査対象リスト1801に追加する。また、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ停止イベントが通知されると、停止したアプリケーションを検査対象リスト1801から削除する。
【0141】
また、プロセス監視モジュール1802は、検査対象リスト1801が示す各アプリケーションのCPU311の所定期間内の利用時間をシステム状態取得用I/F324から取得する。そして、プロセス監視モジュール1802は、取得した利用時間に基づいて、検査対象リスト1801が示す各アプリケーションが実際に利用されているか否かを定期的に判定する。たとえば、プロセス監視モジュール1802は、取得した利用時間が閾値以上であるか否かによってアプリケーションが実際に利用されているか否かを判定する。
【0142】
プロセス監視モジュール1802は、判定結果が変化すると、アプリ動作状態変化イベントをポリシ制御ソフト350へ通知する。これにより、実行中のアプリケーションについて、ユーザによる利用が開始された場合に、利用が開始された旨のアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。また、実行中のアプリケーションについて、ユーザによる利用が終了した場合に、利用が終了した旨のアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。
【0143】
ポリシ制御ソフト350は、プロセス監視モジュール1802からアプリ動作状態変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、プロセス監視モジュール1802から通知されたアプリ動作状態変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0144】
(検査対象リスト)
図19は、検査対象リストの一例を示す図である。図19に示す検査対象リスト1801は、図18に示した検査対象リスト1801の一例である。検査対象リスト1801には、実行中の各アプリケーション(プロセス等でもよい)が含まれている。
【0145】
また、検査対象リスト1801の各アプリケーションには「CPU利用時間」および「活動状態」が対応付けられている。「CPU利用時間」は、システム状態取得用I/F324から取得したアプリケーションによるCPU311の所定期間内の累積の利用時間を示す情報である。
【0146】
「活動状態」はアプリケーションが実際に利用されているか否かを示す情報である。「活動状態」が「アクティブ」である場合は、アプリケーションが実際に利用されていることを示している。「活動状態」が「スリープ」である場合は、アプリケーションは実行中(起動済みで停止していない状態)であるが実際に利用されていないことを示している。
【0147】
たとえば、「CPU利用時間」が閾値以上であるアプリケーションは「活動状態」が「アクティブ」となる。また、「CPU利用時間」が閾値未満であるアプリケーションは「活動状態」が「スリープ」となる。
【0148】
(プロセス監視モジュールによる処理)
図20は、プロセス監視モジュールによる処理の一例を示すフローチャートである。プロセス監視モジュール1802は、たとえば図20に示す各ステップを実行する。まず、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ起動イベントが通知されたか否かを判断する(ステップS2001)。
【0149】
ステップS2001において、アプリ起動イベントが通知された場合(ステップS2001:Yes)は、プロセス監視モジュール1802は、アプリ起動イベントの対象アプリケーションを検査対象リスト1801に追加し(ステップS2002)、ステップS2005へ移行する。アプリ起動イベントが通知されていない場合(ステップS2001:No)は、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ停止イベントが通知されたか否かを判断する(ステップS2003)。
【0150】
ステップS2003において、アプリ停止イベントが通知された場合(ステップS2003:Yes)は、プロセス監視モジュール1802は、アプリ停止イベントの対象アプリケーションを検査対象リスト1801から削除し(ステップS2004)、ステップS2005へ移行する。アプリ停止イベントが通知されていない場合(ステップS2003:No)は、プロセス監視モジュール1802は、検査対象リスト1801の全アプリケーションをステップS2006で処理済みか否かを判断する(ステップS2005)。
【0151】
ステップS2005において、検査対象リスト1801の全アプリケーションを処理済みでない場合(ステップS2005:No)は、ステップS1601は、ステップS2006へ移行する。すなわち、プロセス監視モジュール1802は、検査対象リスト1801に含まれる各アプリケーションのうちの未処理のアプリケーションについて活動状態を検査する活動状態検査処理を行う(ステップS2006)。活動状態検査処理についてはたとえば図21において説明する。
【0152】
ステップS2005において、検査対象リスト1801の全アプリケーションを処理済みである場合(ステップS2005:Yes)は、プロセス監視モジュール1802は、ステップS2007へ移行する。すなわち、プロセス監視モジュール1802は、検査対象リスト1801に基づいて、検査対象リスト1801に含まれる各アプリケーションの活動状態を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS2007)。
【0153】
つぎに、プロセス監視モジュール1802は、前回の各アプリケーションの活動状態を情報処理装置100のメモリ(たとえば補助メモリ203)から読み出す(ステップS2008)。つぎに、プロセス監視モジュール1802は、ステップS2007によって読み出した前回の各アプリケーションの活動状態および検査対象リスト1801に基づいて変化検出処理を行い(ステップS2009)、ステップS2001へ戻る。変化検出処理についてはたとえば図22において説明する。
【0154】
図21は、活動状態検査処理の一例を示すフローチャートである。プロセス監視モジュール1802は、図20に示したステップS2006の活動状態検査処理として、検査対象アプリケーションについてたとえば図21に示す各ステップを実行する。まず、プロセス監視モジュール1802は、検査対象アプリケーションの現在のCPU利用時間をシステム状態取得用I/F324から取得する(ステップS2101)。
【0155】
つぎに、プロセス監視モジュール1802は、今回のステップS2101によって取得したCPU利用時間をメモリ(たとえば補助メモリ203)に記憶する(ステップS2102)。つぎに、プロセス監視モジュール1802は、検査対象アプリケーションの前回のCPU利用時間をメモリ(たとえば補助メモリ203)から取得する(ステップS2103)。つぎに、プロセス監視モジュール1802は、ステップS2101によって取得した今回のCPU利用時間と、ステップS2103によって取得した前回のCPU利用時間と、の差分を算出する(ステップS2104)。
【0156】
つぎに、プロセス監視モジュール1802は、検査対象アプリケーションの活動状態を検査対象リスト1801から取得する(ステップS2105)。つぎに、プロセス監視モジュール1802は、ステップS2105によって取得した前回チェック時の活動状態がアクティブだったか否かを判断する(ステップS2106)。
【0157】
ステップS2106において、前回チェック時の活動状態がアクティブだった場合(ステップS2106:Yes)は、プロセス監視モジュール1802は、ステップS2104によって算出した差分が第1閾値より小さいか否かを判断する(ステップS2107)。差分が第1閾値より小さい場合(ステップS2107:Yes)は、プロセス監視モジュール1802は、検査対象リスト1801の活動状態をスリープに設定し(ステップS2108)、一連の処理を終了する。差分が第1閾値以上である場合(ステップS2107:No)は、プロセス監視モジュール1802は、一連の処理を終了する。
【0158】
ステップS2106において、前回チェック時の活動状態がアクティブでなくスリープであった場合(ステップS2106:No)は、プロセス監視モジュール1802は、ステップS2104によって算出した差分が第2閾値より大きいか否かを判断する(ステップS2109)。差分が第2閾値より大きい場合(ステップS2109:Yes)は、プロセス監視モジュール1802は、検査対象リスト1801の活動状態をアクティブに設定し(ステップS2110)、一連の処理を終了する。
【0159】
ステップS2109において、差分が第2閾値以下である場合(ステップS2109:No)は、プロセス監視モジュール1802は、一連の処理を終了する。以上の各ステップにより、検査対象リスト1801の各アプリケーションの活動状態を検査し、検査結果を検査対象リスト1801に反映させることができる。
【0160】
図22は、変化検出処理の一例を示すフローチャートである。プロセス監視モジュール1802は、図20に示したステップS2009の変化検出処理として、たとえば図22に示す各ステップを実行する。まず、プロセス監視モジュール1802は、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在するか否かを判断する(ステップS2201)。
【0161】
ステップS2201において、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在しない場合(ステップS2201:No)は、プロセス監視モジュール1802は、ステップS2202へ移行する。すなわち、プロセス監視モジュール1802は、図20に示したステップS2008によって取得した前回の各アプリケーションの活動状態がアクティブか否かを判断する(ステップS2202)。
【0162】
ステップS2202において、前回の各アプリケーションの活動状態がアクティブでなくスリープである場合(ステップS2202:No)は、プロセス監視モジュール1802は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がアクティブである場合(ステップS2202:Yes)は、プロセス監視モジュール1802は、ステップS2203へ移行する。すなわち、プロセス監視モジュール1802は、前回の活動状態がアクティブであったアプリケーションがスリープになった旨のイベント(アプリ動作状態変化イベント)をポリシ制御ソフト350へ通知し(ステップS2203)、一連の処理を終了する。
【0163】
ステップS2201において、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在する場合(ステップS2201:Yes)は、プロセス監視モジュール1802は、ステップS2204へ移行する。すなわち、プロセス監視モジュール1802は、図20に示したステップS2008によって取得した前回の各アプリケーションの活動状態がスリープか否かを判断する(ステップS2204)。
【0164】
ステップS2204において、前回の各アプリケーションの活動状態がスリープでなくアクティブである場合(ステップS2204:No)は、プロセス監視モジュール1802は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がスリープである場合(ステップS2204:Yes)は、プロセス監視モジュール1802は、ステップS2205へ移行する。すなわち、プロセス監視モジュール1802は、前回の活動状態がスリープであったアプリケーションがアクティブになった旨のイベント(アプリ動作状態変化イベント)をポリシ制御ソフト350へ通知し(ステップS2205)、一連の処理を終了する。
【0165】
以上の各ステップにより、プロセス監視モジュール1802の各アプリケーションのうちの活動状態が変化したアプリケーションについてのアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。
【0166】
(実施の形態3にかかる制御ポリシ変更ルール表)
図23は、実施の形態3にかかる制御ポリシ変更ルール表の一例を示す図表である。図22において、図12に示した部分と同様の部分については説明を省略する。図23に示す制御ポリシ変更ルール表370のイベント(第1要素の状態変化)には、監視対象のアプリケーションの起動や停止に代えて監視対象のアプリケーションのアクティブやスリープが規定されている。
【0167】
ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションがスリープからアクティブになると(利用が開始されると)、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションがアクティブからスリープになると(利用が終了すると)、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0168】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションがスリープからアクティブになると(利用が開始されると)、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【0169】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションがアクティブからスリープになると(利用が終了すると)、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0170】
このように、実施の形態3にかかる情報処理装置100によれば、特定のアプリケーションの動作状態の変化を第1の状態変化とすることで、特定のアプリケーションの実際の利用状態に応じてCPU311の動作周波数の制御ポリシを変更することができる。また、特定のアプリケーションの動作状態の変化は、特定のアプリケーションによるCPU311の利用時間に基づいて検出することができる。
【0171】
たとえば、音楽再生などのアプリケーションを起動しているが実際に利用していない(たとえば音楽を再生していない)状態で情報処理装置100を持ち運ぶ場合に、処理能力優先の制御ポリシを適用し続けて消費電力が大きくなることを回避することができる。
【0172】
また、特定のアプリケーションの動作状態の変化の検出処理を、特定のアプリケーションが起動すると開始し、特定のアプリケーションが停止すると終了することができる。これにより、特定のアプリケーションが実行中でない場合は検出処理を行わないようにし、情報処理装置100の処理量を低減することができる。
【0173】
なお、図18に示した情報処理装置100において、システム負荷監視モジュール1001を省いた構成としてもよい。この場合は、図23に示した制御ポリシ変更ルール表370において、システム負荷監視モジュール1001によって検出されるイベントを省いてもよい。
【0174】
(実施の形態4)
(実施の形態4にかかる情報処理装置の構成)
図24は、実施の形態4にかかる情報処理装置の機能ブロック図である。図24において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図24に示すように、実施の形態4にかかる情報処理装置100は、図3に示した構成に加えて、監視対象アクセス許可情報リスト2401と、インストーラ2402と、ストレージ2403と、を備えている。
【0175】
監視対象アクセス許可情報リスト2401は、監視対象とすべきアプリケーションに含まれるアクセス許可情報を示す情報である。アクセス許可情報は、アプリケーションがアクセスする情報処理装置100の機能(周辺機器など)や情報(個人情報など)を示す権限(パーミッション)を示す情報であり、たとえばアプリケーションのパッケージ内部にあらかじめ格納されている。監視対象アクセス許可情報リスト2401は、たとえば図2に示した補助メモリ203に記憶されている。
【0176】
インストーラ2402には、インストール対象のアプリケーションのパッケージが入力される。インストーラ2402は、入力されたパッケージをストレージ2403に格納することによってアプリケーションを情報処理装置100にインストールする。
【0177】
また、インストーラ2402は、インストールするアプリケーションのパッケージに格納されたアクセス許可情報を取得する。そして、インストーラ2402は、取得したアクセス許可情報が監視対象アクセス許可情報リスト2401に含まれている場合は、インストールしたアプリケーションを監視対象アプリ一覧341に追加する。また、インストーラ2402は、取得したアクセス許可情報が監視対象アクセス許可情報リスト2401に含まれていない場合は、インストールしたアプリケーションを監視対象アプリ一覧341に追加しない。
【0178】
これにより、アプリケーションをインストールする際に、インストールするアプリケーションを監視対象とすべきか否かをアクセス許可情報に基づいて判断し、監視対象とすべきアプリケーションを監視対象アプリ一覧341に追加することができる。たとえば、通話や音楽再生、センサやGPSを利用するアプリケーションなどのCPU311の処理能力が重要なアプリケーションに含まれるアクセス許可情報(たとえば通話やGPSの機能へのアクセス権限)を監視対象アクセス許可情報リスト2401に格納しておく。
【0179】
これにより、処理能力が重要なアプリケーションをインストールする場合にアプリケーションを監視対象アプリ一覧341に自動的に追加することができる。また、監視対象アプリ一覧341へのアプリケーションの登録を容易にし、たとえばユーザが手動で登録を行う場合に比べてユーザの負担を軽減することができる。
【0180】
また、インストーラ2402は、ストレージ2403に格納されたアプリケーションを削除することによってアプリケーションをアンインストールするアンインストーラの機能を有していてもよい。インストーラ2402は、監視対象アプリ一覧341に含まれるアプリケーションをアンインストールする場合に、アンインストールするアプリケーションを監視対象アプリ一覧341から削除する。
【0181】
これにより、アンインストールされたアプリケーションをアプリ起動/停止監視モジュール342が監視し続けることを回避することができる。また、監視対象アプリ一覧341からのアプリケーションの削除を容易にし、たとえばユーザが手動で削除を行う場合に比べてユーザの負担を軽減することができる。
【0182】
(インストーラによる処理)
図25は、インストーラによる処理の一例を示すフローチャートである。インストーラ2402は、アプリケーションのインストールまたはアンインストールの処理を行う場合に、たとえば図25に示す各ステップを実行する。まず、インストーラ2402は、処理内容がインストールか否かを判断する(ステップS2501)。処理内容がインストールである場合(ステップS2501:Yes)は、インストーラ2402は、監視対象アクセス許可情報リスト2401を情報処理装置100のメモリ(たとえば補助メモリ203)から読み取る(ステップS2502)。
【0183】
つぎに、インストーラ2402は、インストールの対象アプリケーションのアクセス許可情報を取得する(ステップS2503)。そして、インストーラ2402は、ステップS2503によって取得したアクセス許可情報が、ステップS2502によって読み取った監視対象アクセス許可情報リスト2401に存在するか否かを判断する(ステップS2504)。
【0184】
ステップS2504において、アクセス許可情報が監視対象アクセス許可情報リスト2401に存在しない場合(ステップS2504:No)は、インストーラ2402は、一連の処理を終了する。アクセス許可情報が監視対象アクセス許可情報リスト2401に存在する場合(ステップS2504:Yes)は、インストーラ2402は、監視対象アプリ一覧341に対象アプリケーションを追加し(ステップS2505)、一連の処理を終了する。
【0185】
ステップS2501において、処理内容がインストールでなくアンインストールである場合(ステップS2501:No)は、インストーラ2402は、アンインストールの対象アプリケーションが監視対象アプリ一覧341に存在するか否かを判断する(ステップS2506)。
【0186】
ステップS2506において、対象アプリケーションが監視対象アプリ一覧341に存在しない場合(ステップS2506:No)は、インストーラ2402は、一連の処理を終了する。対象アプリケーションが監視対象アプリ一覧341に存在する場合(ステップS2506:Yes)は、インストーラ2402は、監視対象アプリ一覧341から対象アプリケーションを削除し(ステップS2507)、一連の処理を終了する。
【0187】
以上の各ステップにより、インストールの対象アプリケーションのアクセス許可情報に基づいてインストールの対象アプリケーションを監視対象アプリ一覧341に追加するか否かを自動的に判定することができる。また、アンインストールの対象アプリケーションを監視対象アプリ一覧341から自動的に削除することができる。
【0188】
実施の形態4にかかる制御ポリシ変更ルール表370は、たとえば図7に示した制御ポリシ変更ルール表370と同様である。
【0189】
このように、実施の形態4にかかる情報処理装置100によれば、インストールの対象のアプリケーションのアクセス権限が特定のアクセス権限である場合に対象のアプリケーションを特定のアプリケーションとして記憶することができる。これにより、特定のアプリケーションを容易に登録し、ユーザの負担を軽減することができる。
【0190】
また、情報処理装置100によれば、アンインストールの対象のアプリケーションを特定のアプリケーションから除外することができる。これにより、特定のアプリケーションを容易に削除し、ユーザの負担を軽減することができる。
【0191】
(実施の形態5)
図26は、実施の形態5にかかる情報処理装置の機能ブロック図である。図26において、図18または図24に示した部分と同様の部分については同一の符号を付して説明を省略する。図26に示すように、実施の形態5にかかる情報処理装置100は、図18に示した構成に加えて、監視対象アクセス許可情報リスト2401と、インストーラ2402と、ストレージ2403と、を備えている。
【0192】
このように、実施の形態3にかかる情報処理装置100の構成と、実施の形態4にかかる情報処理装置100の構成と、を組み合わせた構成としてもよい。これにより、特定のアプリケーションの実際の利用状態に応じてCPU311の動作周波数の制御ポリシを変更することができるとともに、ユーザの負担を軽減することができる。
【0193】
以上説明したように、情報処理装置、情報処理プログラムおよび情報処理方法によれば、CPUの動作周波数を状況に応じて適切に設定することができる。これにより、たとえば、ソフトウェアの応答性能を確保しつつ消費電力を削減することが可能になる。
【0194】
なお、上記の各実施の形態において説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【0195】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【0196】
(付記1)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第1要素の状態変化を検出する検出部と、
前記検出部によって前記第1要素の状態変化が検出された場合に前記第2要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備えることを特徴とする情報処理装置。
【0197】
(付記2)前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記1に記載の情報処理装置。
【0198】
(付記3)前記操作を終了する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオンからオフへの変化を含むことを特徴とする付記2に記載の情報処理装置。
【0199】
(付記4)前記第1要素の状態変化は、前記情報処理装置への外部電源の供給停止を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記供給停止と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記供給停止と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記1〜3のいずれか一つに記載の情報処理装置。
【0200】
(付記5)前記第1要素の状態変化は、前記中央処理装置によって実行される特定のソフトウェアの起動を含み、
前記第2要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報においては、前記特定のソフトウェアの起動と前記電池残量が閾値以上でない状態との組み合わせに対して、前記特定のソフトウェアの起動と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
【0201】
(付記6)前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を開始する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報は、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上でない状態との組み合わせに対して、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
【0202】
(付記7)前記操作を開始する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオフからオンへの変化を含むことを特徴とする付記6に記載の情報処理装置。
【0203】
(付記8)前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
【0204】
(付記9)前記第1要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする付記1〜8のいずれか一つに記載の情報処理装置。
【0205】
(付記10)前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする付記9に記載の情報処理装置。
【0206】
(付記11)前記第1要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする付記1〜10のいずれか一つに記載の情報処理装置。
【0207】
(付記12)前記検出部は、前記特定のソフトウェアが起動すると前記動作状態の変化の検出処理を開始し、前記特定のソフトウェアが停止すると前記検出処理を終了することを特徴とする付記11に記載の情報処理装置。
【0208】
(付記13)前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする付記1〜12のいずれか一つに記載の情報処理装置。
【0209】
(付記14)前記情報処理装置にアプリケーションをアンインストールするアンインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記アンインストーラは、アンインストールの対象のアプリケーションを前記特定のソフトウェアから除外することを特徴とする付記1〜12のいずれか一つに記載の情報処理装置。
【0210】
(付記15)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0211】
(付記16)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
ことを特徴とする情報処理方法。
【符号の説明】
【0212】
370 制御ポリシ変更ルール表
371 テーブル
810,820,910,920,930,1310,1320,1330,1420 動作周波数変化
811,821 上限値
812,822 下限値
1410 利用率変化
1801 検査対象リスト
【技術分野】
【0001】
本発明は、情報処理装置、情報処理プログラムおよび情報処理方法に関する。
【背景技術】
【0002】
従来、携帯端末に限らず、組み込み系のシステムで多く利用されてきたOS(Operating System:オペレーティングシステム)はシングルタスクシステムであり、利用可能なアプリケーションも限られている。この性質を利用し、従来、アプリケーションごとに利用されるCPU(Central Processing Unit:中央処理装置)の動作周波数を計測等により取得しておき、アプリケーションの起動と停止を検出することで、CPUの動作周波数を制御する技術が知られている。CPUの動作周波数を適切に制御することで、処理性能の確保と消費電力の抑制が可能になる(たとえば、下記特許文献1〜4参照。)。
【0003】
これに対して、スマートフォン等はパソコン用のOSと同じく、多種多様なアプリケーションをユーザが自由にダウンロードしてインストールすることが可能であるため、アプリケーションが要求するCPUの動作周波数を事前に取得しておくことが困難である。同様に、アプリケーション開発者も、多様な端末で自分が作成したアプリケーションがどの程度のCPU性能を利用するかの情報を把握することが困難であり、アプリケーションが利用するCPUの動作周波数の情報を提供することができない。
【0004】
CPUの動作周波数の制御のアーキテクチャとしては、たとえば、CPUの動作周波数の制御ポリシ(CPUの動作周波数を変更するアルゴリズム、変更の際の割合、上限/下限周波数等のパラメータ)をOSのカーネルに指示するアーキテクチャがある。カーネルは、CPUの利用率を監視し、CPUの利用率と制御ポリシから目標とするCPUの動作周波数を決定する。そして、カーネルは、決定した目標周波数をCPUの電圧およびクロックを制御する回路のドライバに通知する。ドライバは、カーネルからの通知に基づいて、回路の特性に合わせた手順によりCPUの周波数と電圧を目標値に設定する。
【0005】
このようなアーキテクチャにおいてCPUの動作周波数を適切に制御するためには、制御ポリシを端末の利用目的や状態に合わせて選択することが求められる。たとえば、従来、アプリケーションの起動や終了、液晶ディスプレイのオン/オフ、外部給電の開始/停止、バッテリ残量の低下などのイベントと制御ポリシを1対1で対応付けることによって制御ポリシを決定する技術が知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−13756号公報
【特許文献2】特開2004−355599号公報
【特許文献3】特開2001−202166号公報
【特許文献4】特開2001−273057号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述した従来技術では、たとえばスマートフォンなどの多機能な情報処理装置においてはアプリケーションやハードウェアが様々な状態で動作するため、CPUの動作周波数を状況に応じて適切に設定することが困難であるという問題がある。
【0008】
本発明は、上述した従来技術による問題点を解消するため、CPUの動作周波数を状況に応じて適切に設定することができる情報処理装置、情報処理プログラムおよび情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
開示技術は、情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、前記第1要素の状態変化を検出し、前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する。
【発明の効果】
【0010】
本発明の一側面によれば、CPUの動作周波数を状況に応じて適切に設定することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明にかかる情報処理装置の機能ブロック図である。
【図2】図2は、情報処理装置のハードウェア構成図である。
【図3】図3は、実施の形態1にかかる情報処理装置の機能ブロック図である。
【図4】図4は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。
【図5】図5は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。
【図6】図6は、システム状態調査モジュールによる処理の一例を示すフローチャートである。
【図7】図7は、実施の形態1にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図8−1】図8−1は、電力優先アルゴリズムおよび制限値の一例を示す図である。
【図8−2】図8−2は、処理優先アルゴリズムの一例および制限値を示す図である。
【図9−1】図9−1は、実施の形態1にかかる動作周波数の制御の一例を示す図(その1)である。
【図9−2】図9−2は、実施の形態1にかかる動作周波数の制御の一例を示す図(その2)である。
【図9−3】図9−3は、実施の形態1にかかる動作周波数の制御の一例を示す図(その3)である。
【図10】図10は、実施の形態2にかかる情報処理装置の機能ブロック図である。
【図11】図11は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。
【図12】図12は、実施の形態2にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図13−1】図13−1は、実施の形態2にかかる動作周波数の制御の一例を示す図(その1)である。
【図13−2】図13−2は、実施の形態2にかかる動作周波数の制御の一例を示す図(その2)である。
【図13−3】図13−3は、実施の形態2にかかる動作周波数の制御の一例を示す図(その3)である。
【図14】図14は、CPUの負荷と動作周波数の関係の一例を示す図である。
【図15】図15は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。
【図16】図16は、図15に示した負荷判定処理の一例を示すフローチャートである。
【図17】図17は、図16に示した負荷判定処理の変形例を示すフローチャートである。
【図18】図18は、実施の形態3にかかる情報処理装置の機能ブロック図である。
【図19】図19は、検査対象リストの一例を示す図である。
【図20】図20は、プロセス監視モジュールによる処理の一例を示すフローチャートである。
【図21】図21は、活動状態検査処理の一例を示すフローチャートである。
【図22】図22は、変化検出処理の一例を示すフローチャートである。
【図23】図23は、実施の形態3にかかる制御ポリシ変更ルール表の一例を示す図表である。
【図24】図24は、実施の形態4にかかる情報処理装置の機能ブロック図である。
【図25】図25は、インストーラによる処理の一例を示すフローチャートである。
【図26】図26は、実施の形態5にかかる情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラムおよび情報処理方法の実施の形態を詳細に説明する。
【0013】
(情報処理装置)
図1は、本発明にかかる情報処理装置の機能ブロック図である。図1に示すように、本発明にかかる情報処理装置100は、たとえば、記憶部110と、検出部120と、判定部130と、検索部140と、制御部150と、中央処理装置160と、を備えている。
【0014】
記憶部110は、対応情報111を記憶する。対応情報111は、情報処理装置100の第1要素の状態変化(イベント)と、情報処理装置100の第2要素の状態と、の各組み合わせに対して、中央処理装置160の動作周波数の制御規則が対応付けられる対応情報である。第1要素、第2要素および制御規則については後述する。
【0015】
検出部120は、情報処理装置100の第1要素の状態変化を検出する。検出部120は、第1要素の状態変化を検出した場合に、第1要素の状態変化を検出したことを判定部130および検索部140へ通知する。判定部130は、検出部120から第1要素の状態変化を検出したことを通知されると、情報処理装置100の第2要素の状態を判定する。判定部130は、判定した第2要素の状態を検索部140へ通知する。
【0016】
検索部140は、記憶部110に記憶された対応情報111から、検出部120から検出を通知された第1要素の状態変化と、判定部130から通知された第2要素の状態と、の組み合わせに対応する制御規則を検索する。検索部140は、検索により得られた制御規則を制御部150へ通知する。
【0017】
制御部150は、検索部140から通知された制御規則に基づいて中央処理装置160の動作周波数を制御する。中央処理装置160は、情報処理装置100のCPUである。中央処理装置160は、情報処理装置100のハードウェアを制御したり、情報処理装置100のソフトウェアを実行したりする。
【0018】
<第1要素について>
情報処理装置100の第1要素は、たとえば情報処理装置100が備えるハードウェアである。この場合は、第1要素の状態変化の一例として、LCD(Liquid Crystal Display:液晶ディスプレイ)のオン/オフ、外部給電の開始/終了、電池残量の閾値未満への低下などを挙げることができる。
【0019】
または、第1要素は、たとえば情報処理装置100の特定のソフトウェアである。この場合は、第1要素の状態変化の一例として、特定のソフトウェアの起動や停止などを挙げることができる。特定のソフトウェアは、たとえば、情報処理装置100にインストールされ中央処理装置160によって実行される各アプリケーションのうちの特定のアプリケーションである。
【0020】
<第2要素について>
情報処理装置100の第2要素は、第1要素と異なる情報処理装置100の要素である。たとえば、第2要素は、情報処理装置100が備えるハードウェアである。この場合は、第2要素の状態の一例としては、LCDのオン/オフの状態、外部給電の状態、電池残量などを挙げることができる。または、情報処理装置100の第2要素は、情報処理装置100の特定のソフトウェアである。この場合は、第2要素の状態の一例としては、特定のソフトウェアが実行中か否かの状態などを挙げることができる。
【0021】
<制御規則>
制御規則は、たとえば、中央処理装置160の動作周波数を制御するアルゴリズムやパラメータなどの制御ポリシである。中央処理装置160の処理能力および消費電力は、動作周波数の制御ポリシによって変化する。また、制御規則は、制御ポリシの変更方法を指示するアクションなどであってもよい。
【0022】
動作周波数を制御するアルゴリズムとしては、たとえば、中央処理装置160の負荷(たとえば利用率や実行中のアプリケーションの数など)の変化に基づいて中央処理装置160の動作周波数の変更量を決定するアルゴリズムなどを挙げることができる。動作周波数を制御するパラメータとしては、たとえば、中央処理装置160の動作周波数の上限値や下限値などを挙げることができる。
【0023】
たとえば、中央処理装置160の動作周波数が比較的高くなる制御ポリシを適用すると、中央処理装置160の処理能力および消費電力が比較的高くなる。一方、中央処理装置160の動作周波数が比較的低くなる制御ポリシを適用すると、中央処理装置160の処理能力および消費電力が比較的低くなる。
【0024】
このように、情報処理装置100においては、第1要素の状態変化だけでなく第2要素の状態も参照して中央処理装置160の制御規則を制御する。これにより、情報処理装置100のソフトウェアやハードウェアが様々な状態で動作する場合において、状況に応じて処理能力と消費電力を適切に制御することが可能になる。
【0025】
(情報処理装置のハードウェア構成)
図2は、情報処理装置のハードウェア構成図である。図2に示す情報処理装置100は、図1に示した情報処理装置100の構成例である。情報処理装置100は、たとえばスマートフォンやタブレットPCなどの携帯情報端末である。
【0026】
情報処理装置100は、CPU201と、メインメモリ202と、補助メモリ203と、クロック供給回路204と、電圧供給回路205と、RF部206と、アンテナ207と、電池パック208と、をハードウェアモジュールとして備えている。また、情報処理装置100は、電源回路209と、カメラモジュール210と、ブルートゥースインターフェース211と、GPSモジュール212と、LCD213と、センサ214と、外部給電部215と、をハードウェアモジュールとして備えている。各ハードウェアモジュールは、たとえばバスによって接続されている。
【0027】
CPU201は、図1に示した中央処理装置160に対応する構成である。CPU201は、情報処理装置100の全体の制御を司る。また、CPU201は、クロック供給回路204から供給されるクロック信号および電圧供給回路205から供給される電圧によって動作する。メインメモリ202は、たとえばRAM(Random Access Memory)である。メインメモリ202は、CPU201のワークエリアとして使用される。
【0028】
補助メモリ203は、たとえば、ハードディスクやフラッシュメモリなどの不揮発メモリである。補助メモリ203には、情報処理装置100を動作させる各種のプログラムが記憶されている。補助メモリ203に記憶されたプログラムは、メインメモリ202にロードされてCPU201によって実行される。
【0029】
クロック供給回路204は、周波数が可変のクロック信号をCPU201へ供給する。クロック供給回路204は、たとえば、クロック信号を発振する水晶振動子およびRTC(Real Time Clock)などによって実現することができる。電圧供給回路205は、電源回路209から供給される電力によってCPU201に可変の電圧を供給する。電圧供給回路205は、たとえばボルテージディテクタおよびボルテージレギュレータなどによって実現することができる。
【0030】
RF部206(Radio Frequency:高周波)は、CPU201からの制御により、高周波信号をアンテナ207から他の無線通信装置へ送信するトランスミッタの機能を有する。また、RF部206は、アンテナ207によって受信された高周波信号をベースバンド信号に変換してCPU201へ出力するレシーバの機能を有する。
【0031】
電池パック208は、電源回路209へ電力を供給する。電池パック208は、たとえばリチウムイオン電池などの電池と電池保護用のIC(Integrated Circuit:集積回路)などによって実現することができる。電源回路209は、電池パック208から供給される電力を情報処理装置100の各ハードウェアモジュールへ供給する。また、電源回路209は、外部給電部215に外部電源が接続されている場合は、外部給電部215から供給される電力を情報処理装置100の各ハードウェアモジュールへ供給してもよい。電源回路209は、たとえばスイッチングレギュレータおよびボルテージレギュレータによって実現することができる。
【0032】
カメラモジュール210は、CPU201からの制御により、被写体を撮影し、撮影により得られた映像データを取得する。ブルートゥースインターフェース211は、CPU201からの制御により、他の通信装置との間でBluetooth(登録商標)による無線通信を行う通信インターフェースである。また、情報処理装置100は、ブルートゥースインターフェース211の他に、無線LAN(Local Area Network:構内通信網)などの無線通信インターフェースを備えていてもよい。
【0033】
GPSモジュール212(Global Positioning System:全地球測位システム)は、CPU201からの制御により、人工衛星の発する電波を受信することによって情報処理装置100の地球上の現在位置を示す位置情報を取得する。
【0034】
LCD213は、CPU201からの制御により、ユーザに対して画像を表示する画像表示装置である。また、LCD213は、タッチパッドなどの位置入力機能も兼ね備えたタッチパネルであってもよい。
【0035】
センサ214は、CPU201からの制御により、情報処理装置100の内部の各状態を示す情報を取得する。センサ214としては、たとえば、加速度センサ、ジャイロセンサ、照度センサ、地磁気センサ、傾きセンサ、加圧センサ、接近センサ、温度センサなどを挙げることができる。
【0036】
(実施の形態1)
(実施の形態1にかかる情報処理装置の構成)
図3は、実施の形態1にかかる情報処理装置の機能ブロック図である。図3に示すように、実施の形態1にかかる情報処理装置100は、ハードウェア310としてCPU311および周波数/電圧制御回路312を備えている。CPU311は、図2に示したCPU201に対応する構成である。周波数/電圧制御回路312は、図2に示したクロック供給回路204および電圧供給回路205に対応する構成である。
【0037】
周波数/電圧制御回路312は、カーネル320から出力される制御命令に基づいてCPU311の動作周波数およびCPU311に供給される電圧を制御する。たとえば、周波数/電圧制御回路312は、CPU311の動作周波数を減少させる場合はCPU311の電圧も減少させる。また、周波数/電圧制御回路312は、CPU311の動作周波数を増加させる場合はCPU311の電圧も増加させる。
【0038】
また、情報処理装置100は、カーネル320と、ハードウェア監視モジュール330と、監視対象アプリ一覧341と、アプリ起動/停止監視モジュール342と、ポリシ制御ソフト350と、の機能を有する。また、情報処理装置100は、システム状態調査モジュール360と、制御ポリシ変更ルール表370と、の機能を有する。図1に示した制御部150は、たとえば、周波数/電圧制御回路312、カーネル320およびポリシ制御ソフト350によって実現することができる。
【0039】
カーネル320は、たとえば、CPU311によって実行されるOS(Operating System:オペレーティングシステム)の一部である。カーネル320は、CPUスケジューラ321と、目標周波数計算モジュール322と、動作周波数設定モジュール323と、システム状態取得用I/F324と、を備えている。
【0040】
CPUスケジューラ321は、CPU311の利用率を定期的に取得し、取得したCPU311の利用率を目標周波数計算モジュール322へ通知する。目標周波数計算モジュール322は、CPU311の動作周波数の制御ポリシと、CPUスケジューラ321から通知された利用率と、に基づいて目標とするCPU311の動作周波数を決定する。また、目標周波数計算モジュール322は、ポリシ制御ソフト350から出力される設定変更命令にしたがって制御ポリシを変更する。目標周波数計算モジュール322は、決定した目標の動作周波数を動作周波数設定モジュール323へ通知する。
【0041】
動作周波数設定モジュール323は、CPU311の動作周波数が、目標周波数計算モジュール322から通知された動作周波数となるように周波数/電圧制御回路312へ制御命令を出力するドライバである。
【0042】
ハードウェア監視モジュール330は、システム状態取得用I/F324から出力されるハードウェア状態を監視し、情報処理装置100のハードウェアの状態変化を検出する。ハードウェア監視モジュール330は、ハードウェアの状態変化を検出すると、ハードウェアの状態変化を検出したことを示すハードウェア状態変化イベントをポリシ制御ソフト350へ通知する。
【0043】
監視対象アプリ一覧341は、CPU311によって実行される情報処理装置100のアプリケーションのうちの監視対象のアプリケーション(特定のソフトウェア)を示す情報である。監視対象のアプリケーションは、たとえば、音楽や動画の再生アプリ、通話アプリなどの、CPU311の大きな処理能力が要求されるアプリケーションである。監視対象アプリ一覧341は、たとえば図2に示した補助メモリ203に記憶されている。
【0044】
アプリ起動/停止監視モジュール342は、システム状態取得用I/F324から出力されるアプリ/プロセス状態を監視し、監視対象アプリ一覧341に含まれるアプリケーション(プロセスなどでもよい)の起動または停止を検出する。アプリ起動/停止監視モジュール342は、アプリケーションの起動または停止を検出すると、アプリケーションの起動または停止を検出したことを示すアプリ起動/停止イベントをポリシ制御ソフト350へ通知する。図1に示した検出部120は、たとえばハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342の少なくとも一方によって実現することができる。
【0045】
ポリシ制御ソフト350は、目標周波数計算モジュール322へ設定変更命令を出力することで、CPU311の動作周波数の制御ポリシを制御する。具体的には、ポリシ制御ソフト350は、ハードウェア監視モジュール330からハードウェア状態変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。ポリシ制御ソフト350は、ハードウェア監視モジュール330から通知されたハードウェア状態変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとして制御ポリシ変更ルール表370からアクションリストを検索する。
【0046】
また、ポリシ制御ソフト350は、アプリ起動/停止監視モジュール342からアプリ起動/停止イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、アプリ起動/停止監視モジュール342から通知されたアプリ起動/停止イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0047】
ポリシ制御ソフト350は、検索したアクションにしたがって制御ポリシを変更することを指示する設定変更命令をカーネル320へ通知する。これにより、カーネル320の目標周波数計算モジュール322によってCPU311の動作周波数の制御ポリシが変更される。図1に示した検索部140は、たとえばポリシ制御ソフト350によって実現することができる。
【0048】
システム状態調査モジュール360は、ポリシ制御ソフト350からの要求に応じて、ハードウェア状態やアプリ/プロセス状態などのシステム状態をシステム状態取得用I/F324から取得する。ハードウェア状態は、情報処理装置100のハードウェアの状態を示す情報である。アプリ/プロセス状態は、情報処理装置100の特定のアプリケーションやプロセスが実行中であるか否かを示す情報である。システム状態調査モジュール360は取得したシステム情報をポリシ制御ソフト350へ出力する。図1に示した判定部130は、たとえばシステム状態調査モジュール360によって実現することができる。
【0049】
制御ポリシ変更ルール表370は、第1要素の状態変化(イベント)と、第2要素の状態と、の組み合わせごとにアクションリスト(アクション)が対応付けられた対応情報である。第1要素の状態変化には、ハードウェア状態変化イベントやアプリ起動/停止イベントなどが含まれる。第2要素の状態には、ハードウェア状態やアプリ/プロセス状態などが含まれる。アクションリストが示すアクションとしては、たとえば、動作周波数の制御のアルゴリズム(処理優先や電力優先など)の変更や、動作周波数の制御のパラメータ(動作周波数の変更割合、上限値や下限値など)の増減などを挙げることができる。
【0050】
制御ポリシ変更ルール表370は、たとえば図2に示した補助メモリ203に記憶されている。テーブル371は、制御ポリシ変更ルール表370の具体例である。テーブル371においては、ハードウェア状態変化イベントやアプリ起動/停止イベントなどのイベントと、ハードウェア状態(ハード状態)と、アプリ/プロセス状態(アプリ状態)と、の組み合わせごとにアクションが対応付けられている。
【0051】
このように、実施の形態1にかかる情報処理装置100は、システム状態調査モジュール360を備え、イベント通知時にシステム状態を調査する。そして、情報処理装置100は、イベントとシステム状態の組み合わせをキーとして多次元の制御ポリシ変更ルール表370を検索し、検索結果に基づいて制御ポリシを変更する。これにより、CPU311の動作周波数を状況に応じて適切に設定することができる。
【0052】
たとえば、LCD213をオフ、または外部給電部215からの外部給電を中断などのイベントが発生した場合でも、特定のアプリケーションが起動している場合は、特定のアプリケーションが起動していない場合よりもCPUの動作周波数の上限値を高くする。これにより、特定のアプリケーションの応答性能を向上させることができる。
【0053】
また、制御ポリシ変更ルール表370は、制御ポリシそのものではなく、制御ポリシの変更のアクションを格納する構造とすることにより、制御ポリシ変更ルール表370のエントリ数(ルール数)を少なくすることができる。たとえば、動作周波数の上限値や下限値などのアクションはそれぞれ1つ(1行)のエントリに格納することができるため、現在の上限値や下限値ごとに変更後の上限値や下限値を対応付ける場合と比べてエントリ数を少なくすることができる。
【0054】
ただし、制御ポリシ変更ルール表370に制御ポリシそのものを格納する構成とすることも可能である。この場合も、CPU311の動作周波数を状況に応じて適切に設定することができる。
【0055】
(情報処理装置による動作周波数の制御)
図4は、情報処理装置による動作周波数の制御の一例を示すフローチャートである。情報処理装置100は、CPU311の動作周波数の制御として、たとえば図4に示す各ステップを実行する。まず、情報処理装置100は、たとえば補助メモリ203に記憶された設定ルールを読み取る(ステップS401)。
【0056】
設定ルールは、たとえば、情報処理装置100のシステム状態と、CPU311の動作周波数の制御ポリシと、を対応付ける情報である。システム状態には、たとえば、情報処理装置100のハードウェアの状態や、情報処理装置100のアプリケーションの起動または停止の状態などが含まれる。
【0057】
つぎに、情報処理装置100は、情報処理装置100のシステム状態を取得する(ステップS402)。つぎに、情報処理装置100は、CPU311の動作周波数の制御ポリシの初期設定を行う(ステップS403)。具体的には、情報処理装置100は、ステップS401によって読み取った設定ルールにおいて、ステップS402によって取得したシステム状態に対応する制御ポリシをCPU311の動作周波数の制御ポリシとして目標周波数計算モジュール322に設定する。
【0058】
つぎに、情報処理装置100は、情報処理装置100のシステムイベントが発生したか否かを判断し(ステップS404)、システムイベントが発生するまで待つ(ステップS404:Noのループ)。システムイベントには、たとえば、特定のハードウェアの状態が所定の状態に変化したことを示すイベントや、特定のアプリケーションの起動や停止などのイベントなどが含まれる。
【0059】
ステップS404において、システムイベントが発生すると(ステップS404:Yes)、情報処理装置100は、発生したシステムイベントが情報処理装置100のシャットダウンのイベントであるか否かを判断する(ステップS405)。シャットダウンのイベントである場合(ステップS405:Yes)は、情報処理装置100は一連の制御を終了する。
【0060】
ステップS405において、シャットダウンのイベントでない場合(ステップS405:No)は、情報処理装置100は、情報処理装置100のシステム状態を取得する(ステップS406)。つぎに、情報処理装置100は、制御ポリシ変更ルール表370から、ステップS404において発生したシステムイベントとステップS406によって取得したシステム状態をキーとしてアクションリストを検索する(ステップS407)。つぎに、情報処理装置100は、ステップS407によって検索したアクションリストが示すアクションを実行し(ステップS408)、ステップS404へ戻る。
【0061】
以上の各ステップにより、システム状態に基づいてCPU311の動作周波数の制御ポリシの初期設定を行うことができる。また、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてCPU311の動作周波数の制御ポリシを変更することができる。
【0062】
(ポリシ制御ソフトによる処理)
図5は、ポリシ制御ソフトによる処理の一例を示すフローチャートである。図5に示す各ステップは、たとえば図4に示したステップS404,S406〜S408に対応する処理である。まず、ポリシ制御ソフト350は、ハードウェア監視モジュール330またはアプリ起動/停止監視モジュール342からシステムイベントが通知されたか否かを判断し(ステップS501)、システムイベントが通知されるまで待つ(ステップS501:Noのループ)。
【0063】
ステップS501において、システムイベントが通知されると(ステップS501:Yes)、ポリシ制御ソフト350は、システム状態調査モジュール360へシステム状態の調査を依頼する(ステップS502)。つぎに、ポリシ制御ソフト350は、ステップS502による調査の依頼に対してシステム状態調査モジュール360から通知されたシステム状態を取得する(ステップS503)。
【0064】
つぎに、ポリシ制御ソフト350は、ステップS501において通知されたシステムイベントと、ステップS503によって取得したシステム状態と、の組み合わせをキーとして制御ポリシ変更ルール表370を検索する(ステップS504)。そして、ポリシ制御ソフト350は、ステップS504による検索において、キーが一致するエントリが制御ポリシ変更ルール表370にあるか否かを判断する(ステップS505)。
【0065】
ステップS505において、一致するエントリがない場合(ステップS505:No)は、ポリシ制御ソフト350は、ステップS501へ戻る。一致するエントリがある場合(ステップS505:Yes)は、ポリシ制御ソフト350は、一致するエントリのアクションリストを制御ポリシ変更ルール表370から取得する(ステップS506)。
【0066】
つぎに、ポリシ制御ソフト350は、ステップS506によって取得したアクションリストの内容を実行し(ステップS507)、ステップS501へ戻る。以上の各ステップにより、ポリシ制御ソフト350は、システムイベントが発生した時のシステム状態を取得し、システムイベントとシステム状態の組み合わせに応じてCPU311の動作周波数の制御ポリシを変更することができる。
【0067】
以上の各ステップにより、システムイベント発生時に、発生したシステムイベントと、システムイベント発生時のシステム状態と、の組み合わせに基づいてCPU311の動作周波数の制御ポリシを変更することができる。
【0068】
(システム状態調査モジュールによる処理)
図6は、システム状態調査モジュールによる処理の一例を示すフローチャートである。システム状態調査モジュール360は、たとえば図6に示す各ステップを実行する。まず、システム状態調査モジュール360は、ポリシ制御ソフト350からシステム状態の調査の依頼があったか否かを判断し(ステップS601)、調査の依頼があるまで待つ(ステップS601:Noのループ)。
【0069】
ステップS601において、調査の依頼があると(ステップS601:Yes)、システム状態調査モジュール360は、調査対象のシステム状態をカーネル320から取得する(ステップS602)。つぎに、システム状態調査モジュール360は、ステップS602によって取得したシステム状態をポリシ制御ソフト350へ通知し(ステップS603)、ステップS601へ戻る。以上の各ステップにより、ポリシ制御ソフト350からのシステム状態の調査の依頼に対して、調査対象のシステム状態をカーネル320から取得してポリシ制御ソフト350へ通知することができる。
【0070】
(実施の形態1にかかる制御ポリシ変更ルール表)
図7は、実施の形態1にかかる制御ポリシ変更ルール表の一例を示す図表である。図7に示す制御ポリシ変更ルール表370は、図3に示した制御ポリシ変更ルール表370の一例である。図7に示すように、制御ポリシ変更ルール表370においては、「イベント」(第1要素の状態変化)と、「ハード状態」および「監視対象アプリ状態」(第2要素の状態)と、の組み合わせに対してアクションリストが対応付けられている。制御ポリシ変更ルール表370の「ANY」は任意の状態を示している。
【0071】
「イベント」の「LCDオン」は、LCD213がオフからオンになったことを示すイベントである。「イベント」の「LCDオフ」は、LCD213がオンからオフになったことを示すイベントである。「イベント」の「監視対象アプリ起動」は、監視対象のアプリケーションが起動されたことを示すイベントである。「監視対象アプリ停止」は、監視対象のアプリケーションが停止されたことを示すイベントである。
【0072】
「ハード状態」は、情報処理装置100の各ハードウェアの状態を示している。「LCD」は、LCD213のオン/オフの状態を示している。「バッテリ残量」は、電池パック208の残量を示している。「外部給電有無」は、電源回路209に接続された外部電源からの給電の有無を示している。「装置内部温度」は、センサ214によって計測された情報処理装置100の内部の温度を示している。「無線」は、たとえばブルートゥースインターフェース211や無線LANなどの無線機能のオン/オフの状態を示している。
【0073】
「監視対象アプリ状態」は、監視対象のアプリケーションの「アクティブ」または「スリープ」の状態を示している。「アクティブ」は、監視対象のアプリケーションが起動されていることを示している。「スリープ」は、監視対象のアプリケーションが起動していないことを示している。
【0074】
アクションリストの「処理優先アルゴリズム」および「電力優先アルゴリズム」は、CPU311の動作周波数の制御のアルゴリズムを示している。「処理優先アルゴリズム」は、「電力優先アルゴリズム」よりもCPU311の動作周波数および消費電力が高くなるアルゴリズムである(たとえば図8−1,図8−2参照)。
【0075】
図7に示すように、ポリシ制御ソフト350は、LCD213がオンになった場合は、制御ポリシのアルゴリズムを「処理優先アルゴリズム」にするとともに、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定する。「上限値1」は、後述の「上限値2」より高い上限値である。「下限値1」は、後述の「下限値2」より高い下限値である。
【0076】
また、ポリシ制御ソフト350は、LCD213がオフになり、かつ監視対象のアプリケーションの状態が「スリープ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定する。
【0077】
また、ポリシ制御ソフト350は、LCD213がオフになり、かつ監視対象のアプリケーションの状態が「アクティブ」である場合は、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定する。
【0078】
また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションが起動すると、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションが停止すると、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0079】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションが起動すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【0080】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションが停止すると、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0081】
(アルゴリズムおよび制限値)
図8−1は、電力優先アルゴリズムおよび制限値の一例を示す図である。図8−1において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。タイミングt1からタイミングt2にかけて情報処理装置100が実行中のアプリケーションの数が増加し、タイミングt2より後は情報処理装置100が実行中のアプリケーションの数が減少したとする。上限値811および下限値812は、それぞれ図7に示した「上限値1」および「下限値1」を示している。
【0082】
動作周波数変化810は、「電力優先アルゴリズム」を用いた場合のCPU311の動作周波数の変化を示している。動作周波数変化810に示すように、情報処理装置100が実行中のアプリケーションの数が増加すると、CPU311の動作周波数が上限値811となるまで比較的緩やかに段階的に増加する。
【0083】
また、情報処理装置100が実行中のアプリケーションの数が減少すると、CPU311の動作周波数が下限値812となるまで比較的急峻に段階的に低下する。これにより、CPU311の動作周波数が全体的に低くなる。このため、CPU311の電圧も低くなり、CPU311の消費電力を低くすることができる。なお、CPU311の消費電力は、たとえばCPU311の動作周波数および電圧の2乗に比例して変化する。このため、CPU311の動作周波数や電圧を低下させることでCPU311の消費電力を低下させることができる。
【0084】
図8−2は、処理優先アルゴリズムの一例および制限値を示す図である。図8−2において、図8−1に示した部分と同様の部分については説明を省略する。図8−2に示す上限値821および下限値822は、それぞれ図7に示した「上限値2」および「下限値2」を示している。したがって、上限値821および下限値822は図8−1に示した上限値811および下限値812より高い値である。
【0085】
動作周波数変化820は、「処理優先アルゴリズム」を用いた場合のCPU311の動作周波数の変化を示している。動作周波数変化820に示すように、情報処理装置100が実行中のアプリケーションの数が増加すると、CPU311の動作周波数が上限値821まで急峻に増加する。
【0086】
また、情報処理装置100が実行中のアプリケーションの数が減少すると、CPU311の動作周波数が下限値822となるまで比較的緩やかに段階的に低下する。これにより、CPU311の動作周波数が全体的に高くなり、CPU311の処理能力を高くすることができる。これにより、起動したアプリケーションをスムーズに実行し、たとえばアプリケーションの応答性能を向上させることができる。
【0087】
(実施の形態1にかかる動作周波数の制御)
図9−1〜図9−3は、実施の形態1にかかる動作周波数の制御の一例を示す図である。図9−1〜図9−3において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。縦軸の周波数f5は、図7に示した「上限値1」に対応する周波数であるとする。縦軸の周波数f3は、図7に示した「上限値2」に対応する周波数であるとする。
【0088】
図9−1に示す動作周波数変化910は、LCD213がオンになった場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。LCD213がオンになった場合は、図7の制御ポリシ変更ルール表370に示したように、「処理優先アルゴリズム」および動作周波数の「上限値1」が設定される。このため、動作周波数の上限値は比較的高い周波数f5となり、たとえばアプリケーションの起動に対して動作周波数が急峻に増加する。
【0089】
図9−2に示す動作周波数変化920は、LCD213がオフになり、監視対象のアプリケーションが実行中である場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。この場合は、図7の制御ポリシ変更ルール表370に示したように、「電力優先アルゴリズム」および動作周波数の「上限値1」が設定される。このため、動作周波数の上限値は比較的高い周波数f5としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【0090】
図9−3に示す動作周波数変化930は、LCD213がオフになり、監視対象のアプリケーションが実行中でない場合に設定される制御ポリシによるCPU311の動作周波数の変化を示している。この場合は、図7の制御ポリシ変更ルール表370に示したように、「電力優先アルゴリズム」および動作周波数の「上限値2」が設定される。このため、動作周波数の上限値は比較的低い周波数f1としつつ、たとえばアプリケーションの起動に対して動作周波数が比較的緩やかに段階的に増加する。
【0091】
これにより、たとえば、LCD213がオフになった際に、監視対象のアプリケーションが実行中である場合は、監視対象のアプリケーションが実行中でない場合よりもCPU311の動作周波数の上限値を高く設定することができる。たとえば監視対象のアプリケーションが音楽の再生アプリケーションである場合は、再生アプリケーションを実行中にLCD213がオフになっても、CPU311の動作周波数の上限値を比較的高く設定することができる。これにより、再生アプリケーションのためのCPU311の処理能力を確保し、音飛びなどを回避することができる。
【0092】
このように、実施の形態1にかかる情報処理装置100によれば、第1要素の状態変化だけでなく第2要素の状態も参照してCPU311の動作周波数の制御規則を決定することができる。これにより、アプリケーションやハードウェアが様々な状態で動作する場合においても、状況に応じて処理能力と省電力を適切に制御することができる。
【0093】
具体的には、CPU311の高い処理能力が求められる状況ではCPU311の動作周波数が高くなる制御ポリシを設定することができる。また、CPU311の高い処理能力が求められない状況や省電力が求められる状況ではCPU311の動作周波数が低くなる制御ポリシを設定することができる。
【0094】
たとえば、ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化(操作終了時の状態変化)を第1要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第2要素の状態とする。そして、対応情報においては、操作終了時の状態変化と特定のソフトウェアが実行中の状態との組み合わせに対して、操作終了時の状態変化と特定のソフトウェアが実行中でない状態との組み合わせよりもCPU311の処理能力が高くなる制御規則を対応付ける。
【0095】
ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化は、たとえばLCD213のオンからオフへの変化などである。ただし、ユーザが情報処理装置100の操作を終了する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置100の傾きの変化(たとえば傾いた状態から水平状態への変化)などであってもよい。これにより、たとえば、ユーザが情報処理装置100の操作を終了する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる(処理性能が高くなる)制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。たとえば特定のソフトウェアが音楽再生や通話のアプリケーションである場合は、処理不足による音飛びなどを回避することができる。
【0096】
また、情報処理装置100への外部電源の供給停止などを第1要素の状態変化とし、特定のソフトウェアが実行中か否かの状態を第2要素の状態としてもよい。そして、対応情報においては、供給停止と特定のソフトウェアが実行中の状態との組み合わせに対して、供給停止と特定のソフトウェアが実行中でない状態との組み合わせよりもCPU311の処理能力が高くなる制御規則を対応付ける。これにより、たとえば、外部電源の供給が停止する場合においても、特定のソフトウェアが実行中である場合は動作周波数が比較的高くなる(処理性能が高くなる)制御ポリシを適用し、特定のソフトウェアをスムーズに実行することが可能になる。
【0097】
また、CPU311によって実行される特定のソフトウェアの起動を第1要素の状態変化とし、情報処理装置100の電池残量が閾値以上であるか否かの状態を第2要素の状態としてもよい。そして、対応情報においては、特定のソフトウェアの起動と電池残量が閾値以上でない状態との組み合わせに対して、特定のソフトウェアの起動と電池残量が閾値以上である状態との組み合わせよりもCPU311の消費電力が低くなる制御規則を対応付ける。これにより、たとえば、特定のソフトウェアを起動する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる(消費電力が低くなる)制御ポリシを適用し、消費電力を抑えることが可能になる。たとえば、バッテリ残量が少ないために電力優先の制御ポリシを適用している場合において、CPU311の多くの処理能力が要求されるアプリケーションを起動した場合に、処理能力優先の制御ポリシを適用してしまうことを回避することができる。
【0098】
また、ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化(操作開始時の状態変化)を第1要素の状態変化とし、情報処理装置100の電池残量が閾値以上であるか否かの状態を第2要素の状態としてもよい。そして、対応情報においては、操作開始時の状態変化と電池残量が閾値以上でない状態との組み合わせに対して、操作開始時の状態変化と電池残量が閾値以上である状態との組み合わせよりもCPU311の消費電力が低くなる制御規則を対応付ける。
【0099】
ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化は、たとえばLCD213のオフからオンへの変化などである。ただし、ユーザが情報処理装置100の操作を開始する場合のハードウェアの状態変化はこれに限らず、たとえば、傾きセンサによって検知される情報処理装置100の傾きの変化(たとえば水平状態から傾いた状態への変化)やタッチパネルの操作などであってもよい。これにより、たとえば、ユーザが情報処理装置100の操作を開始する場合においても、電池残量が閾値以上でない場合は動作周波数が比較的低くなる(消費電力が低くなる)制御ポリシを適用し、消費電力を抑えることが可能になる。
【0100】
また、情報処理装置100のハードウェアのイベントとしては、上記の他に、GPSのオン/オフ、無線LANのオン/オフ、情報処理装置100の内部の温度の変化などを用いてもよい。また、情報処理装置100のハードウェアの状態としては、上記の他に、GPSのオン/オフの状態、無線LANのオン/オフの状態、情報処理装置100の内部の温度などを用いてもよい。
【0101】
また、対応情報において対応付ける制御規則を、動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報とすることで、対応情報のエントリ数(ルール数)を少なくすることができる。これにより、対応情報の記憶に要求されるメモリ容量を削減することができる。また、対応情報を定義するシステム開発者やユーザの負担を軽減することができる。
【0102】
なお、図3に示した情報処理装置100において、ハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342のいずれかを省いた構成としてもよい。この場合は、図7に示した制御ポリシ変更ルール表370において、ハードウェア監視モジュール330およびアプリ起動/停止監視モジュール342のうちの省いたモジュールによって検出されるイベントを省いてもよい。
【0103】
(実施の形態2)
(実施の形態2にかかる情報処理装置の構成)
図10は、実施の形態2にかかる情報処理装置の機能ブロック図である。図10において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図10に示すように、実施の形態2にかかる情報処理装置100は、図3に示した構成に加えてシステム負荷監視モジュール1001を備えている。
【0104】
システム負荷監視モジュール1001は、システム状態取得用I/F324からシステム負荷を監視する。システム負荷は、たとえばCPU311の利用率(たとえばCPU311が処理を実行している時間の割合)である。または、システム負荷は、CPU311の処理待ち状態にあるプロセスの個数などであってもよい。システム負荷監視モジュール1001は、システム負荷の所定の変化が発生すると、負荷変化イベントをポリシ制御ソフト350へ通知する。
【0105】
ポリシ制御ソフト350は、システム負荷監視モジュール1001から負荷変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、システム負荷監視モジュール1001から通知された負荷変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0106】
(システム負荷監視モジュールによる処理)
図11は、システム負荷監視モジュールによる処理の一例を示すフローチャートである。システム負荷監視モジュール1001は、たとえば図11に示す各ステップを実行する。まず、システム負荷監視モジュール1001は、一定時間待機する(ステップS1101)。つぎに、システム負荷監視モジュール1001は、システム状態取得用I/F324から現在のCPU311の負荷を取得する(ステップS1102)。
【0107】
つぎに、システム負荷監視モジュール1001は、ステップS1102によって取得した負荷と閾値を比較し、CPU311の負荷の高低を判定する(ステップS1103)。具体的には、システム負荷監視モジュール1001は、負荷が閾値より高い場合は負荷を「高」と判定し、負荷が閾値より低い場合は負荷を「低」と判定する。または、システム負荷監視モジュール1001は、負荷が第1閾値より高い場合は負荷を「高」と判定し、負荷が第2閾値(<第1閾値)より低い場合は負荷を「低」と判定してもよい。
【0108】
つぎに、システム負荷監視モジュール1001は、今回のステップS1103による判定結果を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS1104)。つぎに、システム負荷監視モジュール1001は、前回のステップS1103による判定結果を情報処理装置100のメモリ(たとえば補助メモリ203)から取得する(ステップS1105)。つぎに、システム負荷監視モジュール1001は、ステップS1105により取得した前回の判定結果から、今回のステップS1103による判定結果が変化したか否かを判断する(ステップS1106)。
【0109】
ステップS1106において、判定結果が変化していない場合(ステップS1106:No)は、システム負荷監視モジュール1001は、ステップS1101へ戻る。判定結果が変化した場合(ステップS1106:Yes)は、システム負荷監視モジュール1001は、ステップS1107へ移行する。すなわち、システム負荷監視モジュール1001は、CPU311の負荷が「低」から「高」、または「高」から「低」に変化したことを示す負荷変化イベントをポリシ制御ソフト350へ通知し(ステップS1107)、ステップS1101へ戻る。
【0110】
ポリシ制御ソフト350による処理は、たとえば図5に示した各ステップと同様である。ただし、ポリシ制御ソフト350は、CPU311の負荷が変化したことがシステム負荷監視モジュール1001から通知されると、ステップS501においてシステムイベントが通知されたと判断し、ステップS502へ移行する。
【0111】
これにより、CPU311の負荷の変化を契機として、CPU311の負荷に応じて制御ポリシを変更することができる。これにより、たとえば、「電力優先アルゴリズム」によりCPU311の動作周波数を制御している場合におけるCPU311の過負荷を回避することが可能になる。
【0112】
(実施の形態2にかかる制御ポリシ変更ルール表)
図12は、実施の形態2にかかる制御ポリシ変更ルール表の一例を示す図表である。図12において、図7に示した部分と同様の部分については説明を省略する。図12に示す制御ポリシ変更ルール表370には、第2要素の状態として情報処理装置100の「動作モード」が含まれている。「動作モード」には「通常モード」および「省電力モード」が含まれる。「省電力モード」は「通常モード」より消費電力が少ない動作モードである。
【0113】
ポリシ制御ソフト350は、LCD213がオンになると「動作モード」を「通常モード」に設定する。また、ポリシ制御ソフト350は、LCD213がオフになると「動作モード」を「省電力モード」に設定する。
【0114】
また、ポリシ制御ソフト350は、LCD213がオフで「動作モード」が「省電力モード」の状態でCPU311の負荷が「低」から「高」に変化すると、CPU311の動作周波数の上限値を増加させる。また、ポリシ制御ソフト350は、LCD213がオフで「動作モード」が「省電力モード」の状態でCPU311の負荷が「高」から「低」に変化すると、CPU311の動作周波数の上限値を減少させる。
【0115】
これにより、LCD213がオフの状態で、「省電力モード」に設定されている場合においても、CPU311の処理量が増加した場合はCPU311の動作周波数の上限値を増加させ、過負荷の状態を回避することができる。
【0116】
(実施の形態2にかかる動作周波数の制御)
図13−1〜図13−3は、実施の形態2にかかる動作周波数の制御の一例を示す図である。図13−1〜図13−3において、横軸は時間を示し、縦軸はCPU311の動作周波数を示している。図13−1に示す動作周波数変化1310,1320,1330は、「電力優先アルゴリズム」において動作周波数の上限値がそれぞれ周波数f3,f4,f5である制御ポリシによるCPU311の動作周波数の変化を示している。
【0117】
図12の制御ポリシ変更ルール表370に示したように、CPU311の負荷が「低」から「高」になると動作周波数の上限値が増加する。このため、動作周波数変化1310の状態でCPU311の負荷が「低」から「高」になると、動作周波数変化1320の状態へ移行する。また、動作周波数変化1320の状態でCPU311の負荷が「低」から「高」になると、動作周波数変化1330の状態へ移行する。
【0118】
また、図12の制御ポリシ変更ルール表370に示したように、CPU311の負荷が「高」から「低」になると動作周波数の上限値が減少する。このため、動作周波数変化1330の状態でCPU311の負荷が「高」から「低」になると、動作周波数変化1320の状態へ移行する。また、動作周波数変化1320の状態でCPU311の負荷が「高」から「低」になると、動作周波数変化1310の状態へ移行する。
【0119】
このように、CPU311の負荷に応じてCPU311の動作周波数の上限値を変更し、CPU311が過負荷になることを回避することができる。ここではCPU311の動作周波数の上限値について説明したが、CPU311の負荷に応じてCPU311の動作周波数の下限値を変更してもよい。
【0120】
(システム負荷監視モジュールによる処理の変形例)
図14は、CPUの負荷と動作周波数の関係の一例を示す図である。図14において、横軸は時間を示し、左側の縦軸はCPU311の動作周波数を示し、右側の縦軸はCPU311の利用率(負荷)を示している。利用率変化1410は、アプリケーションの起動や停止などに起因するCPU311の利用率の変化を示している。動作周波数変化1420は、制御ポリシに基づくCPU311の動作周波数の変化を示している。
【0121】
利用率変化1410および動作周波数変化1420に示すように、CPU311の動作周波数は、CPU311の負荷に追従して変化する性質を有する。この性質を利用して、システム負荷監視モジュール1001(算出部)は、CPU311の動作周波数をシステム状態取得用I/F324から取得し、取得した動作周波数に基づいてCPU311の負荷を監視してもよい。具体的には、現在の制御ポリシにおける動作周波数の上限値でCPU311が動作している時間の割合を算出することでCPU311の負荷を算出することができる。
【0122】
図15は、システム負荷監視モジュールによる処理の変形例を示すフローチャートである。システム負荷監視モジュール1001は、たとえば図15に示す各ステップを実行してもよい。まず、システム負荷監視モジュール1001は、一定時間待機する(ステップS1501)。つぎに、システム負荷監視モジュール1001は、負荷判定処理を行うことによってCPU311の負荷の高低を判定する(ステップS1502)。負荷判定処理については後述する。図15に示すステップS1503〜S1506は、図11に示したステップS1104〜S1107と同様である。
【0123】
図16は、図15に示した負荷判定処理の一例を示すフローチャートである。システム負荷監視モジュール1001は、図15に示したステップS1502において、たとえば図16に示す各ステップを実行する。まず、システム負荷監視モジュール1001は、周波数利用時間履歴をシステム状態取得用I/F324から取得する(ステップS1601)。周波数利用時間履歴は、たとえば、カーネル320が動作を開始してから現在までの期間における、CPU311の動作周波数ごとの動作時間を示す情報である。
【0124】
つぎに、システム負荷監視モジュール1001は、今回のステップS1601によって取得した周波数利用時間履歴を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS1602)。つぎに、システム負荷監視モジュール1001は、前回のステップS1601によって取得した周波数利用時間履歴を情報処理装置100のメモリ(たとえば補助メモリ203)から取得する(ステップS1603)。
【0125】
つぎに、システム負荷監視モジュール1001は、今回のステップS1601によって取得した周波数利用時間履歴と、ステップS1603により取得した前回の周波数利用時間履歴と、の差分を算出する(ステップS1604)。具体的には、システム負荷監視モジュール1001は、CPU311の動作周波数ごとに、今回取得した周波数利用時間履歴が示すCPU311の動作時間と、前回取得した周波数利用時間履歴が示すCPU311の動作時間と、の差分を算出する。これにより、前回チェック時から現在までの経過時間におけるCPU311の動作周波数ごとの動作時間を算出することができる。
【0126】
つぎに、システム負荷監視モジュール1001は、ステップS1604によって算出した動作周波数ごとの動作時間のうちの現在のCPU311の上限周波数での動作時間の、前回チェック時から現在までの経過時間に対する比率を算出する(ステップS1605)。つぎに、システム負荷監視モジュール1001は、ステップS1605によって算出した比率が閾値より大きいか否かを判断する(ステップS1606)。
【0127】
ステップS1606において、算出した比率が閾値より大きい場合(ステップS1606:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「高」と判定し(ステップS1607)、一連の処理を終了する。算出した比率が閾値以下である場合(ステップS1606:No)は、システム負荷監視モジュール1001は、CPU311の負荷を「低」と判定し(ステップS1608)、一連の処理を終了する。
【0128】
以上の各ステップにより、CPU311の負荷の高低をCPU311の動作周波数に基づいて判定することができる。このため、実際のCPU311の負荷に即した負荷状態を判定することが可能になる。
【0129】
図17は、図16に示した負荷判定処理の変形例を示すフローチャートである。システム負荷監視モジュール1001は、図15に示したステップS1502において、たとえば図17に示す各ステップを実行してもよい。図17に示すステップS1701〜S1706は、図16に示したステップS1601〜S1606と同様である。
【0130】
ただし、ステップS1705において、システム負荷監視モジュール1001は、上限周波数での動作時間の経過時間に対する第1比率を算出する(ステップS1705)。つぎに、システム負荷監視モジュール1001は、ステップS1705によって算出した第1比率が第1閾値より大きいか否かを判断する(ステップS1706)。
【0131】
ステップS1706において、第1比率が第1閾値より大きい場合(ステップS1706:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「高」と判定し(ステップS1707)、一連の処理を終了する。
【0132】
第1比率が第1閾値以下である場合(ステップS1706:No)は、システム負荷監視モジュール1001は、ステップS1708へ移行する。すなわち、システム負荷監視モジュール1001は、ステップS1704によって算出した動作周波数ごとの動作時間のうちの現在のCPU311の下限周波数での動作時間の、前回チェック時から現在までの経過時間に対する第2比率を算出する(ステップS1708)。
【0133】
つぎに、システム負荷監視モジュール1001は、ステップS1708によって算出した第2比率が第2閾値より大きいか否かを判断する(ステップS1709)。第2閾値は、たとえば第1閾値より低い閾値である。第2比率が第2閾値より大きい場合(ステップS1709:Yes)は、システム負荷監視モジュール1001は、CPU311の負荷を「中」と判定し(ステップS1710)、一連の処理を終了する。
【0134】
第2比率が第2閾値より大きくない場合(ステップS1709:No)は、システム負荷監視モジュール1001は、CPU311の負荷を「低」と判定し(ステップS1711)、一連の処理を終了する。以上の各ステップにより、CPU311の負荷を「高」「中」「低」と判定することができる。ここでは第1閾値と第2閾値を用いてCPU311の負荷を3段階で判定する場合について説明したが、3つ以上の閾値を用いてCPU311の負荷を4段階以上で判定してもよい。
【0135】
このように、実施の形態2にかかる情報処理装置100によれば、CPU311の負荷量の閾値未満から閾値以上への負荷増加を第1要素の状態変化とし、負荷増加が検出された場合にCPU311の動作周波数の上限値を増加させることができる。これにより、CPU311の負荷に応じてCPU311の動作周波数の上限値を制御し、CPU311が過負荷になることを回避することができる。
【0136】
このため、たとえば、電力優先の制御ポリシを適用している場合に、CPU311の処理能力が多量に要求される状況になると、CPU311の動作周波数の上限値を増加させることができる。
【0137】
また、CPU311の負荷(利用率)に対してCPU311の動作周波数が追従する場合において、CPU311が動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて負荷増加を検出することで負荷増加を精度よく検出することができる。
【0138】
(実施の形態3)
図18は、実施の形態3にかかる情報処理装置の機能ブロック図である。図13において、図10に示した部分と同様の部分については同一の符号を付して説明を省略する。図18に示すように、実施の形態3にかかる情報処理装置100は、図10に示した構成に加えて、検査対象リスト1801と、プロセス監視モジュール1802と、を備えている。アプリ起動/停止監視モジュール342は、アプリケーションの起動または停止を検出すると、アプリ起動/停止イベントをプロセス監視モジュール1802へ通知する。
【0139】
検査対象リスト1801は、監視対象アプリ一覧341の各アプリケーションのうちの検査中のアプリケーションを示す情報である。検査対象リスト1801は、たとえば図2に示した補助メモリ203に記憶されている。
【0140】
プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ起動イベントが通知されると、起動したアプリケーションを検査対象リスト1801に追加する。また、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ停止イベントが通知されると、停止したアプリケーションを検査対象リスト1801から削除する。
【0141】
また、プロセス監視モジュール1802は、検査対象リスト1801が示す各アプリケーションのCPU311の所定期間内の利用時間をシステム状態取得用I/F324から取得する。そして、プロセス監視モジュール1802は、取得した利用時間に基づいて、検査対象リスト1801が示す各アプリケーションが実際に利用されているか否かを定期的に判定する。たとえば、プロセス監視モジュール1802は、取得した利用時間が閾値以上であるか否かによってアプリケーションが実際に利用されているか否かを判定する。
【0142】
プロセス監視モジュール1802は、判定結果が変化すると、アプリ動作状態変化イベントをポリシ制御ソフト350へ通知する。これにより、実行中のアプリケーションについて、ユーザによる利用が開始された場合に、利用が開始された旨のアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。また、実行中のアプリケーションについて、ユーザによる利用が終了した場合に、利用が終了した旨のアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。
【0143】
ポリシ制御ソフト350は、プロセス監視モジュール1802からアプリ動作状態変化イベントが通知された場合に、システム状態取得用I/F324から出力されるハードウェア状態やアプリ/プロセス状態などのシステム状態を取得する。そして、ポリシ制御ソフト350は、プロセス監視モジュール1802から通知されたアプリ動作状態変化イベントと、システム状態取得用I/F324から取得したシステム状態と、をキーとしてポリシ制御ソフト350からアクションリストを検索する。
【0144】
(検査対象リスト)
図19は、検査対象リストの一例を示す図である。図19に示す検査対象リスト1801は、図18に示した検査対象リスト1801の一例である。検査対象リスト1801には、実行中の各アプリケーション(プロセス等でもよい)が含まれている。
【0145】
また、検査対象リスト1801の各アプリケーションには「CPU利用時間」および「活動状態」が対応付けられている。「CPU利用時間」は、システム状態取得用I/F324から取得したアプリケーションによるCPU311の所定期間内の累積の利用時間を示す情報である。
【0146】
「活動状態」はアプリケーションが実際に利用されているか否かを示す情報である。「活動状態」が「アクティブ」である場合は、アプリケーションが実際に利用されていることを示している。「活動状態」が「スリープ」である場合は、アプリケーションは実行中(起動済みで停止していない状態)であるが実際に利用されていないことを示している。
【0147】
たとえば、「CPU利用時間」が閾値以上であるアプリケーションは「活動状態」が「アクティブ」となる。また、「CPU利用時間」が閾値未満であるアプリケーションは「活動状態」が「スリープ」となる。
【0148】
(プロセス監視モジュールによる処理)
図20は、プロセス監視モジュールによる処理の一例を示すフローチャートである。プロセス監視モジュール1802は、たとえば図20に示す各ステップを実行する。まず、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ起動イベントが通知されたか否かを判断する(ステップS2001)。
【0149】
ステップS2001において、アプリ起動イベントが通知された場合(ステップS2001:Yes)は、プロセス監視モジュール1802は、アプリ起動イベントの対象アプリケーションを検査対象リスト1801に追加し(ステップS2002)、ステップS2005へ移行する。アプリ起動イベントが通知されていない場合(ステップS2001:No)は、プロセス監視モジュール1802は、アプリ起動/停止監視モジュール342からアプリ停止イベントが通知されたか否かを判断する(ステップS2003)。
【0150】
ステップS2003において、アプリ停止イベントが通知された場合(ステップS2003:Yes)は、プロセス監視モジュール1802は、アプリ停止イベントの対象アプリケーションを検査対象リスト1801から削除し(ステップS2004)、ステップS2005へ移行する。アプリ停止イベントが通知されていない場合(ステップS2003:No)は、プロセス監視モジュール1802は、検査対象リスト1801の全アプリケーションをステップS2006で処理済みか否かを判断する(ステップS2005)。
【0151】
ステップS2005において、検査対象リスト1801の全アプリケーションを処理済みでない場合(ステップS2005:No)は、ステップS1601は、ステップS2006へ移行する。すなわち、プロセス監視モジュール1802は、検査対象リスト1801に含まれる各アプリケーションのうちの未処理のアプリケーションについて活動状態を検査する活動状態検査処理を行う(ステップS2006)。活動状態検査処理についてはたとえば図21において説明する。
【0152】
ステップS2005において、検査対象リスト1801の全アプリケーションを処理済みである場合(ステップS2005:Yes)は、プロセス監視モジュール1802は、ステップS2007へ移行する。すなわち、プロセス監視モジュール1802は、検査対象リスト1801に基づいて、検査対象リスト1801に含まれる各アプリケーションの活動状態を情報処理装置100のメモリ(たとえば補助メモリ203)に記憶する(ステップS2007)。
【0153】
つぎに、プロセス監視モジュール1802は、前回の各アプリケーションの活動状態を情報処理装置100のメモリ(たとえば補助メモリ203)から読み出す(ステップS2008)。つぎに、プロセス監視モジュール1802は、ステップS2007によって読み出した前回の各アプリケーションの活動状態および検査対象リスト1801に基づいて変化検出処理を行い(ステップS2009)、ステップS2001へ戻る。変化検出処理についてはたとえば図22において説明する。
【0154】
図21は、活動状態検査処理の一例を示すフローチャートである。プロセス監視モジュール1802は、図20に示したステップS2006の活動状態検査処理として、検査対象アプリケーションについてたとえば図21に示す各ステップを実行する。まず、プロセス監視モジュール1802は、検査対象アプリケーションの現在のCPU利用時間をシステム状態取得用I/F324から取得する(ステップS2101)。
【0155】
つぎに、プロセス監視モジュール1802は、今回のステップS2101によって取得したCPU利用時間をメモリ(たとえば補助メモリ203)に記憶する(ステップS2102)。つぎに、プロセス監視モジュール1802は、検査対象アプリケーションの前回のCPU利用時間をメモリ(たとえば補助メモリ203)から取得する(ステップS2103)。つぎに、プロセス監視モジュール1802は、ステップS2101によって取得した今回のCPU利用時間と、ステップS2103によって取得した前回のCPU利用時間と、の差分を算出する(ステップS2104)。
【0156】
つぎに、プロセス監視モジュール1802は、検査対象アプリケーションの活動状態を検査対象リスト1801から取得する(ステップS2105)。つぎに、プロセス監視モジュール1802は、ステップS2105によって取得した前回チェック時の活動状態がアクティブだったか否かを判断する(ステップS2106)。
【0157】
ステップS2106において、前回チェック時の活動状態がアクティブだった場合(ステップS2106:Yes)は、プロセス監視モジュール1802は、ステップS2104によって算出した差分が第1閾値より小さいか否かを判断する(ステップS2107)。差分が第1閾値より小さい場合(ステップS2107:Yes)は、プロセス監視モジュール1802は、検査対象リスト1801の活動状態をスリープに設定し(ステップS2108)、一連の処理を終了する。差分が第1閾値以上である場合(ステップS2107:No)は、プロセス監視モジュール1802は、一連の処理を終了する。
【0158】
ステップS2106において、前回チェック時の活動状態がアクティブでなくスリープであった場合(ステップS2106:No)は、プロセス監視モジュール1802は、ステップS2104によって算出した差分が第2閾値より大きいか否かを判断する(ステップS2109)。差分が第2閾値より大きい場合(ステップS2109:Yes)は、プロセス監視モジュール1802は、検査対象リスト1801の活動状態をアクティブに設定し(ステップS2110)、一連の処理を終了する。
【0159】
ステップS2109において、差分が第2閾値以下である場合(ステップS2109:No)は、プロセス監視モジュール1802は、一連の処理を終了する。以上の各ステップにより、検査対象リスト1801の各アプリケーションの活動状態を検査し、検査結果を検査対象リスト1801に反映させることができる。
【0160】
図22は、変化検出処理の一例を示すフローチャートである。プロセス監視モジュール1802は、図20に示したステップS2009の変化検出処理として、たとえば図22に示す各ステップを実行する。まず、プロセス監視モジュール1802は、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在するか否かを判断する(ステップS2201)。
【0161】
ステップS2201において、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在しない場合(ステップS2201:No)は、プロセス監視モジュール1802は、ステップS2202へ移行する。すなわち、プロセス監視モジュール1802は、図20に示したステップS2008によって取得した前回の各アプリケーションの活動状態がアクティブか否かを判断する(ステップS2202)。
【0162】
ステップS2202において、前回の各アプリケーションの活動状態がアクティブでなくスリープである場合(ステップS2202:No)は、プロセス監視モジュール1802は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がアクティブである場合(ステップS2202:Yes)は、プロセス監視モジュール1802は、ステップS2203へ移行する。すなわち、プロセス監視モジュール1802は、前回の活動状態がアクティブであったアプリケーションがスリープになった旨のイベント(アプリ動作状態変化イベント)をポリシ制御ソフト350へ通知し(ステップS2203)、一連の処理を終了する。
【0163】
ステップS2201において、検査対象リスト1801に活動状態がアクティブのアプリケーションが存在する場合(ステップS2201:Yes)は、プロセス監視モジュール1802は、ステップS2204へ移行する。すなわち、プロセス監視モジュール1802は、図20に示したステップS2008によって取得した前回の各アプリケーションの活動状態がスリープか否かを判断する(ステップS2204)。
【0164】
ステップS2204において、前回の各アプリケーションの活動状態がスリープでなくアクティブである場合(ステップS2204:No)は、プロセス監視モジュール1802は、一連の処理を終了する。前回の各アプリケーションの少なくともいずれかの活動状態がスリープである場合(ステップS2204:Yes)は、プロセス監視モジュール1802は、ステップS2205へ移行する。すなわち、プロセス監視モジュール1802は、前回の活動状態がスリープであったアプリケーションがアクティブになった旨のイベント(アプリ動作状態変化イベント)をポリシ制御ソフト350へ通知し(ステップS2205)、一連の処理を終了する。
【0165】
以上の各ステップにより、プロセス監視モジュール1802の各アプリケーションのうちの活動状態が変化したアプリケーションについてのアプリ動作状態変化イベントをポリシ制御ソフト350へ通知することができる。
【0166】
(実施の形態3にかかる制御ポリシ変更ルール表)
図23は、実施の形態3にかかる制御ポリシ変更ルール表の一例を示す図表である。図22において、図12に示した部分と同様の部分については説明を省略する。図23に示す制御ポリシ変更ルール表370のイベント(第1要素の状態変化)には、監視対象のアプリケーションの起動や停止に代えて監視対象のアプリケーションのアクティブやスリープが規定されている。
【0167】
ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションがスリープからアクティブになると(利用が開始されると)、「監視対象アプリケーション状態」を「アクティブ」に設定する。また、ポリシ制御ソフト350は、LCD213がオンの状態で監視対象のアプリケーションがアクティブからスリープになると(利用が終了すると)、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0168】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションがスリープからアクティブになると(利用が開始されると)、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値1」および「下限値1」を設定し、「監視対象アプリケーション状態」を「アクティブ」に設定する。
【0169】
また、ポリシ制御ソフト350は、LCD213がオフの状態で監視対象のアプリケーションがアクティブからスリープになると(利用が終了すると)、制御ポリシのアルゴリズムを「電力優先アルゴリズム」にする。また、この場合は、ポリシ制御ソフト350は、CPU311の動作周波数の制限値として「上限値2」および「下限値2」を設定し、「監視対象アプリケーション状態」を「スリープ」に設定する。
【0170】
このように、実施の形態3にかかる情報処理装置100によれば、特定のアプリケーションの動作状態の変化を第1の状態変化とすることで、特定のアプリケーションの実際の利用状態に応じてCPU311の動作周波数の制御ポリシを変更することができる。また、特定のアプリケーションの動作状態の変化は、特定のアプリケーションによるCPU311の利用時間に基づいて検出することができる。
【0171】
たとえば、音楽再生などのアプリケーションを起動しているが実際に利用していない(たとえば音楽を再生していない)状態で情報処理装置100を持ち運ぶ場合に、処理能力優先の制御ポリシを適用し続けて消費電力が大きくなることを回避することができる。
【0172】
また、特定のアプリケーションの動作状態の変化の検出処理を、特定のアプリケーションが起動すると開始し、特定のアプリケーションが停止すると終了することができる。これにより、特定のアプリケーションが実行中でない場合は検出処理を行わないようにし、情報処理装置100の処理量を低減することができる。
【0173】
なお、図18に示した情報処理装置100において、システム負荷監視モジュール1001を省いた構成としてもよい。この場合は、図23に示した制御ポリシ変更ルール表370において、システム負荷監視モジュール1001によって検出されるイベントを省いてもよい。
【0174】
(実施の形態4)
(実施の形態4にかかる情報処理装置の構成)
図24は、実施の形態4にかかる情報処理装置の機能ブロック図である。図24において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図24に示すように、実施の形態4にかかる情報処理装置100は、図3に示した構成に加えて、監視対象アクセス許可情報リスト2401と、インストーラ2402と、ストレージ2403と、を備えている。
【0175】
監視対象アクセス許可情報リスト2401は、監視対象とすべきアプリケーションに含まれるアクセス許可情報を示す情報である。アクセス許可情報は、アプリケーションがアクセスする情報処理装置100の機能(周辺機器など)や情報(個人情報など)を示す権限(パーミッション)を示す情報であり、たとえばアプリケーションのパッケージ内部にあらかじめ格納されている。監視対象アクセス許可情報リスト2401は、たとえば図2に示した補助メモリ203に記憶されている。
【0176】
インストーラ2402には、インストール対象のアプリケーションのパッケージが入力される。インストーラ2402は、入力されたパッケージをストレージ2403に格納することによってアプリケーションを情報処理装置100にインストールする。
【0177】
また、インストーラ2402は、インストールするアプリケーションのパッケージに格納されたアクセス許可情報を取得する。そして、インストーラ2402は、取得したアクセス許可情報が監視対象アクセス許可情報リスト2401に含まれている場合は、インストールしたアプリケーションを監視対象アプリ一覧341に追加する。また、インストーラ2402は、取得したアクセス許可情報が監視対象アクセス許可情報リスト2401に含まれていない場合は、インストールしたアプリケーションを監視対象アプリ一覧341に追加しない。
【0178】
これにより、アプリケーションをインストールする際に、インストールするアプリケーションを監視対象とすべきか否かをアクセス許可情報に基づいて判断し、監視対象とすべきアプリケーションを監視対象アプリ一覧341に追加することができる。たとえば、通話や音楽再生、センサやGPSを利用するアプリケーションなどのCPU311の処理能力が重要なアプリケーションに含まれるアクセス許可情報(たとえば通話やGPSの機能へのアクセス権限)を監視対象アクセス許可情報リスト2401に格納しておく。
【0179】
これにより、処理能力が重要なアプリケーションをインストールする場合にアプリケーションを監視対象アプリ一覧341に自動的に追加することができる。また、監視対象アプリ一覧341へのアプリケーションの登録を容易にし、たとえばユーザが手動で登録を行う場合に比べてユーザの負担を軽減することができる。
【0180】
また、インストーラ2402は、ストレージ2403に格納されたアプリケーションを削除することによってアプリケーションをアンインストールするアンインストーラの機能を有していてもよい。インストーラ2402は、監視対象アプリ一覧341に含まれるアプリケーションをアンインストールする場合に、アンインストールするアプリケーションを監視対象アプリ一覧341から削除する。
【0181】
これにより、アンインストールされたアプリケーションをアプリ起動/停止監視モジュール342が監視し続けることを回避することができる。また、監視対象アプリ一覧341からのアプリケーションの削除を容易にし、たとえばユーザが手動で削除を行う場合に比べてユーザの負担を軽減することができる。
【0182】
(インストーラによる処理)
図25は、インストーラによる処理の一例を示すフローチャートである。インストーラ2402は、アプリケーションのインストールまたはアンインストールの処理を行う場合に、たとえば図25に示す各ステップを実行する。まず、インストーラ2402は、処理内容がインストールか否かを判断する(ステップS2501)。処理内容がインストールである場合(ステップS2501:Yes)は、インストーラ2402は、監視対象アクセス許可情報リスト2401を情報処理装置100のメモリ(たとえば補助メモリ203)から読み取る(ステップS2502)。
【0183】
つぎに、インストーラ2402は、インストールの対象アプリケーションのアクセス許可情報を取得する(ステップS2503)。そして、インストーラ2402は、ステップS2503によって取得したアクセス許可情報が、ステップS2502によって読み取った監視対象アクセス許可情報リスト2401に存在するか否かを判断する(ステップS2504)。
【0184】
ステップS2504において、アクセス許可情報が監視対象アクセス許可情報リスト2401に存在しない場合(ステップS2504:No)は、インストーラ2402は、一連の処理を終了する。アクセス許可情報が監視対象アクセス許可情報リスト2401に存在する場合(ステップS2504:Yes)は、インストーラ2402は、監視対象アプリ一覧341に対象アプリケーションを追加し(ステップS2505)、一連の処理を終了する。
【0185】
ステップS2501において、処理内容がインストールでなくアンインストールである場合(ステップS2501:No)は、インストーラ2402は、アンインストールの対象アプリケーションが監視対象アプリ一覧341に存在するか否かを判断する(ステップS2506)。
【0186】
ステップS2506において、対象アプリケーションが監視対象アプリ一覧341に存在しない場合(ステップS2506:No)は、インストーラ2402は、一連の処理を終了する。対象アプリケーションが監視対象アプリ一覧341に存在する場合(ステップS2506:Yes)は、インストーラ2402は、監視対象アプリ一覧341から対象アプリケーションを削除し(ステップS2507)、一連の処理を終了する。
【0187】
以上の各ステップにより、インストールの対象アプリケーションのアクセス許可情報に基づいてインストールの対象アプリケーションを監視対象アプリ一覧341に追加するか否かを自動的に判定することができる。また、アンインストールの対象アプリケーションを監視対象アプリ一覧341から自動的に削除することができる。
【0188】
実施の形態4にかかる制御ポリシ変更ルール表370は、たとえば図7に示した制御ポリシ変更ルール表370と同様である。
【0189】
このように、実施の形態4にかかる情報処理装置100によれば、インストールの対象のアプリケーションのアクセス権限が特定のアクセス権限である場合に対象のアプリケーションを特定のアプリケーションとして記憶することができる。これにより、特定のアプリケーションを容易に登録し、ユーザの負担を軽減することができる。
【0190】
また、情報処理装置100によれば、アンインストールの対象のアプリケーションを特定のアプリケーションから除外することができる。これにより、特定のアプリケーションを容易に削除し、ユーザの負担を軽減することができる。
【0191】
(実施の形態5)
図26は、実施の形態5にかかる情報処理装置の機能ブロック図である。図26において、図18または図24に示した部分と同様の部分については同一の符号を付して説明を省略する。図26に示すように、実施の形態5にかかる情報処理装置100は、図18に示した構成に加えて、監視対象アクセス許可情報リスト2401と、インストーラ2402と、ストレージ2403と、を備えている。
【0192】
このように、実施の形態3にかかる情報処理装置100の構成と、実施の形態4にかかる情報処理装置100の構成と、を組み合わせた構成としてもよい。これにより、特定のアプリケーションの実際の利用状態に応じてCPU311の動作周波数の制御ポリシを変更することができるとともに、ユーザの負担を軽減することができる。
【0193】
以上説明したように、情報処理装置、情報処理プログラムおよび情報処理方法によれば、CPUの動作周波数を状況に応じて適切に設定することができる。これにより、たとえば、ソフトウェアの応答性能を確保しつつ消費電力を削減することが可能になる。
【0194】
なお、上記の各実施の形態において説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【0195】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【0196】
(付記1)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第1要素の状態変化を検出する検出部と、
前記検出部によって前記第1要素の状態変化が検出された場合に前記第2要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備えることを特徴とする情報処理装置。
【0197】
(付記2)前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記1に記載の情報処理装置。
【0198】
(付記3)前記操作を終了する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオンからオフへの変化を含むことを特徴とする付記2に記載の情報処理装置。
【0199】
(付記4)前記第1要素の状態変化は、前記情報処理装置への外部電源の供給停止を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記供給停止と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記供給停止と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする付記1〜3のいずれか一つに記載の情報処理装置。
【0200】
(付記5)前記第1要素の状態変化は、前記中央処理装置によって実行される特定のソフトウェアの起動を含み、
前記第2要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報においては、前記特定のソフトウェアの起動と前記電池残量が閾値以上でない状態との組み合わせに対して、前記特定のソフトウェアの起動と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
【0201】
(付記6)前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を開始する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記情報処理装置の電池残量が閾値以上であるか否かの状態を含み、
前記対応情報は、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上でない状態との組み合わせに対して、前記操作を開始する場合のハードウェアの状態変化と前記電池残量が閾値以上である状態との組み合わせよりも前記中央処理装置の消費電力が低くなる制御規則が対応付けられることを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
【0202】
(付記7)前記操作を開始する場合のハードウェアの状態変化は、前記情報処理装置のディスプレイのオフからオンへの変化を含むことを特徴とする付記6に記載の情報処理装置。
【0203】
(付記8)前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
【0204】
(付記9)前記第1要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする付記1〜8のいずれか一つに記載の情報処理装置。
【0205】
(付記10)前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする付記9に記載の情報処理装置。
【0206】
(付記11)前記第1要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする付記1〜10のいずれか一つに記載の情報処理装置。
【0207】
(付記12)前記検出部は、前記特定のソフトウェアが起動すると前記動作状態の変化の検出処理を開始し、前記特定のソフトウェアが停止すると前記検出処理を終了することを特徴とする付記11に記載の情報処理装置。
【0208】
(付記13)前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする付記1〜12のいずれか一つに記載の情報処理装置。
【0209】
(付記14)前記情報処理装置にアプリケーションをアンインストールするアンインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記アンインストーラは、アンインストールの対象のアプリケーションを前記特定のソフトウェアから除外することを特徴とする付記1〜12のいずれか一つに記載の情報処理装置。
【0210】
(付記15)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0211】
(付記16)情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
ことを特徴とする情報処理方法。
【符号の説明】
【0212】
370 制御ポリシ変更ルール表
371 テーブル
810,820,910,920,930,1310,1320,1330,1420 動作周波数変化
811,821 上限値
812,822 下限値
1410 利用率変化
1801 検査対象リスト
【特許請求の範囲】
【請求項1】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第1要素の状態変化を検出する検出部と、
前記検出部によって前記第1要素の状態変化が検出された場合に前記第2要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
【請求項5】
前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記第1要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする請求項1〜5のいずれか一つに記載の情報処理装置。
【請求項7】
前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする請求項1〜6のいずれか一つに記載の情報処理装置。
【請求項8】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項9】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
ことを特徴とする情報処理方法。
【請求項1】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を記憶する記憶部と、
前記第1要素の状態変化を検出する検出部と、
前記検出部によって前記第1要素の状態変化が検出された場合に前記第2要素の状態を判定する判定部と、
前記記憶部によって記憶された対応情報から、前記検出部によって検出された状態変化と、前記判定部によって判定された状態と、の組み合わせに対応する制御規則を検索する検索部と、
前記検索部によって検索された制御規則に基づいて前記中央処理装置の動作周波数を制御する制御部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記第1要素の状態変化は、ユーザが前記情報処理装置の操作を終了する場合のハードウェアの状態変化を含み、
前記第2要素の状態は、前記中央処理装置によって実行される特定のソフトウェアが実行中か否かの状態を含み、
前記対応情報においては、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中の状態との組み合わせに対して、前記操作を終了する場合のハードウェアの状態変化と前記特定のソフトウェアが実行中でない状態との組み合わせよりも前記中央処理装置の処理能力が高くなる制御規則が対応付けられることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記制御規則は、前記制御部が前記動作周波数を制御するためのアルゴリズムおよびパラメータの少なくとも一方の変更を示す情報であり、
前記制御部は、前記検索部によって検索された制御規則に基づいて前記アルゴリズムおよびパラメータの少なくとも一方を変更することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1要素の状態変化は、前記中央処理装置の負荷量の閾値未満から前記閾値以上への負荷増加を含み、
前記制御部は、前記検出部によって前記負荷増加が検出された場合に前記動作周波数の上限値を増加させることを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
【請求項5】
前記中央処理装置が前記動作周波数の上限値で動作した時間の所定の期間内における割合に基づいて前記負荷量を算出する算出部を備え、
前記検出部は、前記算出部によって算出された割合に基づいて前記負荷増加を検出することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記第1要素の状態変化は、前記特定のソフトウェアの動作状態の変化を含み、
前記検出部は、前記特定のソフトウェアによる前記中央処理装置の利用時間に基づいて前記動作状態の変化を検出することを特徴とする請求項1〜5のいずれか一つに記載の情報処理装置。
【請求項7】
前記情報処理装置にアプリケーションをインストールするインストーラを備え、
前記第1要素の状態変化は前記中央処理装置によって実行される特定のソフトウェアの起動を含み、または、前記第2要素の状態は前記特定のソフトウェアが実行中か否かの状態を含み、
前記インストーラは、インストールの対象のアプリケーションの前記情報処理装置に対するアクセス権限が特定のアクセス権限である場合に前記対象のアプリケーションを前記特定のソフトウェアとして記憶することを特徴とする請求項1〜6のいずれか一つに記載の情報処理装置。
【請求項8】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項9】
情報処理装置の第1要素の状態変化と、前記第1要素と異なる前記情報処理装置の第2要素の状態と、の各組み合わせに対して、前記情報処理装置の中央処理装置の動作周波数の制御規則が対応付けられる対応情報を取得し、
前記第1要素の状態変化を検出し、
前記第1要素の状態変化を検出した場合に前記第2要素の状態を判定し、
前記対応情報から、検出した前記状態変化と、判定した前記状態と、の組み合わせに対応する制御規則を検索し、
検索した前記制御規則に基づいて前記中央処理装置の動作周波数を制御する、
ことを特徴とする情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8−1】
【図8−2】
【図9−1】
【図9−2】
【図9−3】
【図10】
【図11】
【図12】
【図13−1】
【図13−2】
【図13−3】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8−1】
【図8−2】
【図9−1】
【図9−2】
【図9−3】
【図10】
【図11】
【図12】
【図13−1】
【図13−2】
【図13−3】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2013−30010(P2013−30010A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−165924(P2011−165924)
【出願日】平成23年7月28日(2011.7.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月28日(2011.7.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]