TOP > 国内特許検索 > 電子機器、制御方法、及び、プログラム > 明細書

明細書 :電子機器、制御方法、及び、プログラム

発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2015-127869 (P2015-127869A)
公開日 平成27年7月9日(2015.7.9)
発明の名称または考案の名称 電子機器、制御方法、及び、プログラム
国際特許分類 G06F  12/00        (2006.01)
FI G06F 12/00 550E
請求項の数または発明の数 10
出願形態 OL
全頁数 15
出願番号 特願2013-272936 (P2013-272936)
出願日 平成25年12月27日(2013.12.27)
発明者または考案者 【氏名】鵜川 始陽
【氏名】橘田 頼之
【氏名】岩崎 英哉
出願人 【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
個別代理人の代理人 【識別番号】100082131、【弁理士】、【氏名又は名称】稲本 義雄
【識別番号】100121131、【弁理士】、【氏名又は名称】西川 孝
審査請求 未請求
テーマコード 5B060
Fターム 5B060AA10
5B060CC03
要約 【課題】GCの処理の実行時におけるCPUの動作周波数を適切に制御して、消費電力を抑えることができるようにする。
【解決手段】動作周波数制御部は、動作周波数を制御可能なCPUにより実行されるプログラムで使用するデータを記憶するメインメモリにおける当該プログラムが動的にメモリを確保する領域であるヒープに対する、ガベージコレクションの実行が開始される前あるいは途中に、CPUの動作周波数を下げる制御を行い、ガベージコレクションをCPUの動作周波数が下げられた状態で実行させ、ガベージコレクションの実行の途中あるいは終了したとき、CPUの動作周波数を元の周波数に戻す制御を行う。本発明は、例えば、スマートフォン等の携帯端末に適用することができる。
【選択図】図6
特許請求の範囲 【請求項1】
動作周波数を制御可能なCPUと、
前記CPUにより実行されるプログラムで使用するデータを記憶するメインメモリと、
前記メインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対するガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御を行い、前記ガベージコレクションを前記CPUの動作周波数が下げられた状態で実行させ、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御を行う動作周波数制御部と
を備える電子機器。
【請求項2】
前記動作周波数制御部は、前記ガベージコレクションの実行時間を予測可能な予測情報に基づいて、前記ガベージコレクションの実行時間を予測し、当該実行時間に応じて、前記CPUの動作周波数を制御する
請求項1に記載の電子機器。
【請求項3】
前記予測情報は、実行済みのガベージコレクションの実行時間に関する実行時間情報、及び、次に実行されるガベージコレクションの種類に関する種類情報の少なくとも1つを含む
請求項2に記載の電子機器。
【請求項4】
前記動作周波数制御部は、前記実行時間情報に基づいて、前記ガベージコレクションの実行時に、当該ガベージコレクションにおける前記CPUの動作周波数の制御方法を決定する
請求項3に記載の電子機器。
【請求項5】
前記動作周波数制御部は、前記実行時間情報に基づいて、前記プログラムの実行時に、前記ヒープに対するガベージコレクションにおける前記CPUの動作周波数の制御方法を決定する
請求項3に記載の電子機器。
【請求項6】
前記種類情報は、前記ガベージコレクションのアルゴリズムに関する情報、及び、前記ガベージコレクションの対象となる前記ヒープに関する情報の少なくとも1つを含む
請求項3に記載の電子機器。
【請求項7】
前記動作周波数制御部は、前記CPUの動作周波数を下げる制御が行われている間に、前記メインメモリを制御するメモリコントローラの動作周波数を上げる制御を行う
請求項1に記載の電子機器。
【請求項8】
前記動作周波数制御部は、前記CPUの動作電圧を制御可能である場合、前記CPUの動作周波数を下げる制御が行われている間に、前記CPUの動作電圧を下げる制御を行う
請求項1に記載の電子機器。
【請求項9】
動作周波数を制御可能なCPUと、前記CPUにより実行されるプログラムで使用するデータを記憶するメインメモリと、前記CPUの動作周波数を制御する動作周波数制御部とを有する電子機器の制御方法において、
前記動作周波数制御部が、
前記メインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対するガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御を行い、前記ガベージコレクションを前記CPUの動作周波数が下げられた状態で実行させ、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御を行うステップを含む
制御方法。
【請求項10】
コンピュータを、
動作周波数を制御可能なCPUにより実行されるプログラムで使用するデータを記憶するメインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対する、ガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御を行い、前記ガベージコレクションを前記CPUの動作周波数が下げられた状態で実行させ、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御を行う動作周波数制御部
として機能させるためのプログラム。
発明の詳細な説明 【技術分野】
【0001】
本発明は、電子機器、制御方法、及び、プログラムに関し、特に、消費電力を抑えることができるようにした電子機器、制御方法、及び、プログラムに関する。
【背景技術】
【0002】
近年、スマートフォンに代表される携帯端末が普及している。この種の携帯端末は、バッテリ駆動となるため、プログラムの実行速度の向上とともに、消費電力の削減も重要となる。携帯端末が消費する電力のうち、CPU(Central Processing Unit)が消費する電力には、CPUが動作していなくても消費されるスタティック電力と、CPUが動作することにより消費されるダイナミック電力があり、これらの電力の合計が、CPUで消費される電力となる。
【0003】
これらの電力のうち、ダイナミック電力は、おおよそCPUの動作周波数に比例することが知られている。したがって、CPUの動作周波数を下げることによって、消費電力を抑えることができる。しかしながら、その一方で、動作周波数を下げてしまうと、プログラムの実行速度は遅くなってしまう。そのため、最適なCPUの動作周波数は、プログラムが実行中であるかどうかや、どのようなプログラムを実行しているかによって異なることになる。
【0004】
例えばインテル社のIntel x86やARM社のARMプロセッサなど、多くのCPUは、DVFS(Dynamic Voltage and Frequency Scaling)と呼ばれる、実行中にアプリケーション(プログラム)からCPUの動作周波数と動作電圧を変更できる機能を備えている。このDVFSを用いれば、プログラムの実行状態などの状況に応じて、CPUの動作周波数を変更することができる。例えば、プログラムを実行していないときは動作周波数を下げる一方、プログラムの実行中は動作周波数を高くするという制御が一般的に行われている。
【0005】
また、このようなプログラムが実行中かどうかによって動作周波数を制御するよりも、さらに積極的な周波数制御の方法として、CPUのキャッシュミスが多いときに、動作周波数を下げるという制御が提案されている。具体的には、CPUがメモリアクセスを行うと、最初はメインメモリに直接アクセスする。そして、一度アクセスしたメモリアドレス周辺は、キャッシュメモリという高速な記憶装置に保存され、しばらくの間は、高速にアクセスできるようになる。キャッシュメモリにないデータにアクセスしようとすると、メインメモリへのアクセスが発生し、これがキャッシュミスと呼ばれるものである。
【0006】
メインメモリへのアクセスには、CPUの命令実行に比べて長い時間がかかるため、キャッシュミスが発生すると、CPUは待たされることになる。そのため、キャッシュミスが頻繁に起きる状況では、プログラムの実行中であっても、CPUが待っている状態が多くなり、動作周波数を下げるほうがよいことがある。そして、キャッシュミスが多いときに動作周波数を下げるには、キャッシュミスが多い状態が長時間継続する時間を見つける必要がある。キャッシュミスが多い状態が長時間継続する必要があるのは、仮にキャッシュミスが多い状態が短時間しか持続しなければ、動作周波数を変更しても効果が少ないからである。
【0007】
このようなキャッシュミスに応じてCPUの動作周波数を制御する方法としては、例えば、特許文献1や特許文献2が知られている。特許文献1には、キャッシュミスを検出するハードウェアを用い、キャッシュミスが頻繁に起きているかどうかを監視して、CPUの動作周波数を制御する方法が開示されている。特許文献2には、オペレーティングシステム(以下、「OS」という。OSは、Operating Systemの略)のカーネルがプログラムやハードウェアのイベントを検知し、そのイベントから今後キャッシュミスが頻繁に起きるかどうかを予測する方法が開示されている。このイベントとしては、プログラムがOSの機能を利用するときに行うシステムコールや、ハードウェアの割り込みなどがあり、当該イベントが起きるとCPUの動作周波数を下げることになる。
【0008】
また、ガベージコレクション(以下、「GC」ということもある。GCは、Garbage Collectionの略)と呼ばれる、CPUにより実行されるプログラムが動的にメモリを確保する領域(以下、「ヒープ」という)のうち、不要になった領域を解放する機能が知られている。
【0009】
非特許文献1には、仮想機械(以下、「VM」という。VMは、Virtual Machineの略)が行う処理の一つであるGCは、CPUの動作周波数が高く、大きなキャッシュメモリを搭載した高性能のCPUを用いて実行しても、消費電力が増える割には、あまり高速にならないことが示されている。ここでは、プログラムを実行するCPUとは別に、GCを専用に行うCPUを追加することが提案されている。
【先行技術文献】
【0010】

【特許文献1】特開4860104号
【特許文献2】特開4837456号
【0011】

【非特許文献1】Ting Cao, Stephan M.Blackburn, Kathryn S.McKinley:'The Yin and Yang of Power and Performance for Asymmetric Hardware and Managed Software',In proceedings of the 39th Annual International Symposium on Computer Architecture 40 (3),pp.225-236,2012
【発明の概要】
【発明が解決しようとする課題】
【0012】
ところで、特許文献1に開示されている方法であると、キャッシュミスを検出するハードウェアが必要となる。また、キャッシュミスが頻繁に起きていることを精度よく判定するためには、キャッシュミスが頻繁に起きる状況がしばらく続いていることを確認する必要があり、実際にキャッシュミスが頻繁に起きる状況になってから、CPUの動作周波数を制御するまでには時間がかかるため、その間は、動作周波数が高い状態で実行が続くことになる。
【0013】
また、特許文献2に開示されている方法では、OSのカーネルにより検知されるイベントとして、キャッシュミスが頻繁に発生するまえぶれとなるイベントをプログラムしておいて、そのようなイベントが起きたときに、CPUの動作周波数を下げることになる。この方法では、OSがイベントを検出して、CPUの動作周波数を制御するため、OS上で実行されているVMやプログラム自身では、その中で閉じている処理の動作周波数を変更することはできない。例えば、携帯端末用のOSであるAndroid(登録商標)では、アプリケーション(プログラム)は、全てVMの上で実行される仕組みになっているため、OSのカーネルによるイベントの検知だけでは十分ではない。
【0014】
さらに、非特許文献1に開示されている方法では、通常のアプリケーション(プログラム)を高性能なCPU、GCを低性能のCPUで処理することで、消費電力の向上を図っているが、GCを専用に行うCPUを追加する必要がでてくる。
【0015】
このように、特許文献1、2に開示されている方法では、適切にCPUの動作周波数の制御が行われているとは言い難く、また、非特許文献1に開示されている方法では、GCの処理の実行時に、CPUの動作周波数の制御は行われていない。
【0016】
本発明はこのような状況に鑑みてなされたものであり、GCの処理の実行時におけるCPUの動作周波数を適切に制御して、消費電力を抑えることができるようにするものである。
【課題を解決するための手段】
【0017】
本発明の一側面の電子機器は、動作周波数を制御可能なCPUと、前記CPUにより実行されるプログラムで使用するデータを記憶するメインメモリと、前記メインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対するガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御を行い、前記ガベージコレクションを前記CPUの動作周波数が下げられた状態で実行させ、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御を行う動作周波数制御部とを備える。
【0018】
前記動作周波数制御部は、前記ガベージコレクションの実行時間を予測可能な予測情報に基づいて、前記ガベージコレクションの実行時間を予測し、当該実行時間に応じて、前記CPUの動作周波数を制御することができる。
【0019】
前記予測情報は、実行済みのガベージコレクションの実行時間に関する実行時間情報、及び、次に実行されるガベージコレクションの種類に関する種類情報の少なくとも1つを含むようにすることができる。
【0020】
前記動作周波数制御部は、前記実行時間情報に基づいて、前記ガベージコレクションの実行時に、当該ガベージコレクションにおける前記CPUの動作周波数の制御方法を決定することができる。
【0021】
前記動作周波数制御部は、前記実行時間情報に基づいて、前記プログラムの実行時に、前記ヒープに対するガベージコレクションにおける前記CPUの動作周波数の制御方法を決定することができる。
【0022】
前記種類情報は、前記ガベージコレクションのアルゴリズムに関する情報、及び、前記ガベージコレクションの対象となる前記ヒープに関する情報の少なくとも1つを含むようにすることができる。
【0023】
前記動作周波数制御部は、前記CPUの動作周波数を下げる制御が行われている間に、前記メインメモリを制御するメモリコントローラの動作周波数を上げる制御を行うことができる。
【0024】
前記動作周波数制御部は、前記CPUの動作電圧を制御可能である場合、前記CPUの動作周波数を下げる制御が行われている間に、前記CPUの動作電圧を下げる制御を行うことができる。
【0025】
本発明の一側面の制御方法及びプログラムは、上述した本発明の一側面の電子機器に対応する制御方法及びプログラムである。
【0026】
本発明の一側面の電子機器、制御方法、及び、プログラムにおいては、動作周波数を制御可能なCPUにより実行されるプログラムで使用するデータを記憶するメインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対する、ガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御が行われて、前記ガベージコレクションが、前記CPUの動作周波数が下げられた状態で実行される。そして、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御が行われる。
【発明の効果】
【0027】
本発明の一側面によれば、少ない実行速度の低下で効果的に消費電力を抑えることができる。
【0028】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【0029】
【図1】仮想機械によりプログラムを実行するシステムのアーキテクチャを示す図である。
【図2】CPUの動作周波数の制御を行わない場合のGCの処理の実行を示すタイミングチャートである。
【図3】CPUの動作周波数の制御を行った場合のGCの処理の実行を示すタイミングチャートである。
【図4】GCの処理の実行時に、GCの処理を考慮してCPUの動作周波数の制御を行った場合における各ベンチマークプログラムの消費電力の削減状況を示す図である。
【図5】各ベンチマークプログラムにおける平均GC時間を示す図である。
【図6】本発明を適用した電子機器の一実施の形態の構成を示すブロック図である。
【発明を実施するための形態】
【0030】
以下、図面を参照しながら本発明の実施の形態について説明する。

【0031】
図1は、仮想機械によりプログラムを実行するシステムのアーキテクチャを示す図である。

【0032】
図1に示すように、ハードウェアとして、動作周波数を制御可能なCPUを搭載しているスマートフォン等の電子機器では、そのCPU上でオペレーティングシステム(OS)が動作し、さらにその上で各アプリケーション(プログラム)を動作させるための仮想機械(VM)が動作する。これにより、各プログラムは、VM上で実行されることになる。また、VMは、ガベージコレクション(GC)の機能を備えており、プログラムが利用可能なメモリが少なくなってくると、GCの処理が実行される。

【0033】
OSとしては、例えば、Linux(登録商標)が用いられ、Java(登録商標)のプログラムを実行する場合には、VMとして、Java仮想機械(Java VM)が動作することになる。また、近年、携帯端末用のOSとして、Android(登録商標)が普及しているが、Androidでは、全てのプログラムがDalvik仮想機械(Dalvik VM)と呼ばれるVM上で動作し、GCの機能も、このDalvik VMの中で動作することになる。

【0034】
ここで、上述したように、GCは、CPUにより実行されるプログラムが使用しているメモリの中から不要になったデータを自動的に探し出し、そのデータが占める領域を、再利用できるようにする機能である。

【0035】
典型的には、プログラムが実行中に継続的にメモリを消費し、空きメモリがなくなったときに、GCが呼び出される。GCが呼び出されると、プログラム本体の処理が停止して、GCの処理が実行される。そして、GCの処理が終了すると、再度、プログラム本体に制御が戻される。ただし、これらの処理は全て、VM上で閉じた処理となっているため、OSのカーネルからは検出することはできない。

