(57)【要約】      （修正有）【課題】無駄な消費電力を抑制しつつ、マルチコアＣＰＵの稼働コアの増減に起因する操作感の低下を抑制できる携帯端末装置の制御方法を提供する。【解決手段】マルチコアＣＰＵと、前記マルチコアＣＰＵにより実行されるアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置の制御方法に於いて、前記携帯端末装置が、前記ディスプレイに画面表示されているアプリケーションプログラムを検出し、前記検出されたアプリケーションプログラムに対応づけられたパラメータを取得し、前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決める。【選択図】図２
2014006619.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアＣＰＵと、前記マルチコアＣＰＵにより実行されるアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置の制御方法に於いて、
前記携帯端末装置が、
前記ディスプレイに画面表示されているアプリケーションプログラムを検出し、
前記検出されたアプリケーションプログラムに対応づけられたパラメータを取得し、
前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決める、携帯端末装置の制御方法。
【請求項２】
請求項１に記載の携帯端末装置の制御方法に於いて、
前記パラメータは、前記携帯端末装置のストレージに記憶されていて、
前記携帯端末装置は、
前記アプリケーションプログラムの終了後、前記アプリケーションプログラムの起動から終了までの期間のうちの所定時間に前記アプリケーションプログラムが実際に動作した時間の累積値を記録し、
前記累積値に基づき、前記ストレージに記憶されたパラメータを補正する、携帯端末装置の制御方法。
【請求項３】
請求項１又は２に記載の携帯端末装置の制御方法に於いて、
前記パラメータは、前記携帯端末装置のストレージに記憶されていて、
前記携帯端末装置は、
前記アプリケーションプログラムの終了後、前記アプリケーションプログラムの起動から終了までの経過時間を記録し、
前記経過時間に基づき、前記ストレージに記憶されたパラメータを補正する、携帯端末装置の制御方法。
【請求項４】
請求項１乃至３の何れかに記載の携帯端末装置の制御方法に於いて、
前記携帯端末装置が、
前記ディスプレイに画面表示されているアプリケーションプログラム以外に動作している他のアプリケーションプログラムを検出し、
前記アプリケーションプログラムが単位時間に動作する動作時間の比率と、前記他のアプリケーションプログラムが単位時間に動作する動作時間の比率との合計を前記ＣＰＵ負荷とする、携帯端末装置の制御方法。
【請求項５】
請求項１乃至４の何れかに記載の携帯端末装置の制御方法に於いて、
前記携帯端末装置が、
前記マルチコアＣＰＵのＣＰＵ負荷を取得し、
前記ＣＰＵ負荷及び前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決める、携帯端末装置の制御方法。
【請求項６】
請求項５に記載の携帯端末装置の制御方法に於いて、
前記パラメータは、前記稼働コア数を増加する為の第１の負荷しきい値を含み、
前記携帯端末装置は、
前記ＣＰＵ負荷が前記第１の負荷しきい値と同等もしくは前記第１の負荷しきい値よりも大きい場合に、前記マルチコアＣＰＵの稼働コア数を増加する、携帯端末装置の制御方法。
【請求項７】
請求項５又は６に記載の携帯端末装置の制御方法に於いて、
前記パラメータは、前記稼働コア数を減少する為の第２の負荷しきい値を含み、
前記携帯端末装置は、
前記ＣＰＵ負荷が前記第２の負荷しきい値と同等もしくは前記第２の負荷しきい値よりも小さい場合に、前記マルチコアＣＰＵの稼働コア数を減少する、携帯端末装置の制御方法。
【請求項８】
請求項１乃至７の何れかに記載の携帯端末装置の制御方法に於いて、
前記携帯端末装置は、
前記アプリケーションプログラムに基づき、前記ディスプレイへの接触によりスクロールする表示画面を提示する、携帯端末装置の制御方法。
【請求項９】
マルチコアＣＰＵと、前記マルチコアＣＰＵにより実行されるアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置を制御する制御プログラムに於いて、
前記携帯端末装置に、
前記ディスプレイに画面表示されているアプリケーションプログラムを検出し、
前記検出されたアプリケーションプログラムに対応づけられたパラメータを取得し、
前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決める、処理を実行させる制御プログラム。
【請求項１０】
マルチコアＣＰＵと、前記マルチコアＣＰＵにより実行されるアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置に於いて、
前記ディスプレイに画面表示されているアプリケーションプログラムを検出する検出部と、
前記検出されたアプリケーションプログラムに対応づけられたパラメータを取得する取得部と、
前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決めるコア制御部と、
を備える携帯端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、携帯端末装置の制御方法、制御プログラム及び携帯端末装置に関する。
【背景技術】
【０００２】
携帯端末装置の高性能化・多機能化に伴い、ＣＰＵの処理能力の向上が求められている。ＣＰＵの処理能力を向上させる為には、例えばＣＰＵの動作周波数を高めれば良い。ところが、ＣＰＵの動作周波数を高めると、消費電力が大幅に上昇する。このため、最近の携帯端末装置では、複数のコアを内蔵するＣＰＵ、即ちマルチコアＣＰＵを搭載して、ＣＰＵ全体の処理能力を高める傾向にある。ＣＰＵのコアを増加させ、低周波数で動作させると、ＣＰＵの動作周波数を高める場合よりも少ない消費電力で同等のＣＰＵ処理能力を得ることができるからである。
【０００３】
マルチコアＣＰＵは、動作可能な複数の動作周波数及び電圧の組み合わせを持ち、携帯端末装置の使用状況に応じ、動作周波数及び電圧を切り替えることで、動作速度や消費電力を制御している。様々なアプリケーションが動作する最近の携帯端末装置では、このようなマルチコアＣＰＵの特性を活用して、ＣＰＵを使用状況に応じて動的に制御し、ユーザから見た操作性能の確保と消費電力の削減を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３３４７８２号公報
【特許文献２】特開２００８−１２９８４６号公報
【特許文献３】特開２０１０−２７１９３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、マルチコアＣＰＵを動的に制御する為には、ＣＰＵ負荷を観測しながら、ＣＰＵ負荷の上昇に応じて稼働コアの動作周波数を上昇させ、それでもＣＰＵの処理能力が不足する場合に、マルチコアＣＰＵの稼働コアを増加させる。
【０００６】
このとき、ユーザ操作中のアプリケーションプログラムの動作に起因して、ＣＰＵ負荷が急増すると、稼働コアを増加させるタイミングが遅れて、アプリケーションプログラムのユーザ操作や画面表示に影響が生じることがある。例えばユーザによる画面スクロールに起因してＣＰＵ負荷が急増すると、連続的なスクロールが実施されず、ユーザに所謂モッサリ感を与えることがある。
【０００７】
このようなコア起動の遅延を避ける為には、例えば、ＣＰＵの処理能力が不足する前に、早目に稼働コアを増加させれば良い。ところが、ＣＰＵの処理能力が不足する前に稼働コアを増加させても、その後、ＣＰＵ負荷が急増しなければ、先回りして起動させたコアが空振りに終わり、無駄な電力消費を増やすこととなる。
【０００８】
開示の技術によれば、無駄な消費電力を抑制しつつ、マルチコアＣＰＵの稼働コアの増減に起因する操作感の低下を抑制できる携帯端末装置の制御方法を提供する。
【課題を解決するための手段】
【０００９】
開示の技術の一観点によれば、マルチコアＣＰＵと、前記マルチコアＣＰＵにより実行されるアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置の制御方法に於いて、前記携帯端末装置が、前記ディスプレイに画面表示されているアプリケーションプログラムを検出し、前記検出されたアプリケーションプログラムに対応づけられたパラメータを取得し、前記パラメータに基づき、前記マルチコアＣＰＵの稼働コア数を決める、携帯端末装置の制御方法が提供される。
【発明の効果】
【００１０】
本開示の技術の一観点によれば、無駄な消費電力を抑制しつつ、マルチコアＣＰＵの稼働コアの増減に起因する操作感の低下を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態にかかる携帯端末装置のハードウェア構成の概略図である。
【図２】第１の実施形態にかかる携帯端末装置の機能ブロックの概略図である。
【図３】第１の実施形態にかかるアプリ／サービス動作情報の概略図である。
【図４】第１の実施形態にかかるアプリＣＰＵコア制御情報の概略図である。
【図５】第１の実施形態にかかるＣＰＵ制御情報の概略図である。
【図６】第１の実施形態にかかるシステム状態情報の概略図である。
【図７】第１の実施形態にかかるプロセス動作情報の概略図である。
【図８】第１の実施形態にかかるＣＰＵコア制御処理のフローチャートである。
【図９】第１の実施形態にかかるアプリ連携制御処理のフローチャートである。
【図１０】第１の実施形態にかかる１コア動作中処理のフローチャートである。
【図１１】第１の実施形態にかかる複数コア動作中処理のフローチャートである。
【図１２】第１の実施形態にかかるアプリ動作監視処理のフローチャートである。
【図１３】第１の実施形態にかかる負荷しきい値修正処理のフローチャートである。
【図１４】第２の実施形態にかかる携帯端末装置の機能ブロックの概略図である。
【図１５】第２の実施形態にかかる定常負荷管理テーブルの概略図である。
【図１６】第２の実施形態にかかるアプリ連携制御処理のフローチャートである。
【図１７】第２の実施形態にかかる１コア動作中処理のフローチャートである。
【図１８】第２の実施形態にかかる複数コア動作中処理のフローチャートである。
【図１９】第２の実施形態にかかる定常負荷監視処理のフローチャートである。
【発明を実施するための形態】
【００１２】
［第１の実施形態］
以下、図１〜図１３を参照して、第１の実施形態にかかる携帯端末装置１００を説明する。ここでは、携帯端末装置１００に搭載されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として、Ａｎｄｒｏｉｄ（登録商標）を採用することを想定する。Ａｎｄｒｏｉｄは、ＯＳカーネルと、アプリケーションフレームワーク／ライブラリと、を含み、本実施形態にかかる制御プログラムは、アプリケーションフレームワーク／ライブラリに組み込まれる。但し、本発明の態様は、これに限定されるものではなく、Ａｎｄｒｏｉｄ以外のＯＳを採用しても良い。さらに、本実施形態にかかる制御プログラムを、アプリケーションフレームワーク／ライブラリ以外に組み込んでも良い。
【００１３】
［携帯端末装置１００のハードウェア］
図１は、第１の実施形態にかかる携帯端末装置１００のハードウェア構成の概略図である。
【００１４】
本実施形態では、携帯端末装置１００として、例えばスマートフォンやタブレットＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等を想定している。
【００１５】
図１に示すように、本実施形態にかかる携帯端末装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メインメモリ１０２、補助メモリ１０３、クロック供給回路１０４、電圧供給回路１０５、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）回路１０６、アンテナ１０７、バッテリ１０８、電源回路１０９、カメラモジュール１１０、ブルートゥースＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１１１、センサ１１２、ディスプレイ１１３、外部給電部１１４、タッチスクリーン１１５、をハードウェアモジュールとして備える。これらのハードウェアモジュールは、バス１１５により相互に接続されている。
【００１６】
ＣＰＵ１０１は、クロック供給回路１０４から供給されるクロック信号及び電圧供給回路１０５から供給される電圧により動作して、携帯端末装置１００の各種ハードウェアモジュールを制御する。ＣＰＵ１０１は、所謂デュアルコアＣＰＵであって、「コア０」１０１１及び「コア１」１０１２を有する。さらに、ＣＰＵ１０１は、補助メモリ１０３に格納された各種プログラムを読み出して、メインメモリ１０２にロードするとともに、該メインメモリ１０２にロードされた各種プログラムを実行することで、各種機能を実現する。各種機能の詳細は、後述することとする。本実施形態にかかるＣＰＵ１０１は、デュアルコアＣＰＵを採用しているが、例えばクアッドコアＣＰＵなど、任意の数のコアを有していても良い。
【００１７】
メインメモリ１０２は、ＣＰＵ１０１により実行される各種プログラムを格納する。さらに、メインメモリ１０２は、ＣＰＵ１０１のワークエリアとして使用され、ＣＰＵ１０１による処理に必要な各種データを記憶する。メインメモリ１０２としては、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを用いても良い。
【００１８】
補助メモリ１０３は、携帯端末装置１００を動作させる各種プログラムを格納している。各種プログラムとしては、例えば、携帯端末装置１００が実行するアプリケーションプログラムやＡｎｄｒｏｉｄ（ＯＳ）などがある。アプリケーションプログラムとしては、ユーザが画面操作できるアプリや、アプリの動作の為にバックグラウンドで動作するサービスなどが格納されている。本実施形態にかかる制御プログラムも補助メモリ１０３に格納されている。制御プログラムは、Ａｎｄｒｏｉｄのアプリケーションフレームワーク／ライブラリに組み込まれる。補助メモリ１０３としては、例えば、ハードディスクやフラッシュメモリ等の不揮発メモリを用いても良い。
【００１９】
クロック供給回路１０４は、ＣＰＵ１０１に供給するためのクロック信号を生成する。クロック供給回路１０４は、例えばクロック信号を発振する水晶振動子と、ＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）と、により実現しても良い。
【００２０】
電圧供給回路１０５は、電源回路１０９から供給される電力に基づき、ＣＰＵ１０１に供給するための可変電圧を生成する。電圧供給回路１０５は、ボルテージディテクタと、ボルテージレギュレータと、により実現しても良い。
【００２１】
ＲＦ回路１０６は、ＣＰＵ１０１により制御され、アンテナ１０７から他の無線通信装置に高周波信号を送信する。さらに、ＲＦ回路１０６は、アンテナ１０７により受信された高周波信号をベースバンド信号に変換して、該ベースバンド信号をＣＰＵ１０１に出力する。
【００２２】
バッテリ１０８は、電源回路１０９に電力を供給する。バッテリ１０８は、例えばリチウムイオン電池等の電池と、電池保護ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）と、により実現しても良い。
【００２３】
電源回路１０９は、バッテリ１０８から供給される電力を、電源線（図示しない）を介して、携帯端末装置１００の各種ハードウェアモジュールに供給する。なお、外部給電部１１４に外部電源（図示しない）が接続されている場合、電源回路１０９は、外部給電部１１４から供給される電力を、携帯端末装置１００の各種ハードウェアモジュールに供給しても良い。電源回路１０９は、例えばスイッチングレギュレータと、ボルテージレギュレータと、により実現しても良い。
【００２４】
カメラモジュール１１０は、ＣＰＵ１０１により制御され、被写体の撮像データを取得する。ブルートゥースＩ／Ｆ１１１は、他の無線通信装置との間でＢｌｕｅｔｏｏｔｈ（登録商標）による無線通信を実行するための通信インターフェースである。携帯端末装置１００は、さらに、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの無線通信インターフェースを備えてもよい。
【００２５】
ディスプレイ１１３は、ＣＰＵ１０１により制御され、利用者に画像情報を表示する。タッチスクリーン１１５は、ディスプレイ１１３に貼り付けられ、ユーザの指先やペン先などで接触された位置情報を入力する。本実施形態では、タッチスクリーン１１５を、ユーザ操作の為の位置入力デバイスとして使用する。
【００２６】
センサ１１２は、ＣＰＵ１０１により制御され、携帯端末装置１００の状態情報を取得する。センサ１１２としては、例えば、加速度センサ、ジャイロセンサ、照度センサ、地磁気センサ、傾きセンサ、加圧センサ、接近センサ、温度センサ、３Ｇセンサ（３Ｇモジュール）、無線ＬＡＮ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュール、などを用いても良い。
【００２７】
［携帯端末装置１００の機能ブロック］
図２は、第１の実施形態にかかる携帯端末装置１００の機能ブロックの概略図である。
【００２８】
本実施形態にかかるアプリケーションプログラムは、アプリ及びサービスに分類される。
【００２９】
アプリとは、ディスプレイ１１３にコンテンツ（実行結果）が表示され、ユーザが画面操作できるアプリケーションプログラムである。サービスとは、アプリからの要求に基づき、常時バックグラウンドで動作するアプリケーションプログラムである。
【００３０】
さらに、複数のアプリが起動している場合、ディスプレイ１１３の前面にコンテンツが表示され、実際にユーザが画面操作できる環境（フォアグラウンド）のアプリと、ディスプレイ１１３の前面にコンテンツが表示されていなく、実際にユーザが画面操作できない環境（バックグラウンド）のアプリが存在する。
【００３１】
本実施形態では、実際にユーザが画面操作できる環境のアプリを、フォアグラウンドアプリとし、実際にユーザが画面操作できない環境のアプリを、バックグラウンドアプリとする。但し、アプリであれば、例えばユーザ操作を契機にバックグラウンドアプリ及びフォアグラウンドアプリの何れにもなり得る。
【００３２】
図２に示すように、本実施形態にかかる携帯端末装置１００は、アプリ実行管理部２０１、アプリ連携制御部２０２、アプリ動作監視部２０３、ＣＰＵコア制御判定部２０４、ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８、タイマ部２０９、アプリ／サービス動作情報３０１、アプリＣＰＵコア制御情報３０２、ＣＰＵ制御情報３０３、システム状態情報３０４、プロセス動作情報３０５、を備える。
【００３３】
アプリ実行管理部２０１、アプリ連携制御部２０２、アプリ動作監視部２０３、ＣＰＵコア制御判定部２０４、アプリ／サービス動作情報３０１、アプリＣＰＵコア制御情報３０２は、何れもＣＰＵ１０１が、Ａｎｄｒｏｉｄのアプリケーションフレームワーク／ライブラリを実行することで実現される。
【００３４】
このうち、アプリ連携制御部２０２、アプリ動作監視部２０３、ＣＰＵコア制御判定部２０４、アプリＣＰＵコア制御情報３０２は、何れもＣＰＵ１０１が、アプリケーションフレームワーク／ライブラリに組み込まれた制御プログラムを実行することで実現される。
【００３５】
ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８、タイマ部２０９、ＣＰＵ制御情報３０３、システム状態情報３０４、プロセス動作情報３０５は、何れもＣＰＵ１０１が、ＡｎｄｒｏｉｄのＯＳカーネルを実行することで実現される。
【００３６】
なお、アプリ／サービス動作情報３０１、アプリＣＰＵコア制御情報３０２、ＣＰＵ制御情報３０３、システム状態情報３０４、プロセス動作情報３０５は、何れも補助メモリ１０３に構築される。
【００３７】
アプリ実行管理部２０１は、アプリやサービスなどのプログラムの実行や停止を管理する。具体的には、アプリ実行管理部２０１は、アプリやサービスなどのアプリケーションプログラムの利用環境やプロセス状態に変化が生じた場合、後述するアプリ／サービス動作情報３０１の「種別」や「状態」を更新する。利用環境としては、フォアグラウンド及びバックグラウンドが定義される。さらに、アプリ実行管理部２０１は、フォアグラウンドでアプリケーションプログラム（アプリ）が動作を開始した場合、即ちフォアグラウンドで起動もしくは再開された場合、アプリ動作監視部２０３にフォアグラウンド開始通知を送信する。フォアグラウンド開始通知は、フォアグラウンドで起動もしくは再開されたプログラム（フォアグラウンドアプリ）のプロセスＩＤを含む。
【００３８】
アプリ連携制御部２０２は、定期的にフォアグラウンドアプリの動作状態やＣＰＵ利用率を観測して、フォアグラウンドアプリ毎の「負荷しきい値（パラメータ）」に基づき、ＣＰＵ１０１のコアを増減するか否かを判断する。具体的には、アプリ連携制御部２０２は、アプリＣＰＵコア制御情報３０２及びプロセス動作情報３０５を参照して、フォアグラウンドアプリの「直近のＣＰＵ利用率」を、直近のＣＰＵ負荷として算出する。さらに、アプリ連携制御部２０２は、「直近のＣＰＵ利用率」と、フォアグラウンドアプリ毎に決められた「負荷しきい値」とに基づき、「コア１」１０１２のＯＮ／ＯＦＦを判断して、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ（ＣＰＵコアのＯＮ／ＯＦ指示）」に「０」もしくは「１」を記録する。
【００３９】
アプリ動作監視部２０３は、アプリ実行管理部２０１からのフォアグラウンド開始通知に基づき、アプリＣＰＵコア制御情報３０２の「監視対象」の設定内容を変更する。さらに、アプリ動作監視部２０３は、フォアグラウンドからバックグラウンドに遷移したプログラムがポストインストールプログラムである場合、アプリＣＰＵコア制御情報３０２ｂに記録された「平均継続時間」、「平均ＣＰＵ利用率」、「アプリ継続時間」、「アプリ負荷」に基づき、該プログラムの「平均継続時間」及び「平均ＣＰＵ利用率」を更新する。また、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２ｂの「平均継続時間」及び「平均ＣＰＵ利用率」に基づき、フォアグラウンドアプリ毎の「負荷しきい値」を補正する。
【００４０】
ＣＰＵコア制御判定部２０４は、定期的にシステムの動作状態を観測して、ＣＰＵ１０１のコアを増減するか否かを判断する。具体的には、ＣＰＵコア制御判定部２０４は、システム状態情報３０４を参照して、直近の「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ（プロセス待ちキュー平均値）」Ｑと、事前に決められたＯＮしきい値ＴＯＮとに基づき、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の設定内容の変更もしくはアプリ連携制御部２０２の呼び出しを実施する。
【００４１】
ＣＰＵ周波数制御部２０５は、定期的にシステム状態情報３０４を観測して、システム状態情報３０４の「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」に基づき、ＣＰＵ周波数／状態設定部２０６に、ＣＰＵ１０１の稼働コアの動作周波数の変更指示を通知する。
【００４２】
ＣＰＵ周波数／状態設定部２０６は、ＣＰＵ状態制御部２０８からのＯＮ／ＯＦＦ指示に基づき、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを制御する。さらに、ＣＰＵ周波数／状態設定部２０６は、ＣＰＵ周波数制御部２０５からの動作周波数の変更指示に基づき、ＣＰＵ１０１の稼働コアの動作周波数を制御する。
【００４３】
プロセス／システム管理部２０７は、ＣＰＵ１０１により実行されるプロセスの動作状況を管理する。具体的には、プロセス／システム管理部２０７は、ＣＰＵ１０１により実行されるプロセスの動作状況を定期的に観測して、プロセス動作情報３０５の「動作状態」、「ユーザモード動作時間」、「カーネルモード動作時間」を更新する。さらに、プロセス／システム管理部２０７は、システムの動作状況を管理する。具体的には、プロセス／システム管理部２０７は、システムの動作状況を観測して、システム状態情報３０４の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」を更新する。プロセス及びシステムの動作状況の観測間隔は、特に限定されるものではないが、例えば数ｍｓ〜数十ｍｓとしても良い。
【００４４】
ＣＰＵ状態制御部２０８は、定期的にＣＰＵ制御情報３０３を観測して、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に基づき、ＣＰＵ周波数／状態設定部２０６に、「コア１」１０１２のＯＮ／ＯＦＦ指示を通知する。例えば、「コア１」１０１２がＯＮであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「１」から「０」に変更された場合、ＣＰＵ状態制御部２０８は、ＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示を通知する。逆に、「コア１」１０１２がＯＦＦであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「０」から「１」に変更された場合、ＣＰＵ状態制御部２０８は、ＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示を通知する。
【００４５】
タイマ部２０９は、例えば時計回路（図示しない）から取得した時間情報に基づき、例えばアプリ実行管理部２０１、アプリ連携制御部２０２、アプリ動作監視部２０３、ＣＰＵコア制御判定部２０４、ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８に、現在時刻を通知する。
【００４６】
（アプリ／サービス動作情報３０１）
図３は、第１の実施形態にかかるアプリ／サービス動作情報３０１の概略図である。
【００４７】
図３に示すように、アプリ／サービス動作情報３０１は、アプリケーションプログラム毎に、「プロセスＩＤ」、「プログラム名」、「種別」、「状態」を記憶する。アプリ／サービス動作情報３０１は、ＣＰＵ１０１により実行される全アプリケーションプログラムのプロセスを記憶する。従って、アプリ／サービス動作情報３０１は、例えばアプリ（フォアグラウンドアプリ、バックグラウンドアプリ）及びサービスのプロセスも記憶する。「種別」としては、「フォアグラウンド」及び「バックグラウンド」が定義される。「状態」としては、「実行中」、「待機中」、「実行可能」、「停止中」、「ゾンビ」が定義される。アプリ／サービス動作情報３０１の「種別」及び「状態」は、アプリ実行管理部２０１により更新される。
【００４８】
（アプリＣＰＵコア制御情報３０２）
図４は、第１の実施形態にかかるアプリＣＰＵコア制御情報３０２の概略図である。
【００４９】
図４に示すように、アプリＣＰＵコア制御情報３０２は、携帯端末装置１００にプレインストールされたアプリ（プレインストールアプリ）専用のアプリＣＰＵコア制御情報３０２ａと、携帯端末装置１００にポストインストールされたアプリ（ポストインストールアプリ）専用のアプリＣＰＵコア制御情報３０２ｂと、を含む。
【００５０】
例えば、携帯端末装置１００の出荷時にインストールされているアプリは、「プレインストールプログラム」に相当し、携帯端末装置１００の購入後に、ユーザ自らインストールしたアプリは、「ポストインストールアプリ」に相当する。
【００５１】
なお、本実施形態では、アプリＣＰＵコア制御情報３０２ａに、地図、ブラウザ、電卓などのフォアグラウンドアプリ、アプリＣＰＵコア制御情報３０２ｂに、エバーノート、がそれぞれ登録されている。
【００５２】
プレインストールアプリ専用のアプリＣＰＵコア制御情報３０２ａは、アプリケーションプログラム毎に、「プログラム名」、「負荷しきい値（パラメータ）」、「監視対象」、「前回の観測時刻」、「前回の観測までの累積動作時間」を記憶する。
【００５３】
「負荷しきい値」は、ＣＰＵ１０１の「コア１」１０１２をＯＮする為に使用されるＯＮしきい値（第１の負荷しきい値）と、ＣＰＵ１０１の「コア１」１０１２をＯＦＦする為に使用されるＯＦＦしきい値（第２の負荷しきい値）と、を含む。本実施形態では、「負荷しきい値」を（ＯＮしきい値、ＯＦＦしきい値）と記載している。なお、本実施形態では、「負荷しきい値」の単位として、パーセント（％）を使用している。
【００５４】
「負荷しきい値」は、アプリケーションプログラム毎に決められている。例えば、スクロールや手書き入力などのユーザ操作を高頻度で受け付けるアプリケーションプログラムや、起動から終了までの継続時間が長いアプリケーションプログラムには、高目のＯＮしきい値が設定され、そうでないアプリケーションプログラムには、低目のＯＮしきい値が設定される。
【００５５】
「監視対象」は、プロセスのＣＰＵ利用率を観測するアプリを指定する。本実施形態では、プロセスのＣＰＵ利用率を監視するアプリに「１」を割り当て、プロセスのＣＰＵ利用率を監視しないアプリに「０」を割り当てる。なお、本実施形態では、フォアグラウンドで動作するアプリを監視対象とするため、フォアグラウンドアプリであるグーグルマップに「１」が記録され、バックグラウンドアプリであるブラウザ及び電卓に「０」が割り当てられている。
【００５６】
「前回の観測時刻」は、タイマ部２０９から取得された前回の観測時刻を記録する。「前回の観測までの累積動作時間」は、前回の観測時刻に観測された累積動作時間を記録する。なお、本実施形態では、「前回までの累積動作時間」及び「前回の観測時刻」の単位として、Ｔｉｃｋ（＝１０ｍｓ）を使用している。
【００５７】
ポストインストールアプリ専用のアプリＣＰＵコア制御情報３０２ｂは、アプリケーションプログラム毎に、「プログラム名」、「負荷しきい値」、「監視対象」、「平均継続時間」、「平均ＣＰＵ利用率」、「前回の観測時刻」、「前回の観測までの累積動作時間」、「アプリ継続時間」、「アプリ負荷」を記憶する。
【００５８】
「監視対象」、「前回の観測時刻」、「前回の観測までの累積動作時間」は、プレインストールアプリのアプリＣＰＵコア制御情報３０２ａと同様である。
【００５９】
「負荷しきい値」は、プレインストールアプリの「負荷しきい値」と同様に、ＯＮしきい値（第１の負荷しきい値）と、ＯＦＦしきい値（第２の負荷しきい値）と、を含む。但し、プストインストールアプリの「負荷しきい値」は、デフォルト値（８０、５０）が設定されているが、アプリケーションプログラムが終了するたび、「平均継続時間」及び「平均ＣＰＵ利用率」に基づき、補正される。
【００６０】
「平均継続時間」は、アプリの動作開始から動作終了までの経過時間の平均である。「平均ＣＰＵ利用率」は、アプリの動作開始から動作終了までの期間における「ＣＰＵ利用率」の平均である。「平均ＣＰＵ利用率」は、「平均負荷」とも呼称され、「ＣＰＵ利用率」の平均値である。「アプリ継続時間」は、アプリの動作開始から現在時刻までの経過時間である。「アプリ負荷」は、アプリのプロセスの起動時刻から現在時刻までの経過時間に占める、アプリの実際の動作時間の比率である。なお、本実施形態では、「平均継続時間」、「アプリ継続時間」の単位として、Ｔｉｃｋ（＝１０ｍｓ）を使用し、「平均ＣＰＵ利用率」及び「アプリ負荷」の単位として、パーセント（％）を使用している。
【００６１】
アプリＣＰＵコア制御情報３０２（３０２ａ、３０２ｂ）の「監視対象」は、アプリ動作監視部２０３によりフォアグランド開始通知毎に更新される。アプリＣＰＵコア制御情報３０２（３０２ａ、３０２ｂ）の「前回の観測時刻」及び「前回の観測までの累積動作時間」は、アプリ連携制御部２０２により観測毎に更新される。
【００６２】
（ＣＰＵ制御情報３０３）
図５は、第１の実施形態にかかるＣＰＵ制御情報３０３の概略図である。
【００６３】
図５に示すように、ＣＰＵ制御情報３０３は、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを決定する為の「ｃｐｕ１／ｏｎｌｉｎｅ」として、「０」もしくは「１」を記憶する。本実施形態では、「コア１」１０１２の「ＯＦＦ指示」に「０」を割り当て、「コア１」１０１２の「ＯＮ指示」に「１」を割り当てる。このため、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「０」が登録された場合、ＣＰＵ状態制御部２０８は、「コア１」１０１２の「ＯＦＦ指示」をＣＰＵ周波数／状態設定部２０６に通知する。ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「１」が登録された場合、ＣＰＵ状態制御部２０８は、「コア１」１０１２の「ＯＮ指示」をＣＰＵ周波数／状態設定部２０６に通知する。ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」は、アプリ連携制御部２０２により観測毎に更新される。
【００６４】
（システム状態情報３０４）
図６は、第１の実施形態にかかるシステム状態情報３０４の概略図である。
【００６５】
図６に示すように、システム状態情報３０４は、「Ｏｎｌｉｎｅ（オンラインＣＰＵコア番号）」、「Ｏｆｆｌｉｎｅ（オフラインＣＰＵコア番号）」、「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ（プロセス待ちキュー平均値）」を記憶する。「Ｏｎｌｉｎｅ」は、稼働中のＣＰＵコア番号を記憶する。「Ｏｆｆｌｉｎｅ」は、非稼働のＣＰＵコア番号を記憶する。従って、「コア０」１０１１及び「コア１」１０１２の双方が稼働している場合、「Ｏｎｌｉｎｅ」に「０」及び「１」が記録され、「Ｏｆｆｌｉｎｅ」には何も記録されない。「コア０」１０１１だけが稼働している場合、「Ｏｎｌｉｎｅ」に「０」が記録され、「Ｏｆｆｌｉｎｅ」に「１」が記録される。「Ｒｕｎ＿Ｑｕｅｕｅ＿ａｖｇ」は、ＣＰＵ１０１による実行待ちのプロセス個数の平均である。システム状態情報３０４の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」は、プロセス／システム管理部２０７により観測毎に更新される。
【００６６】
（プロセス動作情報３０５）
図７は、第１の実施形態にかかるプロセス動作情報３０５の概略図である。
【００６７】
図７に示すように、プロセス動作情報３０５は、ＣＰＵ１０１により生成されたプロセス毎に作成され、それぞれの「プロセスＩＤ（Ｐｉｄ）」、「動作状態（Ｓｔａｔｅ）」、「親プロセスＩＤ（Ｐｐｉｄ）」、「ユーザモード動作時間（Ｕｔｉｍｅ）」、「カーネルモード動作時間（Ｓｔｉｍｅ）」を記憶する。
【００６８】
「ユーザモード動作時間」は、アプリやサービスなどのアプリケーションプログラムの動作時間を記憶する。「カーネルモード動作時間」は、アプリやサービスなどのアプリケーションプログラムのプロセス実行に付随するＯＳカーネルの動作時間である。本実施形態では、「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、アプリやサービスなどのアプリケーションプログラムの累積動作時間とする。なお、本実施形態では、「ユーザモード動作時間」及び「カーネルモード動作時間」の単位として、「ｔｉｃｋ（＝１０ｍｓ）」を使用している。プロセス動作情報３０５の「プロセスＩＤ」、「動作状態」、「親プロセスＩＤ」、「ユーザモード動作時間」、「カーネルモード動作時間」は、何れもプロセス／システム管理部２０７により観測毎に更新される。
【００６９】
（ＣＰＵコア制御処理）
図８は、第１の実施形態にかかるＣＰＵコア制御処理のフローチャートである。
【００７０】
図８に示すように、ＣＰＵコア制御判定部２０４は、先ず、システム状態情報３０４を参照して、「コア０」１０１１だけが稼働しているか否かを判断する（ステップＳ１０１）。具体的には、ＣＰＵコア制御判定部２０４は、システム状態情報３０４の「Ｏｎｌｉｎｅ」に「コア０」１０１１のコア番号「０」だけが登録されているか否かを判断する。
【００７１】
ここで、「コア０」１０１１だけが稼働していると判断されたら（ステップＳ１０１のＹｅｓ）、ＣＰＵコア制御判定部２０４は、システム状態情報３０４を参照して、直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＮしきい値ＴＯＮよりも大きいか否かを判断する（ステップＳ１０２）。具体的には、ＣＰＵコア制御判定部２０４は、システム状態情報３０４の「Ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」に記録されている数値が、事前に決められたＯＮしきい値ＴＯＮよりも大きいか否かを判断する
ここで、直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＮしきい値ＴＯＮよりも大きいと判定されたら（ステップＳ１０２のＹｅｓ）、ＣＰＵコア制御判定部２０４は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を、「コア１」１０１２のコア番号「１」に更新する（ステップＳ１０３）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」のコア番号「１」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示が通知され、「コア０」１０１１及び「コア１」１０１２の双方が動作することとなる。
【００７２】
次に、ＣＰＵコア制御判定部２０４は、定期監視のためのタイマを設定して、スリープ状態に遷移する（ステップＳ１０４）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十ｍｓとする。タイマの設定時間の満了後、ＣＰＵコア制御判定部２０４は、ＣＰＵコア制御処理のスタートから処理を実行する。
【００７３】
一方、「コア０」１０１１だけが稼働していると判定されなければ（ステップＳ１０１のＮｏ）、即ち「コア１」１０１２も稼働していると判定されたら、ＣＰＵコア制御判定部２０４は、直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＦＦしきい値ＴＯＦＦよりも小さいか否かを判定する（ステップＳ１０５）。
【００７４】
ここで、直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＦＦしきい値ＴＯＦＦよりも小さいと判定されたら（ステップＳ１０５のＹｅｓ）、ＣＰＵコア制御判定部２０４は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」１１０１のコア番号「１」に更新する（ステップＳ１０６）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア０」１１０１のコア番号「０」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示が通知され、「コア０」１０１１だけが動作することとなる。
【００７５】
次に、ＣＰＵコア制御判定部２０４は、定期監視のためのタイマを設定して、スリープ状態に遷移する（ステップＳ１０４）。タイマの設定時間の満了後、ＣＰＵコア制御判定部２０４は、ＣＰＵコア制御処理のスタートから処理を実行する。
【００７６】
直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＮしきい値ＴＯＮよりも大きいと判定されない場合（ステップＳ１０２のＮｏ）、及び直近のプロセス待ちキューの平均値Ｑが、事前に決められたＯＦＦしきい値ＴＯＦＦよりも小さいと判定されない場合（ステップＳ１０５のＮｏ）、ＣＰＵコア制御判定部２０４は、サブルーチンとしてのアプリ連携制御処理の呼び出しを実行する（ステップＳ１０７）。即ち、本実施形態では、直近のプロセス待ちキューの平均値ＱがＯＮしきい値ＴＯＮ〜ＯＦＦしきい値ＴＯＦＦである場合に、アプリ連携制御処理の詳細は、後述することとする。
【００７７】
そして、アプリ連携制御処理の終了後、ＣＰＵコア制御判定部２０４は、定期監視のためのタイマを設定して、スリープ状態に遷移する（ステップＳ１０４）。タイマの設定時間の満了後、ＣＰＵコア制御判定部２０４は、ＣＰＵコア制御処理のスタートから処理を実行する。
【００７８】
以上で、ＣＰＵコア制御処理のフローの説明を終了する。
【００７９】
（アプリ連携制御処理）
図９は、第１の実施形態にかかるアプリ連携制御処理のフローチャートである。
【００８０】
図９に示すように、アプリ連携制御処理部２０２は、ＣＰＵコア制御処理中のサブルーチンの呼び出しを契機に起動する。アプリ連携制御部２０２は、先ず、アプリＣＰＵコア制御情報３０２を参照して、監視対象のアプリケーションプログラムが存在するか否かを判断する（ステップＳ２０１）。具体的には、アプリ連携制御処理部２０２は、アプリＣＰＵコア制御情報３０２（３０２ａ、３０２ｂ双方）を参照して、「監視対象」に「１」が登録されたアプリケーションプログラムが存在するか否かを判断する。
【００８１】
ここで、監視対象のアプリケーションプログラムが存在すると判断されたら（ステップＳ２０１のＹｅｓ）、アプリ連携制御処理部２０２は、システム状態情報３０４を参照して、「コア０」１０１１だけが稼働しているか否かを判断する（ステップ２０２）。具体的には、アプリ連携処理部２０２は、システム状態情報３０４の「Ｏｎｌｉｎｅ」に「コア０」１０１１のコア番号「０」だけが登録されているか否かを判断する。
【００８２】
ここで、「コア０」１０１１だけが稼働していると判断されたら（ステップＳ２０２のＹｅｓ）、即ち「コア１」１０１２が稼働していないと判断されたら、アプリ連携制御処理部２０２は、サブルーチンとしての１コア動作中処理の呼び出しを実行する（ステップＳ２０３）。１コア動作中処理の詳細は、後述することとする。
【００８３】
次に、アプリ連携制御処理部２０２は、１コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
【００８４】
一方、「コア０」１０１１だけが稼働していると判断されなければ（ステップＳ２０２のＮｏ）、即ち「コア１」１０１２も稼働していると判断されたら、アプリ連携制御処理部２０２は、サブルーチンとしての複数コア動作中処理の呼び出しを実行する（ステップＳ２０４）。複数コア動作中処理の詳細は、後述することとする。
【００８５】
次に、アプリ連携制御処理部２０２は、複数コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
【００８６】
以上で、アプリ連携制御処理のフローの説明を終了する。
【００８７】
（１コア動作中処理）
図１０は、第１の実施形態にかかる１コア動作中処理のフローチャートである。
【００８８】
ここでは、ＣＰＵ１０１の「コア０」１０１１だけが稼動していることを前提とし、「コア１」１０１２の稼働を開始するか否かの判断を説明する。
【００８９】
図１０に示すように、アプリ連携制御処理部２０２は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、１コア動作中処理を開始する。アプリ連携制御処理部２０２は、１コア動作中処理にて、先ず、アプリＣＰＵコア制御情報３０２及びプロセス動作情報３０５を参照して、監視対象のアプリケーションプログラム、即ちフォアグラウンドアプリの直近のＣＰＵ利用率を算出する（ステップＳ３０１）。なお、直近のＣＰＵ利用率は、前回の観測から今回の観測までに実際にフォアグラウンドアプリが動作した時間の比率、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、ＣＰＵ１０１が実際にフォアグラウンドアプリを実行していた時間の比率である。直近のＣＰＵ利用率は、例えば、以下の数式（１）により算出しても良い。
【００９０】
直近のＣＰＵ利用率＝（今回の観測までの累積動作時間−前回の観測までの累積動作時間）／（今回の観測時刻−前回の観測時刻）…（１）
このとき、アプリ連携制御処理部２０２は、監視対象のアプリケーションプログラム（フォアグラウンドアプリ）のプロセス動作情報３０５の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式（１）の「今回の観測までの累積動作時間」、タイマ部２０９から取得した現在時刻を、数式（１）の「今回の観測時刻」、アプリＣＰＵコア制御情報３０２（３０２ａもしくは３０２ｂ）に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式（１）の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
【００９１】
次に、アプリ連携制御処理部２０２は、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいか否かを判断する（ステップＳ３０２）。
【００９２】
ここで、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいと判断されたら（ステップＳ３０２のＹｅｓ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」１０１２のコア番号「１」に更新する（ステップＳ３０３）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」１０１２のコア番号「１」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示が通知され、「コア０」１０１１及び「コア１」１０１２の双方が動作することとなる。
【００９３】
次に、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の更新後、１コア動作中処理の呼び出し元の処理を実行する。
【００９４】
一方、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいと判断されなければ（ステップＳ３０２のＮｏ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を更新せずに、１コア動作中処理の呼び出し元の処理を実行する。即ち、「コア０」１０１１の稼働だけが継続することとなる。
【００９５】
以上で、１コア動作中処理のフローの説明を終了する。
【００９６】
（複数コア動作中処理）
図１１は、第１の実施形態にかかる複数コア動作中処理のフローチャートである。
【００９７】
ここでは、ＣＰＵ１０１の「コア０」１０１１及び「コア１」１０１２の双方が稼働していることを前提とし、「コア１」１０１２の稼働を停止させるか否かの判断を説明する。
【００９８】
図１１に示すように、アプリ連携制御処理部２０２は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、複数コア動作中処理を開始する。アプリ連携制御処理部２０２は、複数コア動作中処理にて、先ず、アプリＣＰＵコア制御情報３０２及びプロセス動作情報３０５を参照して、フォアグラウンドアプリの直近のＣＰＵ利用率を算出する（ステップＳ４０１）。直近のＣＰＵ利用率は、１コア動作中処理と同様に算出すれば良い。
【００９９】
次に、アプリ連携制御処理部２０２は、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいか否かを判断する（ステップＳ４０２）。
【０１００】
ここで、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいと判断されたら（ステップＳ４０２のＹｅｓ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア０」１０１１のコア番号「０」に更新する（ステップＳ４０３）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア０」１０１１のコア番号「０」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示が通知され、「コア０」１０１１だけが動作することとなる。
【０１０１】
次に、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の更新後、複数コア動作中処理の呼び出し元の処理を実行する。
【０１０２】
一方、フォアグラウンドアプリの直近のＣＰＵ利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいと判断されなければ（ステップＳ４０２のＮｏ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を更新せずに、複数コア動作中処理の呼び出し元の処理を実行する。即ち、「コア０」１０１１及び「コア１」１０１２の双方の稼働が継続することとなる。
【０１０３】
以上で、複数コア動作中処理のフローの説明を終了する。
【０１０４】
（アプリ動作監視処理）
図１２は、第１の実施形態にかかるアプリ動作監視処理のフローチャートである。
【０１０５】
図１２に示すように、アプリ動作監視部２０３は、アプリ実行管理部２０１からフォアグラウンド開始通知を受信したら（ステップＳ５０１）、アプリＣＰＵコア制御情報３０２を参照して、監視対象のアプリが存在するか否かを判断する（ステップＳ５０２）。具体的には、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２を参照して、「監視対象」に「０」が登録されているアプリが存在するか否かを判断する。
【０１０６】
ここで、監視対象のアプリが存在すると判断されたら（ステップＳ５０２のＹｅｓ）、アプリ動作監視部２０３は、それまで監視対象としていたアプリがフォアグラウンドからバックグラウンドに遷移したとみなして、該アプリの監視を停止する（ステップＳ５０３）。具体的には、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２の「監視対象」を「１」から「０」に更新する。
【０１０７】
次に、アプリ動作監視部２０３は、バックグラウンドに遷移したアプリが、後からインストールされたポストインストールアプリであるか否かを判断する（ステップＳ５０４）。
【０１０８】
ここで、バックグラウンドに遷移したアプリがポストインストールアプリであると判断されたら（ステップＳ５０４のＹｅｓ）、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２の、フォアグラウンドからバックグラウンドに遷移したアプリの「平均継続時間」及び「平均ＣＰＵ利用率」を更新する（ステップＳ５０５）。具体的には、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２に記録されている「平均継続時間」及び「アプリ継続時間」に基づき、「平均継続時間」を更新する。さらに、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２に記録されている「平均ＣＰＵ利用率」及び「アプリ負荷」と、アプリ連携制御部２０２により算出された直近の「ＣＰＵ利用率」と、に基づき、「平均ＣＰＵ利用率」を更新する。即ち、監視対象のアプリがバックグラウンドに遷移するたびに、過去の観測結果と直前の観測結果に基づき、アプリＣＰＵコア制御情報３０２の「平均継続時間」及び「平均ＣＰＵ利用率」を更新する。
【０１０９】
次に、アプリ動作監視部２０３は、サブルーチンとしての負荷しきい値修正処理の呼び出しを実行する（ステップＳ５０６）。負荷しきい値修正処理の詳細は、後述することとする。
【０１１０】
次に、アプリ動作監視部２０３は、負荷しきい値修正処理の終了後、新たにフォアグラウンドで動作を開始したアプリを監視対象に設定する（ステップＳ５０７）。具体的には、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２の、新たにフォアグラウンドで動作を開始したアプリの「監視対象」を「１」に更新する。
【０１１１】
一方、監視対象のアプリが存在すると判断されなければ（ステップＳ５０２のＮｏ）、もしくは、監視を停止したアプリがポストインストールアプリであると判断されなければ（ステップＳ５０４のＮｏ）、アプリ動作監視部２０３は、新たにフォアグラウンドで動作を開始したアプリを監視対象に設定する（ステップＳ５０７）。具体的には、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２の、新たにフォアグラウンドで動作を開始したアプリの「監視対象」を「１」に設定する。
【０１１２】
以上で、アプリ動作監視処理のフローの説明を終了する。
【０１１３】
（負荷しきい値修正処理）
図１３は、第１の実施形態にかかる負荷しきい値修正処理のフローチャートである。
【０１１４】
ここでは、アプリＣＰＵコア制御情報３０２の「負荷しきい値」が（８０、５０）であることを前提に説明する。
【０１１５】
図１３に示すように、アプリ動作監視部２０３は、アプリ動作監視処理中のサブルーチンの呼び出しを契機に、負荷しきい値修正処理を開始する。アプリ動作監視部２０３は、負荷しきい値修正処理にて、先ず、ポストインストールアプリのアプリＣＰＵコア制御情報３０２ｂを参照して、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最大しきい値よりも大きいか否かを判断する（ステップＳ６０１）。
【０１１６】
ここで、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最大しきい値よりも大きいと判断されたら（ステップＳ６０１のＹｅｓ）、アプリ動作監視部２０３は、アプリＣＰＵコア制御情報３０２の「負荷しきい値」を、例えば（７０、４０）に更新する（ステップＳ６０４）。即ち、「コア１」１０１１をＯＮする為のハードル（ＯＮしきい値）を下げ、「コア１」１０１１をＯＦＦする為のハードル（ＯＦＦしきい値）を上げる。
【０１１７】
一方、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最大しきい値よりも大きいと判断されなければ（ステップＳ６０１のＮｏ）、アプリ動作監視部２０３は、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最小しきい値よりも小さいか否かを判断する（ステップＳ６０２）。
【０１１８】
ここで、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最小しきい値よりも小さいと判断されたら（ステップＳ６０２のＹｅｓ）、アプリ動作管理部２０３は、アプリＣＰＵコア制御情報３０２の「負荷しきい値」を、例えば（９０、６０）に更新する（ステップＳ６０５）。即ち、「コア１」１０１２をＯＮする為のハードル（ＯＮしきい値）を上げ、「コア１」１０１１をＯＦＦする為のハードル（ＯＦＦしきい値）を下げる。
【０１１９】
一方、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均ＣＰＵ利用率」が、事前に決められた最小しきい値よりも小さいと判断されなければ（ステップＳ６０２のＮｏ）、アプリ動作管理部２０３は、アプリＣＰＵコア制御情報３０２の「負荷しきい値」を例えば（８０、５０）に更新する（ステップＳ６０３）。なお、本実施形態では、「負荷しきい値」が（８０、５０）であることを前提としているので、「負荷しきい値」が変化することはない。
【０１２０】
以上で、負荷しきい値修正処理のフローの説明を終了する。
【０１２１】
本実施形態によれば、アプリケーションプログラム毎に決められた「負荷しきい値」を使用して、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを制御する。
【０１２２】
例えば、スクロールや手書き入力などのユーザ操作を受け付けるアプリケーションプログラムでは、低目に設定された「ＯＮしきい値」を使用して、ＣＰＵ１０１の「コア１」１０１２をＯＮするか否かを判断する。
【０１２３】
このため、ユーザ操作に付随してＣＰＵ負荷が上昇したときに、早目に「コア１」１０１２が稼動することになるので、ＣＰＵ１０１の処理能力が不足しにくい。従って、ＣＰＵ１０１の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
【０１２４】
逆に、スクロールや手書き入力などのユーザ操作をあまり受け付けないアプリケーションプログラムでは、高目に設定された「ＯＮしきい値」を使用して、「コア１」１０１２をＯＮするか否かを判断する。
【０１２５】
このため、ＣＰＵ負荷が上昇しやすいスクロールや手書き入力などのユーザ操作をあまり受け付けないにも関わらず、「コア１」１０１２を稼働させてしまい、無駄な消費電力を発生させることを回避することができる。
【０１２６】
また、起動から終了までの経過時間が長期である、例えばブラウザや地図などのアプリケーションプログラムでは、低目に設定された「ＯＮしきい値」を使用して、ＣＰＵ１０１の「コア１」１０１２をＯＮするか否かを判断する。
【０１２７】
アプリの起動から終了までの経過時間が長期になるほど、ＣＰＵ負荷が上昇しやすいスクロールや手書き入力などのユーザ操作を受け付ける機会が増加するが、早目に「コア１」１０１２が稼動することになるので、実際にユーザ操作を受け付けたときに、ＣＰＵ１０１の処理能力が不足しにくい。従って、ＣＰＵ１０１の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
【０１２８】
逆に、起動から終了までの経過時間が短期である、例えば電卓などのアプリケーションプログラムでは、高目に設定された「ＯＮしきい値」を使用して、ＣＰＵ１０１の「コア１」１０１２をＯＮするか否かを判断する。
【０１２９】
このため、アプリケーションプログラムが起動後すぐに終了するにも関わらず、即ち、ＣＰＵ負荷が上昇しやすいスクロールや手書き入力などのユーザ操作を受け付ける機会が少ないにも関わらず、「コア１」１０１２を稼働させてしまい、無駄な消費電力を発生させることを回避することができる。
【０１３０】
さらに、本実施形態では、携帯端末装置１００の購入後に、ユーザ自らインストールしたアプリ（ポストインストールアプリ）の「負荷しきい値」にデフォルト値を設定しておき、該ポストインストールアプリがフォアグラウンドからバックグラウンドに遷移したときに、フォアグラウンドでの動作状況を踏まえて、「負荷しきい値」を更新する。
【０１３１】
このため、素性のわからないポストインストールアプリでも、ユーザの利用状況に応じて、アプリケーションプログラムに応じた「負荷しきい値」に近づいていくことになる。従って、ポストインストールアプリについても、無駄な消費電力の発生や、ＣＰＵ１０１の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
【０１３２】
［第２の実施形態］
以下、図１４〜図１９を参照して、第２の実施形態にかかる携帯端末装置２００を説明する。本実施形態では、フォアグラウンドアプリの他にバックグラウンドでサービスが動作し、該サービスに起因する定常的なＣＰＵ負荷、即ち定常負荷が存在していることを想定する。定常負荷が存在している場合、フォアグラウンドアプリの直近のＣＰＵ利用率だけでなく、サービスの直近のＣＰＵ利用率を加味して、ＣＰＵ負荷を算出することとなる。
【０１３３】
なお、サービスの直近のＣＰＵ利用率は、前述のアプリの直近のＣＰＵ利用率と同様に、前回の観測から今回の観測までに実際にサービスが動作した時間の平均（時間平均）、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、ＣＰＵ１０１が実際にサービスを実行していた時間の比率である。
【０１３４】
［携帯端末装置２００の機能ブロック］
図１４は、第２の実施形態にかかる携帯端末装置２００の機能ブロックの概略図である。
【０１３５】
図１４に示すように、本実施形態にかかる携帯端末装置２００は、さらに、定常負荷監視部２１０及び定常負荷管理テーブル３０６を備える。
【０１３６】
定常負荷監視部２１０及び定常負荷管理テーブル３０６は、何れもＣＰＵ１０１が、Ａｎｄｒｏｉｄのアプリケーションフレームワーク／ライブラリに組み込まれた制御プログラムを実行することで実現される。なお、定常負荷管理テーブル３０６は、補助メモリ１０３に構築される。
【０１３７】
定常負荷監視部２１０は、ユーザが画面操作できるアプリではなく、例えば音楽再生やセンシング処理などの、バックグラウンドで継続的に動作するサービスの使用の有無を監視する。センシング処理としては、例えば位置計測や歩数測計などの為のセンシングがある。具体的には、定常負荷監視部２１０は、プロセス動作情報３０５の「ユーザモード動作時間」及び「カーネルモード動作時間」と、定常負荷管理テーブル３０６の「開始しきい値」、「終了しきい値」、「継続時間しきい値」とに基づき、定常負荷管理テーブル３０６の「動作状態」及び「継続時間」を更新する。
【０１３８】
アプリ連携制御部２０２は、定期的にアプリやサービスの動作状態やＣＰＵ利用率を観測して、フォアグラウンドアプリ毎の「負荷しきい値」に基づき、ＣＰＵ１０１のコアを増減するか否かを判断する。具体的には、アプリ連携制御部２０２は、定常負荷管理テーブル３０６、アプリＣＰＵコア制御情報３０２、プロセス動作情報３０５を参照して、フォアグラウンドアプリの「直近のＣＰＵ利用率」及びサービスの「直近のＣＰＵ利用率」の合計を、直近のＣＰＵ負荷として算出する。さらに、アプリ連携制御部２０２は、フォアグラウンドアプリの「直近のＣＰＵ利用率」及びサービスの「直近のＣＰＵ利用率」の合計と、フォアグラウンドアプリ毎に決められた「負荷しきい値」とに基づき、「コア１」１０１２のＯＮ／ＯＦＦを判断して、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「０」もしくは「１」を記録する。
（定常負荷管理テーブル３０６）
図１５は、第２の実施形態にかかる定常負荷管理テーブル３０６の概略図である。
【０１３９】
図１５に示すように、定常負荷管理テーブル３０６は、アプリケーションプログラム毎に、「プログラム名」、「開始しきい値」、「終了しきい値」、「継続時間しきい値」、「動作状態」、「継続時間」、「前回の観測時刻」、「前回の観測までの累積動作時間」を記憶する。
【０１４０】
なお、定常負荷管理テーブル３０６に登録されるアプリケーションプログラムは、例えばシステムサーバ、メディアサーバ、センシングアプリなどの、アプリからの要求に基づき、常時バックグラウンドで動作するアプリケーションプログラム、即ちサービスである。
【０１４１】
「動作状態」は、定常負荷が存否を判断する為に使用される。「動作状態」としては、「停止中」、「開始中」、「動作中」、「終了中」が定義され、「停止中」に「０」、「開始中」に「１」、「動作中」に「２」、「終了中」に「３」が割り当てられる。
【０１４２】
「停止中」は、定常負荷が存在していない動作状態である。「動作中」は、定常負荷が存在している動作状態である。「開始中」は、「停止中」から「動作中」への移行状態であって、具体的には、定常負荷が存在していると看做すか否かを判断している動作状態である。「終了中」は、「動作中」から「停止中」への移行状態であって、具体的には、定常負荷が消滅していると看做すか否かを判断している動作状態である。
【０１４３】
「継続時間」は、それぞれの「動作状態」に移行してからの経過時間である。例えば、「動作状態」が「動作中」であれば、「継続時間」は、「開始中」から「動作中」への移行時刻を起点として計測された、「動作中」の経過時間である。
【０１４４】
「開始しきい値」は、定常負荷が存在している否かの判断を開始する為に使用される。詳細は後述するが、定常負荷監視部２１０は、監視対象のサービスの直近のＣＰＵ利用率が「開始しきい値」よりも大きい場合に、定常負荷が存在しているか否かの判断を開始する。
【０１４５】
「終了しきい値」は、定常負荷が消滅しているか否かの判断を開始する為に使用される。詳細は後述するが、定常負荷監視部２１０は、監視対象のサービスの直近のＣＰＵ利用率が「終了しきい値」よりも小さい場合に、定常負荷が消滅しているか否かの判断を開始する。
「継続時間しきい値」は、定常負荷が存在しているか否かの判断及び定常負荷が消滅しているか否かを判断する為に使用される。詳細は後述するが、定常負荷監視部２１０は、監視対象のサービスの「動作状態」が「開始中」である時間、即ち「継続時間」が、「継続時間しきい値」よりも大きい場合に、定常負荷が存在していると判断する。また、定常負荷監視部２１０は、監視対象のサービスの「動作状態」が「終了中」である時間、即ち「継続時間」が、「継続時間しきい値」よりも大きい場合に、定常負荷が消滅していると判断する。
【０１４６】
なお、「開始しきい値」、「終了しきい値」、「継続時間しきい値」は、何れも事前に決められている。本実施形態では、「開始しきい値」、「終了しきい値」の単位として、パーセント（％）を使用し、「継続時間しきい値」及び「継続時間」の単位として、Ｔｉｃｋ（＝１０ｍｓ）を使用している。
【０１４７】
「前回の観測時刻」及び「前回の観測までの累積動作時間」は、それぞれアプリＣＰＵコア制御情報３０２の「前回の観測時刻」及び「前回の観測までの累積動作時間」に相当する。  
【０１４８】
定常負荷管理テーブル３０６の「動作状態」及び「継続時間」は、定常負荷監視部２１０により更新され、定常負荷管理テーブル３０６の「前回の観測時刻」及び「前回の観測までの累積動作時間」は、アプリ連携制御部２０２により更新される。
【０１４９】
（アプリ連携制御処理）
図１６は、第２の実施形態にかかるアプリ連携制御処理のフローチャートである。
【０１５０】
図１６に示すように、アプリ連携制御処理部２０２は、ＣＰＵコア制御処理中のサブルーチンの呼び出しを契機に起動する。アプリ連携制御部２０２は、先ず、定常負荷管理テーブル３０６を参照して、定常負荷が存在するか否かを判断する（ステップＳ７０１）。具体的には、アプリ連携制御部２０２は、定常負荷管理テーブル３０６を参照して、「動作状態」に「２」が登録されたアプリケーションプログラム（サービス）が存在するか否かを判断する。なお、定常負荷が存在するか否かの詳細判断は、後述することとする。
【０１５１】
ここで、定常負荷が存在すると判断されたら（ステップＳ７０１のＹｅｓ）、アプリ連携制御処理部２０２は、アプリＣＰＵコア制御情報３０２を参照して、監視対象のアプリケーションプログラム（アプリ）が存在するか否かを判断する（ステップＳ７０２）。具体的には、アプリ連携制御処理部２０２は、アプリＣＰＵコア制御情報３０２を参照して、「監視対象」に「１」が登録されたアプリケーションプログラム（アプリ）が存在するか否かを判断する。
【０１５２】
ここで、監視対象のアプリが存在すると判断されたら（ステップＳ７０２のＹｅｓ）、アプリ連携制御処理部２０２は、システム状態情報３０４を参照して、「コア０」１０１１だけが稼働しているか否かを判断する（ステップＳ７０３）。具体的には、アプリ連携処理部２０２は、システム状態情報３０４の「Ｏｎｌｉｎｅ」に「コア０」１０１１のコア番号「０」だけが登録されているか否かを判断する。
【０１５３】
ここで、「コア０」１０１１だけが稼働していると判断されたら（ステップＳ７０３のＹｅｓ）、即ち「コア１」１０１２が稼働していないと判断されたら、アプリ連携制御処理部２０２は、サブルーチンとしての１コア動作中処理の呼び出しを実行する（ステップＳ７０４）。１コア動作中処理の詳細は、後述することとする。
【０１５４】
次に、アプリ連携制御処理部２０２は、１コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
【０１５５】
一方、「コア０」１０１１だけが稼働していると判断されなければ（ステップＳ７０３のＮｏ）、即ち「コア１」１０１２も稼働していると判断されたら（ステップＳ７０３のＮｏ）、アプリ連携制御処理部２０２は、サブルーチンとしての複数コア動作中処理の呼び出しを実行する（ステップＳ７０５）。複数コア動作中処理の詳細は、後述することとする。
【０１５６】
次に、アプリ連携制御処理部２０２は、複数コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
【０１５７】
なお、定常負荷が存在すると判断されなければ（ステップＳ７０１のＮｏ）、アプリ連携制御処理部２０２は、第１の実施形態にかかるアプリ連携制御処理（ステップＳ２０１−Ｓ２０４）を実行することとなる（ステップＳ７０６）。
【０１５８】
以上で、アプリ連携制御処理のフローの説明を終了する。
【０１５９】
（１コア動作中処理）
図１７は、第２の実施形態にかかる１コア動作中処理のフローチャートである。
【０１６０】
図１７に示すように、アプリ連携制御処理部２０２は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、１コア動作中処理を開始する。アプリ連携制御処理部２０２は、１コア動作中処理にて、先ず、アプリＣＰＵコア制御情報３０２及びプロセス動作情報３０５を参照して、監視対象のアプリケーションプログラム、即ちフォアグラウンドアプリの直近のＣＰＵ利用率を算出する（ステップＳ８０１）。なお、直近のＣＰＵ利用率は、前回の観測から今回の観測までに実際にフォアグラウンドアプリが動作した時間の比率、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、ＣＰＵ１０１が実際にフォアグラウンドアプリを実行していた時間の比率である。である。直近のＣＰＵ利用率は、例えば、前述の数式（１）により算出しても良い。
【０１６１】
このとき、アプリ連携制御処理部２０２は、監視対象のアプリケーションプログラム（フォアグラウンドアプリ）のプロセス動作情報３０５の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式（１）の「今回の観測までの累積動作時間」、タイマ部２０９から取得した現在時刻を、数式（１）の「今回の観測時刻」、アプリＣＰＵコア制御情報３０２（３０２ａもしくは３０２ｂ）に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式（１）の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
【０１６２】
次に、アプリ連携制御処理部２０２は、定常負荷管理テーブル３０６及びプロセス動作情報３０５を参照して、定常負荷を発生させているアプリケーションプログラム、即ちサービスの直近のＣＰＵ利用率を算出する（ステップＳ８０２）。サービスの直近のＣＰＵ利用率は、例えば、前述の数式（１）により算出しても良い。
【０１６３】
このとき、アプリ連携制御処理部２０２は、定常負荷を発生させているサービスのプロセス動作情報３０５の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式（１）の「今回の観測までの累積動作時間」、タイマ部２０９から取得した現在時刻を、数式（１）の「今回の観測時刻」、定常負荷管理テーブル３０６に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、数式（１）の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
【０１６４】
次に、アプリ連携制御処理部２０２は、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させているサービスの直近のＣＰＵ利用率との合計（直近のＣＰＵ負荷）が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいか否かを判断する（ステップＳ８０３）。
【０１６５】
ここで、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させているサービスの直近のＣＰＵ利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいと判断されたら（ステップＳ８０３のＹｅｓ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」１０１２のコア番号「１」に更新する（ステップＳ８０４）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア１」１０１２のコア番号「１」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示が通知され、「コア０」１０１１及び「コア１」１０１２の双方が動作することとなる。
【０１６６】
次に、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の更新後、１コア動作中処理の呼び出し元の処理を実行する。
【０１６７】
一方、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させているサービスの直近のＣＰＵ利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＮしきい値」よりも大きいと判断されなければ（ステップＳ８０３のＮｏ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を更新せずに、１コア動作中処理の呼び出し元の処理を実行する。即ち、「コア０」１０１１の稼働だけが継続することとなる。
【０１６８】
以上で、１コア動作中処理のフローの説明を終了する。
【０１６９】
（複数コア動作中処理）
図１８は、第２の実施形態にかかる複数コア動作中処理のフローチャートである。
【０１７０】
図１８に示すように、アプリ連携制御処理部２０２は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、複数コア動作中処理を開始する。アプリ連携制御処理部２０２は、複数コア動作中処理にて、先ず、アプリＣＰＵコア制御情報３０２及びプロセス動作情報３０５を参照して、フォアグラウンドアプリの直近のＣＰＵ利用率（平均動作負荷）を算出する（ステップＳ９０１）。直近のＣＰＵ利用率は、１コア動作中処理と同様に算出すれば良い。
【０１７１】
次に、アプリ連携制御処理部２０２は、定常負荷管理テーブル３０６及びプロセス動作情報３０５を参照して、定常負荷を発生させているサービスの直近のＣＰＵ利用率（平均定常負荷）を算出する（ステップＳ９０２）。直近のＣＰＵ利用率は、１コア動作中処理と同様に算出すれば良い。
【０１７２】
次に、アプリ連携制御処理部２０２は、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させるサービスの直近のＣＰＵ利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいか否かを判断する（ステップＳ９０３）。
【０１７３】
ここで、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させるサービスの直近のＣＰＵ利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいと判断されたら（ステップＳ９０３のＹｅｓ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア０」１０１１のコア番号「０」に更新する（ステップＳ９０４）。「ｃｐｕ１／ｏｎｌｉｎｅ」を「コア０」１０１１のコア番号「０」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示が通知され、「コア０」１０１１だけが動作することとなる。
【０１７４】
次に、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の更新後、複数コア動作中処理の呼び出し元の処理を実行する。
【０１７５】
一方、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させるサービスの直近のＣＰＵ利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ＯＦＦしきい値」よりも小さいと判断されなければ（ステップＳ９０３のＮｏ）、アプリ連携制御処理部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を更新せずに、複数コア動作中処理の呼び出し元の処理を実行する。即ち、「コア０」１０１１及び「コア１」１０１２の双方の稼働が継続することとなる。
【０１７６】
以上で、複数コア動作中処理のフローの説明を終了する。
（定常負荷監視処理）
図１９は、第２の実施形態にかかる定常負荷監視処理のフローチャートである。
【０１７７】
図１９に示すように、定常負荷監視部２１０は、先ず、定常負荷管理テーブル３０６を参照して、監視対象のサービスを取得する（ステップＳ１００１）。
【０１７８】
次に、定常負荷監視部２１０は、定常負荷管理テーブル３０６及びプロセス動作情報３０５を参照して、監視対象のサービスの直近のＣＰＵ利用率を算出する（ステップＳ１００２）。直近のＣＰＵ利用率は、例えば、前述の数式（１）により算出しても良い。
【０１７９】
このとき、定常負荷監視部２１０は、監視対象のサービスのプロセス動作情報３０５の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式（１）の「今回の観測までの累積動作時間」、タイマ部２０９から取得した現在時刻を、数式（１）の「今回の観測時刻」、定常負荷管理テーブル３０６に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式（１）の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
【０１８０】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、監視対象のサービスが「動作中」もしくは「終了中」であるか否かを判断する（ステップＳ１００３）。具体的には、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、「動作状態」に「動作中」を意味する「２」もしくは「終了中」を意味する「３」が記録されているか否かを判断する。確認の為に述べると、「動作中」は、定常負荷が存在している動作状態であって、「終了中」は、「動作中」から「停止中」への移行状態、即ち定常負荷の終了確認を実行している動作状態である。
【０１８１】
ここで、監視対象のサービスが「動作中」もしくは「終了中」であると判断されたら（ステップＳ１００３のＹｅｓ）、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、直近のＣＰＵ利用率が「終了しきい値」よりも小さいか否かを判断する（ステップＳ１００４）。
【０１８２】
ここで、監視対象のサービスの直近のＣＰＵ利用率が「終了しきい値」より小さいと判断されたら（ステップＳ１００４のＹｅｓ）、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を更新するとともに、定常負荷テーブル３０６の「動作状態」を「終了中」に更新する（ステップＳ１００５）。具体的には、定常負荷管理部２１０は、前回の観測から今回の観測までの経過時間を、定常負荷管理テーブル３０６に記録されている「継続時間」に加算して、新たな「継続時間」として更新するとともに、定常負荷管理テーブル３０６の「動作状態」を、「終了中」を意味する「３」に更新する。確認の為に述べると、「継続時間」は、それぞれの「動作状態」に移行してからの経過時間である。例えば、「動作状態」が「動作中」であれば、「継続時間」は、「開始中」から「動作中」への移行時刻を起点として計測された、「動作中」の経過時間である。
【０１８３】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、「継続時間」が「継続時間しきい値」よりも大きいか否かを判断する（ステップＳ１００６）。
【０１８４】
ここで、「継続時間」が「継続時間しきい値」よりも大きいと判断されたら（ステップＳ１００６のＹｅｓ）、定常負荷管理部２１０は、次回以降の判断の為に定常負荷管理テーブル３０６の「継続時間」を初期化（初期値に更新）するとともに、「動作状態」を「停止」に更新する（ステップＳ１００７）。具体的には、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期値「０」に更新するとともに、定常負荷管理テーブル３０６の「動作状態」を、「停止」を意味する「０」に更新する。
【０１８５】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、他のサービスが存在しないか否かを判断する（ステップＳ１００８）。
【０１８６】
ここで、他のサービスが存在しないと判断されたら（ステップＳ１００８のＹｅｓ）、定常負荷管理部２１０は、定期監視の為のタイマを設定して、スリープ状態に遷移する（ステップＳ１００９）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十ｍｓとする。タイマの設定時間の満了後、定常負荷管理部２１０は、定常負荷監視処理のスタートから処理を実行する。
【０１８７】
一方、他のサービスが存在しないと判断されなければ（ステップＳ１００８のＮｏ）、即ち他のサービスが存在すると判断されたら、定常負荷管理部２１０は、該サービスを監視対象として、定常負荷監視処理のスタートから処理を実行する。
【０１８８】
一方、監視対象のサービスの直近のＣＰＵ利用率が「終了しきい値」より小さいと判断されなければ（ステップＳ１００４のＮｏ）、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期化（初期値に更新）するとともに、定常負荷管理テーブル３０６の「動作状態」を「動作中」に更新する（ステップＳ１０１０）。具体的には、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期値「０」に更新するとともに、定常負荷管理テーブル３０６の「動作状態」を、「動作中」を意味する「２」に更新する。
【０１８９】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、他のサービスが存在しないか否かを判断する（ステップＳ１００８）。
【０１９０】
又、監視対象のサービスが「動作中」もしくは「終了中」であると判断されなければ（ステップＳ１００３のＮｏ）、即ち監視対象のサービスが「停止中」もしくは「開始中」であると判断されたら、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、直近のＣＰＵ利用率が「開始しきい値」よりも大きいか否かを判断する（ステップＳ１０１１）。確認の為に述べると、「停止中」は、定常負荷が存在していない動作状態であって、「開始中」は、「停止中」から「動作中」への移行状態、即ち定常負荷の開始確認を実行している動作状態である。
【０１９１】
ここで、監視対象のサービスの直近のＣＰＵ利用率が「開始しきい値」よりも大きいと判断されたら（ステップＳ１０１１のＹｅｓ）、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を更新するとともに、定常負荷テーブル３０６の「動作状態」を「開始中」に更新する（ステップＳ１０１２）。具体的には、定常負荷管理部２１０は、前回の観測から今回の観測までの経過時間を、定常負荷管理テーブル３０６に登録されている「継続時間」に加算して、新たな「継続時間」として更新するとともに、定常負荷管理テーブル３０６の「動作状態」を、「開始中」を意味する「１」に更新する。
【０１９２】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、「継続時間」が「継続時間しきい値」よりも大きいか否かを判断する（ステップＳ１０１３）。
【０１９３】
ここで、「継続時間」が「継続時間しきい値」よりも大きいと判断されたら（ステップＳ１０１３のＹｅｓ）、定常負荷管理部２１０は、次回以降の判断の為に定常負荷管理テーブル３０６の「継続時間」を初期化（初期値に更新）するとともに、「動作状態」を「動作中」に更新する（ステップＳ１０１４）。具体的には、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期値「０」に更新するとともに、定常負荷管理テーブル３０６の「動作状態」を、「動作中」を意味する「２」に更新する。
【０１９４】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、他のサービスが存在しないか否かを判断する（ステップＳ１００８）。
【０１９５】
一方、監視対象のサービスの直近のＣＰＵ利用率が「開始しきい値」よりも大きいと判断されなければ（ステップＳ１０１１のＮｏ）、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期化（初期値に更新）するとともに、定常負荷管理テーブル３０６の「動作状態」を「停止中」に更新する（ステップＳ１０１５）。具体的には、定常負荷管理部２１０は、定常負荷管理テーブル３０６の「継続時間」を初期値「０」に更新するとともに、定常負荷管理テーブル２１０の「動作状態」を、「停止」を意味する「０」に更新する。
【０１９６】
次に、定常負荷管理部２１０は、定常負荷管理テーブル３０６を参照して、他のサービスが存在しないか否かを判断する（ステップＳ１００８）。
【０１９７】
以上で、定常負荷監視処理のフローの説明を終了する。
【０１９８】
本実施形態によれば、フォアグラウンドアプリの他に、定常負荷を発生させているサービスが動作している場合、フォアグラウンドアプリの直近のＣＰＵ利用率と、サービスの直近のＣＰＵ利用率との合計をＣＰＵ負荷として、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを決定している。
【０１９９】
このため、定常負荷を発生させているサービスがバックグラウンドで動作している場合でも、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを正確に制御することができる。
【０２００】
さらに、フォアグラウンドアプリの画面操作に起因して、ＣＰＵ負荷が急増した場合でも、例えば音楽再生やセンシング処理のような、継続的に動作することが望まれるサービスに影響が生じることがない。例えば、音楽再生中に生じる音飛び、センシングの歯抜けなどを抑制することができる。
【０２０１】
なお、本実施形態では、フォアグラウンドアプリの直近のＣＰＵ利用率と、定常負荷を発生させるサービスの直近のＣＰＵ利用率と、の合計を、ＣＰＵ負荷としているが、本発明の態様は、これに限定されるものではない。例えば、バックグラウンドアプリが定常負荷を発生させている場合、フォアグラウンドアプリの直近のＣＰＵ利用率と、バックグラウンドアプリの直近のＣＰＵ利用率と、の合計を、ＣＰＵ負荷としても良い。
【０２０２】
さらに、定常負荷は、バックグラウンドアプリ及びサービスの双方の動作に起因して発生するもの、複数のバックグラウンドアプリの動作に起因して発生するもの、複数のサービスの動作に起因して発生するものであっても良い。
【符号の説明】
【０２０３】
１００、２００：携帯端末装置
１０１：ＣＰＵ（マルチコアＣＰＵ）
１０２：メインメモリ（ストレージ）
１０３：補助メモリ（ストレージ）
１１３：ディスプレイ
２０２：アプリ連携制御部（取得部、コア制御部）
２０３：アプリ動作監視部（検出部）
【図１】
2014006619.tif 000003
【図２】
2014006619.tif 000004
【図３】
2014006619.tif 000005
【図４】
2014006619.tif 000006
【図５】
2014006619.tif 000007
【図６】
2014006619.tif 000008
【図７】
2014006619.tif 000009
【図８】
2014006619.tif 000010
【図９】
2014006619.tif 000011
【図１０】
2014006619.tif 000012
【図１１】
2014006619.tif 000013
【図１２】
2014006619.tif 000014
【図１３】
2014006619.tif 000015
【図１４】
2014006619.tif 000016
【図１５】
2014006619.tif 000017
【図１６】
2014006619.tif 000018
【図１７】
2014006619.tif 000019
【図１８】
2014006619.tif 000020
【図１９】
2014006619.tif 000021