JP2002512766A - 第1のプロトコルから第2のプロトコルへのデータ転送方法及び装置 - Google Patents

第1のプロトコルから第2のプロトコルへのデータ転送方法及び装置

Info

Publication number
JP2002512766A
JP2002512766A JP55055399A JP55055399A JP2002512766A JP 2002512766 A JP2002512766 A JP 2002512766A JP 55055399 A JP55055399 A JP 55055399A JP 55055399 A JP55055399 A JP 55055399A JP 2002512766 A JP2002512766 A JP 2002512766A
Authority
JP
Japan
Prior art keywords
data
chip
frame
loop
host
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.)
Pending
Application number
JP55055399A
Other languages
English (en)
Inventor
ウェーバー,デーヴィッド・エム
ホーグランド,ティモシー・イー
ジョンソン,スティーヴン・エム
アダムズ,ジョン・エム
リーバー,マーク・エイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Logic Corp
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 LSI Logic Corp filed Critical LSI Logic Corp
Publication of JP2002512766A publication Critical patent/JP2002512766A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection
    • 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/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 ホストをノードに接続するファブリックを介してデータをホストからノードまで転送する方法及び装置である。チップ・アーキテクチャが提供されており、そこでは、データの転送の際にプロトコル・エンジンがオンチップ処理を提供し、チップ内の様々な要素からの頻繁な割り込みが、ホスト・プロセッサからの介入なしに処理される。更に、データの送受信のためのコンテキスト・マネジャが提供される。プロトコル・エンジンは、送信アクテビティのリストを作成し、このリストはコンテキスト・マネジャによって検討され、コンテキスト・マネジャは、リスト化されたアクテビティをプロトコル・エンジンとは独立な態様で実行する。データを受信する際には、コンテキスト・マネジャは、様々なソースからのデータのフレームを、プロトコル・エンジンからの介入を要求することなく処理するメカニズムを提供する。データを受信するときには、コンテキスト・マネジャは、異なるソースから順不同で到着するフレームを処理することができる。更に、コンテキスト・マネジャは、あるシーケンス内のすべてのフレームがいつ受信されたかを判断する。更に、リンク制御ユニットが提供され、そこでは、ホストがループに接続されるときに、ループ管理が提供される。ループの管理には、ホストとループ上の他のノードとによってデータが受信及び送信される状態に応答して、ループの取得を開始しループの解放を開始するメカニズムの実現が含まれる。

Description