【0036】
GCでは、不要になったデータを探すため、プログラムが使用しているメモリ全体を不規則な順序でアクセスする。そのため、GCは、まとまった量の処理となりで、かつ、キャッシュミスが発生しやすいという特徴を有している。また、広範囲なメモリへのランダムアクセスは、キャッシュヒットしやすい狭い範囲へのランダムアクセスと比べて、CPUの動作周波数を下げて実行しても実行速度に与える影響が少ないということが知られている。

【0037】
すなわち、メモリに対してアクセスする範囲が広いときに、CPUが、より低い動作周波数で実行されるようにすることで、アクセスする範囲が狭いときに比べて、より少ない実行速度の低下で、より大きい消費電力の削減ができることが期待される。そこで、本発明では、GCの処理の実行が開始される前に、CPUの動作周波数を下げ、GCの処理の実行が終了したとき、CPUの動作周波数を元の周波数に戻す制御を行うことで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行するようにして、消費電力を抑えることができるようにする。

【0038】
図2は、CPUの動作周波数の制御を行わない場合のGCの実行を示すタイミングチャートである。図2において、上側の図2Aは、時間ごとのCPUの動作周波数を表しており、その時間軸の方向は、図中の左から右に向かう方向とされる。また、下側の図2Bは、図2Aと同一の時間軸において、CPUにより実行される処理の内容を表している。この処理の内容としては、プログラム本体の処理(図中の「通常の処理」)と、GCの処理(図中の「GCの処理」)があり、図2には、これらの処理を実行する際のCPUの動作周波数が時系列で示されていることになる。

