JP2002524005A - 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム - Google Patents
通信を高速化するインテリジェントネットワークインタフェース装置及びシステムInfo
- Publication number
- JP2002524005A JP2002524005A JP2000568012A JP2000568012A JP2002524005A JP 2002524005 A JP2002524005 A JP 2002524005A JP 2000568012 A JP2000568012 A JP 2000568012A JP 2000568012 A JP2000568012 A JP 2000568012A JP 2002524005 A JP2002524005 A JP 2002524005A
- Authority
- JP
- Japan
- Prior art keywords
- host
- network
- message
- data
- processing
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
Abstract
Description
得にネットワークに接続されたコンピュータのようなホスト間で通信される情報
の処理に関するものである。
パーソナルコンピュータや他のエンドユーザ装置において情報、通信、又は計算
能力を個人に提供することがもたらす利便性及び能率のために、イントラネット
装置やアプリケーション及びインターネット等のネットワークコンピューティン
グが急速に成長することになった。
続されたホストコンピュータ間での情報の転送のための階層化ソフトウェアアー
キテクチャの支援によって達成される。その層が、情報を処理可能なセグメント
に分割することを助け、各層の一般的な機能は、多くの場合開放型システム間相
互接続(OSI)と呼ばれる国際標準に準拠している。OSIは7種の処理の層
を規定しており、情報がホストによって受信されると、それはエンドユーザに提
示できるようにするためにそれらの層の間をわたされる。同様に、ホストからネ
ットワークへの情報の送信では、情報がそれらの7種の処理層を逆の順に通過し
得る。1つの層による処理及びサービスの各ステップでは、処理された情報のコ
ピーが行われる。TCP/IP(TCPは伝送制御プロトコルを表し、IPはイ
ンターネットプロトコルを意味する)と呼ばれる、広く実現されている別の参照
モデルは、基本的にOSIの7層のうち5層を利用する。
リアネットワーク(LAN)間のイーサネット接続又はインターネット接続のよ
うな高速パス、又はホスト間のデータ伝送のための様々な他の既知の手段の何れ
かを含み得る。OSI標準によれば、物理層は各ホストにおいてネットワークに
接続され、その物理層がネットワークを介しての生のデータビットの送信及び受
信を提供する。データリンク層は、各ホストの物理層によりサービスされ、物理
層から受け取ったデータのフレーム分割及び誤り訂正を提供するとともに、受信
したホストによって送られた肯定応答フレームの処理を行う。各ホストのネット
ワーク層は、各データリンク層によりサービスされ、主としてデータのパケット
のサブネットのサイズ及び統合を制御する。
スト内の各トランスポート層によりサービスされる。トランスポート層はそれら
の各セッション層からデータを受け取り、そのデータを他のホストのトランスポ
ート層へ送信するためのより小さいユニットに分割する。他のトランスポート層
は、各プレゼンテーション層への提示のためそのデータを連結する。セッション
層によってホスト間の機能強化された通信の制御が可能となる。プレゼンテーシ
ョン層はそれらの各セッション層によりサービスされ、各ホスト固有であり得る
データセマンティクス及び構文と、データ表現の標準化された構造との間での変
換を行う。データの圧縮及び/または暗号化も、プレゼンテーション層レベルで
達成され得る。アプリケーション層は、各プレゼンテーション層によりサービス
され、個々のホストに特有のプログラムと、アプリケーション又はエンドユーザ
の何れかに対して提示するための標準化されたプログラムとの間の変換を行う。
TCP/IP標準は、下位の4層及びアプリケーション層を含むが、セッション
層及びプレゼンテーション層の機能は隣接する層に統合している。一般的に、ア
プリケーション層、プレゼンテーション層、及びセッション層は上位層と定義さ
れ、トランスポート層、ネットワーク層、及びデータリンク層は下位層と定義さ
れる。
び一般的な機能は様々なホストにおいて概ね等しいことから、たとえ同位の層同
士が情報を下位の各層を順次転送させることなく直接やり取りしないとしても、
異なるホストの同一の層同士で直接行われる通信というものを考えることは有益
である。各下位層は、通信される情報を処理を助けるべくその1つ上位の層にサ
ービスする。各層は、処理及び次の層へのサービスの提供のため情報を保存する
。一般的に用いられるハードウェア及びソフトウェアアーキテクチャや装置及び
プログラムの多様性のために、各層は、介入し得るハードウェア及びソフトウェ
アの相違とは無関係に、データが適切な形式で目的の行先に到達し得ることを確
実なものとする必要がある。
層のプロトコルに関連する第1のホストの各層で幾つかの制御データが付加され
るが、その制御データはそのホストの全ての下位の層において元のデータ(ペイ
ロードデータ)から識別可能なものある。従って、アプリケーション層はペイロ
ードデータにアプリケーションヘッダを付加し、結合されたデータを送信側のホ
ストのプレゼンテーション層に送る。プレゼンテーション層はその結合データを
受け取り、それを処理してそのデータにプレゼンテーションヘッダを付加し、別
の結合されたデータパケットが生成される。次に、ペイロードデータ、アプリケ
ーションヘッダ、及びプレゼンテーションヘッダの結合によって生成されたデー
タをセッション層に渡し、セッション層は、そのデータへのセッションヘッダの
付加や、生成されたデータの組み合わせのトランスポート層への提示等の必要な
処理を行う。この処理は、情報が下位の層に移動する間継続され、それらの各層
においてデータにトランスポートヘッダ、ネットワークヘッダ、及びデータリン
クヘッダ、及びトレーラが付加され、各処理過程ではデータの転送及びコピーを
行い、その後、データをビットパケットとしてネットワークを通して第2のホス
トに送信する。
ータビットの受信に始まり、最下位の(物理)層から最上位の(アプリケーショ
ン)層まで順番にヘッダが除去され、データが処理されて、受信側ホストの行先
への送信が行われる。受信側ホストの各層は、その層に関連するヘッダのみを認
識し、処理する。その層からみて、より上位の層の制御データはペイロードデー
タに含められており、そこから識別できないからである。受信側ホストがそのデ
ータをその目的の行先に適切な形式で渡すためには、複数の割り込み、有効な中
央処理装置(CPU)による処理時間、及び反復されるデータコピー処理も必要
であり得る。
大学レベルの教科書、例えばAndrew S. TanenbaumによるComputer Networks, Th
ird Edition (1996) が入手可能であることから、単純化されている。上記文献
はこの引用により本明細書の一部とする。その文献に定義されているように、コ
ンピュータネットワークとは、インターネットや、例えばローカルエリアネット
ワーク(LAN)、ワイドエリアネットワーク(WAN)、非同期転送モード(
ATM)、リング又はトークンリング、配線式、無線式、衛星、又は他の異なる
プロセッサ間の通信能力を提供するための手段等のインターネットデバイスのよ
うな、相互接続された独立して操作されるコンピュータの集合体である。本明細
書において、コンピュータは、データを処理するための論理機能とメモリ機能の
両方を有する装置を含むものと定義されており、ネットワークに接続されたコン
ピュータ即ちホストは、それらが異なるオぺレーティング装置に従って機能する
場合、即ち異なるアーキテクチャを介して通信を行う場合、ヘテロジニアス(異
種)であるという。
すます複雑化し内容豊富になるにつれて、そのようなプロトコル処理の必要性が
高まってきた。ホストのCPUの処理能力の大部分が、プロトコル処理の制御に
充てられて、そのCPUが他のタスクを行う能力は低下していると推定される。
物理層やデータリンク層のような下位の層の補助のため、ネットワークインタフ
ェースカードが開発されてきた。単に従来型の構成のCPUにより大きい処理能
力を付与することによって、プロトコル処理の速度を高めることも可能である。
しかし、この解決方法は手際の良いものとは言えず、コストがかかる。しかし、
様々なネットワーク、プロトコル、アーキテクチャ、オペレーティング装置、及
びアプリケーションによって付与される複雑さによって、種々のネットワークホ
スト間での通信能力を与えるために大量の処理が要求されることになる。
ネットワーク通信の処理のための装置を提供する。本発明は、汎用プロセッサ上
での階層化プロトコル処理を行うという、長年にわたって利用されてきた実施の
形態を問い直すことによって達成されたものである。そのプロトコル処理方法と
、その結果として形成されるアーキテクチャでは、例えばTCP/IPのような
コネクションをベースにした階層化アーキテクチャの層を、所望の位置又はホス
ト上のバッファとの間で、より直接的にネットワークデータを送受信できる1層
のより広い層に効果的にまとめる。この高速化処理はデータの送受信両方のため
にホストに提供され、情報の交換に関係するホストの両方がそのような特徴を有
している場合も、その一方しかそのような特徴を有していない場合でも、処理能
力を向上させる。
スしたりそれをその目的の行先に直接供給する高速パスを介してメッセージから
のデータを処理できるようにする所定のメッセージに対応する制御命令を用いる
。この高速パスは、データに付加されるヘッダの従来型のプロトコル処理をバイ
パスする。高速パスは、ネットワーク通信の処理のために設計された専用マイク
ロプロセッサを用いて、例えば反復されるコピー処理やCPUへの割り込みのよ
うな、従来のソフトウェアの階層処理の遅れ及び問題点を回避している。要する
に、前記高速パスは、従来型のネットワークスタックの複数の層において伝統的
に見出される状態を、プロトコル層の厳格な区別及び分離を要求する従来の規定
とは異なりこれらの層を全て包含する1個のステートマシンで置き換える。ホス
トは、高速パスコネクション又はメッセージ例外の処理をセットアップするため
に用いられ得る順次式プロトコル処理スタックを保持している。専用マイクロプ
ロセッサ及びホストが、所定のメッセージまたはメッセージの一部分をそのマイ
クロプロセッサによって処理するか、ホストのスタックによって処理するかを、
インテリジェントに選択する。
ホスト20を示す。本発明によって達成される処理速度の上昇は、既存のホスト
に容易に無理なく追加されるインテリジェントネットワークインタフェースカー
ド(INIC)又はホストに統合される通信処理装置(CPD)によって提供さ
れ得、何れの場合もホストのCPUを大部分のプロトコル処理から解放し、その
CPUによって実行される他のタスクも改善することができる。第1の実施形態
のホスト20は、PCIバス33によって接続されたCPU28及びCPD30
を有する。CPD30はダイレクトメモリアクセス(DMA)ユニットによって
制御されるメモリバッファ及び通信データの処理のために設計されたマイクロプ
ロセッサを有する。例えば、半導体メモリ又はディクスドライブのような記憶機
構35も、関連する制御機構とともにPCIバス33に接続されている。
トコル処理スタック44を制御しており、前記スタックはデータリンク層36、
ネットワーク層38、トランスポート層40、上位層46、及び上位層インタフ
ェース42を有する。上位層46は、使用される特定のプロトコル及び通信され
るメッセージに応じて、セッション層、プレゼンテーション層、及び/又はアプ
リケーション層を意味し得る。上位層インタフェース42は、CPU28及び関
連するあらゆる制御機構と協働して、矢印48で示すように、上位層46又は記
憶機構35へのファイルの転送及びそこからのファイルの取り出しを行える。コ
ネクションコンテキスト50が生成されており、これは、後に説明するように、
例えばプロトコルの種類及び各プロトコル層のための発信元及び行先アドレスの
ような様々なコネクションの特徴を要約する。そのコンテキストは、矢印52及
び54で示すように、セッション層42のためのインタフェースとCPD30と
の間でやりとりされ得、CPD30又は記憶機構35の何れかに通信制御ブロッ
ク(CCB)として格納される。
ークからCPDによって受信されたそのコネクションに関連するデータはそのC
CBによって参照され、次に高速パス58に従って記憶機構35に直接送信され
得、データリンク層36、ネットワーク層38、及びトランスポート層40によ
って処理される順次式のプロトコルがバイパスされることになる。記憶機構35
からリモートホスト22へのファイルの送信のようなメッセージの転送は高速パ
ス58を介しても生じ得、その場合、トランスポート層40、ネットワーク層3
8、及びデータリンク層36による処理の間に、逐次ヘッダを付加するのではな
く、CCBを参照するCPD30によってファイルデータのためのコンテキスト
が加えられる。CPD30のDMAコントローラが、これらのCPDと記憶機構
35との間の転送を実行する。
ックを、高速パス処理のための1個のステートマシンにまとめる。この結果、そ
の1個のステートマシンにおいては準備されていない例外条件が生じ得る。これ
ようにしているのは、主としてそのような条件がまれにしか生じず、CPD上で
それを処理することはコストに対して殆ど処理能力上の利点が得られないからで
ある。そのような例外は、CPD30又はCPU28で生じたものであり得る。
本発明の利点として、高速パスCCB上で生ずる予期しない状況が取り扱われる
方式がある。CPD30は、これらのまれな状況を制御ネゴシエーションを介し
てホストのプロトコルスタック44にCCB及び関連するあらゆるメッセージフ
レームを戻す、即ちフラッシュすることによって処理する。次にその例外条件は
、従来の方式でホストのプロトコルスタック44によって処理される。しばらく
後に、通常は例外条件の処理が終了し、高速パス処理が再開し得るようになった
直後に、ホストのスタック44はCCBをCPDに戻す。
機能をCPDネットワークマイクロプロセッサが取り扱うことができるようにな
るとともに、全体の処理能力に無視できる程度の影響しか与えない程度にまれに
しか生じない例外がホストのスタックによって取り扱われることになる。カスタ
ム設計のネットワークプロセッサは、ネットワーク情報の送受信のための独立し
たプロセッサと、補助及びキューのための別のプロセッサとを備え得る。好まし
いマイクロプロセッサの実施形態は、パイプライン型の3個1組の受信、送信、
及びユーティリティプロセッサを備えるDMAコントローラがインプリメンテー
ションに組み入れられ、コントローラに隣接するバッファと長時間記憶機構のよ
うな他の位置との間でデータを迅速にやりとりさせるべく、ネットワークマイク
ロプロセッサと密接に協働する形で機能するものである。DMAコントローラに
論理的に隣接するバッファを設けることによって、PCIバスに不必要な負荷が
加わるのを避けられる。
転送のような大きいTCP/IPメッセージは、多数の分離された約64KBの
転送でネットワークからホストに受信され得るが、それぞれが多数の約1.5K
Bのフレーム即ちネットワーク上の転送するためのパケットに分割されてもよい
。Internet Packet Exchange(IPX)上でSequ
ential Packet Protocol(SPX)又はNetWare
Core Protocol(NCP)を走らせるNovell社のNetW
areプロトコルスーツは、同様の方式で機能する。高速パスによって取り扱わ
れ得るデータ通信の他の形態は、Transaction TCP(以下T/T
CP又はTTCPという)であり、これは、幾つかのメッセージ初期化ダイアロ
グを介してコネクションを開始させて後のメッセージでデータを転送するのでは
なく、初期のトランザクションリクエストでコネクションを開始させ、その後デ
ータを含む応答がそのコネクションに従って送られるようなTCPのバージョン
である。これらのプロトコルによって代表されるあらゆる転送において、各パケ
ットは、従来通り転送されるデータの部分とともに、プロトコル層のそれぞれに
対応するヘッダ及びそのメッセージの残りのパケット群に対するそのパケットを
位置を決めるためのマーカを有する。
たとき(47)、ハードウェアの補助によりそれが初めに検査される。ここでは
、様々な層のプロトコルの種類を決定し、関連するチェックサムを確認し、かつ
これらの認識事項をステータスワードに要約する(57)。これらのワードに含
められるのは、そのフレームが高速パスデータフローの候補であるか否かの表示
である。高速パス候補の選択(59)は、そのホストがCPDによって取り扱わ
れるそのメッセージコネクションから利益を得られるか否かに基いて行われ、そ
のパケットが例えばTCP/IP又はSPX/IPXのような特定のプロトコル
を表示するヘッダバイトを有しているか否かの判定が行われる。小さいパーセン
テージで存在する高速パス候補でないフレームは、低速パスプロトコル処理のた
めにホストのプロトコルスタックに送られる(61)。その後の各高速パス候補
についてのネットワークプロセッサ作業は、TCP又はSPX CCBのような
高速パスコネクションがその候補に対して常に現存しているか否か、又はその候
補が、例えばTTCP/IPトランザクションのためのもののような新たな高速
パスコネクションをセットアップするために用いられ得るか否かを決定する。C
PDによって提供される妥当性検査が、或るフレームが高速パスで処理されるか
、低速パスで処理されるかに関わらず、処理の高速化をもたらし、誤りのない場
合にのみ、検査されたフレームが、たとえ低速パス処理の場合でもホストのCP
Uによって処理される。
た受信されたメッセージフレームは全て、ネットワークマイクロプロセッサ又は
INIC比較器回路によって調べられ(53)、それらがCPDによって保持さ
れたCCBに一致するか否かが判定される。そのような一致を確認する際、CP
Dは下位層のヘッダを取り除き、CPDのダイレクトメモリアクセス(DMA)
ユニットを用いて、残りのアプリケーションデータをフレームから直接その最終
行先に送信する(69)。この操作は、例えばTCPコネクションが既に存在し
かつ行先バッファがネゴシエートされた場合には、メッセージパケットを受け取
った直後に行われ得るが、初めに初期ヘッダを処理して、この転送のための最終
行先アドレスの新たな組を取得することが必要なこともある。後者の場合には、
CPDは、行先アドレスを待つとともに後続のメッセージパケットをキューに入
れ、次いでキューに入れられたアプリケーションデータをその行先にDMA転送
する。
理のためにホストに送信(65)することによって、新たな高速パスコネクショ
ンをセットアップすることができる。この場合、ホストはそのフレームを用いて
CCBを生成し(51)、次いでCCBはCPDにわたされて、そのコネクショ
ンにおける後のフレームを制御する。CCBはCPDにキャッシュされ(67)
、従来通りのソフトウェア階層処理を使用している場合には、処理された全ての
プロトコルに対して適切な制御及び状態情報を有する。CCBはまた、後の関連
するメッセージパケット内に含められたアプリケーションレベルのデータを、直
接的な使用に利用可能な形態でホストのアプリケーションに直接わたすのを容易
にするために用いられる、転送毎の情報のための記憶空間も有している。CPD
は、ホストからそのコネクションのためのCCBを受け取ったとき、コネクショ
ン処理の指揮を取る。
パケットがネットワーク25を介して受け取られたとき、そのパケットはCPD
30のハードウェア受信ロジック32に入り、これがヘッダ及びデータを検査し
、ヘッダを構文解析してメッセージパケット及びステータスを特定するワードを
生成し、ヘッダ、データ、及びワードをメモリ60に一時的に格納する。パケッ
トの検査と同時に、受信ロジック32は、そのパケットが高速パス処理の候補で
あるか否かを前記ワードを用いて示す。図4Aは、そのパケットが高速パス候補
でない場合を示しており、この場合CPD30は、矢印56によって示されるよ
うに、ホストのCPUによる処理のために、内部バスを通してメモリ60からデ
ータリンク層36へ検査されたヘッダ及びデータを送信する。そのパケットは、
データリンク層36、ネットワーク層38、トランスポート層40、及びセッシ
ョン層42のホストのプロトコルスタック44によって処理され、次にパケット
からのデータ(D)63は、矢印65に示されるように、記憶機構35に送信さ
れ得る。
ケットがTCP/IP、TTCP/IP、又はSPX/IPXメッセージに属す
ること導き出すことによってそのメッセージパケットが高速パス処理の候補であ
ることを決定する場合を示す。次に、CPD30におけるプロセッサ55は、高
速パス候補を要約するワードがキャッシュ63に保持されたCCBに一致するか
否かを調べるためのチェックを行う。そのパケットに対して一致がみられないと
きは、CPDは、ホストのプロトコルスタック44にメモリ60から検査された
パケットを処理のために送信する。ホストのスタック44は、そのパケットを用
いて、パケットに関連するメッセージからのデータの行先を見出し、それを予約
することを含むメッセージのコネクションコンテキストを生成することができ、
そのコンテキストはCCBの形態を取る。本実施例は、高速パス及び非高速パス
の候補の両方の処理のために一個の専用ホストスタック44を用いるが、以下に
説明する実施例では、高速パスの候補は、非高速パスの候補とは異なるホストス
タックによって処理される。その初めのパケットから幾つかのデータ(D1)6
6が、矢印66で示すように、所望に応じて記憶機構35における行先に送られ
得る。次にCCDが、矢印64に示すように、キャッシュ62に保存されるCP
D30を送信する。例えば、TCP/IPに代表されるような伝統的なコネクシ
ョンベースのメッセージの場合は、初めのパケットが、CCBが生成されてCP
D30にわたされる前にホスト間で生ずるコネクション初期化ダイアログの一部
であり得る。
のパケットが、CPD30によってネットワーク25から受信されたとき、パケ
ットのヘッダ及びデータは、受信ロジック32によって検査され、そのヘッダは
構文解析されて、メッセージパケットの要約及び対応するCCBを見つけるため
のハッシュが生成され、その要約及びハッシュはワードに含められる。そのワー
ドは、パケットとともにメモリ60に一時的に保存される。プロセッサ55は、
キャッシュ62に保存された各CCBとハッシュとの間の一致をチェックし、そ
の一致を見出したときには、矢印72に示すように、高速パスを介して記憶機構
35における行先に直接データ(D2)70を送信し、セッション層42、トラ
ンスポート層40、ネットワーク層38、及びデータリンク層36はバイパスさ
せる。メッセージからの残りのデータパケットは、DMAによって直接記憶機構
に送信され得、CPUスタック44による比較的低速のプロトコル層処理及び反
復されるコピー処理は回避される。
ョンが確立されたメッセージが、CPDによって容易に取り扱われないパケット
を有するときの稀な例を取扱うための手順を示す。この場合、そのパケットは、
プロトコルスタックによって処理されるべく送信され、プロトコルスタックは、
矢印76で示すように、CPDとの制御ダイアログを介してキャッシュ62から
のメッセージのためにCCBにわたされ、そのメッセージの処理を引き継がせる
ためにCPUに信号が送られる。次にプロトコルスタックによる低速パス処理に
よって、矢印82に示すように、そのパケットからのデータ(D3)80が記憶
機構35に送られることになる。一旦そのパケットが処理され、誤り状態が補正
されると、CCBは制御ダイアログを介してキャッシュ62に戻され得、そのメ
ッセージの後続のパケットからのペイロードデータは、同様にCPD30の高速
パスを介して送信され得ることになる。従って、CPU及びCPDは協働して、
所定のメッセージが高速パスハードウェア処理に従って処理されるか、より一般
的なCPUによるソフトウェア処理に従って処理されるのかを決定する。
ッセージの送信も、図5に示すように、CPUを介した順次式プロトコルソフト
ウェア処理か、CPD30を介した高速化ハードウェア処理の何れかによって処
理され得る。記憶機構35からCPU28によって選択されたメッセージ(M)
90は、矢印92及び96によって示されるように、スタック44によって処理
するためセッション層42に送信され得る。しかし、コネクションが存在し、か
つCPD30がそのメッセージのための適切なCCBを既に有している状況では
、データパケットはホストスタック44をバイパスし、DMAによって直接メモ
リ60に送信され得る。このとき、プロセッサ55は、各データパケットに全て
の適切なプロトコル層を含む1個のヘッダを加え、得られたパケットをリモート
ホスト22への送信のためネットワーク25に送る。この高速パス送信によって
、たとえ1個のパケットのための処理でも非常に高速化することができ、より大
きいメッセージの場合は大幅に高速化する。
送信をガイドするための適切な制御及び状態情報と共にCCBを生成することに
よって利益が得られる。TCP/IP又はSPX/IPXにに代表される伝統的
なコネクションベースのメッセージの場合、CCBは、コネクション初期化ダイ
アログの間に生成される。TTCP/IPに代表されるような高速コネクション
メッセージの場合、CCBはペイロードデータを送信する同じトランザクション
で生成され得る。この場合、ペイロードデータの送信が高速パスコネクションを
セットアップするために用いられたリクエストに対する応答であり得る。いずれ
の場合にも、CCBは、各プロトコル層に関連するプロトコル及びステータス情
報を提供し、これには、ユーザが関与するもの及び1回の情報の転送のための記
憶空間が含まれている。CCBは、プロトコルスタック44によって生成され、
そのプロトコルスタックは、次に、矢印98によって示されるように、CPDの
コマンドレジスタに書き込むことによってCCBをCPD30にわたす。CCB
によってガイドされ、プロセッサ55は、ホストメモリ35における発信元から
のデータのネットワークフレームサイズにされた一部分を、矢印99に示すよう
に、DMAを用いてそれ自身のメモリ60に送る。次にプロセッサ55は、適切
なヘッダ及びチェックサムをそのデータの一部分の先頭に付加し、得られたフレ
ームを関連するプロトコルの規約に準拠させてネットワーク25に送信する。C
PD30は、全てのデータがその行先に達したという確認応答を受信した後、C
PDは応答バッファに書き込むことによってホスト35に通知する。
理から解放させる。データ送信の大部分は、高速パスによってネットワークに送
信され得る。入出力の両方が高速パスであることによって、上位層レベル即ちセ
ッション層レベル以上における機能による割り込みが大幅な低減を達成され、か
つネットワークマイクロプロセッサとホストとの間の相互作用は上位層が作ろう
とする全転送サイズを用いて行われることになる。高速パス通信の場合、割り込
みは(その大部分が)上位層メッセージトランザクション全体の始まりと終わり
においてのみ生じ、各階層の部分及びそのトランザクションのパケットの送受信
において割り込みは生じない。
インテリジェントネットワークインタフェースカード(INIC)150が図6
に示されている。INIC150のハードウェアロジック171は、INICと
ホストとを接続する周辺バス(PCI)157でネットワーク155に接続され
ている。この実施例において、ホスト152はTCP/IPプロトコルスタック
を有し、それはネットワーク155から受け取ったメッセージフレームの順次式
ソフトウェア処理のための低速パス158を提供する。ホスト152のプロトコ
ルスタックは、データリンク層160、ネットワーク層162、トランスポート
層164、及びホスト152における通信データの発信元又は行先168を提供
するアプリケーション層166を有する。図示されていない他の層、例えばセッ
ション層やプレゼンテーション層もホストスタック152に含められ得、発信元
又は行先はデータの性質に応じて変わり、実際にはアプリケーション層であり得
る。
て処理するメッセージ、又はホストのプロトコルスタックをバイパスする高速1
59に沿って処理するメッセージとの間の選択を行うネットワークプロセッサ1
70を有する。受信されたパケットのそれぞれは、INIC150に含められた
フライバイ(fly by)ハードウェアロジック171上で処理され、従って或るパ
ケットの全てのプロトコルヘッダは、プロトコル層の間でデータのコピー、移動
、記憶させることなく処理され得る。ハードウェアロジック171は、パケット
バイトがそのハードウェアを通過するときに、選択されたヘッダバイトを分類す
ることによって1回で所定のパケットのヘッダを処理する。選択されたバイトの
処理の結果は、チェックサム検査を含むパケットの要約が生成されるまで、パケ
ットのどの他のバイトを分類するかを決定することの助けとなる。次に受信され
たパケットからのデータ及び処理されたヘッダが、そのパケットのヘッダ及びス
テータスを要約するワードとともにINICの記憶機構185に記憶される。ネ
ットワーク記憶機構の構成のために、INIC150はIDE、SCSI、又は
類似のインタフェースを有するディスクドライブのような周辺記憶装置に接続さ
れ得、その記憶装置のためのファイルキャッシュはINIC150のメモリ18
5上に存在する。そのようなネットワークインタフェースの幾つかは1つのホス
トのために存在し得、それぞれが関連する記憶装置を有する。
トのハードウェア処理は、図7により詳細に示されている。受信されたメッセー
ジパケットは、初めにメディアアクセスコントローラ172に入り、そのメディ
アアクセスコントローラはネットワークへのINICのアクセス及びパケットの
受信を制御し、かつネットワークプロトコル管理のための統計的情報を提供する
。そこから1回に1バイトのデータがアセンブリレジスタ174に流れる。アセ
ンブリレジスタ174は、この実施例では128ビットの幅を有する。そのデー
タはフライバイシーケンサ178によって分類されるが、後に図8を参照してよ
り詳細に説明するように、フライバイシーケンサは、パケットのバイトを、それ
らが移動している(fly by)ときに調べ、パケットを要約するために用いられる
それらのバイトからステータスを生成する。生成されたそのステータスはマルチ
プレクサ180によってデータと併合され、得られたデータはSRAM182に
格納される。パケット制御シーケンサ176は、フライバイシーケンサ178を
監視し、メディアアクセスコントローラ172からの情報を調べ、データのバイ
トをカウントし、アドレスを生成し、ステータスを送り、かつアセンブリレジス
タ174からSRAM182、更にはDRAM188へのデータの移動を管理す
る。パケット制御シーケンサ176は、SRAMコントローラ183を介してS
RAM182におけるバッファを管理し、かつデータをSRAM182からDR
AM188のバッファへ移動させる必要があるときにDRAMコントローラ18
6への表示も行う。一旦パケットのためのデータの移動が終了し、全てのデータ
がDRAM188のバッファに移動すると、パケット制御シーケンサ176は、
フライバイシーケンサ178において生成されたステータスを、パケットデータ
の先頭に付加するべくDRAM188のバッファの先頭部及びSRAM182に
動かす。次にパケット制御シーケンサ176は、受信バッファディスクリプタを
受信キューに入れるようにキューマネージャに要求し、受信キューはプロセッサ
170にパケットがハードウェアロジック171によって処理されたこと、及び
その要約されたステータスを通知する。
この段のそれぞれは通常パケットヘッダの特定の部分を集中して取扱い、従って
その段に関連するステータスを生成するため特定のプロトコル層を集中して取り
扱う。この実施形態では、フライバイシーケンサ178が、メディアアクセス制
御シーケンサ191、ネットワークシーケンサ192、トランスポートシーケン
サ194、及びセッションシーケンサ195を有する。より高位のプロトコル層
に関連するシーケンサを追加的に提供することもできる。フライバイシーケンサ
178は、パケット制御シーケンサ176及びフライバイシーケンサに所定のバ
イトがアセンブリレジスタ174から利用可能であるか否かを伝えるパケット制
御シーケンサによる所定のポインタによってリセットされる。メディアアクセス
制御シーケンサ191は、バイト0−5を見ることにより、或るパケットが、別
のホストではなくホスト152を、又は別のホストに加えてホスト152をアド
レス指定されているかを決定する。パケットのオフセット12及び13もメディ
アアクセス制御シーケンサ191によって処理され、例えばそのパケットがイー
サネット又は802.3であるか否かのタイプフィールドを決定する。そのタイ
プフィールドがイーサネットである場合、それらのバイトはメディアアクセス制
御シーケンサ191にそのパケットのネットワークプロトコルの種類も伝える。
802.3の場合は、それらのバイトは全フレームの長さを表示し、メディアア
クセス制御シーケンサ191は更にパケット内の8個のバイトをチェックし、ネ
ットワーク層の種類を決定する。
ッダ長が正しい長さを有していることを検査し、ネットワーク層のヘッダを検査
する。高速パス候補について、ネットワーク層のヘッダは、メディアアクセス制
御シーケンサ191によって行われた解析からIP又はIPXであることが判っ
ている。例えば、タイプフィールドが802.3であり、ネットワークプロトコ
ルがIPであると仮定すると、ネットワークシーケンサ192はIPの種類を決
定するためにバイト22で始まるネットワークヘッダの初めのバイトを解析する
。IPヘッダの初めのバイトは、ネットワークシーケンサ192によって処理さ
れ、そのパケットがどのIPの種類に関係しているかを決定する。そのパケット
が、例えばIPバージョン4に関係するものであると決定することにより、ネッ
トワークシーケンサ192による更なる処理が方向付けられ、ネットワークシー
ケンサはパケットのトランスポートヘッダプロトコルの表示のためIPヘッダ内
の10個のバイトに配置されたプロトコルのタイプを調べる。例えば、イーサネ
ット上のIPの場合、そのIPヘッダはオフセット14から始まり、プロトコル
タイプのバイトは、オフセット23であり、それはネットワークロジックによっ
て処理され、トランスポート層プロトコルが例えばTCPであるか否かが決定さ
れる。通常20−40バイトであるネットワークヘッダの長さから、ネットワー
クシーケンサ192が、トランスポート層ヘッダの検査のため、パケットのトラ
ンスポート層ヘッダの始まりを決定する。トランスポートシーケンサ194は、
トランスポート層ヘッダ及びデータのためのチェックサムを生成してもよく、ト
ランスポート層ヘッダ及びデータは、少なくともTCPの場合にIPヘッダから
の情報を含み得る。
1つにはそのメッセージのためのTCP発信元及び行先ポートを決定するため、
例えばそのパケットがNetBiosか他のプロトコルであるかを決定するため
に、ヘッダのトランスポート層部分における初めの数バイトの解析も行う。TC
Pヘッダのバイト12が、トランスポートシーケンサ194によって処理され、
TCPヘッダの長さが決定され、検査される。TCPヘッダのバイト13は、肯
定応答(ack)フラグ及びプッシュフラグを除いて、例えばリセットや終了のよ
うな、プロセッサにこのパケットを例外として分類させ得る予期しないオプショ
ンを表示し得るフラグを含む。TCPオフセットバイト16及び17はチェック
サムであり、それはハードウェアロジック171によって引き出されたり、格納
されたりし、フレームの残りの部分はそのチェックサムに対して検査される。
ョン層ヘッダは、NetBiosの場合には4バイトに過ぎず、そのうちの2バ
イトはNetBiosペイロードデータの長さを通知するが、他のプロトコルの
場合にはより長いこともあり得る。セッションシーケンサ195は、例えば読み
出し又は書き込みとしてメッセージのタイプを分類するためにも用いられ得、そ
のために高速パスが特に有益なものとなり得る。メッセージの種類に応じて更な
る上位層ロジックの処理が、フライバイシーケンサ178及びパケット制御シー
ケンサ176のハードウェアロジック171によって行われ得る。従って、ハー
ドウェアロジック171はインテリジェントに1つのバイトストリームから選択
されたバイトを分類することによってヘッダのハードウェア処理を誘導し、その
パケットのステータスが処理の進行中に決定された分類から構築される。一旦パ
ケット制御シーケンサ176が全てのパケットがフライバイシーケンサ178に
よって処理されたことを検出すると、パケット制御シーケンサ176は、フライ
バイシーケンサ178によって生成されたステータス情報にパケット制御シーケ
ンサ176によって生成されたすテータス情報を加え、プロセッサ170による
パケットの取扱いにおける便宜のため、そのパケットにそのステータス情報を先
頭付加(パケットの先頭部分への付加)する。パケット制御シーケンサ176に
よって生成された追加のステータス情報は、メディアアクセスコントローラ17
2のステータス情報及び発見された全ての誤り、又はアセンブリレジスタ若しく
はDRAMバッファの何れかにおけるデータオーバーフロー、又はそのパケット
に関連する他の種々雑多な情報を有する。パケット制御シーケンサ176は、キ
ューマネージャ184を介して受信バッファキュー及び受信統計的キューにエン
トリを入れることも行う。
ような順次ソフトウェアプロトコル処理とは異なり、そのパケットが各プロトコ
ル層ヘッダの処理のために記憶機構に格納されたり、転送されたり、コピーされ
たり、又は引き出されたりする必要がなく、処理効率を劇的に向上させ、各パケ
ットの処理時間を短縮できる点にある。そのパケットはビットがネットワークか
ら受信されるときのビットレート、例えば100BaseT接続の場合100メ
ガビット/秒で処理され得る。従って、この速度で受信された60バイトの長さ
を有するパケットを分類する時間は、約5マイクロ秒である。ハードウェアロジ
ック171でそのパケットを処理し、パケットデータを高速パスを介してそのホ
スト行先に送信するためにかかる全時間は、66MHzのPCIバスを用いた場
合、約16マイクロ秒以下であり得るが、300MHzのPentiumII(登録商標
)プロセッサによる従来通りのソフトウェアプロトコル処理では、使用中の装置
において200マイクロ秒もの時間がかかかり得る。従って、従来型の順次式ソ
フトウェアプロトコル処理を用いる高速CPUの場合と比較して、高速パス15
9によって1桁以上の処理時間の短縮が達成され得、CPUの割り込みの低減や
ホストのバスの大域幅の節約によってもたらされる追加の時間短縮を考慮しなく
ても、ハードウェアロジック171及びプロセッサ170でプロトコルヘッダを
処理することによって劇的な高速化が提供されることを立証している。
ットのそれぞれについて、そのパケットが高速パス159の候補であるか否かを
選択し、そうである場合には、高速パスが既にそのパケットが属するコネクショ
ンに対してセットアップされているか否かを調べるためのチェックを行う。これ
を行うため、プロセッサ170は、初めにそのパケットヘッダが高速パス候補の
ために定義されたプロトコルのものであるか否かを決定するためにヘッダステー
タスの要約をチェックする。そうでない場合には、プロセッサ170は、INI
C150におけるDMAコントローラに、そのパケットを低速パス158処理の
ためにホストに送信する命令を送る。メッセージが低速パス158処理される場
合でも、INIC150は検査及びメッセージの種類の決定のような初期手順を
実行し、検査されたメッセージを少なくともホストのデータリンク層160に送
る。
要約がINICに保持されたCCBに一致するか否かを調べるためのチェックを
行う。そうである場合には、パケットからのデータは高速パス159を通してホ
ストの行先168に送信される。高速パス159の候補のパケット要約がINI
Cに保持されたCCBに一致しない場合には、そのパケットは低速パス処理のた
めにホスト152に送信されて、そのメッセージのためのCCBが生成される。
高速パス159を用いることは、断片化したメッセージの場合や他の複雑さのた
めに必要でない、又は望ましいものではないこともある。しかし、大部分のメッ
セージについては、INICの高速パス159は、メッセージ処理を非常に高速
化し得る。従ってINIC150は、従来のように所定のパケットの運命を決定
するために幾つかのプロトコル層のそれぞれにおいてステートマシンを用いるの
と異なり、処理進行中に収集される情報に基いてデータをその行先に直接送信す
るか否かを決定する1個のステートマシンプロセッサ170を提供するものであ
る。
プロトコルドライバは、その表示が高速パス又は低速パスの何れであるかに基い
て処理経路を選択する。TCP/IP又はSPX/IPXメッセージは、そのド
ライバによって形成され、高速パスパケットとの一致をとの一致をとり、かつそ
れをコネクション行先168に導くために、INICに送られる。TTCP/I
Pメッセージの場合、ドライバは、初期リクエストパケットの処理から、そのト
ランザクションのためのコネクションコンテキストを生成することができる。こ
の処理では、メッセージ行先168の位置指定を行い、次にその行先からの応答
のための高速パスを提供するためにCCBの形態でINICにそのコンテキスト
を送る。CCBは、プロトコル層及びメッセージのパケットに関するコネクショ
ン及び状態情報を含む。従ってCCBは、発信元及び行先メディアアクセス制御
(MAC)アドレス、発信元及び行先IP又はIPXアドレス、発信元及び行先
TCP又はSPXポート、タイマーのようなTCP変数、ウィンドウプロトコル
をスライドさせるための受信及び送信ウインドウ、及びセッション層プロトコル
を示す情報を有し得る。
のパケットが高速パス159を介して処理され得るか否かを決定するべく入力さ
れるパケットを要約するワードとの迅速な比較処理が行われるようになり、一方
全てのCCBが処理のためにINICにも保持される。この比較を高速化する他
の方法としては、コンテンツのアドレス指定可能なメモリ(CAM)のようなハ
ードウェア補助機構及びBツリーのようなソフトウェア処理等が挙げられる。I
NICマイクロコード又は比較器回路がCCBとの一致を検出すると、DMAコ
ントローラはCPUによる割り込み、プロトコル処理又はコピー処理を行うこと
なく、行先168にパケットからのデータをおく。受信したメッセージの種類に
応じて、そのデータの行先は、ホスト152におけるセッション層、プレゼンテ
ーション層、又はアプリケーション層、又はファイルバッファキャッシュであり
得る。
200を示す。このINICは、一般にファスト・イーサネットとして知られる
802.3u標準を用いる幾つかのネットワークコネクションのためのネットワ
ークインタフェースを提供する。INIC200は、PCIバス205によって
サーバ202に接続されており、サーバ202はMAC層212、ネットワーク
層215、トランスポート層217、及びアプリケーション層220を含むTC
P/IP又はSPX/IPXプロトコルスタックを有し、アプリケーション層の
上に発信元/行先222が設けられているが、前に述べたように、アプリケーシ
ョン層が発信元/行先であり得る。INICは、ネットワークライン210、2
40、242、及び244にも接続されており、これらのネットワークラインは
好ましくはファスト・イーサネット、ツイストペア、光ファイバー、同軸ケーブ
ル、又は他の種類のラインであって、それぞれ100Mb/sのデータ転送が可
能なものであるが、より高速又はより低速のデータレートも可能である。ネット
ワークライン210、240、242、及び244は、それぞれハードウェア回
路の専用の行に接続されており、前記ハードウェア回路はそれぞれのネットワー
クラインから受信されたメッセージパケットの検査及び要約を行うことができる
。従って、ライン210は、シーケンサ250の第1の水平方向の行に接続され
、ライン240は、シーケンサ260の第2の水平方向の行に接続され、ライン
242は、シーケンサ262の第3の水平方向の行に接続され、ライン244は
、シーケンサ264の第4の水平方向の行に接続される。パケットがその水平方
向のハードウェアの行の1つによって検査、要約された後、そのパケットはその
ステータス要約とともに記憶機構270に格納される。
任意のCCBとの比較に基いて、ホストによって処理される低速パス231を通
してそのパケットを送信するか否かを決定する。大部分のパケットは、そのよう
な順次処理を避けることができ、一致するCCBに従ってサーバ内のデータ行先
に高速パス237を通してDMAにより送信されるそのデータ部分を有する。同
様に、高速パス237は、データをネットワーク送信のためにパケットに分割し
、全てのヘッダを付加してプロセッサ230によって発信元222から任意のネ
ットワークラインへ直接データを送信する経路を提供し、同様にCPUによる処
理及び割り込みを最小限にする。明示のため、水平シーケンサ250のみがアク
ティブ状態として示されているが、実際にはシーケンサ行250、260、26
2、及び264のそれぞれが、他の全てのシーケンサ行と同時に全二重通信を提
供する。専用INIC200は、メッセージパケットとともに動作するとき、ソ
フトウェアプロトコルスタックに従ってそれらのヘッダを順次処理する高度な汎
用ホストCPUよりも非常に高速である。
トワークプロトコルの1つは、TCP/IPを通してのサーバメッセージブロッ
ク(SMB)である。SMBはファイルが書き込まれるディスク又はプリンタの
ような特定の操作のために必要なリソースが、その操作が生成されるホストに存
在するか、或いは結び付けられているか、又はファイルサーバのようなネットワ
ークに接続された他のホストに存在するかを決定するリダイレクタソフトウェア
とともに動作し得る。SMB及びサーバ/リダイレクタは、従来はトランスポー
ト層によりサービスされるが、本発明ではSMB及びリダイレクタが、INIC
によりサービスされ得る。この場合には、大きいSMBトランザクションを受け
取ったとき、INICバッファからDMAコントローラによってデータを送信す
ることにより、ホストが取り扱わなければならない割り込みが著しく低減し得る
。更に、このDMAは一般的にファイルデイバスキャッシュにあるその最終的な
行先にデータを転送する。本発明のSMB送信は、基本的に上述のSMBの受信
を逆方向にたどるものであり、ホストからINICにデータが転送され、バッフ
ァに格納されるとともに、関連するプロトコルヘッダがネットワークラインを介
してのリモートホストへの転送のためにINICにおけるデータの先頭に付加さ
れる。ホストの反復される割り込み無しに、カスタム設計のハードウェアを介し
ての複数のTCP/IP、NetBios、及びSMBプロトコル層及び複数の
パケットのINICによる処理によって、SMBメッセージのネットワークライ
ンへの送信速度を著しく高めることができる。
、又はINIC200によって処理されるかを制御するために、メッセージコマ
ンドドライバ300がホスト202にインストールされ、ホストプロトコルスタ
ック310と協働して機能を果たす。コマンドドライバ300は、メッセージの
受信又は送信に介入し、CCBを生成し、INIC200からCCBを送受信す
ることができ、従って処理能力の向上を除いて、INICの機能はユーザからは
透過的なものとなる。また、図面にはINICメモリ304及びINICミニポ
ートドライバ306が示されており、INICミニポートドライバはネットワー
ク210から受信したメッセージパケットを、そのパケットが高速パス候補とし
てのラベル付けされているか否かに応じて、従来通りのプロトコルスタック31
0又はコマンドプロトコルスタック300の何れかへ誘導することができる。従
来通りのプロトコルスタック310は、高速パス候補としてラベル付けされてお
らず、従ってコマンドスタック300によって処理されないメッセージの従来通
りの下位層の処理のために、データリンク層312、ネットワーク層314、及
びトランスポート層316を有する。下位層スタック310の上に存在するのは
上位層318であり、これはやりとりされるメッセージに応じて、セッション層
、プレゼンテーション層、及び/又はアプリケーション層を表す。コマンドドラ
イバ300は、同様にデータリンク層320、ネットワーク層322、及びトラ
ンスポート層325を有する。
層318から送信されたメッセージが、コマンドスタック300、それに続けて
INIC高速パスによって処理されるか、従来通りのスタック310によって処
理されるかを決定する上位層インタフェース330を有する。その上位層インタ
フェース330が、従来通りホストのプロトコルスタックによるプロトコル処理
の後のネットワークへの送信を目的とする上位層318から適切なメッセージを
受け取ったとき、そのメッセージはドライバ300に送られる。次にINICが
、INIC DMAユニットを介しての送信のために、メッセージデータのネッ
トワークサイズにされた一部分を得て、そのデータの一部分の先頭にヘッダを付
加し、形成されたメッセージパケットをワイヤを通して送信する。逆に、TCP
、TTCP、SPX、又は類似のメッセージパケットを、高速パスコネクション
のセットアップにおいて用いられるようにネットワーク210から受け取ったと
き、ミニポートドライバ306は、そのメッセージパケットをコマンドドライバ
300に処理するために転送する。ドライバ300は、そのメッセージパケット
を処理してそのメッセージのためのコンテキストを生成し、ドライバ302は、
そのコンテキスト及びコマンド命令を、高速パスを通しての同一のコネクション
において後のメッセージのデータを送信するためのCCBとして、INIC20
0に戻す。INICによって、数百のTCP、TTCP,SPX、又は類似のC
CBコネクションは、その数に限界なく維持され得るが、INICキャッシュが
一杯になった場合のため、最小使用頻度(LRU)アルゴリズムが用いられる。
ドライバ300は、CCBとしてINIC200に送られるTTCPリクエスト
のためのコネクションコンテキストも生成することができ、これよってそのリク
エストに対するTTCP応答の高速パス転送が可能となる。高速化されていない
プロトコルを有するメッセージは、プロトコルスタック310によって従来通り
に処理され得る。
マンドドライバソフトウェアのTCP/IPインプリメンテーションを示す。従
来通りのホストプロトコルスタック350は、MAC層353、IP層355、
及びTCP層358を有する。コマンドドライバ360は、ホストスタック35
0と協働して働き、ネットワークメッセージを処理する。コマンドドライバ36
0は、MAC層363、IP層366、及びAlacritec TCP(AT
CP)層373を有する。従来型スタック350及びコマンドドライバ360は
、ネットワークドライバインタフェース仕様(NDIS)層375を共有してお
り、これはINICミニポートドライバ306を相互作用する。INICミニポ
ートドライバ306は、従来通りのホストスタック350又はATCPドライバ
360の何れかによって処理するため受信した表示をソートする。TDIフィル
タドライバ及び上位層インタフェース380は、同様に、TDIユーザ382か
らネットワークに送られたメッセージが、コマンドドライバに送られてINIC
の高速パスに転送されたか、或いはホストスタックによって処理されたかを判定
する。
示す図であり、クライアントとサーバの両方は本発明の通信装置を有し、その通
信装置はそれぞれデータの高速パス転送のためのそれらのコネクションを確定す
るCCBを有する。クライアント190は、INIC150、802.3準拠の
データリンク層160、IP層162、TCP層164、NetBios層16
6、及びSMB層168を有する。クライアントは、通信処理のための低速パス
157及び高速パス159を有する。同様にサーバ290は、INIC200、
802.3準拠のデータリンク層212、IP層215、TCP層217、Ne
tBios層220、及びSMB層222を有する。サーバはネットワークライ
ン240、242、及び244に接続されているとともに、クライアント190
に接続されたライン210にも接続されている。サーバも通信処理のための低速
パス231及び高速パス237を有する。
おうとしていると仮定すると、クライアントは、ネットワーク210を介して読
み出しブロック行(RBR)SMBを送信することによって、サーバ290上の
そのファイルの初めの64KBを要求することを開始し得る。RBRコマンドは
、例えば76バイトに過ぎない大きさであり得、従ってサーバ上のINIC20
0は、メッセージタイプ(SMB)及び比較的小さいメッセージサイズを認識し
、かつその76バイトを高速パスを介してサーバのNetBiosに直接送信す
る。NetBiosは、SMBにデータをわたし、SMBは読み出しリクエスト
を処理し、データの64KBを取り出して、サーバのデータバッファに入れる。
次にSMBは、NetBiosを呼出してそのデータを送信し、NetBios
はそのデータをクライアントのために出力する。従来型のホストでは、NetB
iosがTCP出力を呼出し、64KBをTCPにわたし、TCPはそのデータ
を1460バイトのセグメントに分割し、各セグメントをIP及び最終的にMA
C(低速パス231)を介して出力する。本発明の場合には、その64KBのデ
ータは、クライアント−サーバSMBコネクションに関する表示とともにATC
Pドライバに向かい、前記表示はINICによって保持されているCCBを示す
。次にINIC200は、ホストバッファから1460バイトのセグメントをD
MA送信し、TCP、IP及びMACのための適切なヘッダを一度に付加し、か
つ完成したパケットをネットワーク210(高速パス237)上に送信する。I
NIC200は、この処理を64KBの転送の全てが送信されるまで反復する。
通常、クライアントからその64KBのを受信したという確認応答を受信した後
、INICは残りの36KBも高速パス237によって送信する。
ており、INIC150は、受信された第1のフレームからそのコネクションが
受信高速パス159処理(TCP/IP,NetBios、CCBとの一致)で
あることを認識し、ATCPは、その第1フレームを用いてそのメッセージのた
めのバッファ空間を確保し得る。後者の場合には、フレームのNetBios部
分の初めの128バイトをATCP高速パスを介して、ホストのNetBios
に直接わたすことによって達成され、これによりNetBios/SMBに全て
のフレームのヘッダがわたされる。NetBios/SMBは、これらのヘッダ
を解析し、リクエストIDとの一致によってこれが元の行読み出しコネクション
に対する応答であることを認識し、データを置くべき64Kのバッファのリスト
をATCPにわたす。この段階において、ただ1個のフレームが着信しているが
、この処理が生じている間に複数のフレームが着信し得る。クライアントバッフ
ァリストがATCPにわたされると直ぐに、それはその転送情報をINIC15
0にわたし、INIC150はそれらのバッファに蓄積された任意のフレームデ
ータのDMA送信を開始する。
ットワークインタフェースコントローラとプロトコルプロセッサの機能を一個の
ASICチップ400に結合したものである。この実施形態におけるINIC2
00は、全二重4チャネル10/100メガビット/秒(Mbps)のインテリ
ジェントネットワークインタフェースコントローラを提供し、このコントローラ
はサーバアプリケーションのための高速プロトコル処理のために設計されている
。特にサーバの用途のために設計されているが、INIC200は、パーソナル
コンピュータ、ワークステーション、ルータ、又は他のTCP/IP、TTCP
/IP、又はSPX/IPXプロトコルが用いられているあらゆる他のホストに
接続され得る。
244に接続されており、これらのラインは例えばツイストペア、同軸ケーブル
、又は光ファイバーのような複数の異なる経路に沿ってデータを転送することが
でき、そのコネクションはそれぞれ市販の物理層チップ、例えばSEEQ Technolog
y Incorporated, 47200 Bayside Parkway, Fremont, CA94538製のmodel 80220/8
0221 Ethernet Media Interface Adapterを介してのメディア独立インタフェー
ス(MII)を提供する。そのラインは、好ましくは802.3準拠であり、I
NICとともに4つの完全なイーサネットノードを構成し、INICは10Ba
se−T、10Base−T2、100Base−TX、100Base−FX
、及び100Base−T4とともに将来のインタフェース標準をサポートして
いる。物理層の特定及び初期化は、ホストドライバ初期化ルーチンによって達成
される。ネットワークライン210、240、242、及び244とINIC2
00との間のコネクションは、MACユニットのMAC−A 402、MAC−
B 404、MAC−C 406、及びMAC−D 408によって制御され、
これらのMACユニットはINICがネットワークライン210、240、24
2、及び244にアクセスするときに必要な制御を行うMACサブレイヤの基本
的な機能を実行するための論理回路を含む。MACユニット402〜408は、
無差別でマルチキャスト又はユニキャストモードで動作することができ、これに
よってINICがネットワークモニタとして機能し、ブロードキャスト及びマル
チキャストパケットを受信し、かつ各ノードに対して複数のMACアドレスをイ
ンプリメントすることが可能になる。MACユニット402〜408は、シンプ
ルネットワーク管理プロトコル(SNMP)のために用いられ得る統計的情報も
提供する。
ケンサ、XMT&RCV−A418、XMT&RCV−B420、XMT&RC
V−C422、及びXMT&RCV−D424にそれぞれ配線410、412、
414、及び416によって接続されている。各送受信シーケンサは、メッセー
ジフレームがそのシーケンサを通過するとき、処理進行中に幾つかのプロトコル
処理ステップを実行し得る。MACユニットと組み合わせて、この送受信シーケ
ンサ418〜422は、ハードウェア上のデータリンク層、ネットワーク層、ト
ランスポート層、セッション層、及び使用する場合にはプレゼンテーション層及
びアプリケーション層のプロトコルのためにパケットステータスをコンパイルし
て、従来型の順次式ソフトウェアエンジンと比較してそのようなプロトコル処理
のための時間を非常に短縮させることができる。送受信シーケンサ410〜41
4は、ライン426、428、430、及び432によってSRAM及びDMA
コントローラに444に接続されており、DMAコントローラ444はDMAコ
ントローラ438及びSRAMコントローラ442を有する。スタティックラン
ダムアクセスメモリ(SRAM)バッファ440は、ライン441によってSR
AMコントローラ442に接続されている。SRAM及びDMAコントローラ4
44は、ライン446を介して外部メモリ制御機構450と相互作用し、外部メ
モリバス455を介してダイナミックランダムアクセスメモリ(DRAM)バッ
ファ460とフレームの送受信を行う。DRAMバッファ460は、ICチップ
400に隣接して配置される。DRAMバッファ460は、4MB、8MB、1
6MB、又は32MBとして構成され得、かつ所望に応じてチップ上に配置され
得る。SRAM及びDMAコントローラ444はライン464を介してPCIバ
スインタフェースユニット(BIU)468に接続されており、BIU468は
INIC200とPCIインタフェースバス257との間のインタフェースを管
理する。64ビットの多重化BIU468は、スレーブ及びマスター機能の両方
についてPCIバス257に対する直接のインタフェースを提供する。INIC
200は、64ビット又は32ビット何れかのPCI環境において動作し得、何
れの構成においても64ビットのアドレス指定をサポートしている。
ローラ444に接続され、かつライン475を介してPCI BIU468に接
続されている。マイクロプロセッサ470はチップ制御ストア480に存在する
レジスタファイルに命令を送り、チップ制御ストアはSRAMの書き込み可能な
オンチップ制御ストア(WCS)及び読み出し専用メモリ(ROM)を有し、か
つライン477によってマイクロプロセッサに接続されている。マイクロプロセ
ッサ470は入力されるフレームを処理し、ホストのコマンドを処理し、ネット
ワークトラフィックを誘導し、かつPCIバストラフィックを誘導し得る、プロ
グラム可能なステートマシンを提供する。3つのプロセッサは、各クロックサイ
クル毎に1個の命令を発して完了させる3つのレベルのパイプライン型アーキテ
クチャに、共通のハードウェアを用いてインプリメントされている。受信プロセ
ッサ482は主として通信の受信のために用いられ、送信プロセッサ484は主
として通信の送信のために用いられて、全二重通信を容易に行えるようにしてお
り、一方ユーティリティプロセッサ486はPCIレジスタアクセスの監視及び
制御を含む様々な機能を提供する。
御ストア480に存在する。このため3つのプロセッサの機能は容易に定義しな
おすことができ、従ってマイクロプロセッサ470は所定の環境に適合させるこ
とができる。例えば受信機能のために必要な処理の量は、送信機能及びユーティ
リティ機能の何れかのために要求されるものを上回っていることがある。この状
況では、幾つかの受信機能が送信プロセッサ484及び/又はユーティリティプ
ロセッサ486によって実行され得る。或いは、追加のレベルのパイプラインを
生成して、3つではなく4以上の仮想プロセッサを生成し、その追加のレベルを
受信機能専用にすることができる。
されている最大256個のCCBをサポートし得る。しかし、SRAM440に
おいて、順次検索を保存するためのハッシュ順のCCBインデックスも存在する
。一旦ハッシュが生成されるとCCBはSRAMにキャッシュされ、この実施例
では最大16個のCCBがSRAMにキャッシュされる。SRAMにキャッシュ
された16のCCBの割り当ては、以下に説明するように、最低使用頻度レジス
タによって取り扱われる。これらのキャッシュ位置は、送信プロセッサ484と
受信プロセッサ486との間で共有されており、従ってより重い負荷のかかるプ
ロセッサがより多くのキャッシュバッファを使用することができる。また、シー
ケンサ間で共有される8個のコマンドバッファ及び8個のヘッダバッファも存在
する。所定のヘッダ又はコマンドバッファは、所定のCCBバッファに静的にリ
ンクされていない。そのリンクはフレーム毎に動的だからである。
のマイクロプロセッサでは受信、送信、及びユーティリティプロセッサのための
命令が、クロックのインクリメントI、II、IIIに従って3つの交互のフェ
ーズで実行され、そのフェーズはパイプライン段階のそれぞれに対応している。
各フェーズは異なる機能を担っており、3つのプロセッサのそれぞれは、各クロ
ックインクリメントの間に異なるフェーズを占める。通常各プロセッサは、制御
ストア480からの異なる命令ストリームに基いて動作し、それぞれそのフェー
ズを通してそれ自身のプログラムカウンタ及びステータスを有する。
令を終了し、その結果を行先のオペランドに格納し、次の命令を取り出し、かつ
その次の命令を命令レジスタに格納する。第1レジスタセット490は、命令レ
ジスタを含む複数のレジスタを提供し、第1レジスタセットのための制御機構セ
ット492は第1レジスタセット490に対する記憶機構のための制御を提供す
る。幾つかの項目が制御機構492によって変更されることなく第1フェーズを
通過し、代わりに第1レジスタセット490又はRAMファイルレジスタ533
に単にコピーされる。第2命令フェーズ560は、第1レジスタセット490の
命令レジスタに格納された命令をデコードし、生成された全てのオペランドを集
める命令デコーダ及びオペランドマルチプレクサ498を有し、その収集された
オペランドは次に第2レジスタセット496のデコードレジスタに格納される。
第1レジスタセット490、第2レジスタセット496、及び第3命令フェーズ
600で用いられる第3レジスタセット501は、多くの同一のレジスタを有し
、これは図15A乃至図15Cにより詳細に示されている。命令デコーダ及びオ
ペランドマルチプレクサ498は、RAMファイルレジスタ533のデータポー
ト及び2つのアドレスから読み出しを行うことができ、RAMファイルレジスタ
は、第1フェーズ500及び第2フェーズ560の両方において動作する。プロ
セッサ470の第3フェーズ600は、第2レジスタセットからのオペランドに
対するALU処理を行う論理演算装置(ALU)602を有し、ALUは処理の
結果を第3レジスタセット501に含められた結果レジスタに格納する。スタッ
ク交換機構608は、レジスタスタックを順序付けしなおすことができ、キュー
マネージャ503はプロセッサ470のためのキューを編成することができ、そ
の結果は第3レジスタセットに格納される。
それに続く第3フェーズをまで継続する。所定のフェーズ内での組み合わせによ
る遅れを最小限するために、命令実行の3つのフェーズにわたって様々な機能が
分散されていることに注意されたい。この実施形態の66MHzの周波数で、各
クロックインクリメントが終了するまでに15ナノ秒の時間がかかり、3つのプ
ロセッサのそれぞれに対して1個の命令が完了するまで全体で45ナノ秒かかる
ことになる。循環する命令フェーズは図15A乃至図15Cにより詳細に示され
ており、各フェーズが異なる図面において示されている。
2を有する第1フェーズ500の幾つかの特定のハードウェア機能を示す。第2
レジスタセット492のための制御機構には、SRAM制御機構502が含まれ
、これはアドレスをロードし、データをSRAMアドレス及びデータレジスタ5
20に書き込むための論理制御機構である。従って第3フェーズ600からのA
LU602の出力は、SRAM制御機構502によってSRAMアドレス及びデ
ータレジスタ520のアドレスレジスタ又はデータレジスタに置かれ得る。ロー
ド制御機構504は、同様にファイルコンテキストレジスタ522に或るファイ
ルに対するコンテキストの書き込みのための制御を提供し、別のロード制御機構
506は様々なデータをフリップフロップレジスタ525に格納するための制御
を提供する。例えば、送られたビットがセットされたか否かを示すALU条件コ
ードは、第1フェーズ500において実行される処理なしで、ALU条件コード
レジスタ528にクロックに応じて入力される。フラグデコード508は、例え
ばロックの設定のようなフラグレジスタ530に格納された様々な機能を実行す
ることができる。
みポート及びアドレス及びデータのための2つの読み出しポートを有し、従って
2以上のレジスタが一度に読み出され得る。上述のように、RAMファイルレジ
スタ533は基本的に第1及び第2フェーズをまたいでおり、即ち第1フェーズ
500において書込みが行われ、第2フェーズ560において読み出しが行われ
る。制御ストア命令510によって制御ストア480から新たなデータが入って
くるため、図面には示されていないが、命令レジスタ535に格納された命令を
プロセッサがプログラムしなおすことが可能となる。このためのアドレスは、フ
ェッチアドレスレジスタ538に格納されたアドレスのうちどのアドレスを取り
出すかを決定するフェッチ制御レジスタにおいて生成される。ロード制御機構5
15は、プログラムカウンタのための命令を供給し、プログラムカウンタは制御
ストアのためのフェッチアドレスの場合と概ね同様に動作する。3つのレジスタ
の後入先出スタック544は、このフェーズにおいて他の操作を受けずに第1レ
ジスタセットにコピーされる。最後に、デバッグアドレス548のためのロード
制御機構517が所望に応じて含められるが、これによって生じ得る誤りの訂正
が可能となる。
出しを含む、第2マイクロプロセッサフェーズ560を示す。スクラッチSRA
M565には、第3フェーズにインクリメントされるまで初めの2つのフェーズ
を通過するレジスタを有する第1レジスタセットのSRAMアドレス及びデータ
レジスタ520から書込みが行われる。スクラッチSRAM565は、命令デコ
ーダ及びオペランドマルチプレクサ498によって読み出される。これは、上述
のように、スタック544、デバッグアドレス548、及びSRAMアドレス及
びデータレジスタのような例外を除いて、第1レジスタセットの大部分のレジス
タと同様である。命令デコーダ及びオペランドマルチプレクサ498は、セット
490の様々なレジスタ及びSRAM565を参照して命令をデコードし、次の
フェーズにおける処理のためのオペランドを収集する。特に、以下のALU60
2に提供するオペランドを決定する。命令デコーダ及びオペランドマルチプレク
サ498の出力は、ALUオペランド579及び582、ALU条件コードレジ
スタ580、及びこの実施形態では32のキューを制御し得るキューチャネル及
びコマンド587レジスタを含む第2レジスタセット496における多数のレジ
スタに格納される。セット496における幾つかのレジスタは、プログラム制御
機構590、リテラルフィールド589、テスト選択584、及びフラグ選択5
85を含む、デコーダ498によって実質的にデコードされることなく命令レジ
スタ535から直接ロードされる。第1フェーズ500のファイルコンテキスト
522のような他のレジスタは、第2フェーズ560のファイルコンテキスト5
77に常に格納されるが、マルチプレクサ572によって集められたオペランド
としても取り扱われる。スタックレジスタ544は、スタックレジスタ594に
単にコピーされる。プログラムカウンタ540は、このフェーズにおいてインク
リメントされ(568)、レジスタ592に格納される。同様に、オプションの
デバッグアドレス548もインクリメントされ(570)、ロード制御機構57
5は、この時点で、各フェーズにおける誤り制御を可能にするためにパイプライ
ン505から供給され得、その結果はデバッグアドレス598に格納される。
ズ600を示す。ALU602は、加算器、優先エンコーダ、及び他の標準的な
論理機能を有する。ALUの結果は、レジスタであるALU出力618、ALU
条件コード620、及び行先オペランド結果622に格納される。ファイルコン
テキストレジスタ616、フラグ選択レジスタ626、及びリテラルフィールド
レジスタ630は、単に前のフェーズ560からコピーされる。テストマルチプ
レクサ604は、条件ジャンプがジャンプを生ずるか否かを決定するために設け
られ、その結果はテスト結果レジスタ624に格納される。テストマルチプレク
サ604は、フェッチ制御機構511のような類似の判断とともに、第1フェー
ズ500において実行され得る。スタック交換608は、スタック594からプ
ログラムカウンタをフェッチすることにより、又はプログラムカウンタをそのス
タックに入れることによってスタックを上限に移動させ、その結果はプログラム
制御機構634、プログラムカウンタ638、及びスタック640レジスタに格
納される。SRAMアドレスは所望に応じてこのフェーズ600においてインク
リメントされ得る。別のデバッグアドレス642のための別のロード制御機構6
10は、このフェーズにおいても誤り制御を可能にするために、この時点でパイ
プライン505から強制的にわたされる。図面では一体に示されているQRAM
及びQALU606は、キューチャネル及びコマンドレジスタ587から読み出
され、SRAMに格納され、キューを再編成し、必要に応じてデータ及びポイン
タを加えたり取り除いたりして、データのキューを管理し、その結果をテストマ
ルチプレクサ604、及びキューフラグ及びキューアドレスレジスタ628に送
る。従って、QRAM及びQALU606は、3つのプロセッサのためのキュー
を管理する任務、ソフトウェアによってCPU上で順次実行される従来通りのタ
スクを想定しており、キューマネージャ606は、代わりに高速化した実質的に
同時並行のハードウェアキューイングを提供する。
ューの2つを示しており、そのキューのそれぞれは、SRAMヘッド、SRAM
テール、及びDRAMボディにおいて情報をキューに入れる能力を有しており、
これによって各キューの拡張及び個別の編成が可能となる。従ってFIFO70
0は、SRAM記憶ユニット705、707、709、及び711を有し、それ
ぞれが全部で32個のバイトに対して8個のバイトを含んでいるが、これらのユ
ニットの数及び処理能力は、実施形態によって変えることができる。同様に、F
IFO702はSRAM記憶ユニット713、715、717、及び719を有
している。SRAMユニット705及び707は、FIFO700のヘッドであ
り、ユニット709及び711はFIFOのテールであり、ユニット713及び
715はFIFO702のヘッドであり、ユニット717及び719はそのFI
FOのテールである。FIFO700の情報は、矢印722で示すように、ヘッ
ドユニット705又は707に書き込まれ得、矢印725で示すように、テール
ユニット711又は709から読み出され得る。しかし特定のエントリは、ヘッ
ドユニット705又は707から読み書きの両方が行われ得、又はテールユニッ
ト709又は741から読み書きの両方が行われ得、データ転送及びラテンシー
が最小限にされている。同様に、FIFO702のための情報は、一般的に、矢
印733で示すように、ヘッドユニット713又は715に書き込まれ、矢印7
39で示すように、テールユニット717又は719から読み出されるが、それ
が書き込まれた同一のヘッド又はテールユニットから読み出されることもある。
り、このDRAM460によって、これらのFIFOを無限に拡張しSRAMヘ
ッド及びテールが一杯になった状況を取り扱うことが可能となる。例えば、32
個のキューのうちの、Q(0)とラベル付けされた第1のキューは、矢印727
で示すように、FIFO700のヘッド又はテールにキューを入れる代わりにキ
ューマネージャの指示の下で動作するDMAユニットによってDRAM420に
おいてエントリをキューに入れることができる。DRAM460に格納されたエ
ントリは、矢印730で示されるように、SRAMユニット709に戻され、そ
のFIFOの長さ及び終了時間が延長される。SRAMからDRAMへの転換は
、一般的にSRAMが一杯になったときのために準備されている。DRAMはよ
り低速であり、DMA転送によって更なるラテンシーが生ずるからである。従っ
てQ(0)は、FIFO700及びDRAM460の両方におけるキューマネー
ジャ600によって格納されたエントリを含み得る。同様に、FIFO702に
向かう情報は、例えばQ(27)に対応するものであり得、矢印735で示すよ
うに、DMAによってDRAM460に転送され得る。より低速のDRAM46
0にも関わらず、費用的に有効にキューを作成する能力は、初期化の間にユーザ
が決定でき、これにより所望に応じてキューのサイズを変更することが可能とな
る。DRAM460にキューイングされた情報は、矢印737に示すように、S
RAMユニット717に戻される。
ように、4つの32ビットのレジスタのセット740に維持され、そこからアク
セスされる。各レジスタにおける特定のビットは特定のキューに対応する。その
レジスタは、Q−Out_Ready745、Q−In_Ready750、Q
−Empty755、及びQ−Full760とラベル付けされている。特定の
ビットがQ−Out_Readyレジスタ750にセットされた場合、そのビッ
トに対応するキューは読み出される状態となった情報を含み、Q−In_Rea
dy752レジスタにおける同一のビットがセットされることは、そのキューが
書込み可能な状態となったことを意味する。同様にQ−Emptyレジスタ75
5における特定のビットを正値にセットすることは、そのビットが空になったこ
とに対応するキューを意味し、Q−Fullレジスタ760の特定のビットが正
値にセットされることは、そのビットが一杯になったことに対応するキューを意
味する。従ってQ−Out_Ready745は、ビット(27)752、ビッ
ト(28)754、ビット(29)756、及びビット(30)を包含するビッ
ト(0)746〜ビット(31)748を含む。Q−In_Ready752は
、ビット(27)766、ビット(28)768、ビット(29)770、及び
ビット(30)772を含むビット(0)762〜ビット(31)764を含む
。Q−Empty755は、ビット(27)778、ビット(28)780、ビ
ット(29)782、及びビット(30)784を含むビット(0)774〜ビ
ット(31)776を含み、Q−Full760は、ビット(27)790、ビ
ット(28)792、ビット(29)794、ビット(30)796を含むビッ
ト(0)786〜ビット(31)788を含む。
の利用可能なバッファであるアドレスのリストを保持する。このキューは、マイ
クロプロセッサ又は他のデバイスがフリーバッファアドレスを必要とするときに
アドレス指定され、従って共通に感知できるDRAM460を含む。従って、フ
リーバッファアドレスを必要とするデバイスは、Q(0)をチェックし、そのア
ドレスを得る。FIFO702に対応するQ(27)は、受信バッファディスク
リプタキューである。受信シーケンサによって受信されたフレームが処理された
後、そのシーケンサはそのフレームのためのディスクリプタをQ(27)に格納
しようとする。このようなディスクリプタの位置がSRAMにおいて即座に利用
可能である場合は、Q−In_Ready750のビット(27)766がセッ
トされる。そうでない場合は、そのシーケンサはキューマネージャがSRAMか
らDRAMへDMA転送を開始させて、受信ディスクリプタを格納するための空
間を空けるのを待たなければならない。
ンサ間のキューエントリの移動、及びSRAMとDRAM間のキューエントリの
移動を管理するキューマネージャの動作は、図18により詳細に示されている。
キューを利用するリクエストとしては、プロセッサリクエスト802、送信シー
ケンサリクエスト804、及び受信シーケンサリクエスト806がある。そのキ
ューのための他のリクエストは、DRAMからSRAMへのリクエスト808及
びSRAMからDRAMへのリクエスト810であり、これはキューのDRAM
及びSRAMヘッド又はテール間でデータをやりとりする際にキューマネージャ
の代わりに作用する。これらの様々なリクエストの何れが次のサイクルにおいて
キューマネージャを用いるかの決定は、優先ロジックアービタ815によって取
り扱われる。高い周波数での動作を可能にするため、キューマネージャはパイプ
ライン型で、レジスタA818及びレジスタB820が一時的な記憶機構を提供
するとともに、ステータスレジスタ822が次の更新までステータスを維持する
。キューマネージャはDMA、受信及び送信シーケンサリクエストのために偶数
番目のサイクルを予約し、プロセッサリクエストのために奇数番目のサイクルを
予約する。二重ポートQRAM825は、各キューに関連する変数を格納し、各
キューのための変数としては、キューのSRAM条件に対応するヘッド書き込み
ポインタ、ヘッド読み出しポインタ、テール書き込みポインタ、及びテール読み
出しポインタと、キューのDRAM条件及びキューのサイズに対応するボディ書
込みポインタ及びボディ読み出しポインタとが挙げられる。
フェッチされ、QALU828によって選択された処理に従って改変され、SR
AM読み出しリクエスト830又はSRAM書込みリクエスト840が生成され
得る。その変数は更新され、更新されたステータスは、ステータスレジスタ82
2及びQRAM825に格納される。ステータスはアービタ815にも供給され
て、以前にリクエストされた処理が完了したことを示す信号を供給して、リクエ
ストの重複を防止する。ステータスレジスタ822は、4つのキューレジスタQ
−Out_Ready745、Q−In_Ready750、Q−Empty7
55、及びQ−Full760を更新して、アクセスされたキューの新たなステ
ータスを反映するようにする。同様に更新されるのは、SRAMアドレス833
、ボディ書込みリクエスト835及びボディ読み出しリクエスト838であり、
これらはDMAを介してそのキューのためにSRAMヘッド及びテールとやりと
りする。或いは、様々なプロセスが、Q書き込みデータ844によって示される
ように、キューへの書き込みを行おうとすることもあり得、そのプロセスはマル
チプレクサ846によって選択され、SRAM書き込みリクエスト840にパイ
プライン処理される。SRAMコントローラは、アクセスされたキューのテール
の書き込み又はヘッドの読み出し及び確認応答を戻すことによって、読み出し及
び書き込みリクエストをサービスする。このようにして、様々なキューが利用さ
れ、それらのステータスが更新される。
又はCCBを選択するために用いられる最低使用頻度レジスタ900を示す。こ
の実施形態におけるINICは、所定の時間においてSRAMに最大16のCC
Bをキャッシュでき、新たなCCBがキャッシュされるときには、古いものが破
棄されなければならないことが多く、破棄されるCCBは、通常、このレジスタ
900に従って最小使用頻度のCCBとして選択されたものである。この実施形
態では、最大256のCCBのためのハッシュテーブルがSRAMに維持されて
おり、一方最大256の全CCBがDRAMに保持されている。最小使用頻度レ
ジスタ900は、R0−R15とラベル付けされた16個の4ビットブロックを
有し、各ブロックはSRAMのキャッシュユニットに対応する。初期化の際、そ
のブロックは0−15に番号付けされ、番号0は、最小使用頻度(LRU)キャ
ッシュユニットを表すブロックに格納され、番号15は、最大使用頻度(MRU
)キャッシュユニットを表すブロックに格納される。図19Aは、LRUブロッ
クR0が番号9を保持しており、MRUブロックR15が番号6を保持している
、任意の時点におけるレジスタ900を示す。
、図19Aでは、番号9を保持しているLRUブロックR0が読み出され、新た
なCCBが番号9に対応するSRAMキャッシュユニットに格納される。番号9
に対応する新たなCCBが現時点で最も使用頻度の高いCCBであることから、
番号9は、図19Bに示すように、MRUブロックに格納される。他の番号は全
て1個左のレジスタブロックにシフトされ、LRUブロックに番号1が残る。以
前に番号9に対応するSRAMユニットにキャッシュされたCCBは、よりゆっ
くりとではあるが、よりコストパフォーマンスの良い形でDRAMに移されてい
る。
結果を示す。この例では、CCBが番号10に対応するSRAMユニットにキャ
ッシュされており、そのCCBを使用した後、番号10にMPUブロックに格納
される。番号10以外の最近使用された番号のみ(レジスタブロックR9−R1
5)が左側にシフトされ、LRUブロックには番号1が残る。このようにして、
INICはSRAMキャッシュに最もアクティブなCCBを維持する。
持することが望ましくないものであることがある。例えば、終了したことが判っ
ているコンテキストのためのCCBは、キャッシュせずに、他のキャッシュされ
たCCBがSRAMに長く残るようにすることが好ましい。この場合、デキャッ
シュ可能なCCBを保持するキャッシュユニットを表す番号が、MRUブロック
R15でないMRUブロックR0に格納され、従ってデキャッシュ可能なCCB
がLRUブロックR0に保持された番号に対応するSRAMユニットにキャッシ
ュされる新たなCCBが使用されるとすぐに置きかえられる。図19Dは、番号
8(図19CにおけるブロックR9にあったもの)が、使用され次に終了される
CCBに対応する場合を示す。この場合では、番号8がブロックR6から取り除
かれ、LRUブロックR0に格納される。次いでブロックR9の左側(R1〜R
8)に以前に格納された全ての番号は、1個右側のブロックにシフトされる。
ットをいくつか示す。16個の3又は4入力マルチプレクサ910のアレイ(明
示のため、そのうちマルチプレクサMUX0、MUX7、MUX8、MUX9、
及びMUX15のみが示されている)は、最低使用頻度レジスタ900の対応す
る16個のブロックに供給される出力を有する。例えば、MUX0の出力は、ブ
ロックR0に格納され、MUX7の出力はブロックR7に格納される等である。
レジスタブロックのそれぞれの値は、対応するマルチプレクサのための入力に接
続されており、かつブロック番号のシフトの際に使用するために両隣のマルチプ
レクサの入力にも接続されている。例えば、R8に格納された番号は、MUX7
、MUX8、及びMUX9の入力に供給される。MUX0及びMUX15のそれ
ぞれは、ただ1つの隣接ブロックしか有しておらず、それらのマルチプレクサの
ための別の入力がLRU及びMRUブロックの選択のためにそれぞれ用いられる
。MUX15は、4入力マルチプレクサとして図示されており、入力915はR
0に格納された番号を供給する。
対応するブロックに格納された値を受け取る。各比較器は、ライン935を介し
てプロセッサ470からの信号を受け取り、従ってプロセッサ470によって送
られた一致する番号を有するレジスタブロックが、論理回路930に真の値を出
力し、一方他の15個の比較器は偽の値を出力する。論理回路930は、マルチ
プレクサへの入力を選択するためにマルチプレクサのそれぞれに接続された一対
の選択ラインを制御し、従ってレジスタブロック番号のシフトを制御する。従っ
て選択ライン939はMUX0を制御し、選択ライン944はMUX7を制御し
、選択ライン949はMUX8を制御し、選択ライン954はMUX9を制御し
、選択ライン959はMUX15を制御する。
シュユニットの1つを現在保持されているCCBに一致するか否かを調べるため
のチェックを行う。一致が見出された場合は、そのプロセッサは、ライン935
を通してそのキャッシュユニットに対応するブロック番号、例えば番号12を有
する信号を送る。比較器920は、そのライン935からの信号とブロック番号
とを比較し、比較器C8はその信号に一致するブロックR8に真の出力を供給し
、他の全ての比較器は偽の値を出力する。論理回路930はプロセッサ470か
らの制御の下で、選択ライン959を用いてMUX15のためライン935から
の入ロクを選択し、MRUブロックR15に番号12を格納する。論理回路93
0も、MUX15を除いて、MUX8及びより高位のマルチプレクサのための対
になった選択ラインを通して信号を送り、各マルチプレクサMUX8及びそれよ
り上位のマルチプレクサへの入力として、1個右側のレジスタブロック(R9−
R15)に格納された値を選択することにより、それらの出力を1ブロック左に
シフトさせる。MUX8の左側のマルチプレクサの出力は一定に選択される。
一致を見出せなかった場合は、プロセッサは、ライン966を通してLRUブロ
ックR6から読み出しを行い、LRUブロックに対応するキャッシュを特定し、
そのキャッシュに格納されたデータをDRAMに書き込む。この場合では番号3
であるR0に格納された番号は、MRUブロックR5における記憶機構のために
MUX15への入力915としてライン959を選択することによって選び出さ
れる。他の15個のマルチプレクサは、それらの各レジスタブロックにそれぞれ
の右隣のレジスタブロックに格納されていた番号を出力する。
は、MRUブロックR5ではなく、LRUブロックR0がそのCCBを維持する
キャッシュユニットに対応する番号の置き換えのために選択される。SRAMか
ら除去するためにLRUブロックR0に置かれるCCBに対応する番号(例えば
ブロックR9に保持されている番号1)は、ライン935を通してプロセッサ4
70に送られ、それは比較器C9によって一致を取られる。プロセッサは、論理
回路930にMUX0への入力935としてライン939を選択することにより
、番号1をR0に入力するように命令する。MUX9への選択ライン954は、
入力としてレジスタブロックR8に保持された番号を選択し、従ってR8からの
番号はR9に格納される。R0〜R9の間の他のレジスタブロックによって保持
された番号は、同様に右側にシフトされ、R9の右側のレジスタブロックにおけ
る番号は一定に維持される。これによって、多くのサイクルにわたって使用され
なくなったCCBが限りのあるキャッシュメモリに維持されることがなくなると
ともに、それらの特定する番号がMRUからLRUブロックにレジスタブロック
を通して動くことになる。
きなコネクションベースのメッセージを処理するために必要な時間を劇的に短縮
させる。プロトコル処理速度は、専用に設計されたプロトコル処理ハードウェア
によって汎用CPUが従来のプロトコルソフトウェアを実行する場合と比較して
非常に高速化され、かつホストのCPUへの割り込みも実質的に低減する。これ
らの利点は、インテリジェントネットワークインタフェースカード(INIC)
を追加することによって既存のホストにもたらすこともできるが、或いはプロト
コル処理ハードウェアをCPUに組み込んでもよい。何れの場合も、プロトコル
処理ハードウェア及びCPUは、インテリジェントに与えられたメッセージを処
理するデバイスを決定し、メッセージの条件に基いてその処理の割り当てを変更
することができる。
タを備えた、本発明の装置の平面図。
ストの転送を含む、ネットワーク通信の処理における図1のホストの情報の流れ
を示す図。
図1のホストにおける情報の流れを示す図、B図は、高速パスによって処理され
る初めのメッセージパケットを受信した、図1のホストにおける情報の流れを示
す図、C図は、高速パスによって処理される順次式のメッセージパケットを受信
した、図4Bのホストにおける情報の流れを示す図、D図は、低速パスに戻すた
めの処理を生じさせる誤りを有するメッセージパケットを受信した、図4Cのホ
ストにおける情報の流れを示す図。
における情報の流れを示す図。
ネットワークインタフェースカード(INIC)の第1の実施形態における情報
の流れを示す図。
の実施形態のためのハードウェアロジックを示す図。
イシーケンサを示す図。
態における情報の流れを示す図。
ールされたコマンドドライバを示す図。
/IPスタックを示す図。
Cに含められた3個1組のパイプライン型マイクロプロセッサを示す図。
B図は図14のパイプライン型マイクロプロセッサの第2フェーズを示す図、C
図は図14のパイプライン型マイクロプロセッサの第3フェーズを示す図。
た複数のキュー記憶ユニットを示す図。
る、キューマネージャを示す図。
の様々な動作段階の1つを示す図、B図はキャッシュメモリの割り当てのために
用いられる最低使用頻度レジスタの様々な動作段階の1つを示す図、C図はキャ
ッシュメモリの割り当てのために用いられる最低使用頻度レジスタの様々な動作
段階の1つを示す図、D図はキャッシュメモリの割り当てのために用いられる最
低使用頻度レジスタの様々な動作段階の1つを示す図。
バイスを示す図。
Claims (52)
- 【請求項1】 ネットワークと、プロセッサとプロトコル層の順次式スタッ
クとを有するホストコンピュータとの間で通信を行うための方法であって、該方
法は、 前記ネットワークから前記ホストコンピュータによって、データと、前記プロ
トコル層のスタックに対応する複数のヘッダとを含むメッセージパケットを受信
する過程であって、前記データは、前記ヘッダのプロトコル処理に従って前記ホ
ストコンピュータの行先に配置するために用いられる、該受信する過程と、 ある時点で前記複数のヘッダをグループとして処理する過程であって、前記処
理する過程は前記ヘッダのグループの要約を作成する、該処理する過程と、 前記要約に基づいて、前記プロトコル層によって前記パケットを処理するか否
かを選択する過程と、 前記ヘッダのグループの前記要約に従って、前記データを前記行先に送出する
過程とを有し、それにより前記プロトコル層のスタックによる前記パケットの順
次式処理が回避されることを特徴とする方法。 - 【請求項2】 前記ヘッダのグループを前記処理する過程は、前記ネットワ
ークから前記ホストコンピュータによる前記メッセージパケットの受信中に行わ
れることを特徴とする請求項1に記載の方法。 - 【請求項3】 前記パケットを含む、コネクションのための通信制御ブロッ
クを作成する過程と、前記データを前記行先に送出するために、前記要約と前記
通信制御ブロックとを整合させる過程とをさらに含むことを特徴とする請求項1
に記載の方法。 - 【請求項4】 前記パケットを含む、コネクションのための通信制御ブロッ
クを作成する過程をさらに含み、前記データを前記行先に送出する過程は、前記
通信制御ブロックによって前記データを誘導する過程を含むことを特徴とする請
求項1に記載の方法。 - 【請求項5】 前記通信制御ブロックを参照することにより、前記ホストコ
ンピュータから前記ネットワークに第2のメッセージを伝送する過程をさらに含
むことを特徴とする請求項8に記載の方法。 - 【請求項6】 ネットワークと、順次式プロトコル処理スタックを有するホ
ストとの間で通信を処理するための方法であって、該方法は、 通信プロセッサを備える装置を配設する過程であって、前記装置は前記ホスト
と前記ネットワークとに接続される、該配設する過程と、 前記ホストによって前記ネットワークからのメッセージフレームを受信する過
程であって、前記フレームはデータと、前記順次式プロトコル処理スタックに対
応する一連のヘッダとを含む、該受信する過程と、 前記装置によってバイトのストリームとして前記一連のヘッダを解析する過程
であって、前記解析する過程は前記データをコピーすることなく前記ヘッダを処
理する過程を含み、それにより前記フレームの要約を作成する、該解析する過程
と、 前記処理する過程に基づいて、前記スタックによって前記パケットを処理する
か、前記要約に従って前記データを行先に送出するかを選択する過程とを有する
ことを特徴とする方法。 - 【請求項7】 前記ホストによって、前記フレームを含むメッセージのため
の通信制御ブロックを作成する過程と、 前記装置に前記通信制御ブロックを格納する過程と、 前記データを前記通信制御ブロックによって指示される行先に誘導する過程と
をさらに含むことを特徴とする請求項6に記載の方法。 - 【請求項8】 前記データを前記行先に誘導する過程の前に、前記要約と前
記通信制御ブロックとを比較する過程をさらに含むことを特徴とする請求項7に
記載の方法。 - 【請求項9】 前記装置を経由して、前記ホストから前記ネットワークに送
信データを伝送する過程をさらに含み、前記伝送する過程は、リモートホストへ
のネットワーク転送のために、前記送信データの前にいくつかのプロトコルプロ
トコルヘッダを同時に付加する過程を含むことを特徴とする請求項6に記載の方
法。 - 【請求項10】 ネットワークと、プロセッサとプロトコル層の順次式スタ
ックとを有するホストコンピュータとの間で通信を行うための方法であって、該
方法は、 前記ネットワークから前記ホストコンピュータによって、多数のパケットを有
するメッセージを受信する過程であって、前記パケットはそれぞれデータ部分と
関連するヘッダのシーケンスとを含み、前記関連するヘッダのシーケンスは、前
記プロトコル層の順次式スタックに対応する情報を含み、かつ前記データのため
の前記ホストコンピュータ内の上位層の行先を指示する、該受信する過程と、 前記関連するヘッダを用いることなく、かつ任意のホストCUPへの割り込み
を発生することなく、複数の前記データ部分を前記行先に送出する過程とを有す
ることを特徴とする方法。 - 【請求項11】 前記データ部分を前記行先に送出する過程の前に、前記プ
ロトコル層のスタックによって前記パケットを処理するか否かを選択する過程を
さらに含むことを特徴とする請求項10に記載の方法。 - 【請求項12】 前記ホストにプロトコル処理装置を配設する過程と、 前記データ部分を、前記ヘッダを用いることなく前記行先に送出する過程の前
に、前記装置を用いて前記ヘッダの要約を作成する過程とをさらに含むことを特
徴とする請求項10に記載の方法。 - 【請求項13】 前記ホストから前記ネットワークにデータファイルを伝送
する過程をさらに含み、前記伝送する過程は、前記データファイルを一連のデー
タユニットに分割する過程と、前記データユニットの前に前記ヘッダを付加し、
それにより一連のネットワークフレームを作成する過程と、任意のホストCUP
に割り込みを発生することなく、前記ネットワークフレームを前記ネットワーク
に配置する過程とを含むことを特徴とする請求項10に記載の方法。 - 【請求項14】 ホストコンピュータとネットワークとの間で通信を行うた
めの方法であって、前記ホストコンピュータはCPUと、記憶ユニットと、プロ
トコル層の順次式スタックとを備え、該方法は、 前記ネットワークと前記ホストコンピュータとに接続される装置を配設する過
程であって、前記装置はプロセッサを有する、該配設する過程と、 前記装置によって前記ネットワークから第1のメッセージを受信する過程と、 前記第1のメッセージを処理する過程であって、該処理する過程は前記第1の
メッセージのための通信制御ブロックを作成する過程を含む、該処理する過程と
、 前記装置によって前記ネットワークから第2のメッセージを受信する過程であ
って、前記第2のメッセージはデータとヘッダとを含み、前記ヘッダは一連のプ
ロトコル層ヘッダを含む、該受信する過程と、 前記装置によって前記ヘッダを処理する過程であって、該処理する過程は、前
記ヘッダの前記処理中に、前記データをコピーするとなく、前記ヘッダの要約を
生成する過程を含む、該処理する過程と、 前記装置によって前記データを、前記プロトコル層の上位層に適した形で前記
上位層に送出する過程であって、前記送出する過程は前記通信制御ブロックを用
いて前記送出する過程を誘導する過程を含む、該送出する過程とを有することを
特徴とする方法。 - 【請求項15】 前記装置によって前記第1のメッセージと前記第2のメッ
セージとに関連する第3のメッセージを受信する過程と、前記装置から前記記憶
ユニットに前記通信制御ブロックを渡し、それにより前記第3のメッセージを処
理することに関する制御を前記CPUに渡す過程とをさらに含むことを特徴とす
る請求項14に記載の方法。 - 【請求項16】 前記データを前記上位層に送出する過程の前に、前記要約
と前記通信制御ブロックとを整合させる過程をさらに含むことを特徴とする請求
項14に記載の方法。 - 【請求項17】 前記ホストから前記ネットワークに第3のメッセージ伝送
する過程をさらに含み、前記伝送する過程は、前記通信制御ブロックを参照し、
ホストソースから取得されるデータの前に送信ヘッダを付加することにより前記
装置を経由して前記第3のメッセージを送出する過程を含み、前記送信ヘッダは
複数のプロトコル層ヘッダを含むことを特徴とする請求項14に記載の方法。 - 【請求項18】 ローカルホストと、ネットワークによって接続されるリモ
ートホストとの間で通信を行うための方法であって、前記ローカルホストはプロ
トコル処理スタックと、関連するプロトコル処理装置とを有しており、該方法は
、 前記プロトコル処理スタックにより、前記ローカルホストと前記リモートホス
トとの間のコネクションを定義する通信制御ブロックを作成する過程と、 前記通信制御ブロックを前記装置に渡し、それにより前記コネクションに関連
し、前記ネットワークと前記ローカルホストとの間で転送されるメッセージパケ
ットを処理することに関する制御を渡す過程であって、前記パケットは、前記プ
ロトコル処理スタックの代わりに、前記装置によって処理されるようになること
を特徴とする方法。 - 【請求項19】 前記通信制御ブロックを前記ローカルホストに戻す過程を
さらに含み、前記ネットワークと前記ローカルホストとの間で転送され、前記コ
ネクションに関連する第2のメッセージパケットが全般に、前記プロトコル処理
スタックによって処理されるようになることを特徴とする請求項18に記載の方
法。 - 【請求項20】 前記装置によって、前記ネットワークからメッセージフレ
ームを受信する過程と、 前記装置によって、前記メッセージフレームの要約を作成し、それにより前記
メッセージフレームの要約を生成する過程と、 前記要約と前記通信制御ブロックとを比較する過程とをさらに含むことを特徴
とする請求項18に記載の方法。 - 【請求項21】 前記装置によって、前記ネットワークにメッセージフレー
ムを伝送する過程をさらに含み、前記伝送する過程は、前記通信制御ブロックに
基づいてヘッダを形成する過程と、前記メッセージフレームの前に前記ヘッダを
付加する過程とを含むことを特徴とする請求項18に記載の方法。 - 【請求項22】 プロセッサと、メモリと、プロトコル層の順次式スタック
とを有するホストコンピュータによってネットワーク通信を行うための方法であ
って、該方法は、 前記ネットワークから前記ホストによって、データと、前記プロトコル層のス
タックに関連する複数のヘッダとを含むパケットを受信する過程と、 ハードウエアロジックシーケンサで前記パケットを分類する過程であって、該
分類する過程は、前記ヘッダを分類し、前記パケットの要約を作成する過程を含
む、該分類する過程と、 前記要約に基づいて、前記パケットを前記プロトコル層のスタックに送出する
か、前記データを前記行先に送出することにより前記プロトコル層のスタックを
バイパスするかを選択する過程とを有することを特徴とする方法。 - 【請求項23】 前記プロトコル層のスタックに前記パケットを送出する過
程と、 前記プロトコル層のスタックを用いて前記パケットを処理し、それにより前記
メッセージのためのコンテキストを作成する過程と、 前記ネットワークから前記ホストによって、付加データと付加ヘッダとを含む
関連するパケットを受信する過程と、 前記プロトコル層のスタックによって前記パケットを処理することなく、前記
関連するパケットを前記行先に送出するために前記コンテキストを用いる過程と
をさらに含むことを特徴とする請求項22に記載の方法。 - 【請求項24】 前記パケットを含むメッセージのためのコンテキストを策
作成する過程をさらに含み、前記コンテキストは前記ホストとリモートホストと
の間のコネクションを定義し、前記プロトコル層のスタックに前記パケットを送
出するか、前記プロトコル層のスタックをバイパスするかの選択は、前記要約を
前記コンテキストと比較する過程を含むことを特徴とする請求項22に記載の方
法。 - 【請求項25】 前記行先に適した形で前記データを前記行先に送出するこ
とにより、前記プロトコル層のスタックをバイパスする過程をさらに含むことを
特徴とする請求項22に記載の方法。 - 【請求項26】 ネットワークを経由してリモートホストに接続することが
できるローカルホストで用いるための装置であって、前記ローカルホストは、前
記ローカルホストのアプリケーションと前記リモートホストのアプリケーション
との間のコネクションコンテキストを定義するプロトコル処理層のスタックを動
作させるCPUを含み、該装置は、 前記CPUと、前記ネットワークとに接続され、前記コンテキストを参照する
ことにより、前記プロトコル処理層によってネットワークメッセージを処理する
か、前記プロトコル処理層を回避し、前記ネットワークと前記ローカルホストア
プリケーションとの間の前記メッセージに含まれるデータを転送するために前記
コンテキストを用いるかを選択するために構成されるプロセッサを含む通信処理
機構を備えることを特徴とする装置。 - 【請求項27】 前記通信処理機構は、前記プロセッサに接続され、前記ネ
ットワークから受信されるメッセージパケットを検査するための構成される受信
シーケンサを備え、前記メッセージパケットは前記プロトコル層のスタックに対
応する制御情報を含むことを特徴とする請求項26に記載の装置。 - 【請求項28】 前記通信処理機構は、前記プロセッサに接続され、前記ネ
ットワークから受信されるメッセージパケットの要約を生成するために構成され
る受信シーケンサを備え、前記メッセージパケットは、前記プロトコル層のスタ
ックに対応する制御情報を含み、前記プロセッサは前記要約を前記コンテキスト
と比較するように構成されていることを特徴とする請求項26に記載の装置。 - 【請求項29】 前記プロセッサは、前記コンテキストに対応するヘッダを
作成し、前記プロトコル処理層のいくつかに対応する制御情報を含み、前記ホス
トから前記リモートヘッダに前記メッセージを伝送するために前記データの前に
前記ヘッダを付加するように構成されることを特徴とする請求項26に記載の装
置。 - 【請求項30】 前記通信処理機構は、前記コンテキストに基づいて、前記
データに付随するヘッダを用いることなく、前記通信処理機構から前記ホストア
プリケーションに前記データを送出するためのダイレクトメモリアクセスユニッ
トを備えることを特徴とする請求項26に記載の装置。 - 【請求項31】 前記プロセッサは複数のマイクロプロセッサを備え、前記
マイクロプロセッサのうちの少なくとも1つは主に、前記ネットワークから前記
ホストによって受信されるメッセージを処理するように構成され、前記マイクロ
プロセッサのうちの第2のマイクロプロセッサは前記ホストから前記ネットワー
クに伝送されるメッセージを処理するように構成されることを特徴とする請求項
27に記載の装置。 - 【請求項32】 前記マイクロプロセッサは、フェーズをローテーションす
る際に共有されるハードウエア機能を利用することを特徴とする請求項31に記
載の装置。 - 【請求項33】 前記通信処理機構は、複数のキュー記憶ユニットにおいて
情報をキューに入れるために構成されるキューマネージャを備え、前記キュー記
憶ユニットのうちの少なくとも1つはSRAMおよびDRAMを含むことを特徴
とする請求項26に記載の装置。 - 【請求項34】 ネットワークに接続することができるホストコンピュータ
のための通信装置であって、前記ホストコンピュータはプロトコル処理層のスタ
ックを有するCPUを備え、前記プロトコル処理層のスタックは、ネットワーク
通信を処理し、前記ホスト内の行先とリモートホスト内の発信元との間のコネク
ションコンテキストを定義するためにCUPによって動作させることができ、前
該装置は、 前記ネットワークに接続され、前記装置によって前記ネットワークから受信さ
れるメッセージパケットを検査するための構成される受信シーケンサであって、
前記メッセージパケットはデータと、前記プロトコル層のいくつかの関する制御
情報を有するヘッダとを含み、前記受信シーケンサは前記装置内に記憶するため
の前記パケットの要約を作成するように構成される、該受信シーケンサと、 前記受信シーケンサと前記ホストとに接続される通信プロセッサであって、該
通信プロセッサは前記要約と前記通信制御ブロックとを比較し、前記比較に基づ
いて、プロトコル処理のために前記スタックに前記メッセージパケットを送出す
るか、前記スタックによって前記メッセージパケットを処理することなく、前記
行先に直接に前記データを送出するかを選択するように構成される、該通信プロ
セッサとを備えることを特徴とする通信装置。 - 【請求項35】 前記通信プロセッサは、フェーズをローテーションする際
に動作する複数のパイプライン処理されるマイクロプロセッサを備え、前記マイ
クロプロセッサのうちの少なくとも1つは前記ネットワークから前記ホストによ
って受信されるメッセージを処理するために構成され、前記マイクロプロセッサ
のうちの少なくとも1つは前記ホストから前記ネットワークに伝送されるメッセ
ージを処理するために構成されることを特徴とする請求項34に記載の装置。 - 【請求項36】 前記通信プロセッサ、および前記受信シーケンサのための
情報を、複数の記憶キューに入れるために構成される論理回路を含むキューマネ
ージャをさらに備えることを特徴とする請求項9に記載の装置。 - 【請求項37】 前記キューはSRAMおよびDRAMの両方を含むことを
特徴とする請求項36に記載の装置。 - 【請求項38】 キャッシュメモリと、複数のコネクションコンテキストと
をさらに備え、各前記コネクションコンテキストのハッシュが、前記要約を比較
するための前記キャッシュメモリに格納されていることを特徴とする請求項34
に記載の装置。 - 【請求項39】 前記コネクションコンテキストのうちのいずれが前記キャ
ッシュメモリに格納されているかを判定するために、最も近い時間に用いられた
レジスタをさらに備えることを特徴とする請求項38に記載の装置。 - 【請求項40】 前記受信シーケンサは、前記メッセージパケットに含まれ
るヘッダを処理し、前記プロトコル処理層のスタックに概ね対応する制御情報を
有するための一連のハードウエア論理ユニットを備えることを特徴とする請求項
34に記載の装置。 - 【請求項41】 前記通信プロセッサは、前記コンテキストに基づいて、前
記ヘッダを用いることなく、前記データを前記ホスト行先に送出するようにダイ
レクトメモリアクセスコントローラに命令することを特徴とする請求項34に記
載の装置。 - 【請求項42】 前記通信プロセッサは、第2のメッセージを伝送し、それ
により、送信データの前に前記コンテキストから導出されるヘッダを付加し、前
記ホスト行先から前記ネットワークに前記送信データを転送するように構成され
ることを特徴とする請求項34に記載の装置。 - 【請求項43】 CPUを有するローカルホストとリモートホストとの間で
通信を行うための装置であって、前記ローカルホストと前記リモートホストとは
ネットワークによって接続され、該装置は、 前記ネットワークと前記ローカルホストとに接続される通信処理機構であって
、前記通信処理機構はデータパケットを処理し、前記パケットの要約を生成する
ために前記CPUによって動作させることができるハードウエアロジックを含む
、該通信処理機構と、 前記ローカルホスト内に配置され、通信制御ブロックを作成し、前記通信制御
ブロックを前記通信処理機構に渡すためにCPUによって動作させることができ
るプロトコル処理スタックであって、前記通信制御ブロックは、前記ローカルホ
ストと前記リモートホストとの間のコネクションを定義する、該プロトコル処理
スタックとを備え、 前記通信処理機構と前記プロトコル処理スタックとは、前記通信処理機構が前
記通信制御ブロックを保持しているときに、前記コネクションに対応し、前記ネ
ットワークと前記ローカルホストとの間で転送されるメッセージが、前記CPU
の代わりに前記通信処理機構によって処理されるように構成されることを特徴と
する装置。 - 【請求項44】 前記通信処理機構は、複数のネットワークコネクションを
有することを特徴とする請求項43に記載の装置。 - 【請求項45】 ネットワークと、プロトコル層のスタックを有するホスト
との間の通信を処理するための装置であって、該装置は、 前記ネットワークから受信されるメッセージパケットを分類するための複数の
論理ユニットであって、前記パケットは、データとヘッダとを含み、ビットのス
トリームとして前記論理ユニットを通って流れ、前記論理ユニットは前記ストリ
ームから前記パケットの要約を作成する、該論理ユニットと、 前記パケットと、前記要約とを格納するためのメモリと、 前記要約とコネクションコンテキストとを整合させ、前記コンテキストによっ
て指示される前記ホスト内の行先に、前記プロトコル情報を用いることなく、前
記パケットを移動させるためのマイクロプロセッサとを備えることを特徴とする
装置。 - 【請求項46】 前記マイクロプロセッサは複数のパイプライン処理される
プロセッサを含み、前記プロセッサのうちの1つは、ネットワークメッセージを
伝送するために構成され、前記プロセッサのうちの別のプロセッサはネットワー
クメッセージを受信するために構成されることを特徴とする請求項45に記載の
装置。 - 【請求項47】 前記コネクションコンテキストと整合しない第2の要約を
有する第2のパケットを処理するために、プロトコル処理層のスタックを動作さ
せるCPUをさらに備えることを特徴とする請求項45に記載の装置。 - 【請求項48】 ネットワークとホストコンピュータとの間でメッセージを
転送するための装置であって、前記メッセージは、プロトコル層のシーケンスに
対応する一連のヘッダを含み、前記装置は、ビットのストリームとして前記一連
のヘッダを処理し、前記メッセージの状態を生成するために配列される一連のシ
ーケンサを含み、前記シーケンサのうちの少なくとも1つは、前記プロトコル層
の上位層に対応するヘッダを分類するためのロジックを含んでいることを特徴と
する装置。 - 【請求項49】 前記シーケンサに接続され、前記ホストの行先に、前記ヘ
ッダを用いることなく、前記メッセージを送出するために前記状態を用いること
ができる通信プロセッサをさらに備えることを特徴とする請求項48に記載の装
置。 - 【請求項50】 ネットワークとホストとの間でメッセージを伝送するため
の装置であって、該装置は、 複数のキューを定義する可変長のFIFO回路のアレイと、 前記ネットワークから受信された前記メッセージのフレームの状態を生成し、
前記キューの少なくとも1つに前記状態を格納するために構成される受信シーケ
ンサと、 フェーズを変更する際に一組の論理ユニットを動作させる複数のパイプライン
処理されるマイクロプロセッサであって、前記マイクロプロセッサのうちの第1
のマイクロプロセッサは前記ネットワークから受信される前記メッセージを処理
するように構成され、前記マイクロプロセッサのうちの第2のマイクロプロセッ
サは前記ネットワークに伝送される前記メッセージを処理するように構成され、
前記プロセッサは、前記メッセージの転送を加速するために、前記シーケンサと
ともに通信制御ブロックを用いる、該マイクロプロセッサとを備えることを特徴
とする装置。 - 【請求項51】 前記キューの少なくとも1つは、DRAMおよびSRAM
記憶ユニットを含むことを特徴とする請求項50に記載の装置。 - 【請求項52】 ネットワークと、プロセッサとプロトコル層の順次式スタ
ックとを有するホストコンピュータとの間で通信を行うための装置であって、該
装置は、 前記ネットワークから前記ホストコンピュータによって、データと、前記プロ
トコル層のスタックに対応する複数のヘッダとを含むメッセージパケットを受信
するための手段であって、前記データは、前記ヘッダのプロトコル処理に従って
前記ホストコンピュータの行先に配置するために用いられる、該受信するための
手段と、 前記ヘッダのグループの要約を作成し、前記複数のヘッダを処理するための手
段と、 前記ヘッダのグループの前記要約に従って前記行先に前記データを送出するた
め手段とを備え、それにより前記プロトコル層のスタックによる前記パケットの
順次式処理が回避されるようになることを特徴とする装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/141,713 | 1998-08-28 | ||
US09/141,713 US6389479B1 (en) | 1997-10-14 | 1998-08-28 | Intelligent network interface device and system for accelerated communication |
PCT/US1998/024943 WO2000013091A1 (en) | 1998-08-28 | 1998-11-20 | Intelligent network interface device and system for accelerating communication |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002524005A true JP2002524005A (ja) | 2002-07-30 |
JP2002524005A5 JP2002524005A5 (ja) | 2006-01-19 |
JP4264866B2 JP4264866B2 (ja) | 2009-05-20 |
Family
ID=22496891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000568012A Expired - Fee Related JP4264866B2 (ja) | 1998-08-28 | 1998-11-20 | 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム |
Country Status (8)
Country | Link |
---|---|
US (1) | US6389479B1 (ja) |
EP (1) | EP1116118B1 (ja) |
JP (1) | JP4264866B2 (ja) |
KR (1) | KR100437146B1 (ja) |
AU (1) | AU1533399A (ja) |
CA (1) | CA2341211C (ja) |
DE (1) | DE1116118T1 (ja) |
WO (1) | WO2000013091A1 (ja) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005085284A (ja) * | 2003-09-10 | 2005-03-31 | Microsoft Corp | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
JP2006074726A (ja) * | 2004-08-03 | 2006-03-16 | Fujitsu Ltd | 断片パケット処理方法及びこれを用いるパケット転送装置 |
JP2006526969A (ja) * | 2003-06-05 | 2006-11-24 | エヌヴィディア コーポレイション | オフロードユニットを使用したtcp接続のためのデータ処理 |
JP2008148133A (ja) * | 2006-12-12 | 2008-06-26 | Canon Inc | 通信装置、その制御方法及びプログラム |
US7420931B2 (en) | 2003-06-05 | 2008-09-02 | Nvidia Corporation | Using TCP/IP offload to accelerate packet filtering |
JP2008259238A (ja) * | 2001-04-24 | 2008-10-23 | Nvidia Corp | ギガビット・イーサネット・アダプタ |
JP2008305394A (ja) * | 2007-05-18 | 2008-12-18 | Nvidia Corp | ロードバランス型ネットワーク環境におけるインテリジェントフェイルオーバー |
JP2009151498A (ja) * | 2007-12-19 | 2009-07-09 | Canon Inc | ネットワークタイマ管理方法及び装置 |
US7646716B2 (en) | 2002-12-20 | 2010-01-12 | Intel Corporation | Packet processing in a wireless network |
JP2010519785A (ja) * | 2006-11-08 | 2010-06-03 | スタンダード マイクロシステムズ コーポレーション | ネットワーク・トラフィック・コントローラ |
US7788391B2 (en) | 2004-03-31 | 2010-08-31 | Intel Corporation | Using a threshold value to control mid-interrupt polling |
JP2011146035A (ja) * | 2009-11-10 | 2011-07-28 | Apple Inc | 周辺コンポーネントのためのコマンドキュー |
JP4827933B2 (ja) * | 2006-03-13 | 2011-11-30 | トムソン ライセンシング | データパケットを送信する方法およびデバイス |
KR20190030915A (ko) * | 2017-09-15 | 2019-03-25 | 단국대학교 산학협력단 | 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 |
Families Citing this family (184)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US6757746B2 (en) | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US6427173B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6427171B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US7167927B2 (en) | 1997-10-14 | 2007-01-23 | Alacritech, Inc. | TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism |
US6470415B1 (en) | 1999-10-13 | 2002-10-22 | Alacritech, Inc. | Queue system involving SRAM head, SRAM tail and DRAM body |
US7133940B2 (en) * | 1997-10-14 | 2006-11-07 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US7284070B2 (en) | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US7185266B2 (en) | 2003-02-12 | 2007-02-27 | Alacritech, Inc. | Network interface device for error detection using partial CRCS of variable length message portions |
US8621101B1 (en) | 2000-09-29 | 2013-12-31 | Alacritech, Inc. | Intelligent network storage interface device |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US7089326B2 (en) * | 1997-10-14 | 2006-08-08 | Alacritech, Inc. | Fast-path processing for receiving data on TCP connection offload devices |
US6591302B2 (en) | 1997-10-14 | 2003-07-08 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US6687758B2 (en) * | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6697868B2 (en) | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US8539112B2 (en) | 1997-10-14 | 2013-09-17 | Alacritech, Inc. | TCP/IP offload device |
US6765901B1 (en) | 1998-06-11 | 2004-07-20 | Nvidia Corporation | TCP/IP/PPP modem |
US6904519B2 (en) * | 1998-06-12 | 2005-06-07 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
US6687754B1 (en) * | 1998-08-27 | 2004-02-03 | Intel Corporation | Method of detecting a device in a network |
US7664883B2 (en) * | 1998-08-28 | 2010-02-16 | Alacritech, Inc. | Network interface device that fast-path processes solicited session layer read commands |
FI982224A (fi) * | 1998-10-14 | 2000-04-15 | Nokia Networks Oy | Sanomien valvonta tietoliikenneverkon verkkoelementissä |
US7430171B2 (en) | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US8225002B2 (en) * | 1999-01-22 | 2012-07-17 | Network Disk, Inc. | Data storage and data sharing in a network of heterogeneous computers |
US6526446B1 (en) * | 1999-04-27 | 2003-02-25 | 3Com Corporation | Hardware only transmission control protocol segmentation for a high performance network interface card |
WO2001013583A2 (en) * | 1999-08-16 | 2001-02-22 | Iready Corporation | Internet jack |
JP5220974B2 (ja) * | 1999-10-14 | 2013-06-26 | ブルアーク ユーケー リミテッド | ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法 |
US6697872B1 (en) * | 1999-10-15 | 2004-02-24 | Cisco Technology | Distributed packet processing using encapsulation and decapsulation chains |
US6757291B1 (en) | 2000-02-10 | 2004-06-29 | Simpletech, Inc. | System for bypassing a server to achieve higher throughput between data network and data storage system |
US7191240B1 (en) * | 2000-02-14 | 2007-03-13 | International Business Machines Corporation | Generic network protocol layer with supporting data structure |
US6760781B1 (en) * | 2000-02-16 | 2004-07-06 | 3Com Corporation | Intelligent packet transmission engine |
US6911652B2 (en) * | 2000-03-22 | 2005-06-28 | Jonathan A. Walkenstein | Low light imaging device |
WO2001075877A1 (en) * | 2000-03-31 | 2001-10-11 | Doug Carson & Associates, Inc. | Sequencing data blocks to provide hidden data on a recording medium |
US8024481B2 (en) * | 2000-04-17 | 2011-09-20 | Circadence Corporation | System and method for reducing traffic and congestion on distributed interactive simulation networks |
US8195823B2 (en) * | 2000-04-17 | 2012-06-05 | Circadence Corporation | Dynamic network link acceleration |
US8510468B2 (en) | 2000-04-17 | 2013-08-13 | Ciradence Corporation | Route aware network link acceleration |
US20110128972A1 (en) | 2000-04-17 | 2011-06-02 | Randy Thornton | Peer to peer dynamic network link acceleration |
US8996705B2 (en) | 2000-04-17 | 2015-03-31 | Circadence Corporation | Optimization of enhanced network links |
US7155539B2 (en) | 2000-04-17 | 2006-12-26 | Circadence Corporation | Conductor gateway buffer prioritization |
US8065399B2 (en) | 2000-04-17 | 2011-11-22 | Circadence Corporation | Automated network infrastructure test and diagnostic system and method therefor |
US8898340B2 (en) | 2000-04-17 | 2014-11-25 | Circadence Corporation | Dynamic network link acceleration for network including wireless communication devices |
US7236489B1 (en) | 2000-04-27 | 2007-06-26 | Mosaid Technologies, Inc. | Port packet queuing |
US6571291B1 (en) * | 2000-05-01 | 2003-05-27 | Advanced Micro Devices, Inc. | Apparatus and method for validating and updating an IP checksum in a network switching system |
US7290028B2 (en) * | 2000-08-24 | 2007-10-30 | International Business Machines Corporation | Methods, systems and computer program products for providing transactional quality of service |
US6886004B2 (en) * | 2000-08-24 | 2005-04-26 | Red Hat, Inc. | Method and apparatus for atomic file look-up |
US7089294B1 (en) | 2000-08-24 | 2006-08-08 | International Business Machines Corporation | Methods, systems and computer program products for server based type of service classification of a communication request |
CN1276372C (zh) | 2000-09-29 | 2006-09-20 | 艾拉克瑞技术公司 | 智能网络存储接口系统和装置 |
US8019901B2 (en) * | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
US6720074B2 (en) * | 2000-10-26 | 2004-04-13 | Inframat Corporation | Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof |
US7039717B2 (en) * | 2000-11-10 | 2006-05-02 | Nvidia Corporation | Internet modem streaming socket method |
US7418522B2 (en) * | 2000-12-21 | 2008-08-26 | Noatak Software Llc | Method and system for communicating an information packet through multiple networks |
US7287090B1 (en) * | 2000-12-21 | 2007-10-23 | Noatak Software, Llc | Method and system for identifying a computing device in response to a request packet |
US7512686B2 (en) * | 2000-12-21 | 2009-03-31 | Berg Mitchell T | Method and system for establishing a data structure of a connection with a client |
US7546369B2 (en) * | 2000-12-21 | 2009-06-09 | Berg Mitchell T | Method and system for communicating a request packet in response to a state |
US7421505B2 (en) * | 2000-12-21 | 2008-09-02 | Noatak Software Llc | Method and system for executing protocol stack instructions to form a packet for causing a computing device to perform an operation |
US20020116397A1 (en) | 2000-12-21 | 2002-08-22 | Berg Mitchell T. | Method and system for communicating an information packet through multiple router devices |
US7379475B2 (en) * | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
US7149817B2 (en) | 2001-02-15 | 2006-12-12 | Neteffect, Inc. | Infiniband TM work queue to TCP/IP translation |
WO2002084499A1 (en) * | 2001-04-11 | 2002-10-24 | Chelsio Communications, Inc. | Multi-purpose switching network interface controller |
US8051212B2 (en) * | 2001-04-11 | 2011-11-01 | Mellanox Technologies Ltd. | Network interface adapter with shared data send resources |
US7274706B1 (en) | 2001-04-24 | 2007-09-25 | Syrus Ziai | Methods and systems for processing network data |
US8218555B2 (en) * | 2001-04-24 | 2012-07-10 | Nvidia Corporation | Gigabit ethernet adapter |
US7203722B2 (en) * | 2001-05-24 | 2007-04-10 | International Business Machines Corporation | Optimistic processing of network frames to reduce latency |
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
US6832260B2 (en) * | 2001-07-26 | 2004-12-14 | International Business Machines Corporation | Methods, systems and computer program products for kernel based transaction processing |
US7002979B1 (en) * | 2001-08-10 | 2006-02-21 | Utstarcom, Inc. | Voice data packet processing system |
US20030037154A1 (en) * | 2001-08-16 | 2003-02-20 | Poggio Andrew A. | Protocol processor |
WO2003017600A1 (en) * | 2001-08-18 | 2003-02-27 | Smallbig Technology Inc. | An apparatus connected multi ip broadband line and fallback method thereof |
US6976205B1 (en) | 2001-09-21 | 2005-12-13 | Syrus Ziai | Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources |
US7240123B2 (en) * | 2001-12-10 | 2007-07-03 | Nortel Networks Limited | Distributed routing core |
US20030118022A1 (en) * | 2001-12-21 | 2003-06-26 | Chip Engines | Reconfigurable data packet header processor |
US20030121835A1 (en) * | 2001-12-31 | 2003-07-03 | Peter Quartararo | Apparatus for and method of sieving biocompatible adsorbent beaded polymers |
US7535913B2 (en) * | 2002-03-06 | 2009-05-19 | Nvidia Corporation | Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols |
US7305007B2 (en) * | 2002-03-07 | 2007-12-04 | Broadcom Corporation | Receiver-aided set-up request routing |
US7496689B2 (en) * | 2002-04-22 | 2009-02-24 | Alacritech, Inc. | TCP/IP offload device |
US7543087B2 (en) * | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US20070253430A1 (en) * | 2002-04-23 | 2007-11-01 | Minami John S | Gigabit Ethernet Adapter |
US7181531B2 (en) * | 2002-04-30 | 2007-02-20 | Microsoft Corporation | Method to synchronize and upload an offloaded network stack connection with a network stack |
TW573408B (en) * | 2002-05-07 | 2004-01-21 | Via Tech Inc | Host channel adapter and relevant method |
US7162564B2 (en) * | 2002-07-09 | 2007-01-09 | Intel Corporation | Configurable multi-port multi-protocol network interface to support packet processing |
US20060155885A1 (en) * | 2002-07-19 | 2006-07-13 | Joachim Roos | Processor and a method in the processor, the processor comprising a programmable pipeline and at least one interface engine |
US7403542B1 (en) | 2002-07-19 | 2008-07-22 | Qlogic, Corporation | Method and system for processing network data packets |
WO2004010288A1 (en) * | 2002-07-19 | 2004-01-29 | Xelerated Ab | Method and apparatus for pipelined processing of data packets |
US7154886B2 (en) * | 2002-07-22 | 2006-12-26 | Qlogic Corporation | Method and system for primary blade selection in a multi-module fiber channel switch |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US7934021B2 (en) | 2002-08-29 | 2011-04-26 | Broadcom Corporation | System and method for network interfacing |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US8180928B2 (en) | 2002-08-30 | 2012-05-15 | Broadcom Corporation | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney |
WO2004021626A2 (en) | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for handling out-of-order frames |
US7313623B2 (en) * | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US7397768B1 (en) | 2002-09-11 | 2008-07-08 | Qlogic, Corporation | Zone management in a multi-module fibre channel switch |
US7191241B2 (en) * | 2002-09-27 | 2007-03-13 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7337241B2 (en) * | 2002-09-27 | 2008-02-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US8041735B1 (en) | 2002-11-01 | 2011-10-18 | Bluearc Uk Limited | Distributed file system and method |
US20040088262A1 (en) * | 2002-11-06 | 2004-05-06 | Alacritech, Inc. | Enabling an enhanced function of an electronic device |
US7319669B1 (en) | 2002-11-22 | 2008-01-15 | Qlogic, Corporation | Method and system for controlling packet flow in networks |
US7596634B2 (en) * | 2002-12-12 | 2009-09-29 | Millind Mittal | Networked application request servicing offloaded from host |
US7254696B2 (en) * | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
US7324547B1 (en) | 2002-12-13 | 2008-01-29 | Nvidia Corporation | Internet protocol (IP) router residing in a processor chipset |
US7362772B1 (en) | 2002-12-13 | 2008-04-22 | Nvidia Corporation | Network processing pipeline chipset for routing and host packet processing |
US7594002B1 (en) * | 2003-02-14 | 2009-09-22 | Istor Networks, Inc. | Hardware-accelerated high availability integrated networked storage system |
WO2004077211A2 (en) * | 2003-02-28 | 2004-09-10 | Tilmon Systems Ltd. | Method and apparatus for increasing file server performance by offloading data path processing |
US7420991B2 (en) * | 2003-07-15 | 2008-09-02 | Qlogic, Corporation | TCP time stamp processing in hardware based TCP offload |
US7447224B2 (en) * | 2003-07-21 | 2008-11-04 | Qlogic, Corporation | Method and system for routing fibre channel frames |
US7512067B2 (en) | 2003-07-21 | 2009-03-31 | Qlogic, Corporation | Method and system for congestion control based on optimum bandwidth allocation in a fibre channel switch |
US7430175B2 (en) * | 2003-07-21 | 2008-09-30 | Qlogic, Corporation | Method and system for managing traffic in fibre channel systems |
US7420982B2 (en) * | 2003-07-21 | 2008-09-02 | Qlogic, Corporation | Method and system for keeping a fibre channel arbitrated loop open during frame gaps |
US7646767B2 (en) * | 2003-07-21 | 2010-01-12 | Qlogic, Corporation | Method and system for programmable data dependant network routing |
US7287092B2 (en) | 2003-08-11 | 2007-10-23 | Sharp Colin C | Generating a hash for a TCP/IP offload device |
US20050066045A1 (en) * | 2003-09-03 | 2005-03-24 | Johnson Neil James | Integrated network interface supporting multiple data transfer protocols |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US8549170B2 (en) * | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US7899913B2 (en) * | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US7249306B2 (en) * | 2004-02-20 | 2007-07-24 | Nvidia Corporation | System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity |
US7206872B2 (en) * | 2004-02-20 | 2007-04-17 | Nvidia Corporation | System and method for insertion of markers into a data stream |
US20050220128A1 (en) * | 2004-04-05 | 2005-10-06 | Ammasso, Inc. | System and method for work request queuing for intelligent adapter |
US20060067346A1 (en) * | 2004-04-05 | 2006-03-30 | Ammasso, Inc. | System and method for placement of RDMA payload into application memory of a processor system |
US20050223118A1 (en) * | 2004-04-05 | 2005-10-06 | Ammasso, Inc. | System and method for placement of sharing physical buffer lists in RDMA communication |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US7669190B2 (en) | 2004-05-18 | 2010-02-23 | Qlogic, Corporation | Method and system for efficiently recording processor events in host bus adapters |
US7945705B1 (en) | 2004-05-25 | 2011-05-17 | Chelsio Communications, Inc. | Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages |
US7782902B2 (en) * | 2004-07-14 | 2010-08-24 | Audiocodes, Inc. | Apparatus and method for mapping overlapping internet protocol addresses in layer two tunneling protocols |
US7761608B2 (en) * | 2004-09-01 | 2010-07-20 | Qlogic, Corporation | Method and system for processing markers, data integrity fields and digests |
US7522623B2 (en) * | 2004-09-01 | 2009-04-21 | Qlogic, Corporation | Method and system for efficiently using buffer space |
US7676611B2 (en) * | 2004-10-01 | 2010-03-09 | Qlogic, Corporation | Method and system for processing out of orders frames |
US8248939B1 (en) | 2004-10-08 | 2012-08-21 | Alacritech, Inc. | Transferring control of TCP connections between hierarchy of processing mechanisms |
US7957379B2 (en) * | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US8250231B2 (en) | 2004-12-22 | 2012-08-21 | Marvell International Ltd. | Method for reducing buffer capacity in a pipeline processor |
US7568056B2 (en) * | 2005-03-28 | 2009-07-28 | Nvidia Corporation | Host bus adapter that interfaces with host computer bus to multiple types of storage devices |
US8458280B2 (en) * | 2005-04-08 | 2013-06-04 | Intel-Ne, Inc. | Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations |
US7739424B2 (en) * | 2005-04-18 | 2010-06-15 | Integrated Device Technology, Inc. | Packet processing switch and methods of operation thereof |
US20060248374A1 (en) * | 2005-04-18 | 2006-11-02 | Macadam A D S | Packet Processing Switch and Methods of Operation Thereof |
US7454667B2 (en) * | 2005-04-26 | 2008-11-18 | Intel Corporation | Techniques to provide information validation and transfer |
US7957363B2 (en) * | 2005-05-26 | 2011-06-07 | International Business Machines Corporation | System, method, and service for dynamically selecting an optimum message pathway |
US7774402B2 (en) * | 2005-06-29 | 2010-08-10 | Visa U.S.A. | Adaptive gateway for switching transactions and data on unreliable networks using context-based rules |
US7694287B2 (en) * | 2005-06-29 | 2010-04-06 | Visa U.S.A. | Schema-based dynamic parse/build engine for parsing multi-format messages |
US8559443B2 (en) | 2005-07-22 | 2013-10-15 | Marvell International Ltd. | Efficient message switching in a switching apparatus |
US7715436B1 (en) | 2005-11-18 | 2010-05-11 | Chelsio Communications, Inc. | Method for UDP transmit protocol offload processing with traffic management |
US7660306B1 (en) | 2006-01-12 | 2010-02-09 | Chelsio Communications, Inc. | Virtualizing the operation of intelligent network interface circuitry |
US7724658B1 (en) | 2005-08-31 | 2010-05-25 | Chelsio Communications, Inc. | Protocol offload transmit traffic management |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
US7660264B1 (en) | 2005-12-19 | 2010-02-09 | Chelsio Communications, Inc. | Method for traffic schedulign in intelligent network interface circuitry |
US20070073966A1 (en) * | 2005-09-23 | 2007-03-29 | Corbin John R | Network processor-based storage controller, compute element and method of using same |
US7760733B1 (en) | 2005-10-13 | 2010-07-20 | Chelsio Communications, Inc. | Filtering ingress packets in network interface circuitry |
US7738500B1 (en) | 2005-12-14 | 2010-06-15 | Alacritech, Inc. | TCP timestamp synchronization for network connections that are offloaded to network interface devices |
CN100574200C (zh) * | 2005-12-31 | 2009-12-23 | 中国科学院计算技术研究所 | 具有硬件加速功能的智能以太网卡 |
US7889762B2 (en) | 2006-01-19 | 2011-02-15 | Intel-Ne, Inc. | Apparatus and method for in-line insertion and removal of markers |
US7782905B2 (en) * | 2006-01-19 | 2010-08-24 | Intel-Ne, Inc. | Apparatus and method for stateless CRC calculation |
US7849232B2 (en) | 2006-02-17 | 2010-12-07 | Intel-Ne, Inc. | Method and apparatus for using a single multi-function adapter with different operating systems |
US8078743B2 (en) * | 2006-02-17 | 2011-12-13 | Intel-Ne, Inc. | Pipelined processing of RDMA-type network transactions |
US20070208820A1 (en) * | 2006-02-17 | 2007-09-06 | Neteffect, Inc. | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations |
US8316156B2 (en) * | 2006-02-17 | 2012-11-20 | Intel-Ne, Inc. | Method and apparatus for interfacing device drivers to single multi-function adapter |
US7747904B1 (en) | 2006-05-12 | 2010-06-29 | Integrated Device Technology, Inc. | Error management system and method for a packet switch |
US7817652B1 (en) | 2006-05-12 | 2010-10-19 | Integrated Device Technology, Inc. | System and method of constructing data packets in a packet switch |
US7706387B1 (en) | 2006-05-31 | 2010-04-27 | Integrated Device Technology, Inc. | System and method for round robin arbitration |
US8489761B2 (en) | 2006-07-10 | 2013-07-16 | Solarflare Communications, Inc. | Onload network protocol stacks |
GB2443459A (en) * | 2006-10-31 | 2008-05-07 | Hewlett Packard Development Co | Data packet incuding computing platform indication |
US8935406B1 (en) | 2007-04-16 | 2015-01-13 | Chelsio Communications, Inc. | Network adaptor configured for connection establishment offload |
US7693040B1 (en) | 2007-05-01 | 2010-04-06 | Integrated Device Technology, Inc. | Processing switch for orthogonal frequency division multiplexing |
US8060644B1 (en) | 2007-05-11 | 2011-11-15 | Chelsio Communications, Inc. | Intelligent network adaptor with end-to-end flow control |
US8589587B1 (en) | 2007-05-11 | 2013-11-19 | Chelsio Communications, Inc. | Protocol offload in intelligent network adaptor, including application level signalling |
US7826350B1 (en) | 2007-05-11 | 2010-11-02 | Chelsio Communications, Inc. | Intelligent network adaptor with adaptive direct data placement scheme |
US7831720B1 (en) | 2007-05-17 | 2010-11-09 | Chelsio Communications, Inc. | Full offload of stateful connections, with partial connection offload |
WO2009033969A1 (en) * | 2007-09-13 | 2009-03-19 | Thomson Licensing | Method and apparatus for digital data storage |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
US7908376B2 (en) | 2008-07-31 | 2011-03-15 | Broadcom Corporation | Data path acceleration of a network stack |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
RU2732585C2 (ru) | 2010-07-09 | 2020-09-22 | Виза Интернэшнл Сервис Ассосиэйшн | Шлюзовой уровень абстракции |
KR101502146B1 (ko) | 2013-09-24 | 2015-03-13 | 주식회사 케이티 | 엑세스 네트워크에서의 홈 네트워크 신호 중계 장치 및 이를 이용한 엑세스 네트워크에서의 홈 네트워크 신호 중계 방법 |
US10324730B2 (en) * | 2016-03-24 | 2019-06-18 | Mediatek, Inc. | Memory shuffle engine for efficient work execution in a parallel computing system |
US10185668B2 (en) * | 2016-04-08 | 2019-01-22 | Qualcomm Incorporated | Cost-aware cache replacement |
CN110297787B (zh) * | 2018-03-22 | 2021-06-01 | 龙芯中科技术股份有限公司 | I/o设备访问内存的方法、装置及设备 |
CN114401218B (zh) * | 2021-12-28 | 2023-07-21 | 绿盟科技集团股份有限公司 | 一种数据报文的旁路转发方法及装置 |
US11671350B1 (en) | 2022-08-15 | 2023-06-06 | Red Hat, Inc. | Data request servicing using multiple paths of smart network interface cards |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4366538A (en) | 1980-10-31 | 1982-12-28 | Honeywell Information Systems Inc. | Memory controller with queue control apparatus |
US5097442A (en) | 1985-06-20 | 1992-03-17 | Texas Instruments Incorporated | Programmable depth first-in, first-out memory |
US5212778A (en) | 1988-05-27 | 1993-05-18 | Massachusetts Institute Of Technology | Message-driven processor in a concurrent computer |
US4991133A (en) | 1988-10-07 | 1991-02-05 | International Business Machines Corp. | Specialized communications processor for layered protocols |
JP2986802B2 (ja) | 1989-03-13 | 1999-12-06 | 株式会社日立製作所 | プロトコル高速処理方法 |
US5303344A (en) | 1989-03-13 | 1994-04-12 | Hitachi, Ltd. | Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer |
US5163131A (en) | 1989-09-08 | 1992-11-10 | Auspex Systems, Inc. | Parallel i/o network file server architecture |
DE69033092D1 (de) | 1989-09-08 | 1999-06-10 | Auspex Systems Inc Santa Clara | Betriebssystemaufbau mit mehreren verarbeitungseinheiten |
EP0576546A4 (en) * | 1991-03-18 | 1995-01-25 | Echelon Corp | NETWORK VARIABLES. |
US5289580A (en) | 1991-05-10 | 1994-02-22 | Unisys Corporation | Programmable multiple I/O interface controller |
JP2791236B2 (ja) | 1991-07-25 | 1998-08-27 | 三菱電機株式会社 | プロトコル並列処理装置 |
JP3130609B2 (ja) | 1991-12-17 | 2001-01-31 | 日本電気株式会社 | オンライン情報処理装置 |
JPH05260045A (ja) | 1992-01-14 | 1993-10-08 | Ricoh Co Ltd | デ−タ端末装置の通信方法 |
DE69324508T2 (de) | 1992-01-22 | 1999-12-23 | Enhanced Memory Systems Inc | DRAM mit integrierten Registern |
JPH05252228A (ja) | 1992-03-02 | 1993-09-28 | Mitsubishi Electric Corp | データ伝送装置及びその通信路管理方法 |
JPH07504527A (ja) | 1992-03-09 | 1995-05-18 | オースペックス システムズ インコーポレイテッド | 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム |
US5742760A (en) | 1992-05-12 | 1998-04-21 | Compaq Computer Corporation | Network packet switch using shared memory for repeating and bridging packets at media rate |
US6026452A (en) | 1997-02-26 | 2000-02-15 | Pitts; William Michael | Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data |
US5671355A (en) | 1992-06-26 | 1997-09-23 | Predacomm, Inc. | Reconfigurable network interface apparatus and method |
US5412782A (en) | 1992-07-02 | 1995-05-02 | 3Com Corporation | Programmed I/O ethernet adapter with early interrupts for accelerating data transfer |
US5280477A (en) | 1992-08-17 | 1994-01-18 | E-Systems, Inc. | Network synchronous data distribution system |
FR2699706B1 (fr) | 1992-12-22 | 1995-02-24 | Bull Sa | Système de transmission de données entre un bus d'ordinateur et un réseau. |
GB9300942D0 (en) | 1993-01-19 | 1993-03-10 | Int Computers Ltd | Parallel computer system |
EP0689748B1 (en) | 1993-03-20 | 1998-09-16 | International Business Machines Corporation | Method and apparatus for extracting connection information from protocol headers |
US5815646A (en) | 1993-04-13 | 1998-09-29 | C-Cube Microsystems | Decompression processor for video applications |
JP3358254B2 (ja) | 1993-10-28 | 2002-12-16 | 株式会社日立製作所 | 通信制御装置および通信制御用回路装置 |
US5448566A (en) | 1993-11-15 | 1995-09-05 | International Business Machines Corporation | Method and apparatus for facilitating communication in a multilayer communication architecture via a dynamic communication channel |
US5758194A (en) | 1993-11-30 | 1998-05-26 | Intel Corporation | Communication apparatus for handling networks with different transmission protocols by stripping or adding data to the data stream in the application layer |
JPH08180001A (ja) | 1994-04-12 | 1996-07-12 | Mitsubishi Electric Corp | 通信方式及び通信方法及びネットワークインタフェース |
US6047356A (en) | 1994-04-18 | 2000-04-04 | Sonic Solutions | Method of dynamically allocating network node memory's partitions for caching distributed files |
US5579316A (en) * | 1994-05-02 | 1996-11-26 | Adtran | Communications technique for transmitting limited size digital data frames using macro headers to represent multiple header code patterns associated with encapsulation protocols and signal processing operations to which transmitted data are subjected |
US5598535A (en) * | 1994-08-01 | 1997-01-28 | International Business Machines Corporation | System for selectively and cumulatively grouping packets from different sessions upon the absence of exception condition and sending the packets after preselected time conditions |
WO1996007139A1 (en) | 1994-09-01 | 1996-03-07 | Mcalpine Gary L | A multi-port memory system including read and write buffer interfaces |
US5548730A (en) | 1994-09-20 | 1996-08-20 | Intel Corporation | Intelligent bus bridge for input/output subsystems in a computer system |
US5634127A (en) | 1994-11-30 | 1997-05-27 | International Business Machines Corporation | Methods and apparatus for implementing a message driven processor in a client-server environment |
US5634099A (en) | 1994-12-09 | 1997-05-27 | International Business Machines Corporation | Direct memory access unit for transferring data between processor memories in multiprocessing systems |
US5566170A (en) * | 1994-12-29 | 1996-10-15 | Storage Technology Corporation | Method and apparatus for accelerated packet forwarding |
US5758084A (en) | 1995-02-27 | 1998-05-26 | Hewlett-Packard Company | Apparatus for parallel client/server communication having data structures which stored values indicative of connection state and advancing the connection state of established connections |
US5701434A (en) | 1995-03-16 | 1997-12-23 | Hitachi, Ltd. | Interleave memory controller with a common access queue |
US5592622A (en) | 1995-05-10 | 1997-01-07 | 3Com Corporation | Network intermediate system with message passing architecture |
US5664114A (en) | 1995-05-16 | 1997-09-02 | Hewlett-Packard Company | Asynchronous FIFO queuing system operating with minimal queue status |
US5629933A (en) | 1995-06-07 | 1997-05-13 | International Business Machines Corporation | Method and system for enhanced communication in a multisession packet based communication system |
JPH096706A (ja) | 1995-06-22 | 1997-01-10 | Hitachi Ltd | 疎結合計算機システム |
US5752078A (en) | 1995-07-10 | 1998-05-12 | International Business Machines Corporation | System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory |
US5812775A (en) | 1995-07-12 | 1998-09-22 | 3Com Corporation | Method and apparatus for internetworking buffer management |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5749059A (en) | 1995-09-14 | 1998-05-05 | Trw Technar Inc. | Apparatus and method for controlling an actuatable restraint device |
US5913028A (en) | 1995-10-06 | 1999-06-15 | Xpoint Technologies, Inc. | Client/server data traffic delivery system and method |
US5758186A (en) | 1995-10-06 | 1998-05-26 | Sun Microsystems, Inc. | Method and apparatus for generically handling diverse protocol method calls in a client/server computer system |
US5758089A (en) | 1995-11-02 | 1998-05-26 | Sun Microsystems, Inc. | Method and apparatus for burst transferring ATM packet header and data to a host computer system |
US5809328A (en) | 1995-12-21 | 1998-09-15 | Unisys Corp. | Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device |
US5878225A (en) * | 1996-06-03 | 1999-03-02 | International Business Machines Corporation | Dual communication services interface for distributed transaction processing |
US5751715A (en) | 1996-08-08 | 1998-05-12 | Gadzoox Microsystems, Inc. | Accelerator fiber channel hub and protocol |
US6034963A (en) * | 1996-10-31 | 2000-03-07 | Iready Corporation | Multiple network protocol encoder/decoder and data processor |
US5930830A (en) * | 1997-01-13 | 1999-07-27 | International Business Machines Corporation | System and method for concatenating discontiguous memory pages |
WO1998035480A1 (en) * | 1997-02-11 | 1998-08-13 | Xaqti Corporation | Media access control micro-risc stream processor and method for implementing the same |
WO1998050852A1 (en) | 1997-05-08 | 1998-11-12 | Iready Corporation | Hardware accelerator for an object-oriented programming language |
US6044438A (en) | 1997-07-10 | 2000-03-28 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems |
US6173333B1 (en) * | 1997-07-18 | 2001-01-09 | Interprophet Corporation | TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols |
US5991299A (en) * | 1997-09-11 | 1999-11-23 | 3Com Corporation | High speed header translation processing |
US5989868A (en) | 1997-09-12 | 1999-11-23 | The Board Of Regents Of The University Of Oklahoma | Fusion protein systems designed to increase soluble cytoplasmic expression of heterologous proteins in esherichia coli |
US6005849A (en) | 1997-09-24 | 1999-12-21 | Emulex Corporation | Full-duplex communication processor which can be used for fibre channel frames |
US6065096A (en) | 1997-09-30 | 2000-05-16 | Lsi Logic Corporation | Integrated single chip dual mode raid controller |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US5941969A (en) | 1997-10-22 | 1999-08-24 | Auspex Systems, Inc. | Bridge for direct data storage device access |
US5937169A (en) | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
US6057863A (en) | 1997-10-31 | 2000-05-02 | Compaq Computer Corporation | Dual purpose apparatus, method and system for accelerated graphics port and fibre channel arbitrated loop interfaces |
US6061368A (en) * | 1997-11-05 | 2000-05-09 | Xylan Corporation | Custom circuitry for adaptive hardware routing engine |
US5941972A (en) | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
US5950203A (en) | 1997-12-31 | 1999-09-07 | Mercury Computer Systems, Inc. | Method and apparatus for high-speed access to and sharing of storage devices on a networked digital data processing system |
US6016513A (en) | 1998-02-19 | 2000-01-18 | 3Com Corporation | Method of preventing packet loss during transfers of data packets between a network interface card and an operating system of a computer |
US6246683B1 (en) | 1998-05-01 | 2001-06-12 | 3Com Corporation | Receive processing with network protocol bypass |
US6765901B1 (en) | 1998-06-11 | 2004-07-20 | Nvidia Corporation | TCP/IP/PPP modem |
US6141705A (en) | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US6249683B1 (en) | 1999-04-08 | 2001-06-19 | Qualcomm Incorporated | Forward link power control of multiple data streams transmitted to a mobile station using a common power control channel |
WO2001005116A2 (en) | 1999-07-13 | 2001-01-18 | Alteon Web Systems, Inc. | Routing method and apparatus |
AU5929700A (en) | 1999-07-13 | 2001-01-30 | Alteon Web Systems, Inc. | Method and architecture for optimizing data throughput in a multi-processor environment using a ram-based shared index fifo linked list |
AU6089700A (en) | 1999-07-13 | 2001-01-30 | Alteon Web Systems, Inc. | Apparatus and method to minimize incoming data loss |
AU6091400A (en) | 1999-07-13 | 2001-01-30 | Alteon Web Systems, Inc. | Apparatus and method to minimize congestion in an output queuing switch |
US6327625B1 (en) | 1999-11-30 | 2001-12-04 | 3Com Corporation | FIFO-based network interface supporting out-of-order processing |
-
1998
- 1998-08-28 US US09/141,713 patent/US6389479B1/en not_active Expired - Lifetime
- 1998-11-20 AU AU15333/99A patent/AU1533399A/en not_active Abandoned
- 1998-11-20 WO PCT/US1998/024943 patent/WO2000013091A1/en active IP Right Grant
- 1998-11-20 DE DE1116118T patent/DE1116118T1/de active Pending
- 1998-11-20 EP EP98959558.2A patent/EP1116118B1/en not_active Expired - Lifetime
- 1998-11-20 CA CA002341211A patent/CA2341211C/en not_active Expired - Lifetime
- 1998-11-20 KR KR10-2001-7002369A patent/KR100437146B1/ko not_active IP Right Cessation
- 1998-11-20 JP JP2000568012A patent/JP4264866B2/ja not_active Expired - Fee Related
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008259238A (ja) * | 2001-04-24 | 2008-10-23 | Nvidia Corp | ギガビット・イーサネット・アダプタ |
US7646716B2 (en) | 2002-12-20 | 2010-01-12 | Intel Corporation | Packet processing in a wireless network |
JP2010136414A (ja) * | 2003-06-05 | 2010-06-17 | Nvidia Corp | オフロードユニットを使用したtcp接続のためのデータ処理 |
US7613109B2 (en) | 2003-06-05 | 2009-11-03 | Nvidia Corporation | Processing data for a TCP connection using an offload unit |
US7991918B2 (en) | 2003-06-05 | 2011-08-02 | Nvidia Corporation | Transmitting commands and information between a TCP/IP stack and an offload unit |
US7412488B2 (en) | 2003-06-05 | 2008-08-12 | Nvidia Corporation | Setting up a delegated TCP connection for hardware-optimized processing |
US7420931B2 (en) | 2003-06-05 | 2008-09-02 | Nvidia Corporation | Using TCP/IP offload to accelerate packet filtering |
JP2006526969A (ja) * | 2003-06-05 | 2006-11-24 | エヌヴィディア コーポレイション | オフロードユニットを使用したtcp接続のためのデータ処理 |
US7363572B2 (en) | 2003-06-05 | 2008-04-22 | Nvidia Corporation | Editing outbound TCP frames and generating acknowledgements |
US7609696B2 (en) | 2003-06-05 | 2009-10-27 | Nvidia Corporation | Storing and accessing TCP connection information |
JP2005085284A (ja) * | 2003-09-10 | 2005-03-31 | Microsoft Corp | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
JP4658546B2 (ja) * | 2003-09-10 | 2011-03-23 | マイクロソフト コーポレーション | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
US10015117B2 (en) | 2004-03-31 | 2018-07-03 | Intel Corporation | Header replication in accelerated TCP (transport control protocol) stack processing |
US8121125B2 (en) | 2004-03-31 | 2012-02-21 | Intel Corporation | Accelerated TCP (transport control protocol) stack processing |
US9602443B2 (en) | 2004-03-31 | 2017-03-21 | Intel Corporation | Header replication in accelerated TCP (transport control protocol) stack processing |
US7788391B2 (en) | 2004-03-31 | 2010-08-31 | Intel Corporation | Using a threshold value to control mid-interrupt polling |
US8238360B2 (en) | 2004-03-31 | 2012-08-07 | Intel Corporation | Header replication in accelerated TCP (transport control protocol) stack processing |
JP2006074726A (ja) * | 2004-08-03 | 2006-03-16 | Fujitsu Ltd | 断片パケット処理方法及びこれを用いるパケット転送装置 |
JP4490331B2 (ja) * | 2004-08-03 | 2010-06-23 | 富士通株式会社 | 断片パケット処理方法及びこれを用いるパケット転送装置 |
JP4827933B2 (ja) * | 2006-03-13 | 2011-11-30 | トムソン ライセンシング | データパケットを送信する方法およびデバイス |
JP2010519785A (ja) * | 2006-11-08 | 2010-06-03 | スタンダード マイクロシステムズ コーポレーション | ネットワーク・トラフィック・コントローラ |
JP4870819B2 (ja) * | 2006-11-08 | 2012-02-08 | スタンダード マイクロシステムズ コーポレーション | ネットワーク・トラフィック・コントローラ |
JP2008148133A (ja) * | 2006-12-12 | 2008-06-26 | Canon Inc | 通信装置、その制御方法及びプログラム |
JP2008305394A (ja) * | 2007-05-18 | 2008-12-18 | Nvidia Corp | ロードバランス型ネットワーク環境におけるインテリジェントフェイルオーバー |
JP2009151498A (ja) * | 2007-12-19 | 2009-07-09 | Canon Inc | ネットワークタイマ管理方法及び装置 |
JP2011146035A (ja) * | 2009-11-10 | 2011-07-28 | Apple Inc | 周辺コンポーネントのためのコマンドキュー |
KR101977850B1 (ko) | 2017-09-15 | 2019-05-13 | 단국대학교 산학협력단 | 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 |
KR20190030915A (ko) * | 2017-09-15 | 2019-03-25 | 단국대학교 산학협력단 | 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1116118A4 (en) | 2006-01-11 |
KR100437146B1 (ko) | 2004-06-25 |
KR20010085582A (ko) | 2001-09-07 |
WO2000013091A1 (en) | 2000-03-09 |
EP1116118B1 (en) | 2016-03-09 |
CA2341211A1 (en) | 2000-03-09 |
JP4264866B2 (ja) | 2009-05-20 |
EP1116118A1 (en) | 2001-07-18 |
AU1533399A (en) | 2000-03-21 |
US6389479B1 (en) | 2002-05-14 |
CA2341211C (en) | 2009-12-01 |
DE1116118T1 (de) | 2003-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4264866B2 (ja) | 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム | |
US9307054B2 (en) | Intelligent network interface system and method for accelerated protocol processing | |
US6427173B1 (en) | Intelligent network interfaced device and system for accelerated communication | |
US7089326B2 (en) | Fast-path processing for receiving data on TCP connection offload devices | |
US6591302B2 (en) | Fast-path apparatus for receiving data corresponding to a TCP connection | |
JP5066702B2 (ja) | インテリジェントネットワークストレージインタフェースシステム及びデバイス | |
US6658480B2 (en) | Intelligent network interface system and method for accelerated protocol processing | |
US6807581B1 (en) | Intelligent network storage interface system | |
US8019901B2 (en) | Intelligent network storage interface system | |
US7076568B2 (en) | Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket | |
US7664883B2 (en) | Network interface device that fast-path processes solicited session layer read commands | |
US7191241B2 (en) | Fast-path apparatus for receiving data corresponding to a TCP connection | |
US7284070B2 (en) | TCP offload network interface device | |
US20040073703A1 (en) | Fast-path apparatus for receiving data corresponding a TCP connection | |
US8621101B1 (en) | Intelligent network storage interface device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051121 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051121 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080318 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080618 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080625 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080718 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080728 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080818 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080825 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080918 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081028 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090205 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130227 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |