JP2008009919A - カードコントローラ - Google Patents
カードコントローラ Download PDFInfo
- Publication number
- JP2008009919A JP2008009919A JP2006182254A JP2006182254A JP2008009919A JP 2008009919 A JP2008009919 A JP 2008009919A JP 2006182254 A JP2006182254 A JP 2006182254A JP 2006182254 A JP2006182254 A JP 2006182254A JP 2008009919 A JP2008009919 A JP 2008009919A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- card controller
- memory block
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 374
- 239000004065 semiconductor Substances 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 20
- 230000007704 transition Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 41
- 238000000034 method Methods 0.000 description 16
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 15
- 230000005012 migration Effects 0.000 description 13
- 238000013508 migration Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 8
- 101000824318 Homo sapiens Protocadherin Fat 1 Proteins 0.000 description 6
- 101000824299 Homo sapiens Protocadherin Fat 2 Proteins 0.000 description 6
- 102100022095 Protocadherin Fat 1 Human genes 0.000 description 6
- 102100022093 Protocadherin Fat 2 Human genes 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】データの更新を高速化できるカードコントローラを提供すること。
【解決手段】2ビット以上のデータを保持可能なメモリセルを含むメモリブロックBLKを複数備え、前記メモリブロックBLK単位でデータが消去される半導体メモリ11にデータを書き込むカードコントローラ12であって、第1データを受信するホストインタフェース21と、前記第1データの管理情報41を含む第2データを、前記メモリブロックBLKn内に対して、前記2ビットのうちの下位ビットのみを用いて書き込む演算処理装置22とを具備し、前記演算処理装置22は、前記第2データが更新される度に同一の前記メモリブロックBLKnに順次書き込み、前記メモリブロックBLKnにおける最新の前記第2データを異なる前記メモリブロックBLK0に対して前記下位ビットのみを用いて書き写す。
【選択図】 図7
【解決手段】2ビット以上のデータを保持可能なメモリセルを含むメモリブロックBLKを複数備え、前記メモリブロックBLK単位でデータが消去される半導体メモリ11にデータを書き込むカードコントローラ12であって、第1データを受信するホストインタフェース21と、前記第1データの管理情報41を含む第2データを、前記メモリブロックBLKn内に対して、前記2ビットのうちの下位ビットのみを用いて書き込む演算処理装置22とを具備し、前記演算処理装置22は、前記第2データが更新される度に同一の前記メモリブロックBLKnに順次書き込み、前記メモリブロックBLKnにおける最新の前記第2データを異なる前記メモリブロックBLK0に対して前記下位ビットのみを用いて書き写す。
【選択図】 図7
Description
この発明は、カードコントローラに関する。例えば、不揮発性の半導体メモリチップの動作を制御するカードコントローラに関する。
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリ(以下、単にフラッシュメモリと呼ぶ場合がある)が広く使用されている。
NAND型フラッシュメモリにおいては、データは複数のメモリセルにつき一括して消去される。この消去単位を、以下メモリブロックと呼ぶ。NAND型フラッシュメモリではその特性上、データを上書きすることができない。従ってデータを更新する際には、消去メモリブロックに対して新規にデータの書き込むと共に、更新前のデータが保持されているメモリブロックにおける他のデータを、消去メモリブロックにコピーする必要がある(これをデータの引っ越しと呼ぶことがある)。そのため、メモリブロックサイズよりもデータ量の小さいデータの更新が発生した際でも、消去メモリブロックに対してメモリブロック単位でデータを書き込まなければならない。
そこで、データ量の小さい書き込みを行う際には、本来書き込むべきメモリブロックとは別のメモリブロックをキャッシュとして使用する方法が知られている(例えば特許文献1参照)。しかしながら本方法においても、キャッシュに書き込まれたデータを本来のメモリブロックに書き戻す際には、やはりメモリブロック単位でデータを書き込まなければならない。そのため、データの更新に長時間を要するという問題があった。
特開2006−18471号公報
この発明は、データの更新を高速化できるカードコントローラを提供する。
この発明の一態様に係るカードコントローラは、各々が少なくとも2ビット以上のデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリにデータを書き込むカードコントローラであって、ホスト機器に接続可能とされ、前記ホスト機器から第1データを受信するホストインタフェースと、前記ホストインタフェースで受信した前記第1データの前記半導体メモリ内における管理情報を含む第2データを、前記メモリブロック内の前記メモリセルに対して、前記2ビットのうちの下位ビットのみを用いて書き込む演算処理装置とを具備し、前記演算処理装置は、前記第2データが更新される度に同一の前記メモリブロックに前記第2データを順次書き込み、且つ前記メモリブロックにおける最新の前記第2データを、異なる前記メモリブロックにおける前記メモリセルに対して、前記下位ビットのみを用いて書き写す。
本発明によれば、データの更新を高速化できるカードコントローラを提供出来る。
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
[第1の実施形態]
この発明の第1の実施形態に係るカードコントローラについて、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
この発明の第1の実施形態に係るカードコントローラについて、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
図示するようにメモリシステムは、メモリカード1及びホスト機器2を備えている。ホスト機器2は、バスインタフェース14を介して接続されるメモリカード1に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
メモリカード1は、ホスト機器2とバスインタフェース14を介して情報の授受を行う。メモリカード1は、NAND型フラッシュメモリチップ(単にNAND型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある)11、フラッシュメモリチップ11を制御するカードコントローラ12、および複数の信号ピン(第1ピン乃至第9ピン)13を備えている。
複数の信号ピン13は、カードコントローラ12と電気的に接続されている。複数の信号ピン13における第1ピン乃至第9ピンに対する信号の割り当ては、例えば図2に示すようになっている。図2は、第1ピン乃至第9ピンと、それらに割り当てられた信号とを示す表である。
データ0乃至データ3は、第7ピン、第8ピン、第9ピン、および第1ピンにそれぞれ割り当てられている。第1ピンは、また、カード検出信号に対しても割り当てられている。さらに、第2ピンはコマンドに割り当てられ、第3ピンおよび第6ピンは接地電位Vssに、第4ピンは電源電位Vddに、第5ピンはクロック信号に割り当てられている。
また、メモリカード1は、ホスト機器2に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器2に設けられたホストコントローラ(図示せず)は、これら第1ピン乃至第9ピンを介してメモリカード1内のカードコントローラ12と各種信号およびデータを通信する。例えば、メモリカード1にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第2ピンを介してカードコントローラ12にシリアルな信号として送出する。このとき、カードコントローラ12は、第5ピンに供給されているクロック信号に応答して、第2ピンに与えられる書き込みコマンドを取り込む。
ここで、前述したように、書き込みコマンドは、第2ピンのみを利用してカードコントローラ12にシリアルに入力される。コマンドの入力に割り当てられている第2ピンは、図2に示すように、データ3用の第1ピンと接地電位Vss用の第3ピンとの間に配置されている。複数の信号ピン13とそれに対するバスインタフェース14は、ホスト機器2内のホストコントローラとメモリカード1とが通信するのに使用される。
これに対し、フラッシュメモリ11とカードコントローラ12との間の通信は、NAND型フラッシュメモリ用のインタフェースによって行われる。したがって、ここでは図示しないが、フラッシュメモリ11とカードコントローラ12とは例えば8ビットの入出力(I/O)線により接続されている。
例えば、カードコントローラ12がフラッシュメモリ11にデータを書き込む際には、カードコントローラ12は、これらI/O線を介してデータ入力コマンド80H、カラムアドレス、ページアドレス、データ、およびプログラムコマンド10Hをフラッシュメモリ11に順次入力する。ここで、コマンド80Hの“H”は16進数を示すものであり、実際には“10000000”という8ビットの信号が、8ビットのI/O線にパラレルに与えられる。つまり、このNAND型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
また、NAND型フラッシュメモリ用のインタフェースでは、フラッシュメモリ11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器2内のホストコントローラとメモリカード1とが通信するインタフェースと、フラッシュメモリ11とカードコントローラ12とが通信するインタフェースとは異なる。
次に、図1に示すメモリカード1の備えるカードコントローラの内部構成について図3を用いて説明する。図3はカードコントローラのブロック図である。
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。カードコントローラ12は、ホストインタフェースモジュール21、MPU(Micro processing unit)22、フラッシュコントローラ23、ROM(Read-only memory)24、RAM(Random access memory)25、およびバッファ26を有する。
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えばメモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。またMPU22は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ11に対して所定の処理を実行したり、バッファ26を通じたデータ転送処理を制御したりする。
ROM24は、MPU22により制御される制御プログラムなどを格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。フラッシュコントローラ23は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
バッファ26は、ホスト機器2から送られてくるデータをフラッシュメモリ11へ書き込む際に、一定量のデータ(例えば、1ページ分)を一時的に記憶したり、フラッシュメモリ11から読み出されるデータをホスト機器2へ送り出す際に、一定量のデータを一時的に記憶したりする。
次に、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4はNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30及びページバッファ31を備えている。
メモリセルアレイ30は、複数のメモリセルブロックBLKを含んでいる。なお、前述のようにメモリブロックBLK単位でデータの消去が行われる。各メモリブロックBLKは、マトリクス状に配置された複数のメモリセル(図示せず)を備えている。各メモリセルは、フローティングゲートとコントロールゲートとを含む積層ゲートを備えたMOSトランジスタである。同一行にあるメモリセルは同一のワード線に共通接続されている。なお、データの書き込み及び読み出しは複数のメモリセルの集合毎に行われ、このメモリセルの集合を1ページと呼ぶ。
一例として図4の構成では、各ページは例えば4096バイト分のメモリセルを含む。メモリセルの各々は、2値(“0”データまたは“1”データ)、または4値(“00”データ、“01”データ、“10”データ、または“11”データ)のデータを保持可能である。各メモリセルが2ビット(4値)のデータを保持する場合、この2ビットには2つの異なるページアドレスが割り当てられる。具体的には、2ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。一方、各メモリセルが1ビット(2値)のデータを保持する場合、この1ビットには1つのページアドレスが割り当てられる。このため、2値のデータを保持する場合は、4値のデータを保持する場合に比較して、1つのメモリセルブロックに含まれるページの数は半分となる。すると、メモリセルの各々が4値のデータを保持する場合、メモリブロックBLKは128ページを含み、2値のデータを保持する場合には64ページを含む。すなわち、4値モードでは、上位ページが64ページあり、下位ページが64ページあり、全体で128ページとなる。他方、2値モードであると、下位ページの64ページのみを含む。従って、1つのメモリブロックBLKのメモリサイズは、4値モードでは(128ページ×4096バイト)=512kバイトであり、2値モードでは(64×4096バイト)=256kバイトである。以下、メモリセルが2値データを保持する場合の動作を「2値モード」と呼び、4値データを保持する場合の動作を「4値モード」と呼ぶ。
ページバッファ31は、メモリセルアレイ30へのデータ入出力を行うために設けられる。ページバッファ31の記憶容量は、4096バイトである。データ書き込みなどの際、ページバッファ31は、メモリセルアレイ30に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
なお、図4においては消去単位が128ページまたは64ページである場合を例示しているが、消去単位は適宜設定可能である。NAND型フラッシュメモリ11のメモリサイズが同一であれば、消去単位が小さくなるにつれてメモリブロックBLK数は増加する。
次に、2値モードのメモリセルと4値モードのメモリセルの閾値について説明する。図5はメモリセルの閾値分布を示すグラフであり、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示す。
まず4値モードについて説明する。図示するようにメモリセルは、閾値電圧Vthの低い順に“11”、“01”、“10”、“00”の4つのデータを保持出来る。“11”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルの閾値電圧Vthは、0V<Vth<Vth1である。“10”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。“00”データを保持するメモリセルの閾値電圧Vthは、Vth2<Vth<Vth3である。
次に2値モードについて説明する。図示するようにメモリセルは、閾値電圧Vthの低い順に“1”、“0”の2つのデータを保持出来る。“1”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“0”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。すなわち、“1”データは4値モードにおける“11”データに等しく、“0”データは4値モードにおける“10”データに等しい閾値電圧を有する。
つまり、言い換えれば2値モードとは、4値モードにおける2ビットデータのうち、下位ビットのみを用いた動作モードと言うことが出来る。また、メモリセルに対して2値モードでデータを書き込むか、または4値モードでデータを書き込むかについては、カードコントローラ12によって制御される。
次に、上記フラッシュメモリ11において、データが書き込まれる領域の構成について図6を用いて説明する。図6は、フラッシュメモリ11の備えるメモリセルアレイ30のメモリ空間を示す概念図である。以下、フラッシュメモリ11のメモリサイズが約1Gバイトである場合を例に説明する。図示するようにメモリ空間は、おおまかにはユーザデータ領域40及び管理領域41に分けられる。
ユーザデータ領域40は、ユーザによって書き込まれる正味のデータを格納する領域である。
管理領域41は、フラッシュメモリ11に記録されているファイル(データ)を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル(データ)を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、メモリにおけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。図6では一例としてFAT(File Allocation Table)ファイルシステムについて示している。
管理領域41は、例えばブート領域42、パーティション情報領域43、FAT1(44)、及びFAT2(45)、及びルートディレクトリエントリ領域46を含んでいる。ブート領域42は、例えばブート情報を記憶する。パーティション情報領域43はパーティション情報を記憶する。FAT1及びFAT2は、データがいずれのアドレスに記憶されているかを記憶する。以下、FAT1、FAT2について簡単に説明する。
ユーザデータ領域40は、クラスタと呼ばれる複数の領域を含んでいる。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データが書き込まれるクラスタは連続しない場合がある。すなわち、1つのデータが場所的に離れたクラスタに書き込まれる。この際に、データがどのクラスタに分割されて書き込まれたかを管理するための管理データが、FAT1、FAT2に記憶される。
ルートディレクトリエントリ領域46は、ルートディレクトリエントリの情報を記憶する。そして、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、FAT1、FAT2に示されたどのクラスタがファイルの先頭クラスタであるかを示すフラグを記憶する。
以下、管理領域41のサイズが380kバイトである場合について説明する。
以下、管理領域41のサイズが380kバイトである場合について説明する。
次に、図6に示したアドレス空間と、メモリセルアレイ30における各メモリブロックBLKとの関係について、図7を用いて説明する。図7は、メモリセルアレイ30のアドレス空間と、該アドレス空間の各々の領域に割り当てられたメモリブロックBLKとの関係を示す概念図である。
前述の通り、2値モードにおけるメモリブロックBLKのデータサイズは256kバイトであり、4値モードにおけるメモリブロックBLKのデータサイズは512kバイトである。そして管理領域41のサイズは380kバイトである。
まず、管理領域41を保持するために1つのメモリブロックBLK0が割り当てられる。メモリブロックBLK0は2値モード(256kバイト)である。従って、メモリブロックBLK0だけでは管理領域41を全て保持できないため、更にメモリブロックBLK1が残りの管理領域41を保持する。メモリブロックBLK1も2値モードである。メモリブロックBLK1において管理領域41を除いた残りの領域は、ユーザデータ領域40として用いられる。他方、残りのユーザデータ領域40として用いられるメモリブロックBLK2、BLK3…は、4値モード(512kバイト)である。
また、メモリブロックBLKn(nは自然数)及びBLK(n+1)はそれぞれ、メモリブロックBLK0、BLK1のキャッシュとして用いられる。メモリブロックBLKn、BLK(n+1)も2値モードである。
すなわち、管理領域41を保持するメモリブロックBLKは2値モードであり、且つ2値モードの別のメモリブロックBLKがキャッシュとして割り当てられる。他方、ユーザデータ領域40を保持する他のメモリブロックBLKは4値モードであり、特にキャッシュは割り当てられない。
上記構成において、管理領域に対応する論理アドレスに対して書き込み命令があった場合、MPU22は書き込みデータをとりあえずキャッシュとして使用されるブロックBLKnに2値モードで書き込む。更にMPU22は所定のタイミングにおいて、ブロックBLKn内のデータはブロックBLK0に2値モードで書き戻す。
上記構成のメモリシステムであると、下記(1)、(2)の効果が得られる。
(1)データの更新を高速化できる。
FATシステムにおいて使用される管理領域41は、ユーザデータ領域40に比べて頻繁にデータ(管理情報)の更新が行われる。特にFAT1、FAT2の情報は非常に頻繁に更新される。つまり、管理領域41を保持するメモリブロックBLKでは、頻繁にデータが書き換えられ必要がある。しかし背景技術でも説明したように、NAND型フラッシュメモリではデータの上書きが出来ない。そのためキャッシュを設け、とりあえずキャッシュに管理情報を書き込んでおく手法が取られる。そして、キャッシュのデータ量がある一定量になった際には、キャッシュされたデータを書き戻す。これをキャッシュの撤収と呼ぶ。より具体的に説明すると、あるメモリブロック内に保持されるデータが更新される場合、その更新データはとりあえず更新前のデータが保持されるメモリブロックとは別のメモリブロックに書き込まれる。この別のメモリブロックがキャッシュメモリとして機能する。そして、更に更新があった場合には、キャッシュメモリとして機能するメモリブロックの別のページに書き込まれる。このように、データの更新がある度にキャッシュメモリに更新データが追記される。そして、キャッシュメモリのデータ量が一定量になった際には、最新の更新データが元のメモリブロックまたは別の新たな管理領域保持用として設けられたメモリブロックに書き戻される。この際、元のメモリブロックにおけるその他のデータも全て更新されているとは限らず、有効なデータも残っていることがある。従って、元のメモリブロックにおける有効なデータと、キャッシュメモリにおける最新の更新データとが、元のメモリブロック、または別の新たな管理領域保持用として設けられたメモリブロックに書き写される。これがキャッシュの撤収である。そして従来の多値NAND型フラッシュメモリを用いたメモリシステムであると、キャッシュメモリとして機能するメモリブロックも含めた各メモリブロックキャッシュメモリは、4値以上の多値モードでデータが書き込まれる。
(1)データの更新を高速化できる。
FATシステムにおいて使用される管理領域41は、ユーザデータ領域40に比べて頻繁にデータ(管理情報)の更新が行われる。特にFAT1、FAT2の情報は非常に頻繁に更新される。つまり、管理領域41を保持するメモリブロックBLKでは、頻繁にデータが書き換えられ必要がある。しかし背景技術でも説明したように、NAND型フラッシュメモリではデータの上書きが出来ない。そのためキャッシュを設け、とりあえずキャッシュに管理情報を書き込んでおく手法が取られる。そして、キャッシュのデータ量がある一定量になった際には、キャッシュされたデータを書き戻す。これをキャッシュの撤収と呼ぶ。より具体的に説明すると、あるメモリブロック内に保持されるデータが更新される場合、その更新データはとりあえず更新前のデータが保持されるメモリブロックとは別のメモリブロックに書き込まれる。この別のメモリブロックがキャッシュメモリとして機能する。そして、更に更新があった場合には、キャッシュメモリとして機能するメモリブロックの別のページに書き込まれる。このように、データの更新がある度にキャッシュメモリに更新データが追記される。そして、キャッシュメモリのデータ量が一定量になった際には、最新の更新データが元のメモリブロックまたは別の新たな管理領域保持用として設けられたメモリブロックに書き戻される。この際、元のメモリブロックにおけるその他のデータも全て更新されているとは限らず、有効なデータも残っていることがある。従って、元のメモリブロックにおける有効なデータと、キャッシュメモリにおける最新の更新データとが、元のメモリブロック、または別の新たな管理領域保持用として設けられたメモリブロックに書き写される。これがキャッシュの撤収である。そして従来の多値NAND型フラッシュメモリを用いたメモリシステムであると、キャッシュメモリとして機能するメモリブロックも含めた各メモリブロックキャッシュメモリは、4値以上の多値モードでデータが書き込まれる。
この点、本実施形態に係る構成であると、MPU22は2値モードのメモリブロックBLKを管理領域41として割り当て、更にそのキャッシュとして用いるメモリブロックBLKに更新データを追記する際も2値モードで更新データを書き込む。そして、キャッシュの撤収の際には2値モードでデータを書き戻す。そのため、データの更新を高速化出来る。この点につき以下詳細に説明する。
まず、4値モードのメモリセルの書き込み方法について、図8を用いて説明する。図8はメモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Vthの変化の様子を示している。前述の通り、データは1ページに対して一括して書き込まれる。またデータの書き込みは、まず下位ページから行い、次に上位ページについて行う。
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Vthは負の値であり、“11”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“1”の場合には、フローティングゲートに電子は注入されず、閾値電圧Vthは不変である。下位ページが“0”の場合には、フローティングゲートに電子が注入され、閾値電圧Vthは正の方向へ変化し、約Vth1<Vth<Vth2となる。つまり、メモリセルは“10”を保持している時とほぼ同じ閾値となる。
次に上位ページの書き込みを行う。まず下位ページが“1”であった場合について説明する。下位ページが“1”で、なおかつ上位ページも“1”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Vthは負の値を維持する。その結果、メモリセルには“11”が書き込まれる。上位ページが“0”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Vthは負から正の方向へ変化し、0V<Vth<Vth1となる。すなわち、メモリセルには“01”が書き込まれる。
次に下位ページが“0”であった場合について説明する。下位ページが“0”で、上位ページが“1”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Vth1<Vth<Vth2であり、その結果メモリセルには“10”が書き込まれる。上位ページが“0”の場合、更にフローティングゲートに電子が注入される。その結果、閾値電圧Vthは更に正の方向へ変化し、Vth2<Vth<Vth3となる。すなわち、メモリセルには“00”が書き込まれる。
4値モードのメモリセルの場合、上記のように上位ページと下位ページについて書き込みを行う必要がある。他方、2値モードのメモリセルの場合、前述の通り4値モードにおける下位ビットのみを用いるため、下位ページの書き込みだけで良く、上位ページについての書き込みを行う必要がない。そしてNAND型フラッシュメモリにおいては、下位ページの書き込み速度は上位ページの書き込み速度よりも早いのが一般的である。例えば下位ページの書き込みに必要な時間は例えば400μs程度であり、上位ページの書き込みに必要な時間は例えば1200μs程度である。
図9は、4値モードのメモリブロックBLKを用いて管理領域41を保持する場合の、キャッシュの撤収の様子を示す概念図である。図示するように、4値モードであると、下位ページと上位ページとのそれぞれの書き込みに要する時間、すなわち1ページあたりの平均書き込み時間は、800μsである。従って、1つのメモリブロックBLKに対するデータの書き込み時間は、(800μs×128ページ)=102.4ms程度となる。
これに対して本実施形態に係る構成であると、書き込みに要する時間を、図9の場合の1/4とすることが出来る。図10は本実施形態について示しており、2値モードのメモリブロックBLKを用いて管理領域41を保持する場合の、キャッシュの撤収の様子を示す概念図である。図示するように、2値モードであると、下位ページのみデータを書き込めば良く、上位ページについての書き込みは不要である。従って、書き込むべきページ数は、図9の場合の1/2となる。更に、下位ページの書き込みに要する時間は400μsであり、図9の場合の平均書き込み時間800μsの1/2である。従って、1ページの書き込みに必要な時間は400μs程度である。その結果、1つのメモリブロックBLKに対する書き込み時間は、(400μs×64ページ)=25.6ms程度となる。すなわち、4値モードのメモリブロックBLKを用いて管理領域41を保持する場合に比べて、書き込み時間が1/2となり、且つページ数が1/2となる結果、4値モードの場合に要する時間の1/4となる。従って、キャッシュメモリとして機能するメモリブロックへの更新データの書き込み速度、及びキャッシュの撤収速度が向上し、メモリシステムにおけるデータの更新速度を大幅に向上できる。
(2)NAND型フラッシュメモリの信頼性を向上出来る。
NAND型フラッシュメモリにおいて、4値モードなどの多値データの書き込み動作は、2値モードでの書き込み動作に比べてメモリセルに与えるストレスが大きい。これは、メモリセルに対する書き込み量、換言すれば、フローティングゲートへの電子の注入量が多いからである。特に管理領域41はデータの更新が頻繁であるから、メモリセルが消耗し易い領域と言うことができる。
この点、本実施形態であると、管理領域41を保持するメモリブロックBLKは2値モードである。従って、データの更新が頻繁であってもメモリセルの消耗度を抑えることが出来、データの保持特性が向上する。その結果、NAND型フラッシュメモリの信頼性を向上出来る。
なお、上記実施形態では管理領域41のサイズが、2値モードの1つのブロックサイズよりも大きい場合を例に挙げて説明した。しかし、管理領域41のサイズが2値モードの1つのブロックサイズよりも小さい場合には、キャッシュの一方を設ける必要がない。図11はこのような場合について示しており、メモリセルアレイ30のアドレス空間と、該アドレス空間の各々の領域に割り当てられたメモリブロックBLKとの関係を示す概念図である。
図示するように、管理領域41のサイズが256kバイト以下の場合には、1つのメモリブロックBLK0のみで管理領域41を保持出来る。従って、メモリブロックBLK0についてのみキャッシュを用意し、メモリブロックBLK1に関してキャッシュを設けなくても良い。なお図11ではメモリブロックBLK1も2値モードであるが、4値モードとしても良い。
[第2の実施形態]
次に、この発明の第2の実施形態に係るカードコントローラについて説明する。本実施形態は、上記第1の実施形態において、メモリセルブロックを4値モードから2値モードへ動的に移行させる構成に関するものである。図12は、本実施形態に係るメモリシステムにおいてメモリカード1が備えるカードコントローラ12のブロック図である。その他の構成について第1の実施形態で説明した通りであるので説明は省略する。なお、メモリブロックBLKは、初期状態において4値モードである。
次に、この発明の第2の実施形態に係るカードコントローラについて説明する。本実施形態は、上記第1の実施形態において、メモリセルブロックを4値モードから2値モードへ動的に移行させる構成に関するものである。図12は、本実施形態に係るメモリシステムにおいてメモリカード1が備えるカードコントローラ12のブロック図である。その他の構成について第1の実施形態で説明した通りであるので説明は省略する。なお、メモリブロックBLKは、初期状態において4値モードである。
図示するようにカードコントローラ12は、上記第1の実施形態において図3を用いて説明した構成において、さらにモード移行命令部50を備えている。モード移行命令部50は、NAND型フラッシュメモリ11における各メモリブロックBLKに対して、4値モードから2値モードへの移行(これをモード移行と呼ぶことがある)を命令する。モード移行命令部50は、アクセスカウンタ51、テーブル保持部52、比較器53、及び移行命令出力部54を備えている。
アクセスカウンタ51は、NAND型フラッシュメモリ11における各メモリブロックBLKに対する書き込みアクセス数をカウントする。
テーブル保持部52は、条件テーブル55及び移行テーブル56を保持する。条件テーブル55は、モード移行の条件を保持する。すなわち、あるメモリブロックBLKに対してどれだけの書き込みアクセス数があった場合にモード移行するか、という情報を保持する。移行テーブルは、各メモリブロックBLKが2値モードと4値モードとのいずれのモードにあるかの情報を保持する。なお移行テーブルは、4値モードから2値モードに移行したメモリブロック情報を保持できれば十分である。
比較器53は、アクセスカウンタ51におけるカウント数と、テーブル保持部52における条件テーブル55に保持される条件とを比較する。
移行命令出力部54は、比較器53の比較結果に基づいて、4値モードから2値モードへの移行命令を出力する。移行命令は、フラッシュコントローラ23を介してNAND型フラッシュメモリ11へ与えられる。また移行命令出力部54は、移行命令を出力した際に、どのブロックBLKが4値モードへ移行したかをテーブル保持部52へ出力して、移行テーブル56を更新する。
次に、上記構成のカードコントローラ12の動作について図13を用いて説明する。図13はカードコントローラ12の動作のフローチャートであり、特に4値モードから2値モードへのモード移行に関する処理について示している。
まずカードコントローラ12は、NAND型フラッシュメモリ11の各メモリブロックBLKにおける書き込みアクセス状況を把握する(ステップS10)。アクセス状況の確認は、例えば次のような方法によって行われる。図14はあるメモリブロックBLKの概念図である。第1の実施形態で説明したように、メモリブロックBLKは4値モードであるので128ページを有しており、512kバイトのメモリサイズを有している。カードコントローラ12は、メモリブロックBLKを64ページ毎の第1領域60及び第2領域61に分割して管理する。そして、アクセスカウンタ51が、ホストインタフェースモジュールで受けた書き込み命令とアドレス信号を読み出し、第1領域60及び第2領域61に対する書き込みアクセス数をカウントする。カウントは、例えばいずれかの領域に連続してアクセスがあった際に開始する。
そして、第1領域60と第2領域61とのいずれかにアクセスが集中した場合(ステップS11、YES)、移行命令出力部54が4値モードから2値モードへの移行命令を出力する(ステップS12)。ステップS11の判断は、アクセスカウンタ51におけるカウント数と条件テーブル55におけるモード移行条件との、比較器53における比較結果によって行われる。モード移行条件は、例えばカウント数のモード移行閾値である。そして、カウント数がモード移行閾値を超えた際に、移行命令出力部54が移行命令を出力する。また移行命令出力部54は、モードを移行させた旨をテーブル保持部52へ出力し、移行テーブル56を更新する(ステップS13)。
次に、カードコントローラ12によって移行命令が与えられたNAND型フラッシュメモリ11の様子について説明する。図15乃至図18はメモリブロックBLKの概念図であり、特に図16及び図18はデータの引っ越しまたはキャッシュの撤収の様子を示している。
まず図15に示すように、メモリブロックBLK0は128ページの4値モードであり、512kバイトのメモリサイズを有している。そして、メモリブロックBLK0の第1領域64−1に対する書き込み頻度が高く、ステップS11においてその頻度が条件テーブル55におけるモード移行条件を満たしていたとする。そのため、移行命令出力部54は、第1領域62を2値モードに移行させる移行命令を出力する。
すると図16に示すようにNAND型フラッシュメモリ11は、メモリブロックBLK0のデータの引っ越し時、またはキャッシュの撤収時に、第1領域62におけるデータをメモリブロックBLK1に2値モードで書き込む。メモリブロックBLK1は2値モードであるから128ページであり、256kバイトのメモリサイズを有している。
次に図17に示すように、メモリブロックBLK0の第2領域63に対する書き込み頻度も上昇し、ステップS11においてその頻度が条件テーブル55におけるモード移行条件を満たしたとする。そのため、移行命令出力部54は、第2領域63を2値モードに移行させる移行命令を出力する。
すると図18に示すようにNAND型フラッシュメモリ11は、やはりデータの引っ越し時、またはキャッシュの撤収時に、第2領域63におけるデータをメモリブロックBLK2に2値モードで書き込む。メモリブロックBLK2は2値モードであるから64ページであり、256kバイトのメモリサイズを有している。
上記のように本実施形態に係る構成であると、上記第1の実施形態で説明した(1)、(2)の効果に加えて、下記(3)の効果を併せて得られる。
(3)NAND型フラッシュメモリを効率的に使用出来る。
本実施形態に係る構成であると、管理領域に限らず、データが頻繁に更新される領域を、適宜2値モード移行している。従って、NAND型フラッシュメモリのデータ更新速度を、効率的により向上させることが出来る。
(3)NAND型フラッシュメモリを効率的に使用出来る。
本実施形態に係る構成であると、管理領域に限らず、データが頻繁に更新される領域を、適宜2値モード移行している。従って、NAND型フラッシュメモリのデータ更新速度を、効率的により向上させることが出来る。
なお、上記実施形態ではカードコントローラ12は4値モードから2値モードへ移行させる場合を例に挙げて説明した。しかし、データ更新頻度に応じて2値モードから4値モードへの移行制御を行っても良い。この点について図19を用いて説明する。図19はカードコントローラ12の処理を示すフローチャートである。
まず移行命令出力部54は、テーブル保持部52内の移行テーブル56を確認し、いずれかのメモリブロックBLKが2値モードであるか否かを確認する(ステップS20)。そしていずれかのメモリブロックBLKが2値モードであった場合(ステップS21、YES)、カードコントローラ12はそのブロックBLKにおける書き込みアクセス状況を把握する(ステップS22)。アクセス状況の確認は、アクセスカウンタ51と比較器53によって行う。すなわち移行命令出力部54は、アクセスカウンタ51に対して、ホストインタフェースモジュールで受けた書き込み命令とアドレス信号を読み出し、当該メモリブロックBLKに対する書き込みアクセス数をカウントするよう命令する。また、条件テーブル55内に2値モードから4値モードへの移行条件を保持させておき、この条件とカウント数とを比較器53が比較する。
そして、当該メモリブロックBLKに対するアクセスが頻繁であった場合(ステップS23、YES)、移行命令出力部54が2値モードから4値モードへの移行命令を出力する(ステップS24)。また移行命令出力部54は、モードを移行させた旨をテーブル保持部52へ出力し、移行テーブル56を更新する(ステップS25)。
以上の方法によれば、必要な領域だけを必要な期間だけ2値モードにすることが出来、NAND型フラッシュメモリ11のメモリ領域をより効率的に使用出来る。
また、上記実施形態ではカードコントローラ12がモード移行命令部50をMPU22等とは別に有している場合について説明した。しかし、モード移行命令部50の全ての機能、または比較器53、移行命令出力部54など一部の機能をMPU22が有していても良いし、テーブル保持部52の機能をRAM25が果たしても良い。
また、上記実施形態ではカードコントローラ12がモード移行命令部50をMPU22等とは別に有している場合について説明した。しかし、モード移行命令部50の全ての機能、または比較器53、移行命令出力部54など一部の機能をMPU22が有していても良いし、テーブル保持部52の機能をRAM25が果たしても良い。
[第3の実施形態]
次に、この発明の第3の実施形態に係るカードコントローラについて説明する。本実施形態は、上記第2の実施形態においてメモリカード1が複数のメモリチップ(NAND型フラッシュメモリ11)を有する場合に関するものである。図20は、本実施形態に係るメモリカード1のブロック図である。図示するようにメモリカード1は、上記第1の実施形態において図1を用いて説明した構成において、4つのNAND型フラッシュメモリ11−1、11−2、11−3、11−4を備えている。
次に、この発明の第3の実施形態に係るカードコントローラについて説明する。本実施形態は、上記第2の実施形態においてメモリカード1が複数のメモリチップ(NAND型フラッシュメモリ11)を有する場合に関するものである。図20は、本実施形態に係るメモリカード1のブロック図である。図示するようにメモリカード1は、上記第1の実施形態において図1を用いて説明した構成において、4つのNAND型フラッシュメモリ11−1、11−2、11−3、11−4を備えている。
図21は、各フラッシュメモリ11−1〜11−4におけるメモリセルアレイ30の構成を示すブロック図である。図示するように、各フラッシュメモリ11−1〜11−4は、第1の実施形態で説明したフラッシュメモリ11と同様の構成を有している。すなわち、各々は複数のメモリブロックBLK0、BLK1、BLK3、…を備えており、各メモリブロックBLKは128ページを含んでいる。また各ブロックBLKは4値モードを有している。
上記構成の複数のフラッシュメモリ11−1〜11−4に対して、カードコントローラ12は並列制御を行うことが可能である。以下では、カードコントローラ12がフラッシュメモリ11−1、11−2に対して並列制御を行う場合を例に説明を行う。並列制御とは次のような処理である。カードコントローラ12は、フラッシュメモリ11−1、11−2の各々が備えるブロックBLKi(iは自然数)に対して、同時にデータの書き込み及び読み出しを行う。従って、異なる半導体チップのメモリブロック間で論理アドレスが連続する。
図22は、並列制御が行われる2つのメモリブロックBLK0を等価的に示す回路図である。図示するように、各々のメモリブロックBLK0は、選択トランジスタST1、ST2と複数のメモリセルトランジスタMTとを備えている。選択トランジスタST1のドレインはビット線BLに接続され、選択トランジスタST2のソースはソース線SLに接続される。メモリセルトランジスタMTは、その電流経路が選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されるようにして設けられている。そして、同一行にある選択トランジスタST1のゲートはセレクトゲート線SGDに接続され、同一行にある選択トランジスタST2のゲートはセレクトゲート線SGSに接続される。また、同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワード線WLに共通接続されている。
上記構成において、並列制御が行われる場合には、セレクトゲート線SGD、SGS、及びワード線WLが、メモリブロックBLK0、BLK1間で共通接続されているものと見なすことが出来る。従って、メモリブロックBLK0、BLK1について同一のワード線に接続されたメモリセルトランジスタMTには、一括してデータが書き込まれ、またデータが読み出される。
次に、カードコントローラ13によるNAND型フラッシュメモリ11−1、11−2の制御方法について図23を用いて説明する。図23はカードコントローラ12の動作のフローチャートであり、特に4値モードから2値モードへのモード移行に関する処理について示している。
まずカードコントローラ12は、NAND型フラッシュメモリ11−1、11−2の各メモリブロックBLKにおける書き込みアクセス状況を把握する(ステップS30)。アクセス状況の確認は、例えば次のような方法によって行われる。図24はあるメモリブロックBLKの概念図である。メモリブロックBLKは128ページを有しており、また4値モードであるので512kバイトのメモリサイズを有している。カードコントローラ12は、メモリブロックBLKを32ページ毎の第1領域64、第2領域65、第3領域66、及び第4領域67に分割して管理する。そして、アクセスカウンタ51が、ホストインタフェースモジュールで受けた書き込み命令とアドレス信号を読み出し、第1乃至第4領域64〜67に対する書き込みアクセス数をカウントする。カウントは、例えばいずれかの領域に連続してアクセスがあった際に開始する。
そして、領域67〜67のいずれかにアクセスが集中した場合(ステップS31、YES)、移行命令出力部54が4値モードから2値モードへの移行命令を出力する(ステップS32)。ステップS31の判断は、上記第2の実施形態で説明したように、アクセスカウンタ51におけるカウント数と条件テーブル55におけるモード移行条件との、比較器53における比較結果によって行われる。更に移行命令出力部54は、モードを移行させた旨をテーブル保持部52へ出力し、移行テーブル56を更新する(ステップS33)。そしてMPU22は並列制御を終了する(ステップS34)。
上記処理につき、具体的に説明する。図25乃至図28はメモリブロックBLKの概念図であり、特に図26及び図28はデータの引っ越しまたはキャッシュの撤収の様子を示している。また、フラッシュメモリ11−1、11−2が並列制御された際のメモリブロックBLK0の場合を例に挙げて説明する。なお、フラッシュメモリ11−1のメモリブロックBLK0の第1乃至第4領域をそれぞれ第1乃至第4領域64−1〜67−1と呼び、フラッシュメモリ11−2のメモリブロックBLK0の第1乃至第4領域をそれぞれ第1乃至第4領域64−2〜67−2と呼ぶことにする。
まず図25に示すように、メモリブロックBLK0は128ページの4値モードであり、512kバイトのメモリサイズを有している。そして、メモリブロックBLK0の第1領域62に対する書き込み頻度が高く、ステップS25においてその頻度が条件テーブル55におけるモード移行条件を満たしていたとする。この際、フラッシュメモリ11−1、11−2は並列制御が行われているので、フラッシュメモリ11−1の第1領域64−1につき書き込み頻度が高い場合には、当然にフラッシュメモリ11−2の第1領域64−2についても書き込み頻度が高いことになる。そのため移行命令出力部54は、第1領域64−1、64−2を2値モードに移行させる移行命令を出力する。
すると図26に示すようにNAND型フラッシュメモリ11−1、11−2は、メモリブロックBLK0のデータの引っ越し時、またはキャッシュの撤収時に、第1領域64−1、64−2におけるデータ(128kバイト+128kバイト=256kバイト)を、いずれかのフラッシュメモリのいずれかのメモリブロックBLKに、2値モードで書き込む。メモリブロックBLK1は2値モードであるから64ページであり、256kバイトのメモリサイズを有している。
次に図27に示すように、メモリブロックBLK0の第4領域67−1、67−2に対する書き込み頻度も上昇し、ステップS31においてその頻度が条件テーブル55におけるモード移行条件を満たしたとする。すると移行命令出力部54は、第2領域67−1、67−2を2値モードに移行させる移行命令を出力する。
移行命令に従ってNAND型フラッシュメモリ11−1、11−2は、やはりデータの引っ越し時、またはキャッシュの撤収時に、第2領域67−1、67−2におけるデータ(128kバイト+128kバイト=256kバイト)を、いずれかのフラッシュメモリのいずれかのメモリブロックBLKに書き込む。この様子を示しているのが図28である。メモリブロックBLK2は2値モードであるから64ページであり、256kバイトのメモリサイズを有している。
上記のように本実施形態に係る構成であると、複数のメモリチップを備え且つ複数のメモリチップを並列制御しているフラッシュメモリにおいても、上記第1、第2の実施形態で説明した(1)乃至(3)の効果が得られる。また、その結果、下記(4)の効果が得られる。
(4)複数のメモリチップを備えたフラッシュメモリの動作速度低下を抑制出来る。
本実施形態では、データ更新が頻繁に行われる領域を2値モードとしている。すると、例えば4つのメモリチップが並列制御される場合、4つのメモリチップの1ページには一括してデータが書き込まれる。従って、メモリブロックBLKが4値の場合には、並列制御されている複数の領域にデータを書き込むのに要する時間は、(800μs×32ページ)=25.6ms程度である。
(4)複数のメモリチップを備えたフラッシュメモリの動作速度低下を抑制出来る。
本実施形態では、データ更新が頻繁に行われる領域を2値モードとしている。すると、例えば4つのメモリチップが並列制御される場合、4つのメモリチップの1ページには一括してデータが書き込まれる。従って、メモリブロックBLKが4値の場合には、並列制御されている複数の領域にデータを書き込むのに要する時間は、(800μs×32ページ)=25.6ms程度である。
この点、本実施形態であると2値モードとした際には並列制御を終了するが、2値モードでデータを書き込むため書き込み速度は4値モードの場合の1/2である。従って、図28のように2つのメモリブロックBLK0の第1領域を2値モードで撤収する際に要する時間は、(400μs×64ページ)=25.6ms程度となり、並列制御の場合と同様である。すなわち、データの書き込み速度の低下を防止しつつ、データの引っ越し回数を低減出来る。その結果、メモリセルへのデータの書き込み回数を低減させ、フラッシュメモリの信頼性を向上出来る。またメモリチップを並列制御する場合に比べて、消去単位を小さく出来るため、データサイズに応じたメモリブロックBLKの使用の自由度を向上出来る。
なお、上記実施形態ではカードコントローラ12が4値モードから2値モードへ移行させる場合を例に挙げて説明した。しかし、第2の実施形態と同様に、データ更新頻度に応じて2値モードから4値モードへの移行制御を行っても良い。この点について図19を29用いて説明する。図29はカードコントローラ12の処理を示すフローチャートである。
まず移行命令出力部54は、テーブル保持部52内の移行テーブル56を確認し、いずれかのメモリブロックBLKが2値モードであるか否かを確認する(ステップS40)。そしていずれかのメモリブロックBLKが2値モードであった場合(ステップS41、YES)、カードコントローラ12はそのブロックBLKにおける書き込みアクセス状況を把握する(ステップS42)。そして、当該メモリブロックBLKに対するアクセスが頻繁であった場合(ステップS43、YES)、移行命令出力部54が2値モードから4値モードへの移行命令を出力する(ステップS44)。また移行命令出力部54は、モードを移行させた旨をテーブル保持部52へ出力し、移行テーブル56を更新する(ステップS45)。これらの処理は、図19で説明したステップS20〜S25と同様である。その後、メモリコントローラ12は並列制御を再開する(ステップS46)。
以上の方法によれば、必要な領域だけを必要な期間だけ2値モードにすることが出来、NAND型フラッシュメモリ11のメモリ領域をより効率的に使用出来る。
なお、上記実施形態では複数のメモリチップを並列制御する場合を例に説明した。しかし、同一チップ内において複数のメモリブロックBLKを並列制御する場合にも適用可能である。
なお、上記実施形態では複数のメモリチップを並列制御する場合を例に説明した。しかし、同一チップ内において複数のメモリブロックBLKを並列制御する場合にも適用可能である。
上記のように、この発明の第1乃至第3の実施形態に係る半導体記憶装置及びメモリカードであると、データの更新が頻繁に行われる領域については2値化し、その他の領域を4値以上の多値モードでデータを書き込んでいる。そのため、データの引っ越しやキャッシュの撤収回数を削減出来、その結果、データの書き込み速度を向上させ、且つ半導体記憶装置の信頼性を向上出来る。
なお、上記実施形態では、4値モードと2値モードとの場合について説明した。しかし、多値NAND型フラッシュメモリは、8値や16値、または32値のデータを保持可能であっても良い。この場合には、データの更新が頻繁な領域について例えば8値モードから4値モードに移行しても良いし、16値モードから8値モードへ移行しても良いし、または32値モードから16値モードへ移行しても良い。また、8値モードから2値モードへ移行する場合や、32値モードから4値モードへ移行するなど、適宜自由に設定可能である。この場合には、引っ越し先または撤収先のメモリブロックBLKのメモリサイズに応じて、アクセス頻度を監視すべき領域(第1領域60、第2領域61等)のサイズを決定すれば良い。
なお、上記第2の実施形態においては、図15乃至図18を用いて説明したように、アクセス頻度によって2値化するか否かを決定している。この際、2値化された領域については使用せず、引っ越しまたは撤去用に用いても良い。この様子を図30に示す。図30はメモリブロックBLKの概念図である。
例えば第2の実施形態の図16で説明したように、メモリブロックBLK0の第1領域が、メモリブロックBLK1に2値モードで引っ越しまたは撤去されたとする。この場合、図30に示すように、第1領域62は以後使用しないこととする。そして、2値化が不要になった際に、メモリブロックBLK1のデータを4値モードでメモリブロックBLK0の第1領域62に書き戻す。
また、いずれかの領域が2値化された際には、他方の領域についてはアクセス頻度にかかわらず2値化しても良い。この様子を示しているのが図31である。例えばメモリブロックBLK0の第1領域62のアクセス頻度が上昇し、第1領域62のデータがメモリブロックBLK1に2値モードで書き込まれたとする。すると、第2領域63だけで1つのメモリブロックBLK0を使用することになる。従って、第2領域63に書き込みアクセスがあった時点で、第2領域63についても無条件でデータをメモリブロックBLK2へ2値モードで書き込む。
また、第1領域62が2値化された状態において第2領域63にアクセスがあった場合には、第1領域62のデータと第2領域63のデータとを集約して、いずれかのメモリブロックBLKに2値モードで引っ越しさせても良い。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
1…メモリカード、2…ホスト機器、11、11−1〜11−4…NAND型フラッシュメモリ、12…カードコントローラ、13…信号ピン、21…ホストインタフェースモジュール、22…MPU、23…フラッシュコントローラ、24…ROM、25…RAM、26…バッファ、30…メモリセルアレイ、31…ページバッファ、40…ユーザデータ領域、41…管理領域、42…ブート領域、43…パーティション情報、44、45…FAT、46…ルートディレクトリエントリ、50…モード移行命令部、51…アクセスカウンタ、52…テーブル保持部、53…比較器、54…移行命令出力部、55…条件テーブル、56…移行テーブル、60〜65…領域
Claims (5)
- 各々が少なくとも2ビット以上のデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリにデータを書き込むカードコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器から第1データを受信するホストインタフェースと、
前記ホストインタフェースで受信した前記第1データの前記半導体メモリ内における管理情報を含む第2データを、前記メモリブロック内の前記メモリセルに対して、前記2ビットのうちの下位ビットのみを用いて書き込む演算処理装置と
を具備し、前記演算処理装置は、前記第2データが更新される度に同一の前記メモリブロックに前記第2データを順次書き込み、且つ
前記メモリブロックにおける最新の前記第2データを、異なる前記メモリブロックにおける前記メモリセルに対して、前記下位ビットのみを用いて書き写す
ことを特徴とするカードコントローラ。 - 前記演算処理装置は、前記第2データが保持される前記メモリブロックとは異なるメモリブロック内の前記メモリセルに対して、前記2ビットのうちの上位ビットと前記下位ビットとの両方を用いて前記第1データを書き込む
ことを特徴とする請求項1記載のカードコントローラ。 - 各々が少なくとも2ビット以上のデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリにデータを書き込むカードコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器からのデータの書き込みアクセスを受信するホストインタフェースと、
各々の前記メモリブロックに対する前記書き込みアクセスの頻度に応じて、前記メモリセルに対して前記2ビットのうちの上位ビットと下位ビットとの両方、または下位ビットのみを用いて前記データを書き込む演算処理装置と
を具備することを特徴とするカードコントローラ。 - 前記演算処理装置は、前記メモリブロックにおける複数の領域に対する前記書き込みアクセス数をカウントするカウンタと、
前記書き込みアクセス頻度の閾値を有する閾値保持部と、
前記カウンタのカウンタ数と前記閾値保持部に保持される前記閾値とを比較する比較器と、
前記比較器における比較の結果、前記カウンタ数が前記閾値を超えた場合に、前記半導体メモリに対して、前記下位ビットにのみデータを書き込むよう命令する命令出力部と
を備えることを特徴とする請求項3記載のカードコントローラ。 - 各々が少なくとも2ビット以上のデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される複数の半導体メモリの動作を制御するカードコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器からのデータの書き込みアクセスを受信するホストインタフェースと、
各々の前記半導体メモリにおける各々の前記メモリブロックに対する前記書き込みアクセスの頻度を監視し、前記書き込みアクセス頻度が所定の閾値以上である場合に前記半導体メモリを、複数の前記半導体メモリにつき一括してデータを書き込む第1動作モードから、個々の前記半導体メモリ毎にデータを書き込む第2動作モードへと遷移させる演算処理装置と
を具備し、前記演算処理装置は前記半導体メモリを前記第1動作モードから前記第2動作モードへと遷移させる際に、該第1動作モードにおいて一括してデータが書き込まれる複数の前記メモリブロック内のデータを、前記2ビットのうちの下位ビットのみを用いて他のメモリブロックに書き写す
ことを特徴とするカードコントローラ。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006182254A JP2008009919A (ja) | 2006-06-30 | 2006-06-30 | カードコントローラ |
US11/767,865 US7580315B2 (en) | 2006-06-30 | 2007-06-25 | Card controlling semiconductor memory including memory cell having charge accumulation layer and control gate |
TW096123174A TWI356996B (en) | 2006-06-30 | 2007-06-27 | Card controller controlling semiconductor memory i |
US12/534,367 US8009503B2 (en) | 2006-06-30 | 2009-08-03 | Card controller controlling semiconductor memory including memory cell having charge accumulation layer and control gate |
US13/190,877 US8243545B2 (en) | 2006-06-30 | 2011-07-26 | Card controller controlling semiconductor memory including memory cell having charge accumulation layer and control gate |
US13/550,051 US8797821B2 (en) | 2006-06-30 | 2012-07-16 | Card controller controlling semiconductor memory including memory cell having charge accumulation layer and control gate |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006182254A JP2008009919A (ja) | 2006-06-30 | 2006-06-30 | カードコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008009919A true JP2008009919A (ja) | 2008-01-17 |
Family
ID=38876453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006182254A Pending JP2008009919A (ja) | 2006-06-30 | 2006-06-30 | カードコントローラ |
Country Status (3)
Country | Link |
---|---|
US (4) | US7580315B2 (ja) |
JP (1) | JP2008009919A (ja) |
TW (1) | TWI356996B (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289014A (ja) * | 2008-05-29 | 2009-12-10 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
JP2010044620A (ja) * | 2008-08-13 | 2010-02-25 | Toshiba Corp | 半導体装置 |
JP2015228197A (ja) * | 2014-06-03 | 2015-12-17 | コニカミノルタ株式会社 | 画像形成装置及びフラッシュメモリの制御方法並びに制御プログラム |
JP2015232888A (ja) * | 2015-07-09 | 2015-12-24 | 株式会社日立製作所 | ストレージシステム |
US9477405B2 (en) | 2011-12-21 | 2016-10-25 | Hitachi, Ltd. | Storage system |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008009919A (ja) | 2006-06-30 | 2008-01-17 | Toshiba Corp | カードコントローラ |
KR100843238B1 (ko) * | 2007-02-16 | 2008-07-03 | 삼성전자주식회사 | 메모리 카드 |
TWI358068B (en) * | 2007-10-19 | 2012-02-11 | Phison Electronics Corp | Writing method for non-volatile memory and control |
JP2009104729A (ja) | 2007-10-24 | 2009-05-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
US7814276B2 (en) * | 2007-11-20 | 2010-10-12 | Solid State System Co., Ltd. | Data cache architecture and cache algorithm used therein |
TWI362667B (en) * | 2007-12-31 | 2012-04-21 | Phison Electronics Corp | Data writing method for flash memory and controller thereof |
JP4653817B2 (ja) * | 2008-03-01 | 2011-03-16 | 株式会社東芝 | メモリシステム |
TWI375962B (en) * | 2008-06-09 | 2012-11-01 | Phison Electronics Corp | Data writing method for flash memory and storage system and controller using the same |
TWI350453B (en) * | 2008-06-13 | 2011-10-11 | Phison Electronics Corp | Method, system and controller thereof for transmitting and dispatching data stream |
TWI381274B (zh) * | 2008-07-10 | 2013-01-01 | Phison Electronics Corp | 用於快閃記憶體的區塊管理方法、儲存系統與控制器 |
US8392687B2 (en) * | 2009-01-21 | 2013-03-05 | Micron Technology, Inc. | Solid state memory formatting |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
TWI399643B (zh) * | 2009-12-31 | 2013-06-21 | Phison Electronics Corp | 快閃記憶體儲存系統及其控制器與資料寫入方法 |
TWI409633B (zh) * | 2010-02-04 | 2013-09-21 | Phison Electronics Corp | 快閃記憶體儲存裝置、其控制器與資料寫入方法 |
TWI494948B (zh) * | 2011-01-31 | 2015-08-01 | Phison Electronics Corp | 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置 |
US9342446B2 (en) * | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US20160216910A1 (en) * | 2013-09-27 | 2016-07-28 | Virtium Llc | Solving MLC NAND paired page program using reduced spatial redundancy |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4969A (en) * | 1847-02-13 | Improvement in thrashing-machines | ||
US109749A (en) * | 1870-11-29 | Improvement in heating-stoves | ||
US215450A (en) * | 1879-05-20 | Improvement in apparatus for ejecting bales from presses | ||
US5603001A (en) * | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
DE19740695C2 (de) * | 1997-09-16 | 2002-11-21 | Infineon Technologies Ag | Datenspeicher mit Mehrebenenhierarchie |
US6801209B1 (en) * | 1999-12-30 | 2004-10-05 | Intel Corporation | Method and apparatus for storing data in a block-based memory arrangement |
JP4299428B2 (ja) | 2000-01-19 | 2009-07-22 | 三星電子株式会社 | 可変容量半導体記憶装置 |
JP4282197B2 (ja) | 2000-01-24 | 2009-06-17 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
JP2001209543A (ja) * | 2000-01-28 | 2001-08-03 | Nec Ic Microcomput Syst Ltd | フラッシュ・マイコンにおけるプログラム書き換え方法 |
US6496425B1 (en) * | 2000-08-21 | 2002-12-17 | Micron Technology, Inc | Multiple bit line column redundancy |
JP2002197878A (ja) * | 2000-12-26 | 2002-07-12 | Hitachi Ltd | 半導体装置及びデータ処理システム |
JP2002251884A (ja) * | 2001-02-21 | 2002-09-06 | Toshiba Corp | 半導体記憶装置及びそのシステム装置 |
KR100432884B1 (ko) * | 2001-08-28 | 2004-05-22 | 삼성전자주식회사 | 공유된 행 선택 구조를 갖는 불 휘발성 반도체 메모리 장치 |
JP4188744B2 (ja) * | 2003-04-08 | 2008-11-26 | 株式会社ルネサステクノロジ | メモリカード |
US6906938B2 (en) * | 2003-08-15 | 2005-06-14 | Micron Technology, Inc. | CAM memory architecture and a method of forming and operating a device according to a CAM memory architecture |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
JP4357331B2 (ja) | 2004-03-24 | 2009-11-04 | 東芝メモリシステムズ株式会社 | マイクロプロセッサブートアップ制御装置、及び情報処理システム |
JP4157501B2 (ja) | 2004-06-30 | 2008-10-01 | 株式会社東芝 | 記憶装置 |
JP4768298B2 (ja) | 2005-03-28 | 2011-09-07 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP2008009919A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | カードコントローラ |
JP2009104729A (ja) | 2007-10-24 | 2009-05-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
-
2006
- 2006-06-30 JP JP2006182254A patent/JP2008009919A/ja active Pending
-
2007
- 2007-06-25 US US11/767,865 patent/US7580315B2/en active Active
- 2007-06-27 TW TW096123174A patent/TWI356996B/zh not_active IP Right Cessation
-
2009
- 2009-08-03 US US12/534,367 patent/US8009503B2/en active Active
-
2011
- 2011-07-26 US US13/190,877 patent/US8243545B2/en active Active
-
2012
- 2012-07-16 US US13/550,051 patent/US8797821B2/en active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289014A (ja) * | 2008-05-29 | 2009-12-10 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
JP2010044620A (ja) * | 2008-08-13 | 2010-02-25 | Toshiba Corp | 半導体装置 |
JP4649503B2 (ja) * | 2008-08-13 | 2011-03-09 | 株式会社東芝 | 半導体装置 |
US9477405B2 (en) | 2011-12-21 | 2016-10-25 | Hitachi, Ltd. | Storage system |
JP2015228197A (ja) * | 2014-06-03 | 2015-12-17 | コニカミノルタ株式会社 | 画像形成装置及びフラッシュメモリの制御方法並びに制御プログラム |
US10091377B2 (en) | 2014-06-03 | 2018-10-02 | Konica Minolta, Inc. | Image forming apparatus, control method for flash memory, and non-transitory computer-readable storage medium |
JP2015232888A (ja) * | 2015-07-09 | 2015-12-24 | 株式会社日立製作所 | ストレージシステム |
Also Published As
Publication number | Publication date |
---|---|
US8797821B2 (en) | 2014-08-05 |
US20110280071A1 (en) | 2011-11-17 |
TWI356996B (en) | 2012-01-21 |
US20090290415A1 (en) | 2009-11-26 |
US20120281473A1 (en) | 2012-11-08 |
US8243545B2 (en) | 2012-08-14 |
US20080002467A1 (en) | 2008-01-03 |
US8009503B2 (en) | 2011-08-30 |
TW200809512A (en) | 2008-02-16 |
US7580315B2 (en) | 2009-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008009919A (ja) | カードコントローラ | |
JP5002201B2 (ja) | メモリシステム | |
KR100874998B1 (ko) | 반도체 집적 회로 장치의 데이터 기록 방식 | |
US9244631B2 (en) | Lower page only host burst writes | |
US7773417B2 (en) | Semiconductor memory device with memory cell having charge accumulation layer and control gate and memory system | |
US10168913B2 (en) | Data storage device and data maintenance method thereof | |
US10740013B2 (en) | Non-volatile data-storage device with spare block pools using a block clearing method | |
JP4233563B2 (ja) | 多値データを記憶する不揮発性半導体記憶装置 | |
US10445008B2 (en) | Data management method for memory and memory apparatus | |
JP5612508B2 (ja) | 不揮発性メモリコントローラ及び不揮発性記憶装置 | |
JP2021026448A (ja) | 記憶部システム、記憶部制御装置および記憶部制御方法 | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
KR102324686B1 (ko) | 라인 방전을 방지함으로써 개선된 판독 성능을 갖는 데이터 저장소 | |
US11222693B2 (en) | Data management method for memory and memory apparatus using the same | |
KR101598379B1 (ko) | 불휘발성 반도체 기억장치 | |
JP2023039459A (ja) | メモリシステムおよび方法 | |
US20110055459A1 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
JP2006048746A (ja) | メモリカード | |
JP2008234714A (ja) | 不揮発性半導体記憶装置の書き込み制御方法及びメモリシステム | |
JP2012164072A (ja) | メモリコントローラ |