(57)【要約】【課題】計算機システムにおけるメモリの消費電力を、実際の使用状況に応じて効果的に削減する。【解決手段】プロセッサと、前記プロセッサが参照する情報を格納するメモリと、を備える計算機において、前記メモリを管理する方法であって、前記メモリは、各々の電源が独立に制御される複数のメモリバンクを含み、前記各メモリバンクは、複数の物理ページを含み、前記方法は、前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集め、前記利用頻度に基づいて、電源を制御する対象となる前記メモリバンクを選択し、前記選択されたメモリバンクの電源を制御する。【選択図】図２
2008040606.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサが参照する情報を格納するメモリと、を備える計算機において、前記メモリを管理する方法であって、
前記メモリは、各々の電源が独立に制御される複数のメモリバンクを含み、
前記各メモリバンクは、複数の物理ページを含み、
前記方法は、
前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集め、
前記利用頻度に基づいて、電源を制御する対象となる前記メモリバンクを選択し、
前記選択されたメモリバンクの電源を制御することを特徴とする方法。
【請求項２】
前記方法は、前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集めるために、前記利用頻度が低い前記物理ページから順に、前記物理ページを、利用頻度が最も低い前記メモリバンクに移動することを特徴とする請求項１に記載の方法。
【請求項３】
前記複数のメモリバンクの一つである第１メモリバンクは、前記複数の物理ページの一つである第１物理ページを含み、
前記複数のメモリバンクの別の一つである第２メモリバンクは、前記複数の物理ページの別の一つである第２物理ページを含み、
前記方法は、前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集めるために、前記第１メモリバンクの利用頻度が前記第２メモリバンクの利用頻度より低く、かつ、前記第１物理ページの利用頻度が前記第２物理ページの利用頻度より高い場合、前記第１物理ページと前記第２物理ページとを交換することを特徴とする請求項１に記載の方法。
【請求項４】
前記方法は、
前記選択されたメモリバンクの電源を低消費電力モードに設定することによって前記電源を制御し、
前記電源を制御されたメモリバンクに含まれる物理ページを対象とするアクセスに応じて割り込みを発生させ、
前記発生した割り込みに対応するアクセスの対象である前記物理ページを含む前記メモリバンクの電源を通常モードに設定し、
前記通常モードに設定されたメモリバンクに含まれる前記物理ページを対象とするアクセスに応じて、前記割り込みを発生させずに前記アクセスを許可することを特徴とする請求項１に記載の方法。
【請求項５】
前記計算機は、前記メモリバンクを制御するメモリコントローラを備え、
前記方法は、前記メモリコントローラを制御することによって前記メモリバンクの電源の前記低消費電力モードへの設定及び前記通常モードへの設定を実行することを特徴とする請求項４に記載の方法。
【請求項６】
前記方法は、
連続した前記物理ページを対象とするアクセスに応じて、所定の時間内にアクセスの対象となる前記物理ページを予測し、
前記予測された物理ページを含む前記メモリバンクの電源を前記通常モードに設定することを特徴とする請求項４に記載の方法。
【請求項７】
前記計算機は、低消費電力モードに設定される前記メモリバンク数の目標値を保持し、
前記方法は、
前記利用頻度に基づいて、前記メモリバンク数の目標値と同数の前記メモリバンクを、電源を制御する対象として選択し、
前記選択されたメモリバンクの電源を低消費電力モードに設定することによって前記電源を制御することを特徴とする請求項１に記載の方法。
【請求項８】
前記方法は、システムコール又は設定ファイルによって設定された前記メモリバンク数の目標値を保持することを特徴とする請求項７に記載の方法。
【請求項９】
前記計算機は、前記各メモリバンクの消費電力の値、及び、前記メモリ全体の消費電力の目標値を保持し、
前記方法は、前記メモリ全体の消費電力の値が前記保持された消費電力の目標値以下となるように、低消費電力モードに設定される前記メモリバンク数の目標値を算出することを特徴とする請求項７に記載の方法。
【請求項１０】
前記方法は、システムコール又は設定ファイルによって設定された前記各メモリバンクの消費電力の値、及び、システムコール又は設定ファイルによって設定された前記メモリ全体の消費電力の目標値を保持することを特徴とする請求項９に記載の方法。
【請求項１１】
前記計算機は、利用頻度閾値を保持し、
前記方法は、前記利用頻度が前記利用頻度閾値以下である前記物理ページのみを含む前記メモリバンクを、電源を制御する対象として選択し、
前記選択されたメモリバンクの電源を低消費電力モードに設定することによって前記電源を制御することを特徴とする請求項１に記載の方法。
【請求項１２】
前記方法は、システムコール又は設定ファイルによって設定された前記利用頻度閾値を保持することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記方法は、
ページテーブルの参照ビットの値に基づいて、後で参照された前記物理ページほど、参照頻度が高いと判定し、
前記ページテーブルの更新ビットの値に基づいて、後で更新された前記物理ページほど、更新頻度が高いと判定し、
前記参照頻度及び前記更新頻度の少なくとも一方に基づいて、前記物理ページの利用頻度を判定することを特徴とする請求項１に記載の方法。
【請求項１４】
前記方法は、前記物理ページがいずれかのプロセスに使用されているか否か、又は、前記物理ページがファイルキャッシュとして使用されているか否かに基づいて、前記物理ページの利用頻度を判定することを特徴とする請求項１に記載の方法。
【請求項１５】
前記メモリは、前記計算機のリソースを仮想化するためのソフトウエアを格納し、
前記方法は、前記計算機のリソースを仮想化するためのソフトウエアを実行する前記プロセッサが、
オペレーティングシステムに対して、前記物理ページを仮想化して提供し、
前記選択されたメモリバンクの電源を低消費電力モードに設定することによって前記電源を制御し、
前記電源を制御されたメモリバンクに含まれる物理ページを対象とするアクセスに応じて割り込みを発生させ、
前記発生した割り込みに対応するアクセスの対象である前記物理ページを含む前記メモリバンクの電源を通常モードに設定し、
前記通常モードに設定されたメモリバンクに含まれる前記物理ページを対象とするアクセスに応じて、前記割り込みを発生させずに前記アクセスを許可することを特徴とする請求項１に記載の方法。
【請求項１６】
プロセッサと、前記プロセッサが参照する情報を格納するメモリと、を備える計算機において、
前記メモリは、各々の電源が独立に制御される複数のメモリバンクを含み、
前記各メモリバンクは、複数の物理ページを含み、
前記計算機は、
前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集め、
前記利用頻度に基づいて、電源を制御する対象となる前記メモリバンクを選択し、
前記選択されたメモリバンクの電源を制御することを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、計算機に使用されるメモリの管理方法に関し、特に、メモリの消費電力を削減する方法に関する。
【背景技術】
【０００２】
近年の計算機システムの性能向上に伴い、計算機システムの消費電力が増大する傾向にある。特に、将来のペタフロップス級計算機においては、計算機システムの消費電力規模の問題が顕著になる。一般に、計算機システムにおいて、ＣＰＵと、メモリと、その他の部分の消費電力は、ほぼ同等であると言われている。計算機システムの消費電力を削減するために、ＣＰＵの動的な電力制御は積極的に行われているが、メモリの消費電力の削減については、検討されている事例が少ない。
【０００３】
計算機のメインメモリとして使用されるＤＲＡＭは、メモリアクセスが発生しないときに、低消費電力モード（例えば、セルフリフレッシュモード）に設定することができる。低消費電力モードに設定されたＤＲＡＭの消費電力は、通常のスタンバイモードの場合と比較して大幅に低くなる。このため、ＤＲＡＭの電源モードを制御することによって、メモリの消費電力を削減し、最終的には、計算機システムの消費電力を削減することができる。
【０００４】
メモリの消費電力を削減するために、例えば特許文献１は、メモリの使用領域を任意のメモリデバイスに集約させ、使用されていないメモリデバイスを低消費電力モードとする技術を開示している。
【０００５】
特許文献２は、データを有するメモリバンクのみを定期リフレッシュすることによってデータを保持するデバイスを開示している。
【０００６】
特許文献３は、メモリバンク全体が未使用領域であるか否かを判定する手段と、メモリ節電手段と、を備え、全体が未使用領域であるメモリバンクの電源を遮断する技術を開示している。
【０００７】
一方、プロセッサの消費電力を削減するために、例えば特許文献４は、演算回路を操作する命令を予め検出し、その命令に対応する演算回路を予め活性化させる技術を開示している。演算終了後、使用された演算回路は不活性化される。この技術によって、レイテンシを抑えつつ、低消費電力モードの利用による計算機システムの低消費電力化を実現することができる。
【特許文献１】米国特許第６９５４８３７号明細書
【特許文献２】米国特許第６２１５７１４号明細書
【特許文献３】特開平９−２１２４１６号公報
【特許文献４】特開２００５−２３５２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記の従来の技術によれば、メモリを割り当てる時点で、消費電力を小さくするような割り当てが実行される。しかし、割り当てられたメモリの実際の利用状況に応じた制御については開示されていない。このため、上記の従来の技術によれば、メモリの割り当てと、実際の使用状況との間に乖離がある場合に、メモリの消費電力を効果的に削減することができなかった。例えば、あるプログラムに大容量のメモリが割り当てられた後、実際にはその割り当てられたメモリのうち一部のみが使用された場合、割り当てられたが使用されていないメモリの消費電力を削減することができなかった。
【課題を解決するための手段】
【０００９】
本願で開示する代表的な発明は、プロセッサと、前記プロセッサが参照する情報を格納するメモリと、を備える計算機において、前記メモリを管理する方法であって、前記メモリは、各々の電源が独立に制御される複数のメモリバンクを含み、前記各メモリバンクは、複数の物理ページを含み、前記方法は、前記利用頻度が同程度である前記物理ページを同一の前記メモリバンクに集め、前記利用頻度に基づいて、電源を制御する対象となる前記メモリバンクを選択し、前記選択されたメモリバンクの電源を制御することを特徴とする。
【発明の効果】
【００１０】
本発明の一実施形態によれば、計算機システムにおけるメモリの消費電力を、実際の使用状況に応じて効果的に削減することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１２】
図１は、本発明の第１の実施の形態の計算機の構成を説明するブロック図である。
【００１３】
本実施の形態の計算機は、ハードウエア１００、オペレーティングシステム（ＯＳ）１１０及びユーザプログラム１３０を備える。
【００１４】
ハードウエア１００は、ＣＰＵ１０１、メモリコントローラ１０２及びメモリバンク１０３Ａから１０３Ｃを備える。
【００１５】
各メモリバンク１０３Ａから１０３Ｃは、計算機が備えるメモリの管理単位である。各メモリバンク１０３Ａから１０３Ｃの電源は、独立して制御される。各メモリバンク１０３Ａ等には、ＣＰＵ１０１によって参照される情報が格納される。以下の説明において、各メモリバンク１０３Ａから１０３Ｃを区別する必要がない場合、単にメモリバンク１０３と記載する。
【００１６】
各メモリバンク１０３は、例えば、一つ又は複数のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）素子によって構成されてもよい。図１には三つのメモリバンク１０３を示すが、本実施の形態のハードウエア１００は、任意の数のメモリバンク１０３を備えることができる。
【００１７】
各メモリバンク１０３には、各メモリバンク１０３を識別するためのバンク番号が付与される。図１の例では、メモリバンク１０３Ａ、１０３Ｂ及び１０３Ｃに付与されたバンク番号は、それぞれ、「０」、「１」及び「２」である。
【００１８】
各メモリバンク１０３内の物理的な記憶領域は、所定の大きさ（例えば、４キロバイト）の物理ページに分割される。物理ページは、各メモリバンク１０３内の物理的な記憶領域の管理単位である。
【００１９】
メモリコントローラ１０２は、ＣＰＵ１０１からの指示に従って、メモリバンク１０３を制御する。本実施の形態のメモリコントローラ１０２は、少なくとも、各メモリバンク１０３の電源を制御する。
【００２０】
ＣＰＵ１０１は、メモリバンク１０３に格納されたソフトウエアを実行するプロセッサである。
【００２１】
ＯＳ１１０は、メモリバンク１０３に格納され、ＣＰＵ１０１によって実行されるソフトウエアである。本実施の形態のＯＳ１１０は、ページテーブル１１１、更新アクセス利用頻度リスト１１２、参照アクセス利用頻度リスト１１３、メモリバンク・ページ管理テーブル１１４、物理ページ利用頻度リスト作成部１１５、メモリバンク・ページリスト作成部１１６、物理ページ収集部１１７、電源制御バンク判定部１１８及びメモリバンク電源制御部１１９を含む。
【００２２】
ページテーブル１１１は、ＣＰＵ１０１が実行するプロセスに提供される仮想的なアドレス空間と、メモリバンク１０３の物理的なアドレス空間とを対応付けるマッピングテーブルである。仮想的なアドレス空間は、物理ページと同じ大きさの仮想ページ単位で管理される。ページテーブル１１１は、さらに、各物理ページが参照されたか否かを示す参照ビット（図示省略）、及び、各物理ページが更新されたか否かを示す更新ビット（図示省略）を含む。
【００２３】
更新アクセス利用頻度リスト１１２、参照アクセス利用頻度リスト１１３及びメモリバンク・ページ管理テーブル１１４については、後に詳細に説明する。
【００２４】
物理ページ利用頻度リスト作成部１１５、メモリバンク・ページリスト作成部１１６、物理ページ収集部１１７、電源制御バンク判定部１１８及びメモリバンク電源制御部１１９は、ＯＳ１１０を構成するプログラムモジュールである。上記の各部が実行する処理については、後に詳細に説明する。以下の説明において上記の各部が実行する処理は、実際には、ＣＰＵ１０１によって実行される。
【００２５】
ユーザプログラム１３０は、ＯＳ１１０の上で、ＣＰＵ１０１によって実行されるソフトウエアである。ユーザプログラム１３０は、任意のアプリケーションプログラムであってよい。
【００２６】
図２は、本発明の第１の実施の形態において、メモリバンク１０３の電源を制御するために実行される処理の全体を示すフローチャートである。
【００２７】
図２に示す処理は、任意のタイミングで実行されてよい。例えば、図２に示す処理は、定期的に実行される。
【００２８】
最初に、物理ページ利用頻度作成部１１５が、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３を作成する（２０１）。ステップ２０１において実行される処理の詳細については、後に図３を参照して説明する。ステップ２０１で作成されるリストについては、後に図４を参照して説明する。
【００２９】
次に、物理ページ収集部１１７が、同じ程度の利用頻度の物理ページを同一のメモリバンク１０３に集めるために物理ページを移動又は交換する（２０２）。ステップ２０２において実行される処理の詳細については、後に図７を参照して説明する。
【００３０】
次に、電源制御バンク判定部１１８が、利用頻度に応じて、電源制御の対象となるメモリバンク１０３を決定する（２０３）。ステップ２０３において実行される処理の詳細については、後に図１０を参照して説明する。
【００３１】
次に、メモリバンク電源制御部１１９が、ステップ２０３において電源制御の対象であると決定されたメモリバンクの電源制御を実行する（２０４）。ステップ２０２において実行される処理の詳細については、後に図８及び図９を参照して説明する。
【００３２】
図３は、本発明の第１の実施の形態の物理ページ利用頻度リスト作成部１１５が実行する処理を示すフローチャートである。
【００３３】
図３に示す処理は、図２のステップ２０１において実行される。
【００３４】
最初に、物理ページ利用頻度リスト作成部１１５は、物理ページを含むページテーブル（すなわち、物理ページが割り当てられた仮想ページを含むページテーブル）を選択する（３０１）。
【００３５】
次に、物理ページ利用頻度リスト作成部１１５は、選択されたページテーブルの参照ビット及び更新ビットを参照して、物理ページが参照又は更新されたか否かを判定する（３０２）。物理ページが参照又は更新のいずれもされていない場合、ステップ３０２において「Ｎｏ」と判定される。この場合、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３のいずれも更新する必要がないため、処理はステップ３０１に戻る。
【００３６】
一方、物理ページが参照又は更新されている場合、ステップ３０２において「Ｙｅｓ」と判定される。この場合、物理ページ利用頻度リスト作成部１１５は、更新アクセス利用頻度リスト１１２又は参照アクセス利用頻度リスト１１３を更新する（３０３）。
【００３７】
具体的には、物理ページが参照されている場合、物理ページ利用頻度リスト作成部１１５は、参照アクセス利用頻度リスト１１３において、参照された物理ページに対応する物理ページ管理エントリを先頭に移動させる。物理ページ管理エントリについては、後に説明する（図４参照）。物理ページが更新されている場合、物理ページ利用頻度リスト作成部１１５は、更新アクセス利用頻度リスト１１２において、更新された物理ページに対応する物理ページ管理エントリを先頭に移動させる。
【００３８】
次に、物理ページ利用頻度リスト作成部１１５は、ステップ３０１において選択されたページテーブルの参照ビット及び更新ビットをクリアする（３０４）。参照ビット及び更新ビットをクリアされた物理ページは、その後１回以上参照又は更新されない限り、ステップ３０２において「Ｎｏ」と判定される。
【００３９】
その後、処理はステップ３０１に戻る。
【００４０】
図４は、本発明の第１の実施の形態の物理ページの利用頻度リストの説明図である。
【００４１】
具体的には、図４には、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３を示す。
【００４２】
参照アクセス利用頻度リスト１１３は、物理ページの参照に関するＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）リストである。具体的には、参照アクセス利用頻度リスト１１３は、物理ページ管理エントリの配列である。各物理ページ管理エントリは、少なくとも、各物理ページの識別子を含む。
【００４３】
図４の例において、「ｍｏｓｔ」と表示された左端の物理ページ管理エントリが参照アクセス利用頻度リスト１１３の先頭であり、「ｌｅａｓｔ」と表示された右端の物理ページ管理エントリが参照アクセス利用頻度リスト１１３の末尾である。
【００４４】
図３のステップ３０２において、物理ページが参照されていると判定された場合、その物理ページに対応する物理ページ管理エントリ（すなわち、その物理ページの識別子を含む物理ページ管理エントリ）が、ステップ３０３において参照アクセス利用頻度リスト１１３の先頭（左端）に移動する。その結果、最も最近に参照された物理ページに対応する物理ページ管理エントリが参照アクセス利用頻度リスト１１３の先頭となる。一方、最後に参照されてから現在までの時間が最も長い物理ページに対応する物理ページ管理エントリが、参照アクセス利用頻度リスト１１３の末尾となる。
【００４５】
以下、本実施の形態では、ある物理ページに対応する物理ページ管理エントリが、参照アクセス利用頻度リスト１１３の先頭に近いほど（言い換えると、後に参照された物理ページほど）、その物理ページの利用頻度（この場合、参照頻度）が高いと判定される。
【００４６】
なお、後に図６において説明するように、物理ページの利用頻度を示す指標として、物理ページ管理エントリの順位が使用される。参照アクセス利用頻度リスト１１３の先頭の物理ページ管理エントリの順位は「０」である。一方、例えば参照アクセス利用頻度リスト１１３に１００００個の物理ページ管理エントリが登録されている場合、末尾の物理ページ管理エントリの順位は「９９９９」である。
【００４７】
更新アクセス利用頻度リスト１１２は、物理ページの更新に関するＬＲＵリストである。具体的には、更新アクセス利用頻度リスト１１２は、参照アクセス利用頻度リスト１１３と同様、物理ページ管理エントリの配列である。
【００４８】
図３のステップ３０２において、物理ページが更新されていると判定された場合、その物理ページに対応する物理ページ管理エントリが、ステップ３０３において更新アクセス利用頻度リスト１１２の先頭（左端）に移動する。その結果、参照アクセス利用頻度リスト１１３と同様、最も利用頻度（この場合、更新頻度）が高い物理ページに対応する物理ページ管理エントリが、更新アクセス利用頻度リスト１１２の先頭となる。言い換えると、後に更新された物理ページほど、更新頻度が高いと判定される。参照アクセス利用頻度リスト１１３と同様、更新アクセス利用頻度リスト１１２の物理ページ管理エントリにも順位が付与される。
【００４９】
以下、本実施の形態において、物理ページの利用頻度は、物理ページの参照頻度又は更新頻度の少なくとも一方に基づいて判定される。
【００５０】
図４には、更新アクセスによる利用頻度と、参照アクセスによる利用頻度とを区別して管理する例を示した。しかし、更新と参照を区別せずに、アクセスによる利用頻度を管理するためのアクセス利用頻度リスト（図示省略）が作成されてもよい。その場合、物理ページの利用頻度は、上記のアクセスによる利用頻度に基づいて判定されてもよい。
【００５１】
上記図３及び図４には、ページテーブルの更新ビット及び参照ビットに基づいて、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３を作成する例を説明した。しかし、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３は、別の方法によって作成されてもよい。
【００５２】
例えば、いずれのプロセスにも使用されていない物理ページが存在する場合、その物理ページを、優先的に、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３の低い順位に配置してもよい。その結果、いずれのプロセスにも使用されていない物理ページの利用頻度は、いずれかのプロセスに使用されている物理ページの利用頻度より低いと判定される。
【００５３】
あるいは、ファイルキャッシュとして使用されている物理ページが存在する場合、その物理ページを、優先的に、更新アクセス利用頻度リスト１１２及び参照アクセス利用頻度リスト１１３の低い順位に配置してもよい。その結果、ファイルキャッシュとして使用されている物理ページの利用頻度は、ファイルキャッシュとして使用されていない物理ページの利用頻度より低いと判定される。
【００５４】
図５は、本発明の第１の実施の形態のメモリバンク・ページリスト作成部１１６が実行する処理を示すフローチャートである。
【００５５】
図５に示す処理は、図２のステップ２０１（すなわち、図３に示す処理）において、更新アクセス利用頻度リスト１１２又は参照アクセス利用頻度リスト１１３が更新された場合に、図６に示すメモリバンク・ページ管理テーブル１１４を更新するために実行される。
【００５６】
最初に、メモリバンク・ページリスト作成部１１６は、いずれかのメモリバンク１０３を選択する（５０１）。例えば、メモリバンク・ページリスト作成部１１６は、計算機システムが備えるメモリバンク１０３Ａから１０３Ｃを順次選択してもよい。
【００５７】
次に、メモリバンク・ページリスト作成部１１６は、選択されたメモリバンク１０３に含まれるいずれかの物理ページを選択する（５０２）。例えば、メモリバンク・ページリスト作成部１１６は、メモリバンク１０３に含まれる物理ページを先頭から順次選択してもよい。
【００５８】
次に、メモリバンク・ページリスト作成部１１６は、選択された物理ページが使用中である（すなわち、現在使用されている）か否かを判定する（５０３）。メモリバンク・ページリスト作成部１１６は、ページテーブルにおいて、物理ページがＯＳ１１０によって使用されているか否かを示すフラグ（図示省略）を参照することによって、ステップ５０３の判定を実行する。
【００５９】
ステップ５０３において、選択された物理ページが使用中であると判定された場合、メモリバンク・ページリスト作成部１１６は、メモリバンク・ページ管理テーブル１１４において、利用頻度に関する値６０３から６０５、及び、使用中ページリスト６０８を更新する（５０４）。
【００６０】
ステップ５０３において、選択された物理ページが使用中でないと判定された場合、メモリバンク・ページリスト作成部１１６は、メモリバンク・ページ管理テーブル１１４において、未使用ページ数６０６及び未使用ページリスト６０７を更新する（５０５）。
【００６１】
ステップ５０４及び５０５の更新については、後に図６を参照して説明する。
【００６２】
メモリバンク・ページリスト作成部１１６は、ステップ５０４又は５０５を実行した後、ステップ５０２において選択された物理ページが、ステップ５０１において選択されたメモリバンク１０３の最後の物理ページであるか否かを判定する（５０６）。
【００６３】
ステップ５０６において、選択された物理ページがメモリバンク１０３の最後の物理ページであると判定された場合、ステップ５０１において選択されたメモリバンク１０３に含まれる全ての物理ページに関して、メモリバンク・ページ管理テーブル１１４の更新が終了した。この場合、次のメモリバンク１０３に関してメモリバンク・ページ管理テーブル１１４を更新するために、処理はステップ５０１に戻る。ステップ５０１において、ハードウエア１００内の次のメモリバンク１０３が選択され、その後、ステップ５０２以降の処理が実行される。
【００６４】
ステップ５０６において、選択された物理ページがメモリバンク１０３の最後の物理ページでないと判定された場合、残りの物理ページに関してメモリバンク・ページ管理テーブル１１４を更新するために、処理はステップ５０２に戻る。ステップ５０２において、メモリバンク１０３内の次の物理ページが選択され、その後、ステップ５０３以降の処理が実行される。
【００６５】
図６は、本発明の第１の実施の形態のメモリバンク・ページ管理テーブル１１４の説明図である。
【００６６】
本実施の形態のメモリバンク・ページ管理テーブル１１４は、バンク番号６０１、バンク電源６０２、利用頻度平均値６０３、利用頻度最小値６０４、利用頻度最大値６０５、未使用ページ数６０６、未使用ページリスト６０７及び使用中ページリスト６０８からなる。
【００６７】
バンク番号６０１には、各メモリバンク１０３を識別するためのバンク番号が登録される。
【００６８】
バンク電源６０２には、各メモリバンク１０３の電源の状態を示す値が登録される。図６の例では、バンク電源６０２として、「ＯＮ」又は「ＯＦＦ」のいずれかの値が登録される。この場合、「ＯＮ」は、スタンバイモード（すなわち、通常モード）を示し、「ＯＦＦ」は、低消費電力モードを示す。メモリバンク１０３の低消費電力モードとは、例えば、セルフリフレッシュモード又はパワーダウンモード等である。以下、「ＯＦＦ」がセルフリフレッシュモードを示す場合を例として説明する。しかし、本実施の形態において、「ＯＦＦ」は、メモリバンク１０３の消費電力が低下する限り、パワーダウンモード又はその他のいかなる低消費電力モードを示してもよい。
【００６９】
利用頻度平均値６０３、利用頻度最小値６０４及び利用頻度最大値６０５には、各メモリバンク１０３の利用頻度を示す値が登録される。これらの値は、更新アクセス利用頻度リスト１１２又は参照アクセス利用頻度リスト１１３に登録された物理ページ管理エントリの順位に基づいて算出される。
【００７０】
なお、これらの値は、更新アクセス利用頻度リスト１１２のみに基づいて算出されてもよいし、参照アクセス利用頻度リスト１１３のみに基づいて算出されてもよい。あるいは、更新アクセス利用頻度リスト１１２に基づいて算出された値と、参照アクセス利用頻度リスト１１３に基づいて算出された値の両方が登録されてもよい。あるいは、更新と参照の区別なく作成されたアクセス利用頻度リスト（図示省略）に基づいてこれらの値が算出されてもよい。
【００７１】
利用頻度平均値６０３は、各メモリバンク１０３に含まれる物理ページに対応する物理ページ管理エントリの順位の平均値である。利用頻度最小値６０４は、各メモリバンク１０３に含まれる物理ページに対応する物理ページ管理エントリの順位の最小値である。利用頻度最大値６０５は、各メモリバンク１０３に含まれる物理ページに対応する物理ページ管理エントリの順位の最大値である。
【００７２】
なお、図４において説明したように、物理ページの利用頻度が高いほど、その物理ページに対応する物理ページ管理エントリの順位の値は小さくなる。従って、利用頻度平均値６０３、利用頻度最小値６０４及び利用頻度最大値６０５に登録された値が小さいことは、その値に対応する利用頻度が高いことを意味する。
【００７３】
未使用ページ数６０６は、各メモリバンク１０３に含まれる物理ページのうち、図５のステップ５０３において「使用されていない」と判定された物理ページの数である。
【００７４】
未使用ページリスト６０７は、各メモリバンク１０３に含まれる物理ページのうち、図５のステップ５０３において「使用されていない」と判定された物理ページの識別子のリストである。
【００７５】
使用中ページリスト６０８は、各メモリバンク１０３に含まれる物理ページのうち、図５のステップ５０３において「使用されている」と判定された物理ページの識別子のリストである。この使用中ページリスト６０８は、図４と同様、利用頻度の順に配列された物理ページ管理エントリからなるＬＲＵリストである。ただし、図４と異なり、使用中ページリスト６０８は、メモリバンク１０３ごとに作成される。
【００７６】
なお、図５のステップ５０４において、選択された物理ページに対応する物理ページ管理エントリが、その物理ページを含むメモリバンク１０３に対応する使用中ページリスト６０８に追加される。さらに、その物理ページの利用頻度に基づいて、利用頻度平均値６０３、利用頻度最小値６０４及び利用頻度最大値６０５が更新される。
【００７７】
一方、図５のステップ５０５において、選択された物理ページに対応する物理ページの識別子が、その物理ページを含むメモリバンク１０３に対応する未使用ページリスト６０７に追加される。さらに、未使用ページ数６０６の値が１だけ加算される。
【００７８】
図７は、本発明の第１の実施の形態の物理ページ収集部１１７が実行する処理を示すフローチャートである。
【００７９】
図７に示す処理は、図２のステップ２０２において実行される。
【００８０】
最初に、物理ページ収集部１１７は、物理ページの利用頻度リスト（図４参照）を参照して、利用頻度が低いページを選択する（７０１）。図７に示す処理の実行が開始された後、最初にステップ７０１が実行される場合、利用頻度が最も低い物理ページ（すなわち、図４において最も「ｌｅａｓｔ」側の物理ページ）が選択される。
【００８１】
なお、ステップ７０１において、更新アクセス利用頻度リスト１１２のみが参照されてもよいし、参照アクセス利用頻度リスト１１３のみが参照されてもよい。あるいは、更新と参照の区別なく作成されたアクセス利用頻度リストが参照されてもよい。
【００８２】
次に、物理ページ収集部１１７は、メモリバンク・ページ管理テーブル１１４を参照して、ステップ７０１において選択された物理ページのマイグレーション先となるメモリバンク１０３を選択する（７０２）。例えば、物理ページ収集部１１７は、利用頻度が最も低いメモリバンク１０３（すなわち、利用頻度平均値６０３が最も大きいメモリバンク１０３）を選択してもよい。
【００８３】
次に、物理ページ収集部１１７は、マイグレーション先として選択されたメモリバンク１０３に、使用されていない物理ページが存在するか否かを判定する（７０３）。
【００８４】
ステップ７０３において、使用されていない物理ページが存在すると判定された場合、物理ページ収集部１１７は、その使用されていない物理ページに、ステップ７０１において選択された物理ページの内容を移動する（７０６）。その結果、マイグレーション先のメモリバンク１０３内の物理ページに、ステップ７０１において選択された物理ページの内容の複製が格納される。そして、ステップ７０１において選択された物理ページの内容は削除される。
【００８５】
物理ページの内容が移動すると、ページテーブル、物理ページ管理エントリ、物理ページの利用頻度リスト（図４参照）及びメモリバンク・ページ管理テーブル１１４（図６参照）を更新する必要が生じる。このため、ステップ７０６において、物理ページ収集部１１７はさらに、これらのテーブル等を更新する。
【００８６】
上記のステップ７０６の処理によって、物理ページが、その物理ページの利用頻度が低い順に、利用頻度が最も低いメモリバンク１０３に移動する。
【００８７】
一方、ステップ７０３において、使用されていない物理ページが存在しないと判定された場合、物理ページ収集部１１７は、ステップ７０１において選択された物理ページの内容と、マイグレーション先のメモリバンク１０３内のいずれかの物理ページの内容とを交換する。そのために、物理ページ収集部１１７は、マイグレーション先のメモリバンク１０３の物理ページから交換対象の物理ページを選択する（７０４）。具体的には、物理ページ収集部１１７は、マイグレーション先のメモリバンク１０３の中で、利用頻度が最も高い物理ページ（すなわち、図４において最も「ｍｏｓｔ」側の物理ページ）を選択する。
【００８８】
なお、ステップ７０４において選択された物理ページの利用頻度が、ステップ７０１において選択された物理ページの利用頻度より低い場合、物理ページ収集部１１７の処理は、ステップ７０５に進まずに、ステップ７０２に戻ってもよい。この場合、物理ページ収集部１１７は、前回ステップ７０２において選択されたメモリバンク１０３の次に利用頻度が低いメモリバンク１０３をマイグレーション先として選択し、ステップ７０３以降の処理を再び実行してもよい。また、このときマイグレーション先として選択されたメモリバンク１０３の利用頻度が、ステップ７０１において選択された物理ページを含むメモリバンク１０３の利用頻度と同じ又はそれより高い場合、処理はステップ７０１に戻り、次に利用頻度が低い物理ページが選択されてもよい。
【００８９】
次に、物理ページ収集部１１７は、ステップ７０４において選択された交換対象の物理ページの内容と、ステップ７０１において選択された物理ページの内容とを交換する（７０５）。その結果、ステップ７０１において選択された物理ページに格納されていた内容が、交換対象の物理ページに新たに格納され、交換対象の物理ページに格納されていた内容が、ステップ７０１において選択された物理ページに新たに格納される。
【００９０】
さらに、ステップ７０５において物理ページ収集部１１７は、ステップ７０６と同様、ページテーブル、物理ページ管理エントリ、物理ページの利用頻度リスト及びメモリバンク・ページ管理テーブル１１４を更新する。
【００９１】
ステップ７０４及び７０５の処理によって、マイグレーション先として選択されたメモリバンク１０３の利用頻度が、ステップ７０１において選択された物理ページを含むメモリバンク１０３の利用頻度より低く、かつ、マイグレーション先として選択されたメモリバンク１０３に含まれる物理ページの利用頻度が、ステップ７０１において選択された物理ページの利用頻度より高い場合、それらの二つの物理ページの内容が交換される。
【００９２】
その後、物理ページ収集部１１７の処理はステップ７０１に戻る。物理ページ収集部１１７は、前回ステップ７０１において選択された物理ページの次に利用頻度が低い物理ページを選択して（７０１）、ステップ７０２以降の処理を実行する。
【００９３】
上記図７の処理の結果、図６に示すように、利用頻度が同程度である物理ページが同一のメモリバンク１０３に集められる。図６の例では、バンク番号６０１が「０」であるメモリバンク１０３は、利用頻度が「０」から「１４９」までの物理ページ（言い換えると、利用頻度が比較的高い物理ページ）を含む。バンク番号６０１が「１」であるメモリバンク１０３は、利用頻度が「１５０」から「２９９」までの物理ページ（言い換えると、利用頻度が中程度の物理ページ）を含む。バンク番号６０１が「２」であるメモリバンク１０３は、利用頻度が「３００」から「６００」までの物理ページ（言い換えると、利用頻度が比較的低い物理ページ）を含む。
【００９４】
図８は、本発明の第１の実施の形態のメモリバンク電源制御部１１９が、メモリバンク１０３の電源を低消費電力モードに設定するために実行する処理を示すフローチャートである。
【００９５】
具体的には、図８の処理は、低消費電力候補リスト（図示省略）に登録されたメモリバンク１０３の電源を低消費電力モードに設定するために、図２のステップ２０４において実行される。低消費電力候補リストは、後で説明するように、図２のステップ２０３において、図１０等に示す処理によって作成される。
【００９６】
最初に、メモリバンク電源制御部１１９は、低消費電力候補リストに登録されたメモリバンク１０３内の一つの物理ページを選択する（８０１）。図８に示す処理の実行が開始された後、最初にステップ８０１が実行される場合、例えば、メモリバンク１０３内の先頭の物理ページが選択される。
【００９７】
次に、メモリバンク電源制御部１１９は、ステップ８０１において選択された物理ページが現在使用されているか否かを判定する（８０２）。この判定は、図５のステップ５０３と同様の方法によって実行されてもよい。
【００９８】
ステップ８０２において、物理ページが現在使用されていないと判定された場合、その物理ページに対応するページテーブルエントリ（図示省略）を無効にする必要がない。このため、メモリバンク電源制御部１１９は、ステップ８０３を実行せずに、ステップ８０４に進む。
【００９９】
一方、ステップ８０２において、物理ページが現在使用されていると判定された場合、メモリバンク電源制御部１１９は、ステップ８０１において選択された物理ページに対応するページテーブルエントリを無効にする（８０３）。その結果、以後、その物理ページに対するアクセスがあった場合、ページフォールトが発生する。
【０１００】
次に、メモリバンク電源制御部１１９は、ステップ８０１において選択された物理ページが、メモリバンク１０３内の最後の物理ページであるか否かを判定する（８０４）。
【０１０１】
ステップ８０４において、選択された物理ページが最後の物理ページでないと判定された場合、残りの物理ページについて、必要な設定を実行するために、処理はステップ８０１に戻る。この場合、メモリバンク電源制御部１１９は、前回ステップ８０１において選択された物理ページの次の物理ページを選択して（８０１）、ステップ８０２以降の処理を実行する。
【０１０２】
一方、ステップ８０４において、選択された物理ページが最後の物理ページであると判定された場合、メモリバンク１０３内の全ての物理ページに対応するページテーブルエントリについて、必要な設定が終了した。この場合、メモリバンク電源制御部１１９は、メモリバンク１０３の電源の設定を低消費電力モードに切り替える（８０５）。
【０１０３】
なお、実際には、メモリバンク１０３の電源は、メモリコントローラ１０２によって制御される。このため、ステップ８０５において、メモリバンク電源制御部１１９は、メモリバンク１０３の電源の設定を低消費電力モードに切り替える指示をメモリコントローラ１０２に送信する。この指示を受信したメモリコントローラ１０２が、指示に従って電源を制御する。
【０１０４】
次に、メモリバンク電源制御部１１９は、メモリバンク・ページ管理テーブル１１４において、低消費電力モードとなったメモリバンク１０３に対応するバンク電源６０２の値を、「ＯＦＦ」に更新する（８０６）。
【０１０５】
以上で、メモリバンク１０３の電源が、低消費電力モードに設定される。低消費電力候補リストに複数のメモリバンク１０３が登録されている場合、登録されている各メモリバンク１０３を対象として、図８に示す処理が実行される。
【０１０６】
図９は、本発明の第１の実施の形態のメモリバンク電源制御部１１９が、メモリバンク１０３の電源を通常モードに設定するために実行する処理を示すフローチャートである。
【０１０７】
具体的には、図９の処理は、ページフォールトが発生したときに、ページフォールトが発生した物理ページを含むメモリバンク１０３の電源を通常モードに設定するために実行される。
【０１０８】
いずれかの物理ページにおいてページフォールトが発生すると、メモリバンク電源制御部１１９は、図９に示す処理の実行を開始する（９０１）。
【０１０９】
最初に、メモリバンク電源制御部１１９は、ページフォールトが発生した物理ページが電源制御の対象であるメモリバンク１０３に含まれているか否か（すなわち、ページフォールトが発生した物理ページを含むメモリバンク１０３の電源が低消費電力モードに設定されているか否か）を判定する（９０２）。メモリバンク１０３が低消費電力モードでなくとも、ページフォールトが発生する場合があるためである。
【０１１０】
ステップ９０２において、ページフォールトが発生した物理ページを含むメモリバンク１０３の電源が低消費電力モードに設定されていないと判定された場合、メモリバンク電源制御部１１９は、図９に示す処理を終了する。その後、ページフォールトに対する通常の（すなわち、従来と同様の）処理が実行される（９０９）。
【０１１１】
一方、ステップ９０２において、ページフォールトが発生した物理ページを含むメモリバンク１０３の電源が低消費電力モードに設定されていると判定された場合、低消費電力モードの設定が、ページフォールトの原因である。この場合、メモリバンク電源制御部１１９は、ページフォールトが発生した物理ページを含むメモリバンク１０３の一つの物理ページ（例えば、先頭の物理ページ）を選択する（９０３）。
【０１１２】
次に、メモリバンク電源制御部１１９は、ステップ９０３において選択された物理ページが現在使用されているか否かを判定する（９０４）。この判定は、図５のステップ５０３と同様の方法によって実行されてもよい。
【０１１３】
ステップ９０４において、物理ページが現在使用されていないと判定された場合、その物理ページに対応するページテーブルエントリを有効にする必要がない。このため、メモリバンク電源制御部１１９は、ステップ９０５を実行せずに、ステップ９０６に進む。
【０１１４】
一方、ステップ９０４において、物理ページが現在使用されていると判定された場合、メモリバンク電源制御部１１９は、ステップ９０３において選択された物理ページに対応するページテーブルエントリを有効にする（９０５）。その結果、以後、その物理ページに対するアクセスがあった場合、そのアクセスは許可され、低消費電力モードに起因するページフォールトは発生しない。
【０１１５】
次に、メモリバンク電源制御部１１９は、ステップ９０３において選択された物理ページが、メモリバンク１０３内の最後の物理ページであるか否かを判定する（９０６）。
【０１１６】
ステップ９０６において、選択された物理ページが最後の物理ページでないと判定された場合、残りの物理ページについて、必要な設定を実行するために、処理はステップ９０３に戻る。この場合、メモリバンク電源制御部１１９は、前回ステップ９０３において選択された物理ページの次の物理ページを選択して（９０３）、ステップ９０４以降の処理を実行する。
【０１１７】
一方、ステップ９０６において、選択された物理ページが最後の物理ページであると判定された場合、メモリバンク１０３内の全ての物理ページに対応するページテーブルエントリについて、必要な設定が終了した。この場合、メモリバンク電源制御部１１９は、メモリバンク１０３の電源の設定を通常モードに切り替える（９０７）。
【０１１８】
なお、実際には、メモリバンク電源制御部１１９は、メモリバンク１０３の電源の設定を通常モードに切り替える指示をメモリコントローラ１０２に送信する。この指示を受信したメモリコントローラ１０２が、指示に従って電源を制御する。
【０１１９】
次に、メモリバンク電源制御部１１９は、メモリバンク・ページ管理テーブル１１４において、通常モードとなったメモリバンク１０３に対応するバンク電源６０２の値を、「ＯＮ」に更新する（９０８）。
【０１２０】
以上で、メモリバンク１０３の電源が、通常モードに設定される。このように、低消費電力モードに設定されているメモリバンク１０３に含まれる物理ページの一つでもアクセスの対象となった場合、その物理ページを含むメモリバンク１０３の電源が通常モードに切り替えられる。
【０１２１】
図１０は、本発明の第１の実施の形態の電源制御バンク判定部１１８が、電源制御の対象となるメモリバンク１０３のリストを作成するために実行する処理を示すフローチャートである。
【０１２２】
具体的には、図１０に示す処理は、低消費電力候補リスト及び通常電力候補リスト（図示省略）を作成するために、図２のステップ２０３において実行される。低消費電力候補リストには、低消費電力モードに設定されるべきメモリバンク１０３が登録される。通常電力候補リストには、通常モードに設定されるべきメモリバンク１０３が登録される。なお、図１０に示す処理の実行が開始した時点で、低消費電力候補リスト及び通常電力候補リストには、いずれのメモリバンク１０３も登録されていない。
【０１２３】
最初に、電源制御バンク判定部１１８は、低消費電力モードに設定されるべきメモリバンク１０３の数を取得する（１００１）。ステップ１００１において取得されるメモリバンク数は、例えば、後述する図１１に示す方法によって決定されてもよい。
【０１２４】
次に、電源制御バンク判定部１１８は、メモリバンク・ページ管理テーブル１１４を参照して、現在低消費電力モードに設定されているメモリバンク１０３の数を取得する（１００２）。
【０１２５】
次に、電源制御バンク判定部１１８は、新たに低消費電力モードに設定するメモリバンク１０３があるか否か（言い換えると、新たに低消費電力候補リストに登録されるべきメモリバンク１０３があるか否か）を判定する（１００３）。ステップ１００３の判定を実行するため、電源制御バンク判定部１１８は、ステップ１００１において取得したメモリバンク１０３の数と、ステップ１００２において取得したメモリバンク１０３の数と、既に低消費電力候補リストに登録されているメモリバンク１０３の数と、を比較する。
【０１２６】
ステップ１００１において取得したメモリバンク１０３の数が、ステップ１００２において取得したメモリバンク１０３の数と、既に低消費電力候補リストに登録されているメモリバンク１０３の数との和より大きい場合、ステップ１００３において、新たに低消費電力候補リストに登録されるべきメモリバンク１０３があると判定される。この場合、電源制御バンク判定部１１８は、メモリバンク・ページ管理テーブル１１４を参照して、現在通常モードであり、かつ、まだ低消費電力候補リストに登録されていないメモリバンク１０３のうち、利用頻度が最も低いメモリバンク１０３を選択する（１００４）。利用頻度が最も低いメモリバンク１０３とは、例えば、利用頻度平均値６０３が最も大きいメモリバンク１０３である。
【０１２７】
次に、電源制御バンク判定部１１８は、ステップ１００４において選択されたメモリバンク１０３を、低消費電力候補リストに追加登録する（１００５）。
【０１２８】
その後、処理はステップ１００３に戻る。
【０１２９】
一方、ステップ１００１において取得したメモリバンク１０３の数が、ステップ１００２において取得したメモリバンク１０３の数と、既に低消費電力候補リストに登録されているメモリバンク１０３の数との和以下である場合、ステップ１００３において、新たに低消費電力候補リストに登録されるべきメモリバンク１０３がないと判定される。
【０１３０】
この場合、電源制御バンク判定部１１８は、新たに通常モードに設定するメモリバンク１０３があるか否か（言い換えると、新たに通常電力候補リストに登録されるべきメモリバンク１０３があるか否か）を判定する（１００６）。ステップ１００６の判定を実行するため、電源制御バンク判定部１１８は、ステップ１００１において取得したメモリバンク１０３の数と、ステップ１００２において取得したメモリバンク１０３の数と、既に通常電力候補リストに登録されているメモリバンク１０３の数と、を比較する。
【０１３１】
ステップ１００１において取得したメモリバンク１０３の数が、ステップ１００２において取得したメモリバンク１０３の数から、既に通常電力候補リストに登録されているメモリバンク１０３の数を減算した値より小さい場合、ステップ１００３において、新たに通常電力候補リストに登録されるべきメモリバンク１０３があると判定される。この場合、電源制御バンク判定部１１８は、メモリバンク・ページ管理テーブル１１４を参照して、現在低消費電力モードであり、かつ、まだ通常電力候補リストに登録されていないメモリバンク１０３のうち、利用頻度が最も高いメモリバンク１０３を選択する（１００７）。利用頻度が最も高いメモリバンク１０３とは、例えば、利用頻度平均値６０３が最も小さいメモリバンク１０３である。
【０１３２】
次に、電源制御バンク判定部１１８は、ステップ１００７において選択されたメモリバンク１０３を、通常電力候補リストに追加登録する（１００８）。
【０１３３】
その後、処理はステップ１００３に戻る。
【０１３４】
一方、ステップ１００１において取得したメモリバンク１０３の数が、ステップ１００２において取得したメモリバンク１０３の数から、既に通常電力候補リストに登録されているメモリバンク１０３の数を減算した値以上である場合、ステップ１００３において、新たに通常電力候補リストに登録されるべきメモリバンク１０３がないと判定される。この場合、電源制御バンク判定部１１８は、リストの作成処理を終了する（１００９）。
【０１３５】
図１０の処理が終了した結果、低消費電力候補リストに一つ以上のメモリバンク１０３が登録されている場合、それらの各メモリバンク１０３を対象として、図８に示す処理が実行される。一方、通常電力候補リストに一つ以上のメモリバンク１０３が登録されている場合、それらの各メモリバンク１０３を対象として、図９のステップ９０３から９０８までに示す処理が実行される。
【０１３６】
図１１は、本発明の第１の実施の形態の電源制御バンク判定部１１８が、低消費電力モードに設定されるべきメモリバンク１０３の数を決定するために実行する処理を示すフローチャートである。
【０１３７】
図１１に示す処理は、図１０のステップ１００１において取得されるメモリバンク１０３の数を決定するために実行される。
【０１３８】
最初に、電源制御バンク判定部１１８は、目標電力消費量値及びバンク当たりの電力消費量値を取得する（１１０１）。
【０１３９】
次に、電源制御バンク判定部１１８は、ステップ１１０１において取得した値に基づいて、低消費電力モードに設定されるべきメモリバンク１０３の数を決定する（１１０２）。
【０１４０】
次に、ステップ１１０１において取得される値、及び、それらの値を用いて実行されるステップ１１０２の詳細について、図１２及び図１３を参照して説明する。
【０１４１】
図１２は、本発明の第１の実施の形態の電源制御バンク判定部１１８が参照する目標電力消費量値の説明図である。
【０１４２】
図１２に示す目標電力消費量値は、例えば、全メモリバンク１０３の消費電力の総和の目標値である。例えば、図１に示す計算機のユーザが、システムコール又は設定ファイルによって目標電力消費量値を設定してもよい。設定された目標電力消費量値は、例えば、いずれかのメモリバンク１０３に格納されることによって、計算機に保持される。図１２は、目標電力消費量値として「１０Ｗ」が設定されている例を示す。この値は、図１１のステップ１１０１において、電源制御バンク判定部１１８によって参照される。
【０１４３】
図１３は、本発明の第１の実施の形態のバンク当たりの電力消費量テーブル１３００の説明図である。
【０１４４】
バンク当たりの電力消費量テーブル１３００は、通常モードにおける１メモリバンク１０３当たりの電力消費量１３０１（以下、通常モード１３０１と記載する）、及び、低消費電力モードにおける１メモリバンク１０３当たりの電力消費量１３０２（以下、低消費電力モード１３０２と記載する）を含む。例えば、図１に示す計算機のユーザが、システムコール又は設定ファイルによってこれらの値を設定してもよい。バンク当たりの電力消費量テーブル１３００は、例えば、いずれかのメモリバンク１０３に格納されることによって、計算機に保持される。
【０１４５】
図１３は、通常モード１３０１として「１３００ｍＷ」が、低消費電力モード１３０２として「１００ｍＷ」が設定されている例を示す。これらの値は、図１１のステップ１１０１において、電源制御バンク判定部１１８によって参照される。
【０１４６】
ここで、図１２及び図１３の例を用いて、図１１のステップ１１０２におけるメモリバンク１０３の数の決定方法を説明する。
【０１４７】
説明のため、図１に示すハードウエア１００が、１０個のメモリバンク１０３を備えると仮定する。この場合、１０個のメモリバンク１０３全てが通常モードであった場合、全メモリバンク１０３電力消費量の合計値は、通常モード１３０１に設定された「１３００ｍＷ」の１０倍である「１３Ｗ」となる。この値は、目標電力消費量値として設定された「１０Ｗ」を上回る。
【０１４８】
しかし、７個のメモリバンク１０３を通常モードとし、残りの３個のメモリバンク１０３を低消費電力モードとすれば、全メモリバンク１０３の電力消費量の合計値は、「９４００ｍＷ」となり、目標電力消費量値として設定された「１０Ｗ」を下回る。すなわち、全メモリバンク１０３の電力消費量の合計値を目標電力消費量値より小さくするために必要な低消費電力モードのメモリバンク１０３の数の最低値は、「３」である。この場合、ステップ１１０２において、低消費電力モードに設定されるべきメモリバンク１０３の数は、「３」に決定される。
【０１４９】
このように、ステップ１１０２では、全メモリバンク１０３の電力消費量の合計値が目標電力消費量値を下回るために必要な低消費電力モードのメモリバンク１０３の数が算出される。図１１に示す処理によって決定されたメモリバンク１０３の数が、図１０のステップ１００１において取得される。
【０１５０】
図１０のステップ１００１において取得されるメモリバンク１０３の数は、図１１に示す処理によって決定されてもよいが、図１４に示すように、ユーザ等によって予め定められていてもよい。
【０１５１】
図１４は、本発明の第１の実施の形態の電源制御バンク判定部１１８が参照する低消費電力モードバンク数目標値の説明図である。
【０１５２】
図１４に示す低消費電力モードバンク数目標値は、全メモリバンク１０３のうち、低消費電力モードに設定されるべきメモリバンク１０３の数の目標値である。例えば、図１に示す計算機のユーザが、システムコール又は設定ファイルによって低消費電力モードバンク数目標値を設定してもよい。設定された低消費電力モードバンク数目標値は、例えば、いずれかのメモリバンク１０３に格納されることによって、計算機に保持される。
【０１５３】
図１４は、低消費電力モードバンク数目標値として「５」が設定されている例を示す。電源制御バンク判定部１１８は、低消費電力モードバンク数目標値として設定された値を、図１０のステップ１００１において取得する。
【０１５４】
上記図１０に示す方法には、全メモリバンク１０３の消費電力の合計値を常に所定の値以下に抑えることができるという利点がある。その一方で、常に所定の数のメモリバンク１０３が通常モードに設定されるため、メモリバンク１０３に対するアクセスがほとんど発生しない状況においては、実際にはほとんど利用されていないメモリバンク１０３までもが通常モードに設定され、電力を消費してしまうという問題もある。この問題を解決するため、図１０に示す処理に代えて、以下の図１５に示す処理が実行されてもよい。
【０１５５】
図１５は、本発明の第１の実施の形態の電源制御バンク判定部１１８が、電源制御の対象となるメモリバンク１０３のリストを、物理ページの利用頻度に基づいて作成するために実行する処理を示すフローチャートである。
【０１５６】
具体的には、図１５に示す処理は、低消費電力候補リストを作成するために、図２のステップ２０３において、図１０に示す処理の代わりに実行される。図１５に示す処理の実行が開始した時点で、低消費電力候補リストには、いずれのメモリバンク１０３も登録されていない。
【０１５７】
最初に、電源制御バンク判定部１１８は、利用頻度閾値を取得する（１５０１）。ここで取得される利用頻度閾値については、後で図１６を参照して説明する。図１６の例では、利用頻度閾値として「２００」が取得される。
【０１５８】
次に、電源制御バンク判定部１１８は、実際の利用頻度が、ステップ１５０１で取得した利用頻度閾値以下であるメモリバンク１０３を選択する（１５０２）。具体的には、電源制御バンク判定部１１８は、メモリバンク・ページ管理テーブル１１４を参照し、利用頻度最小値６０４が、ステップ１５０１において取得した利用頻度閾値以上であるメモリバンク１０３を選択する（１５０２）。ここで選択されたメモリバンク１０３は、低消費電力モードに設定されるべきメモリバンク１０３である。図６の例では、バンク番号６０１が「２」であるメモリバンク１０３の利用頻度最小値６０４が「３００」である。したがって、この場合、バンク番号６０１が「２」であるメモリバンク１０３が選択される。
【０１５９】
次に、電源制御バンク判定部１１８は、低消費電力モードに設定されるべきメモリバンク１０３があるか否かを判定する（１５０３）。具体的には、ステップ１５０２においていずれのメモリバンク１０３も選択されなかった場合、ステップ１５０３において「Ｎｏ」と判定される。また、ステップ１５０２において一つ以上のメモリバンク１０３が選択された場合であっても、それらのメモリバンク１０３が既に低消費電力候補リストに登録されている場合、ステップ１５０３において「Ｎｏ」と判定される。
【０１６０】
ステップ１５０３において「Ｙｅｓ」と判定された場合、まだ低消費電力候補リストに登録されていないメモリバンク１０３が、ステップ１５０２において選択されている。この場合、電源制御バンク判定部１１８は、ステップ１５０２において選択されたメモリバンク１０３を低消費電力候補リストに追加登録する（１５０４）。
【０１６１】
ステップ１５０３において「Ｎｏ」と判定された場合、低消費電力モードに設定されるべきメモリバンク１０３は、全て低消費電力候補リストに登録された。この場合、電源制御バンク判定部１１８は、図１５に示すリストの作成処理を終了する（１５０５）。
【０１６２】
図１６は、本発明の第１の実施の形態の電源制御バンク判定部１１８が参照する利用頻度閾値の説明図である。
【０１６３】
図１５において説明したように、メモリバンク１０３の利用頻度最小値６０４が、図１６に示す利用頻度閾値以上である場合、そのメモリバンク１０３が、低消費電力モードに設定されるべきメモリバンク１０３として選択される。
【０１６４】
例えば、図１に示す計算機のユーザが、システムコール又は設定ファイルによって、図１６に示す利用頻度閾値を設定してもよい。設定された利用頻度閾値は、例えば、いずれかのメモリバンク１０３に格納されることによって、計算機に保持される。図１６は、利用頻度閾値として「２００」が設定されている例を示す。
【０１６５】
図１７は、本発明の第１の実施の形態の電力モード遷移時間テーブル１７００の説明図である。
【０１６６】
電力モード遷移時間テーブル１７００は、通常モードから低消費電力モードへの遷移時間１７０１及び低消費電力モードから通常モードへの遷移時間１７０２を含む。電力モード遷移時間テーブル１７００は、例えば、いずれかのメモリバンク１０３に格納されることによって、計算機に保持される。
【０１６７】
図１７の例では、通常モードから低消費電力モードへの遷移時間１７０１として「５ｎｓ（ナノ秒）」、低消費電力モードから通常モードへの遷移時間１７０２として「１μｓ（マイクロ秒）」が登録されている。これらの値は、実際のアクセスに先行してメモリバンク１０３の電源を通常モードに設定する処理において参照される（図１８参照）。
【０１６８】
図１８は、本発明の第１の実施の形態のメモリバンク電源制御部１１９が、実際のアクセスに先行して、メモリバンク１０３の電源を通常モードに設定するために実行する処理を示すフローチャートである。
【０１６９】
最初に、図１８に示す処理の目的を説明する。
【０１７０】
図１７に示すように、メモリバンク１０３の電源を低消費電力モードから通常モードに切り替えるためには、１μｓ程度の時間を要する。ユーザプログラム１３０によるメモリバンク１０３へのアクセス要求があった後で電源のモードを切り替えると、切り替えが終了するまでの間、ユーザプログラム１３０の処理が中断する。この中断による性能の低下を防ぐため、これからアクセスされる物理ページを予測し、その予測の結果に従って、メモリバンク１０３の電源を予め通常モードに設定しておくことが望ましい。
【０１７１】
連続した物理ページに対する連続したアクセスがあった場合、その連続アクセスが継続すると仮定することによって、ある程度の精度で、これからアクセスされる物理ページを予測することができると期待される。そのような場合の予測、及び、予測の結果に基づくメモリバンク１０３の制御の処理を、図１８に示す。
【０１７２】
いずれかの物理ページにおいてページフォールトが発生すると、メモリバンク電源制御部１１９は、図１８に示す処理の実行を開始する（１８０１）。
【０１７３】
次に、メモリバンク電源制御部１１９は、所定の閾値を超える数の連続した物理ページにおいてページフォールトが発生したか否かを判定する（１８０２）。この閾値は、メモリバンク電源制御部１１９に予め設定されていてもよいし、ユーザによって設定されてもよい。
【０１７４】
ステップ１８０２において、所定の閾値を超える数の連続した物理ページにおいてページフォールトが発生していないと判定された場合、これからアクセスされる物理ページを予測することができない。この場合、メモリバンク電源制御部１１９は、通常のページフォールトに対する処理を実行する（１８０６）。この場合、メモリバンク電源制御部１１９は、図９のステップ９０２以降の処理を実行してもよい。
【０１７５】
一方、ステップ１８０２において、所定の閾値を超える数の連続した物理ページにおいてページフォールトが発生したと判定された場合、メモリバンク電源制御部１１９は、電力モード遷移時間テーブル１７００を参照して、低消費電力モードから通常モードへの遷移時間１７０２を取得する（１８０３）。図１７の例では、ステップ１８０３において「１μｓ」が取得される。
【０１７６】
次に、メモリバンク電源制御部１１９は、ステップ１８０３において取得した時間内にアクセスされると予測されるメモリバンク１０３があるか否かを判定する（１８０４）。具体的には、メモリバンク電源制御部１１９は、連続アクセスが継続する結果、既にページフォールトが発生している連続した物理ページのさらに先に連続する物理ページが、これから順次アクセスされると仮定する。そして、このような仮定の下で、ステップ１８０３において取得した時間内にアクセスの対象となる物理ページを含むメモリバンク１０３があるか否かを判定する。
【０１７７】
ステップ１８０４において、ステップ１８０３において取得した時間内にアクセスされると予測されるメモリバンク１０３があると判定された場合、メモリバンク電源制御部１１９は、そのメモリバンク１０３の電源を通常モードに設定する処理を実行する（１８０５）。この場合、メモリバンク電源制御部１１９は、ステップ１８０４において判定されたメモリバンク１０３を対象として、図９のステップ９０３から９０８までの処理を実行してもよい。
【０１７８】
一方、ステップ１８０４において、ステップ１８０３において取得した時間内にアクセスされると予測されるメモリバンク１０３がないと判定された場合、メモリバンク１０３の電源を予め通常モードに設定する必要がない。この場合、メモリバンク電源制御部１１９は、通常のページフォールトに対する処理を実行する（１８０６）。
【０１７９】
以上で、図１８に示す処理が終了する。
【０１８０】
以上の本発明の第１の実施の形態によれば、ページテーブルの参照ビット及び更新ビットに基づいて、各物理ページの実際の利用頻度が評価される。そして、利用頻度が低い物理ページが同一のメモリバンク１０３に集められ、そのメモリバンク１０３の電源が低消費電力モードに設定される。その結果、全メモリバンク１０３の消費電力の合計値を削減することができる。また、連続した物理ページに対するアクセスがあった場合、これからアクセスされる物理ページが予測され、予測された物理ページを含むメモリバンク１０３の電源が予め通常モードに設定される。その結果、計算機の処理性能低下を防ぐことができる。
【０１８１】
次に、本発明の第２の実施の形態について説明する。
【０１８２】
図１に示した本発明の第１の実施の形態では、ＯＳ１１０が、図２から図１８に示すような、メモリバンク１０３の電源制御を実行した。一方、近年、Ｈｙｐｅｒｖｉｓｏｒ又は仮想マシンモニタ（ＶＭＭ）等のような、計算機のリソースを仮想化する技術が開発されている。このような仮想化技術が実装される場合、図２から図１８に示す制御は、Ｈｙｐｅｒｖｉｓｏｒ又はＶＭＭによって実現されてもよい。
【０１８３】
図１９は、本発明の第２の実施の形態の計算機の構成を説明するブロック図である。
【０１８４】
第２の実施の形態の計算機は、ハードウエア１００、Ｈｙｐｅｒｖｉｓｏｒ又はＶＭＭ１９００、ＯＳ１１０及びユーザプログラム１３０を備える。
【０１８５】
ハードウエア１００及びユーザプログラム１３０は、第１の実施の形態と同様であるため、説明を省略する。
【０１８６】
Ｈｙｐｅｒｖｉｓｏｒ又はＶＭＭ１９００は、ハードウエア１００のリソースを仮想化するためのソフトウエアである。このソフトウエアは、いずれかのメモリバンク１０３に格納される。第２の実施の形態のＨｙｐｅｒｖｉｓｏｒ又はＶＭＭ１９００は、ページテーブル１１１、更新アクセス利用頻度リスト１１２、参照アクセス利用頻度リスト１１３、メモリバンク・ページ管理テーブル１１４、物理ページ利用頻度リスト作成部１１５、メモリバンク・ページリスト作成部１１６、物理ページ収集部１１７、電源制御バンク判定部１１８及びメモリバンク電源制御部１１９を含む。これらの各部は、第１の実施の形態と同様であるため、説明を省略する（図２から図１８参照）。
【０１８７】
第２の実施の形態のＯＳ１１０は、第１の実施の形態のＯＳ１１０が備えていたページテーブル１１１からメモリバンク電源制御部１１９までの構成を含まなくてもよい。それ以外の点に関しては、第２の実施の形態のＯＳ１１０は、第１の実施の形態のＯＳ１１０と同等であってもよい。
【０１８８】
以上の本発明の第２の実施の形態によれば、第１の実施の形態と同様の機能が、ハードウエアを仮想化するソフトウエアによって実現される。このため、既存のＯＳに変更を加えることなく、メモリの電源を制御することによって、計算機の消費電力を削減することができる。
【図面の簡単な説明】
【０１８９】
【図１】本発明の第１の実施の形態の計算機の構成を説明するブロック図である。
【図２】本発明の第１の実施の形態において、メモリバンクの電源を制御するために実行される処理の全体を示すフローチャートである。
【図３】本発明の第１の実施の形態の物理ページ利用頻度リスト作成部が実行する処理を示すフローチャートである。
【図４】本発明の第１の実施の形態の物理ページの利用頻度リストの説明図である。
【図５】本発明の第１の実施の形態のメモリバンク・ページリスト作成部が実行する処理を示すフローチャートである。
【図６】本発明の第１の実施の形態のメモリバンク・ページ管理テーブルの説明図である。
【図７】本発明の第１の実施の形態の物理ページ収集部が実行する処理を示すフローチャートである。
【図８】本発明の第１の実施の形態のメモリバンク電源制御部が、メモリバンクの電源を低消費電力モードに設定するために実行する処理を示すフローチャートである。
【図９】本発明の第１の実施の形態のメモリバンク電源制御部が、メモリバンクの電源を通常モードに設定するために実行する処理を示すフローチャートである。
【図１０】本発明の第１の実施の形態の電源制御バンク判定部が、電源制御の対象となるメモリバンクのリストを作成するために実行する処理を示すフローチャートである。
【図１１】本発明の第１の実施の形態の電源制御バンク判定部が、低消費電力モードに設定されるべきメモリバンクの数を決定するために実行する処理を示すフローチャートである。
【図１２】本発明の第１の実施の形態の電源制御バンク判定部が参照する目標電力消費量値の説明図である。
【図１３】本発明の第１の実施の形態のバンク当たりの電力消費量テーブルの説明図である。
【図１４】本発明の第１の実施の形態の電源制御バンク判定部が参照する低消費電力モードバンク数目標値の説明図である。
【図１５】本発明の第１の実施の形態の電源制御バンク判定部が、電源制御の対象となるメモリバンクのリストを、物理ページの利用頻度に基づいて作成するために実行する処理を示すフローチャートである。
【図１６】本発明の第１の実施の形態の電源制御バンク判定部が参照する利用頻度閾値の説明図である。
【図１７】本発明の第１の実施の形態の電力モード遷移時間テーブルの説明図である。
【図１８】本発明の第１の実施の形態のメモリバンク電源制御部が、実際のアクセスに先行して、メモリバンクの電源を通常モードに設定するために実行する処理を示すフローチャートである。
【図１９】本発明の第２の実施の形態の計算機の構成を説明するブロック図である。
【符号の説明】
【０１９０】
１００  ハードウエア
１０１  ＣＰＵ
１０２  メモリコントローラ
１０３Ａ、１０３Ｂ、１０３Ｃ  メモリバンク
１１０  オペレーティングシステム（ＯＳ）
１１１  ページテーブル
１１２  更新アクセス利用頻度リスト
１１３  参照アクセス利用頻度リスト
１１４  メモリバンク・ページ管理テーブル
１１５  物理ページ利用頻度リスト作成部
１１６  メモリバンク・ページリスト作成部
１１７  物理ページ収集部
１１８  電源制御バンク判定部
１１９  メモリバンク電源制御部
１３０  ユーザプログラム
１３００  バンク当たりの電力消費量テーブル
１７００  電力モード遷移時間テーブル
１９００  Ｈｙｐｅｒｖｉｓｏｒ又は仮想マシンモニタ（ＶＭＭ）
【図１】
2008040606.tif 000003
【図２】
2008040606.tif 000004
【図３】
2008040606.tif 000005
【図４】
2008040606.tif 000006
【図５】
2008040606.tif 000007
【図６】
2008040606.tif 000008
【図７】
2008040606.tif 000009
【図８】
2008040606.tif 000010
【図９】
2008040606.tif 000011
【図１０】
2008040606.tif 000012
【図１１】
2008040606.tif 000013
【図１２】
2008040606.tif 000014
【図１３】
2008040606.tif 000015
【図１４】
2008040606.tif 000016
【図１５】
2008040606.tif 000017
【図１６】
2008040606.tif 000018
【図１７】
2008040606.tif 000019
【図１８】
2008040606.tif 000020
【図１９】
2008040606.tif 000021