JP5482230B2 - 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム - Google Patents

通信装置、情報処理装置、通信装置の制御方法及び制御プログラム Download PDF

Info

Publication number
JP5482230B2
JP5482230B2 JP2010013609A JP2010013609A JP5482230B2 JP 5482230 B2 JP5482230 B2 JP 5482230B2 JP 2010013609 A JP2010013609 A JP 2010013609A JP 2010013609 A JP2010013609 A JP 2010013609A JP 5482230 B2 JP5482230 B2 JP 5482230B2
Authority
JP
Japan
Prior art keywords
data
division position
information processing
communication
main storage
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.)
Active
Application number
JP2010013609A
Other languages
English (en)
Other versions
JP2011150666A (ja
Inventor
新哉 平本
安島雄一郎
智宏 井上
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010013609A priority Critical patent/JP5482230B2/ja
Priority to US13/007,288 priority patent/US8965996B2/en
Priority to EP11151587.0A priority patent/EP2375325B1/en
Publication of JP2011150666A publication Critical patent/JP2011150666A/ja
Application granted granted Critical
Publication of JP5482230B2 publication Critical patent/JP5482230B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、通信装置、情報処理装置、通信装置の制御方法及び制御プログラムに関する。
従来より、ローカルノードとリモートノードとの間でRDMA(Remote Direct Memory Access)通信を行う技術が知られている。
図1に、ローカルノードの主記憶装置装置からリモートノードの主記憶装置装置へデータを送信する場合の例(Put通信の例)を示す。図1の例では、DMA(Direct Memory Access)の転送単位は128Byteであり、プロセッサによって指定された転送開始アドレスは、ローカルノードが40であり、リモートノードが88の例である。また、データ長は1348Byteであり、MTU(Maximum Transmission Unit;1パケットあたりの最大転送サイズ)は512Byteとする。この例では、データは3つのパケットに分割され、リモートノードの主記憶装置に送信される。しかし、ローカルノード及びリモートノードのいずれの主記憶装置においても、パケット1〜3のデータ領域は、DMA転送単位にアライン(位置合わせ、配列)されない。従って、データを先頭から128Byte毎に読み出し(リード)及び書き込み(ライト)をすると、データの読み出し及び書き込みについてデータ転送効率が悪化する。
例えば、パケット1のデータをローカルノードの主記憶装置から読み出す際、ローカルノードのプロセッサはアドレス範囲40〜167のデータを読み出すために、アドレス範囲0〜127及びアドレス範囲128〜255に対し、それぞれ128Byteのデータの読み出しが必要となる。さらに、ローカルノードのプロセッサはアドレス範囲168〜295のデータを読み出すために、アドレス範囲128〜255及びアドレス範囲256〜383に対し、それぞれ128Byteのデータの読み出しが必要となる。このように、ローカルノードのプロセッサは同じアドレス(アドレス範囲128〜255)に対し、2回データの読み出しを実行しなければならず、データの読み出しの効率が悪化する。尚、アドレス256以降についても、同様に、ローカルノードのプロセッサは同じアドレスに対し2回データの読み出しをしなければならない。
同様に、パケット1のデータをリモートノードの主記憶装置に書き込む際も、データの書き込み効率が悪化する。例えば、パケット1のデータをリモートノードの主記憶装置に書き込む際、リモートノードのプロセッサはアドレス範囲88〜215へデータを書き込むために、アドレス範囲0〜127及びアドレス範囲128〜255に対し、それぞれ128Byteのデータの書き込みが必要となる。リモートノードのプロセッサはアドレス範囲216〜343へデータを書き込むために、アドレス範囲128〜255及びアドレス範囲256〜383に対し、それぞれ128Byteのデータの書き込みが必要となる。このように、リモートノードのプロセッサは同じアドレス(アドレス範囲128〜255)に対し、2回データの書き込みを実行しなければならず、データの書き込みの効率が悪化する。尚、アドレス256以降についても、リモートノードのプロセッサは同じアドレスに対し2回データの書き込みをしなければならない。さらに、2回目の書き込みの際には、前に書き込んだデータを上書きしないようにする必要がある。
また、従来より、受信したリードライトなどのI/Oリクエスト(Input Output request:入出力リクエスト)の先頭をキャッシュラインの境界で分割し、後続のI/Oリクエストをキャッシュラインに位置合わせする分割方法やシステムが知られている。
図2は、図1のPut通信の例について、上述したI/Oリクエストの先頭をキャッシュラインの境界で分割し、後続のI/Oリクエストをキャッシュラインに位置合わせする分割方法を適用した結果を示す図である。
ローカルノードがパケット1のデータを読み出す場合は、パケット1の先頭部分をアドレス127とアドレス128との境界で分割し、パケット1の残り部分は、128Byte境界に位置合わせ(アライン)するように分割する。これによって、パケット1の先頭と末尾のデータを除けば、パケット1のデータは128Byte境界に位置合わせされ、1つのパケットのデータを読み出す際に、同じアドレスに対し2回読み出しを2回実行することはなくなる。
リモートノードがパケット1のデータを書き込む場合も、パケット1の先頭部分をアドレス127とアドレス128との境界で分割し、パケット1の残り部分は、128Byte境界に位置合わせ(アライン)するように分割する。これによって、パケット1の先頭と末尾を除けば、パケット1のデータは128Byte境界に位置合わせされ、1つのパケットのデータを書き込む際に、同じアドレスに対し2回書き込みを実行することはなくなる。
特開2005−182491号公報 米国特許出願公開第2008/0235484号明細書
しかしながら、上述したI/Oリクエストの先頭をキャッシュラインの境界で分割し、後続のI/Oリクエストをキャッシュラインに位置合わせする分割方法でも、パケットの分割点を含むアドレスのデータの読み出し及び/又は書き込みについてのデータ転送の効率は悪化する。例えば、ローカルノードがパケット1の末尾のデータを読み出す際は、ローカルノードのプロセッサは、アドレス512〜639に対し、128Byteのデータの読み出しを実行する。また、ローカルノードがパケット2の先頭データを読み出す際は、ローカルノードのプロセッサは、アドレス範囲512〜639に対し、128Byteのデータの読み出しを実行する。このように、パケットの分割点を含むアドレス(アドレス512〜639)では、2回データの読み出しを実行する必要がある。同様に、リモートノードがパケット1の末尾データとパケット2の先頭データとを書き込む際も、リモートノードのプロセッサは、アドレス範囲512〜639に対し、128Byteのデータの書き込みを2回実行する必要がある。
上記課題に鑑み、明細書に開示された通信装置、情報処理装置、通信装置の制御方法及び制御プログラムは、分割点を含むアドレスのデータの読み出し及び/又は書き込みの効率を向上することを目的とする。
上記目的を達成するため、明細書に開示された通信装置は、第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続され、RDMA通信を行う通信装置において、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信する送信部を有することを特徴とする。
明細書に開示された情報処理装置は、他の情報処理装置から要求されたデータである入出力リクエストを送信すると共にRDMA通信を行う情報処理装置において、前記要求されたデータを保持する主記憶装置と、前記要求されたデータを、前記他の情報処理装置が有する主記憶装置又は前記情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、前記分割位置計算部が算出した分割位置に基づき、前記要求されたデータを分割して、前記他の情報処理装置に送信する送信部を有することを特徴とする。
明細書に開示された通信装置の制御方法は、第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続されると共にRDMA通信を行う通信装置の制御方法において、前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを有することを特徴とする。
明細書に開示された制御プログラムは、第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続されると共にRDMA通信を行う通信装置の制御プログラムにおいて、コンピュータに、前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを実行させることを特徴とする。
明細書に開示された通信装置、情報処理装置、通信装置の制御方法及び制御プログラムは、分割点を含むアドレスのデータの読み出し及び/又は書き込みの効率を向上する。
ローカルノードの主記憶装置からリモートノードの主記憶装置へデータを送信する例(Put通信の例)を示す図である。 図1の例に特許文献2の分割方法を適用した結果を示す図である 第1実施例にかかるネットワークインタフェース装置の構成図である。 ディスクリプタのフォーマットを示す図である。 Getリクエストパケットのフォーマットを示す図である。 分割位置計算部で実行される処理を示すフローチャートである。 Put通信でアライメントタイプがローカルノードである場合のデータの分割方法を示す図である。 Put通信でアライメントタイプがリモートノードである場合のデータの分割方法を示す図である。 第2実施例にかかるディスクリプタのフォーマットを示す図である。 Getリクエストパケットのフォーマットを示す図である。 分割位置計算部で実行される処理を示すフローチャートである。 Put通信でアライメントタイプがリモートノードである場合のデータの分割方法を示す図である。 第3実施例にかかるGetリクエストパケットのフォーマットを示す図である。 ネットワークインタフェース装置2の構成図である。 ローカルノード側の分割位置計算部で実行される処理を示すフローチャートである。
以下、図面を参照しながら、開示の通信装置、情報処理装置、通信装置の制御方法及び制御プログラムについて、実施の形態を説明する。
まず、以下の実施例で使用される用語の定義を説明する。ローカルノードとは、ノード間通信において、通信を要求した情報処理装置等のノードである。リモートノードとは、ノード間通信において、ローカルノードからの通信要求を受け付けた情報処理装置等のノードである。RDMA通信とは、ローカルノードがローカルノード自身の主記憶装置とリモートノードの主記憶装置を指定し、指定した主記憶装置間でデータ転送を行う通信方式である。RDMA通信には、ローカルノードのデータをリモートノードへ送信するPut通信と、リモートノードのデータをローカルノードに送信するGet通信とがある。Getリクエストパケットとは、 Get通信において、ローカルノードがリモートノードへ送るパケットである。Getリクエストパケットは、ローカルノード及びリモートノードの転送領域の情報を持つ。Getレスポンスパケットとは、 Get通信において、リモートノードがローカルノードへ送るパケットである。Getレスポンスパケットは、Getリクエストパケットで指定されたデータを持つ。ディスクリプタとは、CPU(Central Processing Unit)等の演算処理装置としてのプロセッサが通信装置としてのネットワークインタフェース装置に対して処理の開始を伝えるコマンド、又はネットワークインタフェース装置がプロセッサに対して処理の完了を伝えるコマンドである。ディスクリプタは、処理の種類の情報や、処理がデータ転送の場合は転送領域などの情報を持つ。
(第1実施例)
図3は、第1実施例にかかるネットワークインタフェース装置の構成図である。図4は、ディスクリプタのフォーマットの例を示す図である。図5は、Getリクエストパケットのフォーマットの例を示す図である。
図3において、ノード1は、ネットワークインタフェース装置2を介してネットワーク3に接続されている。ノード1は、ネットワーク3を介して他のノード(不図示)と接続されており、他のノードに対し通信を要求する場合は、ローカルノードとなり、他のノードから通信要求を受け付ける場合は、リモートノードになる。
ノード1は、ノード1全体の動作、主記憶装置12へのデータの書き込み及び主記憶装置12からのデータの読み出しを制御するプロセッサ11と、パケットのデータやディスクリプタを記憶する主記憶装置12とを備えている。ノード1はバス4を介してネットワークインタフェース装置2に接続されている。
ネットワークインタフェース装置2は、ディスクリプタ受信部21、分割位置計算部22、パケット送信部23、DMAコントローラ24及びパケット受信部25を備えている。ディスクリプタ受信部21、パケット送信部23及びパケット受信部25は、不図示の入出力回路で構成されている。分割位置計算部22及びDMAコントローラ24は、不図示のマイコン(Micro Computer)等で構成されている。
ディスクリプタ受信部21は、主記憶装置12からディスクリプタを受信し、分割位置計算部22に送信する。パケット受信部25は、リモートノードからパケットを受信し、そのパケットがGetリクエストパケットであれば、分割位置計算部22に送る。分割位置計算部22は、ディスクリプタ又はGetリクエストパケットに基づいてデータの分割位置を算出し、各分割されたデータのDMAアドレス及びデータ長をDMAコントローラ24に送信する。DMAアドレスは、各分割されたデータの先頭アドレスを示す。また、分割位置計算部22は、分割されたデータに対応するパケットヘッダを生成しパケット送信部23に送信する。DMAコントローラ24は、受信したDMAアドレス及びデータ長に基づいてDMAリクエストをノード1に送信し、各データを主記憶装置12から読み出し、パケット送信部23に送信する。つまり、DMAコントローラ24は、受信したDMAアドレス及びデータ長に基づいてデータの分割を行う。パケット送信部23は、パケットヘッダ及びDMAコントローラ24からのデータをパケットにし、リモートノードへ送信する。尚、分割位置計算部22による、ディスクリプタ又はGetリクエストパケットに基づいたデータの分割位置の詳細な算出方法は、後述の図6において説明する。
図4において、ディスクリプタは、コマンド41、リモートノードアドレス42、MTU43、ローカルノード転送開始アドレス44、リモートノード転送開始アドレス45、データ長46及びアライメントタイプ47(第1フィールド)のフィールドを有する。コマンド41は、「Put」や「Get」などの通信の種類を指定する。リモートノードアドレス42は、リモートノードのネットワーク上のアドレスを指定する。MTU43は、1パケットあたりの最大転送サイズを指定する。ローカルノード転送開始アドレス44は、ローカルノードのデータ転送開始アドレスを指定する。リモートノード転送開始アドレス45は、リモートノードのデータ転送開始アドレスを指定する。データ長46は、転送されるデータの長さを指定する。アライメントタイプ47は、データをローカルノード又はリモートノードのいずれの主記憶装置のアドレスに位置合わせ(アライン)するかを指定する。尚、コマンド41で「Put」通信が指定されている場合は、ディスクリプタは、Putディスクリプタと呼ばれる。また、コマンド41で「Get」通信が指定されている場合は、ディスクリプタは、Getディスクリプタと呼ばれる。ディスクリプタは、プログラマ等により予め作成され、複数のディスクリプタが主記憶装置12に格納されている。
図5において、Getリクエストパケットは、パケットタイプ51、ローカルノードアドレス52、リモートノードアドレス53、MTU54、ローカルノード転送開始アドレス55、リモートノード転送開始アドレス56、データ長57及びアライメントタイプ58(第1フィールド)のフィールドを有する。パケットタイプ51は、Getリクエストパケットなどのパケットの種類を指定する。ローカルノードアドレス52は、ローカルノードのネットワーク上のアドレスを指定する。リモートノードアドレス52は、リモートノードのネットワーク上のアドレスを指定する。MTU54は、1パケットあたりの最大転送サイズを指定する。ローカルノード転送開始アドレス55は、ローカルノードのデータ転送開始アドレスを指定する。リモートノード転送開始アドレス56は、リモートノードのデータ転送開始アドレスを指定する。データ長57は、転送されるデータの長さを指定する。アライメントタイプ58は、データをローカルノード又はリモートノードのいずれの主記憶装置のアドレスに位置合わせ(アライン)するかを指定する。
図4のアライメントタイプ47及び図5のアライメントタイプ58は、プロセッサ11がデータをローカルノード又はリモートノードのいずれの主記憶装置のアドレスに位置合わせ(アライン)するかを選択できるようにするために設けられている。例えば、Get通信において、1つのローカルノードが複数のリモートノードからデータをそれぞれ取得する場合、ローカルノードによるデータの書き込み回数が多い。よって、アライメントタイプとしてローカルノードが指定されていれば、データをローカルノードの主記憶装置のアドレスに位置合わせ(アライン)することができ、データの書き込み効率が向上する。逆に、1つのリモートノードが複数のローカルノードにデータを送る場合、リモートノードによるデータの読み出し回数が多い。よって、アライメントタイプとしてリモートノードが指定されていれば、データをリモートノードの主記憶装置のアドレスに位置合わせ(アライン)することができ、データの読み出し効率が向上する。
ここで、Put通信の場合とGet通信の場合のネットワークインタフェース装置2の動作を説明する。
Put通信の場合は、ディスクリプタ受信部21がローカルノードの主記憶装置12からPutディスクリプタを受信する。ディスクリプタ受信部21は、Putディスクリプタ内のローカルノード転送開始アドレス44、リモートノード転送開始アドレス45、データ長46、及びアライメントタイプ47を分割位置計算部22に送信する。分割位置計算部22は、これらのフィールドの値に基づいてデータの分割位置を算出し、DMAコントローラ24へ各データのDMAアドレス及びデータ長を送信する。また、分割位置計算部22は、分割された各データに対応するパケットヘッダを生成しパケット送信部23に送信する。DMAコントローラ24は、ローカルノードへDMAリクエストを送信し、各データを主記憶装置12から読み出し、パケット送信部23に送信する。パケット送信部23は、分割位置計算部22からのパケットヘッダ及びDMAコントローラ24からのデータからパケットを作成し、リモートノードへ送信する。
Get通信の場合は、ローカルノードのネットワークインタフェース装置は、Getディスクリプタ内のアライメントタイプ47をGetリクエストパケットでリモートノードに送信する。リモートノード側のネットワークインタフェース装置のパケット受信部25は、Getリクエストパケットを受信する。パケット受信部25は、Getリクエストパケットのローカルノード転送開始アドレス55、リモートノード転送開始アドレス56、データ長57及びアライメントタイプ58を分割位置計算部22に送信する。その後、Put通信と同様に、分割位置計算部22がこれらのフィールドの値に基づいてデータの分割位置を算出し、DMAコントローラ24へ各データのDMAアドレス及びデータ長を送信する。また、分割位置計算部22は、分割された各データに対応するパケットヘッダを生成しパケット送信部23に送信する。DMAコントローラ24は、ローカルノードへDMAリクエストを送信し、各データを主記憶装置12から読み出し、パケット送信部23に送信する。パケット送信部23は、分割位置計算部22からのパケットヘッダ及びDMAコントローラ24からのデータからパケットを作成し、ローカルノードへ送信する。尚、分割位置計算部22による、ディスクリプタ又はGetリクエストパケットに基づいたデータの分割位置の詳細な算出方法は、後述の図6において説明する。
図6は、分割位置計算部22で実行される処理を示すフローチャートである。
分割位置計算部22は、受信したディスクリプタのコマンドがGetであるか否かを判別する(ステップS1)。受信したディスクリプタのコマンドがGetである場合には(ステップS1でYES)、ローカルノード側の分割位置計算部22は、分割位置の計算の処理を行わないので、Getリクエストパケットを生成し、パケット送信部25へ送信する(ステップS2)。その後、本処理を終了する。
受信したディスクリプタのコマンドがGetでない場合には(ステップS1でNO)、分割位置計算部22は、ディスクリプタコマンド又はパケットタイプの種類に応じてDMAアドレス(分割データを主記憶装置からリードする際の先頭アドレス)を設定する。具体的には、分割位置計算部22は、受信した対象がGetリクエストパケットであるか否かを判別する(ステップS3)。受信した対象がGetリクエストパケットである場合には(ステップS3でYES)、分割位置計算部22は、DMAアドレスをGetリクエストパケットのリモートノード転送開始アドレスに設定する(ステップS4)。受信した対象がPutディスクリプタである場合には(ステップS3でNO)、分割位置計算部22は、DMAアドレスをPutディスクリプタのローカルノード転送開始アドレスに設定する(ステップS5)。
次に、分割位置計算部22は、Putディスクリプタ又はGetリクエストパケットのフィールドの値に基づいてデータ先頭アドレスと終点アドレスを設定する。具体的には、分割位置計算部22は、Putディスクリプタ又はGetリクエストパケットに基づいてアライメントタイプがローカルノードを指定するか否かを判別する(ステップS6)。データ先頭アドレスは、アラインする側(位置合わせする側)のノードの主記憶装置上での分割データの先頭アドレスを示す。初回の分割データ先頭アドレスは、ローカルノード転送開始アドレス又はリモートノード転送開始アドレスのどちらかである。分割位置計算部22は、アライメントタイプがローカルノードを指定する場合には(ステップS6でYES)、データ先頭アドレスをローカルノード転送開始アドレスに設定する(ステップS7)。また、分割位置計算部22は、終点アドレスを、ローカルノード転送開始アドレスにデータ長−1を加算した値に設定する(ステップS8)。分割位置計算部22は、アライメントタイプがリモートノードを指定する場合には(ステップS6でNO)、データ先頭アドレスをリモートノード転送開始アドレスに設定する(ステップS9)。また、分割位置計算部22は、終点アドレスを、リモートノード転送開始アドレスにデータ長−1を加算した値に設定する(ステップS10)。尚、終点アドレスは、アラインする側(位置合わせする側)のノードの主記憶装置上での転送領域の末尾アドレスを示す。
次に、分割位置計算部22は、データ末尾アドレスを設定することで、パケットの分割位置を算出する。具体的には、分割位置計算部22は、データ末尾アドレスが終点アドレスであるか否かを判別する(ステップS11)。データ末尾アドレスは、アラインする側(位置合わせする側)のノードの主記憶装置上での分割データの末尾アドレスを示す。データ末尾アドレスが終点アドレスである場合には(ステップS11でYES)、本処理を終了する。データ末尾アドレスが終点アドレスでない場合には(ステップS11でNO)、分割位置計算部22は、データ末尾アドレスを、ステップS5又はステップS9で設定したデータ先頭アドレスにMTU−1を加算した値に仮設定する(ステップS12)。次いで、分割位置計算部22は、仮設定されたデータ末尾アドレスを、(データ末尾アドレス & 〜(DMA転送単位−1)) −1に切り下げる。(ステップS13)。ここで、「&」はビット毎に論理積演算を行う演算子であり、「~」はビット毎に否定演算を行う演算子である。ステップS13により、データ末尾アドレスは、DMA転送単位の倍数−1の値となり、後続の分割データをアライメント境界で(例えば128byte単位で)アラインできる。次いで、分割位置計算部22は、データ末尾アドレスが終点アドレスを超えていればデータ末尾アドレスを終点アドレスに設定する(ステップS14)。
以上のステップにより、分割データの位置が求まるため、分割位置計算部22は、分割データを主記憶装置12から読み出すための処理を実行する。具体的には、分割位置計算部22は、データ長を(データ末尾アドレス−データ先頭アドレス+1)によって算出し、DMAアドレス及びデータ長をDMAコントローラ24へ送信する(ステップS15)。分割位置計算部22は、さらに分割データに対応したPutパケットヘッダ又はGetレスポンスパケットヘッダを生成し、パケット送信部23へ送信する(ステップS16)。分割位置計算部22は、次の分割位置を求めるため、データの先頭アドレス及びDMAアドレスに(データ末尾アドレス−データ先頭アドレス+1(即ち分割データのデータ長))を加算する(ステップS17)。分割位置計算部22は、データの末尾アドレスが終点アドレスと等しくなるまで、ステップS11〜S17のループ処理を続ける。
図7は、Put通信でアライメントタイプがローカルノードである場合のデータの分割方法を示す図である。
図7では、DMA転送単位は128Byteとする。先頭のパケット1のデータ領域は、MTUの通りに分割されると、アドレス40〜551となる。分割位置計算部22は、データ領域の末尾を(DMA転送単位の倍数−1)に切り下げる。ここでは、DMA転送単位が128Byteなので、分割位置計算部22は、データ領域の末尾をアドレス551からアドレス511に切り下げる。これによって、後続のパケット2のデータ領域がアドレス512から始まり、アライメント境界(128Byte単位)でアラインされる。以降、分割位置計算部22は、後続のパケットのデータも、データ領域の末尾がDMA転送単位の倍数−1となるようにデータを分割する。図7の例では、MTUはDMA転送サイズの倍数であるため、データをMTU通りに分割すれば、データ領域の末尾がDMA転送単位の倍数−1となる。パケット2のデータ領域は、アドレス512〜1023となり、パケット3のデータ領域はアドレス1024から転送領域末尾のアドレス1387までとなる。この分割方法により、先頭と最後パケット以外のデータはローカルノード上の主記憶装置上でアライメント境界(128Byte単位)にアラインされるため、効率よくデータを主記憶装置から読み出すことができる。
図8は、Put通信でアライメントタイプがリモートノードである場合のデータの分割方法を示す図である。
図8では、DMA転送単位は128Byteとする。先頭のパケット1のデータ領域は、MTU通りに分割されると、アドレス40〜551となる。リモートノードの転送開始アドレスは88であるため、データは、アドレス範囲88〜599の領域に書き込まれる。分割位置計算部22は、このデータ領域の末尾がリモートノードの主記憶装置上でDMA転送単位の倍数−1となるようにデータ領域の末尾を切り下げる。ここでは、DMA転送単位は128Byteであるので、リモートノードの主記憶装置上でデータ領域がアドレス範囲88〜511となるように、分割位置計算部22はローカルノードの主記憶装置上でデータ領域をアドレス範囲40〜463に切り下げる。これによって、後続のパケット2のデータ領域が、リモートノードの主記憶装置上でアドレス512から始まり、アライメント境界(128Byte単位)でアラインされる。以降、分割位置計算部22は、データ領域の末尾がリモートノードの主記憶装置上でDMA転送単位の倍数−1になるように、データを分割する。図8の例では、1パケットあたりの最大転送サイズを表すMTUはDMA転送サイズの倍数であるため、データをMTUが表すサイズの通りに分割すれば、データ領域の末尾はDMA転送単位の倍数−1となる。パケット2のデータ領域はMTUの通り、アドレス範囲464〜983となり、パケット3のデータ領域はアドレス984からアドレス1387までの範囲の領域となる。この分割方法により、先頭パケットと末尾パケットの以外のデータは、リモートノード上での主記憶装置上でアライメント境界(128Byte単位)にアラインされるため、効率よくデータをリモートノードの主記憶装置に書き込むことができる。
尚、図7及び図8のDMA転送単位、MTU及びPutディスクリプタのフィールド値は一例である。DMA転送単位がローカルノードとリモートノードとで等しければ、常に上述した分割方法が適用できる。Get通信でのデータ分割方法は、(1)リモートノード側のネットワークインタフェース装置2がデータの分割位置を算出する点、及び(2)Getリクエストパケット内のフィールド値に基づいてデータの分割位置を算出する点を除けば、Put通信のデータ分割方法と同様である。
以上説明したように、第1実施例によれば、転送対象のデータの分割位置が、指定されたノードの主記憶装置のアドレス上でアライメント境界となるように、転送対象のデータがパケットに分割される。よって、パケットの分割点を含むアドレスのデータの読み出し及び/又は書き込みの効率が向上する。
(第2実施例)
第2実施例は、データの分割位置を切り下げる方法において、第1実施例と異なる。第1実施例では、DMA転送サイズに基づいてデータの分割位置を切り下げていたが、第2実施例では、ディスクリプタで指定されたアライメントサイズに基づいてデータの分割位置を切り下げる。第2実施例は、ノード間通信を行う情報処理装置等のノードに適用される。また、第2実施例は、Put通信又はGet通信で、ローカルノード及びリモートノードのアライメントサイズが互いに異なっている場合でも、適用可能である。尚、第2実施例にかかるネットワークインタフェース装置の構成は、図3のネットワークインタフェース装置の構成と同様である。
以下、第1実施例と異なる部分を説明する。
図9は、第2実施例にかかるディスクリプタのフォーマットを示す図である。図10は、第2実施例にかかるGetリクエストパケットのフォーマットを示す図である。
図9において、第2実施例にかかるディスクリプタは、図4の第1実施例にかかるディスクリプタにアライメントサイズ48のフィールド(第2フィールド)が追加されている。アライメントサイズ48は、データを位置合わせ(アライン)するノードのアライメントサイズを指定する。アライメントサイズ48以外のフィールドは図4と同一なので、その説明は省略する。図10において、第2実施例にかかるGetリクエストパケットは、図5の第1実施例にかかるGetリクエストパケットにアライメントサイズ59のフィールド(第2フィールド)が追加されている。アライメントサイズ59は、データを位置合わせ(アライン)するノードのアライメントサイズを指定する。アライメントサイズ59以外のフィールドは図5と同一なので、その説明は省略する。分割位置計算部22は、Put通信でアライメントタイプがリモートノードのとき、アライメントサイズ48のフィールドの値を使いデータの分割位置を算出する。また、分割位置計算部22は、Get通信でアライメントタイプがローカルノードのとき、アライメントサイズ59のフィールドの値を使いデータの分割位置を算出する。
図11は、分割位置計算部22で実行される処理を示すフローチャートである。尚、図6の処理と同一のステップには、同一のステップ番号を付し、その説明は省略する。
分割位置計算部22は、ステップS12で仮設定されたデータ末尾アドレスを、(データ末尾アドレス & 〜(DMA転送単位−1)) −1に切り下げる。(ステップS13A)。ここで、「&」はビット毎に論理積演算を行う演算子であり、「~」はビット毎に否定演算を行う演算子である。ステップS13Aにより、データ末尾アドレスは、アライメントサイズの倍数−1の値となり、後続の分割データをアライメント境界で(例えば128byte単位で)アラインできる。
図12は、Put通信でアライメントタイプがリモートノードである場合のデータの分割方法を示す図である。
図12では、ローカルノードのDMA転送単位は128Byteとし、リモートノードのDMA転送単位は256Byteとする。先頭のパケット1のデータ領域は、MTU通りに分割されると、アドレス範囲40〜551となる。リモートノードの転送開始アドレスは88であるため、データは、アドレス範囲88〜599の領域に書き込まれる。分割位置計算部22は、このデータ領域の末尾がリモートノードの主記憶装置上でアライメントサイズの倍数−1となるようにデータ領域の末尾を切り下げる。ここでは、リモートノードのアライメントサイズは384Byteのため、リモートノードの主記憶装置上でデータ領域がアドレス範囲88〜383となるように、分割位置計算部22はローカルノードの主記憶装置上でデータ領域を範囲アドレス40〜335に切り下げる。これによって、後続のパケット2のデータ領域が、リモートノードの主記憶装置上ではアドレス384から始まり、アライメント境界(384Byte単位)でアラインされる。以降、分割位置計算部22は、データ領域の末尾がリモートノードの主記憶装置上でリモートノードのアライメントサイズの倍数−1となるように、データを分割する。ここでは、リモートノードのアライメントサイズは、ローカルノードのDMA転送サイズの倍数であるため、データをリモートノードのアライメントサイズの通りに分割すれば、データ領域の末尾はリモートノードのアライメントサイズの倍数−1となる。分割位置計算部22は、パケット2及びパケット3のデータ領域を、リモートノードのアライメントサイズの通りに、アドレス範囲336〜719及びアドレス範囲720〜1103にそれぞれ分割する。パケット4のデータ領域はアドレス1104からアドレス1387までの範囲となる。この分割方法により、先頭パケットと末尾パケット以外のデータは、リモートノード上での主記憶装置上でアライメント境界(384Byte単位)にアラインされるため、効率良くデータをリモートノードの主記憶装置に書き込むことができる。
尚、Get通信でのデータ分割方法は、(1)リモートノード側のネットワークインタフェース装置2がデータの分割位置を算出する点、及び(2)Getリクエストパケット内のフィールド値に基づいてデータの分割位置を算出する点を除けば、Put通信のデータ分割方法と同一である。
以上説明したように、第2実施例によれば、ローカルノード及びリモートノードの主記憶装置のアライメントサイズが互いに異なる場合でも、転送対象のデータを指定されたサイズのアライメント境界に位置合わせすることができる。
(第3実施例)
第3実施例は、ローカルノード側のネットワークインタフェース装置2がGet通信のデータの分割位置を算出し、リモートノード側のネットワークインタフェース装置2がGet通信のデータの分割位置の算出を省略する点で、第1実施例と異なる。第3実施例は、ノード間通信を行う情報処理装置等の各ノードに適用される。リモートノード側のネットワークインタフェース装置2は、Get通信のデータの分割位置の算出を省略するので、分割位置計算部22を備えていなくてもよい。また、第3実施例では、ローカルノード側の分割位置計算部22が、受信したGetディスクリプタに基づいてデータの分割位置を算出する。パケット送信部23は、Getリクエストパケットでデータの分割位置をリモートノード側のネットワークインタフェース装置2に送る。
図13は、第3実施例にかかるGetリクエストパケットのフォーマットを示す図である。
図13のGetリクエストパケットは、パケットタイプ51、ローカルノードアドレス52、リモートノードアドレス53、ローカルノード転送開始アドレス55、リモートノード転送開始アドレス56及びデータ長57のフィールドを有する。各フィールドの説明は図5の説明と同様なので、省略する。
図14は、第3実施例にかかるネットワークインタフェース装置2の構成図である。
図14のネットワークインタフェース装置2の構成は、図3のネットワークインタフェース装置2の構成と同様である。しかし、図14のネットワークインタフェース装置2は、パケット受信部25がGetリクエストパケットを分割位置計算部22に送信しない点で、図3のネットワークインタフェース装置2と異なる。
図14では、パケット受信部25がGetリクエストパケットのリモートノード開始アドレス及びデータ長に基づいて、Getレスポンスパケットの分割位置を直接指定する。そのため、パケット受信部25は、Getリクエストパケットを分割位置計算部22に送信する必要がなく、リモートノード開始アドレス及びデータ長をそのままDMAコントローラ24に送信し、Getレスポンスパケットのヘッダをパケット送信部23に送信する。
また、ディスクリプタ受信部21は、Putディスクリプ又はGetディスクリプ内のローカルノード転送開始アドレス、リモートノード転送開始アドレス、データ長及びアライメントタイプのフィールドの値を受信し、分割位置計算部22に送信する。
Get通信の場合、ローカルノード側の分割位置計算部22は、Getディスクリプタの各フィールド値を受信すると、これらのフィールドの値に基づいてデータの分割位置を算出し、パケット送信部23へ各データのDMAアドレス及びデータ長を送信する。パケット送信部23は、DMAアドレス及びデータ長からGetリクエストパケットを作成し、リモートノード側のネットワークインタフェース装置2へ送信する。
リモートノード側のネットワークインタフェース装置2内のパケット受信部25は、Getリクエストパケットを受信し、Getリクエストパケット内のDMAアドレス及びデータ長をDMAコントローラ24に送信する。また、パケット受信部25は、Getレスポンスパケットのヘッダをパケット送信部23に送信する。DMAコントローラ24は、DMAアドレス及びデータ長に基づいて、各データを主記憶装置12から読み出し、パケット送信部23に送信する。パケット送信部23は、Getレスポンスパケットのヘッダを使って、受信した各データからGetレスポンスパケットを作成し、ローカルノードに送信する。このように、ローカルノード側のネットワークインタフェース装置2がデータの分割位置を求めているので、リモートノード側のネットワークインタフェース装置2でのデータの分割位置の算出を省略できる。
図15は、ローカルノード側の分割位置計算部22で実行される処理を示すフローチャートである。図6のステップと同一のステップには、同一のステップ番号を付し、その説明を省略する。
図15では、分割位置計算部22は、Get通信のディスクリプタのアライメントタイプのフィールドが指定するノードの主記憶装置上でデータの分割位置がアライメント境界となるように、データの分割位置を算出する(ステップS6〜S14)。ステップS14の工程が実行された後、分割位置計算部22は、分割データに対応するDMAアドレス及びデータ長をパケット送信部23に送信する(ステップS18)。手順はステップS11に戻る。尚、パケット送信部23は、受信したDMAアドレス及びデータ長からGetリクエストパケットを作成し、リモートノード側のネットワークインタフェース装置2へ送信する。このように、Getリクエストパケットでデータの分割位置がリモートノード側のネットワークインタフェース装置2へ送信されるので、リモートノード側のネットワークインタフェース装置2でのデータの分割位置の算出を省略できる。
ローカルノード側のネットワークインタフェース装置2が実行する分割位置の計算方法は、各フィールドの値をGetディスクリプタから受信することを除いて、実施例1のリモートノード側のネットワークインタフェース装置2が実行する分割位置の計算方法と同様である。また、第3実施例では、Put通信時の分割位置の計算方法は、実施例1のPut通信時の分割位置の計算方法と同様である。
以上説明したように、第3実施例によれば、リモートノード側のネットワークインタフェース装置2でのデータの分割位置の算出を省略できる。
尚、ネットワークインタフェース装置2の機能を実現するためのソフトウェアのプログラムをコンピュータ又はネットワークインタフェース装置が実行することによっても、上記第1〜第3の実施例と同様の効果を奏する。
尚、本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
以上の実施の形態に関し、更に以下の付記を開示する。
(付記1)第1の情報処理装置から要求されたデータを送信する第2の情報処理装置に接続される通信装置において、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、所定のデータ幅の整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信する送信部を有することを特徴とする通信装置。かかる構成によれば、第1の情報処理装置から要求されたデータの分割位置が、指定された情報処理装置の主記憶装置のアドレス上で整列境界となるように、第1の情報処理装置から要求されたデータが分割されるので、分割点を含むアドレスのデータの読み出し及び/又は書き込みの効率が向上する。
(付記2)前記通信装置において、前記位置合わせ指定情報は、RDMA通信におけるPut通信のディスクリプタ又はGet通信のディスクリプタに対応するGet通信のリクエストパケットに含まれることを特徴とする付記1記載の通信装置。かかる構成によれば、RDMA通信におけるPut通信又はGet通信においてパケットの分割点を含むアドレスのデータの読み出し及び/又は書き込みの効率が向上する。
(付記3)前記通信装置において、前記Put通信のディスクリプタ又は前記Get通信のリクエストパケットは、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上における整列境界のサイズを示す整列サイズ情報を含み、前記分割位置計算部は、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、前記整列サイズ情報で指定される整列境界となるように、前記要求されたデータの分割位置を算出することを特徴とする付記2記載の通信装置。かかる構成によれば、第1の情報処理装置及び第2の情報処理装置の主記憶装置の整列境界のサイズが互いに異なる場合でも、要求されたデータを指定されたサイズの整列境界に位置合わせすることができる。
(付記4)前記通信装置において、前記分割位置計算部は、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、アライメント境界となるように、所定のデータ幅の整数倍である整列境界となるように、前記要求されたデータの分割位置を算出し、当該算出された分割位置は、前記Get通信のリクエストパケットで送信されることを特徴とする付記2又は3記載の通信装置。かかる構成によれば、Get通信のリクエストパケットを受信する情報処理装置でデータの分割位置を算出する処理を省略することができる。
(付記5)他の情報処理装置から要求されたデータを送信する情報処理装置において、前記要求されたデータを保持する主記憶装置と、 前記要求されたデータを、前記他の情報処理装置が有する主記憶装置又は前記情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、所定のデータ幅の整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、前記分割位置計算部が算出した分割位置に基づき、前記要求されたデータを分割して、前記他の情報処理装置に送信する送信部を有することを特徴とする情報処理装置。かかる構成によれば、付記1と同様の効果を奏する。
(付記6)第1の情報処理装置から要求されたデータを送信する第2の情報処理装置に接続される通信装置の制御方法において、前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、所定のデータ幅の整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを有することを特徴とする通信装置の制御方法。かかる構成によれば、付記1と同様の効果を奏する。
(付記7)第1の情報処理装置から要求されたデータを送信する第2の情報処理装置に接続される通信装置の制御プログラムにおいて、 コンピュータに、前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、所定のデータ幅の整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、 前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを実行させることを特徴とする通信装置の制御プログラム。かかる構成によれば、付記1と同様の効果を奏する。
2 ネットワークインタフェース装置
11 プロセッサ
12 主記憶装置
21 ディスクリプタ受信部
22 分割位置計算部
23 パケット送信部
24 DMAコントローラ
25 パケット受信部

Claims (11)

  1. 第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続され、RDMA通信を行う通信装置において、
    前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、
    前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、
    前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信する送信部を有することを特徴とする通信装置。
  2. 前記通信装置において、
    前記位置合わせ指定情報は、RDMA通信におけるPut通信のディスクリプタ又はGet通信のディスクリプタに対応するGet通信のリクエストパケットに含まれることを特徴とする請求項1記載の通信装置。
  3. 前記通信装置において、
    前記Put通信のディスクリプタ又は前記Get通信のリクエストパケットは、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上における整列境界のサイズを示す整列サイズ情報を含み、
    前記分割位置計算部は、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、前記整列サイズ情報で指定される整列境界となるように、前記要求されたデータの分割位置を算出することを特徴とする請求項2記載の通信装置。
  4. 前記通信装置において、
    前記分割位置計算部で算出された分割位置は、前記Get通信のリクエストパケットで送信されることを特徴とする請求項2又は3記載の通信装置。
  5. 他の情報処理装置から要求されたデータである入出力リクエストを送信すると共にRDMA通信を行う情報処理装置において、
    前記要求されたデータを保持する主記憶装置と、
    前記要求されたデータを、前記他の情報処理装置が有する主記憶装置又は前記情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信する受信部と、
    前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出する分割位置計算部と、
    前記分割位置計算部が算出した分割位置に基づき、前記要求されたデータを分割して、前記他の情報処理装置に送信する送信部を有することを特徴とする情報処理装置。
  6. 第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続されると共にRDMA通信を行う通信装置の制御方法において、
    前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、
    前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、
    前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを有することを特徴とする通信装置の制御方法。
  7. 第1の情報処理装置から要求されたデータである入出力リクエストを送信する第2の情報処理装置に接続されると共にRDMA通信を行う通信装置の制御プログラムにおいて、
    コンピュータに、
    前記通信装置が有する受信部が、前記要求されたデータを、前記第1の情報処理装置が有する主記憶装置又は前記第2の情報処理装置が有する主記憶装置のどちらに位置合わせするのかを示す位置合わせ指定情報を受信するステップと、
    前記通信装置が有する分割位置計算部が、前記要求されたデータの分割位置が、前記受信した位置合わせ指定情報により指定される情報処理装置が有する主記憶装置上において、キャッシュラインの整数倍である整列境界となるように、前記要求されたデータの分割位置を算出するステップと、
    前記通信装置が有する送信部が、前記分割位置計算部が算出した分割位置に基づき、前記第2の情報処理装置が有する主記憶装置が保持する前記要求されたデータを分割して、前記第1の情報処理装置に送信するステップを実行させることを特徴とする通信装置の制御プログラム。
  8. 前記分割位置計算部は、最初のデータ転送で送信されるデータの末尾アドレスを前記キャッシュラインの倍数から1を減じた値に切り下げることを特徴とする請求項1乃至4のいずれか1項に記載の通信装置。
  9. 前記分割位置計算部は、最初のデータ転送で送信されるデータの末尾アドレスを前記キャッシュラインの倍数から1を減じた値に切り下げることを特徴とする請求項5に記載の情報処理装置。
  10. 前記分割位置の算出において、最初のデータ転送で送信されるデータの末尾アドレスを前記キャッシュラインの倍数から1を減じた値に切り下げることを特徴とする請求項6に記載の通信装置の制御方法。
  11. 前記分割位置の算出において、最初のデータ転送で送信されるデータの末尾アドレスを前記キャッシュラインの倍数から1を減じた値に切り下げることを特徴とする請求項7に記載の通信装置の制御プログラム。
JP2010013609A 2010-01-25 2010-01-25 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム Active JP5482230B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010013609A JP5482230B2 (ja) 2010-01-25 2010-01-25 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム
US13/007,288 US8965996B2 (en) 2010-01-25 2011-01-14 Communication apparatus, information processing apparatus, and method for controlling communication apparatus
EP11151587.0A EP2375325B1 (en) 2010-01-25 2011-01-20 Communication apparatus, method for controlling communication apparatus, and control program for reading or writing an address range

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010013609A JP5482230B2 (ja) 2010-01-25 2010-01-25 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム

Publications (2)

Publication Number Publication Date
JP2011150666A JP2011150666A (ja) 2011-08-04
JP5482230B2 true JP5482230B2 (ja) 2014-05-07

Family

ID=44303448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010013609A Active JP5482230B2 (ja) 2010-01-25 2010-01-25 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム

Country Status (3)

Country Link
US (1) US8965996B2 (ja)
EP (1) EP2375325B1 (ja)
JP (1) JP5482230B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200054854A (ko) * 2018-11-12 2020-05-20 한국전자통신연구원 유니커널을 이용하는 원격 직접 메모리 접근 기반 파일 입출력 오프로드 방법 및 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10588107B2 (en) 2012-10-26 2020-03-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods of positioning in a system comprising measuring nodes with multiple receiving points
JP5695126B2 (ja) * 2013-05-14 2015-04-01 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US10375168B2 (en) * 2016-05-31 2019-08-06 Veritas Technologies Llc Throughput in openfabrics environments
US10846242B1 (en) * 2016-12-29 2020-11-24 Amazon Technologies, Inc. Configurable way allocation for cache
CN109426631A (zh) * 2017-08-30 2019-03-05 深圳市中兴微电子技术有限公司 一种基于rdma的通信方法、装置及存储介质
CN113553279B (zh) * 2021-07-30 2023-04-07 中科计算技术西部研究院 一种rdma通信加速集合通信的方法及系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0419869A3 (en) * 1989-09-29 1992-06-03 Kabushiki Kaisha Toshiba Personal computer for accessing two types of extended memories having different memory capacities
US5878252A (en) * 1997-06-27 1999-03-02 Sun Microsystems, Inc. Microprocessor configured to generate help instructions for performing data cache fills
WO1999034273A2 (en) 1997-12-30 1999-07-08 Lsi Logic Corporation Automated dual scatter/gather list dma
JP2000020490A (ja) * 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
JP2001094607A (ja) * 1999-09-27 2001-04-06 Nec Corp パケット通信装置
US6754780B1 (en) * 2000-04-04 2004-06-22 Hewlett-Packard Development Company, L.P. Providing data in response to a read command that maintains cache line alignment
US6675200B1 (en) * 2000-05-10 2004-01-06 Cisco Technology, Inc. Protocol-independent support of remote DMA
US6694392B1 (en) * 2000-06-30 2004-02-17 Intel Corporation Transaction partitioning
US6851035B1 (en) * 2000-07-28 2005-02-01 Marconi Communications, Inc. Method and apparatus for storing data packets with a packet boundary indicator
US6594712B1 (en) * 2000-10-20 2003-07-15 Banderacom, Inc. Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link
JP2003067321A (ja) * 2001-08-28 2003-03-07 Hitachi Ltd データ転送装置及び該データ転送装置内に具備されるアライナ
DE10213839B4 (de) * 2002-03-27 2016-11-03 Advanced Micro Devices, Inc. DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
US7944920B2 (en) * 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
US7231505B1 (en) * 2003-08-26 2007-06-12 Marvell International Ltd. Aligning IP payloads on memory boundaries for improved performance at a switch
JP4408692B2 (ja) * 2003-12-19 2010-02-03 富士通株式会社 通信装置管理プログラム
US7843906B1 (en) * 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
JP2005322110A (ja) * 2004-05-11 2005-11-17 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US7480298B2 (en) * 2004-08-30 2009-01-20 International Business Machines Corporation Lazy deregistration of user virtual machine to adapter protocol virtual offsets
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US8190796B2 (en) * 2004-11-02 2012-05-29 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
JP2006139416A (ja) * 2004-11-10 2006-06-01 Canon Inc データ転送装置およびデータ転送方法
US20080235484A1 (en) * 2007-03-22 2008-09-25 Uri Tal Method and System for Host Memory Alignment
JP2009093455A (ja) * 2007-10-10 2009-04-30 Meidensha Corp コンピュータ間のデータ通信方式
US20100183024A1 (en) * 2009-01-21 2010-07-22 Brocade Communications Systems, Inc Simplified rdma over ethernet and fibre channel

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200054854A (ko) * 2018-11-12 2020-05-20 한국전자통신연구원 유니커널을 이용하는 원격 직접 메모리 접근 기반 파일 입출력 오프로드 방법 및 장치
KR102442118B1 (ko) 2018-11-12 2022-09-13 한국전자통신연구원 유니커널을 이용하는 원격 직접 메모리 접근 기반 파일 입출력 오프로드 방법 및 장치

Also Published As

Publication number Publication date
EP2375325B1 (en) 2017-07-19
US20110185032A1 (en) 2011-07-28
US8965996B2 (en) 2015-02-24
JP2011150666A (ja) 2011-08-04
EP2375325A2 (en) 2011-10-12
EP2375325A3 (en) 2014-04-30

Similar Documents

Publication Publication Date Title
JP5482230B2 (ja) 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム
WO2016101288A1 (zh) 一种远程直接数据存取方法、设备和系统
US9898230B2 (en) Information processing apparatus, system, and information processing method
JP2006338538A (ja) ストリームプロセッサ
JP5094482B2 (ja) 処理装置及びその処理方法
CN110688333A (zh) 一种基于pcie的dma数据传输系统及方法
JP2017501492A (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
US20050141534A1 (en) Packet processing method and device
CN110046114B (zh) 基于pcie协议的dma控制器及dma数据传输方法
US11546261B2 (en) Congestion control method and related device
US11336297B2 (en) DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP2012089948A (ja) データ転送装置及びデータ転送方法
JP2016045510A (ja) 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
JP2008236378A (ja) ホストコンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
JP6438206B2 (ja) 通信装置、その制御方法、およびプログラム
JP7005303B2 (ja) 通信装置、パケット生成装置およびそれらの制御方法
JP6938399B2 (ja) 通信装置、通信方法およびプログラム
JP7145607B2 (ja) Dma転送装置、dma転送装置の制御方法、および通信装置
WO2024012015A1 (zh) 一种存储系统、主控芯片、数据存储方法及数据读取方法
WO2020184381A1 (ja) 処理装置、情報処理システム、情報処理方法、及びプログラム
JP5587530B2 (ja) エンジン・プロセッサ連携システム及び連携方法
CN113422793A (zh) 数据传输方法、装置、电子设备及计算机存储介质
JP2004147243A (ja) パケット通信システム
JP4567373B2 (ja) データ転送装置及び通信データ処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140203

R150 Certificate of patent or registration of utility model

Ref document number: 5482230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150