(57)【要約】【課題】データの書き込み速度を向上出来る半導体装置を提供すること。【解決手段】２ビット以上のデータを保持可能な第１メモリブロックＢＬＫ１と、１ビットのデータを保持可能な第２メモリブロックＢＬＫ２とを有し、ページ単位でデータをプログラム可能な不揮発性半導体メモリ１１と、前記不揮発性半導体メモリ１１にデータのプログラムを命令するコントローラ１２とを具備し、前記第１メモリブロックＢＬＫ１において前記ページは前記データのビット毎に割り当てられ、且つビット毎に書き込みに要する時間が異なり、書き込みデータの最終ページが前記書き込みに要する時間の最も長いビットに相当する場合、前記コントローラ１２は前記不揮発性半導体メモリ１１に対して、前記第２メモリブロックのいずれかのページにプログラムを実行するよう命令する。【選択図】図８
2010044620.tif 000002
【特許請求の範囲】
【請求項１】
２ビット以上のデータを保持可能な複数のメモリセルを備えた第１メモリブロックと、１ビットのデータを保持可能な複数のメモリセルを備えた第２メモリブロックとを有し、前記第１、第２メモリブロックに対して複数の前記メモリセルの集合であるページ単位でデータをプログラム可能な不揮発性半導体メモリと、
ホスト機器から受信した書き込みデータを前記不揮発性半導体メモリへ供給し、前記第１メモリブロックまたは第２メモリブロックへの前記書き込みデータのプログラムを、前記ページ毎に前記不揮発性半導体メモリに命令するコントローラと
を具備し、前記第１メモリブロックにおいて前記ページは、保持可能な前記データのビット毎に割り当てられ、且つビット毎に書き込みに要する時間が異なり、
前記書き込みデータの最終ページが、前記書き込みに要する時間の最も長いビットに相当する場合、前記コントローラは前記不揮発性半導体メモリに対して、当該データについてのプログラムを前記第２メモリブロックのいずれかのページに実行するよう命令する
ことを特徴とする半導体装置。
【請求項２】
前記コントローラは、前記ページ単位のデータ及び前記第１メモリブロック内のいずれかのページを指定する第１ロウアドレスを、前記不揮発性半導体メモリに対して転送可能とされ、且つ転送した前記第１ロウアドレスの変更命令と、前記第２メモリブロック内のいずれかのページを指定する第２ロウアドレスとを発行可能とされ、
前記コントローラは、前記最終ページに相当する前記第１ロウアドレスが、前記書き込みに要する時間の最も長いビットに相当する場合、前記データ及び前記第１ロウアドレスの転送に引き続き、前記変更命令及び前記第２ロウアドレスを発行して前記不揮発性半導体メモリへ供給し、
前記不揮発性半導体メモリは、前記変更命令が発行されない際には前記第１ロウアドレスに対応する第１ページに対して前記プログラムを実行し、前記変更命令が発行された際には前記第２ロウアドレスに対応する第２ページに対して前記プログラムを実行する
ことを特徴とする請求項１記載の半導体装置。
【請求項３】
前記不揮発性半導体メモリは、前記第２ページに前記プログラムを実行した後、当該第２ページにプログラムされたデータを、前記第１ページにコピーする
ことを特徴とする請求項２記載の半導体装置。
【請求項４】
前記不揮発性半導体メモリは、前記ページ単位で前記コントローラとの間のデータの授受を可能とされ、且つ１ページ分のデータを保持可能なバッファ回路を更に備え、
プログラム時において、前記コントローラから前記バッファ回路に転送されたデータが、前記メモリセルにプログラムされ、
前記不揮発性半導体メモリは、前記第２ページの前記データを前記第１ロウアドレスに相当するページにコピーする際、前記第２ページにプログラムを実行する際に前記バッファ回路に転送されたデータを用いて、前記第１ページに対するプログラムを実行する
ことを特徴とする請求項３記載の半導体装置。
【請求項５】
前記不揮発性半導体メモリと前記コントローラとの間を接続する第１バスを更に備え、
前記第１バスのバス幅は、前記コントローラと前記ホスト機器との間を接続する第２バスのバス幅よりも大きい
ことを特徴とする請求項１記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は半導体装置に関する。例えば、不揮発性の半導体メモリと、その動作を制御するコントローラとを備えたメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリにおいては、データは複数のメモリセルにつき一括して書き込まれる。この一括書き込みの単位はページと呼ばれる（例えば特許文献１参照）。そして近年のＮＡＮＤ型フラッシュメモリの大容量化に伴って、ページサイズは大きくなってきている。そのためＮＡＮＤ型フラッシュメモリは、サイズの大きいデータを書き込む際の書き込み性能は向上している。
【０００３】
しかし、ＮＡＮＤ型フラッシュメモリに対するホスト機器からのアクセス単位は、必ずしも大きい場合に限られない。特に、書き込むべきデータのサイズがページサイズ未満であるような場合には、ＮＡＮＤ型フラッシュメモリの書き込み性能を十分に発揮出来ず、書き込み速度が低下するという問題があった。
【特許文献１】特開２００７−２４２１６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、データの書き込み速度を向上出来る半導体装置を提供する。
【課題を解決するための手段】
【０００５】
この発明の一態様に係る半導体装置は、２ビット以上のデータを保持可能な複数のメモリセルを備えた第１メモリブロックと、１ビットのデータを保持可能な複数のメモリセルを備えた第２メモリブロックとを有し、前記第１、第２メモリブロックに対して複数の前記メモリセルの集合であるページ単位でデータをプログラム可能な不揮発性半導体メモリと、ホスト機器から受信した書き込みデータを前記不揮発性半導体メモリへ供給し、前記第１メモリブロックまたは第２メモリブロックへの前記書き込みデータのプログラムを、前記ページ毎に前記不揮発性半導体メモリに命令するコントローラとを具備し、前記第１メモリブロックにおいて前記ページは、保持可能な前記データのビット毎に割り当てられ、且つビット毎に書き込みに要する時間が異なり、前記書き込みデータの最終ページが、前記書き込みに要する時間の最も長いビットに相当する場合、前記コントローラは前記不揮発性半導体メモリに対して、当該データについてのプログラムを前記第２メモリブロックのいずれかのページに実行するよう命令する。
【発明の効果】
【０００６】
本発明によれば、データの書き込み速度を向上出来る半導体装置を提供出来る。
【発明を実施するための最良の形態】
【０００７】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
［第１の実施形態］  
この発明の第１の実施形態に係る半導体装置について、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【０００９】
＜メモリシステムの全体構成について＞  
図示するようにメモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、ホストバスインタフェース（以下、単にホストバスと呼ぶことがある）１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１０】
＜メモリカードの構成について＞  
メモリカード１は、ホスト機器２とホストバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある）１１、フラッシュメモリチップ１１を制御するカードコントローラ１２、および複数の信号ピン（第１ピン乃至第９ピン）１３を備えている。
【００１１】
複数の信号ピン１３は、カードコントローラ１２と電気的に接続されている。複数の信号ピン１３における第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。
【００１２】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。第１ピンは、また、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖssに、第４ピンは電源電位Ｖddに、第５ピンはクロック信号に割り当てられている。
【００１３】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ１２と各種信号およびデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ１２にシリアルな信号として送出する。このとき、カードコントローラ１２は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１４】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ１２にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖss用の第３ピンとの間に配置されている。複数の信号ピン１３とそれに対するホストバスインタフェース１４は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１５】
これに対し、フラッシュメモリ１１とカードコントローラ１２との間の通信は、ＮＡＮＤ型フラッシュメモリ用のＮＡＮＤバスインタフェース（以下、単にＮＡＮＤバスと呼ぶことがある）１５によって行われる。したがって、ここでは図示しないが、フラッシュメモリ１１とカードコントローラ１２とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００１６】
例えば、カードコントローラ１２がフラッシュメモリ１１にデータを書き込む際には、カードコントローラ１２は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈ（或いはキャッシュプログラムコマンド１５Ｈ）をフラッシュメモリ１１に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤバスインタフェース１５では、複数ビットのコマンドがパラレルに与えられる。
【００１７】
また、ＮＡＮＤバスインタフェース１５では、フラッシュメモリ１１に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェース（ホストバス１４）と、フラッシュメモリ１１とカードコントローラ１２とが通信するインタフェース（ＮＡＮＤバス１５）とは異なる。
【００１８】
＜メモリコントローラの構成について＞  
次に、図１に示すメモリカード１の備えるカードコントローラの内部構成について図３を用いて説明する。図３はカードコントローラ１２のブロック図である。
【００１９】
カードコントローラ１２は、フラッシュメモリ１１内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro processing unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read-only memory）２４、ＲＡＭ（Random access memory）２５、およびバッファ２６を有する。
【００２０】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行う。
【００２１】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２は、ＲＯＭ２４に格納されているファームウェアと、ＲＡＭ２５に格納したファームウェアの一部や各種のテーブルなどを利用して、ホスト機器から要求されたコマンドを実行する。すなわちＭＰＵ２２は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行したり、バッファ２６を通じたデータ転送処理を制御したりする。
【００２２】
ＲＯＭ２４は、ＭＰＵ２２により実行されるファームウェアなどを格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、ファームウェアや各種のテーブル（表）を記憶する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００２３】
バッファ２６は、ホスト機器２から送られてくるデータをフラッシュメモリ１１へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ１１から読み出されるデータをホスト機器２へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００２４】
＜ＮＡＮＤ型フラッシュメモリの構成について＞  
次に、ＮＡＮＤ型フラッシュメモリ１１の内部構成について簡単に説明する。図４はＮＡＮＤ型フラッシュメモリ１１のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイ３０、ロウデコーダ３１、ページバッファ３２、及びデータキャッシュ３３を備えている。
【００２５】
＜メモリセルアレイについて＞  
まずメモリセルアレイ３０について説明する。メモリセルアレイ３０は、第１メモリブロックＢＬＫ１及び第２メモリブロックＢＬＫ２を備えている。図４では第１メモリブロックＢＬＫ１が複数あり、第２メモリブロックＢＬＫ２が１つである場合を例示しているが、いずれも１つ以上あれば良い。第１メモリブロックＢＬＫ１及び第２メモリブロックＢＬＫ２の構成は基本的に同じであるので、以下では両者を区別しない場合には、共にメモリブロックＢＬＫと呼ぶことにする。
【００２６】
メモリブロックＢＬＫは、データを保持可能な複数のメモリセルトランジスタを備えている。そして、第２メモリブロックＢＬＫ２は第１メモリブロックＢＬＫ１のキャッシュ領域として使用される。すなわち、第１メモリブロックＢＬＫ１にプログラムすべきデータを一時的に保持する領域として使用される。この点については後述する。またデータの消去はメモリブロックＢＬＫ単位で行われる。すなわち、同一メモリセルブロックＢＬＫ内のデータは一括して消去される。
【００２７】
メモリブロックＢＬＫの構成について、図５を用いて説明する。図５はメモリブロックＢＬＫの回路図である。図示するようにメモリブロックＢＬＫの各々は、（ｎ＋１）個（ｎは０以上の整数）のメモリセルユニット３４を備えている。
【００２８】
メモリセルユニット３４の各々は、例えば３２個のメモリセルトランジスタＭＴと、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。メモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２９】
メモリブロックＢＬＫの各々において、同一行にあるメモリセルトランジスタＭＴの制御ゲートはワード線ＷＬ０〜ＷＬ３１のいずれかに共通接続され、同一行にあるメモリセルの選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。なお説明の簡単化のため、以下ではワード線ＷＬ０〜ＷＬ３１を、単にワード線ＷＬと呼ぶことがある。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。なお、選択トランジスタＳＴ１、ＳＴ２は必ずしも両方必要ではなく、メモリセルユニット３４を選択出来るのであればいずれか一方のみが設けられていても良い。
【００３０】
そして、複数のメモリブロックＢＬＫ間において、メモリセルユニット３４の各々の選択トランジスタＳＴ１のドレインは、ビット線ＢＬ０〜ＢＬｎのいずれかに共通接続されている。また、選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通接続されている。
【００３１】
次に、上記メモリセルトランジスタＭＴの取り得るデータについて説明する。まず第１メモリブロックＢＬＫについて説明する。第１メモリブロックＢＬＫ１に含まれるメモリセルトランジスタＭＴは、閾値電圧に応じて３ビットのデータを保持可能とされている。図６は、第１メモリブロックＢＬＫ１に含まれるメモリセルトランジスタＭＴの閾値分布を示すグラフであり、横軸に閾値電圧Ｖthをとり、縦軸にメモリセルトランジスタＭＴの存在確率を示したグラフである。
【００３２】
図示するように、各々のメモリセルトランジスタＭＴは８値（8-levels）のデータを保持出来る。より具体的には、メモリセルトランジスタＭＴは閾値電圧Ｖthの低い順に、“０”、“１”、“２”、“３”、…“７”の８種のデータを保持出来る。メモリセルトランジスタＭＴにおける“０”データの閾値電圧Ｖth０は、Ｖth０＜Ｖ０１である。“１”データの閾値電圧Ｖth１は、Ｖ０１＜Ｖth１＜Ｖ１２である。“２”データの閾値電圧Ｖth２は、Ｖ１２＜Ｖth２＜Ｖ２３である。“３”データの閾値電圧Ｖth３は、Ｖ２３＜Ｖth３＜Ｖ４４である。“４”データの閾値電圧Ｖth４は、Ｖ４４＜Ｖth４＜Ｖ４５である。“５”データの閾値電圧Ｖth５は、Ｖ４５＜Ｖth５＜Ｖ５６である。“６”データの閾値電圧Ｖth６は、Ｖ５６＜Ｖth６＜Ｖ６７である。そして、“７”データの閾値電圧Ｖth７は、Ｖ６７＜Ｖth７である。
【００３３】
すなわち第１メモリブロックＢＬＫ１内のメモリセルトランジスタＭＴは、３ビットのデータ“０００”〜“１１１”を保持可能とされている。以下、この３ビットのデータの各ビットを、図６に示すように下位ビット、中位ビット、及び上位ビットと呼ぶ。なお、メモリセルトランジスタＭＴの取り得る８値のデータ“０”〜“７”と、２進数で表現した際の“０００”〜“１１１”との対応関係は、適宜選択出来る。
【００３４】
次に第２メモリブロックＢＬＫ２について説明する。第２メモリブロックＢＬＫ２に含まれるメモリセルトランジスタＭＴは、閾値電圧に応じて１ビットのデータを保持可能とされている。すなわちメモリセルトランジスタＭＴは、閾値電圧に応じて“０”データと“１”データとのいずれかを保持する。
【００３５】
上記構成のメモリブロックＢＬＫにおいて、データは同一のワード線ＷＬに接続された全メモリセルトランジスタＭＴに対して、一括して書き込まれる。以下、この単位をページと呼ぶ。そして３ビットのデータを保持可能な第１メモリブロックＢＬＫ１のメモリセルトランジスタＭＴについては、ビット毎にデータが書き込まれる。すなわち、まず下位ビット、中位ビット、及び上位ビットの順にデータが書き込まれる。従って第１メモリブロックＢＬＫ１では、１本のワード線ＷＬあたり３ページが割り当てられる。以下、下位ビットに対応するページを下位ページと呼び、中位ビットに対応するページを中位ページと呼び、上位ビットに対応するページを上位ページと呼ぶことがある。他方、第２メモリブロックでは１本のワード線ＷＬあたり１ページが割り当てられる。この様子を図７に示す。図７は、第１メモリブロックＢＬＫ１及び第２メモリブロックＢＬＫ２に含まれるページを示した模式図である。
【００３６】
図示するように、第１メモリブロックＢＬＫ１では１本のワード線ＷＬあたり３ページが割り当てられ、またワード線ＷＬの本数は３２本であるから、第１メモリブロックＢＬＫ１に割り当てられるページはページＰＧ０〜ＰＧ９５となり、総ページ数は９６ページとなる。従って、第１メモリブロックＢＬＫ１のメモリサイズは、（９６×（ｎ＋１））ビットとなる。
【００３７】
他方、第２メモリブロックＢＬＫ２では１本のワード線ＷＬあたり１ページが割り当てられ、またワード線ＷＬの本数は３２本であるから、第２メモリブロックＢＬＫ２に割り当てられるページはページＰＧ０〜ＰＧ３１となり、総ページ数は３２ページとなる。従って、第２メモリブロックＢＬＫ２のメモリサイズは、（３２×（ｎ＋１））ビットとなる。
【００３８】
なお、一括してデータが書き込まれるメモリセルトランジスタＭＴは、必ずしもあるワード線ＷＬに接続された全てである必要は無い。例えば、１本のワード線につき、偶数ビット線及び奇数ビット線毎にデータが書き込まれても良い。この場合、第１メモリブロックＢＬＫ１のページ数は、倍の１９２ページとなる。
【００３９】
＜ロウデコーダについて＞  
次に図４に戻って、ＮＡＮＤ型フラッシュメモリ１１の備えるロウデコーダ３１について説明する。ロウデコーダ３１は、カードコントローラ１２からロウアドレスを受信し、デコードする。ロウアドレスには、いずれかのメモリブロックＢＬＫを指定するブロックアドレスと、いずれかのページを指定するページアドレスとを含む。そして、ロウデコーダ３１はロウアドレスに基づいて、いずれかのメモリブロックＢＬＫにおけるいずれかのワード線ＷＬを選択する。
【００４０】
＜データキャッシュについて＞  
データキャッシュ３３は、ページサイズのデータを一時的に保持可能とされている。
【００４１】
データキャッシュ３３は、カードコントローラ１２との間でデータの授受を行う。すなわち、データの読み出し時には、ページバッファ３２から与えられるデータをカードコントローラ１２へ転送し、書き込み時にはカードコントローラ１２から与えられるデータを受信し、これをページバッファ３２へページ単位で転送する。
【００４２】
＜ページバッファについて＞  
ページバッファ３２は、ページサイズのデータを一時的に保持可能とされている。
【００４３】
ページバッファ３２は、データの読み出し時には、メモリセルアレイ３０からページ単位で読み出されたデータを一時的に保持し、これをデータキャッシュ３３へ転送する。また書き込み時には、データキャッシュ３３から転送されたデータをビット線ＢＬ０〜ＢＬｎに転送し、データのページ単位でのプログラムを実行する。
【００４４】
なお、データの書き込みは上記プログラムとベリファイとの繰り返しによって行われる。プログラムとは、メモリセルトランジスタＭＴの制御ゲートとチャネルとの間に電位差を発生させることで、電荷蓄積層に電子を注入する動作である。またベリファイは、プログラムが行われたメモリセルトランジスタＭＴからデータを読み出すことによって、メモリセルトランジスタＭＴの閾値電圧が所望の値となっているか否かを確認する動作である。
【００４５】
＜データのプログラム方法について＞  
次に、上記構成のメモリカード１におけるデータのプログラム方法について説明する。まず、カードコントローラ１２が主体となって行う処理について説明する。
【００４６】
＜カードコントローラ１２の動作＞  
図８は、データのプログラム時においてカードコントローラ１２の行う処理を示すフローチャートである。
【００４７】
図示するように、まずカードコントローラ１２はホスト機器２から、データの書き込み命令と、ＮＡＮＤ型フラッシュメモリ１１においてデータを書き込むべきアドレスとを、ホストバス１４を介して受信する（ステップＳ１０）。引き続きカードコントローラ１２は、ホスト機器２から書き込みデータを、ホストバス１４を介して受信する（ステップＳ１１）。書き込みデータは、一時的にバッファ２６に保持される。そしてカードコントローラ１２は、フラッシュメモリ１１に対して第１書き込み命令、書き込みデータ、及びアドレスを、ＮＡＮＤバス１５を介して出力する。
【００４８】
フラッシュメモリ１１は、第１書き込み命令を受信することにより、これから書き込み動作が開始され、また書き込みデータが転送されて来ることを認識する。第１書き込み命令は、例えばＮＡＮＤ型フラッシュメモリにおけるコマンド“８０Ｈ”に相当する。但し、実際にデータがメモリセルトランジスタＭＴにプログラムされるのは、後述する第２書き込み命令が与えられた時点である。またカードコントローラ１２の出力するアドレスは、メモリセルアレイ３０のカラム方向を指定するカラムアドレスと、ロウ方向を指定するロウアドレスとが含まれるが、以下ではロウアドレスについてのみ着目して説明する。ステップＳ１２においてカードコントローラ１２の例えばＭＣＵ２２は、第１メモリブロックに対応するロウアドレス（これを第１ロウアドレスと呼ぶ）を発行し、出力する。
【００４９】
引き続きカードコントローラ１２のＭＣＵ２２は、転送した書き込みデータが、最終ページデータであるか否かを判定する（ステップＳ１３）。すなわち、ステップＳ１２で書き込みデータを転送した際、更に転送すべき書き込みデータが残っているか否かを判定する。
【００５０】
例えば、ホスト機器２から転送された書き込みデータが２ページ分のサイズであった場合を仮定する。カードコントローラ１２は書き込みデータ及び第１ロウアドレスの転送をページ毎に行うので、この場合、書き込みデータを全て転送するには、２回のデータ転送が必要である。このうち、最初のデータ転送の段階では、未転送の書き込みデータが１ページ分だけ残っているので、最終ページデータでは無いと判定される（ステップＳ１４、ＮＯ）。他方、２回目のデータ転送の段階では、未転送の書き込みデータは残っておらず、２回目で転送されたデータが書き込まれるページが、当該書き込みデータについての最終ページであることになる。よって、最終ページであると判定される。
【００５１】
なお、ステップＳ１３においては、書き込みデータについてプログラムが行われる最終ページであるか否かが判定されれば良く、そのデータサイズがちょうどページサイズであるかは問題では無い。つまり最終データがページサイズ未満であっても良い。
【００５２】
また、ホスト機器２は書き込みアクセスを終了する際に、カードコントローラ１２に対して書き込みアクセスの終了通知を出力する。また、書き込みアクセスを途中で中断する際には中断命令を出力する。従って、ステップＳ１３の判定は、例えばホスト機器２から書き込みアクセスの終了通知または中断命令があったか否かを判定することで、実行可能である。
【００５３】
ステップＳ１３の判定の結果、最終ページデータでなかった場合（ステップＳ１４、ＮＯ）、カードコントローラ１２のＭＣＵ２２は第２書き込み命令を発行して、ＮＡＮＤバス１５を介してフラッシュメモリ１１へ出力する（ステップＳ１５）。第２書き込み命令は、例えばＮＡＮＤ型フラッシュメモリにおけるにおけるコマンド“１０Ｈ”または“１５Ｈ”に相当する。その後、カードコントローラ１２はステップＳ１２に戻って、後続する書き込みデータについてのフラッシュメモリ１１への転送を継続する。
【００５４】
ステップＳ１３の判定の結果、最終ページデータであった場合（ステップＳ１４、ＹＥＳ）、ＭＣＵ２２は、当該ページデータについてのページアドレスが、上位ページまたは中位ページに相当するか否かを判定する（ステップＳ１６）。すなわち、ページアドレスの指し示すページが、図７に示す第１メモリブロックＢＬＫ１のページＰＧ（３ｉ＋１）またはページ（３ｉ＋２）であるか否かを判定する（但し、ｉは０〜３１の整数）。
【００５５】
ステップＳ１６の判定の結果、下位ページに相当する場合（ステップＳ１７、ＮＯ）、すなわち、ページアドレスの指し示すページがページＰＧ（３ｉ）であった場合、ＭＣＵ２２は第２書き込み命令を発行する。そして第２書き込み命令を、ＮＡＮＤバス１５を介してフラッシュメモリ１１へ出力する（ステップＳ１８）。その後、ＭＣＵ２２は書き込み終了の旨を、ホストバス１４を介してホスト機器１９へ通知する（ステップＳ１９）。
【００５６】
ステップＳ１６の判定の結果、上位ページまたは中位ページに相当する場合（ステップＳ１７、ＹＥＳ）、ＭＣＵ２２はロウアドレス変更命令と、新たなロウアドレス（これを第２ロウアドレスと呼ぶ）とを発行して、これをフラッシュメモリ１１へ出力する（ステップＳ２０）。第２ロウアドレスは、第２メモリブロックＢＬＫ２のいずれかのページに相当するアドレスである。そして、ステップＳ１８、Ｓ１９と同様に、第２書き込み命令をフラッシュメモリ１１へ出力し（ステップＳ２１）、また書き込み終了の旨をホスト機器１９へ通知する（ステップＳ２２）。
【００５７】
その後、ＭＣＵ２２は所定のタイミングにおいて、第２ロウアドレスに相当するページにプログラムされたデータを、第１ロウアドレスに相当するページ、すなわち、本来プログラムすべきであったページにコピーするよう、フラッシュメモリ１１に対して命令する（ステップＳ２３）。この所定のタイミングとは、例えばホスト機器による次の書き込みアクセスがあったタイミングである。
【００５８】
以上の処理において、カードコントローラ１２からＮＡＮＤバス１５を介してフラッシュメモリ１１へ与えられる信号につき図９を用いて説明する。図９は、カードコントローラ１２がフラッシュメモリ１１へ出力する信号のタイミングチャートである。図中において上段は、ステップＳ１６において「相当しない」と判定された場合（ステップＳ１７、ＮＯ）を示し、下段は「相当する」と判定された場合（ステップＳ１７、ＹＥＳ）について示している。
【００５９】
図示するように、いずれの場合もまず時刻ｔ０で第１書き込み命令が出力され、その後アドレス（第１ロウアドレス）及び書き込みデータが、それぞれ時刻ｔ１、ｔ２で順次出力される。その後、終了または中断命令が無い場合には、時刻ｔ４で第２書き込み命令が出力されて、一連の信号の流れは終了する。他方、終了または中断命令がある場合には、時刻ｔ４でロウアドレス変更命令が出力され、時刻ｔ５で新たなロウアドレス（第２ロウアドレス）が出力される。その後、時刻ｔ６で第２書き込み命令が出力される。後者の場合、有効とされるロウアドレスは時刻ｔ１で出力される第１ロウアドレスでは無く、時刻ｔ５で出力される第２ロウアドレスである。そして第２ロウアドレスは、第１ロウアドレスに対応する第１メモリブロックＢＬＫ１とは異なる第２メモリブロックＢＬＫ２に対応するアドレスである。
【００６０】
＜ＮＡＮＤ型フラッシュメモリ１１の動作＞  
次に、ＮＡＮＤ型フラッシュメモリ１１が主体となって行う処理について、図１０を用いて説明する。図１０は、フラッシュメモリ１１における処理を示すフローチャートである。
【００６１】
図示するように、まずフラッシュメモリ１１はカードコントローラ１２から第１書き込み命令、書き込みデータ、及び第１ロウアドレス（及びカラムアドレス）を、ＮＡＮＤバス１５を介してページ単位で受信する（ステップＳ３０）。受信した書き込みデータは、データキャッシュ３３を介してページバッファ３２に保持される。また第１ロウアドレスはロウデコーダ３１に与えられる。更に第１書き込み命令は、フラッシュメモリ１１全体の動作を司る制御部（図４では図示を省略）に与えられる。
【００６２】
引き続きフラッシュメモリ１１は、ロウアドレス変更命令及び第２ロウアドレスを受信しているか否かを判定する（ステップＳ３１）。ロウアドレス変更命令及び第２ロウアドレスを受信していない場合には（ステップＳ３２、ＮＯ）、カードコントローラ１２から第２書き込み命令を受信した後（ステップＳ３３）、ステップＳ３０で受信した第１ロウアドレスとカラムアドレスで指定されるページにデータを書き込む（ステップＳ３４）。すなわち、書き込みデータは第１メモリブロックＢＬＫ１のいずれかのページに書き込まれる。
【００６３】
ステップＳ３２でロウアドレス変更命令を受信していた場合には（ステップＳ３２、ＹＥＳ）、第２書き込み命令を受信した後（ステップＳ３５）、ステップＳ３０で受信したカラムアドレスと、ロウアドレス変更命令の次に受信した第２ロウアドレスで指定されるページにデータを書き込む（ステップＳ３６）。すなわち、書き込みデータは第２メモリブロックＢＬＫ２のいずれかのページに書き込まれる。
【００６４】
その後フラッシュメモリ１１は、ステップＳ３６で第２メモリブロックＢＬＫ２に書き込んだデータを、ステップＳ３０で受信した第１ロウアドレスで指定されるページにコピーする（ステップＳ３７）。
【００６５】
＜書き込み動作の具体例＞  
上記プログラム動作の具体例について、図１１乃至図１５を用いて説明する。図１１は、本実施形態に係るメモリシステムの処理の流れを示すタイミングチャートであり、ホスト機器２から図１０を用いてメモリコントローラ１２へのデータの流れ（ホストバス１４上のデータの流れ）、メモリコントローラ１２からＮＡＮＤ型フラッシュメモリ１１のデータキャッシュ３３へのデータの流れ（ＮＡＮＤバス１５上のデータの流れ）、及びＮＡＮＤ型フラッシュメモリ１１の動作の流れを示す。また図１２乃至図１５はメモリシステムのブロック図であり、図中において斜線で示した領域は、書き込みデータがプログラムされたページを示す。以下では、１ページのデータサイズを１６ＫＢとし、ホスト機器２からページサイズのデータについての書き込みアクセスが４回、行われた場合を例に説明する。
【００６６】
また以下では、カードコントローラ１２は、ＮＡＮＤ型フラッシュメモリ１１に転送したデータが最終ページデータに相当する場合（ステップＳ１４、ＹＥＳ）、すなわち継続データが無い場合には、第２書き込み命令として通常プログラムコマンド“１０Ｈ”を発行し、相当しない場合（ステップＳ１４、ＮＯ）、すなわち継続データがある場合にはキャッシュプログラムコマンド“１５Ｈ”を発行する場合を例に説明する。
【００６７】
キャッシュプログラムコマンド“１５Ｈ”が発行された場合、ＮＡＮＤ型フラッシュメモリ１１はキャッシュプログラムを実行する。キャッシュプログラムでは、データキャッシュ３３が空になった段階、すなわちデータの書き込みが完全に終了する前の段階で、ＮＡＮＤ型フラッシュメモリ１１はレディ（ready）状態となり、次のデータを受付可能な状態となる。これに対して通常プログラムコマンド“１０Ｈ”が発行された場合には、データの書き込みが完全に終了してから、つまりベリファイが終了してから、ＮＡＮＤ型フラッシュメモリ１１はレディ状態となる。
【００６８】
（時刻ｔ０〜ｔ４）  
まず時刻ｔ０〜ｔ４の様子について、図１１及び図１２を用いて説明する。図示するように、時刻ｔ０においてホスト機器２からメモリカード１に対して書き込みアクセスがなされ、１６ＫＢの書き込みデータＷＤ１が転送される。そして、カードコントローラ１２は第１書き込み命令ＩＮＳＴ１及び第１ロウアドレスＲＡ１を発行し、これをフラッシュメモリ１１へ出力する。第１ロウアドレスは、第１メモリブロックＢＬＫ１のページＰＧ０に相当すると仮定する。
【００６９】
引き続き、時刻ｔ１においてカードコントローラ１２は、受信した書き込みデータＷＤ１をフラッシュメモリ１１へ転送する（図中においてＤＩＮ１と示す）。書き込みデータＷＤ１は、データバッファ３３へ格納され、更にページバッファ３２へ転送される。
【００７０】
その後、時刻ｔ３において、カードコントローラ１２は第２書き込み命令ＩＮＳＴ２を発行し、これをフラッシュメモリ１１へ出力する。第１ロウアドレスＲＡ１は下位ページに相当するので、ロウアドレス変更命令は発行されない。また継続データは無いので、発行される第２書き込み命令ＩＮＳＴ２は通常プログラムコマンド“１０Ｈ”である。
【００７１】
第２書き込み命令ＩＮＳＴ２が発行されたことで、フラッシュメモリ１１はビジー（busy）状態となり、書き込みデータＷＤ１をメモリセルトランジスタＭＴに書き込む。これを図１１では“Ｌ”で示す。すなわち、ロウデコーダ３１は、第１ロウアドレスＲＡ１に従ってページＰＧ０を選択する。これにより、ページＰＧ０に対するプログラム及びベリファイが実行され、書き込みデータＷＤ１が書き込まれる。その後、ＮＡＮＤ型フラッシュメモリ１１はレディ状態となる。
【００７２】
（時刻ｔ４〜ｔ８）  
次に時刻ｔ４〜ｔ８の様子について、図１１及び図１３を用いて説明する。図示するように、書き込みデータＷＤ１の書き込みが終了した時刻ｔ４において、ホスト機器２からメモリカード１に対して次の書き込みアクセスがなされ、１６ＫＢの書き込みデータＷＤ２が転送される。そして、カードコントローラ１２は第１書き込み命令ＩＮＳＴ１及び第１ロウアドレスＲＡ１を発行し、これをフラッシュメモリ１１へ出力する。第１ロウアドレスは、第１メモリブロックＢＬＫ１のページＰＧ１に相当する。
【００７３】
引き続き、時刻ｔ５においてカードコントローラ１２は、受信した書き込みデータＷＤ２をフラッシュメモリ１１へ転送する（図中においてＤＩＮ２と示す）。この際、第１ロウアドレスＲＡ１は中位ページに相当する。従ってカードコントローラ１２は、ロウアドレス変更命令ＩＮＳＴ＿ＲＡ及び第２ロウアドレスＲＡ２を発行し、これをフラッシュメモリ１１へ出力し、その後第２書き込み命令ＩＮＳＴ２＝“１０Ｈ”を発行し、フラッシュメモリ１１へ出力する。第２ロウアドレスＲＡ２は、第２メモリブロックＢＬＫ２の例えばページＰＧ０に相当すると仮定する。
【００７４】
フラッシュメモリ１１では、ロウアドレス変更命令ＩＮＳＴ＿ＲＡが発行されたことで、ロウデコーダ３１は第１メモリブロックＢＬＫ１のページＰＧ１の代わりに、第２メモリブロックＢＬＫ２のページＰＧ０を選択する。これにより、書き込みデータＷＤ２は第２メモリブロックＢＬＫ２のページＰＧ０に書き込まれる。
【００７５】
（時刻ｔ８〜ｔ１２）  
次に時刻ｔ８〜ｔ１２の様子について、図１１及び図１４を用いて説明する。図示するように、書き込みデータＷＤ２の書き込みが終了した時刻ｔ８において、ホスト機器２からメモリカード１に対して次の書き込みアクセスがなされ、１６ＫＢの書き込みデータＷＤ３の転送が開始される。
【００７６】
この書き込みデータＷＤ３の転送期間を利用して、メモリカード１では書き込みデータＷＤ２のコピー動作が実行される。すなわち、第２メモリブロックＢＬＫ２に書き込まれたデータＷＤ２が、本来書き込むべきであった第１メモリブロックＢＬＫ１のページＰＧ１へコピーされる。コピー動作にあたってカードコントローラ１２は、時刻ｔ８においてコピー命令ＩＮＳＴ＿ＣＯＰＹを発行し、これをフラッシュメモリ１１へ出力する。
【００７７】
コピー命令ＩＮＳＴ＿ＣＯＰＹに応答して、フラッシュメモリ１１においてロウデコーダ３１は第２メモリブロックＢＬＫ２のページＰＧ０を選択する。これによりデータＷＤ２がページバッファ３２に読み出される。この動作を図１１では“ＲＤ”と示す。引き続きロウデコーダ３１は、時刻ｔ９において第１メモリブロックのページＰＧ１を選択する。これにより、データＷＤ２が第１メモリブロックＢＬＫ１のページＰＧ１に書き込まれる。この動作を図１１では“Ｍ”と示す。なお、図１１では図示を省略したが、時刻ｔ９でデータの読み出しが完了した際に、カードコントローラ１２はＮＡＮＤ型フラッシュメモリ１１に対して、読み出したデータを第１メモリブロックＢＬＫ１のページＰＧ１に書き込むことを命令するために、第２書き込み命令ＩＮＳＴ２を発行する。この際に発行される第２書き込み命令ＩＮＳＴ２は、読み出したデータに継続する書き込みデータＷＤ３が存在するので、キャッシュプログラムコマンド“１５Ｈ”である。
【００７８】
キャッシュプログラムを利用することで、データＷＤ２のコピー中の時刻ｔ１１でＮＡＮＤ型フラッシュメモリ１１はレディ状態となる。そこで、時刻ｔ１１〜ｔ１２の期間において、カードコントローラ１２は次の書き込みデータＷＤ３についての第１書き込み命令ＩＮＳＴ１及び第１ロウアドレスＲＡ１を発行し、フラッシュメモリ１１へ出力する。引き続きカードコントローラ１２は、書き込みデータＷＤ３をデータキャッシュ３３へ転送する（図中においてＤＩＮ３と示す）。なお、このデータＷＤ３の転送と、データＷＤ２のコピー動作とは、同時に終了することが、効率の点で望ましい。
【００７９】
（時刻ｔ１２〜ｔ１３）  
次に時刻ｔ１２〜ｔ１３の様子について、図１１及び図１５を用いて説明する。図示するように、書き込みデータＷＤ３は、データキャッシュ３３からページバッファ３２へ転送される。また既に発行された第１ロウアドレスＲＡ１は、第１メモリブロックＢＬＫ１におけるページＰＧ２、すなわち上位ページに相当する。従ってカードコントローラ１２は、ロウアドレス変更命令ＩＮＳＴ＿ＲＡ及び第２ロウアドレスＲＡ２を発行し、フラッシュメモリ１１へ出力する。引き続きカードコントローラ１２は第２書き込み命令ＩＮＳＴ２＝“１０Ｈ”を発行し、フラッシュメモリ１１へ出力する。第２ロウアドレスＲＡ２は、第２メモリブロックＢＬＫ２の例えばページＰＧ１に相当すると仮定する。
【００８０】
フラッシュメモリ１１では、ロウアドレス変更命令ＩＮＳＴ＿ＲＡが発行されたことで、ロウデコーダ３１は第１メモリブロックＢＬＫ１のページＰＧ２の代わりに、第２メモリブロックＢＬＫ２のページＰＧ１を選択する。これにより、書き込みデータＷＤ３は第２メモリブロックＢＬＫ２のページＰＧ１にプ書き込まれる。
【００８１】
（時刻ｔ１３〜ｔ１８）  
時刻ｔ１３〜ｔ１８の動作は、上記説明した時刻ｔ８〜ｔ１３と同様である。すなわち、時刻ｔ１３〜ｔ１７の期間において、第２メモリブロックＢＬＫ２のページＰＧ１にプログラムされた書き込みデータＷＤ３が、第１メモリブロックＢＬＫ１のページＰＧ２にコピーされる。そしてコピー動作の後、書き込みデータＷＤ４が第１メモリブロックＢＬＫ１のページＰＧ３に書き込まれる。勿論、書き込みデータＷＤ３を上位ページにコピーする際に発行される第２書き込み命令ＩＮＳＴ２は、キャッシュプログラムコマンド“１５Ｈ”である。
【００８２】
＜効果＞  
上記構成のメモリシステムであると、下記の効果が得られる。  
（１）データの書き込み速度を向上出来る。  
本実施形態に係るメモリシステムであると、図１１に示すように、プログラム動作の最終ページが第１メモリブロックＢＬＫ１における上位ページまたは中位ページであった場合、このデータを第２メモリブロックＢＬＫ２に一時的に保持させる。すなわち、第２メモリブロックＢＬＫ２をキャッシュ領域として使用する。第２メモリブロックＢＬＫ２は、データを２値で保持する。他方、最終ページが第１メモリブロックＢＬＫ１における下位ページであった場合、このデータはそのまま第１メモリブロックＢＬＫ１にプログラムする。つまり、ホスト機器２から与えられた書き込みデータは、まず第１メモリブロックＢＬＫ１の下位ページまたは第２メモリブロックＢＬＫ２のいずれかのページにプログラムされる。
【００８３】
従って、データの書き込み速度を向上出来る。本効果につき、図１６を参照しつつ、以下説明する。図１６は、従来のメモリシステム及び本実施形態に係るメモリシステムの動作の流れを示すタイミングチャートであり、それぞれの場合のホスト機器からカードコントローラ１２へのデータの流れと、メモリカード１における動作の流れを示している。図１６に示すタイミングチャートは、上から従来構成において書き込みデータが大きい場合（データサイズが４ページ分の場合）、従来構成において書き込みデータが小さい場合（データサイズが１ページ分以下の場合）、及び本実施形態において書き込みデータが小さい場合（データサイズが１ページ分以下の場合）を示している。本実施形態については図１１と同様である。
【００８４】
まず書き込みデータが大きい場合について説明する。図示するように、ホスト機器２からカードコントローラ１２へ、（１６×４）＝６４ＫＢの書き込みデータが転送される。そして書き込みデータは、下位ページＰＧ０、中位ページＰＧ１、上位ページＰＧ２、及び下位ページＰＧ３の順にプログラムされる。カードコントローラ１２からデータキャッシュ３３へのデータ転送（図中のＤＩＮｉ、ｉは自然数）は、直前に転送されたデータ（ＤＩＮ（ｉ−１））のプログラム中に行うことが可能である。従って、時間のロス無く、データを高速にプログラム出来る。最終ページが下位ページであれば、本実施形態も同様である。
【００８５】
次に、従来構成において書き込みデータが小さい場合について説明する。従来のメモリシステムであると、ロウアドレス変更命令や第２ロウアドレスを発行する機能を有していない。従って図１６に示すように、書き込みデータＷＤ１が下位ページＰＧ０に書き込まれたとすると、次の書き込みデータＷＤ２は中位ページＰＧ１に書き込まれる（図中の“Ｍ”で示す）。そして中位ページＰＧ１の書き込みが終了してＮＡＮＤ型フラッシュメモリがアクセス受付可能な状態になると、次の書き込みデータＷＤ３がホスト機器２からカードコントローラ１２へ転送される。そして書き込みデータＷＤ３が上位ページＰＧ２に書き込まれる（図中の“Ｕ”で示す）。その後上位ページＰＧ２の書き込みが終了してＮＡＮＤ型フラッシュメモリがアクセス受付可能な状態になると、次の書き込みデータＷＤ４がホスト機器２からカードコントローラ１２へ転送される。
【００８６】
以上のように、書き込みアクセスは直前の書き込みアクセスにおける書き込みが完了するまで待つ必要があるため、書き込みデータのデータサイズが小さくなると、書き込み時間が長くなるという問題があった。これは特に多値ＮＡＮＤ型フラッシュメモリにおいて顕著である。
【００８７】
一般に多値ＮＡＮＤ型フラッシュメモリでは、ページによって書き込みに要する時間が大きく異なる。例えば８値ＮＡＮＤ型フラッシュメモリの場合、下位ページの書き込みに要する時間ｔ＿Ｌは２００μｓ程度、中位ページの書き込みに要する時間ｔ＿Ｍは１０００μｓ程度、上位ページの書き込みに要する時間ｔ＿Ｕは５０００μｓ程度である。
【００８８】
すなわち、従来のメモリシステムであると、図１６に示すように書き込みデータを受信するためには、書き込みデータＷＤ２を受信の後、少なくともｔ＿Ｍ＝１０００μｓ待たなければならない。また書き込みデータＷＤ４を受信するためには、書き込みデータＷＤ３の受信の後、少なくともｔ＿Ｕ＝５０００μｓ待たなければならない。つまり、書き込みが中位ページまたは上位ページで終了する場合、下位ページで終了する場合に比べて次のデータが受信可能となるまでの期間が非常に長い。その結果、書き込み速度が低下するという問題があった。
【００８９】
この点、本実施形態に係るメモリシステムであると、書き込み動作が中位ページまたは上位ページで終了する場合には、データを２値で保持する第２メモリブロックＢＬＫ２（キャッシュ領域）に書き込む。従って、書き込みに要する時間はｔ＿Ｌ＝２００μｓで済む。そのため、後続する書き込みアクセスに速やかに対応することが可能となる。
【００９０】
また、第２メモリブロックＢＬＫ２に書き込まれたデータは、次の書き込みデータを書き込む前に、第１メモリブロックＢＬＫ１にコピーする必要がある。しかし、このコピー動作は次の書き込みデータの転送期間とオーバーラップさせることが出来る。更に、カードコントローラ１２からフラッシュメモリ１１へのデータ転送（図１６におけるＤＩＮｉ）は、直前の書き込みデータについてのコピー動作と同時に実行出来る。従って、コピー動作が書き込み時間に与える影響は小さい。
【００９１】
以上の結果、メモリシステムにおけるデータの書き込み速度を高速化出来、図１６に示すように同じデータを書き込む場合であっても、従来に比べてΔｔの期間だけ、書き込み動作を終了させることが出来る。
【００９２】
また、ロウアドレス変更命令を使用することで、上記動作を高速化出来る。すなわち、カードコントローラ１２がロウアドレス変更命令を有しない場合に、書き込みデータを当初のロウアドレス（第１ロウアドレス）と異なるメモリブロックＢＬＫに書き込もうとすると、カードコントローラは書き込みデータを再度ページバッファへ転送しなければならない。具体的に説明すると、ロウアドレスを変更する場合には、まず第１書き込み命令をキャンセルするためにカードコントローラはリセット命令を出力する。次に再度第１書き込み命令を発行すると共に、新たな第１ロウアドレスを発行する。次にカードコントローラはページバッファへデータを再入力する。最後に第２書き込み命令を発行する。
【００９３】
しかしながらロウアドレス変更命令を使用すれば、ページバッファへの再度のデータ転送が不要となるため、データの書き込み速度を向上出来る。
【００９４】
［第２の実施形態］  
次に、この発明の第２の実施形態に係る半導体装置について説明する。本実施形態は、上記第１の実施形態におけるコピー動作の際に、データキャッシュ３３或いはページバッファ３２に残った書き込みデータを使用するものである。以下では、第１の実施形態と異なる点についてのみ説明する。
【００９５】
図１７は、本実施形態に係るメモリシステムの処理の流れを示すタイミングチャートであり、ホスト機器２からメモリカード１のメモリコントローラ１２へのデータの流れ、メモリコントローラ１２からＮＡＮＤ型フラッシュメモリ１１のデータキャッシュ３３へのデータの流れ、及びＮＡＮＤ型フラッシュメモリ１１の動作の流れを示す。そして図１１と同様に１ページのデータサイズを１６ＫＢとし、ホスト機器２からページサイズのデータについての書き込みアクセスが４回、行われた場合を示している。以下、図１１と異なる点に着目して説明する。
【００９６】
図示するように、時刻ｔ７〜ｔ８において、書き込みデータＷＤ２が第２メモリブロックＢＬＫ２にプログラムされる。この動作は図１３に相当する。その後、本実施形態では、第２メモリブロックＢＬＫ２からの読み出しは行わない。その代わり、データキャッシュ３３或いはページバッファ３２には直前のプログラム動作で使用した書き込みデータＷＤ２が残っているはずなので、これを利用して第１メモリブロックへのプログラムを行う（時刻ｔ８〜ｔ１１）。
【００９７】
書き込みデータＷＤ３のコピー動作も同様である。時刻ｔ１１〜ｔ１２の期間において、データキャッシュ３３或いはページバッファ３２は書き込みデータＷＤ３を保持しているので、これを再度利用して、時刻ｔ１２〜ｔ１５の期間のプログラムを行う。
【００９８】
上記構成のメモリシステムであると、第１の実施形態で説明した（１）の効果に加えて、下記（２）の効果が得られる。  
（２）データの書き込み速度を更に向上出来る。  
本実施形態に係るメモリシステムであると、書き込みデータを第２メモリブロックＢＬＫ２にプログラムした後、データキャッシュ３３或いはページバッファ３２に残っている書き込みデータを第１メモリブロックＢＬＫ１に書き込んでいる。つまり、カードコントローラ１２から転送された書き込みデータを、２回の書き込み動作に利用する。
【００９９】
従って、データを第２メモリブロックＢＬＫ２から第１メモリブロックＢＬＫ１にコピーする際に、第２メモリブロックＢＬＫ２からデータを読み出す必要が無い。すなわち、第１の実施形態で説明した図１１における時刻ｔ８〜ｔ９、ｔ１３〜ｔ１４の期間の処理が不要となり、第２メモリブロックＢＬＫ２への書き込み動作の後、第１メモリブロックＢＬＫ１への書き込み動作を速やかに開始出来る。よって、データの書き込み速度を更に高速化出来る。
【０１００】
以上のように、この発明の第１、第２の実施形態に係る半導体装置であると、８値ＮＡＮＤ型フラッシュメモリにおいて、３ビットデータを保持するメモリブロックのキャッシュブロックとして、１ビットデータを保持するメモリブロックを備えている。そして、書き込みデータの最終ページが上位ページまたは中位ページであった場合、換言すれば書き込みに要する時間の長いビットに相当する場合、当該データを一時的にキャッシュブロックへ書き込んでいる。従って、データの書き込み速度を高速化出来る。
【０１０１】
上記実施形態は、例えばファイルシステムを備えたメモリシステムに適用出来る。ファイルシステムとは、メモリに記録されているファイル（データ）を管理する方式のことであり、例えばＦＡＴ（File Allocation Table）ファイルシステムが挙げられる。ファイルシステムにおいては、メモリにおけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。
【０１０２】
ＦＡＴファイルシステムを備えたフラッシュメモリ１１のメモリ空間は、おおまかにはユーザデータ領域及び管理領域に分けられる。ユーザデータ領域は、ユーザによって書き込まれる正味のデータを格納する領域である。管理領域は、例えばブート情報を記憶する領域、パーティション情報を記憶する領域、データがいずれのアドレスに記憶されているかを記憶する領域、ルートディレクトリエントリの情報を記憶する領域等を含んでいる。そして、ユーザデータ領域は、クラスタ或いはアロケーションユニット（allocation unit）と呼ばれる小さい単位で管理される。例えばこの単位が１６Ｋバイトであり、ホスト機器がクラスタ単位で書き込み命令を発行する場合には、クラスタサイズよりも大きいデータを書き込む際にも、１６Ｋバイト毎に連続してデータを書き込む。このような場合であっても、上記実施形態に係る手法を用いることで、高速な書き込み動作が可能となる。
【０１０３】
また、上記実施形態では図１１及び図１７において、ページサイズのデータをプログラムする場合を例に説明した。しかしながら、ホスト機器２から転送されるデータはページサイズ未満であっても良い。また上記実施形態では説明を省略したが、１ページには冗長部及び管理データ記憶部が含まれても良い。すなわち、正味のデータの他にパリティ等のデータが含まれても良い。
【０１０４】
更に、上記実施形態では８値ＮＡＮＤ型フラッシュメモリの場合を例に説明したが、多値ＮＡＮＤ型フラッシュメモリであれば良い。すなわち、第１メモリブロックＢＬＫ１内のメモリセルトランジスタＭＴが、２ビット、４ビット、５ビット等の多値データを保持する場合であっても良い。メモリセルトランジスタＭＴが２ビットのデータを保持する場合、すなわち、各メモリセルトランジスタＭＴに対して下位ページと上位ページとが割り当てられる場合には、書き込みに要する時間は例えばｔ＿Ｌ＝２００μｓ、ｔ＿Ｕ＝３０００μｓである。このように、プログラム対象のビットによって書き込みに要する時間の差が大きいほど、顕著な効果が得られる。
【０１０５】
また、ロウアドレス変更命令を発行する条件は、必ずしも最終ページが下位ページ以外である場合に限らない。例えば最終ページが中位ページである場合には発行しない場合であっても良い。最終ページがいずれのビットであった際にロウアドレス変更命令を発行するかについては、適宜選択可能である。しかし、少なくとも最上位ビットであった場合、言い換えれば書き込みに要する時間の最も長いビットであった場合には、ロウアドレス変更命令を発行することが望ましい。
【０１０６】
また、第２メモリブロックＢＬＫ２にプログラムしたデータは、第１メモリブロックＢＬＫ１のコピーした後、消去せずに残しておいても良い。この場合、第２メモリブロックＢＬＫ２内のデータは第１メモリブロックＢＬＫ１内のデータのスペアデータとして使用出来る。従って、この場合にはフラッシュメモリのデータ保持信頼性を向上出来る。
【０１０７】
なお、上記実施形態では、データの書き込みに要する時間ｔ＿Ｌ、ｔ＿Ｍ、ｔ＿Ｕとして、ＮＡＮＤ型フラッシュメモリ１１に対して第２書き込み命令が与えられてから、メモリセルトランジスタＭＴに対するプログラムとベリファイを繰り返し、ベリファイが完了するまでの期間を例に説明した。ベリファイは、データのプログラムによってメモリセルトランジスタＭＴの閾値が所望の値に達したことを確認できた時点、または上記繰り返し回数が所定の回数に達した時点で、終了する。
【０１０８】
しかし、書き込みに要する時間ｔ＿Ｌ、ｔ＿Ｍ、ｔ＿Ｕは、第２書き込み命令が与えられてから、つまりＮＡＮＤ型フラッシュメモリ１１がビジー状態になってから、レディ状態に復帰するまでの期間と定義することも出来る。ビジー状態とは、ＮＡＮＤ型フラッシュメモリ１１がメモリコントローラ１２からデータを受け付けない状態のことである。この点について、以下説明する。
【０１０９】
図１８はメモリカード１のブロック図であり、ＮＡＮＤ型フラッシュメモリ１１とメモリコントローラ１２との間でやりとりされる信号について示している。図示するように、メモリコントローラ１２からＮＡＮＤ型フラッシュメモリ１１に対しては、チップイネーブル（chip enable）信号／ＣＥ、リードイネーブル（read enable）信号／ＲＥ、ライトイネーブル（write enable）信号／ＷＥ、コマンドラッチイネーブル（command latch enable）信号ＣＬＥ、アドレスラッチイネーブル（address latch enable）信号ＡＬＥが与えられる。
【０１１０】
チップイネーブル信号／ＣＥは、メモリコントローラ１２がＮＡＮＤ型フラッシュメモリ１１にアクセスする際に“Ｌ”レベルとされる。  
リードイネーブル信号／ＲＥは、メモリコントローラ１２がＮＡＮＤ型フラッシュメモリ１１からデータを読み出す際に“Ｌ”レベルとされる。そして／ＲＥ＝“Ｌ”とされることで、ＮＡＮＤ型フラッシュメモリ１１から例えば８ビットのデータＩＯ０〜ＩＯ７が出力される。  
ライトイネーブル信号／ＷＥは、メモリコントローラ１２がＮＡＮＤ型フラッシュメモリ１１にデータを書き込む際に“Ｌ”レベルとされる。そして／ＷＥ＝“Ｌ”とされることで、ＮＡＮＤ型フラッシュメモリ１１は、メモリコントローラ１２から出力されたデータＩＯ０〜ＩＯ７を取り込む。  
コマンドラッチイネーブル信号ＣＬＥは、／ＷＥを“Ｌ”レベルとした際に、ＮＡＮＤ型フラッシュメモリ１１への入力データがコマンドであるか否かを示す。すなわち、ＣＬＥ＝“Ｈ”の場合、データＩＯ０〜ＩＯ７はコマンドである。  
アドレスラッチイネーブル信号ＡＬＥは、／ＷＥを“Ｌ”レベルとした際に、ＮＡＮＤ型フラッシュメモリ１１への入力データがアドレスであるか否かを示す。すなわち、ＡＬＥ＝“Ｈ”の場合、データＩＯ０〜ＩＯ７はアドレスである。
【０１１１】
ＮＡＮＤ型フラッシュメモリ１１からメモリコントローラ１２に対しては、レディ／ビジー信号ＲＹ／ＢＹが与えられる。レディ／ビジー信号ＲＹ／ＢＹは、ＮＡＮＤ型フラッシュメモリ１１の状態を示す信号である。ＲＹ／ＢＹ＝“Ｈ”レベルの場合、ＮＡＮＤ型フラッシュメモリ１１はレディ状態であり、ＲＹ／ＢＹ＝“Ｌ”レベルの場合、ビジー状態である。メモリコントローラ１２は、ＲＹ／ＢＹ＝“Ｈ”レベルであることを受けて、ＮＡＮＤ型フラッシュメモリ１１に対してデータ、コマンド、アドレス等を入力する。
【０１１２】
図１９は、図１６に示した第１の実施形態に係るタイミングチャートと、それに対応したレディ／ビジー信号のタイミングチャートである。
【０１１３】
図示するように、時刻ｔ０で第２書き込み命令ＩＮＳＴ２＝“１０Ｈ”が入力されると、ＮＡＮＤ型フラッシュメモリ１１はビジー状態となり、レディ／ビジー信号ＲＹ／ＢＹは“Ｌ”レベルとなる。そして時刻ｔ１において、書き込みデータＷＤ１の書き込み（プログラム及びベリファイ）が終了すると、ＮＡＮＤ型フラッシュメモリ１１はレディ状態に復帰し、レディ／ビジー信号ＲＹ／ＢＹは“Ｈ”となる。
【０１１４】
また時刻ｔ２で第２書き込み命令ＩＮＳＴ２＝“１０Ｈ”が入力されると、ＮＡＮＤ型フラッシュメモリ１１はビジー状態となり、時刻ｔ３において書き込みデータＷＤ２の第２メモリブロックＢＬＫ２への書き込み（プログラム及びベリファイ）が終了すると、ＮＡＮＤ型フラッシュメモリ１１はレディ状態に復帰する。
【０１１５】
時刻ｔ３においてＮＡＮＤ型フラッシュメモリ１１がレディ状態となると、カードコントローラ１２は読み出しコマンドを発行して、ＮＡＮＤ型フラッシュメモリ１１へ出力する。この読み出しコマンドは、第２メモリブロックＢＬＫ２へ書き込んだ第２書き込みデータＷＤ２の読み出し命令である。これに応答してＮＡＮＤ型フラッシュメモリ１１はビジー状態となり、読み出し動作を実行する。時刻ｔ５で読み出しが完了すると、ＮＡＮＤ型フラッシュメモリ１１はレディ状態に復帰する。
【０１１６】
時刻ｔ５においてＮＡＮＤ型フラッシュメモリ１１がレディ状態となると、カードコントローラ１２は第２書き込み命令ＩＮＳＴ２＝“１５Ｈ”を発行する。これは、第２書き込みデータＷＤ２を第１メモリブロックＢＬＫ１へ書き込む旨の命令である。これに応答してＮＡＮＤ型フラッシュメモリ１１は時刻ｔ６でビジー状態となり、第２書き込みデータＷＤ２についてのキャッシュプログラムを実行する。
【０１１７】
例えば時刻ｔ７でＮＡＮＤ型フラッシュメモリ１１がデータを受付可能な状態、例えばデータキャッシュ３３が空になると、ＮＡＮＤ型フラッシュメモリ１１は書き込み中ではあるがレディ状態となる（ＲＹ／ＢＹ＝“Ｈ”）。これを受けてカードコントローラ１２は、次の書き込みデータＷＤ３及び第２書き込み命令ＩＮＳＴ２＝“１０Ｈ”をＮＡＮＤ型フラッシュメモリ１１へ入力する。
【０１１８】
そして第２書き込みデータＷＤ２の書き込みが終了すると、ＮＡＮＤ型フラッシュメモリ１１は再びビジー状態となり、第３書き込みデータＷＤ３が第２メモリブロックＢＬＫ２に書き込まれる。以降の動作は、時刻ｔ３〜ｔ９と同様である。
【０１１９】
以上のような動作において、書き込みに要する時間を、ビジー状態になってからレディ状態に復帰するまでの間の時間と定義しても良い。すると、中位ページの書き込みに要する時間ｔ＿Ｍは時刻ｔ６〜ｔ７の期間となり、上位ページの書き込みに要する時間ｔ＿Ｕは、時刻ｔ１２〜ｔ１３の期間となる。
【０１２０】
なお、図１９の例では例えば時刻ｔ３〜ｔ４、ｔ９〜ｔ１０の期間に読み出しコマンドが発行される場合について説明した。しかし、カードコントローラ１２は、ＮＡＮＤ型フラッシュメモリ１１がレディ状態になるのを待つことなく、読み出しコマンドをＮＡＮＤ型フラッシュメモリ１１に対して発行しても良い。この場合には、第２メモリブロックＢＬＫ２に対する書き込みが終了した後、レディ状態に移行することなく、引き続き読み出し動作が実行される。
【０１２１】
図２０は、上記第２の実施形態の場合のレディ／ビジー信号のタイミングチャートである。また図２１は、複数ページに跨る大きなデータを書き込む場合におけるタイミングチャートである。図２１における最初の（１６Ｋバイト×３個）のデータは、各々キャッシュプログラムコマンド“１５Ｈ”を用いて書き込まれる。
【０１２２】
更に、上記実施形態ではフラッシュメモリ１１がデータキャッシュ３３を備える場合を例に説明した。しかし、データキャッシュ３３を備えない場合であっても良い。但し、この場合にはプログラムが完了した後に、カードコントローラ１２からフラッシュメモリ１１へのデータ転送（ＤＩＮ）が行われる。つまり、継続データがある場合であっても、通常プログラムコマンド“１０Ｈ”を用いて書き込み動作が実行される。従って、動作の高速化の観点では、データキャッシュ３３を備えることが望ましい。
【０１２３】
また、上記実施形態はＮＡＮＤバス１５のバス幅（データ転送速度）がホストバス１４のバス幅よりも大きい場合に、より顕著な効果が得られる。これは、両者のデータ転送能力のギャップにより生じる時間にプログラム時間をオーバーラップさせることで、全体としての書き込み性能を向上させることが出来るからである。
【０１２４】
更に、上記実施形態で説明したメモリカード１は、例えばＳＤＴＭカードである。しかしメモリカード１は、ホスト機器２内に実装された半導体メモリ装置であっても良い。
【０１２５】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【０１２６】
【図１】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図２】この発明の第１の実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】この発明の第１の実施形態に係るカードコントローラのブロック図。
【図４】この発明の第１の実施形態に係るフラッシュメモリのブロック図。
【図５】この発明の第１の実施形態に係るメモリブロックの回路図。
【図６】この発明の第１の実施形態に係るメモリセルトランジスタの閾値分布を示すグラフ。
【図７】この発明の第１の実施形態に係るメモリブロックの模式図。
【図８】この発明の第１の実施形態に係るデータ書き込み方法を示すフローチャートであり、カードコントローラにおける処理を示す図。
【図９】この発明の第１の実施形態に係るカードコントローラが出力する信号のタイミングチャート。
【図１０】この発明の第１の実施形態に係るデータ書き込み方法を示すフローチャートであり、フラッシュメモリにおける処理を示す図。
【図１１】この発明の第１の実施形態に係るデータ書き込み方法における、データ及び動作の流れを示すタイミングチャート。
【図１２】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１３】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１４】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１５】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１６】データ及び動作の流れを示すタイミングチャート。
【図１７】この発明の第２の実施形態に係るデータ書き込み方法における、データ及び動作の流れを示すタイミングチャート。
【図１８】この発明の第１、第２の実施形態に係るメモリカードのブロック図。
【図１９】この発明の第１の実施形態に係るデータ書き込み方法における動作の流れを示すタイミングチャート。
【図２０】この発明の第２の実施形態に係るデータ書き込み方法における動作の流れを示すタイミングチャート。
【図２１】この発明の第１、第２の実施形態に係るデータ書き込み方法における動作の流れを示すタイミングチャート。
【符号の説明】
【０１２７】
１…メモリカード、２…ホスト機器、１１…ＮＡＮＤ型フラッシュメモリ、１２…カードコントローラ、１３…信号ピン、２１…ホストインタフェースモジュール、２２…ＭＰＵ、２３…フラッシュコントローラ、２４…ＲＯＭ、２５…ＲＡＭ、２６…バッファ、３０…メモリセルアレイ、３１…ロウデコーダ、３２…ページバッファ、３３…データキャッシュ、３４…メモリセルユニット
【図１】
2010044620.tif 000003
【図２】
2010044620.tif 000004
【図３】
2010044620.tif 000005
【図４】
2010044620.tif 000006
【図５】
2010044620.tif 000007
【図６】
2010044620.tif 000008
【図７】
2010044620.tif 000009
【図８】
2010044620.tif 000010
【図９】
2010044620.tif 000011
【図１０】
2010044620.tif 000012
【図１１】
2010044620.tif 000013
【図１２】
2010044620.tif 000014
【図１３】
2010044620.tif 000015
【図１４】
2010044620.tif 000016
【図１５】
2010044620.tif 000017
【図１６】
2010044620.tif 000018
【図１７】
2010044620.tif 000019
【図１８】
2010044620.tif 000020
【図１９】
2010044620.tif 000021
【図２０】
2010044620.tif 000022
【図２１】
2010044620.tif 000023