(57)【要約】  ファームウェア実施により、多くのハンドシェークが必要になることから多くのファームウェアのオーバヘッドが生じる。これを削減すべく、トランスポート層再試行を実施する、ＴＬＲ機構と称されるイニシエータポートを開示する。イニシエータポートは、リンクに連結された送信トランスポート層および受信トランスポート層、を含む回路を含む。送信トランスポート層の送信プロトコルプロセッサは、シリアル化されたプロトコルのトランスポート層再試行機構を制御する。同様に受信トランスポート層の受信プロトコルプロセッサは、送信プロトコル層に連結され、シリアル化されたプロトコルのＴＬＲ機構を制御する。【選択図】図１
2008547330.tif 000002
【特許請求の範囲】
【請求項１】
一の送信トランスポート層と一の受信トランスポート層とを含む一の回路と、
一のシリアル化されたプロトコルの一のトランスポート層再試行（ＴＬＲ）機構を制御する、前記送信トランスポート層の一の送信プロトコルプロセッサと、
送信プロトコル層に連結され、前記シリアル化されたプロトコルの前記ＴＬＲ機構を制御する、前記受信トランスポート層の一の受信プロトコルプロセッサと、を含み、
前記送信トランスポート層および前記受信トランスポート層は一のリンクに連結された、装置。
【請求項２】
前記シリアル化されたプロトコルは一のシリアル接続（小規模コンピュータシステムインタフェース（ＳＣＳＩ））（ＳＡＳ）プロトコル規格に準拠している、請求項１に記載の装置。
【請求項３】
一のイニシエータポート、一の対象ポート、一の論理部、および一のタスクを識別する一のタスクネクサスをさらに含む、請求項１に記載の装置。
【請求項４】
前記タスクネクサスについて一のＩ／Ｏコンテクストを記憶する、前記送信トランスポート層の一の入力／出力（Ｉ／Ｏ）コンテクストバッファをさらに含む、請求項３に記載の装置。
【請求項５】
前記Ｉ／Ｏコンテクストバッファは前記タスクネクサスに関する動的フィールドおよびスナップショットフィールドを記憶する、請求項４に記載の装置。
【請求項６】
前記リンクに連結された前記送信トランスポート層に位置する一の送信バッファをさらに含み、前記送信バッファは、送信制御プロセッサの制御下で、前記リンク上への後続の送信についての前記タスクネクサスの前記Ｉ／Ｏコンテクストに基づき、再試行書き込みデータを記憶する、請求項４に記載の装置。
【請求項７】
前記タスクネクサスについて一のＩ／Ｏコンテクストを記憶する、前記受信トランスポート層の一の入力／出力（Ｉ／Ｏ）コンテクストバッファをさらに含む、請求項３に記載の装置。
【請求項８】
前記Ｉ／Ｏコンテクストバッファは、前記タスクネクサスに関する動的フィールドおよびスナップショットフィールドを記憶する、請求項６に記載の装置。
【請求項９】
前記回路は一の集積回路である、請求項１に記載の装置。
【請求項１０】
一のリンクに連結されて、一のシリアル化されたプロトコルの一のトランスポート層再試行（ＴＬＲ）機構を提供する一の送信プロトコルプロセッサを制御する工程と、
前記リンクに連結されて、前記シリアル化されたプロトコルの一のＴＬＲ機構を提供する一の受信プロトコルプロセッサを制御する工程と、
一のイニシエータポート、一の対象ポート、論理部、および一のタスクを識別する一のタスクネクサスを定義する工程と、を含む方法。
【請求項１１】
前記シリアル化されたプロトコルは一のシリアル接続（小規模コンピュータシステムインタフェース（ＳＣＳＩ））（ＳＡＳ）プロトコル規格に準拠している、請求項１０に記載の方法。
【請求項１２】
前記タスクネクサスについて一の（Ｉ／Ｏ）コンテクストを記憶する工程をさらに含む、請求項１０に記載の方法。
【請求項１３】
前記Ｉ／Ｏコンテクストは、前記タスクネクサスに関する動的データおよびスナップショットデータを含む、請求項１２に記載の方法。
【請求項１４】
送信制御プロセッサの制御下で、前記リンク上の送信についての前記タスクネクサスの前記Ｉ／Ｏコンテクストに基づき、再試行書き込みデータを記憶する工程をさらに含む、請求項１３に記載の方法。
【請求項１５】
一のイニシエータポート回路を含むコントローラであって、
前記イニシエータポート回路は、
一のリンクに連結された一の送信プロトコルプロセッサを含む一の送信トランスポート層と、
送信プロトコル層と前記リンクとに連結された一の受信プロトコルプロセッサを含む、一の受信トランスポート層と、を含み、
前記送信プロトコルプロセッサは、一のシリアル接続（小規模コンピュータシステムインタフェース（ＳＣＳＩ））（ＳＡＳ）プロトコル規格に準拠している一のシリアル化されたプロトコルの一のトランスポート層再試行（ＴＬＲ）機構を制御し、
前記受信プロトコルプロセッサは、前記ＳＡＳプロトコル規格に準拠している前記シリアル化されたプロトコルの前記ＴＬＲ機構を制御し、
前記イニシエータポート回路は前記ＳＡＳプロトコル規格に準拠している一の記憶デバイスの一の第二のコントローラの一の対象ポートと通信する、コントローラ。
【請求項１６】
一のイニシエータポート、一の対象ポート、一の論理部、および一のタスクを識別する一のタスクネクサスをさらに含む、請求項１５に記載のコントローラ。
【請求項１７】
前記タスクネクサスについて一のＩ／Ｏコンテクストを記憶し、前記タスクネクサスに関する動的フィールドおよびスナップショットフィールドを含む、前記送信トランスポート層の一の入力／出力（Ｉ／Ｏ）コンテクストバッファをさらに含む、請求項１６に記載のコントローラ。
【請求項１８】
前記リンクに連結された前記送信トランスポート層に位置する一の送信バッファをさらに含み、前記送信バッファは、送信制御プロセッサの制御下で、前記リンク上への後続の送信についての前記タスクネクサスの前記Ｉ／Ｏコンテクストに基づき、再試行書き込みデータを記憶する、請求項１７に記載のコントローラ。
【請求項１９】
前記タスクネクサスについて一のＩ／Ｏコンテクストを記憶し、前記タスクネクサスに関する動的フィールドおよびスナップショットフィールドを含む、前記受信トランスポート層の一の入力／出力（Ｉ／Ｏ）コンテクストバッファをさらに含む、請求項１６に記載のコントローラ。
【請求項２０】
前記イニシエータポート回路は一の集積回路である、請求項１５に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の実施形態は、シリアル化されたプロトコルの再試行機構の分野に関している。より詳しくは、本発明の実施形態は、自動化シリアル（小規模コンピュータシステムインタフェース（ＳＣＳＩ））プロトコル（ＳＳＰ）イニシエータポートトランスポート層再試行機構）に関する。
【背景技術】
【０００２】
シリアル接続ＳＣＳＩ（ＳＡＳ）は、パラレルＳＣＳＩプロトコルのプロトコル展開である。ＳＡＳは、デバイスコントローラどうしが直接お互いにリンクされてよいポイントツーポイントシリアル周辺インタフェースを提供する。ＳＡＳは、ＳＣＳＩおよびシリアルＡＴＡ（ＳＡＴＡ）という、二つの確立された技術を統合して、ＳＣＳＩプロトコルの利便性および信頼性を、ＳＡＴＡのシリアルアーキテクチャの性能優位性と組み合わせている。
【０００３】
ＳＡＳは異なる規模および種類の多数のデバイスを同時に全二重通信方式で接続できるので、伝統的なＳＣＳＩより性能が進化している。さらに、ＳＡＳデバイスはホットプラグ可能である。
【０００４】
コンピュータデバイス、記憶デバイス、および様々な電子デバイスが、シリアル方式で動作する、より速いプロトコル（例えば、ＳＡＳプロトコル）に準拠して、今日のアプリケーションが必要としている速度および性能を実現するよう、設計されてきている。
【０００５】
ＳＡＳ仕様（例えば、シリアル接続ＳＣＳＩ−１．１（ＳＡＳ−１．１），Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ（ＡＮＳＩ），Ｔ１０  ｃｏｍｍｉｔｔｅｅ，Ｒｅｖｉｓｉｏｎ０９ｄ，ｓｔａｔｕｓ：Ｔ１０  Ａｐｐｒｏｖａｌ，  Ｐｒｏｊｅｃｔ：１６０１−Ｄ、２００５年５月３０日）（以後、ＳＡＳ規格と称する）は、ＳＳＰイニシエータポートのＳＳＰイニシエータポートトランスポート層再試行（ＴＬＲ）要件を定義する。
【０００６】
ＳＡＳ規格によると、ＳＳＰイニシエータポートは、先のＸＦＥＲ＿ＲＤＹフレームのプロセス中に、新たな転送準備完了（ＸＦＥＲ＿ＲＤＹ）フレームを、１に設定されたＲＥＴＲＡＮＳＭＩＴビットとともに受けると、先のＸＦＥＲ＿ＲＤＹフレームのプロセスを中断して新たなＸＦＥＲ＿ＲＤＹフレームの処理を始める。イニシエータポートは、新たなＸＦＥＲ＿ＲＤＹフレームに書き込みデータフレームを送った後は、先のＸＦＥＲ＿ＲＤＹフレームに対しては書き込みデータフレームを送るべきでない。
【０００７】
ＳＳＰイニシエータポートは、後に説明するように、ＲＥＴＲＹ  ＤＡＴＡ  ＦＲＡＭＥＳビットが１に設定されたＸＦＥＲ＿ＲＤＹフレームに応えて送信する書き込みデータフレームの送信中に起こるリンク層エラーをプロセスすべきである。
【０００８】
ＳＳＰイニシエータポートが書き込みデータフレームを送信し、受け取り確認（ＡＣＫ／ＮＡＫタイムアウト）を受信しない、あるいは否定的な受け取り確認（ＮＡＫ）を受信する場合、ＳＳＰイニシエータは先のＸＦＥＲ＿ＲＤＹフレームについての全ての書き込みデータフレームを再送信する。ＡＣＫ／ＮＡＫタイムアウトの場合には、ＳＳＰイニシエータポートは接続を閉じて、書き込みデータフレームの再送信の目的上新たな接続を開くべきである。この場合ＣＨＡＮＧＩＮＧ  ＤＡＴＡ  ＰＯＩＮＴＥＲビットは、最初に再送信した書き込みデータフレームにおいては１に設定され、後続の書き込みデータフレームにおいては０に設定される。ＳＳＰイニシエータポートが各書き込みデータ列を再送信できる最大回数は典型的にベンダ固有である。
【０００９】
一方、ＳＳＰイニシエータポートが、書き込みデータフレームの再送信中あるいは再送信準備中に、新たなＸＦＥＲ＿ＲＤＹフレームあるいはコマンドに対するＲＥＳＰＯＮＳＥフレームを受信する場合、ＳＳＰイニシエータポートは該新たなＸＦＥＲ＿ＲＤＹフレームあるいはＲＥＳＰＯＮＳＥフレームをプロセスして、再送信書き込みデータフレームを送るのを止める。この場合、ＳＳＰイニシエータポートは、該新たなＸＦＥＲ＿ＲＤＹフレームに応えて書き込みデータフレームを送った後、先のＸＦＥＲ＿ＲＤＹフレームに対しては書き込みデータフレームを送らない。
【００１０】
ＳＳＰイニシエータポートのＳＡＳ仕様に述べられている、トランスポート層再試行のためのこれらのかなりよく定義された規則は、現在のところファームウェアが処理している。ファームウェア実施によると、ファームウェア・ハードウェア間で多くのハンドシェークが必要な理由から、ファームウェアのオーバヘッドが多く生じ、プロセッサ計算サイクル時間も多く生じる。
【発明を実施するための最良の形態】
【００１１】
以下の記載において、発明の様々な実施形態を詳述する。しかし、そのような詳細は発明の理解を助け、発明を利用する実施形態例を記載する目的で含められている。そのような詳細は、記載される特定の実施形態に本発明を限定するよう利用されるべきではない、というのも本発明の範囲を逸脱せずに他の変形例および実施形態が可能であるからである。さらには、本発明の実施形態の完全な理解のために幾つもの詳細を述べるが、当業者にとってはこれら特定の詳細が本発明の実施形態を実施する際に必須ではないことは明らかであろう。他の場合には、公知の方法、データ種別、プロトコル、プロシージャ、コンポーネント、電気的構造、回路などの詳細は、詳述しないか、ブロック図の形式で示して、発明を曖昧にしないようしてある。
【００１２】
発明の実施形態は自動化シリアル（小規模コンピュータシステムインタフェース（ＳＣＳＩ））プロトコル（ＳＳＰ）イニシエータポートトランスポート層再試行機構に関する。特に、実施形態は、ファームウェア利用に反して、広い幅および狭い幅両方のポート構成のトランスポート層再試行（ＴＬＲ）機構を利用するハードウェア自動化ＳＳＰイニシエータポートに関しており、これによりフレームプロセス待ち時間の改善、プロトコルのオーバヘッド削減、および全体的なシステムの入力／出力（Ｉ／Ｏ）性能の改善を遂行することに関する。例えば、ＳＳＰイニシエータポートは集積回路などの回路に実施されてよい。
【００１３】
図１を見ると、図１は別のデバイス１１０に連結された第一のデバイス１０２を含むシステムを示すブロック図であり、各デバイスは、ＳＳＰイニシエータポートを含むＳＡＳコントローラ１０４、１１３をそれぞれ持つ。デバイス１０２はＳＡＳプロトコル規格に従いリンクを介してデバイス１１０に通信可能に連結される。各デバイスは、該二つのデバイス１０２、１１０間のそれぞれのリンクを介した通信に利用されるＳＡＳコントローラ１０４、１１３をそれぞれ含む。
【００１４】
デバイス１０２は、ＳＡＳ規格に従いデバイス１１０とのシリアル通信を制御する目的からデバイス１０２およびＳＡＳコントローラ１０４内の操作を制御するプロセッサ１０７を含んでよい。さらに、デバイス１０２は、複数の異なる入力／出力（Ｉ／Ｏ）デバイス（不図示）に加えて、プロセッサ１０７に連結されたメモリ１０９を含んでもよい。
【００１５】
同様に、デバイス１１０は、ＳＡＳプロトコルに従い他のデバイス１０２とのシリアル通信を制御する目的から、デバイス１１０およびＳＡＳコントローラ１１３内の操作を制御するプロセッサ１１７を含んでよい。さらに、デバイス１１０は、複数の異なる入力／出力（Ｉ／Ｏ）デバイス（不図示）に加えて、プロセッサ１１７に連結されたメモリ１１９を含んでもよい。
【００１６】
各デバイスはＳＡＳコントローラ１０４、１１３をそれぞれ含んでよい。さらに、ＳＡＳコントローラ１０４はＳＳＰイニシエータポート１０３およびＳＳＰ対象ポート１０６を含んでよく、ＳＡＳコントローラ１１３はＳＳＰ対象ポート１１４およびＳＳＰイニシエータポート１１６を含んでよい。この例によると、デバイス１０２はＳＳＰイニシエータポート１０３から、デバイス１１０のＳＡＳコントローラ１１３のＳＳＰ対象ポート１１４に対して、リンクを介してタスクを通信してよい。
【００１７】
デバイス１０２およびデバイス１１０は、パソコン、ラップトップコンピュータ、ネットワークコンピュータ、サーバ、ルータ、エクスパンダ、セットトップボックス、メインフレーム、記憶デバイス、ハードディスクドライブ、フラッシュメモリ、フロッピドライブ、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタルビデオディスク（ＤＶＤ）、フラッシュメモリ、携帯用パーソナルデバイス、携帯電話などの任意の種類のデバイスであってよく、あるいはプロセッサおよび／またはメモリを持つ任意の種類のデバイスであってよい。
【００１８】
発明の実施形態は、後に詳述されるように、別のデバイス１１０とリンクを介してタスクを通信するＳＳＰイニシエータポート１０３を含み、ＳＳＰイニシエータポート１０３がそれによってトランスポート層再試行（ＴＬＲ）機構を実施する構造および機能を含む、ＳＡＳコントローラ１０４を持つデバイス１０２に関している。この記載を助けるべく、タスクネクサス１２０は、ＳＳＰイニシエータポート１０３、ＳＳＰ対象ポート１１４、論理部（それらを介してタスクが送信されるデバイス、リンク、ノードを含む）、およびタスク自身（ＩＴＬＱネクサスと称される）の間のネクサスとして定義されてよい。
【００１９】
簡単に図２を見ると、図２は、フレームの送受信を記憶するホストあるいはローカルメモリバッファ１６０のサイズを示し表すためにアドレス長（Ａ／Ｌ）対１５２を利用する分散集結リスト（ＳＧＬ）バッファ機構１５０を示す。また、ＳＧＬバッファ機構１５０はさらにバッファ番号フィールド１５３およびＳＧＬポインタ１５５を含む。ホストメモリは、メモリ１０９のようなデバイス自身と関連付けられたメモリであってもよいし、あるいはＳＡＳコントローラ１０４自身のメモリであってもよい。分散集結リスト（ＳＧＬ）メモリアクセスの利用は公知であるので詳述しないが、本発明の実施形態とともに利用できるメモリアクセスの一方法に過ぎない。
【００２０】
一実施形態においては、複数のＩ／Ｏコンテクストが、前述の各タスクあるいはＩＴＬＱネクサスに定義される。図３を参照すると、図３はＩＴＬＱネクサス用のＩ／Ｏコンテクストを示すテーブルである。Ｉ／Ｏコンテクストは、トランスポート層に移される最初のＩ／Ｏ読み取り／書き込み情報に基づいている。Ｉ／Ｏコンテクストはトランスポート層が維持する動的フィールドである。ＳＳＰイニシエータポートの直接メモリアクセス（ＤＭＡ）プロセッサは目下のＩ／Ｏプロセスの経過を追ってよく、複数のＩ／Ｏコンテクストが、ＳＳＰイニシエータポート内に記憶されてよいが、これは後述する。特に、図３のテーブル３００はこれらＩ／Ｏコンテクストフィールドを示す。
【００２１】
例えば、ＩＴＬＱネクサスのＩ／Ｏコンテクストは、再送信ビット３２０および対象ポートトランスファＴＡＧ３３０を含んでよい。
【００２２】
ＩＴＬＱネクサスのＩ／Ｏコンテクストはさらに、ローカルあるいはホストメモリバッファ、目下のアドレス長対（Ａ／Ｌ）、目下のＩ／Ｏ読み取り／書き込みデータ転送数（Ｉ／Ｏ＿ＸＣ）、および目下のＩ／Ｏ読み取り／書き込みデータ相対オフセット（Ｉ／Ｏ＿ＲＯ）へのポインタであってよい目下の分散集結リストポインタ（ＳＧＬ＿ＰＴＲ）などの動的フィールド３６０を含んでよい。
【００２３】
さらに、動的フィールド３６０同様、ＩＴＬＱネクサスのＩ／Ｏコンテクストはさらに、スナップショットＳＧＬ＿ＰＴＲ、スナップショットＡ／Ｌ、スナップショットＩ／Ｏ＿ＸＣ、およびスナップショットＩ／Ｏ＿ＲＯのようなスナップショットフィールド３７０を含んでよい。スナップショットフィールドは、後述するように、ＳＳＰイニシエータポートトランスポート層再試行機構での利用を意図して先にセーブされたフィールドであるということ以外は、動的フィールドと類似している。
【００２４】
後述するように、ＳＳＰイニシエータポートの送信トランスポート層は、送信バッファからリンクへ書き込みデータフレームを送信して、受け取り確認（ＡＣＫ）を受信する際に、動的フィールド３６０を更新する。さらに、受信されたトランスポート層は、受信したバッファからホストあるいはローカルメモリへ読み取りデータフレームをＤＭＡプロセッサが送信する際に、動的フィールド３６０を更新する。
【００２５】
図４を参照すると、図４はＳＳＰイニシエータポート１０３の一例を示すブロック図である。一実施形態においては、ＳＳＰイニシエータポートは、ＳＳＰイニシエータ書き込み列ハンドラ４０５およびＳＳＰイニシエータ読み取り列ハンドラ４１０を含む。ＳＳＰイニシエータ書き込み列ハンドラ４０５は、Ｉ／Ｏ書き込みコマンドのトランスポート層再試行状況を処理する。ＳＳＰイニシエータ読み取り列ハンドラ４１０は、Ｉ／Ｏ読み取りコマンドのトランスポート層再試行を処理する。一実施形態においては、ＳＳＰイニシエータ書き込み列ハンドラ４０５およびＳＳＰイニシエータ読み取り列ハンドラ４１０両方が、図５−９を参照して後述するようにハードウェアに実施されてよい。より詳しくは、ＳＳＰイニシエータ書き込み列ハンドラ４０５はＳＳＰイニシエータポート１０３の送信トランスポート層により実施されてよく、ＳＳＰイニシエータ読み取り列ハンドラ４１０はＳＳＰイニシエータポート１０３の受信トランスポート層により実施されてよく、これを以下に詳述する。
【００２６】
ＳＳＰイニシエータポート１０３は各ＩＴＬＱネクサスに固有のＴＡＧを割り当てると仮定されていることに注目されたい。ＴＡＧフィールドはＳＳＰイニシエータポート１０３がＩ／Ｏコンテクストを特定のＩＴＬＱネクサスに関連付けるのに利用される。異なる遠隔ノード間でＴＡＧが固有ではないと、ＳＳＰイニシエータポート１０３は遠隔ノードインデックスをＴＡＧと連結して固有Ｉ／ＯコンテクストＩＤを形成し、特定のＩＴＬＱネクサスのＩ／Ｏコンテクストを関連付ける。各遠隔ノードがデバイスから固有の遠隔ノードインデックスを割り当てられることに注意されたい。
【００２７】
図５を参照すると、図５は、発明の一実施形態によるＳＳＰイニシエータポート１０３を示すブロック図である。ＳＳＰイニシエータポート１０３は受信トランスポート層５０４および送信トランスポート層５０８を含む。
【００２８】
一実施形態においては、イニシエータポートはハードウェアに基づいていてよい。イニシエータポート１３０は回路であってよい。例えば回路は集積回路、プロセッサ、マイクロプロセッサ、信号プロセッサ、アプリケーション固有集積回路（ＡＳＩＣ）、あるいはここで記載する機能を実施する任意の種類の適切なロジックあるいは回路であってよい。
【００２９】
特に、イニシエータポート１０３は、送信トランスポート層５０８および受信トランスポート層５０４を含んで、両方がリンク５０２に連結されている。送信トランスポート層５０８の送信プロトコルプロセッサ５１２はシリアル化されたプロトコルのＴＬＲ機構を制御する。受信トランスポート層５０４の受信プロトコルプロセッサ５３２は送信トランスポート層に連結され、同様にシリアル化されたプロトコルのＴＬＲ機構を制御する。
【００３０】
特に、受信トランスポート層５０４および送信トランスポート層５０８は両方ともリンクおよび物理層５０２に連結される。さらに、受信トランスポート層（ＲｘＴＬ）５０４および送信トランスポート層（ＴｘＴＬ）５０８は両方とも直接メモリアクセス（ＤＭＡ）プロセッサ５２０およびコンテクストメモリを利用する。
【００３１】
受信トランスポート層５０４に特に着目すると、受信トランスポート層５０４は、リンクおよび物理層５０２から受信したフレームの解析をする受信フレームパーサ５３６、受信フレームデータを記憶する受信バッファ５３４、ＳＡＳ受信プロトコルプロセッサ５３２、前に図３を参照して記載されたＩＴＬＱネクサスのＩ／Ｏコンテクストを記憶する共通Ｉ／Ｏコンテクスト記憶装置５３０を含む。
受信トランスポート層５０４は前に記載したＳＳＰイニシエータ読み取り列ハンドラ４１０の機能を実施する。
【００３２】
送信トランスポート層５０８に着目すると、送信トランスポート層５０８は、ＩＴＬＱネクサス（図３を参照して既に記載した）のＩ／Ｏコンテクストを記憶する共通Ｉ／Ｏコンテクスト記憶装置５３０、ＳＡＳ送信プロトコルプロセッサ５１２、トランスポート層再試行で、リンクおよび物理層５０２（再試行書き込みデータフレーム）へ出力するのに利用される送信データ（例えば再試行書き込みデータ）を記憶する送信バッファ５１４を含む。送信トランスポート層５０８は前に記載したＳＳＰイニシエータ書き込み列ハンドラ４０５の機能を実施する。
【００３３】
ＳＡＳ送信プロトコルプロセッサ５１２およびＳＡＳ受信プロトコルプロセッサ５３２は、後述するように、トランスポート層再試行（ＴＬＲ）機構の実施局面に加えて、ＳＡＳ規格プロトコルを実施するのに利用される。ＳＡＳ送信および受信プロセッサは、これらＴＬＲ機能を達成する任意の種類の適切なプロセッサあるいはロジックであってよい。さらに、トランスポート層再試行機構の局面を実施する際の、ＳＳＰイニシエータポート１０３の先に記載した各コンポーネントおよびそれらのそれぞれの機能を、図６−９を参照して詳述する。
【００３４】
図６−９を参照すると、図６−９は、先に記載したＳＳＰイニシエータポート１０３がデバイスのＳＡＳコントローラ内でトランスポート層再試行（ＴＬＲ）機構を実施する際の、ＳＳＰイニシエータポート１０３の操作を示す。
【００３５】
特に図６を参照すると、図６は、ＳＡＳコントローラのＳＳＰイニシエータポート１０３およびＸＦＥＲ＿ＲＤＹ再試行を処理する際に行われる機能を示す図である。図６にＳＳＰイニシエータポート１０３０―Ｎと共に示すように、ＳＳＰイニシエータポート１０３は、ＳＳＰイニシエータポート１０３０と関連付けられたｐｈｙが一つだけある狭い幅のＳＳＰイニシエータポートであってよく、あるいはＳＳＰイニシエータポート１０３はＳＳＰイニシエータポートと関連付けられた複数のＰｈｙｓがある広い幅のポートであってよい。
【００３６】
図６のポイント６１０に示すように、ＩＴＬＱネクサスのための先のＸＦＥＲ＿ＲＤＹフレーム（同じＴＡＧｓを持つ）のプロセス中に、ＳＳＰイニシエータポート１０３Ｎは新たなＸＦＥＲ＿ＲＤＹフレームを再試行インジケータ（１に設定されるＲＥＴＲＡＮＳＩＴビット）とともに受信し、この時点では、ＳＳＰイニシエータポート１０３は先のＸＦＥＲ＿ＲＤＹフレームのプロセスを中止して新たなＸＦＥＲ＿ＲＤＹフレームを受信し始める。
【００３７】
図６に示すように、この広い幅のＳＳＰイニシエータポート１０３の個々のポートのいずれかが、ＸＦＥＲ＿ＲＤＹフレームを、１に設定されたＲＥＴＲＡＮＳＭＩＴビットとともに受信すると、受信トランスポート層５０４は、受信されたＸＦＥＲ＿ＲＤＹフレームのＴＡＧ、ＲＥＱＵＥＳＴＥＤ  ＯＦＦＳＥＴ、ＷＲＩＴＥ  ＤＡＴＡ  ＬＥＮＧＴＨ、およびＴＡＲＧＥＴ  ＰＯＲＴ  ＴＲＡＮＳＦＥＲ  ＴＡＧ  ＦＩＥＬＤＳを含むメッセージを、受信したＸＦＥＲ＿ＲＤＹフレームパラメタと共に、全ての送信トランスポート層５０８０−（Ｎ−１）（６１０に示す）に放送する。また、図６に示す様々なレーン（０−Ｎ）リンクおよび物理層５０２０−５０２Ｎに関連付けて、アナログフロントエンド５０９を物理層の一部として利用して、シリアル化機能、アナログからデジタルへの機能、およびその他の物理機能を提供する。
【００３８】
送信トランスポート層５０８の一つが、ＩＴＬＱネクサスの先のＸＦＥＲ＿ＲＤＹフレーム（トランスポート層５０８０）をプロセスしている場合、ＳＳＰイニシエータポート１０３の送信トランスポート層５０８０は、放送されたＴＡＧが、自身が目下実行しているＩ／Ｏ書き込みコマンドＴＡＧに整合することを確かめる。これはここでは６２０に示される場合である。さらに、ＳＳＰイニシエータポートは、ＳＳＰ  ＴＬＲプロセスを始める前にＳＡＳ規格に基づき新たなＸＦＥＲ＿ＲＤＹフレームの有効性をチェックする。さもなくば、送信トランスポート層５０８のいずれもが先のＸＦＥＲ＿ＲＤＹフレームをプロセスしていない場合、受信トランスポート層は、ＩＴＬＱネクサスのＩ／Ｏコンテクストに再送信ビットを設定することで、再送信されたＸＦＥＲ＿ＲＤＹフレームのプロセスを始めることができる。
【００３９】
第一に、ＳＡＳ規格の基づき、新たなＸＦＥＲ＿ＲＤＹフレームヘッダは、自身のＴＡＲＧＥＴ  ＰＯＲＴ  ＴＲＡＮＳＦＥＲ  ＴＡＧ  ＦＩＥＬＤに、異なる値を含む。故に、ＳＳＰイニシエータポート１０３の送信トランスポート層５０８０は、その特定のＩＴＬＱネクサス用のＩ／ＱコンテクストＴＡＲＧＥＴ  ＰＯＲＴ  ＴＲＡＮＳＦＥＲ  ＴＡＧ  ＦＩＥＬＤを更新する。これにより、全ての後続の書き込みデータフレームが、自身のフレームヘッダに新たなＴＡＲＧＥＴ  ＰＯＲＴ  ＴＲＡＮＳＦＥＲ  ＴＡＧ値を利用する。
【００４０】
送信トランスポート層５０８０は、書き込みデータフレームをリンク層にオンザフライとして既に持つ場合、それを最初に仕上げねばならない。そして、ＳＡＳ規格に基づくと、ＳＳＰイニシエータポート１０３が新たなＸＦＥＲ＿ＲＤＹフレームに取り掛かる前に先のＸＦＥＲ＿ＲＤＹフレームのプロセスを中止することのできる方法は二つある。例えば、ＳＳＰイニシエータポート１０３の送信トランスポート層５０８０は、ａ）送信バッファ５１４の全ての書き込みデータフレームの送信を終え、既にＤＭＡプロセッサ５２０に移行したＤＭＡ記述子全てを完了する、あるいはｂ）送信バッファ５１４の全ての残りの書き込みデータフレームをフラッシュして、既にＤＭＡプロセッサ５２０に移行したＤＭＡ記述子全てを終了する。この操作は図６のポイント６３０に示される。
【００４１】
最後に、送信トランスポート層５０８０に新たなＸＦＥＲ＿ＲＤＹフレームをプロセスさせる目的から、トランスポート層５０８０および受信トランスポート層５０４０は協同して、そのＩＴＬＱネクサスのＩ／Ｏコンテクストの動的およびスナップショットのフィールドを維持する。特に、広い幅のＳＳＰイニシエータポート１０３の受信トランスポート層５０４のいずれかが、図３を参照して前述したように、任意の発行済みＩ／Ｏ書き込みコマンドについて０に設定されたＲＥＴＲＡＮＳＭＩＴビットとともに有効なＸＦＥＲ＿ＲＤＹフレームを受信する場合、動的フィールドのスナップショットを取り、それらをそのＩＴＬＱネクサスのＩ／Ｏコンテクストのスナップショットフィールドにコピーする。
【００４２】
故に、もし後にＳＳＰイニシエータポート１０３が新たなＸＦＥＲ＿ＲＤＹフレームを、その特定のＩＴＬＱネクサスについて１に設定されたＲＥＴＲＡＮＳＭＩＴとともに受信すると、送信トランスポート層５０８０はスナップショットフィールドを動的フィールドにコピーすることで、先のＸＦＥＲ＿ＲＤＹフレームの最初にＩ／Ｏコンテクストの動的フィールドをロールバックする。これにより、ＳＡＳ規格が必要とするように、送信トランスポート層は新たなＸＦＥＲ＿ＲＤＹフレームの初めから新たなＸＦＥＲ＿ＲＤＹフレームに取り掛かることができるようになる。特に、図６のポイント６５０から分かるように、送信バッファ５１４は、一旦送信トランスポート層５０８が先のＸＦＥＲ＿ＲＤＹフレームのプロセスを止めると、再試行書き込みデータフレームを新たなＸＦＥＲ＿ＲＤＹフレームの初めから送信することで、新たなＸＦＥＲ＿ＲＤＹフレームに取り掛かり始める。送信バッファ５１４から分かるように、全ての再送信書き込みデータフレームは、自身のＳＳＰフレームヘッダに新たなＴＡＲＧＥＴ  ＰＯＲＴ  ＴＲＡＮＳＦＥＲ  ＴＡＧ値を持つ。
【００４３】
今度は図７に着目すると、図７は、ＳＳＰイニシエータポート１０３が、書き込みデータフレームを、トランスポート層再試行（ＴＬＲ）機構の一部として如何に処理するか示す図である。ＳＳＰイニシエータポート１０３が書き込みデータフレームを送信し（ポイント７１０に示す）、その書き込みデータフレームについてＡＣＫ／ＮＡＫ（あるいはＡＣＫ／ＮＡＫタイムアウト）を受信しない、あるいはＮＡＫを受信する場合、最後に受信したＸＦＥＲ＿ＲＤＹフレームについて全ての書き込みデータフレームを再送信する。さらに、ＡＣＫ／ＮＡＫタイムアウトの場合、ＳＳＰイニシエータポート１０３は新たな接続の全ての書き込みデータフレームを再送信する。
【００４４】
図７に特に示すように、ポイント７１０において、送信トランスポート層５０８０が送信バッファ５１４から書き込みデータフレームを送信して、ＡＣＫ／ＮＡＫタイムアウトを検知するまたはＮＡＫを受信する場合、送信トランスポート層５０８は、スナップショットフィールドを動的フィールドにコピーすることで（図３参照）、Ｉ／Ｏコンテクストの動的フィールドを、最後に受信したＸＦＥＲ＿ＲＤＹフレームの初めにロールバックする。これにより、送信トランスポート層５０８が、最後に受信したＸＦＥＲ＿ＲＤＹフレームの全ての書き込みデータフレーム（例えば、Ａ５、Ａ４、Ａ３）を再送信することができる。これはＳＡＳ送信プロトコルプロセッサ５１２により実現される。
【００４５】
ＡＣＫ／ＮＡＫあるいはＮＡＫの場合、送信トランスポート層はリンク層に対して接続を閉じるよう要求する。送信トランスポート層５０８が再試行列を始める前にＡＣＫ／ＮＡＫタイムアウトにより接続閉鎖を処理するためには、送信トランスポート層（例えば図７のポイント７４０で示す）は、Ｉ／ＯコンテクストのＲＥＴＲＡＮＳＭＩＴビットフィールドを１に設定して、Ｉ／Ｏ書き込みデータ列が再試行状態にあるようにする。故に、新たな接続が確立すると、ＳＡＳ送信プロトコルプロセッサ５１２の制御下にある送信トランスポート層５０８Ｎは共通Ｉ／Ｏコンテクストバッファ５３０の再送信をチェックして、１に等しいか確認して、最初に再送信された書き込みデータフレームに対してＣＨＡＮＧＥ  ＤＡＴＡ  ＰＯＩＮＴＥＲビットを１に設定することで、Ｉ／Ｏ書き込みデータ再試行列に取り掛かり始める。
【００４６】
送信トランスポート層が書き込みデータフレームを再試行しようとできる最大回数は、特定の構成スペースあるいはモードページ、あるいはチップ初期化パラメタによりプログラム可能であってよい。
【００４７】
今度は図８に着目すると、図８は、ＡＣＫ／ＮＡＫタイムアウトあるいは受信ＮＡＫに応じて書き込みデータフレームを再送信中あるいは再送信準備中に、ＳＳＰイニシエータポートが、対応するＩＴＬＱネクサスに対する応答フレームを受信する場合、ＳＳＲイニシエータポート１０３がトランスポート層再試行（ＴＬＲ）機構を如何に実施するか示す図である。特に、図８は、ＳＳＰイニシエータポートが、応答フレームのプロセスを、および再送信書き込みデータフレームの送信の中止を、如何に行うか示す。
【００４８】
図８に示すように、広い幅のＳＳＰイニシエータポート（例えばポイント８１０で）のレーンにあるＳＳＰイニシエータポート１０３が受信トランスポート層（たとえば５０４Ｎ）において応答フレームを受信すると、該受信トランスポート層５０４ＮはＲＥＳＰＯＮＳＥ  ＦＲＡＭＥ  ＴＡＧを、同じＳＳＰイニシエータポート１０３にある全ての送信トランスポート層５０８０−（Ｎ−１）に放送する。もし送信トランスポート層のいずれかが、そのＩＴＬＱネクサスについて先のＸＦＥＲ＿ＲＤＹの書き込みデータフレームを再送信、あるいはその再送信を準備している場合、ＳＳＰイニシエータポート（例えばポイント８２０）の該送信トランスポート層（たとえば５０８０）は、放送されたＴＡＧが目下実行しているＩ／Ｏ書き込みＴＡＧに整合することを確認する。送信トランスポート層が書き込みデータをリンク層５０２にオンザフライとして既に持つ場合、送信バッファフレーム５１４の全ての書き込みデータの送信を終える。そして、ＳＡＳ規格に基づくと、送信トランスポート層５０８０がＲＥＳＰＯＮＳＥにフレーム取り掛かる前に先のＸＦＥＲ＿ＲＤＹフレームのプロセスを中止することのできる方法は二つある。
【００４９】
例えば送信トランスポート層５０８０は、ａ）送信バッファ５１４の全ての書き込みデータフレームの送信を終え、既にＤＭＡプロセッサ５２０に移行したＤＭＡ記述子全てを完了する、あるいはｂ）送信バッファ５１４の全ての残りの書き込みデータフレームをフラッシュして、既にＤＭＡプロセッサ５２０に移行したＤＭＡ記述子全てを終了する。ポイント８４０で、送信トランスポート層５０８０が再試行書き込みデータフレームの再送信を中止すると、受信トランスポート層５０４ＮはＲＥＳＰＯＮＳＥフレームをプロセスすることができる。
【００５０】
一方、同じＳＳＰイニシエータポートの送信トランスポート層のいずれもがＩＴＬＱネクサスについての書き込みデータフレームを再送信していない、あるいは再送信の準備をしていない場合、受信トランスポート層はＲＥＳＰＯＮＳＥフレームのプロセスを始めてよい。
【００５１】
最後に、図９を参照すると、図９は、ＳＳＰイニシエータポート１０３が読み取りデータフレーム再試行を、Ｉ／Ｏ読み取りコマンドのトランスポート層再試行（ＴＬＲ）機構の一部として如何に処理するか示すブロック図である。
【００５２】
ＳＳＰ対照ポートは、ＡＣＫ／ＮＡＫタイムアウトあるいはＮＡＫ受信によりＩＴＬＱネクサスについての読み取りデータフレームを再送信する場合、最後のＡＣＫ／ＮＡＫバランスポイント（図９のポイント９１０に示すように）から全ての読み取りデータフレームを再送信することが必要となる。ＳＳＰイニシエータポート１０３はＳＳＰ対象ポートの最後のＡＣＫ／ＮＡＫバランスポイントを見つけ出す情報を持たない場合もある。この問題を解決すべく、ＳＳＰイニシエータポート１０３は、各発行済みイニシエータ読み取りコマンドについて受信された最後の良好な読み取りデータフレーム全てについて共通Ｉ／Ｏコンテクストバッファ５３０の動的フィールドを更新する。
【００５３】
図９に示すように、広い幅のポートのいずれの受信トランスポート層（例えば５０４０）もが、１に設定されたＣＨＡＮＧＩＮＧ  ＤＡＴＡ  ＰＯＩＮＴＥＲビットと共に読み取りデータフレームを受信するとき（ＩＴＬＱネクサスの第一の再送信された読み取りデータフレーム）、ＳＡＳ受信プロトコルプロセッサ５３２および共通Ｉ／Ｏコンテクストバッファ５３０を利用する受信トランスポート層は、読み取りデータフレームが有効な再送信されたデータフレームであることを検証する。これは、読み取りデータフレームデータオフセットフィールドがＩ／ＯコンテクストダイナミックのＩ／Ｏ読み取り／書き込みデータ相対オフセットフィールドより小さいか等しいかをチェックすることでなされる。読み取りデータフレームが有効な場合、ＳＳＰ  ＴＬＲプロセスを始めてよい。ＤＭＡプロセッサ５２０が受信バッファからデータフレームを読み出すたびに、受信トランスポート層は読み取りデータフレームの大きさに応じて動的フィールドを更新する。この例においては、最後の良好な受信データフレームはＡ２である。
【００５４】
読み取りデータフレームデータオフセットフィールドがＩ／ＯコンテクストダイナミックのＩ／Ｏ読み取り／書き込みデータ相対オフセットより小さい場合、ＳＳＰイニシエータポート１０３は放棄モード（この特定のＩＴＬＱネクサスの）へジャンプし、セーブされたダイナミックの読み取り／書き込み相対データオフセットに到達するまで該ＩＴＬＱネクサスについて受信した読み取りデータバイトの全てを放棄し、この特定のＩＴＬＱネクサス用の全ての将来のデータバイトをセーブすべく、通常受信モードへ切り替えられる。一方、読み取りデータフレームのデータオフセットフィールドがＩ／Ｏコンテクストダイナミックの入力／出力読み取り／書き込みデータ相対オフセットフィールドと等しい場合、この特定のＩＴＬＱネクサス用の全てのデータバイトをセーブすべく通常受信モードに単に入る。
【００５５】
図９に示す特定の例を見ると、ポイント９２０において、ＳＳＰイニシエータポート１０３は、Ａ２とＡＣＫの応答とを受信する。しかし、ＡＣＫはトランスポート中に失われている。これに基づき、ＡＣＫ／ＮＡＫタイムアウトが起こり、ＳＳＰ対象ポートが新たな接続を再開して、最後のＡＣＫ／ＮＡＫバランスポイントから全ての読み取りデータフレームを再送信する。ポイント９３０では、読み取りデータフレームＣＨＡＮＧＩＮＧ  ＤＡＴＡ  ＰＯＩＮＴＥＲビットが１に設定されており、読み取りデータフレームオフセットフィールドが入力／出力コンテクストの入力／出力読み取り／書き込みオフセットより小さい。故に、受信トランスポート層５０４０は放棄モードに入り、最後の良好な受信読み取りデータフレームの相対オフセットになるまで全ての読み取りデータを放棄する。
【００５６】
そして、図９のポイント９４０で、受信トランスポート層５０４が通常モードに戻り、全ての新たな良好な読み取りデータバイトをセーブする。
【００５７】
発明の実施形態によると、実質的にファームウェアからの助けを全く必要としない、ＳＳＰイニシエータポートトランスポート層再試行を取り扱う完全なハードウェア自動化機構が開示されている。このように、ファームウェアのオーバヘッドは顕著に減り、ＣＰＵ計算サイクル時間およびファームウェア・ハードウェア間のハンドシェークを顕著に削減できる。これはさらにシステム性能全般の改善ならびにＳＡＳプロトコル制御性能の改善、特に、多数プロトコルアプリケーションにおける改善とも言い換えられる。さらに、依然必要なファームウェア設計が特に大規模記憶システム環境下において顕著に簡略化され、ファームウェアからのリアルタイム処理要件が顕著に減る。
【００５８】
発明の実施形態について、実施形態例を参照しながら記載してきたが、これら記載は限定的な意味合いで捉えられることを意図していない。実施形態例の様々な変形例および発明の他の実施形態が、本発明の実施形態の技術分野の当業者にとっては明白であり、本発明の精神および範囲に含まれるとみなされる。
【図面の簡単な説明】
【００５９】
【図１】ＳＳＰイニシエータポートが利用されるシステムの一例を示すブロック図である。
【００６０】
【図２】入力／出力（Ｉ／Ｏ）コマンドの分散集結リストを示すブロック図である。
【００６１】
【図３】ＩＴＬＱネクサスのＩ／Ｏコンテクストを示すブロック図である。
【００６２】
【図４】ＳＳＰイニシエータポートの一例を示すブロック図である。
【００６３】
【図５】ＳＳＰイニシエータポートの一例を示すブロック図である。
【００６４】
【図６】ＳＳＰイニシエータポートが、受信した再送信ＸＦＥＲ＿ＲＤＹフレームを、トランスポート層再試行（ＴＬＲ）機構の一部として如何に処理するか示す図である。
【００６５】
【図７】ＳＳＰイニシエータポートが、書き込みデータフレームを、ＴＬＲ機構の一部として如何に処理するか示す図である。
【００６６】
【図８】ＳＳＰイニシエータポートがＡＣＫ／ＮＡＫタイムアウトあるいは受信ＮＡＫに応じて書き込みデータフレームを再送信中あるいは再送信準備中に、コマンドに対する応答フレームを受信する場合、ＳＳＲイニシエータポートがＴＬＲ機構を如何に実施するか示す図である。
【００６７】
【図９】ＳＳＰイニシエータポートが、読み取りデータフレーム再試行を、Ｉ／Ｏ読み取りコマンドのＴＬＲ機構の一部として如何に処理するか示すブロック図である。
【図１】
2008547330.tif 000003
【図２】
2008547330.tif 000004
【図３】
2008547330.tif 000005
【図４】
2008547330.tif 000006
【図５】
2008547330.tif 000007
【図６】
2008547330.tif 000008
【図７】
2008547330.tif 000009
【図８】
2008547330.tif 000010
【図９】
2008547330.tif 000011
【手続補正書】
【提出日】平成19年12月21日(2007.12.21)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2008547330.tif 000012
【国際調査報告】
2008547330.tif 000013
2008547330.tif 000014
2008547330.tif 000015