JP2007304786A - コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム - Google Patents

コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム Download PDF

Info

Publication number
JP2007304786A
JP2007304786A JP2006131523A JP2006131523A JP2007304786A JP 2007304786 A JP2007304786 A JP 2007304786A JP 2006131523 A JP2006131523 A JP 2006131523A JP 2006131523 A JP2006131523 A JP 2006131523A JP 2007304786 A JP2007304786 A JP 2007304786A
Authority
JP
Japan
Prior art keywords
write
rdma
data
processing circuit
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006131523A
Other languages
English (en)
Inventor
Toru Takamichi
透 高道
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2006131523A priority Critical patent/JP2007304786A/ja
Publication of JP2007304786A publication Critical patent/JP2007304786A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】RDMA Writeのライト保証レベルがTCP ACKで十分なものと、ホストメモリチェックまで要求するものが混在する場合に、通信回線への無駄なトラヒックの流入の抑制と、データ受信側コンピュータ装置のマイクロプロセッサの負荷抑制を行う。
【解決手段】コンピュータ装置12のIPテーブルには、データ送信コンピュータ装置毎のライト保証レベルが登録されている。IPデータグラムの到着毎に該データ送信コンピュータが要求するライト保証レベルに応じた制御を行い、通常のコンピュータ装置にはTCP ACKによるライト完了通知のみを行い、ホストメモリのデータ確認や、その結果のRDMA Sendによる返送は行わない。厳密なライト保証を要求するコンピュータ装置には、ホストメモリに正確にライトされていることを上位レイヤで確認し、その結果をRDMA Sendメッセージでデータ送信コンピュータ装置に返送する。
【選択図】図1

Description

