(57)【要約】【課題】パス制御カード、および、任意で、他のストレージシェルフ・ルータと組み合わせ、ストレージシェルフなどの高帯域幅通信媒体と相互接続するのに使用されるストレージシェルフ・ルータを実施する集積回路を提供する。【解決手段】複数のストレージシェルフ・ルータがストレージシェルフ内で使用されており、ストレージシェルフ・ルータと、ディスクドライブと、外部通信媒体の間の相互接続が適正に設計され、構成されているとき、結果として生じるストレージシェルフは、ディスクアレイ等に含まれ得る、別個の高可用性コンポーネントを構成する。ストレージシェルフ・ルータは、多種多様なディスクドライブのいずれかにインターフェースし、それを管理することを可能にする、ディスクドライブ適合層を特徴とする。ディスクドライブ適合層は、ディスク／プロファイル表および関連付けられたファームウェア論理を含む。【選択図】図３６
2008537805.tif 000002
【特許請求の範囲】
【請求項１】
２つの通信媒体と相互接続されている複数のデータ記憶装置を含むストレージシェルフ内で用いられるストレージシェルフ・ルータ集積回路であって、
第１の通信媒体ポートと、
第２の通信媒体ポートと、
１つまたは複数のプロセッサと、
ディスクドライブリンクを介して前記複数のデータ記憶装置にデータおよびコマンドを送る複数のデータ記憶装置リンクポートコンポーネントと、
前記第１および第２の通信媒体ポートを介して受け取られたコマンドを前記１つまたは複数のプロセッサに経路指定し、前記２つ以上の通信媒体ポートを介して受け取られたデータを前記複数のデータ記憶装置リンクポートコンポーネントに経路指定する経路指定論理と、
前記ストレージシェルフ・ルータが、異なるタイプのデータ記憶装置にインターフェースし、前記異なるタイプのデータ記憶装置を管理することができるディスクドライブ適合層と、
を含むストレージシェルフ・ルータ集積回路。
【請求項２】
前記ディスクドライブ適合層は、
各データ記憶装置の特性およびパラメータに関連する格納されたディスクドライブ情報と、
個々のタイプのデータ記憶装置のパラメータおよび特性を含むデータ記憶装置プロファイル表と、
前記データ記憶装置とインターフェースを取り、前記データ記憶装置を管理するために、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表にアクセスし、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表を使用するファームウェア論理と
を備える、請求項１に記載のストレージシェルフ・ルータ集積回路。
【請求項３】
前記データ記憶装置プロファイル表は、
前記データ記憶装置プロファイル表エントリによって表されるタイプのディスクドライブのリセット戦略を指示するフィールドと、
モデル番号の完全な、または部分的な仕様を指示するフィールドと、
ファームウェアリビジョン番号の完全な、または部分的な仕様を指示するフィールドと、
転送特性および／または調整することができるパラメータを指示する１つまたは複数のフィールドと、
電源オフ／電源オン待機期間を指示するフィールドと、
ハードウェア／ソフトリセット待機期間を指示するフィールドと、
データ記憶装置のタイプを指示するフィールドと
を含む、請求項２に記載のストレージシェルフ・ルータ集積回路。
【請求項４】
データ記憶装置に処置を実行するよう指図するのにどのファームウェア論理を呼び出すべきか決定するために前記データ記憶装置に対応するデータ記憶装置プロファイル表エントリにアクセスするファームウェアを含む、請求項２に記載のストレージシェルフ・ルータ集積回路。
【請求項５】
データ記憶装置プロファイル表エントリから、データ記憶装置をリセットしようとするファームウェアであって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセットが使用され得ると指示しているときには、前記データ記憶装置にソフトリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にハードリセットが使用され得ると指示しているときで、前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセット使用され得ず、または前記装置に発行されたソフトリセットが失敗したと指示しているときには、前記データ記憶装置にハードリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置に電源オフ／電源オンサイクルが使用され得ると指示しているときで、ソフトおよびハードウェアリセットが試行されておらず、または試行されて、失敗しているときには、前記データ記憶装置の電源をオフにしてから前記データ記憶装置の電源をオンにし、前記装置が正しく応答したときに、正常なリセットを指示することによって
前記データ記憶装置をリセットしようとする前記ファームウェアを含む、請求項４に記載のストレージシェルフ・ルータ集積回路。
【請求項６】
前記ファームウェアは、ソフトリセット、ハードリセット、および電源オフ／電源オンサイクルの１つに続いて、異なるタイプのリセットに着手し、またはリセット失敗を指示する前に、対応するデータ記憶装置プロファイル表エントリによって前記タイプの前記データ記憶装置に指定されている期間にわたって待機する、請求項５に記載のストレージシェルフ・ルータ集積回路。
【請求項７】
前記データ記憶プロファイル表は、前記ストレージシェルフ・ルータと、システム管理者またはその他のユーザが、前記データ記憶プロファイル表内の値を変更し、または前記データ記憶プロファイル表に値およびエントリを追加することができるユーザインターフェースを提供するコンソールアプリケーションとによってアクセスすることができる不揮発性メモリに格納されている、請求項１に記載のストレージシェルフ・ルータ。
【請求項８】
ストレージシェルフ内で、前記ストレージシェルフが、異なるタイプのデータ記憶装置にインターフェースし、前記異なるタイプのデータ記憶装置を管理することができるディスクドライブ適合層であって、
各データ記憶装置の特性およびパラメータに関連する格納されたディスクドライブ情報と、
個々のタイプのデータ記憶装置のパラメータおよび特性を含むデータ記憶装置プロファイル表と、
前記データ記憶装置とインターフェースを取り、前記データ記憶装置を管理するために、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表にアクセスし、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表を使用するファームウェア論理と
を備えるディスクドライブ適合層。
【請求項９】
前記データ記憶装置プロファイル表は、
前記データ記憶装置プロファイル表エントリによって表されるタイプのディスクドライブのリセット戦略を指示するフィールドと、
モデル番号の完全な、または部分的な仕様を指示するフィールドと、
ファームウェアリビジョン番号の完全な、または部分的な仕様を指示するフィールドと、
転送特性および／または調整することができるパラメータを指示する１つまたは複数のフィールドと、
電源オフ／電源オン待機期間を指示するフィールドと、
ハードウェア／ソフトリセット待機期間を指示するフィールドと、
データ記憶装置のタイプを指示するフィールドと、
を含む、請求項８に記載のディスクドライブ適合層。
【請求項１０】
データ記憶装置に処置を実行するよう指図するのにどのファームウェア論理を呼び出すべきか決定するために前記データ記憶装置に対応するデータ記憶装置プロファイル表エントリにアクセスするファームウェアを含む、請求項９に記載のディスクドライブ適合層。
【請求項１１】
データ記憶装置プロファイル表エントリから、データ記憶装置をリセットしようとするファームウェアであって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセットが使用され得ると指示しているときには、前記データ記憶装置にソフトリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にハードリセットが使用され得ると指示しているときで、前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセット使用され得ず、または前記装置に発行されたソフトリセットが失敗したと指示しているときには、前記データ記憶装置にハードリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置に電源オフ／電源オンサイクルが使用され得ると指示しているときで、ソフトおよびハードウェアリセットが試行されておらず、または試行されて、失敗しているときには、前記データ記憶装置の電源をオフにしてから前記データ記憶装置の電源をオンにし、前記装置が正しく応答したときに、正常なリセットを指示することによって
前記データ記憶装置をリセットしようとする前記ファームウェアを含む、請求項１０に記載のディスクドライブ適合層。
【請求項１２】
前記ファームウェアは、ソフトリセット、ハードリセット、および電源オフ／電源オンサイクルの１つに続いて、異なるタイプのリセットに着手し、またはリセット失敗を指示する前に、対応するデータ記憶装置プロファイル表エントリによって前記タイプの前記データ記憶装置に指定されている期間にわたって待機する、請求項１１に記載のディスクドライブ適合層。
【請求項１３】
前記データ記憶プロファイル表は、前記ストレージシェルフと、システム管理者またはその他のユーザが、前記データ記憶プロファイル表内の値を変更し、または前記データ記憶プロファイル表に値およびエントリを追加することができるユーザインターフェースを提供するコンソールアプリケーションとによってアクセスすることができる不揮発性メモリに格納されている、請求項８に記載のディスクドライブ適合層。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数の個別大容量記憶装置で構成されるディスクアレイおよびその他の大容量記憶装置に関し、詳細には、ストレージシェルフ・ルータおよびパス制御カードが高可用性データ記憶システムの基礎として働くことを可能にする高度な冗長なアーキテクチャを使って、高帯域幅通信媒体とストレージシェルフ内の個別大容量記憶装置の間でデータを経路指定し、高帯域幅通信媒体から受け取られたデータ記憶コマンドを処理するために、１つまたは複数の別のストレージシェルフ・ルータと共に、一緒に用いられ得る、ストレージシェルフ・ルータの集積回路実装と、パス制御カードとに関する。
【背景技術】
【０００２】
ファイバチャネル（「ＦＣ」）は、コンピュータと周辺装置とのいくつかの異なる組み合わせを相互接続するデータ通信ネットワークのアーキテクチャおよびプロトコルである。ＦＣは、小型コンピュータシステムインターフェイス（「ＳＣＳＩ」）プロトコルを含む、様々な上位プロトコルをサポートする。コンピュータまたは周辺装置は、ＦＣポートおよび銅線または光ファイバを介してネットワークにリンクされる。ＦＣポートは、送受信機とインターフェースコントローラとを含み、ＦＣポートが含まれているコンピュータ周辺装置を「ホスト」という。ＦＣポートは、周辺コンピュータインターフェース（「ＰＣＩ」）バスなどのローカルデータバスを介してホストとデータを交換する。インターフェースコントローラは、ファイバチャネルと、ＦＣポートが存在するコンピュータまたは周辺装置との間の下位プロトコル交換を行う。
【０００３】
コンピュータネットワークにおいてリモートデータにアクセスする一般的パラダイムが、クライアント／サーバアーキテクチャである。このアーキテクチャによれば、クライアントコンピュータは、データを読み取り、または書き込むよう求める要求をサーバコンピュータに送る。サーバコンピュータは、クライアントサーバがデータを読み取り、または書き込むための権限および許可を有していることをチェックし、要求された読取りまたは書込み操作を特定の大容量記憶装置にマップし、書込み操作の場合には、クライアントコンピュータから大容量記憶装置への、読取り操作の場合には、大容量記憶装置からクライアントへのデータ転送における仲介として働くことによって要求を処理する。
【０００４】
一般の、現在利用可能な通信ネットワークアーキテクチャおよび以前から利用可能な通信ネットワークアーキテクチャでは、サーバコンピュータは、ローカルエリアネットワーク（「ＬＡＮ」）を介してクライアントコンピュータと通信すると共に、ＳＣＳＩバスなどのローカルバスを介していくつかの大容量記憶装置と通信する。かかるシステムにおいて、サーバは、読取りまたは書込み操作の結果として転送されたデータを格納し、転送することを必要とされる。なぜなら、サーバは、２つの異なる通信媒体の間のブリッジを表すからである。ＦＣの出現により、クライアントコンピュータ、サーバコンピュータ、および大容量記憶装置は、すべて、単一の通信媒体によって対称的に相互接続され得るようになった。従来のクライアント／サーバアーキテクチャは、一般に、前述のＬＡＮおよびＳＣＳＩネットワークで使用されるのと同じタイプのクライアント／サーバプロトコルを使用してＦＣに移植される。
【０００５】
大容量ディスクドライブを含むＳＣＳＩバス互換の大容量記憶装置は、広範に流通し、特に、中規模および大規模のコンピュータシステムにおいて広範に使用されており、多くのＦＣベースのシステムが、それぞれ、１つまたは複数のＦＣポートと、ディスクドライブがＦＣ応答側として機能するのに必要な論理を含む、ＦＣ互換ディスクドライブを用いている。パーソナルコンピュータ（「ＰＣ」）を含むより小規模のシステムでは、統合ドライブエレクトロニクス（「ＩＤＥ」）またはアドバンストテクノロジアタッチメント（「ＡＴＡ」）ディスクドライブと呼ばれる、異なるディスクドライブのファミリが広範に用いられている。シリアルＡＴＡディスク（「ＳＡＴＡ」）は、一般に、産業標準アーキテクチャ（「ＩＳＡ」）バスを介してシステムと相互接続される。
【０００６】
本発明は、ＦＣ、ＳＣＳＩおよびＩＤＥ／ＡＴＡ技術に関するものである。次に、それぞれを、以下の３つの別々の小節で論じる。これらの技術のいずれか、またはすべてに精通している場合には、以下の説明を飛ばして、ＦＣベースのディスクアレイを説明している本節の最後の小節、およびその小節の直後に続く発明の開示の節に進んでもよい。
【０００７】
ファイバチャネル
ファイバチャネル（「ＦＣ」）は、以下の表１に列挙する規格文書を含めて、いくつかのＡＮＳＩ規格文書で定義され、記載されている。
【表１】
2008537805.tif 000003
【０００８】
表１に列挙されている文書、およびファイバチャネルに関するその他の情報は、「ｈｔｔｐ：／／ｗｗｗ．ｔｌｌ．ｏｒｇ／ｉｎｄｅｘ．ｈｔｍ」および「ｈｔｔｐ：／／ｗｗｗ．ｆｉｂｒｅｃｈａｎｎｅｌ．ｃｏｍ．」のアドレスを有するワールドワイドウェブページに記載されている。
【０００９】
以下のＦＣの説明は、本発明の考察を容易にするために、これらの文書に含まれている情報の一部を紹介し、要約するためのものである。以下の説明で紹介するトピックのいずれかについてのより詳細な考察が求められる場合には、前述の文書を参照するとよい。
【００１０】
ＦＣは、一般に、１つまたは複数の通信媒体によって相互接続されている、コンピュータ、ワークステーション、周辺装置、およびディスクアレイなどの周辺装置のアレイまたは集合体である、ＦＣノード間のデータ通信のためのアーキテクチャおよびプロトコルである。通信媒体は、シールドツイストペア接続、同軸ケーブル、および光ファイバを含む。ＦＣノードは、少なくとも１つのＦＣポートおよびＦＣリンクを介して通信媒体に接続される。ＦＣポートは、ＦＣノードの処理コンポーネントとレジスタおよびメモリインターフェースを共用し、ハードウェアおよびファームウェアとして、下位のＦＣプロトコルを実施するＦＣホストアダプタまたはＦＣコントローラである。ＦＣノードは、一般に、共用メモリ内の共用データ構造を使用し、ＦＣポート内の制御レジスタを使用して、ＦＣポートとデータおよび制御情報を交換する。ＦＣポートは、電線または光学ストランドを含むリンクを介して通信媒体に結合されているシリアルの送信側および受信側コンポーネントを含む。
【００１１】
以下の考察では、「ＦＣ」を、ファイバチャネルアーキテクチャおよびプロトコル一般を指す形容詞として使用すると共に、ファイバチャネル通信媒体のインスタンスを指す名詞として使用する。よって、ＦＣ（アーキテクチャおよびプロトコル）ポートが、ＦＣ（通信媒体）から、ＦＣ（アーキテクチャおよびプロトコル）シーケンスを受け取ってもよい。
【００１２】
ＦＣアーキテクチャおよびプロトコルは、図１Ａ〜１Ｃに示す、３つの異なるタイプの相互接続技術をサポートする。図１Ａに、「ポイントツーポイントトポロジ」という、３つの相互接続されたトポロジのうちで最も単純なものを示す。図１Ａに示すポイントツーポイントトポロジでは、第１のノード１０１のＦＣポート１０４の送信機１０３を、第２のノード１０２のＦＣポート１０６の受信機１０５に直接結合すると共に、第２のノード１０２のＦＣポート１０６の送信機１０７を第１のノード１０１のＦＣポート１０４の受信機１０８に直接接続することによって、第１のノード１０１が、第２のノード１０２に直接接続されている。ポイントツーポイントトポロジで使用されるポート１０４および１０６をＮ＿Ｐｏｒｔいう。
【００１３】
図１Ｂに、「ＦＣ調停ループトポロジ」という、多少複雑なトポロジを示す。図１Ｂには、調停ループ内で相互接続されている４つのノード１１０〜１１３が示されている。電気的または光学的バイナリデータからなる信号が、ループを循環するようにあるノードから次のノードに転送される。あるノードの送信機、例えば、ノード１１１に関連付けられている送信機１１４は、ループ内の次のノードの受信機、送信機１１４の場合はノード１１２に関連付けられた受信機１１５と直接接続されている。２タイプのＦＣポートを使って、調停ループ内のＦＣノードが相互接続されてもよい。調停ループで使用される最も一般的なタイプのポートを「ＮＬ＿Ｐｏｒｔ」という。以下で説明するように、「ＦＬ＿Ｐｏｒｔ」という、特殊なタイプのポートを使って、ＦＣ調停ループがＦＣファブリックトポロジと相互接続されてもよい。調停ループトポロジにただ１つのＦＬ＿Ｐｏｒｔだけが、アクティブに組み込まれていてもよい。ＦＣ調停ループトポロジは、最大１２７までのアクティブなＦＣポートを含んでいてもよく、さらなる別の非関与ＦＣポートを含んでいてもよい。
【００１４】
ＦＣ調停ループトポロジでは、各ノードが調停ループの制御を争い、またはそれを調停する。一般に、複数のノードが制御を争う場合には、最も小さいポートアドレスを有するノードが制御を得る。すべてのノードが最終的には妥当な時間量内に制御を受け取るようにするために、各ノードによって、公平アルゴリズムが実施されてもよい。あるノードがループの制御を獲得すると、そのノードは、調停ループ内の他の任意のノードに対してチャネルを開くことができる。半二重チャネルでは、一方のノードがデータを送り、他方のノードがデータを受け取る。全二重チャネルでは、データが第２のノードによって送られ、第１のノードによって受け取られるのと同時に、データが第１のノードによって送られ、第２のノードによって受け取られてもよい。例えば、図１Ｂの調停ループで、ノード１１１がノード１１３と全二重チャネルを開く場合、そのチャネルを介してノード１１１からノード１１３に送られるデータはノード１１２のＮＬ＿Ｐｏｒｔを通り、ノード１１３によってノード１１１に送られるデータはノード１１０のＮＬ＿Ｐｏｒｔ１１７を通る。
【００１５】
図１Ｃに、「ＦＣファブリック」という、最も一般的で、最も複雑なＦＣトポロジを示す。ＦＣファブリックは、図１Ｃで、４つのノード１１９〜１２２が接続されている不規則な形状の中央オブジェクト１１８で表されている。ＦＣノード１１９〜１２２内のＮ＿Ｐｏｒｔ１２３〜１２６は、ファブリック１１８内のＦ＿Ｐｏｒｔ１２７〜１３０に接続されている。ファブリックは、電話システムと機能的に類似したスイッチドトポロジまたはクロスポイントスイッチトポロジである。データは、「ファブリック要素」と呼ばれるスイッチまたは交換を介してＦ＿Ｐｏｒｔ間でファブリックによって経路指定される。あるＦ＿Ｐｏｒｔと別のＦ＿Ｐｏｒｔとの間にファブリックを介した多くの可能な経路があってもよい。データの経路指定およびＦ＿Ｐｏｒｔと関連付けられたファブリック内のノードのアドレス指定は、ＦＣノードやＮ＿Ｐｏｒｔによってではなく、ＦＣファブリックによって処理される。
【００１６】
ＦＣは、シリアル通信媒体である。データは、一度に１ビットずつ極めて高い転送速度で転送される。図２に、ＦＣネットワークを介した転送でデータを時間的に編成するための非常に単純な階層を示す。最も低い概念レベルでは、データは、データビットストリーム２００であるとみなされ得る。ＦＣネットワークによってサポートされる最小データ単位、すなわちデータビットグループは、ＦＣポートによって８ビット文字として復号化される１０ビット文字である。ＦＣプリミティブは、１０ビット文字またはバイトで構成されている。いくつかのＦＣプリミティブを用いて、ＦＣポート間で交換される制御情報が搬送される。ＦＣプロトコルに関する基本レベルである次のデータ編成レベルは、フレームである。図２には７つのフレーム２０２〜２０８が示されている。１つのフレームは、区切り文字、ヘッダ、および任意のヘッダ、ならびに０から２０４８バイトのデータを含む、３６から２１４８バイトで構成され得る。第１のＦＣフレームは、例えば、データビットストリーム２００の水平ブラケット２０１で囲まれたデータビットに対応する。ＦＣプロトコルは、シーケンスと呼ばれる、次に高い編成レベルを指定する。図２に、第１のシーケンス２１０および第２のシーケンス２１２の一部分が表示されている。第１のシーケンス２１０は、フレーム１から４、２０２〜２０５で構成されている。第２のシーケンス２１２は、フレーム５から７、２０６〜２０８および図示されていないさらに別のフレームで構成されている。ＦＣプロトコルは、エクスチェンジと呼ばれる第３の編成レベルを指定する。エクスチェンジ２１４の一部分が図２に示されている。このエクスチェンジは、代替として、フレーム１から７、２０２〜２０８と、他の任意のフレームによって構成されていると見ることもできる。この任意のフレームは、エクスチェンジ２１４を構成する、第２のシーケンス２１２および他の任意のシーケンスに含まれる。
【００１７】
ＦＣは全二重データ伝送媒体である。フレームおよびシーケンスが、発行元、すなわち開始側と、応答側、すなわち宛先との間で、両方向に、同時に受け渡しされ得る。エクスチェンジは、読取り入出力トランザクションや書込み入出力トランザクションといった、１回の入出力トランザクションの間に、発行元と応答側の間で交換される、すべてのシーケンス、およびそれらのシーケンス内のフレームを備える。ＦＣプロトコルは、インターネットプロトコル（「ＩＰ」）、小型コンピュータシステムインターフェイス（「ＳＣＳＩ」）プロトコル、高性能パラレルインターフェース（「ＨＩＰＰＩ」、Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｐａｒａｌｌｅｌ  Ｉｎｔｅｒｆａｃｅ）、およびインテリジェント周辺インターフェース（「ＩＰＩ」）を含む、任意の数の上位データ交換プロトコルに従ってデータを転送するように設計されている。以下の小節ではＳＣＳＩバスアーキテクチャについて論じ、この小節と残りの小節での後続の考察の大部分は、ＦＣプロトコル内に組み込まれたＳＣＳＩプロトコルを中心に行う。ＳＣＳＩプロトコルのファイバチャネルへの標準適合を、本明細書では、以後、「ＦＣＰ」と称する。よって、ＦＣは、ＳＣＳＩバスおよび他の周辺相互接続バスに特徴的な、マスタ／スレーブ型通信パラダイム、ならびに、インターネットを実施するのに使用されるものなど、比較的オープンで、非構造的な通信プロトコルもサポートすることができる。ＦＣＰでは、開始側および宛先のＳＣＳＩバスアーキテクチャ概念が進められて、前述のように、ＦＣを介したトランスポートのためにＳＣＳＩコマンドおよびデータエクスチェンジをカプセル化するように設計される。
【００１８】
図３に、標準ＦＣフレームの内容を示す。ＦＣフレーム３０２は、５つのハイレベルセクション３０４、３０６、３０８、３１０および３１２を備える。第１のハイレベルセクションを、フレーム開始区切り文字３０４といい、フレームの先頭を示す４バイトを備える。次のハイレベルセクションを、フレームヘッダ３０６といい、アドレス指定情報、シーケンス情報、エクスチェンジ情報、および様々な制御フラグを含む２４バイトを備える。図３には、ＦＣフレーム３０２から拡大されたフレームヘッダの詳細図３１４が示されている。宛先識別子（「Ｄ＿ＩＤ」）、すなわちＤＥＳＴＩＮＡＴＩＯＮ＿ＩＤ３１６は、フレームの宛先ＦＣポートを指示する２４ビットＦＣアドレスである。ソース識別子（「Ｓ＿ＩＤ」）、すなわちＳＯＵＲＣＥ＿ＩＤ３１８は、フレームを送ったＦＣポートを指示する２４ビットアドレスである。発行元ＩＤ、すなわちＯＸ＿ＩＤ３２０、および応答側ＩＤ３２２、すなわちＲＸ＿ＩＤは、共に、発行元または開始側、および応答側または宛先のＦＣポートに関して、フレームが属するエクスチェンジを識別する３２ビットエクスチェンジＩＤを構成する。シーケンスＩＤ、すなわちＳＥＱ＿ＩＤ３２４は、フレームが属するシーケンスを識別する。
【００１９】
次のハイレベルセクション３０８を、データペイロードといい、ＦＣフレーム内にパッケージされた実際のデータを含む。データペイロードは、データと、ＩＰやＳＣＳＩなどの上位プロトコルに従って転送されているカプセル化プロトコル情報とを含む。図３には、ＳＣＳＩプロトコルによるデータ転送に使用される４つの基本的なタイプのデータペイロードレイアウト３２６〜３２９が示されている。これらのフォーマット３２６の第１のものを、ＦＣＰ＿ＣＭＮＤといい、開始側から宛先にＳＣＳＩコマンドを送るのに使用される。ＦＣＰ＿ＬＵＮフィールド３３０は、いくつかの実装形態では、合わさってそのＦＣＰ＿ＣＭＮＤの宛先を表す、特定のＳＣＳＩバスアダプタ、そのＳＣＳＩバスアダプタと関連付けられた宛先デバイス、および指定された宛先ＳＣＳＩ装置と関連付けられた論理装置に対応する論理ユニット番号（「ＬＵＮ」）を指定し得る８バイトアドレスを備える。他の実装形態では、ＦＣＰ＿ＬＵＮフィールド３３０は、宛先ＦＣホストアダプタによって、ＳＣＳＩバスアダプタ、そのＳＣＳＩバスアダプタと関連付けられた宛先デバイス、および指定された宛先ＳＣＳＩ装置と関連付けられた論理装置に対応するＬＵＮを決定するのに使用され得るインデックスまたは参照番号を含む。ＳＣＳＩ読取りまたは書込み入出力コマンドなど、実際のＳＣＳＩコマンドは、１６バイトフィールドＦＣＰ＿ＣＤＢ３３２に含まれる。
【００２０】
図３に示す第２のタイプのデータペイロードフォーマット３２７をＦＣＰ＿ＸＦＥＲ＿ＲＤＹレイアウトという。このデータペイロードフォーマットは、宛先が開始側に対して、宛先がデータの受け取りまたは送り出しを開始する用意ができていることを指示するものとして使用される。図３に示す第３のタイプのデータペイロードフォーマット３２８はＦＣＰ＿ＤＡＴＡフォーマットである。ＦＣＰ＿ＤＡＴＡフォーマットは、ＳＣＳＩ入出力トランザクション実行の結果として、ＳＣＳＩデータ記憶装置から読み取られ、またはそこに書き込まれる実際のデータを転送するのに使用される。図３に示す最後のデータペイロードフォーマット３２９をＦＣＰ＿ＲＳＰレイアウトといい、入出力トランザクションの完了時に、宛先から開始側に、ＳＣＳＩ状況バイト３３４、ならびに他のＦＣＰ状況情報を転送するのに使用される。
【００２１】
ＳＣＳＩバスアーキテクチャ
コンピュータバスとは、コンピュータシステムの処理、格納、および入力／出力（「入出力」）コンポーネントの間でコンピュータのコマンドおよびデータを送るための電気信号線の組である。ＳＣＳＩ入出力バスは、ハードディスクやＣＤ−ＲＯＭドライブといった大容量記憶装置を、コンピュータシステムのメモリおよび処理コンポーネントと相互接続するための、最も普及している一般的なコンピュータバスである。ＳＣＳＩバスアーキテクチャは、ＳＣＳＩ−１、ＳＣＳＩ−２、ＳＣＳＩ−３という３つの主要な規格として定義されている。ＳＣＳＩ−１規格とＳＣＳＩ−２規格は、それぞれ、米国規格協会（「ＡＮＳＩ」）規格文書「Ｘ３．１３１−１９８６」と「Ｘ３．１３１−１９９４」に公開されている。ＳＣＳＩ−３規格は、現在、ＡＮＳＩ委員会によって策定されている。ＳＣＳＩバスアーキテクチャの概要は、「Ｔｈｅ  ＳＣＳＩ  Ｂｕｓ  ａｎｄ  ＩＤＥ  Ｉｎｔｅｒｆａｃｅ」、Ｆｒｅｉｄｈｅｌｍ  Ｓｃｈｍｉｄｔ、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙ、ＩＳＢＮ０−２０１−１７５１４−２、１９９７年  （「Ｓｃｈｍｉｄｔ」）に記載されている。
【００２２】
図４は、ＳＣＳＩバスを含む一般のパーソナルコンピュータ（「ＰＣ」）アーキテクチャのブロック図である。ＰＣ４００は、高速のＣＰＵバス４０６によってシステムコントローラ４０４にリンクされている、中央演算処理装置、またはプロセッサ（「ＣＰＵ」）４０２を含む。システムコントローラは、さらに、メモリバス４１０を介してシステムメモリコンポーネント４０８にリンクされている。システムコントローラ４０４は、さらに、より低速な産業標準アーキテクチャ（「ＩＳＡ」）バス４１４およびＳＣＳＩバス４１６と相互接続されている周辺装置相互接続（「ＰＣＩ」）バス４１２を介して様々な周辺装置にリンクされている。ＰＣＩバスのアーキテクチャは、「ＰＣＩ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ」、Ｓｈａｎｌｅｙ  ＆  Ａｎｄｅｒｓｏｎ、Ｍｉｎｅ  Ｓｈａｒｅ，  Ｉｎｃ．、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙ、ＩＳＢＮ  ０−２０１−４０９９３−３、１９９５年に記載されている。相互接続されているＣＰＵバス４０６、メモリバス４１０、ＰＣＩバス４１２、およびＩＳＡバス４１４は、ＣＰＵが、コンピュータシステムに含まれている様々な処理およびメモリコンポーネント、ならびに入出力装置とデータおよびコマンドを交換することを可能にする。一般に、ビデオ表示装置４１８など、超高速高帯域幅の入出力装置は、ＰＣＩバスに直接接続される。キーボード４２０やポインティングデバイス（不図示）などの低速入出力装置４２０は、ＩＳＡバス４１４に直接接続されている。ＩＳＡバスは、バスブリッジコンポーネント４２２を介してＰＣＩバスと相互接続されている。ハードディスク、フロッピーディスクドライブ、ＣＤ−ＲＯＭドライブ、テープドライブ４２４〜４２６などの大容量記憶装置は、ＳＣＳＩバス４１６に接続されている。ＳＣＳＩバスは、ＳＣＳＩバスアダプタ４３０を介してＰＣＩバス４１２と相互接続されている。ＳＣＳＩバスアダプタ４３０は、Ｓｙｍｂｉｏｓ製５３Ｃ８ｘｘＳＣＳＩプロセッサファミリから選択されたプロセッサなどのプロセッサコンポーネントを含み、標準のＰＣＩバスプロトコルを使ってＰＣＩバス４１２にインターフェースする。ＳＣＳＩバスアダプタ４３０は、一部を以下で説明する、ＳＣＳＩバスプロトコルを使ってＳＣＳＩバス４１６にインターフェースする
。ＳＣＳＩバスアダプタ４３０は、一般に、ＳＣＳＩバスに接続されている各大容量記憶装置４２４〜４２６、またはＳＣＳＩ装置内に組み込まれているＳＣＳＩコントローラ（不図示）とコマンドおよびデータを交換する。ＳＣＳＩコントローラは、ＳＣＳＩバスを介してＳＣＳＩアダプタから受け取られるＳＣＳＩコマンドを解釈してそれに応答し、論理装置とインターフェースを取り、それを制御することによってＳＣＳＩコマンドを実施するハードウェア／ファームウェアコンポーネントである。論理装置は、１つまたは複数の物理装置に、または１つまたは複数の物理装置の部分に対応していてもよい。物理装置には、ディスクドライブ、テープドライブ、ＣＤ−ＲＯＭドライブなどのデータ記憶装置が含まれる。
【００２３】
入出力コマンドと呼ばれる、２タイプの重要なコマンドが、ＳＣＳＩ装置に、論理装置からデータを読み取り、論理装置にデータを書き込むよう指図する。入出力トランザクションは、読取り入出力コマンドによって、または書込み入出力コマンドによって一部実施される、一般に、ＣＰＵ４０２などの処理コンポーネントによって開始される、コンピュータシステムの２つのコンポーネントの間のデータ交換である。よって、入出力トランザクションは、読取り入出力トランザクションおよび書込み入出力トランザクションを含む。
【００２４】
ＳＣＳＩバス４１６は、いくつかのデータビットを同時にトランスポートすることのできるパラレルバスである。ＳＣＳＩバスによって同時にトランスポートされ得るデータビットの数を、バスの幅という。様々なタイプのＳＣＳＩバスは、８ビット、１６ビット、および３２ビットの幅を有する。１６ビットおよび３２ビットのＳＣＳＩバスを、ワイドＳＣＳＩバスという。
【００２５】
すべてのコンピュータバスおよびプロセッサと同様に、ＳＣＳＩバスは、バス上の動作およびデータ転送の速度を決定するクロックによって制御される。ＳＣＳＩバスのクロック速度は様々である。ＳＣＳＩバスの幅と、ＳＣＳＩバスが動作するクロック速度の組み合わせが、１秒当たりにそのＳＣＳＩバスを介してトランスポートされ得るバイト数、すなわちＳＣＳＩバスの帯域幅を決定する。様々なタイプのＳＣＳＩバスは、毎秒２メガバイト（「Ｍバイト」）未満から、最大毎秒４０Ｍバイトまでに及ぶ帯域幅を有し、将来的には毎秒８０Ｍバイトおよび、恐らく、毎秒１６０Ｍバイトまで増大される予定である。帯域幅の増大は、ＳＣＳＩバスの物理的長さの制限の増大を伴い得る。
【００２６】
図５に、ＳＣＳＩバストポロジを示す。コンピュータシステム５０２、または他のハードウェアシステムは、１つまたは複数のＳＣＳＩバスアダプタ５０４および５０６を含んでいてもよい。ＳＣＳＩバスアダプタ、ＳＣＳＩバスアダプタが制御するＳＣＳＩバス、およびそのＳＣＳＩバスに接続されている任意の周辺装置は、一緒の１つのドメインを構成する。図５のＳＣＳＩバスアダプタ５０４は、第１のドメイン５０８と関連付けられており、ＳＣＳＩバスアダプタ５０６は、第２のドメイン５１０と関連付けられている。最新のＳＣＳＩ−２バス実装形態は、１５の異なるＳＣＳＩ装置５１３〜５１５および５１６〜５１７が、単一のＳＣＳＩバスに接続されることを可能にする。図５において、ＳＣＳＩ装置５１３〜５１５は、ＳＣＳＩバスアダプタ５０６によって制御されるＳＣＳＩバス５１８に接続されており、ＳＣＳＩ装置５１６〜５１７は、ＳＣＳＩバスアダプタ５０４によって制御されるＳＣＳＩバス５２０に接続されている。各ＳＣＳＩバスアダプタおよびＳＣＳＩ装置は、個々のＳＣＳＩバス内の装置またはアダプタを一意に識別するＳＣＳＩ識別番号、すなわちＳＣＳＩ＿ＩＤを有する。慣例により、ＳＣＳＩバスアダプタはＳＣＳＩ＿ＩＤ７を有し、ＳＣＳＩバスに接続されたＳＣＳＩ装置は、０から６までと８から１５までのＳＣＳＩ＿ＩＤを有する。ＳＣＳＩ装置５１３などのＳＣＳＩ装置は、それぞれが１つまたは複数の物理装置の部分を含む、いくつかの論理装置とインターフェースを取ってもよい。各論理装置は、その論理装置を制御するＳＣＳＩ装置に対してその論理装置を一意に識別する論理ユニット番号（「ＬＵＮ」）によって識別される。例えば、ＳＣＳＩ装置５１３は、それぞれ、ＬＵＮ０、１、２を有する論理装置５２２〜５２４を制御する。ＳＣＳＩ用語によれば、ＳＣＳＩバス上で入出力コマンドを開始する装置を開始側といい、ＳＣＳＩバスを介して、ＳＣＳＩ装置に、入出力操作を実行するよう指図する入出力コマンドを受け取るＳＣＳＩ装置を宛先という。
【００２７】
一般に、ＳＣＳＩバスアダプタ５０４、５０６などのＳＣＳＩバスアダプタは、宛先装置にコマンドを送ることによって入出力操作を開始する。宛先装置５１３〜５１５および５１６〜５１７は、ＳＣＳＩバスから入出力コマンドを受け取る。次いで、宛先装置５１３〜５１５および５１６〜５１７は、それらが制御する１つまたは複数の論理装置とのインターフェースをとり、論理装置からデータを読み取ってＳＣＳＩバスを介して開始側に返し、または開始側からＳＣＳＩバスを介して受け取られたデータを論理装置に書き込むことによってコマンドを実施する。最後に、宛先装置５１３〜５１５および５１６〜５１７は、コマンドの実施の成功または失敗を指示する状況メッセージで、ＳＣＳＩバスを介して開始側に応答する。
【００２８】
図６Ａ〜６Ｃに、読取りおよび書込み入出力操作の開始および実施に関与するＳＣＳＩプロトコルを示す。読取りおよび書込み入出力操作は、ＳＣＳＩ装置によって実行される大量の入出力操作を構成する。ＳＣＳＩバスによって相互接続された大容量記憶装置のシステムの動作効率を最大にしようとする取り組みは、大部分が、読取りおよび書込み入出力操作が実行される効率を最大にすることを対象としている。よって、以下の考察においては、様々なハードウェア装置のアーキテクチャ上の特徴を、読取りおよび書込み操作の観点から論じる。
【００２９】
図６Ａに、ＳＣＳＩ開始側、通常はＳＣＳＩバスアダプタによる、ＳＣＳＩ宛先、通常は、１つまたは複数の論理装置と関連付けられたＳＣＳＩ装置に組み込まれているＳＣＳＩコントローラへの、読取りまたは書込み入出力コマンドの送出を示す。読取りまたは書込み入出力コマンドの送出を、ＳＣＳＩ入出力操作のコマンドフェーズという。図６Ａは、中央の縦線６０６で、開始側６０２セクションと宛先６０４セクションとに分かれている。開始側セクションも宛先セクションも、ＳＣＳＩバスの状態を記述する「状態」６０６という名称の列６０６、６０８と、開始側と宛先とにそれぞれ関連付けられるＳＣＳＩバスイベントを記述する「イベント」という名称の列６１０、６１２を含む。入出力コマンドの送出に関与するバス状態およびバスイベントは、図６Ａの上から図６Ａの下へ時間的に降順で並んでいる。また、図６Ｂ〜６Ｃも、このフォーマットに従ったものである。
【００３０】
図６Ａに示す、開始側ＳＣＳＩバスアダプタから宛先ＳＣＳＩ装置への入出力コマンドの送出は、宛先ＳＣＳＩ装置による読取りまたは書込み入出力操作を開始させる。図４を参照すると、ＳＣＳＩバスアダプタ４３０は、入出力トランザクションの一部として入出力操作を開始する。一般に、ＳＣＳＩバスアダプタ４３０は、ＰＣＩバス４１２、システムコントローラ４０４、およびＣＰＵバス４０６を介して、ＣＰＵ４０２から、ＳＣＳＩバスアダプタに、読取り操作または書込み操作を実行するよう指図する読取りまたは書込みコマンドを受け取る。読取り操作では、ＣＰＵ４０２は、ＳＣＳＩバスアダプタ４３０に、大容量記憶装置４２４〜４２６からデータを読み取り、そのデータをＳＣＳＩバス４１６、ＰＣＩバス４１２、システムコントローラ４０４、およびメモリバス４１０を介して、システムメモリ４０８内の場所に転送するよう指図する。書込み操作では、ＣＰＵ４０２は、システムコントローラ４０４に、システムメモリ４０８から、メモリバス４１０、システムコントローラ４０４、およびＰＣＩバス４１２を介してＳＣＳＩバスアダプタ４３０にデータを転送するよう指図し、ＳＣＳＩバスアダプタ４３０に、ＳＣＳＩバスを介して、データが書き込まれる大容量記憶装置４２４〜４２６にデータを送るよう指図する。
【００３１】
図６Ａは、現在、ＳＣＳＩ装置上でトランスポートされているコマンドもデータもないことを指示する、バス空き状態６１４のＳＣＳＩバスで開始する。開始側、すなわちＳＣＳＩバスアダプタは、バスを調停状態６１６に入らせるために、ＳＣＳＩバスのＢＳＹ、Ｄ７およびＳＥＬ信号線をアサートする。この状態において、開始側は、すべての装置に、ＳＣＳＩバス上でコマンドを送るという意図を告知する。調停が必要なのは、任意の瞬間において、ただ１つの装置だけが、ＳＣＳＩバスの動作を制御できるからである。開始側がＳＣＳＩバスの制御を獲得したと仮定すると、次いで、開始側は、ＳＣＳＩバスを選択状態６１８に入らせるために、ＡＴＮ信号線および宛先ＳＣＳＩ＿ＩＤに対応するＤＸ信号線をアサートする。開始側または宛先は、前述の、調停状態６１６から選択状態６１８への状態変更などのＳＣＳＩバス状態の変更を生じさせるために、特定の順序で様々なＳＣＳＩ信号線をアサートし、ドロップする。これらのシーケンスは、ＳｃｈｍｉｄｔおよびＡＮＳＩ規格に記載されており、したがって、詳細な説明は行わない。
【００３２】
宛先は、宛先が開始側によって選択されていることを感知すると、入出力操作のコマンドフェーズを完了するために、ＳＣＳＩバスの制御６２０を引き受ける。次いで、宛先は、ＳＣＳＩ信号線をメッセージ出力状態６２２に入るように制御する。メッセージ出力状態で発生する第１のイベントで、宛先は、開始側から、識別メッセージ６２３を受け取る。識別メッセージ６２３は、後に続くコマンドメッセージのアドレス指定先のＬＵＮを識別するＬＵＮフィールド６２４を含む。また、識別メッセージ６２３は、一般に、宛先に対して、後に続く入出力コマンドのその宛先による実施の間に、宛先がＳＣＳＩバスから切断することを許可されていると指示するように設定されているフラグ６２５を含む。次いで、宛先は、宛先に対して、後に続く入出力コマンドがどのようにして待ち行列に入れられるべきか指示すると共に、宛先に待ち行列タグ６２７を提供する待ち行列タグメッセージ６２６を受け取る。待ち行列タグは、入出力コマンドを識別する１バイトである。したがって、ＳＣＳＩバスアダプタは、ＬＵＮごとに異なる入出力コマンドを同時に処理することができる２５６。開始側ＳＣＳＩバスアダプタのＳＣＳＩ＿ＩＤと、宛先ＳＣＳＩ装置のＳＣＳＩ＿ＩＤと、宛先ＬＵＮと、待ち行列タグとの組み合わせは、ＳＣＳＩバス内で、後に続く入出力コマンドに対応する入出力操作を一意に識別するＩ＿Ｔ＿Ｌ＿Ｑ連結参照番号を構成する。次に、宛先装置は、ＳＣＳＩバス信号線をコマンド状態６２８に入るように制御する。コマンド状態において、宛先は、開始側に、入出力コマンド６３０を請求し、開始側からそれを受け取る。入出力コマンド６３０は、実行されるべき特定のコマンド、この場合は、読取りコマンドまたは書込みコマンドを識別する命令コード６３２と、コマンドによって指定される読取りまたは書込み操作の開始点になる論理装置の論理ブロックを識別する論理ブロック番号６３６と、コマンドの実行中に読み取られ、または書き込まれるブロックの数を指定するデータ長６３８とを含む。
【００３３】
宛先が入出力コマンドを受け取り、それを処理すると、宛先装置は、一般に、ＳＣＳＩバス信号線を、宛先装置が開始側装置に切断メッセージ６４２を送り返すためのメッセージ入力状態６４０に入るように制御する。宛先は、一般には、宛先が、論理装置をコマンドによって指定された読取りまたは書込み操作に備えて論理装置と対話し始めるために、ＳＣＳＩバスから切断する。宛先は、データを受け取るためのバッファを準備する必要があることも、ディスクドライブまたはＣＤ−ＲＯＭドライブの場合には、宛先装置は、論理装置に、読取りまたは書込みコマンドの開始点に指定された適切なブロックに移動するよう指図することもある。切断することによって、宛先装置は、ＳＣＳＩバスアダプタと宛先装置の間の次のメッセージ、コマンド、またはデータのトランスポートのためにＳＣＳＩバスを解放する。このようにして、多数の異なる入出力操作が、ＳＣＳＩバス上で同時に多重化され得る。最後に、宛先装置は、ＳＣＳＩバスをバス空き状態６４４に戻すために、ＢＳＹ信号線をドロップする。
【００３４】
次いで、宛先装置は、読取りまたは書込み操作に備えて論理装置を準備する。論理装置がデータを読み取り、または書き込むことのできる状態になると、入出力操作のデータフェーズが続く。図６Ｂに、ＳＣＳＩ入出力操作のデータフェーズを示す。ＳＣＳＩバスは、最初は、バス空き状態６４６にある。宛先装置は、目下、読取り入出力コマンドに応答してデータを返し、または書込み入出力コマンドに応答してデータを受け入れる用意ができており、ＳＣＳＩバス信号線を調停状態６４８に入るように制御する。宛先装置が、ＳＣＳＩバスの制御の調停に成功したと仮定すると、宛先装置は、ＳＣＳＩバス信号線を再選択状態６５０に入るように制御する。再選択状態は、再選択状態において通信すべきＳＣＳＩバスアダプタの選択を行うのは、選択状態において宛先装置を選択するＳＣＳＩバスアダプタではなく、宛先装置であることを除けば、上記図６Ａで説明した、選択状態と類似したものである。
【００３５】
宛先装置は、ＳＣＳＩバスアダプタを選択した後で、ＳＣＳＩバス信号線を、ＳＣＳＩバスをメッセージ入力状態６５２に入らせるように操作する。メッセージ入力状態で、宛先装置は、ＳＣＳＩバスアダプタに識別メッセージ６５４と待ち行列タグメッセージ６５６の両方を送る。これらのメッセージは、図６Ａに示す、開始側から宛先への入出力コマンドの送出時に、開始側によって宛先装置に送られた識別メッセージおよび待ち行列タグメッセージと同じものである。開始側は、開始側および宛先装置のＳＣＳＩ＿ＩＤと、宛先ＬＵＮと、待ち行列タグメッセージに含まれる待ち行列タグとの組み合わせであるＩ＿Ｔ＿Ｌ＿Ｑ連結参照番号を使って、読取り操作の場合には、データが続いて宛先から開始側に送られ、書込み操作の場合には、データが続いて開始側によって送られる入出力トランザクションを識別することができる。よって、Ｉ＿Ｔ＿Ｌ＿Ｑ連結参照番号は、読取りの場合には、宛先装置からデータを受け取るのに、書込みの場合には、宛先装置にデータを送り出すのに適したバッファを位置指定するために、ＳＣＳＩバスアダプタによって、未処理の入出力コマンドの表へのインデックスとして使用され得る入出力操作ハンドルである。
【００３６】
識別メッセージおよび待ち行列タグメッセージを送った後で、宛先装置は、ＳＣＳＩ信号線をデータ状態６５８に遷移するように制御する。読取り入出力操作の場合、ＳＣＳＩバスは、データ入力状態に遷移する。書込み入出力操作の場合、ＳＣＳＩバスは、データ出力状態に遷移する。ＳＣＳＩバスがデータ状態にある間、宛先装置は、各ＳＣＳＩバスクロックサイクルごとに、データが送られる特定のＳＣＳＩバスの幅に等しいビット数サイズを有するデータ単位を送る。一般に、各データ単位の転送の一部として信号線ＡＣＫおよびＲＥＱが関与するＳＣＳＩバス信号線ハンドシェークが生じる。例えば、読取り入出力コマンドの場合、宛先装置は、次のデータ単位をＳＣＳＩバスに配置し、ＲＥＱ信号線をアサートする。開始側は、ＲＥＱ信号線のアサーションを感知し、ＳＣＳＩバスから送られたデータを取り出し、データの受け取りを確認するためにＡＣＫ信号線をアサートする。この種のデータ転送を非同期転送という。また、ＳＣＳＩバスプロトコルは、開始側から第１の確認を受け取る前に、宛先装置がいくつかのデータ単位を転送することも可能にする。同期転送というこの転送モードでは、第１のデータ単位の送り出しとその送り出し確認の受け取りの間の待ち時間が回避される。データ送り出しの間、宛先装置は、開始側に、ポインタ保存メッセージに続けて切断メッセージを送り、次いで、ＳＣＳＩバス信号線をバス空き状態に入るように制御することによって、データ送出に割込みをかけることができる。これは、宛先装置が、次のデータを受け取り、または送り出す前に、制御する論理装置と対話するために休止することを可能にする。ＳＣＳＩバスから切断した後、宛先装置は、開始側が、割込みをかけられた点からデータ受け取りまたは転送を再開することができるように、後で再度、ＳＣＳＩバスの制御を調停し、開始側に別の識別メッセージおよび待ち行列タグメッセージを送ってもよい。データ状態６５８に割込みをかける切断および再接続６６０の一例が図３Ｂに示されている。最後に、入出力操作のすべてのデータが送られると、宛先装置は、ＳＣＳＩ信号線をメッセージ入力状態６６２に入るように制御し、メッセージ入力状態６６２で、宛先装置は、任意でポインタ保存メッセージを先行させて、開始側に切断メッセージを送る。切断メッセージを送った後で、宛先装
置は、ＳＣＳＩバスがバス空き状態６６４に遷移するように、ＢＳＹ信号線をドロップする。
【００３７】
図６Ｂに示すような入出力操作のためのデータ送出に続いて、宛先装置は、入出力操作の状況フェーズの間に、開始側に状況を返す。図６Ｃに、入出力操作の状況フェーズを示す。図６Ａ〜６Ｂの場合と同様に、ＳＣＳＩバスは、図３Ｂの場合と同様に、バス空き状態６６６から調停状態６６８、再選択状態６７０、メッセージ入力状態６７２に遷移する。メッセージ入力状態６７２の間の宛先による開始側への識別メッセージ６７４および待ち行列タグメッセージ６７６の送出に続いて、宛先装置は、ＳＣＳＩバス信号線を状況状態６７８に入るよう制御する。状況状態６７８で、宛先装置は、開始側に、入出力コマンドが正常に完了したか否か指示する単一の状況バイト６８４を送る。図６Ｃでは、状況コード０で示される正常な完了に対応する状況バイト６８０が、宛先装置から開始側に送られることが示されている。状況バイトの送出に続いて、宛先装置は、ＳＣＳＩバス信号線を、宛先装置が開始側にコマンド完了メッセージ６８４を送るメッセージ入力状態６８２に入るように制御する。この時点において、入出力操作は完了している。次いで、宛先装置は、ＳＣＳＩバスがバス空き状態６８６に戻るように、ＢＳＹ信号線をドロップする。ＳＣＳＩバスアダプタは、今や、その入出力コマンドの部分を終了し、コマンドを実行するために割り振られた任意の内部リソースを解放し、ＰＣＩバスを介してＣＰＵに完了メッセージまたは状況を返すことができる。
【００３８】
ＳＣＳＩプロトコルのＦＣＰへのマッピング
図７Ａおよび７Ｂに、開始側と宛先の間で交換されるＦＣＰシーケンスと、図６Ａ〜６Ｃに示すＳＣＳＩバスフェーズおよび状態の間のマッピングを示す。図７Ａ〜７Ｂにおいて、宛先ＳＣＳＩアダプタは、ＦＣを介して開始側と通信し、ＳＣＳＩバスを介して宛先ＳＣＳＩ装置と通信することができるように、ＦＣＰホストアダプタと一緒にパッケージされているものとする。図７Ａには、読取り入出力トランザクションのＦＣＰシーケンスとＳＣＳＩフェーズおよび状態の間のマッピングが示されている。このトランザクションは、開始側が、ＦＣを介して宛先ＳＣＳＩアダプタにＦＣＰ＿ＣＭＮＤ７０２データペイロードを含む単一フレームのＦＣＰシーケンスを送るときに開始される。宛先ＳＣＳＩバスアダプタは、ＦＣＰ＿ＣＭＮＤフレームを受け取ると、調停、再選択、メッセージ出力、コマンドおよびメッセージ入力を含む、図６Ａに示すコマンドフェーズの各ＳＣＳＩ状態７０４を経て進む。コマンドフェーズの終わりに、図６Ａに示すように、入出力トランザクションの宛先であるＳＣＳＩ装置は、ＳＣＳＩバスを解放するためにＳＣＳＩバスから切断すると同時に、宛先ＳＣＳＩ装置は、トランザクションを実行する準備をする。後で、宛先ＳＣＳＩ装置は、ＳＣＳＩバス制御を再調停し、入出力トランザクションのデータフェーズ７０６を開始する。この時点において、ＳＣＳＩバスアダプタは、開始側に、現在データ送出が続行し得ることを指示するＦＣＰ＿ＸＦＥＲ＿ＲＤＹ単一フレームシーケンス７０８を送り返してもよい。読取り入出力トランザクションの場合、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹ単一フレームシーケンスは任意である。データフェーズが進むにつれて、宛先ＳＣＳＩ装置は、論理装置からのデータ読取り、およびそのデータの、ＳＣＳＩバスを介した宛先ＳＣＳＩバスアダプタへの送出を開始する。次いで、宛先ＳＣＳＩバスアダプタは、宛先ＳＣＳＩ装置から受け取ったデータを、合わさって入出力読取りトランザクションに対応するエクスチェンジの第３のシーケンスを構成するいくつかのＦＣＰ＿ＤＡＴＡフレームにパッケージし、ＦＣを介してそれらのＦＣＰ＿ＤＡＴＡフレームを開始側に送り返す。すべてのデータが送られ、宛先ＳＣＳＩ装置がＳＣＳＩバスの制御を放棄すると、次いで、宛先ＳＣＳＩ装置は、入出力トランザクションの状況フェーズ７１４を開始
するために、再度、ＳＣＳＩバスの制御を調停する。このフェーズで、ＳＣＳＩバスは、宛先ＳＣＳＩ装置から宛先ＳＣＳＩアダプタにＳＣＳＩ状況バイトを送るために、図７Ａに示すように、バス空き状態から、調停、再選択、メッセージ入力、ＳＴＡＴＵＳ、メッセージ入力、バス空き状態へと遷移する。状況バイトを受け取ると、宛先ＳＣＳＩバスアダプタは、状況バイトをＦＣＰ＿ＲＳＰ単一フレームシーケンス７１６にパッケージし、ＦＣを介してそのＦＣＰ＿ＲＳＰ単一フレームシーケンスを開始側に送り返す。これで読取り入出力トランザクションが完了する。
【００３９】
多くのコンピュータシステムには、宛先ＦＣホストアダプタと宛先ＳＣＳＩバスアダプタの間に、ＰＣＩバスなど、別の内部コンピュータバスがあることもある。言い換えると、ＦＣホストアダプタおよびＳＣＳＩアダプタは、単一の宛先コンポーネント内に一緒にパッケージされていなくてもよい。簡単にするために、図７Ａ〜Ｂには、そうした別の相互接続は図示していない。
【００４０】
図７Ｂに、図７Ａと同様に、ＦＣＰ＿ＣＭＮＤフレーム７１８によって指示された書込み入出力トランザクション時の、ＦＣＰシーケンスと、ＳＣＳＩバスフェーズおよび状況の間のマッピングを示す。図７Ｂが図７Ａと異なるのは、書込みトランザクション時に、ＦＣＰ＿ＤＡＴＡフレーム７２２〜７２５が、開始側から、ＦＣを介して宛先に送られ、宛先から開始側に送られたＦＣＰ＿ＸＦＥＲ＿ＲＤＹ単一フレームシーケンス７２０が、読取り入出力トランザクションの場合のように、任意ではなく、必須であることだけである。図７Ａと同様に、書込み入出力トランザクションは、宛先がいつ開始側にＦＣＰ＿ＲＳＰ単一フレームシーケンス７２６を返すかを含む。
【００４１】
ＩＤＥ／ＡＴＡディスクドライブ
ＩＤＥ／ＡＴＡドライブは、ディスクロジックコントローラとハードディスクをまとめて単一モジュールとして統合するために開発されたものである。ＩＤＥ／ＡＴＡドライブは、特に、ＩＳＡバスを介した、ＰＣシステムへの容易な統合のために設計された。元々、ＩＤＥ／ＡＴＡドライブは、システムまたはバスクロックによって制御される不連続な時間間隔での、ＩＤＥ／ＡＴＡドライブとシステムの間の２バイトデータの交換を可能にするように、パラレルの１６ビット相互接続を用いて設計された。残念ながら、パラレルバス相互接続は、現在の毎秒１００から１３３ＭＢのデータ転送速度を用いると性能限界に達し、４０または８０ピンリボンケーブル接続は、もはや、最新のコンピュータシステム内の内部コンポーネントの、窮屈な、高密度パッケージングには適合しない。これらの理由で、ＳｅｒｉａｌＡＴＡ（「ＳＡＴＡ」）規格が策定されており、現在は、８０ピンリボンケーブル接続が、４本心線シリアルケーブルで置き換えられている、ＳＡＴＡディスクドライブが生産されている。ＳＡＴＡディスクの初期データ転送速度は、毎秒１５０ＭＢであり、すぐに毎秒３００ＭＢに、次いで、毎秒６００ＭＢに増大すると期待されている。ＡＴＡシリアルディスクドライブと周辺装置相互接続（「ＰＣＩ」）ベースのコントローラの間の転送でデータを直列化するのに、標準８Ｂ／１０Ｂ符号化が使用される。最終的には、ＳＡＴＡ装置の直接相互接続を提供するＳＡＴＡ技術を完全に組み込むように、様々な入出力コントローラを統合し、周辺装置およびバスへのインターフェースを提供し、１つまたは複数のＣＰＵとメモリをリンクさせる第２のブリッジとの間でデータを転送するサウスブリッジコントローラが、設計されてもよい。
【００４２】
ＡＴＡインターフェース、特に、ＡＴＡ−５およびＡＴＡ−６標準インターフェースは、外部プロセッサまたはロジックコントローラが、ＡＴＡディスクドライブ内のロジックコントローラに、基本データ転送コマンド、シーキング、キャッシュ管理ならびにその他の管理および診断に関連するタスクを実行するよう指図することができるようにする様々なコマンドをサポートする。以下の表２は、プロトコル「１」などのプロトコル番号を、一般的なタイプのＡＴＡコマンドと関連付けるものである。コマンドのタイプには、プログラムされた入力／出力（「ＰＩＯ」）、非データコマンド、直接メモリアクセス（「ＤＭＡ」）コマンドが含まれる。
【００４３】
（表２）
プロトコル      コマンドのタイプ
１              ＰＩＯデータ入力コマンド
２              ＰＩＯデータ出力コマンド
３              非データコマンド
４              ＤＭＡコマンド
５              ＤＭＡコマンド
【００４４】
以下に示す表３に、いくつかのＡＴＡコマンドを、上記表２で定義されているコマンドが属するコマンドのタイプを指示する対応プロトコルと共に列記する。
【００４５】
（表３）
プロトコル      ＡＴＡコマンド
３              電力モードチェック
２              マイクロコードダウンロード
３              エグゼクティブ装置診断
３              キャッシュフラッシュ
３              拡張キャッシュフラッシュ
１              装置識別
３              即座のアイドルモードへの移行
４              ＤＭＡ読取り
４              拡張ＤＭＡ読取り
３              検証セクタ読取り
３              拡張検証セクタ読取り
３              シーク
３              機能設定
３              休眠
４              ＤＭＡ書込み
４              拡張ＤＭＡ書込み
【００４６】
電力モードチェックコマンドは、ホストに、ＡＴＡ装置の現在の電力モードを判定させる。マイクロコードダウンロードコマンドは、ホストに、ＡＴＡ装置のマイクロコードを変更させる。エグゼクティブ装置診断コマンドは、ホストに、ＡＴＡ装置によって実施される診断テストを呼び出させる。キャッシュフラッシュコマンドは、ホストに、ＡＴＡ装置がその書込みキャッシュをフラッシュするよう要求させる。表には、このコマンドの２つのバージョンが含まれており、その拡張バージョンは、ＡＴＡ−６標準インターフェースをサポートする装置上で利用可能な４８ビットアドレス指定機能を表す。表３に示すコマンドの別の拡張バージョンについては、以下で別個には論じない。装置識別コマンドは、ホストがＡＴＡ装置に、装置によって提供される論理セクタ、シリンダおよびヘッドの数、装置によってサポートされるコマンド、装置によってサポートされる機能、および他の類似のパラメータを含むパラメータ情報を問い合わせることができるようにする。ＤＭＡ読取りコマンドは、ホストに、ＤＭＡデータ転送プロトコルを使って装置からデータを読み取らせ、一般に、大量のデータではずっと効率的である。検証セクタ読取りコマンドは、ホストが、ＡＴＡ装置に、ホスト内に格納されたデータの一部分を読み取り、装置から読み取られたデータをホストに転送せずにエラー条件が発生しているか否か判定するよう指図することができるようにする。シークコマンドは、ホストが、ＡＴＡ装置に、ホストが後続コマンドにおいて１つまたは複数の論理ブロックにアクセスし得ることを知らせて、ＡＴＡ装置に、その後の指定された１つまたは複数の論理ブロックへのアクセスを実行するためのヘッド位置決めを最適化させることができるようにする。機能設定コマンドは、ホストが、ＡＴＡ装置によって提供される機能をオンおよびオフにするために、装置内の様々なパラメータを変更できるようにする。休眠コマンドは、ホストが、ＡＴＡ装置に、スピンダウンし、後続のリセットコマンドを待つよう指図することができるようにする。ＤＭＡ書込みコマンドは、ホストが、一般に、大量のデータの場合にはずっと効率的であるＤＭＡデータ転送を使ってＡＴＡ装置にデータを書き込めるようにする。
【００４７】
ＦＣベースのディスクアレイ
中規模および大規模コンピュータシステムでは、データ格納要求は、一般に、組込みディスクドライブを含む、組込み大容量記憶装置の容量をはるかに上回る。かかるシステムでは、ローカルエリアネットワーク、光ファイバネットワーク、およびその他の高帯域幅通信媒体を介して中規模およびハイエンドコンピュータシステムにリンクされている、内蔵プロセッサを含む、安価なディスクの冗長アレイ（「ＲＡＩＤ」）などの、ハイエンドの大容量装置を用いるのが一般的になっている。ディスクアレイの設計および製造を円滑にするものとして、ディスク製造者は、ディスクアレイ内のディスクドライブをディスクアレイコントローラと直接相互接続するためのＦＣポートを含むディスクドライブを提供している。一般には、ＦＣ調停ループトポロジを用いて、ディスクアレイ内で個々のＦＣディスクドライブがディスクアレイコントローラと相互接続される。
【００４８】
図８Ａ〜Ｄに、ディスクアレイ内でのＦＣディスクの使用に関連するいくつかの問題を示す。図８Ａには、ディスクアレイの内部コンポーネントの比較的抽象的な表現が示されている。以下で論じる図８Ｂ〜Ｄおよび図９では、同じ図示規則を用いる。図８Ａで、ディスクアレイコントローラ８０２は、高帯域幅通信媒体８０４を介して、リモートコンピュータシステムおよびその他のリモートエンティティと相互接続されている。ディスクアレイコントローラは、１つまたは複数のプロセッサと、１つまたは複数の、一般に比較的大容量の電子メモリと、リモートコンピュータシステムにディスクアレイ内のディスクドライブへの比較的高水準の論理ユニットおよび論理ブロックのインターフェースを提供するために、ディスクアレイ制御ファームウェアおよびソフトウェアをディスクアレイコントローラ内で格納させ、実行させるその他のコンポーネントとを含む。図８Ａに示すように、ディスクアレイは、ディスクアレイコントローラ８０２と、いくつかのディスクドライブ８０６〜８１３とを含む。ＦＣディスクドライブは、ＦＣ調停ループ８１４を介してディスクアレイコントローラ８０２と相互接続されている。図８Ａに抽象的に示すようなＦＣベースのディスクアレイは、記憶媒体として標準的で容易に入手可能なＦＣディスク、相互接続のためのＦＣ調停ループ、およびディスクアレイコントローラ内の標準ＦＣコントローラを使って、比較的容易に設計され、製造される。ＦＣは、高速シリアル通信媒体であるため、ＦＣ調停ループ８１４は、ＦＣディスク８０６〜８１２とディスクアレイコントローラ８０２の間のデータ転送のために十分な帯域幅を提供する。
【００４９】
しかしながら、ＦＣディスクドライブなど、ＦＣ調停ループ内の各ＦＣノードにおいては、データが、ノードのＦＣポートを介して処理され、転送されるため、相当なノード遅延が生じる。図８Ａに、ノード遅延を、添え字付きの小文字「ｔ」でラベル付けされた短い矢印で示す。ノード遅延は、ＦＣ調停ループ内で累積され、ＦＣ調停ループ内のＦＣノードの数に比例する相当な累積ノード遅延をもたらす。
【００５０】
図８Ａに示すディスクアレイ実装形態に伴う第２の問題が、ＦＣ調停ループが、潜在的な単一障害点を表すことである。一般に、ＦＣディスクは、機能しないＦＣディスクを調停ループから隔離するために、ポートバイパス回路を用いて増強されてもよいが、ポートバイパス回路だけでは防止できないいくつかの異なる障害モードがある。
【００５１】
第３の問題は、ノードを調停ループにリンクさせるＦＣポートに障害が発生したときに生じる。かかる場合には、複雑で、信頼できない技法を用いて、障害が発生したＦＣポートを識別し、隔離しようとしなければならない。一般に、障害が発生したＦＣポートは、ループトポロジを分断し、ディスクアレイコントローラは、障害が発生したノードを隔離するために、順次、各ノードを迂回するポートバイパス回路をアクティブ化しようとしなければならない。しかしながら、この技法では、様々な障害モードの下で、障害が発生したノードを識別できないこともある。よって、ノード障害は、調停ループトポロジに伴う深刻な問題である。
【００５２】
図８Ｂに、潜在的な単一障害点問題への解決策を示す。図８Ｂに示すように、ディスクアレイコントローラ８０２は、２つの別々の、独立のＦＣ調停ループ８１４および８１６を介してＦＣディスク８０６〜８１３と相互接続されている。２つの別々のＦＣ調停ループを使用すれば、単一障害点問題は、おおむね除去される。しかしながら、ノード遅延問題は、２つのＦＣ調停ループの使用によっては改善されない。しかも、各ＦＣディスクが２つの別々のＦＣポートを含まなければならないため、個々のＦＣディスクは、むしろより複雑でより高価になる。最後に、障害発生ポートの識別および隔離の問題には、部分的にしか対処されない。なぜなら、２つの調停ループの一方を分断するノード障害の場合、他方の調停ループは機能し続けるが、もはや通信媒体における２倍の冗長性がなくなるからである。２倍の冗長性を復元するには、ディスクアレイコントローラは、依然として、障害が発生したノードを識別し、隔離しようとする必要があり、前述のように、多くの障害モードは、容易に識別し、隔離することができない。
【００５３】
図８Ｃに、ＦＣベースのディスクアレイの実装形態に伴う別の問題を示す。一般に、ますます大量の利用可能記憶空間がディスクアレイに要求されると、結果として、より多数の個別ＦＣディスクが追加されることになる。しかしながら、追加ディスクを含めることは、ノード遅延問題を悪化させ、また、前述のように、単一のＦＣ調停ループは、最大で１２７ノードまでしか含むことができない。この最大ノード問題を解決するために、さらなる独立ＦＣ調停ループがディスクアレイに追加される。図８Ｄに、第１のＦＣディスクの組８１８が２つの別々のＦＣ調停ループ８１４および８１６を介してＦＣコントローラ８０２と相互接続されており、第２のＦＣディスクの組８２０が、第２のＦＣ調停ループ対８２２および８２４を介してディスクアレイコントローラ８０２と相互接続されている、より大容量のディスクアレイを示す。ＦＣディスクの各組８１８および８２０をシェルフといい、一般に、冗長電源システム、冗長制御パス、およびディスクアレイ全体の耐障害性および高可用性に貢献するその他の機構を備える別々の筐体に含まれる。しかしながら、各シェフルの追加は、ディスクアレイコントローラ８０２内のＦＣコントローラとＦＣポートの数を増加させる。また、各別々のＦＣ調停ループが、そのＦＣ調停ループ内に含まれるＦＣノードの累積ノード遅延を被ることにも留意されたい。よって、ディスクアレイの設計者、製造者、およびユーザは、ＦＣベースのディスクアレイ内でディスクアレイコントローラとＦＣディスクとを相互接続する、より柔軟で、より費用効果的で、より効率のよい方法の必要性を認識している。加えて、ディスクアレイの設計者、製造者、およびユーザは、ポート障害およびその他の通信およびコンポーネント障害の、より容易で、より信頼性の高い識別を可能にする、ＦＣベースのディスクアレイ内でディスクアレイコントローラとＦＣディスクとを相互接続する方法の必要性も認識している。
【発明の開示】
【発明が解決しようとする課題】
【００５４】
ディスクアレイ内でディスクアレイコントローラとディスクとを相互接続する、効率のよい方法に対する必要性がある。
【課題を解決するための手段】
【００５５】
本発明の一実施形態は、パス制御カード、および、任意で、他のストレージシェルフ・ルータと組み合わせて、ストレージシェルフまたはディスクアレイ内のＳＡＴＡディスクを、ＦＣ調停ループなどの高帯域幅通信媒体と相互接続するのに使用されるストレージシェルフ・ルータを実施する集積回路である。２、４、６、または８以上のストレージシェルフ・ルータがストレージシェルフ内で使用されており、ストレージシェルフ・ルータと、ディスクドライブと、外部通信媒体の間の相互接続が適正に設計され、構成されているとき、結果として生じるストレージシェルフは、ディスクアレイに、または他のタイプの電子装置に含まれ得る別々の高可用性コンポーネントを構成する。ストレージシェルフ・ルータは、ストレージシェルフ・ルータが、多種多様なディスクドライブのいずれかにインターフェースし、それを管理することを可能にするディスクドライブ適合層を特徴として備える。ディスクドライブ適合層は、ディスクプロファイル表および関連付けられたファームウェア論理を含む。
【発明を実施するための最良の形態】
【００５６】
本発明の一実施形態は、ストレージシェルフルータの集積回路実装形態である。この実装形態では、ディスクアレイまたはその他の大規模な、別々に制御される大容量記憶装置のストレージシェルフ内において、ストレージシェルフ内のディスクドライブを、高帯域幅通信媒体と相互接続するために、単独で、または組み合わせて用いることができる。高帯域幅通信媒体は、さらに、ディスクアレイコントローラ、または類似の高性能大容量記憶装置のコントローラを有するストレージシェルフを相互接続する。また、前述の実施形態は、ディスクドライブと、１つまたは複数のストレージシェルフ・ルータの間の冗長通信リンクを提供するパス制御カードも含む。図８Ａ〜Ｄを参照して前述したように、ディスクアレイは、現在、ストレージシェルフ内においてＦＣ互換ディスクドライブを用いることができ、各ＦＣ互換ディスクドライブは、ＦＣ互換ディスクドライブをディスクアレイコントローラと相互接続する１つまたは２つのＦＣ調停ループ、あるいはその他のＦＣファブリックトポロジ上のＦＣノードとして働く。これに対して、本発明の一実施形態を一部表すストレージシェルフ・ルータは、ポイントツーポイントシリアル通信媒体によってストレージシェルフ内の各ディスクドライブに直接接続され、１つまたは複数の、ファイバチャネル調停ループなどの高帯域幅通信媒体を介してディスクアレイコントローラと相互接続された仲介通信ハブとして働く。
【００５７】
以下の、（１）概要、（２）ストレージシェルフ内部トポロジ、（３）パス制御カード概要、（４）ストレージシェルフ・ルータ概要、（５）ストレージシェルフインターフェース、（６）ストレージシェルフ・ルータ実装形態、および（７）ストレージシェルフ・ルータ経路指定層を含む各小節では、本発明の一実施形態を詳細に説明する。加えて、コンピュータプログラム付録を２枚のコンパクトディスクで提供し、参照によりこれを本明細書に組み込むものとする。このコンピュータプログラム付録は、経路指定層論理を指定するＲＴＬコード、ストレージシェルフ・ルータ実装形態のＣ言語モデル、および５章からなるストレージシェルフ・ルータ実装形態の参照マニュアルを含む。２枚のコンパクトディスクのそれぞれに含まれるファイルを以下に示す。
【００５８】
ＲＴＬ経路指定層仕様
ファイル名 ファイルサイズ 作成日時
rl            45KB                1/3/2003  11:25 AM
rl_router    145KB                12/4/2002  10:48 AM
rl_rt        20KB                  1/3/2003  11:25 AM
rl_rt_ert    86KB                10/8/2002  6:21 PM
rl_rt_irt    168KB                12/3/2002  6:31 PM
rl_rt_itt    12KB                  1/3/2003  11:26 AM
rl_rt_lpt    16KB                  12/3/2002  6:31 PM
Ｃ言語モデル
ファイル名 ファイルサイズ 作成日時
sim1216.c    55KB                9/5/2002  1:43  AM
参照マニュアル
ファイル名 ファイルサイズ 作成日時
chaps1_5      1,881KB            1/13/2003  11:36  AM
【００５９】
概要
図９に、図８Ａ〜Ｄに用いられている図示規則を使って、本発明の一実施形態を表すストレージシェルフ・ルータを抽象的に示す。図９では、ディスクアレイコントローラ９０２が、ＬＡＮまたは光ファイバ通信媒体９０４を介して１つまたは複数のリモートコンピュータシステムにリンクされている。ディスクアレイコントローラ９０２は、ＦＣ調停ループ９０８を介してストレージシェルフ・ルータ９０６と相互接続されている。ストレージシェルフ・ルータ９０６は、相互接続９１８などの、別々のポイントツーポイント相互接続を介して、ストレージシェルフ９１０〜９１７内のディスクドライブのそれぞれと直接相互接続されている。図９に抽象的に示す実装形態を、図８Ａ〜Ｄに示す実装形態と比べると、図８Ａ〜Ｄに示す実装形態で識別された問題が、ストレージシェルフ・ルータベースの実装形態によって対処されていることがすぐに明らかになる。第１に、図９に示す実装形態のＦＣ調停ループ内の唯一のノード遅延は、単一のＦＣ調停ループノードとして働くストレージシェルフ・ルータによって導入されるものである。これに対して、図８Ａに示すように、各ＦＣ互換ディスクドライブは、別々のノード遅延を導入し、ＦＣ調停ループ８１４上の累積ノード遅延は、ＦＣ調停ループによって相互接続されるＦＣ互換ディスクドライブの数に比例する。ストレージシェルフ・ルータは、ＦＣポートと、ストレージシェルフ・ルータを個々のディスクドライブにリンクさせる内部シリアル相互接続との間の高度に並列で、効率のよいデータ転送を円滑にするように設計されている。したがって、ストレージシェルフ・ルータをＦＣ調停ループ９０８と相互接続する搭載ＦＣコントローラによって導入される不可避のノード遅延以外には、ストレージシェルフ・ルータによって、実質的な遅延も、累積遅延も導入されない。
【００６０】
第２に、ストレージシェルフ・ルータを使用すれば、はるかに多数のディスクドライブが、ディスクアレイコントローラと相互接続され得る。図９に示す実装形態で用いられているＦＣ調停ループ９０８は、ディスクアレイコントローラとストレージシェルフ・ルータの２つのノードだけしか含まない。各ストレージシェルフ・ルータが８台のディスクドライブをＦＣ調停ループと相互接続させることができると仮定すると、単一のＦＣ調停ループを使って、１２５のストレージシェルフ・ルータを、あるいは、通常、ＦＣファブリック（共用ループ）用に予約されているアドレスがストレージシェルフ・ルータによって使用される場合には、１２６のストレージシェルフ・ルータをディスクアレイコントローラと相互接続することができ、それによって、８０００台以上の個別ディスクドライブが、単一のＦＣ調停ループを介してディスクアレイコントローラと相互接続される。前述のように、高可用性が必要とされないときには、１６０００台以上の個別ディスクドライブが、単一のＦＣ調停ループを介してディスクアレイコントローラと相互接続されてもよい。これに対して、図８Ｃに示すように、個別のＦＣ互換ディスクドライブがそれぞれ別個のＦＣノードとして機能するときには、単一のＦＣ調停ループを介して、たった１２５台のディスクドライブ、または、通常、ＦＣファブリック（共用ループ）用に予約されているアドレスがディスクドライブによって使用される場合には、１２６台のディスクドライブだけしかディスクアレイコントローラと相互接続され得ない。
【００６１】
第３に、ストレージシェルフ・ルータを用いたストレージシェルフ内の障害を識別し、隔離する方がはるかに容易である。従来の、１ＦＣ調停ループノード当たり１ディスクドライブの実装形態では、いくつかの障害モードの下において、障害が発生したＦＣポートまたはＦＣリンクを識別するのが極めて難しく、隔離するのが困難なことがあり、他方、これに対して、ポイントツーポイントリンクを介してストレージシェルフ・ルータと相互接続されたディスクドライブに関連付けられる問題は、比較的容易に識別され、障害が発生したポートまたはリンクが容易に隔離される。
【００６２】
各ディスクドライブは、いくつかの現在利用可能な内部相互接続技術のいずれかを介してストレージシェルフ・ルータ９０６に接続されている。一実施形態では、ＳＡＴＡ互換相互接続を用いて、ＳＡＴＡディスクドライブが、ストレージシェルフ・ルータと相互接続されている。ストレージシェルフ・ルータは、ディスクアレイコントローラから受け取られた各ＦＣＰコマンドを、ストレージシェルフ・ルータがさらに適切なＳＡＴＡディスクドライブに送る、１つまたは複数の等価のＡＴＡインターフェースコマンドに変換する論理を含む。図９に示すストレージシェルフ・ルータは、単一のＦＣ調停ループ９０８を介してディスクアレイコントローラと相互接続されているが、以下で論じるように、ストレージシェルフ・ルータは、通常、２つのＦＣ調停ループまたはその他のＦＣファブリックトポロジを介してディスクアレイコントローラと相互接続される。
【００６３】
図１０に、コンピュータとディスクアレイが階層的に相互接続されたシステム内で、本発明の一実施形態を一部表すストレージシェルフ・ルータによって占められる位置を示す。図１０では、２台のサーバコンピュータ１００２および１００４が相互に接続されており、様々なＦＣファブリックトポロジのいずれかなどの高帯域幅通信媒体１００８を介して、ディスクアレイコントローラ１００６とも相互接続されている。ディスクアレイコントローラ１００６は、２つの別々のＦＣ調停ループを介してストレージシェルフ１０１０と相互接続されている。第１のＦＣ調停ループ１０１２は、ディスクアレイコントローラ１００６を、第１のストレージシェルフ・ルータ１０１４と直接相互接続する。第２のＦＣ調停ループ１０１６は、ディスクアレイコントローラ１００６を、第２のストレージシェルフ・ルータ１０１８と直接相互接続する。２つのストレージシェルフ・ルータ１０１４および１０１８は、第１のＦＣ調停ループ１０１２の一部として、第１のストレージシェルフ・ルータ１０１４から第２のストレージシェルフ・ルータ１０１８にＦＣフレームを搬送し、第２のＦＣ調停ループ１０１６の一部として、第２のストレージシェルフ・ルータ１０１８と第１のストレージシェルフ・ルータ１０１４との間でＦＣフレームを搬送する、内部ポイントツーポイントＦＣ相互接続１０２０と相互接続されている。加えて、内部ＦＣリンク１０２０は、ストレージシェルフ１０１０の内部で生成され、内部で消費される、内部管理および通信に使用されるＦＣフレームを搬送してもよい。以下で論じるように、一般に、ディスクアレイをストレージシェルフと相互接続する２つのＦＣ調停ループを、「Ｘループ」または「Ｘファブリック」および「Ｙループ」または「Ｙファブリック」といい、内部ＦＣ１０２０上で、内部で生成され、内部で消費される管理ＦＣフレームの交換を、Ｓファブリックという。ストレージシェルフ１０１０は、図１０で、４台のディスクドライブ１０２２〜１０２５と、明示的に図示しない１２台のディスクドライブを示す省略記号１０２６によって表す１６台のＳＡＴＡディスクドライブを含む。各ストレージシェルフ・ルータ１０１４、１０１８は、シリアルリンク１０２８などのポイントツーポイントシリアルリンクを介して各ＳＡＴＡディスクドライブと相互接続されてい
る。
【００６４】
図１０に示すように、ディスクアレイコントローラ１００６およびストレージシェルフ１０１０を含むディスクアレイ内の相互通信経路のそれぞれには、少なくとも２倍の冗長性がある。さらに、ストレージシェルフ・ルータにも２倍の冗長性がある。任意の単一のリンク、または１個のストレージシェルフ・ルータに障害が発生した場合、残りのリンクおよび残りのストレージシェルフ・ルータは、ディスクアレイコントローラ１００６と、ストレージシェルフ１０１０内の１６台のＳＡＴＡディスクドライブの間の完全な接続を維持するために、障害が発生したリンクまたは障害が発生したストレージシェルフ・ルータによって以前に担われていた作業負荷を引き受けることができる。加えて、ディスクアレイコントローラは、ＳＡＴＡディスクドライブのうちの１つまたは複数に障害が発生したとしても回復および完全稼動を可能にするように、様々なレベルのＲＡＩＤ記憶技術など、いくつかの異なる高可用性データ記憶方式のいずれかを実施してもよい。ＲＡＩＤ技術は、例えば、格納データの２つ以上の完全なコピーを、２台以上のディスクドライブに、別々かつ完全に復元することができる。サーバは、組み込みの冗長性およびフェイルオーバを有する、ＦＣファブリックなどの通信媒体を介して、ディスクアレイコントローラ１００６と、ストレージシェルフ１０１０など１つまたは複数のストレージシェルフとを備えるディスクアレイと相互に通信する。ディスクアレイコントローラは、サーバコンピュータ１００２および１００４が、ストレージシェルフ内の各ディスクドライブ内のデータの実際の場所も考慮せず、データの冗長コピーも、ディスクアレイコントローラ１００６によって提供されるその他の機能および機構も考慮せずに、ファイルおよびその他のデータオブジェクトを格納し、ディスクアレイから取り出すことを可能にする論理ユニット（「ＬＵＮ」）および論理ブロックアドレス（「ＬＢＡ」）インターフェースを提示する。ディスクアレイコントローラ１００６は、さらに、ストレージシェルフ・ルータ１０１４および１０１８によって提供されるインターフェースを介して、ストレージシェルフ１０１０にインターフェースする。ディスクアレイコントローラ１００６は、ＦＣＰプロトコルを介して、別個のＦＣ互換ディスクドライブのように見えるものにＦＣエクスチェン
ジを送り、そこからＦＣエクスチェンジを受け取る。しかしながら、ディスクアレイコントローラに対しては透過的に、ディスクシェルフルータ１０１４および１０１８は、ＳＡＴＡディスクドライブとコマンドおよびデータを交換するために、ＦＣコマンドをＡＴＡコマンドに変換する。
【００６５】
図１１〜１２に、本発明の一実施形態を表すストレージシェルフ・ルータを使用して実施されるストレージシェルフのコンポーネントの透視図を示す。図１１では、ルータカード上に搭載された２つのストレージシェルフ・ルータ１１０２および１１０４が、受動ミッドプレーン１１０６を介して、ＳＡＴＡディスクドライブ１１０８など１６台のＳＡＴＡディスクドライブと相互接続されている。各ＳＡＴＡディスクドライブキャリアは、１台のＳＡＴＡディスクドライブと、ＳＡＴＡディスクドライブを、受動ミッドプレーンを通って２つのストレージシェルフ・ルータ１１０２および１１０４のそれぞれに至る２つの別々のシリアルリンクと相互接続するパス制御カード１１１０とを含む。通常、ＳＡＴＡディスクドライブは、外部システムへの単一のシリアル接続だけをサポートする。ストレージシェルフ内で完全に冗長な相互接続を提供するには、パス制御カード１１１０が必要である。加えて、ストレージシェルフ１１００は、冗長なファン１１１２および１１４と、冗長な電源１１１６および１１１８も含む。図１２に、それぞれが２つのパス制御カードと２台のＳＡＴＡディスクドライブを含むデュアルＳＡＴＡディスクドライブキャリアを備える、図１１に示すものと類似のストレージシェルフ実装形態を示す。ディスクドライブの台数の増加により、高可用性用途に必要な２倍の冗長性を提供するために、それに対応してストレージシェルフ・ルータの数も２倍にする必要がある。
【００６６】
ストレージシェルフ内部トポロジ
図１３Ａ〜Ｃに、本発明の一実施形態を一部表すストレージシェルフ・ルータを使ったストレージシェルフの３つの異なる実装形態を示す。図１３Ａでは、単一のストレージシェルフ・ルータ１３０２が、ＦＣ調停ループ１３２０を介して、１６台のＳＡＴＡディスクドライブ１３０４〜１３１９を、ディスクアレイコントローラと相互接続している。一実施形態では、ストレージシェルフ・ルータは、最大１６のシリアルリンクを提供し、最大１６台までのＳＡＴＡディスクドライブの相互接続をサポートすることができる。図１３Ａに示すストレージシェルフは、冗長なストレージシェルフ・ルータも、１つまたは複数のルータと各ＳＡＴＡディスクドライブの間の冗長なシリアルリンクも含まないため、高度な可用性はない。
【００６７】
これに対して、図１３Ｂに示すストレージシェルフ実装形態は、高度に可用性がある。このストレージシェルフでは、２つのストレージシェルフ・ルータ１３２２および１３２４が、ポイントツーポイントシリアルリンクを介して、１６台のＳＡＴＡディスクドライブ１３２６〜１３４１のそれぞれにリンクされている。通常の動作時には、ストレージシェルフ・ルータ１３２２がＳＡＴＡディスクドライブの半分１３２６〜１３３３をディスクアレイコントローラと相互接続し、ストレージシェルフ・ルータ１３２４がＳＡＴＡディスクドライブの残り半分１３３４〜１３４１をディスクアレイコントローラと相互接続する。図１３Ｂでは、シリアルシンク１３４２など、通常の動作時に用いられる内部ポイントツーポイントシリアルリンクが太線で示されており、これらを「１次リンク」と称する。内部シリアルリンク１３４４など、通常の動作時には使用されない内部シリアルリンクを、「２次リンク」と称する。動作時に１次リンクに障害が発生した場合、障害が発生した１次リンク、およびストレージシェルフ・ルータに接続されている他のすべての１次リンクは、障害が発生した１次リンクが接続されているストレージシェルフ・ルータを交換することを含めて、障害が発生した１次リンクを修理し、または交換することができるように、障害が発生した１次リンクが接続されているストレージシェルフ・ルータから別のストレージシェルフ・ルータに切り換えられてもよい。前述のように、２つのストレージシェルフ・ルータは、それぞれ、ストレージシェルフをディスクアレイコントローラと相互接続している２つのＦＣ調停ループの一方のＦＣノードとして働く。１つのＦＣ調停ループに障害が発生した場合、通常はその障害が発生したＦＣ調停ループを通るはずのデータ転送が、残りの、動作可能なＦＣ調停ループに切り換えられる。同様に、ストレージシェルフ・ルータに障害が発生した場合には、他方のストレージシェルフ・ルータが、ストレージシェルフの完全な動作制御を引き受けることができる。代替の実施形態では、１次パス障害が、ストレージシェルフ・ルータ全体を切り換えず、個別に切り換えられてもよい。いくつかの実施形態および状況では、１次パスフェイルオーバが、ストレージシェルフ・ルータ内で実行されてもよく、別の実施形態および状況では、１次パスフェイルオ
ーバは、１次パスの第２のストレージシェルフ・ルータへの切り換えることを伴ってもよい。
【００６８】
図１３Ｃに、３２ＡＴＡディスク高可用性ストレージシェルフの実装を示す。図１３Ｃに示すように、３２ＡＴＡディスクストレージシェルフは、４つのストレージシェルフ・ルータ１３５０、１３５２、１３５４および１３５６を含む。各ストレージシェルフ・ルータは、通常の動作時、８台のＳＡＴＡディスクを、ストレージシェルフをディスクアレイコントローラと相互接続する２つのＦＣ調停ループと相互接続している。各ストレージシェルフ・ルータは、フェイルオーバが必要とされる場合に、ストレージシェルフ・ルータが、合計１６台のＳＡＴＡディスクドライブを２つのＦＣ調停ループと相互接続できるように、２次リンクを介して、８台の別のＳＡＴＡディスクドライブと相互接続されている。４ストレージシェルフ・ルータ構成では、ストレージシェルフ・ルータ１３５０が、一方のＦＣ調停ループに関して４つのストレージシェルフ・ルータすべてのＦＣノードとして働き、ストレージシェルフ・ルータ１３５６が、第２のＦＣ調停ループに関して４つのストレージシェルフ・ルータすべてのためのＦＣノードとして働くことに留意されたい。図１３Ｃに示すように、ストレージシェルフ・ルータ１３５０がそのＦＣノードとして働く第１のＦＣ調停ループは、ＸループまたはＸファブリックとみなされ、ストレージシェルフ・ルータ１３５６がそのＦＣノードとして働く他方のＦＣ調停ループは、ＹファブリックまたはＹループとみなされる。ディスクアレイコントローラからＸループを介してストレージシェルフ内のＳＡＴＡディスクに送られたＦＣフレームは、まず、ストレージシェルフ・ルータ１３５０によって受け取られる。ＦＣフレームは、通常動作の場合には、１次リンクを介してストレージシェルフ・ルータ１３５０と相互接続されているＳＡＴＡディスクに宛先指定され、または内部ＦＣリンク１３５８を介して、ストレージシェルフ・ルータ１３５２に宛先指定され、ストレージシェルフ・ルータ１３５２は、さらに、ＦＣフレームを、１次リンクを介してＳＡＴＡディスクに送られる１つまたは複数のＡＴＡコマンドに変換し、またはＦＣフレームダウンストリームをストレージシェルフ・ルータ１３５４に転送する。応答ＦＣフレームは、Ｘファブリックを介してストレージシェルフ・ルータ１３５６によって送られる場合、内部ＦＣリンク１３６０、１３６２および１
３５８を通り、ストレージシェルフ・ルータ１３５４および１３５２を経由して、ストレージシェルフ・ルータ１３５０へと転送されなければならず、そこから、応答フレームは、外部Ｘファブリックに送られ得る。前述の実施形態では、高可用性ストレージシェルフが、少なくとも２つのストレージシェルフ・ルータを含んでいる必要があり、ストレージシェルフ内の８台のＳＡＴＡディスクの組ごとに、１つのストレージシェルフ・ルータを含んでいる必要がある。
【００６９】
パス制御カード概要
前述のように、２つのコンポーネントが、ＦＣ調停ループ上で単一のスロットまたはノードだけを使用してＦＣ調停ループまたはその他の高帯域幅通信媒体と相互接続され得る、ＳＡＴＡディスクまたはその他の安価なディスクドライブを用いた、高可用性ストレージシェルフの構築を容易にする。一方のコンポーネントはストレージシェルフ・ルータであり、他方のコンポーネントは、ＡＴＡドライブの２つのストレージシェルフ・ルータへの冗長相互接続を提供するパス制御カードである。図１４Ａ〜Ｂに、ＡＴＡディスクドライブを２つのストレージシェルフ・ルータと相互接続するのに適したパス制御カードの２つの実装形態を示す。図１４Ａに示す実装形態は、パラレルＡＴＡディスクドライブへのパラレルコネクタを提供し、図１４Ｂに示す実装形態は、ＳＡＴＡディスクドライブへのシリアル接続を提供する。前述のように、ＳＡＴＡディスクドライブは、より高速なデータ転送速度を実現するため、図１４Ｂに示す実装形態の方が好ましく、以下では、この実装形態について論じる。
【００７０】
パス制御カードは、１次シリアルリンク１４０４および管理リンク１４０６の第１のストレージシェルフ・ルータへの外部接続のためのＳＣＡ−２コネクタ１４０２と、２次シリアルリンク１４０８および管理リンク１４１０の第２のストレージシェルフ・ルータへの外部接続のためのＳＣＡ−２コネクタ１４０２とを提供する。１次リンクおよび２次リンクは、シリアルリンク１４１４を介してＳＡＴＡディスクドライブ１４１６と相互接続されている２：１マルチプレクサによって多重化される。管理リンク１４０６および１４１０は、ディスクドライブ環境の温度を監視し、ディスクドライブキャリア内のファンの動作を制御し、ディスクドライブ筐体の外部から見える様々な発光ダイオード（「ＬＥＤ」）信号灯を作動させるルーチンなどの管理サービスルーチンを実行するマイクロコントローラ１４１８に入力される。本質的に、通常の動作下では、ＡＴＡコマンドおよびデータが、１次リンクを介してパス制御カードによって受け取られ、２：１マルチプレクサを介して、ＳＡＴＡディスクドライブ１４１６に入力されるシリアルリンク１４１４に転送される。ストレージシェルフ内で、１次リンクを介してパス制御カードに接続されているデフォルトのストレージシェルフ・ルータの動作を停止させるフェイルオーバが発生した場合、第２のストレージシェルフ・ルータが、２次リンクを介したＡＴＡコマンドおよびデータの転送を引き受け、ＡＴＡコマンドおよびデータは、さらに、２：１マルチプレクサを介して、ＳＡＴＡディスクドライブ１４１６に直接入力されるシリアルリンク１４１４に渡される。
【００７１】
パス制御カードは、２つの別々のストレージシェルフ・ルータとの冗長相互接続を提供し、よって、高可用性ストレージシェルフで必要とされる２倍の冗長性を提供するのに必要である。ストレージシェルフ・ルータは、異なるタイプの通信媒体間の相互接続と、異なるタイプの通信媒体間のコマンドおよびデータパケットの変換とを実現する。加えて、ストレージシェルフ・ルータは、内部コンポーネント障害の自動検出と、冗長リンクおよび障害が発生していないコンポーネントを使って、ディスクドライブのディスクアレイコントローラとの完全な相互接続を復元するのに適したフェイルオーバ計画の実行のためのフェイルオーバ論理を含む。
【００７２】
ストレージシェルフ・ルータ概要
図１５は、ストレージシェルフ・ルータの主要な機能コンポーネントを示すハイレベルブロック図である。ストレージシェルフ・ルータ１５００は、２つのＦＣポート１５０２および１５０４と、経路指定層１５０６と、ＦＣＰ層１５０８と、グローバル共用メモリスイッチ１５１０と、１６個のＳＡＴＡポート１５１２〜１５１８と、ＣＰＵ複合体１５２０と、外部フラッシュメモリ１５１４とを含む。ストレージシェルフ内で相互接続されているストレージシェルフ・ルータの組内でのストレージシェルフ・ルータの論理的位置に応じて、ＦＣポートの一方または両方が、外部ＦＣ調停ループまたはその他のＦＣファブリックに接続されていてもよく、ＦＣポートの一方または両方が、内部ポイントツーポイントＦＣリンクに接続されていてもよい。一般に、ＦＣポートの一方は、ストレージシェルフ・ルータの組内でのストレージシェルフ・ルータの論理的、物理的位置に関係なく、ストレージシェルフ・ルータを、直接的または間接的に、第１のＦＣ調停ループとリンクさせるとみなされてもよく、他方のＦＣポートは、ストレージシェルフ・ルータを、第２のＦＣ調停ループと直接的または間接的に相互接続するものとみなされ得る。
【００７３】
経路指定層１５０６は、以下で論じる、メモリに格納されているいくつかの経路指定表と、両方のＦＣポートからの入力ＦＣフレームをどこに転送すべきか決定する経路指定論理とを備える。ＦＣＰ層１５０８は、様々なタイプの入力および出力ＦＣフレームを処理する制御論理と、以下で説明するグローバル共用メモリスイッチへのインターフェースと、ＣＰＵ複合体上で実行されるファームウェアルーチンが、メモリ内のＦＣエクスチェンジコンテキストをセットアップして、共にＦＣＰエクスチェンジを構成するＦＣフレームの交換を円滑にするためにＦＣＰ＿ＣＭＮＤフレームを処理することを可能にするＣＰＵ複合体１５１２へのインターフェースとを備える。
【００７４】
グローバル共用メモリスイッチ１５１０は、ＦＣＰ層とＳＡＴＡポート１５１２〜１５１８の間でデータを受け渡すための、極めて高速な時分割多重データ交換設備である。グローバル共用メモリスイッチ（「ＧＳＭＳ」）１５１０は、仮想待ち行列機構を用いて、ＦＣＰ層と個々のＳＡＴＡポートの間のデータ転送を円滑にさせる仮想待ち行列の割り振りを可能にする。ＧＳＭＳは、本質的に、ＦＣＰ層と１６個のＳＡＴＡポートの間の高度に並列なデータフローを円滑にし、ＦＣＰ層とＳＡＴＡポートの間の同期境界のトラバーサルを円滑にする同期機構を含む、非常に高い帯域幅を有する高速な双方向マルチプレクサである。
【００７５】
ＣＰＵ複合体１５１２は、ＦＣエクスチェンジのためのコンテキスト情報を初期設定して維持し、ＦＣコマンドをＡＴＡ等価コマンドに変換するためにＦＣＰコマンドを処理すると共に、ＳＡＴＡディスクドライブおよびストレージシェルフ・ルータの内部コンポーネントの動作を監視し、問題が検出されたときに、洗練されたフェイルオーバ戦略を実行する、様々なファームウェアルーチンを実行する。フェイルオーバ戦略を実行するために、ＣＰＵ複合体は、ストレージシェルフ・ルータのその他の論理コンポーネントと相互接続されている。外部フラッシュメモリ１５１４は、構成パラメータおよびファームウェアルーチンを格納している。ストレージシェルフ・ルータは、２つのＦＣポート１５０２および１５０４、１６個のＳＡＴＡポート１５１２〜１５１８、１６個のシリアル管理リンク１５２０、Ｉ２Ｃバス１５２２、およびコンソール１５２４へのリンクを介して外部コンポーネントと相互接続されていることに留意されたい。
【００７６】
ストレージシェルフインターフェース
前述のように、ストレージシェルフ・ルータベースのストレージシェルフ実装形態は、現在の１ディスクドライブ１ＦＣノードの実装形態よりも、多くの点で、より大きな柔軟性を提供する。ストレージシェルフ・ルータは、それが接続されているディスクアレイコントローラへの多種多様な論理インターフェースのいずれかを提供することができる。図１６Ａ〜Ｇに、本発明の一実施形態を一部表す１つまたは複数のストレージシェルフ・ルータを組み込んだ高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す。図１６Ａに、図８Ａ〜Ｄを参照して前述したような、ストレージシェルフの現在のＦＣ互換ディスクドライブ実装形態によって提供されるインターフェースを示す。図１６Ａでは、図１６Ａ〜Ｇ全体を通して使用する抽象図示規則を使用している。図１６Ａでは、各ディスクドライブ１６０２〜１６０５が、０から１９までの番号が付された一連のデータブロックとして論理的に表されている。当然ながら、実際のディスクドライブは、何十万から何百万もの論理ブロックを含むが、図１６Ａの各ディスクごとに示す２０個の論理ブロックは、多種多様なインターフェースを示すのに十分である。図１６Ａでは、各個別ディスクドライブ１６０２〜１６０５はＦＣ調停ループ上の別個のノードであり、したがって、各ディスクドライブが、図１６Ａで、それぞれ、「ＡＬ＿ＰＡ１」、「ＡＬ＿ＰＡ２」、「ＡＬ＿ＰＡ３」、「ＡＬ＿ＰＡ４」で表されている、別々のＦＣノードアドレス、すなわち調停ループ物理アドレス（「ＡＬ＿ＰＡ」）と関連付けられている。しかしながら、図８Ａ〜Ｄを参照して前述したような、現在のＦＣ調停ループディスクアレイ実装形態と異なり、図９に示すように、各ノードがポイントツーポイント接続を介して、ストレージシェルフ・ルータの補完ＳＡＴＡポートと相互接続されているため、ノードに関連付けられた累積ノード遅延が生じないことに留意されたい。よって、ディスクアレイコントローラは、ディスクドライブと関連付けられたＦＣアドレスを介して個々のディスクドライブ内の個々の論理ブロックにアクセスできる。場合によっては、所与のディスクドライブが、論理ブロックアドレス空間が、それぞれが異なるＬＵＮと関連付けられている別々の論理ブロックアドレス空間に区分されている論理ユニット（「
ＬＵＮ」）インターフェースを提供してもよい。しかしながら、この説明では、そこまでの複雑さに対応する必要はない。
【００７７】
図１６Ｂに、ストレージシェルフ・ルータを介してＦＣ調停ループと相互接続されている図１６Ａに示す４台のディスクドライブを含むストレージシェルフの第１の可能なインターフェースを示す。この第１のインターフェースでは、各ディスクドライブが別々のＦＣノードアドレスと関連付けられたままである。各ディスクドライブが、単一の論理ブロックアドレス空間を含む単一の論理ユニットであるとみなされる。以下では、このインターフェースを、本発明の一実施形態を一部表す１つまたは複数のストレージシェルフ・ルータを含むストレージシェルフの「透過モード」動作と称する。
【００７８】
ストレージシェルフによって提供される第２の可能なインターフェースを図１６Ｃに示す。この場合、４台のディスクドライブすべてが単一のＦＣ調停ループノードアドレス「ＡＬ＿ＰＡ１」と関連付けられている。各ディスクドライブは、異なる論理ユニットであるとみなされ、ディスクドライブ１６０２は論理ユニット０とみなされ、ディスクドライブ１６０３は論理ユニット１とみなされ、ディスクドライブ１６０４は論理ユニット２とみなされ、ディスクドライブ１６０５は論理ユニット３とみなされる。よって、ディスクアレイコントローラは、単一のＦＣノードアドレス、論理ユニット番号、および論理ユニット内の論理ブロックアドレスを介して、ストレージシェルフ内の４台のディスクドライブのいずれかの内の論理ブロックにもアクセスすることができる。
【００７９】
図１６Ｄに、仮想ストレージシェルフ内の４台のディスクドライブへの代替のインターフェースを示す。この場合、４台のディスクドライブすべてが、単一の論理ユニット内に含まれるとみなされる。４台のディスクドライブ内の各論理ブロックには、一意の論理ブロックアドレスが割り当てられる。よって、ディスクドライブ１６０２内の論理ブロック０〜１９は、引き続き論理ブロックアドレス０〜１９と関連付けられており、ディスクドライブ１６０３内の論理ブロック０〜１９は、今度は、論理ブロックアドレス２０〜３９と関連付けられている。以下では、このインターフェースを、図１６Ｃに示す純粋なＬＵＮベースのインターフェースに対して、純粋な論理ブロックアドレスインターフェースと称する。
【００８０】
図１６Ｅに、４台のディスクドライブを含む仮想ストレージシェルフによって提供される別の可能な論理インターフェースを示す。この場合、第１の２台のディスクドライブ１６０２および１６０３の組は、第１のＦＣノードアドレス「ＡＬ＿ＰＡ１」と関連付けられており、この２台のディスクドライブ１６０２および１６０３は、それぞれ、２つの異なるＬＵＮ番号、ＬＵＮ０およびＬＵＮ１と関連付けられている。同様に、第２のディスクドライブ１６０４および１６０５の対は、共に、第２のＦＣノードアドレス「ＡＬ＿ＰＡ２」と関連付けられており、この第２のディスクドライブ対は、それぞれは、異なるＬＵＮ番号と関連付けられている。
【００８１】
図１６Ｆに、別の可能なインターフェースを示す。この場合、第１の２台のディスクドライブ１６０２および１６０３は、第１のＦＣノードアドレスと関連付けられており、第２の２台のディスクドライブ１６０４および１６０５は、第２のＦＣノードアドレスと関連付けられている。しかしながら、この場合、各グループの２台のディスクドライブは、共に単一の論理ユニットに属しているものとみなされ、２台のディスクドライブ内の論理ブロックは、単一の論理ブロックアドレス空間を構成する論理ブロックアドレスと関連付けられている。
【００８２】
最後のインターフェースを図１６Ｇに示す。この場合、前述の２つのインターフェースの場合と同様に、単一のＦＣノードアドレスと関連付けられた各ディスクドライブ対が、単一の論理ブロックアドレス空間を有する単一のＬＵＮを構成するとみなされる。しかしながら、このインターフェースでは、論理ブロックアドレスが、２つのディスクドライブ間で交替する。例えば、ディスクドライブ１６０２および１６０３の対の場合、論理ブロックアドレス０が第１の論理ブロック１６１０および第１のディスクドライブ１６０２と関連付けられ、論理ブロックアドレス１が、第２のディスクドライブ１６０３内の第１のブロック１６１２と関連付けられている。
【００８３】
図１６Ａ〜Ｇは、単に、本発明の一実施形態の一部を表すストレージシェルフ・ルータによってディスクアレイコントローラに提供される多くの可能なインターフェースのいくつかを示しているにすぎない。アルゴリズムとして記述され得る、ＬＵＮおよび論理ブロックアドレスの、ディスクドライブおよびディスクドライブ内の物理ブロックへのほとんどすべてのマッピングが、ストレージシェルフ内のストレージシェルフ・ルータによって実施され得る。一般に、これらの多種多様な論理インターフェースは、（１）ディスクドライブが、別々の、ローカルで一意のＦＣノードアドレスと関連付けられる透過モード、（２）各ディスクドライブが、異なるＬＵＮ番号と関連付けられ、すべてのディスクドライブに、単一のＦＣノードアドレスを介してアクセスされる純粋なＬＵＮモード、（３）すべてのディスクドライブが、単一のＦＣノードアドレスおよび単一の論理ユニット番号と関連付けられる純粋な論理ブロックアドレス指定モード、および（４）ＬＵＮと論理ブロックアドレス空間区分の多種多様な組み合わせを用いる、ＬＵＮと論理ブロックアドレス指定の混合モードという、４タイプの一般的なインターフェースに区分され得る。
【００８４】
ストレージシェルフ・ルータ実装
図１７Ａに、本発明の一実施形態を表すストレージシェルフ・ルータ内のコマンドとデータの流れのハイレベル概要を示す。ストレージシェルフ・ルータは、１つまたは複数のＦＣ調停ループまたはその他のＦＣファブリック１７０２〜１７０３を介して、他のストレージシェルフ・ルータおよびディスクアレイコントローラと、データおよびコマンドのシリアルストリームを交換する。データのシリアルストリームは、ＦＣポート層１７０４に入り、そこで、下位ＦＣプロトコルレベルで処理される。データストリームから抽出されたＦＣフレームは、先入れ先出しバッファ（「ＦＩＦＯ」）１７０６〜１７０７に入力される。ＦＣフレームの最初の部分が利用可能になると、それらは、ＦＣフレームの後方部分がＦＩＦＯに入力されているときであっても、経路指定層１７０８およびＦＣＰ層１７１０によって処理される。よって、ＦＣフレームは、バッファ内で完全にアセンブルされ、内部メモリバッファから内部メモリバッファにコピーされることを必要とせずに、時間的にも計算処理上でも非常に効率よく処理される。
【００８５】
経路指定層１７０８は、ＦＣフレームヘッダから、ＦＣフレームがそのストレージルータに宛先指定されているか、それとも、ＦＣ調停ループまたはその他のＦＣファブリックによってストレージルータと相互接続されているリモートのストレージルータまたはその他のエンティティに宛先指定されているか判定する役割を果たす。リモートエンティティに宛先指定されているフレームは、ＦＣ調停ループまたはその他のＦＣファブリックを介してそれらのリモートエンティティに送るために、経路指定層によって、ＦＣポート層内の出力ＦＩＦＯ１７１２〜１７１３に宛先指定される。ストレージルータに宛先指定されているフレームは、経路指定層によってＦＣＰ層に宛先指定され、そこで、状態機械が、それらのストレージシェルフ・ルータ内での処置を制御する。
【００８６】
ストレージシェルフ・ルータによってそのためのコンテキストが確立されている、現在アクティブなＦＣエクスチェンジと関連付けられているＦＣＰ−ＤＡＴＡフレームは、極めて合理的に、効率のよく処理される。これらのフレームからのデータは、ＦＣＰ層によって、ＧＳＭＳ１７１８内の仮想待ち行列１７１４〜１７１６に宛先指定され、そこから、ＳＡＴＡポート層１７２２内の入力バッファ１７２０に転送される。ＳＡＴＡポート層から、データは、ＳＡＴＡパケット、またはデータフレーム情報構造（「ＤＡＴＡ  ＦＩＳ」）として、多くのＳＡＴＡリンク１７２４の１つを介して、ストレージシェルフ・ルータと相互接続されている何台かのＳＡＴＡディスクドライブ１７２６の１つに送られる。
【００８７】
ＦＣＰ−ＣＭＮＤフレームは、ＦＣＰ層によって異なる方法で処理される。これらのフレームは、ＦＣＰ層によって、ＦＣＰ層と、ストレージシェルフ・ルータ内のＣＰＵの間で共用されるメモリ１７２８に転送される。ＣＰＵは、内部に含まれるコマンドを処理するためにフレームにアクセスする。例えば、入力書込みコマンドが受け取られると、ファームウェアルーチンの制御下にあるストレージシェルフ・ルータＣＰＵは、そのコマンドがどのＳＡＴＡドライブに宛先指定されるか判定し、書込み操作のために、共用メモリに格納されるコンテキストを確立する必要がある。ＣＰＵは、データを受け取るようにＳＡＴＡドライブを準備し、一般にディスクアレイコントローラである、開始側へのＦＣＰ＿ＸＦＥＲ＿ＲＤＹフレームの返送を指定する必要がある。ＣＰＵによって準備され、共用メモリに格納されたコンテキストは、ＦＣＰ層が、ＣＰＵの介入なしで後続のＦＣＰ＿ＤＡＴＡメッセージを処理することができるようにし、書込み操作の実行を簡素化する。
【００８８】
ストレージシェルフ・ルータ内の様々な論理層は、一般に、逆方向に対称に機能する。ＡＴＡコマンドに対する応答が、ＳＡＴＡポート層１７２２によって、ＳＡＴＡリンクを介してＳＡＴＡディスクドライブから受け取られる。次いで、ＳＡＴＡポート層は、必要なときに、ファームウェア制御下にあるＣＰＵが、適切な処置および応答を実行することができるように、適切な信号およびメッセージを生成する。読取りコマンドに応答して、データがＳＡＴＡディスクからリモートエンティティに転送されると、ＣＰＵは、ＦＣＰ層による処理のために共用メモリに格納される適切な待ち行列エントリを生成する。ＦＣＰ層内の状態機械は、共用メモリから、ＦＣフレームヘッダテンプレートを獲得し、読取りコマンドと関連付けられた仮想待ち行列１７３２〜１７３３からのデータ転送を手配し、ＦＣフレームヘッダを作成し、一般にはディスクアレイコントローラである要求側リモートエンティティへの送出のために、ＳＡＴＡポート層から受け取られたＦＣフレームヘッダおよびデータの、仮想待ち行列を介したＦＣポート層の出力ＦＩＦＯ１７１２および１７１３への転送を調整する。
【００８９】
図１７Ａは、ストレージシェルフ・ルータ内のデータおよび制御フローの簡単な概要を提供するためのものである。ストレージシェルフ・ルータの内部コンポーネントを正確に描写するためのものではなく、ＦＣＰ＿ＣＭＮＤおよびＦＣＰ＿ＤＡＴＡフレームの受け取りと処理に関する論理層間の相互関係を示すことを目的としている。例えば、図１７Ａでは、ＧＳＭＳ層内にいくつかの仮想待ち行列が示されている。しかしながら、仮想待ち行列は、一般に、静的エンティティではなく、ストレージシェルフ・ルータの現在の状態により、必要に応じて動的に割り振られる。図１７Ａには、ただ１つのＳＡＴＡシリアル接続１７２４およびＳＡＴＡディスクドライブ１７２６だけしか示されていないが、前述のように、一実施形態では、各ストレージルータが、１６台の異なるＳＡＴＡディスクドライブに接続されていてもよい。
【００９０】
図１７Ｂ〜Ｆに、本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れに関するさらなる詳細を示す。図１７Ｂ〜Ｆの説明では、簡単にするために、様々な同一コンポーネント対の各コンポーネントを、両方とも個別的に参照することはしない。各図は、各コンポーネントの完全な明細を示すものではなく、データおよび制御情報が、ストレージシェルフ・ルータの様々なコンポーネントを介してどのように移動するかを示すためのものである。さらに、様々なコンポーネントの数も、ストレージシェルフ・ルータの多種多様な実装形態によって異なり得る。図１７Ｂに、ストレージシェルフ・ルータ内のＦＣＰ＿ＤＡＴＡフレームの初期フローを示す。ＦＣＰ＿ＤＡＴＡフレームは、まず、ＦＣポート１７３６によって受け取られて入力ＦＩＦＯ１７３７に書き込まれ、入力ＦＩＦＯにおいて十分なヘッダ情報が利用できるようになり次第、ＦＣＰ＿ＤＡＴＡフレームの残りがまだ入力ＦＩＦＯに書き込まれている間であっても、そこから、ルータ論理１７３８による処理が開始され得る。ＦＣポートは、ルータ論理が、フレームの処理を開始することができるように、ルータ論理に新しいフレームの到着を知らせる。ルータ論理１７３８は、経路指定表１７３９を用いて、フレームが、ストレージシェルフ・ルータに宛先指定されているか否か、あるいはフレームがリモートエンティティに宛先指定されているかどうか判定する。ＦＣＰ−ＤＡＴＡフレームがリモートエンティティに宛先指定されている場合、フレームは、リモートエンティティに送るために、ルータ論理によってＦＣポートに宛先指定される。また、ルータは、コンテキスト論理１７４０ともインターフェースを取って、ＦＣＰ−ＤＡＴＡフレームが属するＦＣエクスチェンジのために、ＣＰＵによってコンテキストが作成され、共用メモリに格納されているか否かも判定する。フレームのためのコンテキストが見つかった場合、ルータ論理は、フレームを、ＦＣＰインバウンドシーケンスマネージャ（「ＦＩＳＭ」）状態機械１７４１に宛先指定する。コンテキストが見つからなかった場合、フレームは、共用メモリに宛先指定され、続いて、ファームウェア制御下のＣＰＵによって、そこから抽出され、誤って受け取られたフレームとして処理される。
【００９１】
ＦＩＳＭ１７４１は、ＦＣＰデータ移動論理モジュール（「ＦＤＭ」）１７４２にＧＳＭＳチャネルを要求し、ＦＤＭは、さらに、ＧＳＭＳ１７４４内の仮想待ち行列（「ＶＱ」）１７４３にアクセスし、ＦＩＳＭを介してコンテキスト論理からＶＱを特徴付けるパラメータを受け取る。次いで、ＦＤＭは、フレーム内に含まれるデータをＶＱに書き込み、そこからデータが、ＦＤＭとＶＱへのアクセスを共用するＳＡＴＡポートによって、ＳＡＴＡディスクドライブに送るためにプルされる。ＳＡＴＡポートは、データがＶＱに書き込まれ始めるや否や、データをディスクドライブに転送し始めてもよいことに留意されたい。ＳＡＴＡポートは、データすべてが書き込まれるのを待たずに、データをディスクドライブに送り始めてもよい。データ転送操作に関連付けられたデータすべてがＶＱに書き込まれると、ＦＤＭは、コンテキストマネージャに、データが転送されていることを知らせ、コンテキストマネージャは、さらに、完了待ち行列マネージャ（「ＣＱＭ」）１７４５が、共用メモリ１７４７内の完了待ち行列１７４６に完了メッセージ（「ＣＭＳＧ」）を入れるよう要求する。ＣＱＭは、さらに、ＣＰＵデータムーバ（「ＣＰＵＤＭ」）１７４８が共用メモリにＣＭＳＧを書き込むよう要求する。
【００９２】
図１７Ｃに、ストレージシェルフ・ルータ内の、ＦＣ＿ＣＭＮＤフレームと、エラーに関連付けられるフレームの流れを示す。前述のように、フレームは、ＦＣポート１７３６によって受け取られ、ルータ論理１７３８によって、経路指定表１７３９を参照して、ストレージシェルフ・ルータ内の様々な宛先コンポーネントに宛先指定される。誤って受け取られたＦＣＰ＿ＣＭＮＤフレームおよびＦＣフレームは、ＣＰＵによる抽出および処理のために、共用メモリ１７４７に経路指定される。経路指定論理１７３８は、フレームバッファ待ち行列マネージャ（「ＦＢＱＭ」）１７６０がフレームを共用メモリ１７４７に書き込むよう求める要求を発行する。ＦＢＱＭは、ＣＰＵＤＭ１７４８から、共用メモリ１７５０に格納されたバッファポインタを受け取り、フレームを、共用メモリ１７４７内のフレームバッファ１７４９に書き込む。フレームがエラー処理のために共用メモリに転送されるいくつかの場合には、より大きいフレームを収容するために、または複数のフレームを収容するために、複数のフレームバッファが必要とされることもあることに留意されたい。最後に、ルータは、ＣＱＭ１７４５に、ＣＭＳＧをＣＱ１７４６に書き込むよう要求する。最終的には、ＣＰＵが、ＣＭＳＧ内に含まれる、フレームバッファ１７４９に格納されたフレームにアクセスするための情報を使って、ＣＭＳＧを処理する。
【００９３】
図１７Ｄに、あるＦＣポートから別のＦＣポートへのＦＣフレームの流れを示す。ルータ論理１７３６が、第１のＦＣポート１７３６内の入力ＦＩＦＯ１７３７を介して受け取られたフレームがストレージルータに宛先指定されておらず、リモートエンティティに宛先指定されていると判定した場合、ルータ論理は、そのフレームをリモートエンティティに送るために、そのフレームを第２のＦＣポート１７５２内の出力ＦＩＦＯ１７５１に書き込む。
【００９４】
図１７Ｅに、ストレージシェルフ・ルータ内のＣＰＵから、ＦＣ調停ループであるＳファブリック、または別のＦＣファブリックへの、データおよび制御情報の流れを示す。ファームウェア制御下で、ＣＰＵは、共用メモリ１７４７内の共用メモリ待ち行列（「ＳＲＱ」）内にエントリを格納し、ヘッダおよびバッファを指し示すポインタと共に、ＣＰＵがＦＣ調停ループまたはその他のＦＣファブリックに送るために作成してあるシーケンスまたはフレームを記述するＳＲＱエントリ（「ＳＲＥ」）の存在を指示するために、ＳＲＱと関連付けられたＳＲＱ作成インデックスを更新する。ＳＲＱマネージャモジュール（「ＳＲＱＭ」）１７５５は、ＳＲＱ作成インデックスの更新を検出し、ＣＰＵＤＭ１７４８を介して共用メモリ１７４７から、次のＳＲＥを取り出す。ＳＲＱＭは、取り出したＳＲＥをＳＲＱ調停モジュール（「ＳＱＲ＿ＡＲＢ」）１７５６に渡し、そこで、複数のＣＰＵによって生成され、複数のＳＲＱに格納されたＳＲＥの処理を保証するために、ラウンドロビン方式などの調停方式を実施する。ＳＲＱ＿ＡＲＢは、次のＳＲＥを受け取るべきＳＲＱＭを選択し、そのＳＲＥをＦＣＰアウトバウンドシーケンスマネージャ（「ＦＯＳＭ」）状態機械１７５７に渡す。ＦＯＳＭは、ＣＰＵＤＭ１７４８を介して共用メモリ１７４７から、ＦＣヘッダテンプレートおよびフレームペイロードを取り出すようにＳＲＥを処理する。ＦＯＳＭは、共用メモリからのＣＰＵＤＭを介したＦＣヘッダテンプレートおよびフレームペイロードを使ってＦＣフレームを構築し、それを、ＦＣポート１７３６内の出力ＦＩＦＯ１７５８に書き込み、そこから、フレームが、ＦＣ調停ループまたはその他のＦＣファブリックに送られる。フレームがＦＣポートに転送されると、ＦＯＳＭは、ＣＱＭ１７４５に、共用メモリにＣＭＳＧを書き込むよう指図する。
【００９５】
図１７Ｆに、ＧＳＭＳおよび共用メモリからＦＣ調停ループまたはその他のＦＣファブリックへのデータおよび制御情報の流れを示す。このプロセスのステップの多くは、図１７Ｅを参照して説明したものに類似しており、簡略化するために、それらを再度説明することはしない。一般に、ＦＣフレームヘッダ内に格納されているＦＣＰ＿ＤＡＴＡフレームの制御部分は、図１７Ｅを参照して説明した、他の任意のタイプのフレームの生成と同様に生成される。しかしながら、ＦＣＰ＿ＤＡＴＡフレームの場合には、制御情報と、ＧＳＭＳを介してＳＡＴＡポートから獲得されたデータと組み合わせるために、プロセスが段階的に実施される必要がある。ＦＯＳＭ１７５７は、ＦＣＰ＿ＤＡＴＡフレームを記述するＳＲＥを受け取ると、ＦＣＰ＿ＤＡＴＡフレームヘッダを構築し、フレームに組み込まれるデータを、ＧＳＭＳ１７４４内のＶＱ１７５９を介してデータを獲得するＦＤＭ１７４２を介し、ＧＳＭＳチャネルを経由して要求しなければならない。データおよび制御情報が、ＦＯＳＭによって、ＦＣＰ＿ＤＡＴＡフレームに組み込まれると、次いで、フレームはＦＣポートに渡され、ＦＣＰ＿ＤＡＴＡフレームがデータ転送操作の完了を表すときには、前述のように、ＣＭＳＧメッセージが待ち行列に入れられる。
【００９６】
図１８に、本発明の一実施形態を表すストレージシェルフ・ルータの論理コンポーネントの詳細なブロック図を示す。論理コンポーネントには、図１６および１７に関して前述した、２つのＦＣポート１８０２および１８０４と、経路指定層１８０６と、ＦＣＰ層１８０８と、ＧＳＭＳ１８１０と、ＳＡＴＡポート層１８１２と、２つのＣＰＵ１８１４および１８１６を含むＣＰＵ複合体とが含まれる。図１８に太矢印１８１８などの太矢印で示す通信パスおよびリンクは、ストレージシェルフ・ルータ内の性能に決定的な影響を及ぼす通信経路を表す。性能に決定的な影響を及ぼす通信経路とは、ＦＣフレームの受信と出力、ＳＡＴＡポートによるＳＡＴＡディスクドライブへの送出に適したＡＴＡコマンドを生成するための受け取ったフレームの処理、受け取ったＦＣＰ−ＤＡＴＡフレームからのデータのＧＳＭＳを介したＳＡＴＡポートへの流し込み、ＦＣポートを介したＦＣ調停ループまたはその他のＦＣファブリックへの送出のためのＦＣフレームの生成、およびＧＳＭＳを介してＳＡＴＡポートから獲得されたデータの、出力ＦＣＰ−ＤＡＴＡフレームへの組み込みに関連する経路である。性能に決定的な影響を及ぼさない通信経路には、ＣＰＵ１８１４および１８１６を、ストレージシェルフ・ルータの様々な論理コンポーネントと直接相互接続する、様々なプログラムされた入出力インターフェースが含まれる。例えば、中央調停スイッチ１８２０と、ＧＳＭＳ、ＳＬポート層、および内部バスブリッジ１８２２との間にはＰＩＯインターフェースがあり、内部バスブリッジ１８２２は、さらに、１７ＵＡＲＴポート１８２４、Ｉ２Ｃバスインターフェース１８２６、一般のＰＯＩインターフェース（「ＧＰＩＯ」）１８２８、タイマコンポーネント１８３０、およびいくつかの割込みコントローラ１８３２と相互接続されている。これらのＰＩＯインターフェースは、図１８で、太くない両方向矢印１８３４〜１８３６として示されている。加えて、ＣＰＵ１８１４および１８１６とフラッシュメモリコントローラ１８４０の間にはＰＩＯインターフェース１８３８があり、フラッシュメモリコントローラ１８４０は、さらに、外部フラッシュメモリ１８４２にインターフェースする。外部フラッシュメモリは、専用の構成管理情報およびファームウェアイメージを格納するのに使用される。ＣＰＵは
、メモリアクセスインターフェース１８４４を介して内部ＳＲＡＭコントローラ１８４６に接続されており、内部ＳＲＡＭコントローラ１８４６は、さらに、ストレージシェルフ・ルータ内、およびストレージシェルフ・ルータ間のフェイルオーバを指図するファームウェアルーチンを含む、非性能パスコードおよびＤＡＴＡを格納するＳＲＡＭメモリ１８４８にインターフェースする。ＣＰＵ１８１４および１８１６は、プロセッサデータ空間としても使用される、２つのデータ密結合メモリ１８５０および１８５２に含まれる共用メモリ待ち行列を介して、ＦＣＰ層１８０８およびＳＡＴＡポート層１８１２と相互接続されている。また、各ＣＰＵは、ファームウェア命令１８５４および１８５６を格納している別々のメモリとも相互接続されている。最後に、２つのＣＰＵは、単一のＰＩＯチャネル１８５８を介して、２つのＦＣポート１８０２および１８０４と、経路指定層１８０６と、ＦＣＰ層１８０８とに接続されている。
【００９７】
図１９に、ＦＣポート層の詳細図を示す。ＦＣポート層は、それぞれが、１つの入力ＦＩＦＯ１９０６、１９０８と、２つの出力ＦＩＦＯ１９１０〜１９１１、１９１２〜１９１３とを含む、２つのＦＣポート１９０２および１９０４を備える。ＦＣポートは、共に、ＦＣ調停ループまたはその他のＦＣファブリックからの入力シリアルデータを、入力ＦＩＦＯに渡されるＦＣフレームに変換し、出力ＦＩＦＯに書き込まれた出力フレームを、ＦＣ調停ループまたはその他のＦＣファブリックに送られるシリアルデータに変換する物理およびリンク層論理１９１４〜１９１７を含む。
【００９８】
図２０は、経路指定層を表す詳細なブロック図である。図２０に示すように、経路指定層２００２は、ＦＣポートのそれぞれを処理する別々の経路指定論理２００４および２００６を含む。また、経路指定層は、入力ＦＣフレームを適切な待ち行列に経路指定するのに必要な経路指定決定を円滑にするための、本質的には、極めて高速にアクセスできるメモリであるレジスタに格納された経路指定表２００８も含む。ＦＣデータフレームは、前述のように、ルータによって、ＦＤＭ２０１１を介して、ＦＩＳＭ２０１０および２０１２の制御下のＧＳＭＳ層２０１５に、比較的直接経路指定され得ることに留意されたい。ファームウェア処理を必要とするフレームは、経路指定層によって、ＣＰＵＤＭ２０１７および２０１８を介して、ＦＢＱＭ２０１４および２０１６の制御下の入力待ち行列に経路指定される。
【００９９】
図２１は、ＦＣＰ層を表す詳細なブロック図である。図２１に示すこれらの内部コンポーネントの多くについては、すでに説明しており、または後続の節でより詳細に説明する。一般に、一方では２つのＦＣポート１９０２および１９０４を、他方では２つのＣＰＵ２１０２および２１０４を処理するように構成されている、二組の重複するコンポーネントがあることに留意されたい。出力フレームを生成するのに必要な情報は、ファームウェア制御の下で、ＣＰＵによって生成され、それぞれが基本的に単一のＣＰＵと関連付けられている、共用メモリ２１０６および２１０８に格納される。次いで、格納された各メモリ内の情報は、別々の組のＳＲＱＭ２１１０、２１１２、ＦＯＳＭ２１１４、２１１６、ＳＱＲ＿ＡＲＢ２１１８、２１２０、ＣＰＵＤＭ２１２２、２１２４、およびその他のコンポーネントによって、送出のために２つのＦＣポート１９０２および１９０４に渡されるＦＣフレームを生成するように処理される。各ＦＣポートにおける入力フレームは、別々のルータモジュール２００４、２００６、ＦＩＳＭ２０１０、２０１２、およびその他のコンポーネントによって処理される。
【０１００】
図２２に、ＳＡＴＡポート層を表す詳細なブロック図を示す。ＳＡＴＡポート層の主要な目的は、ＳＡＴＡポート層とＧＳＭＳとＦＣＰ層の間で共用されるタスクである、仮想待ち行列管理と、ＧＳＭＳおよび個々のＳＡＴＡポートを介したＦＣＰ層とのデータ交換である。
【０１０１】
図２３は、ＳＡＴＡポートを表す詳細なブロック図である。ＳＡＴＡポートは、共にＳＡＴＡインターフェースを実施する、物理層２３０２、リンク層２３０４、およびトランスポート層２３０６を含む。トランスポート層は、それぞれ、相互接続されたＳＡＴＡディスクから到着するデータ転送部分とＡＴＡメッセージ情報を格納し、ＧＳＭＳ層からのデータ転送部分と、ＣＰＵおよび共用メモリへのインターフェースから渡されるＡＴＡコマンドを格納する、入力バッファ２３０８と出力バッファ２３１０とを含む。ＳＡＴＡポートに関するさらなる詳細は、別の節で論じる。
【０１０２】
ストレージシェルフ・ルータ経路指定層
図２４に、４ストレージシェルフ・ルータ高可用性ストレージシェルフ内の経路指定トポロジの抽象図を示す。この抽象図は、以下の考察に役立つモデルおよびテンプレートである。図２４に示すように、各ストレージシェルフ・ルータ２４０２〜２４０５は、１次リンクを介して、ディスクドライブ２４０６など、ｎ台のディスクドライブに接続されている。前述のように、各ストレージシェルフ・ルータは、２次リンクを介して、隣接するｎ台のディスクドライブの組に接続されているが、簡単にするために、図２４には２次リンクを示していない。１つのストレージシェルフ・ルータ２４０２は、ファブリックＸ２４０８と称する、第１のＦＣ調停ループまたはその他のＦＣファブリックに関してストレージシェルフ・ルータの組全体の端点またはＦＣノード接続点として働く。別のストレージシェルフ・ルータ２４０５は、ファブリックＹと称する、第２のＦＣ調停ループまたはその他のＦＣファブリック２４１０への端点、またはＦＣノード接続として働く。各ストレージシェルフ・ルータは、例えば、ストレージシェルフ・ルータ２４０２におけるＸポート２４１２とＹポート２４１４のように、２つのＦＣポート、ＸポートおよびＹポートを含む。４つのストレージシェルフ・ルータは、内部ポイントツーポイントＦＣリンク２４１６、２４１８、２４２０と相互接続されている。例えば、ストレージシェルフ・ルータ２４０４などの任意の個々のストレージシェルフ・ルータについて、ファブリックＸから入力されるＦＣフレームは、Ｘポート２４２２上で受け取られ、ストレージシェルフ・ルータ２４０４によってファブリックＸに出力されたＦＣフレームは、Ｘポート２４２２を介して出力される。同様に、入力ＦＣフレームおよび出力ＦＣフレームは、それぞれ、Ｙファブリックから受け取られて、Ｙファブリックに宛先指定され、ＦＣポート２４２４を介して入力され、出力される。個々のＦＣポートのＸおよびＹファブリックへの割り当ては、構成可能であり、以下の例および例を参照する考察においては、ＦＣポート０がＸファブリックポートであり、ＦＣポート１がＹポートであると仮定しているが、逆の割り当てが構成されてもよいことに留意すべきである。
【０１０３】
Ｓファブリック内で使用される、「Ｓビット」と呼ばれるＦＣフレームヘッダのＤＦ＿ＣＴＬフィールド内の２ビットの予約済みサブフィールドによってそれと識別される、Ｓファブリック管理フレームは、ＸポートまたはＹポートを介して、ストレージシェルフ・ルータと、ポイントツーポイント内部ＦＣリンクの間で宛先指定される。各ストレージシェルフ・ルータには、ストレージシェルフ内で一意であり、管理フレームにおいて、ＦＣフレームヘッダＤ＿ＩＤフィールドの一部を形成するルータ番号が割り当てられる。ストレージシェルフ・ルータには、ＸおよびＹファブリックの一方に対しては厳密に増大する順序で、ＸおよびＹファブリックの他方に対しては厳密に減少する順序で番号が付される。例えば、図２４では、ストレージシェルフ・ルータ２４０２、２４０３、２４０４、２４０５に、それぞれ、ルータ番号１、２、３、４が割り当てられてもよく、よって、Ｘファブリックに対しては厳密に増加する順、すなわち昇順になり、Ｙファブリックに対しては厳密に減少する順、すなわち降順になる。以下で論じる詳細なフロー制御図では、この順序付けが想定されているが、前述のように、ファブリックとポートの間の関係、およびポートに対する昇順および降順は、構成可能である。
【０１０４】
図２５に、ディスクアレイの２ストレージシェルフ・ルータ２ストレージシェルフ実装形態内のＸおよびＹ  ＦＣ調停ループ相互接続の抽象図を示す。図２５では、ディスクアレイコントローラ２５０２が、ＦＣ調停ループＸ２５０４によって、各ストレージシェルフ２５０６、２５０８にリンクされており、ＦＣ調停ループＹ２５１０によって、ストレージシェルフ２５０６と２５０８の両方にリンクされている。図２５では、ストレージシェルフ・ルータ２５１２は、ストレージシェルフ２５０６のＸファブリック端点として働き、ストレージシェルフ・ルータ２５１４は、ストレージシェルフ２５０８のＸファブリック端点として働く。同様に、ストレージシェルフ・ルータ２５１６は、ストレージシェルフ２５０６のＹファブリック端点として働き、ストレージシェルフ・ルータ２５１８は、ストレージシェルフ２５０８のＹファブリック端点として働く。ディスクドライブ２５１８など、各個別ディスクドライブは、ＸとＹ両方の調停ループを介してディスクアレイコントローラ２５０２にアクセスすることができる。２つのストレージシェルフにおいて、ストレージシェルフ・ルータは、単一のポイントツーポイントＦＣリンク２５２０、２５２２を介して内部で相互接続されており、この相互接続は、ＸおよびＹファブリックフレーム以外に、内部で生成され、内部で消費される管理フレーム、すなわちＳファブリックフレームを運んでもよい。ストレージシェルフ２５０６内の内部ポイントツーポイントＦＣリンクを、Ｓ１ファブリックと呼び、ストレージシェルフ・ルータ２５０８内の内部ポイントツーポイントＦＣリンクをＳ２ファブリックと称する。本質的に、これらの内部ポイントツーポイントＦＣリンクは、Ｘファブリック、ＹファブリックのＦＣフレームと、内部管理フレームを運ぶが、ＸファブリックおよびＹファブリックフレームは、それらが端点ストレージシェルフ・ルータを介してストレージシェルフ・ルータに入ると、それらが消費され、または端点ストレージシェルフ・ルータのＦＣポートを介してＸファブリックまたはＹファブリックに送り返されるまで、Ｓファブリックフレームとみなされる。
【０１０５】
図２６Ａ〜Ｅに、ＦＣフレームを、個々のストレージシェルフに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す。ＦＣフレームヘッダについては、先に、図３を参照して論じている。当然ながら、ＦＣヘッダは、フレームをＦＣノード宛先指定するために設計されており、単一のＦＣノードを介してＦＣ調停ループまたはその他のＦＣファブリックに共にインターフェースするストレージシェルフ・ルータと相互接続されたディスクドライブに宛先指定するためではない。したがって、適正なＦＣフレームの宛先指定のためには、ＦＣフレームヘッダフィールドの、ストレージシェルフ内のストレージシェルフ・ルータおよびＳＡＴＡディスクドライブ構成へのマッピングが必要である。ＦＣフレームヘッダ内の３バイトＤ＿ＩＤフィールドは、ＦＣノードのノードアドレスを表す。ＦＣ調停ループの場合、Ｄ＿ＩＤの上位２バイトは、非共用ループでは、一般に、「０」の値を有し、最下位バイトは、１２７ノードの１つを指定する調停ループ物理アドレス（「ＡＬ＿ＰＡ」）を含む。一般に、ディスクアレイコントローラには少なくとも１つのノードアドレスが使用され、ファブリック調停ループ（共用ループ）アドレスには別のノードアドレスが予約される。３バイトＳ＿ＩＤフィールドは、フレームが発行されたノードのノードアドレスを含む。一般に、Ｓ＿ＩＤフィールドは、ディスクアレイコントローラのノードアドレスであるが、ストレージシェルフがＦＣファブリックと直接相互接続されていてもよく、その場合、Ｓ＿ＩＤは、ストレージシェルフにアクセスし得る多数のリモートエンティティのいずれかの完全な２４ビットＦＣファブリックアドレスとすることができる。
【０１０６】
図２６Ａに示すように、ＦＣフレームヘッダ２６０６のＤＦ＿ＣＴＬフィールド２６０４内の２つの予約済みビット２６０２は、ストレージシェルフ内で、すなわちＳファブリック内で格納され、送出されるフレームのための、一種の宛先指示、すなわちコンパス２６０８として用いられる。以下の表４に、この方向標識の符号化を示す。
【表４】
2008537805.tif 000004
【０１０７】
ビットパターン「０１」は、フレームがＸファブリックフレームとしてＳファブリックに入ったことを示し、ビットパターン「１０」は、フレームがＹファブリックフレームとしてＳファブリックに入ったことを示し、ビットパターン「１１」は、フレームがＳファブリック管理フレームであることを示す。ＤＦ＿ＣＴＬフィールドのビット１８：１９で表されるこの方向標識、すなわち内部コンパスが必要なのは、Ｓファブリックフレームと外部ファブリックフレーム両方が、フレームが単一のＦＣポートを介して、ストレージシェルフ・ルータにより受け取られ得るからである。前述のように、ＤＦ＿ＣＴＬフィールドのビット１８：１９を、総称して「Ｓビット」という。Ｓビットは、端点ストレージシェルフ・ルータによるＸファブリックまたはＹファブリックフレームの受け取り時に設定され、端点ストレージシェルフ・ルータからＸファブリックまたはＹファブリックに返されるＦＣフレームのエクスポートの前にクリアされる。ＦＣフレームヘッダのＲ＿ＣＴＬフィールドは、ＦＣＰ＿ＣＭＮＤ、ＦＣＰ＿ＤＡＴＡ、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹ、およびＦＣＰ＿ＲＳＰフレームを含む、ＦＣフレームのタイプの指示を含む。このフィールドは、経路指定論理によって、フレームがどのように処理されるべきか迅速に決定するために使用される。
【０１０８】
図２６Ｂに、ＦＣＰ−ＣＭＮＤフレームの経路指定に関与するＦＣフレームヘッダフィールドを示す。Ｄ＿ＩＤフィールド２６１０は、ＦＣフレームを個々のＦＣノードに宛先指定するが、前述のように、ストレージシェルフは、透過モードで動作するときには、いくつかのＦＣノードを含むことがあり、透過モードで動作しないときには、すべてが単一のＤ＿ＩＤを含むＦＣフレームがそこに分散される必要のある多数のデータ記憶装置を含むことがある。ストレージシェルフの経路指定論理は、本質的に、Ｄ＿ＩＤと、ストレージシェルフと、ストレージシェルフ・ルータと、最終的には、ディスクドライブとの間の様々なマッピングを処理するためのものである。
【０１０９】
経路指定論理は、Ｄ＿ＩＤフィールドの値だけから、ＦＣフレームがそのストレージシェルフ・ルータに宛先指定されているか否かを判定することはできない。Ｄ＿ＩＤが、入力ＦＣ−ＣＭＤフレームをそのストレージシェルフ・ルータに宛先指定しているかどうか判定するために、経路指定論理は、内部経路指定表２６１２と、以下で論じるいくつかのレジスタを調べて、Ｄ＿ＩＤが、そのストレージシェルフ・ルータによって管理されるディスクドライブのアドレスを表しているかどうか判定する必要がある。よって、図２６Ｂに示すように、内部経路指定表２６１２に関して解釈されたＤ＿ＩＤフィールドは、ストレージシェルフ２６１６内の個々のストレージシェルフ・ルータと、ストレージシェルフ・ルータ２６１８と相互接続されている個々のディスクを指定する。加えて、経路指定論理は、以下で論じる、別の内部表２６１４を調べて、Ｓ＿ＩＤフィールド２６１１によって指定されるＦＣフレームのソースが、現在ストレージシェルフ・ルータにログインしているリモートエンティティであるかどうか、およびそのリモートエンティティが、アドレス指定されたディスクドライブと相互接続されていると識別されるかどうかも判定する。よって、様々な内部表２６１４に関して解釈されたＳ＿ＩＤフィールドは、ＦＣ＿ＣＭＮＤフレームで表されるコマンドが実行されるべきか否か判定する許可スイッチ２６２０として働く。
【０１１０】
図２６Ｃに、ＦＣＰ−ＤＡＴＡフレームの経路指定に関与するＦＣフレームヘッダフィールドを示す。Ｄ＿ＩＤフィールド２６１０およびＳ＿ＩＤフィールド２６１１ならびに内部表２６１２および２６１４は、ＦＣＰ−ＣＭＮＤフレームの経路指定の場合と同様に、ストレージシェルフ２６１６内の個々のストレージシェルフ・ルータと、そのストレージシェルフ・ルータと相互接続されている個々のディスクを指定し、ディスクへのデータの転送を許可２６２０するのに使用される。しかしながら、ＦＣＰ＿ＤＡＴＡフレームは、複数のＦＣＰ＿ＤＡＴＡフレームによる書込みシーケンスの一部であることもあるため、経路指定論理が、そのＦＣ＿ＤＡＴＡフレームが、ストレージシェルフ・ルータにとってローカルのディスクに宛先指定されていると判定した後で、ＦＣフレームヘッダ２６０６の別のフィールドを用いてストレージシェルフ・ルータ内でＦＣＰ＿ＤＡＴＡフレームが宛先指定される。図２６Ｃに示すように、
ＲＸ＿ＩＤフィールド２６２２は、ＦＣＰ＿ＣＭＮＤフレームの処理の間に、元々、ストレージシェルフ・ルータによって生成された値を含む。ＦＣＰ＿ＣＭＮＤフレームは、ＦＣＰ＿ＤＡＴＡフレームと関連付けられた書込みコマンドを指定したもので、ＦＣＰ＿ＤＡＴＡフレームは、書込みコマンドのコンテキスト２６２４を指定し、さらには、データを、ＦＣＰ層からＧＳＭＳを介してＳＡＴＡポート層に転送するための仮想待ち行列２６２６を指定するものである。加えて、ＦＣフレームヘッダ２６０６のパラメータフィールド２６２８は、ＷＲＩＴＥコマンドによって転送されたデータ２６３２の総連続長内でのＦＣＰ＿ＤＡＴＡフレームに含まれるデータの位置２６３０を指示する、データの相対オフセットを含む。コンテキスト２６２４は、次のＦＣＰ＿ＤＡＴＡフレームの期待される相対オフセットを格納しており、これは、ＦＣＰ＿ＤＡＴＡフレームの適正な順序付けをチェックするのに使用され得る。格納されている期待される相対オフセットが、パラメータフィールドの値とマッチする場合には、ＦＣＰ＿ＤＡＴＡフレームは、誤った順序で受け取られており、エラー処理が呼び出される必要がある。
【０１１１】
図２６Ｄに、内部で生成された管理フレームの経路指定に関与するＦＣフレームヘッダフィールドを示す。Ｓビット（図２６Ａの２６０２）は、フレームが管理フレームであることを指示している。管理フレームの場合、Ｄ＿ＩＤフィールド２６１０の最下位バイトは、ストレージシェルフ内の個々のストレージシェルフ・ルータを指定するルータ番号を含む。Ｄ＿ＩＤフィールドに含まれるルータ番号は、以下で論じるレジスタ２６３４に含まれるローカルルータ番号と比較されて、管理フレームが、例えばストレージシェルフ・ルータ２６３６などのストレージシェルフ・ルータに宛先指定されているかどうか、あるいは、管理フレームが、Ｘファブリックに関連付けられたＦＣポート２６３８またはＹファブリックに関連付けられたＦＣポート２６４０を介してアクセス可能な、ストレージシェルフ内の別のストレージシェルフ・ルータに宛先指定されているかどうかが判定される。
【０１１２】
最後に、図２６Ｅに、受け取ったＦＣＰ＿ＸＦＥＲ＿ＲＤＹおよびＦＣＰ＿ＲＳＰフレームの経路指定に関与するＦＣフレームヘッダフィールドを示す。ＦＣＰ＿ＸＦＥＲ＿ＲＤＹおよびＦＣＰ＿ＲＳＰフレームの場合、経路指定論理は、フレームが、別のストレージシェルフ・ルータによるリモートエンティティ、通常は、ディスクアレイコントローラに宛先指定されていると直ちに認識する。よって、経路指定論理は、ＦＣフレームヘッダのＲ＿ＣＴＬフィールド２６４２を検査するだけで、そのフレームが、ＸファブリックまたはＹファブリックに送り返されなければならないと判定することができる。
【０１１３】
図２７に、経路指定論理によるＦＣフレームの経路指定を円滑にするためにストレージシェルフ・ルータ内に維持される７つの主要な経路指定表を示す。これらの表には、内部経路指定表（「ＩＲＴ」）２７０２、ＸファブリックとＹファブリックそれぞれの外部経路指定表（「ＥＲＴ＿Ｘ」）２７０４、（「ＥＲＴ＿Ｙ」）２７０６、ＸファブリックとＹファブリックの開始側／宛先表（「ＩＴＴ＿Ｘ」）２７０８、（「ＩＴＴ＿Ｙ」）２７１０、およびＸファブリックとＹファブリックそれぞれのログインペア表（「ＬＰＴ＿Ｘ」）２７１２、（「ＬＰＴ＿Ｙ」）２７１４が含まれる。これら７つの経路指定表は、それぞれ、インデックスレジスタ（「ＩＲＴ＿ＩＮＤＥＸ」）２７１６およびデータレジスタ（「ＩＲＴ＿ＤＡＴＡ」）２７１８などの、インデックスレジスタおよびデータレジスタと関連付けられている。各表の内容には、ＣＰＵが、表内の個々のフィールドを示す値をインデックスレジスタに書き込み、フィールドの内容をデータレジスタから読み取り、またはフィールドの新しい内容をデータレジスタに書き込むことによってアクセスされ得る。加えて、それぞれが、ルータ番号と、ＸファブリックとＹファブリックそれぞれに関するストレージシェルフ・ルータドレスに対応するＤ＿ＩＤの上位２バイトとを格納するのに使用される、３つのレジスタ、「ＳＦＡＲ」２７２０、「ＸＦＡＲ」２７２２、および「ＹＦＡＲ」２７２４もある。これは、Ｄ＿ＩＤの下位バイトだけを格納するだけでよい、よりコンパクトなＩＲＴ表、ＥＲＴ＿Ｘ表およびＥＲＴ＿Ｙ表を可能にする。
【０１１４】
ＩＲＴ表２７０２は、ストレージシェルフ・ルータに接続されている各ディスクドライブごとに、すなわち、各ローカルディスクドライブごとに１行を含む。この行は、ディスクドライブに宛先指定されたフレームのＤ＿ＩＤフィールドの下位バイトに含まれる、ディスクドライブに割り当てられているＡＬ＿ＰＡと、ディスクドライブのＬＵＮ番号と、ディスクドライブ内に含まれる論理ブロックアドレスの範囲と、２つのＣＰＵのうちのどちらが、ディスクドライブに宛先指定された入出力を処理するか指示するＣＰＵフィールドと、その行が表内の有効なエントリを表しているか否か指示する有効ビットとを含む。有効ビットは、可能な最大数より少ない数のディスクドライブがストレージシェルフ・ルータに接続されているときに好都合である。
【０１１５】
ＥＲＴ＿Ｘ表２７０４およびＥＲＴ＿Ｙ表２７０６は、ストレージシェルフ・ルータにとってローカルではなく、ストレージシェルフにとってローカルであるディスクドライブをアドレス指定する有効Ｄ＿ＩＤの下位バイトを含む。これらの表は、以下で論じるように、不要な内部ＦＣフレーム転送を避けるのに使用され得る。
【０１１６】
ＸファブリックＩＴＴ表２７０８およびＹファブリックＩＴＴ表２７１０は、現在ストレージシェルフ・ルータにログインしており、ストレージシェルフ・ルータとのＦＣ交換、およびストレージシェルフ・ルータと相互接続されているディスクドライブとのＦＣ交換を開始することのできるリモートＦＣ発行元に対応する完全なＳ＿ＩＤを含む。ログインペア表２７１２および２７１４は、本質的に、ＦＣＰ交換のために現在ログインしているリモート発行元とローカルディスクドライブの対に対応するセルでビット値がオンにされている疎行列である。よって、ログイン表２７１２および２７１４は、ディスクアレイコントローラなどのリモートエンティティと、ストレージシェルフ・ルータと相互接続されているローカルディスクドライブの間の継続中の相互接続を表す有効なログインの指示を提供する。
【０１１７】
次に、一連の詳細なフロー制御図を参照して、ストレージシェルフ・ルータの経路指定層を構成する経路指定論理を説明する。図２８に、各フロー制御図で使用される簡略化した経路指定トポロジおよび経路指定宛先命名法を示す。図２９〜３５は、経路指定層論理を記述する階層的な一連のフロー制御図である。
【０１１８】
図２８に示すように、経路指定層２８０２は、ＦＣポート２８０４および２８０６からの入力ＦＣフレームを、ＦＣポートに直接返す転送、ＣＰＵ上で実行されるＦＣＰ論理およびファームウェアによる処理のためのＦＣＰ層２８１０への転送、または、コンテキストが確立されているデータフレームの場合の、ＧＳＭＳ層への比較的直接の転送に関与する。経路指定層は、ＦＣポート内の入力ＦＩＦＯ２８１２および２８１４から、それぞれ、「Ｆｒｏｍ＿ＦＰ０」、「Ｆｒｏｍ＿ＦＰ１」と指定された入力ＦＣフレームを受け取る。経路指定層は、ＦＣフレームを、ＦＩＦＯ２８１６と２８１８の一方に、それぞれ、「Ｔｏ＿ＦＰ０」、「Ｔｏ＿ＦＰ１」と指定されたＦＣフレームを書き込むことによって、一般的にはそのフレームを受け取ったのと逆のポートであるＦＣポートに送り返してもよい。経路指定層は、「Ｔｏ＿ＧＳＭＳ」と称するプロセスとして、ＦＣＰ＿ＤＡＴＡフレームを、仮想待ち行列を介してＧＳＭＳ層に比較的直接転送してもよく、「Ｔｏ＿ＦＣＰ」と称する、ＦＣフレームを処理するためのＦＣＰ層２８１０への転送を行ってもよい。フロー制御図では、ＦＩＦＯからの読み取りおよび書き込み、ＧＳＭＳ仮想待ち行列機構によるデータ転送、ならびにＣＰＵへの共用メモリインターフェースを介した状態機械媒介転送の各プロセスの省略表現として、名称「Ｆｒｏｍ＿ＦＰ０」、「Ｆｒｏｍ＿ＦＰ１」、「Ｔｏ＿ＦＰ０」、「Ｔｏ＿ＦＰ１」、「Ｔｏ＿ＧＳＭＳ」、および「Ｔｏ＿ＦＣＰ」を用いる。
【０１１９】
図２９は、経路指定層論理を表す、第１の、最高レベルのフロー制御図である。経路指定層論理は、入力ＦＣフレームをその適切な宛先に指定するために行われる決定の組として説明される。機能しているストレージルータでは、図２９〜３５に関して説明される経路指定論理が、入力ＦＣフレームが処理される際に呼び出される。経路指定論理は、ストレージシェルフ・ルータの状態機械および論理回路内に存在する。ストレージシェルフ・ルータは、可能な限り、格納および転送の、データコピー型の内部データ転送を回避するように設計されており、その代わり、フレームがＦＣポートのＦＩＦＯに入力されているときでさえも、フレームヘッダ中の情報を使ってフレームが経路指定され得るように簡素化されている。言い換えると、経路指定論理は、フレームヘッダがＦＩＦＯからの読み取り可能になり次第呼び出されてもよく、ＦＣポートによる残りのデータの受け取りと並行して、フレームが経路指定され、フレームに含まれる最初のデータが、その宛先に転送されてもよい。ＸファブリックとＹファブリック両方から入力されるＦＣフレームが、適時に処理され、ＸファブリックもＹファブリックも、不要なＦＣフレーム処理遅延または長時間の停止を被らないように、ストレージシェルフ・ルータは、２つのＦＣポートの２つの異なる入力ＦＩＦＯの公平な処理を保証するための調停論理を含む。経路指定論理は、ＦＣポートによって生成される、ＦＩＦＯ内の新しく到着したフレームヘッダの利用可能性を示す信号によって呼び出される。
【０１２０】
ステップ２９０２で、経路指定層論理（「ＲＬＬ」）は、それぞれ、「Ｆｒｏｍ＿ＦＰ０」および「Ｆｒｏｍ＿ＦＰ１」と指定されたＦＣポートの入力ＦＩＦＯの一方から、次の入力ＦＣフレームヘッダを読み取る。ステップ２９０４で、経路指定層論理は、フレームヘッダを含むＦＣフレームがクラス３  ＦＣフレームであるか否か判定する。前述のストレージシェルフ・ルータの実施形態では、クラス３  ＦＣフレームだけがサポートされている。ＦＣフレームがクラス３  ＦＣフレームでない場合、ＦＣフレームは、ステップ２９０６で、エラー処理のために、Ｔｏ＿ＦＣＰで、ＦＣＰ層に宛先指定される。これ以降のフロー制御図では、流れ矢印に関連付けられた小文字の「ｅ」は、その流れ矢印で表される流れが、エラー条件を処理するために発生することを示すことに留意されたい。ステップ２９０４で、ＦＣフレームがクラス３  ＦＣフレームであると判定された場合、ＲＬＬは、次に、ステップ２９０８で、ＦＣフレームがそこから受け取られたＦＣポートが、Ｓファブリック端点であるかどうか、すなわち、ＸファブリックノードであるかそれともＹファブリックノードであるか判定する。ストレージシェルフ・ルータは、特定のポートが、Ｓファブリックに関して端点であるか否か、あるいは、言い換えると、構成可能な設定からのＸファブリックノードであるか、それともＹファブリックノードであるか判定することができる。ＦＣフレームヘッダは、前述のように、ソースポートのポートアドレスを含む。
【０１２１】
ＦＣフレームのソースポートが、ＦＣフレームがローカルＳファブリックにとって外部にあるエンティティから受け取られていることを指示する、Ｓファブリック端点である場合、ＲＬＬは、ステップ２９１０で、Ｓビットのいずれかが、ＦＣフレームヘッダのＤＦ＿ＣＴＬフィールド内で設定されているかどうか判定する。そうである場合、エラーが発生しており、ステップ２９０６で、ＦＣフレームが、エラー処理のために、Ｔｏ＿ＦＣＰでＦＣＰ層に宛先指定される。そうでない場合、ステップ２９１２で、ＦＣフレームがＸファブリックすなわちＸ空間、それともＹファブリックすなわちＹ空間に属しているか指示するように、適切なＳビットが設定される。ストレージシェルフ内の相互接続されているストレージシェルフ・ルータの組の内部でのストレージシェルフ・ルータの位置に関係なく、２つのＦＣポートの一方はＸファブリックに対応し、他方はＹファブリックに対応することに留意されたい。前述のように、ＦＣポートとＸおよびＹファブリックの間の関連付けは設定できる。次に、ＲＬＬは、ステップ２９１４で、Ｓビットが、フレームがＳファブリックフレームであると指示するように設定されているかどうか判定する。そうである場合、ステップ２９１６で、フレームの宛先を決定するために下位論理「管理宛先」が呼び出され、その後、ステップ２９１８で、ステップ２９１６で決定された宛先にＦＣフレームを実際に経路指定するために、下位論理「宛先への経路指定」が呼び出される。ステップ２９１４で、ＦＣフレームがＳファブリック管理フレームでないと判定された場合、ステップ２９２０で、ＲＬＬは、ＲＬＬが、現在、前述の、各ディスクドライブが独自のＦＣノードアドレスを持つモードである透過モードで動作しているか否か判定する。ストレージシェルフ・ルータが透過モードで動作している場合、ステップ２９２２で、フレームの宛先を決定するために、下位論理「透過宛先」が呼び出され、次いで、ステップ２９１８で、フレームをその宛先に実際に経路指定するために、下位論理「宛先への経路指定」が呼び出される。そうでない場合、ステップ２９２４で、フレームの宛先を決定するために下位論理「宛先」が呼び出され、その後、ステップ２９１８で、フレームは、下位論理「宛先への経路指定」への呼び出しを介して、その宛先に経路指定される。
【０１２２】
図３０は、図２９のステップ２９１６から呼び出される下位論理「管理宛先」を表すフロー制御図である。ステップ３００２で、ＲＬＬは、ＦＣフレームのヘッダのＤ＿ＩＤに格納されたストレージシェルフ・ルータ番号が、ストレージシェルフ・ルータの番号と等しいかどうか判定する。この判定は、ストレージシェルフ内のストレージシェルフ・ルータに割り当てられ、ＳＦＡＲレジスタに格納されているルータ番号を使って行われ得る。ステップ３００２でＤ＿ＩＤに含まれるルータ番号がＳＦＡＲレジスタ内のルータ番号にマッチすると判定された場合、ステップ３００４で、変数「宛先」が、フレームがＦＣＰ層に送られるべきであると指示する値「Ｔｏ＿ＦＣＰ」に設定される。ルータ番号がマッチしない場合、ステップ３００６で、ＲＬＬは、ＦＣフレームのＤ＿ＩＤ内のルータ番号が、ストレージシェルフ・ルータのルータ番号より大きいかどうか判定する。ＦＣフレームのＤ＿ＩＤ内のルータ番号が、ＳＦＡＲレジスタに格納されているストレージシェルフ・ルータのルータ番号より大きい場合、制御はステップ３００８に進む。そうでない場合、制御はステップ３０１０に進む。ステップ３００８でもステップ３０１０でも、ＲＬＬは、フレームがストレージシェルフ内のＳファブリック端点に到達しているかどうか判定する。そうである場合、管理フレームは、誤ってアドレス指定されたか、あるいは誤って、適切な宛先によって処理されなかったものであり、そのため、どちらの場合にも、フレームがＣＰＵによって、誤って受け取られたフレームとして処理されるように、ステップ３００４で、宛先が「Ｔｏ＿ＦＣＰ」に設定される。しかしながら、３００８でも３０１０でも、現在のストレージシェルフ・ルータがＳファブリック端点でない場合、Ｄ＿ＩＤ内のルータ番号が現在のルータのルータ番号より小さければ、宛先は、ステップ３０１２で「Ｔｏ＿ＦＰ０」に設定され、Ｄ＿ＩＤ内のルータ番号が現在のストレージシェルフ・ルータのルータ番号より大きければ、宛先は、ステップ３０１４で「Ｔｏ＿ＦＰ１」に設定される。この場合もやはり、ストレージシェルフ内のストレージルータの数値識別は、Ｘファブリックに関しては昇順であり、Ｙファブリックに関しては降順であることに留意すべきである。
【０１２３】
図３１は、図２９のステップ２９２４から呼び出される下位論理「宛先」を表すフロー制御図である。この下位論理は、ストレージシェルフ・ルータが透過モードで動作していないとき、すなわち、ストレージシェルフ・ルータがＡＬ＿ＰＡに複数のディスクドライブをマップしているときに、ＦＣフレームの宛先を決定する。ステップ３１０２で、ＲＬＬは、フレームがＸＦＥＲ＿ＤＲＹまたはＲＳＰフレームであるかどうか判定する。これらのフレームは、ディスクアレイコントローラに送り返される必要がある。そうである場合、ステップ３１０３で、ＲＬＬは、フレームがＸファブリックに属しているかどうか判定する。フレームがＸファブリックに属している場合、ステップ３１０４で、フレームをＸ  ＦＣポートに宛先指定するために、変数「宛先」が値「Ｔｏ＿ＦＰ０」に設定される。ステップ３１０２で、フレームがＹファブリックフレームであると判定された場合、ステップ３１０６で、フレームをＹ  ＦＣポートに宛先指定するために、変数「宛先」が「Ｔｏ＿ＦＰ１」に設定される。ステップ３１０２で、フレームがＦＣＰ＿ＸＦＥＲ＿ＲＤＹもＦＣＰ＿ＲＳＰフレームでもないと判定された場合、ステップ３１０８で、ＲＬＬは、フレームがＦＣＰ＿ＣＭＮＤフレームであるかどうか判定する。そうである場合、ステップ３１１０で、変数「宛先」は、フレームがストレージシェルフ・ルータにとってローカルであるＬＵＮに宛先指定されたＦＣＰ＿ＣＭＮＤフレームであって、フレームが、ＦＣＰコマンドのコンテキストを確立するためのファームウェア処理のために、ＦＣＰ層に宛先指定される必要があることを指示する、「Ｔｏ＿ＦＣＰ」に設定される。ステップ３１０８で、フレームがＦＣＰ＿ＣＭＮＤフレームでないと判定された場合、ステップ３１１２で、ＲＬＬは、フレームがＦＣＰ＿ＤＡＴＡフレームであるか否か判定する。フレームがデータフレームでない場合、ステップ３１１４で、ファームウェアが、どんなタイプのフレームが受け取られており、そのフレームがどのように処理されるべきか判定するためのエラー処理を呼び出すように、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。ステップ３１１２で、フレームがＦＣＰ＿ＤＡＴＡフレームであると判定された場合、ステップ３１１６で、ＲＬＬは、フレームが応答側によって送られたものか、それとも発行元に
よって送られたものか判定する。フレームが発行元によって送られたものである場合、ステップ３１１０で、フレームをＦＣＰ層処理に宛先指定するために、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。データフレームが応答側によって送られたものである場合、ステップ３１１８で、ＲＬＬは、フレームが、最初に、Ｓファブリック外部から受け取られたかどうか、あるいは、フレームヘッダ内のＳビット符号化ファブリック指示が、フレームが受け取られたポートと逆のポートと不整合であるかどうか判定する。どちらの条件も真である場合、フレームは、誤って受け取られており、ステップ３１１４で、フレームをエラー処理のためにＣＰＵに宛先指定するように、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。そうでない場合、制御は、ＸポートまたはＹポートへの宛先指定のために、ステップ３１０３に進む。
【０１２４】
図３２は、図２９のステップ２９２２から呼び出される、下位論理「透過宛先」を表すフロー制御図である。この下位論理は、ストレージシェルフ・ルータが、各ディスクドライブが独自のＡＬ＿ＰＡを有する透過モードで動作しているときにＦＣフレームの宛先を決定する。ステップ３２０２で、ＦＣフレームのヘッダのＤ＿ＩＤフィールドの上位２バイトが、フレームが受け取られたソースポートに対応するＸＦＡＲまたはＹＦＡＲレジスタの内容と等価であるか否か、およびＤ＿ＩＤフィールドの下位バイトが、ＡＬ＿ＰＡがローカルディスクドライブに割り当てられていることを示す、ＩＲＴ表に含まれるＡＬ＿ＰＡを含むかどうか、ＲＬＬが判定する。そうである場合、ＦＣフレームは、現在のストレージシェルフ・ルータに宛先指定されたものである。そうでない場合、ＦＣフレームは、別のストレージシェルフまたはストレージシェルフ・ルータに宛先指定されている。ＦＣフレームが現在のストレージシェルフ・ルータに宛先指定されている場合、ステップ３２０４で、ＲＬＬは、Ｓ＿ＩＤが、適切なＩＴＴ表に含まれるＳ＿ＩＤに対応するかどうか調べることによって、ＦＣフレームの発行元が、ストレージシェルフ・ルータと相互接続されているディスクドライブと現在ＦＣ交換を開始することのできる外部ＦＣ発行元であると識別されるリモートエンティティであるかどうか判定し、Ｓ＿ＩＤが適切なＩＴＴ表で見つかった場合、ＲＬＬは、さらに、適切なＬＰＴ表をチェックして、ＦＣフレームヘッダに含まれるＳ＿ＩＤと関連付けられたリモートエンティティが、フレームが宛先指定されているディスクに関して、現在ログインしているかどうか調べる。ステップ３２０４で、Ｓ＿ＩＤが、現在ログインしており、フレームがそこに宛先指定されているストレージシェルフ・ルータと相互接続されているディスクドライブとのＦＣ交換を引き受けることのできるリモートエンティティを表すと判定された場合、ステップ３２０６で、フレームを処理のためにＦＣＰ層に宛先指定するように、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。これに対して、Ｓ＿ＩＤが適切なＩＩＴ表に含まれておらず、またはＦＣフレームが宛先指定されているソースおよびディスクドライブが、適切なＬＰＴ表によって、現在ログインしていないと示されている場合、ステップ３２０８で、フレームをエラー
処理のためにＦＣＰ層に宛先指定するように、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。
【０１２５】
ステップ３２０２で、Ｄ＿ＩＤフィールドが適切なＦＡＲレジスタの内容とマッチしないと判定された場合、ステップ３２１０で、ＲＬＬは、フレームがＸファブリックフレームであるか否か判定する。そうである場合、ステップ３２１２で、ＲＬＬは、フレームがストレージシェルフ内の別のストレージシェルフ・ルータに宛先指定されているか否か判定する。そうでない場合、ステップ３２１４で、フレームを別のストレージシェルフに転送するために外部Ｘファブリックに戻すよう、変数「宛先」が「Ｔｏ＿ＦＰ０」に設定される。ステップ３２１２で、ＥＲＴ＿Ｘ表が、フレームの宛先に、ストレージシェルフ内の別のストレージシェルフ・ルータに接続されたディスクドライブであると指示するエントリを含むと判定された場合、ステップ３２１６で、ＲＬＬは、現在のストレージシェルフ・ルータが、Ｙファブリック端点を表すか否か判定する。そうである場合、フレームは正しく処理されなかったものであり、Ｙファブリックに送ることができず、したがって、ステップ３２０８で、フレームが、エラー処理のためにＦＣＰ層に宛先指定されるように、変数「宛先」が値「Ｔｏ＿ＦＣＰ」に設定される。そうでない場合、ステップ３２１８で、フレームを、Ｓファブリックを介してストレージシェルフ内の後続のストレージシェルフ・ルータに転送するために、変数「宛先」が「Ｔｏ＿ＦＰ１」に設定される。ステップ３２１０で、受け取ったフレームがＸファブリックフレームでないと判定された場合、ステップ３２２０で、ＲＬＬは、受け取ったフレームがＹファブリックフレームであるか否か判定する。そうである場合、フレームは、ステップ３２２２から、Ｘファブリックフレームのための処理と対称的に、等価に処理される。そうでない場合、ステップ３２０８で、フレームをエラー処理のためにＦＣＰ層に宛先指定するよう、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。
【０１２６】
図３３は、図２９のステップ２９１８から呼び出される下位論理「宛先への経路指定」を表すフロー制御図である。この下位論理は、受け取ったＦＣフレームを、以前に呼び出された論理で決定された宛先に宛先指定する。ステップ３３０２で、ＲＬＬは、変数「宛先」の値が「Ｔｏ＿ＦＰ０」または「Ｔｏ＿ＦＰ１」であるか判定する。そうである場合、同じステップで、ＲＬＬは、宛先が、フレームが受け取られたポートと逆のポートと関連付けられているかどうか判定する。そうである場合、ステップ３３０４で、ＲＬＬは、変数「宛先」の内容によって指示される宛先が、Ｓファブリック端点を表すポートと関連付けられた待ち行列であるかどうか判定する。そうである場合、ステップ３３０６で、フレームをローカルＳファブリックから送り出す前に、ＦＣフレームヘッダのＤＦ＿ＣＴＬフィールド内で設定されている任意のＳビットがクリアされる。ステップ３３０８で、ＲＬＬは、フレームがＸファブリックとＹファブリックのどちらに属しているか判定し、ステップ３３１０または３３１２で、フレームを適切な出力待ち行列に入れる。ステップ３３０２で、変数「宛先」の内容が、ＦＰ０ポートまたはＦＰ１ポートを指示しておらず、または宛先が、ＦＣフレームが受け取られたポートと逆のポートではないと判定された場合、ステップ３３１４で、ＲＬＬは、変数「宛先」の内容が、フレームがＦＣポートの一方に宛先指定されるべきであると指示しているか否か判定する。フレームが、ＦＣポートの一方に宛先指定されるべきである場合、ステップ３３１６で、フレームは、ＦＣＰ層によるエラー処理のために、ＦＣＰ層に宛先指定される。ステップ３３１８で、ＲＬＬによって、変数「宛先」の内容が、フレームがＦＣＰ層に宛先指定されている、「Ｔｏ＿ＦＣＰ」を指示していると判定された場合、ステップ３３１６で、フレームは、ＦＣＰ層に宛先指定される。そうでない場合、ステップ３３２０で、ＲＬＬは、ＦＣフレームヘッダのＲ＿ＣＴＬフィールドが、フレームがＦＣＰフレームであると指示しているかどうかチェックする。そうでない場合、ステップ３３１６で、フレームは、エラー処理のためにＦＣＰ層に宛先指定される。そうである場合、ステップ３３２２で、ＲＬＬは、フレームがＦＣＰ＿ＣＭＮＤフレームであるか否か判定する。そうである場合、ステップ３３２４で、
下位論理「宛先のマップ」が呼び出され、その後、ＲＬＬは、ステップ３３２６で、変数「宛先」の内容が、「Ｔｏ＿ＦＣＰ」に等しいままであるか否か判定する。そうである場合、ステップ３３１６で、フレームは、ＦＣＰ層に宛先指定される。そうでない場合に、ステップ３３２８で、変数「宛先」の内容が、現時点で、２つのＦＣポートの１つへのフレームの転送を指示しており、ＦＣポート宛先が、フレームが受け取られたのと同じＦＣポートであると判定された場合には、ステップ３３１６で、フレームは、エラー処理のためにＦＣＰ層に宛先指定される。そうでない場合、制御は、ステップ３３０４に進み、フレームを２つのＦＣＰポートの１つの待ち行列に入れる。ステップ３３２２で、フレームが、ＦＣＰ＿ＣＭＮＤフレームでないと判定された場合、ステップ３３３０で、下位論理「その他の経路指定」が呼び出される。
【０１２７】
図３４は、ステップ３３２４で呼び出される下位論理「宛先のマップ」を表すフロー制御図である。ＲＬＬは、まず、ステップ３４０２で、ＬＵＮ、ＬＢＡ、またはＬＵＮとＬＢＡとの組み合わせのマッピングが、ストレージシェルフ・ルータによって現在実行されているかどうか判定する。そうでない場合、ＲＬＬは、ステップ３４０４で、ストレージシェルフ・ルータが、現在、透過モードで動作しているかどうか判定する。そうである場合、ステップ３４０６で、変数「宛先」の値が「Ｔｏ＿ＦＣＰ」に設定される。ステップ３４０４で、ストレージシェルフ・ルータが、透過モードで動作していないと判定された場合、ＲＬＬは、ステップ３４０８で、適切なＬＰＴ表が、フレームのソースがフレームの宛先とデータを交換するためにログインしていることを指示しているかどうか判定する。そうである場合、ステップ３４０６で、変数「宛先」が「Ｔｏ＿ＦＣＰ」に設定される。そうでない場合、ステップ３４０６で、フレームをエラー処理のためにＣＰＵに宛先指定するように、宛先は、やはり、「Ｔｏ＿ＦＣＰ」に設定される。ＬＵＮ、ＬＢＡ、またはＬＵＮとＬＢＡの組み合わせのマッピングが、ストレージシェルフ・ルータによって実行されている場合、ＲＬＬは、ステップ３４１０で、指定された宛先ディスクが、ＩＲＴ表に関連付けられたエントリを持つかどうか判定する。そうである場合、制御がステップ３４０４に進む。そうでない場合、ステップ３４１２で、ＲＬＬは、範囲チェックが無効にされているか否か判定する。範囲チェックが無効にされている場合、ステップ３４１４で、ＲＬＬは、フレームがＦＰ０ポートで受け取られたかどうか判定する。そうである場合、ステップ３４１６で、変数「宛先」が、「Ｔｏ＿ＦＰ１」に設定される。そうでない場合、ステップ３４１８で、変数「宛先」の内容が、「Ｔｏ＿ＦＰ０」に設定される。宛先チェックが有効にされている場合、ステップ３４２０で、ＲＬＬは、指定された宛先ディスクがＦＰ０ポートを介してアクセス可能であるかどうか判定する。そうである場合、制御はステップ３４１８に進む。そうでない場合、ステップ３４２２で、ＲＬＬは、指定された宛先ディスクが、ＦＣポートＦＰ１を介してアクセス可能であるかどうか判定する。そうである場合、制御はステップ３４１６に進む。そうでない場合、ステップ３４０６
で、変数「宛先」は、エラー処理のために、「Ｔｏ＿ＦＣＰ」に設定される。最後のステップとして、ステップ３４１６または３４１８で２つのＦＣポートの一方にマップされたフレームについて、ＲＬＬは、ステップ３４２４で、フレームが現在宛先指定されているポートがＳ空間端点であるかどうか判定する。そうである場合、ステップ３４０６で、変数「宛先」の値は、フレームをエラー処理のためにＦＣＰに宛先指定するように、「Ｔｏ＿ＦＣＰ」に設定される。
【０１２８】
図３５は、図３３のステップ３３３０における、下位論理「その他の経路指定」を表すフロー制御図である。ステップ３５０２で、ＲＬＬは、フレームのＲＸ＿ＩＤフィールドが、現在のストレージシェルフ・ルータ、または現在のストレージシェルフ・ルータに接続されているディスクドライブが、フレームのＦＣ応答側であるかどうか判定する。そうである場合、ステップ３５０４で、ＲＬＬは、フレームがＦＣＰ＿ＤＡＴＡフレームであるか否か判定する。そうである場合、ステップ３５０６で、ＲＬＬは、フレームの有効なコンテキストがあるか否か判定する。そうである場合、ステップ３５０８で、フレームは、前述のように、データのＳＡＴＡポートへの転送のために、「Ｔｏ＿ＧＳＭＳ」で、ＧＳＭＳに宛先指定される。そうでない場合、ステップ３５１０で、フレームは、エラー処理のためにＦＣＰ層に宛先指定される。ステップ３５０２で、ＦＣフレームヘッダのＲＸ＿ＩＤフィールドが、このストレージシェルフ・ルータをフレームのＦＣ応答側でないと指示していると判定された場合、ステップ３５１２で、ＲＬＬは、ＦＣフレームヘッダ内のＲＸ＿ＩＤフィールドによって識別されるストレージシェルフ・ルータが、フレームが受け取られたポートと逆のポートを介してアクセス可能であるかどうか判定する。そうでない場合、フレームは、ＦＣＰ層によるエラー処理のために、待ち行列「Ｔｏ＿ＦＣＰ」に入れられる。そうではなく、ＲＸ＿ＩＤが、フレームを受け取ったポートと逆のポートからアクセス可能なストレージシェルフ・ルータを識別している場合、ＲＬＬは、ステップ３５１４で、そのポートがＳファブリック端点であるかどうか判定する。そうである場合、ステップ３５１６で、ＲＬＬは、ＦＣフレームヘッダのＤＦ＿ＣＴＬフィールド内で設定されている任意のＳ空間ビットを除去する。ステップ３５１８で、ＲＬＬは、フレームがＸファブリックとＹファブリックのどちらに属しているか判定し、ステップ３５２０または３５２２で、フレームが属しているファブリックに適したポートのＦＩＦＯにフレームを書き込む。
【０１２９】
ＳＣＳＩコマンド／ＡＴＡコマンド変換
前述のように、本発明の一実施形態を表すストレージシェルフ・ルータは、ディスクアレイ制御によってストレージシェルフ・ルータに宛先指定されたＦＣＰ＿ＣＭＮＤフレームを、あたかもＦＣＰ＿ＣＭＮＤフレームが、ＦＣディスクドライブに宛先指定されたかのように処理し、ＳＣＳＩコマンドを実行するために、ＦＣＰ＿ＣＭＮＤフレーム内のＳＣＳＩコマンドを、１つまたはＳＡＴＡディスクドライブに送られ得るよりも多くのＡＴＡコマンドに変換する。以下の表５に、ストレージシェルフ・ルータによって受け取られるＳＣＳＩコマンドと、ＳＣＳＩコマンドを実行するのに使用されるＡＴＡコマンドの間の対応を示す。
【表５】
2008537805.tif 000005
【０１３０】
ストレージシェルフ抽象化層
ストレージシェルフ設計は、ストレージシェルフ内のすべてのディスクドライブが、均一の容量および構成、均一の動作挙動、ならびに均一のコマンド／制御インターフェースを提供することを要件とすることによって、簡略化され、円滑化されるはずである。その場合、ストレージシェルフファームウェア、またはその他のストレージシェルフ管理論理は、明確に、均一な容量、動作挙動、およびインターフェースのディスクドライブを管理するように設計され得るはずである。しかしながら、かかる制約条件は経済的に実現不可能であり、どんな特定のストレージシェルフ実装形態も、急速に、ほとんど即座に陳腐化を運命付けられることになる。たとえ、ストレージシェルフにおいて、単一のディスクドライブ製造者によって製造される１タイプのディスクドライブだけを断固として使用することが、可能であり、商業的に実現であったとしても、そのストレージシェルフ実装形態は、改善と、選択された任意の特定のディスクドライブの新しいバージョンによって急速に古いものになるはずである。
【０１３１】
代わりに、ストレージシェルフが、ストレージシェルフ抽象化層を用いることによって、ストレージシェルフ製造者によって使用される様々なタイプの物理的ディスクドライブを効率よく収容し、管理するように設計されている。非常に一般的な場合には、ストレージシェルフ論理は、多種多様な通信媒体および入出力ポートを介してコントローラにインターフェースする極めて多種多様なディスクドライブのいずれかを管理するように設計され得る。以下で論じる実施形態では、ストレージシェルフが、様々な製造者によって製造される多種多様なパラレルＡＴＡ（「ＰＡＴＡ」）およびシリアルＡＴＡ（「ＳＡＴＡ」）ディスクドライブのいずれかを管理できるようにするために、よりやや制限的な手法が提供される。このよりやや制限的な手法では、ストレージシェルフ管理論理は、ストレージシェルフ内に含まれる様々なタイプのディスクドライブのいずれもが、ＡＴＡポートを介してストレージシェルフ管理論理にインターフェースすることができると想定している。したがって、ストレージシェルフ抽象化層は、前節で説明したＡＴＡ通信プロトコルの一般的なフレームワーク内のＡＴＡディスクドライブの挙動の違いの処理に関与する必要がある。しかしながら、このより制限的なストレージシェルフ抽象化層、すなわちディスクドライブ適合層を設計し、実施する際に用いられる技法は、一般に、異なる入出力プロトコルを用いて非ＡＴＡディスクドライブ、および非ディスク記憶装置さえも処理する複数のタイプの入出力ポートを収容し得る適合層に適用することができる。
【０１３２】
ストレージシェルフ抽象化層は、第三者ベンダが提供するディスクドライブおよびディスクドライブ制御論理における欠陥およびバグを改善し、ディスクドライブが提供する機能およびインターフェースの上に追加の制御論理をオーバーレイすることによって、望ましいＡＴＡ機能を、ＡＴＡディスクドライブベンダ業界によるそれらの採用および標準化の前に提供し、ＡＴＡのエラーコード、状況コード、および他のＡＴＡ特有の情報を、他の規格および他のタイプの装置で使用されるエラーおよび状況コードにマップし、専用の機能および特性を、標準のＡＴＡ機能および特性にマップするのに使用され得る。一般に、ストレージシェルフ抽象化層は、個々のディスクドライブと、多くの実施形態におけるストレージシェルフ・ルータなどの、ストレージシェルフ内の残りの論理コンポーネントとによって提供されるインターフェースと機能の組の間に、任意のインターフェースと機能の組を置いてもよい。
【０１３３】
一実施形態では、ストレージシェルフ・ルータ内にディスクドライブ適合層が実施されてもよい。図３６に、ストレージシェルフ・ルータ内のディスクドライブ適合層の概念を示す。前の小節で論じたように、ストレージシェルフ・ルータ３６０５全体は、本質的に、ディスクアレイコントローラ３６０６または他のハイエンド記憶管理コンポーネントに対して、図３６において面３６０４で表す、適合層およびインターフェースとして働く。ストレージシェルフ・ルータ３６０２は、ディスクアレイコントローラへの、適合層３６０４を介したインターフェースを示す。このディスクアレイコントローラは、ストレージシェルフ内のＡＴＡディスクドライブ３６０８〜３６１１をディスクアレイコントローラ３６０６に対して、あたかもそれらが、ハイエンド、デュアルポートファイバチャネルディスクであるかのように示す。この小節では、ストレージシェルフ・ルータ３６０２内で実施されたディスクドライブ適合層３６１２は、ストレージシェルフ・ルータファームウェアの大部分へのインターフェースを提供する。このファームウェアは、ストレージシェルフ内のＡＴＡディスクドライブ３６０８〜３６１１を、多少異なる動作挙動を呈し、したがって、幅広い、別個のファームウェア管理論理を必要とする、異なる製造者によって製造された、恐らく異なるタイプのＡＴＡディスクの集合体としてではなく、同じファームウェアとして見ることができる。
【０１３４】
以前の小節で、ＡＴＡディスクドライブのコマンドインターフェースについて論じている。ＡＴＡディスクドライブによってサポートされるコマンドの１つが、装置識別コマンドであり、ストレージシェルフ・ルータなどのインターフェース制御コンポーネントが、そのディスクドライブ特有のタイプ、製造者、ファームウェアリビジョン、容量、およびその他のかかるパラメータおよび特性に関する詳細情報を獲得するために、ＡＴＡディスクドライブに発行することができる。図３７に、装置識別コマンドを受け取ったことに応答してＡＴＡディスクドライブによって返されるフォーマット設定済みの５１２バイト情報ブロックを示す。この情報ブロックで返されるフィールドのいくつかを図３７に明示的に示す。例えば、この情報ブロックは、アドレス指定可能なシリンダ数３７０２と、ユーザがアドレス指定可能なヘッド数３７０４と、１トラック当たりのフォーマット設定されていないバイト数３７０６と、１セクタ当たりのフォーマット設定されていないバイト数３７０８と、ユーザがアドレス指定可能なセクタ数３７１０などを記述する１６ビット整数フィールドを含む。この情報ブロックは、２０バイトのパディングされた連番３７１２と、８バイトのファームウェアリビジョン番号３７１４と、４０バイトのパディングされたモデル番号３７１６と、現在のシリンダ数３７１８、ヘッド数３７２０および１トラック当たりのセクタ数のための別の１６ビット整数フィールドと、容量をセクタ単位で指示する３２ビット整数フィールド３７２４を含む。よって、装置識別コマンドを発行することによって、ストレージシェルフ・ルータは、ディスクドライブの主要なパラメータの多くを決定することができる。
【０１３５】
ディスクドライブ適合層の１つの機能が、ストレージシェルフ内の各ディスクドライブごとの一般的な現在の特性を格納しているディスクドライブ構成表、またはディスクドライブ構成表に相当するものである。図３８に、ディスクドライブ構成表の１つの可能な実装形態を示す。ディスクドライブ構成表３８０２は、ストレージシェルフ内の各ディスクドライブスロットごとに１つのエントリを含む。エントリ３８０４など、ディスクドライブ構成表内の各エントリは、ディスクドライブの現在の特性を指定する数値フィールド３８０６〜３８１３を含む。１つのエントリ３８０６は、以下で論じる、ディスクドライブのタイプに対応するディスクプロファイル表内のエントリを指定する。
【０１３６】
ディスクドライブ構成表は、種々の方法で実施されてもよく、多種多様なフォーマットおよびレイアウトがあってもよい。いくつかの実施形態では、ストレージシェルフ内の各ストレージシェルフ・ルータが、ストレージシェルフ内の実行できるディスクドライブごとのスロットを備えるディスクドライブ構成表を別々に維持していてもよい。別の実施形態では、ディスクドライブ構成表が分散されており、各ストレージシェルフ・ルータが、任意の可能な通常の、またはフェイルオーバ動作モードの下で制御し得るディスクドライブだけのエントリを維持していてもよい。別の実施形態では、ディスクドライブ構成表が、ストレージシェルフ・ルータ以外の論理およびコンポーネントによって維持されていてもよい。単一のディスクドライブ構成表にあるのではなく、図３８に示すディスクドライブ構成表エントリ内の情報が、複数のデータ構造およびメモリ位置にわたって分散されていてもよい。
【０１３７】
ディスクドライブ適合層の第２の機能が、ディスクプロファイル表である。図３９に、いくつかの実施形態で使用される、ストレージシェルフ内で実施されるディスクプロファイル表の１つの可能な実装形態を示す。ディスクプロファイル表３９０２は、好都合には、ディスクプロファイル表内のエントリをシステム管理者が変更できるように、ストレージシェルフ・ルータファームウェアからも、ストレージシェルフコンソールアプリケーションからもアクセス可能な、フラッシュメモリなどの不揮発性メモリに格納されている。ディスクプロファイル表は、ストレージシェルフ内に存在し得るディスクドライブの各タイプごとに別々のエントリを含み、ストレージシェルフ・ルータの、最初に電源オンされるディスクドライブと、装置識別コマンドによって返される情報によって、具体的なディスクドライブのタイプにマッチングさせることのできないディスクドライブとのデフォルトの対話を可能にするデフォルトエントリを含む。代替の実施形態では、ディスクプロファイル表は、ストレージシェルフ・ルータ以外の論理およびコンポーネントによって維持される。
【０１３８】
ディスクプロファイル表の各エントリに格納されている情報は、装置識別コマンドに応答してディスクドライブによって返された５１２バイト情報ブロックから収集され得る情報と、様々なタイプの経験的情報および実験的に決定された情報の組み合わせである。例えば、以下で論じる、ディスクプロファイル表エントリ内のいくつかのフィールドは、ストレージシェルフ論理が、どのようにして、そのエントリに対応するディスクドライブのタイプを有するディスクドライブをリセットしようとすべきか指定する。ディスクドライブをリセットする方法は、装置識別コマンドに応答してディスクドライブによって返される５１２バイトの情報ブロックで報告されるディスクドライブのタイプおよび様々なディスクドライブ特性によって決まり、また、実験的な、試行錯誤法によって、ストレージシェルフ製造者およびストレージシェルフ設計者が収集した経験的特性にも左右される。ディスクプロファイル表の一実施形態では、各エントリが、以下のフィールドを含む。（１）ＤＰＦ＿ＭＯＤＥＬ３９０４、装置識別コマンドに応答してディスクドライブによって返される情報ブロック内のモデル番号フィールド（図３７の３７１６）から獲得されるそのタイプのディスクドライブのモデル番号、（２）ＤＰＦ＿ＦＷＲＥＶ３９０６、やはり、装置識別コマンドに応答して情報ブロックで返される、そのタイプのディスクドライブのファームウェアリビジョン番号、（３）ＤＰＦ＿ＦＥＡＴＵＲＥＳ３９０８、そのタイプのディスクドライブに適したリセット方法を指示するビットフラグを含む情報フィールド、（４）ＤＰＦ＿ＲＢＳ３９１０、ディスクドライブ転送特性に関連する性能調整メトリックである、そのタイプのディスクドライブの読取りバーストサイズを指定する整数フィールド、（５）ＤＰＦ＿ＷＢＳ３９１２、やはり、ディスクドライブ転送特性に関連する性能調整メトリックである、そのタイプのディスクの書込みバーストサイズを指定する整数フィールド、（６）ＤＰＦ＿ＰＷＲＣ３９１４、このタイプのドライブが、リセット手順の一部として電源オフされる場合に、ドライブが電源オフされる時間を、１００ミリ秒単位で指定する整数フィールド、（７）ＤＰＦ＿ＲＴＯＶ３９１６、リセット試行に続いて、そのタイプのディスクドライブが応答するのを待つミリ秒数を指定する整数フィー
ルド、（８）ＤＰＦ＿ＴＹＰＥ３９１８、そのタイプのディスクドライブを指定する整数フィールド、（９）ＤＰＦ＿ＭＵＬＴ３９１９、ハードリセットが試みられる場合の、ＤＰＦ＿ＲＴＯＶ値の増倍率。図３９では、様々なディスクプロファイル表フィールドの長さを示すために、ディスクプロファイル表３９０２の最下行３９２０が、１バイト長単位で増分されることに留意されたい。
【０１３９】
図４０Ａ〜Ｂに、装置プロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのフォーマットおよび内容を示す。図４０に、ＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのフォーマットを示す。ＤＰＦ＿ＦＥＡＴＵＲＥＳフィールド４０００は、（１）そのタイプのディスクドライブをリセットするのにハードリセットが用いられ得ることを指示するＨＲ４００２と、（２）その装置をリセットするのに電源オフ／電源オンサイクルが使用され得るか否か指示するＤＨＰＣ４００４と、（３）そのタイプのディスクドライブをリセットするのにソフトリセットが使用され得るかどうか指示するＳＲ４００６と、（４）ＷＲＩＴＥ−ＳＡＭＥ加速機能が有効にされているかどうか指示するＷＳ４００８という、４つの１ビットフィールドを含む。図４０Ｂに、ＤＰＦ＿ＦＥＡＴＵＲＥＳフィールド内のＨＲ、ＤＨＰＣ、およびＳＲビットフィールドの値に応じて、ストレージシェルフ・ルータ論理によって用いられるリセット方法を指示する表を示す。行４０１０に示すように、ＳＲおよびＨＲビットが設定されているとき、ストレージシェルフ論理は、ディスクドライブをリセットするために、まず、ソフトリセットを試行し、次いで、ソフトリセットに失敗した場合には、ハードリセットを試行してもよい。行４０１２に表すように、ＳＲおよびＤＨＰＣビットフィールドが設定されているとき、ストレージシェルフ論理は、ディスクドライブをリセットするために、まず、ソフトリセットを試行し、それに失敗した場合、次いで、ディスクドライブに電源サイクルを使用する。行４０１４に示すように、ＨＲおよびＤＨＰＣビットが設定されているとき、ストレージシェルフ論理は、ディスクドライブをリセットするために、まず、ハードリセットを使用し、それに失敗した場合、次いで、ディスクドライブに電源サイクルを使用する。最後に、行４０１６に示すように、３つのＳＲ、ＨＲ，ＤＨＰＣビット全部が設定されているとき、ストレージシェルフ論理は、ディスクドライブをリセットするために、まず、ソフトリセットを試行し、次いで、ソフトリセットに失敗した場合には、ハードリセットを、最後に、ハードウェアにもソフトリセットにも失敗した場合には、ディスクドライブに電源サイクルを使用する。
【０１４０】
図４１に、ＤＰＦ＿ＴＹＰＥフィールドの値が、様々なタイプのＡＴＡディスクドライブのテキスト記述と関連付けられている表を示す。この表は、ディスクプロファイル表の一実施形態において、ディスクプロファイル表エントリのＤＰＦ＿ＴＹＰＥフィールド（図３９の３９１８）の値として使用されるディスクドライブタイプの符号化の一実施形態を表すものである。
【０１４１】
図４２に、ストレージシェルフ論理が、最初に、新しく電源オンされたディスクドライブに応答し、装置識別コマンドに応答して返された情報ブロックの内容からそのタイプを完全に特徴付けることができないディスクドライブを管理し、または装置識別コマンドに応答してエラーを返すディスクドライブを管理することができるように、ディスクプロファイル表の最初の位置に置かれる、デフォルトのディスクプロファイル表エントリの内容を示す。加えて、個別のディスクプロファイル表エントリのいずれかが、初期設定されていない、または誤って指定されたフィールドの値を含むとき、ストレージシェルフ論理は、初期設定されていない、または誤って指定された値を含むエントリに対応するディスクドライブを管理するために、図４２に示す、デフォルトのディスクプロファイル表エントリの使用に頼る。図４２に示すように、デフォルトのディスクプロファイル表エントリでは、ＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのＳＲビットおよびＤＨＰＣビットが設定されており、３２セクタの読取りバーストサイズを含み、６４セクタの書込みバーストサイズを含み、８．５秒の電力サイクル回復タイムアウト値を含み、１秒のリセットタイムアウト値を含み、「Ｍａｘｔｏｒ  ＳＡＴＡ」というディスクドライブのタイプを含む。
【０１４２】
図３９に示すディスクプロファイル表の例に戻って、ディスクプロファイル表エントリの内容および順序のいくつかの特徴を考察する。第１に、前述のように、デフォルトのディスクプロファイル表エントリが、表の最初の位置、すなわち行に表示されている。第２に、第３の表エントリ３９２２に示すように、ＤＰＦ＿ＭＯＤＥＬフィールドおよびＤＰＦ＿ＦＷＲＥＶフィールド内の任意の数の記号を、ワイルドカード文字「？」で置き換えることができる。これらのワイルドカード文字は、表エントリが、そのエントリのこれらのフィールドで指定されている、ワイルドカード記号を含むモデル番号またはファームウェアリビジョン番号の一部にしかマッチしないファームウェアリビジョン番号のモデル番号をウィザードするいくつかの関連するディスクドライブを表すことを可能にする。例えば、最初の７文字が「ＨＤＳ７２２５」のモデル番号を有するディスクドライブは、エントリ３９２２の部分的に指定されたモデル番号とマッチする。この場合、どんなファームウェアリビジョン番号も、このエントリの全く指定されていないファームウェアリビジョン番号とマッチする。ストレージシェルフ論理が、装置識別コマンドに応答して返された、５１２バイト情報ブロックで返された情報を、ディスクプロファイル表エントリとマッチングさせようとするとき、ストレージシェルフ論理は、ディスクプロファイル表を、最上部のデフォルトエントリに続くエントリからサーチし始める。したがって、ディスクドライブが、表で見つかる最も明確に指定されたエントリとマッチングされるように、最も明確で完全に特徴付けられたモデル番号およびファームウェアリビジョン番号を含む最も明確で完全に特徴付けられたエントリが、ディスクプロファイル表内の部分的に指定されたエントリの前に配置されるべきである。当然ながら、代替の実施形態では、ストレージシェルフ論理が、ディスクプロファイル表での表示順序とは無関係に、最も明確なマッチングエントリを求めて表全体をサーチしてもよい。
【０１４３】
図４３は、ストレージシェルフ内の新しく電源オンされたディスクドライブによって生成された電源オン割込みに応答するために、ストレージシェルフファームウェアによって使用されるファームウェア電源オンルーチンを表すフロー制御図である。まず、ステップ４３０２で、ストレージシェルフ・ルータは、ＳＡＴＡまたはＰＡＴＡポートから、一般に割込みの形でそのポートに接続されたディスクドライブの電源オン状態を指示する割込みを受け取る。次に、ステップ４３０４で、ストレージシェルフ論理は、デフォルトのプロファイル表エントリ内の情報を使って、装置識別コマンドのディスクドライブへの送出から生じている任意のエラー条件を解釈する。ステップ４３０６で、ストレージシェルフ論理は、ステップ４３０４で発行された装置識別要求に応答して５１２バイト情報ブロックを受け取る。ステップ４３０８で、ストレージシェルフ論理は、ディスクドライブのポート番号を使って、ディスクドライブ構成表内の対応するエントリを識別し、情報ブロック内のモデル番号およびファームウェアリビジョン番号を使って、ドライブプロファイル表内の対応するエントリをサーチする。ステップ４３１０で、適切なドライブプロファイル表エントリが見つかったと判定された場合、ステップ４３１２で、ディスクドライブに対応するディスクドライブ構成表エントリ内のフィールドが、見つかったプロファイル表エントリ（図３８の３８０６）を指し示すように設定される。そうでない場合、ステップ４３１４で、ディスクドライブ構成表エントリ内のフィールドは、デフォルトのディスクプロファイル表エントリを指し示すように設定される。次いで、ステップ４３１６〜４３１９のｆｏｒループで、ストレージシェルフ論理は、受け取った情報ブロックの内容と、ストレージシェルフ・ルータファームウェア内にカプセル化されている別の情報とから、ディスクドライブに対応するディスクドライブ構成表エントリ内のすべてのフィールド値を決定する。
【０１４４】
ディスクドライブ構成表とディスクプロファイル表とに格納されている情報は、ストレージシェルフ論理が、少なくとも、デフォルトのディスクプロファイル表エントリで符号化されているディスクドライブ挙動および特性に従って動作する任意のＡＴＡディスクドライブを管理することを可能にする。これらの表に格納されている情報を使用して、ストレージシェルフ論理は、特定の処置を、特定のタイプのディスクドライブと、様々なタイプのディスクドライブの現在の状態とに適合させることができる。よって、これらの表、およびこれらの表にアクセスし、これらの表に格納されている値に基づく実行のためのルーチンまたはコードセグメントを選択する対応するストレージシェルフ・ルータファームウェアは、本発明の一実施形態を表すディスクドライブ適合層の一実施形態を構成する。ストレージシェルフ・ルータファームウェアが、どのようにして、ディスクプロファイル表に格納されている情報を用いるかの一例として、次に、ストレージシェルフ論理によって使用されるリセット手順を説明する。
【０１４５】
図４４は、ストレージシェルフ論理によって実行されるリセット手順を示す制御フロー図である。ステップ４４０２で、ストレージシェルフ論理は、特定のディスクドライブをリセットすることを決定すると、そのドライブに対応するディスクドライブ構成表エントリを識別し、それにアクセスする。そのエントリに格納されたポインタを使って、ストレージシェルフ論理は、ステップ４４０４で、そのディスクドライブに対応するディスクプロファイル表エントリにアクセスする。ステップ４４０６で、ディスクプロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのＳＲビットが設定されていると判定された場合、ストレージシェルフ論理は、ステップ４４０８で、ディスクドライブにソフトリセットを発行し、割込み応答を待つ。ステップ４４１０で、ドライブが正しく応答したと判定された場合、リセットが完了しており、ステップ４４１２で、ファームウェアルーチンが戻る。そうでない場合、または４４０８でソフトリセットが試みられなかったとき、ステップ４４１４で、ストレージシェルフ論理は、ディスクプロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールド内のＨＲビットフィールドが設定されているか否か判定する。そうである場合、ストレージシェルフ論理は、ステップ４４１６で、ディスクドライブにハードリセットを発行し、応答を待つ。ステップ４４１８で、ディスクドライブが正しく応答したと判定された場合、リセットが完了し、ステップ４４２０でファームウェアリセットルーチンが戻る。そうでない場合、またはステップ４４１６でハードリセットが発行されなかったとき、ストレージシェルフ論理は、ステップ４４２２で、ディスクプロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールド内のＤＨＰＣビットフィールドが設定されているかどうか判定する。そうである場合、ステップ４４２４で、ストレージシェルフ論理は、ディスクドライブの電源オフ／電源オンを行い、ディスクドライブからの応答を待つ。ステップ４４２６で、ドライブが正しく応答したと判定された場合、リセットが完了しており、ステップ４４２８で、リセットルーチンが戻る。そうでない場合、またはステップ４４２４で電源オフ／電源オンが行われなかったときには、ディスクリセットに失敗している。その場合、ストレージシェルフ論理は、ステップ４４３０で
、リセット失敗のフラグを立て、必要な任意のリセット失敗処置に着手し、次いで、ステップ４４３２で、失敗状態を返す。ソフトリセット、ハードリセット、または電源オフ／電源オンサイクルを発行した後、それぞれ、ステップ４４０８、４４１６、４４２４で、ストレージシェルフ論理が待機する期間は、ステップ４４０４で見出だされるディスクプロファイル表エントリのＤＰＦ＿ＲＴＯＶフィールドおよびＤＰＦ＿ＰＷＲＣフィールドによって指定されることに留意されたい。
【０１４６】
本発明は、特定の実施形態に関して説明されているが、本発明をこの実施形態だけに限定することは意図していない。当業者には、本発明の精神の範囲内の変更が明らかである。例えば、前述のように、ほとんど無数のディスクドライブ適合層の異なる実装形態が可能である。ディスクドライブ構成表およびディスクプロファイル表に格納される情報は、代替として、他のタイプの表または他のタイプのデータ構造に格納されていてもよい。加えて、ストレージシェルフが、非ＡＴＡディスクおよび非ディスク記憶装置とさえも対話し、それらを管理することを可能にする別の情報が格納されていてもよい。当然ながら、その場合、別の入出力ポートを含む別のハードウェアサポートが必要になる。システム管理者が、ディスクドライブ適合層で用いられるディスクプロファイル表およびその他のデータ構造を直接変更し、またはそこに情報を追加することを可能にするための、種々のユーザインターフェース表示インターフェースが実施されてもよい。ディスクドライブ適合層は、ストレージシェルフ・ルータの一部として実施されてもよく、ストレージシェルフの別個のコンポーネントとして実施されてもよく、別のストレージシェルフ管理コンポーネントの一部として実施されてもよい。
【０１４７】
本発明は、特定の実施形態に関して説明されているが、本発明をこの実施形態だけに限定することは意図していない。当業者には、本発明の精神の範囲内の変更が明らかである。例えば、ほとんど無数の異なる統合チップ設計および実装形態を使って、前述のストレージシェルフ・ルータおよびパス制御ガードの機能を実施することができる。前述の実施形態は、ファイバチャネルファブリックと相互接続されているストレージシェルフ・ルータに関するものであるが、ストレージシェルフ・ルータは、代替として、ストレージシェルフをディスクアレイコントローラおよびその他の電子装置と相互接続するのに使用される他のタイプの高帯域幅通信と相互接続するように設計されていてもよい。さらに、代替の実装形態では、ＳＡＴＡディスクドライブ以外の他のタイプの安価なディスクドライブが、ストレージシェルフ・ルータへの相互接続のために同様にサポートされていてもよい。異種のデータパケットフォーマット、コマンドスイート、および様々な相互接続プロトコルのその他の態様の間の変換が、前述の実施形態において変換が実行される層以外の層で実行されてもよい。前述のストレージシェルフ・ルータでは、内部機能が、一連の別個の論理コンポーネントとして説明されている。これらの論理コンポーネントは、説明を明確にするために、比較的恣意的に考案されているが、内部論理の論理コンポーネントへの他のマッピングも可能である。各種の代替の内部リンク、プロセッサ、構成、およびその他の実装詳細が、高帯域幅通信媒体とディスクドライブまたはその他のデータ記憶装置の間の通信メッセージの経路指定を実現するように設計され得る。ストレージシェルフ・ルータを使って、ディスクドライブ以外の他のタイプの大容量記憶装置が、電子装置コントローラと相互接続されてもよい。前述のストレージシェルフ・ルータは、通常、８台のディスクドライブを処理し、フェイルオーバモードでは、１６台のディスクドライブを処理することができるが、より多数の１次リンクおよび２次リンクを処理するために、ストレージシェルフ・ルータの代替形態が実施されてもよい。同様に、前述のストレージシェルフ・ルータは、高帯域幅通信媒体への２つの別々のポートを含むが、ストレージシェルフ内のストレージシェルフ・ルータの間でのより複雑な内部接続のために、さらに別のポー
トを含むことが望ましい。
【０１４８】
以上の記述では、説明として、本発明の十分な理解を提供するために、特定の用語が使用されている。しかしながら、本発明を実施するのにそれらの具体的詳細は必要でないことが、当業者には明らかである。他の例では、基礎をなす発明からの不要な脱線を回避するために、周知の回路および装置が、ブロック図の形で示されている。よって、以上の本発明の具体的な実施形態の記述は、図示と説明のために提示されているものであり、網羅的であることも、本発明を開示通りの形だけに限定することも意図されておらず、前述の教示を考慮すれば多くの変更および変形が可能であることは自明である。各実施形態は、本発明の原理およびその実用化を最も適切に説明し、それによって、当業者が、本発明、および企図される特定の用途に適した様々な変更を伴う様々な実施形態を最適に利用することができるように、選択され、説明されたものである。本発明の範囲は、添付の特許請求の範囲およびその均等物によって定義されるものである。
【図面の簡単な説明】
【０１４９】
【図１Ａ】３つの異なるタイプのＦＣ相互接続トポロジを示す図である。
【図１Ｂ】３つの異なるタイプのＦＣ相互接続トポロジを示す図である。
【図１Ｃ】３つの異なるタイプのＦＣ相互接続トポロジを示す図である。
【図２】ＦＣネットワークを介した転送でデータを時間的に編成するための非常に単純な階層を示す図である。
【図３】標準ＦＣフレームの内容を示す図である。
【図４】ＳＣＳＩバスを含む一般のパーソナルコンピュータアーキテクチャを示すブロック図である。
【図５】ＳＣＳＩバストポロジを示す図である。
【図６Ａ】読取りおよび書込み入出力操作の開始および実施に関与するＳＣＳＩプロトコルを示す図である。
【図６Ｂ】読取りおよび書込み入出力操作の開始および実施に関与するＳＣＳＩプロトコルを示す図である。
【図６Ｃ】読取りおよび書込み入出力操作の開始および実施に関与するＳＣＳＩプロトコルを示す図である。
【図７Ａ】ＦＣプロトコルの、開始側と宛先の間で交換されるＳＣＳＩシーケンスと、図６Ａ〜Ｃに示すＳＣＳＩバスフェーズおよび状態の間のマッピングを示す図である。
【図７Ｂ】ＦＣプロトコルの、開始側と宛先の間で交換されるＳＣＳＩシーケンスと、図６Ａ〜Ｃに示すＳＣＳＩバスフェーズおよび状態の間のマッピングを示す図である。
【図８Ａ】ディスクアレイにおけるＦＣディスクの使用に関連するいくつかの問題を示す図である。
【図８Ｂ】ディスクアレイにおけるＦＣディスクの使用に関連するいくつかの問題を示す図である。
【図８Ｃ】ディスクアレイにおけるＦＣディスクの使用に関連するいくつかの問題を示す図である。
【図８Ｄ】ディスクアレイにおけるＦＣディスクの使用に関連するいくつかの問題を示す図である。
【図９】図８Ａ〜Ｄに用いられている図示規則を使った、本発明の一実施形態を表すストレージシェルフ・ルータを抽象的に示す図である。
【図１０】コンピュータおよびディスクアレイの階層的に相互接続されたシステム内での、本発明の一実施形態を表すストレージシェルフ・ルータによって占められている位置を示す図である。
【図１１】本発明の一実施形態を表すストレージシェルフ・ルータを使って実施されたストレージシェルフのコンポーネントを示す透視図である。
【図１２】本発明の一実施形態を表すストレージシェルフ・ルータを使って実施されたストレージシェルフのコンポーネントを示す透視図である。
【図１３Ａ】本発明の一実施形態を表すストレージシェルフ・ルータを使ったストレージシェルフの３つの異なる実装形態を示す図である。
【図１３Ｂ】本発明の一実施形態を表すストレージシェルフ・ルータを使ったストレージシェルフの３つの異なる実装形態を示す図である。
【図１３Ｃ】本発明の一実施形態を表すストレージシェルフ・ルータを使ったストレージシェルフの３つの異なる実装形態を示す図である。
【図１４Ａ】ＡＴＡディスクドライブを２つのストレージシェルフ・ルータと相互接続するのに適したパス制御カードの２つの実装形態を示す図である。
【図１４Ｂ】ＡＴＡディスクドライブを２つのストレージシェルフ・ルータと相互接続するのに適したパス制御カードの２つの実装形態を示す図である。
【図１５】ストレージシェルフ・ルータの主要な機能コンポーネントを示すハイレベルブロック図である。
【図１６Ａ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１６Ｂ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１６Ｃ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である
【図１６Ｄ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１６Ｅ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１６Ｆ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１６Ｇ】本発明の一実施形態を表す１つまたは複数のストレージシェルフ・ルータを組み込んでいる高可用性ストレージシェルフによって提供されるいくつかの異なる論理インターフェースを示す図である。
【図１７Ａ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１７Ｂ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１７Ｃ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１７Ｄ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１７Ｅ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１７Ｆ】本発明の一実施形態を表すストレージシェルフ・ルータを介したデータおよび制御情報の流れを示す図である。
【図１８】本発明の一実施形態を表すストレージシェルフ・ルータの論理コンポーネントを表す詳細なブロック図である。
【図１９】ＦＣポート層を示す詳細図である。
【図２０】経路指定層を表す詳細なブロック図である。
【図２１】ＦＣＰ層を表す詳細なブロック図である。
【図２２】ＳＡＴＡポート層を表す詳細なブロック図である。
【図２３】ＳＡＴＡポートを表す詳細なブロック図である。
【図２４】４ストレージシェルフ・ルータ可用性ストレージシェルフ内の経路指定トポロジを表す抽象図である。
【図２５】ディスクアレイの２ストレージシェルフ・ルータ２ストレージシェルフ実装形態内のＸおよびＹ  ＦＣ調停ループの相互接続を表す抽象図である。
【図２６Ａ】ＦＣフレームを、個々のストレージシェルフ・ルータに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す図である。
【図２６Ｂ】ＦＣフレームを、個々のストレージシェルフ・ルータに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す図である。
【図２６Ｃ】ＦＣフレームを、個々のストレージシェルフ・ルータに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す図である。
【図２６Ｄ】ＦＣフレームを、個々のストレージシェルフ・ルータに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す図である。
【図２６Ｅ】ＦＣフレームを、個々のストレージシェルフ・ルータに、または本発明の一実施形態を表すストレージシェルフ内の個々のＦＣポートを介してリモートエンティティに経路指定するのに使用されるＦＣフレームヘッダ内のデータフィールドを示す図である。
【図２７】経路指定層によるＦＣフレームの経路指定を円滑にするためにストレージシェルフ・ルータ内に維持される７つの主要な経路指定表を示す図である。
【図２８】フロー制御図で使用される簡略化した経路指定トポロジおよび経路指定宛先命名法を示す図である。
【図２９】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３０】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３１】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３２】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３３】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３４】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３５】経路指定層論理を記述する階層的な一連のフロー制御図である。
【図３６】ストレージシェルフ・ルータ内のディスクドライブ適合層の概念を示す図である。
【図３７】装置識別コマンドを受け取ったことに応答してＡＴＡディスクドライブによって返されるフォーマット設定された、５１２バイト情報ブロックを示す図である。
【図３８】ディスクドライブ構成表の１つの可能な実装形態を示す図である。
【図３９】ストレージシェルフ内で実施されるいくつかの実施形態で使用されるディスクドライブプロファイル表の１つの可能な実装形態を示す図である。
【図４０Ａ】装置プロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのフォーマットおよび内容を示す図である。
【図４０Ｂ】装置プロファイル表エントリのＤＰＦ＿ＦＥＡＴＵＲＥＳフィールドのフォーマットおよび内容を示す図である。
【図４１】ＤＰＦ＿ＴＹＰＥフィールドの値が、様々なタイプのＡＴＡディスクドライブのテキスト記述と関連付けられている表を示す図である。
【図４２】デフォルトのディスクプロファイル表エントリの内容を示す図である。
【図４３】ストレージシェルフ内の新たに電源オンされたディスクドライブによって生成された電源オン割込みに応答して、ストレージシェルタファームウェアによって使用されるファームウェア電源オンルーチンを表すフロー制御図である。
【図４４】ストレージシェルフ論理によって実行されるリセット手順を示す制御フロー図である。
【図１Ａ】
2008537805.tif 000006
【図１Ｂ】
2008537805.tif 000007
【図１Ｃ】
2008537805.tif 000008
【図２】
2008537805.tif 000009
【図３】
2008537805.tif 000010
【図４】
2008537805.tif 000011
【図５】
2008537805.tif 000012
【図６Ａ】
2008537805.tif 000013
【図６Ｂ】
2008537805.tif 000014
【図６Ｃ】
2008537805.tif 000015
【図７Ａ】
2008537805.tif 000016
【図７Ｂ】
2008537805.tif 000017
【図８Ａ】
2008537805.tif 000018
【図８Ｂ】
2008537805.tif 000019
【図８Ｃ】
2008537805.tif 000020
【図８Ｄ】
2008537805.tif 000021
【図９】
2008537805.tif 000022
【図１０】
2008537805.tif 000023
【図１１】
2008537805.tif 000024
【図１２】
2008537805.tif 000025
【図１３Ａ】
2008537805.tif 000026
【図１３Ｂ】
2008537805.tif 000027
【図１３Ｃ】
2008537805.tif 000028
【図１４Ａ】
2008537805.tif 000029
【図１４Ｂ】
2008537805.tif 000030
【図１５】
2008537805.tif 000031
【図１６Ａ】
2008537805.tif 000032
【図１６Ｂ】
2008537805.tif 000033
【図１６Ｃ】
2008537805.tif 000034
【図１６Ｄ】
2008537805.tif 000035
【図１６Ｅ】
2008537805.tif 000036
【図１６Ｆ】
2008537805.tif 000037
【図１６Ｇ】
2008537805.tif 000038
【図１７Ａ】
2008537805.tif 000039
【図１７Ｂ】
2008537805.tif 000040
【図１７Ｃ】
2008537805.tif 000041
【図１７Ｄ】
2008537805.tif 000042
【図１７Ｅ】
2008537805.tif 000043
【図１７Ｆ】
2008537805.tif 000044
【図１８】
2008537805.tif 000045
【図１９】
2008537805.tif 000046
【図２０】
2008537805.tif 000047
【図２１】
2008537805.tif 000048
【図２２】
2008537805.tif 000049
【図２３】
2008537805.tif 000050
【図２４】
2008537805.tif 000051
【図２５】
2008537805.tif 000052
【図２６Ａ】
2008537805.tif 000053
【図２６Ｂ】
2008537805.tif 000054
【図２６Ｃ】
2008537805.tif 000055
【図２６Ｄ】
2008537805.tif 000056
【図２６Ｅ】
2008537805.tif 000057
【図２７】
2008537805.tif 000058
【図２８】
2008537805.tif 000059
【図２９】
2008537805.tif 000060
【図３０】
2008537805.tif 000061
【図３１】
2008537805.tif 000062
【図３２】
2008537805.tif 000063
【図３３】
2008537805.tif 000064
【図３４】
2008537805.tif 000065
【図３５】
2008537805.tif 000066
【図３６】
2008537805.tif 000067
【図３７】
2008537805.tif 000068
【図３８】
2008537805.tif 000069
【図３９】
2008537805.tif 000070
【図４０Ａ】
2008537805.tif 000071
【図４０Ｂ】
2008537805.tif 000072
【図４１】
2008537805.tif 000073
【図４２】
2008537805.tif 000074
【図４３】
2008537805.tif 000075
【図４４】
2008537805.tif 000076
【手続補正書】
【提出日】平成19年10月24日(2007.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２つの通信媒体と相互接続されている複数のデータ記憶装置を含むストレージシェルフ内で用いられる単一の集積回路のストレージシェルフ・ルータであって、
第１の通信媒体ポートと、
第２の通信媒体ポートと、
１つまたは複数のプロセッサと、
ディスクドライブリンクを介して前記複数のデータ記憶装置にデータおよびコマンドを送る複数のデータ記憶装置リンクポートコンポーネントと、
前記第１および第２の通信媒体ポートを介して受け取られたコマンドを前記１つまたは複数のプロセッサに経路指定し、前記第１および第２の通信媒体ポートを介して受け取られたデータを前記複数のデータ記憶装置リンクポートコンポーネントに経路指定する経路指定論理と、
前記ストレージシェルフ・ルータが、異なるタイプのデータ記憶装置にインターフェースし、前記異なるタイプのデータ記憶装置を管理することができるディスクドライブ適合層と、
を含む単一の集積回路のストレージシェルフ・ルータ。
【請求項２】
前記ディスクドライブ適合層は、
各データ記憶装置の特性およびパラメータに関連する格納されたディスクドライブ情報と、
個々のタイプのデータ記憶装置のパラメータおよび特性を含むデータ記憶装置プロファイル表と、
前記データ記憶装置とインターフェースを取り、前記データ記憶装置を管理するために、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表にアクセスし、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表を使用するファームウェア論理と
を備える、請求項１に記載の単一の集積回路のストレージシェルフ・ルータ。
【請求項３】
前記データ記憶装置プロファイル表は、複数のデータ記憶装置プロファイル表エントリを含み、
それぞれのデータ記憶装置プロファイル表エントリは、
前記データ記憶装置プロファイル表エントリによって表されるタイプのディスクドライブのリセット戦略を指示するフィールドと、
モデル番号の完全な、または部分的な仕様を指示するフィールドと、
ファームウェアリビジョン番号の完全な、または部分的な仕様を指示するフィールドと、
転送特性および調整することができるパラメータの一方または両方を指示する１つまたは複数のフィールドと、
電源オフ／電源オン待機期間を指示するフィールドと、
ハードウェア／ソフトリセット待機期間を指示するフィールドと、
データ記憶装置のタイプを指示するフィールドと
を含む、請求項２に記載の単一の集積回路のストレージシェルフ・ルータ。
【請求項４】
データ記憶装置に処置を実行するよう指図するのにどのファームウェア論理を呼び出すべきか決定するために前記データ記憶装置に対応するデータ記憶装置プロファイル表エントリにアクセスするファームウェアを含む、請求項２に記載の単一の集積回路のストレージシェルフ・ルータ。
【請求項５】
前記データ記憶装置プロファイル表エントリから、データ記憶装置をリセットしようとするファームウェアであって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセットが使用され得ると指示しているときには、前記データ記憶装置にソフトリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にハードリセットが使用され得ると指示しているときで、前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセット使用され得ず、または前記装置に発行されたソフトリセットが失敗したと指示しているときには、前記データ記憶装置にハードリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置に電源オフ／電源オンサイクルが使用され得ると指示しているときで、ソフトおよびハードウェアリセットが試行されておらず、または試行されて、失敗しているときには、前記データ記憶装置の電源をオフにしてから前記データ記憶装置の電源をオンにし、前記装置が正しく応答したときに、正常なリセットを指示することによって
前記データ記憶装置をリセットしようとする前記ファームウェアを含む、請求項４に記載の単一の集積回路のストレージシェルフ・ルータ。
【請求項６】
前記ファームウェアは、ソフトリセット、ハードリセット、および電源オフ／電源オンサイクルの１つに続いて、異なるタイプのリセットに着手し、またはリセット失敗を指示する前に、対応するデータ記憶装置プロファイル表エントリによって前記タイプの前記データ記憶装置に指定されている期間にわたって待機する、請求項５に記載の単一の集積回路のストレージシェルフ・ルータ。
【請求項７】
前記データ記憶装置プロファイル表は、前記ストレージシェルフ・ルータと、システム管理者またはその他のユーザが、前記データ記憶装置プロファイル表内の値を変更し、または前記データ記憶装置プロファイル表に値およびエントリを追加することができるユーザインターフェースを提供するコンソールアプリケーションとによってアクセスすることができる不揮発性メモリに格納されている、請求項１に記載のストレージシェルフ・ルータ。
【請求項８】
単一の集積回路のストレージシェルフ・ルータ内に実装され、該ストレージシェルフ内で、該ストレージシェルフが、異なるタイプのデータ記憶装置にインターフェースし、前記異なるタイプのデータ記憶装置を管理することができるディスクドライブ適合層であって、
各データ記憶装置の特性およびパラメータに関連する格納されたディスクドライブ情報と、
個々のタイプのデータ記憶装置のパラメータおよび特性を含むデータ記憶装置プロファイル表と、
前記データ記憶装置とインターフェースを取り、前記データ記憶装置を管理するために、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表にアクセスし、前記格納されたディスクドライブ情報および前記データ記憶装置プロファイル表を使用するファームウェア論理と
を備えるディスクドライブ適合層。
【請求項９】
前記データ記憶装置プロファイル表は、複数のデータ記憶装置プロファイル表エントリを含み、
それぞれのデータ記憶装置プロファイル表エントリは
前記データ記憶装置プロファイル表エントリによって表されるタイプのディスクドライブのリセット戦略を指示するフィールドと、
モデル番号の完全な、または部分的な仕様を指示するフィールドと、
ファームウェアリビジョン番号の完全な、または部分的な仕様を指示するフィールドと、
転送特性および調整することができるパラメータの一方または両方を指示する１つまたは複数のフィールドと、
電源オフ／電源オン待機期間を指示するフィールドと、
ハードウェア／ソフトリセット待機期間を指示するフィールドと、
データ記憶装置のタイプを指示するフィールドと、
を含む、請求項８に記載のディスクドライブ適合層。
【請求項１０】
データ記憶装置に処置を実行するよう指図するのにどのファームウェア論理を呼び出すべきか決定するために前記データ記憶装置に対応するデータ記憶装置プロファイル表エントリにアクセスするファームウェアを含む、請求項９に記載のディスクドライブ適合層。
【請求項１１】
前記データ記憶装置プロファイル表エントリから、データ記憶装置をリセットしようとするファームウェアであって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセットが使用され得ると指示しているときには、前記データ記憶装置にソフトリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にハードリセットが使用され得ると指示しているときで、前記データ記憶装置プロファイル表エントリが、前記データ記憶装置にソフトリセット使用され得ず、または前記装置に発行されたソフトリセットが失敗したと指示しているときには、前記データ記憶装置にハードリセットを発行し、前記装置が正しく応答したときに、正常なリセットを指示することによって、
前記データ記憶装置プロファイル表エントリが、前記データ記憶装置に電源オフ／電源オンサイクルが使用され得ると指示しているときで、ソフトおよびハードウェアリセットが試行されておらず、または試行されて、失敗しているときには、前記データ記憶装置の電源をオフにしてから前記データ記憶装置の電源をオンにし、前記装置が正しく応答したときに、正常なリセットを指示することによって
前記データ記憶装置をリセットしようとする前記ファームウェアを含む、請求項１０に記載のディスクドライブ適合層。
【請求項１２】
前記ファームウェアは、ソフトリセット、ハードリセット、および電源オフ／電源オンサイクルの１つに続いて、異なるタイプのリセットに着手し、またはリセット失敗を指示する前に、対応するデータ記憶装置プロファイル表エントリによって前記タイプの前記データ記憶装置に指定されている期間にわたって待機する、請求項１１に記載のディスクドライブ適合層。
【請求項１３】
前記データ記憶装置プロファイル表は、前記ストレージシェルフと、システム管理者またはその他のユーザが、前記データ記憶装置プロファイル表内の値を変更し、または前記データ記憶装置プロファイル表に値およびエントリを追加することができるユーザインターフェースを提供するコンソールアプリケーションとによってアクセスすることができる不揮発性メモリに格納されている、請求項８に記載のディスクドライブ適合層。
【国際調査報告】
2008537805.tif 000077
2008537805.tif 000078