JP6217008B2 - 電子機器、制御方法、及び、プログラム - Google Patents

電子機器、制御方法、及び、プログラム Download PDF

Info

Publication number
JP6217008B2
JP6217008B2 JP2013272936A JP2013272936A JP6217008B2 JP 6217008 B2 JP6217008 B2 JP 6217008B2 JP 2013272936 A JP2013272936 A JP 2013272936A JP 2013272936 A JP2013272936 A JP 2013272936A JP 6217008 B2 JP6217008 B2 JP 6217008B2
Authority
JP
Japan
Prior art keywords
operating frequency
cpu
garbage collection
control
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013272936A
Other languages
English (en)
Other versions
JP2015127869A (ja
Inventor
始陽 鵜川
始陽 鵜川
頼之 橘田
頼之 橘田
英哉 岩崎
英哉 岩崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kochi Prefectural University Corp
Original Assignee
Kochi Prefectural University Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kochi Prefectural University Corp filed Critical Kochi Prefectural University Corp
Priority to JP2013272936A priority Critical patent/JP6217008B2/ja
Publication of JP2015127869A publication Critical patent/JP2015127869A/ja
Application granted granted Critical
Publication of JP6217008B2 publication Critical patent/JP6217008B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、電子機器、制御方法、及び、プログラムに関し、特に、消費電力を抑えることができるようにした電子機器、制御方法、及び、プログラムに関する。
近年、スマートフォンに代表される携帯端末が普及している。この種の携帯端末は、バッテリ駆動となるため、プログラムの実行速度の向上とともに、消費電力の削減も重要となる。携帯端末が消費する電力のうち、CPU(Central Processing Unit)が消費する電力には、CPUが動作していなくても消費されるスタティック電力と、CPUが動作することにより消費されるダイナミック電力があり、これらの電力の合計が、CPUで消費される電力となる。
これらの電力のうち、ダイナミック電力は、おおよそCPUの動作周波数に比例することが知られている。したがって、CPUの動作周波数を下げることによって、消費電力を抑えることができる。しかしながら、その一方で、動作周波数を下げてしまうと、プログラムの実行速度は遅くなってしまう。そのため、最適なCPUの動作周波数は、プログラムが実行中であるかどうかや、どのようなプログラムを実行しているかによって異なることになる。
例えばインテル社のIntel x86やARM社のARMプロセッサなど、多くのCPUは、DVFS(Dynamic Voltage and Frequency Scaling)と呼ばれる、実行中にアプリケーション(プログラム)からCPUの動作周波数と動作電圧を変更できる機能を備えている。このDVFSを用いれば、プログラムの実行状態などの状況に応じて、CPUの動作周波数を変更することができる。例えば、プログラムを実行していないときは動作周波数を下げる一方、プログラムの実行中は動作周波数を高くするという制御が一般的に行われている。
また、このようなプログラムが実行中かどうかによって動作周波数を制御するよりも、さらに積極的な周波数制御の方法として、CPUのキャッシュミスが多いときに、動作周波数を下げるという制御が提案されている。具体的には、CPUがメモリアクセスを行うと、最初はメインメモリに直接アクセスする。そして、一度アクセスしたメモリアドレス周辺は、キャッシュメモリという高速な記憶装置に保存され、しばらくの間は、高速にアクセスできるようになる。キャッシュメモリにないデータにアクセスしようとすると、メインメモリへのアクセスが発生し、これがキャッシュミスと呼ばれるものである。
メインメモリへのアクセスには、CPUの命令実行に比べて長い時間がかかるため、キャッシュミスが発生すると、CPUは待たされることになる。そのため、キャッシュミスが頻繁に起きる状況では、プログラムの実行中であっても、CPUが待っている状態が多くなり、動作周波数を下げるほうがよいことがある。そして、キャッシュミスが多いときに動作周波数を下げるには、キャッシュミスが多い状態が長時間継続する時間を見つける必要がある。キャッシュミスが多い状態が長時間継続する必要があるのは、仮にキャッシュミスが多い状態が短時間しか持続しなければ、動作周波数を変更しても効果が少ないからである。
このようなキャッシュミスに応じてCPUの動作周波数を制御する方法としては、例えば、特許文献1や特許文献2が知られている。特許文献1には、キャッシュミスを検出するハードウェアを用い、キャッシュミスが頻繁に起きているかどうかを監視して、CPUの動作周波数を制御する方法が開示されている。特許文献2には、オペレーティングシステム(以下、「OS」という。OSは、Operating Systemの略)のカーネルがプログラムやハードウェアのイベントを検知し、そのイベントから今後キャッシュミスが頻繁に起きるかどうかを予測する方法が開示されている。このイベントとしては、プログラムがOSの機能を利用するときに行うシステムコールや、ハードウェアの割り込みなどがあり、当該イベントが起きるとCPUの動作周波数を下げることになる。
また、ガベージコレクション(以下、「GC」ということもある。GCは、Garbage Collectionの略)と呼ばれる、CPUにより実行されるプログラムが動的にメモリを確保する領域(以下、「ヒープ」という)のうち、不要になった領域を解放する機能が知られている。
非特許文献1には、仮想機械(以下、「VM」という。VMは、Virtual Machineの略)が行う処理の一つであるGCは、CPUの動作周波数が高く、大きなキャッシュメモリを搭載した高性能のCPUを用いて実行しても、消費電力が増える割には、あまり高速にならないことが示されている。ここでは、プログラムを実行するCPUとは別に、GCを専用に行うCPUを追加することが提案されている。
特開4860104号 特開4837456号
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
ところで、特許文献1に開示されている方法であると、キャッシュミスを検出するハードウェアが必要となる。また、キャッシュミスが頻繁に起きていることを精度よく判定するためには、キャッシュミスが頻繁に起きる状況がしばらく続いていることを確認する必要があり、実際にキャッシュミスが頻繁に起きる状況になってから、CPUの動作周波数を制御するまでには時間がかかるため、その間は、動作周波数が高い状態で実行が続くことになる。
また、特許文献2に開示されている方法では、OSのカーネルにより検知されるイベントとして、キャッシュミスが頻繁に発生するまえぶれとなるイベントをプログラムしておいて、そのようなイベントが起きたときに、CPUの動作周波数を下げることになる。この方法では、OSがイベントを検出して、CPUの動作周波数を制御するため、OS上で実行されているVMやプログラム自身では、その中で閉じている処理の動作周波数を変更することはできない。例えば、携帯端末用のOSであるAndroid(登録商標)では、アプリケーション(プログラム)は、全てVMの上で実行される仕組みになっているため、OSのカーネルによるイベントの検知だけでは十分ではない。
さらに、非特許文献1に開示されている方法では、通常のアプリケーション(プログラム)を高性能なCPU、GCを低性能のCPUで処理することで、消費電力の向上を図っているが、GCを専用に行うCPUを追加する必要がでてくる。
このように、特許文献1、2に開示されている方法では、適切にCPUの動作周波数の制御が行われているとは言い難く、また、非特許文献1に開示されている方法では、GCの処理の実行時に、CPUの動作周波数の制御は行われていない。
本発明はこのような状況に鑑みてなされたものであり、GCの処理の実行時におけるCPUの動作周波数を適切に制御して、消費電力を抑えることができるようにするものである。
本発明の一側面の電子機器は、動作周波数を制御可能なCPUと、前記CPUにより実行されるプログラムで使用するデータを記憶するメインメモリと、前記メインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対するガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御を行い、前記ガベージコレクションを前記CPUの動作周波数が下げられた状態で実行させ、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御を行う動作周波数制御部とを備える。
前記動作周波数制御部は、前記ガベージコレクションの実行時間を予測可能な予測情報に基づいて、前記ガベージコレクションの実行時間を予測し、当該実行時間に応じて、前記CPUの動作周波数を制御することができる。
前記予測情報は、実行済みのガベージコレクションの実行時間に関する実行時間情報、及び、次に実行されるガベージコレクションの種類に関する種類情報の少なくとも1つを含むようにすることができる。
前記動作周波数制御部は、前記実行時間情報に基づいて、前記ガベージコレクションの実行時に、当該ガベージコレクションにおける前記CPUの動作周波数の制御方法を決定することができる。
前記動作周波数制御部は、前記実行時間情報に基づいて、前記プログラムの実行時に、前記ヒープに対するガベージコレクションにおける前記CPUの動作周波数の制御方法を決定することができる。
前記種類情報は、前記ガベージコレクションのアルゴリズムに関する情報、及び、前記ガベージコレクションの対象となる前記ヒープに関する情報の少なくとも1つを含むようにすることができる。
前記動作周波数制御部は、前記CPUの動作周波数を下げる制御が行われている間に、前記メインメモリを制御するメモリコントローラの動作周波数を上げる制御を行うことができる。
前記動作周波数制御部は、前記CPUの動作電圧を制御可能である場合、前記CPUの動作周波数を下げる制御が行われている間に、前記CPUの動作電圧を下げる制御を行うことができる。
本発明の一側面の制御方法及びプログラムは、上述した本発明の一側面の電子機器に対応する制御方法及びプログラムである。
本発明の一側面の電子機器、制御方法、及び、プログラムにおいては、動作周波数を制御可能なCPUにより実行されるプログラムで使用するデータを記憶するメインメモリにおける前記プログラムが動的にメモリを確保する領域であるヒープに対する、ガベージコレクションの実行が開始される前あるいは途中に、前記CPUの動作周波数を下げる制御が行われて、前記ガベージコレクションが、前記CPUの動作周波数が下げられた状態で実行される。そして、前記ガベージコレクションの実行の途中あるいは終了したとき、前記CPUの動作周波数を元の周波数に戻す制御が行われる。
本発明の一側面によれば、少ない実行速度の低下で効果的に消費電力を抑えることができる。
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
仮想機械によりプログラムを実行するシステムのアーキテクチャを示す図である。 CPUの動作周波数の制御を行わない場合のGCの処理の実行を示すタイミングチャートである。 CPUの動作周波数の制御を行った場合のGCの処理の実行を示すタイミングチャートである。 GCの処理の実行時に、GCの処理を考慮してCPUの動作周波数の制御を行った場合における各ベンチマークプログラムの消費電力の削減状況を示す図である。 各ベンチマークプログラムにおける平均GC時間を示す図である。 本発明を適用した電子機器の一実施の形態の構成を示すブロック図である。
以下、図面を参照しながら本発明の実施の形態について説明する。
図1は、仮想機械によりプログラムを実行するシステムのアーキテクチャを示す図である。
図1に示すように、ハードウェアとして、動作周波数を制御可能なCPUを搭載しているスマートフォン等の電子機器では、そのCPU上でオペレーティングシステム(OS)が動作し、さらにその上で各アプリケーション(プログラム)を動作させるための仮想機械(VM)が動作する。これにより、各プログラムは、VM上で実行されることになる。また、VMは、ガベージコレクション(GC)の機能を備えており、プログラムが利用可能なメモリが少なくなってくると、GCの処理が実行される。
OSとしては、例えば、Linux(登録商標)が用いられ、Java(登録商標)のプログラムを実行する場合には、VMとして、Java仮想機械(Java VM)が動作することになる。また、近年、携帯端末用のOSとして、Android(登録商標)が普及しているが、Androidでは、全てのプログラムがDalvik仮想機械(Dalvik VM)と呼ばれるVM上で動作し、GCの機能も、このDalvik VMの中で動作することになる。
ここで、上述したように、GCは、CPUにより実行されるプログラムが使用しているメモリの中から不要になったデータを自動的に探し出し、そのデータが占める領域を、再利用できるようにする機能である。
典型的には、プログラムが実行中に継続的にメモリを消費し、空きメモリがなくなったときに、GCが呼び出される。GCが呼び出されると、プログラム本体の処理が停止して、GCの処理が実行される。そして、GCの処理が終了すると、再度、プログラム本体に制御が戻される。ただし、これらの処理は全て、VM上で閉じた処理となっているため、OSのカーネルからは検出することはできない。
GCでは、不要になったデータを探すため、プログラムが使用しているメモリ全体を不規則な順序でアクセスする。そのため、GCは、まとまった量の処理となりで、かつ、キャッシュミスが発生しやすいという特徴を有している。また、広範囲なメモリへのランダムアクセスは、キャッシュヒットしやすい狭い範囲へのランダムアクセスと比べて、CPUの動作周波数を下げて実行しても実行速度に与える影響が少ないということが知られている。
すなわち、メモリに対してアクセスする範囲が広いときに、CPUが、より低い動作周波数で実行されるようにすることで、アクセスする範囲が狭いときに比べて、より少ない実行速度の低下で、より大きい消費電力の削減ができることが期待される。そこで、本発明では、GCの処理の実行が開始される前に、CPUの動作周波数を下げ、GCの処理の実行が終了したとき、CPUの動作周波数を元の周波数に戻す制御を行うことで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行するようにして、消費電力を抑えることができるようにする。
図2は、CPUの動作周波数の制御を行わない場合のGCの実行を示すタイミングチャートである。図2において、上側の図2Aは、時間ごとのCPUの動作周波数を表しており、その時間軸の方向は、図中の左から右に向かう方向とされる。また、下側の図2Bは、図2Aと同一の時間軸において、CPUにより実行される処理の内容を表している。この処理の内容としては、プログラム本体の処理(図中の「通常の処理」)と、GCの処理(図中の「GCの処理」)があり、図2には、これらの処理を実行する際のCPUの動作周波数が時系列で示されていることになる。
すなわち、CPUによって、時刻t0から時刻t1までの間は通常の処理、時刻t1から時刻t2までの間はGCの処理がそれぞれ実行され、その後も、通常の処理とGCの処理が繰り返し実行されるが、その間における動作周波数は一定となる。このように、図2では、CPUにより実行される処理の内容が通常の処理であろうが、GCの処理であろうが、CPUの動作周波数は一定の周波数となっている。
一方、図3には、CPUの動作周波数の制御を行った場合のGCの実行を示すタイミングチャートを図示している。図3Aと図3Bの関係は、上述した図2Aと図2Bとの関係と同様であるが、図3では、CPUの動作周波数の制御を行っているため、CPUにより実行される処理の内容によって、CPUの動作周波数が異なっている。
すなわち、時刻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の動作周波数が低くなっている。
このように、本発明では、図2に示したように、通常の処理とGCの処理を実行するCPUの動作周波数を同一の周波数とするのではなく、図3に示したように、GCの処理の実行が開始される前に、CPUの動作周波数を下げ、当該GCの処理が終了したとき、CPUの動作周波数を元の周波数に戻して、通常の処理が再開されるようにすることで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行するようにしている。その結果、GCの処理の実行時における消費電力を抑えることができる。
なお、図2及び図3においては、GCの処理の実行時には、通常の処理の実行を停止するものとして説明しているが、GCの処理は、通常の処理と並行して実行されるようにしてもよい。
ところで、GCの処理の実行時に、このようなCPUの動作周波数の制御を行うことで、消費電力が抑えられることは、本発明の発明者により行われた詳細なるシミュレーションの結果、見出されたものである。そこで、次に、図4及び図5を参照して、当該シミュレーションの詳細について説明する。
なお、当該シミュレーションは、次の環境で行われている。すなわち、当該シミュレーションでは、ワンボードコンピュータのパンダボード(Pandaboard)を用い、このパンダボード上にAndroid(登録商標)を動作させている。したがって、全てのプログラムは、Dalvik VMと呼ばれる仮想機械上で動作し、GCの機能も、このDalvik VMの中で動作することになる。
また、パンダボードは、以下のような特徴を有している。
・CPU:OMAP 4430(ARMアーキテクチャ)
・CPU周波数:300MHz〜1008MHz
・キャッシュメモリ:1次 32KB(データ・命令別)/2次 1MB(データ・命令共通)
・メインメモリ:1GB
このような環境で、6つのベンチマークプログラムを実行して、さらに、CPUの動作周波数の制御を行った。ここでは、GCの処理の実行中にだけCPUの動作周波数を下げた場合の実行(以下、「実行A」という)の消費電力と、GCの処理を考慮せずに、実行Aと同じ時間で処理が終了するように、CPUの動作周波数を下げた場合の実行(以下、「実行B」という)の消費電力との比を比較している。つまり、実行Aと実行Bのうち、実行Aが、本発明を適用したCPUの動作周波数の制御方法に相当するものである。
図4には、GCの処理の実行時に、GCの処理を考慮してCPUの動作周波数の制御を行った場合における各ベンチマークプログラムの消費電力の削減状況を示している。図4においては、縦軸は、実行Bを基準としたときの実行Aの消費電力の比を示しており、この比が、1より小さい場合には、実行Bよりも実行Aを用いた方が、消費電力が少ないことを意味している。また、横軸の「antlr」、「hsqldb」、「luindex」、「lusearch」、「pmd」、「xalan」は、各ベンチマークプログラムを示している。
すなわち、図4には、6つのベンチマークプログラムごとに、本発明を適用したCPUの動作周波数の制御方法を用いた場合における消費電力の削減状況を示しているが、特に、hsqldb、pmdは、消費電力の比が、0.8前後となっており、本発明を適用したCPUの動作周波数の制御方法による消費電力の削減の効果が大きいことが確認できる。
図5は、各ベンチマークプログラムにおける平均GC時間を示している。図5においては、6つのベンチマークプログラムごとの、総GC時間(s)、GC回数、及び、平均GC時間(s)が示されている。なお、総GC時間は、GCの処理にかかった総時間を示し、GC回数は、GCの処理を行った回数を示している。また、平均GC時間は、1回のGCの処理にかかる時間の平均であって、総GC時間をGC回数で割ることで得られる値である。
図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)となる。
また、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)となる。
ここで、図4において、本発明を適用したCPUの動作周波数の制御方法による消費電力の削減の効果が大きいことが確認されたhsqldb、pmdに注目すれば、平均GC時間がそれぞれ、5.99(s)、0.833(s)となり、他のベンチマークプログラムに比べて長いことが分かる。したがって、GCの処理の時間が長い場合に、そのGCの処理の実行中にだけ、選択的にCPUの動作周波数を下げることは、消費電力を抑える上でその効果が大きいと考えられる。そして、プログラムが使用するデータの量が急激に変化することは少ないと考えられることから、過去のGCの処理にかかった時間に基づいて、次のGCの処理でCPUの動作周波数の制御を行うかどうかを決定することが有効であると考えられる。
すなわち、実行済みのGCの処理について、その処理の実行にかかった時間に関する情報(以下、「実行時間情報」という)を、プログラムごとに保持することで、次のGCの処理を実行する際に、その実行時間情報を参照して、CPUの動作周波数の制御を行うかどうかを決定することができる。例えば、図5の平均GC時間を、実行時間情報として保持しておくことで、hsqldbやpmdにおけるGCでは、平均GC時間が長く、消費電力を抑えることが期待されるので、GCの処理に応じて、CPUの動作周波数の制御を行うことが可能となる。
ここで、CPUの動作周波数の制御方法を決定するタイミングであるが、任意のタイミングで行うことができる。例えば、GCの処理の実行時に、実行時間情報を参照して、当該GCの処理におけるCPUの動作周波数の制御を行うかどうかを決定することができる。また、hsqldbやpmd等のプログラムの実行時に、実行時間情報を参照して、ヒープに対するGCの処理におけるCPUの動作周波数の制御を行うかどうかを決定するようにしてもよい。
このような、次のGCの処理の実行時間を予測可能な予測情報としては、上述した実行時間情報のほか、例えば、次のGCの処理の種類に関する情報(以下、「種類情報」という)を用いるようにしてもよい。この種類情報としては、例えば、GCの処理のアルゴリズムに関する情報や、GCの処理が実行されるヒープに関する情報を用いることができる。
具体的には、世代別GC(Generational Garbage Collection)では、ヒープの不要なデータが多くなる傾向にある領域のみを対象としたマイナーGCの処理を頻繁に行い、ヒープの全領域を対象とするメジャーGCをたまに行うことで、効率よくGCが行われるようにしている。この世代別GCにおいては、マイナーGCの処理にはあまり時間がかからないが、メジャーGCの処理では、長い時間がかかることが知られている。したがって、本発明を適用したCPUの動作周波数の制御方法では、このようなGCの対象となるヒープによるGCの処理の実行時間の違いから、メジャーGCの処理でのみ、CPUの動作周波数を下げる制御が行われるようにする。
また、ヒープの使用状況によって、不要なデータのメモリ領域を再利用するだけでなく、使用中のデータを再配置するようなGCも存在し、このようなGCにおいて、データの再配置が発生した場合には、GCの処理に長い時間がかかることになるので、この場合には、CPUの動作周波数を下げる制御が行われるようにする。
以上のように、GCの処理の実行時間が短い場合には、GCの処理を、CPUの動作周波数を下げて実行しても効果が少ないので、多少の消費電力削減より実行速度を優先させたい場合は、本発明では、次のGCの処理の実行時間を予測可能な予測情報(例えば、実行時間情報や種類情報など)を用い、次のGCの処理の実行時間を予測して、当該GCの処理におけるCPUの動作周波数の制御を行うかどうかを決定することができるようにしている。次に、このようなCPUの動作周波数の制御方法を実現可能な電子機器について説明する。
図6は、本発明を適用した電子機器の一実施の形態の構成を示すブロック図である。
図6の電子機器10は、例えば、スマートフォン、タブレット端末、携帯電話機、眼鏡型や腕時計型のウェアラブルコンピュータなどの携帯端末である。なお、電子機器10は、携帯端末に限らず、ノート型パーソナルコンピュータやパーソナルコンピュータ、データセンタ等に配置されるサーバ装置など、メモリ管理の機能として、GCの機能を備えた機器であればよい。
図6に示すように、電子機器10は、CPU101、メモリコントローラ102、メインメモリ103、キャッシュメモリ104、メモリ管理部105、動作周波数制御部106、及び、実行時間情報保持部107を含むようにして構成される。なお、実際には、電子機器10には、ディスプレイやスピーカ、操作部、通信部、記録部などの機能も設けられるが、ここでは、説明を簡略化するため、それらの機能については省略している。
CPU101は、電子機器10の各部の動作を制御する。また、CPU101は、各種のプログラムを実行する。なお、CPU101は、動作周波数と動作電圧を制御することが可能である。
メモリコントローラ102は、CPU101とメインメモリ103との間に設けられ、CPU101からの制御に従い、メインメモリ103におけるデータの読み込みや書き出しを行う。
メインメモリ103は、メモリコントローラ102からの制御に従い、CPU101により実行されるプログラムで使用されるデータを記憶するRAM(Random Access Memory)である。メインメモリ103は物理メモリであるが、CPU101によるプログラムの実行時には、VMなどによって、ヒープ領域121が割り当てられる。
キャッシュメモリ104は、CPU101とメインメモリ103との間に設けられ、使用頻度の高いデータを蓄積して、CPU101による低速なメインメモリ103へのアクセスを減らすことで、CPU101により実行される処理の速度を高速化する。
メモリ管理部105は、メインメモリ103の管理を行う。具体的には、例えば、メモリ管理部105は、メインメモリ103におけるヒープ領域121に対するGCの処理を行う。メモリ管理部105は、GCの処理の実行を開始するとき、その開始を動作周波数制御部106に通知する。また、メモリ管理部105は、GCの処理の実行を終了するとき、その終了を動作周波数制御部106に通知する。
なお、メモリ管理部105によるGCの処理は、VMの一機能として提供されるほか、例えば、GCの処理をライブラリとして提供して、プログラムにリンクさせるようにしてもよい。
動作周波数制御部106は、メモリ管理部105からの通知に応じて、CPU101の動作周波数を制御する。具体的には、動作周波数制御部106は、メモリ管理部105からのGCの処理の開始の通知に応じて、CPU101の動作周波数を下げる制御を行う。また、動作周波数制御部106は、メモリ管理部105からのGCの処理の終了の通知に応じて、CPU101の動作周波数を元の周波数に戻す制御を行う。
すなわち、動作周波数制御部106が、メモリ管理部105からのGCの処理の開始の通知と終了の通知に応じて、CPU101の動作周波数の制御を行うことで、例えば、図3に示したように、時刻t0〜t1や時刻t2〜t3などの通常の処理と、時刻t1〜t2や時刻t3〜t4などのGCの処理を比べると、通常の処理の実行時よりもGCの処理の実行時のほうが、CPU101の動作周波数が低くなることになる。なお、CPU101の動作周波数が下げられた状態で、所与の時間、GCの処理が実行されるように制御されるのであれば、動作周波数制御部106がCPU101の動作周波数を下げるタイミングは、GCの処理の途中でもよい。また、下げられていたCPU101の動作周波数を上げるタイミングも、GCの処理の途中でもよい。
また、動作周波数制御部106は、メモリ管理部105からのGCの処理の開始の通知と終了の通知に応じて、GCの処理にかかった時間を計時し、実行時間情報として、実行時間情報保持部107に保持する。これにより、実行時間情報保持部107には、CPU101により実行されたプログラムごとに、実行済みのGCの処理にかかった時間が保持されることになる。
動作周波数制御部106は、メモリ管理部105によるGCの処理の実行時や、CPU101によるプログラムの実行時などに、実行時間情報保持部107に保持された実行時間情報に基づいて、GCの処理の実行時に、CPU101の動作周波数の制御を行うかどうかを決定する。そして、動作周波数制御部106は、CPU101の動作周波数の制御を行うと決定したときには、GCの処理の実行時に、CPU101の動作周波数を下げる制御を行う。なお、ここでは、例えば、対象のプログラムについて、直近のGCの処理(例えば、対象のプログラムにおける1回前のGCの処理)の実行時間が所定の閾値を超えるかどうかを判定することなどにより、CPU101の動作周波数の制御を行うかどうかが判定される。
また、メモリ管理部105は、自身が実行するGCの処理のアルゴリズムや、GCの処理が実行されるヒープ領域121に関する種類情報を、適宜、動作周波数制御部106に供給する。動作周波数制御部106は、メモリ管理部105からの種類情報に基づいて、GCの処理の実行時に、CPU101の動作周波数の制御を行うかどうかを決定する。そして、動作周波数制御部106は、CPU101の動作周波数の制御を行うと決定したときには、GCの処理の実行時に、CPU101の動作周波数を下げる制御を行う。
このように、動作周波数制御部106は、次のGCの処理の実行時間を予測可能な予測情報(例えば、実行時間情報及び種類情報の少なくとも1つ)に基づいて、GCの実行時間を予測し、当該実行時間に応じて、CPU101の動作周波数を制御することができる。
なお、動作周波数制御部106は、メモリ管理部105からの通知に応じて、メモリコントローラ102の動作周波数を制御するようにしてもよい。具体的には、動作周波数制御部106は、CPU101の動作周波数を下げる制御が行われている間に、メモリコントローラ102の動作周波数を上げる制御を行うことになる。これにより、GCの処理を高速に行うことができる。
また、動作周波数制御部106は、メモリ管理部105からの通知に応じて、CPU101の動作電圧を制御するようにしてもよい。具体的には、動作周波数制御部106は、CPU101の動作周波数を下げる制御が行われている間に、CPU101の動作電圧を下げる制御を行うことになる。これにより、消費電力をさらに抑えることができる。
以上のように構成される電子機器10においては、動作周波数制御部106によって、メインメモリ103から割り当てられたヒープ領域121に対するGCの処理の実行が開始される前に、CPU101の動作周波数を下げる制御が行われ、当該GCの処理の実行が終了したとき、CPU101の動作周波数を元の周波数に戻す制御が行われる。
このようなCPU101の動作周波数の制御を行うことで、キャッシュミスが頻発すると予想されるGCの処理を、より低い動作周波数で実行することになるので、消費電力を抑えることができる。
また、このようなCPU101の動作周波数の制御を行うことで、CPU101が消費するダイナミック電力(CPU101の動作に伴って消費される電力)と、プログラムの実行速度のトレードオフをよくすることができる。例えば、同一のプログラムを、同一の時間で実行する場合に、より少ない消費電力で実行することが可能となる。また、キャッシュヒット率の変化から遅延なく、かつ、ハードウェアを追加することなく、CPUの動作周波数を変更することができる。
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
このコンピュータでは、例えば、ROM(Read Only Memory)や記録部にインストールされたプログラムが、RAMにロードされて実行されることにより、上述した一連の処理が行われる。なお、コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線又は無線の伝送媒体を介して提供することができる。その他、プログラムは、ROMや記録部に、あらかじめインストールしておくことができる。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
10 電子機器, 101 CPU, 102 メモリコントローラ, 103 メインメモリ, 104 キャッシュメモリ, 105 メモリ管理部, 106 動作周波数制御部, 107 実行時間情報保持部, 121 ヒープ領域

