(57)【特許請求の範囲】
【請求項１】
それぞれメモリを備える第一、第二の計算機と、デバイスを有する計算機システムであって、
前記第一、第二の計算機と前記デバイスとの間に配置され、メモリコピー制御部を有する第一のスイッチと、複製制御部を有する第二のスイッチとを備え、
前記第一のスイッチの前記メモリコピー制御部は、
前記第一の計算機のメモリのコピー対象領域のデータを前記第二の計算機のメモリのコピー対象領域にコピーする際に、コピー情報として、コピー中領域情報である、前記第一の計算機のデータを読み出すメモリ領域と前記第二の計算機のデータを書き込むメモリ領域と、複製領域情報である、前記デバイスからのデータを複製すべき前記第一の計算機のメモリ領域と、複製した該データを書き込むべき前記第二の計算機のメモリ領域を、前記第二のスイッチに通知し、
前記第二のスイッチの前記複製制御部は、
前記デバイスから、前記複製領域情報中の前記第一の計算機のメモリ領域にデータが転送される際に、前記複製領域情報中の前記第二の計算機のメモリ領域に該データを複製し、
前記第二のスイッチは、転送され、複製される前記データを記憶するデータバッファを備える、
ことを特徴とする計算機システム。
【請求項２】
それぞれメモリを備える第一、第二の計算機とデバイスが、第一、第二のスイッチにより接続されるシステムの計算機間メモリコピー方法であって、
前記第一のスイッチは、
コピーを実施する前記メモリのコピー対象領域を一つ以上のメモリ領域に分割し、コピー情報として、コピー中領域の情報である前記第一の計算機のデータを読み出すメモリ領域と、前記第二の計算機にデータを書き込むメモリ領域と、複製領域の情報である前記デバイスからのデータを複製すべき前記第一の計算機のメモリ領域と、複製した該データを書き込むべき前記第二の計算機のメモリ領域を、前記第二のスイッチに通知するステップと、
前記第一の計算機の分割した前記メモリ領域からデータを読み出し、前記第二の計算機の分割した前記メモリ領域に書き込むステップと、
分割した前記メモリ領域のコピーの完了を前記第二のスイッチに通知するステップを実行し、
分割した前記メモリ領域を全て処理するまで前記ステップを繰り返し、
前記第二のスイッチは、
前記第一のスイッチからの前記コピー情報を受信し、保持するステップと、
前記第一のスイッチに前記コピー情報の受領確認を送信するステップと、
前記デバイスから前記第一の計算機へ書き込むデータを受信するステップと、
当該データを前記第一の計算機へ転送するステップと、
当該データの宛先が前記コピー中領域の場合にデータバッファに蓄えるステップを実行する、
ことを特徴とする計算機間メモリコピー方法。
【請求項３】
請求項２に記載の計算機間メモリコピー方法であって、
前記第二のスイッチは、
第一のスイッチから前記書き込むデータのコピーの完了の通知を受信するステップと、
前記データバッファに蓄えたデータを第二の計算機に転送するステップと、
前記データの転送書き込みの完了確認を、前記第一のスイッチに送信するステップを実行する、
ことを特徴とする計算機間メモリコピー方法。
【請求項４】
それぞれメモリを備える第一、第二の計算機と一つ以上のデバイスとの間に設置されるスイッチであって、
メモリコピーを制御するメモリコピー制御部と、
データの複製を制御する複製制御部と、
前記デバイスから転送され、複製される前記データを記憶するデータバッファを有し、
前記メモリコピー制御部は、
前記第一の計算機のメモリのデータを前記第二の計算機のメモリにコピーする際に、コピー情報として、コピー中領域情報である、前記第一の計算機のデータを読み出すメモリ領域と前記第二の計算機のデータを書き込むメモリ領域と、複製領域情報である、前記デバイスから転送されるデータを複製すべき前記第一の計算機のメモリ領域と、複製した当該データを書き込むべき前記第二の計算機のメモリ領域を、前記第一、第二の計算機と前記デバイスとの間に設置される他のスイッチに通知する、
ことを特徴とするスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
複数の計算機を用いる計算機システムに係り、特にスイッチを利用した複数の計算機間メモリコピー技術に関する。
【背景技術】
【０００２】
近年オペレーティングシステムやアプリケーション（以下、ソフトウェアと呼ぶ）をある計算機上で実行するだけでなく、別の計算機に移動し実行を継続するマイグレーションが用いられることがある。マイグレーションは、ソフトウェアを実行している第一の計算機を保守するために停止させる必要がある場合や、第一の計算機では当該ソフトウェアを実行するのに必要なリソースが不足している場合に行われる。ソフトウェアの実行を慨継続しつつ実行する計算機を変更することを特にライブマイグレーションと呼ぶ。マイグレーションは第一の計算機のリソースであるメモリ内容やＣＰＵのレジスタ情報等を移動先となる第二の計算機にコピーした後に、第一の計算機での実行停止と第二の計算機での実行再開を行うことで実施される。このコピー開始から第二の計算機上でソフトウェアが実行を再開するまでの時間をマイグレーション時間と呼ぶ。
【０００３】
一方、第一の計算機から第二の計算機へのメモリ内容のコピーには有意の時間が必要となる。マイグレーション中も第一の計算機上でソフトウェアの実行を継続する場合には、コピーした後に第一の計算機上のメモリが変更されることもあり得る。この不整合によりマイグレーションを失敗することがあり得る。
【０００４】
この問題に対応するため、従来からいくつかの方式によりこの不整合を防ぐ工夫が行われている。その一つとして非特許文献１にあるようにメモリ内容のコピー中に新たにメモリ内容を更新した場合、その場所を記憶し、メモリコピー処理後に再度更新した領域をコピーする方式がある。一般にメモリ領域をあるサイズで分割し、その分割した領域のどこかに対して更新が生じたときは、その領域全体をコピーし直す。また、領域のアドレス（場所）を記憶するのではなく、領域に対応したビットマップで記憶する方式がとられることもある。このビットマップの各ビットをダーティフラグ（Ｄｉｒｔｙ  Ｆｌａｇ）と呼び、領域が更新された状態、すなわちＤｉｒｔｙな状態である場合、対応するＤｉｒｔｙ  Ｆｌａｇをセットする。
【０００５】
最初のコピーはソフトウェアが使用しているメモリの全領域をコピーするため、時間がかかるが、二回目以降はＤｉｒｔｙな領域のみコピーするため、コピー時間が短くなる。この繰り返しを、指定された閾値を下回るまで繰り返し、最後はソフトウェアに対してＣＰＵリソースを与えない状態でコピーを行う。この停止期間はソフトウェアがサービス提供できない期間であり、ダウンタイムと呼ぶ。
しかし、コピー中にどの程度のメモリ領域が更新されるかは保証がなく、マイグレーション時間が長くなる、もしくは収束しないことがある。
【０００６】
また、Ｉ／Ｏデバイスもメモリを更新することがある。マイグレーション処理中にＩ／Ｏデバイスがメモリを更新した場合も第一の計算機と第二の計算機のメモリ状態が不整合となるため、マイグレーションに失敗する。このＩ／Ｏデバイスからのメモリ更新による不整合を防ぐため、特許文献１記載の方法として、マイグレーション期間中のＩ／Ｏデバイスによる第一の計算機へのメモリアクセスを保留させる方法がある。
【０００７】
以上の説明では計算機間のマイグレーションを例に述べたが、物理計算機のリソースを分割し、複数の仮想計算機を構築して使用する場合の仮想計算機間のマイグレーションでも同様の課題が存在する。例えば、特許文献２では、仮想計算機環境（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ、ＶＭＭ）で、ダウンタイムを緩和するための方法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８１４１８号公報
【特許文献２】特開２０１０−３９６８５号公報
【非特許文献】
【０００９】
【非特許文献１】Ｃｈｒｉｓｔｏｐｈｅｒ  Ｃｌａｒｋ，  Ｋｅｉｒ  Ｆｒａｓｅｒ，  Ｓｔｅｖｅｎ  Ｈａｎｄ，  Ｊａｃｏｂ  Ｇｏｒｍ  Ｈａｎｓｅｎ，  Ｅｒｉｃ  Ｊｕｌ，  Ｃｈｒｉｓｔｉａｎ  Ｌｉｍｐａｃｈ，  Ｉａｎ  Ｐｒａｔｔ，  Ａｎｄｒｅｗ  Ｗａｒｆｉｅｌｄ，  Ｌｉｖｅ  Ｍｉｇｒａｔｉｏｎ  ｏｆ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ，  ２ｎｄ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｎｅｔｗｏｒｋｅｄ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎ  ＆  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，  ｐｐ．２７３−２８６，  Ｍａｙ  ２００５
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述した特許文献１の方式では、第一および第二の計算機とＩ／Ｏデバイスを一つのスイッチに接続し、メモリコピー開始時に指示することでスイッチにＩ／Ｏデバイスから第一の計算機へのトランザクションを保留させる。
【００１１】
メモリコピー終了後、スイッチはＩ／Ｏデバイスの接続先を第一の計算機から第二の計算機に変更し、保留していたトランザクションを再開する。これにより、メモリアクセスはマイグレーション後の第二の計算機に対して行われる。この方式ではＩ／Ｏトランザクションを抑止している期間がダウンタイムであり、すなわちメモリコピーにかかる時間が大半を占める。特許文献１では、上記のような方法によりマイグレーションが実施されているが、サービス停止期間であるダウンタイムの削減が求められている。
【００１２】
以上説明したように、複数の計算機を用いる計算機システムにおけるライブマイグレーションではメモリ間コピーを伴う。メモリ間コピーに伴う課題の理解を容易にするため、図７のメモリ間コピーの概念図を用いて説明する。同図において、第一の計算機（Ｓｅｒｖｅｒ  Ａ）１０ａのメモリ領域１０１ａを第二の計算機（Ｓｅｒｖｅｒ  Ｂ）１０ｂのメモリ領域１０１ｂにコピーするものとする。コピーは瞬時に行われるのではなく、いくつかの小メモリ領域毎に順番にコピーされる。その結果、コピー済みのメモリ領域１０２ａおよび１０２ｂ、コピー未のメモリ領域１０４ａおよび１０４ｂ、コピーを実施中、即ちコピー中のメモリ領域１０３ａおよび１０３ｂに分類できる。
【００１３】
このライブマイグレーションでは、マイグレーション先である第二の計算機のメモリ内容が第一の計算機のメモリ内容と整合する必要があるが、メモリコピーとは別に書き込みが起きるとメモリ領域１０１ａと１０１ｂが不整合となることがある。特に、図８に示すように、コピーが終了した１０２ａの領域が更新されると、領域１０２ｂと不整合となる。一方、１０４ａへの書き込みは、後ほどメモリコピーでコピーが実施されるため、１０４ｂは１０４ａと整合する。
【００１４】
この問題に対し、特許文献１ではマイグレーション期間中、Ｉ／Ｏトランザクションを保留することで整合性を確保するが、マイグレーション期間全体がサービス停止期間であるダウンタイムとなる。
【００１５】
このダウンタイムを緩和するため上述した特許文献２では、第一の計算機上で動作しているＶＭＭがマイグレーション対象の仮想計算機のメモリ領域を、コピー済み、コピー中、コピー未のメモリ領域に分類し、それぞれの状態に応じて処理を変更することで対応する。
【００１６】
Ｉ／Ｏデバイスからコピー済みのメモリ領域に対して変更要求が発行された場合、スイッチは第一の計算機だけでなく第二の計算機に対しても当該変更要求を転送する。コピー未のメモリ領域に対しての変更要求は第一の計算機のみに転送する。コピー未のメモリ領域は後に第二の計算機にコピーされるためである。コピー中の領域に対しての変更要求は、第一の計算機のみに転送するが、同時に第一の計算機上のＶＭＭに対しても変更要求の対象アドレスが通知される。ＶＭＭはコピー終了後、スイッチに対してＩ／Ｏトランザクションの保留を指示し、Ｉ／Ｏデバイスからのメモリ変更を抑止した上で、先に通知されたコピー中に変更されたメモリ領域を再コピーすることで整合性を確保する。整合性確保後にＣＰＵ状態等を第二の計算機に移し、Ｉ／Ｏデバイスの接続先を第二の計算機に切り替えた上でＩ／Ｏトランザクションの保留を解除することでマイグレーションが完了する。
【００１７】
この技術によれば、特許文献１の方法に対してはダウンタイムを削減することができるが、コピー中の領域に対してＩ／Ｏデバイスからどの程度アクセスが存在するかによりダウンタイムの長さが変化する。また、ＶＭＭがメモリ領域の分類を行う必要があるため、そのように対応したＶＭＭが必要となる。
【００１８】
本発明の目的は、上記の問題点を解決するため、マイグレーション時に生じるＩ／Ｏデバイスからのメモリ変更に依る再コピーを防止する計算機システム、計算機間メモリコピー方法、およびスイッチを提供することにある。
【課題を解決するための手段】
【００１９】
上記の目的を達成するため、本発明においては、それぞれメモリを備える第一、第二の計算機と、デバイスを有する計算機システムであって、第一、第二の計算機とデバイスとの間に配置され、メモリコピー制御部を有する第一のスイッチと、複製制御部を有する第二のスイッチとを備え、第一のスイッチの前記メモリコピー制御部は、第一の計算機のメモリのコピー対象領域のデータを第二の計算機のメモリのコピー対象領域にコピーする際に、コピー情報として、コピー中領域情報である、第一の計算機のデータを読み出すメモリ領域と第二の計算機のデータを書き込むメモリ領域と、複製領域情報である、デバイスからのデータを複製すべき第一の計算機のメモリ領域と、複製した該データを書き込むべき第二の計算機のメモリ領域を、第二のスイッチに通知し、第二のスイッチの複製制御部は、デバイスから、複製領域情報中の第一の計算機のメモリ領域にデータが転送される際に、複製領域情報中の第二の計算機のメモリ領域に該データを複製する構成の計算機システムを提供する。
【００２０】
また、上記の目的を達成するため、本発明においては、それぞれメモリを備える第一、第二の計算機とデバイスが、第一、第二のスイッチにより接続されるシステムの計算機間メモリコピー方法であって、第一のスイッチは、コピーを実施するメモリのコピー対象領域を一つ以上のメモリ領域に分割し、コピー情報として、コピー中領域の情報である第一の計算機のデータを読み出すメモリ領域と、第二の計算機にデータを書き込むメモリ領域と、複製領域の情報であるデバイスからのデータを複製すべき第一の計算機のメモリ領域と、複製した該データを書き込むべき第二の計算機のメモリ領域を、第二のスイッチに通知するステップと、第一の計算機の分割したメモリ領域からデータを読み出し、第二の計算機の分割したメモリ領域に書き込むステップと、分割したメモリ領域のコピーの完了を第二のスイッチに通知するステップを実行し、分割したメモリ領域を全て処理するまで以上のステップを繰り返す計算機間メモリコピー方法を提供する。
【００２１】
更に、上記の目的を達成するため、本発明においては、それぞれメモリを備える第一、第二の計算機と一つ以上のデバイスとの間に設置されるスイッチであって、メモリコピーを制御するメモリコピー制御部と、データの複製を制御する複製制御部とを有し、メモリコピー制御部は、第一の計算機のメモリのデータを第二の計算機のメモリにコピーする際に、コピー情報として、コピー中領域情報である、第一の計算機のデータを読み出すメモリ領域と第二の計算機のデータを書き込むメモリ領域と、複製領域情報である、デバイスから転送されるデータを複製すべき第一の計算機のメモリ領域と、複製した当該データを書き込むべき第二の計算機のメモリ領域を、第一、第二の計算機とデバイスとの間に設置される第二のスイッチに通知する構成のスイッチを提供する。
【００２２】
即ち、本発明においては、それぞれメモリを備える第一、第二の計算機と、デバイスを有する計算機システムであって、第一、第二の計算機とデバイスとの間に配置され、メモリコピー制御部を有する第一のスイッチと、複製制御部を有する第二のスイッチとを備え、第一のスイッチのメモリコピー制御部は、第一の計算機のメモリのコピー対象領域のデータを第二の計算機のメモリのコピー対象領域にコピーする際に、コピー情報として、コピー中領域情報と複製領域情報を前記第二のスイッチに通知し、第二のスイッチの複製制御部は、デバイスから、第一の計算機のメモリ領域にデータが転送される際に、複製領域情報に基づき、データの複製を行う計算機システムを提供する。
【発明の効果】
【００２３】
本発明によれば、それぞれメモリを備える複数の計算機からなるシステムにおいて、マイグレーション時に生じるＩ／Ｏデバイスからのメモリ変更に依る再コピーを防止することが可能となる。
【図面の簡単な説明】
【００２４】
【図１】各実施例に係る、複数スイッチ連携による計算機間メモリコピー方式タイムチャートを示す図である。
【図２Ａ】第二の実施例に係る、データパス（通信路）による情報交換方式のサーバによる接続のスイッチ構造の一例を示すブロック図である。
【図２Ｂ】第二の実施例に係る、データパスによる情報交換方式のスイッチによる接続のスイッチ構造の他の例を示すブロック図である。
【図３】第一の実施例に係る、専用パス（通信路）による情報交換方式のスイッチ構造の一例を示すブロック図である。
【図４】第一の実施例に係る、コピー情報格納テーブルの一構成例を示す図である。
【図５】第一の実施例に係る、コピー状態格納レジスタの一構成例を示す図である。
【図６】各実施例に係る、複数スイッチ連携計算機間メモリコピーの概略を示す図である。
【図７】メモリ間コピーの概略を説明するための図である。
【図８】デバイスによるメモリ汚染を説明するための図である。
【図９】各実施例における、第一のスイッチの処理フローを示す図である。
【図１０】各実施例における、第二のスイッチのコピー情報受信処理フローを示す図である。
【図１１】各実施例における、第二のスイッチのデータ受信処理フロー（１）を示す図である。
【図１２】各実施例における、第二のスイッチのコピー完了受信処理フローを示す図である。
【図１３】各実施例における、第二のスイッチのデータ受信処理フロー（２）を示す図である。
【発明を実施するための形態】
【００２５】
以下、各種の実施例を図面に基づき詳細に説明する。
【００２６】
まず、各実施例の説明に入る前に、図６に各種の実施例を適用する計算機システムの全体概略構成を示す。各実施例が適用される計算機システムはサーバ（Ｓｅｒｖｅｒ）１０で代表される複数の計算機と、複数のＩ／Ｏデバイス（Ｄｅｖｉｃｅ）３０およびそれらを接続する複数のＩ／Ｏスイッチ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｗｉｔｃｈ）２０で構成される。サーバで代表される計算機１０の内部は、図示していない通常の処理部である中央処理部（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）と、インタフェース部（Ｉｎｔｅｒｆａｃｅ  Ｕｎｉｔ）と、記憶部としてメモリ領域１０１を構成する計算機内メモリ（Ｍｅｍｏｒｙ）から構成されている。
【００２７】
サーバＡ（Ｓｅｒｖｅｒ  Ａ）で構成される第一の計算機１０ａは、第一のスイッチ２０ａと第二のスイッチ２０ｂを介して、Ｉ／Ｏデバイス３０ａ及び３０ｂと接続される。同様にサーバＢ（Ｓｅｒｖｅｒ  Ｂ）からなる第二の計算機１０ｂも第一のスイッチ２０ａと第二のスイッチ２０ｂを介して、Ｉ／Ｏデバイス３０ａ及び３０ｂと接続される。
【００２８】
第一の計算機１０ａ上で動作する図示していないソフトウェアはメモリ領域１０１ａを使用している。第二の計算機１０ｂは前記ソフトウェアのマイグレーション先のメモリ領域１０１ｂを有する。
【００２９】
同図に見るように、第一のスイッチ２０ａには、メモリコピーを司るメモリコピー制御部（Ｍｅｍｏｒｙ  Ｃｏｐｙ  Ｃｏｎｔｒｏｌｌｅｒ）２０１ａと、デバイスからのデータ書き込み要求などのメモリ変更要求を必要に応じて複製する複製制御部（Ｒｅｐｌｉｃａｔｅ  Ｃｏｎｔｒｏｌｌｅｒ）２０２ａを有す。第二のスイッチ２０ｂは複製制御部２０２ｂを有す。第二のスイッチ２０ｂもメモリコピー制御部（Ｍｅｍｏｒｙ  Ｃｏｐｙ  Ｃｏｎｔｒｏｌｌｅｒ）を有していても良い。なお、本明細書において、第一のスイッチ２０ａや第二のスイッチ２０ｂのように、メモリコピー制御部や、複製制御部を有するスイッチを本発明に係るスイッチと呼ぶ場合がある。
【００３０】
なお、図では単純なシステム構成例を示しており、３台以上の計算機、３台以上のスイッチ、３台以上のＩ／Ｏデバイスの存在を排す物ではない。また、後で実施例を用いて詳述するように、計算機１０ａ、１０ｂとスイッチ２０および、Ｉ／Ｏデバイス３０ａとスイッチ２０の間には０台以上の任意の台数の、本発明に係るスイッチ、または本発明に依らない通常のスイッチが存在しても良い。
【実施例１】
【００３１】
以上説明した計算機システムにおいて用いられるスイッチ構造の第一の実施例を図３に示す。本実施例のスイッチ構造は、専用パス（通信路）による情報交換方式によるものである。
【００３２】
図３において、Ｉ／Ｏスイッチ２０はデータポート（Ｄａｔａ  Ｐｏｒｔ）２１０ａによりＳｅｒｖｅｒ  Ａである第一の計算機１０ａと、データポート２１０ｂによりＳｅｒｖｅｒ  Ｂである第二の計算機１０ｂと、データポート２１０ｄによりＩ／Ｏデバイス３０ａと、スイッチ間通信ポート（Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｏｒｔ）２１０ｃにより、同様の構成を有する別のＩ／Ｏスイッチ２０と専用パス２０９を介して接続される。
【００３３】
Ｉ／Ｏスイッチ２０は、受信したパケットデータを宛先に向けて振り分ける内部スイッチ（Ｓｗｉｔｃｈ）２０３、メモリコピー制御部２０１、メモリコピーの状態を保持する状態レジスタ（Ｓｔａｔｕｓ  Ｒｅｇｉｓｔｅｒ）２０７、コピー中のデータおよび複製データを保持するデータバッファ（Ｄａｔａ  Ｂｕｆｆｅｒ）２０５，コピー情報を保持する保持部であるコピー情報テーブル（Ｃｏｐｙ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）２０４，コピー情報とデバイスからのパケットデータを比較する比較器（Ｃｏｍｐａｒａｔｏｒ）２０８、コピー情報の受信と複製シーケンスを処理する複製制御部（Ｒｅｐｌｉｃａｔｅ  Ｃｏｎｔｒｏｌｌｅｒ）２０２、メモリコピーデータ、複製データ、コピー制御部２０１および複製制御部２０２からの制御情報の中から適切な出力を選択する選択器（Ｓｅｌｅｃｔｏｒ）２０６を有す。これらの各ブロック中、内部スイッチ２０３や、メモリ上に形成されるコピー情報テーブル２０４、データバッファ２０５、状態レジスタ２０７以外の機能ブロックであるコピー制御部２０１、複製制御部２０２、選択器２０６、比較器２０８等は、専用のハード構成や、ＣＰＵで実行されるプログラムによるソフトウェア処理で実現することができることは言うまでもない。
【００３４】
内部スイッチ２０３はスイッチ２０内の他の要素と接続するための複数のスイッチポート（Ｓｗｉｔｃｈ  ｐｏｒｔ）２０３１を有す。図ではスイッチポート２０３１ａはデータポート２１０ａ、スイッチポート２０３１ｂがデータポート２１０ｂ、スイッチポート２０３１ｃがデータポート２１０ｄと接続されている。また、スイッチポート２０３１ｄはデータバッファ２０５と、２０３１ｅは選択器（Ｓｅｌｅｃｔｏｒ）２０６と接続されている。
【００３５】
図４に第一の実施例に係る、コピー情報テーブル２０４の構成の一具体例を示す。同図に示すように、コピー情報テーブル２０４は１つ以上のエントリから構成され、各エントリは第一の計算機のＩＤ（Ｔａｒｇｅｔ  ＩＤ）２０４１、トランザクション発行元ＩＤ（Ｓｏｕｒｃｅ  ＩＤ）２０４２，コピー中領域（Ｃｏｐｙｉｎｇ  Ｒａｎｇｅ）の開始アドレス２０４３，コピー中領域（Ｃｏｐｙｉｎｇ  Ｒａｎｇｅ）のサイズ２０４４、複製対象領域（Ｒｅｐｌｉｃａｔｉｏｎ  Ｔａｒｇｅｔ  Ｒａｎｇｅ）の開始アドレス２０４５、複製対象領域（Ｒｅｐｌｉｃａｔｉｏｎ  Ｔａｒｇｅｔ  Ｒａｎｇｅ）のサイズ２０４６から構成される。なお、トランザクション発行元を特定しない場合、トランザクション発行元ＩＤ２０４２は省略できる。
【００３６】
図５に第一の実施例に係る、状態レジスタ２０７の構成の一具体例を示す。同図に示すように、状態レジスタ２０７は、第一の計算機のＩＤ（Ｔａｒｇｅｔ  ＃１  ＩＤ）２０７１，第一の計算機のコピー対象領域（Ｃｏｐｙ  Ｔａｒｇｅｔ  Ｒａｎｇｅ）であるメモリ領域１０１ａの開始アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ  ＃１）２０７２，メモリ領域１０１ａのサイズ（Ｌｅｎｇｔｈ）２０７３、第二の計算機のＩＤ（Ｔａｒｇｅｔ  ＃２  ＩＤ）２０７４、第二の計算機のコピーデータ転送先領域であるメモリ領域１０１ｂの開始アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ  ＃２）２０７５，コピーすべき残りの領域のサイズ（Ｒｅｍａｉｎ  Ｌｅｎｇｔｈ）２０７６から構成される。
【００３７】
なお、ここではメモリ領域を開始アドレスとサイズで指定しているが、開始あるいは先頭アドレスと最終アドレスで指定しても良い。その場合、残りサイズではなくコピー中のアドレスを用いることも出来る。
【００３８】
以上説明した第一の実施例においては、第一のスイッチが実行するメモリコピーに関するコピー情報を第二のスイッチに通知することで、全てのスイッチが自律的にＩ／Ｏデバイスからのトランザクションの転送・複製・保留を行うことが可能となる。また、第一の実施例においては、第一のスイッチと第二のスイッチ間に専用パスを用いるため、コピー情報の高速な転送を実現することができる。
【実施例２】
【００３９】
続いて、上述した計算機システムにおいて用いられる第二の実施例のスイッチ構造を図２Ａおよび図２Ｂに示す。第二の実施例によるスイッチ構造では、第一の実施例の専用パスによる情報交換方式と異なり、第一、第二のスイッチは、計算機やデバイスを接続するデータポートを介して接続されるデータパス（通信路）による情報交換方式を採用する。
【００４０】
例えば図２Ａに示すように、第一の計算機１０ａや第二の計算機１０ｂを介して接続してもよく、また図２Ｂに示すように、計算機とスイッチ間の別の第三のスイッチ２１１、２１２を介して接続してもよく、同様にスイッチとデバイス間の図示していない別のスイッチを介して接続しても良い。
【００４１】
図２Ａ、図２Ｂに示すように、スイッチ２０が、先に説明した第一のスイッチ２０ａとして動作する場合、メモリコピー制御部２０１から第二のスイッチ２０ｂへの通信は、選択器２０６を経由してスイッチポート２０３１ｅから第二のスイッチに至るデータポートへ転送される。また、第二のスイッチからの応答はスイッチポート２０３１ｅに到着し、メモリコピー制御部２０１で受信される。
【００４２】
スイッチ２０が第二のスイッチ２０ｂとして動作する場合、第一のスイッチ２０ａからの通信は、図６で説明したように、スイッチポート２０３１ｅから複製制御部２０２へ転送され処理される。また、複製制御部２０２からの応答は選択器２０６へ送られ、スイッチポート２０３１ｅを経由して第一のスイッチ２０ａへ転送される。
【００４３】
続いて、図１、図９〜図１２を用いて、上述した各実施例の具体的動作の一例を説明する。以下の動作例の説明中、図１に例示したメモリコピー実行時の計算機システムの各構成要素間の情報交換の手順を示したタイムチャートを逐次引用する。
【００４４】
図９に各実施例の計算機システムの第一のスイッチ２０ａが実行するメモリコピーのフローを示す。同様に、図１０に第二のスイッチ２０ｂのコピー情報受信時の動作フローを示し、図１１に第二のスイッチ２０ｂがＩ／Ｏデバイスからのパケット受信時の動作フローを示し、図１２に第二のスイッチ２０ｂのコピー完了報告受信時の動作フローを示す。
【００４５】
図９の動作フローにおいて、第一のスイッチ内のコピー制御部２０１は、ステップＳ１０１でコピー情報として、第一の計算機のＩＤ、コピー対象領域であるメモリ領域１０１ａの先頭アドレスとサイズ、第二の計算機のＩＤ，コピーデータ転送先のメモリ領域１０１ｂの先頭アドレスを、図２Ａ，図２Ｂ、図３、図５に示したコピー状態レジスタ２０７に格納する。また、図５の残りサイズレジスタ２０７６に、コピーする領域のサイズ２０７３と等しい値を格納する。
【００４６】
ステップＳ１０２で、指示を受けた領域全体のコピーが終了しているか、すなわちコピー状態レジスタの残りサイズレジスタ２０７６が０になったか確認し、終了していればメモリコピー手順は終了となる。まだコピーが終了していない場合、ステップＳ１０３以降を実行する。
【００４７】
ステップＳ１０３でコピー実施の単位におけるコピー情報として、第一の計算機のＩＤ、第二の計算機のＩＤ、コピー中領域のアドレスおよびサイズからなるコピー中領域情報、複製対象領域のアドレスおよびサイズからなる複製領域情報を第一のスイッチ内の複製制御部２０２、および全ての第二のスイッチ内の複製制御部２０２に送信する（図１のタイムチャートのＰ４１１）。そして、ステップ１０４において、第二のスイッチからの受領確認を待つ。
【００４８】
複製対象領域は既に第二の計算機にコピーを行ったメモリ領域を指定する。コピー対象領域であるメモリ領域１０１ａからメモリ領域１０１ｂへの最初のコピー時にはそのメモリ領域は１０４ａと見なすことが出来る。１０３ａはコピー中領域であり、ここへのＩ／Ｏデバイス３０ａ等による変更要求は、本実施例においてスイッチ２０により複製されることが保証される。また、領域１０４ａは処理が進むことで内容が領域１０４ｂにコピーされるコピー未領域である。従って、複製対象領域としてコピー済み領域１０２ａを指定することで無駄な複製を避けることができる。
【００４９】
しかし、コピー対象領域１０１ａから１０１ｂへのコピーが複数回行われている場合、以前のコピー動作によりコピー対象領域１０１ａ全体がコピー済み領域となっているため、複製対象領域として１０１ａを指定しなければならない。
【００５０】
第一のスイッチはステップＳ１０４で全ての第二のスイッチからの応答（Ｐ４１２）を受け取った後、ステップＳ１０５で第一の計算機のコピー対象領域であるメモリ領域１０１ａから第二の計算機のメモリ領域１０１ｂにコピーを行う。
【００５１】
メモリ領域１０３ａからメモリ領域１０３ｂへデータをコピーするステップであるステップＳ１０５は、第一の計算機のデータを読み出すステップＳ１０６（Ｐ４１５，Ｐ４１６）と、読み出したデータを第二の計算機のメモリ領域に書き込むステップＳ１０７（Ｐ４１７）から構成される。ステップＳ１０５で実施される読み書きの単位であるデータ量、或いはメモリ領域は実装により決定される。必要に応じてステップＳ１０５を繰り返し（Ｌｏｏｐ）、ステップＳ１０１で用いた単位のコピーを実現する。
【００５２】
コピー後、ステップＳ１０８で第二のスイッチにコピー単位でのコピー終了を通知する（Ｐ４２０）。ステップＳ１０９で第二のスイッチからの完了確認である応答（Ｐ４２３）を待つ。
【００５３】
ステップＳ１１０でコピー情報レジスタ２０７の更新、すなわち開始アドレス２０７２および２０７５をコピー実施分進め、残りサイズ２０７６をコピー実施分減少させる。次のコピーのため、ステップＳ１０２に戻る。
【００５４】
次に、図１０のフローに従い、第二のスイッチの動作を説明する。第二のスイッチ２０ｂは第一のスイッチからのコピー情報通知（Ｐ４１１）を受け、図１０のフローを実施する。
【００５５】
第二のスイッチはステップＳ２０１で受信したコピー情報をコピー情報テーブル２０４に格納する。ステップＳ２０２でこれ以前に第一の計算機１０ａに対して実行したメモリ書き込みを確実にする処理（Ｆｌｕｓｈ  Ｒｅｑｕｅｓｔ：Ｐ４１３，ＡＣＫ：Ｐ４１４）を実施し、ステップＳ２０３で第一のスイッチに受領確認の応答を返す（Ｐ４１２）。
【００５６】
また、第二のスイッチ２０ｂはデバイス３０ｂからのパケット受信時に図１１のフローを実施する。図１１に見るように、第二のスイッチ２０ｂはステップＳ２２１で、デバイスからのパケットを通常の処理により次の宛先に転送する。ステップＳ２２２でデバイスからのパケットがコピー情報テーブル２０４に登録されている第一の計算機への書き込みであるかを判断する。判断は比較器２０８により、パケット中の情報とコピー情報テーブル２０４の情報を比較することで行われる。
【００５７】
第一の計算機１０ａに対する書き込みである場合、ステップＳ２２３でコピー中領域１０３ａに対する書き込みであるかの判断を行う。この判断も比較器２０８で行う。比較の結果、コピー中領域１０３ａに対する書き込みの場合、ステップＳ２２４でデータバッファ２０５にデータを複製し格納する。
【００５８】
ステップＳ２２３でコピー中領域１０３ａに対する書き込みで無い場合、ステップＳ２２５で複製対象領域（Ｒｅｐｕｌｉｃａｔｉｏｎ  Ｔａｒｇｅｔ  Ｒａｎｇｅ）に対する書き込みであるかを判断する。この判断は比較器２０８で行う。比較の結果、複製対象領域に対する書き込みであった場合、ステップＳ２２６で書き込みデータを複製し、第二の計算機１０ｂに転送する。
【００５９】
第二のスイッチ２０ｂは第一のスイッチ２０ａからのコピー完了報告受信時（Ｐ４２２）に図１２のフローを実施する。
【００６０】
図１２のフローにおいて、ステップＳ２１１で、ステップＳ２２４にてデータバッファ２０５に格納したデータを第二の計算機１０ｂに送信する（Ｐ４２４）。その後、ステップＳ２１２で、送信したデータが第二の計算機１０ｂに書き込まれることを確実にし（Ｐ４２５，Ｐ４２６）、ステップＳ２１３で第一のスイッチ２０ａに完了確認の応答を返す（Ｐ４２３）。第一のスイッチ２０ａと第二のスイッチ２０ｂはＰ４１１で示すように通信を行う。
【００６１】
なお、第二のスイッチはＩ／Ｏデバイス３０ｂからのパケット処理において図１３で示す処理手順を用いることもできる。
【００６２】
第二のスイッチ２０ｂはステップＳ２２１で、デバイスからのパケットを通常の処理により次の宛先に転送する。ステップＳ２２２でデバイスからのパケットがコピー情報テーブル２０４に登録されている書き込みであるかを判断する。判断は比較器２０８により、パケット中の情報とコピー情報テーブル２０４の情報を比較することで行われる。
【００６３】
第一の計算機１０ａに対する書き込みである場合、ステップＳ２２３でコピー中領域１０３ａに対する書き込みであるかの判断を行う。この判断も比較器２０８で行う。比較の結果、コピー中領域１０３ａに対する書き込みの場合、ステップＳ２２４でデータバッファにデータを複製し格納する。
【００６４】
ステップＳ２２３でコピー中領域１０３ａに対する書き込みでは無い場合、ステップ２２７でデータバッファに以前のデータを格納済かを確認する。以前のデータ受信時のステップＳ２２４でデータバッファに格納している場合、ステップＳ２２４へ進み、データバッファが空の場合はステップＳ２２５に進む。
【００６５】
ステップＳ２２７によりデバイスからの第二の計算機１０ｂへの書き込み順序を保存することができる。
【００６６】
ステップＳ２２５で複製対象領域（Ｒｅｐｕｌｉｃａｔｉｏｎ  Ｔａｒｇｅｔ  Ｒａｎｇｅ）に対する書き込みであるかを判断する。この判断は比較器２０８で行う。
【００６７】
比較の結果、複製対象領域に対する書き込みであった場合、ステップＳ２２６で書き込みデータを複製し、第二の計算機に転送する。
【００６８】
上述した第二の実施例においても、特に専用パスを設置することなく、第一のスイッチが実行するメモリコピーに関するコピー情報を第二のスイッチに通知することで、全てのスイッチが自律的にＩ／Ｏデバイスからのトランザクションの転送・複製・保留を行うことが可能となる。
【００６９】
以上、本発明の各種の実施例の計算機システムにおいて実行されるメモリ間コピー処理フローの一例を説明したが、本発明は以上説明した実施態様に限定されるものでなく、種々の変形が可能であることは言うまでもない。
【産業上の利用可能性】
【００７０】
本発明は、複数の計算機を用いる計算機システムに関するものであり、特に複数の計算機間メモリコピー技術として有用である。
【符号の説明】
【００７１】
１０ａ、１０ｂ…計算機
２０、２０ｂ、２１１、２１２…スイッチ
３０、３０ａ、３０ｂ…バイス
４１…コピー情報
９０，９０ｂ…デバイスからの書き込みデータ
１０１ａ、１０１ｂ…計算機内メモリ
１０２ａ、１０２ｂ…コピー済み領域
１０３ａ、１０３ｂ…コピー中領域
１０４ａ、１０４ｂ…コピー未領域
２０１、２０１ａ…メモリコピー制御部
２０２、２０２ａ、２０２ｂ…複製制御部
２０３…内部スイッチ
２０４…コピー情報テーブル
２０５…データバッファ
２０６…出力データ選択器
２０７…コピー状態レジスタ
２０８…宛先情報比較器
２０９…専用パス
２１０ａ、２１０ｂ、２１０ｄ…Ｉ／Ｏポート
２１０ｃ…スイッチ間通信ポート
９１１ａ…第一の計算機への書き込みデータ
９１１ｂ…第二の計算機への書き込みデータ
１０１１ａ…デバイスからのデータで更新されたメモリ領域
２０３１ａ、２０３１ｂ、２０３１ｃ、２０３１ｄ、２０３１ｅ…内部スイッチポート
２０４１…対象トランザクションの宛先
２０４２…トランザクションのソースＩＤ
２０４３…コピー中領域の開始アドレス
２０４４…コピー中領域のサイズ
２０４５…複製対象領域の開始アドレス
２０４６…複製対象領域のサイズ
２０７１…コピー対象計算機ＩＤ
２０７２…コピー対象領域先頭アドレス（第一の計算機）
２０７３…コピー対象領域サイズ
２０７４…コピー対象計算機ＩＤ
２０７５…コピー対象領域先頭アドレス
２０７６…コピー残りサイズ。
【図１】
0005469022.tif 000002
【図２Ａ】
0005469022.tif 000003
【図２Ｂ】
0005469022.tif 000004
【図３】
0005469022.tif 000005
【図４】
0005469022.tif 000006
【図５】
0005469022.tif 000007
【図６】
0005469022.tif 000008
【図７】
0005469022.tif 000009
【図８】
0005469022.tif 000010
【図９】
0005469022.tif 000011
【図１０】
0005469022.tif 000012
【図１１】
0005469022.tif 000013
【図１２】
0005469022.tif 000014
【図１３】
0005469022.tif 000015