(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023132295
(43)【公開日】2023-09-22
(54)【発明の名称】電力制御プログラム、情報処理装置および電力制御方法
(51)【国際特許分類】
G06F 1/324 20190101AFI20230914BHJP
G06F 1/3225 20190101ALI20230914BHJP
G06F 1/3296 20190101ALI20230914BHJP
G06F 12/00 20060101ALI20230914BHJP
【FI】
G06F1/324
G06F1/3225
G06F1/3296
G06F12/00 550E
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022037524
(22)【出願日】2022-03-10
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】平井 聡
【テーマコード(参考)】
5B011
5B160
【Fターム(参考)】
5B011EA02
5B011EA06
5B011EB01
5B011LL02
5B011LL13
5B160AA14
(57)【要約】
【課題】メモリアクセスの性能を確保するようにメモリの電力を制御する。
【解決手段】情報処理装置1は、カウンタ510によってカウントされる所定期間毎のメモリ62が消費する消費エネルギーの積算値を監視する。情報処理装置1は、カウンタ510に予め設定された所定期間当たりの消費電力の上限の閾値に基づきカウンタ510がオーバーフローした場合に発生する割込みを受け付けたタイミングで、メモリシステム60の動作周波数および電圧を上げる制御を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
割込みカウンタによってカウントされる所定期間毎のメモリが消費する消費エネルギーの積算値を監視し、
前記割込みカウンタに予め設定された所定期間当たりの消費電力の上限の閾値に基づき前記割込みカウンタがオーバーフローした場合に発生する割込みを受け付けたタイミングで、前記メモリシステムの動作周波数および電圧を上げる制御を行う
処理をコンピュータに実行させる電力制御プログラム。
【請求項2】
一定期間毎に前記割込みカウンタから前記消費エネルギーの積算値を読み出し、
読み出した前記消費エネルギーの積算値が予め設定された所定期間当たりの消費電力の下限の閾値以下の場合に、前記メモリシステムの動作周波数および電圧を下げる制御を行う
ことを特徴とする請求項1に記載の電力制御プログラム。
【請求項3】
前記制御を行う処理は、メモリの消費電力に応じた制御を行うための閾値を管理する管理テーブルに基づいて、前記メモリシステムの動作周波数および電圧を変更する制御を行う
ことを特徴とする請求項2に記載の電力制御プログラム。
【請求項4】
前記制御を行う処理は、前記メモリシステムの動作周波数および電圧を変更した際に、前記割込みカウンタに、変更に応じた前記上限の閾値を示す消費電力をエネルギーに換算した値を前記割込みカウンタが表わすことが可能な最大値から引いて1を加えた値を設定する
ことを特徴とする請求項1から請求項3のいずれか1つに記載の電力制御プログラム。
【請求項5】
割込みカウンタによってカウントされる所定期間毎のメモリが消費する消費エネルギーの積算値を監視する監視部と、
前記割込みカウンタに予め設定された所定期間当たりの消費電力の上限の閾値に基づき前記割込みカウンタがオーバーフローした場合に発生する割込みを受け付けたタイミングで、前記メモリシステムの動作周波数および電圧を上げる制御を行う制御部と、
を有することを特徴とする情報処理装置。
【請求項6】
割込みカウンタによってカウントされる所定期間毎のメモリが消費する消費エネルギーの積算値を監視し、
前記割込みカウンタに予め設定された所定期間当たりの消費電力の上限の閾値に基づき前記割込みカウンタがオーバーフローした場合に発生する割込みを受け付けたタイミングで、前記メモリシステムの動作周波数および電圧を上げる制御を行う
処理をコンピュータが実行する電力制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電力制御プログラムなどに関する。
【背景技術】
【0002】
近年、コンピュータシステムにおいてメモリ搭載量が増大しており、メモリ本体やメモリ制御用コントローラにおけるメモリシステムの消費電力が大きな割合を占めるようになってきている。このため、メモリシステムで消費される電力を制御することは、コンピュータシステムの電力効率を向上させるために非常に重要である。
【0003】
近年のコンピュータシステムでは、メモリシステムの制御単位(コントローラとメモリの組)ごとに、周波数や電圧を変化させる機構を持っている。かかる機構は、低周波数や低電圧を設定することにより、消費電力を抑えることが可能である。ところが、消費電力を抑えると、メモリアクセス時に遅延が発生する場合があるため、適切な制御が必要である。すなわち、メモリシステムの負荷に応じて周波数や電圧を変化させる仕組みが必要である。
【0004】
ここで、実行されるプログラムにおけるメモリアクセスの特性に基づいて、使用するメモリチャネル数やメモリシステムの周波数や電圧を制御する技術が開示されている(例えば、特許文献1~3参照)。
【0005】
また、メモリシステムの負荷を、メモリの消費電力により判断する手法が知られている。かかる手法では、計測機器等によりメモリの消費電力を一定間隔で読出し、読出したメモリの消費電力によりメモリの負荷を判断し、メモリの負荷に応じて周波数および電圧を制御する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2020/0183597号明細書
【特許文献2】米国特許出願公開第2011/0320839号明細書
【特許文献3】特表2017-526039号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、メモリシステムの負荷を、メモリの消費電力により判断する手法では、メモリアクセスの性能を確保できない場合があるという問題がある。すなわち、従来の手法では、読出し間隔内の消費電力の変化に対応できず、電力制御に遅延が発生してしまい、メモリアクセスの性能を確保できない場合がある。
【0008】
ここで、メモリアクセスの性能を確保できない場合について、
図6を参照して説明する。
図6は、メモリアクセスの性能を確保できない場合を説明する参考図である。
図6左には、メモリシステムを含むコンピュータシステムの一例が表わされている。メモリシステムには、メモリコントローラおよびメモリが含まれる。そして、メモリコントローラには、消費電力を計測する機器を示す消費電力計が搭載されている。
【0009】
このようなメモリシステムにおいて、消費電力計が一定間隔でメモリの消費電力を読出すと、読出し間隔内の消費電力の変化に電力制御が対応できない場合がある。
図6右に示す0‘03と0’04との間が読出し間隔内のメモリの消費電力の変化に電力制御が対応できない場合である。読出しタイミングで電力制御が実施されるので、かかる場合には、メモリの消費電力の上昇に電力制御が追随できず、メモリアクセスの性能を確保できない。
【0010】
本発明は、1つの側面では、メモリアクセスの性能を確保するようにメモリの電力を制御することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様では、電力制御プログラムは、割り込みカウンタによってカウントされる一定期間毎のメモリの消費電力の積算値を監視し、前記割り込みカウンタに予め設定された上限の閾値を超えた場合に発生する割込みを受け付けたタイミングで、前記メモリシステムの動作周波数および電圧を上げる制御を行う、処理をコンピュータに実行させる。
【発明の効果】
【0012】
1実施態様によれば、メモリアクセスの性能を確保するようにメモリの電力を制御できる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、実施例に係る情報処理装置のハードウェア構成の一例を示す図である。
【
図2】
図2は、実施例に係る電力制御用管理テーブルの一例を示す図である。
【
図4】
図4は、実施例に係るカウンタを用いた処理を説明する図である。
【
図5A】
図5Aは、実施例に係る電力制御のフローチャートの一例を示す図(1)である。
【
図5B】
図5Bは、実施例に係る電力制御のフローチャートの一例を示す図(2)である。
【
図6】
図6は、メモリアクセスの性能を確保できない場合を説明する参考図である。
【発明を実施するための形態】
【0014】
以下に、本願の開示する電力制御プログラム、情報処理装置および電力制御方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【実施例0015】
[情報処理装置のハードウェア構成]
図1は、実施例に係る情報処理装置のハードウェア構成の一例を示す図である。
図1に示すように、情報処理装置1は、CPU50と、システム・メモリ10と、メモリ62とを有する。
【0016】
CPU50は、システム・メモリ10およびメモリ62とバスで接続される。CPU50は、PMU(Performance Monitoring Unit)51と、電力制御機構52とを有し、メモリコントローラ61を内蔵する。メモリコントローラ61は、メモリ62を制御するコントローラである。なお、
図1で示す情報処理装置1は、2つのCPU50を備える場合であるが、3つのCPU50を備える場合であっても、1つのCPU50を備える場合であっても構わない。
【0017】
PMU51は、性能監視機構のことをいい、カウンタ510を用いてメモリ62の性能を監視する。具体的には、PMU51は、メモリ62が消費する電気エネルギー(電力量)を一定期間(例えばクロック周波数単位)でカウンタ510をカウントアップすることで積算する。そして、PMU制御部32がカウンタ510を一定期間(例えば1秒)毎に読み出して監視する。なお、PMU51には、カウンタ510が複数存在するが、空いている1つのカウンタ510が使用される。
【0018】
電力制御機構52は、後述するメモリシステム60の制御単位(メモリコントローラ61とメモリ62の組)の動作周波数および電圧を任意のタイミングで変更可能な制御機能を有する。
【0019】
CPU50に内蔵されるメモリコントローラ61およびメモリコントローラ61と接続されるメモリ62は、メモリシステム60の制御単位である。実施例では、このメモリシステム60の負荷をメモリ62の消費エネルギーで判断する。そして、このメモリ62の消費エネルギーを性能とし、消費エネルギーの積算値を監視するために、カウンタ510が用いられる。カウンタ510には、カウンタイベントとしてメモリ62の消費エネルギーの積算値が設定される。そして、カウンタ510のオーバーフロー時に割込みが発生する。
【0020】
システム・メモリ10は、オペレーティング・システム20と、アプリケーション21とを有する。オペレーティング・システム20は、電力制御プログラム30と、電力制御用管理テーブル41と、状態値情報42とを含む。
【0021】
電力制御プログラム30は、カーネルモジュールの1つである。電力制御プログラム30は、カウンタ510によってカウントされるメモリ62の消費エネルギーの積算値を一定期間毎に監視する。一定期間は、例えば1秒であるが、これに限定されない。そして、電力制御プログラム30は、カウンタ510に予め設定された上限の閾値を超える(オーバーフローの)場合に発生する割込みを受け付けたタイミングで、メモリシステム60の動作周波数および電圧を上げる制御を行う。
【0022】
電力制御用管理テーブル41は、メモリ62の消費電力に応じた制御に用いられる閾値を管理するために用いられるテーブルである。電力制御用管理テーブル41には、メモリシステム60の動作周波数および電圧を消費電力に応じて変更するための消費電力の閾値が設定される。なお、電力制御用管理テーブル41は、システム・メモリ10内に予め準備される。
【0023】
ここで、電力制御用管理テーブル41の一例を、
図2を参照して説明する。
図2は、実施例に係る電力制御用管理テーブルの一例を示す図である。
図2に示すように、電力制御用管理テーブル41は、状態値、メモリ消費電力(閾値)、コントローラ周波数(GHz)およびメモリ電圧(V)を対応付けて記憶する。状態値は、メモリシステム60に設定する動作周波数および電圧に対応付けられる状態を示す値である。メモリ消費電力(閾値)は、動作周波数および電圧の段階に応じて設定されるメモリの消費電力の閾値である。メモリ消費電力(閾値)は、動作周波数および電圧の段階に応じて上限の閾値または下限の閾値、あるいは上限の閾値および下限の閾値を持つ。コントローラ周波数(GHz)は、メモリシステム60のメモリコントローラ61に設定される動作周波数を示す情報である。メモリ電圧(V)は、メモリシステム60のメモリ62に設定される電圧を示す情報である。
【0024】
一例として、状態値が「2」である場合に、メモリ消費電力(閾値)について、上限の閾値として「10W」、下限の閾値として「5W」が記憶されている。加えて、コントローラ周波数(GHz)として「2.0」が記憶されている。メモリ電圧(V)として「1.1」が記憶されている。つまり、状態値が「2」である場合には、メモリ消費電力が「10W」を超えた場合に、コントローラ周波数が「2.4」GHzに設定され、メモリ電圧が「1.2」Vに設定されることを意味する。加えて、状態値が「2」である場合には、メモリ消費電力が「5W」を下回った場合に、コントローラ周波数が「1.8」GHzに設定され、メモリ電圧が「1.0」Vに設定されることを意味する。
【0025】
状態値情報42は、メモリシステム60の現在の状態値を示す情報である。なお、状態値情報42は、後述するPMU制御部32によって設定および更新される。
【0026】
ここで、状態値情報42の一例を、
図3を参照して説明する。
図3は、状態値情報42の一例を示す図である。
図3に示すように、状態値情報42は、現状態値を記憶する。現状態値は、現在の状態値を示す情報である。現状態値は、電力制御用管理テーブル41の状態値に対応する。一例として、現状態値には、「2」が設定されている。
【0027】
図1に戻って、電力制御プログラム30は、電力制御部31およびPMU制御部32を有する。
【0028】
電力制御部31は、メモリシステム60を制御する。例えば、電力制御部31は、状態値情報42の現状態値に従い、メモリコントローラ61に動作周波数を示す情報を設定し、メモリ62の電圧を示す情報を設定する旨を、電力制御機構52に指示する。現状態値に対応する動作周波数を示す情報および電圧を示す情報は、電力制御用管理テーブル41から取得されれば良い。
【0029】
PMU制御部32は、PMU51を制御する。
【0030】
例えば、PMU制御部32は、PMU51内の複数のカウンタ510のうちの1つのカウンタ510にメモリ62の消費電力(消費エネルギー)の積算値をカウントするカウンタイベントを設定する。加えて、PMU制御部32は、カウンタ値がオーバーフローしたとき割込みが発生するようにカウンタ値の初期値を設定する。一例として、PMU制御部32は、状態値情報42の現状態値に応じた上限の閾値がある場合には、上限の閾値を超えるとカウンタ510のカウント値がオーバーフローするように、上限の閾値からエネルギー換算される値を初期値として当該カウント値に設定する。PMU制御部32は、現状態値に応じた上限の閾値がない場合には、カウンタ値がオーバーフローしたとき割込みが発生するように、カウンタ510のカウンタ値に「0」を設定すれば良い。現状態値に応じた上限の閾値がある場合にカウンタ510のカウンタ値に設定される値(CounterValue)は、以下の式(1)のように計算される。なお、CounterMaxは、カウンタ510のカウンタ値が表わすことができる最大値を示す。EnergyThresholdは、上限の閾値からエネルギー換算される値を示す。
CounterValue=CounterMax-EnergyThreshold+1・・・式(1)
【0031】
これにより、PMU51は、メモリシステム60とやり取りして、メモリ62の一定期間毎の消費エネルギーを積算し、カウンタ値に設定する。そして、PMU51は、カウンタ値がオーバーフローすると、割込みを発生させる。一定期間は、例えば、クロック周波数であるが、これに限定されるものではない。
【0032】
また、PMU制御部32は、PMU51のカウンタ510を監視する。すなわち、PMU制御部32は、一定期間毎にカウンタ510のカウンタ値を読み出す。PMU制御部32は、読み出したカウンタ値が状態値情報42の現状態値に対応する下位の閾値をエネルギー換算した値以下の場合には、メモリシステム60の動作周波数および電圧を下げる制御を電力制御部31にさせるべく、現状態値を、閾値を下げる方向に変更する。これにより、PMU制御部32は、電力の消費を抑制することが可能になる。また、PMU制御部32は、割込みが発生した場合には、メモリシステム60の動作周波数および電圧を上げる制御を電力制御部31にさせるべく、現状態値を、閾値を上げる方向に変更する。これにより、PMU制御部32は、メモリアクセスの性能が下がるのを抑制することが可能になる。つまり、PMU制御部32は、メモリアクセスの性能を確保するようにメモリシステム60を制御できる。
【0033】
ここで、PMU51のカウンタ510を用いた処理について、
図4を参照して説明する。
図4は、実施例に係るカウンタを用いた処理を説明する図である。
図4に示すように、PMU51のカウンタ510が表わされている。カウンタ510には、カウンタ値が設定されるCounterValueの領域と、カウンタイベントを設定するイベント設定の領域とが存在する。
【0034】
PMU制御部32は、複数のカウンタ510のうちの1つのカウンタ510にメモリ62の消費エネルギーの積算値をカウントするカウンタイベントを設定する。そして、PMU制御部32は、カウンタ値のオーバーフロー時に割込みが発生するようにカウンタ値の初期値をCounterValueに設定する(<1>)。
【0035】
ここでは、カウンタ510のイベント設定の領域に、「メモリ消費エネルギー積算値」および「割込みon」が設定される。「メモリ消費エネルギー積算値」とは、メモリ62の消費電力(消費エネルギー)の積算値をカウントするイベントのことを意味する。「割込みon」とは、カウンタ値がオーバーフローになったとき割込みを発生させることを意味する。
【0036】
現状態値に応じた上限の閾値がある場合には、カウンタ510のカウンタ値の初期値として、カウンタ値が表わすことができる最大値から上限の閾値の消費電力をエネルギー換算した値を引き、1を足した値が設定される。すなわち、現状態値に応じた上限の閾値がある場合には、カウンタ510のカウンタ値に設定される値(CounterValue)は、式(1)に基づいて計算される。例えば、カウンタ値の領域が32ビットであるとすると、カウンタ値が表わすことができる最大値は、16進数で0xffffffff(10進数で4,294,967,295)である。カウンタ510の計測されるメモリ消費電力のエネルギーは、1カウント当たり1μJ(マイクロジュール)である。上限の閾値が10Wである場合には、10Wの消費電力をエネルギー換算した値は、10Ws(ワット秒)を示す10,000,000μJ(16進数で0x00989680)である。したがって、カウンタ値の初期値としてのCounterValueは、式(1)に基づいて以下のように計算される。
CounterValue=0xffffffff-0x00989680+1=0xff676980(=10進数で4,284,967,296)
【0037】
なお、現状態値に応じた上限の閾値がない場合には、カウンタ510のカウンタ値の初期値として、「0」が設定される。
【0038】
PMU51は、カウンタ510のカウンタ値がオーバーフローした時に、割込みを発生させる(<2>)。
【0039】
PMU制御部32は、割込みが発生すると、メモリシステム60の動作周波数および電圧を変更する(<3>)。すなわち、PMU制御部32は、割込みが発生した場合には、メモリシステム60の動作周波数および電圧を上げる制御を電力制御部31にさせるべく、状態値情報42の現状態値を、閾値を上げる方向に変更する。そして、電力制御部31は、状態値情報42の現状態値に従い、メモリコントローラ61に動作周波数を示す情報を設定し、メモリ62の電圧を示す情報を設定する旨を、電力制御機構52に指示する。そして、電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61に動作周波数を示す情報を設定し、メモリ62の電圧を示す情報を設定する。
【0040】
ここでは、上限の閾値「10W」の消費電力をエネルギー換算した値がオーバーフローした時に、割込みが発生したとする。すると、PMU制御部32は、状態値情報42の現状態値を、「2」から「1」に変更する。そして、電力制御部31は、状態値情報42の現状態値「1」に従い、メモリコントローラ61に動作周波数「2.4」(GHz)、メモリ62に電圧「1.2」(V)を設定する旨を、電力制御機構52に指示する。電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61に動作周波数「2.4」(GHz)、メモリ62に電圧「1.2」(V)を設定する。これにより、PMU制御部32は、メモリアクセスの性能が下がるのを抑制することが可能になる。つまり、PMU制御部32は、メモリアクセスの性能を確保するようにメモリシステム60を制御できる。
【0041】
加えて、PMU制御部32は、1秒毎にカウンタ510のカウンタ値を読み出す。そして、PMU制御部32は、読み出したカウンタ値が状態値情報42の現状態値に対応する下位の閾値をエネルギー換算した値以下の場合には、メモリシステム60の動作周波数および電圧を下げる制御を電力制御部31にさせるべく、現状態値を、閾値を下げる方向に変更する。そして、電力制御部31は、状態値情報42の現状態値に従い、メモリコントローラ61に動作周波数を示す情報を設定し、メモリ62の電圧を示す情報を設定する旨を、電力制御機構52に指示する。そして、電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61に動作周波数を示す情報を設定し、メモリ62の電圧を示す情報を設定する。
【0042】
ここでは、PMU制御部32は、1秒毎に読み出したカウンタ値が下限の閾値「5W」をエネルギー換算した値以下であったとする。すると、PMU制御部32は、状態値情報42の現状態値を、「2」から「3」に変更する。そして、電力制御部31は、状態値情報42の現状態値「3」に従い、メモリコントローラ61に動作周波数「1.8」(GHz)、メモリ62に電圧「1.0」(V)を設定する旨を、電力制御機構52に指示する。電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61に動作周波数「1.8」(GHz)、メモリ62に電圧「1.0」(V)を設定する。これにより、PMU制御部32は、電力の消費を抑制することが可能になる。
【0043】
[電力制御のフローチャート]
ここで、実施例に係る電力制御のフローチャートの一例、
図5Aおよび
図5Bを参照して説明する。
図5Aおよび
図5Bは、実施例に係る電力制御のフローチャートの一例を示す図である。
【0044】
図5Aに示すように、電力制御部31は、状態値情報42の現状態値(初期値)に従い、メモリシステム60の周波数、電圧を設定する(ステップS11)。例えば、電力制御部31は、電力制御用管理テーブル41を参照し、状態値情報42の現状態値に対応するコントローラ周波数の情報、メモリ電圧の情報を取得する。そして、電力制御部31は、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する旨を、電力制御機構52に指示する。そして、電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する。
【0045】
PMU制御部32は、状態値情報42の現状態値は最高値に設定されているか否かを判定する(ステップS12)。状態値情報42の現状態値が最高値に設定されていると判定した場合には(ステップS12;Yes)、PMU制御部32は、カウンタ510のカウンタ値に「0」を設定する(ステップS13)。これは、現状態値に応じた閾値に上限の閾値がないからである。一例として、状態値情報42の現状態値が
図2で示す電力制御用管理テーブル41の状態値「1」に設定されている場合である。
【0046】
一方、状態値情報42の現状態値が最高値に設定されていないと判定した場合には(ステップS12;No)、PMU制御部32は、カウンタ510のカウンタ値に、状態値情報42の現状態値に対応する閾値に応じたメモリ消費エネルギー積算値を設定する(ステップS14)。例えば、PMU制御部32は、電力制御用管理テーブル41から状態値情報42の現状態値に対応する上限の閾値を取得する。PMU制御部32は、上限の閾値からエネルギー換算される値を初期値としてカウンタ510のカウント値に設定する。
【0047】
加えて、PMU制御部32は、カウンタ510に割込みONを設定する(ステップS15)。例えば、PMU制御部32は、カウンタ510のイベント設定の領域に、「メモリ消費エネルギー積算値」および「割込みon」を設定する。
【0048】
そして、PMU制御部32は、カウンタ510のカウントを開始する(ステップS16)。
【0049】
図5Bに示すように、PMU制御部32は、PMU51から割込みが発生したか否かを判定する(ステップS17)。PMU51から割込みが発生したと判定した場合には(ステップS17;Yes)、PMU制御部32は、状態値情報42の現状態値を1段階上げ、メモリシステム60の周波数、電圧を変更する(ステップS18)。例えば、PMU制御部32は、状態値情報42の現状態値を1段階上げる。そして、電力制御部31は、電力制御用管理テーブル41を参照し、状態値情報42の現状態値に対応するコントローラ周波数の情報、メモリ電圧の情報を取得する。そして、電力制御部31は、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する旨を、電力制御機構52に指示する。そして、電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する。そして、PMU制御部32は、カウンタ510のカウンタ値を初期化すべく、ステップS12に移行する。
【0050】
一方、PMU51から割込みが発生していないと判定した場合には(ステップS17;No)、PMU制御部32は、カウンタ値の読み出しから一定期間経過したか否かを判定する(ステップS19)。一定期間経過していないと判定した場合には(ステップS19;No)、PMU制御部32は、一定期間の待ちを行うべく、ステップS17に移行する。
【0051】
一方、一定期間経過したと判定した場合には(ステップS19;Yes)、PMU制御部32は、PMU51のカウンタ値を読み出す(ステップS20)。すなわち、PMU制御部32は、一定期間分のメモリ62の消費エネルギーを、PMU51におけるカウンタ510のカウンタ値から読み出す。そして、PMU制御部32は、読出し値は現状態値に対応する下限の閾値以下であるか否かを判定する(ステップS21)。
【0052】
読出し値は現状態値に対応する下限の閾値以下でないと判定した場合には(ステップS21;No)、PMU制御部32は、カウンタ510のカウンタ値を初期化すべく、ステップS12に移行する。
【0053】
一方、読出し値は現状態値に対応する下限の閾値以下であると判定した場合には(ステップS21;Yes)、PMU制御部32は、状態値情報42の現状態値を1段階下げ、メモリシステム60の周波数、電圧を変更する(ステップS22)。例えば、PMU制御部32は、状態値情報42の現状態値を1段階下げる。そして、電力制御部31は、電力制御用管理テーブル41を参照し、状態値情報42の現状態値に対応するコントローラ周波数の情報、メモリ電圧の情報を取得する。そして、電力制御部31は、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する旨を、電力制御機構52に指示する。そして、電力制御機構52は、電力制御部31の指示に従い、メモリコントローラ61にコントローラ周波数を示す情報を設定し、メモリ62にメモリ電圧を示す情報を設定する。そして、PMU制御部32は、カウンタ510のカウンタ値を初期化すべく、ステップS12に移行する。
【0054】
[実施例の効果]
上記実施例では、情報処理装置1は、カウンタ510によってカウントされる所定期間毎のメモリ62が消費する消費エネルギーの積算値を監視する。情報処理装置1は、カウンタ510に予め設定された所定期間当たりの消費電力の上限の閾値に基づきカウンタ510がオーバーフローした場合に発生する割込みを受け付けたタイミングで、メモリシステム60の動作周波数および電圧を上げる制御を行う。かかる構成によれば、情報処理装置1は、消費電力の変化を、割込みを用いて検知することで、メモリアクセスの性能を確保するようにメモリの電力を制御することができる。
【0055】
また、上記実施例では、情報処理装置1は、一定期間毎にカウンタ510から消費エネルギーの積算値を読み出す。そして、情報処理装置1は、読み出した消費エネルギーの積算値が予め設定された所定期間当たりの消費電力の下限の閾値以下の場合に、メモリシステム60の動作周波数および電圧を下げる制御を行う。かかる構成によれば、情報処理装置1は、電力制御に下限の閾値を用いることで、電力の消費を抑制することができる。
【0056】
また、上記実施例では、情報処理装置1は、メモリの消費電力に応じた制御を行うための閾値を管理する電力制御用管理テーブル41に基づいて、メモリシステム60の動作周波数および電圧を変更する制御を行う。かかる構成によれば、情報処理装置1は、多段階の閾値を管理することで、性能重視の電力制御、消費電力重視の電力制御等の柔軟な電力制御を行うことが可能になる。
【0057】
また、上記実施例では、情報処理装置1は、メモリシステム60の動作周波数および電圧を変更した際に、カウンタ510に、変更に応じた上限の閾値を示す消費電力をエネルギーに換算した値をカウンタ510が表わすことが可能な最大値から引いて1を加えた値を設定する。かかる構成によれば、情報処理装置1は、多段階な閾値を設けても、閾値に応じた割込みを発生させることができ、柔軟な電力制御を行うことが可能になる。
【0058】
[その他]
実施例では、オペレーティング・システム20内に電力制御プログラム30を備え、電力制御プログラム30が、カウンタ510を用いて電力制御を行うと説明した。しかしながら、電力制御プログラム30は、オペレーティング・システム20内に限定されず、オペレーティング・システム20外のアプリケーション21で行っても良い。
【0059】
また、実施例の電力制御用管理テーブル41では、状態値が3段階の場合について説明した。しかしながら、状態値は3段階に限定されず、4段階であっても2段階であっても良い。これにより、情報処理装置1は、複数段階の状態値の管理を可能とすることで、性能重視の電力制御、消費電力重視の電力制御等の柔軟な電力制御を行うことが可能になる。
【0060】
また、図示した情報処理装置1に含まれる電力制御プログラム30の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、電力制御部31と、PMU制御部32とを1つの部として統合しても良い。また、PMU制御部32を、PMU51のカウンタ510に必要な値を設定する設定部と、PMU51のカウンタ510を監視する監視部とに分散しても良い。電力制御用管理テーブル41と、状態値情報42等を記憶する記憶部(図示しない)を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。