Claims (10)

  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の動作周波数を元の周波数に戻す制御を行う動作周波数制御部
    として機能させるためのプログラム。
JP2013272936A 2013-12-27 2013-12-27 電子機器、制御方法、及び、プログラム Expired - Fee Related JP6217008B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013272936A JP6217008B2 (ja) 2013-12-27 2013-12-27 電子機器、制御方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013272936A JP6217008B2 (ja) 2013-12-27 2013-12-27 電子機器、制御方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2015127869A JP2015127869A (ja) 2015-07-09
JP6217008B2 true JP6217008B2 (ja) 2017-10-25

Family

ID=53837853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013272936A Expired - Fee Related JP6217008B2 (ja) 2013-12-27 2013-12-27 電子機器、制御方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP6217008B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6933052B2 (ja) * 2017-08-23 2021-09-08 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
KR102620731B1 (ko) * 2018-09-27 2024-01-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP2021039581A (ja) * 2019-09-04 2021-03-11 Tdk株式会社 メモリコントローラ及びこれを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297443A (ja) * 2001-04-02 2002-10-11 Sharp Corp 動的メモリ管理装置と動的メモリ管理方法とコンピュータプログラムとこれを記録した記録媒体およびこれらを備えた携帯端末
JP4860104B2 (ja) * 2003-10-09 2012-01-25 日本電気株式会社 情報処理装置
JP4837456B2 (ja) * 2006-06-28 2011-12-14 パナソニック株式会社 情報処理装置

