(57)【要約】【課題】メモリを省電力状態にすることによる省電力効果を最大限に得る。【解決手段】メモリを備えた計算機であって、メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、メモリに対するメモリアクセスエラーを検出する検出部とを有し、メモリ電源制御部は、メモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出部にて検出されると、当該メモリを通常状態に変更する。【選択図】図１
2012168871.tif 000002
【特許請求の範囲】
【請求項１】
メモリを備えた計算機であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、
前記メモリに対するメモリアクセスエラーを検出する検出部と、を有し、
前記メモリ電源制御部は、前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが前記検出部にて検出されると、当該メモリを前記通常状態に変更する計算機。
【請求項２】
請求項１に記載の計算機において、
前記メモリ電源制御部は、前記メモリへの電力供給を行うことによって当該メモリを前記通常状態にし、前記メモリへの電力供給を停止することによって当該メモリを前記省電力状態にする計算機。
【請求項３】
請求項１または請求項２に記載の計算機において、
前記メモリは、複数の動作モードのいずれかで動作し、
前記メモリ電源制御部は、前記メモリの動作モードを、前記複数の動作モードのうち、第１のモードに設定することによって当該メモリを前記省電力状態にし、第２のモードに設定することによって当該メモリを前記通常状態にする計算機。
【請求項４】
請求項１乃至３のいずれか１項に記載の計算機において、
前記メモリが複数備えられている場合、前記複数のメモリのそれぞれが前記省電力状態にされる前に、前記複数のメモリのうち当該メモリ以外のメモリを退避用メモリとし、当該メモリに記憶された情報を前記退避用メモリに記憶させるとともに、当該メモリの記憶領域のうち情報が記憶された記憶領域と、前記退避用メモリの記憶領域のうち当該情報を記憶させた退避用記憶領域とを対応付けて記憶する省電力制御部を有し、
前記省電力制御部は、前記複数のメモリのそれぞれが前記省電力状態から前記通常状態に変更されると、当該メモリの記憶領域に対応する退避用記憶領域に記憶された情報を、当該記憶領域に記憶させる計算機。
【請求項５】
メモリを備えた計算機における消費電力低減方法であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする処理と、
前記メモリに対するメモリアクセスエラーを検出する処理と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する処理と、を有する消費電力低減方法。
【請求項６】
メモリを備えた計算機に、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする機能と、
前記メモリに対するメモリアクセスエラーを検出する機能と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する機能と、を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消費電力を低減することが可能な計算機、消費電力低減方法およびプログラムに関する。
【背景技術】
【０００２】
計算機で用いられるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の高速化や、計算機で実行されるプログラムの高度化および複雑化に伴い、計算機が備えるメモリのサイズも増加の一途をたどっている。
【０００３】
計算機が備えるメモリの記憶領域のうち実際に使用されている記憶領域のサイズはその時々の処理内容や処理量によって変化するため、未使用の記憶領域が存在することになる。
【０００４】
メモリに未使用の記憶領域が一定量以上存在する場合、メモリの一部への電力供給を停止したり省電力モードとしたりすることによってメモリを省電力状態にすれば、計算機の消費電力の低減が期待できる。
【０００５】
しかし、メモリの電力制御はある一定の単位毎にしか行えない場合が多い。例えば電力制御がメモリバンク単位で行われる場合、メモリバンクにごく一部でも使用中の記憶領域があると、そのメモリバンクを省電力状態にすることができない。
【０００６】
そこで、できるだけ多くの記憶領域を省電力状態にできるようにする技術が求められ、これを可能にする技術が例えば特許文献１に開示されている。
【０００７】
特許文献１に開示されている技術では、仮想アドレス空間でのメモリ管理において、使用中のメモリバンクの物理ページを優先的に割り当てる。また、ＣＰＵが動作していないアイドル状態の時に、メモリバンクの記憶内容をバックアップし、そのメモリバンクの電源をオフする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１９６３４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した特許文献１に記載された技術では、メモリバンクの記憶内容をバックアップし、そのメモリバンクの電源をオフした後に割り込み（例えばキー入力による割り込み）が発生した場合、そのメモリバンクの電源をオンにして記憶内容のリストアを行う。
【００１０】
しかし、通常ＣＰＵにはアイドル状態においても様々な割り込みが発生しているため、メモリバンクの電源を長時間オフにすることができない。この場合、メモリを省電力状態にすることによる省電力効果を最大限に得ることができなくなってしまうという問題点がある。
【００１１】
本発明は、メモリを省電力状態にすることによる省電力効果を最大限に得ることを可能にする計算機、消費電力低減方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明の計算機は、メモリを備えた計算機であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にするメモリ電源制御部と、
前記メモリに対するメモリアクセスエラーを検出する検出部と、を有し、
前記メモリ電源制御部は、前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが前記検出部にて検出されると、当該メモリを前記通常状態に変更する。
【００１３】
また、上記目的を達成するために本発明の消費電力低減方法は、メモリを備えた計算機における消費電力低減方法であって、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする処理と、
前記メモリに対するメモリアクセスエラーを検出する処理と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する処理と、を有する。
【００１４】
また、上記目的を達成するために本発明のプログラムは、メモリを備えた計算機に、
前記メモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が前記通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする機能と、
前記メモリに対するメモリアクセスエラーを検出する機能と、
前記メモリが前記省電力状態である場合に、当該メモリに対するメモリアクセスエラーが検出されると、当該メモリを前記通常状態に変更する機能と、を実現させる。
【発明の効果】
【００１５】
本発明は以上説明したように構成されているので、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【００１６】
従って、メモリを省電力状態にすることによる省電力効果を最大限に得ることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の計算機の第１の実施形態の構成を示すブロック図である。
【図２】図１に示した計算機においてメモリへの電力供給を停止するときの動作を説明するためのフローチャートである。
【図３】図１に示した計算機において電力供給が停止されたメモリへの電力供給を開始するときの動作を説明するためのフローチャートである。
【図４】本発明の計算機の第２の実施形態の構成を示すブロック図である。
【図５】図４に示した計算機において電力供給が停止されたメモリへの電力供給を開始するときの動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１９】
（第１の実施形態）
図１は、本発明の計算機の第１の実施形態の構成を示すブロック図である。
【００２０】
本実施形態の計算機１００は図１に示すように、ＣＰＵ１０１と、メモリコントローラ１０２と、メモリ電源制御部１０３と、メモリ１０４−１〜３と、計算処理プログラム１１１と、メモリ管理部１１２と、省電力制御部１１３と、検出部であるメモリアクセスエラー検出部１１４とを備えている。なお、ここでは、計算機１００が備えるメモリの数が３である場合について説明する。ただし、本発明はメモリの数が３の場合に限定されない。
【００２１】
ＣＰＵ１０１は、プログラムを実行する中央演算処理装置である。
【００２２】
メモリ１０４−１〜３は、情報を記憶する装置であり、例えば計算機１００の主記憶装置である。なお、メモリ１０４−１〜３が記憶する情報とは例えば、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が使用するデータである。
【００２３】
メモリコントローラ１０２は、ＣＰＵ１０１とＣＰＵバスで接続されている。メモリコントローラ１０２は、ＣＰＵ１０１が行うメモリアクセス要求に応じてメモリ１０４−１〜３に記憶された情報を読み込んだり、メモリ１０４−１〜３へ情報を書き込んだりする。また、メモリコントローラ１０２は、メモリ１０４−１〜３のそれぞれに対応付けられた物理アドレスの管理を行う。また、メモリコントローラ１０２は、メモリ１０４−１〜３の電源が投入された際の初期化や、メモリ１０４−１〜３が正常に動作するためのメモリ１０４−１〜３に対する制御や管理を行う。なお、メモリ１０４−１〜３に対する制御や管理の一例としては、メモリ１０４−１〜３がＤＲＡＭの場合、メモリ１０４−１〜３に対するプリチャージやリフレッシュの実行がある。
【００２４】
メモリ電源制御部１０３は、メモリ１０４−１〜３のそれぞれへの電力供給を制御する。具体的には、メモリ電源制御部１０３は、後述する省電力制御部１１３からの指示に応じ、メモリ１０４−１〜３のそれぞれへの電力供給を行ったり、メモリ１０４−１〜３のそれぞれへの電力供給を停止したりする。これにより、メモリ１０４−１〜３のそれぞれが、そのメモリに対するアクセスが可能な通常状態と、そのメモリにおける消費電力が通常状態よりも低減され、そのメモリへのアクセスが不可能な省電力状態とのいずれかの状態になる。なお、メモリ電源制御部１０３は、ＣＰＵ１０１とＣＰＵバスによって接続されていてもよいし、他のバスもしくは信号線によって接続されていてもよい。
【００２５】
計算処理プログラム１１１は、ＣＰＵ１０１にて実行されるプログラムやオペレーティングシステムである。計算処理プログラム１１１は、記憶領域が必要となった場合、メモリ管理部１１２に記憶領域の割当を要求する。また、計算処理プログラム１１１は、記憶領域が不要となった場合、メモリ管理部１１２に記憶領域の解放を要求する。
【００２６】
メモリ管理部１１２は、メモリ１０４−１〜３のそれぞれの記憶領域の使用状態を管理するプログラムである。このプログラムは、ＣＰＵ１０１にて実行される。メモリ管理部１１２は、例えば物理アドレスを用いて記憶領域の使用状態を管理する。メモリ管理部１１２は、記憶領域の割当の要求を受け付けた場合、未使用の記憶領域の中から指定されたサイズの記憶領域を選択する。そして、メモリ管理部１１２は、選択した記憶領域を割当済み（使用中）の記憶領域として記憶した上で、選択した記憶領域のアドレスを要求元に返す。また、メモリ管理部１１２は、記憶領域の解放の要求を受け付けた場合、指定された記憶領域が割当済みであるという情報を削除する。なお、計算処理プログラム１１１および省電力制御部１１３が使用するアドレスは、物理アドレスでもよいし、仮想アドレスでもよい。仮想アドレスが使用される場合、メモリ管理部１１２は、物理アドレスと仮想アドレスとの対応関係についても管理する。
【００２７】
省電力制御部１１３は、メモリ１０４−１〜３のそれぞれへの電力供給または電力供給の停止をメモリ電源制御部１０３に指示するプログラムである。このプログラムは、ＣＰＵ１０１にて実行される。省電力制御部１１３は、メモリ１０４−１〜３のそれぞれへの電力供給を停止にする際、メモリ１０４−１〜３のうち電力供給を停止するメモリ以外のメモリを、電力供給を停止するメモリに記憶されている情報を記憶させるための退避用メモリとする。そして、省電力制御部１１３は、電力供給を停止するメモリの記憶領域のうち使用中の記憶領域に記憶されている情報を、退避用メモリに記憶させる。このとき、省電力制御部１１３は、電力供給を停止するメモリの記憶領域の使用中の記憶領域と、その記憶領域に記憶されている情報を記憶させた退避用メモリの記憶領域である退避用記憶領域とを対応付ける。具体的には、省電力制御部１１３は、電力供給を停止するメモリの記憶領域の使用中の記憶領域の物理アドレスと、その記憶領域に対応する退避用記憶領域の物理アドレスとを対応付けて退避リストとして記憶する。なお、退避リストには、退避された記憶領域のサイズも含まれる。また、省電力制御部１１３は、電力供給が停止されたメモリへの電力供給を開始する際、電力供給を開始するメモリの記憶領域に対応する退避用記憶領域に記憶された情報を、その記憶領域に記憶させる。なお、省電力制御部１１３は、後述するメモリアクセスエラー検出部１１４からの通知に基づき、電力供給が停止されたメモリへの電力供給を開始する。
【００２８】
メモリアクセスエラー検出部１１４は、メモリ１０４−１〜３のそれぞれに対するアクセスが失敗した場合に発生するメモリアクセスエラーを検出し、その旨を省電力制御部１１３へ通知するプログラムである。このプログラムは、ＣＰＵ１０１にて実行される。なお、メモリアクセスエラー検出部１１４は、例えばメモリアクセスエラーの発生に伴ってＣＰＵ１０１が発生させる例外もしくは割り込みを補足することによってメモリアクセスエラーを検出する。また、メモリアクセスエラー検出部１１４は、メモリアクセスエラーが発生した記憶領域の物理アドレスまたはメモリ１０４−１〜３のそれぞれを識別するため識別子の少なくとも一方を、ＣＰＵ１０１またはメモリコントローラ１０２の状態を取得することによって特定する。メモリアクセスエラー検出部１１４は、特定した情報も合わせて省電力制御部１１３へ通知する。
【００２９】
以下に、上記のように構成された計算機１００の動作について説明する。
【００３０】
まず、図１に示した計算機１００においてメモリ１０４−１〜３のそれぞれへの電力供給を停止するときの動作について説明する。ここでは一例として、メモリ１０４−３への電力供給を停止するときの動作について説明する。
【００３１】
なお、１０４−１〜３のそれぞれへの電力供給を停止する動作は、計算機１００の動作中、任意のタイミングで開始してよい。そのタイミングの一例としては、ＣＰＵ使用率がある閾値を下回ったとき、メモリ使用量がある閾値を下回ったとき、ユーザから指示されたとき等が挙げられる。
【００３２】
図２は、図１に示した計算機１００においてメモリ１０４−３への電力供給を停止するときの動作を説明するためのフローチャートである。
【００３３】
省電力制御部１１３は、メモリ管理部１１２が管理する情報を参照することにより、メモリ１０４−３の記憶領域のうち使用中の記憶領域を特定する。
【００３４】
そして、省電力制御部１１３は、退避リストを参照し、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域があるかどうかを確認する（ステップＳ１）。
【００３５】
ステップＳ１における確認の結果、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域がある場合、省電力制御部１１３は、そのうちの１つの記憶領域を選択する（ステップＳ２）。
【００３６】
次に、省電力制御部１１３は、選択した記憶領域と同じサイズの記憶領域を割り当てるようメモリ管理部１１２に要求する。ここでは、メモリ１０４−１またはメモリ１０４−２が退避用メモリとなる。そのため、省電力制御部１１３は、メモリ１０４−１またはメモリ１０４−２の記憶領域を退避用記憶領域として割り当てるように要求する。
【００３７】
省電力制御部１１３からの要求を受け付けたメモリ管理部１１２は、メモリ１０４−１またはメモリ１０４−２の記憶領域を退避用記憶領域として割り当てる（ステップＳ３）。
【００３８】
次に、省電力制御部１１３は、ステップＳ２にて選択した記憶領域に記憶されている情報を、ステップＳ３にて割り当てられた退避用記憶領域に記憶させる（ステップＳ４）。
【００３９】
そして、省電力制御部１１３は、ステップＳ２にて選択した記憶領域と、ステップＳ３にて割り当てられた退避用記憶領域とを対応付ける（ステップＳ５）。具体的には、省電力制御部１１３は、ステップＳ２にて選択した記憶領域の物理アドレスと、ステップＳ３にて割り当てられた退避用記憶領域の物理アドレスとを退避リストの１つのエントリーとして記憶する。そして、ステップＳ１の動作へ遷移する。
【００４０】
一方、ステップＳ１における確認の結果、特定した記憶領域のうち、対応する退避用記憶領域が存在しない記憶領域がない場合、省電力制御部１１３は、メモリ１０４−３への電力供給を停止するようにメモリ電源制御部１０３へ指示する。
【００４１】
省電力制御部１１３からの指示を受け付けたメモリ電源制御部１０３は、メモリ１０４−３への電力供給を停止する（ステップＳ６）。
【００４２】
次に、図１に示した計算機１００において電力供給が停止されたメモリ１０４−１〜３のいずれかへの電力供給を開始するときの動作について説明する。ここでは一例として、電力供給が停止されたメモリ１０４−３への電力供給を開始するときの動作について説明する。
【００４３】
図３は、図１に示した計算機１００において電力供給が停止されたメモリ１０４−３への電力供給を開始するときの動作を説明するためのフローチャートである。
【００４４】
計算処理プログラム１１１が、電力供給が停止されたメモリ１０４−３の割当済みの記憶領域へアクセスしようとすると、メモリアクセスエラーが発生する（ステップＳ２１）。具体的には、ＣＰＵ１０１が計算処理プログラム１１１の指示によってメモリアクセス要求を出す。そして、メモリコントローラ１０２がそのメモリアクセス要求に従った処理を行おうとする。このとき、アクセス先であるメモリ１０４−３への電力供給が停止されているため、その処理が失敗する。そのため、メモリコントローラ１０２は、メモリアクセスエラーが発生したことをＣＰＵ１０１へ通知する。
【００４５】
メモリアクセスエラー検出部１１４は、ステップＳ２１にて発生したメモリアクセスエラーを検出し（ステップＳ２２）、その旨を省電力制御部１１３へ通知する。
【００４６】
省電力制御部１１３は、メモリアクセスエラー検出部１１４からの通知に基づき、メモリ１０４−１〜３のうちメモリアクセスエラーが発生したメモリを特定する（ステップＳ２３）。ここでは、メモリアクセスエラーが発生したメモリとしてメモリ１０４−３が特定される。なお、メモリアクセスエラーが発生したメモリ１０４−１〜３の識別子がメモリアクセスエラー検出部１１４からの通知に含まれる場合、この動作は省略してもよい。
【００４７】
省電力制御部１１３は、ステップＳ２３にて特定したメモリへの電力供給が停止されているか（省電力状態か）どうかを確認する（ステップＳ２４）。
【００４８】
ステップＳ２４における確認の結果、ステップＳ２３にて特定したメモリへの電力供給が停止されていない場合、省電力制御部１１３は処理を終了する。
【００４９】
一方、ステップＳ２４における確認の結果、ステップＳ２３にて特定したメモリへの電力供給が停止されている場合、省電力制御部１１３は、そのメモリへの電力供給を開始するようにメモリ電源制御部１０３へ指示する。ここでは、ステップＳ２３にて特定されたメモリは、電力供給が停止されたメモリ１０４−３であるため、省電力制御部１１３は、メモリ１０４−３への電力供給を開始するようにメモリ電源制御部１０３へ指示する。
【００５０】
省電力制御部１１３からの指示を受け付けたメモリ電源制御部１０３は、メモリ１０４−３への電力供給を開始する（ステップＳ２５）。
【００５１】
次に、省電力制御部１１３は、退避リストを参照し、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域があるかどうかを確認する（ステップＳ２６）。
【００５２】
ステップＳ２６における確認の結果、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がない場合、省電力制御部１１３は処理を終了する。
【００５３】
一方、ステップＳ２６における確認の結果、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がある場合、省電力制御部１１３は、そのうちの１つの記憶領域を選択する（ステップＳ２７）。
【００５４】
次に、省電力制御部１１３は、ステップＳ２７にて選択した記憶領域に、その記憶領域に対応する退避用記憶領域に記憶された情報を記憶させる（ステップＳ２８）。
【００５５】
次に、省電力制御部１１３は、ステップＳ２７にて選択した記憶領域に対応する退避用記憶領域の解放をメモリ管理部１１２に要求する。
【００５６】
そして、省電力制御部１１３は、ステップＳ２７にて選択した記憶領域と、その記憶領域に対応する退避用記憶領域との間の対応付けを解除する（ステップＳ２９）。具体的には、省電力制御部１１３は、ステップＳ２７にて選択した記憶領域の物理アドレスを含むエントリーを退避リストから削除する。そして、ステップＳ２６の動作へ遷移する。
【００５７】
このように本実施形態において計算機１００は、計算機１００が備えるメモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする。
【００５８】
そして、計算機１００は、計算機１００が備えるメモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーを検出すると、当該メモリを通常状態に変更する。
【００５９】
これにより、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【００６０】
従って、メモリを省電力状態にすることによる省電力効果を最大限に得ることが可能となる。
【００６１】
なお、本実施形態では、メモリを省電力状態にするために、そのメモリへの電力供給を制御する場合について説明したが、本発明はこれに限定されるものではない。他の例として、メモリに備えられている省電力機能を用いてもよい。なお、メモリに備えられた省電力機能を利用する際、省電力状態にしてもメモリの記憶内容が失われない場合には、上述したステップＳ１〜ステップＳ５や、ステップＳ２６〜Ｓ２９の動作を省略することができる。
【００６２】
例えば、メモリがＤＲＡＭである場合、省電力状態としてセルフリフレッシュモードを使用してもよい。この場合、メモリの動作モードを、通常のリフレッシュを行うモードから、セルフリフレッシュモードに変更する機能、および、セルフリフレッシュモードから通常のリフレッシュを行うモードに変更する機能をメモリコントローラ１０２が備えるようにしておく。つまり、メモリコントローラ１０２がメモリ電源制御部１０３として動作するようにしておく。そして、動作モードがセルフリフレッシュモードとなっているメモリに対するアクセスがあった場合、メモリコントローラ１０２が、そのアクセスが失敗したものとみなし、メモリアクセスエラーが発生したことをＣＰＵ１０１へ通知すればよい。
【００６３】
また、本実施形態においては、省電力状態のメモリに対するアクセスがあった場合に、メモリコントローラ１０２がメモリアクセスエラーの発生を通知（失敗応答）する場合について説明したが、本発明はこれに限定されるものではない。他の例として、省電力状態のメモリに対するアクセスがあった場合、メモリコントローラ１０２が何も応答しないようにしてもよい。この場合、ＣＰＵ１０１がメモリアクセス要求の実行に際しタイムアウト時間を設定し、タイムアウト時間内に応答が得られなかった場合には当該アクセスが失敗したものとみなし、プログラムにそれを通知する仕組み（例えば例外もしくは割り込み）を持つようにすればよい。
【００６４】
また、本実施形態においては、ＣＰＵの数が１つである場合について説明したが、本発明はこれに限定されるものではなく、計算機１００は２つ以上のＣＰＵを備えていてもよい。ここで、メモリが複数のＣＰＵで共有される場合、ＣＰＵ間での排他制御が必要となる可能性がある。例えば、図２および図３を用いて説明した、メモリへの電力供給を停止および開始するときの動作をあるＣＰＵが実行している際に、別のＣＰＵが当該メモリへアクセスした場合、不正な値が参照されたり、書き込んだ値が消去されたりするおそれがある。そのような問題を回避するために、メモリへの電力供給を停止および開始する動作をあるＣＰＵが実行している間は、他のＣＰＵは省電力制御部１１３による処理以外の処理の実行を一時停止するようにしてもよい。ＣＰＵによる処理の実行を一時停止する期間としては例えば、図２のステップＳ１からステップＳ６までの間、および、図３のステップＳ２５からＳ２９までの間、とすることができる。
【００６５】
また、計算機１００が２つ以上のＣＰＵを備えている場合、省電力制御部１１３による情報の退避処理（ステップＳ１からステップＳ５）および復元処理（ステップＳ２６からステップＳ２９）を複数のＣＰＵで並行して実行してもよい。これは、退避リストを分割して各ＣＰＵに割り当てて、各ＣＰＵが割り当てられた退避リスト内のエントリーについて退避処理もしくは復元処理を行うことで実現することができる。
【００６６】
（第２の実施形態）
上述した第１の実施形態では、計算処理プログラム１１１によるメモリ１０４−１〜３へのアクセスの際に発生するメモリアクセスエラーの検出を契機としてメモリ１０４−１〜３のそれぞれへの電力供給を開始する場合について説明した。ただし、本発明はこれに限定されるものではない。
【００６７】
他の例として、メモリ１０４−１〜４へのメモリアクセスが、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってＣＰＵ１０１を介さずに行われる場合に発生するメモリアクセスエラーの検出を契機として、メモリ１０４−１〜３のそれぞれへの電力供給を開始するようにしてもよい。
【００６８】
図４は、本発明の計算機の第２の実施形態の構成を示すブロック図である。
【００６９】
本実施形態の計算機２００は図４に示すように、ＣＰＵ１０１と、メモリコントローラ１０２と、メモリ電源制御部１０３と、メモリ１０４−１〜３と、ＤＭＡコントローラ２０５と、計算処理プログラム１１１と、メモリ管理部１１２と、省電力制御部１１３と、メモリアクセスエラー検出部２１４と、ＤＭＡ管理部２１５とを備えている。なお、図４において、図１に示したものと同一の構成のものには同一の符号を付してある。
【００７０】
本実施形態の計算機２００は、第１の実施形態における計算機１００と比較すると、ＤＭＡコントローラ２０５と、ＤＭＡ管理部２１５とを備えている点が異なる。
【００７１】
ＤＭＡコントローラ２０５は、ＣＰＵ１０１およびメモリコントローラ１０２とＣＰＵバスで接続され、メモリ１０４−１〜３とＤＭＡコントローラ２０５に接続された入出力装置（不図示）との間、またはメモリ１０４−１〜３間におけるＤＭＡ転送を制御する。ＤＭＡコントローラ２０５は、ＤＭＡ転送を実行する際にメモリアクセスエラーが発生した場合、その旨をＣＰＵ１０１へ通知する。これは、例えば、ＤＭＡコントローラ２０５がＣＰＵ１０１に対して例外もしくは割り込みを発生させることで実現できる。その際、ＤＭＡコントローラ２０５は、メモリアクセスエラーが発生した記憶領域の物理アドレスもしくはメモリ１０４−１〜３の識別子の少なくとも一方も合わせてＣＰＵ１０１へ通知する。または、ＤＭＡコントローラ２０５が内部レジスタ等を備え、メモリアクセスエラーの発生およびメモリアクセスエラーが発生したメモリを、その内部レジスタ等に記憶させる値によってＣＰＵ１０１に示すようにしてもよい。
【００７２】
ＤＭＡ管理部２１５は、ＤＭＡコントローラ２０５に指示してＤＭＡ転送を管理および制御するプログラムであり、ＣＰＵ１０１にて実行される。ＤＭＡ管理部２１５は、計算処理プログラム１１１の要求に基づき、ＤＭＡ転送を実行する。ＤＭＡ管理部２１５は、実行中のＤＭＡ転送に関する情報（転送元デバイスおよびアドレス、転送先デバイスおよびアドレス）を記憶する。ＤＭＡ管理部２１５は、実行したＤＭＡ転送が完了した際、計算処理プログラム１１１に完了通知を行う。また、ＤＭＡ管理部２１５は、ＤＭＡ転送を実行した際にそのＤＭＡ転送がメモリアクセスエラーによって失敗した場合、実行中のＤＭＡ転送に関する情報を参照して、再度ＤＭＡ転送を実行する。
【００７３】
メモリアクセスエラー検出部２１４は、第１の実施形態におけるメモリアクセスエラー検出部１１４の機能に加え、以下に説明する機能を持つ。メモリアクセスエラー検出部２１４は、ＤＭＡコントローラ２０５からＣＰＵ１０１へのメモリアクセスエラーの発生の通知によってメモリアクセスエラーを検出し、その旨を省電力制御部１１３およびＤＭＡ管理部２１５へ通知する。なお、メモリアクセスエラー検出部２１４は、例えばメモリアクセスエラーに伴ってＤＭＡコントローラ２０５が発生させる例外もしくは割り込みを補足することによってメモリアクセスエラーを検出する。また、メモリアクセスエラー検出部２１４は、メモリアクセスエラーが発生した物理アドレスまたはメモリ１０４−１〜３の識別子の少なくとも一方を、ＣＰＵ１０１またはＤＭＡコントローラ２０５の状態を取得することで特定する。メモリアクセスエラー検出部２１４は、特定した情報も合わせて省電力制御部１１３およびＤＭＡ管理部２１５へ通知する。
【００７４】
以下に、上記のように構成された計算機２００の動作について説明する。
【００７５】
図４に示した計算機２００においてメモリ１０４−１〜３のそれぞれへの電力供給を停止するときの動作は、図２を参照しながら説明した計算機１００における動作と同様である。そのため、ここでは説明を省略する。
【００７６】
従って、ここでは、図４に示した計算機２００において電力供給が停止されているメモリ１０４−１〜３のいずれかへの電力供給を開始するときの動作について説明する。ここでは一例として、電力供給が停止されたメモリ１０４−３への電力供給を開始するときの動作について説明する。
【００７７】
図５は、図４に示した計算機２００において電力供給が停止されたメモリ１０４−３への電力供給を開始するときの動作を説明するためのフローチャートである。
【００７８】
まず、ＤＭＡ管理部２１５は、計算処理プログラム１１１の要求に基づき、ＤＭＡコントローラ２０５にＤＭＡ転送開始を指示し、ＤＭＡ転送が開始される（ステップＳ４１）。
【００７９】
ＤＭＡ管理部２１５は、そのＤＭＡ転送のパラメタ（転送元デバイスおよびアドレス、転送先デバイスおよびアドレス）を実行中のＤＭＡ転送に関する情報として記憶する。
【００８０】
電力供給が停止されたメモリ１０４−３の割当済みの記憶領域へのＤＭＡ転送が試行されると、メモリアクセスエラーが発生する（ステップＳ４２）。具体的には、ＤＭＡコントローラ２０５がメモリアクセス要求を出す。そして、メモリコントローラ１０２がそのメモリアクセス要求に従った処理を行おうとする。このとき、アクセス先であるメモリ１０４−３への電力供給が停止されているため、その要求の処理が失敗する。そのため、メモリコントローラ１０２は、メモリアクセスエラーが発生したことをＤＭＡコントローラ２０５へ通知する。
【００８１】
メモリコントローラ１０２からのメモリアクセスエラーの発生の通知を受け付けたＤＭＡコントローラ２０５は、その旨をＣＰＵ１０１へ通知する。
【００８２】
メモリアクセスエラー検出部２１４は、ＤＭＡコントローラ２０５からＣＰＵ１０１へのメモリアクセスエラーの発生の通知によってメモリアクセスエラーを検出する（ステップＳ４３）。そして、メモリアクセスエラー検出部２１４は、その旨を省電力制御部１１３およびＤＭＡ管理部２１５へ通知する。
【００８３】
ステップＳ４４〜Ｓ４６の動作は、上述した図３のフローチャートにおけるステップＳ２３〜２５の動作と同様であるため、ここでは説明を省略する。
【００８４】
次に、省電力制御部１１３は、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域があるかどうかを確認する（ステップＳ４７）。
【００８５】
ステップＳ４７における確認の結果、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がない場合、省電力制御部１１３は、その旨をＤＭＡ管理部２１５へ通知する。
【００８６】
そして、ＤＭＡ管理部２１５は、実行中のＤＭＡ転送に関する情報を参照し、メモリアクセスエラーが実行中のＤＭＡ転送に関するものである場合、そのＤＭＡ転送を再度実行する（ステップＳ４８）。
【００８７】
一方、ステップＳ４７における確認の結果、メモリ１０４−３の記憶領域のうち、対応する退避用記憶領域が存在する記憶領域がある場合、ステップＳ４９の動作へ遷移する。なお、ステップＳ４９〜Ｓ５１の動作は、上述した図３のフローチャートにおけるステップＳ２７〜２９の動作と同様であるため、ここでは説明を省略する。
【００８８】
このように本実施形態において計算機２００は、計算機２００が備えるメモリを、当該メモリに対するアクセスが可能な通常状態と、当該メモリにおける消費電力が通常状態よりも低減され、当該メモリに対するアクセスが不可能な省電力状態とのいずれかの状態にする。
【００８９】
そして、計算機２００は、計算機２００が備えるメモリが省電力状態である場合に、当該メモリに対するメモリアクセスエラーを検出すると、当該メモリを通常状態に変更する。
【００９０】
これにより、省電力状態のメモリに記憶されている情報を参照する必要がある場合にのみ、そのメモリが省電力状態から通常状態に変更されることになる。
【００９１】
従って、省電力状態にあるメモリに対するメモリアクセスエラーがＤＭＡ転送によって発生する場合においても、上述した第１の実施形態と同様の効果を得ることができる。
【００９２】
なお、本実施形態においては、ＤＭＡコントローラ２０５がＣＰＵ１０１およびメモリコントローラ１０２とＣＰＵバスで直接接続される例を示したが、本発明はこれに限定されるものではない。他の例として、ＤＭＡコントローラ２０５は、ＣＰＵバスとは異なるバスに接続され、バスブリッジを介してＣＰＵ１０１およびメモリコントローラ１０２と接続されてもよい。
【００９３】
また、本実施形態においては、ＤＭＡコントローラ２０５からＣＰＵ１０１へのメモリアクセスエラーの発生の通知によってメモリアクセスエラー検出部２１４がメモリアクセスエラーの発生を検出することとしたが、本発明はこれに限定されない。他の例として、メモリコントローラ１０２からＤＭＡコントローラ２０５へのメモリアクセスエラーの発生の通知によってメモリアクセスエラー検出部２１４がメモリアクセスエラーを検出するようにしてもよい。また、メモリコントローラ１０２がメモリアクセスエラーの発生をＤＭＡコントローラ２０５およびＣＰＵ１０１へ通知し、その通知によってメモリアクセスエラー検出部２１４がメモリアクセスエラーの発生を検出するようにしてもよい。
【００９４】
さらに他の例として、ＤＭＡ転送の転送元または転送先のデバイス（不図示）がＣＰＵ１０１にメモリアクセスエラーの発生を通知し、その通知によってメモリアクセスエラー検出部２１４がメモリアクセスエラーを検出することとしてもよい。これは、ＤＭＡ転送の転送元または転送先のデバイスが、ＤＭＡコントローラ２０５またはメモリコントローラ１０２から転送エラーを通知された際に、メモリアクセスエラーの発生をＣＰＵ１０１へ通知することで実現できる。
【００９５】
以上、本発明の実施形態について説明したが、本発明は、これらの実施形態だけに限定されるものではなく、本発明の技術思想の範囲内において、これらの実施形態を組み合わせて使用したり、一部の構成を変更したりしてもよい。
【００９６】
また、本発明においては、計算機内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを計算機にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを計算機に読み込ませ、実行するものであっても良い。計算機にて読取可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、計算機に内蔵されたＨＤＤなどを指す。
【符号の説明】
【００９７】
１００，２００    計算機
１０１    ＣＰＵ
１０２    メモリコントローラ
１０３    メモリ電源制御部
１０４−１〜３    メモリ
１１１    計算処理プログラム
１１２    メモリ管理部
１１３    省電力制御部
１１４，２１４    アクセスエラー検出部
２０５    ＤＭＡコントローラ
２１５    ＤＭＡ管理部
【図１】
2012168871.tif 000003
【図２】
2012168871.tif 000004
【図３】
2012168871.tif 000005
【図４】
2012168871.tif 000006
【図５】
2012168871.tif 000007