(57)【要約】【課題】ライトバッグ処理の発生を抑え、ライトバッグ処理によるガベージ処理と消去処理を防止することにより書き込みパフォーマンスの低下を防ぐ。【解決手段】フラッシュメモリ２３は、管理領域と、ユーザデータ領域と、キャッシュ領域とを有し、管理領域は、論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、メモリカード２０のＣＰＵ２１は、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界を超えるデータの書き込みの際に、消去済みのキャッシュ領域の新規キャッシュブロックに書き込み、さらに書き込まれる新規キャッシュブロックの論理アドレス空間に関係なく新規キャッシュブロックの先頭からデータを書き込む。【選択図】図１
2007156633.tif 000002
【特許請求の範囲】
【請求項１】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリの動作を制御する制御回路と備えたメモリ装置であって、
前記不揮発性メモリは、管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域と、を有し、
前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界を超えるデータの書き込みの際に、消去済みの前記キャッシュ領域の新規キャッシュブロックに書き込む第１の書き込み手段と、
前記第１の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの際に、書き込まれる前記新規キャッシュブロックの論理アドレス空間に関係なく前記新規キャッシュブロックの先頭からデータを書き込む第２の書き込み手段と、
を備えたことを特徴とするメモリ装置。
【請求項２】
前記制御回路は、前記第１の書き込み手段による前記新規キャッシュブロックへのデータの書き込みから連続したデータの書き込みを行う場合に、前記新規キャッシュブロック内の書き込み済みセクタの直後から追記する第３の書き込み手段、
を備えたことを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記制御回路は、前記第１の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの後に、前記新規キャッシュブロック内の書き込み済みセクタの直後から書き込みができない場合は、書き込みの開始セクタアドレスまで前記ユーザデータブロックからデータのコピーを行った後に追記する第４の書き込み手段、
を備えたことを特徴とする請求項２に記載のメモリ装置。
【請求項４】
前記制御回路は、前記第４の書き込み手段によるデータの書き込みの際に、前記新規キャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、前記新規キャッシュブロック内のデータを前記ユーザデータブロックに書き戻すライトバック処理を行う第５の書き込み手段、
を備えたことを特徴とする請求項３に記載のメモリ装置。
【請求項５】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリの動作を制御する制御回路と備えたメモリ装置であって、
前記不揮発性メモリは、管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域と、を有し、
前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界以下のデータの書き込みの際に、消去済みの前記キャッシュ領域の新規キャッシュブロックに書き込む第６の書き込み手段と、
前記第６の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの際に、書き込まれる前記新規キャッシュブロックの論理アドレス空間に関係なく前記新規キャッシュブロックの先頭からデータを書き込む第７の書き込み手段と、
を備えたことを特徴とするメモリ装置。
【請求項６】
前記制御回路は、前記第６の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの後に、前記新規キャッシュブロック内の同じ論理アドレス空間の書き込みが発生した場合、前記新規キャッシュブロック内の書き込み済みセクタの直後から追記する第８の書き込み手段、
を備えたことを特徴とする請求項５に記載のメモリ装置。
【請求項７】
前記制御回路は、前記第８の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの後に、前記書き込み後のデータが前記指定論理境界以下となる場合は、前記指定論理境界のセクタアドレスまで前記ユーザデータブロックからデータのコピーを行う第９の書き込み手段、
を備えたことを特徴とする請求項６に記載のメモリ装置。
【請求項８】
前記制御回路は、前記第９の書き込み手段によるデータの書き込みの際に、前記新規キャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１０の書き込み手段、
を備えたことを特徴とする請求項７に記載のメモリ装置。
【請求項９】
前記制御回路は、前記第１０の書き込み手段による前記新規キャッシュブロックへのデータの書き込みの後に、前記指定論理境界を超えるデータの書き込みが発生した場合は、他のキャッシュブロックへデータの書き込みを行う第１１の書き込み手段、
を備えたことを特徴とする請求項８に記載のメモリ装置。
【請求項１０】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリの動作を制御する制御回路と備えたメモリ装置であって、
前記不揮発性メモリは、管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域とを有し、
前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内のデータの書き込みの際に、前記キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、前記キャッシュブロック内のデータを前記ユーザデータブロックに書き戻すライトバック処理を行う第１２の書き込み手段と、
前記第１２の書き込み手段による前記ライトバック処理を、前記キャッシュブロックを含むキャッシュブロックのうち、データの更新頻度が低いキャッシュブロックに対して優先的に行う第１の優先処理手段と、
を備えたことを特徴とするメモリ装置。
【請求項１１】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリの動作を制御する制御回路と備えたメモリ装置であって、
前記不揮発性メモリは、管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域とを有し、
前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内のデータの書き込みの際に、前記キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１３の書き込み手段と、
前記第１３の書き込み手段によるデータの書き込みの際に、前記キャッシュブロック内がすべて書き込み済みの場合は、すべて書き込み済みの前記キャッシュブロックを優先的にライトバック処理を行うためのコピー処理であるガベージ処理を行う第２の優先処理手段と、
を備えたことを特徴とするメモリ装置。
【請求項１２】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域及びキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界を超えるデータの書き込みの際に、消去済みの前記キャッシュ領域の新規キャッシュブロックに書き込む第１の書き込みステップと、
前記第１の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの際に、書き込まれる前記新規キャッシュブロックの論理アドレス空間に関係なく前記新規キャッシュブロックの先頭からデータを書き込む第２の書き込みステップと、
を含むことを特徴とするメモリ制御方法。
【請求項１３】
前記第１の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みから連続したデータの書き込みを行う場合に、前記新規キャッシュブロック内の書き込み済みセクタの直後から追記する第３の書き込みステップ、
を含むことを特徴とする請求項１２に記載のメモリ制御方法。
【請求項１４】
前記第１の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの後に、前記新規キャッシュブロック内の書き込み済みセクタの直後から書き込みができない場合は、書き込みの開始セクタアドレスまで前記ユーザデータブロックからデータのコピーを行った後に追記する第４の書き込みステップ、
を含むことを特徴とする請求項１３に記載のメモリ制御方法。
【請求項１５】
前記第４の書き込みステップによるデータの書き込みの際に、前記新規キャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、前記新規キャッシュブロック内のデータを前記ユーザデータブロックに書き戻すライトバック処理を行う第５の書き込みステップ、
を含むことを特徴とする請求項１４に記載のメモリ制御方法。
【請求項１６】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域及びキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界以下のデータの書き込みの際に、消去済みの前記キャッシュ領域の新規キャッシュブロックに書き込む第６の書き込みステップと、
前記第６の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの際に、書き込まれる前記新規キャッシュブロックの論理アドレス空間に関係なく前記新規キャッシュブロックの先頭からデータを書き込む第７の書き込みステップと、
を含むことを特徴とするメモリ制御方法。
【請求項１７】
前記第６の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの後に、前記新規キャッシュブロック内の同じ論理アドレス空間の書き込みが発生した場合、前記新規キャッシュブロック内の書き込み済みセクタの直後から追記する第８の書き込みステップ、
を含むことを特徴とする請求項１６に記載のメモリ制御方法。
【請求項１８】
前記第８の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの後に、前記書き込み後のデータが前記指定論理境界以下となる場合は、前記指定論理境界のセクタアドレスまで前記ユーザデータブロックからデータのコピーを行う第９の書き込みステップ、
を含むことを特徴とする請求項１７に記載のメモリ制御方法。
【請求項１９】
前記第９の書き込みステップによるデータの書き込みの際に、前記新規キャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１０の書き込みステップ、
を含むことを特徴とする請求項１８に記載のメモリ制御方法。
【請求項２０】
前記第１０の書き込みステップによる前記新規キャッシュブロックへのデータの書き込みの後に、前記指定論理境界を超えるデータの書き込みが発生した場合は、他のキャッシュブロックへデータの書き込みを行う第１１の書き込みステップ、
を含むことを特徴とする請求項１９に記載のメモリ制御方法。
【請求項２１】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域及びキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内のデータの書き込みの際に、前記キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、前記キャッシュブロック内のデータを前記ユーザデータブロックに書き戻すライトバック処理を行う第１２の書き込みステップと、
前記第１２の書き込みステップによる前記ライトバック処理を、前記キャッシュブロックを含むキャッシュブロックのうち、データの更新頻度が低いキャッシュブロックに対して優先的に行う第１の優先処理ステップと、
を含むことを特徴とするメモリ制御方法。
【請求項２２】
クラスタ単位にデータの書き込み及び読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域及びキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、前記論理／物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内のデータの書き込みの際に、前記キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１３の書き込みステップと、
前記第１３の書き込みステップによるデータの書き込みの際に、前記キャッシュブロック内がすべて書き込み済みの場合は、すべて書き込み済みの前記キャッシュブロックを優先的にライトバック処理を行うためのコピー処理であるガベージ処理を行う第２の優先処理ステップと、
を含むことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリに適用して好適な、不揮発性メモリを有するメモリ装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
従来、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の外部記憶装置として、フラッシュメモリを備えたメモリ装置が知られている。フラッシュメモリは、データの書き込みおよび読み出しをクラスタ単位でランダムに行うことができるが、データの消去はランダムではなくブロック単位で行われる。
【０００３】
フラッシュメモリの記憶素子は、データの書換えを行うことにより劣化するため、その書き換え回数が制限される。このため、同じクラスタに繰り返しアクセスが集中するのを防止してフラッシュメモリの寿命を延ばすようにしている。ある物理アドレスに記憶されたある論理アドレスのデータを書き換える場合には、更新されたデータは、同じ物理ブロックには書き込まれず、消去状態の新しい物理ブロック（フリーブロック）に書き込まれる。
【０００４】
ここで、データ更新の前後で論理アドレスが割り当てられる物理アドレスが変化するため、論理アドレスおよび物理アドレスの対応関係を表わすアドレス変換テーブルがフラッシュメモリに記憶される。アドレス変換テーブルは、メモリ装置がホスト装置に装着されると、フラッシュメモリから読み出され、ホスト装置またはメモリ装置の作業メモリに格納され更新される。
【０００５】
従来のメモリ装置では、わずか数セクタのデータを書き換える場合にも、物理ブロックの更新が行われるため、そのアクセス時間がかかるとともに、記憶素子の劣化が早まるため、例えば、フラッシュメモリのブロックをヘッダ領域とデータ領域に分けている。そして、データ領域に書き込まれるデータレコードの先頭アドレスおよびレコード長をヘッダ領域に書き込むとともに、データ領域に書き込まれるデータレコードにリンク情報領域及びフラグ領域を付加するようにしている。これにより、データレコード単位の書き込み／更新を行い、ブロックの空き領域がなくなったときには、有効なデータレコードを抽出してフリーブロックに転送し、転送元のブロックを消去するようにしている。（例えば特許文献１参照）。
【特許文献１】特開平１１−７３３６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のように、ヘッダ領域およびデータ領域からなるブロックを設定した従来のフラッシュメモリでは、ブロック毎にヘッダ領域、リンク情報領域及びフラグ領域が設定されるため、データを記憶するメモリ容量が減少し、メモリを有効に利用することができないといった問題があった。
【０００７】
そこで、本出願人は、先願として、論理ブロックのアドレス、物理ブロックのアドレスおよび物理ブロックの終了クラスタ番号を対応付けた論理／物理テーブルを設け、書き込み命令に基づくデータの開始クラスタ番号ＳＣが、論理／物理テーブルの物理ブロックの終了クラスタ番号ＥＣより大きい場合、従来のような物理ブロックの更新（新たなデータの書き込みおよび元の物理ブロックのコピー）を行わずに、物理ブロックにデータを追記するメモリ装置、メモリ装置の制御方法及びデータ処理システムを提案した（特願２００４−２２５７１６号）。
【０００８】
これによれば、フラッシュメモリのメモリ容量を大きく減少させることなく、フラッシュメモリの消去回数を減らし、フラッシュメモリのデータの更新を効率的に行い、記憶素子の劣化を低減するとともに、データのアクセスを高速に行うことができる。
ここで、上述した先願では、不揮発性メモリを記録媒体とするメモリ装置は、不揮発性メモリに対してデータの上書きが不可であるとともに、書き込み単位と消去単位が異なる(書き込み単位＜消去単位)ものであり、さらに、不揮発性メモリのブロック内は追記可能である。
【０００９】
また、ＦＡＴ（File Allocation Tables）ファイルシステムを用いたメモリ装置は、ファイルデータの書き込みと同時に、管理情報のＦＡＴやディレクトリエントリ（Directory Entry）の更新が必要である。
また、管理情報を保存する記録装置は、メモリ装置内に、ユーザ用のデータ領域以外に管理情報を保存するエリアを持っていて、ホストからのファイルデータの書き込みが発生するたびに、管理情報をフラッシュメモリに更新する。
さらに、キャッシュブロックを有するメモリ装置は、クラスタ単位でキャッシュブロック内のデータを保存するとともに、キャッシュブロック内の論理・物理の対応関係は固定（物理ブロックの先頭から昇順に論理アドレスが割当られている）である。
【００１０】
このため、上述した先願では、複数セクタ単位の論理空間サイズである指定論理境界を超える論理アドレスが連続したファイルデータの書き込みにおいて、更新サイズがクラスタサイズ未満であっても、ライトバッグ処理が発生してしまう。このライトバッグ処理により、ブロック消去が発生するため製品寿命が短くなるという不都合が発生する。また、ライトバッグ処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【００１１】
また、ファイルデータの書き込みに伴う管理情報のＦＡＴやディレクトリエントリの更新は、書き込まれるファイルサイズが複数セクタ単位の論理空間サイズである指定論理境界以下となることから、同じ論理アドレス空間にアクセスが集中するため上書きが頻繁に発生する。このため、上述した先願では、１度キャッシュブロックに書き込まれた論理空間に対して書き込みが行われた場合、ライトバッグ処理が発生してしまう。このライトバッグ処理により、ブロック消去が発生するため製品寿命が短くなる。また、ライトバック処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【００１２】
つまり、不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）は上書き不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合に、メモリ装置内では、論理／物理テーブルの整合を取る必要がある。このため、ライトバック処理により、書き換えデータのサイズに関係なく、ブロック単位で別ブロックに書き換えデータを保存する必要があった。また、書き換えデータ以外のデータは元ブロック内にあるデータをガベージ処理によりコピーする必要があった。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があったが、ブロックには消去回数が制限されていた。
【００１３】
そこで、本発明の目的は、ライトバッグ処理の発生を抑え、ライトバッグ処理によるガベージ処理と消去処理を防止することにより書き込みパフォーマンスの低下を防ぐことができるメモリ装置及びメモリ制御方法を提供することである。
【課題を解決するための手段】
【００１４】
上記課題を解決し、本発明の目的を達成するため、本発明のメモリ装置では、不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域と、を有し、管理領域は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、制御回路は、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界を超えるデータの書き込みの際に、消去済みのキャッシュ領域の新規キャッシュブロックに書き込む第１の書き込み手段と、第１の書き込み手段による新規キャッシュブロックへのデータの書き込みの際に、書き込まれる新規キャッシュブロックの論理アドレス空間に関係なく新規キャッシュブロックの先頭からデータを書き込む第２の書き込み手段とを備えたものである。
【００１５】
これにより、複数セクタ単位の論理空間サイズである指定論理境界を超えるファイルデータについて、ホストから書き込みが行われた場合に、新規キャッシュブロックに書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００１６】
また、本発明のメモリ装置では、不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域と、を有し、管理領域は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、制御回路は、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界以下のデータの書き込みの際に、消去済みのキャッシュ領域の新規キャッシュブロックに書き込む第６の書き込み手段と、第６の書き込み手段による新規キャッシュブロックへのデータの書き込みの際に、書き込まれる新規キャッシュブロックの論理アドレス空間に関係なく新規キャッシュブロックの先頭からデータを書き込む第７の書き込み手段とを備えたものである。
【００１７】
これにより、複数セクタ単位の論理空間サイズである指定論理境界以下の管理情報のＦＡＴやディレクトリエントリについて、ホストから書き込みが行われた場合に、新規キャッシュブロックにデータを書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００１８】
また、本発明のメモリ装置では、不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域とを有し、管理領域は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、制御回路は、ユーザデータ領域のユーザブロック内のデータの書き込みの際に、キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、キャッシュブロック内のデータをユーザデータブロックに書き戻すライトバック処理を行う第１２の書き込み手段と、第１２の書き込み手段によるライトバック処理を、キャッシュブロックを含むキャッシュブロックのうち、データの更新頻度が低いキャッシュブロックに対して優先的に行う第１の優先処理手段とを備えたものである。
【００１９】
これにより、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合に、キャッシュブロックの内で更新頻度の低いキャッシュブロックを優先的にライトバック処理する。このとき、更新頻度が低いキャッシュブロックを優先的にライトバック処理することで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、更新頻度が低いキャッシュブロックは、更新頻度が高いキャッシュブロックと比較して、書き込みが発生する確率が低いためである。また、書き込みに対するキャッシュブロックの使用効率が上がることで、ライトバック処理の発生を抑えるので、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。さらに、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００２０】
また、本発明のメモリ装置では、不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、ユーザデータ領域に対する書き込み及び読み出しデータを一時的に保持するキャッシュ領域と、を有し、管理領域は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、制御回路は、ユーザデータ領域のユーザブロック内のデータの書き込みの際に、キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１３の書き込み手段と、第１３の書き込み手段によるデータの書き込みの際に、キャッシュブロック内がすべて書き込み済みの場合は、すべて書き込み済みのキャッシュブロックを優先的にライトバック処理を行うためのコピー処理であるガベージ処理を行う第２の優先処理手段とを備えたものである。
【００２１】
これにより、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合、この空きがないキャッシュブロックを優先的にガベージ処理する。ここで、空きがないキャッシュブロックを優先的にライトバックすることで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、空きがないならばキャッシュブロックを使用する必要がないためである。また、書き込みに対するキャッシュブロックの使用効率が上がることで、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。さらに、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。また、空きがない状態であれば、ガベージ処理によるブロック内のコピー処理を行う必要がないため、パフォーマンスを向上させることができる。
【００２２】
また、本発明のメモリ制御方法は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界を超えるデータの書き込みの際に、消去済みのキャッシュ領域の新規キャッシュブロックに書き込む第１の書き込みステップと、第１の書き込みステップによる新規キャッシュブロックへのデータの書き込みの際に、書き込まれる新規キャッシュブロックの論理アドレス空間に関係なく新規キャッシュブロックの先頭からデータを書き込む第２の書き込みステップとを含むものである。
【００２３】
これにより、複数セクタ単位の論理空間サイズである指定論理境界を超えるファイルデータについて、ホストから書き込みが行われた場合に、新規キャッシュブロックに書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００２４】
また、本発明のメモリ制御方法は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理境界以下のデータの書き込みの際に、消去済みの新規キャッシュブロックに書き込む第６の書き込みステップと、第６の書き込みステップによる新規キャッシュブロックへのデータの書き込みの際に、書き込まれる新規キャッシュブロックの論理アドレス空間に関係なく新規キャッシュブロックの先頭からデータを書き込む第７の書き込みステップと、を含むものである。
【００２５】
これにより、複数セクタ単位の論理空間サイズである指定論理境界以下の管理情報のＦＡＴやディレクトリエントリについて、ホストから書き込みが行われた場合に、新規キャッシュブロックにデータを書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００２６】
また、本発明のメモリ制御方法は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、ユーザデータ領域のユーザブロック内のデータの書き込みの際に、キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、ライトバック処理を行うためのコピー処理であるガベージ処理を発生させずに、キャッシュブロック内のデータをユーザデータブロックに書き戻すライトバック処理を行う第１２の書き込みステップと、第１２の書き込みステップによるライトバック処理を、キャッシュブロックを含むキャッシュブロックのうち、データの更新頻度が低いキャッシュブロックに対して優先的に行う第１の優先処理ステップとを含むものである。
【００２７】
これにより、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合に、キャッシュブロックの内で更新頻度の低いキャッシュブロックを優先的にライトバック処理する。このとき、更新頻度が低いキャッシュブロックを優先的にライトバック処理することで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、更新頻度が低いキャッシュブロックは、更新頻度が高いキャッシュブロックと比較して、書き込みが発生する確率が低いためである。また、書き込みに対するキャッシュブロックの使用効率が上がることで、ライトバック処理の発生を抑えるので、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。さらに、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【００２８】
また、本発明のメモリ制御方法は、ユーザデータ領域の論理ブロックのアドレスと、論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理／物理テーブルと、論理／物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、ユーザデータ領域のユーザブロック内のデータの書き込みの際に、キャッシュ領域のキャッシュブロック内がすべて書き込み済みの場合は、他のキャッシュブロックへデータの書き込みを行う第１３の書き込みステップと、第１３の書き込みステップによるデータの書き込みの際に、キャッシュブロック内がすべて書き込み済みの場合は、すべて書き込み済みのキャッシュブロックを優先的にライトバック処理を行うためのコピー処理であるガベージ処理を行う第２の優先処理ステップと、を含むものである。
【００２９】
これにより、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合、この空きがないキャッシュブロックを優先的にガベージ処理する。ここで、空きがないキャッシュブロックを優先的にライトバックすることで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、空きがないならばキャッシュブロックを使用する必要がないためである。また、書き込みに対するキャッシュブロックの使用効率が上がることで、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。さらに、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。また、空きがない状態であれば、ガベージ処理によるブロック内のコピー処理を行う必要がないため、パフォーマンスを向上させることができる。
【発明の効果】
【００３０】
本発明によれば、キャッシュブロックを用いたブロック制御方法により、従来のメモリ装置と比較してライトバック処理の発生頻度を減らすことができる。また、ライトバッグの発生頻度が減ることにより、コピーと消去の発生頻度が減るため、データ書き換え際の処理速度を向上させることができる。また、ブロックの消去回数が減るため、メモリ装置としての製品寿命を延ばすことができる。
【発明を実施するための最良の形態】
【００３１】
以下に、本発明の実施の形態について、適宜、図面を参照しながら詳細に説明する。
図１は、本実施の形態に適用されるデータ処理システムの概略構成を示す図である。
図１に示すように、このデータ処理システムは、フラッシュメモリ２３を有するメモリカード２０と、メモリカード２０が着脱自在に装着されるホスト装置１０とを備える。
【００３２】
ホスト装置１０は、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器からなり、ＣＰＵ１１、メモリ１２、ディスプレイ１３、入出力処理（Ｉ／Ｏ）部１４及び外部メモリＩ／Ｆ（インタフェース）１５を備える。ＣＰＵ１１は、メモリ１２、ディスプレイ１３、Ｉ／Ｏ部１４及び外部メモリＩ／Ｆ１５とバス１６を介し相互に接続されている。メモリ１２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。外部メモリＩ／Ｆ１５は、ＣＰＵ１１の制御命令に従ってメモリカード２０との間でデータを送受する。
【００３３】
メモリカード２０は、ＣＰＵ２１、メモリ２２、フラッシュメモリ２３及びホストＩ／Ｆ２４を備える。ＣＰＵ２１は、メモリ２２、フラッシュメモリ２３及びホストＩ／Ｆ２４とバス２５を介し相互に接続されている。メモリ２２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。フラッシュメモリ２３は、例えば、ＮＯＲ型またはＮＡＮＤ型のフラッシュメモリ（不揮発性メモリ）からなる。ホストＩ／Ｆ２４は、ＣＰＵ２１の制御命令に従ってホスト装置１０との間でデータを送受する。
【００３４】
図２は、図１に示されるメモリカード２０の構成を示すブロック図である。
図２に示すように、メモリカード２０は、例えば板状のメモリスティック（登録商標）に相当し、ホスト装置１０に装着され、ホスト装置１０から供給されるデータが書き込まれる。メモリカード２０は、複数のフラッシュメモリ２３を有するメモリ部４０と、メモリ部４０を制御するコントローラ部３０とを備える。
【００３５】
コントローラ部３０は、シリアルＩ／Ｆ（インタフェース）３１、パラレルＩ／Ｆ３２、レジスタ３３、データバッファ３４、ＥＣＣ（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）に登録されている論理空間以降の書き込みでないときは、ＣＰＵ２１は書き込みサイズが論理ブロックサイズであるか否かを判断する（ステップＳ３９−１）。ステップＳ３９−１の判断で、書き込みサイズが論理ブロックサイズでないときは、ＣＰＵ２１はライトバック処理を行う（ステップＳ３９）。そして、ＣＰＵ２１はメモリ２２の管理情報を更新する（ステップＳ４０）。
ステップＳ３９は、書き込みが発生した場合、新規キャッシュブロック（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）の割り当てがどのような状態であってもガベージ処理が発生しないため、パフォーマンスを一定に保つことができる。
【０１０４】
図２３は、論理ブロック単位の読み出し処理を示すフローチャートである。
図２３において、まず、ステップＳ１１１で、ＣＰＵ２１は管理情報からユーザデータブロックのアドレス情報と書き込み済み論理空間情報を取得し、また、論理アドレスに対応したキャッシュブロックのアドレス情報と書き込み済み論理空間情報を取得する。
【０１０５】
次に、ＣＰＵ２１はキャッシュブロックがユーザデータブロックに対して割当済みであるか否かを判断する（ステップＳ１１２）。ステップＳ１１２の判断で、キャッシュブロックがユーザデータブロックに対して割当済みでないとき、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１１３）。ステップＳ１１３は、読み出し要求された論理ブロックに対してキャッシュブロックが割り当てられていなかった場合の処理である。
【０１０６】
ステップＳ１１２の判断で、キャッシュブロックがユーザデータブロックに対して割当済みであるとき、ＣＰＵ２１は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する（ステップＳ１１４）。ステップＳ１１４の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する（ステップＳ１１５）。ステップＳ１１５の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１１６）。
【０１０７】
ステップＳ１１４の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、ＣＰＵ２１は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１２３）。ステップＳ１２３の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出してホストに供給する（ステップＳ１２８）。
【０１０８】
ステップＳ１１６及びステップＳ１２８は、キャッシュブロックは割り当てられているが、読み出し要求された論理アドレスのデータがキャッシュブロックに存在しない場合の処理である。この場合の処理は、ユーザデータブロック内のデータをホストに読み出す処理である。
【０１０９】
ステップＳ１１５の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１１７）。ステップＳ１１７の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出すと共に（ステップＳ１１８）、残りのデータをキャッシュブロックから読み出して、ホストに供給する（ステップＳ１１９）。
【０１１０】
ステップＳ１１７の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出すと共に（ステップＳ１２０）、続くデータをキャッシュブロックから読み出して（ステップＳ１２０）、さらに残りのデータをキャッシュブロックから読み出して、ホストに供給する（ステップＳ１２２）。
【０１１１】
ステップＳ１２３の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する（ステップＳ１２４）。ステップＳ１２４の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、ＣＰＵ２１はキャッシュブロック内のデータを読み出して、ホストに供給する（ステップＳ１２５）。
【０１１２】
ステップＳ１２４の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はキャッシュブロック内のデータを読み出して（ステップＳ１２６）、残りのデータをユーザデータブロックから読み出して、ホストに供給する（ステップＳ１２７）。
【０１１３】
ステップＳ１１８〜ステップＳ１１９、ステップＳ１２０〜ステップＳ１２２、ステップＳ１２６〜ステップＳ１２７は、ユーザデータブロックとキャッシュブロック内の書き込み済みデータの両方を読み出す処理である。この場合、読み出し始めは、ユーザデータブロック内のデータをホストに読み出す。読み出しの後半は、ホストからの要求論理セクタアドレスに対応するデータがキャッシュブロック内に存在するならば、キャッシュブロック内のデータをホストに読み出し、存在しないならば、ユーザデータブロック内のデータをホストに読み出す。
ステップＳ１２５は、キャッシュブロック内のデータをホストに読み出す処理である。
【０１１４】
上述したように、フラッシュメモリ２３で示した不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）は上書きが不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合、メモリカード２０で示したメモリ装置内では、論理・物理テーブルの整合を取るため、書き換えデータのサイズに関係なく、ブロック単位で、別ブロックに書き換えデータを保存する必要があった。
【０１１５】
そのため、書き換えデータ以外のデータは元ブロック内にあるデータをコピーする必要がある。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があった（ライトバック処理）。また、ブロックには消去回数の制限があった。
【０１１６】
本実施の形態では、キャッシュブロックを用いたブロック制御方法により、従来のメモリ装置と比較してライトバック処理の発生頻度を減らすことができる。ライトバックの発生頻度が減ることにより、コピーと消去の発生頻度が減るため、データ書き換えの際の処理速度を向上させることができる。また、ブロックの消去回数を減るため、メモリ装置としての製品寿命を延ばすことができる。
【０１１７】
これにより、複数セクタ単位の論理空間サイズである指定論理境界を超えるファイルデータについて、ホストから書き込みが行われた場合に、新規キャッシュブロックに書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１１８】
また、ホストから書き込みが行われた場合に、書き込まれる論理アドレス空間に関係なくキャッシュブロックの先頭からデータを書き込むことで、キャッシュブロック内のコピー処理を発生させない処理をすることができる。このとき、コピー処理の発生を抑えることで、書き込みパフォーマンスを向上させることができる。
【０１１９】
また、上述した書き込みから連続した、クラスタ境界に限らないファイルデータの書き込みが行われた場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。このとき、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。また、管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２０】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２１】
また、キャッシュブロックがフル書き込み状態の場合、ガベージ処理を発生させずにユーザブロックへライトバック処理を行うことで、書き込みパフォーマンスを向上させることができる。
【０１２２】
次に、複数セクタ単位の論理空間サイズである指定論理境界以下の管理情報のＦＡＴやディレクトリエントリについて、ホストから書き込みが行われた場合に、新規キャッシュブロックにデータを書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２３】
また、書き込み後、同じ論理アドレス空間の書き込みが発生した場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２４】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２５】
また、キャッシュブロックがフル状態で書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２６】
また、管理情報のＦＡＴやディレクトリエントリの書き込み後、ファイルデータの書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２７】
また、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合、キャッシュブロックの内で更新頻度の低いキャッシュブロックを優先的にライトバック処理する。更新頻度が低いキャッシュブロックを優先的にライトバック処理することで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、更新頻度が低いキャッシュブロックは、更新頻度が高いキャッシュブロックと比較して、書き込みが発生する確率が低いためである。書き込みに対するキャッシュブロックの使用効率が上がることで、ライトバック処理の発生を抑えるので、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【０１２８】
また、キャッシュブロックの空きがない場合、書き込みがフル状態であるキャッシュブロックを優先的にガベージ処理する。フル状態のキャッシュブロックを優先的にライトバックすることで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、フル状態ならばキャッシュブロックを使用する必要がないためである。書き込みに対するキャッシュブロックの使用効率が上がることで、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。また、フル状態であれば、ガベージ処理によるブロック内のコピー処理を行う必要がないため、パフォーマンスを向上させることができる。
上述した本実施の形態に限らず、本発明の要旨を逸脱しない限り、適宜、変更しうることはいうまでもない。
【図面の簡単な説明】
【０１２９】
【図１】本実施の形態に適用されるデータ処理システムの概略構成を示す図である。
【図２】メモリカード２０の構成を示すブロック図である。
【図３】ユーザデータブロックとキャッシュブロックの対応を示す図である。
【図４】書き込み処理を示すフローチャートである。
【図５】書き込み処理を示すフローチャートである。
【図６】書き込み処理を示すフローチャートである。
【図７】書き込み処理を示すフローチャートである。
【図８】書き込み処理を示すフローチャートである。
【図９】ステップＳ２２の書き込み条件を満たす書き込みパターンを示す図である。
【図１０】ステップＳ３１の書き込み条件を満たす書き込みパターンを示す図である。
【図１１】ステップＳ３５の書き込み条件を満たす書き込みパターンを示す図である。
【図１２】ステップＳ１４の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１３】ステップＳ２３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１４】ステップＳ２５の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１５】ホストからの書き込みによりフルになったときのキャッシュブロック（AD-CACHE）の状態（２パターン）を示す図である。
【図１６】ステップＳ１１の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１７】ステップＳ３３の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１８】ステップＳ３９の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図１９】ステップＳ４１の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２０】ステップＳ４１の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２１】ステップＳ３６の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２２】ステップＳ３６の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図２３】論理ブロック単位の読み出し処理を示すフローチャートである。
【符号の説明】
【０１３０】
２０…メモリカード、２１…ＣＰＵ、２２…メモリ、２３…フラッシュメモリ、２４…ホストＩ／Ｆ、２５…バス、３０…コントローラ部、４０…メモリ部、４１…管理領域、４２…ユーザデータ領域、４３…キャッシュ領域
【図１】
2007156633.tif 000003
【図２】
2007156633.tif 000004
【図３】
2007156633.tif 000005
【図４】
2007156633.tif 000006
【図５】
2007156633.tif 000007
【図６】
2007156633.tif 000008
【図７】
2007156633.tif 000009
【図８】
2007156633.tif 000010
【図９】
2007156633.tif 000011
【図１０】
2007156633.tif 000012
【図１１】
2007156633.tif 000013
【図１２】
2007156633.tif 000014
【図１３】
2007156633.tif 000015
【図１４】
2007156633.tif 000016
【図１５】
2007156633.tif 000017
【図１６】
2007156633.tif 000018
【図１７】
2007156633.tif 000019
【図１８】
2007156633.tif 000020
【図１９】
2007156633.tif 000021
【図２０】
2007156633.tif 000022
【図２１】
2007156633.tif 000023
【図２２】
2007156633.tif 000024
【図２３】
2007156633.tif 000025
【手続補正書】
【提出日】平成18年11月30日(2006.11.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
ステップＳ３１は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間に対して、以下の図１０に示す９１〜９２の論理空間に当てはまるか否かを判別する処理である。
図１０は、ステップＳ３１の書き込み条件を満たす書き込みパターンを示す図である。図１０において、９１は、書き込み済み空間９４の範囲内の書き込みの場合であり、９２は、書き込み済み空間９４と同一範囲の書き込みの場合である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１０
【補正方法】変更
【補正の内容】
【０１１０】
ステップＳ１１７の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、ＣＰＵ２１はユーザデータブロック内のデータを読み出すと共に(ステップＳ１２０)、続くデータをキャッシュブロックから読み出して(ステップＳ１２１)、さらに残りのデータをキャッシュブロックから読み出して、ホストに供給する(ステップＳ１２２)。