JP4256175B2 - 不揮発性半導体メモリ - Google Patents

不揮発性半導体メモリ Download PDF

Info

Publication number
JP4256175B2
JP4256175B2 JP2003027314A JP2003027314A JP4256175B2 JP 4256175 B2 JP4256175 B2 JP 4256175B2 JP 2003027314 A JP2003027314 A JP 2003027314A JP 2003027314 A JP2003027314 A JP 2003027314A JP 4256175 B2 JP4256175 B2 JP 4256175B2
Authority
JP
Japan
Prior art keywords
data
block
page
pages
value
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.)
Expired - Fee Related
Application number
JP2003027314A
Other languages
English (en)
Other versions
JP2004240572A (ja
Inventor
義幸 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2003027314A priority Critical patent/JP4256175B2/ja
Priority to US10/621,451 priority patent/US7006383B2/en
Priority to KR10-2003-0056379A priority patent/KR100502378B1/ko
Publication of JP2004240572A publication Critical patent/JP2004240572A/ja
Priority to US11/227,516 priority patent/US7046558B2/en
Application granted granted Critical
Publication of JP4256175B2 publication Critical patent/JP4256175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリにおける書き換え回数(ライト/イレーズ回数)の管理に関するもので、特に、NAND型フラッシュメモリに使用される。
【0002】
【従来の技術】
近年、NAND型フラッシュメモリを使用したフラッシュメモリカードが、デジタルカメラを始めとする各種携帯情報端末等の記憶媒体として使用されている。図22及び図23に、NAND型フラッシュメモリのメモリセル配置の概要を示す。
【0003】
NAND型フラッシュメモリのメモリセルアレイは、NANDユニットNUと呼ばれる基本単位の集合体から構成される。NANDユニットNUは、直列接続される複数のメモリセルM0,M1,・・・M31からなるセル列と、そのセル列の両端にそれぞれ1つずつ接続される合計2つのセレクトゲートトランジスタST1,ST2とから構成される。
【0004】
NANDユニットNU内では、隣接する2つのメモリセルは、1つのソース/ドレイン領域を共有する。また、セレクトゲートトランジスタST1は、ビット線BLに接続され、セレクトゲートトランジスタST2は、ソース線SLに接続される。
【0005】
メモリセルアレイは、ページ及びブロックという単位によって区分けされている。ページとは、1つのワード線に接続されるメモリセルの集合体を意味する。ページは、例えば、ライト、イレーズ、リードなどの動作を行うに当たっての基本単位となる。ブロックとは、ビット線側セレクトゲートトランジスタST1とソース線側セレクトゲートトランジスタST2との間に挟まれたページの集合体を意味する。
【0006】
図22の例によれば、メモリセルアレイは、X+1個のブロックから構成され、かつ、1つのブロックは、32ページから構成される。1ページのデータ長は、528バイトである。このうち、512バイトは、ユーザが自由に使用できるデータ領域(ユーザーデータ部)であり、残りの16バイトは、冗長部である。一般的には、冗長部には、データ領域に対するエラー訂正のためのECC(Error Correction Circuit)符号、論理アドレス、ブロックの良否を示すフラグなどが格納される。
【0007】
このようなNAND型フラッシュメモリでは、通常、データイレーズは、ブロック単位で行なわれる(ブロックイレーズ)。この場合、ブロックよりも小さい単位、例えば、ページ単位のデータ書き換えでは、書き換えの対象となるページを含むブロック内のセルデータを、一時的に、他のブロックなどのデータ記憶部へ退避させ、書き換えの対象とならないページのセルデータを保護しなければならない。
【0008】
従って、この退避動作に多大な時間を要するなど、NAND型フラッシュメモリの書き換え性能の向上に支障をきたす。
【0009】
この問題を解決するために、近年では、データイレーズをページ単位で行うことができるNAND型フラッシュメモリが開発されている(例えば、特許文献1,2,3を参照)。ページ単位のデータイレーズ(ページイレーズ)では、選択された1つのブロック内において、書き換えの対象となるページのセルデータのみをイレーズすればよいため、原則として、書き換えの対象とならないページのセルデータを他のデータ記憶部へ退避させる必要がない。
【0010】
しかし、ページイレーズ機能を備えたNAND型フラッシュメモリには、信頼性上、以下の問題点がある。
【0011】
選択された1つのブロック内の特定の1ページに対してのみ、ライト/イレーズ動作が繰り返し行われた場合、その選択された1つのブロック内の特定の1ページ以外のページ、即ち、書き換えの対象とならないページのメモリセルに対して、繰り返し、電圧ストレス(中間電圧)がかかることになる。
【0012】
例えば、データライトが実行される度に、書き換えの対象とならないページのメモリセルには、ライト電圧よりも小さい中間電圧がかかる。
【0013】
その結果、選択された1つのブロック内の書き換えの対象とならないページのメモリセルの閾値状態が次第に変動し、最終的には、セルデータの破壊を招くという結果に至る。このようなことから、従来では、ページイレーズ機能を使用して、例えば、ファイルデータの書き換え速度の高速化を図る、ということは、困難とされてきた。
【0014】
【特許文献1】
特開平3−295097号公報
【0015】
【特許文献2】
特開平8−143398号公報
【0016】
【特許文献1】
特開平11−176177号公報
【0017】
【発明が解決しようとする課題】
このように、従来では、不揮発性半導体メモリの書き換え性能の向上を実現するための有効な技術が存在しなかった。
【0018】
本発明の目的は、ページイレーズ機能を活用して、データの書き換え性能を向上させると共に、1つのブロック内のページのデータ書き換え回数を、ページごとに管理することにより、書き換えの対象とならないページのメモリセルに作用する電圧ストレスに起因する問題も回避できる新規な構成の不揮発性半導体メモリを提案することにある。
【0019】
【課題を解決するための手段】
本発明の例に関わる不揮発性半導体メモリは、1つのブロックが複数のページから構成され、ページ単位又はそれよりも小さい単位でデータ書き換えを行うものであり、かつ、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理する制御回路を有している。
【0020】
【発明の実施の形態】
以下、図面を参照しながら、本発明の例に関わる不揮発性半導体メモリについて詳細に説明する。
【0021】
1. 概要
本発明の例は、ページイレーズ機能を有するNAND型フラッシュメモリに適用される。即ち、本発明の例に関わるNAND型フラッシュメモリでは、ページイレーズ機能を活用して、データの書き換え性能の向上を図る。また、ページイレーズ機能に起因する電圧ストレスの問題は、1つのブロック内のページのデータ書き換え回数を、ページごとに管理することにより解決する。その具体例については、後述する各実施の形態で説明する。
【0022】
本発明の例は、特に、小さいサイズのデータの書き換え(例えば、FAT(File Allocation Table)情報の書き換えなど)が頻繁に行われるシステムに適用される。なぜなら、ページイレーズ機能は、主として、このような小さいサイズのデータの書き換えに対して、その性能の向上を図るものだからである。本発明の例は、フラッシュメモリカードや、それを用いた電子機器などに応用される。
【0023】
2. NAND型フラッシュメモリの例
まず、本発明の例を説明するに当たって、その前提となるNAND型フラッシュメモリの例について説明する。
【0024】
図22及び図23は、NAND型フラッシュメモリのメモリセルアレイの例を示している。
【0025】
NAND型フラッシュメモリのメモリセルアレイは、NANDユニットNUと呼ばれる基本単位の集合体から構成される。NANDユニットNUは、直列接続される複数のメモリセルM0,M1,・・・M31からなるセル列と、そのセル列の両端にそれぞれ1つずつ接続される合計2つのセレクトゲートトランジスタST1,ST2とから構成される。
【0026】
NANDユニットNU内では、隣接する2つのメモリセルは、1つのソース/ドレイン領域を共有する。また、セレクトゲートトランジスタST1は、ビット線BLに接続され、セレクトゲートトランジスタST2は、ソース線SLに接続される。
【0027】
メモリセルアレイは、ページ及びブロックという単位によって区分けされている。ページとは、1つのワード線に接続されるメモリセルの集合体を意味する。ページは、例えば、ライト、イレーズ、リードなどの動作を行うに当たっての基本単位となる。ブロックとは、ビット線側セレクトゲートトランジスタST1とソース線側セレクトゲートトランジスタST2との間に挟まれたページの集合体を意味する。
【0028】
図22の例によれば、メモリセルアレイは、X+1個のブロックから構成され、かつ、1つのブロックは、32ページから構成される。1ページのデータ長は、528バイトである。このうち、512バイトは、ユーザが自由に使用できるデータ領域(ユーザーデータ部)であり、残りの16バイトは、冗長部である。一般的には、冗長部には、データ領域に対するエラー訂正のためのECC(Error Correction Circuit)符号、論理アドレス、ブロックの良否を示すフラグなどが格納される。
【0029】
本発明の例が適用されるNAND型フラッシュメモリは、ページイレーズ機能を備える。この場合、ブロックよりも小さい単位、例えば、ページ単位のデータ書き換えを実行するに当たって、原則として、書き換えの対象となるページを含むブロック内のセルデータを、一時的に、他のブロックなどのデータ記憶部へ退避させる必要がないため、データ書き換え速度の高速化を図ることができる。
【0030】
ここで、ページイレーズ時におけるの電位関係、及び、その後のライト時における電位関係について説明する。
【0031】
ページイレーズ時、例えば、図22のブロック1内のページ0のセルデータをイレーズするものと仮定する。この場合、ブロック1内のワード線WL0(図23)を、接地レベル(0V)に設定し、ブロック1内の他のワード線WL1,WL2,・・・WL31(図23)及びブロック1内のウェルを、それぞれ高電位(例えば、20V)に設定する。なお、ウェルは、ブロックごとに設けられ、非選択のブロック内のワード線及びウェルは、接地レベルに設定される。
【0032】
その結果、ワード線WL0とウェルとの間のみに、大きな電位差が発生し、ワード線WL0に接続されているメモリセル、即ち、ページ0内のメモリセルのみのセルデータがイレーズされる。
【0033】
複数ページを同時にイレーズする場合も、同様に行える。即ち、イレーズの対象となるページに対応するワード線の電位を、接地レベルに設定し、その他のワード線を、高電位に設定すればよい。例えば、ブロック1内のページ0〜2のセルデータをイレーズするならば、図23のワード線WL0〜WL2に接地レベルを与え、図23の他のワード線WL3,・・・WL31とウェルに、それぞれ高電位を与えればよい。
【0034】
このように、ページイレーズ動作では、同一のブロック内において、選択された1つ又は複数のページのセルデータのみがイレーズされ、非選択のページのセルデータは、イレーズされずに、そのまま保護される。
【0035】
ライト動作は、ページイレーズ後、ページごとに実行される。
【0036】
例えば、図22のブロック1内のページ0に対してライト動作を実行するものと仮定する。この場合、ブロック1内のワード線WL0(図23)を、高電位(例えば、20V)に設定し、ブロック1内の他のワード線WL1,WL2,・・・WL31(図23)を、中間電位(接地レベルと高電位との間の電位、例えば、10V程度)に設定する。また、ブロック1内のウェルを、接地レベル(例えば、0V)に設定する。
【0037】
その結果、ワード線WL0とウェルとの間のみに、大きな電位差が発生し、ワード線WL0に接続されているメモリセル、即ち、ページ0内のメモリセルに対してのみ、ビット線の電位レベルに応じたデータがライトされる。
【0038】
このように、ライト動作では、選択されたブロック内において、選択された1つのページに対してのみデータがライトされ、この時、残りの非選択のページのメモリセルには、電圧ストレスが印加される。
【0039】
3. 簡単化
本発明の例が適用されるNAND型フラッシュメモリについて説明したが、以下に説明する実施の形態では、その説明を簡略化するため、図1に示すように、1つのブロックは、4ページから構成されているものと仮定する。
【0040】
また、本発明の例では、上述したように、ページイレーズ機能に起因する電圧ストレスの問題に関しては、1つのブロック内のページのデータ書き換え回数を、ページごとに管理することにより解決する。このデータ書き換え回数は、図1に示すように、メモリセルアレイの冗長部に、ページごとに、カウント値として記憶される。
【0041】
本発明の例では、このカウント値が重要であり、冗長部に記憶される他のデータ、即ち、論理アドレス、ブロックの良否を示すフラグ(ブロックステータス)、ECC符号などは、従来と同じである。そこで、以下に説明する実施の形態では、冗長部については、説明の簡単化のため、データ書き換え回数、即ち、カウント値のみを示すことにする。
【0042】
また、NAND型フラッシュメモリの説明において、ライト動作時に、非選択のページのメモリセルに電圧ストレスが印加されることを説明した。ここで、セルデータが破壊されることなく、この電圧ストレスにメモリセルが耐え得る回数、即ち、非選択のページ内のメモリセルが経験し得るデータ書き換え回数(ライト/イレーズ回数)の最大値(許容値)を、32回と仮定する。
【0043】
4. 実施の形態1
以下、実施の形態1について説明する。
【0044】
この実施の形態の特徴は、ページイレーズ機能を有するNAND型フラッシュメモリにおいて、ページ単位で、データ書き換え回数を管理し、1つのブロック内の各ページのデータ書き換え回数が所定の条件を満たしたときに、その1つのブロックについてリフレッシュ動作を行う、という点にある。
【0045】
ここで、データ書き換えは、1つ又は複数のページ単位で行ってもよく、また、ブロック単位で行ってもよい。重要な点は、データ書き換えを行う度に、データ書き換えを実行したページに対して、ページごとに、データ書き換え回数をカウントすることにある。なお、後述するが、カウント方法は、特に、限定されない。
【0046】
また、ここで言う「リフレッシュ動作」とは、1つのブロック内の特定のページ(全ページ又は1つ以上のページ)に対して、データの再書き込み(rewrite)を行うことである。リフレッシュ動作の意味又は目的は、非選択ページのデータが電圧ストレスにより破壊される前に、その非選択ページのデータをリフレッシュするという点にあり、意味的又は目的的には、DRAMのリフレッシュ動作と同じである。なお、リフレッシュ動作の方法についても、後述するように、特に、限定されない。
【0047】
図2は、本発明の実施の形態1に関わるシステムを示している。図3は、本発明の実施の形態1に関わるシステムの動作の主要部を示している。
【0048】
メモリ10とは、例えば、ページイレーズ機能を有するNANDフラッシュメモリのことである。コントローラ11とは、メモリ10の動作をコントロールし、かつ、ページごとのデータ書き換え回数を管理するコントロール回路のことである。
【0049】
メモリ10とコントローラ11は、1チップ化されていてもよいし、それぞれ別のチップに形成されていてもよい。また、両者は、メモリカードのような1つの機器内に配置されていてもよいし、メモリカードと電子機器のように、別の機器内に配置されていてもよい。
【0050】
まず、メモリ10は、コントローラ11からの書き換え信号を受けると、データ書き換えを行うページを含む選択されたブロック内の全ページのカウント値のリードを実行する(ステップST1〜ST2)。
【0051】
コントローラ11は、選択されたブロック内の全ページのうち、データ書き換えを実行するページに対して、カウント値の更新を行う。ここでは、カウント方法に応じて、カウントの仕方が異なるため、カウント値の更新という言葉を使用している(ステップST2)。
【0052】
この後、データイレーズ及びデータライトを実行する(ステップST3〜ST4)。
【0053】
データイレーズは、ページ単位でイレーズを実行するページイレーズでもよいし、ブロック単位又はチップ単位でイレーズを実行するブロックイレーズ又はチップイレーズでもよい。要は、メモリ10が、ページ単位でイレーズするページイレーズ機能を有していればよい。
【0054】
データライトは、ページ単位で実行される。選択されたブロック内の複数又は全てのページに対するデータ書き換えを実行する場合には、例えば、ソース線に近いメモリセルから順に、1ページずつ、データライトを実行する。データライトでは、新たなデータがデータ領域に記憶されると共に、新たなカウント値が冗長部に記憶される。
【0055】
次に、コントローラ11は、選択されたブロック内の各ページのカウント値に基づいて、データ書き換え回数が最大値(許容値)に達したか否かを判断する(ステップST5)。
【0056】
データ書き換え回数が最大値(許容値)に達していない場合には、本発明に関わる動作としては、特に、何も行わない。即ち、メモリ10は、コントローラ11のコントロールの下で、通常の動作を行う。
【0057】
データ書き換え回数が最大値(許容値)に達している場合には、コントローラ11は、メモリ10に対して、リフレッシュ動作を行う命令を出す。リフレッシュ動作の方法については、後に詳述する。リフレッシュ動作を行ったら、原則として、その選択されたブロック内の各ページのデータ書き換え回数(カウント値)を初期化する。但し、カウント方法によっては、データ書き換え回数を初期化しなくてもよい場合がある(ステップST6)。
【0058】
5. 実施の形態2
以下、実施の形態2について説明する。
【0059】
この実施の形態は、実施の形態1の変形例である。この実施の形態では、実施の形態1における言葉の定義及びその他の条件がそのまま適用される。
【0060】
実施の形態1では、データ書き換え回数が所定の条件を満たしたときにリフレッシュ動作を行った。
【0061】
しかし、この場合、最後のデータ書き換えの対象となるページについては、データ書き換え(イレーズ及びライト)を実行した後に、連続して、リフレッシュ動作(イレーズ及びライト)が実行されることになる。つまり、最後のデータ書き換え動作は、冗長となる。
【0062】
そこで、この実施の形態では、最後のデータ書き換えの対象となるページに対してのデータ書き換え動作については、リフレッシュ動作の中で行うようにする。このようにすれば、無駄なデータ書き換え動作をなくすことができ、データ書き換え性能の向上を図ることができる。
【0063】
図2は、本発明の実施の形態2に関わるシステムを示している。図4は、本発明の実施の形態2に関わるシステムの動作の主要部を示している。
【0064】
メモリ10及びコントローラ11については、既に、上述の実施の形態1で説明したため、ここでは、省略する。
【0065】
まず、メモリ10は、コントローラ11からの書き換え信号を受けると、データ書き換えを行うページを含む選択されたブロック内の全ページのカウント値のリードを実行する(ステップST1〜ST2)。
【0066】
コントローラ11は、選択されたブロック内の全ページのうち、データ書き換えを実行するページに対して、カウント値の更新を行う。カウント値の更新という言葉は、上述したように、カウント方法に応じてカウントの仕方が異なるために使用したものである(ステップST2)。
【0067】
次に、コントローラ11は、選択されたブロック内の各ページのカウント値に基づいて、データ書き換え回数が最大値(許容値)に達したか否かを判断する(ステップST3)。
【0068】
データ書き換え回数が最大値(許容値)に達していない場合には、データイレーズ及びデータライトを実行する(ステップST4〜ST5)。
【0069】
データイレーズは、ページ単位でイレーズを実行するページイレーズでもよいし、ブロック単位又はチップ単位でイレーズを実行するブロックイレーズ又はチップイレーズでもよい。
【0070】
データライトは、ページ単位で実行される。選択されたブロック内の複数又は全てのページに対するデータ書き換えを実行する場合には、例えば、ソース線に近いメモリセルから順に、1ページずつ、データライトを実行する。データライトでは、新たなデータがデータ領域に記憶されると共に、新たなカウント値が冗長部に記憶される。
【0071】
データ書き換え回数が最大値(許容値)に達している場合には、コントローラ11は、メモリ10に対して、リフレッシュ動作を行う命令を出す(ステップST6)。
【0072】
リフレッシュ動作の方法については、後に詳述するが、実施の形態2では、少なくとも、選択されたブロック内のデータ書き換えの対象となるページについては、このリフレッシュ動作によってデータ書き換えを実行する。また、選択されたブロック内のデータ書き換えの対象とならないページについては、通常のリフレッシュ動作が実行される。
【0073】
リフレッシュ動作を行ったら、原則として、その選択されたブロック内の各ページのデータ書き換え回数(カウント値)を初期化する。但し、カウント方法によっては、データ書き換え回数を初期化しなくてもよい場合がある。
【0074】
6. 実施の形態1,2に関する実施例
以下、実施の形態1,2に関する実施例について説明する。
【0075】
(1) 実施例1
▲1▼ カウント方法
図5は、本発明の実施例1に関わるカウント方法を示している。
【0076】
本例では、カウント値は、NAND型フラッシュメモリのメモリセルアレイ内の冗長部に記憶される。カウント値は、ページに対するデータ書き換え回数を表しており、ページごとに記憶される。
【0077】
リフレッシュの実施は、ブロック内の各ページのカウント値の合計が、最大値(許容値)、32回に達したことを条件とする。即ち、データ書き換え動作に関し、最悪のケースとしては、少なくとも1つのページが一度も選択されない場合が考えられる。この選択されないページ内のメモリセルについては、32回までのデータ書き換えに起因する電圧ストレスに耐え得ることから、上述のような条件を設定する。
【0078】
なお、実施例1の説明において、物理アドレス0,1,2,3とは、アドレス信号0,1,2,3により選択されるメモリセル、即ち、ページ0,1,2,3のことである。
【0079】
物理アドレス0,1,2,3なる言葉を採用した理由は、1本のワード線に接続される複数のメモリセル(1物理アドレス)の各々が1ビットデータを記憶する場合には、1ページは、1物理アドレスに等しくなるが、複数ビットを記憶する場合(多値メモリの場合)には、1ページは、1物理アドレスに等しくならないことを考慮したものである。
【0080】
論理アドレス0,1,2,3とは、アドレス信号0,1,2,3のことである。
【0081】
また、例えば、物理アドレス0に記憶されるデータは、物理アドレス0が論理アドレス0により選択されるということから、「LA0」と記載する。なお、各メモリセルに記憶されるデータは、1ビットであるか、又は、多ビットであるかを問わない。同様の理由により、物理アドレス1,2,3に記憶されるデータは、「LA1」、「LA2」、「LA3」と記載する。「E」は、メモリセルがイレーズ状態にあることを示している。
【0082】
(a) 初期状態
ブロック内の全ての物理アドレス(ページ)0,1,2,3内のメモリセルは、イレーズ状態にある。
【0083】
(b) ライト
まず、物理アドレス0にデータLA0がライトされ、物理アドレス1にデータLA1がライトされ、物理アドレス2にデータLA2がライトされ、物理アドレス3にデータLA3がライトされる。
【0084】
物理アドレス0に対するデータLA0のライト時には、物理アドレス0のカウント値、即ち、データ書き換え回数として、“1”が冗長部にライトされる。同様に、物理アドレス1,2,3に対するデータLA1,2,3のライト時には、物理アドレス1,2,3のカウント値、即ち、データ書き換え回数として、“1”が冗長部にライトされる。
【0085】
(c) 及び(d) 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0086】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。また、図2のコントローラ11において、データ書き換えの対象となる物理アドレス0のカウント値に、“1”が加算される。その結果、物理アドレス0のカウント値は、“2”になる。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0087】
この後、物理アドレス0に記憶されたデータLA0及びカウント値のイレーズが実行される((c)参照)。続けて、物理アドレス0に対して、更新データLA0及びカウント値(=“2”)がライトされる((d)参照)。
【0088】
また、図2のコントローラ11において、全ての物理アドレス0,1,2,3のカウント値の合計値が算出される。この時点では、物理アドレス0のカウント値は、“2”であり、また、物理アドレス1,2,3のカウント値は、“1”であるため、全ての物理アドレス0,1,2,3のカウント値の合計値は、“5”となる。この合計値は、最大値(許容値)、“32”よりも小さい。
【0089】
従って、この時点では、リフレッシュ動作は、行われない。
【0090】
(e) 及び(f) 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス2のデータ更新要求を出力する(図2参照)。
【0091】
ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。また、図2のコントローラ11において、データ書き換えの対象となる物理アドレス2のカウント値に、“1”が加算される。その結果、物理アドレス2のカウント値は、“2”になる。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0092】
この後、物理アドレス2に記憶されたデータLA2及びカウント値のイレーズが実行される((e)参照)。続けて、物理アドレス2に対して、更新データLA2及びカウント値(=“2”)がライトされる((f)参照)。
【0093】
また、図2のコントローラ11において、全ての物理アドレス0,1,2,3のカウント値の合計値が算出される。この時点では、物理アドレス0,2のカウント値は、“2”であり、また、物理アドレス1,3のカウント値は、“1”であるため、全ての物理アドレス0,1,2,3のカウント値の合計値は、“6”となる。この合計値は、最大値(許容値)、“32”よりも小さい。
【0094】
従って、この時点でも、リフレッシュ動作は、行われない。
【0095】
(g) リフレッシュ
データ更新要求に従い、上述の(c)及び(d)の動作又は(e)及び(f)の動作と同様の動作が実行され、最終的に、物理アドレス0,1,2,3のカウント値が、(g) に示すようになったとする。
【0096】
図2のコントローラ11は、物理アドレス0,1,2,3のカウント値の合計値が“32”であることを確認すると、リフレッシュ動作を行う命令を、図2のメモリ10に与える。
【0097】
本例の場合、物理アドレス0,1,2,3のカウント値は、全て、“1”以上となっている。即ち、物理アドレス0,1,2,3のいずれに関しても、32回のデータ書き換え動作のうち、少なくとも1回は、データ書き換えの対象となっている。従って、データ書き換えの対象とならない状態で32回の電圧ストレスを受けた物理アドレスは、存在しない。
【0098】
しかし、上述したように、最悪のケースとしては、32回のデータ書き換え動作において、少なくとも1つの物理アドレスが、一度も選択されない場合が考えられる。この場合、その少なくとも1つの物理アドレスについては、データ書き換えの対象とならない状態で32回の電圧ストレスを受けたことになる。
【0099】
そこで、物理アドレス0,1,2,3のカウント値の合計値が、最大値(許容値)、“32”に達したときは、各物理アドレス0,1,2,3のカウント値に関係なく、リフレッシュ動作を実行する。
【0100】
なお、本例では、初期状態で全ての物理アドレス0,1,2,3がイレーズ状態で、かつ、最初の1回目は、全ての物理アドレス0,1,2,3に対するデータライト動作となっている。従って、最悪のケースとしては、正確には、2回目以降、一度もデータ書き換えの対象とならないケースとなる。
【0101】
つまり、メモリセルのデータ破壊が32回の電圧ストレスまで発生しないとすると、リフレッシュの条件は、物理アドレス0,1,2,3のカウント値の合計値が“33”に達したこと、となる。
【0102】
本例では、リフレッシュの条件は、物理アドレス0,1,2,3のカウント値の合計値に基づいているが、この条件は、メモリの初期状態に応じて変更される。重要な点は、最悪のケースを想定し、この最悪のケースに基づいて、最大値(許容値)を決定することにある。
【0103】
リフレッシュ動作では、データ領域に記憶されるデータについては、再書き込みによりリフレッシュされるが、冗長部のカウント値については、リフレッシュ動作時に、例えば、(b) の状態に初期化される。即ち、リフレッシュにおけるライト動作では、物理アドレス0,1,2,3に対応する冗長部に、それぞれ、カウント値“1”がライトされる。
【0104】
▲2▼ リフレッシュ動作の方法
リフレッシュ動作の方法について説明する。
【0105】
リフレッシュとは、上述のように、ブロック内の全ページ又は1つ以上のページに対して、データの再書き込み(rewrite)を行うことである。リフレッシュの目的は、メモリセルのデータが電圧ストレスによる閾値変動により破壊される前に、そのメモリセルのデータをリフレッシュするという点にあり、この目的が実現できれば、どのような方法を用いてもよい。
【0106】
(a) リフレッシュの例1
例えば、リフレッシュを行うブロック内の全ての物理アドレスのデータを、コントローラ内のメモリ(RAMなど)に転送した後、そのブロック内の全ての物理アドレスのデータをイレーズする。このイレーズは、ブロックイレーズでもよく、また、ページイレーズでもよい。そして、コントローラ内のメモリに一時的に記憶されたデータを、再び、そのブロック内の物理アドレスに戻す。これにより、リフレッシュの対象となった物理アドレスを構成するメモリセルのデータがリフレッシュされる。
【0107】
(b) リフレッシュの例2
まず、リフレッシュを行う一のブロック内の全ての物理アドレスのデータを、リフレッシュを行わない他のブロックに転送した後、その一のブロック内の全ての物理アドレスのデータをイレーズする。このイレーズは、ブロックイレーズでもよく、また、ページイレーズでもよい。そして、他のブロックに一時的に記憶されたデータを、再び、一のブロック内の物理アドレスに戻す。これにより、リフレッシュの対象となった物理アドレスを構成するメモリセルのデータがリフレッシュされる。この例では、一のブロックと他のブロックは、同一チップ内に形成されていてもよいし、それぞれ異なるチップ内に形成されていてもよい。
【0108】
▲3▼ リフレッシュ動作のタイミング
リフレッシュ動作を実施するタイミングは、特に、限定されない。
【0109】
例えば、許容値が“32”の場合、ブロック内の物理アドレスのカウント値の合計値が32回に達し、かつ、32回目の書き換え動作を終えたなら、その後、直ちに、リフレッシュ動作を実行してもよい。また、32回目の書き換え動作を終えた後の適当な時期、例えば、ホストからのアクセスが途絶えた後に、リフレッシュ動作を実行してもよい。
【0110】
なお、実施の形態2に基づく実施例の場合には、32回目のデータ書き換え動作をリフレッシュ動作の中で行っている。このため、リフレッシュ動作は、ブロック内の物理アドレスのカウント値の合計値が32回に達した後、32回目の書き換え動作と共に、直ちに、実行される。
【0111】
▲4▼ その他
本例では、カウント値は、0,1,2,・・・という具合に、“0”から始まり、データ更新回数に応じて“1”ずつ増えていくが、本発明の例は、このような数え方に限定されるものではない。
【0112】
例えば、初期値は、“0”以外の数値、例えば、“2”、二進数では“10”であってもよいし、増加分は、“1”ではなく、他の数値、例えば、“2”であってもよい。この場合、データ書き換え回数の最大値(許容値)も、当然に変わる。本例では、カウント値は、“32”が最大となるため、メモリセルアレイの冗長部としては、“32”までの数をカウントできるだけのビット数を確保しておけば、足りる。つまり、1つの物理アドレスに対しては、冗長部のうちの5ビットを、カウント値を記憶するための領域として使用する。
【0113】
また、カウント値の増加分は、等差数列的でなくてもよい。
【0114】
例えば、メモリセルアレイの冗長部のうち、4バイト、即ち、32ビット分を、カウント値を記憶する領域として使用する場合には、データ書き換え回数は、これら32ビットのうち、“1”状態にあるビットの数により判断してもよい。
【0115】
具体的には、所定の物理アドレスに対応するカウント値の初期値は、“00000・・・000(32ビット)”に設定しておき、データ更新回数に応じて、この領域における“1”の数を増やしていく。例えば、データ更新回数が1回の場合には、“00000・・・001”(32ビットのうち“1”の数は1個)となり、データ更新回数が2回の場合には、“00000・・・011”(32ビットのうち“1”の数は2個)となる。
【0116】
また、例えば、メモリセルアレイの冗長部のうち、4バイト、即ち、32ビット分を、カウント値を記憶する領域として使用する場合には、データ書き換え回数は、これら32ビットのうち、“1”状態にあるビットの位置により判断してもよい。
【0117】
具体的には、所定の物理アドレスに対応するカウント値の初期値は、“00000・・・000(32ビット)”に設定しておき、データ更新回数に応じて、この領域における“1”の位置を変えていく。例えば、データ更新回数が1回の場合には、“00000・・・001”(32ビットのうち“1”の位置は右端部)となる。データ更新回数が増えるに従い、“1”の位置を、1つずつ左にシフトさせる。
【0118】
また、カウント値は、データ更新回数に応じて増加させるのではなく、減少させるようにしてもよい。例えば、カウント値の初期値を“32”として、データ更新回数に応じて、この数を、1ずつ、減らしていってもよい。
【0119】
(2) 実施例2
▲1▼ カウント方法
図6は、本発明の実施例2に関わるカウント方法を示している。
【0120】
上述の実施例1では、ページごとにデータ書き換え回数を管理し、コントローラは、データ書き換えの度に、ページごとのデータ書き換え回数に基づいて、ブロック内のデータ書き換え回数の合計値を算出した。
【0121】
これに対し、実施例2では、ブロック内におけるデータ書き換え回数の合計値を管理する。つまり、データ書き換えの対象となったページのカウント値は、そのページに対するデータ書き換え回数ではなく、そのページを含むブロック内におけるデータ書き換え回数の合計値に設定される。
【0122】
従って、コントローラは、データ書き換えの度に、ブロック内の各ページのカウント値のうちから最大値Nmaxであるものを選択すればよい。
【0123】
そして、リフレッシュの実施は、ブロック内の各ページのカウント値のうちの最大値Nmaxが、許容値、32回に達したことを条件とする。なぜなら、データ書き換え動作に関し、最悪のケースとしては、少なくとも1つのページが一度も選択されない場合が考えられるからである。この選択されないページ内のメモリセルについては、32回までのデータ書き換えに起因する電圧ストレスに耐え得ることから、上述のような条件を設定する。
【0124】
なお、実施例2の説明においても、物理アドレス0,1,2,3及び論理アドレス0,1,2,3の意味は、実施例1と同じであるため、ここでは、その説明を省略する。また、LA0、LA1、LA2、LA3及びEの意味についても、実施例1と同じであるため、ここでは、省略する。
【0125】
(a) 初期状態
ブロック内の全ての物理アドレス(ページ)0,1,2,3内のメモリセルは、イレーズ状態にある。
【0126】
(b) ライト
まず、物理アドレス0にデータLA0がライトされ、物理アドレス1にデータLA1がライトされ、物理アドレス2にデータLA2がライトされ、物理アドレス3にデータLA3がライトされる。
【0127】
物理アドレス0に対するデータLA0のライト時には、物理アドレス0のカウント値、即ち、データ書き換え回数として、“1”がライトされる。また、物理アドレス1に対するデータLA1のライト時には、ブロック全体としてみると、2回目のデータ書き換えであるため、物理アドレス1のカウント値、即ち、データ書き換え回数としては、“2”がライトされる。
【0128】
同様に、物理アドレス2に対するデータLA2のライト時には、ブロック全体としてみると、3回目のデータ書き換えであるため、物理アドレス2のカウント値、即ち、データ書き換え回数としては、“3”がライトされる。また、物理アドレス3に対するデータLA3のライト時には、ブロック全体としてみると、4回目のデータ書き換えであるため、物理アドレス3のカウント値、即ち、データ書き換え回数としては、“4”がライトされる。
【0129】
(c) 及び(d) 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0130】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス3のカウント値“4”が最も大きな値を有する。図2のコントローラ11は、物理アドレス3のカウント値“4”に“1”を加算し、カウント値“5”を、データ書き換えの対象となる物理アドレス0のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0131】
この後、物理アドレス0に記憶されたデータLA0及びカウント値のイレーズが実行される((c)参照)。続けて、物理アドレス0に対して、更新データLA0及びカウント値(=“5”)がライトされる((d)参照)。
【0132】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス0のカウント値“5”が最も大きいが、その値は、許容値、“32”に達していない。
【0133】
従って、この時点では、リフレッシュ動作は、行われない。
【0134】
(e) 及び(f) 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス2のデータ更新要求を出力する(図2参照)。
【0135】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス0のカウント値“5”が最も大きな値を有する。図2のコントローラ11は、物理アドレス0のカウント値“5”に“1”を加算し、カウント値“6”を、データ書き換えの対象となる物理アドレス2のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0136】
この後、物理アドレス2に記憶されたデータLA2及びカウント値のイレーズが実行される((e)参照)。続けて、物理アドレス2に対して、更新データLA2及びカウント値(=“6”)がライトされる((f)参照)。
【0137】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス2のカウント値“6”が最も大きいが、その値は、許容値、“32”に達していない。
【0138】
従って、この時点では、リフレッシュ動作は、行われない。
【0139】
(g) リフレッシュ
データ更新要求に従い、上述の(c)及び(d)の動作又は(e)及び(f)の動作と同様の動作が実行され、最終的に、物理アドレス0,1,2,3のカウント値が、(g) に示すようになったとする。
【0140】
図2のコントローラ11は、物理アドレス0,1,2,3のカウント値の最大値Nmaxが“32”であることを確認すると、リフレッシュ動作を行う命令を、図2のメモリ10に与える。
【0141】
本例の場合、物理アドレス0,1,2,3のカウント値は、全て、“1”以上となっている。即ち、物理アドレス0,1,2,3のいずれに関しても、32回のデータ書き換え動作のうち、少なくとも1回は、データ書き換えの対象となっている。従って、データ書き換えの対象とならない状態で32回の電圧ストレスを受けた物理アドレスは、存在しない。
【0142】
しかし、上述したように、最悪のケースとしては、32回のデータ書き換え動作において、少なくとも1つの物理アドレスが、一度も選択されない場合が考えられる。この場合、その少なくとも1つの物理アドレスについては、データ書き換えの対象とならない状態で32回の電圧ストレスを受けたことになる。
【0143】
そこで、物理アドレス0,1,2,3のカウント値の最大値Nmaxが、許容値、“32”に達したときは、各物理アドレス0,1,2,3のカウント値に関係なく、リフレッシュ動作を実行する。
【0144】
なお、本例では、初期状態で全ての物理アドレス0,1,2,3がイレーズ状態で、かつ、最初の1回目は、全ての物理アドレス0,1,2,3に対するデータライト動作となっている。従って、最悪のケースとしては、正確には、2回目以降、一度もデータ書き換えの対象とならないケースとなる。
【0145】
つまり、メモリセルのデータ破壊が32回の電圧ストレスまで発生しないとすると、リフレッシュの条件は、物理アドレス0,1,2,3のカウント値の最大値Nmaxが“33”に達したこと、となる。
【0146】
本例では、リフレッシュの条件は、物理アドレス0,1,2,3のカウント値の最大値Nmaxに基づいているが、この条件は、メモリの初期状態に応じて変更される。重要な点は、最悪のケースを想定し、この最悪のケースに基づいて、許容値を決定することにある。
【0147】
リフレッシュ動作では、データ領域に記憶されるデータについては、再書き込みによりリフレッシュされるが、冗長部のカウント値については、リフレッシュ動作時に、例えば、(b) の状態に初期化される。即ち、リフレッシュにおけるライト動作では、物理アドレス0,1,2,3に対応する冗長部に、それぞれ、カウント値“1”,“2”,“3”,“4”がライトされる。
【0148】
▲2▼ リフレッシュ動作の方法
リフレッシュ動作は、メモリセルのデータが電圧ストレスによる閾値変動により破壊される前に、そのメモリセルのデータをリフレッシュするという目的が達成できれば、どのような方法を用いてもよい。例えば、リフレッシュ動作の方法としては、実施例1で説明した例1及び例2を、そのまま使用できるため、その詳細な説明については、省略する。
【0149】
▲3▼ リフレッシュ動作のタイミング
リフレッシュ動作を実施するタイミングは、特に、限定されない。
【0150】
例えば、許容値が“32”の場合、ブロック内の物理アドレスのカウント値の最大値Nmaxが32回に達し、かつ、32回目の書き換え動作を終えたなら、その後、直ちに、リフレッシュ動作を実行してもよい。また、32回目の書き換え動作を終えた後の適当な時期、例えば、ホストからのアクセスが途絶えた後に、リフレッシュ動作を実行してもよい。
【0151】
なお、実施の形態2に基づく実施例の場合には、32回目のデータ書き換え動作をリフレッシュ動作の中で行っている。このため、リフレッシュ動作は、ブロック内の物理アドレスのカウント値の最大値Nmaxが32回に達した後、32回目の書き換え動作と共に、直ちに、実行される。
【0152】
▲4▼ その他
本例では、カウント値は、0,1,2,・・・という具合に、“0”から始まり、ブロック内におけるデータ書き換え回数に応じて“1”ずつ増えていくが、本発明の例は、このような数え方に限定されるものではない。
【0153】
例えば、実施例1と同様に、初期値は、“0”以外の数値、例えば、“2”、二進数では“10”であってもよいし、増加分は、“1”ではなく、他の数値、例えば、“2”であってもよい。この場合、ブロック内のデータ書き換え回数の許容値も、当然に変わる。
【0154】
本例では、カウント値は、“32”よりも大きくなることはないため、メモリセルアレイの冗長部としては、“32”までの数をカウントできるだけのビット数を確保しておけば、足りる。つまり、メモリセルアレイの冗長部のうちの5ビットを、カウント値を記憶するための領域として使用すればよい。
【0155】
また、カウント値の増加分は、等差数列的でなくてもよい。実施例1で説明したように、例えば、メモリセルアレイの冗長部のうち、4バイト、即ち、32ビット分を、カウント値を記憶する領域として使用し、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの数により判断してもよい。また、例えば、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの位置により判断してもよい。
【0156】
また、カウント値は、データ更新回数に応じて増加させるのではなく、減少させるようにしてもよい。例えば、カウント値の初期値を“32”として、データ更新回数に応じて、この数を、1ずつ、減らしていってもよい。
【0157】
(3) 実施例3
▲1▼ カウント方法
図7は、本発明の実施例3に関わるカウント方法を示している。
【0158】
上述の実施例1及び実施例2においては、最悪条件を仮定し、ブロック内におけるデータ書き換え回数の合計値が許容値、例えば、32回に達した時点でリフレッシュ動作を実行する手法を採用した。この場合、ブロック内におけるデータ書き換え回数の合計値が許容値に達すると、各ページにおけるデータ書き換え回数にかかわらず、常に、リフレッシュ動作が行われる。
【0159】
これは、反面、リフレッシュ動作を行う必要がない場合、例えば、ブロック内の各ページが短い周期(32回未満)でデータ書き換えの対象となる場合であっても、ブロック内のデータ書き換え回数が許容値に達すると、必然的にリフレッシュ動作を行うことを意味している。つまり、無駄なリフレッシュ動作が行われる可能性がある。
【0160】
実施例3では、このような無駄なリフレッシュ動作を完全に排除するための手法を提案する。
【0161】
カウント方法に関しては、実施例3は、実施例2と同じである。即ち、データ書き換えの対象となったページのカウント値は、そのページに対するデータ書き換え回数ではなく、そのページを含むブロック内におけるデータ書き換え回数の合計値に設定される。
【0162】
しかし、実施例3では、リフレッシュの発生条件が実施例2と異なる。
【0163】
実施例2では、コントローラは、データ書き換えの度に、ブロック内の各ページのカウント値のうちから最大値Nmaxであるものを選択し、その最大値Nmaxが許容値、例えば、32回に達しているか否かを判断した。これに対し、実施例3では、コントローラは、データ書き換えの度に、ブロック内の各ページのカウント値のうちから最大値Nmaxと最小値Nminとを選択し、その最大値Nmaxと最小値Nminとの差が許容値、例えば、32回に達しているか否かを判断する。
【0164】
ここで、カウント値が最大値Nmaxであるということは、そのカウント値に対応するページのデータ更新が、現在に対して最も近い時期に行われたことを意味する。また、カウント値が最小値Nminであるということは、そのカウント値に対応するページのデータ更新が、現在に対して最も遠い時期に行われたことを意味する。
【0165】
そして、最大値Nmaxと最小値Nminとの差は、カウント値が最小値Nminであるページのデータ更新が最後に行われた後のブロック内のデータ書き換え回数を意味する。つまり、カウント値が最小値Nminであるページ内のメモリセルは、そのページのデータ更新が最後に行われた後、最大値Nmaxと最小値Nminとの差に相当する回数の電圧ストレスを受けたことになる。
【0166】
このように、実施例3では、ブロック内の各ページのカウント値のうち最大値Nmaxと最小値Nminを抽出し、その差分をもって、リフレッシュ動作の必要性を判断している。
【0167】
実施例3の利点は、最大値Nmaxと最小値Nminの差分が許容値未満であれば、リフレッシュ動作を実行することなく、データ書き換え動作を継続して行うことができるという点にある。つまり、実施例3は、無駄なリフレッシュ動作を省くことで、実施例1及び実施例2に比べ、リフレッシュ動作の回数を大幅に減らすことができる。
【0168】
なお、実施例3の説明においても、物理アドレス0,1,2,3及び論理アドレス0,1,2,3の意味は、実施例1と同じであるため、ここでは、その説明を省略する。また、LA0、LA1、LA2、LA3及びEの意味についても、実施例1と同じであるため、ここでは、省略する。
【0169】
(a) 初期状態
ブロック内の全ての物理アドレス(ページ)0,1,2,3内のメモリセルは、イレーズ状態にある。
【0170】
(b) ライト
まず、物理アドレス0にデータLA0がライトされ、物理アドレス1にデータLA1がライトされ、物理アドレス2にデータLA2がライトされ、物理アドレス3にデータLA3がライトされる。
【0171】
物理アドレス0に対するデータLA0のライト時には、物理アドレス0のカウント値、即ち、データ書き換え回数として、“1”がライトされる。また、物理アドレス1に対するデータLA1のライト時には、ブロック全体としてみると、2回目のデータ書き換えであるため、物理アドレス1のカウント値、即ち、データ書き換え回数としては、“2”がライトされる。
【0172】
同様に、物理アドレス2に対するデータLA2のライト時には、ブロック全体としてみると、3回目のデータ書き換えであるため、物理アドレス2のカウント値、即ち、データ書き換え回数としては、“3”がライトされる。また、物理アドレス3に対するデータLA3のライト時には、ブロック全体としてみると、4回目のデータ書き換えであるため、物理アドレス3のカウント値、即ち、データ書き換え回数としては、“4”がライトされる。
【0173】
(c) 及び(d) 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0174】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス3のカウント値“4”が最も大きな値を有する。図2のコントローラ11は、物理アドレス3のカウント値“4”に“1”を加算し、カウント値“5”を、データ書き換えの対象となる物理アドレス0のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0175】
この後、物理アドレス0に記憶されたデータLA0及びカウント値のイレーズが実行される((c)参照)。続けて、物理アドレス0に対して、更新データLA0及びカウント値(=“5”)がライトされる((d)参照)。
【0176】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxと最小値Nminを抽出する。そして、この最大値Nmaxと最小値Nminとの差を計算し、この差が、データ書き換え回数の最大値(許容値)、即ち、“32”に達しているか否かを判断する。
【0177】
この時点では、物理アドレス0のカウント値“5”が最も大きく、物理アドレス1のカウント値“2”が最も小さい。従って、最大値Nmax−最小値Nminは、“3”であり、この数値は、“32”よりも小さい。
【0178】
従って、この時点では、リフレッシュ動作は、行われない。
【0179】
(e) 及び(f) 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス2のデータ更新要求を出力する(図2参照)。
【0180】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス0のカウント値“5”が最も大きな値を有する。図2のコントローラ11は、物理アドレス0のカウント値“5”に“1”を加算し、カウント値“6”を、データ書き換えの対象となる物理アドレス2のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0181】
この後、物理アドレス2に記憶されたデータLA2及びカウント値のイレーズが実行される((e)参照)。続けて、物理アドレス2に対して、更新データLA2及びカウント値(=“6”)がライトされる((f)参照)。
【0182】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxと最小値Nminを抽出する。そして、この最大値Nmaxと最小値Nminとの差を計算し、この差が、データ書き換え回数の最大値(許容値)、即ち、“32”に達しているか否かを判断する。
【0183】
この時点では、物理アドレス2のカウント値“6”が最も大きく、物理アドレス1のカウント値“2”が最も小さい。従って、最大値Nmax−最小値Nminは、“4”であり、この数値は、“32”よりも小さい。
【0184】
従って、この時点では、リフレッシュ動作は、行われない。
【0185】
(g) リフレッシュ
データ更新要求に従い、上述の(c)及び(d)の動作又は(e)及び(f)の動作と同様の動作が実行され、最終的に、物理アドレス0,1,2,3のカウント値が、(g) に示すようになったとする。
【0186】
図2のコントローラ11は、物理アドレス0,1,2,3のカウント値から最大値Nmaxと最小値Nminを抽出する。最大値Nmaxは、物理アドレス0のカウント値であり、その値は、“65”である。また、最小値Nminは、物理アドレス3のカウント値であり、その値は、“33”である。最大値Nmaxと最小値Nminとの差は、“32”となる。
【0187】
つまり、物理アドレス3のデータが最後に更新された後、物理アドレス3は、32(=65−33)回のデータ書き換えによる電圧ストレスを受けていることになる。従って、図2のコントローラ11は、この事実を確認すると、リフレッシュ動作を行う命令を、図2のメモリ10に与える。
【0188】
本例では、ブロック内の各物理アドレス0,1,2,3のカウント値の最大値Nmaxと最小値Nminの差に基づいて、リフレッシュ動作の必要性を判断している。このため、その差が許容値未満であれば、リフレッシュ動作を行う必要がない。場合によっては、リフレッシュ動作を全く行わずに、データ書き換え動作を継続して行うことができる。
【0189】
また、本例では、カウント値の最大値Nmaxと最小値Nminの差に基づいてリフレッシュ動作の必要性を判断しているため、実施例1,2のように、リフレッシュの条件がメモリの初期状態に依存することはない。また、本例では、実施例1,2のように、最悪のケースを想定して、リフレッシュの条件を設定しなくてもよい。
【0190】
リフレッシュ動作では、データ領域に記憶されるデータについては、再書き込みによりリフレッシュされるが、冗長部のカウント値については、リフレッシュ動作時に、例えば、(b) の状態に初期化される。即ち、リフレッシュにおけるライト動作では、物理アドレス0,1,2,3に対応する冗長部に、それぞれ、カウント値“1”,“2”,“3”,“4”がライトされる。
【0191】
なお、本例では、上述のリフレッシュ条件(Nmax−Nmin≧32)を満たしたときに、カウント値が最小値Nminである物理アドレスについてのみ、リフレッシュを行うようにしてもよい。この場合、リフレッシュ動作後には、リフレッシュの対象となった物理アドレスのカウント値のみを更新し、他のカウント値を初期化することなく、そのまま継続してカウントする。
【0192】
例えば、図7の例の場合には、(g) において、物理アドレスLA3のみについてリフレッシュを行い、このリフレッシュ動作によって、物理アドレスLA3のカウント値を“66”(=65+1)に設定してもよい。物理アドレスLA0,LA1,LA2のデータは、リフレッシュされないため、そのカウント値については、現状を維持させる。
【0193】
▲2▼ リフレッシュ動作の方法
リフレッシュ動作は、メモリセルのデータが電圧ストレスによる閾値変動により破壊される前に、そのメモリセルのデータをリフレッシュするという目的が達成できれば、どのような方法を用いてもよい。例えば、リフレッシュ動作の方法としては、実施例1で説明した例1及び例2を、そのまま使用できるため、その詳細な説明については、省略する。
【0194】
但し、本例では、上述したように、リフレッシュ動作は、ブロック内の全ての物理アドレスについて行ってもよく、また、ブロック内の物理アドレスのうち、カウント値が最小値Nminである物理アドレスのみについて行ってもよい。
【0195】
▲3▼ リフレッシュ動作のタイミング
リフレッシュ動作を実施するタイミングは、特に、限定されない。
【0196】
例えば、許容値が“32”の場合、ブロック内の物理アドレスのカウント値の最大値Nmaxと最小値Nminとの差が“32”に達したなら、データ書き換え動作を終えた後、直ちに、リフレッシュ動作を実行してもよい。また、データ書き換え動作を終えた後の適当な時期、例えば、ホストからのアクセスが途絶えた後に、リフレッシュ動作を実行してもよい。
【0197】
実施の形態2に基づく実施例の場合には、最大値Nmaxと最小値Nminとの差が“32”に達したときのデータ書き換え動作をリフレッシュ動作の中で行っている。このため、リフレッシュ動作は、ブロック内の物理アドレスのカウント値の最大値Nmaxと最小値Nminとの差が“32”に達したら、直ちに実行される。
【0198】
▲4▼ その他
本例では、カウント値は、0,1,2,・・・という具合に、“0”から始まり、ブロック内におけるデータ書き換え回数に応じて“1”ずつ増えていくが、本発明の例は、このような数え方に限定されるものではない。
【0199】
例えば、実施例1と同様に、初期値は、“0”以外の数値、例えば、“2”であってもよいし、増加分は、“1”ではなく、他の数値、例えば、“2”であってもよい。
【0200】
本例では、最大値Nmax−最小値Nminがリフレッシュ条件を満たさないと、カウント値は、限度なく、増加していく。しかし、カウント値を記憶するための冗長部のビット数には、限りがある。
【0201】
そこで、例えば、カウント値が、それを記憶するための冗長部のビット数により決まる上限値に到達したときは、上述のリフレッシュ条件にかかわらず、ブロック内の全ての物理アドレスについてリフレッシュを行い、かつ、全ての物理アドレスのカウント値を初期化してもよい。
【0202】
カウント値の増加分は、等差数列的でなくてもよい。実施例1で説明したように、例えば、メモリセルアレイの冗長部のうち、4バイト、即ち、32ビット分を、カウント値を記憶する領域として使用し、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの数により判断してもよい。また、例えば、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの位置により判断してもよい。
【0203】
また、カウント値は、データ更新回数に応じて増加させるのではなく、減少させるようにしてもよい。例えば、カウント値の初期値を、カウント値を記憶するための冗長部のビット数により決まる上限値として、データ更新回数に応じて、この数を、1ずつ、減らしていってもよい。
【0204】
7. 実施の形態3
以下、実施の形態3について説明する。
【0205】
実施の形態3は、データ更新中における電源の遮断(メモリカードで言えば、本体からの不意の抜き取りなどを含む)に対応できるシステムに関する。
【0206】
データ更新(データ書き換え)の方法としては、実施の形態1,2に関わる実施例1,2,3で説明したように、例えば、a. フラッシュメモリのブロック内の全ての物理アドレスのカウント値をコントローラ内の揮発性メモリ(RAMなど)に転送し、この後、b. データ更新の対象となる物理アドレスの古いデータ及び古いカウント値をイレーズし、この後、c. 新しいデータをデータ更新の対象となる物理アドレスに、新しいカウント値を冗長部に、それぞれ再書き込みする、という方法が採用される。
【0207】
この場合、b.のステップからc.のステップまでの間に電源の遮断が発生すると、データ更新の対象となる物理アドレスに関しては、古いデータ、新しいデータ、古いカウント値及び新しいカウント値の全てが消失してしまう。
【0208】
後述するが、本発明の例は、パソコンなどのファイル更新に適用される場合、比較的小さい容量で、かつ、高頻度でデータ更新が行われるFAT(File Allocation Table)情報の更新に対して有効になるものと思われる。しかし、本発明の例を適用したことにより、電源の遮断などに起因してデータが失われてしまうと、パソコンなどのシステムは、致命的な損傷を受けることになる。
【0209】
実施の形態3は、このような電源の遮断などにも対応できるように、実施の形態1を改良した改良例である。
【0210】
なお、以下の実施の形態3は、主として、データ更新方法についての説明となるが、リフレッシュ方法に適用することもできる。即ち、実施の形態3によれば、同様の原理により、リフレッシュ動作時の電源の遮断などに対応することができる。
【0211】
リフレッシュ動作の定義や意味などについては、実施の形態1と同じであるため、ここでは、省略する。
【0212】
図2は、本発明の実施の形態3に関わるシステムを示している。図8は、本発明の実施の形態3に関わるシステムの動作の主要部を示している。
【0213】
メモリ10及びコントローラ11については、既に、上述の実施の形態1で説明したため、ここでは、省略する。
【0214】
実施の形態3では、前提条件として、2つのメモリ領域(不揮発)をペアで使用する。各々のメモリ領域は、1つ以上のページを有する。また、2つのメモリ領域は、同じ数のページを有する。
【0215】
2つのメモリ領域は、共に、メモリ10の1つのブロック内に配置されていてもよい。また、2つのメモリ領域は、それぞれメモリ10の異なるブロック内に配置されていてもよい。さらに、2つのメモリ領域は、それぞれ異なるメモリ内に配置されていてもよい。
【0216】
まず、メモリ10は、コントローラ11からの書き換え信号を受けると、データ書き換えを行うページを含む2つのメモリ領域内の全ページのデータ及びカウント値のリードを実行する(ステップST1〜ST2)。
【0217】
コントローラ11は、データ書き換えを実行するページに対して、カウント値の更新を行う。ここで、実施の形態3が実施の形態1と異なる点は、この後、直ちに、データライトを実行し、その後に、データイレーズを実行する点にある(ステップST3〜ST4)。
【0218】
1つのメモリ領域内のページに対してデータ書き換えを実行する場合、データライトは、その1つのメモリ領域とペアとなっている他の1つのメモリ領域内のページに対して実行される。データライトでは、新たなデータがデータ領域に記憶されると共に、新たなカウント値が冗長部に記憶される。
【0219】
データライトの後に、データイレーズが行われる。
データイレーズは、1つのメモリ領域内のページに対して実行される。データイレーズは、ページ単位でイレーズを実行するページイレーズでもよいし、ブロック単位又はチップ単位でイレーズを実行するブロックイレーズ又はチップイレーズでもよい。
【0220】
次に、コントローラ11は、2つのメモリ領域内の各ページのカウント値に基づいて、データ書き換え回数が最大値(許容値)に達したか否かを判断する(ステップST5)。
【0221】
データ書き換え回数が最大値(許容値)に達していない場合には、本発明に関わる動作としては、特に、何も行わない。即ち、メモリ10は、コントローラ11のコントロールの下で、通常の動作を行う。
【0222】
データ書き換え回数が最大値(許容値)に達している場合には、コントローラ11は、メモリ10に対して、リフレッシュ動作を行う命令を出す。リフレッシュ動作を行ったら、原則として、2つのメモリ領域内の各ページのデータ書き換え回数(カウント値)を初期化する。但し、カウント方法によっては、データ書き換え回数を初期化しなくてもよい場合がある(ステップST6)。
【0223】
このように、実施の形態3では、2つのメモリ領域をペアで使用し、常に、新しいデータ及び新しいカウント値を2つのメモリ領域の一方にライトした後に、2つのメモリ領域の他方に記憶された古いデータ及び古いカウント値をイレーズするようにしている。このため、データ書き換え動作の最中に、電源の遮断などが発生しても、少なくとも、2つのメモリ領域のいずれか一方には、データ及びカウント値が保存されているため、システムとして致命的な損傷を受けることはない。
【0224】
8. 実施の形態4
以下、実施の形態4について説明する。この実施の形態は、実施の形態3の変形例である。リフレッシュ動作の定義や意味などについては、実施の形態1と同じであるため、ここでは、省略する。
【0225】
実施の形態3では、データ書き換え回数が所定の条件を満たしたときにリフレッシュ動作を行った。これに対し、実施の形態4では、カウント値が許容値に達する最後のデータ書き換え動作については、リフレッシュ動作の中で行うようにする。
【0226】
実施の形態3では、電源の不意の遮断などによるデータ消失を防止するため、2つのメモリ領域(不揮発)をペアで使用し、データ更新動作では、ライト動作を行った後にイレーズ動作を行うようにしている。しかし、リフレッシュ動作は、2つのメモリ領域に対して、同時に行うことになる。
【0227】
従って、実施の形態4では、カウント値が許容値に達する最後のデータ更新動作については、例えば、実施の形態2と同様の方法により、リフレッシュ動作(データ書き換え動作を含む)を実行する。
【0228】
但し、未使用のメモリ領域(不揮発)が存在すれば、リフレッシュ時に、その未使用のメモリ領域に、新しいデータ及び新しいカウント値をライトした後、2つのメモリ領域のデータ及びカウント値をイレーズしてもよい。
【0229】
図2は、本発明の実施の形態4に関わるシステムを示している。図9は、本発明の実施の形態4に関わるシステムの動作の主要部を示している。
【0230】
メモリ10及びコントローラ11については、既に、上述の実施の形態1で説明したため、ここでは、省略する。
【0231】
まず、メモリ10は、コントローラ11からの書き換え信号を受けると、データ書き換えを行うページを含む選択されたブロック内の全ページのデータ及びカウント値のリードを実行する(ステップST1〜ST2)。コントローラ11は、選択されたブロック内の全ページのうち、データ書き換えを実行するページに対して、データ書き換え回数の更新を行う(ステップST2)。
【0232】
次に、コントローラ11は、選択されたブロック内の各ページのカウント値に基づいて、データ書き換え回数が最大値(許容値)に達したか否かを判断する(ステップST3)。
【0233】
データ書き換え回数が最大値(許容値)に達していない場合には、データライト及びデータイレーズを実行する(ステップST4〜ST5)。
【0234】
1つのメモリ領域内のページに対してデータ書き換えを実行する場合、データライトは、その1つのメモリ領域とペアとなっている他の1つのメモリ領域内のページに対して実行される。データライトでは、新たなデータがデータ領域に記憶されると共に、新たなカウント値が冗長部に記憶される。
【0235】
データライトの後に、データイレーズが行われる。
データイレーズは、1つのメモリ領域内のページに対して実行される。データイレーズは、ページ単位でイレーズを実行するページイレーズでもよいし、ブロック単位又はチップ単位でイレーズを実行するブロックイレーズ又はチップイレーズでもよい。
【0236】
データ書き換え回数が最大値(許容値)に達している場合には、コントローラ11は、メモリ10に対して、リフレッシュ動作を行う命令を出す(ステップST6)。従って、ペアとなっている2つのメモリ領域内のデータがリフレッシュされると共に、データ書き換えの対象となるページについては、データ書き換えが実行される。
【0237】
リフレッシュ動作を行ったら、原則として、2つのメモリ領域内の各ページのデータ書き換え回数(カウント値)を初期化する。但し、カウント方法によっては、データ書き換え回数を初期化しなくてもよい場合がある。
【0238】
9. 実施の形態3,4に関する実施例
以下、実施の形態3,4に関する実施例について説明する。
【0239】
(1) 実施例1
▲1▼ データ更新方法
図10は、本発明の実施例1に関わるデータ更新方法を示している。
【0240】
なお、本例では、カウント方法として、実施の形態1,2に関する実施例2の方法が適用される。
【0241】
本例においては、1つのブロックは、4つの物理アドレスを有しているが、その1つのブロック内には、その半分、即ち、2つの物理アドレス(2ページ)分のデータのみを格納する。この点において、本例は、1つのブロック内の4つの物理アドレスに、4つの物理アドレス(4ページ)分のデータを格納する実施の形態1,2に関する実施例1,2,3とは異なる。
【0242】
物理アドレス0,1が1つのメモリ領域を構成し、物理アドレス2,3が他の1つのメモリ領域を構成する。これら2つのメモリ領域は、データ更新動作に関して、ペアを構成する。
【0243】
(a) 初期状態
ブロック内の全ての物理アドレス(ページ)0,1,2,3内のメモリセルは、イレーズ状態にある。
【0244】
(b) ライト
まず、物理アドレス0にデータLA0がライトされ、物理アドレス1にデータLA1がライトされる。物理アドレス0に対するデータLA0のライト時には、物理アドレス0のカウント値、即ち、データ書き換え回数として、“1”がライトされる。また、物理アドレス1に対するデータLA1のライト時には、ブロック全体としてみると、2回目のデータ書き換えであるため、物理アドレス1のカウント値、即ち、データ書き換え回数としては、“2”がライトされる。
【0245】
(b) 及び(c) 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0246】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。なお、E(イレーズ状態)で示されるカウント値は、“0”に相当する。この時点では、物理アドレス1のカウント値“2”が最も大きな値を有する。図2のコントローラ11は、物理アドレス1のカウント値“2”に“1”を加算し、カウント値“3”を、物理アドレス2のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0247】
この後、物理アドレス2に対して、更新データLA0及びカウント値(=“3”)がライトされる((c)参照)。そして、この後、物理アドレス0に記憶されたデータLA0及びカウント値のイレーズが実行される((c)参照)。このように、更新データLA0及びカウント値をライトした後に、古いデータLA0及びカウント値をイレーズしているため、不意の電源遮断にも、十分に対応することができる。
【0248】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス2のカウント値“3”が最も大きいが、その値は、許容値、“32”に達していない。
【0249】
従って、この時点では、リフレッシュ動作は、行われない。
【0250】
(c) 及び(d) 物理アドレス1のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス1のデータ更新要求を出力する(図2参照)。
【0251】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス2のカウント値“3”が最も大きな値を有する。図2のコントローラ11は、物理アドレス2のカウント値“3”に“1”を加算し、カウント値“4”を、物理アドレス3のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0252】
この後、物理アドレス3に対して、更新データLA1及びカウント値(=“4”)がライトされる((d)参照)。そして、この後、物理アドレス1に記憶されたデータLA1及びカウント値のイレーズが実行される((d)参照)。
【0253】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス3のカウント値“4”が最も大きいが、その値は、許容値、“32”に達していない。
【0254】
従って、この時点では、リフレッシュ動作は、行われない。
【0255】
(d) 及び(e) 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0256】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス3のカウント値“4”が最も大きな値を有する。図2のコントローラ11は、物理アドレス3のカウント値“4”に“1”を加算し、カウント値“5”を、物理アドレス0のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0257】
この後、物理アドレス0に対して、更新データLA0及びカウント値(=“5”)がライトされる((e)参照)。そして、この後、物理アドレス2に記憶されたデータLA0及びカウント値のイレーズが実行される((e)参照)。
【0258】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス0のカウント値“5”が最も大きいが、その値は、許容値、“32”に達していない。
【0259】
従って、この時点では、リフレッシュ動作は、行われない。
【0260】
(e) 及び(f) 物理アドレス3のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス3のデータ更新要求を出力する(図2参照)。
【0261】
まず、ブロック内の全ての物理アドレス0,1,2,3のカウント値がリードされる。図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス0のカウント値“5”が最も大きな値を有する。図2のコントローラ11は、物理アドレス0のカウント値“5”に“1”を加算し、カウント値“6”を、物理アドレス1のカウント値とする。物理アドレス0,1,2,3のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0262】
この後、物理アドレス1に対して、更新データLA1及びカウント値(=“6”)がライトされる((f)参照)。そして、この後、物理アドレス3に記憶されたデータLA1及びカウント値のイレーズが実行される((f)参照)。
【0263】
また、図2のコントローラ11は、物理アドレス0,1,2,3のカウント値のうちの最大値Nmaxが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス1のカウント値“6”が最も大きいが、その値は、許容値、“32”に達していない。
【0264】
従って、この時点では、リフレッシュ動作は、行われない。
【0265】
(g) リフレッシュ
データ更新要求に従い、上述の動作が繰り返し実行され、最終的に、物理アドレス0,1,2,3のカウント値が、(g) に示すようになったとする。
【0266】
図2のコントローラ11は、物理アドレス0,1,2,3のカウント値の最大値Nmaxが“32”であることを確認すると、リフレッシュ動作を行う命令を、図2のメモリ10に与える。
【0267】
なお、リフレッシュ動作については、実施の形態1,2に関する実施例1,2,3と同じ方法を採用することができる。但し、本例では、上述のデータ更新方法をリフレッシュ方法にも適用できる。
【0268】
例えば、物理アドレス0,1,2,3のカウント値が、(g) に示すような状態にあるものとする。まず、コントローラ11は、ブロック内の物理アドレス0,1のデータ及びカウント値をリードする。
【0269】
この後、物理アドレス2に対して、データLA0及びカウント値(=“1”)をライトし、物理アドレス3に対して、データLA1及びカウント値(=“2”)をライトする。そして、この後、物理アドレス0,1に記憶されたデータLA0、LA1及びカウント値をイレーズする。
【0270】
以上より、リフレッシュ動作は、終了する。
【0271】
このように、実施例1においては、常に、新しいデータをフラッシュメモリにライトしてから、古いデータをイレーズしている。従って、新しいデータをフラッシュメモリにライトしている段階で、電源の遮断などが発生したとしても、最低限、データ更新直前の状態は保存されているため、システムにおける致命的な損傷は回避される。
【0272】
実施例1は、ブロック容量に比較して、十分に少ない容量の論理データの書き換えを行う場合に有効である。このような場合に、1つのブロック内に、本実施例におけるペアを構成する2つのメモリ領域を配置できるからである。
【0273】
▲2▼ リフレッシュ動作の方法
上述のように、リフレッシュ動作の方法としては、実施の形態1,2に関する実施例1で説明した例1及び例2を、そのまま使用できる他、本実施例におけるデータ更新方法を適用することもできる。
【0274】
▲3▼ リフレッシュ動作のタイミング
リフレッシュ動作を実施するタイミングは、特に、限定されない。
【0275】
例えば、許容値が“32”の場合、ブロック内の物理アドレスのカウント値の最大値Nmaxが32回に達し、かつ、32回目の書き換え動作を終えたなら、その後、直ちに、リフレッシュ動作を実行してもよい。また、32回目の書き換え動作を終えた後の適当な時期、例えば、ホストからのアクセスが途絶えた後に、リフレッシュ動作を実行してもよい。
【0276】
なお、実施の形態4に基づく実施例の場合には、32回目のデータ書き換え動作をリフレッシュ動作の中で行っている。このため、リフレッシュ動作は、ブロック内の物理アドレスのカウント値の最大値Nmaxが32回に達した後、32回目の書き換え動作と共に、直ちに、実行される。
【0277】
▲4▼ その他
本例では、カウント値は、0,1,2,・・・という具合に、“0”から始まり、ブロック内におけるデータ書き換え回数に応じて“1”ずつ増えていくが、本発明の例は、このような数え方に限定されるものではない。
【0278】
例えば、実施の形態1,2に関する実施例1と同様に、初期値は、“0”以外の数値、例えば、“2”であってもよいし、増加分は、“1”ではなく、他の数値、例えば、“2”であってもよい。この場合、ブロック内のデータ書き換え回数の許容値も、当然に変わる。
【0279】
本例では、カウント値は、“32”よりも大きくなることはないため、メモリセルアレイの冗長部としては、“32”までの数をカウントできるだけのビット数を確保しておけば、足りる。つまり、メモリセルアレイの冗長部のうちの5ビットを、カウント値を記憶するための領域として使用すればよい。
【0280】
また、カウント値の増加分は、等差数列的でなくてもよい。実施例1で説明したように、例えば、メモリセルアレイの冗長部のうち、4バイト、即ち、32ビット分を、カウント値を記憶する領域として使用し、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの数により判断してもよい。また、例えば、データ書き換え回数については、これら32ビットのうち、“1”状態にあるビットの位置により判断してもよい。
【0281】
また、カウント値は、データ更新回数に応じて増加させるのではなく、減少させるようにしてもよい。例えば、カウント値の初期値を“32”として、データ更新回数に応じて、この数を、1ずつ、減らしていってもよい。
【0282】
(2) 実施例2
図11は、本発明の実施例2に関わるデータ更新方法を示している。
【0283】
本例では、カウント方法としては、実施の形態1,2に関する実施例1の方法を使用するが、その他のカウント方法、例えば、実施の形態1,2に関する実施例2,3の方法などを使用することもできる。
【0284】
本例においては、異なる2つのブロックA,Bをペアとして使用する。これら2つのブロックA,Bは、1つのNAND型フラッシュメモリ内に配置されていてもよいし、異なるNAND型フラッシュメモリ内に配置されていてもよい。各ブロックA,Bは、4つの物理アドレスを有している。
【0285】
本例では、特定の物理アドレスに対して複数回のデータ書き換えを行う場合に、2つのブロックA,Bに対して、1回ごとに、交互にデータをライトし、古いデータについては、ライト動作の後に、その都度、イレーズする。また、カウント値については、奇数回目のライト時に更新する。例えば、ブロックA側からライトを始める場合には、ブロックAに対するライト時のみに、カウント値の更新を行い、ブロックBに対するライト時には、カウント値の更新を行わない。
【0286】
(a) 初期状態
ブロックAの物理アドレス0にデータLA0がライトされ、ブロックAの物理アドレス1にデータLA1がライトされている。物理アドレス0,1のカウント値、即ち、データ書き換え回数は、共に、“1”である。ブロックAの物理アドレス2,3及びそのカウント値は、イレーズ状態にあり、ブロックBの物理アドレス0,1,2,3及びそのカウント値は、イレーズ状態にある。
【0287】
(b)-1 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0288】
まず、ブロックA,B内の物理アドレス0のカウント値がリードされる。ブロックA内の物理アドレス0のカウント値は、“1”であり、ブロックB内の物理アドレス0のカウント値は、“0”である。このため、この後、ブロックB内の物理アドレス0に対して、更新データLA0及びカウント値(=“1”)がライトされる。
【0289】
ここで、ブロックBに対するライト時には、カウント値の更新は、行われない。即ち、ブロックA内の物理アドレス0のカウント値が、そのままブロックB内の物理アドレス0のカウント値としてライトされる。
【0290】
この後、ブロックA内の物理アドレス0に記憶されたデータLA0及びカウント値がイレーズされる。このように、本例では、更新データLA0及びカウント値をライトした後に、古いデータLA0及びカウント値をイレーズしているため、不意の電源遮断にも、十分に対応することができる。
【0291】
また、図2のコントローラ11は、ブロックA内の物理アドレス0,1,2,3のカウント値及びブロックB内の物理アドレス0,1,2,3のカウント値の合計値が、許容値、“32”に達しているか否かを判断する。この時点では、これらカウント値の合計値は、“2”であり、許容値、“32”に達していない。
【0292】
従って、この時点では、リフレッシュ動作は、行われない。
【0293】
(b)-2 物理アドレス1のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス1のデータ更新要求を出力する(図2参照)。
【0294】
まず、ブロックA,B内の物理アドレス1のカウント値がリードされる。ブロックA内の物理アドレス1のカウント値は、“1”であり、ブロックB内の物理アドレス1のカウント値は、“0”である。このため、この後、ブロックB内の物理アドレス1に対して、更新データLA1及びカウント値(=“1”)がライトされる。ここで、ブロックBに対するライト時には、カウント値の更新は、行われない。この後、ブロックA内の物理アドレス1に記憶されたデータLA1及びカウント値がイレーズされる。
【0295】
また、図2のコントローラ11は、ブロックA内の物理アドレス0,1,2,3のカウント値及びブロックB内の物理アドレス0,1,2,3のカウント値の合計値が、許容値、“32”に達しているか否かを判断する。この時点では、これらカウント値の合計値は、“2”であり、許容値、“32”に達していない。
【0296】
従って、この時点では、リフレッシュ動作は、行われない。
【0297】
(b)-3 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス2のデータ更新要求を出力する(図2参照)。
【0298】
まず、ブロックA,B内の物理アドレス2のカウント値がリードされる。ブロックA内の物理アドレス2のカウント値は、“0”であり、ブロックB内の物理アドレス0のカウント値も、“0”である。双方が“0”の場合には、ブロックA内の物理アドレス2に対して、更新データLA2及びカウント値(=“1”)がライトされる。
【0299】
また、図2のコントローラ11は、ブロックA内の物理アドレス0,1,2,3のカウント値及びブロックB内の物理アドレス0,1,2,3のカウント値の合計値が、許容値、“32”に達しているか否かを判断する。この時点では、これらカウント値の合計値は、“3”であり、許容値、“32”に達していない。
【0300】
従って、この時点では、リフレッシュ動作は、行われない。
【0301】
(c)-1 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0302】
まず、ブロックA,B内の物理アドレス0のカウント値がリードされる。ブロックA内の物理アドレス0のカウント値は、“0”であり、ブロックB内の物理アドレス0のカウント値は、“1”である。このため、この後、ブロックA内の物理アドレス0に対して、更新データLA0及びカウント値(=“2”)がライトされる。ここで、ブロックAに対するライト時には、カウント値の更新(本例では、+1)が行われる。
【0303】
このように制御すると、カウント値は、ブロックA内の物理アドレスiに対する書き換え回数、又は、ブロックB内の物理アドレスiに対する書き換え回数を表していることになる。つまり、データは、ブロックA,Bのうちのいずれか一方に記憶され、かつ、そのときのカウント値は、ブロックA,B内の物理アドレスiに対するデータ書き換え回数を表している。
【0304】
この後、ブロックB内の物理アドレス0に記憶されたデータLA0及びカウント値がイレーズされる。
【0305】
また、図2のコントローラ11は、ブロックA内の物理アドレス0,1,2,3のカウント値及びブロックB内の物理アドレス0,1,2,3のカウント値の合計値が、許容値、“32”に達しているか否かを判断する。この時点では、これらカウント値の合計値は、“4”であり、許容値、“32”に達していない。
【0306】
従って、この時点では、リフレッシュ動作は、行われない。
【0307】
(c)-2 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス2のデータ更新要求を出力する(図2参照)。
【0308】
まず、ブロックA,B内の物理アドレス2のカウント値がリードされる。ブロックA内の物理アドレス2のカウント値は、“1”であり、ブロックB内の物理アドレス0のカウント値は、“0”である。従って、ブロックB内の物理アドレス2に対して、更新データLA2及びカウント値(=“1”)がライトされる。
【0309】
また、図2のコントローラ11は、ブロックA内の物理アドレス0,1,2,3のカウント値及びブロックB内の物理アドレス0,1,2,3のカウント値の合計値が、許容値、“32”に達しているか否かを判断する。この時点では、これらカウント値の合計値は、“4”であり、許容値、“32”に達していない。
【0310】
従って、この時点では、リフレッシュ動作は、行われない。
【0311】
(d) リフレッシュ
データ更新要求に従い、上述の動作が繰り返し実行され、最終的に、物理アドレス0,1,2,3のカウント値が、(d) に示すようになったとする。
【0312】
データ書き換え回数は以下の通りである。ブロックAでは、物理アドレス0は、8回、物理アドレス1は、11回、物理アドレス2は、2回、物理アドレス3は、11回である。物理アドレス2,3については、そのカウント値は、ブロックB内の物理アドレス2,3のカウント値に等しくなる。
【0313】
ブロックBでは、物理アドレス0は、7回、物理アドレス1は、10回、物理アドレス2は、2回、物理アドレス3は、11回である。物理アドレス0,1については、そのカウント値は、ブロックA内の物理アドレス0,1のカウント値からカウント値の増加分(本例では、“1”)を差し引いた値に等しくなる。
【0314】
ブロックAでは、データ書き換え動作が合計32回行われているため、この後、ブロックA,Bの双方について、リフレッシュ動作が実行される。
【0315】
例えば、ブロックB内に、全ての物理アドレス0,1,2,3のデータを集めた後、ブロックA内の全ての物理アドレス0,1,2,3のデータをイレーズし、その後、全ての物理アドレス0,1,2,3のデータをブロックBからブロックAに集めた後、ブロックB内の全ての物理アドレス0,1,2,3のデータをイレーズするようにすれば、簡単に、リフレッシュを行うことができる。
【0316】
また、全ての物理アドレス0,1,2,3のデータを、システム内のバッファに転送した後、ブロックA,B内の全ての物理アドレス0,1,2,3のデータについてイレーズを実行し、その後、全ての物理アドレス0,1,2,3のデータを、システム内のバッファからブロックAに戻してもよい。バッファの代わりに、フラッシュメモリ内の別ブロックを使用してもよい。
【0317】
本例では、このように、2個のブロックA,Bをペアとして使用し、データ更新を続ける。ブロックAとブロックBは、同一のフラッシュメモリチップ内に存在してもよいし、異なるフラッシュメモリチップ内に存在してもよい。システム(例えば、フラッシュメモリカード)内に、複数のフラッシュメモリチップが存在する場合は、ブロックA,Bを、システム内の異なるフラッシュメモリチップに割り振ってもよい。この場合、ブロックBに対するライト動作中に、ブロックAに対するページイレーズを行うなど、システムの性能向上に貢献できる。
【0318】
(3) 実施例3
図12は、本発明の実施例3に関わるデータ更新方法を示している。
【0319】
本例では、例えば、NAND型フラッシュメモリの別ブロックを、バッファのように使用する。ここでは、データ更新を行うブロックをブロックAと称し、データ更新の際に、一時記憶のためのデータバッファとして使用するブロックを、バッファブロックと称する。
【0320】
(a) 初期状態
物理アドレス0には、データLA0が格納されている。物理アドレス0に対するデータ書き換え回数、即ち、カウント値は、“0”に設定されている。
【0321】
(b) 乃至(d) 物理アドレス0のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0のデータ更新要求を出力する(図2参照)。
【0322】
まず、ブロックA内の全ての物理アドレス0,1,2,3のカウント値がリードされる。また、データ書き換えの対象となる物理アドレス0のカウント値“1”及び更新データLA0が、バッファブロックにライトされる((b)参照)。
【0323】
この後、ブロックA内の物理アドレス0の古いデータLA0及びカウント値がイレーズされる((c)参照)。
【0324】
また、図2コントローラ11において、物理アドレス0のカウント値が更新される。例えば、物理アドレス0のカウント値“1”に、カウント値の増加分、本例では、“1”が加算される。その結果、物理アドレス0のカウント値は、“2”となる。そして、カウント値“2”及び更新データLA0は、ブロックA内の物理アドレス0にライトされる((d)参照)。
【0325】
この後、バッファブロック内の物理アドレス0の更新データLA0及びカウント値がイレーズされる((d)参照)。
【0326】
このような動作が繰り返され、ブロックA内の物理アドレス0,1,2,3のカウント値がリフレッシュ条件を満たしたときは、リフレッシュ動作が実行される。本例によれば、更新データ及びカウント値は、常に、少なくとも、ブロックA及びバッファブロックのいずれかに記憶されているため、例えば、不意の電源遮断などの非常事態が発生しても、システムにおける致命的な損傷を回避することができる。
【0327】
10. その他の実施例
実施の形態1,2に関わる実施例1,2,3及び実施の形態3,4に関わる実施例1,2,3は、主として、FAT(File Allocation Table)情報の更新を念頭に考え出されたものである。以下では、ファイル本体のデータ書き換えにも対応することができる実施例について説明する。
【0328】
(1) その他の実施例1
図13は、本発明のその他の実施例1のデータ更新方法を示している。
【0329】
まず、ブロックの構成例としては、ページサイズを、512バイト(冗長部を加えると、528バイト)とし、ブロックサイズを、16キロバイト(冗長部を除く)とする。1つのブロックは、32ページから構成されるものとする。
【0330】
ファイルデータがFAT情報と異なる点は、次の通りである。
▲1▼ ファイルデータの更新要求が発生すると、もはや、更新前の古いデータは不要となる点、
▲2▼ ファイルデータは、FAT情報に比較して、同一の論理アドレスに対するデータ更新の頻度が著しく小さい点、
▲3▼ 仮に、電源遮断などによって、更新データや古いデータが消失してしまっても、更新データがホストシステム内部に存在していることなどから、システムに関して致命的な損傷が発生しない点。
【0331】
従って、ファイルデータの更新に際しては、FAT情報の更新に比べて、制限事項が緩和されることが考えられる。
【0332】
実施の形態1,2に関わる実施例1,2,3及び実施の形態3,4に関わる実施例1,2,3では、1つのブロックが4ページから構成され、データ書き換え動作は、基本的に、1ページ単位で発生することを前提としている。本例は、これら既に説明した実施例の1ページを複数ページに置き換え、かつ、データ書き換え動作を複数ページまとめて行うものと考えることができる。
【0333】
本例では、データ更新が8ページ単位で行われることを前提とする。この8ページ(物理アドレス)を、図13における升目1個分に相当させる。従って、図13は、実施の形態1,2に関わる実施例1,2,3及び実施の形態3,4に関わる実施例1,2,3で使用した図面とほぼ同じとなる。
【0334】
(a) 初期状態
ブロック内の全ての物理アドレス(ページ)0〜7,8〜15,16〜23,24〜31内のメモリセルは、イレーズ状態にある。
【0335】
(b) ライト
物理アドレス0〜7にデータLA64〜71がライトされ、物理アドレス8〜15にデータLA72〜79(1セクタが512バイトとすると、8セクタ分)がライトされ、物理アドレス16〜23にデータLA80〜87がライトされ、物理アドレス24〜31にデータLA88〜95がライトされる。
【0336】
(c) 及び(d) 物理アドレス8〜15のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス8〜15のデータ更新要求を出力する(図2参照)。
【0337】
ブロック内の物理アドレス8〜15のデータがイレーズされる。本例では、これまでの実施例で見てきたような、ページ毎のデータ書き換え回数の管理をしていないため、カウント値のリードは、行われない。この後、物理アドレス8〜15に対して、更新データLA72〜79がライトされる。
【0338】
以上のように、本例では、ページ毎のデータ書き換え回数の管理を行っていない。その効果は、以下の通りである。
【0339】
例えば、物理アドレス8〜15に対して、データ更新要求が発生したとする。この場合、従来であれば、既述にように、イレーズ状態のバッファブロックを用意し、データ更新の必要がない物理アドレス0〜7,16〜31のデータLA64〜LA71,LA80〜LA95を、そのバッファブロックにコピーし、この後、データ書き換えの対象となるブロックについて、ブロックイレーズを実行する、という作業を行っていた。
【0340】
即ち、従来の方法では、データ更新に際して、更新の必要の無いデータLA64〜LA71,LA80〜LA95についてのコピー作業が発生し、データ書き換え速度の低下を招いていた。
【0341】
これに対し、本例によれば、データ書き換えの対象となる物理アドレス8〜15のみをページイレーズした後、その物理アドレス8〜15に更新データLA72〜LA79をライトすればよいため、無駄なデータコピー作業がなくなり、その分だけ、データ書き換え速度を高速化できる。
【0342】
ここで、ページイレーズという言葉には、ブロック内の1ページのみを対象とするイレーズの他、ブロック内の複数ページをまとめてイレーズする部分イレーズも含んでいる。また、ブロック内の複数ページをまとめてイレーズする場合には、部分イレーズで一度にイレーズしてもよいし、1ページずつ、複数回(ここでは、8回)に分けて、ページイレーズを行ってもよい。また、かかる場合に、2ページずつ、複数回(ここでは、4回)に分けてイレーズしてもよい。
【0343】
また、例えば、1本のビット線を複数のセンスアンプで共有するような多値フラッシュメモリの場合には、物理的にページイレーズを実行すると、外部仕様からみると、複数ページ分のデータが一括でイレーズされたことになる。このような場合でも、ブロック内の全ページをイレーズするのではなく、その一部分のみをイレーズするという観点からすれば、本例のイレーズと等価である。
【0344】
フラッシュメモリカードが多く使用されるデジタルカメラなどの分野においては、メモリカードの容量分だけ撮影を行い、画像をパソコンなどのシステムへ転送した後、全画像ファイルを消去する、といった使用方法が多い。このような場合には、フラッシュメモリに対するデータ書き換え回数も限られており、また、ファイル本体の領域での書き込み集中も発生しない。
【0345】
従って、ファイルデータの場合には、本例のように、ページ毎のデータ書き換え回数を管理しなくても、実用上、問題は発生しない。本例は、このような分野に有効である。
【0346】
なお、ファイルデータの更新に対しても、当然に、実施の形態1,2の実施例1,2,3及び実施の形態3,4の実施例1,2,3で示したような、データ書き換え回数の管理を行ってもよい。
【0347】
以下では、ファイルデータの更新に際して、データ書き換え回数の管理を行う実施例について説明する。
【0348】
(2) その他の実施例2
図14及び図15は、本発明のその他の実施例2に関わるデータ更新方法を示している。
【0349】
本例のデータ更新方法及びカウント方法は、実施の形態1,2に関わる実施例3の方法(図7参照)と同じである。但し、本例では、実施の形態1,2に関わる実施例3における1ページを、1部分イレーズ消去単位(「1エリア」と称する)と置き換える。即ち、本例では、1エリアは、複数ページを含み、イレーズの最小単位となる。
【0350】
(a) 初期状態
ブロック内の全てのエリア、即ち、物理アドレス(ページ)0〜31内のメモリセルは、イレーズ状態にある。
【0351】
(b) ライト
まず、物理アドレス(1エリア)0〜7にデータLA64〜LA71(1セクタが512バイトとすると、8セクタ分)がライトされる。同様に、物理アドレス(1エリア)8〜15にデータLA72〜LA79がライトされ、物理アドレス(1エリア)16〜23にデータLA80〜LA87がライトされ、物理アドレス(1エリア)24〜31にデータLA88〜LA95がライトされる。
【0352】
物理アドレス0〜7に対するデータLA64〜LA71のライト時には、物理アドレス0〜7のカウント値、即ち、データ書き換え回数として、“1”がライトされる。また、物理アドレス8〜15に対するデータLA72〜LA79のライト時には、ブロック全体としてみると、2回目のデータ書き換えであるため、物理アドレス8〜15のカウント値、即ち、データ書き換え回数としては、“2”がライトされる。
【0353】
同様に、物理アドレス16〜23に対するデータLA80〜LA87のライト時には、ブロック全体としてみると、3回目のデータ書き換えであるため、物理アドレス16〜23のカウント値、即ち、データ書き換え回数としては、“3”がライトされる。また、物理アドレス24〜31に対するデータLA88〜LA95のライト時には、ブロック全体としてみると、4回目のデータ書き換えであるため、物理アドレス24〜31のカウント値、即ち、データ書き換え回数としては、“4”がライトされる。
【0354】
(c) 及び(d) 物理アドレス0〜7のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0〜7のデータ更新要求を出力する(図2参照)。
【0355】
まず、ブロック内の全ての物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値がリードされる。図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス24〜31のカウント値“4”が最も大きな値を有する。図2のコントローラ11は、物理アドレス24〜31のカウント値“4”に“1”を加算し、カウント値“5”を、データ書き換えの対象となる物理アドレス0〜7のカウント値とする。物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0356】
この後、物理アドレス0〜7に記憶されたデータLA64〜LA71及びカウント値のイレーズが実行される((c)参照)。続けて、物理アドレス0〜7に対して、更新データLA64〜71及びカウント値(=“5”)がライトされる((d)参照)。
【0357】
また、図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値のうちの最大値Nmaxと最小値Nminを抽出する。そして、この最大値Nmaxと最小値Nminとの差を計算し、この差が、データ書き換え回数の最大値(許容値)、即ち、“32”に達しているか否かを判断する。
【0358】
この時点では、物理アドレス0〜7のカウント値“5”が最も大きく、物理アドレス8〜15のカウント値“2”が最も小さい。従って、最大値Nmax−最小値Nminは、“3”であり、この数値は、“32”よりも小さい。
【0359】
従って、この時点では、リフレッシュ動作は、行われない。
【0360】
(e) 及び(f) 物理アドレス2のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス16〜23のデータ更新要求を出力する(図2参照)。
【0361】
まず、ブロック内の全ての物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値がリードされる。図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス0〜7のカウント値“5”が最も大きな値を有する。図2のコントローラ11は、物理アドレス0〜7のカウント値“5”に“1”を加算し、カウント値“6”を、データ書き換えの対象となる物理アドレス16〜23のカウント値とする。物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値は、例えば、図2のコントローラ11内のメモリ(RAMなど)に一時的に記憶される。
【0362】
この後、物理アドレス16〜23に記憶されたデータLA80〜LA87及びカウント値のイレーズが実行される((e)参照)。続けて、物理アドレス16〜23に対して、更新データLA80〜LA87及びカウント値(=“6”)がライトされる((f)参照)。
【0363】
また、図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値のうちの最大値Nmaxと最小値Nminを抽出する。そして、この最大値Nmaxと最小値Nminとの差を計算し、この差が、データ書き換え回数の最大値(許容値)、即ち、“32”に達しているか否かを判断する。
【0364】
この時点では、物理アドレス16〜23のカウント値“6”が最も大きく、物理アドレス8〜15のカウント値“2”が最も小さい。従って、最大値Nmax−最小値Nminは、“4”であり、この数値は、“32”よりも小さい。
【0365】
従って、この時点では、リフレッシュ動作は、行われない。
【0366】
(g) リフレッシュ
データ更新要求に従い、上述の(c)及び(d)の動作又は(e)及び(f)の動作と同様の動作が実行され、最終的に、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値が、(g) に示すようになったとする。
【0367】
図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値から最大値Nmaxと最小値Nminを抽出する。最大値Nmaxは、物理アドレス0〜7のカウント値であり、その値は、“65”である。また、最小値Nminは、物理アドレス24〜31のカウント値であり、その値は、“33”である。最大値Nmaxと最小値Nminとの差は、“32”となる。
【0368】
つまり、物理アドレス24〜31のデータが最後に更新された後、物理アドレス24〜31は、32(=65−33)回のデータ書き換えによる電圧ストレスを受けていることになる。従って、図2のコントローラ11は、この事実を確認すると、リフレッシュ動作を行う命令を、図2のメモリ10に与える。
【0369】
本例では、ブロック内の各物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値の最大値Nmaxと最小値Nminの差に基づいて、リフレッシュ動作の必要性を判断している。このため、その差が許容値未満であれば、リフレッシュ動作を行う必要がない。場合によっては、リフレッシュ動作を全く行わずに、データ書き換え動作を継続して行うことができる。
【0370】
また、本例では、カウント値の最大値Nmaxと最小値Nminの差に基づいてリフレッシュ動作の必要性を判断しているため、リフレッシュの条件がメモリの初期状態に依存することはない。また、本例では、最悪のケースを想定して、リフレッシュの条件を設定しなくてもよい。
【0371】
リフレッシュ動作では、データ領域に記憶されるデータについては、再書き込みによりリフレッシュされるが、冗長部のカウント値については、リフレッシュ動作時に、例えば、(b) の状態に初期化される。即ち、図15の(B)の(h) 及び(i) に示すように、リフレッシュにおけるライト動作では、物理アドレス0〜7,8〜15,16〜23,24〜31に対応する冗長部に、それぞれ、カウント値“1”,“2”,“3”,“4”がライトされる。
【0372】
なお、本例では、上述のリフレッシュ条件(Nmax−Nmin≧32)を満たしたときに、カウント値が最小値Nminである物理アドレス24〜31についてのみ、リフレッシュを行うようにしてもよい。この場合、図15の(A)の(h) 及び(i) に示すように、リフレッシュ動作後には、リフレッシュの対象となった物理アドレス24〜31のカウント値の更新のみを行い、他のカウント値を初期化することなく、そのまま継続してカウントする。
【0373】
例えば、図15(A)の(h) 及び(i) の例では、物理アドレスLA24〜31のリフレッシュ動作によって、物理アドレスLA24〜31のカウント値を“66”(=65+1)に設定してもよい。物理アドレス0〜7,8〜15,16〜23は、リフレッシュされないため、そのカウント値については、現状を維持させる。
【0374】
このように、本例では、エリアごとにデータ書き換え回数が記憶され、データ書き換え要求が発生する度に、データ書き換え回数(カウント値)の最大値Nmaxと最小値Nminを抽出し、その差分をもって、リフレッシュ動作の必要性を判断している。本例の利点は、最大値と最低値の差分が許容値未満であれば、リフレッシュ動作を実行することなく、データ書き換え動作を継続して行える、という点にある。
【0375】
なお、エリアを構成する各ページ毎に、データ書き換え回数を管理してもよい。これは、ブロック内のエリアのサイズが、必ずしも固定である必要はなく、可変であってもよいことに起因する。例えば、エリアのサイズが固定の場合には、データ書き換え回数は、エリア単位で管理すればよいが、エリアのサイズが可変の場合には、データ書き換え回数は、エリア内のページごとに管理するのが好都合である。
【0376】
リフレッシュ方法については、上述した通り、様々な方法を採用することができる。例えば、リフレッシュの対象となるエリアのデータをシステム内のバッファに一時的に退避させ、その後、当該エリアのイレーズを実行し、最後に、システム内のバッファから当該エリアへ、再び、データを戻す、という方法を採用することができる。また、2つのブロックをペアで使用し、リフレッシュの対象となるエリアのデータを、別のブロックに移動させてもよい。
【0377】
以上、ファイル本体を念頭においた実施例について説明した。この例は、実施の形態1,2に関わる実施例3に対応しているが、当然に、例えば、実施の形態1,2に関わる実施例1,2及び実施の形態3,4に関わる実施例1,2,3に対応させることもできる。
【0378】
(3) その他の実施例3
図16及び図17は、本発明のその他の実施例3に関わるデータ更新方法を示している。
【0379】
基本的なアルゴリズムは、実施の形態3,4に関わる実施例3(図12参照)と同じである。本例では、NAND型フラッシュメモリの別ブロックを、データ更新時における一時記憶のためのバッファとして使用する。ここでは、データ記憶のためのブロックをブロックAとし、一時記憶のためのブロックをバッファブロックとする。
【0380】
(a) 初期状態
ブロックAについては、次の通りである。
【0381】
物理アドレス(1エリア)0〜7には、データLA64〜LA71(1セクタが512バイトとすると、8セクタ分)が格納される。同様に、物理アドレス(1エリア)8〜15にデータLA72〜LA79が格納され、物理アドレス(1エリア)16〜23にデータLA80〜LA87が格納され、物理アドレス(1エリア)24〜31にデータLA88〜LA95が格納される。
【0382】
物理アドレス0〜7のカウント値、即ち、データ書き換え回数は、“1”である。また、物理アドレス8〜15のカウント値、即ち、データ書き換え回数は、“2”である。同様に、物理アドレス16〜23のカウント値、即ち、データ書き換え回数は、“3”であり、物理アドレス24〜31のカウント値、即ち、データ書き換え回数は、“4”である。
【0383】
バッファブロックについては、全ての物理アドレス0〜7,8〜15,16〜23,24〜31がイレーズ状態に設定されている。
【0384】
(b) 乃至(e) 物理アドレス0〜7のデータ書き換え
コントローラ11は、メモリ10に対して、物理アドレス0〜7のデータ更新要求を出力する(図2参照)。
【0385】
まず、ブロックA内の全ての物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値がリードされる。また、図2コントローラ11において、物理アドレス0〜7のカウント値が更新される。
【0386】
例えば、図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値のうちから最大値Nmaxを選択する。この時点では、物理アドレス24〜31のカウント値“4”が最も大きな値を有する。図2のコントローラ11は、物理アドレス24〜31のカウント値“4”に“1”を加算し、カウント値“5”を、データ書き換えの対象となる物理アドレス0〜7のカウント値とする。
【0387】
そして、更新データLA64〜71及び物理アドレス0〜7のカウント値“5”は、バッファブロック内の物理アドレス0〜7に記憶される((b)参照)。
【0388】
この後、ブロックA内の物理アドレス0〜7に記憶されたデータLA64〜LA71及びカウント値のイレーズが実行される((c)参照)。続けて、ブロックA内の物理アドレス0〜7に対して、更新データLA64〜LA71及びカウント値“5”がライトされる((d)参照)。また、バッファブロック内の物理アドレス0〜7に記憶されたデータLA64〜LA71及びカウント値のイレーズが実行される((e)参照)。
【0389】
そして、図2のコントローラ11は、物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値に基づいて、最大値Nmax−最小値Nminが、許容値、“32”に達しているか否かを判断する。この時点では、物理アドレス0〜7のカウント値“5”が最も大く、物理アドレス8〜15のカウント値“2”が最も小さいが、その差分は、許容値、“32”に達していない。
【0390】
従って、この時点では、リフレッシュ動作は、行われない。
【0391】
このような動作が繰り返され、ブロックA内の物理アドレス0〜7,8〜15,16〜23,24〜31のカウント値がリフレッシュ条件を満たしたときは、リフレッシュ動作が実行される。本例によれば、更新データ及びカウント値は、常に、少なくとも、ブロックA及びバッファブロックのいずれかに記憶されているため、例えば、不意の電源遮断などの非常事態が発生しても、システムにおける致命的な損傷を回避することができる。
【0392】
ブロックA内のデータ及びカウント値は、最終的に、図17の(f) に示すようになったと仮定する。(f)では、物理アドレス24〜31のカウント値が、最も小さく、最も古い。一方、物理アドレス0〜7のカウント値が、最も大きく、最も新しい。両者の差分の意味は、物理アドレス24〜31のデータが最後(33回目)に更新された後、物理アドレス24〜31のメモリセルが32(=65−33)回のデータ書き換えに起因する電圧ストレスを受けている、ということである。従って、この時点では、リフレッシュ動作の必要性が発生している。
【0393】
このように、本例では、ブロック内の各エリアのデータ書き換え回数の最大値Nmaxと最小値Nminを抽出し、その差分をもって、リフレッシュ動作の必要性を判断している。本例の利点は、最大値Nmaxと最小値Nminの差分が許容値未満であれば、リフレッシュ動作を実行することなく、継続して、データ書き換えを行うことができる点にある。
【0394】
また、本例では、カウント値の最大値Nmaxと最小値Nminの差に基づいてリフレッシュ動作の必要性を判断しているため、リフレッシュの条件がメモリの初期状態に依存することはない。また、本例では、最悪のケースを想定して、リフレッシュの条件を設定しなくてもよい。
【0395】
リフレッシュ動作では、データ領域に記憶されるデータについては、再書き込みによりリフレッシュされるが、冗長部のカウント値については、リフレッシュ動作時に、例えば、(b) の状態に初期化される。即ち、リフレッシュにおけるライト動作では、物理アドレス0〜7,8〜15,16〜23,24〜31に対応する冗長部に、それぞれ、カウント値“1”,“2”,“3”,“4”がライトされる。
【0396】
また、本例では、上述のリフレッシュ条件(Nmax−Nmin≧32)を満たしたときに、カウント値が最小値Nminである物理アドレス24〜31についてのみ、リフレッシュを行うようにしてもよい。この場合、図17の(f) 及び(g) に示すように、リフレッシュ動作後には、リフレッシュの対象となった物理アドレス24〜31のカウント値の更新のみを行い、他のカウント値を初期化することなく、そのまま継続してカウントする。
【0397】
例えば、図15の(f) 及び(g) の例では、物理アドレスLA24〜31のリフレッシュ動作によって、物理アドレスLA24〜31のカウント値を“66”(=65+1)に設定してもよい。物理アドレス0〜7,8〜15,16〜23は、リフレッシュされないため、そのカウント値については、現状を維持させる。
【0398】
なお、エリアを構成する各ページ毎に、データ書き換え回数を管理してもよい。これは、ブロック内のエリアのサイズが、必ずしも固定である必要はなく、可変であってもよいことに起因する。例えば、エリアのサイズが固定の場合には、データ書き換え回数は、エリア単位で管理すればよいが、エリアのサイズが可変の場合には、データ書き換え回数は、エリア内のページごとに管理するのが好都合である。
【0399】
リフレッシュ方法については、上述した通り、様々な方法を採用することができる。本例では、図17の(g) 及び(h) に示すように、リフレッシュの対象となるエリアのデータをバッファブロックに一時的に退避させ、その後、当該エリアのイレーズを実行し、システム内のバッファから当該エリアへ、再び、データを戻し、最後に、バッファブロックのイレーズを実行する、という方法を採用している。
【0400】
その他の実施例1,2,3では、複数ページから構成されるエリアを定義し、基本的には、そのエリアのサイズ(容量)と同じサイズ(容量)のデータの更新が発生すると仮定した。しかし、通常のシステムでは、エリアのサイズよりも小さいサイズのデータの更新が発生する場合もある。
【0401】
この場合、エリア内の更新されないデータに関しては、例えば、システム内のバッファや、別のブロック(バッファブロック)などに退避され、更新データと共に、元のブロック内に書き戻されることになる。また、2つのブロックをペアで使用し、交互にデータをライトする場合には、一方のブロックに対するライト動作では、更新データと、他方のブロックからリードされた更新しないデータとが、ライトされることになる。
【0402】
これは、例えば、実施の形態1,2に関わる実施例1,2,3及び実施の形態3,4に関わる実施例1,2,3において、ページのサイズよりも小さいサイズのデータの更新が発生する場合にも言えることである。
【0403】
11. その他
ページごと又はエリアごとのデータ書き換え回数(イレーズ回数、ライト回数としても良い)を示すカウント値は、通常、データを記憶するページと同じページに存在する冗長部に記憶される。しかし、そのカウント値は、データを記憶するページと同じページに存在する冗長部以外の部分に記憶しても構わない。
【0404】
例えば、ページごと又はエリアごとのデータ書き換え回数を集中管理するメモリ領域をフラッシュメモリ内に設け、そのメモリ領域内でデータ書き換え回数を管理してもよい。また、論理アドレスと物理アドレスの変換テーブルをフラッシュメモリ内に持つ場合には、データ書き換え回数を、そのテーブルを構成する要素として管理してもよい。
【0405】
本発明の例は、主として、ユーザーデータ、即ち、パソコンで言えば、ファイル本体のデータや、ファイル管理情報(FATテーブル情報や、ディレクトリ情報)などの更新に適用される。しかし、本発明の例は、このようなユーザデータの更新に限られず、ユーザーデータとは直接関係のないデータの更新、例えば、フラッシュメモリカードであれば、カード内部で使用する管理情報などの更新などに適用することもできる。
【0406】
カード内部で使用する管理情報ととしては、例えば、論理アドレスと物理アドレスの変換テーブル情報、カードの属性情報及びその更新情報、ライトプロテクト情報、パスワードなどのセキュリティーに関連する情報、内蔵フラッシュメモリの不良ブロックの管理情報、フラッシュメモリのデータ書き換え回数などの情報、フラッシュメモリカード内部のコントローラの制御ファームウェアなどがある。
【0407】
本発明の例は、従来のブロック単位のデータ書き換えと組み合わせて使用することも可能である。例えば、比較的に大きな単位、例えば、クラスタ単位で、ライト要求がなされるファイルの本体のデータは、従来のブロック単位のデータ書き換えにより対応し、比較的に小さな単位で、ライト要求がなされるFATデータ、ディレクトリ情報などは、本発明の例に関わるページイレーズを使用したデータ書き換えにより対応する。
【0408】
この場合、コントローラに、データ構造を分析する機能を付加し、FATデータやディレクトリ(サブディレクトリ情報を含む)の更新であれば、本発明の例に関わるアルゴリズムが発動するようにしてもよいし、また、予め設定した論理アドレスの範囲内であれば、FATやディレクトリ情報と判断して、本発明のアルゴリズムが発動するようにしてもよい。
【0409】
上述の各実施例は、フラッシュメモリのページサイズが、512バイト(冗長部を除く)であるNAND型フラッシュメモリを例にとった。しかし、近年におけるメモリ容量の大容量化に伴い、ページサイズが2キロバイトのフラッシュメモリや、複数ページに対して同時にデータ書き込みを行えるフラッシュメモリなどが開発されている。
【0410】
本発明の例は、このような近年における新たなフラッシュメモリにも適用可能である。例えば、ページサイズが2キロバイト、1ブロックが64ページ、ブロックサイズが128キロバイト、ブロック内の部分イレーズ(イレーズ単位)の大きさとしては、16キロバイトのNAND型フラッシュメモリに本発明を適用することもできる。
【0411】
この場合、外部仕様としては、8ページ分のデータを一括でイレーズすることになる。しかし、例えば、1本のビット線を2つのセンスアンプで共有する2値フラッシュメモリの場合には、物理的には、4ページ分をイレーズしていることになる。
【0412】
イレーズ動作は、実際には、イレーズの対象となるページのワード線(コントロールゲート電極)を接地レベルに設定し、基板を高電位(例えば、約20V)に設定する。このとき、フローティングゲート電極と基板との間には、大きな電位差が発生するため、FNトンネリング現象によりフローティングゲート電極の電荷が排出され、メモリセルのデータがイレーズされる。
【0413】
イレーズの対象とならないページのワード線は、例えば、基板と同電位(例えば、約20V)に設定される。このため、イレーズの対象とならないページでは、フローティングゲート電極と基板との間に大きな電位差が発生せず、メモリセルのデータがイレーズされない。
【0414】
本発明の例は、ページサイズに関しては、2キロバイトのものに限られず、任意のサイズのフラッシュメモリに適用できる。
【0415】
図18は、NAND型フラッシュメモリのページイレーズ時のコマンドの発生例を示している。
【0416】
ブロックイレーズ、ページイレーズ、及び、複数ページを同時にイレーズするブロック内の部分イレーズは、それぞれ、異なるコマンドコードにより区別される。
【0417】
図19乃至図21は、本発明の例が適用されるシステム例を示している。
図19の例は、コントローラとフラッシュメモリを有するメモリカードに関する。
【0418】
メモリカード12には、コントローラ11及び複数個のフラッシュメモリ10a,10bが搭載される。コントローラ11は、RAM及びCPUを有している。ホストインターフェースとしては、ATAインタフェース、PCカードインタフェース、USBなど、様々なものが考えられるが、本発明の例は、いかなるインタフェースにも適用可能である。
【0419】
本例では、メモリカード12内のコントローラ(一般的にはマイコンを搭載している)11が、本発明の例に関わるデータ更新動作、カウント方法、リフレッシュへの移行条件などをコントロールする。即ち、コントローラ11は、ページイレーズ、ブロック内の部分イレーズなどのためのコマンドを発生し、これらのコマンドをフラッシュメモリ10a,10bに与える。
【0420】
なお、コントローラ11とフラッシュメモリ10a,10bとは、1チップ化されていてもよいし、別々のチップに形成されていてもよい。
【0421】
図20の例は、コントローラを搭載していないメモリカードに関する。
【0422】
本例は、フラッシュメモリ10aのみを搭載したカード12aや、比較的小規模のロジック回路(ASIC)14を搭載したカード12bを対象とする。この場合、例えば、カード12a,12bが接続されるホスト側の機器をデジタルカメラ13と仮定すると、デジタルカメラ13の内部に配置されたフラッシュメモリカード制御用コントローラ11は、カード12a,12b内のフラッシュメモリ10a,10bに対して、ページイレーズ、ブロック内の部分イレーズのためのコマンドを供給する。
【0423】
図21の例は、本発明の例に関わる制御の全て又は一部を行う制御回路が搭載されたフラッシュメモリに関する。
【0424】
メモリカード12には、コントローラ11及びフラッシュメモリ10が搭載される。フラッシュメモリ10は、例えば、ページのデータ書き換え回数に関連付けられた情報を生成する制御回路15を有している。フラッシュメモリ10は、この制御回路15により、かかる情報を自ら作成し、かつ、この情報を、例えば、メモリセルアレイの冗長部(エラー訂正符合などの格納領域)に格納する。フラッシュメモリ10には、ページのデータ書き換え回数に関連付けられた情報を外部から参照できる機能を付加してもよい。
【0425】
ページのデータ書き換え回数に関連付けられた情報は、フラッシュメモリの外部からは直接参照することのできない特殊なメモリセル領域に格納されてもよい。この場合は、特定コマンドによって、かかる情報が外部に読み出せるようにしてもよいし、リフレッシュ条件が満たされたか否かに関わる情報を外部に読み出せるようにしてもよい。
【0426】
フラッシュメモリ10内の制御回路15は、例えば、特定コマンドの応答として、ページイレーズが可能であるか否か、ページイレーズが正常に行われたか否か、又は、ページイレーズが禁止され、実行されなかったか否かの情報を、コントローラ11に応答する機能を有していてもよい。
【0427】
この場合は、フラッシュメモリ(チップ)10の外部に設けられたコントローラ11は、特定コマンドに対する応答を解釈し、必要に応じて、リフレッシュ動作又はそれに相当する動作を実行する。
【0428】
また、フラッシュメモリ10に混載された制御回路15は、これまで説明を加えたような、ページのデータ書き換え回数に関連付けられた情報の保存に関する動作のみならず、リフレッシュ条件を判断する動作や、具体的なリフレッシュ動作などをコントロールするような機能を持っていてもよい。
【0429】
以上、本発明の例は、ページイレーズ機能を有する不揮発性半導体メモリと、データ書き換え回数に関連付けられた情報を管理するコントローラとを有するシステムであれば、どのようなものにも適用できる。
【0430】
また、上述の実施例では、主として、NAND型フラッシュメモリを前提として説明したが、本発明の例は、その他の不揮発性半導体メモリ、例えば、NOR型、AND型、DINOR型などの不揮発性半導体メモリにも適用可能である。また、不揮発性半導体メモリとしては、フラッシュメモリの他、近年、注目を浴びているメモリセルに磁性体を使用したMRAM(Magnetic Random Access Memory)及び(Resistance Random Access Memory)、メモリセルに強誘電体を使用したFeRAM(Ferroelectric Random Access Memory)や、メモリセルにカルコゲン化物などを使用したOUM( Ovonics Unified Memory)なども含まれる。
【0431】
このように、本発明の例によれば、ブロック内の1部分のイレーズが可能であり、データ更新の際、ブロック内の更新しないデータを別ブロックに退避させる頻度が減り、書き込み性能の大幅な向上が期待できる。
【0432】
【発明の効果】
以上、説明したように、本発明によれば、ページイレーズ機能を有するNAND型フラッシュメモリを使用するフラッシュメモリカードにおいて、ブロック内の各ページのデータ書き換え回数を一定条件内に制限することにより、ページイレーズ動作が他の非選択ページに与えるストレスに起因する問題を回避できる。これにより、比較的小さいサイズのデータ書き換えが頻繁に発生しても、書き込み性能の劣化が起こらないフラッシュメモリカードを提供できる。
【図面の簡単な説明】
【図1】本発明の例に関わるメモリセルアレイのデータ区分を示す図。
【図2】本発明の例に関わるシステムの概要を示す図。
【図3】本発明の実施の形態1に関わるデータ更新動作を示すフローチャート。
【図4】本発明の実施の形態2に関わるデータ更新動作を示すフローチャート。
【図5】実施の形態1,2に関わる実施例1のカウント動作を示す図。
【図6】実施の形態1,2に関わる実施例2のカウント動作を示す図。
【図7】実施の形態1,2に関わる実施例3のカウント動作を示す図。
【図8】本発明の実施の形態3に関わるデータ更新動作を示すフローチャート。
【図9】本発明の実施の形態4に関わるデータ更新動作を示すフローチャート。
【図10】実施の形態3,4に関わる実施例1のカウント動作を示す図。
【図11】実施の形態3,4に関わる実施例2のカウント動作を示す図。
【図12】実施の形態3,4に関わる実施例3のカウント動作を示す図。
【図13】その他の実施例1のカウント動作を示す図。
【図14】その他の実施例2のカウント動作を示す図。
【図15】その他の実施例2のカウント動作を示す図。
【図16】その他の実施例3のカウント動作を示す図。
【図17】その他の実施例3のカウント動作を示す図。
【図18】ページイレーズ時のコマンドの発生例を示す波形図。
【図19】本発明の例が適用されるメモリカードの例を示す図。
【図20】本発明の例が適用されるシステムの例を示す図。
【図21】本発明の例が適用されるメモリカードの例を示す図。
【図22】従来のメモリセルアレイの構成例を示す図。
【図23】NANDセルユニットの例を示す図。
【符号の説明】
10,10a,10b:メモリ、 11:コントローラ、 12,12a,12b:メモリカード、 13:デジタルカメラ、 14:ASIC、 15:制御回路、 NU:NANDユニット、 WL0,WL1,・・・WL31:ワード線、 BL:ビット線、 SGD,SGS:セレクトゲート線、 SL:ソース線、 M0,M1,・・・M31:メモリセル、 ST1,ST2:セレクトゲートトランジスタ。

Claims (8)

  1. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換えを行う不揮発性半導体メモリにおいて、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理する制御回路を有し、
    前記制御回路は、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記データ書き換えの対象となるページのデータ書き換え回数に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数の合計値が許容値に達したときに実行される
    ことを特徴とする不揮発性半導体メモリ。
  2. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換えを行う不揮発性半導体メモリにおいて、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理する制御回路を有し、
    前記制御回路は、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記ブロック内におけるデータ書き換え回数の合計値に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数のうちの最大値が許容値に達したときに実行される
    ことを特徴とする不揮発性半導体メモリ。
  3. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換えを行う不揮発性半導体メモリにおいて、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理する制御回路を有し、
    前記制御回路は、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記ブロック内におけるデータ書き換え回数の合計値に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数のうち、最大値から最小値を差し引いた値が許容値に達したときに実行される
    ことを特徴とする不揮発性半導体メモリ。
  4. 前記リフレッシュにより、前記情報は、初期化されることを特徴とする請求項1乃至3のいずれか1項に記載の不揮発性半導体メモリ。
  5. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換え動作を行う不揮発性半導体メモリと、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理するコントローラとを有し、
    前記コントローラは、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記データ書き換えの対象となるページのデータ書き換え回数に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数の合計値が許容値に達したときに実行される
    ことを特徴とするメモリシステム
  6. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換え動作を行う不揮発性半導体メモリと、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理するコントローラとを有し、
    前記コントローラは、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記ブロック内におけるデータ書き換え回数の合計値に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数のうちの最大値が許容値に達したときに実行される
    ことを特徴とするメモリシステム。
  7. 1つのブロックが複数のページから構成され、ページ単位でデータ書き換え動作を行う不揮発性半導体メモリと、前記複数のページの各々に対するデータ書き換え回数に関連付けられた情報をページごとに管理するコントローラとを有し、
    前記コントローラは、
    前記データ書き換えの度に、前記複数のページの全てに対して、前記情報のリードを行い、
    前記データ書き換えの度に、前記データ書き換えの対象となるページに対して、前記情報の更新を行い、
    前記データ書き換えの度に、前記複数のページの全てに関する前記情報に基づいて、前記ブロック内の全てのページ又は前記データ書き換えの対象となったページのメモリセルの状態を初期状態に戻すリフレッシュを行うか否かを決定し、
    前記情報の更新は、
    前記データ書き換えの対象となるページに関する前記情報を、前記ブロック内におけるデータ書き換え回数の合計値に設定することにより行い、
    前記リフレッシュは、
    前記複数のページの全てに関する前記データ書き換え回数のうち、最大値から最小値を差し引いた値が許容値に達したときに実行される
    ことを特徴とするメモリシステム
  8. 前記リフレッシュにより、前記情報は、初期化されることを特徴とする請求項5乃至7のいずれか1項に記載のメモリシステム
JP2003027314A 2003-02-04 2003-02-04 不揮発性半導体メモリ Expired - Fee Related JP4256175B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2003027314A JP4256175B2 (ja) 2003-02-04 2003-02-04 不揮発性半導体メモリ
US10/621,451 US7006383B2 (en) 2003-02-04 2003-07-18 Nonvolatile semiconductor memory for management of a number of data writer/erase times
KR10-2003-0056379A KR100502378B1 (ko) 2003-02-04 2003-08-14 불휘발성 반도체 메모리
US11/227,516 US7046558B2 (en) 2003-02-04 2005-09-16 Method for controlling a nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003027314A JP4256175B2 (ja) 2003-02-04 2003-02-04 不揮発性半導体メモリ

Publications (2)

Publication Number Publication Date
JP2004240572A JP2004240572A (ja) 2004-08-26
JP4256175B2 true JP4256175B2 (ja) 2009-04-22

Family

ID=32767622

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003027314A Expired - Fee Related JP4256175B2 (ja) 2003-02-04 2003-02-04 不揮発性半導体メモリ

Country Status (3)

Country Link
US (2) US7006383B2 (ja)
JP (1) JP4256175B2 (ja)
KR (1) KR100502378B1 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716725B2 (en) 2002-09-20 2010-05-11 Fortinet, Inc. Firewall interface configuration and processes to enable bi-directional VoIP traversal communications
WO2004031966A1 (ja) * 2002-10-02 2004-04-15 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置の制御方法
JP3587842B2 (ja) * 2002-12-17 2004-11-10 沖電気工業株式会社 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置
JP2005191413A (ja) * 2003-12-26 2005-07-14 Toshiba Corp 不揮発性半導体記憶装置
US7259989B2 (en) * 2004-09-03 2007-08-21 Matsushita Electric Industrial Co., Ltd. Non-volatile memory device
JP4843222B2 (ja) * 2005-01-11 2011-12-21 株式会社東芝 半導体記憶装置の制御方法、メモリカード、及びホスト機器
JP4282612B2 (ja) * 2005-01-19 2009-06-24 エルピーダメモリ株式会社 メモリ装置及びそのリフレッシュ方法
CN100568391C (zh) * 2005-03-07 2009-12-09 Nxp股份有限公司 对阻抗滞后元件的存储器矩阵的驱动
JP2006302342A (ja) * 2005-04-15 2006-11-02 Toshiba Corp 不揮発性半導体メモリ装置とメモリシステム
JP4215746B2 (ja) 2005-05-20 2009-01-28 Necインフロンティア株式会社 情報処理装置および寿命監視方法
JP4597829B2 (ja) * 2005-09-27 2010-12-15 パトレネラ キャピタル リミテッド, エルエルシー メモリ
US8019275B2 (en) * 2005-10-12 2011-09-13 The Directv Group, Inc. Band upconverter approach to KA/KU signal distribution
KR100704679B1 (ko) * 2005-10-18 2007-04-06 한국전자통신연구원 초고속 휴대 인터넷 시스템 및 그 페이징 방법
WO2007105688A1 (ja) * 2006-03-16 2007-09-20 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
US7551492B2 (en) 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
US7451264B2 (en) 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7467253B2 (en) 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US7447096B2 (en) * 2006-05-05 2008-11-04 Honeywell International Inc. Method for refreshing a non-volatile memory
KR100739256B1 (ko) 2006-05-12 2007-07-12 주식회사 하이닉스반도체 소거 동작시 메모리 셀 블록의 크기를 선택적으로 변경하는기능을 가지는 플래시 메모리 장치 및 그 소거 동작 방법
JP2007328620A (ja) * 2006-06-08 2007-12-20 Toshiba Corp アクセス頻度評価装置およびアクセス頻度評価方法
KR100875292B1 (ko) 2006-09-19 2008-12-23 삼성전자주식회사 플래시 메모리 장치 및 그것의 리프레쉬 방법
JP5661227B2 (ja) * 2007-02-07 2015-01-28 株式会社メガチップス メモリコントローラ
US7577059B2 (en) * 2007-02-27 2009-08-18 Mosaid Technologies Incorporated Decoding control with address transition detection in page erase function
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP5049733B2 (ja) * 2007-10-17 2012-10-17 株式会社東芝 情報処理システム
KR101716348B1 (ko) * 2010-03-16 2017-03-15 삼성전자주식회사 메모리 시스템, 그것의 동작 방법, 그리고 그것을 포함하는 컴퓨팅 시스템
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP2009276883A (ja) * 2008-05-13 2009-11-26 Oki Electric Ind Co Ltd 半導体補助記憶装置
JP4719247B2 (ja) * 2008-05-28 2011-07-06 京セラ株式会社 送信装置および無線通信方法
KR100974954B1 (ko) * 2008-06-26 2010-08-10 에스디씨마이크로 주식회사 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법
US7719876B2 (en) 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
JP5478855B2 (ja) * 2008-08-08 2014-04-23 ルネサスエレクトロニクス株式会社 不揮発性メモリ制御方法及び半導体装置
JPWO2011043012A1 (ja) * 2009-10-05 2013-02-28 パナソニック株式会社 不揮発性半導体記憶装置、信号処理システム、及び信号処理システムの制御方法、並びに不揮発性半導体記憶装置の書き換え方法
TWI424438B (zh) * 2009-12-30 2014-01-21 Asolid Technology Co Ltd 非揮發性記憶體控制裝置及其多階重新排序方法
KR101625641B1 (ko) 2010-04-08 2016-05-30 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법 및 이를 포함하는 장치들
JP5722685B2 (ja) 2011-04-12 2015-05-27 株式会社日立製作所 半導体装置、不揮発性メモリ装置の制御方法
US9158336B2 (en) * 2011-05-06 2015-10-13 Micron Technology, Inc. Cases for tablet computers and methods
JP5792019B2 (ja) 2011-10-03 2015-10-07 株式会社日立製作所 半導体装置
JP5847940B2 (ja) 2012-07-19 2016-01-27 株式会社日立製作所 半導体装置
KR101991437B1 (ko) 2012-08-30 2019-06-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작방법
FR3006804A1 (fr) * 2013-06-05 2014-12-12 St Microelectronics Rousset Procede d’effacement par bloc d’une memoire de type eeprom effacable par page
KR102048017B1 (ko) * 2013-09-04 2019-12-02 삼성전자주식회사 비휘발성 메모리 장치의 테스트 및 운영 방법
JP5983665B2 (ja) * 2014-03-17 2016-09-06 日本電気株式会社 アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法
CN104156317A (zh) * 2014-08-08 2014-11-19 浪潮(北京)电子信息产业有限公司 一种非易失性闪存的擦写管理方法及***
CN106778289A (zh) * 2015-11-24 2017-05-31 虹光精密工业(苏州)有限公司 信息安全管理***及应用该***的事务机
KR20180014975A (ko) * 2016-08-02 2018-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190092941A (ko) * 2018-01-31 2019-08-08 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
JP7212239B2 (ja) * 2018-06-05 2023-01-25 ユナイテッド・セミコンダクター・ジャパン株式会社 不揮発性半導体記憶装置及び不揮発性半導体記憶装置の書き換え方法
KR20220145223A (ko) * 2021-04-21 2022-10-28 삼성전자주식회사 프로세싱 소자 및 프로세싱 소자를 포함하는 전자 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3099887B2 (ja) 1990-04-12 2000-10-16 株式会社東芝 不揮発性半導体記憶装置
JP3199989B2 (ja) 1994-09-30 2001-08-20 株式会社東芝 不揮発性半導体記憶装置とその過書込み救済方法
JPH08124393A (ja) * 1994-10-20 1996-05-17 Fujitsu Ltd データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置
KR0148599B1 (ko) 1994-11-15 1998-12-01 양승택 유전체 박막상의 무결함 화합물 반도체 박막의 제조방법
ATE225961T1 (de) * 1996-08-16 2002-10-15 Tokyo Electron Device Ltd Halbleiterspeicheranordnung mit fehlerdetektion und -korrektur
JP3599541B2 (ja) * 1997-11-27 2004-12-08 シャープ株式会社 不揮発性半導体記憶装置
JPH11176177A (ja) 1997-12-12 1999-07-02 Toshiba Corp 不揮発性半導体記憶装置
JP3549723B2 (ja) * 1998-03-27 2004-08-04 富士通株式会社 半導体記憶装置
JP2002230984A (ja) * 2001-02-05 2002-08-16 Fujitsu Ltd 不揮発性半導体記憶装置
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
JP4220319B2 (ja) * 2003-07-04 2009-02-04 株式会社東芝 不揮発性半導体記憶装置およびそのサブブロック消去方法
JP4287222B2 (ja) * 2003-09-03 2009-07-01 株式会社東芝 不揮発性半導体記憶装置
JP4175991B2 (ja) * 2003-10-15 2008-11-05 株式会社東芝 不揮発性半導体記憶装置
JP2005191413A (ja) * 2003-12-26 2005-07-14 Toshiba Corp 不揮発性半導体記憶装置

Also Published As

Publication number Publication date
US20040151031A1 (en) 2004-08-05
KR20040071574A (ko) 2004-08-12
US7046558B2 (en) 2006-05-16
US20060007751A1 (en) 2006-01-12
JP2004240572A (ja) 2004-08-26
KR100502378B1 (ko) 2005-07-19
US7006383B2 (en) 2006-02-28

Similar Documents

Publication Publication Date Title
JP4256175B2 (ja) 不揮発性半導体メモリ
JP4787266B2 (ja) スクラッチパッドブロック
US20180329627A1 (en) Flash memory system
KR101122485B1 (ko) 메모리 시스템
US6988175B2 (en) Flash memory management method that is resistant to data corruption by power loss
KR101464338B1 (ko) 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
US20150255159A1 (en) Method for controlling a non-volatile semiconductor memory, and semiconductor storage system
JP3812933B2 (ja) ファイルシステムおよびその制御方法
US20130254465A1 (en) Solid state memory formatting
TWI388982B (zh) 包含具有電荷累積層及控制閘極之記憶胞的半導體記憶裝置及記憶系統
TW200947439A (en) Memory system
JP5073402B2 (ja) メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム
US9361221B1 (en) Write amplification reduction through reliable writes during garbage collection
KR20120052216A (ko) 위성 파일 시스템을 구비한 멀티-뱅크 비휘발성 메모리 시스템
US20210191863A1 (en) Memory system, and memory controller and method of operating the same
US20090300272A1 (en) Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
CN114530173A (zh) 存储器***及其操作方法
JP4551938B2 (ja) メモリシステム
JP5264459B2 (ja) 半導体記憶装置
JP4068594B2 (ja) フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法
JP4800732B2 (ja) 半導体ディスクドライブ
US20120311243A1 (en) Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
CN116301569A (zh) 存储器***及其操作方法
KR20220163661A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090127

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090129

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees