(57)【特許請求の範囲】
【請求項１】
複数のデバイス及び少なくとも１つのプロセッサ備えた複数デバイス筐体をテストする方法であって、
前記複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御するステップと、
内部プロセッサ上で自己検査ルーチンを稼動させることによって前記複数デバイス筐体を内部的にテストするステップと、
該複数デバイス筐体が前記テストを通過する時、前記多数の外部通信媒体コネクタを前記外部通信媒体に接続するように前記多数のバイパス回路を制御するステップと、
を含み、
前記内部的にテストするステップは、
デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、
前記内部通信媒体をテストするステップと、
前記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを前記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、
デバイスが前記テストを通過しない場合、バイパス回路を制御して、そのデバイスを前記内部通信媒体から分離するようにバイパス回路を制御するステップと、
当該複数デバイス筐体のテストが成功したという標識を返すステップと、
前記内部通信媒体が前記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップと、を含む、複数デバイス筐体のテスト方法。
【請求項２】
前記外部通信媒体及び前記内部通信媒体の両方がファイバ・チャンネル仲裁ループの一部である、請求項１記載の方法。
【請求項３】
該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する前記ステップが、該複数デバイス筐体をファイバ・チャネル仲裁ループの上流部分から分離するため主外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、該複数デバイス筐体をファイバ・チャネル仲裁ループの下流部分から分離するため拡張外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、を更に含む、請求項２に記載の方法。
【請求項４】
該複数デバイス筐体が２つのファイバ・チャネル仲裁ループに接続されていて、該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する前記ステップが、該複数デバイス筐体を前記２つのファイバ・チャネル仲裁ループの上流部分から分離するため２つの主外部通信媒体コネクタをバイパスするように２つのバイパス回路を制御するステップと、該複数デバイス筐体を前記２つのファイバ・チャネル仲裁ループの下流部分から分離するため２つの拡張外部通信媒体コネクタをバイパスするように２つのバイパス回路を制御するステップと、を更に含む、請求項２に記載の方法。
【請求項５】
内部通信媒体をテストする前記ステップが、前記ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送り出すステップを含む、請求項２に記載の方法。
【請求項６】
デバイスをテストする前記ステップが、前記ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送り出すステップを含む、請求項２に記載の方法。
【請求項７】
デバイスをテストする前記ステップが、デバイスにコマンドを発信して、該デバイスに自己診断を実行させ、該デバイスに関する情報を該デバイスが送信するように求めるステップを更に含む、請求項６に記載の方法。
【請求項８】
デバイスに発信される前記コマンドがＳＣＳＩ筐体サービス・コマンドである、請求項７に記載の方法。
【請求項９】
複数のデバイスを内包する複数デバイス筐体をテストする方法であって、
デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、
前記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを前記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、
デバイスが前記テストを通過しない場合、バイパス回路を制御して、そのデバイスを前記内部通信媒体から分離するようにバイパス回路を制御するステップと、
当該複数デバイス筐体のテストが成功したという標識を返すステップと、
前記内部通信媒体が前記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップと、を含む複数デバイス筐体のテスト方法。
【請求項１０】
該複数デバイス筐体の動作の間にデバイスが誤動作する時、内部通信媒体からそのデバイスを分離するようにバイパス回路を制御しるステップを更に含む、請求項９に記載の方法。
【請求項１１】
自己検査機能を持つ複数デバイス筐体であって、
内部ファイバ・チャンネル仲裁ループ通信媒体と、
前記内部ファイバ・チャンネル仲裁ループ通信媒体によって相互接続される多数のデバイスと、
該複数デバイス筐体を外部ファイバ・チャンネル仲裁ループ通信媒体に接続する多数のコネクタと、
デバイスを内部通信媒体から分離し、デバイスを内部ファイバ・チャンネル仲裁ループ通信媒体に接続するように制御されることができるバイパス回路と、
前記コネクタを外部ファイバ・チャンネル仲裁ループ通信媒体から分離し、前記コネクタを外部通信媒体に接続するように制御されることができるバイパス回路と、
プロセッサと、
前記内部ファイバ・チャンネル仲裁ループ通信媒体および前記多数のデバイスをテストし、自己検査の間該複数デバイス筐体を外部ファイバ・チャンネル仲裁ループ通信媒体から分離し、前記デバイスを内部ファイバ・チャンネル仲裁ループ通信媒体から分離するようにバイパス回路を制御する機能を持つ、前記プロセッサ上で稼働する自己診断ルーチンと、を備える複数デバイス筐体。
【請求項１２】
前記多数のデバイスが、ファイバ・チャンネル仲裁ループに接続される他のデバイスとデータおよび制御情報を交換するデバイスを含む、請求項１１に記載の複数デバイス筐体。
【請求項１３】
前記自己診断ルーチンが、該複数デバイス筐体を外部通信媒体から分離するため多数のコネクタをバイパスするように多数のバイパス回路を制御し、該複数デバイス筐体をテストし、該複数デバイス筐体が前記テストを通過する時、前記多数のコネクタを前記外部通信媒体に接続するように多数のバイパス回路を制御する、請求項１２に記載の複数デバイス筐体。
【請求項１４】
該複数デバイス筐体を外部通信媒体から分離した後、前記自己診断ルーチンが、デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、前記内部通信媒体をテストするステップと、前記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを前記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、デバイスが前記テストを通過しない場合、バイパス回路を制御して、そのデバイスを前記内部通信媒体から分離するようにバイパス回路を制御するステップと、当該複数デバイス筐体のテストが成功したという標識を返すステップと、前記内部通信媒体が前記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップとによって該複数デバイス筐体をテストするステップとによって該複数デバイス筐体をテストする、請求項１３に記載の複数デバイス筐体。
【請求項１５】
該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する前記ステップが、該複数デバイス筐体をファイバ・チャネル仲裁ループの上流部分から分離するため主外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、該複数デバイス筐体をファイバ・チャネル仲裁ループの下流部分から分離するため拡張外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップとを含む、請求項１４に記載の複数デバイス筐体。
【請求項１６】
内部通信媒体をテストする前記ステップが、ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送信するステップを含む、請求項１５に記載の複数デバイス筐体。
【請求項１７】
デバイスをテストする前記ステップが、ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送信するステップを含む、請求項１５に記載の複数デバイス筐体。
【請求項１８】
デバイスをテストする前記ステップが、デバイスにコマンドを発信して、該デバイスに自己診断を実行させ、該デバイスに関する情報を該デバイスが送信するように求めるステップを更に含む、請求項１７に記載の複数デバイス筐体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数周辺デバイス筐体に関するもので、特に、該複数周辺デバイス筐体が誤動作周辺デバイスを識別してそれを分離するため該筐体の内部の周辺デバイスをテストすることができるように、コンポーネントを分離する制御エレメントを該筐体に組み入れることによって、複数周辺デバイス筐体の信頼性および可用性を向上させる方法およびシステムに関するものである。
【０００２】
【従来の技術】
ファイバ・チャンネル(すなわちfibre channelで以下"FC"と略称する)は、コンピュータおよび周辺デバイスの多数の異なる組み合わせを接続させるデータ通信ネットワークのためのアーキテクチャおよびプロトコルである。ＦＣは、小規模コンピュータ・システム・インタフェース(すなわちＳＣＳＩ)プロトコルを含む種々の上位レベル・プロトコルをサポートする。コンピュータまたは周辺装置は、ＦＣポートおよび銅ワイヤまたは光ファイバを経由してネットワークに接続される。ＦＣポートはトランシーバおよびインタフェース・コントローラを含み、ＦＣは、ホストと呼ばれるコンピュータ周辺装置に含まれる。ＦＣポートは、周辺コンピュータ・インタフェース(すなわちＰＣＩ)のようなローカル・データ・バスを経由してホストとデータを交換する。インタフェース制御装置は、ＦＣポートが存在するコンピュータまたは周辺デバイスとファイバ・チャンネルの間の下位レベル・プロトコルの交換を制御する。
【０００３】
ＦＣは、高いバンド幅および柔軟な連続性を備えているので、複数周辺デバイス筐体の範囲内で例えばＲＡＩＤのような周辺デバイスを相互接続するため、および、複数周辺デバイス筐体を１つまたは複数のコンピュータと接続させるための一般的媒体となりつつある。これらの複数周辺デバイス筐体は、高い可用性システムにおいて必要とされるミラー機能および故障戦略を実現する大幅に増加した記憶容量および組み込み冗長性を経済的に提供する。ＦＣは、容量および接続性に関する限りこの応用分野に適してはいるが、シリアル通信媒体である。周辺デバイスおよび筐体の誤動作は、特定のケースにおいては、通信品質を低下させ、または、使用不可能にする。
【０００４】
【発明が解決しようとする課題】
従って、ＦＣ型の複数周辺デバイス筐体の機能を改善し、周辺デバイス誤動作から回復する方法に対する必要性が存在する。更に、誤動作筐体を分離し復元することができるように１つまたは複数のホスト・コンピュータおよび複数の相互に接続されたＦＣ型複数周辺デバイス筐体を含むシステムの能力を強化する方法の必要性が存在する。更にまた、一層高レベルのフォルト・トレラント機能および可用性を実現するため通信およびコンポーネントの一層の冗長度の付加が必要とされている。
【０００５】
【課題を解決するための手段】
発明の課題を解決するため、本発明は複数のデバイスを内包する複数デバイス筐体をテストする方法を提供する。該方法は、該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御するステップ、該複数デバイス筐体をテストするステップ、および、該複数デバイス筐体が上記テストを通過する時上記多数の外部通信媒体コネクタを上記外部通信媒体に接続するように上記多数のバイパス回路を制御するステップを含む。
【０００６】
本発明は、複数周辺デバイス筐体の範囲内で周辺デバイスを接続する通信媒体から複数デバイス筐体の範囲内で使用される周辺デバイスを分離し、多数の周辺デバイス筐体をホスト・コンピュータに接続するために使用される通信媒体から１つの複数デバイス筐体を分離する方法およびシステムを提供する。本発明は、単一故障ポイントを除去して複数デバイス筐体の可用性を増加させるため、複数周辺デバイス筐体の範囲内のコンポーネントの冗長度を増加させる。
【０００７】
複数周辺デバイス筐体の範囲内で周辺デバイスを接続するために使用される通信媒体に対する周辺デバイスのアクセスを制御するためポート・バイパス回路が使用される。ポート・バイパス回路自体はポート・バイパス回路コントローラによって制御され、このポート・バイパス回路コントローラは複数周辺デバイス筐体の範囲内のマイクロプロセッサ上で稼働するソフトウェアまたはファームウェア・ルーチンによって制御される。このような３段階制御が、周辺デバイスの高機能な管理、誤動作周辺デバイスの診断および誤動作周辺デバイスの分離を容易にする。また、３段階ポート・バイパス回路制御を複数周辺デバイス筐体間通信ポートにも適用して、誤動作している複数周辺デバイス筐体の診断、および、誤動作複数周辺デバイスのホスト・コンピュータとの接続通信媒体からの分離を可能にする。
【０００８】
冗長ポート・バイパス回路コントローラおよびマイクロプロセッサを使用して、３段階ポート・バイパス回路制御を使用して実施される診断および分離戦略の信頼性を向上させることができる。本発明の方法に従って、複数周辺デバイス筐体は、当該複数周辺デバイス筐体の内部通信媒体をテストし、また、該筐体の範囲内の各周辺デバイスをテストするため、電源投入とともに、外部ホスト・コンピュータおよび他の複数周辺デバイス筐体から自分自身を分離させることができる。テストの結果欠陥があるとされるいかなる周辺デバイスもポート・バイパス回路コントローラおよびポート・バイパス回路によってバイパスされる。内部通信媒体に欠陥があるとわかると、本発明の方法に従って、外部ホスト・コンピュータおよび他の複数周辺デバイス筐体に該筐体を接続する通信媒体への自分自身の接続動作が防止される。
【０００９】
【発明の実施の形態】
以下の記述は６つの節から構成されている。最初の３つの節は、ファイバ・チャンネル・アーキテクチャおよびプロトコル、ＳＣＳＩアーキテクチャおよびプロトコル、およびファイバ・チャンネル・プロトコルに基づくＳＣＳＩプロトコルの実施形態の詳細を記述する。第４節は、ファイバ・チャンネル仲裁されたループ初期設定プロセスを記述する。第５節は、複数周辺デバイス筐体を概説し、第６節は、ＳＣＳＩプロトコルを通して１つまたは複数のホスト・コンピュータと通信する周辺デバイスのシステムの範囲内のコンポーネント管理のために使用される専用ＳＣＳＩコマンド・セットおよびプロトコルを記述する。第７節は、本発明のハードウェア実施形態の詳細を記述し、第８節は、複数デバイス筐体自己診断方法の１つの実施形態である擬似コード実施形態を記述する。
【００１０】
ファイバ・チャンネル
ファイバ・チャンネル("ＦＣ")は、以下を含む多数のＡＮＳＩ規格文書によって定義されている。
(1)ファイバ・チャンネル物理的および信号送信インタフェース(Fibre Channel Physical and Signaling Interface、略して"FC-PH"),ANSIX3.230-1994,("FC-PH-2),ANSIX3.297-1997;
(2)ファイバ・チャンネル仲裁ループ(Fibre  Channel  Arbitrated  Loop、略して"FC-AL-2"),ANSIX3.272-1996;
(3)ファイバ・チャンネル−ＳＣＳＩ直接接続プライベート・ループ
(Fibre Channel-Private Loop SCSI Direct Attached、略して"FC-PLDA");
(4)ファイバ・チャンネル−ファブリック・ループ接続(Fibre Channel-Fabric Loop Attachment、略して"FC-FLA");
(5)ＳＣＳＩに関するファイバ・チャンネル・プロトコル(Fibre Channel
Protocol for SCSI、略して"FCP");
(6)ファイバ・チャンネル・ファブリック要件(Fibre Channel Fabric
Requirements、略して"FC-FG"),ANSIX3.289:1996;および
(7)ファイバ・チャンネル１０ビット・インタフェース(Fibre Channel10-Bit
Interface)。
【００１１】
これらの規格文書は頻繁に改訂されている。ファイバ・チャンネル・システム・イニシアティブ(Fibre Channel System Initiative、略して"FCSI")規格文書は更に 以下を含む。
(1)ギガボー・モジュール・ファミリ
(Giga baud Link Module Family、略して"GLM"),FCSI-301;
(2)共通FC-PH機能セット・プロファイル
(Common FC-PH Feature Sets Profiles, FCSI-101);および
(3)ＳＣＳＩプロファイル(SCSI profile, FCSI-201)。
【００１２】
これらの文書は、次のアドレスを持つワールドワイド・ウェブ・インターネット・ページで見ることができる。
"http://www.fibrechannel.com"
以下のＦＣに関する記述は、本発明の説明を容易にするため、これら文書に含まれている一定の情報を紹介および概説することこと意図している。以下の記述において紹介される項目のいずれに関してもその一層の詳細は上記文書を参照して得ることができるであろう。
【００１３】
ＦＣは、ＦＣノードの間、すなわち、一般的には、１つまたは複数の通信媒体によって接続されるコンピュータ、ワークステーション、ディスク・アレイのような周辺デバイスのアレイまたは集合の間のデータ通信に関するアーキテクチャおよびプロトコルである。通信媒体は、シールドされたツイストペア接続線、同軸ケーブルおよび光ファイバを含む。ＦＣノードは、少なくとも１つのＦＣポートおよびＦＣリンクを通して通信媒体に接続される。ＦＣポートは、レジスタおよびメモリ・インタフェースをＦＣノードの処理コンポーネントと共有し、ＦＣプロトコルの下位レベルをハードウェアおよびファームウェアで実施するＦＣホスト・アダプタまたはＦＣコントローラである。ＦＣノードは、一般的に、共用メモリにおける共用データ構造の使用およびＦＣポートにおける制御レジスタの使用を通して、データおよび制御情報をＦＣポートと交換する。ＦＣポートは、電線または光ファイバから構成されるリンクを経由して通信媒体に接続する直列伝送および受信コンポーネントを含む。
【００１４】
以下の記述において、"ＦＣ"は、一般的ファイバ・チャンネル・アーキテクチャおよびプロトコルを参照するため形容詞として使用され、ファイバ・チャンネル通信媒体の１つのインスタンスを参照するため名詞として使用される。このように、(アーキテクチャおよびプロトコルの)ＦＣポートは、(通信媒体の)ＦＣから(アーキテクチャおよびプロトコルの)ＦＣのシーケンスを受け取る。
【００１５】
ＦＣアーキテクチャおよびプロトコルは、図１に示される３つの異なるタイプの接続トポロジをサポートする。図１の(Ａ)は、"ポイント・ツー・ポイント・トポロジ"と呼ばれる３つのうちでは最も単純な相互接続トポロジを示す。図１の(Ａ)のポイント・ツー・ポイント・トポロジにおいて、第１ノード１０１のＦＣポート１０４の伝送器１０３を第２ノード１０２のＦＣポート１０６の受信器１０５に直接接続させることによって、そして、第２ノード１０２のＦＣポート１０６の伝送器１０７を第１ノード１０１のＦＣポート１０４の受信器１０８に直接に接続することによって、第１ノード１０１は第２ノード１０２に直接接続される。ポイント・ツー・ポイント・トポロジにおいて使用されるポート１０４および１０６は、N_Portと呼ばれる。
【００１６】
図１の(Ｂ)は、"ＦＣ仲裁ループ・トポロジ"と呼ばれるいくぶん複雑なトポロジを示す。図１の(Ｂ)は、"ＦＣ仲裁ループ・トポロジ"の範囲内で相互接続された４つのノード１１０−１１３を示す。電気的または光学的２進データから成る信号が、ループを回って循環形態で１つのノードから次のノードへ伝送される。
例えばノード１１１に関連する伝送器１１４のような伝送器が、ループの次のノードの受信器(伝送器１１４の場合にはノード１１２の受信器１１５)に直接接続される。仲裁ループの範囲内でＦＣノードを相互接続させるため、２つのタイプのＦＣポートが使用される。仲裁ループで使用される最も一般的タイプのポートは、"NL_Port"と呼ばれる。ＦＣ仲裁ループをＦＣファブリック・トポロジに接続させるための特別なタイプのポートは"FL_Port"と呼ばれる。１つのFL_Portだけが仲裁ループ・トポロジに活動状態のあるものとして組み入れられることができる。ＦＣ仲裁ループ・トポロジは、最高１２７の活動的ＦＣポートを含むことができ、更に多くの非活動状態のＦＣポートを含むことができる。
【００１７】
ＦＣ仲裁ループ・トポロジにおいて、ノードは、仲裁ループの制御をもとめて争うすなわち仲裁を求める。一般に、１つ以上のノードが制御を求めて争う場合、最も低いポート・アドレスを持つノードが制御を取得する。すべてのノードが最終的には合理的な時間の範囲内で制御を受け取ることを保証するような公平アルゴリズムがノードによって実施される。あるノードがループの制御を取得した時、そのノードは仲裁ループの範囲内のいかなる別のノードに対してもチャンネルをオープンすることができる。半２重通信チャネルにおいては、１つのノードがデータを伝送し、別のノードがそれを受け取る。全二重通信チャネルにおいては、第１ノードによって伝送されるデータが第２ノードによって受け取られると同時に、第２ノードによって伝送されるデータが第１ノードによって受け取られることができる。例えば、図１の(Ｂ)の仲裁ループにおいてノード１１１がノード１１３との全二重通信チャネルをオープンするとすれば、そのチャンネルを経由してノード１１１からノード１１３へ伝送されるデータはノード１１２のNL_Port１１６を通過し、ノード１１３によってノード１１１へ伝送されるデータはノード１１０のNL_Port１１７を通過する。
【００１８】
図１の(Ｃ)は、"ＦＣファブリック"と呼ばれる最も一般的で最も複雑なＦＣトポロジを示す。図１の(Ｃ)において、ＦＣファブリックは、図の中央にある不規則な形のオブジェクト１１８によって表されている。４つのノード１１９−１２２はこのオブジェクトに接続されている。ＦＣノード１１９−１２２の範囲内のN_Port１２３−１２６はファブリック１１８の範囲内のF_Port１２７−１３０に接続されている。ファブリックは、機能的には電話システムと同様の交換型またはクロスポイント切り換えトポロジである。データは、ファブリックによって"ファブリック・エレメント"と呼ばれるスイッチまたは交換機構を通してF_Portの間で伝送される。１つのF_Portと別のF_Portの間でファブリックを経由する多くの可能なルートが存在する。F_Portと関連するファブリックの範囲内のデータの経路指定およびノードのアドレス指定は、ＦＣノードまたはN_PortではなくＦＣファブリックによって取り扱われる。
【００１９】
光ファイバを利用すると、単一のＦＣファブリックは１０キロメータにも延伸することができる。ＦＣは、16,000,000以上のＦＣノードの相互接続をサポートすることができる。単一ＦＣホスト・アダプタは毎秒最高２００メガバイトの率でデータの送受信を行うことができる。ＦＣコンポーネントに関する一層高速のデータ交換率が近い将来計画されている。
【００２０】
ＦＣはシリアル通信媒体である。データは、非常に高い転送速度で１時点に１ビット伝送される。図２は、ＦＣネットワーク経由の伝送のためデータが時間的に構成される非常に単純な階層を図示している。最も低い概念上のレベルにおいて、データはデータ・ビット２００のストリームであると見なされる。ＦＣネットワークによってサポートされるデータの最小単位またはデータ・ビットのグループは、ＦＣポートによって８ビット文字として復号される１０ビット文字である。ＦＣプリミティブ(primitive)は、１０バイト文字またはバイトから構成される。ＦＣポートの間で交換される制御情報を搬送するため特定のＦＣプリミティブが使用される。次のレベルは、ＦＣプロトコルに関する基本レベルで、そのデータ構成はフレームである。図２には７つのフレーム２０２０−２０８が示されている。フレームは、フレームに含まれるデータの特性に従って、３６バイトと２、１４８バイトの間のデータから構成される。例えば、最初のＦＣフレームは、データ・ビット・ストリーム２００のうちの水平大かっこ２０１によって取り囲まれているデータ・ビットに対応する。
【００２１】
ＦＣプロトコルは、シーケンスと呼ばれる次に高位の構成レベルを定義する。
第１シーケンス２１０および第２シーケンス２１２の一部が図２に示されている。第１シーケンス２１０は、フレームの１から４(２０２−２０５)から構成されている。第２シーケンス２１２は、フレーム５から７(２０６−２０８)および付加的フレーム(図示されていない)から構成されている。ＦＣプロトコルは、交換と呼ばれる第３の構成レベルを定義している。図２には、交換２１４の一部が示されている。この交換２１４は、図２に示されている少なくとも第１シーケンス２１０および第２シーケンス２１２から構成されている。換言すれば、この交換レベルは、フレーム１乃至７(２０２０−２０８)および第２シーケンス２１２および更に付加されるシーケンスの中の付加的フレームから構成されると見ることができる。
【００２２】
ＦＣは全二重データ伝送媒体である。フレームおよびシーケンスは、発信側すなわちイニシエータと応答側すなわち目標の間で両方向に同時に伝送されることができる。すべてのシーケンスおよびシーケンスの範囲内のフレームを含む交換は、読み取りＩ／Ｏトランザクションまたは書き込みＩ／Ｏトランザクションのような単一のトランザクションの間に発信側および応答側の間で交換される。ＦＣプロトコルは、インターネット・プロトコル("IP")、小規模コンピュータ・システム・インタフェース("SCSI")プロトコル、高性能パラレル・インターフェース("HIPPI")および高機能周辺インタフェース("IPI")などを含む多数の高位レベル・データ交換プロトコルのいずれかに従ってデータを伝送するように設計される。ＳＣＳＩバス・アーキテクチャは、次節で取り上げられるが、本節の以下の記述および以降の各節における記述はＦＣプロトコルに組み込まれるＳＣＳＩプロトコルに焦点があてられる。ファイバ・チャンネルに対するＳＣＳＩプロトコルの標準的適合は本明細書において以下"ＦＣＰ"と呼ばれる。このように、ＦＣは、インターネットを実施するために使用されるような比較的オープンで構造化されていない通信プロトコルの他に、ＳＣＳＩバスおよび他の周辺装置相互接続バスの特徴であるマスター／スレーブ・タイプの通信パラダイムをサポートすることができる。ＦＣＰにおいて実施されるイニシエータおよび目標というＳＣＳＩバス・アーキテクチャ概念は、ＦＣ経由の伝送のためＳＣＳＩコマンドおよびデータ交換をカプセル化するように設計される。
【００２３】
図３は標準ＦＣフレームの内容を示す。ＦＣフレーム３０２は、５つの高レベル・セクション３０４、３０６、３０８、３１０および３１２を含む。第１の高レベル・セクションは、フレーム開始区切り(SOF)３０４と呼ばれ、フレームの開始をマークする４バイトを含む。次の高レベル・セクションは、フレーム・ヘッダ３０６と呼ばれ、アドレス指定情報、シーケンス情報、交換情報および種々の制御フラグを含む２４バイトからなる。図３において、フレーム・ヘッダ３１４の詳細がＦＣフレーム３０２から拡大されて示されている。行き先識別子("DID")すなわちDESTINATION_DID３１６は２４ビットＦＣアドレスであり、当該フレームに関する行き先ＦＣポートを標示する。ソース識別子("SID")すなわちSOURCE_ID３１８は、フレームを送出したＦＣポートを標示する２４ビット・アドレスである。発信側ＩＤすなわちOX_ID３２０および応答側ＩＤすなわちRX_ID３２２は組み合わせられて３２ビット交換ＩＤを形成し、発信側すなわちイニシエータおよび応答側すなわち目標ＦＣポートに関してフレームが属する交換を識別する。シーケンスＩＤすなわちSEQ_ID３２４は、フレームが属するシーケンスを識別する。
【００２４】
次に高いレベルのセクション３０８は、データ・ペイロードと呼ばれ、ＦＣフレームの範囲内にパッケージ化される実際のデータを含む。データ・ペイロードは、ＩＰおよびＳＣＳＩのような一層高位レベルのプロトコルに従って伝送されるデータおよびカプセル化プロトコル情報を含む。図３は、ＳＣＳＩプロトコルに従うデータ伝送に関して使用されるデータ・ペイロード・レイアウトの４つの基本タイプ３２６−３２９を示す。これらの形式の第１のタイプ３２６は、FCP_CMNDと呼ばれ、イニシエータから目標へＳＣＳＩコマンドを送るために使用される。FCP_LUNフィールド３３０は、８バイト・アドレスを含み、特定の実施形態において、特定のＳＣＳＩバス・アダプタ、そのＳＣＳＩバス・アダプタに関連する目標装置およびFCP_CMNDに関する目標を共に表す指定された目標ＳＣＳＩ装置に関連する論理装置に対応する論理装置番号("LUN")を指定する。別の実施形態においては、FCP_LUNフィールド３３０は、ＳＣＳＩバス・アダプタ、そのＳＣＳＩバス・アダプタに関連する目標装置および指定された目標ＳＣＳＩ装置に関連する論理装置に対応するLUNを決定するために使用されるインデックスまたは参照番号を含む。ＳＣＳＩ読み取りまたは書き込みＩ／Ｏコマンドのような実際のＳＣＳＩコマンドは、１６バイトFCP_CDBフィールド３３２の範囲内に含まれる。
【００２５】
図３に示されるデータ・ペイロード形式の第２のタイプ３２７はFCP_XFER_RDYレイアウトと呼ばれる。このデータ・ペイロード形式は、目標がデートの送信または受信の開始の準備ができている時ＳＣＳＩプロシード・コマンドを目標からイニシエータへ送るため使用される。図３におけるデータ・ペイロード形式の第３のタイプ３２８は、FCP_DATA形式であって、ＳＣＳＩＩ／Ｏトランザクションの実行の結果読み取りまたは書き込みされる実際のデータを伝送するため使用される。図３に示される最後のデータ・ペイロード形式３２９は、FCP_RSPレイアウトと呼ばれ、ＳＣＳＩ状態バイト３３４を、その他のＦＣＰ状態情報と共に、Ｉ／Ｏトランザクションの完了とともに目標からイニシエータへ伝送するために使用される。
【００２６】
ＳＣＳＩバス・アーキテクチャ
コンピュータ・バスは、１組の電気信号線であり、それを経由してコンピュータ・システムの処理、記憶および入出力(Ｉ／Ｏ)コンポーネントの間でコンピュータ・コマンドおよびデータが伝送される。ＳＣＳＩＩ／Ｏバスは、ハードディスクおよびＣＤ−ＲＯＭのような大容量記憶装置をコンピュータ・システムのメモリおよび処理コンポーネントと接続させる最も広範囲に普及したコンピュータ・バスである。ＳＣＳＩバス・アーキテクチャは、SCSI-1、SCSI-2およびSCSI-3という３つの主要規格において定義されている。SCSI-1およびSCSI-2規格は、ANSI"X3.131-1986"および"X3.131-1994"によってそれぞれ出版されている。SCSI-3規格は現在ANSI委員会によって開発されている。ＳＣＳＩバス・アーキテクチャの概要は、"The SCSI Bus and IDE Interface, "Freidhelm Schmidt,
Addison-Wesley Publishing Company, ISBN 0-201-17514-2 1997("Schmidt")によって提供されている。
【００２７】
図４は、ＳＣＳＩバスを含む一般的パーソナル・コンピュータ("PC")アーキテクチャのブロック図である。ＰＣ４００は、高速ＣＰＵバス４０６によってシステム・コントローラ４０４に接続された中央処理装置またはプロセッサ４０２("CPU")を含む。次に、システム・コントローラは、メモリ・バス４１０を経由してシステム・メモリ・コンポーネント４０８に接続される。システム・コントローラ４０４は、更に、周辺装置コンポーネント相互接続("PCI")バス４１２を経由して種々の周辺デバイスに接続される。ＰＣＩバス４１２は、比較的遅い業界標準アーキテクチャ・バス("ISA")４１４およびＳＣＳＩバス４１６に接続される。ＰＣＩバス・アーキテクチャは、"PCI  System  Architecture"(Shanley & Anderson, Mine Share, Inc., Addison-Wesley Publishing Company, ISBN0-201-40993-3, 1995)に記載されている。
【００２８】
相互接続されたＣＰＵバス４０６、メモリ・バス４１０、ＰＣＩバス４１２およびＩＳＡバス４１４によって、ＣＰＵがコンピュータ・システムに含まれる種々の処理／メモリ・コンポーネントおよび入出力装置とデータおよびコマンドを交換することが可能とされる。一般に、ビデオ表示装置のような非常に高速で高帯域の入出力デバイス４１８はＰＣＩバスに直接接続される。キーボード４２０およびポインティング・デバイス(図示されていない)のような遅い入出力デバイス４２０はＩＳＡバス４１４に接続される。ＩＳＡバスは、バス・ブリッジ・コンポーネント４２２を経由してＰＣＩバスに接続される。大容量記憶装置、ハードディスク、フロッピーディスク・ドライブ、ＣＤ−ＲＯＭドライブおよびテープ・ドライブ４２４−４２６はＳＣＳＩバス４１６に接続される。ＳＣＳＩバスは、ＳＣＳＩバス・アダプタ４３０を経由してＰＣＩバス４１２に接続される。
ＳＣＳＩバス・アダプタ４３０は、53C8xxＳＣＳＩプロセッサというSymbiosファミリから選択されるプロセッサのようなプロセッサ・コンポーネントを含み、標準ＰＣＩバス・プロトコルを使用してＰＣＩバス４１２にインタフェースする。
【００２９】
ＳＣＳＩバス・アダプタ４３０は、ＳＣＳＩバス・プロトコルを使用してＳＣＳＩバス４１６にインタフェースする(詳細は後述)。ＳＣＳＩバス・アダプタ４３０は、ＳＣＳＩバスに接続される各大容量記憶装置４２４−４２６またはＳＣＳＩ装置の範囲内に一般に組み込まれるＳＣＳＩコントローラ(図示されていない)とコマンドおよびデータを交換する。ＳＣＳＩコントローラは、ハードウェア／ファームウェア・コンポーネントであって、ＳＣＳＩバスを経由してＳＣＳＩアダプタから受け取られるＳＣＳＩコマンドを解読および応答し、論理装置とインタフェースしてそれを制御することによってＳＣＳＩコマンドを実施する。
１つの論理装置は、１つまたは複数の物理装置あるいは１つまたは複数の物理装置の部分に対応する。物理装置は、ディスク、テープおよびＣＤ−ＲＯＭドライブのようなデータ記憶装置を含む。
【００３０】
Ｉ／Ｏコマンドと呼ばれる２つの重要なタイプのコマンドが、論理装置からデータを読み取り、論理装置へデータを書き込むようにＳＣＳＩ装置に指示する。
Ｉ／Ｏトランザクションは、コンピュータ・システムの２つのコンポーネントの間のデータの交換であって、一般的にはＣＰＵ４０２のような処理コンポーネントによって始動され、読み取りＩ／Ｏコマンドまたは書き込みＩ／Ｏコマンドによって部分的に実行される。このように、Ｉ／Ｏトランザクションは、読み取りＩ／Ｏトランザクションおよび書き込みＩ／Ｏトランザクションを含む。
【００３１】
ＳＣＳＩバス４１６は、多数のデータ・ビットを並列的に転送することができるパラレル・バスである。ＳＣＳＩバスによって並列的に転送されることができるデータ・ビット数はバスの幅と呼ばれる。ＳＣＳＩバスは、そのタイプに応じて、８、１６および３２ビットの幅を持つ。１６および３２ビットＳＣＳＩバスは、ワイドＳＣＳＩバスと呼ばれる。すべてのコンピュータ・バスおよびプロセッサの場合と同様に、ＳＣＳＩバスは、バス上の動作およびデータ転送の速度を決定するクロックによって制御される。クロック速度はＳＣＳＩバスによって異なる。ＳＣＳＩバスが動作するＳＣＳＩバス幅およびクロック速度の組み合わせが、ＳＣＳＩバスを経由して転送されることができる秒当たりのバイト数すなわちＳＣＳＩバス・バンド幅を決定する。異なるタイプのＳＣＳＩバスは、毎秒２メガバイト未満から４０メガバイトの範囲のバンド幅を持ち、将来は８０から１６０メガバイトへの増加が計画されている。バンド幅の増加は、ＳＣＳＩバスの物理的な長さにおける限界の増加を伴う。
【００３２】
図５はＳＣＳＩバスのトポロジを示す。コンピュータ・システム５０２または他のハードウェア・システムは、１つまたは複数のＳＣＳＩバス・アダプタ５０４および５０６を含むことができる。ＳＣＳＩバス・アダプタ、ＳＣＳＩバス・アダプタが制御するＳＣＳＩバスおよびそのＳＣＳＩバスに接続される周辺デバイスが１つのドメインを形成する。図５におけるＳＣＳＩバス・アダプタ５０４は、第１のドメイン５０８に関連し、ＳＣＳＩバス・アダプタ５０６は第２のドメイン５１０に関連する。最新のSCSI-２バス実施形態は、１５の異なるＳＣＳＩデバイス５１３−５１５および５１６−５１７が単一のＳＣＳＩバスに接続されることを可能にする。図５においては、ＳＣＳＩデバイス５１３−５１５がＳＣＳＩバス５１８に接続されＳＣＳＩバス・アダプタ５０６によって制御され、ＳＣＳＩデバイス５１６−５１７がＳＣＳＩバス５２０に接続されＳＣＳＩバス・アダプタ５０４によって制御されている。
【００３３】
各ＳＣＳＩバス・アダプタおよびＳＣＳＩデバイスは、特定のＳＣＳＩバスにおけるデバイスまたはアダプタをユニークに識別するＳＣＳＩ識別番号すなわちSCSI_IDを持つ。習慣として、ＳＣＳＩバス・アダプタはSCSI_ID 7を持ち、ＳＣＳＩバスに接続されるＳＣＳＩデバイスははSCSI_ID Oから6までおよび8から15までの範囲を持つ。ＳＣＳＩデバイス５１３のようなＳＣＳＩデバイスは、各々が１つまたは複数の物理装置の部分を含む多数の論理装置とインタフェースする。各論理装置は、論理装置を制御するＳＣＳＩデバイスに対して論理装置をユニークに識別する論理装置番号("LUN")によって識別される。例えば、ＳＣＳＩデバイス５１３は、それぞれLUNO、1および2を持つ論理装置５２２−５２４を制御する。ＳＣＳＩに関する用語法に従えば、ＳＣＳＩバス上にＩ／Ｏコマンドを始動するデバイスは、イニシエータと呼ばれ、Ｉ／Ｏ動作の実行を指示するＩ／ＯコマンドをＳＣＳＩバス上で受け取るＳＣＳＩデバイスは目標と呼ばれる。
【００３４】
一般的に、ＳＣＳＩバス・アダプタ５０４および５０６のようなＳＣＳＩバス・アダプタは、目標デバイスにコマンドを送り出すことによってＩ／Ｏ動作を始動する。目標デバイス５１３−５１５および５１６−５１７はＳＣＳＩバスからＩ／Ｏコマンドを受け取る。次に、目標デバイス５１３−５１５および５１６−５１７は、それらが制御する１つまたは複数の論理装置とインタフェースすることによってコマンドを実施して、論理装置からデータを読み取ってそれをＳＣＳＩバス経由でイニシエータに返すか、あるいは、ＳＣＳＩバスを経由してイニシエータから受け取ったデータを論理装置に書き込む。最後に、目標デバイス５１３−５１５および５１６−５１７は、コマンドの実行の成功または失敗を表示する状態メッセージをＳＣＳＩバス経由でイニシエータに応答する。
【００３５】
図６乃至図８は、読み書き入出力動作の始動および実行に関連ＳＣＳＩプロトコルを示している。読み書き入出力動作は、ＳＣＳＩデバイスによって実行される大量の入出力動作を含む。ＳＣＳＩバスによって接続される大容量記憶装置システムの動作の効率を最大にする努力は、主として、読み書き入出力動作が実行される効率の最大化へ向けられている。従って、以下の記述において、種々のハードウェア・デバイスのアーキテクチャ上の機能が読み書き動作の観点から考察される。
【００３６】
図６は、(最も一般的にはＳＣＳＩバス・アダプタである)ＳＣＳＩイニシエータから(最も一般的には１つまたは複数の論理装置に関連するＳＣＳＩデバイスに組み込まれるＳＣＳＩコントローラである)ＳＣＳＩ目標デバイスへの読み取りまたは書き込みＩ／Ｏコマンドの送信を示す。読み取りまたは書き込みＩ／Ｏコマンドの送信はＳＣＳＩ入出力動作のコマンド・フェーズと呼ばれる。図６は、中心線によってイニシエータ６０２および目標６０４のセクションに分割されている。イニシエータおよび目標セクションの両方は、ＳＣＳＩバスの状態を記述する"状態"欄６０６、６０８、および、イニシエータおよび目標それぞれに関連するＳＣＳＩバス・イベントを記述する"イベント"欄６１０、６１２を含む。
Ｉ／Ｏコマンドの送出に関係するバス状態およびバス・イベントは、図６の上から下へ時間の順に並べられている。図７および図８もこのような形式に従っている。
【００３７】
図６に示されているイニシエータであるＳＣＳＩバス・アダプタから目標ＳＣＳＩデバイスへのＩ／Ｏコマンドの送信は、目標ＳＣＳＩデバイスによる読み取りまたは書き込み入出力動作を始動する。図４を参照すれば、ＳＣＳＩバス・アダプタ４３０はＩ／Ｏトランザクションの一部として入出力動作を始動する。一般的には、ＳＣＳＩバス・アダプタ４３０は、ＳＣＳＩバス・アダプタに読み取り動作または書き込み動作の実行を指示する読み取りまたは書き込みコマンドを、ＰＣＩバス４１２、システム・コントローラ４０４およびＣＰＵバス４０６を経由して、ＣＰＵから受け取る。
【００３８】
読み取り動作においては、ＣＰＵ４０２は、大容量記憶装置４２４−４２６からデータを読み取って、ＳＣＳＩバス４１６、ＰＣＩバス４１２、システム・コントローラ４０４およびメモリ・バス４１０を経由してシステム・メモリ内の１つの位置にそのデータを転送するようにＳＣＳＩバス・アダプタ４３０に指示する。書き込み動作においては、ＣＰＵ４０２は、メモリ・バス４１０、システム・コントローラ４０４およびＰＣＩバス４１２を経由してシステム・メモリ４０８からＳＣＳＩバス・アダプタ４３０にデータを転送するようにシステム・コントローラ４０４に指示し、ＳＣＳＩバス４１６を経由してデータが書き込まれる大容量記憶装置４２４−４２６へデータを送るようにＳＣＳＩバス・アダプタ４３０に指示する。
【００３９】
図６は、現在伝送されているコマンドまたはデータがＳＣＳＩデバイスにないことを表示するバス・フリー状態６１４におかれているＳＣＳＩバスから開始する。イニシエータすなわちＳＣＳＩバス・アダプタは、バスを調停状態６１６にするため、ＳＣＳＩバスのBSY、D7およびSEL信号線をオンにする。この状態において、イニシエータはＳＣＳＩバス上にコマンドを伝送する意志をすべてのデバイスに通知する。１つのデバイスだけが１時点においてＳＣＳＩバスの動作を制御することができるので、調停が必要である。イニシエータがＳＣＳＩバスの制御を得ると仮定すれば、イニシエータは、ＳＣＳＩバスが選択状態６１８に入るようにするため、目標SCSI_IDに対応するATN信号線およびDX信号線をオンにする。イニシエータまたは目標デバイスは、上述のような調停状態から選択状態６１８への状態変更のようなＳＣＳＩバス状態変更を実施するため、特定のシーケンスで種々のＳＣＳＩ信号線をオンおよびオフにする。これらのシーケンスは、上記引用Schmidt文献およびANSI規格に記載されているので、これ以上の記述は行わない。
【００４０】
目標デバイスがイニシエータによって選択されたことを目標デバイスが検出すると、目標デバイスは、入出力動作のコマンド・フェーズを完了するためＳＣＳＩバスの制御６２０を得たものと仮定する。次に、目標デバイスは、メッセージ送出状態６２２に入るためＳＣＳＩ信号線を制御する。メッセージ送出状態において発生する最初のイベントにおいて、目標デバイスはイニシエータから識別メッセージ６２３を受け取る。識別メッセージ６２３は、その後に続くコマンド・メッセージがアドレスされるLUNを識別するLUNフィールド６２４を含む。識別メッセージ６２３は、また、目標デバイスによる後続のＩ／Ｏコマンドの実行の間に目標デバイスがＳＣＳＩバスから切断する権限を与えられていることを目標に知らせるため一般にセットされるフラグ６２５を含む。
【００４１】
目標デバイスは、次に、後続のＩ／Ｏコマンドがどのように待ち行列に入れられるべきかを目標デバイスに指示し、同時に目標デバイスに待ち行列タグ６２７を与える待ち行列タグ・メッセージ６２６を受け取る。待ち行列タグは、Ｉ／Ｏコマンドを識別するバイトである。従って、ＳＣＳＩバス・アダプタは１つのLUNにつき異なるＩ／Ｏコマンドを並列的に管理することができる。イニシエータであるＳＣＳＩバス・アダプタのSCSI_ID、目標であるＳＣＳＩデバイスのSCSI_ID、目標LUNおよび待ち行列タグの組み合わせが、ＳＣＳＩバスの範囲内で後続するＩ／Ｏコマンドに対応する識別Ｉ／Ｏ動作を識別するI_T_Q_L連結参照番号を形成する。
【００４２】
次に、目標デバイスは、コマンド状態６２８に入るためＳＣＳＩバス信号線を制御する。コマンド状態において、目標デバイスはイニシエータからＩ／Ｏコマンド６３０を受け取ることを求める。Ｉ／Ｏコマンド６３０は、実行される特定のコマンドこの場合は読み取りコマンドまたは書み込みコマンドを識別する命令コード６３２、コマンドによって指定される読み取りまたは書き込み動作の開始ポイントである論理装置の論理ブロックを識別する論理ブロック番号６３６、および、コマンドの実行の間読み取りまたは書き込みされるブロック数を指定するデータ長６３８を含む。
【００４３】
目標デバイスがＩ／Ｏコマンドを受け取って処理した時、イニシエータ・デバイスに切断メッセージ６４２を送り戻す状態であるメッセージ到来状態６４０に入るため、目標デバイスはＳＣＳＩバス信号線を制御する。コマンドによって指定される読み取りまたは書き込み動作を行うように論理装置を準備するため目標デバイスが一般的に論理装置との交信を開始するので、目標デバイスはＳＣＳＩバスから切断する。目標デバイスはデータを受け取るバッファを準備する必要があるかもしれない。ディスク・ドライブまたはＣＤ−ＲＯＭドライブの場合、目標デバイスは、読み取りまたは書き込みコマンドに関する開始位置として指定された適切なブロックにアクセスするように論理装置に指示するかもしれない。切断によって、目標デバイスは、ＳＣＳＩバス・アダプタと目標デバイスの間における更なるメッセージ、コマンドまたはデータの伝送のため、ＳＣＳＩバスを解放する。このようにして、多数の異なる入出力動作がＳＣＳＩバス上で並列的に多重送信されることができる。最後に、目標デバイスは、ＳＣＳＩバスをバス・フリー状態６４４に戻すため、BSY信号線をオフにする。
【００４４】
次に、目標デバイスは読み取りまたは書き込み動作のため論理装置を準備する。論理装置がデータの読み取りまたは書き込みの準備ができている時、入出力動作に関するデータ・フェーズに入る。図７はＳＣＳＩ入出力動作のデータ・フェーズを示す。ＳＣＳＩバスは、初期的にはバス・フリー状態６４６にある。目標デバイスは、今や、読み取りＩ／Ｏコマンドに応答してデータを返すか書き込みＩ／Ｏコマンドに応答してデータを受け入れる準備ができていて、調停状態６４８に入るためＳＣＳＩバス信号線を制御する。目標デバイスがＳＣＳＩバスの制御に関する仲裁に成功していると仮定すれば、目標デバイスは、再選択状態６５０に入るためＳＣＳＩバス信号線を制御する。再選択状態は、図６の選択状態に類似しているが、選択状態においてはＳＣＳＩバス・アダプタが目標デバイスを選択しているのに対して、この再選択状態では通信相手のＳＣＳＩバス・アダプタを選択するのは目標デバイスである点が相違している。
【００４５】
一旦目標デバイスがＳＣＳＩバス・アダプタを選択したならば、目標デバイスは、ＳＣＳＩバスがメッセージ到来状態６５２に入るようにするためＳＣＳＩバス信号線を処理する。メッセージ到来状態において、目標デバイスは、識別メッセージ６５４および待ち行列タグ・メッセージ６５６の両方をＳＣＳＩバス・アダプタに送り出す。これらのメッセージは、図６において示された、イニシエータから目標デバイスへのＩ／Ｏコマンドの伝送の間にイニシエータから目標デバイスへ送られた待ち行列タグ・メッセージと同一である。イニシエータは、イニシエータおよび目標デバイスのSCSI_ID、目標LUNおよび待ち行列タグ・メッセージに含まれる待ち行列タグの組み合わせであるI_T_Q_L連結参照番号を使用して、読み取り動作の場合目標デバイスからイニシエータへ引き続いて送られるデータに関するＩ／Ｏトランザクションを、書き込み動作の場合イニシエータによって引き続き伝送されるデータに関するＩ／Ｏトランザクションを識別する。このように、I_T_Q_L連結参照番号は、読み取りの場合目標デバイスからデータを受け取るためまたは書き込みの場合目標デバイスへデータを伝送するための適切なバッファを特定するため処理中Ｉ／ＯコマンドのテーブルへのインデックスとしてＳＣＳＩバス・アダプタによって使用されることができる入出力動作ハンドルである。
【００４６】
識別および待ち行列タグ・メッセージを送信した後、目標デバイスはデータ状態６５８への移行のためＳＣＳＩ信号線を制御する。読み取り入出力動作の場合、ＳＣＳＩバスはデータ到来状態へ移行する。書き込み入出力動作の場合、ＳＣＳＩバスはデータ送出状態へ移行する。ＳＣＳＩバスがデータ状態にある間、目標デバイスは、ＳＣＳＩバス・クロック・サイクル毎に、データが伝送されている特定のＳＣＳＩバスの幅に等しいビット・サイズを持つ１データ単位を伝送する。一般的には、データの各単位の伝送の一部として信号線ACKおよびREQを伴うＳＣＳＩバス信号線ハンドシェークが存在する。例えば、読み取りＩ／Ｏコマンドの場合、目標デバイスはＳＣＳＩバス上に次のデータ単位を送出してREQ信号線をオンにする。イニシエータはREQ信号線オンを検出して、ＳＣＳＩバスから伝送されたデータを取り出し、データの受け取りを確認するためACK信号線をオンにする。このようなタイプのデータ転送は非同期伝送と呼ばれる。
【００４７】
ＳＣＳＩバス・プロトコルは、また、イニシエータからの最初の肯定応答を受け取ることに先行して目標デバイスが一定数のデータ単位を伝送することを許容する。この伝送モードは同期伝送と呼ばれ、このモードにおいては、最初のデータ単位の送出とその伝送のための肯定応答の受け取りの間の待ち時間が回避される。データ伝送の間、目標デバイスは、ポインタ保存メッセージおよびそれに続く切断メッセージをイニシエータに送信し、バス・フリー状態に入るようにＳＣＳＩバス信号線を制御することによって、データ伝送に割り込むことができる。
これによって、更にデータが伝送される前に目標デバイスが制御する論理装置と交信するため目標デバイスは伝送を中断することが可能とされる。ＳＣＳＩバスからの切断の後、目標デバイスは、再び、ＳＣＳＩバスの制御に対する仲裁を求め、イニシエータへ付加的識別および待ち行列タグ・メッセージを送信して、イニシエータが割り込みされたポイントでデータ受信または送信を再開することができるようにする。データ状態６５８に割り込む切断および再接続の例が図７に示されている。最後に、入出力動作に関するすべてのデータが伝送された時、目標デバイスは、メッセージ到来状態６６２に入るためＳＣＳＩ信号線を制御する。この際、目標デバイスはイニシエータに切断メッセージを送る(この前にオプションとしてポインタ保存メッセージが送られる場合もある)。切断メッセージを送信した後、目標デバイスはBSY信号線をオフにし、ＳＣＳＩバスはバス・フリー状態６６４へ移行する。
【００４８】
図７に示されるように、入出力動作に関するデータ伝送に続いて、目標デバイスは入出力動作の状態フェーズの間に状態をイニシエータに返す。図８は入出力動作の状態フェーズを示す。図６および図７の場合と同様に、ＳＣＳＩバスは、バス・フリー状態６６６から調停状態６６８、再選択状態６７０およびメッセージ到来状態６７２へ移行する。メッセージ到来状態６７２の間の目標デバイスによるイニシエータへの識別メッセージ６７４および待ち行列タグ・メッセージ６７６の伝送に続いて、目標デバイスは、状態状態６７８に入るためＳＣＳＩバス信号線を制御する。状態状態６７８において、目標デバイスは、Ｉ／Ｏコマンドが成功裡に完了したか否かを標示するため状態バイト６８４をイニシエータへ送る。0という状態コードによって表されている成功裡の完了に対応する状態バイト６８０が目標デバイスからイニシエータへ送られていることが図８に示されている。状態バイトの伝送に続いて、目標デバイスは、メッセージ到来状態６８２に入るためＳＣＳＩバス信号線を制御する。この際、目標デバイスはイニシエータへコマンド完了メッセージ６８４を送る。この時点で入出力動作は完了した。
次に、ＳＣＳＩバスがバス・フリー状態６８６へ戻るように、目標デバイスはBSY信号線をオフにする。ＳＣＳＩバス・アダプタは、今や、Ｉ／Ｏコマンドの当該部分を終了し、コマンドを実行するために割り当てられた内部資源を解放し、ＰＣＩバスを経由してＣＰＵへ完了メッセージまたは状態を送り戻すことができる。
【００４９】
ＳＣＳＩプロトコルのＦＣＰへの対応付け
図９および図１０は、イニシエータおよび目標デバイスの間で交換されるＦＣＰシーケンスと図６乃至図８で示されたＳＣＳＩバス・フェーズおよび状態の対応関係を示す。図９および図１０において、目標ＳＣＳＩアダプタは、ＦＣＰホスト・アダプタと共にパッケージ化されていると仮定され、従って、目標ＳＣＳＩアダプタは、ＦＣを経由してイニシエータと、ＳＣＳＩバスを経由して目標ＳＣＳＩデバイスと通信することができる。図９は、ＦＣＰシーケンスとＩ／Ｏトランザクショに関するＳＣＳＩフェーズおよび状態の間の対応関係を示す。イニシエータがＦＣを経由して目標ＳＣＳＩアダプタ７０２にFCP_CMDデータ・ペイロードを含む単一フレームＦＣＰシーケンスを送り出すと、トランザクションが始動される。目標ＳＣＳＩバス・アダプタがFCP_CMNDフレームを受け取ると、目標ＳＣＳＩバス・アダプタは、図６に示された仲裁、再選択、メッセージ送出、コマンドおよびメッセージ到来を含むコマンド・フェーズ７０４というＳＣＳＩ状態に進む。
【００５０】
図６に示されているように、コマンド・フェーズの終了時に、目標ＳＣＳＩデバイスがトランザクションを実行する準備をする間ＳＣＳＩバスを解放するため、Ｉ／Ｏトランザクションの目標であるＳＣＳＩデバイスはＳＣＳＩバスから切断する。その後、目標ＳＣＳＩデバイスはＳＣＳＩバス制御のため再度仲裁を求め、Ｉ／Ｏトランザクション７０６のデータ・フェーズを開始する。この時点で、ＳＣＳＩバス・アダプタは、データ伝送を現在進めることができることを標示するFCP_XFER_RDY信号フレーム・シーケンス７０８をイニシエータへ送り返すことができる。読み取りＩ／Ｏトランザクションの場合、FCP_XFER_RDY信号フレーム・シーケンスはオプションである。データ・フェーズが続くにつれて、目標ＳＣＳＩデバイスは論理装置からのデータの読み取りおよびＳＣＳＩバスを経由する目標ＳＣＳＩバス・アダプタへのそのデータの伝送を開始する。次に、目標ＳＣＳＩバス・アダプタは、目標ＳＣＳＩデバイスから受け取ったデータを、Ｉ／Ｏ読み取りトランザクションに対応する交換の第３のシーケンスを形成する多数のＦＣＰデータ・フレームにパッケージ化して、それらＦＣＰデータ・フレームをＦＣ経由でイニシエータへ送り返す。
【００５１】
すべてのデータが伝送され、目標ＳＣＳＩデバイスがＳＣＳＩバスの制御を放棄すると、目標ＳＣＳＩデバイスは再びＳＣＳＩバスの制御のため仲裁を求め、Ｉ／Ｏトランザクション７１４の状態フェーズを始動する。このフェーズの中で、ＳＣＳＩバスは、図８に示されているように、目標ＳＣＳＩデバイスから目標ＳＣＳＩバス・アダプタへＳＣＳＩ状態バイトを送るため、バス・フリー状態から調停、再選択、メッセージ到来、状態、メッセージ到来およびバス・フリー状態へ移行する。状態バイトを受け取り次第、目標ＳＣＳＩバス・アダプタは、FCP_RSP単一フレーム・シーケンス７１６に状態バイトをパッケージ化して、ＦＣを経由してFCP_RSP単一フレーム・シーケンスをイニシエータへ送り返す。これによって読み取りＩ／Ｏトランザクションは完了する。
【００５２】
多くのコンピュータ・システムにおいては、目標ＦＣホスト・アダプタと目標ＳＣＳＩバス・アダプタの間にはＰＣＩバスのような付加的内部コンピュータ・バスが存在する可能性がある。言い換えると、ＦＣホスト・アダプタおよびＳＣＳＩアダプタは単一の目標コンポーネントに一緒にパッケージ化されない可能性がある。単純化のため、そのような付加的相互接続は図９および図１０に示されていない。
【００５３】
図１０は、図９と同様の形態で、FCP_CMNDフレーム７１８によって示されている書き込みトランザクションの間のＦＣＰシーケンスとＳＣＳＩバス・フェーズ／状態の間の対応関係を表している。図１０が図９と相違している点は、書き込みトランザクションの間、FCP_DATAフレーム７２２−７２５がイニシエータから目標へＦＣ上で伝送され、目標からイニシエータ７２０へ送られるFCP_XFER_RDY単一フレーム・シーケンス７２０は読み取りＩ／Ｏトランザクションの場合のようにオプションではなく必須であるといういう点である。図９の場合と同様に、書き込みＩ／Ｏトランザクションは、目標がイニシエータへFCP_RSP単一フレーム・シーケンス７２６を返す場合を含む。
【００５４】
仲裁ループ初期設定
上述のように、ＦＣフレーム・ヘッダは、ＦＣフレームのソースおよび行き先ファブリック・アドレスを指定するフィールドを含む。D_IDおよびS_IDは、特定のＦＣポートに関する３部分ファブリック・アドレスを指定する３バイト数量である。これらの３部分は、ＦＣノードの範囲内におけるＦＣドメイン、ＦＣノード・アドレスおよびＦＣポートの指定を含む。仲裁ループ・トポロジにおいては、１２７の可能な活動ノードの各々が、ループ初期設定の間、仲裁ループ物理アドレス("AL_PA")を取得する。AL_PAは、ＦＣフレーム・ヘッダのD_IDおよびS_IDの範囲内のＦＣポート指定に対応する１バイト数量である。仲裁ループ・トポロジによって接続される活動ノードは多くとも１２７であるので、仲裁ループの範囲内の各ノードをユニークにアドレスするためには１バイトのAL_PPで十分である。
【００５５】
ループ初期設定プロセスは、様々な理由のため、仲裁ループ・トポロジに接続されるノードによって始動される。それらの理由には、ノードの電力リセットに続くループ初期設定、仲裁ループの最初のノードのスタートアップ後の初期設定、すでに動作中の仲裁ループへＦＣノードを引き続き含める動作、および種々のエラー回復動作が含まれる。ＦＣ仲裁ループ初期設定は、７つの独立したフェーズを含む。図１１は、ＦＣ仲裁ループ初期設定の７つのフェーズを示している。図１２は、図１１に示されるループ初期設定の７つのフェーズの各々の間にＦＣノードによって伝送される仲裁ループ・トポロジにおけるＦＣフレームのデータ・ペイロードを示す。ループ初期設定の異なるフェーズの各々において使用されるＦＣフレームに関するデータ・ペイロードは、図１２の欄９０２−９０４に示される３つの異なるフィールドからなる。異なるデータ・ペイロード構造の各々の範囲内の第１のフィールド９０２はLI_IDフィールドである。LI_IDフィールドは、グループ初期設定の７つのフェーズのうちの１つに対応する１つの６ビット・コードを含む。図１２に示されている異なるデータ・ペイロード・レイアウトの各々に対するLI_FLフィールド９０３は、ループ初期設定の最終の２つのフェーズが特定のＦＣポートによってサポートされるか否かを指定するフラグを含め、種々のフラグを含む。TLは、ループ初期設定の７つのフェーズすべてをサポートする。最後に、データ・ペイロード・レイアウト９０４の各々のデータ・ペイロードのデータ部分は、ループ初期設定の７つのフェーズの各々に固有の可変長のデータ・フィールドを含む。以下において、ループ初期設定の７つのフェーズは図１１および図１２を参照して記述される。
【００５６】
"LISM"と呼ばれるループ初期設定８０２の第１のフェーズにおいて、ループ初期設定マスタが選択される。ループ初期設定のこの第１のフェーズは、ループ初期設定プリミティブ("LIP")によるループの充満に続く。すべての活動ノードは、伝送側ノードの８バイト・ポート名を含むLISMＦＣ仲裁ループ初期設定フレーム９０６を伝送する。ループ初期設定に参加する各ＦＣポートは、LISMＦＣ仲裁ループ初期設定フレームの伝送を続行し、受け取ったLISMＦＣ仲裁ループ初期設定フレームを仲裁ループにおける後続のＦＣノードへの送信を続行する。この動作は、ＦＣポートが一層低い(D_ID、S_IDおよび８バイト・ポート名からなる)結合ポート・アドレスを持つ別のＦＣポートによって伝送されるＦＣフレームを検出するか(この場合この別のＦＣポートがループ設定マスタLIMとなる)、あるいは、ＦＣポートがそのＦＣポートが元々伝送したＦＣ仲裁ループ初期設定フレームを受け取る(この場合このＦＣポートがLIMとなる)か、いずれかまで、続く。このようにして、一般的には、ＦＣ仲裁ループ初期設定プロセスに参加している最も低い結合アドレスを持つノードがLIMとなる。定義に従えば、FL_PORTは、最も低い結合アドレスを持つので、LIMになる。ループ初期設定フェーズの各々において、ループ初期設定は、種々の異なる理由から失敗する可能性があり、その場合ループ初期設定プロセス全体の再開が必要とされる。
【００５７】
一旦LIMが選択されると、ループ初期設定はLIFAフェーズ８０４へ進み、そこで、AL_PAを割り当てられたファブリックを持つノードがそのAL_PAの取得を試みる。LIMは、図１２のデータ・ペイロード・レイアウト９０８に従ってフォーマットされたデータ・ペイロードを持つＦＣ仲裁ループ初期設定フレームを伝送する。このデータ形式のデータ・フィールドは１６バイトのAL_PAビットマップを含む。LIMがAL_PAを割り当てられたファブリックを持つとすれば、LIMは、AL_PAを割り当てられたそのファブリックに対応するビットマップの範囲内にビットをセットする。このＦＣフレームが各ＦＣポートを経由して仲裁ループの範囲内を循環するので、そのノードがAL_PAを割り当てられたファブリックを持てばそのことを標示するように各ノードはビットマップにビットをセットする。ビットマップにおけるデータが仲裁ループにおける別のＦＣノードによって既にセットされていれば、ＦＣノードは、３つの後続のグループ初期設定フェーズのうちの１つの間にAL_PAを取得することを試みなければならない。ファブリックに割り当てられたAL_PAは、FL_Portを経由して仲裁ループに接続されるＦＣノードによってAL_PAが指定されることを可能にする手段を提供する。
【００５８】
ＬＩＰＡループ初期設定フェーズ８０６において、ＬＩＭは、図１２のデータ形式９１０に従ってフォーマットされたデータ・ペイロードを含むＦＣフレームを伝送する。データ・フィールドは、ループ初期設定のＬＩＰＡフェーズの間に返されるAL_PAビットマップを含む。ＬＩＰＡフェーズ９１０の間に、AL_PAをいまだに取得していない仲裁ループにおけるＬＩＭおよび他のＦＣノードは、ＦＣノードのメモリの範囲内に保存された以前に取得されたAL_PAに対応するビットマップの範囲内のビットをセットしようと試みる。ＦＣノードが、ＬＩＰＡＦＣフレームを受け取り、そのノードの以前に取得されたAL_PAに対応するビットマップの範囲内のビットがセットされていないことを検出すると、ＦＣノードはそのビットをセットして、それによってそのAL_PAを取得することができる。
【００５９】
ループ初期設定の次の２つのフェーズのＬＩＨＡ８０８およびＬＩＳＡ８１０は、上記ＬＩＰＡフェーズ８０６と類似している。ＬＩＨＡフェーズ８０８およびＬＩＳＡフェーズ８１０は共に、ＬＩＰＡフェーズ９１０およびＬＩＦＡフェーズ９０８に関するデータ・レイアウトと同じデータ・レイアウト９１２および９１４を含むＦＣフレームを利用する。ＬＩＨＡフェーズ８０８およびＬＩＳＡフェーズ８１０の両フェーズにおいて、前のフェーズからのビットマップがＬＩＭによって再循環されるので、AL_PAをまだ取得していない仲裁ループにおけるいかなるＦＣポートもポートのメモリに含まれるハード的に割り当てられたAL_PAの取得を試みるか、または最後のよりどころとして仲裁ループ・トポロジの他のＦＣポートのいずれによってもまだ取得されていない恣意的またはソフト的AL_PAのいずれかを取得することを試みる。ＦＣポートがＬＩＳＡフェーズ８１０の完了時にAL_PAを取得することができないとすれば、そのＦＣポートは仲裁ループに参加しないかもしれない。FC-AL-2規格は、ループ初期設定プロセスの再開を含め、非参加ノードが仲裁ループに加わることを試みることを可能にする種々の条項を含む。
【００６０】
ループ初期設定８１２のＬＩＰＲフェーズにおいて、ＬＩＭは、図１２におけるデータ形式９１６を持つデータ・ペイロードを含むＦＣフレームを伝送する。このデータ形式９１６のデータ・フィールド９１７は１２８バイトのAL_PA位置マップを含む。ＬＩＭは、AL_PAを取得したとすれば、取得したAL_PAをAL_PA位置マップの範囲内で、データ・フィールド９１７のバイト0におけるAL_PAカウント・バイトに続く最初のAL_PA位置に書き込む。ＬＩＰＲＦＣ仲裁ループ初期設定フレームを受け取り再送信する連続ＦＣノードの各々は、ＦＣノードのAL_PAをAL_PA位置マップの範囲内の連続する位置に書き込む。
【００６１】
最後のループ初期設定フェーズＬＩＬＰ８１４において、AL_PA位置マップは各ＦＣポートを経由して仲裁ループ技術で再循環されるので、ＦＣポートは、完結したAL_PA位置マップを取得しメモリに保存することができる。このAL_PA位置マップによって、仲裁ループの範囲内の各ＦＣポートは、仲裁ループの範囲内の他のＦＣポートに対するその位置を決定することができる。
【００６２】
SCSI-3筐体サービス・コマンド
過去１０年の間に、コンピュータ周辺機器製造業者が単一筐体の範囲内に多数の異なる周辺デバイスを含めることが益々一般的となった。そのような筐体の１つの例は、ＲＡＩＤである。単一筐体の範囲内に多数の異なる周辺デバイスをグループ化することによって、周辺装置メーカは一定の製造効率を達成することができる。例えば、筐体の範囲内の周辺デバイスのすべては、１つまたは複数の共通の電源、冷却装置および相互接続媒体を共有することができる。そのような筐体は、個別の周辺デバイスによって与えられる資源よりも大きい資源の集合的セットを提供することができる。加えて、個々の周辺デバイスは、筐体の範囲内の他の周辺デバイスが動作を続ける間に、筐体からスワップ・インおよびスワップ・アウトすることが可能である。このようなプロセスはホット・スワッピングとして知られている。また、経済的で高可用性の資源を達成するため、記憶装置冗長性およびミラー機能に関してそのような筐体のバンクを使用することが可能である。
【００６３】
図１３は、単純な複数周辺デバイス筐体を示す。筐体１００２は、電源１００４、冷却ファン１００６、４つのディスク・ドライブ１００８−１０１１を含む。筐体の範囲内の回路ボード１０１４は、プロセッサ１０１６、内部バス１０１８、および、プロセッサ１０１６、ディスク・ドライブ１００８−１０１１および筐体１００２がそれを経由してホスト・コンピュータ(図示されていない)に接続されることができるポート１０２２を接続する接続媒体１０２０を含む。システムによっては、ホスト・コンピュータが、プロセッサ１０１６の他にディスク・ドライブ１００８−１０１１に個別にアドレスおよび対話するか、あたかも筐体が単一アドレス基底を持つ１つの非常に大きいディスク・ドライブを表すかのように筐体１００２と対話するものもある。プロセッサ１０１６は、一般的には、電源１００４および冷却ファン１００６の状態と共に、筐体１００２の範囲内の周辺デバイス１００８−１０１１の各々の状態を監視するプロセスを実行する。プロセッサ１０１６は、図１３における内部バス１０１８のような内部通信媒体を経由して電源１００４および冷却ファン１００６と通信する。
【００６４】
電源１００４および冷却ファン１００６のような種々のコンポーネントによって筐体の範囲内で提供される情報へのホスト・コンピュータのアクセスを実現するため、また、筐体の範囲内の種々のコンポーネントを個別に制御する能力をホスト・コンピュータに与えるため、ホスト・コンピュータと図１３の筐体１００２のような筐体の範囲内で稼働する筐体サービス・プロセスの間の通信のための通信規格としてＳＣＳＩコマンド・セットが定義されている。ＳＣＳＩ筐体サービス("SES"と略称される)コマンド・セットは、"American National Standard for Information Technology Standards Document NCITS 305-199X"に記述されている。ＳＥＳコマンド・セットは、現在X3T10 Committeeによって開発中の参照規格において定義される予定である。
【００６５】
図１４は、ＳＥＳコマンド・セットによって表される基本通信パラダイムを示す。ホスト・コンピュータ１１０２が、筐体１１０８の範囲内で稼働する筐体サービス・プロセス１１０６にＳＥＳコマンド１１０４を送る。筐体サービス・プロセスは例えば図１３におけるプロセッサ１０１６上で実行される。筐体サービス・プロセス１１０６は、筐体１１０８の範囲内の種々のコンポーネント１１１０−１１１３と交信し、次に、ホスト・コンピュータ１１０２によって筐体サービス・プロセス１１０６に送られたＳＥＳコマンドに対する応答１１１４を返す。
【００６６】
ＳＥＳコマンドおよびＳＥＳコマンドへの応答には多数の異なるタイプがある。そのような種々のタイプの詳細については上記引用ANSI規格文書を参照することができる。一般的には、ホスト・コンピュータ１１０２と筐体サービス・プロセス１１０６の間の大量の通信トラフィックは、２つの基本的コマンドを必要とする。それらは、(1)ホスト・コンピュータが筐体サービス・プロセスに制御情報を伝送するために使用するSEND DIAGNOSTICS(診断送信)コマンド、および、(2)ホスト・コンピュータが、筐体の範囲内の種々のコンポーネントに関する状態情報を含む情報の送信を筐体サービス・プロセスに求めるためのRECEIVE D  IAGNOSTIC RESULTS(診断結果受け取り)コマンドである。ホスト・コンピュータは、筐体制御ページを介して筐体サービス・プロセスにSEND DIAGNOSTICSコマンドを伝送する。筐体制御ページのレイアウトは以下の表１に示されている。
【００６７】
【表１】
0004497605.tif 000002
【００６８】
筐体制御ページは、筐体の範囲内のコンポーネントの各タイプに関するOVERALL CONTROL(全般的制御)フィールド、および、筐体の範囲内の各個別コンポーネントに関するELEMENNT CONTROL(エレメント制御)フィールドを含む。特定タイプのコンポーネントすべてに関するELEMENT CONTROLフィールドは、そのタイプのコンポーネントに関するOVERALL CONTROLフィールドの後に、グループとして集められる。これらの制御フィールドは、コンポーネントまたはエレメントのタイプに依存する種々の形式を持つ。いくつかのタイプのデバイスに関する筐体制御ページの制御フィールドに関する形式を以下に記述する。ＳＥＳコマンド・セットによって現在サポートされているエレメントのタイプが次の表２に示されている。
【００６９】
【表２】
タイプ                             タイプ
コード    エレメント・タイプ   コード    エレメント・タイプ  
00h   未定義                       0Dh   キーパッド入力装置
01h   装置                         0Eh   予約
02h   電源                         0Fh   SCSIポート/トランシーバ
03h   冷却エレメント               10h   言語
04h   温度センサ                   11h   通信ポート
05h   ドア・ロック                 12h   電圧センサ
06h   警報音                       13h   電流センサ
07h   筐体サービスコントローラ     14h   SCSI目標ポート
08h   SCCコントローラ              15h   SCSIイニシエータ・ポート
09h   不揮発性キャッシュ           16h   下位筐体
0Ah   予約                         17-7Fh  予約
0Bh   割り込み不能電源             80-FFh  メーカー使用コード
0Ch   ディスプレイ
【００７０】
ホスト・コンピュータが筐体サービス・プロセスにRECEIVE DIAGNOSTIC RESULTSコマンドを発すると、筐体サービス・プロセスは、筐体の範囲内のコンポーネントまたはエレメントの各々から状態情報を収集して、収集した状態情報を含む筐体状態ページをホスト・コンピュータに返す。筐体状態ページのレイアウトは次の表３に示されている。
【００７１】
【表３】
0004497605.tif 000003
【００７２】
上述された筐体制御ページと同様に、特定のコンポーネントまたはエレメントに関する筐体状態ページは、そのタイプのコンポーネントに関するOVERALL  CONTROLフィールドの後にグループとして集められる。このように、筐体状態ページは、筐体の範囲内の特定タイプのエレメントの各々に関する個々のELEMENT  STATUS(エレメント状態)フィールドが後に続く各タイプのエレメントに関するOVERALL STATUS(全般的状態)フィールドを含む。状態フィールドの形式はエレメントのタイプによって変わる。いくつかのデバイスに関する状態フィールド形式が後述される。筐体および筐体の範囲内のすべてのコンポーネントまたはエレメントを記述する構成ページを筐体サービス・プロセスから受け取ることを求めるため、ホスト・コンピュータは、特別なページ・コードを用いてRECEIVE   DIAGONOSTIC RESULTSコマンドを発することができる。次の表４は構成ページのレイアウトを示す。
【００７３】
【表４】
0004497605.tif 000004
【００７４】
構成ページは、筐体に含まれるコンポーネントまたはエレメントの各タイプに関する情報を含むタイプ記述子ヘッダ・リストと共に、全体として筐体を記述する筐体記述子ヘッダおよび筐体記述子を含み、更に、エレメント・タイプの各々に対応する記述子テキストを含むタイプ記述子テキスト・リストを含む。次の表５および表６は、ファンのような冷却エレメントに関する筐体制御ページにおけるELEMENT CONTROLフィールドの形式形式を示す。
【００７５】
【表５】
0004497605.tif 000005
【００７６】
【表６】
REQUESTED SPEED CODEの値
速度コード         説明                
000b           予約
001b           最低スピードファン
010b           ２番目に遅い速度のファン
011b           速度３のファン
100b           速度４のファン
101b           速度５のファン
110b           中間速度のファン
111b           最高速度のファン
【００７７】
ELEMENT CONTROLフィールドの範囲内のビット・フィールドによって、ホスト・コンピュータが筐体サービス・プロセスに対して特定の冷却エレメントに関連する一定のアクションを指定することが可能とされる。例えば、REQT FAILビットをセットすることによって、ホスト・コンピュータは、冷却エレメントの故障を標示するため視覚インジケータをオンにすることを指定する。RQST ONフィールドをセットすることによって、ホスト・コンピュータは冷却エレメントがオンにされその状態を維持することを要求する。REQUESTED SPEED CODE(所望の速度コード)フィールドは、冷却エレメントが動作すべき特定の冷却ファン速度をホスト・コンピュータが指定することを可能にする。表６は、所望の速度コード・フィールドに指定されることができる異なるファン速度設定値を含む。次の表７および表８は、表３に示された筐体状態ページの範囲内の冷却ELEMENT STATUSフィールドのレイアウトを示している。
【００７８】
【表７】
0004497605.tif 000006
【００７９】
【表８】
実際速度コード値
速度コード         説明                
000b           停止中ファン
001b           最低スピードファン
010b           ２番目に遅い速度のファン
011b           速度３のファン
100b           速度４のファン
101b           速度５のファン
110b           中間速度のファン
111b           最高速度のファン
【００８０】
表７に示されているELEMET STATUSフィールドの範囲内の種々のビット・フィールドは、特定の冷却エレメントまたはファンの状態をホスト・コンピュータに標示する。FAILビットがセットされていると、筐体サービス・プロセスは、特定のファンに関する故障標識がセットされたことを示している。RQSTED ONビットがセットされていると、ファンが手動でオンとされたかまたはSEND DIAGNOSTICSコマンドを介してオンにするよう要求されたことを筐体サービス・プロセスはホスト・コンピュータに標示する。OFFビットがセットされていると、ファンが動作していないことを筐体サービス・プロセスがホスト・コンピュータに標示する。筐体サービス・プロセスは、実際速度コード・フィールドを介してファンの動作の実際の速度をホスト・コンピュータに通知することができる。実際速度コード値は上記表８に示されている。
【００８１】
表１に示された筐体制御ページの範囲内の電源に関するELEMENT CONTROLフィールドのレイアウトは次の表９に示されている。表３に示された筐体状態ページに含まれる電源エレメントに関するELEMENT STATUSフィールドのレイアウトは次の表１０に示されている。
【００８２】
【表９】
0004497605.tif 000007
【００８３】
【表１０】
0004497605.tif 000008
【００８４】
電源制御および状態フィールドにおけるフィールドの多くは、表５および表７の冷却エレメント制御および状態フィールドと同様であるので、これ以上の説明は行わない。電源状態フィールドは、また、不足電圧、過電圧、過電流、電源異常およびその他の温度条件を標示するビット・フィールドを含む。
【００８５】
ＳＥＳコマンド・セットおよびＳＥＳプロトコルは、ホスト・コンピュータと複数の周辺デバイスを含む筐体の間の標準ＳＣＳＩ通信を指定する。ＳＥＳプロトコルは、ホスト・コンピュータが筐体の範囲内の個々の周辺デバイスの動作を制御し、周辺デバイスの動作の状態に関する情報を取得することを可能にする。
【００８６】
複数ディスク筐体
ＦＣによって提供される高バンド幅および柔軟な接続性は、ＳＥＳコマンド・セットおよびプロトコルをサポートするＦＣの能力と共に、複数周辺デバイスを含む筐体とホスト・プロセッサを接続させ、筐体の範囲内で複数の周辺デバイスを相互接続させる魅力的通信媒体にＦＣをさせた。以下に複数のディスク・ドライブを包含する筐体について記述するが、筐体の範囲内で複数のディスク・ドライブを相互接続し、また、筐体とホスト・コンピュータを接続するための技術および手法はその他のタイプの周辺デバイスに関しても同様に適用することができる。
【００８７】
図１５は、現在使用可能な特定のＦＣ型複数ディスク筐体の製造業者によって使用される設計のブロック図である。図１５には、８つのディスク・ドライブ１２０４−１２１１を内包する筐体１２０２が示されている。ディスク・ドライブは、背面配線板１２１２に取り付けられ、それによって相互接続されている。複数コンポーネント回路ボード１２１４が、また、背面配線板１２１２に接続されている。２つのギガビット・インタフェース・コンバータ(略して"GBIC")１２１６および１２１８が筐体１２０２への外部光ファイバ・ケーブル接続を提供する。回路ボード１２１４は、プロセッサ１２２０および内部ＦＣループ１２３０によって相互接続される多数のポート・バイパス回路(略して"PBC")１２２２−１２２９を含む。筐体サービス・プロセスはプロセッサ１２２０上で動作して、ホスト・コンピュータ(図示されてない)が筐体の範囲内の(ファン、電源、温度センサ等々のような)種々の付加的コンポーネントを制御することを可能にする。
【００８８】
筐体の個々のディスク・ドライブ１２０４−１２１１は、筐体の別のディスク・ドライブの動作の間に取り替え、取り外し、または追加を実施することが可能である。ホット・スワッピングは、図１５に示されている現在使用可能なシステムにおいてポート・バイパス回路１２２２−１２２９によって可能とされている。ある１つのディスクが存在して機能している時、ＦＣ信号は、ＦＣループ１２３０から、ポート・バイパス回路(例えばポート・バイパス回路１２２５)を経由して、ディスク・ドライブ(例えばディスク・ドライブ１２０７)へ送られる。あるディスク・ドライブが取り外されている時、ポート・バイパス回路は、ＦＣ信号を次のポート・バイパス回路に直接送るか、またはＦＣループ１２３０に沿って他のコンポーネントへ送る。例えば、ディスク・ドライブ１２０７がホット・スワッピングによって取り替えられるとすれば、ＦＣ信号は、ディスク・ドライブ１２０６からポート・バイパス回路１２２４を経由してポート・バイパス回路１２２５へ、そして、ポート・バイパス回路１２２５からポート・バイパス回路１２２６へ直接送られる。
【００８９】
単一のＧＢＩＣ(例えばＧＢＩＣ１２１６)は、光ファイバを介してホスト・コンピュータへの筐体の接続を可能にする。第２のＧＢＩＣ(例えばＧＢＩＣ１２１８)は、その筐体の別の筐体へのデージーチェーン方式の接続を可能にし、それによって、ファイバ・チャンネル・ループ１２３０に別のグループのディスク・ドライブが加えられることになる。第２のＧＢＩＣが存在するがその第２のＧＢＩＣを通してデージーチェーン方式で接続された筐体がない場合、ＦＣ信号を筐体を通して折り返しさせ、最終的にはホスト・コンピュータへ送り戻すため、一般的には、折り返しコネクタまたはターミネータが第２ＧＢＩＣに取り付けられる。
【００９０】
図１６の(Ａ)は、図１５におけるポート・バイパス回路１２２２−１２２９のようなポート・バイパス回路の概要を示している。入力ＦＣ信号("IN")１３０２が加算アンプ１３０４に送られ、微分的に符号化されたＦＣ信号がＰＢＣ回路の範囲内で使用される線形信号に変換される。同様に、加算アンプ１３０６−１３０８は線形および微分信号を相互変換するため使用される。変換された入力信号１３１０は分割され、バッファ付き出力("Pout")１３１２およびマルチプレクサ１３１４へ送られる。第２のＦＣ信号("Pin")１３１６が加算アンプ１３０７を通過して、マルチプレクサ１３１４へ入力される。マルチプレクサ１３１４からのＦＣ出力信号("OUT")１３１８はSEL制御入力線１３２０によって制御される。
SEL制御入力線がオンにされていると、マルチプレクサ１３１４は、Pin入力１３１６を出力信号(OUT)１３１８に渡す。EL制御入力線がオンにされていないと、マルチプレクサ１３１４は、IN入力信号１３０２を出力信号(OUT)１３１８に渡す。
【００９１】
図１６の(Ｂ)は、ポート・バイパス回路を経由するファイバ・チャンネル・ループへのディスク・ドライブの接続を示す。簡潔さのため、図１６の(Ａ)に示されているコンポーネントと同じものであるポート・バイパス回路のコンポーネントには、(Ａ)と同じラベルを付け、それらコンポーネントの説明は省略する。ディスク・ドライブ１３２２は、ポート信号１３１２を介してファイバ・チャンネル・ループから入力信号IN１３０２を受け取る。ディスク・ドライブがSEL制御信号１３２０をオンにする時、ディスク・ドライブは、マルチプレクサ１３１４によって出力信号OUT１３１８に渡される信号Pin１３１６を提供する。出力信号OUTはＦＣループを経由してＦＣ信号の方向の次のＦＣポートに伝送される。SEL制御信号１３２０がオフにされる時、ディスク・ドライブ１３２２はバイパスされ、入力信号IN１３０２が、出力信号１３１８として、ＦＣ信号方向の次のＦＣポートに渡される。ディスク・ドライブ１３２２は、筐体に安全に装着され、背面配線板に接続され、ＦＣループと機能的に相互動作する準備ができている時にSEL制御信号をオンにする。
【００９２】
ディスク・ドライブ１３２２が装着されていないまたは機能的にＦＣループと相互動作できる状態にない時、SEL制御線１３２０はオフにされ、ＦＣ信号はディスク・ドライブをバイパスする。ディスク・ドライブがオンライン筐体との間でホットスワップされている時、機能中のディスク・ドライブを相互接続させるＦＣループは、上述のような再初期設定を実行しなければならないが、発生する割込みは比較的わずかであり、割り込まれたいかなるデータ伝送も回復される。しかしながら、ＦＣループの動作を劣化または停止させ、本質的に受動的ＰＢＣによって検出およびバイパスされることができないようなディスク・ドライブの異なる可能な故障モードが存在する。例えば、ディスク・ドライブは擬似信号を間欠的に伝送するか、さもなければ、要求されたデータを伝送した後にＦＣループの制御の生成に失敗する可能性がある。このように、受動的ＰＢＣは、ディスク・ドライブのホット・スワッピングを可能にするけれども、高可用性システムに必要な高レベルのコンポーネント誤動作検出および回復を提供しない。
【００９３】
本発明の複数ディスク筐体
本発明の方法およびシステムは、信頼性の増加、フォルト・トレランスの増大、可用性の増加を提供する新しいタイプの複数周辺デバイス筐体に関するものである。前述の場合と同様に、この新しい複数周辺デバイス筐体は複数ディスク筐体の観点から記述されるが、本発明の技術および方法は、一般的に、種々のタイプの周辺デバイスの異なる組み合わせを内包する筐体に適用することができる。本発明の方法およびシステムは、筐体の範囲内の種々の周辺デバイスの間のみならずホスト・コンピュータと筐体の間のＦＣ相互接続に基づく筐体に関して以下に記述される。しかしながら、ＦＣに代えて、他のタイプの通信媒体を利用することもできる。また、ＳＥＳコマンド・セットおよびプロトコルがホスト・コンピュータにコンポーネント・レべル制御を提供する場合の複数ディスク筐体に関して本発明の方法およびシステムが記述されるが、このコンポーネント・レべル制御は他のタイプのプロトコルおよびコマンド・セットによって提供されることもできる。
【００９４】
図１７は、本発明に関連した技術を組み入れた高可用性筐体を示す。以下の記述において、高可用性筐体を、その英語表現の"highly available enclosure"の頭文字をとって"HAE"と略称する場合がある。図１７に示される高可用性筐体は、８つのディスク・ドライブ１４０２−１４０９を含む。ディスク・ドライブ１４０２−１４０９は背面配線板１４１２に接続される。背面配線板は、ディスク・ドライブをＨＡＥにおける他のコンポーネントと接続すると共に、ディスク・ドライブと独立して、ＨＡＥにおける一定の他のコンポーネントを相互接続する。背面配線板１４１２は受動的である。すなわち、それは演算エレメントのような能動的コンポーネントを含まず、従ってＨＡＥの範囲内での故障ポイントになる可能性はきわめて少ない。２つのリンク制御カード("LCC")１４１４および１４１６が背面配線板に接続される。２つのＬＣＣは本質的に同一である。上部ＬＣＣ１４１４に含まれるコンポーネントだけを以下記述するので、図ではそれらにだけ符号がつけられている。
【００９５】
ＬＣＣは、２つのＧＢＩＣ１４１８および１４２０、多数のポート・バイパス回路１４２２−１４２４およびいくつかのポート・バイパス回路チップ１４２６および１４２８を含む。ポート・バイパス回路チップの各々は４つの独立したポート・バイパス回路を含む。ポート・バイパス回路１４２２、１４２３を接続する線分１４３０のような図１７において太線で表されているＦＣループおよびポート・バイパス回路バス１４３２の両方によって、ポート・バイパス回路およびポート・バイパス回路チップは相互接続される。図１７に示されているように、ポート・バイパス回路は、ポート・バイパス回路１４２２および１４２３の間の接続のようなＦＣループのみならずポート・バイパス回路バスによっても相互接続されている。
【００９６】
図１７において、バイパス回路チップ１４２６、１４２８は、８つのディスク・ドライブ１４０２−１４０９への線１４３４のような単一線によって集合的に表されているPout、PinおよびSEL制御線信号をファンアウトする。各ポート・バイパス回路チップは、４つのディスク・ドライブに対するＦＣループ・アクセスを制御する。ＬＣＣは筐体サービス・プロセスおよび他の制御プログラムを実行するプロセッサ１４３６を含む。このプロセッサ１４３６は、３つの異なる内部バスへのポートと共にＦＣポートを実施する回路を含む。１つの好ましい実施形態において、内部バス１４３８のうちの１つであるＩ2Ｃバスが、ＰＢＣコントローラ・チップ１４４０および１４４２および(温度検出器および電力監視器１４４４および１４４６のような)他のコンポーネントにプロセッサ１４３６を接続する。１つのＬＣＣのプロセッサ１４４６は、背面配線板１４１２を通過する２つの別々の内部バス１４５０および１４５２によって別のＬＣＣ１４４８上のプロセッサと接続される。
【００９７】
ＨＡＥは高度に冗長である。ディスク・ドライブ１４０２−１４０９は、２つのＬＣＣカード１４１４および１４１６上で部分的に実施される２つの別々のＦＣループによって相互接続される。従って、１つのＦＣループが故障したとしても、ホスト・コンピュータ(図示されてない)は、他のＦＣループを経由してその筐体のディスク・ドライブに対するデータのアクセスおよび交換をなおも行うことができる。同様に、２つのプロセッサ１４３６および１４４８を相互接続する１つの内部バスが故障しても、２つのプロセッサはもう１つの内部バスを経由して通信することができる。図１４には図示されていないが、ＨＡＥは、二重の電源およびその他の冗長コンポーネントを含む。２つのプロセッサの各々が２つの冗長コンポーネントの１つ(例えば１つの電源)を制御することによって、故障したプロセッサが両方の電源を遮断してＨＡＥを使用不可能にしないことが保証される。
【００９８】
ポート・バイパス回路が、上述の既存の筐体の場合と同様に、ディスク・ドライブのホット・スワッピングを可能にする。しかしながら、ポート・バイパス回路自体がポート・バイパス回路コントローラ１４４０および１４４２によって制御されるので、更に一層高いレベルのコンポーネント制御が達成される。例えば、プロセッサ１４３６上で稼働するソフトウェア・ルーチンが、故障ディスク・ドライブを識別および分離し、特定ディスク・ドライブを強制的にバイパスするようにポート・バイパス回路コントローラに信号を送ることができる。冗長な環境監視機構が、両方のプロセッサのＨＡＥの範囲内の条件の用心深いフォルト・トレラント監視機能を可能にする。いかなる特定のセンサまたは相互接続内部バスの故障もＨＡＥ全体の故障を生み出さない。
【００９９】
図１８の(Ａ)は、ポート・バイパス回路制御チップによるポート・バイパス回路の制御を示す。図１８の(Ａ)に示されている回路は、上述の図１６の(Ｂ)に示された回路に類似している。しかしながら、この回路において、"SD"という符号の制御信号線１５０２はマルチプレクサ１５０４の出力を直接制御しない。その代わりに、SD制御信号線１５０２はＰＢＣ制御回路１５０６へ入力される。ＰＢＣ制御回路は、マイクロプロセッサによって実施されるか、あるいは状態マシン論理機構に基づいて実施される。ＰＢＣ制御回路１５０６は、強制的バイパス制御回路線("FB")を出力する。線"FB"は、上記図１６の(Ｂ)の場合と同様に、入力信号IN１５０８が出力信号OUT１５１０にそのまま渡されるか、あるいは、あるいはその代わりにPin信号１５１２がマルチプレクサ１５０４によって出力信号OUT１５１０へ渡されるかを決定する。ＰＢＣ制御回路１５０６は、また、シリアル・バス１５１０経由でマイクロプロセッサ１５０８と、あるいは、その他のタイプの通信メディアと、データを交換することができる。マイクロプロセッサ１５０８は、ディスク・ドライブ１５１４をバイパスするためＰＢＣ制御回路１５０６がＦＣ制御信号１５０３をオンにしなければならないことをＰＢＣ制御回路１５０６に指示することができる。このようにして、図１８(Ａ)に示される回路において、信号線SD１５０２を経由してディスク１５１４によってはたらかされる制御の他にいくつかの付加的レベルの制御が利用できることとなる。ＰＢＣ制御回路１５０６は、内部的規則セットに従ってディスク１５１４を強制的にバイパスすることが可能であり、マイクロプロセッサ１５０８の範囲内で稼働するプログラムによって、ＰＣＢ制御回路１５０６に伝送されるデータを介してディスク１５１４が強制的にバイパスされることが可能とされる。これらの付加的レベルの制御は、環境監視機構およびそのような他のセンサの信号によって通知されるディスク誤動作または臨界イベントの検出の後の個々のディスク・ドライブのマイクロプセッサに制御されたバイパスを可能にする。
【０１００】
図１８の(Ｂ)はハードウェアで実施されるＰＢＣ制御回路の例を示す。Ｄフリップフロップ１５１６は強制的バイパス信号("FB")１５１８を出力する。Ｄフリップフロップは、ストローブ入力信号１５２０を受け取り次第状態を変更する。
Ｄフリップフロップは、SD制御信号線１５２２から入力を、マイクロプロセッサから書き込みデータ１５２４を受け取る。SD制御線が状態を変更する時、あるいは、マイクロプロセッサ書き込み動作が存在する時必ずストローブ信号が生成される。SD入力１５１２に対する変更、あるいは、マイクロプロセッサから入力される書き込みデータ１５２４に対する変更のいずれかに基づいて、Ｄフリップフロップはセットまたはクリアされる。強制的バイパス信号("FB")は、SD制御信号１５２２を追跡するが、マイクロプロセッサ制御に優先される場合がある。このようにして、図１８の(Ｂ)の制御回路が、ＰＣＢ制御回路１５０６として図１８の(Ａ)に含まれると、マイクロプロセッサがバイパスすべきディスク自体に従うのではなく、強制的にディスクをバイパスすることを決めるケースを除いて、図１８の(Ａ)の回路は、図１６の(Ａ)の回路と同様に機能することができる。
【０１０１】
また、図１８(Ａ)の強化されたＰＢＣC制御回路をＨＡＥにおいて使用して、種々の入れ替え動作を実行することができる。例えば、図１７におけるＰＢＣ回路１４２２および１４２３は、それぞれＧＢＩＣ１４１８および１４２０をバイパスするようにＰＢＣコントローラ１４４０および１４４２によって制御されることができる。図１９は、１つのＧＢＩＣをバイパスするために入れ替動作の実施が役立つことを示している。図１９の(Ａ)において、２つのＨＡＥ１６０２および１６０４が単一のＦＣループ１６０６を通してデージーチェーン方式で接続されている。ホスト・コンピュータ(図示されてない)から延伸してくるＦＣ光ファイバが、第１のＧＢＩＣ１６０８を通して第１のＨＡＥ１６０２に接続する。ＦＣループは、ＧＢＩＣ１６１０において第１のＨＡＥを出て、ＧＢＩＣ１６１２において第２のＨＡＥ１６０４に入る。ＦＣループは、最後に、ＧＢＩＣ１６１４において第２のＨＡＥ１６０４を出て、戻りの経路を通ってホスト・コンピュータに戻る。ＦＣ回路は、外部ループバック・フード１６１６を使用してＧＢＩＣ１６１４から折り返される。
【０１０２】
図１９(Ａ)に例示されている単純な形式のデージーチェーン方式には問題がある。第２のＨＡＥ１６０４の範囲内の一定の誤動作が第１のＨＡＥ１６０２を含むＦＣループ全体を停止させる可能性がある。すなわち、図１９(Ａ)の方式に従ってデージーチェーン方式で接続されている場合、ＨＡＥは、容易に分離およびバイパスすることができない。また、外部ループバック・フード１６１６は、システム全体にコストを加える付加的コンポーネントであり、設置における問題を派生させ、また単一ポイント故障の別の１つの発生源となる。
【０１０３】
図１９(Ａ)のデージーチェーン方式の接続に関連する上記の欠陥は、ＰＢＣ制御論理回路によって制御される分路動作を使用して克服することができる。図１９の(Ｂ)は、図１９の(Ａ)に示されたＨＡＥを示しているが、図１６の(Ａ)において外部ループバック・フード１６１６によって提供された機能性がここでは１つのＰＢＣによって実施されている。図１６の(Ｂ)において、ＨＡＥ１６２０の右端のＧＢＩＣ１６１８はＰＢＣ１６２２によって制御される。ＰＢＣ自体は、マイクロプロセッサ(図示されていない)によって制御されるＰＢＣコントローラ１６２４によって制御される。
【０１０４】
戻りＦＣ信号１６２６は、変換の後、制御信号線１６２８としてＰＢＣコントローラ１６２４へフィードバックされる。ＧＢＩＣ１６１８が別のＨＡＥに接続される光ファイバ・ケーブルに接続されている場合、ＦＣ戻り信号１６２６に応じて、制御信号線１６２８がオンにされ、ＰＢＣコントローラ１６２４は、当該ＨＡＥ内部での信号送付および外部の付加ＨＡＥへの信号送付を行うようにＰＢＣ１６２２を制御する。しかしながら、ＨＡＥがＧＢＩＣ１６１８および光ファイバ・ケーブルを経由して他のＨＡＥに接続されていない場合、制御信号線１６２８はオフとされ、ＰＢＣコントローラ１６２４はＧＢＩＣ１６１８をバイパスするようにＰＢＣ１６２２を制御し、この結果、ＦＣ信号は戻り経路を経由してホスト・コンピュータへ折り返される。このメカニズムは、外部ループバック・フード１６１６の必要性を排除し、デージーチェーン方式で接続される筐体の自動検出機能を提供する。更に、ある１つの筐体が誤動作するＨＡＥ１６２０の下流側にあれば、ホスト・コンピュータ(図示されていない)は、そのＨＡＥ(やはり図示されてない)の範囲内のマイクロプロセッサと交信して、ＰＢＣコントローラ１６２４がＰＢＣ１６２２を介してＧＢＩＣ１６１８を強制的にバイパスするように指示し、それによって、下流筐体はそのＦＣループから取り外される。このようにして、欠陥筐体は、ＧＢＩＣのマイクロプロセッサ制御の分路動作によって、分離および除去されることができる。
【０１０５】
本発明
本発明は、ＦＣ仲裁ループ経由でホスト・コンピュータへ接続されるＨＡＥデージーチェーンの範囲内の誤動作ＥＡＥの検出および分離、および、ＨＡＥの範囲内で誤動作しているディスク・ドライブの検出および分離に関するものである。本発明の基本戦略は、各ＨＡＥに関して、電源投入とともに、一連のＨＡＥをホスト・コンピュータに接続するＦＣ仲裁ループへの接合の前に、自己診断を実施することである。このようにして、各ＨＡＥは、ＦＣ仲裁ループへの接合に先行して一定レベルの機能性および信頼性を確認する。もしもそのＨＡＥの範囲内の特定のディスク・ドライブが誤動作しているとすれば、誤動作ディスク・ドライブがＦＣ仲裁ループに接合されることのないように、そのディスク・ドライブはＰＢＣ回路コントローラによってバイパスされる。ＨＡＥ全体が誤動作していれば、その上流ＨＡＥがＦＣ仲裁ループに接合することを可能にするため、当該ＨＡＥまたは下流ＨＡＥのいずれかがバイパスされる。代替的には、一連のＨＡＥをホスト・コンピュータに接続するＦＣ仲裁ループの信号方向が反対方向を持つ場合、その他残りのＨＡＥのホスト・コンピュータへの接続をなおも可能としながら、単一の誤動作ＨＡＥを分離および除去することができる。誤動作ＨＡＥの下流のＨＡＥは１つのＦＣ仲裁ループから取り除かれるが、それらＨＡＥは別のＦＣ仲裁ループにおいては上流であるので、それらは第２のＦＣ仲裁ループを経由してホスト・コンピュータからアクセスされることができる。
【０１０６】
ＨＡＥ仲裁ループ自己診断管理プロセスはＣ＋+類似擬似コードで後述される。各ＨＡＥの範囲内の１つまたは両方のプロセッサ上で稼働する自己診断管理プロセス(self-test management processの頭文字をとって以下"STMP"と略称する)にとって利用可能な種々の機能性を表す多数のクラスが疑似コードにおいて提示される。これらクラスのメソッドは宣言されるが、実施形態は与えられない。これらメソッドの実施形態は、ＨＡＥアーキテクチャの上記の詳細な記述の観点から容易に実施されるハードウェアまたはハードウェア／ソフトウェアの組み合わせを必要とするかもしれない。これらのクラスの宣言に続いて、本発明の１つの好ましい実施形態を提示および記述するため電源投入ルーチンの実施形態が提供される。最後に、高可用性システムにとって必要な連続動作を達成するためＨＡＥの範囲内のディスク・ドライブの実行時誤動作がどのように検出および分離されるかを示すため、割込みサービス・ルーチンが提供される。
【０１０７】
注意されるべきことであるが、以下に提供される擬似コード実施形態は、どのような異なる言語でもまたほとんど無制限の数の形態で書くことができる。実施形態は、ＨＡＥのハードウェア・コンポーネントおよびハードウェア構成に関して行われる特定の選択のみならず、ＨＡＥおよびホスト・コンピュータ／ＨＡＥシステム全体が種々の誤動作およびエラー条件にいかに応答すべきかに関する選択に依存する。以下に提供される擬似コード・ルーチンは、ＨＡＥの範囲内の１つまたは両方のプロセッサ上で稼働し、システム全体の信頼性を向上させるＳＴＭＰを実施するためＨＡＥのユニークなハードウェア機能を使用する１つの実施形態を示す。ＳＴＭＰは、ＨＡＥの範囲内のマイクロプロセッサ上で稼働し、次のような３つの主要な機能性セットを活用する。すなわち、(1)ＰＢＣ回路コントローラに対する指示語、(2)ＦＣ仲裁ループ動作、および、(3)ＳＥＳプロトコル・コマンドである。これら３つのタイプの機能性はすべて上述されている。これら３つの機能性セットは、若干の機能性の追加と共に、列挙および定数に続いて、３つのクラス宣言でカプセル化される。
【０１０８】
【表１１】
1   class set
2   {
3   Boolean in(int e);
4   }
5
6   class PBCcontroller
7   {
8   void bypassPrimaryPort();
9   void bypassExpansionPort();
10  void bypassDisk(intdiskno);
11  void unBypassPrimaryPort();
12  void unBypassExpansionPort();
13  void unBypassDisk(intdiskno);
14  Boolean diskInstalled(intdiskno);
15  Boolean signalDetectPrimary();
16  Boolean signalDetectExpansion();
17  }
18
19  class FC
20  {
21  void initializeLoop();
22  void send_LIPF7F7();
23  FCStatus receiveLIPStatus();
24  void report(int*buff);
25  int getUpstreamAlpa(intalpa);
26  int getDiskNo(intalpa);
27  }
28
29  class SES
30  {
32  void issueTestUnitReady(intdiskno);
33  void issueInquiry(indiskno);
34  void issueReadCapacity(intdiskno);
35  SESstatus receiveSESStatus(int*buff);
36  {
37
38  enum FCstatus{LIP_RECEIVED,TIMED_OUT}
39  enumS ESstatus{GOOD,BAD}
40  enum ERRORS{ENCLOSURE_FAULT,DISK_FAILURE,
41         TEST_UNIT_READY_FAILURE,
42         INQUIRY_FAILURE,READ_CAPACITY_FAILURE}
43
44  const int NUM_DISKS;
45  const int BUFFSIZE;
46
47  error(ERRORS e){};
48
49  set OurAlpas;
【０１０９】
上記第1から4行において宣言されているクラス"set"は、整数セットの一般化された実施形態である。第3行のメソッド"in"は、引数eとして与えられる整数がsetクラスのインスタンス化の範囲内に含まれているか否かを標示するブール値を返す。行8乃至行17に宣言されているクラス"PBCcontroller"は、ＳＴＭＰにとって利用可能で、ＦＣ仲裁ループからディスクおよびＧＢＩＣを分離し、ＦＣ仲裁ループへディスクおよびＧＢＩＣを接続するため図１７におけるＰＢＣ回路コントローラ１４４０および１４４２のような１つのＬＣＣ上の２つのＰＢＣ回路コントローラの１つによって提供されるＰＢＣ回路コントローラ機能性をカプセル化する。加えて、ＰＢＣC回路コントローラ機能性は、ＳＴＭＰが、ディスクが設置されているか否かを検出しＧＢＩＣにおいて受け取られる外部ＦＣ信号を検出することを可能にする。擬似コード実施形態において、１つのＬＣＣ上の２つのＧＢＩＣ、例えば図１７におけるＬＣＣ１４１４上のＧＢＩＣ１４１８および１４２０は別々に分類されている。主ＧＢＩＣと呼ばれる一方のＧＢＩＣは、図１９の(Ａ)のＧＢＩＣ１６０８のような、ホスト・コンピュータに最も直接関連する上流ＧＢＩＣを表す。他方のＧＢＩＣは，拡張ＧＢＩＣと呼ばれ、図１９の(Ａ)のＧＢＩＣ１６１０のような、後続の下流ＨＡＥに最も直接関連する下流ＧＢＩＣを表す。ＧＢＩＣは、プロセッサ上で稼働するＦＣプロトコル・ソフトウェアと共に、１つのポートを構成する。このように、各ＬＣＣは主ポートおよび拡張ポートを含む。
【０１１０】
上記第8行で宣言されるメソッド"bypassPrimaryPort"は、主ＧＢＩＣを含む主ポートおよびＬＣＣのマイクロプロセッサ上で稼働するＦＣプロトコル論理をバイパスするようにＰＢＣ回路コントローラに指示する。同じように、行9で宣言されているメソッド"bypassExpansionPort"は、拡張ポートをバイパスするようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。行10に宣言されているメソッド"bypassDisk"は、整数引数"diskno"によって示されるディスクをバイパスするようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。
【０１１１】
行11に宣言されているメソッド"unBypassPrimaryPort"は、主ポートをＦＣ仲裁ループに組み入れるようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。同様に、行12および13に宣言されているメソッド"unBypassExpansionPort"および"unBypassDisk"は、拡張ポートおよび指定されたディスクをＦＣ仲裁ループに組み入れるようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。
【０１１２】
上記第14行に宣言されているメソッド"diskInstalled"は、整数引数"diskno"によって指定されたディスクがＨＡＥの範囲内に導入されているか否かを標示するブール値を返す。上記第15行に宣言されているメソッド"signalDetect"は、信号が主ポートで検出されたか否かを判断するようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。同様に、上記第16行に宣言されているメソッド"signalDetectExpansion"は、信号が拡張ポートで検出されたか否かを判断するようにＰＢＣ回路コントローラにＳＴＭＰが指示することを可能にする。
【０１１３】
擬似コード実施形態において、ＰＢＣコントローラ・クラスのインスタンスは、ＬＣＣというよりはむしろすべてのＰＢＣ回路コントローラからＳＴＭＰが入手できる機能性を表す。フォルト・トレラント動作のためには、先述のように、ＬＣＣは、一般に、冗長ＰＢＣコントローラを含む。ＳＴＭＰは、通常は、１つのＰＢＣ回路コントローラを使用し、第１のＰＢＣ回路コントローラが故障すると、冗長ＰＢＣ回路コントローラに切り換える。この場合、ＰＢＣコントローラ・クラスもインスタンスがＰＢＣ回路コントローラの故障時の切り換えを実施することおよびＰＢＣ回路を制御するために現在使用されているコマンドが２つのＰＢＣ回路コントローラの１つへ適切に向けられることが仮定される。
【０１１４】
上記第19-27行に宣言されているクラス"FC"は、ＳＴＭＰにとって利用できるＦＣ動作を表す。行22に宣言されているメソッド"initializeLoop"は、前述されたＦＣループ初期設定プロトコルに従ってＬＣＣ上で実施される内部仲裁ループをＳＴＭＰが初期設定するのを可能にする。行22に宣言されているメソッド"sendLIPF7F7"は、特定タイプのループ・プリミティブを内部ＦＣ仲裁ループへ送信する能力をＳＴＭＰに与える。ループ・プリミティブは、ループ・プリミティブの全般的タイプおよびループ・プリミティブの部分クラスを示す多数のバイトを含む。メンバ関数"sendLIPF7F7"は、１６進数値"F7"を含む第２および第３バイトを持つループ初期設定プリミティブを送り出す。このループ初期設定プリミティブは、通常は、AL_PAを取得するため始動元L_Portによって使用される。第２のタイプのループ初期設定プリミティブは、第２バイトに１６進数値"F8"および第３バイトに１６進数値"F7"を含み、その受信側においてループ障害が検出されたことを標示するためL_Portによって使用される。
【０１１５】
上記第23行において宣言されているメンバ関数"receiveLIPStatus"は、ＦＣ仲裁ループからのループ・プリミティブの受領をＳＴＭＰが待つことを可能にする。ループ・プリミティブが受け取られると、メンバ関数"receiveLIPStatus"は状態"LIPRECEIED"(ＬＩＰ受領)を返す。メンバ関数"receiveLIPStatus"がループ初期設定プリミティブを受け取ることなく時間切れとなると、メンバ関数"receiveLIPStatus"は状態"TIMEOUT"(時間切れ)を返す。上記第24行において宣言されているメンバ関数"report"は、整数ポインタ引数"buff"によってポイントされているバッファの範囲内に含まれる情報をＳＴＭＰがホスト・コンピュータに報告するかあるいは内部的に記憶することを可能にする。このメンバ関数は、ＨＡＥよびＨＡＥの範囲内のディスク・ドライブに関するＳＴＭＰによって得られる情報がホスト・コンピュータに報告されるかあるいは内部的に記憶されることを可能にする。行25によって宣言されているメンバ機能"getUpstreamAlpa"は、引数"alpa"によって与えられるAL_PAを持つL_Portのすぐ上流のL_PortのAL_PAを返す。この情報は、上述のＦＣ仲裁ループ初期設定の最終フェーズの結果としてＳＴＭＰによって得られるループ・マップから利用できる。最後に、行26によって宣言されているメンバ関数"getDiskNo"は、引数"alpa"で与えられるAL_PAに対応するＨＡＥの範囲内のディスク番号を返す。この情報は、ディスク・ドライブのループ・マップ、インデックスおよび対応するAL_PAを含む記憶された情報において利用できる。
【０１１６】
上記行29から行35において宣言されているクラス"SES"は、個々のディスク・ドライブおよびその他のＨＡＥコンポーネントからの情報を制御および取得するためＳＭＴＰにとって使用可能な高レベルＳＥＳコマンド・セットおよびプロトコルを表す。本擬似コードの場合、わずかな数のメンバ関数だけが提供されているが、完全なＳＥＳクラスは、ここに提示されているものに加えて、前述されたすべてのコマンドおよびＳＥＳ状態ページ・プロトコルを含むであろう。上記行32において宣言されているメンバ"issueTestUnitReady"は、整数引数"diskno"によって示されるディスク・ドライブへTEST_UNIT_READTコマンドを発信する。行33において宣言されているメンバ"issueInqury"は、整数引数"diskno"によって示されるディスク・ドライブへINQUIRYコマンドを発信する。
【０１１７】
行34において宣言されているメンバ"Read_Capacity"は、整数引数"diskno"によって示されるディスク・ドライブへＳＴＭＰがREAD_CAPACITYコマンドを発信することを可能にする。ＳＥＳコマンドであるTEST_UNlT_READYは、エレメントまたはコンポーネントがオンラインであり動作の準備ができているか否かを標示する状態標識をエレメントまたはコンポーネントから受け取ることを求める。ＳＥＳコマンドINQUIRYは、エレメントまたはコンポーネントによって複数バイト・バッファに戻されている特定のエレメントまたはコンポーネントに関する一定の情報を受け取ることを求める。ＳＥＳコマンドREAD_CAPACITYは、複数バイト・バッファに戻されている記憶容量に関する情報を特定のエレメントまたはコンポーネントから受け取ることを求める。行35に宣言されているメンバ関数"receiveSESStatus"は、引数"buff"によって指定されているバッファの情報を受け取るためTEST_UNIT_READY、INQUIRYまたはREAD_CAPACITYコマンドに受け取りを求められている情報の帰りをＳＴＭＰが待つことを可能にする。応答がなにもなければ、receiveSESStatusは時間切れとなりBADという状態を返す。
【０１１８】
上記行38および39に宣言されている列挙関数"FCstatus"および"SESstatus"によってＦＣ状態およびＳＥＳ状態に関する種々の異なる値が提供される。上記行40から42に宣言されている列挙関数"ERRORS"は、後述のＳＴＭＰ電源投入ルーチンの実行の間に発生する可能性のある種々のエラー条件を含む。行44および45に宣言されている定数NUM_DISKSおよびBUFFSIZEは、１つのＨＡＥ範囲内のディスクの数、および、クラス"SES"に関連する上述の種々のＳＥＳコマンドによって求められるＳＥＳ情報のために必要とされるバッファのサイズを表す。行47に宣言されている関数"error"は、引数"e"によって示されるエラーに応答する一般化されたエラー処理ルーチンを表す。発生するいかなる特定のタイプのエラーに対しても多くの異なるタイプのエラー処理ルーチンを利用することができる。ＳＴＭＰは、エラーによってはホスト・コンピュータにエラーを報告し、また、ＨＡＥの範囲内の特定の別のエラーの分離および回復を試み、あるいは、ＨＡＥの再初期設定または他の回復方式の実施のため一層複雑なプロシージャを活用する場合もある。最後に、行49に宣言されているセット"OurAlpa"は、ＨＡＥの範囲内のディスク・ドライブに対応するAL_PAのセットである。ＳＭＴＰは、ＨＡＥの初期電源投入に続いて、以下のような"powerUp"ルーチンを実行する。この電源投入ルーチンは、この後に続く割り込みサービス・ルーチンと共に、本発明の１つの実施形態を形成する。
【０１１９】
【表１２】
1   void powerUp(PBCcontroller&pbc,FC&fc,SES&ses);
2   {
3
4   int buffer[BUFFSIZE];
5   pbc.bypassPrimaryPort();
6   pbc.bypassExpansionPort();
7   for(int=0;i<NUM_DISKS;i++)pbc.bypassDisk(i);
8
9   fc.Loopinitialize();
10
11  fc.send_LIPF7F7();
12  FCstatus fs=receiveLIPStatus();
13  if(fs! = LIP_RECEIVED)error(ENCLOSURE_FAULT);
14
15  for(i=0;i<NUM_DISKS;i++)
16  {
17    if(pbc.diskInstalled(i))
18    {
19      pbc.unBypassDisk(i);
20      fc.send_LIPF7F7();
21      fs=receiveLIPStatus();
22      if(fs!=LIP_RECEIVED)
23      {
24         pbc.bypassDisk(i);
25         error(DISK_FAILURE);
26       }
27    }
28  }
29
30  for(i=0;i<NUM_DISIKS;i++)
31  {
32    if(pbc.diskInstalled(i))
33    {
34       ses.issueTestUnitReady();
35       SESstatus ss=ses.receiveSESStatus(buffer);
36       IF(ss!=GOOD)error(TEST_UNIT_READY_FAILURE);
37       ses.issueInquiry();
38       SS=ses.receiveSESStatus(buffer);
39       if(ss!=GOOD)error([NQUIRY_FAILURE);
40       elsefc.report(buffer):
41       ses.issueReadCapacity();
42       SS=ses.receiveSESStatus(buffer);
43       if(SS!=GOOD)error(READ_CAPACITY_FAILURE);
44       elsereport(buffer);
45     }
46   }
47
48   if(pbc.signalDetectPrimary())pbc.unBypassPrimaryPort();
49   if(pbc.signa[DetectExpansion())pbc.unBypassExpansionPort();
50  }
【０１２０】
ルーチン"powerUp"は、引数pbc、fcおよびsesとしてコントローラＰＢＣ、ＦＣおよびＳＥＳクラスのインスタンスをとる。上述のように、これらのクラスはＳＴＭＰにとって利用可能な機能性を表す。これらの機能性は、種々の異なるハードウェアおよびソフトウェアコンポーネントに広げることが可能であり、一般的に前の節で記述されている。上記疑似コードの第3行に宣言されている整数バッファ"buffer"は、特定のＳＥＳコマンドによってディスク・ドライブからの入手が求められている情報のためのローカル記憶域である。行5および6において、ルーチンpowerUpは主ポートおよび拡張ポートをバイパスする。行7において、ルーチンpowerUpはＨＡＥの範囲内のディスク・ドライブの各々をバイパスする。行7が完了すると、ＨＡＥにおけるすべてのディスクがバイパスされ、ＬＣＣ上に実施されているＦＣ仲裁ループがＨＡＥに対して内部のＦＣ仲裁ループを作成するため主ＧＢＩＣおよび拡張ＧＢＩＣの両方においてバイパスされている。
【０１２１】
行9において、ルーチンpowerUpは内部ＦＣ仲裁ループを初期設定する。行11において、ルーチンpowerUpは内部ＦＣ制裁ループへループ初期設定プリミティブを送信する。行12において、ルーチンpowerUpは、行11において送られたループ初期設定プリミティブをＦＣ仲裁ループから受け取るのを待つ。メンバ関数"receiveLIPStatus"によって戻された状態がLIP_RECEIVEDでないことが行13においてルーチンpowerUpによって検出されると、ルーチンpowerUpはエラーENCLOSURE_FAULT(筐体故障)を用いてエラー・ルーチンを呼び出す。このエラーは、ルーチンpowerUpが実行されているＨＡＥ上の機能してないＦＣ仲裁ループに対応する。そうでない場合、行15から28において、ルーチンpowerUpは、ディスク・ドライブを１つずつＦＣ仲裁ループに接続し、それらがループ初期設定プリミティブに応答することをテストする。
【０１２２】
各ディスク毎に、ルーチンpowerUpは、行17において、ディスクが設置されているか否かを判断する。設置されていると判断すれば、行19において、ルーチンpowerUpは、ＦＣ仲裁ループにそのディスクを構成し、行20においてループ初期設定プリミティブを送り出す。行21において、ルーチンpowerUpは、行20で送出されたループ初期設定プリミティブが返されるのを待つため、メンバ関数"receiveLIPStatus"を呼び出す。メンバ関数"receiveLIPStatus"によって戻された状態がLIP_RECEIVEDでないことが行22においてルーチンpowerUpによって検出されると、ルーチンpowerUpは、行19でＦＣ仲裁ループに接続されるディスク・ドライブに欠陥があると推論し、行24でそのディスクをバイパスして、行26でDISK_FAILUREエラーをあげる。
【０１２３】
すべてのディスクがＦＣ仲裁ループに構成されたなら、行15から行28間でのforループの実行の後、ルーチンpowerUpは、行30空行46を含む第２のforループを実行して、各ディスクを更にテストする。ルーチンpowerUpは、行34において、各ディスクに関して、TEST_UNIT_READY SＥＳコマンドを発信し、行35においてTEST_UNIT_READYコマンドに対する応答を受け取る。返されたＳＥＳ状態がGOODでなければ、ルーチンpowerUpは、TEST_UNIT_READY_FAILUREとう標識でエラー・ルーチンを呼ぶ。そうでなければ、ルーチンpowerUpは、行37で、現在テストされているディスクにINQURY ＳＥＳコマンドを出す。返された状態がGOODでなければ、ルーチンpowerUpは、行39で、INQUIRY_FAILUREとう標識でエラー・ルーチンを呼ぶ。そうでなければ、ルーチンpowerUpは、行40において、INQURYＳＥＳコマンドに応答してディスク・ドライブによって返された情報をホスト・コンピュータへ返すかまたは内部テーブルへ記憶するためメンバ関数"report"を呼び出す。同じように、ルーチンpowerUpは、行41から行44において、テストされているディスクへREAD_CAPACITY ＳＥＳコマンドを送り、READ_CAPACITYが成功しなければREAD_CPAPACITYエラー標識をもってエラー・ルーチンを呼び出すか、READ_CAPACITY_FAILURE ＳＥＳコマンドの結果をホスト・コンピュータへ送るかあるいは内部テーブルへ記憶する。
【０１２４】
すべてのディスク・ドライブが行30から46のfor文においてテストされたなら、ルーチンpowerUpは、行48および49において、主ポートおよび拡張ポートのバイパスを取り除く。この時点においてルーチンpowerUpは完了し、ＨＡＥはＦＣ仲裁ループに完全に組み入れられる。注意すべき点であるが、ＦＣクラス"sc"のインスタンスがＨＡＥの範囲内の両方のＦＣ仲裁ループの初期設定および構成を組み入れることも、あるいは、反対に、ＨＡＥを完全に自己テストするためルーチンpowerUpがＨＡＥの両方のＬＣＣで稼働することもできる。
【０１２５】
次の独立した割込みサービスルーチン"LIP_F8_ISR"は、例えばＦＣ仲裁ループ上のL_Portが上流L_Portのポート故障を検出したことを標示するループ初期設定プリミティブを筐体サービスL_Portが受け取る時、マイクロプロセッサに対応するL_Portによる受領に応答してＬＣＣのマイクロプロセッサの範囲内で生成される割り込みに応答する。
【０１２６】
【表１３】
1   void LIP_F8_lSR(int alpa)
2   {
3   int upstreamAlpa;
4
5   upstreamAlpa=fc.getUpstreamAlpa(alpa);
6   if(in(&OurApas,upstreamAlpa))
7       pbc.bypassDisk(fc.getDiskNo(upstreamAlpa)):
8   return;
9   }
【０１２７】
LIP_F8_ISRは、上流デバイスにおける報告障害であるL_PortのAL_PAを受け取る。行5において、LIP_F8_ISRは、上流欠陥L_PortのAL_PAを決定するためメンバ関数"getUpstreamAlpa"を呼び出す。次に、LIP_F8_ISRは、行6において、標示された上流L_PortがＨＡＥの範囲内にあるか否かを決定するためメンバ関数"in"を呼び出す。そうであれば、行7において、LIP_F8_ISRは、ＰＢＣコントローラ・メンバ関数"bypassDisk"を呼び出して、その欠陥ディスクをバイパスする。このように、上記実施形態は、ある１つのＨＡＥをホスト・コンピュータに接続された一連のＨＡＥに組み入れる前にそのＨＡＥの動作を検証するため、当該ＨＡＥの範囲内の一方または両方のプロセッサ上で稼働する仲裁ループ自己診断管理ルーチンを用いる実施形態である。ＨＡＥが自己診断されると、信頼性のないまたは故障しているＨＡＥがＦＣ仲裁ループに構成されることが防止され、それによって、ホスト・コンピュータ／ＨＡＥシステムの全般的信頼性および可用性が向上する。
【０１２８】
以上本発明を１つの特定の実施形態の観点から記述したが、上記記述は本発明をそのような実施形態に限定するように意図されていない。本発明の理念を逸脱することなく上記実施形態の修正が可能である点は当業者に明らかであろう。例えば、上記実施形態で使われるＦＣ通信媒体とは異なる筐体内または筐体間通信媒体を使用する複数周辺デバイス筐体において本発明を実施することは可能である。また、別の例を挙げれば、多数の異なるタイプのコントローラ、マイクロプロセッサおよびポート・バイパス回路を任意の多数の異なる構成で使用することによって、本発明の３段階ポート・バイパス回路制御戦略を実現することができる。コントローラ、マイクロプロセッサ、通信バスおよびファームウェア／ソフトウェア・ルーチンにおける冗長性を更に付加することによって、本発明の方法に従って設計される複数周辺デバイス筐体の信頼性を更に向上させることができる。電源投入自己診断ルーチンは、異なるモジュール化、制御文、変数および他のプログラミング・デバイスを種々のシーケンスで使用して、どのようなコンピュータ言語でも、実用的に無制限の形態で、実施することができる。欠陥または誤動作コンポーネントを処理するための種々の戦略を、自己診断ルーチン、ホスト・コンピュータおよび複数周辺デバイス筐体プロセッサ上で稼働する他のソフトウェアおよびファームウェア・ルーチンに組み入れることができる。種々のコンポーネントをテストして、必要に応じて、残りのコンポーネントの動作から分離することができる。
【０１２９】
上記記述は、本発明の完全な理解を提供するため、説明の目的から特定の用語を使用したが、本発明を実施するために特定の詳細は必要とされないことは当業者に明らかであろう。更に別の例を挙げれば、本題の発明から関心が不必要にそれることを避けるため、既知の回路およびデバイスはブロック図形式で示されている。このように、本発明の特定の実施形態の上記記述は、例示および説明の目的のため提示されているもので、本発明を前述された形態に制限またはそれ以外を除外するように意図されていない。種々の修正およびバリエーションは明らかに可能である。本発明の原理およびその現実的応用を最も良く説明し、それによって当業者が本発明および特定の用途に適するように種々の修正を加えた上で実施形態を最も良く活用することができるように、上記実施形態が選択され記述された。
【０１３０】
本発明には、例として次のような実施様態が含まれる。
(1)複数のデバイスを内包する複数デバイス筐体をテストする方法であって、該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御するステップと、該複数デバイス筐体をテストするステップと、該複数デバイス筐体が上記テストを通過する時、上記多数の外部通信媒体コネクタを上記外部通信媒体に接続するように上記多数のバイパス回路を制御するステップと、を含む複数デバイス筐体のテスト方法。
【０１３１】
(2)デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、上記内部通信媒体をテストするステップと、上記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを上記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、デバイスが上記テストを通過しない場合、バイパス回路を制御して、そのデバイスを上記内部通信媒体から分離するようにバイパス回路を制御するステップと、当該複数デバイス筐体のテストが成功したという標識を返すステップと、上記内部通信媒体が上記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップと、を更に含む(1)に記載の方法。
(3)上記外部通信媒体および上記内部通信媒体の両方がファイバ・チャンネル仲裁ループの一部である、前記(2)に記載の方法。
【０１３２】
(4)該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する上記ステップが、該複数デバイス筐体をファイバ・チャネル仲裁ループの上流部分から分離するため主外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、該複数デバイス筐体をファイバ・チャネル仲裁ループの下流部分から分離するため拡張外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、を更に含む、前記(3)に記載の方法。
(5)該複数デバイス筐体が２つのファイバ・チャネル仲裁ループに接続されていて、該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する上記ステップが、該複数デバイス筐体を上記２つのファイバ・チャネル仲裁ループの上流部分から分離するため２つの主外部通信媒体コネクタをバイパスするように２つのバイパス回路を制御するステップと、該複数デバイス筐体を上記２つのファイバ・チャネル仲裁ループの下流部分から分離するため２つの拡張外部通信媒体コネクタをバイパスするように２つのバイパス回路を制御するステップと、を更に含む、前記(3)に記載の方法。
【０１３３】
(6)内部通信媒体をテストする上記ステップが、上記ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送り出すステップを含む、前記(3)に記載の方法。
(7)デバイスをテストする上記ステップが、上記ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送り出すステップを含む、前記(3)に記載の方法。
(8)デバイスをテストする上記ステップが、デバイスにコマンドを発信して、該デバイスに自己診断を実行させ、該デバイスに関する情報を該デバイスが送信するように求めるステップを更に含む、前記(7)に記載の方法。
(9)デバイスに発信される上記コマンドがＳＣＳＩ筐体サービス・コマンドである、前記(8)に記載の方法。
【０１３４】
(10)複数のデバイスを内包する複数デバイス筐体をテストする方法であって、デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、上記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを上記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、デバイスが上記テストを通過しない場合、バイパス回路を制御して、そのデバイスを上記内部通信媒体から分離するようにバイパス回路を制御するステップと、当該複数デバイス筐体のテストが成功したという標識を返すステップと、上記内部通信媒体が上記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップと、を含む複数デバイス筐体のテスト方法。
(11)該複数デバイス筐体の動作の間にデバイスが誤動作する時、内部通信媒体からそのデバイスを分離するようにバイパス回路を制御しるステップを更に含む、前記(10)に記載の方法。
【０１３５】
(12)自己検査機能を持つ複数デバイス筐体であって、内部通信媒体と、上記内部通信媒体によって相互接続される多数のデバイスと、該複数デバイス筐体を外部通信媒体に接続する多数のコネクタと、デバイスを内部通信媒体から分離し、デバイスを内部通信媒体に接続するように制御されることができるバイパス回路と、上記コネクタを外部通信媒体から分離し、上記コネクタを外部通信媒体に接続するように制御されることができるバイパス回路と、プロセッサと、上記内部通信媒体および上記多数のデバイスをテストし、自己検査の間該複数デバイス筐体を外部通信媒体から分離し、上記デバイスを内部通信媒体から分離するようにバイパス回路を制御する機能を持つ、上記プロセッサ上で稼働する自己診断ルーチンと、を備える複数デバイス筐体。
(13)上記外部通信媒体および上記内部通信媒体の両方がファイバ・チャンネル仲裁ループの一部である、前記(12)に記載の複数デバイス筐体。
(14)上記多数のデバイスが、ファイバ・チャンネル仲裁ループに接続される他のデバイスとデータおよび制御情報を交換するデバイスを含む、前記(13)に記載の複数デバイス筐体。
【０１３６】
(15)上記自己診断ルーチンが、該複数デバイス筐体を外部通信媒体から分離するため多数のコネクタをバイパスするように多数のバイパス回路を制御し、該複数デバイス筐体をテストし、該複数デバイス筐体が上記テストを通過する時、上記多数のコネクタを上記外部通信媒体に接続するように多数のバイパス回路を制御する、前記(14)に記載の複数デバイス筐体。
(16)該複数デバイス筐体を外部通信媒体から分離した後、上記自己診断ルーチンが、デバイスを内部通信媒体から分離するように多数のバイパス回路を制御するステップと、上記内部通信媒体をテストするステップと、上記内部通信媒体がテストを通過する時、各デバイス毎に、当該デバイスを上記内部通信媒体に接続するようにバイパス回路を制御し、当該デバイスをテストするステップと、デバイスが上記テストを通過しない場合、バイパス回路を制御して、そのデバイスを上記内部通信媒体から分離するようにバイパス回路を制御するステップと、当該複数デバイス筐体のテストが成功したという標識を返すステップと、上記内部通信媒体が上記テストを通過しない場合、当該複数デバイス筐体のテストが失敗したという標識を返すステップとによって該複数デバイス筐体をテストするステップとによって該複数デバイス筐体をテストする、前記(15)に記載の複数デバイス筐体。
【０１３７】
(17)該複数デバイス筐体を外部通信媒体から分離するため多数の外部通信媒体コネクタをバイパスするように多数のバイパス回路を制御する上記ステップが、該複数デバイス筐体をファイバ・チャネル仲裁ループの上流部分から分離するため主外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップと、該複数デバイス筐体をファイバ・チャネル仲裁ループの下流部分から分離するため拡張外部通信媒体コネクタをバイパスするように１つのバイパス回路を制御するステップとを含む、前記(16)に記載の複数デバイス筐体。
(18)内部通信媒体をテストする上記ステップが、ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送信するステップを含む、前記(17)に記載の複数デバイス筐体。
(19)デバイスをテストする上記ステップが、ファイバ・チャンネル仲裁ループの内部部分の周囲にループ初期設定プリミティブを送信するステップを含む、前記(17)に記載の複数デバイス筐体。
(20)デバイスをテストする上記ステップが、デバイスにコマンドを発信して、該デバイスに自己診断を実行させ、該デバイスに関する情報を該デバイスが送信するように求めるステップを更に含む、前記(19)に記載の複数デバイス筐体。
【０１３８】
【発明の効果】
本発明によると、複数デバイス筐体の信頼性および可用性が向上する。
【図面の簡単な説明】
【図１】ＦＣ相互接続トポロジの３つの異なるタイプを示すブロック図である。
【図２】ＦＣネットワークを通過する伝送のためデータが時間的に編成される非常に単純な階層を示すブロック図である。
【図３】標準ＦＣフレームの内容を示すブロック図である。
【図４】ＳＣＳＩバスを含む１つの一般的パーソナル・コンピュータ・アーキテクチャのブロック図である。
【図５】ＳＣＳＩバス・トポロジを示すブロック図である。
【図６】図７および図８と共に、読み書き入出力動作の初期設定および実施に関与するＳＣＳＩプロトコルを示すブロック図である。
【図７】図６および図８と共に、読み書き入出力動作の初期設定および実施に関与するＳＣＳＩプロトコルを示すブロック図である。
【図８】図６および図７と共に、読み書き入出力動作の初期設定および実施に関与するＳＣＳＩプロトコルを示すブロック図である。
【図９】図１０と共に、始動機構、目標、および図７および図８に示されるＳＣＳＩバス・フェーズおよび状態の間で交換されるＦＣＰシーケンスの対応関係を示すブロック図である。
【図１０】図９と共に、始動機構、目標、および図７および図８に示されるＳＣＳＩバス・フェーズおよび状態の間で交換されるＦＣＰシーケンスの対応関係を示すブロック図である。
【図１１】ＦＣ仲裁ループ初期設定の７つのフェーズを示す流れ図である。
【図１２】ループ初期設定の７つのフェーズの各々の間に仲裁ループ・トポロジにおけるＦＣノードによって伝送されるＦＣフレームのデータを示す。
【図１３】単純な複数周辺デバイス筐体の透視図である。
【図１４】ＳＥＳコマンド・セットによって表される基本通信パラダイムを示すブロック図である。
【図１５】現行の特定のＦＣ型複数ディスク筐体の製造業者によって使用される設計ブロック図である。
【図１６】(Ａ)はポート・バイパス回路の例を示すブロック図であり、(Ｂ)はポート・バイパス回路を経由してファイバ・チャンネル・ループにディスク・ドライブを接続する様態を示すブロック図である。
【図１７】本発明に関連した技法を組み入れた高可用性筐体を示すブロックである。
【図１８】(Ａ)はポート・バイパス回路制御チップによるポート・バイパス回路の制御を示すブロック図であり、(Ｂ)はハードウェアで実施されたＰＢＣ制御回路の1例を示すブロック図である。
【図１９】ＧＢＩＣをバイパスするために分路動作を実施する効果を示すブロック図である。
【符号の説明】
１４００              複数デバイス筐体
１４０５              データ交換デバイス
１４１８、１４２０    コネクタ
１４２６、１４２８    バイパス回路
１４３０、１４３２    内部通信媒体
１４３６、１４４８    プロセッサ
【図１】
0004497605.tif 000009
【図２】
0004497605.tif 000010
【図３】
0004497605.tif 000011
【図４】
0004497605.tif 000012
【図５】
0004497605.tif 000013
【図６】
0004497605.tif 000014
【図７】
0004497605.tif 000015
【図８】
0004497605.tif 000016
【図９】
0004497605.tif 000017
【図１０】
0004497605.tif 000018
【図１１】
0004497605.tif 000019
【図１２】
0004497605.tif 000020
【図１３】
0004497605.tif 000021
【図１４】
0004497605.tif 000022
【図１５】
0004497605.tif 000023
【図１６】
0004497605.tif 000024
【図１７】
0004497605.tif 000025
【図１８】
0004497605.tif 000026
【図１９】
0004497605.tif 000027