(57)【特許請求の範囲】
【請求項１】
クラスタ単位にデータの書き込みおよび読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリのアクセス動作を制御する制御回路と、を有し、
前記不揮発性メモリは、
管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込みおよび読み出しデータを一時的に保持するキャッシュ領域と、を有し、
前記管理領域は、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する
メモリ装置。
【請求項２】
前記制御回路は、
管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる
請求項１記載のメモリ装置。
【請求項３】
前記制御回路は、
前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する
請求項１記載のメモリ装置。
【請求項４】
前記制御回路は、
前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する
請求項３記載のメモリ装置。
【請求項５】
前記制御回路は、
前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する
請求項３記載のメモリ装置。
【請求項６】
前記制御回路は、
前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする
請求項５記載のメモリ装置。
【請求項７】
前記制御回路は、
前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する
請求項５記載のメモリ装置。
【請求項８】
クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存ステップと
を含むメモリ制御方法。
【請求項９】
前記保存ステップにおいては、
管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる
請求項８記載のメモリ制御方法。
【請求項１０】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する
請求項８記載のメモリ制御方法。
【請求項１１】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する
請求項１０記載のメモリ制御方法。
【請求項１２】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する
請求項１０記載のメモリ制御方法。
【請求項１３】
前記保存ステップにおいては、
前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする
請求項１２記載のメモリ制御方法。
【請求項１４】
前記保存ステップにおいては、
前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する
請求項１２記載のメモリ制御方法。
【請求項１５】
クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御処理であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶処理と、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存処理と
を含むメモリ制御処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばフラッシュメモリに適用して好適な、不揮発性メモリを有するメモリ装置、メモリ制御方法、およびプログラムに関するものである。
【背景技術】
【０００２】
パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の外部記憶装置として、フラッシュメモリを備えたメモリ装置が知られている。
フラッシュメモリは、データの書き込みおよび読み出しをクラスタ単位でランダムに行うことができるが、データの消去はランダムではなくブロック単位で行われる。
【０００３】
フラッシュメモリの記憶素子は、データの書き換えを行うことにより劣化するため、その書き換え回数が制限される。このため、同じクラスタに繰り返しアクセスが集中するのを防止してフラッシュメモリの寿命を延ばすようにしている。
ある物理アドレスに記憶されたある論理アドレスのデータを書き換える場合には、更新されたデータは、同じ物理ブロックには書き込まれず、消去状態の新しい物理ブロック（フリーブロック）に書き込まれる。
【０００４】
ここで、データ更新の前後で論理アドレスが割り当てられる物理アドレスが変化するため、論理アドレスおよび物理アドレスの対応関係を表わすアドレス変換テーブルがフラッシュメモリに記憶される。アドレス変換テーブルは、メモリ装置がホスト装置に装着されると、フラッシュメモリから読み出され、ホスト装置またはメモリ装置の作業メモリに格納され更新される。
【０００５】
一般のメモリ装置では、わずか数セクタのデータを書き換える場合にも、物理ブロックの更新が行われるため、そのアクセス時間がかかるとともに、記憶素子の劣化が早まるため、たとえば、フラッシュメモリのブロックをヘッダ領域とデータ領域に分けている。
そして、データ領域に書き込まれるデータレコードの先頭アドレスおよびレコード長をヘッダ領域に書き込むとともに、データ領域に書き込まれるデータレコードにリンク情報領域およびフラグ領域を付加するようにしている。
これにより、データレコード単位の書き込み／更新を行い、ブロックの空き領域がなくなったときには、有効なデータレコードを抽出してフリーブロックに転送し、転送元のブロックを消去するようにしている（たとえば特許文献１参照）。
【特許文献１】特開平１１−７３３６３号公報
【特許文献２】特開２００６−４８２２７号公報
【特許文献３】特開２００７−１５６６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のように、ヘッダ領域およびデータ領域からなるブロックを設定したフラッシュメモリでは、ブロック毎にヘッダ領域、リンク情報領域およびフラグ領域が設定されるため、データを記憶するメモリ容量が減少し、メモリを有効に利用することができないといった問題があった。
【０００７】
そこで、本出願人は、論理ブロックのアドレス、物理ブロックのアドレスおよび物理ブロックの終了クラスタ番号を対応付けた論理／物理テーブルを設け、書き込み命令に基づくデータの開始クラスタ番号ＳＣが、論理／物理テーブルの物理ブロックの終了クラスタ番号ＥＣより大きい場合、従来のような物理ブロックの更新（新たなデータの書き込みおよび元の物理ブロックのコピー）を行わずに、物理ブロックにデータを追記するメモリ装置、メモリ装置の制御方法およびデータ処理システムを提案した（特許文献２参照）。
【０００８】
これによれば、フラッシュメモリのメモリ容量を大きく減少させることなく、フラッシュメモリの消去回数を減らし、フラッシュメモリのデータの更新を効率的に行い、記憶素子の劣化を低減するとともに、データのアクセスを高速に行うことができる。
ここで、上述したデータ処理システムにおいて、不揮発性メモリを記録媒体とするメモリ装置は、不揮発性メモリに対してデータの上書きが不可であるとともに、書き込み単位と消去単位が異なる(書き込み単位＜消去単位)ものであり、さらに、不揮発性メモリのブロック内は追記可能である。
【０００９】
また、ＦＡＴ（File Allocation Tables）ファイルシステムを用いたメモリ装置は、ファイルデータの書き込みと並行して、管理情報のＦＡＴやディレクトリエントリ（Directory Entry）の更新が必要である。
また、管理情報を保存する記録装置は、メモリ装置内に、ユーザ用のデータ領域以外に管理情報を保存するエリアを持っていて、ホスト装置からのファイルデータの書き込みが発生するたびに、管理情報をフラッシュメモリに更新する。
さらに、キャッシュブロックを有するメモリ装置は、クラスタ単位でキャッシュブロック内のデータを保存するとともに、キャッシュブロック内の論理・物理の対応関係は固定である（物理ブロックの先頭から昇順に論理アドレスが割当られている）。
【００１０】
このため、上述したデータ処理システムでは、複数セクタ単位の論理空間サイズである指定論理境界を超える論理アドレスが連続したファイルデータの書き込みにおいて、更新サイズがクラスタサイズ未満であっても、ライトバック処理が発生してしまう。
このライトバック処理により、ブロック消去が発生するため製品寿命が短くなるという不都合が発生する。また、ライトバック処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【００１１】
また、ファイルデータの書き込みに伴う管理情報のＦＡＴやディレクトリエントリの更新は、書き込まれるファイルサイズが複数セクタ単位の論理空間サイズである指定論理境界以下となることから、同じ論理アドレス空間にアクセスが集中するため上書きが頻繁に発生する。
このため、上述したデータ処理システムでは、１度キャッシュブロックに書き込まれた論理空間に対して書き込みが行われた場合、ライトバック処理が発生してしまう。このライトバック処理により、ブロック消去が発生するため製品寿命が短くなる。また、ライトバック処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【００１２】
つまり、不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）は上書き不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合に、メモリ装置内では、論理／物理テーブルの整合を取る必要がある。
このため、ライトバック処理により、書き換えデータのサイズに関係なく、ブロック単位で別ブロックに書き換えデータを保存する必要があった。
また、書き換えデータ以外のデータは元ブロック内にあるデータをガベージ処理によりコピーする必要があった。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があったが、ブロックには消去回数が制限されていた。
【００１３】
そこで、本出願人は、これら問題点を解消すべく、ライトバック処理の発生を抑え、ライトバック処理によるガベージ処理と消去処理を防止することにより書き込みパフォーマンスの低下を抑止するメモリ装置およびメモリ制御方法を提案した（特許文献３参照）。
しかし、この技術においても次のような不利益ある。
【００１４】
すなわち、提案した技術においては、データの書き込みがある指定論理境界以下の場合には、OD-CACHEと呼ばれるキャッシュブロックにデータを保存していた。管理情報にはそのキャッシュブロック（OD-CACHE）の、論理の開始と終了(論理空間Ａ)が判断できるように登録されていた。そして、登録可能な論理空間は１つだったため、同一ブロック内において異なった論理空間Ｂの書き込みが発生した場合、ライトバックする必要があった。
また、管理情報のサイズを大きくすることで上記問題は解決できたが、管理情報の保存時間と保存処理の発生頻度が増加するため、ライトバックが発生しない場合の書き込みにおけるパフォーマンス低下が問題だった。
【００１５】
本発明は、ライトバック処理の発生頻度を的確に低下させることが可能で、ライトバック処理が発生しない場合の書き込みパフォーマンスの低下を防ぐことができるメモリ装置、メモリ制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明の第１の観点のメモリ装置は、クラスタ単位にデータの書き込みおよび読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、前記不揮発性メモリのアクセス動作を制御する制御回路と、を有し、前記不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、前記ユーザデータ領域に対する書き込みおよび読み出しデータを一時的に保持するキャッシュ領域と、を有し、前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、前記制御回路は、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する。
【００１７】
好適には、前記制御回路は、管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる。
【００１８】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する。
【００１９】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する。
【００２０】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する。
【００２１】
好適には、前記制御回路は、前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする。
【００２２】
好適には、前記制御回路は、前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する。
【００２３】
本発明の第２の観点は、クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御方法であって、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存ステップとを含む。
【００２４】
本発明の第３の観点は、クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御処理であって、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶処理と、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存処理とを含むメモリ制御処理をコンピュータに実行させるプログラムである。
【００２５】
本発明によれば、所定のキャッシュブロック内に管理情報の一部を保存する、すなわち管理情報の一部をユーザデータが保存されているブロックに保存する。これにより、管理情報の不揮発性メモリへの保存サイズはそのままで、キャッシュブロックに複数の論理空間のデータを保存させることで、ライトバック処理の発生頻度を低下させる。
【発明の効果】
【００２６】
本発明によれば、ライトバック処理の発生頻度を的確に低下させることが可能で、ライトバック処理が発生しない場合の書き込みパフォーマンスの低下を防ぐことができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面に関連付けて説明する。
【００２８】
図１は、本発明の実施形態に適用されるデータ処理システムの概略構成を示す図である。
【００２９】
図１に示すように、このデータ処理システムは、ホスト装置１０と、ホスト装置１０に着脱自在に装着可能なメモリカード２０を主構成要素として有している。本実施形態において、メモリカードは不揮発性メモリであるフラッシュメモリを有する。
【００３０】
ホスト装置１０は、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器からなり、ＣＰＵ１１、メモリ１２、ディスプレイ１３、入出力処理（Ｉ／Ｏ）部１４および外部メモリＩ／Ｆ（インタフェース）１５を備える。
ＣＰＵ１１は、メモリ１２、ディスプレイ１３、Ｉ／Ｏ部１４および外部メモリＩ／Ｆ１５とバス１６を介し相互に接続されている。メモリ１２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。外部メモリＩ／Ｆ１５は、ＣＰＵ１１の制御命令に従ってメモリカード２０との間でデータを送受する。
【００３１】
メモリカード２０は、ＣＰＵ２１、メモリ２２、フラッシュメモリ２３およびホストＩ／Ｆ２４を備える。
ＣＰＵ２１は、メモリ２２、フラッシュメモリ２３およびホストＩ／Ｆ２４とバス２５を介し相互に接続されている。メモリ２２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。
フラッシュメモリ２３は、たとえば、ＮＯＲ型またはＮＡＮＤ型のフラッシュメモリ（不揮発性メモリ）からなる。
ホストＩ／Ｆ２４は、ＣＰＵ２１の制御命令に従ってホスト装置１０との間でデータを送受する。
【００３２】
図２は、図１に示されるメモリカード２０の構成例を示すブロック図である。
【００３３】
メモリカード２０は、図２に示されるように、たとえば板状のメモリスティック（登録商標）に相当し、ホスト装置１０に装着されているとき、ホスト装置１０から供給されるデータが書き込まれる。
メモリカード２０は、コントローラ部３０およびメモリ部４０を有する。メモリ部４０は複数のフラッシュメモリ２３を含み、コントローラ部３０によりそのアクセスが制御される。
【００３４】
コントローラ部３０は、シリアルＩ／Ｆ（インタフェース）３１、パラレルＩ／Ｆ３２、レジスタ３３、データバッファ３４、ＥＣＣ（Error Correcting Circuit）３５およびＭＰＵ（Micro Processing Unit）３６およびクロック信号発生部３７を備える。
シリアルＩ／Ｆ３１、パラレルＩ／Ｆ３２、レジスタ３３、データバッファ３４およびＥＣＣ３５は、バス３８により相互に接続されている。レジスタ３３、データバッファ３４およびＥＣＣ３５は、ＭＰＵ３６に接続されている。
【００３５】
レジスタ３３は、命令レジスタ等を有する。データバッファ３４は、フラッシュメモリ２３にアクセスされるデータを一時的に記憶する。ＥＣＣ３５は、データバッファ３４に記憶されたデータの誤り訂正処理を実行する。クロック信号発生部３７は、メモリスティック内部のクロック信号を発生する。
【００３６】
ホスト装置１０により出力されたデータは、信号線ＤＡＴＡ０〜３を通してシリアルＩ／Ｆ３１およびパラレルＩ／Ｆ３２の一方または双方に入力され、データバッファ３４に転送される。データバッファ３４に転送されたデータは、ＭＰＵ３６によりフラッシュメモリ２３に書き込まれる。
【００３７】
メモリカード２０には、信号線ＶＳＳおよびＶＣＣを通して基準電圧および電源電圧が供給される。
また、メモリカード２０には、ホスト装置１０からのデータを取り込むために必要となるクロック信号が入力される信号線ＳＣＬＫや、ホスト装置１０に対しメモリカード２０が正常に装着されているか否かを判断させるための信号線ＩＮＳや、ホスト装置１０から供給されるデータの向きを判断するための信号線ＢＳ等も設けられている。
【００３８】
次に、データ処理システムの書き込み動作の概略を説明する。
まず、書き込みコマンドおよび書き込みデータのアドレスが、次に、書き込みデータがホスト装置１０から送信され、メモリカード２０で受信される。
フラッシュメモリ２３は、セクタ単位にデータの書き込みおよび読み出しを行うが、ホスト装置１０は、クラスタ単位でデータの書き込みおよび読み出しを行う。書き込みデータがメモリカード２０に受信されると、受信された書き込みデータがデータバッファ３４に記憶される。書き込みデータの受信が終了すると、データバッファ３４に記憶された書き込みデータがフラッシュメモリ２３に書き込まれる。
【００３９】
次に、データ処理システムの読み出し動作の概略を説明する。
読み出しコマンドおよび読み出しデータのアドレスがホスト装置１０から送信され、メモリカード２０に受信されると、このアドレスの読み出しデータがフラッシュメモリ２３から読み出され、データバッファ３４に記憶される。フラッシュメモリ２３の読み出しデータの読み出しが終了すると、データバッファ３４に記憶された読み出しデータが読み出されホスト装置１０に送信される。
【００４０】
次に、本実施の形態によるメモリ制御方法の概要について説明する。
図３は、ユーザデータブロックとキャッシュブロックの対応を示す図である。
図３において、５１は論理／物理テーブルを、５２はキャッシュブロックをそれぞれ示している。
【００４１】
図１および図２に示されるフラッシュメモリ２３には、図３に示されるユーザデータブロックの論理アドレスと物理アドレスの対応を示すテーブルである論理／物理テーブル５１が記憶されている。
この論理／物理テーブル５１は、論理ブロックのアドレス０，１，２，３，４，５と、論理ブロックに割り当てられた物理ブロックのアドレス３，８，７，６，５，４とを対応付けたものである。
この論理／物理テーブル５１は、メモリカード２０がホスト装置１０に装着されると、コントローラ部３０によりフラッシュメモリ２３から読み出され、データの書き込み動作に従って書き換えられる。
【００４２】
ここで、この論理／物理テーブル５１の物理ブロックのアドレス３，８，７，６，５，４のうちのいずれかには、キャッシュブロック５２の物理アドレス２，１，０，９が対応付けられる。このとき、キャッシュブロック５２の物理アドレス２，１，０，９は、５３に示すように使用頻度が低い順に配置される。
【００４３】
たとえば、論理／物理テーブル５１の物理ブロックのアドレス８，７，６，４が空き領域の物理ブロックのアドレスを示しているとき、この物理ブロックのアドレス８，７，６，４に対応して、消去済みのキャッシュ領域であるフリーブロックの新規キャッシュブロック５２の物理アドレス２，１，０，９が割り当てられる。
このとき、キャッシュ領域の新規キャッシュブロック５２の物理アドレス２，１，０，９は、キャッシュブロック５２のうちで比較的使用頻度が低い順に配置され、これにより、キャッシュブロック５２の先頭からデータ書き込みを可能にする。
【００４４】
次に、本実施の形態によるメモリ制御方法の前提条件について説明する。
まず、第１に用語の定義について説明する。
【００４５】
図２に示したメモリカード２０などのメモリ装置内の複数のフラッシュメモリ２３には、それぞれ、管理領域４１、ユーザデータ領域４２、キャッシュ領域４３が存在する。
ここで、ユーザデータ領域４２のブロックをユーザデータブロックと呼び、キャッシュ領域４３のブロックをキャッシュブロックと呼ぶ。キャッシュブロックはユーザブロックと同じサイズである。
また、キャッシュブロックの論理空間をユーザブロック単位に区切ったサイズを論理ブロックサイズと呼び、ユーザブロック内の複数セクタ単位の論理空間のサイズを論理ページサイズ（指定論理境界）と呼ぶ。
また、消去済みのブロックをフリーブロックと呼び、新規キャッシュブロックを取得する際はフリーブロックから取得する。
【００４６】
ライトバック処理とは、キャッシュブロック内のデータをユーザデータブロックに書き戻すことで、キャッシュブロックを使用していた状態から使用しない状態にする処理である。
このとき、ユーザデータブロックとキャッシュブロック間のデータをマージする必要があるため、コピー処理が発生する。また、マージ処理後、不必要になったブロックは消去する。
ガベージ処理とは、ライトバック処理を行うためのコピー処理をいう。
【００４７】
第２に、キャッシュブロックについて説明する。
キャッシュブロックはAD-CACHEとOD-CACHEの２種類の形態がある。キャッシュブロックとして確保されている個数は固定数だが、AD-CACHE、OD-CACHEの各個数は、ホストからの書き込みにより変化する。
AD-CACHEは、ファイルデータの保存を目的としたキャッシュブロックである。書き込みサイズにより、OD-CACHE、AD-CACHEを判別する。新規キャッシュブロックを取得して書き込みを行う際に、指定論理境界（論理ページサイズ）を超えればAD-CACHEとする。
【００４８】
AD-CACHEは、最初に書き込みが発生した論理アドレスにより、以降書き込まれる論理アドレスが制限される。最初に書き込みが発生した論理アドレス空間がある任意の論理ブロックサイズ空間（Ａ）内である場合、次に書き込む論理アドレス空間が論理空間（Ａ）内であり、かつ、キャッシュブロック内の書き込み済み論理空間以外の場合、このキャッシュブロックへの書き込みが可能である。
【００４９】
OD-CACHEは、管理情報のＦＡＴやディレクトリエントリの保存を目的としたキャッシュブロックである。書き込みサイズにより、OD-CACHE、AD-CACHEを判別する。新規キャッシュブロックを取得して書き込みを行う際に、指定論理境界（論理ページサイズ）以下であればOD-CACHEとする。
【００５０】
OD-CACHEは、最初に書き込みが発生した論理アドレスにより、以降書き込まれる論理アドレスが制限される。最初に書き込みが発生した論理アドレス空間がある任意の論理ページサイズ空間（Ｂ）内である場合、次に書き込む論理アドレス空間が論理空間（Ｂ）内である場合、このキャッシュブロックへの書き込みが可能である。
【００５１】
第３に、管理情報内にあるキャッシュブロックの情報について説明する。
キャッシュブロックの更新頻度を示す管理情報、キャッシュブロックがどの論理ブロックに対応しているかを示す管理情報およびキャッシュブロックの先頭の論理アドレス情報が管理情報内に保持される。
【００５２】
また、キャッシュブロック内の書き込み済みセクタアドレス情報は、管理情報内に登録されていないため、キャッシュブロック内をリードすることにより取得される。
また、キャッシュブロックがAD-CACHEかOD-CACHEかを区別する情報が管理情報内に保持される。
【００５３】
次に、具体的な動作を説明する。
図４〜図８は、書き込み処理を示すフローチャートである。図４〜図８は、ＣＰＵ２１の制御によるフラッシュメモリ２３に対する書き込み動作を示す図である。
【００５４】
図４において、まず、ＣＰＵ２１は管理領域４１の管理情報からユーザデータ領域４２のユーザデータブロックのアドレス情報と書き込み済み論理空間情報を取得する（ステップＳ１）。
また、ＣＰＵ２１はユーザデータ領域４２のユーザデータブロックの論理アドレスに対応したキャッシュ領域４３のキャッシュブロックのアドレス情報と書き込み済み論理空間情報を取得する。
また、このとき、ＣＰＵ２１はキャッシュ領域４３の新規キャッシュブロック（フリーブロック）のアドレス情報を取得する処理を行う。
【００５５】
次に、ＣＰＵ２１は使用中のキャッシュブロックの中から割当済みキャッシュブロックがあるか否かを判断する（ステップＳ２）。ステップＳ２は図９に示す状態のキャッシュブロックを検索する処理である。
【００５６】
図９は、ホストからの書き込みにより空きのないフル状態になったときのキャッシュブロック（AD-CACHE）の状態（２パターン）を示す図である。
【００５７】
図９の（Ａ）は、ユーザデータブロック１４１に対して、キャッシュブロック（AD-CACHE）１４２が、ユーザデータブロック１４１に対応する論理セクタアドレス０〜ｎの空間に書き込み済みデータ１４３およびホストからの書き込みデータ１４４が書き込まれた第１の状態を示している。
【００５８】
また、図９の（Ｂ）は、ユーザデータブロック１４５に対して、キャッシュブロック（AD-CACHE）１４６が、ユーザデータブロック１４５の論理セクタアドレス０〜ｎの空間に対してずれた論理セクタアドレス２〜ｎ、０〜１の空間に書き込み済みデータ１４７およびホストからの書き込みデータ１４８が書き込まれた第２の状態を示している。
【００５９】
図９に示すキャッシュブロックの状態は、更なる書き込みができないため、キャッシュブロックとして存在する意味がないので優先的にライトバックを行う。図９に示すキャッシュブロックの状態がなければ、使用頻度の低いキャッシュブロックを優先的にライトバックする（第１２の書き込み手段、第１優先処理手段）。
【００６０】
ステップＳ２の判断で、割当済みキャッシュブロックがなければ、ＣＰＵ２１は未使用のキャッシュブロックがあるか否かを判断する（ステップＳ３）。
ステップＳ３の判断で、未使用のキャッシュブロックがあるときは、図５に示すステップＳ１０以降の処理へ進み、ステップＳ３の判断で、未使用のキャッシュブロックがないときは、ＣＰＵ２１はキャッシュブロック（AD-CACHE）でかつフル状態のキャッシュブロックがあるか否かを判断する（ステップＳ４）。
【００６１】
ステップＳ４の判断で、キャッシュブロック（AD-CACHE）でかつフル状態のキャッシュブロックがなければ、ＣＰＵ２１は使用頻度の低いキャッシュブロックを取得する（ステップＳ５）。
そして、ＣＰＵ２１は取得した使用頻度の低いキャッシュブロックをユーザデータブロックの論理セクタアドレスに再割当をするライトバック処理を行う（ステップＳ７）。
ＣＰＵ２１はメモリ２２の管理情報を更新して（ステップＳ８）、図５に示すステップＳ１０以降の処理へ進む。
【００６２】
ステップＳ４の判断で、キャッシュブロック（AD-CACHE）でかつフル状態のキャッシュブロックがあれば、ＣＰＵ２１はフル状態のキャッシュブロックを取得する（ステップＳ６）。そして、ステップＳ７へ進む。
【００６３】
また、ステップＳ２の判断で、割当済みキャッシュブロックがあれば、ＣＰＵ２１はキャッシュブロックの状態がキャッシュブロック（AD-CACHE）であるかまたはキャッシュブロック（OD-CACHE）であるかを判断する（ステップＳ９）。
ステップＳ９の判断で、キャッシュブロックの状態がキャッシュブロック（AD-CACHE）であるときは図６に示すステップＳ２１以降の処理へ進み、キャッシュブロックの状態がキャッシュブロック（OD-CACHE）である図７に示すステップＳ３１以降の処理へ進む。
【００６４】
図５に示すステップＳ１０では、ＣＰＵ２１は指定論理境界を超える書き込みが発生したか否かを判断する（ステップＳ１０）。
ステップＳ１０の判断で、指定論理境界を超える書き込みが発生した場合に、ＣＰＵ２１は新規キャッシュブロック（AD-CACHE）へ書き込みを行う（ステップＳ１４）。
ステップＳ１４で新規キャッシュブロック（AD-CACHE）を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップＳ１４の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【００６５】
図１０は、ステップＳ１４の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図１０において、ユーザデータブロック１１１に対する論理セクタアドレス２〜５の書き込みが発生した場合の書き込み終了後はキャッシュブロック１１２の先頭から論理セクタアドレス２〜５の書き込みが行われ、残りは空き領域の状態となる（第１の書き込み手段、第２の書き込み手段）。
【００６６】
ステップＳ１４の書き込み終了後は、ＣＰＵ２１はユーザデータブロック１１１に対してキャッシュブロック１１２が新しく割り当てられたのでメモリ２２の管理情報を更新し（ステップＳ１５）、管理領域４１に管理情報を書き込む（ステップＳ１６）。
【００６７】
図６に示すステップＳ２１では、ＣＰＵ２１はキャッシュブロック（AD-CACHE）が書き込み済み領域のみのフル状態であるか否かを判断する（ステップＳ２１）。
ステップＳ２１の判断で、キャッシュブロック（AD-CACHE）が書き込み済み領域のみのフル状態でないときは、ＣＰＵ２１はキャッシュブロック（AD-CACHE）への書き込み条件を満たすか否かを判断する（ステップＳ２２）。
【００６８】
ステップＳ２２の判断で、キャッシュブロック（AD-CACHE）が書き込み条件を満たす時は、ＣＰＵ２１はキャッシュブロック（AD-CACHE）への書き込みを行う（ステップＳ２３）。そして、ＣＰＵ２１はメモリ２２の管理情報を更新する（ステップＳ２４）。
【００６９】
ステップＳ２２は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間に対して、以下の図１１に示す８１〜８４の論理空間に当てはまるか否かを判別する処理である。
【００７０】
図１１は、ステップＳ２２の書き込み条件を満たす書き込みパターンを示す図である。
図１１において、８１は、書き込み済み空間８６の書き込み済みセクタ以降から書き込みが始まる場合を示し、８２は、書き込み済み空間８６の書き込み済みセクタ直後から書き込みが始まる場合を示す。８３は、ホストからの書き込みデータの書き終わりが書き込み済み空間８６の書き込み済みセクタの手前の場合を示し、８４は、ホストからの書き込みデータの書き終わりが書き込み済み空間８６の書き込み済みセクタの直前の場合を示している。
【００７１】
ステップＳ２３は、書き込みが発生した場合、ライトバック処理を行わずに割り当てられているキャッシュブロックに書き込みを行う処理である。
ステップＳ２３の書き込みはキャッシュブロック内の書き込み済みセクタの直後から書き込みを行う。直後から書き込みができない場合は、書き込みの開始セクタアドレスまでコピーを行う。
【００７２】
図１２は、ステップＳ２３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図１０の状態から、図１２において、ユーザデータブロック１２１に対する論理セクタアドレス７〜８の書き込みが発生した場合、書き込み終了後のキャッシュブロック１２２は論理セクタアドレス２〜５の書き込み済みデータ１２３に続いて、１２４に示すように論理セクタアドレス６はユーザデータブロック１２１からコピーされ、これに続いて論理セクタアドレス７〜８のホストからの書き込みデータ１２５が書き込まれた状態となる（第３の書き込み手段、第４の書き込み手段）。
【００７３】
ステップＳ２３の書き込み終了後は、キャッシュブロックのブロックアドレスが変化していないため管理情報を保存するための管理領域４１への書き込みは発生しないことから、メモリ２２の管理情報を更新するのみとなる（ステップＳ２４）。
ステップＳ２１の判断で、キャッシュブロック（AD-CACHE）が書き込み済み領域のみのフル状態であるとき、または、ステップＳ２２の判断で、キャッシュブロック（AD-CACHE）への書き込み条件を満たさないときは、ＣＰＵ２１は書き込みサイズが論理ブロックサイズであるか否かを判断する（ステップＳ２５−１）。
ステップＳ２５−１の判断で、書き込みサイズが論理ブロックサイズでないときは、ＣＰＵ２１はライトバック処理を行う（ステップＳ２５）。そして、ＣＰＵ２１はメモリ２２の管理情報を更新する（ステップＳ２６）。
【００７４】
ステップＳ２５は、書き込みが発生した場合、キャッシュブロック（AD-CACHE）が、図９に示す書き込み済みのフル状態であれば、ガベージ処理を発生させずにライトバックを行う処理である。
このとき、キャッシュブロックをユーザデータブロックとして管理情報に登録する。ライトバック処理前のユーザデータブロックは消去処理を行いフリーブロックとして管理情報に登録する。
【００７５】
また、ステップＳ２５で、キャッシュブロック（AD-CACHE）がフル状態でない場合であっても、ガベージ処理を行うことによりフル状態にすることも可能である。
また、ステップＳ２５−１の判断で、書き込みサイズが論理ブロックサイズのときは、新規キャッシュブロック（AD-CACHE）へフル状態で書き込みを行う（図８のステップＳ４１）。そして、ＣＰＵ２１はキャッシュブロック（AD-CACHE）が割当済みであるか否かを判断する（ステップＳ４２）。
【００７６】
ステップＳ４２の判断で、キャッシュブロック（AD-CACHE）が割当済みであるときは、ＣＰＵ２１は割当済みキャッシュブロック（AD-CACHE）の消去を行う（ステップＳ４３）。
そして、ステップＳ４３の割当済みキャッシュブロック（AD-CACHE）の消去終了後は、ＣＰＵ２１はユーザデータブロック１１１に対して割当済みキャッシュブロック１１２が消去されたのでメモリ２２の管理情報を更新し（ステップＳ４４）、管理領域４１に管理情報を書き込む（ステップＳ４５）。
【００７７】
ステップＳ４２の判断で、キャッシュブロック（AD-CACHE）が割当済みでないときは、ＣＰＵ２１はユーザデータブロック１１１に対して未割当キャッシュブロック１１２があるのでメモリ２２の管理情報を更新し（ステップＳ４６）、管理領域４１に管理情報を書き込む（ステップＳ４７）。
【００７８】
上述したように、キャッシュブロック（AD-CACHE）、または後述するキャッシュブロック（OD-CACHE）が割当済の状態において、書き込みが発生し、かつライトバックが発生する場合において、書き込みサイズが論理ブロックサイズである場合に限り、ライトバッグを行なわずに新規キャッシュブロックに書き込みを行い、古いキャッシュブロックを消去する。
【００７９】
これにより、ライトバック処理が発生しないため、ガベージ処理による書き込みパフォーマンスの低下を防ぐことができる。
なお、この場合、消去処理は発生することになる。また、キャッシュブロック（AD-CACHE）、または後述するキャッシュブロック（OD-CACHE）の割り当てがどのような状態であってもガベージ処理が発生しないため、パフォーマンスを一定に保つことができる。
【００８０】
図１３は、ステップＳ２５の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図１３において、ユーザデータブロック１３１の論理セクタアドレス０〜ｎに対して、キャッシュブロック１３２に論理セクタアドレス２〜７の書き込み済みデータ１３３があるとき、他の論理セクタアドレス８〜ｎ、０〜１のデータをユーザデータブロック１３１からキャッシュブロック１３２に１３４に示すようにコピーして、キャッシュブロック１３２をフル状態にしておいて、ライトバック処理を行った後に再割当を行うことができる（第５の書き込み手段）。
【００８１】
つまり、図１３に示すようにユーザデータブロック１３１に書き込まれているデータをすべてキャッシュブロック１３２にコピーする。
コピー処理後、キャッシュブロック１３２をユーザデータブロック１３１としてメモリ２２の管理情報に登録し、コピー処理前のユーザデータブロックは消去処理を行いフリーブロックとしてメモリ２２の管理情報に登録する。
【００８２】
以上が、指定論理境界を超える書き込みについての説明である。次に、指定論理境界以下の書き込みについて説明する。
【００８３】
図５のステップＳ１０の判断で、指定論理境界以下の書き込みが発生した場合に、ＣＰＵ２１は新規キャッシュブロック（OD-CACHE）へ書き込みを行う（ステップＳ１１）。
ステップＳ１１で新規キャッシュブロック（OD-CACHE）を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップＳ１１の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【００８４】
図１４は、ステップＳ１１の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図１４において、ユーザデータブロック１５１に対する論理セクタアドレス２の書き込みが発生した場合の書き込み終了後はキャッシュブロック１５２の先頭から論理セクタアドレス２はホストからの書き込みデータ１５３が書き込まれ、これに続いて、１５４に示すように論理セクタアドレス３はユーザデータブロック１５１からデータをコピーして、両者を合わせて指定論理境界１５５となるようにし、残りは空き領域の状態となる（第６の書き込み手段、第７の書き込み手段）。
【００８５】
ステップＳ１１の書き込み終了後は、ＣＰＵ２１はユーザデータブロック１５１に対してキャッシュブロック１５２が新しく割り当てられたのでメモリ２２の管理情報を更新し（ステップＳ１２）、管理領域４１に管理情報を書き込む（ステップＳ１３）。
ステップＳ１１は、指定論理境界以下の書き込みが発生した場合にキャッシュブロックを用いることで、ライトバック処理を発生させずに書き込みを行う処理である。ステップＳ１１の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【００８６】
たとえば、図１４に示す指定論理境界１５５を２セクタとして論理セクタアドレス２の書き込みが発生した場合の書き込み終了後は図１４のキャッシュブロック１５２の状態となる。
つまり、論理セクタアドレス２のデータをキャッシュブロック１５２の先頭に書き込み、論理セクタアドレス３のデータは、ユーザデータブロック１５１の任意のデータからコピーしている。
この書き込みおよびコピー処理の終了後は、キャッシュブロック１５２が新しく割り当てられるのでメモリ２２の管理情報を更新し、管理領域４１に書き込むようにしている。
【００８７】
図７に示すステップＳ３１では、ＣＰＵ２１はキャッシュブロック（OD-CACHE）へ書き込み条件を満たすか否かを判断する（ステップＳ３１）。
ステップＳ３１の判断で、キャッシュブロック（OD-CACHE）への書き込み条件を満たすときは、ＣＰＵ２１はキャッシュブロック（OD-CACHE）が書き込み済み領域のみのフル状態であるか否かを判断する（ステップＳ３２）。
【００８８】
ステップＳ３２の判断で、キャッシュブロック（OD-CACHE）が書き込み済み領域のみのフル状態でないときは、ＣＰＵ２１はキャッシュブロック（OD-CACHE）への書き込みを行う（ステップＳ３３）。そして、ＣＰＵ２１はメモリ２２の管理情報を更新する（ステップＳ３４）。
【００８９】
ステップＳ３１は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間に対して、以下の図１５に示す９１〜９２の論理空間に当てはまるか否かを判別する処理である。
【００９０】
図１５は、ステップＳ３１の書き込み条件を満たす書き込みパターンを示す図である。
図１５において、９１は、書き込み済み空間９４の範囲内の書き込みの場合であり、９２は、書き込み済み空間９４と同一範囲の書き込みの場合である。
【００９１】
ステップＳ３３は、書き込みが発生した場合、ライトバック処理を行わずに割り当てられているキャッシュブロックに書き込みを行う処理である。ステップＳ３３の書き込みはキャッシュブロック内の書き込み済みセクタの直後から書き込みを行う。
【００９２】
図１６は、ステップＳ３３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図１６の状態から、再度、ユーザデータブロック１６１に対する論理セクタアドレス２の書き込みが発生した場合、書き込み終了後のキャッシュブロック１６２は論理セクタアドレス２〜３の書き込み済みデータ１６３に続いて、１６４に示すように論理セクタアドレス２のホストからのデータの書き込みを行い、１６５に示すように論理セクタアドレス３のデータはユーザデータブロックからコピーする。
これにより、１６４および１６５に示す論理セクタアドレス２〜３は指定論理境界１６６の状態となる（第８の書き込み手段、第９の書き込み手段）。
【００９３】
ステップＳ３３の書き込み終了後は、キャッシュブロックのブロックアドレスが変化していないため管理情報を保存するための管理領域４１への書き込みは発生しないことから、メモリ２２の管理情報を更新するのみとなる（ステップＳ３４）。
【００９４】
ステップＳ３１の判断で、キャッシュブロック（OD-CACHE）への書き込み条件を満たさないときは、ＣＰＵ２１はキャッシュブロック（OD-CACHE）への書き込み条件を満たすか否かを判断する（ステップＳ３５）。
【００９５】
ステップＳ３５においては、書き込み条件を満たす場合、換言すればホスト装置からの書き込みデータの範囲が指定論理境界サイズ内の場合に図１７の処理に移行する。書き込み範囲が、指定論理境界サイズを超えた場合は、ステップＳ３９−１の処理に移行する。
【００９６】
図１８は、ステップＳ３５の書き込み条件を満たす書き込みパターンを示す図である。
ステップＳ３５は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間１０４に対して、図１７に示す１０１−１，１０１−２、１０２−１，１０２−２の論理空間に当てはまるか否かを判別する処理である。
【００９７】
図１７は、キャッシュブロック（OD-CACHE）への書き込み条件を満たす場合の処理フローである。
以下に図１７の処理フローについて説明する。
【００９８】
図１７の処理で、まず、ホスト装置からの書き込みデータがキャッシュブロック（OD-CACHE）内に追記可能か否かを判別する（ステップＳ３５０１）。
このとき、キャッシュブロック（OD-CACHE）に保存される、図１９に示されるようなＯＤ管理情報分も付加して判定を行う。
ステップＳ３５０１の判断で、追記可能であればステップＳ３５０２の処理に進み、追記不可であればステップＳ３５０５の処理に進む。
【００９９】
図１９は、ステップＳ３５０１のフル（Ｆｕｌｌ）状態（その２）におけるキャッシュブロック（OD-CACHE）の状態を示す図である。
この場合、空き領域は書き込みサイズとＯＤ管理情報のサイズを加算したサイズより小さい。
【０１００】
ステップＳ３５０２においては、現状の書き込み済みデータと異なる論理空間のデータを書き込むため、ＲＡＭ上にある図２０に示すようなＯＤ管理情報（OD-CACHE内の書き込み済みデータの物理位置を示す）１１０を更新し、更新後そのＯＤ管理情報をキャッシュブロック（OD-CACHE）へ追記し、ステップＳ３５０３の処理に進む。
ここで、ＯＤ管理情報１１０をフラッシュメモリに保存する理由は、起動時にて、キャッシュブロック（OD-DCACHE）内にある有効データの物理アドレスをすばやく取得するためである。キャッシュブロック（OD-CACHE）内を全てリードする必要がない。フラッシュメモリへの保存が発生することで、多少のオーバーヘッドにはなるが従来のライトバックに比べれば影響は小さい。
【０１０１】
図２０は、本実施形態に係るＯＤ管理情報の構造例を示す図である。
ＯＤ管理情報１１０は、ブロックサイズを管理するための情報であり、論理セクタアドレスと、これに対応する物理セクタアドレス、あるいは登録がなければ登録なしとの情報が設定される。
【０１０２】
図２１は、ステップＳ３５０２のＯＤ管理情報をキャッシュブロック（OD-CACHE）に書き込んだときの状態を示す図である。
この場合、指定論理境界とＯＤ管理情報１１０は同一サイズである。
【０１０３】
ステップＳ３５０３では、ＯＤ管理情報１１０の保存後、ホスト装置からの書き込みデータを追記し、ステップＳ３５０４の処理に進む。
【０１０４】
図２２は、ステップＳ３５０３のＯＤ管理情報をキャッシュブロック（OD-CACHE）への書き込み終了後の状態を示す図である。
図２２に示すように、ＯＤ管理情報を書き込んだ後に続いてホスト装置からの書き込みデータが書き込まれる。
【０１０５】
ステップＳ３５０４においては、ＲＡＭ上にある管理情報を更新する。
【０１０６】
ステップＳ３５０１の判断で、追記不可であればステップＳ３５０５の処理に進むが、ステップＳ３５０５では、キャッシュブロック（OD-CACHE）内に登録されている複数の論理空間が既定数以上か否かの判別を行う。
ステップＳ３５０５の判断で、既定数以上であればステップＳ３５１１の処理に進み、既定数未満であればステップＳ３５０６の処理に進む。
【０１０７】
図２３は、ステップＳ３５０５のキャッシュブロック（OD-CACHE）内に複数の論理データが書き込み済みの状態を示す図である。
この場合、ブロック内の最後尾にあるＯＤ管理情報１１０が有効となる。
【０１０８】
ステップＳ３５０６においては、キャッシュブロック（OD-CACHE）内に保存されている有効データを新規キャッシュブロック（OD-CACHE）へコピーする。
このとき、ＲＡＭ上のＯＤ管理情報も更新し、ステップＳ３５０７の処理に進む。
ここで新規キャッシュブロック（OD-CACHE）へのコピーを行う理由は、キャッシュブロック（OD-CACHE）へ書き込みデータはＦＡＴなど、同一論理アドレスを頻繁に更新してくるデータを対象としており、一度キャッシュブロック（OD-CACHE）へ書き込まれたデータは以降、頻繁に更新されると考えられるため、ライトバック処理を行うよりはオーバーヘッド(ブロック内の全ページコピーとブロック消去２回)が抑えられるためである。
【０１０９】
図２４は、ステップＳ３５０６の新規キャッシュブロック（OD-CACHE）へ有効データをコピーした後の状態を示す図である。
有効データのコピーの際、最後尾の有効なＯＤ管理情報１１０にみがコピーされる。このコピーしたＯＤ管理情報１１０の前側の領域には、論理セクタアドレス０〜７順番につめて書き込まれる。そして、ＯＤ管理情報１１０の後の領域は空き領域となる。
【０１１０】
ステップＳ３５０７では、新規キャッシュブロック（OD-CACHE）へコピー後の状態のＯＤ管理情報１１０を新規キャッシュブロック（OD-CACHE）へ追記し、ステップＳ３５０８の処理に進む。
【０１１１】
ステップＳ３５０８では、ＯＤ管理情報の保存後、ホスト装置からの書き込みデータを追記し、ステップＳ３５０９の処理に進む。
【０１１２】
なお、ステップＳ３５１１の処理以降の処理は、以下に説明する図７のステップＳ３９以降の処理と同様に行われる。
【０１１３】
ステップＳ３５の判断で、キャッシュブロック（OD-CACHE）に登録されている論理空間以降の書き込みでないときは、ＣＰＵ２１は書き込みサイズが論理ブロックサイズであるか否かを判断する（ステップＳ３９−１）。
ステップＳ３９−１の判断で、書き込みサイズが論理ブロックサイズでないときは、ＣＰＵ２１はライトバック処理を行う（ステップＳ３９）。そして、ＣＰＵ２１はメモリ２２の管理情報を更新する（ステップＳ４０）。
ステップＳ３９は、書き込みが発生した場合、新規キャッシュブロック（AD-CACHE）を取得しライトバック処理を行う処理である。
【０１１４】
図２５は、ステップＳ３９の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、始めに、キャッシュブロック１７２に書き込まれている論理セクタアドレス２〜３のデータを、１７４に示すように新規キャッシュブロック１７３へコピーする。その後に、ユーザデータブロック１７１に書き込まれている他の論理セクタアドレス４〜ｎ、０〜１のデータを、１７５に示すように新規キャッシュブロック１７３へコピーする。
たとえば、図１６に示す状態からステップＳ３９のライトバック処理を行うと図２４に示す状態となる。
ステップＳ３９のライトバック処理によるコピー処理後、新規キャッシュブロック１７３をユーザデータブロック１７１として管理情報に登録し、前のユーザデータブロック１７１は消去処理を行いフリーブロックとして管理情報に登録する（第１３の書き込み手段、第１優先処理手段）。
【０１１５】
ステップＳ３２の判断で、キャッシュブロック（OD-CACHE）が書き込み済み領域のみのフル状態のときは、ＣＰＵ２１は新規キャッシュブロック（OD-CACHE）へ書き込みを行う（ステップＳ４１）。
ステップＳ４１で新規キャッシュブロック（OD-CACHE）を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップＳ４１の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【０１１６】
ステップＳ４１の書き込み終了後は、ＣＰＵ２１はユーザデータブロックに対してキャッシュブロックが新しく割り当てられたのでメモリ２２の管理情報を更新し（ステップＳ４２）、管理領域４１に管理情報を書き込む（ステップＳ４３）。
ステップＳ４１は、書き込みが発生した場合、新規キャッシュブロック（OD-CACHE）を取得することで、ライトバック処理を行わずにキャッシュブロックの更新を行う処理である。
【０１１７】
図２６は、ステップＳ４１の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
図２７は、ステップＳ４１の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【０１１８】
たとえば、図２６に示すキャッシュブロック１８２とユーザデータブロック１８１の状態から、再度、論理セクタアドレス２の書き込みが発生した場合、図２７に示すように新規キャッシュブロック１９３の先頭に１９４に示す論理セクタアドレス２のホストからのデータを書き込み、これに続いて１９５に示す論理セクタアドレス３のデータをユーザデータブロック１９１からコピーする。
ステップＳ４１のコピー終了後は、新規キャッシュブロック１９３を新たなユーザデータブロック１９１として管理情報に登録し、前のユーザデータブロック１９１は消去処理を行いフリーブロックとして管理情報に登録する（第１０の書き込み手段）。
【０１１９】
ステップＳ３５の判断で、キャッシュブロック（OD-CACHE）に登録されている論理空間以降の書き込みであるときは、ＣＰＵ２１は新規キャッシュブロック（AD-CACHE）へ書き込みを行う（ステップＳ３６）。
ステップＳ３６で新規キャッシュブロック（AD-CACHE）を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップＳ３６の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【０１２０】
図２８は、ステップＳ３６の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
図２９は、ステップＳ３６の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【０１２１】
たとえば、図２８において、キャッシュブロック２０２とユーザデータブロック２０１の状態から、ユーザデータブロック２０１に対する論理アドレス５〜７の書き込みが発生した場合、図２９に示すように新規キャッシュブロック２１３の先頭に２１４に示す論理セクタアドレス２〜３のデータをキャッシュブロック２１２からコピーし、これに続いて２１５に示す論理セクタアドレス４のデータをユーザデータブロック２１１からコピーする。
２１５に示すデータのコピー終了後に、２１６に示す論理セクタアドレス５〜７のホストからのデータの書き込みを行う（第１１の書き込み手段）。
【０１２２】
ステップＳ３６の書き込み終了後は、ＣＰＵ２１はユーザデータブロック２１１に対してキャッシュブロック２１３が新しく割り当てられたのでメモリ２２の管理情報を更新し（ステップＳ３７）、管理領域４１に管理情報を書き込む（ステップＳ３８）。
ステップＳ３６は、ステップＳ３５の条件を満たす書き込みが発生した場合に、新規キャッシュブロック（AD-CACHE）を取得することで、ライトバック処理を行わずに書き込みを行う処理である。
【０１２３】
ステップＳ３６の書き込みの前に、キャッシュブロック２１２内の２１４に示すデータを新規キャッシュブロック２１３へコピーする。その後にコピーした２１４に示すデータの直後のセクタから書き込みを行う。直後から書き込みができない場合は、書き込みの開始セクタアドレスまで２１４に示すユーザデータからのコピーを行う。ステップＳ３６の書き込み終了後は、新規キャッシュブロック２１３を新たなキャッシュブロック２１２として管理情報に登録し、前のキャッシュブロック２１２は消去処理を行う。
【０１２４】
また、ステップＳ３９−１の判断で、書き込みサイズが論理ブロックサイズでないときは、新規キャッシュブロック（AD-CACHE）へフル状態で書き込みを行う（ステップＳ４１）。そして、ＣＰＵ２１はキャッシュブロック（AD-CACHE）が割当済みであるか否かを判断する（ステップＳ４２）。
【０１２５】
ステップＳ４２の判断で、キャッシュブロック（AD-CACHE）が割当済みであるときは、ＣＰＵ２１は割当済みキャッシュブロック（AD-CACHE）の消去を行う（ステップＳ４３）。
そして、ステップＳ４３の割当済みキャッシュブロック（AD-CACHE）の消去終了後は、ＣＰＵ２１はユーザデータブロック１１１に対して割当済みキャッシュブロック１１２が消去されたのでメモリ２２の管理情報を更新し（ステップＳ４４）、管理領域４１に管理情報を書き込む（ステップＳ４５）。
【０１２６】
ステップＳ４２の判断で、キャッシュブロック（AD-CACHE）が割当済みでないときは、ＣＰＵ２１はユーザデータブロック１１１に対して未割当キャッシュブロック１１２があるのでメモリ２２の管理情報を更新し（ステップＳ４６）、管理領域４１に管理情報を書き込む（ステップＳ４７）。
【０１２７】
上述したように、キャッシュブロック（OD-CACHE）、または前述したキャッシュブロック（AD-CACHE）が割当済の状態において、書き込みが発生し、かつライトバックが発生する場合において、書き込みサイズが論理ブロックサイズである場合に限り、ライトバッグを行なわずに新規キャッシュブロックに書き込みを行い、古いキャッシュブロックを消去する。
【０１２８】
これにより、ライトバック処理が発生しないため、ガベージ処理による書き込みパフォーマンスの低下を防ぐことができる。なお、この場合、消去処理は発生することになる。また、キャッシュブロック（OD-CACHE）、または前述したキャッシュブロック（AD-CACHE）の割り当てがどのような状態であってもガベージ処理が発生しないため、パフォーマンスを一定に保つことができる。
【０１２９】
また、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック（OD-CACHE）内に管理情報の一部を保存する、より具体的には、ＯＤ管理情報の一部をユーザデータが保存されているブロックに保存することにより、いままで管理情報のフラッシュメモリへの保存サイズはそのままで、キャッシュブロック（OD-CACHE）に複数の論理空間のデータを保存させることで、いままで比べてライトバックの発生頻度を低下させることを実現している。
これにより、既存の管理情報をフラッシュメモリへ保存する際のサイズと更新タイミングを変更せずに、管理情報の情報量を多くすることができる。
そして、管理情報の情報量の増加により、ライトバックの発生頻度を低下させる（抑止する）ことが可能となる。
ライトバックの発生頻度が低下することで、ガベージ処理、フラッシュメモリの消去の発生頻度が低下し、ライトパフォーマンスの低下を防ぐことが可能となる。
フラッシュメモリの消去の発生頻度が低下することで書き換え回数(消去回数)に制限があるフラッシュメモリの寿命延命につながる。
特に、ＦＡＴを用いたメディアの場合、ＦＡＴ１、ＦＡＴ２など論理アドレスが連続でなく(飛び飛び)、かつ、同一アドレスへの書き込みが頻繁に発生するため、ブロックサイズが大きいメディア（同一ブロック内にＦＡＴ１、ＦＡＴ２が存在）に対し本発明の実施形態による処理が有効となる。
【０１３０】
さらに、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック（OD-CACHE）内に管理情報の一部を保存することにより、起動時に行う管理情報の取得の高速化を図ることができる。
すなわち、ＯＤ内のライト済み最終ページのリードにより管理情報の保存場所を取得し、次のリードで管理情報を取得することができることから、管理情報をライトする処理を行わなくとも起動時にキャッシュブロック（OD-CACHE）内を全リードすることにより管理情報を構築することが可能となる。その結果、起動時に行う管理情報の取得の高速化を図ることができる。
【０１３１】
図３０は、論理ブロック単位の読み出し処理を示すフローチャートである。
図３０において、まず、ステップＳ１１１で、ＣＰＵ２１は管理情報からユーザデータブロックのアドレス情報と書き込み済み論理空間情報を取得し、また、論理アドレスに対応したキャッシュブロックのアドレス情報と書き込み済み論理空間情報を取得する。
【０１３２】
次に、ＣＰＵ２１はキャッシュブロックがユーザデータブロックに対して割当済みであるか否かを判断する（ステップＳ１１２）。
ステップＳ１１２の判断で、キャッシュブロックがユーザデータブロックに対して割当済みでないとき、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１１３）。
ステップＳ１１３は、読み出し要求された論理ブロックに対してキャッシュブロックが割り当てられていなかった場合の処理である。
【０１３３】
ステップＳ１１２の判断で、キャッシュブロックがユーザデータブロックに対して割当済みであるとき、ＣＰＵ２１は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する（ステップＳ１１４）。
ステップＳ１１４の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する（ステップＳ１１５）。
ステップＳ１１５の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１１６）。
【０１３４】
ステップＳ１１４の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、ＣＰＵ２１は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１２３）。
ステップＳ１２３の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１２８）。
【０１３５】
ステップＳ１１６およびステップＳ１２８は、キャッシュブロックは割り当てられているが、読み出し要求された論理アドレスのデータがキャッシュブロックに存在しない場合の処理である。この場合の処理は、ユーザデータブロック内のデータをホストに読み出す処理である。
【０１３６】
ステップＳ１１５の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１１７）。
ステップＳ１１７の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出すと共に（ステップＳ１１８）、残りのデータをキャッシュブロックから読み出して、ホストに供給する（ステップＳ１１９）。
【０１３７】
ステップＳ１１７の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出すと共に(ステップＳ１２０)、続くデータをキャッシュブロックから読み出して(ステップＳ１２１)、さらに残りのデータをキャッシュブロックから読み出して、ホストに供給する(ステップＳ１２２)。
【０１３８】
ステップＳ１２３の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１２４）。
ステップＳ１２４の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１はキャッシュブロック内のデータを読み出して、ホストに供給する（ステップＳ１２５）。
【０１３９】
ステップＳ１２４の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はキャッシュブロック内のデータを読み出して（ステップＳ１２６）、残りのデータをユーザデータブロックから読み出して、ホストに供給する（ステップＳ１２７）。
【０１４０】
ステップＳ１１８〜ステップＳ１１９、ステップＳ１２０〜ステップＳ１２２、ステップＳ１２６〜ステップＳ１２７は、ユーザデータブロックとキャッシュブロック内の書き込み済みデータの両方を読み出す処理である。
この場合、読み出し始めは、ユーザデータブロック内のデータをホストに読み出す。
読み出しの後半は、ホストからの要求論理セクタアドレスに対応するデータがキャッシュブロック内に存在するならば、キャッシュブロック内のデータをホストに読み出し、存在しないならば、ユーザデータブロック内のデータをホストに読み出す。
ステップＳ１２５は、キャッシュブロック内のデータをホストに読み出す処理である。
【０１４１】
上述したように、フラッシュメモリ２３で示した不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）は上書きが不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合、メモリカード２０で示したメモリ装置内では、論理・物理テーブルの整合を取るため、書き換えデータのサイズに関係なく、ブロック単位で、別ブロックに書き換えデータを保存する必要があった。
【０１４２】
そのため、書き換えデータ以外のデータは元ブロック内にあるデータをコピーする必要がある。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があった（ライトバック処理）。
また、ブロックには消去回数の制限があった。
【０１４３】
本実施の形態では、キャッシュブロックを用いたブロック制御方法により、従来のメモリ装置と比較してライトバック処理の発生頻度を減らすことができる。ライトバックの発生頻度が減ることにより、コピーと消去の発生頻度が減るため、データ書き換えの際の処理速度を向上させることができる。また、ブロックの消去回数を減るため、メモリ装置としての製品寿命を延ばすことができる。
【０１４４】
これにより、複数セクタ単位の論理空間サイズである指定論理境界を超えるファイルデータについて、ホストから書き込みが行われた場合に、新規キャッシュブロックに書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１４５】
また、本実施の形態では、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック（OD-CACHE）内に管理情報の一部を保存する、より具体的には、ＯＤ管理情報の一部をユーザデータが保存されているブロックに保存することにより、いままで管理情報のフラッシュメモリへの保存サイズはそのままで、キャッシュブロック（OD-CACHE）に複数の論理空間のデータを保存させることで、いままで比べてライトバックの発生頻度を低下させることができる。
そして、ＯＤ内のライト済み最終ページのリードにより管理情報の保存場所を取得し、次のリードで管理情報を取得することができることから、管理情報をライトする処理を行わなくとも起動時にキャッシュブロック（OD-CACHE）内を全リードすることにより管理情報を構築することが可能となり、その結果、起動時に行う管理情報の取得の高速化を図ることができる。
【０１４６】
また、ホストから書き込みが行われた場合に、書き込まれる論理アドレス空間に関係なくキャッシュブロックの先頭からデータを書き込むことで、キャッシュブロック内のコピー処理を発生させない処理をすることができる。このとき、コピー処理の発生を抑えることで、書き込みパフォーマンスを向上させることができる。
【０１４７】
また、上述した書き込みから連続した、クラスタ境界に限らないファイルデータの書き込みが行われた場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理をすることができる。
このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。このとき、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。
また、管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１４８】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１４９】
また、キャッシュブロックがフル書き込み状態の場合、ガベージ処理を発生させずにユーザブロックへライトバック処理を行うことで、書き込みパフォーマンスを向上させることができる。
【０１５０】
次に、複数セクタ単位の論理空間サイズである指定論理境界以下の管理情報のＦＡＴやディレクトリエントリについて、ホストから書き込みが行われた場合に、新規キャッシュブロックにデータを書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５１】
また、書き込み後、同じ論理アドレス空間の書き込みが発生した場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
このとき、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５２】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５３】
また、キャッシュブロックがフル状態で書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５４】
また、管理情報のＦＡＴやディレクトリエントリの書き込み後、ファイルデータの書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５５】
また、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合、キャッシュブロックの内で更新頻度の低いキャッシュブロックを優先的にライトバック処理する。
更新頻度が低いキャッシュブロックを優先的にライトバック処理することで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、更新頻度が低いキャッシュブロックは、更新頻度が高いキャッシュブロックと比較して、書き込みが発生する確率が低いためである。
書き込みに対するキャッシュブロックの使用効率が上がることで、ライトバック処理の発生を抑えるので、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１５６】
また、キャッシュブロックの空きがない場合、書き込みがフル状態であるキャッシュブロックを優先的にガベージ処理する。フル状態のキャッシュブロックを優先的にライトバックすることで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、フル状態ならばキャッシュブロックを使用する必要がないためである。
書き込みに対するキャッシュブロックの使用効率が上がることで、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。また、フル状態であれば、ガベージ処理によるブロック内のコピー処理を行う必要がないため、パフォーマンスを向上させることができる。
上述した本実施の形態に限らず、本発明の要旨を逸脱しない限り、適宜、変更しうることはいうまでもない。
【０１５７】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【０１５８】
【図１】本実施の形態に適用されるデータ処理システムの概略構成を示す図である。
【図２】メモリカード２０の構成を示すブロック図である。
【図３】ユーザデータブロックとキャッシュブロックの対応を示す図である。
【図４】書き込み処理を示すフローチャートである。
【図５】書き込み処理を示すフローチャートである。
【図６】書き込み処理を示すフローチャートである。
【図７】書き込み処理を示すフローチャートである。
【図８】書き込み処理を示すフローチャートである。
【図９】ホストからの書き込みによりフルになったときのキャッシュブロック（AD-CACHE）の状態（２パターン）を示す図である。
【図１０】ステップＳ１４の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１１】ステップＳ２２の書き込み条件を満たす書き込みパターンを示す図である。
【図１２】ステップＳ２３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１３】ステップＳ２５の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１４】ステップＳ１１の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１５】ステップＳ３１の書き込み条件を満たす書き込みパターンを示す図である。
【図１６】ステップＳ３３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１７】キャッシュブロック（OD-CACHE）への書き込み条件を満たす場合の処理フローである。
【図１８】ステップＳ３５の書き込み条件を満たす書き込みパターンを示す図である。
【図１９】ステップＳ３５０１のフル（Ｆｕｌｌ）状態（その２）におけるキャッシュブロック（OD-CACHE）の状態を示す図である。
【図２０】本実施形態に係るＯＤ管理情報の構造例を示す図である。
【図２１】ステップＳ３５０２のＯＤ管理情報をキャッシュブロック（OD-CACHE）に書き込んだときの状態を示す図である。
【図２２】ステップＳ３５０３のＯＤ管理情報をキャッシュブロック（OD-CACHE）への書き込み終了後の状態を示す図である。
【図２３】ステップＳ３５０５のキャッシュブロック（OD-CACHE）内に複数の論理データが書き込み済みの状態を示す図である。
【図２４】ステップＳ３５０６の新規キャッシュブロック（OD-CACHE）へ有効データをコピーした後の状態を示す図である。
【図２５】ステップＳ３９の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２６】ステップＳ４１の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２７】ステップＳ４１の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２８】ステップＳ３６の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２９】ステップＳ３６の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図３０】論理ブロック単位の読み出し処理を示すフローチャートである。
【符号の説明】
【０１５９】
２０・・・メモリカード、２１・・・ＣＰＵ、２２・・・メモリ、２３・・・フラッシュメモリ、２４・・・ホストＩ／Ｆ、２５・・・バス、３０・・・コントローラ部、４０・・・メモリ部、４１・・・管理領域、４２・・・ユーザデータ領域、４３・・・キャッシュ領域。
【図１】
0004356782.tif 000002
【図２】
0004356782.tif 000003
【図３】
0004356782.tif 000004
【図４】
0004356782.tif 000005
【図５】
0004356782.tif 000006
【図６】
0004356782.tif 000007
【図７】
0004356782.tif 000008
【図８】
0004356782.tif 000009
【図９】
0004356782.tif 000010
【図１０】
0004356782.tif 000011
【図１１】
0004356782.tif 000012
【図１２】
0004356782.tif 000013
【図１３】
0004356782.tif 000014
【図１４】
0004356782.tif 000015
【図１５】
0004356782.tif 000016
【図１６】
0004356782.tif 000017
【図１７】
0004356782.tif 000018
【図１８】
0004356782.tif 000019
【図１９】
0004356782.tif 000020
【図２０】
0004356782.tif 000021
【図２１】
0004356782.tif 000022
【図２２】
0004356782.tif 000023
【図２３】
0004356782.tif 000024
【図２４】
0004356782.tif 000025
【図２５】
0004356782.tif 000026
【図２６】
0004356782.tif 000027
【図２７】
0004356782.tif 000028
【図２８】
0004356782.tif 000029
【図２９】
0004356782.tif 000030
【図３０】
0004356782.tif 000031