(57)【特許請求の範囲】
【請求項１】
第１のメモリを備えた第１の計算機と接続される第１のインタフェースと、
第２のメモリを備えた第２の計算機と接続される第２のインタフェースと、
Ｉ／Ｏデバイスと接続される第３のインタフェースと、
前記第１のインタフェースと、第２のインタフェース及び第３のインタフェースを接続するＩ／Ｏスイッチと、
前記第１のメモリの内容を前記第２のメモリにコピーする第１のメモリコピーを行うために、前記第１の計算機の第１のメモリからデータを読み出すための第１のメモリリード要求を発行し、前記第１のメモリリード要求に対して前記第１の計算機が応答する第１のメモリリード応答に含まれるデータを受け付けて、前記第２の計算機の第２のメモリに前記受け付けたデータを書込むための第１のメモリライト要求を前記第２のインタフェースに発行するメモリコピー部と、
前記第２のメモリに書き込むための第３のメモリライト要求を発行するパケット複製部と、
前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、第２のメモリライト要求のデータを上書きするマージ部と、を有し、
前記メモリコピー部は、
前記第１のメモリコピーでコピーすべきメモリ領域を指定するメモリコピー設定レジスタと、前記第１のメモリコピーの進捗状況を保持するメモリコピー状態管理レジスタと、を有し、
前記メモリコピー状態管理レジスタは、
前記第１のメモリ内の領域を指定するアドレスを保持するメモリコピーアドレス設定レジスタと、
前記メモリコピー部が前記第１のメモリリード要求を前記メモリコピーアドレス設定レジスタが示す領域に発行したことを記憶するメモリリード要求発行フラグと、
前記メモリコピー部が前記第１のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、
前記メモリコピー部が前記第１のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグとを有し、
前記メモリコピー部は、
前記Ｉ／Ｏデバイスが前記第１のメモリにデータを書き込むために前記第３のインタフェースに発行した第２のメモリライト要求を受け付けて、前記第２のメモリライト要求の対象アドレスと、前記メモリコピーアドレス設定レジスタの保持するアドレスとを比較し、さらに前記メモリリード要求発行フラグと、メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第２のメモリライト要求が前記第１のメモリコピーでコピーが行われる前の領域に属するものであるか、メモリコピーを行っている途中の領域に属するものであるか、メモリコピー済の領域に属するものであるかのいずれかを判定するアドレス判定部を有し、前記メモリコピーを行っている途中の領域とは、前記メモリコピー部が前記第１のメモリリード応答を受け付けており、かつ、前記第１のメモリライト要求を発行する前の状態であり、
前記パケット複製部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピー済の領域に属するものである場合に、前記第２のメモリライト要求に含まれるデータを複製して前記第２のメモリに書き込むための第３のメモリライト要求として前記第２のインタフェースに発行し、
前記マージ部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピーを行っている途中の領域に属するものである場合に、前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、前記第２のメモリライト要求のデータを上書きし、
前記メモリコピー部は、前記マージ部が上書きした前記第１のメモリライト要求を前記第２のインタフェースに発行することで、前記第２のメモリライト要求が前記第１のメモリコピーでメモリコピー中の領域に対するものであっても、前記第１のメモリと前記第２のメモリが同一のデータを持つことを特徴とするデータ転送装置。
【請求項２】
請求項１に記載のデータ転送装置であって、
前記パケット複製部は、
前記第２のメモリライト要求が入力されて、前記アドレス判定部がメモリコピー済の領域に属するものと判定したときに、前記第２のメモリライト要求を複製して前記第３のメモリライト要求として前記第２のインタフェースに出力し、前記アドレス判定部がメモリコピー中の領域に属するものと判定したときに、当該領域のメモリコピーが完了し、メモリコピー済になるまで待機した後に、前記第２のメモリライト要求を複製して前記第３のメモリライト要求として前記第２のインタフェースに出力することを特徴とするデータ転送装置。
【請求項３】
請求項１または請求項２に記載のデータ転送装置であって、
前記データ転送装置は、
前記第３のインタフェースを複数備えて複数のＩ／Ｏデバイスを接続し、
前記複数の第３のインタフェースから入力されるメモリライト要求、メモリリード要求またはメモリリード応答を調停して、前記第１のインタフェースまたは前記第２のインタフェースに出力するための調停部をさらに有し、
前記調停部によって調停されたメモリライト要求を、前記第２のメモリライト要求とすることを特徴とするデータ転送装置。
【請求項４】
請求項３に記載のデータ転送装置であって、
前記Ｉ／Ｏスイッチが前記調停部を有することを特徴とするデータ転送装置。
【請求項５】
請求項１ないし請求項４のいずれかひとつに記載のデータ転送装置であって、
前記第１ないし第３のインタフェースは、ＰＣＩ、ＰＣＩ−Ｘ及びＰＣＩ Ｅｘｐｒｅｓｓのうちのいずれかひとつであることを特徴とするデータ転送装置。
【請求項６】
請求項１ないし請求項４のいずれかひとつに記載のデータ転送装置であって、
前記第１ないし第３のインタフェースは、パケットによりデータを伝送することを特徴とするデータ転送装置。
【請求項７】
第１のプロセッサと第１のメモリを備えた第１の計算機と、
第２のプロセッサと第２のメモリを備えた第２の計算機と、
前記第１の計算機と第２の計算機とＩ／Ｏデバイスを接続するデータ転送装置と、
を備えた計算機システムにおいて、
前記データ転送装置は、
前記第１の計算機と接続される第１のインタフェースと、
前記第２の計算機と接続される第２のインタフェースと、
前記Ｉ／Ｏデバイスと接続される第３のインタフェースと、
前記第１のインタフェースと、第２のインタフェース及び第３のインタフェースを接続するＩ／Ｏスイッチと、
前記第１のメモリの内容を前記第２のメモリにコピーする第１のメモリコピーを行うために、前記第１の計算機の第１のメモリからデータを読み出すための第１のメモリリード要求を発行し、前記第１のメモリリード要求に対して前記第１の計算機が応答する第１のメモリリード応答に含まれるデータを受け付けて、前記第２の計算機の第２のメモリに前記受け付けたデータを書込むための第１のメモリライト要求を前記第２のインタフェースに発行するメモリコピー部と、
前記第２のメモリに書き込むための第３のメモリライト要求を発行するパケット複製部と、
前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、第２のメモリライト要求のデータを上書きするマージ部と、を有し、
前記メモリコピー部は、
前記第１のメモリコピーでコピーすべきメモリ領域を指定するメモリコピー設定レジスタと、前記第１のメモリコピーの進捗状況を保持するメモリコピー状態管理レジスタと、を有し、
前記メモリコピー状態管理レジスタは、
前記第１のメモリ内の領域を指定するアドレスを保持するメモリコピーアドレス設定レジスタと、
前記メモリコピー部が前記第１のメモリリード要求を前記メモリコピーアドレス設定レジスタが示す領域に発行したことを記憶するメモリリード要求発行フラグと、
前記メモリコピー部が前記第１のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、
前記メモリコピー部が前記第１のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグとを有し、
前記メモリコピー部は、
前記Ｉ／Ｏデバイスが前記第１のメモリにデータを書き込むために前記第３のインタフェースに発行した第２のメモリライト要求の対象アドレスと、前記メモリコピーアドレス設定レジスタの保持するアドレスとを比較し、さらに前記メモリリード要求発行フラグと、メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第２のメモリライト要求が前記第１のメモリコピーでコピーが行われる前の領域に属するものであるか、メモリコピーを行っている途中の領域に属するものであるか、メモリコピー済の領域に属するものであるかのいずれかを判定するアドレス判定部を有し、前記メモリコピーを行っている途中の領域とは、前記メモリコピー部が前記第１のメモリリード応答を受け付けており、かつ、前記第１のメモリライト要求を発行する前の状態であり、
前記パケット複製部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピー済の領域に属するものである場合に、前記第２のメモリライト要求に含まれるデータを複製して前記第２のメモリに書き込むための第３のメモリライト要求として前記第２のインタフェースに発行し、
前記マージ部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピーを行っている途中の領域に属するものである場合に、前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、前記第２のメモリライト要求のデータを上書きし、
前記メモリコピー部は、前記マージ部が上書きした前記第１のメモリライト要求を前記第２のインタフェースに発行することで、前記第２のメモリライト要求が前記第１のメモリコピーでメモリコピー中の領域に対するものであっても、前記第１のメモリと前記第２のメモリが同一のデータを持つことを特徴とする計算機システム。
【請求項８】
第１のメモリを備えた第１の計算機と接続される第１のインタフェースと、
第２のメモリを備えた第２の計算機と接続される第２のインタフェースと、
Ｉ／Ｏデバイスと接続される第３のインタフェースと、
前記第１のインタフェースと、第２のインタフェース及び第３のインタフェースを接続するＩ／Ｏスイッチと、
第１の計算機の第１のメモリの内容を第１のメモリリード要求により読出し、
前記第１のメモリリード要求に対応する第１のメモリリード応答を受け付けて、
前記第１のメモリリード応答を第２の計算機の第２のメモリに書込むメモリコピー装置において、
前記第１のメモリの内容を前記第２のメモリにコピーする第１のメモリコピーを行うために、前記第１の計算機の第１のメモリからデータを読み出すための第１のメモリリード要求を発行し、前記第１のメモリリード要求に対して前記第１の計算機が応答する第１のメモリリード応答に含まれるデータを受け付けて、前記第２の計算機の第２のメモリに前記受け付けたデータを書込むための第１のメモリライト要求を前記第２のインタフェースに発行するメモリコピー部と、
前記第２のメモリに書き込むための第３のメモリライト要求を発行するパケット複製部と、
前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、第２のメモリライト要求のデータを上書きするマージ部と、を有し、
前記メモリコピー部は、
前記第１のメモリコピーでコピーすべきメモリ領域を指定するメモリコピー設定レジスタと、前記第１のメモリコピーの進捗状況を保持するメモリコピー状態管理レジスタと、を有し、
前記メモリコピー状態管理レジスタは、
前記第１のメモリ内の領域を指定するアドレスを保持するメモリコピーアドレス設定レジスタと、
前記メモリコピー部が前記第１のメモリリード要求を前記メモリコピーアドレス設定レジスタが示す領域に発行したことを記憶するメモリリード要求発行フラグと、
前記メモリコピー部が前記第１のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、
前記メモリコピー部が前記第１のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグとを有し、
前記メモリコピー部は、
前記Ｉ／Ｏデバイスが前記第１のメモリにデータを書き込むために前記第３のインタフェースに発行した第２のメモリライト要求の対象アドレスと、前記メモリコピーアドレス設定レジスタの保持するアドレスとを比較し、さらに前記メモリリード要求発行フラグと、メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第２のメモリライト要求が前記第１のメモリコピーでコピーが行われる前の領域に属するものであるか、メモリコピーを行っている途中の領域に属するものであるか、メモリコピー済の領域に属するものであるかのいずれかを判定するアドレス判定部を有し、前記メモリコピーを行っている途中の領域とは、前記メモリコピー部が前記第１のメモリリード応答を受け付けており、かつ、前記第１のメモリライト要求を発行する前の状態であり、
前記パケット複製部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピー済の領域に属するものである場合に、前記第２のメモリライト要求に含まれるデータを複製して前記第２のメモリに書き込むための第３のメモリライト要求として前記第２のインタフェースに発行し、
前記マージ部は、
前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピーを行っている途中の領域に属するものである場合に、前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、前記第２のメモリライト要求のデータを上書きし、
前記メモリコピー部は、前記マージ部が上書きした前記第１のメモリライト要求を前記第２のインタフェースに発行することで、前記第２のメモリライト要求が前記第１のメモリコピーでメモリコピー中の領域に対するものであっても、前記第１のメモリと前記第２のメモリが同一のデータを持つことを特徴とするメモリコピー装置。
【請求項９】
請求項８に記載のメモリコピー装置であって、
前記パケット複製部は、
前記メモリコピー済の領域に属するものと判定したときに、前記第２のメモリライト要求を複製し、
前記メモリコピー中の領域に属するものと判定したときに、当該領域のメモリコピーが完了し、メモリコピー済になるまで待機することを特徴とするメモリコピー装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機上で実行されているオペレーティングシステム、アプリケーションソフトウェア、ないしは、仮想計算機を、他の物理計算機へ移動させる技術に関する。
【背景技術】
【０００２】
本発明者が検討したところによれば、情報システムの高信頼化、ないしは、運用管理の柔軟性向上を実現するために、情報システムを構成する第１の計算機で動作しているオペレーティングシステムやアプリケーションソフトウェアを、第２の計算機に移行させて動作させるマイグレーションと呼ばれる技術が利用されている。
【０００３】
前記のマイグレーションで、第１の計算機に障害が発生した場合に、第１の計算機から第２の計算機にマイグレーションすることで処理を継続することができるため、情報システムの高信頼化が実現できる。また、第１の計算機に対する保守点検を行うために、第１の計算機を停止したいという要求があった場合に、第１の計算機から第２の計算機にマイグレーションすることで処理を停止せずに保守点検を行うことが出来るため、情報システムの運用管理の柔軟性向上を実現できる。
【０００４】
さらに、近年、情報システムを構成する計算機の台数増加に伴う運用管理コスト増大と、計算機を構成するＣＰＵのマルチコア化等による計算機の高性能化を背景として、１台のサーバを論理的に分割して仮想計算機として運用する仮想化技術が用いられている。なお、以降の説明においては、物理的な存在としての計算機を物理計算機と呼称し、物理計算機上で仮想計算機モニタ（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）やハイパーバイザを動作させることで、物理計算機を論理的に分割して作り出した仮想計算機と区別する。
【０００５】
仮想化技術により、高性能な１台の物理計算機を、複数の仮想計算機に分割して使用できるようになったため、物理計算機を集約して台数を削減することが可能になり、情報システムの効率的な構築と運用が可能になった。この仮想計算機に対しても、物理計算機同様にマイグレーションを適用することで、情報システムの高信頼化と運用管理の柔軟性向上を実現できる。
【０００６】
物理計算機のマイグレーションは、第１の物理計算機のメモリ内容を、第２の物理計算機のメモリにコピーすることで実現できる。仮想計算機のマイグレーションも同様に、第１の仮想計算機のメモリ内容を、第２の仮想計算機のメモリにコピーすることで実現できる。仮想計算機のマイグレーションの場合、第１の仮想計算機と第２の仮想計算機が同一の物理計算機に存在する場合と、異なる物理計算機に存在する場合の２種類のケースがある。
【０００７】
第１の仮想計算機と第２の仮想計算機が共に第１の物理計算機上に存在する場合、マイグレーションは第１の物理計算機のメモリ内で、第１の仮想計算機に割り当てられた領域から、第２の仮想計算機に割り当てられる領域へのメモリコピーで実現できる。
【０００８】
第１の仮想計算機が第１の物理計算機上に存在し、第２の仮想計算機が第２の物理計算機上に存在する場合、第１の物理計算機のメモリのうち、第１の仮想計算機に割り当てられている領域に含まれている内容を、第２の物理計算機のメモリのうち、第２の仮想計算機に割り当てられる領域にコピーすることで、マイグレーションを実現できる。
【０００９】
さらに、マイグレーションに伴う情報システムのダウンタイムを削減する目的で、第１の物理計算機、ないしは、第１の仮想計算機を稼働させたままマイグレーションを行うライブマイグレーションの実現が求められている。
【００１０】
しかし、ライブマイグレーションを実現するためには、以下の問題がある。まず、物理計算機のマイグレーションを事例として、問題を説明する。第１物理計算機をマイグレーション元とし、第２物理計算機をマイグレーション先とした例について検討する。
【００１１】
第１の物理計算機が稼働中である場合、第１の物理計算機から第２の物理計算機へのメモリコピーと、第１の物理計算機のＣＰＵから第１の物理計算機のメモリへのメモリライト（以降、ＣＰＵ発メモリライトと称する）が同時並行的に行われる。その結果、メモリコピー完了後も、第２の物理計算機のメモリ内容には、ＣＰＵ発メモリライトが反映されていない可能性がある。そのため、第１の物理計算機と第２の物理計算機のメモリ内容が一致しないため、マイグレーションが失敗してしまうことがある。
【００１２】
また、第１の物理計算機が稼働中である場合、第１の物理計算機から第２の物理計算機へのメモリコピーと、第１の物理計算機に接続されているＩ／Ｏデバイスから第１の物理計算機のメモリへのメモリライト（以降、Ｉ／Ｏデバイス発メモリライトと称する）が同時並行的に行われる。Ｉ／Ｏデバイス発メモリライトは、第１物理計算機のメモリに対してのみ行われる。その結果、メモリコピー完了後も、第２の物理計算機のメモリ内容には、Ｉ／Ｏ発メモリライトが反映されていない可能性がある。そのため、第１の物理計算機と第２の物理計算機のメモリ内容が一致しないため、マイグレーションが失敗してしまうことがある。
【００１３】
上述したＣＰＵ発メモリライト、及び、Ｉ／Ｏ発メモリライトによる問題は、仮想計算機のマイグレーションにおいても発生する。マイグレーション先の仮想計算機とマイグレーション元の仮想計算機が同一の物理計算機にある場合でも、異なる物理計算機にある場合でも、上述の問題が発生する。
【００１４】
これらの問題に対処し、ライブマイグレーションを実現させるための技術が提案されている。
【００１５】
ＣＰＵ発メモリライトによってマイグレーション元とマイグレーション先のメモリ内容に相違が生じる問題に対しては、例えば非特許文献１に記載されている方法がある。非特許文献１では、マイグレーション元の仮想計算機において、マイグレーションのためのメモリコピーが行われている期間に、ＣＰＵ発メモリライトが行われたメモリ領域（ページ）をｄｉｒｔｙなページとして記録しておく。ｄｉｒｔｙなページは、前記メモリコピーの完了後に、マイグレーション元のメモリとマイグレーション先のメモリで内容が異なる可能性があるページである。
【００１６】
そこで、前記メモリコピーが完了した後に、マイグレーション元の仮想計算機のＣＰＵを停止させて、ｄｉｒｔｙなページのみを再度メモリコピーする（以下、再メモリコピーと呼称する）。再メモリコピーでは、マイグレーション元の仮想計算機のＣＰＵは停止しているため、ＣＰＵ発メモリライトが新規に発生することはない。
【００１７】
この方法では、マイグレーション元の仮想計算機のＣＰＵを停止している期間、すなわち、再メモリコピーを行っている時間がダウンタイムとなる。
【００１８】
Ｉ／Ｏデバイス発メモリライトによってマイグレーション元とマイグレーション先のメモリ内容に相違が生じる問題に対しては、例えば特許文献１に記載されている方法がある。特許文献１では、マイグレーション元の物理計算機、マイグレーション先の物理計算機、及び、Ｉ／Ｏデバイスの３者をＩ／Ｏスイッチを介して接続する。そして、前記メモリコピーの期間、Ｉ／Ｏスイッチ内でＩ／Ｏデバイス発メモリライトを抑止する。
【００１９】
これにより、メモリコピーが完了するまでの間、Ｉ／Ｏデバイス発メモリライトがマイグレーション元の物理計算機に到着することはない。メモリコピー完了後に、Ｉ／ＯスイッチによってＩ／Ｏデバイスとマイグレーション先の物理計算機が接続される。その後、Ｉ／Ｏデバイス発メモリライトの抑止を解除することで、それ以降のＩ／Ｏデバイス発メモリライトは、マイグレーション先の物理計算機に行くことになる。
【００２０】
この方法では、Ｉ／Ｏデバイス発メモリライトを抑止している期間、すなわちメモリコピーを行っている期間がダウンタイムとなる。
【００２１】
上記したような技術を用いて、物理計算機、ないしは、仮想計算機のライブマイグレーションが実現されてきた。しかし、上述したように、ＣＰＵ発メモリライト、ないしは、Ｉ／Ｏデバイス発メモリライトに起因するダウンタイムが存在するため、ダウンタイムのさらなる削減が求められている。
【００２２】
なお、物理計算機、ないしは、仮想計算機のマイグレーションのみならず、複数の物理計算機を用いてフォールトトレラント構成を実現するような場合にも、上記と類似する問題が存在する。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開２００９−１８１４１８号公報
【特許文献２】特開２０１０−０３９６８５号公報
【非特許文献】
【００２４】
【非特許文献１】Ｃｈｒｉｓｔｏｐｈｅｒ  Ｃｌａｒｋ、  Ｋｅｉｒ  Ｆｒａｓｅｒ、  Ｓｔｅｖｅｎ  Ｈａｎｄ、  Ｊａｃｏｂ  Ｇｏｒｍ  Ｈａｎｓｅｎ、  Ｅｒｉｃ  Ｊｕｌ、  Ｃｈｒｉｓｔｉａｎ  Ｌｉｍｐａｃｈ、  Ｉａｎ  Ｐｒａｔｔ、  Ａｎｄｒｅｗ  Ｗａｒｆｉｅｌｄ、  Ｌｉｖｅ  ｍｉｇｒａｔｉｏｎ  ｏｆ  ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅｓ、  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２ｎｄ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｎｅｔｗｏｒｋｅｄ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎ  ＆  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ、  ｐ．２７３−２８６、  Ｍａｙ  ０２−０４、  ２００５．
【発明の概要】
【発明が解決しようとする課題】
【００２５】
本発明は、上記背景技術に示した、ライブマイグレーションによるＩ／Ｏデバイス発メモリライトに関するものである。特許文献１に示すような従来の発明では、マイグレーションのためのメモリコピーを行っている期間、Ｉ／Ｏデバイス発メモリライトを抑止していた。そのため、マイグレーションの対象となる物理計算機、ないしは、仮想計算機で、Ｉ／Ｏデバイスとのデータ転送を必要とする処理を行っている場合、メモリコピーの時間の全てがダウンタイムとなってしまう。
【００２６】
この問題に対して、本出願人は特許文献２（特願２００８−２００６８２号）において、Ｉ／Ｏデバイス発メモリライトを抑止せずに、マイグレーションを実現する技術を提案した。
【００２７】
特許文献２では、第１の物理計算機のＶＭＭが仮想計算機を第２の物理計算機に移動させる場合には、仮想計算機の稼働中に、仮想計算機に割り当てられた第１の物理計算機のメモリを、第２の物理計算機のメモリにコピーし、第１の物理計算機のメモリの状態を、コピー済み領域、コピー中領域、未コピー領域の何れかに分類して、Ｉ／Ｏスイッチに通知する。
【００２８】
Ｉ／Ｏスイッチは、Ｉ／Ｏデバイス発メモリライトを受信すると、その対象アドレスがコピー済み領域、コピー中領域、未コピー領域の何れに属するかを判定する。
【００２９】
Ｉ／Ｏデバイス発メモリライトの対象アドレスがコピー済み領域に属する場合、Ｉ／ＯスイッチがＩ／Ｏデバイス発メモリライトを複製し、第１の物理計算機のメモリのみならず、第２の物理計算機のメモリにも書込む。これにより、第１の物理計算機のメモリと、第２の物理計算機のメモリの内容に相違が生じることを防ぐことが出来る。
【００３０】
Ｉ／Ｏデバイス発メモリライトの対象アドレスがコピー中領域に属する場合、Ｉ／ＯスイッチがＩ／Ｏデバイス発メモリライトの対象アドレスを、第１の物理計算機のＶＭＭに通知する。メモリコピーが完了した段階では、第１の物理計算機のメモリと、第２の物理計算機のメモリの内容に相違が生じている可能性がある。そこで、第１の物理計算機のＶＭＭは、メモリコピーが完了した後に、Ｉ／Ｏスイッチに対してＩ／Ｏデバイス発メモリライトを抑止させるように指示し、Ｉ／Ｏスイッチから通知されたアドレスを含む領域を再メモリコピー（以下、コピー中領域再メモリコピーと称する）する。コピー中領域再メモリコピーが完了した後は、第１の物理計算機のメモリと、第２の物理計算機のメモリの内容の相違は解消できている。
【００３１】
Ｉ／Ｏデバイス発メモリライトの対象アドレスが未コピー領域に属する場合、Ｉ／Ｏスイッチは単にＩ／Ｏデバイス発メモリライトを第１の物理計算機に伝送する。未コピー領域は、後にメモリコピーされるため、第１の物理計算機のメモリと、第２の物理計算機のメモリの内容が相違することは無い。
【００３２】
上記の方法では、ダウンタイムはコピー中領域再メモリコピーの期間となるため、特許文献１で記された方法よりダウンタイムを削減することが出来る。
しかしながら、上記した特許文献２では、コピー中領域に対するＩ／Ｏデバイス発メモリライトが多いと、ダウンタイムが長くなってしまうという問題がある。また、ダウンタイムの長さが、Ｉ／Ｏデバイス発メモリライトの対象アドレスと量に依存してしまうため、ダウンタイムの長さを予測することが困難であるという問題もある。
【００３３】
また、上記特許文献２では、移動元の第１の物理計算機のＶＭＭがコピー済み領域、コピー中領域、未コピー領域を分類しなければならない。そのため、既存のＶＭＭをそのまま用いることができない、という問題があった。
【００３４】
上記の問題に鑑みて、本発明では、第１の物理計算機のメモリの内容を、第２の物理計算機のメモリにコピーし、Ｉ／Ｏデバイス発メモリライトを抑止せず、かつ、Ｉ／Ｏデバイス発メモリライトに起因する再メモリコピーを不要にする方法、ないしは、装置を、ＶＭＭの介在無しに提供することを目的とする。
【００３５】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００３６】
上記の課題を解決するために、本発明では、データ転送装置において、Ｉ／Ｏデバイス発のメモリライトの対象アドレスと、メモリコピーを行っているアドレスを比較して、前記対象アドレスがメモリコピー済の領域に属するものであるか、メモリコピー前の領域に属するものであるのかを判定する。前記対象アドレスがメモリコピー中の領域に属する場合には、メモリコピーを構成するより詳細な処理の進捗状況を検査することで、メモリコピー前、ないしは、メモリコピー済に分類する。
【００３７】
具体的には、データ転送装置によるメモリコピーは、メモリコピー元の物理計算機に対するメモリリード要求を発行し、それに対応するメモリリード応答が到着するのを待ち、前記メモリリード応答が到着したら、前記メモリリード応答に含まれるデータを、メモリコピー先に物理計算機に対してメモリライト要求を発行することで書込む。一度にメモリリード要求、ないしは、メモリライト要求できるデータ量には、一般的には制限があるため、これらの処理を、アドレスを更新しながら進めていくことで、メモリコピーを実現する。
【００３８】
前記対象アドレスが、メモリコピー中の領域に属する場合に、当該メモリコピー中の領域に対して、まだメモリリード要求を発行していない場合には、メモリコピー前と見做す。また、メモリライト要求を既に発行した後である場合には、メモリコピー済と見做す。
【００３９】
メモリコピー前の領域に対するＩ／Ｏデバイス発メモリライトは、単にメモリコピー元の物理計算機に対して転送する。メモリコピー済の領域に対するＩ／Ｏデバイス発メモリライトは、メモリコピー元の物理計算機と、メモリコピー先の物理計算機の両方に対して転送する。これにより、メモリコピー中に、メモリコピー前の領域、及び、メモリコピー済の領域に対するＩ／Ｏデバイス発メモリライトが発生しても、メモリコピー先の物理計算機のメモリと、メモリコピー元の物理計算機のメモリの内容の一貫性を保つことが出来る。
【００４０】
メモリリード要求を既に発行したが、メモリリード応答の受け取りを待っている段階、ないしは、メモリリード応答を既に受け取ったが、まだメモリライト要求は発行していないという段階である場合には、Ｉ／Ｏデバイス発メモリライトとメモリコピーのマージ、ないしは、メモリコピーの完了待ち、のいずれかによって、上記の課題を解決する。
【００４１】
Ｉ／Ｏデバイス発メモリライトとメモリコピーのマージを以下に説明する。
【００４２】
メモリコピーのためのメモリリード要求を既に発行し、メモリリード応答を待っている場合には、メモリリード応答を受け取るまで待つ。そして、受け取ったメモリリード応答に含まれるデータに、Ｉ／Ｏデバイス発メモリライトに含まれるデータを上書きし、そのデータをメモリライト要求によってメモリコピー先の物理計算機に書込む。
【００４３】
メモリコピーの完了待ちを以下に説明する。メモリコピーのためのメモリリード要求を既に発行し、メモリリード応答を待っている場合には、メモリリード応答を受け取るまで待つ。そして、受け取ったメモリリード応答に含まれるデータを、メモリコピー先の物理計算機にメモリライト要求で書き込んだ後に、Ｉ／Ｏデバイス発メモリライトを複製し、メモリコピー先の物理計算機にも転送する。
【００４４】
好ましい例によれば、本発明に係るデータ転送装置は、上記の処理を実現するために、第１のメモリを備えた第１の計算機と接続される第１のインタフェースと、第２のメモリを備えた第２の計算機と接続される第２のインタフェースと、Ｉ／Ｏデバイスと接続される第３のインタフェースと、前記第１のインタフェースと、第２のインタフェース及び第３のインタフェースを接続するＩ／Ｏスイッチと、前記第１のメモリの内容を前記第２のメモリにコピーする第１のメモリコピーを行うために、前記第１の計算機の第１のメモリからデータを読み出すための第１のメモリリード要求を発行し、前記第１のメモリリード要求に対して前記第１の計算機が応答する第１のメモリリード応答に含まれるデータを受け付けて、前記第２の計算機の第２のメモリに前記受け付けたデータを書込むための第１のメモリライト要求を前記第２のインタフェースに発行するメモリコピー部と、前記第２のメモリに書き込むための第３のメモリライト要求を発行するパケット複製部と、前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、第２のメモリライト要求のデータを上書きするマージ部と、を有し、前記メモリコピー部は、前記第１のメモリコピーでコピーすべきメモリ領域を指定するメモリコピー設定レジスタと、前記第１のメモリコピーの進捗状況を保持するメモリコピー状態管理レジスタと、を有し、前記メモリコピー状態管理レジスタは、前記第１のメモリ内の領域を指定するアドレスを保持するメモリコピーアドレス設定レジスタと、前記メモリコピー部が前記第１のメモリリード要求を前記メモリコピーアドレス設定レジスタが示す領域に発行したことを記憶するメモリリード要求発行フラグと、前記メモリコピー部が前記第１のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、前記メモリコピー部が前記第１のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグとを有し、前記メモリコピー部は、前記Ｉ／Ｏデバイスが前記第１のメモリにデータを書き込むために前記第３のインタフェースに発行した第２のメモリライト要求の対象アドレスと、前記メモリコピーアドレス設定レジスタの保持するアドレスとを比較し、さらに前記メモリリード要求発行フラグと、メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第２のメモリライト要求が前記第１のメモリコピーでコピーが行われる前の領域に属するものであるか、メモリコピーを行っている途中の領域に属するものであるか、メモリコピー済の領域に属するものであるかのいずれかを判定するアドレス判定部を有し、前記メモリコピーを行っている途中の領域とは、前記メモリコピー部が前記第１のメモリリード応答を受け付けており、かつ、前記第１のメモリライト要求を発行する前の状態であり、前記パケット複製部は、前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピー済の領域に属するものである場合に、前記第２のメモリライト要求に含まれるデータを複製して前記第２のメモリに書き込むための第３のメモリライト要求として前記第２のインタフェースに発行し、前記マージ部は、前記アドレス判定部による判定の結果、前記第２のメモリライト要求がメモリコピーを行っている途中の領域に属するものである場合に、前記メモリコピー部が発行する前記第１のメモリライト要求で前記第２のメモリに書き込もうとするデータに、前記第２のメモリライト要求のデータを上書きし、前記メモリコピー制御部は、前記マージ部が上書きした前記第１のメモリライト要求を前記第２のインタフェースに発行することで、前記第２のメモリライト要求が前記第１のメモリコピーでメモリコピー中の領域に対するものであっても、前記第１のメモリと前記第２のメモリが同一のデータを持つ。
【発明の効果】
【００４５】
本発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【００４６】
本発明によれば、第１の物理計算機の第１のメモリを、第２の物理計算機の第２のメモリにコピーするメモリコピーにおいて、メモリコピーの期間中に第１の物理計算機の第１のメモリに対して、Ｉ／Ｏデバイス発メモリライトがある場合にも、第１の物理計算機の第１のメモリ内容と、第２の物理計算機の第２のメモリ内容の相違が生じないように、メモリコピーを進めることができる。
【００４７】
よって、本発明は上記により、第１の物理計算機の第１のメモリを、第２の物理計算機の第２のメモリにコピーし、Ｉ／Ｏデバイス発メモリライトを抑止せず、かつ、Ｉ／Ｏデバイス発メモリライトに起因する再メモリコピーを不要にする方法、ないしは、装置をＶＭＭの介在無しに提供することができる。
【００４８】
これにより、第１の物理計算機から第２の物理計算機へのライブマイグレーションにおいて、Ｉ／Ｏデバイス発メモリライトを原因とするダウンタイムを０にすることが可能である。また、上記の効果は、第１の物理計算機上の第１の仮想計算機を、第２の物理計算機上の第２の仮想計算機にマイグレーションする場合にも同様である。また、第１の物理計算機上の第１の仮想計算機を、同じ第１の物理計算機上の第２の仮想計算機にマイグレーションする場合も同様である。
【図面の簡単な説明】
【００４９】
【図１Ａ】本発明の第１の実施の形態における情報システムの構成を示すブロック図である。
【図１Ｂ】本発明の第１の実施の形態におけるデータ転送装置の詳細を示すブロック図である。
【図２】データ転送装置のメモリコピー状態管理レジスタの構成を示す構成図である。
【図３】データ転送装置のマージ部における処理を示す概念図である。
【図４】データ転送装置のマージ部の構成を示すブロック図である。
【図５】データ転送装置のメモリコピー設定レジスタの構成を示す構成図である。
【図６】本発明の第１の実施の形態において、データ転送装置のメモリコピー制御部により実施される第１の処理を示すフローチャートである。
【図７】本発明の第１の実施の形態において、データ転送装置のメモリコピー制御部により実施される第２の処理を示すフローチャートである。
【図８】本発明の第１の実施の形態において、データ転送装置のメモリコピー制御部により実施される第３の処理を示すフローチャートである。
【図９】本発明の第１の実施の形態において、データ転送装置のメモリコピー制御部により実施される第４の処理を示すフローチャートである。
【図１０】本発明の第２の実施の形態において、データ転送装置のメモリコピー制御部により実施される第１の処理を示すフローチャートである。
【図１１Ａ】本発明の第３の実施の形態における情報システムの構成を示すブロック図である。
【図１１Ｂ】本発明の第３の実施の形態におけるデータ転送装置の内部構成を示すブロック図である。
【図１２】本発明の第３の実施の形態におけるデータ転送装置のメモリコピー部の構成を示すブロック図である。
【図１３】本発明の第１の実施の形態におけるメモリコピーの処理を示す説明図である。
【図１４】本発明の第１の実施の形態におけるメモリコピーの処理を示す説明図である。
【図１５】本発明の第１の実施の形態におけるメモリコピーの処理を示す説明図である。
【図１６】本発明の第１の実施の形態におけるＩ／Ｏスイッチ設定レジスタの構成の一例を示す構成図である。
【図１７ａ】本発明の第１の実施の形態におけるＩ／Ｏスイッチ設定レジスタの構成の一例を示す構成図で、マイグレーション前の状態を示す。
【図１７ｂ】本発明の第１の実施の形態におけるＩ／Ｏスイッチのポート間の接続関係を示す構成図で、マイグレーション前の状態を示す。
【図１８ａ】本発明の第１の実施の形態におけるＩ／Ｏスイッチ設定レジスタの構成の一例を示す構成図で、マイグレーション後の状態を示す。
【図１８ｂ】本発明の第１の実施の形態におけるＩ／Ｏスイッチのポート間の接続関係を示す構成図で、マイグレーション後の状態を示す。
【図１９Ａ】本発明の第４の実施の形態における情報システムの構成を示すブロック図である。
【図１９Ｂ】本発明の第４の実施の形態におけるデータ転送装置の詳細を示すブロック図である。
【図２０】本発明の第１の実施の形態における管理サーバの構成を示すブロック図である。
【発明を実施するための形態】
【００５０】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、同一の符号の繰り返しの説明は省略する。
【００５１】
＜第１の実施の形態＞
図１Ａ、図１Ｂに、本発明の第１の実施の形態における情報システムの構成図を示す。図１Ａ、図１Ｂの情報システム（計算機システム）は物理計算機１５０Ａ、１５０Ｂ、Ｉ／Ｏデバイス１６０、及び、データ転送装置１００から構成される。
【００５２】
物理計算機１５０Ａ、１５０Ｂはそれぞれ、ＣＰＵ（またはプロセッサ）１５１Ａ、１５１Ｂ、メモリ１５２Ａ、１５２Ｂ、メモリコントローラ１５３Ａ、１５３Ｂ、Ｉ／Ｏハブ１５４Ａ、１５４Ｂから構成される。
【００５３】
ＣＰＵ１５１Ａ、１５１Ｂ上ではオペレーティングシステムやアプリケーションソフトウェアが処理する。また、ＣＰＵ１５１Ａ、１５１Ｂ上でＶＭＭやハイパーバイザを実行させることで、物理計算機を１つ、ないしは、複数の仮想計算機として利用することができる。なお、ＶＭＭやハイパーバイザ等の仮想化制御部上の論理区画に生成された仮想計算機は、オペレーティングシステム及びアプリケーションソフトウェアを実行する仮想サーバが提供される。また、物理計算機１５０Ａ上で、直接オペレーティングシステム及びアプリケーションソフトウェアを実行してもよく、この場合には物理サーバが提供される。
【００５４】
ＣＰＵ１５１Ａ、１５１Ｂは、その上で稼動しているオペレーティングシステム、アプリケーション、ないしは、仮想計算機の要求に応じて、メモリ１５２Ａ、１５２Ｂにデータを書込む（背景技術の説明においてＣＰＵ発メモリライトと称した処理である）。
【００５５】
ＣＰＵ１５１Ａ、１５１Ｂは、メモリコントローラ１５３Ａ、１５３Ｂを介在して、メモリ１５２Ａ、１５２Ｂのデータを読み書きする。ＣＰＵ１５１Ａ、１５１Ｂは、上記オペレーティングシステム、アプリケーションまたはＶＭＭないしハイパーバイザをメモリ１５Ａ、１５２Ｂにロードして実行する。
【００５６】
物理計算機１５０Ａ、１５０Ｂには、ネットワークやストレージとの接続のために、ネットワークインタフェースアダプタ（ＮＩＣ）やストレージアダプタなどのＩ／Ｏデバイス１６０を接続して利用する。
【００５７】
物理計算機１５０Ａ、１５０ＢとＩ／Ｏデバイスの接続は、業界標準規格で定められたＩ／Ｏインタフェースを用いることが一般的である。例えば、今日ではＰＣＩ−ＳＩＧが規定するＰＣＩ  ＥｘｐｒｅｓｓがＩ／Ｏインタフェースとして広範に用いられている。
【００５８】
本実施の形態では、ＰＣＩ  Ｅｘｐｒｅｓｓを事例として説明を行うが、ＰＣＩ、ＰＣＩ−Ｘ、ないしは、その他のＩ／Ｏインタフェースでも同様の構成、処理とすることができる。
【００５９】
Ｉ／Ｏハブ１５４Ａ、１５４Ｂは物理計算機１５０Ａ、１５０ＢにＰＣＩ  Ｅｘｐｒｅｓｓのポート１５５Ａ、１５５Ｂを提供する。ＰＣＩ  Ｅｘｐｒｅｓｓは、データ転送をパケット形式で行うので、ポート１５５Ａ、１５５Ｂは、図中Ｓ１５５ＡＲ及びＳ１５５ＢＲの示すようにパケットを送信し、Ｓ１５５ＡＴ及びＳ１５５ＢＴの示すようにパケットを受信する。また、Ｉ／Ｏハブ１５４Ａ、１５４Ｂは物理計算機１５０Ａ、１５０Ｂを管理ネットワーク１３００に接続するためのネットワークインタフェースを備える。
【００６０】
Ｉ／Ｏデバイス１６０はポート１６１から、各物理計算機１５０Ａ、１５０Ｂのポート１５５Ａ、１５５Ｂに向けてメモリライト要求パケット、ないしは、メモリリード要求パケットを発行する。
【００６１】
Ｉ／Ｏハブ１５４Ａ、１５４Ｂはメモリライト要求パケットを受け取ると、メモリライト要求パケットに含まれているデータを、メモリ１５２Ａ、１５２Ｂ上に書込む。なお、書込み先のアドレスや、データ長はパケットに含まれている。
【００６２】
Ｉ／Ｏハブ１５４Ａ、１５４Ｂはメモリリード要求パケットを受け取ると、メモリ１５２Ａ、１５２Ｂからデータを読出して、メモリリード応答パケットとしてＩ／Ｏデバイスに返却する。なお、読出し対象のアドレスや、データ長はパケットに含まれている。
【００６３】
ＰＣＩ  Ｅｘｐｒｅｓｓでは、メモリライト要求パケット、ないしは、メモリリード要求パケットにおいて、３２ｂｉｔ、ないしは、６４ｂｉｔでアドレスを指定することが出来る。本実施の形態においては、近年の物理計算機において６４ｂｉｔのアドレスが多く利用されていることに鑑みて、６４ｂｉｔでアドレスを指定するものとして説明する。
【００６４】
図１Ａ、図１Ｂには記載していないが、Ｉ／Ｏデバイス１６０がレジスタを有している場合、ＣＰＵ１５１Ａ、１５１Ｂは、Ｉ／Ｏハブ１５４Ａ、１５４Ｂを介して、Ｉ／Ｏデバイス１６０が有しているレジスタを読み書きすることが出来る。
【００６５】
この場合、Ｉ／Ｏデバイス１６０が有しているレジスタは、物理計算機１５０Ａ、１５０Ｂのメモリマップに割り当てられている。これをメモリマップドＩ／Ｏ（Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）と称する（以降、ＭＭＩＯと略記する）。
【００６６】
ＣＰＵ１５１Ａ、１５１ＢはＭＭＩＯに対してロード命令、ストア命令を発行することで、Ｉ／Ｏデバイス上のレジスタを読み書きすることが出来る。ＣＰＵからロード命令、ないしは、ストア命令が発行されると、Ｉ／Ｏハブ１５４Ａ、１５４Ｂが、Ｉ／Ｏデバイス１６０のポート１６１に向けてメモリライト要求パケット、ないしは、メモリリード要求パケットを発行する。
【００６７】
Ｉ／Ｏデバイス１６０は、メモリライト要求パケットを受け取ったら、書込み対象アドレスに対応するレジスタにデータを書込む。同様に、メモリリード要求パケットを受け取ったら、読出し対象アドレスに対応するレジスタからデータを読出し、メモリリード応答パケットをポート１５５Ａ、１５５Ｂに向けて返送する。
【００６８】
本実施形態におけるデータ転送装置１００は、物理計算機１５０Ａ、１５０ＢとＩ／Ｏデバイス１６０の間に配置されて、物理計算機１５０Ａ、１５０ＢのＩ／Ｏハブ１５４Ａ、１５４ＢとＩ／Ｏデバイス１６０の間のパケットの転送を制御する。データ転送装置１００は、Ｉ／Ｏスイッチ１１０、マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１、メモリコピー制御部（メモリコピー装置）１２０、メモリライト要求パケット生成部１３０、メモリリード要求パケット生成部１３１、メモリリード応答パケット受付部１３２、マージ部１３３、セレクタ１３４、ポート１８０、パケット複製部１８１、パケット解析部１８２から構成される。
【００６９】
物理計算機１５０ＡがＩ／Ｏ処理を行う場合、物理計算機１５０ＡにＩ／Ｏデバイス１６０を直接接続して利用することが一般的である。しかし、物理計算機１５０Ａないしはその上で稼動している仮想計算機を、物理計算機１５０Ｂないしはその上で稼動している仮想計算機にマイグレーションするためには、物理計算機１５０Ａと物理計算機１５０Ｂの間でＩ／Ｏデバイス１６０を切替えて利用する必要がある。このＩ／Ｏデバイス１６０のホストとなる物理計算機の切替えを実現するために、データ転送装置１００はＩ／Ｏスイッチ１１０を備える。
【００７０】
なお、上記のように、マイグレーションに際して、マイグレーション元の物理計算機から、マイグレーション先の物理計算機に切り替えを必要とするＩ／Ｏデバイスを、以下ではマイグレーション対象Ｉ／Ｏデバイスと称する。
【００７１】
Ｉ／Ｏスイッチ１１０は複数のポート１１１、１１２、１１３、１１４、１１５を有しており、ポート間でパケットを転送する。図１Ａ、図１Ｂの構成では、物理計算機１５０Ａがポート１１１に、物理計算機１５０Ｂがポート１１２に接続されている。Ｉ／Ｏデバイス１６０は、途中にパケット複製部１８１を介在して、ポート１１３に接続されている。本実施形態において、各ポートは、ＰＣＩ  Ｅｘｐｒｅｓｓのインタフェースに準拠している例を示す。
【００７２】
ＰＣＩ  Ｅｘｐｒｅｓｓの場合、Ｉ／Ｏスイッチ１１０の各ポート間のルーティングは、物理計算機１５０Ａ、１５０Ｂを頂点とするツリー状のトポロジを形成する。すなわち、物理計算機１５０Ａを頂点とする第１のツリーと、物理計算機１５０Ｂを頂点とする第２のツリーが、Ｉ／Ｏスイッチ１１０内のルーティングにより形成される。
【００７３】
Ｉ／Ｏスイッチ１１０で行われるルーティングの設定は、Ｉ／Ｏスイッチ１１０が有するＩ／Ｏスイッチ設定レジスタ１１６で行う。Ｉ／Ｏスイッチ設定レジスタ１１６は、物理計算機１５０Ａ、１５０ＢからＭＭＩＯ、ないしは、その他の手段で設定される。また、物理計算機１５０Ａ、１５０Ｂ以外の計算機から設定されても良い。本実施形態では、例えば、図１Ａ、図１Ｂで示すように、ネットワーク１３００を介して物理計算機１５０Ａ、１５０Ｂ及びデータ転送装置１００に接続された管理サーバ１４００でＩ／Ｏスイッチ１１０を含むデータ転送装置１００の設定と、マイグレーションの制御が行われる。管理サーバ１４００は、物理計算機１５０Ａ、１５０Ｂと同様にＣＰＵやメモリ等を備えており、図２０で示すように、Ｉ／Ｏスイッチ１１０を含むデータ転送装置１００の制御を行うスイッチ制御部１２７２と、マイグレーションの制御を行うマイグレーション制御部１２７１が実行される。また、移動元の物理計算機１５０Ａは、オペレーティングシステム１２６０Ａとアプリケーション１２７０Ａが実行されてサーバＡを稼動させる。
【００７４】
管理サーバ１４００のスイッチ制御部１２７２は、物理計算機１５０Ａ、１５０ＢとＩ／Ｏデバイス１６０等、Ｉ／Ｏスイッチ１１０の各ポート間の接続を設定する。また、マイグレーション制御部１２７１は、物理計算機１５０ＡのサーバＡを物理計算機１５０Ｂに移動してサーバＡ’として生成する。
【００７５】
これら、マイグレーション制御部１２７１、スイッチ制御部１２７２からの指令は、管理ネットワーク１３００を介して物理計算機１５０Ａ、１５０Ｂ及びデータ転送装置１００に通知される。なお、本実施形態では、マイグレーション対象の決定等については、公知又は周知の技術を用いることができるので、ここでは詳述しない。
【００７６】
マイグレーション前、すなわち、物理計算機１５０Ａを用いて処理（例えば、サービスの提供等）を行う場合には、第１のツリーにポート１１３を所属させるように、Ｉ／Ｏスイッチ設定レジスタ１１６に設定する。そして、マイグレーション完了後、すなわち、物理計算機１５０Ｂを用いて処理を行う場合には、第２のツリーにポート１１３を所属させるように、Ｉ／Ｏスイッチ設定レジスタ１１６に設定する。これらのＩ／Ｏスイッチ設定レジスタ１１６の設定は、図２０の管理サーバ１４００で実行されるスイッチ制御部１２７２が実施する。
【００７７】
物理計算機１５０Ａから物理計算機１５０Ｂへのマイグレーションは、マイグレーション制御部１２７１の指令に基づいて、メモリ１５２Ａの内容をメモリ１５２Ｂにコピーすることで行う。
【００７８】
なお、物理計算機１５０Ａ上の仮想計算機から、物理計算機１５０Ｂ上の仮想計算機へのマイグレーションの場合も、物理計算機１５０Ａのメモリ１５２Ａ内で当該仮想計算機に割り当てられている領域を、物理計算機１５０Ｂのメモリ１５２Ｂ内で当該仮想計算機に割り当てられる領域にコピーすることで行う。
【００７９】
物理計算機１５０Ａ上で稼動するオペレーティングシステム、アプリケーションソフトウェア、ないしは、仮想計算機には、一般的にページと呼ばれる単位でメモリ領域が割り当てられている。また、ページサイズは４ＫＢ、ないしは、それより大きい２の冪乗のサイズであることが多い。また、ページの先頭アドレスは、ページサイズのアラインに沿わせることが多い。すなわち、ページサイズが４ＫＢであれば、ページの先頭アドレスの下位１２ｂｉｔは常に０である。
【００８０】
ＰＣＩ  Ｅｘｐｒｅｓｓの場合、単一のメモリライト要求パケット、ないしは、メモリリード要求パケットで読み書きを要求できるサイズは、最大でも４ＫＢである。また、ＰＣＩ  Ｅｘｐｒｅｓｓでは、単一のメモリライト要求パケット、ないしは、メモリリード要求パケットで４ＫＢアラインを跨る要求を行うことは出来ない。
【００８１】
よって、本実施の形態においては、ＰＣＩ  Ｅｘｐｒｅｓｓを用いた実施の形態を示すために、４ＫＢのページ単位でメモリコピーを行うことで、マイグレーションを行う。
【００８２】
すなわち、物理計算機間のマイグレーションと、物理計算機を跨る仮想計算機間のマイグレーションは、いずれもページ単位でのメモリコピーを繰り返すという点で、処理が同じである。よって、以降の説明では、物理計算機間のマイグレーションを代表の事例として取り上げる。
【００８３】
なお、同一物理計算機内での仮想計算機間のマイグレーションの処理については後述する。
【００８４】
データ転送装置１００のポート１８０は、Ｉ／Ｏデバイス１６０の有するポート１６１と接続される。ポート１８０は、Ｉ／Ｏスイッチ１１０のポート１１３からＩ／Ｏデバイス１６０に向けて発行される各種のパケットＳ１１３Ｒを、Ｉ／Ｏデバイス１６０にパケットＳ１６１Ｒとして送る。また、Ｉ／Ｏデバイス１６０から発行される各種のパケットＳ１６１Ｔを、パケットＳ１８０としてパケット複製部１８１に送る。
【００８５】
メモリコピー制御部１２０は、データ転送装置１００がマイグレーションのためのメモリコピーを行うための制御を担う。メモリコピー制御部１２０は、メモリコピー設定レジスタ１２１、メモリコピー状態管理レジスタ１２３、及び、アドレス判定部１２５を備えている。
【００８６】
メモリコピー設定レジスタ１２１は、物理計算機１５０Ａ、１５０Ｂによって、ＭＭＩＯ、ないしは、その他の手段で設定される。また、物理計算機１５０Ａ、１５０Ｂ以外の計算機（例えば、管理サーバ１４００）から設定されても良い。
【００８７】
メモリコピー設定レジスタ１２１は、メモリコピーを行うメモリ１５２Ａ、１５２Ｂの領域を指定する情報を保持する。領域を指定する情報としては、例えば、領域の先頭を示すアドレスと、領域の大きさを示すサイズの組合せがある。他の一例としては、領域の先頭を示すアドレスと、領域の終端を示すアドレスの組合せがある。
【００８８】
また、メモリコピー設定レジスタ１２１は、物理計算機１５０Ａ、１５０Ｂ、ないしは、その他の計算機から、メモリコピー開始の要求を受け付ける。本実施形態では、管理サーバ１４００のマイグレーション制御部１２７１が、メモリコピー開始の要求をデータ転送装置１００に指令する。
【００８９】
メモリコピー設定レジスタ１２１に設定するアドレスは、物理アドレス（後述するゲスト物理アドレスと特に区別するために、ホスト物理アドレスと呼称することがある）、ないしは、仮想アドレスのいずれでも良い。また、仮想計算機のマイグレーションを行う場合には、仮想計算機のゲスト物理アドレス、ないしは、ゲスト仮想アドレスでも良い。仮想アドレス、ゲスト物理アドレス、及び、ゲスト仮想アドレスでは、ホスト物理アドレスへのアドレス変換が必要となる。
【００９０】
アドレス変換を行うための機構は、例えばＩｎｔｅｌのＶＴ−ｄ（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｄｉｒｅｃｔｅｄ  Ｉ／Ｏ）や、ＡＭＤのＩＯＭＭＵがある。これらの機構は、物理計算機１５０Ａ、１５０Ｂが備える。
【００９１】
または、ＰＣＩ−ＳＩＧによって規定されたＡＴＳ（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｓｅｒｖｉｃｅｓ）のように、アドレス変換機構をデータ転送装置１００内に備えても良い。
【００９２】
メモリコピー状態管理レジスタ１２３は、メモリコピーの進捗状況を保持するレジスタであり、メモリコピー制御部１２０が内部的に使用する。
【００９３】
メモリライト要求パケット生成部１３０は、メモリコピー制御部１２０からの要求信号Ｓ１３０があった時に、セレクタ１３４から供給されるデータＳ１３４Ｄを、メモリ１５２Ａ、ないしは、メモリ１５２Ｂに書込むための、メモリライト要求パケットＳ１１５Ｔを発行する。アドレス、及び、データのサイズは要求信号Ｓ１３０に含まれている。
【００９４】
メモリライト要求パケット生成部１３０は、Ｉ／Ｏスイッチ１１０のポート１１５に接続される。そのため、メモリライト要求パケットＳ１１５Ｔによって、メモリ１５２Ａ、ないしは、メモリ１５２Ｂのどちらに書込まれるかは、ポート１１５が属するツリーによって決まる。ポート１１５が第１のツリーに属している場合には、メモリライト要求パケットＳ１１５Ｔがメモリ１５２Ａに書込まれる。ポート１１５が第２のツリーに属している場合には、メモリライト要求パケットＳ１１５Ｔがメモリ１５２Ｂに書込まれる。
【００９５】
物理計算機１５０ＡのサーバＡを物理計算機１５０Ｂへ移動する際には、ポート１１５は、前記第２のツリー、すなわちマイグレーション先である物理計算機１５０Ｂが頂点となるツリーに属している。また、前記の事例とは逆に、物理計算機１５０Ｂから物理計算機１５０Ａへのマイグレーションを行う場合には、ポート１１５は前記第１のツリー、すなわちマイグレーション先である物理計算機１５０Ａが頂点となるツリーに属する。
【００９６】
メモリリード要求パケット生成部１３１は、メモリコピー制御部１２０からの要求信号Ｓ１３１によって、メモリリード要求パケットＳ１１４Ｔを発行する。アドレス、及び、データのサイズは要求信号Ｓ１３１に含まれている。
【００９７】
メモリリード要求パケット生成部１３１は、ポート１１４に接続される。そのため、メモリ１５２Ａ、ないしは、メモリ１５２Ｂのどちらにリード要求されるかは、ポート１１４が属するツリーによって決まる。ポート１１４が第１のツリーに属している場合には、メモリ１５２Ａにリード要求が通知される。ポート１１４が第２のツリーに属している場合には、メモリ１５２Ｂにリード要求が通知される。
【００９８】
前記メモリリード要求パケットＳ１１４Ｔに対応する応答であるメモリリード応答パケットは、前記メモリリード要求パケットを発行したポートと同じポート１１４に到着する。そこで、ポート１１４にメモリリード応答パケット受付部１３２を接続して、前記メモリリード応答パケットＳ１１４Ｒを受け取る。
【００９９】
メモリリード応答パケット受付部１３２は、メモリリード応答パケットＳ１１４Ｒを受け取ったことを、受付通知信号Ｓ１３２Ｎでメモリコピー制御部１２０に通知する。また、前記メモリリード応答パケットに含まれるデータＳ１３２Ｄは、マージ部１３３とセレクタ１３４にそれぞれ送信される。
【０１００】
物理計算機１５０ＡのサーバＡを物理計算機１５０Ｂへ移動する際には、ポート１１４は、前記第１のツリー、すなわちマイグレーション元である物理計算機１５０Ａが頂点となるツリーに属している。また、前記の事例とは逆に、物理計算機１５０Ｂから物理計算機１５０Ａへのマイグレーションを行う場合には、ポート１１４は前記第２のツリー、すなわちマイグレーション元である物理計算機１５０Ｂが頂点となるツリーに属する。
【０１０１】
マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１は、マイグレーション対象のＩ／Ｏデバイスを識別する識別子を、少なくとも１個以上保持するレジスタである。本レジスタは、物理計算機１５０Ａ、１５０ＢからＭＭＩＯ、ないしは、その他の手段で設定される。また、管理サーバ１４００等の物理計算機１５０Ａ、１５０Ｂ以外の計算機から設定されても良い。
【０１０２】
ＰＣＩ  Ｅｘｐｒｅｓｓでは、Ｂｕｓ番号（８ｂｉｔ）、Ｄｅｖｉｃｅ番号（５ｂｉｔ）、及び、Ｆｕｎｃｔｉｏｎ番号（３ｂｉｔ）の３種の番号を組にしたＲｅｑｕｅｓｔｅｒ  ＩＤ（合計１６ｂｉｔ、以下ＲＩＤと略記する）というＩ／Ｏデバイスに固有な識別子が定義されている。よって、マイグレーション対象レジスタ１０１では、マイグレーション対象のＩ／ＯデバイスのＲＩＤを識別子として保持する。
【０１０３】
マイグレーション対象レジスタ１０１が保持しているＲＩＤ情報Ｓ１０１は、パケット複製部１８１に送られる。
【０１０４】
パケット複製部１８１は、Ｉ／Ｏデバイス１６０から発行されてポート１８０から転送されたパケットＳ１８０がメモリライト要求パケットである時に、パケットＳ１８０のＲＩＤと、マイグレーション対象レジスタ１０１から得たＲＩＤ情報Ｓ１０１を比較する。
【０１０５】
ＲＩＤが一致するパケットに関しては、マイグレーション対象のＩ／Ｏデバイスからのパケットであると判定する。この場合、パケット複製部１８１は、パケットＳ１８０を、パケットＳ１１３Ｔ、パケットＳ１８１Ｔの２個に複製する。パケットＳ１１３Ｔはポート１１３に送られる。パケットＳ１８１Ｔは、パケット解析部１８２に送られる。また、パケット複製部１８１は、パケットを複製したことを、パケット複製通知信号Ｓ１８１Ｎとして、メモリコピー制御部１２０に通知する。
【０１０６】
パケット複製部１８１は、パケットＳ１８０のＲＩＤと、マイグレーション対象レジスタ１０１から得たＲＩＤ情報Ｓ１０１が一致しないパケットに関しては、パケットＳ１８０を、複製せずにパケットＳ１１３Ｔとして、ポート１１３にのみ送る。
【０１０７】
パケット解析部１８２は、パケット複製部１８１から送られてきたメモリライト要求パケットＳ１８１Ｔを解析して、データＳ１８２Ｄ、アドレスＳ１８２Ａ、及び、データ長Ｓ１８２Ｌに分解する。
【０１０８】
マージ部１３３は、図３に示すように、データＳ１３２Ｄに、データＳ１８２Ｄを上書きしたデータＳ１３３Ｄをセレクタ１３４に送る。
【０１０９】
データＳ１３２Ｄは、４ＫＢアラインに沿った４ＫＢデータである。データＳ１８２Ｄは、４ＫＢ以下のデータであり、４ＫＢアラインを超えることは無い。図３の例では、データＳ１８２Ｄは２５６Ｂｙｔｅのデータ長である。
【０１１０】
セレクタ１３４は、メモリコピー制御部１２０からのセレクト信号Ｓ１３４によって、データＳ１８２Ｄ、データＳ１３３Ｄ、及び、データＳ１３２Ｄのうち、１つを選択して、データＳ１３４Ｄとしてメモリライト要求パケット生成部１３０に送る。
【０１１１】
図１６に、Ｉ／Ｏスイッチ設定レジスタ１１６の構成の一例を示す。また、Ｉ／Ｏスイッチ設定レジスタ１１６の設定例と、その設定によって構成されるＩ／Ｏスイッチ１１０のポート間のツリーの例を図１７ａ、図１７ｂ、図１８ａ、図１８ｂに示す。
【０１１２】
図１６はＩ／Ｏスイッチ設定レジスタ１１６の構成の一例である。Ｉ／Ｏスイッチ設定レジスタ１１６は、図示したような記憶領域を有するレジスタとして構成できる。この例では、第１のツリーから第４のツリーまで、合計４個のツリーに対して、それぞれ６個のエントリがあり、合計で２４個のレジスタとして構成できる。また、各レジスタは、Ｉ／Ｏスイッチ１１０が有するポートを識別するポート番号、ないしは、何れのポートも属さないことを示す情報を保持することができる。
【０１１３】
本実施の形態のデータ転送装置１００のＩ／Ｏスイッチ１１０では、ポート１１１、１１２、１１３、１１４、１１５の５個のポートを有している。これに加えて、何れのポートも属さないことを示す情報を表現できれば良いので、６種類の情報が表現できれば良い。よって、前記した各レジスタは、それぞれ３ｂｉｔあれば実装することができる。
【０１１４】
図１７ａに、マイグレーション前のＩ／Ｏスイッチ設定レジスタ１１６の設定例を示す。この設定によって、Ｉ／Ｏスイッチ１１０では図１７ｂに示すようなツリーが構成される。
【０１１５】
図１８ａに、マイグレーション後のＩ／Ｏスイッチ設定レジスタ１１６の設定例を示す。この設定によって、Ｉ／Ｏスイッチ１１０では図１８ｂに示すようなツリーが形成される。
【０１１６】
図２にメモリコピー状態管理レジスタ１２３の詳細な構成の一例を示す。メモリコピー状態管理レジスタ１２３は、メモリコピーアドレス設定レジスタ２０１、及び、メモリコピー進行状況フラグ２１０から構成されている。
【０１１７】
メモリコピーアドレス設定レジスタ２０１は、メモリコピーのためにメモリリード、及び、メモリライトを行うメモリ上の領域の先頭を示すアドレスを保持する。
【０１１８】
メモリコピー進行状況フラグ２１０は、メモリコピーを実現するためのより細かい処理の進捗状況を保持する。メモリコピー進行状況フラグ２１０は、メモリコピー中フラグ２１１、メモリリード要求発行フラグ２１２、メモリリード応答受付フラグ２１３、メモリライト要求発行フラグ２１４から構成されている。
【０１１９】
メモリコピー中フラグ２１１は、メモリコピーを行っているか否か（メモリコピー中であるか）を保持する。
【０１２０】
メモリリード要求発行フラグ２１２は、メモリコピーアドレス設定レジスタ２０１で示されているメモリ領域に対して、メモリリード要求パケット生成部１３１がメモリリード要求パケットＳ１１４Ｔを発行したか否かを保持する。
【０１２１】
メモリリード応答受付フラグ２１３は、メモリコピーアドレス設定レジスタ２０１で示されているメモリ領域に対して発行した前記メモリリード要求パケットＳ１１４Ｔに対応するメモリリード応答パケットＳ１１４Ｒを、メモリリード応答パケット受付部１３２が受付完了したか否かを保持する。
【０１２２】
メモリライト要求発行フラグ２１４は、メモリコピーアドレス設定レジスタ２０１で示されているメモリ領域に対して、メモリライト要求パケット生成部１３０がメモリライト要求パケットＳ１１５Ｔを発行したか否かを保持する。
【０１２３】
図５にメモリコピー設定レジスタ１２１の詳細な構成の一例を示す。図５の例では、メモリコピー設定レジスタ１２１は、メモリコピー先頭アドレス設定レジスタ５０１、メモリコピー領域サイズ設定レジスタ５０３、メモリコピー開始要求ドアベル５０４から構成される。
【０１２４】
メモリコピー先頭アドレス設定レジスタ５０１は、６４ｂｉｔアドレスを記憶するレジスタである。前述した通り、４ＫＢページ単位でメモリコピーを行うので、６４ｂｉｔアドレスの下位１２ｂｉｔは常に０である。よって、このレジスタを構成する上では、上位５２ｂｉｔのみフリップフロップ等の記憶素子を実装し、下位１２ｂｉｔは０に固定的に結線して良い。
【０１２５】
メモリコピー領域サイズ設定レジスタ５０３は、メモリコピーを行う領域のサイズを指定する、６４ｂｉｔのレジスタである。前述した通り、４ＫＢページ単位でメモリコピーを行うため、メモリコピーを行うページ数と見做しても構わない。よって、前述したメモリコピー先頭アドレス設定レジスタ５０１と同様に、下位１２ｂｉｔが０であるため、上位５２ｂｉｔのみのレジスタとして実装できる。
【０１２６】
また、メモリコピー領域サイズ設定レジスタ５０３の記憶内容を６４ｂｉｔの数値として解釈すると、０〜｛（２＾６４）−１｝の値しか表現できず、６４ｂｉｔのメモリ空間すべてをメモリコピーする場合、すなわち（２＾６４）Ｂの領域を指定できない。そこで、０を（２＾６４）と読み替えることで、１Ｂ〜（２＾６４）Ｂのサイズを表現できるようにする。但し、前述したとおり４ＫＢページ単位のコピーであるため、４ＫＢ〜（２＾６４）Ｂの範囲にある４ＫＢの整数倍のサイズを指定できることになる。
【０１２７】
メモリコピー開始要求ドアベル５０４は、物理計算機１５０Ａ、１５０Ｂ、ないしは、管理サーバ１４００等の他の計算機が、メモリコピーの開始を指示するためのレジスタである。メモリコピー開始要求ドアベル５０４が前記計算機によって読み出されると、読み出しを契機にしてメモリコピーが開始される。そして、メモリコピーを正常に開始できたことを示すデータを、読出し結果として前記計算機に返す。また、既にメモリコピーが開始されているのにも拘わらず、メモリコピー開始要求ドアベル５０４が前記計算機によって読みだされた場合、エラーを示すデータを読出し結果として前記計算機に返す。
【０１２８】
図４は、図３の処理を実現するためのマージ部１３３の構成を示している。マージ部１３３は、セレクタ４０１Ｄ、セレクタ４０１Ａ、マージ制御部４０２、バッファ４０３、アドレス定数４０５を有する。
【０１２９】
バッファ４０３は、４ＫＢの記憶容量を有するメモリである。アドレス定数４０５は、１２ｂｉｔのアドレス０００ｈ（１６進数表記）をアドレスＳ４０５Ａとして供給する。
【０１３０】
セレクタ４０１Ｄは、セレクト信号Ｓ４０２によって、データＳ１３２ＤとデータＳ１８２Ｄのうち、１つを選択して、データＳ４０１Ｄとして、バッファ４０３に送る。
【０１３１】
セレクタ４０１Ａは、セレクタ信号Ｓ４０２によって、アドレスＳ４０５ＡとアドレスＳ１８２Ａのうち、１つを選択して、アドレスＳ４０１Ａとして、バッファ４０３に送る。アドレスＳ４０５Ａは前述した通り１２ｂｉｔのアドレスである。アドレスＳ１８２Ａは６４ｂｉｔのアドレスであるため、そのうち下位１２ｂｉｔのみをバッファ４０３に送る。
【０１３２】
マージ制御部４０２は、図３に示した処理を実現するために、図４で示した各部を制御する。制御の流れを以下に示す。
【０１３３】
まず、マージ制御部４０２は、セレクト信号Ｓ４０２によって、セレクタ４０１ＤにデータＳ１３２Ｄを選択させる。また、セレクタ４０１Ａには、アドレスＳ４０５Ａを選択させる。その後、マージ制御部４０２はライト要求信号Ｓ４０３によって、バッファにデータＳ４０１Ｄの書込みを要求する。
【０１３４】
この書込みによって、メモリリード応答パケット受付部１３２から出力された４ＫＢのデータＳ１３２Ｄが、４ＫＢのバッファ４０３の先頭から末尾にかけて書込まれる。
【０１３５】
次に、マージ制御部４０２は、セレクト信号Ｓ４０２によって、セレクタ４０１ＤにはデータＳ１８２Ｄを選択させる。また、セレクタ４０１Ａには、アドレスＳ１８２Ａを選択させる。その後、マージ制御部４０２はライト要求信号Ｓ４０３によって、バッファにデータＳ４０１Ｄの書込みを要求する。
【０１３６】
この書込みによって、図３の例を引用すると、パケット解析部１８２から出力された２５６ＢのデータＳ１８２Ｄが、バッファ４０３に上書きされる。バッファ４０３に供給されているアドレスは、アドレスＳ１８２Ａのうち、下位１２ｂｉｔである。すなわち、図３の例を引用すると、アドレス４０００  ００００  ００００  ０３００ｈ（１６進数表記）のうち、下位１２ｂｉｔである３００ｈである。これは、４ＫＢのバッファ４０３のうち、先頭から７６８Ｂを経た後の位置を示している。
【０１３７】
このようにして、図３に示されているマージ処理が、図４で示したマージ部の構成要素によって実現できる。なお、マージされたデータ、すなわち上記の処理を経た後にバッファ４０３に記録されているデータは、データＳ１３３Ｄとして出力される。
【０１３８】
以下に、メモリコピー制御部１２０で行われる処理の詳細を、図６、及び、図７を用いて説明する。図７ではメモリコピーの処理を示す。そして、図６では、メモリコピー中に、マイグレーションの対象となっているＩ／Ｏデバイスから、メモリライト要求パケットが発行され、パケット複製部により複製された時に、メモリコピー制御部１２０が行うべき処理を示す。
【０１３９】
メモリコピー制御部１２０は、初期状態ではメモリコピーを開始していない。よって、メモリコピー中フラグ２１１は、初期状態では０（停止中）である。
【０１４０】
メモリコピー停止中の期間は、メモリコピー制御部１２０は特に処理を行わないので、Ｉ／Ｏデバイス１６０が発行したメモリライト要求パケットは、メモリ１５２Ａにのみ書込まれる。
【０１４１】
また、メモリコピー停止中の期間は、パケット複製部１８１は、パケットＳ１８０を、パケットＳ１１３Ｔにスルーさせるだけでも良い。
【０１４２】
メモリコピー開始要求ドアベル５０４の読み出しによって、メモリコピーの開始が要求された場合、メモリコピー制御部１２０は、図７に示す処理を開始する。
【０１４３】
ステップ７０１では、メモリコピー制御部１２０がメモリコピー進行状況フラグ２１０を設定する。メモリコピーを開始するので、メモリコピー中フラグ２１１に１（コピー中）を設定する。また、メモリコピー制御部１２０はメモリリード要求発行フラグ２１２を０（発行未）、メモリリード応答受付フラグ２１３を０（受付未）、メモリライト要求発行フラグ２１４を０（発行未）にそれぞれ初期化する。
【０１４４】
ステップ７０２では、メモリコピー制御部１２０がメモリコピー先頭アドレス設定レジスタ５０１に記録されている６４ｂｉｔアドレスを、メモリコピーアドレス設定レジスタ２０１にコピーする。これ以降、メモリコピーは、メモリコピーアドレス設定レジスタ２０１を更新しながら行われる。
【０１４５】
ステップ７０３では、メモリコピー制御部１２０はセレクト信号Ｓ１３４を用いて、セレクタ１３４にデータＳ１３２Ｄを選択させる。これにより、メモリリード応答パケット受付部１３２が出力する４ＫＢのデータＳ１３２Ｄが、データＳ１３４Ｄとしてメモリライト要求パケット生成部１３０に入力される（但し、この時点ではメモリリード応答パケットをまだ受け付けていないので、データＳ１３２Ｄは有効なデータではない）。
【０１４６】
ステップ７０４では、メモリコピー制御部１２０はメモリコピーアドレス設定レジスタ２０１に記録されているアドレスから、４ＫＢのデータを読み出すためのメモリリード要求パケットの発行を、要求信号Ｓ１３１でメモリリード要求パケット生成部１３１に要求する。また、この処理により、メモリコピーアドレス設定レジスタ２０１で示されているアドレスに対して、メモリリード要求パケットを発行した（発行済）ことになるので、メモリリード要求発行フラグ２１２に１（発行済）を設定する。
【０１４７】
ステップ７０５では、ステップ７０４で発行したメモリリード要求パケットに対応するメモリリード応答パケットが、メモリリード応答パケット受付部１３２に到着したことを示す、メモリリード応答パケット到着通知Ｓ１３２Ｎを待つ。メモリリード応答パケット到着通知Ｓ１３２Ｎを受信することによって、メモリコピーアドレス設定レジスタ２０１で示されているアドレスに関して、メモリリード応答パケットを受け取った（受付済）ことになるので、メモリコピー制御部１２０はメモリリード応答受付フラグ２１３に１（受付済）を設定する。
【０１４８】
ステップ７０６では、メモリコピー制御部１２０がメモリコピーアドレス設定レジスタ２０１に記録されているアドレスに対して、４ＫＢのデータＳ１３４Ｄを書込むためのメモリライト要求パケットの発行を、要求信号Ｓ１３０でメモリライト要求パケット生成部１３０に要求する。また、この処理により、メモリコピーアドレス設定レジスタ２０１で示されているアドレスに対して、メモリライト要求パケットを発行した（発行済）ことになるので、メモリコピー制御部１２０はメモリライト要求発行フラグ２１４に１（発行済）を設定する。
【０１４９】
ステップ７０３でセレクタ１３４はデータＳ１３２Ｄを選択しており、ステップ７０５でメモリリード応答パケットの到着を待っているので、ステップ７０６が実行される時点では、メモリリード応答パケットに含まれる４ＫＢのデータＳ１３２Ｄが、データＳ１３４Ｄとして出力されている。
【０１５０】
ステップ７０３からステップ７０６までの過程で、マイグレーション元のメモリを構成する１ページ（４ＫＢ）を、マイグレーション先のメモリにコピーすることができた。そこで、ステップ７０７では、次のページをコピーするために、メモリコピーアドレス設定レジスタ２０１を更新する。
【０１５１】
ステップ７０７では、メモリコピー制御部１２０がメモリコピーアドレス設定レジスタ２０１に４Ｋ（１０進数表記で４０９６、１６進数表記で１０００ｈ）を加算する。また、メモリコピーアドレス設定レジスタ２０１の更新に合わせて、メモリリード要求発行フラグ２１２を０（発行未）、メモリリード応答受付フラグ２１３を０（受付未）、及び、メモリライト要求発行フラグ２１４を１（発行未）にそれぞれ設定する。
【０１５２】
ステップ７０８では、メモリコピー制御部１２０がメモリコピー設定レジスタ１２１で指定されたメモリ領域を全てコピーし終わったか否かを判定する。ステップ７０８の段階では、メモリコピーアドレス設定レジスタ２０１には、次にコピーするページの先頭アドレスが記録されている。メモリコピー設定レジスタ１２１では、メモリコピー先頭アドレス設定レジスタ５０１とメモリコピー領域サイズ設定レジスタ５０３の組み合わせで、メモリ領域を示している。
【０１５３】
メモリコピー先頭アドレス設定レジスタ５０１に記録されているアドレスと、メモリコピー領域サイズ設定レジスタ５０３に記録されているサイズの和は、メモリ領域の最後のアドレスから１番地進んだところを示している。そこで、メモリコピー制御部１２０は、
（メモリコピー先頭アドレス設定レジスタ５０１＋メモリコピー領域サイズ設定レジスタ５０３）＞メモリコピーアドレス設定レジスタ２０１
が真である時には、メモリコピー設定レジスタ１２１で指定されたメモリ領域を全てコピーし終わっていないと判定して、ステップ７０３に戻って、コピーを継続する。偽である時には、全てコピーし終わったと判定して、ステップ７０９へ進む。
【０１５４】
ステップ７０９では、メモリコピーが完了したので、メモリコピー制御部１２０はメモリコピー中フラグ２１１に０（停止中）を設定してメモリコピーを終了する。
【０１５５】
次に、パケット複製部１８１から、パケット複製通知信号Ｓ１８１Ｎを、メモリコピー制御部１２０が受け取った時の処理を述べる。
【０１５６】
パケット複製通知信号Ｓ１８１Ｎを受け取った時、メモリコピーを行っていない、すなわち、メモリコピー中フラグ２１１が０（停止中）であれば、メモリコピー制御部１２０は特に処理を行わない。また、パケット複製部１８１は、パケットの複製に先だって、メモリコピー状態管理レジスタ１２３のメモリコピー中フラグ２１１を参照し、０（停止中）であれば複製を行わなくても良い。
【０１５７】
パケット複製通知信号Ｓ１８１Ｎを受け取った時、メモリコピーを行っている、すなわち、メモリコピー中フラグ２１１が１（コピー中）であれば、メモリコピー制御部１２０は、アドレス判定部１２５に対してアドレスＳ１８２Ａが、メモリコピー済の領域、メモリコピー中の領域、メモリコピー前の領域のいずれに属するものなのかの判定を要求する。ここで、アドレスＳ１８２Ａは、前記パケット複製通知信号Ｓ１８１Ｎによって複製が通知されたメモリライト要求パケットＳ１８１Ｔを、パケット解析部１８２が解析して得たものである。
【０１５８】
次に、アドレス判定部１２５の処理を、図６を用いて詳細に説明する。アドレス判定部１２５は、パケット複製部１８１が複製したメモリライト要求パケットＳ１８１Ｔを、パケット解析部１８２が解析して得られたアドレスＳ１８２Ａと、メモリコピーアドレス設定レジスタ２０１に記録されているアドレスの比較を行う。また、アドレス判定部１２５はメモリコピー進行状況フラグ２１０のフラグを判定する。
【０１５９】
ステップ６０１では、アドレス判定部１２５がアドレスＳ１８２Ａの上位５２ｂｉｔが、メモリコピーアドレス設定レジスタ２０１の上位５２ｂｉｔより大きいか否かを判定する。判定結果が真であれば、メモリライト要求パケットＳ１８１Ｔは、メモリコピーが行われる前のページに対するものである（ステップ６１１でメモリコピー前と判定する）。判定結果が偽であれば、ステップ６０２へ移る。
【０１６０】
ステップ６０２では、アドレス判定部１２５はアドレスＳ１８２Ａの上位５２ｂｉｔが、メモリコピーアドレス設定レジスタ２０１の上位５２ｂｉｔより小さいか否かを判定する。判定結果が真であれば、メモリライト要求パケットＳ１８１Ｔは、メモリコピーが既に行われたページに対するものである（ステップ６１３でメモリコピー済と判定する）。判定結果が偽であれば、ステップ６０３に移る。
【０１６１】
ステップ６０３では、アドレス判定部１２５はメモリリード要求発行フラグ２１２を参照して、メモリリード要求パケットが発行済（１）であるか否かを判定する。メモリリード要求パケットが発行済（１）である場合には、ステップ６０４へ移行する。メモリリード要求パケットを発行する前（０）であった時には、まだメモリコピーが行われていないものと見做して、ステップ６１１でメモリコピー前と判定する。
【０１６２】
ステップ６０４では、アドレス判定部１２５がメモリリード応答受付フラグ２１３を参照して、メモリリード応答パケットを受付済（１）であるか否かを判定する。判定結果がメモリリード応答パケットを受付済（１）である場合には、ステップ６０５へ移行する。まだメモリリード応答パケットを受け付けていない（０）場合には、アドレス判定部１２５は受付済（１）になるまで待つ。
【０１６３】
ステップ６０５では、アドレス判定部１２５がメモリライト要求発行フラグ２１４を参照して、メモリライト要求パケットが発行済（１）であるか否かを判定する。判定結果がメモリライト要求パケットの発行済（１）である場合には、既にメモリコピーが行われたものとみなして、ステップ６１３でメモリコピー済と判定する。判定結果が、メモリライト要求パケットを発行する前（０）であった時には、ステップ６１２でメモリコピー中と判定する。
【０１６４】
次に、ステップ６１１、６１２、６１３でメモリコピー前、メモリコピー中、メモリコピー済と判定された後に、メモリコピー制御部１２０が行う処理を、図８、及び、図９を元に説明する。また、メモリコピー制御部１２０の処理によって行われる処理を、図１３、図１４、及び、図１５を元に説明する。
【０１６５】
図６のステップ６１１でメモリコピー前と判定された場合、メモリライト要求パケットＳ１８１Ｔは、メモリコピーが行われる前のページに対するものであるから、メモリコピー制御部１２０は特に何も行わない。よって、図１３に示すように、Ｉ／Ｏデバイス１６０が発行したメモリライト要求パケットＳ１６１Ｔが、単にメモリ１５２Ａに書込まれるだけである。
【０１６６】
図６のステップ６１３でメモリコピー済と判定された場合、メモリライト要求パケットＳ１８１Ｔは、メモリコピーが既に行われたページに対するものであるから、メモリコピー制御部１２０は、メモリライト要求パケットＳ１８１Ｔを、メモリコピー先のメモリにも書込む。
【０１６７】
そのために、メモリコピー制御部１２０は、ステップ６１３でメモリコピー済と判定された場合に、図８で示す処理を行う。
【０１６８】
ステップ８０１において、メモリコピー制御部１２０は、図７で示したメモリコピーを一時停止する。
【０１６９】
ステップ８０２において、メモリコピー制御部１２０は、セレクト信号Ｓ１３４を介して、セレクタ１３４にデータＳ１８２Ｄを選択させる。このデータＳ１８２Ｄは、メモリライト要求パケットＳ１８１Ｔに含まれるデータである。
【０１７０】
ステップ８０３において、メモリコピー制御部１２０は、メモリライト要求パケット生成部１３０に、メモリライト要求パケットの発行を、要求信号Ｓ１３０で要求する。メモリライト要求パケットの対象アドレスはアドレスＳ１８２Ａ、転送長はデータ長Ｓ１８２Ｌとする。なお、データはステップ８０２で選択されたデータＳ１８２Ｄが、データＳ１３４Ｄとしてメモリライト要求パケット生成部１３０に供給されている。
【０１７１】
ステップ８０３で発行されるメモリライト要求パケットは、前記メモリライト要求パケットＳ１８１Ｔと、同じ対象アドレス、同じデータ、及び、同じデータ長のものである。よって、メモリライト要求パケットＳ１８１Ｔを、メモリコピー元のメモリとメモリコピー先のメモリの両方に書込んだことに等しい。
【０１７２】
以上の処理で、図１４に示すように、メモリコピー制御部１２０は、メモリライト要求パケットＳ１８１Ｔを、メモリコピー先のメモリ１５２Ｂにも書込むことが出来る。
【０１７３】
その後、ステップ８０１で一時停止したメモリコピーを再開するために、ステップ８０４、及び、ステップ８０５を実行する。ステップ８０４では、セレクタ１３４の選択をステップ８０２以前の状態に戻す。すなわち、セレクト信号Ｓ１３４によって、セレクタ１３４にデータＳ１３２Ｄを選択させる。その後、メモリコピー制御部１２０は、ステップ８０５で、一時停止していた図７のメモリコピーを再開する。
【０１７４】
ステップ６１２でメモリコピー中と判定された場合、メモリライト要求パケットＳ１８１Ｔが対象としているページを読み出したメモリリード応答パケットＳ１１４Ｒが、メモリリード応答パケット受付部１３２に到着している。そこで、メモリコピー制御部１２０は、メモリライト要求パケットＳ１８１Ｔを、メモリコピーのためのメモリライトにマージして、メモリコピー先のメモリにも書込む。
【０１７５】
そのために、メモリコピー制御部１２０は、ステップ６１２でメモリコピー中と判定された場合に、図９で示す処理を行う。
【０１７６】
ステップ９０１において、メモリコピー制御部１２０は、図７で示したメモリコピーを一時停止する。メモリコピー中と判定される条件から、ステップ７０５を実行後、ステップ７０６を実行前の状態で一時停止することになる。
【０１７７】
ステップ９０２において、メモリコピー制御部１２０は、セレクト信号Ｓ１３４を介して、セレクタ１３４にデータＳ１３３Ｄを選択させる。このデータＳ１３３Ｄは、メモリライト要求パケットＳ１８１Ｔに含まれるデータＳ１８２Ｄと、メモリリード応答パケットＳ１１４Ｒに含まれるデータＳ１３２Ｄをマージしたものである。
【０１７８】
ステップ９０３において、メモリコピー制御部１２０は、図７で示したメモリコピーを再開する。これにより、図７のステップ７０６が実行され、メモリコピーのためのメモリライト要求パケットに、Ｉ／Ｏデバイス発メモリライト要求パケットがマージされて、メモリコピー先のメモリに書込まれる。
【０１７９】
上記した、図９の処理、及び、図７の処理が複合して行われる処理を、図１５に示す。図１５に示すように、メモリコピー中の領域に対してＩ／Ｏデバイス１６０がメモリライト要求パケットを発行した場合でも、メモリ１５２Ａ、及び、メモリ１５２Ｂの内容に相違が生じないようにすることが、本発明の一実施の形態であるデータ転送装置１００で可能になっている。
【０１８０】
なお、同一物理計算機内での仮想計算機間のマイグレーションに関しても、上記と同様の処理で実現できる。物理計算機１５０Ａの上で処理する仮想計算機の間でマイグレーションを行う場合、Ｉ／Ｏスイッチ設定レジスタ１１６には、物理計算機１５０Ａを頂点とする第１のツリーに、ポート１１３、１１４、１１５を所属させる。
【０１８１】
また、上記の実施の形態では、メモリコピーを行う上で、メモリコピー元とメモリコピー先のアドレスが同一であると見做していたが、同一物理計算機内での仮想計算機間のマイグレーションの場合、当然のことながら、メモリコピー元とメモリコピー先のホスト物理アドレスは異なる。そこで、同一物理計算機内での仮想計算機間のマイグレーションの場合には、上述したようなアドレス変換機構が必要となる。そして、メモリコピー先頭アドレス設定レジスタ５０１には、ホスト物理アドレスではなく、ゲスト物理アドレスを設定する。
【０１８２】
もしくは、メモリコピー元のアドレスと、メモリコピー先のアドレスを別に保持する構成にしても良い。この場合、メモリコピー先頭アドレス設定レジスタ５０１、メモリコピーアドレス設定レジスタ２０１が、それぞれ、メモリコピー元のアドレスを保持するためのレジスタと、メモリコピー先のアドレスを保持するためのレジスタの２系統必要になる。
【０１８３】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態を説明する。図１０は、本発明の第２の実施の形態において、データ転送装置のメモリコピー制御部により実施される処理を示すフローチャートである。第２の実施の形態は、第１の実施の形態において、図６で示したメモリコピー制御部１２０の処理の内、アドレス判定部１２５の処理が異なる形態である。
【０１８４】
アドレス判定部１２５の処理以外は、第１の実施の形態と同じであるため、説明を省略する。また、アドレス判定部１２５の処理が変わることにより、第１の実施の形態で示したデータ転送装置１００のうち、マージ部１３３は使われなくなるため、第２の実施の形態では、マージ部１３３を省いてデータ転送装置１００を構成しても良い。
【０１８５】
本発明の第２の実施の形態におけるアドレス判定部１２５の処理を、図１０を用いて説明する。
【０１８６】
図１０に示すアドレス判定部１２５の処理では、メモリコピー中と判定されるべき状況で、メモリコピー済と判定できるようになるまで待機することが、第１の実施の形態である図６と異なる。
【０１８７】
ステップ１００１、１００２、１００３、１００４はそれぞれ、図６のステップ６０１、６０２、６０３、６０４と同じであるので説明を省略する。また、ステップ１０１１でメモリコピー前と判定された際の処理は、第１の実施の形態と同様である。ステップ１０１３でメモリコピー済と判定された際の処理に関しても、第１の実施の形態と同様である。
【０１８８】
図１０では、ステップ１００５において、メモリライト要求発行フラグ２１４を参照して、メモリライト要求パケットが発行済（１）であるか否かを判定する。メモリライト要求パケットが発行済（１）である場合には、既にメモリコピーが行われたものとみなして、ステップ１０１３でメモリコピー済と判定する。メモリリード要求パケットを発行する前（０）であった時には、発行済（１）になるまで待つ。
【０１８９】
これにより、アドレス判定部１２５では、メモリライト要求パケットが発行前の場合には、メモリライト要求パケットが発行済（１）となるまで待機することで、前記第１実施形態のようなメモリコピー中との判定は行われず、メモリコピー前、ないしは、メモリコピー済との判定しか行われない。メモリコピー中と判定した場合に、第１の実施の形態においては図１５で示した処理が行われていたが、第２の実施の形態においては、前記ステップ１００５で行われる待ちによって、図１５で示した処理を行うべきところを、図１４で示した処理で代替することができる。
【０１９０】
本実施の形態は、第１の実施の形態と比較して、マージ部１３３が不要となるため、データ転送装置１００をＬＳＩ等に実装する場合の物量制約がある場合に、有効な実施の形態となる。
【０１９１】
＜第３の実施の形態＞
次に、本発明の第３の実施の形態を説明する。第１の実施の形態、ないしは、第２の実施の形態において、２台の物理計算機１５０Ａ、１５０Ｂと、１台のＩ／Ｏデバイス１６０で実施の形態を説明していた。また、前記第１または第２の実施形態では、マイグレーション元の物理計算機とマイグレーション先の物理計算機の２台の物理計算機を１組として数えると、同時に１組のマイグレーションを行うデータ転送装置１００の例を示した。
【０１９２】
第３の実施の形態では、第１の実施の形態、ないしは、第２の実施の形態を拡張し、任意の台数の物理計算機と、任意の台数のＩ／Ｏデバイスで実施する形態を示す。また、第３の実施の形態では、任意の複数組のマイグレーションを同時に行うための実施の形態を示す。
【０１９３】
図１１Ａ、図１１Ｂに示すデータ転送装置１１００は、マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１１０１、マイグレーション対象物理計算機設定レジスタ１１０２、Ｉ／Ｏスイッチ１１１０、メモリコピー部１１２０Ｘ、１１２０Ｙ、セレクタ１１３０ＴＸ、１１３０ＮＸ、１１３０ＴＹ、１１３０ＮＹ、パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄ、及びＩ／Ｏスイッチ設定レジスタ１１１６によって構成される。
【０１９４】
図１１Ａ、図１１Ｂでは、４台の物理計算機１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄで実施した形態を示しているが、これは任意の台数に拡張することが可能である。その場合には、ポート１１１１Ａ、１１１１Ｂ、１１１１Ｃ、１１１１Ｄ、パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄを、物理計算機の台数に応じて増やす必要がある。また、セレクタ１１３０ＴＸ、１１３０ＮＸ、１１３０ＴＹ、１１３０ＮＹの入力数も、パケット複製部の増加に応じて増やす必要がある。
【０１９５】
また、図１１Ａ、図１１Ｂでは４台のＩ／Ｏデバイス１１６０Ａ、１１６０Ｂ、１１６０Ｃ、１１６０Ｄで実施した形態となっている。これに関しても、任意の台数に拡張することが可能である。その場合には、ポート１１１３Ａ、１１１３Ｂ、１１１３Ｃ、１１１３Ｄを、Ｉ／Ｏデバイスの台数に応じて増やす必要がある。
【０１９６】
図１１Ａ、図１１Ｂのデータ転送装置１１００が同時にマイグレーションすることができる組数は、メモリコピー部１１２０Ｘ、１１２０Ｙの数によって決まる。図１１Ｂの例では、メモリコピー部１１２０Ｘ、１１２０Ｙの２個であるため、同時にマイグレーションできるのは２組である。また、メモリコピー部の個数を増やして、同時にマイグレーションできる組数をさらに増加させる場合には、セレクタ１１３０ＴＸ、１１３０ＮＸ、１１３０ＴＹ、１１３０ＮＹ、ポート１１１４Ｘ、１１１５Ｘ、１１１４Ｙ、１１１５Ｙもそれに応じて増やす必要がある。
【０１９７】
物理計算機１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄは、既に説明した物理計算機１５０Ａ、１５０Ｂと同様のものであるため説明を省略する。
【０１９８】
パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄは、既に説明したパケット複製部１８１と同様のものであるため説明を省略する。
【０１９９】
Ｉ／Ｏスイッチ１１１０は、Ｉ／Ｏスイッチ１１０のポート数を増やしたものであるが、基本的な処理は前記第１の実施の形態と共通しているので、説明を省略する。また、Ｉ／Ｏスイッチ１１１０が有するＩ／Ｏスイッチ設定レジスタ１１１６も同様に、第１の実施の形態で説明した構成に類似する。
【０２００】
メモリコピー部１１２０Ｘ、１１２０Ｙは、１組のマイグレーションを行うために必要な構成部材を１つのメモリコピー部として纏めたものである。メモリコピー部１１２０Ｘ、１１２０Ｙの構成は図１２に示す。なお、メモリコピー部１１２０Ｘ、１１２０Ｙの総称はメモリコピー部１２００とする。
【０２０１】
図１２に示すメモリコピー部１２００は、図１１Ｂのメモリコピー部１１２０Ｘ、１１２０Ｙそれぞれに対して共通の構成である。なお、図１１ＢのＳ１１１４ＸＲ、Ｓ１１１４ＹＲは、図１２ではＳ１２２０Ｒに対応する。図１１ＢのＳ１１１４ＸＴ、Ｓ１１１４ＹＴは、図１２ではＳ１２２０Ｔに対応する。図１１ＢのＳ１１１５ＸＴ、Ｓ１１１５ＹＴは、図１２ではＳ１２３０Ｔに対応する。図１１ＢのＳ１１３０ＴＸ、Ｓ１１３０ＴＹは、図１２ではＳ１２１０Ｔに対応する。図１１ＢのＳ１１３０ＮＸ、Ｓ１１３０ＮＹは、図１２ではＳ１２１０Ｎに対応する。
【０２０２】
メモリコピー部１２００を構成する部材は、第１の実施の形態で示したデータ転送装置１００のメモリコピー制御部１２０と共通である。図１２では、図１Ｂと共通の部材に対しては、図１Ｂと共通の符号を付しているので、第１の実施の形態での説明を参照されたい。
【０２０３】
図１１Ａ、図１１Ｂでは、複数のＩ／Ｏデバイス１１６０Ａ、１１６０Ｂ、１１６０Ｃ、１１６０Ｄをマイグレーション対象Ｉ／Ｏデバイスとするために、パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄを、Ｉ／Ｏスイッチ１１１０と物理計算機１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄの間に設ける。その理由を以下に説明する。
【０２０４】
例えば、Ｉ／Ｏデバイス１１６０Ａ、１１６０Ｂ、１１６０Ｃ、１１６０Ｄがそれぞれ同時並行的に物理計算機１１５０Ａに対してパケットを発行する場合、Ｉ／Ｏスイッチ１１１０はポート１１１３Ａ、１１１３Ｂ、１１１３Ｃ、１１１３Ｄに入力されたパケットを調停し、ポート１１１１Ａから出力する。この調停の規則はＩ／Ｏインタフェースの規格では定められておらず、Ｉ／Ｏスイッチの実装依存であることが多い。本実施の形態で用いているＰＣＩ  Ｅｘｐｒｅｓｓの場合も、複数のＩ／Ｏデバイスからのパケットを調停する規則は定義されていない。
【０２０５】
特に、Ｉ／Ｏデバイス１１６０Ａ、１１６０Ｂ、１１６０Ｃ、１１６０Ｄから、同じアドレスに対するメモリライト要求パケットが発行される時、上述した調停の順序が重要となる。例えば、調停の結果、Ｉ／Ｏデバイス１１６０Ｄから発行されたメモリライト要求パケットが最後にポート１１１１Ａに出力された場合、メモリ上にはＩ／Ｏデバイス１１６０Ｄによる書込みが残ることになる。
【０２０６】
そのため、パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄは、Ｉ／Ｏスイッチ１１１０によって調停された後のメモリライト要求パケットを複製する。そのために、パケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄを、Ｉ／Ｏスイッチ１１１０と物理計算機１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄの間に設けている。
【０２０７】
なお、その他の実施の形態として、Ｉ／Ｏスイッチ１１１０と同じ調停を行うアービタを設けることで、第１の実施の形態と同様に、パケット複製部１１４０Ａ〜１１４０ＤをＩ／Ｏスイッチ１１１０とＩ／Ｏデバイス１１６０Ａ〜１１６０Ｄの間に設けることも可能ではある。例えば、データ転送装置１１００をＬＳＩ等へ実装する上で、配置や配線の制約から上述したようにＩ／Ｏスイッチ１１１０と物理計算機１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄの間にパケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄを設けることが困難である場合には、このような構成を取っても良い。
【０２０８】
マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１１０１は、第１の実施の形態で示したマイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１と同様に、マイグレーション対象のＩ／Ｏデバイスを識別する識別子を保持するレジスタである。本実施の形態においては、４個のパケット複製部１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄがあり、それぞれに対して少なくとも１つ以上のマイグレーション対象のＩ／ＯデバイスのＲＩＤを識別子として保持する。
【０２０９】
マイグレーション対象物理計算機設定レジスタ１１０２は、メモリコピー部１１２０Ｘ、１１２０Ｙがそれぞれ担当するマイグレーション先物理計算機と、マイグレーション元物理計算機が接続されているポートを示す識別情報が記録されている。例えば、メモリコピー部１１２０Ｘが物理計算機１１５０Ａから物理計算機１１５０Ｂへのマイグレーションを担当し、メモリコピー部１１２０Ｙが物理計算機１１５０Ｃから物理計算機１１５０Ｄへのマイグレーションを担当する場合、マイグレーション対象物理計算機設定レジスタには、メモリコピー部１１２０Ｘの担当するマイグレーション元はポート１１１１Ａ、マイグレーション先は１１１１Ｂ、メモリコピー部１１２０Ｙの担当するマイグレーション元はポート１１１１Ｃ、マイグレーション先はポート１１１１Ｄであるというように設定される。
【０２１０】
マイグレーション対象物理計算機設定レジスタ１１０２の設定内容Ｓ１１０２に基づいて、セレクタ１１３０ＴＸ、１１３０ＮＸ、１１３０ＴＹ、１１３０ＮＹは、それぞれが接続されているメモリコピー部１１２０Ｘ、１１２０Ｙが担うべきマイグレーション元計算機のポートに対応するパケットと受付通知信号を選択する。
【０２１１】
例えば、上記の設定例の場合、セレクタ１１３０ＴＸは、ポート１１１１Ａに対応するパケット複製部１１４０Ａからの出力であるパケットＳ１１４０ＡＴを選択する。また、セレクタ１１３０ＮＸは、パケット複製部１１４０Ａからのパケット複製通知信号Ｓ１１４０ＡＮを選択する。
【０２１２】
また、Ｉ／Ｏスイッチ１１１０で行われるルーティングは、第１の実施の形態、及び、第２の実施の形態と同様に、Ｉ／Ｏスイッチ１１１０が有するＩ／Ｏスイッチ設定レジスタ１１１６で設定されるが、メモリコピー部１１２０Ｘ、１１２０Ｙのルーティングに関しては、Ｉ／Ｏスイッチ１１１０が設定内容Ｓ１１０２を参照して決定しても良い。
【０２１３】
＜第４の実施の形態＞
図１９Ａ、図１９Ｂは、本発明の第４の実施の形態における情報システムの構成を示すブロック図である。第４の実施の形態では、前記第１の実施の形態または第２の実施の形態に示した物理計算機１５０Ａ、１５０Ｂで仮想計算機を実行した場合にマイグレーションを行う例を示す。
【０２１４】
図１９Ａにおいて、物理計算機１５０Ａ、１５０Ｂは、前記第１の実施の形態と同一のハードウェアで、仮想化制御部としてのＶＭＭ１７４０Ａ、１７４０Ｂを稼動させ、ＶＭＭ１７４０Ａ、１７４０Ｂ上でゲストＯＳ１７４４Ａ、１７４５Ａ、１７４４Ｂ、１７４５Ｂを実行する仮想計算機１７４２Ａ、１７４３Ａ、１７４２Ｂ、１７４３Ｂを提供する点が前記第１または第２の実施の形態と相違する。
【０２１５】
また、前記第１の実施の形態の図１Ａ、図１Ｂに示した管理サーバ１４００に代わって、ＶＭＭ１７４０Ａ、１７４０Ｂを制御して仮想計算機のマイグレーションを実施するマイグレーション管理部１７９１を実行する装置管理部１７９０を備える点が、第１または第２の実施の形態と相違する。
【０２１６】
ＶＭＭ１７４０Ａ、１７４０Ｂは、物理計算機１５０Ａ、１５０Ｂの計算機資源を分割または仮想化して仮想計算機１７４２Ａ、１７４３Ａ、１７４２Ｂ、１７４３Ｂに提供する。各ＶＭＭ１７４０Ａ、１７４０Ｂは、装置管理部１７９０のマイグレーション管理部１７９１からの指令を受け付けてマイグレーションを実行するエージェントとしてのマイグレーション制御部１７４１Ａ、１７４１Ｂを備える。
【０２１７】
ＶＭＭ１７４０Ａ、１７４０Ｂのマイグレーション制御部１７４１Ａ、１７４１Ｂは、マイグレーション管理部１７９１からの要求によって、マイグレーションのためのメモリコピーの準備（メモリ領域の確保、仮想計算機へのＣＰＵ資源割当停止、など）を行い、メモリコピー設定レジスタ１２１のメモリコピー開始要求ドアベル５０４を読み込んで、マイグレーションの開始をデータ転送装置１００に指令する。
【０２１８】
なお、装置管理部１７９０は、ＣＰＵとメモリ及び管理ネットワークのインタフェースを備えた管理計算機であり、例えば、ＳＶＰ（Service Processor）として実装することができる。装置管理部１７９０は、所定の条件や所定のタイミングなどでマイグレーションの開始をＶＭＭ１７４０Ａ、１７４０Ｂに指令する。このため、装置管理部１７９０と物理計算機１５０Ａ、１５０Ｂ及びデータ転送装置１００は管理ネットワークＳ１７９３Ａ、Ｓ１７９３Ｂで接続される。管理ネットワークは、例えば、物理計算機１５０Ａ、１５０Ｂがブレードサーバなどの場合では、シャシ内のブレード（物理計算機）と、シャシ内のＳＶＰを接続する内部のネットワークで構成される。
【０２１９】
なお、装置管理部１７９０がマイグレーションを指令する所定の条件は、例えば、物理計算機１５０Ａ、１５０Ｂの管理者またはユーザがマイグレーションを指令したとき、などである。
【０２２０】
データ転送装置１００は、装置管理部（ＳＶＰ）１７９０が、データ転送装置１００内の各レジスタ（Ｉ／Ｏスイッチ設定レジスタ１１６、マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１）を設定するためのインタフェースＳ１７９４を備える。このインタフェースＳ１７９４は、例えば、PCI Expressのようなインタフェースでもよいし、データ転送量が少ない（単にレジスタを設定するだけ）ので、I2Cなどのより簡易なインタフェースで構成してもよい。また、データ転送装置１００内の各レジスタの設定は、マイグレーション制御部１７４１Ａ、１７４１Ｂを経由して、各レジスタを設定させるように構成してもよい。この場合、上記インタフェースＳ１７９４を省略することができる。
【０２２１】
次に、仮想化環境におけるマイグレーションについて説明する。
【０２２２】
物理計算機１５０Ａ、１５０Ｂの管理者またはユーザは、装置管理部１７９０のマイグレーション管理部１７９１に、マイグレーション元サーバ、マイグレーション先サーバ、マイグレーション対象Ｉ／Ｏデバイスを指定して、マイグレーション開始を要求する。
【０２２３】
マイグレーション管理部１７９１は、インタフェースＳ１７９４経由で、Ｉ／Ｏスイッチ設定レジスタ１１６とマイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１を設定する。その後、マイグレーション管理部１７９１は、管理ネットワークＳ１７９３Ａ及びＳ１７９３Ｂ経由でＶＭＭ１７４０Ａ、１７４０Ｂ内のマイグレーション制御部１７４１Ａ、１７４１Ｂにマイグレーションの開始を指令する。
【０２２４】
装置管理部１７９０は、管理者またはユーザが指定したマイグレーション元サーバ、マイグレーション先サーバから、Ｉ／Ｏスイッチ設定レジスタ１１６の設定内容を決定してデータ転送装置１００に指令する。また、装置管理部１７９０は、管理者またはユーザが指定したマイグレーション対象Ｉ／Ｏデバイスから、マイグレーション対象Ｉ／Ｏデバイス設定レジスタ１０１の設定内容を決定してデータ転送装置１００に指令する。
【０２２５】
以降の説明は、マイグレーション制御部１７４１Ａ側がマイグレーション元、１７４１Ｂ側がマイグレーション先として説明する。
【０２２６】
マイグレーション先のマイグレーション制御部１７４１Ｂは、マイグレーション先となる仮想計算機を用意し、ＣＰＵ及びメモリ領域を確保する。
【０２２７】
マイグレーション元のマイグレーション制御部１７４１Ａは、マイグレーション元となる仮想計算機へのＣＰＵ資源の割当を停止する。この処理は、マイグレーション元のＣＰＵ１５１Ａからメモリライトが発せられるのを防ぐためである。但し、ＣＰＵ資源の割当を停止せず、ＣＰＵ１５１Ａがメモリライトした箇所をマイグレーション制御部１７４１Ａなどが記録しておいて、後で再コピーしてもよい。
【０２２８】
その後、マイグレーション制御部１７４１Ａは、データ転送装置１００のメモリコピー設定レジスタ１２１に所定のパラメータを設定して、メモリコピーを開始させる。
【０２２９】
メモリコピーの処理は前記第１または第２の実施の形態と同様である。ただし、物理計算機１５０Ａ上の仮想計算機１７４２Ａから、物理計算機１５０Ｂ上の仮想計算機１７４２Ｂへのマイグレーションの場合では、物理計算機１５０Ａのメモリ１５２Ａ内でマイグレーション元の仮想計算機１７４２Ａに割り当てられている領域を、物理計算機１５０Ｂのメモリ１５２Ｂ内でマイグレーション先の仮想計算機に割り当てられる領域にコピーすることで行う点が、前記第１または第２の実施の形態と異なる。その他については、前記第１または第２の実施の形態と同様である。
【０２３０】
以上により、仮想化環境においても、Ｉ／Ｏデバイス１６０からマイグレーション元の仮想計算機１７４２Ａのメモリ１５２Ａの領域に対してメモリライト要求があったときに、データ転送装置１００から物理計算機１５０Ａの仮想計算機１７４２Ａに対してメモリコピーのためのメモリリード要求が発行されており、かつ、マイグレーション先の物理計算機１５０Ｂの仮想計算機１７４２Ｂにメモリ書込み要求が発行される前であれば、Ｉ／Ｏデバイス１６０からのメモリライト要求のデータと、メモリ１５２Ａからのメモリリード要求の応答である仮想計算機１７４２Ａの領域のデータとをデータ転送装置１００がマージして、マイグレーション先の仮想計算機１７４２Ｂの領域のメモリ１５２Ｂに書き込むことができる。これにより、前記従来例のようにＩ／Ｏデバイス１６０からのメモリライト要求を抑止することなくマイグレーションのためのメモリコピーを継続することが可能となって、前記従来例のような再メモリコピーを不要にすることで、より高速にマイグレーションを実現することが可能となる。また、仮想計算機１７４２Ａに対してメモリコピーのためのメモリリード要求が発行されており、かつ、マイグレーション先の物理計算機１５０Ｂの仮想計算機１７４２Ｂにメモリ書込み要求が発行される前であれば、メモリコピーのためのメモリリード要求に対する応答を受信するまで待機する。これにより、仮想化環境においても、マイグレーション中にＩ／Ｏデバイス１６０からのメモリライト要求を抑止することなく、また、前記従来例のようなｄｉｒｔｙなページが発生しないことを保証でき、信頼性を保ちながらライブマイグレーションを実現できるのである。
【０２３１】
そして、前記従来例のようにＶＭＭがマイグレーション対象のメモリ領域について、コピー済み領域、コピー中領域、未コピー領域を分類する必要がないので、既存のＶＭＭを利用することができ、計算機システムの構成を簡易にすることができる。
【０２３２】
Ｉ／Ｏデバイス１６０からマイグレーション元の仮想計算機１７４２Ａのメモリ１５２Ａの領域に対してメモリライト要求があったときに、当該メモリ１５２Ａの領域のデータをマイグレーション先の仮想計算機１７４２Ｂのメモリ１５２Ｂの領域へ書込み要求の発行が完了していた場合には、Ｉ／Ｏデバイス１６０からのメモリライト要求をマイグレーション先へ複製して書き込む。このとき、データ転送装置１００は、マイグレーション先へのメモリ書込みを、複製されたＩ／Ｏデバイス１６０からのメモリライト要求が、発行済みのメモリコピーによるメモリ１５２Ｂへのメモリライト要求を追い越すことを防止するため、同じポート１１５から発行する。これにより、Ｉ／Ｏデバイス１６０からのメモリライト要求と、マイグレーションのメモリライト要求をＩ／Ｏスイッチ１１０の同一ポートから発行することにより、前記従来例のようなｄｉｒｔｙなページが発生しないことを保証できる。
【０２３３】
なお、上記各実施の形態においては、パケット複製部１８１とメモリコピー制御部１２０を分離した構成を示したが、メモリコピー制御部１２０内にパケット複製部１８１を含めるようにしてもよい。
【０２３４】
以上、本発明者によってなされた発明を、実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【０２３５】
以上のように、本発明は、複数の物理計算機とＩ／Ｏデバイス間のデータ転送を行い、物理計算機間でマイグレーションを行うデータ転送装置あるいはＩ／Ｏスイッチに適用することができる。また、本発明は複数の物理計算機とＩ／Ｏデバイスに接続されたデータ転送装置を介してマイグレーションを行う計算機システムに適用することができ、特にライブマイグレーションを行う計算機システムに好適である。
【符号の説明】
【０２３６】
１００  データ転送装置
１０１  マイグレーション対象Ｉ／Ｏデバイス設定レジスタ
１１０  Ｉ／Ｏスイッチ
１１１、１１２、１１３、１１４、１１５  ポート
１１６  Ｉ／Ｏスイッチ設定レジスタ
１２０  メモリコピー制御部
１２１  メモリコピー設定レジスタ
１２３  メモリコピー状態管理レジスタ
１２５  アドレス判定部
１３０  メモリライト要求パケット生成部
１３１  メモリリード要求パケット生成部
１３２  メモリリード応答パケット受付部
１３３  マージ部
１３４  セレクタ
１５０Ａ、１５０Ｂ  物理計算機
１５５Ａ、１５５Ｂ  ポート
１６０  Ｉ／Ｏデバイス
１６１  ポート
１８０  ポート
１８１  パケット複製部
１８２  パケット解析部
１１００  データ転送装置
１１０１  マイグレーション対象Ｉ／Ｏデバイス設定レジスタ
１１０２  マイグレーション対象物理計算機設定レジスタ
１１１０  Ｉ／Ｏスイッチ
１１１１Ａ、１１１１Ｂ、１１１１Ｃ、１１１１Ｄ、１１１３Ａ、１１１３Ｂ、１１１３Ｃ、１１１３Ｄ、１１１４Ｘ、１１１４Ｙ、１１１５Ｘ、１１１５Ｙ  ポート
１１１６  Ｉ／Ｏスイッチ設定レジスタ
１１２０Ｘ、１１２０Ｙ  メモリコピー部
１１３０ＴＸ、１１３０ＮＸ、１１３０ＴＹ、１１３０ＮＹ  セレクタ
１１４０Ａ、１１４０Ｂ、１１４０Ｃ、１１４０Ｄ  パケット複製部
１１５０Ａ、１１５０Ｂ、１１５０Ｃ、１１５０Ｄ  物理計算機
１２００  メモリコピー部
【図１Ａ】
0005585820.tif 000002
【図１Ｂ】
0005585820.tif 000003
【図２】
0005585820.tif 000004
【図４】
0005585820.tif 000005
【図５】
0005585820.tif 000006
【図６】
0005585820.tif 000007
【図７】
0005585820.tif 000008
【図８】
0005585820.tif 000009
【図９】
0005585820.tif 000010
【図１０】
0005585820.tif 000011
【図１１Ａ】
0005585820.tif 000012
【図１１Ｂ】
0005585820.tif 000013
【図１２】
0005585820.tif 000014
【図１３】
0005585820.tif 000015
【図１４】
0005585820.tif 000016
【図１５】
0005585820.tif 000017
【図１６】
0005585820.tif 000018
【図１７ａ】
0005585820.tif 000019
【図１７ｂ】
0005585820.tif 000020
【図１８ａ】
0005585820.tif 000021
【図１８ｂ】
0005585820.tif 000022
【図１９Ａ】
0005585820.tif 000023
【図１９Ｂ】
0005585820.tif 000024
【図２０】
0005585820.tif 000025
【図３】
0005585820.tif 000026