(57)【要約】【課題】  高い書き込み速度を実現可能なメモリカードを提供する。【解決手段】  メモリカードは、複数の書き込み単位領域からなる複数の第１領域および複数の第２領域を有する第１メモリ３を含む。演算部８は、ホスト機器によって付されたアドレスを有する書き込みデータを第１メモリに書き込む指示を出す。第２メモリｃｐは、前回に書き込まれたデータのアドレスと連続するアドレスを期待値とし、書き込み要求の際に期待値でないアドレスを記憶する。第１カウンタｃｔｃｐは、期待値でないアドレスの書き込みデータの書き込み要求があった回数を、アドレスごとに数える。第３メモリｅｐは、第１カウンタにおける値が第１設定値に達したアドレスを記憶する。演算部は、第３メモリが記憶するアドレスの書き込みデータの書き込み要求が来た際、このアドレスに関わらず、第２領域のデータの書き込まれていない個所に書き込みデータを書き込む指示を出す。【選択図】      図２
2006268776.tif 000002
【特許請求の範囲】
【請求項１】
複数の書き込み単位領域からなる複数の第１領域および複数の第２領域を有する第１メモリと、
ホスト機器によって付されたアドレスを有する書き込みデータを前記第１メモリに書き込む指示を出す演算部と、
前回に書き込まれたデータのアドレスと連続するアドレスを期待値とし、書き込み要求の際に前記期待値でない前記アドレスを記憶する第２メモリと、
前記期待値でない前記アドレスの前記書き込みデータの書き込み要求があった回数を、前記アドレスごとに数える第１カウンタと、
前記第１カウンタにおける値が第１設定値に達した前記アドレスを記憶する第３メモリと、
を具備し、前記演算部は、前記第３メモリが記憶する前記アドレスの前記書き込みデータの書き込み要求が来た際、このアドレスに関わらず、前記第２領域のデータの書き込まれていない個所に前記書き込みデータを書き込む指示を出すことを特徴とするメモリカード。
【請求項２】
前記メモリカードが、前記書き込みデータが前記第２領域に書き込まれる度にこの書き込みデータの前記アドレスに関する値を初期値に設定する第２カウンタをさらに具備することを特徴とする請求項１に記載のメモリカード。
【請求項３】
前記演算部が、前記第１領域の１つが記憶しているそれぞれの前記アドレスごとの最新の前記書き込みデータを前記第１領域の１つである新第２領域にコピーする指示を出し、
前記第２カウンタが、前記新第２領域にコピーされた前記書き込みデータの前記アドレスに関する値を変化させる、
ことを特徴とする請求項２に記載のメモリカード。
【請求項４】
前記演算部が、前記第２カウンタにおける値が第２設定値に達した前記アドレスの前記書き込みデータを前記第１領域の１つにコピーし、
前記第３メモリが、前記第２設定値に達した前記前記アドレスの前記書き込みデータがコピーされた後、コピーされた前記書き込みデータの前記アドレスを削除する、
ことを特徴とする請求項３に記載のメモリカード。
【請求項５】
所定数の連続するアドレスが、１つのグループを形成し、
前記演算部が、同じグループに属する複数の前記アドレスのデータが２つの前記第１領域に書き込まれている場合に、前記２つの前記第１領域の一方である旧第１領域に書き込まれているデータを前記２つの前記第１領域の一方である新第１領域に書き込む指示を出し、且つ前記旧第１領域のデータを削除する指示を出す、
ことを特徴とする請求項１に記載のメモリカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードに関し、例えば、メモリカードへのデータの書き込み方式に関する。
【背景技術】
【０００２】
現在、音楽データや画像データの記録メディアとしてフラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードを用いるホスト機器中のアプリケーション等からの書き込み要求に応じて、ファイルシステムが、メモリカードに記憶されるデータを管理する。
【０００３】
ファイルシステムは、書き込まれるデータをクラスタ単位の大きさに分割し、分割された各データに論理アドレス（Logical Block Address（ＬＢＡ））を割り当て、ＬＢＡ順に、書き込まれていないクラスタにデータを割り当てる。この割り当てに従って、メモリカードは、メモリに実際にデータを書き込む。クラスタは、データを記憶するもの、および管理用データを記憶するものに分類される。
【０００４】
なお、メモリカードのコントローラは、データを読み出す際の効率性の観点から、所定の範囲にわたって連続するＬＢＡ（例えばＬＢＡ０乃至１５等）のデータを、管理単位としての１つのブロックに割り当てる。
【０００５】
クラスタの管理データ記憶用の部分のテーブル（例えばＦＡＴ（File Allocation Table）に、どのデータがどのクラスタに割り当てられているかが記載される。ファイルが読み出される際、この情報をトレースすることにより、元のデータが復元される。また、管理データとして、ファイル名またはフォルダ名、ファイルサイズ、属性およびファイルの更新日時等のディレクトリエントリ（directory entry（ＤＩＲ））もある。
【０００６】
これらの管理用データ（上記例のＦＡＴおよびＤＩＲ等）は、以上のような特性から、データの書き込みの間、定期的に更新される。
【０００７】
一方、メモリカードのフラッシュメモリは、１）データの書き込みはページ単位で行われる、２）データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる、という特徴を有する。このため、一般に、書き込み済みのページを有するブロック内に含まれるページ内のデータが更新される場合、「引越し書き込み」と呼ばれる処理が行われる。引越し書き込みでは、書き込まれるデータ（新データ）がデータの書き込まれていない新ブロックに書き込まれ、旧データ（新データに書き換えられるデータ）を含む旧ブロックから、書き換えられない残りのデータが新ブロックにコピーされる。このため、１つのページの書き込みにかなりの時間がかかる場合がある。
【０００８】
上記のように、ファイルシステムは、ＬＢＡ（例えばＬＢＡ０乃至１５等）のデータを１つのブロックに割り当てる。このため、非連続のＬＢＡのデータが書き込まれる度に、このＬＢＡが属するＬＢＡ群のデータが含まれたブロックを引っ越す作業が必要になる。このことは、書き込み速度の低下に繋がる。
【０００９】
ＬＢＡが非連続になるタイミングとして、管理用データの更新が挙げられる。これらは、定期的に更新されるため、引越し書き込みが定期的に発生する。
【００１０】
管理用データの更新時の引越し書き込みを回避するために、追記専用の（引越し書き込みの必要性が生じない）キャッシュブロックを設けることが行われる。しかしながら、この場合、ファイルシステムは、どのＬＢＡのデータが、キャッシュブロックへの書き込みに適切（更新が頻繁に発生する）か、を判断する必要がある。つまり、メモリカードに対してなされた論理フォーマット上で、管理用データ（ＦＡＴ、ＤＩＲ）のＬＢＡが何であるかが判断される必要がある。
【００１１】
このための方法として、所定の管理用データを記憶するＭＢＳ（Master Boot Sector）やファイル管理用データの中身を解析することが考えられる。しかしながら、解析のために、これらのデータを読み出す時間、読み出されたデータを格納するためのバッファ、これらを解析する時間、等の余分な時間および資源が必要となる。
【００１２】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献１】特開平9-114598号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、高い書き込み速度を実現可能なメモリカードを提供しようとするものである。
【課題を解決するための手段】
【００１４】
本発明の第１の視点によるメモリカードは、複数の書き込み単位領域からなる複数の第１領域および複数の第２領域を有する第１メモリと、ホスト機器によって付されたアドレスを有する書き込みデータを前記第１メモリに書き込む指示を出す演算部と、前回に書き込まれたデータのアドレスと連続するアドレスを期待値とし、書き込み要求の際に前記期待値でない前記アドレスを記憶する第２メモリと、前記期待値でない前記アドレスの前記書き込みデータの書き込み要求があった回数を、前記アドレスごとに数える第１カウンタと、前記第１カウンタにおける値が第１設定値に達した前記アドレスを記憶する第３メモリと、を具備し、前記演算部は、前記第３メモリが記憶する前記アドレスの前記書き込みデータの書き込み要求が来た際、このアドレスに関わらず、前記第２領域のデータの書き込まれていない個所に前記書き込みデータを書き込む指示を出すことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、高い書き込み速度を実現可能なメモリカードを提供できる。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能および構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１７】
［１］構成  
図１は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。図１に示されるように、本実施形態に係るメモリカード１は、ＰＣＢ（Printed Circuit Board）基板２と、基板２上に配置されたＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリと称する）３およびコントローラ４を有する。
【００１８】
コントローラ４には、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックが搭載されている。各デバイスの詳細については後で述べる。なお、フラッシュメモリ３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、１つのメモリセルに１ビットより多い情報（例えば２ビット）を記憶する多値メモリであっても良い。
【００１９】
また、図１では、基板２上にフラッシュメモリ３およびコントローラ４が配置された場合を示したが、フラッシュメモリ３およびコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されても良い。
【００２０】
以下の説明において使用する用語「論理ブロックアドレス（ＬＢＡ）」、「物理ブロックアドレス」は、それぞれ、ブロック自体の論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものではあるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示すものである。
【００２１】
フラッシュメモリのメモリ領域は、通常のデータ記憶用の通常ブロックと、キャッシュブロックとを含んでいる。書き込むデータが、通常ブロックとキャッシュブロックにどのような法則で割り振られるかについては、項目［１−２］書き込み動作において詳述する。
【００２２】
図２は、ホスト機器とメモリカードとを含む構成を示すブロック図である。図２に示されるように、ホスト機器（以下、ホストと称す）２０は、接続されるメモリカードに対してアクセスを行うためのハードウェアおよびソフトウェア（システム）を備えている。ホスト２０は、メモリカード１内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理し、メモリカード１内のフラッシュメモリ３を直接制御するものとして構築されている。
【００２３】
また、ホスト２０は、消去時の消去ブロックサイズが１６ｋＢに定められているフラッシュメモリ３を使用することを前提として、１６ｋＢ単位で論理・物理アドレスの割当を行う。多くの場合、ホスト２０は、論理アドレス１６ｋＢ分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う（該当するコマンドを発行する）。
【００２４】
メモリカード１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。
【００２５】
フラッシュメモリ３は、不揮発性メモリであり、その消去時の消去ブロックサイズ（消去単位のブロックサイズ）が２５６ｋＢに定められている。フラッシュメモリ３へのデータの書き込み、およびフラッシュメモリ３からのデータの読み出しは、例えば１６ｋＢ単位で行われる。フラッシュメモリ３は、例えば０．０９μｍプロセス技術を用いて製作される。すなわち、フラッシュメモリ３のデザインルールは０．１μｍ未満である。
【００２６】
コントローラ４は、ＣＰＵ８およびＲＯＭ９のほかに、メモリインタフェース部５、ホストインタフェース部６、バッファ７、およびＲＡＭ（Random Access Memory）１０を搭載している。
【００２７】
メモリインタフェース部５は、コントローラ４とフラッシュメモリ３との間のインタフェース処理を行う。ホストインタフェース部６は、コントローラ４とホスト２０との間のインタフェース処理を行う。
【００２８】
バッファ７は、ホスト２０から送られてくるデータをフラッシュメモリ３へ書き込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶する。また、バッファ７は、フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に、一定量のデータを一時的に記憶する。
【００２９】
ＣＰＵ（演算部）８は、メモリカード１全体の動作を司る。ＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードし、所定の処理を実行する。ＣＰＵ８は、ファームウェアに従って、各種のテーブルをＲＡＭ１０上で作成したり、ホスト２０から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ３上の該当領域に対するアクセスを実行したり、バッファ７を通じたデータ転送処理を制御したりする。
【００３０】
ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納する。ＲＡＭ１０は、揮発性メモリであり、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【００３１】
また、ＲＡＭ１０は、後述するキャッシュブロックの管理用の領域ｃｐ、ｅｐ（ＲＡＭｃｐ、ＲＡＭｅｐ）を有する。ＲＡＭｃｐ、ＲＡＭｅｐは、例えばそれぞれ８個の記憶単位を有する。ＲＡＭｃｐは、キャッシュブロックに書き込む候補のＬＢＡを格納している。
【００３２】
ｃｐカウンタｃｔｃｐ、ｅｐカウンタｃｔｅｐは、ＲＡＭｃｐ、ＲＡＭｅｐ内のＬＢＡの状態に応じて、計数を行う。ＲＡＭｃｐ、ＲＡＭｅｐ、ｃｐカウンタｃｔｃｐ、ｅｐカウンタｃｔｅｐの詳細な動作については、項目［２］書き込み動作において説明する。
【００３３】
図３は、ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（すなわち、メモリカード内のフラッシュメモリ）と、のデータ配置の違いを示す図である。
【００３４】
ホスト２０が想定しているフラッシュメモリは、各ページは５２８Ｂ（５１２Ｂ分のデータ記憶部＋１６Ｂ分の冗長部）を有しており、３２ページ分が１つの消去単位（すなわち、１６ｋＢ＋０．５ｋＢ（ここで、ｋは１０２４））である。以下では、この１つの消去単位を小ブロックと称し、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００３５】
一方、実際に使用するフラッシュメモリ３では、各ページは２１１２Ｂ（例えば５１２Ｂ分のデータ記憶部×４＋１０Ｂ分の冗長部×４＋２４Ｂ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（すなわち、２５６ｋＢ＋８ｋＢ）となる。以下では、この１つの消去単位を大ブロックと称し、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を１６ｋＢと呼び、大ブロックカードの消去単位を２５６ｋＢと呼ぶ。
【００３６】
また、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３とは、それぞれ、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Ｂ（５１２Ｂ＋１６Ｂ）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、２１１２Ｂ（２０４８Ｂ＋６４Ｂ）である。データ書き込みなどの際には、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００３７】
図３の例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示したが、本発明はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００３８】
メモリカード１を実用上有効な製品とするためには、図３に示したフラッシュメモリ３の記憶容量は１Ｇｂ以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇｂである場合、２５６ｋＢブロック（消去単位）の数は、５１２個となる。
【００３９】
また、図３においては消去単位が２５６ｋＢブロックである場合を例示しているが、消去単位が例えば１２８ｋＢブロックとなるように構築することも実用上有効である。この場合、１２８ｋＢブロックの数は、１０２４個となる。
【００４０】
また、図３の例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、本発明はこれに限定されない。例えば、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さくてもよい。
【００４１】
図４は、ホストおよびメモリカードの各コミュニケーション階層を示す図である。図４に示すように、ホスト２０のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、および小ブロック物理アクセス層２４を有する。一方、メモリカード１のシステムは、小ブロック物理アクセス層１１、小ブロック物理・小ブロック論理変換層１２、小ブロック論理・大ブロック物理変換層１３、および大ブロック物理アクセス層１４を有する。
【００４２】
例えば、ホスト２０側のアプリケーションソフト２１がファイルの書き込みをファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックの論理ブロックアドレス（小ブロック論理アドレス）に基づきシーケンシャルなセクタ書き込みをドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、小ブロック論理アドレスに基づく１６ｋＢブロック毎のシーケンシャルな書き込みを実現するための動作を行う。すなわちドライバソフト２３は、論理ブロックアドレス・物理ブロックアドレス変換を行い、次いで、小ブロック物理アクセス層２４を通じて、小ブロックの物理ブロックアドレス（小ブロック物理アドレス）によるランダムな書き込みコマンドをメモリカード１に対して発行し、データ転送を行う。
【００４３】
なお、ライトアクセスにおいては、小ブロックに基づいた場合も大ブロックに基づいた場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
【００４４】
メモリカード１の小ブロック物理アクセス層１１は、ホスト２０から小ブロック物理アドレスによる書き込みコマンドを受けると、小ブロック物理アドレスやデータのほか、これに付随する付随データに含まれている小ブロック論理アドレスを取得する。
【００４５】
小ブロック物理・小ブロック論理変換層１２は、第１テーブルを有する。第１テーブルは、データ読み出しなどの際に小ブロック物理アドレス（１６ｋＢブロック分に対応）から小ブロック論理アドレス（１６ｋＢブロック分に対応）への変換処理を行うために用いられる。
【００４６】
変換層１２は、小ブロック物理アクセス層１１が書き込みコマンドを受けて小ブロック論理アドレスを取得したときには、これを第１テーブルに反映させる。小物理ブロックアドレスに関しても、第１テーブルに反映させる。
【００４７】
小ブロック論理・大ブロック物理変換層１３は、第２テーブルを有する。第２テーブルは、データ読み出しなどの際に小ブロック論理アドレス（シーケンシャルな１６ｋＢブロック×１６個分に対応）から大ブロックの物理ブロックアドレス（大ブロック物理アドレス（２５６ｋＢ物理ブロック分に対応））への変換処理を行うために用いられる。
【００４８】
変換層１２は、小ブロック物理アクセス層１１が書き込みコマンドを受けて小ブロック論理アドレスを取得したときには、これを第２テーブルに反映させる。
【００４９】
大ブロック物理アクセス層１４は、小ブロック物理アクセス層１１が書き込みコマンドを受けて取得した小ブロック論理アドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、２５６ｋＢ物理ブロック（大物理ブロック）内において２ｋＢ（１ページ）単位でシーケンシャルに１６ｋＢ分のデータを書き込む。したがって、小ブロック１つ分（１６ｋＢ）の書き込みの結果、大物理ブロック中の８ページ分（１ページ＝２ｋＢ）にデータが書き込まれる。また、ホストは、１つの小論理ブロックごとに１つのＬＢＡを付与する。
【００５０】
また、大ブロック物理アクセス層１４は、取得した小ブロック論理アドレスや小物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００５１】
このように、ホスト２０は小ブロック物理アドレスに基づくコマンドを発行するので、メモリカード１は、小ブロック物理アドレスに対応するデータがどの大物理ブロックの中に存在するのかが分かるように管理する。具体的には、１６ｋＢブロック毎に小ブロック論理・小ブロック物理アドレスの対応関係を管理すると共に、連続した２５６ｋＢ分の小ブロックの小論理ブロックアドレスに対応するデータがどの大物理ブロックに格納されているかが分かるように管理する。
【００５２】
図５（ａ）および図５（ｂ）は、ホスト２０が発行するコマンドのフォーマットを示す図である。図５（ａ）に示されるように、ホスト２０が発行するコマンドのパケットは、コマンド種別情報（ここでは「書き込み」）、アドレス（物理ブロックアドレス）、データ（コンテンツなどの実データおよび付随データ（５１２Ｂ＋１６Ｂ））といった各種情報を含んでいる。
【００５３】
図５（ｂ）に示されるように、メモリカード１にとっては、「アドレス」は、小ブロック物理アドレスに相当する。このようなフォーマットのパケットにおいては、付随データ１６Ｂ中の所定の位置に小ブロック論理アドレス（アクセス対象となる１６ｋＢブロックに対応する論理アドレス）が配置されている。メモリカード１は、コマンド種別情報、小物理ブロックアドレス、データを取得するほか、特に上記の小論理ブロックアドレスを取得する。なお、小論理ブロックアドレスは、読み出しコマンドの場合には付加されない。
【００５４】
図６は、ホスト２０が想定しているブロック書き込み操作と、メモリカード１が実際に行う書き込み処理と、を対比して示す図である。図６に示されるように、ホスト２０（同図の左側）では、小ブロック論理アドレスに基づく１６ｋＢブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロック物理アドレスによる１６ｋＢブロック単位のランダムな書き込み操作を行う。
【００５５】
一方、メモリカード１（同図の右側）では、ホスト２０から書き込みコマンドを受けた場合、小ブロック論理アドレスに基づく１６ｋＢブロック（小ブロック）単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００５６】
［２］書き込み動作  
次に、図７乃至図３２を参照して、上記構成のホストの書き込み動作について説明する。図７は、本実施形態に係るメモリカードのフラッシュメモリのメモリ空間の一部、ＲＡＭｃｐ、ｅｐ、ｃｐカウンタｃｔｃｐ、ｃｔｅｐを示す図である。図８は、本実施形態に係るメモリカードのフラッシュメモリの書き込み動作を示すフローチャートである。図９乃至図３２は、それぞれ、フラッシュメモリのメモリ空間の一部、ＲＡＭ、カウンタの１つの状態を示している。
【００５７】
図７に示されるように、メモリ空間は、通常データ用のブロック（通常ブロック）ｎ乃至ｎ＋４、キャッシュ用のブロック（キャッシュブロック）ｃ、ｃ＋１を含む。各ブロックｎ乃至ｎ＋４、ｃ、ｃ＋１の１列が１つの大ブロック（すなわち、消去単位）に相当する。各大ブロックごとにアドレスｎ乃至ｎ＋４、ｃ、ｃ＋１が割り当てられる。また、各大ブロックは、上記のように１２８ページからなる。
【００５８】
また、上記のように、ホスト２０からの１つの小ブロックの書き込みは、大ブロック中の８ページの書き込みに相当する。よって、各大ブロックを、８ページごとに区分して示している。例えば、各大ブロックの図の最上の書き込み領域のページアドレスは０乃至７である。以下、同様である。
【００５９】
１つの大ブロック中の８ページからなる範囲を書き込み領域（図で、１つのますに対応）と称して、以下、説明する。そして、各書き込み領域を座標形式（ｘ，ｙ）により表す。例えば、ブロックアドレスｎ内の第８行目の書き込み領域を、（ｎ，８）の書き込み領域と称する。
【００６０】
１つの大ブロック（以下、単にブロックと記載する）には、読み出しを容易にする観点から、基本的に、小ブロック論理アドレス（以下、ＬＢＡと記載する）が連続する１６個の小ブロックが書き込まれる。なお、１６という数は、本実施形態では、１つのブロックが１６個の書き込み領域を有することに対応している。したがって、例えば、あるブロックアドレス中の書き込み領域に、すでにＬＢＡ２、ＬＢＡ１６のデータが連続して書き込まれる場合、ＬＢＡ２のデータが書き込まれたブロック中に、空き（書き込まれていない）書き込み領域が有ったとしても、ＬＢＡ１６のデータは、別のブロック中の書き込み領域に書き込まれる。以下、同じブロックに属するべき、連続する１６個のＬＢＡをグループと称する。
【００６１】
通常ブロックには、同じグループに属するＬＢＡのデータを１つのブロックまとめるために、データのコピーが行われる。一方、キャッシュブロックは、追記専用のブロックである。
【００６２】
ＲＡＭｃｐ、ｅｐは、それぞれ８個の記憶単位（図中の１つのます）からなる。各記憶単位は、１つのＬＢＡの値を記憶する。記憶単位の数は、適宜に増減することが可能である。そして、各ＲＡＭｃｐ、ｅｐの各記憶単位には、説明の便宜上、列に沿って、順にインデックス０乃至８が割り振られている。
【００６３】
ＲＡＭｃｐ、ＲＡＭｅｐが記憶する値を参照しながら、コントローラ４は、所定のＬＢＡのデータをキャッシュブロックに割り当てる。あるＬＢＡがＲＡＭｃｐに登録された段階では、このＬＢＡはキャッシュブロックへの書き込み対象とはならない。一方、ＲＡＭｅｐは、キャッシュブロックに書き込む候補のＬＢＡを格納している。ＲＡＭｅｐに登録されているＬＢＡが更新される場合、このＬＢＡのデータは、通常ブロックではなく、キャッシュブロックに書き込まれる。
【００６４】
ｃｐカウンタｃｔｃｐは、ＲＡＭｃｐの各記憶単位に対して設けられ、後述の所定の動作に従って増加する。同様に、ｅｐカウンタｃｔｅｐは、ＲＡＭｅｐの各記憶単位に対して設けられ、後述の所定の動作に従って、設定値から減少する。
【００６５】
次に、図８を中心に用い、各動作の具体例を図９乃至図３１を参照しながら、書き込み動作を説明する。
【００６６】
［２−１］書き込み要求  
図８に示されるように、ホスト２０から、あるＬＢＡのデータの書き込み要求が来る（ステップＳ１）と、コントローラ４は、この書き込まれるＬＢＡ（以下、書き込みＬＢＡ）が、ＲＡＭｅｐに登録されているか否かを判断する（ステップＳ２）。
【００６７】
次に、コントローラ４は、該ＬＢＡが期待値か否かを判定する（ステップＳ３）。本実施形態の場合、「期待値」とは、例えばＬＢＡが、前回に書き込まれたデータのＬＢＡと連続していることを意味する。ＬＢＡが連続していない場合、書き込まれるデータは、先に書き込まれたデータとともに、１つのファイルを構成する等の関係性を有さない可能性がある。すなわち、先の書き込みデータのＬＢＡと非連続のＬＢＡのデータは、ＦＡＴやＤＩＲ等のファイル情報である可能性がある。よって、ＬＢＡの連続性が、このＬＢＡのデータをキャッシュブロックに書き込むための判断の材料の１つとして利用される。
【００６８】
しかしながら、本発明はこの態様に限られない。すなわち、本発明の実施形態は、あるメモリとそのコントローラにおいて、コントローラが、ある法則にしたがって書き込む場合全般に適用できる。そして、この法則から外れる（期待値から外れる）データの書き込み要求を、このデータをキャッシュブロックに書き込むための判断材料として用いていればよい。よって、メモリとそのコントローラの構成によっては、例えば、物理ブロックアドレス（Physical Logic Address）を用いて判断すること等も可能である。
【００６９】
［２−２］書き込みＬＢＡが期待値の場合の動作  
書き込みＬＢＡが期待値であった場合、この書き込みＬＢＡのデータは、直前のＬＢＡと同じ通常ブロックに書き込まれる（ステップＳ４）。
【００７０】
次に、ここまでの動作を具体例（図９）に沿って説明する。図９は、書き込み領域（ｎ，１）にＬＢＡ２のデータが書き込まれている状態で、ＬＢＡ３のデータの書き込み要求が来た場合を示している。ＬＢＡ３は、ＲＡＭｅｐに登録されておらず、直前に書き込まれたＬＢＡ２と連続している。よって、図９に示されるように、ＬＢＡ３のデータは、書き込み領域（ｎ，２）に書き込まれる。
【００７１】
［２−３］書き込みＬＢＡが期待値でない場合の動作  
図８のステップＳ３の判断が偽であった場合、コントローラ４は、書き込みＬＢＡがＲＡＭｃｐに登録されているか否かを判断する（ステップＳ５）。登録されていない場合、書き込みＬＢＡをＲＡＭｃｐに登録するとともに、書き込みＬＢＡに関して計数を行うｃｐカウンタｃｔｃｐを“０”にセットする（ステップＳ６）。次に、コントローラ４は、書き込みＬＢＡのデータを通常ブロックに書き込む（ステップＳ７）。この際、書き込みＬＢＡのデータは、直前に書き込まれたＬＢＡのデータが書き込まれたブロックと異なるブロックに書き込まれる。
【００７２】
次に、通常ブロックの整理が行われる（ステップＳ８）。ここでは、１つのブロックにまとめられているべき複数のＬＢＡ（同じグループのＬＢＡ）のデータが異なるブロックに書き込まれている場合に、これらを１つのブロックにまとめる作業が行われる。
【００７３】
次に、ここまでの動作を具体例（図１０乃至図１５）に沿って説明する。図１０は、図９に続く状態を示しており、図９の状態からＬＢＡ１０、１１、１２のデータの書き込み要求が来た場合を示している。ＬＢＡ１０は、直前に書き込まれたＬＢＡ３からの期待値ではなく、また、ＲＡＭｃｐに登録されていない。よって、図１０に示されるように、ＬＢＡ１０がＲＡＭｃｐに登録され、ＬＢＡ１０用のｃｐカウンタｃｔｃｐが“０”にセットされる。
【００７４】
次いで、ＬＢＡ１０のデータは、直前に書き込まれたＬＢＡ３のデータが存在するブロックと異なるブロックｎ＋１内の書き込み領域（ｎ＋１，１）に書き込まれる。このように、期待値と異なるＬＢＡのデータ書き込みが指示される度に、新たなブロックが消費される。
【００７５】
次に、ＬＢＡ１１、１２の書き込みは、これらのＬＢＡ値がＬＢＡ１０からの期待値なので、ステップＳ１乃至Ｓ４（図９）と同様の処理が行われる。この結果、ＬＢＡ１１、１２のデータは、それぞれ、書き込み領域（ｎ＋１，２）、（ｎ＋１，３）に書き込まれる。
【００７６】
図１１は、図１０に続く状態を示しており、図１０の状態から、ＬＢＡ２、３の書き込み要求が来た場合を示している。ＬＢＡ２は、ＬＢＡ１２からの期待値ではなく、また、ＲＡＭｃｐに登録されていない。よって、図１１に示されるように、ＬＢＡ２がＲＡＭｃｐに登録され、ＬＢＡ１０用のｃｐカウンタｃｔｃｐが“０”にセットされる。次いで、ＬＢＡ２のデータは、直前に書き込まれたＬＢＡ１２のデータの存在するブロックと異なる新たなブロック、すなわち、例えばブロックアドレスｎ＋２内の書き込み領域（ｎ＋２，１）に書き込まれる。次に、ＬＢＡ３は、ＬＢＡ２からの期待値なので、ＬＢＡ２のデータの書き込み領域の次の書き込み領域（ｎ＋２，２）に書き込まれる。
【００７７】
図１２は、図１１に続く状態を示しており、図１１の状態からＬＢＡ１３、１４、１５の書き込み要求が来た場合を示している。ＬＢＡ１３は、ＬＢＡ３からの期待値ではなく、また、ＲＡＭｃｐに登録されていない。よって、図１２に示されるように、ＬＢＡ１３がＲＡＭｃｐに登録され、ＬＢＡ１３用のｃｐカウンタｃｔｃｐが“０”にセットされる。
【００７８】
次いで、ＬＢＡ１３のデータは、直前に書き込まれたＬＢＡ３のデータの存在するブロックと異なる新たなブロック、すなわち、例えばブロックアドレスｎ＋３内の書き込み領域（ｎ＋３，１）に書き込まれる。次に、ＬＢＡ１４、１５は、ＬＢＡ１３からの期待値なので、ＬＢＡ１３のデータの書き込み領域の次の書き込み領域（ｎ＋３，２）、（ｎ＋３，３）に順次書き込まれる。
【００７９】
ＬＢＡ２、３のデータは、２つのブロックに分かれて書き込まれている。このため、  ＬＢＡ１３、１４、１５の書き込みの際に、これらを１つのブロックにまとめる処理が行われる。すなわち、ＬＢＡ２、３の旧データが書き込まれているブロック（以下、旧アサインブロックと称する）のデータを、ＬＢＡ２、３の最新データが書き込まれたブロック（以下、新アサインブロックと称する）に引っ越す処理が行われる。
【００８０】
図１３は、図１２に続く状態を示している。この例の場合、ＬＢＡ２、３と同じグループに属する他のデータが無いので、データを１つのブロックにまとめる必要は無く、単にブロックｎが消去されるのみである。この後、ブロックｎは、何等かのＬＢＡのデータが書き込まれた際に、クリーンなブロック（消去済みのブロック）として機能する。このように、期待値と異なるＬＢＡのデータが書き込まれる度に、新アサインブロックが作成され、書き込まれるＬＢＡのデータを除くデータが旧アサインブロックから新アサインブロックにコピーされ、旧アサインブロックが消去される。
【００８１】
なお、ＲＡＭｃｐに空きが無い場合、登録されている最も古いＬＢＡ（インデックス０に格納されているＬＢＡ）が削除される。
【００８２】
図１４は、ＲＡＭｃｐには空きが無い状態で、直前に書き込まれたデータのＬＢＡ３１と非連続のＬＢＡ３４、３５、３６が書き込まれる場合を示している。この場合、図１５に示されるように、インデックス０内のＬＢＡ１０が削除される。次に、インデックス１乃至７のＬＢＡが、それぞれ、１つ前のインデックスへと移動される。この結果、空いたインデックス７にＬＢＡ３４が登録される。そして、ＬＢＡ３４、３５、３６のデータが、空いているブロック内に順次書き込まれる。しかしながら、望ましくは、ＲＡＭｃｐに常に空きがあるように、期待値から外れると予想されるＬＢＡの個数等を考慮して、ＲＡＭｃｐの大きさを設定することが必要である。
【００８３】
［２−４］書き込みＬＢＡがｃｐに登録されている場合の動作  
次に、図８のステップＳ５の判定が真であった場合、コントローラ４は、書き込みＬＢＡ用のｃｐカウンタｃｔｃｐの値を増加させる（ステップＳ９）。次に、コントローラ４は、増加させたｃｐカウンタｃｔｃｐの値が設定値に達したか否かを判定する（ステップＳ１０）。達していない場合、処理はステップＳ７に移行し、次いで、必要に応じてステップＳ８が行われる。
【００８４】
一方、ステップ１０の判定の結果、書き込みＬＢＡ用のｃｐカウンタｃｔｃｐが設定値に達したということは、書き込みＬＢＡが、ＬＢＡの連続性を頻繁に妨げるものであることを意味する。すなわち、典型的には、このＬＢＡのデータが管理用データ（例えばＦＡＴ、ＤＩＲ）である可能性が高い。よって、このＬＢＡのデータが次回以降に書き込まれる際は、キャッシュブロックに書き込まれるべきことを示すために、このＬＢＡがＲＡＭｅｐに登録される（ステップＳ１１）。同時に、このＬＢＡは、ＲＡＭｃｐから削除される。
【００８５】
次に、書き込みＬＢＡのデータが通常ブロックに書き込まれる（ステップＳ７）。次に、必要に応じて、ステップＳ８が行われる。
【００８６】
次に、ここまでの動作を具体例（図１６乃至図１８）に沿って説明する。以下の具体例では、ＬＢＡをＲＡＭｅｐに入れる契機となるＲＡＭｃｐの設定値は、２とされている。図１６に示されるように、ＲＡＭｃｐに登録されているＬＢＡ２用のｃｐカウンタｃｔｃｐの値が１であったとする。
【００８７】
図１６に示す状態で、期待値でないＬＢＡ２のデータの書き込み要求が来たとする。すると、図１７に示されるように、ＬＢＡ２のｃｐカウンタｃｔｃｐの値が増加した結果、設定値に達する。次に、ＬＢＡ２は、ＲＡＭｅｐに登録され、ＲＡＭｃｐから削除される。そして、ＬＢＡ２のデータがブロックｎに書き込まれる。
【００８８】
また、ＬＢＡ２がＲＡＭｅｐに登録されると、ＬＢＡ２用のｅｐカウンタｃｔｅｐが初期値に設定される。この初期値は、例えば２とされている。後述のように、キャッシュブロックの整理の結果、あるＬＢＡのデータが新たなキャッシュブロックへと引っ越す度に、このカウンタの値が減ぜられる。また、ＲＡＭｅｐに登録されているＬＢＡのデータが書き込まれる度に、このカウンタの値は設定値に再設定される。
【００８９】
次に、図１８に示されるように、同じグループに属し、新、旧アサインブロックに分かれて書き込まれているＬＢＡ１０乃至ＬＢＡ１５のデータが整理される。
【００９０】
［２−５］書き込みＬＢＡがｅｐに登録されている場合の動作  
図８のステップＳ１での判定の結果、書き込みＬＢＡがＲＡＭｅｐに登録されている場合、処理はステップＳ２１に移行する。このことは、書き込みＬＢＡのデータは、キャッシュブロックに書き込まれるべきことを意味する。そして、このタイミングで、必要に応じてキャッシュブロックの整理が行われる。よって、コントローラ４は、キャッシュブロックの整理の要、不要を判断する（ステップＳ２１）。この判断は、例えば、既に一杯のキャッシュブロックが存在する場合等に、整理を行うと判断することができる。
【００９１】
［２−５−１］キャッシュブロックの整理が行われない場合の動作  
図８のステップＳ２１の判定の結果、キャッシュブロックの整理が行われない場合、今回の書き込みＬＢＡの書き込みを利用して、必要に応じてキャッシュアウトブロックの整理が行われる。ここで、キャッシュアウトブロックとは、後述の所定の条件を満たすことによりキャッシュブロックから追い出されたＬＢＡのデータを格納するブロックである。キャッシュアウトブロックに関しては、後に詳述する。
【００９２】
まず、コントローラ４は、キャッシュアウトブロックの有無を判定する（ステップＳ２２）。キャッシュアウトブロックが存在しない場合、書き込みＬＢＡが、キャッシュブロック内の、直前に書き込まれた書き込み領域の次の書き込み領域に書き込まれる（ステップＳ２３）。
【００９３】
一方、ステップＳ２２での判定の結果、キャッシュアウトブロックが存在する場合、キャッシュアウトブロックの整理が行われる。すなわち、キャッシュアウトブロックを新アサインブロックとして、このキャッシュアウトブロック内のＬＢＡと同じグループのＬＢＡのデータが、旧アサインブロックからコピーされる（ステップＳ２４）。そして、旧アサインブロックが消去される。
【００９４】
この後、処理は、ステップＳ２３に移行し、書き込みＬＢＡのデータが書き込まれる。
【００９５】
なお、ステップＳ２３とステップＳ２４は同時に行われてもよい。
【００９６】
次に、具体例（図１９乃至図２２）に沿って説明する。図１９は、キャッシュブロックの整理が不要であって、ＲＡＭｅｐに登録されているＬＢＡ２のデータの書き込み要求が来ている場合を示している。この場合、図２０に示されるように、ＬＢＡ２はＲＡＭｅｐに登録されているので、ＬＢＡ２のデータは、通常ブロックではなく、キャッシュブロックｃに書き込まれる。
【００９７】
図２１は、図２０の後、ＬＢＡ１６乃至１８、ＬＢＡ３の書き込み要求が来た場合を示している。図２１に示されるように、ＬＢＡ１６乃至１８のデータがブロックｎ＋１に書き込まれた後、ＬＢＡ３はＲＡＭｅｐに登録されているので、ＬＢＡ３のデータはキャッシュブロックｃに追記される。この後、ＬＢＡの番号によらずに、キャッシュブロックに書き込まれるデータは、直前にデータが書き込まれたキャッシュブロック内の書き込み領域の次の書き込み領域に次々と書き込まれる。
【００９８】
図２２は、キャッシュブロックの整理が不要であって、キャッシュアウトされたＬＢＡ６のデータを格納するキャッシュアウトブロックｎ＋４が存在する場合を示している。そして、ＬＢＡ６と同じグループに属するＬＢＡ１０乃至１５のデータがブロック（旧アサインブロックに対応）ｎ＋３に書き込まれている。
【００９９】
このため、図２３に示されるように、ＬＢＡ１０乃至１５のデータが、新アサインブロックｎ＋４の書き込み領域（ｎ＋４，５）乃至（ｎ＋４，１０）にコピーされ、次いで、旧アサインブロックｎ＋３が消去される。
【０１００】
［２−５−２］キャッシュブロックの整理が行われる場合の動作  
図８のステップＳ２１の判定の結果、キャッシュブロックの整理が行われる場合、今回の書き込みＬＢＡの書き込みを利用して、キャッシュブロックの整理が行われる。すなわち、キャッシュブロック内の、各ＬＢＡの最新のデータが、最後にデータが書き込まれたキャッシュブロック（新アサインキャッシュブロック）にコピーされる。また、同時に、引越しされるＬＢＡのｅｐカウンタｃｔｅｐが減ぜられる（ステップＳ２５）。よって、キャッシュブロックに書き込まれた後、さらに書き込まれることなく新アサインキャッシュブロックにコピーされ続けるデータのＬＢＡ用のｅｐカウンタｃｔｅｐの値は、その度に減少し続ける。
【０１０１】
次に、コントローラ４は、ｅｐカウンタｃｔｅｐの値が減少した結果、０となったＬＢＡの有無を判定する（ステップＳ２６）。コントローラ４は、ｅｐカウンタｃｔｅｐの値が０となったＬＢＡのデータを、新アサインキャッシュブロックに書き込まずに、キャッシュアウト対象の候補として保留する。すなわち、このＬＢＡのデータは、キャッシュブロックから、新たな通常ブロック（キャッシュアウトブロック）へコピーされる候補とされる。
【０１０２】
次に、キャッシュアウトの動作を具体例（図２４、図２５）に沿って説明する。図２４に示されるように、キャッシュブロックｃには空いている書き込み領域は無い。そして、この状態で、ＬＢＡ３のデータの書き込み要求が来たとする。すると、キャッシュブロックｃには書き込めないので、キャッシュブロックの整理が必要である。
【０１０３】
次に、図２５に示されるように、書き込み要求のあったＬＢＡ３以外のＬＢＡ（ここでは、ＬＢＡ２のみ）の最新のデータ（ここでは、書き込み領域（ｃ，１５）のデータ）が、旧アサインキャッシュブロックｃからキャッシュブロックｃ＋１にコピーされる。ここで、新アサインキャッシュブロックｃ＋１にコピーされるＬＢＡ３のｅｐカウンタｃｔｅｐの値が減少するが、０にはならない。このため、ＬＢＡ３のデータは、キャッシュアウトの対象とはならない。
【０１０４】
次に、旧アサインキャッシュブロックｃが消去される。次いで、ＬＢＡ３が新アサインキャッシュブロックｃ＋１に書き込まれる。
【０１０５】
［２−５−２−１］キャッシュアウトブロックが存在しない場合の動作  
ここで、コントローラ４は、既にキャッシュアウトされた他のＬＢＡのデータを格納するキャッシュアウトブロックの有無を判定する（ステップＳ２７）。キャッシュアウトブロックが設けられていない場合、コントローラ４は、新たにキャッシュアウトブロックを用意し、その中に、キャッシュアウト対象のＬＢＡのデータを書き込む（ステップＳ２８）。
【０１０６】
また、ステップＳ２８の処理の後、旧データで占められているキャッシュブロック（旧アサインキャッシュブロック）が消去される。この後、書き込みＬＢＡのデータが、新アサインキャッシュブロックに書き込まれる（ステップＳ２３）。書き込みＬＢＡのデータの書き込みとともに、書き込みＬＢＡのｅｐカウンタｃｔｅｐの値は、初期値に設定される。なお、ステップＳ２８とステップＳ２３は、同時に行われてもよい。
【０１０７】
次に、ここまでの動作を具体例（図２６、図２７）に沿って説明する。図２６に示されるように、キャッシュブロックｃには空いている書き込み領域は無い。そして、この状態で、ＬＢＡ３のデータの書き込み要求が来たとする。このため、キャッシュブロックｃの整理が必要である。ここで、ＬＢＡ６のｅｐカウンタｃｔｅｐの値は１である。
【０１０８】
この場合、まず、図２７に示されるように、ＬＢＡ２、３の最新のデータが、旧アサインキャッシュブロックｃから新アサインキャッシュブロックｃ＋１にコピーされる。ここで、ＬＢＡ６をキャッシュブロックｃ＋１にコピーしようとすると、ＬＢＡ６のｅｐカウンタｃｔｅｐの値は０となる。このため、ＬＢＡ６のデータは、キャッシュアウトの対象の候補とされる。
【０１０９】
そして、キャッシュアウトブロックが存在していないため、ブロックｎ＋１をキャッシュアウトブロックとして、ＬＢＡ６のデータがブロックｎ＋１に書き込まれる。次に、キャッシュブロックｃが消去される。ＬＢＡ６はＲＡＭｅｐから削除され、ＬＢＡ２、ＬＢＡ３のｅｐカウンタｃｔｅｐの値は減ぜられる。
【０１１０】
［２−５−２−２］キャッシュアウトブロックが存在する場合の動作  
ステップＳ２７の判断の結果、キャッシュアウトブロックが既に存在している場合、キャッシュアウト対象の候補のＬＢＡのデータは、キャッシュアウトされずに、新アサインキャッシュブロックへとコピーされる（ステップＳ２９）。これは、メモリ領域の大きさの制限から、キャッシュアウトブロックの存在を１つと設定しているからである。
【０１１１】
メモリ領域の容量が許せば、既にキャッシュアウトブロックが存在していても、さらなるキャッシュアウトブロックを用意し、ここにキャッシュアウト対象の候補のＬＢＡのデータを書き込むことも可能である。次に、処理は、ステップＳ２３に移行する。なお、ステップＳ２９とステップＳ２３は、同時に行われてもよい。
【０１１２】
次に、ここまでの動作を具体例（図２８乃至図３２）に沿って説明する。図２８は、図２６と異なり、ＬＢＡ６をキャッシュアウトしようとした際に、キャッシュアウトブロック（ブロックｎ＋４）が既に存在している場合を示している。この場合、図２９に示されるように、ＬＢＡ６のデータは、キャッシュアウトされずに、新アサインキャッシュブロックｃ＋１に書き込まれる。次に、旧アサインキャッシュブロックｃが消去される。ＬＢＡ６は、次回のキャッシュブロックの整理の際に、キャッシュアウトされる。
【０１１３】
上記説明では、キャッシュブロックに書き込まれた後、さらなる書き込み要求の無いＬＢＡのデータを、ｅｐカウンタｃｔｅｐを用いて選別し、通常ブロックに書き込む手法が取られている。これに対して、単に、ＲＡＭｅｐへのＬＢＡの登録を、ファーストイン・ファーストアウトで行うこともできる。これについて、図３０乃至図３２を用いて説明する。
【０１１４】
図３０に示されるように、ＲＡＭｅｐには空き領域が無く、また、ｃｐカウンタｃｔｃｐのＬＢＡ０を示す値は１である。この状態で、ＲＡＭｅｐに未登録のＬＢＡ０のデータの書き込み要求があったとする。
【０１１５】
この場合、図３１に示されるように、最も先に登録されているＬＢＡ２が、ＲＡＭｅｐから外される。そして、ＬＢＡ２のデータが、直前に書き込まれたＬＢＡ１２からの期待値ではないので、消去済みのブロックｎに書き込まれる。そして、ＲＡＭｅｐの各インデックスの値が、１つ少ないインデックスへと順次移動され、ＲＡＭｅｐのインデックス７にＬＢＡ０が登録される。また、ＬＢＡ０は、ＲＡＭｃｐから削除される。
【０１１６】
次に、図３２に示されるように、ＬＢＡ１０乃至ＬＢＡ１２のデータが、旧アサインブロックｎ＋１から、新アサインブロックｎにコピーされ、旧アサインブロックｎ＋１が消去される。そして、書き込みＬＢＡ０のデータが、ブロックｎ＋２に書き込まれる。
【０１１７】
本発明の一実施形態に係るメモリカードによれば、直前に書き込まれたデータのＬＢＡからの期待値でないＬＢＡのデータの書き込み要求があった場合、このＬＢＡが記憶されるとともに、期待値でないＬＢＡのデータの書き込み要求があった回数が計数される。そして、期待されないタイミングでの書き込み要求が所定数に達するＬＢＡのデータは、追記専用のキャッシュブロックに書き込まれる。このため、引越し処理の頻発を引き起こすデータを、その中身を解析することなく用意に選別することができる。よって、引越し処理の回数の低下により、高い書き込み速度を実現可能なメモリカードを得られる。
【０１１８】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例および修正例に想到し得るものであり、それら変更例および修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【０１１９】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホスト２０とメモリカードとを含む構成を示すブロック図。
【図３】ホスト２０が想定しているフラッシュメモリと実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト２０およびメモリカードの各コミュニケーション階層を示す図。
【図５】ホスト２０が発行するコマンドのフォーマットを示す図。
【図６】ホスト２０が想定しているブロック書き込み操作と、メモリカードが実際に行う書き込み処理と、を対比して示す図。
【図７】本実施形態に係るメモリカードのフラッシュメモリのメモリ空間の一部、ＲＡＭの一部、カウンタを示す図。
【図８】本実施形態に係るメモリカードの書き込み動作を示すフローチャート。
【図９】フラッシュメモリの各部の１つの状態を示す図。
【図１０】フラッシュメモリの各部の１つの状態を示す図。
【図１１】フラッシュメモリの各部の１つの状態を示す図。
【図１２】フラッシュメモリの各部の１つの状態を示す図。
【図１３】フラッシュメモリの各部の１つの状態を示す図。
【図１４】フラッシュメモリの各部の１つの状態を示す図。
【図１５】フラッシュメモリの各部の１つの状態を示す図。
【図１６】フラッシュメモリの各部の１つの状態を示す図。
【図１７】フラッシュメモリの各部の１つの状態を示す図。
【図１８】フラッシュメモリの各部の１つの状態を示す図。
【図１９】フラッシュメモリの各部の１つの状態を示す図。
【図２０】フラッシュメモリの各部の１つの状態を示す図。
【図２１】フラッシュメモリの各部の１つの状態を示す図。
【図２２】フラッシュメモリの各部の１つの状態を示す図。
【図２３】フラッシュメモリの各部の１つの状態を示す図。
【図２４】フラッシュメモリの各部の１つの状態を示す図。
【図２５】フラッシュメモリの各部の１つの状態を示す図。
【図２６】フラッシュメモリの各部の１つの状態を示す図。
【図２７】フラッシュメモリの各部の１つの状態を示す図。
【図２８】フラッシュメモリの各部の１つの状態を示す図。
【図２９】フラッシュメモリの各部の１つの状態を示す図。
【図３０】フラッシュメモリの各部の１つの状態を示す図。
【図３１】フラッシュメモリの各部の１つの状態を示す図。
【図３２】フラッシュメモリの各部の１つの状態を示す図。
【符号の説明】
【０１２０】
１…メモリカード、２…基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、
５…インタフェース部、６…ホストインタフェース、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、２０…ホスト機器、ｃｐ、ｅｐ…ＲＡＭの領域、ｃｔｅｐ…ｃｐカウンタ、ｃｔｅｐ…ｅｐカウンタ。
【図１】
2006268776.tif 000003
【図２】
2006268776.tif 000004
【図３】
2006268776.tif 000005
【図４】
2006268776.tif 000006
【図５】
2006268776.tif 000007
【図６】
2006268776.tif 000008
【図７】
2006268776.tif 000009
【図８】
2006268776.tif 000010
【図９】
2006268776.tif 000011
【図１０】
2006268776.tif 000012
【図１１】
2006268776.tif 000013
【図１２】
2006268776.tif 000014
【図１３】
2006268776.tif 000015
【図１４】
2006268776.tif 000016
【図１５】
2006268776.tif 000017
【図１６】
2006268776.tif 000018
【図１７】
2006268776.tif 000019
【図１８】
2006268776.tif 000020
【図１９】
2006268776.tif 000021
【図２０】
2006268776.tif 000022
【図２１】
2006268776.tif 000023
【図２２】
2006268776.tif 000024
【図２３】
2006268776.tif 000025
【図２４】
2006268776.tif 000026
【図２５】
2006268776.tif 000027
【図２６】
2006268776.tif 000028
【図２７】
2006268776.tif 000029
【図２８】
2006268776.tif 000030
【図２９】
2006268776.tif 000031
【図３０】
2006268776.tif 000032
【図３１】
2006268776.tif 000033
【図３２】
2006268776.tif 000034