【0039】
すなわち、CPUによって、時刻t0から時刻t1までの間は通常の処理、時刻t1から時刻t2までの間はGCの処理がそれぞれ実行され、その後も、通常の処理とGCの処理が繰り返し実行されるが、その間における動作周波数は一定となる。このように、図2では、CPUにより実行される処理の内容が通常の処理であろうが、GCの処理であろうが、CPUの動作周波数は一定の周波数となっている。

【0040】
一方、図3には、CPUの動作周波数の制御を行った場合のGCの実行を示すタイミングチャートを図示している。図3Aと図3Bの関係は、上述した図2Aと図2Bとの関係と同様であるが、図3では、CPUの動作周波数の制御を行っているため、CPUにより実行される処理の内容によって、CPUの動作周波数が異なっている。

【0041】
すなわち、時刻t0から時刻t1までの間は、CPUにより通常の処理が実行され、時刻t1から時刻t2までの間は、CPUによりGCの処理が実行されるが、その動作周波数は、通常の処理よりもGCの処理のほうが低くなるように制御されている。同様に、時刻t2~t3、時刻t4~t5、時刻t6~t7、時刻t8~t9、時刻t10~t11、時刻t12~t13に実行される通常の処理と、時刻t3~t4、時刻t5~t6、時刻t7~t8、時刻t9~t10、時刻t11~t12、時刻t13~t14に実行されるGCの処理と比べると、通常の処理の実行時よりもGCの処理の実行時のほうがCPUの動作周波数が低くなっている。

【0042】
このように、本発明では、図2に示したように、通常の処理とGCの処理を実行するCPUの動作周波数を同一の周波数とするのではなく、図3に示したように、GCの処理の実行が開始される前に、CPUの動作周波数を下げ、当該GCの処理が終了したとき、CPUの動作周波数を元の周波数に戻して、通常の処理が再開されるようにすることで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行するようにしている。その結果、GCの処理の実行時における消費電力を抑えることができる。

【0043】
なお、図2及び図3においては、GCの処理の実行時には、通常の処理の実行を停止するものとして説明しているが、GCの処理は、通常の処理と並行して実行されるようにしてもよい。

【0044】
ところで、GCの処理の実行時に、このようなCPUの動作周波数の制御を行うことで、消費電力が抑えられることは、本発明の発明者により行われた詳細なるシミュレーションの結果、見出されたものである。そこで、次に、図4及び図5を参照して、当該シミュレーションの詳細について説明する。

【0045】
なお、当該シミュレーションは、次の環境で行われている。すなわち、当該シミュレーションでは、ワンボードコンピュータのパンダボード(Pandaboard)を用い、このパンダボード上にAndroid(登録商標)を動作させている。したがって、全てのプログラムは、Dalvik VMと呼ばれる仮想機械上で動作し、GCの機能も、このDalvik VMの中で動作することになる。

【0046】
また、パンダボードは、以下のような特徴を有している。

【0047】
・CPU:OMAP 4430(ARMアーキテクチャ)
・CPU周波数:300MHz~1008MHz
・キャッシュメモリ:1次 32KB(データ・命令別)/2次 1MB(データ・命令共通)
・メインメモリ:1GB

【0048】
このような環境で、6つのベンチマークプログラムを実行して、さらに、CPUの動作周波数の制御を行った。ここでは、GCの処理の実行中にだけCPUの動作周波数を下げた場合の実行(以下、「実行A」という)の消費電力と、GCの処理を考慮せずに、実行Aと同じ時間で処理が終了するように、CPUの動作周波数を下げた場合の実行(以下、「実行B」という)の消費電力との比を比較している。つまり、実行Aと実行Bのうち、実行Aが、本発明を適用したCPUの動作周波数の制御方法に相当するものである。

【0049】
図4には、GCの処理の実行時に、GCの処理を考慮してCPUの動作周波数の制御を行った場合における各ベンチマークプログラムの消費電力の削減状況を示している。図4においては、縦軸は、実行Bを基準としたときの実行Aの消費電力の比を示しており、この比が、1より小さい場合には、実行Bよりも実行Aを用いた方が、消費電力が少ないことを意味している。また、横軸の「antlr」、「hsqldb」、「luindex」、「lusearch」、「pmd」、「xalan」は、各ベンチマークプログラムを示している。

