(57)【特許請求の範囲】
【請求項１】
第１のドメイン及び第２のドメインを有するシリアルコネクトバスのネットワークを用いて通信する通信装置であって、
前記第１のドメインに属する第１のデバイスと、当該第１のデバイスを当該第１のドメイン内で識別する識別情報を、設定された他の識別情報に変換する第１の変換装置と、を含む第１の制御装置と、
前記第２のドメインに属する第２のデバイスと、当該第２のデバイスを当該第２のドメイン内で識別する識別情報を、設定された他の識別情報に変換する第２の変換装置と、を含む第２の制御装置と、を有し、
前記第２の制御装置は、前記第１の制御装置とスイッチで接続され、前記第２のドメイン内で前記第１のデバイスを識別する識別情報を前記他の識別情報として前記第１の変換装置に設定し、前記第２のドメイン内で前記第２のデバイスを識別する識別情報を前記他の識別情報として前記第２の変換装置に設定する、
通信装置。
【請求項２】
異なる複数の第１のドメインが存在し、前記複数の第１のドメインそれぞれに対応する複数の前記第１の制御装置が存在し、前記各第１の制御装置の前記第１の変換装置と前記第２の変換装置とは第１のスイッチを介して接続されており、
前記通信装置は、前記第２の制御装置が故障した場合、前記複数の第１の制御装置から選択した前記第１の制御装置を前記第２の制御装置として動作させる選択部を有する、
請求項１に記載の通信装置。
【請求項３】
前記第１のスイッチとは異なる第２のスイッチが有するポートのうち前記第２のデバイスが上流側のポートに設定され、前記第１のスイッチ及び前記第１のデバイスが下流側のポートに設定されており、
前記選択部は、前記第２の制御装置が故障した場合、前記第２の制御装置として動作させる前記第１の制御装置の前記第１のデバイスのポートを前記上流側のポートに変更する
請求項２に記載の通信装置。
【請求項４】
第１のドメイン及び第２のドメインを有するシリアルコネクトバスのネットワークを用いて通信する通信装置によるＩＤ設定方法であって、
前記第１のドメインに属する第１のデバイスと、当該第１のデバイスを当該第１のドメイン内で識別する識別情報を、設定された他の識別情報に変換する第１の変換装置と、を含む第１の制御装置と、
前記第２のドメインに属する第２のデバイスと、当該第２のデバイスを当該第２のドメイン内で識別する識別情報を、設定された他の識別情報に変換する第２の変換装置と、を含む第２の制御装置と、
を有する前記通信装置の前記第２の制御装置が、
前記第１の制御装置とスイッチで接続され、前記第２のドメイン内で前記第１のデバイスを識別する識別情報を前記他の識別情報として前記第１の変換装置に設定し、前記第２のドメイン内で前記第２のデバイスを識別する識別情報を前記他の識別情報として前記第２の変換装置に設定する、
ＩＤ設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置およびＩＤ設定方法に関する。
【背景技術】
【０００２】
ＰＣＩ（Peripheral Component Interconnect）  Ｅｘｐｒｅｓｓ（以下、「ＰＣＩｅ」と表記）は、ＰＣＩ−ＳＩＧ（Special Interest Group）が策定した装置間を接続するバスの標準規格である。
【０００３】
ＰＣＩｅバスは、ルートコンプレックスと呼ばれる単一のデバイスとエンドポイントと呼ばれる複数のデバイスが、それぞれスイッチのポートにポイント・トゥ・ポイント接続されたトポロジを構成する。
【０００４】
ＰＣＩｅバスをインタコネクトとして結合し、インタコネクトを介したコントローラ間通信によってキャッシュのミラーリング（二重化）を行うストレージ装置が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−０５３９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
トポロジを跨ぐパケットの送受信を可能とするＮＴＢ（Non Transparent Bridge）が知られている。ＮＴＢは、トポロジを跨ぐ両方のバスから異なるエンドポイントとして見える。
【０００７】
複数のコントローラがそれぞれ１つのルートコンプレックスを搭載するストレージ装置では、各コントローラ間でトポロジが閉じられている。ルートコンプレックスは、トポロジ内部のエンドポイント側の設定は可能であるが、トポロジ外部のエンドポイント側の設定はできない。このため、複数のＮＴＢをスイッチで接続すると、トポロジ外の設定ができないという問題がある。
【０００８】
なお、ストレージ装置について説明したが、ＰＣＩｅバスを用いて通信を行う他のシステムにも同様の問題がある。
本発明はこのような点に鑑みてなされたものであり、ＮＴＢのトポロジ外の設定を可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、開示の通信装置が提供される。この通信装置は、変換装置と第１の設定部とを備える複数のパケット転送装置とスイッチと第２の設定部とを有している。
【００１０】
変換装置は、シリアルコネクトバスのネットワークの形成単位である第１のドメインと第２のドメインを分離し、第１のドメインで生成されたパケットに含まれる、パケットを生成するデバイスを識別する第１のリクエスタＩＤを第２のドメインで用いるユニークな第２のリクエスタＩＤに変換する。
【００１１】
第１の設定部は、第１のドメインに属し、第１のリクエスタＩＤを変換装置に設定する。
スイッチは、複数のパケット転送装置が備える変換装置の第２のドメイン側に接続されている。
【００１２】
第２の設定部は、第２のドメインに属し、スイッチを介して第２のリクエスタＩＤを変換装置に設定する。
【発明の効果】
【００１３】
１態様では、ＮＴＢのトポロジ外の設定を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のストレージ装置を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】ＰＣＩｅバスのリード処理を説明する図である。
【図４】ＮＴＢを用いたＩ／Ｏ要求の転送を説明する図である。
【図５】ストレージ装置の機能を説明するブロック図である。
【図６】ストレージ装置のシステム起動時の処理を示すシーケンス図である。
【図７】第３の実施の形態のストレージ装置の機能を説明するブロック図である。
【図８】第３の実施の形態のストレージ装置の起動時の処理を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、開示する技術の実施の形態を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態のストレージ装置を示す図である。
【００１６】
第１の実施の形態のストレージ装置１は、制御装置２ａ、２ｂと、ディスク装置３ａ、３ｂとを有している。
ディスク装置３ａ、３ｂは、情報を記憶可能な記憶領域を有する。このディスク装置３ａ、３ｂとしては、例えば、ＨＤＤ（Hard Disk Drive）や、ＳＳＤ（Solid State Drive）等が挙げられる。
【００１７】
制御装置２ａ、２ｂは、それぞれパケット転送装置の一例であり、制御装置２ａ、２ｂ間は、ＰＣＩｅバスを介して接続されている。制御装置２ａと制御装置２ｂは同じ機能を有している。
【００１８】
制御装置２ａは、ＣＰＵ（Central Processing Unit）２ａ１とルートデバイス２ａ２と、変換装置２ａ３とを有している。また、制御装置２ｂは、ＣＰＵ２ｂ１とルートデバイス２ｂ２と、変換装置２ｂ３とを有している。以下、代表して制御装置２ａの機能を説明する。
【００１９】
制御装置２ａは、図示しないホスト装置から受け取ったデータをディスク装置３ａに書き込んだり、ディスク装置３ａに記憶されているデータを読み出したりする処理等、ディスク装置３ａを制御する。
【００２０】
ＣＰＵ２ａ１は、制御装置２ａの処理を管理する。
ルートデバイス２ａ２は、第１の設定部の一例であり、制御装置２ａ内に設けられたドメイン（ＰＣＩｅを管理する単位）４ａの根幹となるデバイスである。ドメイン４ａ内では、ルートデバイス２ａ２を頂点としたツリー構造を採用する。ルートデバイス２ａ２は、１つまたは複数のＰＣＩｅポートを備えている。ルートデバイス２ａ２は、ＰＣＩｅバスを通じて読み出し対象データの読み出しを要求するルートデバイス２ａ２のＩＤ（リクエスタＩＤ）を含むパケット５を出力する。パケット５に含まれるリクエスタＩＤは、第１のリクエスタＩＤの一例であり、ルートデバイス２ａ２を識別する番号と、ルートデバイス２ａ２のポート毎のバス番号を含む。
【００２１】
変換装置２ａ３は、ルートデバイス２ａ２の下位に位置する装置であり、ドメイン４ａの境界に設けられている。この変換装置２ａ３は、ルートデバイス２ａ２と、ルートデバイス６それぞれから独立した終端装置（エンドポイント）として認識されるＩ／Ｏ（Input/Output）デバイスである。すなわち、変換装置２ａ３は、ドメイン４ａの内部と外部を分離し、ドメイン４ａの内部から受け取ったパケット５のリクエスタＩＤをドメイン４ａの外部のドメイン４ｂで用いるユニークなリクエスタＩＤに変換するブリッジの役割を果たす。また、変換装置２ａ３は、ドメイン４ｂから受け取ったパケットのリクエスタＩＤをドメイン４ａで用いるユニークなリクエスタＩＤに変換する。
【００２２】
なお、ドメイン４ａから変換装置２ａ３が出力したパケット５は、変換装置２ｂ３に送られる。変換装置２ｂ３は、受け取ったパケット５に含まれるリクエスタＩＤをドメイン４ｃで用いるユニークなリクエスタＩＤに変換する。
【００２３】
ドメイン４ｂは、第２の設定部の一例であるルートデバイス６を頂点としたツリー構造を採用する。スイッチ７は、ルートデバイス６の下位に位置する装置であり、変換装置２ａ３と変換装置２ｂ３を接続するＦＲＴ（Front-end RouTer）である。ルートデバイス６は、例えばストレージ装置１の起動時に、ＣＰＵ８が生成したリクエスタＩＤ９を、スイッチ７を介して変換装置２ａ３、２ｂ３に出力する。なお、リクエスタＩＤ９は、第２のリクエスタＩＤの一例である。変換装置２ａ３、２ｂ３は、リクエスタＩＤ９を受け取ると、受け取ったリクエスタＩＤ９を記憶する。そして、パケット５に含まれるリクエスタＩＤを変換する際には、記憶してあるリクエスタＩＤ９を用いてパケット５に含まれるリクエスタＩＤを変換する。
【００２４】
このストレージ装置１によれば、変換装置２ａ３、２ｂ３のドメイン４ｂ側のエンドポイントに対し、リクエスタＩＤ９を発行することができる。リクエスタＩＤ９を発行することにより、変換装置２ａ３、２ｂ３のドメイン４ｂ側のエンドポイントにバス番号、デバイス番号を設定することができる。変換装置２ａ３、２ｂ３のドメイン４ｂ側のエンドポイントにバス番号、デバイス番号を設定すると、変換装置２ａ３、２ｂ３が、リクエスタＩＤの変換を行うことができる。変換装置２ａ３、２ｂ３が、リクエスタＩＤを変換することで、変換装置２ａ３、２ｂ３が、ドメイン４ａ、４ｂを跨ぐ読み出し対象データの読み出しを要求するパケット５の仲介を実現できる。
【００２５】
なお、パケット５を転送する状況は、特に限定されないが、例えば以下の状況で用いることができる。
ＰＣＩｅバスにおけるデータの読み出し要求には、データを伴う完了通知を返すことが決められている。このため、データを伴う完了通知を受け取ることで、読み出し要求の出力側は、データ転送の完了を把握することができる。従って、同一バス上のトランザクションを追い越さないようにＰＣＩｅバスを設定することで、読み出し要求が、バス上の書き込み要求を押し出す効果を得ることができる。従って、例えば制御装置２ａは、あるデータの書き込み要求を制御装置２ｂに出力した後に、そのデータを読み出す要求を出力して、読み出し要求に対するデータを伴う完了通知を受け取ることで、制御装置２ｂにデータが正しく書き込まれたことを把握することができる。
【００２６】
なお、本実施の形態は、開示した技術をストレージ装置１に適用した実施の形態を説明したが、開示した技術の適用分野がストレージ装置に限定されるわけではない。
また、本実施の形態では、装置の一例としてＰＣＩｅバスを用いた装置を例示したが、バス番号およびデバイス番号を受け取って自身に割り当てられたバス番号およびデバイス番号を認識するＩ／Ｏデバイスを備える他の装置にも開示した技術を適用することができる。
【００２７】
以下、第２の実施の形態において、開示のストレージ装置をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００２８】
ストレージシステム１０００は、ホスト装置３０と、このホスト装置３０にファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１を介して接続されたストレージ装置１００とを有している。なお、図２では１つのホスト装置３０がストレージ装置１００に接続されているが、複数のホスト装置が、ストレージ装置１００に接続されていてもよい。
【００２９】
ストレージ装置１００は、それぞれが複数のＨＤＤ２０を備えるドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａと、このドライブエンクロージャ２０ａの物理記憶領域をＲＡＩＤ（Redundant Arrays of Inexpensive/Independent Disks）によって管理する制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂ、１０ｃとを有している。なお、本実施の形態では、ドライブエンクロージャ２０ａが備える記憶媒体としては、ＨＤＤ２０を例示したが、ＨＤＤ２０に限らず、ＳＳＤ等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ２０ａが備える複数のＨＤＤ２０を区別しない場合は、「ＨＤＤ２０群」と言う。ＨＤＤ２０群の総容量は、例えば６００ＧＢ（Giga Byte）〜２４０ＴＢ（Tera Byte）である。
【００３０】
ストレージ装置１００は、３つの制御モジュール１０ａ、１０ｂ、１０ｃを運用に使用することで、冗長性が確保されている。なお、ストレージ装置１００が備える制御モジュールの数は、３つに限定されず、２つ、または４つ以上の制御モジュールにより冗長性が確保されていてもよい。
【００３１】
制御モジュール１０ａ、１０ｂ、１０ｃは、中継装置１１を介してＰＣＩｅバスで結線されている。
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ制御装置の一例であり、制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ同じハードウェア構成によって実現される。
【００３２】
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、ホスト装置３０からのデータアクセス要求に応じてドライブエンクロージャ２０ａが有するＨＤＤ２０の物理記憶領域へのデータアクセスをＲＡＩＤによって制御する。
【００３３】
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール１０ａのハードウェア構成を説明する。
制御モジュール１０ａは、ＣＰＵ１０１と、チップセット１０２と、ＮＴＢ（Non-Transparent Bridge）１０３と、ＲＡＭ（Random Access Memory）１０４と、キャッシュメモリ１０５と、チャネルアダプタ（ＣＡ：Channel Adapter）１０６と、ＢＲＴ（Back end RouTer）１０７と低速バスコントローラ１０８とを備えている。
【００３４】
ＣＰＵ１０１は、制御モジュール１０ａが備える図示しないフラッシュＲＯＭ（Read Only Memory）等に記憶されたプログラムを実行することにより、制御モジュール１０ａ全体を統括的に制御する。チップセット１０２は、ＰＣＩｅのルートコンプレックス（Root Complex）の機能を有する。このチップセット１０２には、ＮＴＢ１０３とＲＡＭ１０４とキャッシュメモリ１０５と低速バスコントローラ１０８が接続されている。
【００３５】
各制御モジュール１０ａ、１０ｂ、１０ｃには、それぞれルートコンプレックスを頂点とするＰＣＩｅの各デバイスで構成されるドメインが形成されている。１つのドメインには、頂点となる１つのルートコンプレックスの配下に１つまたは複数のエンドポイント（ＰＣＩｅのＩ／Ｏデバイス）が設けられている。また、ルートコンプレックスとエンドポイントとの間には、ＰＣＩｅポートを増やすスイッチが設けられている場合がある。図２では、ＮＴＢ１０３を境界とするドメインＤ１と、ドメインＤ２を図示している。ドメインＤ１は、第１のドメインの一例であり、ドメインＤ２は、第２のドメインの一例である。チップセット１０２および制御モジュール１０ｂ、１０ｃが備えるチップセット内には、ＤＭＡ（Direct Memory Access）コントローラ１０２ａが設けられている。なお、ＤＭＡコントローラ１０２ａは、制御モジュール１０ａのチップセット１０２以外の箇所に設けられていてもよい。
【００３６】
制御モジュール１０ａは、ＤＭＡコントローラ１０２ａが備えるＤＭＡ機能を用いてＰＣＩｅバス間のパケットの送受信を行う。例えば、制御モジュール１０ａから制御モジュール１０ｂへのパケットの送受信は、ＤＭＡコントローラ１０２ａ、ＮＴＢ１０３、中継装置１１、制御モジュール１０ｂが備えるＮＴＢ、および制御モジュール１０ｂが備えるＤＭＡコントローラを介して行う。例えば、ＨＤＤ２０群に書き込みを要求するパケットがホスト装置３０からファイバチャネルスイッチ３１を介して制御モジュール１０ａに送信されると、ＣＰＵ１０１は、受信したパケットをキャッシュメモリ１０５に格納する。また、ＣＰＵ１０１はパケットの格納と共に、受信したパケットを、中継装置１１を介して制御モジュール１０ｂに送信する。そして、制御モジュール１０ｂは、制御モジュール１０ｂが有するＣＰＵが受信したパケットを制御モジュール１０ｂが有するキャッシュメモリに格納する。この処理によって、制御モジュール１０ａ内のキャッシュメモリ１０５と制御モジュール１０ｂ内のキャッシュメモリとに同一のパケットが記憶される。
【００３７】
ＮＴＢ１０３は、ドメインＤ１、Ｄ２それぞれのエンドポイントの機能を有する。すなわち、ＮＴＢ１０３は、２つのＰＣＩｅバスを接続し、各ＰＣＩｅバスの２つのドメインを分離させて、電気的に接続を可能とする。このＮＴＢ１０３は、デバイスインタフェースとしては、両方のバスから異なるエンドポイントとして見える。ＮＴＢ１０３を制御モジュール１０ａ内に配置することにより、ＮＴＢ１０３を跨ぐ、すなわち、ドメインを跨ぐパケットの送受信が可能である。
【００３８】
ＲＡＭ１０４は、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。
キャッシュメモリ１０５は、ＨＤＤ２０群に書き込まれているデータやＨＤＤ２０群から読み出したデータを一時的に記憶する。また、キャッシュメモリ１０５には、ＣＰＵ１０１による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ１０５としては、例えば、ＳＲＡＭ（Static Random Access Memory）等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ１０５の記憶容量は、特に限定されないが、一例として２〜６４ＧＢ程度である。
【００３９】
チャネルアダプタ１０６は、ファイバチャネルスイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト装置３０のチャネルに接続される。チャネルアダプタ１０６は、ホスト装置３０と制御モジュール１０ａとの間でデータを送受信するインタフェース機能を提供する。
【００４０】
ＢＲＴ１０７は、ドライブエンクロージャ２０ａに接続されている。このＢＲＴ１０７は、ドライブエンクロージャ２０ａが備えるＨＤＤ２０群とキャッシュメモリ１０５との間でデータを送受信するインタフェース機能を提供する。制御モジュール１０ａは、ＢＲＴ１０７を介してドライブエンクロージャ２０ａが備えるＨＤＤ２０群との間でデータの送受信を行う。
【００４１】
低速バスコントローラ１０８は、ＰＣＩｅバスのデータ転送速度よりも低速のバスを制御する。チップセット１０２は、制御モジュール１０ａの起動時に低速バスコントローラ１０８を介して中継装置１１との間でＮＴＢ１０３を設定する設定情報のやりとりを行う。
【００４２】
ドライブエンクロージャ２０ａには、ドライブエンクロージャ２０ａが備える複数のＨＤＤ２０のうち、１つ、または複数のＨＤＤ２０により構成されたＲＡＩＤグループが形成されている。このＲＡＩＤグループは、「仮想ディスク」、「ＲＬＵ（RAID Logical Unit）」等と呼ばれる場合もある。
【００４３】
図２では、ＲＡＩＤ５を構成する２つのＲＡＩＤグループ２１、２２、２３を示している。なお、ＲＡＩＤグループ２１のＲＡＩＤ構成は、一例であり、図示のＲＡＩＤ構成に限定されない。例えば、ＲＡＩＤグループ２１、２２、２３は、任意の個数のＨＤＤ２０を有することができる。また、ＲＡＩＤグループ２１、２２、２３は、ＲＡＩＤ６等、任意のＲＡＩＤ方式で構成することができる。
【００４４】
例えば、ＲＡＩＤグループ２１には、ＲＡＩＤグループ２１を構成するＨＤＤ２０の記憶領域が論理的に分割され、論理ボリュームが構成されている。分割された各論理ボリュームには、ＬＵＮ（Logical Unit Number）が設定されている。
【００４５】
図２に示すようなハードウェア構成のストレージ装置１００内には、以下のような機能が設けられる。
制御モジュール１０ａ、１０ｂ、１０ｃ間のパケット通信が、ＰＣＩｅバスの経路の要因によって失敗した場合、制御モジュール１０ａ、１０ｂ、１０ｃは、通信のリカバリ処理を行う。通信のリカバリ処理を行うために、通信を起動した制御モジュールは、通信結果をコマンド単位で把握する処理を行う。
【００４６】
ＰＣＩｅバスの規約上、ライト要求は、突き放し（Posted）であり、ライト要求を送信する対象のデバイスからのライト完了通知（Completion）はない。そのため、制御モジュール間で通信するパケットが消失しても、通信経路上のスイッチによってエラーが発生したことは検出できても、それがどのコマンドで発生したエラーなのかを特定することはできず、ライト要求を送信した制御モジュールは、通信の失敗を検出することができない。
【００４７】
これに対し、ＰＣＩｅバスにおけるリード要求は、データを伴う完了通知があるので、データ転送の完了が保証される。また、同一バスの上のトランザクションを追い越さないように設定することで、リード要求がライト要求を押し出す効果を得ることができる。よって、通信を起動した制御モジュールが、リードの完了通知を受け取ることで、ライトの完了を保証することができる。また、リードの完了通知が受け取れなかった場合、制御モジュール１０ａ、１０ｂ、１０ｃは、ライトの失敗を即座に把握することができる。
【００４８】
以下、ＰＣＩｅバスのリード処理を説明する。
図３は、ＰＣＩｅバスのリード処理を説明する図である。
図３は、デバイス４０をリクエスタ、デバイス５０をコンプリータとしたときの、デバイス４０からデバイス５０へのデータの転送を説明する図である。デバイス５０へのデータの読み出しを要求する際にデバイス４０が発行するリード要求パケットＰ１には、デバイス４０のＩＤ（リクエスタＩＤ）が含まれている。デバイス５０は、リード要求パケットＰ１に含まれるリクエスタＩＤに基づき応答先のデバイス４０を特定する。そして、特定した応答先のデバイス４０にリード応答パケットＰ２を送信する。リード応答パケットＰ２には、デバイス４０のリクエスタＩＤ、リードデータ、およびデバイス５０のＩＤ（コンプリータＩＤ）が含まれている。リードデータは、リード要求パケットＰ１に応じてデバイス５０が図示しない記憶領域から読み出したデータである。
【００４９】
次に、リクエスタＩＤの生成方法を説明する。ＰＣＩｅの規約上、デバイス４０、５０は、ＢＩＯＳ（Basic Input/Output System）等が初期化された際に、デバイス４０、５０宛に発行するコンフィグレーションライトのパケットに含まれるバス番号およびデバイス番号を把握する。デバイス４０は、デバイス４０自身のバス番号およびデバイス番号を把握する。デバイス４０は、把握したバス番号、デバイス番号に基づきリクエスタＩＤを生成する。
【００５０】
図３に示す処理を実行することにより、例えばデータの受信結果を送り返す機能を備える専用の通信デバイスを制御モジュールに実装する場合に比べ、各制御モジュールの製造コストを安くすることができる。なお、追い越しを許さないトランザクションは、全て同一のＰＣＩｅバスを使用する。また、ＰＣＩｅのデバイス制御レジスタの「Enable Relaxed Ordering」ビットを無効（Disable）に設定することで実現可能である。
【００５１】
次に図４に示す装置にＮＴＢを用いたＩ／Ｏ要求の転送について説明する。
図４は、ＮＴＢを用いたＩ／Ｏ要求の転送を説明する図である。
図４では、デバイス４０を頂点とするドメインＤ３およびデバイス５０を頂点とするドメインＤ４が設定されている。そして、ＮＴＢ６０がドメインＤ３、Ｄ４間に設置されている。
【００５２】
デバイス４０がＮＴＢ６０を跨いで異なるドメインＤ４のデバイス５０に対してリード要求を発行した際に、リード要求パケットＰ１内のリクエスタＩＤと同じＩＤを持つデバイスが相手側のドメインＤ４内に存在する場合、リード要求パケットＰ１が自ドメインＤ３に戻ってこなくなる。そこで、ＮＴＢ６０は、各ドメインＤ３、Ｄ４内におけるリクエスタＩＤをユニークに設定する。具体的には、ＮＴＢ６０は、両ドメインサイドに独立したエンドポイントデバイスが存在するように見せる。図４では、ドメインＤ３側のエンドポイントデバイスが存在するように見せるＮＴＢ６０の部分を「内部ＮＴＢ６１」、ドメインＤ４側のエンドポイントデバイスが存在するように見せるＮＴＢ６０の部分を「外部ＮＴＢ６２」と言う。
【００５３】
内部ＮＴＢ６１には、ドメインＤ４側から受け取ったリード要求パケット（図４には図示せず）をドメインＤ３側のエンドポイントのＩＤに変換する情報（バス番号およびデバイス番号）が予め設定されている。また、外部ＮＴＢ６２には、ドメインＤ３側から受け取ったリード要求パケットＰ１をドメインＤ４側のエンドポイントのＩＤに変換する情報（バス番号およびデバイス番号）が予め設定されている。
【００５４】
例えばリード要求パケットＰ１は、デバイス４０がドメインＤ３外に発行するパケットであるため、外部ＮＴＢ６２は、リード要求パケットＰ１を受け取ると、リード要求パケットＰ１に含まれるリクエスタＩＤ（Ｂ１／Ｄ２）をドメインＤ４側のエンドポイントのリクエスタＩＤ（Ｂ５／Ｄ６）に変換する。なお、ＮＴＢ６０は、リード要求パケットＰ１に含まれるリクエスタＩＤ（Ｂ１／Ｄ２）をリクエスタＩＤ（Ｂ５／Ｄ６）に変換したことを示す情報（以下、「変換情報」と言う）をＮＴＢ６０内の図示しない記憶部に記憶しておく。そして外部ＮＴＢ６２は、変換したＩＤを備えるリード要求パケットＰ１ａをデバイス５０に転送することで、ドメインＤ３、Ｄ４を跨ぐリード要求の仲介を実現する。
【００５５】
デバイス５０は、リード要求パケットＰ１ａに応じてリード応答パケットＰ２ａを発行する。内部ＮＴＢ６１は、リード応答パケットＰ２ａを受け取ると、変換情報を参照することで、リード応答パケットＰ２ａに含まれるリクエスタＩＤ（Ｂ５／Ｄ６）をドメインＤ３側のエンドポイントのリクエスタＩＤ（Ｂ１／Ｄ２）に変換する。そして変換したリクエスタＩＤを備えるリード応答パケットＰ２をデバイス４０に転送することで、ドメインＤ３、Ｄ４を跨ぐリード応答の仲介を実現する。
【００５６】
ところで、前述したように、リクエスタＩＤの変換を行う際には、内部ＮＴＢ６１および外部ＮＴＢ６２に設定されたバス番号およびデバイス番号を用いる。仮にバス番号およびデバイス番号の設定がなされないと、リクエスタＩＤを変換した後のパケットのリクエスタＩＤが不当な値となり、リード応答パケットＰ２ａがデバイス４０に対し返せなくなる。
【００５７】
以下、ストレージ装置１００の変換情報の設定方法を説明する。
図５は、ストレージ装置の機能を説明するブロック図である。なお、図５では、チップセット１０２、２０２、３０２をルートコンプレックスと表記している。後述する図７も同様である。
【００５８】
中継装置１１は、ＦＲＴ１１ａとＳＶＣ（Service Controller）１１ｂとを有している。
ＦＲＴ１１ａは、ＰＣＩｅスイッチであり、制御モジュール１０ａ、１０ｂ、１０ｃ間を接続する。
【００５９】
ＳＶＣ１１ｂは、ＣＰＵ１１１ｂとルートコンプレックス１１２ｂとを有している。ＣＰＵ１１１ｂは、中継装置１１内全体を統括的に制御する。また、ＣＰＵ１１１ｂは、制御モジュール１０ａ、１０ｂ、１０ｃの各外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂに対し、外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂそれぞれの変換情報を含むコンフィグレーションライトを発行する。
【００６０】
ルートコンプレックス１１２ｂは、ドメインＤ２の根幹となるデバイスである。
次に、ストレージ装置１００のシステム起動時の処理を説明する。
図６は、ストレージ装置のシステム起動時の処理を示すシーケンス図である。
【００６１】
［シーケンスＳｅｑ１］  ＳＶＣ１１ｂは、制御モジュール１０ａ、１０ｂ、１０ｃに電源からの制御電力の供給を許可する。
［シーケンスＳｅｑ２］  制御電力が供給された制御モジュール１０ａ、１０ｂ、１０ｃは、ＣＰＵ１０１、２０１、３０１がバス番号およびデバイス番号を含むコンフィグレーションライト（図６では、「CfgWt」と表記）を発行する。ルートコンプレックス１０２、２０２、３０２は、それぞれ内部ＮＴＢ１０３ａ、２０３ａ、３０３ａにコンフィグレーションライトに基づくバス番号およびデバイス番号を設定する。
【００６２】
［シーケンスＳｅｑ３］  ルートコンプレックス１０２、２０２、３０２は、低速バスコントローラ１０８、２０８、３０８を介してＲｅａｄｙ通知をＣＰＵ１１１ｂに送る。
［シーケンスＳｅｑ４］  ＣＰＵ１１１ｂは、Ｒｅａｄｙ通知を送ってきた制御モジュール１０ａ、１０ｂ、１０ｃ内のドメインの外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂにコンフィグレーションライトを発行する。ルートコンプレックス１１２ｂは、スイッチ１１１ａを介して外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂにコンフィグレーションライトに基づくバス番号およびデバイス番号を設定する。その後、制御モジュール１０ａ、１０ｂ、１０ｃは、ＳＶＣ１１ｂからのＲｅａｄｙ通知を待機する。
【００６３】
［シーケンスＳｅｑ５］  ＳＶＣ１１ｂがＲｅａｄｙ通知を制御モジュール１０ａ、１０ｂ、１０ｃに送信すると、制御モジュール１０ａ、１０ｂ、１０ｃ間でＤＭＡ機能を使用したデータアクセスが可能となる。
【００６４】
以上述べたように、ストレージ装置１００によれば、ルートコンプレックス１０２、２０２、３０２とは異なるルートコンプレックス１１２ｂをドメインＤ２に設け、外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂに対し、コンフィグレーションライトを発行するようにした。コンフィグレーションライトを発行することにより、外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂにバス番号、デバイス番号を設定することができる。外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂにバス番号、デバイス番号を設定すると、外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂが、リクエスタＩＤを変換することができる。外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂがリクエスタＩＤを変換することで、ＮＴＢ１０３、２０３、３０３が、ドメインを跨ぐリード要求の仲介を実現できる。
【００６５】
＜第３の実施の形態＞
次に、第３の実施の形態のストレージシステムについて説明する。
以下、第３の実施の形態のストレージシステムについて、前述した第２の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００６６】
図７は、第３の実施の形態のストレージ装置の機能を説明するブロック図である。
図７に示す第３の実施の形態のストレージ装置１００ａは、中継装置の構成および構築されるドメインが第２の実施の形態のストレージ装置１００と異なっている。
【００６７】
ストレージ装置１００ａは、制御モジュール１０ａのルートコンプレックス１０２からＦＲＴ１１ａを経由して各制御モジュール１０ｂ、１０ｃの外部ＮＴＢ２０３ｂ、３０３ｂに対し、コンフィグレーションライトを発行するＰＣＩｅバスの構成をとる。このため、制御モジュール１０ａのルートコンプレックス１０２、ＮＴＢ１０３と、中継装置１２とは同一のドメインＤ７に属している。
【００６８】
中継装置１２は、各制御モジュール１０ａ、１０ｂ、１０ｃのルートコンプレックス１０２、２０２、３０２と接続するスイッチ１１１ｃと、マイコン１１２ｃと、低速バスコントローラ１１３ｃとを有している。
【００６９】
スイッチ１１１ｃ上のポートは、アップストリーム・ポートとダウンストリーム・ポートに分けられる。ルートコンプレックスに近いポートがアップストリーム・ポートで、それ以外は、全てダウンストリーム・ポートと言う。
【００７０】
マイコン１１２ｃは、制御モジュール１０ａ、１０ｂ、１０ｃのいずれか１つを予め設定された設定基準に基づいてマスタに設定する。また、それ以外の制御モジュールをスレーブに設定する。本実施の形態では、制御モジュール１０ａをマスタに設定し、制御モジュール１０ｂ、１０ｃをスレーブに設定する。マスタに設定された制御モジュール１０ａは、第２のパケット転送装置の一例である。スレーブに設定された制御モジュール１０ｂ、１０ｃは、第１のパケット転送装置の一例である。そして、マイコン１１２ｃは、マスタに設定した制御モジュール１０ａのルートコンプレックス１０２をスイッチ１１１ｃのアップストリーム・ポートに接続する。また、マイコン１１２ｃは、制御モジュール１０ｂ、１０ｃのチップセットは、スイッチ１１１ｃのダウンストリーム・ポートに接続する。なお、スイッチ１１１ｃの制御モジュール１０ｂ、１０ｃが接続されたポートは、電気的に切断しておくのが好ましい。これにより、制御モジュール１０ｂ、１０ｃからスイッチ１１１ａへの誤ったアクセスを抑制することができる。
【００７１】
マイコン１１２ｃは、制御モジュール１０ａの故障等の理由により制御モジュール１０ａを用いた通信ができなくなった場合に、マイコン１１２ｃはスイッチ１１１ｃをリセットし、制御モジュール１０ｂ、１０ｃのいずれかをマスタに設定することでアップストリーム・ポートを変更する。この処理により、ストレージ装置１００ａを停止させずに、ストレージ装置１００ａの運用が可能となる。
【００７２】
低速バスコントローラ１１３ｃは、低速バスコントローラ１０８、２０８、３０８に接続されている。
次に、第３の実施の形態のストレージ装置１００ａの起動時の処理を説明する。
【００７３】
図８は、第３の実施の形態のストレージ装置の起動時の処理を示すシーケンス図である。
［シーケンスＳｅｑ１１］  ＳＶＣ１１ｃは、制御モジュール１０ａ、１０ｂ、１０ｃに電源からの制御電力の供給を許可する。
【００７４】
［シーケンスＳｅｑ１２］  制御電力が供給された制御モジュール１０ａ、１０ｂ、１０ｃは、自身の情報を低速バスコントローラ１０８、２０８、３０８を介してＳＶＣ１１ｃに通知する。
【００７５】
［シーケンスＳｅｑ１３］  ＳＶＣ１１ｃは、シーケンスＳｅｑ１２にて通知された情報に基づいて本実施の形態でのマスタとなる制御モジュール１０ａを決定する。
［シーケンスＳｅｑ１４］  マイコン１１２ｃは、スイッチ１１１ｃのアップストリーム・ポートを制御モジュール１０ａのルートコンプレックス１０２に接続されたポートに設定する。
【００７６】
［シーケンスＳｅｑ１５］  マイコン１１２ｃは、マスタに決定した制御モジュール１０ａに、制御モジュール１０ａがマスタであることを通知する。また、マスタ以外の制御モジュール１０ｂ、１０ｃに、制御モジュール１０ｂ、１０ｃがスレーブであることを通知する。
【００７７】
［シーケンスＳｅｑ１６］  スレーブであることが通知された制御モジュール１０ｂ、１０ｃは、内部ＮＴＢ２０３ａ、３０３ａの初期化を開始する。すなわち、ＣＰＵ２０１、３０１がバス番号およびデバイス番号を含むコンフィグレーションライトを発行する。ルートコンプレックス２０２、３０２は、それぞれ内部ＮＴＢ２０３ａ、３０３ａにコンフィグレーションライトに基づくバス番号およびデバイス番号を設定する。
【００７８】
［シーケンスＳｅｑ１７］  ルートコンプレックス２０２、２０３は、バス番号およびデバイス番号の設定が完了すると、低速バスコントローラ２０８、３０８を介してＲｅａｄｙ通知を低速バスコントローラ１１３ｃに送る。マイコン１１２ｃは、低速バスコントローラ１１３ｃを介してＲｅａｄｙ通知の受け取りを把握する。
【００７９】
［シーケンスＳｅｑ１８］  一方、マスタであることが通知された制御モジュール１０ａは、内部ＮＴＢ１０３ａの初期化を開始する。すなわち、ＣＰＵ１０１がバス番号およびデバイス番号を含むコンフィグレーションライトを発行する。ルートコンプレックス１０２は、内部ＮＴＢ１０３ａにコンフィグレーションライトに基づくバス番号およびデバイス番号を設定する。
【００８０】
［シーケンスＳｅｑ１９］  制御モジュール１０ａは、外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂの初期化を開始する。すなわち、ＣＰＵ１０１がバス番号およびデバイス番号を含むコンフィグレーションライトを発行する。ルートコンプレックス１０２は、スイッチ１１１ｃ、スイッチ１１１ａを介して外部ＮＴＢ１０３ｂ、２０３ｂ、３０３ｂにバス番号およびデバイス番号を設定する。
【００８１】
［シーケンスＳｅｑ２０］  ルートコンプレックス１０２は、バス番号およびデバイス番号の設定が完了すると、低速バスコントローラ１０８を介してＲｅａｄｙ通知を低速バスコントローラ１１３ｃに送る。マイコン１１２ｃは、低速バスコントローラ１１３ｃを介してＲｅａｄｙ通知の受け取りを把握する。
【００８２】
［シーケンスＳｅｑ２１］  マイコン１１２ｃは、低速バスコントローラ１１３ｃを介してＲｅａｄｙ通知の受け取りを把握すると、Ｒｅａｄｙ通知を制御モジュール１０ａ、１０ｂ、１０ｃに送信する。以降、制御モジュール１０ａ、１０ｂ、１０ｃ間でＤＭＡ機能を使用したデータアクセスが可能となる。
【００８３】
第３の実施の形態のストレージシステムによれば、第２の実施の形態のストレージシステムと同様の効果が得られる。
そして、第３の実施の形態のストレージシステムによれば、さらに、ＳＶＣ１１をＳＶＣ１１ｃに置き換えることにより、ルートコンプレックスが１つ節約され、ストレージ装置のコストの低減を図ることができる。
【００８４】
以上、本発明の通信装置およびＩＤ設定方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００８５】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置２ａ、２ｂ、制御モジュール１０ａ、１０ｂ、１０ｃが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００８６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【符号の説明】
【００８９】
１、１００、１００ａ  ストレージ装置
２ａ、２ｂ  制御装置
２ａ１、２ｂ１、８、１１１ｂ  ＣＰＵ
２ａ２、２ｂ２、６  ルートデバイス
２ａ３、２ｂ３  変換装置
３ａ、３ｂ  ディスク装置
４ａ、４ｂ、４ｃ、Ｄ１〜Ｄ７  ドメイン
５  パケット
７、１１１ａ、１１１ｃ  スイッチ
９  リクエスタＩＤ
１０ａ、１０ｂ、１０ｃ  制御モジュール
１１、１２  中継装置
１１ａ  ＦＲＴ
１１ｂ、１１ｃ  ＳＶＣ
１１２ｂ  ルートコンプレックス
１１２ｃ  マイコン
１１３ｃ、１０８、２０８、３０８  低速バスコントローラ
４０、５０  デバイス
６０、１０３  ＮＴＢ
６１、１０３ａ、２０３ａ、３０３ａ  内部ＮＴＢ
６２、１０３ｂ、２０３ｂ、３０３ｂ  外部ＮＴＢ
１０２、２０２、３０２  ルートコンプレックス（チップセット）
【図１】
0005903801.tif 000002
【図２】
0005903801.tif 000003
【図３】
0005903801.tif 000004
【図４】
0005903801.tif 000005
【図５】
0005903801.tif 000006
【図６】
0005903801.tif 000007
【図７】
0005903801.tif 000008
【図８】
0005903801.tif 000009