(57)【特許請求の範囲】
【請求項１】
同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置であって、
前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するアクセス要求処理部と、
前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、
を備え、
前記タイムアウト検出部は、
前記ターゲット装置と前記ストレージの間のアクセスがタイムアウトしたことを示すタイムアウト通知を前記アクセス要求処理部が受信したときに、タイムアウトを検出する、
イニシエータ装置。
【請求項２】
同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置であって、
前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するアクセス要求処理部と、
前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、
を備え、
前記アクセス要求処理部は、
前記計時動作が前記タイムアウト時間よりも短い規定の状態確認時間を超えた場合に、前記ターゲット装置に対して状態確認要求を送信し、当該状態確認要求に対する状態確認応答を前記ターゲット装置から受信し、
前記タイムアウト検出部は、
前記アクセス要求処理部が前記状態確認要求の送信および前記状態確認応答の受信のいずれかを行う度に、前記計時動作をリセットして再開する、
イニシエータ装置。
【請求項３】
前記タイムアウト検出部は、
前記状態確認要求の実行回数を示す状態確認カウンタを管理し、当該状態確認カウンタが規定値に達した場合に、タイムアウトを検出する、
請求項２記載のイニシエータ装置。
【請求項４】
前記状態確認応答は、前記ターゲット装置と前記ストレージとの間のアクセスが実行中かどうかを示すフラグを含み、
前記タイムアウト検出部は、
前記アクセス要求処理部において、アクセス実行中では無いことを示す前記フラグが設定された前記状態確認応答を受信すると、前記状態確認カウンタを増分しない、
請求項３記載のイニシエータ装置。
【請求項５】
イニシエータ装置が、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスする通信システムであって、
前記イニシエータ装置は、
前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するイニシエータ側アクセス要求処理部と、
前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、を備え、
前記タイムアウト検出部は、
前記ターゲット装置と前記ストレージの間のアクセスがタイムアウトしたことを示すタイムアウト通知を前記アクセス要求処理部が受信したときに、タイムアウトを検出し、
前記ターゲット装置は、
前記イニシエータ装置から受信したアクセス要求を基に、前記ストレージとの間でローカルアクセスを行うストレージインターフェース部と、
前記ローカルアクセスの結果を基に、前記イニシエータ装置に対してアクセス応答またはアクセス要求を送信するターゲット側アクセス要求処理部と、
を備える通信システム。
【請求項６】
同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置が行うタイムアウト検出方法であって、
前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するステップと、
前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するステップと、
を備え、
前記タイムアウトを検出するステップでは、
前記ターゲット装置と前記ストレージの間のアクセスがタイムアウトしたことを示すタイムアウト通知を前記イニシエータ装置が受信したときに、タイムアウトを検出する、
タイムアウト検出方法。
【請求項７】
同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線区間を介して通信を行うことで、前記ストレージにアクセスするイニシエータ装置のコンピュータに実行させるタイムアウト検出プログラムであって、
前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信する処理と、
前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出する処理と、
をコンピュータに実行させ、
前記タイムアウトを検出する処理では、
前記ターゲット装置と前記ストレージの間のアクセスがタイムアウトしたことを示すタイムアウト通知を前記イニシエータ装置が受信したときに、タイムアウトを検出する処理をコンピュータに実行させる、
タイムアウト検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連続して発生する複数のアクセス要求に対して、各アクセス要求のタイムアウト検出を行うイニシエータ装置、ターゲット装置、通信システム、タイムアウト検出方法、およびタイムアウト検出プログラムに関する。
【背景技術】
【０００２】
従来の通信システムでは、イニシエータ装置が、無線区間を介して、ターゲット装置に接続されたストレージに対してアクセスを行うことがある。さらに、このような通信システムには、イニシエータ装置が、最初にアクセス要求を送信した後、それに対するアクセス応答を受信する前に、連続して複数のアクセス要求を発行するものがある。これにより、通信システムは、無線通信のレイテンシに起因する性能の低下を避けることができる。【０００３】
複数のアクセス要求が連続して発行される場合のタイムアウト検出処理は、通常アクセス要求毎に管理される複数のタイマを用いて処理される。そこで、そのような複数のタイマ管理の煩雑さを回避し、複数のアクセス要求に関するタイムアウト検出処理を１つのタイマで実現する従来技術が、特許文献１および特許文献２に開示されている。特許文献１および特許文献２に開示の従来技術は、タイムアウトを検出する際の基準値として用いるタイムアウト時間を、同時に実行しているアクセス要求数に応じて算出している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２２３７０２号公報
【特許文献２】特開２０００−０９９４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記通信システムにおいて、ストレージが、アクセス要求を１つずつしか処理できない場合には、従来技術を適用すると、以下の課題がある。なお、上記ストレージには、例えば、ＳＤカードやＵＳＢマスストレージ(Mass Storage)などのブリッジメディア（Bridge Media）がある。【０００６】
以下では、例えば、イニシエータ装置が、ストレージに対して第１のアクセス要求と第２のアクセス要求を連続して発行し、ストレージが、第１のアクセス要求、第２のアクセス要求の順に実行する場合について説明する。この場合、イニシエータ装置は、第１のアクセス要求を発行してから第１のアクセス応答を受信するまでの時間に、第１のアクセス要求がストレージで実行される時間を加えることにより、タイムアウト時間を算出する。一方で、イニシエータ装置は、第２のアクセス応答に対して、第１のアクセス要求がストレージで実行される時間と、第２のアクセス要求がストレージで実行される時間とを加えることにより、タイムアウト時間を算出する。【０００７】
すなわち、後続のアクセス要求についてのタイムアウト時間には、先行するアクセス要求の実行時間が累積される。よって、連続して発行された複数のアクセス要求のうちストレージでの実行順位が後になるアクセス要求ほど、累積される時間が多くなり、タイムアウト時間の算出が困難になる。すなわち、アクセス要求の発行数に応じてタイムアウト時間を検出する技術は、タイムアウト時間の算出が複雑になる、という課題がある。【０００８】
本発明の目的は、同時に１つのアクセス要求のみを処理するストレージに対し、無線通信を介してリモートアクセスを行うためのアクセス要求の発行数に依存せず、１つのタイマで容易にタイムアウト検出を行うことである。
【課題を解決するための手段】
【０００９】
本発明のイニシエータ装置は、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置であって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するアクセス要求処理部と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、を備える。【００１０】
本発明の通信システムは、イニシエータ装置が、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスする通信システムであって、前記イニシエータ装置は、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するイニシエータ側アクセス要求処理部と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、を備え、前記ターゲット装置は、前記イニシエータ装置から受信したアクセス要求を基に、前記ストレージとの間でローカルアクセスを行うストレージインターフェース部と、前記ローカルアクセスの結果を基に、前記イニシエータ装置に対してアクセス応答またはアクセス要求を送信するターゲット側アクセス要求処理部と、を備える。【００１１】
本発明のタイムアウト検出方法は、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置が行うタイムアウト検出方法であって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するステップと、前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するステップと、を備える。【００１２】
本発明のタイムアウト検出プログラムは、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線区間を介して通信を行うことで、前記ストレージにアクセスするイニシエータ装置のコンピュータに実行させるタイムアウト検出プログラムであって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信する処理と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出する処理と、を実行させる。
【発明の効果】
【００１３】
本発明は、同時に１つのアクセス要求のみを処理するストレージに対し、無線通信を介してリモートアクセスを行うためのアクセス要求の発行数に依存せず、１つのタイマで容易にタイムアウト検出を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係る通信システムの全体構成を例示するブロック図
【図２】本発明の第１の実施形態に係るパケットフォーマットの概略を例示する図
【図３】本発明の第１の実施形態に係るパケットフォーマットの詳細を例示する図
【図４】本発明の第１の実施形態に係るイニシエータ装置の動作を例示するフローチャート
【図５】本発明の第１の実施形態に係るターゲット装置の動作を例示するフローチャート
【図６】本発明の第１の実施形態に係るタイムアウト検出手段の動作を例示するフローチャート
【図７】本発明の第１の実施形態に係る通信システムにおいて正常に動作する場合の動作シーケンスを例示する図
【図８】本発明の第１の実施形態に係る通信システムにおいて無線通信区間のパケットロスでタイムアウトする場合の動作シーケンスを例示する図
【図９】本発明の第１の実施形態に係る通信システムにおいてストレージへのローカルアクセスのパケットロスでタイムアウトする場合の動作シーケンスを例示する図
【図１０】本発明の第１の実施形態に係る通信システムにおいてデータ転送を行うときに正常に動作する場合の動作シーケンスを例示する図
【図１１】本発明の第１の実施形態に係る通信システムにおいてデータ転送中にタイムアウトする場合の動作シーケンスを例示する図
【図１２】本発明の第２の実施形態に係る通信システムの全体構成を例示するブロック図
【図１３】本発明の第２の実施形態に係るタイムアウト検出手段の動作を例示するフローチャート
【図１４】本発明の第２の実施形態に係る通信システムにおいて状態確認要求が無線区間でパケットロスする場合の動作シーケンスを例示する図
【図１５】本発明の第２の実施形態に係る通信システムにおいてコマンドを含むアクセス要求のパケットロスが発生した場合の動作シーケンスを例示する図
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１６】
（第１の実施の形態）
まず、第１の実施の形態について説明する。
【００１７】
図１は、本実施の形態に係る通信システムの構成例を示す。本実施の形態に係る通信システムは、イニシエータ装置１００、ターゲット装置１１０、ストレージ１２０を備える。ストレージ１２０は、同時に１つのアクセス要求のみを処理するものであり、例えば、ＳＤカードやＵＳＢマスストレージなどのブリッジメディアが挙げられる。ストレージ１２０は、ターゲット装置１１０に接続される。イニシエータ装置１００は、無線区間を介してターゲット装置１１０と通信を行い、ストレージ１２０へアクセスすることができる。なお、イニシエータ装置１００が、リモートにあるストレージ１２０へアクセスすることは、「リモートアクセス」という。また、リモートアクセスに関し、送信側から受信側への要求は、「アクセス要求」といい、アクセス要求に対する受信側から送信側への応答は「アクセス応答」という。
【００１８】
＜イニシエータ装置１００の構成＞
図１において、本実施の形態に係るイニシエータ装置１００は、無線区間を介して、ターゲット装置１１０に接続されるストレージ１２０へアクセスする装置である。
【００１９】
図１に示すように、イニシエータ装置１００は、無線通信部１０１、アクセス要求処理部１０２、タイムアウト検出部１０３を有する。
【００２０】
無線通信部１０１は、アクセス要求処理部１０２から転送されてきたアクセス要求またはアクセス応答を、無線区間を介して、ターゲット装置１１０へ送信する。また、無線通信部１０１は、無線区間を介してターゲット装置１１０から受信したアクセス要求またはアクセス応答を、アクセス要求処理部１０２へ転送する。
【００２１】
無線通信部１０１は、例えば、ＩＥＥＥ８０２．１１系規格、あるいはＷｉＧｉｇ（Wireless Gigabit）規格に基づく無線通信のＭＡＣ層である。なお、ＷｉＧｉｇとは、１Ｇｂｐｓを越える有線ＰＡＮ用途の置換えを想定した、６０ＧＨｚ帯域のミリ波を利用する無線通信規格である。なお、無線通信部１０１が適用する無線通信規格は、無線ＬＡＮおよびＷｉＧｉｇに限定されるものではない。
【００２２】
アクセス要求処理部１０２は、ターゲット装置１１０へ送信するためのアクセス要求を生成し、無線通信部１０１を介してターゲット装置１１０へ送信する。その後、アクセス要求処理部１０２は、上記アクセス要求に対してターゲット装置１１０から送信されたアクセス応答を、無線通信部１０１を介して受信する。
【００２３】
また、アクセス要求処理部１０２は、ターゲット装置１１０から無線通信部１０１を介してアクセス要求を受信する。その後、アクセス要求処理部１０２は、受信したアクセス要求により要求された処理が正常に終了した場合、その旨を示すアクセス応答を生成する。そして、アクセス要求処理部１０２は、生成したアクセス応答を、無線通信部１０１を介してターゲット装置１１０へ送信する。
【００２４】
タイムアウト検出部１０３は、アクセス要求処理部１０２にて、アクセス要求の送信、アクセス応答の受信、アクセス要求の受信、あるいは、アクセス応答の送信のいずれか（以下、適宜「送受信」という）があるかを監視する。監視の結果、最初の送受信があると、タイムアウト検出部１０３は、計時動作を開始する。
【００２５】
タイムアウト検出部１０３は、計時中、規定のタイムアウト時間内にアクセス要求またはアクセス応答の送受信がない場合、タイムアウトを検出する。一方、計時中、規定のタイムアウト時間内にアクセス要求またはアクセス応答の送受信があった場合、未完了のリモートアクセスがあるか否かを判断する。本実施の形態では、タイムアウト検出部１０３は、規定のタイムアウト時間を１つだけ用いる。このため、タイムアウト時間は、ターゲット装置１１０およびストレージ１２０における全てのアクセス要求について、最大処理時間より十分大きな値とする必要がある。また、上記タイムアウト時間は、無線通信部１０１での再送処理時間についても考慮し、さらに大きな値を想定する必要がある。
【００２６】
タイムアウト検出部１０３は、未完了のリモートアクセスがあると判断した場合、タイマをリセットし、計時動作を再開する。一方、未完了のリモートアクセスがないと判断した場合、タイムアウト検出部１０３は、タイマを停止して計時動作を終了する。
【００２７】
以上、イニシエータ装置１００は、規定のタイムアウト時間内に、アクセス要求の送信、アクセス要求の受信、アクセス応答の送信、またはアクセス応答の受信、のいずれかがある度に、タイマをリセットして計時動作を再開することができる。
【００２８】
＜ターゲット装置１１０の構成＞
次に、ターゲット装置１１０の構成について説明する。
【００２９】
図１において、本実施の形態に係るターゲット装置１１０は、イニシエータ装置１００とストレージ１２０とを中継する装置である。
【００３０】
図１に示すように、ターゲット装置１１０は、無線通信部１１１、アクセス要求処理部１１２、ストレージインターフェース部１１３を有する。
【００３１】
無線通信部１１１は、アクセス要求処理部１１２から転送されてきたアクセス要求またはアクセス応答を、無線区間を介して、イニシエータ装置１００へ送信する。また、無線通信部１１１は、無線区間を介してイニシエータ装置１００から受信したアクセス要求またはアクセス応答を、アクセス要求処理部１１２へ転送する。なお、無線通信部１１１は、イニシエータ装置１００と無線通信を行うにあたり、イニシエータ装置１００の無線通信部１０１と同じ無線通信規格を用いる。
【００３２】
アクセス要求処理部１１２は、イニシエータ装置１００から受信したアクセス要求からコマンドやデータを抽出し、ストレージインターフェース部１１３を介してストレージ１２０へ転送する。ここで、ストレージ１２０は同時に１つのコマンドしか処理できないため、アクセス要求処理部１１２は、抽出した複数のコマンドやデータを、逐次的にストレージ１２０に発行する。
【００３３】
また、アクセス要求処理部１１２は、ストレージ１２０からレスポンスやデータを受け取り、それらを基にアクセス応答またはアクセス要求を生成し、無線通信部１１１を介してイニシエータ装置１００へ送信する。
【００３４】
ストレージインターフェース部１１３は、アクセス要求処理部１１２から転送されてきたコマンドあるいはデータを、ローカルアクセス区間を介して、ストレージ１２０へ送信する。また、ストレージインターフェース部１１３は、ローカルアクセス区間を介して、ストレージ１２０からレスポンスあるいはデータを受信する。ローカルアクセス区間の通信規格は、例えば、ストレージ１２０がＳＤカードであればＳＤバスプロトコル、ストレージ１２０がＵＳＢマスストレージであればＵＳＢバスプロトコルが適用できる。
【００３５】
このようなターゲット装置１１０は、イニシエータ装置１００とは無線区間を介して通信を行い、ストレージ１２０とはローカルアクセス区間を介して通信を行うことで、イニシエータ装置１００とストレージ１２０との通信を中継できる。これにより、イニシエータ装置１００は、ストレージ１２０へのリモートアクセスを実現することができる。
【００３６】
イニシエータ装置１００およびターゲット装置１１０は、例えば、それぞれ、ＣＰＵ（Central Processing Unit）、制御プログラムを格納したＲＯＭ（Read Only Memory）などの記録媒体、およびＲＡＭ（Random Access Memory）などの作業用メモリを有する。この場合、上記した各構成部の機能は、ＣＰＵが制御プログラムを実行することにより実現される。
【００３７】
なお、イニシエータ装置１００およびターゲット装置１１０の各機能部は、例えば、集積回路により構成してもよい。イニシエータ装置１００およびターゲット装置１１０の各機能部は、個別に１チップ化してもよいし、複数で１チップ化してもよい。集積回路は、集積度の違いにより、ＬＳＩ（Large Scale Integration）、ＩＣ（Integrated Circuit）、システムＬＳＩ、スーパーＬＳＩ、またはウルトラＬＳＩ等とすることができる。また、集積回路は、専用回路または汎用プロセッサにより実現するものであってもよい。また、集積回路は、その製造後にプログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）、または、内部の回路セルの接続や設定を再構成可能なコンフィギュラブル・プロセッサとしてもよい。さらに、イニシエータ装置１００およびターゲット装置１１０の各機能部は、半導体技術の進歩または派生する別技術に応じて、ＬＳＩに置き換わる他の集積回路化の技術（例えばバイオ技術）により集積化されたもので実現してもよい。
【００３８】
また、図示はしていないが、本実施の形態に係るイニシエータ装置１００およびターゲット装置１１０は、ユーザが動作を選択して実行するための、ユーザインタフェースをそれぞれ有してもよい。例えば、本実施の形態に係るイニシエータ装置１００およびターゲット装置１１０は、ユーザインタフェースとして、入力キー、ディスプレイ、マイクロフォン、スピーカ、カメラ、および、バイブレータなどの機能をそれぞれ有してもよい。また、イニシエータ装置１００およびターゲット装置１１０は、プログラム格納、あるいは、実行のためのメモリなどの機能をそれぞれ有してもよい。
【００３９】
＜パケットのフォーマット＞
次に、アクセス要求およびアクセス応答のパケットフォーマットの例について、図２を用いて説明する。
【００４０】
パケットは、ヘッダ２００とペイロード２０１を含む。ヘッダ２００は、ペイロードタイプ（PTYP）２１０、デバイスID（DID）２１１、コマンドID（CID）２１２、シーケンス番号（SEQ）２１３、パケット長（PLEN）２１４を含む。
【００４１】
ペイロードタイプ２１０は、ペイロード２０１の内容を特定可能な情報である。デバイスID２１１は、宛先のストレージを特定可能な情報である。コマンドID２１２は、ストレージにアクセスするためのコマンドを含むパケットと、それに対応付けられたパケットを識別するための情報である。シーケンス番号２１３は、同一のコマンドIDを付加されたパケットを識別するため、イニシエータ装置１００とターゲット装置１１０のそれぞれからの発行時にインクリメントして付加する情報である。パケット長２１４は、ヘッダ２００を含むパケット全体長を示す情報である。
【００４２】
ペイロードタイプ２１０は、例えば、コマンド（CMD）、レスポンス（RES）、データフラグメント（DATA）、データアクノリッジ（DACK）、インタラプト（INT）、チェックステータス（CST）が挙げられる。これらのうち、コマンド（CMD）、レスポンス（RES）、データフラグメント（DATA）は、イニシエータ装置１００とターゲット装置１１０との間でストレージインターフェース部１１３を介して転送される。また、コマンド（CMD）、レスポンス（RES）、データフラグメント（DATA）は、ターゲット装置１１０とストレージ１２０との間でストレージインターフェース部１１３を介して転送される。また、同一方向に連続的に発行することになるパケットのペイロードタイプ２１０は、１つのペイロードに統合することができる。具体的には、例えば、１つのペイロードに統合するのは、コマンド＋データフラグメント（CMD+DATA）、レスポンス＋データフラグメント（RES+DATA）、レスポンス＋データアクノリッジ（RES+DACK）等である。
【００４３】
上述したペイロードタイプ２１０の各例について、図３を参照して説明する。
【００４４】
コマンド（CMD）３００は、イニシエータ装置１００からターゲット装置１１０にアクセス要求として転送する、ターゲット装置１１０に接続されたストレージ１２０へのアクセスを発生させるものである。コマンド（CMD）３００は、コマンドタイプ（CTYP）３０１およびコマンドアーギュメント（CARG）３０２を備える。コマンドタイプ（CTYP）３０１は、初期化、ステータス確認、データの読出し、書込み、消去などを含むコマンドの種別を示す。コマンドアーギュメント（CARG）３０２は、データの読出しや書込みの対象となるアドレスやデータの転送サイズなど、コマンド（CMD）３００の引数を含む。
【００４５】
レスポンス（RES）３１０は、コマンド（CMD）３００に対してストレージ１２０が返信し、それをターゲット装置１１０からイニシエータ装置１００にアクセス応答として転送するものである。レスポンス（RES）には、コマンド（CMD）３００の成否やストレージ１２０の状態を示すステータスレジスタの値を含む。
【００４６】
データフラグメント（DATA）３２０は、コマンド（CMD）３００で指定された読出しデータまたは書込みデータを無線通信に適したサイズに分割する。そして、データフラグメント（DATA）３２０は、分割した読出しデータまたは書込みデータをイニシエータ装置１００とターゲット装置１１０との間でアクセス要求として転送する。
【００４７】
データアクノリッジ（DACK）３３０は、データフラグメント（DATA）３２０の受信処理の進捗を示すため、アクセス応答としてデータフラグメント（DATA）３２０の送信側に返信するものである。データアクノリッジ（DACK）３３０は、受信処理が完了したデータフラグメント（DATA）３２０のシーケンス番号（SEQ）２１３を含む。
【００４８】
インタラプト（INT）３４０は、ターゲット装置１１０の非同期のイベントをアクセス要求としてイニシエータ装置１００に通知するためのものであり、非同期で通知するイベントの種別や割り込み要因を含む。
【００４９】
チェックステータス（CST）３８０は、イニシエータ装置１００がアクセス要求としてターゲット装置１１０に送信する。そして、それを受信したターゲット装置１１０は、アクセス応答としてイニシエータ装置１００に返信することで、ターゲット装置１１０の状態を確認することができる。ターゲット装置１１０からイニシエータ装置１００に返信するチェックステータス（CST）３８０には、ターゲット装置１１０がストレージ１２０へのアクセスを実行中か否か、を含む。イニシエータ装置１００は、ターゲット装置１１０からのチェックステータス（CST）３８０の返信を受けることで、ターゲット装置１１０の状態だけでなく、無線通信が正しく動作していることを確認できる。
【００５０】
コマンド＋データフラグメント（CMD+DATA）３５０は、データの書込みを指示するコマンド（CMD）３００と書込みのデータフラグメント（DATA）３２０を束ねて、一つのパケットとしたものである。
【００５１】
レスポンス＋データフラグメント（RES+DATA）３６０は、データの読出しを指示するコマンドに対するレスポンス（RES）３１０と読出しのデータフラグメント（DATA）３２０を束ねて、一つのパケットとしたものである。
【００５２】
レスポンス＋データアクノリッジ（RES+DACK）３７０は、データの書込みを指示するコマンドに対するレスポンス（RES）３１０と書込みのデータフラグメントに対するデータアクノリッジ（DACK）３３０を束ねて、一つのパケットとしたものである。
【００５３】
このように、イニシエータ装置１００とターゲット装置１１０との間で転送するアクセス要求およびアクセス応答は、図３に示すいずれかのペイロードを含む。なお、レスポンス＋データフラグメント（RES+DATA）３６０は、アクセス応答とアクセス要求の両方を兼ね備える。
【００５４】
＜イニシエータ装置１００の動作例１＞
次に、イニシエータ装置１００の動作例１として、アクセス要求処理について説明する。
【００５５】
図４は、イニシエータ装置１００が行うアクセス要求処理の一例を示すフローチャートである。
【００５６】
イニシエータ装置１００は、１つ以上のアクセス要求について、アクセス要求処理を行う（Ｓ４１０−１、Ｓ４１０−２、・・・、Ｓ４１０−Ｎ）。以下では、例としてステップＳ４１０−１のアクセス要求処理について説明する。
【００５７】
ステップＳ４１１において、アクセス要求処理部１０２は、ストレージ１２０へのリモートアクセスを発生させるためのコマンドパケットを、アクセス要求として、無線通信部１０１を介してターゲット装置１１０に送信する。ここでいうコマンドパケットは、例えば、図３のコマンド（CMD）３００を含むパケットであり、コマンド（CMD）３００がデータ転送を伴う書込みを示す場合は、コマンド＋データフラグメント（CMD+DATA）であってもよい。
【００５８】
ステップＳ４１２において、アクセス要求処理部１０２は、ストレージ１２０からのレスポンスパケットを、アクセス応答として、ターゲット装置１１０から無線通信部１０１を介して受信する。ここでいうレスポンスパケットは、例えば、図３のレスポンス（RES）３１０を含むパケットである。なお、レスポンスパケットは、ステップＳ４１１において、送信したコマンド（CMD）３００がデータ転送を伴う読出しを示す場合、レスポンス＋データフラグメント（RES+DATA）であってもよい。
【００５９】
ステップＳ４１３において、アクセス要求処理部１０２は、コマンドパケットのコマンドタイプがデータ転送を伴う、読出しであるか、または、書込みであるかを判定する。
【００６０】
上記判定の結果、アクセス要求処理部１０２は、ステップＳ４１１においてアクセス要求として送信したコマンドパケットの実行を完了する。なお、判定の結果とは、コマンドタイプがデータ転送を伴う読出しでも書込みでもない場合、または、データ転送を伴う読出しあるいは書込みがコマンドで指定された転送サイズに達して完了した場合（Ｓ４１３：無し又は完了）である。
【００６１】
上記判定の結果、コマンドタイプがデータ転送を伴う読出しである場合（Ｓ４１３：受信）、アクセス要求処理部１０２は、ステップＳ４１４へ進む。
【００６２】
ステップＳ４１４において、アクセス要求処理部１０２は、無線通信部１０１を介してターゲット装置１１０からの１つ以上のアクセス要求を受信する。ここでいうアクセス要求は、例えば、ストレージ１２０からの読出しデータからなるデータフラグメント（DATA）３２０を含むデータパケットである。
【００６３】
ステップＳ４１５において、アクセス要求処理部１０２は、無線通信部１０１を介してターゲット装置１１０にアクセス応答を送信する。ここでいうアクセス応答は、例えば、データアクノリッジ（DACK）３３０を含むデータアクノリッジパケットである。ここで、アクセス要求処理部１０２は、データフラグメントを含む複数のアクセス要求を連続的に受信した場合、最後のアクセス要求だけに対して、上記データアクノリッジパケットをアクセス応答として返信すればよい。
【００６４】
このようなステップＳ４１４とステップＳ４１５におけるデータ読出しは、ステップＳ４１３において完了と判断されるまで繰り返し実行されることになる。
【００６５】
上記判定の結果、コマンドタイプがデータ転送を伴う書込みである場合（Ｓ４１３：送信）、アクセス要求処理部１０２は、ステップＳ４１１へ進む。
【００６６】
ステップＳ４１１において、アクセス要求処理部１０２は、無線通信部１０１を介してターゲット装置１１０への１つ以上のアクセス要求を送信する。ここでいうアクセス要求は、例えば、ストレージ１２０への書込みデータからなるデータフラグメント（DATA）３２０を含むデータパケットである。
【００６７】
ステップＳ４１２において、アクセス要求処理部１０２は、無線通信部１０１を介してターゲット装置１１０からのアクセス応答を受信する。ここでいうアクセス応答は、例えば、データアクノリッジ（DACK）３３０を含むデータアクノリッジパケットである。ここで、アクセス要求処理部１０２は、データフラグメントを含む複数のアクセス要求を連続的に送信した場合、最後のアクセス要求に対するアクセス応答を受信する。これにより、アクセス要求処理部１０２は、それ以前に送信したアクセス要求が正しく処理されたことを確認することができる。
【００６８】
このようなステップＳ４１１とステップＳ４１２におけるデータ書込みが、ステップＳ４１３において完了と判断されるまで繰り返し実行されることになる。
【００６９】
上記のように、アクセス要求処理部１０２は、それぞれコマンドIDが異なる複数のアクセス要求だけでなく、同一のコマンドIDに対応付けられた複数のアクセス要求も連続的に送信することができる。
【００７０】
＜ターゲット装置１１０の動作例＞
ターゲット装置１１０の動作例として、アクセス要求処理について説明する。
【００７１】
図５は、ターゲット装置１１０が行うアクセス要求処理の一例を示すフローチャートである。
【００７２】
ターゲット装置１１０は、イニシエータ装置１００と同様に、１つ以上のアクセス要求について、アクセス要求処理を行う（Ｓ５１０−１、Ｓ５１０−２、・・・、Ｓ５１０−Ｎ）。以下では、例としてステップＳ５１０−１のアクセス要求処理について説明する。
【００７３】
ターゲット装置１１０におけるアクセス要求処理Ｓ５１０−１は、上述したイニシエータ装置１００におけるアクセス要求処理Ｓ４１０−１に対応しているため、ステップ毎の詳細な説明は省略する。アクセス要求処理Ｓ５１０−１は、アクセス要求処理Ｓ４１０−１にて送信されたアクセス要求を受信し、それに対するアクセス応答を送信することになる。このため、アクセス要求処理Ｓ５１０−１は、アクセス要求処理Ｓ４１０−１における各ステップと比べて、それぞれ送信と受信が逆になっている点が異なる。
【００７４】
＜イニシエータ装置１００の動作例２＞
次に、イニシエータ装置１００の動作例２として、タイムアウト検出処理について説明する。
【００７５】
図６は、イニシエータ装置１００が行うタイムアウト検出処理の一例を示すフローチャートである。
【００７６】
ステップＳ６００において、タイムアウト検出部１０３は、アクセス要求処理部１０２が最初のアクセス要求の送信を行うことを待機する。ここでいう最初のアクセス要求とは、例えば、イニシエータ装置１００からターゲット装置１１０へ送信される、リモートアクセスを開始するためのコマンドパケットである。
【００７７】
ステップＳ６１０において、タイムアウト検出部１０３は、最初のアクセス要求の送信が行われると、タイマをリセットして計時動作を開始する。なお、アクセス要求処理部１０２は、最初のコマンドパケットの送信に続いて、それぞれコマンドID（CID）２１２の異なるコマンドパケットをアクセス要求として連続的に送信することができる。これにより、アクセス要求処理部１０２は、１つ以上のアクセス要求処理（Ｓ４１０−１、Ｓ４１０−２、…、Ｓ４１０−Ｎ）を開始することになる。
【００７８】
ステップＳ６２０において、タイムアウト検出部１０３は、アクセス要求処理部１０２における１つ以上のアクセス要求処理（Ｓ４１０−１、Ｓ４１０−２、…、Ｓ４１０−Ｎ）におけるアクセス要求またはアクセス応答の送受信を監視する。そして、タイマにより計時している時間（以下、「計時時間」という）が予め規定されたタイムアウト時間に達する前に、アクセス要求またはアクセス応答の送受信があるか否か、を判定する。この判定は、「タイムアウト判定」という。
【００７９】
計時時間がタイムアウト時間に至る前に、アクセス要求処理部１０２にてアクセス要求またはアクセス応答の送受信があった場合（Ｓ６２０：送受信有）、タイムアウト検出部１０３は、Ｓ６３０に進む。
【００８０】
一方、計時時間がタイムアウト時間に至っても、アクセス要求処理部１０２にてアクセス要求またはアクセス応答の送受信がなかった場合（Ｓ６２０：送受信無）、タイムアウト検出部１０３は、タイムアウトを検出し、Ｓ６４０に進む。
【００８１】
ステップＳ６３０において、タイムアウト検出部１０３は、アクセス要求処理部１０２による１つ以上のアクセス要求処理（Ｓ４１０−１、Ｓ４１０−２、…、Ｓ４１０−Ｎ）の進捗を基に、未完了のリモートアクセスがあるか否かを判断する。
【００８２】
未完了のリモートアクセスが無いと判断した場合（Ｓ６３０：ＮＯ）、タイムアウト検出部１０３は、タイムアウトを検出せずに、Ｓ６４０へ進む。
【００８３】
未完了のリモートアクセスが有ると判断した場合（Ｓ６３０：ＹＥＳ）、タイムアウト検出部１０３は、Ｓ６１０へ進み、タイマをリセットし、計時動作を再開する。
【００８４】
ステップＳ６４０において、タイムアウト検出部１０３は、タイマを停止し、計時動作を終了する。
【００８５】
このような動作により、イニシエータ装置１００は、規定のタイムアウト時間内に、アクセス要求の送信、アクセス応答の受信、アクセス要求の受信、アクセス応答の送信のいずれかがある度に、タイマをリセットして計時動作を再開する。これにより、イニシエータ装置１００は、アクセス要求を１つずつ処理するストレージ１２０に対して複数のアクセス要求を連続して発行する場合に、アクセス要求毎のタイムアウト時間を算出する必要がない。すなわち、イニシエータ装置１００は、アクセス要求の発行数やストレージ１２０での実行状態に依存することなく、規定のタイムアウト時間を１つ用いて容易にタイムアウト検出を行うことができる。
【００８６】
＜通信システムの動作＞
以下、イニシエータ装置１００およびターゲット装置１１０の全体（以下「通信システム」という）の動作の各例を、図７〜図１１を用いて説明する。
【００８７】
まず、図７を参照して、イニシエータ装置１００から発行されるアクセス要求が、データ転送を伴うコマンドを含まない場合の動作例について説明する。ここで、イニシエータ装置１００とターゲット装置１１０との間で送受信されるアクセス要求またはアクセス応答（７００から７０５）は、ヘッダ２００とペイロード２０１からなる。図中のヘッダ内には、パケットタイプ（PTYP）２１０、コマンドID（CID）２１２、シーケンス番号（SEQ）２１３の順に記載している。すなわち、パケット７００に記載されたCMD,0,0は、パケットタイプがコマンドであり、コマンドIDが０、シーケンス番号が０であることを示す。また、ペイロードについては、コマンドID＝０のコマンドをコマンド０またはＣＭＤ０とし、それに対するレスポンスをレスポンス０またはＲＥＳ０とする。なお、図７では、タイムアウトが検出されない例とする。図中のＴ１〜Ｔ６は、イニシエータ装置１００側で計時される時間軸上の時点を示している。
【００８８】
イニシエータ装置１００は、ターゲット装置１１０に接続されたストレージ１２０へのリモートアクセスを開始するため、Ｔ１からＴ３までの間、コマンド（CMD）を含むアクセス要求を連続的に３つ発行する。これにより、イニシエータ装置１００は、３つのリモートアクセスを開始する。それらリモートアクセスは、コマンドのコマンドID（CID）２１２で識別される。例として、イニシエータ装置１００は、Ｔ１のときにアクセス要求７００、Ｔ２のときにアクセス要求７０１、Ｔ３のときにアクセス要求７０２を発行する。なお、これらアクセス要求に含まれるコマンドの全ては、データ転送を伴わないコマンドとする。ここで、無線通信部１０１が、アクセス要求処理部１０２から受け渡された３つのアクセス要求７００、７０１、７０３をまとめて送信する場合、Ｔ１からＴ３は同時刻となる。
【００８９】
また、ストレージ１２０は、同時に１つのコマンドしか処理できないものとする。よって、ターゲット装置１１０は、イニシエータ装置１００から受信した各アクセス要求から抽出した複数のコマンドを、逐次的にストレージに発行する必要がある。
【００９０】
図７に示す７０６は、各アクセス要求に含まれる各コマンドにより開始されるリモートアクセスの実行状態を示す。図７の例では、最初に、アクセス要求７００が含むコマンド０により開始されるリモートアクセス０がＴ１から実行状態となる。このとき、Ｔ２、Ｔ３で開始されるリモートアクセス１、２は、それぞれ実行待機状態となる。
【００９１】
まず、リモートアクセス０が実行されるＴ１からＴ４の間について説明する。
【００９２】
イニシエータ装置１００は、Ｔ１からＴ３の間、ターゲット装置１１０に対し、３つのアクセス要求７００、７０１、７０２を連続的に送信し、それぞれリモートアクセス０、１、２を開始する。このとき、イニシエータ装置１００は、最初のアクセス要求７００の送信時（Ｔ１）に、タイマによる計時を開始する。そして、以降、アクセス要求７０１、７０２の送信時（Ｔ２、Ｔ３）には、それぞれ未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。ここで、それらアクセス要求７００、７０１、７０２は、それぞれリモートアクセス０、１、２においてイニシエータ装置１００が最初に送信するパケットであるため、いずれもシーケンス番号として０が付加される。
【００９３】
ターゲット装置１１０は、最初に受信したアクセス要求７００からヘッダを除去し、コマンド０を抽出する。そして、ターゲット装置１１０は、ストレージ１２０へのローカルアクセスを開始するため、抽出したコマンド０をストレージ１２０に発行する。
【００９４】
ストレージ１２０は、コマンド０を受け取ると、ターゲット装置１１０との間のコマンド０の実行を開始する。
【００９５】
その後、ストレージ１２０は、コマンド０の実行結果を含むレスポンス０（ＲＥＳ０）をターゲット装置１１０に発行する。
【００９６】
ターゲット装置１１０は、受け取ったレスポンス０を含むアクセス応答７０３を生成し、アクセス応答７０３をイニシエータ装置１００に返信する。
【００９７】
Ｔ４のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス応答７０３を受信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【００９８】
このように、リモートアクセス０が実行されるＴ１〜Ｔ４の期間、イニシエータ装置１００は、Ｔ１にて計時を開始した後、Ｔ２、Ｔ３、Ｔ４のそれぞれにてタイマをリセットし、計時を再開する。
【００９９】
次に、リモートアクセス１が実行されるＴ４からＴ５の間について説明する。
【０１００】
ターゲット装置１１０は、アクセス応答７０３の返信後、次のリモートアクセス１を実行状態に移すため、受信済みのアクセス要求７０１に含まれるコマンド１をストレージ１２０に発行する。
【０１０１】
ストレージ１２０は、コマンド１を受け取ると、ターゲット装置１１０との間のコマンド１の実行を開始する。その後、ストレージ１２０は、コマンド１の実行結果を含むレスポンス１をターゲット装置１１０に発行する。
【０１０２】
ターゲット装置１１０は、受け取ったレスポンス１を含むアクセス応答７０４を生成し、アクセス応答７０４をイニシエータ装置１００に返信する。
【０１０３】
Ｔ５のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス応答７０４を受信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【０１０４】
このように、リモートアクセス１が実行されるＴ４〜Ｔ５の期間、イニシエータ装置１００は、Ｔ４から再開された計時を継続し、Ｔ５ではタイマをリセットし、計時を再開する。
【０１０５】
次に、リモートアクセス２が実行されるＴ５からＴ６の間について説明する。
【０１０６】
ターゲット装置１１０は、アクセス応答７０４の返信後、次のリモートアクセス２を実行状態に移すため、受信済みのアクセス要求７０２に含まれるコマンド２をストレージ１２０に発行する。
【０１０７】
ストレージ１２０は、コマンド２を受け取ると、ターゲット装置１１０との間のコマンド２の実行を開始する。その後、ストレージ１２０は、コマンド２の実行結果を含むレスポンス２をターゲット装置１１０に発行する。
【０１０８】
ターゲット装置１１０は、受け取ったレスポンス２を含むアクセス応答７０５を生成し、アクセス応答７０５をイニシエータ装置１００に返信する。
【０１０９】
Ｔ６のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス応答７０５を受信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在しない、すなわち、全てのリモートアクセスが完了したと判断し、タイマを停止する。
【０１１０】
このように、リモートアクセス２が実行されるＴ５〜Ｔ６の期間、イニシエータ装置１００は、Ｔ５から再開された計時を継続し、Ｔ６でタイマを停止し、計時を終了する。
【０１１１】
このような動作により、イニシエータ装置１００は、規定のタイムアウト時間内に、アクセス要求の送信、アクセス応答の受信、アクセス要求の受信、アクセス応答の送信のいずれかがある度に、タイマをリセットして計時動作を再開する。これにより、イニシエータ装置１００は、アクセス要求を１つずつ処理するストレージ１２０に対し、無線通信を介して１以上のアクセス要求を発行する場合に、アクセス要求の発行数を考慮してタイムアウト時間を算出する必要がない。すなわち、イニシエータ装置１００は、アクセス要求の発行数やストレージ１２０での実行状態に依存することなく、規定のタイムアウト時間を１つ用いて（換言すれば、１つのタイマを用いて）容易にタイムアウト検出を行うことができる。
【０１１２】
次に、図８を参照して、図７の例においてイニシエータ装置１００とターゲット装置１１０の間でパケットロスが生じたときの動作例を説明する。図８は、例として、イニシエータ装置１００がアクセス応答７０４をパケットロスにより受信できなかった場合を示している。
【０１１３】
イニシエータ装置１００は、アクセス応答７０４を受信しないので、Ｔ４で再開した計時を、Ｔ５を経ても継続する。一方、ターゲット装置１１０は、レスポンス１を受け取ったことで、コマンド２をストレージ１２０へ発行する。これにより、ストレージ１２０は、リモートアクセス２の実行を開始する。
【０１１４】
ここで、規定のタイムアウト時間が、リモートアクセス１とリモートアクセス２の実行時間の最大値の和よりも大きい値であるとする。この場合、イニシエータ装置１００は、Ｔ６においてアクセス応答７０５を受信しても、タイムアウトを検出しない。また、Ｔ６のとき、イニシエータ装置１００は、アクセス応答７０４を未受信であるため、実際には完了しているリモートアクセス１を未完了であると判断し、タイマをリセットして計時を再開する。
【０１１５】
その後、イニシエータ装置１００は、Ｔ６からタイムアウト時間７０７が経過したＴ７のとき、タイムアウトを検出する。
【０１１６】
なお、図８の例では、ターゲット装置１１０が、アクセス応答７０４のパケットロスを検出してその再送を行い、イニシエータ装置１００が、Ｔ５からＴ７の間にアクセス応答７０４を受信すれば、タイムアウトは発生しない。
【０１１７】
このように、イニシエータ装置１００は、コマンドIDに依存することなく、アクセス要求の送信およびアクセス応答の受信のタイミングでタイマのリセットを行う。よって、タイマリセットの制御が簡易であるだけでなく、ターゲット装置１１０が行う再送によってアクセス応答の受信順が変わってしまった場合でも、イニシエータ装置１００はタイムアウトを正しく検出できる。
【０１１８】
次に、図９を参照して、図７の例においてターゲット装置１１０とストレージ１２０との間でパケットロスが生じたときの動作例を説明する。図９は、例として、ターゲット装置１１０がレスポンス１をパケットロスにより受け取れず、その結果として、イニシエータ装置１００が図７に示すアクセス応答７０４を受信できなかった場合を示している。
【０１１９】
イニシエータ装置１００は、アクセス応答７０４を受信しないので、Ｔ４で再開した計時を継続する。その後、イニシエータ装置１００は、Ｔ４からタイムアウト時間７０７が経過したＴ５のとき、タイムアウトを検出する。
【０１２０】
なお、図９に示す動作は、複数発行されるアクセス要求がデータ転送を伴うコマンドを含んでいる場合も、同様に行われる。
【０１２１】
このように、イニシエータ装置１００は、ターゲット装置１１０とストレージ１２０の間の区間でパケットロスが生じた場合、タイムアウトを正しく検出できる。
【０１２２】
次に、図１０を参照して、イニシエータ装置１００から発行されるアクセス要求が、データ転送を伴うコマンドを含む場合の動作例について説明する。なお、図１０では、タイムアウトが検出されない例とする。
【０１２３】
まず、リモートアクセス０が実行されるＴ１からＴ４の間について説明する。
【０１２４】
イニシエータ装置１００は、Ｔ１からＴ３の間、ターゲット装置１１０に対し、３つのアクセス要求７１０、７１１、７１２を連続的に発行し、それぞれリモートアクセス０、１、２を開始する。このとき、イニシエータ装置１００は、最初のアクセス要求７１０の送信時（Ｔ１）に、タイマによる計時を開始する。そして、以降、アクセス要求７１１、７１２の送信時（Ｔ２、Ｔ３）には、それぞれ未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【０１２５】
アクセス要求７１０は、ペイロードとしてコマンド０およびデータ０を含む。コマンド０は、ストレージ１２０へデータの書込みを指示するためのライトコマンドであり、図中の（Ｗ）は、書込みを意味する。また、データ０は、ストレージ１２０へ書き込まれるデータであり、図中の[０]は、シーケンス番号＝０を意味する。また、アクセス要求７１１は、ペイロードとしてコマンド１を含む。コマンド１は、ストレージ１２０からのデータの読出しを指示するためのリードコマンドであり、図中の（Ｒ）は、読出しを意味する。そして、アクセス要求７１２は、コマンド０の転送サイズで指定された残りの書込みデータを含み、イニシエータ装置１００から送信する２つ目のパケットであるため、シーケンス番号＝１が付加される。
【０１２６】
ターゲット装置１１０は、最初に受信したアクセス要求７１０からヘッダを除去し、コマンド０を抽出する。そして、ターゲット装置１１０は、ストレージ１２０へのローカルアクセスを開始するため、抽出したコマンド０をストレージ１２０に発行する。
【０１２７】
ストレージ１２０は、コマンド０に対するレスポンス０をターゲット装置１１０へ発行し、コマンド０で指定された書込みが開始可能であることを通知する。
【０１２８】
ターゲット装置１１０は、受信したアクセス要求７１０、７１２のそれぞれについてヘッダを除去し、シーケンス番号０と１のデータ０をそれぞれ抽出してから、ストレージ１２０に転送する。ここで、それら２つのデータ０は、コマンド０で指定された書込みデータを、無線通信に適したサイズに分割したデータフラグメントであるため、組み立て直された上でストレージ１２０に転送される。
【０１２９】
ストレージ１２０は、転送されてきた２つのデータ０の書込みを開始し、書込み中はビジー状態となる。
【０１３０】
ターゲット装置１１０は、ストレージ１２０への２つのデータ０の転送を完了すると、アクセス応答７１３を生成する。アクセス応答７１３は、コマンド０に対するレスポンス０と、データ０に対するデータアクノリッジ（DACK）０とを含む。ここで、データアクノリッジ０には、シーケンス番号１までのデータ０を正しくストレージ１２０に受け渡したことを示すため、ペイロードに１が含まれる。そして、ターゲット装置１１０は、生成したアクセス応答７１３をイニシエータ装置１００へ返信する。
【０１３１】
Ｔ４のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス応答７１３を受信する。これにより、イニシエータ装置１００は、コマンド０とそれに伴う全てのデータ０の送信完了を確認し、リモートアクセス０を完了する。また、このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【０１３２】
このように、リモートアクセス０が実行されるＴ１〜Ｔ４の期間、イニシエータ装置１００は、Ｔ１にて計時を開始した後、Ｔ２、Ｔ３、Ｔ４のそれぞれにてタイマをリセットし、計時を再開する。
【０１３３】
次に、リモートアクセス１が実行されるＴ４からＴ７の間について説明する。
【０１３４】
ターゲット装置１１０は、アクセス応答７１３の返信後、次のリモートアクセス１を実行状態に移す。このため、ターゲット装置１１０は、ストレージ１２０のビジー状態が解除されたことを検知してから、受信済みのアクセス要求７１１に含まれるコマンド１をストレージ１２０に発行する。コマンド１により開始されるリモートアクセス１は、ストレージ１２０からのデータの読出しである。
【０１３５】
ストレージ１２０は、コマンド１を受け取ると、リモートアクセス１の実行を開始する。そして、ストレージ１２０は、ターゲット装置１１０に対し、コマンド１に対するレスポンス１を発行する。また、ストレージ１２０は、ターゲット装置１１０に対し、データ１を送出する。データ１は、コマンド１で指定されたストレージ１２０からの読出しデータである。
【０１３６】
ターゲット装置１１０は、レスポンス１とデータ１を受信すると、それらを束ねたレスポンス＋データ（RES+DATA）を含むアクセス要求７１４を生成し、イニシエータ装置１００へ返信する。ここで、ターゲット装置１１０は、アクセス要求７１４がリモートアクセス１における最初の送信パケットであるため、シーケンス番号として０を付加する。
【０１３７】
Ｔ５のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス要求７１４を受信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【０１３８】
ターゲット装置１１０は、コマンド１の転送サイズで指定された残りの読出しデータを含むアクセス要求７１５を生成し、シーケンス番号として１を付加してイニシエータ装置１００へ送信する。
【０１３９】
Ｔ６のとき、イニシエータ装置１００は、規定のタイムアウト時間内で、ターゲット装置１１０からアクセス要求７１５を受信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在すると判断し、タイマをリセットして、計時を再開する。
【０１４０】
Ｔ７のとき、イニシエータ装置１００は、コマンド１の転送サイズで指定された読出しデータの末尾を含むアクセス要求７１５の受信処理が正常に終了する。受信処理が正常に終了すると、イニシエータ装置１００は、そのアクセス要求７１５のシーケンス番号である１を示すデータアクノリッジを含むアクセス応答７１６を生成し、ターゲット装置１１０に返信する。このとき、イニシエータ装置１００は、未完了のリモートアクセスが存在しない、すなわち、全てのリモートアクセスが完了したと判断し、タイマを停止する。
【０１４１】
このように、リモートアクセス１が実行されるＴ４〜Ｔ７の期間、イニシエータ装置１００は、Ｔ４から再開された計時を継続し、Ｔ７でタイマを停止し、計時を終了する。
【０１４２】
このような動作により、イニシエータ装置１００は、規定のタイムアウト時間内に、アクセス要求の送信、アクセス応答の受信、アクセス要求の受信、アクセス応答の送信のいずれかがある度に、タイマをリセットして計時動作を再開する。これにより、イニシエータ装置１００は、アクセス要求を１つずつ処理するストレージ１２０に対し、無線通信を介して１つ以上のアクセス要求を発行する場合に、アクセス要求の発行数に応じたタイムアウト時間を算出する必要がない。すなわち、イニシエータ装置１００は、アクセス要求の発行数あるいはストレージ１２０での実行状態に依存することなく、規定のタイムアウト時間を１つ用いて容易にタイムアウト検出を行うことができる。
【０１４３】
次に、図１１を参照して、図１０の例においてイニシエータ装置１００とターゲット装置１１０の間でパケットロスが生じたときの動作例を説明する。図１１は、例として、イニシエータ装置１００がアクセス要求７１４をパケットロスにより受信できなかった場合を示している。
【０１４４】
イニシエータ装置１００は、アクセス応答７０４を受信しないので、Ｔ４で再開した計時を、Ｔ５を経ても継続する。その後、Ｔ６のとき、イニシエータ装置１００は、アクセス要求７１５を受信する。一般的に、無線通信部１０１は、受信パケットをアクセス要求処理部１０２に受け渡す際に、対向するターゲット装置１１０からの送信順を保証する。このため、無線通信部１０１は、アクセス要求７１４が正しく再送されるまで、次のアクセス要求７１５をアクセス要求処理部１０２に受け渡さない。このため、Ｔ４で再開した計時は、Ｔ６においても継続される。
【０１４５】
その後、イニシエータ装置１００は、Ｔ４からタイムアウト時間７０７が経過したＴ７のとき、タイムアウトを検出する。
【０１４６】
なお、イニシエータ装置１００が、Ｔ５からＴ７の間に再送されたアクセス要求７１４を受信して、正常に処理が終了すれば、タイムアウトは検出されない。
【０１４７】
以上説明したように、本実施の形態のイニシエータ装置１００は、コマンドIDに依存することなく、アクセス要求の送信およびアクセス応答の受信のタイミングでタイマのリセットを行う。よって、本実施の形態では、タイマリセットの制御が簡易であるだけでなく、ターゲット装置１１０が行う再送によってアクセス応答の受信順が変わってしまった場合でも、イニシエータ装置１００はタイムアウトを正しく検出できる。
【０１４８】
(第２の実施の形態)
次に、第２の実施の形態について説明する。第１の実施の形態においては、規定のタイムアウト時間を１つだけ用いる構成であったが、例えば消去コマンドのように、その消去サイズによっては数十秒以上を要するアクセス要求もある。このため、タイムアウト時間をそれ以上に設定する必要があり、本来短時間で完了するアクセス要求についても、タイムアウト検出に長時間を要する課題がある。そこで、本実施の形態は、規定のタイムアウト時間を用いずにタイムアウトの検出を行う点が、第１の実施の形態と異なる。
【０１４９】
図１２は、本実施の形態に係る通信システムの構成例を示す。図１２において、図１と同じ構成については同一の符号を付している。第２の実施の形態では、ターゲット装置１１０にタイムアウト検出部１１５およびタイムアウト通知部１１６を加えた点が第１の実施の形態と異なる。これにより、ターゲット装置１１０は、ストレージ１２０とのローカルアクセスのタイムアウトを監視することができる。
【０１５０】
＜イニシエータ装置１００の構成＞
無線通信部１０１、アクセス要求処理部１０２、およびタイムアウト検出部１０３の各機能については、第１の実施の形態で説明したので説明を省略する。なお、アクセス要求処理部１０２およびタイムアウト検出部１０３の、第１の実施の形態で説明した以外の機能については、図１３を用いて説明する。
【０１５１】
＜ターゲット装置１１０の構成＞
無線通信部１１１、アクセス要求処理部１１２、およびストレージインターフェース部１１３の各機能については、第１の実施の形態で説明したので説明を省略する。本実施形態のターゲット装置１１０は、上記各部に加えて、タイムアウト検出部１１５およびタイムアウト通知部１１６を有する。
【０１５２】
タイムアウト検出部１１５は、ストレージインターフェース部１１３がストレージ１２０との間で行う入出力、すなわちローカルアクセスを監視する。そして、タイムアウト検出部１１５は、ストレージインターフェース部１１３が、コマンドを出力してからそのコマンドに対するレスポンスを入力するまでの時間を計時する。計時時間が規定のタイムアウト時間を越えた場合、タイムアウト検出部１１５は、タイムアウトを検出する。計時時間が規定のタイムアウト時間を越えなかった場合、タイマの動作を停止し、次の入出力を監視する。なお、タイムアウト検出部１１５が用いるタイムアウト時間は、ストレージ１２０の特性に応じて予め定められた値でもよいし、コマンドの種類に応じて設定される値であってもよい。
【０１５３】
なお、タイムアウト検出部１１５は、イニシエータ装置１００のタイムアウト検出部１０３と同じように動作してもよい。すなわち、タイムアウト検出部１１５は、ストレージインターフェース部１１３からコマンドやデータが出力される度に、タイマをリセットし、計時動作を開始または再開する。あるいは、タイムアウト検出部１１５は、ストレージインターフェース部１１３にレスポンスやデータが入力される度に、タイマをリセットし、計時動作を開始または再開する。そして、タイムアウト検出部１１５は、ストレージインターフェース部１１３での入出力を検出しないまま、計時時間が規定のタイムアウト時間を越えた場合、タイムアウトを検出する。
【０１５４】
タイムアウト検出部１１５は、タイムアウトを検出した場合、その旨をタイムアウト通知部１１６へ通知する。
【０１５５】
タイムアウト通知部１１６は、タイムアウト検出部１１５からタイムアウトが検出された旨の通知を受けると、タイムアウト通知を生成する。このタイムアウト通知は、ストレージ１２０へのローカルアクセスがタイムアウトしたことを示すものであり、図３のインタラプト（INT）３４０を含むアクセス要求である。そして、タイムアウト通知部１１６は、生成したタイムアウト通知を、無線通信部１１１を介してイニシエータ装置１００へ送信する。イニシエータ装置１００は、タイムアウト通知を受信すると、自装置でタイムアウトを検出した場合と同様に処理を行う。
【０１５６】
このように、イニシエータ装置１００は、ターゲット装置１１０とストレージ１２０間のローカルアクセスにおいて発生したタイムアウトを即座に検出することができ、早期にタイムアウトを検出できる。
【０１５７】
＜イニシエータ装置１００の動作例＞
次に、イニシエータ装置１００の動作例として、タイムアウト検出処理について説明する。
【０１５８】
図１３は、イニシエータ装置１００が行うタイムアウト検出処理の一例を示すフローチャートである。なお、図１３において、図６と同じステップについては、同一の符号を付し、ここでの説明は省略する。よって、以下では、ステップＳ６０１およびステップＳ６２１〜６２６についてそれぞれ説明する。
【０１５９】
ステップＳ６０１において、タイムアウト検出部１０３は、ステップＳ６２１〜６２６までのタイムアウト判定に備えて、状態確認要求の実行回数をカウントする状態確認カウンタを０に初期化する。
【０１６０】
ステップＳ６２１において、タイムアウト検出部１０３は、予め規定された状態確認時間内で、アクセス要求処理部１０２におけるアクセス要求またはアクセス応答の送受信が行われるまで待機する。状態確認時間は、イニシエータ装置１００のアクセス要求処理部１０２がターゲット装置１１０への状態確認要求を送信してから、状態確認応答を受けるまでの時間を考慮して決定される。このため、状態確認時間は、ターゲット装置１１０とストレージ１２０との間のローカルアクセス時間を考慮する必要がないため、第１の実施の形態で説明したタイムアウト時間と比べて十分短い時間が用いられる。
【０１６１】
ここで、アクセス要求処理部１０２にてタイムアウト通知および状態確認応答の受信を除く、通常のアクセス要求またはアクセス応答の送受信があった場合（Ｓ６２１：送受信有）、タイムアウト検出部１０３は、Ｓ６３０に進む。なお、このアクセス要求またはアクセス応答によってリモートアクセスが進展するため、ステップＳ６３０においてＹＥＳの判定となった場合、ステップＳ６０１にて状態確認カウンタを初期化し、タイムアウト判定を再開する。
【０１６２】
ここで、アクセス要求処理部１０２にてタイムアウト通知の受信があった場合（Ｓ６２１：タイムアウト通知受信）、タイムアウト検出部１０３は、タイムアウトを検出し、Ｓ６４０に進む。
【０１６３】
ここで、アクセス要求処理部１０２にて状態確認応答の受信があった場合（Ｓ６２１：状態確認応答受信）、タイムアウト検出部１０３は、ステップＳ６２２に進む。
【０１６４】
ここで、アクセス要求部１０２にて上記のような送受信が無いまま状態確認時間が経過した場合（Ｓ６２１：状態確認時間経過）、タイムアウト検出部１０３は、ステップＳ６２３にて状態確認カウンタを増分した後、ステップＳ６２４に進む。
【０１６５】
ステップＳ６２２において、タイムアウト検出部１０３は、状態確認応答のペイロードであるチェックステータス（CST）３８０を確認する。そして、タイムアウト検出部１０３は、ターゲット装置１１０とストレージ１２０との間のアクセスが実行中を示しているか否か、を判定する。
【０１６６】
上記判定の結果、アクセス実行中を示さない場合（Ｓ６２２：ＮＯ）、タイムアウト検出部１０３は、ステップＳ６２３にて状態確認カウンタを増分した後、ステップＳ６２４に進む。
【０１６７】
上記判定の結果、アクセス実行中を示す場合（Ｓ６２２：ＹＥＳ）、タイムアウト検出部１０３は、ステップＳ６２３における状態確認カウンタの増分をスキップし、ステップＳ６２４に進む。
【０１６８】
ステップＳ６２４において、タイムアウト検出部１０３は、状態確認カウンタが、予め設定された規定値に達しているか否か、を判定する。
【０１６９】
上記判定の結果、状態確認カウンタが規定値に達している場合（Ｓ６２４：ＹＥＳ）、タイムアウト検出部１０３は、タイムアウトを検出し、ステップＳ６４０に進む。
【０１７０】
上記判定の結果、状態確認カウンタが規定値に達していない場合（Ｓ６２４：ＮＯ）、タイムアウト検出部１０３は、ステップＳ６２５にて、アクセス要求処理部１０２に状態確認要求の送信を指示する。そして、アクセス要求処理部１０２にて状態確認要求が送信されると、ステップＳ６１０にてタイマをリセットし、以降の処理を繰り返す。
【０１７１】
以上、本実施の形態のタイムアウト判定は、状態確認時間内で、ターゲット装置１１０からタイムアウト通知の受信、または、状態確認要求の実行回数を示す状態確認カウンタが規定値に達した時に、タイムアウトを検出する。ここで、イニシエータ装置１００は、上述の消去コマンドのような長時間を要するコマンドを発行した場合、タイムアウトを検出することは無い。その理由は、ステップＳ６２１にて受信する状態確認応答が、ターゲット装置１１０とストレージ１２０との間のローカルアクセスが実行中であることを示す限り、状態確認カウンタを増分しないためである。一方、イニシエータ装置１００は、ターゲット装置１１０との間の無線通信状態が悪化して、状態確認応答を正しく受信できなくなると、状態確認カウンタが増分され、最終的にタイムアウトを検出することになる。また、イニシエータ装置１００は、タイムアウト通知の受信により、ターゲット装置１１０とストレージ１２０との間のローカルアクセスにおけるタイムアウトを検知することができるため、早期にタイムアウト検出できる可能性がある。
【０１７２】
＜通信システムの動作＞
以下、本実施の形態の通信システムの動作の各例を、図１４を用いて説明する。
【０１７３】
まず、図１４を参照して、状態確認要求が無線区間でパケットロスする場合の動作例について説明する。図中のＴ１〜Ｔ８は、ターゲット装置１１０側で計時される時間軸上の時点を示している。なお、図１４において、Ｔ１〜Ｔ５は、図８で説明した動作と同じである。よって、イニシエータ装置１００は、Ｔ４以降、レスポンス１の受信を待ち受けている状態である。なお、図１４においては、アクセス要求７０１に含むコマンド１が、上述の消去コマンドのように長時間を要するコマンドであることが図８と異なる。ストレージ１２０は、消去コマンドであるコマンド１を受信して、それに対するレスポンス１を返信すると、内部メモリの消去動作を完了するまでの長時間ビジー状態となる。
【０１７４】
Ｔ６のとき、イニシエータ装置１００は、図１３のステップＳ６２１にて送受信待ち状態のまま、計時時間が状態確認時間８１０を経過したと判断する。そして、イニシエータ装置１００は、ステップＳ６２３にて状態確認カウンタの増分後、ステップＳ６２４にて状態確認カウンタが規定値未満と判断する。そして、イニシエータ装置１００は、ステップＳ６２５での状態確認指示に基づき、ターゲット装置１１０へ状態確認要求８００を送信する。このとき、イニシエータ装置１００は、ステップＳ６１０にてタイマをリセットして計時を再開する。
【０１７５】
ここで、Ｔ５以降、無線区間の通信品質が低いままであるとすると、イニシエータ装置１００は、状態確認時間８１０が経過する度に、状態確認カウンタを増分させながら状態確認要求の送信を繰り返す。
【０１７６】
Ｔ７のとき、イニシエータ装置１００は、状態確認時間８１０が経過し、増分後の状態確認カウンタが（規定値−１）となって、状態確認要求を送信する。
【０１７７】
Ｔ８のとき、イニシエータ装置１００は、状態確認時間８１０が経過し、増分後の状態確認カウンタが規定値と等しくなるため、タイムアウトを検出する。
【０１７８】
なお、Ｔ６以降、無線区間の通信品質が改善し、イニシエータ装置１００が、全ての状態確認要求８００、８０１に対する状態確認応答を正しく受信できた場合、ステップＳ６２２での判定に基づき、状態確認カウンタは増分しない。それら状態確認応答には、アクセス実行中を示すチェックステータス（CST）３８０が含まれるためである。このため、イニシエータ装置１００は、ステップＳ６２４にて状態確認カウンタが規定値に達することでタイムアウトを検出することは無い。しかし、例えばストレージ１２０が異常状態になるなど、ターゲット装置１１０においてタイムアウトが検出された場合、イニシエータ装置１００は、ターゲット装置１１０からのタイムアウト通知の受信によりタイムアウトを検出できる。
【０１７９】
次に、図１５を参照して、コマンドを含むアクセス要求のパケットロスが発生した場合の動作例について説明する。なお、図１５において、Ｔ１〜Ｔ４は、図８で説明した動作と同様であり、イニシエータ装置１００がＴ２で送信するアクセス要求７０１がパケットロスすることが異なる。このため、イニシエータ装置１００は、Ｔ４以降、レスポンス１の受信を待ち受けている状態である。
【０１８０】
Ｔ５のとき、イニシエータ装置１００は、図１３のステップＳ６２１にて送受信待ち状態のまま、計時時間が状態確認時間８１０を経過したと判断する。そして、イニシエータ装置１００は、ステップＳ６２３にて状態確認カウンタの増分後、ステップＳ６２４にて状態確認カウンタが規定値未満と判断する。そして、イニシエータ装置１００は、ステップＳ６２５での状態確認指示に基づき、ターゲット装置１１０へ状態確認要求８００を送信する。このとき、イニシエータ装置１００は、ステップＳ６１０にてタイマをリセットして計時を再開し、再びステップＳ６２１の送受信待ち状態となる。
【０１８１】
そして、Ｔ６のとき、イニシエータ装置１００は、ターゲット装置１１０から、チェックステータス（CST）３８０として、アクセス行中ではないことを示す０が設定された状態確認応答８０２を受信する。このため、ステップＳ６２２にてアクセス実行中では無いと判定され、状態確認カウンタは増分される。
【０１８２】
Ｔ７のとき、イニシエータ装置１００は、状態確認時間８１０が経過し、増分後の状態確認カウンタが（規定値−１）となって、状態確認要求を送信する。そして、Ｔ８において、ターゲット装置１１０からの状態確認応答８０３を受信し、増分後の状態確認カウンタが規定値と等しくなるため、タイムアウトを検出する。
【０１８３】
以上、本実施の形態について説明したが、上記説明は一例であり、種々の変形が可能である。また、上記実施の形態では、本発明をハードウェアで構成する場合を例にとって説明したが、本発明はハードウェアとの連係においてソフトウェアでも実現することも可能である。
【０１８４】
以上、本開示のイニシエータ装置は、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置であって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するアクセス要求処理部と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、を備える。
【０１８５】
また、本開示のイニシエータ装置は、前記アクセス要求処理部が、前記ターゲット装置からアクセス要求を受信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置へ送信し、前記タイムアウト検出部が、前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の受信または前記アクセス応答の送信のいずれかを行う度に、計時動作をリセットして再開する。
【０１８６】
また、本開示のイニシエータ装置は、前記アクセス要求が、コマンドおよびデータフラグメントの少なくとも一方を含むパケットであり、前記アクセス応答が、レスポンスおよびデータアクノリッジの少なくとも一方を含むパケットである。
【０１８７】
また、本開示のイニシエータ装置は、前記タイムアウト検出部が、前記ターゲット装置と前記ストレージの間のアクセスがタイムアウトしたことを示すタイムアウト通知を前記アクセス要求処理部が受信したときに、タイムアウトを検出する。
【０１８８】
また、本開示のイニシエータ装置は、前記アクセス要求処理部が、前記計時動作が前記タイムアウト時間よりも短い規定の状態確認時間を超えた場合に、前記ターゲット装置に対して状態確認要求を送信し、当該状態確認要求に対する状態確認応答を前記ターゲット装置から受信し、前記タイムアウト検出部が、前記アクセス要求処理部が前記状態確認要求の送信および前記状態確認応答の受信のいずれかを行う度に、前記計時動作をリセットして再開する。
【０１８９】
また、本開示のイニシエータ装置は、前記タイムアウト検出部が、前記状態確認要求の実行回数を示す状態確認カウンタを管理し、当該状態確認カウンタが規定値に達した場合に、タイムアウトを検出する。
【０１９０】
また、本開示のイニシエータ装置は、前記状態確認応答が、前記ターゲット装置と前記ストレージとの間のアクセスが実行中かどうかを示すフラグを含み、前記タイムアウト検出部が、前記アクセス要求処理部において、アクセス実行中では無いことを示す前記フラグが設定された前記状態確認応答を受信すると、前記状態確認カウンタを増分しない。
【０１９１】
また、本開示の通信システムは、イニシエータ装置が、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスする通信システムであって、前記イニシエータ装置は、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するイニシエータ側アクセス要求処理部と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求処理部が前記アクセス要求の送信または前記アクセス応答の受信のいずれかを行う度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するタイムアウト検出部と、を備え、前記ターゲット装置は、前記イニシエータ装置から受信したアクセス要求を基に、前記ストレージとの間でローカルアクセスを行うストレージインターフェース部と、前記ローカルアクセスの結果を基に、前記イニシエータ装置に対してアクセス応答またはアクセス要求を送信するターゲット側アクセス要求処理部と、を備える。
【０１９２】
また、本開示のタイムアウト検出方法は、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線通信を行うことで、前記ストレージにアクセスするイニシエータ装置が行うタイムアウト検出方法であって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信するステップと、前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出するステップと、を備える。
【０１９３】
また、本開示のタイムアウト検出プログラムは、同時に１つのアクセス要求のみを処理するストレージが接続されたターゲット装置と無線区間を介して通信を行うことで、前記ストレージにアクセスするイニシエータ装置のコンピュータに実行させるタイムアウト検出プログラムであって、前記ターゲット装置へ１つ以上のアクセス要求を送信し、当該アクセス要求に対するアクセス応答を前記ターゲット装置から受信する処理と、前記アクセス要求の全てが完了するまでの間、前記アクセス要求の送信または前記アクセス応答の受信のいずれかが行われる度に、計時動作をリセットして再開し、前記計時動作が規定のタイムアウト時間を超えた場合に、タイムアウトを検出する処理と、を実行させる。
【０１９４】
２０１２年２月２０日出願の特願２０１２−０３４１５９の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
【産業上の利用可能性】
【０１９５】
本発明は、アクセス要求を１つずつ処理するストレージに対して複数のアクセス要求を連続して発行し、各アクセス要求についてタイムアウトの有無を監視する通信装置、通信方法、および通信制御プログラムとして有用である。本発明は、例えば、携帯電話機やタブレットなどの携帯機器、および、パーソナルコンピュータに適用することができる。
【符号の説明】
【０１９６】
１００  イニシエータ装置
１０１  無線通信部
１０２  アクセス要求処理部
１０３  タイムアウト検出部
１１０  ターゲット装置
１１１  無線通信部
１１２  アクセス要求処理部
１１３  ストレージインターフェース
１１５  タイムアウト通知部
１１６  タイムアウト検出部
１２０  ストレージ
【図１】
0005902702.tif 000002
【図２】
0005902702.tif 000003
【図３】
0005902702.tif 000004
【図４】
0005902702.tif 000005
【図５】
0005902702.tif 000006
【図６】
0005902702.tif 000007
【図７】
0005902702.tif 000008
【図８】
0005902702.tif 000009
【図９】
0005902702.tif 000010
【図１０】
0005902702.tif 000011
【図１１】
0005902702.tif 000012
【図１２】
0005902702.tif 000013
【図１３】
0005902702.tif 000014
【図１４】
0005902702.tif 000015
【図１５】
0005902702.tif 000016