(57)【要約】【課題】メモリ領域を複数のバンクに分割し省電力制御する計算機システムにおいて、メモリバンクの最適化処理のオーバーヘッドを低減することができるメモリ電源管理装置を提供すること。【解決手段】メモリ管理部１３１と、メモリ転送管理部１３２と、メモリ電源管理部１３３と、仮想ＭＭＵ１３４、仮想計算機制御部１３５と、仮想計算機管理情報記憶部１３６とを備え、メモリ管理部１３１は、仮想計算機の切り替えタイミングで、停止する仮想計算機に割り当てられているメモリ領域のうち、割り当て優先度の低いメモリバンクにあるメモリ領域の転送を決定し、メモリ転送管理部１３２が転送処理を実施し、メモリ電源管理部１３３とメモリ電源制御部１６が、転送の結果未使用となったメモリバンクの電力供給を遮断する。【選択図】図２
2008262451.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリバンクから構成されるメモリと複数の仮想計算機を備えた計算機システムのメモリ電源管理を行うメモリ電源管理装置であって、
前記メモリバンク毎に設定した優先度を優先度情報として記憶するメモリ管理情報記憶手段と、
停止した前記仮想計算機に割り当てられているメモリ領域を決定し、メモリバンク間のデータ転送を行うか否かの判断を行う転送判断手段と、
前記転送判断手段がデータ転送を行うと判断した場合、前記メモリ管理情報記憶手段に記憶された情報を用いて、転送先メモリバンクを決定する転送決定手段と、
前記転送決定手段が決定した転送先メモリバンクへのデータ転送を制御するメモリ転送手段と、
メモリ領域の割り当ておよび解放の状況に基づいて、全メモリ領域が未使用の状態にあるメモリバンクを決定し、前記メモリバンクへの節電制御を行うメモリ電源管理手段とを具備することを特徴とするメモリ電源管理装置。
【請求項２】
前記転送判断手段は、前記仮想計算機の切り替えを検出した際に、メモリバンク間のデータ転送を行うか否かの判断を行い、
前記転送決定手段は、優先度の低いメモリバンクから優先度の高いメモリバンクへの転送を決定し、
前記メモリ転送手段は、前記仮想計算機が停止している間に、データ転送を行うことを特徴とする請求項１記載のメモリ電源管理装置。
【請求項３】
メモリバンク毎のメモリ領域の割り当ておよび解放の状況に基づいて、前記優先度情報を設定する優先度設定手段を具備することを特徴とする請求項１に記載のメモリ電源管理装置。
【請求項４】
前記メモリ管理情報記憶手段は、割り当て済みのメモリ領域の利用頻度を利用頻度情報としてメモリ領域毎に記憶し、
前記優先度設定手段は、前記利用頻度情報を用いて、前記優先度情報の更新を行うことを特徴とする請求項１に記載のメモリ電源管理装置。
【請求項５】
前記転送決定手段は、前記利用頻度情報に基づいて、優先度の高いメモリバンクに存在し、前記利用頻度の低いメモリ領域を決定し、前記決定したメモリ領域に存在するデータを、優先度の低いメモリバンクへの転送を決定することを特徴とする請求項４に記載のメモリ電源管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムの電力管理技術に関し、特に、複数の仮想計算機を備えた計算機システムにおけるメモリ電源管理装置及びメモリ電源管理方法に関するものである。
【背景技術】
【０００２】
一般に計算機システムでは、実行中のプログラムおよびそのプログラムが読書きするデータは、主記憶と呼ばれる記憶装置に格納される。この主記憶は、揮発性の半導体メモリ素子で構成されており、その内容（書き込まれたデータ）保持のためには、常に電源を供給する必要がある。
【０００３】
このような揮発性メモリの省電力化の技術として、メモリ領域を複数のバンクに分割し、現在のメモリの使用状態を調べ、未使用メモリバンクの電源をオフ、あるいはＤＲＡＭのリフレッシュを停止することで、内容保持が必要なバンクだけ電源オンする方法があった（例えば、特許文献１参照）。
【０００４】
また、仮想アドレスを優先度の高い上位メモリバンクから順に割り当てることで、上記のデータの点在を回避する方法や、優先度の低い下位メモリバンクに割り当てられているデータを、計算機システムが省電力モードへ移行するときに、一括して上位メモリバンクの空き領域に転送することでデータの点在を解消する方法があった（例えば、特許文献２参照）。
【０００５】
また、オペレーティングシステムにガベージコレクション部を搭載し、メモリ領域に点在する空き領域を一つの連続した空き領域にまとめ、空き領域に対応するメモリバンクを電源オフする方法があった（例えば、特許文献３参照）。
【特許文献１】特開平９−２１２４１６号公報
【特許文献２】特開２００５−１９６３４３号公報
【特許文献３】特開２０００−１７２３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記従来の技術では、メモリバンクの電源オフを可能とする空き領域を生成する際、データの転送処理にともなうオーバーヘッド（ＣＰＵ時間、消費電力）がかかるという課題を有していた。特に、計算機システムの高機能・高性能化とともに、搭載されるメモリ容量が増大の傾向にあり、同時に計算機システム上で動作するアプリケーションの機能を実現するために必要となるメモリ容量も増加の傾向にあることから、転送対象のデータ容量も増えることになり、転送処理にともなうオーバーヘッドも増大することになる。その結果、オペレーティングシステムやアプリケーションの動作速度などの性能を低下させるという問題が生じていた。
【０００７】
本発明は、前記従来の課題を解決するもので、メモリ領域を複数のバンクに分割し省電力制御する計算機システムにおいて、メモリバンクの最適化処理のオーバーヘッドを低減することができるメモリ電源管理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
前記従来の課題を解決するために、本発明のメモリ電源管理装置は、複数のメモリバンクから構成されるメモリと複数の仮想計算機を備えた計算機システムのメモリ電源管理を行うメモリ電源管理装置であって、前記メモリバンク毎に設定した優先度を優先度情報として記憶するメモリ管理情報記憶手段と、停止した前記仮想計算機に割り当てられているメモリ領域を決定し、メモリバンク間のデータ転送を行うか否かの判断を行う転送判断手段と、前記転送判断手段がデータ転送を行うと判断した場合、前記メモリ管理情報記憶手段に記憶された情報を用いて、転送先メモリバンクを決定する転送決定手段と、前記転送決定手段が決定した転送先メモリバンクへのデータ転送を制御するメモリ転送手段と、メモリ領域の割り当ておよび解放の状況に基づいて、全メモリ領域が未使用の状態にあるメモリバンクを決定し、前記メモリバンクへの節電制御を行うメモリ電源管理手段とを具備することを特徴とする。
【０００９】
本構成によって、メモリ領域を複数のバンクに分割し省電力制御する計算機システムにおいて、仮想計算機の切り替え時にメモリ転送処理を実行することで、メモリバンクの最適化処理のオーバーヘッドを低減することができる。
【発明の効果】
【００１０】
本発明のメモリ電源管理装置によれば、オペレーティングシステムやアプリケーションが使用中のメモリを再配置する処理機構を簡略化し、メモリバンクの最適化処理のオーバーヘッドを低減することが可能となる。このオーバーヘッドの低減により、オペレーティングシステムやアプリケーションの動作性能の低下を抑えたメモリバンクの最適化を行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１２】
図１は、本発明の実施の形態におけるメモリ電源管理装置を備えた計算機システム１００の構成図である。
【００１３】
図１において、計算機システム１００は、内部バス１０に接続されたＣＰＵ１１（中央演算装置）と、ＭＭＵ１２（メモリマネージメントユニット）と、周辺モジュール１３と、メモリ１４、メモリ転送部１５、メモリ電源制御部１６を備えている。
【００１４】
ＣＰＵ１１は、メモリ１４に格納されているプログラムを読み出し実行する。
【００１５】
ＭＭＵ１２は、ＣＰＵ１１で処理するプログラムおよびデータを論理アドレスから物理アドレスへ変換するメモリマネジメントユニットである。
【００１６】
周辺モジュール１３は、計算機システム１００の機能に必要となる処理モジュールであり、例えば、入力モジュールや出力モジュール、通信モジュール、カメラモジュールなどがある。
【００１７】
メモリ１４は、ＭＭＵ１２で変換された物理アドレスに、プログラムおよびデータを記憶する。また、メモリ１４は、独立して電力供給を制御可能な複数個のメモリバンク（１２１〜１２４）から構成されている。
【００１８】
なお、ここでは、メモリ１４は、ＲＡＭ（ランダムアクセスメモリ）の単一の構成を想定しているが、十分な機能および容量があれば、フラッシュメモリや、ＲＯＭ（リードオンリーメモリー）などの異なる種類のメモリの組合せであってもよい。また、メモリバンク数についても、二つ以上であればいくつであっても良い。
【００１９】
メモリ転送部１５は、物理的な記憶装置であるメモリバンク１２１乃至１２４に対して、データ転送を実行するハードウェアエンジンである。効率的なメモリ転送を実現するために、メモリ転送部１５は、離散しているメモリブロックに対して、まとめて連続転送が行えるスキャッタ・ギャザーであることが望ましい。なお、計算機システム１００が複数のＣＰＵを持つ構成であるときは、メモリ転送部１５を、汎用ＣＰＵを用いて実現することも可能である。
【００２０】
メモリ電源制御部１６は、計算機システム１００全体の電力を制御すべく構成された電子回路であり、その一機能として、メモリ１４の各メモリバンク１２１乃至１２４への電力の供給や遮断の切替え等のメモリバンクの節電制御を行う。
【００２１】
図２は、本発明の実施の形態における計算機システム１００のメモリ電源管理に関する機能ブロックを示す図である。
【００２２】
計算機システム１００は、複数の仮想計算機（１０２、１０３）を備えており、ハイパーバイザー１０１が、仮想計算機（１０２、１０３）の管理を行っている。
【００２３】
仮想計算機（１０２、１０３）には、ＣＰＵ１１上で動作するＯＳ（オペレーティングシステム）（１１０、１１１）が存在している。また、ＯＳ１１０は、タスク（１１２、１１３）の実行を管理している。同様に、ＯＳ１１１は、タスク（１１４、１１５、１１６）の実行を管理している。また、これらのタスク（１１２〜１１６）が動作する際に必要となるデータは、メモリ１４に格納される。
【００２４】
なお、図２および以降の本発明の実施の形態では、二つの仮想計算機が存在する例のみを示しているが、三つ以上の仮想計算機が存在する構成を用いても良い。また、タスク数、オペレーティングシステム数、および、タスクとオペレーティングシステムの関係は、図２で示した例に一致しなくても良い。
【００２５】
ハイパーバイザー１０１は、前述した通り複数の仮想計算機（１０２、１０３）の管理を行う機能を有しており、メモリ管理部１３１と、メモリ転送管理部１３２と、メモリ電源管理部１３３と、仮想ＭＭＵ１３４と、仮想計算機制御部１３５と、仮想計算機管理情報記憶部１３６とを備えている。
【００２６】
メモリ管理部１３１は、仮想ＭＭＵ１３４とともに、物理アドレスと論理アドレスの対応を管理し、仮想計算機（１０２、１０３）上のＯＳ（１１０、１１１）からの要求に従い、メモリ領域の割り当てと解放を制御する機能を有している。また、メモリバンク毎の優先度を設定して管理する。また、メモリ転送管理部１３２、メモリ電源管理部１３３にメモリ領域転送の指示およびメモリ電源状態の変更の指示を行う。
【００２７】
メモリ転送管理部１３２は、メモリバンク１２１乃至１２４の、バンク内およびバンク間のデータ転送を制御する。メモリ管理部１３１から転送の指示を受けたメモリ転送管理部１３２は、その転送指示を、データ転送を実行するハードウェアモジュールであるメモリ転送部１５の制御シーケンスに変換し、メモリ転送部１５を制御してデータ転送を実行する。
【００２８】
メモリ電源管理部１３３は、メモリバンク毎の割り当て状況から、未使用メモリバンクを決定し、そのメモリバンクに対して節電を行うよう、メモリ電源制御部１６にメモリバンクへの電力の遮断等の節電制御を指示する。また、メモリ管理部１３１が、仮想計算機に対して割り当てるメモリ領域に不足が生じた時、節電あるいは電力遮断状態にある未使用メモリバンクが存在するならば、そのメモリバンクの活性化をメモリ電源制御部１６に指示する。更に、通常モードから省電力モードへの移行や、省電力モードから通常モードへの移行といった、メモリ電源状態の変更の指示を、メモリ管理部１３１から受け取り、メモリ電源制御部１６に対して、各メモリバンクの活性化や電力遮断などの指示を行う。
【００２９】
メモリ転送部１５によるスキャッタ・ギャザーを効率的に行うために、ハイパーバイザー１０１は、仮想計算機１０２乃至１０３に対して、メモリバンク１２１乃至１２４の物理的なメモリマップ（物理アドレス空間）とは独立した論理的なメモリマップ（一次論理アドレス空間）を提供する。仮想ＭＭＵ１３４は、この物理アドレス空間と一次論理アドレス空間との関係を示すマップと、仮想計算機１０２乃至１０３上の論理アドレスである二次論理アドレス空間と一次論理アドレス空間との関係を示すマップを管理しており、ＭＭＵ１２を制御して、物理アドレス空間と一次論理アドレス空間とのアドレス変換を実現するとともに、メモリ管理部１３１を通じて仮想計算機に対して一次論理アドレス空間と二次論理アドレス空間のアドレス変換の機能を提供する。
【００３０】
仮想計算機制御部１３５は、仮想計算機１０２と仮想計算機１０３の切り替え制御を行う。仮想計算機１０２と仮想計算機１０３は、停止中状態（Ｓｌｅｅｐ）と、実行中状態（Ａｃｔｉｖｅ）があり、実行中状態の仮想計算機（１０２または１０３）のＯＳ（１１０または１１１）が動作し、計算機システム１００における各処理を実行することになる。つまり、ＣＰＵ１１上でどちらか一方の仮想計算機（１０２または１０３）のみが動作していることになる。
【００３１】
仮想計算機管理情報記憶部１３６は、仮想計算機制御部１３５が制御する対象の仮想計算機（１０２、１０３）の状態を記憶している。仮想計算機制御部１３５が、仮想計算機の切り替えを行った際に、仮想計算機管理情報の更新を行う。また、メモリ管理部１３１は、転送対象のメモリ領域を決定する際に、格納されている仮想計算機管理情報を参照して、停止中状態の仮想計算機を判断する。
【００３２】
次に、メモリ管理部１３１の詳細を説明する。
【００３３】
メモリ管理部１３１は、メモリ制御部１４１と、転送判断部１４２と、転送決定部１４３と、優先度設定部１４４と、メモリ管理情報記憶部１４５とを備えている。また、メモリ管理情報記憶部１４５は、メモリ領域割り当て優先度管理テーブル１５１と、割り当て済みメモリ領域管理テーブル１５２と、空きメモリ領域管理テーブル１５３を有している。これら各テーブルの詳細については、後に図面を用いて説明する。
【００３４】
メモリ制御部１４１は、メモリ管理部１３１全体の制御と、メモリ領域の割り当て及び解放処理を行う。仮想計算機（１０２、１０３）上のＯＳ（１１０、１１１）からのメモリ割り当て要求を受け取り、メモリバンクの割り当て優先度およびメモリバンクのメモリ領域割り当て状態から、適切なメモリ領域を決定し、要求した仮想計算機にメモリ領域の割り当てを実行する。また、割り当ての実行時に、割り当て済みメモリ領域管理テーブル１５２と空きメモリ領域管理テーブル１５３の更新を行う。なお、この適切なメモリ領域とは、割り当て優先度が高くて空き容量がある領域であるため、メモリ領域割り当て優先度管理テーブル１５１と空きメモリ領域管理テーブル１５３を用いて最適なメモリ領域を決定する。さらに、仮想計算機（１０２、１０３）上のＯＳ（１１０、１１１）からのメモリ解放要求を受け取り、要求されたメモリ領域の解放を実行する。また、解放の実行時に、割り当て済みメモリ領域管理テーブル１５２と空きメモリ領域管理テーブル１５３の更新を行う。
【００３５】
転送判断部１４２は、メモリバンク間のデータ転送を行うか否かの判断を行い、結果をメモリ制御部１４１に通知する。この判断処理は、（１）仮想計算機制御部１３５が仮想計算機の切り替えを行った際に、通知を受け取って実施する。（２）仮想計算機管理情報記憶部１３６に格納された情報を定期的に監視することで実施する。（３）メモリ管理情報記憶部１４５に格納された情報を定期的に監視することで実施する。などが可能である。（１）の場合、転送判断部１４２は、仮想計算機制御部１３５からメモリ制御部１４１を介して切り替え通知を受け取ることで、仮想計算機の切り替えを検出し、切り替え通知の内容に基づいて停止した仮想計算機を決定する。次に、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２を用いて、下位メモリバンクにある割り当て済みメモリ領域のうち、その停止した仮想計算機に割り当てられているメモリ領域の有無を決定する。対象のメモリ領域がある場合、データ転送を行うと判断し、結果をメモリ制御部１４１に通知する。
【００３６】
（２）の場合、転送判断部１４２は、仮想計算機管理情報記憶部１３６に格納された情報を定期的に監視し、仮想計算機の切り替えを検出した際に、停止した仮想計算機を決定する。次に、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２を用いて、下位メモリバンクにある割り当て済みメモリ領域のうち、その停止した仮想計算機に割り当てられているメモリ領域の有無を決定する。対象のメモリ領域がある場合、データ転送を行うと判断し、結果をメモリ制御部１４１に通知する。（３）の場合、転送判断部１４３は、割り当て済みメモリ領域管理テーブル１５２に格納された情報を定期的に監視し、利用頻度が低く、かつ、上位メモリバンクにある割り当て済みのメモリ領域のうち、停止中の仮想計算機に割り当てられているメモリ領域の有無を決定する。対象のメモリ領域がある場合、データ転送を行うと判断し、結果をメモリ制御部１４１に通知する。
【００３７】
転送決定部１４３は、メモリ制御部１４１から通知を受け、メモリ領域割り当て優先度管理テーブル１５１に格納された情報を用いて、転送先メモリバンクを決定する。この決定処理は、より具体的には、転送先アドレス及びサイズの決定を行う。転送決定部１４３は、メモリ制御部１４１を介してメモリ転送管理部１３２に決定した転送先アドレス及びサイズを通知し、転送を指示する。なお、転送判断部１４２で説明した（１）と（２）の場合は、転送先メモリバンクとして、上位メモリバンクを決定し、（３）の場合は、転送先メモリバンクとして下位メモリバンクを決定する。
【００３８】
優先度設定部１４４は、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２とを用いて、メモリバンクの割り当て優先度と、そのメモリバンクが保持している全メモリ領域の利用頻度情報およびメモリ領域の割り当て情報に基づき、メモリバンク毎に利用状況に即した優先度が設定されているかを管理し、必要に応じて優先度を設定し、最適な優先度に更新する。これにより、例えば割り当て優先度は高いが、バンク内の割り当て済みメモリ領域の多くは利用頻度の低い領域であるようなメモリバンクがあるとき、その利用頻度の低いメモリ領域をすべて、下位メモリバンクへ退避するよりも、メモリバンクそのものの優先度を落とし、利用頻度の高い領域を上位バンクへ転送するといった転送の最適化を可能とする。
【００３９】
なお、図２の仮想計算機（１０２、１０３）およびハイパーバイザー１０１については、ソフトウェアで実現されるとしたが、電子回路や集積回路等のハードウェアで実現してもよい。
【００４０】
以上により、仮想計算機の切り替えタイミングで、メモリ転送処理を実施することが可能となり、停止する仮想計算機のメモリ領域に対する転送処理であることから、転送するデータの種類に関わらず任意のメモリバンク間でデータ転送が可能となり、また、オーバーヘッドの低減が可能となる。このオーバーヘッドの低減により、動作中の仮想計算機上のオペレーティングシステムやアプリケーションの動作に影響を与えることなく、定常的にメモリバンクを最適化することが可能となる。更に、下位メモリバンクのメモリ領域の消費が抑えられるため、電力の供給を必要とするメモリバンクの数あるいは容量を低減することが可能である。
【００４１】
図３は、本発明の実施の形態におけるメモリ管理情報記憶部１４５に格納した各テーブルの一例を示した図である。また、図４は、図３で示した各テーブルと物理アドレス空間との関係を示している。
【００４２】
メモリ領域割り当て優先度管理テーブル１５１は、メモリバンク（１２１〜１２４）毎のメモリ領域の割り当て優先度を管理する。この優先度は、優先度設定部１４４により設定される。図３では、メモリバンク識別情報と、メモリバンクの開始アドレス情報と、メモリバンクのサイズ情報、割り当て優先度情報を組としてテーブル管理する例を示している。なお、終了アドレス情報など他の情報を有していてもよいし、各情報を格納したアドレスで管理するなど他のフォーマットでもよい。
【００４３】
割り当て済みメモリ領域管理テーブル１５２は、仮想計算機に対して割り当て済みのメモリ領域を管理する。図３では、メモリ領域識別情報、メモリ領域の開始アドレス情報、メモリ領域のサイズ情報、メモリ領域を使用している割り当て仮想計算機識別情報、利用頻度情報を組としてテーブル管理する例を示している。利用頻度情報は、仮想計算機がハイパーバイザー１０１を通して、任意に設定しても良いし、ハイパーバイザー１０１あるいはメモリ管理部１３１が仮想計算機のメモリアクセスを監視し、更新する実装でも良い。なお、終了アドレス情報など他の情報を有していてもよいし、各情報を格納したアドレスで管理するなど他のフォーマットでもよい。
【００４４】
空きメモリ領域管理テーブル１５３は、割り当てしていない（使用していない）空きメモリ領域を管理する。図３では、メモリ領域識別情報、メモリ領域の開始アドレス情報、メモリ領域のサイズ情報を組としてテーブル管理する例を示している。なお、終了アドレス情報など他の情報を有していてもよいし、各情報を格納したアドレスで管理するなど他のフォーマットでもよい。
【００４５】
図５から図７を参照して、本発明の実施の形態における計算機システムのメモリ電源管理手順を説明する。
【００４６】
図５は、仮想計算機を切り替えた直後に実施するメモリ移動処理の開始処理を説明するためのフローチャートである。ここでは、仮想計算機制御部１３５が、メモリ管理部１３１に仮想計算機の切り替えを通知し、処理を開始するものとする。前述した通り、仮想計算機管理情報記憶部１３６に格納された情報を定期的に監視することで切り替えを検出してもよい。
【００４７】
転送判断部１４２は、仮想計算機制御部１３５からの切り替え通知をメモリ制御部１４１を介して受け取り、切り替え通知の内容に基づいて停止した仮想計算機を決定する（ステップＡ１）。なお、通知を受け取った後、仮想計算機管理情報記憶部１３６を参照することで、停止した仮想計算機を決定する実装でもよい。
【００４８】
転送判断部１４２は、使用中メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２を用いて、下位メモリバンクにある割り当て済みメモリ領域のうち、ステップＡ１で決定した停止した仮想計算機に割り当てられているメモリ領域の有無を決定する（ステップＡ２）。対象のメモリ領域がある場合（ステップＡ２がＹＥＳ）、転送判断部１４２は、データ転送を行うと判断し、結果をメモリ制御部１４１に通知する。一方、対象のメモリ領域がない場合（ステップＡ２がＮＯ）、処理を終了する。
【００４９】
転送決定部１４３は、メモリ制御部１４１から通知を受け、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２に格納された情報を用いて、転送先メモリバンクを決定する（ステップＡ３）。この決定処理は、より具体的には、転送先アドレス及びサイズの決定を行う。
【００５０】
転送決定部１４３は、メモリ制御部１４１を介して、決定した転送先アドレス及びサイズをメモリ転送管理部１３２に通知し、メモリ領域転送を指示する（ステップＡ４）。
【００５１】
メモリ転送管理部１３２は、メモリ転送部１５に転送先のアドレスとサイズを設定し、転送の開始を指示する（ステップＡ５）。転送の開始の指示を受けたメモリ転送部１５は、転送を開始する（ステップＡ６）。転送はバックグラウンドで実行されるため、完了待ちの処理は不要となり、ステップＡ７で、ハイパーバイザー１０１に制御を戻し、仮想計算機制御部１３５は、次に実行すべき仮想計算機を決定し、その仮想計算機の実行を再開する。
【００５２】
図６は、図５で開始したメモリ移動処理の終了処理を説明するためのフローチャートである。ここでは、仮想計算機制御部１３５が、メモリ転送処理の完了を通知する割り込みを受け取り、メモリ管理部１３１に転送完了を通知し、処理を開始するものとする。
【００５３】
メモリ管理部１３１は、仮想計算機制御部１３５から転送完了通知を受け取り、仮想ＭＭＵ１３４にアドレス変換マップの更新を指示する（ステップＢ１）。
【００５４】
仮想ＭＭＵ１３４は、図５で開始したメモリ転送処理により、転送対象のデータが格納されたメモリ領域の物理アドレスが変更されるため、ＭＭＵ１２のアドレス変換記述子を更新し、転送対象となったメモリ領域の、仮想計算機に対して割り当てている一次アドレスと、転送後のメモリ領域の物理アドレスの関連付けを修正する（ステップＢ２）。
【００５５】
メモリ管理部１３１（メモリ制御部１４１）は、仮想ＭＭＵ１３４による更新処理の終了後、割り当て済みメモリ領域管理テーブル１５２と空きメモリ領域管理テーブル１５３を更新することで、転送元のメモリバンクから、転送の完了したデータが格納されていたメモリ領域を解放する（ステップＢ３）。
【００５６】
メモリ制御部１４１は、メモリ領域割り当て優先度管理テーブル１５と空きメモリ領域管理テーブル１５３を参照し、転送元のメモリ領域が格納されていたメモリバンクのメモリ領域の割り当て状態を調べ、すべてのメモリ領域が解放され、未使用状態か否かを検査する（ステップＢ４）。未使用状態になっているならば（ステップＢ４がＹＥＳ）、メモリ管理部１３１（メモリ制御部１４１）は、メモリ電源管理部１３３に指示することで、未使用状態のメモリバンクの電源を遮断する等の省電力制御を実行する（ステップＢ５）。
【００５７】
最後に、仮想計算機制御部１３５は、実行優先度のもっとも高い仮想計算機の実行を再開する（ステップＢ６）。
【００５８】
以上により、例えば、仮想計算機１０２が動作中で仮想計算機１０３が停止中である場合に、仮想計算機１０３での処理実行が必要となり、仮想計算機の切り替えが発生したタイミングで、動作中から停止中に状態変化する仮想計算機１０２が使用しているメモリ領域の移動処理を開始することが可能となる。これにより、実際の移動処理は、バックグラウンドで、メモリ転送部１５によるハード処理により行われることになり、仮想計算機１０３でのアプリケーションの動作速度などの性能の低下を低減することが可能となる。また、定常的にメモリバンクの使用状態を最適に保つことになり、省電力モード移行時に下位メモリバンクから上位メモリバンクへ一括して転送するデータの総量の削減も意味するため、この転送の処理時間が短縮される。省電力モード移行時の処理時間の短縮は、システムのスリープ時間の延長であるため、計算機システム全体の消費電力の効果的な削減が可能となり、携帯情報端末などに代表される携帯情報端末において連続使用時間の延長や、連続待ち受け時間の延長、および電池容量の削減などが可能となる。
【００５９】
図７および図８は、計算機システムが省電力モードに移行する際のメモリ移動処理手順を説明するためのフローチャートである。ここでは、ハイパーバイザー１０１への割り込みを仮想計算機制御部１３５が受け取り、割り込み要因を判断し、メモリ管理部１３１に省電力モードへの移行を通知するか、または、仮想計算機制御部１３５が仮想計算機上のタスクの実行状態を監視し、省電力モードへの移行可否を判断し、メモリ管理部１３１に省電力モードへの移行を通知し、処理を開始するものとする。なお、省電力モードへの移行は、動作中の仮想計算機からの通知を受け取ることで、省電力モードへの移行を検出してもよい。また、ハード的な切り替えスイッチとして省電力モードも変更を行ってもよいとする。
【００６０】
メモリ管理部１３１（メモリ制御部１４１）は、仮想計算機制御部１３５から省電力モードへの移行の通知を受けると、優先度設定部１４４に優先度の再設定を要求する。優先度設定部１４４は、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２とを用いて、メモリバンクの割り当て優先度と、そのメモリバンクが保持している全メモリ領域の利用頻度情報およびメモリ領域の割り当て情報に基づき、メモリバンク毎に利用状況に即した最適な優先度に更新する（ステップＣ１）。具体的には、割り当て優先度は高いが、バンク内の割り当て済みメモリ領域の多くは利用頻度の低い領域であるようなメモリバンクに対し、メモリバンクの優先度を落とす処理を行う。つまり、その利用頻度の低いメモリ領域のすべてを、下位メモリバンクへ退避するよりも、メモリバンクそのものの優先度を落とし、利用頻度の高い領域を上位バンクへ転送する方が、転送する対象のサイズが小さくてすみ、転送処理時間を短くすることが可能となる。また、優先度設定部１４４は、優先度の変更が発生した場合、メモリ領域割り当て優先度管理テーブル１５１が格納する割り当て優先度情報の更新を行う。
【００６１】
優先度設定部１４４は、優先度を更新した結果を、メモリ制御部１４１に通知する。メモリ制御部１４１は、受け取った結果を用いて、優先度に変更があったか否かを判定する（ステップＣ２）。なお、ここでは、優先度設定部１４４から結果を受け取るとしたが、メモリ領域割り当て優先度テーブル１５１に更新情報を追加し、優先度設定部１４４が変更したメモリバンクに対する更新情報をＯＮし、メモリ制御部１４１が、メモリ領域割り当て優先度テーブル１５１の更新情報がＯＮのメモリバンクの有無を判定してもよい。
【００６２】
優先度に変更があった場合（ステップＣ２がＹＥＳ）、転送決定部１４３は、メモリ制御部１４１から通知を受け、メモリ領域割り当て優先度管理テーブル１５１と割り当て済みメモリ領域管理テーブル１５２に格納された情報を用いて、転送先メモリバンクを決定する（ステップＣ３）。この決定処理は、より具体的には、最下位のメモリバンクから順に、使用中のメモリ領域を上位のメモリバンクに転送するための、転送先アドレス及びサイズの決定を行う。
【００６３】
転送決定部１４３は、メモリ制御部１４１を介して、決定した転送先アドレス及びサイズをメモリ転送管理部１３２に通知し、メモリ領域転送を指示する（ステップＣ４）。
【００６４】
メモリ転送管理部１３２は、メモリ転送部１５に転送先のアドレスとサイズを設定し、転送の開始を指示する（ステップＣ５）。転送の開始の指示を受けたメモリ転送部１５は、転送を開始する（ステップＣ６）。これにより、最下位のメモリバンクから順に、使用中のメモリ領域を上位のメモリバンクへの転送を実行することになる。
【００６５】
転送はバックグラウンドで実行されるため、完了待ちの処理は不要となり、ステップＣ1から処理を繰り返す。
【００６６】
一方、優先度に変更がなかった場合（ステップＣ２がＮＯ）、つまり、全メモリバンクの優先度が決定して転送を開始した後、メモリ管理部１３１は、仮想計算機制御部１３５から転送完了通知を受け取り、仮想ＭＭＵ１３４にアドレス変換マップの更新を指示する（ステップＣ７）。
【００６７】
仮想ＭＭＵ１３４は、ＭＭＵ１２のアドレス変換記述子を更新し、転送対象となったメモリ領域の、仮想計算機に対して割り当てている一次アドレスと、転送後のメモリ領域の物理アドレスの関連付けを修正する（ステップＣ８）。
【００６８】
メモリ管理部１３１（メモリ制御部１４１）は、仮想ＭＭＵ１３４による更新処理の終了後、割り当て済みメモリ領域管理テーブル１５２と空きメモリ領域管理テーブル１５３を更新することで、転送元のメモリバンクから、転送の完了したデータが格納されていたメモリ領域を解放する（ステップＣ９）。
【００６９】
メモリ制御部１４１は、メモリ領域割り当て優先度管理テーブル１５と空きメモリ領域管理テーブル１５３を参照し、各メモリバンクのメモリ領域の割り当て状態を調べ、すべてのメモリ領域が解放され、未使用状態のメモリバンクの有無を判定する（ステップＣ１０）。未使用状態のメモリバンクがある場合（ステップＣ１０がＹＥＳ）、メモリ管理部１３１（メモリ制御部１４１）は、メモリ電源管理部１３３に指示することで、未使用状態のメモリバンクの電力供給を遮断する（ステップＣ１１）。
【００７０】
最後に、仮想計算機制御部１３５は、残りのスリープ遷移処理を実行してシステムをスリープ状態に遷移する（ステップＣ１２）。
【００７１】
以上により、メモリバンク毎に利用状況に即した優先度が設定されているかを管理し、必要に応じて優先度を設定し、最適な優先度に更新することが可能となる。これにより、例えば割り当て優先度は高いが、バンク内の割り当て済みメモリ領域の多くは利用頻度の低い領域であるようなメモリバンクあるとき、その利用頻度の低いメモリ領域をすべて、下位メモリバンクへ退避するよりも、メモリバンクそのものの優先度を落とし、利用頻度の高い領域を上位バンクへ転送するといった転送の最適化を可能とする。
【００７２】
図９は、本発明の実施の形態における仮想ＭＭＵ１３４のアドレス変換に関するアドレス空間と変換マップの一例を示している。メモリバンク（１２１〜１２４）の物理的なメモリマップ（物理アドレス空間）と、ＭＭＵ１２が管理する論理的なメモリマップ（一次論理アドレス空間）と、仮想ＭＭＵ１３４が管理する仮想計算機（１０２、１０３）上の論理アドレスである二次論理アドレス空間を用いて、メモリ上のデータ制御を行う。
【００７３】
ハイパーバイザー１０１は、ＭＭＵ１２を制御し、仮想計算機用変換テーブル（２１１〜２１２）の内容を更新することで、一次アドレス変換マップを任意に変更することができる。仮想計算機（１０２〜１０３）上のオペレーティングシステム（１１０〜１１１）は、仮想ＭＭＵ１３４を制御し、仮想計算機用変換テーブル（２２１〜２２２）の内容を更新することで、二次アドレス変換マップを任意に変更することができる。
【００７４】
また、オペレーティングシステム（１１０〜１１１）から見た仮想ＭＭＵ１３４、および、一次論理アドレス空間と二次論理アドレス空間の関係は、一般的な計算機におけるＭＭＵ、および、物理アドレス空間と論理アドレス空間の関係に等しいため、仮想計算機上のタスク（１１２〜１１６）およびＯＳ（１１０〜１１１）は、一次論理アドレスを物理アドレス、二次論理アドレスを論理アドレスに置き換えて実行される。
【００７５】
したがって、これらの二段階のアドレス変換マップにより、メモリバンク（１２１〜１２４）の物理アドレス空間と、仮想計算機上のタスク（１１２〜１１６）が実行される論理アドレス空間は独立した関係となるため、メモリ領域を転送する際の物理アドレスの変更は、一次論理アドレス変換マップの変更のみで完結し、二次論理アドレス変換マップの変更は必要としない。ゆえに、仮想計算機上で実行されているＯＳやアプリケーションプログラムの実行に影響を与えることなく、メモリ転送などの物理アドレスの変更処理を実行することができる。
【００７６】
以下、携帯電話やデジタルカメラ、ＰＤＡ、携帯音楽プレイヤーに代表される携帯情報端末の計算機システムにおけるメモリ制御を一例として説明する。
【００７７】
近年、携帯情報端末は、高機能・高性能化が進んでおり、搭載されるメモリ容量は増大の傾向にある。また、高機能・高性能化の実現には、複数の大規模なアプリケーションプログラムの起動が必要とされており、仮想アドレス空間でメモリを管理する高機能なオペレーティングシステムによるアプリケーションプログラムの管理が必須となっている。このような携帯情報端末の計算機システムでは、アプリケーションプログラムの機能の一部の実現のために、一時的に大容量のメモリ領域を確保し、使用した後に解放する動作を繰り返すケースが多くなっている。つまり、下位メモリバンクに使用中のメモリ領域が増加することになる。その結果、省電力効率を高めるためのメモリ領域の転送処理の対象となるメモリ領域は増加し、転送処理時間が増大することになってきた。
【００７８】
また、携帯情報端末の計算機システムでは、ユーザーに対するアプリケーションプログラムの起動応答性能が重視される。そのため、複数のアプリケーションを上位メモリバンクのメモリ領域に常駐させ、利用シーンによりアプリケーションを切り替えて動作させる構成が一般的である。近年の携帯情報端末の高機能化にともない、アプリケーション毎に消費するメモリあるいは常駐数は増加の傾向にあり、必要とされる上位メモリバンクの数あるいは容量も増加の傾向にある。典型的に、上位メモリバンクは、電力を遮断できないかあるいは供給されている時間が、下位メモリバンクに比較して長い。そのため、上位メモリバンクの増加は、システムの消費電力を増大させることを意味する。
【００７９】
このような状況において、従来技術として、アプリケーション性能に影響を与えないために、計算機システムが省電力モードへ遷移するタイミングで一括転送処理を実施するものがあった。しかしながら、この方法では、転送処理時間が増大することで、システムのスリープ時間が減少し、システムの消費電力が増加することになる。
【００８０】
一方、本発明のメモリ電源管理装置によれば、仮想計算機の切り替えタイミングで転送処理を実施することで、定常的にメモリバンクの最適化処理を行っていることから、省電力モード移行タイミングでの転送対象のメモリ領域を削減することが可能となる。これにより、より長くスリープすることができ、より効率的な低消費電力制御を行うことが可能となる。その結果、携帯情報端末における連続使用時間の延長や、連続待ち受け時間の延長、および電池容量の削減などが可能となる。
【００８１】
また、前述した省電力モードへ遷移するタイミングでの一括転送処理でなく、所定のタイミングでガベージコレクション処理を実行することで、定常的にメモリバンクの使用状態を最適に保つ従来技術があった。しかしながら、この方法では、メモリ領域管理とガベージコレクション処理をオペレーティングシステムで実行しているため、計算機システムに搭載されるメモリの総量が多くなると、オペレーティングシステムに割り当てるＣＰＵ時間が増大し、アプリケーションの動作速度などの性能を低下させることになる。また、上記のガベージコレクション処理をバックグランドで実行した場合、メモリ領域管理、およびメモリ電源管理が必要とするデータ領域はガベージコレクション処理中にも参照される可能性があり、メモリバンク間を移動することはできない。さらに、ガベージコレクション処理もオペレーティングシステムの中で実行しているために、この処理に必要なデータを移動すること、および移動処理にともなうオーバーヘッド（ＣＰＵ時間、および電力消費）を十分に抑えることは、非常に困難である。
【００８２】
一方、本発明のメモリ電源管理装置によれば、仮想計算機の切り替えが発生したタイミングで、動作中から停止中に状態変化する仮想計算機が使用しているメモリ領域の移動処理を開始することが可能となる。これにより、実際の移動処理は、バックグラウンドでハード処理により行われることになり、実行中の仮想計算機でのアプリケーションの動作速度などの性能の低下を低減することが可能となる。
【００８３】
以上により、本発明のメモリ電源管理方法によれば、転送するデータの種類に関わらず任意のメモリバンク間でデータ転送が可能となるため、オペレーティングシステムやアプリケーションが使用中のメモリを再配置する処理機構を簡略化し、メモリバンクの最適化処理のオーバーヘッドを低減することが可能となる。このオーバーヘッドの低減により、オペレーティングシステムやアプリケーションの動作に影響を与えることなく、定常的にメモリバンクを最適化することができ、下位メモリバンクのメモリ領域の消費が抑えられるため、電力の供給を必要とするメモリバンクの数あるいは容量を低減することが可能である。
【００８４】
さらに、下位メモリバンクのメモリ領域の消費の低減は、省電力モード移行時に下位メモリバンクから上位メモリバンクへ一括して転送するデータの総量の削減も意味するため、この転送の処理時間が短縮される。省電力モード移行時の処理時間の短縮は、システムのスリープ時間の延長であるため、本発明のメモリ電源管理方法によれば、計算機システム全体の消費電力の効果的な削減が可能となり、携帯情報端末などにおいて連続使用時間の延長や、携帯電話の連続待ち受け時間の延長、および電池容量の削減などが可能となる。
【産業上の利用可能性】
【００８５】
本発明にかかるメモリ電源管理装置は、仮想計算機の切り替えタイミングで、メモリ転送処理を実施する機能を有し、携帯情報端末などとして有用である。また、各種情報家電のメモリ電源管理などの用途にも応用できる。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態におけるメモリ電源管理装置を備えた計算機システムの構成図
【図２】本発明の実施の形態におけるメモリ電源管理装置の構成を示すブロック図
【図３】本発明の実施の形態におけるメモリ管理情報記憶部に格納した各テーブルの一例を示した図
【図４】本発明の実施の形態におけるメモリ管理情報記憶部に格納した各テーブルと物理アドレス空間との関係の一例を示す図
【図５】本発明の実施の形態におけるメモリ電源管理のメモリ移動処理の開始手順の一例を示す図
【図６】本発明の実施の形態におけるメモリ電源管理のメモリ移動処理の終了手順の一例を示す図
【図７】本発明の実施の形態におけるメモリ電源管理のメモリ一括転送処理の手順の一例を示す図
【図８】本発明の実施の形態におけるメモリ電源管理のメモリ一括転送処理の手順の一例を示す図
【図９】本発明の実施の形態における仮想ＭＭＵのアドレス変換に関するアドレス空間と変換マップの一例を示す図
【符号の説明】
【００８７】
１０    内部バス
１１    ＣＰＵ
１２    ＭＭＵ
１３    周辺モジュール
１４    メモリ
１５    メモリ転送部
１６    メモリ電源制御部
１００    計算機システム
１０１    ハイパーバイザー
１０２，１０３    仮想計算機
１１０，１１１    オペレーティングシステム
１２１，１２２，１２３，１２４    メモリバンク
１３１    メモリ管理部
１３２    メモリ転送管理部
１３３    メモリ電源管理部
１３４    仮想ＭＭＵ
１３５    仮想計算機制御部
１３６    仮想計算機管理情報記憶部
１４１    メモリ制御部
１４２    転送判断部
１４３    転送決定部
１４４    優先度設定部
１４５    メモリ管理情報記憶部
１５１    メモリ領域割り当て優先度管理テーブル
１５２    割り当て済みメモリ領域管理テーブル
１５３    空きメモリ領域管理テーブル
【図１】
2008262451.tif 000003
【図２】
2008262451.tif 000004
【図３】
2008262451.tif 000005
【図４】
2008262451.tif 000006
【図５】
2008262451.tif 000007
【図６】
2008262451.tif 000008
【図７】
2008262451.tif 000009
【図８】
2008262451.tif 000010
【図９】
2008262451.tif 000011