説明

ドライブ装置、プログラム

【課題】ホスト装置からの書き込み指示が、データ長の短い書込コマンドで行われる場合でも、転送レートの低下を防ぐことができるドライブ装置を提供する。
【解決手段】 コマンド解析部11は、ホスト装置2から発せられた複数のATAコマンドのうち、あるコマンドの書込終了アドレスが、次のATAコマンドの書込開始アドレスと連続している場合、それらのコマンドによるSDカード1に対するデータ書き込みを一回のプロセスで実行させる。これにより、SDカードの書き込み時におけるオーバーヘッドが一回になり、転送レートを向上させることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発メモリへのデータ書き込みという書き込み制御技術の技術分野に属するものであり、不揮発メモリを内蔵したメモリカードのドライブ装置やメモリカードをアクセスするプログラムに、かかる制御技術を応用する場合の改良に関する。
【背景技術】
【0002】
現在、メモリカードのドライブ装置は、民生機器の分野のみならず、プロフェッショナル用途の映像機器の分野でも注目されつつある。取材撮影時の映像記録にSDメモリカード(以下SDカードと略記する)を用いるシステム構成例について説明する。SDカードを用いた従来の撮影システムは、ホスト装置、ドライブ装置から構成される。SDカードは、PCMCIAカードの形態を有したアダプタを介してドライブ装置と接続される。
【0003】
PCMCIAカードを介してSDカードはドライブ装置と接続されているので、ホスト装置はPCMCIAカードに対するアクセスと同一手順をもってSDカードをアクセスすることができる。このアダプタは、SDカードを複数接続することもでき、ホスト装置は、接続された複数のSDカードを1枚のPCMCIAカードと同一視することもできる。
PCMCIAカードのインターフェイスをもったビデオカメラ、パソコンがホスト装置であれば、SDカードに映像を記録することができ、映像用記録媒体としてのSDカードの活躍の場が増える。メモリカードを連装することにより、メモリカードのアレイを形成し、映像記録という用途に供する技術も存在する。
【0004】
尚、メモリカードを連装することにより、メモリカードのアレイを形成し、映像記録という用途に供する技術に関しては、以下の特許文献1に記載された文献が知られている。
【特許文献1】特開2002-189992号
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで従来の撮影システムは、PCMCIAカードを介してSDカードと接続しているため、ホスト装置によるSDカードからの読み出し及びSDカードへの書き込みは、ATAコマンドにて指示される。1回のATAコマンドで書き込めるデータ長は128Kバイトに過ぎないため、数ギガバイト、数百メガバイトものサイズをもった動画データをSDカードに書き込もうとすると、何百、何千個ものATAコマンドをホスト装置はドライブ装置に発行せねばならない。膨大な数のATAコマンドがドライブ装置に発行されるとなると、SDカードへの書き込み時におけるオーバーヘッドの悪影響が顕著化してしまうという問題がある。
【0006】
このオーバーヘッドは、論理アドレス−物理アドレスの対応を変更するための変更処理(i)、SDカードに書き込まれたデータのベリファイ処理(ii)を原因とする。1つのATAコマンドで書き込めるデータ長が小さいのに対し、このATAコマンドで書き込める書込時間には、オーバーヘッドが存在するため、「書き込みデータ長/書き込み時間」」の計算で算出される転送レートは、相対的に低いものになってしまう。連装によりSDカードをアレイ化し、複数SDカードに対するデータ書き込みを並列化しようとする場合、各SDカードに一度に書き込めるデータ長は、連装数が2枚なら1/2、連装数が4枚なら1/4になる。このようにSDカードのアレイ化にあたっては、一度のコマンドによる書き込みで書き込めるデータ長は更に小さくなるので、オーバーヘッドがもたらす転送レートへの影響は更に大きくなる。
【0007】
本発明の目的は、ホスト装置からの書き込み指示が、データ長の短い書込コマンドで行われる場合でも、転送レートの低下を防ぐことができるドライブ装置を提供することである。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本発明に係るドライブ装置は、ホスト装置が発するコマンドに従って、ホスト装置から送信される複数データをメモリカードに書き込むドライブ装置であって、ホスト装置から発せられた複数コマンドを受信する受信手段と、ホスト装置から発せられた複数コマンドのうち、1つのコマンドの書込終了アドレスが、後続するコマンドの書込開始アドレスと連続している場合、それらのコマンドによるメモリカードに対するデータ書き込みを一回のプロセスで実行する書込手段とを備えることを特徴としている。
【発明の効果】
【0009】
上述したドライブ装置は、複数コマンドによるメモリカードへの書き込みを一回のプロセスで実行するので、コマンドが複数であってもオーバーヘッドの発生回数は一回になる。そのため、オーバーヘッド発生による書き込み処理の遅延化を防止することができる。
転送レートの算出式(書き込まれるデータ長/書き込みに要する時間)で考えると、分子の「書き込まれるデータ長」は、複数コマンドによる書き込みデータ長の総和となる。一方、分母の「書き込みに要する時間」は、複数コマンドによる書き込み時間の総和となるが、オーバーヘッドは個々のコマンドの書き込み時間に存在せず、複数コマンドについて一回存在することになり、分母の「書き込みに要する時間」は総じて短くなる。分母の「書き込みに要する時間」が短くなるため、算出式から得られる転送レートは総じて高くなり、動画像データの記録に求められる機器スペックを満たすことができる。
【0010】
ここでプロセスとは、ホスト装置から送信された複数データをメモリカードに順次書き込む処理を、停止指示がなされるまで繰り返すものであり、
ドライブ装置は、ホスト装置が発する各コマンドの書込開始アドレス及び書き込みセクタ数を解読する解析手段と、1つのコマンドによる書き込みセクタ数をs、後続するコマンドによる書き込みセクタ数をtとした場合、書込済みセクタ数がs+tに達した時点で停止指示を行う指示手段とを備えている。
【0011】
メモリカードに対する書き込みプロセスの終了要件は、ドライブ装置からの停止指示であるので、かかる停止指示のタイミングを、遅らせることにより、複数コマンドによる書き込みを1つのプロセスで実現することができる。
ここでプロセスとは、1つのコマンドから書込開始アドレスA及び書き込みセクタ数sを前記解析手段が解読した場合に起動されて、書込開始アドレスAからのデータ書き込みを開始するものであり、
前記解析手段は、書込済みセクタ数が、sに達するまでに後続するコマンドを解析し、
前記指示手段は、後続コマンドの書込開始アドレスBが、先のコマンドの書込終了アドレスA+sと連続している場合、書込済みセクタ数がs+tに達した時点に停止指示を行うものである。
【0012】
あるコマンドにて書き込むべきデータの転送終了を待たずに、次のコマンドに対する解析が行われる。ホスト装置から発行されたコマンドを解析するための時間が、上述した算出式の分母における「書き込みに要する時間」に影響しないので、書込データ長が短いコマンドが多数ホスト装置から発行された場合でも、それらコマンドに対する解析時間で転送レートが低下することはない。
【発明を実施するための最良の形態】
【0013】
以降、本発明に係るドライブ装置の実施形態について説明する。先ず始めに、本発明に係るドライブ装置の実施行為のうち、使用行為についての形態を説明する。図1は、本発明に係るドライブ装置の、使用行為についての形態を示す図である。図1において、本発明に係るドライブ装置は、SDカード1、ホスト装置2、PCMCIAカード3により形成される撮影システムにおいて、撮影映像をSDカード1に記録するという用途に供される。撮影機器の用途では、デジタルビデオテープ(DV)並みの映像品質、音声品質が要求される。かかる品質の実現には、4MB/sの帯域が確保されねばならず、本撮影システムには、かかる帯域確保のための改良が加えられている。以降、このシステムを構成する各機器について説明する。
【0014】
SDカード1a,b,c,dは、制御部、不揮発メモリ、内部メモリを備え、ドライブ装置から発行されるコマンド(SDコマンド)に従い、ドライブ装置から送信されてくるデータを内部メモリに蓄積した上で不揮発メモリに書き込む。不揮発メモリの記録領域は、記録ブロックから構成される。不揮発メモリへの書き込みにあたって、SDカード1a,b,c,dは書込先に示された記録ブロックにダイレクトにデータを書き込むのではなく、ホスト装置2から伝送されてきたデータを一旦空きの記録ブロックに書き込んでゆく。ドライブ装置からSTOP命令が発行されれば、データが書込済みの記録ブロックに論理アドレスを割り当てるよう、論理アドレス−物理アドレスの対応関係を変更する。この変更は、不揮発メモリにおける論理アドレス−物理アドレスの対応関係を示す相関表を書き換えることでなされる。かかる相関表の更新を行い、書込済みデータのベリファイを行って、ベリファイ結果を示すStatus情報をドライブ装置に送信する。このStatus情報は書込エラーの有無を示すものである。ドライブ装置4からのコマンド受信から、このStatus情報の送信までの一連の過程をプロセスという。かかるプロセスでは、一回のプロセスにつき相関表の更新やデータ書き込みのベリファイが必ず発生するため、プロセスの数が多ければ多いほど、オーバーヘッドの悪影響が顕著化する。
【0015】
ホスト装置2は、ビデオカメラ、パソコン等の機器であり、ドライブ装置に対してATAコマンドを発行することによりSDカードに対する読み書きを行う。ホスト装置2は、ドライブ装置4に連装されたSDカードを1つの仮想ドライブとして認識し、書込先たるセクタの論理アドレスと、書き込むべきセクタ数とを定めてATAコマンドを発行する。ここでいう”セクタ”とは、SDカード1上の記録ブロックと1対1に対応している。ATAコマンドは本来ディスク媒体を対象としたコマンドであるため、ホスト装置2は書込先等を”セクタ”を用いて表現している。
【0016】
PCMCIAカード3は、SDカード1a,b,c,dを連装するためのアダプタである。
ドライブ装置4は、ホスト装置2から発行されたATAコマンドに従い、PCMCIAカード3を介して接続されたSDカード1a,b,c,dに対するデータ書込を実行する。このデータ書込は、SDコマンドをSDカード1a,b,c,dに発行し、以降ホスト装置2から順次送信されるデータをSDカード1a,b,c,dに転送することでなされる。ATAコマンドにて書き込むべきデータが全て転送されれば、PCIターゲット部5はSDカード1に対しSTOP命令を発行する。このSTOP命令の発行後、SDカード1からStatus情報を受信し、ホスト装置2に対して書込終了を示す割込信号を送信して1つのプロセスを終結させる。図2は、ホスト装置2、ドライブ装置4、SDカード1a〜1d間の通信シーケンスを示す図である。本図に示すようにi番目のATAコマンドがホスト装置2から送信されれば、コマンド解析az1を行って、SDコマンド[i]をSDカード1に発行する。このATAコマンド[i]が4つのデータを書き込むべきものなら、ドライブ装置4はホスト装置2から送信されたデータB[i]をSDカード1に転送する。ATAコマンド[i]で書き込むべきデータの送信が済めば、SDカード1による書き込みを終結させるべくStop命令[i]を送信する。このStop命令[i]によりSDカード1は相関表更新rn1を行い、ベリファイvy1を行ってStatus情報[i]をホスト装置2に返す。Status情報が返されれば、割込信号[i]をホスト装置2に返す。以上がi番目のATAコマンドに対する処理である。i+1番目のATAコマンドがホスト装置2から送信されてくる場合も、同様の処理を繰り返す。ホスト装置2がATAコマンドを発行してから割込信号を受け取るまでの期間Time1を用いて、ATAコマンドで書き込まれるべき総データサイズSize1を割った値(Size1/Time1)が転送レートになる。一回のATAコマンドで書き込みうる総データサイズが128Kバイトを越えられないのに対し、Time1は、相関表更新やベリファイの時間が加味されて長くなっているため、転送レートは総じて低くなっている。
【0017】
以上がドライブ装置4が使用されるシステムの形態である。続いてドライブ装置4の生産行為の形態について説明する。ドライブ装置4は、図3の内部構成に基づき、工業的に生産することができる。図3は、ドライブ装置4の内部構成を示す図である。図3に示すように、ドライブ装置4は、PCIターゲット部5、PCIマスタ部7、カード制御部8a,b,c,d、コマンドメモリ9、データメモリ10、コマンド解析部11から構成される。カード制御部8a,b,c,dは、ドライブ装置に連装される複数のSDカード1a,b,c,dのそれぞれについて設けられる。これらSDカード1a,b,c,dに対するデータ書き込みは、ストライピングにてなされる。ストライピングとは、書き込むべきデータを記録ブロック単位に分割して複数のSDカードに並列に書き込むことである。図3におけるデータメモリ10の内部は、書き込むべきデータがストライピングされる過程を、はめ込んで描いている。連装されているSDカードは4枚なので、書き込むべきデータは4分割される。図3におけるストライピングでは、書き込むべきデータ(dataX)のうち、1つ目の分割部分を1番目のSDカードに書き込み(wt1)、2つ目の分割部分を2番目のSDカードに(wt2)、3つ目の分割部分を3番目のSDカードに(wt3)、4つ目の分割部分を4番目のSDカードに(wt4)書き込んでいる。かかるストライピングにより、SDカード1a,b,c,dは1つの仮想ドライブを構成することになる。かかるストライピングでは、書き込むべきセクタ数が分割数以上であれば(つまり分割数が4なら4ブロック以上)、書き込み効率は高くなり、3以下であれば書込効率は低下することになる。
【0018】
4枚のSDカードを想定した場合の内部では説明が煩雑になるので簡略化を期するべく、以降の説明には図4の内部構成図を引用するものとする。図3と比較すると、図4ではSDカード1a,b,c,dがSDカード1になっており、カード制御部8a,b,c,dは、カード制御部8になっている。以下、図4に示される構成要素(PCIターゲット部5、PCIマスタ部7、カード制御部8、コマンドメモリ9、データメモリ10、コマンド解析部11)について説明する。
【0019】
PCIターゲット部5は内部レジスタを有しており、この内部レジスタ5aを介してホスト装置2とのコマンド及びStatus情報の送受信を実行する。ホスト装置からの書込時における送受信は以下のようにしてなされる。書込時においてPCIターゲット部5の内部レジスタ5aには、ホスト機器2により書込コマンドが書き込まれる。書込コマンドが書き込まれると、後述するようにPCIマスタ部7がバスマスタになり、ホスト装置2とのデータ転送が開始される。データ転送が終了すると、PCIターゲット部5は、内部レジスタ5aにStatus情報を格納し、ホスト装置2に割込信号をアサートする。この割込信号によりホスト装置2は、Status情報をPCIターゲット部5の内部レジスタ5aを介して読み取る。こうしたコマンド及びStatus情報の送受信にて、上述したデータ転送がなされる。
【0020】
PCIマスタ部7は、PCIターゲット部5内の内部レジスタに書込コマンドが書き込まれた際、バスマスターになり、ドライブ装置4が主体となった転送を実行する。
カード制御部8は、SDカード1に対する読み書き制御を実行するものであり、SDカード1に対するSDコマンド発行、SDカード1へのデータ転送、SDカード1に対しSTOP命令の発行を、コマンド解析部11によるコマンド解析結果に従って行う。
【0021】
コマンドメモリ9は、ホスト装置2から送信されたATAコマンドを待ち行列にして格納しておく。ホスト装置2から送信されるATAコマンドが通常のATAコマンドと異なるのは、ATAコマンドにTagが付されている点である。このTagは、個々のATAコマンドが何番目のものであるかを明示するものであり、かかるTagが付されたまま、コマンドメモリ9はATAコマンドを格納しておくので、コマンド解析部11はホスト装置2が発行した順序に従って、コマンドメモリ9内のATAコマンドを解析することができる。
【0022】
データメモリ10は、SDカード1に書き込むべきデータ、及び、SDカード1から読み出されたデータを一旦格納しておくための内部メモリである。
コマンド解析部11は、ホスト装置2により発行されたコマンドを受け付けて、このコマンドの解析を行い、この解析結果に従った書き込みを行わせるようPCIマスタ部7を制御する。図5は、ホスト装置2から複数のコマンドが発行された場合、コマンド解析部11による処理がどのように行われるかを示すタイミングチャートである。本図の第1段目は、ホスト装置2とSDカード1との間の伝送路における伝送内容を示す。A[x]はx番目のコマンド、Tag[x]はx番目のコマンドの連番xを示すタグ、B[x]はx番目のコマンドにより転送されるデータ、c[x]はx番目コマンドの発行元に返されるStatus情報を示す。第2、第3段目は、コマンド解析部11による「x番目コマンドの受け付け」コマンド解析部11による「コマンド解析」「データ転送」「割込発生」「終了」という一連の処理手順を示す。第2段目は、x=1としており、第3段目はx=2としている。
【0023】
「x番目コマンドの受け付け」とは、Tag[x]が付されたx番目のコマンドを受け付けて、x番目のプロセスを宣言する処理である。「コマンド処理[x]」とは、Tag[x]が付されたコマンドを解析して、このコマンドの開始アドレスAと、セクタ数sとを解読することである。
「x番目プロセスのデータ転送」とは、コマンド解析部11からドライブ装置4の解析に順次転送されてくるデータB[x]をSDカード1側に送り出すことである。このデータ転送は、転送済みのセクタ数が予定数uに達するまで継続する。この予定数uは、初期値としてコマンド解析から得られたセクタ数sが設定される。以上が第2段目におけるコマンド解析部11の処理である。続いて第3段目に着目すると、本図においてx+1番目のコマンドに対する解析は、x番目のプロセスについてのデータ転送終了を待たずになされることがわかる。これは、x番目による書き込みと、x+1番目による書き込みとを一回のプロセスで実行するためである。1つのプロセスへの統合にあたって、コマンド解析部11はx+1番目のコマンドからアドレスB、セクタ数tを解析するだけでなく、先のx番目のコマンドの書込先Aにu+1を足したアドレスA+u+1が、x+1番目のコマンドの書込先Bに一致するかどうかの判定を行っている。本図は、この連続性が存在しない場合を示している。この場合、x番目のコマンドで書き込むベきデータを転送した後、SDカード1からStatus情報を取得して割込信号をホスト装置2に返す。
【0024】
一方図6は、連続性が存在する場合を示している。この場合、x番目のコマンドで書き込むべきデータを転送しても、割込信号をホスト装置2に返さず、予定数uにセクタ数tを加えて更新した上で、ドライブ装置4は、ホスト装置2から送信されてくるデータ(x+1番目のコマンドで書き込むべきデータ)をSDカード1に転送してゆく。転送済みセクタ数が予定数u(=s+t)に達した時点でStatus情報をSDカード1から受け取り、割込信号をホスト装置2に返す。
【0025】
あるコマンドの書込先が次のコマンドの書込先と連続している場合には、Stop命令をSDカード1に発行せず、次のコマンドにて書き込むべきデータ転送を継続させるので、SDカード1による相関表更新及びベリファイは、複数コマンドにつき一回となる。相関表更新及びベリファイの発生回数が減るため、転送レートの向上を図ることができる。
コマンド解析部11は、図7のフローチャートに示される処理手順をコンピュータ読み取り言語で記述して、汎用のマイクロプロセッサに実行させることで実現される。以降、図7のフローチャートを参照しながら、コマンド解析部11の処理手順について説明する。
【0026】
本フローチャートにおいてコマンド解析部11は、コマンドメモリ9に少なくとも1つのATAコマンドが蓄積されるのを待機しており、蓄積されれば(ステップS1でYes)、ATAコマンドのうち、TagのIDが 一番早いものをコマンドiに設定して(ステップS2)、コマンドiから開始アドレスA及びセクタ数sを解読し(ステップS3)、予定数uをセクタ数sに設定した上で(ステップS4)、プロセスを起動する。開始アドレスAからの書き込みを実行し(ステップS5)、ステップS6〜ステップS8からなるループ処理に移行する。このループ処理は、ドライブ装置4内のデータメモリ10に順次蓄積されるデータをSDカード1に転送する(ステップS6)という処理を、ステップS7−ステップS8がYesになるまで繰り返すものである。
【0027】
転送済みセクタ数が予定数uに達した場合(ステップS7でYes)、Stop命令をSDカード1に発行させてステップS1に移行する。コマンドメモリ9に他のATAコマンドが蓄積された場合(ステップS8でYes)、TagのIDが最も早いATAコマンドをコマンドjに設定し(ステップS10)、コマンドjの開始アドレスB及びセクタ数tを解読して(ステップS11)、コマンドiとコマンドjとの連続性を判定する。この判定は、コマンドiの書込先Aにu+1を加算したアドレスが、コマンドjの書込先Bに合致するかを判定することでなされる(ステップS12)。もし連続性があれば、予定数uにコマンドjのセクタ数tを加算して(ステッS13)、ステップS6に移行する。もし連続性がなければ、転送済みセクタ数が予定数uに達するのを待った上で(ステップS14)、メモリカードにstop命令を発行する(ステップS15)。その後、コマンドjをコマンドiに設定し、 t,Bをs,Aに設定した上で(ステップS16)、ステップS9に移行する。
【0028】
図8は、図2と同様の表記で、ホスト装置2−ドライブ装置4−SDカード1間の通信シーケンスを示した図である。本図が図2と異なるのは、ATAコマンドA[i]による転送数が予定数uに達するまでに、A[i+1]がホスト装置2からドライブ装置4に送信されて、ATAコマンド[i+1]の解析が行われている点である。ドライブ装置4からSDカード1への転送が予定数uに達するまでに、ATAコマンド[i+1]の解析が行われ、ATA[i]、ATA[i+1]の書込先の連続性が判定される。連続性があれば、予定数はsからs+tまで延長されることになる。SDカード1にStop命令が発行されるのは、連続性がある場合になるので、ホスト装置2がレスポンスを受け取るのは、2つのATAコマンドにつき一回になる。
【0029】
図8の一例では、ATAコマンドと、次のATAコマンドとを1つのプロセスで実行しているが、これは作図の便宜を優先させた結果に過ぎない。アドレスの連続性が存在するなら、次のATAコマンド、ATAコマンド、ATAコマンドを1つのプロセスで実行してもよい。
以上のように本実施形態によれば、複数ATAコマンドによるメモリカードへの書き込みを一回のプロセスで実行するため、オーバーヘッドの発生は複数ATAコマンドにつき一回になる。転送レートの算出式で考えれば、分母は一回のオーバーヘッドが加味された時間長になるのに対し、分子は複数ATAコマンドで書き込み得る総データサイズになる。分母の時間長が大きくならないため、転送レートの向上が図れる。
【0030】
以上SDカードが一枚であるとして説明を行ったが、SDカードが4枚である場合は、コマンド解析部11がATAコマンドを解読する度に、4つのカード制御部8a,b,c,dがパラレルに上述した書込動作を行えよい。かかるパラレル書き込みにより、転送レートを一層向上させることができる。これにより本発明に係るドライブ装置は、動画データの記録を好適に行うことができる。
【0031】
また、ホスト装置2に対するレスポンスが複数ATAコマンドに対し一回になるので、ホスト装置2−ドライブ装置4間の転送の非同期化が可能になる。かかる非同期化により、ドライブ装置4をマスターとした転送と、ドライブ装置4をターゲットとした転送とを時分割に実行することができる。
尚第1実施形態では、連番が次のATAコマンドとの連続性判定を行ったが、ドライブ装置4に複数のATAコマンドを書込先の順に並べ替える並替部をドライブ装置に具備させてもよい。かかる並替部による並べ替え後の順序に従い、コマンド解析部11はコマンド解析を行ってもよい。
【0032】
(第2実施形態)
第1実施形態では、書込先に連続性がある場合、複数コマンドで行うべき処理を1つのプロセスで実行していた。しかし一回のプロセスで書き込めるサイズが長ければよいという訳ではない。SDカード1には消去可能ブロックという単位があり、データ書き込みにあたっては、この消去可能ブロックを一旦白紙の状態に戻した上でデータを書き込まねばならないからである。複数コマンドによる書き込みを1つのプロセスで行った際、書き込むべきセクタ数が消去可能ブロックの非整数倍で有れば、巻き込み退避と呼ばれる非効率的な書き込みが生じてしまう。
【0033】
図9は、巻き込み退避の一態様を示す図である。本図において消去可能ブロックは、p個の記録ブロックから構成されているものとする。そして不揮発メモリにおける2つの消去可能ブロックに書き込まれた2つのデータA,Bのうち、一方の消去可能ブロックに記録されているデータBのみを書き換えるケースを想定している。この場合、不揮発メモリから白紙状態の消去可能ブロックを探索し、そのような消去可能ブロックが存在すれば、新しいデータBを消去可能ブロックのうち一方に書き込む(同図(b)参照)。次に上段に書き込み済みのAのデータを下段の消去ブロックにコピーさせる(同図(c)参照)。最後に上段の消去ブロックを消去する(同図(d)参照)。
【0034】
巻込退避が発生した場合は、書き込み回数が2回になるので書き込みレートは低下する。更に、データが記録されている物理位置が更新されていくので、巻き込み退避が発生する毎に、論理アドレスと物理アドレスの更新が必要になる。
書き込みセクタ数の非整数倍化をさけるため、ホスト装置2がATAコマンドに付与するのが禁止フラグである。ホスト装置2は連続アドレスに書き込むべきデータの発行にあたって、SDカード1に書き込むべきセクタ数が消去可能ブロックのサイズに達すれば、直後のATAコマンドに禁止フラグを付加してドライブ装置4に送信する。ATAコマンドを1つのコマンドで実行するよう書き込み制御を行い、禁止フラグ付きのATAコマンドがあれば、現在の転送セクタ数が実行中のデータ転送の予定数に達した時点でStop命令をSDカード1に送信させる。これにより、SDカード1に転送されたセクタ数が消去可能ブロックの整数倍になった時点で、プロセスは一旦終結することになり、半端なデータ書き込みは発生しなくなる。
【0035】
図10は、第2実施形態のコマンド解析部11による処理を現した図である。本図におけるm個のATAコマンド(A[1],A[2]・・・・・A[m])は、それらの書込アドレスに連続性があるものとする。ATAコマンドA[m]の後に送信されるA[m+1]には、禁止フラグを含むTagが付加されている。A[m]に対応するデータの転送中にコマンド解析部11によるA[m+1]の解析が行われるが、A[m+1]には禁止フラグを含むTagが付加されているため、そのコマンドとの連続性を判定しない。現在の転送による転送済みコマンドが予定数uになった時点(point1)でSDカード1にStop命令を発行し、A[m]のATAコマンドによる書き込みが終了した時点でプロセスを終結させる。これにより消去可能ブロックのサイズの整数倍のデータを書き込んだ時点で、SDカード1への書き込みは終了することになる。
【0036】
以上のように本実施形態によれば、消去可能ブロックのサイズの整数倍にならない端数の書き込みを避けるので、巻き込み退避の発生を避けることができ、転送レートを向上させることができる。
(第3実施形態)
第1実施形態では、先のコマンドでの転送が完了するまでに、次のコマンドが送信された場合に、これらコマンドによる書き込みを1つのプロセスで統合することができた。しかし先のコマンドによる転送が完了するまでに、次のコマンドを受信することができなかった場合、1つのプロセスへの統合は不可能になる。このようなケースに対処すべく、本実施形態に係るホスト装置2は、ATAコマンドに待機フラグを付して送信する。コマンド解析部11は待機フラグが付されたATAコマンドを解析して場合、たとえ予定数のデータをSDカード1に転送していたとしても、Stop命令をSDカード1に発行させない。そのため、書き込むべきデータが転送されなくてもプロセスは終結することはない。SDカード1に書き込むべきデータがない状態のままコマンド解析部11は、次のコマンドがホスト装置2から送信されるのを待ち、送信されれば第1実施形態同様、コマンド解析を行い、連続性があればそのコマンドによる書き込みをそのプロセスに統合して行う。
【0037】
図11は、第3実施形態におけるコマンド解析部11の処理内容を示す図である。本図においてATAコマンドA[m-1]には、待機フラグを含むTagが付加されている(appd1)。そのため後続のATAコマンドA[m]が遅れたとしても、現在のプロセスを終結させない。書き込むべきデータがないまま、ATAコマンドA[m]を待ち(図中のwait1)、ATAコマンドA[m]が受信されれば(rcv1)、ATAコマンドA[m]に対する解析を行う。
【0038】
以上のように本実施形態によれば、ホスト装置2とドライブ装置4とがネットワークを通じて接続されており、ネットワークにてATAコマンドの到達が遅延した場合でも、端数の書き込みが生じない。これにより転送レートを低下させることはない。
(第4実施形態)
第2実施形態では、あるATAコマンドに禁止フラグが付されている場合、コマンド解析部11がカード制御部8にStop命令を発行させて現在の書き込みプロセスを終結させていた。しかし、禁止フラグが付されたATAコマンドの到来が遅れると、プロセスを終結させることができず、転送性能の低下を招く。そこで第4実施形態は、1つのプロセスの最後の書き込みを行うべきATAコマンドに禁止フラグを付加しておく。図12は、第4実施形態に係る禁止フラグ付加の一例を示す図である。本図に示すように、1つのプロセスの最後の書き込みを行うべきATAコマンド[m]に禁止フラグが付加されていることがわかる。この図12では、ATAコマンド[m]による書き込みが済んだ時点でコマンド解析部11は、Stop命令を発行している。これにより、後続するATAコマンドの到来がたとえ遅れたとしても、1つのプロセスによる書き込みを早期に終結させることができる。
【0039】
以上のように本実施形態によれば、1つのプロセスの最後の書き込みを行うべきATAコマンドに禁止フラグを付加するので、たとえATAコマンドの到達が遅延したとしても、転送性能の劣化を招くことはない。
(第5実施形態)
第5実施形態は、ATAコマンドにより書き込むべきデータサイズが、消去可能ブロックの整数倍になるように改良した実施形態である。図13は、第5実施形態に係るコマンド解析部11の処理手順を示すフローチャートである。本フローチャートは、図7をベースにしている。図7との違いはステップS5、ステップS6間にステップS17、ステップS18が新規に追加され、ステップS13はステップS19に置き換えられ、そしてステップS7−ステップS9間にステップS20が追加されている。またステップS12−ステップS14間にステップS21、ステップS22が追加されている。
【0040】
ステップS17は、予定数uを消去可能ブロックのセクタ数で割った際の剰余求めるものである。図中のmodは、剰余演算の演算子であり、こうして得られた剰余を剰余Reとする。ステップS18は、予定数uから剰余Reを引いた数を予定数uにする。
このステップS17、ステップS18により予定数uは、消去可能ブロックのセクタ数の整数倍になる。ステップS13の代わりに追加されたステップS19は、後続コマンドjにより書き込むべきセクタ数tと、剰余Reとを予定数uに加えるものである。
【0041】
以上のステップS17〜ステップS19が加えられたことで、1つのコマンドによる書き込み予定数uは、必ず消去可能ブロックのセクタ数の整数倍になる。そして剰余Reにあたるデータは、後続コマンドの書き込み時において書き込まれることになる。
ステップS20は、剰余Reが0であるか否かのチェックであり、0であればSTOP命令を発行することになる(ステップS9)。0でなければ、ステップS8に移行する。剰余Reが0である限り、プロセスは中断されず、後続コマンドの受信を待ち続けることになる。
【0042】
一方、ステップS12において連続性がないと判定されれば、剰余Reが0でないか否かを判定し(ステップS21)、0でなければ、剰余Reのデータをメモリカードに書き込む(ステップS22)。転送済みセクタ数が予定数uに達するのを待った上で(ステップS14)、メモリカードにstop命令を発行する(ステップS15)。その後、ステップS16に移行する。
【0043】
以降、本フローチャートによる処理の具体例について図14を参照しながら説明する。この具体例では図14(a)に示すように、1つ目のコマンドiで書き込むべきデータ長が96Kバイト、2つ目のコマンドjで書き込まれるべきデータ長が160Kバイト、消去可能ブロックのサイズが64Kバイトである場合を想定している。尚本図では、説明の簡略化のため「一セクタサイズ=1Kバイト」にしている。
【0044】
コマンドiのセクタ数が96個なので、ステップS17、ステップS18によりuは64個、剰余Reは32個になって、図14(b)に示すように、64Kバイト長のデータがSDカードの消去可能ブロック#1に書き込まれる。ここでコマンドの受信が遅れ、待ち行列が空になっている場合を考える。待ち行列にコマンドがなく、また転送済みデータ長が予定数uに達したとしても、剰余Reが=32なので、ステップS8に移行し、STOP命令を発行しない。剰余Re≠0であれば、待ち行列にコマンドが格納されるまで、ステップS6〜ステップS8、ステップS20のループ処理が繰り返されることになる。後続のコマンドjが待ち行列に格納され、このコマンドjにより書き込むべきコマンドが図14(c)に示すようにデータメモリに格納されれば、ステップS10〜ステップS12の処理を行い、アドレスの連続性があることを判定する。もし連続性があれば、コマンドjのセクタ数t(=160)と、剰余Re(=32)とを加えた値256を予定数uとする。そしてステップS17〜ステップS18に移行すれば、図14(d)に示すように、192Kバイトのデータを、SDカード内の3つの消去可能ブロック#2〜#4に書き込んでゆく。
【0045】
以上のように本実施形態によれば、プロセスにより書き込まれるべきセクタ数が消去可能ブロックのセクタ数の非整数倍である場合、プロセスを継続させて、後続コマンドの受信待ちを行わせるので、隙間を生じさせることなく、消去可能ブロックにデータを書き込んでゆくことができる。
(備考)
上記実施形態に基づいて説明してきたが、現状において最善の効果が期待できるシステム例として提示したに過ぎない。本発明はその要旨を逸脱しない範囲で変更実施することができる。代表的な変更実施の形態として、以下(A)(B)(C)・・・・のものがある。
【0046】
(A)全ての実施形態では、記録の対象をSDメモリカードとしたが、本発明のドライブ装置の特徴は、書き込みにオーバーヘッドが発生するという不揮発メモリの物理的性質に依存するものあり、この物理的性質をもったものなら、どのような記録媒体であってもよい。例えばコンパクトフラッシュ(登録商標)カード、スマートメディア、メモリスティック、マルチメディアカード、PCMCIAカード等であってもよい。
【0047】
(B)図7に示したプログラムによる情報処理は、ハードウェア資源を用いて具体的に実現されていることから、上記フローチャートに処理手順を示したプログラムは、単体で発明として成立する。全ての実施形態は、ドライブ装置に組み込まれた態様で、本発明に係るプログラムの実施行為についての実施形態を示したが、ドライブ装置から分離して、各実施形態に示したプログラム単体を実施してもよい。プログラム単体の実施行為には、これらのプログラムを生産する行為(1)や、有償・無償によりプログラムを譲渡する行為(2)、貸与する行為(3)、輸入する行為(4)、双方向の電子通信回線を介して公衆に提供する行為(5)、店頭展示、カタログ勧誘、パンフレット配布により、プログラムの譲渡や貸渡を、一般ユーザに申し出る行為(6)がある。
【0048】
(C)図7のフロ−チャ−トにおいて時系列に実行される各ステップの「時」の要素を、発明を特定するための必須の事項と考える。そうすると、これらのフロ−チャ−トによる処理手順は、記録方法の使用形態を開示していることがわかる。各ステップの処理を、時系列に行うことで、本発明の本来の目的を達成し、作用及び効果を奏するよう、これらのフロ−チャ−トの処理を行うのであれば、本発明に係る記録方法の実施行為に該当することはいうまでもない。
【産業上の利用可能性】
【0049】
本発明に係るドライブ装置は、メモリカードへの書込時における転送レートを高めることができるため、動画データの記録という用途にメモリカードを用いる場合に最適である。動画データの記録という用途に適していることから、本発明に係るドライブ装置は、映像機器の製造に関連する映像機器産業にて利用される可能性が高い。
【図面の簡単な説明】
【0050】
【図1】本発明に係るドライブ装置の、使用行為についての形態を示す図である。
【図2】ホスト装置2、ドライブ装置4、SDカード1間の通信シーケンスを示す図である。
【図3】ドライブ装置4の内部構成を示す図である。
【図4】ドライブ装置4の単純化された内部構成を示す図である。
【図5】ホスト装置2から複数のコマンドが発行された場合、コマンド解析部11による処理がどのように行われるかを示すタイミングチャートである。
【図6】連続性が存在する場合のタイミングチャートである。
【図7】コマンド解析部11の処理手順を示すフローチャートである。
【図8】図2と同様の表記で、ホスト装置2−ドライブ装置4−SDカード1間の通信シーケンスを示した図である。
【図9】巻き込み退避の一態様を示す図である。
【図10】第2実施形態のコマンド解析部11による処理を現した図である。
【図11】第3実施形態におけるコマンド解析部11の処理内容を示す図である。
【図12】第4実施形態に係る禁止フラグ付加の一例を示す図である。
【図13】第5実施形態に係るコマンド解析部11の処理手順を示すフローチャートである。
【図14】(a)〜(d) 図13に示したコマンド解析部11による処理の具体例を示す図である。

【特許請求の範囲】
【請求項1】
ホスト装置が発するコマンドに従って、ホスト装置から送信される複数データをメモリカードに書き込むドライブ装置であって、
ホスト装置から発せられた複数コマンドを受信する受信手段と、
ホスト装置から発せられた複数コマンドのうち、1つのコマンドの書込終了アドレスが、後続するコマンドの書込開始アドレスと連続している場合、それらのコマンドによるメモリカードに対するデータ書き込みを一回のプロセスで実行する書込手段と
を備えることを特徴とするドライブ装置。
【請求項2】
前記プロセスは、ホスト装置から送信された複数データをメモリカードに順次書き込む処理を、停止指示がなされるまで繰り返すものであり、
前記ドライブ装置は、ホスト装置が発する各コマンドの書込開始アドレスと、各コマンドで書き込まれるセクタ数とを解読する解析手段と、
1つのコマンドによる書き込みセクタ数をs、後続するコマンドによる書き込みセクタ数をtとした場合、書込済みセクタ数がs+tに達した時点で停止指示を行う指示手段と
を備えることを特徴とする請求項1記載のドライブ装置。
【請求項3】
前記プロセスは、
1つのコマンドから書込開始アドレスA及び書き込みセクタ数sを前記解析手段が解読した場合に起動されて、書込開始アドレスAからのデータ書き込みを開始するものであり、
前記解析手段は、
書込済みセクタ数が、sに達するまでに後続するコマンドを解析し、
前記指示手段は、
後続コマンドの書込開始アドレスBが、先のコマンドの書込終了アドレスA+sと連続している場合、書込済みセクタ数がs+tに達した時点に停止指示を行う
ことを特徴とする請求項2記載のドライブ装置。
【請求項4】
前記解析手段は、後続するコマンドに禁止フラグが付加されているか否かを判定し、
前記指示手段は、
後続するコマンドに禁止フラグが付加されている場合、書込済みセクタ数が、sに達した時点でプロセスの停止指示を行い、
前記指示手段がs+tに達した時点でプロセスの停止指示を行うのは、後続コマンドの書込開始アドレスBが、先のコマンドの書込終了アドレスA+sと連続しており、尚且つ後続するコマンドに禁止フラグが付加されていない場合である
ことを特徴とする請求項3記載のドライブ装置。
【請求項5】
前記解析手段は、前記1つのコマンドに禁止フラグが付加されているか否かを判定し、
前記指示手段は、
前記禁止フラグが付加されている場合、書込済みセクタ数が、sに達した時点でプロセスの停止指示を行い、
前記指示手段がs+tに達した時点でプロセスの停止指示を行うのは、後続コマンドの書込開始アドレスBが、前記コマンドの書込終了アドレスA+sと連続しており、尚且つ前記コマンドに禁止フラグが付加されていない場合である
ことを特徴とする請求項3記載のドライブ装置。
【請求項6】
ホスト装置から送信されるコマンドには待機フラグが付加されたものがあり、
待機フラグが付加されたコマンドがホスト装置から送信され、後続するコマンドが未受信である場合、前記解析手段及び指示手段は、後続するコマンドの受信待ちを行う
ことを特徴とする請求項2〜4の何れかに記載のドライブ装置。
【請求項7】
前記ホスト装置は、タグが付された状態のコマンドを順次ドライブ装置に送信し、
当該コマンドの順位は、このタグに示される
ことを特徴とする請求項1〜6の何れかに記載のドライブ装置。
【請求項8】
前記ドライブ装置は、
ホスト装置により送信された複数コマンドを格納する格納手段と、
格納手段における複数コマンドを、書込開始アドレスの順に並べ替える並替手段とを備え、
前記解析手段は、
この並替手段により並べ替えられた順位で解析を行う
ことを特徴とする請求項3〜5の何れかに記載のドライブ装置。
【請求項9】
前記解析手段は、s+tが、メモリカードにおける消去可能ブロックのセクタ数の整数倍であるか否かの判定を行い、
前記s+tが消去可能ブロックのセクタ数の非整数倍である場合、前記指示手段は、書込済みセクタ数がs+tに達したとしても停止指示を行わず、前記プロセスを継続させて後続コマンドの受信を待つ
ことを特徴とする請求項2記載のドライブ装置。
【請求項10】
ホスト装置が発するコマンドに従って、ホスト装置から送信される複数データをメモリカードに書き込む処理をコンピュータに実行させるプログラムであって、
ホスト装置から発せられた複数コマンドを受信するステップと、
ホスト装置から発せられた複数コマンドのうち、1つのコマンドの書込終了アドレスが、後続するコマンドの書込開始アドレスと連続している場合、それらのコマンドによるメモリカードに対するデータ書き込みを一回のプロセスで実行する書込ステップと
をコンピュータに行わせることを特徴とするプログラム。
【請求項11】
前記プロセスは、ホスト装置から送信された複数データをメモリカードに順次書き込む処理を、停止指示がなされるまで繰り返すものであり、
前記プログラムは、ホスト装置が発する各コマンドの書込開始アドレス及び書き込みセクタ数を解読する解析ステップと、
1つのコマンドによる書き込みセクタ数をs、後続するコマンドによる書き込みセクタ数をtとした場合、書込済みセクタ数がs+tに達した時点で停止指示を行う指示ステップと
を備えることを特徴とする請求項10記載のプログラム。
【請求項12】
前記プロセスは、
1つのコマンドから書込開始アドレスA及び書き込みセクタ数sを前記解析ステップが解読した場合に起動されて、書込開始アドレスAからのデータ書き込みを開始するものであり、
前記解析ステップは、
書込済みセクタ数が、sに達するまでに後続するコマンドを解析し、
前記指示ステップは、
後続コマンドの書込開始アドレスBが、先のコマンドの書込終了アドレスA+sと連続している場合、書込済みセクタ数がs+tに達した時点に停止指示を行う
ことを特徴とする請求項11記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公表番号】特表2006−514386(P2006−514386A)
【公表日】平成18年4月27日(2006.4.27)
【国際特許分類】
【出願番号】特願2005−518738(P2005−518738)
【出願日】平成16年10月28日(2004.10.28)
【国際出願番号】PCT/JP2004/016365
【国際公開番号】WO2005/041207
【国際公開日】平成17年5月6日(2005.5.6)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】