(58)【調査した分野】(Int.Cl.,DB名)
前記デバイスハンドル制御部は、さらに、前記他のローカルネットワークから受信したデバイスハンドル削除要求に応じて、当該デバイスハンドル削除要求の受信を示すデバイスハンドル削除要求通知を前記ホストに送信して前記構成情報管理テーブルに保持した前記ターゲットデバイスの構成情報の無効化を行い、前記デバイスハンドル削除要求に対するデバイスハンドル削除応答を前記他のローカルネットワークに返信する
ことを特徴とする請求項2に記載のステーション。
前記デバイスハンドル制御部は、受信した前記デバイスハンドル取得要求に含まれる前記デバイスハンドル番号に関連付けられた前記ターゲットデバイスの構成情報が前記構成情報管理テーブルに保持されていない場合にのみ、前記デバイスハンドル取得要求通知を前記ホストに送信する
ことを特徴とする請求項4に記載のステーション。
前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記ホストからターゲットデバイスグループの各デバイスの構成情報を一括取得し、一括取得した前記ターゲットデバイスグループの前記各デバイスの前記構成情報を前記構成情報管理テーブルに保持する
ことを特徴とする請求項2に記載のステーション。
前記デバイスハンドル制御部は、前記他のローカルネットワークからのコマンドを前記デバイスハンドル取得要求として受信し、前記コマンドに対するレスポンスを前記デバイスハンドル取得応答として前記他のローカルネットワークに送信し、
前記トランザクション中継部は、前記コマンドと前記レスポンスのハンドシェークによって確定された前記他のローカルネットワークとのデータ転送を前記ターゲットデバイスに中継する
ことを特徴とする請求項1に記載のステーション。
ホストとステーションを含む1以上のデバイスとを含むローカルネットワークを有し、前記ステーションを介してイニシエータ装置との通信を行うターゲット装置であって、
前記ホストは、前記ステーションとの間で前記ローカルネットワークにおける当該ステーションの構成情報を共有し、
前記デバイスのそれぞれは、
前記ホストとの間で前記ローカルネットワークにおける自デバイスの構成情報を共有する構成情報共有部を備え、
前記ステーションとしての前記デバイスは、更に、
前記イニシエータ装置から受信したデバイスハンドル取得要求に応じて、前記ローカルネットワーク内のターゲットデバイスの構成情報を前記ホストから取得し、前記デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記イニシエータ装置に返信するデバイスハンドル制御部と、
前記イニシエータ装置から受信したコマンドと当該コマンドで指定されたトランザクションを前記ターゲットデバイスに中継するトランザクション中継部と、
を備え、
前記トランザクション中継部は、前記デバイスハンドル制御部で取得された前記ターゲットデバイスの構成情報に基づいて、前記ホストを介さずに前記トランザクションを中継する
ことを特徴とするターゲット装置。
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来技術は、USBやSDメモリカード(あるいはSDIO)におけるSDバスのように、ホストを中心とするスター型の論理トポロジーを構成する有線ネットワークへ適用すると、次のような課題を有する。例えば、無線ノードが有線ネットワークにおけるデバイスとして接続されていた場合、無線機器は、当該無線ノードを介して直接有線ネットワークのデバイスにアクセスすることができない。この場合、無線ノードは、無線機器からのアクセス要求を有線ネットワークのホストに通知し、当該ホストを介してデバイスにアクセスする必要があるため、通信速度は大幅に低下する。
【0008】
本発明は、リモートネットワークとローカルネットワーク内のデバイスとの間のトランザクションの通信速度を、向上させることを目的とする。
【課題を解決するための手段】
【0009】
前記従来の課題を解決するために、本発明の第1の態様に係るステーションは、ホストを含むローカルネットワークに含まれ、他のローカルネットワークとの通信を中継するステーションであって、前記ホストとの間で前記ローカルネットワークにおける自ステーションの構成情報を共有する構成情報共有部と、前記他のローカルネットワークから受信したデバイスハンドル取得要求に応じて、前記ローカルネットワーク内のターゲットデバイスの構成情報を前記ホストから取得し、前記デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記他のローカルネットワークに返信するデバイスハンドル制御部と、前記他のローカルネットワークから受信したコマンドと当該コマンドで指定されたトランザクションを、前記ターゲットデバイスに中継するトランザクション中継部と、を備え、前記トランザクション中継部は、前記デバイスハンドル制御部で取得された前記ターゲットデバイスの構成情報に基づいて、前記ホストを介さずに前記トランザクションを中継する。
【0010】
これによれば、ステーションはホストを介することなく他のローカルネットワークとターゲットデバイスとの間のトランザクションを中継することができ、ホストを介したトランザクションの中継に比べて通信速度の向上が図られる。
【0011】
第2の態様に係るステーションは、第1の態様に係るステーションにおいて、前記ステーションは、更に、構成情報管理テーブルを含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求の受信を示すデバイスハンドル取得要求通知を前記ホストに送信して前記ホストから前記ターゲットデバイスの構成情報を取得し、取得した前記ターゲットデバイスの構成情報を前記構成情報管理テーブルに保持し、前記デバイスハンドル取得応答は、前記ターゲットデバイスの構成情報の取得の成否を示す結果フラグを含むとしてもよい。
【0012】
これによれば、ステーションは、トランザクションの中継に必要なターゲットデバイスの構成情報を、ホストから取得することができる。また、他のローカルネットワークは、デバイスハンドル取得応答に含まれる結果フラグから、他のローカルネットワークとローカルネットワークに含まれるターゲットデバイスとの論理的な接続の成否を、確認することができる。
【0013】
第3の態様に係るステーションは、第2の態様に係るステーションにおいて、前記デバイスハンドル制御部は、さらに、前記他のローカルネットワークから受信したデバイスハンドル削除要求に応じて、当該デバイスハンドル削除要求の受信を示すデバイスハンドル削除要求通知を前記ホストに送信して前記構成情報管理テーブルに保持した前記ターゲットデバイスの構成情報の無効化を行い、前記デバイスハンドル削除要求に対するデバイスハンドル削除応答を前記他のローカルネットワークに返信するとしてもよい。
【0014】
これによれば、ステーションは、他のローカルネットワークとローカルネットワークに含まれるターゲットデバイスとの間の論理的な接続を、切断することができる。
【0015】
第4の態様に係るステーションは、第2の態様に係るステーションにおいて、前記デバイスハンドル取得要求及び前記デバイスハンドル取得要求通知は、前記ターゲットデバイスを識別するためのデバイスハンドル番号を含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記ホストから受け取った前記デバイスハンドル番号に対応する前記ターゲットデバイスの構成情報を前記デバイスハンドル番号に関連付けて前記構成情報管理テーブルに保持するとしてもよい。
【0016】
これによれば、ステーションは、他のローカルネットワークとの間で、デバイスハンドル番号によってターゲットデバイスを識別できる。
【0017】
第5の態様に係るステーションは、第4の態様に係るステーションにおいて、前記デバイスハンドル制御部は、受信した前記デバイスハンドル取得要求に含まれる前記デバイスハンドル番号に関連付けられた前記ターゲットデバイスの構成情報が前記構成情報管理テーブルに保持されていない場合にのみ、前記デバイスハンドル取得要求通知を前記ホストに送信するとしてもよい。
【0018】
これによれば、ステーションは、ホストに対して行うデバイスハンドル取得要求通知の頻度を削減することができる。
【0019】
第6の態様に係るステーションは、第2の態様に係るステーションにおいて、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記ホストからターゲットデバイスグループの各デバイスの構成情報を一括取得し、一括取得した前記ターゲットデバイスグループの前記各デバイスの前記構成情報を前記構成情報管理テーブルに保持するとしてもよい。
【0020】
これによれば、ステーションは、トランザクションの中継に先立って、ターゲットデバイスグループの各デバイスの構成情報を一括取得しておくことができる。
【0021】
第7の態様に係るステーションは、第6の態様に係るステーションにおいて、前記デバイスハンドル取得応答は、前記ターゲットデバイスグループの前記各デバイスを特定する情報を含むとしてもよい。
【0022】
これによれば、ステーションは、デバイスハンドル取得要求に対するデバイスハンドル取得応答により、ターゲットデバイスグループの各デバイスを特定する情報を、他のローカルネットワークに通知することができる。
【0023】
第8の態様に係るステーションは、第7の態様に係るステーションにおいて、前記デバイスハンドル取得応答は、更に、前記ターゲットデバイスグループの前記各デバイスのデバイス種別を識別するためのデバイス種別コードを含むとしてもよい。
【0024】
これによれば、ステーションは、デバイスハンドル取得応答により他のローカルネットワークにターゲットデバイスグループの各デバイスのデバイス種別コードを通知することができる。これにより、他のローカルネットワークは、デバイスハンドル取得応答により、ターゲットデバイスグループの各デバイスのデバイス種別コードを、確認することができる。
【0025】
第9の態様に係るステーションは、第2の態様に係るステーションにおいて、前記デバイスハンドル取得要求及び前記デバイスハンドル取得要求通知は、デバイス種別を識別するためのデバイス種別コードを含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記デバイス種別コードに該当する各デバイスの構成情報を前記ホストから取得し、取得した前記各デバイスの前記構成情報を前記構成情報管理テーブルに保持するとしてもよい。
【0026】
これによれば、ステーションは、他のローカルネットワークによって指定されたデバイス種別に該当するターゲットデバイスに、トランザクションを中継することができる。
【0027】
第10の態様に係るステーションは、第1の態様に係るステーションにおいて、前記デバイスハンドル制御部は、前記他のローカルネットワークからのコマンドを前記デバイスハンドル取得要求として受信し、前記コマンドに対するレスポンスを前記デバイスハンドル取得応答として前記他のローカルネットワークに送信し、前記トランザクション中継部は、前記コマンドと前記レスポンスのハンドシェークによって確定された前記他のローカルネットワークとのデータ転送を前記ターゲットデバイスに中継するとしてもよい。
【0028】
これによれば、ステーションは、他のローカルネットワークとの間で、専用のデバイスハンドル取得要求または専用のデバイス取得応答を交換する必要がなく、ステーションと他のローカルネットワークとの間の通信量を削減することができる。
【0029】
第11の態様に係るステーションは、第10の態様に係るステーションにおいて、前記コマンド、前記レスポンス及び前記データ転送に用いられる全てのパケットは、それらを対応付けるタグIDを含み、前記デバイスハンドル制御部は、前記コマンドにおける前記タグIDを前記デバイスハンドル番号として受信するとしてもよい。
【0030】
これによれば、ステーションは、コマンドにおいてデバイスハンドル番号のための追加フィールドを処理する必要が無くなる。
【0031】
第12の態様に係るステーションは、第2の態様に係るステーションにおいて、前記ステーションは、前記ローカルネットワークに接続されたメモリデバイスとしての機能を果たすためのメモリ部をさらに備え、前記構成情報共有部は、前記ホストとの間で前記ステーションとしての構成情報と前記メモリデバイスとしての構成情報を共有し、前記ターゲットデバイスがメモリデバイスとしての前記ステーションである場合、前記トランザクション中継部は前記メモリデバイスとしての構成情報に基づいて前記トランザクションを前記メモリ部に中継するとしてもよい。
【0032】
これによれば、ステーションは、自ステーションに統合したメモリ部を、ターゲットデバイスとして、他のローカルネットワークとの間のトランザクションを、中継することができる。
【0033】
本発明の第1の態様に係るターゲット装置は、ホストとステーションを含む1以上のデバイスとを含むローカルネットワークを有し、前記ステーションを介してイニシエータ装置との通信を行うターゲット装置であって、前記ホストは、前記ステーションとの間で前記ローカルネットワークにおける当該ステーションの構成情報を共有し、前記デバイスのそれぞれは、前記ホストとの間で前記ローカルネットワークにおける自デバイスの構成情報を共有する構成情報共有部を備え、前記ステーションとしての前記デバイスは、更に、前記イニシエータ装置から受信したデバイスハンドル取得要求に応じて、前記ローカルネットワーク内のターゲットデバイスの構成情報を前記ホストから取得し、前記デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記イニシエータ装置に返信するデバイスハンドル制御部と、前記イニシエータ装置から受信したコマンドと当該コマンドで指定されたトランザクションを前記ターゲットデバイスに中継するトランザクション中継部と、を備え、前記トランザクション中継部は、前記デバイスハンドル制御部で取得された前記ターゲットデバイスの構成情報に基づいて、前記ホストを介さずに前記トランザクションを中継する。
【0034】
これによれば、ステーションは、ホストを介することなくイニシエータ装置とターゲットデバイスとの間のトランザクションを中継することができ、ホストを介したトランザクションの中継に比べて通信速度の向上が図られる。
【0035】
第2の態様に係るターゲット装置は、第1の態様に係るターゲット装置において、前記構成情報は最大バッファサイズと最大バースト転送サイズを含み、前記ホストは、前記ステーションのバッファサイズを取得し、当該バッファサイズを越えない範囲で前記デバイスそれぞれとの間の通信に用いる最大バースト転送サイズを決定するとしてもよい。
【0036】
これによれば、ステーションは、イニシエータ装置とターゲットデバイスとの間でトランザクションを中継する際に、ステーションとターゲットデバイスとの間でのバッファオーバーフローの発生を防ぐことができる。
【0037】
第3の態様に係るターゲット装置は、第1の態様に係るターゲット装置において、前記ステーションは、さらに構成情報管理テーブルを含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求の受信を示すデバイスハンドル取得要求通知を前記ホストに対して送信して前記ホストから前記ターゲットデバイスの構成情報を取得し、取得した前記ターゲットデバイスの構成情報を前記構成情報管理テーブルに保持し、前記デバイスハンドル取得応答は、前記ターゲットデバイスの構成情報の取得の成否を示す結果フラグを含むとしてもよい。
【0038】
これによれば、ステーションは、トランザクションの中継に必要なターゲットデバイスの構成情報をホストから取得することができる。また、イニシエータ装置は、デバイスハンドル取得応答に含まれる結果フラグから、イニシエータ装置とターゲットデバイスとの論理的な接続の成否を確認することができる。
【0039】
第4の態様に係るターゲット装置は、第3の態様に係るターゲット装置において、前記デバイスハンドル制御部は、さらに、前記イニシエータ装置から受信したデバイスハンドル削除要求に応じて、当該デバイスハンドル削除要求の受信を示すデバイスハンドル削除要求通知を前記ホストに対して送信して前記構成情報管理テーブルに保持した前記ターゲットデバイスの構成情報の無効化を行い、前記デバイスハンドル削除要求に対するデバイスハンドル削除応答を前記イニシエータ装置に返信するとしてもよい。
【0040】
これによれば、ターゲット装置は、イニシエータ装置とローカルネットワークに含まれるターゲットデバイスとの間の論理的な接続を切断することができる。
【0041】
第5の態様に係るターゲット装置は、第4の態様に係るターゲット装置において、前記ホストは、前記デバイスハンドル取得要求通知に応じて、前記ローカルネットワークにおける前記ターゲットデバイスへのコマンド送信権を前記ステーションに委譲し、前記デバイスハンドル削除要求通知に応じて、前記コマンド送信権を前記ステーションから取り戻すとしてもよい。
【0042】
これによれば、ターゲット装置は、ホストとホストを代替したステーションによる、ターゲットデバイスへのアクセス競合を防ぐことができる。
【0043】
第6の態様に係るターゲット装置は、第5の態様に係るターゲット装置において、前記ホストは、前記コマンド送信権を前記ステーションに移譲するため、ハブで構成された前記ローカルネットワークにおけるホスト用ポートをステーション用ポートと切替え、前記ステーションから前記コマンド送信権を取り戻すため、前記ハブのポートを元に戻すとしてもよい。
【0044】
これによれば、ローカルネットワークがハブで構成される場合も、ステーションは、物理的にホストを代替することができる。
【0045】
第7の態様に係るターゲット装置は、第3の態様に係るターゲット装置において、前記デバイスハンドル取得要求及び前記デバイスハンドル取得要求通知は、前記ターゲットデバイスを識別するためのデバイスハンドル番号を含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記ホストから受け取った前記デバイスハンドル番号に対応する前記ターゲットデバイスの構成情報を前記デバイスハンドル番号に関連付けて前記構成情報管理テーブルに保持するとしてもよい。
【0046】
これによれば、ターゲット装置は、イニシエータ装置との間でデバイスハンドル番号によってターゲットデバイスを識別できる。
【0047】
第8の態様に係るターゲット装置は、第7の態様に係るターゲット装置において、前記デバイスハンドル制御部は、受信した前記デバイスハンドル取得要求に含まれる前記デバイスハンドル番号に関連付けられた前記ターゲットデバイスの構成情報が前記構成情報管理テーブルに保持されていない場合にのみ、前記デバイスハンドル取得要求通知を前記ホストに送信するとしてもよい。
【0048】
これによれば、ステーションは、ホストに対して行うデバイスハンドル取得要求通知の頻度を削減することができる。
【0049】
第9の態様に係るターゲット装置は、第3の態様に係るターゲット装置において、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記ホストから前記ターゲットデバイスグループの各デバイスの構成情報を一括取得し、一括取得した前記ターゲットデバイスグループの前記各デバイスの前記構成情報を前記構成情報管理テーブルに保持するとしてもよい。
【0050】
これによれば、ステーションは、トランザクションの中継に先立って、ターゲットデバイスグループの各デバイスの構成情報を、一括取得しておくことができる。
【0051】
第10の態様に係るターゲット装置は、第9の態様に係るターゲット装置において、前記デバイスハンドル取得応答は、前記ターゲットデバイスグループの前記各デバイスを特定する情報を含むとしてもよい。
【0052】
これによれば、ターゲット装置は、デバイスハンドル取得要求に対するデバイスハンドル取得応答により、ターゲットデバイスグループの各デバイスを特定する情報を、イニシエータ装置に通知することができる。
【0053】
第11の態様に係るターゲット装置は、第10の態様に係るターゲット装置において、前記デバイスハンドル取得応答は、更に、前記ターゲットデバイスグループの前記各デバイスのデバイス種別を識別するためのデバイス種別コードを含むとしてもよい。
【0054】
これによれば、ターゲット装置は、デバイスハンドル取得応答によりイニシエータ装置にターゲットデバイスグループの各デバイスのデバイス種別コードを通知することができる。これにより、イニシエータ装置は、デバイスハンドル取得応答によりターゲットデバイスグループの各デバイスのデバイス種別コードを確認することができる。
【0055】
第12の態様に係るターゲット装置は、第3の態様に係るターゲット装置において、前記デバイスハンドル取得要求及び前記デバイスハンドル取得要求通知は、デバイス種別を識別するためのデバイス種別コードを含み、前記デバイスハンドル制御部は、前記デバイスハンドル取得要求通知に応じて前記デバイス種別コードに該当する各デバイスの構成情報を前記ホストから取得し、取得した前記各デバイスの前記構成情報を前記構成情報管理テーブルに保持するとしてもよい。
【0056】
これによれば、ステーションは、イニシエータ装置によって指定されたデバイス種別に該当するターゲットデバイスに、トランザクションを中継することができる。
【0057】
第13の態様に係るターゲット装置は、第1の態様に係るターゲット装置において、前記デバイスハンドル制御部は、前記イニシエータ装置からのコマンドを前記デバイスハンドル取得要求として受信し、前記コマンドに対するレスポンスを前記デバイスハンドル取得応答として前記イニシエータ装置に送信し、前記トランザクション中継部は、前記コマンドと前記レスポンスのハンドシェークによって確定された前記イニシエータ装置とのデータ転送を前記ターゲットデバイスに中継するとしてもよい。
【0058】
これによれば、ターゲット装置は、イニシエータ装置との間で専用のデバイスハンドル取得要求や専用のデバイス取得応答を交換する必要がなくなるので、ターゲット装置とイニシエータ装置との間の通信量の削減を図ることができる。
【0059】
第14の態様に係るターゲット装置は、第13の態様に係るターゲット装置において、前記コマンド、前記レスポンス及び前記データ転送に用いられる全てのパケットは、それらを対応付けるタグIDを含み、前記デバイスハンドル制御部は、前記コマンドにおける前記タグIDを前記デバイスハンドル番号として受信するとしてもよい。
【0060】
これによれば、ターゲット装置は、コマンドあるいはレスポンスにおいて、デバイスハンドル番号のための追加フィールドを処理する必要が無くなる。
【0061】
第15の態様に係るターゲット装置は、第3の態様に係るターゲット装置において、前記ステーションは、前記ローカルネットワークに接続されたメモリデバイスとしての機能を果たすためのメモリ部をさらに備え、前記構成情報共有部は、前記ホストとの間で前記ステーションとしての構成情報と前記メモリデバイスとしての構成情報を共有し、前記ターゲットデバイスがメモリデバイスとしての前記ステーションである場合、前記トランザクション中継部が前記メモリデバイスとしての構成情報に基づいて前記トランザクションを前記メモリ部に中継するとしてもよい。
【0062】
これによれば、ステーションは、ステーションに統合したメモリ部をターゲットデバイスとして、イニシエータ装置との間のトランザクションを中継することができる。
【0063】
本発明の第1の態様に係るイニシエータ装置は、ホストとステーションを含むローカルネットワークを有し、前記ステーションを介してターゲット装置との通信を行うイニシエータ装置であって、前記ホストは、前記ステーションとの間で前記ローカルネットワークにおける当該ステーションの構成情報を共有し、前記ステーションは、前記ホストとの間で前記ローカルネットワークにおける自ステーションの構成情報を共有する構成情報共有部と、前記ターゲット装置に含まれるターゲットデバイスとの論理的な接続を確立するためのデバイスハンドル取得要求を前記ターゲット装置に送信し、当該デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記ターゲット装置から受信するデバイスハンドル制御部と、前記ホストが前記ターゲット装置に含まれる前記ターゲットデバイスとの通信のために送信したコマンドと当該コマンドで指定されたトランザクションを、前記ターゲット装置に中継するトランザクション中継部と、を備える。
【0064】
これによれば、イニシエータ装置は、ステーションがターゲットデバイスを代替し、ホストとターゲットデバイスとの間のトランザクションを中継できる。
【0065】
第2の態様に係るイニシエータ装置は、第1の態様に係るイニシエータ装置において、前記デバイスハンドル制御部は、前記ターゲット装置に含まれる前記ターゲットデバイスとの論理的な接続を切断するためのデバイスハンドル削除要求を前記ターゲット装置に送信し、当該デバイスハンドル削除要求に対する前記デバイスハンドル削除応答を前記ターゲット装置から受信するとしてもよい。
【0066】
これによれば、イニシエータ装置は、ターゲット装置に対して、ターゲットデバイスとの論理的な接続の切断を要求し、その切断を確認することができる。
【0067】
第3の態様に係るイニシエータ装置は、第1の態様に係るイニシエータ装置において、前記デバイスハンドル取得要求は、前記ターゲットデバイスを識別するためのデバイスハンドル番号を含み、前記デバイスハンドル取得応答は、前記ターゲットデバイスとの論理的な接続の成否を示す結果フラグを含み、前記ホストは、前記結果フラグが成功を示す場合にのみ前記コマンドを送信するとしてもよい。
【0068】
これによれば、イニシエータ装置は、ターゲット装置との間で、デバイスハンドル番号によってターゲットデバイスを識別できる。
【0069】
第4の態様に係るイニシエータ装置は、第1の態様に係るイニシエータ装置において、前記ホストは、前記デバイスハンドル取得要求としてコマンドを送信し、前記コマンドに対するレスポンスを前記デバイスハンドル取得応答として受信し、前記トランザクション中継部は、前記コマンドと前記レスポンスのハンドシェークによって確定されたデータ転送をターゲット装置に中継するとしてもよい。
【0070】
これによれば、イニシエータ装置は、ターゲット装置との間で専用のデバイスハンドル取得要求や専用のデバイス取得応答を交換する必要がなくなるので、イニシエータ装置とターゲット装置との間の通信量の削減を図ることができる。
【0071】
第5の態様に係るイニシエータ装置は、第4の態様に係るイニシエータ装置において、前記コマンド、前記レスポンス及び前記データ転送に用いられる全てのパケットは、それらを対応付けるタグIDを含み、前記デバイスハンドル制御部は、前記コマンドにおける前記タグIDを前記デバイスハンドル番号として送信するとしてもよい。
【0072】
これによれば、イニシエータ装置は、コマンドやレスポンスについて、デバイスハンドル番号のための追加フィールドを処理する必要が無くなる。
【0073】
本発明の第1の態様に係る通信システムは、第1のホストと第1のステーションを含む1以上の第1のデバイスとを含む第1のローカルネットワークを有するイニシエータ装置と、第2のホストと第2のステーションを含む1以上の第2のデバイスとを含む第2のローカルネットワークを有するターゲット装置とが、前記第1のステーションと前記第2のステーションとの間のステーション間ネットワークを介して接続された通信システムであって、前記第1のホストは、前記第1のローカルネットワークに接続された前記第1のステーションを含む各第1のデバイスとの間で構成情報を共有し、前記第1のステーションは、前記第1のホストとの間で前記第1のローカルネットワークにおける自ステーションの構成情報を共有する第1の構成情報共有部と、前記ターゲット装置に含まれるターゲットデバイスとの論理的な接続を確立するためのデバイスハンドル取得要求を前記ターゲット装置に送信し、当該デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記ターゲット装置から受信する第1のデバイスハンドル制御部と、前記第1のホストが前記ターゲット装置に含まれる前記ターゲットデバイスとの通信のために送信したコマンドと当該コマンドで指定されたトランザクションを、前記ターゲット装置に中継する第1のトランザクション中継部と、を備え、前記第2のホストは、前記第2のローカルネットワークに接続された前記第2のステーションを含む各第2のデバイスとの間で構成情報を共有し、前記第2のデバイスのそれぞれは、前記第2のホストとの間で前記ローカルネットワークにおける自デバイスの構成情報を共有する第2の構成情報共有部を備え、前記ステーションとしての前記第2のデバイスは、更に、前記イニシエータ装置から受信したデバイスハンドル取得要求に応じて、前記ローカルネットワーク内のターゲットデバイスの構成情報を前記ホストから取得し、前記デバイスハンドル取得要求に対するデバイスハンドル取得応答を前記イニシエータ装置に返信する第2のデバイスハンドル制御部と、前記イニシエータ装置から受信したコマンドと当該コマンドで指定されたトランザクションを前記ターゲットデバイスに中継する第2のトランザクション中継部と、を備え、前記第2のトランザクション中継部は、前記デバイスハンドル制御部で取得された前記ターゲットデバイスの構成情報に基づいて、前記ホストを介さずに前記トランザクションを中継する。
【0074】
これによれば、通信システムは、それぞれホストを有するイニシエータ装置とターゲット装置のローカルネットワーク間を接続し、それらネットワークを跨るデバイスとの間で透過的なトランザクションを実現することができる。
【0075】
本発明の第1の態様に係る通信方法は、第1のホストと第1のステーションを含む1以上の第1のデバイスとを含む第1のローカルネットワークを有するイニシエータ装置と、第2のホストと第2のステーションを含む1以上の第2のデバイスとを含む第2のローカルネットワークを有するターゲット装置とが、前記第1のステーションと前記第2のステーションとの間のステーション間ネットワークを介して接続された通信システムにおける通信方法であって、前記第1のホストと前記第1のローカルネットワークに接続された前記第1のステーションを含む各第1のデバイスとの間で構成情報を共有する第1の構成情報共有ステップと、前記第2のホストと前記第2のローカルネットワークに接続された前記第2のステーションを含む各第2のデバイスとの間で構成情報を共有する第2の構成情報共有ステップと、前記第1のホストが前記ターゲット装置にデバイスハンドル取得要求を送信し、前記第2のステーションが当該デバイスハンドル取得要求に応じて前記第2のホストから前記第2のローカルネットワークに含まれるターゲットデバイスの構成情報を取得し、前記デバイスハンドル取得要求に対するデバイスハンドル取得応答をイニシエータ装置に返信するデバイスハンドル制御ステップと、前記第1のホストが発行するコマンドと当該コマンドで指定されるトランザクションを、前記ターゲットデバイスに中継するトランザクション中継ステップとを有し、前記トランザクション中継ステップにおいて、前記第2のステーションは、前記デバイスハンドル制御ステップで取得した前記ターゲットデバイスの構成情報に基づいて、前記第2のホストを介さずに前記トランザクションを中継する。
【0076】
これによれば、通信方法は、それぞれホストを有するイニシエータ装置とターゲット装置のローカルネットワーク間を接続し、それらネットワークを跨るデバイスとの間で透過的なトランザクションを実現することができる。
【発明の効果】
【0077】
本発明は、リモートネットワークとローカルネットワーク内のデバイスとの間のトランザクションの通信速度を向上させることができる。
【発明を実施するための形態】
【0079】
以下、本発明の実施の形態について、図面を用いて説明する。
【0080】
≪実施の形態≫
1. 構成
1.1 システム構成
図1は、本発明の実施の形態に係る通信システムの全体構成を示す図である。
【0081】
図1に一例を示す通信システムは、イニシエータ装置100とターゲット装置140とを含む。イニシエータ装置100は、それぞれがローカルバス110に接続された第1のホスト101と、複数の第1のデバイス102〜103を含む第1のローカルネットワーク100Aを有する。また、ターゲット装置140は、イニシエータ装置100と同様の構成であり、それぞれがローカルバス150に接続された第2のホスト141と、複数の第2のデバイス142〜144とを含む第2のローカルネットワーク140Aを有する。
【0082】
ここで、各装置100、140におけるホスト101、141は、典型的にはそれぞれの装置100、140全体を制御するために、システムLSI(Large Scale Integration)で実現される。そして、それらに内蔵されたホストコントローラ120、160は、CPU(Central Processing Unit)121、161上で動作する、アプリケーションあるいはデバイスドライバ等のソフトウェアからの制御を受ける。そして、ホストコントローラ120、160は、CPU上で動作するソフトウェアにより、ローカルバス110、150を介して各デバイス102〜103、142〜144を制御する。各デバイス102〜103、142〜144は、各ローカルネットワーク100A、140Aのローカルバス110、150に接続するためのローカルネットワークインターフェース122a〜122b、162a〜162cを備えている。
【0083】
また、デバイス102、142は、ステーションと呼ばれる通信デバイスであり、ステーション間ネットワーク170を介してイニシエータ装置100とターゲット装置140とを接続する。そして、ステーションと呼ばれる通信デバイスであるデバイス102、142は、第1のローカルネットワーク100Aと第2のローカルネットワーク140Aとの間の通信を中継するために用いられる。ステーション間ネットワーク170は、例えば、背景技術に示したような、60GHz帯域のミリ波を利用する無線PANであり、各ステーション102、142のそれぞれが備える。ステーション間ネットワークインターフェース123、163は、その無線PANにおけるMAC層とPHY層で機能する。
【0084】
そして、その他のデバイス103、143〜144については、例えば、第2のデバイス143(第2のデバイス#2)のように、不揮発メモリモジュール164を内蔵したメモリデバイスなどである。
【0085】
1.2 ローカルネットワークのトポロジー
1.2.1 ローカルネットワークの論理トポロジー
図2(a)は、本実施の形態のローカルネットワーク(例えば、ローカルネットワーク100A、140A)の論理トポロジーを例示するブロック図である。
【0086】
ローカルネットワークの論理トポロジーは、
図2(a)に示すようなホスト(Host)を中心とするスター型であり、常にホスト主導で通信が行われる。例えば、ホスト200は、ローカルネットワークの初期化時に、各デバイス(Device)201−1〜201−Nに対してローカルネットワーク内のアドレスであるデバイスIDを割り当てる。そして、それ以降、ホスト200は、通信対象のデバイスのデバイスIDを宛先フィールドに埋め込んだコマンドを送信することで、通信対象のデバイスとの通信を開始する。ここで、ローカルネットワークにおいて、コマンドの送信権を有するのは、ホスト200のみである。このため、ホスト200は、ポーリングや割込みによって各デバイス201−1〜201−Nからの送信要求を検知し、それに応じてコマンドを送信する。
【0087】
1.2.2 ローカルネットワークの物理トポロジー
図2(b)、(c)は、本実施の形態のローカルネットワーク(例えば、ローカルネットワーク100A、140A)の物理トポロジーを例示するブロック図である。
【0088】
ローカルネットワークの物理トポロジーは、例えば、
図2(b)に示すようなハブ構成または
図2(c)に示すようなリング構成である。
図2(b)に示すハブ構成の場合、ホスト(Host)210から送信されたコマンドは、ハブ(Hub)212によって複数のデバイス(Device)211−1〜211−Nのうち、宛先フィールドに応じたデバイスに振り分けられる。また、
図2(c)に示すリング構成の場合、ホスト(Host)220から送信されたコマンドは、各デバイス(Device)221−1〜221−Nにおいて、宛先フィールドに応じて受信か中継の判断がなされる。
【0089】
1.3 第1のステーション102と第2のステーション142の詳細構成
1.3.1 第1のステーション102の構成
図3は、
図1のイニシエータ装置100に含まれる第1のステーション102の詳細構成を示す図である。
【0090】
図3に示す第1のステーション300(102)は、イニシエータ装置100内の第1のローカルネットワーク100Aのローカルバス310(110)に接続するための、ローカルネットワークインターフェース311(122a)を含む。また、第1のステーション300(102)は、ステーション間ネットワーク320(170)に接続するための、ステーション間ネットワークインターフェース321(123)を含む。また、第1のステーション300(102)は、それらローカルネットワークインターフェース311(122a)と、ステーション間ネットワークインターフェース321(123)とを制御するための制御部330を含む。
【0091】
1.3.2 第2のステーション142の構成
図4は、
図1のターゲット装置140に含まれる第2のステーション142の詳細構成を示す図である。
【0092】
図4に示す第2のステーション400(142)は、ターゲット装置140内の第2のローカルネットワーク140Aのローカルバス410(150)に接続するための、ローカルネットワークインターフェース411(162a)を含む。また、第2のステーション400(142)は、ステーション間ネットワーク420(170)に接続するための、ステーション間ネットワークインターフェース421(163)を含む。また、第2のステーション400(142)は、それらローカルネットワークインターフェース411(162a)と、ステーション間ネットワークインターフェース421(163)を制御するための制御部430を含む。
【0093】
1.3.3 第1のステーション300(102)の制御部330の構成
制御部330は、
図3に示すように、構成情報共有部331と、ステーション間ネットワーク初期化部332と、デバイスハンドル制御部333と、トランザクション中継部334とを備える。
【0094】
構成情報共有部331は、第1のローカルネットワーク100Aとの接続初期化時に、第1のホスト101との間で第1のローカルネットワーク100Aにおける自デバイスの構成情報を共有する。このため、構成情報共有部331は、各第1のデバイス102〜103において、共通で備えられている。
【0095】
ここで、構成情報とは、例えば、USBにおけるディスクリプタのようなデバイスの属性情報である。また、本実施の形態における構成情報は、
図5(a)に一例を示すデバイスの能力を示す能力フィールドと、
図5(b)に一例を示すデバイスのデバイスID及び通信パラメータを示す設定フィールドとを含む。なお、
図5(a)、(b)のSize(Byte)は、デバイス種別コードなどのデータサイズを示す。
【0096】
ここで、能力フィールドは、無線IOデバイス(ステーション)、汎用IOデバイス、メモリデバイスのようなデバイスの種別を示すデバイス種別コード(DeviceType)を含む。また、能力フィールドは、デバイスがサポートするプロトコルを示すデバイスプロトコルコード(DeviceProtocol)を含む。また、能力フィールドは、デバイスがホストとの間の通信で利用可能なバッファサイズを示す最大バッファサイズ(MaxBufferSize)を含む。
【0097】
設定フィールドは、ローカルネットワーク内のデバイスのアドレスを示すデバイスID(DeviceID)、ローカルネットワーク内で通信可能な最大パケットサイズ(MaxPacketSize)を含む。また、設定フィールドは、ローカルネットワーク内でバースト転送可能な最大パケット数を示す最大バースト転送数(MaxBurstNum)を含む。ここで、ホストとデバイスとの間での最大バースト転送サイズは、最大パケットサイズと最大バースト転送数の積で規定されることになる。
【0098】
構成情報共有部331は、第1のホスト101との間で
図5(a)、(b)に示すような構成情報を共有する。そして、第1のホスト101は、各第1のデバイス102〜103の構成情報共有部331と共有した構成情報をホストコントローラ120に保持する。
【0099】
ステーション間ネットワーク初期化部332は、ステーション間ネットワーク320(170)の初期化を行い、第1のステーション102と第2のステーション142との間の物理的な接続を確立する。
【0100】
ここで、ステーション間ネットワーク初期化部332は、ステーション間ネットワーク320(170)を形成する。このため、ステーション間ネットワーク初期化部332は、例えば、非特許文献2に示したIEEE802.11系規格と同様の手順によって、対向する第2のステーション142との間の無線接続(物理的な接続)を確立する。そのため、ステーション間ネットワーク初期化部332は、ステーション間ネットワークインターフェース321(123)を制御し、ビーコンフレームを周期的に送信させる。なお、ビーコンフレームは、無線接続を特定するSSID(Service Set Identifier)を含む。そして、ステーション間ネットワーク初期化部332は、対向する第2のステーション142からプローブ要求あるいはアソシエーション要求を受信する。そして、ステーション間ネットワーク初期化部332は、受信したプローブ要求あるいはアソシエーション要求に対する応答を行って、第1のステーション102と第2のステーション142との間の無線接続を確立する。
【0101】
デバイスハンドル制御部333は、第1のホスト101から送信されたデバイスハンドル取得要求を、第1のローカルネットワーク100Aのローカルバス310(110)経由で受信する。そして、デバイスハンドル制御部333は、受信したデバイスハンドル取得要求を、ステーション間ネットワーク320(170)経由でターゲット装置140に中継する。ここで、デバイスハンドル取得要求とは、第1のホスト101と、ターゲット装置140内の第2のローカルネットワーク140Aのターゲットデバイスとの間の論理的な接続を、確立するための制御パケットである。デバイスハンドル取得要求は、ターゲット装置140に含まれるターゲットデバイスを識別するためのデバイスハンドル番号を含む。そして、デバイスハンドル制御部333は、ターゲット装置140から送信されたデバイスハンドル取得応答を、ステーション間ネットワーク320(170)経由で受信する。そして、デバイスハンドル制御部333は、受信したデバイスハンドル取得応答を第1のローカルネットワーク100Aのローカルバス310(110)経由で、第1のホスト101に通知する。デバイスハンドル取得応答には、第1のホスト101とデバイスハンドル取得要求に対応付けられたターゲットデバイスとの間の論理的な接続の成否を、示す結果フラグが含まれるようにする。これにより、第1のホスト101は、その結果フラグによってターゲットデバイスとのリモートアクセスの開始を判断する。なお、この結果フラグは、別の言い方をすれば、第2のステーション142によるターゲットデバイスの構成情報の取得の成否を示す結果フラグ、あるいは、第2のホストによるターゲットデバイスの探索の成否を示す結果フラグである。
【0102】
また、デバイスハンドル制御部333は、第1のホスト101から送信されたデバイスハンドル削除要求を、第1のローカルネットワーク100Aのローカルバス310(110)経由で受信する。そして、デバイスハンドル制御部333は、受信したデバイスハンドル削除要求を、ステーション間ネットワーク320(170)経由でターゲット装置140に中継する。ここで、デバイスハンドル削除要求とは、第1のホスト101とデバイスハンドル取得要求に対応付けられ、ターゲットデバイスとの論理的な接続を切断するための制御パケットである。そして、デバイスハンドル制御部333は、ターゲット装置140から送信されたデバイスハンドル削除応答を、ステーション間ネットワーク320(170)経由で受信する。そして、デバイスハンドル制御部333は、デバイスハンドル取得応答の受信を第1のローカルネットワーク100Aのローカルバス310(110)経由で、第1のホスト101に通知する。
【0103】
トランザクション中継部334は、第1のホスト101から送信されたコマンドを、第1のローカルネットワーク100Aのローカルバス310(110)経由で受信する。そして、トランザクション中継部334は、受信した第1のホスト101から送信されたコマンドを、ステーション間ネットワーク320(170)経由でターゲット装置140に中継する。以降、トランザクション中継部334は、そのコマンドで指定されたトランザクションを、第1のローカルネットワーク100Aのローカルバス310(110)経由と、ステーション間ネットワーク320(170)経由とで、経由する。トランザクション中継部334は、ローカルバス310(110)と、ステーション間ネットワーク320(170)とで経由されたトランザクションを、第1のホスト101とターゲット装置140との間で中継する。
【0104】
1.3.4 第2のステーション400(142)の制御部430の構成
制御部430は、
図4に示すように、構成情報共有部431と、ステーション間ネットワーク初期化部432と、構成情報管理テーブル440を保持するデバイスハンドル制御部433と、トランザクション中継部434とを備える。
【0105】
構成情報共有部431は、第2のローカルネットワーク140Aとの接続初期化時に、第2のホスト141との間で第2のローカルネットワーク140Aにおける自デバイスの構成情報を共有する。このため、構成情報共有部431は、各第2のデバイス142〜144において、共通で備えられている。
【0106】
構成情報共有部431は、第2のホスト141との間で
図5(a)、(b)に示すような構成情報を共有する。そして、第2のホスト141は、各第2のデバイス142〜144の構成情報共有部431と共有した構成情報をホストコントローラ160に保持する。
【0107】
ステーション間ネットワーク初期化部432は、ステーション間ネットワーク420(170)の初期化を行い、第1のステーション102と第2のステーション142との間の物理的な接続を確立する。
【0108】
ここで、ステーション間ネットワーク初期化部432は、ステーション間ネットワーク420(170)を形成する。このため、ステーション間ネットワーク初期化部432は、例えば、非特許文献2に示したIEEE802.11系規格と同様の手順によって、対向する第1のステーション102との間の無線接続(物理的な接続)を確立する。そのため、ステーション間ネットワーク初期化部432は、ステーション間ネットワークインターフェース421(163)を制御し、対向する第1のステーション102から送信された無線接続を特定するSSIDを含むビーコンフレームを受信する。そして、ステーション間ネットワーク初期化部432は、第1のステーション102に対してプローブ要求あるいはアソシエーション要求を行う。そして、ステーション間ネットワーク初期化部432は、これらの要求に対する、第1のステーション102からプローブ応答あるいはアソシエーション応答を受信する。そして、ステーション間ネットワーク初期化部432は、第1のステーション102と第2のステーション142との間の無線接続を確立する。
【0109】
デバイスハンドル制御部433は、ステーション間ネットワーク420(170)経由でイニシエータ装置100からデバイスハンドル取得要求を受信する。そして、デバイスハンドル制御部433は、デバイスハンドル取得要求の受信を、第2のローカルネットワーク140Aのローカルバス410(150)経由で第2のホスト141に通知する。そして、デバイスハンドル制御部433は、それを受けた第2のホスト141から、第2のローカルネットワーク140Aのローカルバス410(150)に接続された、ターゲットデバイスの構成情報を取得する。なお、ターゲットデバイスとは、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するデバイスである。そして、デバイスハンドル制御部433は、取得したターゲットデバイスの構成情報を、構成情報管理テーブル440で保持する。それから、デバイスハンドル制御部433は、第2のホスト141から第2のローカルネットワーク140Aのローカルバス410(150)経由で、デバイスハンドル取得応答を受信する。そして、デバイスハンドル制御部433は、受信したデバイスハンドル取得応答を、ステーション間ネットワーク420(170)経由でイニシエータ装置100に返信する。ここで、デバイスハンドル取得応答には、構成情報管理テーブル440において、デバイスハンドル取得要求に対応付けられたターゲットデバイスの構成情報が正しく保持されているかを示す結果フラグを含む。なお、この結果フラグは、別の言い方をすれば、第1のホスト101と、デバイスハンドル取得要求に対応付けられたターゲットデバイスとの間で、論理的な接続の成否を示す結果フラグである。
【0110】
また、デバイスハンドル制御部433は、ステーション間ネットワーク420(170)経由でイニシエータ装置100からデバイスハンドル削除要求を受信する。そして、デバイスハンドル制御部433は、デバイスハンドル削除要求の受信を、第2のローカルネットワーク140Aのローカルバス410(150)経由で第2のホスト141に通知する。そして、デバイスハンドル制御部433は、構成情報管理テーブル440において保持したターゲットデバイスの構成情報の無効化を行う。デバイスハンドル制御部433は、第2のホスト141から第2のローカルネットワーク140Aのローカルバス410(150)経由で、デバイスハンドル削除応答を受信する。そして、デバイスハンドル制御部433は、受信したデバイスハンドル削除応答を、ステーション間ネットワーク420(170)経由でイニシエータ装置100に返信する。
【0111】
トランザクション中継部434は、ステーション間ネットワーク420(170)経由でイニシエータ装置100からコマンドを受信する。そして、トランザクション中継部434は、受信したコマンドを第2のローカルネットワーク140Aのローカルバス410(150)経由で、第2のローカルネットワーク140A内のターゲットデバイスに中継する。以降、トランザクション中継部434は、そのコマンドで指定されたトランザクションを、ステーション間ネットワーク420(170)経由と、第2のローカルネットワーク140Aのローカルバス410(150)経由とで、経由する。トランザクション中継部434は、ステーション間ネットワーク420(170)と、ローカルバス410(150)とで経由されたトランザクションを、イニシエータ装置100とターゲットデバイスとの間で中継する。
【0112】
1.4 ローカルネットワークのプロトコル
ここでは、
図1に示したイニシエータ装置100に含まれる第1のローカルネットワーク100Aと、ターゲット装置140に含まれる第2のローカルネットワーク140Aのプロトコルについて、
図6から
図8を参照しながら説明する。ここで、第1のローカルネットワーク100Aと第2のローカルネットワーク140Aのプロトコルは、同一である必要が無い。しかし、プロトコルは、ステーション間ネットワーク170におけるプロトコル変換の負荷を削減するため、同一のプロトコルであることが望ましい。そこで、本実施の形態における第1のローカルネットワーク100Aのプロトコルは、第2のローカルネットワーク140Aのプロトコルと同一であるとして説明する。
【0113】
1.4.1 パケットフォーマットの基本構成
図6は、ローカルネットワーク100A、140Aのプロトコルで規定されるパケットフォーマットの基本構成を示す図である。
【0114】
図6に示すパケットフォーマットの基本構成は、ヘッダ(Header)600と、アーギュメント(Argument)601と、ペイロード(Payload)602とを含む。そして、ヘッダ600は、パケットタイプ(TYPE)610と、宛先ID(DID:Destination ID)611と、送信元ID(SID:Source ID)612と、タグID(TID:Tag ID)613とを含む。なお、パケットによってはアーギュメントあるいはペイロードが存在しないこともあるので、
図6では、[Argument]あるいは[Payload]として表記している。
【0115】
パケットタイプ610は、パケットの詳細種別を示す。本実施の形態において、パケットの詳細種別は、以下のものが定義されている。パケットの詳細種別は、例えば、レジスタアクセスに用いられる制御コマンド(CCMD:Control Command)、バルクデータ転送に用いられるデータコマンド(DCMD:Data Command)である。また、パケットの詳細種別は、例えば、制御コマンドやデータコマンドに対する応答であるレスポンス(RES:Response)、データコマンドに伴って転送されるデータ(DATA)である。また、パケットの詳細種別は、例えば、状態通知等に用いられるメッセージ(MSG:Message)である。
【0116】
宛先ID611と送信元ID612は、それぞれパケットの宛先と送信元を示し、ホスト101、141のデバイスID、各デバイス102〜103、142〜144に割り当てられたデバイスIDにより指定する。ここで、ホスト101、141のデバイスIDは、常に“0”である。各デバイス102〜103、142〜144には、ローカルネットワーク100A、140Aそれぞれにおいて、“0”以外のユニークなデバイスIDが割り当てられる。そして、タグID613は、ホスト101、141から各デバイス102〜103、142〜144宛に発行されるコマンドと、それに伴って転送されるレスポンスあるいはデータとを対応付けるために用いられる。
【0117】
1.4.2 パケットの詳細フォーマット
ここでは、
図6のパケットタイプ610にて定義される各パケットの詳細フォーマットを
図7(a)〜(e)を参照しながら説明する。なお、
図7(a)〜(e)におけるヘッダ(Header)は、
図6で説明したヘッダ(Header)600に相当する。
【0118】
1.4.2.1 制御コマンド
図7(a)は、制御コマンドのパケットフォーマットの一例を示す図である。
【0119】
制御コマンドのアーギュメントは、リードかライトのアクセス種別を示すR/Wフラグ700と、制御データのサイズを示すペイロード長(PLEN:Payload Length)701と、制御データのアドレスを示すIOアドレス702とを含む。制御コマンドのペイロードは、R/Wフラグ700がライトに設定された場合にのみ、ペイロード長701で指定されたサイズの制御データ703が含まれる。なお、R/Wフラグ700がリードに設定された場合、制御データは、制御コマンドに対するレスポンスに含まれるため、制御コマンドには制御データは含まれない。なお、制御コマンドにペイロードが存在しないこともあるので、
図7(a)では、[Payload]として表記している。
【0120】
各デバイス102〜103、142〜144における構成情報は、IOアドレス702で指定可能なレジスタとして構成情報共有部331、431内に保持することで、ホスト101、141は制御コマンドによってそれらにアクセスできる。例えば、ホスト101、141は、R/Wフラグ700をリードに設定した制御コマンドによって、各デバイス102〜103、142〜144から能力フィールドの情報を読み出すことができる。また、ホスト101、141は、R/Wフラグ700をライトに設定した制御コマンドによって、各デバイス102〜103、142〜144の設定フィールドに情報を書き込むことができる。
【0121】
1.4.2.2 データコマンド
図7(b)は、データコマンドのパケットフォーマットの一例を示す図である。
【0122】
データコマンドのアーギュメントは、リードかライトのアクセス種別を示すR/Wフラグ710を含む。また、データコマンドのアーギュメントは、以降の拡張アーギュメントとして、データ転送の開始アドレスであるメモリアドレス711とデータ転送のトータルサイズを示す転送サイズ712を含む。
【0123】
1.4.2.3 レスポンス
図7(c)は、レスポンスのパケットフォーマットの一例を示す図である。
【0124】
レスポンスのアーギュメントは、制御コマンドあるいはデータコマンドが宛先ID611で指定されたデバイスにおいて、正しく受付けられたか否かを示すNACK(Negative Acknowledge)フラグ720を含む。レスポンスのペイロードは、制御コマンドのR/Wフラグ700がリードに設定されていた場合にのみ、その制御コマンドで読み出された制御データ721を含む。ただし、制御コマンドのR/Wフラグ700がライトに設定された場合は、上述したように制御データは制御コマンドに含まれるため、レスポンスには制御データは含まれない。なお、レスポンスにペイロードが存在しないこともあるので、
図7(c)では、[Payload]として表記している。
【0125】
1.4.2.4 データ
図7(d)は、データのパケットフォーマットの一例を示す図である。
【0126】
データパケットには、アーギュメントが存在せず、ペイロードにはデータコマンドでアクセスされるデータを所定のブロックサイズで断片化したデータブロック730が含まれる。このデータブロック730の最大サイズは、
図5(b)に示す構成情報の設定フィールドに含まれる最大パケットサイズ(MaxPacketSize)で規定される。
【0127】
1.4.2.5 メッセージ
図7(e)は、メッセージのパケットフォーマットの一例を示す図である。
【0128】
メッセージのアーギュメントは、メッセージの分類を示すメッセージカテゴリ(CTG)740と、メッセージカテゴリ毎の付加情報を示すメッセージコード(CODE)741とを含む。
【0129】
メッセージカテゴリ740は、例えば、フロー制御要求(FC_REQ:Flow Control Request)、フロー制御応答(FC_ACK:Flow Control Acknowledge)を含む。また、メッセージカテゴリ740は、ステータス(STAT:Status)、デバイスハンドル取得要求(GET_DH_REQ:Get Device Handle Request)を含む。また、メッセージカテゴリ740は、デバイスハンドル取得応答(GET_DH_ACK:Get Device Handle Acknowledge)を含む。また、メッセージカテゴリ740は、デバイスハンドル削除要求(DEL_DH_REQ:Delete Device Handle Request)を含む。また、メッセージカテゴリ740は、デバイスハンドル削除応答(DEL_DH_ACK:Delete Device Handle Acknowledge)、及び割込み(INT:Interrupt)を含む。
【0130】
フロー制御要求とフロー制御応答は、データ転送に先立って送信元と宛先との間で交換されるフロー制御情報である。ステータスは、データ転送後にデータ転送の宛先から送信元に受信エラーを通知するために用いられる。デバイスハンドル取得要求及びデバイスハンドル取得応答、並びに、デバイスハンドル削除要求及びデバイスハンドル削除応答は、デバイスハンドル制御のために用いられる。割込みは、デバイスからホストに非同期の状態通知を行うために用いられる。
【0131】
ここで、メッセージカテゴリ740がステータスを示す場合、メッセージコード741には、受信エラーの有無が含まれる。また、デバイスハンドル取得要求におけるメッセージコード741には、ターゲットデバイスを識別するためのデバイスハンドル番号が含まれる。また、デバイスハンドル取得応答とデバイスハンドル削除応答におけるメッセージコード741には、それぞれデバイスハンドル取得要求とデバイスハンドル削除要求の成否を示す結果フラグが含まれる。
【0132】
1.4.3 トランザクション
図8は、ローカルネットワーク100A、140Aのプロトコルで規定されるトランザクションの一例を示す動作シーケンスを示す図である。
【0133】
1.4.3.1 制御トランザクション
制御トランザクションでは、ホスト(Host)800がデバイス(Device)801宛に制御コマンド(CCMD)を発行し、デバイス801がこの制御コマンドに対するレスポンス(RES)をホスト800宛に返信する。これにより、制御トランザクションが完了する。ここで、ホスト800がデバイス801にライトする制御データは、制御コマンド内に含まれる。一方、ホスト800がデバイス801からリードする制御データは、レスポンス内に含まれる。
【0134】
1.4.3.2 データリードトランザクション
データリードトランザクションにおいて、ホスト800は、デバイス801宛にR/Wフラグ710がリードに設定されたデータコマンド(DCMD)を発行する。そして、デバイス801は、このデータコマンドに対するレスポンス(RES)を、ホスト800宛に返信する。これにより、データコマンドによって指定されたデータ転送が、開始される。
【0135】
本実施の形態におけるリードに係るデータ転送及びライトに係るデータ転送は、それぞれ、
図7(b)に示したデータコマンドの転送サイズ712で、指定されたサイズのデータを転送する。本実施の形態におけるデータ転送は、指定されたサイズのデータを、デバイス801の
図5(b)に示した構成情報である最大パケットサイズ(MaxPacketSize)毎に分割して、データパケットを生成する。そして、本実施の形態におけるデータ転送は、生成されたそれらデータパケットを、所定数束ねたバースト転送単位で転送する。ここで、バースト転送に含めることができる最大パケット数は、
図5(b)に示す構成情報である最大バースト転送数(MaxBurstNum)によって規定される。
【0136】
バースト転送において、データの送信元となるデバイス801は、データの宛先となるホスト800宛にフロー制御要求(FC_REQ)を発行する。そして、バースト転送において、ホスト800は、このフロー制御要求に対するフロー制御応答(FC_ACK)をデバイス801宛に返信する。これによって、ホスト800とデバイス801は互いのバッファ状態を通知し合ってから、デバイス801は、ホスト800に対してデータ(DATA)の転送を開始する。そして、データの転送完了後、データの宛先であったホスト800は、データ転送の受信結果をメッセージコード741に含めたステータス(STAT)を、デバイス801宛に発行する。デバイス801は、ステータスを受信し、そのメッセージコード741の内容から受信結果を知る。データリードトランザクションは、フロー制御要求からステータスまでの一連のバースト転送を、転送サイズ712で指定したサイズ分繰り返すことで完了する。
【0137】
1.4.3.3 データライトトランザクション
データライトトランザクションにおいて、ホスト800は、デバイス801宛にR/Wフラグ710がライトに設定されたデータコマンド(DCMD)を発行する。そして、デバイス801は、このデータコマンドに対するレスポンス(RES)を、ホスト800宛に返信する。これにより、データコマンドによって指定されたデータ転送が、開始される。
【0138】
バースト転送において、データの送信元となるホスト800は、データの宛先となるデバイス801宛にフロー制御要求(FC_REQ)を発行する。そして、バースト転送において、デバイス801は、このフロー制御要求に対するフロー制御応答(FC_REQ)をホスト800宛に返信する。これによって、ホスト800とデバイス801は互いのバッファ状態を通知し合ってから、ホスト800は、デバイス801に対してデータ(DATA)の転送を開始する。そして、データの転送完了後、データの宛先であったデバイス801は、データ転送の受信結果をメッセージコード741に含めたステータス(STAT)を、ホスト800宛に発行する。ホスト800は、ステータスを受信し、そのメッセージコード741の内容から受信結果を知る。データライトトランザクションは、フロー制御要求からステータスまでの一連のバースト転送を、転送サイズ712で指定したサイズ分繰り返すことで完了する。
【0139】
なお、本実施の形態あるいは後述する変形例などは、上記のパケットフォーマットとトランザクションで説明したプロトコルに限定されず、異なる構成が考えられる。例えば、ローカルネットワークがUSBであった場合、制御コマンドあるいはデータコマンドは、USBにおけるトークンパケットに対応し、レスポンスあるいはステータスは、USBにおけるハンドシェークパケットに対応する。また、制御トランザクションは、USBにおけるコントロール転送に対応し、データトランザクションは、USBにおけるバルク転送に対応する。
【0140】
2. 動作
以下、本実施の形態に係る通信システムの動作について、
図1から
図5に示した構成、及び
図6から
図8に示したローカルネットワークのプロトコルを参照しながら説明する。
【0141】
2.1 イニシエータ装置100の動作シーケンス
図9は、
図1のイニシエータ装置100の動作シーケンスを示す図である。
【0142】
2.1.1 構成情報共有ステップS101
第1のホスト101は、第1のローカルネットワーク100Aのローカルバス110に接続された第1のステーション102を含む、各第1のデバイス102〜103との間で構成情報の共有を行う。そして、第1のホスト101は、各第1のデバイス102〜103の構成情報をホストコントローラ120に保持する。一方、各第1のデバイス102〜103は、自デバイスの構成情報を構成情報共有部331に保持する。なお、
図9では、第1のホスト101と第1のデバイス103との間での構成情報の共有の図示を省略している。
【0143】
以下に、第1のホスト101と構成情報共有部331との間で行われる
図5(a)、(b)に示すような構成情報の共有の手順の一例を記載する。
【0144】
構成情報共有部331は、第1のホスト101との間で
図5(a)、(b)に示す構成情報を共有するため、自デバイスの構成情報のうち能力フィールの情報を前もって(例えば、デバイス出荷時に)保持しておく。
【0145】
第1のホスト101は、第1のローカルネットワーク100Aの初期化時に、ローカルバス110に接続された各第1のデバイス102〜103に、第1のローカルネットワーク100A内でユニークなデバイスIDを割り当る。そして、第1のホスト101は、各第1のデバイス102〜103のデバイスIDをホストコントローラ120に保持する。そして、第1のホスト101は、各デバイス102〜103の構成情報共有部331の設定フィールドの該当箇所に、構成情報共有部331を有するデバイスに割り当てたデバイスIDを設定する。
【0146】
構成情報共有部331は自身が保持している能力フィールドの情報を第1のホスト101に開示する。そして、構成情報共有部331は、それに応じて第1のホスト101から取得した通信パラメータ(最大パケットサイズと最大バースト転送数)を、設定フィールドの該当箇所に保持する。ここで、第1のホスト101は、各第1のデバイス102〜103について、デバイスの構成情報共有部331から能力フィールドの情報(デバイス種別コード、デバイスプロトコル、最大バッファサイズ)を取得する。そして、第1のホスト101は、取得した最大バッファサイズに収まる範囲内で、最大パケットサイズと最大バースト転送数を決定し、決定した最大パケットサイズと最大バースト転送数を構成情報共有部331の該当箇所に設定する。
【0147】
第1のホスト101は、各第1のデバイス102〜103の構成情報(各デバイス102〜103から取得した能力フィールドの情報と、各デバイス102〜103の設定フィールドに設定した情報)をホストコントローラ120に保持する。
【0148】
これにより、第1のホスト101は、第1のホスト101と各デバイス102〜103との間のバースト転送によるバッファオーバーフローを、避けることができる。
【0149】
2.1.2 ステーション間ネットワーク初期化ステップS102
第1のホスト101は、第1のステーション102を制御し、第1のステーション102はステーション間ネットワーク初期化部332によりステーション間ネットワーク170の初期化を行う。そして、第1のホスト101は、イニシエータ装置100とターゲット装置140との間の物理的な接続を確立する。
【0150】
2.1.3 デバイスハンドル取得制御ステップS103
第1のホスト101は、第1のステーション102宛に、デバイスハンドル番号を含むデバイスハンドル取得要求(GET_DH_REQ)#1を送信する。ここで、デバイスハンドル取得要求#1の宛先ID611と送信元ID612は、それぞれ第1のステーション102と第1のホスト101のデバイスIDである。第1のステーション102は、第1のローカルネットワーク100Aのローカルバス110経由でデバイスハンドル取得要求#1を受信する。そして、第1のステーション102は、受信したデバイスハンドル取得要求#1をデバイスハンドル制御部333によりステーション間ネットワーク170経由で、ターゲット装置140に中継する。
【0151】
なお、第1のホスト101がデバイスハンドル取得要求を発行し、第1のステーション102は、デバイスハンドル取得要求をターゲット装置140に中継する代わりに、例えば、次のようにしてもよい。第1のホスト101は、第1のステーション102に対して、例えば、制御コマンド(CCMD)を利用してデバイスハンドル取得要求の発行を指示する。そして、第2のステーション102は、この指示を受けて、デバイスハンドル制御部333によりデバイスハンドル取得要求を発行する。そして、第2のステーション102は、発行したデバイスハンドル取得要求をステーション間ネットワーク170経由で、ターゲット装置140に送信するようにしてもよい。
【0152】
そして、第1のステーション102は、ターゲット装置140から送信された上述した結果フラグを含むデバイスハンドル取得応答(GET_DH_ACK)#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル取得応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル取得要求#1の応答を、第1のローカルネットワーク100Aのローカルバス110経由で第1のホスト101へ返信する。具体的には、デバイスハンドル取得要求#1の応答は、宛先ID611と送信元ID612の書き換えにより得られた、デバイスハンドル取得応答(GET_DH_ACK)#1である。なお、デバイスハンドル取得応答#1は、デバイスハンドル取得応答の受信を示すデバイスハンドル取得応答通知に相当する。
【0153】
第1のホスト101は、デバイスハンドル取得応答#1を受信し、受信したデバイスハンドル取得応答#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の成否を確認する。そして、第1のホスト101は、結果フラグが成功を示す場合のみ、次のトランザクション実行ステップS104を実行する。なお、結果フラグが失敗を示す場合には、デバイスハンドル取得要求に含めるデバイスハンドル番号を変更して、再度デバイスハンドル取得制御ステップS103を実行するようにしてもよい。また、結果フラグが失敗を示す場合には、後述のステーション間ネットワーク接続解除ステップS106を実行するようにしてもよい。
【0154】
ここで、デバイスハンドル取得要求とデバイスハンドル取得応答は、例えば、
図7(e)に示すメッセージパケットを用いることができる。この場合、メッセージパケットのメッセージコード(CODE)742には、イニシエータ装置100がターゲット装置140に含まれるターゲットデバイスを識別するためのデバイスハンドル番号を含める。デバイスハンドル番号は、例えば、ターゲット装置140に含まれる第2のローカルネットワーク140Aの構成情報として、第2のデバイス142〜144それぞれに割り当てられたデバイスIDを指定する。そして、第1のホスト101は、メッセージコード(CODE)742に含まれる結果フラグによって、デバイスハンドル取得要求で指定したデバイスハンドル番号に該当するターゲットデバイスの有無を確認することができる。なお、デバイスハンドル番号は、ここではデバイスIDである。また、デバイスハンドル番号は、上記のように第2のデバイス142〜144のデバイスIDを直接用いる必要はない。つまり、デバイスハンドル番号は、ターゲット装置140において、デバイスハンドル取得要求に含まれるデバイスハンドル番号と、ターゲットデバイスのデバイスIDとの間が対応付けて管理されていれば良い。
【0155】
2.1.4 トランザクション実行ステップS104
第1のホスト101は、デバイスハンドル取得制御ステップS103において、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続を確認する。そして、第1のホスト101は、論理的な接続を確認すると、第1のステーション102との間で
図8に示したようなトランザクションの実行を開始する。そして、第1のステーション102は、トランザクション中継部334により、そのトランザクションをステーション間ネットワーク170経由でターゲット装置140に中継する。そして、第1のホスト101は、接続先のターゲットデバイスを切替えて通信を継続する場合、再びデバイスハンドル取得要求ステップS103に戻る。一方、通信を完了する場合、第1のホスト101は、次のデバイスハンドル削除制御ステップS105に移行する。
【0156】
2.1.5 デバイスハンドル削除制御ステップS105
第1のホスト101は、第1のステーション102宛に、デバイスハンドル削除要求(DEL_DH_REQ)#1を送信する。ここで、デバイスハンドル削除要求#1の宛先ID611と送信元ID612は、それぞれ第1のステーション102と第1のホスト101のデバイスIDである。第1のステーション102は、第1のローカルネットワーク100Aのローカルバス110経由でデバイスハンドル削除要求#1を受信する。そして、第1のステーション102は、受信したデバイスハンドル削除要求#1を、デバイスハンドル制御部333によりステーション間ネットワーク170経由でターゲット装置140に中継する。
【0157】
なお、第1のホスト101がデバイスハンドル削除要求を発行し、第1のステーション102は、デバイスハンドル削除要求をターゲット装置140に中継する代わりに、例えば、次のようにしてもよい。第1のホスト101は、第1のステーション102に対して、例えば制御コマンド(CCMD)を利用してデバイスハンドル削除要求の発行を指示する。そして、第2のステーション102は、この指示を受けてデバイスハンドル制御部333によりデバイスハンドル削除要求を発行する。そして、第2のステーション102は、発行したデバイスハンドル削除要求を、ステーション間ネットワーク170経由でターゲット装置140に送信するようにしてもよい。
【0158】
そして、第1のステーション102は、ターゲット装置140から送信された上述した結果フラグを含むデバイスハンドル削除応答(DEL_DH_ACK)#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル削除応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル削除要求#1の応答を、第1のローカルネットワーク100Aのローカルバス110経由で第1のホスト101へ返信する。具体的には、デバイスハンドル削除要求#1の応答は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル削除応答(DEL_DH_ACK)#1である。なお、デバイスハンドル削除応答#1は、デバイスハンドル削除応答の受信を示すデバイスハンドル取得応答通知に相当する。
【0159】
第1のホスト101は、デバイスハンドル削除応答#1を受信し、受信したデバイスハンドル削除応答#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の解除の成否を確認する。そして、第1のホスト101は、結果フラグが成功を示す場合のみ、次のステーション間ネットワーク接続解除ステップS106を実行する。
【0160】
なお、上記のデバイスハンドル削除要求とデバイスハンドル削除応答には、デバイスハンドル番号を含める必要が無く、それらによって第1のホスト101と全てのターゲットデバイスとの間の論理的な接続が解除されれば良い。
【0161】
2.1.6 ステーション間ネットワーク接続解除ステップS106
第1のホスト101は第1のステーション102を制御し、第1のステーション102はイニシエータ装置100と、ターゲット装置140との間のステーション間ネットワーク170による物理的な接続を解除する。
【0162】
2.2 ターゲット装置140の動作シーケンス
図10〜
図11は
図1のターゲット装置140の動作シーケンスを示す図である。なお、
図10〜11の動作シーケンスでは、第2のデバイス143(第2のデバイス#2)が、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するデバイスであるとして記載する。
【0163】
2.2.1 構成情報共有ステップS301
第2のホスト141は、第2のローカルネットワーク140Aのローカルバス150に接続された第2のステーション142を含む、各第2のデバイス142〜144との間で構成情報の共有を行う。そして、第2のホスト141は、各第2のデバイス142〜144の構成情報をホストコントローラ160に保持する。一方、各第2のデバイス142〜144は、自デバイスの構成情報を構成情報共有部431に保持する。なお、
図10では、第2のホスト141と第2のデバイス144との間での構成情報の共有の図示を省略している。
【0164】
以下に、第2のホスト141と構成情報共有部431との間で行われる
図5(a)、(b)に示すような構成情報の共有の手順の一例を記載する。
【0165】
構成情報共有部431は、第2のホスト141との間で
図5(a)、(b)に示す構成情報を共有するため、自デバイスの構成情報のうち能力フィールドの情報を前もって(例えば、デバイス出荷時に)保持しておく。
【0166】
第2のホスト141は、第2のローカルネットワーク140Aの初期化時に、ローカルバス150に接続された各第2のデバイス142〜144に、第2のローカルネットワーク140A内でユニークなデバイスIDを割り当る。そして、第2のホスト141は、各第2のデバイス142〜144のデバイスIDをホストコントローラ160に保持する。そして、第2のホスト141は、各第2のデバイス142〜144の構成情報共有部431の設定フィールドの該当箇所に、構成情報共有部431を有するデバイスに割り当てたデバイスIDを設定する。
【0167】
構成情報共有部431は、自身が保持している能力フィールドの情報を第2のホスト141に開示する。そして、構成情報共有部431は、それに応じて第2のホスト141から取得した通信パラメータ(最大パケットサイズと最大バースト転送サイズ)を、設定フィールドの該当箇所に保持する。ここで、第2のステーション142は、後述するトランザクション中継ステップS304において、第2のホスト141を代替する。そして、第2のステーション142は、ターゲットデバイスへのトランザクションを中継するため、第2のホスト141と同等以上のバッファを有する必要がある。そこで、第2のホスト141は、各第2のデバイス142〜144の構成情報共有部431から能力フィールドの情報(デバイス種別コード、デバイスプロトコル、最大バッファサイズ)を取得する。そして、第2のホスト141は、第2のステーション142を含む各第2のデバイス142〜144に対して、第2のステーション142から取得した最大バッファサイズに収まる範囲内で最大パケットサイズと最大バースト転送数を決定する。そして、第2のホスト141は、決定した最大パケットサイズと最大バースト転送数を、構成情報共有部431の該当箇所に設定する。
【0168】
第2のホスト141は、各第2のデバイス142〜144の構成情報を、ホストコントローラ160に保持する。各第2のデバイス142〜144の構成情報とは、各第2のデバイス142〜144から取得した能力フィールドの情報と、各第2のデバイス142〜144の設定フィールドに設定した情報である。
【0169】
これにより、第2のステーション142は、いずれのターゲットデバイスに対しても、最大パケットサイズと最大バースト転送数の積で規定されるバースト転送サイズ以上のバッファを有することになり、第2のホスト141の代替ができる。
【0170】
なお、第2のステーション142以外の第2のデバイス(第2のデバイス143〜144)に対して、第2のホスト141は、最大パケットサイズと最大バースト転送数を決定する。具体的には、第2のホスト141は、第2のステーション142から取得した最大バッファサイズと、このデバイスから取得した最大バッファサイズとの双方に収まる範囲内で最大パケットサイズと最大バースト転送数を決定する。そして、第2のホスト141は、決定した最大パケットサイズと最大バースト転送数を構成情報共有部431の設定フィールドの該当箇所に設定するとともに、ホストコントローラ160に保持するようにしてもよい。また、第2のステーション142以外の第2のデバイス(第2のデバイス143〜144)に対して、第2のホスト141は、このデバイスから取得した最大バッファサイズの範囲内で、最大パケットサイズと最大バースト転送数を決定する。そして、第2のホスト141は、決定した最大パケットサイズと最大バースト転送数を構成情報共有部431の設定フィールドの該当箇所に設定するとともに、ホストコントローラ160に保持するようにしてもよい。
【0171】
2.2.2 ステーション間ネットワーク初期化ステップS302
第2のホスト141は、第2のステーション142を制御し、第2のステーション142はステーション間ネットワーク初期化部432によりステーション間ネットワーク170の初期化を行う。そして、第2のホスト141は、ターゲット装置140とイニシエータ装置100との間の物理的な接続を確立する。
【0172】
2.2.3 デバイスハンドル取得制御ステップS303
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100からデバイスハンドル番号を含むデバイスハンドル取得要求(GET_DH_REQ)#1を受信する。そして、第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、そのデバイスハンドル取得要求のデバイスハンドル番号に、対応するターゲットデバイスの構成情報が取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報が取得済みでないと判定されたものとする。そして、第2のステーション142は、デバイスハンドル制御部433により、デバイスハンドル取得要求#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル取得要求(GET_DH_REQ)#2を、第2のローカルネットワーク140Aのローカルバス150経由で第2のホスト141へ送信する。なお、デバイスハンドル取得要求#2は、デバイスハンドル取得要求の受信を示すデバイスハンドル取得要求通知に相当する。
【0173】
第2のホスト141は、第2のステーション142からデバイスハンドル取得要求#2を受信し、それに含まれるデバイスハンドル番号に対応するターゲットデバイスを、第2のデバイス142〜144の中から探索する。
【0174】
ここで、デバイスハンドル番号が第2のデバイス142〜144のデバイスIDを直接指定している場合、第2のホスト141は、そのデバイスIDに該当するデバイスをターゲットデバイスとして選択する。また、デバイスハンドル番号が第2のデバイス142〜144のデバイスIDを直接指定していない場合、第2のホスト141は、次の処理を実施する。第2のホスト141は、ホストコントローラ160において保持している第2のデバイス142〜144の構成情報に応じて、いずれかのデバイスをターゲットデバイスとして選択し、そのデバイスIDとデバイスハンドル番号を対応付ける。
【0175】
この動作シーケンスでは、第2のホスト141は、第2のデバイス143(第2のデバイス#2)をターゲットデバイスとして選択する。そして、第2のホスト141は、ホストコントローラ160で保持しているターゲットデバイス(第2のデバイス143)の構成情報を、第2のローカルネットワーク140Aのローカルバス150経由で第2のステーション142へ送信する。第2のステーション142は、そのターゲットデバイス143のデバイスIDを含む構成情報を受信する。そして、第2のステーション142は、デバイスハンドル制御部433により、受信したデバイスIDを含む構成情報を、デバイスハンドル取得要求のデバイスハンドル番号と対応付けて、構成情報管理テーブル440に保持する。
【0176】
第2のホスト141は、第2のステーション142宛に、デバイスハンドル取得要求#2の応答を、送信する。具体的には、デバイスハンドル取得要求#2の応答は、ターゲットデバイスの探索の成否を示す結果フラグ(ここでの結果フラグは成功を示す)を含む、デバイスハンドル取得応答(GET_DH_ACK)#2である。そして、第2のホスト141は、ターゲットデバイス宛のコマンド送信権を第2のステーション142に委譲し、以降は第2のローカルネットワーク140Aのローカルバス150経由でのターゲットデバイスへのコマンド送信を停止する。ここで、デバイスハンドル取得要求#2の宛先ID611と送信元ID612は、それぞれ第2のステーション142と第2のホスト141のデバイスIDである。第2のステーション142は、第2のローカルネットワーク140Aのローカルバス150経由でデバイスハンドル取得応答#2を受信するとともに、ターゲットデバイス宛のコマンド送信権を第2のホスト141から委譲される。そして、第2のステーション142は、デバイスハンドル制御部433により、第2のホスト141から受信したデバイスハンドル取得応答#2をステーション間ネットワーク170経由で、イニシエータ装置100に送信する。
【0177】
なお、第2のホスト141は、ターゲットデバイスの探索の成否を示す結果フラグを示すデバイスハンドル取得応答を発行する。そして、第2のステーション142は、デバイスハンドル取得応答をイニシエータ装置100に中継する。このようにする代わりに、例えば、次のようにしてもよい。第2のホスト141は、第2のステーション142に対して、例えば、制御コマンド(CCMD)を利用して、ターゲットデバイス探索の成否を示す結果フラグを含むデバイスハンドル取得応答の発行を指示する。そして、第2のステーション142は、この指示を受けて、デバイスハンドル制御部333により結果フラグを含むデバイスハンドル取得応答を発行する。そして、第2のステーション142は、発行したデバイスハンドル取得応答をステーション間ネットワーク170経由で、イニシエータ装置100に送信するようにしてもよい。
【0178】
なお、第2のステーション142は、デバイスハンドル取得済みかの判定において、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を取得済みと判定したとする。この場合、第2のステーション142は、第2のホスト141に対するデバイスハンドル取得要求通知から、第2のホスト141からのデバイスハンドル取得応答のステーション間ネットワーク170への送信までの処理を代わりにする。つまり、第2のステーション142は、自ら、成功を示す結果フラグを含むデバイスハンドル取得応答を、ステーション間ネットワーク170経由でイニシエータ装置100に送信することになる。
【0179】
2.2.4 トランザクション中継ステップS304
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100から受信したコマンドとそのコマンドで指定されたトランザクションを、トランザクション中継部434によりターゲットデバイスに中継する。このとき、第2のステーション142は、第2のホスト141を介さずにターゲットデバイスに中継する。ここで、第2のステーション142は、デバイスハンドル取得制御ステップS303において、ターゲットデバイスの構成情報(デバイスIDを含む)を取得しているものとする。第2のステーション142は、取得したターゲットデバイスの構成情報に応じて、イニシエータ装置100から受信したパケットの宛先ID611をターゲットデバイスのデバイスIDに書き換える。さらに、第2のステーション102は、その送信元ID612についても、第2のステーション142自身のデバイスIDに書き換える。
【0180】
以降、第2のステーション142は、イニシエータ装置100からの要求に応じて、トランザクションの中継を行う。そして、第2のステーション142は、再びイニシエータ装置100からのデバイスハンドル取得要求を受信すると、デバイスハンドル取得制御ステップS303に戻り、ターゲットデバイスを切替えながら通信を継続することになる。一方、ターゲット装置140は、イニシエータ装置100からデバイスハンドル削除要求(DEL_DH_REQ)を受信すると、デバイスハンドル削除制御ステップS305に移行する。つまり、ターゲット装置140は、イニシエータ装置100とターゲットデバイスとの間の論理的な接続を解除するため、デバイスハンドル削除制御ステップS305に移行する。
【0181】
2.2.5 デバイスハンドル削除制御ステップS305
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100からデバイスハンドル削除要求(DEL_DH_REQ)#1を受信する。第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、構成情報管理テーブル440にターゲットデバイスの構成情報が保持されているか判定する。この動作シーケンスでは、構成情報管理テーブル440にターゲットデバイスの構成情報が保持されていると判定される。そして、第2のステーション142は、デバイスハンドル制御部433により、デバイスハンドル削除要求#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル削除要求(DEL_DH_REQ)#2を、第2のローカルネットワーク140Aのローカルバス150経由で第2のホスト141へ送信する。なお、デバイスハンドル削除応答#2は、デバイスハンドル削除要求の受信を示すデバイスハンドル削除要求通知に相当する。
【0182】
第2のホスト141は、第2のステーション142からデバイスハンドル削除要求#2を受信し、デバイスハンドル削除要求に応じて第2のステーション142のデバイスハンドル制御部433を制御する。そして、第2のステーション142は、デバイスハンドル制御部433により構成情報管理テーブル440において保持しているターゲットデバイスの構成情報を無効化する。
【0183】
第2のホスト141は、第2のステーション142宛に、デバイスハンドル削除要求#2に対する応答を送信する。なお、デバイスハンドル削除要求#2に対する応答は、ターゲットデバイスの構成情報の無効化の成否を示す結果フラグ(ここでの結果フラグは成功を示す)を含む、デバイスハンドル削除応答(DEL_DH_ACK)#2である。ここで、デバイスハンドル削除要求#2の宛先ID611と送信元ID612は、それぞれ第2のステーション142と第2のホスト141のデバイスIDである。第2のステーション142は、第2のローカルネットワーク140Aのローカルバス150経由でデバイスハンドル削除応答#2を受信する。そして、第2のステーション142は、受信したデバイスハンドル削除応答#2を、デバイスハンドル制御部433により、ステーション間ネットワーク170経由でイニシエータ装置100に送信する。そして、第2のステーション142は、第2のホスト141から委譲されていたコマンド送信権を第1のホスト141に返還する。そして、第1のホスト141は、第2のステーション142からコマンド送信権の返還を受ける。以降、第2のステーション142は、第2のローカルネットワーク140Aのローカルバス150経由でのターゲットデバイスへのトランザクション中継を停止する。これにより、イニシエータ装置100とターゲットデバイスとは、論理的な接続が解除される。
【0184】
なお、第2のホスト141は、ターゲットデバイスの構成情報の無効化の成否を示す結果フラグを含むデバイスハンドル削除応答を発行する。そして、第2のステーション142は、デバイスハンドル削除応答をイニシエータ装置100に中継する。このようにする代わりに、例えば、次のようにしてもよい。第2のホスト141は、第2のステーション142に対して、例えば、制御コマンド(CCMD)を利用して、ターゲットデバイスの構成情報の無効化の成否を示す結果フラグを含むデバイスハンドル削除応答の発行を指示する。そして、第2のステーション142は、この指示を受けてデバイスハンドル制御部333により結果フラグを含むデバイスハンドル削除応答を発行する。そして、第2のステーション142は、発行したデバイスハンドル削除応答を、ステーション間ネットワーク170経由でイニシエータ装置100に送信するようにしてもよい。
【0185】
2.2.6 ステーション間ネットワーク接続解除ステップS306
第2のホスト141は、第2のステーション142を制御し、第2のステーション142はターゲット装置140と、イニシエータ装置100との間のステーション間ネットワーク170による物理的な接続を解除する。
【0186】
2.3 ターゲット装置140内の第2のステーション142の動作フロー
図12は、
図1のターゲット装置140内の第2のステーション142の動作フローを示すフローチャートである。
【0187】
第2のステーション142は、構成情報共有部431により、第2のホスト141との間で
図5(a)、(b)に示すような構成情報を共有する(ステップS401)。第2のステーション142は、第2のホスト141により制御され、ステーション間ネットワーク初期化部432により、ステーション間ネットワーク170の初期化を行う。そして、第2のステーション142は、ターゲット装置140とイニシエータ装置100との間の物理的な接続を確立する(ステップS402)。
【0188】
デバイスハンドル取得要求を受信した場合(S403:取得要求)、第2のステーション142は、ステップS404の処理に移行する。一方、デバイスハンドル削除要求を受信した場合(S403:削除要求)、第2のステーション142は、ステップS410の処理に移行する。
【0189】
第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照して、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応する構成情報を取得済みか判定する(ステップS404)。
【0190】
未取得の判定の場合(S404:未取得)、第2のステーション142は、ステップS405に移行する。第2のステーション142は、デバイスハンドル制御部433により、受信したデバイスハンドル取得要求の宛先ID611と送信元ID612とを、それぞれ第2のホスト141と第2のステーション142とのデバイスIDに書き換える。そして、第2のステーション142は、そのように書き換えたデバイスハンドル取得要求を、第2のホスト141に送信する(ステップS405)。
【0191】
第2のステーション142は、デバイスハンドル制御部433により、第2のホスト141からターゲットデバイスのデバイスIDを含む構成情報を受信する。そして、第2のステーション142は、受信したターゲットデバイスのデバイスIDを含む構成情報を、デバイスハンドル番号と対応付けて構成情報管理テーブル440に保持する(ステップS406)。
【0192】
第2のステーション142は、第2のホスト141からデバイスハンドル取得応答を受信する。そして、第2のステーション142は、受信したデバイスハンドル取得応答を、デバイスハンドル制御部433によりステーション間ネットワーク170経由でイニシエータ装置100へ送信する。そして、第2のステーション142は、第2のホスト141からコマンド送信権を譲り受ける(ステップS407)。
【0193】
取得済みの判定の場合(S404:取得済)、第2のステーション142は、ステップS408に移行する。第2のステーション142は、自ら、デバイスハンドル制御部433により、ターゲットデバイスの構成情報の取得の成功を示す結果フラグを含むデバイスハンドル取得応答を発行する。なお、ターゲットデバイスは、デバイスハンドル取得要求で要求されたデバイスハンドル番号に対応するものである。そして、第2のステーション142は、発行したデバイス取得応答を、ステーション間ネットワーク170経由で、イニシエータ装置100へ送信する(ステップS408)。
【0194】
第2のステーション142は、トランザクション中継部434により、トランザクションの中継処理を行う(ステップS409)。
【0195】
第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照して、構成情報管理テーブル440にターゲットデバイスの構成情報が保持されているか判定する(ステップS410)。つまり、第2のステーション142は、ターゲットデバイスの構成情報を、取得済みか否かを判定している。
【0196】
取得済みの判定の場合(S410:取得済)、第2のステーション142は、ステップS411に移行する。第2のステーション142は、デバイスハンドル制御部433により、受信したデバイスハンドル削除要求の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル削除要求を、第2のホスト141に送信する(ステップS411)。
【0197】
第2のステーション142は、デバイスハンドル削除要求を受けた第2のホスト141によって制御される。そして、第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440に保持しているターゲットデバイスの構成情報の無効化を行う(ステップS412)。
【0198】
第2のステーション142は、第2のホスト141からデバイスハンドル削除応答を受信する。そして、第2のステーション142は、受信したデバイスハンドル削除応答を、ステーション間ネットワーク170経由でイニシエータ装置100へ送信するとともに、第2のホスト141にコマンド送信権を返還する(ステップS413)。
【0199】
未取得の判定の場合(S410:未取得)、第2のステーション142は、デバイスハンドル制御部433により、自らデバイスハンドル削除応答を発行する。そして、第2のステーション142は、発行したデバイスハンドル削除応答を、ステーション間ネットワーク170経由でイニシエータ装置100へ送信する(ステップS414)。
【0200】
第2のステーション142は、第2のホスト141により制御され、ターゲット装置140とイニシエータ装置100との間のステーション間ネットワーク170の接続を、解除する(ステップS415)。
【0201】
2.4 ターゲット装置140内の第2のホスト141の動作フロー
図13は、
図1のターゲット装置140内の第2のホスト141の動作フローを示すフローチャートである。
【0202】
第2のホスト141は、各第2のデバイス142〜144との間で
図5(a)、(b)に示すような構成情報を共有し、各第2のデバイス142〜144と共有した構成情報をホストコントローラ160に保持する(ステップS451)。第2のホスト141は、第2のステーション142にステーション間ネットワーク170を初期化させるための制御を行う(ステップS452)。
【0203】
デバイスハンドル取得要求を受信した場合(S453:取得要求)、第2のホスト141は、ステップS454の処理に移行する。一方、デバイスハンドル削除要求を受信した場合(S453:削除要求)、第2のホスト141は、ステップS458の処理に移行する。
【0204】
第2のホスト141は、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスを、第2のデバイス142〜144の中から探索する(ステップS454)。
【0205】
デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスが、第2のデバイス142〜144の中に存在する場合(S454:該当あり)、第2のホスト141は、ステップS455に移行する。そして、第2のホスト141は、ホストコントローラ160において保持しているターゲットデバイスの構成情報を、第2のステーション142に送信する(ステップS455)。第2のホスト141は、ターゲットデバイスの探索の成功を示す結果フラグを含むデバイスハンドル取得応答を、第2のステーション142へ送信するとともに、コマンド送信権を第2のステーション142に渡す(ステップS456)。なお、デバイスハンドル取得応答は、宛先ID611と送信元ID612を、それぞれ第2のステーション142と第2のホスト141のデバイスIDとする。
【0206】
一方、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスが、第2のデバイス142〜144の中に存在しない場合(S454:該当無し)、第2のホスト141は、ステップS457に移行する。第2のホスト141は、ターゲットデバイスの探索の失敗を示す結果フラグを含むデバイスハンドル取得応答を、第2のステーション142へ送信する(ステップS457)。なお、デバイスハンドル取得応答は、宛先ID611と送信元ID612を、それぞれ第2のステーション142と第2のホスト141のデバイスIDとする。
【0207】
第2のホスト141は、第2のステーション142からのデバイスハンドル削除要求の受信により、第2のステーション142のデバイスハンドル制御部433に、ターゲットデバイスの構成情報の無効化を行わせる(ステップS458)。なお、無効化されるターゲットデバイスの構成情報は、第2のステーション142の構成情報管理テーブル440で保持されている。第2のホスト141は、ターゲットデバイスの構成情報の無効化の成功を示す結果フラグを含むデバイスハンドル削除応答を第2のステーション142へ送信する。これにより、第2のホスト141は、コマンド送信権を第2のステーション142から取り戻す(ステップS459)。なお、デバイスハンドル削除応答は、宛先ID611と送信元ID612を、それぞれ第2のステーション142と第2のホスト141のデバイスIDとする。
【0208】
第2のホスト141は、第1のステーション142に、ステーション間ネットワーク170の接続解除を行わせるための制御を行う(ステップS460)。
【0209】
2.5 通信システムの動作シーケンス
図14〜
図18は、
図1のイニシエータ装置100とターゲット装置140を含む通信システムの動作シーケンスを示す図である。
【0210】
2.5.1 構成情報共有ステップS501、S502(
図14)
第1のホスト101と各第1のデバイス102〜103とは、ステップS101の説明したように、
図5(a)、(b)に示す構成情報を共有する。また、第2のホスト141と各第2のデバイス142〜144とは、ステップS301の説明したように、
図5(a)、(b)に示すような構成情報を共有する。
【0211】
2.5.2 ステーション間ネットワーク初期化ステップS503(
図14)
第1のホスト101は、第1のステーション102を制御し、第2のホスト141は第2のステーション142を制御する。そして、第1のステーション102のステーション間ネットワーク初期化部332と、第2のステーション142のステーション間ネットワーク初期化部432は、ステーション間ネットワーク170の初期化を行う。そして、イニシエータ装置100とターゲット装置140との間で、物理的な接続が確立される。
【0212】
2.5.3 デバイスハンドル取得制御ステップS504(
図14)
第1のホスト101は、第1のステーション102宛に、デバイスハンドル番号を含むデバイスハンドル取得要求(GET_DH_REQ)#1を送信する。第1のステーション102は、第1のホスト101からデバイスハンドル取得要求#1を受信する。そして、第1のステーション102は、受信したデバイスハンドル取得要求#1を、デバイスハンドル制御部333により、ステーション間ネットワーク170経由でターゲット装置140に中継する。
【0213】
第2のステーション142は、ステーション間ネットワーク170経由でイニシエータ装置100からデバイスハンドル取得要求#1を受信する。第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、そのデバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報を取得済みでないと判定されたとする。第2のステーション142は、デバイスハンドル制御部433により、デバイスハンドル取得要求#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル取得要求(GET_DH_REQ)#2を第2のホスト141へ送信する。
【0214】
第2のホスト141は、第2のステーション142からデバイスハンドル取得要求#2を受信し、それに含まれるデバイスハンドル番号に対応するターゲットデバイスを、第2のデバイス142〜144の中から探索する。この動作シーケンスにおいて、第2のホスト141は、第2のデバイス143(第2のデバイス#2)をターゲットデバイスとして選択する。そして、第2のホスト141は、ホストコントローラ160で保持しているターゲットデバイス(第2のデバイス143)の構成情報を、第2のステーション142へ送信する。第2のステーション142は、そのターゲットデバイスの構成情報を受信し、デバイスハンドル制御部433により、ターゲットデバイス143の構成情報を、デバイスハンドル番号と対応付けて構成情報管理テーブル440に保持する。
【0215】
第2のホスト141は、第2のステーション142宛に、ターゲットデバイスの探索の成功を示す結果フラグを含むデバイスハンドル取得応答(GET_DH_ACK)#2を送信する。これにより、第2のホスト141は、ターゲットデバイス宛のコマンド送信権を第2のステーション142に委譲する。第2のステーション142は、第2のローカルネットワーク140Aのローカルバス150経由でデバイスハンドル取得応答#2を受信する。そして、第2のステーション142は、受信したデバイスハンドル取得応答#2を、ステーション間ネットワーク170経由でイニシエータ装置100に送信する。これにより、第2のステーション142は、ターゲットデバイス宛のコマンド送信権を、第2のホスト141から委譲される。
【0216】
第1のステーション102は、ターゲット装置140から送信されたターゲットデバイスの探索の成功を示す結果フラグを含む、デバイスハンドル取得応答(GET_DH_ACK)#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル取得応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えによって得られたデバイスハンドル取得応答(GET_DH_ACK)#1を、第1のローカルネットワーク100Aのローカルバス110経由で、第1のホスト101に返信する。
【0217】
第1のホスト101は、デバイスハンドル取得応答#1を受信し、受信したデバイスハンドル取得応答#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の成否を確認する。ここでは、第1のホスト101は、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応する、ターゲットデバイスとの間の論理的な接続の成功を、確認することになる。
【0218】
2.5.4 データリードトランザクション実行(中継)ステップS505(
図15)
2.5.4.1 コマンド−レスポンス
第1のホスト101は、第1のステーション102をターゲットデバイスとして、選択している。第1のホスト101は、宛先ID611と送信元ID612を、それぞれ第1のステーション102と第1のホスト102のデバイスIDとし、R/Wフラグ710にリードを設定したデータコマンド(DCMD)#1を発行する。ここで、第1のホスト101は、第2のステーション142のトランザクション中継部433が、コマンドの宛先を認識できるように、タグID613にデバイスハンドル番号を設定する。第1のステーション102は、データコマンド#1を受信し、受信したデータコマンド#1を、トランザクション中継部334によりステーション間ネットワーク170経由で、第2のステーション142に中継する。
【0219】
第2のステーション142は、イニシエータ装置100の第1のステーション102からステーション間ネットワーク170経由で、データコマンド#1を受信する。ここで、第2のステーション142は、デバイスハンドル取得制御ステップS503において、ターゲットデバイスである第2のデバイス143(第2のデバイス#2)の構成情報を、第2のホスト141から取得する。そして、第2のステーション142は、さらにコマンド送信権の委譲を受ける。第2のステーション142は、ステーション間ネットワーク170経由で受信したデータコマンド#1の宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、トランザクション中継部434により、宛先611と送信元ID612の書き換えにより得られたデータコマンド(DCMD)#2を、ターゲットデバイス143へ中継送信する。なお、第2のステーション102が受信したデータコマンド#1に含まれるタグID613には、ターゲットデバイスのデバイスハンドル番号が設定されている。トランザクション中継部434は、データコマンド#2の宛先ID611を、データコマンド#1のタグID613に設定されたデバイスハンドル番号に関連づけて、構成情報管理テーブル440に保持された構成情報のデバイスIDにする。
【0220】
ターゲットデバイス143は、データコマンド#2を受信し、データコマンド#2に対するレスポンスを、第2のステーション142に送信する。具体的には、送信するレスポンスは、宛先ID611と送信元ID612を、それぞれ第2のステーションとターゲットデバイスのデバイスIDとしたレスポンス(RES)#2である。ここで、レスポンス#2のタグID613には、データコマンド#2のタグID612と同じ内容が書き込まれる。そして、第2のステーション142は、ターゲットデバイス143からデータコマンド#2に対するレスポンス#2を受信する。そして、第2のステーション142は、受信したレスポンス#2を、トランザクション中継部434によりステーション間ネットワーク170経由で、第1のステーション102に中継する。
【0221】
第1のステーション102は、ステーション間ネットワーク170経由でレスポンス#2を受信する。そして、第1のステーション102は、トランザクション中継部334により、受信したレスポンス#2の宛先ID611と送信元ID612とを、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えにより得られたレスポンス(RES)#1を、第1のホスト101からのデータコマンド#1に対するレスポンスとして、第1のホスト101に返信する。
【0222】
2.5.4.2 データ転送(リード)
ターゲットデバイス143は、宛先ID611と送信元ID612を、それぞれ第2のホスト141を代替する第2のステーション142とターゲットデバイス143のデバイスIDとした、フロー制御要求(FC_REQ)#2を用意する。ターゲットデバイス143は、用意したフロー制御要求#2を、第2のステーション142宛に発行する。そして、第2のステーション142は、フロー制御要求#2を受信する。第2のステーション142は、宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDとしたフロー制御応答(FC_ACK)#2を、ターゲットデバイス143宛に返信する。これにより、ターゲットデバイス143と第2のホスト141を代替している第2のステーション142との間では、互いのバッファの空き状態を確認することができる。
【0223】
そして、ターゲットデバイス143は、第2のステーション142に対して、バースト転送サイズ分のデータパケット(DATA)#2の送信を開始する。なお、データパケット#2は、宛先ID611と送信元ID612を、それぞれ第2のステーション142と第2のターゲットデバイス143のデバイスIDとして送信される。ここでは、例えば、ターゲットデバイスの構成情報に含まれる最大パケットサイズ(MaxPacketSize)を512Byte、最大バースト転送数(MaxBurstNum)を“8”とする。このときのバースト転送は、データパケット#2[0]〜[7]までの計4KByteが、バースト転送されることになる。第2のステーション142は、計4Kバイト分のデータの転送完了後、データ転送の受信結果を含めたステータス(STAT)#2をターゲットデバイス143に送信する。
【0224】
第2のステーション142は、ターゲットデバイス143から受信したバースト転送データを、トランザクション中継部434により、ステーション間ネットワーク170経由で第1のステーション102に中継する。なお、このときのバースト転送データは、データパケット#2[0]〜[7]が対象となる。
【0225】
以降、ターゲットデバイス143と第2のステーション142は、データコマンド#2の転送サイズ712に指定されたサイズに達するまでのバースト転送を繰り返す。そして、第2のステーション142は、受信したバースト転送データを、トランザクション中継部434により、ステーション間ネットワーク170経由で第1のステーション102に中継する。
【0226】
第1のステーション102は、宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDとしたフロー制御要求(FC_REQ)#1を用意する。第1のステーション102は、用意したフロー制御要求#1を、第1のホスト101宛に発行する。そして、第1のホスト101は、第1のステーション102からフロー制御要求#1を受信する。そして、第1のホスト101は、宛先ID611と送信元ID612を、それぞれ第1のステーション102と第1のホスト101のデバイスIDとしたフロー制御応答(FC_ACK)#1を、第1のステーション102宛に返信する。これにより、第1のステーション102と第1のホスト101との間では、互いのバッファの空き状態を確認することができる。
【0227】
ここで、イニシエータ装置100における第1のホスト101と第1のステーション102との間のバースト転送サイズは、ターゲット装置140に非依存で、構成情報共有ステップS501において決定される。ここで、例えば、第1のステーション102の構成情報に含まれる最大パケットサイズを512Byte、最大バースト転送サイズを“16”とすると、バースト転送サイズは、8KByteとなる。このため、第1のステーション102は、ステーション間ネットワーク170経由でターゲットデバイスから受信した4KByteのバースト転送データの2回分を、トランザクション中継部334により、第1のホスト101へ送信する。つまり、バースト転送データは、受信した4KByteのバースト転送データの2回分を、8KByteのバースト転送データ(データパケット(DATA)#1[0]〜[15])として、転送することになる。第1のホスト101は、計8Kバイト分のデータの転送完了後、データ転送の受信結果を含めたステータス(STAT)#1を第1のステーション102に送信する。
【0228】
2.5.5 データライトトランザクション実行(中継)ステップS506(
図16)
2.5.5.1 コマンド−レスポンス
データライトトランザクションにおける[コマンド−レスポンス]は、データリードトランザクションにおける[コマンド−レスポンス]と、本発明に関連する部分については同様のため、ここでは説明を省略する。データライトトランザクションにおける[コマンド−レスポンス]は、データリードトランザクションにおける[コマンド−レスポンス]と異なる点は、データコマンドのR/Wフラグ710をリードの代わりにライトに設定する点である。
【0229】
2.5.5.2 データ転送(ライト)
第1のホスト101は、第1のステーション102をターゲットデバイスと見なす。そして、第1のホスト101は、宛先ID611と送信元ID612を、それぞれ第1のステーション102と第1のホスト101のデバイスIDとしたフロー制御要求(FC_REQ)#1を、用意する。第1のホスト101は、用意したフロー制御要求#1を、第1のステーション102宛に発行する。そして、第1のステーション102は、第1のホスト101からフロー制御要求#1を受信する。そして、第1のステーション102は、宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDとしたフロー制御応答(FC_ACK)#1を、第1のホスト101宛に返信する。これにより、第1のホスト101と第1のステーション102との間では、互いのバッファの空き状態を確認することができる。
【0230】
そして、第1のホスト101は、第1のステーション102に対して、バースト転送サイズである8KByte分のデータパケット(DATA)#1[0]〜[15]を送信する。なお、バースト転送サイズである8KByte分のデータパケット(DATA)#1[0]〜[15]は、宛先ID611と送信元ID612を、それぞれ第1のステーション102と第1のホスト101のデバイスIDとする。第1のホスト101は、第2のステーション142のトランザクション中継部433がデータの宛先を認識できるように、タグID613にデバイスハンドル番号を設定する。第1のステーション102は、計8KByte分のデータの転送完了後、データ転送の受信結果を含めたステータス(STAT)#1を第1のホスト101に返信する。
【0231】
第1のステーション102は、第1のホスト101から受信したバースト転送データを、トランザクション中継部334により、ステーション間ネットワーク170経由で第2のステーション142に中継する。なお、このときのバースト転送データは、データパケット#1[0]〜[15]が対象となる。
【0232】
以降、第1のホスト101と第1のステーション102は、データコマンド(DCMD)の転送サイズ712に指定されたサイズに達するまでバースト転送を繰り返す。そして、第1のステーション102は、受信したバースト転送データを、トランザクション中継部334により、ステーション間ネットワーク170経由で第2のステーション142に中継する。
【0233】
第2のステーション142は、第2のホスト141を代替している。第2のステーション142は、宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDとしたフロー制御要求(FC_REQ)#2を、用意する。第2のステーション142は、用意したフロー制御要求#2を、ターゲットデバイス143宛に発行する。そして、ターゲットデバイス143は、フロー制御要求#2を受信する。ターゲットデバイス143は、宛先ID611と送信元ID612を、それぞれ第2のステーション142とターゲットデバイス143のデバイスIDとしたフロー制御応答(FC_ACK)#2を、第2のステーション142宛に返信する。これにより、第2のホスト141を代替している第2のステーション142とターゲットデバイス143との間では、互いのバッファの空き状態を確認することができる。
【0234】
第2のステーション142は、第1のステーション102からのバースト転送データ(データパケット#1[0]〜[15])を受信する。そして、第2のステーション142は、トランザクション中継部434により、受信したバースト転送データを、データパケット(DATA)#2として、ターゲットデバイス143に中継する。なお、データパケット(DATA)#2は、宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDとする。なお、第2のステーション142が受信したデータパケット#1に含まれるタグID613には、ターゲットデバイスのデバイスハンドル番号が設定されている。トランザクション中継部434は、データコマンド#2の宛先ID611を、データパケット#1のタグID613に設定されたデバイスハンドル番号に関連づけて、構成情報管理テーブル440に保持された構成情報のデバイスIDにする。ターゲットデバイス143は、1回分のバースト転送サイズ分のデータの転送完了後、データ転送の受信結果を含めたステータス(STAT)#2を、第2のステーション142に送信する。
【0235】
上述したように、第2のステーション142とターゲットデバイス143との間のバースト転送サイズは、4KByteである。このため、第2のステーション142は、ステーション間ネットワークインターフェース163における無線通信バッファで、8KByteのバースト転送データを、受信している。そして、第2のステーション142は、受信した8KByteのデータを、ローカルネットワークインターフェース162aのバッファに4KByteずつ転送し、ターゲットデバイスとの間で4KByte単位のバースト転送を繰り返す。ここで、第2のステーション142は、ステーション間ネットワークインターフェース163における無線通信バッファが空くまでの間、第1のステーション102からの次のバースト転送データの送信を、待機させる必要がある。
【0236】
2.5.6 デバイスハンドル取得制御ステップS507(デバイスハンドル切替)(
図17)
第1のホスト101は、デバイスハンドル切替えのため、第1のステーション宛に、デバイスハンドル番号を切替えたデバイスハンドル取得要求(GET_DH_REQ)#1を発行する。第1のステーション102は、デバイスハンドル取得要求#1を受信し、受信したデバイスハンドル取得要求#1を、ステーション間ネットワーク170経由でターゲット装置140に中継する。
【0237】
第2のステーション142は、ステーション間ネットワーク170経由でイニシエータ装置100からデバイスハンドル取得要求#1を受信する。第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、デバイスハンドル取得要求#1に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みと判定されたものとする。第2のステーション142は、デバイスハンドル制御部433により、第2のホスト141を介さずに、自ら、ターゲットデバイスの構成情報の取得応答を、ステーション間ネットワーク170経由でイニシエータ装置100に返信する。具体的には、ターゲットデバイスの構成情報の取得応答は、成功を示す結果フラグを含むデバイスハンドル取得応答(GET_DH_ACK)#2である。
【0238】
第1のステーション102は、ターゲット装置140から送信されたターゲットデバイスの探索の成功を示す結果フラグを含む、デバイスハンドル取得応答(GET_DH_ACK)#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル取得応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えによって得られたデバイスハンドル取得応答(GET_DH_ACK)#1を、第1のローカルネットワーク100Aのローカルバス110経由で第1のホスト101に返信する。
【0239】
第1のホスト101は、デバイスハンドル取得応答#1を受信し、受信したデバイスハンドル取得応答#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の成否を確認する。ここでは、第1のホスト101は、デバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスとの間の論理的な接続の成功を、確認することになる。
【0240】
なお、この後は、
図15あるいは
図16に示した動作シーケンスと同様の内容が、実施される。
【0241】
2.5.7 デバイスハンドル削除ステップS508(
図18)
第1のホスト101は、第1のステーション102宛に、デバイスハンドル削除要求(DEL_DH_REQ)#1を送信する。第1のステーション102は、第1のホスト101からデバイスハンドル削除要求#1を受信する。そして、第1のステーション102は、受信したデバイスハンドル削除要求#1を、デバイスハンドル制御部333により、ステーション間ネットワーク170経由でターゲット装置140に中継する。
【0242】
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100からデバイスハンドル削除要求#1を、受信する。第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、構成情報管理テーブル440にターゲットデバイスの構成情報が、保持されているか判定する。この動作シーケンスでは、構成情報管理テーブル440にターゲットデバイスの構成情報が保持されていると判定されたものとする。そして、第2のステーション142は、デバイスハンドル制御部433により、デバイスハンドル削除要求#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル削除要求(DEL_DH_REQ)#2を、第2のホスト141へ送信する。
【0243】
第2のホスト141は、第2のステーション142からデバイスハンドル削除要求#2を受信する。そして、第2のホスト141は、デバイスハンドル削除要求#2に応じて第2のステーション142のデバイスハンドル制御部433を制御する。そして、第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440で保持しているターゲットデバイスの構成情報を無効化する。
【0244】
第2のホスト141は、第2のステーション142宛に、デバイスハンドル削除要求#2に対する応答を送信する。なお、デバイスハンドル削除要求#2に対する応答は、ターゲットデバイスの構成情報の無効化の成否を示す結果フラグ(ここでの結果フラグは成功を示す)を含む、デバイスハンドル削除応答(DEL_DH_ACK)#2である。ここで、デバイスハンドル削除要求#2の宛先ID611と送信元ID612は、それぞれ第2のステーション142と第2のホスト141のデバイスIDである。第2のステーション142は、デバイスハンドル削除応答#2を受信し、受信したデバイスハンドル削除応答#2を、デバイスハンドル制御部433により、ステーション間ネットワーク170経由でイニシエータ装置100に送信する。そして、第2のステーション142は、第2のホスト141から委譲されていたコマンド送信権を、第2のホスト141に返還する。そして、第2のホスト141は、第2のステーション142からコマンド送信権の返還を受ける。
【0245】
第1のステーション102は、ターゲット装置140から送信された上述した結果フラグを含むデバイスハンドル削除応答#2をステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル削除応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル削除要求#1の応答を返信する。なお、デバイスハンドル削除要求#1の応答は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル削除応答(DEL_DH_ACK)#1である。
【0246】
第1のホスト101は、デバイスハンドル削除応答#1を受信し、受信したデバイスハンドル削除応答#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の解除の成功を確認する。
【0247】
2.5.8 ステーション間ネットワーク接続解除ステップS509(
図18)
第1のホスト101は、第1のステーション102を制御する。そして、第2のホスト141は、第2のステーション142を制御する。そして、第1のステーション102と第2のステーション142は、ステーション間ネットワーク170による物理的な接続を解除する。
【0248】
本実施の形態では、イニシエータ装置100とターゲット装置140のそれぞれに含まれる各デバイスの構成情報が、構成情報共有ステップ以降で維持される。このため、イニシエータ装置100とターゲット装置140は、ステーション間ネットワーク接続解除ステップS106、S306の完了後に、再び構成情報共有を行うことなく、各装置内の通信を再開できる。
【0249】
≪第1の変形例≫
以下、本発明の実施形態の第1の変形例について、図面を参照しつつ説明する。
図17に示したように、通信システムは、デバイスハンドル取得判定において取得済みの判定の場合、第2のホスト141を介さずにデバイスハンドルの切替えが実行できる。
【0250】
そこで、第1の変形例では、ステーション間ネットワーク初期化ステップ直後のデバイスハンドル取得制御ステップにおいて、デバイスハンドルを一括取得することで、デバイスハンドル切替え時の通信オーバーヘッドを削減する。
【0251】
次は、ステーション間ネットワーク初期化ステップ直後のデバイスハンドル取得制御ステップS504Aについて、
図19を参照して説明する。
【0252】
第1のホスト101は、複数のデバイスハンドルを一括取得するため、第1のステーション102宛に、一括取得用のデバイスハンドル取得要求(GET_DH_REQ)#1を送信する。なお、デバイスハンドル取得要求#1は、例えば、デバイスハンドル番号を“0”としたデバイスハンドル取得要求である。第1のステーション102は、第1のホスト101からデバイスハンドル取得要求#1を受信する。そして、第1のステーション102は、受信したデバイスハンドル取得要求#1を、デバイスハンドル制御部333により、ステーション間ネットワーク170経由でターゲット装置140に中継する。
【0253】
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100からデバイスハンドル取得要求#1を受信する。第2のステーション142は、デバイスハンドル制御部433により、構成情報管理テーブル440を参照し、そのデバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報を取得済みでないと判定されたものとする。そして、第2のステーション142は、デバイスハンドル制御部433により、デバイスハンドル取得要求#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデバイスハンドル取得要求(GET_DH_REQ)#2を、第2のホスト141へ送信する。
【0254】
第2のホスト141は、第2のステーション142からデバイスハンドル取得要求#2を受信する。受信したデバイスハンドル取得要求#2に含まれるデバイスハンドル番号は、一括取得用の値である。このため、第2のホスト141は、ホストコントローラ160に保持した第2のデバイス142〜144の構成情報に基づいて、複数のターゲットデバイスからなるターゲットデバイスグループを探索する。ここで、最も簡単なターゲットデバイスグループとしては、第2のデバイス142〜144の全てを選択すれば良い。
【0255】
第2のホスト141は、ターゲットデバイスグループの各デバイスの構成情報を、デバイスハンドル番号に対応させて第2のステーション142に一括送信する。第2のステーション142は、そのターゲットデバイスグループの各デバイスの構成情報を一括受信する。そして、第2のステーション142は、デバイスハンドル制御部433により、ターゲットデバイスグループの各デバイスの構成情報を、デバイスハンドル番号と対応付けて構成情報管理テーブル440に保持する。なお、デバイスハンドル番号は、例えば、デバイスハンドル取得応答に含み、後述するターゲットデバイスグループの当該デバイスを特定する情報である。
【0256】
第2のホスト141は、第2のステーション宛に、デバイスハンドル取得応答(GET_DH_ACK)#2を送信するとともに、コマンド送信権を第2のステーション#2に委譲する。第2のステーション142は、デバイスハンドル取得応答#2を受信し、受信したデバイスハンドル取得応答#2を、ステーション間ネットワーク170経由でイニシエータ装置100に送信する。そして、第2のステーション142は、コマンド送信権を第2のホスト141から委譲される。ここで、第2のホスト141は、ターゲットデバイスグループの各デバイスを特定する情報を含む、デバイスハンドル取得応答の送信を行う。ターゲットデバイスグループを特定する情報は、そのターゲットデバイスグループに含まれる各デバイスに、割り当てられたデバイスIDのビットマップ情報であれば良い。例えば、
図1に示した第2のデバイス142〜144には、デバイスIDとして“1”から“3”までが割り当てられる。また、ビットマップ情報は、デバイスIDに対応するビット1からビット3までに“1”をセットし、その他ビットを“0”とした情報となる。
【0257】
第1のステーション102は、ターゲット装置140から送信されたデバイスハンドル取得応答#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、デバイスハンドル制御部333により、デバイスハンドル取得応答#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えによって得られたデバイスハンドル取得応答(GET_DH_ACK)#1を、第1のローカルネットワーク100Aのローカルバス110経由で第1のホスト101に返信する。
【0258】
第1のホスト101は、デバイスハンドル取得応答#1を受信する。第1のホスト101は、デバイスハンドル取得応答に含まれたターゲットデバイスグループを特定する情報から、取得済みのデバイスハンドルを認識する。以降、第1のホスト101は、デバイスハンドル番号として“1”から“3”のいずれかを設定したデバイスハンドル取得要求を発行する。これにより、第1のホスト101は、
図17に示すような、第2のホスト141を介さないデバイスハンドル(ターゲットデバイス)切り替えが実現できる。
【0259】
なお、ターゲットデバイスグループの形成方法は、上記に限らず、例えば、第1のホスト101から発行するデバイスハンドル取得要求に、構成情報であるデバイス種別コードを含めても良い。この場合、第2のホスト141は、ホストコントローラ160に保持した第2のデバイス142〜144の構成情報に基づいて、ターゲットデバイスグループとして選択する。ターゲットデバイスグループの選択は、構成情報に基づいて、デバイスハンドル取得要求に含まれたデバイス種別コードに該当する全てのデバイスを、選択する。
【0260】
また、第2のホスト141は、デバイスハンドル取得応答として、上記のようなビットマップ情報によるデバイスIDだけでなく、各デバイスのデバイス種別コードを含めてもよい。この場合、第2のホスト141は、
図20に示すような、第2のデバイス142〜144のデバイスIDとデバイス種別コードをリスト化したデバイスリストをデバイスハンドル取得応答に含めて返信することになる。この場合、第1のホスト101は、全ターゲットデバイス候補のデバイス種別コードとそのデバイスIDの一欄を一括取得できるため、明示的なデバイス選択が可能になる。
【0261】
≪第2の変形例≫
次は、本発明の実施の形態の第2の変形例について、図面を参照しつつ説明する。上記実施の形態及びその第1の変形例では、トランザクション開始前に、デバイスハンドル取得のためのパケット交換が必要である。デバイスハンドル取得のために交換されるパケットは、例えば、デバイスハンドル取得要求(GET_DH_REQ)、あるいは、デバイスハンドル取得応答(GET_DH_ACK)である。
【0262】
そこで、第2の変形例では、通常のトランザクションで交換されるコマンドとレスポンスを、それぞれデバイスハンドル取得要求とデバイスハンドル取得応答として扱うことで、通信オーバーヘッドを削減する。
【0263】
以下では、デバイスハンドル取得要求とデバイスハンドル削除応答として、それぞれコマンドとレスポンスを用いる場合のデバイスハンドル取得制御ステップについて、
図21と
図22を参照して説明する。
【0264】
1. デバイスハンドル取得制御ステップS504B(デバイスハンドル未取得の場合)(
図21)
第1のステーション102は、デバイスハンドル取得制御ステップS504Bにおいて、デバイスハンドル取得要求(GET_DH_REQ)#1としての役割も兼ねるデータコマンド(DCMD)#1を発行する。第1のステーション102は、第1のホスト101からデータコマンド#1を受信し、受信したデータコマンド#1を、デバイスハンドル制御部333により、ステーション間ネットワーク経由でターゲット装置140に中継する。なお、デバイスハンドル取得要求に必要なデバイスハンドル番号は、データコマンドの予約フィールド(Reserved)か、あるいは追加フィールドに含めることとする。また、追加フィールドを含めることが困難な場合は、
図6に示したタグID613をデバイスハンドル番号として用いてもよい。
【0265】
第2のステーション142は、ステーション間ネットワーク170経由で、イニシエータ装置100からデバイスハンドル取得要求#1の役割も兼ねるデータコマンド#1を受信する。そして、第2のステーション142は、構成情報管理テーブル440を参照し、そのデータコマンド#1に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報を取得済みでないと判定されたものとする。そして、第2のステーション142は、データコマンド#1の宛先ID611と送信元ID612を、それぞれ第2のホスト141と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデータコマンドを、デバイスハンドル取得要求の受信通知として、第2のホスト141へ送信する。
【0266】
第2のホスト141は、第2のステーション142からデバイスハンドル取得要求の受信通知として、データコマンドを受信する。そして、第2のホスト141は、上記の実施の形態と同様に、ターゲットデバイスを探索し、その構成情報を第2のステーション142に送信する。そして、第2のステーション142は、ターゲットデバイスの構成情報をデバイスハンドル番号に対応させて構成情報管理テーブル440に保持する。それが完了すると、第2のホスト141は、デバイスハンドル取得応答の指示を、第2のステーション装置102に対して行うと共に、コマンド送信権を第2のステーション142に委譲する。そして、第2のステーション142は、デバイスハンドル取得応答の指示を受けると共に、コマンド送信権を委譲される。
【0267】
第2のステーション142は、データコマンド#1の宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデータコマンド#2を、ターゲットデバイス143へ送信する。ターゲットデバイス143は、データコマンド#2を受信し、受信したデータコマン#2に対する応答としてレスポンス#2を、第2のステーション142へ送信する。第2のステーション142は、ターゲットデバイス142から受信したレスポンス#2に、ターゲットデバイスの探索の成功を示す結果フラグを含める。そして、第2のステーション142は、デバイスハンドル取得応答(GET_DH_ACK)#2としての役割も兼ねる、結果フラグを含むレスポンス#2を、ステーション間ネットワーク170経由でイニシエータ装置100へ送信する。
【0268】
ここで、デバイスハンドル取得応答に必要なデバイスハンドル番号あるいは結果フラグは、デバイスハンドル取得要求と同様に、レスポンスの予約フィールド(Reserved)か、あるいは追加フィールドに含めることとする。また、追加フィールドを含めることが困難な場合は、
図6に示したタグID613をデバイスハンドル番号として用い、NACKフラグ720を結果フラグとして用いても良い。
【0269】
第1のステーション102は、ターゲット装置140から送信されたレスポンス#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、レスポンス#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えによって得られたデバイスハンドル取得応答(GET_DH_ACK)#1の受信通知としての役割も果たすレスポンス#1を、第1のホスト101に返信する。第1のホスト101は、レスポンス#1を受信し、受信したレスポンス#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の成否を確認する。
【0270】
2. デバイスハンドル取得制御ステップS507B(デバイスハンドル取得済みの場合)(
図22)
第1のホスト101は、デバイスハンドル切替えのため、デバイスハンドル取得要求としての役割も兼ねるデバイスハンドル番号を切替えたデータコマンド(DCMD)#1を、第1のステーション102宛に送信する。第1のステーション102は、データコマンド#1を受信し、受信したデータコマンド#1を、ステーション間ネットワーク170経由でターゲット装置140へ送信する。
【0271】
第2のステーション142は、ステーション間ネットワーク170経由で、データコマンド#1を受信する。そして、第2のステーション142は、構成情報管理テーブル440を参照し、そのデバイスハンドル取得要求に含まれるデバイスハンドル番号に対応するターゲットデバイスの構成情報を、取得済みか判定する。この動作シーケンスでは、デバイスハンドル番号に対応するターゲットデバイスの構成情報を取得済みであると判定されたものとする。そして、第2のステーション142は、データコマンド#1の宛先ID611と送信元ID612を、それぞれターゲットデバイス143と第2のステーション142のデバイスIDに書き換える。そして、第2のステーション142は、宛先ID611と送信元ID612の書き換えにより得られたデータコマンド#2を、ターゲットデバイス143へ送信する。ターゲットデバイス143は、データコマンド#2を受信し、受信したデータコマンド#2に対する応答としてレスポンス#2を、第2のステーション142へ送信する。第2のステーション142は、ターゲットデバイス142から受信したレスポンス#2に、ターゲットデバイスの探索の成功を示す結果フラグを含める。そして、第2のステーション142は、デバイスハンドル取得応答(GET_DH_ACK)#2としての役割も兼ねる、結果フラグを含むレスポンス#2を、ステーション間ネットワーク170経由でイニシエータ装置100へ送信する。
【0272】
第1のステーション102は、ターゲット装置140から送信されたレスポンス#2を、ステーション間ネットワーク170経由で受信する。そして、第1のステーション102は、レスポンス#2の宛先ID611と送信元ID612を、それぞれ第1のホスト101と第1のステーション102のデバイスIDに書き換える。そして、第1のステーション102は、宛先ID611と送信元ID612の書き換えによって得られた、デバイスハンドル取得応答#1の受信通知としての役割も果たすレスポンス#1を、第1のホスト101に返信する。
【0273】
第1のホスト101は、レスポンス#1を受信し、受信したレスポンス#1に含まれる結果フラグによって、ターゲット装置140に含まれるターゲットデバイスとの間の論理的な接続の成否を確認する。
【0274】
なお、第2の変形例では、上記のように、データコマンドとレスポンスによってデバイスハンドルを取得することができる。このため、第2の変形例では、以降のデータ転送において、
図15と
図16におけるデータコマンドとレスポンスの交換を行う必要が無くなる。
【0275】
≪その他の変形例≫
本発明は、上記実施形態で説明した内容に限定されず、本発明の目的とそれに関連又は付随する目的を達成するためのいかなる形態においても実施可能であり、例えば、以下であってもよい。
【0276】
(1)メモリ統合ステーション
図1に示した第2のステーション142は、第2のデバイス143と同様に、不揮発メモリモジュールを含むメモリ統合ステーションであってもよい。その場合、第2のステーション142は、構成情報共有ステップにおいて、ステーションとしての構成情報とメモリデバイスとしての構成情報を、第2のホスト141との間で共有することになる。そして、第2のステーション142(400)は、メモリデバイスとしての構成情報を、予め構成情報管理テーブル440にコピーしておく。これにより、第2のステーション142は、デバイスハンドル取得ステップにおいて、メモリデバイスである第2のステーション142がターゲットデバイスとして選択された場合も、構成情報を第2のホスト141から取得する必要が無い。ターゲットデバイスである第2のステーション142は、以降のトランザクション実行(中継)ステップにおいて、イニシエータ装置100との間で転送されるデータを、内蔵する不揮発メモリモジュールに中継する。
【0277】
(2)USB
USBプロトコルでは、
図6に示した送信元ID612が無く、デバイスからの応答は常にホスト宛に返信される。このため、上記の実施の形態における
図15あるいは
図16に示したトランザクション実行(中継)ステップにおいて、第2のステーション142が第2のホスト141を代替してターゲットデバイス宛のデータコマンドを発行した場合も、それに対するレスポンスが第2のホスト141に返信されることが考えられる。
【0278】
そこで、第2のホスト141は、第2のステーション142にコマンド送信権を委譲する際に、
図2(b)に示したようなUSBハブにおいて、第2のホスト141用ポートと第2のステーション142用ポートを切替える。それにより、第2のステーション142は、物理的にターゲットデバイスのホストを代替することができる。
【0279】
また、同様に、第2のホスト141は、第2のステーション142からコマンド送信権の返還を受ける際に、USBハブのポートを元に戻すことで、物理的にターゲットデバイスのホストに戻ることができる。
【0280】
(3)その他
上記の実施の形態や変形例では、ステーション間ネットワーク170を経由してパケットを受信したステーションが必要に応じて宛先ID611と送信元ID612の書き換えを行うとして説明した。しかし、ステーション間ネットワーク170を経由してパケットを送信するステーションは、必要に応じて宛先ID611と送信元ID612の書き換えを行うようにしてもよい。