(57)【要約】【課題】プロセッサの動作周波数をより好適に制御する。【解決手段】本情報処理装置は、アプリケーションプログラム内の処理単位であるアクティビティの起動処理開始から起動処理終了までの動作時間を前記アクティビティの識別情報と対応付けて記憶する記憶部と、前記アクティビティの動作時間を測定し、測定した前記動作時間を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させる測定部と、プロセッサの動作周波数を制御する制御部と、を備え、前記制御部は、起動されたアクティビティに対応する前記動作時間が前記記憶部に記憶されている場合に、前記動作時間の間における前記プロセッサの動作周波数を上昇させる。【選択図】図１
2020060921.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラム内の処理単位であるアクティビティの起動処理開始から起動処理終了までの動作時間を前記アクティビティの識別情報と対応付けて記憶する記憶部と、
前記アクティビティの動作時間を測定し、測定した前記動作時間を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させる測定部と、
プロセッサの動作周波数を制御する制御部と、を備え、
前記制御部は、起動されたアクティビティに対応する前記動作時間が前記記憶部に記憶されている場合に、前記動作時間の間における前記プロセッサの動作周波数を上昇させる、
情報処理装置。
【請求項２】
前記制御部が前記プロセッサの動作周波数を上昇させる処理は、前記プロセッサの動作周波数を設定可能な範囲で最大にすることを含む、
請求項１に記載の情報処理装置。
【請求項３】
前記制御部が前記プロセッサの動作周波数を上昇させる処理は、前記プロセッサの最低動作周波数を上昇させることを含む、
請求項１または２に記載の情報処理装置。
【請求項４】
前記測定部は、前記動作時間を測定したアクティビティの識別情報が前記記憶部に記憶されている場合、前記記憶部において前記アクティビティに対応付けられた動作時間を測定した動作時間に更新する、
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記記憶部は、さらに、前記プロセッサの処理能力の制御情報を前記アクティビティの負荷毎に記憶し、
前記測定部は、さらに、前記起動処理終了後から前記アクティビティの動作終了までの負荷を測定し、測定した前記負荷を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させ、
前記制御部は、さらに、測定した前記負荷に基づいて前記制御情報を選定し、選定した制御情報にしたがって、前記プロセッサを制御する、
請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
前記測定部は、前記プロセッサの動作周波数の増加に対する消費電力の増加の割合が所定値よりも高くなる動作周波数に基づいて、前記負荷を測定する、
請求項５に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
アプリケーションプログラムに応じて、または、ユーザによる操作速度に応じてプロセッサの動作周波数を制御する情報処理装置が知られている（例えば、特許文献１、２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１８２５１２号公報
【特許文献２】特開２０１５−０４３１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
アプリケーションプログラムの起動処理が開始されてから起動処理が終了するまでの起動処理時間は、起動時に読み込まれる設定ファイルサイズの増減や、起動時に読み込まれる機能追加プログラム（アドイン）の増減等によって、変動する。また、アプリケーションプログラムによっては、動作中の負荷が常に変動するものや、ゲームのようにシーンが切替わると負荷が急激に変動するものもある。アプリケーションの種類毎やユーザによる操作速度に応じてプロセッサの動作周波数を制御する技術では、起動処理時間の変動や負荷の変動に対して改善の余地がある。
【０００５】
開示の技術の１つの側面は、プロセッサの動作周波数をより好適に制御できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
開示の技術の１つの側面は、次のような情報処理装置によって例示される。本情報処理装置は、アプリケーションプログラム内の処理単位であるアクティビティの起動処理開始から起動処理終了までの動作時間を前記アクティビティの識別情報と対応付けて記憶する記憶部と、前記アクティビティの動作時間を測定し、測定した前記動作時間を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させる測定部と、プロセッサの動作周波数を制御する制御部と、を備え、前記制御部は、起動されたアクティビティに対応する前記動作時間が前記記憶部に記憶されている場合に、前記動作時間の間における前記プロセッサの動作周波数を高める。
【発明の効果】
【０００７】
本情報処理装置は、プロセッサの動作周波数をより好適に制御することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１実施形態に係るスマートフォンの構成の一例を示す図である。
【図２】図２は、図１に例示される各構成要素の情報の授受を模式的に示す図である。
【図３】図３は、動作履歴保存域に格納される動作履歴テーブルの一例を示す図である。
【図４】図４は、ＯＳの階層構造の一例を示す図である。
【図５】図５は、第１実施形態に係るスマートフォンの処理フローの一例を示す図である。
【図６】図６は、第１実施形態の効果を例示する図である。
【図７】図７は、アクティビティの起動処理時間が長くなった場合の一例を示す図である。
【図８】図８は、第２実施形態に係るスマートフォンの構成の一例を示す図である。
【図９】図９は、図８に例示される各構成要素の情報の授受を模式的に示す図である。
【図１０】図１０は、パラメータ保存域に記憶されるガバナー選定テーブルの一例である。
【図１１】図１１は、パラメータ保存域に格納される負荷テーブルの一例を示す図である。
【図１２】図１２は、ＣＰＵの消費電力と動作周波数との対応の一例を示すグラフである。
【図１３】図１３は、第２実施形態における、動作履歴保存域に格納される動作履歴テーブルの一例を示す図である。
【図１４】図１４は、ガバナー調整部が生成したヒストグラムの一例を示す図である。
【図１５】図１５は、第２実施形態に係る動作履歴保存処理の一例を示す図である。
【図１６】図１６は、第２実施形態に係るガバナーテーブル選択処理の一例を示す図である。
【図１７】図１７は、第２実施形態の効果を例示する図である。
【発明を実施するための形態】
【０００９】
以下、実施形態について説明する。以下に示す実施形態の構成は例示であり、開示の技術は実施形態の構成に限定されない。本実施形態に係る情報処理装置は、例えば、以下の構成を有する。
【００１０】
（情報処理装置の構成）
アプリケーションプログラム内の処理単位であるアクティビティの起動処理開始から起動処理終了までの起動処理時間を前記アクティビティの識別情報と対応付けて記憶する記憶部と、
前記アクティビティの起動処理時間を測定し、測定した前記起動処理時間を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させる測定部と、
プロセッサの動作周波数を制御する制御部と、を備え、
前記制御部は、起動されたアクティビティに対応する前記起動処理時間が前記記憶部に記憶されている場合に、前記起動処理時間の間における前記プロセッサの動作周波数を上昇させる、
情報処理装置。
【００１１】
プロセッサは、例えば、Central Processing Unit（ＣＰＵ）、マイクロプロセッサユ
ニット（ＭＰＵ）、Graphics Processing Unit（ＧＰＵ）等の演算処理を行う集積回路である。アクティビティとは、例えば、アプリケーションプログラムがグラフィカルユーザーインタフェース（ＧＵＩ）を有する場合、各ウィンドウ画面の描画開始から次のウィンドウ画面に遷移したり当該ウィンドウ画面が終了されたりするまでが一つのアクティビティとなる。アクティビティの起動処理開始から起動処理終了までの起動処理時間は、アクティビティごとに異なる。プリインストールされているアプリケーションプログラムについては、製品出荷前にあらかじめアクティビティごとの起動処理時間を測定して記憶部に記憶させることも可能であるが、ユーザがインストールするアプリケーションプログラムについてはこのような対応はできない。
【００１２】
本実施形態では、起動されたアクティビティの起動処理開始から起動処理終了までの起動処理時間を取得部が取得し、取得した起動処理時間を記憶部に記憶する。制御部は、起動されたアクティビティの前記起動処理時間が記憶部に記憶されている場合、前記起動処理時間におけるプロセッサの動作周波数を上昇させることで、アクティビティの起動処理を短縮することができる。プロセッサの動作周波数を上昇させることは、プロセッサの設定可能な範囲で動作周波数を最大化したり、プロセッサの最低動作周波数を上昇させたりすることを含んでもよい。
【００１３】
本実施形態は、次の特徴を有してもよい。前記測定部は、前記動作時間を測定したアクティビティの識別情報が前記記憶部に記憶されている場合、前記記憶部において前記アクティビティに対応付けられた動作時間を測定した動作時間に更新する。このような特徴を有することで、アクティビティの起動処理時間が変動した場合でも、プロセッサの動作周波数を上昇させる期間を変動した起動処理時間に追随させることができる。
【００１４】
本実施形態は、次の特徴を有してもよい。前記記憶部は、さらに、前記プロセッサの処理能力の制御情報を前記アクティビティの負荷毎に記憶し、前記測定部は、さらに、前記起動処理終了後から前記アクティビティの動作終了までの負荷を測定し、測定した前記負荷を前記アクティビティの識別情報と対応付けて前記記憶部に記憶させ、前記制御部は、さらに、測定した前記負荷に基づいて前記制御情報を選定し、選定した制御情報にしたがって、前記プロセッサを制御する。
【００１５】
制御情報には、例えば、プロセッサの負荷率とプロセッサの動作周波数とが対応付けられており、アクティビティの負荷に応じて複数用意される。制御部は、測定部が測定したアクティビティの負荷に基づいて制御情報を選定する。制御部は、例えば、制御情報において現在のプロセッサの負荷率に対応付けられた動作周波数にプロセッサを設定する。このような処理により、アクティビティの動作時における負荷に応じてプロセッサの動作周波数と消費電力とのバランスを好適に保つことが可能となる。
【００１６】
本実施形態は、次の特徴を有してもよい。前記測定部は、前記プロセッサの動作周波数の増加に対する消費電力の増加の割合が所定値よりも高くなる動作周波数に基づいて、前記負荷を測定する。プロセッサの消費電力は、動作周波数の上昇にしたがって線形に増加するのではなく、ある動作周波数において消費電力の増加率は高まる。このような特徴を有することで、プロセッサの動作周波数と諸費電力の特性に応じて制御情報を選定できる。
【００１７】
以下、図面を参照して本実施形態についてさらに説明する。
【００１８】
＜第１実施形態＞
図１は、第１実施形態に係るスマートフォンの構成の一例を示す図である。図２は、図１に例示される各構成要素の情報の授受を模式的に示す図である。第１実施形態に係るスマートフォン１は、アプリケーションプロセッサ１０、記憶部１１、クロックコントローラ１２、電源制御部１３、バッテリ１４、通信部１５、表示部１６および入力部１７を備える。
【００１９】
記憶部１１は、アプリケーションプロセッサ１０からアクセスされる記憶部として例示される。記憶部１１は、Random Access Memory（ＲＡＭ）およびRead Only Memory（ＲＯＭ）を含む。記憶部１１は、動作履歴保存域１１２を含む。記憶部１１には、各種のアプリケーションプログラム１１３およびOperating System（ＯＳ）１１４も記憶される。
【００２０】
記憶部１１は、各種のプログラムおよび各種のデータを読み書き自在に記録媒体に格納
する補助記憶部を含んでもよい。補助記憶部は外部記憶装置とも呼ばれる。補助記憶部は、例えば、Erasable Programmable ROM（ＥＰＲＯＭ）、ソリッドステートドライブ（Solid State Drive、ＳＳＤ）、ハードディスクドライブ（Hard Disk Drive、ＨＤＤ）等で
ある。また、補助記憶部は、例えば、Compact Disc（ＣＤ）ドライブ装置、Digital Versatile Disc（ＤＶＤ）ドライブ装置、Blu-ray（登録商標）Disc（ＢＤ）ドライブ装置等
である。
【００２１】
動作履歴保存域１１２には、アプリケーションプログラム１１３のアクティビティの起動処理開始から起動処理終了までの負荷をアクティビティごとに記憶する。ここで、アクティビティとはアプリケーションプログラム１１３の処理単位である。例えば、アプリケーションプログラム１１３がグラフィカルユーザーインタフェース（ＧＵＩ）を有する場合、各ウィンドウ画面の描画開始から次のウィンドウ画面に遷移するまでが一つのアクティビティとなる。また、アクティビティがウィンドウ画面の場合、起動処理終了の状態は、ウィンドウ画面の描画が完了した状態である。また、起動処理終了の状態は、アクティビティがユーザ等からの操作指示を受け付けられる状態に遷移した状態であってもよい。
【００２２】
図３は、動作履歴保存域に格納される動作履歴テーブルの一例を示す図である。動作履歴保存域１１２に格納される動作履歴テーブル１１２１では、「アクティビティ名」と「起動処理時間」とが対応付けられる。「アクティビティ名」には、アクティビティの名称が格納される。なお、「アクティビティ名」に格納される情報は、アクティビティを識別する情報であれば名称に限定されない。「アクティビティ名」には、例えば、アクティビティを一意に識別するＩＤ等が格納されてもよい。「起動処理時間」には、アクティビティの起動処理開始から起動処理終了までの処理時間が格納される。動作履歴保存域１１２は、「記憶部」の一例である。
【００２３】
アプリケーションプログラム１１３は、ＣＰＵ１０１によって実行される様々なプログラムである。アプリケーションプログラム１１３としては、インターネットブラウザ、メールクライアント、Social Networking Service（ＳＮＳ）クライアント、ゲーム等を挙
げることができる。アプリケーションプログラム１１３は、ユーザによって起動されると、ＯＳ１１４に起動通知を送信する。また、アプリケーションプログラム１１３は、ユーザによって終了されると、終了通知をＯＳ１１４に送信する。
【００２４】
ＯＳ１１４は、スマートフォン１の入出力処理、プロセスのスケジュール管理、ハードウェアとソフトウェアとの間のインターフェース等を提供する基本ソフトウェアである。図４は、ＯＳの階層構造の一例を示す図である。図４では、ＣＰＵ１０１等を示すハードウェアの階層およびＯＳ１１４上で実行されるアプリケーションプログラム１１３の階層も例示される。
【００２５】
ＯＳ１１４は、カーネル１１４１とシステムサービス１１４２とを含む。カーネル１１４１は、スマートフォン１のハードウェアを抽象化し、アプリケーションプログラム１１３等のソフトウェアからハードウェア資源を利用可能にする。また、カーネル１１４１は、プロセスの制御、ＣＰＵ１０１の動作周波数の制御等の制御を可能にする。
【００２６】
システムサービス１１４２は、アプリケーションプログラム１１３の起動処理等を実行する。システムサービス１１４２は、アプリケーションプログラム１１３から起動通知を受信すると、当該アプリケーションの起動開始をカーネル１１４１に通知する。さらに、システムサービス１１４２は、当該アプリケーションプログラム１１３の起動処理を開始する。起動処理は、例えば、アプリケーションプログラム１１３のウィンドウ画面の描画処理を含む。システムサービス１１４２は、アプリケーションプログラム１１３の起動処理を完了すると、アプリケーションプログラム１１３の起動完了を示す完了通知をカーネ
ル１１４１に送信する。さらに、システムサービス１１４２は、アプリケーションプログラム１１３から終了通知を受信すると、当該アプリケーションプログラム１１３の終了をカーネル１１４１に通知する。
【００２７】
クロックコントローラ１２は、ＣＰＵ１０１の動作周波数（クロック周波数）の設定を行う。クロックコントローラ１２は、周波数制御部１０５からの指示にしたがって、ＣＰＵ１０１の動作周波数を設定する。
【００２８】
電源制御部１３は、バッテリ１４からアプリケーションプロセッサ１０に供給する電力を制御する。電源制御部１３は、周波数制御部１０５からの指示にしたがって、アプリケーションプロセッサ１０に供給する電力を制御する。バッテリ１４は、アプリケーションプロセッサ１０を含むスマートフォン１の各部に電力を供給する二次電池である。
【００２９】
通信部１５は、コンピュータネットワークのインターフェースである。通信部１５は、コンピュータネットワークを介して外部の装置と通信を行う。通信部１５は、例えば、Network Interface Card（ＮＩＣ）である。
【００３０】
表示部１６は、ＣＰＵ１０１で処理されるデータや記憶部１１に記憶されるデータを出力する出力部である。表示部１６は、例えば、Cathode Ray Tube（ＣＲＴ）ディスプレイ、Liquid Crystal Display（ＬＣＤ）、Plasma Display Panel（ＰＤＰ）、Electroluminescence（ＥＬ）パネル、有機ＥＬパネル等である。
【００３１】
入力部１７は、ユーザ等からの操作指示等を受け付ける。入力部１７は、例えば、キーボード、ポインティングデバイス、タッチパネル等である。
【００３２】
アプリケーションプロセッサ１０は、スマートフォン１の各種制御を行う。アプリケーションプロセッサ１０は、様々な処理を実行する集積回路を含むSystem on a Chip（ＳｏＣ）である。集積回路は、Large Scale Integrated circuit（ＬＳＩ）、Application Specific Integrated Circuit（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）
を含む。ＰＬＤは、例えば、Field-Programmable Gate Array（ＦＰＧＡ）を含む。アプ
リケーションプロセッサ１０は、例えば、ＣＰＵ１０１、スケジューラ１０２、ガバナー調整部１０３、ガバナー制御部１０４、周波数制御部１０５および電圧制御部１０６を含む。
【００３３】
ＣＰＵ１０１は、マイクロプロセッサユニット（ＭＰＵ）、プロセッサとも呼ばれる。ＣＰＵ１０１は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵ１０１がマルチコア構成を有していても良い。ＣＰＵ１０１は、例えば、記憶部１１に記憶されたアプリケーションプログラム１１３を実行する。ＣＰＵ１０１の動作周波数は、クロックコントローラ１２からの指示によって変更される。
【００３４】
ＣＰＵ１０１は、記憶部１１に記憶されたＯＳ１１４のカーネル１１４１を実行することで、スケジューラ１０２、ガバナー調整部１０３、ガバナー制御部１０４、周波数制御部１０５および電圧制御部１０６として動作する。
【００３５】
スケジューラ１０２は、ＣＰＵ１０１が実行する各プロセスのスケジューリングを行う。スケジューリングでは、各プロセスに割り当てるシステム資源の制御が行われる。システム資源は、例えば、ＣＰＵ１０１がプロセスを実行するプロセッサ時間、プロセスが通信に使用する通信帯域等である。スケジューリングでは、プロセスごとに優先度が設定されてもよい。スケジューラ１０２は、この場合、高い優先度が設定されたプロセスに対し
て優先的にシステム資源を割り当てる。
【００３６】
ガバナー調整部１０３は、動作履歴保存域１１２を参照して、アクティビティの起動処理開始から起動処理終了までの起動処理時間を取得する。ガバナー調整部１０３は、取得した起動処理時間をガバナー制御部１０４に通知する。ガバナー調整部１０３は、「測定部」の一例である。
【００３７】
ガバナー制御部１０４は、ガバナー調整部１０３から通知された起動処理時間の間、ＣＰＵ１０１の周波数を設定可能な範囲で最大のクロック（以下、最大クロックとも称する）にするように周波数制御部１０５を制御する。この制御では、例えば、ガバナー制御部１０４から最大クロックが周波数制御部１０５に通知される。ガバナー制御部１０４は、「制御部」の一例である。
【００３８】
周波数制御部１０５は、ガバナー制御部１０４からクロック周波数の指定を受け付ける。周波数制御部１０５は、指定されたクロック周波数をクロックコントローラ１２に通知し、クロックコントローラ１２に指定されたクロック周波数を供給させる。
【００３９】
電圧制御部１０６は、電源制御部１３が供給する電圧を制御する。電圧制御部１０６は、バッテリ１４の残量を監視してもよい。
【００４０】
（処理フロー）
図５は、第１実施形態に係るスマートフォンの処理フローの一例を示す図である。以下、図５を参照して、第１実施形態に係るスマートフォン１の処理フローの一例について説明する。
【００４１】
Ｔ１では、ガバナー調整部１０３は、ＯＳ１１４のシステムサービス１１４２から起動されたアプリケーションプログラム１１３のアクティビティ名を取得する。Ｔ２では、ガバナー調整部１０３は、Ｔ１で取得したアクティビティ名が動作履歴テーブル１１２１に格納されているか否かを判定する。格納されている場合（Ｔ２でＹＥＳ）、処理はＴ３に進められる。格納されていない場合（Ｔ２でＮＯ）、処理はＴ５に進められる。
【００４２】
Ｔ３では、ガバナー調整部１０３は、動作履歴テーブル１１２１において、Ｔ１で取得したアクティビティ名に対応付けられた起動処理時間を取得する。Ｔ４では、ガバナー調整部１０３は、Ｔ３で取得した起動処理時間をガバナー制御部１０４に通知する。ガバナー制御部１０４は、通知された起動処理時間の間、ＣＰＵ１０１の動作クロックを最大クロックとするよう周波数制御部１０５を制御する。周波数制御部１０５は、クロックコントローラ１２を制御して、通知された起動処理時間の間、ＣＰＵ１０１の動作クロックを最大クロックに設定させる。
【００４３】
Ｔ５では、ガバナー調整部１０３は、Ｔ１で起動されたアプリケーションプログラム１１３の起動処理時間を測定する。起動処理時間の測定は、例えば、システムサービス１１４２から起動通知が通知されてから完了通知が通知されるまでの時間を測定することで行われる。
【００４４】
Ｔ６では、ガバナー調整部１０３は、Ｔ１で取得したアクティビティ名とＴ５で測定した起動処理時間とを対応付けて動作履歴テーブル１１２１に格納する。既に同名のアクティビティ名が動作履歴テーブル１１２１に登録済みである場合、当該アクティビティ名に対応付けられた起動処理時間をＴ５で測定した起動処理時間に更新すればよい。
【００４５】
＜第１実施形態の作用効果＞
図６は、第１実施形態の効果を例示する図である。図６では、アクティビティの起動時における動作クロックおよび負荷率の変動の一例が示される。図６の縦軸はＣＰＵ１０１の動作周波数または負荷率を示し、横軸は時間を示す。また、ＣＰＵ１０１の設定可能な範囲における最大クロックを「ＭＡＸ」で示し、ＣＰＵ１０１の設定可能な範囲における最小クロックを「ＭＩＮ」で示す。図６（Ａ）は、アクティビティの初回起動時の一例を示し、図６（Ｂ）はＣＰＵ１０１が最大クロックで動作する期間をアクティビティの起動処理開始から起動処理終了までに延ばした場合の一例を示す。図６（Ａ）では、アクティビティの起動処理開始から起動処理完了までの起動処理時間が１０００ｍｓとなっている。また、図６（Ｂ）では、アクティビティの起動処理開始から起動処理完了までの起動処理時間が９００ｍｓとなっている。図６（Ａ）、（Ｂ）を比較すると理解できるように、最大クロックで動作する期間を起動処理開始から起動処理終了までに延長することで、アクティビティの起動処理時間を短縮できることがわかる。また、ＣＰＵ１０１が最大クロックで動作する期間が起動処理終了までとなっているため、アクティビティが動作中に継続してＣＰＵ１０１を最大クロックで動作させる場合と比較して、ＣＰＵ１０１の消費電力増大を抑制できる。
【００４６】
第１実施形態では、起動されたアクティビティの起動処理時間が動作履歴テーブル１１２１に格納されていない場合、アクティビティの起動処理時間を測定し、測定した起動処理時間を動作履歴テーブル１１２１に格納する。当該アクティビティが次に起動されると、動作履歴テーブル１１２１に格納された起動処理時間の間、ＣＰＵ１０１が最大クロックで動作する。そのため、第１実施形態によれば、起動処理時間が未知であったアクティビティに対しても、起動処理時間を短縮することができる。
【００４７】
アクティビティの起動処理時間は、アプリケーションプログラム１１３の起動処理において読み込むファイルサイズの増減や組み込まれるアドオンの増減等により、変動する。図７は、アクティビティの起動処理時間が長くなった場合の一例を示す図である。図７（Ａ）では、起動処理時間が長くなった結果、ＣＰＵ１０１が最大クロックで動作する最大クロック動作期間よりもアクティビティの起動処理時間が長くなった場合の一例を示す。また、図７（Ｂ）は、長くなった起動処理時間に応じてＣＰＵ１０１が最大クロックで動作する最大クロック動作時間を延ばした場合の一例を示す。第１実施形態では、動作履歴テーブル１１２１に起動処理時間が格納済みのアクティビティについても、起動処理時間の測定および動作履歴テーブル１１２１への格納を行う。そのため、第１実施形態によれば、図７（Ａ）に例示されるように起動処理時間が変動しても、動作履歴テーブル１１２１に格納された起動処理時間は、変動した起動処理時間に更新される。そのため、変動した起動処理時間の間、ＣＰＵ１０１を最大クロックで動作させることが可能となり、図７（Ｂ）のように起動処理時間を短縮することができる。
【００４８】
なお、第１実施形態では、起動処理時間の間におけるＣＰＵ１０１の動作周波数を最大クロックとすることで起動処理時間を短縮したが、起動処理時間の間におけるＣＰＵ１０１の最低動作周波数を上昇させることで起動処理時間を短縮してもよい。
【００４９】
＜第２実施形態＞
第１実施形態では、アクティビティの起動処理の間、ＣＰＵ１０１が最大クロックで動作した。第２実施形態では、アクティビティの起動処理が完了した後の負荷の変動に応じて、ＣＰＵの動作クロックが設定される。第１実施形態と共通の構成要素については同一の符号を付し、その説明は省略される。以下、図面を参照して、第２実施形態について説明する。
【００５０】
図８は、第２実施形態に係るスマートフォンの構成の一例を示す図である。図９は、図８に例示される各構成要素の情報の授受を模式的に示す図である。第２実施形態に係るス
マートフォン１ａは、パラメータ保存域１１１、動作履歴保存域１１２ａ、ガバナー調整部１０３ａおよびガバナー制御部１０４ａを備える点で、第１実施形態に係るスマートフォン１とは異なる。
【００５１】
パラメータ保存域１１１は、ガバナー制御に用いられる各種パラメータが保存される。図１０は、パラメータ保存域に記憶されるガバナー選定テーブルの一例である。図１０に例示されるガバナー選定テーブル１１１１は、「ガバナーパラメータ」、「パターン」、「最大周波数」、「最小周波数」および「ＣＰＵパラメータ」の各項目を含む。「ガバナーパラメータ」には、負荷毎（図１０の例では、高負荷、中負荷、低負荷）に対応付けられる、最大周波数、最小周波数およびＣＰＵパラメータの組を一意に識別する番号が格納される。「パターン」には、ＣＰＵ１０１の負荷の状態を示す状態が格納される。図１０の例では、「パターン」には、「高負荷」、「中負荷」、「低負荷」の何れかが格納される。「最大周波数」には、ＣＰＵ１０１を駆動する周波数の最大値が格納される。「最小周波数」には、ＣＰＵ１０１を駆動する周波数の最小値が格納される。すなわち、ＣＰＵ１０１の周波数は、「最小周波数」に格納された周波数から「最大周波数」に格納された周波数までの間で遷移可能である。「ＣＰＵパラメータ」には、ＣＰＵ１０１に適用する負荷テーブルを識別するＩＤが格納される。負荷テーブルについては図１１を参照して後述する。
【００５２】
図１１は、パラメータ保存域に格納される負荷テーブルの一例を示す図である。負荷テーブル１１１２は、ガバナー選定テーブル１１１１に記憶される「パターン」毎に用意される。図１１（Ａ）は、ガバナー選定テーブル１１１１における「パターン」が「高負荷」の場合に用いられる負荷テーブル１１１２ａの一例である。図１１（Ｂ）は、ガバナー選定テーブル１１１１における「パターン」が「低負荷」の場合に用いられる負荷テーブル１１１２ｂの一例である。負荷テーブル１１１２は、「動作周波数」および「負荷」の各項目を含む。「動作周波数」には、ＣＰＵ１０１を動作させるクロック周波数が格納される。「負荷」には、ＣＰＵ１０１の負荷率が格納される。負荷率は、例えば、百分率（％）で示される。負荷テーブル１１１２は、「制御情報」の一例である。
【００５３】
第２実施形態において、「高負荷」、「中負荷」、「低負荷」の分類は、ＣＰＵ１０１の消費電力を考慮して決定される。ＣＰＵ１０１の消費電力は、動作周波数によって異なる。図１２は、ＣＰＵの消費電力と動作周波数との対応の一例を示すグラフである。図１２のグラフでは、縦軸がＣＰＵ１０１の消費電力を示し、横軸が動作周波数を示す。図１２を参照すると理解できるように、ＣＰＵ１０１の消費電力はＣＰＵ１０１の動作周波数に比例して変化するわけではなく、ある動作周波数を境にして増加の割合が高くなる。本実施形態ではこの境を変化点Ｒと称し、この変化点Ｒを考慮して「高負荷」、「中負荷」、「低負荷」の分類が決定される。変化点Ｒは、スマートフォン１ａの設計時等において試験によって定めればよい。
【００５４】
動作履歴保存域１１２ａは、アクティビティごとの動作時間と負荷情報とを対応付けて記憶する。図１３は、第２実施形態における、動作履歴保存域に格納される動作履歴テーブルの一例を示す図である。動作履歴テーブル１１２１ａには、「アクティビティ名」、「動作時間」および「負荷情報」が対応付けて格納される。「アクティビティ名」は、動作履歴テーブル１１２１と同一であるため、説明を省略する。「動作時間」は、アクティビティの起動処理が完了してから、当該アクティビティが終了するまでの時間である。「負荷情報」には、アクティビティの負荷を示す情報が格納される。図１３に例示される「負荷情報」には、アクティビティの負荷を「高負荷」、「中負荷」、「低負荷」の三段階で示した情報が格納される。
【００５５】
ガバナー調整部１０３ａは、実行中のアクティビティの動作時間および動作時間中のア
クティビティの負荷を測定する。負荷の測定では、ガバナー調整部１０３ａは、例えば、アクティビティの負荷をＣＰＵ１０１の動作周波数ごとの頻度を示すヒストグラムを生成してもよい。
【００５６】
図１４は、ガバナー調整部が取得したヒストグラムの一例を示す図である。図１４において、縦軸は実行中のアクティビティ内におけるＣＰＵ１０１の動作周波数の割合を示し、横軸はＣＰＵ１０１の動作周波数を示す。図１４では、０．１ＧＨｚ間隔で動作周波数の割合が取得されているが、取得する間隔が０．１ＧＨｚに限定されるわけではない。ＣＰＵの種類によって設定可能な動作周波数は異なるため、ガバナー調整部１０３ａは、ＣＰＵに設定可能な動作周波数のそれぞれについて、動作周波数の割合を取得すればよい。
【００５７】
ガバナー調整部１０３ａは、生成したヒストグラムに基づいて、アクティビティの負荷を判定する。ガバナー調整部１０３ａは、例えば、生成したヒストグラムにおいて、変化点Ｒ未満の範囲でＣＰＵ１０１が動作している頻度が高ければ「低負荷」と判定し、変化点Ｒを超えた範囲でＣＰＵ１０１が動作している頻度が高ければ「高負荷」と判定し、動作周波数それぞれにおけるＣＰＵ１０１が動作している頻度が同程度であれば「中負荷」と判定してもよい。また、ガバナー調整部１０３ａは、消費電力の低減を目的とする場合と処理速度の向上を目的とする場合とで、「高負荷」、「中負荷」、「低負荷」を判定する基準を変更してもよい。ガバナー調整部１０３ａは、アクティビティの動作時間およびアクティビティの負荷をアクティビティ名と対応付けて動作履歴テーブル１１２１ａに格納する。
【００５８】
また、ガバナー調整部１０３ａは、起動処理が完了したアクティビティの「負荷情報」を動作履歴テーブル１１２１ａから取得する。ガバナー調整部１０３ａは、取得した「負荷情報」をガバナー制御部１０４ａに通知する。
【００５９】
ガバナー制御部１０４ａは、パラメータ保存域１１１を参照して、ガバナー調整部１０３から通知された「負荷情報」に対応するガバナーテーブルを取得する。ガバナー制御部１０４ａは、取得したガバナーテーブルにしたがって、周波数制御部１０５の制御を行う。
【００６０】
（処理フロー）
図１５は、第２実施形態に係る動作履歴保存処理の一例を示す図である。図５と同一の処理には同一の符号を付し、その説明を省略する。以下、図１５を参照して、第２実施形態に係る動作履歴保存処理の一例について説明する。
【００６１】
Ｔ１１では、ガバナー調整部１０３ａは、アクティビティの起動処理終了時刻を取得する。起動処理終了時刻は、すなわち、ユーザが当該アクティビティを操作可能な状態となった時刻ということができる。ガバナー調整部１０３ａは、上述の通り、システムサービス１１４２からの完了通知によってアクティビティの起動処理終了を検知できる。
【００６２】
Ｔ１２では、ガバナー調整部１０３ａは、ＣＰＵ１０１の動作周波数の情報を取得する。動作周波数の情報は、動作周波数と、その動作周波数が継続する時間を対応付けて取得すればよい。ガバナー調整部１０３ａは、例えば、０．８ＧＨｚが３秒継続し、１．０ＧＨｚが２秒継続し、１．３ＧＨｚが５秒継続し、０．９ＧＨｚが１秒継続する、といった情報を取得する。取得した情報は、例えば、記憶部１１に記憶させればよい。
【００６３】
Ｔ１３では、ガバナー調整部１０３ａは、アクティビティが終了したか否かを判定する。ガバナー調整部１０３ａは、例えば、システムサービス１０４２から終了通知を通知されることで、アクティビティの終了を検知できる。アクティビティが終了した場合（Ｔ１
３でＹＥＳ）、処理はＴ１４に進められる。アクティビティが終了していない場合（Ｔ１３でＮＯ）、処理はＴ１２に進められる。
【００６４】
Ｔ１４では、ガバナー調整部１０３ａは、アクティビティの終了時刻を取得する。Ｔ１５では、ガバナー調整部１０３ａは、Ｔ１１で取得した起動処理終了時刻とＴ１４で取得したアクティビティ終了時刻とを基に、アクティビティの動作時間を算出する。ガバナー調整部１０３ａは、算出した動作時間と、Ｔ１２で取得した情報とを基に、ＣＰＵ１０１の動作周波数の頻度を示すヒストグラムを生成する。すなわち、ガバナー調整部１０３ａは、動作時間のうち、ＣＰＵ１０１がどの動作周波数でどの程度の時間動作していたかを基にヒストグラムを生成すればよい。
【００６５】
Ｔ１６では、ガバナー調整部１０３ａは、生成したヒストグラムを基に、変化点Ｒを考慮して、アクティビティの負荷を測定する。Ｔ１７では、ガバナー調整部１０３ａは、Ｔ１６で決定したアクティビティの負荷とアクティビティ名とを対応付けて、動作履歴テーブル１１２１ａに格納する。
【００６６】
図１６は、第２実施形態に係るガバナーテーブル選択処理の一例を示す図である。図５と同一の処理には同一の符号を付し、その説明を省略する。以下、図１６を参照して、第２実施形態に係るガバナーテーブル選択処理の一例について説明する。
【００６７】
Ｔ２１では、ガバナー調整部１０３ａは、Ｔ１で取得したアクティビティ名が動作履歴テーブル１１２１ａに格納されているか否かを判定する。格納されている場合（Ｔ２１でＹＥＳ）、処理はＴ２２に進められる。格納されていない場合（Ｔ２１でＮＯ）、処理はＴ２５に進められる。
【００６８】
Ｔ２２では、ガバナー調整部１０３ａは、Ｔ１で取得したアクティビティ名に対応付けられた負荷情報を動作履歴テーブル１１２１ａから取得する。ガバナー調整部１０３ａは、取得した負荷情報をガバナー制御部１０４ａに通知する。
【００６９】
Ｔ２３では、ガバナー制御部１０４ａは、Ｔ２２で通知された負荷情報を基に、パラメータ保存域１１１を参照して、ガバナーテーブルを選定する。Ｔ２４では、ガバナー制御部１０４ａは、Ｔ２３で選定したガバナーテーブルにしたがって、周波数制御部１０５を制御することで、ＣＰＵ１０１に供給されるクロック周波数を制御する。
【００７０】
Ｔ２５では、ガバナー制御部１０４ａは、デフォルトのガバナーテーブルを選定する。デフォルトのガバナーテーブルとして、何れのガバナーテーブルを採用するかはあらかじめ決定しておけばよい。例えば、デフォルトのガバナーテーブルとして、「負荷情報」が「中負荷」のガバナーテーブルを採用してもよい。Ｔ２６では、図１５を参照して説明した動作履歴保存処理が実行される。
【００７１】
＜第２実施形態の効果＞
第２実施形態では、起動処理完了後のユーザによる操作が可能な状態におけるアクティビティの負荷が測定され、測定された負荷に基づいて、ガバナーテーブルが選定される。ガバナーテーブルは、図１１に例示されるように、アクティビティの負荷に応じて、負荷率と動作周波数とが対応付けられる。すなわち、高負荷のアクティビティが実行されている場合、ＣＰＵ１０１の負荷が低いうちにＣＰＵ１０１の動作周波数を上昇させることで、アクティビティの動作速度を改善できる。また、低負荷のアクティビティが実行されている場合、ＣＰＵ１０１の負荷がある程度高くなるまではＣＰＵ１０１の動作周波数の上昇を抑制することで、消費電力を低減する。
【００７２】
図１７は、第２実施形態の効果を例示する図である。図１７では、縦軸がＣＰＵ１０１の動作周波数を示し、横軸が時間を示す。図１７では、時刻ｔにおいて、低負荷のアクティビティ１から高負荷のアクティビティ２に遷移した状態が例示される。また、図１７において、点線は第２実施形態適用前の動作周波数の遷移を例示し、実線は第２実施形態適用後の動作周波数の遷移を例示する。図１７を参照すると理解できるように、第２実施形態を適用前の方が第２実施形態適用後よりも動作周波数の変動が大きい。すなわち、第２実施形態が適用されることで、低負荷のアクティビティ１における動作周波数を低い状態で遷移させ、高負荷のアクティビティ２における動作周波数を高い状態で遷移させることができる。そのため、第２実施形態によれば、アクティビティの起動完了後におけるアクティビティの動作速度とスマートフォン１ａの消費電力とのバランスを好適に保つことができる。
【００７３】
第２実施形態では、アプリケーションプログラム１１３単位ではなく、アプリケーションプログラム１１３内の処理単位であるアクティビティごとに負荷が測定され、ガバナーテーブルが選定される。そのため、例えば、ゲームプログラムのような、シーン毎における負荷の変動が激しいアプリケーションプログラム１１３に対しても、各アクティビティに対して好適なガバナーテーブルを適用できる。
【００７４】
第２実施形態において、動作履歴テーブル１１２１ａの「負荷情報」に格納される情報として「高負荷」、「中負荷」、「低負荷」の三段階で例示したが、「負荷情報」に格納される情報がこのような情報に限定されるわけではない。「負荷情報」に格納される情報は、例えば、ＣＰＵ１０１の負荷率、ＣＰＵ１０１の動作クロックのヒストグラム、または、アクティビティの負荷に応じて選定するガバナーパラメータであってもよい。
【００７５】
以上では、スマートフォンを用いて各実施形態について説明したが、開示の技術の適用対象がスマートフォンに限定されるわけではない。開示の技術は、ノート型パーソナルコンピュータ、タブレット型コンピュータ、ウェアラブルコンピュータ等の様々なバッテリを搭載した可搬型情報処理装置に対して好適である。
【００７６】
以上で開示した実施形態や変形例はそれぞれ組み合わせる事ができる。例えば、第１実施形態と第２実施形態とを組み合わせることで、アクティビティの起動処理中には最大クロックでＣＰＵ１０１を駆動し、起動処理を終えると、アクティビティに適したガバナーテーブルを適用してもよい。このような処理により、アクティビティの起動処理時間を短縮しつつ、アクティビティの動作速度とスマートフォンの消費電力とを好適なバランスに保つことができる。
【００７７】
<<コンピュータが読み取り可能な記録媒体>>
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させる情報処理プログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００７８】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compact Disc Read Only Memory（ＣＤ−ＲＯＭ）、Compact Disc - Recordable（ＣＤ−Ｒ）、Compact Disc - ReWriterable（ＣＤ−ＲＷ）、Digital Versatile Disc（ＤＶＤ）、ブ
ルーレイディスク（ＢＤ）、Digital Audio Tape（ＤＡＴ）、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体として
ハードディスクやＲＯＭ等がある。
【符号の説明】
【００７９】
１、１ａ・・・スマートフォン
１０・・・アプリケーションプロセッサ
１０１・・・ＣＰＵ
１０２・・・スケジューラ
１０３、１０３ａ・・・ガバナー調整部
１０４、１０４ａ・・・ガバナー制御部
１０５・・・周波数制御部
１０６・・・電圧制御部
１１・・・記憶部
１１１・・・パラメータ保存域
１１１１・・・ガバナー選定テーブル
１１２・・・動作履歴保存域
１１２１、１１２１ａ・・・動作履歴テーブル
１１３・・・アプリケーションプログラム
１１４・・・ＯＳ
１１４１・・・カーネル
１１４２・・・システムサービス
１２・・・クロックコントローラ
１３・・・電源制御部
１４・・・バッテリ
１５・・・通信部
１６・・・表示部
１７・・・入力部
【図１】
2020060921.tif 000003
【図２】
2020060921.tif 000004
【図３】
2020060921.tif 000005
【図４】
2020060921.tif 000006
【図５】
2020060921.tif 000007
【図６】
2020060921.tif 000008
【図７】
2020060921.tif 000009
【図８】
2020060921.tif 000010
【図９】
2020060921.tif 000011
【図１０】
2020060921.tif 000012
【図１１】
2020060921.tif 000013
【図１２】
2020060921.tif 000014
【図１３】
2020060921.tif 000015
【図１４】
2020060921.tif 000016
【図１５】
2020060921.tif 000017
【図１６】
2020060921.tif 000018
【図１７】
2020060921.tif 000019