【発明の詳細な説明】 第1のプロトコルから第2のプロトコルへのデータ転送方法及び装置 関連出願への相互参照 この出願は、"Method and Apparatus for Managing Access to a Loop in a D ata Processing System"と題し、出願番号が09/054,850であって、弁護士の事件 (ドケット)番号が98-090である、同じ被譲渡人に譲渡されている同時出願中の 出願と関連する。この関連出願は、本出願において援用することとする。 1.技術分野 本発明は、広くは、改善されたデータ処理システムに関し、詳しくは、1つの データ・プロトコルから別のデータ・プロトコルにデータを転送する改善された 方法及び装置に関する。更に詳しくは、本発明は、ファイバ・チャネルなどのよ うな、チャネル・プロトコルからシリアル・プロトコルにデータを転送する改善 された方法及び装置を提供する。 2.関連技術の説明 ANSIによって採用されたファイバ・チャネル・スタンダード(FCS)は 、ワークステーション、大容量記憶装置、プリンタ、ディスプレイなどに対する 低コストで高速の相互接続のためのスタンダードを提供する。ファイバ・チャネ ル(FC)は、分散型のシステム・アーキテクチャ、イメージ集約的なローカル ・ネットワーク及びクラスタにとって理想的である。ファイバ・チャネルは、媒 体依存的であり、マルチ・ベンダ相互運用性(インターオペラビリティ)を提供 する。 現在のファイバ・チャネルでのデータ転送速度は、それぞれの方向で100メ ガバイト/秒を超えている。また、ファイバ・チャネルのデータ転送速度は、5 0メガバイト/秒や25メガバイト/秒程度のより低速にスケーリングすること ができる。この技術によると、切り換えられる媒体と共有される媒体との両方に 対するチャネル接続とネットワーク接続との両方をサポートするインターフェー スが得られる。ファイバ・チャネルは、デバイスの相互接続を単純化し、ハード ウェアのコストを減少させる。その理由は、それぞれのデバイスが、チャネル・ インターフェースとネットワーク・インターフェースとの両方に対して、ただ1 つのファイバ・チャネルだけしか要求しないからである。ネットワーク、ポート 間及び周辺機器のインターフェースは、任意のフォーマットのデータ転送との同 じハードウェア接続を介してのアクセスが可能である。 ターゲットとソースとの間でのデータ転送に関し、入出力(I/O)プロセッ サ技術の性能が急激に向上したために、より高速で、より多くの接続性を提供し 、より長い距離にわたる接続を可能にするI/Oソリューションを求めて、高性 能サーバ、ワークステーション、クラスタ型計算及び関連するストレージ市場に 対する要求が非常に大きくなった。大容量ストレージと全二重ファイバ・チャネ ル・リンク上のそれ以外のプロトコルとをサポートするように設計されている高 性能でインテリジェントなI/Oプロセッサであるファイバ・チャネルI/Oプ ロセッサは、I/O動作をサポートするのに要求されるホストCPU及びPCI 帯域幅を減少させる態様でデータを移動させることが求められる。初期化、コマ ンド、エラー回復など、データの移動ではないアクテビティのためにPCIバス などのシステム・バス上で費やされる時間の長さを最小化することが求められる 。従って、2つの異なるデータ・プロトコルの間でデータを転送する方法及び装 置の改良が求められている。 3.発明の概要 本発明は、ホストから第1のノードまでホストを第1のノードに接続するバス を介し、更に、ファブリックを介して第1のノードに接続された第2のノードま でデータを転送する方法及び装置を提供する。第1のノードは、チップ・アーキ テクチャを含んでおり、そこでは、データの転送の際にプロトコル・エンジンが オンチップ処理を提供し、チップ内の様々な要素からの頻繁な割り込みがホスト ・プロセッサからの介入なしに処理されうるようになっている。更に、データ の送受信のためのコンテキスト・マネジャが提供される。プロトコル・エンジン は、送信アクテビティのリストを作成し、このリストはコンテキスト・マネジャ によって検討され、コンテキスト・マネジャは、リスト化されたアクテビティを プロトコル・エンジンとは独立に実行する。データを受信する際には、コンテキ スト・マネジャは、様々なソースからのデータのフレームを、プロトコル・エン ジンからの介入を要求することなく処理するメカニズムを提供する。データを受 信するときには、コンテキスト・マネジャは、異なるソースから順不同で到着す るフレームを処理することができる。更に、コンテキスト・マネジャは、あるシ ーケンス内のすべてのフレームがいつ受信されたかを判断する。 更に、本発明は、ホストがループに接続される時にループ管理が提供されるリ ンク制御(コントロール)ユニットを提供する。ループの管理には、ホストとル ープ上の他のノードとによってデータが受信及び送信される状態に応答して、ル ープの取得を開始しループの解放を開始するメカニズムの実現が含まれる。 4.図面の簡単な説明 本発明の特徴付けると考えられる新規な特徴は、請求の範囲に記載されている 。しかし、本発明自体は、その使用、更なる目的及び効果の好適な態様と共に、 実施例に関する以下の詳細な説明を次の添付の図面と共に参照することによって 、最もよく理解されるはずである。 図1は、本発明の好適実施例によるファイバ・チャネルにおける5つの層を図 解している。 図2A及び2Bは、リンク制御フレームとデータ・フレームとである。 図3は、エクスチェンジ(exchange)の図と、それがいかにしてその最小の要 素に分解されるかとを示している。 図4は、本発明の好適実施例によって処理されうるSCSIエクスチェンジを 図解している。 図5は、本発明が実現されうるデータ処理システムを示している。 図6は、本発明の好適実施例によるデータ処理システムのブロック図である。 図7は、本発明の好適実施例によるメッセージ要求処理を図解する図である。 図8は、本発明の好適実施例が実現されうるチップのブロック図である。 図9は、本発明のシステム内でのデータ転送を図解する機能ブロック図である 。 図10は、本発明の好適実施例によるFree_List循環キュー(待ち行列)とPos t_List循環キューとを図解している。 図11は、本発明の好適実施例による送信コンテキスト・マネジャにおいて実 現されるプロセスを図解する流れ図である。 図12は、本発明の好適実施例による受信制御ブロックのためのフォーマット である。 図13は、本発明の好適実施例によってコンテキスト・スイッチングを実行す るのに用いられる流れ図である。 図14は、本発明の好適実施例によるDMA開始プロセスの流れ図である。 図15は、本発明の好適実施例によるDMA更新プロセスの流れ図である。 図16は、本発明の好適実施例によるフレーム完成処理プロセスである。 図17は、本発明の好適実施例によるループ管理制御のためのステート・マシ ンである。 図18は、本発明の好適実施例によって解放状態(open state)のループを管 理するプロセスの流れ図である。 図19は、本発明の好適実施例によってアイドル状態でループの取得を制御す るのに用いられる規則を組み入れているプロセスの流れ図である。 図20は、本発明の好適実施例によるループ状態待機に用いられる規則を組み 入れているプロセスの流れ図である。 図21は、本発明の好適実施例による判断ウィンドウ状態における変化を扱う 際に用いられる規則を組み入れているプロセスの流れ図である。 図22は、本発明の好適実施例による判断ウィンドウ状態における変化を扱う ための規則を組み入れているプロセスの流れ図である。 5.詳細な説明 ファイバ・チャネルは、インターネット・プロトコル(IP)などのネットワ ーキング・プロトコルやSCSIなどのチャネル・プロトコルをサポートする高 性能リンクである。ファイバ・チャネルの構造は、5つの層によって定義される 。図1は、ファイバ・チャネルにおける5つの層を図解している。最下位の層で あるFC−0は、媒体インターフェース層である。この層は、2つのデバイス間 の物理的インターフェースを定義する。この層には、ドライバと、受信機と、銅 から光へのトランスデューサと、コネクタと、銅又は光ケーブル上を133、2 66、531,1062メガバイト/秒の速度で送信又は受信するのに必要な任 意の他の低レベル関連回路とが含まれる。 1つ上の次の層は、FC−1層である。この層は、8b/10bの符号化/復 号化と、データ統合に必要な送信プロトコルと、送信クロック及び受信クロック 回復とを定義している。この層は、通常、FC−0層とFC−2層とを実現して いるハードウェアの間に分割される。特に、FC−0トランシーバは、クロック 回復回路を含み、他方で、8b/10bの符号化/復号化は、FC−2の層でな される。次の層は、FC−2層である。この層は、フレーミング・プロトコルと 転送されているデータに対するフロー制御動作とを定義する。送信又は受信され ているデータの意味は、FC−2に対して透過的(transparent)である。しか し、任意の与えられたフレームの組のコンテキストは、FC−2において維持さ れる。フレーミング・プロトコルは、必要なフレームを作成し、データは、それ ぞれのフレームのペイロード内にパケット化される。次の層は、FC−3層であ る。FC−3は、複数のN_portにわたる共通のサービスを提供する。N_portは、 「ノード」ポートとも称されるが、リンクのノード端部におけるファイバ・チャ ネルで定義されるハードウェア・エンティティ(entity)である。これらのサー ビスには、ストリッピング(Striping)、ハント・グループ(Hunt Groups)及びマ ルチキャスティング(Multicasting)が含まれる。これらのサービスすべてによ り、1つのポートが複数のN_portと一度に通信することが可能になる。FCにお いて定義される最上位の層は、FC−4層である。FC−4層は、既存のスタン ダードのシームレスな統合を提供する。この層は、上位の層のプロトコル(UL P)から下位の層へのマップ(mapping)を特定する。これらのULPのいくつ かには、SCSIとインターネット・プロトコル(IP)とが含まれる。これら のULPのそれぞれは、それ自身のANSIドキュメントにおいて定義さ れる。 ファイバ・チャネルにおいて用いられるフレームには2つのタイプがある。す なわち、リンク制御フレームと、データ・フレームとである。リンク制御フレー ムは、ペイロード(payload)を含まず、データ・フレームへの応答である。デ ータ・フレームは、ペイロード・フィールド内のデータを含むフレームである。 図2A及び2Bを参照すると、リンク制御フレーム200とデータ・フレーム2 02とが図解されている。それぞれのフレームは、フレームの開始(start-of-f rame=SOF)フィールド204を含み、フレームの終了(end-of-frame=EOF)フィ ールド206の順序付き集合(ordered set)で終わる。SOFとEOFとを含 むすべての順序付き集合は、4バイトで構成される。それぞれのフレームは、宛 先(destination)及びソースID、サービスのクラス、フレームのタイプ(す なわち、SCSI又はIP)などの事項を定義する24バイトのヘッダ・フィー ルド208を少なくとも含む。フレーム内の最大のフィールドは、データ・フレ ーム202内にあるペイロード・フィールド210である。フレームは、リンク 制御フレームであるならばペイロード・フィールド210は存在せず、データ・ フレームであるならば2112バイトまでのペイロード・フィールドを含む。最 後に、両方のタイプのフレーム共に、送信エラーの検出に用いられる周期上長検 査(CRC)フィールド212を含む。 ファイバ・チャネルにおいて用いられるそれ以外の構成は、シーケンスとエク スチェンジとである。次に図3を参照すると、エクスチェンジの図とそれがどの ようにして最小の要素に分解されるかとが示されている。エクスチェンジ300 には、シーケンス302などの1つ又は複数のシーケンスが含まれる。それぞれ のシーケンスは、フレーム304などの1つ又は複数のフレームから構成される 。エクスチェンジは、典型的なSCSII/Oを考えることによって最もよく図 解される。SCSII/Oでは、複数のフェーズが存在し、これらがI/Oを構 成する。これらのフェーズには、コマンド、データ、メッセージ及びステータス のフェーズが含まれる。 SCSI(FCP)ULPのためのファイバ・チャネル・プロトコルを用いる と、これらのフェーズは、残りの下位のFC層にマップされうる。図4は、本発 明の好適実施例によって扱われうるSCSIエクスチェンジを図解している。S CSIエクスチェンジ400は、コマンド・シーケンスであるCMDSEQ40 2と、データ・リクエスト・シーケンスであるDATAREQSEQ404と、 データ・シーケンスであるDATASEQ406と、応答シーケンスであるRS PSEQ408とを含む。 図5には、本発明が実現され得るデータ処理システムが示されている。データ 処理システム500は、ファブリック506を介してターゲットに接続されたイ ニシエータ502を含む。示されている例におけるファブリック506は、ポイ ント間(point-to-point)、切換型(switched)及び仲裁型(arbitrated)ループ を含む様々な幾何学的形態(トポロジ)をもちうるファイバ・チャネル・ファブ リックである。データ処理システム500では、エクスチェンジのフローは、タ ーゲット504へのフレームを1つ含むコマンド・シーケンスであるCMDSE Q402をイニシエータ502が送出することと共に開始する。このフレーム内 のペイロードは、コマンド記述子ブロック(CDB)を含む。ターゲット504 は、フレームを1つ含むデータ配送リクエスト・シーケンスDATAREQSE Q404に応答する。このフレームのペイロードは、転送準備完了応答(transf er ready response)を含む。イニシエータ502は、いったんこの応答を受け 取ると、1つ又は複数のフレームを含むデータ・シーケンスDATASEQ40 6の送出を開始する(DATAOUTフェーズ)。ターゲットは、最後のフレーム を受け取ると、フレームを1つ含む応答シーケンスRSPSEQ408を送出す る。このシーケンスによって、SCSIエクスチェンジは終了する。 本発明は、異なるデータ・プロトコルの間でデータを転送するシステム、アー キテクチャ及び方法を提供する。示されている例は、SCSIプロトコルとファ イバ・チャネル・プロトコルとの間でのデータ転送のためのものである。本発明 は、ホストを高速ファイバ・チャネル・インターフェースに接続するのに用いら れ、また、切換型ファブリック、ポイント間、そして最も重要な仲裁型のループ を含むすべてのファイバ・チャネル・トポロジにおいて用いられうる。 次に、図面を、特に、図6を参照すると、本発明の好適実施例によるデータ処 理システムのブロック図が示されている。データ処理システム600は、ホスト 602を含み、このホストは、データ処理システム600の1つ又は複数のCP Uを形成する1つ又は複数のプロセッサを含みうる。データ処理システム600 は、I2Oスペシャル・インタレスト・グループから入手可能なインテリジェン ト入出力(I2O)アーキテクチャの仕様(1997年3月)と共に設計された データ処理システムである。これは、本出願において援用する。しかし、本発明 は、他のシステム・アーキテクチャを用いても実現することができる。 ホスト602の中のプロセッサは、例えば、300Mhzで動作するペンティ アムIIプロセッサである。このプロセッサは、米国カリフォルニア州サンタクラ ラ所在のインテル社から入手可能である。示されている例では、一次バス604 と二次バス606とはPCIバスであるが、本発明は、他のタイプのバスを用い ても実現が可能である。 更に図6を参照すると、データ処理システム600は、一次入出力プラットフ ォーム(IOP)608を含む。これは、一次バス604を介して、ホスト60 2に接続されている。更に、IOP608は、二次バス606に接続され、PC I・PCI間のバス・ブリッジとして機能する。データ処理システム600はま た、アダプタ612及び614を含む。二次10P610及び616は、I2O の下にあるインテリジェント・アダプタであり、ニ次IOP610及び616は 、入出力プロセッサを含む。アダプタ612及び614は、非インテリジェント なアダプタであり、入出力プロセッサを含まない。 本発明のシステムは、ホストからチップへリクエスト・メッセージを転送する 、そして、逆にチップからホストにリプライ・メッセージを転送するメカニズム として、リクエスト及びリプライ・メッセージ・キューを用いる。リクエストは 、ホストからチップを介してデバイスまでの経路を表し、他方で、リプライは、 デバイスからチップを介してホストまでの経路を表す。 リクエスト及びリプライ・メッセージ・キューは、メッセージ・フレームの予 め配分されたリストであり、共有される又はホストのメモリに存在する。チップ の内部的には、それぞれのキューは、それぞれが予め配分されたメッセージ・プ ール内にメッセージ・フレームのアドレスを含む2つのFIFOであるフリー・ リストとポスト・リストとによって特徴付けられる。フリー及びポスト・リスト は、ホストからは可視的ではないが、メッセージ・プール内で自由な及びポスト されたメッセージを管理する際にチップをサポートする。 チップが初期化されるときには、ホストは、リクエスト及びリプライ・キュー がどのように管理されるべきかを選択する。デフォルトでは、リクエスト・キュ ーは、ホスト・メモリに存在しうる。オプションとして、リクエスト・キューは 、ホストとチップとの間で共有されるメモリに存在する。リプライ・キューは、 常に、ホスト・メモリに存在する。リクエスト・キューとリプライ・キューとの 両方へのアクセスは、PCIアドレス空間にマップされた2つのレジスタを介し て提供される。 図7を参照すると、本発明の好適実施例によるメッセージ・リクエスト処理を 図解している図が示されている。ホスト700は、メッセージを構築して、リク エスト/リプライ・レジスタ702を読み出し次の空のメッセージ・フレームの アドレスをフリーFIFO704におけるメッセージ・フレーム・プールから検 索することによって、フリー・メッセージ・フレームを配分する。次に、ホスト 700は、そのリクエストをリクエスト・キュー706におけるメッセージ・フ レームに書き込む。その後で、ホスト700は、フレームのアドレスをリクエス ト/リプライ・レジスタ702に書き込み、このレジスタは、このリクエストを サービスのためにポストFIFO710におけるチップ708にポストする。ホ スト700は、次に、利用可能なフリー・メッセージが尽きるまで、このプロセ スを反復して、より多くのリクエストをポストする。チップ708は、リクエス トのアドレスをリクエスト/リプライ・レジスタ702から読み出し、リクエス ト・キュー706の中のアドレスにおけるメッセージを処理し、メッセージ・ア ドレス(この時点では、空のメッセージ・フレーム)を再びリクエスト/リプラ イ・レジスタ702に書き込むことによって、ポストされたリクエストを読み出 す。ホスト700がリクエスト/リプライ・レジスタ702を読み出すときにフ リー・メッセージ・フレームが存在しない場合には、チップ708によって供給 される値は、示されている例では、FFFF−FFFFhである。 リプライ・キュー712は、リクエスト・キュー706の場合と似た態様で管 理される。ただし、この場合には、チップ708が作成側(producer)となる 点が異なる。ホスト700は、リプライ・キュー712においてリプライ・メッ セージ・プールを配分し、それぞれのメッセージ・フレームのアドレスをリプラ イ・レジスタ714にポストする責任を有する。チップ708は、リプライを送 出することを望むときには、フリーFIFO704における次のフリー・メッセ ージ・フレームのアドレスを読み出す。チップ708は、リプライ・メッセージ ・キュー712におけるフレームをメッセージで満たし、フレームのアドレスを リクエスト/リプライ・レジスタ702にポストし、リクエスト/リプライ・レ ジスタ702は、このアドレスをポストFIFO710に書き込む。チップ70 8は、このプロセスを反復することによって、複数のリプライをポストすること がある。ホスト700は、リクエスト/リプライ・レジスタ702を読み出し、 ポストされたリプライ・メッセージのアドレスをポストFIFO710から検索 する。ホストは、このメッセージをいったん消費すると、アドレス(この時点で は、フリー・メッセージ・フレーム)をリクエスト/リプライ・レジスタ702 に書き込み、リクエスト/リプライ・レジスタ702は、このアドレスをフリー FIFO704に書き込む。ホスト700がリクエスト/リプライ・レジスタ7 02を読み出すときにポストされたメッセージが存在しないときには、ホスト7 00は、示されている例では、FFFF−FFFFhの値を受け取る。 本発明は、リクエスト及びリプライ・キューを用いて、リクエスト及びリプラ イをホスト・ドライバとチップとの間で転送する。ホストがこれらのキューと相 互作用する態様は、パフォーマンスに影響しうる。本発明の好適実施例によって 用いられるメッセージ・キューイングには、2つのモデルが存在する。データ転 送のための「プッシュ・プッシュ」モデルは、リクエスト・キューをチップによ って提供されるものと定義し、リプライ・キュー・メモリをホスト・メモリ内に 常駐するものとして定義する。このモデルは、データをキューの中に「プッシュ 」する(押し込む)ために、リクエスト又はリプライのどちらかのイニシエータ を必要とする。多くの状況で、このモデルは最適ではない。 データ転送の「プル・プッシュ」モデルでは、リクエスト及びリプライ・キュ ーがホスト・メモリ内にあることが要求される。リクエストは、バス・マスタモ ードで動作しているチップの中に「プル」され(引き込まれ)、他方で、リプライ は、ホスト・メモリの中に「プッシュ」される(押し込まれる)。このモデルによ れば、チップがすべてのキューイングのためにホスト・メモリを用いることが可 能となる。また、このモデルによると、チップがその動作を合理化することも可 能となる。その理由は、このモデルによれば、プッシュ・プッシュ・モデルの場 合のように突然に作用することを強制されるのではなく、いつコマンドを処理す ることを望むのかを決定することができるからである。このオプションは、複数 のブリッジを介して直接にPCIバスにアクセスすることにより過剰なプロセッ サ・オーバーヘッドを生じるようなホスト環境に最も適している。 両方の動作モード共に、PCIバスへの同じ数のアクセスを必要とし、同じレ ジスタ・セットを介するキュー・アクセスを提供する。チップのためのデフォル トのオプションは、「プッシュ・プッシュ」モデルである。「プル・プッシュ」 モデルは、メッセージによって呼び出すことができる。 次に、図8を参照すると、本発明の好適実施例を実現することができるチップ のブロック図が図解されている。チップ800は、プロトコル・エンジン802 と、データ移動ユニット804と、移動制御ユニット806とを含む。 プロトコル・エンジン802は、この分野の当業者に既知である多数の異なる タイプのプロトコル・エンジンを用いて実現され得る。示されている例では、プ ロトコル・エンジン・コア807は、32ビットのRISCコア808に基づい ている。RISCコア808は、20−30MIPSの性能を有している。プロ トコル・エンジン802は、それ自身のコントローラ812とリード/フェッチ /ライト・ユニット814とを備えた埋め込み型モジュール・バス(EMB)8 10を含む。EMB810は、バス上でのモジュール相互間の通信のための標準 化されたモジュール・インターフェースを提供する。EMB810は、また、示 されている例では、複数のバス・マスタをサポートしている。 示されている例では、プロトコル・エンジン・コア807は、8KBの命令/ データ・バッファ816を含み、限界コード(critical code)及びデータ構造 に対するゼロ待機状態のスタティックRAM領域を提供する。割り込みコントロ ーラ818とクロック/リセット・コントローラ820とが、プロトコル・エン ジン・コア807の中に見出される。RISCコア808は、EMB810に 接続されたコントローラ822を用いている。 プロトコル・エンジン802の中のシステム・インターフェース824は、コ ンフィギュレーション及び高順位コマンドと、パケット化されたリクエストと、 ホストとチップ800との間のリプライ・メッセージとをサポートする。システ ム・インターフェース824は、非データ転送のためのPCIバス・トラフィッ クを最小化するように設計されている。システム・インターフェース824は、 また、I/Oリクエストとリプライ・メッセージ・パケットとをホスト・メモリ とチップ800との間で転送するのにも用いられる。DMAFIFO828を備 えたマスタ制御826とスレーブFIFO832を備えたスレーブ制御830と は、システム・インターフェース824の内部に存在する。EMBアタッチ83 4は、システム・インターフェース824のために、EMBバス810への接続 を提供する。DMA及びSRW制御836と、スレーブ・アクセス制御838と 、メッセージFIFO840とは、システム・インターフェース824の内部に 存在する。マスタ制御及びスレーブ制御ユニットは、ホスト・インターフェース とDMAFIFO及びスレーブFIFOそれぞれとの間のデータ転送を提供する 。これらのユニットは、システム・メモリへの/システム・メモリからのデータ を(バス・インターフェース・ユニットを介して)これらのFIFOの中へ及び FIFOから外へバーストする。これらのFIFOからのデータは、次に、EM Bアタッチ機能(DMAFIFO)又はスレーブ・アクセス制御機能(スレーブ FIFO)を介して、ローカル・メモリに、及び、ローカル・メモリから移動さ れる。 DMA及びSRWユニットは、バースト転送(DMA)又はシングル・サイク ル転送(SRW)に対するデータ転送を規制する。msgFIFO制御ユニット は、個々のキュー要素をローカル・メモリに、及び、ローカル・メモリからリー ド/ライトすることを含むメッセージング・キューを実現するのに必要なハード ウェアを提供する。示されているシステム・インターフェースは、この分野の当 業者に既知である多数の方法で実現することができ、プロトコル・エンジン80 2と示されているものとは別のデータ移動ユニット804との間のインターフェ ースが提供される。 プロトコル・エンジン802は、チップ800の外部にあるメモリへの接続を 提供する外部メモリ・コントローラ842を含む。メモリ・コントローラ842 は、32ビットのプラス・パリティDRAM(ファースト・ページ及びEDO) と、EPROMと、フラッシュ(8ビット)及びシリアルEEPROMとをサポ ートする。示されている例では、データを転送するメモリ・データ経路844は 、DRAM制御846とフラッシュ制御848とによって制御される。最後に、 プロトコル・エンジン802は、EMBレジスタ及びタイマ・ユニット850に 位置する自由動作(free-running)タイマを含む。このタイマは、イベント・タ イム・スタンピングに用いることができる。 示されている例では、英国ケンブリッジ所在であり米国テキサス州オースチン にもオフィスを有するアドバンストRISCマシン社(Advanced RISC Machine Ltd.)から市販されているRISCコア808用のARMマイクロプロセッサ・ コアを用いている。 データ移動ユニット804は、バス・インターフェース852と、送信機DM Aユニット854と、受信機DMAユニット856とを含む。データ移動ユニッ ト804の内部の要素は、既知のバス・インターフェース・ユニットと、送信機 DMAユニットと、受信機DMAユニットとを用いて実現することができる。送 信機DMAユニット854と受信機DMAユニット856とは、それぞれ、送信 データ転送エンジンと受信データ転送エンジンとも称される。バス・インターフ ェース・ユニット852は、示されている例では、PCIバスを介して情報を通 過させるのに用いられる。その際に、インターフェース・ユニットは、PCIマ スタ・インターフェース859とPCIスレーブ・インターフェース862とを 含む普遍的(universal)なPCIインターフェース858を介してマスタ及び スレーブ両方のPCIバス・サイクルをサポートする。バス・インターフェース ・ユニット852の中には、アービタ(仲裁、arbiter)及びキャッシュ・サイ クル・コントローラ863があり、プログラム可能なアービタが、プロトコル・ エンジン802と送信機DMAユニット854と受信DMAユニット856との 間での仲裁を行うのに用いられる。データ移動ユニット804は、送信機DMA ユニット854における送信機バッファに向かう、又は、受信DMAユニット8 5 6における受信バッファから出る、複数の散乱・集合(scatter-gather)データ ・エントリを整列させる(align)ように設計されている。この整列(アライメ ント)は、32ビットのダブル・ワード境界上でのものである。結果的に、入っ てくるどれかのデータが奇数のカウントを有している場合には、フィル・バイト が追加される。データ移動ユニットは、送信機DMAユニット854における1 つの送信散乱/集合(S/G)FIFOと、受信DMAユニット856における 2つの受信散乱/集合(S/G)FIFOとを含む。3つのFIFOのすべてが 、3つのS/Gエントリを含む。2つのエントリは、現在のS/Gエントリであ り、残りのエントリは、次の処理されるべきS/Gエントリである。データ移動 ユニット804は、既知のDMAチャネル設計を用いて実現され得る。 移動制御ユニット806は、送信機858と、受信機860と、コンテキスト ・マネジャ862と、リンク制御ユニット864とを含む。送信機858の内部 には、TxDバッファ866とTxOバッファ867と、送信コンテキスト及び レジスタ868とへの入力を備えたフレーマ865がある。受信機860は、リ ンク制御ユニット864に接続されたロード及びルート・ユニット869を含む 。受信機860の中には、RxDHバッファ872と、CtxマシンCAM87 3と、受信コンテキスト及びレジスタ874とも存在する。コンテキスト・マネ ジャ862は、コンテキスト・マネジャ862をEMB810に接続するブリッ ジ875と、送信機858と、受信機860とを含む。マイクロコード・エンジ ン876は、送信コンテキスト・マネジャ877と受信コンテキスト・マネジャ 878とを制御する。コンテキスト・マネジャ862は、プロトコル・エンジン 802をフリー・アップ(free up)して他の機能を実行するデータ転送機能を 提供する。送信機858は、状態及びコンフィギュレーションのためのレジスタ (送信機コンテキスト及びレジスタ868)と、データ・ストレージ・バッファ (TxDバッファ866及びレジスタ868)と、フレーマ865とを含む領域 に対する機能を提供する。フレーマ865は、データをバッファから取り出し、 コンフィギュレーション・レジスタからの任意の要求される情報を加えて、法的 (legal)なファイバ・チャネル・フレームを発生する責任を有する。この情報 は、SOFと、ヘッダと、ペイロードと、CRCと、EOFとを含む。フレーマ 865は、次に、リンク制御ユニット864へのリクエストをアサートし、フレ ームを正しい宛先に送る。 フレーマ865は、フレームの全体が送られるまでリンク制御ユニット864 のリクエストに基づいてデータを搬送する。フレーマ865は、また、データが 2つのバッファであるTxDバッファ866及びTxOバッファ867から搬送 する責任を有しており、それによって、バッファがロードされる。フレーマ86 5のCRCサブブロックは、ファイバ・チャネルの仕様によって定義されるエラ ー・チェッキング・コードを計算する責任も有している。フレーマ865は、計 算されたコードをデータ・ストリームの正しい地点に挿入する。TxDバッファ 866は、PCIバス及びデータ移動ユニット804を介してホストからロード されたデータを含む。TxOバッファ867は、プロトコル・エンジンを介して ロードされたデータを含む。このバッファは、ヘッダとSOFとEOFとペイロ ードとを備え予めフォーマットされたフレームを含む。 受信機860は、このノードにアドレス指定されたフレームを取り出し、その フレームの正しさをチエックし、そのフレームを正しいメモリの宛先に配分する ことを助けるという責任を有する。ロード及びルート・ユニット869における ロード及びルート機能は、ヘッダにおけるあるフィールドを解析して、データを どのバッファに向けて経路決定すべきかを判断する。この判断は、トラフィック ・タイプに基づく(すなわち、SCSIコマンド、SCSIデータ、If)。送信 側と同じように、RxOバッファ871は、プロトコル・エンジン802によっ て処理されるように決められたフレームを含む。やはり、フレーム全体(ヘッダ 及びペイロード)が、RxOバッファ871に含まれる。 RxDバッファ870に向けられたフレームは、そのヘッダ情報が取り除かれ 、別個のRxDHバッファ872に配置される。CTxマシンであるCAM87 3は、ヘッダ情報を用いてこのフレームがどのデータ転送に属するのかを判断す る。このブロックでは、CRCもチェックされて、無効なCRCを伴うフレーム は廃棄される。CTxマシンであるCAM873は、最後のフレームからヘッダ 情報を比較して、それがシーケンスの中の次のフレームであるかどうかを判断す る。rxaqmeが適切なs/gエントリを備えたDMAチャネルを提供するよ うに と要求される場合には、DMAチャネルは、データをバッファから除去する。R xDHバッファ872が別個のバッファであり、それによって、先のフレームが 除去されているときに後のフレームからのヘッダを解析することができる。 リンク制御ユニット864は、ケーブル・アタッチ879を含むが、これは、 ファイバ・チャネルへの接続を提供し、ファイバ・チャネルからのデータを送信 及び受信する。送信(TX)制御ユニット880と受信制御ユニット881とは 、リンク制御ユニット864において見出される。TX制御ユニット880は、 送信機858からのデータを受信し、そのデータをケーブル・アタッチ879を 介してファイバ・チャネルの上に送る。TX制御ユニット880は、規則を適用 して、フレームを送信することが望ましくかつ許容されるかを判断する。選択さ れた時間においてフレームを転送することが望ましくなく、許容されない場合に は、TX制御ユニット880は、フレームの送信を許容するのに必要な作用を実 行する。ケーブル・アタック879は、8b/10b符号化/復号化機能を提供 し、選択された外部のシリアライザ/デシリアライザと互換な適切な態様でバイ トを再度順序付ける。データは、受信制御ユニット881によって受信され、受 信機860に向けて送信される。リンク制御ユニット864はまた、ループ・ス テート・マシン882と、分類器(classifier)883と、クレジット・マネジ ャ884と、リンク制御レジスタ885とを含む。ループ・ステート・マシン8 82は、仲裁、送信及び受信プロトコルを含むループ関係機能を管理する。クレ ジット・マネジャ884は、フレーム・ベースのクレジット・プロトコルをモニ タし管理する責任を有している。クレジット・マネジャ884は、別のノードが フレームをクレジット・マネジャ884が位置しているこのノードに送られるこ とを可能にするにはいつクレジットが与えられるべきであるかについてトラッキ ングする。クレジット・マネジャ884は、また、フレームの送信を可能にする のに十分なクレジットがいつ入手可能となるかについてもトラッキングする。任 意の時点で、ノードは、その現在の宛先に送ることができる最大数のフレームを 有する。これをクレジットと称する。ノードは、フレームを送信するときは常に 、1クレジットを用いる。受信側のノードは、これらのフレームを限定されたバ ッファ・プールの中に受信する。フレームがバッファ・プールから除去されると き には、R_RDYと称されるプリミティブが発生される。送信側のノードは、R_RDYを 受信するときには、そのクレジット・カウントをインクリメントする。 リンク制御レジスタ886は、リンク制御864のためのコンフィギュレーシ ョン及びステータス報告レジスタを含む。分類器885は、ループからの入来ワ ードをモニタし、多くのタイプのプリミティブの符号化を他のブロックに提供す る。分類器885は、信号を、ループ状態マシン882とクレジット・マネジャ 884とに提供する。分類器885におけるこの機能が提供されるのは、多くの ブロックが同じプリミティブに反応からであり、復号の複写は、この状況では不 要である。受信制御ユニット881はループ状態マシン882をモニタし、その ループ上を送信されているフレームはいつ受信制御ユニット881が位置してい るノードに向けられるのかを決定する。以下でより詳細に説明するTX制御ユニ ット880を除き、リンク制御ユニット864内の要素は、米国規格協会(AN SI)からのFC−AL仕様を用いて、この分野の当業者に既知である要素を用 いて実現することができる。 次に図9を参照すると、本発明のシステム内でのデータ転送を図解する機能ブ ロック図が示されている。図9は、本発明のシステム・アーキテクチャを構成す る基本的な機能ブロックを示している。システム900の中には、2つの主要な グループにグループ分けできる複数の機能ブロックが示されている。すなわち、 出ていく送信グループと入ってくる受信グループとである。ブロックの間の数字 の付いた矢印は、本発明のアーキテクチャによって提供される機能におけるシー ケンシャルなステップを表している。この図のそれぞれの側には、メモリ要素が ある。すなわち、システム・メモリ902と、ローカル・メモリ904と、シス テム・メモリ906と、ローカル・メモリ908とであり、これらは、リクエス ト・メッセージ・フレームとリプライ・メッセージ・フレームとを管理するのに 用いられるフリー循環キューとポスト・フリー循環キューとを含む。リクエスト ・メッセージ・フレーム構造は、図9の左側のメモリであるローカル・メモリ9 04の中にあり、リプライ・メッセージ・フレーム構造は、右側のメモリである ローカル・メモリ908の中にある。図の中央には、送信及び受信データ経路が あり、これらは、後で、図9を参照して更に詳細に説明される。オペレーティン グ・ システム・モジュール(OSM)910と、I/Oプラットフォーム(IOP) ドライバ912と、メッセージ・トランスポート・マネジャ914と、インター フェース・マネジャ916と、プロトコル・フィルタ918とが、ブロックの2 つの組として図解され、出ていく送信グループと入ってくる受信グループとの関 係でのそれぞれの役割が明確に示されている。 リクエストがOSM910から受信されると、IOPドライバ912は、次の リクエスト・メッセージ・フレームのための次の空のメッセージ・フレームのア ドレスを取得する(ステップA1)。IOPドライバ912は、Free_List循環キ ューの中のHead_Pointerに記憶されている空のメッセージ・フレーム・アドレス (EMF_ADR)を検索することによって、これを行う。すると、Head_Pointerが、イ ンクリメントされる。図10は、本発明の好適実施例によるFree_List循環キュ ー1000とPost_List循環キュー1002とを図解している。 IOPドライバ912は、検索された空のメッセージ・フレーム・アドレスに リクエスト・メッセージ・フレームを記憶する(ステップA2)。次に、IOPド ライバ912は、メッセージ・フレーム・アドレスを、Post_List循環キューの 中に位置するTail_Pointerの位置に記憶する。すると、Tail_Pointerは、インク リメントされる(ステップA3)。IOPドライバ912は、メッセージ・トラン スポート・マネジャに、処理すべきリクエスト・メッセージ・フレームが存在す ることを告知する。このメカニズムは、レジスタ/割り込みベースの作用である 。 次に、メッセージ・トランスポート・マネジャ914が、リクエスト・メッセ ージ・フレームのアドレスを、システム・メモリ902の中にあるPost_List循 環キューの中のHead_Pointerから受け取る(A5)。メッセージ・トランスポート ・マネジャは、1つ又は複数のリクエスト・メッセージ・フレーム・アドレスを 、ローカル・メモリに記憶し、リクエスト・メッセージ・フレームを処理するこ とができる。このオプションにより、いくつかのシステムのパフォーマンスを改 善することができる。次に、メッセージ・トランスポート・マネジャ914は、 リクエスト・メッセージ・フレーム・アドレスを受け取った後で、システム・メ モリ902の中のPost_List循環キューにおいてHead_Pointerをイン クリメントさせる(ステップA6)。その後で、メッセージ・トランスポート・マ ネジャ914は、インターフェース・マネジャに告知し、リクエスト・メッセー ジ・っふれーむ・アドレスを提供する(ステップA7)。それに応答して、インタ ーフェース・マネジャ916は、リクエスト・メッセージ・フレームのアドレス 及びサイズと用いて、IOPシステムDMA920をプログラムする(ステップ A8)。 IOPシステムDMA920は、PCIバスのために仲裁を行い、リクエスト ・メッセージ・フレームをローカル・メモリの中に移動させる(ステップA9)。 インターフェース・マネジャ916は、IOPシステムDMA920に、1つ又 は複数のメッセージ・フレームを、それがFree_List循環キューの中のTail_Poin terを更新する前に、ローカル・メモリの中に移動させることができる。このオ プションは、いくつかのシステムのパフォーマンスを改善することができる。次 に、インターフェース・マネジャ916は、メッセージ・トランスポート・マネ ジャ914に、1つ又は複数のリクエスト・メッセージ・フレームをローカル・ メモリ904の中に移動させたことを告知する(ステップ10)。 メッセージ・トランスポート・マネジャ914は、新たなリクエスト・メッセ ージ・フレームのアドレスを、Free_List循環キューの中のTail_Pointerの位置 に配置し、次に、Tail_Pointerをインクリメントする(ステップA11)。これを 行うことによって、リクエスト・メッセージ・フレームは、空のメッセージ・フ レーム・リソースに変換され戻される。結果的に、インターフェース・マネジャ 916は、プロトコル・フィルタ918を助け、処理のためのリクエスト・メッ セージ・フレームが入手可能であることを告知する(ステップA12)。プロトコ ル・フィルタは、ローカル・メモリ904からのそれぞれのリクエスト・メッセ ージ・フレームを検索して処理する(ステップA13)。 プロトコル・フィルタ918は、リクエスト・メッセージ・フレームの中の情 報を用いて、1つ又は複数の送信コンテキスト・ブロック(TCB)を構築する (ステップA14)。TCBは、ローカル・メモリ922に記憶され、送信コンテ キスト・マネジャ924によって用いられる。いくつかのリクエスト・メッセー ジ・フレームは、エクスチェンジを構築するのに十分な情報を含んでいる。構築 するエクスチェンジを管理するのは、プロトコル・フィルタ918の仕事である 。これらのエクスチェンジは、単純なログイン・エクスチェンジ又はより複雑な SCSII/Oであり、コマンド、データ、Transfer_Rdy、応答シーケンスなど を含む。 送信コンテキスト・マネジャ924は、使用可能になると常にTCBを送信す る(ステップA15)。送信コンテキスト・マネジャ924は、どのようなエクス チェンジ情報も知っておらず、フレーム及びシーケンス・コンテキストだけを知 っている。送信コンテキスト・マネジャ924は、ローカル・メモリ904から 、最上位のTCBを選択し、フレーマ926に必要なコンテキスト情報を作成す るだけでなく、必要な散乱/集合(S/G)エントリを送信S/GFIFOに提 供する。送信コンテキスト・マネジャ924は、S/GエントリをS/GFIF O928の中に配置し、コンテキスト情報をフレーマ926の中の配置する(ス テップA16)。また、ステップA16において適切なときに、送信DMA(TX_D MA)930が、S/GFIFO928の最上位にあるS/Gエントリのアドレス 及びサイズを用いてプログラムされ、PCIバスを求めて仲裁を行い、システム ・メモリからデータを受け取り、それを送信バッファ932の中に記憶する。 すべてのフレームの中のすべてのデータがTX_DMA経路から来るとは限ら ないことに注意することは重要である。例えば、ログイン・フレームに含まれる 116バイトのデータは、送信コンテキスト・マネジャ924を介してDMAバ ッファ932の中に配置される。送信コンテキスト・マネジャ924は、ローカ ル・メモリ904からログイン・データを検索することによってこれを行う。P CIバス上を移動することは全く必要ない。これは、明らかなパフォーマンス上 の効果である。TX_DMA経路を用いない別の明らかなタイプのフレームは、 リンク制御フレームである。リンク制御フレームの全体は、1つのTCBの中に 含ませることが可能であり、送信コンテキスト・マネジャ924は、このTCB を受信すると、それを単純に、フレーマ926に向けて経路決定する。フレーマ (Framer)926は、このデータ及びコンテキスト情報を用いて、リンク・コン トローラ934のための1つ又は複数のフレームを作成する。 リンク・コントローラ934は、2つのポートの間のリンクを管理する。例え ば、フレームがリンクを介して送り出される準備ができているときには、リンク ・コントローラ934は、ループのための仲裁を行い(FC仲裁型ループ・トポ ロジを想定する)、仲裁を獲得すると、別の宛先であるNL_Portを開き、 フレームをそこまで送る。 いったんTCBとそれに関連するフレームが送信されると、送信コンテキスト ・マネジャ924は、プロトコル・フィルタ918に告知する(ステップA17) 。プロトコル・フィルタ918は、TCBエントリを更新して、現在のTCBの 完成を反映させる(ステップA18)。TCBエントリがリンクされたリストにお いてリンクされている場合には、プロトコル・フィルタ918は、リンクされた リストにおけるポインタを調整することによって、完成したTCBエントリを除 去することができる。 リンク上を送信されているすべてのデータは、結果的には、別のポートにとっ ては受信データとなる。図9に図解されているポート936に入るデータは、最 初に、ギガボー・リンク・モジュール(GLM)938を介して入る。このデー タは、リンク・コントローラ934まで送られ、そこで、早期の宛先認識が生じ る。入ってくるフレームがポート936に対するものである場合には、リンク・ コントローラ934は、このフレームをフレーム・ディテクタ940に送る。フ レームがいったんフレーム・ディテクタ940によって検出されると、ヘッダが 取り外され、コンテキスト情報がRXコンテキスト・マネジャ942によって作 成される(ステップ19)。入ってくるフレームは、送信されたTCBに対する応 答か、又は、未処理のフレームでありうる。フレームが送信されたTCBへの応 答である場合には、コンテキストは、既に、プロトコル・フィルタによるエクス チェンジ管理の状態によって定義されている。システム・メモリに向けられた任 意のデータは、受信バッファ(RX_Buffer)に入れられ、そのデータに対するS /GエントリがS/GFIFO928の中に配置される(ステップA20)。 フレームが未処理のフレームである場合には、コンテキストが発生されること が必要となる。最も単純なケースは、SCSI相互ロック・エクスチェンジの場 合のように、フレームがコマンド情報を含む場合である。RXコンテキスト・マ ネジャ942は、ペイロードにおけるFCフレーム・ヘッダとSCSIコマンド とから、必要な情報を作成する。ステップA20では、このフレームがデータも 含む場合には、このデータは、RX_Bufferに配置され、S/Gエントリは、S/ GFIFO928の中に入れられる。データがいったんRX_Buffer944の中に あり、S/GエントリがS/GFIFO928の中にあるときには、受信DMA (RX_DMA)946は、S/Gのアドレス及びサイズを用いてプログラムさ れる。RX_DMA946は、次に、PCIバスを求めて仲裁を行い、データを 、このバスを介して、システム・メモリに転送する。 コンテキスト情報は、RXコンテキスト・マネジャ942からプロトコル・フ ィルタ918に送られ(ステップA21)、そこで、コンテキストに応じて複数の 事柄が生じ得る。プロトコル・フィルタ918又はRXコンテキスト・マネジャ 942がリンク応答フレームを送る必要があるときには、常に、これは、TCB エントリをTCBリンクされたリストの最上位に追加することによってなされる (ステップA22)。この例は、プロトコル・フィルタ918が1つ又は複数の受 信フレームのためにACKフレームを発生する必要があるときである。 プロトコル・フィルタ918は、リクエストされたメッセージ・フレームが完 成されたことを告知されると、OSMのためのリプライ・メッセージを作成し、 プロトコル・フィルタ918は、リプライ・メッセージをローカル・メモリ90 4の中に配置する(ステップA22b)。 コンテキスト及びプロトコル情報を作成するのに十分な情報を含む入来の任意 の未処理(unsolicited)のフレームによって、プロトコル・フィルタ918は 、受信コンテキスト・ブロック(RCB)が構築される(ステップA22c)。こ の例は、本発明のシステムがSCSIターゲット・モードにあるかどうかである 。コマンド記述子ブロックを含むフレームが入ってくるときには、プロトコル・ フィルタ918は、RCBリンクされたリストを発生し、ターゲットの視点から エクスチェンジ状態を管理することが必要となる。 プロトコル・フィルタ918は、いったん1つ又は複数のリプライ・メッセー ジ・フレームを作成すると、インターフェース・マネジャ916に、OSM91 0に送られる必要があるリプライ・メッセージ・フレームが存在していることを 告知する(ステップA23)。インターフェース・マネジャ916は、次に、メッ セージ・トランスポート・マネジャ914にリクエストを送り、リプライ・メッ セージ・フレームのためのアドレスを取得する(ステップA24)。メッセージ・ トランスポート・マネジャ914は、リプライ・メッセージ・フレームのための 次の空のメッセージ・フレームのアドレスを取得する(ステップA25)。ステッ プA25では、メッセージ・トランスポート・マネジャ914は、システム・メ モリにあるFree_List循環キュー内のHead_Pointerに記憶されている空のメッセ ージ・フレーム・アドレスを検索することによってこれを行う。次に、Head_Poi nterがインクリメントされる。 メッセージ・トランスポート・マネジャ914は、この空のメッセージ・フレ ーム・アドレスと共に、インターフェース・マネジャ916を提供する(ステッ プA26)。インターフェース・マネジャ916は、リプライ・メッセージ・フ レームの検索された空のフレーム・アドレス及び長さを用いてIOPシステムD MA920をプログラムする(ステップA27)。次に、IOPシステムDMA9 20は、PCIバスのための仲裁を行い、PCIバスを獲得したときには、シス テムDMA920は、リプライ・メッセージ・フレームをシステム・メモリ90 2の中にある空のメッセージ・フレーム・アドレスに移動させる(ステップA2 8)。いったん1つ又は複数のリプライ・メッセージ・フレームが転送されると 、インターフェース・マネジャ916は、メッセージ・トランスポート・マネジ ャ914に告知する(ステップA29)。告知されると、メッセージ・トランスポ ート・マネジャ914は、リプライ・メッセージ・フレーム・アドレスを、Post _List循環キューの中のTail_Pointerの位置に記憶し、Tail_Pointerは、インク リメントされる(ステップA30)。 メッセージ・トランスポート・マネジャ914は、IOPドライバ912に、 処理するためのリプライ・メッセージ・フレームが存在することを告知する(ス テップ31)。示されている例では、このメカニズムは、レジスタ/割り込みベ ースの作用である。IOPドライバ912は、Post_List循環キューの中のHead_ Pointerから、リプライ・メッセージ・フレームのアドレスを検索する(ステップ 32)。IOPドライバ912は、1つ又は複数のリクエスト・メッセージ・フレ ーム・アドレスを、システム・メモリの中に記憶することができ、そして、 リプライ・メッセージ・フレームを処理する。このオプションは、いくつかのシ ステムのパフォーマンスを改善させうる。ステップA32の場合のように、Post _List循環キューの中のHead_Pointerがインクリメントされる。IOPドライバ 912は、リプライ・メッセージ・フレームを検索し、それらを、OSMに送り 戻す(ステップA32)。IOPドライバ912は、現在の新たなリプライ・メッ セージ・フレームのアドレスを、Free_List循環キューの中のTail_Pointerの位 置に配置し、Tail_Pointerをインクリメントする(ステップA34)。こうするこ とによって、リプライ・メッセージ・フレームは、空のメッセージ・フレーム・ リソースに変換して戻される。 送信コンテキスト・マネジャ877は、多数の責任を有している。これには、 TCBの送信キューから、プロトコル・エンジン802によって作成されるデー タを読み出すことが含まれる。TCBは、メモリ・データ経路844に接続され たローカル・メモリに位置している。送信コンテキスト・マネジャ877は、ま た、TCBが存在し、送信機858がアイドルであるときに、送信レジスタと、 バッファと、送信DMAユニット854(レジスタ又はFIFOレジスタ)とを ロードする。更に、送信コンテキスト・マネジャ877は、S/Gリストからの 必要に応じて、送信DMAユニット854にS/Gエントリを与え、プロトコル ・エンジン802への割り込みを除去する。送信コンテキスト・マネジャ877 は、また、それぞれのTCBが、ポインタをTCBデータ構造のリンクされたリ ストに再度書き込むことによって送信を終了したときに、TCBを、送信キュー からフリー・キューへ再度リンクする。 次に図11を参照すると、本発明の好適実施例に従って送信コンテキスト・マ ネジャにおいて実現されているプロセスを図解する流れ図が、示されている。こ のプロセスは、IOPからのキックが生じたかどうかを判断することによって開 始する(ステップ110)。「キック」は、Txコンテキスト及びレジスタ・ユニ ット868への権利(right)である。このプロセスは、IOPからのキックが 生じるまで、ステップ1100に戻り続ける。この時点で、転送キュー・ヘッダ ・ポインタがレジスタから読み出される(ステップ1102)。その後で、第1の TCBが読み出され(ステップ1104)、右フレーム・ヘッダが送信機に書き込 ま れる(ステップ1106)。次に、このフレームに対するペイロードがローカル・ ペイロードであるかシステム・ペイロードであるかに関する判断がなされる(ス テップ1108)。ペイロードがローカル・ペイロードである場合には、そのペ イロードは、送信機バッファに書き込まれる(ステップ1110)。示されている 例では、送信機バッファは、TxOバッファ867である。次に、シーケンスが 送信されたかどうかが判断される(ステップ1112)。シーケンスは、フレーマ ・ユニット865によって作成される一連のフレームであり、Txコンテキスト 及びレジスタ・ユニット868におけるレジスタの単一のプログラミングによっ て開始される。プロセスは、シーケンスが送信されるまでは、ステップ1112 に戻り続ける。シーケンスが送信されると、TCBが送信機キューから除去され (ステップ1114)、フリー・キュー・テール・ポインタが読み出される(ステ ップ1116)。この読み出しは、Txコンテキスト及びレジスタ・ユニット8 68からである。TCBは、フリー・キュー・テールにリンクされる(ステップ 1118)。次に、フリー・キュー・テール・ポインタが更新され(ステップ11 20)、送信キュー・ヘッダ・ポインタが更新される(ステップ1122)。ポイ ンタの更新は、Txコンテキスト及びレジスタ・ユニット868に対して右側で ある。そして、TCBが存在するかどうかの判断がなされる(ステップ1124) 。別のTCBが存在する場合には、プロセスは次のTCBを読み出し(ステップ 1126)、プロセスは、既に述べたように、ステップ1106に進む。別のT CBが存在しない場合には、キューの最後に到達し、プロセスは、ステップ11 00に戻る。 再びステップ1108を参照すると、ペイロードがシステム・ペイロードであ る場合には、プロセスは、S/GエントリをS/Gリストから読み出す(ステッ プ1128)。次に、S/Gエントリが、送信S/GFIFOの中にロードされ る(ステップ1130)。そして、S/Gエントリが更に存在するかどうかが判断 される(ステップ1132)。これ以上S/Gエントリが存在しない場合には、プ ロセスは、既に述べたように、ステップ1112に進む。それ以外の場合には、 プロセスは、S/GFIFOがいっぱいであるかどうかを判断する(ステップ1 134)。S/GFIFOがいっぱいではない場合には、プロセスは、ステップ 1128に戻る。そうでなければ、プロセスは、FIFOがいっぱいでなくなる まで、 ステップ1134に戻り続ける。 受信コンテキスト・マネジャ878は、ファイバ・チャネルの受信コンテキス ト管理に自動を提供し、それによって、他のデバイス及び/又はプロトコル・エ ンジン802などのシステム・リソースのワークロードを軽減する。受信コンテ キスト・マネジャ878は、コンテキスト管理、DMA開始、DMA更新、フレ ーム完成(complete)処理など、様々な機能を提供する。コンテキスト管理には 、ファイバ・チャネルのヘッダ情報を受信制御ブロック(RCB)に調停(reco ncile)することを含むが、これは、ファイバ・チャネル・シーケンス情報を有 効化しデータ転送パラメータを特定する手段を提供する。DMA開始機能は、フ ァイバ・チャネル・ヘッダ・パラメータ・フィールドを正しいバッファ・オフセ ットにマップしDMA転送を開始することによって、初期開始点を用いて受信D MA856をプログラムすることを含む。DMA更新機能には、フレームDMA 転送を維持するのに要求される追加的なバッファ・アドレス/長情報を用いて、 受信DMA856を更新することが含まれる。フレーム完成処理では、受信DM A情報の更新と、ファイバ・チャネル・シーケンス完成の検出と、条件的な完成 報告とが、生じる。 次に、図12を参照すると、本発明の好適実施例による受信された制御ブロッ クのためのフォーマットが示されている。受信制御ブロック1200は、ファイ バ・チャネル・シーケンスを管理するのに要求される情報を含む。ファイバ・チ ャネル・ヘッダ・フィールド1202は、入来フレームを有効化するのに用いら れる情報を含む。シーケンス状態情報フィールド1204は、ファイバ・チャネ ル・シーケンスをトラッキングし管理するのに用いられる。DMA情報フィール ド1206は、ファイバ・チャネル・データの宛先アドレスへのマップをトラッ キングし管理するのに用いられる。最後に、タイム・スタンプ・フィールド12 08は、シーケンスが完成したことを指示するのに用いられる。 次に、図13を参照すると、本発明の好適実施例によるコンテキストのスイッ チングを実行するのに用いられる流れ図が示されている。コンテキストのスイッ チングは、フレーム受信機が受信されたコンテキスト・マネジャにコンテキスト のスイッチングが必要であることを告知するときに開始する。この状況は、現在 のファイバ・チャネル・ヘッダが現在確立している受信コンテキストと一致しな いときに生じる。この時点で、受信コンテキスト・マネジャは、RCBの中にあ る次のコンテキストを見出す(ステップ1300)。次に、そのフレームがこのR CBに対する新たなファイバ・チャネル・シーケンスの第1のフレームであるか どうかに関する判断がなされる(ステップ1302)。受信されたフレームが特定 のシーケンスに対して受信された第1のフレームであるかどうかという判断は、 RCBのコンテキスト状態ワードの中の「アクティブ」ビットに基づく。このビ ットは、当初、プロトコル・エンジンによって0に設定され、この特定のシーケ ンスがアクティブではない(フレームがまだ受信されていない)ことを指示する。 受信コンテキスト・マネジャは、コンテキストのルックアップ及びスイッチング を実行し、関連するRCBがまだこのビット・セットを有していないと判断する ときには、ステップ1304に説明されている作用を実行し、RCBのアクティ ブ・ビットを1に設定する。回答が肯定である場合には、RCBは、シーケンス ID(S_ID)と受信ID(RX_ID)とを用いて更新され、シーケンス・ カウント(SEQ_CNT)を用いて、このシーケンスに対して予測される値が 設定される(ステップ1304)。 次に、フレーム受信コンテキストが有効であるかどうかが判断される(ステッ プ1306)。フレーム受信コンテキストは、先行するシーケンスが不完全であ る場合には、典型的には有効である。ステップ1306は、先行する完全なシー ケンスの状態を記憶し、それによって、シーケンスは、別のフレームがそのシー ケンスに対して受信されるときには後の時点で完成されることになる。この判断 は、また、第1のフレームがこのRCB出ない場合には、ステップ1302から 直接になされる。フレーム受信コンテキストが有効である場合には、先のフレー ム受信コンテキストは、メモリにセーブされ(ステップ1308)、新たなワレー ム受信コンテキストがメモリからロードされる(ステップ1310)。フレーム受 信コンテキストが有効でない場合には、プロセスはステップ1308をスキップ して、メモリからの新たなフレーム受信コンテキストをロードするステップ13 10に進む。次に、信号が受信機に送られ、フレーム受信コンテキストを再評価 する(ステップ1312)。プロセスは、その後で終了する。 次に、図14を参照すると、本発明の好適実施例によるDMA開始プロセスの 流れ図が示されている。フレーム受信機がファイバ・チャネル・ヘッダを評価し 、このヘッダが先にロードされ現在確立している受信コンテキストと一致してい ると判断するときには、フレーム受信機は、受信コンテキスト・マネジャに、フ レーム転送が必要であることを告知する。この時点で、受信コンテキスト・マネ ジャは、DMA開始プロセスを開始させる。このプロセスは、フレーム相対オフ セットがRCBの現在相対オフセットよりも大きいかどうかを判断することによ って開始する(ステップ1400)。この判断への回答が否定であるときには、プ ロセスは、正しいエントリが見つかるまでS/Gリストを逆方向に走査する(ス テップ1402)。回答が肯定である場合には、正しいエントリが見つかるまで S/Gリストを順方向に走査する(ステップ1404)。ステップ1400ないし 1404は、ファイバ・チャネルのヘッダ・パラメータ・フィールドをRCBの 現在の相対オフセット・フィールドと比較し、RCBのベースS/Gポインタと RCBの現在のS/Gポインタとを用いてDMAS/Gリストを順方向又は逆方 向に走査し、正しい開始S/G要素を見つけることによって、適切な開始DMA S/G要素(RCB現在のS/Gポインタ)を見つけるのに用いられる。これら のステップにより、順不同(out of order)で受信されたフレームが正しいDM Aバッファ・アドレスに適切にマップされることが可能となる。 次に、アドレス及び長さの情報が調整される(ステップ1406)。このステッ プは、見出されたS/G要素内のこのフレームに対する実際の開始及び長さを、 ファイバ・チャネルのヘッダ・パラメータ・フィールド及びRCBの現在のS/ Gポインタ・アドレスと、RTCBの現在のS/Gポインタの長さと、RCBの 現在の相対オフセットとに基づいて、計算する。次に、受信DMAは、アドレス 及び長さ情報を用いてプログラムされ、DMA転送が開始される(ステップ14 08)。プロセスは、その後で終了する。 次に図15を参照すると、本発明の好適実施例によるDMA更新プロセスの流 れ図が示されている。ファイバ・チャネルのフレーム・ペイロード・データが複 数のDMAS/Gエントリにわたるときには、受信コンテキスト・マネジャは、 追加的なDMAプログラミング情報を受信DMAユニットに提供し、それによっ て、フレームDMA転送が継続することになる。受信DMAユニットは、追加的 なS/Gエントリの必要性を告知するが、これにより、次のS/G要素を取得し このS/G要素に関係する現在の相対オフセットを更新することによって(ステ ップ1500)、プロセスが開始する。その後で、受信DMAユニットは、ステ ップ1500において決定されたアドレス及び長さ情報を用いてプログラムされ 、DMA転送は、データの転送を継続を開始する(ステップ1502)。プロセス は、この後で終了する。 次に、図16を参照すると、本発明の好適実施例によるフレーム完成処理プロ セスが示されている。受信DMAユニットからの信号のフレーム転送によって指 示されているように、受信DMA動作の完了の際に、受信コンテキスト・マネジ ャは、RCBにおけるDMA転送情報を更新することによって、フレーム完成処 理を開始する(ステップ1600)。その後で、シーケンスの最後に到達したかど うかに関する判断がなされる(ステップ1602)。シーケンスの最後に到達した 場合には、タイマが読み出され、RCBタイム・スタンプ・フィールドが、EM Bレジスタ及びタイマ・ユニット850からタイマ値と共に書き込まれる(ステ ップ1604)。その後で、完成報告が禁止されているかどうかが判断される(ス テップ1606)。報告が禁止されていない場合には、RCBポインタが、シー ケンス完成キューに書き込まれる(ステップ1608)。プロセスは、その後で終 了する。 再びステップ1606を参照すると、報告が禁止されるべき場合には、プロセ スは、終了する。プロセスは、また、ステップ1602においてシーケンスの最 後に到達した場合にも終了する。 リンク制御ユニット864は、2つのポートの間のリンクである。リンク制御 ユニット864は、チップ800内でデータの送受信をする際に用いられる。リ ンク制御ユニット864によって提供される機能は、リンクの幾何学的態様(ト ポロジ)に依存する。例えば、リンクがポイント間のものである場合には、リン ク制御ユニット864は、データの転送を提供するだけである。仲裁されたルー プ・トポロジが用いられている場合には、リンク制御ユニット864は、ループ の管理する追加的な機能を提供する。「ループ」という用語は、一方向的にデー タ を転送するように接続された集合ノードを意味する。それぞれのノードは、ルー プ上のデータに対するソース又は宛先であり、例えば、アダプタ、コンピュータ 、遠隔ストレージ・ユニットなどでありうる。 次に図17を参照すると、本発明の好適実施例によるループ管理制御のための ステート・マシンが示されている。転送制御ユニット880の内部に実現される ステート・マシン1700は、リンク制御ユニット864である。リンク制御ユ ニット864は、示されている例では、仲裁されたループへのアクセスを提供し ている。仲裁されたループでは、仲裁プロセスは、どのノードが送信データへの 権利を有しているのかを判断するのに用いられる。リンク制御ユニット880は 、ループに対するリクエストを送出することによってデータ転送のための仲裁さ れたループへのアクセスを得ようと試みる。リクエストは、ARBプリミティブ とも称される仲裁プリミティブを送ることによってなされる。ループが取得され ると、本発明は、ノード及びループのアクティビティをモニタして、ループの全 体的なパフォーマンスを最大化する。本発明は、トラフィックがすぐに準備が完 了するのか、停止するのかを識別して評価し、更に、ループのパフォーマンスを 最大化する際にループ上でどのようなアクティビティが要求されているのかを識 別し、評価する。 ステート・マシン1700は、アイドル状態であるステートS1で始まり、特 定の宛先亜又はノードに対してループを取得するというリクエストがなされるま で、この状態にとどまる。ループが取得されるべきときには、状態S1にあるス テート・マシン1700は、ループに対し、仲裁プロセスに入ってループの所有 権を取得するように求める。ループは、データがターゲット又は宛先ノードへの 送信のために読み出されるときにだけ、又は、宛先ノードへ送信されるデータが 入手可能であることがわかるとすぐにだけ、要求される。 ループを取得することを求めるリクエストに応答して、ステート・マシン17 00は、ループ状態を待機する状態S2にシフトし、そこで、ステート・マシン 1700はループの所有権が得られた後で開放(open)プリミティブを送出する 。状態S2では、ステート・マシン1700は、ループが、ステート・マシン1 700が実行しているノードによるデータ転送のために使用可能となるのを待機 す る。ノードは、ループを求めて仲裁を行いループを獲得したときには、仲裁獲得 状態にある。「開放」(OPN)プリミティブは、そのプリミティブがターゲット ・ノードを特定するループの上に送られる。ノードは、OPNプリミティブが送 られるときには、「開放」ノードであると考えられる。開放ノードは、ソース・ ノードである。開放ノードは、ループを求める仲裁プロセスに再度入ることを要 求されることなく、異なるノードへの接続を断絶させたり確立したりする。「開 放された」ノードは、開放ノードが接続を確立しているノードである。開放され たノードは、宛先又はターゲット・ノードである。開放されたノードは、どれか が入手可能であるならば、データを開放ノードに戻すことができるが、他のどの ノードにもデータを送ることは許されない。「接続」は、ソース・ノードがデー タを送ることを希望している宛先ノードを識別する開放ノードによってなされる 。接続は、OPNプリミティブが送られるときに確立される。接続を確立するに は、完全なハンドシェークは要求されない。接続の閉鎖だけが、完全なハンドシ ェーク、すなわち、プリミティブの変換を必要とする。 ステート・マシン1700は、接続が要求されたノードに対し確立されること に応答して、オン・ループ状態である状態S3にシフトし、規則によって、フレ ームの送出が可能となる。「フレーム」とは、ヘッダ情報が追加されたデータの パケットである。一般に、すべてのデータがオン・デマンドで入手可能であるこ とがわかるまではフレームを送り始めることは不可能である。その理由は、フレ ームの送信は、示されている例では、中断することができないからである。ステ ート・マシンが状態S3にあるときには、フレームは、ループ上をノードまで送 ることが可能である。フレームの完成に応答して、ステート・マシン1700は 、判断ウィンドウ状態である状態S4にシフトして、追加的なフレームが送る準 備ができているかどうかが検討される。また、追加的なフレームが先のフレーム と同じノードに送られる準備ができており、更に、宛先が追加的なフレームを受 け入れる準備ができている場合には、ステート・マシン1700は、状態S3に 戻る。ハンドシェーキングのプロセスが、送信側のノードと受信側のノードとの 間で生じ、受信側ノードにおけるバッファがオーバーランすることを防止する。 このハンドシェーキングはまた、「クレジット」とも称される。状態S3と状態 S4 との間のこのシフトは、データのフレームが宛先に向けて転送される準備ができ ている限りなされる。状態S4では、ノードに送るための追加的なデータが入手 可能ではない、又は、規則がループの開放を命じている場合には、ステート・マ シン1700は、閉鎖状態の待機である状態S5にシフトし、それ以上のデータ はノードに送られない。この状態では、「閉鎖」(CLS)プリミティブがループ 上に送られ、ループを開放する。閉鎖プリミティブのハンドシェーキングが完了 しループがもはや開放ではなくなると、ステート・マシン1700は、状態S1 のアイドル状態に戻る。閉鎖が生じると、ループの所有権(ownership)は必ず しも放棄されるとは限らない。変化が、decision_window-waiting_for_close_id leから生じると、ループの所有権は放棄される。所有権の放棄を望まない場合に は、decision_window-waiting_for_transfer-waiting_for_openループが選択さ れる。これは、基本的には、先のルートと同じCLSハンドシェーキングを行う が、ループの所有権は保持される。これは、0PNをwaiting_for_open状態では 直ちに送ることが許されないことの理由の一部である。 再び状態S4を参照すると、データの追加的なフレームが入手可能であり許容 されてはいるが、異なるノードに対するものであって異なるノードが開放される ことを要求している場合には、ステート・マシン1700は、転送状態の待機で ある状態S6にシフトする。状態S6では、ステート・マシン1700は、別の ノードへの転送リクエストを送る。状態S6におけるこのリクエストは、閉鎖プ リミティブの送出と、戻されるべき閉鎖プリミティブの待機とを含む。先の接続 が閉鎖されたと判断するが、規則によって開放を送ることが許されない場合には 、ステート・マシン1700は、開放状態の待機である状態S7にシフトし、こ の状態において、ステート・マシン1700は、開放プリミティブを送り、新た なノードを開放する。状態S7では、ステート・マシン1700は、データ転送 の前にタイム・ギャップが生じるように、待機する。要求されたノードへの接続 が確立されると、ステート・マシン1700は、状態S3にシフトして、データ のフレームをそのノードに送る。 状態S6に戻ると、閉鎖プリミティブへの応答を待機している間に、ステート ・ マシン1700は、新たなノードが廃棄されるようにとのリクエストを要求する 規則に応答して、状態S5にシフトし、ループを閉鎖する。状態S1では、閉鎖 プリミティブが受信され、閉鎖プリミティブを伴う応答が要求されると、ステー ト・マシンは状態S5にシフトして閉鎖プリミティブを送り、状態S1に戻る。 再び状態S2を参照すると、ループへのアクセスを待機している間に、ステート ・マシン1700は、応答における閉鎖プリミティブを求める閉鎖プリミティブ を受信することに応答して、又は、送信リクエストが廃棄されることを規則が求 めている場合には、状態S5にシフトする。 次に図18を参照すると、本発明の好適実施例による開放状態におけるループ 管理のためのプロセスの流れ図が示されている。このプロセスは、あるノードが 、ステート・マシンが動作しているノードを開放したかどうかと、クレジットの 不足のためにデータ送信が行われていないかどうかと、合理的な時間周期の後で 接続を閉鎖していないかどうか(ステップ1800)を判断することによって開 始する。データ転送がなされないままで選択された時間周期が経過した場合には 、プロセスは、接続を閉鎖し(ステップ1802)、その後でプロセスが終了する 。そのような状況が存在しない場合には、データ送信のリクエストが除去された かどうかに関する判断がなされる(ステップ1804)。リクエストは、様々な理 由で除去されうる。例えば、ホストからのリクエストや、エラー条件の回復、ま た、送信機がデータ送信のリクエストを除去することもありうる。リクエストが 除去されると、接続は閉鎖され(ステップ1806)、ループの所有権は開放され (ステップ1808)、プロセスは、その後で終了する。 次の図19を参照すると、本発明の好適実施例によって、アイドル状態でルー プの取得を制御するのに用いられる規則を組み入れているプロセスの流れ図が示 されている。示されている例では、ポートは「欲張りな」(greedy)状態におかれ ており、この状態では、いったん得られたループの所有権は、データが再び入手 可能となる可能性が存在する限り、保持される。更に、この状態では、ノードは 、別のノードがループへのアクセスを望んでいることを検出しない場合には、ル ープの所有権を保持する。 プロセスは、欲張りな状態が存在するかどうかを判断することによって開始す る(ステップ1900)。欲張りな状態が存在する場合には、プロセスは、ノード がデータをロードしているかどうかを判断する(ステップ1902)。このノード は、ソース・ノードである。ノードがデータをロードしていない場合には、プロ セスは、ステート・マシンをアイドル状態に維持する(ステップ1904)。プロ セスは、その後に終了する。ノードがデータをロードしている場合には、ループ が取得され(ステップ1906)、ステート・マシンが、図17に図解されている ように、ループ待機状態にシフトされる(ステップ1908)。プロセスは、その 後で終了する。再びステップ1900を参照すると、欲張りの状態が存在してい ない場合には、プロセスは、完全なフレームが送られる準備ができているかどう かを判断する。完全なフレームが送られる準備ができている場合には、プロセス は、ライブ(live)を取得するように進み(ステップ1906)、ループ待機状態 にシフトされる(ステップ1908)。プロセスは、その後で終了する。完全なフ レームを送る準備ができていない場合には、ステート・マシンは、アイドル状態 に維持され(ステップ1912)、プロセスは、後で終了する。図19は、複数の ステップがアイドル状態の間に反復される単一のパスを通過するプロセスを示し ている。 図20を参照すると、本発明の好適実施例に従ってループ待機状態において用 いられる規則を組み入れているプロセスの流れ図が図解されている。このプロセ スは、ノードがデータ転送のための別のノードによって開放された場合に用いら れる。プロセスは、ループを取得しようとし(ステップ2000)、他方で、デー タを遠隔ノードに送ることを試み、このプロセスが実行されるノードを開放する (ステップ2002)。ループが取得されたかどうかに関する判断がなされる(ス テップ2004)。ノードがまだ取得されていない場合には、プロセスは、ステ ップ2000に戻る。ループ取得の際には、プロセスは、ステップ2002にお いてデータを送るパラレル・プロセスを含めて、終了する。また、遠隔ノードに 送るために追加的データが存在するかどうかを判断する(ステップ2006)。デ ータが依然として入手可能である場合には、プロセスは、ステップ2002に戻 る。送られるべき追加的データが存在しない場合には、プロセスは、ステップ2 000におけるループ取得の試みの終了も含めて、終了する。このプロセスは、 デー タ転送のために別のノードによってそのノードが開放されるかどうかを判断する 。ただし、この遠隔ノードがループが取得されたときに転送されることが予定さ れているデータのための宛先ノードである。ノードが宛先ノードでもある別のノ ードによって開放された場合には、データは、好ましくは、この遠隔ノードに送 られる。そして、更に多くのデータが送られるために存在しているかどうかが判 断される(2004)。送られるデータが更に存在するならば、ステート・マシン は、ループを取得する(ステップ2008)。プロセスは、その後で終了する。再 びステップ2004を参照すると、送るべきデータがそれ以上存在しない場合に は、ステート・マシンは、閉鎖待機状態にシフトされる(ステップ2008)。プ ロセスは、その後で終了する。再びステップ2000を参照すると、ノードが遠 隔ノードによって開放されていない場合には、プロセスは、ステップ2006に おいてループを取得するように進む。これらのステップはシリアルであるように 示されているが、プロセスは、実際には、2つのパラレル・プロセスとして生じ る。連続的にループを取得する間に、データは、可能であれば、送られるのが好 ましい。これらのプロセスは、すべてのデータが送られるまで、又は、ループが 要求されるまで、パラレルに継続する。 次に図21では、本発明の好適実施例に従って判断ウィンドウ状態における変 化(transitions)を扱うのに用いられる規則を組み入れているプロセスの流れ 図が示されている。プロセスは、ループに対するリクエストが別のノードによっ てなされたかどうかを判断することによって開始する(ステップ2100)。ルー プが別のノードによって要求されていない場合には、クレジットの不足のために データが送信されないかどうか、更に、データが受信されていないかどうかが判 断される(ステップ2102)。このような条件が存在しない場合には、ループが 保持されていた時間の長さをトラッキングするタイマが、リセットされる(ステ ップ2104)。プロセスは、その後で終了する。ステップ2102を参照する と、データが送信又は受信されていない場合には、プロセスは、ループが保持さ れていた時間が還択された時間よりも長いかどうかがを判断する(ステップ21 08)。この選択された時間周期は、実現例に依存してプログラム可能である。 ループが保持されていた時間が選択された時間周期よりも長い場合には、ステー ト・マシンは、閉鎖待機状態にシフトされ(ステップ2108)、プロセスは、そ の後で終了する。そうでない場合にも、プロセスは、停止する。ステップ210 0を再び参照すると、ループに対するリクエストが別のノードによってなされ、 プロセスは、また、既に述べたように、ステップ2106に進む。 次に図22を参照すると、本発明の好適実施例に従って判断ウィンドウ状態に おける変化を処理する規則を組み入れているプロセスの流れ図が示されている。 このプロセスは、ノードが公平(フェア、fair)な状態である場合に実行される 。換言すると、ノードは、残りのノードがループを要求するときには常にそれら の残りのノードがループにアクセスすることを可能にすることを試みる。このプ ロセスは、ループがリクエストされているかどうかを判断することによって開始 する。そうでない場合には、ステート・マシンは、判断ウィンドウ状態から閉鎖 状態にシフトして、接続を閉鎖し、ループを開放する(ステップ2202)。その 後で、ステート・マシンは、アイドル状態においてループを要求することを試み るように促される(ステップ2204)。プロセスは、その後で終了する。 図23を参照すると、本発明の好適実施例に従って判断ウィンドウ状態からの 変化を扱う際に用いる規則を組み入れたプロセスの流れ図が示されている。この プロセスは、ループ上のノードをポーリングする(poll)のに用いられる。この プロセスは、ノードを開放することによって開始する(ステップ2300)。次に 、プロセスは、ノードが応答する時間周期の間待機する(ステップ2302)。次 に、追加的なフレームがどのようなものであれ受信されたかどうかが判断される (ステップ2304)。追加的なフレームが受信されている場合には、プロセスは 、ステップ2302に戻る。そうでない場合には、ノードは、閉鎖される(ステ ップ2306)。次に、追加的なノードがポーリングのために存在するかどうか が判断される(ステップ2308)。追加的なノードが存在する場合には、プロセ スは、ステップ2300に戻り、別のノードをポーリングする。そうでない場合 には、プロセスは、終了する。 以上において、本発明は、完全に機能するデータ処理システムのコンテキスト に関して説明してきたが、この分野の当業者であれば、本発明のプロセスは、命 令のコンピュータ可読な媒体の形式や様々な形態で提供することが可能であり、 本発明は、提供されたものを実行するのに実際に用いられる媒体を生じる特定の タイプの信号とは無関係に応用されうることが重要である。コンピュータ可読な 舞いたいには、フロッピィ・ディスク、ハードディスク・ドライブ、RAM、C D−ROM、出る及びアナログ通信リンクなどの伝送タイプの媒体などが含まれ る。 本発明の説明は、例示と説明を目的としてなされたが、網羅的なものではなく 、ここで開示された形式に限定されるものでもない。当業者には、多くの修正や 改変が明らかである。実施例は、当業者が考慮されている特定の使用に対して適 した様々な修正を含んだ形で本発明を理解することを可能ならしめるように、本 発明の原理を最良に説明するように選択され説明されてる。
【手続補正書】特許法第184条の4第4項 【提出日】平成11年10月14日(1999.10.14) 【補正内容】 [請求の範囲]の記載を次の通りに補正する。 『1.チップであって、 入力ポートと、 出力ポートと、 第1の処理ユニットであって、 このチップから離れて位置するホストからのリクエストを受信し、データを 宛先に送信する第1の受信手段と、 前記データを受信する第2の受信手段と、 前記宛先と前記データとを、前記宛先への送信に先だって、このチップに接 続されたメモリに記憶する記憶手段と、 を含む第1の処理ユニットと、 第2の処理ユニットであって、 宛先に送信するデータの存在を検出する検出手段と、 前記データと前記宛先とを用いて前記宛先への搬送のためのフォーマットに 前記データをフォーマットするフォーマット手段と、 を含む第2の処理ユニットと、 を備えていることを特徴とするチップ。 2.請求項1記載のチップにおいて、前記第1の処理ユニットは、宛先に送ら れるデータのためのアクティビティのリストを作成し、前記検出手段は、前記リ ストを検査し前記宛先に送信するためのデータの存在を検出することを特徴とす るチップ。 3.請求項1記載のチップにおいて、予測されるデータのリストが前記第1の 処理ユニットによって発生され、前記第2の処理ユニットは、 データを遠隔ソースから受信する受信手段と、 前記データを記憶する識別手段と、 前記第1の処理ユニットに、いつすべてのデータが前記遠隔ソースから受信さ れたかを指示する指示手段と、 を含むことを特徴とするチップ。 4.請求項1記載のチップ・アーキテクチャにおいて、前記第2の処理ユ ニットは埋め込み型プロセッサであることを特徴とするチップ・アーキテクチャ 。 5.請求項1記載のチップにおいて、前記第2の処理ユニットはステート・マ シンであることを特徴とするチップ。 6.請求項1記載のチップにおいて、前記第2の受信手段は、ホスト・メモリ からこのチップに結合されたメモリにデータを転送する転送手段を備えているこ とを特徴とするチップ。 7.請求項1記載のチップにおいて、前記入力ポートは、ホスト・システム上 のバスと通信するように構成され、他方で、前記出力ポートは、前記宛先と通信 するように構成されていることを特徴とするチップ。 8.ホストから宛先にデータを転送するチップであって、 前記ホストから、前記宛先へのデータ転送のリクエストを受信し、メモリに前 記宛先と前記データとのIDを記憶する第1の処理ユニットと、 前記メモリ内の前記データを検出し、前記第1の処理ユニットによる介入なし に前記IDを用いて、前記データを前記宛先に転送する第2の処理ユニットと、 を備えていることを特徴とするチップ。 9.請求項8記載のチップにおいて、前記第2の処理ユニットは、前記データ を前記宛先によって用いられるフォーマットに配置することを特徴とするチップ 。 10.請求項9記載のチップにおいて、前記ホストから受信されたデータは第 1のフォーマットを有し、前記データは前記宛先によって用いられる第2のフォ ーマットにフォーマットされることを特徴とするチップ。 11.請求項10記載のチップにおいて、前記第1のフォーマットはSCSI プロトコルであることを特徴とするチップ。 12.請求項10記載のチップにおいて、前記第2のフォーマットはファイバ ・チャネル・プロトコルであることを特徴とするチップ。 13.請求項8記載のチップにおいて、前記第2の処理ユニットは、前記宛先 へのデータ転送を制御するコンテキスト・マネジャを含み、このチップ は、更に、前記コンテキスト・マネジャによって制御されデータを前記宛先に転 送する送信機を備えていることを特徴とするチップ。 14.請求項13記載のチップにおいて、 データを宛先から受信する受信機を更に備えており、 前記第2の処理ユニットは、前記データの受信を制御して、前記ホストへのデ ータの存在を前記第1の処理ユニットに指示することを特徴とするチップ。 15.請求項8記載のチップにおいて、前記第2の処理ユニットは埋め込み型 プロセッサであることを特徴とするチップ。 16.請求項8記載のチップにおいて、前記第2の処理ユニットはステート・ マシンであることを特徴とするチップ。 17.請求項8記載のチップにおいて、前記第1の処理ユニットはプロトコル ・エンジンであることを特徴とするチップ。 18.請求項8記載のチップにおいて、前記第1の処理ユニットは、送信され るデータのリストを作成し、前記リストは、前記第2の処理ユニットによってデ ータを前記宛先に転送するのに用いられることを特徴とするチップ。 19.請求項8記載のチップにおいて、 複数のフレームを受信する受信機を更に備えており、 前記第2の処理ユニットは、前記複数のフレームのそれぞれを、それらが前記 受信機によって受信される際に処理し、前記複数のフレームのすべてがいつ受信 されたかを判断して、前記複数のフレームのすべてが受信されたという指示を提 供することを特徴とするチップ。 20.チップであって、 データを宛先に転送するというホストからのリクエストを受信するプロトコル ・エンジンと、 前記プロトコル・エンジンに接続されており、前記ホストからの前記データを 受信するデータ・ムーバと、 前記プロトコル・エンジンと前記データ・ムーバとに接続されており、前記デ ータ・ムーバによって受信されたデータを前記プロトコル・エンジンに よる介入なしに前記宛先に転送するトランスポート制御ユニットと、 を備えていることを特徴とするチップ。 21.請求項20記載のチップにおいて、前記データ・ムーバはバスによって 前記ホストに接続されていることを特徴とするチップ。 22.請求項20記載のチップにおいて、前記トランスポート制御ユニットは 、 前記データ・ムーバに接続されており、前記ホストから受信されたデータを前 記宛先に送信する送信機と、 前記データ・ムーバに接続されており、ソースから前記ホストへのデータを受 信する受信機と、 前記受信機と前記送信機とに接続されており、前記送信機によるデータの送信 と前記受信機によるデータの受信とを制御する処理ユニットと、 を含むことを特徴とするチップ。 23.請求項22記載のチップにおいて、前記処理ユニットは埋め込み型プロ セッサであることを特徴とするチップ。 24.ホストから宛先にデータを転送する装置であって、 第1のプロセッサであって、 前記ホストから前記宛先にデータを転送するリクエストを受信する第1の受 信手段であって、前記リクエストは、それぞれが、前記宛先のIDを含む、第1 の受信手段と、 前記宛先に転送するデータを受信する第2の受信手段と、 前記宛先と第1のプロトコルを有する前記データとをメモリに記憶する記憶 手段と、 を含む第1のプロセッサと、 第2のプロセッサであって、 第1のフォーマットの前記データを第2のフォーマットにフォーマットしフ ォーマットされたデータを形成するフォーマット手段と、 前記フォーマットされたデータを前記記憶手段に記憶された前記宛先を用い て転送する転送手段と、 を含む第2のプロセッサと、 を備えていることを特徴とする装置。 25.請求項24記載の装置において、前記第1のプロトコルはSCSIプロ トコルであることを特徴とする装置。 26.請求項24記載の装置において、前記第2のプロトコルはファイバ・チ ャネル・プロトコルであることを特徴とする装置。 27.請求項24記載の装置において、前記リクエストは、ホスト・プロセッ サがデータ転送のためのリクエストを配置するリクエスト・キューを用いてなさ れることを特徴とする装置。 28.請求項24記載の装置において、前記第1のプロセッサは、前記宛先に 送られるデータのリストを作成するリスト化手段を更に含み、前記第2のプロセ ッサにおける前記転送手段は、前記リストを用いてデータを前記宛先に転送する ことを特徴とする装置。 29.請求項24記載の装置において、遠隔ソースからデータを受信するポー トを更に含んでおり、前記第2のプロセッサは、 前記枝なっくソースから受信された前記第2のプロトコルを有するデータを記 憶する記憶手段と、 前記第2のプロトコルを有する前記データを前記第1のプロトコルにフォーマ ットする第2のフォーマット手段と、 前記第1のプロセッサにデータが前記遠隔ソースから受信されたことを指示す る指示手段と、 を更に含むことを特徴とする装置。 30.チップであって、 ホスト上のバスからのデータを送信及び受信するバス・インターフェース・ユ ニットと、 前記バス・インターフェース・ユニットに接続されており、前記バスに結合さ れたホスト・メモリからこのチップに結合されたローカル・メモリへの情報の転 送を管理し、データをデバイスに送信するのに用いられた送信アクティビティの リストを発生するプロトコル・エンジンと、 前記デバイスへの通信リンクのためのインターフェースを提供するリンク・コ ントローラと、 前記リンク・コントローラに接続されており、前記リンク・コントローラによ る前記デバイスへの転送のためのフォーマットへのデータのフォーマットを管理 する送信機と、 前記リンク・コントローラに接続されており、前記リンク・コントローラによ って受信されるデータを管理する受信機と、 前記プロトコル・エンジンに結合されており、送信アクティビティの前記リス トを検討し、前記送信機を用いて前記リストに基づきデータの転送を実行して、 前記受信機によって受信されるデータを処理するコンテキスト・マネジャと、 を備えていることを特徴とするチップ。 31.請求項30記載のチップにおいて、前記プロトコル・エンジンは埋め込 み型プロセッサであることを特徴とするチップ。 32.請求項31記載のチップにおいて、前記コンテキスト・マネジャは埋め 込み型プロセッサであることを特徴とするチップ。 33.請求項31記載のチップにおいて、前記コンテキスト・マネジャはステ ート・マシンであることを特徴とするチップ。 34.請求項30記載のチップにおいて、前記データはフレームの形式であり 、前記コンテキスト・マネジャは異なるソースから順不同で受信されるフレーム を処理することを特徴とするチップ。 35.請求項30記載のチップにおいて、前記コンテキスト・マネジャは、送 信アクティビティの前記リストを検討し、送信アクティビティの前記リストから 第1の項目を読み出すことによってデータ転送を実行し、前記項目に対するデー タがローカル・データであるかどうかを判断し、前記データがローカルであると いう判断に応答して、前記データを前記ローカル・メモリから前記送信機に書き 込むことを特徴とするチップ。 36.請求項35記載のチップにおいて、前記コンテキスト・マネジャは、前 記項目に対するデータがシステム・データであるという判断に応答して、 バスを介して、前記ホスト・メモリからのデータを送信機にロードすることを特 徴とするチップ。 37.請求項36記載のチップにおいて、前記送信機は、データとコンテキス ト情報とを記憶する記憶装置と、前記記憶装置に接続されたフレーマとを含むこ とを特徴とするチップ。 38.請求項35記載のチップにおいて、送信アクティビティの前記リストは 、複数の送信制御ブロックであることを特徴とするチップ。 39.チップであって、 第1のバスからホストへデータを送信及び受信するインターフェースを有する バス・インターフェース・ユニットと、 前記バス・インターフェース・ユニットに接続されており、ホスト・メモリか らこのチップに結合されたメモリへの情報の転送を管理し、データ転送のリクエ ストに応答し、複数の動作モードを有するプロトコル・エンジンであって、 前記プロトコル・エンジンがホスト・メモリの中にあるデータ・ブロックを 転送するリクエストを検出する第1の動作モードと、 前記リクエストの検出に応答する第2の動作モードであって、前記プロトコ ル・エンジンは、前記データ・ブロックを前記ホスト・メモリからローカル・メ モリの中に移動させ、前記送信ブロックは、前記データ・ブロックと前記データ ・ブロックを送信するのに用いられる情報とを含む、第2の動作モードと、 を備えたプロトコル・エンジンと 前記送信ブロックを検出し、前記送信ブロックを送信機に送信する転送エンジ ンであって、前記送信機は、前記送信ブロックを受信してデータ・ブロックを送 信のためのフォーマットに配置し、前記フォーマットは前記情報から識別される 、転送エンジンと、 前記送信機に接続されており、前記デバイスへの通信リンクのためのインター フェースを提供するリンク・コントローラと、 を備えていることを特徴とするチップ。 40.請求項39記載のチップにおいて、前記コンテキスト情報は、宛先への 経路のIDを含むことを特徴とするチップ。 41.請求項39記載のチップにおいて、前記リンク・コントローラは、ファ イバ・チャネル仲裁ループによる通信のために構成されていることを特徴とする チップ。』
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョンソン,スティーヴン・エム アメリカ合衆国コロラド州80906,コロラ ド・スプリングズ,アラパホ・ドライブ 522 (72)発明者 アダムズ,ジョン・エム アメリカ合衆国コロラド州80919,コロラ ド・スプリングズ,ライフル・サークル 6430 (72)発明者 リーバー,マーク・エイ アメリカ合衆国ジョージア州30005,アル ファレッタ,プリザーブ・レイン 12495 【要約の続き】 断する。更に、リンク制御ユニットが提供され、そこで は、ホストがループに接続されるときに、ループ管理が 提供される。ループの管理には、ホストとループ上の他 のノードとによってデータが受信及び送信される状態に 応答して、ループの取得を開始しループの解放を開始す るメカニズムの実現が含まれる。

