(57)【要約】  メモリコントローラ（１０）は、メモリ４が有する記憶領域をハイパーバイザ（３）が一意に識別するための物理アドレスと、メモリコントローラ（１０）が一意に識別するためのメモリアドレスとが対応付けて記憶するＤＩＭＭアドレス変換テーブルを有する。メモリコントローラ（１０）は、エラーが検出されたＤＩＭＭの記憶領域を示す物理アドレスをＤＩＭＭアドレス変換テーブル（１１）から抽出する。また、メモリコントローラ（１０）は、エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスをハイパーバイザ（３）から取得し、取得した物理アドレスに対応付けられたメモリアドレスをＤＩＭＭアドレス変換テーブル（１１）から抽出する。そして、メモリコントローラ（１０）は、抽出した物理アドレスが示す記憶領域に格納されていた情報を抽出したメモリアドレスが示す記憶領域に移動する。
2012098633.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを有するメモリ管理装置によって実行されるメモリ管理方法であって、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスを前記変換テーブルから抽出し、
検出されたエラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブルから抽出し、
前記変換テーブルを、前記抽出したメモリアドレスと前記抽出した物理アドレスとを対応付けた変換テーブルに更新し、
前記抽出した物理アドレスが示す記憶領域に格納されている情報を前記抽出したメモリアドレスが示す記憶領域に移動させる
ことを特徴とするメモリ管理方法。
【請求項２】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量と、前記エラーの発生によって削除される情報が格納されている記憶領域の容量とを比較し、前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも少ない場合には、前記エラーの発生によって削除される情報が格納されている記憶領域のうち、前記エラーが発生したメモリモジュールが有する記憶領域と同容量の記憶領域を選択し、当該選択した記憶領域を示す物理アドレスを前記メモリ管理装置に通知することを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量と、前記エラーの発生によって削除される情報が格納されている記憶領域の容量とを比較し、前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも多い場合には、利用されていない記憶領域の物理アドレスを検出し、前記エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスとともに該検出した物理アドレスを前記メモリ管理装置に通知することを特徴とする請求項１または２に記載のメモリ管理方法。
【請求項４】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも多い場合には、利用されていない記憶領域の物理アドレスを検出し、当該検出した物理アドレスが示す記憶領域の容量と前記エラーの発生によって削除される情報が格納されている記憶領域の容量との和が前記エラーが発生したメモリモジュールが有する記憶領域の容量よりも少ない場合には、記憶領域が不足している旨を前記メモリ管理装置に通知し、
前記メモリ管理装置は、
前記情報処理装置から記憶領域が不足している旨を通知された場合には、情報の移動を行わず、前記変換テーブルから、前記抽出した物理アドレスに対応付けられたメモリアドレスを削除することを特徴とする請求項３に記載のメモリ管理方法。
【請求項５】
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを記憶する記憶部と、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスを前記変換テーブル部から抽出する第一抽出部と、
エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブル部から抽出する第二抽出部と、
前記記憶部に記憶された変換テーブルを、前記第二抽出部が抽出したメモリアドレスと前記第一抽出部が抽出した物理アドレスとを対応付けた変換テーブルに更新する更新部と、
前記第一抽出部が抽出した物理アドレスが示す記憶領域に格納されている情報を前記第二抽出部が抽出したメモリアドレスが示す記憶領域に移動させる移動部と
を有することを特徴とするメモリ管理装置。
【請求項６】
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを記憶する記憶部と、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスを前記変換テーブル部から抽出する第一抽出部と、
エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブル部から抽出する第二抽出部と、
前記記憶部に記憶された変換テーブルを、前記第二抽出部が抽出したメモリアドレスと前記第一抽出部が抽出した物理アドレスとを対応付けた変換テーブルに更新する更新部と、
前記第一抽出部が抽出した物理アドレスが示す記憶領域に格納されている情報を前記第二抽出部が抽出したメモリアドレスが示す記憶領域に移動させる移動部と
ことを特徴とするメモリ管理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理方法、メモリ管理装置およびメモリ管理回路に関する。
【背景技術】
【０００２】
従来、複数のメモリモジュールを有する物理計算機上で複数の仮想計算機を動作させる仮想計算機システムが知られている。このような仮想計算機システムは、複数のメモリモジュールが有する全ての記憶領域を複数の記憶領域に分割し、分割した記憶領域を各仮想計算機に割当てるハイパーバイザを動作させている。【０００３】
図１３は、仮想計算機システムを説明するための図である。図１３に示す例では、仮想計算機システム３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１、メモリコントローラ３２、複数のメモリモジュール＃１〜＃３を有するメモリ３３を有する。また、ハイパーバイザ３４は、ＣＰＵ３１によって実行されるプログラムであり、各メモリモジュールが有する記憶領域を分割し、分割した記憶領域を複数の仮想計算機に割当てている。【０００４】
このような仮想計算機システム３０のメモリコントローラ３２は、メモリアドレス変換テーブルを有する。メモリアドレス変換テーブルには、ＣＰＵ３１およびハイパーバイザ３４がメモリ３３の記憶領域を一意に識別するための物理アドレスと、メモリコントローラ３２がメモリ３３の記憶領域を一意に識別するためのメモリアドレスとが対応付けられている。【０００５】
そして、メモリコントローラ３２は、ＣＰＵ３１から物理アドレスとともにデータのリード要求を取得した場合には、取得した物理アドレスに対応付けられたメモリアドレスをメモリアドレス変換テーブルから抽出する。その後、メモリコントローラ３２は、抽出したメモリドレスに格納されたデータを取得し、取得したデータをＣＰＵ３１へ送信する。【０００６】
メモリコントローラ３２は、取得したデータから訂正不能なエラー（ＵＥ：Ｕｎ  Ｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ）を検出する場合がある。このような場合には、メモリコントローラ３２は、ＵＥを検出した旨をハイパーバイザ３４に通知する。【０００７】
ここで、ＵＥが検出されたデータを記憶していたメモリモジュールには、将来的に障害が発生する可能性が高い。このため、ハイパーバイザ３４は、メモリコントローラ３２からＵＥが発生した旨を通知された場合には、ＵＥが発生したメモリモジュールのデータを他のメモリモジュールに移動させる。【０００８】
以下、図１４を用いて、ハイパーバイザがデータを移動させる処理について説明する。図１４は、ハイパーバイザが実行する処理の一例を説明するための図である。図１４に示す例では、ハイパーバイザ３４は、性能管理プログラム、障害管理プログラム、オペレータ等から、移動させるデータが格納された対象ＬＰＡＲ（Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎ）とデータの移動要求との通知を受け付ける（ステップＳ１）。【０００９】
次に、ハイパーバイザ３４は、通知された対象ＬＰＡＲをＣＰＵ３１のディスパッチ対象から除外する（ステップＳ２）。つまり、ハイパーバイザ３４は、対象ＬＰＡＲに格納されたデータを利用する仮想計算機を停止させる。そして、ハイパーバイザ３４は、対象ＬＰＡＲに格納されたデータを他のメモリモジュールに移動させ（ステップＳ３）、データを移動する前の物理アドレスと新たにデータを格納したメモリアドレスとを対応付けてメモリ管理テーブルを更新する（ステップＳ４）。【００１０】
その後、ハイパーバイザ３４は、更新したメモリ管理テーブルに基づいて、対象ＬＰＡＲのアドレス変換テーブルを更新し（ステップＳ５）、対象ＬＰＡＲをＣＰＵのディスパッチ対象に戻す（ステップＳ６）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−０５９１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述したハイパーバイザがデータの移動を行う技術では、ハイパーバイザ自身が格納されたメモリモジュールでＵＥが発生した場合には、メモリの移動処理を行う事ができないので、耐故障性が悪化するという問題があった。【００１３】
つまり、データを他のメモリモジュールへ移動させるためには、ハイパーバイザ自身が動作する必要がある。このため、ハイパーバイザは、ハイパーバイザ自身のデータが格納された対象ＬＰＡＲをディスパッチ対象から除外することができないので、ハイパーバイザのデータが格納されたメモリモジュールでＵＥが発生した場合には、データの移動処理を行う事ができない。結果として、耐故障性が悪化する。【００１４】
本願に開示の技術は、上述した問題に鑑みてなされたものであって、耐故障性を向上させる。
【課題を解決するための手段】
【００１５】
開示の技術は、一つの側面では、メモリ管理装置によって実行されるメモリ管理方法である。ここで、メモリ管理装置は、複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを有する。また、メモリ管理装置は、エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスを変換テーブルから抽出する。また、メモリ管理装置は、エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得し、取得した物理アドレスに対応付けられたメモリアドレスを変換テーブルから抽出する。そして、メモリ管理装置は、変換テーブルを、抽出したメモリアドレスと抽出した物理アドレスとを新たに対応付けた変換テーブルに更新する。また、メモリ管理装置は、抽出した物理アドレスが示す記憶領域に格納されている情報を抽出したメモリアドレスが示す記憶領域に移動する。
【発明の効果】
【００１６】
本願に開示の技術は、一つの態様によれば、耐故障性を向上させる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る仮想計算機システムを説明するための図である。
【図２】図２は、ハイパーバイザが管理する物理アドレス変換テーブルの一例を説明するための図である。
【図３】図３は、各エントリに割当てられた物理アドレスの一例を説明するための図である。
【図４】図４は、削除するエントリを説明するための図である。
【図５】図５は、物理アドレス変換テーブルから削除するエントリと物理アドレスとの関係を説明するための図である。
【図６】図６は、ＤＩＭＭアドレス変換テーブルの一例を説明するための図である。
【図７】図７は、ＤＩＭＭアドレス変換テーブルから検出される物理アドレスとＤＩＭＭアドレスを説明するための図である。
【図８】図８は、データ移動制御回路がＤＩＭＭアドレス変換テーブル１１を更新する処理を説明するための図である。
【図９】図９は、メモリコントローラとハイパーバイザが実行する処理の流れを説明するためのフローチャートである。
【図１０】図１０は、実施例２に係る仮想計算機システムを説明するための図である。
【図１１】図１１は、実施例２に係るハイパーバイザが実行する無効化領域判定の流れについて説明するための図である。
【図１２】図１２は、実施例３に係るハイパーバイザが実行する無効化領域判定の一例を説明するための図である。
【図１３】図１３は、仮想計算機システムを説明するための図である。
【図１４】図１４は、ハイパーバイザが実行する処理の一例を説明するための図である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照して本願に係るメモリ管理方法、メモリ管理装置およびメモリ管理回路について説明する。
【実施例１】
【００１９】
以下の実施例１では、図１を用いて、メモリ管理方法を実行するメモリコントローラを有する仮想計算機システムの一例を説明する。図１は、実施例１に係る仮想計算機システムを説明するための図である。【００２０】
図１に示すように、実施例１に係る仮想計算機システム１は、ＣＰＵ（Central  Processing  Unit）２、メモリコントローラ１０、メモリ４を有する。ここで、メモリ４は、複数のＤＩＭＭ（Dual  Inline  Memory  Module）＃１〜＃３を有する。メモリコントローラ１０は、ＤＩＭＭアドレス変換テーブル１１、移動先ＤＩＭＭアドレス検出回路１２、移動元ＤＩＭＭアドレス検出回路１３、データ移動制御回路１４、エラーチェッカー１５を有する。【００２１】
以下の説明ではＣＰＵ２およびＣＰＵ２が実行するプログラムであるハイパーバイザ３について説明し、続けてメモリコントローラ１０が有する各部１１〜１５が実行する処理について説明する。【００２２】
まず、ＣＰＵ２およびハイパーバイザ３について説明する。ＣＰＵ２は、ハイパーバイザ３を動作させる情報処理装置である。ＣＰＵ２は、メモリ４が有するＤＩＭＭ＃１〜＃３のいずれかに格納されたデータの読出しを行う場合には、データが格納された物理アドレスとともに、リード要求をメモリコントローラ１０へ送信する。ここで、物理アドレスとは、メモリ２が有する全ての記憶領域を一意に示すアドレスである。また、ＣＰＵ２は、メモリ４に格納されているデータをメモリコントローラ１０からリードデータとして受信する。【００２３】
ハイパーバイザ３は、メモリ４が有する記憶領域を複数の仮想計算機（ＶＭ：Virtual  Machine）に割当てるプログラムであり、ＣＰＵ２によって実行されている。そして、ハイパーバイザ３は、後述するメモリコントローラ１０から訂正不能なエラー（ＵＥ：Uncorrectable  Error）を検出した旨の通知を受けつける。このような場合には、ハイパーバイザ３は、ＵＥが検出されたＤＩＭＭに格納されているデータを他のＤＩＭＭに移動させる処理をメモリコントローラ１０に実行させる。【００２４】
具体的には、ハイパーバイザ３は、ＶＭの仮想アドレスと物理アドレスとを対応付けた物理アドレス変換テーブル５を管理する。また、ハイパーバイザ３は、後述するメモリコントローラ１０からＵＥが発生した旨の通知を受け付けた場合には、ＵＥが発生した記憶領域を利用していたＶＭを終了させる。また、ハイパーバイザ３は、物理アドレス変換テーブル５を用いて、終了させたＶＭに割当てられていたエントリ番号を検出する。【００２５】
そして、ハイパーバイザ３は、検出したエントリ番号に対応付けらていた物理アドレスを物理アドレス変換テーブル５から抽出し、抽出した物理アドレスをメモリコントローラ１０に通知する。後述するように、メモリコントローラ１０は、ハイパーバイザ３から通知された物理アドレスが示す記憶領域に格納されているデータを削除する。このため、ハイパーバイザ３は、メモリコントローラ１０に対して、削除するデータが格納された物理アドレスを通知することとなる。【００２６】
また、ハイパーバイザ３は、物理アドレス変換テーブル５から抽出した物理アドレスをメモリコントローラ１０に通知した場合には、変換テーブル内のエントリのうち、抽出した物理アドレスと対応付けられたエントリを削除し、物理アドレス変換テーブル５を更新する。その後、ハイパーバイザ３は、更新した物理アドレス変換テーブル５を用いて、メモリ４の記憶領域を複数のＶＭに割当てる。【００２７】
図２は、ハイパーバイザが管理する物理アドレス変換テーブル５の一例を説明するための図である。ハイパーバイザ３は、図２に示す例では、エントリ番号、ＶＭ番号、仮想アドレス、物理アドレス、サイズを対応付けた物理アドレス変換テーブル５を管理する。【００２８】
ここで、エントリ番号とは、ＶＭに対して割当てられる記憶領域を示す番号である。また、ＶＭ番号とは、記憶領域が割当てられた仮想計算機を一意に示す番号である。また、仮想アドレスとは、仮想計算機が記憶領域を示すために用いるメモリアドレスである。また、物理アドレスとは、メモリ４が有する全ての記憶領域をハイパーバイザ３が識別するためのメモリアドレスである。サイズとは、ＶＭに対して割当てられた記憶領域のブロック数を示す情報である。【００２９】
図２に示す例では、エントリ＃１として、ＶＭ＃０が用いる仮想アドレス「０〜９」に物理アドレス「６０〜６９」が示す１０ブロックの記憶領域が割当てられていることを示す。また、エントリ＃８として、ＶＭ＃１が用いる仮想アドレス「１０〜２９」に物理アドレス「１３０〜１４９」が示す２０ブロックの記憶領域が割当てられていることを示す。また、エントリ＃９として、ＶＭ＃２が用いる仮想アドレス「０〜９」に物理アドレス「８０〜８９」が示す１０ブロックの記憶領域が割当てられていることを示す。【００３０】
ハイパーバイザ３は、図２に例示した物理アドレス変換テーブル５に基づいて、各エントリと各物理アドレスとを図３に示すように対応付けている。図３は、各エントリに割当てられた物理アドレスの一例を説明するための図である。【００３１】
図３に示す例では、エントリ＃１、＃７、＃９に物理アドレス「６０〜８９」が割当てられており、エントリ＃２、＃８、＃１０に物理アドレス「１１０〜１５９」が割当てられている。また、エントリ＃３に物理アドレス「２１０〜２１９」が割当てられており、エントリ＃１３、＃１１に物理アドレス「２３０〜２４９」が割当てられている。【００３２】
次に、図を用いて、ハイパーバイザ３が実行する処理の一例について説明する。以下では、ハイパーバイザ３が、メモリコントローラ１０から物理アドレス「２４０〜２４９」が示す記憶領域に格納されたデータにＵＥが発生した旨の通知を取得した例について説明する。【００３３】
まず、図４は、削除するエントリを説明するための図である。図４に示す例では、ハイパーバイザ３は、メモリコントローラ１０から物理アドレス「２４０〜２４９」が示す記憶領域にＵＥが発生した旨の通知を受ける。このような場合には、ハイパーバイザ３は、物理アドレス変換テーブル５に基づいて、物理アドレス「２４０〜２４９」が割当てられたＶＭ「＃２」を特定する。【００３４】
そして、ハイパーバイザ３は、図４中の斜線で示すように、ＶＭ「＃２」に割当てられた物理アドレス「８０〜８９」、「１５０〜１５９」、「２４０〜２４９」を物理アドレス変換テーブル５から検出する。そして、ハイパーバイザ３は、検出した物理アドレス「８０〜８９」、「１５０〜１５９」、「２４０〜２４９」をメモリコントローラ１０に通知する。つまり、ハイパーバイザ３は、ＶＭ「＃２」に割り当てられた記憶領域に格納されているデータにＵＥが発生した場合には、ＶＭ「＃２」の継続利用ができなくなるため、ＶＭ「＃２」に割り当てられた記憶領域に格納されているデータを削除対象とする。そして、ハイパーバイザ３は、削除対象のデータが格納された記憶領域の物理アドレスをメモリコントローラ１０に通知する。【００３５】
また、ハイパーバイザ３は、物理アドレス変換テーブル５の、エントリ＃９〜１１と対応付けられたＶＭ番号、仮想アドレス、物理アドレス、サイズの各情報を削除して、物理アドレス変換テーブル５を更新する。そして、ハイパーバイザ３は、更新した物理アドレス変換テーブル５を用いて、ＶＭ＃０、＃１にメモリ４の記憶領域を割当てる処理を継続する。【００３６】
ここで、図５は、物理アドレス変換テーブルから削除するエントリと物理アドレスとの関係を説明するための図である。図５中の斜線で示す様に、ＶＭ＃２と対応付けられたエントリ＃９、＃１０、＃１１を物理アドレス変換テーブル５から削除する。このため、ハイパーバイザ３は、新たな物理アドレスを設定せずとも、動作を継続することができるので、ハイパーバイザ３が起動した際に設定した物理アドレスの枯渇を防止することができる。【００３７】
続いて、メモリコントローラ１０が有する各部１１〜１５について説明する。ＤＩＭＭ変換アドレステーブル記憶部１１は、物理アドレスと、各ＤＩＭＭ＃１〜＃３が有する記憶領域をメモリコントローラ１０が識別するためのＤＩＭＭアドレスとを対応付けたＤＩＭＭアドレス変換テーブル１１を記憶する。【００３８】
図６は、ＤＩＭＭアドレス変換テーブル１１の一例を説明するための図である。具体的には、図６に示すように、ＤＩＭＭアドレス変換テーブル１１には、物理アドレスと、ＤＩＭＭを一意に示すＤＩＭＭ番号と、各ＤＩＭＭが有する記憶領域を示すＤＩＭＭアドレスとが対応付けて記憶される。つまり、ＤＩＭＭアドレス変換テーブル１１は、物理アドレスを用いてアクセスされるデータがどこに格納されているかを示す。【００３９】
図６に示す例では、ＤＩＭＭアドレス変換テーブル１１は、物理アドレス「１１０〜１１９」を用いてアクセスされるデータがＤＩＭＭ「＃１」のＤＩＭＭアドレス「１０〜１９」に格納されていることを示す。また、ＤＩＭＭアドレス変換テーブル１１は、物理アドレス「１２０〜１２９」を用いてアクセスされるデータがＤＩＭＭ「＃１」のＤＩＭＭアドレス「２０〜２９」に格納されていることを示す。【００４０】
図１に戻って、移動先ＤＩＭＭアドレス検出回路１２は、ハイパーバイザ３から、ＵＥの発生によって削除される情報が格納された記憶領域を示す物理アドレスの通知を取得する。このような場合には、移動先ＤＩＭＭアドレス検出回路１２は、ＤＩＭＭアドレス変換テーブル１１を参照し、通知された物理アドレスに対応付けられたＤＩＭＭアドレスを抽出する。そして、移動先ＤＩＭＭアドレス検出回路１２は、抽出したＤＩＭＭアドレスをデータ移動制御回路１４に通知する。【００４１】
図７は、ＤＩＭＭアドレス変換テーブル１１から検出される物理アドレスとＤＩＭＭアドレスを説明するための図である。例えば、移動先ＤＩＭＭアドレス検出回路１２は、ハイパーバイザ３から物理アドレス「８０〜８９」、「１５０〜１５９」、「２４０〜２４９」を通知されたものとする。このような場合には、移動先ＤＩＭＭアドレス検出回路１２は、図７中αに示すように、ＤＩＭＭアドレス変換テーブル１１から、ハイパーバイザ３から通知された物理アドレス「８０〜８９」、「１５０〜１５９」、「２４０〜２４９」を検索する。【００４２】
そして、移動先ＤＩＭＭアドレス検出回路１２は、検索した物理アドレス「８０〜８９」と対応付けられたＤＩＭＭ番号「＃０」とＤＩＭＭアドレス「８０〜８９」を抽出する。その後、移動先ＤＩＭＭアドレス検出回路１２は、抽出したＤＩＭＭ番号「＃０」とＤＩＭＭアドレス「８０〜８９」をデータ移動制御回路１４に通知する。【００４３】
また、移動先ＤＩＭＭアドレス検出回路１２は、検索した物理アドレス「１５０〜１５９」と対応付けられたＤＩＭＭ番号「＃１」とＤＩＭＭアドレス「５０〜５９」を抽出する。その後、移動先ＤＩＭＭアドレス検出回路１２は、抽出したＤＩＭＭ番号「＃１」とＤＩＭＭアドレス「５０〜５９」をデータ移動制御回路１４に通知する。【００４４】
また、移動先ＤＩＭＭアドレス検出回路１２は、検索した物理アドレス「２４０〜２４９」と対応付けられたＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「４０〜４９」を抽出する。その後、移動先ＤＩＭＭアドレス検出回路１２は、ＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「４０〜４９」をデータ移動制御回路１４に通知する。【００４５】
つまり、移動先ＤＩＭＭアドレス検出回路１２は、図７中αに示す範囲の物理アドレスが示す記憶領域を、後述するデータ移動制御回路１４がデータを移動させる移動先の記憶領域であると判別する。そして、移動先ＤＩＭＭアドレス検出回路１２は、判別した移動先の記憶領域を示すＤＩＭＭアドレスを抽出し、抽出したＤＩＭＭアドレスをデータ移動制御回路１４に通知する。【００４６】
図１に戻って、移動元ＤＩＭＭアドレス検出回路１３は、メモリ４が有するＤＩＭＭ＃１〜＃３のいずれかにおいてＵＥが検出された場合には、ＵＥが検出されたＤＩＭＭが有する記憶領域を示す物理アドレスをＤＩＭＭアドレス変換テーブル１１から抽出する。【００４７】
移動元ＤＩＭＭアドレス検出回路１３は、後述するエラーチェッカー１５からＵＥが発生したＤＩＭＭのＤＩＭＭ番号とＤＩＭＭアドレスの通知を受けたものとする。このような場合には、移動元ＤＩＭＭアドレス検出回路１３は、ＤＩＭＭアドレス変換テーブル１１を参照し、通知されたＤＩＭＭ番号と対応付けられた物理アドレスを検出する。【００４８】
そして、移動元ＤＩＭＭアドレス検出回路１３は、検出した物理アドレスのうちエラーチェッカー１５から通知されたＤＩＭＭアドレスと対応付けられていない物理アドレスを抽出する。その後、移動元ＤＩＭＭアドレス検出回路１３は、抽出した物理アドレスと、抽出した物理アドレスに対応付けられたＤＩＭＭ番号およびＤＩＭＭアドレスとをデータ移動制御回路１４に通知する。【００４９】
図７に示す例では、移動元ＤＩＭＭアドレス検出回路１３は、エラーチェッカー１５からＵＥが発生したＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「４０〜４９」との通知を受けたものとする。このような場合には、移動元ＤＩＭＭアドレス検出回路１３は、ＤＩＭＭアドレス変換テーブル１１を参照し、エラーチェッカー１５から通知されたＤＩＭＭ番号「＃２」と対応付けられた物理アドレス「２１０〜２１９」、「２３０〜２３９」、「２４０〜２４９」を検出する。【００５０】
そして、移動元ＤＩＭＭアドレス検出回路１３は、エラーチェッカー１５から通知されたＤＩＭＭアドレス「４０〜４９」と対応付けられていない物理アドレス「２１０〜２１９」、「２３０〜２３９」をＤＩＭＭアドレス変換テーブル１１から抽出する。その後、移動元ＤＩＭＭアドレス検出回路１３は、抽出した物理アドレス「２１０〜２１９」と対応付けられたＤＩＭＭ番号「＃２」およびＤＩＭＭアドレス「１０〜１９」をデータ移動制御回路１４に通知する。また、移動元ＤＩＭＭアドレス検出回路１３は、抽出した物理アドレス「２４０〜２４９」と対応付けられたＤＩＭＭ番号「＃２」およびＤＩＭＭアドレス「３０〜３９」をデータ移動制御回路１４に通知する。【００５１】
つまり、移動元ＤＩＭＭアドレス検出回路１３は、図７中βに示すように、ＵＥが発生したＤＩＭＭ＃２に格納されたデータのうち、ＵＥが発生した格納領域以外の格納領域に移動対象となるデータが格納されていると判別する。このため、移動元ＤＩＭＭアドレス検出回路１３は、移動対象となるデータが格納されたＤＩＭＭアドレスを移動元ＤＩＭＭアドレスとしてデータ移動制御回路１４に通知する。【００５２】
図１に戻って、データ移動制御回路１４は、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭアドレスと移動元ＤＩＭＭアドレス検出回路１３によって通知された物理アドレスとを対応付けて、ＤＩＭＭアドレス変換テーブル１１を更新する。また、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３によって通知された物理アドレスが示す記憶領域に格納されていた情報を、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭアドレスが示す記憶領域に移動させる。【００５３】
具体的には、データ移動制御回路１４は、移動先ＤＩＭＭアドレス検出回路１２からＤＩＭＭ番号およびＤＩＭＭアドレスの通知を受ける。また、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から物理アドレス、ＤＩＭＭ番号およびＤＩＭＭアドレスの通知を受ける。【００５４】
このような場合には、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から通知されたＤＩＭＭ番号のＤＩＭＭアドレスに格納されたデータを、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ番号のＤＩＭＭアドレスに移動させる。例えば、データ移動制御回路１４は、図１に示す様に、ハイパーバイザ３の制御から独立して、ＵＥが発生したＤＩＭＭ＃１の斜線で示す記憶領域に格納されていたデータをＤＩＭＭ＃２の斜線で示す記憶領域へ移動させる。【００５５】
また、データ移動制御回路１４は、ＤＩＭＭアドレス変換テーブル１１にアクセスする。そして、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から通知されたＤＩＭＭ番号と対応付けてＤＩＭＭアドレス変換テーブル１１に記憶されたＤＩＭＭアドレスを削除する。また、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から通知された物理アドレスと移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ番号およびＤＩＭＭアドレスとを新たに対応付けて、ＤＩＭＭアドレス変換テーブル１１を更新する。【００５６】
以下、データ移動制御回路１４がデータを移動させる処理の一例を説明する。まず、データ移動制御回路１４は、移動先ＤＩＭＭアドレス検出回路１２からＤＩＭＭ番号「＃０」とＤＩＭＭアドレス「８０〜８９」、および、ＤＩＭＭ番号「＃１」とＤＩＭＭアドレス「５０〜５９」の通知を受ける。また、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から、物理アドレス「２１０〜２１９」とＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「１０〜１９」の組の通知を受ける。また、データ移動制御回路１４は、物理アドレス「２３０〜２３９」とＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「３０〜３９」の組の通知を受ける。【００５７】
すると、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から通知されたＤＩＭＭ「＃２」のＤＩＭＭアドレス「１０〜１９」に格納されていた情報を、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ「＃０」のＤＩＭＭアドレス「８０〜８９」に移動させる。また、データ移動制御回路１４は、移動元ＤＩＭＭアドレス検出回路１３から通知されたＤＩＭＭ「＃２」のＤＩＭＭアドレス「３０〜３９」に格納されていた情報を、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ「＃１」のＤＩＭＭアドレス「５０〜５９」に移動させる。【００５８】
次に、図８を用いて、データ移動制御回路１４が、ＤＩＭＭアドレス変換テーブル１１を更新する処理の一例を説明する。図８は、データ移動制御回路がＤＩＭＭアドレス変換テーブル１１を更新する処理を説明するための図である。まず、データ移動制御回路１４は、ＤＩＭＭアドレス変換テーブル１１にアクセスし、移動元ＤＩＭＭアドレス検出回路１３から通知されたＤＩＭＭ番号「＃２」と対応付けられたＤＩＭＭアドレスを削除する。【００５９】
また、データ移動制御回路１４は、図８中γに示すように、物理アドレス「８０〜８９」に対応付けられている、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ番号「＃０」とＤＩＭＭアドレス「８０〜８９」の組をＤＩＭＭアドレス変換テーブル１１から削除する。また、データ移動制御回路１４は、図８中γに示すように、物理アドレス「１５０〜１５９」に対応付けられている、移動先ＤＩＭＭアドレス検出回路１２から通知されたＤＩＭＭ番号「＃１」とＤＩＭＭアドレス「５０〜５９」の組をＤＩＭＭアドレス変換テーブル１１から削除する。【００６０】
また、図８中δに示すように、データ移動制御回路１４は、物理アドレス「２１０〜２１９」とＤＩＭＭ番号「＃０」およびＤＩＭＭアドレス「８０〜８９」の組とを対応付けてＤＩＭＭアドレス変換テーブル１１に格納する。また、データ移動制御回路１４は、物理アドレス「２３０〜２３９」と、ＤＩＭＭ番号「＃１」およびＤＩＭＭアドレス「５０〜５９」の組とを対応付けてＤＩＭＭアドレス変換テーブル１１に格納する。【００６１】
このように、実施例１に係るハイパーバイザ３は、ＵＥが発生したＤＩＭＭのデータを他のＤＩＭＭに移動させず、削除するデータが格納された物理アドレスをメモリコントローラ１０に通知する。そして、メモリコントローラ１０が、ハイパーバイザ３から通知された物理アドレスと、ＵＥが発生したＤＩＭＭ番号およびＤＩＭＭアドレスとに基づいて、ＵＥが発生したＤＩＭＭのデータを他のＤＩＭＭに移動させる。つまり、メモリコントローラ１０は、ハイパーバイザ３による制御から独立して、データの移動を行う。【００６２】
このため、メモリコントローラ１０は、ＵＥが発生したＤＩＭＭに格納されたデータがハイパーバイザ３のデータであっても適切に移動させることができる。結果として、メモリコントローラ１０は、仮想計算機システム１全体の耐故障性を向上させることができる。【００６３】
図１に戻って、エラーチェッカー１５は、メモリ４が有する各ＤＩＭＭ＃１〜＃３において発生するＵＥを検出する。具体的には、エラーチェッカー１５は、ＣＰＵ２によってリード要求されたデータを取得し、取得したデータにＵＥが発生しているか否かを判別する。【００６４】
そして、エラーチェッカー１５は、取得したデータにＵＥが発生していると判別した場合には、取得したデータが格納されていたＤＩＭＭ番号およびＤＩＭＭアドレスを移動元ＤＩＭＭアドレス検出回路１３に通知する。また、エラーチェッカー１５は、取得したデータが格納されていたＤＩＭＭ番号およびＤＩＭＭアドレスと対応付けられた物理アドレスをＤＩＭＭアドレス変換テーブル１１から抽出し、抽出した物理アドレスをハイパーバイザ３に対して通知する。【００６５】
例えば、エラーチェッカー１５は、ＤＩＭＭ番号「＃２」のＤＩＭＭアドレス「４０〜４９」に格納されたデータを取得する。エラーチェッカー１５は、取得したデータにＵＥが発生していると判別した場合には、取得したデータを格納していたＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「４０〜４９」の組を移動元ＤＩＭＭアドレス検出回路１３に通知する。また、エラーチェッカー１５は、ＤＩＭＭアドレス変換テーブル１１からＤＩＭＭ番号「＃２」とＤＩＭＭアドレス「４０〜４９」に対応付けられた物理アドレス「２４０〜２４９」を抽出し、抽出した物理アドレスをハイパーバイザ３に通知する。【００６６】
例えば、移動先ＤＩＭＭアドレス検出回路１２、移動元ＤＩＭＭアドレス検出回路１３、データ移動制御回路１４、エラーチェッカー１５は、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ  （Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。【００６７】
また、ＤＩＭＭアドレス変換テーブル１１は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ  （flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。【００６８】
図９は、メモリコントローラとハイパーバイザが実行する処理の流れを説明するためのフローチャートである。以下の説明では、読出しを行ったデータが格納されたＤＩＭＭにおいて、ＵＥが発生した場合について説明する。【００６９】
まず、メモリコントローラ１０は、ＣＰＵ２から通知された物理アドレスが示す記憶領域に格納されたデータの読出しを行う（ステップＳ１０１）。そして、メモリコントローラ１０は、読み出したデータをチェックし、読み出したデータからＤＩＭＭにＵＥが発生したと判断する（ステップＳ１０２）。【００７０】
すると、メモリコントローラ１０のエラーチェッカー１５は、ＵＥが発生したＤＩＭＭのＤＩＭＭ番号を移動元ＤＩＭＭアドレス検出回路１３に通知する（ステップＳ１０３）。移動元ＤＩＭＭアドレス検出回路１３は、通知されたＤＩＭＭ番号に基づいて、データの移動元となるＤＩＭＭアドレスを抽出する（ステップＳ１０４）。【００７１】
また、ハイパーバイザ３は、メモリコントローラ１０から通知された物理アドレスに基づいて、削除するデータが格納された記憶領域の物理アドレスを抽出し、抽出した物理アドレスをメモリコントローラ１０に通知する（ステップＳ１０５）。そして、ハイパーバイザ３は、物理アドレス変換テーブル５を更新し（ステップＳ１０６）、処理を終了する。つまり、ハイパーバイザ３は、データの移動処理を実行せずに、処理を終了する。【００７２】
続いて、メモリコントローラ１０の移動先ＤＩＭＭアドレス検出回路１２は、ハイパーバイザ３から通知された物理アドレスに基づいて、データの移動先となるＤＩＭＭアドレスを抽出する（ステップＳ１０７）。そして、データ移動制御回路１４は、移動元となるＤＩＭＭアドレスが示す記憶領域に格納されたデータを移動先となるＤＩＭＭアドレスが示す記憶領域に移動させる（ステップＳ１０８）。【００７３】
その後、データ移動制御回路１４は、ＤＩＭＭアドレス変換テーブル１１を更新し（ステップＳ１０９）、その後、処理を終了する。【００７４】
[実施例１の効果]
上述したように、実施例１に係るメモリコントローラ１０は、物理アドレスとＤＩＭＭアドレスとを対応付けたＤＩＭＭアドレス変換テーブル１１を有する。また、メモリコントローラ１０は、ＵＥが発生したことによって削除されるデータが格納されている記憶領域の物理アドレスをハイパーバイザ３から通知される。このような場合には、メモリコントローラ１０は、通知された物理アドレスと対応付けられたＤＩＭＭアドレスをＤＩＭＭアドレス変換テーブル１１から抽出する。そして、メモリコントローラ１０は、ＵＥが発生したＤＩＭＭのデータを、抽出したＤＩＭＭアドレスが示す記憶領域へ移動させる。【００７５】
このため、メモリコントローラ１０は、ＵＥが発生したＤＩＭＭにハイパーバイザ３のデータが格納されていた場合にも、データを他のＤＩＭＭに移動させることができる。つまり、メモリコントローラ１０は、ＶＭが利用するデータだけではなく、最も耐故障性が求められるハイパーバイザ３のデータをＵＥが発生したＤＩＭＭから他のＤＩＭＭへと移動させることができる。結果として、メモリコントローラ１０は、仮想計算機システム１の耐故障性を改善することができる。【００７６】
また、メモリコントローラ１０は、データの移動を行うだけではなく、移動先の記憶領域を示すＤＩＭＭアドレスと移動元の記憶領域を示す物理アドレスとを新たに対応付けて、ＤＩＭＭアドレス変換テーブル１１を更新する。つまり、メモリコントローラ１０は、データの移動に合わせて、ＤＩＭＭアドレス変換テーブル１１を動的に更新する。このため、メモリコントローラ１０は、ハイパーバイザ３が用いる物理アドレス変換テーブル５をデータの移動に合わせて更新せずとも、適切にメモリアクセスを継続することができる。【００７７】
また、上述したように、メモリコントローラ１０は、ハイパーバイザ３から通知された物理アドレスが示す記憶領域をデータの移動先としてデータの移動処理を行うので、別途新たな改良を行わずとも、より適切なデータの移動処理を行う事ができる。つまり、メモリコントローラ１０は、データの移動先を抽出する処理をハイパーバイザ３に実行させるので、ハイパーバイザ３の改良を行うだけで、より適切なデータの移動処理を行わせることができる。
【実施例２】
【００７８】
実施例２では、移動先の記憶容量と移動元の記憶容量とが一致しない場合に備えて、移動先の記憶容量を変更する機能を備えたハイパーバイザが、移動先の記憶領域を示す物理アドレスをメモリコントローラに通知する例について説明する。【００７９】
図１０は、実施例２に係る仮想計算機システムを説明するための図である。図１０に示す例では、仮想計算機システム１ａは、ＣＰＵ２ａ、メモリコントローラ１０、メモリ４を有する。ＣＰＵ２ａは、実施例２に係るハイパーバイザ３ａを動作させており、他の機能は実施例１において説明したＣＰＵ２と同様の機能を発揮する。また、メモリ４、メモリコントローラ１０は、実施例１において説明したメモリ４およびメモリコントローラ１０と同様の機能を発揮するものとし、詳しい説明を省略する。【００８０】
ハイパーバイザ３ａは、実施例１のハイパーバイザ３が実行する処理に加えて、終了させたＶＭに割当てられた記憶領域の容量と、ＵＥが発生したＤＩＭＭの記憶容量とを比較する。そして、ハイパーバイザ３ａは、データの移動先となる記憶領域の容量が、ＵＥが発生したＤＩＭＭの記憶容量よりも多いか否かに基づいて、メモリコントローラ１０に通知する物理アドレスを変更する無効化領域判定処理を実行する。【００８１】
その後、ハイパーバイザ３ａは、無効化領域判定処理によって抽出された物理アドレス、つまり、削除対象となるデータが格納された記憶領域を示す物理アドレスを移動先ＤＩＭＭアドレス検出回路１２に通知する。【００８２】
図１１は、実施例２に係るハイパーバイザが実行する無効化領域判定の流れについて説明するための図である。図１１に示す例では、ハイパーバイザ３ａは、ＵＥが発生した記憶領域を利用していたＶＭを終了させたことをトリガとして、無効化領域判定処理を開始する。【００８３】
まず、ハイパーバイザ３ａは、停止させるＶＭが利用していた記憶領域を示す物理アドレス、つまり、削除するデータが格納された記憶領域を示す物理アドレスを検索する（ステップＳ２０１）。なお、削除するデータが格納された記憶領域を示す物理アドレスとは、メモリコントローラ１０ａがデータを移動する際に、データの移動先となる記憶領域を示す物理アドレスである。そこで、以下の説明では、削除するデータが格納された記憶領域を示す物理アドレスを、移動先物理アドレスとする。【００８４】
次に、ハイパーバイザ３ａは、移動先物理アドレスが示す記憶領域が、ＵＥが発生したＤＩＭＭの記憶容量よりも大きいか否かを判別する（ステップＳ２０２）。つまり、ハイパーバイザ３ａは、移動するデータが格納されている領域よりも、移動先物理アドレスが示す記憶領域の方が大きいか否かを判別する。【００８５】
ハイパーバイザ３ａは、ＵＥが発生したＤＩＭＭの記憶容量よりも、移動先物理アドレスが示す記憶領域の容量が大きいと判別した場合は（ステップＳ２０２肯定）、移動先物理アドレスが示す記憶領域を削減できるか否か判別する（ステップＳ２０３）。そして、ハイパーバイザ３ａは、移動先物理アドレスが示す記憶領域を削減できると判別した場合には（ステップＳ２０３肯定）、移動先物理アドレスが示す記憶領域のうち、ＵＥが発生したＤＩＭＭの記憶容量と同じ容量の記憶領域を選択する。つまり、ハイパーバイザ３ａは、移動先物理アドレスを、ＵＥが発生したＤＩＭＭの記憶容量に応じて削減する（ステップＳ２０４）。【００８６】
ここで、移動先物理アドレスが示す記憶領域から、移動するデータが格納された記憶領域と同じ容量の記憶領域を選択する方法については、任意の方法を用いることができる。例えば、ハイパーバイザ３ａは、近接する物理アドレスが割当てられた記憶領域を選択する方法や、ランダムに記憶領域を選択する方法等を用いる。【００８７】
一方、ハイパーバイザ３ａは、移動先物理アドレスを削減できないと判別した場合には（ステップＳ２０３否定）、移動先物理アドレスの削減を行わない（ステップＳ２０５）。また、ハイパーバイザ３ａは、移動先物理アドレスが示す記憶領域の容量よりも、ＵＥが発生したＤＩＭＭの記憶容量が大きいと判別した場合には（ステップＳ２０２否定）、ＶＭに割当てられていない物理アドレスがあるか否かを判別する（ステップＳ２０６）。【００８８】
そして、ハイパーバイザ３ａは、ＶＭに割当てられていない物理アドレスがあると判別した場合には（ステップＳ２０６肯定）、ＶＭに割当てられていない物理アドレスを移動先物理アドレスに追加する（ステップＳ２０７）。その後、ハイパーバイザ３ａは、移動先物理アドレスをメモリコントローラ１０ａの移動先ＤＩＭＭアドレス検出回路１２へ送信する（ステップＳ２０８）。【００８９】
一方、ハイパーバイザ３ａは、ＶＭに割当てられていない物理アドレスが無い場合は（ステップＳ２０６否定）、移動先物理アドレスの削減および追加を行わず（ステップＳ２０５）、メモリコントローラ１０に移動先物理アドレスを通知する（ステップＳ２０８）。その後、ハイパーバイザ３ａは、自装置が管理する物理アドレス変換テーブル５を更新し、処理を終了する。【００９０】
［実施例２の効果］
上述したように、ハイパーバイザ３ａは、エラーが発生したＤＩＭＭの記憶容量と、削除される情報が格納された記憶領域の容量とを比較する。つまり、ハイパーバイザ３ａは、データの移動先となる記憶領域の容量と、ＵＥが発生したＤＩＭＭの記憶容量とを比較する。そして、ハイパーバイザ３ａは、ＵＥが発生したＤＩＭＭの記憶容量がデータの移動先となる記憶領域の容量よりも少ない場合には、データの移動先となる記憶領域から、ＵＥが発生したＤＩＭＭの記憶容量と同じ容量の記憶領域を選択する。そして、ハイパーバイザ３ａは、選択した記憶領域を示す物理アドレスをメモリコントローラ１０に通知する。【００９１】
このため、メモリコントローラ１０は、物理アドレスを無駄にすることなく、耐故障性を向上させることができる。例えば、メモリコントローラ１０は、ハイパーバイザ３ａから通知された物理アドレスと対応付けられたＤＩＭＭアドレスをＤＩＭＭアドレス変換テーブルから削除する。つまり、メモリコントローラ１０は、通知された移動先物理アドレスを利用対象から削除することとなる。【００９２】
ここで、ハイパーバイザ３ａは、ＵＥが発生した際に移動させるデータの量と移動先となる記憶領域の容量とを比較し、移動させるデータの量と同容量の記憶領域を示す移動先物理アドレスをメモリコントローラ１０に通知する。このため、メモリコントローラ１０は、耐故障性を向上させたままで、余計な物理アドレスを利用対象から削除することなく、ＤＩＭＭを有効に利用することができる。【００９３】
また、ハイパーバイザ３ａは、ＵＥが発生したＤＩＭＭの記憶容量がデータの移動先となる記憶領域の容量よりも多い場合には、ＶＭに割当てられていない物理アドレスを検出する。そして、ハイパーバイザ３ａは、検出した物理アドレスとデータの移動先となる記憶領域の物理アドレスとを移動先物理アドレスとしてメモリコントローラ１０に送信する。つまり、ハイパーバイザ３ａは、移動させるデータ容量が移動先となる記憶領域の容量よりも大きい場合には、移動先となる記憶領域の物理アドレスとＶＭが利用していない記憶領域を示す物理アドレスとをメモリコントローラ１０に通知する。【００９４】
このため、メモリコントローラ１０は、移動させるデータの容量が移動先となる記憶領域の容量よりも大きい場合にも、適切にデータの移動を行う事ができる結果、耐故障性を向上させることができる。【００９５】
また、実施例２に係るメモリコントローラ１０は、ハイパーバイザ３ａから通知された物理アドレスに応じて、データの移動を行う。このため、メモリコントローラ１０は、新たな機能を付さずとも、プログラムであるハイパーバイザ３ａの修正を行うだけで、メモリ４が有する各ＤＩＭＭ＃１〜＃３の記憶容量や構成によらず、適切なデータの移動処理を行う事ができる。
【実施例３】
【００９６】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例３として他の実施例を説明する。【００９７】
（１）ハイパーバイザが実行する無効化領域判定について
上述したハイパーバイザ３ａは、ＵＥが発生したＤＩＭＭの記憶容量と停止させたＶＭが利用していた記憶領域の容量とに基づいて、メモリコントローラ１０に通知する移動先物理アドレスの削減および追加を行っていた。しかし、実施例は、これに限定されるものではなく、例えば、実施例３に係るハイパーバイザ３ｂは、移動先物理アドレスの追加が行えない場合には、メモリコントローラ１０にデータの移動処理を行わせないこととしてもよい。【００９８】
図１２は、実施例３に係るハイパーバイザが実行する無効化領域判定の一例を説明するための図である。なお、図１２に示す各ステップＳ３０１〜３０８は、図１１に示す各ステップＳ２０１〜２０８と同一の処理であるため、説明を省略する。【００９９】
図１２に示すように、ハイパーバイザ３ｂは、ＵＥが発生したＤＩＭＭの記憶容量が停止させたＶＭが利用していた記憶領域の容量よりも大きい場合には（ステップＳ３０２否定）、ＶＭに割当てられていない物理アドレスを検索する（ステップＳ３０６）。ここで、ハイパーバイザ３ｂは、ＶＭに割当てられていない物理アドレスが無い場合、つまり、データの移動先となる記憶領域を追加することができない場合には（ステップＳ３０６否定）、メモリコントローラ１０に移動先物理アドレスを通知せず、移動先の記憶領域が不足している旨を通知する（ステップＳ３０９）。【０１００】
つまり、ハイパーバイザ３ｂは、ＵＥがいずれかのＤＩＭＭで発生した際に、他のＤＩＭＭにデータを移動させるだけの空きが無い場合には、メモリコントローラ１０に移動先物理アドレスを通知せず、データの移動処理を行わせない。そして、このような場合には、メモリコントローラ１０は、データの移動処理を行わず、ＵＥが発生したＤＩＭＭのメモリアドレスを削除する。【０１０１】
このため、メモリコントローラ１０は、データの移動先となる記憶容量がデータの量よりも小さい場合には、データの移動を行わないので、記憶容量の不足によるデータ移動処理の失敗を防ぐことができる。結果、メモリコントローラ１０は、適切なデータの移動処理を行うことができる。【０１０２】
また、上述した処理以外にも、ハイパーバイザ３ｂは、状況に応じて様々な情報を用いて、移動先物理アドレスの削減および追加を行うこととしてもよい。例えば、ハイパーバイザ３ｂは、メモリコントローラ１０から移動させるデータが格納された物理アドレスの通知を受け、通知された物理アドレスに基づいて移動させるデータの容量を算出する。【０１０３】
そして、ハイパーバイザ３ｂは、終了させたＶＭに割当てられていた記憶領域の容量と算出した容量とを比較した結果に基づいて、メモリコントローラに通知する移動先物理アドレスの追加および削除を行っても良い。つまり、仮想計算機システムが有するメモリが少ない場合には、ＵＥが発生したＤＩＭＭ全体の記憶領域ではなく、ＵＥが発生したＤＩＭＭに格納されたデータの量と停止したＶＭに割当てられていた記憶領域の容量とを比較することとしてもよい。【０１０４】
このように、メモリコントローラは、自装置の改良を行わずとも、ソフトウエアであるハイパーバイザの改良を行うだけで、より適切なデータの移動処理を行うことができる。【０１０５】
（２）ＤＩＭＭについて
上述したメモリ４は、複数のＤＩＭＭ＃１〜＃３を有していた。しかし、実施例はこれに限定されるものではなく、任意の数のＤＩＭＭを有していてもよい。また、各ＤＩＭＭの記憶容量はそれぞれ同一でも良いし異なっていてもよい。また、ＤＩＭＭだけではなく、例えば、ＳＳＤ（Solid  State  Drive）やその他の半導体メモリ等でもよい。
【符号の説明】
【０１０６】
１  仮想計算機システム
１ａ  仮想計算機システム
２  ＣＰＵ
２ａ  ＣＰＵ
３  ハイパーバイザ
３ａ  ハイパーバイザ
４  メモリ
５  物理アドレス変換テーブル
１０  メモリコントローラ
１１  ＤＩＭＭアドレス変換テーブル
１２  移動先ＤＩＭＭアドレス検出回路
１３  移動元ＤＩＭＭアドレス検出回路
１４  データ移動制御回路
１５  エラーチェッカー
【図１】
2012098633.tif 000003
【図２】
2012098633.tif 000004
【図３】
2012098633.tif 000005
【図４】
2012098633.tif 000006
【図５】
2012098633.tif 000007
【図６】
2012098633.tif 000008
【図７】
2012098633.tif 000009
【図８】
2012098633.tif 000010
【図９】
2012098633.tif 000011
【図１０】
2012098633.tif 000012
【図１１】
2012098633.tif 000013
【図１２】
2012098633.tif 000014
【図１３】
2012098633.tif 000015
【図１４】
2012098633.tif 000016
【手続補正書】
【提出日】平成26年1月24日(2014.1.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを有するメモリ管理装置によって実行されるメモリ管理方法であって、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスのうちエラーが検出された記憶領域以外の記憶領域を示す物理アドレスを前記変換テーブルから抽出し、
検出されたエラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブルから抽出し、
前記変換テーブルを、前記抽出したメモリアドレスと前記抽出した物理アドレスとを対応付けた変換テーブルに更新し、
前記抽出した物理アドレスが示す記憶領域に格納されている情報を前記抽出したメモリアドレスが示す記憶領域に移動させる
ことを特徴とするメモリ管理方法。 
【請求項２】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量と、前記エラーの発生によって削除される情報が格納されている記憶領域の容量とを比較し、前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも少ない場合には、前記エラーの発生によって削除される情報が格納されている記憶領域のうち、前記エラーが発生したメモリモジュールが有する記憶領域と同容量の記憶領域を選択し、当該選択した記憶領域を示す物理アドレスを前記メモリ管理装置に通知することを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量と、前記エラーの発生によって削除される情報が格納されている記憶領域の容量とを比較し、前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも多い場合には、利用されていない記憶領域の物理アドレスを検出し、前記エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスとともに該検出した物理アドレスを前記メモリ管理装置に通知することを特徴とする請求項１または２に記載のメモリ管理方法。 
【請求項４】
前記情報処理装置は、
前記エラーが発生したメモリモジュールが有する記憶領域の容量が前記エラーの発生によって削除される情報が格納されている記憶領域の容量よりも多い場合には、利用されていない記憶領域の物理アドレスを検出し、当該検出した物理アドレスが示す記憶領域の容量と前記エラーの発生によって削除される情報が格納されている記憶領域の容量との和が前記エラーが発生したメモリモジュールが有する記憶領域の容量よりも少ない場合には、記憶領域が不足している旨を前記メモリ管理装置に通知し、
前記メモリ管理装置は、
前記情報処理装置から記憶領域が不足している旨を通知された場合には、情報の移動を行わず、前記変換テーブルから、前記抽出した物理アドレスに対応付けられたメモリアドレスを削除することを特徴とする請求項３に記載のメモリ管理方法。 
【請求項５】
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを記憶する記憶部と、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスのうちエラーが検出された記憶領域以外の記憶領域を示す物理アドレスを前記変換テーブルから抽出する第一抽出部と、
エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブルから抽出する第二抽出部と、
前記記憶部に記憶された変換テーブルを、前記第二抽出部が抽出したメモリアドレスと前記第一抽出部が抽出した物理アドレスとを対応付けた変換テーブルに更新する更新部と、
前記第一抽出部が抽出した物理アドレスが示す記憶領域に格納されている情報を前記第二抽出部が抽出したメモリアドレスが示す記憶領域に移動させる移動部と
を有することを特徴とするメモリ管理装置。 
【請求項６】
ハイパーバイザが動作する回路とメモリモジュールとの間の通信経路上に設置されるメモリ管理回路であって、
複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを記憶する記憶部と、
エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスのうちエラーが検出された記憶領域以外の記憶領域を示す物理アドレスを前記変換テーブルから抽出する第一抽出部と、
エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得すると、当該取得した物理アドレスに対応付けられた前記メモリアドレスを前記変換テーブルから抽出する第二抽出部と、
前記記憶部に記憶された変換テーブルを、前記第二抽出部が抽出したメモリアドレスと前記第一抽出部が抽出した物理アドレスとを対応付けた変換テーブルに更新する更新部と、
前記第一抽出部が抽出した物理アドレスが示す記憶領域に格納されている情報を前記第二抽出部が抽出したメモリアドレスが示す記憶領域に移動させる移動部と
を有することを特徴とするメモリ管理回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
開示の技術は、一つの側面では、メモリ管理装置によって実行されるメモリ管理方法である。ここで、メモリ管理装置は、複数のメモリモジュールが有する記憶領域を情報処理装置が一意に識別するための物理アドレスと、前記記憶領域をメモリ管理装置が一意に識別するためのメモリアドレスとを対応付けた変換テーブルを有する。また、メモリ管理装置は、エラーが検出されたメモリモジュールの記憶領域を示す物理アドレスのうちエラーが検出された記憶領域以外の記憶領域を示す物理アドレスを変換テーブルから抽出する。また、メモリ管理装置は、エラーの発生によって削除される情報が格納されている記憶領域を示す物理アドレスを情報処理装置から取得し、取得した物理アドレスに対応付けられたメモリアドレスを変換テーブルから抽出する。そして、メモリ管理装置は、変換テーブルを、抽出したメモリアドレスと抽出した物理アドレスとを新たに対応付けた変換テーブルに更新する。また、メモリ管理装置は、抽出した物理アドレスが示す記憶領域に格納されている情報を抽出したメモリアドレスが示す記憶領域に移動する。
【国際調査報告】
2012098633.tif 000017
2012098633.tif 000018
2012098633.tif 000019
2012098633.tif 000020
2012098633.tif 000021
2012098633.tif 000022