(57)【要約】【課題】プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を低減する。【解決手段】メモリに供給される電力の状態は、メモリランク毎に、プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、遅延なしでアクセスできない不活性状態とのいずれかに制御され、基本システムソフトウェアは、割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、メモリコントローラを介して、割り当てられる記憶領域を含まないメモリランクの電力状態を不活性状態にし、割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して活性状態にすることを特徴とする。【選択図】  図２
2007272573.tif 000002
【特許請求の範囲】
【請求項１】
基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において、前記メモリを管理する方法であって、
前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、
前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、
前記基本システムソフトウェアは、
前記割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、
前記メモリコントローラを介して、前記割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、
前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを特徴とするメモリ管理方法。
【請求項２】
前記基本システムソフトウェアは、前記未割り当ての記憶領域が前記活性状態のメモリランクに含まれるか否かを判定し、当該活性状態のメモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記基本システムソフトウェアは、割り当てる領域の予測値を計算し、前記メモリコントローラを介して、前記予測値に基づいてメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項１に記載のメモリ管理方法。
【請求項４】
前記基本システムソフトウェアは、前記電力状態が不活性状態であるメモリランクのうち、前記割り当て可能なサイズが小さいメモリランクを選択し、前記メモリコントローラを介して、前記選択されたメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項１に記載のメモリ管理方法。
【請求項５】
前記基本システムソフトウェアは、前記プロセッサが前記メモリにアクセスする遅延時間を示す位置ポテンシャルに、予め定められた位置ポテンシャル係数を乗じた値と、前記メモリランクの電力状態を示す電力ポテンシャルに、予め定められた電力ポテンシャル係数を乗じた値との和であるメモリポテンシャル値とを、各メモリの各メモリランクごとに示すメモリポテンシャルテーブルを管理し、
前記基本システムソフトウェアは、前記メモリポテンシャルテーブル参照して、前記メモリポテンシャル値が最小のメモリのメモリランクを選択し、当該メモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項１に記載のメモリ管理方法。
【請求項６】
基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において実行される前記メモリを管理するプログラムであって、
前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、
前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスできない不活性状態とのいずれかに制御され、
前記プログラムは、
前記割り当てられる領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、
前記領域が割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、
前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを前記計算機に実行させるためのプログラム。
【請求項７】
前記プログラムは、未割り当ての記憶領域が前記活性状態のメモリランクに含まれるか否かを判定し、当該活性状態のメモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項６に記載のプログラム。
【請求項８】
前記プログラムは、割り当てる領域の予測値を計算し、前記予測値に基づいてメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項６に記載のプログラム。
【請求項９】
前記プログラムは、前記電力状態が不活性状態であるメモリランクのうち、前記割り当て可能なサイズが小さいメモリランクを選択し、前記選択されたメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項６に記載のプログラム。
【請求項１０】
さらに前記プログラムは、前記プロセッサが前記メモリにアクセスする遅延時間を示す位置ポテンシャルに、予め定められた位置ポテンシャル係数を乗じた値と、前記メモリランクの電力状態を示す電力ポテンシャルに、予め定められた電力ポテンシャル係数を乗じた値との和であるメモリポテンシャル値とを、各メモリの各メモリランクごとに示すメモリポテンシャルテーブルの管理を前記計算機に実行させ、
前記プログラムは、前記メモリポテンシャルテーブル参照して、前記メモリポテンシャル値が最小のメモリのメモリランクを選択し、当該メモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムのメモリ管理方法に関し、特に、アクセス性能を考慮しつつメモリの消費電力を低減する方法に関する。
【背景技術】
【０００２】
一般の計算機システムは、ハードウェアを備え、ハードウェアの動作によって、電力を消費する。ハードウェアは、具体的には、処理装置（プロセッサ）、主記憶装置（メモリ）、二次記憶装置、及び入出力装置等である。
【０００３】
計算機システムが大量の電力を消費する場合には、同時に、計算機システムは、大量の熱を発生させる。従って、熱を除去する冷却設備も備える必要がある。
【０００４】
従って、計算機システムが消費する電力コストと冷却設備に関するコストがかかるので、大規模計算機システムを構築する場合には、消費電力あたりの計算機性能を考慮したシステム設計が要求される。すなわち、大規模計算機システムは、消費電力の低減を考慮した設計が必要である。なお、組み込み機器もバッテリ容量の制約等の条件があるので、同様に消費電力の低減を考慮する必要がある。
【０００５】
計算機システムにおいて、メモリは、大量に電力を消費するデバイスのひとつである。例えば、大規模計算機システムは、膨大な数のメモリを備えるので、大規模計算機システム全体の消費電力に占めるメモリの消費電力が大きい。また、計算機サーバ、パーソナルコンピュータ、及び組み込み機器等が備えるメモリの容量は増加している。
【０００６】
今日、低消費電力化の主要な対象は、プロセッサ及び周辺機器であって、メモリの消費電力を低減させる制御は、盛んとはいえない。今後、メモリも、低消費電力化の対象となる。
【０００７】
一般的に、メモリは、プロセッサが計算処理を実行するための命令及びデータ等を格納する。具体的には、プロセッサは、二次記憶装置からオペレーティングシステム（OS）又はアプリケーションソフトウェア等をメモリに読み出す。そして、プロセッサは、そのメモリから命令を読み出し、計算処理を実行する。また、プロセッサが計算処理を実行する際に、メモリは、計算処理に必要なデータ及び計算処理によるデータ若しくは結果を格納する。
【０００８】
計算機システムのメモリは、通常、ＤＲＡＭ（Dynamic Random Access Memory）である。ＤＲＡＭは、トランジスタとキャパシタとを備え、キャパシタに電荷を蓄えるか否かによってデータを記録する。具体的には、キャパシタが電荷を蓄えている場合には、“１”を記憶し、キャパシタが電荷を蓄えていない場合には、“０”を記憶する。ＤＲＡＭは、その構造上、コンデンサに充電された電荷は減衰するので、記録したデータを保持するため、周期的にコンデンサの状態を元の状態に戻すリフレッシュをしなければならない。
【０００９】
また、ＤＲＡＭは、通常、複数の電力制御管理モードを備え、メモリコントローラ等を介して別モードに遷移することができる。例えば、通常モードから低電力モードに遷移することができる。低電力モードでは、通常モード時と比べて消費電力が低くなるが、プロセッサからメモリへのアクセス速度性能が低下する。
【００１０】
従来の計算機システムの低電力制御には、メモリコントローラが論理／物理アドレス変換テーブルを備え、メモリコントローラは、メモリ使用領域が任意のメモリデバイスに集約するように変換テーブルを操作することが知られている。又、ＯＳが管理する未使用メモリリストをメモリデバイスごとに管理し、未使用のメモリが少ない（すなわち、メモリ使用度の高い）メモリデバイスからメモリを割り当てる低電力制御方法も知られている（例えば、特許文献１参照。）。これによって、未使用のメモリデバイスを低電力モードに遷移させ、メモリデバイスの消費電力を低減することができる。
【００１１】
また、データを有するメモリデバイスのみ周期的にリフレッシュし、データを保持することによって、メモリデバイスの消費電力をする技術が知られている（例えば、特許文献２参照。）。
【００１２】
一方、メモリの低電力制御ではなく、プロセッサの低電力制御として、演算回路を操作する命令を先行して検出し、その演算回路を先行して活性化し、演算終了後、使用した演算回路を不活性化することによってプロセッサの消費電力を低減する技術が知られている（例えば、特許文献３参照。）。
【特許文献１】米国特許第６９５４８３７号明細書
【特許文献２】米国特許第６２１５７１４号明細書
【特許文献３】特開２００５−２３５２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
前述した従来技術では、計算機システムにおける低電力制御の主要な対象はプロセッサであり、一方、メモリの消費電力は、今日までほとんど制御されていなかった。
【００１４】
例えば、特許文献３に記載された技術は、プロセッサ内の演算器の低消費電力制御に関する。
【００１５】
前述したように、特許文献１及び特許文献２には、ハードウェアレベルで、メモリが消費する電力を低減化する制御に関する技術が記載されている。一般に、基本システムソフトウェア（オペレーティングシステム等）が物理メモリ資源を直接管理するので、実用上、基本システムソフトウェアと連携することなくハードウェアのみで有効な低電力制御を実現することは極めて困難である。
【００１６】
また、基本システムソフトウェア等のソフトウェアと連携した場合でも、単純にメモリデバイス全体が未使用ならば電力の供給を遮断し、使用度の高いメモリデバイスからメモリを割り当てる方法は、使用される物理メモリの領域が複数のメモリデバイスに跨る断片化が生じるので、有効な方法ではない。特に、オペレーティングシステム等によるメモリ管理では、通常、断片化が生じてしまう。また、メモリが消費する電力が低い電力モード状態から、メモリに書き込み／読み込み可能な通常の電力モード状態へ切り替える際に、プロセッサからメモリへのアクセスに遅延（レイテンシ）が発生し、プロセッサからメモリへのアクセスの性能が低下してしまう課題がある。
【００１７】
しかしながら、特許文献１に記載された技術では、使用される頻度の高いメモリデバイスから物理メモリを割り当てるので、未使用のメモリデバイスが消費する電力は低減する。しかしながら、メモリを割り当てる方式及びメモリの割り当てを解放する方式は、メモリの消費電力の低減化を考慮した制御ではない。このため、計算機システムが動作を継続し、オペレーティングシステム等によってメモリを管理する場合には、通常、物理メモリの使用される領域が断片化する。よって、この断片化に対応できないという課題がある。
【００１８】
また、特許文献１に記載された低電力制御技術は、オペレーティングシステムがメモリをゾーン（物理メモリを低位アドレス領域、通常アドレス領域および高位アドレス領域等）に分割して管理する方式、及びＮｕｍａ（Non-Uniform Memory Access）構成に対応していない。このため、オペレーティングシステムと協調して、確実に主記憶装置を低電力制御するという要求に十分に応えられていない。また、電力モードの切り替えによって生じるレイテンシが隠蔽できない。
【００１９】
一方、特許文献２に記載された技術では、使用中のメモリデバイスのみデータを維持するためリフレッシュ動作をしてメモリデバイスが消費する電力を抑えることができるが、前述したように、物理メモリの使用領域が各メモリデバイスに断片化すると、メモリデバイスを消費電力が低いモードに移行することができず、メモリの低消費電力制御の確実性が低い問題がある。
【課題を解決するための手段】
【００２０】
本発明の代表的な一形態によると、基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において、前記メモリを管理する方法であって、前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、前記基本システムソフトウェアは、前記割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、前記メモリコントローラを介して、前記割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを特徴とする。
【発明の効果】
【００２１】
本発明の一形態によると、主記憶装置（メモリ）を備える計算機システムにおいて、プロセッサからメモリにアクセスする性能に影響を与えることなく、かつ、確実にメモリに対して、メモリの消費する電力を低減化する制御ができ、メモリが消費する電力を大幅に低減することができる。
【発明を実施するための最良の形態】
【００２２】
（第１の実施の形態）
本発明の第１の実施の形態を図１〜図１４を用いて説明する。
【００２３】
図１は、本発明の第１の実施の形態における計算機システムの構成図である。
【００２４】
本発明の第１の実施の形態の計算機システムは、計算機１０００〜１００１、キーボード１１９０、マウス１２００、ディスプレイ１１７０及び二次記憶装置１１８０〜１１８１を備える。キーボード１１９０、マウス１２００、ディスプレイ１１７０、及び二次記憶装置１１８０〜１１８１は一つ若しくは複数の計算機１００１〜１００２に接続されている。
【００２５】
計算機１０００は、プロセッサ（ＣＰＵ）１０１０〜１０１１、メモリコントローラ１０２０〜１０２１、メモリ１０３０〜１０６０、システムＲＯＭ１１００、ビデオアダプタ１１１０、ネットワークインタフェース１１２０〜１１２１、二次記憶装置インタフェース１１３０〜１１３１、及び入力装置インタフェース１１４０を備える。プロセッサ（ＣＰＵ）１０１０〜１０１１、メモリコントローラ１０２０〜１０２１、メモリ１０３０〜１０６０、システムＲＯＭ１１００、ビデオアダプタ１１１０、ネットワークインタフェース１１２０〜１１２１、二次記憶装置インタフェース１１３０〜１１３１、及び入力装置インタフェース１１４０は、システムバス１１５０によって接続される。なお、メモリコントローラ１０２０は、チャネル１０７０によって、メモリ１０３０〜１０４０に接続され、チャネル１０８０によって、メモリ１０５０〜１０６０に接続される。また、キーボード１１９０及びマウス１２００は、入力装置インタフェース１１４０を介して計算機１０００に接続される。
【００２６】
ＣＰＵ１０１０は、メモリ１０３０〜１０６０から各種プログラムをロードし、各種プログラムを実行する。メモリコントローラ１０２０〜１０２１は、メモリ１０３０〜１０６０を管理する。システムＲＯＭ１１００は、計算機１０００が備えるハードウェアの基本的な制御及び情報を提供するファームウェア２０００を格納する。メモリ１０３０〜１０６０は、システムＲＯＭ１１００又は二次記憶装置１１８０〜１１８１に格納された各種プログラムを一次的に格納する。また、メモリ１０３０〜１０６０は、ＣＰＵ１０１０によって各種プログラムが実行されるために必要なデータ、実行後のデータ及び実行結果を一次的に格納する。
【００２７】
メモリ１０３０は、独立に電力を制御できる最小単位の記憶素子であるメモリランク１０３１〜１０３２に区分される。他のメモリ１０４０〜１０６０についても同一である。メモリコントローラ１０２０〜１０２１は、少なくとも、メモリ１０３０〜１０６０にアドレスを定義するメモリアドレッシング、ＣＰＵ１０１０〜１０１１がメモリ1１０３０〜１０６０にアクセスするメモリアクセス、及びメモリ１０３０〜１０６０の電力の状態を制御するインタフェースを備える。なお、計算機システムの計算機１０００の数は、任意であり、一つでも複数でもよい。また、計算機１０００に備わる各構成要素の数は任意であり、一つでも複数でもよい。
【００２８】
また、計算機１０００が、他の計算機１００１とメモリ１０３０〜１０６０を共有する計算機システムの場合には、計算機１０００と計算機１００１は、ノードコントローラ１０９０、ノード間バス１１６０を介して、通信速度が速い回線によって接続される。
【００２９】
計算機１０００は、入力装置インタフェース１１４０を介して入力装置であるキーボード１１９０及びマウス１２００と接続される。また、計算機１０００は、ビデオアダプタ１１１０を介してディスプレイ１１７０と接続される。また、計算機１０００は、二次記憶装置インタフェース１１３０を介して二次記憶装置１１８０に接続される。
【００３０】
計算機１０００は、ネットワークインタフェース１１２０を介してネットワーク１２１０に接続され、遠隔地に存在する計算機１２２０と通信する。
【００３１】
なお、計算機１００１は、計算機１０００と同一の構成である。
【００３２】
図２は、本発明の第１の実施の形態のファームウェア及び基本システムソフトウェアの構成図である。
【００３３】
ファームウェア２０００は、計算機１０００〜１００１上で実行されるメモリ１０３０〜１０６０が消費する電力を低減させるメモリ管理システムに関する。
【００３４】
ファームウェア２０００は、システムＲＯＭ１１００に格納される。ＣＰＵ１０１０〜１０１１は、システムＲＯＭ１１００からファームウェア２０００をメモリ１０３０〜１０６０にロードし、ファームウェア２０００を実行する。具体的に、ファームウェア２０００は、計算機１０００〜１００１が備えるハードウェアの基本的な制御及び情報を提供する。例えばファームウェア２０００は、ハイパーバイザである。
【００３５】
ファームウェア２０００は、ハードウェア構成テーブル２００１、メモリ・アドレッシング・モード指定インタフェース２００２、メモリ・アドレッシング・モードテーブル２００３、電力ランクゾーン−メモリ対応管理テーブル２００４、及びメモリ電力モードテーブル２００５を備える。
【００３６】
ハードウェア構成テーブル２００１には、計算機１０００が備えるハードウェアの情報と、ハードウェアの構成に関する情報と、が登録される。メモリ・アドレッシング・モード指定インタフェース２００２は、入力装置等からメモリ１０３０〜１０６０のメモリ・アドレッシング・モードを指定するインタフェースとして機能するプログラムである。メモリ・アドレッシング・モードテーブル２００３には、メモリ１０３０〜１０６０にアドレスを割り振るモードが登録される。
【００３７】
電力ランクゾーン−メモリ対応管理テーブル２００４には、基本システムソフトウェア２１００が、メモリコントローラ１０２０を介して、電力モードを制御できる連続するメモリアドレスを示す電力ランクゾーンと、電力ランクゾーンに対応するメモリランク１０３１〜１０６２とが登録される。メモリ電力モードテーブル２００５には、計算機１０００〜１００１に備わるメモリ１０３０〜１０６０の複数の電力モードと各電力モードにおける消費電力及び電力モード切り替え時に発生するＣＰＵ１０１０〜１０１１からメモリ１０３０〜１０６０へのアクセスに生じる遅延時間（レイテンシ）が登録される。
【００３８】
基本システムソフトウェア２１００は、計算機１０００に接続される二次記憶装置１１８０又は二記憶装置１１８１に格納され、二次記憶装置１１８０又は二記憶装置１１８１からメモリ１０３０〜１０６０にロードされ、ＣＰＵ１０１０〜１０１１によって実行される。具体的に、基本システムソフトウェア２１００は、計算機１０００〜１００１の物理資源（例えば、メモリ１０３０〜１０６０）を管理し、及びユーザへのインタフェースを提供するソフトウェアであり、例えばオペレーティングシステムである。
【００３９】
なお、基本システムソフトウェア２１００は、二次記憶装置１１８０に障害が発生した場合に備え、複数の二次記憶装置１１８０と二次記憶装置１１８１に格納されてもよい。また、ネットワークインタフェース１１２０を介してネットワーク１２１０に接続された遠隔地に存在する計算機１２２０が、基本システムソフトウェア２１００を配布するようにしてもよい。
【００４０】
基本システムソフトウェア２１００上では、各種アプリケーションソフトウェアが動作し、サービスを提供する。各ソフトウェア（各種アプリケーションソフトウェア、ファームウェア２０００、及び基本システムソフトウェア２１００等を含む）へのメモリ１０３０〜１０６０資源の割り当ての要求若しくは割り当ての解放、プロセスの生成及びプロセスの終了等の処理が計算機システム１０００〜１００１の稼働中に実行される。なお、基本システムソフトウェア２１００上で動作するアプリケーションソフトウェアの種類及び数は、任意である。
【００４１】
基本システムソフトウェア２１００は、メモリ管理プログラム２１１０、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０、メモリページフレーム管理テーブル２１３０、使用中メモリページフレーム管理リストヘッド２１４０、未使用メモリページフレーム管理リストヘッド２１５０、及び電力ランクゾーン‐解放候補メモリページフレーム管理テーブル２１６０を備える。
【００４２】
さらに、メモリ管理プログラム２１１０は、メモリ管理初期化プログラム２１１１、メモリページフレーム割当管理プログラム２１１２、メモリページフレーム回収管理プログラム２１１３、メモリランク電力管理プログラム２１１４、及びメモリ管理制御インタフェース２１１５を備える。
【００４３】
メモリ管理プログラム２１１０は、計算機１０００〜１００１が備えるメモリ１０３０〜１０６０資源を制御及び管理し、メモリ１０３０〜１０６０資源に関連するインタフェースをユーザへ提供する。
【００４４】
メモリ管理初期化プログラム２１１１は、メモリ１０３０〜１０６０資源の制御及び管理に必要なデータ等の初期化等を実行し、またメモリ１０３０〜１０６０資源に関連するインタフェースを提供する準備をする。メモリページフレーム割当管理プログラム２１１２は、ソフトウェアへのメモリ１０３０〜１０６０資源の割り当ての要求に対して、適切なメモリページフレーム（基本システムソフトウェア２１００がメモリ１０３０〜１０６０を管理する一単位）を割り当てる。
【００４５】
メモリページフレーム回収管理プログラム２１１３は、メモリ１０３０〜１０６０資源のメモリページフレームの割り当ての解放要求に対して、使用中の適切なメモリページフレームを未使用メモリページフレームに変更する。メモリランク電力管理プログラム２１１４は、メモリランク１０３１〜１０６２の電力モードを制御する。メモリ管理制御インタフェース２１１５は、メモリ１０３０〜１０６０を管理するための各パラメータの設定等を変更することを可能とするインタフェースとして機能するプログラムである。
【００４６】
メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０には、連続するメモリアドレスごとのメモリゾーンと、その連続するメモリアドレスの範囲内に含まれる電力ランクゾーンと、各電力ランクゾーンが消費する電力と、各電力ランクゾーンがメモリを使用する使用状態とが登録される。
【００４７】
メモリページフレーム管理テーブル２１３０には、メモリページフレームに関する情報を登録される。
【００４８】
使用中メモリページフレーム管理リストヘッド２１４０は、メモリページフレーム管理テーブル２１３０の各メモリページフレームであって、各ソフトウェアによって使用されている使用中メモリページフレームによって構成されるＬＲＵ（Least Recently Used）リストである使用中メモリページフレーム管理リスト８０００の先頭を示す変数である。
【００４９】
未使用メモリページフレーム管理リストヘッド２１５０は、メモリページフレーム管理テーブル２１３０の各メモリページフレームであって、各ソフトウェアによって使用されていない未使用メモリページフレームによって構成される未使用メモリページフレーム管理リスト８１００の先頭を示す変数である。
【００５０】
電力ランクゾーン‐解放候補メモリページフレーム管理テーブル２１６０には、電力ランクゾーンと、その電力ランクゾーン内の各ソフトウェアへの割り当てを解放する候補となるメモリページフレーム数と、解放する候補のメモリページフレームを解放した場合に、各ソフトウェアによって使用されている残使用メモリページフレーム数とが、を登録される。
【００５１】
また、メモリ管理プログラム２１１０は、メモリ１０３０〜１０６０の消費する電力を独立に制御できる最小単位である単数又は複数のメモリランク１０３１〜１０６２をまとめた電力ランクゾーン単位でメモリ１０３０〜１０６０の電力を制御する。
【００５２】
図３は、本発明の第１の実施の形態のメモリ・アドレッシング・モード・テーブル２００３の構成図である。
【００５３】
メモリ・アドレッシング・モード・テーブル２００３は、ファームウェア２０００によって管理される。
【００５４】
メモリ・アドレッシング・モード・テーブル２００３は、アドレッシング・モード３０００とアドレッシング方法３１００とを含む。
【００５５】
アドレッシング・モード３０００は、アドレッシング方法の一意な識別子である。管理者は、アドレッシングモード３０００によって、メモリ１０３０〜１０６０にメモリアドレスを割り振る方法を決定する。アドレッシング方法３１００は、各アドレッシング・モードに対応するメモリアドレスの割り振る方法を示す。ここで、メモリアドレスとは、ＣＰＵ１０１０〜１０１１がメモリ１０３０〜１０６０にアクセスする場所を示すための一意な識別子である。
【００５６】
次に、アドレッシング方法３１００に登録される具体的なメモリアドレスを割り振る方法について説明する。
【００５７】
通常モード３２００では、メモリコントローラ１０２０〜１０２１は、チャネル０（１０７０）によってメモリコントローラ１０２０に接続されたメモリ１０３０にメモリアドレスを割り振り、その後チャネル０（１０７０）に接続されたメモリ１０４０にメモリアドレスを割り振る。次に、チャネル１のメモリ１０５０から順にチャネルｎのメモリ１０４０にメモリアドレスを割り振る。
【００５８】
フル・インタリーブモード３３００では、メモリコントローラ１０２０〜１０２１は、全チャネル０〜ｎ（１０７０〜１０８０）に対して、予め定められたインタリーブ・サイズごとにチャネル０（１０７０）に接続されたメモリ（１０３０及び１０４０）からチャネルｎ（１０８０）に接続されたメモリ（１０５０及び１０６０）に交互にメモリアドレスを割り振る。「交互に」とは、例えば、ある番号のメモリアドレスがメモリ１０３０に割り振られ、次の番号のメモリアドレスがメモリ１０４０に割り振られることを意味する。以下の電力制御モードにおいても同じである。
【００５９】
ｍチャネル・インタリーブモード３４００では、メモリコントローラ１０２０〜１０２１は、ｍ個のチャネルを一つの単位として，予め定められたインターリーブ・サイズごとにチャネル０（１０７０）に接続されたメモリ（１０３０及び１０４０）からチャネルｍ１に接続されたメモリと交互にメモリアドレスを割り振り、これをチャネルｎまで繰り返す。
【００６０】
フル・インタリーブ・電力制御モード３５００では、メモリコントローラ１０２０〜１０２１は、全チャネル０〜ｎ（１０７０〜１０８０）に対して、メモリランク１０３１のサイズごとにチャネル０（１０７０）に接続されたメモリ（１０３０及び１０４０）からチャネルｎ（１０８０）に接続されたメモリ（１０５０及び１０６０）と交互にメモリアドレスを割り振る。
【００６１】
ｍチャネル・インタリーブ・電力制御モード３６００では、メモリコントローラ１０２０〜１０２１は、ｍ個のチャネルを一つの単位として、メモリランク１０３１のサイズごとにチャネル０（１０７０）に接続されたメモリ（１０３０及び１０４０）からチャネルｍ−１に接続されたメモリと交互にメモリアドレスを割り振り、これをチャネルｎまで繰り返す。
【００６２】
なお、ここで、インタリーブとは、チャネルに接続されたメモリ１０３０〜１０６０が交互にメモリアドレスを割り振られることによって、複数のチャネル１０７０〜１０８０に跨って、メモリアドレスが連続に割り振られることをいう。これによって、ＣＰＵ１０１０〜１０１１が連続するメモリアドレスへのアクセスを高速化できる。
【００６３】
また、インタリーブ・サイズとは、一つのチャネルに割り振るメモリアドレスの大きさのことをいう。メモリコントローラ１０２０〜１０２１は、インタリーブ・サイズごとにインタリーブするようにメモリアドレスを割り振る。
【００６４】
通常、インタリーブ・サイズは、ＣＰＵ１０１０〜１０１１のキャッシュライン・サイズである。キャッシュ・ラインサイズであるインタリーブ・サイズは、メモリページフレームのサイズより小さい。このため、メモリアドレスは、複数のチャネル１０７０〜１０８０に跨るように割り振られているので、一つのメモリページフレームが複数のメモリアドレスに跨る。従って、一つのメモリページフレームが複数のメモリランク１０３１〜１０６２に跨るので、メモリ１０３０〜１０６０の電力の制御に関して効率的でない。
【００６５】
インタリーブ・サイズごとにメモリアドレスを割り振るフル・インタリーブモード３３００及びｍチャネル・インタリーブモード３４００は、メモリの低電力化には適当ではない。
【００６６】
また、フル・インタリーブ・電力制御モード３５００及びｍチャネル・インタリーブ・電力制御モード３６００のインタリーブ・サイズをメモリランク１０３１のサイズと同等に設定する。メモリランク１０３１のランクサイズは、メモリページフレームのサイズよりも大きいので、一つ又は複数のメモリページプレームは、一つのメモリランク１０３１内に含まれるので、メモリの効率的な電力制御ができる。また、通常モード３２００は、メモリランク１０３１から順にメモリアドレスを割り当てる、すなわちメモリランクごとにメモリアドレスを割り当てることによって、メモリの効率的な電力制御ができる。
【００６７】
アドレッシング・モードテーブル２００３のアドレッシング・モード３０００は、通常、ファームウェア２０００によって通常モード３２００に予め設定されている。
【００６８】
また、管理者が、アドレッシング・モード３０００を選択することもできる。具体的には、計算機１０００〜１００１を起動し、ファームウェア２０００が実行されると、管理者は、計算機１０００〜１００１のキーボード１１９０等の入力装置を用いて、メモリ・アドレッシング・モード指定インタフェース２００２を介して、アドレッシング・モード３０００を選択できる。
【００６９】
また、管理者が、アドレッシング・モード・テーブル２００３の設定の内容（インタリーブ・サイズ及びインタリーブのチャネルの数等）を変更することもできる、
なお、アドレッシング・モード３０００の選択及びアドレッシング・モード・テーブル２００３の内容は、他の計算機１２２０からネットワーク１２１０を通じて、メモリ・アドレッシング・モード指定インタフェース２００２を介して設定してもよい。
【００７０】
図４は、本発明の第１の実施の形態の電力ランク‐メモリランク対応管理テーブル２００４の構成図である。
【００７１】
電力ランク‐メモリランク対応管理テーブル２００４は、ファームウェア２０００によって管理される。
【００７２】
電力ランク‐メモリランク対応管理テーブル２００４は、電力ランクゾーン４０００と、メモリアドレス４１００と、メモリランク４２００とを含む。
【００７３】
電力ランクゾーン４０００は、連続するメモリアドレスの領域を構成するメモリランク１０３１〜１０６２の数が最小となるように構成され、電力を制御可能な単位である。
【００７４】
メモリアドレス４１００は、電力ランクゾーン４０００に属する連続するメモリアドレスの領域のメモリアドレスを示す。メモリランク４２００は、電力ランクゾーン４０００に属するメモリランク１０３１〜１０６２を示す。
【００７５】
例えば、電力ランクゾーン０（ＰＲ０）４３００は、メモリアドレスが０〜Ｘ０，０の範囲の連続するメモリアドレスの領域、及びメモリ（１０３０）のランク０（１０３１）によって構成されることを示す。
【００７６】
電力ランク‐メモリランク対応管理テーブル２００４は、基本システムソフトウェア２１００から参照できるように、基本システムソフトウェア２１００が実行されると、例えば、メモリ１０３０〜１０６０上に配置される。
【００７７】
電力ランク‐メモリランク対応管理テーブル２００４の内容は、メモリ・アドレッシング・モード・テーブル２００３に基づいて、ファームウェア２０００によって、予め設定される。
【００７８】
なお、メモリ・アドレッシング・モード・テーブル２００３の内容が、管理者によって変更されると、メモリ１０３０〜１０６０に割り振られるメモリアドレスが変更される。ファームウェア２０００は、その変更に応じて、連続するメモリアドレスの領域を構成する最小のメモリランクを求めて電力ランク‐メモリランク対応管理テーブル２００４を変更する。ファームウェア２０００が、電力ランク‐メモリランク対応管理テーブル２００４を変更する場合に、計算機１０００〜１００１のチャネル１０７０〜１０８０、メモリ１０３０〜１０６０、及びメモリランク１０３１〜１０６２の情報が必要な場合には、これらの情報が登録されているハードウェア構成テーブル２００１を参照する。
【００７９】
なお、基本システムソフトウェア２１００が、メモリ・アドレッシング・モード・テーブル２００３及びハードウェア構成テーブル２００１を参照して、電力ランク‐メモリランク対応管理テーブル２００４を作成、追加、及び変更するようにしてもよい。また、電力ランク‐メモリランク対応管理テーブル２００４は、メモリ・アドレッシング・モード・テーブル２００３の各アドレッシングモード（３２００〜３６００）に対応して、アドレッシングモード（３２００〜３６００）ごとに作成されてもよい。
【００８０】
図５は、本発明の第１の実施の形態のメモリ電力モードテーブル２００５の構成図である。
【００８１】
メモリ電力モードテーブル２００５は、ファームウェア２０００によって管理される。メモリ電力モードテーブル２００５は、電力モード５０００と、消費電力５１００と、モード切替レイテンシ５２００とを含む。
【００８２】
電力モード５０００には、メモリ１０３０〜１０６０の各メモリランク１０３１〜１０６２が遷移できるメモリランク１０３１〜１０６０の電力の状態が登録される。消費電力５１００には、メモリランク１０３１〜１０６２の各電力状態で、メモリランク１０３１〜１０６０によって消費される電力が登録される。モード切替レイテンシ５２００には、メモリランク１０３１〜１０６２が電力モードを他の電力モードへ切り替える際に生じる遅延の時間（レイテンシ）が登録される。
【００８３】
例えば、図５に示すメモリ電力モードテーブル２００５には、３つの電力モード（５３００〜５５００）が登録されている。電力モード０（Ｓｔａｎｂｙ）５３００の状態の場合には、メモリランクが時間当たりに消費する消費電力はＸ０である。また、電力モード０（Ｓｔａｎｂｙ）５３００のメモリランクが電力モード０へ遷移する場合には、現在の電力モードであるため、レイテンシは生じない。また、電力モード０（Ｓｔａｎｂｙ）５３００のメモリランクが電力モード１へ遷移する場合に生じるレイテンシはＹ０，１であり、電力モード２へ遷移する場合に生じるレイテンシはＹ０，２である。
【００８４】
なお、ＣＰＵ１０１０〜１０１１は、電力モード０（Ｓｔａｎｂｙ）５３００のメモリランク１０３１〜１０６２にアクセスできる。また、ＣＰＵ１０１０〜１０１１は、電力モード１（ＰｏｗｅｒＤｏｗｎ）５４００及び電力モード２（Ｓｅｌｆ‐ｒｅｆｒｅｓｈ）５５００のメモリランク１０３１〜１０６２には、遅延を生じさせることなくアクセスできない。すなわち、ＣＰＵ１０１０〜１０１１がメモリランク１０３１〜１０６２に読み書きする場合には、メモリランクの電力モード５０００は、電力モード０（Ｓｔａｎｂｙ）５３００の状態になった後にアクセスする。
【００８５】
また、メモリランク１０３１〜１０６２によって消費される消費電力５１００は、電力モード２（Ｓｅｌｆ‐ｒｅｆｒｅｓｈ）５５００のＸ２が最も低く、次いで、電力モード１（ＰｏｗｅｒＤｏｗｎ）が低く、電力モード０（Ｓｔａｎｂｙ）５３００のＸ０が最も高い。電力モード０（Ｓｔａｎｂｙ）５３００を活性状態といい、電力モード１（ＰｏｗｅｒＤｏｗｎ）５４００及び電力モード２（Ｓｅｌｆ‐ｒｅｆｒｅｓｈ）５５００を不活性状態という。
【００８６】
メモリ電力モードテーブル２００５の内容は、計算機１０００〜１００１のメモリ１０３０〜１０６０に基づいて、ファームウェア２０００によって、予め設定される。
【００８７】
図６は、本発明の第１の実施の形態のメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の構成図である。
【００８８】
メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０は、基本ソフトウェア２１００によって管理される。
【００８９】
メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０は、メモリゾーン６０００と、アドレス範囲６０１０と、電力ランクゾーン６０２０と、電力ランクゾーンサイズ６０３０と、電力状態６０４０と、未使用メモリページフレーム数６０５０と、使用メモリページフレーム数１階時間微分６０６０と、使用メモリページフレーム数２階時間微分６０７０と、を含む。
【００９０】
メモリゾーン６０００は、基本システムソフトウェア２１００がメモリアドレスに応じて管理する領域を示す。アドレス範囲６０１０には、各メモリゾーン６０００に含まれるメモリアドレスが登録される。電力ランクゾーン６０２０には、アドレス範囲６０１０に含まれる電力ランクゾーンが登録される。電力ランクゾーンサイズ６０３０には、各電力ランクゾーン６０２０の容量が登録される。電力状態６０４０には、各電力ランクゾーン６０２０に属するメモリランク１０３１〜１０６２の電力状態が登録される。未使用メモリページフレーム数６０５０には、各電力ランクゾーン６０２０に属するメモリランク１０３１〜１０６２のメモリページフレームのうち、各ソフトウェアによって使用されていない未使用メモリページフレームの数が登録される。使用メモリページフレーム数１階時間微分６０６０には、電力ランクゾーン６０２０に属するメモリランク１０３１〜１０６２のメモリページフレームのうち、各ソフトウェアによって使用されている使用メモリページフレーム数の時間で１階微分した値が登録される。すなわち、使用メモリページフレーム数を１階時間微分値は、メモリページフレームが使用される速度を示す。使用メモリページフレーム数２階時間微分６０７０には、電力ランクゾーン６０２０に属するメモリランク１０３１〜１０６２の使用メモリページフレーム数を時間で２階微分した値が登録される。すなわち、使用メモリページフレーム数の２階時間微分値は、メモリページフレームが使用される加速度を示す。
【００９１】
例えば、図６に示すメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０は、３つのメモリゾーン（６０８０、６０９０、及び６１００）と、各メモリゾーン内でそれぞれ電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、及び６１０１〜６１０２）とを管理する。メモリゾーンＺｏｎｅ０（６０８０）はアドレス範囲０〜Ｘ０のメモリアドレスを含み、Ｚｏｎｅ０（６０８０）は、電力ランクゾーンＰＲ０〜ＰＲｘ０（６０８１〜６０８２）を含む。
【００９２】
電力ランクゾーンＰＲ０（６０８１）は、容量がＲＳ０であり、電力ランクゾーンＰＲ０の電力の状態はＰＳ０であり、電力ランクゾーンＰＲ０（６０８１）内の各ソフトウェアによって使用されていないメモリページフレーム数がＳｕ０であり、各ソフトウェアによって使用されるメモリページフレーム数の１階時間微分値がＳｕ'０であり、各ソフトウェアによって使用されるメモリページフレーム数の２階時間微分値がＳｕ''０であることを示す。
【００９３】
なお、電力ランクゾーン６０２０には、メモリゾーン６０００のアドレス範囲６０１０のメモリアドレスの範囲内にあるメモリアドレス４１００の電力ランクゾーン４０００が登録される。
【００９４】
メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の内容は、計算機１０００〜１００１の起動時に、メモリ管理初期化プログラム２１１１によって設定される。また、計算機１０００〜１００１が動作中、メモリ管理プログラム２１１０によって更新される。
【００９５】
図７は、本発明の第１の実施の形態のメモリページフレーム管理テーブル２１３０の構成図である。
【００９６】
メモリページフレーム管理テーブル２１３０は、基本システムソフトウェア２１００によって管理される。メモリページフレーム管理テーブル２１３０は、メモリページフレーム（７０００〜７２００）を管理するテーブルである。
【００９７】
メモリページフレーム管理テーブル２１３０は、少なくとも、使用中メモリページ管理リストヘッド２１４０及び未使用メモリページ管理リストヘッド２１５０を先頭とするリスト構造に接続するためのｌｉｓｔデータ変数７０１０を含む。
【００９８】
メモリページフレーム管理テーブル２１３０には、計算機１０００〜１００１のメモリ１０３０〜１０６０全体の容量を一つのメモリページフレームの容量で割った数のメモリページフレーム（７０００〜７２００）が含まれる。基本システムソフトウェア２１００は、メモリコントローラ１０２０を介して、メモリページフレーム単位で、ソフトウェアにメモリ１０３０〜１０６０資源の割り当て等を実行する。
【００９９】
なお、使用中メモリページフレームとは、各ソフトウェアに割り当てられていて、各ソフトウェアに使用されているメモリページフレームをいう。一方、未使用メモリページフレームとは、各ソフトウェアによって使用されていないメモリページフレームをいう。
【０１００】
メモリページフレーム管理テーブル２１３０は、計算機１０００〜１００１が起動されると、メモリ管理初期化プログラム２１１１によって設定される。また、メモリページフレーム管理テーブル２１３０は、計算機１０００〜１００１の動作中に、メモリ管理プログラム２１１０によって更新される。
【０１０１】
図８は、本発明の第１の実施の形態の使用中メモリページフレーム管理リスト８０００、使用中メモリページフレーム管理リストヘッド２１４０、未使用メモリページフレーム管理リスト８１００、及び未使用メモリページフレーム管理リストヘッド２１５０の構成図である。
【０１０２】
使用中メモリページフレーム管理リスト８０００は、ＬＲＵ（Least Recently Used）リストである。使用中メモリページフレーム管理リスト８０００は、先頭から使用された順にメモリページフレームのｌｉｓｔデータ変数７０１０を接続して構成される。すなわち、使用された順にメモリページフレームのＬｉｓｔデータ変数７０１０は関連付けられる。先頭のメモリページフレームは、最近使用されたメモリページフレームである。
【０１０３】
使用中メモリページフレーム管理リストヘッド２１４０は、基本システムソフトウェア２１００によって管理される。使用中メモリページフレーム管理リストヘッド２１４０は、ＬＲＵリスト８０００の先頭を示す先頭リスト変数である。
【０１０４】
基本システムソフトウェア２１００は、ＣＰＵ１０１０〜１０１１からの各ソフトウェアに対するメモリ１０３０〜１０６０の割り当ての要求に対して、未使用メモリページフレーム管理リスト８１００を参照して、適切なメモリページフレームを割り当てる。そして、基本システムソフトウェア２１００は、割り当てたメモリページフレームのメモリページフレーム管理テーブル７０００〜７２００を使用中メモリページフレーム管理リスト８０００の先頭に接続する。
【０１０５】
また、基本システムソフトウェア２１００は、ＣＰＵ１０１０〜１０１１からの各ソフトウェアへのメモリ１０３０〜１０６０の割り当てを解放する要求に対して、使用中メモリページフレーム管理リスト８０００から適切なメモリページフレームを選択し、メモリページフレームを解放する。
【０１０６】
未使用メモリページフレームリスト８１００は、未使用メモリページフレームを接続することによって、未使用メモリページフレームを管理する。未使用メモリページフレーム管理リストヘッド２１５０は、基本システムソフトウェア２１００によって管理される。未使用メモリページフレーム管理リストヘッド２１５０は、未使用メモリページフレームリスト８１００の先頭リスト変数である。
【０１０７】
基本システムソフトウェア２１００は、ＣＰＵ１０１０〜１０１１からの各ソフトウェアへのメモリ１０３０〜１０６０の割り当てを解放する要求に対して、通常、使用メモリページフレーム管理リスト８０００の最後尾のメモリページフレームを解放する。そして、基本システムソフトウェア２１００は、解放したメモリページフレームのメモリページフレーム管理テーブル７０００〜７２００を未使用メモリページフレーム管理リスト８１００に接続する。
【０１０８】
また、基本システムソフトウェア２１００は、メモリ１０３０〜１０６０の割り当ての要求に対して、未使用メモリページフレーム管理リスト８１００から適切なメモリページフレームを選択し、メモリページを割り当てる。
【０１０９】
使用中メモリページフレーム管理リスト８０００及び未使用メモリページフレーム管理リスト８１００は、計算機１０００〜１００１が起動されると、メモリ管理初期化プログラム２１１１によって設定される。また、計算機１０００〜１００１の動作中には、メモリ管理プログラム２１２０によって更新される。
【０１１０】
なお、本実施の形態では、使用中メモリページフレーム管理リスト８０００及び未使用メモリページフレーム管理リスト８１００は単数のリスト構成を説明したが、使用中メモリページフレーム管理リスト８０００及び未使用メモリページフレーム管理リスト８１００は複数のリスト構成としてもよい。複数のリスト構成とすることによって、よりきめ細かに管理できる。
【０１１１】
図９は、本発明の実施の形態の電力ランクゾーン‐解放候補ページテーブル２１６０の構成図である。
【０１１２】
電力ランクゾーン‐解放候補ページテーブル２１６０は、基本システムソフトウェア２１００によって管理される。電力ランクゾーン‐解放候補ページテーブル２１６０は、電力ランクゾーン９０００と、解放候補メモリページフレーム数９１００と、残使用メモリページフレーム数９２００とを含む。
【０１１３】
電力ランクゾーン９０００は、電力ランクゾーンを示す。解放候補メモリページフレーム数９１００には、電力ランクゾーンに含まれるメモリページフレームのうち、解放する候補となるメモリページフレームの数が登録される。残使用メモリページフレーム数９２００には、電力ランクゾーンに属するメモリページフレーム数から解放候補メモリページフレーム数９１００と、各ソフトウェアによって使用されていない未使用メモリページフレーム数と、の差分値が登録される。すなわち、残使用メモリページフレーム数９２００には、電力ランクゾーン毎に、解放候補対象メモリページフレームを解放した場合に、各ソフトウェアによって使用されているメモリページフレームの数が登録される。
【０１１４】
例えば、図９に示す電力ランクゾーン‐解放候補ページテーブル２１６０は、複数の電力ランクゾーン（９３００〜９５００）を管理する。電力ランクゾーンＰＲｉ（９３００）の解放候補ページフレーム数はＰｊ、残使用ページフレーム数はＤｋである。
【０１１５】
電力ランクゾーン‐解放候補ページテーブル２１６０の内容は、メモリページ回収管理プログラム２１１３によって作成及び更新される。
【０１１６】
図１０は、本発明の第１の実施の形態のメモリ管理初期化プログラム２１１１のフローチャートである。
【０１１７】
メモリ管理初期化プログラム２１１１は、基本システムソフトウェア２１００の種々のテーブルを初期設定するプログラムである。
【０１１８】
まず、メモリ初期化プログラム２１１１は、計算機１０００〜１００１が起動されると、ＣＰＵ１０１０〜１０１１によって、実行される（ステップ１００００）。
【０１１９】
メモリ管理初期化プログラム２１１１は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０においてメモリアドレス範囲６０１０ごとにメモリゾーン６０００を設定する（１０００１）。例えば、メモリゾーン６０００の構成としては、ＤＭＡ（Direct Memory Access）（１６ＭＢ）、Ｎｏｒｍａｌ（４ＧＢ）、Ｈｉｇｈ（４ＧＢ以上）の３つのメモリゾーンに区分するメモリゾーン構成がある。図６に示すメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０は、Ｚｏｎｅ０がＤＭＡに対応し、Ｚｏｎｅ１がＮｏｒｍａｌに対応し、Ｚｏｎｅ２がＨｉｇｈに対応する。
【０１２０】
また、計算機１０００〜１００１がＮｕｍａシステムを構成する場合のメモリゾーン６０００の構成としては、計算機１０００〜１００１ごとにメモリゾーンを区分する構成がある。メモリ初期化プログラム２１１１は、メモリ１０３０〜１０６０の構成及び他のハードウェアの構成が必要な場合には、例えば、ファームウェア２０００が提供するハードウェア構成テーブル２００１及び電力ランクゾーン‐メモリ対応管理テーブル２００４を参照する。
【０１２１】
次に、メモリ初期化プログラム２１１１は、ステップ１０００１で設定したメモリゾーン６０８０〜６１００について、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０を初期化する処理（ステップ１０００３〜ステップ１０００８）を繰り返す（ステップ１０００２）。
【０１２２】
メモリ初期化プログラム２１１１は、電力ランクゾーン‐メモリ対応管理テーブル２００４を参照し、ステップ１０００１で登録されたメモリゾーン６０００のアドレス範囲６０１０に含まれる電力ランクゾーン４０００をメモリゾーン‐電力ランクゾーン管理テーブル２１２０の電力ランクゾーン６０２０に登録する（ステップ１０００３）。例えば、電力ランクゾーンＰＲｘｏがメモリゾーン０及びメモリゾーン１に跨る場合、すなわち、電力ランクゾーンＰＲｘｏのメモリアドレスの領域がＺｏｎｅ０のメモリアドレスの領域及びＺｏｎｅ１のメモリアドレスの領域の両方に含まれる場合には、メモリ初期化プログラム２１１１は、跨る複数のメモリゾーン（Ｚｏｎｅ０及びＺｏｎｅ１）に電力ランクゾーンＰＲｘｏ（６０８２、６０９１）を登録する。
【０１２３】
また、ステップ１０００３と同様に、メモリ初期化プログラム２１１１は、電力ランクゾーン‐メモリ対応管理テーブル２００４を参照し、メモリゾーン６０００のアドレス範囲６０１０に含まれる電力ランクゾーン４０００の容量をメモリゾーン‐電力ランクゾーン管理テーブル２１２０の電力ランクサイズ６０３０に登録する（ステップ１０００４）。
【０１２４】
例えば、電力ランクゾーンＰＲｘｏがＺｏｎｅ０及びＺｏｎｅ１に跨る場合には、メモリ初期化プログラム２１１１は、Ｚｏｎｅ０の電力ランクゾーンサイズ６０３０には、Ｚｏｎｅ０のメモリアドレスの領域に含まれる電力ランクゾーンＰＲｘ０のメモリアドレスの領域分の電力ランクゾーンＰＲｘｏのサイズＲＳｘ０−０（６０８２）を登録する。また、メモリ初期化プログラム２１１１は、Ｚｏｎｅ１の電力ゾーンランクサイズ６０３０には、Ｚｏｎｅ１のメモリアドレスの領域に含まれる電力ランクゾーンＰＲｘ０のメモリアドレスの領域分の電力ランクゾーンＰＲｘ０のサイズＲＳｘ０−１（６０９１）を登録する。すなわち電力ランクゾーンが複数のメモリゾーンに跨る場合には、メモリ初期化プログラム２１１１は、電力ランクゾーンのサイズは、メモリゾーン内に属するサイズ分を登録する。
【０１２５】
次に、メモリ初期化プログラム２１１１は、各電力ランクゾーンごと（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）に、各電力ランクゾーンの電力モードの状態を電力状態６０４０を登録する（ステップ１０００５）。例えば、メモリ初期化プログラム２１１１は、メモリコントローラ１０２０〜１０２１を介して、直接メモリ１０３１〜メモリランク１０６２を参照して、メモリランク１０３１〜１０６２の電力状態を登録する。また、メモリ初期化プログラム２１１１がハードウェア構成テーブル２００１を参照して、メモリランク１０３１〜１０６２の電力状態を登録してもよい。
【０１２６】
ステップ１０００５の後、メモリ初期化プログラム２１１１は、各電力ランクゾーンごと（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）に、各ソフトウェアによって使用されていないメモリページフレームの数を未使用メモリページフレーム数６０５０に登録する（ステップ１０００６）。メモリ管理を初期化した際、各電力ランクゾーンの未使用のメモリページフレームの数は、例えば、各電力ランクゾーン６０２０の電力ランクゾーンサイズ６０３０に含まれるメモリページフレーム数と、基本システムソフトウェア２１００を初期化する処理及びコード／データ等によって使用される各電力ランクゾーン６０２０のメモリページフレーム数との差分値を計算して算出される。
【０１２７】
ステップ１０００６の後、メモリ初期化プログラム２１１１は、電力ランクゾーン６０２０に含まれる全てのメモリページフレームが各ソフトウェアによって使用されていない全メモリランク１０３１〜１０６２の電力状態を不活性状態に設定し、電力状態６０４０を更新する（ステップ１０００７）。メモリランク１０３１〜１０６２の電力状態の切り替えは、例えば、メモリコントローラ１０２０〜１０２１を介して実行される。
【０１２８】
ステップ１０００７の後、メモリ初期化プログラム２１１１は、各電力ランクゾーンごと（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）の各ソフトウェアによって使用されているメモリページフレームの数の１階時間微分値６０６０及び２階微分値６０７０を０で初期化する（ステップ１０００８）。
【０１２９】
ステップ１０００８の後、メモリ管理初期化プログラム２１１１は、各メモリゾーン６０８０〜６１００についてステップ１０００３〜ステップ１０００８を繰り返し（ステップ１０００９）、全てのメモリゾーン６０００についてステップ１０００３〜ステップ１０００８を終了すると、メモリページフレーム管理テーブル２１３０を作成及び初期化する（ステップ１００１０）。
【０１３０】
ステップ１００１０の後、メモリ管理初期化プログラム２１１１は、使用中メモリページフレーム管理リストヘッド２１４０を初期化し、使用中のメモリページフレームを使用中メモリページフレーム管理リスト８０００に登録する（ステップ１００１１）。なお、ファームウェア２０００及び基本システムソフトウェア２１００等によって使用されている使用中メモリページフレームのうち、メモリ１０３０〜１０６０資源の割り当ての解放及び回収の対象にしないメモリページフレームは使用中メモリページフレーム管理リスト８０００に登録しなくてもよい。
【０１３１】
さらに、メモリ初期化プログラム２１１１は、未使用メモリページ管理リストヘッド２１５０を初期化し、未使用メモリページフレーム管理リスト８１００を作成する（１００１２）。
【０１３２】
ステップ１００１２の後、メモリ管理初期化プログラム２１１１を終了する（１００１３）。
【０１３３】
図１１は、本発明の第１の実施の形態のメモリページフレーム割当管理プログラム２１１２のフローチャートである。
【０１３４】
例えば、メモリ管理プログラム２１１０がメモリページフレームを割り当てるメモリゾーン６０００とメモリページフレーム数とを指定して、メモリページフレーム割当管理プログラム２１１２は実行される（ステップ１１０００）。なお、指定されるメモリゾーン６０８０〜６１００は一つでも複数でもよい。複数のメモリゾーンを指定する場合には、割り当ての優先度が指定されていれば、メモリゾーン６０８０〜６１００の優先度の順とする。
【０１３５】
まず、メモリページフレーム割当管理プログラム２１１２は、割り当てるメモリページフレームを検索する対象となる電力モード（検索電力モード）を最大電力モード（ＰＳ０電力モード０（Stanby）５３００）、に設定する（ステップ１１００１）。すなわち、メモリページフレーム割当プログラム２１１２は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の電力状態６０４０が活性状態である電力ランクゾーンのメモリページフレームを検索する対象とする。
【０１３６】
次に、メモリページフレーム割当管理プログラム２１１２は、指定されたメモリゾーン６０８０〜６１００に各ソフトウェアによって使用されていないメモリページフレームがあるか否かを判定する（ステップ１１００２）。具体的には、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の未使用メモリページフレーム数６０５０を参照して、判定する。
【０１３７】
メモリページフレーム割当管理プログラム２１１２は、未使用のメモリページフレームがあると判定した場合には、ステップ１１００３に進み、未使用のメモリページフレームがないと判定した場合には、ステップ１１０１６に進む。
【０１３８】
メモリ割当管理プログラム２１１２は、エラーを返し、異常終了する（ステップ１１０１６）。
【０１３９】
まず、メモリページフレーム割当管理プログラム２１１２は、未使用のメモリページフレームがあると判定した場合には、フック関数が登録されているかどうか判定する（ステップ１１００３）。フック関数に登録されるプログラムは、任意のプログラムである。なお、本実施の形態では、フック関数には、メモリランク電源管理プログラム２１１４が登録されている。
【０１４０】
フック関数が登録されている場合には、そのフック関数が実行される（ステップ１１００４）。フック関数が登録されていない場合には、ステップ１１００５に進む。
【０１４１】
ステップ１１００４の後、及びフック関数が登録されていないと判定された場合には（１１００３）、メモリ管理プログラム２１１０等によって最初に指定されたメモリゾーン（メモリ割り当てに関して最高優先度のメモリゾーン）６０００を、各ソフトウェアに割り当てるメモリページフレームを検索する対象のメモリゾーン（検索メモリゾーン）に設定する（ステップ１１００５）。
【０１４２】
ステップ１１００５の後、メモリ割当管理プログラム２１１２は、未使用メモリページフレーム数６０５０を参照して、検索メモリゾーンに各ソフトウェアによって使用されていないメモリページフレームが存在するか否かを判定する（ステップ１１００６）。
【０１４３】
検索メモリゾーンに未使用のメモリページフレームが存在する場合には、ステップ１１００７に進み、検索メモリゾーンに未使用のメモリページフレームが存在しない場合には、ステップ１１０１１に進む。
【０１４４】
検索メモリゾーンに未使用メモリページフレームが存在する場合には、未使用メモリページフレーム数６０５０を参照して、検索メモリゾーンに検索電力モード（活性状態）の電力ランクゾーン６０２０に未使用メモリページフレームが存在するか否かを判定する（ステップ１１００７）。
【０１４５】
検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在すると判定した場合には、ステップ１１００８に進み、検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在しないと判定した場合には、ステップ１１０１１に進む。
【０１４６】
検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在する場合には、メモリ割当管理プログラム２１１２は、未使用メモリページフレーム管理リスト８１００を参照し、検索電力モードの検索電力ランクゾーン６０２０に属する一つのメモリページフレームを割り当てる対象のメモリページフレームとする（ステップ１１００８）。
【０１４７】
ステップ１１００８の後、メモリ割当管理プログラム２１１２は、割り当てる対象のメモリページフレーム管理テーブル２１３０のメモリページフレーム７０００〜７２００に関して、使用中メモリページフレーム管理リスト８０００及び未使用メモリページフレーム管理リスト８１００を更新する（ステップ１１００９）。
【０１４８】
ステップ１１００９の後、メモリ割当管理プログラム２１１２は、指定された必要なメモリページフレーム数が割り当てられたか否かを判定する（ステップ１１０１０）。
【０１４９】
指定されたメモリページフレーム数が割り当てられたと判定された場合には、メモリページフレーム管理プログラム２１１２を終了する（ステップ１１０１５）。
【０１５０】
指定されたメモリページフレーム数が割り当てられていない場合には、ステップ１１００７に戻る。
【０１５１】
ステップ１１００６で検索メモリゾーンに未使用のメモリページフレームが存在しないと判定した場合、又はステップ１１００７で検索電力モードの電力ランクゾーン６０２０に未使用のメモリページフレームが存在しないと判定した場合には、メモリ割当管理プログラム２１１２は、指定されたメモリゾーンの次の優先度のメモリゾーン６０８０〜６１００が存在するか否かを判定する（ステップ１１０１１）。
【０１５２】
指定された次の優先度のメモリゾーン６０８０〜６１００が存在する場合には、メモリ割当管理プログラム２１１２は、検索メモリゾーンを次の優先度のメモリゾーンに設定し（ステップ１１０１２）、ステップ１１００６に戻る。
【０１５３】
ステップ１１０１１で、指定された次の優先度のメモリゾーンが存在しないと判定した場合には、次の優先度の検索電力モードが存在するか否かを判定する（ステップ１１０１３）。
【０１５４】
次の優先度の検索電力モードが存在すると判定した場合には、検索電力モードを次の優先度の電力モードに設定し（ステップ１１０１４）、ステップ１１００２に戻る。次の優先度の検索電力モードが存在しないと判定した場合には、メモリ割当管理プログラム２１１２は、エラーを返し、異常終了する（ステップ１１０１６）。
【０１５５】
図１２Ａは、本発明の第１の実施形態のメモリランク電源管理プログラム２１１４のフローチャートである。
【０１５６】
メモリランク電源管理プログラム２１１４は、例えば、周期的に実行されるように、メモリ管理初期化プログラム２１１１によって設定される。周期実行時間は、デフォルトの値が設定されているが、管理者は、計算機１０００〜１００１のキーボード１１９０等の入力装置を用いて、メモリ管理制御インタフェース２１１５を介して周期実行時間を変更できる。なお、管理者は、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５を介して周期実行時間を設定することもできる。また、メモリランク電源管理プログラム２１１４は、周期的に実行されるのではなく、直接呼び出されるようにもよい。例えば、メモリランク電源管理プログラム２１１４が直接呼び出される場合には、メモリ電源管理プログラム２１１４がメモリページフレーム割当管理プログラム２１１２のフック関数として登録されていて、フック関数として実行される場合（ステップ１１００４）がある。
【０１５７】
メモリランク電源管理プログラム２１１４が実行されると（ステップ１２０００）、初めに、メモリランク電源管理プログラム２１１４は、各電力ランクゾーン６０２０について以下で述べるステップ１２００２〜１２００５を繰り返す（ステップ１２００１）。
【０１５８】
まず、メモリランク電源管理プログラム２１１４は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の未使用のメモリページフレーム数６０５０を更新し、前回メモリランク電源管理プログラム２１１４が実行された時の使用中のメモリページフレーム数と今回メモリランク電源管理プログラム２１１４が実行された時のメモリ使用中のメモリページフレーム数との差分値を計算する（ステップ１２００２）。この差分値は、前回メモリランク電源管理プログラム２１１４が実行された時からメモリ電源管理プログラム２１１４が実行される時の間に、各ソフトウェアによって使用されたメモリページフレームの数を示す。なお、未使用メモリページフレーム数６０５０は、未使用メモリページフレーム管理リスト８１００を参照して更新される。
【０１５９】
ステップ１２００２の後、メモリランク電源管理プログラム２１１４は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の前回更新時刻と現時刻との差分値、及びステップ１２００２で計算した差分値から、前回のメモリランク電源管理プログラム２１１４が実行された時と今回のメモリランク電源管理プログラム２１１４が実行された間に使用されたメモリページフレーム数を時間で１階微分した値と２階微分した値を計算し、使用メモリページフレーム数１階時間微分６０６０と使用メモリページフレーム数２階時間微分６０７０とを更新する（ステップ１２００３）。
【０１６０】
各ソフトウェアによって使用されているメモリページフレームが無い場合には、メモリランク電源管理プログラム２１１４は、電力ランクゾーン‐メモリ対応管理テーブル２１２０から選択されたその電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）に属するメモリランク１０３１〜１０６２の電力モード５０００を不活性状態に変更する（ステップ１２００４）。
【０１６１】
ステップ１２００４でメモリランク１０３１〜１０６２の電力モード５０００が変更された場合には、メモリランク電源管理プログラム２１１４は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の電力ランクゾーン６０２０の電力状態６０４０を更新する（ステップ１２００５）。メモリランク電源管理プログラム２１１４は、例えば、ハードウェア構成テーブル２００１を参照して、メモリランク１０３１〜１０６２の電力モードの情報を取得する。または、メモリ電源管理プログラム２１１４は、メモリコントローラ１０２０〜１０２１を介して直接メモリランク１０３１〜１０６２の電力モードの情報を取得してもよい。
【０１６２】
なお、ステップ１２００４において、メモリランク電源管理プログラム２１１４が、メモリコントローラ１０２０〜１０２１を介して、電力ランクゾーン６０２０を不活性状態に変更した場合に、メモリランク電源管理プログラム２１１４が、その電力ランクゾーン６０２０の電力状態６０４０を更新するようにしてもよい。
【０１６３】
ステップ１２００５の後、メモリランク電源管理プログラム２１１４は、各電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、及び６１０１〜６１０２）についてステップ１２００２〜１２００５を繰り返し（ステップ１２００６）、全ての電力ランクゾーン６０２０について終了すると、メモリランク電源管理プログラム２１１４が周期的に実行された場合（ステップ１２００７）と直接呼び出された場合（ステップ１２００８）で処理が分岐する。
【０１６４】
次に図１２Ｂを用いて、メモリランク電源管理プログラム２１１４が周期的に実行された場合のメモリランク電源管理プログラム２１１４の処理について説明する。図１２Ｃを用いて、メモリランク電源管理プログラム２１１４が直接呼び出された場合のメモリランク電源管理プログラム２１１４の処理について説明する。
【０１６５】
図１２Ｂは、本発明の第１の実施の形態のメモリランク電源管理プログラム２１１４が周期的に実行される場合のメモリランク電源管理プログラム２１１４のフローチャートである。
【０１６６】
メモリランク電源管理プログラム２１１４が周期的に実行された場合（ステップ１２００７）、メモリランク電源管理プログラム２１１４は、各メモリゾーン６０８０〜６１００について、電力ランクゾーン先行活性処理１（ステップ１２０１０）、又は電力ランクゾーン先行活性処理２（ステップ１２０１１）を繰り返す（ステップ１２００９）。全てのメモリゾーンについて、ステップ１２０１０又はステップ１２０１１が実行されると（ステップ１２０１２）、メモリランク電源管理プログラム２１１４は終了する（ステップ１２０１３）。
【０１６７】
なお、電力ランクゾーンの活性処理は、予め、電力ランクゾーン先行活性処理１（ステップ１２０１０）を実行するように設定されている。なお、管理者は、計算機１０００が備えるキーボード１１９０等の入力装置を用いて、メモリ管理制御インタフェース２１１５から電力ランクゾーンの活性処理で、電力ランクゾーン先行活性処理２（ステップ１２０１１）を実行するように設定を変更できる。また、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５から電力ランクゾーンの活性処理で、電力ランクゾーン先行活性処理２（ステップ１２０１１）を実行するよう設定を変更できるようにしてもよい。
【０１６８】
なお、電力ランクゾーン先行活性処理１は、図１３Ａにて説明する。電力ランクゾーン先行活性処理２は、図１３Ｂにて説明する。
【０１６９】
図１２Ｃは、本発明の第１の実施の形態のメモリランク電源管理プログラム２１１４が直接呼び出され、実行される場合のメモリ電源管理プログラム２１１４のフローチャートである。
【０１７０】
メモリ電源管理プログラム２１１４が直接呼び出される場合とは、例えば、メモリランク電源管理プログラム２１１４が、メモリページフレーム割当管理プログラム２１１２のフック関数に登録されていて（ステップ１１００３）、フック関数として実行される場合がある（ステップ１１００４）。
【０１７１】
まず、メモリランク電源管理プログラム２１１４は、ステップ１１０００でメモリ管理プログラム２１１０等によって指定されたメモリゾーン６０００のメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の電力状態６０４０が活性状態である電力ランクゾーン６０２０の未使用メモリページフレーム数６０５０の合計値を計算し、その合計値と指定されたページ数との差分値を計算する（ステップ１２０１４）。新たに電力ランクゾーンを活性状態にする必要があるか否かを判定するためである。
【０１７２】
ステップ１２０１４の後、メモリ電源管理プログラム２１１４は、差分値が負か否かを判定する（ステップ１２０１５）。メモリ電源管理プログラム２１１４は、差分値が負である場合には、差分値の絶対値のメモリページフレームの数だけ、活性状態であるメモリページフレームの数が足りないと判定し、新たに電力ランクゾーンを活性状態に変更する必要があると判定し、差分値が負でないと判定された場合、指定されたメモリページフレームの数より活性状態であるメモリページフレームの数が多いと判定し、新たに電力ランクゾーンを活性状態に変更する必要がないと判定する。
【０１７３】
差分値が負と判定された場合には、メモリ電源管理プログラム２１１４は、その差分値分のメモリページフレーム数を満足するだけ、かつ、電力状態６０４０が不活性状態である電力ランクゾーン６０２０を電力ランクゾーンサイズ６０３０が小さい順に選択する。そして、メモリ電源管理プログラム２１１４は、選択した電力ランクゾーン６０２０のメモリランク１０３１〜１０６２の電力状態を活性状態に変更する（ステップ１２０１６）。なお、差分値が負でないと判定された場合には、ステップ１２０１８に進む。
【０１７４】
ステップ１２０１６の後、メモリ電源管理プログラム２１１４は、ステップ１２０１６で活性化した電力ランクゾーン６０２０について、メモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の電力状態６０４０を更新する（ステップ１２０１７）。
【０１７５】
ステップ１２０１７の後、又は、ステップ１２０１５で差分値が負でないと判定された場合には、新たに電力ランクゾーンを活性状態に変更する必要がないので、メモリランク電源管理プログラム２１１４を終了する（ステップ１２０１８）。
【０１７６】
図１３Ａは、本発明の第１の実施の形態のメモリランク電源管理プログラム２１１４の電力ランクゾーン先行活性処理１（ステップ１２０１０）のフローチャートである。
【０１７７】
電力ランクゾーン先行活性処理１（ステップ１２０１０）は、まず、メモリランク電源管理プログラム２１１４が次に周期的に実行される時間までに各ソフトウェアに割り当てるメモリページフレーム数の予測値を計算する（ステップ１３１００）。例えば、予測値は、メモリ電源管理プログラム２１１４が実行される周期実行時間とメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０の使用メモリページフレーム数の１階時間微分値６０６０と２階時間微分値６０７０とから計算する。
【０１７８】
ステップ１３１００の後、メモリ電源管理プログラム２１１４は、メモリゾーン‐電力ランクゾーン状態管理テーブル２１１０の電力状態６０４０が活性状態である電力ランクゾーン６０２０の未使用メモリページフレーム数６０５０の合計値を計算する（ステップ１３１０１）。
【０１７９】
ステップ１３１０１の後、メモリ電源管理プログラム２１１４は、ステップ１３１０１で計算した合計値とステップ１３１００で計算した予測値との差分値を計算する（ステップ１３１０２）。
【０１８０】
ステップ１３１０２の後、メモリ電源管理プログラム２１１４は、ステップ１３１０２で計算された差分値が負か否かを判定する（ステップ１３１０３）。すなわち、活性状態である未使用のメモリページフレームの数の合計値が予測値より少ないか否かを判定する。
【０１８１】
差分値が負と判定された場合、すなわち、活性状態である未使用のメモリページフレームの数の合計値が予測値よりも少ない場合には、先行してメモリページフレームを活性状態にするために、ステップ１３０１４及びステップ１３１０５の処理を実行する。なお、ステップ１３１０４及びステップ１３１０５は、それぞれステップ１２０１６及びステップ１２０１７に同一である。
【０１８２】
ステップ１３１０５の終了後、及びステップ１３１０３で差分値が負でないと判定された場合（活性状態であるメモリページフレームの数が予測値より多い場合）には、先行してメモリページフレームを活性状態にする必要はないので、電力ランクゾーン先行活性処理１を終了する（ステップ１２０１８）。
【０１８３】
図１３Ｂは、本発明の第１の実施の形態の電力ランクゾーン先行活性処理２（ステップ１２０１１）のフローチャートである。
【０１８４】
電力ランクゾーン先行活性処理２（ステップ１２０１１）は、初めに、各電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、及び６１０１〜６１０２）についてステップ１３２０１の処理とステップ１３２０２の処理を繰り返す（ステップ１３２００）。
【０１８５】
まず、メモリ電源管理プログラム２１１４は、電力状態６０４０が活性状態か否か判定する（ステップ１３２０１）。
【０１８６】
選択された電力ランクゾーン６０２０の電力状態６０４０が活性状態と判定された場合には、未使用メモリページフレーム数６０５０が閾値以上であるか否かを判定する（ステップ１３２０２）。なお、この閾値は、予め、電力ランクゾーン６０２０における電力ランクゾーンサイズ６０３０に基づいて、パーセンテージで設定されている。管理者は、計算機１０００が備えるキーボード１１９０等の入力装置を用いて、メモリ管理制御インタフェース２１１５から設定又は変更できる。また、管理者は、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５から設定又は変更してもよい。
【０１８７】
ステップ１３２０２で未使用メモリページフレーム数６０５０が閾値未満であると判定された場合及びステップ１３２０１で電力状態６０４０が不活性状態であると判定された場合、各電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）についてステップ１３２０１の処理とステップ１３２０２の処理を繰り返す（ステップ１３２０３）。また、全ての電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）について、ステップ１３２０１の処理とステップ１３２０２の処理とが実行されていれば、ステップ１３２０３に進む。
【０１８８】
ステップ１３２０３の後、メモリ電源管理プログラム２１１４は、電力状態６０４０が不活性状態である電力ランクゾーン６０２０を、電力ランクゾーンサイズ６０３０の小さい順に指定数だけ選択する。選択した電力ランクゾーン（６０８１〜６０８２、６０９１〜６０９２、６１０１〜６１０２）を活性状態に変更して、電力状態６０４０を更新する（ステップ１３２０４）。なお、この指定数は、予め、デフォルト値として「１」が設定されている。なお、管理者は、計算機１０００が備えるキーボード１１９０等の入力装置を用いて、メモリ管理制御インタフェース２１１５から指定数の値を設定又は変更できる。また、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５から指定数の値を設定又は変更してもよい。
【０１８９】
ステップ１３２０４の後、又は未使用メモリページフレーム数６０５０が閾値以上存在すると判定された場合（ステップ１３２０２）、電力ランクゾーン先行活性処理２（ステップ１２０１１）を終了する。
【０１９０】
図１４は、本発明の第１の実施の形態のメモリページフレーム回収管理プログラム２１１３のフローチャートである。
【０１９１】
メモリページフレーム回収管理プログラム２１１３は、例えば、メモリ管理プログラム２１１０等によって回収するメモリページフレーム数、すなわち各ソフトウェアに割り当てられているメモリページフレームの各ソフトウェアの割り当てを解放するメモリページフレームの数が指定されて、呼び出される（ステップ１４０００）。このメモリ管理プログラムによって指定された解放するメモリページフレームの数を解放要求メモリページフレーム数という。なお、指定するメモリページフレーム数は一つでも複数でもよい。
【０１９２】
まず、メモリページフレーム回収管理プログラム２１１３は、メモリ管理プログラム２１１０等によって指定される解放要求メモリページフレームの数から、使用中メモリページフレーム管理リスト８０００の検索する範囲を計算する（ステップ１４００１）。通常、最近使用されていないメモリページフレームを解放する。従って、解放するメモリページフレームは、ＬＲＵリストである使用中メモリページフレーム管理リスト８０００のリスト最後尾から検索する範囲の分だけ検索する。使用中メモリページフレーム管理リスト８０００を検索する範囲は、例えば、解放要求メモリページフレーム数に検索係数を乗じた値とする。検索係数は、予め「１」に設定されている。なお、管理者は、計算機１０００が備えるキーボード１１９０等の入力装置を用いて、メモリ管理制御インタフェース２１１５から検索係数を設定又は変更可能である。また、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５から設定又は変更してもよい。
【０１９３】
ステップ１４００１の後、メモリページフレーム回収管理プログラム２１１３は、使用中メモリページフレーム管理リスト８０００の検索する範囲において、電力ランクゾーン‐解放候補ページテーブル２１６０を作成する（ステップ１４００２）。具体的には、メモリページフレーム回収管理プログラム２１１３は、検索範囲に含まれるメモリページフレームが属する電力ランクゾーンを電力ランクゾーン９０００に登録する。
【０１９４】
さらに、メモリページフレーム回収管理プログラム２１１３は、各電力ランクゾーンに属する全てのメモリページフレーム数を解放候補メモリページフレーム数９１００に登録する。さらに、メモリページフレーム回収管理プログラム２１１３は、電力ランクゾーンに属するメモリページフレーム数から各電力ランクゾーンの解放候補対象メモリページフレーム数９１００と各電力ランクゾーンの使用されていないメモリページフレームの数との差分を残使用メモリページフレーム数９２００に登録する。
【０１９５】
すなわち、残使用メモリページフレーム数９２００には、各電力ランクゾーンの解放候補対象メモリページフレーム９１００のメモリページフレームの割り当てを解放した場合に、各ソフトウェアによって使用されているメモリページフレームの数が登録される。
【０１９６】
ステップ１４００２の後、メモリページフレーム回収管理プログラム２１１３は、残使用メモリページフレーム数９２００が０の電力ランクゾーン９０００に属する全ての使用中メモリページフレームを解放対象メモリページフレームとする（ステップ１４００３）。残使用メモリページフレーム数９２００が０であれば、この電力ランクゾーンに属する全てのメモリページフレームが、各ソフトウェアによって使用されていないメモリページフレームだからである。
【０１９７】
ステップ１４００３の後、メモリページフレーム回収管理プログラム２１１３は、残使用メモリページフレーム数９２００の昇順に各電力ランクゾーン９０００ごとにステップ１４００５〜ステップ１４００７の処理を繰り返す（ステップ１４００４）。
【０１９８】
まず、メモリページフレーム回収管理プログラム２１１３は、解放要求メモリページフレーム数と解放候補対象メモリページフレーム数との差分値を計算する（ステップ１４００５）。
【０１９９】
次に、メモリページフレーム回収管理プログラム２１１３は、ステップ１４００５で計算した差分値が正か否かを判定する（ステップ１４００６）。すなわち、解放候補メモリページフレーム数が解放要求メモリページフレーム数より少ないか否かを判定する。
【０２００】
差分値が正と判定された場合（解放候補メモリページフレーム数が解放要求メモリページフレーム数より少ない場合）、選択された電力ランクゾーン９０００に属する全ての解放候補メモリページフレーム９１００を解放対象ページに加える（ステップ１４００７）。
【０２０１】
次に、残使用メモリページフレーム数９２００の昇順に電力ランクゾーン９０００ごとに処理１４００５〜１４００７の処理を繰り返す（ステップ１４００８）。
【０２０２】
差分値が負と判定された場合（解放候補メモリページフレーム数が解放要求メモリページフレーム数より多い場合）、解放候補メモリページフレームのうち、使用中メモリページフレーム管理リスト８０００の最後尾から優先して、解放要求メモリページフレーム数を満足する分だけ解放対象ページに加える（ステップ１４００９）。
【０２０３】
ステップ１４００９の後、及び残使用メモリページフレーム数９２００の昇順に電力ランクゾーン９０００ごとに処理１４００５〜１４００７を繰り返した後（ステップ１４００８）、メモリページフレーム回収管理プログラムを終了する（ステップ１４０１０）。
【０２０４】
前述したように、本実施の形態は、計算機１０００〜１００１及び基本システムソフトウェア２１００（オペレーティングシステム等）が連携したメモリが消費する電力を低減させるメモリ管理システムである。本実施の形態は、メモリ１０３０〜１０６０の消費する電力を低減させるメモリ１０３０〜１０６０の制御を考慮し、基本システムソフトウェア２１００が、電力ランクゾーンによって、各ソフトウェアへのメモリ資源の割り当て、この割り当ての解放、及びメモリ１０３０〜１０６０の電力モードの一連の制御を実行する。
【０２０５】
これによって、メモリ１０３０〜１０６０を各ソフトウェアが使用する領域が、メモリ１０３０〜１０６０が消費する電力を独立に制御できる単位であるメモリランク１０３１〜１０６２を複数に跨る断片化を抑制することができる。また、基本システムソフトウェア２１００におけるメモリ１０３０〜１０６０を管理する方法（メモリゾーン管理）に対応し、実用上、確実かつ効率的にメモリ１０３０〜１０６０が消費する電力を大幅に低減することができる。さらに、必要なメモリランク１０３１〜１０６２の電力モードを先行して活性化し、電力モードの切り替え時のレイテンシを隠蔽することによって、ＣＰＵ１０１０〜１０１１がメモリ１０３０〜１０６０にアクセスする性能に影響を与えずにメモリ１０３０〜１０６０の消費する電力の低減が可能となる。
【０２０６】
（第２の実施の形態）
本発明の第２の実施の形態を、図１５〜図１７を用いて説明する。
【０２０７】
本発明の第２の実施の形態は、計算機１０００〜１００１がＮｕｍａシステムを構成する場合において、第１の実施形態とは異なる低消費電力メモリ制御について説明する。
【０２０８】
なお、Ｎｕｍａシステムとは、計算機１０００がノードコントローラ１０９０及びノード間バス１１６０を介して、他の計算機１００１に接続され、各計算機１０００〜１００１のＣＰＵ１０１０〜１０１１が各計算機１０００〜１００１のメモリにアクセス可能なシステムである。また、一般的に、計算機１０００〜１００１のＣＰＵ１０１０〜１０１１が同一計算機のメモリ１０３０〜１０６０にアクセスする速度は、計算機１０００〜１００１のＣＰＵ１０１０〜１０１１が他の計算機のメモリ１０３０〜１０６０にアクセスする速度よりも速い。
【０２０９】
なお、第１の実施形態において、基本システムソフトウェア２１００のメモリ管理プログラム２１１０は、メモリ１０３０〜１０６０資源をメモリ１０３０〜１０６０のゾーンによって管理し、メモリ１０３０〜１０６０資源を各ソフトウェアに割り当て及び割り当てを解放する。Ｎｕｍａシステムにおいても、計算機ノード１０００〜１００１ごとにメモリのゾーンを構成することによって、第１の実施形態のメモリ管理プログラム２１１０と同じ構成で、メモリ１０３０〜１０６０の消費する電力を低減することができる。
【０２１０】
なお、第１の実施の形態と同じ構成には、同一の符号を付与し、説明を省略する。
【０２１１】
図１５は、本発明の第２の実施形態のファームウェア２０００及び基本システムソフトウェア２１００の構成図である。
【０２１２】
ファームウェア２０００及び基本システムソフトウェア２１００は、計算機１０００〜１００１上で動作する。
【０２１３】
基本システムソフトウェア２１００は、第１の実施形態の基本システムソフトウェア２１００のメモリゾーン‐電力ランクゾーン状態管理テーブル２１２０及び電力ランクゾーン‐解放候補メモリページフレーム管理テーブル２１６０に代わって、ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００、メモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０、及びメモリポテンシャルテーブル１５２００〜１５２１０を備える。
【０２１４】
ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００は、各計算機１０００〜１００１が備える各ＣＰＵ１０１０〜１０１１と各メモリ１０３０〜１０６０との間の距離によって生じるアクセスの遅延（レイテンシ）を示す。メモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０は、各計算機１０００〜１００１が備える各メモリ１０３０〜１０６０のメモリランク１０３１〜１０６２と各メモリランク１０３１〜１０６２の電力の状態とを示す‐。メモリポテンシャルテーブル１５２００〜１５２１００は、各ＣＰＵ１０１０〜１０１１ごとの位置と電力とによって生じるメモリランク１０３１〜１０６２へのアクセスの遅延（レイテンシ）を示す。他の構成は、第１の実施形態と同一である。
【０２１５】
図１６Ａは、本発明の第２の実施の形態のＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００を示す構成図である。
【０２１６】
ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００は、基本システムソフトウェア２１００によって管理される。
【０２１７】
行エントリ１６００１〜１６００３に登録されるＣＰＵ１０１０〜１０１１から列エントリ１６００４〜１６００６に登録されるメモリ１０１０〜１０１１への位置ポテンシャルを示している。位置ポテンシャルは、ＣＰＵ１０１０〜１０１１とメモリ１０３０〜１０６０の距離によって生じるアクセスの遅延を示す。例えば、ＣＰＵ０からメモリ０への位置ポテンシャルは０であり、ＣＰＵ０からメモリ０へのアクセスは遅延が発生しない。ＣＰＵ０からメモリｍ、及びＣＰＵ０からメモリｎへの位置ポテンシャルは、各々Ｄ０ｍ、Ｄ０ｎであることを示す。なお、このＣＰＵとメモリは、Ｎｕｍａシステムを構成する計算機０〜ｎ（１０００〜１００１）に備わる。
【０２１８】
ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００の内容は、計算機１０００〜１００１の起動時に、メモリ管理初期化プログラム２１１１によって設定される。なお、それぞれの位置ポテンシャルの値は、例えば、ファームウェア２０００のハードウェア構成テーブル２００１が通常、提供するＣＰＵ１０１０〜１０１１とメモリ１０３０〜１０６０との距離に比例した値である。すなわち、位置ポテンシャルが高いほど、メモリ１０３０〜１０６０はＣＰＵ１０１０〜１０１１と離れていて、ＣＰＵ１０１０〜１０１１からメモリ１０３０〜１０６０へのアクセスに発生する遅延が大きい。
【０２１９】
図１６Ｂは、本発明の第２の実施の形態のメモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０を示す構成図である。
【０２２０】
メモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０は、基本システムソフトウェア２１００によって管理され、計算機１０００〜１００１が備えるメモリ１０３０〜１０６０数の分のメモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０が存在する。メモリランク‐電力ポテンシャルテーブル１５１００は、メモリ０のメモリランク１６１０１と電力ポテンシャル１６１０２とを示すテーブルである。
【０２２１】
メモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０は、該当するメモリ１０３０〜１０６０のランクを示すメモリランク１６１０１と電力ポテンシャル１６１０２を有する。
【０２２２】
メモリランク‐電力ポテンシャルテーブ１５１００〜１５１１０の内容は、計算機１０００〜１００１の起動時に、メモリ管理初期化プログラム２１１１によって設定される。また、計算機１０００〜１００１の動作中には、メモリ管理プログラム２１２０によって更新される。なお、各電力ポテンシャル１６１０２の値は、例えば、ファームウェア２０００のメモリ電力モードテーブル２００５が提供する各電力モード５０００の消費電力値５１００に反比例した値である。すなわち、電力ポテンシャル１６１０２の値が高いほど、メモリランク１０３１〜１０６２が消費する電力は小さく、メモリランクを読み書き可能な活性状態にする遅延が大きい。従って、電力ポテンシャル１６１０２の値が高いほど、最初のＣＰＵ１０１０〜１０１１からメモリ１０３０〜１０６０へのアクセスに発生する遅延が大きい。また、メモリランク‐電力ポテンシャルテーブル１５１００は、該当するメモリ０（１０３０）のメモリランク０〜ｉ（１０３１〜１０３２）について電力ポテンシャルを管理する。
【０２２３】
図１６Ｃは、本発明の第１の実施の形態のメモリポテンシャルテーブル１５２００〜１５２１０を示す構成図である。
【０２２４】
メモリポテンシャルテーブル１５２００〜１５２１０は、基本システムソフトウェア２１００によって管理され、計算機１０００〜１００１が備えるＣＰＵ１０１０〜１０１１数の分のテーブルが存在する。
【０２２５】
メモリポテンシャルテーブル１５２００〜１５２１０は、該当するＣＰＵにおいて、行１６２０１〜１６２０３の各メモリと列１６００４〜１６００６の各メモリのメモリランクのメモリポテンシャルを示す。
【０２２６】
メモリポテンシャルテーブル１５２００〜１５２１０の内容は、計算機１０００〜１００１起動時に、メモリ管理初期化プログラム２１１１によって設定される。また、計算機１０００〜１００１の動作中には、メモリ管理プログラム２１２０によって更新される。
【０２２７】
なお、各メモリポテンシャルの値は、ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００とメモリランク‐電力ポテンシャルテーブル１５１００〜１５１１０とから算出する。具体的には、例えば、メモリポテンシャルの値は、ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００の各ＣＰＵ１０１０〜１０１１ごとに（１６００１〜１６００３）、計算機１０００〜１００１が備えるメモリに対する位置ポテンシャル（１６００４〜１６００６）に位置ポテンシャル係数（α）を乗じた値と各メモリの電力ポテンシャル（１６１０２）に電力ポテンシャル係数（β）を乗じた値の和である。なお、位置ポテンシャル係数（α）及び電力ポテンシャル係数（β）は、予め、それぞれデフォルト値に設定されている。管理者は、計算機１０００が備えるキーボード１１９０等の入力装置を用いてメモリ管理制御インタフェース２１１５から位置ポテンシャル係数（α）及び電力ポテンシャル係数（β）を設定又は変更できる。また、遠隔地にある計算機１６００からネットワーク１５００を通じて、メモリ管理制御インタフェース２１１５から位置ポテンシャル係数（α）及び電力ポテンシャル係数（β）を設定又は変更してもよい。
【０２２８】
図１７は、本発明の第２の実施の形態のメモリ初期化プログラム２１１１のフローチャートである。
【０２２９】
メモリ初期化プログラムは、計算機１０００〜１００１の起動時に、実行される（１７０００）。
【０２３０】
まず、メモリ管理初期化プログラム２１１１は、ＣＰＵ‐メモリ位置ポテンシャルテーブル１５０００を設定する（ステップ１７００１）。
【０２３１】
次に、メモリ管理初期化プログラム２１１１は、計算機１０００と計算機１００１が備える各メモリ１０３０〜１０６０ごとに、メモリランク‐電力ポテンシャルテーブル１７１００を設定する（ステップ１７００２）。
【０２３２】
ステップ１７００２の後、メモリ管理初期化プログラム２１１１は、計算機１０００と計算機１００１が備える各ＣＰＵ１０１０〜１０１１ごとに、メモリポテンシャルテーブル１５２００〜１５２１０を設定する（ステップ１７００３）。なお、各ポテンシャルテーブル（１５０００、１５１００〜１５１１０、１５２００〜１５２１０）のポテンシャル値の算出方法については、図１６で説明した方法と同一である。
【０２３３】
ステップ１７００２の後のステップ１７００４〜ステップ１７００７は、第１の実施形態で説明したステップ１００１０〜ステップ１００１２の処理と同一である。ステップ１７００７の後、メモリ管理初期化プログラム２１１１を終了する。
【０２３４】
メモリページフレーム割当管理プログラム２１１２は、例えば、メモリ管理プログラム２１１０等によって、メモリページフレームの割り当てを要求したソフトウェアが動作するＮｕｍａ計算機１０００〜１００１のＣＰＵ１０１０〜１０１１とメモリページフレーム数を指定されて、呼び出される。
【０２３５】
メモリ割当管理プログラム２１１２は、指定されたＣＰＵ１０１０〜１０１１に対応するメモリポテンシャルテーブル１５２００〜１５２１０を参照し、メモリポテンシャルの値が最小のメモリランクから優先して、指定されたメモリページフレームの数を満足するメモリページフレームを割り当てる。さらに、メモリ割当管理プログラム２１１２は、使用中メモリページフレーム管理リスト８０００と未使用メモリページフレーム管理リスト８１００とを更新する。
【０２３６】
位置ポテンシャル係数（α）と電力ポテンシャル係数（β）は管理者によって、変更可能であるので、位置ポテンシャル係数（α）と電力ポテンシャル係数（β）を変更することによって、位置ポテンシャルを優先してメモリページを割り当てる、又は電力ポテンシャルを優先してメモリページを割り当てることが選択できる。
【０２３７】
また、メモリポテンシャル値が最小のメモリランク、すなわちレイテンシの小さいメモリランクを優先するので、メモリのアクセス性能の低下を抑制できる。
【０２３８】
メモリページフレーム回収管理プログラム２１１３は、例えば、メモリ管理プログラム２１１０等によって、回収するメモリページフレーム数を指定されて、呼び出される。解放対象メモリページフレームは、ＬＲＵ管理リストである使用中メモリページフレーム管理リスト８０００のリスト最後尾から検索する。
【０２３９】
メモリランク電力管理プログラム２１１４は、例えば、周期的に実行され、メモリランク‐電力ポテンシャルテーブ１５１００〜１５１１０を更新する。その後、メモリランク電力管理プログラム２１１４は、メモリポテンシャルテーブル１５２００〜１５２１０を更新する。
【０２４０】
このように、第２の実施の形態を利用することによっても、特にＮｕｍａ計算機構成において、ＣＰＵ１０１０〜１０１１からメモリ１０３０〜１０６０へのアクセスする性能を維持しつつ、メモリが消費する電力を低減できる。
【図面の簡単な説明】
【０２４１】
【図１】本発明の第１の実施の形態のおける計算機システムの構成図である。
【図２】本発明の第１の実施の形態のファームウェア及び基本システムソフトウェアの構成図である。
【図３】本発明の第１の実施の形態のメモリ・アドレッシング・モード・テーブルの構成図である。
【図４】本発明の第１の実施の形態の電力ランク‐メモリランク対応管理テーブルの構成図である。
【図５】本発明の第１の実施の形態のメモリ電力モードテーブルの構成図である。
【図６】本発明の第１の実施の形態のメモリゾーン‐電力ランクゾーン状態管理テーブルの構成図である。
【図７】本発明の第１の実施の形態のメモリページフレーム管理テーブルの構成図である。
【図８】本発明の第１の実施の形態の使用中メモリページフレーム管理リスト、使用中メモリページフレーム管理リストヘッド、未使用メモリページフレーム管理リスト、及び未使用メモリページフレーム管理リストヘッドの構成図である。
【図９】本発明の第１の実施の形態の電力ランクゾーン‐解放候補ページテーブルの構成図である。
【図１０】本発明の第１の実施の形態のメモリ管理初期化プログラムのフローチャートである。
【図１１】本発明の第１の実施の形態のメモリページフレーム割当管理プログラムのフローチャートである。
【図１２Ａ】本発明の第１の実施形態のメモリランク電源管理プログラムのフローチャートである。
【図１２Ｂ】本発明の第１の実施の形態のメモリランク電源管理プログラムが周期的に実行される場合のメモリランク電源管理プログラムのフローチャートである。
【図１２Ｃ】本発明の第１の実施の形態のメモリランク電源管理プログラムが直接呼び出され実行される場合メモリランク電源管理プログラムのフローチャートである。
【図１３Ａ】本発明の第１の実施の形態の電力ランクゾーン先行活性処理１のフローチャートである。
【図１３Ｂ】本発明の第１の実施の形態の電力ランクゾーン先行活性処理２のフローチャートである。
【図１４】本発明の第１の実施の形態のメモリページフレーム回収管理プログラムのフローチャートである。
【図１５】本発明の第２の実施形態のファームウェア及び基本システムソフトウェアの構成図である。
【図１６Ａ】本発明の第２の実施の形態のＣＰＵ‐メモリ位置ポテンシャルテーブルを示す構成図である。
【図１６Ｂ】本発明の第２の実施の形態のメモリランク‐電力ポテンシャルテーブルを示す構成図である。
【図１６Ｃ】本発明の第２の実施の形態のメモリポテンシャルテーブルを示す構成図である。
【図１７】本発明の第２の実施の形態のメモリ初期化プログラムのフローチャートである。
【符号の説明】
【０２４２】
１０００  計算機０
１０１０  ＣＰＵ
１０２０  メモリコントローラ
１０３０〜１０６０  メモリ
１０３１〜１０３２  メモリランク
１０７０  チャネル
１０９０  ノードコントローラ
１１００  システムＲＯＭ
１１１０  ビデオアダプタ
１１２０  ネットワークインタフェース
１１３０  二次記憶装置インタフェース
１１４０  入力装置インタフェース
１１５０  システムバス
１１５０  ノード間バス
１１７０  ディスプレイ
１１８０  二次記憶装置
１１９０  キーボード
１２００  マウス
１２１０  ネットワーク
１２２０  計算機
【図１】
2007272573.tif 000003
【図２】
2007272573.tif 000004
【図３】
2007272573.tif 000005
【図４】
2007272573.tif 000006
【図５】
2007272573.tif 000007
【図６】
2007272573.tif 000008
【図７】
2007272573.tif 000009
【図８】
2007272573.tif 000010
【図９】
2007272573.tif 000011
【図１０】
2007272573.tif 000012
【図１１】
2007272573.tif 000013
【図１２Ａ】
2007272573.tif 000014
【図１２Ｂ】
2007272573.tif 000015
【図１２Ｃ】
2007272573.tif 000016
【図１３Ａ】
2007272573.tif 000017
【図１３Ｂ】
2007272573.tif 000018
【図１４】
2007272573.tif 000019
【図１５】
2007272573.tif 000020
【図１６Ａ】
2007272573.tif 000021
【図１６Ｂ】
2007272573.tif 000022
【図１６Ｃ】
2007272573.tif 000023
【図１７】
2007272573.tif 000024