本発明は、複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムにおいて、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA(Remote Direct Memory Access) Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行う方法に関する。
近年、グリッドコンピューティングやWEB(World-Wide Web)サービスの普及とともに、コンピュータ装置間通信の頻度や重要度が増加している。また、イーサネット(登録商標)をはじめとするコンピュータ装置間インターコネクトの伝送帯域も拡大しつつあり、コンピュータ装置間の通信帯域、トラヒック量も増加している。従来はコンピュータ装置の通信プロトコル処理はマイクロプロセッサで行っていた。しかしながら、通信頻度、通信帯域、トラヒック量の増加とともに、通信処理のオーバヘッドによってユーザアプリケーション処理に十分なマイクロプロセッサ資源を割くことができない状況が発生する。
その対策として、汎用通信プロトコルの一つであるTCP(Transmission Control Protocol)処理やIP(Internet Protocol)処理を、マイクロプロセッサ外部の専用エンジンで行い、マイクロプロセッサ負荷を低減させるTOE(TCP offload Engine)技術がある。さらに、2台のコンピュータ装置間で、双方のマイクロプロセッサを介さず、それぞれのコンピュータに搭載した専用エンジンでホストメモリ同士の書き込みや読み出し処理を行う、RDMA(Remote Direct Memory Access)技術がある。特に、OSI(Open Systems Interconnection)参照モデルのトランスポート層にTCPを用いるRDMA over TCP、もしくはトランスポート層にSCTP(Stream Control Transmission Protocol)を用いるRDMA over SCTPを、iWARPと呼ぶ(2003年4月、RDMAコンソーシアム “An RDMA Protocol Specification (Version 1.0)”、以下、本願ではiWARP規定と称す)。本願では特にRDMA over TCPを扱うものとする。
iWARPでは、様々なオペレーションタイプが定義されている。オペレーションタイプとは、2台のコンピュータ装置間で行う動作である。例えば、2台のコンピュータ装置Aとコンピュータ装置Bがあり、コンピュータ装置Aがコンピュータ装置Bのホストメモリの指定アドレス内容を、マイクロプロセッサを介さずに読み出し、コンピュータ装置Aのホストメモリにコピーするオペレーションに、RDMA Readがある。また、コンピュータ装置Aとコンピュータ装置BのそれぞれのRDMAレイヤに設けたキュー間で、双方のマイクロプロセッサを介さずにデータ転送を行うオペレーションに、RDMA SendまたはRDMA Receiveがある。
また、コンピュータ装置Aからコンピュータ装置Bのホストメモリの指定したアドレスに、コンピュータ装置Aのホストメモリの内容を、マイクロプロセッサを介さずコピーする、RDMA Writeがある。
図5は2台のコンピュータ装置間でiWARP処理を実施する、従来のコンピュータシステムの一例である。コンピュータ装置51と52は通信回線53に接続され、それぞれマイクロプロセッサ51−1、52−1と、チップセット回路51−2、52−2と、ホストメモリ51−3、52−3と、RDMA処理回路51−4、52−4と、TCP処理回路51−5、52−5と、IP処理回路51−6、52−6と、イーサネット処理回路51−7、52−7を有している。チップセット回路51−2、52−2は、マイクロプロセッサ51−1、52−1とホストメモリ51−3、52−3、およびRDMA処理回路51−4、52−4などの各デバイスを接続する。マイクロプロセッサ51−1、52−1は、それぞれアプリケーションプログラム51−8、52−8と、MPI(Message Passing Interface)51−9、52−9と、デバイスドライバ51−10、52−10を含んでいる。アプリケーションプログラム51−8と52−8は任意のアプリケーションプログラムであるが、他のコンピュータ装置との通信処理が必要なものとする。MPI51−9と52−9は、並列計算を行うためのメッセージ授受用ライブラリであり、並列計算以外の用途であればMPIのかわりにソケット通信ライブラリとなる。デバイスドライバ51−10と52−10は、それぞれRDMA処理回路51−4と52−4とマイクロプロセッサ51−1、52−1の通信や制御、RDMA処理の一部分を行うプログラムである。
上述のコンピュータ装置51と52の間で、ホストメモリ51−3の指定アドレスの内容を、RDMA Writeによりホストメモリ52−3の指定アドレスにコピーする場合を考える。アプリケーションプログラム51−8から、ホストメモリ51−3の任意領域に格納されたデータをコンピュータ装置52に対してライトする処理要求が発生すると、MPI51−9からライト要求メッセージ送信を行い、デバイスドライバ51−10およびチップセット回路51−2経由でRDMA処理回路51−4にRDMA Write要求通知が転送される(ステップ301)。RDMA Write要求通知には、ホストメモリ51−3の何れの領域をコピーするかを示すアドレス情報も含まれている。
すると、RDMA処理回路51−4は、チップセット回路51−2経由でホストメモリ51−3のアドレス情報で指定された領域のデータを読み出し(ステップ302)、コンピュータ装置52のRDMA処理回路52−4に転送する(ステップ303)。そのメッセージ(パケットに相当)フォーマットは、iWARP規定によりRDMA Write、RDMA Send、RDMA Readなどのオペレーションタイプ毎に定められ、RDMA処理回路52−4はオペレーションタイプを容易に認識可能である。図12はRDMA Writeメッセージのフォーマットであり、opcode領域=0000からRDMA Writeであることを識別する。また、STAG領域やTagged Offset領域はデータ受信側コンピュータ装置のホストメモリのライトアドレスを指定し、また、その後ろにライトデータが格納されている。また、Length領域は該ライトデータ長を示す。
メッセージがRDMA Writeならば、RDMA処理回路52−4は該メッセージ中のデータをチップセット回路52−2経由でホストメモリ52−3に書き込む(ステップ304)。なお、ホストメモリ52−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路51−4はMPI51−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明は省略する。このように、RDMA処理回路51−4がデバイスドライバ51−10からRDMA Write要求を受信した以降、マイクロプロセッサ51−1、52−1のどちらも使用せずホストメモリ51−3の内容をホストメモリ52−3にコピーすることが可能である。コピー終了後、RDMA処理回路52−4はチップセット回路52−2、デバイスドライバ52−10およびMPI52−9経由で、上位のアプリケーションプログラム52−8にデータ引取り要求を発出し(ステップ305)、アプリケーションプログラム52−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路51−4〜52−4間には、TCP処理回路51−5、52−5と、IP処理回路51−6、52−6と、イーサネット処理回路51−7、52−7と、通信回線53が配備されている。TCP処理回路51−5と52−5はTCPレイヤの処理を行い、データ送信側ではRDMAメッセージのTCPセグメントへの整形処理、データ受信側ではTCPセグメントからのRDMAメッセージの取り出し、および送受信間での再送制御やレート制御を行う。IP処理回路51−6と52−6はIPレイヤ処理を行い、データ送信側ではTCPセグメントをIPデータグラムに整形し、IPアドレスを付加し、データ受信側ではIPデータグラムからのTCPセグメントの取り出しを行う。イーサネット処理回路51−7と52−7はイーサネットMACレイヤ・イーサネットPHYレイヤの処理を行い、データ送信側はIPデータグラムをイーサネットMACフレームに整形後、通信回線53に送出し、データ受信側では通信回線53からイーサネットMACフレームを受信し、該イーサネットMACフレームよりIPデータグラムを取り出す。
次に、RDMAレイヤでは、RDMA Write、RDMA Read、RDMA Receiveなどのオペレーション完了を上位レイヤに通知することが非特許文献1および非特許文献2に規定されている。通知にはCompletion Queue(以下CQと称す)と言うRDMAレイヤに定義したキューを用い、RDMAレイヤで各オペレーションが完了したならばCQにオペレーション毎に完了通知を書き込み、これをデバイスドライバ51−10が読み出し、MPI経由でアプリケーションプログラムに通知する。CQへ各オペレーション完了を書き込むためのトリガは、iWARP規定では明確な規定せず実装に依存する。
RDMA Writeでの、データ送信側コンピュータ装置のCQへの、ライト完了通知トリガの一例を図5の下半分に示す。これは、RDMAレイヤより下のトランスポートレイヤ〜物理レイヤの情報を用いる方法であり、破線で示すようにTCP処理回路51−5で受信するTCP ACK(Acknowledgement)をトリガとする。TCPの動作規定では、データ送信側からデータ受信側へTCPセグメントを正しく伝送できた際には、データ受信側からTCP ACKをデータ送信側に返送し、受信できなかった場合にはTCP ACKを返送しない。また、データ送信側では該TCP ACKが規定時間以内に返送されなかった場合には、該TCPセグメントを再送する機能を有する。データ受信側のTCP処理回路で正しく受信したと判定する基準は、TCPの規格にて規定されるものであり、本発明ではその判定方法は直接関係せずその詳細は省略するが、受信データの誤り検出用チェックサムのチェックや、プロトコルの正常性のチェックによる。図11はTCPセグメントのフォーマットを示す図である。TCPヘッダ領域に16ビットのチェックサム領域がある。これは、該TCPセグメント全体に対するチェックサムであり、これにより該TCPセグメントのビット誤りを検出し、ビット誤りが無ければ正しく受信したと判定する。図5でも、TCP処理回路52−5は、正しくTCPセグメントを受信した場合には該TCPセグメントに対するTCP ACKをコンピュータ装置51に返送する(ステップ306)。一方、パケットロスやビット誤りにより正しく受信しない場合は、TCP ACKは返送しない。これにしたがって、コンピュータ装置51側のTCP処理回路51−5は、RDMA処理回路51−4にライト完了通知トリガとなるTCP ACK受信完了信号を通知する(ステップ307)。そして、コンピュータ52のTCPレイヤで正しく受信できたTCPセグメントはホストメモリ52−3にも正しくライトできたとみなし、該TCP ACK受信完了信号をトリガとしてRDMA処理回路51−4はライト完了通知を上位レイヤに通知する(CQにライト完了通知を書き込む)(ステップ308)。なお、TCP処理回路51−5は、TCP ACKが何れのTCPセグメントのACKかをTCPセグメント内のシーケンス番号から認識しており、RDMA WriteメッセージとTCPセグメントの関連付けを管理しておけば、何れのRDMA Writeメッセージがライト完了したのか、容易に判定可能である。通常のTOEでもTCP ACKによる到達確認までしか行っておらず、本方式は従来のTOE技術と同程度の確実性があれば十分というユーザに適する。
図6にコンピュータシステムの他の例を示す。これは、データ受信側コンピュータ装置でホストメモリにデータが正しく書き込まれたことを、デバイスドライバでチェックし、その結果を用いるものである。
コンピュータ装置61と62は通信回線63に接続され、それぞれマイクロプロセッサ61−1、62−1と、チップセット回路61−2、62−2と、ホストメモリ61−3、62−3と、RDMA処理回路61−4、62−4と、TCP処理回路61−5、62−5と、IP処理回路61−6、62−6と、イーサネット処理回路61−7、62−7を有している。マイクロプロセッサ61−1と62−1にはそれぞれ、アプリケーションプログラム61−8、62−8と、MPI61−9、62−9と、デバイスドライバ61−10、62−10が搭載されている。
アプリケーションプログラム61−8からライトする処理要求が発生し、RDMA処理回路62−4がライトデータをホストメモリ62−3に書き込むまでの動作(ステップ301から304)は図5のシステムと同じである。また、TCP ACKの返送とTCP ACK受信完了通知の転送(ステップ306および307)も図5のシステムと同様である。さらに、デバイスドライバ62−10にデータ引き取り要求を通知する際に、iWARP規定で規定されているRDMA Writeメッセージのメッセージ番号MSN(Message Sequence Number)もあわせてデバイスドライバ62−10に通知する(ステップ305)。MSNはRDMA処理回路61−4でメッセージ順にシリアルに付加する番号である。デバイスドライバ62−10は、データ引取り要求を受けて、ホストメモリ62−3内の該当するメッセージのCRCチェックなどのデータ確認を行い、該データ確認結果をチップセット回路62−2経由でRDMA処理回路62−4に通知する(ステップ310)。その際、デバイスドライバ62−10はデータ確認したメッセージのMSNもあわせてRDMA処理回路62−4に通知する。RDMA処理回路62−4はRDMA Sendメッセージを用いて、該データ確認結果(ライト完了通知)とMSNをRDMA処理回路61−4に通知する(ステップ311)。RDMA処理回路61−4は受信MSN番号より、何れのRDMA Writeメッセージに対するライト完了通知かを識別することが可能である。RDMA処理回路61−4は、TCP ACK受信完了信号のほかに更に、該RDMA Sendによるライト完了を受信したならば、正しくライトが完了したものと判断し、CQ経由でライト完了を上位レイヤに通知する(ステップ312)。
本例は、デバイスドライバ62−10におけるデータ確認時間やRDMA Send時間が必要なため、アプリケーションプログラム61−8がライト完了を得るまで図5のシステムよりも時間がかかるほか、デバイスドライバ62−10でのデータ確認により、図5のシステムよりもマイクロプロセッサ62−1の負荷が増大する。しかしながら、コンピュータ装置内部で雑音等によってデータ誤りが発生し、ホストメモリに誤ったデータが書き込まれる可能性は、零ではない。したがって、TCP処理回路からホストメモリまでの区間でデータが誤り、ホストメモリにも誤ったデータが書き込まれる可能性も零ではない。そのため、金融系処理やデータセンタなどの確実性を必要とする用途では、確実にホストメモリに正しくデータが書き込まれたことを保証したいという要求も存在する。その点、本例は、ホストメモリに正しく書かれたことは確認せず、TCP ACKによるTCP処理回路までの送達確認によってホストメモリに正しく書き込まれたとみなす方式(以下では、みなし方式と称す)ではなく、実際にホストメモ62−2まで正しく書き込まれたことを確認する方式であり、金融系メッセージのように、より確実性を求める場合に適する。
Jeff Hilland、Paul Culley、Jim Pinkerton、Renato Recio "RDMA Protocol Verbs Specification (Version 1.0)"2003年4月25日発行 Renato.Recio, Paul.Culley, D.Garcia, Jeff Hilland、RDMA Consortium "An RDMA Protocol Specification (Version 1.0)"2002年10月21日発行
第1の問題点は、TCP ACKによるライト完了で十分なユーザと、ホストメモリのデータ確認をした上でのライト完了を要求するユーザのように、異なる種別のライト完了を要求するユーザが混在するコンピュータシステムでiWARPのRDMA Writeでホストメモリ間通信を行う場合に、伝送路上に不要なRDMA Sendメッセージが転送される可能性があることである。
その理由は、図5および図6のコンピュータ装置では、対向する装置のRDMA Writeのライト保証レベルがTCP ACKで十分であるか、もしくはホストメモリチェックまで必要であるかを区別しておらず、同一システムで双方のライト保証レベルに対応するためには、より安全側のホストメモリチェックまで行う図6の方式をサポートする必要があるためである。その結果、TCP ACKによるライト完了通知しかチェックしていないコンピュータ装置に対しても、RDMA Sendによるライト完了通知が返送されることになる。その結果、使用されることのないRDMA Sendによるライト完了通知が通信回線を転送されることになり、回線帯域が無駄になる。
図7はその一例を説明する図であり、3台のコンピュータ装置71、72、73が通信回線73を介して接続されている。コンピュータ装置71、72、73はそれぞれマイクロプロセッサ71−1、72−1、73−1と、チップセット回路71−2、72−2、73−2と、ホストメモリ71−3、72−3、73−3と、RDMA処理回路71−4、72−4、73−4と、TCP処理回路71−5、72−5、73−5と、IP処理回路71−6、72−6、73−6と、イーサネット処理回路71−7、72−7、73−7を有している。マイクロプロセッサ71−1、72−1、73−1にはそれぞれ、アプリケーションプログラム71−8、72−8、73−8と、MPI71−9、72−9、73−9と、デバイスドライバ71−10、72−10、73−10が搭載されている。
3台のコンピュータ装置71、72、73のうち、コンピュータ装置71は図5のコンピュータ装置51のようにRDMA Write完了としてTCP ACKのみしかチェックしないもの、コンピュータ装置73は図6のコンピュータ装置61のように、RDMA Sendによるホストメモリのデータ確認結果をRDMA Write完了として用いるものとする。コンピュータ装置71と73から、コンピュータ装置72に対してRDMA Writeでデータコピーをする場合は、コンピュータ装置72は対向装置が、どちらのRDMAライト保証レベルを要求しているか区別していないため、コンピュータ装置71と73の双方に対し、TCP ACKのほかにデバイスドライバ72−10によるホストメモリ72−3のデータ確認結果をRDMA Sendで返送する。その結果、コンピュータ装置73ではRDMA Sendによるライト完了通知は使用するものの、コンピュータ装置71では使用しないため、コンピュータ装置71へのRDMA Sendは無駄なメッセージということになる。
第2の問題点は、同じくTCP ACKによるライト完了で十分なユーザと、ホストメモリのデータ確認をした上でのライト完了を要求するユーザのように、異なる種別のライト完了を要求するユーザが混在するコンピュータシステムでiWARPのRDMA Writeでホストメモリ間通信を行う場合に、データ受信側コンピュータ装置のマイクロプロセッサの処理負荷が下がらない場合があることである。
その理由は、第1の問題点と同様に、データ受信側コンピュータ装置では、対向する装置のRDMA Writeのライト保証レベルがTCP ACKで十分であるか、もしくはホストメモリチェックまで必要であるかを区別しておらず、同一システムで双方のライト保証レベルに対応するためには、デバイスドライバ72−10で、ホストメモリの全メッセージに対するCRCチェックなどのデータ確認が必要になるためである。その結果、TCP ACKによるライト完了通知しかチェックしていないコンピュータ装置からのメッセージに対しても、ホストメモリのデータ確認を行うことになる。一例として、図7では、対向するコンピュータに関わらず、コンピュータ装置72のデバイスドライバ72−10でホストメモリ72−3のデータ確認を実施することになり、マイクロプロセッサ処理が無駄になる。
本発明の目的は、iWARPを用いるコンピュータシステムにおいて、RDMA Writeのライト保証レベルがTCP ACKで十分なもの、およびホストメモリチェックまで要求するものが混在する場合に、通信回線への無駄なトラヒックの流入の抑制、ならびにデータ受信側コンピュータ装置のマイクロプロセッサの負荷抑制を行うことができる、コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラムを提供することにある。
上記の目的を達成するために、本発明の第1の態様によれば、複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムであって、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行うコンピュータシステムにおけるデータ受信側のコンピュータ装置は、
データ送信側コンピュータ装置のIPアドレス毎のライト保証レベルを設定しておくIPテーブルと、
RDMA Writeによるデータのホストメモリへの格納完了時に、データ引取り要求とともにライト保証レベルも、マイクロプロセッサのデバイスドライバに通知するRDMA処理回路と
データ送信側コンピュータ装置から受信したIPデータグラムのIPヘッダ領域から該データ送信側コンピュータ装置のIPアドレスを読み出し、IPテーブルを参照して、該データ送信側コンピュータ装置のライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、RDMA処理回路に通知するIP処理回路と、
を有し、
デバイスドライバは、ライト保証レベルが第1のレベルの場合は、上位のアプリケーションプログラムに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージでホストメモリに書き込まれたデータの正常性をチェックし、該データが正常にホストメモリに書き込まれていることを確認したならば、RDMA処理回路に対してMSN番号とともにもライト完了を通知し、一方、ライト保証レベルが第2のレベルの場合は上位のアプリケーションプログラムに対してデータ引取り要求を通知するのみでホストメモリに書き込まれたデータの正常性チェックやその結果のRDMA処理回路への通知は行わず、
RDMA処理回路では、デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、データ送信側コンピュータ装置に対して送信する。
iWARPを用いたコンピュータシステムのデータ受信側コンピュータ装置において、予めデータ送信側コンピュータ装置毎にライト保証レベル、すなわちRDMA Writeに対して、ホストメモリのデータの正常性を確認した結果をRDMA Sendによって受信することでライト完了とするのか(第1のレベル)、あるいはTCP ACKでライト完了とみなすのか(第2のレベル)をIPテーブルに設定しておく。そして、IP処理回路で受信IPデータグラムのヘッダ領域からデータ送信側コンピュータ装置のIPアドレスを識別し、該IPアドレスのライト保証レベルをIPテーブルから読み出すことで、該データ送信コンピュータ装置が要求するライト保証レベル情報を得る。受信IPデータグラムは、IP処理回路とTCP処理回路を経てRDMA処理回路ではRDMAメッセージに復元されるが、それにあわせて該ライト保証レベル情報も並走させる。そして、RDMA処理回路で該RDMAメッセージをRDMA Writeと判定した場合は、デバイスドライバに対してデータ引取り要求通知とあわせて該ライト保証レベル信号、および、RDMA Writeメッセージのメッセージ番号MSNを通知する。
デバイスドライバは、ライト保証レベル信号が第1のレベルならばホストメモリに格納されているライトデータのチェック(CRCチェックなど)を行い、その結果として正常性が確認できたならばMPIにデータ転送を行うとともに、RDMA処理回路に対してライト完了通知を発出する。その際、あわせてデバイスドライバから該ライトデータのメッセージ番号MSNを通知する。RDMA処理回路は、デバイスドライバからライト完了通知を受け取ったならば、データ送信側コンピュータ装置に対してRDMA Sendを用いてライト完了通知を発出する。RDMA Sendメッセージにはあわせてライト完了したデータのMSNも格納する。
一方、デバイスドライバでRDMA処理回路からデータ引取り要求信号を受け取った際に、あわせてライト保証レベル信号が第2のレベルならば、デバイスドライバはホストメモリからデータを読み出してMPIに転送するのみで、CRCチェックなどのデータ確認や、RDMA処理回路へのライト完了通知の発出は行わない。
本発明の第2の態様によれば、複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムであって、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行うコンピュータシステムにおけるデータ受信側のコンピュータ装置は、
サービス・アプリケーション種別を示すポート番号毎のライト保証レベルを設定しておくポート番号テーブルと、
RDMA Writeによるデータのホストメモリへの格納完了時に、データ引取り要求とともに該ライト保証レベル情報も、マイクロプロセッサのデバイスドライバに通知するRDMA処理回路と
データ送信側コンピュータ装置から受信したTCPセグメントのTCPヘッダ領域からそのポート番号を読み出し、ポート番号テーブルを参照して、そのサービス・アプリケーションのライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、RDMA処理回路に通知するIP処理回路と、
を有し、
デバイスドライバは、ライト保証レベルが第1のレベルの場合は、上位のアプリケーションプログラムに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージでホストメモリに書き込まれたデータの正常性をチェックし、該データが正常にホストメモリに書き込まれていることを確認したならば、RDMA処理回路に対してMSN番号とともにライト完了を通知し、一方、ライト保証レベルが第2のレベルの場合は上位のアプリケーションプログラムに対してデータ引取り要求を通知するのみでホストメモリに書き込まれたデータの正常性チェックやその結果のRDMA処理回路への通知は行わず、
RDMA処理回路では、デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、データ送信側コンピュータ装置に対して送信する。
このように、本発明は、データ送信側コンピュータ装置毎に、RDMA Write時のデータ保証レベルにしたがって、RDMA Sendによるライト確認通知やデバイスドライバでのホストメモリのデータ正常性確認の実施/未実施を選択する。
以上説明したように、本発明によれば、コンピュータシステムにおけるiWARPを用いたコンピュータ間通信において、様々なライト保証レベルを要求するコンピュータ装置が混在する場合の通信回線のトラヒックを低減することができる。その理由は、データ送信側コンピュータ装置毎、もしくはサービス・アプリケーション種別を示すポート番号毎にライト保証レベルを設定し、該ライト保証レベル毎にRDMA Sendメッセージによるライト完了通知が必要であるか、もしくはTCP ACKで十分かを選択設定することが可能であり、TCP ACKで十分な場合でもRDMA Sendによるライト完了通知を発出する無駄をなくすことが可能なためである。
また、本発明によれば、コンピュータシステムにおけるiWARPを用いたコンピュータ間通信において、様々なライト保証レベルを要求するコンピュータ装置が混在する場合の、データ受信側コンピュータ装置のマイクロプロセッサの負荷低減を図ることができる。その理由は、データ送信側コンピュータ装置毎、もしくはサービス・アプリケーション種別を示すポート番号毎にライト保証レベルを設定し、該ライト保証レベル毎に上位レイヤによるホストメモリのデータ確認が必要であるか、もしくはTCP ACKで十分かを選択設定することが可能であり、TCP ACKで十分な場合でも上位レイヤによるホストメモリのデータ確認を行うという無駄をなくすことが可能であり、その結果ホストメモリの不要なデータ確認を行うことなく、マイクロプロセッサの負荷低減が可能となる
特に近年、グリッドコンピューティングやWEBサービスなど、コンピュータ装置同士を汎用的なTCP/IP通信回線で接続し、連携を図る用途が増えており、その際のプロセッサの負荷低減法としてiWARPが注目されている。また、コンピュータ装置間同士のトラヒック増加に伴い、通信回線でのパケットロスやパケット遅延などが発生すると、グリッドコンピューティングの性能や、WEBサービスの信頼性に影響を与えるため、通信回線のトラヒック量抑制は重要である。また、マイクロプロセッサの負荷増大も、グリッドコンピューティング性能やWEBサービスの応答性能などに影響を与えるため、マイクロプロセッサ負荷抑制は重要である。
本発明は、これらの問題を抑制することが可能であり、通信回線設備への追加投資の抑制や、コンピュータ装置の追加増強の抑制が可能となる利点を有する。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態による、データ送信側コンピュータ装置毎のライト保証レベルに応じたライト保証通知の選択出力機能を有するコンピュータシステムの構成を示すブロック図と、その動作シーケンス図である。本実施形態のコンピュータシステムは、通信回線13で互いに接続されたコンピュータ装置11と12からなり、コンピュータ装置11からコンピュータ装置12にRDMA Writeを行う例である。コンピュータ装置11は、iWARP処理機能を有する図5の従来例のコンピュータ装置51と同じコンピュータ装置である。また、コンピュータ装置12は、iWARP処理機能を有する本発明のコンピュータ装置である。
コンピュータ装置12はマイクロプロセッサ12−1とチップセット回路12−2とホストメモリ12−3とRDMA処理回路12−4とTCP処理回路12−5とIP処理回路12−6とイーサネット処理回路12−7とIPテーブル12−11とを有する。マイクロプロセッサ12−1にはアプリケーションプログラム12−8とMPI12−9とデバイスドライバ12−10とが搭載されている。IP処理回路12−6はIPテーブル12−11からIPアドレスに応じて予め定められたライト保証レベル信号(‘0’/‘1’)を読み出し、該ライト保証レベル信号をデータと並走させてRDMA処理回路12−4に入力する。ライト保証レベル信号は、ここでは、RDMA Writeに対してホストメモリのデータの正常性を確認した結果をRDMA Sendによって受信することでライト完了とする場合の第1のレベルを‘1’、TCP ACKでライト完了とみなす場合の第2のレベルを‘0’とするが、第1のレベルを‘0’とし第2のレベルを‘1’としても良い。本図の例では、コンピュータ装置11はRDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとする。そこでIPテーブル12−11には、コンピュータ装置11のIPアドレスに対するライト保証レベルは、‘0’(第2のレベル)を設定しておく。RDMA処理回路12−4は、チップセット回路12−2を経由してホストメモリ12−3の任意のアドレスにデータライトおよびデータリードが可能であり、また、チップセット回路12−2を経由してマイクロプロセッサ12−1と通信可能である。逆に、マイクロプロセッサ12−1からも、チップセット回路12−2経由でRDMA処理回路12−4と通信可能であるとともに、チップセット回路12−2経由でホストメモリ12−3の任意のアドレスにデータリードおよびデータライトが可能である。
コンピュータ装置11は、マイクロプロセッサ11−1とチップセット回路11−2とホストメモリ11−3とRDMA処理回路11−4とTCP処理回路11−5とIP処理回路11−6とイーサネット処理回路11−7とを有する。マイクロプロセッサ11−1にはアプリケーションプログラム11−8とMPI11−9とデバイスドライバ11−10とが搭載されている。RDMA処理回路11−4は、チップセット回路11−2を経由してホストメモリ11−3の任意のアドレスにデータライトおよびデータリードが可能であり、また、チップセット回路11−2を経由してマイクロプロセッサ11−1と通信可能である。逆に、マイクロプロセッサ11−1からも、チップセット回路11−2経由でRDMA処理回路11−4と通信可能であるとともに、チップセット回路11−2経由でホストメモリ11−3の任意のアドレスにデータリードおよびデータライトが可能である。
アプリケーションプログラム11−8と12−8は任意のアプリケーションプログラムであるが、他のコンピュータ装置との通信処理が必要なものとする。MPI11−9と12−9は、並列計算を行うためのメッセージ授受用ライブラリであり、並列計算以外の用途であればMPIのかわりにソケット通信ライブラリとする構成も可能である。デバイスドライバ11−10と12−10はそれぞれRDMA処理回路11−4と12−4とマイクロプロセッサの通信や制御、RDMA処理の一部分を行うプログラムである。
なお、ここでは、コンピュータ装置11からコンピュータ装置12に対して本発明に関するRDMA Writeを行うものとしている。コンピュータ装置12からコンピュータ装置11にRDMA Writeも可能であるが、これは図5の従来例のコンピュータ装置51と同じ動作になる。そこで、コンピュータ装置11も、コンピュータ装置12と同じ構成のコンピュータ装置に置き換えればコンピュータ装置12からコンピュータ装置11へのRDMA Writeも本発明の実施形態となるが、ここではその詳しい説明は省略する。
次に、本実施形態の動作を詳細に説明する。
ここで、コンピュータ装置11は、RDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとし、それ以上の確認手段を要求しないコンピュータ装置であるものとする。
上述のコンピュータ装置11と12の間で、ホストメモリ11−3の指定アドレスの内容を、RDMA Writeによりホストメモリ12−3の指定アドレスにコピーするものとする。アプリケーションプログラム11−8から、ホストメモリ11−3の任意領域に格納されたデータをコンピュータ装置12に対してライトする処理要求が発生すると、MPI11−9からライト要求メッセージ送信を行い、デバイスドライバ11−10およびチップセット回路11−2経由でRDMA処理回路11−4に、RDMA Write要求通知が転送される(ステップ101)。RDMA Write要求通知には、ホストメモリ11−3の何れの領域をコピーするかを示すアドレス情報も含まれている。
RDMA処理回路11−4は、チップセット回路11−2経由でホストメモリ11−3のアドレス情報で指定された領域のデータを読み出し、RDMA Writeメッセージを生成し、これをTCP処理回路11−5に送る(ステップ102)。TCP処理回路11−5では、RDMA WriteメッセージをTCPセグメントに整形し、IP処理回路11−6で装置毎に定められたIPアドレスの付加などのIPデータグラム生成を行い、イーサネット処理回路11−7でイーサネットフレームに整形して通信回線13に送出する(ステップ103)。イーサネット処理回路11−7の代わりに、他の通信方式の回路を用いてもよい。
通信回線13を通った該イーサネットフレームは、コンピュータ装置12のイーサネット処理回路12−7で受信され、IPデータグラムに戻される(ステップ104)。そしてIP処理回路12−6でTCPセグメントに戻されるが、あわせて該IPデータグラムに格納されたデータ送信側IPアドレスを読み出し、IPテーブル12−11を参照して、データ送信側コンピュータ装置11−1が要求するライト保証レベルを得る(ステップ105)。ここではコンピュータ装置11はライト保証レベルとしてTCP ACKで十分な装置であり、予め設定した値‘0’(第2のレベル)がIPテーブル12−11から読み出される。TCPセグメントはTCP処理回路12−5に送られて、RDMAメッセージに戻されるが、その際、TCPセグメントが正しく受信できているか調べ、正しく受信されているならばTCP処理回路12−5からコンピュータ装置11に該TCPセグメントに対するTCP ACKを返送する(ステップ106)。また、取り出されたRDMAメッセージは、RDMA処理回路12−4に転送される(ステップ107)。また、同時にIP処理回路12−6からライト保証レベル信号も並走してRDMA処理回路12−4に入力される(ステップ108)。
RDMAメッセージ(パケットに相当)フォーマットは、iWARP規定によりRDMA Write、RDMA Send、RDMA Readなどのオペレーションタイプ毎に定められ、RDMA処理回路12−4はオペレーションタイプを容易に認識可能である。メッセージがRDMA Writeならば、該メッセージ中のデータをチップセット回路12−2経由でホストメモリ12−3に書き込む(ステップ109)。なお、ホストメモリ12−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路11−4はMPI11−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明は省略する。このように、RDMA処理回路11−4がデバイスドライバ11−10からRDMA Write要求を受信した以降、マイクロプロセッサ11−1、12−1のどちらも使用せずホストメモリ11−3の内容をホストメモリ12−3にコピーする。ホストメモリ12−3へのデータライト終了後、RDMA処理回路12−4はチップセット回路12−2、デバイスドライバ12−10およびMPI12−9経由で、アプリケーションプログラム12−8にデータ引取り要求を発出し(ステップ110)、アプリケーションプログラム12−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路12−4は、デバイスドライバ12−10に対してデータ引取り要求を発出する際に、あわせてデータ送信側コンピュータ装置11のライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する。ここではコンピュータ装置11のライト保証レベル=‘0’であるので、デバイスドライバ12−10は何もせず、データ引取り要求をMPI12−9経由でアプリケーションプログラム12−8に転送するのみである(ステップ110)。
なお、TCP処理回路12−5から発出されたTCP ACKは、IP処理回路12−6、イーサネット処理回路12−7、通信回線13、イーサネット処理回路11−7、IP処理回路11−6経由でTCP処理回路11−5に転送され(ステップ106)、TCP処理回路11−5はTCP ACK受信完了信号をRDMA処理回路11−4に送付する(ステップ112)。
RDMA処理回路11−4は、該TCP ACKに対応するTCPセグメントのデータがホストメモリ12−3に正しくライトできたものとみなし、該TCP ACK受信完了信号をライト完了通知トリガとして、ライト完了通知をデバイスドライバ11−10に通知し(CQにライト完了通知を書き込む)、そしてデバイスドライバ11−10からMPI11−9経由で、アプリケーションプログラム11−8にライト完了が通知されて(ステップ113)、アプリケーションプログラム11−8は正しくRDMA Write完了したものと認識する。なお、TCP処理回路11−5は、TCP ACKが何れのTCPセグメントのACKかをTCPセグメント内のシーケンス番号から認識しており、また、RDMA処理回路11−4においてRDMA WriteメッセージとTCPセグメントの関連付けを管理して、何れのRDMA Writeメッセージがライト完了したのか判定可能である。
図2は図1の第1の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。
コンピュータ装置21は、iWARP処理機能を有する図6の従来例のコンピュータ装置61と同じコンピュータ装置である。また、コンピュータ装置12は、iWARP処理機能を有する本発明のコンピュータ装置である。そして、コンピュータ装置21は、RDMA Write時のデータ転送確認手段として、コンピュータ装置12でのホストメモリの確認まで要求するコンピュータ装置であるものとする。コンピュータ装置21はマイクロプロセッサ21−1とチップセット回路21−2とホストメモリ21−3とRDMA処理回路21−4とTCP処理回路21−5とIP処理回路21−6とイーサネット処理回路21−7とを有し、マイクロプロセッサ21−1にはアプリケーションプログラム21−8とMPI21−9とデバイスドライバ21−10が搭載されている。一方、コンピュータ装置12と通信回線13は、図1におけるものと同じである。
上述のコンピュータ装置21と12の間で、ホストメモリ21−3の指定アドレスの内容を、RDMA Writeによりホストメモリ12−3の指定アドレスにコピーするものとする。アプリケーションプログラム21−8から、ホストメモリ21−3の任意領域に格納されたデータをコンピュータ装置12に対してライトする処理要求が発生すると、MPI21−9からライト要求メッセージ送信を行い、デバイスドライバ21−10およびチップセット回路21−2経由でRDMA処理回路21−4にRDMA Write要求通知が転送される(ステップ101)。RDMA Write要求通知には、ホストメモリ21−3の何れの領域をコピーするかを示すアドレス情報も含まれている。
RDMA処理回路21−4は、チップセット回路21−2経由でホストメモリ21−3のアドレス情報で指定された領域のデータを読み出し、RDMA Writeメッセージを生成し、これをTCP処理回路21−5に送る(ステップ102)。TCP処理回路21−5では、RDMA WriteメッセージをTCPセグメントに整形し、IP処理回路21−6で装置毎に定められたIPアドレスの付加などのIPデータグラム生成を行う。そしてイーサネット処理回路21−7でイーサネットフレームに整形して通信回線13に送出する(ステップ103)。イーサネット処理回路21−7の代わりに他の通信方式の回路を用いてもよい。
通信回線13を通った該イーサネットフレームは、コンピュータ装置12のイーサネット処理回路12−7で受信されIPデータグラムに戻され(ステップ104)、IP処理回路12−6でTCPセグメントに戻されるが、あわせて該IPデータグラムに格納されたデータ送信側IPアドレスを読み出し、IPテーブル12−11を参照して、データ送信側コンピュータ装置12−11が要求するライト保証レベルを得る(ステップ105)。ここではコンピュータ装置21はデータライト保証レベルとしてホストメモリのデータ確認まで要求する装置であり、予め設定した値‘1’がIPテーブル12−11から読み出される。そして、図1の場合と同様の処理(ステップ106から108)の後、RDMA処理回路12−4からデータ内容がホストメモリ12−3に書き込まれる(ステップ109)。
ホストメモリ12−3へのデータライト終了後、RDMA処理回路12−4はチップセット回路12−2、デバイスドライバ12−10およびMPI12−9経由で、アプリケーションプログラム12−8にデータ引取り要求を発出し、あわせてデータ送信側コンピュータ装置21のライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する(ステップ110)。ここではコンピュータ装置21のライト保証レベル=‘1’であるので、デバイスドライバ12−10は該ライトされたデータの正常性確認をCRCチェックなどから実施し、該データ確認結果をチップセット回路12−2経由でRDMA処理回路12−4に通知する(ステップ111)。その際、デバイスドライバ12−10はデータ確認したメッセージのMSNもあわせてRDMA処理回路12−4に通知する。RDMA処理回路12−4はRDMA Sendメッセージを用いて、該データ確認結果(ライト完了通知)とMSNを、TCP処理回路12−5、IP処理回路12−6、イーサネット処理回路12−7、通信回線13、イーサネット処理回路21−7、IP処理回路21−6、TCP処理回路21−5経由でRDMA処理回路21−4に送付する(ステップ115)。
RDMA処理回路21−4は、受信MSN番号より、送信した何れのRDMA Writeメッセージに対するライト完了通知かを識別することが可能である。RDMA処理回路21−4は、TCP ACK受信完了信号によるライト完了通知と、該RDMA Sendによるライト完了の双方を受信したならば、正しくライトが完了したものと判断し、CQ経由でデバイスドライバ21−10に通知し、そしてデバイスドライバ21−10からMPI21−9経由で、アプリケーションプログラム21−8にライト完了が通知されて(ステップ116)、アプリケーションプログラム21−8は正しくRDMA Write完了したものと認識する。
本例は、デバイスドライバ12−10におけるデータ確認時間やRDMA Send時間が必要なため、アプリケーションプログラム21−8がライト完了を得るまで図1の場合よりも時間がかかるほか、デバイスドライバ12−10でのデータ確認により、図1の場合よりもマイクロプロセッサ12−1の負荷が増大する。しかしながら、コンピュータ装置内部で雑音等によってデータ誤りが発生し、ホストメモリに誤ったデータが書き込まれる可能性は、零ではない。したがって、TCP処理回路からホストメモリまでの区間でデータが誤り、ホストメモリにも誤ったデータが書き込まれる可能性も零ではない。そのため、金融系処理などの確実性を必要とする用途では、確実にホストメモリに正しくデータが書き込まれたことを保証したいという要求も存在する。その点、本例は、みなし方式ではなく実際にホストメモリ12−3までデータが正しく書き込まれたことを確認する方式であり、金融系メッセージのように、より確実性を求める場合に適する。
[第2の実施形態]
図1および図2の実施形態では、データ送信側コンピュータ装置11もしくは21毎にライト保証レベルを設定していたが、コンピュータ装置毎ではなく、サービス・アプリケーション毎にライト保証レベルを設定したい場合も存在する。ここでは、TCPや、TCPと同じくトランスポート層プロトコルの一つであるUDP(User Datagram Protocol)で使用されている、ポート番号を用いて、ポート番号毎にライト保証レベルを設定する例である。ポート番号は、TCPヘッダやUDPヘッダに定義された領域にてデータ送信側からデータ受信側に転送されるもので、該TCPセグメントやUDPデータグラムに格納されたデータが使用されるサービス・アプリケーションの種別を示す。その値は、サービスやアプリケーション毎に、全世界共通的に規定されている。図11はTCPセグメントのフォーマット図であり、32ビットを1ワードとして、TCPヘッダの1ワード目にポート番号領域がある。ポート番号は、例えばWWWに用いられるhttpでは80、セキュリティ機能付きWWWに用いられるhttpsでは443、メール受信に用いられるpop3では110、ファイル転送に用いられるftpでは21などである。
図3は、本発明の第2の実施形態による、TCPのポート番号別に設定した、ライト保証レベルに応じたライト保証通知の選択出力機能を有する、コンピュータシステムの構成を示すブロック図と、その動作シーケンス図である。本実施形態のコンピュータシステムは、通信回線33で接続されたコンピュータ装置31と32からなり、コンピュータ装置31はiWARP処理機能を有する本発明のコンピュータ装置、コンピュータ装置32は、iWARP処理機能を有する本発明のコンピュータ装置である。コンピュータ装置31と32は、通信回線33を通して通信を行う。ここでは、コンピュータ装置31から32に対して本発明に関するRDMA Writeを行うものとする。コンピュータ装置32から31にRDMA Writeを行う場合は省略している。また、コンピュータ装置31で使用しているアプリケーションプログラム31−8は、RDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとし、それ以上の確認手段を要求しないアプリケーションであるものとする。
コンピュータ装置32はマイクロプロセッサ32−1とチップセット回路32−2とホストメモリ32−3とRDMA処理回路32−4とTCP処理回路32−5とIP処理回路32−6とイーサネット処理回路32−7とポート番号テーブル32−11とを有する。マイクロプロセッサ32−1にはアプリケーションプログラム32−8とMPI32−9とデバイスドライバ32−10とが搭載されている。TCP処理回路32−5はサービス・アプリケーション種別を示すポート番号別に予め定めたライト保証レベル信号(‘0’/‘1’)をポート番号テーブル32−11から読み出し、該ライト保証レベル信号をデータと並走させてRDMA処理回路32−4に入力する。RDMA処理回路32−4は、チップセット回路32−2を経由してホストメモリ32−3の任意のアドレスにデータライトおよびデータリードが可能であり、また、チップセット回路32−2を経由してマイクロプロセッサ32−1と通信可能である。逆に、マイクロプロセッサ32−1からも、チップセット回路32−2経由でRDMA処理回路32−4と通信可能であるとともに、チップセット回路32−2経由でホストメモリ32−3の任意のアドレスにデータリードおよびデータライトが可能である。
コンピュータ装置31は、iWARP処理機能を有する本発明のコンピュータ装置であり、マイクロプロセッサ31−1とチップセット回路31−2とホストメモリ31−3とRDMA処理回路31−4とTCP処理回路31−5とIP処理回路31−6とイーサネット処理回路31−7とを有する。マイクロプロセッサ31−1にはアプリケーションプログラム31−8とMPI31−9とデバイスドライバ31−10とが搭載されている。また、RDMA処理回路31−4はポート番号テーブル31−11と接続されている。ポート番号テーブル31−11には、サービス・アプリケーション種別を示すポート番号別に、ライト保証レベル(‘0’/‘1’)が予め設定されており、また、RDMA Writeメッセージ毎にそのメッセージ番号MSNとポート番号の関係を記憶している。ライト保証レベル信号は、ここでは、RDMA Writeに対してホストメモリのデータの正常性を確認した結果をRDMA Sendによって受信することでライト完了とする場合の第1のレベルを‘1’、TCP ACKでライト完了とみなす場合の第2のレベルを‘0’とするが、第1のレベルを‘0’とし第2のレベルを‘1’としても良い。そして、データ送信側のポート番号テーブル31−11とデータ受信側のポート番号テーブル32−11には、予め各ポート番号に対するライト保証レベルを設定しておく。両ポート番号テーブルでは、同一ポート番号に対するライト保証レベルの設定は一致させておく。本図では、アプリケーションプログラム31−8が出力するメッセージはRDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとする。その出力メッセージのポート番号は、ポート番号テーブル31−11、32−11ではライト保証レベル=‘0’(第2のレベル)のもののみである。なお、RDMA処理回路31−4は、チップセット回路31−2を経由してホストメモリ31−3の任意のアドレスにデータライトおよびデータリードが可能であり、また、チップセット回路31−2を経由してマイクロプロセッサ31−1と通信可能である。逆に、マイクロプロセッサ31−1も、チップセット回路31−2経由でRDMA処理回路31−4と通信可能であるとともに、チップセット回路31−2経由でホストメモリ31−3の任意のアドレスにデータリードおよびデータライトが可能である。
アプリケーションプログラム31−8と32−8は任意のアプリケーションプログラムであるが、他のコンピュータ装置との通信処理が必要なものとする。MPI31−9と32−9は、並列計算を行うためのメッセージ授受用ライブラリであり、並列計算以外の用途であればMPIのかわりにソケット通信ライブラリとする構成も可能である。デバイスドライバ31−10と32−10は、それぞれRDMA処理回路31−4と32−4とマイクロプロセッサの通信や制御、RDMA処理の一部分を行うプログラムである。
上述のコンピュータ装置31と32の間で、ホストメモリ31−3の指定アドレスの内容を、RDMA Writeでホストメモリ32−3の指定アドレスにコピーするものとする。アプリケーションプログラム31−8から、ホストメモリ31−3の任意の領域に格納されたデータをコンピュータ装置32に対してライトする処理要求が発生すると、MPI31−9からライト要求メッセージ送信を行い、デバイスドライバ31−10およびチップセット回路31−2経由でRDMA処理回路31−4に、RDMA Write要求通知が転送される(ステップ201)。RDMA Write要求通知には、ホストメモリ31−3の何れの領域をコピーするかを示すアドレス情報も含まれている。
RDMA処理回路31−4は、チップセット回路31−2経由でホストメモリ31−3のアドレス情報で指定された領域のデータを読み出し、RDMA Writeメッセージを生成し、これをTCP処理回路31−5に送る(ステップ202)。同時に該RDMAメッセージのメッセージ番号MSNをポート番号テーブル31−11に書き込み、MSNとポート番号およびそのライト保証レベルの関連付けを記憶する。なお、RDMA Writeメッセージのサービス・アプリケーション種別を示すポート番号は、メッセージ毎にデバイスドライバ31−10経由でアプリケーションプログラム31−8から通知されるものとする。
TCP処理回路31−5では、RDMA WriteメッセージをTCPセグメントに整形し、IP処理回路31−6で装置毎に定められたIPアドレスの付加などのIPデータグラム生成を行い、イーサネット処理回路31−7でイーサネットフレームに整形し、通信回線33に送出する(ステップ203)。イーサネット処理回路31−7の代わりに、他の通信方式の回路を用いてもよい。
通信回線33を通った該イーサネットフレームは、コンピュータ装置32のイーサネット処理回路32−7で受信され、IPデータグラムに戻される(ステップ204)。そしてIP処理回路32−6でTCPセグメントに戻され、TCP処理回路32−5に送られ、RDMAメッセージに戻される(ステップ205)。その際、TCPセグメントが正しく受信できているか調べ、正常に受信できているならば、TCP処理回路32−5からコンピュータ装置31に該TCPセグメントに対するTCP ACKを返送する(ステップ206)。あわせて該TCPセグメントに格納されたサービス・アプリケーション種別を示すポート番号を読み出し、ポート番号テーブル32−11を参照して、該ポート番号が要求するライト保証レベルを得る(ステップ207)。ここでは該ポート番号はデータライト保証レベルとしてTCP ACKで十分なものであり、予め設定した値‘0’(第2のレベル)がポート番号テーブル32−11から読み出される。
RDMAメッセージはRDMA処理回路32−4に転送され、また、同時にIP処理回路32−6からライト保証レベル信号も並走してRDMA処理回路32−4に入力される(ステップ208)。RDMA処理回路32−4は入力メッセージがRDMA Writeならば、該メッセージ中のデータをチップセット回路32−2経由でホストメモリ32−3に書き込む(ステップ209)。なお、メモリ32−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路31−4はMPI31−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明を省略する。
このように、RDMA処理回路31−4がデバイスドライバ31−10からRDMA Write要求を受信した以降、マイクロプロセッサ31−1、32−1のどちらも使用せずホストメモリ31−3の内容をホストメモリ32−3にコピーする。ホストメモリ32−3へのデータライト終了後、RDMA処理回路32−4はチップセット回路32−2、デバイスドライバ32−10およびMPI32−9経由で、アプリケーションプログラム32−8にデータ引取り要求を発出し(ステップ210)、アプリケーションプログラム32−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路32−4は、デバイスドライバ32−10に対してデータ引取り要求を発出する際に、あわせてデータ送信側コンピュータ装置31のライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する。ここではコンピュータ装置31のライト保証レベル=‘0’(第2のレベル)であるので、デバイスドライバ32−10は何もせず、データ引取り要求をMPI32−9経由でアプリケーションプログラム32−8に転送するのみである。
なお、TCP処理回路32−5から発出されたTCP ACKは、IP処理回路32−6、イーサネット処理回路32−7、通信回線33、イーサネット処理回路31−7、IP処理回路31−6経由でTCP処理回路31−5に転送され(ステップ206)、TCP処理回路31−5はTCP ACK受信完了信号をRDMA処理回路31−4に送付する(ステップ211)。
TCP ACKにもポート番号は格納されている。そこで、RDMA処理回路31−4はポート番号テーブル31−11を参照し、該ポート番号のサービス・アプリケーションのライト保証レベル情報を得る。本図の例ではTCP ACKでライト完了とみなす‘0’であるため、RDMA処理回路31−4は、該TCP ACK受信完了信号をライト完了通知トリガとして、ライト完了通知をデバイスドライバ31−10に通知し(CQにライト完了通知を書き込む)、デバイスドライバ31−10からMPI31−9、アプリケーションプログラム31−8にライト完了が通知されて(ステップ212)、アプリケーションプログラム31−8は正しくRDMA Write完了したものと認識する。
なお、TCP処理回路31−5は、TCP ACKが何れのTCPセグメントのACKかをTCPセグメント内のシーケンス番号から認識しており、また、RDMA処理回路31−4においてRDMA WriteメッセージとTCPセグメントの関連付けを管理して、何れのRDMA Writeメッセージがライト完了したのかを判定可能である。
図4は、図3の第2の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。
本実施形態は、図3の実施形態と同様に、サービス・アプリケーション種別を示すポート番号を用いて、ポート番号毎にライト保証レベルを設定する例であり、アプリケーションがTCP ACKよりも確実な手段として、データ受信側コンピュータ装置のホストメモリにまで確実にライトされたことの確認を要求する場合である。
コンピュータ装置41は、図3のコンピュータ装置31とは、アプリケーションプログラム41−8が、RDMA Write時にコンピュータ装置32のホストメモリ32−3まで確実に書き込まれたことのデータ確認を要求する、確実性を要求するアプリケーションである点が、異なる。なお、コンピュータ装置32と通信回線33は、図3の実施形態と同じである。コンピュータ装置41のチップセット回路31−2、ホストメモリ31−3、RDMA処理回路31−4、TCP処理回路31−5、IP処理回路31−6、イーサネット処理回路31−7、MPI31−9、デバイスドライバ31−10、ポート番号テーブル31−11は、図3コンピュータ装置31の同じ参照番号のものと同じである。データ送信側のポート番号テーブル31−11には、サービス・アプリケーション種別を示すポート番号毎にライト保証レベル(‘0’/‘1’)を設定しておく。データ受信側のポート番号テーブル32−11にもポート番号に対するライト保証レベル(‘0’/‘1’)を設定しておく。そして、両ポート番号テーブルでは、同一アプリケーションのライト保証レベル設定は一致させておく。本図では、アプリケーションプログラム41−8の出力メッセージは、RDMA Write時のデータ転送確認手段として、ホストメモリ確認後のRDMA Sendによりライト完了確認を行うものとする。その出力メッセージのポート番号は、ポート番号テーブル31−11、32−11ではライト保証レベル=‘1’(第1のレベル)のもののみである。
上述のコンピュータ装置41と32の間で、ホストメモリ31−3の指定アドレスの内容を、RDMA Writeによりホストメモリ32−3の指定アドレスにコピーするものとする。アプリケーションプログラム41−8から、ホストメモリ31−3の任意領域に格納されたデータをコンピュータ装置32に対してライトする処理要求が発生し、TCP処理回路32−5でTCPセグメントを受信するまでの動作(ステップ201から205)は、図3の場合と全く同じである。TCPセグメントはTCP処理回路32−5に送られて、RDMAメッセージに戻される。その際、TCPセグメントが正しく受信できているか調べ、正常に受信できているならば、TCP処理回路32−5からコンピュータ装置31に該TCPセグメントに対するTCP ACKを返送する(ステップ206)。あわせて該TCPセグメントに格納されたサービス・アプリケーション種別を示すポート番号を読み出し、ポート番号テーブル32−11を参照して、該ポート番号が要求するライト保証レベルを得る(ステップ207)。ここでは該ポート番号はデータライト保証レベルとしてホストメモリのデータ確認まで要求するものであり、予め設定した値‘1’(第1のレベル)がポート番号テーブル32−11から読み出される。
RDMAメッセージはRDMA処理回路32−4に転送される。また、同時にIP処理回路32−6からライト保証レベル信号も並走してRDMA処理回路32−4に入力される(ステップ208)。RDMA処理回路32−4は入力メッセージがRDMA Writeならば、該メッセージ中のデータをチップセット回路32−2経由でホストメモリ32−3に書き込む(ステップ209)。なお、ホストメモリ32−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路31−4はMPI31−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明は省略する。このように、RDMA処理回路31−4がデバイスドライバ31−10からRDMA Write要求を受信した以降、マイクロプロセッサ31−1、32−1のどちらも使用せずホストメモリ31−3の内容を32−3にコピーする。ホストメモリ32−3へのデータライト終了後、RDMA処理回路32−4はチップセット回路32−2、デバイスドライバ32−10およびMPI32−9経由で、アプリケーションプログラム32−8にデータ引取り要求を発出し(ステップ210)、アプリケーションプログラム32−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路32−4は、デバイスドライバ32−10に対しデータ引取り要求を発出する際に、あわせてデータ送信側コンピュータ装置31のライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する。ここではコンピュータ装置31のライト保証レベル=‘1’であるので、デバイスドライバ32−10は該ライトされたデータの正常性確認をCRCチェックなどから実施し、該データ確認結果をチップセット回路32−2経由でRDMA処理回路32−4に通知する。その際、デバイスドライバ32−10はデータ確認したメッセージのMSNもあわせてRDMA処理回路32−4に通知する(ステップ214)。RDMA処理回路32−4はRDMA Sendメッセージを用いて、該データ確認結果(ライト完了通知)とMSNを、IP処理回路32−6、イーサネット処理回路32−7、通信回線33、イーサネット処理回路31−7、IP処理回路31−6、TCP処理回路31−5経由でRDMA処理回路31−4に送付する(ステップ215)。
なお、TCP処理回路32−5から発出されたTCP ACKは、IP処理回路32−6、イーサネット処理回路32−7、通信回線33、イーサネット処理回路31−7、IP処理回路31−6経由でTCP処理回路31−5に転送され(ステップ206、207)、TCP処理回路31−5はTCP ACK受信完了信号をRDMA処理回路31−4に送付する(ステップ213)。TCP ACKにもポート番号は格納されており、RDMA処理回路31−4はポート番号テーブル31−11を参照し、該ポート番号のサービス・アプリケーションのライト保証レベル情報を得る。ここでは、RDMA Sendによるライト完了通知によってライト完了とみなす‘1’であるため、RDMA処理回路31−4は、デバイスドライバ31−10には何も通知せず、RDMA Sendによるライト完了通知の転送を待つ。
RDMA処理回路31−4は、該TCP ACK受信完了信号のほかに、RDMA Sendメッセージによるライト完了通知を受信すると、該RDMA Sendメッセージ中のメッセージ番号MSNを読み出し、該MSNのライト保証レベルを、ポート番号テーブル31−11を参照して得、その結果が‘1’であることを確認し、つまり、ホストメモリのデータ確認を要求するサービス・アプリケーションにおいて、その正常性を示すRDMA Sendによるライト完了通知を受け取ったと判断することによって、該MSNを持つRDMA Writeメッセージのライト完了通知をデバイスドライバ31−10に通知し、デバイスドライバ31−10からMPI31−9、アプリケーションプログラム41−8にライト完了は通知されて(ステップ216)、アプリケーションプログラム41−8は正しくRDMA Write完了したものと認識する。
本例は、デバイスドライバ32−10におけるデータ確認時間やRDMA Send時間が必要なため、アプリケーションプログラム41−8がライト完了を得るまで図3の場合よりも時間がかかるほか、デバイスドライバ32−10でのデータ確認により、図3の場合よりもマイクロプロセッサ32−1の負荷が増大する。しかしながら、コンピュータ装置内部で雑音等によってデータ誤りが発生し、ホストメモリに誤ったデータが書き込まれる可能性は、零ではない。したがって、TCP処理回路からホストメモリまでの区間でデータが誤り、ホストメモリにも誤ったデータが書き込まれる可能性も零ではない。そのため、金融系処理などの確実性を必要とする用途では、確実にホストメモリに正しくデータが書き込まれたことを保証したいという要求も存在する。その点、本例は、みなし方式ではなく実際にホストメモリ32−3までデータが正しく書き込まれたことを確認する方式であり、金融系メッセージのように、より確実性を求める場合に適する。
[第3の実施形態]
図1および図2の実施形態は、データ送信側コンピュータ装置毎のライト要求レベルの設定であり、図3および図4の実施形態はサービス・アプリケーションを示すポート番号毎のライト要求レベルの設定であるが、さらに、データ送信側コンピュータ装置毎にポート番号別のライト保証レベルを設定することで、データ送信側コンピュータ装置のサービス・アプリケーション別のライト完了確認の選択設定を行うことも可能である。ここでは、IPアドレスと、サービス・アプリケーション種別を示すポート番号を用いて、データ送信側コンピュータ装置別に、ポート番号毎にライト保証レベルを設定する例である。
図8は、本発明の第3の実施形態による、データ送信側コンピュータ装置別にTCPのポート番号別に設定した、ライト保証レベルに応じたライト保証通知の選択出力機能を有する、コンピュータシステムの構成を示すブロック図と、その動作シーケンス図である。本実施形態のコンピュータシステムは、通信回線83で接続されたコンピュータ装置81と82からなり、コンピュータ装置81はiWARP処理機能を有する本発明のコンピュータ装置、コンピュータ装置82は、iWARP処理機能を有する本発明のコンピュータ装置である。コンピュータ装置81と82は、通信回線83を通して通信を行う。ここでは、コンピュータ装置81から82に対して本発明に関するRDMA Writeを行うものとする。コンピュータ装置82から81にRDMA Writeを行う場合は省略している。また、コンピュータ装置81で使用しているアプリケーションプログラム81−8は、RDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとし、それ以上の確認手段を要求しないアプリケーションであるものとする。
コンピュータ装置82はマイクロプロセッサ82−1とチップセット回路82−2とホストメモリ82−3とRDMA処理回路82−4とTCP処理回路82−5とIP処理回路82−6とイーサネット処理回路82−7とIP・ポート番号テーブル82−11とを有する。マイクロプロセッサ82−1にはアプリケーションプログラム82−8とMPI82−9とデバイスドライバ82−10とが搭載されている。IP処理回路82−6は受信IPデータグラムのIPアドレスをTCP処理回路82−5に通知し、TCP処理回路82−5は該IPアドレスと該TCPセグメントのポート番号とから、予め定めたライト保証レベル信号(‘0’/‘1’)をIP・ポート番号テーブル82−11より読み出し、該ライト保証レベル信号をデータと並走させてRDMA処理回路82−4に入力する。RDMA処理回路82−4は、チップセット回路82−2を経由してホストメモリ82−3の任意のアドレスにデータライトおよびデータリードが可能であり、また、チップセット回路82−2を経由してマイクロプロセッサ82−1と通信可能である。逆に、マイクロプロセッサ82−1からも、チップセット回路82−2経由でRDMA処理回路82−4と通信可能であるとともに、チップセット回路82−2経由でホストメモリ82−3の任意のアドレスにデータリードおよびデータライトが可能である。
図10はIP・ポート番号テーブル82−11の構成例を説明する図である。データ送信側コンピュータ装置を示すIPアドレス毎に、サービス・アプリケーション種別を示すポート番号とそれに対するライト保証レベル(‘0’/‘1’)を保持している。これらは予め設定する。各データ送信側コンピュータ装置のポート番号テーブル81−11と、同一ポート番号に対する設置値は一致させておく。IP・ポート番号テーブル82−11に、受信IPデータグラムのIPアドレスと、格納されているTCPセグメントのポート番号を与えることで、データ送信側コンピュータ別のポート番号毎のライト保証レベルを得ることができる。
図8で、コンピュータ装置81は、iWARP処理機能を有する本発明のコンピュータ装置であり、マイクロプロセッサ81−1とチップセット回路81−2とホストメモリ81−3とRDMA処理回路81−4とTCP処理回路81−5とIP処理回路81−6とイーサネット処理回路81−7とを有する。マイクロプロセッサ81−1にはアプリケーションプログラム81−8とMPI81−9とデバイスドライバ81−10とが搭載されている。また、RDMA処理回路81−4はポート番号テーブル81−11と接続されている。ポート番号テーブル81−11には、サービス・アプリケーション種別を示すポート番号別に、ライト保証レベル(‘0’/‘1’)が予め設定されており、また、RDMA Writeメッセージ毎にそのメッセージ番号MSNとポート番号の関係を記憶している。ライト保証レベル信号は、ここでは、RDMA Writeに対してホストメモリのデータの正常性を確認した結果をRDMA Sendによって受信することでライト完了とする場合の第1のレベルを‘1’、TCP ACKでライト完了とみなす場合の第2のレベルを‘0’とするが、第1のレベルを‘0’とし第2のレベルを‘1’としても良い。本図では、アプリケーションプログラム81−8が出力するメッセージはRDMA Write時のデータ転送確認手段として、TCP ACKで十分なものとし、アプリケーションプログラム81−8の出力メッセージのポート番号は、ポート番号テーブル81−11ではライト保証レベル=‘0’(第2のレベル)のものとする。なお、RDMA処理回路81−4は、チップセット回路81−2を経由してホストメモリ81−3の任意のアドレスにデータライトおよびデータリード可能であり、また、チップセット回路81−2を経由してマイクロプロセッサ81−1と通信可能である。逆に、マイクロプロセッサ81−1も、チップセット回路81−2経由でRDMA処理回路81−4と通信可能であるとともに、チップセット回路81−2経由でホストメモリ81−3の任意のアドレスにデータリードおよびデータライト可能である。
アプリケーションプログラム81−8と82−8は任意のアプリケーションプログラムであるが、他のコンピュータ装置との通信処理が必要なものとする。MPI81−9と82−9は、並列計算を行うためのメッセージ授受用ライブラリであり、並列計算以外の用途であればMPIのかわりにソケット通信ライブラリとする構成も可能である。デバイスドライバ81−10と82−10は、それぞれRDMA処理回路81−4と82−4とマイクロプロセッサの通信や制御、RDMA処理の一部分を行うプログラムである。
上述のコンピュータ装置81と82の間で、ホストメモリ81−3の指定アドレスの内容を、RDMA Writeでホストメモリ82−3の指定アドレスにコピーするものとする。アプリケーションプログラム81−8から、ホストメモリ81−3の任意の領域に格納されたデータをコンピュータ装置82に対してライトする処理要求が発生すると、MPI81−9からライト要求メッセージ送信を行い、デバイスドライバ81−10およびチップセット回路81−2経由でRDMA処理回路81−4に、RDMA Write要求通知が転送される(ステップ401)。RDMA Write要求通知には、ホストメモリ81−3の何れの領域をコピーするかを示すアドレス情報も含まれている。
RDMA処理回路81−4は、チップセット回路81−2経由でホストメモリ81−3のアドレス情報で指定された領域のデータを読み出し、RDMA Writeメッセージを生成し、これをTCP処理回路81−5に送る(ステップ402)。同時に該RDMAメッセージのメッセージ番号MSNをポート番号テーブル81−11に書き込み、MSNとポート番号およびそのライト保証レベルの関連付けを記憶する。なお、RDMA Writeメッセージのサービス・アプリケーション種別を示すポート番号は、メッセージ毎にデバイスドライバ81−10経由でアプリケーションプログラム81−8から通知されるものとする。
TCP処理回路81−5では、RDMA WriteメッセージをTCPセグメントに整形し、IP処理回路81−6で装置毎に定められたIPアドレスの付加などのIPデータグラム生成を行い、イーサネット処理回路81−7でイーサネットフレームに整形し、通信回線83に送出する(ステップ403)。イーサネット処理回路81−7の代わりに、他の通信方式の回路を用いてもよい。
通信回線83を通った該イーサネットフレームは、コンピュータ装置82のイーサネット処理回路82−7で受信され、IPデータグラムに戻される(ステップ404)。そしてIP処理回路82−6でTCPセグメントに戻され、TCP処理回路82−5に送られ、RDMAメッセージに戻される(ステップ405)。その際、TCPセグメントが正しく受信できているか調べ、正常に受信できているならば、TCP処理回路82−5からコンピュータ装置81に該TCPセグメントに対するTCP ACKを返送する(ステップ406)。あわせて該TCPセグメントに格納されたサービス・アプリケーション種別を示すポート番号を読み出し、IP処理回路82−6で読み出したIPアドレスとから、IP・ポート番号テーブル82−11を参照して、該データ送信側コンピュータ装置の該ポート番号が要求するライト保証レベルを得る(ステップ407)。ここでは該ポート番号はライト保証レベルとしてTCP ACKで十分なものであり、予め設定した値‘0’(第2のレベル)がIP・ポート番号テーブル82−11から読み出される。
RDMAメッセージはRDMA処理回路82−4に転送され、また、同時にIP処理回路82−6からライト保証レベル信号も並走してRDMA処理回路82−4に入力される(ステップ408)。RDMA処理回路82−4は入力メッセージがRDMA Writeならば、該メッセージ中のデータをチップセット回路82−2経由でホストメモリ82−3に書き込む(ステップ409)。なお、メモリ82−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路81−4はMPI81−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明を省略する。
このように、RDMA処理回路81−4がデバイスドライバ81−10からRDMA Write要求を受信した以降、マイクロプロセッサ81−1、82−1のどちらも使用せずホストメモリ81−3の内容をホストメモリ82−3にコピーする。ホストメモリ82−3へのデータライト終了後、RDMA処理回路82−4はチップセット回路82−2、デバイスドライバ82−10およびMPI82−9経由で、アプリケーションプログラム82−8にデータ引取り要求を発出し(ステップ410)、アプリケーションプログラム82−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路82−4は、デバイスドライバ82−10に対してデータ引取り要求を発出する際に、あわせて該データのライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する。ここではコンピュータ装置81の該ポート番号のライト保証レベル=‘0’であるので、デバイスドライバ82−10は何もせず、データ引取り要求をMPI82−9経由でアプリケーションプログラム82−8に転送するのみである。
なお、TCP処理回路82−5から発出されたTCP ACKは、IP処理回路82−6、イーサネット処理回路82−7、通信回線83、イーサネット処理回路81−7、IP処理回路81−6経由でTCP処理回路81−5に転送され(ステップ406)、TCP処理回路81−5はTCP ACK受信完了信号をRDMA処理回路81−4に送付する(ステップ411)。
TCP ACKにもポート番号は格納されている。そこで、RDMA処理回路81−4はポート番号テーブル81−11を参照し、該ポート番号のサービス・アプリケーションのライト保証レベル情報を得る。その結果が‘0’ならば、RDMA処理回路31−4は、該TCP ACK受信完了信号をライト完了通知トリガとして、ライト完了通知をデバイスドライバ31−10に通知し(CQにライト完了通知を書き込む)、一方‘1’ならば、RDMA処理回路31−4は、デバイスドライバ31−10には何も通知せず、RDMA Sendによるライト完了通知を待つ。本図では‘0’であるため、RDMA処理回路81−4は、該TCP ACK受信完了信号をライト完了通知トリガとして、ライト完了通知をデバイスドライバ81−10に通知し(CQにライト完了通知を書き込む)、デバイスドライバ81−10からMPI81−9、アプリケーションプログラム81−8にライト完了が通知されて(ステップ412)、アプリケーションプログラム81−8は正しくRDMA Write完了したものと認識する。
なお、TCP処理回路81−5は、TCP ACKが何れのTCPセグメントのACKかをTCPセグメント内のシーケンス番号から認識しており、また、RDMA処理回路81−4においてRDMA WriteメッセージとTCPセグメントの関連付けを管理して、何れのRDMA Writeメッセージがライト完了したのかを判定可能である。
図9は、図8の第3の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。
本実施形態は、図8の実施形態と同様に、IPアドレスとサービス・アプリケーション種別を示すポート番号を用いて、データ送信側コンピュータ装置別にポート番号毎にライト保証レベルを設定する例であり、アプリケーションがTCP ACKよりも確実な手段として、データ受信側コンピュータ装置のホストメモリにまで確実にライトされたことの確認を要求する場合である。
コンピュータ装置91は、図8のコンピュータ装置81とは、アプリケーションプログラム91−8が、RDMA Write時にコンピュータ装置82のホストメモリ82−3まで確実に書き込まれたことのデータ確認を要求する、確実性を要求するアプリケーションである点が、異なる。なお、コンピュータ装置82と通信回線83は、図8の実施形態と同じである。コンピュータ装置91のチップセット回路81−2、ホストメモリ81−3、RDMA処理回路81−4、TCP処理回路81−5、IP処理回路81−6、イーサネット処理回路81−7、MPI81−9、デバイスドライバ81−10、ポート番号テーブル81−11は、図8コンピュータ装置81の同じ参照番号のものと同じである。IP・ポート番号テーブル82−11には、データ送信側コンピュータ装置を示すIPアドレス別に、サービス・アプリケーション種別を示すポート番号とそれに対するライト保証レベル(‘0’/‘1’)を設定しておく。ポート番号テーブル81−11にもポート番号とそれに対するライト保証レベル(‘0’/‘1’)を設定しておく。そして、ポート番号テーブル81−11とIP・ポート番号テーブル82−11では、同一ポート番号のライト保証レベル設定は一致させておく。本図では、アプリケーションプログラム91−8の出力メッセージは、RDMA Write時のデータ転送確認手段として、ホストメモリ確認後のRDMA Sendによりライト完了確認を行うものとする。その出力メッセージのポート番号は、ポート番号テーブル81−11ではライト保証レベル=‘1’(第1のレベル)のものとする。
上述のコンピュータ装置91と82の間で、ホストメモリ81−3の指定アドレスの内容を、RDMA Writeによりホストメモリ82−3の指定アドレスにコピーするものとする。アプリケーションプログラム91−8から、ホストメモリ81−3の任意領域に格納されたデータをコンピュータ装置82に対してライトする処理要求が発生し、TCP処理回路82−5でTCPセグメントを受信するまでの動作(ステップ401から405)は、図8の場合と全く同じである。TCPセグメントはTCP処理回路82−5に送られて、RDMAメッセージに戻される。その際、TCPセグメントが正しく受信できているか調べ、正常に受信できているならば、TCP処理回路82−5からコンピュータ装置81に該TCPセグメントに対するTCP ACKを返送する(ステップ406)。あわせて該TCPセグメントに格納されたサービス・アプリケーション種別を示すポート番号を読み出し、IP処理回路82−6で読み出したIPアドレスとから、IP・ポート番号テーブル82−11を参照して、該ポート番号が要求するライト保証レベルを得る(ステップ407)。ここでは該ポート番号はデータライト保証レベルとしてホストメモリのデータ確認まで要求するものであり、予め設定した値‘1’がIP・ポート番号テーブル82−11から読み出される。
RDMAメッセージはRDMA処理回路82−4に転送される。また、同時にIP処理回路82−6からライト保証レベル信号も並走してRDMA処理回路82−4に入力される(ステップ408)。RDMA処理回路82−4は入力メッセージがRDMA Writeならば、該メッセージ中のデータをチップセット回路82−2経由でホストメモリ82−3に書き込む(ステップ409)。なお、ホストメモリ82−3へのライトアドレス情報は該RDMA Writeメッセージに格納されており、これは予め互いのMPI間で情報交換を行い、RDMA処理回路81−4はMPI81−9から通知されている。該MPIのアドレス情報交換方法はMPI毎に決まるものであり、本発明とは直接、関係しないためここではその説明は省略する。このように、RDMA処理回路81−4がデバイスドライバ81−10からRDMA Write要求を受信した以降、マイクロプロセッサ81−1、82−1のどちらも使用せずホストメモリ81−3の内容を82−3にコピーする。ホストメモリ82−3へのデータライト終了後、RDMA処理回路82−4はチップセット回路82−2、デバイスドライバ82−10およびMPI82−9経由で、アプリケーションプログラム82−8にデータ引取り要求を発出し(ステップ410)、アプリケーションプログラム82−8はデータコピーされたことを認識し、該データを読み出して利用することが可能になる。
RDMA処理回路82−4は、デバイスドライバ82−10に対しデータ引取り要求を発出する際に、あわせて該データのライト保証レベル信号と、RDMA Writeメッセージのメッセージ番号MSNも通知する。ここではライト保証レベル=‘1’(第1のレベル)であるので、デバイスドライバ82−10は該ライトされたデータの正常性確認をCRCチェックなどから実施し、該データ確認結果をチップセット回路82−2経由でRDMA処理回路82−4に通知する。その際、デバイスドライバ82−10はデータ確認したメッセージのMSNもあわせてRDMA処理回路82−4に通知する(ステップ414)。RDMA処理回路82−4はRDMA Sendメッセージを用いて、該データ確認結果(ライト完了通知)とMSNを、IP処理回路82−6、イーサネット処理回路82−7、通信回線83、イーサネット処理回路81−7、IP処理回路81−6、TCP処理回路81−5経由でRDMA処理回路81−4に送付する(ステップ415)。
なお、TCP処理回路82−5から発出されたTCP ACKは、IP処理回路82−6、イーサネット処理回路82−7、通信回線83、イーサネット処理回路81−7、IP処理回路81−6経由でTCP処理回路81−5に転送され(ステップ406、407)、TCP処理回路81−5はTCP ACK受信完了信号をRDMA処理回路81−4に送付する(ステップ413)。
TCP ACKにもポート番号は格納されている。そこで、RDMA処理回路81−4はポート番号テーブル81−11を参照し、該ポート番号のサービス・アプリケーションのライト保証レベル情報を得る。その結果が‘0’ならば、RDMA処理回路31−4は、該TCP ACK受信完了信号をライト完了通知トリガとして、ライト完了通知をデバイスドライバ31−10に通知し(CQにライト完了通知を書き込む)、一方‘1’ならば、RDMA処理回路31−4は、デバイスドライバ31−10には何も通知せず、RDMA Sendによるライト完了通知を待つ。本図では‘1’であるため、RDMA処理回路81−4は、RDMA処理回路81−4には何も通知せず、RDMA Sendによるライト完了通知の転送を待つ。
RDMA処理回路81−4は、該TCP ACK受信完了信号のほかに、RDMA Sendメッセージによるライト完了通知を受信すると、該RDMA Sendメッセージ中のメッセージ番号MSNを読み出し、該MSNのライト保証レベルを、ポート番号テーブル81−11を参照して得、その結果が‘1’であることを確認し、つまり、ホストメモリのデータ確認を要求するサービス・アプリケーションにおいて、その正常性を示すRDMA Sendによるライト完了通知を受け取ったと判断することによって、該MSNを持つRDMA Writeメッセージのライト完了通知をデバイスドライバ81−10に通知し、デバイスドライバ81−10からMPI81−9、アプリケーションプログラム91−8にライト完了は通知されて(ステップ416)、アプリケーションプログラム91−8は正しくRDMA Write完了したものと認識する。
本例は、デバイスドライバ82−10におけるデータ確認時間やRDMA Send時間が必要なため、アプリケーションプログラム91−8がライト完了を得るまで図8の場合よりも時間がかかるほか、デバイスドライバ82−10でのデータ確認により、図8の場合よりもマイクロプロセッサ82−1の負荷が増大する。しかしながら、コンピュータ装置内部で雑音等によってデータ誤りが発生し、ホストメモリに誤ったデータが書き込まれる可能性は、零ではない。したがって、TCP処理回路からホストメモリまでの区間でデータが誤り、ホストメモリにも誤ったデータが書き込まれる可能性も零ではない。そのため、金融系処理などの確実性を必要とする用途では、確実にホストメモリに正しくデータが書き込まれたことを保証したいという要求も存在する。その点、本例は、みなし方式ではなく実際にホストメモリ82−3までデータが正しく書き込まれたことを確認する方式であり、金融系メッセージのように、より確実性を求める場合に適する。
なお、コンピュータ装置内の各回路は、その機能を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するものであってもよい。コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、CD−ROM等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間、動的にプログラムを保持するもの(伝送媒体もしくは伝送波)、その場合のサーバとなるコンピュータ内の揮発性メモリのように、一定時間プログラムを保持しているものを含む。
本発明の第1の実施形態による、RDMA Writeのライト保証レベルの選択機能を有するコンピュータシステムの構成を示すブロック図、およびそのTCP ACKによるライト完了確認を行う場合の動作シーケンス図である。 図1の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。 本発明の第2の実施形態による、RDMA Writeのライト保証レベルの選択機能を有するコンピュータシステムの構成を示すブロック図、およびそのTCP ACKによるライト完了確認を行う場合の動作シーケンス図である。 図3の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。 iWARPを適用した従来のコンピュータシステムの一例を示すブロック図、およびそのRDMA Writeシーケンスを示す図である。 iWARPを適用した従来のコンピュータシステムの他の一例を示すブロック図、およびそのRDMA Writeシーケンスを示す図である。 iWARPを適用した従来のコンピュータシステムにおいて、3台のコンピュータ装置によるRDMA Writeを行う場合のブロック図である。 本発明の第3の実施形態による、RDMA Writeのライト保証レベルの選択機能を有するコンピュータシステムの構成を示すブロック図、およびそのTCP ACKによるライト完了確認を行う場合の動作シーケンス図である。 図8の実施形態における、ホストメモリ確認後のRDMA Sendによりライト完了確認を行う場合の動作シーケンス図である。 図8および図9の実施形態における、IP・ポート番号テーブルの構成例の説明図である 従来のTCPセグメントのフォーマットを説明する図である 従来のRDMA Writeメッセージのフォーマットを説明する図である。
符号の説明
11、21、31、41、81、91 RDMA Writeのデータ送信側コンピュータ装置
12、32、82、92 RDMA Writeのデータ受信側コンピュータ装置
11−1、12−1、21−1、31−1、32−1、41−1、81−1、82−1、91−1 マイクロプロセッサ
11−2、12−2、21−2、31−2、32−2、81−2、82−2 チップセット回路
11−3、12−3、21−3、31−3、32−3、81−3、82−3 ホストメモリ
11−4、12−4、21−4、31−4、32−4、81−4、82−4 RDMA処理回路
11−5、12−5、21−5、31−5、32−5、81−5、82−5 TCP処理回路
11−6、12−6、21−6、31−6、32−6、81−6、82−6 IP処理回路
11−7、12−7、21−7、31−7、32−7、81−7、82−7 イーサネット処理回路
11−8、12−8、21−8、31−8、32−8、41−8、81−8、82−8、91−8 アプリケーションプログラム
11−9、12−9、21−9、31−9、32−9、81−9、82−9 MPI
11−10、12−10、21−10、31−10、32−10、81−10、82−10 デバイスドライバ
12−11 IPテーブル
31−11、81−11 ポート番号テーブル
32−11 ポート番号テーブル
13、33、83 通信回線
51、61 RDMA Writeのデータ送信側コンピュータ装置
52、62 RDMA Writeのデータ受信側コンピュータ装置
51−1、52−1、61−1、62−1、71−1、72−1、73−1 マイクロプロセッサ
51−2、52−2、61−2、62−2、71−2、72−2、73−2 チップセット回路
51−3、52−3、61−3、62−3、71−3、72−3、73−3 ホストメモリ
51−4、52−4、61−4、62−4、71−4、72−4、73−4 RDMA処理回路
51−5、52−5、61−5、62−5、71−5、72−5、73−5 TCP処理回路
51−6、52−6、61−6、62−6、71−6、72−6、73−6 IP処理回路
51−7、52−7、61−7、62−7、71−7、72−7、73−7 イーサネット処理回路
51−8、52−8、61−8、62−8、71−8、72−8、73−8 アプリケーションプログラム
51−9、52−9、61−9、62−9、71−9、72−9、73−9 MPI
51−10、52−10、61−10、62−10、71−10、72−10、73−10 デバイスドライバ
53、63、73 通信回線
82−11 IP・ポート番号テーブル
101−116、201−216、301−312、401−416 ステップ