Also Published As

Publication number Publication date
JP2015127869A (ja) 2015-07-09

Similar Documents

Publication Publication Date Title
EP3514689B1 (en) Memory management method and apparatus
EP3213202B1 (en) Thermal mitigation of multi-core processor
TWI656479B (zh) 在多核心處理器中的非對稱核心之間遷移執行緒
KR101629879B1 (ko) 캐시 사용 기반 어댑티브 스케줄링을 가지는 멀티코어 컴퓨터 시스템
EP3245587B1 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
EP3506106B1 (en) Method for processing application, electronic device, and computer-readable storage medium
JP5839119B2 (ja) 情報処理装置、電池残量通知方法および電池残量通知プログラム
EP3506105B1 (en) Method and device for processing a memory and storage medium
US9286199B2 (en) Modifying memory space allocation for inactive tasks
JP2009503627A (ja) コンピュータ装置におけるメモリ管理
US10261918B2 (en) Process running method and apparatus
US9601180B2 (en) Automatic partial array self-refresh
EP2972826B1 (en) Multi-core binary translation task processing
US11782761B2 (en) Resource management unit for capturing operating system configuration states and offloading tasks
JP6217008B2 (ja) 電子機器、制御方法、及び、プログラム
US20160170474A1 (en) Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
US9229760B2 (en) Virtual memory management to reduce power consumption in the memory
CN112654965A (zh) 动态模块的外部分页和交换
US10678706B2 (en) Cache memory with scrubber logic
TWI779338B (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法
Li et al. IOSR: Improving I/O Efficiency for Memory Swapping on Mobile Devices Via Scheduling and Reshaping
KR20210022850A (ko) 반도체 장치의 성능 부스팅 제어 방법 및 이를 수행하는 반도체 장치
CN116414555A (zh) 在多核处理设备中调度缓存预算的方法和执行其的设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161227

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20161227

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20161227

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170328

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170906

R150 Certificate of patent or registration of utility model

Ref document number: 6217008

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees