(57)【要約】【課題】データの書き込み速度を向上出来るメモリシステムを提供すること。【解決手段】ページ単位でデータを一括して書き込み、前記ページを複数含み且つ各々がデータの消去単位となる複数のメモリブロックＢＬＫを備えた不揮発性半導体メモリ１１と、前記不揮発性メモリ１１に対して書き込みデータ及び第１ロウアドレスを転送し、且つ転送した前記第１ロウアドレスの変更命令と、該第１ロウアドレスとは異なる第２ロウアドレスとを発行するコントローラ１２とを具備し、前記不揮発性半導体メモリ１１は、前記変更命令が発行されない際には前記第１ロウアドレスに対応する前記ページに前記書き込みデータを書き込み、前記変更命令が発行された際には前記第２ロウアドレスに対応する前記ページに前記書き込みデータを書き込む。【選択図】      図９
2008009942.tif 000002
【特許請求の範囲】
【請求項１】
ページ単位でデータを一括して書き込み、前記ページを複数含み且つ各々がデータの消去単位となる複数のメモリブロックを備えた不揮発性半導体メモリと、
前記不揮発性メモリに対して書き込みデータ及び第１ロウアドレスを転送し、且つ転送した前記第１ロウアドレスの変更命令と、該第１ロウアドレスとは異なる第２ロウアドレスとを発行するコントローラと
を具備し、前記不揮発性半導体メモリは、前記変更命令が発行されない際には前記第１ロウアドレスに対応する前記ページに前記書き込みデータを書き込み、前記変更命令が発行された際には前記第２ロウアドレスに対応する前記ページに前記書き込みデータを書き込む
ことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、前記書き込みデータのデータサイズがページサイズ未満である場合に、前記変更命令及び前記第２ロウアドレスを発行し、
前記第２ロウアドレスは、前記第１ロウアドレスとは異なる前記メモリブロック内の前記ページに対応する
ことを特徴とする請求項１記載のメモリシステム。
【請求項３】
ページ単位でデータを一括して書き込み、前記ページを複数含み且つ各々がデータの消去単位となる複数のメモリブロックを備えた不揮発性半導体メモリと、
前記不揮発性半導体メモリの動作を制御するコントローラと
を具備し、前記不揮発性半導体メモリは、前記メモリブロックと、
前記メモリブロックとの間で前記ページ単位によりデータを授受し、１ページ分のデータを保持可能な第１バッファ回路と、
前記第１バッファ回路及び前記コントローラとの間で１ページ分のデータサイズ以下のデータ単位によりデータを授受し、１ページ分のデータを保持可能な第２バッファ回路と
を備えることを特徴とするメモリシステム。
【請求項４】
前記コントローラは、前記不揮発性半導体メモリに対してデータの読み出し命令及び第１ロウアドレス及び第２ロウアドレスを発行し、
前記不揮発性半導体メモリは、前記第１ロウアドレスに対応し、且つ前記ページサイズ未満の第１データを含む第１ページデータを前記第２バッファ回路に読み出し、更に前記第２ロウアドレスに対応し、且つ前記ページサイズ未満の第２データを含む第２ページデータを前記第１バッファ回路に読み出し、
前記第１バッファ回路は、前記第２ページデータのうちの前記第２データのみを、前記第２バッファ回路において前記第１データ以外を保持する領域に転送する
ことを特徴とする請求項３記載のメモリシステム。
【請求項５】
前記コントローラは、データの書き込み時に第１ロウアドレスを発行するとともに、前記第２バッファ回路に対して第１データを転送し、
前記コントローラは、前記第２バッファ回路に転送した前記第１データのデータサイズがページサイズ未満である場合に、書き込み中止命令、データの読み出し命令、及び第２ロウアドレスを発行し、
前記不揮発性半導体メモリは、前記書き込み中止命令に応答して前記第１データを前記第２バッファ回路に保持しつつ書き込み動作を中断し、前記読み出し命令に応答して、前記第２ロウアドレスに対応し且つ前記ページサイズ未満の第２データを含むページデータを前記第１バッファ回路に読み出し、
前記第１バッファ回路は、前記ページデータのうちの前記第２データのみを、前記第２バッファ回路において前記第１データ以外を保持する領域に転送し、
前記第２バッファ回路は前記第１、第２データを、前記第１ロウアドレスに対応するページに一括して書き込む
ことを特徴とする請求項３記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリシステムに関する。例えば、不揮発性の半導体メモリと、その動作を制御するカードコントローラとを備えたメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリにおいては、データは複数のメモリセルにつき一括して書き込まれる。この一括書き込みの単位はページと呼ばれる。近年のＮＡＮＤ型フラッシュメモリの大容量化に伴って、ページサイズは大きくなってきている。
【０００３】
しかし、ホスト機器からのアクセス単位は必ずしもページ単位であるとは限られない。例えば書き込み動作の場合、書き込みデータの終端位置がページ境界でない場合がある。そして、ホスト機器から連続したアドレスで再び書き込みアクセスがなされる可能性が高い。これは、ホスト機器が大きなデータを一度にフラッシュメモリに送ることが出来ず、複数回に分割してデータを書き込む等の理由からである。
【０００４】
この際、従来のＮＡＮＤ型フラッシュメモリでは、同一のカラム位置に対して２度書き込みを行うオーバーライトをしない限りは、同一ページに書き込みを行うことが一般的には許可されている。従って、このような場合には問題は生じない。
【０００５】
しかし、近年ではメモリセルの微細化や多値化に伴って、同一ページに複数回の書き込みを行うことが信頼性上問題となり、このような動作が禁止されているＮＡＮＤ型フラッシュメモリも増えてきている。
【０００６】
上記のようなホスト機器のアクセスを予測してＮＡＮＤ型フラッシュメモリの制御システムでは、連続する書き込みアクセスがページの終端位置でないところで終了する場合、そのページのデータを他のメモリブロックに書き込むことが行われている。メモリブロックとはメモリセルの集合であり、データの消去単位となる。この際、予め書き込み終了アドレスがホスト機器から通知されない場合や、ホスト機器からのデータ転送が何らかの理由により中断された場合には、ページサイズ分のデータをバッファに蓄積しておく技術が知られている（例えば特許文献１参照）。本方法の場合、最終的にデータサイズがページサイズに満たなかった場合には、別のメモリブロックに当該データを書き込む。
【０００７】
しかし本方法であると、最終的にデータサイズが確定するまでデータの書き込みを行うことができず、時間のロスになるという問題があった。
【特許文献１】特開２００６−０９２１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
この発明は、データの書き込み速度を向上出来るメモリシステムを提供する。
【課題を解決するための手段】
【０００９】
この発明の一態様に係るメモリシステムは、ページ単位でデータを一括して書き込み、前記ページを複数含み且つ各々がデータの消去単位となる複数のメモリブロックを備えた不揮発性半導体メモリと、前記不揮発性メモリに対して書き込みデータ及び第１ロウアドレスを転送し、且つ転送した前記第１ロウアドレスの変更命令と、該第１ロウアドレスとは異なる第２ロウアドレスとを発行するコントローラとを具備し、前記不揮発性半導体メモリは、前記変更命令が発行されない際には前記第１ロウアドレスに対応する前記ページに前記書き込みデータを書き込み、前記変更命令が発行された際には前記第２ロウアドレスに対応する前記ページに前記書き込みデータを書き込む。
【発明の効果】
【００１０】
本発明によれば、データの書き込み速度を向上出来るメモリシステムを提供出来る。
【発明を実施するための最良の形態】
【００１１】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１２】
［第１の実施形態］  
この発明の第１の実施形態に係るメモリシステムについて、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【００１３】
図示するようにメモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、バスインタフェース１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１４】
メモリカード１は、ホスト機器２とバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある）１１、フラッシュメモリチップ１１を制御するカードコントローラ１２、および複数の信号ピン（第１ピン乃至第９ピン）１３を備えている。
【００１５】
複数の信号ピン１３は、カードコントローラ１２と電気的に接続されている。複数の信号ピン１３における第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。
【００１６】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。第１ピンは、また、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖssに、第４ピンは電源電位Ｖddに、第５ピンはクロック信号に割り当てられている。
【００１７】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ１２と各種信号およびデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ１２にシリアルな信号として送出する。このとき、カードコントローラ１２は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１８】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ１２にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖss用の第３ピンとの間に配置されている。複数の信号ピン１３とそれに対するバスインタフェース１４は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１９】
これに対し、フラッシュメモリ１１とカードコントローラ１２との間の通信は、ＮＡＮＤ型フラッシュメモリ用のインタフェースによって行われる。したがって、ここでは図示しないが、フラッシュメモリ１１とカードコントローラ１２とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００２０】
例えば、カードコントローラ１２がフラッシュメモリ１１にデータを書き込む際には、カードコントローラ１２は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈをフラッシュメモリ１１に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤ型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【００２１】
また、ＮＡＮＤ型フラッシュメモリ用のインタフェースでは、フラッシュメモリ１１に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェースと、フラッシュメモリ１１とカードコントローラ１２とが通信するインタフェースとは異なる。
【００２２】
次に、図１に示すメモリカード１の備えるカードコントローラの内部構成について図３を用いて説明する。図３はカードコントローラ１２のブロック図である。
【００２３】
カードコントローラ１２は、フラッシュメモリ１１内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro processing unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read-only memory）２４、ＲＡＭ（Random access memory）２５、およびバッファ２６を有する。
【００２４】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行う。
【００２５】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２は、例えばメモリカード１が電源供給を受けたときに、ＲＯＭ２４に格納されているファームウェア（制御プログラム）をＲＡＭ２５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２５上に作成する。またＭＰＵ２２は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行したり、バッファ２６を通じたデータ転送処理を制御したりする。
【００２６】
ＲＯＭ２４は、ＭＰＵ２２により制御される制御プログラムなどを格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００２７】
バッファ２６は、ホスト機器２から送られてくるデータをフラッシュメモリ１１へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ１１から読み出されるデータをホスト機器２へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００２８】
次に、ＮＡＮＤ型フラッシュメモリ１１の内部構成について簡単に説明する。図４はＮＡＮＤ型フラッシュメモリ１１のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイ３０及びページバッファ３１を備えている。
【００２９】
メモリセルアレイ３０は、複数のメモリセルブロックＢＬＫ０〜ＢＬＫｎ（ｎは２以上の自然数）を含んでいる。なお以下ではメモリセルブロックＢＬＫ０〜ＢＬＫｎを単純にメモリブロックＢＬＫと呼ぶことがある。また、データの消去はメモリブロックＢＬＫ単位で行われる。すなわち、同一メモリセルブロックＢＬＫ内のデータは一括して消去される。メモリセルブロックＢＬＫの各々は、複数のメモリセルＭＣを備えている。各メモリセルは、フローティングゲートとコントロールゲートとを含む積層ゲートを備えたＭＯＳトランジスタである。またメモリセルブロックＢＬＫ内には、複数のワード線ＷＬ０、ＷＬ１、…（以下ワード線ＷＬと呼ぶ）と、ワード線ＷＬに直交するビット線ＢＬ０、ＢＬ１、…（以下ビット線ＢＬと呼ぶ）とが設けられている。そして、同一行にあるメモリセルＭＣは同一のワード線に共通接続されている。また、同一列にあるメモリセルＭＣは、複数のメモリセル単位でビット線ＢＬに共通接続されている。なお、データの書き込み及び読み出しは複数のメモリセルの集合毎に行われ、このメモリセルの集合を１ページと呼ぶ。なお、読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線ＷＬが選択され、カラムアドレスによっていずれかのビット線ＢＬが選択される。図４の例であると、フラッシュメモリ１１の各ページは、２１１２バイト（５１２バイト分のデータ記憶部×４＋１０バイト分の冗長部×４＋２４バイト分の管理データ記憶部）を有しており、各メモリブロックＢＬＫは例えば１２８ページを含んでいる。
【００３０】
ページバッファ３１は、フラッシュメモリ１１へのデータ入出力を行い、データを一時的に保持する。ページバッファ３１が保持可能なデータサイズは、各メモリブロックＢＬＫのページサイズと同じく２１１２バイト（２０４８バイト＋６４バイト）である。データ書き込みなどの際、ページバッファ１１は、フラッシュメモリ１１に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。なお、以下では説明の簡単化のために、冗長部及び管理データ記憶部については省略し、１ページのデータサイズが２０４８バイトであるとして説明を行う。
【００３１】
次に、上記構成のメモリシステムにおけるデータの書き込み方法について説明する。まず、図５を用いてカードコントローラ１２が主体となって行う処理について説明する。図５は、カードコントローラ１２における処理を示すフローチャートである。
【００３２】
図示するように、まずカードコントローラ１２はホスト機器２からデータの書き込み命令と、ＮＡＮＤ型フラッシュメモリ１１においてデータを書き込むべきアドレスとを受信する（ステップＳ１０）。引き続きカードコントローラ１２は、ホスト機器２から書き込みデータを受信する（ステップＳ１１）。そしてカードコントローラ１２は、フラッシュメモリ１１に対して第１書き込み命令、書き込みデータ、及びアドレスを出力する。フラッシュメモリ１１は、第１書き込み命令を受信することにより、書き込み動作が開始されることを認識する。ただし、実際にデータがメモリセルＭＣに書き込まれるのは、後述する第２書き込み命令が与えられた時点である。
【００３３】
次に、カードコントローラ１２のＭＣＵ２２は、ホスト機器２から書き込みアクセスの終了、または中断命令があるか否かを判定する（ステップＳ１３）。無い場合には（ステップＳ１３、ＮＯ）、ＭＣＵ２２は第２書き込み命令をフラッシュメモリ１１へ出力する（ステップＳ１４）。なお、中断命令がない場合で且つ書き込みデータがフラッシュメモリ１１のページサイズを満たしていない場合には、ステップＳ１４においてフラッシュメモリ１１はカードコントローラからページサイズ分のデータが転送されるのを待つ。そして、書き込みデータがページサイズに達した時点で、ＭＣＵ２２は第２書き込み命令をフラッシュメモリ１１に対して出力する。
【００３４】
ステップＳ１３において終了命令または中断命令が与えられていた場合には（ステップＳ１３、ＹＥＳ）、フラッシュメモリ１１に転送された書き込みデータが、フラッシュメモリ１１におけるページサイズを満たしているか否かを、ＭＣＵ２２が判定する（ステップＳ１５）。すなわち、書き込みデータのデータサイズが２０４８バイトであるかそれ未満であるかを判定する。満たしていた場合、つまりデータサイズが２０４８バイトであった場合には（ステップＳ１６、ＹＥＳ）、ＭＣＵ２２は第２書き込み命令をフラッシュメモリ１１へ出力する（ステップＳ１７）。満たしていない場合、つまりデータサイズが２０４８バイト未満であった場合には（ステップＳ１６、ＮＯ）、ＭＣＵ２２はロウアドレス変更命令と、新たなロウアドレスとを発行して、これをフラッシュメモリ１１へ出力する（ステップＳ１８）。そしてステップＳ１７の処理を行う。
【００３５】
以上の処理において、カードコントローラ１２からフラッシュメモリ１１へ与えられる信号につき図６を用いて説明する。図６は、カードコントローラ１２がフラッシュメモリ１１へ出力する信号のタイミングチャートであり、上段は終了または中断命令が無い場合（ステップＳ１３、ＮＯ）、若しくは書き込みデータがページサイズを満たしていた場合（ステップＳ１６、ＹＥＳ）に出力される信号である。また下段に示す信号は、書き込みデーがページサイズを満たしていなかった場合（ステップＳ１６、ＮＯ）に出力される信号である。
【００３６】
図示するように、いずれの場合もまず時刻ｔ０で第１書き込み命令が出力され、その後アドレス（ロウアドレス及びカラムアドレス）及び書き込みデータが、それぞれ時刻ｔ１、ｔ２で順次出力される。その後、終了または中断命令が無い場合、若しくは書き込みデータがページサイズを満たしていた場合には、時刻ｔ４で第２書き込み命令が出力されて、一連の信号の流れは終了する。他方、書き込みデータがページサイズを満たしていない場合には、ページサイズを満たしている場合に比べてデータ量が少ないので、時刻ｔ４よりも早い時刻ｔ３でデータの転送は終了する。そして書き込みデータに引き続いて、時刻ｔ４でロウアドレス変更命令が出力され、時刻ｔ５で新たなロウアドレスが出力される。その後、時刻ｔ６で第２書き込み命令が出力される。後者の場合、有効とされるロウアドレスは時刻ｔ１で出力されるロウアドレスでは無く、時刻ｔ５で出力される新たなロウアドレスである。そして新たなロウアドレスは、最初のロウアドレスが該当するメモリブロックＢＬＫとは異なるメモリブロックＢＬＫに該当するアドレスである。
【００３７】
次に図７を用いてＮＡＮＤ型フラッシュメモリ１１が主体となって行う処理について説明する。図７は、フラッシュメモリ１１における処理を示すフローチャートである。図示するように、まずフラッシュメモリ１１はカードコントローラ１２から第１書き込み命令、書き込みデータ、及びアドレスを受信する（ステップＳ２０）。そして、ロウアドレス変更命令及び新しいロウアドレスを受信しているか否かを判定する（ステップＳ２１）。ロウアドレス変更命令及び新しいロウアドレスを受信していない場合には（ステップＳ２２、ＮＯ）、カードコントローラ１２から第２書き込み命令を受信した後（ステップＳ２３）、ステップＳ２０で受信したロウアドレスとカラムアドレスで指定されるメモリセルＭＣにデータを書き込む（ステップＳ２４）。ステップＳ２２でロウアドレス変更命令を受信していた場合には（ステップＳ２２、ＹＥＳ）、第２書き込み命令を受信した後（ステップＳ２５）、ステップＳ２０で受信したカラムアドレスと、ロウアドレス変更命令の次に受信した新たなロウアドレスで指定されるメモリセルＭＣにデータを書き込む（ステップＳ２６）。
【００３８】
上記の書き込み動作の様子を、図８及び図９を用いて説明する。図８及び図９はメモリシステムのブロック図であり、図８は終了または中断命令が無い場合（ステップＳ１３、ＮＯ）、若しくは書き込みデータがページサイズを満たしていた場合（ステップＳ１６、ＹＥＳ）について示しており、図９は書き込みデータがページサイズを満たしていなかった場合（ステップＳ１６、ＮＯ）について示している。なお、図８及び図９においては、１ページのデータサイズが２０４８バイトであり、カードコントローラ１２は５１２バイト単位のデータをフラッシュメモリ１１へ転送する場合を示しており、図中において斜線で示した領域は書き込みデータを示す。
【００３９】
まず図８について説明する。図示するように、ホスト機器２から与えられる書き込みデータはカードコントローラ１２のバッファ２６に格納される。また、アドレスがカードコントローラ１２に与えられる。すると、カードコントローラ１２はバッファ２６内の書き込みデータを、ページバッファ３１へ転送する。図８では、それぞれが５１２バイトのデータサイズを有する４つのデータ、すなわち２０４８バイトの書き込みデータがページバッファ３１に転送されている様子を示している。また、カードコントローラ１２は上記ステップＳ１２においてロウアドレスを、フラッシュメモリ１１内のロウデコーダ３２へ転送する。ロウデコーダ３２は、ステップＳ１２で与えられたロウアドレスに基づいて、いずれかのワード線ＷＬを選択する。図８ではメモリブロックＢＬＫ０内のワード線ＷＬが選択される。そして、第２書き込み命令に応答して、ページバッファ３１内の書き込みデータが、ロウデコーダ３２によって選択されたワード線ＷＬに接続されるメモリセルＭＣに書き込まれる。
【００４０】
次に図９について説明する。図８では、それぞれが５１２バイトのデータサイズを有する４つのデータ、すなわち２０４８バイトの書き込みデータが、メモリブロックＢＬＫ０の２ページに順次書き込まれ、引き続き、連続したアドレスに対してそれぞれが５１２バイトのデータサイズを有する３つのデータ、すなわち、１５３６バイトの書き込みデータがメモリブロックＢＬＫ０に書き込まれるべく、ページバッファ３１に転送されている様子を示している。ここでは図８の場合と異なる点についてのみ説明する。ステップＳ１２においてフラッシュメモリ１１に与えられたロウアドレスは、メモリブロックＢＬＫ０におけるワード線ＷＬに相当していたと仮定する。カードコントローラ１２のＭＣＵ２２は、バッファ２６（すなわちページバッファ３１）内のデータがページサイズ未満（１５３６バイト＜２０４８バイト）であると判定した後、ロウアドレス変更命令をフラッシュメモリ１１へ出力し、更に新たなロウアドレスを発行してロウデコーダ３２へ出力する。この新たなロウアドレスは、メモリブロックＢＬＫ１内のワード線ＷＬに相当すると仮定する。するとロウデコーダ３２は、新たなロウアドレスに基づいて、メモリブロックＢＬＫ０ではなくメモリブロックＢＬＫ１内のワード線ＷＬを選択する。そして、第２書き込み命令に応答して、ページバッファ３１内の１５３６バイトの書き込みデータが、ロウデコーダ３２によって選択されたワード線ＷＬに接続されるメモリセルＭＣに書き込まれる。
【００４１】
上記構成のメモリシステムであると、下記の効果が得られる。  
（１）データの書き込み速度を向上出来る。  
本実施形態に係るメモリシステムであると、ページバッファ３１内のデータがページサイズよりも小さい場合には、それまでにデータを書き込んでいたメモリブロックＢＬＫとは異なるメモリブロックＢＬＫに書き込んでいる。すなわち、ページバッファ内のデータがページサイズに達するまで書き込み動作を待つ必要が無い。従って、書き込み速度を向上出来る。
【００４２】
また本実施形態に係るメモリシステムであると、カードコントローラ１２はロウアドレス変更命令と、新たなロウアドレスとを発行する。そしてフラッシュメモリ１１は、ロウアドレス変更命令が与えられた際には、新たなロウアドレスに基づいてメモリセルアレイ３０のロウ方向を選択する。従って、ページバッファ３１に転送したデータを異なるメモリブロックＢＬＫに高速に書き込むことが出来る。
【００４３】
この点、カードコントローラ１２がロウアドレス変更命令を有しない場合には、ページバッファ３１内のデータを異なるメモリブロックＢＬＫに書き込もうとすると、カードコントローラからページバッファへの再度のデータの転送をしなければならない。具体的に説明すると、ロウアドレスを変更する場合には、まず書き込み命令をキャンセルするためにカードコントローラはリセット命令を出力する。次に第１書き込み命令を発行して、新たなロウアドレスを指定する。次にカードコントローラはページバッファへデータを再入力する。最後に第２書き込み命令を発行する。このように、ページバッファへの再度の転送が必要となり、これが時間のロスとなる。本実施形態であると、データの再転送が不要となるため、データの書き込み速度を向上出来る。
【００４４】
次に、この発明の第２の実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１の実施形態に係る構成において、１ページ未満のデータサイズを有する複数のデータを集約して１ページを構成する（これを以下データの集約と呼ぶ）方法に関するものである。図１０は、本実施形態に係るメモリシステムにおける、データの集約方法のフローチャートである。なお、本実施形態に係るＮＡＮＤ型フラッシュメモリ１１は、第１の実施形態で説明した図８及び図９に示す構成において、更にデータキャッシュを備えている。データキャッシュはページバッファと同じくページ単位のデータを一時的に保持する。
【００４５】
図示するように、まずカードコントローラ１２のＭＣＵ２２は読み出し命令をフラッシュメモリ１１へ出力する（ステップＳ３０）。この読み出し命令は、通常の単なるデータを読み出す旨の命令では無く、データの集約命令の一部としての読み出し命令であっても良い。読み出し命令とともに、カードコントローラ１２からアドレスがフラッシュメモリ１１へ与えられる。次にフラッシュメモリ１１は、ステップＳ３０で与えられたアドレスに対応するページを選択して、データをページ単位でデータバッファへ読み出す（ステップＳ３１）。その後、ページバッファへ読み出されたデータはデータキャッシュへと転送される（ステップＳ３２）。引き続きデータキャッシュへ転送されたデータは、カードコントローラ１２のバッファ２６へ転送される（ステップＳ３３）。
【００４６】
上記ステップＳ３０乃至Ｓ３３の様子を図１１に示す。図１１はカードコントローラ１２及びフラッシュメモリ１１のブロック図である。図示するように、メモリブロックＢＬＫ０には２ページ分のデータサイズ、すなわち４０９６バイトのデータサイズを有するデータＤ１が保持され、メモリブロックＢＬＫ１にはページサイズ未満のデータサイズ、例えば１５３６バイトのデータサイズを有するデータＤ２が保持され、メモリブロックＢＬＫｎにはページサイズ未満のデータサイズ、例えば５１２バイトのデータサイズを有するデータＤ３が保持される。このような構成において、１５３６バイトのデータＤ２と５１２バイトのデータＤ３とを集約して、２０４８バイト、すなわち１ページのサイズを有するデータとして、メモリブロックＢＬＫ０に書き写す場合を例に説明する。
【００４７】
図示するように、カードコントローラ１２から読み出し命令が与えられると、ロウデコーダ３２は例えばメモリブロックＢＬＫ１のいずれかのワード線ＷＬを選択する。その結果、ページバッファ３１には、データＤ２が含まれるページのデータが、ページ単位で読み出される。ページ単位で読み出されたデータを、以下ページデータと呼ぶことがある。この時点で読み出されたページデータは、１５３６バイトのデータＤ２以外に、（２０４８−１５３６）＝５１２バイトの不要なデータが含まれる。引き続き、データバッファに読み出されたページデータのうちのデータＤ２は、データキャッシュ３３へと転送され、更にバッファ２６へと転送される。
【００４８】
図１０に戻って説明を続ける。ステップＳ３３の後、カードコントローラ１２のＭＣＵ２２は、バッファ２６に転送されたデータＤ２についてエラー検出を行い、エラーが検出された場合にはエラー訂正を行う。更にフラッシュメモリ１１は、カードコントローラ１２がエラー検出及びエラー訂正を行っている間に、ステップＳ３１とは異なるデータをページ単位でページバッファ３１へ読み出す（ステップＳ３４）。
【００４９】
上記ステップＳ３４の様子を図１２に示す。図示するように、ロウデコーダ３２は例えばメモリブロックＢＬＫｎのいずれかのワード線ＷＬを選択する。その結果、ページバッファ３１には、５１２バイトのデータＤ３が含まれるページのデータが、ページ単位で読み出される。なお、ステップＳ３４で選択されるワード線ＷＬに対応するロウアドレスは、ステップＳ３０で与えられても良いし、カードコントローラ１２がエラー検出及びエラー訂正を行う前のいずれかの時点で与えられる。この際、データＤ２と集約して１ページ分のデータサイズとするために、いずれのデータ（ここではデータＤ３）を読み出すのが適切であるかは、カードコントローラ１２が判断する。すなわち、カードコントローラ１２はいずれの領域のどのようなデータが格納されているかをテーブルとして保持しているので、このテーブルを参照して、適切なデータを選択する。また、図１２の例ではメモリブロックＢＬＫ０とは異なるメモリブロックＢＬＫｎからデータを読み出しているが、同一のメモリブロックＢＬＫ０内の別のページから読み出しても良い。
【００５０】
図１０に戻って説明を続ける。ステップＳ３４の後、フラッシュメモリはステップＳ３４においてページバッファ３１に読み出されたデータのうち、必要なデータのみをデータキャッシュ３３へと転送する（ステップＳ３５）。この際、データキャッシュ３３にはステップＳ３２において転送された、ページサイズ未満のデータが保持されている。つまり、データキャッシュ３３には空き領域がある。言い換えれば、ステップＳ３２ではページ単位でデータが読み出されるから、必要なデータ以外に、このデータと同一ページにある不要なデータもデータキャッシュ３３には保持されている。同じくステップＳ３４でもデータはページ単位で読み出されるので、不要なデータも一緒にデータバッファに読み出される。そこでステップＳ３５では、ステップＳ３４で読み出されたページ単位のデータのうち、必要なデータのみを、データキャッシュ３３において不要なデータが保持されている領域に転送する。その結果、データキャッシュ３３には、ステップＳ３２で読み出されたページサイズ未満のデータと、ステップＳ３４で読み出されたページサイズ未満のデータとが保持され、両者を併せてちょうど１ページと同じデータサイズとなる（ステップＳ３６）。すなわち、２つのデータがページサイズに集約される。その後、ステップＳ３５でデータキャッシュ３３に転送されたデータが、メモリコントローラ１２のバッファ２６に転送される（ステップＳ３７）。そしてＭＣＵ２２がエラー検出及びエラー訂正を行う（ステップＳ３８）。
【００５１】
上記ステップＳ３５乃至Ｓ３８の様子を図１３に示す。図示するように、データバッファ３１に読み出されたデータＤ３を含むページデータのうち、必要であるデータＤ３のみが、データキャッシュ３３に転送される。すなわち、データキャッシュ３３には１５３６バイトのデータＤ３が保持されているから、残りの５１２バイト分の空き領域がある。従って、この空き領域に、５１２バイトのデータＤ３が転送される。その結果、データキャッシュ３３にはデータＤ２とデータＤ３とが保持され、データＤ２とデータＤ３とを合わせたデータサイズは、ちょうど１ページのデータサイズ２０４８バイトとなる。そして、データキャッシュ３３内のデータＤ３はバッファ２６へと転送される。
【００５２】
再び図１０に戻って説明を続ける。ステップＳ３８の後、ＭＣＵ２２はいずれかのデータにおいてエラーを検出し、検出したエラーを訂正した場合には（ステップＳ３９、ＹＥＳ）、訂正済みのデータをデータキャッシュ３３へ転送する（ステップＳ４０）。この際、ＭＣＵ２２は訂正済みのデータのみをデータキャッシュ３３へと転送し、訂正前のデータと置き換える。そして、フラッシュメモリ１１はデータキャッシュ３３に保持されるデータを、ページ単位でメモリセルＭＣへ書き込む（ステップＳ４１）。
【００５３】
上記ステップＳ３９乃至Ｓ４１の様子を図１４に示す。図示するように、データの訂正があった場合には、データキャッシュ３３内のデータが訂正後のデータに置き換えられる。そして、データキャッシュ３３内のデータ（データＤ２とデータＤ３とが集約された２０４８バイトのデータ）がデータバッファ３３へ転送され、更にメモリセルアレイ３０に書き込まれる。すなわち、ロウデコーダ３２は、メモリブロックＢＬＫ０において、データＤ１に連続したアドレスに対応するワード線ＷＬを選択する。これにより、データＤ２、Ｄ３がメモリブロックＢＬＫ０の同一ページ内に書き込まれる。なお、ロウデコーダ３２がワード線ＷＬを選択するためのロウアドレスは、ステップＳ４１においてカードコントローラ１２からロウデコーダ３２に与えられていても良いし、ステップＳ３０またはステップＳ４０において与えられても良い。
【００５４】
上記のようなメモリシステムであると、下記の（２）の効果が得られる。  
（２）ページサイズ未満のデータの集約を簡便にし、高速化出来る。  
本実施形態に係るメモリシステムでは、ページバッファ３１とデータキャッシュ３３との間で、ページ単位未満の単位でデータの授受を行っている。従って、データの集約を簡便にし、データの集約速度を高速化出来る。
【００５５】
パージバッファとデータキャッシュとの間のデータの授受は、ページサイズ単位で行われるのが一般的であった。しかしこの方法であると、ページサイズ未満のデータを１ページに集約する処理は、カードコントローラ１２におけるバッファ２６で行う必要があった。また、例えば２回の読み出し動作で読み出された２つのデータを集約する場合には、データキャッシュは後に読み出されたデータを保持し、先に読み出されたデータは保持出来ない。従って、読み出したデータにおける誤りの有無にかかわらず、集約後のデータは、カードコントローラ１２のバッファ２６からデータキャッシュ３３に転送されなければならない。この転送が、集約処理において時間のロスとなる。
【００５６】
しかし本実施形態であると、ページバッファ３１とデータキャッシュ３３との間で、ページ単位未満の単位でデータの授受を行っている。すなわち、データキャッシュ３３上で複数のデータを１ページに集約出来る。従って、データに誤りがあった場合には、訂正済みのデータをバッファ２６からデータキャッシュ３３へ転送する必要があるが、誤りが無かった場合には転送は不要である。従って、データの集約処理を簡便にし、高速化出来る。
【００５７】
次に、この発明の第３の実施形態に係るメモリシステムについて説明する。本実施形態は、上記第２の実施形態に係る方法をデータの書き込み時に適用したものである。すなわち、データの書き込み時に書き込みデータがページサイズ未満のデータサイズであった場合に、データの集約を行うことにより書き込むべきデータをページサイズにする方法に関するものである。まず、図１５を用いてカードコントローラ１２が主体となって行う処理について説明する。図１５は、カードコントローラ１２における処理を示すフローチャートである。
【００５８】
図示するように、ステップＳ１０乃至Ｓ１７の処理は上記第１の実施形態と同様であるので説明は省略する。ステップＳ１５の判定の結果、書き込みデータのデータサイズがページサイズ未満であった場合（ステップＳ１６、ＮＯ）、カードコントローラ１２のＭＣＵ２２は書き込みキャンセル命令をフラッシュメモリ１１へ出力する（ステップＳ５０）。書き込みキャンセル命令とは、フラッシュメモリ１１に対して以後の書き込み動作を中止させる命令である。引き続きＭＣＵ２２は、フラッシュメモリ１１へデータの読み出し命令を出力する（ステップＳ５１）。読み出し命令とともに、読み出すべきデータのアドレスも、ＭＣＵ２２からフラッシュメモリ１１へ与えられる。ステップＳ５１で読み出すべきデータは、ステップＳ１５、Ｓ１６においてページサイズに満たないと判定された書き込みデータと集約することにより、ちょうど１ページサイズとなるデータである。
【００５９】
そして、フラッシュメモリ１１においてデータが読み出されると、その読み出しデータについてＭＣＵ２２はエラー検出及びエラー訂正を行う（ステップＳ５２）。その後、エラー訂正を行ったデータのみをフラッシュメモリ１１へ転送し、更にフラッシュメモリ１１に対して、データキャッシュ３３内のデータの書き込みを命令する（ステップＳ５３）。
【００６０】
次に図１６を用いてＮＡＮＤ型フラッシュメモリ１１が主体となって行う処理について説明する。本実施形態では、上記ステップＳ５０において書き込みキャンセル命令が出力された際の動作について説明する。その他の動作は第１の実施形態と同様である。図１６は、フラッシュメモリ１１における処理を示すフローチャートである。
【００６１】
図示するように、まずフラッシュメモリ１１はカードコントローラ１２から書き込みキャンセル命令を受信する（ステップＳ６０）。書き込みキャンセル命令を受信すると、フラッシュメモリ１１はデータの書き込みを中止し、データキャッシュ３３内のデータをそのまま保持する（ステップＳ６１）。そして、カードコントローラ１２からステップＳ５１において与えられる読み出し命令に基づいて、データをページ単位でページバッファ３１へ読み出す（ステップＳ６２）。そして、ページバッファ３１に読み出されたデータのうち、必要なデータのみをデータキャッシュ３３へと転送する（ステップＳ３５）。その結果、データキャッシュ３３には、ページサイズ未満の書き込みデータと、ステップＳ６２で読み出されたページサイズ未満のデータとが保持され、両者を併せてちょうど１ページと同じデータサイズとなる（ステップＳ３６）。すなわち、２つのデータがページサイズに集約される。その後、ステップＳ３５でデータキャッシュ３３に転送されたデータが、メモリコントローラ１２のバッファ２６に転送される（ステップＳ３７）。ステップＳ３５乃至Ｓ３７の処理は、第２の実施形態で説明したとおりである。
【００６２】
その後、データに関して誤り訂正がある場合には、ＭＣＵ２２から訂正後のデータを受信（ステップＳ６３）した後、データキャッシュ３３内のデータを当初のロウアドレスに対応するページに書き込む（ステップＳ４１）。
【００６３】
上記の書き込み動作の様子を、図１７乃至図１９を用いて説明する。図１７はメモリシステムのブロック図であり、図１８及び図１９はメモリカードのブロック図である。なお、図１７乃至図１９においては、１ページのデータサイズが２０４８バイトであり、カードコントローラ１２は５１２バイト単位のデータをフラッシュメモリ１１へ転送する場合を示しており、図中において斜線で示した領域は書き込みデータを示す。図１７に示すように、メモリブロックＢＬＫｎにはページサイズ未満のデータサイズ、例えば５１２バイトのデータサイズのデータＤ４が書き込まれている状況において、２ページ分のデータサイズ（２０４８×２＝４０９６バイト）を有するデータＤ５及びページサイズ未満のデータサイズ、例えば１５３６バイトのデータＤ６が順次メモリブロックＢＬＫ０に書き込まれる場合を仮定する。そして、データＤ５は既にメモリブロックＢＬＫ０に書き込まれ、データＤ５に連続したアドレスにデータＤ６が書き込まれる場合を考える。
【００６４】
まず図１７に示すように、データＤ６はページサイズ未満であるので、ＭＣＵ２２は書き込みキャンセル命令をフラッシュメモリ１１へ出力する。すると、フラッシュメモリ１１のロウデコーダ３２はワード線ＷＬの非選択とし、データキャッシュ３３に転送済みのデータＤ６のメモリブロックＢＬＫ０への書き込み動作が中止される。
【００６５】
次に図１８に示すように、ＭＣＵ２２はフラッシュメモリ１１に対して例えばメモリブロックＢＬＫｎからデータＤ４の読み出し命令とアドレスとを出力する。これに応答してフラッシュメモリ１１は、メモリブロックＢＬＫｎからデータＤ４が含まれるページのデータをページ単位でデータバッファ３１へ読み出す。また、データバッファ３１に読み出したページデータのうち、５１２バイトのデータサイズのデータＤ４のみをデータキャッシュ３３に転送する。この際、データキャッシュ３３には１５３６バイトのデータＤ６が保持されているから、残りの５１２バイト分の空き領域がある。従って、この空き領域に、５１２バイトのデータＤ４が転送される。その結果、データキャッシュ３３ではデータＤ６とデータＤ４とが集約されて、あわせてちょうど１ページのデータサイズとなる。更にデータキャッシュ３３内のデータＤ４は、カードコントローラ１２のバッファ２６に転送されて、誤り検出及び誤り訂正が行われる。
【００６６】
その後図１９に示すように、誤り訂正が行われた場合には訂正済みのデータがデータキャッシュ３３に上書きされて、データキャッシュ３３に保持されるデータＤ６とデータＤ４とが、メモリブロックＢＬＫ０における同一ページ内に書き込まれる。データＤ４とデータＤ６とが書き込まれるページは、当初データＤ６が書き込まれるべきであった、データＤ５に連続したアドレスに対応する領域である。
【００６７】
上記構成のメモリシステムであると、第２の実施形態で説明した（２）の効果に加えて、下記の（３）の効果が得られる。  
（３）データの集約処理を効率化出来る。  
本実施形態に係るメモリシステムであると、ページバッファ３１とデータキャッシュ３３との間におけるページ単位未満の単位でのデータの授受を利用して、データの書き込み時にデータの集約を行っている。データの集約処理を効率的に行うことが出来る。
【００６８】
上記のように、この発明の第１乃至第３の実施形態に係る構成であると、ＮＡＮＤ型フラッシュメモリの動作速度を向上出来る。なお、上記第２、第３の実施形態においてデータの集約を行う際に、いずれのデータを読み出して集約すればちょうど１ページ分のデータサイズになるか、という情報は、カードコントローラ１２自身が例えばＲＡＭ２５などにテーブルとして保持している。すなわち、カードコントローラ１２はどのアドレスにどのようなデータサイズのデータが書き込まれているかを把握しているので、そのうちのいずれか適切なものを選択して読み出し命令を出せば良い。
【００６９】
更に、上記第２、第３の実施形態は、ファイルシステムに応用することでより顕著な効果か得られる。以下、ファイルシステムについて簡単に説明する。ファイルシステムとは、メモリに記録されているファイル（データ）を管理する方式のことである。以下ではＦＡＴ（File Allocation Table）ファイルシステムを例に挙げて説明する。ファイルシステムにおいては、メモリにおけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。図２０は、上記実施形態に係るＮＡＮＤ型フラッシュメモリ１１のメモリ空間の概念図である。
【００７０】
図示するようにメモリ空間は、おおまかにはユーザデータ領域４０及び管理領域４１に分けられる。ユーザデータ領域４０は、ユーザによって書き込まれる正味のデータを格納する領域である。
【００７１】
管理領域４１は、例えばブート領域４２、パーティション情報領域４３、ＦＡＴ１（４４）、及びＦＡＴ２（４５）、及びルートディレクトリエントリ領域４６を含んでいる。ブート領域４２は、例えばブート情報を記憶する。パーティション情報領域４３はパーティション情報を記憶する。ＦＡＴ１及びＦＡＴ２は、データがいずれのアドレスに記憶されているかを記憶する。以下、ＦＡＴ１、ＦＡＴ２について簡単に説明する。
【００７２】
ユーザデータ領域４０は、クラスタと呼ばれる複数の領域を含んでいる。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データが書き込まれるクラスタは連続しない場合がある。すなわち、１つのデータが場所的に離れたクラスタに書き込まれる。この際に、データがどのクラスタに分割されて書き込まれたかを管理するための管理データが、ＦＡＴ１、ＦＡＴ２に記憶される。
【００７３】
ルートディレクトリエントリ領域４６は、ルートディレクトリエントリの情報を記憶する。そして、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、ＦＡＴ１、ＦＡＴ２に示されたどのクラスタがファイルの先頭クラスタであるかを示すフラグを記憶する。
【００７４】
上記管理領域内の各データ（以下管理データと呼ぶ）、特にＦＡＴ１、ＦＡＴ２は、頻繁に更新が行われるデータであり、且つそのデータサイズは小さく、１ページに満たないデータサイズであることが通常である。ＮＡＮＤ型フラッシュメモリではデータの上書きが禁止されているため、このように頻繁に更新されるデータは、いずれかの消去メモリブロック（これをキャッシュブロックと呼ぶ）に一時的に書き込まれる。そして、データが更新される度に、キャッシュブロックに順次書き込まれていく。そして所定のタイミングにて、キャッシュブロック内の最新のデータが、別のメモリブロックに書き写される（これをキャッシュの撤収と呼ぶ）。このキャッシュの撤収の高速化の観点からも、上記実施形態に係る方法を用いることが望ましい。この点につき、以下説明する。
【００７５】
図２１はメモリブロックＢＬＫ０の概念図である。図示するようにメモリブロックＢＬＫ０は１２８ページを備え、各ページにおける５１２バイト単位毎にアドレス“０００”、“００１”、“００２”、…“１ＦＦ”が割り当てられているとする。このメモリブロックＢＬＫ０に対して、５回の書き込みＡ〜Ｅが行われた場合を考える。書き込みＡは、アドレス“０００”に対する５１２バイトのデータの書き込みである。書き込みＢは、アドレス“００５”に対する１０２４バイトのデータの書き込みである。書き込みＣは、アドレス“０３Ｆ”に対する２０４８バイトのデータの書き込みである。書き込みＤは、アドレス“０００”に対する１０２４バイトのデータの書き込みである。書き込みＥは、アドレス“００３”に対する１０２４バイトのデータの書き込みである。これらの書き込みデータは例えば管理データなどの頻繁に更新のあるデータであって、まずキャッシュブロックに書き込まれるものと仮定する。
【００７６】
まず、従来方法によるキャッシュの撤収について図２２を用いて説明する。図２２はキャッシュブロックとメモリブロックＢＬＫ０の概念図であり、キャッシュの撤収の様子を示している。
【００７７】
まず、書き込みＡがキャッシュブロックのページ１において行われる。次に、書き込みＢがキャッシュブロックのページ２において行われる。次に、書き込みＣがキャッシュブロックのページ３、４にまたがって行われる。引き続き、書き込みＤがキャッシュブロックのページ６において行われる。
【００７８】
その後、キャッシュの撤収が行われる。まず、アドレス“０００”に書き込まれるべきデータは、書き込みＤにおいて書き込まれたデータである。すなわち、書き込みＡで書き込まれたデータは書き込みＤにおけるデータに上書きされたことになり、不要となる。従って、まずキャッシュブロックのページ５からデータを読み出す。次に、メモリブロックＢＬＫ０のアドレス“００２”には更新がなされなかったので、もとのデータをそのまま使用するために、メモリブロックＢＬＫ０のアドレス“００２”のデータを読み出す。更に、アドレス“００３”のデータは書き込みＥにおいて書き込まれたデータであるので、キャッシュブロックのページ６からデータを読み出す。以上の３回のデータの読み出しの結果、メモリブロックＢＬＫ０のページ１に書き込むべきデータが集約される。
【００７９】
次に、上記実施形態を適用した場合のキャッシュの撤収について図２３を用いて説明する。図２３はキャッシュブロックとメモリブロックＢＬＫ０の概念図であり、キャッシュの撤収の様子を示している。
【００８０】
まず、従来と同様に、書き込みＡがキャッシュブロックのページ１において行われる。次に、書き込みＢがキャッシュブロックのページ２において行われる。次に、書き込みＣがキャッシュブロックのページ３、４にまたがって行われる。引き続き、書き込みＤがキャッシュブロックのページ６において行われる。この書き込み動作時に従来方法と異なるのは、キャッシュブロックへの書き込みが、メモリブロックＢＬＫ０内のデータと集約された１ページサイズのデータとして行われる点である。
【００８１】
すなわち、ページ１への書き込みの際には、書き込みＡで与えられる５１２バイトのデータと、メモリブロックＢＬＫ０からアドレス“００１”〜“００３”の１５３６バイトのデータとが集約されて、ページ１に書き込まれる。ページ２以降への書き込みの際も同様である。ページ６への書き込みの際には、書き込みＥで与えられる５１２バイトのデータと、キャッシュブロックからのデータＤとアドレス“００２”のデータとが集約される。
【００８２】
その後、キャッシュの撤収が行われる。メモリブロックＢＬＫ０のページ１に対応するデータは、キャッシュブロックのページ１、５、６に保持されている。このうち、最新のデータを保持しているページ６が読み出され、メモリブロックＢＬＫ０のページ１に書き込まれる。また、キャッシュブロックのページ２のデータが、メモリブロックＢＬＫ０のページ２に書き写される。
【００８３】
つまり、本実施形態を用いた場合には、キャッシュブロックにデータを書き込む時点で、書き込みデータと、もとのメモリブロック内の他のデータとを集約して１ページサイズのデータとし、このデータをキャッシュブロックに書き込んでいる。従って、キャッシュの撤収時には、ページ単位でデータが更新される。従って、キャッシュの撤収時における読み出し動作は、１ページあたり１回で済み、キャッシュの撤収を高速化出来る。
【００８４】
また、メモリブロックＢＬＫ０とキャッシュブロックとの対応は、図２２の場合には５１２バイトの領域毎に対応を取らねばならず、その情報量は膨大である。しかし上記実施形態を適用した図２３の場合にはページ単位で対応を取れば良く、対応情報を少なくすることが出来る。
【００８５】
更に、上記キャッシュの撤収や対応関係の点のみならず、ホスト機器からの読み出しの観点からも、上記方法が好ましい。つまり、ＦＡＴの更新等、ファイルシステムの操作を効率的に行うためには、ホスト機器では、データをある程度まとめて予め読み込んでおくことが一般的に行われている。すなわち、フラッシュメモリにおいてはＦＡＴ領域などにおいて、データサイズの小さいランダムな書き込みが発生するとともに、これらをまとめて一定の大きなデータ量での読み出しが発生することがある。このような場合においても、本実施形態に係る方法であると、データサイズの小さいデータがページ単位でまとまっているため、動作速度を向上させることが出来る。
【００８６】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【００８７】
【図１】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図２】この発明の第１の実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】この発明の第１の実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図４】この発明の第１の実施形態に係るフラッシュメモリのブロック図。
【図５】この発明の第１の実施形態に係るフラッシュメモリのデータ書き込み方法を示すフローチャートであり、カードコントローラにおける処理を示す図。
【図６】この発明の第１の実施形態に係るフラッシュメモリのカードコントローラが出力する信号のタイミングチャート。
【図７】この発明の第１の実施形態に係るフラッシュメモリのデータ書き込み方法を示すフローチャートであり、ＮＡＮＤ型フラッシュメモリにおける処理を示す図。
【図８】この発明の第１の実施形態に係るメモリシステムのブロック図であり、データの書き込み時の様子を示す図。
【図９】この発明の第１の実施形態に係るメモリシステムのブロック図であり、データの書き込み時の様子を示す図。
【図１０】この発明の第２の実施形態に係るフラッシュメモリのデータ書き込み方法を示すフローチャート。
【図１１】この発明の第２の実施形態に係るメモリシステムのブロック図であり、データの集約時の様子を示す図。
【図１２】この発明の第２の実施形態に係るメモリシステムのブロック図であり、データの集約時の様子を示す図。
【図１３】この発明の第２の実施形態に係るメモリシステムのブロック図であり、データの集約時の様子を示す図。
【図１４】この発明の第２の実施形態に係るメモリシステムのブロック図であり、データの集約時の様子を示す図。
【図１５】この発明の第３の実施形態に係るフラッシュメモリのデータ集約方法を示すフローチャートであり、カードコントローラにおける処理を示す図。
【図１６】この発明の第３の実施形態に係るフラッシュメモリのデータ書き込み方法を示すフローチャートであり、ＮＡＮＤ型フラッシュメモリにおける処理を示す図。
【図１７】この発明の第３の実施形態に係るメモリシステムのブロック図であり、データの集約時の様子を示す図。
【図１８】この発明の第３の実施形態に係るメモリカードのブロック図であり、データの集約時の様子を示す図。
【図１９】この発明の第３の実施形態に係るメモリカードのブロック図であり、データの集約時の様子を示す図。
【図２０】この発明の第２、第３の実施形態に係るメモリシステムの備えるＮＡＮＤ型フラッシュメモリのメモリ空間を示す概念図。
【図２１】フラッシュメモリのブロック図。
【図２２】フラッシュメモリのブロック図であり、データの集約の様子を示す図。
【図２３】この発明の第２、第３の実施形態の変形例に係るフラッシュメモリのブロック図であり、データの集約の様子を示す図。
【符号の説明】
【００８８】
１…メモリカード、２…ホスト機器、１１、１１−１〜１１−４…ＮＡＮＤ型フラッシュメモリ、１２…カードコントローラ、１３…信号ピン、２１…ホストインタフェースモジュール、２２…ＭＰＵ、２３…フラッシュコントローラ、２４…ＲＯＭ、２５…ＲＡＭ、２６…バッファ、３０…メモリセルアレイ、３１…ページバッファ、３２…ロウデコーダ、３３…データキャッシュ、４０…ユーザデータ領域、４１…管理領域、４２…ブート領域、４３…パーティション情報、４４、４５…ＦＡＴ、４６…ルートディレクトリエントリ
【図１】
2008009942.tif 000003
【図２】
2008009942.tif 000004
【図３】
2008009942.tif 000005
【図４】
2008009942.tif 000006
【図５】
2008009942.tif 000007
【図６】
2008009942.tif 000008
【図７】
2008009942.tif 000009
【図８】
2008009942.tif 000010
【図９】
2008009942.tif 000011
【図１０】
2008009942.tif 000012
【図１１】
2008009942.tif 000013
【図１２】
2008009942.tif 000014
【図１３】
2008009942.tif 000015
【図１４】
2008009942.tif 000016
【図１５】
2008009942.tif 000017
【図１６】
2008009942.tif 000018
【図１７】
2008009942.tif 000019
【図１８】
2008009942.tif 000020
【図１９】
2008009942.tif 000021
【図２０】
2008009942.tif 000022
【図２１】
2008009942.tif 000023
【図２２】
2008009942.tif 000024
【図２３】
2008009942.tif 000025