Claims (15)

  1. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムにおいて、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行う方法において、
    データ受信側コンピュータ装置のIP処理回路が、データ送信側コンピュータ装置から受信したIPデータグラムのIPヘッダ領域から該データ送信側コンピュータ装置のIPアドレスを読み出すステップと、
    前記IP処理回路が、前記データ送信側コンピュータ装置のIPアドレス毎のライト保証レベルが設定されているIPテーブルを参照して、該データ送信側コンピュータ装置のライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記データ受信側コンピュータ装置のRDMA処理回路に通知するステップと、
    前記RDMA処理回路が前記RDMA Writeによるデータをホストメモリへ格納するステップと、
    前記RDMA処理回路が、前記ホストメモリへのデータ格納完了時に、データ引取り要求とともに前記ライト保証レベルも、前記データ受信側コンピュータ装置のマイクロプロセッサのデバイスドライバに通知するステップと、
    前記デバイスドライバが、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにもライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わないステップと、
    前記RDMA処理回路では、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信するステップと
    を有することを特徴とする、コンピュータ装置間のホストメモリコピー方法。
  2. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムにおいて、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行う方法において、
    前記データ受信側コンピュータ装置のTCP処理回路が、データ送信側コンピュータ装置から受信したTCPセグメントのTCPヘッダ領域からそのサービス・アプリケーション種別を示すポート番号を読み出すステップと、
    前記TCP処理回路が、ポート番号毎のライト保証レベルが設定されているポート番号テーブルを参照して、そのサービス・アプリケーションのライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記データ受信側コンピュータ装置のRDMA処理回路に通知するステップと、
    前記RDMA処理回路がRDMA Writeによるデータをホストメモリへ格納するステップと、
    前記RDMA処理回路が、RDMA Writeによるデータの前記ホストメモリへの格納完了時に、データ引取り要求とともに該ライト保証レベル情報も、前記データ受信側コンピュータ装置のマイクロプロセッサのデバイスドライバに通知するステップと、
    前記デバイスドライバが、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わないステップと、
    前記RDMA処理回路が、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信するステップと
    を有することを特徴とする、コンピュータ装置間のホストメモリコピー方法。
  3. 請求項2記載のコンピュータシステムにおけるデータ送信側コンピュータ装置のRDMA処理回路が、受信したTCP ACK中のポート番号情報を読み出して、該ポート番号に対するライト保証レベルを、TCPで規定されたサービス・アプリケーション毎のポート番号に対するそのライト保証レベルと、送信したRDMA Writeメッセージのメッセージ番号MSNとを保持するポート番号テーブルを参照して入手し、該ライト保証レベルが第2のレベルの場合には、該TCP ACK受信完了をその送信RDMA Writeメッセージに対するライト完了通知として、マイクロプロセッサ搭載のデバイスドライバに通知し、一方、該ライト保証レベルが第1のレベルの場合には、マイクロプロセッサ搭載のデバイスドライバに、該TCP ACK受信完了を送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項2に記載のコンピュータ装置間のホストメモリコピー方法。
  4. 前記RDMA処理回路は、請求項2記載のデータ受信側コンピュータ装置からのRDMA Sendメッセージを受信して、該メッセージ中に格納されている、RDMA Writeメッセージ番号MSNを読み出し、該メッセージ番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、前記ライト保証レベルが第1のレベルの場合には、該RDMA Sendメッセージを、該当するMSNの送信RDMA Writeメッセージに対するライト完了通知として、前記デバイスドライバに通知し、一方、前記ライト保証レベルが第2のレベルの場合には、前記デバイスドライバに対して、RDMA Sendメッセージを、該当する送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項3記載のコンピュータ装置間のホストメモリコピー方法。
  5. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムにおいて、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行う方法において、
    前記データ受信側コンピュータ装置のIP処理回路が、データ送信側コンピュータ装置から受信したIPデータグラムのIPヘッダ領域から該送信側コンピュータ装置のIPアドレスを読み出すステップと、
    前記データ受信側コンピュータ装置のTCP処理回路が、データ送信側コンピュータ装置から受信したTCPセグメントのTCPヘッダ領域からそのサービス・アプリケーション種別を示すポート番号を読み出すステップと、
    前記TCP処理回路が、前記IP処理回路で読み出したIPアドレスと、読み出したポート番号を用いて、データ送信側コンピュータ装置別にTCPセグメントのポート番号毎のライト保証レベルが設定されているIP・ポート番号テーブルを参照して、そのサービス・アプリケーションのライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記データ受信側コンピュータ装置のRDMA処理回路に通知するステップと、
    前記RDMA処理回路がRDMA Writeによるデータをホストメモリへ格納するステップと、
    前記RDMA処理回路が、RDMA Writeによるデータの前記ホストメモリへの格納完了時に、データ引取り要求とともに該ライト保証レベル情報も、前記データ受信側コンピュータ装置のマイクロプロセッサのデバイスドライバに通知するステップと、
    前記デバイスドライバが、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わないステップと、
    前記RDMA処理回路が、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信するステップと
    を有することを特徴とする、コンピュータ装置間のホストメモリコピー方法。
  6. 請求項5記載のコンピュータシステムにおけるデータ送信側コンピュータ装置のRDMA処理回路が、受信したTCP ACK中のポート番号情報を読み出して、該ポート番号に対するライト保証レベルを、TCPで規定されたサービス・アプリケーション毎のポート番号に対するそのライト保証レベルと、送信したRDMA Writeメッセージのメッセージ番号MSNとを保持するポート番号テーブルを参照して入手し、該ライト保証レベルが第2のレベルの場合には、該TCP ACK受信完了をその送信RDMA Writeメッセージに対するライト完了通知として、マイクロプロセッサ搭載のデバイスドライバに通知し、一方、該ライト保証レベルが第1のレベルの場合には、マイクロプロセッサ搭載のデバイスドライバに、該TCP ACK受信完了を送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項5に記載のコンピュータ装置間のホストメモリコピー方法。
  7. 前記RDMA処理回路は、請求項5記載のデータ受信側コンピュータ装置からのRDMA Sendメッセージを受信して、該メッセージ中に格納されている、RDMA Writeメッセージ番号MSNを読み出し、該メッセージ番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、前記ライト保証レベルが第1のレベルの場合には、該RDMA Sendメッセージを、該当するMSNの送信RDMA Writeメッセージに対するライト完了通知として、前記デバイスドライバに通知し、一方、前記ライト保証レベルが第2のレベルの場合には、前記デバイスドライバに対して、RDMA Sendメッセージを、該当する送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項6記載のコンピュータ装置間のホストメモリコピー方法。
  8. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムであって、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行うコンピュータシステムにおけるデータ受信側のコンピュータ装置において、
    データ送信側コンピュータ装置のIPアドレス毎のライト保証レベルを設定しておくIPテーブルと、
    前記RDMA Writeによるデータのホストメモリへの格納完了時に、データ引取り要求とともに前記ライト保証レベルも、マイクロプロセッサのデバイスドライバに通知するRDMA処理回路と、
    前記データ送信側コンピュータ装置から受信したIPデータグラムのIPヘッダ領域から該データ送信側コンピュータ装置のIPアドレスを読み出し、前記IPテーブルを参照して、該データ送信側コンピュータ装置のライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記RDMA処理回路に通知するIP処理回路と、
    を有し、
    前記デバイスドライバは、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにもライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わず、
    前記RDMA処理回路では、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信する
    ことを特徴とするコンピュータ装置。
  9. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムであって、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行うコンピュータシステムにおけるデータ受信側のコンピュータ装置において、
    サービス・アプリケーション種別を示すポート番号毎のライト保証レベルを設定しておくポート番号テーブルと、
    RDMA Writeによるデータのホストメモリへの格納完了時に、データ引取り要求とともに該ライト保証レベル情報も、マイクロプロセッサのデバイスドライバに通知するRDMA処理回路と
    データ送信側コンピュータ装置から受信したTCPセグメントのTCPヘッダ領域からそのポート番号を読み出し、前記ポート番号テーブルを参照して、そのサービス・アプリケーションのライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記RDMA処理回路に通知するTCP処理回路と、
    を有し、
    前記デバイスドライバは、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わず、
    前記RDMA処理回路では、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信する
    ことを特徴とするコンピュータ装置。
  10. 請求項9記載のコンピュータシステムにおけるデータ送信側コンピュータ装置において、
    TCPで規定されたサービス・アプリケーション毎のポート番号に対するそのライト保証レベルと、送信したRDMA Writeメッセージのメッセージ番号MSNとを保持するポート番号テーブルと、
    該ポート番号テーブルに対してライト保証レベルの設定、およびメッセージ番号MSNの書き込み、読み出し機能を有するRDMA処理回路と
    を有し、
    前記RDMA処理回路は、受信したTCP ACK中のポート番号情報を読み出して、該ポート番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、該ライト保証レベルが第2のレベルの場合には、該TCP ACK受信完了をその送信RDMA Writeメッセージに対するライト完了通知として、マイクロプロセッサ搭載のデバイスドライバに通知し、一方、該ライト保証レベルが第1のレベルの場合には、前記マイクロプロセッサ搭載のデバイスドライバに、該TCP ACK受信完了を送信RDMA Writeメッセージに対するライト完了通知として通知しない、
    ことを特徴とするコンピュータ装置。
  11. 前記RDMA処理回路は、請求項9記載のデータ受信側コンピュータ装置からのRDMA Sendメッセージを受信して、該メッセージ中に格納されている、RDMA Writeメッセージ番号MSNを読み出し、該メッセージ番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、前記ライト保証レベルが第1のレベルの場合には、該RDMA Sendメッセージを、該当するMSNの送信RDMA Writeメッセージに対するライト完了通知として、前記デバイスドライバに通知し、一方、前記ライト保証レベルが第2のレベルの場合には、前記デバイスドライバに対して、RDMA Sendメッセージを、該当する送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項10記載のコンピュータ装置。
  12. 複数のコンピュータ装置が通信回線を介して接続されたコンピュータシステムであって、iWARP(RDMA over TCP)をホストメモリ間通信に用いて、RDMA Writeメッセージにより2台のコンピュータ装置間のホストメモリのコピーを行うコンピュータシステムにおけるデータ受信側のコンピュータ装置において、
    データ送信側コンピュータ装置別に、サービス・アプリケーション種別を示すポート番号毎のライト保証レベルを設定しておくIP・ポート番号テーブルと、
    RDMA Writeによるデータのホストメモリへの格納完了時に、データ引取り要求とともに該ライト保証レベル情報も、マイクロプロセッサのデバイスドライバに通知するRDMA処理回路と、
    データ送信側コンピュータ装置から受信したIPデータグラムのIPヘッダ領域から該データ送信側コンピュータ装置のIPアドレスを読み出し、TCP処理回路に通知するIP処理回路と、
    データ送信側コンピュータ装置から受信したTCPセグメントのTCPヘッダ領域からそのポート番号を読み出し、前記IP処理回路から通知される送信IPアドレスと該ポート番号とから、前記IP・ポート番号テーブルを参照して、そのサービス・アプリケーションのライト保証レベルを得て、RDMA Writeメッセージのメッセージ番号MSNとともに、前記RDMA処理回路に通知するTCP処理回路と、
    を有し、
    前記デバイスドライバは、前記ライト保証レベルが第1のレベルの場合は、上位のアプリケーションに対してデータ引き取り要求を発出するとともに、該MSNのRDMA Writeメッセージで前記ホストメモリに書き込まれたデータの正常性をチェックし、該データが正常に前記ホストメモリに書き込まれていることを確認したならば、前記RDMA処理回路に対してMSN番号とともにライト完了を通知し、一方、前記ライト保証レベルが第2のレベルの場合は前記上位のアプリケーションに対してデータ引取り要求を通知するのみで前記ホストメモリに書き込まれたデータの正常性チェックやその結果の前記RDMA処理回路への通知は行わず、
    前記RDMA処理回路では、ライト保証レベルが第1のレベルの場合は、前記デバイスドライバからの、データ正常性を示すライト完了通知を受け取ったならば、該MSNのRDMA Writeメッセージが正しくライトできたことを示すRDMA Sendメッセージを生成し、前記データ送信側コンピュータ装置に対して送信する
    ことを特徴とするコンピュータ装置。
  13. 請求項12記載のコンピュータシステムにおけるデータ送信側コンピュータ装置において、
    TCPで規定されたサービス・アプリケーション毎のポート番号に対するそのライト保証レベルと、送信したRDMA Writeメッセージのメッセージ番号MSNとを保持するポート番号テーブルと、
    該ポート番号テーブルに対してライト保証レベルの設定、およびメッセージ番号MSNの書き込み、読み出し機能を有するRDMA処理回路と
    を有し、
    前記RDMA処理回路は、受信したTCP ACK中のポート番号情報を読み出して、該ポート番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、該ライト保証レベルが第2のレベルの場合には、該TCP ACK受信完了をその送信RDMA Writeメッセージに対するライト完了通知として、マイクロプロセッサ搭載のデバイスドライバに通知し、一方、該ライト保証レベルが第1のレベルの場合には、前記マイクロプロセッサ搭載のデバイスドライバに、該TCP ACK受信完了を送信RDMA Writeメッセージに対するライト完了通知として通知しない、
    ことを特徴とするコンピュータ装置。
  14. 前記RDMA処理回路は、請求項12記載のデータ受信側コンピュータ装置からのRDMA Sendメッセージを受信して、該メッセージ中に格納されている、RDMA Writeメッセージ番号MSNを読み出し、該メッセージ番号に対するライト保証レベルを、前記ポート番号テーブルを参照して入手し、前記ライト保証レベルが第1のレベルの場合には、該RDMA Sendメッセージを、該当するMSNの送信RDMA Writeメッセージに対するライト完了通知として、前記デバイスドライバに通知し、一方、前記ライト保証レベルが第2のレベルの場合には、前記デバイスドライバに対して、RDMA Sendメッセージを、該当する送信RDMA Writeメッセージに対するライト完了通知として通知しない、請求項13記載のコンピュータ装置。
  15. コンピュータを、請求項8から請求項14に記載のコンピュータ装置として機能させるためのコンピュータプログラム。