【0050】
すなわち、図4には、6つのベンチマークプログラムごとに、本発明を適用したCPUの動作周波数の制御方法を用いた場合における消費電力の削減状況を示しているが、特に、hsqldb、pmdは、消費電力の比が、0.8前後となっており、本発明を適用したCPUの動作周波数の制御方法による消費電力の削減の効果が大きいことが確認できる。

【0051】
図5は、各ベンチマークプログラムにおける平均GC時間を示している。図5においては、6つのベンチマークプログラムごとの、総GC時間(s)、GC回数、及び、平均GC時間(s)が示されている。なお、総GC時間は、GCの処理にかかった総時間を示し、GC回数は、GCの処理を行った回数を示している。また、平均GC時間は、1回のGCの処理にかかる時間の平均であって、総GC時間をGC回数で割ることで得られる値である。

【0052】
図5に示すように、antlrは、総GC時間が84.61(s)で、GC回数が719(回)であるから、平均GC時間は、0.118(s)となる。hsqldbは、総GC時間が113.79(s)で、GC回数が19(回)であるから、平均GC時間は、5.99(s)となる。luindexは、総GC時間が39.39(s)で、GC回数が204(回)であるから、平均GC時間は、0.193(s)となる。

【0053】
また、lusearchは、総GC時間が272.32(s)で、GC回数が914(回)であるから、平均GC時間は、0.298(s)となる。pmdは、総GC時間が279.98(s)で、GC回数が336(回)であるから、平均GC時間は、0.833(s)となる。xalanは、総GC時間が68.82(s)で、GC回数が312(回)であるから、平均GC時間は、0.221(s)となる。

【0054】
ここで、図4において、本発明を適用したCPUの動作周波数の制御方法による消費電力の削減の効果が大きいことが確認されたhsqldb、pmdに注目すれば、平均GC時間がそれぞれ、5.99(s)、0.833(s)となり、他のベンチマークプログラムに比べて長いことが分かる。したがって、GCの処理の時間が長い場合に、そのGCの処理の実行中にだけ、選択的にCPUの動作周波数を下げることは、消費電力を抑える上でその効果が大きいと考えられる。そして、プログラムが使用するデータの量が急激に変化することは少ないと考えられることから、過去のGCの処理にかかった時間に基づいて、次のGCの処理でCPUの動作周波数の制御を行うかどうかを決定することが有効であると考えられる。

【0055】
すなわち、実行済みのGCの処理について、その処理の実行にかかった時間に関する情報(以下、「実行時間情報」という)を、プログラムごとに保持することで、次のGCの処理を実行する際に、その実行時間情報を参照して、CPUの動作周波数の制御を行うかどうかを決定することができる。例えば、図5の平均GC時間を、実行時間情報として保持しておくことで、hsqldbやpmdにおけるGCでは、平均GC時間が長く、消費電力を抑えることが期待されるので、GCの処理に応じて、CPUの動作周波数の制御を行うことが可能となる。

【0056】
ここで、CPUの動作周波数の制御方法を決定するタイミングであるが、任意のタイミングで行うことができる。例えば、GCの処理の実行時に、実行時間情報を参照して、当該GCの処理におけるCPUの動作周波数の制御を行うかどうかを決定することができる。また、hsqldbやpmd等のプログラムの実行時に、実行時間情報を参照して、ヒープに対するGCの処理におけるCPUの動作周波数の制御を行うかどうかを決定するようにしてもよい。

【0057】
このような、次のGCの処理の実行時間を予測可能な予測情報としては、上述した実行時間情報のほか、例えば、次のGCの処理の種類に関する情報(以下、「種類情報」という)を用いるようにしてもよい。この種類情報としては、例えば、GCの処理のアルゴリズムに関する情報や、GCの処理が実行されるヒープに関する情報を用いることができる。

【0058】
具体的には、世代別GC(Generational Garbage Collection)では、ヒープの不要なデータが多くなる傾向にある領域のみを対象としたマイナーGCの処理を頻繁に行い、ヒープの全領域を対象とするメジャーGCをたまに行うことで、効率よくGCが行われるようにしている。この世代別GCにおいては、マイナーGCの処理にはあまり時間がかからないが、メジャーGCの処理では、長い時間がかかることが知られている。したがって、本発明を適用したCPUの動作周波数の制御方法では、このようなGCの対象となるヒープによるGCの処理の実行時間の違いから、メジャーGCの処理でのみ、CPUの動作周波数を下げる制御が行われるようにする。