Claims (1)

  1. 【特許請求の範囲】 1.チップであって、 入力ポートと、 出力ポートと、 第1の処理ユニットであって、 このチップから離れて位置するホストからのリクエストを受信し、データを 宛先に送信する第1の受信手段と、 前記データを受信する第2の受信手段と、 前記宛先と前記データとを、前記宛先への送信に先だって、このチップに接 続されたメモリに記憶する記憶手段と、 を備えている第1の処理ユニットと、 宛先に送信するデータの存在を検出する検出手段を含む第2の処理ユニットと 、 前記データと前記宛先とを用いて前記宛先への搬送のためのフォーマットに前 記データをフォーマットするフォーマット手段と、 を備えていることを特徴とするチップ。 2.請求項1記載のチップにおいて、前記第1の処理ユニットは、宛先に送ら れるデータのためのアクティビティのリストを作成し、前記検出手段は、前記リ ストを検査し前記宛先に送信するためのデータの存在を検出することを特徴とす るチップ。 3.請求項1記載のチップにおいて、予測されるデータのリストが前記第1の 処理ユニットによって発生され、前記第2の処理ユニットは、 データを遠隔ソースから受信する受信手段と、 前記データを記憶する識別手段と、 前記第1の処理ユニットに、いつすべてのデータが前記遠隔ソースから受信さ れたかを指示する指示手段と、 を含むことを特徴とするチップ。 4.請求項1記載のチップにおいて、前記第2の処理ユニットは埋め込み型プ ロセッサであることを特徴とするチップ。 5.請求項1記載のチップにおいて、前記第2の処理ユニットはステート・マ シンであることを特徴とするチップ。