JP2006131523A 2006-05-10 2006-05-10 コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム Withdrawn JP2007304786A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006131523A JP2007304786A (ja) 2006-05-10 2006-05-10 コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006131523A JP2007304786A (ja) 2006-05-10 2006-05-10 コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2007304786A true JP2007304786A (ja) 2007-11-22

Family

ID=38838668

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006131523A Withdrawn JP2007304786A (ja) 2006-05-10 2006-05-10 コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2007304786A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061194A (ja) * 2008-09-01 2010-03-18 Hitachi Ltd データ転送装置
JP2014531687A (ja) * 2011-09-30 2014-11-27 オラクル・インターナショナル・コーポレイション ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
EP3012740A1 (en) 2014-10-23 2016-04-27 Fujitsu Limited Inter-process communication program, release requesting method, and parallel computing apparatus

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061194A (ja) * 2008-09-01 2010-03-18 Hitachi Ltd データ転送装置
JP2014531687A (ja) * 2011-09-30 2014-11-27 オラクル・インターナショナル・コーポレイション ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
US9996403B2 (en) 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
EP3012740A1 (en) 2014-10-23 2016-04-27 Fujitsu Limited Inter-process communication program, release requesting method, and parallel computing apparatus
US10078446B2 (en) 2014-10-23 2018-09-18 Fujitsu Limited Release requesting method and parallel computing apparatus

Similar Documents

Publication Publication Date Title
US20220197838A1 (en) System and method for facilitating efficient event notification management for a network interface controller (nic)
JP4017652B2 (ja) データ伝送方法およびデータ伝送装置
US7761588B2 (en) System and article of manufacture for enabling communication between nodes
US9059932B2 (en) Packet ordering based on delivery route changes in communication networks
US8244902B2 (en) Device, system, and method of distributing messages
US7966380B2 (en) Method, system, and program for forwarding messages between nodes
US20210255987A1 (en) Programmed Input/Output Mode
KR101409927B1 (ko) 저장 장치들의 시스템을 위한 프로토콜 정의 링크에서 부가메시지들을 전달하기 위한 은닉 채널
US8542597B2 (en) Soft error recovery for converged networks
KR20140018368A (ko) 네트워크 터널을 통해 데이터를 전송하기 위한 방법 및 장치
US11792446B2 (en) Methods and apparatus to reduce audio streaming latency between audio and gigabit ethernet subsystems
WO2013097642A1 (zh) 快速通道互联系统中数据包重传方法、节点
JP2007304786A (ja) コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム
KR102234100B1 (ko) Id기반 통신 시스템 및 그의 데이터 전송 제어 방법
US7526574B2 (en) Method for communicating data transfer requests between data transfer protocols
US11824752B2 (en) Port-to-port network routing using a storage device
Kreider et al. EtherBone-A network layer for the Wishbone SoC bus
JP2023554140A (ja) データ伝送制御方法、装置、電子機器及び記憶媒体
JP7189474B2 (ja) 推定システム、付加装置、推定方法、付加方法、推定プログラム、及び付加プログラム
WO2021156918A1 (ja) 経路冗長化システム、送信側装置、受信側装置、経路冗長化方法、および、経路冗長化プログラム
US7447205B2 (en) Systems and methods to insert broadcast transactions into a fast data stream of transactions
TWI246651B (en) An enhanced general input/output architecture and related methods for establishing virtual channels therein
Zhao et al. Buffer design based on flow control in RapidIO
Karlsson et al. Implementation of a PCI based gigabit Ethernet network adapter on an FPGA together with a Linux device driver
JP2007140888A (ja) 計算機システムにおけるデータ送信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090415

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100405