JP4521398B2 - 前途のリソースの読み取りパスを用いた、読み取り/書き込みコマンドバッファプールリソースの管理 - Google Patents

前途のリソースの読み取りパスを用いた、読み取り/書き込みコマンドバッファプールリソースの管理 Download PDF

Info

Publication number
JP4521398B2
JP4521398B2 JP2006517181A JP2006517181A JP4521398B2 JP 4521398 B2 JP4521398 B2 JP 4521398B2 JP 2006517181 A JP2006517181 A JP 2006517181A JP 2006517181 A JP2006517181 A JP 2006517181A JP 4521398 B2 JP4521398 B2 JP 4521398B2
Authority
JP
Japan
Prior art keywords
read
write data
free
read data
blocks
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.)
Expired - Fee Related
Application number
JP2006517181A
Other languages
English (en)
Other versions
JP2007521748A (ja
Inventor
トーマス パトリック ジャクソン,
カーティス エドワード ノットバーグ,
デーヴィッド ロバート ウィリー,
マーク ティモシー ジョーンズ,
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
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 エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2007521748A publication Critical patent/JP2007521748A/ja
Application granted granted Critical
Publication of JP4521398B2 publication Critical patent/JP4521398B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、概して、ホストバスアダプタ(HBA)カードにおいての読み取り/書き込みコマンドの実行を容易にするために必要なメモリの管理に関する。一実施形態において、本発明は、性能を改善するための、また、トランスポート層においてのパケットデータの喪失に因するリソースの使いすぎを減少するためのアプリケーション層においての読み取り/書き込みコマンドデータの輻輳(congestion)を管理する装置、および方法に関する。
HBAは、ホストコンピュータのバスと、インターネットまたはファイバチャンネルループのような外部ネットワークとを接続するインプット/アウトプット(I/O)である。HBAは、バスと外部のネットワークとの間においての情報の移動を管理する。HBAは、通常、ホストコンピュータのバックプレーンに差し込むことができるサーキットカードにおいて、実施される。例えば、図1に示すように、HBA100は、例えば、ファイバチャンネル、またはインターネット小型コンピュータシステムインタフェース(iSCSI)プロトコルを用いてストレージ・エリア・ネットワーク(SAN)108内の装置と通信するためにPCIバス104と接続された装置を動作可能にするために、ホストコンピュータ106の周辺構成要素相互接続(PCI)バス104にインターフェースで接続されるコネクタ102へ挿入される。
ホストコンピュータ106内に、初期化においてPCIバス104に取り付けられる全てのSCSI装置を列挙するSCSIドライバ110がある。HBA100が、iSCSI HBAの場合、HBA100は、SCSIドライバ110によって列挙される1つ以上のSCSI装置のリスト内のSCSI装置として現れる。HBAは、マイクロプロセッサ114、メモリ116、およびファームウェア118のような構成部分を含む。また、ホストコンピュータ106内に、SAN108にあるSCSI装置を検出するiSCSIドライバ112がある。検出されるSCSI装置は、PCIバス104に局部的に取り付けられているかのように、HBA100を介してPCIバス104に提示される。
SCIS装置の初期化および識別が完了すると、プロトコルデータユニット(PDU)へフォーマットされたiSCSIコマンドは、PCIバス104に接続される装置とSAN108内のSCSI装置との間において、通信し得る。ここに規定されるように、iSCSIコマンドは、TCP/IPフレームに規格化されるSCSIデータ、およびコマンドを含み、両方向に行き来する通信制御プロトコル(TCP/IP)パケットである。しかし、通信制御プロトコル(TCP/IP)は、また、iSCSIロギングシーケンス(制御)、およびイニシエータとターゲットとの間の非同期な制御メッセージをも含み得る。パケット内に含まれるiSCSIコマンドの実施例は、特定のターゲットが制御する装置を列挙する要求、処理中のコマンドを強制終了する要求、またはログオフの要求である。
上記されたように、SAN108においてiSCSIプロトコルの通信を容易にするために、iSCSIコマンドは、TCP/IPパケットへ規格化されなければならない。例えば、特定のターゲットSCSIにタグを付けられるiSCSIコマンドがHBA100に示される場合、iSCSIコマンドは、TCP/IPパケットへ先ず符号化され、そして、それはターゲットへ送信される。ターゲットは、TCP/IPからSCSI情報を取り出し、PDUを再構成する。ターゲットSCSIは、また、HBA100へTCP/IPパケットへ規格化される応答を再送信し得る。HBA100は、TCP/IPパケットからSCSI情報を取り出し、それをローカルPCIバス104上のイニシエータへ送り返す。
図2は、ネットワークのための開放型システム間相互接続(OSI)モデルに従うHBA200内のプロトコルスタック202を図示する。HBAにおいてのファームウェアは、プロトコルスタックの機能を制御し得る。OSIモデルにおいて、総数7つの層がある。下物理層またはメディア・アクセス制御(MAC)204は、SANにおいて装置208にある同様のプロトコルスタック206と通信する。MAC204の上部は、リンク層210である。最上層は、ソケットと呼ばれるスタックへのインターフェースを用いるアプリケーション層212であるため、ソケット層と考えられる。データまたはコマンドは、アプリケーション層212を介して送受信される。例えば、書き込みコマンド、およびそれに関するデータは、(概念上)スタック202を介して下方へとフィルターするソケットコールを用いて、ワイヤまたは他のリンク216を通してターゲット208内の同様のスタック206への送受信をする。ターゲット208はまた、ワイヤ216を横切り、スタック202を介しPCIバスと通信するアプリケーション層212へと上方へ戻る応答ソケットコールをイニシエータへ送信もする。
iSCSI書き込みコマンドがターゲットと通信する場合、SCSIドライバは、書き込みコマンドを先ずフォーマットする。図3において示されるように、フォーマットされた書き込みコマンド内において、スキャッタ・ギャザリスト300があり、そのリストは、各々に、書き込みされるデータの位置を識別するためのアドレスフィールド、その位置においてのデータ量を示す長さフィールド、および、他のスキャッタ・ギャザ要素に対するオプションのポインターを含むスキャッタ・ギャザ要素302のリストから成る。スキャッタ・ギャザリスト300は、特定の書き込みコマンドである書き込みデータを別の位置において記憶されることを可能にする。
図4を参照し、書き込みコマンドが処理される場合、イニシエータからの書き込みデータは、スキャッタ・ギャザリストにおいてのアドレスフィールドを用いて取り出され、限定されたサイズのバッファプール412内にある1つ以上のバッファまたは、ブロックへ記憶される。そしてそれは、HBAのメモリの一部分になる。限定されたサイズのバッファプールは、固定されたサイズのバッファプールであり得、または、設定可能なサイズであり得るが、メモリが指示することを必要する際、容易に拡張できない。バッファプール412は、通常、固定されたサイズである多数のバッファ、またはブロック(例えば、4kB)を備える。バッファプール412は、スタックによって管理され(図2参照)、スタックから利用可能である。
書き込みデータが、バッファプール412にあるブロックに記憶される場合、ローカル記述子と呼ばれるブロックを指すポインタは、送信(Tx)リスト400において次々と記憶される。各々のローカル記述子404は、一ブロックのみを指し、記述子内のリンクは、どれだけのブロックが有効なデータを占められているかを識別する。Txリストの最後は、Txリストの最後を示す「stop」マーカである。従って、ローカル記述子数、および、Txリストにおいてのリンク数は、どれだけのバッファプールが書き込みデータで占められているのかを示す。
書き込みコマンドが、ターゲットへ送信されるよう準備される時、Txリスト400にあるローカル記述子404は、次々に同期的に処理される。各々のローカル記述子404が処理されると同時に、ローカル記述子404によって識別され、ブロック内に記憶されるデータは、TCP/IPパケットへフォーマットされる。ターゲットアドレス情報は、また、ターゲット自身が指定されたターゲットとして認識するように、TCP/IPラッパーにおいて配置されなければならない。フォーマットされた書き込みデータは、次に、プロトコルスタック内に送信され、ネットワーク上に送信される。そして、書き込みデータのブロックを指したローカル記述子は、Txリスト400から除去される。最後の記述子が届いた時、この処理は、終了する。書き込み処理が完了する場合、ターゲットは、イニシエータへ、書き込みコマンドが完了したことを示す認知応答を送信する。
iSCSI読み取りコマンドがターゲットと通信をする場合、SCSIドライバは、読み取りコマンドを先ずフォーマットする。読み取りコマンドは、スキャッタ・ギャザリストを含み、そのスキャッタ・ギャザリストのアドレスフィールドは、読み取りデータが記憶されるイニシエータ内にある位置を識別する。読み取りコマンドがHBAにおいて受信される場合、読み取りコマンドは、TCP/IPパケットに規格化され、概念上スタックを介して下方へとフィルターし、ターゲットへワイヤを通して送信される。そして、ターゲットは、データの位置を検出、データを規格化、およびそれをHBAへ送信する。
読み取りデータがターゲットから受信される場合、HBAは、その読み取りデータを記憶する場所を決定するためにRxリスト402を使用する。Rxリスト402は、バッファプール412内にあるフリーブロックを通常示すローカル記述子406を含む。読み取りデータがHBA内へ受信される間、読み取りデータは、Rxリスト402にあるローカル記述子406によって識別されるバッファプール412内にあるフリーブロック内にて記憶される。そして、ローカル記述子のステータスは、ローカル記述子が現在、満ブロックを指していることを示すように変更される。
一部の施行において、一度、全ての読み取りデータがバッファプール412において記憶される場合、読み取りデータは、読み取りコマンドスキャッタ・ギャザリストにおいてのアドレス位置に従う直接メモリアドレッシング(DMA)を用いてメモリを移動させることが可能である。読み取りデータが、バッファプール412外へ移動させられる場合、バッファプールにあるバッファは、開放され、読み取りデータを以前指していたRxリスト402内のローカル記述子は、フリーブロックを指すように再明示される。
代替的に、読み取りデータが到着し、バッファプール412において記憶される間、ルックアヘッドDMAは、全ての読み取りデータの受け取りに先立って、スキャッタ・ギャザリストによって特定される目的地へデータを移動させることを処理し得る。
しかしながら、ターゲットからのデータの読み取りが開始され、けれども、読み取りデータを収容するフリーブロックを指すRxリスト内のローカル記述子が不十分である場合、MACは、任意の入ってくる読み取りデータを廃棄する。
一般的に、ホストコンピュータメモリとバッファプールとの間の読み取り、または、書き込みデータの移動は、PCIバスの制御をすることが可能な、および、ホストコンピュータのメインプロセッサの介入なしにバックグラウンドにおいてPCIを通しデータを移動することが可能な特別なDMAプロセッサの制御の下において、DMAを使用して起こり得る。付け加えて、複数の読み取り、および、書き込みが、同時に起こり得る。
Txリスト400およびRxリスト402は、固定された最大数のエントリー(記述子)、例えば、256を含み得ることは、理解されべきである。何故なら、RxおよびTxリスト内のエントリーにおいてブロック数が識別される以上に、バッファプール412(例えば、5000)において全ブロック数が上回り得、記述子の「フリー」リスト414が、TxおよびRxリストにおいて識別されないフリーブロック数を追うHBAメモリにおいて維持もされるからである。
図4に示されるように、MACは、2つのリスト、送信(Tx)リスト400および受信(Rx)リスト402を管理する。一実施例において、32MBのメモリは、HBAにて利用可能であり得、その32MB中の19MBのメモリは、バッファプールのために利用可能である。残りの13MBは、TxおよびRxリストを含む他の機能のために確保される。HBAにおいてファームウェアは、RxおよびTxリスト、およびバッファプールを制御する。通常、SCSIドライバは、PCIバス上にて、読み取り、または書き込みコマンドを利用可能にし、HBAへ信号を送信する。そして、SCSIドライバは、ホストコンピュータが受動の間、TxおよびRxリスト、および、バッファの占有およびバッファを空にする動作を制御する。
従来の上記の構造において、HBAにある大部分のバッファプールが、外に行く書き込みデータおよび受信される読み取りデータを一時的に記憶するために利用され、それ以上の入ってくる読み取りデータを記憶するために十分なフリーブロックが無い場合、入ってくるデータパケットは、ドロップされる。さらに、TCP/IPは、コマンド、またはデータパケットの送信の間、ターゲットから受信されるパケットヘッダーを数えるメカニズムを提供するために、従って、カウントが予期値数を満たさないことをターゲットが検出する場合、再送信は、開始され、それがいっそうの減速を起こす。それ以上に、一連の特定のパケットが送信されない場合、失われたパケットが完璧に再送信されるまで全送信は、遅らされ得る。従って、入ってくる読み取りデータパケットの喪失は、ターゲットによってのタイムアウト、および再送信を結果として生じ、それは、スループットの性能を激しく低下させる。
付加的に、バッファプール内においての上記のブロックの不足が起こる場合、読み取りデータの輻輳、および読み取りコマンドの不完全処理を引き起こし、それにもかかわらず、HBAが新しい書き込みコマンドの受信、開始を続行し、バッファプール内にある任意の残りのフリーブロックは、書き込みデータによって利用される。しかしながら、処理待ちの(pending)読み取りコマンドは、完了のための十分なバッファを有していないため、完了されない。新しい書き込みコマンドは、処理待ちの読み取りコマンドの完了なしに処理されない。そのような状況において、バッファプールにある残りのフリーブロックは、成功不可な書き込みコマンドのために使用される。これが起こる場合、受信するための利用可能なフリーブロックが存在しないため、ターゲットによっての読み取りデータの次の再送信は、また、失敗に終わる。この閉鎖状態は、ターゲットがその再送信を中断し、接続を止め、やり直しをするまで続く。したがって、ボトルネックが激しくなり過ぎる場合、性能問題(低下)は、機能問題(閉鎖)になり得る。
このような問題を克服するため、および、性能低下または閉鎖の可能性を最低限にするために、一部の以前のデザインにおいて、バッファプールは、二つに分割される。そのうちの一つは、送信(書き込み)データのために予備され、もう一つは、受信(読み取り)データのために予備される。この構成は、管理するのに容易であるが、特にバッファプールの使用が平等でない場合、無駄が多く、非効率的である。二つに分割されるバッファプールにおいて、送信路が、例えば、より多くのメモリを必要とする場合、メモリが使用されていなくても、受信路のためにそのメモリを使用することができない。
したがって、性能を改善するために、また、トランスポート層においてのパケットデータの喪失に因するリソースの使いすぎを減少するためにアプリケーション層においての読み取り/書き込みコマンドデータの輻輳を管理する装置、および方法の必要性が存在する。
本発明の実施形態は、フリーブロックがHBAに到着する読み取りデータを一時的に記憶することが可能であることを確実にするために、HBAにおいてプロトコルスタックを用いて読み取りおよび書き込みコマンドの実行、および、バッファプールを管理する。アプリケーション層においての読み取り/書き込みコマンドデータの輻輳の管理は、性能を改善し、また、トランスポート層においてのパケットデータの喪失に因するリソースの使いすぎを減少させる。読み取りデータの再送信量を減少させるために、書き込みデータ送信は、現在満たされていない読み取りデータ要求量に基いて抑制(throttle)され得る。現在利用可能なブロックが、要求される全ての未処理の入ってくる読み取りデータによって、実質的に消費される場合、それ以上の読み取り、または書き込みコマンドPDUは、アプリケーション層によって送信されない。入ってくる読み取りデータに必要な先行するバッファプールリソースの計算は、予期されるデータサイズおよび、予期される応答PDUをも含む。出て行く書き込みデータもが、バッファプールにあるブロックにて一時的に記憶されるので、出て行く書き込みデータのブロックの使用は、バッファプールにおいての現在利用できるブロック数を影響する。抑制された(throttled)状況が存在する場合、十分なバッファリソースが利用可能になるまで、読み取り、または、書き込みデータコマンドPDUは、発生させられない。入ってくる読み取りデータが、割当てられるバッファに受信され、イニシエータに移動される間、バッファプールにあるブロックは、開放される。読み取りデータ移動が終わり、十分なバッファリソースが開放される場合、読み取り、および書き込みデータコマンドPDU送信は、再び始まり得る。
後述の最良の実施形態において、参照は、本出願の一部であり、および、図示することにより本発明が実行され得る特定の実施形態を示す添付図である。他の実施形態が、本発明の最良の実施形態の範囲から離れることなく利用されること、および、構成上の変化が、本発明の最良の実施形態の範囲から離れることなく為されることは、理解される。
本発明は、図示、および論述目的のためにのみ本明細書にてiSCSI HBAの点から主として記載されるが、本発明の実施形態は、読み取り要求が、増強する機能を提供するために利用可能なリソースに関連することができる他の上位層プロトコル(ULP)へ適用可能であり、特に、本発明の実施形態は、宛先へ送信される前に、データが送信路と受信路上のHBAにて一時的に記憶されることが必要であり、その送信路と受信路との間にて共有されている固定された、または、制限されたサイズのバッファプールを有するストアフォワードシステムへ適用可能である。
ターゲットへ送信される書き込みデータが、ホストコンピュータへ取り付けられるイニシエータからHBAへ達する場合、または、イニシエータへ送信される読み取りデータが、ターゲットからHBAへ達する場合、宛先へ送信される前に、データは、HBA内のメモリー部においての共有の、固定された、または制限されたサイズのバッファプールにあるブロックにまず配置される。バッファプールは、記憶断片化によって起こる非効率性を避けるために、読み取りデータ路と書き込みデータ路との間にて共有される。HBA内の利用可能な全メモリー(例えば、32MB)は、固定されたサイズ(例えば、4kB)であり得るバッファ、またはブロックへ分割される。全てのブロックは、必要に応じて割当てられ、または開放される。HBAそのものは、機能のために特定量のメモリー(例えば、13MB)を必要とし、そして、残りのメモリー(例えば、19MB)を、バッファプールにて利用可能にしておく。
十分数のブロックが、読み取り、または書き込みデータパケットを記憶するのに利用できない場合、そのパケットは、失われてしまう。読み取りパケットの喪失は、通常、ターゲットによって再送信という結果になり、システムの処理量を低下させる。加えて、入ってくる書き込みデータ要求の誤った管理は、システムの処理量をさらに低下させ、さらには、閉鎖(lockup)を引き起こす。
本発明の実施形態は、利用できるブロックがHBAへ達する読み取り、または書き込みデータを一時的に記憶するために利用可能であることを確実にするために、HBAにあるプロトコルスタックを用いて、バッファプール、および、読み取りおよび書き込みコマンドの実行を管理する。プロトコルスタックのアプリケーション層においての読み取り/書き込みコマンドデータの輻輳の管理は、機能を改善し、トランスポート層においてのパケットデータ喪失につながるリソースの使いすぎを減少させる。読み取りデータの再送信量を減少させるために、読み取りおよび書き込みコマンドPDU送信は、現在満たされていない読み取りデータ要求量に基いて抑制され得る。現在利用可能なブロックが、要求される全ての未処理の入ってくる読み取りデータによって、実質的に消費される場合、それ以上の読み取り、または書き込みコマンドPDUは、アプリケーション層によって送信されない。入ってくる読み取りデータに必要な先行するバッファプールリソースの計算は、予期されるデータサイズおよび、予期される応答PDUをも含む。
出て行く書き込みデータもが、バッファプールにあるブロックにて一時的に記憶されるので、出て行く書き込みデータのブロックの使用は、バッファプールにおいての現在利用できるブロック数に影響する。抑制される状況が存在する場合、十分なバッファリソースが利用可能になるまで、書き込みデータコマンドPDUは、発生させられない。入ってくる読み取りデータが、割当てられるバッファに受信され、イニシエータに移動される間、バッファプールにあるブロックは、開放される。読み取りデータ移動が終わり、十分なバッファリソースが開放される場合、書き込みデータコマンドPDU送信は、再び始まり得る。
言い換えれば、HBAメモリ部が、読み取り路と書き込み路との間にて共有されることを理解し、本発明の実施形態は、読み取りデータ要求中によって、ターゲットから戻らされる読み取りデータのために必要なメモリ部を考慮して、利用可能なメモリ部のために、新しい多すぎる読み取り、または書き込みコマンドの処理を避ける。新しい読み取り、または書き込みコマンドが現れる場合、本発明の実施形態は、それの処理をする決断をする前に、そのコマンドの予期される結果のための利用可能なメモリ空間を計算する。本質的には、処理中のコマンドがバッファプールにて十分なメモリを開放するために十分に処理されるまで、本発明の実施形態は、新しい読み取り、および書き込みコマンドの始動を防ぐことによって、書き込み、および読み取りコマンドの、容量に基づく処理を実施する。HBAは、新しい作業を達成するためだけではなく、既に開始された作業を終えるためにも、十分なメモリが開放されるまで任意の新しい仕事を(読み取り、および書き込みコマンドの形にて)始動しない。
図5は、本発明の実施形態に従うバッファプールリソースに従う読み取り、および書き込みコマンドの処理のためのプロトコルスタック500の例示である。図5は、HBAのプロトコルスタック500にあるアプリケーション層504によって受信されることを始める読み取り、および書き込み要求(コマンド)502を示す。処理待ちの(既に始動されている)読み取り要求が処理される間、これらの処理待ちの読み取り要求を満たすために割り当てられるバッファプールリソース量、および利用可能なバッファプールリソース量は、監視される。始動される次の書き込み要求が利用可能なリソースを上回る(または、不十分な余白を残す)場合、全ての後続の書き込み要求は、待機させられる(抑制される)。この前処理確認によって、MAC Rx層506が処理中(処理待ち)の読み取り要求から読み取りデータ508を受信する場合、バッファプールリソースは、利用可能である。入ってくる読み取りデータ508が処理される間、バッファプールリソースは開放され、利用可能なバッファプールリソース量は更新される。十分なバッファリソースが開放される場合、これらの新しい利用可能なリソースは、書き込みデータ510をターゲットへ送信するために抑制された書き込み要求の始動を可能にする。
同様に、始動される次の読み取り要求に関連する読み取りデータを記憶するのに必要なブロック数が、利用可能なリソースを上回る(または、不十分な余白を残す)場合、処理待ちの読み取り要求が、バッファプールリソースを開放するために完了へと処理される間、全ての後続の読み取り要求は、待機させられる(抑制される)。入ってくる読み取りデータ508が処理される間、バッファプールリソースは開放され、利用可能なバッファプールリソース量は更新される。十分なバッファリソースが開放される場合、これらの新しい利用可能なリソースは、読み取りデータ508をターゲットへ送信するために抑制された読み取り要求の始動を可能にする。
図6は、本発明に従う監視されるバッファプールリソースに従う読み取り、および書き込みコマンドの処理のための、HBA600内のプロトコルスタックにおいてのアプリケーション層の制御の下にある、Txリスト606、Rxリスト608、フリーリスト610およびバッファプール612を含むHBA600の例示である。
アプリケーション層は、フリーブロックを示すRxリスト608内の記述子数とフリーリスト610内の記述子数とを足すことによって、読み取りデータを受信するために利用可能なバッファプール612内のフリーブロック数を監視する。合計数は、バッファプール612内の全フリーブロック数を表す。
本発明の最良の実施形態において、アプリケーション層は、また、処理待ちの読み取りデータ要求数を監視し、処理待ちの読み取りデータ要求のための読み取りデータを受信するのにいくつのフリーブロックを必要とするかを決定する。処理待ちの読み取りデータ要求は、ターゲットへ送信されたが、まだターゲット614によってHBA600へバック送信される読み取りデータを有さない読み取りデータ要求である。処理待ちの読み取りデータ要求のコマンドサイズに基づいて、特定数の読み取りは、HBA600へバック送信されることを予期される。例えば、処理待ち読み取りデータ要求のコマンドサイズが、64kBを示す場合、164kBブロックが、その読み取りデータを記憶するのに必要である。
新たな書き込みデータ要求が受信される場合、アプリケーション層は、その新たな書き込みデータ要求のための、書き込みデータを一時的に記憶するのにいくつのフリーブロックを必要とするかを決定する。新たな書き込みデータ要求のための、全書き込みデータを受信する十分なフリーブロックが、バッファプール内にある場合、その新しい書き込みデータ要求は、始動される。書き込みデータは、バッファプールにおいてのフリーブロックへと割り当てられ、満ブロック(filled block)を示す記述子が、Txリスト606へ足される。書き込みデータは、そして、ターゲットへ送信される。
しかしながら、新たな書き込みデータ要求のための、全書き込みデータを受信する十分なフリーブロックがバッファプール612内にない場合、その書き込みデータ要求は、抑制され、先入先出(FIFO)読み取り/書き込みコマンド要求待ち行列616に配置される。そして、十分な読み取りデータ要求が完了され、十分なフリーブロックが、新たな書き込みデータ要求のための全ての書き込みデータを受信するために利用可能になるまで、それ以上の後続の書き込みデータ要求は、始動されない。この抑制時間の間に受信される次の新たな書き込みデータ要求もまた、読み取り/書き込みコマンド要求待ち行列616へ入れられる。それ以上の後続の書き込みデータ要求は、この間に始動はされないが、処理待ちの書き込みデータ要求(既に始動された書き込みデータ要求)は、完了へと続行されることに留意されたい。
処理待ちの読み取りデータ要求が処理され、入ってくる読み取りデータがバッファプール612内に受信され、そして、バッファプール外へ移動される間、バッファリソースは開放され、利用可能なバッファプールリソース数は更新される。読み取り/書き込みコマンド要求待ち行列616から、次の書き込みデータ要求の始動のために、全ての書き込みデータを受信する十分なフリーブロックが、バッファプール内にある場合、次の書き込みデータ要求は、始動される。
新たな読み取りデータ要求が受信される場合、アプリケーション層は、その新たな読み取りデータ要求のための、読み取りデータを一時的に記憶するのにいくつのフリーブロックを必要とするかを決定する。新たな読み取りデータ要求のための、全ての読み取りデータを受信する十分なフリーブロックが、バッファプール612内にある場合、その新しい読み取りデータ要求は、始動される。読み取りデータが、ターゲット614から受信される場合、HBAは、どこへ読み取りデータを記憶するのかを決定するためにRxリスト608を使用する。Rxリスト608は、バッファプール612において、通常フリーブロックを示すローカル記述子を含む。読み取りデータがHBA内に受信される間、読み取りデータは、Rxリスト608にあるローカル記述子によって識別されるバッファプール612においてのフリーブロックにて記憶され、ローカル記述子のステータスは、ローカル記述子が満ブロックを示すように変更される。そして、読み取りデータは、イニシエータへ移動される。
しかしながら、新たな読み取りデータ要求のための、全読み取りデータを受信する十分なフリーブロックがバッファプール612内にない場合、その読み取りデータ要求は、抑制され、読み取り/書き込みコマンド要求待ち行列616に配置される。そして、十分な読み取りデータ要求が完了され、十分なフリーブロックが、新たな読み取りデータ要求のための全ての読み取りデータを受信するために利用可能になるまで、それ以上の後続の読み取りデータ要求は、始動されない。この抑制時間の間に受信される次の新たな読み取りデータ要求もまた、読み取り/書き込みコマンド要求待ち行列616へ入れられる。それ以上の後続の読み取りデータ要求は、この間に始動はされないが、処理待ちの読み取りデータ要求(既に始動された読み取りデータ要求)は、完了へと続行されることに留意されたい。
処理待ちの読み取りデータ要求が処理され、入ってくる読み取りデータがバッファプール612内に受信され、そして、バッファプール外へ移動される間、バッファリソースは開放され、利用可能なバッファプールリソース数は更新される。読み取り/書き込みコマンド要求待ち行列616から、次の読み取りデータ要求の始動のために、全ての読み取りデータを受信する十分なフリーブロックが、バッファプール内にある場合、次の読み取りデータ要求は、始動される。
図7は、本発明の実施形態に従う抑制状態にあるバッファプールにおいての10バッファ(ブロック)の例示ブロック図である。内部の読み取り/書き込みコマンド要求待ち行列700は、抑制された書き込み、および読み取り要求を記憶する。図7の実施例において、各々5ブロックずつ使われると予測される2つの処理待ちの読み取りデータ要求704および706が始動されたために(実質の要求に必要な4バッファに加え、応答PDUが1バッファ使用するため)、書き込みデータ要求708、および、読み取りデータ要求710は、抑制される。しかしながら、10バッファのみ利用可能であり、したがって、ターゲットからの入ってくる読み取りデータは、全ての10ブロックを使用してしまい、2つの抑制された読み取り、および書き込みデータ要求に関連する8つのブロックのデータを記憶するフリーブロックを残さない。
本発明の一実施形態において、内部のカウンターは、全ての読み取りデータ要求によって必要とされる全推測ブロック数を決定するために使用される。読み取りデータ要求が始動される度、カウンターは、読み取りデータ要求に対してのその読み取りデータを記憶するのに必要とされる推測ブロック数だけインクリメントされる。従って、カウンターの様子は、常に、全ての処理待ちの読み取りデータ要求によって必要とされる全推測ブロック数を表す。
上記の最良の実施形態とは異なり、本発明の代替的な実施形態において、処理待ちの読み取り要求のメモリの必要性は、考慮されない。この代替的な実施形態において、書き込みデータは、ファームウェアがTxリスト、および、フリーリスト内にて示されるフリーブロック数を数えることによってバッファプール内において、十分なフリーブロック数が明白であることを決定した後にのみ、バッファプールにあるフリーブロックへ記憶される。書き込みデータを記憶するための十分なブロックが無い場合、書き込みデータ要求は抑制される。処理待ちの読み取りデータ要求の予測されるメモリの必要性は、考慮されない。
図8は、本発明の上記の代替的な実施形態を用いない時間に対するデータスループットのイーサネット(登録商標)プロットの例示を示す。y軸は、ターゲットへ送信された、およびターゲットから戻ったデータ量(例えば、パケットまたはバイト)を示し、表示されるデータ量によって変化する各々の縦の線は、特定の短期間にてターゲットへ送信された、およびターゲットから戻ったデータ量を示す。x軸は、時間を示す。
図8のプロットは、本発明の代替的な実施形態を用いないHBAのスループットを示す。しかしながら、図8の短い縦の線は、その期間のターゲットからの入ってくる読み取りデータの不足を示す。これが起こり得るのは、ターゲットが、読み取りデータの送信をまだ要求していない場合、または、Rxリストおよびフリーリストが、入ってくる読み取りデータを記憶するための十分なフリーブロックを含んでいない場合であり、よって、入ってくる読み取りデータパケットの喪失という結果になる。これが起こる場合、ターゲットは、パケットが受信されたことを認識せず、読み取りデータを再送信し得る。しかし、図8は、スループットの測定において再送信を示さない。ターゲットからの入ってくる読み取りデータの不足の他の可能性のある理由は、認識されないデータ量が特定の限界を超える場合(例えば、64k)、十分な認識が受信されるまで、または接続が中断されるまで、ターゲットはHBAへデータを送信することを止める。
図9は、本発明の上記の代替的な実施形態を用いる時間に対するデータスループットのイーサネット(登録商標)プロットの例示を示す。図9は、より多くのデータが、抑制を用いることでターゲットから帰ってくることが出来ることを示し、したがって、スループットは、より多くなる。
本発明の実施形態は、読み取り要求が向上された機能を提供するために、利用可能なリソースと関連付けられることが出来る、および、入ってくるデータ路および出て行くデータ路がメモリリソースを共有するULP設定(例えば、iSCSI、ファイバチャンネル、または同様物)において、通常適用可能である。本発明の実施形態は、始めにデータをカードへ移動し、そしてターゲットへ移動する、およびその反対に、始めにデータをターゲットへ移動し、そしてカードへ移動するストアフォアード技術に対しても、通常適用可能である。
図6のリストおよびバッファを監視することによって留保されたバッファ数、およびフリーバッファ数を決定する上記の方法は、性能を改善し、およびリソースの使いすぎを減らすための、プロトコルスタックのアプリケーション層においての読み取り/書き込みコマンドデータ輻輳を管理する一実施例にすぎないことに、留意されたい。他の実施形態において、カウンタ、レジスタ、および、読み取り/書き込みコマンドおよび利用可能なメモリの把握のための待ち行列のような他の手段は、利用され得る。加えて、最良な実施形態において、ファームウェアが本発明を実施するにあたり、利用されるが、ソフトウェア、ステートマシン、および同様物のような他の手段も、使用され得る。
本発明は、添付の図面の参照と共に実施形態との関係にて全記載されるが、多様な変更、および修正が、当業者にとって明瞭であることに留意されたい。そのような変更、および修正は、添付の請求項内にて規定される本発明の範囲内に含まれることとして理解される。
ホストバスアダプタを介するストレージ・エリア・ネットワークに結合されるホストコンピュータを備えるシステム環境を示す例示ブロック図である。 ネットワークのための開放型システム間相互接続(OSI)モデルに従う、HBAにあるプロトコルスタックを示す例示ブロック図である。 読み取り、および書き込みコマンド内において、スキャッタ・ギャザ要素から成るスキャッタ・ギャザリストを示す例示ブロック図である。 HBAにあるプロトコルスタックのメディアアクセス制御層によって管理される送信リスト、受信リスト、および、フリーリストを示す例示ブロック図である。 本発明の実施形態に従うバッファプールリソースに従う読み取り、および書き込みコマンドの処理のためのプロトコルスタックの例示である。 本発明に従う監視されるバッファプールリソースに従う読み取り、および書き込みコマンドの処理のための、HBA内のプロトコルスタックにおいてのアプリケーション層の制御の下にある、Txリスト、Rxリスト、フリーリストおよびバッファプールを含むHBAを示す例示ブロック図である。 本発明の実施形態に従う抑制状態にあるバッファプールにおいての10バッファ(ブロック)の例示ブロック図である。 本発明の実施形態を用いない時間に対するデータスループットのイーサネット(登録商標)プロットの例示を示す。 本発明の最良の実施形態を用いる時間に対するデータスループットのイーサネット(登録商標)プロットの例示を示す

Claims (29)

  1. 書き込みおよび読み取りデータ要求を実行するためのシステムであって、ピア装置へ送信される書き込みデータと該ピア装置から受信される読み取りデータとを一時的に記憶するためのブロックの共有書き込み/読み取りバッファプールを有しているシステムにおいて、該バッファプール内において読み取りおよび書き込みデータの輻輳を管理するための装置であって、該装置は、
    処理待ちの読み取りデータ要求が、新しい書き込みデータ要求のデータを収容するために、該バッファプールにおいて十分なブロックを開放するのに十分に処理されるまで、該新しい書き込みデータ要求の開始を防ぐためにプログラムされているプロセッサを備え
    該処理待ちの読み取りデータ要求が処理されると、該読み取りデータが該バッファプール外へ移動され、1つ以上のブロックを、新しい書き込みデータを一時的に記憶するために利用可能にする、装置。
  2. 前記プロセッサは、
    前記処理待ちの読み取りデータ要求および前記新しい書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに要求されるブロック数を決定し、
    前記バッファプールにおけるフリーブロック数を決定し、
    該フリーブロック数が、該処理待ちの読み取りデータ要求に対する該読み取りデータと該新しい書き込みデータ要求に対する該書き込みデータとを記憶するのに不十分な場合、該新しい書き込みデータ要求を抑制する
    ためにさらにプログラムされている、請求項1に記載の装置。
  3. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記プロセッサは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することによって、前記バッファプール内の該フリーブロック数を決定するためにさらにプログラムされている、請求項2に記載の装置。
  4. 前記プロセッサは、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい書き込みデータ要求を開始するためにさらにプログラムされている、請求項2に記載の装置。
  5. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記プロセッサは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することと、
    任意の処理待ちの読み取りデータ要求に対して入ってくる読み取りデータを記憶するために推定されるブロック数を該合計から引くことと
    によって、前記バッファプール内の該フリーブロック数を決定するためにさらにプログラムされている、請求項2に記載の装置。
  6. 前記プロセッサは、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい読み取りまたは書き込みデータ要求を開始するために、さらにプログラムされている、請求項5に記載の装置。
  7. 前記プロセッサは、
    前記抑制された新しい書き込みデータ要求と、任意の次の新しい読み取りまたは書き込みデータ要求とを、先入先出(FIFO)読み取り/書き込み要求待ち行列内に記憶し、
    前記バッファプールにおいてブロックを開放するために処理待ちの読み取りデータ要求を完了へ処理し、
    前記フリーブロック数が、該読み取り/書き込み要求待ち行列からの次の読み取りまたは書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに十分になる場合、該次の読み取りまたは書き込みデータ要求を実行する
    ためにさらにプログラムされている、請求項2に記載の装置。
  8. 請求項1に記載の装置を備えるホストバスアダプタ(HBA)であって、上位層プロトコル(ULP)をインプリメントするHBA。
  9. インターネット小型コンピュータシステムインタフェース(iSCSI)コントローラ回路をさらに備える、請求項8に記載のHBA。
  10. 請求項9に記載のHBAを備える、ホストコンピュータ。
  11. 請求項10に記載のホストコンピュータを備えるストレージ・エリア・ネットワーク(SAN)であって、iSCSIネットワークが前記iSCSIコントローラ回路に結合されており、1つ以上の記憶装置が該iSCSIネットワークに結合されている、SAN。
  12. 書き込みおよび読み取りデータ要求を実行するためのシステムであって、ピア装置へ送信される書き込みデータと該ピア装置から受信される読み取りデータとを一時的に記憶するためのブロックの共有書き込み/読み取りバッファプールを有しているシステムにおいて、読み取りおよび書き込みデータの輻輳を防ぐためのコンピュータプログラムであって、該コンピュータプログラムは、機械読み取り可能媒体上に記憶されており、
    処理待ちの読み取りデータ要求が、新しい書き込みデータ要求のデータを収容するために、該バッファプールにおいて十分なブロックを開放するのに十分に処理されるまで、該新しい書き込みデータ要求の開始を防ぐこと
    を含む動作を実行するように実行可能であり、
    該処理待ちの読み取りデータ要求が処理されると、該読み取りデータが該バッファプール外へ移動され、1つ以上のブロックを、新しい書き込みデータを一時的に記憶するために利用可能にする、コンピュータプログラム。
  13. 前記コンピュータプログラムは、
    前記処理待ちの読み取りデータ要求および前記新しい書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに要求されるブロック数を決定することと、
    前記バッファプールにおけるフリーブロック数を決定することと、
    該フリーブロック数が、該処理待ちの読み取りデータ要求に対する該読み取りデータと該新しい読み取りまたは書き込みデータ要求に対する該書き込みデータとを記憶するのに不十分な場合、該新しい書き込みデータ要求を抑制することと
    を含む動作を実行するようにさらに実行可能である、請求項12に記載のコンピュータプログラム。
  14. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記コンピュータプログラムは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することによって、前記バッファプール内の該フリーブロック数を決定することを含む動作を実行するようにさらに実行可能である、請求項13に記載のコンピュータプログラム。
  15. 前記コンピュータプログラムは、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい書き込みデータ要求を開始することを含む動作を実行するようにさらに実行可能である、請求項13に記載のコンピュータプログラム。
  16. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記コンピュータプログラムは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することと、
    任意の処理待ちの読み取りデータ要求に対して入ってくる読み取りデータを記憶するために推定されるブロック数を該合計から引くことと
    によって、前記バッファプール内の該フリーブロック数を決定することを含む動作を実行するようにさらに実行可能である、請求項13に記載のコンピュータプログラム。
  17. 前記コンピュータプログラムは、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい読み取りまたは書き込みデータ要求を開始することを含む動作を実行するようにさらに実行可能である、請求項16に記載のコンピュータプログラム。
  18. 前記コンピュータプログラムは、
    前記抑制された新しい書き込みデータ要求と、任意の次の新しい読み取りまたは書き込みデータ要求とを、先入先出(FIFO)読み取り/書き込み要求待ち行列内に記憶することと、
    前記バッファプールにおいてブロックを開放するために処理待ちの読み取りデータ要求を完了へ処理することと、
    前記フリーブロック数が、該読み取り/書き込み要求待ち行列からの次の読み取りまたは書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに十分になる場合、該次の読み取りまたは書き込みデータ要求を実行することと
    を含む動作を実行するようにさらに実行可能である、請求項13に記載のコンピュータプログラム。
  19. 請求項12に記載のコンピュータプログラムを備えるホストバスアダプタ(HBA)であって、上位層プロトコル(ULP)をインプリメントするHBA。
  20. インターネット小型コンピュータシステムインタフェース(iSCSI)コントローラ回路をさらに備える、請求項19に記載のHBA。
  21. 請求項20に記載のHBAを備える、ホストコンピュータ。
  22. 請求項21に記載のホストコンピュータを備えるストレージ・エリア・ネットワーク(SAN)であって、iSCSIネットワークが前記iSCSIコントローラ回路に結合されており、1つ以上の記憶装置が該iSCSIネットワークに結合されている、SAN。
  23. 書き込みおよび読み取りデータ要求を実行するためのシステムであって、ピア装置へ送信される書き込みデータと該ピア装置から受信される読み取りデータとを一時的に記憶するためのブロックの共有書き込み/読み取りバッファプールを有しているシステムにおいて、読み取りおよび書き込みデータの輻輳を防ぐ方法であって、該方法は、
    処理待ちの読み取りデータ要求が、新しい書き込みデータ要求のデータを収容するために、該バッファプールにおいて十分なブロックを開放するのに十分に処理されるまで、該新しい書き込みデータ要求の開始を防ぐこと
    を包含し、
    該処理待ちの読み取りデータ要求が処理されると、該読み取りデータが該バッファプール外へ移動され、1つ以上のブロックを、新しい書き込みデータを一時的に記憶するために利用可能にする、方法。
  24. 前記方法は、
    前記処理待ちの読み取りデータ要求および前記新しい書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに要求されるブロック数を決定することと、
    前記バッファプールにおけるフリーブロック数を決定することと、
    該フリーブロック数が、該処理待ちの読み取りデータ要求に対する該読み取りデータと該新しい書き込みデータ要求に対する該書き込みデータとを記憶するのに不十分な場合、該新しい書き込みデータ要求を抑制することと
    をさらに包含する、請求項23に記載の方法。
  25. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記バッファプールにおいてフリーブロック数を決定するステップは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することをさらに包含する、請求項24に記載の方法。
  26. 前記方法は、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい書き込みデータ要求を開始することをさらに包含する、請求項24に記載の方法。
  27. 前記システムは、フリーブロックを指す記述子ポインタと読み取りデータで満たされているブロックを指す記述子ポインタとを含む受信リストメモリと、該受信リストメモリにおいて参照されないフリーブロックを指す記述子ポインタを含むフリーリストメモリとを備え、前記バッファプールにおいてフリーブロック数を決定するステップは、
    該受信リストメモリおよび該フリーリストメモリ内のフリーブロック数を合計することと、
    任意の処理待ちの読み取りデータ要求に対して入ってくる読み取りデータを記憶するために推定されるブロック数を該合計から引くことと
    をさらに包含する、請求項24に記載の方法。
  28. 前記方法は、前記フリーブロック数が前記処理待ちの読み取りデータ要求に対する前記読み取りデータと前記新しい書き込みデータ要求に対する前記書き込みデータとを記憶するのに十分な場合、該新しい読み取りまたは新しい書き込みデータ要求を開始することをさらに包含する、請求項27に記載の方法。
  29. 前記方法は、
    前記抑制された新しい書き込みデータ要求と、任意の次の新しい読み取りまたは書き込みデータ要求とを、先入先出(FIFO)読み取り/書き込み要求待ち行列内に記憶することと、
    前記バッファプールにおいてブロックを開放するために処理待ちの読み取りデータ要求を完了へ処理することと、
    前記フリーブロック数が、該読み取り/書き込み要求待ち行列からの次の読み取りまたは書き込みデータ要求に対する前記読み取りまたは書き込みデータを記憶するのに十分になる場合、該次の読み取りまたは書き込みデータ要求を実行することと
    をさらに包含する、請求項24に記載の方法。
JP2006517181A 2003-06-27 2004-06-04 前途のリソースの読み取りパスを用いた、読み取り/書き込みコマンドバッファプールリソースの管理 Expired - Fee Related JP4521398B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/609,291 US7127534B2 (en) 2003-06-27 2003-06-27 Read/write command buffer pool resource management using read-path prediction of future resources
PCT/US2004/017759 WO2005006124A2 (en) 2003-06-27 2004-06-04 Read/write command buffer pool resource management using read-path prediction of future resources

Publications (2)

Publication Number Publication Date
JP2007521748A JP2007521748A (ja) 2007-08-02
JP4521398B2 true JP4521398B2 (ja) 2010-08-11

Family

ID=33540833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006517181A Expired - Fee Related JP4521398B2 (ja) 2003-06-27 2004-06-04 前途のリソースの読み取りパスを用いた、読み取り/書き込みコマンドバッファプールリソースの管理

Country Status (5)

Country Link
US (1) US7127534B2 (ja)
EP (1) EP1644836A2 (ja)
JP (1) JP4521398B2 (ja)
TW (1) TWI306196B (ja)
WO (1) WO2005006124A2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
US7792115B2 (en) 2003-07-21 2010-09-07 Qlogic, Corporation Method and system for routing and filtering network data packets in fibre channel systems
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US6993598B2 (en) * 2003-10-09 2006-01-31 International Business Machines Corporation Method and apparatus for efficient sharing of DMA resource
US7143263B2 (en) * 2003-10-16 2006-11-28 International Business Machines Corporation System and method of adaptively reconfiguring buffers
US7136943B2 (en) * 2004-03-18 2006-11-14 International Business Machines Corporation Method and apparatus for managing context switches using a context switch history table
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7234008B1 (en) * 2004-06-02 2007-06-19 Unisys Corporation Method and system for exchanging data between a central processing unit and an input/output processor
US7864681B2 (en) * 2004-07-15 2011-01-04 Broadcom Corp. Method and system for a gigabit ethernet IP telephone chip with 802.1p and 802.1Q quality of service (QoS) functionalities
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7380030B2 (en) * 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US8295299B2 (en) 2004-10-01 2012-10-23 Qlogic, Corporation High speed fibre channel switch element
US7392437B2 (en) * 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine
CN100347692C (zh) * 2005-05-31 2007-11-07 清华大学 San系统中虚拟化智能控制器的实现方法
US7669028B2 (en) * 2006-02-07 2010-02-23 International Business Machines Corporation Optimizing data bandwidth across a variable asynchronous clock domain
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US8665892B2 (en) * 2006-05-30 2014-03-04 Broadcom Corporation Method and system for adaptive queue and buffer control based on monitoring in a packet network switch
JP4841358B2 (ja) * 2006-08-18 2011-12-21 富士通株式会社 リクエスト送信制御装置およびリクエスト送信制御方法
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
GB0622408D0 (en) * 2006-11-10 2006-12-20 Ibm Device and method for detection and processing of stalled data request
US7850260B2 (en) * 2007-06-22 2010-12-14 Oracle America, Inc. Injection/ejection mechanism
US20090193108A1 (en) * 2008-01-29 2009-07-30 George Shin Critical Resource Management
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
TWI472188B (zh) * 2010-05-07 2015-02-01 Inventec Corp 儲存區域網路的檢驗裝置
US8533374B1 (en) * 2010-11-11 2013-09-10 Symantec Corporation Techniques for adaptive data transfer
CN102736987A (zh) * 2011-04-15 2012-10-17 鸿富锦精密工业(深圳)有限公司 监控数据缓存方法及系统
US8909764B2 (en) 2011-07-28 2014-12-09 Xyratex Technology Limited Data communication method and apparatus
US8463958B2 (en) * 2011-08-08 2013-06-11 Arm Limited Dynamic resource allocation for transaction requests issued by initiator devices to recipient devices
US8903994B2 (en) * 2012-03-20 2014-12-02 Drw Technologies Llc Read-throttled input/output scheduler
US10095433B1 (en) * 2012-10-24 2018-10-09 Western Digital Technologies, Inc. Out-of-order data transfer mechanisms for data storage systems
US9223542B2 (en) * 2013-05-20 2015-12-29 Advanced Micro Devices, Inc. Variable-sized buffers mapped to hardware registers
US9398117B2 (en) * 2013-09-26 2016-07-19 Netapp, Inc. Protocol data unit interface
US12001355B1 (en) 2019-05-24 2024-06-04 Pure Storage, Inc. Chunked memory efficient storage data transfers
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces
US11609960B2 (en) * 2020-06-08 2023-03-21 Walmart Apollo, Llc Methods and apparatus for automatically servicing item data requests
US20230168952A1 (en) * 2021-11-30 2023-06-01 International Business Machines Corporation Buffer pool resource allocation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247616A (en) * 1989-10-23 1993-09-21 International Business Machines Corporation Computer system having different communications facilities and data transfer processes between different computers
US5584039A (en) * 1993-11-08 1996-12-10 International Business Machines Corporation System for coordinating execution of multiple concurrent channel programs without host processor involvement using suspend and resume commands to control data transfer between I/O devices
US5852718A (en) * 1995-07-06 1998-12-22 Sun Microsystems, Inc. Method and apparatus for hybrid packet-switched and circuit-switched flow control in a computer system
US6263411B1 (en) * 1996-09-20 2001-07-17 Matsushita Electric Industrial Co., Ltd. Video server scheduling for simultaneous read-write requests
US6714553B1 (en) * 1998-04-15 2004-03-30 Top Layer Networks, Inc. System and process for flexible queuing of data packets in network switching
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments

Also Published As

Publication number Publication date
EP1644836A2 (en) 2006-04-12
WO2005006124A3 (en) 2005-08-04
US20040267982A1 (en) 2004-12-30
JP2007521748A (ja) 2007-08-02
WO2005006124A2 (en) 2005-01-20
TWI306196B (en) 2009-02-11
TW200506608A (en) 2005-02-16
US7127534B2 (en) 2006-10-24

Similar Documents

Publication Publication Date Title
JP4521398B2 (ja) 前途のリソースの読み取りパスを用いた、読み取り/書き込みコマンドバッファプールリソースの管理
US20240160584A1 (en) System and method for facilitating dynamic command management in a network interface controller (nic)
US9740455B2 (en) Apparatus and method for adjusting a rate at which data is transferred from a media access controller to a memory in a physical-layer circuit
US7836212B2 (en) Reflecting bandwidth and priority in network attached storage I/O
CA2361895A1 (en) Fifo-based network interface supporting out-of-order processing
US5933413A (en) Adaptive priority determination for servicing transmit and receive in network controllers
JP2009540681A (ja) データ通信フロー制御の装置および方法
US20100312928A1 (en) System and method for operating a communication link
US8924610B1 (en) SAS/SATA store-and-forward buffering for serial-attached-SCSI (SAS) storage network
WO2012030542A1 (en) Mechanism for autotuning mass data transfer from a sender to a receiver over parallel connections
CN113687770B (zh) 调节跨速率失配网络的NVMe-oF命令请求和数据流的系统和方法
JP2008086027A (ja) 遠隔要求を処理する方法および装置
KR100866204B1 (ko) 고속 통신 기기로부터 무선 네트워크로의 역방향 통신을위한 이동 단말의 데이터 흐름 제어 장치 및 방법
US20080263171A1 (en) Peripheral device that DMAS the same data to different locations in a computer
CN115086104B (zh) 一种支持数据断线重传的方法及串口服务器
CN116192772A (zh) 一种基于空间缓存的cpu收发包调度装置及方法
US20050223141A1 (en) Data flow control in a data storage system
KR100284791B1 (ko) 멀티노드 비동기 데이타 통신 시스템 내의 조기 도달 메시지처리 시스템
US20100074111A1 (en) Method of data traffic shaping, apparatus and wireless device
EP1966950A2 (en) Processing received data
JPH0320094B2 (ja)
US11297006B1 (en) Use of virtual lanes to solve credit stall on target ports in FC SAN
JP3288312B2 (ja) バッファ容量制御機能付きlan間接続装置
JP4373887B2 (ja) パケット処理方法
CN114328317B (zh) 一种提升存储系统通信性能的方法、装置及介质

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070511

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090902

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100301

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100524

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

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4521398

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees