説明

計算機、消費電力低減方法およびプログラム

【課題】メモリを省電力状態にすることによる省電力効果を最大限に得る。
【解決手段】メモリを備えた計算機であって、メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、メモリに対するメモリアクセスエラーを検出する検出部とを有し、メモリ電源制御部は、メモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出部にて検出されると、当該メモリを通常状態に変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、消費電力を低減することが可能な計算機、消費電力低減方法およびプログラムに関する。
【背景技術】
【0002】
計算機で用いられるCPU(Central Processing Unit)の高速化や、計算機で実行されるプログラムの高度化および複雑化に伴い、計算機が備えるメモリのサイズも増加の一途をたどっている。
【0003】
計算機が備えるメモリの記憶領域のうち実際に使用されている記憶領域のサイズはその時々の処理内容や処理量によって変化するため、未使用の記憶領域が存在することになる。
【0004】
メモリに未使用の記憶領域が一定量以上存在する場合、メモリの一部への電力供給を停止したり省電力モードとしたりすることによってメモリを省電力状態にすれば、計算機の消費電力の低減が期待できる。
【0005】
しかし、メモリの電力制御はある一定の単位毎にしか行えない場合が多い。例えば電力制御がメモリバンク単位で行われる場合、メモリバンクにごく一部でも使用中の記憶領域があると、そのメモリバンクを省電力状態にすることができない。
【0006】
そこで、できるだけ多くの記憶領域を省電力状態にできるようにする技術が求められ、これを可能にする技術が例えば特許文献1に開示されている。
【0007】
特許文献1に開示されている技術では、仮想アドレス空間でのメモリ管理において、使用中のメモリバンクの物理ページを優先的に割り当てる。また、CPUが動作していないアイドル状態の時に、メモリバンクの記憶内容をバックアップし、そのメモリバンクの電源をオフする。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2005−196343号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述した特許文献1に記載された技術では、メモリバンクの記憶内容をバックアップし、そのメモリバンクの電源をオフした後に割り込み(例えばキー入力による割り込み)が発生した場合、そのメモリバンクの電源をオンにして記憶内容のリストアを行う。
【0010】
しかし、通常CPUにはアイドル状態においても様々な割り込みが発生しているため、メモリバンクの電源を長時間オフにすることができない。この場合、メモリを省電力状態にすることによる省電力効果を最大限に得ることができなくなってしまうという問題点がある。
【0011】
本発明は、メモリを省電力状態にすることによる省電力効果を最大限に得ることを可能にする計算機、消費電力低減方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するために本発明の計算機は、メモリを備えた計算機であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、
前記メモリに対するメモリアクセスエラーを検出する検出部と、を有し、
前記メモリ電源制御部は、前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが前記検出部にて検出されると、当該メモリを前記通常状態に変更する。
【0013】
また、上記目的を達成するために本発明の消費電力低減方法は、メモリを備えた計算機における消費電力低減方法であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする処理と、
前記メモリに対するメモリアクセスエラーを検出する処理と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する処理と、を有する。
【0014】
また、上記目的を達成するために本発明のプログラムは、メモリを備えた計算機に、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする機能と、
前記メモリに対するメモリアクセスエラーを検出する機能と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する機能と、を実現させる。
【発明の効果】
【0015】
本発明は以上説明したように構成されているので、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【0016】
従って、メモリを省電力状態にすることによる省電力効果を最大限に得ることが可能となる。
【図面の簡単な説明】
【0017】
【図1】本発明の計算機の第1の実施形態の構成を示すブロック図である。
【図2】図1に示した計算機においてメモリへの電力供給を停止するときの動作を説明するためのフローチャートである。
【図3】図1に示した計算機において電力供給が停止されたメモリへの電力供給を開始するときの動作を説明するためのフローチャートである。
【図4】本発明の計算機の第2の実施形態の構成を示すブロック図である。
【図5】図4に示した計算機において電力供給が停止されたメモリへの電力供給を開始するときの動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0018】
以下に、本発明の実施の形態について図面を参照して説明する。
【0019】
(第1の実施形態)
図1は、本発明の計算機の第1の実施形態の構成を示すブロック図である。
【0020】
本実施形態の計算機100は図1に示すように、CPU101と、メモリコントローラ102と、メモリ電源制御部103と、メモリ104−1〜3と、計算処理プログラム111と、メモリ管理部112と、省電力制御部113と、検出部であるメモリアクセスエラー検出部114とを備えている。なお、ここでは、計算機100が備えるメモリの数が3である場合について説明する。ただし、本発明はメモリの数が3の場合に限定されない。
【0021】
CPU101は、プログラムを実行する中央演算処理装置である。
【0022】
メモリ104−1〜3は、情報を記憶する装置であり、例えば計算機100の主記憶装置である。なお、メモリ104−1〜3が記憶する情報とは例えば、CPU101が実行するプログラムやCPU101が使用するデータである。
【0023】
メモリコントローラ102は、CPU101とCPUバスで接続されている。メモリコントローラ102は、CPU101が行うメモリアクセス要求に応じてメモリ104−1〜3に記憶された情報を読み込んだり、メモリ104−1〜3へ情報を書き込んだりする。また、メモリコントローラ102は、メモリ104−1〜3のそれぞれに対応付けられた物理アドレスの管理を行う。また、メモリコントローラ102は、メモリ104−1〜3の電源が投入された際の初期化や、メモリ104−1〜3が正常に動作するためのメモリ104−1〜3に対する制御や管理を行う。なお、メモリ104−1〜3に対する制御や管理の一例としては、メモリ104−1〜3がDRAMの場合、メモリ104−1〜3に対するプリチャージやリフレッシュの実行がある。
【0024】
メモリ電源制御部103は、メモリ104−1〜3のそれぞれへの電力供給を制御する。具体的には、メモリ電源制御部103は、後述する省電力制御部113からの指示に応じ、メモリ104−1〜3のそれぞれへの電力供給を行ったり、メモリ104−1〜3のそれぞれへの電力供給を停止したりする。これにより、メモリ104−1〜3のそれぞれが、そのメモリに対するアクセスが可能な通常状態と、そのメモリにおける消費電力が通常状態よりも低減され、そのメモリへのアクセスが不可能な省電力状態とのいずれかの状態になる。なお、メモリ電源制御部103は、CPU101とCPUバスによって接続されていてもよいし、他のバスもしくは信号線によって接続されていてもよい。
【0025】
計算処理プログラム111は、CPU101にて実行されるプログラムやオペレーティングシステムである。計算処理プログラム111は、記憶領域が必要となった場合、メモリ管理部112に記憶領域の割当を要求する。また、計算処理プログラム111は、記憶領域が不要となった場合、メモリ管理部112に記憶領域の解放を要求する。
【0026】
メモリ管理部112は、メモリ104−1〜3のそれぞれの記憶領域の使用状態を管理するプログラムである。このプログラムは、CPU101にて実行される。メモリ管理部112は、例えば物理アドレスを用いて記憶領域の使用状態を管理する。メモリ管理部112は、記憶領域の割当の要求を受け付けた場合、未使用の記憶領域の中から指定されたサイズの記憶領域を選択する。そして、メモリ管理部112は、選択した記憶領域を割当済み(使用中)の記憶領域として記憶した上で、選択した記憶領域のアドレスを要求元に返す。また、メモリ管理部112は、記憶領域の解放の要求を受け付けた場合、指定された記憶領域が割当済みであるという情報を削除する。なお、計算処理プログラム111および省電力制御部113が使用するアドレスは、物理アドレスでもよいし、仮想アドレスでもよい。仮想アドレスが使用される場合、メモリ管理部112は、物理アドレスと仮想アドレスとの対応関係についても管理する。
【0027】
省電力制御部113は、メモリ104−1〜3のそれぞれへの電力供給または電力供給の停止をメモリ電源制御部103に指示するプログラムである。このプログラムは、CPU101にて実行される。省電力制御部113は、メモリ104−1〜3のそれぞれへの電力供給を停止にする際、メモリ104−1〜3のうち電力供給を停止するメモリ以外のメモリを、電力供給を停止するメモリに記憶されている情報を記憶させるための退避用メモリとする。そして、省電力制御部113は、電力供給を停止するメモリの記憶領域のうち使用中の記憶領域に記憶されている情報を、退避用メモリに記憶させる。このとき、省電力制御部113は、電力供給を停止するメモリの記憶領域の使用中の記憶領域と、その記憶領域に記憶されている情報を記憶させた退避用メモリの記憶領域である退避用記憶領域とを対応付ける。具体的には、省電力制御部113は、電力供給を停止するメモリの記憶領域の使用中の記憶領域の物理アドレスと、その記憶領域に対応する退避用記憶領域の物理アドレスとを対応付けて退避リストとして記憶する。なお、退避リストには、退避された記憶領域のサイズも含まれる。また、省電力制御部113は、電力供給が停止されたメモリへの電力供給を開始する際、電力供給を開始するメモリの記憶領域に対応する退避用記憶領域に記憶された情報を、その記憶領域に記憶させる。なお、省電力制御部113は、後述するメモリアクセスエラー検出部114からの通知に基づき、電力供給が停止されたメモリへの電力供給を開始する。
【0028】
メモリアクセスエラー検出部114は、メモリ104−1〜3のそれぞれに対するアクセスが失敗した場合に発生するメモリアクセスエラーを検出し、その旨を省電力制御部113へ通知するプログラムである。このプログラムは、CPU101にて実行される。なお、メモリアクセスエラー検出部114は、例えばメモリアクセスエラーの発生に伴ってCPU101が発生させる例外もしくは割り込みを補足することによってメモリアクセスエラーを検出する。また、メモリアクセスエラー検出部114は、メモリアクセスエラーが発生した記憶領域の物理アドレスまたはメモリ104−1〜3のそれぞれを識別するため識別子の少なくとも一方を、CPU101またはメモリコントローラ102の状態を取得することによって特定する。メモリアクセスエラー検出部114は、特定した情報も合わせて省電力制御部113へ通知する。
【0029】
以下に、上記のように構成された計算機100の動作について説明する。
【0030】
まず、図1に示した計算機100においてメモリ104−1〜3のそれぞれへの電力供給を停止するときの動作について説明する。ここでは一例として、メモリ104−3への電力供給を停止するときの動作について説明する。
【0031】
なお、104−1〜3のそれぞれへの電力供給を停止する動作は、計算機100の動作中、任意のタイミングで開始してよい。そのタイミングの一例としては、CPU使用率がある閾値を下回ったとき、メモリ使用量がある閾値を下回ったとき、ユーザから指示されたとき等が挙げられる。
【0032】
図2は、図1に示した計算機100においてメモリ104−3への電力供給を停止するときの動作を説明するためのフローチャートである。
【0033】
省電力制御部113は、メモリ管理部112が管理する情報を参照することにより、メモリ104−3の記憶領域のうち使用中の記憶領域を特定する。
【0034】
そして、省電力制御部113は、退避リストを参照し、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域があるかどうかを確認する(ステップS1)。
【0035】
ステップS1における確認の結果、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域がある場合、省電力制御部113は、そのうちの1つの記憶領域を選択する(ステップS2)。
【0036】
次に、省電力制御部113は、選択した記憶領域と同じサイズの記憶領域を割り当てるようメモリ管理部112に要求する。ここでは、メモリ104−1またはメモリ104−2が退避用メモリとなる。そのため、省電力制御部113は、メモリ104−1またはメモリ104−2の記憶領域を退避用記憶領域として割り当てるように要求する。
【0037】
省電力制御部113からの要求を受け付けたメモリ管理部112は、メモリ104−1またはメモリ104−2の記憶領域を退避用記憶領域として割り当てる(ステップS3)。
【0038】
次に、省電力制御部113は、ステップS2にて選択した記憶領域に記憶されている情報を、ステップS3にて割り当てられた退避用記憶領域に記憶させる(ステップS4)。
【0039】
そして、省電力制御部113は、ステップS2にて選択した記憶領域と、ステップS3にて割り当てられた退避用記憶領域とを対応付ける(ステップS5)。具体的には、省電力制御部113は、ステップS2にて選択した記憶領域の物理アドレスと、ステップS3にて割り当てられた退避用記憶領域の物理アドレスとを退避リストの1つのエントリーとして記憶する。そして、ステップS1の動作へ遷移する。
【0040】
一方、ステップS1における確認の結果、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域がない場合、省電力制御部113は、メモリ104−3への電力供給を停止するようにメモリ電源制御部103へ指示する。
【0041】
省電力制御部113からの指示を受け付けたメモリ電源制御部103は、メモリ104−3への電力供給を停止する(ステップS6)。
【0042】
次に、図1に示した計算機100において電力供給が停止されたメモリ104−1〜3のいずれかへの電力供給を開始するときの動作について説明する。ここでは一例として、電力供給が停止されたメモリ104−3への電力供給を開始するときの動作について説明する。
【0043】
図3は、図1に示した計算機100において電力供給が停止されたメモリ104−3への電力供給を開始するときの動作を説明するためのフローチャートである。
【0044】
計算処理プログラム111が、電力供給が停止されたメモリ104−3の割当済みの記憶領域へアクセスしようとすると、メモリアクセスエラーが発生する(ステップS21)。具体的には、CPU101が計算処理プログラム111の指示によってメモリアクセス要求を出す。そして、メモリコントローラ102がそのメモリアクセス要求に従った処理を行おうとする。このとき、アクセス先であるメモリ104−3への電力供給が停止されているため、その処理が失敗する。そのため、メモリコントローラ102は、メモリアクセスエラーが発生したことをCPU101へ通知する。
【0045】
メモリアクセスエラー検出部114は、ステップS21にて発生したメモリアクセスエラーを検出し(ステップS22)、その旨を省電力制御部113へ通知する。
【0046】
省電力制御部113は、メモリアクセスエラー検出部114からの通知に基づき、メモリ104−1〜3のうちメモリアクセスエラーが発生したメモリを特定する(ステップS23)。ここでは、メモリアクセスエラーが発生したメモリとしてメモリ104−3が特定される。なお、メモリアクセスエラーが発生したメモリ104−1〜3の識別子がメモリアクセスエラー検出部114からの通知に含まれる場合、この動作は省略してもよい。
【0047】
省電力制御部113は、ステップS23にて特定したメモリへの電力供給が停止されているか(省電力状態か)どうかを確認する(ステップS24)。
【0048】
ステップS24における確認の結果、ステップS23にて特定したメモリへの電力供給が停止されていない場合、省電力制御部113は処理を終了する。
【0049】
一方、ステップS24における確認の結果、ステップS23にて特定したメモリへの電力供給が停止されている場合、省電力制御部113は、そのメモリへの電力供給を開始するようにメモリ電源制御部103へ指示する。ここでは、ステップS23にて特定されたメモリは、電力供給が停止されたメモリ104−3であるため、省電力制御部113は、メモリ104−3への電力供給を開始するようにメモリ電源制御部103へ指示する。
【0050】
省電力制御部113からの指示を受け付けたメモリ電源制御部103は、メモリ104−3への電力供給を開始する(ステップS25)。
【0051】
次に、省電力制御部113は、退避リストを参照し、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域があるかどうかを確認する(ステップS26)。
【0052】
ステップS26における確認の結果、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がない場合、省電力制御部113は処理を終了する。
【0053】
一方、ステップS26における確認の結果、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がある場合、省電力制御部113は、そのうちの1つの記憶領域を選択する(ステップS27)。
【0054】
次に、省電力制御部113は、ステップS27にて選択した記憶領域に、その記憶領域に対応する退避用記憶領域に記憶された情報を記憶させる(ステップS28)。
【0055】
次に、省電力制御部113は、ステップS27にて選択した記憶領域に対応する退避用記憶領域の解放をメモリ管理部112に要求する。
【0056】
そして、省電力制御部113は、ステップS27にて選択した記憶領域と、その記憶領域に対応する退避用記憶領域との間の対応付けを解除する(ステップS29)。具体的には、省電力制御部113は、ステップS27にて選択した記憶領域の物理アドレスを含むエントリーを退避リストから削除する。そして、ステップS26の動作へ遷移する。
【0057】
このように本実施形態において計算機100は、計算機100が備えるメモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする。
【0058】
そして、計算機100は、計算機100が備えるメモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーを検出すると、当該メモリを通常状態に変更する。
【0059】
これにより、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【0060】
従って、メモリを省電力状態にすることによる省電力効果を最大限に得ることが可能となる。
【0061】
なお、本実施形態では、メモリを省電力状態にするために、そのメモリへの電力供給を制御する場合について説明したが、本発明はこれに限定されるものではない。他の例として、メモリに備えられている省電力機能を用いてもよい。なお、メモリに備えられた省電力機能を利用する際、省電力状態にしてもメモリの記憶内容が失われない場合には、上述したステップS1〜ステップS5や、ステップS26〜S29の動作を省略することができる。
【0062】
例えば、メモリがDRAMである場合、省電力状態としてセルフリフレッシュモードを使用してもよい。この場合、メモリの動作モードを、通常のリフレッシュを行うモードから、セルフリフレッシュモードに変更する機能、および、セルフリフレッシュモードから通常のリフレッシュを行うモードに変更する機能をメモリコントローラ102が備えるようにしておく。つまり、メモリコントローラ102がメモリ電源制御部103として動作するようにしておく。そして、動作モードがセルフリフレッシュモードとなっているメモリに対するアクセスがあった場合、メモリコントローラ102が、そのアクセスが失敗したものとみなし、メモリアクセスエラーが発生したことをCPU101へ通知すればよい。
【0063】
また、本実施形態においては、省電力状態のメモリに対するアクセスがあった場合に、メモリコントローラ102がメモリアクセスエラーの発生を通知(失敗応答)する場合について説明したが、本発明はこれに限定されるものではない。他の例として、省電力状態のメモリに対するアクセスがあった場合、メモリコントローラ102が何も応答しないようにしてもよい。この場合、CPU101がメモリアクセス要求の実行に際しタイムアウト時間を設定し、タイムアウト時間内に応答が得られなかった場合には当該アクセスが失敗したものとみなし、プログラムにそれを通知する仕組み(例えば例外もしくは割り込み)を持つようにすればよい。
【0064】
また、本実施形態においては、CPUの数が1つである場合について説明したが、本発明はこれに限定されるものではなく、計算機100は2つ以上のCPUを備えていてもよい。ここで、メモリが複数のCPUで共有される場合、CPU間での排他制御が必要となる可能性がある。例えば、図2および図3を用いて説明した、メモリへの電力供給を停止および開始するときの動作をあるCPUが実行している際に、別のCPUが当該メモリへアクセスした場合、不正な値が参照されたり、書き込んだ値が消去されたりするおそれがある。そのような問題を回避するために、メモリへの電力供給を停止および開始する動作をあるCPUが実行している間は、他のCPUは省電力制御部113による処理以外の処理の実行を一時停止するようにしてもよい。CPUによる処理の実行を一時停止する期間としては例えば、図2のステップS1からステップS6までの間、および、図3のステップS25からS29までの間、とすることができる。
【0065】
また、計算機100が2つ以上のCPUを備えている場合、省電力制御部113による情報の退避処理(ステップS1からステップS5)および復元処理(ステップS26からステップS29)を複数のCPUで並行して実行してもよい。これは、退避リストを分割して各CPUに割り当てて、各CPUが割り当てられた退避リスト内のエントリーについて退避処理もしくは復元処理を行うことで実現することができる。
【0066】
(第2の実施形態)
上述した第1の実施形態では、計算処理プログラム111によるメモリ104−1〜3へのアクセスの際に発生するメモリアクセスエラーの検出を契機としてメモリ104−1〜3のそれぞれへの電力供給を開始する場合について説明した。ただし、本発明はこれに限定されるものではない。
【0067】
他の例として、メモリ104−1〜4へのメモリアクセスが、DMA(Direct Memory Access)によってCPU101を介さずに行われる場合に発生するメモリアクセスエラーの検出を契機として、メモリ104−1〜3のそれぞれへの電力供給を開始するようにしてもよい。
【0068】
図4は、本発明の計算機の第2の実施形態の構成を示すブロック図である。
【0069】
本実施形態の計算機200は図4に示すように、CPU101と、メモリコントローラ102と、メモリ電源制御部103と、メモリ104−1〜3と、DMAコントローラ205と、計算処理プログラム111と、メモリ管理部112と、省電力制御部113と、メモリアクセスエラー検出部214と、DMA管理部215とを備えている。なお、図4において、図1に示したものと同一の構成のものには同一の符号を付してある。
【0070】
本実施形態の計算機200は、第1の実施形態における計算機100と比較すると、DMAコントローラ205と、DMA管理部215とを備えている点が異なる。
【0071】
DMAコントローラ205は、CPU101およびメモリコントローラ102とCPUバスで接続され、メモリ104−1〜3とDMAコントローラ205に接続された入出力装置(不図示)との間、またはメモリ104−1〜3間におけるDMA転送を制御する。DMAコントローラ205は、DMA転送を実行する際にメモリアクセスエラーが発生した場合、その旨をCPU101へ通知する。これは、例えば、DMAコントローラ205がCPU101に対して例外もしくは割り込みを発生させることで実現できる。その際、DMAコントローラ205は、メモリアクセスエラーが発生した記憶領域の物理アドレスもしくはメモリ104−1〜3の識別子の少なくとも一方も合わせてCPU101へ通知する。または、DMAコントローラ205が内部レジスタ等を備え、メモリアクセスエラーの発生およびメモリアクセスエラーが発生したメモリを、その内部レジスタ等に記憶させる値によってCPU101に示すようにしてもよい。
【0072】
DMA管理部215は、DMAコントローラ205に指示してDMA転送を管理および制御するプログラムであり、CPU101にて実行される。DMA管理部215は、計算処理プログラム111の要求に基づき、DMA転送を実行する。DMA管理部215は、実行中のDMA転送に関する情報(転送元デバイスおよびアドレス、転送先デバイスおよびアドレス)を記憶する。DMA管理部215は、実行したDMA転送が完了した際、計算処理プログラム111に完了通知を行う。また、DMA管理部215は、DMA転送を実行した際にそのDMA転送がメモリアクセスエラーによって失敗した場合、実行中のDMA転送に関する情報を参照して、再度DMA転送を実行する。
【0073】
メモリアクセスエラー検出部214は、第1の実施形態におけるメモリアクセスエラー検出部114の機能に加え、以下に説明する機能を持つ。メモリアクセスエラー検出部214は、DMAコントローラ205からCPU101へのメモリアクセスエラーの発生の通知によってメモリアクセスエラーを検出し、その旨を省電力制御部113およびDMA管理部215へ通知する。なお、メモリアクセスエラー検出部214は、例えばメモリアクセスエラーに伴ってDMAコントローラ205が発生させる例外もしくは割り込みを補足することによってメモリアクセスエラーを検出する。また、メモリアクセスエラー検出部214は、メモリアクセスエラーが発生した物理アドレスまたはメモリ104−1〜3の識別子の少なくとも一方を、CPU101またはDMAコントローラ205の状態を取得することで特定する。メモリアクセスエラー検出部214は、特定した情報も合わせて省電力制御部113およびDMA管理部215へ通知する。
【0074】
以下に、上記のように構成された計算機200の動作について説明する。
【0075】
図4に示した計算機200においてメモリ104−1〜3のそれぞれへの電力供給を停止するときの動作は、図2を参照しながら説明した計算機100における動作と同様である。そのため、ここでは説明を省略する。
【0076】
従って、ここでは、図4に示した計算機200において電力供給が停止されているメモリ104−1〜3のいずれかへの電力供給を開始するときの動作について説明する。ここでは一例として、電力供給が停止されたメモリ104−3への電力供給を開始するときの動作について説明する。
【0077】
図5は、図4に示した計算機200において電力供給が停止されたメモリ104−3への電力供給を開始するときの動作を説明するためのフローチャートである。
【0078】
まず、DMA管理部215は、計算処理プログラム111の要求に基づき、DMAコントローラ205にDMA転送開始を指示し、DMA転送が開始される(ステップS41)。
【0079】
DMA管理部215は、そのDMA転送のパラメタ(転送元デバイスおよびアドレス、転送先デバイスおよびアドレス)を実行中のDMA転送に関する情報として記憶する。
【0080】
電力供給が停止されたメモリ104−3の割当済みの記憶領域へのDMA転送が試行されると、メモリアクセスエラーが発生する(ステップS42)。具体的には、DMAコントローラ205がメモリアクセス要求を出す。そして、メモリコントローラ102がそのメモリアクセス要求に従った処理を行おうとする。このとき、アクセス先であるメモリ104−3への電力供給が停止されているため、その要求の処理が失敗する。そのため、メモリコントローラ102は、メモリアクセスエラーが発生したことをDMAコントローラ205へ通知する。
【0081】
メモリコントローラ102からのメモリアクセスエラーの発生の通知を受け付けたDMAコントローラ205は、その旨をCPU101へ通知する。
【0082】
メモリアクセスエラー検出部214は、DMAコントローラ205からCPU101へのメモリアクセスエラーの発生の通知によってメモリアクセスエラーを検出する(ステップS43)。そして、メモリアクセスエラー検出部214は、その旨を省電力制御部113およびDMA管理部215へ通知する。
【0083】
ステップS44〜S46の動作は、上述した図3のフローチャートにおけるステップS23〜25の動作と同様であるため、ここでは説明を省略する。
【0084】
次に、省電力制御部113は、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域があるかどうかを確認する(ステップS47)。
【0085】
ステップS47における確認の結果、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がない場合、省電力制御部113は、その旨をDMA管理部215へ通知する。
【0086】
そして、DMA管理部215は、実行中のDMA転送に関する情報を参照し、メモリアクセスエラーが実行中のDMA転送に関するものである場合、そのDMA転送を再度実行する(ステップS48)。
【0087】
一方、ステップS47における確認の結果、メモリ104−3の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がある場合、ステップS49の動作へ遷移する。なお、ステップS49〜S51の動作は、上述した図3のフローチャートにおけるステップS27〜29の動作と同様であるため、ここでは説明を省略する。
【0088】
このように本実施形態において計算機200は、計算機200が備えるメモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする。
【0089】
そして、計算機200は、計算機200が備えるメモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーを検出すると、当該メモリを通常状態に変更する。
【0090】
これにより、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【0091】
従って、省電力状態にあるメモリに対するメモリアクセスエラーがDMA転送によって発生する場合においても、上述した第1の実施形態と同様の効果を得ることができる。
【0092】
なお、本実施形態においては、DMAコントローラ205がCPU101およびメモリコントローラ102とCPUバスで直接接続される例を示したが、本発明はこれに限定されるものではない。他の例として、DMAコントローラ205は、CPUバスとは異なるバスに接続され、バスブリッジを介してCPU101およびメモリコントローラ102と接続されてもよい。
【0093】
また、本実施形態においては、DMAコントローラ205からCPU101へのメモリアクセスエラーの発生の通知によってメモリアクセスエラー検出部214がメモリアクセスエラーの発生を検出することとしたが、本発明はこれに限定されない。他の例として、メモリコントローラ102からDMAコントローラ205へのメモリアクセスエラーの発生の通知によってメモリアクセスエラー検出部214がメモリアクセスエラーを検出するようにしてもよい。また、メモリコントローラ102がメモリアクセスエラーの発生をDMAコントローラ205およびCPU101へ通知し、その通知によってメモリアクセスエラー検出部214がメモリアクセスエラーの発生を検出するようにしてもよい。
【0094】
さらに他の例として、DMA転送の転送元または転送先のデバイス(不図示)がCPU101にメモリアクセスエラーの発生を通知し、その通知によってメモリアクセスエラー検出部214がメモリアクセスエラーを検出することとしてもよい。これは、DMA転送の転送元または転送先のデバイスが、DMAコントローラ205またはメモリコントローラ102から転送エラーを通知された際に、メモリアクセスエラーの発生をCPU101へ通知することで実現できる。
【0095】
以上、本発明の実施形態について説明したが、本発明は、これらの実施形態だけに限定されるものではなく、本発明の技術思想の範囲内において、これらの実施形態を組み合わせて使用したり、一部の構成を変更したりしてもよい。
【0096】
また、本発明においては、計算機内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを計算機にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを計算機に読み込ませ、実行するものであっても良い。計算機にて読取可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、計算機に内蔵されたHDDなどを指す。
【符号の説明】
【0097】
100,200 計算機
101 CPU
102 メモリコントローラ
103 メモリ電源制御部
104−1〜3 メモリ
111 計算処理プログラム
112 メモリ管理部
113 省電力制御部
114,214 アクセスエラー検出部
205 DMAコントローラ
215 DMA管理部

【特許請求の範囲】
【請求項1】
メモリを備えた計算機であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、
前記メモリに対するメモリアクセスエラーを検出する検出部と、を有し、
前記メモリ電源制御部は、前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが前記検出部にて検出されると、当該メモリを前記通常状態に変更する計算機。
【請求項2】
請求項1に記載の計算機において、
前記メモリ電源制御部は、前記メモリへの電力供給を行うことによって当該メモリを前記通常状態にし、前記メモリへの電力供給を停止することによって当該メモリを前記省電力状態にする計算機。
【請求項3】
請求項1または請求項2に記載の計算機において、
前記メモリは、複数の動作モードのいずれかで動作し、
前記メモリ電源制御部は、前記メモリの動作モードを、前記複数の動作モードのうち、第1のモードに設定することによって当該メモリを前記省電力状態にし、第2のモードに設定することによって当該メモリを前記通常状態にする計算機。
【請求項4】
請求項1乃至3のいずれか1項に記載の計算機において、
前記メモリが複数備えられている場合、前記複数のメモリのそれぞれが前記省電力状態にされる前に、前記複数のメモリのうち当該メモリ以外のメモリを退避用メモリとし、当該メモリに記憶された情報を前記退避用メモリに記憶させるとともに、当該メモリの記憶領域のうち情報が記憶された記憶領域と、前記退避用メモリの記憶領域のうち当該情報を記憶させた退避用記憶領域とを対応付けて記憶する省電力制御部を有し、
前記省電力制御部は、前記複数のメモリのそれぞれが前記省電力状態から前記通常状態に変更されると、当該メモリの記憶領域に対応する退避用記憶領域に記憶された情報を、当該記憶領域に記憶させる計算機。
【請求項5】
メモリを備えた計算機における消費電力低減方法であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする処理と、
前記メモリに対するメモリアクセスエラーを検出する処理と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する処理と、を有する消費電力低減方法。
【請求項6】
メモリを備えた計算機に、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする機能と、
前記メモリに対するメモリアクセスエラーを検出する機能と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する機能と、を実現させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−168871(P2012−168871A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−30935(P2011−30935)
【出願日】平成23年2月16日(2011.2.16)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度 総務省、「グリーンネットワーク基盤技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】