JP2008210226A - ホストとusbストレージデバイス間のデータ転送方法 - Google Patents
ホストとusbストレージデバイス間のデータ転送方法 Download PDFInfo
- Publication number
- JP2008210226A JP2008210226A JP2007047179A JP2007047179A JP2008210226A JP 2008210226 A JP2008210226 A JP 2008210226A JP 2007047179 A JP2007047179 A JP 2007047179A JP 2007047179 A JP2007047179 A JP 2007047179A JP 2008210226 A JP2008210226 A JP 2008210226A
- Authority
- JP
- Japan
- Prior art keywords
- data
- command
- host
- read
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】ホストからデバイスに送信されるコマンドの送信量を減らして、データの転送速度を高速化させる。
【解決手段】ホストは、転送種別であるリードまたはライトを指定するための命令コード、転送すべきデータが格納されているまたは転送すべきデータが格納されるデバイス側のセクタ領域を指定するためのパラメータ11-1、及び予備領域を含むSCSIコマンドの予備領域に、転送すべきデータの個数Pを表す要求LBA数データ10を挿入し、さらに、SCSIコマンドの後に、デバイス側のセクタ領域を指定するための(P-1)個のパラメータ11-2〜11-Pを追加して拡張コマンドを生成し、USBストレージデバイスに送信することによって、ホストとUSBストレージデバイス間で、一回のコマンド送信で、SCSIコマンドに記述されたパラメータによって指定された1個のデータ、及びSCSIコマンドの後に記述された追加パラメータによって指定された(P-1)個のデータを連続して転送する。
【選択図】図1
【解決手段】ホストは、転送種別であるリードまたはライトを指定するための命令コード、転送すべきデータが格納されているまたは転送すべきデータが格納されるデバイス側のセクタ領域を指定するためのパラメータ11-1、及び予備領域を含むSCSIコマンドの予備領域に、転送すべきデータの個数Pを表す要求LBA数データ10を挿入し、さらに、SCSIコマンドの後に、デバイス側のセクタ領域を指定するための(P-1)個のパラメータ11-2〜11-Pを追加して拡張コマンドを生成し、USBストレージデバイスに送信することによって、ホストとUSBストレージデバイス間で、一回のコマンド送信で、SCSIコマンドに記述されたパラメータによって指定された1個のデータ、及びSCSIコマンドの後に記述された追加パラメータによって指定された(P-1)個のデータを連続して転送する。
【選択図】図1
Description
この発明は、ホストとUSBストレージデバイス間のデータ転送方法に関する。
近年、各種のデータを記憶するUSB(Universal Serial Bus)ストレージデバイス(以下、「デバイス」または「記憶装置」と称する場合もある)が、広く普及している(例えば、特許文献1参照)。このUSBストレージデバイスは、例えばパーソナルコンピュータやPDA(Personal data Assistant)等の、ホストにマウント(接続)されて、ホストとの間で各種のデータの転送を行う。なお、ここでは、「転送」とは、受信動作及び送信動作の双方またはいずれか一方を意味している。
従来のデータ転送方法は、ホストとUSBストレージデバイス間において、ホストが、READコマンド(読出コマンド)またはWRITEコマンド(書込コマンド)として、転送すべきデータに関するパラメータが記述されたSCSI(Small Computer System Interface)コマンド(図8参照)を、USBストレージデバイスに送信することによって、行われる。このデータ転送方法は、USB2.0の規格によって規定されている。なお、図8は、従来のデータ転送方法で用いるコマンドのフォーマットの一例を示す図である。
図8に示すSCSIコマンドは、ホストからUSBストレージデバイスヘのデバイスアクセスに使用される。なお、ホストからUSBストレージデバイスヘのデバイスアクセスとは、ホストがUSBストレージデバイスからデータをリード(読み出し)する処理及びホストがUSBストレージデバイスにデータをライト(書き込み)する処理の双方またはいずれか一方を意味している。
このSCSIコマンドは、一般にCDB(Command Descriptor Block)と称される、複数バイト(byte)からなる定型のフォーマットとして形成されている。
図8に示す例では、従来のデータ転送方法で用いるSCSIコマンドは、各バイトを8ビット(bit)とする、10バイトの構成となっている。このSCSIコマンドは、0〜9バイト目に亘って、命令コード(Operation Code)領域、予備(Reserved)領域、LUN(Logical Unit Number:論理ユニット番号)領域、LBA(Logical Block Address:論理ブロックアドレス)領域、転送長(Transfer Length)領域、制御コード(Control Code)領域等を有している。
命令コード領域は、「READ」や「WRITE」等の命令コードが挿入される領域である。図8に示す例では、命令コード領域は、0バイト目の全域、すなわち、0〜7ビット目に形成されている。SCSIコマンドは、0バイト目の命令コード領域に、「READ」を表す命令コードが挿入された場合に、READコマンドとして機能し、「WRITE」を表す命令コードが挿入された場合に、WRITEコマンドとして機能する。
予備領域は、予備の空き領域である。図8に示す例では、予備領域は、1バイト目の0〜4ビット目及び6バイト目の全域に形成されている。
LUN領域は、LUN(Logical Unit Number)が挿入される領域である。図8に示す例では、LUN領域は、1バイト目の5〜7ビット目に形成されている。なお、LUNは、USBストレージデバイスのユニットに付された論理的なユニット番号である。
LBA領域は、LBA(Logical Block Address)の先頭アドレスが挿入される領域である。図8に示す例では、LBA領域は、2〜5バイト目の全域に形成されている。なお、LBAは、USBストレージデバイス内の全てのセクタ領域に付された論理的なセクタ番号である。LBAの値は、0から始まり、対応するセクタ領域毎に順次増加する。ホストは、USBストレージデバイスからデータをリード(読み出し)する場合に、または、USBストレージデバイスにデータをライト(書き込み)する場合に、このLBA領域にLBAの先頭アドレスを挿入することによって、リードすべきデータが格納されているUSBストレージデバイスの格納領域、または、ライトすべきデータを格納するUSBストレージデバイスの格納領域を指定する。
転送長領域は、転送すべきデータの長さを表す転送長データが挿入される領域である。図8に示す例では、転送長領域は、7〜8バイト目の全域に形成されている。なお、転送長領域には、パラメータリスト長(Parameter List Length)データや割当長(Allocation Length)データ等が挿入される場合もある。
制御コード領域は、チェックコード等の制御用の信号が挿入される領域である。図8に示す例では、制御コード領域は、9バイト目の全域に形成されている。
なお、「LBA領域」に記述されたLBAの先頭アドレス及び「転送長領域」に記述された転送長データが、上述の「転送すべきデータに関するパラメータ」11−1となる。
以下、図9−1、並びに、図9−2(A)及び(B)を参照して、従来のデータ転送方法におけるリード処理時のホスト及びデバイスの動作の概要につき説明する。なお、図9−1、並びに、図9−2(A)及び(B)は、それぞれ、リード処理時の従来のデータ転送方法の概要を示す図である。
図9−1は、リード処理時において、ホストとデバイスとの間で転送されるデータの一例を示している。
図9−1に示すように、リード処理は、コマンド転送ステージ、データ転送ステージ、ステータス転送ステージ等の工程を経て行われる。
「コマンド転送ステージ」とは、ホストがコマンドをデバイスに送信するステージである。なお、リード処理では、ホストは、コマンド転送ステージで、READコマンドをデバイスに送信する。このREADコマンドは、図8に示すフォーマットに対して、0バイト目の命令コード領域に、命令コード「READ」が挿入され、さらに、2〜8バイト目のLBA領域及び転送長領域に、リードすべきデータに関するパラメータ、すなわち、リードすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている。なお、ホストからREADコマンドを受信したデバイスは、コマンドの受信に応答して、ACK(Acknowledgement)応答またはNAK(Negative Acknowledgement)応答をホストに送信する。「ACK応答」とは、確認応答または肯定応答を意味している。ACK応答は、例えば、受信側が送信側から送信されたデータ(但し、コマンド等を含む)を正しく受信できた場合に送信される。「NAK応答」とは、否定応答を意味している。NAK応答は、例えば、受信側が送信側から送信されたデータ(但し、コマンド等を含む)を正しく受信できなかった場合に送信される。図9−1に示す例では、デバイスは、ACK応答をホストに送信している。
「データ転送ステージ」とは、ホスト及びデバイスのいずれか一方が送信側となり、他方が受信側となって、データを送信するステージである。リード処理では、デバイスは、データ転送ステージで、リードデータをホストに送信する。なお、デバイスからリードデータを受信したホストは、データの受信に応答して、ACK応答またはNAK応答をデバイスに送信する。図9−1に示す例では、ホストは、ACK応答をデバイスに送信している。
「ステータス転送ステージ」とは、デバイスがステータスをホストに送信するステージである。なお、デバイスからステータスを受信したホストは、ステータスの受信に対応するACK応答またはNAK応答をデバイスに送信する。図9−1に示す例では、ホストは、ACK応答をデバイスに送信している。
ホスト及びデバイスは、このようなリード処理を、リードすべき複数のデータの数だけ繰り返し行う。
図9−2(A)は、READコマンドの具体例を示しており、図9−2(B)は、図9−2(A)に示す複数のREADコマンドによって指定された各セクタ領域の位置を示している。
図9−2(A)に示すように、リード処理時において、ホストは、リードすべき複数のデータが格納されている各セクタ領域を個々に指定する複数のREADコマンドを生成して、生成した複数のREADコマンドをデバイスに順次送信する。
これらのREADコマンドは、上述の通り、命令コード領域に、命令コード「READ」が挿入され、さらに、LBA領域及び転送長領域に、リードすべきデータに関するパラメータ、すなわち、リードすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている(図8参照)。なお、READコマンドは、ホストによって、リードすべき複数のデータが格納されている各セクタ領域が、ファイルアロケーションテーブル(File Allocation Table(FAT))情報に基づいて、特定され、これら各セクタ領域が個々に指定されるように生成される。「FAT情報」とは、デバイスにおけるデータの格納領域を表す情報である。FAT情報は、デバイスがホストにマウント(接続)された時にデバイスからホストに送信されている。
図9−2(A)に示す例では、ホストは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域を指定するREADコマンド、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域を指定するREADコマンド、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域を指定するREADコマンド、…、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域を指定するREADコマンドをそれぞれ生成して、各READコマンドをデバイスに順次送信している。
デバイスは、ホストから各READコマンドを受信する度に、各READコマンドによって指定されたセクタ領域(図9−2(B)参照)に格納されているデータをホストに順次送信する。これによって、ホストは、デバイスからデータをリードする。
ホストは、リードすべき全てのデータをリードし終わるまで、各READコマンドを繰り返し送信する。そして、ホストは、リードすべき全てのデータをリードし終わった時点で、リード処理を終了する。
リード処理時の従来のデータ転送方法の動作の概要は、以上の通りである。
次に、以下、図10−1、並びに、図10−2(A)及び(B)を参照して、従来のデータ転送方法におけるライト処理時のホスト及びデバイスの動作の概要につき説明する。なお、図10−1、並びに、図10−2(A)及び(B)は、それぞれ、ライト処理時の従来のデータ転送方法の概要を示す図である。
図10−1は、ライト処理時において、ホストとデバイスとの間で転送されるデータの一例を示している。
図10−1に示すように、ライト処理は、リード処理と同様に、コマンド転送ステージ、データ転送ステージ、ステータス転送ステージ等の工程を経て行われる。
なお、ライト処理では、ホストは、コマンド転送ステージで、READコマンドの代わりに、WRITEコマンドをデバイスに送信する。このWRITEコマンドは、図8に示すフォーマットに対して、0バイト目の命令コード領域に、命令コード「WRITE」が挿入され、さらに、LBA領域及び転送長領域に、ライトすべきデータに関するパラメータ、すなわち、ライトすべきデータが格納されるセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている。なお、ホストからWRITEコマンドを受信したデバイスは、コマンドの受信に応答して、ACK応答またはNAK応答をホストに送信する。図10−1に示す例では、デバイスは、ACK応答をホストに送信している。
また、ライト処理では、ホストは、データ転送ステージで、ライトデータをデバイスに送信する。なお、ホストからライトデータを受信したデバイスは、データの受信に応答して、ACK応答またはNAK応答をホストに送信する。図10−1に示す例では、デバイスは、ACK応答をホストに送信している。
また、ライト処理では、デバイスは、ステータス転送ステージで、ステータスをホストに送信する。なお、デバイスからステータスを受信したホストは、ステータスの受信に対応するACK応答またはNAK応答をデバイスに送信する。図10−1に示す例では、ホストは、ACK応答をデバイスに送信している。
ホスト及びデバイスは、このようなライト処理を、ライトすべき複数のデータの数だけ繰り返し行う。
図10−2(A)は、WRITEコマンドの具体例を示しており、図10−2(B)は、図10−2(A)に示す複数のWRITEコマンドによって指定された各セクタ領域の位置を示している。
図10−2(A)に示すように、ライト処理時において、ホストは、ライトすべき複数のデータが格納される各セクタ領域を個々に指定する複数のWRITEコマンドを生成して、生成した複数のWRITEコマンドをデバイスに順次送信する。
これらのWRITEコマンドは、上述の通り、命令コード領域に、命令コード「WRITE」が挿入され、さらに、LBA領域及び転送長領域に、ライトすべきデータに関するパラメータ、すなわち、ライトすべきデータが格納されるセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている(図8参照)。なお、WRITEコマンドは、ホストによって、ライトすべき複数のデータが格納される各セクタ領域が、FAT情報に基づいて、特定され、これら各セクタ領域が個々に指定されるように生成される。
図10−2(A)に示す例では、ホストは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域を指定するWRITEコマンド、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域を指定するWRITEコマンド、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域を指定するWRITEコマンド、…、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域を指定するWRITEコマンドをそれぞれ生成して、各WRITEコマンドをデバイスに順次送信している。デバイスは、ホストからWRITEコマンドを受信する度に、ACK応答をホストに送信する。
ホストは、デバイスからACK応答を受信する度に、各WRITEコマンドによって指定されたセクタ領域(図10−2(B)参照)に格納されているデータをデバイスに順次送信する。これによって、ホストは、デバイスにデータをライトする。
ホストは、ライトすべき全てのデータをライトし終わるまで、各WRITEコマンドを繰り返し送信する。そして、ホストは、ライトすべき全てのデータをライトし終わった時点で、ライト処理を終了する。
ライト処理時の従来のデータ転送方法の動作の概要は、以上の通りである。
特開2002−342255号公報
上述した従来のデータ転送方法は、例えば、USBストレージデバイス内で断片化されて記録されているデータをリードする場合に、READコマンドを繰り返し送信することになる。そのため、従来のデータ転送方法は、ホストからデバイスに送信されるコマンドの送信量が増加し、これにより、データの転送速度が低下するという問題がある。
また、従来のデータ転送方法は、例えば、空きセクタが断片化されているUSBストレージデバイスにデータをライトする場合に、WRITEコマンドを繰り返し送信することになる。そのため、従来のデータ転送方法は、ホストからデバイスに送信されるコマンドの送信量が増加し、これにより、データの転送速度が低下するという問題がある。
そこで、この発明の目的は、USB2.0の規格を維持したまま、従来のデータ転送方法よりも、データの転送速度を高速化させることができる、ホストとUSBストレージデバイス間のデータ転送方法を提供することにある。
上述の課題を解決するために、この発明に係るホストとUSBストレージデバイス間のデータ転送方法は、ホストが、転送種別であるリードまたはライトを指定するための命令コード、転送すべきデータが格納されているまたは転送すべきデータが格納されるUSBストレージデバイス側のセクタ領域を指定するためのパラメータ、及び予備領域を含むSCSIコマンドを用いて、SCSIコマンドの予備領域に、転送すべきデータの個数Pを表す要求LBA数データを挿入し、さらに、SCSIコマンドの後に、USBストレージデバイス側のセクタ領域を指定するための(P−1)個の追加パラメータを付加することによって、拡張コマンドを生成し、この拡張コマンドをUSBストレージデバイスに送信する。
これによって、ホストは、ホストとUSBストレージデバイス間で、一回のコマンド送信で、P個の転送すべきデータ、すなわち、拡張コマンドの中のSCSIコマンドに記述されたパラメータによって指定された1個のデータ、及び拡張コマンドの中のSCSIコマンドの後に記述された追加パラメータによって指定された(P−1)個のデータを連続して転送、すなわち、送信または受信する。
なお、このデータ転送方法の実施に当たり、拡張コマンドの追加パラメータは、USBストレージデバイス側のセクタ領域を指定するための(P−1)個のLBAの先頭アドレス、及び転送すべきデータの長さを表す(P−1)個の転送長データを含んでいることが好ましい。
これによって、拡張コマンドの追加パラメータは、SCSIコマンドに記述されたパラメータと同じフォーマットとなる。そのため、この方法によれば、デバイスは、ホストから拡張コマンドを受信した場合に、SCSIコマンドに記述されたパラメータに対する処理と同様の処理で、追加パラメータを解読することができる。したがって、ホスト及びデバイスは、従来の規格(具体的には、USB2.0規格)を維持したまま、拡張コマンドを用いて、データ転送を行うことができる。
しかも、拡張コマンドの追加パラメータは、(P−1)個のLBAの先頭アドレス、及び(P−1)個の転送長データを含んでいる。そのため、ホストは、この拡張コマンドをデバイスに一回送信するだけで、P個の転送すべきデータ、すなわち、SCSIコマンドに記述されたパラメータによって指定された1個の転送すべきデータ、及び追加パラメータによって指定された(P−1)個の転送すべきデータを、デバイスに通知することができる。
また、このデータ転送方法の実施に当たり、ホストは、拡張コマンドをUSBストレージデバイスに送信した後に、USBストレージデバイスから拡張コマンドに対応するデータを取得した場合に、以降のコマンド送信では、拡張コマンドをUSBストレージデバイスに送信し、及び、拡張コマンドをUSBストレージデバイスに送信した後に、USBストレージデバイスから拡張コマンドに対応していないデータを取得した場合に、以降のコマンド送信では、従来のSCSIコマンドをUSBストレージデバイスに送信することが好ましい。
すなわち、ホストは、デバイスから拡張コマンドに対応するデータを取得した場合に、デバイスが拡張コマンドに対応していると判定し、デバイスから拡張コマンドに対応していないデータを取得した場合に、デバイスが拡張コマンドに対応していないと判定する。そして、ホストは、デバイスが拡張コマンドに対応していると判定された場合に、以降のコマンド送信では、拡張コマンドをUSBストレージデバイスに送信し、デバイスが拡張コマンドに対応していないと判定された場合に、以降のコマンド送信では、従来のコマンドをUSBストレージデバイスに送信する。
この方法によれば、ホストは、デバイスが拡張コマンドに対応していない場合に、以降のコマンド送信では、従来のコマンドを送信する。これにより、この方法は、拡張コマンドの送信機会を増やすことができる。
そのため、この方法によれば、さらに、デバイスに確実にリード処理またはライト処理を実行させながら、ホストからデバイスに送信されるコマンドの送信量を、従来のデータ転送方法よりも減らすことができ、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
この発明のデータ転送方法では、ホストが、USBストレージデバイスヘのデバイスアクセスに使用するSCSIコマンドを拡張して、一回のコマンド送信で、複数個のパラメータを同時に転送する。これにより、この発明のデータ転送方法は、USB2.0の規格を維持したまま、一回のコマンド送信で、転送すべき複数のデータを指定することができる。そのため、この発明のデータ転送方法は、ホストとデバイス間のコマンドの送信回数が、従来のデータ転送方法よりも格段に減少する。したがって、この発明のデータ転送方法によれば、ホストからデバイスに送信されるコマンドの送信量を、従来のデータ転送方法よりも減らすことができ、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
以下、図を参照して、この発明の実施の形態につき、「ホスト及びデバイスの構成」、「この発明のデータ転送方法で用いるコマンド」、「リード処理時のデータ転送方法」、及び「ライト処理時のデータ転送方法」の順番で説明する。各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
<ホスト及びデバイスの構成>
図11は、ホスト及ぶUSBストレージデバイスの一構成例を示すブロック図である。図11に示す例では、ホスト100とUSBストレージデバイス(以下、単に「デバイス」と称する)200は、USBバス300で電気的に接続されている。
図11は、ホスト及ぶUSBストレージデバイスの一構成例を示すブロック図である。図11に示す例では、ホスト100とUSBストレージデバイス(以下、単に「デバイス」と称する)200は、USBバス300で電気的に接続されている。
ホスト100は、内部に、制御部110、データ・プログラム格納部120、入出力部130等を有している。制御部110は、CPUによって構成されており、内部に、例えば、コマンド・応答生成手段112、判定手段114等の機能手段を備えている。コマンド・応答生成手段112は、データ・プログラム格納部120に格納されている通信用プログラムに基づいて、例えば、後述の拡張コマンドや、従来のSCSIコマンド、その他の各種のコマンド、ACK応答、NAK応答、その他の各種の応答を生成する。判定手段114は、データ・プログラム格納部120に格納されている通信用プログラムに基づいて、例えば、図3、及び図6に示す各種の判定ステップで、デバイスから送信されたデータや応答、ステータス等に対して、適宜判定処理を行う。データ・プログラム格納部120は、RAMによって構成されており、内部に、通信用プログラム、送信用データ、ファイルアロケーションテーブル(FAT)情報等を格納している。この通信用プログラムは、デバイスとの間の通信を行うためのプログラムである。この通信用プログラムは、例えば、各種のコマンド及び応答の生成や各種の判定に供する条件やデータ等が規定されている。送信用データは、ライト処理時に、ホストからデバイスに送信されるデータである。FAT情報は、デバイスにおけるデータの格納領域を表す情報である。
他方、デバイス200は、内部に、制御部210、データ・プログラム格納部220、入出力部230等を有している。制御部210は、CPUによって構成されており、内部に、例えば、応答・ステータス生成手段212、判定手段214等の機能手段を備えている。応答・ステータス生成手段212は、データ・プログラム格納部220に格納されている通信用プログラムに基づいて、例えば、各種の応答やステータスを生成する。判定手段214は、データ・プログラム格納部220に格納されている通信用プログラムに基づいて、例えば、図4、及び図7に示す各種の判定ステップで、ホストから送信されたコマンドやデータ、応答等に対して、適宜判定処理を行う。データ・プログラム格納部220は、RAMによって構成されており、内部に、通信用プログラム、送信用データ、FAT情報等を格納している。この通信用プログラムは、ホストとの間の通信を行うためのプログラムである。この通信用プログラムは、例えば、各種の応答及びステータスの生成や各種の判定に供する条件やデータ等が規定されている。送信用データは、リード処理時に、デバイスからホストに送信されるデータである。FAT情報は、上述の通り、デバイスにおけるデータの格納領域を表す情報である。
<この発明のデータ転送方法で用いるコマンド>
図1は、この発明のデータ転送方法で用いるコマンドのフォーマットの一例を示す図である。この発明のデータ転送方法は、ホストとUSBストレージデバイス間において、ホストが、例えば図1に示すコマンドをREADコマンドまたはWRITEコマンドとしてUSBストレージデバイス(以下、「デバイス」または「記憶装置」と称する場合もある)に送信することによって、行われる。
図1は、この発明のデータ転送方法で用いるコマンドのフォーマットの一例を示す図である。この発明のデータ転送方法は、ホストとUSBストレージデバイス間において、ホストが、例えば図1に示すコマンドをREADコマンドまたはWRITEコマンドとしてUSBストレージデバイス(以下、「デバイス」または「記憶装置」と称する場合もある)に送信することによって、行われる。
図1に示すように、この発明のデータ転送方法で用いるコマンドは、図8に示す従来のSCSIコマンドと比較すると、1バイト目の0〜4ビット目に、すなわち、1バイト目の予備領域に、転送すべきデータの個数Pを表す要求LBA数(Number of Transferred LBA)データ10が挿入され、さらに、10バイト目以降に、すなわち、従来のSCSIコマンドの後に、転送すべきデータに関する、(P−1)個の追加パラメータ11−2〜11−Pが付加されている。以下、この発明で用いるコマンドを「拡張コマンド」と称する。以下、拡張コマンドの構成につき詳述する。
拡張コマンドは、0バイト目の命令コード領域(Operation Code領域)に、命令コード「READ」が挿入された場合に、READコマンドとして機能し、また、命令コード「WRITE」が挿入された場合に、WRITEコマンドとして機能する。以下、命令コード領域に命令コード「READ」が挿入された拡張コマンドを「READ拡張コマンド」と称し、また、命令コード領域に命令コード「WRITE」が挿入された拡張コマンドを「WRITE拡張コマンド」と称する場合もある。
拡張コマンドは、2〜8バイト目に亘って、従来のSCSIコマンドと同様に、1個のパラメータが記述される。この2〜8バイト目に記述された1個のパラメータは、一番目に転送すべきデータに関連している。
拡張コマンドは、0〜9バイト目のフォーマットが、従来のSCSIコマンドと同じフォーマットとなっている。これは、従来のSCSIコマンドとの互換性を拡張コマンドに持たせるためである。すなわち、デバイスが、従来のSCSIコマンドに対する処理と同じ演算処理で、拡張コマンドを解読できるようにするためである。
なお、拡張コマンドは、例えば、1バイト目の0〜4ビット目の予備領域(Reserved領域)に、転送すべきデータの個数Pを表す要求LBA数データが挿入されている。この個数Pは、2〜8バイト目に記述された1個のパラメータと10バイト目以降に記述された(P−1)個の追加パラメータの合計数となっている。この個数Pは、データ転送用に予め定められた時間とホスト及びデバイスの演算能力との関係に基づいて、制限されていることが好ましい。図1に示す例では、個数Pは、32個以下に制限されている。なお、図1に示す例では、要求LBA数データは、1バイト目の予備領域に挿入されているが、予備領域であれば他の領域(例えば、6バイト目の予備領域)に挿入されるようにしてもよい。
また、拡張コマンドは、10バイト目以降に、(P−1)個の追加パラメータが追加されている。この10バイト目以降に記述された(P−1)個の追加パラメータは、二番目以降に転送すべきデータに関連している。なお、図1に示す例では、追加パラメータは、(P−1)個のLBAの先頭アドレス及び(P−1)個の転送長データ、すなわち、LBA(1),転送長(Transfer Length)(1),…,LBA(P),転送長(Transfer Length)(P)となっている。
<リード処理時のデータ転送方法>
(データ転送方法の概要)
以下、図2−1、図2−2(A)及び(B)、並びに、図2−3(A)及び(B)を参照して、この発明のデータ転送方法におけるリード処理時のホスト及びデバイスの動作の概要につき説明する。なお、図2−1、図2−2(A)及び(B)、並びに、図2−3(A)及び(B)は、それぞれ、リード処理時のこの発明のデータ転送方法の概要を示す図である。
(データ転送方法の概要)
以下、図2−1、図2−2(A)及び(B)、並びに、図2−3(A)及び(B)を参照して、この発明のデータ転送方法におけるリード処理時のホスト及びデバイスの動作の概要につき説明する。なお、図2−1、図2−2(A)及び(B)、並びに、図2−3(A)及び(B)は、それぞれ、リード処理時のこの発明のデータ転送方法の概要を示す図である。
図2−1は、リード処理時において、ホストとデバイスとの間で転送されるデータの一例を示している。
図2−1に示すように、この発明のデータ転送方法におけるリード処理は、従来のデータ転送方法(図9−1参照)におけるリード処理と同様に、コマンド転送ステージ、データ転送ステージ、ステータス転送ステージ等の工程を経て行われる。
リード処理では、ホストは、コマンド転送ステージで、READ拡張コマンドをデバイスに送信する。このREAD拡張コマンドは、図1に示すフォーマットに対して、0バイト目の命令コード領域に、命令コード「READ」が挿入され、1バイト目の0〜4ビット目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入され、2〜8バイト目のLBA領域及び転送長領域に、一番目にリードすべきデータに関するパラメータ、すなわち、一番目にリードすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入され、さらに、10バイト目以降に、(P−1)個の追加パラメータ、すなわち、二番目以降にリードすべき1乃至複数のデータが格納されているセクタ領域を指定する1乃至複数のLBAの先頭アドレス及び転送長データが追加された構成となっている。なお、ホストからREAD拡張コマンドを受信したデバイスは、コマンドの受信に応答して、ACK応答またはNAK応答をホストに送信する。図2−1に示す例では、デバイスは、ACK応答をホストに送信している。
また、リード処理では、デバイスは、データ転送ステージで、リードすべき全てのリードデータを一括してホストに連続送信する。なお、デバイスから全てのリードデータを連続受信したホストは、データの連続受信に応答して、ACK応答またはNAK応答をデバイスに送信する。図2−1に示す例では、ホストは、ACK応答をデバイスに送信している。
また、リード処理では、デバイスは、リードすべき全てのリードデータを一括してホストに連続送信した後に、ステータス転送ステージで、ステータスをホストに送信する。なお、デバイスからステータスを受信したホストは、ステータスの受信に対応するACK応答またはNAK応答をデバイスに送信する。図2−1に示す例では、ホストは、ACK応答をデバイスに送信している。
図2−2(A)は、READ拡張コマンドの具体例を示しており、図2−2(B)は、図2−2(A)に示す1個のREAD拡張コマンドによって指定された各セクタ領域を示している。
図2−2(A)に示すように、リード処理時において、ホストは、リードすべき複数のデータが格納されている各セクタ領域を一括して指定する1個のREAD拡張コマンドを生成して、生成した1個のREAD拡張コマンドをデバイスに送信する。なお、このとき、ホストは、上述のFAT情報に基づいて、リードすべき複数のデータが格納されている各セクタ領域を特定し、これら各セクタ領域を一括して指定する1個のREAD拡張コマンドを生成する。
このREAD拡張コマンドは、上述の通り、従来のREADコマンドと同様に、1バイト目の命令コード領域に、命令コード「READ」が挿入され、2〜8バイト目のLBA領域及び転送長領域に、一番目にリードすべきデータに関するパラメータ、すなわち、一番目にリードすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている(図1参照)。そして、このREAD拡張コマンドは、例えば、1バイト目の0〜4ビット目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入され、さらに、10バイト目以降に、二番目以降にリードすべきデータに関する(P−1)個の追加パラメータ、すなわち、二番目以降にリードすべきデータが格納されている各セクタ領域を指定する、(P−1)個のLBAの先頭アドレス及び転送長データが追加された構成となっている(図1参照)。
図2−2(A)に示す例では、ホストは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域、…、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域を指定するREAD拡張コマンドを生成して、当該READ拡張コマンドをデバイスに送信している。なお、ここでは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域に格納されているデータが、一番目にリードすべきデータとなる。また、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域に格納されているデータ、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域に格納されているデータ、…、及び、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域に格納されているデータが、それぞれ、二番目以降にリードすべきデータとなる。
デバイスは、ホストからREAD拡張コマンドを受信すると、これに応答して、READ拡張コマンドによって指定された各セクタ領域(図2−2(B)参照)に格納されている全てのデータを一括してホストに連続送信する。これによって、ホストは、デバイスからデータをリードする。
なお、デバイスが拡張コマンドに未対応の装置である場合に、ホスト及びデバイスの動作フローは、以下の通りとなる。
図2−3(A)及び(B)は、それぞれ、デバイスが拡張コマンドに未対応の装置である場合の動作フローを示している。図2−3(A)は、デバイスがホストから受信した拡張コマンドを解読できなかった場合の動作フローを示しており、図2−3(B)は、デバイスがホストから受信した拡張コマンドを従来通りのSCSIコマンドとして解読した場合の動作フローを示している。
図2−3(A)に示すように、リード処理時において、デバイスは、ホストから受信したREAD拡張コマンドを解読できなかった場合に、STALL応答をホストに送信する。なお、「STALL応答」とは、機能停止応答を意味している。STALL応答は、例えば、受信側が送信側から送信されたデータを解読できなかった場合に送信される。
デバイスからSTALL応答を受信したホストは、リセット信号をデバイスに送信し、さらに、続けて、従来通りのSCSIコマンドをデバイスに送信する。デバイスは、ホストから従来通りのSCSIコマンドを受信すると、これに応答して、ACK応答またはNAK応答をホストに送信する。これにより、ホストとデバイスは、従来通りのデータ転送方法で、データの転送を行う。以下の動作は、従来のデータ転送方法の動作と同様である。
また、図2−3(B)に示すように、リード処理時において、デバイスは、ホストから受信した拡張コマンドを従来通りのSCSIコマンドとして解読した場合に、SCSIコマンドに対するACK応答をホストに送信する。この後、デバイスは、READ拡張コマンドの2〜8バイト目に記述されたパラメータに対応して、当該READ拡張コマンドの2〜8バイト目に記述されたパラメータによって指定されたセクタ領域から一番目にリードすべきデータを読み出してホストに送信する。次に、デバイスは、その後のホストからのINパケットに対しては、コマンドが解読できていないため、NAK応答をホストに送信する。
デバイスからNAK応答を予め定められた時間以上受信したホストは、リセット信号をデバイスに送信し、さらに、続けて、従来通りのSCSIコマンドをデバイスに送信する。デバイスは、ホストから従来通りのSCSIコマンドを受信すると、これに応答して、ACK応答またはNAK応答をホストに送信する。これにより、ホストとデバイスは、従来通りのデータ転送方法で、データの転送を行う。以下の動作は、従来のデータ転送方法の動作と同様である。
リード処理時のこの発明のデータ転送方法の動作の概要は、以上の通りである。
リード処理時のこの発明のデータ転送方法では、ホストは、READ拡張コマンドをデバイス側に送信した後、予め定められた時間以内に、デバイス側からREAD拡張コマンドに対する正しい応答を受信した場合に、デバイス側が拡張コマンドに対応していると判定して、以降のデータ転送処理では、拡張コマンドをデバイスに送信する。なお、デバイスがREAD拡張コマンドに対する正しい応答を送信した場合とは、デバイスがREAD拡張コマンドの1バイト目の0〜4ビット目に記述された要求LBA数データによって指定されたサイズ分のデータ(以下、「要求LBA数サイズ分のデータ」と称する場合もある)を送信した場合である。
他方、ホストは、READ拡張コマンドをデバイス側に送信した後、予め定められた時間以内に、デバイス側からREAD拡張コマンドに対する正しい応答を受信しなかった場合に、デバイス側が拡張コマンドに対応していないと判定して、以降のデータ転送処理では、従来のSCSIコマンドをデバイスに送信する。なお、デバイスがREAD拡張コマンドに対する正しい応答を送信しなかった場合とは、デバイスがREAD拡張コマンドの1バイト目の0〜4ビット目に記述された要求LBA数サイズ分のデータを送信しなかった場合である。このような場合としては、デバイスが上述のSTALL応答を送信した場合や、デバイスが拡張コマンドの2〜8バイト目に記述されたパラメータによって指定されたデータのみを送信し、READ拡張コマンドの10バイト目以降に記述された追加パラメータによって指定されたデータを送信しなかった場合、すなわち、ホストのINパケットに対して、上述のNAK応答を送信した場合等がある。
この発明のデータ転送方法では、ホストは、リード処理時に、以上のように動作することにより、READ拡張コマンドの送信機会を増やしている。
そのため、この方法によれば、これによっても、デバイスに確実にリード処理を実行させながら、ホストからデバイスに送信されるコマンドの送信量を、従来のデータ転送方法よりも減らすことができ、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
(ホスト側の動作)
以下、図3を参照して、この発明のデータ転送方法におけるリード処理時のホスト側の動作につき詳述する。なお、図3は、リード処理時のホスト側の動作を示すフローチャートである。
以下、図3を参照して、この発明のデータ転送方法におけるリード処理時のホスト側の動作につき詳述する。なお、図3は、リード処理時のホスト側の動作を示すフローチャートである。
図3に示すように、この発明のデータ転送方法では、リード処理時において、ホストは、まず、READ拡張コマンドをデバイスに送信する(S110)。
S110の後、ホストは、READ拡張コマンドを送信してから予め定められた時間以内に、デバイスからREAD拡張コマンドに対する応答を受信する(S120)。このとき、ホストは、デバイスがREAD拡張コマンドの受信に成功していた場合に、デバイスからACK応答を受信し、デバイスがREAD拡張コマンドの解読に失敗していた場合に、デバイスからSTALL応答を受信する。
ホストは、デバイスから応答を受信すると、これに応答して、受信した応答がACK応答か否かを判定する(S130)。
S130の判定で、“イエス(Yes)”と判定された場合に、すなわち、S120で受信した応答がACK応答であると判定された場合に、ホストは、デバイスからリードデータを連続して受信する(S140)。このとき、ホストは、デバイスが支障なくリードデータを送信できなかった場合に、デバイスからNAK応答を受信することになる。なお、「デバイスが支障なくリードデータを送信できなかった場合」とは、後述の図4におけるS340またはS350で“ノー(No)”と判定された後、後述のS460でNAK応答が送信された場合を意味している。
S140の後、ホストは、S140で受信したデータがREAD拡張コマンドによって指定されたデータか否かを判定する(S150)。なお、このS150の判定では、ホストは、S140でリードデータを連続して受信できずにNAK応答を受信した場合に、“ノー”と判定する。
S150の判定で、“イエス”と判定された場合に、すなわち、S140で受信したデータが拡張コマンドによって指定されたデータであると判定された場合に、ホストは、S140で受信したデータが拡張コマンドによって指定された要求LBA数サイズ分のデータか否かを判定する(S160)。
S160の判定で、“イエス”と判定された場合に、すなわち、S140で受信したデータが要求LBA数サイズ分のデータであると判定された場合に、ホストは、デバイスへACK応答を送信し(S170)、デバイスからステータスを受信する(S180)。そして、ホストは、以降のデータ転送処理に拡張コマンドを使用することを決定する(S190)。
他方、S130の判定で、“ノー”と判定された場合に、すなわち、S120で受信した応答がACK応答でないと判定された場合に、または、S150の判定で、“ノー”と判定された場合に、すなわち、S140で受信したデータがREAD拡張コマンドによって指定されたデータでないと判定された場合に、または、S160の判定で、“ノー”と判定された場合に、すなわち、S140で受信したデータが要求LBA数サイズ分のデータでないと判定された場合に、ホストは、リセット信号をデバイスに送信し(S200)、さらに、以降のデータ転送処理に従来のSCSIコマンドを使用することを決定する(S210)。
S190の後、または、S210の後、ホストは、リード処理を終了する。
(デバイス側の動作)
以下、図4を参照して、この発明のデータ転送方法におけるリード処理時のデバイス側の動作につき詳述する。なお、図4は、リード処理時のデバイス側の動作を示すフローチャートである。
以下、図4を参照して、この発明のデータ転送方法におけるリード処理時のデバイス側の動作につき詳述する。なお、図4は、リード処理時のデバイス側の動作を示すフローチャートである。
図4に示すように、この発明のデータ転送方法では、リード処理時において、デバイスは、ホストからコマンドを受信する(S310)。
S310の後、デバイスは、S310で受信したコマンドが解読可能か否かを判定する(S320)。
S320の判定で、“イエス”と判定された場合に、すなわち、S310で受信したコマンドが解読可能であると判定された場合に、デバイスは、S310で受信したコマンドの命令コードを識別し、さらに、S310で受信したコマンドが拡張コマンドか否かを判定する(S330)。
S330の判定で、“イエス”と判定された場合に、すなわち、S310で受信したコマンドが拡張コマンド(ここでは、READ拡張コマンド)であると判定された場合に、デバイスは、S310で受信したコマンドの1バイト目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入されているか否かを判定する(S340)。この判定は、例えば、1バイト目の0〜4ビット目に、1以上の値が挿入されているか否かを識別することによって行われる。
S340の判定で、“イエス”と判定された場合に、すなわち、S310で受信したコマンドの1バイト目の予備領域に、要求LBA数データが挿入されていると判定された場合に、デバイスは、S310で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応しているか否かを判定する(S350)。すなわち、デバイスは、拡張コマンドのSCSIコマンド部分の先頭アドレス及び転送長データのサイズと追加パラメータのLBAの先頭アドレス及び転送長データのサイズの合計と、拡張コマンドの要求LBA数データによって指定されたサイズとを比較して、一致しているか否かを判定する。なお、「SCSIコマンド部分」とは、図1に示す例では、拡張コマンドの0〜9バイト目の領域となっている。
S350の判定で、“イエス”と判定された場合に、すなわち、S310で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応していると判定された場合に、デバイスは、ACK応答をホストに送信する(S360)。
S360の後、デバイスは、拡張コマンドに対応するデータ転送、すなわち、要求LBA数サイズ分のデータの連続送信を行う(S370)。このとき、デバイスは、拡張コマンドによって指定された全てのデータを該当のセクタ領域から読み出し、読み出した全てのデータを一括してホストに連続送信する。この後、デバイスの動作フローは、S470に進む。
他方、S320の判定で、“ノー”と判定された場合に、すなわち、S310で受信したコマンドが解読可能でないと判定された場合に、デバイスは、STALL応答をホストに送信する(S380)。S380の後、デバイスは、待機状態となり、ホストからリセット信号が送信されるのを待つ。そして、デバイスは、ホストからリセット信号を受信する(S390)と、再び、起動状態となる。このとき、デバイスの動作フローは、S310に戻る。そして、デバイスは、ホストから新たなコマンドが送信されるのを待つことになる。
また、S330の判定で、“ノー”と判定された場合に、すなわち、S310で受信したコマンドが拡張コマンドでないと判定された場合に、デバイスは、ACK応答を送信する(S410)。この後、デバイスの動作フローは、S440に進む。
また、S340の判定で、“ノー”と判定された場合に、すなわち、S310で受信したコマンドの1バイト目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入されていないと判定された場合に、デバイスは、ACK応答をホストに送信する(S420)。この後、デバイスの動作フローは、S440に進む。
また、S350の判定で、“ノー”と判定された場合に、すなわち、S310で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応していないと判定された場合に、デバイスは、ACK応答をホストに送信する(S430)。この後、デバイスの動作フローは、S440に進む。
S410の後、または、S420の後、または、S430の後、デバイスは、従来通りのデータ転送を行う(S440)。すなわち、デバイスは、受信コマンドのSCSIコマンド部分によって指定されたデータを格納領域から読み出し、読み出したデータをホストに送信する。S440の後、デバイスは、ホストからデータ転送に対する応答が送信されるのを待つことになる。このとき、デバイスは、ホストからINパケットを受信したか否かを監視しながら(S450)、ホストからデータ転送に対する応答が送信されるのを待つ。なお、デバイスは、S450の監視で“イエス”と判定された場合に、すなわち、ホストからデータ転送に対する応答が送信されるまでの間に、ホストからINパケットを受信した場合に、NAK応答をホストへ送信する(S500)。この場合、デバイスの動作フローは、S450に戻る。そして、デバイスは、再び、ホストからINパケットを受信したか否かを監視しながら、ホストからデータ転送に対する応答が送信されるのを待つ。
S370の後、または、S460の後、デバイスは、ホストからデータ転送に対する応答を受信する(S470)。このとき、デバイスは、デバイスがリードデータを正しく送信していた場合に、ホストからACK応答を受信し、デバイスがリードデータを正しく送信していなかった場合に、ホストからNAK応答またはリセット信号を受信することになる。
S470の後、デバイスは、S470で受信した応答がACK応答か否かを判定する(S480)。
S480の判定で、“イエス”と判定された場合に、すなわち、S470で受信した応答がACK応答であると判定された場合に、デバイスは、ステータスを送信する(S490)。
S490の後、デバイスは、ホストからステータスに対する応答を受信する(S500)。
そして、デバイスは、リード処理を終了する。
他方、S480の判定で、“ノー”と判定された場合に、すなわち、S470で受信した応答がACK応答でないと判定された場合に、デバイスの動作フローは、S310に戻る。そして、デバイスは、ホストから新たなコマンドが送信されるのを待つことになる。
(効果)
以下に、従来のデータ転送方法のリード処理に要する時間とこの発明のデータ転送方法のリード処理に要する時間とを比較して、この発明のデータ転送方法の効果を説明する。
以下に、従来のデータ転送方法のリード処理に要する時間とこの発明のデータ転送方法のリード処理に要する時間とを比較して、この発明のデータ転送方法の効果を説明する。
なお、ここでは、以下の(a)〜(e)の条件を前提条件とするものとして説明する。
(a)リードデータサイズを1G(ギガ)バイトとする。
(b)1セクタサイズを512バイトとする。
(c)連続して記録されているセクタは、ないものとする。なお、転送長は、全て1とする。
(d)この発明のデータ転送方法において、拡張コマンドで1度に転送するLBAは、最大32個とする。
(e)従来のデータ転送方法において、READコマンドの一回の処理時間は、1.5msとする。また、この発明のデータ転送方法において、READ拡張コマンドの一回の処理時間は、1.6msとする。
以上の前提条件において、従来のデータ転送方法では、READコマンドの送信回数は、(1024×1024×1024)/512=2097152回となる。
したがって、従来のデータ転送方法では、データの転送時間は、1.5ms×2097152回=3145728msとなる。
これに対し、この発明のデータ転送方法では、READ拡張コマンドの送信回数は、((1024×1024×1024)/512)/32=65536回となる。
したがって、この発明のデータ転送方法では、データの転送時間は、1.6ms×65536回=104858msとなる。
よって、上述の前提条件において、この発明のデータ転送方法は、従来のデータ転送方法よりも、約3000秒高速となっており、効果が有効であることが分かる。
この発明のデータ転送方法は、READ拡張コマンドの送信回数が多ければ多いほど、高速化することができ、効果が有効である。
また、この発明のデータ転送方法は、USB2.0の規格を維持しており、従来のデータ転送方法と互換性を保っている。そのため、この発明のデータ転送方法は、ホスト及びデバイスのどちらか一方が拡張コマンドに未対応であっても、拡張コマンドを従来のSCSIコマンドとして処理する。そのため、この発明のデータ転送方法は、ホスト及びデバイスのどちらか一方が拡張コマンドに未対応であっても、問題を生じることなく、データ転送を行うことができる。
以上の通り、この発明のデータ転送方法では、ホストが、USBストレージデバイスヘのデバイスアクセスに使用するSCSIコマンドを拡張して、一回のコマンド送信で、複数個のパラメータを同時に転送する。
これにより、この発明のデータ転送方法は、USB2.0の規格を維持したまま、一回のコマンド送信で、転送すべき複数のデータを指定することができる。そのため、この発明のデータ転送方法は、ホストとデバイス間のコマンドの送信回数が、従来のデータ転送方法よりも格段に減少する。したがって、この発明のデータ転送方法によれば、ホストからデバイスに送信されるコマンドの送信量を、従来のデータ転送方法よりも減らすことができ、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
<ライト処理時のデータ転送方法>
(データ転送方法の概要)
以下、図5−1、図5−2(A)及び(B)、並びに、図5−3(A)及び(B)を参照して、この発明のデータ転送方法におけるライト処理時のホスト及びデバイスの動作の概要につき説明する。なお、図5−1、図5−2(A)及び(B)、並びに、図5−3(A)及び(B)は、それぞれ、ライト処理時のこの発明のデータ転送方法の概要を示す図である。
(データ転送方法の概要)
以下、図5−1、図5−2(A)及び(B)、並びに、図5−3(A)及び(B)を参照して、この発明のデータ転送方法におけるライト処理時のホスト及びデバイスの動作の概要につき説明する。なお、図5−1、図5−2(A)及び(B)、並びに、図5−3(A)及び(B)は、それぞれ、ライト処理時のこの発明のデータ転送方法の概要を示す図である。
図5−1は、ライト処理時において、ホストとデバイスとの間で転送されるデータの一例を示している。
図5−1に示すように、この発明のデータ転送方法におけるライト処理は、従来のデータ転送方法(図10−1参照)におけるライト処理と同様に、コマンド転送ステージ、データ転送ステージ、ステータス転送ステージ等の工程を経て行われる。
ライト処理では、ホストは、コマンド転送ステージで、WRITE拡張コマンドをデバイスに送信する。このWRITE拡張コマンドは、図1に示すフォーマットに対して、0バイト目の命令コード領域に、命令コード「WRITE」が挿入され、1バイト目の0〜4ビット目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入され、2〜8バイト目のLBA領域及び転送長領域に、一番目にライトすべきデータに関するパラメータ、すなわち、一番目にライトすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入され、さらに、10バイト目以降に、(P−1)個の追加パラメータ、すなわち、二番目以降にライトすべき1乃至複数のデータが格納されているセクタ領域を指定する1乃至複数のLBAの先頭アドレス及び転送長データが追加された構成となっている。なお、ホストからWRITE拡張コマンドを受信したデバイスは、コマンドの受信に応答して、ACK応答またはNAK応答をホストに送信する。図5−1に示す例では、デバイスは、ACK応答をホストに送信している。
また、ライト処理では、ホストは、データ転送ステージで、ライトすべき全てのライトデータを一括してデバイスに連続送信する。なお、ホストから全てのライトデータを連続受信したデバイスは、データの連続受信に応答して、ACK応答またはNAK応答をホストに送信する。図5−1に示す例では、デバイスは、ACK応答をホストに送信している。
また、ライト処理では、デバイスは、ホストからライトすべき全てのライトデータを一括して連続受信した後に、ステータス転送ステージで、ステータスをホストに送信する。なお、デバイスからステータスを受信したホストは、ステータスの受信に対応するACK応答またはNAK応答をデバイスに送信する。図5−1に示す例では、ホストは、ACK応答をデバイスに送信している。
図5−2(A)は、WRITE拡張コマンドの具体例を示しており、図5−2(B)は、図5−2(A)に示す1個のWRITE拡張コマンドによって指定された各セクタ領域を示している。
図5−2(A)に示すように、ライト処理時において、ホストは、ライトすべき複数のデータが格納されている各セクタ領域を一括して指定する1個のWRITE拡張コマンドを生成して、生成した1個のWRITE拡張コマンドをデバイスに送信する。なお、このとき、ホストは、上述のFAT情報に基づいて、ライトすべき複数のデータが格納されている各セクタ領域を特定し、これら各セクタ領域を一括して指定する1個のWRITE拡張コマンドを生成する。
このWRITE拡張コマンドは、上述の通り、従来のWRITEコマンドと同様に、1バイト目の命令コード領域に、命令コード「WRITE」が挿入され、2〜8バイト目のLBA領域及び転送長領域に、一番目にライトすべきデータに関するパラメータ、すなわち、一番目にライトすべきデータが格納されているセクタ領域を指定するLBAの先頭アドレス及び転送長データが挿入された構成となっている(図1参照)。そして、このWRITE拡張コマンドは、例えば、1バイト目の0〜4ビット目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入され、さらに、10バイト目以降に、二番目以降にライトすべきデータに関する(P−1)個の追加パラメータ、すなわち、二番目以降にライトすべきデータが格納されている各セクタ領域を指定する、(P−1)個のLBAの先頭アドレス及び転送長データが追加された構成となっている(図1参照)。
図5−2(A)に示す例では、ホストは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域、…、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域を指定するWRITE拡張コマンドを生成して、当該WRITE拡張コマンドをデバイスに送信している。なお、ここでは、LBAの先頭アドレスを「0」とし、転送長を「2」とするセクタ領域に格納されているデータが、一番目にライトすべきデータとなる。また、LBAの先頭アドレスを「4」とし、転送長を「1」とするセクタ領域に格納されているデータ、LBAの先頭アドレスを「7」とし、転送長を「2」とするセクタ領域に格納されているデータ、…、及び、LBAの先頭アドレスを「98」とし、転送長を「1」とするセクタ領域に格納されているデータが、それぞれ、二番目以降にライトすべきデータとなる。
デバイスは、ホストからWRITE拡張コマンドを受信すると、これに応答して、WRITE拡張コマンドに対するACK応答またはNAK応答を送信する(図5−1参照)。
ホストは、デバイスからWRITE拡張コマンドに対する応答としてACK応答を受信すると、これに応答して、ライトすべき全てのデータを一括してデバイスに連続送信する。これによって、ホストは、データをデバイスにライトする。
なお、デバイスが拡張コマンドに未対応の装置である場合に、ホスト及びデバイスの動作フローは、以下の通りとなる。
図5−3(A)及び(B)は、それぞれ、デバイスが拡張コマンドに未対応の装置である場合の動作フローを示している。図5−3(A)は、デバイスがホストから受信した拡張コマンドを解読できなかった場合の動作フローを示しており、図5−3(B)は、デバイスがホストから受信した拡張コマンドを従来通りのSCSIコマンドとして解読した場合の動作フローを示している。
図5−3(A)に示すように、ライト処理時において、デバイスは、ホストから受信したWRITE拡張コマンドを解読できなかった場合に、STALL応答をホストに送信する。
デバイスからSTALL応答を受信したホストは、リセット信号をデバイスに送信し、さらに、続けて、従来通りのSCSIコマンドをデバイスに送信する。デバイスは、ホストから従来通りのSCSIコマンドを受信すると、これに応答して、ACK応答またはNAK応答をホストに送信する。これにより、ホストとデバイスは、従来通りのデータ転送方法で、データの転送を行う。以下の動作は、従来のデータ転送方法の動作と同様である。
また、図5−3(B)に示すように、ライト処理時において、デバイスは、ホストから受信した拡張コマンドを従来通りのSCSIコマンドとして解読した場合に、コマンドに対するACK応答をホストに送信する。そして、デバイスは、ホストからライトすべきP個のデータが一括して連続送信されると、これらを受信する。デバイスは、ホストからライトすべきP個のデータを受信すると、これに応答して、まず、一番目にライトすべきデータに対応して、当該一番目にライトすべきデータをWRITE拡張コマンドの2〜8バイト目に記述されたパラメータによって指定されたセクタ領域に格納するとともに、ACK応答をホストに送信する。次に、デバイスは、二番目以降にライトすべきデータに対しては、コマンドが解読できていないため、STALL応答をホストに送信する。
デバイスからSTALL応答を受信したホストは、リセット信号をデバイスに送信し、さらに、続けて、従来通りのSCSIコマンドをデバイスに送信する。デバイスは、ホストから従来通りのSCSIコマンドを受信すると、これに応答して、ACK応答またはNAK応答をホストに送信する。これにより、ホストとデバイスは、従来通りのデータ転送方法で、データの転送を行う。以下の動作は、従来のデータ転送方法の動作と同様である。
ライト処理時のこの発明のデータ転送方法の動作の概要は、以上の通りである。
ライト処理時のこの発明のデータ転送方法では、ホストは、WRITE拡張コマンドをデバイス側に送信した後、予め定められた時間以内に、デバイス側からWRITE拡張コマンドに対する正しい応答を受信した場合に、デバイス側が拡張コマンドに対応していると判定して、以降のデータ転送処理では、拡張コマンドをデバイスに送信する。なお、デバイスがWRITE拡張コマンドに対する正しい応答を送信した場合とは、デバイスがホストから送信されたライトすべき全てのデータに対応して、ACK応答を送信した場合、すなわち、デバイスがホストから送信されたライトすべき全てのデータをWRITE拡張コマンドによって指定された各セクタ領域に格納した場合である。
他方、ホストは、WRITE拡張コマンドをデバイス側に送信した後、予め定められた時間以内に、デバイス側からWRITE拡張コマンドに対する正しい応答を受信しなかった場合に、デバイス側が拡張コマンドに対応していないと判定して、以降のデータ転送処理では、従来のSCSIコマンドをデバイスに送信する。なお、デバイスがWRITE拡張コマンドに対する正しい応答を送信しなかった場合とは、デバイスがホストから送信されたライトすべき全てのデータをWRITE拡張コマンドによって指定された各セクタ領域に格納しなかった場合である。このような場合としては、デバイスが上述のSTALL応答を送信した場合や、デバイスがWRITE拡張コマンドの2〜8バイト目に記述されたパラメータによって指定されたデータのみを格納し、WRITE拡張コマンドの10バイト目以降に記述された追加パラメータによって指定されたデータを格納しなかった場合、すなわち、WRITE拡張コマンドの2〜8バイト目に記述されたパラメータに対応してのみ、ACK応答を送信し、10バイト目以降に記述された追加パラメータに対応したデータに対してSTALL応答を送信した場合等がある。
この発明のデータ転送方法では、ホストは、ライト処理時に、以上のように動作することにより、WRITE拡張コマンドの送信機会を増やしている。
そのため、この方法によれば、これによっても、デバイスに確実にライト処理を実行させながら、ホストからデバイスに送信されるコマンドの送信量を、従来のデータ転送方法よりも減らすことができ、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
(ホスト側の動作)
以下、図6を参照して、この発明のデータ転送方法におけるライト処理時のホスト側の動作につき詳述する。なお、図6は、ライト処理時のホスト側の動作を示すフローチャートである。
以下、図6を参照して、この発明のデータ転送方法におけるライト処理時のホスト側の動作につき詳述する。なお、図6は、ライト処理時のホスト側の動作を示すフローチャートである。
図6に示すように、この発明のデータ転送方法では、ライト処理時において、ホストは、まず、WRITE拡張コマンドをデバイスに送信する(S610)。
S610の後、ホストは、WRITE拡張コマンドを送信してから予め定められた時間以内に、デバイスからWRITE拡張コマンドに対する応答を受信する(S620)。このとき、ホストは、デバイスがWRITE拡張コマンドの解読に成功していた場合に、デバイスからACK応答を受信し、デバイスがWRITE拡張コマンドの解読に失敗していた場合に、デバイスからSTALL応答を受信する。
ホストは、デバイスから応答を受信すると、受信した応答がACK応答か否かを判定する(S630)。
S630の判定で、“イエス”と判定された場合に、すなわち、S620で受信した応答がACK応答であると判定された場合に、ホストは、WRITE拡張コマンドに対応するデータ転送、すなわち、WRITE拡張コマンドの1バイト目の0〜4ビット目に記述された要求LBA数サイズ分のライトすべき全てのデータを一括してデバイスに連続送信する(S640)。この後、ホストは、待機状態となり、デバイスからデータ転送に対する応答が送信されるのを待つ。このとき、ホストは、デバイスが支障なくライトデータを受信できた場合に、デバイスからACK応答を受信し、デバイスが支障なくライトデータを受信できなかった場合に、デバイスからSTALL応答を受信することになる。なお、「デバイスが支障なくライトデータを受信できなかった場合」とは、後述の図7におけるS780またはS790で“ノー”と判定された場合を意味している。
ホストは、デバイスからデータ転送に対する応答を受信する(S650)。
S650の後、ホストは、S650でデバイスから受信した応答がACK応答か否かを判定する(S660)。
S660の判定で、“イエス”と判定された場合に、すなわち、S650で受信した応答がACK応答であると判定された場合に、ホストは、以降のデータ転送処理に拡張コマンドを使用することを決定する(S670)。
他方、S630の判定で、“ノー”と判定された場合に、すなわち、S620で受信した応答がACK応答でないと判定された場合に、または、S660の判定で、“ノー”と判定された場合に、すなわち、S650で受信した応答がACK応答でないと判定された場合に、ホストは、リセット信号をデバイスに送信し(S680)、さらに、以降のデータ転送処理に従来のSCSIコマンドを使用することを決定する(S690)。
S670の後、または、S690の後、ホストは、ライト処理を終了する。
(デバイス側の動作)
以下、図7を参照して、この発明のデータ転送方法におけるライト処理時のデバイス側の動作につき詳述する。なお、図7は、ライト処理時のデバイス側の動作を示すフローチャートである。
以下、図7を参照して、この発明のデータ転送方法におけるライト処理時のデバイス側の動作につき詳述する。なお、図7は、ライト処理時のデバイス側の動作を示すフローチャートである。
図7に示すように、この発明のデータ転送方法では、ライト処理時において、デバイスは、ホストからコマンドを受信する(S710)。
S710の後、デバイスは、S710で受信したコマンドが解読可能か否かを判定する(S720)。
S720の判定で、“イエス”と判定された場合に、すなわち、S710で受信したコマンドが解読可能であると判定された場合に、デバイスは、S710で受信したコマンドの命令コードを識別し、さらに、S710で受信したコマンドが拡張コマンドか否かを判定する(S730)。
S730の判定で、“イエス”と判定された場合に、すなわち、S710で受信したコマンドが拡張コマンド(ここでは、WRITE拡張コマンド)であると判定された場合に、デバイスは、S710で受信したコマンドの1バイト目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入されているか否かを判定する(S740)。この判定は、例えば、1バイト目の0〜4ビット目に、1以上の値が挿入されているか否かを識別することによって行われる。
S740の判定で、“イエス”と判定された場合に、すなわち、S710で受信したコマンドの1バイト目の予備領域に、要求LBA数データが挿入されていると判定された場合に、デバイスは、S710で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応しているか否かを判定する(S750)。すなわち、デバイスは、拡張コマンドのSCSIコマンド部分の先頭アドレス及び転送長データのサイズと追加パラメータのLBAの先頭アドレス及び転送長データのサイズの合計と、拡張コマンドの要求LBA数データによって指定されたサイズとを比較して、一致しているか否かを判定する。
S750の判定で、“イエス”と判定された場合に、すなわち、S710で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応していると判定された場合に、デバイスは、ACK応答をデバイスに送信する(S760)。このとき、ホストは、ACK応答に応答して、ライトすべき全てのデータを一括してデバイスに連続送信することになる。
S760の後、デバイスは、ホストからライトすべきすべてのデータを連続して受信する(S770)。
S770の後、デバイスは、S770で受信したデータが拡張コマンドによって指定されたデータか否かを判定する(S780)。
S780の判定で、“イエス”と判定された場合に、すなわち、S770で受信したデータが拡張コマンドによって指定されたデータであると判定された場合に、デバイスは、S770で受信したデータが拡張コマンドによって指定された要求LBA数サイズ分のデータか否かを判定する(S790)。このS790の判定で、“イエス”と判定された場合は、デバイスの動作フローは、S880に進み、“ノー”と判定される場合は、デバイスの動作フローは、S860に進む。
他方、S720の判定で、“ノー”と判定された場合に、すなわち、S710で受信したコマンドが解読可能でないと判定された場合に、デバイスは、STALL応答をホストに送信する(S800)。この後、デバイスの動作フローは、S870に進む。
また、S730の判定で、“ノー”と判定された場合に、すなわち、S710で受信したコマンドが拡張コマンドでないと判定された場合に、デバイスは、ACK応答を送信する(S810)。このとき、デバイスは、待機状態となり、ホストからライトデータが送信されるのを待つ。そして、デバイスは、ホストからライトデータを受信する(S820)と、再び、起動状態となる。この後、デバイスの動作フローは、S880に進む。
また、S740の判定で、“ノー”と判定された場合に、すなわち、S710で受信したコマンドの1バイト目の予備領域に、転送すべきデータの個数Pを表す要求LBA数データが挿入されていないと判定された場合に、デバイスは、STALL応答をホストに送信する(S830)。この後、デバイスの動作フローは、S870に進む。
また、S750の判定で、“ノー”と判定された場合に、すなわち、S710で受信したコマンドの受信サイズが拡張コマンドの要求LBA数データに対応していないと判定された場合に、デバイスは、STALL応答をホストに送信する(S840)。この後、デバイスの動作フローは、S870に進む。
また、S780の判定で、“ノー”と判定された場合に、すなわち、S770で受信したデータが拡張コマンドによって指定されたデータでないと判定された場合に、デバイスは、NAK応答をホストに送信する(S850)。この後、デバイスの動作フローは、S770に戻る。
また、S790の判定で、“ノー”と判定された場合に、すなわち、S770で受信したデータが要求LBA数サイズ分のデータでないと判定された場合に、デバイスは、NAK応答をホストに送信する(S860)。この後、デバイスの動作フローは、S770に戻る。
S800の後、S830の後、または、S840の後、デバイスは、待機状態となり、ホストからリセット信号が送信されるのを待つ。そして、デバイスは、ホストからリセット信号を受信する(S870)と、再び、起動状態となる。このとき、デバイスの動作フローは、S710に戻る。そして、デバイスは、ホストから新たなコマンドが送信されるのを待つことになる。
また、S790の判定で、“イエス”と判定された場合の後、または、S820の後、デバイスは、データを該当のセクタ領域に格納した後に、ライトデータの格納終了を表すACK応答、及びステータスをホストに送信する(S880)。このとき、デバイスは、S730で“ノー”と判定されていた場合に、1個のACK応答を送信し、その後、STALL応答を送信することになる。このとき、デバイスは、待機状態となり、ホストからデータ転送に対する応答が送信されるのを待つことになる。
S880の後、デバイスは、ホストからステータスに対する応答を受信する(S890)。
そして、デバイスは、ライト処理を終了する。
(効果)
この発明のデータ転送方法は、ライト処理時においても、上述の拡張コマンドを使用しているので、リード処理時と同様の効果を得ることができる。
この発明のデータ転送方法は、ライト処理時においても、上述の拡張コマンドを使用しているので、リード処理時と同様の効果を得ることができる。
この発明は、上述の実施の形態に限定されることなく、この発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
例えば、上述の拡張コマンドの構成は、従来のSCSIコマンドの構成が10バイトとなっている場合の例に合わせた構成となっている。しかしながら、従来のSCSIコマンドの構成は、10バイト以外の場合もある。この場合、上述の拡張コマンドの構成は、従来のSCSIコマンドの構成に合わせて、適宜変形された構成となる。
また、例えば、ホストは、USBストレージデバイスから任意のデータを削除する場合に、DELITEコマンドをUSBストレージデバイスに送信してもよい。なお、DELITEコマンドは、拡張コマンドの0バイト目の命令コード領域に、命令コード「DELITE」が挿入された構成とすればよい。ホストは、READコマンド、WRITEコマンド、及びDELITEコマンド以外のコマンドをデバイスに送信する場合に、従来のSCSIコマンドを送信することになる。
10 …転送すべきデータの個数P(要求LBA数データ)
11−1,11−2,…,11−P …転送すべきデータに関するパラメータ
11−1,11−2,…,11−P …転送すべきデータに関するパラメータ
Claims (3)
- ホストとUSBストレージデバイス間でデータを転送するデータ転送方法において、
前記ホストは、
転送種別であるリードまたはライトを指定するための命令コード、転送すべきデータが格納されているまたは転送すべきデータが格納される前記USBストレージデバイス側のセクタ領域を指定するためのパラメータ、及び予備領域を含むSCSIコマンドを用いて、当該SCSIコマンドの当該予備領域に、転送すべきデータの個数Pを表す要求LBA数データを挿入し、さらに、当該SCSIコマンドの後に、前記USBストレージデバイス側のセクタ領域を指定するための(P−1)個の追加パラメータを付加することによって、拡張コマンドを生成し、
前記拡張コマンドを前記USBストレージデバイスに送信することによって、
前記ホストと前記USBストレージデバイス間で、一回のコマンド送信で、前記SCSIコマンドに記述された前記パラメータによって指定された1個のデータ、及び前記SCSIコマンドの後に記述された前記追加パラメータによって指定された(P−1)個のデータを連続して転送する
ことを特徴とするホストとUSBストレージデバイス間のデータ転送方法。 - 請求項1に記載のホストとUSBストレージデバイス間のデータ転送方法において、
前記拡張コマンドの前記追加パラメータは、前記USBストレージデバイス側のセクタ領域を指定するための(P−1)個のLBAの先頭アドレス、及び転送すべきデータの長さを表す(P−1)個の転送長データを含んでいる
ことを特徴とするホストとUSBストレージデバイス間のデータ転送方法。 - 請求項1に記載のホストとUSBストレージデバイス間のデータ転送方法において、
前記ホストは、
前記拡張コマンドを前記USBストレージデバイスに送信した後に、前記USBストレージデバイスから前記拡張コマンドに対応するデータを取得した場合に、以降のコマンド送信では、前記拡張コマンドを前記USBストレージデバイスに送信し、及び、
前記拡張コマンドを前記USBストレージデバイスに送信した後に、前記USBストレージデバイスから前記拡張コマンドに対応していないデータを取得した場合に、以降のコマンド送信では、前記SCSIコマンドを前記USBストレージデバイスに送信する
ことを特徴とするホストとUSBストレージデバイス間のデータ転送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007047179A JP2008210226A (ja) | 2007-02-27 | 2007-02-27 | ホストとusbストレージデバイス間のデータ転送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007047179A JP2008210226A (ja) | 2007-02-27 | 2007-02-27 | ホストとusbストレージデバイス間のデータ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008210226A true JP2008210226A (ja) | 2008-09-11 |
Family
ID=39786458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007047179A Withdrawn JP2008210226A (ja) | 2007-02-27 | 2007-02-27 | ホストとusbストレージデバイス間のデータ転送方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008210226A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010108181A (ja) * | 2008-10-29 | 2010-05-13 | Toshiba Storage Device Corp | ストレージ装置、ストレージシステム及びアンロック処理方法 |
EP2216712A2 (en) | 2009-02-09 | 2010-08-11 | Sony Corporation | Information processing apparatus, information processing method, and program |
JP2013045163A (ja) * | 2011-08-22 | 2013-03-04 | Nec Corp | コンピュータシステム、情報処理システム、仮想メディア方法、および、プログラム |
JP2016095877A (ja) * | 2016-02-02 | 2016-05-26 | 株式会社東芝 | Icカード |
-
2007
- 2007-02-27 JP JP2007047179A patent/JP2008210226A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010108181A (ja) * | 2008-10-29 | 2010-05-13 | Toshiba Storage Device Corp | ストレージ装置、ストレージシステム及びアンロック処理方法 |
EP2216712A2 (en) | 2009-02-09 | 2010-08-11 | Sony Corporation | Information processing apparatus, information processing method, and program |
US8250087B2 (en) | 2009-02-09 | 2012-08-21 | Sony Corporation | Information processing apparatus, information processing method, and program |
JP2013045163A (ja) * | 2011-08-22 | 2013-03-04 | Nec Corp | コンピュータシステム、情報処理システム、仮想メディア方法、および、プログラム |
JP2016095877A (ja) * | 2016-02-02 | 2016-05-26 | 株式会社東芝 | Icカード |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4676378B2 (ja) | データ記憶装置およびデータ記憶方法 | |
EP2849076B1 (en) | Dma transmission method and system | |
US7069350B2 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
US8635386B2 (en) | Communication control device, data communication method and program | |
JP4600518B2 (ja) | 情報処理装置、情報処理システム、および情報処理方法、並びにコンピュータ・プログラム | |
US8924606B2 (en) | Storage system and data transfer control method | |
JP2004157966A (ja) | エンドポイント・メモリ制御方法、エンドポイント・メモリ制御装置、usb装置および記憶媒体 | |
JP2011070546A (ja) | バスプロトコル変換装置及びバスプロトコル変換方法 | |
JP2008210226A (ja) | ホストとusbストレージデバイス間のデータ転送方法 | |
CN112765055B (zh) | 存储设备的控制部件 | |
US7702820B2 (en) | Hardware accelerator and data transmission system and method using the same | |
JP5193822B2 (ja) | 追記型メモリデバイス | |
JP2006040011A (ja) | ディスクアレイシステム | |
US8214569B2 (en) | Method for reading and writing non-standard register of serial advanced technology attachment (SATA) device | |
JP2023027970A (ja) | メモリシステム | |
US20080256289A1 (en) | Memory apparatus to write and read data, and method thereof | |
US20050262297A1 (en) | Disk drive connected to host system via memory interface circuit, and interface connecting method | |
JP2007004720A (ja) | ストレージ装置およびストレージ装置のデータ転送方法 | |
JP2004288147A (ja) | シリアルメモリに対するxipシステム及びその方法 | |
JP2007011659A (ja) | インターフェース装置、ディスクドライブ及びインターフェース制御方法 | |
US11842066B2 (en) | Control apparatus and information processing system for providing a bridge apparatus between a host controller and a non-volatile storage medium to encrypt and decrypt data | |
TWI452471B (zh) | 用於通用序列匯流排裝置的全雙工控制器與其方法 | |
JP5291311B2 (ja) | Usbストレージシステムおよびデータ転送制御用のプログラム | |
JP5227601B2 (ja) | 制御システム | |
JP4582180B2 (ja) | データ伝送装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100511 |