(57)【特許請求の範囲】
【請求項１】
演算処理に利用される情報を記憶するメモリと、
前記メモリに記憶された情報を用いて演算処理を行う演算処理部と、
前記メモリの消費電力を、前記演算処理部が実行するアプリケーションごとに測定する測定部と、
前記測定部が測定した消費電力に応じて、前記演算処理部が前記アプリケーションを実行する際の動作周波数を設定する設定部と、
を有することを特徴とする情報処理装置。 
【請求項２】
前記設定部は、前記測定部が測定した消費電力が所定の閾値よりも多い場合には、前記演算処理部の動作周波数を所定の周波数よりも低い値に設定し、前記測定部が測定した消費電力が所定の閾値よりも少ない場合には、前記演算処理部の動作周波数を所定の周波数よりも高い値に設定することを特徴とする請求項１に記載の情報処理装置。 
【請求項３】
前記設定部は、前記メモリの消費電力の範囲と前記演算処理部の動作周波数とを対応付けた設定情報を有し、前記測定部が測定した消費電力に対応する動作周波数を前記設定情報から判別し、前記演算処理部の動作周波数を該判別した動作周波数に設定することを特徴とする請求項１または２に記載の情報処理装置。 
【請求項４】
前記設定部は、所定のアプリケーションを実行した際に前記演算処理部が消費する電力量が最も少なくなる動作周波数と、当該アプリケーションを前記演算処理部が実行する際の前記メモリの消費電力とを対応付けた設定情報を有することを特徴とする請求項３に記載の情報処理装置。 
【請求項５】
前記設定部は、前記演算処理部の動作周波数を設定してから所定の時間が経過するまでの間に前記測定部が測定した電力の平均値を算出し、当該算出した電力の平均値に応じて、前記演算処理部の動作周波数を新たに設定することを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。 
【請求項６】
前記設定部は、前記演算処理装置の動作周波数を示す周波数情報を出力し、
前記演算処理部は、前記設定部が出力した周波数情報を参照し、当該参照した周波数情報が示す動作周波数で動作することを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。 
【請求項７】
前記演算処理部は、自身の動作周波数を示す値を格納するレジスタを有し、
前記設定部は、前記レジスタに格納された値を更新することで、前記演算処理部の動作周波数を設定することを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。
【請求項８】
動作周波数を変更可能な演算処理装置と、前記演算処理装置が利用する情報を記憶する記憶装置と、前記記憶装置の消費電力を測定する電力測定装置とを有する情報処理装置の制御方法において、
前記電力測定装置が、前記演算処理装置が実行するアプリケーションごとに、前記記憶装置の消費電力を測定し、
前記電力測定装置が測定した前記記憶装置の消費電力に応じて、前記演算処理装置が前記アプリケーションを実行する際の動作周波数を変更する処理を含むことを特徴とする情報処理装置の制御方法。 
【請求項９】
動作周波数を変更可能な演算処理装置と、前記演算処理装置が利用する情報を記憶する記憶装置と、前記記憶装置の消費電力を測定する電力測定装置とを有する情報処理装置によって実行される制御プログラムにおいて、
前記電力測定装置が前記演算処理装置が実行するアプリケーションごとに測定した前記記憶装置の消費電力を取得し、
取得した消費電力に応じて、前記演算処理装置が前記アプリケーションを実行する際の動作周波数を設定する
ことを特徴とする制御プログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の動作周波数を動的に変更するＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）技術が知られている。このような技術が適用された情報処理装置は、ＣＰＵの動作周波数とＣＰＵに印加する電圧とを低く設定変更することで、ＣＰＵの消費電力を削減する。
【０００３】
このような情報処理装置の一例として、単位時間あたりのＣＰＵの使用率に応じて、ＣＰＵの動作周波数を変更するＯｎｄｅｍａｎｄ  Ｇｏｖｅｒｎｏｒの技術が適用された情報処理装置が知られている。このような情報処理装置は、単位時間あたりのＣＰＵの使用率が所定の閾値よりも低い場合には、ＣＰＵの動作周波数を所定の周波数よりも低い周波数に設定することで、ＣＰＵの消費電力を削減する。
【０００４】
ここで、ＣＰＵの使用率が所定の閾値よりも高い際に動作周波数を下げた場合は、消費電力が下がるものの、性能低下によりアプリケーションの実行時間が延びるため、アプリケーションの実行に要する消費電力量が増える場合がある。このため、情報処理装置は、単位時間あたりのＣＰＵの使用率が所定の閾値よりも高い場合には、ＣＰＵの周波数を所定の周波数よりも高い周波数に設定することで、性能の低下を防ぐ。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】佐々木  広、浅井  雅司、池田  佳路、近藤  正章、中村  宏  「統計情報に基づく動的電源電圧制御手法」  情報処理学会論文誌：コンピューティングシステム  Ｖｏｌ．４７  Ｎｏ．ＳＩＧ１８（ＡＣＳ１６）  Ｎｏｖ．２００６
【非特許文献２】K.  Choi,  "Fine-Grained  Dynamic  Voltage  and  Frequency  Scaling  for  Precise  Energy  and  Performance  Trade-off  based  on  the  Ratio  of  Off-chip  Access  to  On-chip  Computation  Times",  2004.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した単位時間あたりのＣＰＵの使用率に応じてＣＰＵの動作周波数を変更する技術では、ＣＰＵの使用率が所定の閾値よりも高い場合は、動作周波数は高い周波数に設定されるため、ＣＰＵの消費電力を削減できないという問題がある。
【０００７】
本発明の１つの側面では、アプリケーション実行中におけるＣＰＵの消費電力の削減を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の１つの側面では、演算処理に利用される情報を記憶するメモリと、メモリに記憶された情報を用いて演算処理を行う演算処理部と、メモリの消費電力を、演算処理部が実行するアプリケーションごとに測定する測定部とを有する情報処理装置である。このような情報処理装置は、測定部が測定した消費電力に応じて、演算処理部がアプリケーションを実行する際の動作周波数を設定する。
【発明の効果】
【０００９】
１つの側面では、アプリケーション実行中におけるＣＰＵの消費電力の削減を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る情報処理装置の一例を説明するための図である。
【図２】図２は、周波数依存率と実行時間との関係を説明するための図である。
【図３】図３は、ＣＰＵの周波数依存率とメモリの消費電力との関係の一例を説明するための図である。
【図４】図４は、動作周波数テーブルの一例を説明するための図である。
【図５】図５は、各動作周波数においてアプリケーションを実行した際のＣＰＵにおける消費電力量を説明するための図である。
【図６】図６は、アプリケーションと消費電力量が最小となる動作周波数との関係を説明するための図である。
【図７】図７は、メモリの消費電力と設定するＣＰＵの動作周波数との関係の一例を説明するための図である。
【図８】図８は、実施例１に係る情報処理装置が実行する処理の流れの一例を説明するためのフローチャートである。
【図９】図９は、実施例２に係る情報処理装置の一例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して本願に係る情報処理装置、制御プログラムおよび制御方法について説明する。
【実施例１】
【００１２】
以下の実施例１では、図１を用いて、情報処理装置の一例を説明する。図１は、実施例１に係る情報処理装置の一例を説明するための図である。
【００１３】
図１に示すように、情報処理装置１は、ハードウェア１０を有し、ＢＩＯＳ（Basic  Input/Output  System）２０およびＯＳ（Operating  System）３０を実行する。ハードウェア１０は、ＣＰＵ（Central  Processing  Unit）１１、電源１２、メモリ１３、抵抗１４、電力測定部１５を有する。
【００１４】
また、ＯＳ３０は、ＣＰＵ周波数制御部３１、動作周波数設定ファイル３５を有する。また、ＣＰＵ周波数制御部３１は、動作周波数テーブル３２、判別部３３、設定部３４を有する。なお、ＢＩＯＳ２０は、ファームウェアの一つで、コンピュータに搭載されたプログラムのうち、ハードウェアとの最も低レベルの入出力を行うためのプログラムであるものとし、以下の説明を省略する。
【００１５】
まず、ハードウェア１０が有するＣＰＵ１１、電源１２、メモリ１３、抵抗１４、電力測定部１５について説明する。ＣＰＵ１１は、キャッシュを有し、キャッシュに記憶された情報、または、メモリ１３が記憶する情報を利用して演算処理を実行する。
【００１６】
具体的には、ＣＰＵ１１は、電源１２から電力の供給を受け、アプリケーションの実行に係る演算処理を実行する。また、ＣＰＵ１１は、演算処理に利用する情報が自身のキャッシュに記憶されている場合には、キャッシュに記憶されている情報を利用して演算処理を実行する。また、ＣＰＵ１１は、演算処理に利用する情報が自身のキャッシュに記憶されていない場合には、メモリ１３にアクセスし、演算処理に利用する情報をメモリ１３から取得する。そして、ＣＰＵ１３は、取得した情報を自身のキャッシュに記憶させるとともに、取得した情報を利用して、アプリケーションの実行に係る演算処理を実行する。
【００１７】
また、ＣＰＵ１１は、複数の動作周波数で動作することが可能な演算処理装置である。すなわち、ＣＰＵ１１は、ＤＶＦＳ（Dynamic  Voltage  and  Frequency  Scaling）の技術が組み込まれている。そして、ＣＰＵ１１は、所定の時間が経過する度に、ＯＳ３０が有する動作周波数設定ファイル３５を参照し、参照した動作周波数設定ファイル３５が示す情報に応じて、自身の動作周波数を変更する。
【００１８】
例えば、ＣＰＵ１１は、自身の動作周波数として、２，９２６，０００ｋＨｚ、２，６６０，０００ｋＨｚ、２，３９４，０００ｋＨｚ、２，１２８，０００ｋＨｚ、１，８６２，０００ｋＨｚ、１，５９６，０００ｋＨｚのうち、いずれかの動作周波数で演算処理を実行できる。そして、ＣＰＵ１１は、動作周波数設定ファイル３５を参照し、参照した動作周波数設定ファイル３５が２，６２６，０００ｋＨｚを示す場合には、自身の動作周波数を２，６２６，０００ｋＨｚに設定し、設定した動作周波数で演算処理を実行する。また、例えば、ＣＰＵ１１は、動作周波数設定ファイル３５が１，５９６，０００ｋＨｚを示す場合には、自身の動作周波数を１，５９６，０００ｋＨｚに設定し、設定した動作周波数で演算処理を実行する。
【００１９】
電源１２は、ハードウェア１０が有する各部に電力を供給する電源装置である。例えば、電源１２は、情報処理装置１の外部から電圧の印加を受けると、電圧をＣＰＵ１１やメモリ１３に対して適切な電圧に変圧し、変圧した電圧をＣＰＵ１１やメモリ１３に対して印加することで、電力の供給を行う。
【００２０】
メモリ１３は、ＣＰＵ１１が演算処理の実行に利用する情報を記憶する記憶装置である。また、メモリ１３は、情報の読み出しや書き込みを実行するたびに、電源１２から供給される電力を消費する。
【００２１】
抵抗１４は、メモリ１３に対して供給される電力を測定するために設置される微小な抵抗である。電力測定部１５は、抵抗１４の両端において発生する電位差と抵抗値から求めた電流と、メモリ１３と抵抗１４との間の電圧より、メモリ１３が消費する電力を得る。そして、電力測定部１５は、測定した電圧の値をＣＰＵ周波数制御部３１が有する判別部３３に送信する。
【００２２】
このようなハードウェア１０は、ＣＰＵ１１がメモリ１３に記憶された情報を利用しながらアプリケーションを実行する。このため、ＣＰＵ１１およびメモリ１３は、アプリケーションの実行に応じて電力を消費することとなる。ここで、ＣＰＵ１１が消費する電力は、動作周波数と電圧の２乗との積で表され、ＣＰＵ１１がアプリケーションを実行した際に消費する電力量は、ＣＰＵ１１が消費する電力とアプリケーションの実行に要した時間との積で表される。
【００２３】
一方、ＣＰＵ１１が実行するアプリケーションには、ＣＰＵ１１の動作周波数を変化させた際に、実行に要する時間が変化するアプリケーションと、実行に要する時間があまり変化しないアプリケーションとが存在する。つまり、ＣＰＵ１１が実行するアプリケーションには、ＣＰＵ１１の動作周波数に性能が依存するアプリケーションと、ＣＰＵ１１の動作周波数に性能があまり依存しないアプリケーションとが存在する。
【００２４】
図２は、周波数依存率と実行時間との関係を説明するための図である。なお、周波数依存率とは、異なる２つの動作周波数でアプリケーションを実行した際の、クロック周期の増加率に対するアプリケーションの実行時間の増加率の割合である。
【００２５】
図２に示す例では、クロック周期（n/s:Nano Second）を横軸とし、実行時間を縦軸とし、それぞれ異なる周波数依存率を有するアプリケーションを異なるクロック周期で実行した際に要した実行時間をプロットした。なお、図２に示す例では、クロック周期１ｎｓ（動作周波数が１ＧＨｚ）のときのアプリケーションの実行時間を１として、各アプリケーションの実行に要した実行時間の比をプロットした。また、図２に示す例では、周波数依存率が１００パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を直線で、周波数依存率が５０パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を点線で示した。また、図２に示す例では、周波数依存率が０パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を破線で示した。
【００２６】
図２に示すように、周波数依存率が１００パーセントとなるアプリケーションは、クロック周期を例えば２倍に増加させると（つまり、周波数を５００ＭＨｚとすると）、実行時間は２倍に増加する。一方、周波数依存率が０パーセントとなるアプリケーションは、クロック周期を２倍に増加しても、実行時間が増加しない。また、周波数依存率が５０パーセントとなるアプリケーションは、クロック周期を２倍に増加させると、実行時間が１．５倍に増加する。
【００２７】
つまり、ＣＰＵ１１は、動作周波数に性能が依存するアプリケーションを実行する際に、動作周波数を減少させた場合には、アプリケーションの実行に要する時間を長くしてしまう。このため、ＣＰＵ１１は、動作周波数に性能が依存するアプリケーションを実行する際に、動作周波数を減少させた場合には、消費する電力量を増加させてしまう。このため、ＣＰＵ１１は、動作周波数に性能が依存するアプリケーションを実行する場合には、動作周波数を減少させない。
【００２８】
また、ＣＰＵ１１は、動作周波数に性能があまり依存しないアプリケーションを実行する際に、動作周波数を減少させても、アプリケーションの実行に要する時間があまり変わらない。この結果、ＣＰＵ１１は、動作周波数に性能があまり依存しないアプリケーションを実行する場合は、動作周波数を減少させることで、消費電力を削減することができる。
【００２９】
次に、ＣＰＵ１１の動作周波数を変化させた際に、動作周波数に性能があまり依存しないアプリケーションと、動作周波数に性能が依存するアプリケーションについて説明する。例えば、動作周波数に性能があまり依存しないアプリケーションとしては、実行時にメモリ１３に対するアクセスが多いアプリケーションが該当する。
【００３０】
すなわち、メモリ１３の動作周波数は、ＣＰＵ１１の動作周波数とは独立した値が設定される。また、メモリ１３の動作周波数は、一般に、ＣＰＵ１１の動作周波数よりも低い値が設定される。このため、メモリ１３に対するアクセスが多いアプリケーションの性能は、メモリ１３の性能によって決定づけられる。したがって、メモリ１３に対するアクセスが多いアプリケーションの実行時にＣＰＵ１１の動作周波数を減少させても、あまり性能が下がらないので、動作周波数に性能があまり依存しないアプリケーションといえる。
【００３１】
一方、動作周波数に性能が依存するアプリケーションとしては、実行時にメモリ１３に対するアクセスが少ないアプリケーションが該当する。すなわち、メモリ１３に対するアクセスが少ないアプリケーションは、ＣＰＵ１１が有するキャッシュのヒット率が高いので、ＣＰＵ１１の動作周波数に応じた性能を発揮する。このため、メモリ１３に対するアクセスが少ないアプリケーションは、ＣＰＵ１１の動作周波数に性能が依存するアプリケーションといえる。
【００３２】
ここで、メモリ１３は、アクセスの回数に応じた電力を消費する。すなわち、メモリ１３は、アクセスの回数が通常よりも多い場合には、通常よりも多くの電力を消費し、アクセスの回数が通常よりも少ない場合には、通常よりも少ない電力を消費する。
【００３３】
このため、ＣＰＵ１１は、メモリ１３の消費電力が通常より多い場合には、動作周波数を減少させても、性能があまり低下しないアプリケーション、つまり、動作周波数に性能が依存しないアプリケーションを実行していると判別する。このような場合には、ＣＰＵ１１は、動作周波数を減少させることで、アプリケーションの性能をあまり低下させずに、消費電力を削減する。
【００３４】
一方、ＣＰＵ１１は、メモリ１３の消費電力が通常より少ない場合には、動作周波数を減少させると性能が低下するアプリケーション、つまり、動作周波数に性能が依存するアプリケーションを実行していると判別する。このような場合には、ＣＰＵ１１は、動作周波数を減少させないので、性能を低下させることなくアプリケーションを実行することができる。
【００３５】
ここで、アプリケーション実行時におけるメモリ１３の消費電力と、アプリケーションのＣＰＵ周波数依存率との関係の一例を説明する。図３は、各アプリケーションのＣＰＵ周波数依存率と、消費電力との関係の一例を説明するための図である。なお、図３には、ＣＰＵ１１が実行するアプリケーション名と、各アプリケーションのＣＰＵ周波数依存率と、各アプリケーションをＣＰＵ１１が実行する際にメモリ１３が消費した電力の平均値（Ｗａｔｔ）とを示す。
【００３６】
また、図３に示す例は、ＣＰＵ１１にＸｅｏｎ  Ｘ５５７０を適用し、メモリ１３に１２ＧＢ（Giga  Byte）の容量を有する１３３３Ｍ（Mega）ＨｚのＤＤＲ３（Double-Data-Rate3  Synchronous  Dynamic  Random  Access  Memory)を適用して測定した。また、ＯＳ３０には、ＣｅｎｔＯＳ５．５を適用した。
【００３７】
具体的には、図３に示す例では、アプリケーション名「４４４．ｎａｍｄ」のＣＰＵ周波数依存率が「９９．８（％）」であり、メモリの消費電力の平均が「１７．４（Ｗ）」であることを示す。また、アプリケーション名「４７１．ｏｍｎｅｔｐｐ」のＣＰＵ周波数依存率が「３３．０（％）」であり、メモリの消費電力の平均が「２６．０（Ｗ）」であることを示す。また、アプリケーション名「４２９．ｍｃｆ」のＣＰＵ周波数依存率が「３１．３（％）」であり、メモリの消費電力の平均が「２８．８（Ｗ）」であることを示す。
【００３８】
また、アプリケーション名「４５０．ｓｏｐｌｅｘ」のＣＰＵ周波数依存率が「２７．５（％）」であり、メモリの消費電力の平均が「３０．４（Ｗ）」であることを示す。また、アプリケーション名「４３３．ｍｉｌｃ」のＣＰＵ周波数依存率が「１４．９（％）」であり、メモリの消費電力の平均が「３３．８（Ｗ）」であることを示す。また、アプリケーション名「４３７．ｌｅｓｌｉｅ３ｄ」のＣＰＵ周波数依存率が「１５．３（％）」であり、メモリの消費電力の平均が「３４．６（Ｗ）」であることを示す。また、アプリケーション名「４５９．ＧｅｍｓＦＤＴＤ」のＣＰＵ周波数依存率が「４．８（％）」であり、メモリの消費電力の平均が「３５．４（Ｗ）」であることを示す。
【００３９】
ここで、図３に示す各アプリケーションのＣＰＵ周波数依存率とメモリの消費電力とは、負の相関を有し、その値は約「−０．９６」となる。このため、情報処理装置１は、アプリケーションのＣＰＵ周波数依存率の解析を予め行わずとも、メモリ１３の消費電力に応じてＣＰＵ１１の動作周波数を制御することで、アプリケーションのＣＰＵ周波数依存率に応じた動作周波数の制御を行う事ができる。結果、情報処理装置１は、容易に、ＣＰＵ１１の消費電力を削減することができる。
【００４０】
次に、ＣＰＵ周波数制御部３１が有する動作周波数テーブル３２、判別部３３、設定部３４について説明する。動作周波数テーブル３２は、メモリ１３の消費電力を示す情報と、ＣＰＵ１１の動作周波数を示す情報とを対応付けて記憶する。具体的には、動作周波数テーブル３２は、メモリ１３の消費電力の範囲を示す情報と、ＣＰＵ１１の動作周波数を示す情報とを対応付けて記憶する。
【００４１】
例えば、図４は、動作周波数テーブルの一例を説明するための図である。図４に示す例では、動作周波数テーブル３２は、メモリの消費電力と、動作周波数とを対応付けて記憶する。詳細には、動作周波数テーブル３２は、「１７．４（Ｗａｔｔ）未満」を示す情報と「２，９２６，０００（ｋＨｚ）」を示す情報とを対応付けて記憶する。また、動作周波数テーブル３２は、「１７．４（Ｗａｔｔ）以上２６．０（Ｗａｔｔ）未満」を示す情報と「２，６６０，０００（ｋＨｚ）」を示す情報とを対応付けて記憶する。また、動作周波数テーブル３２は、「２６．０（Ｗａｔｔ）以上」を示す情報と「１，５９６，０００（ｋＨｚ）」を示す情報とを対応付けて記憶する。
【００４２】
図１に戻って、動作周波数設定ファイル３５は、ＣＰＵ１１の動作周波数を示す情報が格納されるファイルである。例えば、動作周波数設定ファイル３５には、ＣＰＵ１１の動作周波数を「２，９２６，０００（ｋＨｚ）」に設定する旨の情報が格納される。
【００４３】
判別部３３は、電力測定部１５が測定したメモリ１３の消費電力に応じて、ＣＰＵ１１の動作周波数を設定する。具体的には、判別部３３は、電力測定部１５が測定したメモリの消費電力が所定の閾値よりも高い場合には、所定の動作周波数よりも低い値の動作周波数を設定部３４に通知する。また、判別部３３は、電力測定部１５が測定したメモリの消費電力が所定の閾値よりも低い場合には、所定の動作周波数よりも高い値の動作周波数を判別部３３に通知する。
【００４４】
次に、判別部３３が実行する処理の一例について説明する。例えば、判別部３３は、１秒間よりも短い時間間隔で電力測定部１５から消費電力の値を受信する。そして、判別部３３は、過去１秒間の間に受信した消費電力の値の平均値を算出する。また、判別部３３は、動作周波数テーブル３２を参照し、算出した平均値が、動作周波数テーブル３２に記憶された消費電力の範囲のうち、いずれの消費電力の範囲に含まれるかを判別する。
【００４５】
そして、判別部３３は、動作周波数テーブル３２に記憶された消費電力の範囲を示す情報のうち、算出した平均値を含む範囲を示す情報と対応付けられた動作周波数を示す情報を判別する。その後、判別部３３は、判別した動作周波数を示す情報を設定部３４へ送信する。
【００４６】
設定部３４は、ＣＰＵ１１の動作周波数を判別部３３が判別した情報が示す動作周波数に設定する。具体的には、設定部３４は、判定部３３から動作周波数を示す情報を受信する。そして、設定部３４は、動作周波数設定ファイル３５に格納された情報を、受信した動作周波数を示す情報に更新する。
【００４７】
このような処理を実行することにより、ＣＰＵ周波数制御部３１は、ＣＰＵ１１が消費する電力を削減することができる。すなわち、ＣＰＵ周波数制御部３１は、メモリ１３の消費電力に基づいて、実行中のアプリケーションが動作周波数に依存するアプリケーションであるか否かを判別する。
【００４８】
そして、ＣＰＵ周波数制御部３１は、実行中のアプリケーションが、動作周波数に依存するアプリケーションではないと判別した場合は、ＣＰＵ１１の動作周波数を減少させることで、ＣＰＵ１１の消費電力を削減する。一方、ＣＰＵ周波数制御部３１は、実行中のアプリケーションが動作周波数に依存するアプリケーションであると判別した場合は、ＣＰＵ１１の動作周波数を減少させず、通常、または、通常よりも大きい値に設定することで、アプリケーションの性能低下を防ぐ。
【００４９】
次に、動作周波数テーブル３２が記憶するメモリの消費電力とＣＰＵ１１の動作周波数との組を定める処理について説明する。図５は、各動作周波数においてアプリケーションを実行した際のＣＰＵにおける消費電力量を説明するための図である。なお、図５には、各アプリケーションごとに実行したＣＰＵ１１の動作周波数を横軸とし、ＣＰＵ１１の動作周波数を各動作周波数とした際にアプリケーションの実行に要したＣＰＵ１１の消費電力量を縦軸とした。
【００５０】
なお、図５に示す例では、各アプリケーションの実行に要したＣＰＵ１１の消費電力量について、ＣＰＵ１１の動作周波数が「２，９２６，０００（ｋＨｚ）」である際に要した消費電力量を「１」とした比率を示した。
【００５１】
具体的には、図５に示す例では、ＣＰＵ１１の動作周波数を「２，９２６，０００（ｋＨｚ）」、「２，６６０，０００（ｋＨｚ）」、「２，３９４，０００（ｋＨｚ）」として各アプリケーションを実行した際のＣＰＵ１１の消費電力量の比を示す。また、ＣＰＵ１１の動作周波数を「２，１２８，０００（ｋＨｚ）」、「１，８６２，０００（ｋＨｚ）」、「１，５９６，０００（ｋＨｚ）」とした際に各アプリケーションを実行した際に要したＣＰＵ１１の消費電力量の比を示す。
【００５２】
また、図５に示す例では、「４４４．ｎａｍｄ」、「４７１．ｏｍｎｅｔｐｐ」、「４２９．ｍｃｆ」を実行した際のＣＰＵ１１の消費電力量の比を示す。また、図５に示す例では、「４５０．ｓｏｐｌｅｘ」、「４３７．ｌｅｓｌｉｅ３ｄ」、「４３３．ｍｉｌｃ」、「４５９．ＧｅｍｓＦＤＴＤ」を実行した際のＣＰＵ１１の消費電力量の比を示す。
【００５３】
図５に示すように、「４４４．ｎａｎｄ」は、ＣＰＵ１１の動作周波数を減少させた場合に、消費電力量があまり減少しない。一方、他のアプリケーション「４７１．ｏｍｎｅｔｐｐ」、「４２９．ｍｃｆ」、「４５０．ｓｏｐｌｅｘ」は、ＣＰＵ１１の動作周波数を減少させるとともに、消費電力量が減少する。また、アプリケーション「４３７．ｌｅｓｌｉｅ３ｄ」、「４３３．ｍｉｌｃ」、「４５９．ＧｅｍｓＦＤＴＤ」も、ＣＰＵ１１の動作周波数を減少させるとともに、消費電力量が減少する。
【００５４】
図６は、アプリケーションと消費電力量が最小となる動作周波数との関係を説明するための図である。図６に示す例では、各アプリケーション名と、各アプリケーションを実行した際のメモリ１３の消費電力の平均と、ＣＰＵ１１の消費電力量が最小となる動作周波数とを示す。ここで、各アプリケーション名について、図６に示す消費電力量が最小となる動作周波数は、図５に示したＣＰＵ１１の消費電力量の比が最小となる動作周波数と同じである。また、図６に示したメモリ１３の消費電力の平均は、図３に示したメモリ１３の消費電力の平均と同じである。
【００５５】
図６に示すように、アプリケーション「４４４．ｎａｍｄ」を実行する際にＣＰＵ１１の消費電力量が最小となるのは、ＣＰＵ１１の動作周波数を「２，６６０，０００（ｋＨｚ）」とした場合である。また、他のアプリケーションを実行する際にＣＰＵ１１の消費電力量が最小となるのは、ＣＰＵ１１の動作周波数を「１，５９６，０００（ｋＨｚ）」とした場合である。このため、情報処理装置１は、メモリ１３の消費電力の平均が「２６．０（Ｗ）」以上である場合には、ＣＰＵ１１の動作周波数を「１，５９６，０００（ｋＨｚ）」とすべきである。
【００５６】
一方、図６に示す例では、アプリケーション「４４４．ｎａｍｄ」を実行した際におけるメモリ１３の消費電力の平均は、「１７．４（Ｗ）」であり、ＣＰＵ１１の消費電力量が最も少なくなる動作周波数は、「２，６６０，０００（ｋＨｚ）」である。このため、情報処理装置１は、メモリ１３の消費電力の平均が「１７．４（Ｗ）」である場合には、ＣＰＵ１１の動作周波数を「２，６６０，０００（ｋＨｚ）」とすべきである。
【００５７】
しかし、図６に示す例では、メモリ１３の消費電力の平均が「１７．４（Ｗ）〜２６．０（Ｗ）」である場合に、ＣＰＵ１１の消費電力量が最も少なくなる動作周波数は自明ではない。すなわち、「２，６６０，０００（ｋＨｚ）」〜「１，５９６，０００（ｋＨｚ）」のうち、どの動作周波数を設定した場合にＣＰＵ１１の消費電力量が最小となるかが自明ではない。また、図６に示す例では、メモリ１３の消費電力の平均が「１７．４（Ｗ）」以下である場合に、ＣＰＵ１１の動作周波数を「２，９２６，０００（ｋＨｚ）」とすべきか「２，６６０，０００（ｋＨｚ）」とすべきかが自明ではない。
【００５８】
しかし、周波数依存率が高いアプリケーションを実行する際に、ＣＰＵ１１の動作周波数を低い値に設定した場合には、アプリケーションの性能低下により実行時間が延び、ＣＰＵ１１の消費電力量が増加する。このため、ＣＰＵ１１に設定すべき動作周波数が自明ではない場合は、できるだけ高い値の動作周波数を設定すべきである。
【００５９】
そこで、情報処理装置１は、メモリ１３の消費電力の平均が「１７．４（Ｗ）以上２６．０（Ｗ）未満」である場合には、動作周波数を「２，６６０，０００（ｋＨｚ）」に設定する旨を示す動作周波数テーブル３２を有することとなる。また、情報処理装置１は、メモリ１３の消費電力の平均が「１７．４（Ｗ）」未満である場合には、動作周波数を「２，９２６，０００（ｋＨｚ）」に設定する。
【００６０】
図７は、メモリの消費電力と設定するＣＰＵの動作周波数との関係の一例を説明するための図である。図７に示す例では、メモリの消費電力を横軸とし、ＣＰＵの動作周波数を縦軸として、図６に示す各アプリケーション実行時におけるメモリ１３の消費電力と、ＣＰＵ１１の消費電力量が最小となる動作周波数とをプロットした。
【００６１】
図７に示すように、情報処理装置１は、メモリ１３の消費電力が「２６．０（Ｗ）」以上である場合は、ＣＰＵの動作周波数を「１，５９６，０００（ｋＨｚ）」とすべきことが明らかである。ここで、メモリ１３の消費電力の平均が「１７．４（Ｗ）〜２６．０（Ｗ）」である場合に、ＣＰＵ１１の消費電力量が最も少なくなる動作周波数は自明ではない。
【００６２】
しかし、情報処理装置１は、ＣＰＵ１１の動作周波数をできるだけ高い値に設定すべきである。このため、情報処理装置１は、メモリ１３の消費電力の平均が「１７．４（Ｗ）以上２６．０（Ｗ）未満」である場合には、動作周波数を「２，６６０，０００（ｋＨｚ）」に設定する旨を示す動作周波数テーブル３２を有することとなる。また、情報処理装置１は、メモリ１３の消費電力の平均が「１７．４（Ｗ）」未満である場合には、動作周波数を「２，９２６，０００（ｋＨｚ）」に設定する旨を示す動作周波数テーブル３２を有することとなる。
【００６３】
このように、情報処理装置１は、複数のアプリケーションについて、所定の動作周波数で測定されたメモリ１３の消費電力と、実行時にＣＰＵ１１の消費電力量が最も少なくなる動作周波数とに応じた動作周波数テーブル３２を有する。このため、情報処理装置１は、ＣＰＵ１１が消費する電力量を削減することができる。
【００６４】
［情報処理装置の処理の流れ］
次に、図８を用いて、情報処理装置１が実行する処理の流れの一例について説明する。図８は、実施例１に係る情報処理装置が実行する処理の流れを説明するためのフローチャートである。なお、情報処理装置１は、図８に示す処理を１秒おきに実行する。
【００６５】
まず、情報処理装置１は、メモリ１３が過去１秒間に消費した電力の平均値を算出する（ステップＳ１０１）。次に、情報処理装置１は、動作周波数テーブル３２を参照し（ステップＳ１０２）以下に続くステップＳ１０３〜ステップＳ１０７を実行する。
【００６６】
すなわち、情報処理装置１は、メモリ１３が消費した電力の平均値が１７．４（Ｗ）未満であるか否かを判別する（ステップＳ１０３）。そして、情報処理装置１は、メモリ１３が消費した電力の平均値が１７．４（Ｗ）未満であると判別した場合には（ステップＳ１０３肯定）、ＣＰＵ１１の動作周波数を「２９２６０００（ｋＨｚ）」に設定し（ステップＳ１０４）、処理を終了する。
【００６７】
一方、情報処理装置１は、メモリ１３が消費した電力の平均値が１７．４（Ｗ）以上であると判別した場合には（ステップＳ１０３否定）、メモリ１３が消費した電力の平均値が２６．０（Ｗ）未満であるか否かを判別する（ステップＳ１０５）。そして、情報処理装置１は、メモリ１３が消費した電力の平均値が２６．０（Ｗ）未満であると判別した場合には（ステップＳ１０５肯定）、ＣＰＵ１１の動作周波数を「２６６００００（ｋＨｚ）」に設定し（ステップＳ１０６）、処理を終了する。
【００６８】
また、情報処理装置１は、メモリ１３が消費した電力の平均値が２６．０（Ｗ）以上であると判別した場合には（ステップＳ１０５否定）、ＣＰＵの動作周波数を「１５９６０００（ｋＨｚ）」に設定し（ステップＳ１０７）、処理を終了する。
【００６９】
［実施例１の効果］
上述したように、情報処理装置１は、動作周波数を設定可能なＣＰＵ１１と、メモリ１３とを有し、メモリ１３が消費した電力を測定する。そして、情報処理装置１は、測定した電力に応じて、ＣＰＵ１１の動作周波数を設定する。このため、情報処理装置１は、ＣＰＵ１１の使用率が高い場合にも、ＣＰＵ１１が消費する電力量を削減することができる。
【００７０】
また、情報処理装置１は、メモリ１３の消費電力が所定の閾値よりも多い場合は、ＣＰＵ１３の動作周波数を所定の周波数よりも低い値に設定し、メモリ１３の消費電力が所定の閾値より少ない場合は、ＣＰＵ１３の動作周波数を所定の周波数より高い値に設定する。このため、情報処理装置１は、アプリケーションによるＣＰＵ１１の利用率が高い場合にも、アプリケーションの性能をあまり低下させることなく、ＣＰＵ１１の消費電力を削減することができる。
【００７１】
また、情報処理装置１は、消費電力の範囲を示す複数の情報と、動作周波数を示す複数の情報とを対応付けた情報を記憶する動作周波数テーブル３２を有する。そして、情報処理装置１は、ＣＰＵ１１の動作周波数として、測定したメモリ１３の消費電力を含む範囲を示す情報と対応付けて動作周波数テーブル３２に記憶された動作周波数を設定する。このため、情報処理装置１は、ＣＰＵ１１に動作周波数を迅速に設定することができる。
【００７２】
また、情報処理装置１は、アプリケーションを実行した際にＣＰＵ１１の消費電力量が最も少なくなる動作周波数と、アプリケーションを所定の動作周波数で実行した際にメモリ１３の消費電力とを対応付けて記憶する動作周波数テーブル３２を有する。このため、情報処理装置１は、ＣＰＵ１１に対して、事前に解析された最適な動作周波数を設定することができる。
【００７３】
また、情報処理装置１は、ＣＰＵ１１の動作周波数を設定してから所定の時間が経過するまでの間にメモリ１３が消費した電力の平均値を算出し、算出した電力の平均値に応じて、ＣＰＵ１１の動作周波数を新たに設定する。このため、情報処理装置１は、ＣＰＵ１１が実行するアプリケーションが頻繁に変わる場合にも、ＣＰＵ１１が消費する電力量を効率良く削減できる動作周波数を設定することができる。
【００７４】
また、情報処理措置１は、所定の時間間隔で、動作周波数設定ファイル３５を参照し、動作周波数設定ファイル３５が示す動作周波数で演算処理を実行するＣＰＵ１１を有する。そして、情報処理装置１は、ＣＰＵ１１に設定する動作周波数を示す動作周波数設定ファイル３５を出力する。このため、情報処理装置１は、容易にＣＰＵ１１の動作周波数を設定することができる。
【００７５】
なお、ＣＰＵ１１の動作周波数を最適化するため、以下のような技術が適用された情報処理装置も考えられる。すなわち、アプリケーションのソースコードを複数の領域に分割し、分割した各領域を実行中にパフォーマンスカウンタが収集した情報とモデル式による評価とに基づいて、効率が良い動作周波数を予め解析する情報処理装置である。そして、このような情報処理装置は、アプリケーションを実行する際に、ＣＰＵの動作周波数を予め解析した動作周波数に設定する。
【００７６】
しかしながら、このようなアプリケーションを複数の領域に分割し、各領域について効率が良い動作周波数をあらかじめ解析する技術は、アプリケーションごとに同様の手法を用いて効率が良い動作周波数を事前に解析しなければならないという問題がある。このため、実行するアプリケーションが追加される度に、アプリケーションの解析を行う手間がかかってしまう。
【００７７】
一方、実施例１に係る情報処理装置１は、アプリケーションを事前に解析せずとも、メモリ１３の消費電力を測定するだけで、アプリケーションの性能を低下させることなくＣＰＵ１１の動作周波数を最適化することができる。この結果、情報処理装置１は、ＣＰＵ１１が消費する電力を容易に削減することができる。
【００７８】
また、情報処理装置１は、パフォーマンスカウンタを用いずとも、メモリ１３が消費する電力を測定するだけで、ＣＰＵ１１に設定すべき動作周波数を判別することができる。このため、情報処理装置１は、ＯＳ３０の機能に依存せずとも、ＣＰＵ１１が消費する電力量を削減することができる。
【００７９】
また、情報処理装置１は、事前の解析結果ではなく、リアルタイムに測定されたメモリ１３の消費電力に応じて、ＣＰＵ１１の動作周波数を変更する。このため、情報処理装置１は、実行中のアプリケーションにおける処理の内容に応じて、適切な動作周波数をリアルタイムにＣＰＵ１１に設定することができる。
【実施例２】
【００８０】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【００８１】
（１）動作周波数の設定について
上述した情報処理装置１は、ＯＳ３０にて最適な動作周波数を判別し、判別した動作周波数を示す動作周波数設定ファイル３５を出力することにより、ＣＰＵ１１の動作周波数を設定した。しかし実施例は、これに限定されるものではない。そこで、図９を用いて、本願に係る情報処理装置の他の態様について説明する。
【００８２】
図９は、実施例２にかかわる情報処理装置の一例を説明するための図である。図９に示す例では、情報処理装置４０は、ハードウェア５０、ＢＩＯＳ６０、ＯＳ７０を有する。ハードウェア５０は、ＣＰＵ１１、電源１２、メモリ１３、抵抗１４、電力測定部１５、タイマ１６を有する。また、ＢＩＯＳ６０は、ＳＭＩ（System  Management  Interrupt）割り込みハンドラ６１を有する。また、ＳＭＩ割り込みハンドラ６１は、動作周波数テーブル３２、判別部３３、設定部３４ａを有する。
【００８３】
なお、以下の説明においては、電源１２、メモリ１３、抵抗１４、電力測定部１５については、実施例１と同様の機能を発揮するものとして、説明を省略する。また、動作周波数テーブル３２、判別部３３についても、実施例１と同様の機能を発揮するものとして、説明を省略する。
【００８４】
ＣＰＵ１１は、実施例１と同様に、メモリ１３に記憶された情報を用いて演算処理を実行する演算処理装置である。より詳細には、ＣＰＵ１１は、ＣＰＵ１１の動作周波数を設定および参照することのできるレジスタ１１ａと、演算処理を実行するコア１１ｂとを有する。
【００８５】
レジスタ１１ａは、コア１１ｂが演算処理を実行する周波数、すなわち、ＣＰＵ１１の動作周波数を示す情報を記憶する。
【００８６】
また、コア１１ｂは、後述するタイマ１６からＳＭＩ割り込みを受付けると、ＳＭＭ（System  Management  Mode）と呼ばれるModeに移行し、ＢＩＯＳ６０が有するＳＭＩ割り込みハンドラ６１を実行する。また、コア１１ｂは、レジスタ１１ａに記憶された動作周波数を示す情報を参照し、参照した情報が示す動作周波数で処理を実行する。
【００８７】
タイマ１６は、所定の時間間隔で、ＣＰＵ１１に対してＳＭＩ割り込みを発行する。また、設定部３４ａは、判別部３３から動作周波数を示す情報を受信した場合には、レジスタ１１ａに記憶された動作周波数を示す情報を、判別部３３から新たに受信した情報に書換える。
【００８８】
このように、情報処理装置４０は、ＣＰＵ１１の動作周波数を設定するＳＭＩ割り込みハンドラ６１を有し、所定の時間間隔でＳＭＩ割り込みを発行することにより、ＳＭＩ割り込みハンドラ６１によって最適な動作周波数の設定を行う。また、情報処理装置４０は、動作周波数を示す情報をＣＰＵ１１が有するレジスタ１１ａに記憶させることにより、ＣＰＵ１１の動作周波数を変更する。このため、情報処理装置４０は、実行するＯＳ７０の種別に関わらず、ＣＰＵ１１の動作周波数を設定することができる。
【００８９】
また、情報処理装置４０は、ＢＩＯＳ６０が有するＳＭＩ割り込みハンドラ６１を用いて、ＣＰＵ１１の動作周波数を設定する。このため、情報処理装置４０は、ＣＰＵ１１の動作周波数を設定する処理を迅速に実行することができる。
【００９０】
（２）設定する動作周波数について
図４に例示した動作周波数テーブル３２が記憶する情報は、あくまで一例であり、メモリ１３の消費電力の範囲、および、動作周波数については、他の値を記憶してもよい。すなわち、情報処理装置１、４０は、メモリ１３の消費電力が増加した場合は、ＣＰＵ１１の動作周波数を減少させ、メモリ１３の消費電力が減少した場合は、ＣＰＵ１の動作周波数を増加させれば、アプリケーションの性能を低下させることなく、ＣＰＵ１１が消費する電力量を削減することができる。
【００９１】
（３）動作周波数テーブルについて
上述した情報処理装置１、４０は、動作周波数テーブル３２に従ってＣＰＵ１１の動作周波数を設定した。しかし、実施例はこれに限定されるものではない。例えば、情報処理装置１、４０は、メモリ１３の消費電力に基づいて、ＣＰＵ１１に設定すべき動作周波数をその都度算出し、算出した動作周波数をＣＰＵ１１に設定することとしてもよい。
【００９２】
なお、上述した実施例において例示した各プログラムは、あくまで一例であり、他のプログラムの実行結果に応じて、動作周波数テーブル３２の値を設定することとしてもよい。また、動作周波数テーブル３２は、メモリ１３の消費電力の範囲と動作周波数との組を３つ記憶していたが、実施例はこれに限定されるものではなく、メモリ１３の消費電力の範囲と動作周波数との組を任意の数記憶することとしてもよい。
【００９３】
なお、本実施例で説明したＣＰＵ周波数制御部３１の機能およびＳＭＩ割り込みハンドラ６１の機能は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００９４】
１、４０  情報処理装置
１０、５０  ハードウェア
１１  ＣＰＵ
１１ａ  レジスタ
１１ｂ  コア
１２  電源
１３  メモリ
１４  抵抗
１５  電力測定部
２０、６０  ＢＩＯＳ
３０、７０  ＯＳ
３１  ＣＰＵ周波数制御部
３２  動作周波数テーブル
３３  判別部
３４、３４ａ  設定部
３５  動作周波数設定ファイル
【図１】
0005794010.tif 000002
【図２】
0005794010.tif 000003
【図３】
0005794010.tif 000004
【図４】
0005794010.tif 000005
【図５】
0005794010.tif 000006
【図６】
0005794010.tif 000007
【図７】
0005794010.tif 000008
【図８】
0005794010.tif 000009
【図９】
0005794010.tif 000010