説明

データ転送装置、データ転送方法、コンピュータシステム

【課題】データインテグリティを保証し、障害時の影響範囲を小さくする。
【解決手段】データ転送装置は、入出力コントローラと、ホストチャネルアダプタと、スイッチとを具備する。入出力コントローラは、所定のposted writeトランザクションを受信すると、リプライトランザクションを返送する。ホストチャネルアダプタは、リプライトランザクションの返送が義務付けられているnon−posted writeトランザクションを発行したのち、入出力コントローラから所定の数のリプライトランザクションを受信するまでリプライトランザクションを待ち合わせる。スイッチは、入出力コントローラと前記ホストチャネルアダプタとの間に設けられ、トランザクションを中継する。スイッチは、トランザクションの中継時に発生した障害をCPUに通知し、ホストチャネルアダプタはCPUから障害発生の通知を受信したとき、対向するホストチャネルアダプタにデータ転送が異常終了したことを通知する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、装置間のデータ転送方法に関し、特にパケットデータを転送するデータ転送方法、そのデータ転送方法によってデータを授受するデータ転送装置、コンピュータシステムに関する。
【背景技術】
【0002】
ホストコンピュータ間をポイント・ツー・ポイント接続するインターコネクトとして、PCI express switch(以下PCIスイッチ)のポートに接続されるホストチャネルアダプタ(HCA)を用いることがある。このPCIスイッチには、他のPCIデバイスも接続される。このようなシステムにおいてPCIスイッチに障害が起きると、PCIスイッチを閉塞することが多い。そのような場合、ホストチャネルアダプタを含め、PCIスイッチに接続されている全てのPCIデバイスが閉塞され、障害発生時の影響範囲が大きい。
【0003】
PCIスイッチは、“障害閉塞モード”および“障害通知モード”の動作モードを備える。“障害閉塞モード”では、PCIスイッチは障害発生時に自身を閉塞する。“障害通知モード”では、PCIスイッチは閉塞せずに処理中のトランザクションのみ破棄し、コントローラに障害通知を行なって後続のトランザクションの処理を継続する。
【0004】
データインテグリティ(データ完全性)を保証するためには、障害発生時にホストチャネルアダプタ間のデータ転送を異常終了させる必要がある。障害閉塞モードでは、障害発生時にホストチャネルアダプタが閉塞されるため、データ転送が途中で停止して異常終了し、データインテグリティが保証される。しかし、PCIスイッチに接続される他のPCIデバイスも閉塞するため、障害の影響範囲が大きくなる。したがって、障害閉塞モードでは、障害の影響が及ぶ範囲を小さくすることが課題である。一方、障害通知モードでは、PCIスイッチに接続されているPCIデバイスは閉塞されず、障害の影響が及び範囲は限定的になる。しかし、ホストチャネルアダプタ間で転送途中のトランザクションが破棄されるが、データ転送を要求したリクエスタはその異常を検出できないため、データ転送は正常終了したものと扱われる。したがって、この場合、データインテグリティを保証することはできない。
【0005】
PCIバス障害によるシステムダウンの発生を抑止するため、特開2005−215809号公報には、プロセッサと、主記憶と、複数の入出力デバイスとを接続する入出力バスを制御するバスコントローラを含み、OS(Operating System)にて制御されるコンピュータシステムが開示されている。バス信号制御部は、PCIバスプロトコルに従ってPCIバス上のPCIデバイスとのトランザクション制御を行う。バス信号制御部は、バス障害検出時にバス障害インジケータをセットしてPCIバスを縮退状態として扱い、PCIデバイスへの指示要求を受付ける。コンフィグレーション部は、バス障害インジケータを持ち、コンフィグレーションレジスタを更新する。そして、コンフィグレーション部は、リプライトランザクションをインバウンドコントローラ部に送信する。アービトレーション部は、PCIバスの調停を行い、バス縮退状態時にPCIデバイスからのバス使用要求をマスクする。
【0006】
特開2009−169854号公報には、周辺装置にデータ転送要求を発行するホストブリッジと、周辺装置と複数のレーンを介して接続され、ホストブリッジと周辺装置との間を中継する第1のホストバスアダプタとを有するコンピュータシステムにおいて、バス障害が発生した場合に迅速にリカバリ処理する技術が開示されている。ホストブリッジは、周辺装置との間でデータ転送が行われている間に通信エラーが発生した場合に、複数のレーンのうち正常であるレーンを使用してデータ転送における転送未完了のデータを第1のホストバスアダプタから受信する。
【0007】
また、特開平09−325919号公報には、データの転送エラーを検出し、リクエストトランザクションに対するリプライトランザクションの正当性を高めるスプリット転送エラー監視装置が開示されている。リクエストトランザクション送信回路は、リクエストトランザクションの送信時にカウント回路をインクリメントする。リプライトランザクション受信回路は、リプライトランザクションの受信時にカウント回路をデクリメントする。カウント回路は、カウント値が負になるとエラーを中央処理装置に報告する。中央処理装置は、トランザクション情報格納バッファにリクエストトランザクション及びリプライトランザクションの情報を書込む。中央処理装置は、パリティ反転手段を用いてデータ格納バッファを偶数パリティで初期化する。そして、中央処理装置は、トランザクション情報格納バッファとデータ格納バッファとからのデータを奇数パリティでチェックする。
【0008】
図1に示されるように、対向するホストコンピュータ7A、7Bが有するホストチャネルアダプタ23A、23Bを光ケーブル30でポイント・ツー・ポイント接続したコンピュータシステムにおけるデータ転送を説明する。図2は、RDMA(Remote Direct Memory Access)によるデータ転送であるRDMA−writeの正常動作のときのシーケンス例を示す。
【0009】
ホストコンピュータ7AのCPU11Aは、RDMA−writeによるデータ転送をホストチャネルアダプタ23Aに要求する(S101)。ホストチャネルアダプタ23Aは、readトランザクションを発行し(S102)、PCIスイッチ22AおよびIOC21Aを介して主記憶メモリ12Aからデータを読み出す(S103)。ホストチャネルアダプタ23Aは、読み出したデータを対向するコンピュータ7Bのホストチャネルアダプタ23Bに光ケーブル30を介してデータ転送する(S111〜S114)。
【0010】
データを受信したホストチャネルアダプタ23Bは、posted writeトランザクションを発行し、PCIスイッチ22B、IOC21Bを介して主記憶メモリ12Bにデータを書き込む(S121〜S124)。ここで、データを送信する場合の手順として、“posted write”と“non−posted write”がある。“posted write”は相手側からのレスポンスを必要とせず、“non−posted write”は相手側から動作完了のレスポンスを必要とする。したがって、転送速度を優先するDMA転送では“posted write”が使用される。
【0011】
ホストチャネルアダプタ23Bは、転送されるデータの最後のposted writeトランザクションを発行すると、readトランザクションを発行して(S141)、最後に書き込んだデータを読み出して主記憶メモリ12Bが書き込み動作を完了したことを待ち合わせる。Readトランザクションに対して主記憶メモリ12Bからリプライトランザクションが返却されると(S142)、ホストチャネルアダプタ23Bは、ホストコンピュータ7Aのホストチャネルアダプタ23Aに対して正常終了を示す終了フラグを転送する(S144)。
【0012】
終了フラグを受信したホストチャネルアダプタ23Aは、posted writeトランザクションを発行し、主記憶メモリ12Aに正常終了を示す終了フラグを書き込む(S151)。CPU11Aは、ホストチャネルアダプタ23Aによって書き込まれる終了フラグをポーリングしてRDMA−writeの完了を待ち合わせ、読み込んだ終了フラグによって示される値に基づいて、正常終了・異常終了の判定を行う(S152)。ここでは、全てのデータが主記憶メモリ12Bに書き込まれているため、CPU11Aは、正常終了と認識する。
【0013】
次に、PCIスイッチ22Bにおいて障害発生を検知した場合を説明する。図3には、障害による影響を拡散させないように、障害発生時にPCIスイッチ22Bおよびホストチャネルアダプタ23Bを閉塞する障害閉塞モードのシーケンスが示される。
【0014】
ホストチャネルアダプタ23Bがposted writeトランザクションを処理中にPCIスイッチ22Bにおいて障害が発生すると(S123)、PCIスイッチ22Bは障害通知をCPU11Bに報告して閉塞する(S137)。PCIスイッチ22Bが閉塞するため、PCIスイッチ22Bに接続されているホストチャネルアダプタ23B、その他のPCIデバイス24Bも閉塞状態になる(S129)。ホストチャネルアダプタ23Bが閉塞状態にあるため、ホストチャネルアダプタ23Aとホストチャネルアダプタ23Bとのリンクは切れる。ホストチャネルアダプタ23Aは、このリンクダウンを検知し(S155)、CPU11Aに通知する(S156)。通知を受けたCPU11Aは、要求したデータ転送が異常終了したと判断する。
【0015】
このように、障害閉塞モードでは、データ転送を要求したCPU11Aは、ホストチャネルアダプタ23Aから報告を受けてデータ転送が異常終了したことを知ることができるため、データインテグリティは保証できる。しかし、ホストコンピュータ7Bに搭載される他のPCIデバイス24も閉塞するため、正常に動作している他の機能も閉塞することになり影響が大きい。
【0016】
一方、障害通知モードで動作するPCIスイッチ21Bの場合、図4に示されるように動作する。ホストチャネルアダプタ23Bがposted writeトランザクションを処理中にPCIスイッチ22Bにおいて障害が発生すると(S123)、PCIスイッチ22Bは、障害通知をCPU11Bに報告し(S137)、仕掛かり中のトランザクションを破棄する。CPU11Bは障害処理を実行し、ホストチャネルアダプタ23Bに障害発生を通知する(S138)。ホストチャネルアダプタ23Bは異常終了を示す終了フラグをホストチャネルアダプタ23Aに送る(S148)。ホストチャネルアダプタ23Aは、データ転送が異常終了したことを主記憶メモリ12Aに終了フラグを書き込んでCPU11Aに報告する(S158)。CPU11Aは、データ転送が異常終了したことを知ることができる。
【0017】
しかし、図4に示されるように、ホストチャネルアダプタ23BがCPU11BからPCIスイッチ21Bの異常を通知される前に、次のトランザクションが正常に終了することがある(S124、S141、S142)。データ転送の最後のデータが主記憶メモリ12Bから正常に読み出すことができれば(S142)、ホストチャネルアダプタ23Bは、データ転送が正常終了したものとしてホストチャネルアダプタ23Aに通知する(S144)。ホストチャネルアダプタ23Aは、CPU11Aに対してデータ転送の正常終了を報告し(S151)、CPU11Aは、破棄されたトランザクションがあり、一部のデータ転送が行なわれていないにもかかわらず、要求したデータ転送によって全てのデータが相手側に正常に送られたと判定する。すなわち、データインテグリティを保証することができない。
【0018】
したがって、このようなシステムでは、PCIスイッチが障害閉塞モードで動作すると、接続されているPCIデバイスが全て閉塞状態になるため、デグレード範囲が大きく、システムの継続運用に影響が大きい。障害時の影響を小さくするために、PCIデバイスが閉塞しない障害通知モードでPCIスイッチを動作させると、posted writeトランザクションが破棄され、データインテグリティが保証できない場合がある。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】特開2005−215809号公報
【特許文献2】特開2009−169854号公報
【特許文献3】特開平09−325919号公報
【発明の概要】
【発明が解決しようとする課題】
【0020】
本発明の目的は、データインテグリティを保証し、障害時の影響範囲を小さくするデータ通信装置、データ通信方法、コンピュータシステムを提供することにある。
【課題を解決するための手段】
【0021】
本発明の観点では、データ転送装置は、入出力コントローラ(IOC)と、ホストチャネルアダプタ(HCA)と、スイッチとを具備する。入出力コントローラは、所定のposted writeトランザクションを受信すると、リプライトランザクションを返送する。ホストチャネルアダプタは、リプライトランザクションの返送が義務付けられているnon−posted writeトランザクションを発行したのち、入出力コントローラから所定の数のリプライトランザクションを受信するまでリプライトランザクションを待ち合わせる。スイッチは、入出力コントローラと前記ホストチャネルアダプタとの間に設けられ、トランザクションを中継する。スイッチは、トランザクションの中継時に発生した障害をCPUに通知し、ホストチャネルアダプタはCPUから障害発生の通知を受信したとき、対向するホストチャネルアダプタにデータ転送が異常終了したことを通知する。
【0022】
本発明の他の観点では、コンピュータシステムは、上記のデータ転送装置を備える複数のコンピュータを含み、対向するコンピュータ間でデータ転送装置を介してデータの授受を行なう。
【0023】
また、本発明の他の観点では、データ転送方法は、ホストチャネルアダプタから所定のposted writeトランザクションを入出力コントローラに対してスイッチを介して発行するステップと、所定のposted writeトランザクションを受けた入出力コントローラからホストチャネルアダプタに対して所定のリプライトランザクションを発行するステップと、ホストチャネルアダプタから入出力コントローラに対してnon−posted writeトランザクションを発行するステップと、ホストチャネルアダプタがnon−posted writeトランザクションを発行した後、所定のリプライトランザクションを受信するまで待ち合わせるステップと、スイッチがトランザクションを中継するときに検出した障害をCPUに通知するステップと、障害に基づいてCPUから通知される障害通知を受信したときにホストチャネルアダプタから対向するホストチャネルアダプタに対してデータ転送が異常終了したことを通知するステップとを具備する。
【発明の効果】
【0024】
本発明によれば、データインテグリティを保証し、障害時の影響範囲を小さくするデータ通信装置、データ通信方法、コンピュータシステムを提供することができる。
【図面の簡単な説明】
【0025】
【図1】本発明の実施の形態に係るコンピュータシステムの構成を示す図である。
【図2】RDMA−writeの正常動作のときの動作を説明する図である。
【図3】RDMA−write中に障害が発生したときの動作を説明する図である。
【図4】障害通知モードで動作するPCIスイッチの障害時の動作を説明する図である。
【図5】本発明の第1の実施の形態に係るコンピュータシステムにおけるRDMA−writeの正常動作を説明する図である。
【図6】本発明の第1の実施の形態に係るコンピュータシステムにおけるRDMA−writeの障害時の動作を説明する図である。
【図7】本発明の第2の実施の形態に係るコンピュータシステムにおけるRDMA−writeの正常動作を説明する図である。
【図8】本発明の第2の実施の形態に係るコンピュータシステムにおけるRDMA−writeの障害時の動作を説明する図である。
【発明を実施するための形態】
【0026】
本発明は、PCI express switch(以下PCIスイッチ)のポートにホストチャネルアダプタ(HCA)を接続し、二つのホストコンピュータ間をポイント・ツー・ポイント接続したコンピュータシステムに関するものである。PCIスイッチは、“障害閉塞モード”と、“障害通知モード”との2種類の動作モードを有する。障害閉塞モードでは、PCIスイッチは障害時に閉塞する。障害通知モードでは、PCIスイッチは閉塞せずに処理中のトランザクションを破棄してコントローラに対して障害通知を行い、後続のトランザクションを継続処理する。
【0027】
本発明では、PCIスイッチ障害時にPCIスイッチが閉塞せず、かつ、データインテグリティ(データ完全性)を保証するホストコンピュータ間データ転送方式を提供する。これによって、PCIスイッチ障害時のデグレード影響範囲を小さくする。データインテグリティを保証するためには、障害発生時にホストチャネルアダプタ間のデータ転送を異常終了させる必要がある。障害閉塞モードでは、障害発生時にホストチャネルアダプタが閉塞し、データ転送が途中で停止して異常終了するため、データインテグリティは保証できる。しかし、PCIスイッチに接続されている他のPCIデバイスも閉塞してしまうため、障害の影響範囲が大きくなる。
【0028】
一方、障害通知モードではPCIスイッチに接続されているPCIデバイスは閉塞しないものの、ホストチャネルアダプタ間のデータ転送中のあるトランザクションが破棄され、データ転送のリクエスタが異常を検出できない。したがって、データ転送は正常終了したと誤認識され、データインテグリティを保証できない。本発明では、PCIスイッチは障害通知モードで動作し、データインテグリティを保証する転送方式を提供する。
【0029】
ホストチャネルアダプタからのトランザクションがPCIスイッチを経由し、その先の入出力コントローラ(IOC)まで到達すると、入出力コントローラはホストチャネルアダプタに対するリプライトランザクションを新たに発行する。ホストチャネルアダプタはトランザクション数とリプライトランザクション数とを監視する。トランザクション数とリプライトランザクション数が一致した場合、ホストチャネルアダプタは正常終了と判断し、リプライトランザクション数が少ない場合にはトランザクション未達と判断して後続のトランザクションを停止する。これにより、障害発生時に一連のデータ転送を異常終了させることができ、データインテグリティを保証することができる。このように、本発明では、PCIスイッチは障害時に障害通知モードで動作し、ホストチャネルアダプタと入出力コントローラとの間でトランザクションの破棄を監視することにより、データインテグリティを保証しつつ、障害発生時のデグレード影響範囲を小さくすることができる。
【0030】
図面を参照して本発明の実施の形態を説明する。
【0031】
(第1の実施の形態)
図1は、本発明の実施の形態に係るコンピュータシステムの構成を示す図である。本発明の実施の形態に係るコンピュータシステムは、光ケーブル30によってポイント・ツー・ポイント接続されるホストコンピュータ7A、7Bを具備する。ホストコンピュータ7Aとホストコンピュータ7Bとは、光ケーブル30を介して互いにデータを授受する。ホストコンピュータ7A、7Bは、同じように構成されるため、それぞれ対応する部分には同じ符号を付与し、ホストコンピュータ7Aに含まれるものには“A”、ホストコンピュータ7Bに含まれるものには“B”を符号の末尾に付加して区別する。
【0032】
ホストコンピュータ7は、データ処理の中枢であるCPU部を搭載するCPUボード10と、入出力を担うIO部を搭載するIOPボード20とを具備する。CPUボード10は、CPU11と、主記憶メモリ(MM)12と、メモリ制御部13と、入出力制御部14とを備える。IOPボード20は、入出力コントローラ(IOC)21、PCIスイッチ(SW)22、ホストチャネルアダプタ(HCA)23、その他のPCIデバイス(DEV)24を備える。
【0033】
CPU11および入出力制御部14は、メモリ制御部13を介して主記憶メモリ12からデータを読み出し、主記憶メモリ12へデータを書き込む。CPU11は、主記憶メモリ12に格納されるプログラムを読み出して実行する。入出力制御部14は、IOPボード20とCPUボード10とを接続し、IOPボード20からのトランザクションやIOPボード20へのトランザクションを制御する。メモリ制御部13は、CPU11および入出力制御部14からの主記憶メモリ12への書き込みおよび読み出し要求を処理する。
【0034】
PCIスイッチ22は、IOC21、ホストチャネルアダプタ23、その他のPCIデバイス24を接続し、PCI expressにおけるパケットを送り先に転送するスイッチング装置である。IOC21は、PCIスイッチ22および入出力制御部14に接続され、ホストチャネルアダプタ23、その他のPCIデバイス24からの要求を入出力制御部14へ送り、入出力制御部14からの要求をホストチャネルアダプタ23、その他のPCIデバイス24へ送る。ホストチャネルアダプタ23は、PCIスイッチ22に接続されるPCIデバイスであり、光ケーブル30を介して対向するホストコンピュータのホストチャネルアダプタ23との間で主記憶メモリ12に対するデータ転送を行う。
【0035】
ホストコンピュータ7Aからホストコンピュータ7Bに対して、RDMA(Remote Direct Memory Access)によってデータ転送を行う場合の動作を説明する。ここで、RDMA−writeは、リクエスト元のコンピュータの主記憶メモリに格納されるデータを、リクエスト先のコンピュータの主記憶メモリにCPUの介在なしに書き込む動作である。
【0036】
図5に、データ転送が正常に行われる場合のシーケンスを示す。
【0037】
ホストコンピュータ7Aにおいて、CPU11Aは、RDMA−writeリクエストトランザクションを発行してホストチャネルアダプタ23AにRDMAによるデータ転送を指示する(S101)。その後、CPU11Aは、主記憶メモリ12Aに格納される終了フラグがデータ転送の終了を示すまでポーリングする。
【0038】
ホストチャネルアダプタ23Aは、Readトランザクションを発行して(S102)、主記憶メモリ12Aからデータを読み出す(S103)。ホストチャネルアダプタ23Aは、光ケーブル30を介して対向するホストコンピュータ7Bのホストチャネルアダプタ23Bに読み出したデータを送出する(S111〜S114)。
【0039】
データを受信したホストチャネルアダプタ23Bは、受信したデータを所定の転送単位毎にIOC21Bに送るため、posted writeトランザクションを発行する。このposted writeトランザクションは、PCIスイッチ22Bを介してIOC21Bに到達し、転送されるデータは、入出力制御部148Bを介してメモリ制御部13Bにより主記憶メモリ12Bに書き込まれる(S121〜S124)。このとき、IOC21Bは、posted writeトランザクションを検出すると、対応するカウント用のリプライトランザクションをホストチャネルアダプタ23Bに対して発行する(S131〜S134)。
【0040】
ホストチャネルアダプタ23Bは、データ転送における最後のposted writeトランザクションを発行すると(S124)、最後に転送されたデータの書き込み処理が完了したことを確認するためにReadトランザクションを発行する(S141)。ホストチャネルアダプタ23Bは、これまで発行したposted wirteトランザクションおよびReadトランザクションに対する全てのリプライトランザクションが応答されるまで待ち合わせる(S143)。すなわち、ホストチャネルアダプタ23Bは、posted writeトランザクションの発行数、それらに対するカウント用のリプライトランザクションの受信数をカウントし、発行数と受信数とが一致するまで待ち合わせる。図5に示されるシーケンスでは、Readトランザクション(S141)が発行された後、リプライトランザクションを受信する(S134)。これでposted writeトランザクションに対するリプライトランザクションは全て受信したが、Readトランザクションに対する応答はまだ受信されていないため、待ち合わせを続ける。Readトランザクションに対しては、主記憶メモリ12B(メモリ制御部13B/入出力制御部14B)からリプライトランザクションが返却される(S142)。これを受信してホストチャネルアダプタ23Bは、対向するホストコンピュータ7Aのホストチャネルアダプタ23Aに正常終了を示す終了フラグを転送する(S144)。
【0041】
終了フラグを受信したホストチャネルアダプタ23Aは、posted writeトランザクションを発行し、RDMAによるデータ転送が正常終了したことを示す終了フラグを主記憶メモリ12Aに書き込む(S151)。CPU11Aは、終了フラグをポーリングしてRDMA−writeリクエストトランザクションの終了を待ち合わせている(S152)。したがって、ホストチャネルアダプタ23Aによって終了フラグが主記憶メモリ12Aに書き込まれると、CPU11Aは、RDMA−writeリクエストトランザクションの終了を知ることができる。CPU11Aは、終了フラグによって示される値に基づいて、データ転送が正常終了したのか異常終了したのかを判定する。図5に示される場合、CPU11Aは正常終了と判定する。
【0042】
このようなシーケンスでRDMA−writeトランザクションが実行されている途中で、PCIスイッチ22Bにおいて一時的な障害が発生した場合のシーケンスが、図6に示される。ホストチャネルアダプタ23Bが、3回目のデータ転送をホストチャネルアダプタ23Aから受信するまでは(S113)、図5に示されるシーケンスと同じである。
【0043】
3回目のデータ転送をホストチャネルアダプタ23Aから受信したホストチャネルアダプタ23Bは、posted writeトランザクションを発行する(S123)。このposted writeトランザクションは、PCIスイッチ22Bにおいて発生した障害により破棄される。すなわち、PCIスイッチ22Bは、障害発生を検知すると、障害通知をCPU11Bに報告し(S137)、仕掛かり中のトランザクションを破棄する。したがって、IOC21Bにはこのposted writeトランザクションが到達せず、IOC21Bは、リプライトランザクションを発行しない。ここまでに発行されたposted writeトランザクションに対するリプライトランザクションはIOC21Bからホストチャネルアダプタ23Bに到達しているので、この時点で、発行されたposted writeトランザクションの数と、それに対応するリプライトランザクションの数とが不一致となる。
【0044】
その後、ホストチャネルアダプタ23Aから最後のデータを受信したホストチャネルアダプタ23Bは、posted writeトランザクションを発行し(S124)、Readトランザクションを発行する(S141)。ホストチャネルアダプタ23Bは、これまで発行したposted wirteトランザクションおよびReadトランザクションに対する全てのリプライトランザクションが応答されるまで待ち合わせる(S143)。
【0045】
最後に発行したposted writeトランザクション(S124)と、Readトランザクション(S141)とに対するリプライトランザクション(S134、S142)はホストチャネルアダプタ23Bに届くが、破棄されたposted writeトランザクション(S123)に対するリプライトランザクションは発行されず、ホストチャネルアダプタ23Bは待ち合わせを続ける。
【0046】
一方、障害通知を受けたCPU11Bは、障害処理を行い、PCIスイッチ22Bにおいて障害があったことをホストチャネルアダプタ23Bに通知する(S138)。すなわち、posted writeトランザクションの数とリプライトランザクションの数が不一致の場合、ホストチャネルアダプタ23Bは一致するまで待ち合わせるが、その間にCPU11BがPCIスイッチの障害を認識して障害処理を行ない、ホストチャネルアダプタ23Bに障害を通知することになる。
【0047】
障害通知を受けたホストチャネルアダプタ23Bは、データ転送が異常終了したことを示す終了フラグを、対向するホストコンピュータ7Aのデータチャネルアダプタ23Aに送る(S148)。
【0048】
異常終了を示す終了フラグを受信したホストチャネルアダプタ23Aは、posted writeトランザクションを発行して、主記憶メモリ12Aに終了フラグを書き込む(S158)。CPU11Aは、ポーリングによって終了フラグを取り込み(S159)、RDMA−writeリクエストトランザクションが異常終了したことを認識する。したがって、CPU11Aは、転送したデータの一部がホストコンピュータ7Bに未到達であることを認識し、データインテグリティは保証される。
【0049】
このように、本発明では、障害発生時に閉塞を行わずに障害通知のみ行うPCIスイッチをデータ転送経路に有するコンピュータシステムにおいて、リクエストトランザクションの待ち合わせによりデータインテグリティを保証することができる。すなわち、PCIスイッチを介してposted writeトランザクションを発行する発行元であるホストチャネルアダプタ(リクエスタ)が、発行先であるIOCからposted writeトランザクションに対するリクエストトランザクションを待ち合わせする。これにより、障害通知に応答して起動される障害処理によって、PCIスイッチ障害においてトランザクション破棄が行われたことを認識することができ、データインテグリティを保証することができる。
【0050】
また、障害発生時に閉塞を行わずに障害通知のみ行うPCIスイッチによってデータインテグリティが保証されるため、データインテグリティを保証するためにPCIスイッチを閉塞する必要がなく、障害時の影響範囲を限定的にすることができる。
【0051】
(第2の実施の形態)
図7、図8に、本発明の第2の実施の形態に係るコンピュータシステムの動作が示される。図7は、RDMA−writeリクエストトランザクションにおける正常終了する場合のシーケンスを示し、図8は異常終了する場合のシーケンスを示す。
【0052】
図7を参照すると、CPU11AからRDMA−writeリクエストトランザクションが発行され(S101)、ホストチャネルアダプタ23AがReadトランザクション(S102)によって主記憶メモリ12Aからデータを読み出し(S103)、ホストチャネルアダプタ23Bへデータ転送する(S111〜S114)。ここまでは、第1の実施の形態における動作と同じである。
【0053】
最初のデータを受信したホストチャネルアダプタ23Bは、IOC21Bに対してposted writeトランザクションを発行し、これから始まるデータ転送のposted writeトランザクションの発行数をIOC21B内のレジスタに書き込む(S120)。ここでは、posted writeトランザクションを4回発行してデータ転送が行われるため(S121〜S124)、IOC21B内のレジスタには“4”が書き込まれる。IOC21Bは、レジスタに値が書き込まれると受信回数をクリアする。
【0054】
一方、ホストチャネルアダプタ23Bは、posted writeトランザクションを発行し(S121〜S124)、IOC21Bを介して主記憶メモリ12Bに転送データを書き込む。所定のposted writeトランザクションを発行し終わると、ホストチャネルアダプタ23Bは、最後に書き込んだデータを読み出すためにReadトランザクションを発行する(S141)。ホストチャネルアダプタ23Bは、IOC21Bからのリプライトランザクション(S135)および主記憶メモリ12Bに対するReadトランザクションに応答するリプライトランザクション(S142)を受信するまで待ち合わせる(S143)。
【0055】
IOC21Bは、posted writeトランザクションを受信するたびに受信回数をカウントアップする(S130)。受信回数がレジスタに書き込まれた値と一致すると、IOC21Bは、ホストチャネルアダプタ23Bに対してリプライトランザクションを発行する。したがって、IOC21Bは、ホストチャネルアダプタ23Bから発行されるposted writeトランザクション(S121〜S123)を受信する毎に受信回数をカウントアップする。4回目のposted writeトランザクション(S124)を受信すると、受信回数とレジスタ値とが一致し、リプライトランザクションが発行される(S135)。レジスタに設定された回数の受信があったことを確認するとよいので、受信毎のダウンカウントでもよい。
【0056】
posted writeトランザクション(S121〜S124)を受信したIOC21Bは、リプライトランザクションを発行し(S135)、Readトランザクションに対しては、主記憶メモリ12Bからリプライトランザクションが返却される(S142)。これらのリプライトランザクションが到達すると、ホストチャネルアダプタ23Bは、ホストコンピュータ7Aのホストチャネルアダプタ23Aに対して正常終了を示す終了フラグを転送する(S144)。
【0057】
終了フラグを受信したホストチャネルアダプタ23Aは、posted writeトランザクションを発行し、主記憶メモリ12Aに正常終了を示す終了フラグを書き込む(S151)。CPU11Aは、主記憶メモリ12Aに書き込まれる終了フラグをポーリングしてRDMA−writeの完了を待ち合わせる(S152)。終了フラグを検知したCPU11Aは、終了フラグの値に基づいて正常終了・異常終了の判定を行う。図7に示されるシーケンスでは、CPU11Aは、データ転送が正常終了したと認識する。ホストチャネルアダプタ23BがIOC21B内のレジスタにデータ転送のposted writeトランザクションの発行数を書き込むposted writeトランザクションは、複数回発行されてもよい。その場合、ホストチャネルアダプタ23Bは、readトランザクションを発行した後、データ転送のposted writeトランザクションの発行数を書き込むposted writeトランザクションの発行回数と、そのリプライトランザクションの受信数が一致するまで待ち合わせる。
【0058】
障害が発生した場合、図8に示されるシーケンスとなる。
【0059】
ホストコンピュータ7Aは、ホストチャネルアダプタ23Aがホストコンピュータ7Bにデータ転送を完了するまで(〜S114)、図7に示されるシーケンスと同様の動作となる。
【0060】
ホストコンピュータ7Bでは、ホストチャネルアダプタ23BがIOC21B内のレジスタにデータ転送にposted writeトランザクションの発行数を設定し、順次posted writeトランザクションを発行して主記憶メモリ12Bにデータを書き込む。ホストチャネルアダプタ23Bが、3回目のposted writeトランザクションを発行したとき(S123)、PCIスイッチ22Bにおいて障害発生が検知される。PCIスイッチ22Bは、CPU11Bに対して障害発生を報告し(S137)、仕掛り中のトランザクションを破棄する。
【0061】
IOC21Bは、レジスタに設定される回数のposted writeトランザクションを待ち合わせる(S130)。しかし、障害発生を検知したPCIスイッチ22Bが仕掛り中のトランザクションを破棄しているため、IOC21Bは、ホストチャネルアダプタ23Bから4回目のposted writeトランザクションを受信しても(S124)、受信数が不足であると判定する。したがって、IOC21Bは、リプライトランザクションを発行せずにposted writeトランザクションを待ち続ける(S130)。
【0062】
ホストチャネルアダプタ23Bは、4回目のposted writeトランザクションを発行(S124)の後、最後に転送されたデータを確認するためにReadトランザクションを発行し(S141)、主記憶メモリ12Bに格納されるデータを読み出す(S142)。ホストチャネルアダプタ23Bは、IOC21Bからリプライトランザクションが受信されないため、待ち続ける(S143)。
【0063】
一方、障害通知を受けたCPU11Bは、障害処理を行い、ホストチャネルアダプタ23Bに障害発生を通知する(S138)。障害通知を受信したホストチャネルアダプタ23Bは、posted writeトランザクションが破棄されたことを認識し、対向するホストコンピュータ7Aに対して異常終了を示す終了フラグを送る(S148)。
【0064】
異常終了を示す終了フラグを受信したホストチャネルアダプタ23Aは、posted writeトランザクションを発行して、主記憶メモリ12Aに終了フラグを書き込む(S158)。CPU11Aは、ポーリングによって終了フラグを取り込み(S159)、RDMA−writeリクエストトランザクションが異常終了したことを認識する。したがって、CPU11Aは、転送したデータの一部がホストコンピュータ7Bに未到達であることを認識し、データインテグリティは保証される。
【0065】
このように、本発明のコンピュータシステムでは、リプライトランザクションの発行を伴わずにメモリにデータを書き込むことを指示するposted writeトランザクションに対して、PCIスイッチの接続先装置(主記憶への書き込み経路の途中の装置)がリプライトランザクションを返却する。リプライトランザクションの発行を伴うnon−posted writeトランザクションを受信した主記憶メモリは、主記憶メモリへの書き込みを完了した後、リプライトランザクションを発行する。本発明では、writeトランザクションはposted writeとnon−posted writeの中間的な性質を有するトランザクションとなる。
【0066】
すなわち、PCIスイッチがトランザクションを破棄する障害を検出することを目的として、主記憶メモリへの書き込み経路の途中に設けられるIOCがリプライトランザクションを返却する。このリプライトランザクションは、non−posted writeトランザクションに対するリプライトランザクションよりも早く返信される。また、CPUボード側ではリプライトランザクションを返却しないためCPUボード側のトランザクション処理の負荷が大きくならない。さらに、本発明は、CPUボード側の動作に影響せずに実施可能である。
【0067】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、矛盾のない限り組み合せて実施可能である。
【符号の説明】
【0068】
7、7A、7B ホストコンピュータ
10、10A、10B CPUボード
11、11A、11B CPU
12、12A、12B 主記憶メモリ
13、13A、13B メモリ制御部
14、14A、14B I/O制御部
20、20A、20B IOPボード
21、21A、21B IOC:入出力コントローラ
22、22A、22B PCIスイッチ
23、23A、23B ホストチャネルアダプタ:HCA
24、24A、24B その他のインタフェースデバイス
30 光ケーブル

