JP2011008678A - データ転送装置及びコンピュータシステム - Google Patents

データ転送装置及びコンピュータシステム Download PDF

Info

Publication number
JP2011008678A
JP2011008678A JP2009153644A JP2009153644A JP2011008678A JP 2011008678 A JP2011008678 A JP 2011008678A JP 2009153644 A JP2009153644 A JP 2009153644A JP 2009153644 A JP2009153644 A JP 2009153644A JP 2011008678 A JP2011008678 A JP 2011008678A
Authority
JP
Japan
Prior art keywords
flag
request
unit
completion notification
data transfer
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.)
Pending
Application number
JP2009153644A
Other languages
English (en)
Inventor
Chihiro Yoshimura
地尋 吉村
Junji Yamamoto
淳二 山本
Naonobu Sukegawa
直伸 助川
Masaya Nakahata
昌也 中畑
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009153644A priority Critical patent/JP2011008678A/ja
Publication of JP2011008678A publication Critical patent/JP2011008678A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】
データ転送要求によって主記憶装置に書き込まれるべきデータが、関係する全てのソフトウェアによって読み出せるようになった段階で、ソフトウェアがデータ転送の完了を認識できるようにする。
【解決手段】
複数のインタフェースを介してコンピュータと接続するデータ転送装置において、主記憶装置に対するデータの書き込み完了通知を複数の部分完了通知に分割して定義し、複数のインタフェースのそれぞれから部分完了通知を主記憶装置に書き込む。コンピュータ上で動作するソフトウェアは、その完了通知を構成する全ての部分完了通知が主記憶装置から読み出せた段階で、当該完了通知が読み出せたものと見做し、データの転送が完了したと判断する。
【選択図】図4

Description