JP55055399A 1998-04-03 1999-03-29 第1のプロトコルから第2のプロトコルへのデータ転送方法及び装置 Pending JP2002512766A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/054,849 1998-04-03
US09/054,849 US6185620B1 (en) 1998-04-03 1998-04-03 Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion
PCT/US1999/006772 WO1999052253A1 (en) 1998-04-03 1999-03-29 Method and apparatus for transferring data from first protocol to a second protocol

Publications (1)

Publication Number Publication Date
JP2002512766A true JP2002512766A (ja) 2002-04-23

Family

ID=21993909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP55055399A Pending JP2002512766A (ja) 1998-04-03 1999-03-29 第1のプロトコルから第2のプロトコルへのデータ転送方法及び装置

Country Status (4)

Country Link
US (1) US6185620B1 (ja)
EP (1) EP0986886A1 (ja)
JP (1) JP2002512766A (ja)
WO (1) WO1999052253A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008517379A (ja) * 2004-10-15 2008-05-22 フジフイルム ディマティックス インコーポレイテッド プリント装置用通信プロトコル
US7907298B2 (en) 2004-10-15 2011-03-15 Fujifilm Dimatix, Inc. Data pump for printing
US8085428B2 (en) 2004-10-15 2011-12-27 Fujifilm Dimatix, Inc. Print systems and techniques
US8199342B2 (en) 2004-10-29 2012-06-12 Fujifilm Dimatix, Inc. Tailoring image data packets to properties of print heads
US8251471B2 (en) 2003-08-18 2012-08-28 Fujifilm Dimatix, Inc. Individual jet voltage trimming circuitry

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453357B1 (en) * 1999-01-07 2002-09-17 Cisco Technology, Inc. Method and system for processing fragments and their out-of-order delivery during address translation
JP3148733B2 (ja) * 1999-02-26 2001-03-26 株式会社神戸製鋼所 信号処理装置及び信号処理システム
US6675243B1 (en) * 1999-03-17 2004-01-06 Adaptec, Inc. Methods and apparatus for implementing a device side advanced serial protocol
US6487628B1 (en) * 1999-03-31 2002-11-26 Compaq Computer Corporation Peripheral component interface with multiple data channels and reduced latency over a system area network
US6747949B1 (en) * 1999-05-21 2004-06-08 Intel Corporation Register based remote data flow control
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6978457B1 (en) * 2000-01-31 2005-12-20 Agilent Technologies, Inc. Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
US6856619B1 (en) * 2000-03-07 2005-02-15 Sun Microsystems, Inc. Computer network controller
EP1148690A1 (en) * 2000-04-20 2001-10-24 Telefonaktiebolaget Lm Ericsson Method, gateway system and arrangement in a communication network
US6728815B1 (en) 2000-12-20 2004-04-27 Adaptec, Inc. Method and structure for supporting data streaming by a SCSI target during the data in phase of the packetized SCSI protocol
US6745260B1 (en) 2000-12-20 2004-06-01 Adaptec, Inc. Method and system for data streaming during the data in phase of the packetized SCSI protocol
US6826646B1 (en) 2000-12-20 2004-11-30 Adaptec, Inc. Method and structure for supporting data streaming by a SCSI initiator during the data in phase of the packetized SCSI protocol
US7047327B1 (en) 2000-12-20 2006-05-16 Adaptec, Inc. Method and structure for supporting flow control by a SCSI initiator during the data out phase of the packetized SCSI protocol
US6769037B1 (en) 2000-12-20 2004-07-27 Adaptec, Inc. Method and system for flow control during the data out phase of the packetized SCSI protocol
US6842798B1 (en) 2000-12-20 2005-01-11 Adaptec, Inc. Method and structure for supporting flow control by a SCSI target during the data out phase of the packetized SCSI protocol
US20020118692A1 (en) * 2001-01-04 2002-08-29 Oberman Stuart F. Ensuring proper packet ordering in a cut-through and early-forwarding network switch
US7042891B2 (en) * 2001-01-04 2006-05-09 Nishan Systems, Inc. Dynamic selection of lowest latency path in a network switch
US6629229B1 (en) * 2001-05-24 2003-09-30 Lsi Logic Corporation Message index descriptor
US7389332B1 (en) 2001-09-07 2008-06-17 Cisco Technology, Inc. Method and apparatus for supporting communications between nodes operating in a master-slave configuration
TW516282B (en) * 2001-10-16 2003-01-01 Via Tech Inc Transmission method with IR transmission head recognizing capability
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
US7421478B1 (en) 2002-03-07 2008-09-02 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
US7415535B1 (en) * 2002-04-22 2008-08-19 Cisco Technology, Inc. Virtual MAC address system and method
US7200610B1 (en) 2002-04-22 2007-04-03 Cisco Technology, Inc. System and method for configuring fibre-channel devices
US7165258B1 (en) 2002-04-22 2007-01-16 Cisco Technology, Inc. SCSI-based storage area network having a SCSI router that routes traffic between SCSI and IP networks
US7587465B1 (en) 2002-04-22 2009-09-08 Cisco Technology, Inc. Method and apparatus for configuring nodes as masters or slaves
US7433952B1 (en) 2002-04-22 2008-10-07 Cisco Technology, Inc. System and method for interconnecting a storage area network
US7188194B1 (en) * 2002-04-22 2007-03-06 Cisco Technology, Inc. Session-based target/LUN mapping for a storage area network and associated method
US7509436B1 (en) * 2002-05-09 2009-03-24 Cisco Technology, Inc. System and method for increased virtual driver throughput
US7240098B1 (en) 2002-05-09 2007-07-03 Cisco Technology, Inc. System, method, and software for a virtual host bus adapter in a storage-area network
US7385971B1 (en) 2002-05-09 2008-06-10 Cisco Technology, Inc. Latency reduction in network data transfer operations
US7154886B2 (en) * 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7230929B2 (en) * 2002-07-22 2007-06-12 Qlogic, Corporation Method and system for dynamically assigning domain identification in a multi-module fibre channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US20040141518A1 (en) * 2003-01-22 2004-07-22 Alison Milligan Flexible multimode chip design for storage and networking
US7831736B1 (en) 2003-02-27 2010-11-09 Cisco Technology, Inc. System and method for supporting VLANs in an iSCSI
US7295572B1 (en) 2003-03-26 2007-11-13 Cisco Technology, Inc. Storage router and method for routing IP datagrams between data path processors using a fibre channel switch
US7433300B1 (en) 2003-03-28 2008-10-07 Cisco Technology, Inc. Synchronization of configuration data in storage-area networks
US7904599B1 (en) 2003-03-28 2011-03-08 Cisco Technology, Inc. Synchronization and auditing of zone configuration data in storage-area networks
US7526527B1 (en) 2003-03-31 2009-04-28 Cisco Technology, Inc. Storage area network interconnect server
US6961784B1 (en) * 2003-04-17 2005-11-01 Qlogic Corporation Method and system for processing non-data frames in host bus adapters
US7451208B1 (en) 2003-06-28 2008-11-11 Cisco Technology, Inc. Systems and methods for network address failover
US7646767B2 (en) * 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US20050066045A1 (en) * 2003-09-03 2005-03-24 Johnson Neil James Integrated network interface supporting multiple data transfer protocols
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US8667194B2 (en) 2003-12-15 2014-03-04 Finisar Corporation Two-wire interface in which a master component monitors the data line during the preamble generation phase for synchronization with one or more slave components
US8225024B2 (en) * 2004-03-05 2012-07-17 Finisar Corporation Use of a first two-wire interface communication to support the construction of a second two-wire interface communication
US7930377B2 (en) * 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7380030B2 (en) * 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US20060271636A1 (en) * 2005-05-25 2006-11-30 Senaka Balasuriya Push-to-transfer (PTX) content from remote site
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US7721018B2 (en) * 2006-08-24 2010-05-18 Microchip Technology Incorporated Direct memory access controller with flow control
US8683285B2 (en) * 2010-12-29 2014-03-25 Plx Technology, Inc. Parallel packetized interconnect with simplified data link layer
US8560736B2 (en) * 2011-06-01 2013-10-15 International Business Machines Corporation Facilitating processing of out-of-order data transfers
US8868854B2 (en) * 2011-12-15 2014-10-21 Lsi Corporation Systems and methods for handling out of order reporting in a storage device
US8910005B2 (en) 2012-12-03 2014-12-09 Lsi Corporation Systems and methods for selective retry data retention processing
US9190104B2 (en) 2012-12-13 2015-11-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for data retry using averaging process
US8949696B2 (en) 2013-02-19 2015-02-03 Lsi Corporation Systems and methods for trapping set disruption
CN105051707A (zh) 2013-04-01 2015-11-11 惠普发展公司,有限责任合伙企业 外部存储器控制器
US11126372B2 (en) 2013-04-01 2021-09-21 Hewlett Packard Enterprise Development Lp External memory controller
US20140372655A1 (en) * 2013-06-18 2014-12-18 Moore Performance Systems LLC System and Method for Symmetrical Direct Memory Access (SDMA)
US8976475B1 (en) 2013-11-12 2015-03-10 Lsi Corporation Systems and methods for large sector dynamic format insertion
US9385758B2 (en) 2014-01-02 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for efficient targeted symbol flipping
GB2575289B (en) * 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
CN113328926B (zh) * 2020-02-28 2023-02-24 北京机械设备研究所 一种fc-ae-1553和fc-ae-asm的混合网络系统
EP4164184A1 (en) * 2021-10-07 2023-04-12 Renesas Electronics Corporation A communication controller and communication control method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638518A (en) 1994-10-24 1997-06-10 Lsi Logic Corporation Node loop core for implementing transmission protocol in fibre channel
US5598541A (en) * 1994-10-24 1997-01-28 Lsi Logic Corporation Node loop port communication interface super core for fibre channel
US5519695A (en) * 1994-10-27 1996-05-21 Hewlett-Packard Company Switch element for fiber channel networks
US5625563A (en) * 1995-01-09 1997-04-29 Lsi Logic Corporation Method and system for reducing the number of connections between a plurality of semiconductor devices
US5623494A (en) * 1995-06-07 1997-04-22 Lsi Logic Corporation Asynchronous transfer mode (ATM) interconnection system for multiple hosts including advanced programmable interrupt controller (APIC)
US5832279A (en) * 1995-06-07 1998-11-03 Lsi Logic Corporation Advanced programmable interrupt controller (APIC) with high speed serial data bus
US5610745A (en) * 1995-10-26 1997-03-11 Hewlett-Packard Co. Method and apparatus for tracking buffer availability
US5944798A (en) * 1997-02-19 1999-08-31 Compaq Computer Corp. System and method for arbitrated loop recovery

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8251471B2 (en) 2003-08-18 2012-08-28 Fujifilm Dimatix, Inc. Individual jet voltage trimming circuitry
JP2008517379A (ja) * 2004-10-15 2008-05-22 フジフイルム ディマティックス インコーポレイテッド プリント装置用通信プロトコル
US7907298B2 (en) 2004-10-15 2011-03-15 Fujifilm Dimatix, Inc. Data pump for printing
JP2011170883A (ja) * 2004-10-15 2011-09-01 Fujifilm Dimatix Inc プリント装置用通信プロトコル
US8068245B2 (en) 2004-10-15 2011-11-29 Fujifilm Dimatix, Inc. Printing device communication protocol
US8085428B2 (en) 2004-10-15 2011-12-27 Fujifilm Dimatix, Inc. Print systems and techniques
US8259334B2 (en) 2004-10-15 2012-09-04 Fujifilm Dimatix, Inc. Data pump for printing
US8199342B2 (en) 2004-10-29 2012-06-12 Fujifilm Dimatix, Inc. Tailoring image data packets to properties of print heads

