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