JP5911943B2 - データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供 - Google Patents

データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供 Download PDF

Info

Publication number
JP5911943B2
JP5911943B2 JP2014229699A JP2014229699A JP5911943B2 JP 5911943 B2 JP5911943 B2 JP 5911943B2 JP 2014229699 A JP2014229699 A JP 2014229699A JP 2014229699 A JP2014229699 A JP 2014229699A JP 5911943 B2 JP5911943 B2 JP 5911943B2
Authority
JP
Japan
Prior art keywords
data
partially
host
indication
data processor
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
JP2014229699A
Other languages
English (en)
Other versions
JP2015115060A (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 JP2015115060A publication Critical patent/JP2015115060A/ja
Application granted granted Critical
Publication of JP5911943B2 publication Critical patent/JP5911943B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

本開示は、少なくとも1つのコントローラコマンドインタフェースのアクセスを、少なくとも部分的に回路によって支援することに関する。
従来のネットワーキング構成では、ホストメモリから送信されるパケットをフェッチするために、従来からのプル又はプッシュ技術が使用されている。例えば、従来のプル技術においては、使用される特定のホストオペレーティングシステムに応じて、ホスト中央演算処理装置(CPU)が、パケット及びそのディスクリプタをホストカーネルメモリに書き込むか、あるいは、アプリケーションバッファ(パケットを含む)をホストカーネルに渡した後にパケットのヘッダ及びディスクリプタをカーネルメモリに書き込むかの何れかを行う。その後、この従来のプル技術においては、CPUが、ドアベルを書き込んでホストのネットワークインタフェースコントローラ(NIC)に通報する。ドアベルに応答して、NICがホストメモリからディスクリプタ及びパケットを読み出す。そして、NICは、送信のためにパケットのスケジューリング及び処理を行った後に、ホストからパケットを送信する。
残念ながら、この従来のプル技術を実行する際に伴われる上述の処理は、NICからパケットを取得し、処理し、そして送信する際にかなりのレイテンシを導入する。容易に理解され得るように、これらのレイテンシは、特に、レイテンシに対して耐性がなく且つ/或いはクリティカルなトラフィックの場合に、望ましくないものである。
従来のプッシュ技術においては、CPUが、パケット及び/又はディスクリプタを直接的にNICメモリにコピーすることによって、黙示的なドアベルを提供する。それに応答して、NICが、送信のためにパケットのスケジューリング及び処理を行った後に、ホストからパケットを送信する。
残念ながら、この従来のプッシュ技術を実行する際に伴われる上述の処理は、ますます多くのパケットトラフィック及び/又はCPUスレッドがパケット送信を要求することに対して十分に対応(スケーリング)しない。これは、少なくとも部分的に、この従来のプッシュ技術がこのようなパケット送信/トランザクションの各々にかなりの量のNIC(例えば、オンダイ)メモリを使用することの結果である。また、使用されるホストバスプロトコル/内部輸送アーキテクチャに応じて、(例えばNICメモリへの)バス/内部輸送機構上でのポステッドライトの集中的な使用が、各パケット送信/トランザクションに関与し得る。これは、特に、対応する完全なるポステッドライトに一致することを困難にするようにCPU命令の並べ替えが行われるときに、ホストCPUの性能を低下させ得る。
この従来のプッシュ技術の更なる不利益は、送信トラフィックがバースト性であって、それにより、かなりの量のトラフィックが比較的短い期間に生成されるときに明らかになる。例えば、そのようなバースト性トラフィックは、パケットプッシュトランザクションン向けのNICメモリを完全に充たしてしまい、それにより、十分なNICメモリ空間が供給されるまで(例えば、NICメモリに現に格納されている他のパケットがホストから送信される後まで)、CPUスレッドを失速させて、更なるパケットを送信用にNICに送ることをできなくさせてしまい得る。これは、有意な性能低下をもたらし得る。この状況は、レイテンシに対して耐性がなく且つ/或いはクリティカルなトラフィックに対して特に有害な影響を及ぼし得る。この問題を改善することを試みて追加のNICメモリを設けることはできる。しかしながら、NICメモリを追加することは、NICコストを増大させる。
一実施形態により、少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置を提供する。
は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供し得る回路を含み得る。前記少なくとも1つのインジケーションは少なくとも部分的に、データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる処理に利用可能になるのに先立って提供され得る。前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して処理を開始し得る。
以下の詳細な説明が進むにつれて、また、図面を参照することで、実施形態の特徴及び利点が明らかになる。図面において、同様の部分は似通った参照符号で指し示す。
システムの一実施形態を例示する図である。 一実施形態における機構を例示する図である。 一実施形態における機構を例示する図である。 一実施形態における機構を例示する図である。 以下の詳細な説明を、例示的な実施形態を参照しながら進めるが、数多くの代替、変更及び変形が当業者に明らかになる。従って、特許請求に係る事項は広く見られるべきものである。
図1は、一実施形態に係るシステム100を示している。システム100は、ネットワーク51を介して1つ以上のホスト20に通信可能に結合され得る1つ以上のホスト10を含み得る。この実施形態において、用語“ホストコンピュータ”、“ホスト”、“サーバ”、“クライアント”、“ネットワークノード”、及び“ノード”は、相互に入れ替え可能に使用されることがあり、また、限定ではないが例えば、1つ以上のエンドステーション、モバイルインターネット装置、スマートフォン、メディア装置、入力/出力(I/O)装置、タブレットコンピュータ、家電機器、中間局、ネットワークインタフェース、クライアント、サーバ、及び/又はこれらの部分を意味し得る。この実施形態において、“ネットワーク”は、2つ以上のエンティティがともに通信可能に結合されることを少なくとも部分的に許容、支援且つ/或いは可能化する如何なる機構、手段、様式、及び/又はこれらの部分であるか有するかであってもよい。また、この実施形態において、第1のエンティティが第2のエンティティに“通信可能に結合”されるのは、第1のエンティティが1つ以上のコマンド及び/又はデータを第2のエンティティとの間で送信及び/又は受信することができる場合であるとし得る。この実施形態において、データ及び情報は、相互に入れ替え可能に使用されることがあり、1つ以上のコマンド(例えば、1つ以上のプログラム命令)であるか有するかであるとすることができ、且つ/或いは、1つ以上のそのようなコマンドはデータ及び/又は情報であるか有するかであるとし得る。また、この実施形態において、命令はデータ及び/又は1つ以上のコマンドを有し得る。さらに、この実施形態において、データは1つ以上の命令及び/又はコマンドを有し得る。この実施形態において、1つ以上のホスト10は、1つ以上のホスト20から少なくとも部分的に遠隔(例えば、地理的に遠隔)であり得る。
1つ以上のホスト10は、1つ以上の回路カード(サーキットカード;CC)37に(例えば、少なくとも部分的に回路基板35に含まれた1つ以上の図示しないカードスロット及び/又はその他のインターコネクトを介して)通信可能に結合され得る1つ以上の回路基板(サーキットボード;CB)35を有し得る。例えば、図示していないが、1つ以上の回路基板35は、1つ以上のカードスロット及び/又はその他のインターコネクトを有し得る。また、例えば、1つ以上の回路カード37は、1つ以上の回路基板及び回路カード37(並びにこれらの1つ以上のそれぞれのコンポーネント)が少なくとも部分的に互いに対して電気的に結合され且つ/或いは物理的に係合されるよう、1つ以上のスロット及び/又は1つ以上の回路基板35のインターコネクトに対して少なくとも部分的に挿入且つ/或いは係合されることができるように構築され得る1つ以上の係合するインターコネクトを有し得る。
この実施形態において、1つ以上の回路基板35は、回路118を少なくとも部分的に有し得る。回路118は、1つ以上のシングルコア及び/又はマルチコアのホストプロセッサ(HP)12、1つ以上のチップセット(CS)15、及び/又はメモリ21を少なくとも部分的に有し得る。1つ以上のチップセット15は、1つ以上のホストプロセッサ12をメモリ21、1つ以上の回路カード37、1つ以上のデータプロセッサ(DP)108、NICC120、及び/又は1つ以上のNIC121に、少なくとも部分的に通信可能に結合し得る。
また、この実施形態において、1つ以上の回路カード37は、1つ以上のデータプロセッサ108を少なくとも部分的に有し得る。1つ以上のデータプロセッサ108は、1つ以上のネットワークインタフェースコントローラ(NIC)121を少なくとも部分的に有し得るネットワークインタフェースコントローラ回路(NICC)120を少なくとも部分的に有し得る。1つ以上のNIC121は、メモリ122を少なくとも部分的に有し得る。
この実施形態において、“回路”は、例えば、単独に、あるいは組み合わせにて、アナログ回路、デジタル回路、ハードワイヤード回路、プログラマブル回路、コプロセッサ回路、状態マシン回路、及び/又はプログラマブル回路によって実行され得るプログラム命令を有し得るメモリ、であるか有するかであり得る。また、この実施形態において、プロセッサ、ホストプロセッサ、中央演算処理ユニット、プロセッサコア、コア、及び/又はコントローラは各々、1つ以上の算術演算及び/又は論理演算を少なくとも部分的に実行すること、及び/又は1つ以上の命令を少なくとも部分的に実行することが可能なそれぞれの回路であるか有するかであり得る。この実施形態において、チップセットは、1つ以上のホストプロセッサ及び/又はメモリが少なくとも部分的に通信可能に結合されることを少なくとも部分的に可能にし得る回路を少なくとも部分的に有し得る1つ以上の集積回路チップであるか有するかであり得る。この実施形態において、集積回路チップは、1つ以上のマイクロエレクトロニクスデバイス、基板、及び/又はダイであるか有するかであり得る。また、この実施形態において、メモリは、以下の種類のメモリのうちの1つ以上であるか有するかであり得る:半導体ファームウェアメモリ、揮発性メモリ、プログラマブルメモリ、不揮発性メモリ、読み出し専用メモリ、電気的プログラム可能メモリ、ランダムアクセスメモリ、フラッシュメモリ、磁気ディスクメモリ、光ディスクメモリ、及び/又はその他の、あるいは後に開発されるコンピュータ読取可能/書込可能メモリ。
図示していないが、1つ以上のホスト10及び/又は20は各々、1つ以上のそれぞれのグラフィカルユーザインタフェースシステムを少なくとも部分的に有し得る。これらのグラフィカルユーザインタフェースシステムの各々は、例えば、人間ユーザが1つ以上のホスト10、1つ以上のホスト20、及び/又はシステム100のコマンドを入力すること及び/又はそれらの動作を監視することを可能にし得る1つ以上のそれぞれのキーボード、ポインティング装置、及び/又はディスプレイシステムを少なくとも部分的に有し得る。
この実施形態において、データのアクセスは、少なくとも部分的に、データの一回以上の読み取り及び/又は書き込みであるか有するかであり得る。また、この実施形態において、データを読み取ることは少なくとも部分的に、(例えば、メモリからの)データの少なくとも部分的な取得及び/又は取り出しを少なくとも部分的に支援し、含み、且つ/或いはもたらし得る1つ以上のトランザクション及び/又は出来事であるか有するかであり得る。この実施形態において、データを書き込むことは少なくとも部分的に、(例えば、メモリへの)データの少なくとも一時的且つ/或いは少なくとも部分的な格納を少なくとも部分的に支援し、含み、且つ/或いはもたらし得る1つ以上のトランザクション及び/又は出来事であるか有するかであり得る。この実施形態において、データの読み取り、書き込み及び/又はアクセスは、1つ以上のダイレクトメモリアクセス(DMA)処理及び/又はトランザクションを少なくとも部分的に有し得る。
1つ以上の機械読み取り可能プログラム命令が、例えばメモリ21及び/又は122に少なくとも部分的に格納され得る。1つ以上のホスト10の動作において、これらの機械読み取り可能命令は、回路118、1つ以上のホストプロセッサ12、1つ以上のチップセット15、1つ以上のデータプロセッサ108、回路120及び/又は1つ以上のNIC121(及び/又はこれらの1つ以上のコンポーネント)によって、少なくとも部分的にアクセスされて実行され得る。そのようにアクセス且つ/或いは実行されるとき、これら1つ以上の機械読み取り可能命令は少なくとも部分的に、回路118、1つ以上のホストプロセッサ12、1つ以上のチップセット15、1つ以上のデータプロセッサ108、回路120及び/又は1つ以上のNIC121(及び/又はこれらの1つ以上のコンポーネント)が、回路118、1つ以上のホストプロセッサ12、1つ以上のチップセット15、1つ以上のデータプロセッサ108、回路120及び/又は1つ以上のNIC121(及び/又はこれらの1つ以上のコンポーネント)によって実行されるようにここに記載される処理を少なくとも部分的に実行することをもたらし得る。
この実施形態において、エンティティの一部又はサブセットは、そのエンティティの全てを有していてもよいし、全てより少ないものを有していてもよい。また、この実施形態において、プロセス、スレッド、デーモン、プログラム、ドライバ、オペレーティングシステム、アプリケーション、カーネル、及び/又は仮想マシンモニタは各々、1つ以上の演算及び/又はプログラム命令の実行を(1)少なくとも部分的に有し、且つ/或いは(2)少なくとも部分的にもたらし且つ/或いはもたらされ得る。この実施形態において、カーネルは、(例えば、(1)1つ以上のユーザアプリケーションプロセスからの1つ以上の入力/出力(I/O)要求を少なくとも部分的に管理、解釈且つ/或いは制御することができ、且つ/或いは(2)1つ以上のそのようなI/O要求を、1つ以上のホスト内に含まれる回路に少なくとも部分的によっての実行のために、少なくとも部分的に翻訳且つ/或いは解釈することができる)1つ以上のオペレーティングシステムプロセスであるか有するかであり得る。
この実施形態において、リング、キュー、及び/又はバッファは、データ及び/又は1つ以上のコマンドが少なくとも一時的に格納され得るメモリ内の1つ以上の位置(例えば、1つ以上のアドレスによって少なくとも部分的に指定且つ/或いは指示される)を少なくとも部分的に有し得る。さらに、この実施形態において、ドアベルは、メモリ内の1つ以上の位置に書き込まれるときに、(1)1つ以上の処理の実行を少なくとも部分的にもたらし、且つ/或いは(2)1つ以上の処理が少なくとも部分的に実行されるべきであることを少なくとも部分的に指し示し得るデータ及び/又は1つ以上のコマンドを、少なくとも部分的に、具現化し、参照し、指し示し、有し、且つ/或いはそれであり得る。この実施形態において、ディスクリプタは、(1)1つ以上のパケット、1つ以上のパケットの1つ以上の位置(例えば、メモリ内)、及び/又は1つ以上のパケットの1つ以上の特性及び/又は特徴を少なくとも部分的に記述し、且つ/或いは(2)1つ以上のパケットに対して少なくとも部分的に実行され且つ/或いは1つ以上のパケットに関与し得るデータ及び/又は1つ以上のコマンドを、少なくとも部分的に、具現化し、参照し、指し示し、有し、且つ/或いはそれであり得る。例えば、この実施形態において、ディスクリプタは、(1)少なくとも部分的に、1つ以上のパケットに少なくとも部分的に関与する1つ以上の処理を実行するための1つ以上の要求であるか有するかであるとすることができ、且つ/或いは(2)1つ以上のパケットへの1つ以上のポインタ、及び/又は1つ以上のパケットの1つ以上の長さ/サイズ、種類などの1つ以上のインジケーションを少なくとも部分的に有することができる。この実施形態において、ポインタは、メモリ内の1つ以上の位置及び/又は1つ以上のアイテムを少なくとも部分的に指し示し、アドレシングし、且つ/或いは指定し得る。
図示していないが、この実施形態を逸脱することなく、1つ以上の回路カード37の様々なコンポーネント(例えば、1つ以上のデータプロセッサ108、NICC120、1つ以上のNIC121、メモリ122、及び/又はこれらの1つ以上のコンポーネント)のうちの一部又は全ては、1つ以上の回路基板35、回路118、1つ以上のホストプロセッサ12、及び/又は1つ以上のチップセット15に少なくとも部分的に含まれていてもよい。同様に、この実施形態を逸脱することなく、1つ以上の回路基板35のコンポーネント(例えば、1つ以上のホストプロセッサ12、1つ以上のチップセット15、メモリ21、及び/又は回路118)のうちの一部又は全ては、1つ以上のデータプロセッサ108、NICC120、1つ以上のNIC121、及び/又は1つ以上の回路カード37に少なくとも部分的に含まれていてもよい。
この実施形態において、1つ以上のホスト10、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、イーサネット(登録商標)プロトコル及び/又はトランスミッションコントロールプロトコル/インターネットプロトコル(TCP/IP)プロトコルに少なくとも部分的に準拠且つ/或いは互換であり得る1つ以上のプロトコルに従ったネットワーク51を介して、1つ以上のホスト20と1つ以上のパケット50を交換し得る。例えば、イーサネット(登録商標)プロトコルは、電気電子技術者協会(IEEE)規格802.3−2008(2008年12月26日)に準拠且つ/或いは互換であり得る。また、例えば、TCP/IPプロトコルは、インターネットエンジニアリングタスクフォース(IETF)規約(RFC)791及び793(1981年9月公開)に準拠且つ/或いは互換であり得る。数多くの異なる、更なる、及び/又はその他のプロトコル(例えば、上述のプロトコル、関連するプロトコル、及びその他のプロトコルの、以前に開発されたバージョン及び/又は以降に開発されるバージョン)も、この実施形態を逸脱することなく、このようなデータ及び/又はコマンドの交換に使用され得る。
例えば、この実施形態において、回路118及び/又は1つ以上のホストプロセッサ12は、1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120による処理のために、データ(D)105のうちの1つ以上の(この実施形態において複数の)部分(P)106A...106Nを、1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120に利用可能にし得る。このようなデータ105及び/又はその1つ以上の部分106A...106Nの提供の後及び/又は同時に、1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120は、このようなデータ105及び/又はその1つ以上の部分106A...106Nを、例えば、それを1つ以上のパケット50に含め且つ/或いは1つ以上のホスト20に輸送することによって処理し得る。
例えば、回路118及び/又は1つ以上のホストプロセッサ12は、1つ以上のパケット50での1つ以上のホスト20への送信に(少なくとも部分的に)先立って、データ105及び/又はその1つ以上の部分106A...106Nを、少なくとも部分的に、生成し且つ/或いはメモリ21に格納し得る。例えば、1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120によるデータ105及び/又はその1つ以上の部分106A...106Nの処理を開始、支援且つ/或いは促進するため、回路118は、データ105の1つ以上の部分(例えば、1つ以上の部分106A)が1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120による処理に利用可能であることを指し示す1つ以上のインジケーション(IND)104を少なくとも部分的に提供し得る。有利には、この実施形態において、これら1つ以上のインジケーション104は少なくとも部分的に、データ105の1つ以上の部分106Aの全体(例えば、全て)110が1つ以上のデータプロセッサ108、1つ以上のNIC121及び/又はNICC120による処理に実際に利用可能にされるのに先立って提供される。1つ以上のインジケーション104に少なくとも部分的に応答して、且つ/或いは基づいて、1つ以上のデータプロセッサ108、1つ以上のNIC121、及び/又はNICC120は、データ105の1つ以上の部分106Aの処理を開始し得る。
例えば、この実施形態において、1つ以上のインジケーション104は、メモリ21に少なくとも部分的に書き込まれ得る1つ以上のドアベル(DB)112を有し得る。1つ以上のドアベル112は、(1)データ105の1つ以上の部分106A...106Nへの1つ以上のポインタ(PNTR)130、及び/又は(2)1つ以上のポインタ130によって指し示される1つ以上の部分106A...106Nの1つ以上の長さ/サイズを示す1つ以上のインジケータ(IND)132を有し得る。
例えば、図2に示すように、この実施形態において、1つ以上のインジケーション104は、データ105の1つ以上の部分106A...106Nに少なくとも部分的に対応し得る1つ以上の(この実施形態において複数の)インジケーション206A...206Nを有し得る。回路118及び/又は1つ以上のホストプロセッサ12は、データ105の1つ以上の部分106A...106Nを、メモリ21の1つ以上のサブセット250内の1つ以上のアプリケーション(APP)データバッファ113(例えば、1つ以上のプロセッサ12によって少なくとも部分的に実行される1つ以上の図示しないユーザアプリケーションプロセスに少なくとも部分的に関連付けられ、割り当てられ、且つ/或いはそれによって使用され得る1つ以上のデータバッファ)に少なくとも部分的に書き込み得る。それぞれの部分106A...106Nの各々を書き込むのに少なくとも部分的に先立って、回路118及び/又は1つ以上のホストプロセッサ12は、それぞれのインジケーション206A...206Nを、メモリ21の1つ以上のサブセット250内の1つ以上のメモリマップトI/O(MMIO)空間202内の1つ以上の循環リングデータ構造204内のそれぞれのシーケンシャル(及び/又は非シーケンシャル)エントリに書き込み得る。
この実施形態において、メモリマップトI/O空間は少なくとも部分的に、1つ以上の装置を少なくとも部分的に必要とする1つ以上のI/O処理及び/又はトランザクションを支援、使用、シグナリング、要求、アクセス且つ/或いは実行する際に使用される1つ以上のハードウェア、ファームウェア及び/又はソフトウェア装置に排他的あるいは非排他的に少なくとも部分的に関連付けられ、割り当てられ、且つ/或いは割り振られ得るメモリの1つ以上の連続的及び/又は非連続的部分であるか有するかであり得る。この実施形態において、1つ以上のMMIO空間202は、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121に少なくとも部分的に関連付けられ得る。
この実施形態において、図示していないが、インジケーション206A...206Nの各々は、1つ以上のインジケーション104のそれぞれのコンポーネント、フィールド及び/又は値に少なくとも部分的に対応し、同様であり、あるいは類似し得るそれぞれのコンポーネント、フィールド及び/又は値を少なくとも部分的に有し得る。故に、図示していないが、それぞれのインジケーション206A...206Nは、それぞれの部分106A...106Nに関するそれぞれのドアベルを鳴らすためのそれぞれのドアベル、それぞれの部分106A...106Nをそれぞれ指し示すそれぞれのポインタ、及び/又はそれぞれの部分106A...106Nのそれぞれのサイズをそれぞれ示すそれぞれのサイズインジケータを少なくとも部分的に有し得る。
それぞれのリング204内のそれぞれのエントリへのそれぞれのインジケーション206A...206Nの少なくとも部分的な書き込みは、それぞれのインジケーション206A...206Nに少なくとも部分的に関連付けられ得るデータ105のそれぞれの部分106A...106Nに関して、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121への且つ/或いはそれらと(少なくとも部分的に)関連付けられる1つ以上のそれぞれのドアベルリングを少なくとも部分的に具現化し、もたらし、且つ/或いは構成し得る。この実施形態において、或るエンティティに関連付けられたドアベルを鳴らすことは、そのエンティティが1つ以上の処理及び/又は行為を少なくとも部分的に実行することを少なくとも部分的にもたらし且つ/或いはトリガーし得る1つ以上のメモリ位置に1つ以上の値(例えば、1つ以上のドアベル)を書き込むことを少なくとも部分的に有し、且つ/或いは伴い得る。加えて、あるいは代えて、図示していないが、この実施形態を逸脱することなく、1つ以上のインジケーション206A...206N及び/又は1つ以上のドアベル112は、例えば1つ以上のデータプロセッサ108、NICC120、1つ以上のNIC121、及び/又は1つ以上のホスト10内の何処か内の、1つ以上のメモリ位置に書き込まれてもよい。
それぞれの部分106A...106Nに少なくとも部分的に関連付けられたそれぞれのドアベルを鳴らすことに少なくとも部分的に応答して、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、それぞれのドアベルに少なくとも部分的に関連付けられ得るデータ105のそれぞれの部分106A...106Nのそれぞれの処理を開始し得る。データ105の1つ以上のそれぞれの部分(例えば、106A)のそれぞれの処理は、これら1つ以上のそれぞれの部分106A(及び/又は1つ以上のその他のそれぞれの部分106B...106N)がそれらそれぞれの処理に実際に利用可能になるのに先立って開始し得る。
例えば、回路118及び/又は1つ以上のホストプロセッサ12は、データ105の1つ以上の部分106A(及び/又は部分106B...106Nのうちの1つ以上)を1つ以上のバッファ113に書き込むこと(そしてそれにより、それらそれぞれの処理に利用可能にすること)に少なくとも部分的に先立って、1つ以上のリング204に1つ以上のインジケーション206Aを少なくとも部分的に書き込み得る。1つ以上のリング204への1つ以上のインジケーション206Aの少なくとも部分的な書き込みに少なくとも部分的に由来する1つ以上のドアベルリングに少なくとも部分的に応答して、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、回路118及び/又は1つ以上のプロセッサ12によって1つ以上の部分106A(及び/又は部分106B...106Nのうちの1つ以上)の全体が1つ以上のバッファ113に完全に書き込まれるのに先立って、1つ以上のインジケーション206Aに関連付けられた1つ以上の部分106Aの読み取り及び/又はその他の処理を開始し得る。
加えて、あるいは代えて、この実施形態を逸脱することなく、回路118及び/又は1つ以上のプロセッサ12は、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121による1つ以上の部分106Aの処理に少なくとも部分的に同時に、あるいは先立って、データ105のその他の部分106B...106Nのうちの1つ以上を1つ以上のバッファ113に少なくとも部分的に書き込んでもよい。これは、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121による1つ以上の部分106Aの処理に、それぞれ、少なくとも部分的に同時に、あるいは先立って、部分106B...106Nのうちのこれら1つ以上を、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121によるそれぞれの処理に利用可能にし得る。
1つ以上のリング204へのそれぞれのインジケーション206A...206Nの少なくとも部分的なそれぞれの書き込むに対して、少なくとも部分的に前に、同時に、あるいは後に、回路118及び/又は1つ以上のプロセッサ12は、メモリ21の1つ以上のサブセット250内のカーネルメモリ/メモリ空間115内の1つ以上のディスクリプタ(DESCR)リング210に、それぞれのディスクリプタ(DESCR)212A...212Nを少なくとも部分的に書き込み得る。これらそれぞれのディスクリプタ212A...212Nは、それぞれのインジケーション206A...206N及び/又はデータ105のそれぞれの部分106A...106Nに少なくとも部分的に関連付けられ且つ/或いは対応し得る。1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121によるそれぞれのインジケーション206A...206N及び/又はそれぞれの部分106A...106Nの読み取りと並行して、且つ/或いは同時に、これらそれぞれのディスクリプタ212A...212Nを少なくとも部分的に読み取り得る。データ105の1つ以上のそれぞれの部分(例えば、106A)に少なくとも部分的に関連付けられた1つ以上のそれぞれのインジケーション(例えば、206A)及び/又は1つ以上のそれぞれのディスクリプタ(例えば、212A)を少なくとも部分的に読み取った後、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、データ105のうちのこの1つ以上のそれぞれの関連付けられた部分106Aを少なくとも部分的に読み取り得る。
例えば、この実施形態において、1つ以上のリング210、及び/又は1つ以上のリング210に含まれるそれぞれのメモリ位置は、回路118及び/又は1つ以上のプロセッサ12によって、少なくとも部分的に予め割り当てられ、且つ/或いは予め定められ得る。このような事前割当て及び/又は事前決定は、それぞれのインジケーション206A...206Nとそれらそれぞれの対応及び/又は関連するディスクリプタ212A...212Nとの間の関係と、該それぞれの対応及び/又は関連するディスクリプタ212A...212Nを格納する1つ以上のリング210内のそれぞれのメモリ位置とが、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121に少なくとも部分的に所定且つ/或いは利用可能にされ得るようにし得る。
この実施形態において、データ105のそれぞれの部分106A...106Nのディスクリプタ212A...212Nは、それぞれのディスクリプタ212A...212Nが有効であるかを少なくとも部分的に指し示し得るそれぞれのディスクリプタ情報(I)213A...213Nを少なくとも部分的に有し、参照し、且つ/或いは指し示し得る。例えば、回路118及び/又は1つ以上のプロセッサ12によって1つ以上のリング210に書き込まれるとき、1つ以上のそれぞれのディスクリプタ(例えば、212A)に含まれるそれぞれの情報(例えば、213A)が、1つ以上のそれぞれのディスクリプタ212Aが有効であることを指し示すように(例えば、ブール論理にて)設定され得る。しかしながら、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121が、これら1つ以上のそれぞれのディスクリプタ212A及び/又はそれらに関連付けられ得るデータ105の1つ以上のそれぞれの部分106Aを読み取り且つ/或いは処理した後、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、(1)該1つ以上のそれぞれのディスクリプタがもはや有効でない(すなわち、無効である)ことを指し示すように該1つ以上のそれぞれのディスクリプタ212Aのそれぞれの情報213Aを(例えば、ブール論理又はその他の方法でリセットすることにより)変更して、(2)それらそれぞれの情報213Aが斯くして変更された該1つ以上のそれぞれのディスクリプタ212Aを、該1つ以上のそれぞれのディスクリプタ212Aが読み取られたのと同じ1つ以上のリング210内の1つ以上のメモリ位置に書き戻し得る。これは、これら1つ以上のメモリ位置を、変更された1つ以上のディスクリプタ212Aで上書きし得る。1つ以上のディスクリプタ212Aをこのように変更し、且つ/或いはこのように変更された1つ以上のディスクリプタ212Aを1つ以上のリング210に書き戻すことにより、回路118及び/又は1つ以上のプロセッサ12に対して、(1)1つ以上のリング210内の1つ以上のディスクリプタ212Aがもはや有効でなく、且つ(2)(例えば、回路118及び/又は1つ以上のプロセッサ12によって、適宜に、1つ以上の新たなディスクリプタ212Aで上書きされるべく)再利用のために回路118及び/又は1つ以上のプロセッサ12に利用可能になっていることが指し示され得る。
この実施形態において、1つ以上のそれぞれのディスクリプタ(例えば、212A)を少なくとも部分的に読み取った後、1つ以上のデータプロセッサ108、NICC120、及び/又はNIC121は、1つ以上のそれぞれのディスクリプタ212Aに少なくとも部分的に含まれ且つ/或いは関連付けられたそれぞれの情報(例えば、213A)を少なくとも部分的に調べて、1つ以上のそれぞれのディスクリプタ212Aが有効であるかを少なくとも部分的に決定し得る。それぞれの情報213Aが、1つ以上のそれぞれのディスクリプタ212Aが無効であり得ることを指し示す場合、1つ以上のデータプロセッサ108、NICC120、及び/又はNIC121は、(1)これら1つ以上のディスクリプタ212A及び/又はそれらが関連付けられたデータ105の1つ以上の部分106Aをやめ(例えば、もはや処理し続けず)、且つ/或いは(2)図3に関して後述するように、1つ以上のその他且つ/或いは異なる送信キューに関する処理に進み得る。
図2に戻るに、逆に、それぞれの情報213Aが、1つ以上のそれぞれのディスクリプタ212Aが有効であることを指し示す場合、1つ以上のデータプロセッサ108、NICC120、及び/又はNIC121は、1つ以上の関連付けられたインジケーション206Aに含まれる1つ以上のポインタによって指し示されるデータ105の1つ以上の関連付けられた部分106Aを、少なくとも部分的に1つ以上のディスクリプタ212Aと一貫するように、且つ/或いは少なくとも部分的に1つ以上のディスクリプタ212Aによって要求されるように、少なくとも部分的に処理し得る。この例において、1つ以上のディスクリプタ212Aは、1つ以上のデータプロセッサ108、NICC120、及び/又は1つ以上のNIC121による1つ以上のホスト20へのデータ50の1つ以上の部分106Aの(単独、及び/又は1つ以上のその他の部分106B...106Nとともにの)1つ以上のパケット50での少なくとも部分的な送信を、少なくとも部分的に要求し得る。従って、これら1つ以上の要求に少なくとも部分的に応答して、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、そのように1つ以上のパケット50での送信を要求され得るデータ105の1つ以上の部分106A...106Nを、少なくとも一時的且つ/或いは少なくとも部分的に、ローカルメモリ122に格納し得る。1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、要求された部分106A...106Nを有するように1つ以上のパケット50を少なくとも部分的に構築し得る。1つ以上のパケット50を構築した後、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、1つ以上のパケット50を1つ以上のネットワーク51を介して1つ以上のホスト20に送信し得る。
このような目的で、この実施形態において、1つ以上のディスクリプタ212A(及び/又はその他のディスクリプタ212B...212Nのうちの1つ以上)は、1つ以上のパケット50での送信を要求され得る部分106A...106Nの総数及び/又はデータ105の総量を少なくとも部分的に指し示し得る。1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、要求された部分106A...106Nの総数及び/又は要求されたデータ105の量の全てを(例えば、1つ以上のパケット50を首尾よく構築するように)1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121が完全に処理したかを少なくとも部分的に決定するために1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121によって使用されるべく、1つ以上のカウンタ(及び/又はその他の好適なデータ構造)270を、メモリ21及び/又はメモリ122内で、少なくとも部分的に維持管理し得る。データ105の要求された部分106A...106Nの各々が(例えば、メモリ122へと)読み取られるとき、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、要求された部分の総数又はデータ105の総量(例えば、1つ以上のディスクリプタ212A内で指し示される)が処理されるまで、1つ以上のカウンタ270を適宜インクリメント(又はデクリメント)し得る。
加えて、あるいは代えて、この実施形態を逸脱することなく、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、1つ以上のそれぞれの関連付けられたデータ105の部分106A、ディスクリプタ212A及び/又は情報213Aの読み取りを、回路118及び/又は1つ以上のプロセッサ12によるこれら1つ以上のそれぞれの関連付けられたデータ105の部分106A、ディスクリプタ212A及び/又は情報213Aの1つ以上のバッファ113及び/又はサブセット250への書き込みと少なくとも部分的に同時にこの読み取りが行われるように、開始し得る。例えば、データ105の1つ以上の部分106Aの処理を加速するため、回路118及び/又はプロセッサ12は、1つ以上のそれぞれの関連付けられたデータ105の部分106A、ディスクリプタ212A及び/又は情報213Aの1つ以上のメモリサブセット250への少なくとも部分的な書き込みを回路118及び/又はプロセッサ12が開始且つ/或いは完了するのに少なくとも部分的に先立って、1つ以上のリング204に1つ以上のインジケーション206Aを少なくとも部分的に書き込み得る。1つ以上のインジケーション206Aを少なくとも部分的に書き込むことに少なくとも部分的に由来する1つ以上のドアベルリングに少なくとも部分的に応答して、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、回路118及び/又は1つ以上のプロセッサ12による上記書き込みの開始及び/又は完了に先立って、これら1つ以上のそれぞれの関連付けられたデータ105の部分106A、ディスクリプタ212A及び/又は情報213Aを少なくとも部分的に読み取ることを開始し得る。回路118及び/又は1つ以上のプロセッサ12がデータをメモリ21に書き込むことができるのより迅速に1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121がメモリ21からデータを読み取ることができるのでない限り、以上の動作が(例えば、1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121によって読み出されることが可能なようにメモリ21への有効データの書き込みことを待つために)1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121による望ましくない量の失速をもたらすことは起こりそうにない。
代わりに、あるいは加えて、この実施形態を逸脱することなく、1つ以上のプロセッサ12によって1つ以上のホスト10で実行され得る1つ以上の図示しないオペレーティングシステムの具体的な種類に応じて、1つ以上のプロセッサ12は、1つ以上のオペレーティングシステムカーネルメモリ空間115の1つ以上のホストカーネルメモリバッファ302に、データ105、及び/又はデータ105の1つ以上の部分106A...106Nを、少なくとも部分的にコピーし得る。例えば、この代替的及び/又は付加的な構成において、ここに別段に述べている場合を除き、1つ以上のプロセッサ108、NICC120、1つ以上のNIC121、1つ以上のプロセッサ12及び/又は回路118によって少なくとも部分的に実行される動作は、この実施形態においてこれらのコンポーネントによって実行されるとして先述されたものと少なくとも部分的に同一、同様、且つ/或いは類似とし得る。しかしながら、この代替的及び/又は付加的な構成においては、これら1つ以上の図示しないオペレーティングシステムは、データ105及び/又はその1つ以上の部分106A...106Nにアクセスすることができるようになるのに先立って、回路118及び/又は1つ以上のプロセッサ12がホストカーネルメモリ115にデータ105及び/又は1つ以上の部分106A...106Nを少なくとも部分的にコピーし得る種類とし得る。より具体的には、この実施形態においては、1つ以上のリング204に1つ以上のそれぞれのインジケーション206A...206Nを少なくとも部分的に書き込むことによって、1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121に1つ以上のそれぞれのドアベルリングを(少なくとも部分的に)提供した後、回路118及び/又は1つ以上のプロセッサ12は、1つ以上のそれぞれの対応するディスクリプタ212A...212Nを1つ以上のリング210に書き込み得る。これらそれぞれのディスクリプタ212A...212Nの各々の1つ以上のリング210への書き込みと少なくとも部分的に同時に(例えば、並行して)、回路118及び/又は1つ以上のプロセッサ12は、少なくとも部分的に、(1)データ105のそれぞれの対応する部分(P)209A...209Z、及び/又は(2)それぞれの対応する情報(I)フィールド211A...211Zを、メモリ115内のそれぞれの位置(ロケーション)LA...LZに書き込み得る。このとき、それぞれの位置LA...LZの各々への対応する情報フィールド211A...211Zは最後に書き込まれる。故に、この構成において、1つ以上のそれぞれのディスクリプタ212A...212Nは、データ105の1つ以上のそれぞれの部分209A...209Zに少なくとも部分的に対応し、且つ/或いはそれを記述し得る。それぞれのディスクリプタ212A...212N及び/又はデータ105のそれぞれの対応する部分209A...209Z(及びそれらそれぞれの対応する情報フィールド211A...211Z)のメモリ115への少なくとも部分的な書き込みと少なくとも部分的に同時に(例えば、並行して)、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、これらのアイテムをメモリ115から読み取り得る。
この構成において、それぞれの情報フィールド211A...211Zは、それぞれの位置LA...LZ内でそれらと関連付けられたデータ205のそれぞれの対応する部分209A...209Zのそれぞれの有効性を少なくとも部分的に指し示し得る(それぞれの情報213A...213Nを使用してディスクリプタ212A...212Nの有効性を指し示す手法と少なくとも部分的に同様且つ/或いは類似の手法にて)。加えて、あるいは代えて、情報フィールド211A...211Zは、例えばそれぞれの有効なバイトの数、それぞれの対応するディスクリプタの位置などの、その他且つ/或いは更なる種類の情報であるか有するかであってもよい。それぞれの情報211A...211Zの調査に少なくとも部分的に基づいて、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、それらに関連付けられたそれぞれの部分209A...209Zが1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121による処理に有効であるかを決定し得る。このような決定に基づいて、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、ディスクリプタ212A...212Nがそれらそれぞれの対応する情報213A...213Nに少なくとも部分的に基づいて1つ以上のプロセッサ108、NICC120及び/又は1つ以上のNIC121によって処理される手法と少なくとも部分的に同様且つ/或いは類似の手法で、それぞれの対応する部分209A...209Zを処理し得る。
1つ以上のホスト10からの1つ以上のパケット50での送信のためにデータ10の1つ以上の有効な部分209A...209Zを完全に処理した後、1つ以上のプロセッサ108、NICC120、1つ以上のNIC121、1つ以上のプロセッサ12、及び/又は回路118は、それらそれぞれの情報211A...211Zを、それらがもはや有効でないことを少なくとも部分的に指し示すように少なくとも部分的に変更し得る。このような変更は、それぞれの情報213A...213Nが、それらがもはや有効でないことを指し示すように変更され且つ/或いは1つ以上のリング210に書き戻され得る(先述の)手法と、少なくとも部分的に同様且つ/或いは類似とし得る。そのように変更された後、もはや無効な部分209A...209Z(及びそれらの、もはや変更された、対応するそれぞれの情報211A...211Z)が、それらそれぞれの位置209A...209Zに書き戻され得る。これは、それらを、回路118及び/又は1つ以上のプロセッサ12による再利用のために解放し得る。
故に、この代替的及び/又は付加的な構成において、回路118及び/又は1つ以上のプロセッサ12は、1つ以上のホストメモリサブセット250内に、(1)1つ以上の部分209A...209Z、(2)1つ以上の部分209A...209Zの1つ以上のディスクリプタ212A...212N、及び/又は(3)1つ以上のサブセット250のこれらのコンテンツに少なくとも部分的に関連付けられ得る情報211A...211Z及び/又は情報213A...213Nを書き込み得る。このような情報211A...211Z及び/又は情報213A...213Nは、それらそれぞれの対応する部分209A...209Z及び/又はそれぞれの対応するディスクリプタ212A...212Nが有効であり得るかを少なくとも部分的に指し示し得る。この構成において、1つ以上のプロセッサ108、NICC120、及び/又は1つ以上のNIC121は、1つ以上のそれぞれの部分209A...209Z、それぞれの対応するディスクリプタ212A...212N、及び/又は情報211A...211Z及び/又は情報213A...213Nの読み取りを、この読み取りが、回路118及び/又は1つ以上のプロセッサ12による1つ以上のサブセット250への1つ以上のそれぞれの部分209A...209Z、それぞれの対応するディスクリプタ212A...212N、及び/又は情報211A...211Z及び/又は情報213A...213Nの書き込みと、少なくとも部分的に同時に行われ得るように開始し得る。代わりに、あるいは加えて、この構成及び/又は実施形態を逸脱することなく、1つ以上のディスクリプタ212A...212Nは、1つ以上のそれぞれの対応する部分209A...209Zが1つ以上のホストカーネルメモリバッファ302に少なくとも部分的に書き込まれることの少なくとも部分的に後に、1つ以上のリング210に書き込まれてもよい。
先述のように、この実施形態において、それぞれのインジケーション206A...206N(及び/又はその中に含まれるドアベル)は、少なくとも部分的に、(1)それぞれのインジケーション206A...206Nに関連付けられるデータ105の1つ以上のそれぞれの対応する部分106A...106N及び/又は209A...209Z(場合による)の1つ以上のそれぞれの位置への1つ以上のそれぞれのポインタ、及び/又は(2)これらそれぞれの対応する部分106A...106N及び/又は209A...209Zに含まれるそれぞれのデータの量を有し且つ/或いは指し示し得る。加えて、あるいは代えて、この実施形態において、それぞれのインジケーション206A...206Nは、1つ以上のパケット50を生成するために1つ以上のプロセッサ108、NICC120及び/又はNIC121によって処理されるべきデータ105のこれらの部分の1つ以上のそれぞれの個数を少なくとも部分的に指し示し且つ/或いはそれであり得る1つ以上のそれぞれの値を、少なくとも部分的に有し得る。これら1つ以上の値は、例えば、先述の手法と同一、同様あるいは類似の手法で使用され得る1つ以上のカウンタ値270であるか有するかであり得る。
この実施形態において、具体的な実装に応じて、データバッファキャッシュラインアライメント及び/又はホストシステムバス/インターコネクト伝送効率/互換性を少なくとも部分的に支援するために、インジケーション206A...206Nの各々は、各それぞれのポインタを58ビット長とし、且つそれぞれのデータ量インジケータを6ビット長として、64ビット長であるとし得る。故に、例えば、ドアベル112及び/又はインジケーション104(図1参照)は64ビット長とすることができ、1つ以上のポインタ130は58ビット長であり且つ1つ以上のインジケーション132は6ビット長であるとし得る。加えて、この実施形態において、1つ以上の部分106A...106Nの各々は64バイト長であるとし得る。また、この実施形態において、1つ以上の部分209A...209Zの各々は、対応する情報フィールド211A...211Zの各々を1バイト長として、63バイト長であるとし得る。ディスクリプタ212A...212N及び/又はそれぞれの情報213A...213Nのそれぞれのサイズを設定することにも同様の考慮を行い得る。故に、1つ以上のバッファ115に書き込まれた後、部分209A...209Zは、総合して、データ105の全てを有し得るが、部分106A...106Nへのデータ105の区分けとは少なくとも部分的に異なるように部分209A...209Zへと区分けされ得る。
この実施形態において、インジケーション206A...206Nは、(図1中の代表的なインジケーション104に例示されるように)それらの対応するそれぞれのディスクリプタ212A...212Nに含まれる情報の1つ以上のサブセットを有し得る。加えて、あるいは代えて、この実施形態を逸脱することなく、それぞれのインジケーション206A...206Nは、それらの対応するそれぞれのディスクリプタ212A...212Nに含まれるそれぞれの情報の全てを有する。例えば、例示的なインジケーション(IND)402は、1つ以上のドアベル(DB)404を有し得る。1つ以上のドアベル404は、1つ以上のポインタ(PNTR)406(例えば、1つ以上のポインタ130の目的に類似の目的を果たし得る)、1つ以上のディスクリプタ(DESCR)408、及び/又は1つ以上のインジケータ(IND)410(例えば、1つ以上のインジケーション132の目的に類似の目的を果たし得る)を有し得る。1つ以上のディスクリプタ408は、1つ以上のインジケーション(例えば、206A)に対応し得る対応するディスクリプタ(例えば、212A)のうちの1つ以上であるか有するかであり得る。
当然ながら、具体的な実装に応じて、この実施形態を逸脱することなく、データ105の部分106A...106N及び/又は209A...209Z、インジケーション206A...206N、ディスクリプタ212A...212N、情報211A...211Z、情報213A...213Nのコンテンツ、数、サイズ、構成などは様々となり得る。従って、ここに記載して説明した特定のパラメータ及び/又は特徴は単なる例に過ぎない。
次いで、図3を参照するに、1つ以上のプロセッサ12は、プログラム/プロセススレッド(T)311A...311Nを少なくとも部分的に実行し得る。それぞれのスレッド311A...311Nは、スレッド311A...311Nによって少なくとも部分的に生成されるそれぞれのデータ(D)105A...105Nを有し得る1つ以上のパケット50の送信を支援するためにこの実施形態において使用され得るそれぞれのデータ構造の組を維持管理し得る。例えば、スレッド311A...311Nは少なくとも部分的に、1つ以上のそれぞれのドアベル/インジケーションリング204A...204N、1つ以上のそれぞれのディスクリプタリング210A...210N、1つ以上のそれぞれのカーネルデータバッファ320A...320N、及び/又は1つ以上のそれぞれのカウンタ270A...270Nに割り当てられ、関連付けられ、それらを生成し、且つ/或いは維持し得る。それぞれのリング204A...204Nは、1つ以上のリング204によって少なくとも部分的に実装且つ/或いは支援される機能及び/又は動作と少なくとも部分的に同様で類似の機能及び/又は動作を、それぞれのスレッド311A...311Nに関して少なくとも部分的に実装且つ/或いは支援するように、それぞれのスレッド311A...311Nによって使用され得る。それぞれのリング210A...210Nは、1つ以上のリング210によって少なくとも部分的に実装且つ/或いは支援される機能及び/又は動作と少なくとも部分的に同様で類似の機能及び/又は動作を、それぞれのスレッド311A...311Nに関して少なくとも部分的に実装且つ/或いは支援するように、それぞれのスレッド311A...311Nによって使用され得る。それぞれのバッファ320A...320Nは、1つ以上のバッファ302によって少なくとも部分的に実装且つ/或いは支援される機能及び/又は動作と少なくとも部分的に同様で類似の機能及び/又は動作を、それぞれのスレッド311A...311Nに関して少なくとも部分的に実装且つ/或いは支援するように、それぞれのスレッド311A...311Nによって使用され得る。カウンタ270A...270Nは、1つ以上のリングカウンタ270によって少なくとも部分的に実装且つ/或いは支援される機能及び/又は動作と少なくとも部分的に同様で類似の機能及び/又は動作を、それぞれのスレッド311A...311Nに関して少なくとも部分的に実装且つ/或いは支援するように、それぞれのスレッド311A...311Nによって使用され得る。
故に、この実施形態の第1の例において、少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置が提供される。当該装置は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供する回路を有し得る。前記少なくとも1つのインジケーションは少なくとも部分的に、データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる処理に利用可能になるのに先立って提供され得る。前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して処理を開始し得る。
第1の例の要素の一部又は全てを有し得るこの実施形態の第2の例において、(1)前記回路は、少なくとも1つのホストプロセッサを少なくとも部分的に有することができ、(2)少なくとも1つの回路基板が、ホストメモリと前記少なくとも1つのホストプロセッサとを少なくとも部分的に有することができ、(3)少なくとも1つのデータプロセッサは、NICCを少なくとも部分的に有することができ、(4)少なくとも1つの回路カードが、前記NICCを少なくとも部分的に有することができ、(5)前記少なくとも1つの回路カードは、前記少なくとも1つの回路基板に少なくとも部分的に通信可能に結合されることができ、(6)前記少なくとも1つのインジケーションは、ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有することができ、且つ/或いは(7)前記少なくとも1つのドアベルは、(a)データの前記少なくとも1つの部分への少なくとも1つのポインタ、及び/又は(b)データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータを有し得る。
以上の例のうちの何れかの要素の一部又は全てを有し得るこの実施形態の第3の例において、前記回路は、ホストメモリ内の少なくとも1つのMMIO空間に前記少なくとも1つのインジケーションを少なくとも部分的に書き込み得る。この第3の例において、前記少なくとも1つのMMIO空間は、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられ得る。前記データは、当該データの前記少なくとも1つの部分と、当該データの少なくとも1つのその他の部分とを有し得る。前記少なくとも1つのインジケーションは、データの前記少なくとも1つの部分への少なくとも1つのポインタを有し得る。前記少なくとも1つのインジケーションは、データの前記少なくとも1つの部分と前記データの前記少なくとも1つのその他の部分との双方が前記少なくとも1つのデータプロセッサによる処理に利用可能であることを指し示し得る。前記少なくとも1つのデータプロセッサは、データの前記少なくとも1つのその他の部分が前記少なくとも1つのデータプロセッサによる処理に実際に利用可能になるのに先立って、データの前記少なくとも1つの部分の処理を開始し得る。前記回路は、前記少なくとも1つのデータプロセッサによるデータの前記少なくとも1つの部分の処理と少なくとも部分的に同時に、データの前記少なくとも1つのその他の部分を前記少なくとも1つのデータプロセッサによる処理に少なくとも部分的に利用可能にし得る。
以上の例のうちの何れかの要素の一部又は全てを有し得るこの実施形態の第4の例において、前記回路は、ホストメモリの少なくとも1つのサブセットに、(1)データの前記少なくとも1つの部分、(2)データの前記少なくとも1つの部分の少なくとも1つのディスクリプタ、及び/又は(3)ホストメモリの前記少なくとも1つのサブセットのコンテンツに少なくとも部分的に関連付けられた情報を書き込み得る。この情報は、ホストメモリの前記少なくとも1つのサブセットに書き込まれたデータの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示し得る。前記少なくとも1つのデータプロセッサは、データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の読み取りを、該読み取りが、前記回路によるホストメモリの前記少なくとも1つのサブセットへのデータの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の書き込みと、少なくとも部分的に同時に行われるように、開始し得る。
第4の例の要素の一部又は全てを有し得る第5の例において、ホストメモリの前記少なくとも1つのサブセットは、前記少なくとも1つのディスクリプタを格納する、ホストカーネルメモリ内の少なくとも1つの予め割り当てられたメモリリングと、データの前記少なくとも1つの部分を格納する少なくとも1つのホストカーネルメモリバッファとを有し得る。前記少なくとも1つのディスクリプタは、データの前記少なくとも1つの部分が前記少なくとも1つのホストカーネルメモリバッファに書き込まれた後に、前記少なくとも1つの予め割り当てられたメモリリングに書き込まれ得る。前記少なくとも1つのインジケーションは、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられた少なくとも1つのドアベルリングに書き込まれ得る少なくとも1つのドアベルを有し得る。前記少なくとも1つのデータプロセッサは、前記情報を調べて、前記少なくとも1つのディスクリプタ及びデータの前記少なくとも1つの部分が有効であるかを少なくとも部分的に決定し得る。
第5の例の要素の一部又は全てを有し得る第6の例において、前記情報は、(1)前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示すそれぞれのディスクリプタ情報、及び/又は(2)データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に指し示すそれぞれのデータ部分情報を有し得る。前記少なくとも1つのデータプロセッサがデータの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタを処理した後、前記少なくとも1つのデータプロセッサは、データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタがもはや有効でなく且つ再利用のために前記回路に利用可能にされていることを指し示すよう、前記それぞれのデータ部分情報及び前記それぞれのディスクリプタ情報を変更し得る。
第5の例の要素の一部又は全てを有し得る第7の例において、前記回路は、データの前記少なくとも1つの部分を、少なくとも1つのアプリケーションバッファから前記少なくとも1つのホストカーネルメモリバッファにコピーし得る。前記少なくとも1つのインジケーションは、(1)前記少なくとも1つのホストカーネルメモリバッファ内のデータの前記少なくとも1つの部分の少なくとも1つの位置と、(2)前記少なくとも1つのデータプロセッサによって処理されるべき前記データの部分数とを少なくとも部分的に指し示し得る。前記少なくとも1つのデータプロセッサは、データの前記部分数の全てを前記少なくとも1つのデータプロセッサが完全に処理したかを少なくとも部分的に決定することに使用されるカウンタを維持管理し得る。
この実施形態の第8の例において、機械によって実行されるときに、以上の例のうちの何れかの装置によって(且つ/或いはそのコンポーネントのうちの何れかの1つ又は組み合わせによって)実行される処理の何れかの組み合わせを有し得る処理の実行をもたらす1つ以上の命令を格納したコンピュータ読み取り可能メモリが提供される。この実施形態の第9の例において、(1)以上の例のうちの何れかの装置によって(且つ/或いはそのコンポーネントのうちの何れかの1つ又は組み合わせによって)実行される処理の何れかの組み合わせ、及び/又は(2)この実施形態の第8の例のコンピュータ読み取り可能メモリに格納された1つ以上の命令の実行によって行われ得る処理の何れかの組み合わせを有し得る方法が提供される。
この実施形態の第10の例において、以上の例のうちの何れかの方法、装置、コンピュータ読み取り可能メモリによって実行され得る処理のうちの何れか及び/又は組み合わせを実行するための手段が提供され得る。この実施形態の第11の例において、(例えば、この実施形態の以上の例のうちの何れかにて)ここに記載された構造、回路、装置、機構などの1つ以上の部分集合を規定し得る例えばハードウェア記述言語などの命令及び/又は設計データを格納し得る機械読み取り可能命令が提供され得る。
以上の例のうちの何れかの要素の一部又は全てを有し得るこの実施形態の第12の例において、前記少なくとも1つのインジケーションは、ホストメモリに少なくとも部分的に書き込まれ得る少なくとも1つのドアベルを有し得る。前記少なくとも1つのドアベルは、(1)データの前記少なくとも1つの部分への少なくとも1つのポインタと、(2)データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、(3)データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータとを有し得る。
有利なことに、この実施形態の処理は、従来のプル技術がパケットデータの処理及び/又は送信を行うために導入し得るものより小さいレイテンシでパケットデータの処理及び/又は送信を行い得る。また有利なことに、この実施形態は、ますます多くのパケットトラフィック及び/又はCPUスレッドがパケット送信を要求することに対して、従来のプッシュ技術でそうであるものより十分且つ/或いは良好にスケーリングし得る。
さらにまた有利なことに、この実施形態は、使用される特定のホストバスプロトコル/内部輸送アーキテクチャに応じて、以上の従来技術と比較して向上されたCPU、CPUスレッド、ホストメモリ及び/又はホストシステムの性能を示し得る。これは特に、バースト性トラフィックの場合に当てはまり得る。さらに、この実施形態が使用されるとき、有意に増大されたNICメモリ(及び/又は関連メモリコスト)は必要とされないことがある。
数多くのその他及び/又は更なる変更、変形及び/又は代替が可能である。従って、請求項は、全てのそのような代替、変更及び/又は変形を包含するものである。

Claims (22)

  1. 少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置であって、
    当該装置は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供する回路を有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始
    前記回路は、ホストメモリ内の少なくとも1つのメモリマップト入力/出力(MMIO)空間に前記少なくとも1つのインジケーションを少なくとも部分的に書き込み、前記少なくとも1つのMMIO空間は、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられ、
    前記データは、前記データの前記少なくとも1つの部分と、前記データの少なくとも1つのその他の部分とを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分への少なくとも1つのポインタを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分と前記データの前記少なくとも1つのその他の部分との双方が前記少なくとも1つのデータプロセッサによる前記処理に利用可能であることを指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つのその他の部分が前記少なくとも1つのデータプロセッサによる前記処理に実際に利用可能になるのに先立って、前記データの前記少なくとも1つの部分の前記処理を開始し、且つ
    前記回路は、前記少なくとも1つのデータプロセッサによる前記データの前記少なくとも1つの部分の前記処理と少なくとも部分的に同時に、前記データの前記少なくとも1つのその他の部分を前記少なくとも1つのデータプロセッサによる前記処理に少なくとも部分的に利用可能にする、
    装置。
  2. 前記回路は、少なくとも1つのホストプロセッサを少なくとも部分的に有し、
    少なくとも1つの回路基板が、ホストメモリと前記少なくとも1つのホストプロセッサとを少なくとも部分的に有し、
    前記少なくとも1つのデータプロセッサは、ネットワークインタフェースコントローラ(NIC)回路(NICC)を少なくとも部分的に有し、
    少なくとも1つの回路カードが、前記NICCを少なくとも部分的に有し、
    前記少なくとも1つの回路カードは、前記少なくとも1つの回路基板に少なくとも部分的に通信可能に結合され、
    前記少なくとも1つのインジケーションは、前記ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのドアベルは、
    前記データの前記少なくとも1つの部分への少なくとも1つのポインタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータと
    を有する、
    請求項1に記載の装置。
  3. 少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置であって、
    当該装置は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供する回路を有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始し、
    前記回路は、ホストメモリの少なくとも1つのサブセットに、
    前記データの前記少なくとも1つの部分と、
    前記データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、
    前記ホストメモリの前記少なくとも1つのサブセットのコンテンツに少なくとも部分的に関連付けられた情報であり、前記ホストメモリの前記少なくとも1つのサブセットに書き込まれた前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示す情報と
    を書き込み、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の読み取りを、該読み取りが、前記回路による前記ホストメモリの前記少なくとも1つのサブセットへの前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の書き込みと、少なくとも部分的に同時に行われるように、開始する、
    置。
  4. 前記ホストメモリの前記少なくとも1つのサブセットは、
    前記少なくとも1つのディスクリプタを格納する、ホストカーネルメモリ内の少なくとも1つの予め割り当てられたメモリリングと、
    前記データの前記少なくとも1つの部分を格納する少なくとも1つのホストカーネルメモリバッファと
    を有し、
    前記少なくとも1つのディスクリプタは、前記データの前記少なくとも1つの部分が前記少なくとも1つのホストカーネルメモリバッファに書き込まれた後に、前記少なくとも1つの予め割り当てられたメモリリングに書き込まれ、
    前記少なくとも1つのインジケーションは、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられた少なくとも1つのドアベルリングに書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのデータプロセッサは、前記情報を調べて、前記少なくとも1つのディスクリプタ及び前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に決定する、
    請求項に記載の装置。
  5. 前記情報は、
    前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示すそれぞれのディスクリプタ情報と、
    前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に指し示すそれぞれのデータ部分情報と
    を有し、
    前記少なくとも1つのデータプロセッサが前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタを処理した後、前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタがもはや有効でなく且つ再利用のために前記回路に利用可能にされていることを指し示すよう、前記それぞれのデータ部分情報及び前記それぞれのディスクリプタ情報を変更する、
    請求項に記載の装置。
  6. 前記回路は、前記データの前記少なくとも1つの部分を、少なくとも1つのアプリケーションバッファから前記少なくとも1つのホストカーネルメモリバッファにコピーし、
    前記少なくとも1つのインジケーションは、
    前記少なくとも1つのホストカーネルメモリバッファ内の前記データの前記少なくとも1つの部分の少なくとも1つの位置と、
    前記少なくとも1つのデータプロセッサによって処理されるべき前記データの部分数と
    を少なくとも部分的に指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記部分数の全てを前記少なくとも1つのデータプロセッサが完全に処理したかを少なくとも部分的に決定することに使用されるカウンタを維持管理する、
    請求項に記載の装置。
  7. 少なくとも部分的に少なくとも1つのホストに関連して実行される方法であって、
    当該方法は、回路により、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供することを有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始
    前記回路は、ホストメモリ内の少なくとも1つのメモリマップト入力/出力(MMIO)空間に前記少なくとも1つのインジケーションを少なくとも部分的に書き込み、前記少なくとも1つのMMIO空間は、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられ、
    前記データは、前記データの前記少なくとも1つの部分と、前記データの少なくとも1つのその他の部分とを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分への少なくとも1つのポインタを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分と前記データの前記少なくとも1つのその他の部分との双方が前記少なくとも1つのデータプロセッサによる前記処理に利用可能であることを指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つのその他の部分が前記少なくとも1つのデータプロセッサによる前記処理に実際に利用可能になるのに先立って、前記データの前記少なくとも1つの部分の前記処理を開始し、且つ
    前記回路は、前記少なくとも1つのデータプロセッサによる前記データの前記少なくとも1つの部分の前記処理と少なくとも部分的に同時に、前記データの前記少なくとも1つのその他の部分を前記少なくとも1つのデータプロセッサによる前記処理に少なくとも部分的に利用可能にする、
    方法。
  8. 前記回路は、少なくとも1つのホストプロセッサを少なくとも部分的に有し、
    少なくとも1つの回路基板が、ホストメモリと前記少なくとも1つのホストプロセッサとを少なくとも部分的に有し、
    前記少なくとも1つのデータプロセッサは、ネットワークインタフェースコントローラ(NIC)回路(NICC)を少なくとも部分的に有し、
    少なくとも1つの回路カードが、前記NICCを少なくとも部分的に有し、
    前記少なくとも1つの回路カードは、前記少なくとも1つの回路基板に少なくとも部分的に通信可能に結合され、
    前記少なくとも1つのインジケーションは、前記ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのドアベルは、
    前記データの前記少なくとも1つの部分への少なくとも1つのポインタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータと
    を有する、
    請求項に記載の方法。
  9. 少なくとも部分的に少なくとも1つのホストに関連して実行される方法であって、
    当該方法は、回路により、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供することを有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始し、
    前記回路は、ホストメモリの少なくとも1つのサブセットに、
    前記データの前記少なくとも1つの部分と、
    前記データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、
    前記ホストメモリの前記少なくとも1つのサブセットのコンテンツに少なくとも部分的に関連付けられた情報であり、前記ホストメモリの前記少なくとも1つのサブセットに書き込まれた前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示す情報と
    を書き込み、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の読み取りを、該読み取りが、前記回路による前記ホストメモリの前記少なくとも1つのサブセットへの前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の書き込みと、少なくとも部分的に同時に行われるように、開始する、
    法。
  10. 前記ホストメモリの前記少なくとも1つのサブセットは、
    前記少なくとも1つのディスクリプタを格納する、ホストカーネルメモリ内の少なくとも1つの予め割り当てられたメモリリングと、
    前記データの前記少なくとも1つの部分を格納する少なくとも1つのホストカーネルメモリバッファと
    を有し、
    前記少なくとも1つのディスクリプタは、前記データの前記少なくとも1つの部分が前記少なくとも1つのホストカーネルメモリバッファに書き込まれた後に、前記少なくとも1つの予め割り当てられたメモリリングに書き込まれ、
    前記少なくとも1つのインジケーションは、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられた少なくとも1つのドアベルリングに書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのデータプロセッサは、前記情報を調べて、前記少なくとも1つのディスクリプタ及び前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に決定する、
    請求項に記載の方法。
  11. 前記情報は、
    前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示すそれぞれのディスクリプタ情報と、
    前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に指し示すそれぞれのデータ部分情報と
    を有し、
    前記少なくとも1つのデータプロセッサが前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタを処理した後、前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタがもはや有効でなく且つ再利用のために前記回路に利用可能にされていることを指し示すよう、前記それぞれのデータ部分情報及び前記それぞれのディスクリプタ情報を変更する、
    請求項10に記載の方法。
  12. 前記回路は、前記データの前記少なくとも1つの部分を、少なくとも1つのアプリケーションバッファから前記少なくとも1つのホストカーネルメモリバッファにコピーし、
    前記少なくとも1つのインジケーションは、
    前記少なくとも1つのホストカーネルメモリバッファ内の前記データの前記少なくとも1つの部分の少なくとも1つの位置と、
    前記少なくとも1つのデータプロセッサによって処理されるべき前記データの部分数と
    を少なくとも部分的に指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記部分数の全てを前記少なくとも1つのデータプロセッサが完全に処理したかを少なくとも部分的に決定することに使用されるカウンタを維持管理する、
    請求項10に記載の方法。
  13. 1つ以上の命令を格納したコンピュータ読み取り可能メモリであって、
    前記1つ以上の命令は、機械によって実行されるときに、回路により、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供すること、を有する処理の実行をもたらし、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始
    前記回路は、ホストメモリ内の少なくとも1つのメモリマップト入力/出力(MMIO)空間に前記少なくとも1つのインジケーションを少なくとも部分的に書き込み、前記少なくとも1つのMMIO空間は、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられ、
    前記データは、前記データの前記少なくとも1つの部分と、前記データの少なくとも1つのその他の部分とを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分への少なくとも1つのポインタを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分と前記データの前記少なくとも1つのその他の部分との双方が前記少なくとも1つのデータプロセッサによる前記処理に利用可能であることを指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つのその他の部分が前記少なくとも1つのデータプロセッサによる前記処理に実際に利用可能になるのに先立って、前記データの前記少なくとも1つの部分の前記処理を開始し、且つ
    前記回路は、前記少なくとも1つのデータプロセッサによる前記データの前記少なくとも1つの部分の前記処理と少なくとも部分的に同時に、前記データの前記少なくとも1つのその他の部分を前記少なくとも1つのデータプロセッサによる前記処理に少なくとも部分的に利用可能にする、
    コンピュータ読み取り可能メモリ。
  14. 前記回路は、少なくとも1つのホストプロセッサを少なくとも部分的に有し、
    少なくとも1つの回路基板が、ホストメモリと前記少なくとも1つのホストプロセッサとを少なくとも部分的に有し、
    前記少なくとも1つのデータプロセッサは、ネットワークインタフェースコントローラ(NIC)回路(NICC)を少なくとも部分的に有し、
    少なくとも1つの回路カードが、前記NICCを少なくとも部分的に有し、
    前記少なくとも1つの回路カードは、前記少なくとも1つの回路基板に少なくとも部分的に通信可能に結合され、
    前記少なくとも1つのインジケーションは、前記ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのドアベルは、
    前記データの前記少なくとも1つの部分への少なくとも1つのポインタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータと
    を有する、
    請求項13に記載のコンピュータ読み取り可能メモリ。
  15. 1つ以上の命令を格納したコンピュータ読み取り可能メモリであって、
    前記1つ以上の命令は、機械によって実行されるときに、回路により、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供すること、を有する処理の実行をもたらし、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始し、
    前記回路は、ホストメモリの少なくとも1つのサブセットに、
    前記データの前記少なくとも1つの部分と、
    前記データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、
    前記ホストメモリの前記少なくとも1つのサブセットのコンテンツに少なくとも部分的に関連付けられた情報であり、前記ホストメモリの前記少なくとも1つのサブセットに書き込まれた前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示す情報と
    を書き込み、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の読み取りを、該読み取りが、前記回路による前記ホストメモリの前記少なくとも1つのサブセットへの前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の書き込みと、少なくとも部分的に同時に行われるように、開始する、
    ンピュータ読み取り可能メモリ。
  16. 前記ホストメモリの前記少なくとも1つのサブセットは、
    前記少なくとも1つのディスクリプタを格納する、ホストカーネルメモリ内の少なくとも1つの予め割り当てられたメモリリングと、
    前記データの前記少なくとも1つの部分を格納する少なくとも1つのホストカーネルメモリバッファと
    を有し、
    前記少なくとも1つのディスクリプタは、前記データの前記少なくとも1つの部分が前記少なくとも1つのホストカーネルメモリバッファに書き込まれた後に、前記少なくとも1つの予め割り当てられたメモリリングに書き込まれ、
    前記少なくとも1つのインジケーションは、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられた少なくとも1つのドアベルリングに書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのデータプロセッサは、前記情報を調べて、前記少なくとも1つのディスクリプタ及び前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に決定する、
    請求項15に記載のコンピュータ読み取り可能メモリ。
  17. 前記情報は、
    前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示すそれぞれのディスクリプタ情報と、
    前記データの前記少なくとも1つの部分が有効であるかを少なくとも部分的に指し示すそれぞれのデータ部分情報と
    を有し、
    前記少なくとも1つのデータプロセッサが前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタを処理した後、前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタがもはや有効でなく且つ再利用のために前記回路に利用可能にされていることを指し示すよう、前記それぞれのデータ部分情報及び前記それぞれのディスクリプタ情報を変更する、
    請求項16に記載のコンピュータ読み取り可能メモリ。
  18. 前記回路は、前記データの前記少なくとも1つの部分を、少なくとも1つのアプリケーションバッファから前記少なくとも1つのホストカーネルメモリバッファにコピーし、
    前記少なくとも1つのインジケーションは、
    前記少なくとも1つのホストカーネルメモリバッファ内の前記データの前記少なくとも1つの部分の少なくとも1つの位置と、
    前記少なくとも1つのデータプロセッサによって処理されるべき前記データの部分数と
    を少なくとも部分的に指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記部分数の全てを前記少なくとも1つのデータプロセッサが完全に処理したかを少なくとも部分的に決定することに使用されるカウンタを維持管理する、
    請求項16に記載のコンピュータ読み取り可能メモリ。
  19. 前記少なくとも1つのインジケーションは、前記ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのドアベルは、
    前記データの前記少なくとも1つの部分への少なくとも1つのポインタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータと
    を有する、
    請求項1に記載の装置。
  20. 少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置であって、
    当該装置は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供する手段を有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始
    前記手段は、ホストメモリ内の少なくとも1つのメモリマップト入力/出力(MMIO)空間に前記少なくとも1つのインジケーションを少なくとも部分的に書き込み、前記少なくとも1つのMMIO空間は、前記少なくとも1つのデータプロセッサに少なくとも部分的に関連付けられ、
    前記データは、前記データの前記少なくとも1つの部分と、前記データの少なくとも1つのその他の部分とを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分への少なくとも1つのポインタを有し、
    前記少なくとも1つのインジケーションは、前記データの前記少なくとも1つの部分と前記データの前記少なくとも1つのその他の部分との双方が前記少なくとも1つのデータプロセッサによる前記処理に利用可能であることを指し示し、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つのその他の部分が前記少なくとも1つのデータプロセッサによる前記処理に実際に利用可能になるのに先立って、前記データの前記少なくとも1つの部分の前記処理を開始し、且つ
    前記手段は、前記少なくとも1つのデータプロセッサによる前記データの前記少なくとも1つの部分の前記処理と少なくとも部分的に同時に、前記データの前記少なくとも1つのその他の部分を前記少なくとも1つのデータプロセッサによる前記処理に少なくとも部分的に利用可能にする、
    装置。
  21. 前記手段は、少なくとも1つのホストプロセッサを少なくとも部分的に有し、
    少なくとも1つの回路基板が、ホストメモリと前記少なくとも1つのホストプロセッサとを少なくとも部分的に有し、
    前記少なくとも1つのデータプロセッサは、ネットワークインタフェースコントローラ(NIC)回路(NICC)を少なくとも部分的に有し、
    少なくとも1つの回路カードが、前記NICCを少なくとも部分的に有し、
    前記少なくとも1つの回路カードは、前記少なくとも1つの回路基板に少なくとも部分的に通信可能に結合され、
    前記少なくとも1つのインジケーションは、前記ホストメモリに少なくとも部分的に書き込まれる少なくとも1つのドアベルを有し、且つ
    前記少なくとも1つのドアベルは、
    前記データの前記少なくとも1つの部分への少なくとも1つのポインタと、
    前記データの前記少なくとも1つの部分の少なくとも1つのサイズを少なくとも部分的に指し示す少なくとも1つのインジケータと
    を有する、
    請求項20に記載の装置。
  22. 少なくとも部分的に少なくとも1つのホストに関連して使用可能な装置であって、
    当該装置は、データの少なくとも1つの部分が少なくとも1つのデータプロセッサによる処理に利用可能であることの少なくとも1つのインジケーションを少なくとも部分的に提供する手段を有し、前記少なくとも1つのインジケーションは少なくとも部分的に、前記データの前記少なくとも1つの部分の全体が前記少なくとも1つのデータプロセッサによる前記処理に利用可能になるのに先立って提供され、前記少なくとも1つのデータプロセッサは、前記少なくとも1つのインジケーションに少なくとも部分的に応答して前記処理を開始し、
    前記手段は、ホストメモリの少なくとも1つのサブセットに、
    前記データの前記少なくとも1つの部分と、
    前記データの前記少なくとも1つの部分の少なくとも1つのディスクリプタと、
    前記ホストメモリの前記少なくとも1つのサブセットのコンテンツに少なくとも部分的に関連付けられた情報であり、前記ホストメモリの前記少なくとも1つのサブセットに書き込まれた前記データの前記少なくとも1つの部分及び前記少なくとも1つのディスクリプタが有効であるかを少なくとも部分的に指し示す情報と
    を書き込み、
    前記少なくとも1つのデータプロセッサは、前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の読み取りを、該読み取りが、前記手段による前記ホストメモリの前記少なくとも1つのサブセットへの前記データの前記少なくとも1つの部分、前記少なくとも1つのディスクリプタ及び前記情報の書き込みと、少なくとも部分的に同時に行われるように、開始する、
    装置。
JP2014229699A 2013-12-13 2014-11-12 データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供 Active JP5911943B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/106,253 2013-12-13
US14/106,253 US9608842B2 (en) 2013-12-13 2013-12-13 Providing, at least in part, at least one indication that at least one portion of data is available for processing

Publications (2)

Publication Number Publication Date
JP2015115060A JP2015115060A (ja) 2015-06-22
JP5911943B2 true JP5911943B2 (ja) 2016-04-27

Family

ID=53192749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014229699A Active JP5911943B2 (ja) 2013-12-13 2014-11-12 データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供

Country Status (4)

Country Link
US (1) US9608842B2 (ja)
JP (1) JP5911943B2 (ja)
CN (1) CN104714911B (ja)
DE (1) DE102014116418A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10043095B2 (en) * 2016-10-10 2018-08-07 Gyrfalcon Technology, Inc. Data structure for CNN based digital integrated circuit for extracting features out of an input image
JP2020154493A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895489A (en) * 1991-10-16 1999-04-20 Intel Corporation Memory management system including an inclusion bit for maintaining cache coherency
US5434872A (en) 1992-07-28 1995-07-18 3Com Corporation Apparatus for automatic initiation of data transmission
US6145016A (en) * 1998-09-03 2000-11-07 Advanced Micro Devices, Inc. System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer
EP1358563A1 (en) * 2001-01-31 2003-11-05 International Business Machines Corporation Method and apparatus for controlling flow of data between data processing systems via a memory
US7493425B2 (en) * 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
JP4295783B2 (ja) 2006-12-13 2009-07-15 株式会社日立製作所 計算機、仮想デバイスの制御方法
US7818470B2 (en) * 2007-09-27 2010-10-19 Integrated Device Technology, Inc. Adaptive interrupt on serial rapid input/output (SRIO) endpoint
WO2011043769A1 (en) * 2009-10-07 2011-04-14 Hewlett-Packard Development Company, L.P. Notification protocol based endpoint caching of host memory
JP2011221831A (ja) 2010-04-12 2011-11-04 Hitachi Ltd 仮想計算機の端末切替え方式

Also Published As

Publication number Publication date
JP2015115060A (ja) 2015-06-22
DE102014116418A1 (de) 2015-06-18
CN104714911B (zh) 2018-05-22
CN104714911A (zh) 2015-06-17
US20150169325A1 (en) 2015-06-18
US9608842B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
US9244881B2 (en) Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
WO2019095655A1 (zh) 一种数据交互方法和计算设备
US9405725B2 (en) Writing message to controller memory space
US8131814B1 (en) Dynamic pinning remote direct memory access
JP2019153304A (ja) Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法
US7650488B2 (en) Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
JP6231704B2 (ja) フラッシュメモリベースのストレージデバイスの入力/出力仮想化(iov)ホストコントローラ(hc)(iov−hc)におけるコマンドトラッピング
TW201135469A (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
WO2020000482A1 (zh) 一种基于NVMe的数据读取方法、装置及***
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
JP5911943B2 (ja) データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供
US10802828B1 (en) Instruction memory
US10977201B1 (en) Per IO direct memory access redirection
CN116745754A (zh) 一种访问远端资源的***及方法
US20130031547A1 (en) Facilitating compatible interaction, at least in part
WO2024000510A1 (zh) 一种处理请求的方法、装置及***
US11940917B2 (en) System and method for network interface controller based distributed cache
TWI328746B (en) A system for performing peer-to-peer data transfer
EP3405866A1 (en) Simulating legacy bus behavior for backwards compatibility

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160330

R150 Certificate of patent or registration of utility model

Ref document number: 5911943

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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