説明

メモリ装置、メモリ制御方法、およびプログラム

【課題】ライトバック処理の発生頻度を的確に低下させることが可能で、ライトバック処理が発生しない場合の書き込みパフォーマンスの低下を防ぐことができるメモリ装置、メモリ制御方法、およびプログラムを提供する。
【解決手段】フラッシュメモリ23は、管理領域と、ユーザデータ領域と、キャッシュ領域とを有し、管理領域は、論理/物理テーブルと、論理/物理テーブルの物理ブロックのアドレスに対応するキャッシュ領域の物理ブロックのアドレスを含み、メモリカード20のCPU21は、ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえばフラッシュメモリに適用して好適な、不揮発性メモリを有するメモリ装置、メモリ制御方法、およびプログラムに関するものである。
【背景技術】
【0002】
パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の外部記憶装置として、フラッシュメモリを備えたメモリ装置が知られている。
フラッシュメモリは、データの書き込みおよび読み出しをクラスタ単位でランダムに行うことができるが、データの消去はランダムではなくブロック単位で行われる。
【0003】
フラッシュメモリの記憶素子は、データの書き換えを行うことにより劣化するため、その書き換え回数が制限される。このため、同じクラスタに繰り返しアクセスが集中するのを防止してフラッシュメモリの寿命を延ばすようにしている。
ある物理アドレスに記憶されたある論理アドレスのデータを書き換える場合には、更新されたデータは、同じ物理ブロックには書き込まれず、消去状態の新しい物理ブロック(フリーブロック)に書き込まれる。
【0004】
ここで、データ更新の前後で論理アドレスが割り当てられる物理アドレスが変化するため、論理アドレスおよび物理アドレスの対応関係を表わすアドレス変換テーブルがフラッシュメモリに記憶される。アドレス変換テーブルは、メモリ装置がホスト装置に装着されると、フラッシュメモリから読み出され、ホスト装置またはメモリ装置の作業メモリに格納され更新される。
【0005】
一般のメモリ装置では、わずか数セクタのデータを書き換える場合にも、物理ブロックの更新が行われるため、そのアクセス時間がかかるとともに、記憶素子の劣化が早まるため、たとえば、フラッシュメモリのブロックをヘッダ領域とデータ領域に分けている。
そして、データ領域に書き込まれるデータレコードの先頭アドレスおよびレコード長をヘッダ領域に書き込むとともに、データ領域に書き込まれるデータレコードにリンク情報領域およびフラグ領域を付加するようにしている。
これにより、データレコード単位の書き込み/更新を行い、ブロックの空き領域がなくなったときには、有効なデータレコードを抽出してフリーブロックに転送し、転送元のブロックを消去するようにしている(たとえば特許文献1参照)。
【特許文献1】特開平11−73363号公報
【特許文献2】特開2006−48227号公報
【特許文献3】特開2007−156633号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記のように、ヘッダ領域およびデータ領域からなるブロックを設定したフラッシュメモリでは、ブロック毎にヘッダ領域、リンク情報領域およびフラグ領域が設定されるため、データを記憶するメモリ容量が減少し、メモリを有効に利用することができないといった問題があった。
【0007】
そこで、本出願人は、論理ブロックのアドレス、物理ブロックのアドレスおよび物理ブロックの終了クラスタ番号を対応付けた論理/物理テーブルを設け、書き込み命令に基づくデータの開始クラスタ番号SCが、論理/物理テーブルの物理ブロックの終了クラスタ番号ECより大きい場合、従来のような物理ブロックの更新(新たなデータの書き込みおよび元の物理ブロックのコピー)を行わずに、物理ブロックにデータを追記するメモリ装置、メモリ装置の制御方法およびデータ処理システムを提案した(特許文献2参照)。
【0008】
これによれば、フラッシュメモリのメモリ容量を大きく減少させることなく、フラッシュメモリの消去回数を減らし、フラッシュメモリのデータの更新を効率的に行い、記憶素子の劣化を低減するとともに、データのアクセスを高速に行うことができる。
ここで、上述したデータ処理システムにおいて、不揮発性メモリを記録媒体とするメモリ装置は、不揮発性メモリに対してデータの上書きが不可であるとともに、書き込み単位と消去単位が異なる(書き込み単位<消去単位)ものであり、さらに、不揮発性メモリのブロック内は追記可能である。
【0009】
また、FAT(File Allocation Tables)ファイルシステムを用いたメモリ装置は、ファイルデータの書き込みと並行して、管理情報のFATやディレクトリエントリ(Directory Entry)の更新が必要である。
また、管理情報を保存する記録装置は、メモリ装置内に、ユーザ用のデータ領域以外に管理情報を保存するエリアを持っていて、ホスト装置からのファイルデータの書き込みが発生するたびに、管理情報をフラッシュメモリに更新する。
さらに、キャッシュブロックを有するメモリ装置は、クラスタ単位でキャッシュブロック内のデータを保存するとともに、キャッシュブロック内の論理・物理の対応関係は固定である(物理ブロックの先頭から昇順に論理アドレスが割当られている)。
【0010】
このため、上述したデータ処理システムでは、複数セクタ単位の論理空間サイズである指定論理境界を超える論理アドレスが連続したファイルデータの書き込みにおいて、更新サイズがクラスタサイズ未満であっても、ライトバック処理が発生してしまう。
このライトバック処理により、ブロック消去が発生するため製品寿命が短くなるという不都合が発生する。また、ライトバック処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【0011】
また、ファイルデータの書き込みに伴う管理情報のFATやディレクトリエントリの更新は、書き込まれるファイルサイズが複数セクタ単位の論理空間サイズである指定論理境界以下となることから、同じ論理アドレス空間にアクセスが集中するため上書きが頻繁に発生する。
このため、上述したデータ処理システムでは、1度キャッシュブロックに書き込まれた論理空間に対して書き込みが行われた場合、ライトバック処理が発生してしまう。このライトバック処理により、ブロック消去が発生するため製品寿命が短くなる。また、ライトバック処理による、ガベージ処理と消去処理により書き込みパフォーマンスの低下を招くという不都合が発生する。
【0012】
つまり、不揮発性メモリ(NAND型フラッシュメモリ)は上書き不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合に、メモリ装置内では、論理/物理テーブルの整合を取る必要がある。
このため、ライトバック処理により、書き換えデータのサイズに関係なく、ブロック単位で別ブロックに書き換えデータを保存する必要があった。
また、書き換えデータ以外のデータは元ブロック内にあるデータをガベージ処理によりコピーする必要があった。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があったが、ブロックには消去回数が制限されていた。
【0013】
そこで、本出願人は、これら問題点を解消すべく、ライトバック処理の発生を抑え、ライトバック処理によるガベージ処理と消去処理を防止することにより書き込みパフォーマンスの低下を抑止するメモリ装置およびメモリ制御方法を提案した(特許文献3参照)。
しかし、この技術においても次のような不利益ある。
【0014】
すなわち、提案した技術においては、データの書き込みがある指定論理境界以下の場合には、OD-CACHEと呼ばれるキャッシュブロックにデータを保存していた。管理情報にはそのキャッシュブロック(OD-CACHE)の、論理の開始と終了(論理空間A)が判断できるように登録されていた。そして、登録可能な論理空間は1つだったため、同一ブロック内において異なった論理空間Bの書き込みが発生した場合、ライトバックする必要があった。
また、管理情報のサイズを大きくすることで上記問題は解決できたが、管理情報の保存時間と保存処理の発生頻度が増加するため、ライトバックが発生しない場合の書き込みにおけるパフォーマンス低下が問題だった。
【0015】
本発明は、ライトバック処理の発生頻度を的確に低下させることが可能で、ライトバック処理が発生しない場合の書き込みパフォーマンスの低下を防ぐことができるメモリ装置、メモリ制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0016】
本発明の第1の観点のメモリ装置は、クラスタ単位にデータの書き込みおよび読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、前記不揮発性メモリのアクセス動作を制御する制御回路と、を有し、前記不揮発性メモリは、管理情報を記録する管理領域と、ユーザからのデータが記録されるユーザデータ領域と、前記ユーザデータ領域に対する書き込みおよび読み出しデータを一時的に保持するキャッシュ領域と、を有し、前記管理領域は、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、前記制御回路は、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する。
【0017】
好適には、前記制御回路は、管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる。
【0018】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する。
【0019】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する。
【0020】
好適には、前記制御回路は、前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する。
【0021】
好適には、前記制御回路は、前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする。
【0022】
好適には、前記制御回路は、前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する。
【0023】
本発明の第2の観点は、クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御方法であって、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存ステップとを含む。
【0024】
本発明の第3の観点は、クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御処理であって、前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶処理と、前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存処理とを含むメモリ制御処理をコンピュータに実行させるプログラムである。
【0025】
本発明によれば、所定のキャッシュブロック内に管理情報の一部を保存する、すなわち管理情報の一部をユーザデータが保存されているブロックに保存する。これにより、管理情報の不揮発性メモリへの保存サイズはそのままで、キャッシュブロックに複数の論理空間のデータを保存させることで、ライトバック処理の発生頻度を低下させる。
【発明の効果】
【0026】
本発明によれば、ライトバック処理の発生頻度を的確に低下させることが可能で、ライトバック処理が発生しない場合の書き込みパフォーマンスの低下を防ぐことができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明の実施の形態を図面に関連付けて説明する。
【0028】
図1は、本発明の実施形態に適用されるデータ処理システムの概略構成を示す図である。
【0029】
図1に示すように、このデータ処理システムは、ホスト装置10と、ホスト装置10に着脱自在に装着可能なメモリカード20を主構成要素として有している。本実施形態において、メモリカードは不揮発性メモリであるフラッシュメモリを有する。
【0030】
ホスト装置10は、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器からなり、CPU11、メモリ12、ディスプレイ13、入出力処理(I/O)部14および外部メモリI/F(インタフェース)15を備える。
CPU11は、メモリ12、ディスプレイ13、I/O部14および外部メモリI/F15とバス16を介し相互に接続されている。メモリ12は、プログラム格納用のROM、作業用メモリであるRAM等を有する。外部メモリI/F15は、CPU11の制御命令に従ってメモリカード20との間でデータを送受する。
【0031】
メモリカード20は、CPU21、メモリ22、フラッシュメモリ23およびホストI/F24を備える。
CPU21は、メモリ22、フラッシュメモリ23およびホストI/F24とバス25を介し相互に接続されている。メモリ22は、プログラム格納用のROM、作業用メモリであるRAM等を有する。
フラッシュメモリ23は、たとえば、NOR型またはNAND型のフラッシュメモリ(不揮発性メモリ)からなる。
ホストI/F24は、CPU21の制御命令に従ってホスト装置10との間でデータを送受する。
【0032】
図2は、図1に示されるメモリカード20の構成例を示すブロック図である。
【0033】
メモリカード20は、図2に示されるように、たとえば板状のメモリスティック(登録商標)に相当し、ホスト装置10に装着されているとき、ホスト装置10から供給されるデータが書き込まれる。
メモリカード20は、コントローラ部30およびメモリ部40を有する。メモリ部40は複数のフラッシュメモリ23を含み、コントローラ部30によりそのアクセスが制御される。
【0034】
コントローラ部30は、シリアルI/F(インタフェース)31、パラレルI/F32、レジスタ33、データバッファ34、ECC(Error Correcting Circuit)35およびMPU(Micro Processing Unit)36およびクロック信号発生部37を備える。
シリアルI/F31、パラレルI/F32、レジスタ33、データバッファ34およびECC35は、バス38により相互に接続されている。レジスタ33、データバッファ34およびECC35は、MPU36に接続されている。
【0035】
レジスタ33は、命令レジスタ等を有する。データバッファ34は、フラッシュメモリ23にアクセスされるデータを一時的に記憶する。ECC35は、データバッファ34に記憶されたデータの誤り訂正処理を実行する。クロック信号発生部37は、メモリスティック内部のクロック信号を発生する。
【0036】
ホスト装置10により出力されたデータは、信号線DATA0〜3を通してシリアルI/F31およびパラレルI/F32の一方または双方に入力され、データバッファ34に転送される。データバッファ34に転送されたデータは、MPU36によりフラッシュメモリ23に書き込まれる。
【0037】
メモリカード20には、信号線VSSおよびVCCを通して基準電圧および電源電圧が供給される。
また、メモリカード20には、ホスト装置10からのデータを取り込むために必要となるクロック信号が入力される信号線SCLKや、ホスト装置10に対しメモリカード20が正常に装着されているか否かを判断させるための信号線INSや、ホスト装置10から供給されるデータの向きを判断するための信号線BS等も設けられている。
【0038】
次に、データ処理システムの書き込み動作の概略を説明する。
まず、書き込みコマンドおよび書き込みデータのアドレスが、次に、書き込みデータがホスト装置10から送信され、メモリカード20で受信される。
フラッシュメモリ23は、セクタ単位にデータの書き込みおよび読み出しを行うが、ホスト装置10は、クラスタ単位でデータの書き込みおよび読み出しを行う。書き込みデータがメモリカード20に受信されると、受信された書き込みデータがデータバッファ34に記憶される。書き込みデータの受信が終了すると、データバッファ34に記憶された書き込みデータがフラッシュメモリ23に書き込まれる。
【0039】
次に、データ処理システムの読み出し動作の概略を説明する。
読み出しコマンドおよび読み出しデータのアドレスがホスト装置10から送信され、メモリカード20に受信されると、このアドレスの読み出しデータがフラッシュメモリ23から読み出され、データバッファ34に記憶される。フラッシュメモリ23の読み出しデータの読み出しが終了すると、データバッファ34に記憶された読み出しデータが読み出されホスト装置10に送信される。
【0040】
次に、本実施の形態によるメモリ制御方法の概要について説明する。
図3は、ユーザデータブロックとキャッシュブロックの対応を示す図である。
図3において、51は論理/物理テーブルを、52はキャッシュブロックをそれぞれ示している。
【0041】
図1および図2に示されるフラッシュメモリ23には、図3に示されるユーザデータブロックの論理アドレスと物理アドレスの対応を示すテーブルである論理/物理テーブル51が記憶されている。
この論理/物理テーブル51は、論理ブロックのアドレス0,1,2,3,4,5と、論理ブロックに割り当てられた物理ブロックのアドレス3,8,7,6,5,4とを対応付けたものである。
この論理/物理テーブル51は、メモリカード20がホスト装置10に装着されると、コントローラ部30によりフラッシュメモリ23から読み出され、データの書き込み動作に従って書き換えられる。
【0042】
ここで、この論理/物理テーブル51の物理ブロックのアドレス3,8,7,6,5,4のうちのいずれかには、キャッシュブロック52の物理アドレス2,1,0,9が対応付けられる。このとき、キャッシュブロック52の物理アドレス2,1,0,9は、53に示すように使用頻度が低い順に配置される。
【0043】
たとえば、論理/物理テーブル51の物理ブロックのアドレス8,7,6,4が空き領域の物理ブロックのアドレスを示しているとき、この物理ブロックのアドレス8,7,6,4に対応して、消去済みのキャッシュ領域であるフリーブロックの新規キャッシュブロック52の物理アドレス2,1,0,9が割り当てられる。
このとき、キャッシュ領域の新規キャッシュブロック52の物理アドレス2,1,0,9は、キャッシュブロック52のうちで比較的使用頻度が低い順に配置され、これにより、キャッシュブロック52の先頭からデータ書き込みを可能にする。
【0044】
次に、本実施の形態によるメモリ制御方法の前提条件について説明する。
まず、第1に用語の定義について説明する。
【0045】
図2に示したメモリカード20などのメモリ装置内の複数のフラッシュメモリ23には、それぞれ、管理領域41、ユーザデータ領域42、キャッシュ領域43が存在する。
ここで、ユーザデータ領域42のブロックをユーザデータブロックと呼び、キャッシュ領域43のブロックをキャッシュブロックと呼ぶ。キャッシュブロックはユーザブロックと同じサイズである。
また、キャッシュブロックの論理空間をユーザブロック単位に区切ったサイズを論理ブロックサイズと呼び、ユーザブロック内の複数セクタ単位の論理空間のサイズを論理ページサイズ(指定論理境界)と呼ぶ。
また、消去済みのブロックをフリーブロックと呼び、新規キャッシュブロックを取得する際はフリーブロックから取得する。
【0046】
ライトバック処理とは、キャッシュブロック内のデータをユーザデータブロックに書き戻すことで、キャッシュブロックを使用していた状態から使用しない状態にする処理である。
このとき、ユーザデータブロックとキャッシュブロック間のデータをマージする必要があるため、コピー処理が発生する。また、マージ処理後、不必要になったブロックは消去する。
ガベージ処理とは、ライトバック処理を行うためのコピー処理をいう。
【0047】
第2に、キャッシュブロックについて説明する。
キャッシュブロックはAD-CACHEとOD-CACHEの2種類の形態がある。キャッシュブロックとして確保されている個数は固定数だが、AD-CACHE、OD-CACHEの各個数は、ホストからの書き込みにより変化する。
AD-CACHEは、ファイルデータの保存を目的としたキャッシュブロックである。書き込みサイズにより、OD-CACHE、AD-CACHEを判別する。新規キャッシュブロックを取得して書き込みを行う際に、指定論理境界(論理ページサイズ)を超えればAD-CACHEとする。
【0048】
AD-CACHEは、最初に書き込みが発生した論理アドレスにより、以降書き込まれる論理アドレスが制限される。最初に書き込みが発生した論理アドレス空間がある任意の論理ブロックサイズ空間(A)内である場合、次に書き込む論理アドレス空間が論理空間(A)内であり、かつ、キャッシュブロック内の書き込み済み論理空間以外の場合、このキャッシュブロックへの書き込みが可能である。
【0049】
OD-CACHEは、管理情報のFATやディレクトリエントリの保存を目的としたキャッシュブロックである。書き込みサイズにより、OD-CACHE、AD-CACHEを判別する。新規キャッシュブロックを取得して書き込みを行う際に、指定論理境界(論理ページサイズ)以下であればOD-CACHEとする。
【0050】
OD-CACHEは、最初に書き込みが発生した論理アドレスにより、以降書き込まれる論理アドレスが制限される。最初に書き込みが発生した論理アドレス空間がある任意の論理ページサイズ空間(B)内である場合、次に書き込む論理アドレス空間が論理空間(B)内である場合、このキャッシュブロックへの書き込みが可能である。
【0051】
第3に、管理情報内にあるキャッシュブロックの情報について説明する。
キャッシュブロックの更新頻度を示す管理情報、キャッシュブロックがどの論理ブロックに対応しているかを示す管理情報およびキャッシュブロックの先頭の論理アドレス情報が管理情報内に保持される。
【0052】
また、キャッシュブロック内の書き込み済みセクタアドレス情報は、管理情報内に登録されていないため、キャッシュブロック内をリードすることにより取得される。
また、キャッシュブロックがAD-CACHEかOD-CACHEかを区別する情報が管理情報内に保持される。
【0053】
次に、具体的な動作を説明する。
図4〜図8は、書き込み処理を示すフローチャートである。図4〜図8は、CPU21の制御によるフラッシュメモリ23に対する書き込み動作を示す図である。
【0054】
図4において、まず、CPU21は管理領域41の管理情報からユーザデータ領域42のユーザデータブロックのアドレス情報と書き込み済み論理空間情報を取得する(ステップS1)。
また、CPU21はユーザデータ領域42のユーザデータブロックの論理アドレスに対応したキャッシュ領域43のキャッシュブロックのアドレス情報と書き込み済み論理空間情報を取得する。
また、このとき、CPU21はキャッシュ領域43の新規キャッシュブロック(フリーブロック)のアドレス情報を取得する処理を行う。
【0055】
次に、CPU21は使用中のキャッシュブロックの中から割当済みキャッシュブロックがあるか否かを判断する(ステップS2)。ステップS2は図9に示す状態のキャッシュブロックを検索する処理である。
【0056】
図9は、ホストからの書き込みにより空きのないフル状態になったときのキャッシュブロック(AD-CACHE)の状態(2パターン)を示す図である。
【0057】
図9の(A)は、ユーザデータブロック141に対して、キャッシュブロック(AD-CACHE)142が、ユーザデータブロック141に対応する論理セクタアドレス0〜nの空間に書き込み済みデータ143およびホストからの書き込みデータ144が書き込まれた第1の状態を示している。
【0058】
また、図9の(B)は、ユーザデータブロック145に対して、キャッシュブロック(AD-CACHE)146が、ユーザデータブロック145の論理セクタアドレス0〜nの空間に対してずれた論理セクタアドレス2〜n、0〜1の空間に書き込み済みデータ147およびホストからの書き込みデータ148が書き込まれた第2の状態を示している。
【0059】
図9に示すキャッシュブロックの状態は、更なる書き込みができないため、キャッシュブロックとして存在する意味がないので優先的にライトバックを行う。図9に示すキャッシュブロックの状態がなければ、使用頻度の低いキャッシュブロックを優先的にライトバックする(第12の書き込み手段、第1優先処理手段)。
【0060】
ステップS2の判断で、割当済みキャッシュブロックがなければ、CPU21は未使用のキャッシュブロックがあるか否かを判断する(ステップS3)。
ステップS3の判断で、未使用のキャッシュブロックがあるときは、図5に示すステップS10以降の処理へ進み、ステップS3の判断で、未使用のキャッシュブロックがないときは、CPU21はキャッシュブロック(AD-CACHE)でかつフル状態のキャッシュブロックがあるか否かを判断する(ステップS4)。
【0061】
ステップS4の判断で、キャッシュブロック(AD-CACHE)でかつフル状態のキャッシュブロックがなければ、CPU21は使用頻度の低いキャッシュブロックを取得する(ステップS5)。
そして、CPU21は取得した使用頻度の低いキャッシュブロックをユーザデータブロックの論理セクタアドレスに再割当をするライトバック処理を行う(ステップS7)。
CPU21はメモリ22の管理情報を更新して(ステップS8)、図5に示すステップS10以降の処理へ進む。
【0062】
ステップS4の判断で、キャッシュブロック(AD-CACHE)でかつフル状態のキャッシュブロックがあれば、CPU21はフル状態のキャッシュブロックを取得する(ステップS6)。そして、ステップS7へ進む。
【0063】
また、ステップS2の判断で、割当済みキャッシュブロックがあれば、CPU21はキャッシュブロックの状態がキャッシュブロック(AD-CACHE)であるかまたはキャッシュブロック(OD-CACHE)であるかを判断する(ステップS9)。
ステップS9の判断で、キャッシュブロックの状態がキャッシュブロック(AD-CACHE)であるときは図6に示すステップS21以降の処理へ進み、キャッシュブロックの状態がキャッシュブロック(OD-CACHE)である図7に示すステップS31以降の処理へ進む。
【0064】
図5に示すステップS10では、CPU21は指定論理境界を超える書き込みが発生したか否かを判断する(ステップS10)。
ステップS10の判断で、指定論理境界を超える書き込みが発生した場合に、CPU21は新規キャッシュブロック(AD-CACHE)へ書き込みを行う(ステップS14)。
ステップS14で新規キャッシュブロック(AD-CACHE)を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップS14の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【0065】
図10は、ステップS14の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図10において、ユーザデータブロック111に対する論理セクタアドレス2〜5の書き込みが発生した場合の書き込み終了後はキャッシュブロック112の先頭から論理セクタアドレス2〜5の書き込みが行われ、残りは空き領域の状態となる(第1の書き込み手段、第2の書き込み手段)。
【0066】
ステップS14の書き込み終了後は、CPU21はユーザデータブロック111に対してキャッシュブロック112が新しく割り当てられたのでメモリ22の管理情報を更新し(ステップS15)、管理領域41に管理情報を書き込む(ステップS16)。
【0067】
図6に示すステップS21では、CPU21はキャッシュブロック(AD-CACHE)が書き込み済み領域のみのフル状態であるか否かを判断する(ステップS21)。
ステップS21の判断で、キャッシュブロック(AD-CACHE)が書き込み済み領域のみのフル状態でないときは、CPU21はキャッシュブロック(AD-CACHE)への書き込み条件を満たすか否かを判断する(ステップS22)。
【0068】
ステップS22の判断で、キャッシュブロック(AD-CACHE)が書き込み条件を満たす時は、CPU21はキャッシュブロック(AD-CACHE)への書き込みを行う(ステップS23)。そして、CPU21はメモリ22の管理情報を更新する(ステップS24)。
【0069】
ステップS22は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間に対して、以下の図11に示す81〜84の論理空間に当てはまるか否かを判別する処理である。
【0070】
図11は、ステップS22の書き込み条件を満たす書き込みパターンを示す図である。
図11において、81は、書き込み済み空間86の書き込み済みセクタ以降から書き込みが始まる場合を示し、82は、書き込み済み空間86の書き込み済みセクタ直後から書き込みが始まる場合を示す。83は、ホストからの書き込みデータの書き終わりが書き込み済み空間86の書き込み済みセクタの手前の場合を示し、84は、ホストからの書き込みデータの書き終わりが書き込み済み空間86の書き込み済みセクタの直前の場合を示している。
【0071】
ステップS23は、書き込みが発生した場合、ライトバック処理を行わずに割り当てられているキャッシュブロックに書き込みを行う処理である。
ステップS23の書き込みはキャッシュブロック内の書き込み済みセクタの直後から書き込みを行う。直後から書き込みができない場合は、書き込みの開始セクタアドレスまでコピーを行う。
【0072】
図12は、ステップS23の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図10の状態から、図12において、ユーザデータブロック121に対する論理セクタアドレス7〜8の書き込みが発生した場合、書き込み終了後のキャッシュブロック122は論理セクタアドレス2〜5の書き込み済みデータ123に続いて、124に示すように論理セクタアドレス6はユーザデータブロック121からコピーされ、これに続いて論理セクタアドレス7〜8のホストからの書き込みデータ125が書き込まれた状態となる(第3の書き込み手段、第4の書き込み手段)。
【0073】
ステップS23の書き込み終了後は、キャッシュブロックのブロックアドレスが変化していないため管理情報を保存するための管理領域41への書き込みは発生しないことから、メモリ22の管理情報を更新するのみとなる(ステップS24)。
ステップS21の判断で、キャッシュブロック(AD-CACHE)が書き込み済み領域のみのフル状態であるとき、または、ステップS22の判断で、キャッシュブロック(AD-CACHE)への書き込み条件を満たさないときは、CPU21は書き込みサイズが論理ブロックサイズであるか否かを判断する(ステップS25−1)。
ステップS25−1の判断で、書き込みサイズが論理ブロックサイズでないときは、CPU21はライトバック処理を行う(ステップS25)。そして、CPU21はメモリ22の管理情報を更新する(ステップS26)。
【0074】
ステップS25は、書き込みが発生した場合、キャッシュブロック(AD-CACHE)が、図9に示す書き込み済みのフル状態であれば、ガベージ処理を発生させずにライトバックを行う処理である。
このとき、キャッシュブロックをユーザデータブロックとして管理情報に登録する。ライトバック処理前のユーザデータブロックは消去処理を行いフリーブロックとして管理情報に登録する。
【0075】
また、ステップS25で、キャッシュブロック(AD-CACHE)がフル状態でない場合であっても、ガベージ処理を行うことによりフル状態にすることも可能である。
また、ステップS25−1の判断で、書き込みサイズが論理ブロックサイズのときは、新規キャッシュブロック(AD-CACHE)へフル状態で書き込みを行う(図8のステップS41)。そして、CPU21はキャッシュブロック(AD-CACHE)が割当済みであるか否かを判断する(ステップS42)。
【0076】
ステップS42の判断で、キャッシュブロック(AD-CACHE)が割当済みであるときは、CPU21は割当済みキャッシュブロック(AD-CACHE)の消去を行う(ステップS43)。
そして、ステップS43の割当済みキャッシュブロック(AD-CACHE)の消去終了後は、CPU21はユーザデータブロック111に対して割当済みキャッシュブロック112が消去されたのでメモリ22の管理情報を更新し(ステップS44)、管理領域41に管理情報を書き込む(ステップS45)。
【0077】
ステップS42の判断で、キャッシュブロック(AD-CACHE)が割当済みでないときは、CPU21はユーザデータブロック111に対して未割当キャッシュブロック112があるのでメモリ22の管理情報を更新し(ステップS46)、管理領域41に管理情報を書き込む(ステップS47)。
【0078】
上述したように、キャッシュブロック(AD-CACHE)、または後述するキャッシュブロック(OD-CACHE)が割当済の状態において、書き込みが発生し、かつライトバックが発生する場合において、書き込みサイズが論理ブロックサイズである場合に限り、ライトバッグを行なわずに新規キャッシュブロックに書き込みを行い、古いキャッシュブロックを消去する。
【0079】
これにより、ライトバック処理が発生しないため、ガベージ処理による書き込みパフォーマンスの低下を防ぐことができる。
なお、この場合、消去処理は発生することになる。また、キャッシュブロック(AD-CACHE)、または後述するキャッシュブロック(OD-CACHE)の割り当てがどのような状態であってもガベージ処理が発生しないため、パフォーマンスを一定に保つことができる。
【0080】
図13は、ステップS25の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図13において、ユーザデータブロック131の論理セクタアドレス0〜nに対して、キャッシュブロック132に論理セクタアドレス2〜7の書き込み済みデータ133があるとき、他の論理セクタアドレス8〜n、0〜1のデータをユーザデータブロック131からキャッシュブロック132に134に示すようにコピーして、キャッシュブロック132をフル状態にしておいて、ライトバック処理を行った後に再割当を行うことができる(第5の書き込み手段)。
【0081】
つまり、図13に示すようにユーザデータブロック131に書き込まれているデータをすべてキャッシュブロック132にコピーする。
コピー処理後、キャッシュブロック132をユーザデータブロック131としてメモリ22の管理情報に登録し、コピー処理前のユーザデータブロックは消去処理を行いフリーブロックとしてメモリ22の管理情報に登録する。
【0082】
以上が、指定論理境界を超える書き込みについての説明である。次に、指定論理境界以下の書き込みについて説明する。
【0083】
図5のステップS10の判断で、指定論理境界以下の書き込みが発生した場合に、CPU21は新規キャッシュブロック(OD-CACHE)へ書き込みを行う(ステップS11)。
ステップS11で新規キャッシュブロック(OD-CACHE)を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップS11の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【0084】
図14は、ステップS11の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図14において、ユーザデータブロック151に対する論理セクタアドレス2の書き込みが発生した場合の書き込み終了後はキャッシュブロック152の先頭から論理セクタアドレス2はホストからの書き込みデータ153が書き込まれ、これに続いて、154に示すように論理セクタアドレス3はユーザデータブロック151からデータをコピーして、両者を合わせて指定論理境界155となるようにし、残りは空き領域の状態となる(第6の書き込み手段、第7の書き込み手段)。
【0085】
ステップS11の書き込み終了後は、CPU21はユーザデータブロック151に対してキャッシュブロック152が新しく割り当てられたのでメモリ22の管理情報を更新し(ステップS12)、管理領域41に管理情報を書き込む(ステップS13)。
ステップS11は、指定論理境界以下の書き込みが発生した場合にキャッシュブロックを用いることで、ライトバック処理を発生させずに書き込みを行う処理である。ステップS11の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【0086】
たとえば、図14に示す指定論理境界155を2セクタとして論理セクタアドレス2の書き込みが発生した場合の書き込み終了後は図14のキャッシュブロック152の状態となる。
つまり、論理セクタアドレス2のデータをキャッシュブロック152の先頭に書き込み、論理セクタアドレス3のデータは、ユーザデータブロック151の任意のデータからコピーしている。
この書き込みおよびコピー処理の終了後は、キャッシュブロック152が新しく割り当てられるのでメモリ22の管理情報を更新し、管理領域41に書き込むようにしている。
【0087】
図7に示すステップS31では、CPU21はキャッシュブロック(OD-CACHE)へ書き込み条件を満たすか否かを判断する(ステップS31)。
ステップS31の判断で、キャッシュブロック(OD-CACHE)への書き込み条件を満たすときは、CPU21はキャッシュブロック(OD-CACHE)が書き込み済み領域のみのフル状態であるか否かを判断する(ステップS32)。
【0088】
ステップS32の判断で、キャッシュブロック(OD-CACHE)が書き込み済み領域のみのフル状態でないときは、CPU21はキャッシュブロック(OD-CACHE)への書き込みを行う(ステップS33)。そして、CPU21はメモリ22の管理情報を更新する(ステップS34)。
【0089】
ステップS31は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間に対して、以下の図15に示す91〜92の論理空間に当てはまるか否かを判別する処理である。
【0090】
図15は、ステップS31の書き込み条件を満たす書き込みパターンを示す図である。
図15において、91は、書き込み済み空間94の範囲内の書き込みの場合であり、92は、書き込み済み空間94と同一範囲の書き込みの場合である。
【0091】
ステップS33は、書き込みが発生した場合、ライトバック処理を行わずに割り当てられているキャッシュブロックに書き込みを行う処理である。ステップS33の書き込みはキャッシュブロック内の書き込み済みセクタの直後から書き込みを行う。
【0092】
図16は、ステップS33の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、図16の状態から、再度、ユーザデータブロック161に対する論理セクタアドレス2の書き込みが発生した場合、書き込み終了後のキャッシュブロック162は論理セクタアドレス2〜3の書き込み済みデータ163に続いて、164に示すように論理セクタアドレス2のホストからのデータの書き込みを行い、165に示すように論理セクタアドレス3のデータはユーザデータブロックからコピーする。
これにより、164および165に示す論理セクタアドレス2〜3は指定論理境界166の状態となる(第8の書き込み手段、第9の書き込み手段)。
【0093】
ステップS33の書き込み終了後は、キャッシュブロックのブロックアドレスが変化していないため管理情報を保存するための管理領域41への書き込みは発生しないことから、メモリ22の管理情報を更新するのみとなる(ステップS34)。
【0094】
ステップS31の判断で、キャッシュブロック(OD-CACHE)への書き込み条件を満たさないときは、CPU21はキャッシュブロック(OD-CACHE)への書き込み条件を満たすか否かを判断する(ステップS35)。
【0095】
ステップS35においては、書き込み条件を満たす場合、換言すればホスト装置からの書き込みデータの範囲が指定論理境界サイズ内の場合に図17の処理に移行する。書き込み範囲が、指定論理境界サイズを超えた場合は、ステップS39−1の処理に移行する。
【0096】
図18は、ステップS35の書き込み条件を満たす書き込みパターンを示す図である。
ステップS35は、これから書き込む予定の論理空間が、キャッシュブロックに書き込み済みの論理空間104に対して、図17に示す101−1,101−2、102−1,102−2の論理空間に当てはまるか否かを判別する処理である。
【0097】
図17は、キャッシュブロック(OD-CACHE)への書き込み条件を満たす場合の処理フローである。
以下に図17の処理フローについて説明する。
【0098】
図17の処理で、まず、ホスト装置からの書き込みデータがキャッシュブロック(OD-CACHE)内に追記可能か否かを判別する(ステップS3501)。
このとき、キャッシュブロック(OD-CACHE)に保存される、図19に示されるようなOD管理情報分も付加して判定を行う。
ステップS3501の判断で、追記可能であればステップS3502の処理に進み、追記不可であればステップS3505の処理に進む。
【0099】
図19は、ステップS3501のフル(Full)状態(その2)におけるキャッシュブロック(OD-CACHE)の状態を示す図である。
この場合、空き領域は書き込みサイズとOD管理情報のサイズを加算したサイズより小さい。
【0100】
ステップS3502においては、現状の書き込み済みデータと異なる論理空間のデータを書き込むため、RAM上にある図20に示すようなOD管理情報(OD-CACHE内の書き込み済みデータの物理位置を示す)110を更新し、更新後そのOD管理情報をキャッシュブロック(OD-CACHE)へ追記し、ステップS3503の処理に進む。
ここで、OD管理情報110をフラッシュメモリに保存する理由は、起動時にて、キャッシュブロック(OD-DCACHE)内にある有効データの物理アドレスをすばやく取得するためである。キャッシュブロック(OD-CACHE)内を全てリードする必要がない。フラッシュメモリへの保存が発生することで、多少のオーバーヘッドにはなるが従来のライトバックに比べれば影響は小さい。
【0101】
図20は、本実施形態に係るOD管理情報の構造例を示す図である。
OD管理情報110は、ブロックサイズを管理するための情報であり、論理セクタアドレスと、これに対応する物理セクタアドレス、あるいは登録がなければ登録なしとの情報が設定される。
【0102】
図21は、ステップS3502のOD管理情報をキャッシュブロック(OD-CACHE)に書き込んだときの状態を示す図である。
この場合、指定論理境界とOD管理情報110は同一サイズである。
【0103】
ステップS3503では、OD管理情報110の保存後、ホスト装置からの書き込みデータを追記し、ステップS3504の処理に進む。
【0104】
図22は、ステップS3503のOD管理情報をキャッシュブロック(OD-CACHE)への書き込み終了後の状態を示す図である。
図22に示すように、OD管理情報を書き込んだ後に続いてホスト装置からの書き込みデータが書き込まれる。
【0105】
ステップS3504においては、RAM上にある管理情報を更新する。
【0106】
ステップS3501の判断で、追記不可であればステップS3505の処理に進むが、ステップS3505では、キャッシュブロック(OD-CACHE)内に登録されている複数の論理空間が既定数以上か否かの判別を行う。
ステップS3505の判断で、既定数以上であればステップS3511の処理に進み、既定数未満であればステップS3506の処理に進む。
【0107】
図23は、ステップS3505のキャッシュブロック(OD-CACHE)内に複数の論理データが書き込み済みの状態を示す図である。
この場合、ブロック内の最後尾にあるOD管理情報110が有効となる。
【0108】
ステップS3506においては、キャッシュブロック(OD-CACHE)内に保存されている有効データを新規キャッシュブロック(OD-CACHE)へコピーする。
このとき、RAM上のOD管理情報も更新し、ステップS3507の処理に進む。
ここで新規キャッシュブロック(OD-CACHE)へのコピーを行う理由は、キャッシュブロック(OD-CACHE)へ書き込みデータはFATなど、同一論理アドレスを頻繁に更新してくるデータを対象としており、一度キャッシュブロック(OD-CACHE)へ書き込まれたデータは以降、頻繁に更新されると考えられるため、ライトバック処理を行うよりはオーバーヘッド(ブロック内の全ページコピーとブロック消去2回)が抑えられるためである。
【0109】
図24は、ステップS3506の新規キャッシュブロック(OD-CACHE)へ有効データをコピーした後の状態を示す図である。
有効データのコピーの際、最後尾の有効なOD管理情報110にみがコピーされる。このコピーしたOD管理情報110の前側の領域には、論理セクタアドレス0〜7順番につめて書き込まれる。そして、OD管理情報110の後の領域は空き領域となる。
【0110】
ステップS3507では、新規キャッシュブロック(OD-CACHE)へコピー後の状態のOD管理情報110を新規キャッシュブロック(OD-CACHE)へ追記し、ステップS3508の処理に進む。
【0111】
ステップS3508では、OD管理情報の保存後、ホスト装置からの書き込みデータを追記し、ステップS3509の処理に進む。
【0112】
なお、ステップS3511の処理以降の処理は、以下に説明する図7のステップS39以降の処理と同様に行われる。
【0113】
ステップS35の判断で、キャッシュブロック(OD-CACHE)に登録されている論理空間以降の書き込みでないときは、CPU21は書き込みサイズが論理ブロックサイズであるか否かを判断する(ステップS39−1)。
ステップS39−1の判断で、書き込みサイズが論理ブロックサイズでないときは、CPU21はライトバック処理を行う(ステップS39)。そして、CPU21はメモリ22の管理情報を更新する(ステップS40)。
ステップS39は、書き込みが発生した場合、新規キャッシュブロック(AD-CACHE)を取得しライトバック処理を行う処理である。
【0114】
図25は、ステップS39の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
たとえば、始めに、キャッシュブロック172に書き込まれている論理セクタアドレス2〜3のデータを、174に示すように新規キャッシュブロック173へコピーする。その後に、ユーザデータブロック171に書き込まれている他の論理セクタアドレス4〜n、0〜1のデータを、175に示すように新規キャッシュブロック173へコピーする。
たとえば、図16に示す状態からステップS39のライトバック処理を行うと図24に示す状態となる。
ステップS39のライトバック処理によるコピー処理後、新規キャッシュブロック173をユーザデータブロック171として管理情報に登録し、前のユーザデータブロック171は消去処理を行いフリーブロックとして管理情報に登録する(第13の書き込み手段、第1優先処理手段)。
【0115】
ステップS32の判断で、キャッシュブロック(OD-CACHE)が書き込み済み領域のみのフル状態のときは、CPU21は新規キャッシュブロック(OD-CACHE)へ書き込みを行う(ステップS41)。
ステップS41で新規キャッシュブロック(OD-CACHE)を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップS41の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【0116】
ステップS41の書き込み終了後は、CPU21はユーザデータブロックに対してキャッシュブロックが新しく割り当てられたのでメモリ22の管理情報を更新し(ステップS42)、管理領域41に管理情報を書き込む(ステップS43)。
ステップS41は、書き込みが発生した場合、新規キャッシュブロック(OD-CACHE)を取得することで、ライトバック処理を行わずにキャッシュブロックの更新を行う処理である。
【0117】
図26は、ステップS41の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
図27は、ステップS41の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【0118】
たとえば、図26に示すキャッシュブロック182とユーザデータブロック181の状態から、再度、論理セクタアドレス2の書き込みが発生した場合、図27に示すように新規キャッシュブロック193の先頭に194に示す論理セクタアドレス2のホストからのデータを書き込み、これに続いて195に示す論理セクタアドレス3のデータをユーザデータブロック191からコピーする。
ステップS41のコピー終了後は、新規キャッシュブロック193を新たなユーザデータブロック191として管理情報に登録し、前のユーザデータブロック191は消去処理を行いフリーブロックとして管理情報に登録する(第10の書き込み手段)。
【0119】
ステップS35の判断で、キャッシュブロック(OD-CACHE)に登録されている論理空間以降の書き込みであるときは、CPU21は新規キャッシュブロック(AD-CACHE)へ書き込みを行う(ステップS36)。
ステップS36で新規キャッシュブロック(AD-CACHE)を用いることで、ライトバック処理を発生させずに書き込みを行う。ステップS36の書き込みは、論理アドレスに関係なくキャッシュブロックの先頭から行う。
【0120】
図28は、ステップS36の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
図29は、ステップS36の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【0121】
たとえば、図28において、キャッシュブロック202とユーザデータブロック201の状態から、ユーザデータブロック201に対する論理アドレス5〜7の書き込みが発生した場合、図29に示すように新規キャッシュブロック213の先頭に214に示す論理セクタアドレス2〜3のデータをキャッシュブロック212からコピーし、これに続いて215に示す論理セクタアドレス4のデータをユーザデータブロック211からコピーする。
215に示すデータのコピー終了後に、216に示す論理セクタアドレス5〜7のホストからのデータの書き込みを行う(第11の書き込み手段)。
【0122】
ステップS36の書き込み終了後は、CPU21はユーザデータブロック211に対してキャッシュブロック213が新しく割り当てられたのでメモリ22の管理情報を更新し(ステップS37)、管理領域41に管理情報を書き込む(ステップS38)。
ステップS36は、ステップS35の条件を満たす書き込みが発生した場合に、新規キャッシュブロック(AD-CACHE)を取得することで、ライトバック処理を行わずに書き込みを行う処理である。
【0123】
ステップS36の書き込みの前に、キャッシュブロック212内の214に示すデータを新規キャッシュブロック213へコピーする。その後にコピーした214に示すデータの直後のセクタから書き込みを行う。直後から書き込みができない場合は、書き込みの開始セクタアドレスまで214に示すユーザデータからのコピーを行う。ステップS36の書き込み終了後は、新規キャッシュブロック213を新たなキャッシュブロック212として管理情報に登録し、前のキャッシュブロック212は消去処理を行う。
【0124】
また、ステップS39−1の判断で、書き込みサイズが論理ブロックサイズでないときは、新規キャッシュブロック(AD-CACHE)へフル状態で書き込みを行う(ステップS41)。そして、CPU21はキャッシュブロック(AD-CACHE)が割当済みであるか否かを判断する(ステップS42)。
【0125】
ステップS42の判断で、キャッシュブロック(AD-CACHE)が割当済みであるときは、CPU21は割当済みキャッシュブロック(AD-CACHE)の消去を行う(ステップS43)。
そして、ステップS43の割当済みキャッシュブロック(AD-CACHE)の消去終了後は、CPU21はユーザデータブロック111に対して割当済みキャッシュブロック112が消去されたのでメモリ22の管理情報を更新し(ステップS44)、管理領域41に管理情報を書き込む(ステップS45)。
【0126】
ステップS42の判断で、キャッシュブロック(AD-CACHE)が割当済みでないときは、CPU21はユーザデータブロック111に対して未割当キャッシュブロック112があるのでメモリ22の管理情報を更新し(ステップS46)、管理領域41に管理情報を書き込む(ステップS47)。
【0127】
上述したように、キャッシュブロック(OD-CACHE)、または前述したキャッシュブロック(AD-CACHE)が割当済の状態において、書き込みが発生し、かつライトバックが発生する場合において、書き込みサイズが論理ブロックサイズである場合に限り、ライトバッグを行なわずに新規キャッシュブロックに書き込みを行い、古いキャッシュブロックを消去する。
【0128】
これにより、ライトバック処理が発生しないため、ガベージ処理による書き込みパフォーマンスの低下を防ぐことができる。なお、この場合、消去処理は発生することになる。また、キャッシュブロック(OD-CACHE)、または前述したキャッシュブロック(AD-CACHE)の割り当てがどのような状態であってもガベージ処理が発生しないため、パフォーマンスを一定に保つことができる。
【0129】
また、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック(OD-CACHE)内に管理情報の一部を保存する、より具体的には、OD管理情報の一部をユーザデータが保存されているブロックに保存することにより、いままで管理情報のフラッシュメモリへの保存サイズはそのままで、キャッシュブロック(OD-CACHE)に複数の論理空間のデータを保存させることで、いままで比べてライトバックの発生頻度を低下させることを実現している。
これにより、既存の管理情報をフラッシュメモリへ保存する際のサイズと更新タイミングを変更せずに、管理情報の情報量を多くすることができる。
そして、管理情報の情報量の増加により、ライトバックの発生頻度を低下させる(抑止する)ことが可能となる。
ライトバックの発生頻度が低下することで、ガベージ処理、フラッシュメモリの消去の発生頻度が低下し、ライトパフォーマンスの低下を防ぐことが可能となる。
フラッシュメモリの消去の発生頻度が低下することで書き換え回数(消去回数)に制限があるフラッシュメモリの寿命延命につながる。
特に、FATを用いたメディアの場合、FAT1、FAT2など論理アドレスが連続でなく(飛び飛び)、かつ、同一アドレスへの書き込みが頻繁に発生するため、ブロックサイズが大きいメディア(同一ブロック内にFAT1、FAT2が存在)に対し本発明の実施形態による処理が有効となる。
【0130】
さらに、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック(OD-CACHE)内に管理情報の一部を保存することにより、起動時に行う管理情報の取得の高速化を図ることができる。
すなわち、OD内のライト済み最終ページのリードにより管理情報の保存場所を取得し、次のリードで管理情報を取得することができることから、管理情報をライトする処理を行わなくとも起動時にキャッシュブロック(OD-CACHE)内を全リードすることにより管理情報を構築することが可能となる。その結果、起動時に行う管理情報の取得の高速化を図ることができる。
【0131】
図30は、論理ブロック単位の読み出し処理を示すフローチャートである。
図30において、まず、ステップS111で、CPU21は管理情報からユーザデータブロックのアドレス情報と書き込み済み論理空間情報を取得し、また、論理アドレスに対応したキャッシュブロックのアドレス情報と書き込み済み論理空間情報を取得する。
【0132】
次に、CPU21はキャッシュブロックがユーザデータブロックに対して割当済みであるか否かを判断する(ステップS112)。
ステップS112の判断で、キャッシュブロックがユーザデータブロックに対して割当済みでないとき、CPU21はユーザデータブロック内のデータを読み出してホストに供給する(ステップS113)。
ステップS113は、読み出し要求された論理ブロックに対してキャッシュブロックが割り当てられていなかった場合の処理である。
【0133】
ステップS112の判断で、キャッシュブロックがユーザデータブロックに対して割当済みであるとき、CPU21は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する(ステップS114)。
ステップS114の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、CPU21は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいか否かを判断する(ステップS115)。
ステップS115の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さいときは、CPU21はユーザデータブロック内のデータを読み出してホストに供給する(ステップS116)。
【0134】
ステップS114の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、CPU21は読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する(ステップS123)。
ステップS123の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、CPU21はユーザデータブロック内のデータを読み出してホストに供給する(ステップS128)。
【0135】
ステップS116およびステップS128は、キャッシュブロックは割り当てられているが、読み出し要求された論理アドレスのデータがキャッシュブロックに存在しない場合の処理である。この場合の処理は、ユーザデータブロック内のデータをホストに読み出す処理である。
【0136】
ステップS115の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスよりも小さくないときは、CPU21は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する(ステップS117)。
ステップS117の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、CPU21はユーザデータブロック内のデータを読み出すと共に(ステップS118)、残りのデータをキャッシュブロックから読み出して、ホストに供給する(ステップS119)。
【0137】
ステップS117の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、CPU21はユーザデータブロック内のデータを読み出すと共に(ステップS120)、続くデータをキャッシュブロックから読み出して(ステップS121)、さらに残りのデータをキャッシュブロックから読み出して、ホストに供給する(ステップS122)。
【0138】
ステップS123の判断で、読み出し開始アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、CPU21は読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるか否かを判断する(ステップS124)。
ステップS124の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一であるときは、CPU21はキャッシュブロック内のデータを読み出して、ホストに供給する(ステップS125)。
【0139】
ステップS124の判断で、読み出し終了アドレスがキャッシュブロックに存在する論理アドレスと同一でないときは、CPU21はキャッシュブロック内のデータを読み出して(ステップS126)、残りのデータをユーザデータブロックから読み出して、ホストに供給する(ステップS127)。
【0140】
ステップS118〜ステップS119、ステップS120〜ステップS122、ステップS126〜ステップS127は、ユーザデータブロックとキャッシュブロック内の書き込み済みデータの両方を読み出す処理である。
この場合、読み出し始めは、ユーザデータブロック内のデータをホストに読み出す。
読み出しの後半は、ホストからの要求論理セクタアドレスに対応するデータがキャッシュブロック内に存在するならば、キャッシュブロック内のデータをホストに読み出し、存在しないならば、ユーザデータブロック内のデータをホストに読み出す。
ステップS125は、キャッシュブロック内のデータをホストに読み出す処理である。
【0141】
上述したように、フラッシュメモリ23で示した不揮発性メモリ(NAND型フラッシュメモリ)は上書きが不可であることとデータの消去単位がブロック単位であるため、データの書き換えが発生した場合、メモリカード20で示したメモリ装置内では、論理・物理テーブルの整合を取るため、書き換えデータのサイズに関係なく、ブロック単位で、別ブロックに書き換えデータを保存する必要があった。
【0142】
そのため、書き換えデータ以外のデータは元ブロック内にあるデータをコピーする必要がある。そして、書き換え後は不必要なデータが存在するブロックが発生するため、そのブロックを消去する必要があった(ライトバック処理)。
また、ブロックには消去回数の制限があった。
【0143】
本実施の形態では、キャッシュブロックを用いたブロック制御方法により、従来のメモリ装置と比較してライトバック処理の発生頻度を減らすことができる。ライトバックの発生頻度が減ることにより、コピーと消去の発生頻度が減るため、データ書き換えの際の処理速度を向上させることができる。また、ブロックの消去回数を減るため、メモリ装置としての製品寿命を延ばすことができる。
【0144】
これにより、複数セクタ単位の論理空間サイズである指定論理境界を超えるファイルデータについて、ホストから書き込みが行われた場合に、新規キャッシュブロックに書き込むことで、ライトバック処理を発生させない処理をすることができる。このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。また、ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0145】
また、本実施の形態では、データの書き込みがある指定論理境界以下の場合には、キャッシュブロック(OD-CACHE)内に管理情報の一部を保存する、より具体的には、OD管理情報の一部をユーザデータが保存されているブロックに保存することにより、いままで管理情報のフラッシュメモリへの保存サイズはそのままで、キャッシュブロック(OD-CACHE)に複数の論理空間のデータを保存させることで、いままで比べてライトバックの発生頻度を低下させることができる。
そして、OD内のライト済み最終ページのリードにより管理情報の保存場所を取得し、次のリードで管理情報を取得することができることから、管理情報をライトする処理を行わなくとも起動時にキャッシュブロック(OD-CACHE)内を全リードすることにより管理情報を構築することが可能となり、その結果、起動時に行う管理情報の取得の高速化を図ることができる。
【0146】
また、ホストから書き込みが行われた場合に、書き込まれる論理アドレス空間に関係なくキャッシュブロックの先頭からデータを書き込むことで、キャッシュブロック内のコピー処理を発生させない処理をすることができる。このとき、コピー処理の発生を抑えることで、書き込みパフォーマンスを向上させることができる。
【0147】
また、上述した書き込みから連続した、クラスタ境界に限らないファイルデータの書き込みが行われた場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理をすることができる。
このとき、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。このとき、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。
また、管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0148】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0149】
また、キャッシュブロックがフル書き込み状態の場合、ガベージ処理を発生させずにユーザブロックへライトバック処理を行うことで、書き込みパフォーマンスを向上させることができる。
【0150】
次に、複数セクタ単位の論理空間サイズである指定論理境界以下の管理情報のFATやディレクトリエントリについて、ホストから書き込みが行われた場合に、新規キャッシュブロックにデータを書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生が抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0151】
また、書き込み後、同じ論理アドレス空間の書き込みが発生した場合、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
このとき、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0152】
また、キャッシュブロック内を追記することで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。
ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。この時、キャッシュブロックのブロックアドレスのみを管理することで、ブロックアドレスが変化しなければ管理情報を更新する必要がなくなり、書き込みパフォーマンスを向上させることができる。管理情報の更新頻度が減少することで管理情報が登録されているブロックの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0153】
また、キャッシュブロックがフル状態で書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0154】
また、管理情報のFATやディレクトリエントリの書き込み後、ファイルデータの書き込みが発生した場合、別のキャッシュブロックへデータ書き込むことで、ライトバック処理を発生させない処理により、ライトバック処理の発生を抑えることでガベージ処理の発生を抑えられ、書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0155】
また、ライトバックされるキャッシュブロックの優先順位について、キャッシュブロックの空きがない場合、キャッシュブロックの内で更新頻度の低いキャッシュブロックを優先的にライトバック処理する。
更新頻度が低いキャッシュブロックを優先的にライトバック処理することで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、更新頻度が低いキャッシュブロックは、更新頻度が高いキャッシュブロックと比較して、書き込みが発生する確率が低いためである。
書き込みに対するキャッシュブロックの使用効率が上がることで、ライトバック処理の発生を抑えるので、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。
【0156】
また、キャッシュブロックの空きがない場合、書き込みがフル状態であるキャッシュブロックを優先的にガベージ処理する。フル状態のキャッシュブロックを優先的にライトバックすることで、書き込みに対するキャッシュブロックの使用効率を上げることができる。これは、フル状態ならばキャッシュブロックを使用する必要がないためである。
書き込みに対するキャッシュブロックの使用効率が上がることで、ガベージ処理の発生が抑えられ書き込みパフォーマンスを向上させることができる。ライトバック処理の発生を抑えることでブロックへの消去処理を減少させることができるため、製品寿命を延ばすことができる。また、フル状態であれば、ガベージ処理によるブロック内のコピー処理を行う必要がないため、パフォーマンスを向上させることができる。
上述した本実施の形態に限らず、本発明の要旨を逸脱しない限り、適宜、変更しうることはいうまでもない。
【0157】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【0158】
【図1】本実施の形態に適用されるデータ処理システムの概略構成を示す図である。
【図2】メモリカード20の構成を示すブロック図である。
【図3】ユーザデータブロックとキャッシュブロックの対応を示す図である。
【図4】書き込み処理を示すフローチャートである。
【図5】書き込み処理を示すフローチャートである。
【図6】書き込み処理を示すフローチャートである。
【図7】書き込み処理を示すフローチャートである。
【図8】書き込み処理を示すフローチャートである。
【図9】ホストからの書き込みによりフルになったときのキャッシュブロック(AD-CACHE)の状態(2パターン)を示す図である。
【図10】ステップS14の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図11】ステップS22の書き込み条件を満たす書き込みパターンを示す図である。
【図12】ステップS23の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図13】ステップS25の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図14】ステップS11の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図15】ステップS31の書き込み条件を満たす書き込みパターンを示す図である。
【図16】ステップS33の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図17】キャッシュブロック(OD-CACHE)への書き込み条件を満たす場合の処理フローである。
【図18】ステップS35の書き込み条件を満たす書き込みパターンを示す図である。
【図19】ステップS3501のフル(Full)状態(その2)におけるキャッシュブロック(OD-CACHE)の状態を示す図である。
【図20】本実施形態に係るOD管理情報の構造例を示す図である。
【図21】ステップS3502のOD管理情報をキャッシュブロック(OD-CACHE)に書き込んだときの状態を示す図である。
【図22】ステップS3503のOD管理情報をキャッシュブロック(OD-CACHE)への書き込み終了後の状態を示す図である。
【図23】ステップS3505のキャッシュブロック(OD-CACHE)内に複数の論理データが書き込み済みの状態を示す図である。
【図24】ステップS3506の新規キャッシュブロック(OD-CACHE)へ有効データをコピーした後の状態を示す図である。
【図25】ステップS39の書き込み処理におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図26】ステップS41の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図27】ステップS41の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図28】ステップS36の書き込み処理前におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図29】ステップS36の書き込み処理後におけるキャッシュブロックとユーザデータブロックの状態を示す図である。
【図30】論理ブロック単位の読み出し処理を示すフローチャートである。
【符号の説明】
【0159】
20・・・メモリカード、21・・・CPU、22・・・メモリ、23・・・フラッシュメモリ、24・・・ホストI/F、25・・・バス、30・・・コントローラ部、40・・・メモリ部、41・・・管理領域、42・・・ユーザデータ領域、43・・・キャッシュ領域。

