(57)【要約】【課題】ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続してデバイスに送信し、デバイスが該複数のコマンドの実行順を決定する通信システムにおけるデータ転送の効率を高める。【解決手段】デバイス１５０は、ホスト装置１１０が発行した複数のコマンドのうちの、、次に実行するコマンドが決定した時点で、該次に実行するコマンドを通知するための次コマンド情報をホスト装置１１０に送信すると共に、該次に実行するコマンドに関するデータ転送の準備を行う（Ｓ６２、Ｓ７０）。ホスト装置１１０は、次コマンド情報をデバイス１５０から受信した際に、該次コマンド情報が示すコマンドの実行準備を開始する（Ｓ１２、Ｓ２０）。【選択図】図２
2013114541.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続して前記デバイスに送信し、前記デバイスが前記複数のコマンドの実行順を決定する通信システムにおける前記デバイスであって、
前記ホスト装置との送受信を行うデバイス通信部と、
前記複数のコマンドのうちの、次に実行するコマンドが決定した時点で、該次に実行するコマンドを通知するための次コマンド情報を、前記デバイス通信部を介して前記ホスト装置に送信すると共に、該次に実行するコマンドに関するデータ転送の準備を行うデバイス制御部とを備えることを特徴とするデバイス。
【請求項２】
ＵＳＢ（（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格に準拠するものであることを特徴とする請求項１に記載のデバイス。
【請求項３】
前記ホスト装置が送信した前記複数のコマンドは、各前記コマンドの識別子となるタグ情報が付属されており、
前記デバイス制御部は、前記次コマンド情報として、該コマンドのタグ情報を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを前記ホスト装置に送信することを特徴とする請求項２に記載のデバイス。
【請求項４】
ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続して前記デバイスに送信し、前記デバイスが前記複数のコマンドの実行順を決定する通信システムにおける前記ホスト装置であって、
前記デバイスと送受信を行うホスト通信部と、
次に実行するコマンドを通知するための次コマンド情報を前記ホスト通信部を介して前記デバイスから受信した際に、該次コマンド情報が示すコマンドの実行準備を開始するホスト制御部とを備えることを特徴とするホスト装置。
【請求項５】
ＵＳＢ（（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に準拠することを特徴とする請求項４に記載のホスト装置。
【請求項６】
前記ホスト装置が送信した前記複数のコマンドは、各前記コマンドの識別子となるタグ情報が付属されており、
前記ホスト制御部は、前記デバイスから受信した、前記複数のコマンドのうちのいずれかのコマンドのタグ情報を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを、前記次コマンド情報として認識することを特徴とする請求項５に記載のホスト装置。
【請求項７】
ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続して前記デバイスに送信し、前記デバイスが前記複数のコマンドの実行順を決定する通信システムにおいて、
前記デバイスは、
前記複数のコマンドのうちの、次に実行するコマンドが決定した時点で、該次に実行するコマンドを通知するための次コマンド情報を前記ホスト装置に送信すると共に、該次に実行するコマンドに関するデータ転送の準備を行い、
前記ホスト装置は、
前記次コマンド情報を前記デバイスから受信した際に、該次コマンド情報が示すコマンドの実行準備を開始することを特徴とする通信システム。
【請求項８】
ＵＳＢ（（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に準拠することを特徴とする請求項７に記載の通信システム。
【請求項９】
前記ホスト装置が送信した前記複数のコマンドは、各前記コマンドの識別子となるタグ情報が付属されており、
前記デバイスは、前記次コマンド情報として、該コマンドのタグ情報を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを前記ホスト装置に送信し、
前記ホスト装置は、前記デバイスから受信した、前記複数のコマンドのうちのいずれかのコマンドのタグ情報を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを、前記次コマンド情報として認識することを特徴とする請求項８に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術、より具体的には、ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドをデバイスに送信し、デバイスにより該複数のコマンドの実行順を決定する通信技術に関する。
【背景技術】
【０００２】
ホスト装置とデバイス間のデータ転送に際して、ホスト装置とデバイスが様々なメッセージのやりとりをする通信システムは知られている。例えば、特許文献１には、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏ）通信システムが開示されている。
【０００３】
また、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に準拠した通信システムにおいても、ホスト装置（例えばコンピュータ）とデバイス間は、メッセージのやりとりをしながらデータ転送を行う（非特許文献１）。
【０００４】
ＵＳＢ３．０規格では、ＵＳＢ２．０規格より転送速度が大幅に向上したことから、デバイスとしてＵＳＢ３．０規格に準拠した大容量の記憶装置が脚光を浴びている。これらのデバイスにおいて、ＵＳＢコントローラと記憶部（例えばハードディスク）間では、接続に関して、ＵＡＳＰ（ＵＳＢ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ  Ｐｒｏｔｏｃｏｌ）というプロトコルが知られており、データ転送に関しては、ＵＳＢ３.０  Ｂｕｌｋ  Ｓｔｒｅａｍ転送が用いられている。また、記憶部自身として、高速化のためにそのインタフェースにＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）が採用されたものが多い。
【０００５】
ＳＡＴＡには、ＮＣＱ（Ｎａｔｉｖｅ  Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ）という機能が定められている。ここで、ハードディスク（以下ＨＤＤとも表記する）を例にして、ＮＣＱについて簡単に説明する。
【０００６】
ＨＤＤに対してデータを読み書きするときに最も時間がかかる操作は、ヘッドの移動時間やディスクの回転待ち時間といったＨＤＤ内部の機械的な動作である。これらの動作と比べ、コマンドの送受信、コマンドのデコード、メモリアクセスなどの電気的な処理にかかる時間は、極めて短い。
【０００７】
ヘッドの移動時間は、ＨＤＤが読み書きの指令を出してからディスク上の希望のトラックにヘッドを位置付けるまでの時間を指しており、「シーク時間」と呼ばれる。シーク時間は、トラック間の移動距離によって大きく左右される。
【０００８】
希望のトラックにヘッドを位置付けた後に、そのトラック上にある希望のセクタにヘッドを位置付ける必要がある。ヘッドが、トラック方向に移動するが、セクタ方向に移動できないため、ディスクの回転によって希望のセクタがヘッドの真上に到着するまで待つ必要がある。この待ち時間は、「回転待ち時間」と呼ばれる。
【０００９】
上述した機械的動作によるオーバーヘッドを隠蔽するための技術として、ＣＱ（Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ）が知られている。ＣＱは、コマンドの実行完了を待たずに複数のコマンドを連続して発行し、そのままキューに溜めていく機能である。この機能により、長い時間を要するＨＤＤの機械的動作の完了をコマンドごとに待つことなく、次々とＨＤＤにコマンドを送り込むことができる。
【００１０】
しかし、ＣＱだけでは、ＨＤＤへのアクセスの劇的な高速化につながらない。キューに格納されたコマンドを受信した順番(インオーダー)に実行しただけでは、ＨＤＤの機械的動作の時間を短縮することができないからである。
【００１１】
ＮＣＱは、ＣＱと併用することによりＨＤＤアクセスの高速化を図るものである。具体的には、キューに格納された複数のコマンドを効率の良い順番に並べ替えてから実行する（所謂アウトオブオーダー実行）機能である。なお、「効率の良い順番」とは、キューに格納された複数のコマンドを実行するためのＨＤＤの機械的動作時間の総和が少ない順番を意味する。なお
【００１２】
なお、分かりやすいように、ＨＤＤを例に説明したが、ＳＤＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）など機械的なオーバーヘッドが無いドライブに関してもＮＣＱを適用することによりコマンド処理の向上を図ることがなされている。
【００１３】
ＳＡＴＡに準拠したＨＤＤやＳＳＤなどを備えるＵＳＢデバイスと、ホスト装置とは、下記の順序でデータ転送を行う。
【００１４】
まず、ホスト装置は、データ転送に関する複数のコマンドをデバイスに連続的に送信する。なお、これらの複数のコマンドには、夫々の識別子となるタグが付属されている。
【００１５】
デバイスは、上記複数のコマンドを受信すると、該複数のコマンドに実行順を決定すると共に、実行順に沿って当該コマンドの実行準備を行う。そして、該コマンドの実行準備が完了すると、ＥＲＤＹ  ＴＰ（ＥＲＤＹ：Ｅｎｄ  Ｐｏｉｎｔ  Ｒｅａｄｙ）というパケットをホスト装置に送信する。該ＥＲＤＹ  ＴＰには、上記コマンドのタグが含まれている。
【００１６】
ホスト装置は、ＥＲＤＹ  ＴＰを受信すると、それに含まれるタグに対応するコマンドの実行準備を開始し、実行準備が完了すると、該コマンドに対応するデータ転送を開始する。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特表２００９−５１５２５０号公報
【非特許文献】
【００１８】
【非特許文献１】Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ  ３.０  Ｓｐｅｃｉｆｉｃａｔｉｏｎ
【発明の概要】
【発明が解決しようとする課題】
【００１９】
以上の説明から分かるように、デバイスからＥＲＤＹ  ＴＰを受信するまで、ホスト装置は、次に実行すべきコマンドが分からないため、該コマンドの実行準備をすることができない。そのため、デバイス側において該コマンドの実行準備が出来てから、実際にデータ転送が開始されるまでに時間がかかるという問題がある。
【課題を解決するための手段】
【００２０】
本発明の１つの態様は、ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続して前記デバイスに送信し、前記デバイスが前記複数のコマンドの実行順を決定する通信システムである。
【００２１】
該通信システムにおいて、前記デバイスは、前記複数のコマンドのうちの、次に実行するコマンドが決定した時点で、該次に実行するコマンドを通知するための次コマンド情報を前記ホスト装置に送信すると共に、該次に実行するコマンドに関するデータ転送の準備を行う。
【００２２】
前記ホスト装置は、前記次コマンド情報を前記デバイスから受信した際に、該次コマンド情報が示すコマンドの実行準備を開始する。
【００２３】
なお、上記態様の通信システムを方法や装置に置換えて表現したものや、該通信システムに含まれるホスト装置及びデバイス、コンピュータを該ホスト装置またはデバイスとして動作せしめるプログラムなども、本発明の態様としては有効である。
【発明の効果】
【００２４】
本発明にかかる技術によれば、ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続してデバイスに送信し、デバイスが該複数のコマンドの実行順を決定する通信システムに対して、ホスト装置とデバイス間のデータ転送の効率を向上させることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の原理を説明するための通信システムを示す図である。
【図２】図１に示す通信システムにおけるデータ転送に関連する処理の流れを示すフローチャートである。
【図３】本発明にかかる実施の形態を示すＵＳＢシステムを示す図である。
【図４】図３に示すＵＳＢシステムにおけるデータ転送に関する処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェアとソフトウェア（プログラム）の組合せによっていろいろな形で実現できることは当業者には理解されるところであり、ハードウェアとソフトウェアのいずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００２７】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００２８】
本発明の具体的な実施の形態の前に、まず、図１に示す通信システム１００を参照して、本発明にかかる技術の原理を説明する。
【００２９】
図１に示す通信システム１００は、ホスト装置１１０とデバイス１５０を備え、ホスト装置１１０は、デバイス１５０との間でのデータ転送に関する複数のコマンドを連続してデバイス１５０に送信し、デバイス１５０は、該複数のコマンドの実行順を決定する。
【００３０】
デバイス１５０は、上記複数のコマンドのうちの、次に実行するコマンドが決定した時点で、該次に実行するコマンドを通知するための次コマンド情報をホスト装置１１０に送信すると共に、該次に実行するコマンドに関するデータ転送の準備を行う。
【００３１】
ホスト装置１１０は、次コマンド情報をデバイス１５０から受信した際に、該次コマンド情報が示すコマンドの実行準備を開始する。
【００３２】
図２のフローチャートを参照して、通信システム１００におけるホスト装置１１０とデバイス１５０間のデータ転送に関連する処理の流れの一例を説明する。なお、図２において、点線が、ホスト装置１１０とデバイス１５０間で送受信されるデータの流れを示す。
【００３３】
図２に示すように、まず、ホスト装置１１０は、複数のコマンドを連続してデバイス１５０に送信する（Ｓ１０）。
【００３４】
デバイス１５０は、これらの複数のコマンドを受信すると、該複数のコマンドの実行順を決定する（Ｓ６０）
【００３５】
最も先に実行するコマンドが決まると、デバイス１５０は、該コマンドの実行準備を行うと共に、それに並行して、該コマンドが次に実行するコマンドであることを示す次コマンド情報をホスト装置１１０に送信する（Ｓ６２）。
【００３６】
ホスト装置１１０は、次コマンド情報を受信すると、該次コマンド情報が示すコマンド（ここでは、最も先に実行するコマンド）の実行準備を開始する（Ｓ１２）。
【００３７】
デバイス１５０は、最も先に実行するコマンドの実行準備が完了すると、デバイス１５０において該コマンドの実行準備が完了したことを示す準備完了情報をホスト装置１１０に送信する（Ｓ６４）。
【００３８】
ホスト装置１１０は、デバイス１５０から準備完了情報を受信すると、該準備完了情報が示すコマンドに対応するデータ転送を開始する。これにより、
【００３９】
ホスト装置１１０は、デバイス１５０から準備完了情報を受信すると、ホスト装置１１０側において該準備完了情報が示すコマンド（ここでは、最も先に実行するコマンド）の準備が完了していれば、直ちに対応するデータ伝送を開始する。これにより、最も先に実行するコマンドに対応するデータ転送が、ホスト装置１１０とデバイス１５０間で行われる（Ｓ１４、Ｓ６６）。
【００４０】
なお、デバイス１５０から準備完了情報を受信した時点で、ホスト装置１１０側においてまだ該コマンドの実行準備がまだ完了していなければ、ホスト装置１１０は、該コマンドの実行準備が完了次第、対応するデータ転送を開始する。
【００４１】
ホスト装置１１０とデバイス１５０間で、最も先のコマンドに対応するデータ転送がなされている間、デバイス１５０は、次に実行するコマンドが決定した時点で、該コマンドの実行準備に並行して、該コマンドを示す次コマンド情報をホスト装置１１０に送信する（Ｓ７０）。
【００４２】
ホスト装置１１０は、デバイス１５０から次コマンド情報を受信すると、該次コマンド情報が示すコマンドの実行準備を開始する（Ｓ２０）。
【００４３】
そして、デバイス１５０は、ホスト装置１１０とデバイス１５０間で行われている現在のデータ転送が完了すると、次のコマンドの準備完了情報をホスト装置１１０に送信する（Ｓ７２）。
【００４４】
なお、図２は、ホスト装置１１０とデバイス１５０間で行われている現在のデータ転送が完了した時点で、デバイス１５０において、次のコマンドの実行準備が既に完了した場合を示している。例えば、ホスト装置１１０とデバイス１５０間で行われている現在のデータ転送が完了した時点で、デバイス１５０における次のコマンドの実行準備がまだ完了していない場合には、デバイス１５０は、現在のデータ転送の完了後に、次のコマンドの実行準備の完了を待って、準備完了情報をホスト装置１１０に送信するようにすればよい。
【００４５】
その後、ステップＳ１０でホスト装置１１０が発行した全てのコマンドに対応するデータ転送が完了するまで、ホスト装置１１０側ではステップＳ１４とＳ２０の処理、デバイス１５０側ではステップＳ６６とＳ７０の処理が、繰り返される。
【００４６】
このように、通信システム１００において、デバイス１５０が、次に実行するコマンドが決定した時点で、前のコマンドに対応するデータ転送中であっても、次のコマンドの実行準備に並行して、該次のコマンドを示す次コマンド情報をホスト装置１１０に送信する。ホスト装置１１０は、現在のコマンドに対応するデータ転送中に、次のコマンドの実行準備を開始することができるため、通信システム１００におけるデータ転送の効率を向上させることができる。
【００４７】
以上の原理を踏まえて、本発明の具体的な実施の形態を説明する。
図３は、本発明の実施の形態にかかるＵＳＢシステム２００を示す。該ＵＳＢシステム２００は、ＵＳＢ３．０に準拠し、ホスト装置２１０と、デバイス２５０を有する。ＵＳＢシステム２００において、ホスト装置２１０は、デバイス２５０との間でのデータ転送に関する複数のコマンドを連続してデバイス２５０に送信して、デバイス２５０は、該複数のコマンドの実行順を決定する。
【００４８】
ホスト装置２１０は、デバイス２５０と送受信を行うためのホスト通信部２２０と、ホスト制御部としてのＵＳＢコントローラ２３０を備える。ホスト通信部２２０は、ホスト通信部２２０と送信部２２４を有する。
【００４９】
デバイス２５０は、ホスト装置２１０と送受信を行うためのデバイス通信部２６０と、デバイス制御部としてのＵＳＢコントローラ２７０と、記憶部となるハードディスク（以下ＨＤＤと表記する）ＨＤＤ２８０を備える。デバイス通信部２６０は、受信部２６２と送信部２６４を有する。
【００５０】
ホスト装置２１０とデバイス２５０の各機能ブロックを説明する。なお、ホスト装置２１０とデバイス２５０間の全ての通信は、ホスト通信部２２０とデバイス通信部２６０を介して行われる。以下の説明において、この点を省略する。
【００５１】
ホスト装置２１０におけるＵＳＢコントローラ２３０は、デバイス２５０との間でのデータ転送に関する複数のコマンドを連続して発行する処理と、該複数のコマンドのうちのいずれかのコマンドが次に実行するコマンドであることを示す次コマンド情報をデバイス２５０から受信した際に、該コマンドの実行準備を行う処理と、デバイス２５０における該コマンドの実行準備の完了を示す準備完了情報をデバイス２５０から受信した際に、デバイス２５０との間で、該コマンドに対応するデータ転送を開始する処理を行う。
【００５２】
なお、ホスト装置２１０側におけるコマンドの実行準備は、該コマンドに対応するデータ転送の転送方式の決定など、ＵＳＢ規格により定められた処理である。
【００５３】
デバイス２５０におけるＨＤＤ２８０は、ＳＡＴＡ仕様のものであり、ＣＱとＮＣＱ機能を備える。そのため、ＨＤＤ２８０は、自身へのアクセス（リード／ライト）に関する複数のコマンドをキューにためておき、効率の良いように該複数のコマンドの実行順を決定する。
【００５４】
デバイス２５０におけるＵＳＢコントローラ２７０は、ホスト装置２１０からの複数のコマンドをＨＤＤ２８０に転送する処理、ＨＤＤ２８０により該複数のコマンドの実行順が決定した後に、次に実行するコマンドが決定した時点で、該コマンドの実行準備に並行して、次コマンド情報をホスト装置２１０に送信することにより次に実行するコマンドをホスト装置２１０に通知する処理、次に実行するコマンドの実行準備が完了次第、準備完了情報をホスト装置２１０に送信する処理などを行う。なお、次に実行するコマンドが最も先頭のコマンドではなく、かつ、次に実行するコマンドの準備完了時に、前のコマンドに対応するデータ転送がまだ終わっていない場合には、ＵＳＢコントローラ２７０は、前のコマンドに対応するデータ転送が完了次第、準備完了情報をホスト装置２１０に送信する。
【００５５】
デバイス２５０におけるコマンドの実行準備は、ＨＤＤ２８０における実行準備（トラックとセクタへの位置付け）が含まれる。なお、リードの場合には、ＨＤＤ２８０が当該トラックやセクタからデータを読み出してＵＳＢコントローラ２７０に出力する処理も含まれる。
【００５６】
ＵＳＢコントローラ２７０の処理をより具体的に説明する。
ＵＳＢコントローラ２７０は、上記複数のコマンドのうちの最も先に実行するコマンドをＨＤＤ２８０から通知されると、直ちに該コマンドの識別子を含む次コマンド情報をホスト装置２１０に送信する。その後、デバイス２５０における該コマンドの実行準備が完了次第、該コマンドの識別子を含む準備完了情報をホスト装置２１０に送信する。
【００５７】
ＵＳＢコントローラ２７０は、現在のコマンドに対応するデータ転送の開始後、次に実行するコマンドをＨＤＤ２８０から通知されると、直ちに該コマンドの識別子が含まれる次コマンド情報をホスト装置２１０に送信する。その後、現在のコマンドに対応するデータ転送の終了時と、次のコマンドの実行準備の完了時のうちの遅いほうのタイミングで、次のコマンドの識別子が含まれる準備完了情報をホスト装置２１０に送信する。
【００５８】
なお、本実施の形態のＵＳＢシステム２００において、コマンドの識別子は、タグ情報であり、ＵＳＢコントローラ２３０は、複数のコマンドをデバイス２５０に送信する際に、該複数のコマンドのタグ情報を付属させる。
【００５９】
また、ＵＳＢコントローラ２７０は、ＵＳＢ規格で定められているＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎに当該コマンドのタグ情報を付属させて、次コマンド情報としてホスト装置２１０に送信する。
【００６０】
ＵＳＢコントローラ２３０は、タグ情報を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎをデバイス２５０から受信した際に、該Ｖｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを、次に実行するコマンドを示す次コマンド情報として認識する。
【００６１】
なお、デバイス２５０からホスト装置２１０に送信される準備完了情報は、ＵＳＢ規格で定められているＥＲＤＹ  ＴＰであり、当該コマンドのタグ情報が含まれている。
【００６２】
図４を参照して、ＵＳＢシステム２００のホスト装置２１０とデバイス２５０間で行われるデータ転送に関連する処理の流れの一例を示す説明する。
【００６３】
タイミングＴ１において、ＵＳＢコントローラ２３０は、複数のコマンドをデバイス２５０に送信する。この例において、該複数のコマンドは、コマンドＣＭＤ１とコマンドＣＭＤ２の２つであり、夫々のコマンドには、該コマンドのタグ情報（ｔａｇ１またはｔａｇ２）が付属されている。なお、該２つのコマンドは、共にリードコマンドであるとする。
【００６４】
ＵＳＢコントローラ２７０は、ホスト装置２１０からの２つのコマンドをＨＤＤ２８０に転送する。
【００６５】
ＨＤＤ２８０は、ＵＳＢコントローラ２７０からコマンドＣＭＤ１とコマンドＣＭＤ２を受信すると、該２つのコマンドの実行順を決定する。例として、コマンドＣＭＤ２が先に実行されるコマンドとして決定されたとする。
【００６６】
タイミングＴ２において、ＨＤＤ２８０は、先に実行するコマンド（コマンドＣＭＤ２）のタグ情報（ｔａｇ２）が含まれるＤＭＡ  Ｓｅｔｕｐ  ＦＩＳ（ＦＩＳ：Ｆｒａｍｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂｌｏｃｋ）をＵＳＢコントローラ２７０に送信する。
【００６７】
ＵＳＢコントローラ２７０は、ＨＤＤ２８０からコマンドＣＭＤ２のＤＭＡ  Ｓｅｔｕｐ  ＦＩＳを受信すると、直ちにＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎをホスト装置２１０に送信する。このＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎには、ＨＤＤ２８０から受信したＤＭＡ  Ｓｅｔｕｐ  ＦＩＳに含まれたタグ情報（ｔａｇ２）が含まれている。
【００６８】
ホスト装置２１０におけるＵＳＢコントローラ２３０は、ｔａｇ２を含むＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを受信すると、該メッセージを次コマンド情報として認識し、ｔａｇ２が対応するコマンド（コマンドＣＭＤ２）の実行準備を開始する。
【００６９】
ＨＤＤ２８０は、タイミングＴ２でＤＭＡ  Ｓｅｔｕｐ  ＦＩＳをＵＳＢコントローラ２７０に送信した後に、当該コマンド（コマンドＣＭＤ２）が示すデータを順次読み出してＵＳＢコントローラ２７０に送信する。例として、コマンドＣＭＤ２が示すデータには、ＤＡＴＡ１〜３の３つのデータが含まれ、順次ＵＳＢコントローラ２７０に出力されるようになっている。
【００７０】
タイミングＴ３において、ＵＳＢコントローラ２７０は、ＨＤＤ２８０からＤＡＴＡ１を受信すると、コマンドＣＭＤ２の実行が可能になったことを示す準備完了情報としてＥＲＤＹ  ＴＰをホスト装置２１０に出力する。このＥＲＤＹ  ＴＰには、コマンドＣＭＤ２のタグ情報（ｔａｇ２）が含まれている。
【００７１】
ホスト装置２１０のＵＳＢコントローラ２３０は、コマンドＣＭＤ２の準備完了情報を受信したときに、既に該コマンドの実行準備が完了したため、直ちにコマンドＣＭＤ２に対応するデータ転送を開始する。具体的には、デバイス２５０からのＥＲＤＹ  ＴＰに対応した、ＵＳＢ規格で定められた応答メッセージ（ＡＣＫ  ＴＰ）を返送する。分かりやすいように、図４においては、ＵＳＢコントローラ２３０がＡＣＫ  ＴＰを返送するタイミングをＴ４で示している。
【００７２】
タイミングＴ５において、ＵＳＢコントローラ２７０は、ホスト装置２１０からのＡＣＫ  ＴＰに応じて、ＤＡＴＡ１をホスト装置２１０に送信する。ＤＡＴＡ１を受信すると、ＵＳＢコントローラ２３０は、タイミングＴ６において、ＡＣＫ  ＴＰをデバイス２５０に返送する。
【００７３】
タイミングＴ３の後に、ＨＤＤ２８０は、引き続き、コマンドＣＭＤ２の後続のデータ（ＤＡＴＡ２、ＤＡＴＡ３）をＵＳＢコントローラ２７０に送信している。そのため、タイミングＴ８において、ＵＳＢコントローラ２７０は、タイミングＴ６においてホスト装置２１０が送信したＡＣＫ  ＴＰに応じて次のデータ（ＤＡＴＡ２）をホスト装置２１０に送信する。そして、タイミングＴ９において、ＵＳＢコントローラ２３０は、ＡＣＫ  ＴＰをデバイス２５０に返送する。なお、ＨＤＤ２８０は、コマンドＣＭＤ２の後続のデータ（ＤＡＴＡ２、ＤＡＴＡ３）を送信し終えると、コマンドＣＭＤ２に関連する全てのデータが完了したことを示すＳｅｔ  Ｄｅｖｉｃｅ  Ｂｉｔｓ  ＦＩＳ（Ｔａｇ２）を送信する。図４の例においては、Ｓｅｔ  Ｄｅｖｉｃｅ  Ｂｉｔｓ  ＦＩＳ（Ｔａｇ２）は、Ｔ５とＴ６の間に送信されている。
【００７４】
そして、タイミングＴ１０において、ＵＳＢコントローラ２７０は、コマンドＣＭＤ２の最後のデータ（ＤＡＴＡ３）をホスト装置２１０に送信し、タイミングＴ１１において、ＵＳＢコントローラ２３０は、ＡＣＫ  ＴＰを返送する。これにて、コマンドＣＭＤ２に対応するデータ転送が終了する。
【００７５】
コマンドＣＭＤ２に対応するデータ転送中に、図４の例では、タイミングＴ６とタイミングＴ８の間のタイミングＴ７において、ＨＤＤ２８０は、次のコマンド（コマンドＣＭＤ１）のＤＭＡ  Ｓｅｔｕｐ  ＦＩＳをＵＳＢコントローラ２７０に出力している。その後、コマンドＣＭＤ１に対応するデータ（ＤＡＴＡ４〜６）を順次ＵＳＢコントローラ２７０に出力している。そして、ＤＡＴＡ６の送信を終えると、コマンドＣＭＤ１に関連する全てのデータが完了したことを示すＳｅｔ  Ｄｅｖｉｃｅ  Ｂｉｔｓ  ＦＩＳ（Ｔａｇ１）を送信する。図４の例においては、Ｓｅｔ  Ｄｅｖｉｃｅ  Ｂｉｔｓ  ＦＩＳ（Ｔａｇ１）は、Ｔ１２とＴ１３の間に送信されている。
【００７６】
タイミングＴ６において、ＵＳＢコントローラ２７０は、ＨＤＤ２８０からＤＭＡ  Ｓｅｔｕｐ  ＦＩＳを受信すると、直ちにｔａｇ１が含まれるＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎをホスト装置２１０に送信する。
【００７７】
また、ホスト装置２１０のＵＳＢコントローラ２３０は、ｔａｇ１が含まれるＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎを受信すると、コマンドＣＭＤ１の実行準備を開始している。
【００７８】
そのため、コマンドＣＭＤ２に対応するデータ転送の完了後に、タイミングＴ１２において、ＵＳＢコントローラ２７０がホスト装置２１０にｔａｇ１を含むＥＲＤＹ  ＴＰを送信したときに、ホスト装置２１０側における該コマンドの実行準備が既に完了したため、ＵＳＢコントローラ２３０は、直ちにコマンドＣＭＤ１に対応するデータ転送を開始する。
【００７９】
コマンドＣＭＤ１に対応するデータ転送に関して、ホスト装置２１０とデバイス２５０の動作は、転送されるデータの中身が異なる以外、コマンドＣＭＤ２に対応するデータ転送のときと同様であるため、ここで詳細な説明を省略する。図示のように、タイミングＴ１９において、ＤＡＴＡ６を受信したホスト装置２１０がＡＣＫ  ＴＰをデバイス２５０に返送することをもって、タイミングＴ１でホスト装置２１０が発行した全てのコマンドに対応するデータ転送が完了する。
【００８０】
図３に示すＵＳＢシステム２００は、図１に示す通信システム１００を具現化したシステムであり、通信システム１００のときに説明した全ての効果を奏することができる。
【００８１】
さらに、ＵＳＢシステム２００において、デバイス側制御部としてのＵＳＢコントローラ２７０と、ホスト側制御部としてＵＳＢコントローラ２３０は、規格により定められたＶｅｎｄｏｒ  ｄｅｆｉｎｅｄ  Ｄｅｖｉｃｅ  Ｎｏｔｉｆｉｃａｔｉｏｎにコマンドのタグ情報を付属させて次コマンド情報として利用することにより、次コマンド情報として、規格に定められていない他のメッセージを追加する必要が無い。
【００８２】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは、当業者に理解されるところである。
【００８３】
例えば、図２に示すＵＳＢシステム２００において、デバイス２５０の記憶部として、ＮＣＱ機能を備えるＳＡＴＡ仕様のＨＤＤ２８０が用いられている。本発明にかかる技術は、このような記憶部が備えられたデバイスを有するシステムに限らず、ホスト装置がデバイスとの間でのデータ転送に関する複数のコマンドを連続してデバイスに送信し、デバイスが該複数のコマンドの実行順を決定するいかなる通信システムにも適用することができる。
【符号の説明】
【００８４】
１００  通信システム
１１０  ホスト装置
１５０  デバイス
２００  ＵＳＢシステム
２１０  ホスト装置
２２０  ホスト通信部
２２２  受信部
２２４  送信部
２３０  ＵＳＢコントローラ
２５０  デバイス
２６０  デバイス通信部
２６２  受信部
２６４  送信部
２７０  ＵＳＢコントローラ
２８０  ハードディスク
【図１】
2013114541.tif 000003
【図２】
2013114541.tif 000004
【図３】
2013114541.tif 000005
【図４】
2013114541.tif 000006