【0059】
また、ヒープの使用状況によって、不要なデータのメモリ領域を再利用するだけでなく、使用中のデータを再配置するようなGCも存在し、このようなGCにおいて、データの再配置が発生した場合には、GCの処理に長い時間がかかることになるので、この場合には、CPUの動作周波数を下げる制御が行われるようにする。

【0060】
以上のように、GCの処理の実行時間が短い場合には、GCの処理を、CPUの動作周波数を下げて実行しても効果が少ないので、多少の消費電力削減より実行速度を優先させたい場合は、本発明では、次のGCの処理の実行時間を予測可能な予測情報(例えば、実行時間情報や種類情報など)を用い、次のGCの処理の実行時間を予測して、当該GCの処理におけるCPUの動作周波数の制御を行うかどうかを決定することができるようにしている。次に、このようなCPUの動作周波数の制御方法を実現可能な電子機器について説明する。

【0061】
図6は、本発明を適用した電子機器の一実施の形態の構成を示すブロック図である。

【0062】
図6の電子機器10は、例えば、スマートフォン、タブレット端末、携帯電話機、眼鏡型や腕時計型のウェアラブルコンピュータなどの携帯端末である。なお、電子機器10は、携帯端末に限らず、ノート型パーソナルコンピュータやパーソナルコンピュータ、データセンタ等に配置されるサーバ装置など、メモリ管理の機能として、GCの機能を備えた機器であればよい。

【0063】
図6に示すように、電子機器10は、CPU101、メモリコントローラ102、メインメモリ103、キャッシュメモリ104、メモリ管理部105、動作周波数制御部106、及び、実行時間情報保持部107を含むようにして構成される。なお、実際には、電子機器10には、ディスプレイやスピーカ、操作部、通信部、記録部などの機能も設けられるが、ここでは、説明を簡略化するため、それらの機能については省略している。

【0064】
CPU101は、電子機器10の各部の動作を制御する。また、CPU101は、各種のプログラムを実行する。なお、CPU101は、動作周波数と動作電圧を制御することが可能である。

【0065】
メモリコントローラ102は、CPU101とメインメモリ103との間に設けられ、CPU101からの制御に従い、メインメモリ103におけるデータの読み込みや書き出しを行う。

【0066】
メインメモリ103は、メモリコントローラ102からの制御に従い、CPU101により実行されるプログラムで使用されるデータを記憶するRAM(Random Access Memory)である。メインメモリ103は物理メモリであるが、CPU101によるプログラムの実行時には、VMなどによって、ヒープ領域121が割り当てられる。

【0067】
キャッシュメモリ104は、CPU101とメインメモリ103との間に設けられ、使用頻度の高いデータを蓄積して、CPU101による低速なメインメモリ103へのアクセスを減らすことで、CPU101により実行される処理の速度を高速化する。

【0068】
メモリ管理部105は、メインメモリ103の管理を行う。具体的には、例えば、メモリ管理部105は、メインメモリ103におけるヒープ領域121に対するGCの処理を行う。メモリ管理部105は、GCの処理の実行を開始するとき、その開始を動作周波数制御部106に通知する。また、メモリ管理部105は、GCの処理の実行を終了するとき、その終了を動作周波数制御部106に通知する。

【0069】
なお、メモリ管理部105によるGCの処理は、VMの一機能として提供されるほか、例えば、GCの処理をライブラリとして提供して、プログラムにリンクさせるようにしてもよい。

【0070】
動作周波数制御部106は、メモリ管理部105からの通知に応じて、CPU101の動作周波数を制御する。具体的には、動作周波数制御部106は、メモリ管理部105からのGCの処理の開始の通知に応じて、CPU101の動作周波数を下げる制御を行う。また、動作周波数制御部106は、メモリ管理部105からのGCの処理の終了の通知に応じて、CPU101の動作周波数を元の周波数に戻す制御を行う。

【0071】
すなわち、動作周波数制御部106が、メモリ管理部105からのGCの処理の開始の通知と終了の通知に応じて、CPU101の動作周波数の制御を行うことで、例えば、図3に示したように、時刻t0~t1や時刻t2~t3などの通常の処理と、時刻t1~t2や時刻t3~t4などのGCの処理を比べると、通常の処理の実行時よりもGCの処理の実行時のほうが、CPU101の動作周波数が低くなることになる。なお、CPU101の動作周波数が下げられた状態で、所与の時間、GCの処理が実行されるように制御されるのであれば、動作周波数制御部106がCPU101の動作周波数を下げるタイミングは、GCの処理の途中でもよい。また、下げられていたCPU101の動作周波数を上げるタイミングも、GCの処理の途中でもよい。

