(57)【要約】【課題】消費電力を削減できる情報処理装置の制御方法を提供すること。【解決手段】マルチコアＣＰＵの負荷状況に基づき、稼働コアの個数を増減させる情報処理装置の制御方法に於いて、  前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さい場合、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加しない、情報処理装置の制御方法。【選択図】図４
2014164361.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアＣＰＵの負荷状況に基づき、稼働コアの個数を増減させる情報処理装置の制御方法に於いて、
前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さい場合、前記稼働コアの個数のＭ個からＭ＋Ｎ個への増加を禁止する、情報処理装置の制御方法。
【請求項２】
請求項１に記載の情報処理装置の制御方法に於いて、
前記マルチコアＣＰＵの動作周波数に基づき、前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さいかどうかを判断する、情報処理装置の制御方法。
【請求項３】
請求項１又は２に記載の情報処理装置の制御方法に於いて、
前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときの前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも大きい場合、前記マルチコアＣＰＵにより実行されるスレッド数に関する指標を算出し、
前記スレッド数に関する指標に基づき、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加するかどうかを判断する、情報処理装置の制御方法。
【請求項４】
請求項３に記載の情報処理装置の制御方法に於いて、
前記マルチコアＣＰＵにより実行されるスレッド毎のＣＰＵ負荷を取得し、
前記ＣＰＵ負荷がしきい値以上であるスレッド数を前記スレッド数に関する指標とする、情報処理装置の制御方法。
【請求項５】
請求項４に記載の情報処理装置の制御方法に於いて、
前記ＣＰＵ負荷がしきい値以上であるスレッド数がＭ個以下である場合、前記稼働コアの個数のＭ個からＭ＋Ｎ個への増加を禁止する、情報処理装置の制御方法。
【請求項６】
請求項２に記載の情報処理装置の制御方法に於いて、
前記マルチコアＣＰＵの動作周波数に基づき、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加させるかどうかを判断する為のしきい値を変化させる、情報処理装置の制御方法。
【請求項７】
マルチコアＣＰＵの負荷状況に基づき、稼働コアの個数を増減させる情報処理装置の制御プログラムに於いて、
前記制御プログラムは、前記情報処理装置に、
前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さい場合、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加させない、情報処理装置の制御プログラム。
【請求項８】
マルチコアＣＰＵの負荷状況に基づき、稼働コアの個数を増減させる情報処理装置に於いて、
前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さい場合、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加しないＣＰＵコア制御判定部を備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、マルチコアＣＰＵを備える情報処理装置の制御方法、制御プログラム、及び情報処理装置に関する。
【背景技術】
【０００２】
携帯情報端末の高性能化・多機能化に伴い、携帯情報端末の消費電力が増加する傾向にある。ところが、携帯情報端末に搭載されるバッテリから供給される電力には限界がある。このため、近年、携帯情報端末は、複数のコアを内蔵するマルチコアＣＰＵを搭載するとともに、ＣＰＵ負荷を観測しながら稼働コアの個数を動的に増減（最適化）することで、ユーザの操作性能を確保しつつ、ＣＰＵ全体の消費電力を削減している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開２００７−１４１８４９号公報
【特許文献２】特開２００６−１４６６０５号公報
【特許文献３】特開２００９−０９３３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術にかかる携帯情報端末では、システム全体のＣＰＵ負荷に基づき、マルチコアＣＰＵの稼働コアの個数を制御して、携帯情報端末の消費電力を抑制している。
【０００５】
ところが、情報処理装置の益々の高性能化・多機能化が予想され、今後さらなる消費電力の削減が要求される。
【０００６】
開示の技術によれば、消費電力を削減できる情報処理装置の制御方法、制御プログラム情報処理装置を提供する。
【課題を解決するための手段】
【０００７】
開示の技術の一観点によれば、マルチコアＣＰＵの負荷状況に基づき、稼働コアの個数を増減させる情報処理装置の制御方法に於いて、前記マルチコアＣＰＵの稼働コアの個数がＭ個であるときの消費電力が、前記稼働コアの個数がＭ＋Ｎ個であるときに前記マルチコアＣＰＵを最低動作周波数で動作させたときの消費電力よりも小さい場合、前記稼働コアの個数をＭ個からＭ＋Ｎ個に増加しない、情報処理装置の制御方法が提供される。
【発明の効果】
【０００８】
開示の技術の一観点によれば、情報処理装置の消費電力を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態にかかるＣＰＵの処理量（仕事量）及び消費電力の関係のグラフである。
【図２】第１の実施形態にかかるＣＰＵの稼働コアを増加させたときの消費電力の変化の模式図である。
【図３】第１の実施形態にかかる携帯情報端末のハードウェア構成の概略図である。
【図４】第１の実施形態にかかる携帯情報端末の機能ブロックの概略図である。
【図５】第１の実施形態にかかるアプリ／サービス動作情報の概略図である。
【図６】第１の実施形態にかかるＣＰＵコア制御パラメータ情報の概略図である。
【図７】第１の実施形態にかかるＣＰＵ制御情報の概略図である。
【図８】第１の実施形態にかかるプロセス動作情報の概略図である。
【図９】第１の実施形態にかかるシステム状態情報の概略図である。
【図１０】第１の実施形態にかかるＣＰＵコア制御判定処理のフローチャートである。
【図１１】第１の実施形態にかかるコア増加判定処理のフローチャートである。
【図１２】第１の実施形態にかかるスレッド負荷計測処理のフローチャートである。
【図１３】第１の実施形態にかかるコア減少判定処理のフローチャートである。
【図１４】第２の実施形態にかかる携帯情報端末のハードウェア構成の概略図である。
【図１５】第２の実施形態にかかる携帯情報端末の機能ブロックの概略図である。
【図１６】第２の実施形態にかかるＣＰＵコア制御パラメータ情報の概略図である。
【図１７】第２の実施形態にかかるシステム状態情報の概略図である。
【発明を実施するための形態】
【００１０】
［マルチコアＣＰＵの稼働コア数と消費電力］
図１、図２を参照して、マルチコアＣＰＵ（以下、ＣＰＵとする）の稼働コア数と消費電力との関係を説明する。ここでは、マルチコアＣＰＵとして、２つのコアを有する、所謂デュアルコアＣＰＵを使用することとする。
【００１１】
図１は、ＣＰＵの処理量（仕事量）及び消費電力の関係のグラフである。グラフでは、横軸を処理量とし、縦軸を消費電力としている。処理量は、動作周波数×稼働コア数［ＧＨｚ］である。
【００１２】
曲線１は、ＣＰＵの稼働コア数が１つであるときの関係、曲線２は、ＣＰＵの稼働コア数が２つであるときの関係である。曲線１、２の各プロットは、ＣＰＵの動作周波数を与えたときの、処理量（＝動作周波数×稼働コア数）と消費電力の交差点である。
【００１３】
曲線１の左側からｎ個目のプロットの動作周波数は、曲線２の左側からｎ個目のプロットの動作周波数に相当する。例えば、曲線１の左側から１個目のプロットの動作周波数が０．３［ＧＨｚ］であれば、曲線２の左側から１番目のプロットの動作周波数も０．３［ＧＨｚ］である。但し、横軸を処理量（＝動作周波数×稼働コア数）としている為、曲線２の左側から１個目のプロットは、横軸上の２倍の位置、即ち０．３［ＧＨｚ］×２［個／ＧＨｚ］＝０．６［ＧＨｚ］の位置となる。
【００１４】
図１に示すように、例えばＣＰＵの動作周波数が高いときは（丸枠Ａの範囲）、稼働コアを２個に増やすことで、同等の処理量を確保しつつ、ＣＰＵの消費電力を削減できることがわかる。ところが、例えばＣＰＵの動作周波数が低いときは（丸枠Ｂの範囲）、ＣＰＵの稼働コアを２個に増加しても、ＣＰＵの消費電力を削減できない、ましてやＣＰＵの稼働コアを２個に増やすことで、かえってＣＰＵの消費電力が増加することがわかる。
【００１５】
図２は、第１の実施形態にかかるＣＰＵの稼働コアを増加させたときの消費電力の変化の模式図である。（ａ）は、ＣＰＵの動作周波数が高いとき（図１の丸枠Ａの範囲に相当）、（ｂ）はＣＰＵの動作周波数が低いとき（図１の丸枠Ｂの範囲に相当）、をそれぞれ示している。
【００１６】
図２（ａ）に示すように、ＣＰＵの動作周波数が高いときに、ＣＰＵの稼働コアを２個に増加すると、ＣＰＵの処理能力は２倍に増加するが、稼働コアの増加後、ＣＰＵの動作周波数は、ＣＰＵの処理能力がＣＰＵ負荷に見合うところまで引き下げられる。このため、ＣＰＵの動作周波数が高いときには、稼働コアを増加させることで、ＣＰＵの動作周波数を低下させることができるので、結果、ＣＰＵの消費電力を削減することができる。
【００１７】
具体的には、ＣＰＵの動作周波数が高いときに、稼働コアを増加させると、曲線１の動作点ａ１は、曲線２の動作点ｃ１に遷移して、動作点ｃ１への遷移後、ＣＰＵの動作周波数が引き下げられることで、さらに曲線２の動作点ｂ１（動作点ａ１の消費電力よりも低い）に遷移する。
【００１８】
ところが、図２（ｂ）に示すように、ＣＰＵの動作周波数が高いときに、ＣＰＵの稼働コアを増加させると、ＣＰＵの処理能力は２倍に増加するが、稼働コアの増加後、ＣＰＵの動作周波数は、ＣＰＵの動作周波数の最低値に阻まれ、十分に引き下げられない。このため、ＣＰＵの動作周波数が低いときには、稼働コアを増加させてもＣＰＵの動作周波数を低下させることができず、結果、ＣＰＵの消費電力を十分に削減することができない。
【００１９】
具体的には、ＣＰＵの動作周波数が低いときに、ＣＰＵの稼働コアを増加させると、曲線１の動作点ａ２は、曲線２の動作点ｂ２に遷移するが、動作点ｂ２への遷移後、ＣＰＵの動作周波数が引き下げられない為、さらなる動作点の遷移が生じない。このため、稼働コアを増加させても、ＣＰＵの消費電力を削減することができない。しかも、稼働コアが増加したことで、かえってＣＰＵの消費電力が増加している。
【００２０】
以上の事実を踏まえ、以下の実施形態では、ＣＰＵの動作周波数が低いときには、稼働コアの増加を禁止することで、ＣＰＵの消費電力の増加を抑制する。なお、「ＣＰＵの動作周波数が低いとき」とは、ＣＰＵの稼働コアの増加後の複数の動作点（曲線２のプロット）中に、ＣＰＵの稼働コアの増加前の動作点（曲線１のプロット）よりも消費電力が低い動作点が存在しないときに相当する。
【００２１】
例えば、図１に示すように、ＣＰＵの稼働コアの増加前の動作点を「ｐ１」とすると、曲線２の複数の動作点中に、動作点「ｐ１」よりも消費電力が低い動作点が存在することがわかる。さらに、ＣＰＵの稼働コアの増加前の動作点を「ｐ２」とすると、曲線２の複数の動作点中に、動作点「ｐ２」よりも消費電力が低い動作点「ｐ４」が存在することがわかる。このため、稼働コアの増加前の動作点が「ｐ１」や「ｐ２」であれば、稼働コアを増加することで、ＣＰＵの消費電力が削減される。
【００２２】
一方、ＣＰＵの稼働コアの増加前の動作点を「ｐ３」とすると、曲線２の複数のプロット中に、動作点「ｐ３」よりも消費電力が低い動作点が存在しないことがわかる。このため、稼働コアの増加前の動作点が「ｐ２」であれば、稼働コアを増加しても、ＣＰＵの消費電力が削減されない。従って、ＣＰＵの動作周波数が動作点「ｐ２」の動作周波数よりも低いときには、ＣＰＵの稼働コアを増加させないこととなる。
【００２３】
［第１の実施形態］
以下、図３〜図１３を参照して、第１の実施形態にかかる携帯情報端末１００を説明する。本実施形態では、携帯情報端末１００として、例えばスマートフォンやタブレットＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等を使用しても良い。又、携帯情報端末１００に搭載されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として、Ａｎｄｒｏｉｄ（登録商標）を使用しても良い。Ａｎｄｒｏｉｄは、ＯＳカーネルと、アプリケーションフレームワーク／ライブラリと、を含み、本実施形態にかかる制御プログラムは、アプリケーションフレームワーク／ライブラリに組み込まれる。但し、本発明の態様は、これに限定されるものではなく、Ａｎｄｒｏｉｄ以外のＯＳを採用しても良い。さらに、本実施形態にかかる制御プログラムを、アプリケーションフレームワーク／ライブラリ以外に組み込んでも良い。
【００２４】
（携帯情報端末１００のハードウェア構成）
図３は、第１の実施形態にかかる携帯情報端末１００のハードウェア構成の概略図である。  
【００２５】
図３に示すように、本実施形態にかかる携帯情報端末１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メインメモリ１０２、補助メモリ１０３、クロック供給回路１０４、電圧供給回路１０５、ディスプレイ１０６、タッチスクリーン１０７、をハードウェアモジュールとして備える。これらのハードウェアモジュールは、例えばバス１０８により相互接続されている。
【００２６】
ＣＰＵ１０１は、クロック供給回路１０４から供給されるクロック信号及び電圧供給回路１０５から供給される電圧により動作して、携帯情報端末１００の各種ハードウェアモジュールを制御する。ＣＰＵ１０１は、所謂デュアルコアＣＰＵであって、「コア０」１０１１及び「コア１」１０１２を有する。さらに、ＣＰＵ１０１は、補助メモリ１０３に格納された各種プログラムを読み出して、メインメモリ１０２にロードするとともに、該メインメモリ１０２にロードされた各種プログラムを実行することで、各種機能を実現する。各種機能の詳細は、後述することとする。本実施形態では、ＣＰＵ１０１として、デュアルコアＣＰＵを使用しているが、所謂マルチコアＣＰＵであれば、例えばクアッドコアＣＰＵなど、任意の数のコアを有していても良い。
【００２７】
メインメモリ１０２は、ＣＰＵ１０１により実行される各種プログラムを格納する。さらに、メインメモリ１０２は、ＣＰＵ１０１のワークエリアとして使用され、ＣＰＵ１０１による処理に必要な各種データを記憶する。メインメモリ１０２としては、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを使用しても良い。
【００２８】
補助メモリ１０３は、携帯情報端末１００を動作させる各種プログラムを格納している。各種プログラムとしては、例えば、携帯情報端末１００が実行するアプリケーションプログラムやＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などがある。アプリケーションプログラムとしては、例えば、ディスプレイ１０６にコンテンツ（実行結果）が表示され、ユーザが画面操作できる「アプリ」や、ディスプレイ１０６にコンテンツが表示されることがなく、アプリの動作の為にバックグラウンドで動作する「サービス」などが格納されている。但し、複数のアプリが起動している場合、アプリは、ディスプレイ１０６の前面にコンテンツが表示され、実際にユーザが画面操作できるアプリ（フォアグラウンドアプリ）と、ディスプレイ１０６の前面にコンテンツが表示されていなく、実際にはユーザが画面操作できないアプリ（バックグラウンドアプリ）の何れかとなる。本実施形態にかかる制御プログラムも補助メモリ１０３に格納されている。補助メモリ１０３としては、例えば、ハードディスクやフラッシュメモリ等の不揮発メモリを使用しても良い。
【００２９】
ディスプレイ１０６は、ＣＰＵ１０１により制御され、ユーザに画像情報を表示する。タッチスクリーン１０７は、ディスプレイ１０６に貼り付けられ、ユーザの指先やペン先などで接触された位置情報を入力する。
【００３０】
（携帯情報端末１００の機能ブロック）
図４は、第１の実施形態にかかる携帯情報端末１００の機能ブロックの概略図である。
【００３１】
図４に示すように、本実施形態にかかる携帯情報端末１００は、アプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８、タイマ部２０９、アプリ／サービス動作情報３０１、ＣＰＵコア制御パラメータ情報３０２、ＣＰＵ制御情報３０３、プロセス動作情報３０４、システム状態情報３０５、を備える。
【００３２】
アプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８、タイマ部２０９、アプリ／サービス動作情報３０１、ＣＰＵコア制御パラメータ情報３０２、ＣＰＵ制御情報３０３、プロセス動作情報３０４、システム状態情報３０５は、何れもＣＰＵ１０１が、ＡｎｄｒｏｉｄのＯＳカーネルもしくはアプリケーションフレームワーク／ライブラリを実行することで実現される。
【００３３】
なお、アプリ／サービス動作情報３０１、ＣＰＵコア制御パラメータ情報３０２、ＣＰＵ制御情報３０３、プロセス動作情報３０４、システム状態情報３０５は、何れも補助メモリ１０３に構築される。
【００３４】
アプリ実行管理部２０１は、アプリやサービスなどのプログラムの実行や停止を管理する。具体的には、アプリ実行管理部２０１は、アプリやサービスなどのアプリケーションプログラムの利用環境やプロセス状態に変化が生じた場合、後述するアプリ／サービス動作情報３０１の「種別」や「状態」を更新する。利用環境としては、フォアグラウンド及びバックグラウンドが定義される。例えば、アプリ実行管理部２０１は、フォアグラウンドでアプリケーションプログラムが動作を開始した場合、即ちフォアグラウンドでアプリケーションプログラムが起動もしくは再開された場合、アプリ／サービス動作情報３０１にアクセスして、「種別」を「フォアグラウンド」、「状態」を「実行中」、にそれぞれ更新する。
【００３５】
ＣＰＵコア制御判定部２０２は、定期的にシステムの動作状態を観測して、ＣＰＵ１０１の稼働コアを増減するか否かを判断する。具体的には、ＣＰＵコア制御判定部２０２は、システム状態情報３０５、ＣＰＵコア制御パラメータ情報３０２、などを参照して、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ（スレッドの実行キュー長の平均値）」と、ＣＰＵ１０１により実行されているスレッド数（並列度）、ＣＰＵ１０１の稼働コア数、ＣＰＵ１０１の動作周波数、各種制御パラメータとに基づき、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の設定内容を変更する。
【００３６】
スレッド負荷計測部２０４は、プロセス動作情報３０４を参照して、累積動作時間に基づき、ＣＰＵ１０１により実行されているスレッドの並列度を算出する。
【００３７】
システム負荷計測部２０３は、システム全体の動作状況を観測して、システム状態情報３０５の「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」及び「ＣＰＵ利用率」の記録内容を参照し、コア制御判定に利用する。
【００３８】
ＣＰＵ周波数制御部２０５は、定期的にシステム状態情報３０５を参照して、システム状態情報３０５の「ＣＰＵ利用率」に基づき、ＣＰＵ周波数／状態設定部２０６に、ＣＰＵ１０１の稼働コアの動作周波数の変更指示を通知する。
【００３９】
ＣＰＵ周波数／状態設定部２０６は、ＣＰＵ状態制御部２０８からのＯＮ／ＯＦＦ指示に基づき、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを制御する。さらに、ＣＰＵ周波数／状態設定部２０６は、ＣＰＵ周波数制御部２０５からの動作周波数の変更指示に基づき、ＣＰＵ１０１の稼働コアの動作周波数を制御する。
【００４０】
プロセス／システム管理部２０７は、ＣＰＵ１０１により実行されるプロセスの動作状況を観測して、プロセス動作情報３０４の「動作状態」、「累積動作時間」を更新する。さらに、プロセス／システム管理部２０７は、システム全体の動作状況を観測して、システム状態情報３０５の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率」、「動作周波数」を更新する。
【００４１】
ＣＰＵ状態制御部２０８は、定期的にＣＰＵ制御情報３０３を観測して、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に基づき、ＣＰＵ周波数／状態設定部２０６に、「コア１」１０１２のＯＮ／ＯＦＦ指示を通知する。例えば、「コア１」１０１２がＯＮであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「１」から「０」に変更された場合、ＣＰＵ状態制御部２０８は、ＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示を通知する。逆に、「コア１」１０１２がＯＦＦであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「０」から「１」に変更された場合、ＣＰＵ状態制御部２０８は、ＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示を通知する。
【００４２】
タイマ部２０９は、例えば時計回路（図示しない）から取得した現在時刻を、例えばアプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、ＣＰＵ周波数制御部２０５、ＣＰＵ周波数／状態設定部２０６、プロセス／システム管理部２０７、ＣＰＵ状態制御部２０８に通知する。
【００４３】
（アプリ／サービス動作情報３０１）
図５は、第１の実施形態にかかるアプリ／サービス動作情報３０１の概略図である。
【００４４】
図５に示すように、アプリ／サービス動作情報３０１は、アプリケーションプログラム毎に、「プロセスＩＤ」、「プログラム名」、「種別」、「状態」を記憶する。アプリ／サービス動作情報３０１は、ＣＰＵ１０１により実行される全アプリケーションプログラムのプロセスを記憶する。従って、アプリ／サービス動作情報３０１は、例えばアプリ（フォアグラウンドアプリ、バックグラウンドアプリ）及びサービスのプロセスも記憶する。「種別」としては、「フォアグラウンド」及び「バックグラウンド」が定義される。「状態」としては、「実行中」、「待機中」、「実行可能」、「停止中」、「ゾンビ」が定義される。アプリ／サービス動作情報３０１の「種別」及び「状態」は、アプリ実行管理部２０１により更新される。
【００４５】
（ＣＰＵコア制御パラメータ情報３０２）
図６は、第１の実施形態にかかるＣＰＵコア制御パラメータ情報３０２の概略図である。
【００４６】
図６に示すように、ＣＰＵコア制御パラメータ情報３０２は、稼働コア数毎に、制御パラメータとして、「コア増加周波数しきい値１」、「コア増加周波数しきい値２」、「コア増加実行キュー長しきい値１」、「コア増加実行キュー長しきい値２」、「継続時間しきい値」、「スレッド負荷計測下限値」、「コア減少実行キュー長しきい値」、「並列度しきい値」を記憶する。
【００４７】
「コア増加周波数しきい値１」、「コア増加周波数しきい値２」、「コア増加実行キュー長しきい値１」、「コア増加実行キュー長しきい値２」、「継続時間しきい値」、「スレッド負荷計測下限値」、「コア減少実行キュー長しきい値」、「並列度しきい値」は、何れもＣＰＵ１０１の稼働コア数を増加するか否かを判断する為に、即ちＣＰＵ１０１の「コア１」１０１２をＯＮするか否かを判断する為に使用される。「継続時間しきい値」及び「コア減少実行キュー長しきい値」は、何れもＣＰＵ１０１の稼働コア数を減少するか否かを判断する為に、即ちＣＰＵ１０１の「コア１」１０１２をＯＦＦするか否かを判断する為に使用される。
【００４８】
なお、本実施形態にかかる制御パラメータは、ＣＰＵコア制御パラメータ情報３０２に記録されたパラメータに限定されるものではなく、例えばＣＰＵ１０１の最低動作周波数などの構成毎に設定されるものである。最低動作周波数は、ＣＰＵ１０１に設定される複数の動作周波数の最低値である。なお、最低値は、ＣＰＵ１０１の構成毎もしくはＯＳにより設定される。
【００４９】
（ＣＰＵ制御情報３０３）
図７は、第１の実施形態にかかるＣＰＵ制御情報３０３の概略図である。
【００５０】
図７に示すように、ＣＰＵ制御情報３０３は、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを決定する為の「ｃｐｕ１／ｏｎｌｉｎｅ」として、「０」もしくは「１」を記憶する。本実施形態では、「コア１」１０１２の「ＯＦＦ指示」に「０」を割り当て、「コア１」１０１２の「ＯＮ指示」に「１」を割り当てる。このため、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「０」が登録された場合、ＣＰＵ状態制御部２０８は、「コア１」１０１２の「ＯＦＦ指示」をＣＰＵ周波数／状態設定部２０６に通知する。ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「１」が登録された場合、ＣＰＵ状態制御部２０８は、「コア１」１０１２の「ＯＮ指示」をＣＰＵ周波数／状態設定部２０６に通知する。
【００５１】
（プロセス動作情報３０４）
図８は、第１の実施形態にかかるプロセス動作情報３０４の概略図である。
【００５２】
図８に示すように、プロセス動作情報３０４は、ＣＰＵ１０１により生成されたスレッド毎に作成され、それぞれの「スレッドＩＤ（Ｓｉｄ）」、「動作状態（Ｓｔａｔｅ）」、「親プロセスＩＤ（Ｐｐｉｄ）」、「累積動作時間」を記憶する。なお、「親プロセスＩＤ（Ｐｉｄ）」は、スレッドの親プロセスのＩＤである。例えば、複数のスレッドが同一のアプリケーションプログラムから生成された場合、複数のスレッドに同一の「親プロセスＩＤ（Ｐｉｄ）」が記録される。
【００５３】
「累積動作時間」は、アプリやサービスなどのアプリケーションプログラムの動作時間（ｍｓ）の累積値を記憶する。「累積動作時間」は、何れもアプリケーションプログラムの起動時刻を始点としてカウントされる。プロセス動作情報３０４の「スレッドＩＤ」、「動作状態」、「親プロセスＩＤ」、「累積動作時間」は、何れもプロセス／システム管理部２０７により観測毎に更新される。
【００５４】
（システム状態情報３０５）
図９は、第１の実施形態にかかるシステム状態情報３０５の概略図である。
【００５５】
図９に示すように、システム状態情報３０５は、「Ｏｎｌｉｎｅ（オンラインＣＰＵコア番号）」、「Ｏｆｆｌｉｎｅ（オフラインＣＰＵコア番号）」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率（％）」、「動作周波数（ＭＨｚ）」を記憶する。「Ｏｎｌｉｎｅ」は、稼働中のＣＰＵコア番号を記憶する。「Ｏｆｆｌｉｎｅ」は、非稼働のＣＰＵコア番号を記憶する。従って、「コア０」１０１１及び「コア１」１０１２の双方が稼働している場合、「Ｏｎｌｉｎｅ」に「０」及び「１」が記録され、「Ｏｆｆｌｉｎｅ」には何も記録されない。「コア０」１０１１だけが稼働している場合、「Ｏｎｌｉｎｅ」に「０」が記録され、「Ｏｆｆｌｉｎｅ」に「１」が記録される。「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」は、ＣＰＵ１０１による実行待ちのスレッドの個数の直近の平均値である。「ＣＰＵ利用率」は、システム全体のＣＰＵ利用率、即ち単位時間あたりの全スレッドの実行時間の合計である。「動作周波数」は、ＣＰＵ１０１の動作周波数である。システム状態情報３０５の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率」、「動作周波数」は、プロセス／システム管理部２０７により観測毎に更新される。
【００５６】
（ＣＰＵコア制御判定処理）
図１０は、第１の実施形態にかかるＣＰＵコア制御判定処理のフローチャートである。
【００５７】
図１０に示すように、ＣＰＵコア制御判定部２０２は、先ず、ＣＰＵ１０１の稼働コア数を増加するか否かを判定する為の「コア増加判定処理」を実行する（ステップＳ００１）。「コア増加判定処理」の詳細は、後述することとする。
【００５８】
次に、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コア数を減少させるか否かを判定する為の「コア減少判定処理」を実行する（ステップＳ００１）。「コア減少判定処理」の詳細は、後述することとする。
【００５９】
次に、ＣＰＵコア制御判定部２０２は、定期監視の為のタイマを設定して、スリープ状態に遷移する（ステップＳ００３）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数１０ｍｓとする。タイマの設定時間の満了後、ＣＰＵコア制御判定部２０２は、ＣＰＵコア制御判定処理のスタートから処理を実行する。
【００６０】
（コア増加判定処理）
図１１は、第１の実施形態にかかるコア増加判定処理のフローチャートである。
【００６１】
ここでは、ＣＰＵ１０１の「コア０」１０１１だけが稼動していることを前提とし、「コア１」１０１２の稼働を開始するか否かの判断プロセスを説明する。
【００６２】
図１１に示すように、ＣＰＵコア制御判定部２０２は、先ず、システム状態情報３０５を参照して、ＣＰＵ１０１の稼働コアが１つであるか否かを判断する（ステップＳ０１１）。具体的には、ＣＰＵコア制御判定部２０２は、システム状態情報３０５の「Ｏｎｌｉｎｅ」に「コア０」１０１１のコア番号「０」だけが登録されているか否かを判断する。さらに、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コアが１つであるか否かを判断した場合、タイマ部２０９からの時刻情報に基づき、条件継続時間の計測を開始する。
【００６３】
ここで、ＣＰＵ１０１の稼働コアが１つであると判断されない場合（ステップＳ０１１のＮｏ）、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア増加判定処理を終了させる。
【００６４】
一方、ＣＰＵ１０１の稼働コアが１つであると判断された場合（ステップＳ０１１のＹｅｓ）、ＣＰＵコア制御判定部２０２は、ＣＰＵコア制御パラメータ情報３０２を参照して、稼働コアが１つであるときの制御パラメータを取得する（ステップＳ０１２）。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵコア制御パラメータ情報３０２の「コア増加周波数しきい値１」、「コア増加周波数しきい値２」、「コア増加実行キュー長しきい値１」、「コア増加実行キュー長しきい値２」、「継続時間しきい値」、「スレッド負荷計測下限値」、「並列度しきい値」を、制御パラメータとして取得する。
【００６５】
次に、ＣＰＵコア制御判定部２０２は、システム状態情報３０５を参照して、スレッド負荷計測フラグを設定する（ステップＳ０１３）。具体的には、ＣＰＵコア制御判定部２０２は、システム状態情報３０５に記録されたＣＰＵ１０１の動作周波数が「スレッド負荷計測下限値」よりも大きければ、スレッド負荷計測フラグに「１」を記録、ＣＰＵ１０１の動作周波数が「スレッド負荷計測下限値」よりも大きくなければ、スレッド負荷計測フラグに「０」を記録する。なお、スレッド負荷計測フラグは、スレッド毎の並列度を算出するかどうかを判断する為のフラグである。即ち、スレッド負荷計測フラグに「１」が記録されている場合、スレッド負荷計測部２０４は、スレッド毎のＣＰＵ利用率を算出するが、スレッド負荷計測フラグに「０」が記録されている場合、スレッド負荷計測部２０４は、スレッド毎のＣＰＵ利用率を算出しない。
【００６６】
次に、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１」よりも大きいか否かを判断する（ステップＳ０１４）。本実施形態では、「コア増加周波数しきい値１」を「７００（ＭＨｚ）」とする。
【００６７】
ここで、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１」よりも大きいと判断されない場合（ステップＳ０１４のＮｏ）、即ちＣＰＵ１０１の動作周波数が７００（ＭＨｚ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０２３）、即ち０（ｓｅｃ）に設定して、本実施形態にかかるコア増加判定処理を終了させる。
【００６８】
このように、本実施形態では、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１（７００［ＭＨｚ］）」よりも大きいと判断されない場合、ＣＰＵ１０１の稼働コアを増加しても、ＣＰＵ１０１の消費電力が削減されないと判断して、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コアを増加することなく、コア増加判定処理を終了させる。
【００６９】
一方、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１」よりも大きいと判断された場合（ステップＳ０１４のＹｅｓ）、即ちＣＰＵ１０１の動作周波数が７００（ＭＨｚ）よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値２」よりも大きいか否かを判断する（ステップＳ０１５）。本実施形態では、「コア増加周波数しきい値２」を「１０００（ＭＨｚ）」とする。
【００７０】
ここで、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値２」よりも大きいと判断された場合（ステップＳ０１５のＹｅｓ）、即ちＣＰＵ１０１の動作周波数が１０００（ＭＨｚ）よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、システム状態情報３０５を参照して、スレッドの実行キュー長が「コア増加実行キュー長しきい値２」よりも大きく、かつ、スレッドの並列度が「並列度しきい値」よりも大きいかどうかを判断する（ステップＳ０１６）。本実施形態では、「コア増加実行キュー長しきい値２」を「１．５」とし、「並列度しきい値」を「２」とする。
【００７１】
ここで、スレッドの実行キュー長が「コア増加実行キュー長しきい値２」よりも大きく、かつ、スレッドの並列度が「並列度しきい値」よりも大きいと判断されない場合（ステップＳ０１６のＮｏ）、即ちスレッドの実行キュー長が１．５よりも大きく、かつ、スレッドの並列度が２よりも大きいと判断されない場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０２３）、即ち「０（ｓｅｃ）」に設定して、本実施形態にかかるコア増加判定処理を終了させる。
【００７２】
一方、スレッドの実行キュー長が「コア増加実行キュー長しきい値２」よりも大きく、かつ、スレッドの並列度が「並列度しきい値」よりも大きいと判断された場合（ステップＳ０１６のＹｅｓ）、即ちスレッドの実行キュー長が１．５よりも大きく、かつ、スレッドの並列度が２よりも大きい場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を更新する（ステップＳ０１７）。
【００７３】
次に、ＣＰＵコア制御判定部２０２は、条件継続時間が「継続時間しきい値」よりも大きいか否かを判断する（ステップＳ０１８）。本実施形態では、「継続時間しきい値」を「３００（ｍｓ）」とする。
【００７４】
ここで、条件継続時間が「継続時間しきい値」よりも大きいと判断されない場合（ステップＳ０１８のＮｏ）、即ち条件継続時間が３００（ｍｓ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア増加判定処理を終了させる。
【００７５】
一方、条件継続時間が「継続時間しきい値」よりも大きいと判断された場合（ステップＳ０１８のＹｅｓ）、即ち条件継続時間が３００（ｍｓ）より大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の「コア１」１０１２を稼働、即ちＣＰＵ１０１の稼働コアを増加させ（ステップＳ０１９）、本実施形態にかかるコア増加判定処理を終了させる。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「１」に更新する。「ｃｐｕ１／ｏｎｌｉｎｅ」を「１」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＮ指示が通知され、「コア０」１０１１及び「コア１」１０１２の双方が動作することとなる。
【００７６】
一方、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値２」よりも大きいと判断されない場合（ステップＳ０１５のＮｏ）、即ちＣＰＵ１０１の動作周波数が７００（ＭＨｚ）よりも大きく、かつ、１０００（ＭＨｚ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、スレッドの実行キュー長が「コア増加実行キュー長しきい値１」よりも大きいか否かを判断する（ステップＳ０２０）。本実施形態では、「コア増加実行キュー長しきい値１」を「２．０」とする。
【００７７】
ここで、スレッドの実行キュー長が「コア増加実行キュー長しきい値１」よりも大きいと判断されない場合（ステップＳ０２０のＮｏ）、即ちスレッドの実行キュー長が「２．０」以下である場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０２３）、即ち「０（ｓｅｃ）」に設定して、本実施形態にかかるコア増加判定処理を終了させる。
【００７８】
一方、スレッドの実行キュー長が「コア増加実行キュー長しきい値１」よりも大きいと判断された場合（ステップＳ０２０のＹｅｓ）、即ちスレッドの実行キュー長が「２．０」よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を更新する（ステップＳ０２１）。
【００７９】
このように、本実施形態では、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１（７００［ＭＨｚ］）」〜「コア増加周波数しきい値（１０００［ＭＨｚ］）」である場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コアを増加しても、ＣＰＵ１０１の消費電力が削減されない可能性が高いと判断して、ＣＰＵ１０１の稼働コアを増加するか否かを判定に、「コア増加実行キュー長しきい値２」よりも大きい「コア増加実行キュー長しきい値１」を使用して、ＣＰＵ１０１の稼働コアが増加しにくい環境を整える。
【００８０】
次に、ＣＰＵコア制御判定部２０２は、条件継続時間が「継続時間しきい値」よりも大きいか否かを判断する（ステップＳ０２２）。本実施形態では、「継続時間しきい値」を「３００（ｍｓ）」とする。  ここで、条件継続時間が「継続時間しきい値」よりも大きいと判断されない場合（ステップＳ０２２のＮｏ）、即ち条件継続時間が３００（ｍｓ）以下である場合、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア増加判定処理を終了させる。
【００８１】
一方、条件継続時間が「継続時間しきい値」よりも大きいと判断された場合（ステップＳ０２２のＹｅｓ）、条件継続時間が３００（ｍｓ）よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の「コア１」１０１２を稼働、即ちＣＰＵ１０１の稼働コアを増加させ（ステップＳ０１９）、本実施形態にかかるコア増加判定処理を終了させる。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「１」に更新する。
【００８２】
以上のように、本実施形態では、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１（７００［ＭＨｚ］）」以下である場合、ＣＰＵ１０１の稼働コアを増加しても、ＣＰＵ１０１の消費電力が削減されないと判断して、ＣＰＵ１０１の稼働コアの増加を取り止める。このため、稼働コアの増加に起因して、かえってＣＰＵ１０１の消費電力が増加するような、不本意な稼働コアの増加を減らすことができる。
【００８３】
しかも、本実施形態では、ＣＰＵ１０１の動作周波数が「コア増加周波数しきい値１（７００［ＭＨｚ］）」〜「コア増加周波数しきい値２（１０００［ＭＨｚ］）」である場合、ＣＰＵ１０１の稼働コアを増加しても、ＣＰＵ１０１の消費電力を削減されない可能性が高いと判断して、ＣＰＵ１０１の稼働コアを増加するか否か判定する為に、「コア増加実行キュー長しきい値２」よりも大きい「コア増加実行キュー長しきい値１」を使用して、ＣＰＵ１０１の稼働コアが増加しにくい環境を整える。このため、稼働コアの増加に起因して、かえってＣＰＵ１０１の消費電力が増加するような、不本意な稼働コアの増加を、さらに減らすことができる。
【００８４】
（スレッド負荷計測処理）
図１２は、第１の実施形態にかかるスレッド負荷計測処理のフローチャートである。
【００８５】
図１２に示すように、スレッド負荷計測部２０４は、ＣＰＵコア制御パラメータ情報３０２を参照して、ＣＰＵ１０１の稼働コアが１つであるときの「並列度しきい値」を取得する。本実施形態では、「並列度しきい値」を「２」とする。
【００８６】
次に、スレッド負荷計測部２０４は、スレッド負荷計測フラグがＯＮであるか否か、即ちスレッド負荷計測フラグに「１」が記録されているか否かを判断する（ステップＳ０３２）。
【００８７】
ここで、スレッド負荷計測フラグがＯＮであると判断されない場合（ステップＳ０３２のＮｏ）、即ちスレッド負荷計測フラグに「１」が記録されていない場合、スレッド負荷計測部２０４は、再度、スレッド負荷計測フラグがＯＮであるか否かを判断する（ステップＳ０３２）。
【００８８】
一方、スレッド負荷計測フラグがＯＮであると判断された場合（ステップＳ０３２のＹｅｓ）、即ちスレッド負荷計測フラグに「１」が記録されている場合、スレッド負荷計測部２０４は、アプリ／サービス動作情報３０１及びプロセス動作情報３０４を参照して、計測対象プロセスのスレッド毎のＣＰＵ利用率を算出する（ステップＳ０３３）。具体的には、スレッド負荷計測部２０４は、先ず、アプリ／サービス動作情報３０１を参照して、フォアグラウンドアプリのプロセスＩＤを取得する。続いて、スレッド負荷計測部２０４は、プロセス動作情報３０４を参照して、該プロセスＩＤに紐付けられたフォアグラウンドアプリを親プロセスとするスレッドを特定する。続いて、スレッド負荷計測部２０４は、該スレッドの累積動作時間に基づき、スレッド毎のＣＰＵ利用率を算出する。
【００８９】
次に、スレッド負荷計測部２０４は、スレッド毎のＣＰＵ利用率と、ＣＰＵ利用率しきい値と、に基づき、ＣＰＵ１０１により実行されているスレッドの並列度を算出する（ステップＳ０３４）。具体的には、スレッド負荷計測部２０４は、スレッド毎のＣＰＵ利用率がＣＰＵ利用率しきい値よりも大きいスレッド数を算出する。本実施形態では、ＣＰＵ利用率しきい値を「４０％」とする。
【００９０】
次に、スレッド負荷計測部２０４は、定期監視のためのタイマを設定して、スリープ状態に遷移する（ステップＳ０３５）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十ｍｓとする。タイマの設定時間の満了後、スレッド負荷計測部２０４は、スレッド負荷計測処理のスタートから処理を実行する。
【００９１】
以上のように、本実施形態では、ＣＰＵ１０１の動作周波数が、「コア増加周波数しきい値１」よりも小さい「スレッド負荷計測下限値」以下である場合、ＣＰＵ１０１の稼働コアを増加しても、ＣＰＵ１０１の消費電力が削減されないと判断して、スレッドの並列度の算出を開始しない。このため、スレッドの並列度を算出する為の消費電力を削減することができる。
【００９２】
（コア減少判定処理）
図１３は、第１の実施形態にかかるコア減少判定処理のフローチャートである。
【００９３】
ここでは、ＣＰＵ１０１の「コア０」１０１１及び「コア１」１０１２の双方が稼動していることを前提とし、「コア１」１０１２の稼働を停止させるか否かの判断プロセスを説明する。
【００９４】
図１３に示すように、ＣＰＵコア制御判定部２０２は、ＣＰＵコア制御パラメータ情報３０２を参照して、ＣＰＵ１０１の稼働コアが２つであるときの制御パラメータを取得する（ステップＳ０４１）。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵコア制御パラメータ情報３０２の「継続時間しきい値」、「コア減少実行キュー長しきい値」を、制御パラメータとして取得する。
【００９５】
次に、ＣＰＵコア制御判定部２０２は、システム状態情報３０５を参照して、スレッドの実行キュー長が「コア減少実行キュー長しきい値」よりも小さいか否かを判断する（ステップＳ０４２）。本実施形態では、「コア減少実行キュー長しきい値」を「１．２」とする。
【００９６】
ここで、スレッドの実行キュー長が「コア減少実行キュー長しきい値」よりも小さいと判断されない場合（ステップＳ０４２のＮｏ）、即ちスレッドの実行キュー長が１．２以上であると判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０４６）、即ち０（ｓｅｃ）に設定して、本実施形態にかかるコア減少判定処理を終了させる。
【００９７】
一方、スレッドの実行キュー長が「コア減少実行キュー長しきい値」よりも小さいと判断された場合（ステップＳ０４２のＹｅｓ）、即ちスレッドの実行キュー長が１．２よりも小さいと判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２０９からの時刻情報に基づき、条件継続時間を更新する（ステップＳ０４３）。
【００９８】
次に、ＣＰＵコア制御判定部２０２は、条件継続時間が「継続時間しきい値」よりも大きいか否かを判断する（ステップＳ０４４）。本実施形態では、「継続時間しきい値」を「３００（ｍｓ）」とする。
【００９９】
ここで、条件継続時間が「継続時間しきい値」よりも大きいと判断されない場合（ステップＳ０４４のＮｏ）、即ち条件継続時間が３００（ｍｓ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア減少判定処理を終了させる。
【０１００】
一方、条件継続時間が「継続時間しきい値」よりも大きいと判断された場合（ステップＳ０４４のＹｅｓ）、即ち条件継続時間が３００（ｍｓ）よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の「コア１」１０１２の稼働を停止、即ちＣＰＵ１０１の稼働コアを減少させる（ステップＳ０４５）。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「０」に更新する。「ｃｐｕ１／ｏｎｌｉｎｅ」を「０」に更新すると、ＣＰＵ状態制御部２０８からＣＰＵ周波数／状態設定部２０６に「コア１」１０１２のＯＦＦ指示が通知され、「コア１」１０１２の稼働が停止することとなる。
【０１０１】
［第２の実施形態］
以下、図１４〜図１７を参照して、第２の実施形態にかかる携帯情報端末１００Ａを説明する。
【０１０２】
（携帯情報端末１００Ａのハードウェア構成）
図１４は、第２の実施形態にかかる携帯情報端末１００Ａのハードウェア構成の概略図である。
【０１０３】
第１の実施形態にかかる携帯情報端末１００のＣＰＵ１０１は、「コア０」１０１１及び「コア１」１０１２を有するが、図１４に示すように、第２の実施形態にかかる携帯情報端末１００ＡのＣＰＵ１０１Ａは、さらに、「コア２」１０１３及び「コア３」１０１４を有する。
【０１０４】
（携帯情報端末１００Ａの機能ブロック）
図１５は、第２の実施形態にかかる携帯情報端末１００Ａの機能ブロックの概略図である。
【０１０５】
本実施形態では、４コアを有するＣＰＵ１０１ＡのＣＰＵコア制御判定処理を実現する為に、ＣＰＵコア制御判定部２０２Ａ、ＣＰＵコア制御パラメータ情報３０２Ａ、システム状態情報３０５Ａ、を備える。
【０１０６】
ＣＰＵコア制御判定部２０２Ａ、ＣＰＵコア制御パラメータ情報３０２Ａ、システム状態情報３０５Ａは、何れもＣＰＵ１０１Ａが、ＡｎｄｒｏｉｄのＯＳカーネルもしくはアプリケーションフレームワーク／ライブラリを実行することで実現される。なお、ＣＰＵコア制御パラメータ情報３０２Ａ及びシステム状態情報３０５Ａは、何れも補助メモリ１０３に構築される。
【０１０７】
（ＣＰＵコア制御パラメータ情報３０２Ａ）
図１６は、第２の実施形態にかかるＣＰＵコア制御パラメータ情報３０２Ａの概略図である。
【０１０８】
図１６に示すように、本実施形態にかかるＣＰＵコア制御パラメータ情報３０２Ａは、第１の実施形態にかかるＣＰＵコア制御パラメータ情報３０２の制御パラメータに加えて、さらに、稼働コア数が「３」及び「４」のときの制御パラメータを記憶する。
【０１０９】
（システム状態情報３０５Ａ）
図１７は、第２の実施形態にかかるシステム状態情報３０５Ａの概略図である。
【０１１０】
図１７に示すように、本実施形態にかかるシステム状態情報３０５Ａは、第１の実施形態にかかるシステム状態情報３０５の「Ｏｎｌｉｎｅ（オンラインＣＰＵコア番号）」、「Ｏｆｆｌｉｎｅ（オフラインＣＰＵコア番号）」の何れかに、「コア０」１０１１のコア番号「０」及び「コア１」１０１２のコア番号「１」だけでなく、「コア２」１０１３のコア番号「２」及び「コア３」１０１４のコア番号「３」を記憶する。
【０１１１】
（コア増加判定処理）
第１の実施形態にかかるＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コアが１つであるか否かを判断する（ステップＳ０１１）。ここで、ＣＰＵ１０１の稼働コアが１つであると判断された場合（ステップＳ０１１のＹｅｓ）、ＣＰＵコア制御判定部２０２は、稼働コアが１つであるときの制御パラメータを取得する（ステップＳ０１２）。
【０１１２】
これに対し、本実施形態にかかるＣＰＵコア制御判定部２０２Ａは、ＣＰＵ１０１の稼働コアが１つであるか否かを判断するのではなく、システム状態情報３０５Ａを参照して、ＣＰＵ１０１の稼働コアの個数を取得する。続いて、本実施形態にかかるＣＰＵコア制御判定部２０２Ａは、稼働コアが１つであるときの制御パラメータを取得するのではなく、ＣＰＵコア制御パラメータ情報３０２Ａを参照して、稼働コアの個数に紐付けられた制御パラメータを取得する。
【０１１３】
以降、稼働コアの個数に紐付けられた制御パラメータを使用して、第１の実施形態と同様、コア増加判定処理及びコア減少判定処理を実行する。
【０１１４】
以上のように、本発明は、デュアルコアＣＰＵにのみ適用されるものではなく、クアッドコアＣＰＵをはじめとするマルチコアＣＰＵに適用されるものである。
【０１１５】
なお、第１、第２の実施形態では、携帯情報端末１００として、例えばスマートフォンやタブレットＰＣ等を想定しているが、本発明は、これに限定されるものではない。例えばマルチコアＣＰＵを搭載していれば、例えばデスクトップＰＣやサーバ装置にも本発明を適用することができる。
【符号の説明】
【０１１６】
１００：携帯情報端末
１００Ａ：携帯情報端末
１０１：ＣＰＵ
１０１Ａ：ＣＰＵ
１０２：メインメモリ
１０３：補助メモリ
１０４：クロック供給回路
１０５：電圧供給回路
１０６：ディスプレイ
１０７：タッチスクリーン
１０８：バス
２０１：アプリ実行管理部
２０２：ＣＰＵコア制御判定部
２０２Ａ：ＣＰＵコア制御判定部
２０３：システム負荷計測部
２０４：スレッド負荷計測部
２０５：ＣＰＵ周波数制御部
２０６：ＣＰＵ周波数／状態設定部
２０７：プロセス／システム管理部
２０８：ＣＰＵ状態制御部
２０９：タイマ部
３０１：アプリ／サービス動作情報
３０２：ＣＰＵコア制御パラメータ情報
３０２Ａ：ＣＰＵコア制御パラメータ情報
３０３：ＣＰＵ制御情報
３０４：プロセス動作情報
３０５：システム状態情報
３０５Ａ：システム状態情報
１０１１：コア０
１０１２：コア１
１０１３：コア２
１０１４：コア３
【図１】
2014164361.tif 000003
【図２】
2014164361.tif 000004
【図３】
2014164361.tif 000005
【図４】
2014164361.tif 000006
【図５】
2014164361.tif 000007
【図６】
2014164361.tif 000008
【図７】
2014164361.tif 000009
【図８】
2014164361.tif 000010
【図９】
2014164361.tif 000011
【図１０】
2014164361.tif 000012
【図１１】
2014164361.tif 000013
【図１２】
2014164361.tif 000014
【図１３】
2014164361.tif 000015
【図１４】
2014164361.tif 000016
【図１５】
2014164361.tif 000017
【図１６】
2014164361.tif 000018
【図１７】
2014164361.tif 000019