(57)【要約】【課題】複数のデバイスを好適に通信可能に接続する技術を提供する。【解決手段】第１のデバイスと第２のデバイスとの間の通信を中継するデータ中継装置において、第１のデバイスからの接続初期化を受け付け第１のデバイスとの通信接続を確立する第１の接続手段と、第２のデバイスの起動に応じて第２のデバイスに対して接続初期化を実行し第２のデバイスとの通信接続を確立する第２の接続手段と、第１のデバイスと第１の接続手段との間の通信接続が確立し、かつ、第２のデバイスと第２の接続手段との間の通信接続が確立している場合に、第１の接続手段と第２の接続手段との間でデータを中継する中継手段と、を有する。【選択図】図１
2016051394.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバイスと該第１のデバイスとは異なる第２のデバイスとの間の通信を中継するデータ中継装置であって、
前記第１のデバイスからの接続初期化を受け付け該第１のデバイスとの通信接続を確立する第１の接続手段と、
前記第２のデバイスの起動に応じて該第２のデバイスに対して接続初期化を実行し該第２のデバイスとの通信接続を確立する第２の接続手段と、
前記第１のデバイスと前記第１の接続手段との間の通信接続が確立し、かつ、前記第２のデバイスと前記第２の接続手段との間の通信接続が確立している場合に、前記第１の接続手段と前記第２の接続手段との間でデータを中継する中継手段と、
を有することを特徴とするデータ中継装置。
【請求項２】
前記データ中継装置には、前記第１のデバイス及び前記第２のデバイスへの電源供給とは独立して電源供給が行われている
ことを特徴とする請求項１に記載のデータ中継装置。
【請求項３】
前記第１のデバイスは通信接続トポロジにおいて前記データ中継装置より上流側に位置するデバイスであり、前記第２のデバイスは通信接続トポロジにおいて前記データ中継装置より下流側に位置するデバイスである
ことを特徴とする請求項１又は２に記載のデータ中継装置。
【請求項４】
前記第１のデバイスと前記第１の接続手段との間、及び、前記第２のデバイスと前記第２の接続手段との間は、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）インターフェース規格に準拠した通信が行われる
ことを特徴とする請求項１乃至３の何れか一項に記載のデータ中継装置。
【請求項５】
前記第１のデバイスは、ＰＣＩｅインターフェース規格におけるルートコンプレックスを有するデバイスであり、前記第２のデバイスは、ＰＣＩｅインターフェース規格におけるエンドポイントを有するデバイスである
ことを特徴とする請求項４に記載のデータ中継装置。
【請求項６】
前記第１のデバイスと前記第１の接続手段との間、及び、前記第２のデバイスと前記第２の接続手段との間の少なくとも一方は、ケーブルを介して接続されることを特徴とする請求項１乃至５の何れか一項に記載のデータ中継装置。
【請求項７】
前記第２のデバイスの機器情報を保持する保持手段を更に有し、
前記第１の接続手段は、前記第１のデバイスからの接続初期化を受け付けたとき、前記保持手段に保持された機器情報に基づいて該接続初期化に応答する
ことを特徴とする請求項１乃至６の何れか一項に記載のデータ中継装置。
【請求項８】
前記第２の接続手段は、前記第２のデバイスに対して接続初期化を実行した際に得られた機器情報が前記保持手段に保持された機器情報と一致しない場合、前記第２のデバイスが変更されたと判定し接続未完了の状態を維持する
ことを特徴とする請求項７に記載のデータ中継装置。
【請求項９】
データの中継の可否を指定する中継許可レジスタを更に有し、
前記中継手段は、前記中継許可レジスタに設定された設定値に基づいて、前記第１の接続手段と前記第２の接続手段との間のデータ中継を制御する
ことを特徴とする請求項１乃至８の何れか一項に記載のデータ中継装置。
【請求項１０】
第１のデバイスと該第１のデバイスとは異なる第２のデバイスとの間の通信を中継するデータ中継装置の制御方法であって、
前記第１のデバイスからの接続初期化を受け付け該第１のデバイスとの通信接続を確立する第１の接続工程と、
前記第２のデバイスの起動に応じて該第２のデバイスに対して接続初期化を実行し該第２のデバイスとの通信接続を確立する第２の接続工程と、
前記第１のデバイスとの通信接続が確立し、かつ、前記第２のデバイスとの通信接続が確立している場合に、前記第１のデバイスと前記第２のデバイスとの間でデータを中継するよう制御する制御工程と、
を含むことを特徴とするデータ中継装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスを通信可能に接続する技術に関するものである。
【背景技術】
【０００２】
近年、ＰＣ（パーソナルコンピュータ）などの汎用コンピュータ機器を制御用に組み込む製品開発が進む中で、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）（以下、ＰＣＩｅと表記）というインターフェース規格を適用する動きが見られる。ＰＣＩｅは、元々は装置内部のＩ／Ｏ拡張用に用いられていたが、装置間の接続手段としての適用拡大が進展している。そのため、ケーブル接続に関する仕様（PCI Express External Cabling Specification）の規格化も進行している。
【０００３】
ところで、複数の装置における各装置の電源がそれぞれ別個に供給制御がなされる場合、当該複数の装置間でのＰＣＩｅインターフェースによる接続において不都合が生じるケースがある。すなわち、ＰＣＩｅ規格に従い上流側デバイス（ルートコンプレックス）は接続開始に伴う初期動作を実行するが、接続を確立するためには、接続先となる下流側デバイスが適切に応答を行う必要がある。そのため、下流側デバイスの起動タイミングによっては応答動作が間に合わなくなり、接続確立に失敗するという問題が生じてしまう。そのため、複数の装置間で電源起動タイミングを厳密に同期させるよう構成するか、あるいは下流側デバイスを先行して起動させ上流側デバイスからの初期動作を待機させるよう構成する必要がある。
【０００４】
そこで、特許文献１では、ホスト側から供給される電源投入タイミングを遅延させる回路を用いて、デバイス装置とのタイミング合わせを行なう構成が提案されている。また、特許文献２では、上流側デバイスの制御を行なっているプロセッサに接続開始を促す通知を行い下流側デバイスとの接続初期化を開始させる方法が示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２２４７７号公報
【特許文献２】特開２０１２−１６８７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の従来技術においては、上流側デバイスと下流側デバイスとの間の電源起動タイミングを厳密に同期させる機構を実装する必要がある。あるいは、確実に接続が成功するように、上流側デバイスと下流側デバイスとの間の起動手順を利用者に対し遵守させる必要がある。例えば、利用者は、上流側デバイスの電源起動時には下流側デバイスの電源を供給せずに待機させておく必要がある。併せて、上流側デバイスを制御するシステムが下流側デバイスからの通知を受け付ける準備が整った段階で下流側デバイスへの電源供給を開始するといった手順に従う必要がある。すなわち、複数の装置それぞれに対する電源供給を任意のタイミングで行うことはできない。
【０００７】
本発明は、このような問題に鑑みてなされたものであり、複数のデバイスを好適に通信可能に接続する技術を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上述の問題点を解決するため、本発明に係るデータ中継装置は以下の構成を備える。すなわち、第１のデバイスと該第１のデバイスとは異なる第２のデバイスとの間の通信を中継するデータ中継装置において、前記第１のデバイスからの接続初期化を受け付け該第１のデバイスとの通信接続を確立する第１の接続手段と、前記第２のデバイスの起動に応じて該第２のデバイスに対して接続初期化を実行し該第２のデバイスとの通信接続を確立する第２の接続手段と、前記第１のデバイスと前記第１の接続手段との間の通信接続が確立し、かつ、前記第２のデバイスと前記第２の接続手段との間の通信接続が確立している場合に、前記第１の接続手段と前記第２の接続手段との間でデータを中継する中継手段と、を有する。
【発明の効果】
【０００９】
本発明によれば、複数のデバイスを好適に通信可能に接続する技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態にかかる中継装置を含むシステムの全体構成を示す図である。
【図２】第１実施形態にかかるデータ通信中継部の内部構成を示すブロック図である。
【図３】ルートコンプレックスとデータ通信中継部との間の接続初期化の動作を説明するフローチャートである。
【図４】データ通信中継部における通常アクセス時の動作を説明するフローチャートである。
【図５】データ通信中継部と外部装置との間の接続初期化の動作を説明するフローチャートである。
【図６】パケット中継部の動作を説明するフローチャートである。
【図７】データ通信中継部におけるアドレス変換処理を説明する図である。
【図８】第２実施形態に係るデータ通信中継部の内部構成を示すブロック図である。
【図９】パケット中継部の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１２】
（第１実施形態）
本発明に係る中継装置の第１実施形態として、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）インターフェース規格に準拠したデータ通信を行う２つの装置を接続するデータ中継装置を例に挙げて以下に説明する。
【００１３】
＜装置構成＞
図１は、第１実施形態に係るデータ中継装置を含むシステムの構成を示すブロック図である。ここでは、ＰＣＩｅインターフェース規格における通信接続トポロジのルート（最上位、最上流）となるルートコンプレックス１０２０を有するホスト装置１０００と、エンドポイント１１２０を有する外部装置１１００とを、通信ケーブル１２００で接続する例について説明する。
【００１４】
ここでは、データ中継装置はホスト装置１０００の内部で、ルートコンプレックス１０２０の下流側に接続されたデータ通信中継部１０４０として構成されている例について説明する。もちろん、中継装置であるデータ通信中継部１０４０をホスト装置１０００とは別体の外部装置として構成しても良い。その場合は、ルートコンプレックス１０２０とデータ通信中継部１０４０とは通信ケーブルを介して接続されることになる。
【００１５】
ホスト装置１０００は、ホスト装置電源部１０３０を主電源として動作する。ホスト装置１０００は、ソフトウェアを実行し装置全体を制御するＣＰＵ部１０１０と、上述のルートコンプレックス１０２０を備えている。さらに、ルートコンプレックス１０２０の下流側にはデータ通信中継部１０４０が接続されている。ホスト装置１０００はデータ通信中継部１０４０を介して外部装置１１００と通信ケーブル１２００で接続している。
【００１６】
データ通信中継部１０４０は、中継部用電源供給部１０５０を主電源として動作する。ここで、中継部用電源供給部１０５０は、ホスト装置電源部１０３０とは独立に設けられている。そのため、ホスト装置１０００内の各部への電源供給が停止している状態であっても、データ通信中継部１０４０には、中継部用電源供給部１０５０により電源が供給されるように構成されている。
【００１７】
外部装置１１００は、外部装置電源部１１３０を主電源として動作する。外部装置１１００は、外部装置全体を制御するＣＰＵ部１１１０と、ホスト装置１０００を上流側デバイスとしてＰＣＩｅインターフェース規格で接続するエンドポイント１１２０を備えている。
【００１８】
図２は、データ通信中継部１０４０の内部構成を示すブロック図である。なお、上述のように、上流側にはルートコンプレックス１０２０が位置し、下流側には通信ケーブル１２００を介してエンドポイント１１２０が位置している。
【００１９】
データ通信中継部１０４０は、ＰＣＩｅ通信における上流側と下流側との中継を制御する。上流側デバイス（ここではルートコンプレックス１０２０）との接続については、上流接続代行部１０４２が上流側ブリッジ１０４１を介して接続制御を行う。また、下流側デバイス（ここではエンドポイント１１２０）との接続については、下流接続代行部１０４４が下流側ブリッジ１０４５を介して接続制御を行う。さらに、データ通信中継部１０４０は、上流接続代行部１０４２と下流接続代行部１０４４との間でパケットデータの交換を実行するパケット中継部１０４３を備える。また、デバイス情報保持部１０４６は、下流側に接続されるデバイスに関する情報を保持する機能部である。上流側デバイス（ここではルートコンプレックス１０２０）との接続制御においては、上流接続代行部１０４２は、デバイス情報保持部１０４６に保持された情報を用いて接続を行う。
【００２０】
＜装置の動作＞
データ通信中継部１０４０は、中継部用電源供給部１０５０からの電力供給を受け、上流側デバイスおよび下流側デバイスとの接続に備えて待機する。待機状態にあるデータ通信中継部１０４０は、ホスト装置１０００の電源起動した際には、下流側デバイス（外部デバイス）の状態に関わらず、上流側となるルートコンプレックス１０２０から開始される接続初期化に応答し、通信可能な状態を確立する。
【００２１】
図３は、ルートコンプレックス１０２０とデータ通信中継部１０４０との間の接続初期化の動作を説明するフローチャートである。
【００２２】
ホスト装置１０００の電源が投入されると、所定時間の経過後、上流側デバイスであるルートコンプレックス１０２０はＰＣＩｅ通信の接続初期化を開始する。なお、上述のように、データ通信中継部１０４０は中継部用電源供給部１０５０からの電源供給によって待機状態にある。そのため、データ通信中継部１０４０は、上流側デバイスからの接続初期化に対して確実に応答することが可能である。
【００２３】
ステップＳ２００１では、ＣＰＵ部１０１０は、リンクアップが完了しかた否かを判定する。リンクアップが完了した場合Ｓ２００２に進む。なお、リンクアップ完了後は、ルートコンプレックス１０２０とデータ通信中継部１０４０との間でパケットデータの送受信が可能な状態になる。
【００２４】
ステップＳ２００２では、ＣＰＵ部１０１０は、コンフィギュレーションソフトウェアを実行し、ルートコンプレックス１０２０を最上流として下流側に接続するデバイスを検出する。具体的には、各デバイスのコンフィギュレーションレジスタからそれぞれのデバイスに関する情報を読み出していく。なお、コンフィギュレーションソフトウェアは、ＰＣＩｅデバイス制御の初期化を行うためのソフトウェアである。また、コンフィギュレーションレジスタには、接続相手となるデバイスの種類を識別する機器情報（ベンダＩＤ、デバイスＩＤ、クラスコードなど）、デバイスを制御するために必要なメモリ空間情報（ベースアドレスレジスタ）などが格納されている。
【００２５】
ステップＳ２００３では、ＣＰＵ部１０１０は、コンフィギュレーションレジスタに含まれる機器情報に基づいて、ホスト装置１０００が各デバイスを制御するために利用されるデバイスドライバソフトとの紐付けを行なう。
【００２６】
ステップＳ２００４では、ＣＰＵ部１０１０は、デバイスが要求するメモリサイズに応じて各デバイスにＰＣＩメモリ空間を割り当てる。
【００２７】
ステップＳ２００５では、ＣＰＵ部１０１０は、割り当てたアドレス情報を各デバイスのコンフィギュレーションレジスタ（ベースアドレスレジスタ）に書き込む。
【００２８】
図４は、データ通信中継部１０４０におけるアクセス時の動作を説明するフローチャートである。データ通信中継部１０４０へのアクセスは、コンフィギュレーションソフトウェア実行時のアクセスと、上流側の初期化完了後に実行される通常アクセスがある。
【００２９】
第１実施形態では、ルートコンプレックス１０２０による下流側となるエンドポイント１１２０へのアクセスに対し、データ通信中継部１０４０が代行して応答を行なう。
【００３０】
フローチャートは、上流デバイス（ここではルートコンプレックス１０２０）からのアクセスの検出をトリガに実行される。下流側デバイスに対するアクセスにより、接続先となる上流側ブリッジ１０４１を介して、受信したパケットデータは上流接続代行部１０４２へ転送される。
【００３１】
ステップＳ２１０１では、データ通信中継部１０４０は、ルートコンプレックス１０２０から受信したパケットデータがコンフィギュレーションレジスタの読み込み（リード）であるか否かを判定する。リードである場合はＳ２１０２に進み、リードでない場合はＳ２１０４に進む。ステップＳ２１０２では、データ通信中継部１０４０は、予めデバイス情報保持部１０４６に保持したエンドポイント１１２０に関する情報を用いて、接続先がエンドポイント１１２０であることを示す応答パケットデータを生成する。なお、ここでは、デバイス情報保持部１０４６には、最後（直前）に接続された下流側デバイスに関する情報が保持されているものとする。ステップＳ２１０３では、データ通信中継部１０４０は、生成した応答パケットデータを上流側ブリッジ１０４１を介してルートコンプレックス１０２０に返送する。
【００３２】
この上流接続代行部１０４２による代行応答により、コンフィギュレーションソフトウェアを実行するＣＰＵ部１０１０は、エンドポイント１１２０が接続されていると認識して、エンドポイント１１２０に対してメモリ空間を割り当てる。割り当てられたメモリ空間を示す値は、コンフィギュレーションレジスタのベースアドレスレジスタへライトされることになる。
【００３３】
ステップＳ２１０４では、データ通信中継部１０４０は、ルートコンプレックス１０２０から受信したパケットデータがコンフィギュレーションレジスタへの書き込み（ライト）であるか否かを判定する。ライトである場合はＳ２１０５に進み、ライトでない場合はＳ２１０６に進む。ステップＳ２１０５では、データ通信中継部１０４０は、受信したパケットデータの内容を上流接続代行部１０４２に保持する
コンフィギュレーションソフトウェアによる初期化が完了した後には、ルートコンプレックス１０２０は、初期化が完了したデバイスへの通常のアクセスが可能となる。通常アクセスは、上記割り当てられたメモリ空間へのメモリアクセス（Ｉ／Ｏアクセス）として実行される。
【００３４】
ステップＳ２１０６では、データ通信中継部１０４０は、ルートコンプレックス１０２０から受信したパケットデータが下流側デバイスへのメモリアクセス（Ｉ／Ｏアクセス）であるか否かを判定する。この判定は、ステップＳ２１０５により上流接続代行部１０４２に保持された割り当て済みのメモリ空間を示す値を参照することにより実現される。判定の結果、下流側デバイスへのメモリアクセスであると判定した場合はＳ２１０７に進み、そうでない場合は処理を終了する。ステップＳ２１０７では、データ通信中継部１０４０は、後段のパケット中継部１０４３へのデータ受け渡しを行う。なお、後段のパケット中継部１０４３の動作については後述する。
【００３５】
図５は、データ通信中継部１０４０と外部装置１１００との間の接続初期化の動作を説明するフローチャートである。当該動作は、待機状態にあるデータ通信中継部１０４０による、外部装置１１００への電源投入の検知あるいは外部装置１１００の起動の検知をトリガに実行される。なお、当該動作は、ホスト装置１０００におけるデータ通信中継部１０４０とルートコンプレックス１０２０との間の接続状態に依存せずに、データ通信中継部１０４０と下流側デバイス（外部装置１１００）との間で行われる。
【００３６】
ステップＳ２２０１では、データ通信中継部１０４０は、外部装置側の電源投入によるエンドポイント１１２０の起動を通信ケーブル１２００を介して検知する。ステップＳ２２０２では、データ通信中継部１０４０は、ＰＣＩｅの初期化手順に基づいて各信号の供給などのリンクアップ動作を開始する。
【００３７】
ステップＳ２２０３では、データ通信中継部１０４０は、下流側デバイスとのリンクアップが完了したか否かを判定する。当該判定は、例えば、供給信号に対する下流側デバイスの正常な応答があったか否かによって行われる。
【００３８】
データ通信中継部１０４０と外部装置１１００との間でパケットデータの送受信が可能な状態になると、データ通信中継部１０４０は、上述のコンフィギュレーションソフトウェアによるデバイスの初期化処理と同様の処理を外部装置１１００に対して実行する。すなわち、本来は、コンフィギュレーションソフトウェアがデバイスに対して行う処理をデータ通信中継部１０４０が代行して行なう。
【００３９】
ステップＳ２２０４では、データ通信中継部１０４０は、外部装置１１００のエンドポイント１１２０のコンフィギュレーションレジスタを読み出す。具体的には、データ通信中継部１０４０の下流接続代行部１０４４は、下流側ブリッジ１０４５を介して、下流に接続する外部装置１１００のエンドポイント１１２０のコンフィギュレーションレジスタから情報を取得すべく、要求パケットを送出する。データ通信中継部１０４０は、この要求パケットに対しエンドポイント１１２０が返送したパケットデータから下流側デバイス情報を抽出する。
【００４０】
ステップＳ２２０５では、データ通信中継部１０４０は、下流側デバイス情報とデバイス情報保持部１０４６に保持されている情報とを照合する。ここで照合される情報は、コンフィギュレーションレジスタから参照されるベンダＩＤやデバイスＩＤの値である。下流側デバイス情報とデバイス情報保持部１０４６に保持されている情報とが一致しない場合は、接続されたデバイスが置き換わっている（変更された）と判断して処理を終了する。すなわち、接続未完了の状態を維持する。一方、下流側デバイス情報とデバイス情報保持部１０４６に保持されている情報とが一致する場合は、Ｓ２２０６に進む。
【００４１】
ステップＳ２２０６では、データ通信中継部１０４０は、エンドポイント１１２０が要求するメモリ空間等のリソース割当てを行う。ここで割り当られるメモリ空間は、上述のようにデバイス情報保持部１０４６に保持された情報に基づいて決められる。例えば、４つのベースアドレスを要求する場合には、それぞれの要求するサイズに合わせて重複しないように割当てれば良い。
【００４２】
ステップＳ２２０７では、データ通信中継部１０４０は、Ｓ２２０６での割当てに従って、エンドポイント１１２０のコンフィギュレーションレジスタへの書き込みを実行する。すなわち、各メモリ空間のスタートアドレスをコンフィギュレーションレジスタのベースアドレスレジスタに与える。このようにして、データ通信中継部１０４０により割り当てたメモリ空間等の情報は、エンドポイント１１２０のコンフィギュレーションレジスタに書き込まれ、コンフィギュレーション処理が終了する。
【００４３】
ところで、エンドポイント１１２０のベースアドレスレジスタに割り当てられるアドレス値は、本来は、ホスト装置１０００のＣＰＵ部１０１０が実行するコンフィギュレーションソフトウェアによって与えられるものである。しかし、上述のように、ここでは、コンフィギュレーションソフトウェアによって与えられるアドレス値とは別個に、データ通信中継部１０４０が割り当てることになる。従って、下流接続代行部１０４４によって下流側デバイスに与えられる値は、コンフィギュレーションソフトウェアによって与えられるものとは一般に異なるものとなる。そこで、第１実施形態では、データ通信中継部１０４０においてアドレスの違いをアドレス変換処理によって解決する。
【００４４】
図７は、データ通信中継部１０４０におけるアドレス変換処理を説明する図である。上述のように、ホスト装置１０００が下流側デバイスの制御に必要とするメモリ空間サイズはデバイス情報保持部１０４６に保持されている。従って、上流側からのコンフィギュレーションソフトウェアに対して要求するサイズは、下流側デバイスが要求するサイズと一致する。つまり、図７で示すように、上流側アドレス空間（図７の左側）である４つの空間Ａ〜Ｄのサイズと、下流側アドレス空間（図７の右側）である４つの空間Ａ’〜Ｄ’のサイズとは一致している。
【００４５】
上述のステップＳ２１０６では、上流側アドレスの割り当てに該当するかの判定が行なわれている。ここでは、割当られた４つの空間のそれぞれに対して判定を行い、該当する範囲にある場合には下流側に転送が行なわれる。従って、この判定結果に基づいて、下流側に転送されるアクセスのアドレスに対して、下流側アドレス空間に割り当てたベースアドレス（スタートアドレス値）をオフセットとして演算することにより、下流側デバイスに対するアドレス値へ変換することが可能である。
【００４６】
すなわち、各々のアドレス空間のサイズは予め保持されているため、上流側からの割り当てが如何なる値であっても、下流側の割当が重複する不都合は生じない。もちろん、例で示した４つではなく、要求するアドレス空間が１つあるいは他の個数であっても、同様に上流側と下流側を容易に変換可能である。
【００４７】
このように、本来は最上流となるルートコンプレックス１０２０が下流側デバイスに対して実行する初期化処理を、データ通信中継部１０４０が代行して行う。これにより、データ通信中継部１０４０と下流側デバイスとの間で通信が可能な状態を確立することができる。
【００４８】
次に上流側デバイスと下流側デバイスとの間のデータ中継制御について説明する。上述したように、ホスト装置１０００に電源が投入され、オペレーティングシステムが起動すると、コンフィギュレーションソフトウェアによって、検出されたデバイスがリストアップされる。上述のデータ通信中継部１０４０による代行応答により、コンフィギュレーションソフトウェアはエンドポイント１１２０の存在を認識することが出来、対応するデバイスドライバを決定することが可能となる。そして、認識したエンドポイント１１２０に対して対応するデバイスドライバを紐付けることで、エンドポイント１１２０を介して外部装置１１００を制御するアプリケーションソフトウェアが実行可能な状態が整うことになる。
【００４９】
ホスト装置１０００で実行されるアプリケーションソフトウェアによる外部装置１１００に対する制御は、外部装置１１００のＰＣＩメモリ空間へのデバイスドライバを介したアクセスによって実現される。このＰＣＩメモリ空間へのアクセスは、ルートコンプレックス１０２０によってパケットデータに変換されＰＣＩｅ通信を介して下流側へと伝達されていく。
【００５０】
上述のように、データ通信中継部１０４０において、上流側デバイスとの通信接続制御については上流側ブリッジ１０４１を介して上流接続代行部１０４２が実行する。また、下流側デバイスとの通信接続制御については下流側ブリッジ１０４５を介して下流接続代行部１０４４が実行する。データ通信中継部１０４０は、上流側デバイス及び下流側デバイスの各々との間で接続を確立し通信可能な状態に至ると、パケット中継部１０４３を介してパケットの中継を開始する。すなわち、上流から送出されたパケットを下流側に伝達し、逆に下流から送出されたパケットを上流側に伝達する。
【００５１】
図６は、パケット中継部１０４３の動作を説明するフローチャートである。具体的には、上流側デバイスからのアクセスがあった場合（パケットを受信した場合）のパケット中継部１０４３の応答の動作を説明するフローチャートである。
【００５２】
ステップＳ２３０１では、パケット中継部１０４３は、下流接続代行部１０４４が示す下流側のエンドポイント１１２０との接続状態を判定する。エンドポイント１１２０が正常動作状態にあると判定した場合はＳ２３０２に進み、正常動作状態にない場合（外部装置１１００に電源が供給されていない場合など）はステップＳ２３０４に進む。
【００５３】
ステップＳ２３０２では、パケット中継部１０４３は、上流側デバイスから受信されたパケットを下流側デバイスに伝達する。これにより、下流側デバイスは、パケット中継部１０４３から受信したパケットに対する応答パケットをパケット中継部１０４３に返信する。ステップＳ２３０３では、パケット中継部１０４３は、下流側デバイスから受信された返送パケットを上流側デバイスに伝達する。
【００５４】
ステップＳ２３０４では、パケット中継部１０４３は、上流側デバイスから受信されたパケットに対して、下流側デバイスへ伝達することなく所定の値を返送する。所定の値とは、例えば、すべての値がゼロ（全ゼロ）のデータである。
【００５５】
ホスト装置１０００で実行されるアプリケーションソフトウェアは、エンドポイント１１２０から返送される値（通常はゼロ以外の値）がすべての値がゼロで返送されてくることで、対象のエンドポイント１１２０が正常動作状態にないことを検知することが出来る。
【００５６】
このように、アプリケーションソフトウェアは、処理を開始する初期段階で、エンドポイント１１２０へのアクセスに対して返送されるデータを判定することにより、エンドポイント１１２０が正常動作状態にあるか否かを判定する。エンドポイント１１２０が正常動作状態になければ、それ以降の処理を実行せずに待機する。或いは、下流側デバイスの状態をユーザに確認させるべく、ホスト装置１０００により警告表示や警告音を出力するよう構成してもよい。
【００５７】
この場合、警告表示や警告音に基づき、ユーザが外部装置１１００への電源投入などを行うことにより上述の図５の処理が自動的に実行される。その結果、ホスト装置１０００と外部装置１１００との間の通信が正常に行われるようになる。すなわち、ユーザは、上流側デバイス及び下流側デバイスへの電源投入を任意のタイミングで行うことが可能となる。
【００５８】
以上説明したとおり第１実施形態によれば、上流側デバイス及び下流側デバイスにおける電源タイミングの制約を伴うことなく、正常に通信を行うことが可能となる。すなわち、従来技術では、接続不良が発生した場合、外部装置の電源の再投入だけでなくホスト装置の再起動によりシステム全体を立ち上げなおす必要があった。しかしながら、第１実施形態の構成においては、ホスト装置１０００は処理を継続することが可能であるため、外部装置の電源の再投入だけでよい。すなわち、第１実施形態によれば、ホットプラグ機構などの高コストなハードウェア構成を利用することなく、簡易なハードウェアとソフトウェア処理により下流側デバイスの接続制御を実現することが可能となる。
【００５９】
（第２実施形態）
第２実施形態では、更に中継許可レジスタ１０４７を設け中継を制御する形態について説明する。
【００６０】
図８は、第２実施形態に係るデータ通信中継部１０４０の内部構成を示すブロック図である。図８において、第１実施形態（図２）と同様の機能を持つブロックに関しては説明を省略する。主には、中継許可レジスタ１０４７が追加されている点が第１実施形態と異なる。
【００６１】
中継許可レジスタ１０４７は、ホスト装置１０００で実行されるアプリケーションソフトウェアまたはデバイスドライバからリード・ライト可能なレジスタとして上流側ＰＣＩメモリ空間に配置される。なお、中継許可レジスタ１０４７へのアクセスは、第１実施形態で説明したコンフィギュレーションソフトウェアによる初期化（図３）の完了後に可能となる。
【００６２】
具体的なメモリ空間上の配置については、下流側デバイスによる要求として割り当てられるベースアドレスレジスタで示された空間において、下流側デバイスが利用していない空アドレス領域に配置すればよい。もちろん、下流側デバイスによる要求として用いていないベースアドレスレジスタがあれば、当該ベースアドレスレジスタを用いて要求しアドレス領域を割り当てることも可能である。
【００６３】
また、ここでは、中継許可レジスタ１０４７は、以下の２ビットを含む設定値を格納可能に構成されている。
・下流側デバイスとの接続状態を示す「接続状態ビット」
・パケット中継部１０４３によるデータ中継の可否を指定する「中継許可ビット」
以下の説明においては、「接続状態ビット」は最下位ビットに配置し、「中継許可ビット」は最上位ビットに配置するものとして説明する。
【００６４】
第２実施形態においては、アプリケーションソフトウェアは、処理を開始する初期段階で中継許可レジスタ１０４７を参照し、エンドポイント１１２０が正常動作状態にあるか否かを判定する。具体的には、中継許可レジスタ１０４７の最下位ビットに配置された「接続状態ビット」を参照することによりエンドポイント１１２０との接続が完了しているかを確認することが可能である。アプリケーションソフトウェアは、処理を実行する上でデータ中継が必要になると、中継許可レジスタ１０４７の最上位ビットである「中継許可ビット」を”１”にセットする。この「中継許可ビット」がセットされたことにより、パケット中継部１０４３による中継が開始される。
【００６５】
図９は、パケット中継部１０４３の動作を説明するフローチャートである。具体的には、上流側デバイスからのアクセスがあった場合（パケットを受信した場合）のパケット中継部１０４３の応答の動作を説明するフローチャートである。
【００６６】
ステップＳ２４０１では、パケット中継部１０４３は、中継許可レジスタ１０４７の「中継許可ビット」を確認する。中継許可ビットが”１”である場合にはＳ２４０２に進み、”０”である場合にはＳ２４０４に進む。
【００６７】
ステップＳ２４０２では、パケット中継部１０４３は、上流側デバイスと下流側デバイスとの間のデータ中継を開始する。具体的には、上流側デバイスから送られるパケットを下流側デバイスに伝達する。また、ステップＳ２４０３では、パケット中継部１０４３は、下流側デバイスからの返送パケットを上流側デバイスに伝達する。
【００６８】
ステップＳ２４０４では、パケット中継部１０４３は、上流側デバイスから受信されたパケットに対して、下流側デバイスへ伝達することなく所定の値を返送する。所定の値とは、例えば、上述の第１実施形態と同様にすべての値がゼロ（全ゼロ）のデータである。
【００６９】
上述の第１実施形態との違いは、ホスト装置１０００で実行されるアプリケーションソフトウェアが、中継許可レジスタ１０４７の設定に基づいてパケット中継部１０４３の動作を切り替えるところにある。この構成により、アプリケーションソフトウェアは、処理上必要となった時に下流側デバイスとの中継を許可して下流側デバイスの制御を開始すれば良い。
【００７０】
（変形例）
上述の第１及び第２実施形態においては、上流側デバイスと下流側デバイスとの間に１つのデータ通信中継部を設ける例について説明した。しかしながら、上流側デバイスと下流側デバイスとの間に複数のデータ通信中継部を設けて連結する構成でもよい。複数のデータ通信中継部を設けることにより、ケーブル接続の延長が容易に実現可能となるという利点がある。
【００７１】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００７２】
１０００  ホスト装置；１１００  外部装置；１０２０  ルートコンプレックス；１０４０  データ通信中継部；１１２０  エンドポイント
【図１】
2016051394.tif 000003
【図２】
2016051394.tif 000004
【図３】
2016051394.tif 000005
【図４】
2016051394.tif 000006
【図５】
2016051394.tif 000007
【図６】
2016051394.tif 000008
【図７】
2016051394.tif 000009
【図８】
2016051394.tif 000010
【図９】
2016051394.tif 000011