【特許請求の範囲】
【請求項1】
クラスタ単位にデータの書き込みおよび読み出しが行われるとともに、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリと、
前記不揮発性メモリのアクセス動作を制御する制御回路と、を有し、
前記不揮発性メモリは、
管理情報を記録する管理領域と、
ユーザからのデータが記録されるユーザデータ領域と、
前記ユーザデータ領域に対する書き込みおよび読み出しデータを一時的に保持するキャッシュ領域と、を有し、
前記管理領域は、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを含み、
前記制御回路は、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する
メモリ装置。
【請求項2】
前記制御回路は、
管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる
請求項1記載のメモリ装置。
【請求項3】
前記制御回路は、
前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する
請求項1記載のメモリ装置。
【請求項4】
前記制御回路は、
前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する
請求項3記載のメモリ装置。
【請求項5】
前記制御回路は、
前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する
請求項3記載のメモリ装置。
【請求項6】
前記制御回路は、
前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする
請求項5記載のメモリ装置。
【請求項7】
前記制御回路は、
前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する
請求項5記載のメモリ装置。
【請求項8】
クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御方法であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶ステップと、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存ステップと
を含むメモリ制御方法。
【請求項9】
前記保存ステップにおいては、
管理情報の前記不揮発性メモリの保存サイズは維持したままで、キャッシュブロックに複数の論理空間のデータを保存させる
請求項8記載のメモリ制御方法。
【請求項10】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを追記可能か否かを当該キャッシュブロックの管理情報を含めて判定し、追記可能な場合には管理情報を前記キャッシュブロックに追記した後、書き込みデータを追記する
請求項8記載のメモリ制御方法。
【請求項11】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを追記可能な場合には前記管理領域にある管理情報を更新した後、管理情報を前記キャッシュブロックに追記し、書き込みデータを追記する
請求項10記載のメモリ制御方法。
【請求項12】
前記保存ステップにおいては、
前記選択したキャッシュブロックにデータを、追記可能か否かを判定し、追記不可の場合には前記キャッシュブロック内に登録されている複数の論理空間が既定数以上であるか否かの判定を行い、既定数未満である場合には、前記キャッシュブロックに保存されている有効データを新規キャッシュブロックにコピーし、コピー後の状態の管理情報を前記新規キャッシュブロックに追記する
請求項10記載のメモリ制御方法。
【請求項13】
前記保存ステップにおいては、
前記キャッシュブロック内に複数の管理情報が存在する場合、最後尾にある管理情報を有効とする
請求項12記載のメモリ制御方法。
【請求項14】
前記保存ステップにおいては、
前記新規キャッシュブロックに管理情報を追記した後に、書き込みデータを追記する
請求項12記載のメモリ制御方法。
【請求項15】
クラスタ単位にデータの書き込みおよび読み出しが行われ、複数のセクタからなるブロック単位にデータの消去が行われる不揮発性メモリが有する管理領域、ユーザデータ領域およびキャッシュ領域に対するメモリ制御処理であって、
前記ユーザデータ領域の論理ブロックのアドレスと、前記論理ブロックに割り当てられた物理ブロックのアドレスとを対応付けて記憶する論理/物理テーブルと、前記論理/物理テーブルの物理ブロックのアドレスに対応する前記キャッシュ領域の物理ブロックのアドレスを記憶する記憶処理と、
前記ユーザデータ領域のユーザブロック内の複数セクタ単位の論理空間サイズである指定論理サイズ以内のデータの書き込みの際には所定のキャッシュブロックを選択し、データを保存させた当該キャッシュブロック内に管理情報の一部を保存する保存処理と
を含むメモリ制御処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate