IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G11C 11/56 20060101AFI20240109BHJP
   G11C 16/10 20060101ALI20240109BHJP
【FI】
G11C11/56 210
G11C16/10 160
【請求項の数】 13
(21)【出願番号】P 2020144847
(22)【出願日】2020-08-28
(65)【公開番号】P2022002160
(43)【公開日】2022-01-06
【審査請求日】2023-03-15
(31)【優先権主張番号】P 2019210823
(32)【優先日】2019-11-21
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2020113206
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100105153
【弁理士】
【氏名又は名称】朝倉 悟
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(74)【代理人】
【識別番号】100103263
【弁理士】
【氏名又は名称】川崎 康
(72)【発明者】
【氏名】原 徳正
(72)【発明者】
【氏名】柴田 昇
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2018-5959(JP,A)
【文献】特開2018-45754(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
G11C 16/10
(57)【特許請求の範囲】
【請求項1】
各々が、データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2乃至第16のしきい値領域とを含む16個のしきい値領域により、第1乃至第4ビットで表わせられる4ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第1ビット、前記第2ビット、前記第4ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数のうち最大の値は5であり、二番目に大きな値は4であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット、前記第2ビット、前記第4ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18乃至第24のしきい値領域のいずれかのしきい値領域となるように前記第1プログラムを前記不揮発性メモリに行わせるように構成され、 前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビットのデータに応じて、前記第17乃至第24のしきい値領域のうちいずれかのしきい値領域から前記第1乃至第16のしきい値領域のうちの2個のしきい値領域内のいずれかのしきい値領域となるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記2個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が2個以内であり、
前記メモリコントローラは、前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第2ビットのデータと前記第3ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステム。
【請求項2】
前記メモリコントローラは、前記第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットの値が異なる前記境界の数、前記第2ビットの値が異なる前記境界の数、前記第3ビットの値が異なる前記境界の数、及び前記第4ビットの値が異なる前記境界の数が順に(1、4、5、5)、(1、5、4、5)、又は(3、3、4、5)となるように前記第1プログラム及び前記第2プログラムを前記不揮発性メモリに行わせる、請求項1に記載のメモリシステム。
【請求項3】
各々が、データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2乃至第16のしきい値領域とを含む16個のしきい値領域により、第1乃至第4ビットで表わせられる4ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第1ビット、前記第2ビット、前記第4ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数は順に(3、5、2、5)であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット、前記第2ビット、前記第4ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18乃至第24のしきい値領域のいずれかのしきい値領域となるように前記第1プログラムを前記不揮発性メモリに行わせるように構成され、 前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビットのデータに応じて、前記第17乃至第24のしきい値領域のうちいずれかのしきい値領域から前記第1乃至第16のしきい値領域のうちの2個のしきい値領域内のいずれかのしきい値領域となるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記2個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が2個以内であり、
前記メモリコントローラは、前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第2ビットのデータと前記第3ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステム。
【請求項4】
前記メモリコントローラは、前記第17乃至第24のしきい値領域のうち前記第2ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差が、前記第1ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差よりも小さく、かつ前記第4ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差よりも小さくなるように前記第1プログラムを前記不揮発性メモリに行わせる請求項1乃至3のいずれか一項に記載のメモリシステム。
【請求項5】
前記メモリコントローラは、前記第2ビットのデータの値が異なる前記第1プログラム時の2つのしきい値領域の間隔よりも、前記2つのしきい値領域に対して前記第3ビットのデータにより前記第2プログラムを行って得られる4つのしきい値領域のうち隣接するしきい値領域の間隔が広くなるように、前記第2プログラムを前記不揮発性メモリに行わせる、請求項4に記載のメモリシステム。
【請求項6】
前記第1ビットは最下位のLowerビット、前記第2ビットは二番目に小さいMiddleビット、前記第3ビットは二番目に大きいUpperビット、前記第4ビットは最上位のTopビットである、請求項1乃至5のいずれか一項に記載のメモリシステム。
【請求項7】
前記第1乃至第4ビットのデータを記憶する揮発性の第1記憶部を備え、
前記第1記憶部に記憶される前記第1乃至第4ビットのうち、前記第1プログラム及び前記第2プログラム時に重複して入力されるビットのデータは、前記第2プログラムを開始した以降に破棄又は無効化可能となり、それ以外のビットのデータは、前記第1プログラムを開始した以降に破棄又は無効化可能となる、請求項1乃至6のいずれか一項に記載のメモリシステム。
【請求項8】
前記第1乃至第4ビットのデータを記憶する揮発性の第1記憶部と、
前記第1乃至第4ビットのうち、前記第1プログラム及び前記第2プログラムで重複して入力されるビットのデータを記憶する不揮発性の第2記憶部と、を備え、
前記第1記憶部に記憶される前記第1乃至第4ビットのデータは、前記第1プログラムを開始した以降に破棄又は無効化可能となり、
前記第2記憶部に記憶される前記第1乃至第4ビットのうち、前記第1プログラム及び前記第2プログラムで重複して入力されるビットのデータは、前記第1プログラムを開始する前に前記第2記憶部に記憶され、前記第2プログラムを開始した以降に破棄又は無効化可能となる、請求項1乃至6のいずれか一項に記載のメモリシステム。
【請求項9】
前記第2記憶部は、ワード線を単位として設けられる、請求項8に記載のメモリシステム。
【請求項10】
前記不揮発性メモリ内の前記複数のメモリセルは、第1ワード線に接続された複数の第1メモリセルと、前記第1ワード線に隣接する第2ワード線に接続された複数の第2メモリセルと、を有し、
前記メモリコントローラは、前記複数の第1メモリセルに対して前記第1プログラムを行わせた後、前記複数の第2メモリセルに対して前記第1プログラムを行わせ、その後に前記複数の第1メモリセルに対して前記第2プログラムを行わせる、請求項1乃至9のいずれか一項に記載のメモリシステム。
【請求項11】
前記不揮発性メモリは、2以上の前記メモリセルがそれぞれ接続された第1ワード線及び第2ワード線を少なくとも有し、
前記メモリコントローラは、前記第1ワード線に接続されたメモリセルに対する前記第1プログラムと、前記第2ワード線に接続されたメモリセルに対する前記第2プログラムとの連続した実行を、連続したコマンド及びデータ入力で前記不揮発性メモリに指示する、請求項1乃至9のいずれか一項に記載のメモリシステム。
【請求項12】
前記不揮発性メモリは、前記第1プログラムによりプログラムされたデータを読み出して得られるデータと、前記第1プログラム及び前記第2プログラムで重複して入力される前記第2ビットのデータと、前記第2プログラムでプログラムされる前記第3ビットの入力データとに基づいて、前記第2プログラムでプログラムされるビットのデータのしきい値電圧を決定する制御部を備える、請求項1乃至11のいずれか一項に記載のメモリシステム。
【請求項13】
前記第1プログラムによりプログラムされたデータを読み出して誤り訂正を行う誤り訂正部を備え、
前記制御部は、前記誤り訂正部で誤り訂正後のデータと、前記第2ビットのデータと、前記第3ビットの入力データとに基づいて、前記第2プログラムでプログラムされるビットのデータの前記しきい値電圧を決定する、請求項12に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
NAND型フラッシュメモリでは、メモリセルに複数ビットからなる多値データを書き込むのが一般的であり、メモリセルに3ビットからなる多値データを書き込むTLC(Triple Level Cell)技術が実用化されている。今後は、4ビットからなる多値データを書き込むQLC(Quadruple Level Cell)技術が主流になると考えられている。
【0003】
QLCでは、セル間相互干渉を避けるため、第1のメモリセルに4ビットデータを同時に書き込んだ後、隣接セルにも同様に4ビットデータを同時に書き込み、その後に、再び第1のメモリセルに4ビットデータを同時に再書き込みする手法が検討されている。しかしながら、この手法では、再書き込みが完了するまで4ビットデータをメモリコントローラ内の書込みバッファに保持しておく必要がある。
【0004】
近年のNANDメモリは3次元化されており、必要とされる書き込みバッファのメモリ容量が増大し、書込みバッファを内蔵したメモリコントローラのコストが高くなるという問題がある。このため、3次元の不揮発性メモリにおいても、メモリコントローラの書き込みバッファ量を低減する対策が必要である。
【0005】
セル間相互干渉を避けつつ、メモリコントローラの書き込みバッファ量を削減する対策として、メモリセルに各ビットのデータを書き込む際に、2つのステージに分けて書き込むことで、全ビットデータの再書き込みを不要とする手法が知られている。
【0006】
しかしながら、この手法では、メモリセルに各ビットデータを書き込む際のビットエラー率の偏りが大きいという問題がある。
【0007】
QLC技術の信頼性を向上するには、セル間相互干渉を避け、かつメモリコントローラ内の書き込みバッファの容量を削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制する必要がある。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2018-5959号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本開示の一態様では、セル間相互干渉を避け、かつメモリコントローラ内の書き込みバッファの容量を削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制できるメモリシステムを提供するものである。
【課題を解決するための手段】
【0010】
本実施形態によれば、各々が、データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2乃至第16のしきい値領域とを含む16個のしきい値領域により、第1乃至第4ビットで表わせられる4ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第1ビット、前記第2ビット、前記第4ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数のうち最大の値は5であり、二番目に大きな値は4であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット、前記第2ビット、前記第4ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18乃至第24のしきい値領域のいずれかのしきい値領域となるように前記第1プログラムを前記不揮発性メモリに行わせるように構成され、 前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビットのデータに応じて、前記第17乃至第24のしきい値領域のうちいずれかのしきい値領域から前記第1乃至第16のしきい値領域のうちの2個のしきい値領域内のいずれかのしきい値領域となるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記2個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が2個以内であり、
前記メモリコントローラは、前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第2ビットのデータと前記第3ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステムが提供される。
【図面の簡単な説明】
【0011】
図1】第1の実施形態によるメモリシステムの概略構成を示すブロック図。
図2】本実施形態の不揮発性メモリの内部構成の一例を示すブロック図。
図3】3次元構造のNANDメモリセルアレイの一例を示す回路図。
図4】3次元構造のNANDメモリのNANDメモリセルアレイの一部領域の断面図。
図5】第1の実施形態のしきい値領域の一例を示す図。
図6A】第1の実施形態のデータコーディングの一例を示す図。
図6B】第1の実施形態のデータコーディングの他の一例を示す図。
図7】第1の実施形態におけるプログラム後のしきい値領域を示す図。
図8A】第1の実施形態のプログラム順序の第1例を示す図。
図8B】第1の実施形態のプログラム順序の第2例を示す図。
図8C】第1の実施形態のプログラム順序の第3例を示す図。
図9】第1の実施形態による1ブロック分全体の書き込み手順の第1例を示すフローチャート。
図10】第1の実施形態による1stステージにおける書き込み手順を示すフローチャート。
図11】2ndステージの書込み手順の第1例を示すフローチャート。
図12】複数回数の読み出し結果の多数決処理を説明するための図。
図13】第1の実施形態に係る2ndステージでの書き込み手順の変形例を示すフローチャート。
図14A】4-3-4-4データコーディングを採用したFoggy-Fineプログラムにおける書き込みバッファのデータ量を説明する図。
図14B】本実施形態における書き込みバッファのデータ量を説明する図。
図15】1stステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャート。
図16A】2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャート。
図16B】一変形例によるページ読み出し処理に適したデータコーディングを示す図。
図16C】一変形例による読出し処理手順を示すフローチャート。
図16D】選択ワード線、ReadyBusy信号線、出力データ線の電圧波形図。
図17】1-5-4-5データコーディングの一例を示す図。
図18】1-5-4-5データコーディングの一例を示す図。
図19】3-5-2-5データコーディングの一例を示す図。
図20】3-3-4-5データコーディングの一例を示す図。
図21】2-3-5-5データコーディングの一例を示す図。
図22】3-2-5-5データコーディングの一例を示す図。
図23】3-4-4-4データコーディングの一例を示す図。
図24】3-4-4-4データコーディングの一例を示す図。
図25】1-4-5-5データコーディングの一例を示す図。
図26】2-5-3-5データコーディングの一例を示す図。
図27】3-4-5-3データコーディングの一例を示す図。
図28】3-2-5-5データコーディングの一例を示す図。
図29】3-2-5-5データコーディングの一例を示す図。
図30】1-5-5-4データコーディングの一例を示す図。
図31】1-5-4-5データコーディングの一例を示す図。
図32】1-4-5-5データコーディングの一例を示す図。
図33】1-5-3-6データコーディングの一例を示す図。
図34】1-3-6-5データコーディングの一例を示す図。
図35】1-2-6-6データコーディングの一例を示す図。
図36】1-2-6-6データコーディングの一例を示す図。
図37】1-2-6-6データコーディングの一例を示す図。
図38】1-4-6-4データコーディングの一例を示す図。
図39】1-4-4-6データコーディングの一例を示す図。
図40】1-4-6-4データコーディングの一例を示す図。
図41】1-4-4-6データコーディングの一例を示す図。
図42】2-5-2-6データコーディングの一例を示す図。
図43】2-5-2-6データコーディングの一例を示す図。
図44】2-5-2-6データコーディングの一例を示す図。
図45】3-3-3-6データコーディングの一例を示す図。
図46】3-3-6-3データコーディングの一例を示す図。
図47】2-3-4-6データコーディングの一例を示す図。
図48】3-4-2-6データコーディングの一例を示す図。
図49】2-3-4-6データコーディングの一例を示す図。
図50】3-2-6-4データコーディングの一例を示す図。
図51】3-2-4-6データコーディングの一例を示す図。
図52】3-2-6-4データコーディングの一例を示す図。
図53】3-4-2-6データコーディングの一例を示す図。
図54】3-2-4-6データコーディングの一例を示す図。
図55】5-3-2-5データコーディングの一例を示す図。
図56】3-5-2-5データコーディングの一例を示す図。
図57】3-2-5-5データコーディングの一例を示す図。
図58】2-3-5-5データコーディングの一例を示す図。
図59】2-3-5-5データコーディングの一例を示す図。
図60】2-3-5-5データコーディングの一例を示す図。
図61】5-4-2-4データコーディングの一例を示す図。
図62】4-5-2-4データコーディングの一例を示す図。
図63】5-4-2-4データコーディングの一例を示す図。
図64】2-4-5-4データコーディングの一例を示す図。
図65】2-4-5-4データコーディングの一例を示す図。
図66】2-5-4-4データコーディングの一例を示す図。
図67】2-5-4-4データコーディングの一例を示す図。
図68】2-5-4-4データコーディングの一例を示す図。
図69】1-5-4-5データコーディングの一例を示す図。
図70】1-4-5-5データコーディングの一例を示す図。
図71】1-5-5-4データコーディングの一例を示す図。
図72】1-4-5-5データコーディングの一例を示す図。
図73】1-5-5-4データコーディングの一例を示す図。
図74】1-5-4-5データコーディングの一例を示す図。
図75】1-5-5-4データコーディングの一例を示す図。
図76】1-5-4-5データコーディングの一例を示す図。
図77】1-4-5-5データコーディングの一例を示す図。
図78】1-4-5-5データコーディングの一例を示す図。
図79】1-4-5-5データコーディングの一例を示す図。
図80】1-4-5-5データコーディングの一例を示す図。
図81】3-5-4-3データコーディングの一例を示す図。
図82】3-4-5-3データコーディングの一例を示す図。
図83】3-5-3-4データコーディングの一例を示す図。
図84】3-4-3-5データコーディングの一例を示す図。
図85】3-4-5-3データコーディングの一例を示す図。
図86】3-4-3-5データコーディングの一例を示す図。
図87】3-3-5-4データコーディングの一例を示す図。
図88】3-3-5-4データコーディングの一例を示す図。
図89】4-5-3-3データコーディングの一例を示す図。
図90】3-5-4-3データコーディングの一例を示す図。
図91】3-4-5-3データコーディングの一例を示す図。
図92】3-3-4-5データコーディングの一例を示す図。
図93】3-3-4-5データコーディングの一例を示す図。
図94】3-3-4-5データコーディングの一例を示す図。
図95】3-4-5-3データコーディングの一例を示す図。
図96】3-3-5-4データコーディングの一例を示す図。
図97】3-3-4-5データコーディングの一例を示す図。
図98】4-3-4-4データコーディングの一例を示す図。
図99】3-4-4-4データコーディングの一例を示す図。
図100】3-4-4-4データコーディングの一例を示す図。
図101】4-3-4-4データコーディングの一例を示す図。
図102】3-4-4-4データコーディングの一例を示す図。
図103】3-4-4-4データコーディングの一例を示す図。
図104】3-4-4-4データコーディングの一例を示す図。
図105】3-4-4-4データコーディングの一例を示す図。
図106】4-4-3-4データコーディングの一例を示す図。
図107】4-4-3-4データコーディングの一例を示す図。
図108】第3の実施形態に係る1ブロック分全体の書き込み手順を示すフローチャート。
図109】第3の実施形態に係る1stステージ及び2ndステージにおける書き込み手順を示すフローチャート。
図110】第3の実施形態のプログラムにおける書き込みバッファ量を説明するための図。
【発明を実施するための形態】
【0012】
図1は第1の実施形態によるメモリシステム1の概略構成を示すブロック図である。図1のメモリシステム1は、メモリコントローラ2と不揮発性メモリ3とを備える。図1のメモリシステム1は、ホストプロセッサ(以下、単にホストと呼ぶ)4と接続可能である。ホスト4は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【0013】
不揮発性メモリ3は、データを不揮発に記憶するメモリであり、例えば、NANDフラッシュメモリ(以下、NANDメモリと呼ぶこともある)5を備えている。本実施形態では、不揮発性メモリ3が、メモリセルあたり4ビットのデータを記憶可能なメモリセルを有する4ビット/Cell(QLC:Quad Level Cell)のNANDメモリ5である例を説明する。本実施形態による不揮発性メモリ3は、メモリセルが立体的に積層された3次元構造を有する。不揮発性メモリ3は、各々が、データが消去された消去状態を示す第1のしきい値領域と、第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2乃至第16のしきい値領域とを含む16個のしきい値領域により、第1乃至第4ビットで表わせられる4ビットのデータを記憶可能な複数のメモリセルを有する。例えば、第1ビットは最下位のLowerビット、前記第2ビットは二番目に小さいMiddleビット、前記第3ビットは二番目に大きいUpperビット、前記第4ビットは最上位のTopビットである。
【0014】
メモリコントローラ2は、ホスト4からの書き込みコマンドに従って不揮発性メモリ3へのデータの書き込みを制御する。また、メモリコントローラ2は、ホスト4からの読み出しコマンドに従って不揮発性メモリ3からのデータの読み出しを制御する。メモリコントローラ2は、RAM(Random Access Memory)6、ROM(Read Only Memory)7、プロセッサ8、ホストインターフェイス9、ECC(Error Check and Correct)回路10及びメモリインターフェイス11を備える。RAM6、プロセッサ8、ホストインターフェイス9、ECC回路10及びメモリインターフェイス11は、共通の内部バス12で接続される。
【0015】
後述するように、本実施形態のメモリコントローラ2は、第1ビット、第2ビット、第4ビットのデータを書き込む第1プログラムを不揮発性メモリ3に行わせた後に、第3ビットのデータを書き込む第2プログラムを不揮発性メモリ3に行わせる。第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、第1ビットのデータの値の判定に用いられる第1の境界の数、第2ビットのデータの値の判定に用いられる第2の境界の数、第3ビットのデータの値の判定に用いられる第3の境界の数、第4ビットのデータの値の判定に用いられる第4の境界の数のうち最大の値は5であり、二番目に大きな値は4である。メモリコントローラ2は、メモリセルにおけるしきい値領域が、第1ビット、第2ビット、第4ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18乃至第24のしきい値領域のいずれかのしきい値領域となるように第1プログラムを不揮発性メモリ3に行わせるように構成される。メモリコントローラ2は、メモリセルにおけるしきい値領域が、第3ビットのデータに応じて、第17乃至第24のしきい値領域のうちいずれかのしきい値領域から第1乃至第16のしきい値領域のうちの2個のしきい値領域内のいずれかのしきい値領域となるように第2プログラムを不揮発性メモリ3に行わせるように構成される。2個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が2個以内である。メモリコントローラ2は、第2プログラムを不揮発性メモリ3に行わせる場合に、第2ビットのデータと第3ビットのデータとを不揮発性メモリ3へ入力するように構成される。
【0016】
より詳細には、メモリコントローラ2は、16個のしきい値領域(第1乃至第16のしきい値領域)間の15個の境界のうち、隣接するしきい値領域間で、第1ビットの値が異なる境界の数、第2ビットの値が異なる境界の数、第3ビットの値が異なる境界の数、及び第4ビットの値が異なる境界の数が順に(1、4、5、5)、(1、5、4、5)、又は(3、3、4、5)となるように第1プログラム及び第2プログラムを不揮発性メモリに行わせる。
【0017】
あるいは、本実施形態のメモリコントローラ2は、第1ビット、第2ビット、第4ビットのデータを書き込む第1プログラムを不揮発性メモリ3に行わせた後に、第3ビットのデータを書き込む第2プログラムを不揮発性メモリ3に行わせる。第1乃至第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、第1ビットのデータの値の判定に用いられる第1の境界の数、第2ビットのデータの値の判定に用いられる第2の境界の数、第3ビットのデータの値の判定に用いられる第3の境界の数、第4ビットのデータの値の判定に用いられる第4の境界の数は順に(3、5、2、5)である。メモリコントローラ2は、メモリセルにおけるしきい値領域が、第1ビット、第2ビット、第4ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18乃至第24のしきい値領域のいずれかのしきい値領域となるように第1プログラムを不揮発性メモリ3に行わせるように構成される。メモリコントローラ2は、メモリセルにおけるしきい値領域が、第3ビットのデータに応じて、第17乃至第24のしきい値領域のうちいずれかのしきい値領域から第1乃至第16のしきい値領域のうちの2個のしきい値領域内のいずれかのしきい値領域となるように第2プログラムを不揮発性メモリ3に行わせるように構成される。2個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が2個以内である。メモリコントローラ2は、第2プログラムを不揮発性メモリ3に行わせる場合に、第2ビットのデータと第3ビットのデータとを不揮発性メモリ3へ入力するように構成される。
【0018】
メモリコントローラ2は、第17乃至第24のしきい値領域のうち第2ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差が、第1ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差よりも小さく、かつ第4ビットのデータの値が異なる2つのしきい値領域の間の電圧レベルの差よりも小さくなるように第1プログラムを不揮発性メモリに行わせてもよい。
【0019】
あるいは、メモリコントローラ2は、第2ビットのデータの値が異なる第1プログラム時の2つのしきい値領域の間隔よりも、2つのしきい値領域に対して第3ビットのデータにより第2プログラムを行って得られる4つのしきい値領域のうち隣接するしきい値領域の間隔が広くなるように、第2プログラムを不揮発性メモリに行わせてもよい。
【0020】
ホストインターフェイス9は、ホスト4から受信したコマンド、ユーザデータ(書き込みデータ)などを内部バス12に出力する。また、ホストインターフェイス9は、不揮発性メモリ3から読み出されたユーザデータやプロセッサ8からの応答などをホスト4へ送信する。
【0021】
メモリインターフェイス11は、プロセッサ8の指示に基づいて、ユーザデータ等を不揮発性メモリ3へ書き込む処理と不揮発性メモリ3から読み出す処理を制御する。
【0022】
プロセッサ8は、メモリコントローラ2を統括的に制御する。プロセッサ8は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等である。プロセッサ8は、ホスト4からホストインターフェイス9経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、プロセッサ8は、ホスト4からのコマンドに従って、不揮発性メモリ3へのユーザデータ及びパリティの書き込みをメモリインターフェイス11へ指示する。また、プロセッサ8は、ホスト4からのコマンドに従って、不揮発性メモリ3からのユーザデータ及びパリティの読み出しを、メモリインターフェイス11へ指示する。
【0023】
ユーザデータは、内部バス12経由でRAM6に格納される。プロセッサ8は、RAM6に格納されるユーザデータに対して、不揮発性メモリ3上の格納領域(メモリ領域)を決定する。プロセッサ8は、書き込み単位であるページ単位のデータ(ページデータ)に対して、不揮発性メモリ3上のメモリ領域を決定する。本明細書では、不揮発性メモリ3の1ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、一般には符号化されて符号語として不揮発性メモリ3に格納されるが、符号化は必須ではない。メモリコントローラ2は、符号化せずにユニットデータを不揮発性メモリ3に格納してもよいが、図1では、一構成例として符号化を行う構成を示している。メモリコントローラ2が符号化を行わない場合には、ページデータはユニットデータと一致する。また、1つのユニットデータに基づいて1つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて1つの符号語が生成されてもよい。また、複数のユニットデータを用いて1つの符号語が生成されてもよい。
【0024】
プロセッサ8は、ユニットデータごとに書き込み先の不揮発性メモリ3のメモリ領域を決定する。不揮発性メモリ3のメモリ領域には物理アドレスが割当てられている。プロセッサ8は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ8は、決定したメモリ領域(物理アドレス)を指定してユーザデータを不揮発性メモリ3へ書き込むようメモリインターフェイス11へ指示する。一方、ホスト4は論理アドレスでデータを管理する。このため、プロセッサ8は、ユーザデータの論理アドレスと物理アドレスとの対応関係を管理する。プロセッサ8は、ホスト4からの論理アドレスを含む読み出しコマンドを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス11へ指示する。
【0025】
本明細書では、1つのワード線に共通に接続された複数のメモリセルをメモリセルグループMGと定義する。1つのメモリセルグループMGが書込み(プログラム)の単位になる。本実施形態では、不揮発性メモリ3は、4ビット/CellのNANDメモリ5であり、1つのメモリセルグループMGは4ビット×ビット数分のデータ量を有する。各メモリセルに書き込まれる各ビットは、それぞれ異なるページに対応する。本実施形態では、1つのメモリセルグループMGの4ページを、Lowerページ(第1のページ)、Middleページ(第2のページ)、Upperページ(第3のページ)、Topページ(第4のページ)と呼ぶ。
【0026】
ECC回路10は、RAM6に格納されたユーザデータを符号化して、符号語を生成する。また、ECC回路10は、不揮発性メモリ3から読み出された符号語を復号する。ECC回路10は、不揮発性メモリ3から読み出した符号語に含まれるビットエラーを訂正した上で、ユーザデータに復号する。
【0027】
RAM6は、ホスト4から受信したユーザデータを不揮発性メモリ3へ記憶するまでに一時的に格納したり、不揮発性メモリ3から読み出したデータをホスト4へ送信するまでに一時的に格納する。RAM6は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリである。
【0028】
図1では、メモリコントローラ2が、ECC回路10とメモリインターフェイス11をそれぞれ備える構成例を示した。しかしながら、ECC回路10がメモリインターフェイス11に内蔵されていてもよい。また、ECC回路10が、不揮発性メモリ3に内蔵されていてもよい。
【0029】
ホスト4からライト要求を受信した場合、メモリシステム1は次のように動作する。プロセッサ8は、ライトデータをRAM6に一時的に格納する。プロセッサ8は、RAM6に格納されたデータをリードし、ECC回路10に入力する。ECC回路10は、入力されたデータを符号化し、符号語をメモリインターフェイス11に入力する。メモリインターフェイス11は、入力された符号語を不揮発性メモリ3に書き込む。
【0030】
ホスト4からリード要求を受信した場合、メモリシステム1は次のように動作する。メモリインターフェイス11は、不揮発性メモリ3から読み出した符号語をECC回路10に入力する。ECC回路10は、入力された符号語を復号し、復号されたデータをRAM6に一時的に格納する。プロセッサ8は、RAM6に格納されたデータを、ホストインターフェイス9を介してホスト4に送信する。なお、不揮発性メモリ3は、複数のチップで構成される場合もあり、不揮発性メモリ3とメモリインターフェイス11は、貫通ビア(TSV:Through Silicon Via)によって接続することも可能である。
【0031】
なお、図1に示すメモリコントローラ2の構成は一例であり、内部バス12が分割構造や階層構造になったり、あるいは付加的な機能ブロックが接続されるなど、他にも様々な派生的な形態をとりうる。
【0032】
図2は、本実施形態の不揮発性メモリ3の内部構成の一例を示すブロック図である。不揮発性メモリ3は、NAND I/Oインターフェイス21、制御部22、NANDメモリセルアレイ(メモリセル部)23、及びページバッファ(第2記憶部)24を備える。不揮発性メモリ3は、例えば半導体基板(例えば、シリコン基板)上に形成されてチップ化される。
【0033】
制御部22は、NAND I/Oインターフェイス21経由でメモリコントローラ2からのコマンド等に基づいて、不揮発性メモリ3の動作を制御する。具体的には、制御部22は、書き込み要求が入力された場合、書き込みが要求されたデータをNANDメモリセルアレイ23上の指定されたアドレスへ書き込むよう制御する。また、制御部22は、読み出し要求が入力された場合、読み出しが要求されたデータをNANDメモリセルアレイ23から読み出して、NAND I/Oインターフェイス21経由でメモリコントローラ2へ出力するよう制御する。ページバッファ24は、NANDメモリセルアレイ23の書き込み時にメモリコントローラ2から入力されたデータを一時的に格納したり、NANDメモリセルアレイ23から読み出したデータを一時的に格納したりするバッファである。
【0034】
後述するように、制御部22は、1stステージのプログラムによりプログラムされたデータを読み出して得られるデータと、1stステージ及び2ndステージのプログラムで重複して入力されるビットのデータと、2ndステージのプログラムでプログラムされるビットの入力データとに基づいて、2ndステージのプログラムでプログラムされるビットのデータのしきい値電圧を決定する。
【0035】
制御部22は、発振器31と、シーケンサ32と、コマンドユーザインターフェイス33と、電圧供給部34と、カラムカウンタ35と、シリアルアクセスコントローラ36とを有する。また、NANDメモリセルアレイ23は、ローデコーダ37とセンスアンプ38を有する。
【0036】
NAND I/Oインターフェイス21は、メモリコントローラ2との間でIO信号及び制御信号を送受信するための回路である。コマンドユーザインターフェイス33は、メモリコントローラ2からIO信号線を介して受信したコマンド、アドレス、及びデータのうちの、コマンド及びアドレスを、制御信号に基づいて取得する。コマンドユーザインターフェイス33は、取得したコマンド及びアドレスをシーケンサ32に渡す。
【0037】
発振器31は、クロックを生成する回路である。発振器31によって生成されたクロックは、シーケンサ32を含む各構成要素に供給される。シーケンサ32は、発振器31から供給されるクロックによって駆動されるステートマシンである。シーケンサ32は、NANDメモリセルアレイ23へのアクセスなどの制御を実行する。例えば、シーケンサ32は、コマンドユーザインターフェイス33から受信したコマンドに応じて、各種の内部電圧や動作タイミング等を制御するための指令を出す。また、シーケンサ32は、コマンドユーザインターフェイス33から受信したアドレスに含まれるブロックアドレス及びページアドレスをローデコーダ37に供給する。さらに、シーケンサ32は、コマンドユーザインターフェイス33から受信したアドレスに含まれるカラムアドレスをカラムカウンタ35に供給する。
【0038】
電圧供給部34は、ワード線に供給される各種の内部電圧やビット線に供給される各種の内部電圧を生成して、ローデコーダ37やセンスアンプ38へ供給する。カラムカウンタ35は、プログラム動作あるいはリード動作の際には、シーケンサ32から供給されたカラムアドレスを先頭として、シリアルアクセスコントローラ36から供給される制御信号に従ってカラムアドレスを順次進める。
【0039】
ページバッファ24は、プログラム動作の際には、シリアルアクセスコントローラ36から受信したデータを、上記カラムカウンタ35が指定するカラムアドレス領域に順次格納する。また、ページバッファ24は、リード動作の際には、格納されているデータのうち、上記カラムアドレスで指定されたカラムアドレスのデータを順次、シリアルアクセスコントローラ36に送る。
【0040】
シリアルアクセスコントローラ36は、プログラム動作の際には、NAND I/Oインターフェイス21からIO信号線のビット幅毎にシリアルに受信したデータを、ページバッファ24に格納する。また、シリアルアクセスコントローラ36は、リード動作の際にはページバッファ24からIO信号線のビット幅毎にシリアルに受信したデータをNAND I/Oインターフェイス21に送る。
【0041】
ローデコーダ37は、プログラム動作及びリード動作の際、ブロックアドレス及びページアドレスをデコードして、アクセス先のブロックBLKに含まれるアクセス対象となるページに対応するワード線を選択する。そして各ローデコーダ37は、選択ワード線及び非選択ワード線に適切な電圧を印加する。
【0042】
センスアンプ38は、プログラム動作の際には、ページバッファ24に格納された対応するデータをメモリセルトランジスタに転送する。また、センスアンプ38は、リード動作の際には、選択ワード線からビット線に読み出されたデータをセンスして、得られたデータを、ページバッファ24に格納する。ページバッファ24に格納されたデータは、シリアルアクセスコントローラ36及びNAND I/Oインターフェイス21を介してメモリコントローラ2に送られる。
【0043】
図3は3次元構造のNANDメモリセルアレイ23の一例を示す回路図である。図3は、3次元構造のNANDメモリセルアレイ23内の複数のブロックのうちの1つのブロックBLKの回路構成を示している。NANDメモリセルアレイ23の他のブロックも図3と同様の回路構成を有する。なお、本実施形態は、2次元構造のメモリセルにも適用可能である。
【0044】
図3に示すように、ブロックBLKは、例えば4つのフィンガーFNG(FNG0~FNG3)を有する。また各々のフィンガーFNGは、複数のNANDストリングNSを含む。NANDストリングNSの各々は、例えば縦続接続された8個のメモリセルトランジスタMT(MT0~MT7)と、選択トランジスタST1、ST2とを有する。本明細書では、各々のフィンガーFNGをストリングStと呼ぶ場合がある。
【0045】
なお、NANDストリングNS内のメモリセルトランジスタMTの個数は8個に限られない。メモリセルトランジスタMTは、選択トランジスタST1、ST2の間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタMT7の電流経路は、選択トランジスタST1の電流経路の一端に接続され、他端側のメモリセルトランジスタMT0の電流経路は、選択トランジスタST2の電流経路の一端に接続されている。
【0046】
フィンガーFNG0~FNG3の各々の選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0~SGD3に共通接続される。他方で、選択トランジスタST2のゲートは、複数のフィンガーFNG間で同一のセレクトゲート線SGSに共通接続される。また、同一のブロックBLK内にあるメモリセルトランジスタMT0~MT7の制御ゲートは、それぞれワード線WL0~WL7に共通接続される。すなわち、ワード線WL0~WL7及びセレクトゲート線SGSは、同一ブロックBLK内の複数のフィンガーFNG0~FNG3間で共通に接続されているのに対し、セレクトゲート線SGDは、同一ブロックBLK内であってもフィンガーFNG0~FNG3のそれぞれ毎に独立している。
【0047】
NANDストリングNSを構成するメモリセルトランジスタMT0~MT7の制御ゲート電極には、それぞれワード線WL0~WL7が接続されており、また、同一のフィンガーFNG内の各NANDストリングNS中のi番目のメモリセルトランジスタMTi(i=0~n)は、同一のワード線WLi(i=0~n)によって共通接続されている。すなわち、ブロックBLK内の同一行のメモリセルトランジスタMTiの制御ゲート電極は、同一のワード線WLiに接続される。
【0048】
各NANDストリングNSは、ワード線WLiに接続するとともにビット線にも接続される。各NANDストリングNS内の各メモリセルは、ワード線WLi及びセレクトゲート線SGD0~SGD3を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックBLK内にあるメモリセル(メモリセルトランジスタMT)のデータは、一括して消去される。一方、データの読み出し及び書き込みは、物理セクタMS単位で行われる。1物理セクタMSは、1つのワード線WLiに接続され、かつ1つのフィンガーFNGに属する複数のメモリセルを含む。
【0049】
メモリコントローラ2は、一つのフィンガー内の1本のワード線に接続されている全NANDストリングNSを単位として、書込み(プログラム)を行う。このため、メモリコントローラ2がプログラムを行うデータ量の単位は、4ビット×ビット線数になる。
【0050】
リード動作及びプログラム動作時において、物理アドレスに応じて、1本のワード線WLi及び1本のセレクトゲート線SGDが選択され、物理セクタMSが選択される。なお、本明細書では、メモリセルにデータを書き込むことを、必要に応じてプログラムと呼ぶ。
【0051】
図4は3次元構造のNANDメモリ5のNANDメモリセルアレイ23の一部領域の断面図である。図4に示すように、半導体基板のp型ウェル領域(P-well)41上に複数のNANDストリングNSが上下方向に形成されている。すなわち、p型ウェル領域41上には、セレクトゲート線SGSとして機能する複数の配線層42、ワード線WLiとして機能する複数の配線層43、及びセレクトゲート線SGDとして機能する複数の配線層44が上下方向に形成されている。
【0052】
そして、これらの配線層42、43、44を貫通してp型ウェル領域41に達するメモリホール45が形成されている。メモリホール45の側面には、ブロック絶縁膜46、電荷蓄積層47、及びゲート絶縁膜48が順次形成され、更にメモリホール45内に導電膜49が埋め込まれている。導電膜49は、NANDストリングNSの電流経路として機能し、メモリセルトランジスタMT並びに選択トランジスタST1及びST2の動作時にチャネルが形成される領域である。
【0053】
各NANDストリングNSにおいて、p型ウェル領域41上に選択トランジスタST2、複数のメモリセルトランジスタMT、及び選択トランジスタST1が順次積層されている。導電膜49の上端には、ビット線BLとして機能する配線層が形成される。
【0054】
さらに、p型ウェル領域41の表面内には、n+型不純物拡散層及びp+型不純物拡散層が形成されている。n+型不純物拡散層上にはコンタクトプラグ50が形成され、コンタクトプラグ50上には、ソース線SLとして機能する配線層が形成される。またp+型不純物拡散層上にはコンタクトプラグ51が形成され、コンタクトプラグ51上には、ウェル配線CPWELLとして機能する配線層が形成される。ウェル配線CPWELLは消去電圧を印加するために用いられる。
【0055】
図4に示したNANDメモリセルアレイ23は、図4の紙面の奥行き方向に複数配列されており、奥行き方向に一列に並ぶ複数のNANDストリングNSの集合によって、1つのフィンガーFNGが形成される。他のフィンガーFNGは例えば図4の左右方向に形成されている。図3には4つのフィンガーFNG0~3が図示されているが、図4にはコンタクトプラグ50,51の間に3つのフィンガーを配置した例を示している。
【0056】
図5は第1の実施形態のしきい値領域の一例を示す図である。図5は、4ビット/Cellの不揮発性メモリ3のしきい値領域の分布の一例を示している。不揮発性メモリ3では、メモリセルの電荷蓄積層47に蓄えられた電子の電荷量により情報を記憶する。各メモリセルは、電子の電荷量に応じたしきい値電圧を有する。そして、メモリセルに記憶する複数のデータ値を、しきい値電圧が異なる複数の領域(しきい値領域)にそれぞれ対応させる。
【0057】
図5の、S0~S15は、16個のしきい値領域内のしきい値分布を示している。図5の横軸はしきい値電圧を示し、縦軸はメモリセル数(セル数)である。しきい値分布とは、しきい値が変動する範囲である。このように、各メモリセルは、15個の境界によって仕切られた16個のしきい値領域を有し、各しきい値領域は、固有のしきい値分布を有する。
【0058】
本実施形態では、しきい値電圧がVr1以下となる領域を領域S0と呼び、しきい値電圧がVr1より大きくVr2以下となる領域を領域S1と呼び、しきい値電圧がVr2より大きくVr3以下となる領域を領域S2と呼び、しきい値電圧がVr3より大きくVr4以下となる領域を領域S3と呼ぶ。また、本実施形態では、しきい値電圧がVr4より大きくVr5以下となる領域を領域S4と呼び、しきい値電圧がVr5より大きくVr6以下となる領域を領域S5と呼び、しきい値電圧がVr6より大きくVr7以下となる領域を領域S6と呼び、しきい値電圧がVr7より大きくVr8以下となる領域を領域S7と呼ぶ。また、本実施形態では、しきい値電圧がVr8より大きくVr9以下となる領域を領域S8と呼び、しきい値電圧がVr9より大きくVr10以下となる領域を領域S9と呼び、しきい値電圧がVr10より大きくVr11以下となる領域を領域S10と呼び、しきい値電圧がVr11より大きくVr12以下となる領域を領域S11と呼ぶ。また、本実施形態では、しきい値電圧がVr12より大きくVr13以下となる領域を領域S12と呼び、しきい値電圧がVr13より大きくVr14以下となる領域を領域S13と呼び、しきい値電圧がVr14より大きくVr15以下となる領域を領域S14と呼び、しきい値電圧がVr15より大きくなる領域を領域S15と呼ぶ。
【0059】
また、領域S0~S15に対応するしきい値分布を第1~第16の分布と呼ぶ。Vr1~Vr15は、各しきい値領域の境界となるしきい値電圧である。
【0060】
不揮発性メモリ3では、メモリセルの複数のしきい値領域に複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書き込み(プログラム)時には、データコーディングに従って記憶するデータ値に応じたしきい値領域内となるようにメモリセル内の電荷蓄積層47に電荷を注入する。そして、読み出し時には、メモリセルに読み出し電圧を印加し、読み出し電圧よりメモリセルのしきい値が低いか高いかにより、データ論理が決定される。
【0061】
データの読み出し時には、読み出し対象の境界の読み出しレベルよりも、しきい値が低いか高いかでデータの論理が決定される。しきい値が最も低い場合は、「消去」状態であり、全てのビットのデータが”1”と定義される。しきい値が、「消去」状態よりも高い場合は、「プログラムされた」状態であり、コーディングに従ってデータが”1”または”0”と定義される。
【0062】
図6Aは第1の実施形態のデータコーディングの一例を示す図であり、1-4-5-5データコーディングの一例を示している。本実施形態では、図5に示した16個のしきい値領域を4ビットの16個のデータ値にそれぞれ対応させる。図6Aにおけるしきい値電圧と、Top、Upper、Middle、Lowerページに対応するビットのデータ値との関係は、以下に示す通りである。
【0063】
・しきい値電圧がS0領域内にあるメモリセルは“1111”を記憶している状態である。
・しきい値電圧がS1領域内にあるメモリセルは“0111”を記憶している状態である。
・しきい値電圧がS2領域内にあるメモリセルは“0011”を記憶している状態である。
・しきい値電圧がS3領域内にあるメモリセルは“1011”を記憶している状態である。
・しきい値電圧がS4領域内にあるメモリセルは“1001”を記憶している状態である。
・しきい値電圧がS5領域内にあるメモリセルは“0001”を記憶している状態である。
・しきい値電圧がS6領域内にあるメモリセルは“0101”を記憶している状態である。
・しきい値電圧がS7領域内にあるメモリセルは“1101”を記憶している状態である。
・しきい値電圧がS8領域内にあるメモリセルは“1100”を記憶している状態である。
・しきい値電圧がS9領域内にあるメモリセルは“1110”を記憶している状態である。
・しきい値電圧がS10領域内にあるメモリセルは“1010”を記憶している状態である。
・しきい値電圧がS11領域内にあるメモリセルは“1000”を記憶している状態である。
・しきい値電圧がS12領域内にあるメモリセルは“0000”を記憶している状態である。
・しきい値電圧がS13領域内にあるメモリセルは“0100”を記憶している状態である。
・しきい値電圧がS14領域内にあるメモリセルは“0110”を記憶している状態である。
・しきい値電圧がS15領域内にあるメモリセルは“0010”を記憶している状態である。
【0064】
図6Bは第1の実施形態のデータコーディングの他の一例を示す図であり、4-3-4-4データコーディングの一例を示している。図6Bにおけるしきい値電圧と、Top、Upper、Middle、Lowerページに対応するビットのデータ値との関係は、以下に示す通りである。
【0065】
・しきい値電圧がS0領域内にあるメモリセルは“1111”を記憶している状態である。
・しきい値電圧がS1領域内にあるメモリセルは“0111”を記憶している状態である。
・しきい値電圧がS2領域内にあるメモリセルは“0011”を記憶している状態である。
・しきい値電圧がS3領域内にあるメモリセルは“1011”を記憶している状態である。
・しきい値電圧がS4領域内にあるメモリセルは“1010”を記憶している状態である。
・しきい値電圧がS5領域内にあるメモリセルは“1110”を記憶している状態である。
・しきい値電圧がS6領域内にあるメモリセルは“1100”を記憶している状態である。
・しきい値電圧がS7領域内にあるメモリセルは“1000”を記憶している状態である。
・しきい値電圧がS8領域内にあるメモリセルは“1001”を記憶している状態である。
・しきい値電圧がS9領域内にあるメモリセルは“0001”を記憶している状態である。
・しきい値電圧がS10領域内にあるメモリセルは“0000”を記憶している状態である。
・しきい値電圧がS11領域内にあるメモリセルは“0010”を記憶している状態である。
・しきい値電圧がS12領域内にあるメモリセルは“0110”を記憶している状態である。
・しきい値電圧がS13領域内にあるメモリセルは“0100”を記憶している状態である。
・しきい値電圧がS14領域内にあるメモリセルは“0101”を記憶している状態である。
・しきい値電圧がS15領域内にあるメモリセルは“1101”を記憶している状態である。
【0066】
図6A及び図6Bに示すように、しきい値電圧の各領域に、各メモリセルの4ビットのデータの論理を割り振ることが出来る。なお、メモリセルが未書き込みの状態(「消去」の状態)では、メモリセルのしきい値電圧はS0領域内にある。また、ここに示した符号では、S0(消去)状態で”1111”というデータを記憶し、S1状態で”0111”というデータを記憶するといったように、任意の2つの隣接する領域間で1ビットのみデータが変化する。このように、図6A及び図6Bに示したデータコーディングは、任意の2つの隣接する領域間で1ビットのみデータが変化するグレイ符号である。
【0067】
図6Aに示す本実施形態のコーディングでは、各ページのビット値を判定するための境界となるしきい値電圧は、以下に示す通りである。
【0068】
・Topページのビット値を判定するための境界となるしきい値電圧はVr1、Vr3、Vr5、Vr7、Vr12である。
・Upperページのビット値を判定するための境界となるしきい値電圧はVr2、Vr6、Vr10、Vr13、Vr15である。
・Middleページのビット値を判定するための境界となるしきい値電圧はVr4、Vr9、Vr11、Vr14である。
・Lowerページのビット値を判定するための境界となるしきい値電圧はVr8である。
【0069】
このように、ビット値を判定するための境界となるしきい値電圧の数(以下、境界数とよぶ)が、Lowerページ、Middleページ、Upperページ、Topページでそれぞれ1,4,5,5である。以下、このようなコーディングをLowerページ、Middleページ、Upperページ、Topページのそれぞれの境界数を用いて、1-4-5-5コーディングという。
【0070】
本実施形態の第1の特徴は、ページごとのビット値が変化する境界数が最大5であることである。16個の状態を4ビットで表現する場合、最大境界数の最小値は4であり、図6のコーディングは、これよりも1つ多いだけであり、ビットエラーの偏りが少なくなる。このように、本実施形態によるメモリシステム1は、第1の特徴を備えることで、ビットエラー率を抑制でき、またページごとにビットエラーの偏りも抑制できる。
【0071】
本実施形態の第2の特徴は、Lowerページの境界数が1つ、Middleページの境界数が4つであり、LowerページとMiddleページをひとまとめとした第1ステージのプログラムと、UpperページとTopページをひとまとめとした第2ステージのプログラムとの2つのステージでプログラムが可能になることである。
【0072】
本実施形態の第3の特徴は、第1ステージのプログラムで生成されたしきい値領域から、第2ステージのプログラムで生成されたしきい値領域への変化幅が少ないことである。すなわち、しきい値領域の変化幅が小さいことである。しきい値領域の変化幅が小さいほど、隣接セル間干渉を受けにくくなる。上述した第1~第3の特徴については、後に詳述する。
【0073】
不揮発性メモリ3の制御部22は、図6A又は図6Bに示したコーディングに基づいて、NANDメモリセルアレイ23へのプログラム及びNANDメモリセルアレイ23からの読み出しを制御する。
【0074】
3次元メモリセルは、メモリセルの微細化が2次元メモリセルほどは進行していない。このため、3次元メモリセルにおいて、隣接するメモリセル同士の間隔が広い世代であれば、セル間相互干渉が小さい。この場合は、一般に、各メモリセルの全ビットを同時に、例えば各ビットを異なるページに割り付けていれば全ページを同時に、プログラムする手法が取られる。
【0075】
各メモリセルの全ビットを同時にプログラムする場合、データコーディングとしては、特に組み合わせを問わない。全ビットのデータに基づき、16個のしきい値領域のどれに位置するかが決定され、消去状態であるS0の領域から、決定されたしきい値領域になるようにプログラムすればよい。この場合、一般に、4-4-3-4データコーディングといった、最大境界数が最小値をとるようなデータコーディングが採用される。4-4-3-4データコーディングでは、16個のしきい値領域間の15個の境界を4つのページに分配する際に、Lowerページに4つ、Middleページに4つ、Upperページに3つ、Topページに4つの境界を分配する。このデータコーディングの場合、ページ間の境界数の偏りが小さいために、結果としてページ間のビットエラー率の偏りが小さくなる。これは、ビットエラーの原因のほとんどが、隣接するしきい値領域にしきい値がシフトすることによって引き起こされ、境界数を多く有するページほどビットエラー数が多くなるためである。このことは、メモリセルとしてのエラー率が同じであったとしても、ページデータのエラーを訂正するのに必要なECC回路10の訂正能力を強化しなくてはいけないことにつながるので、ホスト4からの書込み要求に対するメモリシステム1の応答性能、コスト及び消費電力の悪化を抑制するためにも有効である。また、境界数の偏りによって引き起こされる読み出し速度の偏りも小さくなる。
【0076】
また、4ビット/CellのNANDメモリ5では、隣接するしきい値領域の間隔が狭まるため、セル間相互干渉による影響が1ビット/Cellや2ビット/CellのNANDメモリ5と比較して大きくなる。このため、近年の微細化が進んだ世代のNANDメモリ5では、一般に、セル間相互干渉を抑えるため、複数のプログラムステージ、例えば2つのプログラムステージ(以下、単にステージと呼ぶ場合もある)を用いて、メモリセルの電荷蓄積層47に少しずつ電荷を注入するプログラム方法(Foggy-Fineプログラム)が採用される。このFoggy-Fineプログラムでは、1つ目のステージ(Foggyステージ)でメモリセルへの書き込みを行った後に隣接セルの書き込みを行い、この後最初のメモリセルに戻り2つ目のステージ(Fineステージ)の書込みを行う。この場合の各ステージは、プログラムの実行単位であり、1ワード線WLiに対応するメモリセルのプログラムは2つのプログラムステージを実行することで完了する。
【0077】
1つ目のステージのプログラムでも2つ目のステージのプログラムでも、16個のしきい値領域を用いてプログラムが実行される。1つ目のステージのプログラム終了時のしきい値領域のしきい値分布は、最終的なデータコーディングにおけるしきい値領域のしきい値分布より広い幅を有する。すなわち、Foggyステージでは、Foggy(ラフ)書き込みが行われる。このFoggyステージのプログラムでは、入力データは4ページ全てが必要である。Foggyステージのプログラム後のしきい値分布は、隣接する分布が互いに重なり合っている中間状態であるので、データの読み出しは出来ない。2つ目のステージであるFineステージのプログラムでは、Foggyステージのプログラム後のしきい値領域を最終的なデータコーディングにおけるしきい値領域に移動させる。すなわち、Fineステージでは、Fine書き込みが行われる。このFineステージのプログラムも、入力データは4ページ全てが必要である。Fineステージのプログラム後のしきい値分布は、隣接する分布が分離された最終状態であるので、Fineステージのプログラム後にはデータの読み出しが可能である。
【0078】
4-4-3-4データコーディングの場合、境界数の偏りは少ないが、Foggy-Fineプログラムのデータ入力において、各ステージで4ページ分のデータ入力が必要となる。これは、データ入力にかかる時間の増大となり、ホスト4からの書込み要求に対するメモリシステム1の応答性能を悪化させてしまう。また、メモリシステム1内において、NANDメモリ5へ入力するためにデータを保持しておくための書き込みバッファ(第1記憶部)のバッファ量(書き込みバッファ量)を増大させてしまう。この書き込みバッファは、一般に、メモリシステム1内のRAM6の一部の領域が割り当てられたものである。
【0079】
これらに対する対策として、本実施形態では、メモリシステム1が、3次元構造を有した不揮発性メモリ3に対して、1-4-5-5データコーディングを採用し、さらに、2ステージでページ単位(page by page)の書き込みを実施する。これにより、本実施形態では、3次元構造を有する不揮発性メモリ3においてもセル間相互干渉と各ページ間のビットエラー率の偏りを抑制しつつ、メモリコントローラ2の書き込みバッファ量を低減する。本実施形態の書き込みバッファは、第1乃至第4ビット(Lowerページ、Middleページ、Upperページ及びTopページの各データ)のうち、第1プログラム及び第2プログラム時に重複して入力されるビットのデータを、第2プログラムを開始した以降は破棄又は無効化可能とし、それ以外のビットのデータを、第1プログラムを開始した以降は破棄又は無効化可能とする。
【0080】
ここで、隣接メモリセル間干渉について説明する。ある1つのメモリセルの電荷蓄積層47に蓄積された電荷は、隣接するメモリセルの電界を乱し、その結果、隣接するメモリセルを読み出す際のしきい値電圧を変動させるノイズを与える。ある電界条件下でプログラムとベリファイとが実施され、プログラムが完結した後、隣接するメモリセルが異なる電荷にプログラムされるということは、これに起因して読み出し精度が劣化することになる。この隣接メモリセル間干渉は、メモリデバイスの製造技術が微細化され、メモリセル間隔が縮小するにつれて顕著となる。そして、この隣接メモリセル間干渉は、大きくは同一ワード線WLi上の異なるビット線に接続された隣接メモリセル同士で生じる。
【0081】
隣接メモリセル間干渉は、プログラム及びベリファイの時と、隣接するメモリセルがプログラムされた後の読み出しの時とで、メモリセルの電界条件の違いを小さくすることによって緩和することができる。同一ワード線WLi上の異なるビット線に接続された隣接メモリセル同士の隣接メモリセル間干渉を低減する1つの方法として、プログラムを複数のステージに分割し、各ステージ間で電荷蓄積層47内の電荷量に大きな変化が起きないようにプログラムを実行する方法がある。
【0082】
本実施形態におけるプログラムシーケンスでは、1つのワード線WLi上の4ビットは、2つのプログラムステージ、すなわち1stステージと2ndステージとによってプログラムされる。各プログラムステージは、プログラムの実行単位であり、本実施形態のメモリシステム1は、メモリセルへの4ビットデータの書込みを、2つのプログラムステージを実行することで完了する。また、本実施形態では、2つのプログラムステージのそれぞれに、4ビットの何れかのページのデータが用いられる。具体的には、1stステージのプログラムには、Lowerページデータ、Middleページ及びTopページのデータが用いられ、2ndステージのプログラムには、Middleページ及びUpperページ及びTopページのデータが用いられる。
【0083】
図7は第1の実施形態におけるプログラム後のしきい値領域を示す図である。図7では、メモリセルに対して1stステージと2ndステージのプログラムを行った後のしきい値領域を示している。図7の(T1)は、プログラム前の初期状態である消去状態のしきい値領域を示している。図7の(T2)は、1stステージのプログラム(第1プログラム)後のしきい値領域を示している。図7の(T3)は、2ndステージのプログラム(第2プログラム)後のしきい値領域を示している。
【0084】
図7の(T1)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態(「消去」の状態)では分布S0の状態である。不揮発性メモリ3の制御部22は、図7の(T2)に示すように、1stステージのプログラムでは、LowerページおよびMiddleページおよびTopページに書き込む(記憶する)ビット値に応じて、メモリセルごとに分布S0のままとする、または電荷を注入して分布S0よりも上の分布に移動させる。
【0085】
具体的には、制御部22は、LowerページおよびMiddleページおよびTopページに書き込むビット値がともに“1”の場合は、電荷を注入せず、LowerページおよびMiddleページおよびTopページに書き込むビット値のどれが1つでも“0”の場合は電荷を注入して、しきい値電圧を高い方に移動させるようプログラムする。
【0086】
すなわち、LowerページとMiddleページとTopページに書き込むビット値が “011”の場合は分布S1へ、またLowerページとMiddleページとTopページに書き込むビット値が “101”の場合は分布S4へ、またLowerページとMiddleページとTopページに書き込むビット値が “001”の場合は分布S5へ、またLowerページとMiddleページとTopページに書き込むビット値が “100”の場合は分布S8へ、またLowerページとMiddleページとTopページに書き込むビット値が “110”の場合は分布S9へ、またLowerページとMiddleページとTopページに書き込むビット値が “000”の場合は分布S12へ、またLowerページとMiddleページとTopページに書き込むビット値が “010”の場合は分布S14へ移動させる。
【0087】
ここで好ましくは、分布S1、分布S4、分布S5、分布S8、分布S9、分布S12、分布S14は、しきい値電圧が多少低くなるようにしきい値領域の幅を広げて粗くプログラムする。すなわち、後述する、プログラム電圧パルスの上昇幅を大きくする。それにより書き込みにかかる時間を短縮することができる。そしてしきい値電圧が多少低くなるようにプログラムすることで、2ndステージのプログラムで最終的に所定の幅になるようにしきい値分布領域の幅を書き込みすることができる。
【0088】
そして好ましくは、隣接する分布S8と分布S9、および隣接するしきい値分布S12と分布S14のそれぞれの間隔は、他の隣接する分布との間隔よりも狭くする。これらの間隔を狭くした隣接しきい値分布同士の書き込みビット値は、Middleページのデータが異なっている。すなわち、1stステージのプログラム後のデータは、バイナリのように見えるので、LowerページとMiddleページデータとTopページの読み出しが可能であるが、Middleページのデータが異なるしきい値分布の間隔は狭くすることで、LowerページとTopページのデータが異なるしきい値分布の間隔は広く確保し、LowerページとTopページの読み出しの際のマージンを増加させる。図7の(T2)に示すしきい値分布S0~S14は、第17乃至第24のしきい値領域に対応する。
【0089】
次に、図7の(T3)に示すように、2ndステージのプログラムでは、データの書き込みにはMiddleページとUpperページとの2ページが必要である。そして、不揮発性メモリ3の制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で16値のレベルとなるようにプログラムする。2ndステージのプログラム後は、全てのページデータの読み出しが可能である。
【0090】
2ndステージのプログラムにおいて、メモリセルのしきい値の1stステージのプログラム終了時からの変化幅が大きいほど、隣接セル間干渉が大きくなる。したがって、メモリセルのしきい値分布の変化量が最も大きいしきい値分布の変化量が最小になることが好ましい。本実施例によれば、この最大のしきい値分布の変化量はしきい値分布3つ分で、S0がS3に変化する場合と、S4がS7に変化する場合と、S8がS11に変化する場合である。図7の(T3)に示すしきい値分布S0~S15は、第1乃至第16のしきい値領域に対応する。
【0091】
なお、典型的には、プログラムは、1回または複数回のプログラム電圧パルスが印加されることによって行われる。複数回のプログラム印加パルスにおいては、電圧値は段階的に上昇させる。各プログラム電圧パルスの後には、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ベリファイと呼ばれる読み出しが行なわれる。この印加と読み出しとが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【0092】
なお、制御部22は、1つのワード線WLiについて、1stステージのプログラムと、2ndステージのプログラムとを連続して実施してもよいが、隣接メモリセル間干渉の影響を低減するために、複数のワード線WLiをまたいで、非連続的な順序でプログラムを実施することも可能である。
【0093】
図8Aは第1の実施形態のプログラム順序の第1例を示す図である。図8Bは第1の実施形態のプログラム順序の第2例を示す図である。図8Cは第1の実施形態のプログラム順序の第3例を示す図である。図8A図8Cでは、隣接メモリセル間干渉の影響を小さくするために、2つのプログラムステージでプログラムを行う。図8Aは、各ブロック内の各ワード線に1個のストリングStが接続されているNANDメモリ5におけるプログラム順序の一例を示している。また、図8B及び図8Cは、各ブロック内の各ワード線に4つのストリングStが接続されているNANDメモリ5におけるプログラム順序の一例を示している。なお、図8B及び図8Cでは、各ワード線に接続された4つのストリングStをString0~3と表記している。
【0094】
書き込みを開始すると、制御部22は、所定の非連続的な順序でワード線WLiをまたぎながら、各プログラムステージを進む。すなわち、同一ワード線についての1stステージと2ndステージは、連続的には実行されず、あるワード線について1stステージのプログラムを行った後に、異なるワード線について2ndステージのプログラムを行う。
【0095】
あるワード線について2ndステージまでプログラムを完了した後に、隣接するワード線について1stステージ及び2ndステージのプログラムを連続して行うと、しきい値電圧の変動量が大きくなる。そして、隣接ワード線のしきい値電圧の変動量が大きいと、ワード線間の隣接メモリセル間干渉が大きくなる。したがって、ワード線間の隣接メモリセル間干渉を小さくするためには、ワード線が2ndステージまでプログラムを完了した後に、隣接ワード線のしきい値電圧の変動量を小さくすることが有効である。図8Aのシーケンスであれば、あるワード線が2ndステージまでプログラムを完了した後の隣接ワード線のプログラムステージは2ndステージのみとなる。
【0096】
図8Aのプログラム順序で3次元構造のNANDメモリ5にプログラムを行う場合、書き込みを開始すると、制御部22は、プロセッサ8からの指示に基づいて、以下の(1)~(9)に示す順番でプログラムを実行する。制御部22は、プロセッサ8からの指示に基づいてNANDメモリ5へのプログラムを行うが、以下では、プロセッサ8からの指示に基づく旨の記述を省略する。
【0097】
(1)まず、制御部22は、ワード線WL0の1stステージのプログラムST11を実施する。
(2)次に、制御部22は、ワード線WL1の1stステージのプログラムST12を実施する。
(3)次に、制御部22は、ワード線WL0の2ndステージのプログラムST13を実施する。
(4)次に、制御部22は、ワード線WL2の1stステージのプログラムST14を実施する。
(5)次に、制御部22は、ワード線WL1の2ndステージのプログラムST15を実施する。
(6)次に、制御部22は、ワード線WL3の1stステージのプログラムST16を実施する。
(7)次に、制御部22は、ワード線WL2の2ndステージのプログラムST17を実施する。
(8)次に、制御部22は、ワード線WL4の1stステージのプログラムST18を実施する。
(9)次に、制御部22は、ワード線WL3の2ndステージのプログラムST19を実施する。
【0098】
以下同様に、制御部22は、図8Aの左下から右上に向けて斜め上方に処理を進めていく。このように、図8Aでは、不揮発性メモリ3内の複数のメモリセルは、第1ワード線に接続された複数の第1メモリセルと、第1ワード線に隣接する第2ワード線に接続された複数の第2メモリセルと、を有し、メモリコントローラ2は、複数の第1メモリセルに対して第1プログラムを行わせた後、複数の第2メモリセルに対して第1プログラムを行わせ、次に複数の第2メモリセルに対して第1プログラムを行わせた後、複数の第1メモリセルに対して第2プログラムを行わせる。
【0099】
図8Bのプログラム順序で3次元構造のNANDメモリ5にプログラムを行う場合、書き込みを開始すると、制御部22は、以下の(11)~(24)に示す順番でプログラムを実行する。
【0100】
(11)まず、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムST21を実施する。
(12)次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムST22を実施する。
(13)次に、制御部22は、ストリングSt2_ワード線WL0の1stステージのプログラムST23を実施する。
(14)次に、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムST24を実施する。
(15)次に、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムST25を実施する。
(16)次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムST26を実施する。
(17)次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムST27を実施する。
(18)次に、制御部22は、ストリングSt1_ワード線WL0の2ndステージのプログラムST28を実施する。
(19)次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムST29を実施する。
(20)次に、制御部22は、ストリングSt2_ワード線WL0の2ndステージのプログラムST210を実施する。
(21)次に、制御部22は、ストリングSt3_ワード線WL1の1stステージのプログラムST211を実施する。
(22)次に、制御部22は、ストリングSt3_ワード線WL0の2ndステージのプログラムST212を実施する。
(23)次に、制御部22は、ストリングSt0_ワード線WL2の1stステージのプログラムST213を実施する。
(24)次に、制御部22は、ストリングSt0_ワード線WL1の2ndステージのプログラムST214を実施する。
【0101】
以下同様に、制御部22は、図8Bの左下から右上に向けて斜め上方に処理を進めていく。なお、図8Bでは、ブロック内のストリングStが4つである場合について説明したが、ブロック内のストリングStは、3つ以下であってもよいし、5つ以上であってもよい。
【0102】
図8Cのプログラム順序で3次元構造のNANDメモリ5にプログラムを行う場合、書き込みを開始すると、制御部22は、以下の(31)~(50)に示す順番でプログラムを実行する。
【0103】
(31)まず、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムST31を実施する。
(32)次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムST32を実施する。
(33)次に、制御部22は、ストリングSt2_ワード線WL0の1stステージのプログラムST33を実施する。
(34)次に、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムST34を実施する。
(35)まず、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムST35を実施する。
(36)次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムST36を実施する。
(37)次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムST37を実施する。
(38)次に、制御部22は、ストリングSt3_ワード線WL1の1stステージのプログラムST38を実施する。
(39)次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムST39を実施する。
(40)次に、制御部22は、ストリングSt1_ワード線WL0の2ndステージのプログラムST310を実施する。
(41)次に、制御部22は、ストリングSt2_ワード線WL0の2ndステージのプログラムST311を実施する。
(42)次に、制御部22は、ストリングSt3_ワード線WL0の2ndステージのプログラムST312を実施する。
(43)次に、制御部22は、ストリングSt0_ワード線WL2の1stステージのプログラムST313を実施する。
(44)次に、制御部22は、ストリングSt1_ワード線WL2の1stステージのプログラムST314を実施する。
(45)次に、制御部22は、ストリングSt2_ワード線WL2の1stステージのプログラムST315を実施する。
(46)次に、制御部22は、ストリングSt3_ワード線WL2の1stステージのプログラムST316を実施する。
(47)次に、制御部22は、ストリングSt0_ワード線WL1の2ndステージのプログラムST317を実施する。
(48)次に、制御部22は、ストリングSt1_ワード線WL1の2ndステージのプログラムST318を実施する。
(49)次に、制御部22は、ストリングSt2_ワード線WL1の2ndステージのプログラムST319を実施する。
(50)次に、制御部22は、ストリングSt3_ワード線WL1の2ndステージのプログラムST320を実施する。
【0104】
なお、図8Cでは、ブロック内のストリングStが4つである場合について説明したが、ブロック内のストリングStは、3つ以下であってもよいし、5つ以上であってもよい。
【0105】
このように、ストリングStが複数となっても、1つのストリングSt内におけるワード線WLiの各プログラムステージのプログラムの順番は、ストリングStが1つの場合と同じである。ブロック内に複数のストリングStが存在する3次元構造の不揮発性メモリ3の場合、ワード線WLiとストリングStとの組み合わせ位置のプログラムは、一般には、異なるストリングSt内の同一ワード線番号をまずプログラムしてから、次のワード線番号に進められる。このような順番に従った場合、図8AをストリングSt数分だけ結合すると、例えば、図8Bまたは図8Cのような順番となる。
【0106】
ここで、図9図11を用いて、第1の実施形態によるプログラム順序に従った書き込み手順の例について説明する。図9図11では、図8Bまたは図8Cに示すプログラム順序に従った場合の書き込み手順を示している。前述のように、メモリコントローラ2は、非連続的な順序でワード線WLiをまたぎながらプログラムステージを進めていくので、あるワード線WLiのまとまり(ここではブロック)をプログラムシーケンスのまとまりとしてプログラムを実行する。
【0107】
図9は第1の実施形態による1ブロック分全体の書き込み手順の第1例を示すフローチャートである。ここでの1ブロックは、ワード線WL0~WLn(nは自然数)のn+1本のワード線WLiを有するとする。図10は第1の実施形態による1stステージにおける書き込み手順を示すフローチャートであり、図11は、第1の実施形態による2ndステージでの書き込み手順を示すフローチャートである。
【0108】
図9に示すように、書き込みを開始すると、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムを実行する(ステップS10)。次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムを実行する(ステップS20)。この後、制御部22は、各ストリングStに対してステップS10、S20と同様の処理を実行する。そして、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムを実行する(ステップS30)。
【0109】
さらに、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムを実行する(ステップS40)。次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムを実行する(ステップS50)。次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムを実行する(ステップS60)。この後、制御部22は、各ストリングStの各ワード線WLiに対してステップS40、S50、S60のような処理を繰り返す。
【0110】
そして、制御部22は、ストリングSt0_ワード線WLnの1stステージのプログラムを実行する(ステップS70)。次に、制御部22は、ストリングSt0_ワード線WLn-1の2ndステージのプログラムを実行する(ステップS80)。この後、制御部22は、各ストリングStの各ワード線WLiに対してステップS70、S80のような処理を繰り返す。
【0111】
そして、制御部22は、ストリングSt3_ワード線WLn-1の2ndステージのプログラムを実行する(ステップS90)。次に、制御部22は、ストリングSt0_ワード線WLnの2ndステージのプログラムを実行する(ステップS100)。次に、制御部22は、ストリングSt1_ワード線WLnの2ndステージのプログラムを実行する(ステップS110)。この後、制御部22は、各ストリングStに対してステップS100、S110と同様の処理を実施する。そして、制御部22は、ストリングSt3_ワード線WLnの2ndステージのプログラムを実行する(ステップS120)。
【0112】
図10は1stステージの書込み手順の第1例を示すフローチャートである。1stステージのプログラムでは、まず、メモリコントローラ2から不揮発性メモリ3へLowerページデータの入力開始コマンドが入力される(ステップS210)。そして、メモリコントローラ2から不揮発性メモリ3へLowerページデータが入力される(ステップS215)。次に、メモリコントローラ2から不揮発性メモリ3へMiddleページデータの入力開始コマンドが入力される(ステップS220)。そして、メモリコントローラ2から不揮発性メモリ3へMiddleページデータが入力される(ステップS225)。次に、メモリコントローラ2から不揮発性メモリ3へTopページデータの入力開始コマンドが入力される(ステップS230)。そして、メモリコントローラ2から不揮発性メモリ3へTopページデータが入力される(ステップS235)。さらに、メモリコントローラ2から不揮発性メモリ3へ1stステージのプログラム実行コマンドが入力され(ステップS240)、これによりチップビジーとなる(ステップS245)。
【0113】
データ書き込みの際には、しきい値電圧Vthを決定し(ステップS250)、1~複数回のプログラム電圧パルスが印加される(ステップS255)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するためのデータ読み出し(ベリファイ)が行なわれる(ステップS260)。
【0114】
さらに、LowerページおよびMiddleページおよびTopページにおけるデータのフェイルビット数がクライテリア(判定基準)よりも小さいか否かが確認される(ステップS265)。データのフェイルビット数がクライテリア以上である場合、プログラムパルス印加からクライテリア判定までの処理(ステップS255~S265)が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる(ステップS270)。このように、印加と、読み出しと、確認とが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【0115】
なお、上述したように、1stステージ書き込み時のプログラム電圧パルス印加後の読み出しレベルは、2ndステージ書き込み後の読出しレベルと若干異なっていてもよく、好ましくは、2ndステージ書き込み後の読出しレベルよりも低いレベルである。すなわち、Vr1’≦Vr1、Vr4’≦Vr4、Vr5’≦Vr5、Vr8’≦Vr8、Vr9’≦Vr9、Vr12’≦Vr12、Vr14’≦Vr14である。
【0116】
また、1stステージ書き込みにおけるプログラム電圧パルス印加後の読み出しにおいて、Vr9’による読み出しとVr14’による読み出しを省略し、Vr9’はVr8’の読み出しをパスした後、ある規定回数のプログラム電圧パルスを印加後に書き込み完了とし、Vr14’はVr13’の読み出しをパスした後、ある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。
【0117】
これは、上述したように、1stステージのプログラム後のデータにおいてMiddleページのデータが異なるしきい値領域の間隔を狭くすることで、2ndステージ書き込み時に読み出しを行うLowerページとTopページのデータが異なるしきい値領域の間隔が、ある規定回数のプログラム電圧パルスを印加するだけという簡単な制御でも、十分広く確保できるためである。
【0118】
さらに、Vr8’とVr9’とVr12’とVr14’のプログラム電圧パルス印加後の読み出しを省略し、Vr5’の読み出しをパスした後、それぞれのある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。この他、更にVr4’、Vr5’、Vr8’、Vr9’Vr12’、Vr14’のプログラム電圧パルス印加後の読み出しを省略し、Vr1’の読み出しをパスした後、それぞれのある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。
【0119】
図11は2ndステージの書込み手順の第1例を示すフローチャートである。2ndステージのプログラムでは、まず、メモリコントローラ2から不揮発性メモリ3へMiddleページのデータの入力開始コマンドが入力される(ステップS310)。そして、メモリコントローラ2から不揮発性メモリ3へMiddleページのデータが入力される(ステップS320)。
【0120】
次に、メモリコントローラ2から不揮発性メモリ3へUpperページのデータの入力開始コマンドが入力される(ステップS330)。そして、メモリコントローラ2から不揮発性メモリ3へUpperページのデータが入力される(ステップS340)。次に、メモリコントローラ2から不揮発性メモリ3へ2ndステージのプログラム実行コマンドが入力され(ステップS350)、これによりチップビジーとなる(ステップS360)。
【0121】
この後、制御部22は、IDL(Internal Data Load)であるLowerページおよびTopページデータの読み出しを行う(ステップS370)。そして、さきに入力されたMiddleページデータと、IDLによるLowerページおよびTopページのデータに基づいて、Upperページのプログラム先のVth(しきい値電圧)が決定される(ステップS380)。この後、決定されたVthを用いて、Upperページへのデータ書き込みが行われる。より具体的には、決定されたしきい値電圧になるように、複数のプログラムパルスの電圧値を少しずつ上げて書き込む(ステップS390)。目的とするしきい値電圧に達したメモリセルは書込み対象から除外される。
【0122】
その後、書き込んだデータを読み出して(ステップS400)、フェイルビット数がクライテリア(判定基準)よりも小さいか否かが確認される(ステップS410)。データのフェイルビット数がクライテリア以上である場合、プログラムパルス印加からクライテリア判定までの処理(ステップS390~S410)が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる(ステップS420)。
【0123】
ここで、本実施形態には、2つの特徴がある。第1の特徴は、Middleページのデータは1stステージのプログラムでもすでに入力されており、1stプログラム後のしきい値領域はMiddleページのデータも含まれた書き込み状態であるが、2ndステージのプログラムでも再びMiddleページのデータを入力していることである。第2の特徴は、1stステージのプログラムではそのMiddleページのデータが切り替わる隣接しきい値領域同士は間隔が狭くなっており、LowerページのデータとTopページのデータが切り替わる隣接しきい値分布同士は反対に間隔が広くなっていることである。これにより、IDLで読み出す LowerページおよびTopページデータの信頼性を上げることができる。一方、Middleページのデータは、もしIDLでデータを読み出したとしたら信頼性が低下するおそれがあるが、本実施形態では1stステージプログラムで使用したMiddleページのデータを再び入力するため、信頼性が低下するおそれはない。
【0124】
さらに、制御部22は、IDLの読み出しデータの信頼性を上げるために、複数回数読み出しを行い、チップ内のページバッファでこの読み出し結果の多数決をとり、次の書き込みデータとして使用することも可能である。無論、制御部22は、通常の読み出し動作時に於いて、複数回数読み出しを行いチップ内でこの読み出し結果の多数決をとり、外部への読み出しデータとして使用することも可能である。
【0125】
図12は複数回数の読み出し結果の多数決処理を説明するための図である。図12では、所定のページのデータを読み出した結果として、正しいビットを丸印(○)で示し、誤ったビットをばつ印(×)で示している。また、図12では、3回の読み出しが行われた場合の多数決の結果を示している。
【0126】
各ビットにおいて、多数決の結果が誤りと判断されるのは、(a)3回とも誤った場合と、(b)2回とも誤った場合である。各ビットが誤っている確率をpとすると、p=0.2の場合、(a)3回誤る確率は、p×p×p=0.2×0.2×0.2であり、(b)2回誤る確率は、(1-p)×p×p=(1-0.2)×0.2×0.2である。
【0127】
したがって、3回の多数決結果が誤りと判断されるのは、(p×p×p)+3×(1-p)×p×p=0.104である。このように、制御部22は、複数回数の読み出し結果の多数決処理をチップ内のページバッファ24で行うことで、読み出しデータの信頼性を上げることが可能となる。
【0128】
さらに、制御部22は、ワード線WLnの2ndステージ書き込みにおけるIDLの読み出しデータの信頼性を上げるために、WLn+1の1stステージ書き込みで書き込みを行ったデータもしくはしきい値電圧に応じて、IDLにおけるワード線WLnの読み出し電圧を変えて読み出しを行っても良い。
【0129】
そしてさらに、制御部22は、ワード線WLnの2ndステージ書き込みにおけるIDLの読み出しデータの信頼性を上げるために、ワード線WLn+1の1stステージ書き込みで書き込みを行ったデータもしくはしきい値電圧に応じて、IDLにおけるワード線WLn+1の非選択電圧を変えて読み出しを行っても良い。このとき同時にワード線WLnの読み出し電圧を変えて読み出しを行っても良い。
【0130】
Upperページへのデータ書き込みの際には、1~複数回のプログラム電圧パルスが印加される。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、Upperページのデータ読み出し(ベリファイ)が行なわれる。このときの読み出しレベルは所定のレベルである。
【0131】
さらに、Upperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される。Upperページにおけるデータのフェイルビット数がクライテリア以上である場合、プログラム電圧パルス印加からベリファイの処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる。
【0132】
ここで、図11に示した書き込み手順の変形例について説明する。図13は第1の実施形態に係る2ndステージでの書き込み手順の変形例を示すフローチャートである。なお、図13のフローチャートでは、1stステージでプログラムしたデータを読み出したIDLデータに対してエラー訂正を行った上で不揮発性メモリ3に戻すという手順が追加している。具体的には、まず、メモリコントローラ2から不揮発性メモリ3へLowerページの読み出しコマンドが入力される(ステップS510)。これにより、チップビジーとなる(ステップS512)。次に、制御部22は、Lowerページデータの読み出しをVr8’のしきい値電圧で行う。そして、制御部22は、Vr8’のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS514)。この後、チップレディーとなる(ステップS516)。
【0133】
制御部22が読み出したLowerページデータを出力すると(ステップS518)、このLowerページデータは、ECC回路10に送信される(ステップS520)。これにより、ECC回路10がLowerページデータをECC訂正する(ステップS522)。
【0134】
次に、メモリコントローラ2から不揮発性メモリ3へLowerページのデータの入力開始コマンドが入力される(ステップS524)。これにより、ECC回路10が、不揮発性メモリ3へLowerページのデータを入力する(ステップS526)。
【0135】
次に、メモリコントローラ2から不揮発性メモリ3へTopページの読み出しコマンドが入力され(ステップS528)、これによりチップビジーとなる(ステップS530)。この後、制御部22は、Topページデータの読み出しをVr2’とVr10’のしきい値電圧で行う。そして、制御部22は、Vr1’とVr4’とVr8’とVr12’のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS532)。この後、チップレディーとなる(ステップS534)。
【0136】
制御部22が読み出したTopページデータを出力すると(ステップS536)、このTopページデータは、ECC回路10に送信される(ステップS538)。これにより、ECC回路10がTopページデータをECC訂正する(ステップS540)。次に、メモリコントローラ2から不揮発性メモリ3へTopページのデータの入力開始コマンドが入力される(ステップS542)。これにより、ECC回路10が、不揮発性メモリ3へTopページのデータを入力する(ステップS544)。
【0137】
この後、メモリコントローラ2から不揮発性メモリ3へMiddleページのデータの入力開始コマンドが入力される。(ステップS546)。これ以降のステップは図11の手順と同様である。プログラム先のしきい値電圧Vthは、ECC回路10からのLowerページデータ及びTopページデータと、再び入力されたMiddleページのデータ、及び新しく入力されたUpperページのデータに基づいてプログラム先のしきい値電圧Vthが決定される。
【0138】
上述した2ndステージのプログラムでは、不揮発性メモリ3へのデータ入力は、MiddleページとUpperページとの2ページだけである。しかし、この2ndステージでは、メモリセルのプログラムの目的地であるしきい値電圧Vthには、Lowerページ、Topページ(2ndステージを始める前のしきい値電圧Vth)も含めた4ページ分のデータが必要である。そのため、このステージのプログラムでは、前処理として、制御部22が、まずLowerページデータとTopページデータを読み出し、そのデータを、さらに入力されたMiddleページとUpperページとで合成してプログラム先のしきい値電圧Vthを決定するという動作を行う。なお、2ndステージのベリファイ時の読み出しレベルは、2ndステージ書き込み後の読出しレベルと若干異なっていてもよい。
【0139】
ここで、4-3-4-4データコーディングを採用したFoggy-Fineプログラムの処理手順と、本実施形態のプログラム処理手順との比較について説明する。図14Aは4-3-4-4データコーディングを採用したFoggy-Fineプログラムにおける書き込みバッファのデータ量を説明する図である。図14Bは本実施形態における書き込みバッファのデータ量を説明する図である。図14Bは1-4-5-5データコーディングを採用した例を示している。
【0140】
図14A及び図14Bでは、上段側に、ブロック書き込みのデータ入力とプログラム実行のタイムチャートを示し、下段側に、書き込みバッファ内にデータを保持するのに必要な期間のタイムチャートを示している。なお、図14A及び図14Bでは、説明を簡単化するために、1ブロック内のストリングStの個数が1の場合を示している。ストリングStが複数の場合は、書き込みバッファのデータ量がストリングStの個数倍だけ必要となる。
【0141】
4-3-4-4データコーディングのFoggy-Fineプログラムの場合、1つ目のステージであるFoggyステージでは、4ページ分のデータ入力と、この4ページ分のプログラム(Foggyステージのプログラム)とが行われる。また、4-3-4-4データコーディングのFoggy-Fineプログラムの場合、2つ目のステージであるFineステージでも、4ページ分のデータ入力と、この4ページ分のプログラム(Fineステージのプログラム)とが行われる。
【0142】
そして、各ワード線WL0、WL1、WL2、・・・では、Fineステージにおいてプログラムが開始されるまで、Foggyステージにおいて書き込まれた4ページ分のデータを書き込みバッファ内に格納しておく必要がある。
【0143】
Foggy-Fineプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower/Middle/Upper/Topの4ページ分のデータは連続して書き込まれない。例えば、ワード線WL0へのFoggyステージが実行された後、ワード線WL0へのFineステージが実行される前に、ワード線WL0に隣接するワード線WL1へのFoggyステージが実行される。また、ワード線WL0へのFoggyステージが実行された後、ワード線WL1へのFineステージが実行される前に、ワード線WL1に隣接するワード線WL2へのFoggyステージが実行される。この方法の場合、最終の2つ目であるFineステージのデータ入力が完了するまで、Lower/Middle/Upper/Topの4ページ分のデータを、書き込みバッファ内に保持しておく必要がある。また、隣接メモリセル間干渉を低減するためには、複数のワード線WLiにおけるデータを、書き込みバッファ内に保持しておく必要がある。例えば、ワード線WL2に対してFoggyステージが実行される際には、ワード線WL1に対する3ページ分のデータと、ワード線WL2に対する3ページ分のデータとが、書き込みバッファ内に保持されている必要がある。このように、4-3-4-4データコーディングのFoggy-Fineプログラムの場合、最大8ページ分のデータが書き込みバッファ内に保持されている必要がある。
【0144】
図14Bに示すように、本実施形態のプログラムでは、例えば1-4-5-5データコーディングで2ステージのプログラムが用いられる。この本実施形態のプログラムでは、1stステージでは、3ページ分(Lowerページ及びMiddleページ及びTopページ)のデータ入力と、この3ページ分のプログラム(1stプログラム)とが行われる。また、本実施形態のプログラムの場合、2ndステージでは、2ページ分(Middleページ及びUpperページ)のデータ入力と、Upperページの1ページ分のプログラム(2ndプログラム)とが行われる。
【0145】
そして、各ワード線WL0、WL1、WL2、・・・では、両方のステージで入力されるMiddleページを除き、各ステージのデータ入力の際にデータを書き込みバッファ内に格納しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。例えば、1stステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、1stステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたLowerページとTopページのデータは削除されてもよい。同様に、2ndステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、2ndステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータはすべて削除されてもよい。このため、本実施形態のプログラムの場合、書き込みバッファ内に保持しておく必要があるデータは、最大でも4ページ分のデータである。
【0146】
本実施形態のプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower/Middle/Upper/Topの4ページ分のデータは連続して書き込まれない。例えば、ワード線WL0への1stステージが実行された後、ワード線WL0への2ndステージが実行される前に、ワード線WL0に隣接するワード線WL1への1stステージが実行される。同様に、ワード線WL1への1stステージが実行された後、ワード線WL1への2ndステージが実行される前に、ワード線WL1に隣接するワード線WL2への1stステージが実行される。
【0147】
このように、本実施形態では、Middleページ以外のページデータは、1回のステージのプログラムでのみ必要であるので、そのデータ入力が完了すれば書き込みバッファ内のデータは破棄可能となる。そのため、本実施形態では、書き込みバッファ内に同時に保持しておくことが必要なページ数が少なくて済む。
【0148】
不揮発性メモリ3へプログラムされるページデータは、RAM6内の書き込みバッファに一旦保持されてから、プログラム時に不揮発性メモリ3へデータ入力される。本実施形態においては、このRAM6の必要容量を小さくすることが可能となるので、コスト削減が図れる。
【0149】
また、Foggy-Fineプログラムが用いられるときは、全てのページデータのデータ転送を2回行なわなくてはならないので、転送時間が掛かり、また転送時の消費電力も余分に必要となる。本実施形態では、Middleページ以外のページデータは、各ページそれぞれ1回のデータ転送で完了するため、転送時間及び電力消費をおよそ1/2程度に抑えることが可能になる。
【0150】
ここで、ページ読み出し処理について説明する。ページ読み出しの方法は、読み出し対象ページを含むワード線WLiに対するプログラムが、2ndステージの書き込み前か、後かで異なる。
【0151】
2ndステージ書き込み前の場合、記録されているデータはLowerページとMiddleページとTopページだけが有効である。このため、制御部22は、読み出しページがLowerページとMiddleページとTopページのときはメモリセルからデータを読み出すが、その他のページ(具体的にはUpperページ)の場合には、メモリセル読み出し動作は行わず、読み出しデータとして強制的に全て“1”を出力する制御を行う。
【0152】
一方、2ndステージまで完了したワード線WLiの場合、制御部22は、読み出しページがTop/Upper/Middle/Lowerページの何れであってもメモリセルを読み出す。この場合、読み出すページが何れのページかによって必要な読み出し電圧が異なるので、制御部22は、選択されたページに従って必要な読み出しだけを実行する。
【0153】
以下、ページ読み出しの具体的な処理手順について説明する。図15は、第1の実施形態に係るメモリシステム1において1stステージまでプログラムが完了している(2ndステージのプログラムが完了していない)ワード線でのページ読み出しの処理手順を示すフローチャートである。図6に示した1-4-5-5データコーディングによれば、Lowerページデータが変化するしきい値状態間の境界は1つなので、制御部22は、その境界で分離された2つの範囲の何れにしきい値が位置するかでデータを決定する。例えば、しきい値電圧がVr8’よりも小さい場合には、制御部22は、メモリセルのデータとして“1”を出力する制御を行う。一方、しきい値電圧がVr8’よりも大きい場合には、制御部22は、メモリセルのデータとして“0”を出力する制御を行う。
【0154】
また、Middleページのデータが変化するしきい値状態間の境界は3つであるので、制御部22は、それらの境界で分離された4つの範囲の何れの中にしきい値が位置するかでデータを決定する。また、Topページのデータが変化するしきい値状態間の境界は4つであるので、制御部22は、それらの境界で分離された5つの範囲の何れの中にしきい値が位置するかでデータを決定する。
【0155】
図15に示すように、2ndステージ書き込み前のワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS610)。読み出しページがLowerページの場合、制御部22は、1つの読み出し電圧で読み出しを行う(ステップS612)。この電圧は、Vr8であるが、前述したように、2ndステージ書き込み前のワード線である場合、図8(T2)に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばVr8’でもよい。そして、制御部22は、Vr8のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS614)。
【0156】
また、読み出しページがMiddleページの場合、制御部22は、3つの読み出し電圧で読み出しを行う(ステップS616、S618、S620)。この電圧は、前述したようにVr4とVr9とVr14であるが、2ndステージ書き込み前のワード線である場合、図8(T2)に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばそれらの代わりにそれぞれVr4’とVr9’とVr14’でもよい。そして、制御部22は、Vr4のしきい値「電圧での読み出し結果とVr9のしきい値電圧での読み出し結果とVr14のしきい値電圧での読み出し結果とに基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS622)。ここで、前述したように、Middleページのデータが異なるしきい値分布の間隔が狭く、Middleページの読み出しマージンが狭くなっているため、読み出しデータの値は信頼性が著しく悪い可能性があり、2ndステージ書き込み前のMiddleページデータは無効であると定義しても良い。その場合、読み出しページがMiddleページの場合、制御部22は、メモリセルの出力データとして全て強制的に“1”を出力する制御を行ってもよい。
【0157】
また、読み出しページがUpperページの場合、1stプログラムではUpperページのプログラムを行っていないことから、制御部22は、出力データとして全て強制的に”1”を出力する(ステップS624)。
【0158】
また、読み出しページがTopページの場合、制御部22は、4つの読み出し電圧で読み出しを行う(ステップS626、S628、S630、S632)。この電圧は、前述したようにVr1とVr4とVr8とVr12であるが、2ndステージ書き込み前のワード線である場合、図8(T2)に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばそれらの代わりにそれぞれVr1’とVr4’とVr8’とVr12’でもよい。そして、制御部22は、Vr1のしきい値電圧での読み出し結果とVr4のしきい値電圧での読み出し結果とVr8のしきい値電圧での読み出し結果とVr12のしきい値電圧での読み出し結果とに基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS634)。
【0159】
図16Aは第1の実施形態に係るメモリシステム1において2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。2ndステージまでプログラムが完了したワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS650)。読み出しページがLowerページの場合、制御部22は、Vr8の1つのしきい値電圧で読み出しを行う(ステップS652)。そして、制御部22は、Vr8の1つのしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS654)。
【0160】
また、読み出しページがMiddleページの場合、制御部22は、Vr4、Vr9、Vr11及びVr14のしきい値電圧で読み出しを行う(ステップS656、S658、S660、S662)。そして、制御部22は、Vr4、Vr9、Vr11及びVr14のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS664)。
【0161】
また、読み出しページがUpperページの場合、制御部22は、Vr2、Vr6、Vr10、Vr13及びVr15のしきい値電圧で読み出しを行う(ステップS666、S668、S670、S672、S674)。そして、制御部22は、Vr2、Vr6、Vr10、Vr13及びVr15のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS676)。
【0162】
また、読み出しページがTopページの場合、制御部22は、Vr1、Vr3、Vr5、Vr7及びVr12のしきい値電圧で読み出しを行う(ステップS678、S680、S682、S684、S686)。そして、制御部22は、Vr1、Vr3、Vr5、Vr7及びVr12のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS688)。
【0163】
なお、ワード線WLiに対するプログラムが、2ndステージ書き込み完了前か後かは、メモリコントローラ2が管理及び識別することが可能である。メモリシステム1においてはメモリコントローラ2がプログラム制御を行っているので、メモリコントローラ2がその進捗状況を記録しておけば、メモリコントローラ2は、不揮発性メモリ3のどのアドレスがどのようなプログラム状態であるか容易に参照できる。この場合、メモリコントローラ2は、不揮発性メモリ3から読み出しを行う際、対象ページアドレスを含むワード線WLiがどのようなプログラム状態であるかを識別し、識別した状態に応じた読み出しコマンドを発行する。また、別の方法として、ワード線WLi毎にフラグセルを設け、2ndステージ書き込み時にフラグセルを書き込み、フラグセルのデータに応じて、2ndステージ書き込み完了前か後か、不揮発性メモリ3で管理・識別することも可能である。
【0164】
以下に、ページ読み出し処理の一変形例を説明する。一変形例によるページ読出し処理は、読み出し対象ページを含むワード線WLiに対するプログラムが2ndステージの書き込みを行った後のみ実行可能である。一変形例によるページ読み出し処理は、読出し対象のワード線のすべてのデータを読み出す場合に、読み出し速度が速くなる点で有効である。
【0165】
一変形例によるページ読み出し処理に適したデータコーディングは、例えば図16Bのようなものである。以下、このデータコーディングの場合における一変形例による読出し処理について説明する。一変形例によるページ読み出し処理では、Top/Upper/Middle/Lowerページのすべてのページを読み出す。
【0166】
図16Cは一変形例による読出し処理手順を示すフローチャートである。また、図16Dは、選択ワード線、ReadyBusy信号線、出力データ線の電圧波形図である。制御部22は、15個のすべての読出し電圧Vr15~Vr1で順番に読出しを行う。まず、図16Dに示すように最も高い電圧であるVr15で読出しを行い(ステップS690)、続けて1段階ずつ下がりながら低い読出し電圧で順番に読出しを続けていく(ステップS691~S707)。各ページの読出しデータを決定するために必要な読み出しが完了したところで、そのページの読出しデータが出力可能になる。
【0167】
一変形例によるページ読み出し処理では、Vr15から順に読み出してVr8の読出しまで終わったところで(ステップS699)、Lowerページのデータが決定され、このデータを出力することが可能になる(ステップS700)。このステップS700では、読み出し電圧Vr8での読み出しデータに基づいてLowerページのデータが決定される。
【0168】
続いてVr4まで読出しが終わったところで(ステップS702)、Middleページのデータが決定される(ステップS703)。このステップS703では、読み出し電圧Vr4、Vr9、Vr11及びVr14での読み出しデータに基づいてMiddleページのデータが決定される。
【0169】
続いてVr2まで読出しが終わったところで(ステップS705)、Upperページのデータが決定される(ステップS706)。このステップS706では、読み出し電圧Vr2、Vr6、Vr10、Vr13及びVr15での読み出しデータに基づいてUpperページのデータが決定される。
【0170】
続いてVr1まで読出しが終わったところで(ステップS707)、最終のTopページのデータが決定される(ステップS708)。このステップS708では、読み出し電圧Vr1、Vr3、Vr5、Vr7及びVr12での読み出しデータに基づいてTopページのデータが決定される。
【0171】
一変形例によるページ読み出し処理では、任意の1ページのデータを出力可能になるまでのレイテンシは長くなるが、全4ページを読み出す合計時間は、前に説明した1ページずつ読み出した場合の合計時間よりも短くできる。図16Dに示すように、読出し準備としてワード線をゼロから高電圧であるVr15まで充電する時間が1回で済み、また読出しレベルを次の電圧に変化させる際の電圧変化の振幅が小さく短時間で電圧が安定するため、読み出し電圧が安定するまでの待機時間を短縮できる。このため、すべての読出し電圧Vr15~Vr1で読み出す場合は、選択ワード線の遷移時間の合計が短くなり、結果として合計の読出し時間を高速化できる。
【0172】
なお、以上では、図16Bのデータコーディングを例に取って説明したが、基本的にはどのようなデータコーディングでも適用可能である。ただし、読出し電圧を最大電圧から最小電圧まで順に変化させて読出しを行うため、データを確定するのに必要な電圧の読出しが完了したページの順番にデータ出力が可能になる。このため、データコーディングの形態によっては、Lower、Middle、Upper、Topのページ順番に読み出せないことに留意が必要である。
【0173】
このように、第1の実施形態では、不揮発性メモリ3(3次元構造または2次元構造を有した4bit/CellのNANDメモリ)をプログラムする際に、1-4-5-5データコーディングを採用し、プログラムのステージを2ステージ制とした。このように2ステージ制でプログラムされるので、各ステージでのデータプログラムの際に入力するデータ量が減り、メモリコントローラ2に必要とされる書き込みバッファ量を抑制することが可能となる。また、各ページでのしきい値境界の数が均一であるため、不揮発性メモリ3のページ間のビットエラー率の偏りを低減できるとともに、ECCにかかるコストを下げることができる。また、データ転送は1ページを除き各ページ1回のみとなるため、転送時間及び消費電力を抑えることができる。
【0174】
また、ワード線WLiをまたぎながら、各プログラムステージを実行するので、隣接ワード線WLiとの隣接セル間干渉の量を低減することができる。また、1-4-5-5データコーディングを用いるので、2ndプログラムにおけるしきい値分布の変化量が小さくなるために、隣接セル間干渉量を抑制することが可能となる。また、1ページ(具体的にはMiddleページ)は両方のステージでデータを入力することにより、2ndステージの前のIDLマージンを拡大することができ、書き込みシーケンスの信頼性を向上することが可能となる。また、1-4-5-5データコーディングを用いるので、1stステージのプログラム時、Lowerページにおけるしきい値境界を1つ、Middleページにおけるしきい値境界を2つとすることにより、1stステージのプログラム、すなわちLowerページ及びMiddleページのプログラムを高速化することができる。なお、1stステージのプログラムの高速化は、書き込み及び書き込みベリファイの繰り返しときに、書き込み電圧を少しずつステップアップさせて書き込むときのステップ電圧を、2ndステージのプログラム時より大きい値にするなどで高速化ができる。
【0175】
(第2の実施形態)
第1の実施形態では、1-4-5-5データコーディングを例にとり説明したが、さまざまなデータコーディングの変形が可能である。第2の実施形態によるメモリシステム1のハードウェア構成は、第1の実施形態によるメモリシステム1と共通する。図17図25は第2の実施形態によるメモリシステム1のデータコーディングの例を示している。第2の実施形態によるメモリシステム1は、1-4-5-5データコーディング以外のデータコーディングを使用する。
【0176】
図17は1-5-4-5データコーディングの一例を示す図である。図17の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大3個である。ここで、1stステージのプログラム完了時のしきい値領域と、2ndステージのプログラム完了時のしきい値領域とは、電圧分布範囲が完全には一致しないが、本明細書では、便宜上、1stステージのプログラム完了時の各しきい値領域に電圧分布範囲が最も近い2ndステージのプログラム完了時のしきい値領域を対応づけて、2ndプログラムを行ったときに変化したしきい値領域の数を遷移数と呼ぶ。図17の場合、1stステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、2ndステージでは、TopページとMiddleページのデータを入力してプログラムを行う。Middleページのデータは、1stステージと2ndステージで重複して入力される。1stステージのプログラム完了時点でMiddleページのデータの値で分離可能な2つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【0177】
図18は1-5-4-5データコーディングの一例を示す図である。図18の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大3個である。図18の場合、1stステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。Upperページのデータは、1stステージと2ndステージで重複して入力される。1stステージのプログラム完了時点でUpperページのデータの値で分離可能な2つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【0178】
図19は3-5-2-5データコーディングの一例を示す図である。図18の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大3個である。図18の場合、1stステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、2ndステージでは、TopページとMiddleページのデータを入力してプログラムを行う。Middleページのデータは、1stステージと2ndステージで重複して入力される。1stステージのプログラム完了時点でMiddleページのデータの値で分離可能な2つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【0179】
図20は3-3-4-5データコーディングの一例を示す図である。図20の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大3個である。図20の場合、1stステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。
【0180】
図21は2-3-5-5データコーディングの一例を示す図である。図21の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大5個である。図21の場合、1stステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、1stステージと2ndステージで重複して入力される。図21の場合、1stステージのプログラムが完了した時点では、Topページのデータが0でも1でも、3個のしきい値領域は同じになり、しきい値領域の総数は5個になる。よって、各しきい値領域の間隔を広げることができ、1stステージのプログラムが完了した時点でのデータ読出を正しく行うことができる。
【0181】
図22は3-2-5-5データコーディングの一例を示す図である。図22の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大5個である。図22の場合、1stステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、1stステージと2ndステージで重複して入力される。図22の場合、1stステージのプログラムが完了した時点では、Topページのデータが0でも1でも、2個のしきい値領域は同じになり、しきい値領域の総数は6個になる。
【0182】
図23は3-4-4-4データコーディングの一例を示す図である。図23の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大7個である。図23の場合、1stステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。Upperページのデータは、1stステージと2ndステージで重複して入力される。1stステージのプログラム完了時点でUpperページのデータの値で分離可能な2つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【0183】
図24は3-4-4-4データコーディングの一例を示す図である。図24の例では、2ndプログラム終了時におけるしきい値領域の遷移数が最大8個である。図24の場合、1stステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、2ndステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、1stステージと2ndステージで重複して入力される。図24の場合、1stステージのプログラムが完了した時点では、Topページのデータが0でも1でも、2個のしきい値領域は同じになり、しきい値領域の総数は6個になる。
【0184】
図17図24は、データコーディングの例に過ぎず、他のデータコーディングが採用されてもよい。
【0185】
例えば、2ndプログラム終了時にしきい値領域の遷移数が最大3個になる例は、図17図20以外にも、以下の図25図27が存在する。図25は1-4-5-5データコーディングの一例を示す図である。図25の例では、1stプログラムが完了した時点で6個の異なるしきい値領域が生成される。このうち、Middleページが1でLowerページが1のしきい値領域と、Middleページが0でLowerページが1のしきい値領域は、Topページが0でも1でも、同じしきい値領域になる。このため、本来は8個のしきい値領域が生成されるべきであるが、6個のしきい値領域に集約される。
【0186】
図26は2-5-3-5データコーディングの一例を示す図である。図26の例では、1stプログラムが完了した時点で7個の異なるしきい値領域が生成される。このうち、Middleページが1でLowerページが1のしきい値領域は、Topページが0でも1でも、同じしきい値領域になる。このため、本来は8個のしきい値領域が生成されるべきであるが、7個のしきい値領域に集約される。
【0187】
図27は3-4-5-3データコーディングの一例を示す図である。図27の例では、1stプログラムが完了した時点で7個の異なるしきい値領域が生成される。このうち、MiddleページでLowerページが1のしきい値領域は、Topページが0でも1でも、同じしきい値領域になる。このため、本来は8個のしきい値領域が生成されるべきであるが、7個のしきい値領域に集約される。
【0188】
この他、他のデータコーディングの例も考えられる。以下では、各データコーディングのコード割り付けを示す図を列記する。図28は3-2-5-5データコーディングの一例、図29は3-2-5-5データコーディングの一例、図30は1-5-5-4データコーディングの一例を示している。また、図31は1-5-4-5データコーディングの一例、図32は1-4-5-5データコーディングの一例、図33は1-5-3-6データコーディングの一例を示している。また、図34は1-3-6-5データコーディングの一例、図35は1-2-6-6データコーディングの一例、図36は1-2-6-6データコーディングの一例を示している。
【0189】
また、図37は1-2-6-6データコーディングの一例、図38は1-4-6-4データコーディングの一例、図39は1-4-4-6データコーディングの一例を示している。また、図40は1-4-6-4データコーディングの一例、図41は1-4-4-6データコーディングの一例、図42は2-5-2-6データコーディングの一例を示している。また、図43は2-5-2-6データコーディングの一例、図44は2-5-2-6データコーディングの一例、図45は3-3-3-6データコーディングの一例を示している。また、図46は3-3-6-3データコーディングの一例、図47は2-3-4-6データコーディングの一例、図48は3-4-2-6データコーディングの一例を示している。
【0190】
また、図49は2-3-4-6データコーディングの一例、図50は3-2-6-4データコーディングの一例、図51は3-2-4-6データコーディングの一例を示している。また、図52は3-2-6-4データコーディングの一例、図53は3-4-2-6データコーディングの一例、図54は3-2-4-6データコーディングの一例を示している。また、図55は5-3-2-5データコーディングの一例、図56は3-5-2-5データコーディングの一例、図57は3-2-5-5データコーディングの一例を示している。また、図58は2-3-5-5データコーディングの一例、図59は2-3-5-5データコーディングの一例、図60は2-3-5-5データコーディングの一例を示している。
【0191】
また、図61は5-4-2-4データコーディングの一例、図62は4-5-2-4データコーディングの一例、図63は5-4-2-4データコーディングの一例を示している。また、図64は2-4-5-4データコーディングの一例、図65は2-4-5-4データコーディングの一例、図66は2-5-4-4データコーディングの一例を示している。また、図67は2-5-4-4データコーディングの一例、図68は2-5-4-4データコーディングの一例、図69は1-5-4-5データコーディングの一例を示している。また、図70は1-4-5-5データコーディングの一例、図71は1-5-5-4データコーディングの一例、図72は1-4-5-5データコーディングの一例を示している。
【0192】
また、図73は1-5-5-4データコーディングの一例、図74は1-5-4-5データコーディングの一例、図75は1-5-5-4データコーディングの一例を示している。また、図76は1-5-4-5データコーディングの一例、図77は1-4-5-5データコーディングの一例、図78は1-4-5-5データコーディングの一例を示している。また、図79は1-4-5-5データコーディングの一例、図80は1-4-5-5データコーディングの一例、図81は3-5-4-3データコーディングの一例を示している。また、図82は3-4-5-3データコーディングの一例、図83は3-5-3-4データコーディングの一例、図84は3-4-3-5データコーディングの一例を示している。
【0193】
また、図85は3-4-5-3データコーディングの一例、図86は3-4-3-5データコーディングの一例、図87は3-3-5-4データコーディングの一例を示している。また、図88は3-3-5-4データコーディングの一例、図89は4-5-3-3データコーディングの一例、図90は3-5-4-3データコーディングの一例を示している。また、図91は3-4-5-3データコーディングの一例、図92は3-3-4-5データコーディングの一例、図93は3-3-4-5データコーディングの一例を示している。
【0194】
また、図94は3-3-4-5データコーディングの一例、図95は3-4-5-3データコーディングの一例、図96は3-3-5-4データコーディングの一例を示している。また、図97は3-3-4-5データコーディングの一例、図98は4-3-4-4データコーディングの一例、図99は3-4-4-4データコーディングの一例を示している。また、図100は3-4-4-4データコーディングの一例、図101は4-3-4-4データコーディングの一例、図102は3-4-4-4データコーディングの一例を示している。また、図103は3-4-4-4データコーディングの一例、図104は3-4-4-4データコーディングの一例、図105は3-4-4-4データコーディングの一例を示している。また、図106は4-4-3-4データコーディングの一例、図107は4-4-3-4データコーディングの一例を示している。
【0195】
このように、1stステージと2ndステージで、一部のページのデータを重複して入力し、その他のページのデータは、1stステージと2ndステージの一方だけに入力してプログラムを行うことで、セル間相互干渉を低減し、かつ書き込みバッファの容量も削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制できる。特に、1-4-5-5、1-5-4-5、3-3-4-5、又は3-5-2-5データコーディングの場合、各ページデータの境界数が均一であり、かつ2ndステージのプログラム時のしきい値領域の遷移数が3以下であるため、ビットエラー率の偏りを抑制できるとともに、セル間相互干渉を低減できる。
【0196】
(第3の実施形態)
第3の実施形態によるメモリシステム1は、書き込みバッファの容量を第1及び第2の実施形態よりも削減するものである。
【0197】
第3の実施形態によるメモリシステム1のハードウェア構成は、第1及び第2の実施形態によるメモリシステム1と共通する。第3の実施形態では、1stステージのプログラムと重複して2ndステージのプログラムでも入力するページのデータを、1stステージのプログラム開始後に、不揮発メモリ3の内部のページバッファ24に保持し続ける。これにより、2ndステージのプログラムではそのページのデータ入力の手順を省略するとともに、全てのページのデータ入力は1回だけにすることが可能となる。これにより、書き込みバッファの容量を削減できる。
【0198】
さらに、本実施形態では、ワード線WLn-1の2ndステージのプログラムと、ワード線WLnの1stステージのプログラムとをまとめて行う。このように、ページバッファ24は、第1乃至第4ビット(Lowerページ、Middleページ、Upperページ、Topページ)のうち、1stステージのプログラムと2ndステージのプログラムで重複して入力されるビットのデータを、1stステージのプログラムを開始する前に記憶し、2ndステージのプログラムを開始した以降は破棄可能又は無効化可能とする。以下、本実施形態でも第1の実施形態の図6で説明したものと同じ1-4-5-5データコーディングを用いる例について説明する。
【0199】
図9に示したプログラムのフローチャートでは、1stステージのプログラムと2ndステージのプログラムとは、実行タイミングがずれており、それぞれのプログラムの際にそれぞれのプログラムコマンドとプログラムデータ入力が行なわれている。これに対して、本実施形態では、1stステージと2ndステージのプログラムコマンド及びプログラムデータ入力をなるべくまとめて行う。
【0200】
例えば、図8Bに示したように、ブロックの先頭と終わりの端部以外は、ワード線WLnの1stステージとワード線WLn-1の2ndステージのプログラムとが必ず連続する。そこで、本実施形態では、この部分をひとまとめのコマンド入力とする。すなわち、1回のコマンド入力で、ワード線WLnのLowerページ、Middleページ及びTopページと、ワード線WLn-1のUpperページの各プログラムデータがまとめて入力される。これは、Foggy-Fineが採用された場合でも、1回のプログラムコマンドでLower/Middle/Upper/Topページのデータをまとめて(ただし、この場合は同じワード線WLi内のページ)4ページ分入力していたのと同じデータ量の入力である。
【0201】
このように、プログラムコマンド及びプログラムデータの入力がまとめられることにより、メモリコントローラ2が行う制御におけるコマンド入力やポーリング(チップビジーがレディーに戻ったか否かの定期的なチェック)の頻度が減少し、メモリシステム1の高速化と制御の簡素化が可能となる。
【0202】
ここで、図108及び図109を用いて、第3の実施形態に係るプログラム順序に従った書き込み手順の一例について説明する。図108及び図109では、図8Bに示すプログラム順序に従った場合の書き込み手順を示している。
【0203】
図108は第3の実施形態に係る1ブロック分全体の書き込み手順を示すフローチャートである。ここでの1ブロックは、ワード線WL0~WLn(nは自然数)のn+1本のワード線WLiを有するとする。図108に示すように、書き込みを開始すると(ステップS710)、ストリングSt0~St3のワード線WL0の1stステージのプログラムの処理を行う(ステップS712)。これにより、制御部22は、ストリングSt0~St3のワード線WL0の1stステージのプログラムを実施する(ステップS714)。
【0204】
また、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムと、ストリングSt0_ワード線WL0の2ndステージのプログラムを実施する(ステップS716)。
【0205】
次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムと、ストリングSt1_ワード線WL0の2ndステージのプログラムを実施する(ステップS718)。次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムと、ストリングSt2_ワード線WL0の2ndステージのプログラムを実施する(ステップS720)。この後、制御部22は、各ストリングの各ワード線WLiに対して同様な処理を繰り返す。
【0206】
次に、ストリングSt0_ワード線WLnの1stステージのプログラムと、ストリングSt0_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS722)。次に、制御部22は、ストリングSt1_ワード線WLnの1stステージのプログラムと、ストリングSt1_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS724)。この後、制御部22は、各ストリングの各ワード線WLiに対して同様な処理を繰り返す。
【0207】
次に、制御部22は、ストリングSt3_ワード線WLnの1stステージのプログラムと、ストリングSt3_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS726)。次に、制御部22は、ストリングSt0~St3のワード線WLnの2ndステージのプログラムを実行する(ステップS728、S730、S732)。
【0208】
このように、ブロックの先頭では第1の実施形態と同様に1stステージのみのプログラムが実施され、ブロックの最後では第1の実施形態と同様に2ndステージのみのプログラムが実施される。この場合において、1stステージのみのプログラムは、図8Bに示した手順に従って実行され、2ndステージのみのプログラムは、図8Cに示した手順に従って実行される。また、図108のフローチャートでは、ブロックの先頭と最後以外では、ワード線WLnの1stステージのプログラムとワード線WLn-1の2ndステージのプログラムとをまとめて行う。これにより、メモリコントローラ2が行うコマンド入力やポーリングの頻度が減少し、メモリシステム1の処理を高速化できる。
【0209】
図109は第3の実施形態に係る1stステージ及び2ndステージにおける書き込み手順を示すフローチャートである。図109に示すように、1stステージ及び2ndステージのプログラムでは、1stステージのプログラムが実行された後に、続けて2ndステージのプログラムが実行される。具体的には、まず、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLn-1のUpperページのデータの入力開始コマンドが入力される(ステップS750)。そして、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLn-1のUpperページのデータが入力される(ステップS752)。
【0210】
次に、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのLowerページのデータの入力開始コマンドが入力される(ステップS754)。そして、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのLowerページのデータが入力される(ステップS756)。
【0211】
次に、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのMiddleページのデータの入力開始コマンドが入力される(ステップS758)。そして、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのMiddleページのデータが入力される(ステップS760)。Middleページのデータは、不揮発性メモリ3に入力されるだけでなく、ページバッファ24にも記憶される。ページバッファ24に記憶した後は、書き込みバッファ内のMiddleデータを破棄又は無効化することができる。
【0212】
次に、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのTopページのデータの入力開始コマンドが入力される(ステップS762)。そして、メモリコントローラ2から不揮発性メモリ3へ、ワード線WLnのTopページのデータが入力される(ステップS764)。
【0213】
次に、メモリコントローラ2から不揮発性メモリ3へ、1stステージ及び2ndステージのプログラム実行コマンドが入力され(ステップS766)、これによりチップビジーとなる(ステップS768)。
【0214】
この後、ワード線WLnのLowerページ、Middleページ及びTopページに対し、1~複数回のプログラム電圧パルスが印加される(ステップS770)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線WLnのLowerページとTopページのデータ読み出しが行なわれる(ステップS772)。
【0215】
さらに、LowerページとTopページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS774)。LowerページとTopページにおけるデータのフェイルビット数がクライテリア以上である場合、ステップS770~S774の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、ワード線WLn-1のLowerページとTopページデータが読み出される(ステップS776)。
【0216】
そして、ワード線WLn-1のLowerとTopページデータと、ページバッファ24から読み出されたMiddleページのデータとに基づいて、Upperページのプログラム先のしきい値電圧Vthが決定される(ステップS778)。この後、決定されたしきい値電圧Vthを用いて、ワード線WLn-1のUpperページへのデータ書き込みが行われる(ステップS780)。
【0217】
Upperページへのデータ書き込みの際には、ワード線WLn-1のUpperページに対し、1~複数回のプログラム電圧パルスが印加される。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線WLn-1のUpperページのデータ読み出しが行なわれる(ステップS782)。
【0218】
さらに、Upperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かを確認するベリファイが行われる(ステップS784)。Upperページにおけるデータのフェイルビット数がクライテリア以上である場合、プログラム電圧パルス印加とデータ読み出し、ベリファイの処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる(ステップS786)。
【0219】
なお、同一ワード線に対する1stステージのプログラムにおいて、複数のページのデータ入力開始コマンドとデータ入力処理におけるページの順番は任意であり、どのページが先に入力されてもよい。また、同一ワード線に対する2ndステージのプログラムにおいて、複数のページのデータ入力開始コマンドとデータ入力の処理におけるページの順番も任意である。ただし、それぞれのワード線番号と、2つのステージのプログラムの処理の順番は、必ず図109に示す順番にならなければいけない。
【0220】
このように、図109では、ワード線WLnの1stステージのプログラムがワード線WLn-1の2ndステージのプログラムよりも前に実行される場合について説明した。これは、ワード線WLnの1stステージのプログラムが先に行なわれることで、16値のしきい値電圧Vthが書き込まれるワード線WLn-1のセルが隣接セルの影響を受けないようにするためである。
【0221】
上述したように、本実施形態では、ワード線WLn-1のUpperページのデータと、ワード線WLnのLowerページ、Middleページ及びTopページのデータとの4ページ分のデータが連続して入力される。
【0222】
また、別の変形例として、プログラムコマンドの入力後、IDLとして、ワード線WLn-1のLowerページ、Middleページ及びTopページのデータの読み出しを先に行なった後に、ワード線WLnのLowerページ、Middleページ及びTopページのプログラムを行い、次に、ワード線WLn-1のUpperページのプログラム先のしきい値電圧Vthが決定され、決定されたしきい値電圧Vthでワード線WLn-1のUpperページのプログラムを行なうこともできる。このようにすると、ワード線WLnの書込みによる隣接セル間干渉を受ける前に、IDLのワード線WLn-1のLowerページ、Middleページ及びTopページのデータを読み出すことができる。
【0223】
なお、本実施形態における、ワード線WLnの1stステージとワード線WLn-1の2ndステージとのひとまとめのコマンドによるプログラムの実際の実行順番は変形が可能である。すなわち、図109に示したワード線WLnのLowerページ、Middleページ及びTopページのプログラムと、IDLとしてのワード線WLn-1のLowerページ、Middleページ及びTopページのデータ読み出しとは、何れが先でもよく、入れ替えが可能である。ワード線WLn-1のLowerページ、Middleページ及びTopページのデータ読み出しがワード線WLnのLowerページ、Middleページ及びTopページのプログラムよりも前に行なわれることで、ワード線WLnのLowerページ、Middleページ及びTopページのプログラムによる影響を受けることなくIDLが可能となる。
【0224】
このように、第3の実施形態では、ワード線WLn-1の2ndステージのプログラムと、ワード線WLnの1stステージのプログラムとをまとめて行うので、コマンド入力やポーリングの頻度が減少する。したがって、メモリシステム1の高速化及び制御の簡素化が可能となる。
【0225】
図110は第3の実施形態のプログラムにおける書き込みバッファ量(バッファデータ量)を説明するための図である。本実施形態では、1-4-5-5データコーディングで2ステージのプログラムが用いられる。この本実施形態のプログラムでは、1stステージでは、3ページ分(Lowerページ及びMiddleページ及びTopページ)のデータ入力と、この3ページ分のプログラム(1stプログラム)とが行われる。また、本実施形態のプログラムの場合、2ndステージでは、1ページ分(Upperページ)のデータ入力と、Upperページの1ページ分のプログラム(2ndプログラム)とが行われる。
【0226】
そして、各ワード線WL0、WL1、WL2、・・・では、各ステージのデータ入力の際にデータを書き込みバッファ内に格納しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。例えば、1stステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、1stステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたLowerページとTopページとMiddleページのデータは削除されてもよい。ただし、Middleページのデータは、2ndステージでも使用するため、2ndステージのプログラムが開始されるまではページバッファ24に記憶しておく必要がある。同様に、2ndステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、2ndステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータはすべて削除されてもよい。このため、本実施形態のプログラムの場合、書き込みバッファ内に保持しておく必要があるデータは、最大でも3ページ分のデータであり、第1の実施形態よりもさらに少なくて済む。
【0227】
本実施形態のプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower/Middle/Upper/Topの4ページ分のデータは連続して書き込まれない。例えば、ワード線WL0への1stステージが実行された後、ワード線WL0への2ndステージが実行される前に、ワード線WL0に隣接するワード線WL1への1stステージが実行される。同様に、ワード線WL1への1stステージが実行された後、ワード線WL1への2ndステージが実行される前に、ワード線WL1に隣接するワード線WL2への1stステージが実行される。
【0228】
このように、本実施形態では、すべてのページデータは、1回のステージのプログラムでのみ必要であるので、そのデータ入力が完了すれば書き込みバッファ内のデータは破棄可能となる。そのため、本実施形態では、書き込みバッファ内に同時に保持しておくことが必要なページ数が、第1の実施形態よりもさらに少なくて済む。
【0229】
不揮発性メモリ3へプログラムされるページデータは、RAM6内の書き込みバッファに一旦保持されてから、プログラム時に不揮発性メモリ3へデータ入力される。本実施形態においては、このRAM6の必要容量を小さくすることが可能となるので、コスト削減となる。
【0230】
また、本実施形態では各ページそれぞれ1回のデータ転送で完了するため、第1の実施形態と比較してページデータの転送時間も少なくて済み、転送時の消費電力削減することが可能となる。
【0231】
本実施形態におけるページ読み出し処理については、第1の実施形態で説明した処理手順と同じであるため、説明を省略する。
【0232】
なお、本実施形態では、新たに保持し続けるページのデータのために、NANDフラッシュメモリ内部のページバッファ24を増やす必要がある。図8Aに示したようにブロック内に1個のストリングが存在するNANDフラッシュメモリのプログラムでは、増加が必要なページバッファ24の量は1ページデータ分である。それに対し、図8Bもしくは図8Cに示したようにブロック内に4個のストリングが存在するNANDフラッシュメモリのプログラムでは、増加が必要なページバッファ24の量は4ページデータ分である。これは、ある1つのストリングの1stステージのプログラムを実行してから、同じストリングの2ndステージのプログラムを実行するまでに、他の3つのストリングの1stステージのプログラムを実行せねばならず、結局、4つ全てのストリングについて、それぞれ1ページ分のデータを保持する必要があるからである。
【0233】
本実施形態では、1-4-5-5データコーディングを例に取って説明したが、さまざまなデータコーディングの変形が可能であり、上記に述べた実施形態を実現することが可能であることは明らかである。
【0234】
上述した第1~第3の実施形態では、不揮発性メモリ3が、NANDメモリ5を用いて構成されている場合について説明したが、ReRAM(Resistive Random Access Memory)やMRAM6(Magneto-Resistive Random Access Memory)、PRAM(Phase Change Random Access Memory)、FeRAM(Ferroeletric Random Access Memory)など、他のタイプの不揮発性メモリ3が用いられてもよい。
【0235】
上述した第1から第3の実施形態では、1stステージのプログラムでは3ページ分のデータの書き込み、2ndステージのプログラムでは2ページ分のデータの書き込みを行う場合について説明したが、1stステージのプログラムでのページ数と2ndステージのプログラムでのページ数の配分を変更してもよい。たとえば、1stステージのプログラムでは2ページ分のデータの書き込み、2ndステージのプログラムでは3ページ分のデータの書き込みを行うようにしてもよい。
【0236】
本開示のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0237】
1 メモリシステム、2 メモリコントローラ、3 不揮発性メモリ、4 ホストプロセッサ、5NANDメモリ、6 RAM、7 ROM、8 プロセッサ、9 ホストインターフェイス、10 ECC回路、11 メモリインターフェイス、12 内部バス、21 NAND I/Oインターフェイス、22 制御部、23 NANDメモリセルアレイ、24 ページバッファ、31 発振器、32 シーケンサ、33 コマンドユーザインターフェイス、34 電圧供給部、35 カラムカウンタ、36 シリアルアクセスコントローラ、37 ローデコーダ、38 センスアンプ、41 p型ウェル領域、42、43、44 配線層、45 メモリホール、46 ブロック絶縁膜、47 電荷蓄積層、48 ゲート絶縁膜、49 導電膜
図1
図2
図3
図4
図5
図6A
図6B
図7
図8A
図8B
図8C
図9
図10
図11
図12
図13
図14A
図14B
図15
図16A
図16B
図16C
図16D
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52
図53
図54
図55
図56
図57
図58
図59
図60
図61
図62
図63
図64
図65
図66
図67
図68
図69
図70
図71
図72
図73
図74
図75
図76
図77
図78
図79
図80
図81
図82
図83
図84
図85
図86
図87
図88
図89
図90
図91
図92
図93
図94
図95
図96
図97
図98
図99
図100
図101
図102
図103
図104
図105
図106
図107
図108
図109
図110