説明

情報処理装置、制御プログラムおよび制御方法

【課題】CPUの使用率が所定の閾値よりも高い場合に、実行中のアプリケーションの性能をあまり低下させず、CPUの消費電力を削減する。
【解決手段】情報処理装置1は、演算処理に利用される情報を記憶するメモリ13と、メモリ13に記憶された情報を用いて演算処理を行うCPU11と、メモリ13の消費電力を測定する電力測定部15とを有する。このような情報処理装置1は、電力測定部15が測定したメモリ13の消費電力に応じて、CPU11の動作周波数を設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、制御プログラムおよび制御方法に関する。
【背景技術】
【0002】
従来、CPU(Central Processing Unit)の動作周波数を動的に変更するDVFS(Dynamic Voltage and Frequency Scaling)技術が知られている。このような技術が適用された情報処理装置は、CPUの動作周波数とCPUに印加する電圧とを低く設定変更することで、CPUの消費電力を削減する。
【0003】
このような情報処理装置の一例として、単位時間あたりのCPUの使用率に応じて、CPUの動作周波数を変更するOndemand Governorの技術が適用された情報処理装置が知られている。このような情報処理装置は、単位時間あたりのCPUの使用率が所定の閾値よりも低い場合には、CPUの動作周波数を所定の周波数よりも低い周波数に設定することで、CPUの消費電力を削減する。
【0004】
ここで、CPUの使用率が所定の閾値よりも高い際に動作周波数を下げた場合は、消費電力が下がるものの、性能低下によりアプリケーションの実行時間が延びるため、アプリケーションの実行に要する消費電力量が増える場合がある。このため、情報処理装置は、単位時間あたりのCPUの使用率が所定の閾値よりも高い場合には、CPUの周波数を所定の周波数よりも高い周波数に設定することで、性能の低下を防ぐ。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】佐々木 広、浅井 雅司、池田 佳路、近藤 正章、中村 宏 「統計情報に基づく動的電源電圧制御手法」 情報処理学会論文誌:コンピューティングシステム Vol.47 No.SIG18(ACS16) Nov.2006
【非特許文献2】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.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した単位時間あたりのCPUの使用率に応じてCPUの動作周波数を変更する技術では、CPUの使用率が所定の閾値よりも高い場合は、動作周波数は高い周波数に設定されるため、CPUの消費電力を削減できないという問題がある。
【0007】
本発明の1つの側面では、アプリケーション実行中におけるCPUの消費電力の削減を図ることを目的とする。
【課題を解決するための手段】
【0008】
本発明の1つの側面では、演算処理に利用される情報を記憶するメモリと、メモリに記憶された情報を用いて演算処理を行う演算処理部と、メモリの消費電力を測定する測定部とを有する情報処理装置である。このような情報処理装置は、測定部が測定した消費電力に応じて、演算処理部の動作周波数を設定する。
【発明の効果】
【0009】
1つの側面では、アプリケーション実行中におけるCPUの消費電力の削減を図ることができる。
【図面の簡単な説明】
【0010】
【図1】図1は、実施例1に係る情報処理装置の一例を説明するための図である。
【図2】図2は、周波数依存率と実行時間との関係を説明するための図である。
【図3】図3は、CPUの周波数依存率とメモリの消費電力との関係の一例を説明するための図である。
【図4】図4は、動作周波数テーブルの一例を説明するための図である。
【図5】図5は、各動作周波数においてアプリケーションを実行した際のCPUにおける消費電力量を説明するための図である。
【図6】図6は、アプリケーションと消費電力量が最小となる動作周波数との関係を説明するための図である。
【図7】図7は、メモリの消費電力と設定するCPUの動作周波数との関係の一例を説明するための図である。
【図8】図8は、実施例1に係る情報処理装置が実行する処理の流れの一例を説明するためのフローチャートである。
【図9】図9は、実施例2に係る情報処理装置の一例を説明するための図である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して本願に係る情報処理装置、制御プログラムおよび制御方法について説明する。
【実施例1】
【0012】
以下の実施例1では、図1を用いて、情報処理装置の一例を説明する。図1は、実施例1に係る情報処理装置の一例を説明するための図である。
【0013】
図1に示すように、情報処理装置1は、ハードウェア10を有し、BIOS(Basic Input/Output System)20およびOS(Operating System)30を実行する。ハードウェア10は、CPU(Central Processing Unit)11、電源12、メモリ13、抵抗14、電力測定部15を有する。
【0014】
また、OS30は、CPU周波数制御部31、動作周波数設定ファイル35を有する。また、CPU周波数制御部31は、動作周波数テーブル32、判別部33、設定部34を有する。なお、BIOS20は、ファームウェアの一つで、コンピュータに搭載されたプログラムのうち、ハードウェアとの最も低レベルの入出力を行うためのプログラムであるものとし、以下の説明を省略する。
【0015】
まず、ハードウェア10が有するCPU11、電源12、メモリ13、抵抗14、電力測定部15について説明する。CPU11は、キャッシュを有し、キャッシュに記憶された情報、または、メモリ13が記憶する情報を利用して演算処理を実行する。
【0016】
具体的には、CPU11は、電源12から電力の供給を受け、アプリケーションの実行に係る演算処理を実行する。また、CPU11は、演算処理に利用する情報が自身のキャッシュに記憶されている場合には、キャッシュに記憶されている情報を利用して演算処理を実行する。また、CPU11は、演算処理に利用する情報が自身のキャッシュに記憶されていない場合には、メモリ13にアクセスし、演算処理に利用する情報をメモリ13から取得する。そして、CPU13は、取得した情報を自身のキャッシュに記憶させるとともに、取得した情報を利用して、アプリケーションの実行に係る演算処理を実行する。
【0017】
また、CPU11は、複数の動作周波数で動作することが可能な演算処理装置である。すなわち、CPU11は、DVFS(Dynamic Voltage and Frequency Scaling)の技術が組み込まれている。そして、CPU11は、所定の時間が経過する度に、OS30が有する動作周波数設定ファイル35を参照し、参照した動作周波数設定ファイル35が示す情報に応じて、自身の動作周波数を変更する。
【0018】
例えば、CPU11は、自身の動作周波数として、2,926,000kHz、2,660,000kHz、2,394,000kHz、2,128,000kHz、1,862,000kHz、1,596,000kHzのうち、いずれかの動作周波数で演算処理を実行できる。そして、CPU11は、動作周波数設定ファイル35を参照し、参照した動作周波数設定ファイル35が2,626,000kHzを示す場合には、自身の動作周波数を2,626,000kHzに設定し、設定した動作周波数で演算処理を実行する。また、例えば、CPU11は、動作周波数設定ファイル35が1,596,000kHzを示す場合には、自身の動作周波数を1,596,000kHzに設定し、設定した動作周波数で演算処理を実行する。
【0019】
電源12は、ハードウェア10が有する各部に電力を供給する電源装置である。例えば、電源12は、情報処理装置1の外部から電圧の印加を受けると、電圧をCPU11やメモリ13に対して適切な電圧に変圧し、変圧した電圧をCPU11やメモリ13に対して印加することで、電力の供給を行う。
【0020】
メモリ13は、CPU11が演算処理の実行に利用する情報を記憶する記憶装置である。また、メモリ13は、情報の読み出しや書き込みを実行するたびに、電源12から供給される電力を消費する。
【0021】
抵抗14は、メモリ13に対して供給される電力を測定するために設置される微小な抵抗である。電力測定部15は、抵抗14の両端において発生する電位差と抵抗値から求めた電流と、メモリ13と抵抗14との間の電圧より、メモリ13が消費する電力を得る。そして、電力測定部15は、測定した電圧の値をCPU周波数制御部31が有する判別部33に送信する。
【0022】
このようなハードウェア10は、CPU11がメモリ13に記憶された情報を利用しながらアプリケーションを実行する。このため、CPU11およびメモリ13は、アプリケーションの実行に応じて電力を消費することとなる。ここで、CPU11が消費する電力は、動作周波数と電圧の2乗との積で表され、CPU11がアプリケーションを実行した際に消費する電力量は、CPU11が消費する電力とアプリケーションの実行に要した時間との積で表される。
【0023】
一方、CPU11が実行するアプリケーションには、CPU11の動作周波数を変化させた際に、実行に要する時間が変化するアプリケーションと、実行に要する時間があまり変化しないアプリケーションとが存在する。つまり、CPU11が実行するアプリケーションには、CPU11の動作周波数に性能が依存するアプリケーションと、CPU11の動作周波数に性能があまり依存しないアプリケーションとが存在する。
【0024】
図2は、周波数依存率と実行時間との関係を説明するための図である。なお、周波数依存率とは、異なる2つの動作周波数でアプリケーションを実行した際の、クロック周期の増加率に対するアプリケーションの実行時間の増加率の割合である。
【0025】
図2に示す例では、クロック周期(n/s:Nano Second)を横軸とし、実行時間を縦軸とし、それぞれ異なる周波数依存率を有するアプリケーションを異なるクロック周期で実行した際に要した実行時間をプロットした。なお、図2に示す例では、クロック周期1ns(動作周波数が1GHz)のときのアプリケーションの実行時間を1として、各アプリケーションの実行に要した実行時間の比をプロットした。また、図2に示す例では、周波数依存率が100パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を直線で、周波数依存率が50パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を点線で示した。また、図2に示す例では、周波数依存率が0パーセントとなるアプリケーションに係るクロック周期と実行時間との関係を示す線を破線で示した。
【0026】
図2に示すように、周波数依存率が100パーセントとなるアプリケーションは、クロック周期を例えば2倍に増加させると(つまり、周波数を500MHzとすると)、実行時間は2倍に増加する。一方、周波数依存率が0パーセントとなるアプリケーションは、クロック周期を2倍に増加しても、実行時間が増加しない。また、周波数依存率が50パーセントとなるアプリケーションは、クロック周期を2倍に増加させると、実行時間が1.5倍に増加する。
【0027】
つまり、CPU11は、動作周波数に性能が依存するアプリケーションを実行する際に、動作周波数を減少させた場合には、アプリケーションの実行に要する時間を長くしてしまう。このため、CPU11は、動作周波数に性能が依存するアプリケーションを実行する際に、動作周波数を減少させた場合には、消費する電力量を増加させてしまう。このため、CPU11は、動作周波数に性能が依存するアプリケーションを実行する場合には、動作周波数を減少させない。
【0028】
また、CPU11は、動作周波数に性能があまり依存しないアプリケーションを実行する際に、動作周波数を減少させても、アプリケーションの実行に要する時間があまり変わらない。この結果、CPU11は、動作周波数に性能があまり依存しないアプリケーションを実行する場合は、動作周波数を減少させることで、消費電力を削減することができる。
【0029】
次に、CPU11の動作周波数を変化させた際に、動作周波数に性能があまり依存しないアプリケーションと、動作周波数に性能が依存するアプリケーションについて説明する。例えば、動作周波数に性能があまり依存しないアプリケーションとしては、実行時にメモリ13に対するアクセスが多いアプリケーションが該当する。
【0030】
すなわち、メモリ13の動作周波数は、CPU11の動作周波数とは独立した値が設定される。また、メモリ13の動作周波数は、一般に、CPU11の動作周波数よりも低い値が設定される。このため、メモリ13に対するアクセスが多いアプリケーションの性能は、メモリ13の性能によって決定づけられる。したがって、メモリ13に対するアクセスが多いアプリケーションの実行時にCPU11の動作周波数を減少させても、あまり性能が下がらないので、動作周波数に性能があまり依存しないアプリケーションといえる。
【0031】
一方、動作周波数に性能が依存するアプリケーションとしては、実行時にメモリ13に対するアクセスが少ないアプリケーションが該当する。すなわち、メモリ13に対するアクセスが少ないアプリケーションは、CPU11が有するキャッシュのヒット率が高いので、CPU11の動作周波数に応じた性能を発揮する。このため、メモリ13に対するアクセスが少ないアプリケーションは、CPU11の動作周波数に性能が依存するアプリケーションといえる。
【0032】
ここで、メモリ13は、アクセスの回数に応じた電力を消費する。すなわち、メモリ13は、アクセスの回数が通常よりも多い場合には、通常よりも多くの電力を消費し、アクセスの回数が通常よりも少ない場合には、通常よりも少ない電力を消費する。
【0033】
このため、CPU11は、メモリ13の消費電力が通常より多い場合には、動作周波数を減少させても、性能があまり低下しないアプリケーション、つまり、動作周波数に性能が依存しないアプリケーションを実行していると判別する。このような場合には、CPU11は、動作周波数を減少させることで、アプリケーションの性能をあまり低下させずに、消費電力を削減する。
【0034】
一方、CPU11は、メモリ13の消費電力が通常より少ない場合には、動作周波数を減少させると性能が低下するアプリケーション、つまり、動作周波数に性能が依存するアプリケーションを実行していると判別する。このような場合には、CPU11は、動作周波数を減少させないので、性能を低下させることなくアプリケーションを実行することができる。
【0035】
ここで、アプリケーション実行時におけるメモリ13の消費電力と、アプリケーションのCPU周波数依存率との関係の一例を説明する。図3は、各アプリケーションのCPU周波数依存率と、消費電力との関係の一例を説明するための図である。なお、図3には、CPU11が実行するアプリケーション名と、各アプリケーションのCPU周波数依存率と、各アプリケーションをCPU11が実行する際にメモリ13が消費した電力の平均値(Watt)とを示す。
【0036】
また、図3に示す例は、CPU11にXeon X5570を適用し、メモリ13に12GB(Giga Byte)の容量を有する1333M(Mega)HzのDDR3(Double-Data-Rate3 Synchronous Dynamic Random Access Memory)を適用して測定した。また、OS30には、CentOS5.5を適用した。
【0037】
具体的には、図3に示す例では、アプリケーション名「444.namd」のCPU周波数依存率が「99.8(%)」であり、メモリの消費電力の平均が「17.4(W)」であることを示す。また、アプリケーション名「471.omnetpp」のCPU周波数依存率が「33.0(%)」であり、メモリの消費電力の平均が「26.0(W)」であることを示す。また、アプリケーション名「429.mcf」のCPU周波数依存率が「31.3(%)」であり、メモリの消費電力の平均が「28.8(W)」であることを示す。
【0038】
また、アプリケーション名「450.soplex」のCPU周波数依存率が「27.5(%)」であり、メモリの消費電力の平均が「30.4(W)」であることを示す。また、アプリケーション名「433.milc」のCPU周波数依存率が「14.9(%)」であり、メモリの消費電力の平均が「33.8(W)」であることを示す。また、アプリケーション名「437.leslie3d」のCPU周波数依存率が「15.3(%)」であり、メモリの消費電力の平均が「34.6(W)」であることを示す。また、アプリケーション名「459.GemsFDTD」のCPU周波数依存率が「4.8(%)」であり、メモリの消費電力の平均が「35.4(W)」であることを示す。
【0039】
ここで、図3に示す各アプリケーションのCPU周波数依存率とメモリの消費電力とは、負の相関を有し、その値は約「−0.96」となる。このため、情報処理装置1は、アプリケーションのCPU周波数依存率の解析を予め行わずとも、メモリ13の消費電力に応じてCPU11の動作周波数を制御することで、アプリケーションのCPU周波数依存率に応じた動作周波数の制御を行う事ができる。結果、情報処理装置1は、容易に、CPU11の消費電力を削減することができる。
【0040】
次に、CPU周波数制御部31が有する動作周波数テーブル32、判別部33、設定部34について説明する。動作周波数テーブル32は、メモリ13の消費電力を示す情報と、CPU11の動作周波数を示す情報とを対応付けて記憶する。具体的には、動作周波数テーブル32は、メモリ13の消費電力の範囲を示す情報と、CPU11の動作周波数を示す情報とを対応付けて記憶する。
【0041】
例えば、図4は、動作周波数テーブルの一例を説明するための図である。図4に示す例では、動作周波数テーブル32は、メモリの消費電力と、動作周波数とを対応付けて記憶する。詳細には、動作周波数テーブル32は、「17.4(Watt)未満」を示す情報と「2,926,000(kHz)」を示す情報とを対応付けて記憶する。また、動作周波数テーブル32は、「17.4(Watt)以上26.0(Watt)未満」を示す情報と「2,660,000(kHz)」を示す情報とを対応付けて記憶する。また、動作周波数テーブル32は、「26.0(Watt)以上」を示す情報と「1,596,000(kHz)」を示す情報とを対応付けて記憶する。
【0042】
図1に戻って、動作周波数設定ファイル35は、CPU11の動作周波数を示す情報が格納されるファイルである。例えば、動作周波数設定ファイル35には、CPU11の動作周波数を「2,926,000(kHz)」に設定する旨の情報が格納される。
【0043】
判別部33は、電力測定部15が測定したメモリ13の消費電力に応じて、CPU11の動作周波数を設定する。具体的には、判別部33は、電力測定部15が測定したメモリの消費電力が所定の閾値よりも高い場合には、所定の動作周波数よりも低い値の動作周波数を設定部34に通知する。また、判別部33は、電力測定部15が測定したメモリの消費電力が所定の閾値よりも低い場合には、所定の動作周波数よりも高い値の動作周波数を判別部33に通知する。
【0044】
次に、判別部33が実行する処理の一例について説明する。例えば、判別部33は、1秒間よりも短い時間間隔で電力測定部15から消費電力の値を受信する。そして、判別部33は、過去1秒間の間に受信した消費電力の値の平均値を算出する。また、判別部33は、動作周波数テーブル32を参照し、算出した平均値が、動作周波数テーブル32に記憶された消費電力の範囲のうち、いずれの消費電力の範囲に含まれるかを判別する。
【0045】
そして、判別部33は、動作周波数テーブル32に記憶された消費電力の範囲を示す情報のうち、算出した平均値を含む範囲を示す情報と対応付けられた動作周波数を示す情報を判別する。その後、判別部33は、判別した動作周波数を示す情報を設定部34へ送信する。
【0046】
設定部34は、CPU11の動作周波数を判別部33が判別した情報が示す動作周波数に設定する。具体的には、設定部34は、判定部33から動作周波数を示す情報を受信する。そして、設定部34は、動作周波数設定ファイル35に格納された情報を、受信した動作周波数を示す情報に更新する。
【0047】
このような処理を実行することにより、CPU周波数制御部31は、CPU11が消費する電力を削減することができる。すなわち、CPU周波数制御部31は、メモリ13の消費電力に基づいて、実行中のアプリケーションが動作周波数に依存するアプリケーションであるか否かを判別する。
【0048】
そして、CPU周波数制御部31は、実行中のアプリケーションが、動作周波数に依存するアプリケーションではないと判別した場合は、CPU11の動作周波数を減少させることで、CPU11の消費電力を削減する。一方、CPU周波数制御部31は、実行中のアプリケーションが動作周波数に依存するアプリケーションであると判別した場合は、CPU11の動作周波数を減少させず、通常、または、通常よりも大きい値に設定することで、アプリケーションの性能低下を防ぐ。
【0049】
次に、動作周波数テーブル32が記憶するメモリの消費電力とCPU11の動作周波数との組を定める処理について説明する。図5は、各動作周波数においてアプリケーションを実行した際のCPUにおける消費電力量を説明するための図である。なお、図5には、各アプリケーションごとに実行したCPU11の動作周波数を横軸とし、CPU11の動作周波数を各動作周波数とした際にアプリケーションの実行に要したCPU11の消費電力量を縦軸とした。
【0050】
なお、図5に示す例では、各アプリケーションの実行に要したCPU11の消費電力量について、CPU11の動作周波数が「2,926,000(kHz)」である際に要した消費電力量を「1」とした比率を示した。
【0051】
具体的には、図5に示す例では、CPU11の動作周波数を「2,926,000(kHz)」、「2,660,000(kHz)」、「2,394,000(kHz)」として各アプリケーションを実行した際のCPU11の消費電力量の比を示す。また、CPU11の動作周波数を「2,128,000(kHz)」、「1,862,000(kHz)」、「1,596,000(kHz)」とした際に各アプリケーションを実行した際に要したCPU11の消費電力量の比を示す。
【0052】
また、図5に示す例では、「444.namd」、「471.omnetpp」、「429.mcf」を実行した際のCPU11の消費電力量の比を示す。また、図5に示す例では、「450.soplex」、「437.leslie3d」、「433.milc」、「459.GemsFDTD」を実行した際のCPU11の消費電力量の比を示す。
【0053】
図5に示すように、「444.nand」は、CPU11の動作周波数を減少させた場合に、消費電力量があまり減少しない。一方、他のアプリケーション「471.omnetpp」、「429.mcf」、「450.soplex」は、CPU11の動作周波数を減少させるとともに、消費電力量が減少する。また、アプリケーション「437.leslie3d」、「433.milc」、「459.GemsFDTD」も、CPU11の動作周波数を減少させるとともに、消費電力量が減少する。
【0054】
図6は、アプリケーションと消費電力量が最小となる動作周波数との関係を説明するための図である。図6に示す例では、各アプリケーション名と、各アプリケーションを実行した際のメモリ13の消費電力の平均と、CPU11の消費電力量が最小となる動作周波数とを示す。ここで、各アプリケーション名について、図6に示す消費電力量が最小となる動作周波数は、図5に示したCPU11の消費電力量の比が最小となる動作周波数と同じである。また、図6に示したメモリ13の消費電力の平均は、図3に示したメモリ13の消費電力の平均と同じである。
【0055】
図6に示すように、アプリケーション「444.namd」を実行する際にCPU11の消費電力量が最小となるのは、CPU11の動作周波数を「2,660,000(kHz)」とした場合である。また、他のアプリケーションを実行する際にCPU11の消費電力量が最小となるのは、CPU11の動作周波数を「1,596,000(kHz)」とした場合である。このため、情報処理装置1は、メモリ13の消費電力の平均が「26.0(W)」以上である場合には、CPU11の動作周波数を「1,596,000(kHz)」とすべきである。
【0056】
一方、図6に示す例では、アプリケーション「444.namd」を実行した際におけるメモリ13の消費電力の平均は、「17.4(W)」であり、CPU11の消費電力量が最も少なくなる動作周波数は、「2,660,000(kHz)」である。このため、情報処理装置1は、メモリ13の消費電力の平均が「17.4(W)」である場合には、CPU11の動作周波数を「2,660,000(kHz)」とすべきである。
【0057】
しかし、図6に示す例では、メモリ13の消費電力の平均が「17.4(W)〜26.0(W)」である場合に、CPU11の消費電力量が最も少なくなる動作周波数は自明ではない。すなわち、「2,660,000(kHz)」〜「1,596,000(kHz)」のうち、どの動作周波数を設定した場合にCPU11の消費電力量が最小となるかが自明ではない。また、図6に示す例では、メモリ13の消費電力の平均が「17.4(W)」以下である場合に、CPU11の動作周波数を「2,926,000(kHz)」とすべきか「2,660,000(kHz)」とすべきかが自明ではない。
【0058】
しかし、周波数依存率が高いアプリケーションを実行する際に、CPU11の動作周波数を低い値に設定した場合には、アプリケーションの性能低下により実行時間が延び、CPU11の消費電力量が増加する。このため、CPU11に設定すべき動作周波数が自明ではない場合は、できるだけ高い値の動作周波数を設定すべきである。
【0059】
そこで、情報処理装置1は、メモリ13の消費電力の平均が「17.4(W)以上26.0(W)未満」である場合には、動作周波数を「2,660,000(kHz)」に設定する旨を示す動作周波数テーブル32を有することとなる。また、情報処理装置1は、メモリ13の消費電力の平均が「17.4(W)」未満である場合には、動作周波数を「2,926,000(kHz)」に設定する。
【0060】
図7は、メモリの消費電力と設定するCPUの動作周波数との関係の一例を説明するための図である。図7に示す例では、メモリの消費電力を横軸とし、CPUの動作周波数を縦軸として、図6に示す各アプリケーション実行時におけるメモリ13の消費電力と、CPU11の消費電力量が最小となる動作周波数とをプロットした。
【0061】
図7に示すように、情報処理装置1は、メモリ13の消費電力が「26.0(W)」以上である場合は、CPUの動作周波数を「1,596,000(kHz)」とすべきことが明らかである。ここで、メモリ13の消費電力の平均が「17.4(W)〜26.0(W)」である場合に、CPU11の消費電力量が最も少なくなる動作周波数は自明ではない。
【0062】
しかし、情報処理装置1は、CPU11の動作周波数をできるだけ高い値に設定すべきである。このため、情報処理装置1は、メモリ13の消費電力の平均が「17.4(W)以上26.0(W)未満」である場合には、動作周波数を「2,660,000(kHz)」に設定する旨を示す動作周波数テーブル32を有することとなる。また、情報処理装置1は、メモリ13の消費電力の平均が「17.4(W)」未満である場合には、動作周波数を「2,926,000(kHz)」に設定する旨を示す動作周波数テーブル32を有することとなる。
【0063】
このように、情報処理装置1は、複数のアプリケーションについて、所定の動作周波数で測定されたメモリ13の消費電力と、実行時にCPU11の消費電力量が最も少なくなる動作周波数とに応じた動作周波数テーブル32を有する。このため、情報処理装置1は、CPU11が消費する電力量を削減することができる。
【0064】
[情報処理装置の処理の流れ]
次に、図8を用いて、情報処理装置1が実行する処理の流れの一例について説明する。図8は、実施例1に係る情報処理装置が実行する処理の流れを説明するためのフローチャートである。なお、情報処理装置1は、図8に示す処理を1秒おきに実行する。
【0065】
まず、情報処理装置1は、メモリ13が過去1秒間に消費した電力の平均値を算出する(ステップS101)。次に、情報処理装置1は、動作周波数テーブル32を参照し(ステップS102)以下に続くステップS103〜ステップS107を実行する。
【0066】
すなわち、情報処理装置1は、メモリ13が消費した電力の平均値が17.4(W)未満であるか否かを判別する(ステップS103)。そして、情報処理装置1は、メモリ13が消費した電力の平均値が17.4(W)未満であると判別した場合には(ステップS103肯定)、CPU11の動作周波数を「2926000(kHz)」に設定し(ステップS104)、処理を終了する。
【0067】
一方、情報処理装置1は、メモリ13が消費した電力の平均値が17.4(W)以上であると判別した場合には(ステップS103否定)、メモリ13が消費した電力の平均値が26.0(W)未満であるか否かを判別する(ステップS105)。そして、情報処理装置1は、メモリ13が消費した電力の平均値が26.0(W)未満であると判別した場合には(ステップS105肯定)、CPU11の動作周波数を「2660000(kHz)」に設定し(ステップS106)、処理を終了する。
【0068】
また、情報処理装置1は、メモリ13が消費した電力の平均値が26.0(W)以上であると判別した場合には(ステップS105否定)、CPUの動作周波数を「1596000(kHz)」に設定し(ステップS107)、処理を終了する。
【0069】
[実施例1の効果]
上述したように、情報処理装置1は、動作周波数を設定可能なCPU11と、メモリ13とを有し、メモリ13が消費した電力を測定する。そして、情報処理装置1は、測定した電力に応じて、CPU11の動作周波数を設定する。このため、情報処理装置1は、CPU11の使用率が高い場合にも、CPU11が消費する電力量を削減することができる。
【0070】
また、情報処理装置1は、メモリ13の消費電力が所定の閾値よりも多い場合は、CPU13の動作周波数を所定の周波数よりも低い値に設定し、メモリ13の消費電力が所定の閾値より少ない場合は、CPU13の動作周波数を所定の周波数より高い値に設定する。このため、情報処理装置1は、アプリケーションによるCPU11の利用率が高い場合にも、アプリケーションの性能をあまり低下させることなく、CPU11の消費電力を削減することができる。
【0071】
また、情報処理装置1は、消費電力の範囲を示す複数の情報と、動作周波数を示す複数の情報とを対応付けた情報を記憶する動作周波数テーブル32を有する。そして、情報処理装置1は、CPU11の動作周波数として、測定したメモリ13の消費電力を含む範囲を示す情報と対応付けて動作周波数テーブル32に記憶された動作周波数を設定する。このため、情報処理装置1は、CPU11に動作周波数を迅速に設定することができる。
【0072】
また、情報処理装置1は、アプリケーションを実行した際にCPU11の消費電力量が最も少なくなる動作周波数と、アプリケーションを所定の動作周波数で実行した際にメモリ13の消費電力とを対応付けて記憶する動作周波数テーブル32を有する。このため、情報処理装置1は、CPU11に対して、事前に解析された最適な動作周波数を設定することができる。
【0073】
また、情報処理装置1は、CPU11の動作周波数を設定してから所定の時間が経過するまでの間にメモリ13が消費した電力の平均値を算出し、算出した電力の平均値に応じて、CPU11の動作周波数を新たに設定する。このため、情報処理装置1は、CPU11が実行するアプリケーションが頻繁に変わる場合にも、CPU11が消費する電力量を効率良く削減できる動作周波数を設定することができる。
【0074】
また、情報処理措置1は、所定の時間間隔で、動作周波数設定ファイル35を参照し、動作周波数設定ファイル35が示す動作周波数で演算処理を実行するCPU11を有する。そして、情報処理装置1は、CPU11に設定する動作周波数を示す動作周波数設定ファイル35を出力する。このため、情報処理装置1は、容易にCPU11の動作周波数を設定することができる。
【0075】
なお、CPU11の動作周波数を最適化するため、以下のような技術が適用された情報処理装置も考えられる。すなわち、アプリケーションのソースコードを複数の領域に分割し、分割した各領域を実行中にパフォーマンスカウンタが収集した情報とモデル式による評価とに基づいて、効率が良い動作周波数を予め解析する情報処理装置である。そして、このような情報処理装置は、アプリケーションを実行する際に、CPUの動作周波数を予め解析した動作周波数に設定する。
【0076】
しかしながら、このようなアプリケーションを複数の領域に分割し、各領域について効率が良い動作周波数をあらかじめ解析する技術は、アプリケーションごとに同様の手法を用いて効率が良い動作周波数を事前に解析しなければならないという問題がある。このため、実行するアプリケーションが追加される度に、アプリケーションの解析を行う手間がかかってしまう。
【0077】
一方、実施例1に係る情報処理装置1は、アプリケーションを事前に解析せずとも、メモリ13の消費電力を測定するだけで、アプリケーションの性能を低下させることなくCPU11の動作周波数を最適化することができる。この結果、情報処理装置1は、CPU11が消費する電力を容易に削減することができる。
【0078】
また、情報処理装置1は、パフォーマンスカウンタを用いずとも、メモリ13が消費する電力を測定するだけで、CPU11に設定すべき動作周波数を判別することができる。このため、情報処理装置1は、OS30の機能に依存せずとも、CPU11が消費する電力量を削減することができる。
【0079】
また、情報処理装置1は、事前の解析結果ではなく、リアルタイムに測定されたメモリ13の消費電力に応じて、CPU11の動作周波数を変更する。このため、情報処理装置1は、実行中のアプリケーションにおける処理の内容に応じて、適切な動作周波数をリアルタイムにCPU11に設定することができる。
【実施例2】
【0080】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
【0081】
(1)動作周波数の設定について
上述した情報処理装置1は、OS30にて最適な動作周波数を判別し、判別した動作周波数を示す動作周波数設定ファイル35を出力することにより、CPU11の動作周波数を設定した。しかし実施例は、これに限定されるものではない。そこで、図9を用いて、本願に係る情報処理装置の他の態様について説明する。
【0082】
図9は、実施例2にかかわる情報処理装置の一例を説明するための図である。図9に示す例では、情報処理装置40は、ハードウェア50、BIOS60、OS70を有する。ハードウェア50は、CPU11、電源12、メモリ13、抵抗14、電力測定部15、タイマ16を有する。また、BIOS60は、SMI(System Management Interrupt)割り込みハンドラ61を有する。また、SMI割り込みハンドラ61は、動作周波数テーブル32、判別部33、設定部34aを有する。
【0083】
なお、以下の説明においては、電源12、メモリ13、抵抗14、電力測定部15については、実施例1と同様の機能を発揮するものとして、説明を省略する。また、動作周波数テーブル32、判別部33についても、実施例1と同様の機能を発揮するものとして、説明を省略する。
【0084】
CPU11は、実施例1と同様に、メモリ13に記憶された情報を用いて演算処理を実行する演算処理装置である。より詳細には、CPU11は、CPU11の動作周波数を設定および参照することのできるレジスタ11aと、演算処理を実行するコア11bとを有する。
【0085】
レジスタ11aは、コア11bが演算処理を実行する周波数、すなわち、CPU11の動作周波数を示す情報を記憶する。
【0086】
また、コア11bは、後述するタイマ16からSMI割り込みを受付けると、SMM(System Management Mode)と呼ばれるModeに移行し、BIOS60が有するSMI割り込みハンドラ61を実行する。また、コア11bは、レジスタ11aに記憶された動作周波数を示す情報を参照し、参照した情報が示す動作周波数で処理を実行する。
【0087】
タイマ16は、所定の時間間隔で、CPU11に対してSMI割り込みを発行する。また、設定部34aは、判別部33から動作周波数を示す情報を受信した場合には、レジスタ11aに記憶された動作周波数を示す情報を、判別部33から新たに受信した情報に書換える。
【0088】
このように、情報処理装置40は、CPU11の動作周波数を設定するSMI割り込みハンドラ61を有し、所定の時間間隔でSMI割り込みを発行することにより、SMI割り込みハンドラ61によって最適な動作周波数の設定を行う。また、情報処理装置40は、動作周波数を示す情報をCPU11が有するレジスタ11aに記憶させることにより、CPU11の動作周波数を変更する。このため、情報処理装置40は、実行するOS70の種別に関わらず、CPU11の動作周波数を設定することができる。
【0089】
また、情報処理装置40は、BIOS60が有するSMI割り込みハンドラ61を用いて、CPU11の動作周波数を設定する。このため、情報処理装置40は、CPU11の動作周波数を設定する処理を迅速に実行することができる。
【0090】
(2)設定する動作周波数について
図4に例示した動作周波数テーブル32が記憶する情報は、あくまで一例であり、メモリ13の消費電力の範囲、および、動作周波数については、他の値を記憶してもよい。すなわち、情報処理装置1、40は、メモリ13の消費電力が増加した場合は、CPU11の動作周波数を減少させ、メモリ13の消費電力が減少した場合は、CPU1の動作周波数を増加させれば、アプリケーションの性能を低下させることなく、CPU11が消費する電力量を削減することができる。
【0091】
(3)動作周波数テーブルについて
上述した情報処理装置1、40は、動作周波数テーブル32に従ってCPU11の動作周波数を設定した。しかし、実施例はこれに限定されるものではない。例えば、情報処理装置1、40は、メモリ13の消費電力に基づいて、CPU11に設定すべき動作周波数をその都度算出し、算出した動作周波数をCPU11に設定することとしてもよい。
【0092】
なお、上述した実施例において例示した各プログラムは、あくまで一例であり、他のプログラムの実行結果に応じて、動作周波数テーブル32の値を設定することとしてもよい。また、動作周波数テーブル32は、メモリ13の消費電力の範囲と動作周波数との組を3つ記憶していたが、実施例はこれに限定されるものではなく、メモリ13の消費電力の範囲と動作周波数との組を任意の数記憶することとしてもよい。
【0093】
なお、本実施例で説明したCPU周波数制御部31の機能およびSMI割り込みハンドラ61の機能は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical Disc)、DVD(Digital Versatile Disc)などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【0094】
1、40 情報処理装置
10、50 ハードウェア
11 CPU
11a レジスタ
11b コア
12 電源
13 メモリ
14 抵抗
15 電力測定部
20、60 BIOS
30、70 OS
31 CPU周波数制御部
32 動作周波数テーブル
33 判別部
34、34a 設定部
35 動作周波数設定ファイル

