(57)【特許請求の範囲】
【請求項１】
ハードウェア資源を管理することにより、１以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータにより変更される前記第１のメモリ領域と、最後に変更された前記第１のメモリ領域を記憶する第２記憶部に記憶した前記第１のメモリ領域と、が異なる場合、該検出したデータにより変更される前記第１のメモリ領域のページ数を計数した計数情報を含む更新情報を生成し、前記更新情報を第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶し、検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に１を加算するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する登録手段と、
前記第１記憶部に記憶される更新情報を出力する出力手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記登録手段は、過去に変更された複数の前記第１のメモリ領域を前記第２記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第１のメモリ領域が、前記第２記憶部に記憶した前記第１のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記更新情報は、変更された前記第１のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
検出したデータにより変更される前記第１のメモリ領域と一定範囲内の前記第１のメモリ領域が前記第２記憶部に含まれる場合、該第２記憶部に含まれる前記第１のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページのサイズに更新する、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
ハードウェア資源を管理することにより、１以上の仮想機械を実現するステップと、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうステップと、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
検出したデータにより変更される前記第１のメモリ領域と、最後に変更された前記第１のメモリ領域を記憶する第２記憶部に記憶した前記第１のメモリ領域と、が異なる場合、前記検出したデータにより変更される前記第１のメモリ領域のページ数を計数した計数情報を含む更新情報を生成し、前記更新情報を第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶し、検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に１を加算するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶するステップと、
前記第１記憶部に記憶される更新情報を出力するステップと、
を備えることを特徴とする情報処理装置の仮想化方法。
【請求項６】
ハードウェア資源を管理することにより、１以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
移動対象の前記仮想機械に割り当てられる第１のメモリ領域に格納されるデータを取得して移動先に転送するメモリ領域転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータにより変更される前記第１のメモリ領域と、最後に変更された前記第１のメモリ領域を記憶する第２記憶部に記憶した前記第１のメモリ領域と、が異なる場合、該検出したデータにより変更される前記第１のメモリ領域のページ数を計数した計数情報を含む更新情報を生成し、前記更新情報を第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶し、検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に１を加算するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する登録手段と、
前記第１記憶部から更新情報を取得する更新情報取得手段と、
前記更新情報取得手段により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第１のメモリ領域において前記検出手段により検出したデータにより変更された更新データを、前記移動先に転送する更新データ転送手段と、
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１以上の仮想機械を実現する情報処理装置に関する。
【背景技術】
【０００２】
従来、情報処理装置としてのサーバ上で複数のＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：仮想機械）といわれる仮想的なサーバを動作させるサーバ仮想化技術が知られている。
図１は、サーバ仮想化技術の概要を示す図である。
【０００３】
サーバ１０１では、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）１０２と呼ばれるソフトウェアを動作させている。このＶＭＭ１０２は、サーバ１０１のメモリやＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ：入出力）などに関するハードウェア資源を管理する。また、ＶＭＭ１０２は、各ＶＭ＃０〜＃２に対して各ＶＭが必要とするハードウェア資源をエミュレート（模倣）して提供する。
【０００４】
複数のＶＭを動作させる場合、複数のＶＭがサーバ１０１に備わる物理メモリの同一アドレスの記憶領域を重複して使用しないように、メモリの排他制御が行なわれる。この排他制御は、ＶＭＭ１０２のメモリ管理によって行なわれる。
【０００５】
図２は、ＶＭＭ１０２によるメモリ管理の概要を示す図である。
ＶＭが認識するメモリは、ゲスト物理メモリと呼ばれる。このゲスト物理メモリは、ＶＭからは連続するメモリ領域として把握される。一方、ＶＭＭ１０２から見るとゲスト物理メモリはＶＭ毎に存在する別々のメモリ空間として把握される。
【０００６】
図２は、ＶＭ＃０とＶＭ＃１の２つのＶＭがＶＭＭ１０２上で動作している場合のゲスト物理メモリを示している。この場合、ＶＭ＃０のゲスト物理メモリ＃０とＶＭ＃１のゲスト物理メモリ＃１の２つのゲスト物理メモリが存在する。
【０００７】
例えば、アドレスＸは、ゲスト物理メモリ＃０および＃１にそれぞれ１つずつ存在する。このアドレスＸをそのままサーバ１０１に備わる実メモリ、すなわちホスト物理メモリに割り当てると競合が発生する。
【０００８】
そこで、ＶＭＭ１０２は、ゲスト物理メモリ＃０のアドレスＸをホスト物理メモリのアドレスＺに割り当て、ゲスト物理メモリ＃１のアドレスＸをホスト物理メモリのアドレスＹに割り当てる。このように、ＶＭＭ１０２は、ホスト物理メモリを別々のホスト物理メモリに割り当てることにより、メモリの競合を回避する。
【０００９】
ＶＭがＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を起動する場合にも同様のメモリ管理が必要となる。
例えば、ＶＭ＃０が、ＤＭＡ転送により、ゲスト物理メモリ＃０のアドレスＸにデータを書き込む場合を考える。なお、ＤＭＡ転送により所定のメモリ領域にデータを書き込むことを「ＤＭＡライト」という。また、ＤＭＡ転送によるデータの書き込み先を示すメモリアドレスを「ＤＭＡアドレス」という。
【００１０】
この場合、ＶＭ＃０がＩＯアダプタにＤＭＡアドレスとしてアドレスＸを設定すると、ＤＭＡライトはホスト物理メモリのアドレスＸに対して行われる。ホスト物理メモリのアドレスＸはゲスト物理メモリ＃０のアドレスＸとは無関係のメモリ領域であるため、メモリ破壊が引き起こされる。メモリ破壊が引き起こされた場合には、システムにパニックが発生し、その後システムが停止する。
【００１１】
したがって、ＶＭ＃０によるＤＭＡライトの実行は、以下のような手順で行なわれる。
（１）ＶＭ＃０は、ＩＯアダプタに対して、ゲスト物理メモリ＃０のアドレスＸへのＤＭＡライトを要求する。
（２）ＶＭＭ１０２は、ＶＭ＃０のＤＭＡライトの要求をトラップし、ゲスト物理メモリ＃０のアドレスＸをホスト物理メモリのバッファ領域のアドレスＷに変換する。そして、ＶＭＭ１０２は、変換したアドレスＷをＩＯアダプタのＤＭＡアドレス設定レジスタに設定する。
（３）ＶＭ＃０は、ＩＯアダプタに対してＤＭＡ開始を指示する。
（４）ＩＯアダプタは、アドレスＷに対してＤＭＡライトを実行する。
（５）ＤＭＡライトが完了すると、ＩＯアダプタは、ＤＭＡ完了割り込みによりＤＭＡライトの完了を通知する。
（６）ＶＭＭ１０２は、ホスト物理メモリのアドレスＷに格納されたデータをゲスト物理メモリ＃０のアドレスＸにコピーする。
（７）ＶＭＭ１０２は、ＤＭＡ完了割り込みによりＶＭ＃０にＤＭＡライトの完了を通知する。
（８）ＶＭ＃０は、ゲスト物理メモリ＃０のアドレスＸからデータを取り出す。
【００１２】
サーバ仮想化に関する機能の一つに、ライブ・マイグレーション（Ｌｉｖｅ  Ｍｉｇｒａｔｉｏｎ）という技術がある。このライブ・マイグレーションとは、あるサーバで稼働中のＶＭを、別のサーバに動作を停止することなく当該動作を移行させる技術である。
【００１３】
図３は、ライブ・マイグレーションの概要を示す図である。
ライブ・マイグレーションは、図３に示すように、２台のサーバ＃０および＃１と、サーバ＃０および＃１が共有するストレージ３２０と、サーバ＃０および＃１が接続するネットワーク３３０と、を備える環境で行うことが可能である。ライブ・マイグレーションは、以下のような手順で行なわれる。
（１）移動先サーバ＃１で動作するＶＭＭ３１１は、ＶＭ３１２を用意する。
（２）移動元ＶＭ３０２が業務を継続している状態で、移動元ＶＭＭ３０１は、移動元ＶＭ３０２が使用しているメモリ内容を移動先ＶＭ３１０に転送する。この処理を「プレ・コピー」という。
（３）移動元ＶＭ３０２の業務を一時的に停止し、移動元ＶＭＭ３０１は、移動元ＶＭ３０２が使用しているメモリ内容を移動先ＶＭ３１０に転送する。この処理を「ストップ・アンド・コピー」という。
（４）移動先ＶＭＭ３１１からの指示に応じて、移動先ＶＭ３１２は業務を再開する。
【００１４】
上述のように、プレ・コピーやストップ・アンド・コピーなどのメモリ・コピーはすべてＶＭＭが行なう。ＶＭＭがメモリ・コピーを実行できるのは、ＶＭＭがホスト物理メモリを管理しているからである。
【００１５】
ＶＭＭは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からホスト物理メモリへのライト処理だけでなくＤＭＡライトについても介在し、移動元ＶＭのメモリ・データの変更分を検出する。
【００１６】
ＩＯ仮想化技術としてＩＯＭＭＵ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）という技術がある。このＩＯＭＭＵは、上述のようなＶＭＭ介在によるメモリアクセスのオーバーヘッドを軽減することで高速化を図る技術である。
【００１７】
ＩＯＭＭＵは、ＩＯアダプタとホスト物理メモリとに接続し、ゲスト物理メモリアドレスとホスト物理メモリアドレスの変換を実施するメモリ管理ユニットである。
ＩＯＭＭＵを実装すると、図４に示すように、ＩＯ装置からＶＭのゲスト物理メモリに直接ＤＭＡを実行することが可能となる。この技術を使用すると、ＤＭＡによるゲスト物理メモリへのアクセスの際に、ＶＭＭが介在する必要がなくなる。また、ＶＭＭがホスト物理メモリ−ゲスト物理メモリ間でのデータコピーを行なう必要もなくなる。
【００１８】
しかし、上述のように、ＩＯＭＭＵを使用すると、ＤＭＡアクセス時にＶＭＭは介在しないことになる。この場合、ＶＭＭは、ＤＭＡライトによるゲスト物理メモリの更新を把握できないので、ＶＭＭは、メモリ・コピーを正しく実行することができない。そのため、例えば、図４に示したＩＯＭＭＵを実装したサーバに、ＤＭＡライトによるゲスト物理メモリの変更内容を保持させるなどして対応していた。
【００１９】
上記技術に関連して、仮想マシン間で、ＤＭＡなど、物理アドレスに対していくらかのアクセスができるようにしながら、ゲストからホストへの物理アドレスの参照に使用される参照テーブルからの物理アドレス空間のパージなどを可能にする方法およびシステムが知られている。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００６−２５２５５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
しかし、図４に示したＩＯＭＭＵを実装したサーバに、ＤＭＡライトによるゲスト物理メモリの変更内容を保持させる場合、ＤＭＡライトによるゲスト物理メモリの変更内容を保持させるために大容量の記憶装置が必要となる。すなわち、ＩＯＭＭＵを実装したサーバでライブ・マイグレーションを実行するには、大量のハードウェア資源が必要となる。
【００２２】
１つの側面では、本発明は、少ないハードウェア資源でライブ・マイグレーションを実行できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
１つの態様によれば、本情報処理装置は、以下の手段を備える。
仮想機械実現手段は、ハードウェア資源を管理することにより、１以上の仮想機械を実現する。
【００２４】
データ転送手段は、前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換する。そして、データ転送手段は、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なう。
【００２５】
検出手段は、前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する。
登録手段は、検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶する。
【００２６】
出力手段は、前記第１記憶部に記憶される更新情報を出力する。
【発明の効果】
【００２７】
１つの態様では、少ないハードウェア資源でライブ・マイグレーションを実行することが可能となる。
【図面の簡単な説明】
【００２８】
【図１】サーバ仮想化技術の概要を示す図である。
【図２】ＶＭＭによるメモリ管理の概要を示す図である。
【図３】ライブ・マイグレーションの概要を示す図である。
【図４】ＩＯＭＭＵについて説明する図である。
【図５】情報処理装置を説明する図である。
【図６】情報処理装置の構成例を示す図である。
【図７】ノース・ブリッジにおけるＤＭＡ処理の動作を説明する図である。
【図８】ＰＣＩｅスイッチにおけるＤＭＡ処理の動作を説明する図である。
【図９】パケット検出部の構成例を示す図である。
【図１０】ＦＩＦＯ＃０の構成例を示す図である。
【図１１】ＤＭＡパケットのヘッダの構成例を示す図である。
【図１２】ダーティ・ページ管理ユニットによるダーティ・ページ情報の登録処理を示すフローチャートである。
【図１３】ダーティ・ページ管理ユニットによるダーティ・ページ情報の出力処理を示すフローチャートである。
【図１４】本実施例に係るライブ・マイグレーションの概要を説明する図である。
【図１５】本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。
【図１６】プレ・コピーの具体的な処理を示すフローチャートである。
【図１７】ストップ・アンド・コピーの具体的な処理を示すフローチャートである。
【図１８】条件１を用いたパケット検出部の具体例を示す図である。
【図１９】図１８に示したパケット検出部の処理を示すフローチャートである。
【図２０】条件２を用いたパケット検出部の具体例を示す図である。
【図２１】図２０に示したパケット検出部の処理を示すフローチャートである。
【図２２】ライブ・マイグレーション時におけるＳＩＤ記憶部へのＳＩＤ設定処理を示すフローチャートである。
【図２３】条件３を用いたパケット検出部の具体例を示す図である。
【図２４】図２３に示したパケット検出部の処理を示すフローチャートである。
【図２５】条件４を用いたパケット検出部の具体例を示す図である。
【図２６】図２５に示したパケット検出部の処理を示すフローチャートである。
【図２７】条件５を用いたパケット検出部の具体例を示す図である。
【図２８】図２７に示したパケット検出部の処理を示すフローチャートである。
【図２９】条件１および２を用いたパケット検出部の具体例を示す図である。
【図３０】図２９に示したパケット検出部の処理を示すフローチャートである。
【図３１】条件２および３を用いたパケット検出部の具体例を示す図である。
【図３２】図３１に示したパケット検出部の処理を示すフローチャートである。
【図３３】条件２および４を用いたパケット検出部の具体例を示す図である。
【図３４】図３３に示したパケット検出部の処理を示すフローチャートである。
【図３５】条件２および５を用いたパケット検出部の具体例を示す図である。
【図３６】図３５に示したパケット検出部の処理を示すフローチャートである。
【図３７】条件３を用いたパケット検出部を実現する場合に使用するＦＩＦＯの構成例を示す図である。
【図３８】条件５を用いたパケット検出部を実現する場合に使用するＦＩＦＯの構成例を示す図である。
【発明を実施するための形態】
【００２９】
以下、本実施形態の一例について、図５〜図３８に基づいて説明する。なお、以下に説明する実施形態はあくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図ではない。すなわち、本実施形態は、その趣旨を逸脱しない範囲で、各実施例を組み合わせるなど種々変形して実施することができる。
【実施例】
【００３０】
図５は、本実施例に係る情報処理装置５００を説明する図である。
情報処理装置５００は、仮想機械実現手段５０１と、データ転送手段５０２と、検出手段５０３と、登録手段５０４と、出力手段５０５と、を備える。
【００３１】
仮想機械実現手段５０１は、ハードウェア資源５０６を管理することにより、１または２以上の仮想機械５０７を実現する。仮想機械実現手段５０１は、情報処理装置５００に含まれるＣＰＵに所定のプログラム命令を実行させることによって実現することができる。ハードウェア資源５０６には、情報処理装置５００に備わるメモリや、Ｉ／Ｏなどに関するハードウェアを含むことができる。なお、図５では、第１のメモリ領域５０８とハードウェア資源５０６とを別々に記載しているが、第１のメモリ領域５０８はハードウェア資源５０６に含むこともできる。
【００３２】
データ転送手段５０２は、仮想機械５０７に割り当てられる第１のメモリ領域５０８のアドレスと、第１のメモリ領域５０８の実メモリである第２のメモリ領域のアドレスと、を相互に変換する。これにより、データ転送手段５０２は、入出力装置５１０から仮想機械５０７に割り当てられる第１のメモリ領域５０８に直接的にデータ転送を行なう。このようなデータ転送は、例えば、ＩＯＭＭＵなどを利用して実現することができる。なお、入出力装置５１０は、情報処理装置５００と通信可能に接続する外部装置５０９とのデータの入出力を制御する装置である。
【００３３】
検出手段５０３は、入出力装置５１０から仮想機械５０７に割り当てられる第１のメモリ領域５０８に直接的にデータ転送されるデータを検出する。
登録手段５０４は、検出手段５０３により検出したデータが一定の条件を満たす場合に、検出手段５０３が検出したデータにより変更される第１のメモリ領域５０８に関する更新情報を生成し、更新情報を第１記憶部５１１に記憶する。更新情報には、検出手段５０３が検出したデータにより変更される第１のメモリ領域５０８のアドレスと、データの出力元の出力もとのユニットを識別する識別情報と、を含むことができる。
【００３４】
出力手段５０５は、第１記憶部５１１に記憶される更新情報を出力する。
以上のように、登録手段５０４は、検出手段５０３が検出したデータにより変更される第１のメモリ領域５０８に関する更新情報を第１記憶部５１１に記憶する。そして、出力手段５０５は、第１記憶部５１１に記憶される更新情報を出力する。
【００３５】
したがって、情報処理装置５００で動作する仮想機械５０７は、データ転送手段５０２によって、入出力装置５１０から仮想機械５０７に割り当てられる第１のメモリ領域５０８に直接的にデータ転送されたメモリ領域の更新情報を得ることが可能となる。
【００３６】
その結果、入出力装置５１０から、仮想機械５０７に割り当てられる第１のメモリ領域５０８に直接的にデータ転送するデータ転送手段５０２を備える情報処理装置５００であっても、仮想機械５０７のライブ・マイグレーションを実行することが可能となる。
【００３７】
また、登録手段５０４は、検出手段５０３により検出したデータが一定の条件を満たす場合にだけ更新情報を生成し、更新情報を第１記憶部５１１に記憶する。その結果、第１記憶部５１１を実現するためのハードウェア資源を少なくすることができる。
【００３８】
以上のように、入出力装置５１０から第１のメモリ領域５０８に直接的にデータ転送するデータ転送手段５０２を備える情報処理装置５００であっても、少ないハードウェア資源で仮想機械５０７のライブ・マイグレーションを実行することが可能となる。
【その他の実施例】
【００３９】
図６は、情報処理装置６００の構成例を示す図である。
情報処理装置６００は、演算処理装置としてのＣＰＵ６１０および６１１と、主記憶装置としてのメモリ６２０と、メモリ制御装置としてのノース・ブリッジ６３０と、を備える。又、情報処理装置６００は、入出力制御装置としてのＩＯアダプタ６４０、６４１および６４２と、ＰＣＩｅスイッチ（ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｗｉｔｃｈ）６５０と、を備える。
【００４０】
ＣＰＵ６１０および６１１は、メモリ６２０に展開されるプログラムを実行する演算処理装置である。ＣＰＵ６１０および６１１は、所定のプログラムを実行することにより、サーバの仮想化を実現する。また、ＣＰＵ６１０および６１１は、ストレージ＃０や＃１などから所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。
【００４１】
なお、サーバの仮想化に必要なハードウェア資源やメモリ等管理などの技術については従来技術を利用することができる。
メモリ６２０は、ＣＰＵ６１０および６１１が実行するプログラムやデータを記憶する揮発性メモリである。例えば、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などがメモリ６２０として使用される。なお、必要に応じて不揮発性メモリを使用してもよい。
【００４２】
ノース・ブリッジ６３０は、ＣＰＵ６１０および６１１と、メモリ６２０およびＰＣＩｅスイッチ６５０と接続している。ノース・ブリッジ６３０は、ＣＰＵ６１０および６１１と、メモリ６２０やＰＣＩｅスイッチ６５０と、が相互に通信可能となるようにデータ転送路を制御する。
【００４３】
また、ノース・ブリッジ６３０は、ＩＯＭＭＵ６３１と、ＩＯテーブル記憶部６３２と、を備える。
ＩＯＭＭＵ６３１は、ゲスト物理メモリのアドレスとホスト物理メモリのアドレスとの変換を実施するなどのメモリ管理を行なうメモリ管理ユニットである。以下、ゲスト物理メモリのアドレスを「ゲスト物理アドレス」といい、「ＧＰＡ（Ｇｕｅｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）」と略記する。また、ホスト物理メモリのアドレスを「ホスト物理アドレス」といい、「ＨＰＡ（Ｈｏｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）」と略記する。
【００４４】
ＩＯテーブル記憶部６３２は、ＩＯＭＭＵ６３１がＧＰＡとＨＰＡの変換を行なうときに使用するＩＯテーブルを記憶する記憶装置である。例えば、キャッシュメモリなどがＩＯテーブル記憶部６３２として使用される。ＩＯテーブルについては、図７で説明する。
【００４５】
ＩＯアダプタ６４０、６４１および６４２は、情報処理装置６００と接続するＩＯ装置とのインタフェースである。ＤＭＡを行なうＤＭＡ回路は、各ＩＯアダプタ６４０、６４１および６４２に備わる。ＩＯ装置とは、例えば、図６に示すデータを記憶するストレージ＃０、＃１やネットワークと接続するネットワーク機器などの入出力装置である。
【００４６】
ＰＣＩｅスイッチ６５０は、ノース・ブリッジ６３０、ＩＯアダプタ６４０、６４１および６４２と接続している。また、ＰＣＩｅスイッチ６５０は、ノース・ブリッジ６３０とＩＯアダプタ６４０、６４１および６４２との間を結ぶデータ転送路の切り替え制御などを行なう。情報処理装置６００は、データ転送路にシリアル転送インタフェースの規格である「ＰＣＩ  Ｅｘｐｒｅｓｓ  ２．０」を使用している。
【００４７】
また、ＰＣＩｅスイッチ６５０は、ダーティ・ページ管理ユニット６５１と、ダーティ・ページ記憶部６５２と、を備える。
ダーティ・ページ管理ユニット６５１は、ＩＯアダプタ６４０、６４１または６４２からメモリ６２０に、ＤＭＡライトによって転送されるデータとしてのパケットを検出する。そして、ダーティ・ページ管理ユニット６５１は、ＤＭＡライトによって追加、変更または更新等されたデータに関する情報をページ単位でダーティ・ページ記憶部６５２に記憶する。
【００４８】
以下、ＤＭＡライトによって追加、変更または更新等されたページ単位のデータを、「ダーティ・ページ」という。また、ダーティ・ページに関する情報を、「ダーティ・ページ情報」という。
【００４９】
ダーティ・ページ記憶部６５２は、ダーティ・ページ情報を記憶する記憶装置である。例えば、スタティックＲＡＭなどがダーティ・ページ記憶部６５２として使用される。
情報処理装置６００は、ライブ・マイグレーションを実施するために情報処理装置６０１とネットワークを介して接続している。また、情報処理装置６００と情報処理装置６０１は、ストレージ＃０および＃１を共有する。
【００５０】
情報処理装置６０１は、ＣＰＵ６６０および６６１と、メモリ６７０と、ノース・ブリッジ６８０と、ＩＯアダプタ６９０、６９１および６９２と、ＰＣＩｅスイッチ７００と、を備える。
【００５１】
ＣＰＵ６６０、６６１、メモリ６７０およびノース・ブリッジ６８０は、ＣＰＵ６１０、６１１、メモリ６２０およびノース・ブリッジ６３０と、同様の機能を有する。また、ＩＯアダプタ６９０、６９１、６９２およびＰＣＩｅスイッチ７００は、ＩＯアダプタ６４０、６４１、６４２およびＰＣＩｅスイッチ６５０と、同様の機能を有する。
【００５２】
ただし、ノース・ブリッジ６８０には、ＩＯＭＭＵ６３１およびＩＯテーブル記憶部６３２を備えなくてもよい。同様に、ＰＣＩｅスイッチ７００には、ダーティ・ページ管理ユニット６５１およびダーティ・ページ記憶部６５２を備えなくてもよい。
【００５３】
情報処理装置６００と接続する情報処理装置６０１は、図３で示した一般的なライブ・マイグレーションが実行可能であればよい。
【００５４】
図６に示した構成は、本実施例に係る情報処理装置６００の一例である。したがって、図６に示す構成に情報処理装置６００の構成を限定する趣旨ではない。例えば、ＣＰＵの数やＩＯアダプタの数、情報処理装置６００を構成する各ユニットの配置などを図６に示すものに限定する趣旨ではない。
【００５５】
また、情報処理装置６００は、ＣＤやＤＶＤなどの可搬記憶媒体を駆動する媒体駆動装置６４３を備えてもよい。本実施例に係るライブ・マイグレーションをＣＤやＤＶＤなどの可搬記憶媒体に記憶した場合、ＣＰＵ６１０および６１１は、媒体駆動装置６４３を介して可搬記憶媒体から所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。
【００５６】
図７は、ノース・ブリッジ６３０におけるＤＭＡ処理の動作を説明する図である。
ＤＭＡパケット７１０および７１１は、ＤＭＡ処理によりＩＯアダプタ６４０、６４１または６４２から所定の転送先に転送されるデータとしてのパケットである。
【００５７】
ＩＯテーブル７２０は、ＩＯテーブル記憶部６３２に記憶されるＩＯテーブルを示している。ＩＯテーブル７２０は、ＧＰＡとＨＰＡのアドレス変換テーブルである。ＩＯテーブル７２０は、ＧＰＡとソースＩＤとを含むアドレスに対応するＨＰＡを定義する。ソースＩＤとは、パケットの転送元のユニットを識別するＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｄａｔａ）である。以下では、ソースＩＤを「ＳＩＤ（Ｓｏｕｒｃｅ  ＩＤ）」と略記する。
【００５８】
ＩＯテーブル７２０は、後述するページテーブル７３０のエントリのうち頻繁に使用する一部のエントリをキャッシュ（一時保持）するものである。
ページテーブル７３０は、ＧＰＡとＨＰＡのアドレス変換テーブルである。ページテーブル７３０は、ＧＰＡに対応するＨＰＡを定義している。
【００５９】
ＩＯＭＭＵ６３１は、ＤＭＡパケット７１０を検出すると、検出したＤＭＡパケット７１０のヘッダから、ＧＰＡとＳＩＤとを取得する。
すると、ＩＯＭＭＵ６３１は、ＩＯテーブル７２０を参照する。そして、ＩＯＭＭＵ６３１は、ＤＭＡパケット７１０から取得したＧＰＡとＳＩＤとを含むアドレスが、ＩＯテーブル７２０に登録されているか否かを判別する。
【００６０】
ＤＭＡパケット７１０から取得したＧＰＡとＳＩＤとを含むアドレスが登録されている場合、ＩＯＭＭＵ６３１は、そのＧＰＡとＳＩＤとを含むアドレスに対応するＨＰＡを取得する。
【００６１】
そして、ＩＯＭＭＵ６３１は、ＤＭＡパケット７１０のヘッダに設定されている転送先を示すＧＰＡを、ＩＯテーブル７２０から取得したＨＰＡに変更する。
一方、ＤＭＡパケット７１０から取得したＧＰＡとＳＩＤとを含むアドレスがＩＯテーブル７２０に登録されていない場合、ＩＯＭＭＵ６３１は、メモリ６２０に格納されているページテーブル７３０を参照する。
【００６２】
そして、ＩＯＭＭＵ６３１は、ページテーブル７３０のアドレスであって、ＤＭＡパケット７１０から取得したＧＰＡと同一のアドレスに登録されているＨＰＡを取得する。
そして、ＩＯＭＭＵ６３１は、ＤＭＡパケット７１０のヘッダに設定されている転送先を示すＧＰＡを、ページテーブル７３０から取得したＨＰＡに変更する。
【００６３】
以上のようにして転送先のアドレスがＧＰＡからＨＰＡに変換されたＤＭＡパケット７１１は、メモリ６２０に出力される。
【００６４】
図８は、ＰＣＩｅスイッチ６５０におけるＤＭＡ処理の動作を説明する図である。
ダーティ・ページ管理ユニット６５１は、制御Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）部８１０と、パケット検出部８２０と、ライトポインタ８３０と、リードポインタ８４０と、を備える。
【００６５】
なお、ダーティ・ページ管理ユニット６５１の動作の理解を容易にするために、図８では、ダーティ・ページ管理ユニット６５１の中にダーティ・ページ記憶部６５２を記載している。
【００６６】
ダーティ・ページ記憶部６５２は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ：先入れ先出しメモリ）を実現するメモリ＃０および＃１を備える。以下、ＦＩＦＯを実現するメモリ＃０および＃１をそれぞれ「ＦＩＦＯ＃０」、「ＦＩＦＯ＃１」という。
【００６７】
制御Ｉ／Ｆ部８１０は、ダーティ・ページ管理ユニット６５１のインタフェースである。ＶＭＭ１０２は、制御Ｉ／Ｆ部８１０を介してＦＩＦＯ＃０または＃１に記憶されているダーティ・ページ情報を取得する。
【００６８】
制御Ｉ／Ｆ部８１０は、ステータスレジスタ８１１と、データレジスタ８１２と、コントロールレジスタ８１３と、を備える。
ステータスレジスタ８１１は、ＶＭＭ１０２などのソフトウェアからリード／ライトが可能なレジスタである。ステータスレジスタ８１１は、以下のような状態表示ビットを備える。
【００６９】
オーバーフロー情報ビット＃０：ＦＩＦＯ＃０がオーバーフローを起こしたことを示す。
オーバーフロー情報ビット＃１：ＦＩＦＯ＃１がオーバーフローを起こしたことを示す。
【００７０】
有効データカウント＃０：ＦＩＦＯ＃０において、ライトポインタ８３０が示すアドレスとリードポインタ８４０が示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がＦＩＦＯ＃０にどれだけ残っているかを示す。
【００７１】
有効データカウント＃１：ＦＩＦＯ＃１において、ライトポインタが示すアドレスとリードポインタが示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がＦＩＦＯ＃１にどれだけ残っているかを示す。
【００７２】
データレジスタ８１２は、ＶＭＭ１０２などのソフトウェアからリードが可能なレジスタである。ＦＩＦＯ＃０または＃１に記憶されているデータをＶＭＭ１０２から読み出すために使用するレジスタである。
【００７３】
データレジスタ８１２は、コントロールレジスタ８１３のリードセレクトビットで指定したＦＩＦＯ＃０または＃１から読み出されたダーティ・ページ情報がセットされる。ダーティ・ページ管理ユニット６５１は、データレジスタ８１２に格納されているダーティ・ページ情報がリードされると同時に、リードポインタ８４０に、次のダーティ・ページ情報が記憶されるアドレスに設定する。
【００７４】
コントロールレジスタ８１３は、ＶＭＭ１０２などのソフトウェアからリード／ライトが可能なレジスタである。コントロールレジスタ８１３は、以下のような制御ビットを備える。
【００７５】
スタートビット：ＦＩＦＯ＃０または＃１へのダーティ・ページ情報の登録を開始する。
ストップビット：ＦＩＦＯ＃０または＃１へのダーティ・ページ情報の登録を停止する。
【００７６】
クリアビット  ：ＦＩＦＯ＃０または＃１のポインタを０に戻し、ＦＩＦＯ＃０または＃１を空の状態にする。空の状態とは、ＦＩＦＯに登録されているダーティ・ページ情報がない状態である。
【００７７】
ライトセレクトビット：２つのＦＩＦＯ＃０または＃１のどちらにダーティ・ページ情報を登録するかを選択する。
リードセレクトビット：２つのＦＩＦＯ＃０または＃１のどちらからダーティ・ページ情報を読み出すかを選択する。
【００７８】
パケット検出部８２０は、コントロールレジスタ８１３のスタートビットが「１」に設定されている間、ＰＣＩｅスイッチ６５０に入力されるＤＭＡライトパケット８５０を検出する。そして、パケット検出部８２０は、検出したＤＭＡライトパケット８５０のヘッダから、ＧＰＡとＳＩＤを取得する。さらに、パケット検出部８２０は、取得したＧＰＡからページ部を取得する。以下、ＧＰＡから取得したページ部のデータを「ＧＰＡページ」という。ＧＰＡページについては、図１０で後述する。さらに、パケット検出部８２０は、ＧＰＡページとＳＩＤとを含むデータをダーティ・ページ情報として、選択中のＦＩＦＯ＃０または＃１に書き込む。同時に、パケット検出部８２０は、ライトポインタ８３０に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
【００７９】
ここで、ＦＩＦＯ＃０および＃１は、オーバーフローを避けるために、サイズを大きくする必要がある。例えば、ＤＭＡ性能が１０Ｇｂｐｓ、ＦＩＦＯ＃０と＃１との切り替え時間が１ｍｓの場合、約１万エントリのダーティ・ページ情報を記憶できる巨大なＦＩＦＯが必要となる。大量のハードウェア資源が必要となる。
【００８０】
さらに、ＦＩＦＯのサイズを大きくした場合でも、ＤＭＡライトが大量に発生すると、容易にＦＩＦＯがオーバーフローしてしまう可能性が増大する。ＣＰＵがＦＩＦＯに記憶されているダーティ・ページ情報を読み出す速度よりも、ＤＭＡ転送の速度、すなわち、パケット検出部８２０がＤＭＡライトを検出してダーティ・ページ情報をＦＩＦＯに書き込む速度の方が高速だからである。
【００８１】
そこで、本実施例に係るパケット検出部８２０は、取得したＧＰＡページとＳＩＤの一方または両方が、特定の条件を満たすか否かを判別する。そして、特定の条件を満たす場合、パケット検出部８２０は、ＧＰＡページとＳＩＤとを含むデータをダーティ・ページ情報として、選択中のＦＩＦＯ＃０または＃１に書き込む。同時に、パケット検出部８２０は、ライトポインタ８３０に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
【００８２】
ライトポインタ８３０は、ＦＩＦＯ＃０または＃１へ最後に書き込まれたダーティ・ページ情報のアドレスを示す。本実施例では、図８に示すように、ＦＩＦＯ＃０用とＦＩＦＯ＃１用とにそれぞれライトポインタ８３０が備えられている。
【００８３】
リードポインタ８４０は、ＦＩＦＯ＃０または＃１から最後に読み出されたダーティ・ページ情報のアドレスを示す。本実施例では、図８に示すように、ＦＩＦＯ＃０用とＦＩＦＯ＃１用とにそれぞれリードポインタ８４０を備える。
【００８４】
なお、ＦＩＦＯ＃０が選択されている場合には、ＦＩＦＯ＃０についてのライトポインタおよびリードポインタがライトポインタ８３０およびリードポインタ８４０に格納される。
【００８５】
同様に、ＦＩＦＯ＃１が選択されている場合には、ＦＩＦＯ＃１についてのライトポインタおよびリードポインタがライトポインタ８３０およびリードポインタ８４０に格納される。
【００８６】
図９は、パケット検出部８２０の構成例を示す図である。なお、図９に記載のＦＩＦＯ＃Ｎは、選択中のＦＩＦＯ＃０または＃１を示す。同様に、図１８、図２０、図２３、図２５、図２７、図２９、図３１、図３３および図３５に記載のＦＩＦＯ＃Ｎも、選択中のＦＩＦＯ＃０または＃１を示す。
【００８７】
パケット検出部８２０は、ＦＩＦＯ制御部９０１と、判定部９０２と、を備える。
ＦＩＦＯ制御部９０１は、制御Ｉ／Ｆ部８１０に含まれるコントロールレジスタ８１３のスタートビットが「１」に設定されている間、ＤＭＡライトパケット８５０を検出する。そして、ＦＩＦＯ制御部９０１は、検出したＤＭＡライトパケット８５０のヘッダから、ＧＰＡページとＳＩＤを取得する。
【００８８】
ＦＩＦＯ制御部９０１は、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む必要がある、との判定結果を判定部９０２から得る。この場合、ＦＩＦＯ制御部９０１は、ＤＭＡライトパケット８５０から取得したＧＰＡページとＳＩＤとを含むデータを、ダーティ・ページ情報として、選択中のＦＩＦＯ＃０または＃１に書き込む。同時に、ＦＩＦＯ制御部９０１は、ライトポインタ８３０に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
【００８９】
また、ＦＩＦＯ制御部９０１は、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む必要がない、との判定結果を判定部９０２から得る。この場合、ＦＩＦＯ制御部９０１は、ダーティ・ページ情報の、選択中のＦＩＦＯ＃０または＃１への書き込みは行わない。
【００９０】
判定部９０２は、ＤＭＡライトパケット８５０から取得したＧＰＡページとＳＩＤの一方または両方が、特定の条件を満たすか否かを判別する。特定の条件を満たす場合、判定部９０２は、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む必要があると判断し、その旨をＦＩＦＯ制御部９０１に通知する。
【００９１】
また、特定の条件を満たさない場合、判定部９０２は、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む必要がないと判断し、その旨をＦＩＦＯ制御部９０１に通知する。
【００９２】
判定部９０２が使用する「特定の条件」として、下記「条件１」〜「条件５」や、下記「条件１」〜「条件５」の組み合わせなど、様々な条件を用いることができる。
条件１：ＤＭＡライトパケット８５０から取得したＤＭＡアドレスが、選択中のＦＩＦＯ＃０または＃１に最後に書き込まれたＤＭＡアドレスと異なる場合だけ、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む。条件１を用いた場合のパケット検出部８２０の具体例については、図１８および図１９で後述する。
【００９３】
条件２：ＤＭＡライトパケット８５０の送信元のユニットが、ライブ・マイグレーションの対象である場合だけ、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む。条件２を用いた場合のパケット検出部８２０の具体例については、図２０〜図２２で後述する。
【００９４】
条件３：ＤＭＡライトが、選択中のＦＩＦＯ＃０または＃１に最後に書き込まれたＤＭＡアドレスを先頭アドレスとしたアクセスであって、複数ページをまたぐ連続アクセスでない場合だけ、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む。条件３を用いた場合のパケット検出部８２０の具体例については、図２３および図２４で後述する。
【００９５】
条件４：ＤＭＡライトパケット８５０から取得したＤＭＡアドレスが、選択中のＦＩＦＯ＃０または＃１に書き込まれた複数のＤＭＡアドレスのいずれとも異なる場合だけ、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む。条件４を用いた場合のパケット検出部８２０の具体例については、図２５および図２６で後述する。
【００９６】
条件５：ＤＭＡライトパケット８５０から取得したＤＭＡアドレスが、選択中のＦＩＦＯ＃０または＃１に書き込まれた複数のＤＭＡアドレスのいずれとも一定範囲内にない場合だけ、ダーティ・ページ情報を、選択中のＦＩＦＯ＃０または＃１に書き込む。条件５を用いた場合のパケット検出部８２０の具体例については、図２７および図２８で後述する。
【００９７】
また、上記「条件１」〜「条件５」を組み合わせて使用した場合のパケット検出部８２０の具体例については、図２９〜図３８で後述する。
【００９８】
図１０は、ＦＩＦＯ＃０の構成例を示す図である。なお、図１０には、ＦＩＦＯ＃０についてのみ示すが、ＦＩＦＯ＃１についても同様の構成である。
【００９９】
ＦＩＦＯ＃０は、ＤＭＡパケットの送信元のＩＯアダプタを示すＳＩＤと、そのＤＭＡパケットの転送先を示すＧＰＡのＧＰＡページと、を備える。ＰＣＩ  Ｅｘｐｒｅｓｓの場合、ＳＩＤは、ＤＭＡパケットの送信元のバス番号と、そのＤＭＡパケットの送信元のファンクション番号と、を含む。
【０１００】
本実施例では、１ページのサイズを例えば４ＫＢとする。この場合、６４ビット幅のアドレスデータの下位１２ビットは同一ページ内のアドレスを表す。したがって、本実施例では、ＧＰＡのうち、ビット６３〜１２までのデータを含むＧＰＡ［６３：１２］、すなわちＧＰＡページをＦＩＦＯ＃０に登録する。
【０１０１】
ＧＰＡに３２ビット長のデータを使用する場合、ＧＰＡのビット６３〜３２に「０」を補完した６４ビット長のアドレスデータについてのＧＰＡページをＦＩＦＯ＃０に登録する。
上述のＳＩＤ、ＧＰＡページは、ＤＭＡパケットのヘッダから取得することができる。
【０１０２】
図１１は、ＤＭＡパケットのヘッダの構成例を示している。本実施例では、ＰＣＩｅスイッチ６５０を使用しているので、ＤＭＡパケットのヘッダは規格「ＰＣＩ  Ｅｘｐｒｅｓｓ  ２．０」に準じる。
【０１０３】
図１１の（１）に示すＤＭＡパケットのヘッダ１１０１は、ＧＰＡに３２ビット幅のアドレスデータを使用する場合のＤＭＡパケットのヘッダの構成例を示す。また、図１１の（２）に示すＤＭＡパケットのヘッダ１１０２は、ＧＰＡに６４ビット幅のアドレスデータを使用する場合のＤＭＡパケットのヘッダの構成例を示す。
【０１０４】
「Ｒ」は、リザーブ領域である。常に「０」が設定される。
「Ｆｍｔ（Ｆｏｒｍａｔ）」は、ペイロードに格納されたデータの有無、ヘッダ長を示す２ビット幅のデータである。
【０１０５】
「Ｔｙｐｅ」は、パケットのタイプを示す５ビット幅のデータである。
「ＴＣ（Ｔｒａｎｓａｃｔｉｏｎ  Ｃｌａｓｓ）」は、パケットの優先度を示す３ビット幅のデータである。
【０１０６】
「ＴＤ（ＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）  Ｄｉｇｅｓｔ）」は、エラーチェック符号であるＥＣＲＣ（Ｅｘｔｅｎｄｅｄ  Ｃｙｃｌｉｃａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）の有無を示す１ビット幅のデータである。
【０１０７】
「ＥＰ（Ｅｒｒｏｒ  Ｐｏｉｓｏｎｅｄ）」は、ペイロードに格納されたデータが壊れている可能性を示す１ビット幅のデータである。
「Ａｔｔｒ（Ａｔｔｒｉｂｕｔｅｓ）」は、パケットの順序やプロトコルに関する補足情報を示す２ビット幅のデータである。
【０１０８】
「ＡＴ（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）」は、アドレス変換に関する補足情報を示す２ビット幅のデータである。
「Ｌｅｎｇｔｈ」は、ペイロードに格納されているデータのデータ長を示す１０ビット幅のデータである。
【０１０９】
「バス番号」は、ＤＭＡパケットの送信元のバス番号を示す８ビット幅のデータである。
「ファンクション番号」は、ＤＭＡパケットの送信元のファンクション番号を示す８ビット幅のデータである。
【０１１０】
「Ｔａｇ」は、ＤＭＡパケットの管理番号を示す８ビット幅のデータである。
「Ｌａｓｔ  ＤＷ  ＢＥ」は、Ｌａｓｔ  ＤＷ  Ｂｙｔｅの有効・無効を示す４ビット幅のデータである。
【０１１１】
「１ｓｔ  ＤＷ  ＢＥ」は、１ｓｔ  ＤＷ  Ｂｙｔｅの有効・無効を示す４ビット幅のデータである。
「アドレス」は、３０ビット幅または６２ビット幅のアドレスデータである。
【０１１２】
図１２は、ダーティ・ページ管理ユニット６５１によるダーティ・ページ情報の登録処理を示すフローチャートである。なお、図１２中に記載のＦＩＦＯは、ＦＩＦＯ＃０または＃１のうち、コントロールレジスタ８１３のライトセレクトビットに設定されたＦＩＦＯのことを示す。
【０１１３】
ＶＭＭ１０２などのソフトウェアが、ダーティ・ページ管理ユニット６５１に備わるコントロールレジスタ８１３のスタートビットを「１」に設定すると、ダーティ・ページ管理ユニット６５１は、ダーティ・ページ情報の登録処理を開始する（ステップＳ１２００）。
【０１１４】
ステップＳ１２０１において、パケット検出部８２０は、ＩＯアダプタ６４０、６４１または６４２などのＩＯアダプタからＰＣＩｅスイッチ６５０に入力したＤＭＡパケットのヘッダを参照する。
【０１１５】
そして、パケット検出部８２０は、ＤＭＡパケットのヘッダから「Ｆｍｔ」と「Ｔｙｐｅ」を取得する。
パケット検出部８２０は、ＩＯアダプタからメモリ６２０に転送され、Ｆｍｔ＝１０（２進数）またはＦｍｔ＝１１（２進数）、かつＴｙｐｅ＝０００００（２進数）であるＤＭＡライトパケットを検出すると、ステップＳ１２０２に移行する（ステップＳ１２０１  ＹＥＳ）。
【０１１６】
なお、Ｆｍｔ＝１０（２進数）の場合、ＧＰＡに３２ビット幅のアドレスデータを使用するＤＭＡパケットであることを示している。また、Ｆｍｔ＝１１（２進数）の場合、ＧＰＡに６４ビット幅のアドレスデータを使用するＤＭＡパケットであることを示している。
また、Ｔｙｐｅ＝０００００（２進数）は、ＤＭＡライトパケットであることを示している。
【０１１７】
パケット検出部８２０は、ＰＣＩｅスイッチ６５０に入力したＤＭＡパケットが、ＤＭＡライトパケットでないと判断すると、ステップＳ１２０１を再度実行する（ステップＳ１２０１  ＮＯ）。
【０１１８】
ステップＳ１２０２において、パケット検出部８２０は、ライトポインタ８３０が指すアドレスとリードポインタ８４０が指すアドレスとの差が、ＦＩＦＯのサイズにダーティ・ページ情報のサイズを除した値に等しいか否かにより、ＦＩＦＯがＦｕｌｌか否かを判別する。
【０１１９】
ライトポインタ８３０が指すアドレスとリードポインタ８４０が指すアドレスとの差が０の場合、パケット検出部８２０は、ＦＩＦＯがＦｕｌｌと判断する（ステップＳ１２０２  ＹＥＳ）。この場合、パケット検出部８２０は、処理をステップＳ１２０３に移行する。
【０１２０】
ステップＳ１２０３において、パケット検出部８２０は、ステータスレジスタ８１１のオーバーフロー情報ビットに「１」を設定すると、処理をステップＳ１２０９に移行する。そして、ダーティ・ページ管理ユニット６５１は、ダーティ・ページ情報の登録処理を終了する。
【０１２１】
ステップＳ１２０２において、ライトポインタ８３０が指すアドレスとリードポインタ８４０が指すアドレスとの差がＦＩＦＯのサイズにダーティ・ページ情報のサイズを除した値に等しくない場合、パケット検出部８２０は、ＦＩＦＯがＦｕｌｌでないと判断する（ステップＳ１２０２  ＮＯ）。この場合、パケット検出部８２０は、処理をステップＳ１２０４に移行する。
【０１２２】
ステップＳ１２０４において、パケット検出部８２０は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部８２０は、ＧＰＡからＧＰＡページを取得する。
【０１２３】
ステップＳ１２０５において、パケット検出部８２０は、ステップＳ１２０４で取得したＳＩＤおよびＧＰＡページのいずれか一方または両方に基づいて、ＦＩＦＯへのダーティ・ページ情報の書き込みが必要か否かを判定する。ＦＩＦＯへのダーティ・ページ情報の書き込みは不要と判定した場合（ステップＳ１２０５  ＮＯ）、パケット検出部８２０は、ダーティ・ページ情報の登録処理を終了する（ステップＳ１２０９）。
【０１２４】
また、ＦＩＦＯへのダーティ・ページ情報の書き込みが必要と判定した場合（ステップＳ１２０５  ＹＥＳ）、パケット検出部８２０は、処理をステップＳ１２０６に移行する。この場合、パケット検出部８２０は、ライトポインタ８３０が示すＦＩＦＯのアドレスに、ステップＳ１２０４で取得したＳＩＤとＧＰＡページとを含むデータをダーティ・ページ情報として登録する。
【０１２５】
ステップＳ１２０７において、パケット検出部８２０は、ダーティ・ページ情報を格納する領域サイズだけ、ライトポインタ８３０に格納されているアドレスをインクリメントする。
【０１２６】
ステップＳ１２０８において、パケット検出部８２０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３を参照する。そして、コントロールレジスタ８１３のストップビットに「１」が設定されている場合（ステップＳ１２０８  ＹＥＳ）、パケット検出部８２０は、処理をステップＳ１２０９に移行する。そして、ダーティ・ページ管理ユニット６５１は、ダーティ・ページ情報の登録処理を終了する。
【０１２７】
ステップＳ１２０８において、コントロールレジスタ８１３のストップビットが「１」でない場合、パケット検出部８２０は、処理をステップＳ１２０１に移行する（ステップＳ１２０８  ＮＯ）。
【０１２８】
図１３は、ダーティ・ページ管理ユニット６５１によるダーティ・ページ情報の出力処理を示すフローチャートである。なお、図１３中に記載のＦＩＦＯは、ＦＩＦＯ＃０または＃１のうち、コントロールレジスタ８１３のリードセレクトビットに設定されたＦＩＦＯのことを示す。
【０１２９】
ステップＳ１３０１において、ＶＭＭ１０２などのソフトウェアが、ダーティ・ページ管理ユニット６５１に備わるデータレジスタ８１２からダーティ・ページ情報を読み出すと、制御Ｉ／Ｆ部８１０は、処理をステップＳ１３０２に移行する。
【０１３０】
ステップＳ１３０２において、制御Ｉ／Ｆ部８１０は、ダーティ・ページ情報を格納する領域サイズだけ、リードポインタ８４０に格納されているアドレスをインクリメントする。
【０１３１】
ステップＳ１３０３において、制御Ｉ／Ｆ部８１０は、リードポインタ８４０が示すＦＩＦＯのアドレスからダーティ・ページ情報を取得し、データレジスタ８１２にラッチする。
【０１３２】
以上の処理が終了すると、制御Ｉ／Ｆ部８１０は、処理をステップＳ１３０４に移行する。そして、制御Ｉ／Ｆ部８１０は、ダーティ・ページ情報の出力処理を終了する。
【０１３３】
図１４は、本実施例に係るライブ・マイグレーションの概要を説明する図である。
図１４に示す情報処理システム１４００は、サーバ＃０と、サーバ＃０とネットワークを介して互いに通信可能に接続するサーバ＃１と、サーバ＃０とサーバ＃１とが共有するストレージ＃０および＃１と、を備える。
【０１３４】
サーバ＃０は、図６に示した情報処理装置６００である。また、サーバ＃０は、図６に示した情報処理装置６０１である。
サーバ＃０ではＶＭＭ＃０が動作する。ＶＭＭ＃０は、ＶＭ＃０およびＶＭ＃１を実現する。一方、サーバ＃１ではＶＭＭ＃１が動作する。また、ＶＭ＃０はストレージ＃０を専有し、ＶＭ＃１はストレージ＃１を専有する。
【０１３５】
以上の状態において、サーバ＃０で動作するＶＭＭ＃０が実現するＶＭ＃０を、サーバ＃１で動作するＶＭＭ＃１上に移動するライブ・マイグレーションを行なう場合について以下に説明する。
【０１３６】
図１５は、本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。
ステップＳ１５０１において、ＶＭＭ＃０は、ＶＭ＃０の移動先であるＶＭＭ＃１に対して、新たなＶＭに割り当てるメモリ領域の確保を要求する。以下、ＶＭに割り当てるメモリ領域を「ＶＭ領域」という。
【０１３７】
一方、ＶＭＭ＃１からＶＭ領域確保の要求を受けると、ＶＭＭ＃１は、サーバ＃１に備わるメモリの所定の領域にＶＭ領域を確保する。そして、サーバ＃１は、サーバ＃０に対してＶＭ領域の確保が完了したことを通知する。
【０１３８】
サーバ＃１からＶＭ領域の確保が完了した旨の通知を受けると、サーバ＃０は、処理をステップＳ１５０２に移行する。
ステップＳ１５０２において、ＶＭＭ＃０は、ある時点において、移動の対象であるＶＭ＃０に割り当てられているホスト物理メモリの領域に格納されているデータを取得する。この、ある時点（チェックポイント時点）においてＶＭに割り当てられているホスト物理メモリの領域に格納されているデータを「スナップショット」という。
【０１３９】
ステップＳ１５０３において、ＶＭＭ＃０は、ダーティ・ページ管理ユニット６５１のコントロールレジスタ８１３のスタートビットを「１」に設定し、ダーティ・ページ情報の記録を開始する。
【０１４０】
ステップＳ１５０４において、ＶＭＭ＃０は、ステップＳ１５０２で取得したスナップショットを、ＶＭ＃０の移動先のサーバ＃１に備わるメモリの所定の領域であって、ステップＳ１５０１で確保したＶＭ領域に、メモリ・コピーする。
【０１４１】
ステップＳ１５０５において、ＶＭＭ＃０は、ダーティ・ページ管理ユニット６５１から制御Ｉ／Ｆ部８１０のステータスレジスタ８１１の有効データカウントを介して、残りのダーティ・ページ情報数を取得する。そして、ＶＭＭ＃０は、残りのダーティ・ページ情報数とあらかじめ決められた閾値とを比較する。
【０１４２】
残りのダーティ・ページ情報数が閾値より大きい場合（ステップＳ１５０５  ＹＥＳ）、ＶＭＭ＃０は、処理をステップＳ１５０６に移行する。また、残りのダーティ・ページ情報数が閾値以下の場合（ステップＳ１５０５  ＮＯ）、ＶＭＭ＃０は、処理をステップＳ１５０７に移行する。
【０１４３】
ステップＳ１５０６において、ＶＭＭ＃０は、ダーティ・ページ管理ユニット６５１から制御Ｉ／Ｆ部８１０のデータレジスタ８１２を介して、ダーティ・ページ記憶部６５２に現在までに登録されている全てのダーティ・ページ情報を取得する。
【０１４４】
そして、ＶＭＭ＃０は、取得したダーティ・ページ情報に含まれるＧＰＡページをＨＰＡに変換する。
そして、ＶＭＭ＃０は、サーバ＃０に備わるメモリから、変換したＨＰＡに格納されているデータを取得する。ＶＭＭ＃０は、取得したデータを、ＶＭ＃０の移動先のサーバ＃１に備わるメモリの領域であって、ステップＳ１５０１で確保したＶＭ領域に、メモリ・コピーする。
【０１４５】
メモリ・コピーを実行すると、ＶＭＭ＃０は、処理をステップＳ１５０５に移行する。
以上に説明したステップＳ１５０２〜Ｓ１５０６の処理が「プレ・コピー」である。プレ・コピーは、ＶＭ＃０が業務を継続中に行なわれる。したがって、プレ・コピー中もＶＭＭ＃０は、ＩＯＭＭＵ６３１を介して、ストレージ＃０に対するリード／ライト処理を行なう。そのため、以下のストップ・アンド・コピーが必要となる。
【０１４６】
ステップＳ１５０７において、ＶＭＭ＃０は、ＶＭ＃０の業務を停止する。
ステップＳ１５０８において、ＶＭＭ＃０は、ステップＳ１５０６と同様の処理を実行する。
【０１４７】
以上に説明したステップＳ１５０７〜Ｓ１５０８の処理が「ストップ・アンド・コピー」である。
ステップＳ１５０９において、ＶＭＭ＃０は、ＶＭ＃０の移動先のサーバ＃１で動作しているＶＭＭ＃１に、メモリ・コピーの完了を通知する。
【０１４８】
ステップＳ１５１０において、ＶＭＭ＃０からメモリ・コピーの完了通知を受けると、ＶＭＭ＃１は、ＶＭＭ＃１上でＶＭ＃０の業務を開始させる。ＶＭＭ＃１上でＶＭ＃０が業務を再開すると、ＶＭＭ＃１は、処理をステップＳ１５１１に移行する。そして、ＶＭＭ＃０および＃１は、ライブ・マイグレーションを終了する。
【０１４９】
図１６は、プレ・コピーの具体的な処理を示すフローチャートである。
ステップＳ１６０１において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３のクリアビットに「１」を設定することにより、ＦＩＦＯ＃０および＃１を初期化する。
【０１５０】
また、ＶＭＭ＃０は、コントロールレジスタ８１３のライトセレクトビットを「０」に設定することにより、ダーティ・ページ情報を記録するＦＩＦＯをＦＩＦＯ＃０に設定する。同様に、ＶＭＭ＃０は、コントロールレジスタ８１３のリードセレクトビットを「０」に設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯをＦＩＦＯ＃０に設定する。
【０１５１】
ステップＳ１６０２において、ＶＭＭ＃０は、ダーティ・ページ管理ユニット６５１に備わるコントロールレジスタ８１３のスタートビットを「１」に設定することにより、ダーティ・ページ情報の記録を開始する。
【０１５２】
ステップＳ１６０３において、ＶＭＭ＃０は、メモリ・コピーを実行する。このステップＳ１６０３では、図１５に示したステップＳ１５０２〜Ｓ１５０４で説明したメモリ・コピー処理が行なわれる。
【０１５３】
ステップＳ１６０４において、ＶＭＭ＃０は、一定時間ウェイト状態に移行する。一定時間経過すると、ＶＭＭ＃０は、処理をステップＳ１６０５に移行する。
ステップＳ１６０５において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３のライトセレクトビットに「０」または「１」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯを変更する。
【０１５４】
例えば、現在選択中のＦＩＦＯがＦＩＦＯ＃０の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のライトセレクトビットに「１」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯをＦＩＦＯ＃１に変更する。
【０１５５】
同様に、現在選択中のＦＩＦＯがＦＩＦＯ＃１の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のライトセレクトビットに「０」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯをＦＩＦＯ＃０に変更する。
【０１５６】
ステップＳ１６０６において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるステータスレジスタ８１１を読み出す。
ステップＳ１６０７において、ＶＭＭ＃０は、現在選択中のＦＩＦＯのオーバーフロー情報ビットが「１」に設定されているか否かを判別する。
【０１５７】
現在選択中のＦＩＦＯのオーバーフロー情報ビットが「１」に設定されている場合（ステップＳ１６０７  ＹＥＳ）、ＶＭＭ＃０は、処理をステップＳ１６０８に移行する。この場合、ＶＭＭ＃０は、実行中のライブ・マイグレーションを中断、または最初からやり直す。
【０１５８】
ステップＳ１６０７において、現在選択中のＦＩＦＯのオーバーフロー情報ビットが「０」に設定されている場合（ステップＳ１６０７  ＮＯ）、ＶＭＭ＃０は、処理をステップＳ１６０９に移行する。
【０１５９】
ステップＳ１６０９において、ＶＭＭ＃０は、ステータスレジスタ８１１の有効データカウントに設定されている数だけデータレジスタ８１２を読み出し、ダーティ・ページ情報を取得する。
【０１６０】
ステップＳ１６１０において、ＶＭＭ＃０は、ステップＳ１６０９で読み出したダーティ・ページ情報のうち、ＳＩＤがストレージ＃０を示すダーティ・ページ情報のみを抽出する。ステップＳ１６１０または後述するＳ１５０７の処理で抽出するダーティ・ページ情報を「コピー対象ダーティ・ページ情報」という。
【０１６１】
ステップＳ１６１１において、ＶＭＭ＃０は、コピー対象ダーティ・ページ情報に含まれるＧＰＡページを、ページテーブル７３０にしたがって、ＨＰＡに変換する。この変換されたＨＰＡもページを示す。ページの単位は、ＧＰＡページと同じである。
【０１６２】
なお、図２３で後述するように、条件３を用いたパケット検出部８２０を実現する場合、ダーティ・ページ情報には、カウント値が含まれる。この場合、コピー対象ダーティ・ページ情報に含まれるＧＰＡページをＸとすると、ＶＭＭ＃０は、ＸからＸ＋カウント値までのＧＰＡページをＨＰＡに変換する。例えば、コピー対象ダーティ・ページ情報に含まれるＧＰＡページが０ｘ１００、カウント値が２の場合、ＶＭＭ＃０は、０ｘ１００、０ｘ１０１および０ｘ１０２のＧＰＡページをＨＰＡに変換する。
【０１６３】
また、図２７で後述するように、条件５を用いたパケット検出部８２０を実現する場合、ダーティ・ページ情報には、拡張サイズが含まれる。この場合、ＶＭＭ＃０は、コピー対象ダーティ・ページ情報に含まれるＧＰＡページを、拡張サイズが示すページ単位に変換する。そして、ＶＭＭ＃０は、変換された値をＨＰＡに変換する。例えば、コピー対象ダーティ・ページ情報に含まれるＧＰＡページの拡張サイズが８ＫＢの場合、ＶＭＭ＃０は、ＧＰＡページの下位０〜１２ビットをマスクした値をＨＰＡに変換する。
【０１６４】
ステップＳ１６１２において、ＶＭＭ＃０は、ステップＳ１６１１で変換されたＨＰＡが示すページの範囲に格納されているデータを、サーバ＃０に備わるメモリ６２０から取得する。そして、ＶＭＭ＃０は、取得したデータを、ＶＭ＃０の移動先であるＶＭＭ＃１に転送する。
【０１６５】
一方、ＶＭＭ＃１は、ＶＭＭ＃０からデータを受信すると、受信したデータを図１５に示したステップＳ１５０１の処理で確保したＶＭ領域に格納する。
ステップＳ１６１３において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３のリードセレクトビットに「０」または「１」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯを変更する。
【０１６６】
例えば、現在選択中のＦＩＦＯがＦＩＦＯ＃０の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のリードセレクトビットに「１」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯをＦＩＦＯ＃１に変更する。
【０１６７】
同様に、現在選択中のＦＩＦＯがＦＩＦＯ＃１の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のリードセレクトビットに「０」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯをＦＩＦＯ＃０に変更する。
【０１６８】
ステップＳ１６１４において、ＶＭＭ＃０は、プレ・コピーの完了条件を満たしているか否かを判別する。このステップＳ１６１４の処理では、図１５に示したステップＳ１５０５の処理が行なわれる。
【０１６９】
プレ・コピーの完了条件が満たされていると判断した場合（ステップＳ１６１４  ＹＥＳ）、ＶＭＭ＃０は、処理をステップＳ１６１５に移行する。この場合、ＶＭＭ＃０は、プレ・コピーを終了する。
【０１７０】
また、プレ・コピーの完了条件を満たされていないと判断した場合（ステップＳ１６１４  ＮＯ）、ＶＭＭ＃０は、処理をステップＳ１６０４に移行する。
【０１７１】
図１７は、ストップ・アンド・コピーの具体的な処理を示すフローチャートである。
図１６に示したプレ・コピーが完了すると、ＶＭＭ＃０は、ストップ・アンド・コピー処理を開始する。ＶＭＭ＃０は、ＶＭ＃０の業務を停止すると、処理をステップＳ１７０１に移行する（ステップＳ１７００）。
【０１７２】
ステップＳ１７０１において、ＶＭＭ＃０は、一定時間ウェイト状態に移行する。ＤＭＡライト処理が完全に停止するまでの待つためである。一定時間経過すると、ＶＭＭ＃０は、処理をステップＳ１７０２に移行する。
【０１７３】
ステップＳ１７０２において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３のライトセレクトビットに「０」または「１」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯを変更する。
【０１７４】
例えば、現在選択中のＦＩＦＯがＦＩＦＯ＃０の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のライトセレクトビットに「１」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯをＦＩＦＯ＃１に変更する。
【０１７５】
同様に、現在選択中のＦＩＦＯがＦＩＦＯ＃１の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のライトセレクトビットに「０」を設定することにより、ダーティ・ページ情報を記録するＦＩＦＯをＦＩＦＯ＃０に変更する。
【０１７６】
ステップＳ１７０３において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるステータスレジスタ８１１を読み出す。そして、ＶＭＭ＃０は、現在選択中のＦＩＦＯのオーバーフロー情報ビットが「１」に設定されているか否かを判別する。
【０１７７】
ステップＳ１７０４において、ＶＭＭ＃０は、現在選択中のＦＩＦＯのオーバーフロー情報ビットが「１」に設定されている場合（ステップＳ１７０４  ＹＥＳ）、ＶＭＭ＃０は、処理をステップＳ１７０５に移行する。この場合、ＶＭＭ＃０は、ライブ・マイグレーションを中断、または最初からやり直す。
【０１７８】
ステップＳ１７０４において、現在選択中のＦＩＦＯのオーバーフロー情報ビットが「０」に設定されている場合（ステップＳ１７０４  ＮＯ）、ＶＭＭ＃０は、処理をステップＳ１７０６に移行する。
【０１７９】
ステップＳ１７０６において、ＶＭＭ＃０は、ステータスレジスタ８１１の有効データカウントに設定されている数だけデータレジスタ８１２を読み出し、ダーティ・ページ情報を取得する。
【０１８０】
ステップＳ１７０７において、ＶＭＭ＃０は、ステップＳ１７０６で読み出したダーティ・ページ情報のうち、ダーティ・ページ情報に含まれるＳＩＤがストレージ＃０を示すコピー対象ダーティ・ページ情報を抽出する。
【０１８１】
ステップＳ１７０８において、ＶＭＭ＃０は、ステップＳ１６１１と同様に、コピー対象ダーティ・ページ情報に含まれるＧＰＡページを、ページテーブル７３０にしたがって、ＨＰＡに変換する。この変換されたＨＰＡもページを示す。ページの単位は、ＧＰＡページと同じである。
【０１８２】
ステップＳ１７０９において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるステータスレジスタ８１１の有効データカウントビットから、ＦＩＦＯにデータページ情報があるか否かを判別する。
【０１８３】
ステータスレジスタ８１１の有効データカウントが「０」の場合（ステップＳ１７０９  ＹＥＳ）、ＶＭＭ＃０は、ＦＩＦＯがｅｍｐｔｙと判断し、処理をステップＳ１７１０に移行する。
【０１８４】
ステップＳ１７１０において、ＶＭＭ＃０は、ステップＳ１７０８で変換されたＨＰＡが示すページの範囲に格納されているデータを、サーバ＃０に備わるメモリ６２０から取得する。そして、ＶＭＭ＃０は、取得したデータを、ＶＭ＃０の移動先であるＶＭＭ＃１に転送する。
【０１８５】
一方、ＶＭＭ＃１は、ＶＭＭ＃０からデータを受信すると、受信したデータを図１５に示したステップＳ１５０１の処理で確保したＶＭ領域に格納する。
ＶＭＭ＃１へのデータ転送が完了すると、ＶＭＭ＃０は、処理をステップＳ１７１１に移行する。そして、ＶＭＭ＃０は、ストップ・アンド・コピーを終了する（ステップＳ１７１１）。
【０１８６】
一方、ステップＳ１７０９において、ステータスレジスタ８１１の有効データカウントが「０」でない場合（ステップＳ１７０９  ＮＯ）、ＶＭＭ＃０は、ＦＩＦＯがｅｍｐｔｙでないと判断し、処理をステップＳ１７１２に移行する。
【０１８７】
ステップＳ１７１２において、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０に備わるコントロールレジスタ８１３のリードセレクトビットに「０」または「１」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯを変更する。
【０１８８】
例えば、現在選択中のＦＩＦＯがＦＩＦＯ＃０の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のリードセレクトビットに「１」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯをＦＩＦＯ＃１に変更する。
【０１８９】
同様に、現在選択中のＦＩＦＯがＦＩＦＯ＃１の場合、ＶＭＭ＃０は、コントロールレジスタ８１３のリードセレクトビットに「０」を設定することにより、ダーティ・ページ情報を読み出すＦＩＦＯをＦＩＦＯ＃０に変更する。
ダーティ・ページ情報を読み出すＦＩＦＯを変更すると、ＶＭＭ＃０は、処理をステップＳ１７０１に移行する。
【０１９０】
（パケット検出部８２０の具体例）
図１８は、条件１を用いたパケット検出部８２０の具体例を示す図である。以下、条件１を用いたパケット検出部８２０を「パケット検出部１８００」という。
【０１９１】
パケット検出部１８００は、ＦＩＦＯ制御部９０１と、判定部１８１０と、を備える。
判定部１８１０は、ページ記憶部１８１１と、比較部１８１２と、を備える。
ページ記憶部１８１１は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを記憶するレジスタである。比較部１８１２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、を比較する。
【０１９２】
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、が一致しない場合、比較部１８１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要があると判断する。この場合、比較部１８１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がある旨を通知する。そして、比較部１８１２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページをページ記憶部１８１１に記憶する。
【０１９３】
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、が一致する場合、比較部１８１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部１８１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がない旨を通知する。
【０１９４】
図１９は、パケット検出部１８００の処理を示すフローチャートである。図１９に示す処理は、図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する処理である。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部１８００は、以下の処理を開始する（ステップＳ１９００）。
【０１９５】
ステップＳ１９０１において、パケット検出部１８００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部１８００は、ＧＰＡからＧＰＡページを取得する。
【０１９６】
ステップＳ１９０２において、パケット検出部１８００は、ステップＳ１９０１で取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、を比較する。
【０１９７】
ステップＳ１９０１で取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、が一致する場合（ステップＳ１９０２  ＹＥＳ）、パケット検出部１８００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ１９０５に移行する。
【０１９８】
また、ステップＳ１９０１で取得したＧＰＡページと、ページ記憶部１８１１に記憶されているＧＰＡページと、が一致しない場合（ステップＳ１９０２  ＮＯ）、パケット検出部１８００は、処理をステップＳ１９０３に移行する。この場合、パケット検出部１８００は、ステップＳ１９０１で取得したＳＩＤとＧＰＡページを含むダーティ・ページ情報をＦＩＦＯに登録する（ステップＳ１９０３）。
【０１９９】
ステップＳ１９０４において、パケット検出部１８００は、ステップＳ１９０１で取得したＧＰＡページをページ記憶部１８１１に記憶する。そして、パケット検出部１８００は、処理をステップＳ１９０５に移行する。
以上の処理が終了すると、パケット検出部１８００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２００】
（パケット検出部８２０のその他の具体例）
図２０は、条件２を用いたパケット検出部８２０の具体例を示す図である。以下、条件２を用いたパケット検出部８２０を「パケット検出部２０００」という。
【０２０１】
パケット検出部２０００は、ＦＩＦＯ制御部９０１と、判定部２０１０と、を備える。
判定部２０１０は、ＳＩＤ記憶部２０１１と、比較部２０１２と、を備える。
ＳＩＤ記憶部２０１１は、ライブ・マイグレーションの対象となるユニットのＳＩＤを記憶するレジスタである。
【０２０２】
制御Ｉ／Ｆ部８１０のコントロールレジスタ８１３に所定の値が入力されると、ＦＩＦＯ制御部９０１は、データレジスタ８１２に記憶されているＳＩＤを、ＳＩＤ記憶部２０１１に記憶する。このようにして、ＳＩＤは、あらかじめＳＩＤ記憶部２０１１に記憶しておくことができる。
【０２０３】
比較部２０１２は、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
そして、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致しない場合、比較部２０１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要があると判断する。この場合、比較部２０１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がある旨を通知する。そして、比較部２０１２は、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤをＳＩＤ記憶部２０１１に記憶する。
【０２０４】
また、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合、比較部２０１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部２０１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がない旨を通知する。
【０２０５】
図２１は、パケット検出部２０００の処理を示すフローチャートである。図２１に示す処理は、図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する処理である。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部２０００は、以下の処理を開始する（ステップＳ２１００）。
【０２０６】
ステップＳ２１０１において、パケット検出部２０００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。また、パケット検出部２０００は、ＧＰＡからＧＰＡページを取得する。
【０２０７】
ステップＳ２１０２において、パケット検出部２０００は、ステップＳ２１０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
ステップＳ２１０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が異なる場合（ステップＳ２１０２  ＮＯ）、パケット検出部２０００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ２１０４に移行する。
【０２０８】
また、ステップＳ２１０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合（ステップＳ２１０２  ＹＥＳ）、パケット検出部２０００は、処理をステップＳ２１０３に移行する。この場合、パケット検出部２０００は、ステップＳ２１０１で取得したＳＩＤとＧＰＡページを含むダーティ・ページ情報をＦＩＦＯに登録する（ステップＳ２１０３）。そして、パケット検出部２０００は、処理をステップＳ２１０４に移行する。
以上の処理が終了すると、パケット検出部２０００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２０９】
図２２は、ライブ・マイグレーション時におけるＳＩＤ記憶部２０１１へのＳＩＤ設定処理を示すフローチャートである。なお、図２２に示すステップＳ２２０２〜ＳＳ２２１０は、図１５に示したステップＳ１５０１〜Ｓ１５０９と同様なので、説明は省略する。
【０２１０】
ステップＳ２２０１において、ＶＭＭ＃０は、ライブ・マイグレーションの指示を受けると、ライブ・マイグレーションによる移動の対象であるＶＭ＃０と接続しているデバイス、すなわち、移動対象デバイスのＳＩＤを、ＳＩＤ記憶部２０１１に記憶する。
【０２１１】
ＶＭＭ＃０は、例えば、以下のようにして、移動対象デバイスのＳＩＤを、ＳＩＤ記憶部２０１１に記憶する。
まず、ＶＭＭ＃０は、制御Ｉ／Ｆ部８１０のデータレジスタ８１２にＳＩＤを設定する。そして、ＶＭＭ＃０は、コントロールレジスタ８１３に所定の値を入力する。すると、ＦＩＦＯ制御部９０１は、データレジスタ８１２に記憶されているＳＩＤを、ＳＩＤ記憶部２０１１する。
【０２１２】
ステップＳ２２０１〜Ｓ２２１０の処理が完了すると、ＶＭＭ＃０は、ステップＳ２２０１の処理でＳＩＤ記憶部２０１１に記憶したＳＩＤをクリアする。この場合、例えば、ＶＭＭ＃０が、コントロールレジスタ８１３に所定の値を入力すると、ＦＩＦＯ制御部９０１が、データレジスタ８１２に記憶されているＳＩＤをクリアするようにすることができる。
【０２１３】
ステップＳ２２１２において、ＶＭＭ＃０からメモリ・コピーの完了通知を受けると、ＶＭＭ＃１は、ＶＭＭ＃１上でＶＭ＃０の業務を開始させる。ＶＭＭ＃１上でＶＭ＃０が業務を再開すると、ＶＭＭ＃１は、処理をステップＳ２２１３に移行する。そして、ＶＭＭ＃０および＃１は、ライブ・マイグレーションを終了する。
【０２１４】
（パケット検出部８２０のその他の具体例）
図２３は、条件３を用いたパケット検出部８２０の具体例を示す図である。以下、条件３を用いたパケット検出部８２０を「パケット検出部２３００」という。
【０２１５】
パケット検出部２３００を実現する場合、ＦＩＦＯに登録するダーティ・ページ情報には、ＳＩＤと、ＧＰＡページと、カウント値と、を含んだダーティ・ページ情報を使用する必要がある。カウント値は、ダーティ・ページ情報に含まれるＧＰＡページから何ページまで連続してアクセスがあったかを示す値である。カウント値を使用することにより、複数ページをまたぐ連続アクセスを、１つのエントリでＦＩＦＯに記憶することができる。
【０２１６】
パケット検出部２３００は、ＦＩＦＯ制御部２３１０と、判定部２３２０と、を備える。
ＦＩＦＯ制御部２３１０は、図９で説明した機能に加えて、判定部２３１０の指示にしたがって、最後にＦＩＦＯに登録されたダーティ・ページ情報に含まれるカウント値を、１だけインクリメントした値に更新する。
【０２１７】
判定部２３２０は、ページ記憶部２３２１と、比較部２３２２と、比較部２３２３と、を備える。
ページ記憶部２３２１は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを記憶するレジスタである。
【０２１８】
比較部２３２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、を比較する。
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、が一致する場合、比較部２３２２は、ＦＩＦＯにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部２３２２は、ＦＩＦＯ制御部２３１０に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がない旨を通知する。
【０２１９】
また、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、が一致しない場合、比較部２３２２は、その旨を比較部２３２３に通知する。
【０２２０】
比較部２３２３は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページを１ページだけインクリメントした値と、を比較する。
【０２２１】
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページに１ページだけインクリメントした値と、が一致する場合、比較部２３２３は、ＦＩＦＯに登録したダーティ・ページ情報の更新が必要と判断する。この場合の更新とは、最後にＦＩＦＯに登録したダーティ・ページ情報に含まれるカウント値を１だけインクリメントすることである。比較部２３２３は、ＦＩＦＯに登録したダーティ・ページ情報の更新をＦＩＦＯ制御部２３１０に指示する。そして、比較部２３２３は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページをページ記憶部２３２１に記憶する。
【０２２２】
また、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページを１ページだけインクリメントした値と、が一致しない場合、比較部２３２３は、ＦＩＦＯにダーティ・ページ情報を登録する必要があると判断する。ただし、比較部２３２２から、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、が一致しない旨の通知を受けた場合に限る。この場合、比較部２３２３は、ＦＩＦＯ制御部２３１０に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がある旨を通知する。また、比較部２３２３は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページをページ記憶部２３２１に記憶する。
【０２２３】
図２４は、パケット検出部２３００の処理を示すフローチャートである。図２４に示す処理は、図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する処理である。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部２３００は、以下の処理を開始する（ステップＳ２４００）。
【０２２４】
ステップＳ２４０１において、パケット検出部２３００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部２３００は、ＧＰＡからＧＰＡページを取得する。
【０２２５】
ステップＳ２４０２において、パケット検出部２３００は、ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、を比較する。
【０２２６】
ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、が一致する場合（ステップＳ２４０２  ＹＥＳ）、パケット検出部２３００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ２４０７に移行する。
【０２２７】
また、ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページと、が一致しない場合（ステップＳ２４０２  ＮＯ）、パケット検出部２３００は、処理をステップＳ２４０３に移行する。この場合、パケット検出部２３００は、パケット検出部２３００は、ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページを１ページだけインクリメントした値と、を比較する。
【０２２８】
ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページを１ページだけインクリメントした値と、が一致する場合（ステップＳ２４０３  ＹＥＳ）、パケット検出部２３００は、処理をステップＳ２４０４に移行する。この場合、パケット検出部２３００は、ＦＩＦＯに最後に登録されたダーティ・ページ情報に含まれるカウント値を１だけインクリメントする（ステップＳ２４０４）。そして、パケット検出部２３００は、処理をステップＳ２４０６に移行する。
【０２２９】
また、ステップＳ２４０１で取得したＧＰＡページと、ページ記憶部２３２１に記憶されているＧＰＡページを１ページだけインクリメントした値と、が一致しない場合（ステップＳ２４０３  ＮＯ）、パケット検出部２３００は、処理をステップＳ２４０５に移行する。この場合、パケット検出部２３００は、ステップＳ２４０１で取得したＳＩＤおよびＧＰＡページと、初期値が０に設定されたカウント値と、を含むダーティ・ページ情報をＦＩＦＯに登録する（ステップＳ２４０５）。そして、パケット検出部２３００は、処理をステップＳ２４０６に移行する。
【０２３０】
ステップＳ２４０６において、パケット検出部２３００は、ステップＳ２４０１で取得したＧＰＡページをページ記憶部２３２１に記憶する。そして、パケット検出部２３００は、処理をステップＳ２４０７に移行する。
以上の処理が終了すると、パケット検出部２３００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２３１】
（パケット検出部８２０のその他の具体例）
図２５は、条件４を用いたパケット検出部８２０の具体例を示す図である。以下、条件４を用いたパケット検出部８２０を「パケット検出部２５００」という。図２５には、説明の都合で、ＦＩＦＯ＃ＮにＧＰＡページのみを記載しているが、図２５に示す構成にＦＩＦＯ＃Ｎを限定する趣旨ではない。
【０２３２】
パケット検出部２５００は、ＦＩＦＯ制御部９０１と、判定部２５１０と、を備える。
判定部２５１０は、キャッシュメモリ２５１１と、キャッシュ制御回路２５１２と、を備える。
【０２３３】
キャッシュメモリ２５１１は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを記憶するキャッシュメモリである。キャッシュメモリ２５１１には、複数のＧＰＡページを格納することができる。なお、図２５に示すキャッシュメモリ２５１１には、３つのＧＰＡページＸ、ＹおよびＺを記憶するキャッシュメモリを示しているが、図２５に示す構成にキャッシュメモリ２５１１の構成を限定する趣旨ではない。
【０２３４】
キャッシュ制御回路２５１２は、キャッシュメモリ２５１１を参照し、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと一致するＧＰＡページを検索する。
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと一致するＧＰＡページを検出すると、キャッシュ制御回路２５１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要がないと判断する。この場合、キャッシュ制御回路２５１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がない旨を通知する。
【０２３５】
また、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと一致するＧＰＡページを検出しない場合、キャッシュ制御回路２５１２は、ＦＩＦＯにダーティ・ページ情報を登録する必要があると判断する。この場合、キャッシュ制御回路２５１２は、ＦＩＦＯ制御部９０１に対して、ＦＩＦＯにダーティ・ページ情報を登録する必要がある旨を通知する。そして、キャッシュメモリ２５１１に空きエントリがあれば、キャッシュ制御回路２５１２は、空きエントリに、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを記憶する。また、キャッシュメモリ２５１１に空きエントリがなければ、キャッシュ制御回路２５１２は、参照されていない期間が最も長いエントリに、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを記憶する。
【０２３６】
図２６は、パケット検出部２５００の処理を示すフローチャートである。図２６に示す処理は、図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する処理である。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部２５００は、以下の処理を開始する（ステップＳ２６００）。
【０２３７】
ステップＳ２６０１において、パケット検出部２５００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部２５００は、ＧＰＡからＧＰＡページを取得する。
【０２３８】
ステップＳ２６０２において、パケット検出部２５００は、キャッシュメモリ２５１１を参照し、ステップＳ２６０１で取得したＧＰＡページと一致するＧＰＡページを検索する。
【０２３９】
ステップＳ２６０１で取得したＧＰＡページと一致するＧＰＡページを検出した場合（ステップＳ２６０２  ＹＥＳ）、パケット検出部２５００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ２６０７に移行する。
【０２４０】
また、ステップＳ２６０１で取得したＧＰＡページと一致するＧＰＡページを検出しない場合（ステップＳ２６０２  ＮＯ）、パケット検出部２５００は、処理をステップＳ２６０３に移行する。この場合、パケット検出部２５００は、キャッシュメモリ２５１１に空きエントリがあるか否かを判別する（ステップＳ２６０３）。
【０２４１】
キャッシュメモリ２５１１に空きエントリがある場合（ステップＳ２６０３  ＹＥＳ）、パケット検出部２５００は、ステップＳ２６０１で取得したＧＰＡページを、空きエントリに記憶する（ステップＳ２６０４）。そして、パケット検出部２５００は、処理をステップＳ２６０６に移行する。
【０２４２】
キャッシュメモリ２５１１に空きエントリがない場合（ステップＳ２６０３  ＮＯ）、パケット検出部２５００は、処理をステップＳ２６０５に移行する。この場合、パケット検出部２５００は、ステップＳ２６０１で取得したＧＰＡページを、キャッシュメモリ２５１１に含まれるエントリのうち、参照されていない期間が最も長いエントリに記憶する（ステップＳ２６０４）。そして、パケット検出部２５００は、処理をステップＳ２６０６に移行する。
【０２４３】
ステップＳ２６０６において、パケット検出部２５００は、ダーティ・ページ情報をＦＩＦＯに登録する。そして、パケット検出部２５００は、処理をステップＳ２６０７に移行する。
以上の処理が終了すると、パケット検出部２５００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２４４】
（パケット検出部８２０のその他の具体例）
図２７は、条件５を用いたパケット検出部８２０の具体例を示す図である。以下、条件５を用いたパケット検出部８２０を「パケット検出部２７００」という。図２７には、説明の都合で、ＦＩＦＯ＃ＮにはＳＩＤの記載を省略しているが、図２７に示す構成にＦＩＦＯ＃Ｎを限定する趣旨ではない。
【０２４５】
パケット検出部２７００を実現する場合、ＦＩＦＯに登録するダーティ・ページ情報には、ＳＩＤと、ＧＰＡページと、拡張サイズと、を含むダーティ・ページ情報を使用する。この拡張サイズは、ダーティ・ページ情報に含まれるＧＰＡページのページサイズの拡張に使用する情報である。ＧＰＡページのページサイズを拡張することで、１つのダーティ・ページ情報に、より広い範囲の、変更されたメモリ領域を含ませることができる。したがって、図７に示したメモリ６２０の管理などのメモリシステムに使用するページサイズを拡張するものではない。拡張サイズの指定には、「０」、「１」、「２」、・・・などの数値を使用することができる。この場合、「０」は、ダーティ・ページ情報の含まれるＧＰＡページのページサイズを４ＫＢに拡張することを示している。同様に、「１」は、ダーティ・ページ情報に含まれるＧＰＡページのページサイズを８ＫＢ、「２」は、ダーティ・ページ情報に含まれるＧＰＡページのページサイズを１６ＫＢに拡張することを示している。
【０２４６】
パケット検出部２７００は、ＦＩＦＯ制御部２７１０と、判定部２７２０と、を備える。
ＦＩＦＯ制御部２７１０は、図９で説明した機能に加えて、判定部２７２０の指示にしたがって、ＦＩＦＯに登録されているダーティ・ページ情報に含まれる拡張サイズを変更する。
【０２４７】
判定部２７２０は、キャッシュメモリ２７２１と、キャッシュ制御回路２７２２と、を備える。
キャッシュメモリ２７２１は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページを、その拡張サイズとともに記憶するキャッシュメモリである。キャッシュメモリ２７２１には、複数のＧＰＡページを格納することができる。例えば、図２７には、ＧＰＡページ「Ｘ」が拡張サイズの設定値「２」とともにキャッシュメモリ２７２１に記憶されている。これは、ＧＰＡページ「Ｘ」のページサイズを８ＫＢに拡張することを示している。
【０２４８】
なお、図２７に示すキャッシュメモリ２７２１には、３つのＧＰＡページＸ、ＹおよびＺを記憶するキャッシュメモリを示しているが、図２７に示す構成にキャッシュメモリ２７２１の構成を限定する趣旨ではない。
【０２４９】
キャッシュ制御回路２７２２は、キャッシュメモリ２７２１を参照する。そして、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページの下位ｎビットをマスクした値と、キャッシュメモリ２７２１に記憶されているＧＰＡページの下位ｎビットをマスクした値と、を比較する。そして、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページの下位ｎビットをマスクした値と、キャッシュメモリ２７２１に記憶されているＧＰＡページの下位ｎビットをマスクした値と、が一致したＧＰＡページを検出する。このとき、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページがキャッシュメモリ２７２１にヒットしたと判断する。ｎを大きくすると、キャッシュメモリ２７２１にヒットしたと判断されるＧＰＡページの範囲が大きくなる。なお、ｎは１以上の整数とする。ｎは、拡張サイズとの関係を考慮して決定することができる。例えば、４ＫＢ、８ＫＢおよび１６ＫＢを拡張サイズに使用する場合、ｎを「2」などとすることができる。
【０２５０】
ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページがキャッシュメモリ２７２１にヒットすると、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、キャッシュメモリ２７２１にヒットしたＧＰＡページと、の差を求める。求めた差が、キャッシュメモリ２７２１にヒットしたＧＰＡページの拡張サイズ以上に大きい場合、キャッシュ制御回路２７２２は、キャッシュメモリ２７２１にヒットしたＧＰＡページの拡張サイズをより大きいページサイズに更新する。同様に、キャッシュ制御回路２７２２は、ＦＩＦＯに記憶されているダーティ・ページ情報であって、キャッシュメモリ２７２１にヒットしたＧＰＡページを含むダーティ・ページ情報に含まれる拡張サイズも更新する。
【０２５１】
また、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページがキャッシュメモリ２７２１にヒットしない場合、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページをキャッシュメモリ２７２１に記憶する。このとき、キャッシュ制御回路２７２２は、ＤＭＡライトパケット８５０のヘッダから取得したＧＰＡページと、拡張サイズと、を関連付けて記憶する。本実施例では、拡張サイズの初期値として４ＫＢを用いるので、拡張サイズの設定値として「０」が設定される。
【０２５２】
図２８は、パケット検出部２７００の処理を示すフローチャートである。図２８に示す処理は、図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する処理である。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部２７００は、以下の処理を開始する（ステップＳ２８００）。
【０２５３】
ステップＳ２８０１において、パケット検出部２７００は、ＤＭＡライトパケット８５０のヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部２７００は、ＧＰＡからＧＰＡページを取得する。
【０２５４】
ステップＳ２８０２において、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページの下位ｎビットをマスクした値と、キャッシュメモリ２７２１に記憶されているＧＰＡページの下位ｎビットをマスクした値と、を比較する。そして、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページの下位ｎビットをマスクした値と、キャッシュメモリ２７２１に記憶されているＧＰＡページの下位ｎビットをマスクした値と、が一致したＧＰＡページを検出する。このとき、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページがキャッシュメモリ２７２１にヒットしたと判断する。
【０２５５】
ステップＳ２８０１で取得したＧＰＡページがキャッシュメモリ２７２１にヒットした場合（ステップＳ２８０２  ＹＥＳ）、パケット検出部２７００は、処理をステップＳ２８０３に移行する。この場合、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページと、キャッシュメモリ２７２１にヒットしたＧＰＡページと、の差を算出する（ステップＳ２８０３）。
【０２５６】
ステップＳ２８０１で取得したＧＰＡページと、キャッシュメモリ２７２１にヒットしたＧＰＡページと、の差が、キャッシュメモリ２７２１にヒットしたＧＰＡページの拡張サイズより小さい場合（ステップＳ２８０４  ＹＥＳ）、パケット検出部２７００は、処理をステップＳ２８１１に移行する。
【０２５７】
ステップＳ２８０１で取得したＧＰＡページと、キャッシュメモリ２７２１にヒットしたＧＰＡページと、の差が、キャッシュメモリ２７２１にヒットしたＧＰＡページの拡張サイズ以上の場合（ステップＳ２８０４  ＮＯ）、パケット検出部２７００は、処理をステップＳ２８０５に移行する。この場合、パケット検出部２７００は、ヒットしたＧＰＡページと関連付けられてキャッシュメモリ２７２１に記憶されている拡張サイズを、ステップＳ２８０３で算出した差より大きい拡張サイズに更新する（ステップＳ２８０５）。本実施例では、４ＫＢ、８ＫＢ、１６ＫＢ、・・・を拡張サイズに使用する。したがって、例えば、ステップＳ２８０３で算出した差が７ＫＢの場合、拡張サイズを８ＫＢに更新する。
【０２５８】
ステップＳ２８０６において、パケット検出部２７００は、ＦＩＦＯに記憶されている、キャッシュメモリ２７２１にヒットしたＧＰＡページを含むダーティ・ページ情報に含まれる拡張サイズを、ステップＳ２８０５で更新した拡張サイズと同じ拡張サイズに更新する。そして、パケット検出部２７００は、処理をステップＳ２８１１に移行する。
【０２５９】
一方、ステップＳ２８０１で取得したＧＰＡページがキャッシュメモリ２７２１にヒットしない場合（ステップＳ２８０２  ＮＯ）、パケット検出部２７００は、処理をステップＳ２８０７に移行する。この場合、パケット検出部２７００は、キャッシュメモリ２７２１に空きエントリがあるか否かを判別する（ステップＳ２８０７）。
【０２６０】
キャッシュメモリ２７２１に空きエントリがある場合（ステップＳ２８０７  ＹＥＳ）、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページを空きエントリに記憶する（ステップＳ２８０８）。このとき、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページと、初期値として４ＫＢに設定された拡張サイズと、を関連付けて記憶する。そして、パケット検出部２７００は、処理をステップＳ２８１０に移行する。
【０２６１】
また、キャッシュメモリ２７２１に空きエントリがない場合（ステップＳ２８０７  ＮＯ）、パケット検出部２７００は、処理をステップＳ２８０９に移行する。この場合、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページを、キャッシュメモリ２７２１に含まれるエントリのうち、参照されていない期間が最も長いエントリに記憶する（ステップＳ２８０９）。この場合も、パケット検出部２７００は、ステップＳ２８０１で取得したＧＰＡページと、初期値として４ＫＢに設定された拡張サイズと、を関連付けて記憶する。そして、パケット検出部２７００は、処理をステップＳ２８１０に移行する。
【０２６２】
ステップＳ２８１０において、パケット検出部２７００は、ダーティ・ページ情報をＦＩＦＯに登録する。このとき、パケット検出部２７００は、ダーティ・ページ情報に含まれる拡張サイズに、初期値として４ＫＢを設定する。そして、パケット検出部２７００は、処理をステップＳ２８１１に移行する。
以上の処理が終了すると、パケット検出部２７００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２６３】
（パケット検出部８２０のその他の具体例）
図２９は、条件１および２を用いたパケット検出部８２０の具体例を示す図である。以下、条件１および２を用いたパケット検出部８２０を「パケット検出部２９００」という。
【０２６４】
パケット検出部２９００は、ＦＩＦＯ制御部２９１０と、判定部２９２０と、を備える。また、判定部２９２０は、図１８に示した判定部１８１０と、図２０に示した判定部２０１０と、を備える。
【０２６５】
ＦＩＦＯ制御部２９１０は、判定部２０１０から、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致しない旨の通知を受ける。この場合、ＦＩＦＯ制御部２９１０は、図１８で説明したように、判定部１８１０の判定結果にしたがって、ＦＩＦＯにダーティ・ページ情報を登録する。
【０２６６】
図３０は、パケット検出部２９００の処理を示すフローチャートである。図３０に示す処理は図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部２９００は、以下の処理を開始する（ステップＳ３０００）。
【０２６７】
ステップＳ３００１において、パケット検出部２９００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部２９００は、ＧＰＡからＧＰＡページを取得する。
【０２６８】
ステップＳ３００２において、パケット検出部２９００は、ステップＳ３００１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
ステップＳ３００１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が異なる場合（ステップＳ３００２  ＮＯ）、パケット検出部２９００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ３００６に移行する。
【０２６９】
また、ステップＳ３００１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合（ステップＳ３００２  ＹＥＳ）、パケット検出部２９００は、処理をステップＳ３００３に移行する。ステップＳ３００３〜Ｓ３００６の処理は、図１９に示したステップＳ１９０２〜Ｓ１９０５と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部２９００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２７０】
（パケット検出部８２０のその他の具体例）
図３１は、条件２および３を用いたパケット検出部８２０の具体例を示す図である。以下、条件２および３を用いたパケット検出部８２０を「パケット検出部３１００」という。
【０２７１】
パケット検出部３１００は、ＦＩＦＯ制御部３１１０と、判定部３１２０と、を備える。また、判定部３１２０は、図２０に示した判定部２０１０と、図２３に示した判定部２３２０と、を備える。
【０２７２】
ＦＩＦＯ制御部３１１０は、判定部２０１０から、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致しない旨の通知を受ける。この場合、ＦＩＦＯ制御部３１１０は、図２３で説明したように、判定部２３２０の判定結果にしたがって、ＦＩＦＯにダーティ・ページ情報を登録する。
【０２７３】
図３２は、パケット検出部３１００の処理を示すフローチャートである。図３２に示す処理は図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部３１００は、以下の処理を開始する（ステップＳ３２００）。
【０２７４】
ステップＳ３２０１において、パケット検出部３１００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部３１００は、ＧＰＡからＧＰＡページを取得する。
【０２７５】
ステップＳ３２０２において、パケット検出部３１００は、ステップＳ３２０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
ステップＳ３２０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が異なる場合（ステップＳ３２０２  ＮＯ）、パケット検出部３１００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ３２０８に移行する。
【０２７６】
また、ステップＳ３２０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合（ステップＳ３２０２  ＹＥＳ）、パケット検出部３１００は、処理をステップＳ３２０３に移行する。ステップＳ３２０３〜Ｓ３２０８の処理は、図２４に示したステップＳ２４０２〜Ｓ２４０７と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部３１００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２７７】
（パケット検出部８２０のその他の具体例）
図３３は、条件２および４を用いたパケット検出部８２０の具体例を示す図である。以下、条件２および４を用いたパケット検出部８２０を「パケット検出部３３００」という。
【０２７８】
パケット検出部３３００は、ＦＩＦＯ制御部３３１０と、判定部３３２０と、を備える。また、判定部３３２０は、図２０に示した判定部２０１０と、図２５に示した判定部２５１０と、を備える。
【０２７９】
ＦＩＦＯ制御部３３１０は、判定部２０１０から、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致しない旨の通知を受ける。この場合、ＦＩＦＯ制御部３３１０は、図２５で説明したように、判定部２５１０の判定結果にしたがって、ＦＩＦＯにダーティ・ページ情報を登録する。
【０２８０】
図３４は、パケット検出部３３００の処理を示すフローチャートである。図３４に示す処理は図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部３３００は、以下の処理を開始する（ステップＳ３４００）。
【０２８１】
ステップＳ３４０１において、パケット検出部３３００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部３３００は、ＧＰＡからＧＰＡページを取得する。
【０２８２】
ステップＳ３４０２において、パケット検出部３３００は、ステップＳ３４０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
ステップＳ３４０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が異なる場合（ステップＳ３４０２  ＮＯ）、パケット検出部３３００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ３４０８に移行する。
【０２８３】
また、ステップＳ３４０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合（ステップＳ３４０２  ＹＥＳ）、パケット検出部３３００は、処理をステップＳ３４０３に移行する。ステップＳ３４０３〜Ｓ３４０８の処理は、図２６に示したステップＳ２６０２〜Ｓ２６０７と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部３３００は、図１２に示したステップＳ１２０７から処理を開始する。
【０２８４】
（パケット検出部８２０のその他の具体例）
図３５は、条件２および５を用いたパケット検出部８２０の具体例を示す図である。以下、条件２および５を用いたパケット検出部８２０を「パケット検出部３５００」という。図３５には、説明を簡単にするために、ＦＩＦＯ＃ＮにはＳＩＤの記載を省略しているが、図３５に示す構成にＦＩＦＯ＃Ｎを限定する趣旨ではない。
【０２８５】
パケット検出部３５００は、ＦＩＦＯ制御部３５１０と、判定部３５２０と、を備える。また、判定部３５２０は、図２０に示した判定部２０１０と、図２７に示した判定部２７２０と、を備える。
【０２８６】
ＦＩＦＯ制御部３５１０は、判定部２０１０から、ＤＭＡライトパケット８５０のヘッダから取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致しない旨の通知を受ける。この場合、ＦＩＦＯ制御部３５１０は、図２７で説明したように、判定部２７２０の判定結果にしたがって、ＦＩＦＯにダーティ・ページ情報を登録する。
【０２８７】
図３６は、パケット検出部３５００の処理を示すフローチャートである。図３６に示す処理は図１２に示したステップＳ１２０４〜Ｓ１２０６に対応する。
図１２に示したステップＳ１２０４に処理が移行すると、パケット検出部３５００は、以下の処理を開始する（ステップＳ３６００）。
【０２８８】
ステップＳ３６０１において、パケット検出部３５００は、ＤＭＡライトパケットのヘッダからＳＩＤとＧＰＡを取得する。そして、パケット検出部３５００は、ＧＰＡからＧＰＡページを取得する。
【０２８９】
ステップＳ３６０２において、パケット検出部３５００は、ステップＳ３６０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、を比較する。
ステップＳ３６０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が異なる場合（ステップＳ３６０２  ＮＯ）、パケット検出部３５００は、ダーティ・ページ情報をＦＩＦＯに登録することなく、処理をステップＳ３６１２に移行する。
【０２９０】
また、ステップＳ３６０１で取得したＳＩＤと、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと、が一致する場合（ステップＳ３６０２  ＹＥＳ）、パケット検出部３５００は、処理をステップＳ３６０３に移行する。ステップＳ３６０３〜Ｓ３６１２の処理は、図２８に示したステップＳ２８０２〜Ｓ２６１１と同じなので説明を省略する。
【０２９１】
以上の処理が終了すると、パケット検出部３５００は、図１２に示したステップＳ１２０７から処理を開始する。
なお、条件３を用いたパケット検出部８２０、例えば、パケット検出部２３００やパケット検出部３１００を実現する場合、ＦＩＦＯには、図３７に示す構成のＦＩＦＯを用いることができる。図３７に示すＦＩＦＯは、図１０に示したＦＩＦＯに含まれる各エントリに、カウント値を記憶する８ビットの領域を追加したものである。ただし、図３７に示すＦＩＦＯの構成は、単なる一例であって、ＦＩＦＯの構成を図３７に示す構成に限定する趣旨ではない。
【０２９２】
また、条件５を用いたパケット検出部８２０、例えば、パケット検出部２７００やパケット検出部３５００を実現する場合、ＦＩＦＯには、図３８に示す構成のＦＩＦＯを用いることができる。図３８に示すＦＩＦＯは、図１０に示したＦＩＦＯに含まれる各エントリに、拡張サイズを記憶する４ビットの領域を追加したものである。ただし、図３８に示すＦＩＦＯの構成は、単なる一例であって、ＦＩＦＯの構成を図３８に示す構成に限定する趣旨ではない。
【０２９３】
以上に説明したように、ダーティ・ページ管理ユニット６５１は、ＩＯアダプタ６４０、６４１および６４２からメモリ６２０に転送されるＤＭＡパケットがＰＣＩｅスイッチ６５０を通過すると、そのＤＭＡパケットをパケット検出部８２０によって検出する。
【０２９４】
そして、検出したＤＭＡパケットがＤＭＡライトパケットである場合、ダーティ・ページ管理ユニット６５１は、ＤＭＡパケットのヘッダからゲスト物理メモリとＳＩＤを取得し、ダーティ・ページ情報としてＦＩＦＯ＃０または＃１に登録する。
【０２９５】
また、ダーティ・ページ管理ユニット６５１は、ＣＰＵ６１０または６１１、すなわちＣＰＵ６１０または６１１が実現するＶＭＭとの制御Ｉ／Ｆ部８１０を備え、ＶＭＭからの要求に応じてＦＩＦＯ＃０または＃１に登録されているダーティ・ページ情報を出力する。
【０２９６】
その結果、情報処理装置６００で動作しているＶＭＭは、ダーティ・ページ情報から、ＩＯＭＭＵ６３１を利用したＤＭＡライトによって追加、変更または更新等されたメモリ６２０上のデータを取得することが可能となる。
【０２９７】
そして、ＤＭＡライトによって追加、変更または更新等されたメモリ６２０上のデータを取得することが可能となったことにより、図１５〜図１７に示したプレ・コピーおよびストップ・アンド・コピーが可能となる。その結果、ＩＯＭＭＵを使用する場合であってもライブ・マイグレーションを実行することが可能となる。
【０２９８】
また、情報処理装置６００は、ダーティ・ページ記憶部６５２として、ＦＩＦＯ＃０および＃１の２つのＦＩＦＯを備える。そして、一方のＦＩＦＯが書込み対象の場合、他方のＦＩＦＯを読み出し対象とすることにより、１つのＦＩＦＯに対して読み込み処理と書込み処理が競合することを回避することが可能となる。その結果、ＦＩＦＯへのダーティ・ページ情報の登録処理と、ＦＩＦＯからのダーティ・ページ情報の読み出し処理と、を効率的に行なうことができる。
【０２９９】
また、パケット検出部１８００は、最後にＦＩＦＯに記憶した、ダーティ・ページ情報に含まれるＧＰＡページを、ページ記憶部１８１１に保持する。そして、パケット検出部１８００は、ページ記憶部１８１１に記憶されているＧＰＡページと一致しないＧＰＡページをＤＭＡライトパケット８５０から取得した場合にだけ、ＦＩＦＯにダーティ・ページ情報を記憶する。
【０３００】
これにより、パケット検出部１８００は、ＤＭＡライトが同一ページに対して連続して行われている間の、ＦＩＦＯの消費を抑えることができる。
例えば、大容量データの転送では、複数のＤＭＡアクセスが連続アドレスに対して行われる。この場合、一般に、ＤＭＡアクセスの範囲は、ページサイズより小さいので、同一ページに対するＤＭＡアクセスが連続して発生することになる。このような場合であっても、パケット検出部１８００は、ＦＩＦＯの消費量を抑えることが可能となる。
【０３０１】
また、パケット検出部２０００は、ライブ・マイグレーションの対象となるユニットのＳＩＤをＳＩＤ記憶部２０１１に保持する。そして、パケット検出部２０００は、ＳＩＤ記憶部２０１１に記憶されているＳＩＤと一致するＳＩＤが設定されたＤＭＡパケットを検出した場合だけ、ＦＩＦＯにダーティ・ページ情報を記憶する。
【０３０２】
これにより、パケット検出部２０００は、複数のユニットから同時にＤＭＡアクセスが行われた場合でも、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスだけを抽出することができる。その結果、パケット検出部２０００は、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスについてのダーティ・ページ情報だけをＦＩＦＯに記憶することができる。この場合、パケット検出部２０００は、ライブ・マイグレーションの対象以外のユニットからのＤＭＡアクセスがあった場合には、ＦＩＦＯが消費されないことになる。
【０３０３】
また、パケット検出部２３００は、ＳＩＤと、ＧＰＡページと、そのＧＰＡページから何ページＤＭＡアクセスが連続して行われたかを示すカウント値と、を含むダーティ・ページ情報をＦＩＦＯに記憶する。
【０３０４】
そして、パケット検出部２３００は、最後にＦＩＦＯに記憶されたダーティ・ページ情報に含まれるＧＰＡページにカウント値を加えたページの次のページへのＤＭＡアクセスを検出する。この場合、パケット検出部２３００は、新たなダーティ・ページ情報をＦＩＦＯに記憶することはせずに、ダーティ・ページ情報に含まれるカウント値をインクリメントする。
【０３０５】
これにより、パケット検出部２３００は、ＤＭＡライトが複数のページ境界をまたいで行われる連続アクセスの場合でも、ＦＩＦＯの消費を抑えることができる。
例えば、Ｉ／Ｏアダプタに割当てられるメモリ上のＤＭＡ空間は、一般に、連続した複数のページに割り当てられる。このようなＤＭＡ空間に対して複数のページ境界をまたいで連続アクセスが行われる場合であっても、パケット検出部２３００は、ＦＩＦＯの消費量を抑えることが可能となる。
【０３０６】
また、パケット検出部２５００は、ＦＩＦＯに記憶した複数のダーティ・ページ情報それぞれに含まれるＧＰＡページを、キャッシュメモリ２５１１に保持する。そして、パケット検出部２５００は、キャッシュメモリ２５１１に記憶されているいずれのＧＰＡページとも一致しないＧＰＡページを、ＤＭＡライトパケット８５０から取得した場合にだけ、ＦＩＦＯにダーティ・ページ情報を記憶する。
【０３０７】
これにより、パケット検出部２５００は、複数のＩ／Ｏアダプタを介して、複数のＤＭＡアクセスが行われる場合でも、それぞれのＤＭＡアクセスについて、ＤＭＡライトが同一ページに連続して行われている間の、ＦＩＦＯの消費を抑えることができる。
【０３０８】
ＤＭＡアクセスには局所性がある。特にＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）などの演算装置によるメモリ転送では、プログラムの性質により局所性が顕著になる場合が多い。ＧＰＧＰＵなど複数のユニットが、各ユニットと接続するＩ／Ｏアダプタを介してＤＭＡアクセスを行う場合でも、パケット検出部２５００は、それぞれのＤＭＡアクセスについて、ＤＭＡライトが同一ページに連続して行われている間の、ＦＩＦＯの消費を抑えられる。
【０３０９】
また、ＤＭＡライトパケット８５０から取得したＧＰＡページが、キャッシュメモリ２７２１に記憶されているＧＰＡページと一定範囲内にある場合、パケット検出部２７００は、ダーティ・ページ情報をＦＩＦＯに記憶しない。
【０３１０】
ただし、パケット検出部２７００は、ＤＭＡライトパケット８５０から取得したＧＰＡページと、キャッシュメモリ２７２１に記憶されているＧＰＡページと、の差が、キャッシュメモリ２７２１に記憶されているＧＰＡページの拡張サイズ以上の場合を検出する。この場合、パケット検出部２７００は、キャッシュメモリ２７２１に記憶されているＧＰＡページの拡張サイズを、ＤＭＡライトパケット８５０から取得したＧＰＡページが含まれるサイズに更新する。そして、この拡張サイズの更新を、パケット検出部２７００は、ＦＩＦＯに記憶されているダーティ・ページ情報にも反映する。
【０３１１】
このように、パケット検出部２７００は、ＤＭＡライトパケット８５０から取得したＧＰＡページが、ＦＩＦＯに記憶したダーティ・ページ情報に含まれるＧＰＡページと、一定範囲内にある場合には、ダーティ・ページ情報をＦＩＦＯに記憶しない。その結果、パケット検出部２７００は、ＦＩＦＯに記憶しているダーティ・ページ情報に含まれるＧＰＡページを含む一定範囲内でＤＭＡライトが行われる場合には、ＦＩＦＯの消費を抑えることができる。
【０３１２】
また、ＤＭＡライトパケット８５０から取得したＧＰＡページと、キャッシュメモリ２７２１に記憶されているＧＰＡページと、の差に応じて、拡張サイズが更新されるので、ＧＰＧＰＵなどアクセスパターンが不規則なＤＭＡアクセスでも、ＦＩＦＯの消費を抑える。
【０３１３】
また、パケット検出部２９００は、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスについてのダーティ・ページ情報だけをＦＩＦＯへの記憶の対象とする。そして、パケット検出部２９００は、ページ記憶部１８１１に記憶されているＧＰＡページと一致しないＧＰＡページをＤＭＡライトパケット８５０から取得した場合にだけ、ＦＩＦＯにダーティ・ページ情報を記憶する。
【０３１４】
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのＤＭＡライトが行われる場合、パケット検出部２９００は、ＦＩＦＯの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのＤＭＡライトが、同一ページに対して連続して行われない間、パケット検出部２９００は、ＦＩＦＯの消費を抑えることができる。
【０３１５】
また、パケット検出部３１００は、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスについてのダーティ・ページ情報だけをＦＩＦＯへの記憶の対象とする。ただし、パケット検出部３１００は、最後にＦＩＦＯに記憶されたダーティ・ページ情報に含まれるＧＰＡページにカウント値を加えたページの次のページへのＤＭＡアクセスを検出する。このとき、パケット検出部３１００は、新たなダーティ・ページ情報をＦＩＦＯに記憶することはせずに、ダーティ・ページ情報に含まれるカウント値をインクリメントする。
【０３１６】
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのＤＭＡライトが行われる場合、パケット検出部３１００は、ＦＩＦＯの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのＤＭＡライトが複数のページ境界をまたいで行われる連続アクセスの場合、パケット検出部３１００は、ＦＩＦＯの消費を抑えることができる。
【０３１７】
また、パケット検出部３３００は、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスについてのダーティ・ページ情報だけをＦＩＦＯへの記憶の対象とする。そして、パケット検出部３３００は、キャッシュメモリ２５１１に記憶されているいずれのＧＰＡページとも一致しないＧＰＡページを、ＤＭＡライトパケット８５０から取得した場合にだけ、ＦＩＦＯにダーティ・ページ情報を記憶する。
【０３１８】
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのＤＭＡライトが行われる場合、パケット検出部３３００は、ＦＩＦＯの消費を抑えることができる。また、ライブ・マイグレーションの対象となる複数のユニットそれぞれから、複数のＤＭＡアクセスが行われる場合でも、それぞれのＤＭＡアクセスについて、ＤＭＡライトが同一ページに連続して行われている間、パケット検出部３３００は、ＦＩＦＯの消費を抑える。
【０３１９】
また、パケット検出部３５００は、ライブ・マイグレーションの対象となるユニットからのＤＭＡアクセスについてのダーティ・ページ情報だけをＦＩＦＯへの記憶の対象とする。ただし、ＤＭＡライトパケット８５０から取得したＧＰＡページが、キャッシュメモリ２７２１に記憶されているＧＰＡページと一定範囲内にある場合、パケット検出部３５００は、ダーティ・ページ情報をＦＩＦＯに記憶しない。
【０３２０】
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのＤＭＡライトが行われる場合、パケット検出部３５００は、ＦＩＦＯの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのＤＭＡライトが、ＦＩＦＯに記憶しているダーティ・ページ情報に含まれるＧＰＡページを含む一定範囲内で行われる場合、パケット検出部３５００は、ＦＩＦＯの消費を抑えることができる。
【０３２１】
以上に説明したように、本実施例に係るパケット検出部８２０を使用すると、情報処理装置６００は、ＩＯＭＭＵを使用する場合であっても、少ないハードウェア資源でライブ・マイグレーションを実行することが可能となる。
【０３２２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
ハードウェア資源を管理することにより、１以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶する登録手段と、
前記第１記憶部に記憶される更新情報を出力する出力手段と、
を備えることを特徴とする情報処理装置。
（付記２）
検出したデータにより変更される前記第１のメモリ領域と、最後に変更された前記第１のメモリ領域を記憶する第２記憶部に記憶した前記第１のメモリ領域と、が異なる場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶する、
ことを特徴とする付記１に記載の情報処理装置。
（付記４）
前記登録手段は、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が異なる場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記２に記載の情報処理装置。
（付記５）
前記更新情報は、前記検出手段により検出したデータにより変更された前記第１のメモリ領域のページ数を計数した計数情報を含み、
前記登録手段は、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２域記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に１を加算するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記２に記載の情報処理装置。
（付記６）
前記登録手段は、過去に変更された複数の前記第１のメモリ領域を前記第２記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第１のメモリ領域が、前記第２記憶部に記憶した前記第１のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記２に記載の情報処理装置。
（付記７）
検出したデータにより変更される前記第１のメモリ領域と一定範囲内の前記第１のメモリ領域が、前記第２記憶部に含まれない場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記６に記載の情報処理装置。
（付記８）
前記更新情報は、変更された前記第１のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
検出したデータにより変更される前記第１のメモリ領域と一定範囲内の前記第１のメモリ領域が前記第２記憶部に含まれる場合、該第２記憶部に含まれる前記第１のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページのサイズに更新する、
ことを特徴とする付記６に記載の情報処理装置。
（付記９）
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第１のメモリ領域と、最後に変更された前記第１のメモリ領域を記憶する第２記憶部に記憶した前記第１のメモリ領域と、が異なる場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記１に記載の情報処理装置。
（付記１０）
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が異なる場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記９に記載の情報処理装置。
（付記１１）
前記更新情報は、前記検出手段により検出したデータにより変更された前記第１のメモリ領域のページ数を計数した計数情報を含み、
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページと、前記第２記憶部に記憶した前記第１のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に１を加算するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記９に記載の情報処理装置。
（付記１２）
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、過去に変更された複数の前記第１のメモリ領域を前記第２記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第１のメモリ領域が、前記第２記憶部に記憶した前記第１のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記９に記載の情報処理装置。
（付記１３）
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第１のメモリ領域と一定範囲内の前記第１のメモリ領域が、前記第２記憶部に含まれない場合、前記更新情報を生成して該更新情報を前記第１記憶部に記憶するとともに、前記変更される前記第１のメモリ領域を前記第２記憶部に記憶する、
ことを特徴とする付記１２に記載の情報処理装置。
（付記１４）
前記更新情報は、変更された前記第１のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第１のメモリ領域と一定範囲内の前記第１のメモリ領域が前記第２記憶部に含まれる場合、該第２記憶部に含まれる前記第１のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第１のメモリ領域を含むページのサイズに更新する、
ことを特徴とする付記１２に記載の情報処理装置。
（付記１５）
前記検出手段が検出するデータは、前記仮想機械からの指示により、前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送され、前記第１のメモリ領域に書き込まれるデータである、
ことを特徴とする付記１に記載の情報処理装置。
（付記１６）
前記更新情報は、前記データを転送した前記入出力装置を識別する識別情報と、前記データの転送先である前記第１のメモリ領域のアドレスと、を含む情報である、
ことを特徴とする付記１に記載の情報処理装置。
（付記１７）
前記第１記憶部は、第１の記憶手段と第２の記憶手段と、を備え、
互いに独立して更新情報の記憶または読み出しが可能である、
ことを特徴とする付記１に記載の情報処理装置。
（付記１８）
ハードウェア資源を管理することにより、１以上の仮想機械を実現するステップと、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうステップと、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
検出したデータが一定の条件を満たす場合に、前記検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶するステップと、
前記第１記憶部に記憶される更新情報を出力するステップと、
を備えることを特徴とする情報処理装置の仮想化方法。
（付記１９）
ハードウェア資源を管理することにより、１以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
移動対象の前記仮想機械に割り当てられる第１のメモリ領域に格納されるデータを取得して移動先に転送するメモリ領域転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶する登録手段と、
前記第１記憶部から更新情報を取得する更新情報取得手段と、
前記更新情報取得手段により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第１のメモリ領域において前記検出手段により検出したデータにより変更された更新データを、前記移動先に転送する更新データ転送手段と、
を備えることを特徴とする情報処理装置。
（付記２０）
前記更新データ転送手段は、
前記第１記憶部に記憶される更新情報の数が一定値以下になるまで、前記更新データを前記移動先に転送する第１の更新データ転送手段と、
前記移動対象の前記仮想機械の動作を停止した後に、前記更新データを前記移動先に転送する第２の更新データ転送手段と、
を備える、
ことを特徴とする付記１９に記載の情報処理装置。
（付記２１）
第１の情報処理装置により実現する仮想機械を、前記第１の情報処理装置と通信可能に接続する第２の情報処理装置に移動させるマイグレーション方法において、
ハードウェア資源を管理することにより、１または２以上の前記仮想機械を実現するステップと、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうステップと、
移動対象の前記仮想機械に割り当てられる第１のメモリ領域に格納されるデータを取得して前記第２の情報処理装置に転送するステップと、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
検出したデータが一定の条件を満たす場合に、前記検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶するステップと、
前記第１記憶部から更新情報を取得するステップと、
前記更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第１のメモリ領域において前記検出したデータにより変更された更新データを、前記第２の情報処理装置に転送するステップと、
を備えることを特徴とするマイグレーション方法。
（付記２２）
演算処理装置を有する第１の情報処理装置により実現する仮想機械を、前記第１の情報処理装置と通信可能に接続する第２の情報処理装置に移動させるマイグレーション用プログラムにおいて、
ハードウェア資源を管理することにより、１以上の仮想機械を実現する仮想機械実現処理と、
前記仮想機械に割り当てられる第１のメモリ領域のアドレスと、前記第１のメモリ領域の実メモリである第２のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送を行なうデータ転送処理と、
移動対象の前記仮想機械に割り当てられる第１のメモリ領域に格納されるデータを取得して前記第１の情報処理装置に転送するメモリ領域転送処理と、
前記入出力装置から前記仮想機械に割り当てられる前記第１のメモリ領域に直接的にデータ転送されるデータを検出する転送データ検出処理と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第１のメモリ領域に関する更新情報を生成し、前記更新情報を第１記憶部に記憶する更新情報登録処理と、
前記第１記憶部から更新情報を取得する更新情報取得処理と、
前記更新情報取得処理により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第１のメモリ領域において前記転送データ検出処理により検出したデータにより変更された更新データを、前記第１の情報処理装置に転送する更新データ転送処理と、
を前記演算処理装置に実行させることを特徴とするプログラム。
【符号の説明】
【０３２３】
６５０      ＰＣＩｅ−スイッチ
６５１      ダーティ・ページ管理ユニット
８１０      制御Ｉ／Ｆ部
８２０      パケット検出部
８３０      ライトポインタ
８４０      リードポインタ
８５０      ＤＭＡライトパケット
９０１      ＦＩＦＯ制御部
９０２      判定部
【図１】
0005573649.tif 000002
【図３】
0005573649.tif 000003
【図９】
0005573649.tif 000004
【図１０】
0005573649.tif 000005
【図１２】
0005573649.tif 000006
【図１３】
0005573649.tif 000007
【図１５】
0005573649.tif 000008
【図１６】
0005573649.tif 000009
【図１７】
0005573649.tif 000010
【図２１】
0005573649.tif 000011
【図２２】
0005573649.tif 000012
【図２４】
0005573649.tif 000013
【図２６】
0005573649.tif 000014
【図２８】
0005573649.tif 000015
【図３０】
0005573649.tif 000016
【図３２】
0005573649.tif 000017
【図３４】
0005573649.tif 000018
【図３６】
0005573649.tif 000019
【図３７】
0005573649.tif 000020
【図３８】
0005573649.tif 000021
【図２】
0005573649.tif 000022
【図４】
0005573649.tif 000023
【図５】
0005573649.tif 000024
【図６】
0005573649.tif 000025
【図７】
0005573649.tif 000026
【図８】
0005573649.tif 000027
【図１１】
0005573649.tif 000028
【図１４】
0005573649.tif 000029
【図１８】
0005573649.tif 000030
【図１９】
0005573649.tif 000031
【図２０】
0005573649.tif 000032
【図２３】
0005573649.tif 000033
【図２５】
0005573649.tif 000034
【図２７】
0005573649.tif 000035
【図２９】
0005573649.tif 000036
【図３１】
0005573649.tif 000037
【図３３】
0005573649.tif 000038
【図３５】
0005573649.tif 000039