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