【特許請求の範囲】
【請求項1】
所定のposted writeトランザクションを受信すると、リプライトランザクションを返送する入出力コントローラ(IOC)と、
リプライトランザクションの返送が義務付けられているnon−posted writeトランザクションを発行したのち、前記入出力コントローラから所定の数のリプライトランザクションを受信するまでリプライトランザクションを待ち合わせるホストチャネルアダプタ(HCA)と、
前記入出力コントローラと前記ホストチャネルアダプタとの間に設けられ、トランザクションを中継するスイッチと
を具備し、
前記スイッチは前記トランザクションの中継時に発生した障害をCPUに通知し、
前記ホストチャネルアダプタは前記CPUから障害発生の通知を受信したとき、対向するホストチャネルアダプタにデータ転送が異常終了したことを通知する
データ転送装置。
【請求項2】
前記スイッチは、シリアル転送インタフェースであるPCI expressのパケット化されたデータの転送をスイッチングする
請求項1に記載のデータ転送装置。
【請求項3】
前記入出力コントローラは、前記CPUが実行するプログラムを格納する主記憶メモリへのデータ書き込みを指示するposted writeトランザクションを受信すると、カウント用のリプライトランザクションを返送し、
前記ホストチャネルアダプタは、前記non−posted writeトランザクションを発行したのち、前記主記憶メモリへのデータ書き込みを指示するposted writeトランザクションに対応する全ての前記カウント用のリプライトランザクションを受信するまで新たなトランザクションを発行せずに待ち合わせる
請求項1または請求項2に記載のデータ転送装置。
【請求項4】
前記入出力コントローラは、前記CPUが実行するプログラムを格納する主記憶メモリへのデータ書き込みを指示するposted writeトランザクションの受信の予定数を、前記ホストチャネルアダプタからposted writeトランザクションに基づいて書き込まれ、保持するレジスタを備え、
前記ホストチャネルアダプタから発行された前記主記憶メモリへのデータ書き込みを指示するposted writeトランザクションの受信数が前記レジスタに書き込まれた数に一致するとき、カウント用のリプライトランザクションを前記ホストチャネルアダプタへ発行し、
前記ホストチャネルアダプタは、前記non−posted writeトランザクションを発行したのち、前記レジスタに書き込みを要求するposted writeトランザクションの発行数と、前記カウント用のリプライトランザクションの受信数とが一致するまで新たなトランザクションを発行せずに待ち合わせる
請求項1または請求項2に記載のデータ転送装置。
【請求項5】
請求項1から請求項4のいずれかに記載のデータ転送装置を備える複数のコンピュータを含み、
対向するコンピュータ間で前記データ転送装置を介してデータの授受を行なう
コンピュータシステム。
【請求項6】
前記複数のコンピュータの各々は、CPUを含み、
前記複数のコンピュータのうちの障害が発生したコンピュータにおいて前記スイッチが前記CPUに対して障害発生を通知したとき、主記憶メモリに書き込み途中の前記ホストチャネルアダプタに対して障害発生を通知し、前記主記憶メモリに書き込み途中の前記ホストチャネルアダプタは対向する前記ホストチャネルアダプタに対して前記主記憶メモリへのデータ書き込みが異常終了したことを通知する
請求項5に記載のコンピュータシステム。
【請求項7】
ホストチャネルアダプタから所定のposted writeトランザクションを入出力コントローラに対してスイッチを介して発行するステップと、
前記所定のposted writeトランザクションを受けた前記入出力コントローラから前記ホストチャネルアダプタに対して所定のリプライトランザクションを発行するステップと、
前記ホストチャネルアダプタから前記入出力コントローラに対してnon−posted writeトランザクションを発行するステップと、
前記ホストチャネルアダプタが前記non−posted writeトランザクションを発行した後、前記所定のリプライトランザクションを受信するまで待ち合わせるステップと、
前記スイッチがトランザクションを中継するときに検出した障害をCPUに通知するステップと、
前記障害に基づいて前記CPUから通知される障害通知を受信したときに前記ホストチャネルアダプタから対向するホストチャネルアダプタに対してデータ転送が異常終了したことを通知するステップと
を具備する
データ転送方法。
【請求項8】
前記スイッチは、シリアル転送インタフェースであるPCI expressのパケット化されたデータの転送をスイッチングする
請求項7に記載のデータ転送方法。
【請求項9】
前記所定のリプライトランザクションを発行するステップは、
前記CPUが実行するプログラムを格納する主記憶メモリへのデータ書き込みを指示するposted writeトランザクションを受信するステップと、
前記主記憶メモリへのデータ書き込みを指示するposted writeトランザクションに応答してカウント用のリプライトランザクションを返送するステップと
を備え、
前記待ち合わせるステップは、前記non−posted writeトランザクションを発行したのち、前記主記憶メモリへのデータ書き込みを指示するposted writeトランザクションに対応する全ての前記カウント用のリプライトランザクションを受信するまで新たなトランザクションを発行せずに待ち合わせるステップを備える
請求項7または請求項8に記載のデータ転送方法。
【請求項10】
前記所定のリプライトランザクションを発行するステップは、
前記CPUが実行するプログラムを格納する主記憶メモリへのデータ書き込みを指示するposted writeトランザクションの受信の予定数を、前記ホストチャネルアダプタからposted writeトランザクションに基づいて前記入出力コントローラに内蔵されるレジスタに書き込むステップと、
前記ホストチャネルアダプタから発行された前記主記憶メモリへのデータ書き込みを指示するposted writeトランザクションの受信数が前記レジスタに書き込まれた数に一致するとき、カウント用のリプライトランザクションを前記ホストチャネルアダプタへ発行するステップと
を備え、
前記待ち合わせるステップは、前記non−posted writeトランザクションを発行したのち、前記レジスタに書き込みを要求するposted writeトランザクションの発行数と、前記カウント用のリプライトランザクションの受信数とが一致するまで新たなトランザクションを発行せずに待ち合わせる
請求項7または請求項8に記載のデータ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−103975(P2012−103975A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2010−253120(P2010−253120)
【出願日】平成22年11月11日(2010.11.11)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】