本発明は、データ転送装置及びコンピュータシステムに係り、特にコンピュータ内の主記憶装置に対してDMAデータ転送を行うデータ転送装置における受信データの転送制御、及びそれを適用するコンピュータシステムに関する。
ネットワークアダプタ、ストレージアダプタ、及び、グラフィックスアダプタなどのコンピュータのデータ入出力を担うデータ転送装置は、通常、コンピュータの主記憶装置に対してDMA(Direct Memory Access)によりデータ転送している。DMA転送は、プロセッサを介在しないで主記憶装置に対してデータ転送することができるので、プロセッサの負荷軽減とデータ転送の高速化が図れる(特許文献1参照)。
また、DMA転送を用いるネットワークアダプタにおいては、ネットワーク経由でDMA転送を行う、RDMA(Remote Direct Memory Access)転送が用いられている。RDMA転送は、ネットワークで接続された複数のネットワークアダプタどうしが、プロセッサを介在せずに、各ネットワークアダプタが接続されているコンピュータの主記憶装置へデータ転送する。これにより、プロセッサに負荷をかけずにネットワーク経由でのデータ転送が実現でき、ネットワークのスループット向上とレイテンシ低減が図れる(特許文献2参照)。
データ転送装置は、DMA転送を実現するために、一般的にはPCIやPCI Expressのような業界標準規格で定められたインタフェースを用いてコンピュータと接続する。これらのインタフェースは業界標準規格で定められていることから、サーバやパーソナルコンピュータなどの幅広い種類のコンピュータで採用されており、データ転送装置の適用範囲を拡大する効果を持つ(非特許文献1及び非特許文献2参照)。
特表2007−520770号公報 特開2008−217214号公報 特開2000−330924号公報
PCI Express Base Specification Revision 2.0、 PCI−SIG、 December 20、 2006. Mindshare Inc.、 Ravi Budruk、 Don Anderson and Tom Shanley、 PCI Express System Architecture、 Addison−Wesley、 2003.
一般に、コンピュータの主記憶装置に対してデータを転送するデータ転送装置では、コンピュータのプロセッサないしはプロセッサ上で動作するソフトウェアが、データ転送装置によるデータ転送が完了したことを知る手段が必要となる。
上述したようなデータ転送装置を用いるコンピュータシステムでは、データ転送装置がコンピュータの主記憶装置に転送したデータを、コンピュータ上で動作しているソフトウェアが使用する。コンピュータ上で使用しているソフトウェアはプロセッサの備えるロード命令によって、主記憶装置上のデータを読み出す。この時、ソフトウェアはデータ転送装置によるデータ転送が完了し、そのデータが主記憶装置上に書き込まれた後でロード命令を発行しなければならない。データ転送完了前にロード命令を発行すると、データ転送装置が主記憶装置に書き込んだデータではなく、それ以前に主記憶装置にあったデータを読み出してしまうことになり、ソフトウェアは正常に動作することができない。
ところが、DMA転送ではプロセッサを介在せずデータ転送を行うため、そのままではプロセッサないしはプロセッサ上で動作するソフトウェアがデータ転送の進捗状況を知ることが出来ない。そのため、データ転送装置は、自身が発行したデータ転送要求による主記憶装置へのデータ書込みが完了した後に、データ転送が完了したことをソフトウェアに通知する。ソフトウェアは通知を受けた後に、当該データを主記憶装置から読み出すことで、データ転送装置によって書き込まれたデータを正しく読み出すことが出来る。
主記憶装置に対するデータの書込み完了通知を行う方法は幾つかあるが、その代表的な例を、図26に示す。データ転送装置はデータ転送のための転送要求(以下単にデータ転送要求という)をPCI Express(以下、PCIeという)インタフェースに発行した後に、それに引き続いて、ソフトウェアに対してデータ転送の完了を通知する「完了通知」と称する特殊なデータを、主記憶装置上の所定のアドレスに書込む。ソフトウェアは完了通知が書き込まれるアドレスを常時監視していて、完了通知を読み出すことが出来たら、完了通知の転送要求以前にPCIeに発行されたデータ転送要求は全て完了し、主記憶装置上に当該データが書き込まれているものと判断して、データの読出しを行う。
PCIeでは、データ転送装置が主記憶装置にデータないし完了通知を書込むために、Memory Writeと呼ばれるトランザクションを用いる。このMemory Writeトランザクションには、さらにDefault OrderingないしはRelaxed Orderingという2種類の順序保証規則の異なるトランザクションがある。一般的に用いられるDefault OrderingのMemory Writeトランザクションでは、先行するMemory Writeを後続のMemory Writeが追い越すことは出来ないことが保証されている。すなわち、後続のMemory Writeによって主記憶装置にデータが書き込まれ、当該データをソフトウェアがプロセッサのロード命令を用いて観測出来たときには、先行するMemory Writeによる主記憶装置へのデータ書込みは既に完了しており、当然ソフトウェアからもロード命令を用いて観測できるようになっている。
このPCIeのMemory Writeにおける順序保証を利用することで、完了通知の書込みによりデータ転送の完了をプロセッサないしプロセッサ上で動作するソフトウェアに通知することが出来る。すなわち、データ転送装置はPCIeインタフェースを備え、Default Orering Memory Writeトランザクションでデータの主記憶装置への書込みを発行した後に、同様に、Default Ordering Memory Writeで完了通知の主記憶装置への書込みを発行する。
ここで、特許文献3に開示される、複数のインタフェースを用いることで、データ転送装置のスループットを高める技術を、上述のような完了通知の主記憶装置への書き込みを以って、データ転送の完了をソフトウェアに通知するデータ転送装置に適用すると、問題が生じる。
複数のインタフェースを用いたデータ転送装置による完了通知の問題を理解するために、複数系統(例えば4ポート)のPCIeを介してコンピュータと接続されるネットワークアダプタの動作例を図27に示す。
ネットワークから受信したメッセージを、4ポートのインタフェースを介して高速に転送するために、ネットワークアダプタはデータを5分割して、I/Oハブの各ポートで同時並行的に転送する。ここで、先ほどと同様に、データ転送のためのDefault Ordering Memory Writeトランザクションを送出した後に、完了通知を主記憶装置に書込むためのメモリトランザクションを発行する。
4ポートのPCIeを介してコンピュータに到達するトランザクションは、コンピュータ内部のI/Oハブによって処理され、主記憶装置へデータ転送される。この例のように、複数ポートを有するI/Oハブは、複数のPCIeからの処理を何らかのアービトレーションによって順序だてて処理するスイッチとしての役割を持つ。すなわち、図27の例に従えば、1本しかない主記憶装置へのデータ転送パスを、4ポートのPCIeで共有するために、その間に存在する切替スイッチがI/Oハブとなる。ここで、各PCIeポートそれぞれの転送においては追越が生じることが無く、トランザクションの発行順に主記憶装置に書き込まれることは、既に述べたとおりである。しかし、複数のPCIeポート間での順序保証は規定されておらず、4ポートのPCIeに分配されたトランザクションは、ポート間ではどのような順序で処理されるか分からない。
その結果、図27に示すように、ネットワークアダプタによって細分化されたデータの一部が書き込まれた後に、完了通知が書き込まれ、さらにその後に残りのデータが書き込まれるような状況が生じうる。上述したとおり、ソフトウェアは完了通知が読み出せたことを以って、主記憶装置からデータを読み込もうとするが、この例ではその時点ではまだ書き込まれていないデータが残っている。よって、ソフトウェアは正しくデータを読み出すことはできない。
本発明の目的は、複数のインタフェースを介してコンピュータと接続するデータ転送装置において、データ転送要求によって主記憶装置に書き込まれるべきデータが、関係する全てのソフトウェアによって読み出せるようになった段階で、ソフトウェアがデータ転送の完了を認識できるようにすることにある。
上記の課題を解決するために、本発明は、主記憶装置に対するデータの書き込み完了通知を複数の部分完了通知に分割して定義し、複数のインタフェースのそれぞれから部分完了通知を主記憶装置に書込む。そして、コンピュータ上で動作するソフトウェアは、その完了通知を構成する全ての部分完了通知が主記憶装置から読み出せた段階で、当該完了通知が読み出せたものと見做し、データの転送が完了したと判断する。
好ましい例によれば、本発明に係るデータ転送装置は、主記憶装置を有するコンピュータと第1のインタフェースを介して接続され、かつ外部の装置と第2のインタフェースを介して接続され、該外部の装置からの要求に応じて該主記憶装置に対してデータの転送制御を行うデータ転送装置であって、
該第1のインタフェースまたは第2のインタフェースが該コンピュータの主記憶装置へのアクセス要求を受け付けた時に、該主記憶装置に対するデータ転送要求を発行するデータ転送要求生成部と、
該データ転送要求生成部が該データ転送要求を発行した後に、データ転送完了を示す完了通知を該主記憶装置に転送する完了通知転送要求を発行する完了通知転送要求生成部と、
該データ転送要求又は該完了通知転送要求を、該第1のインタフェースを構成する複数のインタフェースの少なくとも1つに発行する転送要求分配部と、を有し、
該完了通知は複数の部分完了通知から構成され、かつ該部分完了通知は、該部分完了通知が有効又は無効であることを示すフラグを有して構成されるデータ転送装置として構成される。
また好ましくは、本発明に係るコンピュータシステムは、主記憶装置を有するコンピュータと、該コンピュータと第1のインタフェースを介して接続され、かつ外部の装置と第2のインタフェースを介して接続され、該外部の装置からの要求に応じて該主記憶装置に対してデータの転送制御を行うデータ転送装置とを含むコンピュータシステムにおいて、
該データ転送装置は:
該第1のインタフェースまたは第2のインタフェースが該コンピュータの主記憶装置へのアクセス要求を受け付けた時に、該主記憶装置に対するデータ転送要求を発行するデータ転送要求生成部と、
該データ転送要求生成部が該データ転送要求を発行した後に、データ転送完了を示す完了通知を該主記憶装置に転送する完了通知転送要求を発行する完了通知転送要求生成部と、
該データ転送要求又は該完了通知転送要求を、該第1のインタフェースを構成する複数のインタフェースの少なくとも1つに発行する転送要求分配部と、を有し、
該完了通知は複数の部分完了通知から構成され、かつ該部分完了通知は、該部分完了通知が有効又は無効であることを示すフラグを有して構成され、
該コンピュータは:
データ処理するプロセッサと、先入れ先出し(FIFO)される完了通知を記憶する所定領域を有する前記主記憶装置と、該主記憶装置と接続されると共に、第1のインタフェースを介して該データ転送装置と接続されるI/Oハブを有し、
該プロセッサは、プログラムの実行によって、該所定領域における完了通知の状況を監視する完了判定手段と、該主記憶装置からデータを読み出すデータ読出手段とを実現し、
該完了判定手段は、該完了通知を構成する全ての部分完了通知が該所定領域から読み出せた時に、データ転送完了であることを該データ読出手段に通知するコンピュータシステムとして構成される。
本発明によれば、複数のインタフェースを介してコンピュータと接続され、コンピュータの主記憶装置に対してデータを書込むデータ転送装置において、データ転送の完了を、コンピュータないしはコンピュータ上で動作するソフトウェアに通知することができ、ソフトウェアは正しくデータを読み出すことが可能となる。
一実施形態によるネットワークアダプタを用いたコンピュータシステムを示す図である。 一実施形態によるネットワークアダプタの構成例を示すブロック図である。 一実施形態によるコンピュータの構成例を示すブロック図である。 一実施形態によるネットワークアダプタとコンピュータ間のデータ及び完了通知の転送を示す概念図である。 一実施形態によるネットワークアダプタの転送要求分配部の構成例を示すブロック図である。 一実施形態によるネットワークアダプタの完了通知転送要求生成部の構成例を示すブロック図である。 一実施形態によるネットワークアダプタの転送要求分配部においてアドレスインタリーブによって形成される、計算機の主記憶装置のアドレス空間とインタフェースとの関係を示すアドレスマップである。 一実施形態によるネットワークアダプタの記憶部による完了状況記憶フラグの構成例を示す図である。 一実施形態(第1の例)によるネットワークアダプタの記憶部の構成例を示すブロック図である。 一実施形態(第2の例)によるネットワークアダプタの記憶部の構成例を示すブロック図である。 一実施形態(第3の例)によるネットワークアダプタの記憶部の構成例を示すブロック図である。 一実施形態(第4の例)によるネットワークアダプタの記憶部の構成例を示すブロック図である。 上記第2の例におけるネットワークアダプタの完了状況記憶フラグの構成例を示す概念図である。 上記第4の例におけるネットワークアダプタの完了状況記憶フラグの構成例を示す概念図である。 上記第4の例におけるネットワークアダプタのエンドポイント対応記憶部の構成例を示す概念図である。 一実施形態による完了通知のフォーマットを示す図である。 一実施形態による完了通知キューの構成を示す図である。 一実施形態(例1)による4ポート構成の場合の完了通知のフォーマットを示す図である。 一実施形態(例2)による4ポート構成で2ポートを使用している場合の固定長完了通知のフォーマットを示す図である。 一実施形態による主記憶装置に書き込まれた完了通知要求を処理するプログラムの処理フローを示す図である。 一実施形態によるネットワークアダプタで処理されるRDMA Write要求メッセージの構成例を示す図である。 一実施形態(第1の例)によるネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。 一実施形態(第2の例)によるネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。 一実施形態(第3の例)によるネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。 一実施形態(第4の例)によるネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。 従来の、ネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。 従来の、複数のインタフェースを用いた、ネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の流れを示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
本発明は、複数のインタフェースを介してコンピュータの主記憶装置にデータ転送を行うデータ転送装置に適用することが可能である。一実施形態では、RDMA転送を行うネットワークアダプタに適用したものである。しかし、本発明はネットワークアダプタへの適用に限定されず、ストレージアダプタ、及び、グラフィックスアダプタなどに適用することが可能である。
図1は、一実施形態によるデータ転送装置であるネットワークアダプタを用いたコンピュータシステムを示す。
複数のノード102は、リンク101を介して、例えばInfiniBandにより構成されるネットワーク100に接続され、各ノード102間で相互にRDMA転送を行う。
各ノード102は、例示のように、リンク101に接続されるネットワークアダプタ103と、コンピュータ104を有する。ネットワークアダプタ103とコンピュータ104の間は例えばPCIeインタフェース105によって接続され、その場合ネットワークアダプタ103はPCIカードによって構成される。コンピュータ104は、通常、複数のサーバ又はプロセッサから構成され、主記憶装置を備える。PCIeインタフェース104にはパケットの形式のデータが転送され、PCIeインタフェース104に転送された順番に、そのデータは主記憶装置に書き込まれる。
なお、以後の説明において、あるノードに注目して説明を行う場合、そのノードをローカルノードと称し、ローカルノードとネットワーク100を介して接続される他のノードをリモートノードと言うことがある。
図2は、データ転送装置であるネットワークアダプタ103の構成例を示す。
ネットワークアダプタ103は、リンク101に接続されるネットワークインタフェース201及びコンピュータ104に接続される複数のPCIeインタフェース208を有する。動作的に言えば、ネットワークアダプタ103は、ネットワークインタフェース201を介して、RDMA Write要求(図21)を受信し、複数のPCIeインタフェース208を介して、分割された受信データをコンピュータの主記憶装置(図3)に格納するためのデータ転送要求及び主記憶装置に対するデータの書き込み完了を示す完了通知(図16)を転送する。これを実現するために、以下のような特徴的な構成乃至機能を有する。
ネットワークアダプタ103は、その内部構成として、受信パケットのヘッダを認識して、受信データのDMA転送を行う受信処理部202、PCIeインタフェース208からデータパス209を介して得られるデータやパラメータをRDMA Writeメッセージに組み立て、パケット化して、ネットワークインタフェースから送出する送信処理部203、受信データを、PCIeの1個のパケットで転送できる大きさに細分化し、複数のポートに分配するために1乃至複数個のデータ転送要求を生成するデータ転送要求生成部204、DMA転送により受信データの主記憶装置への記憶が完了したことを示す完了通知転送要求を生成する完了通知転送要求生成部205、データ転送要求生成部204で作成されたデータ転送要求、並びに完了通知転送要求生成部205で生成された完了通知転送要求を、複数のPCIeインタフェース208の数分に分配する転送要求分配部206、及び受信データ及び完了通知の発行状況に関する情報を記憶する記憶部207を有して構成される。なお、データ転送要求生成部204で受信データが細分化されるが、細分化の数はポートの数と無関係である。例えば、コンピュータ104のサポートするPCIeのパケットサイズの制約に合わせて、受信データを細分化する。
本発明に特徴的な、完了通知転送要求生成部205の機能動作及び記憶部207における完了通知の記憶管理等については、図4以降を参照して詳述する。
図3はコンピュータ104の構成例を示す。
コンピュータ104は、システムバス301に、一方がPCIeインタフェースに接続されたI/Oハブ302、主記憶装置304を制御する主記憶制御部303、及び1又は複数のプロセッサ305がそれぞれ、システムバス301に接続して構成される。PCIeインタフェースからI/Oハブ302を介してDMA転送されたデータは、システムバス301を通り、主記憶制御部303の制御により主記憶装置304に書き込まれる。主記憶装置304には、種々のデータやプログラム等が記憶される。1つの特徴として、受信データをDMA転送にて格納するデータ領域及び当該データ領域にデータの書き込みが完了したことを示す完了通知を保管するキュー領域を有している。
プロセッサ305は種々のデータ処理を行うが、少なくともその1つは通信ライブラリ用のプログラムの実行によって、主記憶装置304へのデータの書き込みの完了の監視制御を行う。その制御については、図20を参照して後述する。
次に、図4を参照して、ネットワークアダプタとコンピュータの間のデータ及び完了通知の転送について概念的に説明する。
主記憶装置304には、データを格納するデータ領域3041と、完了通知を格納するキュー領域3042が確保されている。
ネットワークアダプタ103において、受信処理部202が受信データ(メッセージ)を受信すると、データ転送要求生成部204はデータをデータ領域3041に順次格納する。また、完了通知転送要求生成部205は、データが分配されたインタフェースの数に応じた、完了通知(以後、部分完了通知という)を生成して、その完了通知をキュー領域3042に順次格納する。
なお、データ領域3041及びキュー領域3042は、ネットワークアダプタがサポートするエンドポイントの数に対応して複数プレーンが用意されている。なお、エンドポイントとは仮想的な通信経路(詳細は後述)である。
プロセッサ305又はそのプロセッサ上で動作するソフトウェア(例えば通信ライブラリプログラム)40は、完了判定部401及びデータ読み出し部402の各機能を有している。完了判定部401が、分割された複数の部分完了通知の全てが主記憶装置304にエンキューされたことを判定すると、その旨をデータ読み出し部402へ通知し、その後、データ読み出し部402は主記憶装置に格納された当該データを読み出すことができる。
図5は、ネットワークアダプタの転送要求分配部206の構成例を示す。
アービタ501は、データ転送要求生成部204との信号S51又は完了通知転送要求生成部205との信号S52を切り替える機能と有し、データ転送要求生成部204又は完了通知転送要求生成部205からデータを受入れて、スイッチ504及び出力ポート判定部502へ宛先アドレスやエンドポイント識別子等のパラメータとデータの組から構成される信号(データ転送要求)S53を送る。なお、出力ポート判定部502では、受信した信号S53からアドレスインタリーブによる出力ポートの判定のために宛先アドレスを用い、記憶部へのフラグセット要求のために、エンドポイント識別子と出力ポートを示すインタフェース識別子を送る。
インタリーブ粒度設定部503は、インタリーブの粒度を設定するレジスタから構成され、外部(例えばドライバなど)が設定する、インタリーブ空間1個の大きさ(例えば図7では1KB)を、当該レジスタに設定する。
出力ポート判定部502は、インタリーブ粒度設定部503から指示されたインタリーブ粒度(例えば1KBなど)に基づいて、データ転送対象アドレスから出力ポートを決定し、そのポートを識別する情報S54をスイッチ504へ送る。スイッチ504は、出力ポート判定部502からの情報に基づいて、データ転送要求S53を複数のポートのうちの1つに出力する。
この構成により、データ転送要求生成部204で複数に細分化された受信データは、インタリーブ粒度設定部503で設定された粒度に従って、出力ポート判定部502により指定されスイッチ504で選択されたPCIeインタフェースを介して、コンピュータ104の選択されたポートへ転送される。
なお、ここで、データ転送要求生成部203からのデータ転送要求は、出力ポートの設定(インタフェース識別子)は含まれておらず、転送要求分配部206で決定されるものとする(アドレスインタリーブ)。また、完了通知転送要求生成部204からの完了通知転送要求(部分完了通知転送要求)には、出力ポートの設定(インタフェース識別子)が含まれており、転送要求分配部206はアドレスインタリーブを行わずに、単に指定された出力ポートに完了通知転送要求(部分完了通知転送要求)を出力する。
図6は、ネットワークアダプタの完了通知転送要求生成部205の構成例を示す。
完了通知転送要求生成部205は、受信処理部202からエンドポイント毎の書込み要求S61を得て、記憶部207に書込みの完了通知をいずれのポートに対して出すべきかの問合せ(S62,S63)を行い、完了通知を出すべきポートを識別する情報(インタフェース識別子)S641,エンドポイント識別子S642,データを書き込むべき主記憶装置上の宛先アドレスS643,及び完了通知データS644の各信号を転送要求分配部206へ送出する機能を有する。
より具体的に言えば、フラグ読出し要求部601は、記憶部207に対してエンドポイント毎の完了状況の問い合せS62を出し、記憶部207からの応答S63として完了通知を出すべきポート(インタフェース識別子)を受領して、インタフェース識別子S641を転送要求分配部206へ送出する。
完了通知フォーマット生成部602は、図18、図19に示す完了通知のデータ構造のうちフラグ読出し要求部601がS65で指定した個数のものを生成する。完了通知管理用ポインタ603は、図17に示す完了通知キューのポインタを保持する。即ち、完了通知転送要求生成部205は、キューに書き込む(エンキューする)側なので、テールポインタを管理することになる。逆に、読み出す(デキューする)側であるプロセッサ305又はその上で動作するソフトウェアは、ヘッドポインタを管理することになる。アドレス計算部604は、主記憶装置にデータを書き込むときの宛先アドレスを計算する。
なお、エンドポイントとは、仮想的な通信経路と考えてよい。即ち、1つの物理ノードに複数のエンドポイントを配置でき、1つの物理ノードは複数のエンドポイント毎にメッセージを同時並行的に送受信することができる。また、同一のエンドポイント内ではメッセージの順序性が保証されているので、あるメッセージを送り終わるまで次のメッセージを送ることが出来ない。そのため、異なるメッセージのパケットが混じることはない。一方、異なるエンドポイント間では、同一の通信経路を共有し、かつ異なるエンドポイント間ではメッセージの発行が同時並行的に行われるので、異なるエンドポイントから送信されるメッセージを構成するパケットは混ざる。
図7は、ネットワークアダプタにおいて、転送要求分配部206のアドレスインタリーブによって形成される、コンピュータ104の主記憶装置304のアドレス空間とインタフェースとの関係を示すアドレスマップである。
アドレス空間は、例えば1Kバイト単位に分けられ、各インタリーブ空間は4つのポート(#0〜3)毎に、インタリーブ空間#1〜#1048576の数、形成されている。各インタリーブ空間の先頭を表す16進のアドレス(先頭アドレス)のうち、2ビットが4つのポートのいずれかと対応している。
図8は、ネットワークアダプタの記憶部207による完了状況記憶フラグの構成例を示す。
完了状況記憶フラグは、主記憶装置のデータ領域にデータの書込みが完了したかの状況を管理するフラグであり、4つのポートに対応してそれぞれ1ビットずつ用意される。ポートにデータを送出する度に、フラグは“1”にセットされ、部分完了通知の送出によって“0”にリセットされる。
図9は、ネットワークアダプタの記憶部207の構成例(第1の例)を示す。
記憶部207は、主記憶装置304に対するデータの書込みの完了状況を示す情報を記憶して管理する。そのために、フラグセット部901、フラグクリア部902、完了状況記憶フラグ903、及びフラグ読出し部904を有する。
フラグセット部901は、転送要求分配部206が複数のインタフェースの1つにデータ転送要求を発行した時に発せられる、インタフェース識別子を含むフラグセット要求S551を受け付ける。そして、フラグセット要求を受けた時に、フラグセット要求に含まれるインタフェース識別子で示されるインタフェースに対応する完了状況記憶フラグのうち1又は複数のフラグをセットする。
フラグクリア部902は、転送要求分配部206から送られる、インタフェース識別子を含むフラグクリア要求S552を受け付け、そのフラグクリア要求に含まれるインタフェース識別子で示されるインタフェースに対応する完了状況記憶フラグのうち1又は複数のフラグをクリアする。
完了状況記憶フラグ903は、図8に示すように、4つのインタフェースのそれぞれに対応したフラグを有し、対応するポートに対するデータ転送の完了状況を、セット“1”又はリセット“0”として記憶管理する。
フラグ読出し部904は、完了通知転送要求生成部205から送られるフラグ読出し要求S62を受けて、完了状況記憶フラグ903を読み出し、そのフラグを読出し要求に対する応答S63として完了通知転送要求生成部205へ転送する。
図10は、ネットワークアダプタの記憶部207の構成例(第2の例)を示す。
この例は図9の変形例である。図9の例と相違する主な点は、複数n面の完了状況記憶フラグ903を有する点、及びフラグセット部901に入力されるフラグセット要求S55、フラグクリア部902に入力されるフラグクリア要求S552に、それぞれインタフェース識別子に加えて、エンドポイントを識別するための情報であるエンドポイント識別子が含まれる点と、フラグ読出し部904に入力されるフラグ読出し要求S62に、読み出し要求に加えてエンドポイント識別子が含まれる点、にある。
完了状況記憶フラグ903は、このネットワークアダプタ103が外部インタフェースを介して接続されるエンドポイントの最大数と同じかそれ以上の数の面数を持ち、各面の完了状況記憶フラグ903はそれぞれのエンドポイントと対応している。図13に示すように、完了状況記憶フラグ903は、各インタフェースに対応したポート(4つのポート)の完了状況を示すフラグ、(即ち完了“0”又は未完了“1”)から成る多数(216−1)のエントリを記憶する。
フラグセット部901は、転送要求分配部206からのフラグセット要求S551を受けた時に、そのフラグセット要求に含まれるエンドポイント識別子、及びインタフェース識別子に対応する完了状況記憶フラグの1又は複数のフラグをセットする。
フラグクリア部902は、転送要求分配部206からのフラグクリア要求S552を受けた時に、そのフラグクリア要求に含まれるエンドポイント識別子、及びインタフェース識別子に対応する完了状況記憶フラグの1又は複数のフラグをクリアする。
フラグ読出し部904は、完了通知転送要求生成部205からフラグ読出し要求S62を受けた時に、そのフラグ読出し要求に含まれるエンドポイント識別子に対応するフラグを読み出して、読出し要求に対する応答S63として完了通知転送要求生成部205へ転送する。
なお、転送要求分配部206は、完了通知転送要求生成部205を介して、記憶部207から得られたフラグで示される各のインタフェースに、部分完了通知を転送する部分完了通知転送要求を発行する。
図11は、ネットワークアダプタの記憶部207の構成例(第3の例)を示す。
この例において、記憶部207は、フラグセット部901、フラグクリア部902、完了状況記憶フラグ903、フラグ読出し部904に加えて、エンドポイント識別子記憶部1101及びエンドポイント識別子比較器1102を有している。
ここで、フラグセット部901、フラグクリア部902、完了状況記憶フラグ903、フラグ読出し部904は、図9等に示した例における機能と同様であり、複数のインタフェースに対応した数のフラグを有する。フラグセット要求、及びフラグクリア要求は、エンドポイントを識別するエンドポイント識別子、及び複数のPCIeインタフェースをそれぞれ識別するインタフェース識別子を含む。フラグ読出し要求は、読出し要求に加えて、エンドポイント識別子を有する。
エンドポイント識別子記憶部1101はエンドポイント識別子を記憶する。また、エンドポイント識別子比較器102は、エンドポイント識別子記憶部1101に記憶するエンドポイント識別子と、他の1つのエンドポイント識別子が一致しているかを判定し、その結果、一致又は不一致を出力する。
フラグセット部901は、転送要求分配部206からのフラグセット要求S551を受けた時に、そのフラグセット要求に含まれるエンドポイント識別子及びエンドポイント識別子比較要求をエンドポイント識別子比較器1102へ送り、そこで、エンドポイント識別子記憶部1101に記憶されたエンドポイント識別子と比較する。比較の結果として、フラグセット部901はエンドポイント識別子比較器1102から一致又は不一致を示す情報を受領する。そして、両者が一致している場合には、フラグセット要求に含まれるインタフェース識別子に対応するフラグをセットし、不一致の場合には、全てのフラグをセットする。その理由は、処理しているエンドポイントをエンドポイント識別子記憶部に記憶しておき、同じエンドポイントを処理している時は上記第1の例と同様に動作させ、一方処理しているエンドポイントと異なるエンドポイントの処理が始まった場合(同時並行的に別のエンドポイントの転送が始まった場合)、フラグの中身は使えないので、フラグが無いものと看做して動作する、即ち全フラグをセットする(つまり全ポートに部分完了通知を送出する)。
フラグクリア部902は、転送要求分配部206からのフラグクリア要求S552を受けた時に、そのフラグクリア要求に含まれるエンドポイント識別子及びエンドポイント識別子比較要求をエンドポイント識別子比較器1102へ送り、そこで、エンドポイント識別子記憶部1101に記憶されたエンドポイント識別子と比較する。比較の結果として、フラグセット部901はエンドポイント識別子比較器1102から一致又は不一致を示す情報を受領し、両者が一致している場合には、フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアし、不一致の場合には、フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアし、それ以外のフラグはセットする。この理由も上述と同様に、同時並行的に別のエンドポイントの転送が始まった場合、フラグは無いものと看做して、過去の履歴は分からないものと扱い、今クリアしたフラグ以外はセットする。
フラグ読出し要求部904は、完了通知転送要求生成部205からフラグ読出し要求S62を受けた時に、フラグ読出し要求に含まれるエンドポイント識別子及びエンドポイント識別子比較要求をエンドポイント識別子比較器へ送り、そこで、エンドポイント識別子記憶部1101に記憶されたエンドポイント識別子と比較する。比較の結果として、フラグセット部901はエンド識別子比較器1102から一致又は不一致を示す情報を受領する。一致していた場合には、読出し要求に対する応答S63として完了通知転送要求生成部205へ転送する。不一致の場合には、全てがセットされているフラグを、読出し要求に対する応答S63として完了通知転送要求生成部205へ転送する。
なお、転送要求分配部206は、完了通知転送要求生成部205を介して記憶部207から得られたフラグで示される該複数のインタフェースのそれぞれに、部分完了通知を転送する部分完了通知転送要求を1又は複数発行し、部分完了通知を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行する。
なお、上記の例では、単一のエンドポイント識別子比較器1102を設けているが、フラグセット部901、フラグクリア部902、フラグ読出し部904の各々に対応して、1個ずつ(合計3つ)エンドポイント識別子比較器を設けるようにしてもよい。
図12は、ネットワークアダプタの記憶部207の構成例(第4の例)を示す。
この例では、記憶部207は、フラグセット部901、フラグクリア部902、完了状況記憶フラグ903、フラグ読出し部904に加えて、エンドポイント対応記憶部1201及びエントリ決定部1202を有している。
完了状況記憶フラグ903は、このネットワークアダプタ103が対応するエンドポイントの最大数未満のエントリを持つ。例えば、図14に示すように、完了状況記憶フラグ903は、各インタフェースに対応したポート(4つのポート)の完了状況を示すフラグ、(即ち完了“0”又は未完了“1”)から成る、8つのエントリを記憶する。
エンドポイント対応記憶部1201は、図15に示すように、完了状況記憶フラグ903のエントリ数に対応して、8つのエントリを有し、各エントリは、当該エントリが有効か無効かを示す有効フラグと、エンドポイント識別子と、及び当該エントリの使用頻度を示すリプレースメント情報を記憶する。エントリ決定部1202はこのリプレースメント情報を監視することで、更新されていないエントリを認識して、そのエントリを利用してエンドポイント識別子を管理することができる。これにより、少ない数のエントリを有効に利用することができる。リプレースメント情報としては、例えばLRU(Least Recently Used)を用いることが出来る。この例の様に8エントリであれば、28ビットでLRUを構成することができる。
転送要求分配部206がデータ転送要求を各ポートに分配して送出した時に発行するフラグセット要求、同じく転送要求分配部206が完了通知転送要求(或いは部分完了通知転送要求)を指定されたポートに送出した時に発行するフラグクリア要求は、複数の各インタフェースを識別するインタフェース識別子と、各エンドポイントを識別するエンドポイント識別子を含む。また、完了通知転送要求生成部205からのフラグ読出し要求は、各エンドポイントを識別するエンドポイント識別子を含む。
エントリ決定部1202は、フラグセット部901、フラグクリア部902、ないしは、フラグ読出し部904からのエンドポイント識別子を含むエントリ割当要求を受けて、エントリ割当要求に含まれるエンドポイント識別子と同一のエンドポイント識別子を有するエンドポイント対応記憶部1201のエントリを検索する。その結果、一致するエントリがあった場合には当該エントリを示すエントリ識別子と検索が成功したことを示すヒット情報を要求元(即ちフラグセット部901、フラグクリア部902、フラグ読出し要求部904)に転送する。一方、一致するエントリが無かった場合には、エンドポイント対応記憶部1201のいずれかのエントリを置き換えて当該エンドポイント識別子を有するエントリを新規に作成し、そのエントリを示すエントリ識別子と検索が失敗したことを示すミス情報を要求元に転送する。
フラグセット部901は、転送要求分配部206からのフラグセット要求S551を受けた時に、フラグセット要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行する。そして、ヒット情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグ903のうち、フラグセット要求に含まれるインタフェース識別子に対応するフラグをセットする。一方、ミス情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグを全てセットする。
フラグクリア部902は、転送要求分配部206からのフラグクリア要求S552を受けた時に、フラグクリア要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行する。そして、ヒット情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグ903のうち、フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアする。一方、ミス情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグのうち、フラグクリア要求に含まれるインタフェース識別子に対応するフラグのみクリアし、それ以外のフラグをセットする。
フラグ読出し要求部904は、完了通知転送要求生成部205からフラグ読出し要求S62を受けた時に、フラグ読出し要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行する。そして、ヒット情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグ903を完了通知転送要求生成部205に転送し、ミス情報が得られた場合には、得られたエントリ識別子に対応する完了状況記憶フラグを全てセットし、セットされたフラグを読出し要求に対する応答S63として完了通知転送要求生成部205へ転送する。
なお、転送要求分配部206は、記憶部207から得られたフラグで示される複数の各インタフェースに、部分完了通知を転送する部分完了通知転送要求を発行し、その部分完了通知を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行する。
図16は完了通知のフォーマットを示す。
この完了通知は、ネットワークアダプタ103からコンピュータ104へ完了通知要求によって送られて、コンピュータの主記憶装置304に書き込まれる。
完了通知は4バイトから成り、バイト0:有効/無効フラグ(V)及び転送データの書き込み状況が正常終了かエラー終了かを示すフラグデータ、バイト1:完了通知(部分完了通知)がn個中m個目であること(部分完了通知の個数はデータを送出したインタフェースの数に対応している)を識別する完了通知種別、バイト2,3:何れのエンドポイントかを識別するエンドポイント識別子、から成る。
図17は、完了通知キューの構成を示す。
完了通知キューには、当該ポートに分割されたデータを全て書き終わった後に、部分完了通知の書き込みが行われる。例えば図22において分割されたデータ1、データ5が出力されているポートでは、2つのデータ1、データ5が全て書き終わった段階で、完了通知キューに部分完了通知1が書き込まれる。
プロセッサ305上で動作するプログラムは、キュー領域への書き込みポインタ(テールポインタ)、及びデキュー済みの完了通知キューの場所を示すヘッドポインタを監視している。ここで、テールポインタはネットワークアダプタが持っており、プロセッサからは見えず、プロセッサは読出しポインタ(ヘッドポインタ)で示される箇所をポーリングし続ける。
図18は、4ポート構成の場合の完了通知のフォーマットを示す。
4ポート構成の場合、受信データは4つに分割され、分割データは各ポートを通って転送される。そこで、各ポートを通って転送される分割データの主記憶装置への書込み完了を示す部分完了通知が、各ポートに対応して規定される。部分完了通知のフォーマットは、図16に示したフォーマットの完了通知のものと同様である。
なお、4ポート構成に限らず、一般的に複数nポート構成の場合も同様に、ポートの数nに応じて、部分完了通知が規定されることが理解されるであろう。
図19は、他の例による複数ポート構成の場合の完了通知のフォーマットを示す。
図18に示した例は可変長の場合の例であるが、図19に示す例は、4ポート構成で2ポートしか使用していない場合の完了通知であって、固定長の例である。図16に示したフォーマットと同様の、2ポート用部分完了通知の保管領域が確保される。その余はリザーブ領域となる。なお、固定長の場合でも、2ポートに限らず、一般的に複数nポート構成の場合も同様に、ポートの数nに応じて部分完了通知が規定される。
次に、図20を参照して、主記憶装置に書き込まれた完了通知要求を処理するプログラムの処理動作について説明する。このプログラムはコンピュータ104のプロセッサ305上で実行される。
プログラムの完了判定部401(図4)は、主記憶装置304のキュー領域に書き込まれる完了通知キュー及びそのデキューの状況(図17〜図19)を監視している(S2001)。その監視において、デキューに成功したか否か(デキュー済みか)を判断する(S2002)。判断の結果、デキューに失敗したら、再び監視を続ける。一方、デキューに成功したら、プログラムが自ら持つカウンタに完了通知の個数を設定する(S2003)。部分完了通知の個数は、分割されたデータを転送するために使用したポートの個数に対応する。例えば、4つポートに対して4分割されたデータを転送する場合、部分完了通知の数は“4”となる。この“4”がカウンタに設定される。この情報は、図16に示す完了通知のフォーマットのうち、完了通知種別から得ることが出来る。
カウンタの値は減算されるものであり、まず、カウンタ値が“1”か、判定される(S2004)。その判定の結果、“1”の場合、完了通知成立と判断して(S2005)、終了する。一方、“1”でなければ、完了通知キーからデキューして(S2006)、デキューが成功したか判定する(S2007)。その結果、失敗ならば、成功するまで再度デキューを繰り返す。デキューが成功ならば、カウンタの値を“1”減算して(S2008)、ステップS2004へ移る。
このようにして、当初セットしたカウンタ値(例えば“4”)が順次減算されて、最終的に“1”になれば、完了通知が全て成立と判定する。これにより、プログラムは、RDMA Write要求によって転送されて来て複数に分割されたデータが、全て主記憶装置のデータ領域に書き込まれと判断する。
その後、プログラムのデータ読出し部402は、データ領域に格納された当該データを読み出すことが可能となる。
次に、図22〜図25を参照して、ネットワークアダプタとコンピュータの主記憶装置間のデータ転送における完了通知の処理の例について説明する。
これらの例はいずれも、ネットワークアダプタとコンピュータのI/Oハブ間は複数のPCIeインタフェース(4ポート)で接続されている。また、ネットワークからネットワークアダプタ103で受信されるRDMA Write要求メッセージは、図21に示すような構成を成している。即ち、RDMA Write要求メッセージは、ヘッダ部とデータ部から成り、ヘッダ部は、コマンド(RDMAWrite要求)、送信先ノードID(RDMAWrite要求先ノードID)、送信元ノードID(RDMAWrite要求元ノードID)、宛先エンドポイント識別子、Write先仮想アドレス、データ長、等から構成される。
図22〜図24の例は、いずれも複数のポートに対応した数の部分完了通知(部分完了通知1〜4)をそれぞれ発行するものである。
図22の例は、受信データの容量が多い場合であって、5つに分割したデータ(分割データ)を、4つの各ポートに転送する。その場合、4つの各ポートに対応した部分完了通知1〜4は各ポートに発行される。I/Oハブは、適当な順位で受信した分割データ1〜5及び部分完了通知1〜4を主記憶装置へ転送する。
図23の例は、受信データの容量が少ない場合であり、分割データ1及び分割データ2は2つのポート(P0,P1)に転送される。この場合、部分完了通知1〜4は各ポートに対応しているので、データ転送が行われないポート(P2,P3)に対しても発行される。
図24の例は、図23と同様に、受信データの容量が少ない場合であり、転送すべきデータは分割データ1及び分割データ2の2つに分割され、2つのポート(P0,P1)に転送される。この場合でも、部分完了通知1〜4はポートの数に対応した数分発行されるが、使用されないポート(P2,P3)には転送されず、現に使用されるポート(P0,P1)を通して転送される。
図25の例は、予め使用されるポートの数が限定されている場合(例えば2つのポート)である。図24の例と相違する点は、ポートの数に対応した数分の部分完了通知1〜4が発行されるのではなくて、現に使用されているポートの数分(P0,P1の2つ)の部分完了通知1,2がポートP0,P1に対して発行される。
上記いずれの例でも、部分完了通知は図17〜図19のように、主記憶装置のキュー領域に格納される。コンピュータ104のプロセッサ305はプログラムの実行によって(図20)、主記憶装置に格納される部分完了通知(完了通知キュー)を監視して、関係する全ての部分完了通知が書き込まれたことを判定して、主記憶装置のデータ領域に格納されたデータの読出しを行うことができる。
100:ネットワーク 101:リンク 102:ノード 103:ネットワークアダプタ 104:コンピュータ 105:PCIeインタフェース 201:ネットワークインタフェース 202:受信処理部 203:送信処理部 204:データ転送要求生成部 205:完了通知転送要求生成部 206:転送要求分配部 207:記憶部 208:PCIeインタフェース 302:I/Oハブ 303:主記憶制御部 304:主記憶装置 305:プロセッサ。

Claims (11)

  1. 主記憶装置を有するコンピュータと第1のインタフェースを介して接続され、かつ外部の装置と第2のインタフェースを介して接続され、該外部の装置からの要求に応じて該主記憶装置に対してデータの転送制御を行うデータ転送装置であって、
    該第1のインタフェースまたは第2のインタフェースが該コンピュータの主記憶装置へのアクセス要求を受け付けた時に、該主記憶装置に対するデータ転送要求を発行するデータ転送要求生成部と、
    該データ転送要求生成部が該データ転送要求を発行した後に、データ転送完了を示す完了通知を該主記憶装置に転送する完了通知転送要求を発行する完了通知転送要求生成部と、
    該データ転送要求又は該完了通知転送要求を、該第1のインタフェースを構成する複数のインタフェースの少なくとも1つに発行する転送要求分配部とを有し、
    該完了通知は、複数の部分完了通知から構成され、かつ該部分完了通知は、該部分完了通知が有効又は無効であることを示すフラグを有して構成されることを特徴とするデータ転送装置。
  2. 請求項1に記載のデータ転送装置において、
    前記転送要求分配部は、前記第1のインタフェースを構成する複数の各インタフェースに対応して、該主記憶装置に転送する部分完了通知転送要求をそれぞれ発行することを特徴とするデータ転送装置。
  3. 請求項1に記載のデータ転送装置において、
    主記憶装置に対するデータの書込みの完了状況を記憶して管理する記憶部を有し、
    前記転送要求分配部は、該データ転送要求を該複数のインタフェースの1つに発行する際に、フラグセット要求を該記憶部に発行し、
    該フラグセット要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子を含むものであり、
    該記憶部は、完了状況記憶フラグ、フラグセット部、フラグクリア部、及び、フラグ読出し部を有し、
    該完了状況記憶フラグは、該複数のインタフェースの数と少なくとも同数以上のフラグを有するものであり、
    該フラグセット部は、該フラグセット要求を受けた時に、該フラグセット要求に含まれるインタフェース識別子で示されるインタフェースに対応する該完了状況記憶フラグの少なくとも1つ以上のフラグをセットするものであり、
    該フラグクリア部は、フラグクリア要求を受けた時に、該フラグクリア要求に含まれるインタフェース識別子で示されるインタフェースに対応する該完了状況記憶フラグの少なくとも1つ以上のフラグをクリアするものであり、
    該フラグ読出し部は、フラグ読出し要求を受けた時に、該完了状況記憶フラグを読み出して該転送要求分配部に転送するものであり、
    該フラグクリア要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子を含むものであり、
    該転送要求分配部は、該記憶部に該フラグ読出し要求を発行し、該記憶部から得られたフラグで示される該複数のインタフェースのそれぞれに、該部分完了通知を転送する部分完了通知転送要求を少なくとも1個以上発行し、
    該部分完了通知要求を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行するものである、ことを特徴とするデータ転送装置。
  4. 請求項1に記載のデータ転送装置において、
    主記憶装置に対するデータの書込みの完了状況を示す情報を記憶して管理する記憶部を有し、
    該転送要求分配部は、該データ転送要求を該複数のインタフェースの1つに発行する際に、フラグセット要求を該記憶部へ送出し、該フラグセット要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子と、該エンドポイントの1つを識別するエンドポイント識別子を含むものであり、
    該記憶部は、フラグセット部、フラグクリア部、フラグ読出し部、及び該データ転送装置が該第1のインタフェース、ないしは、該第2のインタフェースを介して接続されるエンドポイントの最大数と少なくとも同数以上の完了状況記憶フラグを有し、
    該完了状況記憶フラグは、該複数のインタフェースの数と少なくとも同数以上のフラグを有するものであり、
    該フラグセット部は、該フラグセット要求を受けた時に、該フラグセット要求に含まれるエンドポイント識別子、及び、インタフェース識別子に対応する該完了状況記憶フラグの少なくとも1つ以上のフラグをセットするものであり、
    該フラグクリア部は、フラグクリア要求を受けた時に、該フラグクリア要求に含まれるエンドポイント識別子、及び、インタフェース識別子に対応する該完了状況記憶フラグの少なくとも1つ以上のフラグをクリアするものであり、
    該フラグ読出し部は、フラグ読出し要求を受けた時に、フラグ読出し要求に含まれるエンドポイント識別子に対応するフラグを読み出して該転送要求分配部に転送するものであり、
    該フラグクリア要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子と、該エンドポイントの1つを識別するエンドポイント識別子を含むものであり、
    該フラグ読出し要求は、該エンドポイント識別子を含むものであり、
    該転送要求分配部は、該記憶部に該フラグ読出し要求を発行し、該記憶部から得られたフラグで示される該複数のインタフェースのそれぞれに、該部分完了通知を転送する部分完了通知転送要求を少なくとも1個以上発行し、
    該部分完了通知を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行するものである、ことを特徴とするデータ転送装置。
  5. 請求項1に記載のデータ転送装置において、
    該主記憶装置に対するデータの書込みの完了状況を示す情報を記憶して管理する記憶部を有し、
    該転送要求分配部は、該データ転送要求を該複数のインタフェースの1つに発行する際に、フラグセット要求を該記憶部へ送出し、該フラグセット要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子と、該エンドポイントの1つを識別するエンドポイント識別子を含むものであり、
    該記憶部は、フラグセット部、フラグクリア部、フラグ読出し部、完了状況記憶フラグ、エンドポイント識別子記憶部、及び、少なくとも1つ以上のエンドポイント識別子比較器を有し、
    該完了状況記憶フラグは、該複数のインタフェースの数と少なくとも同数以上のフラグを有するものであり、
    該エンドポイント識別子記憶部は、該エンドポイント識別子を記憶保持するものであり、
    該エンドポイント識別子比較器は、該エンドポイント識別子記憶部の記憶するエンドポイント識別子と、他の1つのエンドポイント識別子が一致しているか判定し、一致ないしは不一致を出力するものであり、
    該フラグセット部は、該フラグセット要求を受けた時に、該フラグセット要求に含まれるエンドポイント識別子を該エンドポイント識別子比較器に入力し、比較結果が一致している場合には、該フラグセット要求に含まれるインタフェース識別子に対応するフラグをセットし、不一致の場合には、全てのフラグをセットするものであり、
    該フラグクリア部は、フラグクリア要求を受けた時に、該フラグクリア要求に含まれるエンドポイント識別子を該エンドポイント識別子比較器に入力し、比較結果が一致している場合には、該フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアし、不一致の場合には、該フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアし、それ以外のフラグはセットするものであり、
    該フラグクリア要求は、該エンドポイント識別子、及び、該インタフェース識別子を含むものであり、
    該フラグ読出し要求部は、フラグ読出し要求を受けた時に、該フラグ読出し要求に含まれるエンドポイント識別子を該エンドポイント識別子比較器に入力し、比較結果が一致している場合には、該フラグを読み出して該転送要求分配部に転送し、不一致の場合には全てのフラグがセットされていることを該転送要求分配部に転送するものであり、
    該フラグ読出し要求は、該エンドポイント識別子を含むものであり、
    該転送要求分配部は、該記憶部に該フラグ読出し要求を発行し、該記憶部から得られたフラグで示される該複数のインタフェースのそれぞれに、該部分完了通知を転送する部分通知転送要求を少なくとも1個以上発行し、
    該部分完了通知を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行するものである、ことを特徴とするデータ転送装置。
  6. 請求項1に記載のデータ転送装置において、
    該主記憶装置に対するデータの書込みの完了状況を示す情報を記憶して管理する記憶部を有し、
    該転送要求分配部は、該テータ転送要求を該複数のインタフェースの1つに発行する際に、フラグセット要求を記憶部に発行し、
    該フラグセット要求は、該複数のインタフェースのうち少なくとも1つを識別するインタフェース識別子と、該エンドポイントの1つを識別するエンドポイント識別子を含むものであり、
    該記憶部は、エンドポイント対応記憶部、エントリ決定部、フラグセット部、フラグクリア部、フラグ読出し部、及び、該複数のインタフェースの数と同数のフラグを記憶する完了状況記憶フラグを少なくとも1つ以上を有し、
    該完了状況記憶フラグは、該複数のインタフェースの数と少なくとも同数以上のフラグを有するものであり、
    該エンドポイント対応記憶部は、該完了状況記憶フラグの数と少なくとも同数以上のエントリを有するものであり、
    該エントリは、該エンドポイント識別子及び当該エントリの有効ないしは無効を示す有効フラグを含むものであり、
    該エントリ決定部は、エントリ割当要求を受けて、該エントリ割当要求に含まれるエンドポイント識別子と同一のエンドポイント識別子を有するエンドポイント対応記憶部のエントリを検索し、一致するエントリがあった場合には当該エントリを示すエントリ識別子と検索が成功したことを示すヒット情報を要求元に転送し、一致するエントリが無かった場合には、エンドポイント対応記憶部のいずれかのエントリを置き換えて当該エンドポイント識別子を有するエントリを新規に作成し、そのエントリを示すエントリ識別子と検索が失敗したことを示すミス情報を要求元に転送するものであり、
    該エントリ割当要求は、該エンドポイント識別子を含むものであり、
    該フラグセット部は、該フラグセット要求を受けた時に、該フラグセット要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行し、ヒット情報が得られた場合には、得られたエントリ識別子に対応する該完了状況記憶フラグのうち、該フラグセット要求に含まれるインタフェース識別子に対応するフラグをセットし、ミス情報が得られた場合には、得られたエントリ識別子に対応する該完了状況記憶フラグを全てセットするものであり、
    該フラグクリア部は、フラグクリア要求を受けた時に、該フラグクリア要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行し、ヒット情報が得られた場合には、得られたエントリ識別子に対応する該完了状況記憶フラグのうち、該フラグクリア要求に含まれるインタフェース識別子に対応するフラグをクリアし、ミス情報が得られた場合には、得られたエントリ識別子に対応する該完了状況記憶フラグのうち、該フラグクリア要求に含まれるインタフェース識別子に対応するフラグのみクリアし、それ以外のフラグをセットするものであり、
    該フラグクリア要求は、該エンドポイント識別子、及び、該インタフェース識別子を含むものであり、
    該フラグ読出し要求部は、フラグ読出し要求を受けた時に、該フラグ読出し要求に含まれるエンドポイント識別子を含むエントリ割当要求を発行し、ヒット情報が得られた場合には、得られたエントリ識別子に対応する該完了状況記憶フラグを該転送要求分配部に転送し、ミス情報が得られた場合には、得られたエントリ識別子に対応する前期完了状況記憶フラグを全てセットし、セットされたフラグを該転送要求分配部に転送するものであり、
    該フラグ読出し要求は、該エンドポイント識別子を含むものであり、
    該転送要求分配部は、該記憶部に該フラグ読出し要求を発行し、該記憶部から得られたフラグで示される該複数のインタフェースのそれぞれに、該部分完了通知を転送する部分通知転送要求を少なくとも1個以上発行し、
    該部分完了通知を発行したインタフェースを示すインタフェース識別子を含むフラグクリア要求を発行するものである、ことを特徴とするデータ転送装置。
  7. 請求項1乃至6のいずれかの請求項に記載のデータ転送装置において、
    該部分完了通知は固定長のデータであり、
    該完了通知は、該部分完了通知を少なくとも1つ以上含む可変長のデータであり、
    該完了通知又は該完了通知を構成する少なくとも1つ以上の部分完了通知は、完了通知のサイズないしは完了通知を構成する部分完了通知の個数を示す情報を含むことを特徴とするデータ転送装置。
  8. 請求項1乃至6のいずれかの請求項に記載のデータ転送装置において、
    前記部分完了通知は固定長のデータであり、
    前記完了通知は、前記部分完了通知を少なくとも1つ以上含む固定長のデータであり、
    前記完了通知又は前記完了通知を構成する少なくとも1つ以上の部分完了通知は、完了通知を構成する部分完了通知の個数を示す情報を含むことを特徴とするデータ転送装置。
  9. 請求項1乃至8のいずれかの請求項に記載のデータ転送装置において、
    前記第1のインタフェースはPCI Expressであることを特徴とするデータ転送装置。
  10. 請求項1乃至8のいずれかの請求項に記載のデータ転送装置において、
    前記第2のインタフェースは、コンピュータ間を接続するネットワークに接続されることを特徴とするデータ転送装置。
  11. 主記憶装置を有するコンピュータと、該コンピュータと第1のインタフェースを介して接続され、かつ外部の装置と第2のインタフェースを介して接続され、該外部の装置からの要求に応じて該主記憶装置に対してデータの転送制御を行うデータ転送装置とを含むコンピュータシステムにおいて、
    該データ転送装置は:
    該第1のインタフェースまたは第2のインタフェースが該コンピュータの主記憶装置へのアクセス要求を受け付けた時に、該主記憶装置に対するデータ転送要求を発行するデータ転送要求生成部と、
    該データ転送要求生成部が該データ転送要求を発行した後に、データ転送完了を示す完了通知を該主記憶装置に転送する完了通知転送要求を発行する完了通知転送要求生成部と、
    該データ転送要求又は該完了通知転送要求を、該第1のインタフェースを構成する複数のインタフェースの少なくとも1つに発行する転送要求分配部と、を有し、
    該完了通知は、複数の部分完了通知から構成され、かつ該部分完了通知は、該部分完了通知が有効又は無効であることを示すフラグを有して構成され、
    該コンピュータは:
    データ処理するプロセッサと、先入れ先出し(FIFO)される完了通知を記憶する所定領域を有する前記主記憶装置と、該主記憶装置と接続されると共に、第1のインタフェースを介して該データ転送装置と接続されるI/Oハブを有し、
    該プロセッサは、プログラムの実行によって、該所定領域における完了通知の状況を監視する完了判定手段と、該主記憶装置からデータを読み出すデータ読出手段とを実現し、
    該完了判定手段は、該完了通知を構成する全ての部分完了通知が該所定領域から読み出せた時に、データ転送完了であることを該データ読出手段に通知することを特徴とするコンピュータシステム。
JP2009153644A 2009-06-29 2009-06-29 データ転送装置及びコンピュータシステム Pending JP2011008678A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009153644A JP2011008678A (ja) 2009-06-29 2009-06-29 データ転送装置及びコンピュータシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009153644A JP2011008678A (ja) 2009-06-29 2009-06-29 データ転送装置及びコンピュータシステム

Publications (1)

Publication Number Publication Date
JP2011008678A true JP2011008678A (ja) 2011-01-13

Family

ID=43565220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009153644A Pending JP2011008678A (ja) 2009-06-29 2009-06-29 データ転送装置及びコンピュータシステム

Country Status (1)

Country Link
JP (1) JP2011008678A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014531687A (ja) * 2011-09-30 2014-11-27 オラクル・インターナショナル・コーポレイション ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
US10268399B2 (en) 2016-09-16 2019-04-23 Toshiba Memory Corporation Memory system using message monitoring and first and second namespaces

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10268399B2 (en) 2016-09-16 2019-04-23 Toshiba Memory Corporation Memory system using message monitoring and first and second namespaces

Similar Documents

Publication Publication Date Title
US8719456B2 (en) Shared memory message switch and cache
US6631430B1 (en) Optimizations to receive packet status from fifo bus
US8265092B2 (en) Adaptive low latency receive queues
USRE47756E1 (en) High performance memory based communications interface
US7668984B2 (en) Low latency send queues in I/O adapter hardware
EP1421739B1 (en) Transmitting multicast data packets
US7320041B2 (en) Controlling flow of data between data processing systems via a memory
US7702827B2 (en) System and method for a credit based flow device that utilizes PCI express packets having modified headers wherein ID fields includes non-ID data
US7415598B2 (en) Message synchronization in network processors
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
US20100064070A1 (en) Data transfer unit for computer
US9596186B2 (en) Multiple processes sharing a single infiniband connection
EP1302853A2 (en) Data transfer, synchronising applications, and low latency networks
US7093037B2 (en) Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors
US7710990B2 (en) Adaptive low latency receive queues
US9288163B2 (en) Low-latency packet receive method for networking devices
JP2011008678A (ja) データ転送装置及びコンピュータシステム
US8055818B2 (en) Low latency queue pairs for I/O adapters
US20020049875A1 (en) Data communications interfaces
US20020049878A1 (en) Data communications interfaces
Liaaen et al. Dolphin SCI Adapter Cards.
JP2008250496A (ja) エンジン・プロセッサ連携システム及び連携方法
Phan Byrne et al.(45) Date of Patent: Jul. 16, 2013