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
Application number
JP2000568012A
Other languages
English (en)
Other versions
JP2002524005A5 (ja
JP4264866B2 (ja
Inventor
ブーチャー,ローレンス,ビー
ブライトマン,スチーブン,イー,ジェイ
クラフト,ピーター,ケイ
ヒギン,デヴィッド,エー
フィルブリック,クライヴ,エム
スター,ダリル
Original Assignee
アラクリテック・インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アラクリテック・インコーポレイテッド filed Critical アラクリテック・インコーポレイテッド
Publication of JP2002524005A publication Critical patent/JP2002524005A/ja
Publication of JP2002524005A5 publication Critical patent/JP2002524005A5/ja
Application granted granted Critical
Publication of JP4264866B2 publication Critical patent/JP4264866B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Abstract

(57)【要約】 インテリジェントネットワークインタフェースカード即ち通信処理装置(30)が、データ通信のためにホストコンピュータ(20)で作動する。前記装置は、大部分のメッセージについてプロトコル処理を不要にする高速パス(159)を提供し、ホストのCPU(28)からのデータ転送及びアンロード時間集中型処理タスクを非常に高速化する。ホストは高速パス基準に合致しないメッセージのためのフォールバック処理能力を保持しており、また前記装置は低速パスメッセージのためにも妥当性検査のような支援を提供し、メッセージは高速パス処理又は低速パス(158)処理の何れを行うかについて選択される。装置が、ヘッダを用いずに、データをホストにおける行先へ又は発信元から直接移動させることを可能にする、接続のためのコンテキスト(50)が定義される。そのコンテキストは、ホストによるメッセージ処理のためにホストに戻され得る。前記装置は、その特定のタスクについては汎用CPUより非常に高速の専用ハードウェア回路を有している。好ましい実施態様は、それぞれが受信、送信、及びユーティリティ処理専用の3個1組のパイプライン型プロセッサ(482、484、486)を有し、4個のファスト・イーサネット(登録商標)ノードに対して全二重通信を提供する。

Description

【発明の詳細な説明】
【0001】 (技術分野) 本発明は、一般的にコンピュータ又は他のネットワークに関するものであり、
得にネットワークに接続されたコンピュータのようなホスト間で通信される情報
の処理に関するものである。
【0002】 (背景技術) ネットワークコンピューティングの利点はますます明らかとなってきている。
パーソナルコンピュータや他のエンドユーザ装置において情報、通信、又は計算
能力を個人に提供することがもたらす利便性及び能率のために、イントラネット
装置やアプリケーション及びインターネット等のネットワークコンピューティン
グが急速に成長することになった。
【0003】 周知のように、大部分のネットワークコンピュータ通信は、ネットワークに接
続されたホストコンピュータ間での情報の転送のための階層化ソフトウェアアー
キテクチャの支援によって達成される。その層が、情報を処理可能なセグメント
に分割することを助け、各層の一般的な機能は、多くの場合開放型システム間相
互接続(OSI)と呼ばれる国際標準に準拠している。OSIは7種の処理の層
を規定しており、情報がホストによって受信されると、それはエンドユーザに提
示できるようにするためにそれらの層の間をわたされる。同様に、ホストからネ
ットワークへの情報の送信では、情報がそれらの7種の処理層を逆の順に通過し
得る。1つの層による処理及びサービスの各ステップでは、処理された情報のコ
ピーが行われる。TCP/IP(TCPは伝送制御プロトコルを表し、IPはイ
ンターネットプロトコルを意味する)と呼ばれる、広く実現されている別の参照
モデルは、基本的にOSIの7層のうち5層を利用する。
【0004】 ネットワークは、例えば、それぞれが複数のホストを有する異なるローカルエ
リアネットワーク(LAN)間のイーサネット接続又はインターネット接続のよ
うな高速パス、又はホスト間のデータ伝送のための様々な他の既知の手段の何れ
かを含み得る。OSI標準によれば、物理層は各ホストにおいてネットワークに
接続され、その物理層がネットワークを介しての生のデータビットの送信及び受
信を提供する。データリンク層は、各ホストの物理層によりサービスされ、物理
層から受け取ったデータのフレーム分割及び誤り訂正を提供するとともに、受信
したホストによって送られた肯定応答フレームの処理を行う。各ホストのネット
ワーク層は、各データリンク層によりサービスされ、主としてデータのパケット
のサブネットのサイズ及び統合を制御する。
【0005】 トランスポート層は各ネットワーク層からサービスされ、セッション層は各ホ
スト内の各トランスポート層によりサービスされる。トランスポート層はそれら
の各セッション層からデータを受け取り、そのデータを他のホストのトランスポ
ート層へ送信するためのより小さいユニットに分割する。他のトランスポート層
は、各プレゼンテーション層への提示のためそのデータを連結する。セッション
層によってホスト間の機能強化された通信の制御が可能となる。プレゼンテーシ
ョン層はそれらの各セッション層によりサービスされ、各ホスト固有であり得る
データセマンティクス及び構文と、データ表現の標準化された構造との間での変
換を行う。データの圧縮及び/または暗号化も、プレゼンテーション層レベルで
達成され得る。アプリケーション層は、各プレゼンテーション層によりサービス
され、個々のホストに特有のプログラムと、アプリケーション又はエンドユーザ
の何れかに対して提示するための標準化されたプログラムとの間の変換を行う。
TCP/IP標準は、下位の4層及びアプリケーション層を含むが、セッション
層及びプレゼンテーション層の機能は隣接する層に統合している。一般的に、ア
プリケーション層、プレゼンテーション層、及びセッション層は上位層と定義さ
れ、トランスポート層、ネットワーク層、及びデータリンク層は下位層と定義さ
れる。
【0006】 各層の規則及び規定はその層のプロトコルと呼ばれ、かつ各層のプロトコル及
び一般的な機能は様々なホストにおいて概ね等しいことから、たとえ同位の層同
士が情報を下位の各層を順次転送させることなく直接やり取りしないとしても、
異なるホストの同一の層同士で直接行われる通信というものを考えることは有益
である。各下位層は、通信される情報を処理を助けるべくその1つ上位の層にサ
ービスする。各層は、処理及び次の層へのサービスの提供のため情報を保存する
。一般的に用いられるハードウェア及びソフトウェアアーキテクチャや装置及び
プログラムの多様性のために、各層は、介入し得るハードウェア及びソフトウェ
アの相違とは無関係に、データが適切な形式で目的の行先に到達し得ることを確
実なものとする必要がある。
【0007】 第1のホストから第2のホストに送信するためのデータの準備において、その
層のプロトコルに関連する第1のホストの各層で幾つかの制御データが付加され
るが、その制御データはそのホストの全ての下位の層において元のデータ(ペイ
ロードデータ)から識別可能なものある。従って、アプリケーション層はペイロ
ードデータにアプリケーションヘッダを付加し、結合されたデータを送信側のホ
ストのプレゼンテーション層に送る。プレゼンテーション層はその結合データを
受け取り、それを処理してそのデータにプレゼンテーションヘッダを付加し、別
の結合されたデータパケットが生成される。次に、ペイロードデータ、アプリケ
ーションヘッダ、及びプレゼンテーションヘッダの結合によって生成されたデー
タをセッション層に渡し、セッション層は、そのデータへのセッションヘッダの
付加や、生成されたデータの組み合わせのトランスポート層への提示等の必要な
処理を行う。この処理は、情報が下位の層に移動する間継続され、それらの各層
においてデータにトランスポートヘッダ、ネットワークヘッダ、及びデータリン
クヘッダ、及びトレーラが付加され、各処理過程ではデータの転送及びコピーを
行い、その後、データをビットパケットとしてネットワークを通して第2のホス
トに送信する。
【0008】 受信側のホストは一般的に上述のプロセスの逆を行い、ネットワークからのデ
ータビットの受信に始まり、最下位の(物理)層から最上位の(アプリケーショ
ン)層まで順番にヘッダが除去され、データが処理されて、受信側ホストの行先
への送信が行われる。受信側ホストの各層は、その層に関連するヘッダのみを認
識し、処理する。その層からみて、より上位の層の制御データはペイロードデー
タに含められており、そこから識別できないからである。受信側ホストがそのデ
ータをその目的の行先に適切な形式で渡すためには、複数の割り込み、有効な中
央処理装置(CPU)による処理時間、及び反復されるデータコピー処理も必要
であり得る。
【0009】 上述の階層化プロトコル処理の説明は、主としてこの主題について詳述された
大学レベルの教科書、例えばAndrew S. TanenbaumによるComputer Networks, Th
ird Edition (1996) が入手可能であることから、単純化されている。上記文献
はこの引用により本明細書の一部とする。その文献に定義されているように、コ
ンピュータネットワークとは、インターネットや、例えばローカルエリアネット
ワーク(LAN)、ワイドエリアネットワーク(WAN)、非同期転送モード(
ATM)、リング又はトークンリング、配線式、無線式、衛星、又は他の異なる
プロセッサ間の通信能力を提供するための手段等のインターネットデバイスのよ
うな、相互接続された独立して操作されるコンピュータの集合体である。本明細
書において、コンピュータは、データを処理するための論理機能とメモリ機能の
両方を有する装置を含むものと定義されており、ネットワークに接続されたコン
ピュータ即ちホストは、それらが異なるオぺレーティング装置に従って機能する
場合、即ち異なるアーキテクチャを介して通信を行う場合、ヘテロジニアス(異
種)であるという。
【0010】 ネットワークがますます一般的となり、それによってやりとりされる情報がま
すます複雑化し内容豊富になるにつれて、そのようなプロトコル処理の必要性が
高まってきた。ホストのCPUの処理能力の大部分が、プロトコル処理の制御に
充てられて、そのCPUが他のタスクを行う能力は低下していると推定される。
物理層やデータリンク層のような下位の層の補助のため、ネットワークインタフ
ェースカードが開発されてきた。単に従来型の構成のCPUにより大きい処理能
力を付与することによって、プロトコル処理の速度を高めることも可能である。
しかし、この解決方法は手際の良いものとは言えず、コストがかかる。しかし、
様々なネットワーク、プロトコル、アーキテクチャ、オペレーティング装置、及
びアプリケーションによって付与される複雑さによって、種々のネットワークホ
スト間での通信能力を与えるために大量の処理が要求されることになる。
【0011】 (発明の開示) 本発明は、通信されるデータの転送の効率及びその処理速度を大幅に高める、
ネットワーク通信の処理のための装置を提供する。本発明は、汎用プロセッサ上
での階層化プロトコル処理を行うという、長年にわたって利用されてきた実施の
形態を問い直すことによって達成されたものである。そのプロトコル処理方法と
、その結果として形成されるアーキテクチャでは、例えばTCP/IPのような
コネクションをベースにした階層化アーキテクチャの層を、所望の位置又はホス
ト上のバッファとの間で、より直接的にネットワークデータを送受信できる1層
のより広い層に効果的にまとめる。この高速化処理はデータの送受信両方のため
にホストに提供され、情報の交換に関係するホストの両方がそのような特徴を有
している場合も、その一方しかそのような特徴を有していない場合でも、処理能
力を向上させる。
【0012】 前記高速化処理では、その発信元において直接的にメッセージデータにアクセ
スしたりそれをその目的の行先に直接供給する高速パスを介してメッセージから
のデータを処理できるようにする所定のメッセージに対応する制御命令を用いる
。この高速パスは、データに付加されるヘッダの従来型のプロトコル処理をバイ
パスする。高速パスは、ネットワーク通信の処理のために設計された専用マイク
ロプロセッサを用いて、例えば反復されるコピー処理やCPUへの割り込みのよ
うな、従来のソフトウェアの階層処理の遅れ及び問題点を回避している。要する
に、前記高速パスは、従来型のネットワークスタックの複数の層において伝統的
に見出される状態を、プロトコル層の厳格な区別及び分離を要求する従来の規定
とは異なりこれらの層を全て包含する1個のステートマシンで置き換える。ホス
トは、高速パスコネクション又はメッセージ例外の処理をセットアップするため
に用いられ得る順次式プロトコル処理スタックを保持している。専用マイクロプ
ロセッサ及びホストが、所定のメッセージまたはメッセージの一部分をそのマイ
クロプロセッサによって処理するか、ホストのスタックによって処理するかを、
インテリジェントに選択する。
【0013】 (発明の最良の実施の形態) 図1は、リモートホスト22にネットワーク25によって接続された本発明の
ホスト20を示す。本発明によって達成される処理速度の上昇は、既存のホスト
に容易に無理なく追加されるインテリジェントネットワークインタフェースカー
ド(INIC)又はホストに統合される通信処理装置(CPD)によって提供さ
れ得、何れの場合もホストのCPUを大部分のプロトコル処理から解放し、その
CPUによって実行される他のタスクも改善することができる。第1の実施形態
のホスト20は、PCIバス33によって接続されたCPU28及びCPD30
を有する。CPD30はダイレクトメモリアクセス(DMA)ユニットによって
制御されるメモリバッファ及び通信データの処理のために設計されたマイクロプ
ロセッサを有する。例えば、半導体メモリ又はディクスドライブのような記憶機
構35も、関連する制御機構とともにPCIバス33に接続されている。
【0014】 更に図2を参照すると、ホストのCPU28が記憶機構35に収容されたプロ
トコル処理スタック44を制御しており、前記スタックはデータリンク層36、
ネットワーク層38、トランスポート層40、上位層46、及び上位層インタフ
ェース42を有する。上位層46は、使用される特定のプロトコル及び通信され
るメッセージに応じて、セッション層、プレゼンテーション層、及び/又はアプ
リケーション層を意味し得る。上位層インタフェース42は、CPU28及び関
連するあらゆる制御機構と協働して、矢印48で示すように、上位層46又は記
憶機構35へのファイルの転送及びそこからのファイルの取り出しを行える。コ
ネクションコンテキスト50が生成されており、これは、後に説明するように、
例えばプロトコルの種類及び各プロトコル層のための発信元及び行先アドレスの
ような様々なコネクションの特徴を要約する。そのコンテキストは、矢印52及
び54で示すように、セッション層42のためのインタフェースとCPD30と
の間でやりとりされ得、CPD30又は記憶機構35の何れかに通信制御ブロッ
ク(CCB)として格納される。
【0015】 CPD30が特定のコネクションを確定するCCBを保持するとき、ネットワ
ークからCPDによって受信されたそのコネクションに関連するデータはそのC
CBによって参照され、次に高速パス58に従って記憶機構35に直接送信され
得、データリンク層36、ネットワーク層38、及びトランスポート層40によ
って処理される順次式のプロトコルがバイパスされることになる。記憶機構35
からリモートホスト22へのファイルの送信のようなメッセージの転送は高速パ
ス58を介しても生じ得、その場合、トランスポート層40、ネットワーク層3
8、及びデータリンク層36による処理の間に、逐次ヘッダを付加するのではな
く、CCBを参照するCPD30によってファイルデータのためのコンテキスト
が加えられる。CPD30のDMAコントローラが、これらのCPDと記憶機構
35との間の転送を実行する。
【0016】 CPD30は、それぞれが可能な分離した状態を有する複数のプロトコルスタ
ックを、高速パス処理のための1個のステートマシンにまとめる。この結果、そ
の1個のステートマシンにおいては準備されていない例外条件が生じ得る。これ
ようにしているのは、主としてそのような条件がまれにしか生じず、CPD上で
それを処理することはコストに対して殆ど処理能力上の利点が得られないからで
ある。そのような例外は、CPD30又はCPU28で生じたものであり得る。
本発明の利点として、高速パスCCB上で生ずる予期しない状況が取り扱われる
方式がある。CPD30は、これらのまれな状況を制御ネゴシエーションを介し
てホストのプロトコルスタック44にCCB及び関連するあらゆるメッセージフ
レームを戻す、即ちフラッシュすることによって処理する。次にその例外条件は
、従来の方式でホストのプロトコルスタック44によって処理される。しばらく
後に、通常は例外条件の処理が終了し、高速パス処理が再開し得るようになった
直後に、ホストのスタック44はCCBをCPDに戻す。
【0017】 このフォールバック能力によって、ホストのプロトコルの能力に影響を与える
機能をCPDネットワークマイクロプロセッサが取り扱うことができるようにな
るとともに、全体の処理能力に無視できる程度の影響しか与えない程度にまれに
しか生じない例外がホストのスタックによって取り扱われることになる。カスタ
ム設計のネットワークプロセッサは、ネットワーク情報の送受信のための独立し
たプロセッサと、補助及びキューのための別のプロセッサとを備え得る。好まし
いマイクロプロセッサの実施形態は、パイプライン型の3個1組の受信、送信、
及びユーティリティプロセッサを備えるDMAコントローラがインプリメンテー
ションに組み入れられ、コントローラに隣接するバッファと長時間記憶機構のよ
うな他の位置との間でデータを迅速にやりとりさせるべく、ネットワークマイク
ロプロセッサと密接に協働する形で機能するものである。DMAコントローラに
論理的に隣接するバッファを設けることによって、PCIバスに不必要な負荷が
加わるのを避けられる。
【0018】 図3は、本発明によって受信されたメッセージの概略流れ図である。ファイル
転送のような大きい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のバージョン
である。これらのプロトコルによって代表されるあらゆる転送において、各パケ
ットは、従来通り転送されるデータの部分とともに、プロトコル層のそれぞれに
対応するヘッダ及びそのメッセージの残りのパケット群に対するそのパケットを
位置を決めるためのマーカを有する。
【0019】 CPDによってネットワークからメッセージパケット即ちフレームが受信され
たとき(47)、ハードウェアの補助によりそれが初めに検査される。ここでは
、様々な層のプロトコルの種類を決定し、関連するチェックサムを確認し、かつ
これらの認識事項をステータスワードに要約する(57)。これらのワードに含
められるのは、そのフレームが高速パスデータフローの候補であるか否かの表示
である。高速パス候補の選択(59)は、そのホストがCPDによって取り扱わ
れるそのメッセージコネクションから利益を得られるか否かに基いて行われ、そ
のパケットが例えばTCP/IP又はSPX/IPXのような特定のプロトコル
を表示するヘッダバイトを有しているか否かの判定が行われる。小さいパーセン
テージで存在する高速パス候補でないフレームは、低速パスプロトコル処理のた
めにホストのプロトコルスタックに送られる(61)。その後の各高速パス候補
についてのネットワークプロセッサ作業は、TCP又はSPX CCBのような
高速パスコネクションがその候補に対して常に現存しているか否か、又はその候
補が、例えばTTCP/IPトランザクションのためのもののような新たな高速
パスコネクションをセットアップするために用いられ得るか否かを決定する。C
PDによって提供される妥当性検査が、或るフレームが高速パスで処理されるか
、低速パスで処理されるかに関わらず、処理の高速化をもたらし、誤りのない場
合にのみ、検査されたフレームが、たとえ低速パス処理の場合でもホストのCP
Uによって処理される。
【0020】 高速パスの候補となるものとしてCPDハードウェアの補助によって決定され
た受信されたメッセージフレームは全て、ネットワークマイクロプロセッサ又は
INIC比較器回路によって調べられ(53)、それらがCPDによって保持さ
れたCCBに一致するか否かが判定される。そのような一致を確認する際、CP
Dは下位層のヘッダを取り除き、CPDのダイレクトメモリアクセス(DMA)
ユニットを用いて、残りのアプリケーションデータをフレームから直接その最終
行先に送信する(69)。この操作は、例えばTCPコネクションが既に存在し
かつ行先バッファがネゴシエートされた場合には、メッセージパケットを受け取
った直後に行われ得るが、初めに初期ヘッダを処理して、この転送のための最終
行先アドレスの新たな組を取得することが必要なこともある。後者の場合には、
CPDは、行先アドレスを待つとともに後続のメッセージパケットをキューに入
れ、次いでキューに入れられたアプリケーションデータをその行先にDMA転送
する。
【0021】 CCBに一致しない高速パス候補を用いて、そのフレームを順次プロトコル処
理のためにホストに送信(65)することによって、新たな高速パスコネクショ
ンをセットアップすることができる。この場合、ホストはそのフレームを用いて
CCBを生成し(51)、次いでCCBはCPDにわたされて、そのコネクショ
ンにおける後のフレームを制御する。CCBはCPDにキャッシュされ(67)
、従来通りのソフトウェア階層処理を使用している場合には、処理された全ての
プロトコルに対して適切な制御及び状態情報を有する。CCBはまた、後の関連
するメッセージパケット内に含められたアプリケーションレベルのデータを、直
接的な使用に利用可能な形態でホストのアプリケーションに直接わたすのを容易
にするために用いられる、転送毎の情報のための記憶空間も有している。CPD
は、ホストからそのコネクションのためのCCBを受け取ったとき、コネクショ
ン処理の指揮を取る。
【0022】 図4Aにより明確に示されているように、リモートホスト22からメッセージ
パケットがネットワーク25を介して受け取られたとき、そのパケットはCPD
30のハードウェア受信ロジック32に入り、これがヘッダ及びデータを検査し
、ヘッダを構文解析してメッセージパケット及びステータスを特定するワードを
生成し、ヘッダ、データ、及びワードをメモリ60に一時的に格納する。パケッ
トの検査と同時に、受信ロジック32は、そのパケットが高速パス処理の候補で
あるか否かを前記ワードを用いて示す。図4Aは、そのパケットが高速パス候補
でない場合を示しており、この場合CPD30は、矢印56によって示されるよ
うに、ホストのCPUによる処理のために、内部バスを通してメモリ60からデ
ータリンク層36へ検査されたヘッダ及びデータを送信する。そのパケットは、
データリンク層36、ネットワーク層38、トランスポート層40、及びセッシ
ョン層42のホストのプロトコルスタック44によって処理され、次にパケット
からのデータ(D)63は、矢印65に示されるように、記憶機構35に送信さ
れ得る。
【0023】 図4Bは、CPDの受信ロジック32が、例えばパケットのヘッダからそのパ
ケットが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にわたされる前にホスト間で生ずるコネクション初期化ダイアログの一部
であり得る。
【0024】 ここで図4Cを参照すると、初めのパケットと同一のコネクションからの後続
のパケットが、CPD30によってネットワーク25から受信されたとき、パケ
ットのヘッダ及びデータは、受信ロジック32によって検査され、そのヘッダは
構文解析されて、メッセージパケットの要約及び対応するCCBを見つけるため
のハッシュが生成され、その要約及びハッシュはワードに含められる。そのワー
ドは、パケットとともにメモリ60に一時的に保存される。プロセッサ55は、
キャッシュ62に保存された各CCBとハッシュとの間の一致をチェックし、そ
の一致を見出したときには、矢印72に示すように、高速パスを介して記憶機構
35における行先に直接データ(D2)70を送信し、セッション層42、トラ
ンスポート層40、ネットワーク層38、及びデータリンク層36はバイパスさ
せる。メッセージからの残りのデータパケットは、DMAによって直接記憶機構
に送信され得、CPUスタック44による比較的低速のプロトコル層処理及び反
復されるコピー処理は回避される。
【0025】 図4Dは、例えば図4Cに示されるような、それに対して高速パスがコネクシ
ョンが確立されたメッセージが、CPDによって容易に取り扱われないパケット
を有するときの稀な例を取扱うための手順を示す。この場合、そのパケットは、
プロトコルスタックによって処理されるべく送信され、プロトコルスタックは、
矢印76で示すように、CPDとの制御ダイアログを介してキャッシュ62から
のメッセージのためにCCBにわたされ、そのメッセージの処理を引き継がせる
ためにCPUに信号が送られる。次にプロトコルスタックによる低速パス処理に
よって、矢印82に示すように、そのパケットからのデータ(D3)80が記憶
機構35に送られることになる。一旦そのパケットが処理され、誤り状態が補正
されると、CCBは制御ダイアログを介してキャッシュ62に戻され得、そのメ
ッセージの後続のパケットからのペイロードデータは、同様にCPD30の高速
パスを介して送信され得ることになる。従って、CPU及びCPDは協働して、
所定のメッセージが高速パスハードウェア処理に従って処理されるか、より一般
的なCPUによるソフトウェア処理に従って処理されるのかを決定する。
【0026】 リモートホスト22へ供給するためのホスト20からネットワーク25へのメ
ッセージの送信も、図5に示すように、CPUを介した順次式プロトコルソフト
ウェア処理か、CPD30を介した高速化ハードウェア処理の何れかによって処
理され得る。記憶機構35からCPU28によって選択されたメッセージ(M)
90は、矢印92及び96によって示されるように、スタック44によって処理
するためセッション層42に送信され得る。しかし、コネクションが存在し、か
つCPD30がそのメッセージのための適切なCCBを既に有している状況では
、データパケットはホストスタック44をバイパスし、DMAによって直接メモ
リ60に送信され得る。このとき、プロセッサ55は、各データパケットに全て
の適切なプロトコル層を含む1個のヘッダを加え、得られたパケットをリモート
ホスト22への送信のためネットワーク25に送る。この高速パス送信によって
、たとえ1個のパケットのための処理でも非常に高速化することができ、より大
きいメッセージの場合は大幅に高速化する。
【0027】 高速パスコネクションのためのメッセージは現存しておらず、従って高速パス
送信をガイドするための適切な制御及び状態情報と共に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に通知する。
【0028】 従って、データ通信の高速パス送信はまた、ホストをCPUのフレーム毎の処
理から解放させる。データ送信の大部分は、高速パスによってネットワークに送
信され得る。入出力の両方が高速パスであることによって、上位層レベル即ちセ
ッション層レベル以上における機能による割り込みが大幅な低減を達成され、か
つネットワークマイクロプロセッサとホストとの間の相互作用は上位層が作ろう
とする全転送サイズを用いて行われることになる。高速パス通信の場合、割り込
みは(その大部分が)上位層メッセージトランザクション全体の始まりと終わり
においてのみ生じ、各階層の部分及びそのトランザクションのパケットの送受信
において割り込みは生じない。
【0029】 ホスト152に対するネットワークインタフェースを提供する、単純化された
インテリジェントネットワークインタフェースカード(INIC)150が図6
に示されている。INIC150のハードウェアロジック171は、INICと
ホストとを接続する周辺バス(PCI)157でネットワーク155に接続され
ている。この実施例において、ホスト152はTCP/IPプロトコルスタック
を有し、それはネットワーク155から受け取ったメッセージフレームの順次式
ソフトウェア処理のための低速パス158を提供する。ホスト152のプロトコ
ルスタックは、データリンク層160、ネットワーク層162、トランスポート
層164、及びホスト152における通信データの発信元又は行先168を提供
するアプリケーション層166を有する。図示されていない他の層、例えばセッ
ション層やプレゼンテーション層もホストスタック152に含められ得、発信元
又は行先はデータの性質に応じて変わり、実際にはアプリケーション層であり得
る。
【0030】 INIC150は、ホストのプロトコルスタックを含む低速パス158に沿っ
て処理するメッセージ、又はホストのプロトコルスタックをバイパスする高速1
59に沿って処理するメッセージとの間の選択を行うネットワークプロセッサ1
70を有する。受信されたパケットのそれぞれは、INIC150に含められた
フライバイ(fly by)ハードウェアロジック171上で処理され、従って或るパ
ケットの全てのプロトコルヘッダは、プロトコル層の間でデータのコピー、移動
、記憶させることなく処理され得る。ハードウェアロジック171は、パケット
バイトがそのハードウェアを通過するときに、選択されたヘッダバイトを分類す
ることによって1回で所定のパケットのヘッダを処理する。選択されたバイトの
処理の結果は、チェックサム検査を含むパケットの要約が生成されるまで、パケ
ットのどの他のバイトを分類するかを決定することの助けとなる。次に受信され
たパケットからのデータ及び処理されたヘッダが、そのパケットのヘッダ及びス
テータスを要約するワードとともにINICの記憶機構185に記憶される。ネ
ットワーク記憶機構の構成のために、INIC150はIDE、SCSI、又は
類似のインタフェースを有するディスクドライブのような周辺記憶装置に接続さ
れ得、その記憶装置のためのファイルキャッシュはINIC150のメモリ18
5上に存在する。そのようなネットワークインタフェースの幾つかは1つのホス
トのために存在し得、それぞれが関連する記憶装置を有する。
【0031】 ネットワーク155からINIC150によって受信されたメッセージパケッ
トのハードウェア処理は、図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によって処理されたこと、及び
その要約されたステータスを通知する。
【0032】 図8は、フライバイシーケンサ178が幾つかの段を有していることを示し、
この段のそれぞれは通常パケットヘッダの特定の部分を集中して取扱い、従って
その段に関連するステータスを生成するため特定のプロトコル層を集中して取り
扱う。この実施形態では、フライバイシーケンサ178が、メディアアクセス制
御シーケンサ191、ネットワークシーケンサ192、トランスポートシーケン
サ194、及びセッションシーケンサ195を有する。より高位のプロトコル層
に関連するシーケンサを追加的に提供することもできる。フライバイシーケンサ
178は、パケット制御シーケンサ176及びフライバイシーケンサに所定のバ
イトがアセンブリレジスタ174から利用可能であるか否かを伝えるパケット制
御シーケンサによる所定のポインタによってリセットされる。メディアアクセス
制御シーケンサ191は、バイト0−5を見ることにより、或るパケットが、別
のホストではなくホスト152を、又は別のホストに加えてホスト152をアド
レス指定されているかを決定する。パケットのオフセット12及び13もメディ
アアクセス制御シーケンサ191によって処理され、例えばそのパケットがイー
サネット又は802.3であるか否かのタイプフィールドを決定する。そのタイ
プフィールドがイーサネットである場合、それらのバイトはメディアアクセス制
御シーケンサ191にそのパケットのネットワークプロトコルの種類も伝える。
802.3の場合は、それらのバイトは全フレームの長さを表示し、メディアア
クセス制御シーケンサ191は更にパケット内の8個のバイトをチェックし、ネ
ットワーク層の種類を決定する。
【0033】 大部分のパケットについて、ネットワークシーケンサ192は、受信されたヘ
ッダ長が正しい長さを有していることを検査し、ネットワーク層のヘッダを検査
する。高速パス候補について、ネットワーク層のヘッダは、メディアアクセス制
御シーケンサ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ヘッダから
の情報を含み得る。
【0034】 TCPパケットの例について続けると、トランスポートシーケンサ194は、
1つにはそのメッセージのためのTCP発信元及び行先ポートを決定するため、
例えばそのパケットがNetBiosか他のプロトコルであるかを決定するため
に、ヘッダのトランスポート層部分における初めの数バイトの解析も行う。TC
Pヘッダのバイト12が、トランスポートシーケンサ194によって処理され、
TCPヘッダの長さが決定され、検査される。TCPヘッダのバイト13は、肯
定応答(ack)フラグ及びプッシュフラグを除いて、例えばリセットや終了のよ
うな、プロセッサにこのパケットを例外として分類させ得る予期しないオプショ
ンを表示し得るフラグを含む。TCPオフセットバイト16及び17はチェック
サムであり、それはハードウェアロジック171によって引き出されたり、格納
されたりし、フレームの残りの部分はそのチェックサムに対して検査される。
【0035】 セッションシーケンサ195は、セッション層ヘッダの長さを決定し、セッシ
ョン層ヘッダは、NetBiosの場合には4バイトに過ぎず、そのうちの2バ
イトはNetBiosペイロードデータの長さを通知するが、他のプロトコルの
場合にはより長いこともあり得る。セッションシーケンサ195は、例えば読み
出し又は書き込みとしてメッセージのタイプを分類するためにも用いられ得、そ
のために高速パスが特に有益なものとなり得る。メッセージの種類に応じて更な
る上位層ロジックの処理が、フライバイシーケンサ178及びパケット制御シー
ケンサ176のハードウェアロジック171によって行われ得る。従って、ハー
ドウェアロジック171はインテリジェントに1つのバイトストリームから選択
されたバイトを分類することによってヘッダのハードウェア処理を誘導し、その
パケットのステータスが処理の進行中に決定された分類から構築される。一旦パ
ケット制御シーケンサ176が全てのパケットがフライバイシーケンサ178に
よって処理されたことを検出すると、パケット制御シーケンサ176は、フライ
バイシーケンサ178によって生成されたステータス情報にパケット制御シーケ
ンサ176によって生成されたすテータス情報を加え、プロセッサ170による
パケットの取扱いにおける便宜のため、そのパケットにそのステータス情報を先
頭付加(パケットの先頭部分への付加)する。パケット制御シーケンサ176に
よって生成された追加のステータス情報は、メディアアクセスコントローラ17
2のステータス情報及び発見された全ての誤り、又はアセンブリレジスタ若しく
はDRAMバッファの何れかにおけるデータオーバーフロー、又はそのパケット
に関連する他の種々雑多な情報を有する。パケット制御シーケンサ176は、キ
ューマネージャ184を介して受信バッファキュー及び受信統計的キューにエン
トリを入れることも行う。
【0036】 ハードウェアロジック171によりパケットを処理することの利点は、従来の
ような順次ソフトウェアプロトコル処理とは異なり、そのパケットが各プロトコ
ル層ヘッダの処理のために記憶機構に格納されたり、転送されたり、コピーされ
たり、又は引き出されたりする必要がなく、処理効率を劇的に向上させ、各パケ
ットの処理時間を短縮できる点にある。そのパケットはビットがネットワークか
ら受信されるときのビットレート、例えば100BaseT接続の場合100メ
ガビット/秒で処理され得る。従って、この速度で受信された60バイトの長さ
を有するパケットを分類する時間は、約5マイクロ秒である。ハードウェアロジ
ック171でそのパケットを処理し、パケットデータを高速パスを介してそのホ
スト行先に送信するためにかかる全時間は、66MHzのPCIバスを用いた場
合、約16マイクロ秒以下であり得るが、300MHzのPentiumII(登録商標
)プロセッサによる従来通りのソフトウェアプロトコル処理では、使用中の装置
において200マイクロ秒もの時間がかかかり得る。従って、従来型の順次式ソ
フトウェアプロトコル処理を用いる高速CPUの場合と比較して、高速パス15
9によって1桁以上の処理時間の短縮が達成され得、CPUの割り込みの低減や
ホストのバスの大域幅の節約によってもたらされる追加の時間短縮を考慮しなく
ても、ハードウェアロジック171及びプロセッサ170でプロトコルヘッダを
処理することによって劇的な高速化が提供されることを立証している。
【0037】 プロセッサ170は、記憶機構185に保持された受信されたメッセージパケ
ットのそれぞれについて、そのパケットが高速パス159の候補であるか否かを
選択し、そうである場合には、高速パスが既にそのパケットが属するコネクショ
ンに対してセットアップされているか否かを調べるためのチェックを行う。これ
を行うため、プロセッサ170は、初めにそのパケットヘッダが高速パス候補の
ために定義されたプロトコルのものであるか否かを決定するためにヘッダステー
タスの要約をチェックする。そうでない場合には、プロセッサ170は、INI
C150におけるDMAコントローラに、そのパケットを低速パス158処理の
ためにホストに送信する命令を送る。メッセージが低速パス158処理される場
合でも、INIC150は検査及びメッセージの種類の決定のような初期手順を
実行し、検査されたメッセージを少なくともホストのデータリンク層160に送
る。
【0038】 高速パス159の候補の場合、プロセッサ170は、そのヘッダステータスの
要約がINICに保持されたCCBに一致するか否かを調べるためのチェックを
行う。そうである場合には、パケットからのデータは高速パス159を通してホ
ストの行先168に送信される。高速パス159の候補のパケット要約がINI
Cに保持されたCCBに一致しない場合には、そのパケットは低速パス処理のた
めにホスト152に送信されて、そのメッセージのためのCCBが生成される。
高速パス159を用いることは、断片化したメッセージの場合や他の複雑さのた
めに必要でない、又は望ましいものではないこともある。しかし、大部分のメッ
セージについては、INICの高速パス159は、メッセージ処理を非常に高速
化し得る。従ってINIC150は、従来のように所定のパケットの運命を決定
するために幾つかのプロトコル層のそれぞれにおいてステートマシンを用いるの
と異なり、処理進行中に収集される情報に基いてデータをその行先に直接送信す
るか否かを決定する1個のステートマシンプロセッサ170を提供するものであ
る。
【0039】 ホスト152において受信された表示即ちパケットの処理において、ホストの
プロトコルドライバは、その表示が高速パス又は低速パスの何れであるかに基い
て処理経路を選択する。TCP/IP又はSPX/IPXメッセージは、そのド
ライバによって形成され、高速パスパケットとの一致をとの一致をとり、かつそ
れをコネクション行先168に導くために、INICに送られる。TTCP/I
Pメッセージの場合、ドライバは、初期リクエストパケットの処理から、そのト
ランザクションのためのコネクションコンテキストを生成することができる。こ
の処理では、メッセージ行先168の位置指定を行い、次にその行先からの応答
のための高速パスを提供するためにCCBの形態でINICにそのコンテキスト
を送る。CCBは、プロトコル層及びメッセージのパケットに関するコネクショ
ン及び状態情報を含む。従ってCCBは、発信元及び行先メディアアクセス制御
(MAC)アドレス、発信元及び行先IP又はIPXアドレス、発信元及び行先
TCP又はSPXポート、タイマーのようなTCP変数、ウィンドウプロトコル
をスライドさせるための受信及び送信ウインドウ、及びセッション層プロトコル
を示す情報を有し得る。
【0040】 INICにおけるハッシュテーブルにCCBをキャッシュすることにより、そ
のパケットが高速パス159を介して処理され得るか否かを決定するべく入力さ
れるパケットを要約するワードとの迅速な比較処理が行われるようになり、一方
全てのCCBが処理のためにINICにも保持される。この比較を高速化する他
の方法としては、コンテンツのアドレス指定可能なメモリ(CAM)のようなハ
ードウェア補助機構及びBツリーのようなソフトウェア処理等が挙げられる。I
NICマイクロコード又は比較器回路がCCBとの一致を検出すると、DMAコ
ントローラはCPUによる割り込み、プロトコル処理又はコピー処理を行うこと
なく、行先168にパケットからのデータをおく。受信したメッセージの種類に
応じて、そのデータの行先は、ホスト152におけるセッション層、プレゼンテ
ーション層、又はアプリケーション層、又はファイルバッファキャッシュであり
得る。
【0041】 図9は、ファイルサーバとして用いられるホスト202に接続されたINIC
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に格納される。
【0042】 ネットワークプロセッサ230は、INIC200に格納されたその要約及び
任意のCCBとの比較に基いて、ホストによって処理される低速パス231を通
してそのパケットを送信するか否かを決定する。大部分のパケットは、そのよう
な順次処理を避けることができ、一致するCCBに従ってサーバ内のデータ行先
に高速パス237を通してDMAにより送信されるそのデータ部分を有する。同
様に、高速パス237は、データをネットワーク送信のためにパケットに分割し
、全てのヘッダを付加してプロセッサ230によって発信元222から任意のネ
ットワークラインへ直接データを送信する経路を提供し、同様にCPUによる処
理及び割り込みを最小限にする。明示のため、水平シーケンサ250のみがアク
ティブ状態として示されているが、実際にはシーケンサ行250、260、26
2、及び264のそれぞれが、他の全てのシーケンサ行と同時に全二重通信を提
供する。専用INIC200は、メッセージパケットとともに動作するとき、ソ
フトウェアプロトコルスタックに従ってそれらのヘッダを順次処理する高度な汎
用ホストCPUよりも非常に高速である。
【0043】 ファイル転送のような大きいメッセージのために最も一般的に用いられるネッ
トワークプロトコルの1つは、TCP/IPを通してのサーバメッセージブロッ
ク(SMB)である。SMBはファイルが書き込まれるディスク又はプリンタの
ような特定の操作のために必要なリソースが、その操作が生成されるホストに存
在するか、或いは結び付けられているか、又はファイルサーバのようなネットワ
ークに接続された他のホストに存在するかを決定するリダイレクタソフトウェア
とともに動作し得る。SMB及びサーバ/リダイレクタは、従来はトランスポー
ト層によりサービスされるが、本発明ではSMB及びリダイレクタが、INIC
によりサービスされ得る。この場合には、大きいSMBトランザクションを受け
取ったとき、INICバッファからDMAコントローラによってデータを送信す
ることにより、ホストが取り扱わなければならない割り込みが著しく低減し得る
。更に、このDMAは一般的にファイルデイバスキャッシュにあるその最終的な
行先にデータを転送する。本発明のSMB送信は、基本的に上述のSMBの受信
を逆方向にたどるものであり、ホストからINICにデータが転送され、バッフ
ァに格納されるとともに、関連するプロトコルヘッダがネットワークラインを介
してのリモートホストへの転送のためにINICにおけるデータの先頭に付加さ
れる。ホストの反復される割り込み無しに、カスタム設計のハードウェアを介し
ての複数のTCP/IP、NetBios、及びSMBプロトコル層及び複数の
パケットのINICによる処理によって、SMBメッセージのネットワークライ
ンへの送信速度を著しく高めることができる。
【0044】 図10に示すように、所定のメッセージがホスト202によって処理されるか
、又は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を有する。
【0045】 ドライバ300は、メッセージをネットワーク210に送信するために、上位
層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によって従来通り
に処理され得る。
【0046】 図11は、Microsoft(登録商標)プロトコルメッセージのためのコ
マンドドライバソフトウェアの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
の高速パスに転送されたか、或いはホストスタックによって処理されたかを判定
する。
【0047】 図12は、典型的なクライアント190とサーバ290との間のSMB交換を
示す図であり、クライアントとサーバの両方は本発明の通信装置を有し、その通
信装置はそれぞれデータの高速パス転送のためのそれらのコネクションを確定す
る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を有する。
【0048】 クライアント190がサーバ290上の100KBのファイルの読み出しを行
おうとしていると仮定すると、クライアントは、ネットワーク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によって送信する。
【0049】 INIC150は、その応答が着信したとき、クライアント190上で動作し
ており、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送信を開始する。
【0050】 図13は、INIC200を単純化して示した図であり、INIC200はネ
ットワークインタフェースコントローラとプロトコルプロセッサの機能を一個の
ASICチップ400に結合したものである。この実施形態におけるINIC2
00は、全二重4チャネル10/100メガビット/秒(Mbps)のインテリ
ジェントネットワークインタフェースコントローラを提供し、このコントローラ
はサーバアプリケーションのための高速プロトコル処理のために設計されている
。特にサーバの用途のために設計されているが、INIC200は、パーソナル
コンピュータ、ワークステーション、ルータ、又は他のTCP/IP、TTCP
/IP、又はSPX/IPXプロトコルが用いられているあらゆる他のホストに
接続され得る。
【0051】 INIC200は、4つのネットワークライン210、240、242、及び
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)のために用いられ得る統計的情報も
提供する。
【0052】 MACユニット402、404、406、及び408は、それぞれ送受信シー
ケンサ、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ビットのアドレス指定をサポートしている。
【0053】 マイクロプロセッサ470はライン472によってSRAM及びDMAコント
ローラ444に接続され、かつライン475を介してPCI BIU468に接
続されている。マイクロプロセッサ470はチップ制御ストア480に存在する
レジスタファイルに命令を送り、チップ制御ストアはSRAMの書き込み可能な
オンチップ制御ストア(WCS)及び読み出し専用メモリ(ROM)を有し、か
つライン477によってマイクロプロセッサに接続されている。マイクロプロセ
ッサ470は入力されるフレームを処理し、ホストのコマンドを処理し、ネット
ワークトラフィックを誘導し、かつPCIバストラフィックを誘導し得る、プロ
グラム可能なステートマシンを提供する。3つのプロセッサは、各クロックサイ
クル毎に1個の命令を発して完了させる3つのレベルのパイプライン型アーキテ
クチャに、共通のハードウェアを用いてインプリメントされている。受信プロセ
ッサ482は主として通信の受信のために用いられ、送信プロセッサ484は主
として通信の送信のために用いられて、全二重通信を容易に行えるようにしてお
り、一方ユーティリティプロセッサ486はPCIレジスタアクセスの監視及び
制御を含む様々な機能を提供する。
【0054】 3つのプロセッサ482、484、及び486に対する命令は、オンチップ制
御ストア480に存在する。このため3つのプロセッサの機能は容易に定義しな
おすことができ、従ってマイクロプロセッサ470は所定の環境に適合させるこ
とができる。例えば受信機能のために必要な処理の量は、送信機能及びユーティ
リティ機能の何れかのために要求されるものを上回っていることがある。この状
況では、幾つかの受信機能が送信プロセッサ484及び/又はユーティリティプ
ロセッサ486によって実行され得る。或いは、追加のレベルのパイプラインを
生成して、3つではなく4以上の仮想プロセッサを生成し、その追加のレベルを
受信機能専用にすることができる。
【0055】 INIC200は、この実施形態ではDRAM460におけるテーブルに維持
されている最大256個のCCBをサポートし得る。しかし、SRAM440に
おいて、順次検索を保存するためのハッシュ順のCCBインデックスも存在する
。一旦ハッシュが生成されるとCCBはSRAMにキャッシュされ、この実施例
では最大16個のCCBがSRAMにキャッシュされる。SRAMにキャッシュ
された16のCCBの割り当ては、以下に説明するように、最低使用頻度レジス
タによって取り扱われる。これらのキャッシュ位置は、送信プロセッサ484と
受信プロセッサ486との間で共有されており、従ってより重い負荷のかかるプ
ロセッサがより多くのキャッシュバッファを使用することができる。また、シー
ケンサ間で共有される8個のコマンドバッファ及び8個のヘッダバッファも存在
する。所定のヘッダ又はコマンドバッファは、所定のCCBバッファに静的にリ
ンクされていない。そのリンクはフレーム毎に動的だからである。
【0056】 図14は、パイプライン型マイクロプロセッサ470の概要を示しており、こ
のマイクロプロセッサでは受信、送信、及びユーティリティプロセッサのための
命令が、クロックのインクリメントI、II、IIIに従って3つの交互のフェ
ーズで実行され、そのフェーズはパイプライン段階のそれぞれに対応している。
各フェーズは異なる機能を担っており、3つのプロセッサのそれぞれは、各クロ
ックインクリメントの間に異なるフェーズを占める。通常各プロセッサは、制御
ストア480からの異なる命令ストリームに基いて動作し、それぞれそのフェー
ズを通してそれ自身のプログラムカウンタ及びステータスを有する。
【0057】 一般に、パイプライン型マイクロプロセッサの第1命令フェーズ500は、命
令を終了し、その結果を行先のオペランドに格納し、次の命令を取り出し、かつ
その次の命令を命令レジスタに格納する。第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レジスタセットに格納される。
【0058】 命令は、環状パイプライン505によって示されるように第1フェーズ、次に
それに続く第3フェーズをまで継続する。所定のフェーズ内での組み合わせによ
る遅れを最小限するために、命令実行の3つのフェーズにわたって様々な機能が
分散されていることに注意されたい。この実施形態の66MHzの周波数で、各
クロックインクリメントが終了するまでに15ナノ秒の時間がかかり、3つのプ
ロセッサのそれぞれに対して1個の命令が完了するまで全体で45ナノ秒かかる
ことになる。循環する命令フェーズは図15A乃至図15Cにより詳細に示され
ており、各フェーズが異なる図面において示されている。
【0059】 詳述すると、図15Aは第1レジスタセット490及び関連する制御機構49
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に格納された様々な機能を実行す
ることができる。
【0060】 RAMファイルレジスタ533は、アドレス及びデータのための1つの書き込
みポート及びアドレス及びデータのための2つの読み出しポートを有し、従って
2以上のレジスタが一度に読み出され得る。上述のように、RAMファイルレジ
スタ533は基本的に第1及び第2フェーズをまたいでおり、即ち第1フェーズ
500において書込みが行われ、第2フェーズ560において読み出しが行われ
る。制御ストア命令510によって制御ストア480から新たなデータが入って
くるため、図面には示されていないが、命令レジスタ535に格納された命令を
プロセッサがプログラムしなおすことが可能となる。このためのアドレスは、フ
ェッチアドレスレジスタ538に格納されたアドレスのうちどのアドレスを取り
出すかを決定するフェッチ制御レジスタにおいて生成される。ロード制御機構5
15は、プログラムカウンタのための命令を供給し、プログラムカウンタは制御
ストアのためのフェッチアドレスの場合と概ね同様に動作する。3つのレジスタ
の後入先出スタック544は、このフェーズにおいて他の操作を受けずに第1レ
ジスタセットにコピーされる。最後に、デバッグアドレス548のためのロード
制御機構517が所望に応じて含められるが、これによって生じ得る誤りの訂正
が可能となる。
【0061】 図15Bは、RAMファイルレジスタ533からのアドレス及びデータの読み
出しを含む、第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に格納される。
【0062】 図15Cは、ALU及びキュー操作を含む、第3のマイクロプロセッサフェー
ズ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は、代わりに高速化した実質的に
同時並行のハードウェアキューイングを提供する。
【0063】 図16は、キューマネージャ606によって管理される32のハードウェアキ
ューの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から読み出されるが、それ
が書き込まれた同一のヘッド又はテールユニットから読み出されることもある。
【0064】 SRAM FIFO700及び702は、共にDRAM460に接続されてお
り、この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に戻される。
【0065】 32のハードウェアキューのそれぞれのステータスは、従来通り図17に示す
ように、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を含む。
【0066】 FIFO700に対応するQ(0)は、フリーのバッファキューであり、全て
の利用可能なバッファであるアドレスのリストを保持する。このキューは、マイ
クロプロセッサ又は他のデバイスがフリーバッファアドレスを必要とするときに
アドレス指定され、従って共通に感知できるDRAM460を含む。従って、フ
リーバッファアドレスを必要とするデバイスは、Q(0)をチェックし、そのア
ドレスを得る。FIFO702に対応するQ(27)は、受信バッファディスク
リプタキューである。受信シーケンサによって受信されたフレームが処理された
後、そのシーケンサはそのフレームのためのディスクリプタをQ(27)に格納
しようとする。このようなディスクリプタの位置がSRAMにおいて即座に利用
可能である場合は、Q−In_Ready750のビット(27)766がセッ
トされる。そうでない場合は、そのシーケンサはキューマネージャがSRAMか
らDRAMへDMA転送を開始させて、受信ディスクリプタを格納するための空
間を空けるのを待たなければならない。
【0067】 SRAMとプロセッサとの間でのキューエントリの移動、受信及び送信シーケ
ンサ間のキューエントリの移動、及びSRAMとDRAM間のキューエントリの
移動を管理するキューマネージャの動作は、図18により詳細に示されている。
キューを利用するリクエストとしては、プロセッサリクエスト802、送信シー
ケンサリクエスト804、及び受信シーケンサリクエスト806がある。そのキ
ューのための他のリクエストは、DRAMからSRAMへのリクエスト808及
びSRAMからDRAMへのリクエスト810であり、これはキューのDRAM
及びSRAMヘッド又はテール間でデータをやりとりする際にキューマネージャ
の代わりに作用する。これらの様々なリクエストの何れが次のサイクルにおいて
キューマネージャを用いるかの決定は、優先ロジックアービタ815によって取
り扱われる。高い周波数での動作を可能にするため、キューマネージャはパイプ
ライン型で、レジスタA818及びレジスタB820が一時的な記憶機構を提供
するとともに、ステータスレジスタ822が次の更新までステータスを維持する
。キューマネージャはDMA、受信及び送信シーケンサリクエストのために偶数
番目のサイクルを予約し、プロセッサリクエストのために奇数番目のサイクルを
予約する。二重ポートQRAM825は、各キューに関連する変数を格納し、各
キューのための変数としては、キューのSRAM条件に対応するヘッド書き込み
ポインタ、ヘッド読み出しポインタ、テール書き込みポインタ、及びテール読み
出しポインタと、キューのDRAM条件及びキューのサイズに対応するボディ書
込みポインタ及びボディ読み出しポインタとが挙げられる。
【0068】 アービタ815が実行される次の処理を選択した後、QRAM825の変数が
フェッチされ、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コントローラは、アクセスされたキューのテール
の書き込み又はヘッドの読み出し及び確認応答を戻すことによって、読み出し及
び書き込みリクエストをサービスする。このようにして、様々なキューが利用さ
れ、それらのステータスが更新される。
【0069】 図19A乃至図19Cは、INICキャッシュメモリに維持するコンテキスト
又は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を示す。
【0070】 現在SRAMに保持されているものとは異なるCCBがキャッシュされたとき
、図19Aでは、番号9を保持しているLRUブロックR0が読み出され、新た
なCCBが番号9に対応するSRAMキャッシュユニットに格納される。番号9
に対応する新たなCCBが現時点で最も使用頻度の高いCCBであることから、
番号9は、図19Bに示すように、MRUブロックに格納される。他の番号は全
て1個左のレジスタブロックにシフトされ、LRUブロックに番号1が残る。以
前に番号9に対応するSRAMユニットにキャッシュされたCCBは、よりゆっ
くりとではあるが、よりコストパフォーマンスの良い形でDRAMに移されてい
る。
【0071】 図19Cは、次に使用されるCCBが常にSRAMにキャッシュされたときの
結果を示す。この例では、CCBが番号10に対応するSRAMユニットにキャ
ッシュされており、そのCCBを使用した後、番号10にMPUブロックに格納
される。番号10以外の最近使用された番号のみ(レジスタブロックR9−R1
5)が左側にシフトされ、LRUブロックには番号1が残る。このようにして、
INICはSRAMキャッシュに最もアクティブなCCBを維持する。
【0072】 場合によっては、使用されている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個右側のブロックにシフトされる。
【0073】 図20は、最低使用頻度レジスタ900を操作するために用いられる論理ユニ
ットをいくつか示す。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に格納された番号を供給する。
【0074】 16個の比較器920のアレイのそれぞれが、最低使用頻度レジスタ900の
対応するブロックに格納された値を受け取る。各比較器は、ライン935を介し
てプロセッサ470からの信号を受け取り、従ってプロセッサ470によって送
られた一致する番号を有するレジスタブロックが、論理回路930に真の値を出
力し、一方他の15個の比較器は偽の値を出力する。論理回路930は、マルチ
プレクサへの入力を選択するためにマルチプレクサのそれぞれに接続された一対
の選択ラインを制御し、従ってレジスタブロック番号のシフトを制御する。従っ
て選択ライン939はMUX0を制御し、選択ライン944はMUX7を制御し
、選択ライン949はMUX8を制御し、選択ライン954はMUX9を制御し
、選択ライン959はMUX15を制御する。
【0075】 CCBが使用されるとき、プロセッサ470は、そのCCBが16個のキャッ
シュユニットの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の左側のマルチプレクサの出力は一定に選択される。
【0076】 一方プロセッサ470が16個のキャッシュユニットのなかでCCBについて
一致を見出せなかった場合は、プロセッサは、ライン966を通してLRUブロ
ックR6から読み出しを行い、LRUブロックに対応するキャッシュを特定し、
そのキャッシュに格納されたデータをDRAMに書き込む。この場合では番号3
であるR0に格納された番号は、MRUブロックR5における記憶機構のために
MUX15への入力915としてライン959を選択することによって選び出さ
れる。他の15個のマルチプレクサは、それらの各レジスタブロックにそれぞれ
の右隣のレジスタブロックに格納されていた番号を出力する。
【0077】 プロセッサが、使用後にキャッシュからCCBを取り除こうとしている状況で
は、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ブロックにレジスタブロック
を通して動くことになる。
【0078】 既に述べたように、上述のデータ通信の処理のための装置及びシステムは、大
きなコネクションベースのメッセージを処理するために必要な時間を劇的に短縮
させる。プロトコル処理速度は、専用に設計されたプロトコル処理ハードウェア
によって汎用CPUが従来のプロトコルソフトウェアを実行する場合と比較して
非常に高速化され、かつホストのCPUへの割り込みも実質的に低減する。これ
らの利点は、インテリジェントネットワークインタフェースカード(INIC)
を追加することによって既存のホストにもたらすこともできるが、或いはプロト
コル処理ハードウェアをCPUに組み込んでもよい。何れの場合も、プロトコル
処理ハードウェア及びCPUは、インテリジェントに与えられたメッセージを処
理するデバイスを決定し、メッセージの条件に基いてその処理の割り当てを変更
することができる。
【図面の簡単な説明】
【図1】 ネットワーク通信を高速化するための通信処理装置を有するホストコンピュー
タを備えた、本発明の装置の平面図。
【図2】 高速パス、低速パス、及び高速パスと低速パスとの間のコネクションコンテキ
ストの転送を含む、ネットワーク通信の処理における図1のホストの情報の流れ
を示す図。
【図3】 本発明によるメッセージ受信の流れ図。
【図4】 A図は、低速パスによって処理される初めのメッセージパケットを受信した、
図1のホストにおける情報の流れを示す図、B図は、高速パスによって処理され
る初めのメッセージパケットを受信した、図1のホストにおける情報の流れを示
す図、C図は、高速パスによって処理される順次式のメッセージパケットを受信
した、図4Bのホストにおける情報の流れを示す図、D図は、低速パスに戻すた
めの処理を生じさせる誤りを有するメッセージパケットを受信した、図4Cのホ
ストにおける情報の流れを示す図。
【図5】 高速パス又は低速パスの何れかによってメッセージを転送する、図1のホスト
における情報の流れを示す図。
【図6】 TCP/IP処理スタックを有するクライアントに関連するインテリジェント
ネットワークインタフェースカード(INIC)の第1の実施形態における情報
の流れを示す図。
【図7】 パケット制御シーケンサ、フライバイシーケンサを含む、図6に示すINIC
の実施形態のためのハードウェアロジックを示す図。
【図8】 INICによって受信されたときにヘッダバイトを解析する、図7のフライバ
イシーケンサを示す図。
【図9】 TCP/IP処理スタックを有するサーバに関連するINICの第2の実施形
態における情報の流れを示す図。
【図10】 高速パスのための通信制御ブロックを生成し制御するための、図9にインスト
ールされたコマンドドライバを示す図。
【図11】 NetBios通信のために構成された図10のコマンドドライバ及びTCP
/IPスタックを示す図。
【図12】 図6のクライアントと図9のサーバとの間の通信の交換を示す図。
【図13】 図9のINICに含められたハードウェア機構を示す図。
【図14】 各フェーズに1個のプロセッサがある3つのフェーズを含む、図13のINI
Cに含められた3個1組のパイプライン型マイクロプロセッサを示す図。
【図15】 A図は図14のパイプライン型マイクロプロセッサの第1フェーズを示す図、
B図は図14のパイプライン型マイクロプロセッサの第2フェーズを示す図、C
図は図14のパイプライン型マイクロプロセッサの第3フェーズを示す図。
【図16】 図14のマイクロプロセッサと相互作用し、かつSRAM及びDRAMを備え
た複数のキュー記憶ユニットを示す図。
【図17】 図16のキュー記憶ユニットのための、1組のステータスレジスタを示す図。
【図18】 図16及び図17のキュー記憶ユニット及びステータスレジスタと相互作用す
る、キューマネージャを示す図。
【図19】 A図はキャッシュメモリの割り当てのために用いられる最低使用頻度レジスタ
の様々な動作段階の1つを示す図、B図はキャッシュメモリの割り当てのために
用いられる最低使用頻度レジスタの様々な動作段階の1つを示す図、C図はキャ
ッシュメモリの割り当てのために用いられる最低使用頻度レジスタの様々な動作
段階の1つを示す図、D図はキャッシュメモリの割り当てのために用いられる最
低使用頻度レジスタの様々な動作段階の1つを示す図。
【図20】 図19A乃至図19Dの最低使用頻度レジスタを操作するための用いられるデ
バイスを示す図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クラフト,ピーター,ケイ アメリカ合衆国,カリフォルニア州・ 94114,サンフランシスコ,ヘンリー・ス トリート・156 (72)発明者 ヒギン,デヴィッド,エー アメリカ合衆国,カリフォルニア州・ 95070,サラトガ,ロス・アラモス・ドラ イブ・17880 (72)発明者 フィルブリック,クライヴ,エム アメリカ合衆国,カリフォルニア州・ 95125,サンノゼ,ロイコット・ウェイ・ 1170 (72)発明者 スター,ダリル アメリカ合衆国,カリフォルニア州・ 95035,ミルピタス,フォルソム・コー ト・446 Fターム(参考) 5B089 GA04 GB01 HB02 KA06 KD02 KF05 5K030 GA01 HA08 KA13 LA08 LA14 LB02 LC01 LE04 LE09 5K034 AA02 DD03 EE11 FF01 FF03 HH06 HH14 KK21 LL01 【要約の続き】 3個1組のパイプライン型プロセッサ(482、48 4、486)を有し、4個のファスト・イーサネット (登録商標)ノードに対して全二重通信を提供する。

Claims (52)

    【特許請求の範囲】
  1. 【請求項1】 ネットワークと、プロセッサとプロトコル層の順次式スタッ
    クとを有するホストコンピュータとの間で通信を行うための方法であって、該方
    法は、 前記ネットワークから前記ホストコンピュータによって、データと、前記プロ
    トコル層のスタックに対応する複数のヘッダとを含むメッセージパケットを受信
    する過程であって、前記データは、前記ヘッダのプロトコル処理に従って前記ホ
    ストコンピュータの行先に配置するために用いられる、該受信する過程と、 ある時点で前記複数のヘッダをグループとして処理する過程であって、前記処
    理する過程は前記ヘッダのグループの要約を作成する、該処理する過程と、 前記要約に基づいて、前記プロトコル層によって前記パケットを処理するか否
    かを選択する過程と、 前記ヘッダのグループの前記要約に従って、前記データを前記行先に送出する
    過程とを有し、それにより前記プロトコル層のスタックによる前記パケットの順
    次式処理が回避されることを特徴とする方法。
  2. 【請求項2】 前記ヘッダのグループを前記処理する過程は、前記ネットワ
    ークから前記ホストコンピュータによる前記メッセージパケットの受信中に行わ
    れることを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記パケットを含む、コネクションのための通信制御ブロッ
    クを作成する過程と、前記データを前記行先に送出するために、前記要約と前記
    通信制御ブロックとを整合させる過程とをさらに含むことを特徴とする請求項1
    に記載の方法。
  4. 【請求項4】 前記パケットを含む、コネクションのための通信制御ブロッ
    クを作成する過程をさらに含み、前記データを前記行先に送出する過程は、前記
    通信制御ブロックによって前記データを誘導する過程を含むことを特徴とする請
    求項1に記載の方法。
  5. 【請求項5】 前記通信制御ブロックを参照することにより、前記ホストコ
    ンピュータから前記ネットワークに第2のメッセージを伝送する過程をさらに含
    むことを特徴とする請求項8に記載の方法。
  6. 【請求項6】 ネットワークと、順次式プロトコル処理スタックを有するホ
    ストとの間で通信を処理するための方法であって、該方法は、 通信プロセッサを備える装置を配設する過程であって、前記装置は前記ホスト
    と前記ネットワークとに接続される、該配設する過程と、 前記ホストによって前記ネットワークからのメッセージフレームを受信する過
    程であって、前記フレームはデータと、前記順次式プロトコル処理スタックに対
    応する一連のヘッダとを含む、該受信する過程と、 前記装置によってバイトのストリームとして前記一連のヘッダを解析する過程
    であって、前記解析する過程は前記データをコピーすることなく前記ヘッダを処
    理する過程を含み、それにより前記フレームの要約を作成する、該解析する過程
    と、 前記処理する過程に基づいて、前記スタックによって前記パケットを処理する
    か、前記要約に従って前記データを行先に送出するかを選択する過程とを有する
    ことを特徴とする方法。
  7. 【請求項7】 前記ホストによって、前記フレームを含むメッセージのため
    の通信制御ブロックを作成する過程と、 前記装置に前記通信制御ブロックを格納する過程と、 前記データを前記通信制御ブロックによって指示される行先に誘導する過程と
    をさらに含むことを特徴とする請求項6に記載の方法。
  8. 【請求項8】 前記データを前記行先に誘導する過程の前に、前記要約と前
    記通信制御ブロックとを比較する過程をさらに含むことを特徴とする請求項7に
    記載の方法。
  9. 【請求項9】 前記装置を経由して、前記ホストから前記ネットワークに送
    信データを伝送する過程をさらに含み、前記伝送する過程は、リモートホストへ
    のネットワーク転送のために、前記送信データの前にいくつかのプロトコルプロ
    トコルヘッダを同時に付加する過程を含むことを特徴とする請求項6に記載の方
    法。
  10. 【請求項10】 ネットワークと、プロセッサとプロトコル層の順次式スタ
    ックとを有するホストコンピュータとの間で通信を行うための方法であって、該
    方法は、 前記ネットワークから前記ホストコンピュータによって、多数のパケットを有
    するメッセージを受信する過程であって、前記パケットはそれぞれデータ部分と
    関連するヘッダのシーケンスとを含み、前記関連するヘッダのシーケンスは、前
    記プロトコル層の順次式スタックに対応する情報を含み、かつ前記データのため
    の前記ホストコンピュータ内の上位層の行先を指示する、該受信する過程と、 前記関連するヘッダを用いることなく、かつ任意のホストCUPへの割り込み
    を発生することなく、複数の前記データ部分を前記行先に送出する過程とを有す
    ることを特徴とする方法。
  11. 【請求項11】 前記データ部分を前記行先に送出する過程の前に、前記プ
    ロトコル層のスタックによって前記パケットを処理するか否かを選択する過程を
    さらに含むことを特徴とする請求項10に記載の方法。
  12. 【請求項12】 前記ホストにプロトコル処理装置を配設する過程と、 前記データ部分を、前記ヘッダを用いることなく前記行先に送出する過程の前
    に、前記装置を用いて前記ヘッダの要約を作成する過程とをさらに含むことを特
    徴とする請求項10に記載の方法。
  13. 【請求項13】 前記ホストから前記ネットワークにデータファイルを伝送
    する過程をさらに含み、前記伝送する過程は、前記データファイルを一連のデー
    タユニットに分割する過程と、前記データユニットの前に前記ヘッダを付加し、
    それにより一連のネットワークフレームを作成する過程と、任意のホストCUP
    に割り込みを発生することなく、前記ネットワークフレームを前記ネットワーク
    に配置する過程とを含むことを特徴とする請求項10に記載の方法。
  14. 【請求項14】 ホストコンピュータとネットワークとの間で通信を行うた
    めの方法であって、前記ホストコンピュータはCPUと、記憶ユニットと、プロ
    トコル層の順次式スタックとを備え、該方法は、 前記ネットワークと前記ホストコンピュータとに接続される装置を配設する過
    程であって、前記装置はプロセッサを有する、該配設する過程と、 前記装置によって前記ネットワークから第1のメッセージを受信する過程と、 前記第1のメッセージを処理する過程であって、該処理する過程は前記第1の
    メッセージのための通信制御ブロックを作成する過程を含む、該処理する過程と
    、 前記装置によって前記ネットワークから第2のメッセージを受信する過程であ
    って、前記第2のメッセージはデータとヘッダとを含み、前記ヘッダは一連のプ
    ロトコル層ヘッダを含む、該受信する過程と、 前記装置によって前記ヘッダを処理する過程であって、該処理する過程は、前
    記ヘッダの前記処理中に、前記データをコピーするとなく、前記ヘッダの要約を
    生成する過程を含む、該処理する過程と、 前記装置によって前記データを、前記プロトコル層の上位層に適した形で前記
    上位層に送出する過程であって、前記送出する過程は前記通信制御ブロックを用
    いて前記送出する過程を誘導する過程を含む、該送出する過程とを有することを
    特徴とする方法。
  15. 【請求項15】 前記装置によって前記第1のメッセージと前記第2のメッ
    セージとに関連する第3のメッセージを受信する過程と、前記装置から前記記憶
    ユニットに前記通信制御ブロックを渡し、それにより前記第3のメッセージを処
    理することに関する制御を前記CPUに渡す過程とをさらに含むことを特徴とす
    る請求項14に記載の方法。
  16. 【請求項16】 前記データを前記上位層に送出する過程の前に、前記要約
    と前記通信制御ブロックとを整合させる過程をさらに含むことを特徴とする請求
    項14に記載の方法。
  17. 【請求項17】 前記ホストから前記ネットワークに第3のメッセージ伝送
    する過程をさらに含み、前記伝送する過程は、前記通信制御ブロックを参照し、
    ホストソースから取得されるデータの前に送信ヘッダを付加することにより前記
    装置を経由して前記第3のメッセージを送出する過程を含み、前記送信ヘッダは
    複数のプロトコル層ヘッダを含むことを特徴とする請求項14に記載の方法。
  18. 【請求項18】 ローカルホストと、ネットワークによって接続されるリモ
    ートホストとの間で通信を行うための方法であって、前記ローカルホストはプロ
    トコル処理スタックと、関連するプロトコル処理装置とを有しており、該方法は
    、 前記プロトコル処理スタックにより、前記ローカルホストと前記リモートホス
    トとの間のコネクションを定義する通信制御ブロックを作成する過程と、 前記通信制御ブロックを前記装置に渡し、それにより前記コネクションに関連
    し、前記ネットワークと前記ローカルホストとの間で転送されるメッセージパケ
    ットを処理することに関する制御を渡す過程であって、前記パケットは、前記プ
    ロトコル処理スタックの代わりに、前記装置によって処理されるようになること
    を特徴とする方法。
  19. 【請求項19】 前記通信制御ブロックを前記ローカルホストに戻す過程を
    さらに含み、前記ネットワークと前記ローカルホストとの間で転送され、前記コ
    ネクションに関連する第2のメッセージパケットが全般に、前記プロトコル処理
    スタックによって処理されるようになることを特徴とする請求項18に記載の方
    法。
  20. 【請求項20】 前記装置によって、前記ネットワークからメッセージフレ
    ームを受信する過程と、 前記装置によって、前記メッセージフレームの要約を作成し、それにより前記
    メッセージフレームの要約を生成する過程と、 前記要約と前記通信制御ブロックとを比較する過程とをさらに含むことを特徴
    とする請求項18に記載の方法。
  21. 【請求項21】 前記装置によって、前記ネットワークにメッセージフレー
    ムを伝送する過程をさらに含み、前記伝送する過程は、前記通信制御ブロックに
    基づいてヘッダを形成する過程と、前記メッセージフレームの前に前記ヘッダを
    付加する過程とを含むことを特徴とする請求項18に記載の方法。
  22. 【請求項22】 プロセッサと、メモリと、プロトコル層の順次式スタック
    とを有するホストコンピュータによってネットワーク通信を行うための方法であ
    って、該方法は、 前記ネットワークから前記ホストによって、データと、前記プロトコル層のス
    タックに関連する複数のヘッダとを含むパケットを受信する過程と、 ハードウエアロジックシーケンサで前記パケットを分類する過程であって、該
    分類する過程は、前記ヘッダを分類し、前記パケットの要約を作成する過程を含
    む、該分類する過程と、 前記要約に基づいて、前記パケットを前記プロトコル層のスタックに送出する
    か、前記データを前記行先に送出することにより前記プロトコル層のスタックを
    バイパスするかを選択する過程とを有することを特徴とする方法。
  23. 【請求項23】 前記プロトコル層のスタックに前記パケットを送出する過
    程と、 前記プロトコル層のスタックを用いて前記パケットを処理し、それにより前記
    メッセージのためのコンテキストを作成する過程と、 前記ネットワークから前記ホストによって、付加データと付加ヘッダとを含む
    関連するパケットを受信する過程と、 前記プロトコル層のスタックによって前記パケットを処理することなく、前記
    関連するパケットを前記行先に送出するために前記コンテキストを用いる過程と
    をさらに含むことを特徴とする請求項22に記載の方法。
  24. 【請求項24】 前記パケットを含むメッセージのためのコンテキストを策
    作成する過程をさらに含み、前記コンテキストは前記ホストとリモートホストと
    の間のコネクションを定義し、前記プロトコル層のスタックに前記パケットを送
    出するか、前記プロトコル層のスタックをバイパスするかの選択は、前記要約を
    前記コンテキストと比較する過程を含むことを特徴とする請求項22に記載の方
    法。
  25. 【請求項25】 前記行先に適した形で前記データを前記行先に送出するこ
    とにより、前記プロトコル層のスタックをバイパスする過程をさらに含むことを
    特徴とする請求項22に記載の方法。
  26. 【請求項26】 ネットワークを経由してリモートホストに接続することが
    できるローカルホストで用いるための装置であって、前記ローカルホストは、前
    記ローカルホストのアプリケーションと前記リモートホストのアプリケーション
    との間のコネクションコンテキストを定義するプロトコル処理層のスタックを動
    作させるCPUを含み、該装置は、 前記CPUと、前記ネットワークとに接続され、前記コンテキストを参照する
    ことにより、前記プロトコル処理層によってネットワークメッセージを処理する
    か、前記プロトコル処理層を回避し、前記ネットワークと前記ローカルホストア
    プリケーションとの間の前記メッセージに含まれるデータを転送するために前記
    コンテキストを用いるかを選択するために構成されるプロセッサを含む通信処理
    機構を備えることを特徴とする装置。
  27. 【請求項27】 前記通信処理機構は、前記プロセッサに接続され、前記ネ
    ットワークから受信されるメッセージパケットを検査するための構成される受信
    シーケンサを備え、前記メッセージパケットは前記プロトコル層のスタックに対
    応する制御情報を含むことを特徴とする請求項26に記載の装置。
  28. 【請求項28】 前記通信処理機構は、前記プロセッサに接続され、前記ネ
    ットワークから受信されるメッセージパケットの要約を生成するために構成され
    る受信シーケンサを備え、前記メッセージパケットは、前記プロトコル層のスタ
    ックに対応する制御情報を含み、前記プロセッサは前記要約を前記コンテキスト
    と比較するように構成されていることを特徴とする請求項26に記載の装置。
  29. 【請求項29】 前記プロセッサは、前記コンテキストに対応するヘッダを
    作成し、前記プロトコル処理層のいくつかに対応する制御情報を含み、前記ホス
    トから前記リモートヘッダに前記メッセージを伝送するために前記データの前に
    前記ヘッダを付加するように構成されることを特徴とする請求項26に記載の装
    置。
  30. 【請求項30】 前記通信処理機構は、前記コンテキストに基づいて、前記
    データに付随するヘッダを用いることなく、前記通信処理機構から前記ホストア
    プリケーションに前記データを送出するためのダイレクトメモリアクセスユニッ
    トを備えることを特徴とする請求項26に記載の装置。
  31. 【請求項31】 前記プロセッサは複数のマイクロプロセッサを備え、前記
    マイクロプロセッサのうちの少なくとも1つは主に、前記ネットワークから前記
    ホストによって受信されるメッセージを処理するように構成され、前記マイクロ
    プロセッサのうちの第2のマイクロプロセッサは前記ホストから前記ネットワー
    クに伝送されるメッセージを処理するように構成されることを特徴とする請求項
    27に記載の装置。
  32. 【請求項32】 前記マイクロプロセッサは、フェーズをローテーションす
    る際に共有されるハードウエア機能を利用することを特徴とする請求項31に記
    載の装置。
  33. 【請求項33】 前記通信処理機構は、複数のキュー記憶ユニットにおいて
    情報をキューに入れるために構成されるキューマネージャを備え、前記キュー記
    憶ユニットのうちの少なくとも1つはSRAMおよびDRAMを含むことを特徴
    とする請求項26に記載の装置。
  34. 【請求項34】 ネットワークに接続することができるホストコンピュータ
    のための通信装置であって、前記ホストコンピュータはプロトコル処理層のスタ
    ックを有するCPUを備え、前記プロトコル処理層のスタックは、ネットワーク
    通信を処理し、前記ホスト内の行先とリモートホスト内の発信元との間のコネク
    ションコンテキストを定義するためにCUPによって動作させることができ、前
    該装置は、 前記ネットワークに接続され、前記装置によって前記ネットワークから受信さ
    れるメッセージパケットを検査するための構成される受信シーケンサであって、
    前記メッセージパケットはデータと、前記プロトコル層のいくつかの関する制御
    情報を有するヘッダとを含み、前記受信シーケンサは前記装置内に記憶するため
    の前記パケットの要約を作成するように構成される、該受信シーケンサと、 前記受信シーケンサと前記ホストとに接続される通信プロセッサであって、該
    通信プロセッサは前記要約と前記通信制御ブロックとを比較し、前記比較に基づ
    いて、プロトコル処理のために前記スタックに前記メッセージパケットを送出す
    るか、前記スタックによって前記メッセージパケットを処理することなく、前記
    行先に直接に前記データを送出するかを選択するように構成される、該通信プロ
    セッサとを備えることを特徴とする通信装置。
  35. 【請求項35】 前記通信プロセッサは、フェーズをローテーションする際
    に動作する複数のパイプライン処理されるマイクロプロセッサを備え、前記マイ
    クロプロセッサのうちの少なくとも1つは前記ネットワークから前記ホストによ
    って受信されるメッセージを処理するために構成され、前記マイクロプロセッサ
    のうちの少なくとも1つは前記ホストから前記ネットワークに伝送されるメッセ
    ージを処理するために構成されることを特徴とする請求項34に記載の装置。
  36. 【請求項36】 前記通信プロセッサ、および前記受信シーケンサのための
    情報を、複数の記憶キューに入れるために構成される論理回路を含むキューマネ
    ージャをさらに備えることを特徴とする請求項9に記載の装置。
  37. 【請求項37】 前記キューはSRAMおよびDRAMの両方を含むことを
    特徴とする請求項36に記載の装置。
  38. 【請求項38】 キャッシュメモリと、複数のコネクションコンテキストと
    をさらに備え、各前記コネクションコンテキストのハッシュが、前記要約を比較
    するための前記キャッシュメモリに格納されていることを特徴とする請求項34
    に記載の装置。
  39. 【請求項39】 前記コネクションコンテキストのうちのいずれが前記キャ
    ッシュメモリに格納されているかを判定するために、最も近い時間に用いられた
    レジスタをさらに備えることを特徴とする請求項38に記載の装置。
  40. 【請求項40】 前記受信シーケンサは、前記メッセージパケットに含まれ
    るヘッダを処理し、前記プロトコル処理層のスタックに概ね対応する制御情報を
    有するための一連のハードウエア論理ユニットを備えることを特徴とする請求項
    34に記載の装置。
  41. 【請求項41】 前記通信プロセッサは、前記コンテキストに基づいて、前
    記ヘッダを用いることなく、前記データを前記ホスト行先に送出するようにダイ
    レクトメモリアクセスコントローラに命令することを特徴とする請求項34に記
    載の装置。
  42. 【請求項42】 前記通信プロセッサは、第2のメッセージを伝送し、それ
    により、送信データの前に前記コンテキストから導出されるヘッダを付加し、前
    記ホスト行先から前記ネットワークに前記送信データを転送するように構成され
    ることを特徴とする請求項34に記載の装置。
  43. 【請求項43】 CPUを有するローカルホストとリモートホストとの間で
    通信を行うための装置であって、前記ローカルホストと前記リモートホストとは
    ネットワークによって接続され、該装置は、 前記ネットワークと前記ローカルホストとに接続される通信処理機構であって
    、前記通信処理機構はデータパケットを処理し、前記パケットの要約を生成する
    ために前記CPUによって動作させることができるハードウエアロジックを含む
    、該通信処理機構と、 前記ローカルホスト内に配置され、通信制御ブロックを作成し、前記通信制御
    ブロックを前記通信処理機構に渡すためにCPUによって動作させることができ
    るプロトコル処理スタックであって、前記通信制御ブロックは、前記ローカルホ
    ストと前記リモートホストとの間のコネクションを定義する、該プロトコル処理
    スタックとを備え、 前記通信処理機構と前記プロトコル処理スタックとは、前記通信処理機構が前
    記通信制御ブロックを保持しているときに、前記コネクションに対応し、前記ネ
    ットワークと前記ローカルホストとの間で転送されるメッセージが、前記CPU
    の代わりに前記通信処理機構によって処理されるように構成されることを特徴と
    する装置。
  44. 【請求項44】 前記通信処理機構は、複数のネットワークコネクションを
    有することを特徴とする請求項43に記載の装置。
  45. 【請求項45】 ネットワークと、プロトコル層のスタックを有するホスト
    との間の通信を処理するための装置であって、該装置は、 前記ネットワークから受信されるメッセージパケットを分類するための複数の
    論理ユニットであって、前記パケットは、データとヘッダとを含み、ビットのス
    トリームとして前記論理ユニットを通って流れ、前記論理ユニットは前記ストリ
    ームから前記パケットの要約を作成する、該論理ユニットと、 前記パケットと、前記要約とを格納するためのメモリと、 前記要約とコネクションコンテキストとを整合させ、前記コンテキストによっ
    て指示される前記ホスト内の行先に、前記プロトコル情報を用いることなく、前
    記パケットを移動させるためのマイクロプロセッサとを備えることを特徴とする
    装置。
  46. 【請求項46】 前記マイクロプロセッサは複数のパイプライン処理される
    プロセッサを含み、前記プロセッサのうちの1つは、ネットワークメッセージを
    伝送するために構成され、前記プロセッサのうちの別のプロセッサはネットワー
    クメッセージを受信するために構成されることを特徴とする請求項45に記載の
    装置。
  47. 【請求項47】 前記コネクションコンテキストと整合しない第2の要約を
    有する第2のパケットを処理するために、プロトコル処理層のスタックを動作さ
    せるCPUをさらに備えることを特徴とする請求項45に記載の装置。
  48. 【請求項48】 ネットワークとホストコンピュータとの間でメッセージを
    転送するための装置であって、前記メッセージは、プロトコル層のシーケンスに
    対応する一連のヘッダを含み、前記装置は、ビットのストリームとして前記一連
    のヘッダを処理し、前記メッセージの状態を生成するために配列される一連のシ
    ーケンサを含み、前記シーケンサのうちの少なくとも1つは、前記プロトコル層
    の上位層に対応するヘッダを分類するためのロジックを含んでいることを特徴と
    する装置。
  49. 【請求項49】 前記シーケンサに接続され、前記ホストの行先に、前記ヘ
    ッダを用いることなく、前記メッセージを送出するために前記状態を用いること
    ができる通信プロセッサをさらに備えることを特徴とする請求項48に記載の装
    置。
  50. 【請求項50】 ネットワークとホストとの間でメッセージを伝送するため
    の装置であって、該装置は、 複数のキューを定義する可変長のFIFO回路のアレイと、 前記ネットワークから受信された前記メッセージのフレームの状態を生成し、
    前記キューの少なくとも1つに前記状態を格納するために構成される受信シーケ
    ンサと、 フェーズを変更する際に一組の論理ユニットを動作させる複数のパイプライン
    処理されるマイクロプロセッサであって、前記マイクロプロセッサのうちの第1
    のマイクロプロセッサは前記ネットワークから受信される前記メッセージを処理
    するように構成され、前記マイクロプロセッサのうちの第2のマイクロプロセッ
    サは前記ネットワークに伝送される前記メッセージを処理するように構成され、
    前記プロセッサは、前記メッセージの転送を加速するために、前記シーケンサと
    ともに通信制御ブロックを用いる、該マイクロプロセッサとを備えることを特徴
    とする装置。
  51. 【請求項51】 前記キューの少なくとも1つは、DRAMおよびSRAM
    記憶ユニットを含むことを特徴とする請求項50に記載の装置。
  52. 【請求項52】 ネットワークと、プロセッサとプロトコル層の順次式スタ
    ックとを有するホストコンピュータとの間で通信を行うための装置であって、該
    装置は、 前記ネットワークから前記ホストコンピュータによって、データと、前記プロ
    トコル層のスタックに対応する複数のヘッダとを含むメッセージパケットを受信
    するための手段であって、前記データは、前記ヘッダのプロトコル処理に従って
    前記ホストコンピュータの行先に配置するために用いられる、該受信するための
    手段と、 前記ヘッダのグループの要約を作成し、前記複数のヘッダを処理するための手
    段と、 前記ヘッダのグループの前記要約に従って前記行先に前記データを送出するた
    め手段とを備え、それにより前記プロトコル層のスタックによる前記パケットの
    順次式処理が回避されるようになることを特徴とする装置。
JP2000568012A 1998-08-28 1998-11-20 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム Expired - Fee Related JP4264866B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (28)

* Cited by examiner, † Cited by third party
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