【0072】
また、動作周波数制御部106は、メモリ管理部105からのGCの処理の開始の通知と終了の通知に応じて、GCの処理にかかった時間を計時し、実行時間情報として、実行時間情報保持部107に保持する。これにより、実行時間情報保持部107には、CPU101により実行されたプログラムごとに、実行済みのGCの処理にかかった時間が保持されることになる。

【0073】
動作周波数制御部106は、メモリ管理部105によるGCの処理の実行時や、CPU101によるプログラムの実行時などに、実行時間情報保持部107に保持された実行時間情報に基づいて、GCの処理の実行時に、CPU101の動作周波数の制御を行うかどうかを決定する。そして、動作周波数制御部106は、CPU101の動作周波数の制御を行うと決定したときには、GCの処理の実行時に、CPU101の動作周波数を下げる制御を行う。なお、ここでは、例えば、対象のプログラムについて、直近のGCの処理(例えば、対象のプログラムにおける1回前のGCの処理)の実行時間が所定の閾値を超えるかどうかを判定することなどにより、CPU101の動作周波数の制御を行うかどうかが判定される。

【0074】
また、メモリ管理部105は、自身が実行するGCの処理のアルゴリズムや、GCの処理が実行されるヒープ領域121に関する種類情報を、適宜、動作周波数制御部106に供給する。動作周波数制御部106は、メモリ管理部105からの種類情報に基づいて、GCの処理の実行時に、CPU101の動作周波数の制御を行うかどうかを決定する。そして、動作周波数制御部106は、CPU101の動作周波数の制御を行うと決定したときには、GCの処理の実行時に、CPU101の動作周波数を下げる制御を行う。

【0075】
このように、動作周波数制御部106は、次のGCの処理の実行時間を予測可能な予測情報(例えば、実行時間情報及び種類情報の少なくとも1つ)に基づいて、GCの実行時間を予測し、当該実行時間に応じて、CPU101の動作周波数を制御することができる。

【0076】
なお、動作周波数制御部106は、メモリ管理部105からの通知に応じて、メモリコントローラ102の動作周波数を制御するようにしてもよい。具体的には、動作周波数制御部106は、CPU101の動作周波数を下げる制御が行われている間に、メモリコントローラ102の動作周波数を上げる制御を行うことになる。これにより、GCの処理を高速に行うことができる。

【0077】
また、動作周波数制御部106は、メモリ管理部105からの通知に応じて、CPU101の動作電圧を制御するようにしてもよい。具体的には、動作周波数制御部106は、CPU101の動作周波数を下げる制御が行われている間に、CPU101の動作電圧を下げる制御を行うことになる。これにより、消費電力をさらに抑えることができる。

【0078】
以上のように構成される電子機器10においては、動作周波数制御部106によって、メインメモリ103から割り当てられたヒープ領域121に対するGCの処理の実行が開始される前に、CPU101の動作周波数を下げる制御が行われ、当該GCの処理の実行が終了したとき、CPU101の動作周波数を元の周波数に戻す制御が行われる。

【0079】
このようなCPU101の動作周波数の制御を行うことで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行することになるので、消費電力を抑えることができる。

【0080】
また、このようなCPU101の動作周波数の制御を行うことで、CPU101が消費するダイナミック電力(CPU101の動作に伴って消費される電力)と、プログラムの実行速度のトレードオフをよくすることができる。例えば、同一のプログラムを、同一の時間で実行する場合に、より少ない消費電力で実行することが可能となる。また、キャッシュヒット率の変化から遅延なく、かつ、ハードウェアを追加することなく、CPUの動作周波数を変更することができる。

【0081】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。

【0082】
このコンピュータでは、例えば、ROM(Read Only Memory)や記録部にインストールされたプログラムが、RAMにロードされて実行されることにより、上述した一連の処理が行われる。なお、コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線又は無線の伝送媒体を介して提供することができる。その他、プログラムは、ROMや記録部に、あらかじめインストールしておくことができる。

【0083】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0084】
10 電子機器, 101 CPU, 102 メモリコントローラ, 103 メインメモリ, 104 キャッシュメモリ, 105 メモリ管理部, 106 動作周波数制御部, 107 実行時間情報保持部, 121 ヒープ領域
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5