【特許請求の範囲】
【請求項1】
演算処理に利用される情報を記憶するメモリと、
前記メモリに記憶された情報を用いて演算処理を行う演算処理部と、
前記メモリの消費電力を測定する測定部と、
前記測定部が測定した消費電力に応じて、前記演算処理部の動作周波数を設定する設定部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記設定部は、前記測定部が測定した消費電力が所定の閾値よりも多い場合には、前記演算処理部の動作周波数を所定の周波数よりも低い値に設定し、前記測定部が測定した消費電力が所定の閾値よりも少ない場合には、前記演算処理部の動作周波数を所定の周波数よりも高い値に設定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記設定部は、前記メモリの消費電力の範囲と前記演算処理部の動作周波数とを対応付けた設定情報を有し、前記測定部が測定した消費電力に対応する動作周波数を前記設定情報から判別し、前記演算処理部の動作周波数を該判別した動作周波数に設定することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記設定部は、所定のアプリケーションを実行した際に前記演算処理部が消費する電力量が最も少なくなる動作周波数と、当該アプリケーションを前記演算処理部が実行する際の前記メモリの消費電力とを対応付けた設定情報を有することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記設定部は、前記演算処理部の動作周波数を設定してから所定の時間が経過するまでの間に前記測定部が測定した電力の平均値を算出し、当該算出した電力の平均値に応じて、前記演算処理部の動作周波数を新たに設定することを特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。
【請求項6】
前記設定部は、前記演算処理装置の動作周波数を示す周波数情報を出力し、
前記演算処理部は、前記設定部が出力した周波数情報を参照し、当該参照した周波数情報が示す動作周波数で動作することを特徴とする請求項1〜5のいずれか1つに記載の情報処理装置。
【請求項7】
前記演算処理部は、自身の動作周波数を示す値を格納するレジスタを有し、
前記設定部は、前記レジスタに格納された値を更新することで、前記演算処理部の動作周波数を設定することを特徴とする請求項1〜5のいずれか1つに記載の情報処理装置。
【請求項8】
動作周波数を変更可能な演算処理装置と、前記演算処理装置が利用する情報を記憶する記憶装置と、前記記憶装置の消費電力を測定する電力測定装置とを有する情報処理装置の制御方法において、
前記電力測定装置が測定した前記記憶装置の消費電力に応じて、前記演算処理装置の動作周波数を変更する処理を含むことを特徴とする情報処理装置の制御方法。
【請求項9】
動作周波数を変更可能な演算処理装置と、前記演算処理装置が利用する情報を記憶する記憶装置と、前記記憶装置の消費電力を測定する電力測定装置とを有する情報処理装置によって実行される制御プログラムにおいて、
前記電力測定装置が測定した前記記憶装置の消費電力を取得し、
取得した消費電力に応じて、前記演算処理装置の動作周波数を設定する
ことを特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate