(57)【要約】【課題】ＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作において、処理時間とＣＰＵ負荷を増大させることなく、書込み動作が正常に終了したことを保証する。【解決手段】ホストチャネルアダプタ１６０は、自ホストのＣＰＵ１１０によりＲＤＭＡ  Ｗｒｉｔｅコマンドが発行されると、自ホストのメモリ１２０からデータ１２１を読み出し、他ホストに転送する。ホストチャネルアダプタ２６０は、他ホストからデータ１２１が転送されてくると、データ１２１を自ホストのメモリ２２０に書き込む。さらに、ホストチャネルアダプタ２６０は、自ホストのメモリ２２０に書き込まれたデータが他ホストから転送されてきたデータと一致するか否かを比較し、その比較結果を表す終了フラグ１２２を他ホストに転送する。ホストチャネルアダプタ１６０は、他ホストから終了フラグ１２２が転送されてくると、終了フラグ１２２を自ホストのメモリ１２０に書き込む。【選択図】図２
2008217214.tif 000002
【特許請求の範囲】
【請求項１】
各々がＣＰＵ、メモリおよびホストチャネルアダプタを備える２台のホストコンピュータからなり、前記ホストチャネルアダプタを介して接続された前記２台のホストコンピュータ間で、ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に、前記メモリ内のデータの転送を行うコンピュータシステムであって、
前記ホストチャネルアダプタは、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、前記ＲＤＭＡ  Ｗｒｉｔｅコマンドが発行されると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に自ホストのメモリからデータを読み出し、読み出したデータを前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ読み出し手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともにデータが転送されてくると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に当該データを自ホストのメモリに書き込むデータ書込み手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから転送されてきたデータが自ホストのメモリに書き込まれると、当該メモリに書き込まれたデータが他ホストから転送されてきたデータと一致するか否かを比較し、当該比較結果を前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ比較手段と、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに前記比較結果が転送されてくると、当該比較結果を自ホストのメモリに書き込む比較結果書込み手段と、を有するコンピュータシステム。
【請求項２】
前記データ比較手段は、自ホストのメモリに書き込まれたデータの一部が、他ホストから転送されてきたデータの対応部分と一致するか否かを比較する、請求項１に記載のコンピュータシステム。
【請求項３】
前記データ比較手段は、自ホストのメモリに書き込まれたデータが、他ホストから転送されてきたデータと完全一致するか否かを比較する、請求項１に記載のコンピュータシステム。
【請求項４】
ＣＰＵ、メモリおよびホストチャネルアダプタを備え、前記ホストチャネルアダプタを介して接続された他のホストコンピュータとの間で、ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に、前記メモリ内のデータの転送を行うホストコンピュータであって、
前記ホストチャネルアダプタは、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、前記ＲＤＭＡ  Ｗｒｉｔｅコマンドが発行されると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に自ホストのメモリからデータを読み出し、読み出したデータを前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ読み出し手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともにデータが転送されてくると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に当該データを自ホストのメモリに書き込むデータ書込み手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから転送されてきたデータが自ホストのメモリに書き込まれると、当該メモリに書き込まれたデータが他ホストから転送されてきたデータと一致するか否かを比較し、当該比較結果を前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ比較手段と、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに前記比較結果が転送されてくると、当該比較結果を自ホストのメモリに書き込む比較結果書込み手段と、を有するホストコンピュータ。
【請求項５】
前記データ比較手段は、自ホストのメモリに書き込まれたデータの一部が、他ホストから転送されてきたデータの対応部分と一致するか否かを比較する、請求項４に記載のホストコンピュータ。
【請求項６】
前記データ比較手段は、自ホストのメモリに書き込まれたデータが、他ホストから転送されてきたデータと完全一致するか否かを比較する、請求項４に記載のホストコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＤＭＡ（Remote Direct Memory Access）  Ｗｒｉｔｅコマンドによるデータ転送を行うコンピュータシステム、ホストコンピュータに関する。
【背景技術】
【０００２】
高速クラスタやデータベースサーバー等のシステムを構築する技術として、ＲＤＭＡが期待されている（特許文献１参照）。
【０００３】
ＲＤＭＡは、一方のホストコンピュータの主記憶装置のデータを、ＣＰＵを介さずに、他方のホストコンピュータの主記憶装置にコピーする技術である。ＲＤＭＡは、局所的にリソースを開けるため、スループットと性能を向上させることが可能となり、ホストコンピュータ間で高速なデータ転送を実現できることが特徴である。
【０００４】
ＲＤＭＡによるホストコンピュータ間のデータ転送動作としては、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送動作とＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作がある。
【０００５】
ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送動作は、ＲＤＭＡ  Ｒｅａｄコマンドの発行元である一方のホストコンピュータが、他方のホストコンピュータの主記憶装置のデータを、ＣＰＵを介さずに読み出し、自ホストの主記憶装置にコピーする動作である。
【０００６】
ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作は、ＤＭＡ  Ｗｒｉｔｅコマンドの発行元である一方のホストコンピュータが、自ホストの主記憶装置のデータを、ＣＰＵを介さずに他方のホストコンピュータの主記憶装置にコピーする動作である。
【０００７】
ここで、図５および図６を参照して、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送動作とＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作について説明する。
【０００８】
図５を参照すると、２台のホストコンピュータが互いに接続された一般的なコンピュータシステムの例が示されている。
【０００９】
ホストコンピュータ（＃１）１００は、ＣＰＵ１１０と、主記憶装置であるメモリ１２０と、ホストチャネルアダプタ（ＨＣＡ：Host Channel Adapter）１６０と、これらを接続するチップセット１３０、Ｉ／Ｏ（Input/Output）ブリッジ１４０、およびＰＣＩ（Peripheral Component Interconnect）バス１５０と、を有している。
【００１０】
ホストコンピュータ（＃２）２００は、ホストコンピュータ（＃１）１００と同様に、ＣＰＵ２１０と、主記憶装置であるメモリ２２０と、ホストチャネルアダプタ２６０と、これらを接続するチップセット２３０、Ｉ／Ｏブリッジ２４０、およびＰＣＩバス２５０と、を有している。
【００１１】
ホストコンピュータ（＃１）１００とホストコンピュータ（＃２）２００は、ホストチャネルアダプタ１６０とホストチャネルアダプタ２６０間がファイバーケーブル３００によって接続されている。
【００１２】
図６を参照すると、一般的なコンピュータシステムにおける、ＲＤＭＡによるデータ転送動作フローの例が示されている。
【００１３】
最初に、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作について説明する。
【００１４】
（１）ホストコンピュータ（＃１）１００のＣＰＵ１１０は、ホストチャネルアダプタ１６０に対して、ＲＤＭＡ  Ｗｒｉｔｅコマンドを発行する。ＲＤＭＡ  Ｗｒｉｔｅコマンドには、転送元データアドレス、データサイズ、転送先データアドレス等の情報が含まれている。
【００１５】
（２）ＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったホストチャネルアダプタ１６０は、ＲＤＭＡ  Ｗｒｉｔｅコマンドを解析し、メモリ１２０の指定アドレスからデータを読み出す。
【００１６】
（３）ホストチャネルアダプタ１６０は、ＲＤＭＡ  Ｗｒｉｔｅコマンドおよびデータを転送フレーム化して、ホストコンピュータ（＃２）２００に転送する。
【００１７】
（４）ホストコンピュータ（＃２）２００のホストチャネルアダプタ２６０は、転送フレームを受信すると、転送フレームからＲＤＭＡ  Ｗｒｉｔｅコマンドを抜き取る。
【００１８】
（５）ホストチャネルアダプタ２６０は、ＲＤＭＡ  Ｗｒｉｔｅコマンドを解析し、受信したデータを、メモリ２２０の指定アドレスに書き込む。
【００１９】
ところで、上述の（１）における、ＣＰＵ１１０からホストチャネルアダプタ１６０に対してＲＤＭＡ  Ｗｒｉｔｅコマンドを発行する処理は、Ｏｕｔｂｏｕｎｄ  Ｗｒｉｔｅ動作である。ＣＰＵ１１０は、Ｏｕｔｂｏｕｎｄ  Ｗｒｉｔｅ動作の終了確認を行うが、ここでの終了確認は、ホストチャネルアダプタ１６０へのＲＤＭＡ  Ｗｒｉｔｅコマンドの受け渡し処理が終了したことを確認するのみである。
【００２０】
上述のように、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作では、ＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったホストチャネルアダプタ１６０により、メモリ１２０からデータが読み出されて他方のホストチャネルアダプタ２６０に転送され、ホストチャネルアダプタ２６０によりメモリ２２０にデータが書き込まれる。
【００２１】
つまり、実際のデータ転送は、ホストチャネルアダプタ１６０，２６０により行われており、ＣＰＵ１１０は、ホストチャネルアダプタ１６０に対してＲＤＭＡ  Ｗｒｉｔｅコマンドを発行するだけで、データ転送が終了したことまでは確認していない。
【００２２】
ホストコンピュータ間のデータ転送の高速化のみを追求したコンピュータシステムを構築しようとする場合には、この様なデータ書き捨て方式でも問題は無い。
【００２３】
しかし、企業の基幹業務を担うような高速クラスタやデータベースサーバー等のコンピュータシステムを構築しようとする場合には、書込み動作（更新動作）が正常に終了したことを保証しなければ、基幹システムとして信頼性の面で問題となる。
【００２４】
したがって、基幹システムとして信頼性の高いコンピュータシステムを構築しようとする場合には、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み動作が正常に終了したことを保証する必要がある。
【００２５】
一般的に、書込み動作が正常に終了したことを確認するには、書き込んだデータを再度読み出すことで確認を行う。つまり、図６に示すように、ＣＰＵ１１０は、ホストコンピュータ（＃２）２００のメモリ２２０に書き込んだデータを読み出すために、ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行後、ＲＤＭＡ  Ｒｅａｄコマンドを発行することとなる。
【００２６】
ここで、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送動作について説明する。
【００２７】
（１）ＣＰＵ１１０は、ホストチャネルアダプタ１６０に対して、ＲＤＭＡ  Ｒｅａｄコマンドを発行する。ＲＤＭＡ  Ｒｅａｄコマンドには、データ格納アドレス、データサイズ、読み出し先データアドレス等の情報が含まれている。
【００２８】
（２）ＲＤＭＡ  Ｒｅａｄコマンドを受け取ったホストチャネルアダプタ１６０は、ＲＤＭＡ  Ｒｅａｄコマンドを転送フレーム化して、ホストコンピュータ（＃２）２００に転送する。
【００２９】
（３）ホストコンピュータ（＃２）２００のホストチャネルアダプタ２６０は、転送フレームを受信すると、転送フレームからＲＤＭＡ  Ｒｅａｄコマンドを抜き取る。
【００３０】
（４）ホストチャネルアダプタ２６０は、ＲＤＭＡ  Ｒｅａｄコマンドを解析し、メモリ２２０の指定アドレスからデータを読み出す。
【００３１】
（５）ホストチャネルアダプタ２６０は、ＲＤＭＡ  Ｒｅａｄコマンドおよびデータを転送フレーム化して、ホストコンピュータ（＃１）１００に転送する。
【００３２】
（６）ホストコンピュータ（＃１）１００のホストチャネルアダプタ１６０は、転送フレームを受信すると、転送フレームからＲＤＭＡ  Ｒｅａｄコマンドを抜き取る。
【００３３】
（７）ホストチャネルアダプタ１６０は、ＲＤＭＡ  Ｒｅａｄコマンドを解析し、受信したデータを、メモリ１２０の指定アドレスに書き込む。
【００３４】
（８）最後に、ＣＰＵ１１０は、メモリ２２０に書き込まれた書込みデータを、先にメモリ１２０から読み出し転送したデータと比較し、両者が一致しているか否かを確認する。これによって、メモリ２２０への書込み動作が正常に終了したことが保証される。
【特許文献１】特開２００５−１８２４９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００３５】
上述したように、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作では、書込み動作が正常に終了したことを保証しようとすると、ＣＰＵ１１０は、ＲＤＭＡ  Ｗｒｉｔｅコマンド発行、ＲＤＭＡ  Ｒｅａｄコマンド発行、書込みデータ比較という処理を行わなければならず、また、ホストチャネルアダプタ１６０およびホストチャネルアダプタ２６０は、ＲＤＭＡ  Ｗｒｉｔｅ処理およびＲＤＭＡ  Ｒｅａｄ処理を行わなければならず、処理時間とＣＰＵ負荷が増大してしまうという課題があった。
【００３６】
そこで、本発明の目的は、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作において、処理時間とＣＰＵ負荷を増大させることなく、書込み動作が正常に終了したことを保証することができるコンピュータシステム、ホストコンピュータを提供することにある。
【課題を解決するための手段】
【００３７】
上記目的を達成するために本発明のコンピュータシステムは、
各々がＣＰＵ、メモリおよびホストチャネルアダプタを備える２台のホストコンピュータからなり、前記ホストチャネルアダプタを介して接続された前記２台のホストコンピュータ間で、ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に、前記メモリ内のデータの転送を行うコンピュータシステムであって、
前記ホストチャネルアダプタは、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、前記ＲＤＭＡ  Ｗｒｉｔｅコマンドが発行されると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に自ホストのメモリからデータを読み出し、読み出したデータを前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ読み出し手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともにデータが転送されてくると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に当該データを自ホストのメモリに書き込むデータ書込み手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから転送されてきたデータが自ホストのメモリに書き込まれると、当該メモリに書き込まれたデータが他ホストから転送されてきたデータと一致するか否かを比較し、当該比較結果を前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ比較手段と、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに前記比較結果が転送されてくると、当該比較結果を自ホストのメモリに書き込む比較結果書込み手段と、を有することを特徴とする。
【００３８】
上記目的を達成するために本発明のホストコンピュータは、
ＣＰＵ、メモリおよびホストチャネルアダプタを備え、前記ホストチャネルアダプタを介して接続された他のホストコンピュータとの間で、ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に、前記メモリ内のデータの転送を行うホストコンピュータであって、
前記ホストチャネルアダプタは、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、前記ＲＤＭＡ  Ｗｒｉｔｅコマンドが発行されると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に自ホストのメモリからデータを読み出し、読み出したデータを前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ読み出し手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともにデータが転送されてくると、当該ＲＤＭＡ  Ｗｒｉｔｅコマンドを基に当該データを自ホストのメモリに書き込むデータ書込み手段と、
他ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから転送されてきたデータが自ホストのメモリに書き込まれると、当該メモリに書き込まれたデータが他ホストから転送されてきたデータと一致するか否かを比較し、当該比較結果を前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに他ホストに転送するデータ比較手段と、
自ホストが前記ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行元である場合、他ホストから前記ＲＤＭＡ  Ｗｒｉｔｅコマンドとともに前記比較結果が転送されてくると、当該比較結果を自ホストのメモリに書き込む比較結果書込み手段と、を有することを特徴とする。
【発明の効果】
【００３９】
本発明によれば、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み後に、転送先のホストチャネルアダプタは、自ホストのメモリに書き込まれた書込みデータを転送元のホストチャネルアダプタから転送されてきた転送データと比較し、その比較結果を転送元のホストチャネルアダプタに転送する。また、転送元のホストチャネルアダプタは、転送先のホストチャネルアダプタから転送されてきた比較結果を自ホストのメモリに書き込む。
【００４０】
そのため、転送元のホストのＣＰＵは、自ホストのメモリに書き込まれた比較結果の内容をチェックすることにより、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み動作が正常に終了したか否かを確認することが可能となる。
【００４１】
したがって、書込み動作が正常に終了したことを保証するために、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送を行う必要はないため、処理の高速化を図ることができる。また、転送元のホストのＣＰＵがＲＤＭＡ  Ｗｒｉｔｅコマンドを発行する必要がないため、ＣＰＵ負荷を軽減することができる。
【００４２】
また、書込みデータの比較動作は、専用のハードウェアであるホストチャネルアダプタで行うため、ＣＰＵ上でソフトウェアにより比較動作を行う場合と比較して、処理の高速化を図ることができるとともに、ＣＰＵ負荷を軽減することができる。
【００４３】
よって、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作において、処理時間およびＣＰＵ負荷が増大することなく、書込み動作が正常に終了したことを保証することができるという効果が得られる。
【発明を実施するための最良の形態】
【００４４】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００４５】
（第１の実施形態）
本実施形態のコンピュータシステムは、その全体構成は図５に示したものと同様であり、ホストチャネルアダプタ１６０，２６０の構成に特徴がある。
【００４６】
図１を参照すると、本実施形態のコンピュータシステムにおけるホストチャネルアダプタ１６０の構成の例が示されている。
【００４７】
ホストチャネルアダプタ１６０は、インバウンド（Inbound）制御部１６１と、インバウンドバッファ１６２と、アウトバウンド（Outbound）制御部１６３と、アウトバウンドバッファ１６４と、ＤＭＡ制御部１６５と、ＰＩＣバスＩ／Ｆ１６６と、ホストチャネルアダプタＩ／Ｆ制御部１６７と、ホストチャネルアダプタＩ／Ｆ１６８と、障害情報レジスタ１６９と、を有している。
【００４８】
なお、データ読み出し手段は、アウトバウンド制御部１６３、アウトバウンドバッファ１６４、ＤＭＡ制御部１６５、およびホストチャネルアダプタＩ／Ｆ制御部１６７によって構成され、また、データ書込み手段および比較結果書込み手段は、インバウンド制御部１６１、インバウンドバッファ１６２、ＤＭＡ制御部１６５、およびホストチャネルアダプタＩ／Ｆ制御部１６７によって構成され、また、データ比較手段は、インバウンド制御部１６１、アウトバウンドバッファ１６４、ＤＭＡ制御部１６５、およびホストチャネルアダプタＩ／Ｆ制御部１６７によって構成されるものである。
【００４９】
インバウンド制御部１６１は、インバウンドバッファ１６２からのコマンドを一時的にキュー（Queue）に保持する機能と、キューに保持したコマンドを解析する機能と、ＤＭＡ制御部１６５に対してＤＭＡリクエスト（インバウンドバッファ１６２からメモリ１２０へのデータ転送、メモリ１２０からインバウンドバッファ１６２へのデータ転送、メモリ１２０からインバウンド制御部１６１へのデータ転送）を発行する機能と、メモリ１２０から読み出されたデータを内部バッファに保持する機能と、内部バッファに保持したデータとインバウンドバッファ１６２に格納されているデータとを比較する機能と、その比較結果をデータとしてアウトバウンドバッファ１６４へ転送する機能と、を有している。また、インバウンド制御部１６１は、障害情報レジスタ１６９に障害情報が格納されると、上述した機能を停止する機能を有している。
【００５０】
インバウンドバッファ１６２は、データフレームを受け取り保持する機能と、データフレームに含まれるコマンドをインバウンド制御部１６１に転送する機能と、を有している。
【００５１】
アウトバウンド制御部１６３は、ＣＰＵ１１０からのコマンドを一時的にキューに保持する機能と、キューに保持したコマンドを解析する機能と、ＤＭＡ制御部１６５に対してＤＭＡリクエスト（メモリ１２０からアウトバウンドバッファ１６４へのデータ転送）を発行する機能と、を有している。また、アウトバウンド制御部１６３は、障害情報レジスタ１６９に障害情報が格納されると、上述した機能を停止する機能を有している。
【００５２】
アウトバウンドバッファ１６４は、インバウンド制御部１６１またはアウトバウンド制御部１６３からのコマンドとデータを保持する機能と、保持したコマンドとデータを基にＣＲＣ（Cyclic Redundancy Check）を付与してデータフレームを生成する機能と、データフレームをホストチャネルアダプタＩ／Ｆ制御部１６７に転送する機能と、を有している。
【００５３】
ＤＭＡ制御部１６５は、インバウンド制御部１６１またはアウトバウンド制御部１６２からのＤＭＡリクエストに応じて、ＰＣＩバスＩ／Ｆ１６６を制御してデータ転送を行う機能を有している。
【００５４】
ＰＣＩバスＩ／Ｆ１６６は、ＰＣＩバス１５０とのＩ／Ｆである。ＰＣＩバスＩ／Ｆ１６６は、障害情報レジスタ１６９に障害情報が格納されると、ＰＣＩバス１５０上に割込み通知を行う機能を有している。
【００５５】
ホストチャネルアダプタＩ／Ｆ制御部１６７は、アウトバウンドバッファ１６４からのデータフレームを転送フレーム化してホストチャネルアダプタ２６０に転送する機能と、ホストチャネルアダプタ２６０からの転送フレームをデータフレームに復元する機能と、復元したデータフレームのＣＲＣをチェックする機能と、障害情報レジスタ１６９に格納された障害情報に対応するエラーフレームを生成してホストチャネルアダプタ２６０に転送する機能と、ホストチャネルアダプタ２６０からのエラーフレームを解析する機能と、解析したエラーフレームに対応する障害情報を障害情報レジスタ１６９に格納する機能と、を有している。
【００５６】
ホストチャネルアダプタＩ／Ｆ１６８は、ホストチャネルアダプタ２６０とのＩ／Ｆである。ホストチャネルアダプタＩ／Ｆ１６８は、転送フレームをファイバーケーブル３００を介して送受信する機能を有している。
【００５７】
障害情報レジスタ１６９は、ホストチャネルアダプタ１６０，２６０の障害情報を格納する機能を有している。
【００５８】
図２を参照すると、本実施形態のコンピュータシステムの構成の例が示されている。なお、図２は、図５に示した構成要素のうち、チップセット１３０，２３０、Ｉ／Ｏブリッジ１４０，２４０、およびＰＣＩバス１５０，２５０が省略されている。
【００５９】
ホストチャネルアダプタ２６０は、ホストチャネルアダプタ１６０と同様に、インバウンド制御部２６１と、インバウンドバッファ２６２と、アウトバウンド制御部２６３と、アウトバウンドバッファ２６４と、ＤＭＡ制御部２６５と、ＰＩＣバスＩ／Ｆ２６６と、ホストチャネルアダプタＩ／Ｆ制御部２６７と、ホストチャネルアダプタＩ／Ｆ２６８と、障害情報レジスタ２６９と、を有している。これら構成要素は、ホストチャネルアダプタ１６０内の対応する構成要素と同様の動作を行う。
【００６０】
以下、本実施形態のコンピュータシステムにおける、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作について説明する。
【００６１】
図３および図４を参照すると、本実施形態のコンピュータシステムにおける、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作フローの例が示されている。
【００６２】
最初に、ホストコンピュータ（＃１）１００のＣＰＵ１１０は、アウトバウンド制御部１６３に対して、ＲＤＭＡ  Ｗｒｉｔｅコマンドを発行し、データ転送起動を指示する。
【００６３】
ＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったアウトバウンド制御部１６３は、ＲＤＭＡ  Ｗｒｉｔｅコマンドをアウトバウンドバッファ１６４に転送する。併せて、アウトバウンド制御部１６３は、メモリ１２０からデータ１２１を読み出すために、ＤＭＡ制御部１６５に対して、ＤＭＡリクエスト（メモリ１２０からアウトバウンドバッファ１６４へのデータ転送）を発行し、ＤＭＡ転送起動を指示する。
【００６４】
ＤＭＡリクエストを受け取ったＤＭＡ制御部１６５は、メモリ１２０の指定アドレスからデータ１２１を読み出してアウトバウンドバッファ１６４に転送する。
【００６５】
ＲＤＭＡ  Ｗｒｉｔｅコマンドとデータ１２１を受け取ったアウトバウンドバッファ１６４は、受け取ったＲＤＭＡ  Ｗｒｉｔｅコマンドとデータ１２１を基にＣＲＣを付与したデータフレームを生成し、生成したデータフレームをホストチャネルアダプタＩ／Ｆ制御部１６７に転送する。
【００６６】
データフレームを受け取ったホストチャネルアダプタＩ／Ｆ制御部１６７は、データフレームを転送フレーム化して、ホストチャネルアダプタＩ／Ｆ１６８を介してホストコンピュータ（＃２）２００に転送する。
【００６７】
転送フレームを受信したホストコンピュータ（＃２）２００のホストチャネルアダプタＩ／Ｆ制御部２６７は、転送フレームをデータフレームに復元してＣＲＣチェックを行い、ＲＤＭＡ  Ｗｒｉｔｅコマンドとデータ１２１をインバウンドバッファ２６２に転送する。
【００６８】
ＲＤＭＡ  Ｗｒｉｔｅコマンドとデータ１２１を受け取ったインバウンドバッファ２６２は、ＲＤＭＡ  Ｗｒｉｔｅコマンドをインバウンド制御部２６１に転送する。
【００６９】
ＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったインバウンド制御部２６１は、ＲＤＭＡ  Ｗｒｉｔｅコマンドを解析する。この時、ＲＤＭＡ  Ｗｒｉｔｅコマンドと判定されれば、ＤＭＡ制御部２６５に対して、ＤＭＡリクエスト（インバウンドバッファ２６２からメモリ２２０へのデータ転送）を発行し、ＤＭＡ転送起動を指示する。同時に、インバウンド制御部２６１は、処理したＲＤＭＡ  Ｗｒｉｔｅコマンドをアウトバウンドバッファ２６４に転送する。
【００７０】
ＤＭＡリクエストを受け取ったＤＭＡ制御部２６５は、インバウンドバッファ２６２からメモリ２２０にデータ１２１を転送する。データ転送動作が終了したら、ＤＭＡ制御部２６５は、インバウンド制御部２６１にデータ書込み処理終了を通知する。
【００７１】
データ書込み終了通知を受けたインバウンド制御部２６１は、ＤＭＡ制御部２６５に対して、ＤＭＡリクエスト（メモリ２２０からインバウンド制御部２６１へのデータ転送）を発行し、ＤＭＡ転送起動を指示する。この時メモリ２２０から読み出すのは、前処理でメモリ２２０に格納されたデータ１２１の最終アドレスの１バイト分のデータとなる。
【００７２】
ＤＭＡリクエストを受け取ったＤＭＡ制御部２６５は、メモリ２２０から該当アドレスのデータ１２１を読み出してインバウンド制御部２６１に転送する。データ転送動作が終了したら、ＤＭＡ制御部２６５は、インバウンド制御部２６１にデータ転送動作終了を通知する。
【００７３】
データ転送終了通知を受けたインバウンド制御部２６１は、受け取ったデータ１２１とインバウンドバッファ２６２に格納されている該当データ（インバウンドバッファ２６２に格納されているデータ１２１の最終アドレスの１バイト分のデータ）とを比較する。インバウンド制御部２６１は、比較結果が一致していれば、正常終了を表す終了フラグ１２２を、アウトバウンドバッファ２６４にデータとして転送し、また、比較結果が不一致であれば、異常終了を表す終了フラグ１２２を、アウトバウンドバッファ２６４にデータとして転送する。
【００７４】
ＲＤＭＡ  Ｗｒｉｔｅコマンドと終了フラグ１２２を受け取ったアウトバウンドバッファ２６４は、受け取ったＲＤＭＡ  Ｗｒｉｔｅコマンドと終了フラグ１２２を基にＣＲＣを付与したデータフレームを生成し、生成したデータフレームをホストチャネルアダプタＩ／Ｆ制御部２６７に転送する。
【００７５】
データフレームを受け取ったホストチャネルアダプタＩ／Ｆ制御部２６７は、データフレームを転送フレーム化して、ホストチャネルアダプタＩ／Ｆ２６８を介してホストコンピュータ（＃１）１００に転送する。
【００７６】
転送フレームを受信したホストコンピュータ（＃１）１００のホストチャネルアダプタＩ／Ｆ制御部１６７は、転送フレームをデータフレームに復元してＣＲＣチェックを行い、ＲＤＭＡ  Ｗｒｉｔｅコマンドと終了フラグ１２２をインバウンドバッファ１６２に転送する。
【００７７】
ＲＤＭＡ  Ｗｒｉｔｅコマンドと終了フラグ１２２を受け取ったインバウンドバッファ１６２は、ＲＤＭＡ  Ｗｒｉｔｅコマンドをインバウンド制御部１６１に転送する。
【００７８】
ＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったインバウンド制御部１６１は、ＲＤＭＡ  Ｗｒｉｔｅコマンドを解析する。この時、ＲＤＭＡ  Ｗｒｉｔｅコマンドと判定されれば、インバウンド制御部１６１は、ＤＭＡ制御部１６５に対して、ＤＭＡリクエスト（インバウンドバッファ１６２からメモリ１２０へのデータ転送）を発行し、ＤＭＡ転送起動を指示する。
【００７９】
ＤＭＡリクエストを受け取ったＤＭＡ制御部１６５は、インバウンドバッファ１６２からメモリ１２０に終了フラグ１２２を転送する。データ転送動作が終了したら、ＤＭＡ制御部１６５は、インバウンド制御部１６１に対し、データ転送処理終了を通知する。
【００８０】
上述したように本実施形態によれば、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み後に、ホストチャネルアダプタ２６０が、メモリ２２０に書き込まれた書込みデータとホストチャネルアダプタ１６０から転送されてきた転送データとを比較し、その比較結果を表す終了フラグ１２２をホストチャネルアダプタ１６０に転送し、ホストチャネルアダプタ１６０が、終了フラグ１２２をメモリ１２０に書き込む。
【００８１】
そのため、ＣＰＵ１１０は、メモリ１２０に書き込まれた終了フラグ１２２の内容をチェックすることにより、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み動作が正常に終了したか否かを確認することが可能となる。
【００８２】
したがって、書込み動作が正常に終了したことを保証するために、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送を行う必要はないため、処理の高速化を図ることができる。また、ＣＰＵ１１０がＲＤＭＡ  Ｗｒｉｔｅコマンドを発行する必要がないため、ＣＰＵ負荷を軽減することができる。
【００８３】
また、書込みデータの比較動作は、専用のハードウェアであるホストチャネルアダプタ２６０で行うため、ＣＰＵ１１０上でソフトウェアにより比較動作を行う場合と比較して処理の高速化を図ることができるとともに、ＣＰＵ負荷を軽減することができる。
【００８４】
よって、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作において、処理時間およびＣＰＵ負荷が増大することなく、書込み動作が正常に終了したことを保証することができる。
【００８５】
（第２の実施形態）
本実施形態のコンピュータシステムは、第１の実施形態と構成自体は同様であるが、動作が異なる。
【００８６】
第１の実施形態では、ホストチャネルアダプタ２６０が、メモリ２２０に書き込まれた書込みデータとホストチャネルアダプタ１６０から転送されてきた転送データとを比較することにより、ホストチャネルアダプタ２６０からメモリ２２０への書込みパスのハードウェアの健全性を確認し、メモリ２２０への書込み動作が正常に終了したか否かを判定している。
【００８７】
その際に、第１の実施形態では、処理時間を考慮して、メモリ２２０に書き込まれた書込みデータのうち最終アドレスの１バイト分のデータのみを比較していた。
【００８８】
これに対して、本実施形態では、メモリ２２０に書き込まれた書込みデータとホストチャネルアダプタ１６０から転送されてきた転送データとが完全に一致するか否かを比較する。この場合でも、ＲＤＭＡ  Ｒｅａｄコマンドによるデータ転送を行う必要はないことと、書込みデータの比較動作をホストチャネルアダプタ２６０で行うことから、従来技術と比較して処理時間は十分に低減され、本発明の効果は維持される。
【００８９】
これを実現するために、ホストコンピュータ（＃１）１００では、書込みデータが転送データと完全に一致するか否かを比較させる場合はオプションモードに設定し、ホストコンピュータ（＃２）２００では、オプションモードに設定されていれば、書込みデータが転送データと完全に一致するか否かを比較する。
【００９０】
具体的には、ホストコンピュータ（＃１）１００のＣＰＵ１１０は、ＲＤＭＡ  Ｗｒｉｔｅコマンドの発行時に、そのＲＤＭＡ  Ｗｒｉｔｅコマンドにオプションモードが設定されている旨の情報を含める。
【００９１】
インバウンドバッファ２６２からＲＤＭＡ  Ｗｒｉｔｅコマンドを受け取ったインバウンド制御部２６１は、ＲＤＭＡ  Ｗｒｉｔｅコマンドの解析時に、オプションモードが設定されているか否かも同時に解析し、オプションモードが設定されていたら、完全一致確認フラグを立てる。その後、インバウンド制御部２６１は、ＤＭＡ制御部２６５に対して、ＤＭＡリクエストを発行し、ＤＭＡ転送起動を指示する。
【００９２】
ＤＭＡ制御部２６５からデータ書込み終了通知を受けたインバウンド制御部２６１は、完全一致確認フラグをチェックする。完全一致確認フラグが立てられていれば、インバウンド制御部２６１は、ＤＭＡ制御部２６５に対して、ＤＭＡリクエスト（メモリ２２０の指定アドレスからの書込みデータサイズ分のデータのインバウンド制御部２６１への転送）を発行し、再度ＤＭＡ転送起動を指示する。
【００９３】
ＤＭＡリクエストを受け取ったＤＭＡ制御部２６５は、メモリ２２０からインバウンド制御部２６１にデータ１２１（メモリ２２０に書き込まれたデータと同じ）を転送する。データ転送動作が終了したら、ＤＭＡ制御部２６５は、インバウンド制御部２６１にデータ転送処理終了を通知する。
【００９４】
データ転送終了通知を受けたインバウンド制御部２６１は、受け取ったデータ１２１とインバウンドバッファ２６２に格納されているデータ１２１とが完全に一致するか否かを比較する。インバウンド制御部２６１は、比較結果が完全に一致していれば、正常終了を表す終了フラグ１２２を、アウトバウンドバッファ２６４にデータとして転送し、また、比較結果の一部でも不一致であれば、異常終了を表す終了フラグ１２２を、アウトバウンドバッファ２６４にデータとして転送する。
【００９５】
以降は、第１の実施形態と同様の動作により、終了フラグ１２２がホストコンピュータ（＃１）１００のメモリ１２０に格納される。
【００９６】
そのため、第１の実施形態と同様に、ＣＰＵ１１０は、メモリ１２０に書き込まれた終了フラグ１２２の内容をチェックすることにより、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送の書込み動作が正常に終了したか否かを確認することが可能となる。
【図面の簡単な説明】
【００９７】
【図１】本実施形態のコンピュータシステムにおけるホストチャネルアダプタの構成の一例を示す図である。
【図２】本実施形態のコンピュータシステムの構成の一例を示す図である。
【図３】本実施形態のコンピュータシステムにおける、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作の一例を説明するフローチャートである。
【図４】本実施形態のコンピュータシステムにおける、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作の他の例を説明するフローチャートである。
【図５】一般的なコンピュータシステムの構成の一例を示す図である。
【図６】一般的なコンピュータシステムにおける、ＲＤＭＡ  Ｗｒｉｔｅコマンドによるデータ転送動作の一例を説明するフローチャートである。
【符号の説明】
【００９８】
１００，２００    ホストコンピュータ
１１０，２１０    ＣＰＵ
１２０，２２０    メモリ
１２１    データ
１２２    終了フラグ
１６０，２６０    ホストチャネルアダプタ
１６１，２６１    インバウンド制御部
１６２，２６２    インバウンドバッファ
１６３，２６３    アウトバウンド制御部
１６４，２６４    アウトバウンドバッファ
１６５，２６５    ＤＭＡ制御部
１６６，２６６    ＰＩＣバスＩ／Ｆ
１６７，２６７    ホストチャネルアダプタＩ／Ｆ制御部
１６８，２６８    ホストチャネルアダプタＩ／Ｆ
１６９，２６９    障害情報レジスタ
３００    ファイバーケーブル
【図１】
2008217214.tif 000003
【図２】
2008217214.tif 000004
【図３】
2008217214.tif 000005
【図４】
2008217214.tif 000006
【図５】
2008217214.tif 000007
【図６】
2008217214.tif 000008