Also Published As

Publication number Publication date
US6185620B1 (en) 2001-02-06
WO1999052253A1 (en) 1999-10-14
EP0986886A1 (en) 2000-03-22

Similar Documents

Publication Publication Date Title
US6185620B1 (en) Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion
US6134617A (en) Method and apparatus for managing access to a loop in a data processing system
CA2304340C (en) Full-duplex communication processor
JP3448067B2 (ja) ネットワークアダプタのためのネットワークコントローラ
JP4624110B2 (ja) 2つまたはそれ以上の機械の間でデータベース動作を行なうための直接メモリアクセスの用法
US6747984B1 (en) Method and apparatus for transmitting Data
US6345296B1 (en) Method system and computer program product for providing pull model data communication
JP3863912B2 (ja) データ伝送の自動開始装置
US7720064B1 (en) Method and system for processing network and storage data
US20170300436A1 (en) San fabric online path diagnostics
US20030163589A1 (en) Pipelined packet processing
US20090106470A1 (en) Host bus adapter with multiple hosts
US6064805A (en) Method, system, and computer program product for intraconnect data communication using buffer pools and buffer pool management
US20030115350A1 (en) System and method for efficient handling of network data
JPH08251101A (ja) 転送路割り当てシステム
JP2000200241A (ja) 共用メモリ内にバッファ構造を形成する方法及びネットワ―ク装置
JPH04233352A (ja) システムメモリからネットワークへのパケットに配列されるデータのフローを制御するネットワークアダプタおよびデータのフローを制御する方法
WO2006110845A2 (en) Method and apparatus for sata tunneling over fibre channel
JPH08256168A (ja) 転送路割り当てシステム
JP2000194655A (ja) 記述子リング内の記述子をアップデ―トすることによるデ―タの転送制御方法及びシステム
US6088729A (en) Method, system, and computer program product for establishing dialogs in an intraconnect data communication
US6304910B1 (en) Communication processor having buffer list modifier control bits
JP2507230B2 (ja) インタ―フェ―ス装置および方法並びに通信アダプタ
US20050169170A1 (en) Space-efficient storage command and data routing system and method
US7225274B2 (en) Method and apparatus for transferring data across a protocol bridge