(57)【特許請求の範囲】
【請求項１】
メモリとＣＰＵとを有するホストコンピュータに接続された専用のハードウェアコンポーネントにより、ネットワークシステムから受信した各種タイプのフレームを前記ホストコンピュータのメモリにマップする方法であって：
（ａ）付随するヘッダとペイロードを含むフレームを前記専用のハードウェアコンポーネントにより受信し；
（ｂ）前記受信したフレームのヘッダの少なくとも一つのフィールドを前記専用のハードウェアコンポーネントにより読み取り；
（ｃ）前記専用のハードウェアコンポーネントにより、各フィールドを、少なくとも一つの対応する予め定められた比較値と比較し；
（ｄ）前記専用のハードウェアコンポーネントにより、前記の比較の結果に基づいて、前記受信したフレームにコードを割り当て；
（ｅ）前記専用のハードウェアコンポーネントにより、前記受信したフレームからのデータを、前記ホストコンピュータのメモリ内の前記コードに対応するバッファ内に記憶させ；
（ｆ）優先順位を各バッファに割り当て；
（ｇ）前記バッファの内容を前記優先順位に基いて前記ホストコンピュータのＣＰＵにて実行されるソフトウェアにより処理する；
ステップを含んでなる方法。
【請求項２】
前記比較ステップの前に、各フィールドを、予め定められた対応するマスク値によってマスクするステップをさらに含んでいる請求項１に記載の方法。
【請求項３】
ネットワークシステムがファイバーチャネルネットワークである請求項１に記載の方法。
【請求項４】
フィールドがＲ＿ＣＴＬ／ＴＹＰＥフィールドである請求項３に記載の方法。
【請求項５】
少なくとも一つのフレームのタイプがＴＣＰ／ＩＰフレームである請求項３に記載の方法。
【請求項６】
各バッファがリングバッファである請求項１に記載の方法。
【請求項７】
メモリとＣＰＵとを有するホストコンピュータを備え、ネットワークシステムから受信した各種タイプのフレームを前記ホストコンピュータのメモリ内にマップするシステムであって、
前記ホストコンピュータに接続された専用のハードウェアコンポーネントを備え、
更に、前記専用のハードウェアコンポーネントは：
（ａ）付随するヘッダとペイロードを含むフレームを受信するレシーバ回路；
（ｂ）各々、少なくとも一つの予め定められた比較値を記憶する少なくとも一つのレジスタ；
（ｃ）受信したフレームのヘッダの少なくとも一つのフィールドを、各レジスタの対応する予め定められた各比較値と比較する比較回路；
（ｄ）前記比較の結果に基づいて、前記受信したフレームにコードを割り当てるコード割り当て回路；及び
（ｅ）前記受信したフレームからのデータを、前記ホストコンピュータのメモリ内の前記コードに対応するバッファに記憶させるバッファ記憶システム；
を備え、
更に、前記ホストコンピュータのメモリは前記バッファ記憶システムにより前記バッファ内に記憶されたデータを処理するソフトウェアを備え、前記コードに優先順位がつけられていて、前記バッファ記憶システムはその優先順位に基いて、前記受信したフレームからのデータを記憶するように構成されてなるシステム。
【請求項８】
各レジスタが、各予め定められた比較値に関連する予め定められたマスク値を記憶し、そして前記比較回路が、比較を行う前に、対応する予め定められたマスク値によって、各フィールドをマスクする請求項７に記載のシステム。
【請求項９】
ネットワークシステムがファイバーチャネルネットワークである請求項７に記載のシステム。
【請求項１０】
少なくとも一つのフィールドがＲ＿ＣＴＬ／ＴＹＰＥフィールドである請求項９に記載のシステム。
【請求項１１】
少なくとも一つのフレームタイプがＴＣＰ／ＩＰフレームタイプである請求項９に記載のシステム。
【請求項１２】
各バッファがリングバッファである請求項７に記載のシステム。
【請求項１３】
前記バッファ内に記憶させるステップは、前記専用のハードウェアコンポーネントが前記ホストコンピュータのメモリに直接アクセスすることによって実行されるステップである請求項１に記載の方法。
【請求項１４】
前記バッファ記憶システムは、前記ホストコンピュータのメモリに直接アクセスすることによって前記データを前記バッファに記憶させる請求項７に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータネットワークに関し、さらに詳しくは制御とタイプヘッダのフィールド（control and type header field）に基づいてフレームをマップすることによって、フレームのシーケンスを処理し伝送することに関する。
【０００２】
【従来の技術】
近年、コンピュータと周辺装置の数は急激に増大している。そのため、これら装置の相互接続の改良された方法が要望されている。多種類のネットワーク化のパラダイムが開発されて、異なる種類のコンピュータと周辺コンポーネントが互いに交信できるようになってきた。
【０００３】
データを、このようなネットワークにそって交換できる速度に問題がある。このことは、ネットワークアーキテクチャの速度の増大が、より速いコンピュータの処理速度と歩調がそろっていないから、予想外のことではない。コンピュータチップの処理力は、これまで、約１８ヶ月毎に２倍になっており、強力なマシンと”帯域幅ハングリー(bandwidth hungry)”アプリケーションがどしどし生まれている。入力／出力の１秒当たり１メガビットが、一般に、処理力の”ＭＩＰＳ”（１秒当たり数百万の命令）に対して必要であると推定されている。現在、ＣＰＵは優に２００ＭＩＰＳを超えているので、ネットワークがこれらの一層速い速度に歩調を合わせることは困難である。
【０００４】
広域のネットワークとチャンネルは、コンピュータのネットワークアーキテクチャのために開発された二つの方法である。従来のネットワーク（例えばＬＡＮやＷＡＮのネットワーク）は、大きなフレキシビリティと比較的長い距離の通信能力(relatively large distance capability)を示す。The Enterprise System Connection(ESCON)およびThe Small System Interface(SCSI)などのチャネルは、高性能と高い信頼性を得るために開発されたものである。チャネルは一般に、コンピュータ間またはコンピュータと周辺装置の間の専用の短距離の接続を使用する。
【０００５】
チャネルとネットワーク両者の特徴が、”ファイバーチャネル(Fibre Channel)”として知られている新しいネットワーク標準に組み込まれて来た。ファイバチャネルシステムは、チャネルの速度と信頼性およびネットワークのフレキシビリティーと接続性を兼ね備えている。ファイバーチャネルの製品は、現在、非常に高いデータ速度、例えば、２６６Ｍｂｐｓまたは１０６２Ｍｂｐｓで作動可能である。このような速度は、非圧縮、フルモーション、高品質のビデオ(uncompressed full motion, high-quality video)などの全デマンディングアプリケーション(quite demanding application)を扱うのに十分な速度である。
【０００６】
ファイバーチャネルネットワークを配備するのに一般に３種の方法がある。すなわち単純なポイントツーポイント接続；アービトレーテッドループ(arbitrated loop)；および交換ファブリック(switched fabric)である。最も簡単な形態は、ポイントツーポイントの配置構成であり、この場合、二つのファイバーチャネルシステムが、単純に、直接、接続されている。アービトレーテッドループは、アービトレーションによって、帯域幅に対する共用アクセスを提供するファイバーチャネルリングの接続である。交換ファイバーチャネルネットワーク（”ファブリック”と呼称される）は、クロスポイントスイッチングの利点を利用することによって、最高の性能を発揮する。
【０００７】
上記のファイバーチャネルのファブリックは、従来の電話システムとほぼ同様に作動する。このファブリックは、ワークステーション、パーソナルコンピュータ(ＰＣ)、サーバ、ルータ、メインフレームおよび記憶装置などのファイバーチャネルのインターフェースポートをもっている各種の装置を接続できる。これらの装置は各々、フレームのヘッダ中の宛先ポートのアドレスに入ることによって、該ファブリックを”呼び出す”オリジネーションポート(origination port)を持つことができる。このファイバーチャネルの仕様は、このフレームの構造を定義する（このフレーム構造は、以下に考察しかつ本発明が扱うデータ転送の問題を提起する）。
【０００８】
上記ファイバーチャネルファブリックは所望の接続をセットアップする全ての作業を行うので、フレームのオリジネータ(フレームの発信元、frame originator)は、複雑なルーチングアルゴリズム（経路選択アルゴリズム）に関与する必要がない。セットアップすべき複雑な相手固定接続（ＰＶＣ）が全くない。ファイバーチャネルファブリックは、１６００万を超えるアドレスを扱うことができるので非常に大きなネットワークを収容できる。このファブリックはポートを追加するだけで拡大することができる。完全に構成されたファイバーチャネルのネットワークの集合体データの速度(aggregate data rate)は、１秒当りテラビットの範囲内であり得る。
【０００９】
ファイバーチャネルの接続法の上記三つの基本的なタイプ各々は、ファイバーチャネルのテクノロジーを使用するいくつもの方式を示した図１に開示されている。特にメインフレームを互いに接続するポイントツーポイントの接続１００が示されている。ディスク記憶ユニットを接続するファイバーチャネルのアービトレーテッドループ１０２が示されている。ファイバーチャネルのスイッチファブリック１０４が、ワークステーション１０６、メインフレーム１０８、サーバ１１０、ディスク駆動装置１１２およびローカルエリアのネットワーク（ＬＡＮ）１１４を接続している。このようなＬＡＮとしては例えばイーサネット(Ethernet)、トークンリング(Token Ring)およびファイバー分散データインターフェース(fibre distributed data interface)（ＦＤＤＩ）ネットワークがある。
【００１０】
ＡＮＳＩの仕様（X3.230-1994）に、ファイバーチャネルネットワークが定義されている。この仕様によれば、ファイバーチャネルの機能は、五つの層に配分されている。図２に示すように、ファイバーチャネルの五つの機能層は、ＦＣ−０層：物理的媒体層；ＦＣ−１層：コーディングおよびエンコーディングを行う層；ＦＣ−２層：実転送機構（フレーミングプロトコルおよびノード間のフロー制御を含む）；ＦＣ−３層：共通サービスの層；およびＦＣ−４層：上層のプロトコルである。
【００１１】
ファイバーチャネルは、比較的速い速度で作動するとはいえ、さらに速度を上げて、一層速いプロセッサの要求を満たすことが望ましい。これを実行する一方法は、インターフェースポイントで起こる遅延を除くかまたは小さくする方法である。この遅延の一つは、フレームをＦＣ−１層からＦＣ−２層へ転送する間に生じる。このインターフェースにおいて、ファイバーチャネルのデータリンクでリンクされた装置はファイバーチャネルのフレームをシリアルに受信する。プロトコルエンジン（ＰＥＮＧ）が各フレームを受信して、これらフレームを次の層すなわち図２に示すＦＣ−２層で処理する。上記プロトコルエンジンの機能には、各フレームを確認する機能；各フレームをホストに転送するダイレクトメモリアクセス（ＤＭＡ）の操作を待ち行列に入れる(キューする)機能；およびトランスミットフレームを構築する機能がある。ファイバーチャネルフレームにはいくつものタイプがある。各フレームはヘッダとペイロード部分をもっている。フレームヘッダの一部は、フレームのタイプおよびルーティング情報を提供する、ルーティング制御とタイプ（Ｒ＿ＣＴＬ／ＴＹＰＥ）フィールドである（Ｒ＿ＣＴＬ／ＴＹＰＥフィールドは別個のルーティングとタイプフィールドとして実行され得る）。ファイバーチャネルのネットワークは、インターネットと互換性があるＴＣＰ／ＩＰを認識し扱うことができる。ＴＣＰ／ＩＰフレームはリンクコントロールフレームとデータフレームを含み、各々、そのそれぞれのフレームヘッダ内のＲ＿ＣＴＬ／ＴＹＰＥフィールドによって識別される。ＴＣＰ／ＩＰフレームは一般に、他のタイプのファイバーチャネルフレームとは異なる処理を行う必要がある。特に、ＴＣＰ／ＩＰフレームは、特定の期間内にホストプロセッサからの応答を必要とし、さもないとエラー条件（エラー状態）が生じる。
【００１２】
フレームを扱う通常の方法は一般に、フレームバイフレームベース(frame-by-frame basis)でホストＣＰＵが行う方法である。例えば、受信されたフレームの確認およびＤＭＡの操作と肯定応答のセットアップは一般に、ホストＣＰＵに行わせる。これはフレームの伝送と受信の速度を制限して、ホストＣＰＵが他のタスクを実行することを阻止する。さらにソフトウェアプロトコル”スタック(stack)”を有するホストＣＰＵは、ファイバーチャネルのような速いネットワークと歩調を合わせることは困難である。
【００１３】
一般的なファイバーチャネルのホストアダプタでは、フレームルーティングの機能は、オンボードマイクロプロセッサで実行される。しかし、低コストで実行する場合、マイクロプロセッサがベースの製品は、専用のハードウェアまたはシーケンサに基づいた解決策を利用する製品と置き換えられる。このような解決策では、オンボードプロセッサは、フレーム内のＲ＿ＣＴＬ／ＴＹＰＥフィールドを処理するのに十分な計算力を持っていないので、フレームは、処理を行うためホストメモリに送らねばならない。ホストがフレームのタイプをソートするのに時間を費やすため、入ってくるリクエストに対する応答が著しく遅延することがある。
【００１４】
【発明が解決しようとする課題】
上記のことからみて、本発明の目的は次のとおりである。すなわち、ファイバーチャネルのネットワークなどの高速ネットワークにおけるデータ転送処理速度を上昇させること；データフレームのプロトコルエンジンの処理を高速化するテクノロジーを提供すること；プロトコルエンジンとホストＣＰＵとシステムメモリとの間のデータトラヒックを最小限にすること；ハードウェアでファイバーチャネルフレームルーティングを実行すること；およびハードウェアを使用して特定のタイプのフレームについてルーティングを実行することによって、ホストのソフトウェアの効率を改善することであり、さらに詳しく述べると、Ｒ＿ＣＴＬ／ＴＹＰＥフィールドに基づく特定のホストベースのリング中にフレームの初期マッピングを行うことである。
【００１５】
【発明の要約】
本発明は、コンピュータのデータリンクにおけるデータのフレームの処理と転送に関する。好ましい実施態様で、本発明は、ファイバーチャネルのプロトコルエンジンに、入ってくるフレームを、各フレームのルーチング制御（経路選択制御）とタイプのフィールドに基づいて、ホストメモリ内の特定のバッファリング中にマップさせるものである。
【００１６】
さらに詳しく述べると、本発明のファイバーチャネルリンク（ＮＬ−ポート）は、ホストのソフトウェアに、ルーティング制御（Ｒ＿ＣＴＬ）の比較フィールド(match field)とマスクフィールド(mask field)およびＴＹＰＥの比較フィールドとマスクフィールドをセットアップさせるレシーバルーティングコード（ＲＲコード）レジスタを備えている。前記ＮＬ−ポートは、受信したフレーム内の対応するＲ＿ＣＴＬ／ＴＹＰＥフィールドに対する比較およびマスクのためにこれらのレジスタを使用し、いくつものＲ＿ＣＴＬ／ＴＹＰＥのホストメモリバッファリングのなかのどれを、前記受信されたフレームを記憶するのに使用すべきかを決定する。好ましい実施態様で、ＮＬ−ポートは、フレームに付随するフレーム開始（ＳＯＦ）の状態ワード内に、３ビットコード（ＲＲコードフィールド）を置く。前記ＲＲコードは、特定のＲ＿ＣＴＬ／ＴＹＰＥホストメモリバッファリングを示すか、または一致すること(match)が全くなかったこと、または複数の一致があったことを示す。
【００１７】
プロトコルエンジン（ＰＥＮＧ）は、受信したフレームのＳＯＦ状態ワード内の前記ＲＲコードフィールドを読み取り、次いで適当なＲ＿ＣＴＬ／ＴＹＰＥバッファリングに対するダイレクトメモリアクセス（ＤＭＡ）の操作を待ち行列に入れる（queue）。前記ＰＥＮＧは、ホストメモリ内の記憶場所の現時点の開始アドレスと長さを示す、指示されたＲ＿ＣＴＬ／ＴＹＰＥバッファリングに対するバッファリストエントリ（ＢＬＥ）を”プル(pull)”する。次にＰＥＮＧは、受信したフレームのヘッダおよび／またはペイロードを、指示されたバッファリストエントリによって参照されるホストメモリ中に書きこむ。最後に、ＰＥＮＧは、前記書きこみ操作が完了したとき、ホストドライバー(host driver)に応答する。次いで、ホストは、指示されたバッファリングの内容を処理できる。そのバッファリングは、フレームタイプについて、事前分類（予めのソート、pre-sort）がなされているので、ホストは、入ってくるフレームに対して、一層効率的に応答することができる。
【００１８】
本発明の諸利点は次のとおりである。ホストのソフトウェアの効率が改善されること；受信フレーム処理が一層高速であること；およびハードウェアを使って、特定のタイプのフレームに付随するホストバッファリングに対するルーティングを実行することによって、受信したフレームのルーティングが一層速いことである。
【００１９】
本発明の一つ以上の実施態様の詳細を、添付図面と以下の説明によって述べる。本発明の他の特徴、目的、および利点は、以下の説明と図面および特許請求の範囲から明らかになるだろう。
【００２０】
【発明の実施の形態】
概要
本発明は、ハードウェアを使用して、特定のタイプのフレームに対しルーティングを実行することによって、ソフトウェアの効率を部分的に改善するものである。本発明は、ファイバーチャネルネットワークのアーキテクチャの一部として実行されるとき、ファイバーチャネルのフレームヘッダ内のルーティング制御／タイプ（Ｒ＿ＣＴＬ／ＴＹＰＥ）フィールドを使用して、入ってくる受信フレームを、ホストメモリ内のバッファの特定のリングにマップするものである。
【００２１】
図３は、ファイバーチャネルネットワークとともに使用するように構成されている好ましい通信処理システムを示す。シリアルデータがファイバーチャネルのデータリンク３００にそって受信される。データリンク３００から受信されたフレームはＮＬ―ポート３０２によって処理され、ＮＬ−ポート３０２は、入ってくるシリアルデータをデコードし、ワードに並列化（parallelize）し、次にそれらワードを公知の方式でフレームにアセンブルする。
【００２２】
フレームは一般に、三つの部分、すなわち、プリアンブル、データすなわち”ペイロード”の部分、および後書き部分（トレーラー部分）をもっている。ファイバーチャネルのデータリンクにおいては、例えば、フレームは、フレーム開始（ＳＯＦ）ワード（４バイト）；ゼロ〜２１１２のペイロードバイト間のフレームヘッダ（２４バイト）と周期冗長検査（ＣＲＣ）ワード（４バイト）を含むデータ部分；ならびにフレーム終わり（ＥＯＦ）ワード（４バイト）をもっている。前記フレームヘッダを使って、リンクアプリケーションを制御し、装置のプロトコルの転送を制御し、および欠落または異常のフレームを検出する。前記ＣＲＣワードは、伝送に、例えばデータ破壊 (data corruption)などの問題があるかどうか、またはフレームの一部が伝送中にドロップしたかどうかを示す。
【００２３】
また、ＮＬ−ポート３０２は、受信した各フレームに対するＣＲＣワードをチェックし、結果として得られた”グッド−バッド（good-bad）”のＣＲＣ状態インジケータを、ＥＯＦワードから生成されたＥＯＦ状態内の他の状態情報ビットに加える。次にＮＬ−ポート３０２は、各フレームを、受信フレームＦＩＦＯバッファ３０４中に書きこむ。好ましい受信フレームＦＩＦＯバッファモジュール３０４に関するさらなる詳細事項は、本発明の譲受人と同じ譲受人に譲渡された、発明の名称が”RECEIVE FRAME FIFO WITH END OF FRAME BYPASS”である１９９７年９月２３日付け出願で同時係属中の米国特許願第０８／９３５，８９８号に記載されている。なおこの特許願の開示事項は本願に援用するものである。
【００２４】
次に、フレームは、全二重通信プロセッサ（プロトコルエンジン（ＰＥＮＧ）とも呼称される）３０６が受信する。そのＰＥＮＧ３０６が以下のいくつもの機能を実施する。すなわち１）受信したフレーム内のデータをダイレクトメモリアクセス（ＤＭＡ）チャネル３１６を介してプロセッサ３１４のホストメモリ３１２中に書きこむためのホストの指令を、待ち行列に入れる機能；２）フレームヘッダの妥当性を確認して、そのフレームが受信すべき次の論理フレームであることを保証する機能；３）当該フレームが不良か不良でないかを確認する機能；および４)受信したフレームまたはホストが発した伝送指令に応答して伝送フレームを生成する機能を実施する。
【００２５】
ＰＥＮＧ３０６は、フレームヘッダが受信フレームＦＩＦＯバッファ３０４から受信されると、ＰＥＮＧバッファ３１０内の前記フレームヘッダの妥当性を確認する。また、ＰＥＮＧ３０６は、伝送フレームを構築して、その伝送フレームを、伝送フレームＦＩＦＯバッファ３０８を介して、データリンク３００に送る。ＮＬ−ポート３０２、受信フレームＦＩＦＯバッファ３０４、およびＰＥＮＧ３０６は、単一のチップ、例えば特定用途向集積回路（ＡＳＩＣ）に実装することができる。好ましいＰＥＮＧ３０６のさらなる詳細事項は、本発明の譲受人と同譲受人に譲渡された、発明の名称が”FULL-DUPLEX COMMUNICATION PROCESSOR”である１９９７年９月２４日付け出願で同時係属中の米国特許願第０８／９３７，０６６号に記載されている。なおこの特許願の開示事項は本願に援用するものである。フレームの妥当性確認に関する情報については、本発明の譲受人と同じ譲受人に譲渡された、発明の名称が”METHOD OF VALIDATION AND HOST BUFFER ALLOCATION FOR UNMAPPED FIBRE CHANNEL FRAMES”である１９９８年３月２６日付け出願で同時係属中の米国特許願第０９／０４８，９３０号を参照されたい。なおこの特許願の開示事項は本願に援用するものである。
【００２６】
レジスタの比較とマスキング
図４は本発明の好ましい通信処理システムのレジスタとバッファのインタラクションのブロック図である。好ましい実施態様で、ＮＬ−ポート３０２、受信フレームＦＩＦＯバッファ３０４、プロトコルエンジンのＰＥＮＧ３０６、ならびに一組の比較およびマスクのレシーバルーティングコード（”ＲＲコード”）レジスタ４００が単一の集積回路４０２内に実装されている。前記ＲＲコードレジスタ４００はＮＬ−ポート３０２に連結されている。例えばＲＲコードレジスタ４００は、ＲＲコード記憶用に、三つの３２ビットレジスタ４００―０、４００―１および４００―２を備えている。
【００２７】
ＲＲコードレジスタ４００−０、４００−１および４００−２は各々、ＴＹＰＥ比較、ＴＹＰＥマスク、Ｒ＿ＣＴＬ比較、およびＲ＿ＣＴＬマスクを定義（定める、規定する）する記憶フィールド値を記憶できる。これらフィールドの内容は、受信フレーム内の対応するフィールドと比較することができる。このように、ＲＲコードは、複数のＴＹＰＥ値および／または複数のＲ＿ＣＴＬ／ＴＹＰＥ値およびその組み合わせを比較するように定義できる。一般的な実施態様で、ＲＲコードレジスタの比較フィールドまたはマスクフィールドは各々８ビットである。マスクビットは、フレームのＲ＿ＣＴＬとＴＹＰＥのフィールド内のどの対応するビットを比較すべきかを示し、一方、比較ビットは比較すべき値を示す。例えば、マスク値：”１０００１０００”は、ビット３と７だけ（最下位のビットがゼロ位である右から計数して）が比較値と比較できることを意味する。
【００２８】
ＮＬ−ポート３０２がフレームを受信すると、ＲＲコードレジスタ４００の内容が、各フレームのＲ＿ＣＴＬとＴＹＰＥのフィールドと比較される。フレームヘッダ内のＲ＿ＣＴＬとＴＹＰＥフィールドの特別のセットの値が、そのフレームと特定のバッファリングとの関連を定義する。好ましい実施態様に、三つのＲ＿ＣＴＬ／ＴＹＰＥバッファリング：０、１および２があり、これらは各々、ＲＲコードレジスタ４００―０、４００―１、４００―２に対応している。
【００２９】
ＲＲコードレジスタ４００の内容のセットと、受信されたフレームのＲ＿ＣＴＬとＴＹＰＥのフィールドとが一致すると、ＮＬ−ポート３０２は、どのバッファリングを使用して、フレームヘッダおよび／またはペイロードを記憶させるべきかを示すＲＲコードを生成する。他の事象もＲＲコードに符号化(encord)できる。好ましい実施態様で、三つのビットを使用して、下記の結果を、単一のＲＲコードに符号化できる。
【００３０】
【表１】
0004173636.tif 000002
【００３１】
生成したＲＲコードを次に、好ましくはＮＬ−ポート３０２によって、受信したフレームに付随するＳＯＦ状態ワード中に挿入する。次いで、ＰＥＮＧ３０６が、前記受信したフレームのＳＯＦ状態ワード中のＲＲコードフィールドを読み取り、適当なＲ＿ＣＴＬ／ＴＹＰＥバッファリング４２０へのダイレクトメモリアクセス（ＤＭＡ）の操作を待ち行列に入れて、対応するフレームヘッダおよび／またはペイロードを記憶する。好ましい実施態様で、前記バッファリングは、以下の関連するフレームタイプ：伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）バッファ４２０―０、バッファリンクサービス（ＢＬＳ）バッファ４２０―１および拡張リンクサービス（ＥＬＳ）バッファ４２０―２を扱うために定義（規定）される。好ましい実施態様で、Ｒ＿ＣＴＬ／ＴＹＰＥバッファリング４２０を用いて、ファイバーチャネルプロトコル（ＦＣＰ）レスポンダフレーム(responder frame) （すなわち、ローカルに始まったＦＣＰ交換（FCP exchange）のためのフレーム）以外のすべてのフレームを受信する。ＲＲコード”０００”または”１××”を生じるフレームは、デフォルトのＲ＿ＣＴＬ／ＴＹＰＥバッファリングを使用できる。最後に、ＰＥＮＧ３０６は、フレームが記憶されて操作が完了すると、ホストドライバーに応答を通知する。
【００３２】
区分されたＲ＿ＣＴＬ／ＴＹＰＥバッファリング４２０は、入ってくるフレームを適当なドライバーエントリポイントに対しデマルチプレクスする際に、ホストを援助する。これらのバッファリングは、好ましくは、Ｒ＿ＣＴＬ／ＴＹＰＥバッファリング４００―１が最も優先されるように優先付けられ、最初に、ホストによって処理される。優先順位は、より優先順位の低いデフォルトのＲ＿ＣＴＬ／ＴＹＰＥの比較を参酌できる。このアーキテクチャは、ＴＣＰ／ＩＰなどのようなより高レベルのプロトコルを、ファイバーネットワークチャネルで扱うのに特に好適である。とういうのは、このようなプロトコルは、他のプロトコルより一層タイムリーな方式で、ホストからの応答を要求し得るからである。フレームをタイプによって優先順位をつけて分類することによって、ホストは、特定タイプのフレームシーケンスに一層迅速に応答するようにプログラムすることができる。
【００３３】
好ましい実施態様で、Ｒ＿ＣＴＬ／ＴＹＰＥバッファリング４２０は、好ましくはバッファディスクリプタ４５２の固定サイズの順編成リスト(sequential list)４５０によって定義される。前記リスト４５０は、論理リングとして、ハードウェアによって管理される。バッファディスクリプタ４５２は、二つのワードすなわち、実際の記憶バッファの（好ましくはワードの境界上の）開始を指すアドレス４５６、および前記バッファ内のワードの数に対する長さ（例えばバイト数）で構成されている。バッファリングのこのような間接定義は当該技術分野で公知である。
【００３４】
操作の流れ
図５は、本発明の好ましい実施態様による、ヘッダフィールドに基づいてフレームをマップする方法の簡易フローチャートである。ＮＬ−ポート３０２が、ファイバーチャネルデータリンク３００からフレームを受信し（ステップ５００）次いで受信されたフレームのＲ＿ＣＴＬ／ＴＹＰＥフィールドを読み取る（ステップ５０２）。Ｒ＿ＣＴＬ／ＴＹＰＥフィールドをＲＲコードレジスタ４００の内容と比較した結果に基づいて、別個のＲＲコードを前記フレームに割り当てる（ステップ５０４）。そのフレームをＰＥＮＧ３０６に送って、前記ＲＲコード値に基づいて処理する（ステップ５０６）。特に、ＰＥＮＧ３０６は、前記割り当てられたＲＲコードに対応する三つのバッファリング４２０のうちの一つに、前記フレームを記憶させるか、または前記ＲＲコードがＲＲコードレジスタ４００と全く一致しないことを示した場合は、デフォルトのバッファリングに、前記フレームを記憶させる（ステップ５０８）。
【００３５】
図６は、本発明の好ましい実施態様による、Ｒ＿ＣＴＬ／ＴＹＰＥヘッダフィールドに基づいて、ファイバーチャネルフレームをマップする方法のより詳細なフローチャートを示す。さらに具体的に述べると、ＮＬ−ポート３０２は、ファイバーチャネルフレームをファイバーチャネルデータリンク３００から受信し、次に、その受信したフレームのＲ＿ＣＴＬ／ＴＹＰＥフィールドを読み取る（ステップ６００）。受信したフレームのＲ＿ＣＴＬ／ＴＹＰＥフィールドがＲＲコードレジスタ４００−０と一致したならば（すなわちＴＣＰ／ＩＰフレームを示しているならば）（ステップ６０２）、ＮＬ−ポート３０２は、受信フレームのＳＯＦ状態ワードフィールド内に００１の値を有する３ビットのＲＲコードを置く。
【００３６】
しかし、受信したフレームのＲ＿ＣＴＬ／ＴＹＰＥフィールドがＲＲコードレジスタ４００−１と一致したならば（すなわちＢＬＳフレームを示しているならば）（ステップ６０６）、ＮＬ−ポート３０２は、受信フレームのＳＯＦ状態ワードフィールド内に０１０の値を有する３ビットのＲＲコードを置く（ステップ６０８）。
【００３７】
あるいは、受信フレームのＲ＿ＣＴＬ／ＴＹＰＥフィールドがＲＲコードレジスタ４００−２と一致したならば（すなわちＥＬＳフレームを示しているならば）（ステップ６１０）、ＮＬ−ポート３０２は、受信フレームのＳＯＦ状態ワードフィールド内に０１１の値を有する３ビットのＲＲコードを置く（ステップ６１０）。
【００３８】
しかし、受信したフレームのＲ＿ＣＴＬ／ＴＹＰＥフィールド３１０の値が、前記三つのＲ＿ＣＴＬ／ＴＹＰＥコードレジスタ４００のうちの一つと一致しなかったならば、ＲＲコードは、そのフレームはデフォルトのＲ＿ＣＴＬ／ＴＹＰＥバッファリングに記憶されるべきであるということをＰＥＮＧ３０６に示す、デフォルトの値（好ましくは０００）に設定される（ステップ６１４）。
【００３９】
次に前記フレームを、ＰＥＮＧ３０６に送って，前記フレームのＳＯＦ状態ワードフィールドに割り当てられたＲＲコードの値に基づいて処理する。ＰＥＮＧ３０６は、受信したフレームの前記割り当てられたＲＲコードを読み取り（ステップ６１６）、次いで対応するバッファリングに対するＤＭＡ操作を待ち行列に入れる（ステップ６１８）。
【００４０】
より詳細に述べると、ステップ６１８は以下の機能を実施する。すなわち、受信したフレームのＲＲコードが”００１”に等しかった場合（ステップ６２０）、ＰＥＮＧ３０６は、ＴＣＰ／ＩＰバッファリング４２０−０に対するＤＭＡの操作を待ち行列に入れる（ステップ６２２）；受信したフレームのＲＲコードが”０１０”に等しかった場合（ステップ６２４）、ＰＥＮＧ３０６は、ＢＬＳバッファリング４２０−１に対するＤＭＡ操作を待ち行列に入れる（ステップ６２６）；受信したフレームのＲＲコードが”０１１”に等しかった場合（ステップ６２８）、ＰＥＮＧ３０６は、ＥＬＳバッファリング４２０−２に対応するＤＭＡ操作を待ち行列に入れる（ステップ６３０）。
【００４１】
受信フレームのＲＲコードがＲＲコードレジスタ４００と複数一致した場合、随意に、受信したフレームのＲＲコードを、特定の値、好ましくは１××（但し”××”は任意の値）に設定する。
【００４２】
本発明の多くの実施例について述べてきたが、本発明の精神と範囲から逸脱することなく各種の変形を行うことができるものである。例えば上記の多くのステップとテストは、異なるシーケンスで行うことができ、しかも同じ結果が得られる。したがって，他の実施態様は本願の特許請求の範囲の範囲内にある。なお、各種の図面中の同じ参照番号と名称は同じ要素を示す。
【図面の簡単な説明】
【図１】  ファイバーチャネルの技法を利用する従来技術の複合コンピュータネットワークのブロック図である。
【図２】  従来技術のファイバーチャネル標準の五つの機能層の線図である。
【図３】  本発明の好ましい通信処理システムのブロック図である。
【図４】  本発明の好ましい通信処理システムにおけるレジスタとバッファのインタラクションを示すブロック図である。
【図５】  本発明の好ましい実施態様による、ヘッダフィールドに基づいて行うフレームのマッピングを示す簡易フローチャートである。
【図６】  本発明による、ヘッダフィールドに基づいて行うフレームのマッピングを示すフローチャートである。
【図１】
0004173636.tif 000003
【図２】
0004173636.tif 000004
【図３】
0004173636.tif 000005
【図４】
0004173636.tif 000006
【図５】
0004173636.tif 000007
【図６】
0004173636.tif 000008