JP2012098838A - データ送信システムおよびデータ送信プログラム - Google Patents

データ送信システムおよびデータ送信プログラム Download PDF

Info

Publication number
JP2012098838A
JP2012098838A JP2010244671A JP2010244671A JP2012098838A JP 2012098838 A JP2012098838 A JP 2012098838A JP 2010244671 A JP2010244671 A JP 2010244671A JP 2010244671 A JP2010244671 A JP 2010244671A JP 2012098838 A JP2012098838 A JP 2012098838A
Authority
JP
Japan
Prior art keywords
data
unit
protocol processing
connection
processing device
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.)
Granted
Application number
JP2010244671A
Other languages
English (en)
Other versions
JP5204195B2 (ja
Inventor
Shingo Tanaka
中 信 吾 田
Takahiro Yamaura
浦 隆 博 山
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010244671A priority Critical patent/JP5204195B2/ja
Priority to US13/234,564 priority patent/US8788726B2/en
Publication of JP2012098838A publication Critical patent/JP2012098838A/ja
Application granted granted Critical
Publication of JP5204195B2 publication Critical patent/JP5204195B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract


【課題】ハードウェアコストを増大させずにホストCPUの処理負担を軽減させて、効率的にデータ転送を行えるようにする。
【解決手段】データ送信システムは、プロセッサ2と、格納されたデータをブロック単位でI/Oバス上に送信するデータ記録装置4と、I/Oバスに接続されてプロセッサ2に代行して所定の通信プロトコル処理を行うプロトコル処理装置5と、を備える。プロセッサ2は、データ記録装置4から送信されるべきデータをブロック単位で特定するデータ特定部21と、プロトコル処理装置5のアドレス情報を指定して、データ記録装置4からプロトコル処理装置5へのデータ転送を指示する転送指示部23と、を有する。プロトコル処理装置5は、データ記録装置4からブロック単位でI/Oバスに送信されたデータを、主記憶装置を経由せずに直接受け付けるデータ受付部51と、データ受付部51で受け付けたブロック単位のデータをパケット単位でネットワークに送信するネットワーク処理部53と、を有する。
【選択図】図1

Description

本発明の実施形態は、プロセッサに代行して通信プロトコル処理を行うTOE装置を備えたデータ送信システムおよびデータ送信プログラムに関する。
コンピュータに直接接続されたHDD(Hard Disk Drive)やSSD(Solid State Drive)はDAS(Direct Attached Storage)と呼ばれているが、これらのストレージをネットワーク経由で接続するネットワークストレージが普及しつつある。ネットワークストレージは、大きく分けるとSAN(Storage Area Network)とNAS(Network Attached Storage)に分類できる。SANはiSCSIやFiber Channel等が知られており、ストレージ装置はブロックデバイスとしてネットワーク経由でホストマシン(ストレージを利用する側のマシン)と接続して、ホストマシン側にファイルシステムを持っている。一方、NASはNFS(Network File System)等が知られており、ストレージ装置側にファイルシステムまでを組み込んでおり、ホスト装置はファイルシステムの上位からストレージにアクセスできる。これにより、ホストマシンの負荷を軽減できるだけでなく、複数台のホストマシンでストレージ上のファイルシステムを共有できる等のメリットがある。
これらのネットワークストレージでは、その通信手段に主にイーサネット(登録商標)が使われ、また通信プロトコルにはインターネット等で広く使われているTCP/IP等が使われる。これらの広く普及した汎用技術によりネットワークストレージの利用が容易となり、ネットワークストレージは従来のDASに比べ、ストレージとしての拡張性や保守性等の利便性が向上した。
また、昨今では映像のストリーミング配信が普及しつつある。例えばVOD(Video On Demand)サーバと呼ばれるコンテンツ配信サーバによってストリーミング配信が行われるが、このようなコンテンツ配信サーバも、自身がもつストレージデバイスから映像コンテンツを読み出し、ネットワーク接続されたユーザの端末に送信する処理を行う。Webサーバも同様にストレージ上のコンテンツをユーザの端末に送信する。通信プロトコルは、TCP/IPベースのHTTPや、リアルタイム通信向けのRTP等が使われる。また、RTPの場合は誤り訂正にFEC(Forward Error Correction)等が使われる。
このようなネットワークストレージ、VODサーバ、Webサーバに用いられるストレージやネットワーク等のデバイスの高速化は著しく進んでいる。イーサネットは現在1Gbpsが主流になりつつあり、データセンター等では10Gbpsが使われている。また、次世代の40Gbps / 100Gbpsイーサネットの仕様策定も完了し、これらについても今後着実に普及していくものと思われる。また、ストレージに関してはHDDのRAIDのストライピング処理(並列化)による高速化に加えて、昨今のSSDの転送性能の向上は著しく、現行製品でも単体で2Gbps超の読み出しレートを出すものがある。ストレージデバイスのI/F規格のSATAに関しても、バンド幅6GbpsのSATA3.0が既に普及している状況である。これらを鑑みるとネットワークストレージに関しても、近い将来に10Gbpsクラスの帯域になるものと予想される。
このようなネットワークストレージの性能向上に伴って、それを制御するホストCPUの処理負荷も増大していく。従来はTCP/IPオフロードエンジン(以下、TOE)という技術により、その解決が試みられてきた。TOEは、ホストCPUに代行して、前述のTCP/IPの処理を行う専用プロセッサや専用回路を設けたものであり、ホストCPUからTCP/IP処理負荷をオフロードするものである。このTOEを用いることによって、従来のソフトウェアによる通信プロトコル処理よりも高速にTCP/IP処理を行うことが可能となり、ネットワークストレージの性能向上に貢献できる。
ストレージデバイスやTOEは、それぞれホストCPUによってスレーブ的に制御され、データはシステムメモリを介して入出力することが想定されている。よって、ストレージ上のデータをネットワークに入出力する際、ストレージデバイス(SSD、HDD等)とTOEの間のデータ転送は、必ずシステムメモリを介して行われる。
また、ホストCPU上で動作する、これらの間をブリッジするアプリケーションソフトウェア、あるいは、OSのカーネル空間とユーザ空間のデータの受け渡し処理等により、システムメモリ上で何回分か転送データのコピーが発生する場合もある。さらにNASの場合はファイルシステム処理も必要であり、通常のファイルシステムの実装では、ストレージから固定バイト長のセクタ単位で読み書きしたデータを、任意バイト長のファイルとして整形するため、ここでもデータのコピーが発生する。
特開2005-316629号公報
このように、ストレージデバイスとTOEの間でデータ転送を行う場合は、ホストCPUのソフトウェア処理が介在することから、少なくとも一回はシステムメモリへの読み書きが必要となり、また、OSやアプリケーション、ファイルシステムの処理により、システムメモリ上で場合によっては複数回分のメモリコピーが発生することになり、システムメモリの負荷が大幅に増大してしまう。
このようなメモリ負荷に対し、従来は十分な処理性能を持つホストCPUと高速のシステムメモリを用意して対応していたが、昨今のネットワークストレージの10Gbpsに迫る転送レートの向上を鑑みると、少なからず問題となってきた。特に、システムメモリの性能を上げるためには、一般にホストCPUのグレードアップも伴い、PCやサーバ等の場合は、付随するチップセットのグレードアップも必要となる。これにより、コストや消費電力の問題が特に顕著となる。
本発明は、ハードウェアコストを増大させずにホストCPUの処理負担を軽減させて、効率的にデータ転送を行うことができるデータ送信システムおよびデータ送信プログラムを提供するものである。
本実施形態に係るデータ送信システムは、主記憶装置に対する読み書きを行うことが可能なプロセッサと、格納されたデータをブロック単位でI/Oバス上に送信するデータ記録装置と、前記I/Oバスに接続され、前記プロセッサに代行して所定の通信プロトコル処理を行うプロトコル処理装置と、を備えている。前記プロセッサは、前記データ記録装置から送信されるべきデータをブロック単位で特定するデータ特定部と、前記プロトコル処理装置のアドレス情報を指定して、前記データ記録装置から前記プロトコル処理装置へのデータ転送を指示する転送指示部と、を有する。前記プロトコル処理装置は、前記データ記録装置からブロック単位で前記I/Oバスに送信されたデータを、前記主記憶装置を経由せずに直接受け付けるデータ受付部と、前記データ受付部で受け付けたブロック単位のデータをパケット単位でネットワークに送信するネットワーク処理部と、を有する。
第1の実施形態に係るデータ送信システムの概略構成を示すブロック図。 主記憶空間の一例を示す図。 ネットワークに送信するデータの一例を示す図。 転送指示の番号とTOEのアドレス領域との関係を示す図。 第1の実施形態の変形例を示すブロック図。 第2の実施形態に係るデータ送信システムの概略構成を示すブロック図。 コネクション識別子とTOEのアドレス領域との関係を示す図。 第3の実施形態に係るデータ送信システムの概略構成を示すブロック図。
以下、図面を参照しながら、本発明の実施形態を説明する。
(第1の実施形態)
図1は第1の実施形態に係るデータ送信システムの概略構成を示すブロック図である。図1のデータ送信システムの具体的な製品形態としては、PC、サーバ装置、SoC(System on Chip)、またはFPGA(Field Programmable Gate Array)等のネットワークストレージ、あるいはVOD(Video On Demand)サーバ、Webサーバなどが想定されるが、これらに限定されるものではない。
図1のデータ送信システム1は、ホストCPU(プロセッサ)2と、システムメモリ3と、ストレージデバイス(データ記録装置)4と、TOE(プロトコル処理装置)5と、を備えている。ホストCPU2は、システム全体の制御を行う。ホストCPU2は、ソフトウェアで実行する主な処理部として、ファイルシステム処理部(データ特定部)21と、TOE5に転送データの有効データ位置を通知する有効位置通知部22と、ストレージデバイス4に転送データの転送指示を行う転送指示部23とを有する。もちろん、ホストCPU2は、他の種々の処理を行うことが可能である。有効位置通知部22は、ファイルシステム処理部21が特定した転送データと、この転送データ中の有効データの位置情報とを、TOE5が関連付けできるように、TOE5に有効データの位置情報を通知する。
システムメモリ3は、ホストCPU2が主記憶として使用するメモリであり、ホストCPU2の主記憶空間上にマッピングされる複数のメモリ領域に分かれている。システムメモリ3の具体的な実装形態は、例えばSSD(Solid State Drive)やHDD(Hard Disk Drive)等である。
TOE5は、ホストCPU2の代わりにネットワークプロトコル処理を行うものである。TOE5は、ストレージデバイス4から送られてきた転送データを受け付けるデータ受付部51と、受け付けたデータと有効データ位置情報から有効データを抽出するデータ抽出部52と、抽出したデータをネットワーク10上に送信するネットワーク処理部53とを有する。
ホストCPU2とシステムメモリ3はメインバスB1に接続され、ストレージデバイス4とTOE5はI/OバスB2に接続されている。メインバスB1とI/OバスB2の間にはI/Oブリッジ6が設けられている。ここで、I/OバスB2とは、本システムがPCやサーバ等の場合はチップセット、あるいはPCI Expressバス等を指す。本システムがSoCやFPGAの場合はチップ内のバスを指す。このように、I/OバスB2は、実装形態により種々異なるが、異なる装置間で直接通信でき、そのときシステムメモリのバス帯域を占有しないことが要求される。
通常、ホストCPU2は、デバイスドライバ等の制御ソフトウェアを実行することで、ストレージデバイス4とTOE5を制御する。
TOE5は、ハードウェアとソフトウェアのどちらで構成してもよく、実装の形態は問わない。また、TOE5が処理するプロトコルは、TCP/IPには限定されず、通信プロトコルの種別は問わない。例えば、HTTPやRTP等の他の通信プロトコルを処理するものでもよい。そのようなものも含め、ここでは簡単のためTOE5と表記する。
ストレージデバイス4は、データをセクタやクラスタやページと呼ばれる単位で管理する。ここでは簡単のため、これらを総称してブロックと呼ぶ。ユーザが扱うデータはブロック単位ではないため、ストレージデバイス4は通常ファイルシステムによりアクセスされる。ファイルシステムは、バイト単位のファイルデータをブロック単位のストレージデバイスの記録領域にマッピングする仕組みである。ファイルシステムは、公知のものを利用するため、その詳細は割愛する。
図1の点線矢印は制御の流れ、太線矢印は転送データの流れを示す。本実施形態では、データをストレージデバイス4から読み出して、I/OバスB2を介してTOE5に直接転送し、TOE5からネットワーク10に送信する。
次に、図1のデータ送信システム1の処理動作を説明する。まず、ホストCPU2は何らかのアプリケーション処理(不図示)等によって、送信するファイルを特定する。典型的な例としては、ネットワーク10に接続された他の機器からの要求を受け、ファイルを特定する。この処理は本実施形態とは無関係なので詳細は割愛する。
次に、ファイルシステム処理部21は、ストレージデバイス4内のファイルシステムを解析し、特定されたファイルのデータが格納されているブロック群を特定する。データは、通常は複数のブロックで構成されており、まずは先頭ブロックを特定する。転送指示部23は、特定したブロックの転送指示をストレージデバイス4に送る。このとき、システムメモリ3のアドレスを指定して転送指示を出し、ストレージデバイス4はそれに従って自身が持つDMA機能でブロックデータをシステムメモリ3に転送するのが一般的であるが、本実施形態では異なる動作を行う。
ホストCPU2は、システムメモリ3を含めて、ストレージデバイス4やTOE5等の各種の周辺機器を、通常一つのアドレス空間(主記憶空間)で管理している。例えば図2の例では、システムメモリ3として512MB、ストレージデバイス4として2MB、TOE5デバイスとして1MBのアドレス空間がマッピングされている。
ここで、システムメモリ3は、メモリ容量で定まるアドレス空間がそのまま主記憶空間にマッピングされているが、周辺機器は通常、ホストCPU2がアクセス可能な制御レジスタを内蔵しており、この制御レジスタが主記憶空間にマッピングされている。なお、図2の例では、32ビットのアドレス空間を示しているが、アドレス空間のサイズは任意である。
通常のTOE5は、ストレージデバイス4と同様にDMA機能を持っており、ホストCPU2からデータを取得する場合は、ホストCPU2がシステムメモリ3に格納したデータをDMAで読出す。一方、ストレージデバイス4とTOE5間でデータを送受する場合は、ストレージデバイス4とTOE5がいずれもDMAを使用すると、結局のところ、システムメモリ3を介してデータをやりとりすることになってしまう。システムメモリ3を介するとなると、システムメモリに大量の読み書きアクセスが発生し、処理のボトルネックとなる。
そこで、本実施形態では、TOE5に送信すべきデータの書き込みをスレーブとして受け付けるインタフェースを設ける。ここで、スレーブとは、TOE5に送信すべきデータをシステムメモリ3に転送せずに受け付ける(保持する)処理である。このスレーブとして機能するのがデータ受付部51である。データ受付部51は、上述した制御レジスタの少なくとも一部に転送対象データを保持してもよいし、データを受け付ける専用のインタフェースを備えていてもよい。
ホストCPU2は、ストレージデバイス4に対し、TOE5のデータ受付部51のアドレスを指定して転送指示を出す。すると、ストレージデバイス4はTOE5に対して直接、すなわちシステムメモリ3を介さずに、データを転送するように動作する。これにより、TOE5はストレージデバイス4から直接データを受けることができる。
なお、ホストCPU2からストレージデバイス4への転送指示は、TOE5を経由してもよい。すなわち、ホストCPU2はTOE5に転送指示(を行う指示)及びそれに付随する情報を送信し、それを受けたTOE5からストレージデバイス4に転送指示を行う形態でもよい。転送するブロックの決定と大元の転送指示をホストCPU2から行うところがポイントであり、その情報をもとに実際にストレージデバイス4に転送指示を行うのはTOE5が行う形態を採用してもよい。
例えばPCI Expressの場合、デバイス間にスイッチが存在するが、この場合は例えばこのスイッチが、ストレージデバイス4から出力されたデータがTOE5のレジスタに向けられたアドレスと判断し、TOE5に対してデータを送るように動作する。あるいは、チップセットが同様の動作を行う。
このようにすると、特定のネットワークストレージのように、データをブロックのままネットワーク10に送信する装置の場合は特に問題ないが、NASやVODサーバ等のように自身にファイルシステムを持つ場合は問題が生じる。
具体的には、ストレージデバイス4はブロック単位でデータを扱うため、TOE5が受け取るデータもブロック単位になるが、TOE5がネットワーク10に送信するファイルのデータはファイルとしての転送なので主にはバイト単位であり、転送されたブロックのどのバイト位置が指定されたファイルのデータ(つまりネットワーク10に送信すべきデータ)かが、そのままではTOE5はわからないという問題である。
ネットワーク10に送信すべきデータは、ファイルシステムを解析することによって得られる情報であり、例えば図3のようになる。図3は有効位置情報をオフセットと長さで示しているが、始端バイト位置と終端バイト位置等で表してもよく、有効データの位置が特定できれば表現形式は問わない。
ファイルシステム処理部21を持つホストCPU2は、転送するブロックにおける有効位置情報をTOE5に通知する必要があり、この通知は有効位置通知部22によりなされる。TOE5は、ストレージデバイス4から転送されたブロックデータと有効位置通知部22から通知された有効位置情報とに基づいて、データ抽出部52で有効データを抽出する。そして、ネットワーク処理部53は、この有効データをネットワーク10上で送受されるパケット単位に分割してネットワーク10に送信する。これにより、ネットワーク10に接続された不図示の特定機器は、パケット単位で有効データを受信する。
上述したように一つのファイルは複数のブロックで構成されるため、ファイルシステム処理部21は、送信すべきファイルを構成する複数のブロックに対して順次転送指示を出す。つまり、送信すべきデータが全て送信し終わるまで、上記の一連の動作がブロックごとに順次繰り返される。
ただし、ストレージデバイス4によるブロックデータの転送は、通常は一定のレイテンシがあるため、ホストCPU2は転送指示に対するストレージデバイス4からの実行完了応答を毎回待たずに、複数のブロックの転送指示をストレージデバイス4に対してまとめて行う場合がある。その場合、そのままではホストCPU2とストレージデバイス4とTOE5の三者の間で同期が取られなくなるので、有効位置情報の通知は例えば以下の手法により行う。
一つ目の手法は、ストレージデバイス4が転送指示を受けた順番と必ず同じ順番で転送を実行する場合に有効な手法で、ホストCPU2がストレージデバイス4に複数のブロックの転送指示を行うとき、その転送指示を行うのと同じ順番で、対応するブロックの中の有効位置情報をTOE5に通知する手法である。TOE5のデータ抽出部52は、受け取った有効位置情報を例えばキューイングしておき、ストレージデバイス4からブロックデータを受け取った際、キューイングした有効位置情報をキューイングした順番に一つずつ取り出せば、ブロックデータとの対応付けが出来る。
二つ目の手法は、ストレージデバイス4が、内部処理の効率等を優先する場合等で、転送指示を受けた順番とは異なる順番で転送を実行し得る場合の手法である。この場合、ホストCPU2とストレージデバイス4間での転送指示とブロックデータとの関連付けがもともと存在し、典型的には、各ブロックの転送先のアドレスとして異なるアドレスを指定する等である。つまり、従来構成において、8つの転送指示をホストCPU2がストレージデバイス4にまとめて指示する場合、その8個にシステムメモリ3上の異なる転送先アドレスを指定しておく。すると、ホストCPU2がストレージデバイス4から全ての転送が完了した事を通知された後に、自身が指定した各アドレスのデータを参照すれば、転送された順番に関係なく、対応する各ブロックデータが得られるという具合である。本実施形態では、転送先のアドレスにTOE5のアドレスを指定するが、この関連付けの仕組みを利用する場合は、例えばホストCPU2が8つの転送指示を同時に出す場合、各転送指示の転送先アドレスに、それぞれTOE5アドレス領域のうちの異なるアドレス領域を指定しておく。例えば図2のようにTOE5のアドレス領域が0x20200000〜0x202fffffの場合、図4のように、0x20280000〜0x202801ffの512バイト領域が転送指示0に対応し、0x20280200〜0x202803ffの512バイト領域が転送指示1に対応し、0x20280400〜0x202805ffの512バイトが転送指示2に対応し、、、という具合に予め対応付けておき、ホストCPU2は各転送指示にこれらのアドレス領域の先頭を指定しておく。すると、転送されたブロックデータはあくまでTOE5に転送されるが、それぞれTOE5の中の異なるアドレス領域に転送されるため、データを受けたTOE5は、受けたブロックデータが例えば0x20280200から始まるアドレスに書き込まれたデータであれば、それは転送指示1で指定されたブロックデータであることが特定できる。
一方、ホストCPU2は、TOE5に対してデータの有効位置情報を8つ通知するが、その際に、転送指示0に対応する有効位置情報、転送指示1に対応する有効位置情報、転送指示2に対する有効位置情報、、、なとど判るようにTOE5に通知する。これもTOE5の有効位置情報を通知するレジスタ領域の異なるアドレスに通知する等の手法でも良い。これらによって、TOE5は受けたデータ、及び、有効位置情報がともにどの転送指示に対するものかが判別できるため、データ抽出部52はこれらの対応付けが可能となる。なお、アドレスを使うことは本実施形態のほんの一例であり、その他にストレージデバイス4からTOE5に通知できる情報であれば何を利用しても良い。
このように、ブロックデータの転送先のアドレス領域を分けることによって、TOE5が受け取ったブロックデータの順番がもとのデータ列の順番(通常はネットワーク10に送信する順番)と異なる場合でも、転送先のアドレスを確認することで、そのデータがどのオフセットのデータかが判断できるので、データをもとのデータ列の順番に並び替えることが可能となる。
また、以上のようにTOE5のアドレス領域を分けることによってブロックデータを識別する手法を述べたが、上述したアドレス領域の分け方は一例にすぎず、この限りではない。また、アドレス領域と転送指示との対応付けを静的に行っても良いし、ホストCPU2から対応付け情報を指示することによって動的に変えても良い。また、図3のように、多くのデータは最初と最後、または、最後のブロックだけ無効データを含むので、これらのブロックのみ有効位置を通知し、途中のブロックの有効位置情報を省略してもよい。
なお、以上の構成によってストレージデバイス4からTOE5への直接的なデータ転送、すなわちシステムメモリ3を介さないデータ転送が可能となるが、直接的なデータ転送を行うのが望ましくない場合もある。例えば、別のアプリケーション処理等によって、データ転送ではなくホストCPU2自身でストレージデバイス4の中身のファイルデータを参照したいような場合もある。その場合はストレージデバイス4からのデータは、従来通りシステムメモリ3上に転送指示する必要があるが、本実施形態は、そのような従来通りのストレージデバイス4へのアクセス方式との共存も可能である。すなわち、アプリケーション等の大元の転送指示を決定する処理部が、従来通りのシステムメモリ3への転送を要求しているか、TOE5へのダイレクト転送を要求しているかを判別できるI/Fを設け、転送指示部23に指示を出すファイルシステム処理部21がこのI/Fで判別された情報を転送指示部23に通知する。転送指示部23はその通知に応じて転送先のアドレスをシステムメモリ3かTOE5かいずれかに切り替える。
その他異常系の処理に関して、ホストCPU2からストレージデバイス4への転送指示に対し、ストレージデバイス4が、内部エラー等何らかの理由により転送が完了できない場合がある。この場合、ストレージデバイス4はホストCPU2に対して割り込み等でエラー通知を行うが、そのままではTOE5はこの情報を得られない。すると、例えばひと固まりのデータの転送途中にエラーが発生した場合、TOE5はそのことを知らないがために、完了しない転送完了をひたすら待ち続け、次の動作に移れない等の不具合が発生する。それを解決するには、一つはTOE5にタイムアウトを設ける手法で、もう一つは、エラーが発生した場合は、その通知を受けたホストCPU2がTOE5にもその情報を通知することである。
これにより、ストレージデバイス4で転送エラーが発生した場合にも、TOE5はその転送をあきらめて次の転送のデータ受付処理に移行する等の適切なエラー処理ができるようになる。この場合のデータ送信システム1の概略構成は図5のようになる。図5は、図1の構成に加えて、ホストCPU2がソフトウェアで処理するエラー通知部24を有する場合におけるデータ送信システムの概略構成を示すブロック図である。このエラー通知部24は、ストレージデバイス4からの通知を受け、TOE5のデータ受付部51に通知する。エラー通知部24は、TOE5にエラーを通知する他に、自身のファイルシステム処理部21にも転送が失敗した旨を通知し、ファイルシステム処理部21は次の処理に移行する等の適切なエラー処理を行う。
上述したように、第1の実施形態では、ホストCPUはストレージデバイス4に対して、TOE5のデータ受付部51のアドレスを指定して転送指示を出すため、ストレージデバイス4からTOE5に、システムメモリ3を介することなく、直接データを転送することが可能となる。これにより、システムメモリ上を大量のデータが通ることがなくなり、データ転送の効率が良くなるため、ネットワークストレージの転送レートの高速化が図れる。あるいは従来と同じ転送レートを実現する場合は、装置の低コスト化と低消費電力化が図れる。また、ホストCPU2は、転送するブロックにおける有効位置情報をTOE5に通知するため、TOE5内のネットワーク処理部53は、バイト単位で抽出された有効データをネットワーク10に送信できる。
(第2の実施形態)
第2の実施形態は、データ転送用に複数のコネクションが論理的に設定される例を示している。図6は第2の実施形態に係るデータ送信システム1aの概略構成を示すブロック図である。図6は複数のコネクションによるデータ転送を実現するために、第1の実施形態に加えて、ホストCPU2がソフトウェアで実行する転送コネクション選択部25およびコネクション通知部26を有し、かつTOE5は新しいデータを受け付けられるかどうかを表すフロー制御情報通知部54を有する。
転送コネクション選択部25は、データ転送に利用するコネクションを選択する処理を行う。すなわち、転送コネクション選択部25は、TOE5からのコネクション毎のフロー制御情報に基づいて、TOE5がデータ受付可能なコネクションの中からコネクションを選択する。コネクション通知部26は、データ転送用のブロックが属するコネクション識別子をTOE5に通知する処理を行う。すなわち、コネクション通知部26は、転送コネクション選択部25が選択したコネクションの識別子とファイルシステム処理部21が特定したデータとをTOE5が関連付け可能なように、転送コネクション選択部25が選択したコネクションの識別子をTOE5に通知する。
TOE5内のフロー制御情報通知部54は、コネクションごとのフロー制御情報をホストCPU2に通知する。ネットワーク処理部53は、データ抽出部52が抽出した有効データを、コネクション通知部26から通知されたコネクションで、パケット単位でネットワーク10に送信する。 図2において、図1と同じ符号で示した各部は、図1と同様に動作し、ストレージデバイス4からデータを読み出してネットワーク10に送信する。今回はそれに加え、例えばNASのようなネットワークストレージやVODサーバで複数のクライアント端末、あるいは、クライアント端末上の複数のアプリケーションから同時に読み出し要求やコンテンツ配信要求を受けた場合等、複数の独立したコネクションでストレージデバイス4からデータを読み出してネットワーク10に送信する動作を可能としている。
図2のデータ送信システムの処理手順は次のようになる。まず、先と同様にホストCPU2は何らかの手法で、送信するファイルを特定する。ただし、本実施形態では、コネクションが複数あるために、ファイルも複数特定される。転送コネクション選択部25は、TOE5のフロー制御情報通知部54から通知されるフロー制御情報を確認して、この複数のコネクションの中からTOE5がデータを受け取れる(すなわち転送可能な)コネクションを特定し、さらにその中から一つのコネクションを選択する。
ここで、通信プロトコルがTCPの場合、通信相手先装置とTCP通信プロトコルでフロー制御を行っているため、通信相手先装置の処理速度によって送信レートが変わってくる。特に、通信相手先装置が一時的にデータを受信しない場合もあり得るが、その場合は転送が一時的に停止する。また、TCPには輻輳制御機能もあり、パケットロスが発生してネットワーク10の輻輳が検知された場合等も送信が抑制され、結果的に送信レートが低下する。このTCPフロー制御やTCP輻輳制御はTCPコネクション(今回はコネクションと同じ意味)毎に独立して制御されるため、結局、コネクションによって送信レートが速くなったり遅くなったりすることになる。また、VODサーバの場合等で通信プロトコルがRTPの場合、コネクション毎に異なるコンテンツを送信する場合があり、それぞれ異なるビットレートでのリアルタイム送信であるため、やはりコネクション毎に送信レートが異なる。
このように、コネクション毎に送信レートが異なる場合において、ホストCPU2がそれを考慮せずに各コネクションで均等にストレージデバイス4からTOE5に対してデータを転送した場合、場合によっては送信レートの遅い特定コネクションのデータをTOE5が受け取れない場合が発生する。通常、このような場合はI/OバスB2(PCI Express等)の低レベルのフロー制御によってデータ転送が止められることになる。しかしながら、このバスレベルのフロー制御に頼ると、ここでは複数コネクションのデータ転送が多重化されているため、その他のコネクションのデータ転送も併せて止まってしまうことになる。つまり、特定のコネクションの遅延によるデータ転送の遅延が、その他のコネクションのデータ転送の遅延を引き起こすことになり、全体の転送効率が悪くなる。
これを解決するためには、TOE5が現在どのコネクションのデータを受け付けられるかをホストCPU2に対して通知して、ホストCPU2はそのコネクションのみデータ転送を行うようにすればよい。前述のフロー制御情報通知部54は、TOE5からのコネクション毎のフロー制御情報の通知を行うものであり、転送コネクション選択部25は、そのフロー制御情報からTOE5がデータを受け取れるコネクションを特定し、その特定したコネクションのデータ転送をファイルシステム処理部21に対して指示するものである。
これにより、特定コネクションの転送遅延によって、バスレベルのフロー制御によるデータ転送遅延を発生させることはないので、その他のコネクションの転送速度を低下させることがなくなり、ひいてはマルチコネクション環境において、全体の転送効率を向上させることが出来るようになる。
より具体的には、TOE5には転送されたブロックデータをネットワーク10に送信する前に一時的に蓄えるバッファがあり、これはコネクション毎に独立して存在する。ネットワーク処理部53は、このバッファからコネクション毎に別々にデータを読み出してネットワーク10に送出するが、コネクション毎に送信レートが異なるため、あるコネクションは速くバッファが開放されても、送信レートが遅いコネクションではバッファがすぐには開放されない場合等があり、コネクション毎にバッファの空き容量が異なる。そこで、フロー制御情報通知部54は、コネクション毎にこのバッファの空き容量をホストCPU2に通知する。ホストCPU2はこのバッファの空き容量を見て、複数のコネクション間でできるだけ偏りなくデータ転送を実行する。望ましくは、バッファが1ブロック分以上開いているコネクションが複数ある場合は、それらのコネクション間で1ブロックずつ転送を実行する。
ストレージデバイス4の特長により、特定のファイルのデータを連続で読み出した方が転送効率が良い場合はこの限りではなく、特定のコネクションのデータをある程度連続で転送してから次のコネクションの転送、等というようにある程度まとまりをもって転送を行う方が望ましいが、このようにまとまりを持って転送を行うと、後回しになったコネクションへのデータの転送が大きく遅延することになり、バスの全体の転送帯域としては要求性能を満たしていても、特定のコネクションにおいてバッファアンダーフローを起しかねない。よって、データの転送はできるだけ少ないブロック数(理想的には1ブロックずつ)毎に、複数のコネクションで順次転送を行うことが望ましい。
コネクション通知部26は、転送するブロックが属するコネクション識別子をTOE5に通知する。この通知は、前述の有効位置情報の通知と同様の手法で行う。
一つ目の手法はストレージデバイス4が転送指示と必ず同じ順番で転送を実行する場合に有効な手法で、転送指示を出す順番と同じ順番でTOE5にコネクション識別子を通知する手法である。TOE5のデータ抽出部52はホストCPU2からの識別子情報をキューイングしておき、ストレージデバイス4からデータを受け取った順番と同じ順番でキューイングした識別子情報を取り出せば、転送されたブロックデータと識別子情報を対応付けることができる。
二つ目の手法はストレージデバイス4が転送指示と異なる順番で転送を実行する場合に有効な手法で、コネクション毎に転送指示で指定する転送先アドレスをTOE5のアドレス領域の異なる領域を指定して転送指示を出す手法である。例えば図7のように割り当て、ホストCPU2はそれぞれのコネクションのデータの転送先アドレスを図7のように指定すると、データを受け取ったTOE5は、自身のどのアドレス領域に向けられたデータかを確認することで、そのデータがどのコネクションに属するか特定することが出来、適切なバッファにバッファリングすることができる。なお、図6ではコネクション情報の通知がコネクション通知部26からデータ抽出部52に直接点線矢印が延びているが、このようにアドレス等を用いてストレージデバイス4経由でコネクション識別子情報を通知する構成も本実施形態に含む。なお、アドレスを使うことは本実施形態のほんの一例であり、その他にストレージデバイス4からTOE5に通知できる情報であればなにを利用しても良い。また、アドレスとコネクション識別子のマッピングはほんの一例であり、また動的に変更しても良い。特に、アドレス空間は有限であることから、コネクション識別子空間が大規模な場合は動的割り当てが有効である。
上述したように、第2の実施形態では、複数のコネクションでデータ転送を行う場合に、複数のコネクション間でできるだけ偏りなくデータ転送を実行するため、複数のコネクションを用いても転送効率を落とさずにデータの転送が実現できる。これにより、ホストCPU2の処理負担を軽減しつつ、より効率的にデータ転送を行うことができる。
(第3の実施形態)
第3の実施形態は、データバッファの削減を図るものである。図8は第3の実施形態に係るデータ送信システム1bの概略構成を示すブロック図である。図8は、図6の構成に加えて、CPUがソフトウェアで実行する処理として再転送位置指定部27を有するとともに、TOE5は再転送要求部55を有する。
図8のデータ送信システム1bは、ストレージデバイス4からTOE5に、システムメモリ3を介さずに直接的にデータを転送できることに加えて、第2の実施形態で述べたTOE5の中のデータバッファも削減できることを特徴とする。
例えば、TCP通信プロトコルの場合、ネットワーク10の途中でパケットがロスした場合にパケットの再送が必要になるため、通信相手先装置から確認応答を受けるまでは、送信データを必ず保持しておく必要があり、通常はTOE5の内部に、送信データ保持用のデータバッファを設けている。
これに対して、本実施形態では、TOE5内の再転送要求部55により、ホストCPU2に対してブロックデータの再転送を要求する。この要求を受けて、ホストCPU2は、再転送位置指定部27により、再送データのファイル上の位置を特定し、必要な分だけのデータ転送をストレージデバイス4に指示する。これにより、上述したデータバッファを削減できる。
具体的には次のようになる。まず、通常のデータ転送とネットワーク10へのデータ転送は、第2の実施の形態と同様に行う。ただし、本実施形態にはTOE5の中にデータバッファが無いため、前述のフロー制御情報通知部54は、TCPのフロー制御情報である、ネットワーク10に接続された通信相手先装置のTCP受信ウィンドウ(送信可能なバイト数)をそのままホストCPU2に渡す。つまり、ホストCPU2は通信相手先装置が受け取れるだけTOE5にデータを渡し、TOE5はそのデータをそのままネットワーク10に送信するように動作する。
そして、ネットワーク10上等でパケットロスが発生したとき、ネットワーク処理部53はそれを検知してパケットの再送が必要と判断すると、ホストCPU2に対してデータを再び転送してもらうべく、再転送要求部55は、再送が必要なコネクション識別子と、再送データのオフセット位置と長さ情報を指定して、ホストCPU2にブロックデータの再転送を要求する。ホストCPU2はこれを受け、再転送位置指定部27がこのデータのコネクションからファイルを特定し、さらに、データのオフセット位置と長さからファイルにおけるオフセット位置と長さを特定し、そのデータの転送を実施する。その後は第2の実施形態と同様に転送が行われ、TOE5はこのデータを受け次第、ネットワーク10に送信する(これが再送パケットとなる)。
以上はTCP通信における再送の例であるが、VODサーバ等のRTP通信の場合は再送は存在しない。しかしながら、ネットワーク10上のパケットロスに対するデータの欠落を補償するためにFEC等を用いる場合があり、例えばIPTVではPro-MPEG FECが用いられる。Pro-MPEG FECでは、詳細は割愛するが、RTPのデータパケットをシーケンス番号順にマトリクス上に並べ、そのマトリクスにおいて縦方向に並ぶパケットのデータ部分のXORを計算し、対応するFECパケットのデータ部分を生成するという処理が必要である。FECパケットの生成はRTPパケットを送信した後に行うので、このような演算によるFECパケットの生成を行うためには、送信したパケットのデータを後から再度読み出す必要がある。このような場合も通常はTOE5の内部にデータバッファを設け、再読み出しを実現するが、本実施形態では前述のような構成により、再読み出しをデータバッファではなくストレージデバイス4から再度読み出すことで実現でき、ひいてはTOE5内部のデータバッファを削減できる。このようにFECを用いる場合でも、本実施形態によってTOE5内部のデータバッファを削減することが可能となる。
以上のような構成によってデータバッファを削減することが可能となるが、ストレージデバイス4から送信されるブロックデータと、ネットワーク10に送出するパケットのデータサイズは異なるため、このサイズの違いを吸収するための最低限のバッファリングは必要となる。例えば、ブロックデータが512バイトで、パケットサイズが1460バイトの場合、TOE5が3つのブロックデータをストレージデバイス4から受け取ると合計1536バイトとなり、ここで初めてTOE5は1つのパケットを送信できるが、送信後に1536 - 1460 = 76バイト余り、これは次のパケットの先頭76バイトになるため、次のパケット送信までこの76バイトをバッファリングしておく必要がある。本実施形態によって大きなデータバッファをなくすことは出来ても、このような小さなバッファは必要となる。またこのようなバッファはコネクション毎に必要となる。しかしながら、バッファサイズは大幅に小さく(1コネクションあたり1パケットのデータサイズ未満に)なることから、メモリのコストを大幅に抑えることができ、さらに、例えばTOE5を構成するASICやFPGA等のLSIの外部のメモリ(DRAM等)ではなく内部のメモリ等で実現できる場合もあり、トータルコストを抑えることができるか、または高性能化が実現できるというメリットがある。
このバッファをさらに削減する手法としては、ストレージデバイス4のブロックサイズをネットワーク10のパケットサイズの自然数倍にする手法である。例えばブロックデータのサイズが512バイトのとき、ネットワークパケットのサイズも512バイトにすると、TOE5はブロックデータを受け取るとそのままパケットを送信でき、送信後にバッファリングしておくデータもなくすことが出来る。ブロックデータのサイズを4096バイトにしてパケットのデータサイズを1024バイトにすれば、TOE5は一つのブロックデータを受けると4つのパケットを送信でき、この場合も次のパケット送信までバッファリングしておくデータをなくすことが出来る。このようにすれば、TOE5の内部のバッファをさらに削減することができ、本実施形態のメリットをさらに顕著にすることができる。
このように、第3の実施形態によれば、TOE5の内部のデータバッファを削減でき、装置をより低コスト、低消費電力にすることができ、本実施形態の効果をより顕著にすることが出来る。
本実施形態の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本実施形態の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本実施形態の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
上述した実施形態で説明したデータ送信システム1bの少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、データ送信システム1bの少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリ等の固定型の記録媒体でもよい。
また、データ送信システム1bの少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
1、1a、1b データ送信システム
2 ホストCPU
3 システムメモリ
4 ストレージデバイス(データ記録装置)
5 TOE(プロトコル処理装置)
21 ファイルシステム処理部
22 有効位置通知処理部
23 転送指示部
24 エラー通知部
25 転送コネクション選択部
26 転送コネクション通知部
27 再転送位置指定部
51 データ受付部
52 データ抽出部
53 ネットワーク処理部
54 フロー制御情報通知部

Claims (16)

  1. 主記憶装置に対する読み書きを行うことが可能なプロセッサと、
    格納されたデータをブロック単位でI/Oバス上に送信するデータ記録装置と、
    前記I/Oバスに接続され、前記プロセッサに代行して所定の通信プロトコル処理を行うプロトコル処理装置と、を備えたデータ送信システムであって、
    前記プロセッサは、
    前記データ記録装置から送信されるべきデータをブロック単位で特定するデータ特定部と、
    前記プロトコル処理装置のアドレス情報を指定して、前記データ記録装置から前記プロトコル処理装置へのデータ転送を指示する転送指示部と、を有し、
    前記プロトコル処理装置は、
    前記データ記録装置からブロック単位で前記I/Oバスに送信されたデータを、前記主記憶装置を経由せずに直接受け付けるデータ受付部と、
    前記データ受付部で受け付けたブロック単位のデータをパケット単位でネットワークに送信するネットワーク処理部と、を有することを特徴とするデータ送信システム。
  2. 前記プロセッサは、
    前記データ記録装置のファイルシステムに基づいて、ファイルに対応するブロック単位のデータ群と、その中の有効データの位置とを特定するファイルシステム処理部と、
    前記有効データの位置情報と、前記データ特定部が特定したデータを、前記プロトコル処理装置が関連付け可能なように、前記プロトコル処理装置に前記有効データの位置情報を通知する有効位置通知部と、を有し、
    前記プロトコル処理装置は、前記データ受付部で受け付けたブロック単位のデータと前記有効データの位置情報とに基づいて、前記有効データを抽出するデータ抽出部を有し、
    前記ネットワーク処理部は、前記データ抽出部が抽出した前記有効データをパケット単位で前記ネットワークに送信することを特徴とする請求項1に記載のデータ送信システム。
  3. ネットワークにデータを送信する際に論理的に設定される複数のコネクションを備え、
    前記プロセッサは、
    前記プロトコル処理装置からの前記コネクション毎のフロー制御情報に基づいて、前記プロトコル処理装置がデータ受付可能なコネクションの中からコネクションを選択するコネクション選択部と、
    前記コネクション選択部で選択したコネクションで送信すべきブロック単位のデータを特定するデータ特定部と、
    前記コネクション選択部が選択したコネクションの識別子と、前記データ特定部が特定したデータを、前記プロトコル処理装置が関連付け可能なように、前記プロトコル処理装置に前記コネクション選択部が選択したコネクションの識別子を通知するコネクション通知部と、を有し、
    前記プロトコル処理装置は、
    前記コネクション毎のフロー制御情報を前記プロセッサに通知するフロー制御情報通知部と、
    前記データ抽出部が抽出した前記有効データを、前記コネクション通知部から通知されたコネクションで、パケット単位で前記ネットワークに送信するネットワーク処理部と、を有することを特徴とする請求項1または2に記載のデータ送信システム。
  4. 前記コネクション選択部は、前記複数のコネクション間で偏りなくデータ転送が行えるように、各コネクションごとに公平にコネクションを選択することを特徴とする請求項3に記載のデータ送信システム。
  5. 前記プロトコル処理装置は、再転送すべきデータをブロック単位で前記プロセッサに要求する再転送要求部を有し、
    前記プロセッサは、前記要求に応答して、再転送すべきデータのファイルと、該ファイルのオフセット位置および長さと、を指定する再転送位置指定部を有することを特徴とする請求項1乃至4のいずれかに記載のデータ送信システム。
  6. 前記ブロック単位のデータサイズは、前記パケット単位のデータサイズの自然数倍であることを特徴とする請求項1乃至5のいずれかに記載のデータ送信システム。
  7. 前記転送指示手段は、前記データ記録装置から読出したデータを、前記バスを介して前記主記憶装置に転送するか、あるいは前記バスから前記主記憶装置を経由せずに前記データ受付部に直接送信するかを選択的に指示可能であることを特徴とする請求項1乃至7のいずれかに記載のデータ送信システム。
  8. 前記プロセッサは、前記データ記録装置にて発生した転送エラー信号を受信した場合に、転送エラーが発生したことを前記データ受付部に通知するエラー通知部を有し、
    前記データ受付部は、前記エラー通知からの通知を受け付けると、現在受信中のデータを破棄して、後続のブロック単位のデータを受け付けるために待機することを特徴とする請求項1乃至7のいずれかに記載のデータ送信システム。
  9. 主記憶装置に対する読み書きを行うことが可能なプロセッサと、
    格納されたデータをブロック単位でI/Oバス上に送信するデータ記録装置と、
    前記I/Oバスに接続され、前記プロセッサに代行して所定の通信プロトコル処理を行うプロトコル処理装置と、を制御するコンピュータ読み取り可能なプログラムであって、
    前記データ記録装置から送信されるべきデータをブロック単位で特定するステップと、
    前記プロトコル処理装置のアドレス情報を指定して、前記データ記録装置から前記プロトコル処理装置へのデータ転送を指示するステップと、
    前記データ記録装置からブロック単位で前記I/Oバスに送信されたデータを、前記主記憶装置を経由せずに前記プロトコル処理装置にて直接受け付けるステップと、
    前記プロトコル処理装置で受け付けたブロック単位のデータをパケット単位でネットワークに送信するステップと、をコンピュータに実行させるデータ送信プログラム。
  10. 前記データ記録装置のファイルシステムに基づいて、ファイルに対応するブロック単位のデータ群と、その中の有効データの位置とを特定するプログラムと、
    前記有効データの位置情報と、前記データ特定部が特定したデータを、前記プロトコル処理装置が関連付け可能なように、前記プロトコル処理装置に前記有効データの位置情報を通知するステップと、
    前記プロトコル処理装置で受け付けたブロック単位のデータと前記有効データの位置情報とに基づいて、前記有効データを抽出するステップと、を有し、
    前記プロトコル処理装置は、抽出された前記有効データをパケット単位で前記ネットワークに送信することを特徴とする請求項9に記載のデータ送信プログラム。
  11. ネットワークにデータを送信する際に論理的に複数のコネクションを設定するステップと、
    前記プロトコル処理装置からの前記コネクション毎のフロー制御情報に基づいて、前記プロトコル処理装置がデータ受付可能なコネクションの中からコネクションを選択するステップと、
    選択されたコネクションで送信すべきブロック単位のデータを特定するステップと、
    前記選択したコネクションの識別子と前記特定したデータとを、前記プロトコル処理装置が関連付け可能なように、前記プロトコル処理装置に前記選択したコネクションの識別子を通知するステップと、
    前記コネクション毎のフロー制御情報を前記プロトコル処理装置から前記プロセッサに通知するステップと、
    前記抽出した前記有効データを、前記通知されたコネクションで、パケット単位で前記ネットワークに送信するステップと、
    を有することを特徴とする請求項9または10に記載のデータ送信プログラム。
  12. 前記複数のコネクション間で偏りなくデータ転送が行えるように、各コネクションごとに公平にコネクションを選択することを特徴とする請求項11に記載のデータ送信プログラム。
  13. 再転送すべきデータをブロック単位で前記プロセッサに要求するステップと、
    前記要求に応答して、再転送すべきデータのファイルと、該ファイルのオフセット位置および長さと、を指定するステップと、を有することを特徴とする請求項9乃至12のいずれかに記載のデータ送信プログラム。
  14. 前記ブロック単位のデータサイズは、前記パケット単位のデータサイズの自然数倍であることを特徴とする請求項9乃至13のいずれかに記載のデータ送信プログラム。
  15. 前記データ記録装置から読出したデータを、前記バスを介して前記主記憶装置に転送するか、あるいは前記バスから前記主記憶装置を経由せずに前記データ受付部に直接送信するかを選択的に指示可能としたことを特徴とする請求項9乃至14のいずれかに記載のデータ送信プログラム。
  16. 前記データ記録装置にて発生した転送エラー信号を受信した場合に、転送エラーが発生したことを前記データ受付部に通知するステップと、
    前記エラー通知からの通知を受け付けると、現在受信中のデータを破棄して、後続のブロック単位のデータを受け付けるために待機するステップと、を有することを特徴とする請求項9乃至15のいずれかに記載のデータ送信プログラム。
JP2010244671A 2010-10-29 2010-10-29 データ送信システムおよびデータ送信プログラム Active JP5204195B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010244671A JP5204195B2 (ja) 2010-10-29 2010-10-29 データ送信システムおよびデータ送信プログラム
US13/234,564 US8788726B2 (en) 2010-10-29 2011-09-16 Data transmission system, storage medium and data transmission program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010244671A JP5204195B2 (ja) 2010-10-29 2010-10-29 データ送信システムおよびデータ送信プログラム

Publications (2)

Publication Number Publication Date
JP2012098838A true JP2012098838A (ja) 2012-05-24
JP5204195B2 JP5204195B2 (ja) 2013-06-05

Family

ID=45998012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010244671A Active JP5204195B2 (ja) 2010-10-29 2010-10-29 データ送信システムおよびデータ送信プログラム

Country Status (2)

Country Link
US (1) US8788726B2 (ja)
JP (1) JP5204195B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015177263A (ja) * 2014-03-13 2015-10-05 株式会社東芝 通信装置、情報処理装置、通信方法および通信プログラム
WO2016135875A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 情報処理装置
WO2016170673A1 (ja) * 2015-04-24 2016-10-27 株式会社日立製作所 計算機システム、及び、メモリモジュール
JP2018081346A (ja) * 2016-11-14 2018-05-24 日本電気株式会社 ストレージ装置、ストレージシステム、ストレージ制御方法、および、ストレージ制御プログラム
JP2019054455A (ja) * 2017-09-15 2019-04-04 国立大学法人宇都宮大学 通信デバイス、情報通信端末装置及び通信方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5611889B2 (ja) 2011-05-17 2014-10-22 株式会社東芝 データ転送装置、データ送信システムおよびデータ送信方法
US9753878B2 (en) * 2011-11-02 2017-09-05 Intel Corporation Extending the capabilities of existing devices without making modifications to the existing devices
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
CN105955899B (zh) * 2016-04-22 2019-01-11 西安电子科技大学 基于全固态半导体存储器阵列的雷达数字信号处理装置
CN107480541B (zh) * 2017-07-28 2020-04-28 中国航空无线电电子研究所 一种微小型机载记录***
CN109614036B (zh) * 2018-11-16 2022-05-10 新华三技术有限公司成都分公司 存储空间的部署方法及装置
CN110955525B (zh) * 2019-12-05 2022-12-20 广东省新一代通信与网络创新研究院 一种基于fpga设备的网络定义存储方法、读取方法及***
CN111475436A (zh) * 2020-04-07 2020-07-31 成都智明达电子股份有限公司 一种基于pcie交换网络的嵌入式高速sata存储阵列***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004289809A (ja) * 2003-03-03 2004-10-14 Nec Corp iSCSI装置及びその通信制御方法
JP2006352784A (ja) * 2005-06-20 2006-12-28 Sumitomo Electric Ind Ltd 伝送方法、受信装置及びコンピュータプログラム
JP2008016037A (ja) * 2006-07-07 2008-01-24 Korea Electronics Telecommun iSCSIのためのデータ加速装置及びこれを用いたiSCSI記憶システム
JP2008146486A (ja) * 2006-12-12 2008-06-26 Canon Inc 通信装置、通信装置の制御方法及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424710B1 (en) * 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
JP4343760B2 (ja) 2004-04-28 2009-10-14 株式会社日立製作所 ネットワークプロトコル処理装置
US7688838B1 (en) * 2004-10-19 2010-03-30 Broadcom Corporation Efficient handling of work requests in a network interface device
US7523179B1 (en) * 2004-12-14 2009-04-21 Sun Microsystems, Inc. System and method for conducting direct data placement (DDP) using a TOE (TCP offload engine) capable network interface card
WO2007069095A2 (en) * 2005-07-18 2007-06-21 Broadcom Israel R & D Method and system for transparent tcp offload
US7676607B2 (en) * 2005-12-08 2010-03-09 Electronics And Telecommunications Research Institute Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus
US7735099B1 (en) * 2005-12-23 2010-06-08 Qlogic, Corporation Method and system for processing network data
US7813339B2 (en) * 2007-05-02 2010-10-12 Tehuti Networks Ltd. Direct assembly of a data payload in an application memory
JP5436543B2 (ja) * 2009-03-31 2014-03-05 パナソニック株式会社 データ転送方法
JP5389174B2 (ja) 2009-08-05 2014-01-15 株式会社東芝 通信装置、パケット生成装置、及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004289809A (ja) * 2003-03-03 2004-10-14 Nec Corp iSCSI装置及びその通信制御方法
JP2006352784A (ja) * 2005-06-20 2006-12-28 Sumitomo Electric Ind Ltd 伝送方法、受信装置及びコンピュータプログラム
JP2008016037A (ja) * 2006-07-07 2008-01-24 Korea Electronics Telecommun iSCSIのためのデータ加速装置及びこれを用いたiSCSI記憶システム
JP2008146486A (ja) * 2006-12-12 2008-06-26 Canon Inc 通信装置、通信装置の制御方法及びプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015177263A (ja) * 2014-03-13 2015-10-05 株式会社東芝 通信装置、情報処理装置、通信方法および通信プログラム
US9866639B2 (en) 2014-03-13 2018-01-09 Kabushiki Kaisha Toshiba Communication apparatus, information processor, communication method, and computer-readable storage medium
WO2016135875A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 情報処理装置
JPWO2016135875A1 (ja) * 2015-02-25 2017-12-07 株式会社日立製作所 情報処理装置
WO2016170673A1 (ja) * 2015-04-24 2016-10-27 株式会社日立製作所 計算機システム、及び、メモリモジュール
JP2018081346A (ja) * 2016-11-14 2018-05-24 日本電気株式会社 ストレージ装置、ストレージシステム、ストレージ制御方法、および、ストレージ制御プログラム
JP2019054455A (ja) * 2017-09-15 2019-04-04 国立大学法人宇都宮大学 通信デバイス、情報通信端末装置及び通信方法
JP7049641B2 (ja) 2017-09-15 2022-04-07 学校法人東海大学 通信デバイス、情報通信端末装置及び通信方法

Also Published As

Publication number Publication date
US8788726B2 (en) 2014-07-22
JP5204195B2 (ja) 2013-06-05
US20120110397A1 (en) 2012-05-03

Similar Documents

Publication Publication Date Title
JP5204195B2 (ja) データ送信システムおよびデータ送信プログラム
US9544370B2 (en) Data transferring apparatus, data transmission system and data transmitting method
KR100992282B1 (ko) 통신 접속 수립 방법과 시스템, 데이터 전송 방법과 시스템, 및 컴퓨터 판독 가능한 저장 매체
KR101006260B1 (ko) 네트워크 프로토콜 처리의 오프로드에서 메모리 관리를 지원하기 위한 장치 및 방법
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
WO2018102967A1 (zh) NVMe over Fabric架构中数据读写命令的控制方法、存储设备和***
KR100823734B1 (ko) iSCSI를 위한 데이터 가속 장치 및 이를 이용한iSCSI 저장 시스템
US8572342B2 (en) Data transfer device with confirmation of write completion and method of controlling the same
WO2011150762A1 (zh) 一种文件***的操作方法及一种通信装置
US20050235072A1 (en) Data storage controller
US9578132B2 (en) Zero copy data transfers without modifying host side protocol stack parameters
US9680931B1 (en) Message passing for low latency storage networks
WO2013038730A1 (ja) データ転送装置、データ送信システム、データ送信方法およびプログラム
WO2021073546A1 (zh) 数据访问方法、装置和第一计算设备
WO2014186940A1 (zh) 一种硬盘和数据处理方法
JP2015179328A (ja) データ転送装置、データ受信システムおよびデータ受信方法
US20190278477A1 (en) Adaptive transaction layer packet for latency balancing
KR100449806B1 (ko) 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치
KR100723879B1 (ko) TOE를 이용한 iSCSI 타겟 시스템 상의 하드웨어가속 장치 및 그 장치를 이용한 읽기/쓰기 명령 수행방법
JP2014048810A (ja) ホストシステム、ストレージデバイス、および通信方法
WO2024103924A1 (zh) 一种数据读写方法及相关装置
KR20050065133A (ko) 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
JP2012205142A (ja) データ転送装置、データ転送方法および情報処理装置
Shen Design of High Performance Disk Storage Protocol
WO2015037274A1 (ja) 負荷軽減装置、サーバ装置及び負荷軽減方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121217

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: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130214

R151 Written notification of patent or utility model registration

Ref document number: 5204195

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3