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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G11C 11/56 20060101AFI20231225BHJP
   G11C 16/34 20060101ALI20231225BHJP
【FI】
G11C11/56 220
G11C16/34 113
【請求項の数】 15
(21)【出願番号】P 2020157767
(22)【出願日】2020-09-18
(65)【公開番号】P2022051340
(43)【公開日】2022-03-31
【審査請求日】2023-03-17
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】武田 奈穂美
(72)【発明者】
【氏名】山城 遼
(72)【発明者】
【氏名】白川 政信
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2020-47318(JP,A)
【文献】特開2020-47322(JP,A)
【文献】米国特許出願公開第2012/0144267(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
G11C 16/34
(57)【特許請求の範囲】
【請求項1】
各々が複数のメモリセルを含む複数のセルユニットを含む不揮発性メモリと、
メモリコントローラと、
を備え、
前記メモリコントローラは、
読出し電圧の第1補正量を使用して第1セルユニットから第1データを読み出し、
前記第1データ内のエラービットのアドレスを特定し、
前記第1データ及び前記第1データ内のエラービットのアドレスに基づいて、前記第1補正量を第2補正量に更新し、
前記第2補正量に基づく第3補正量を使用して、前記第1セルユニットと異なる第2セルユニットから第2データを読み出す
ように構成された、
メモリシステム。
【請求項2】
前記第3補正量は、前記第2補正量と等しい、
請求項1記載のメモリシステム。
【請求項3】
前記不揮発性メモリは、各々が前記複数のセルユニットを含む複数のグループを含み、
前記メモリコントローラは、前記第3補正量を使用して、前記第1セルユニット及び前記第2セルユニットを含む第1グループ内の第3セルユニットから第3データを読み出すように構成された、
請求項2記載のメモリシステム。
【請求項4】
前記第3補正量は、前記第2補正量と異なる、
請求項1記載のメモリシステム。
【請求項5】
前記不揮発性メモリは、各々が前記複数のセルユニットを含む複数のグループを含み、
前記メモリコントローラは、前記第2補正量に基づく第4補正量を使用して、前記第1セルユニット及び前記第2セルユニットを含む第1グループ内の第3セルユニットから第3データを読み出すように構成され、
前記第4補正量は、前記第2補正量及び前記第3補正量と異なる、
請求項4記載のメモリシステム。
【請求項6】
前記メモリコントローラは、
前記第1セルユニットのアドレス及び前記第2セルユニットのアドレスに基づいて、前記第2補正量を前記第3補正量に換算し、
前記第1セルユニットのアドレス及び前記第3セルユニットのアドレスに基づいて、前記第2補正量を前記第4補正量に換算する
ように構成された、
請求項5記載のメモリシステム。
【請求項7】
前記メモリコントローラは、
読出し電圧の第5補正量を使用して第4セルユニットから第4データを読み出し、
前記第4データ内のエラービットのアドレスを特定し、
前記第4データ及び前記第4データ内のエラービットのアドレスに基づいて、前記第5補正量を第6補正量に更新し、
前記第6補正量を使用して、前記第4セルユニットと異なる第5セルユニットから第5データを読み出す
ように構成され、
前記第4セルユニット及び前記第5セルユニットは、前記第1グループと異なる第2グループに含まれる、
請求項5記載のメモリシステム。
【請求項8】
前記メモリコントローラは、
読出し電圧の第7補正量を使用して第6セルユニットから第6データを読み出し、
前記第6データ内のエラービットのアドレスを特定し、
前記第6データ及び前記第6データ内のエラービットのアドレスに基づいて、前記第7補正量を第8補正量に更新し、
前記第2補正量及び前記第8補正量に基づく第9補正量を使用して、前記第2セルユニットから前記第2データを読み出す
ように構成された、
請求項1記載のメモリシステム。
【請求項9】
前記メモリコントローラは、
補正量と前記補正量よりデータサイズが小さいインデックスとを関連づける第1コードブックを記憶し、
前記第1コードブックに基づいて、fS第1インデックスを伸張して前記第1補正量を取得し、
前記第1コードブックに基づいて、前記第2補正量を圧縮して第2インデックスを取得する、
ように構成され、
前記第1補正量を前記第2補正量に更新することは、前記第1インデックスを前記第2インデックスに更新することを含む、
請求項1記載のメモリシステム。
【請求項10】
前記メモリコントローラは、前記第2データ内のエラービット数が閾値以上である場合、
前記第2データ内のエラービットのアドレスを特定し、
前記第2データ及び前記第2データ内のエラービットのアドレスに基づいて、前記第3補正量を第10補正量に更新し、
前記第1セルユニットのアドレス及び前記第2セルユニットのアドレスに基づいて前記第2補正量を換算する情報を、前記第3補正量に換算する第1情報から、前記第10補正量に換算する第2情報に変更する
ように構成された、
請求項6記載のメモリシステム。
【請求項11】
前記メモリコントローラは、前記第2データ内のエラービット数が閾値以上である場合、
前記第2データ内のエラービットのアドレスを特定し、
前記第2データ及び前記第2データ内のエラービットのアドレスに基づいて、前記第3補正量を第10補正量に更新し、
前記第3補正量及び前記第10補正量の差に基づいて、前記第1コードブックを第2コードブックに変更する
ように構成された、
請求項9記載のメモリシステム。
【請求項12】
前記メモリコントローラは、前記第2データ内のエラービット数が閾値以上である場合、
前記第2データ内のエラービットのアドレスを特定し、
前記第2データ及び前記第2データ内のエラービットのアドレスに基づいて、前記第3補正量を第10補正量に更新し、
前記第10補正量に基づく第11補正量を使用して、前記第2セルユニットと異なる第7セルユニットから第7データを読み出す
ように構成された、
請求項1記載のメモリシステム。
【請求項13】
前記不揮発性メモリは、各々が前記複数のグループを含む複数のブロックを含み、
前記複数のブロックの各々は、データの消去単位である、
請求項7記載のメモリシステム。
【請求項14】
前記複数のセルユニットの各々は、データの書込み単位である、
請求項13記載のメモリシステム。
【請求項15】
前記複数のセルユニットのうちの1つのセルユニット内の前記複数のメモリセルは、
同一のワード線に共通接続され、
それぞれ異なるビット線に接続される、
請求項13記載のメモリシステム。

【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
半導体記憶装置としてのNAND型フラッシュメモリと、半導体記憶装置を制御するメモリコントローラと、を含むメモリシステムが知られている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2020-047318号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
パトロール処理によるメモリシステムの負荷の増加を抑制する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、各々が複数のメモリセルを含む複数のセルユニットを含む不揮発性メモリと、メモリコントローラと、を備える。上記メモリコントローラは、読出し電圧の第1補正量を使用して第1セルユニットから第1データを読み出し、上記第1データ内のエラービットのアドレスを特定し、上記第1データ及び上記第1データ内のエラービットのアドレスに基づいて、上記第1補正量を第2補正量に更新し、上記第2補正量に基づく第3補正量を使用して、上記第1セルユニットと異なる第2セルユニットから第2データを読み出すように構成される。
【図面の簡単な説明】
【0006】
図1】第1実施形態に係るメモリシステムの構成を説明するためのブロック図。
図2】第1実施形態に係る不揮発性メモリの構成を説明するためのブロック図。
図3】第1実施形態に係るメモリセルアレイの構成を説明するための回路図。
図4】第1実施形態に係るメモリセルアレイの閾値電圧分布を説明するための模式図。
図5】第1実施形態に係るNANDストリングの構成を説明するための断面図。
図6図5のVI-VI線に沿ったメモリセルトランジスタの断面図。
図7】第1実施形態に係るブロック内のセルユニットのグループ化を説明するための模式図。
図8】第1実施形態に係るメモリシステムの代表補正量情報を説明するための概念図。
図9】第1実施形態に係る読出し電圧補正回路の構成を説明するためのブロック図。
図10】第1実施形態に係るメモリシステムにおけるパトロール処理を説明するためのフローチャート。
図11】第1実施形態に係るメモリシステムにおける補正量算出処理を説明するためのフローチャート。
図12】第1実施形態に係るメモリシステムにおける補正量算出処理を説明するための模式図。
図13】第1実施形態に係るメモリシステムにおける補正量算出処理を説明するための模式図。
図14】第1実施形態に係るメモリシステムにおけるホスト読出し処理を説明するためのフローチャート。
図15】第2実施形態に係るメモリシステムの構成を説明するためのブロック図。
図16】第2実施形態に係るメモリシステムの代表インデックス情報を説明するための概念図。
図17】第2実施形態に係るメモリシステムのコードブックを説明するための概念図。
図18】第2実施形態に係るメモリシステムにおけるパトロール処理を説明するためのフローチャート。
図19】第2実施形態に係るメモリシステムにおける新たな代表インデックス取得処理の第1例を説明するためのフローチャート。
図20】第2実施形態に係るメモリシステムにおける新たな代表インデックス取得処理の第2例を説明するためのフローチャート。
図21】第2実施形態に係るメモリシステムにおける重み係数設定処理を説明するためのフローチャート。
図22】第2実施形態に係るメモリシステムにおけるホスト読出し処理を説明するためのフローチャート。
図23】第3実施形態に係るメモリシステムにおけるホスト読出し処理を説明するためのフローチャート。
図24】第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第1例を説明するためのフローチャート。
図25】第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第2例を説明するためのフローチャート。
図26】第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第3例を説明するためのフローチャート。
図27】第1変形例に係るブロックにおける代表セルユニットを説明するための模式図。
図28】第2変形例に係るメモリシステムにおける補正量算出処理を説明するための模式図。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【0008】
1.第1実施形態
第1実施形態に係る情報処理システムについて説明する。
【0009】
1.1 構成
以下では、不揮発性メモリとしてNAND型フラッシュメモリを含むメモリシステムについて説明する。
【0010】
1.1.1 メモリシステム
まず、メモリシステムを含む構成について、図1を用いて説明する。
【0011】
図1に示すように、メモリシステム1は、外部のホスト機器2に接続され、ホスト機器2からの命令に応じて各種動作を実行し得る。また、メモリシステム1は、不揮発性メモリ10、揮発性メモリ20、及びメモリコントローラ30を含む。不揮発性メモリ10、揮発性メモリ20、及びメモリコントローラ30は、例えばそれらの組み合わせにより一つの半導体装置を構成してもよく、その例としてはSDTMカードのようなメモリカードや、UFS(universal flash storage)、SSD(solid state drive)等が挙げられる。
【0012】
不揮発性メモリ10(以下、NANDフラッシュメモリ10)は、例えば、各々が複数のメモリセルを含む複数のチップ10-0~10-Nを含む(Nは1以上の整数)。NANDフラッシュメモリ10は、ホスト機器2から書き込みを指示されたデータを不揮発に記憶する。また、NANDフラッシュメモリ10は、ホスト機器2から読み出しを指示されたデータを、メモリコントローラ30を介してホスト機器2に出力する(ホスト読出し処理)。
【0013】
揮発性メモリ20(以下、DRAM20)は、例えばDRAM(Dynamic random access memory)であり、NANDフラッシュメモリ10を管理するためのファームウェアや、各種の管理情報を記憶する。例えば、DRAM20は、パトロール処理の結果をホスト読出し処理に適用するための情報として、代表補正量情報21及び換算情報22を記憶する。
【0014】
パトロール処理は、NANDフラッシュメモリ10に記憶されたデータを少ないエラービット数で読み出すために定期又は不定期に実行される。パトロール処理は、例えば、パトロール読出し処理と、当該パトロール読出し処理の結果に基づいて読出し電圧の補正量を算出する補正量算出処理と、を含む。パトロール読出し処理によってNANDフラッシュメモリ10から読み出されたデータは、ホスト機器2には出力されない。すなわち、パトロール読出し処理は、NANDフラッシュメモリ10から読み出されたデータをホスト機器2に出力しない点において、ホスト機器2に出力するデータを読み出すホスト読出し処理と異なる。パトロール処理の詳細については、後述する。
【0015】
代表補正量情報21は、パトロール読出し処理の結果に基づいて算出された読出し電圧の補正量に関する情報である。代表補正量情報21には、NANDフラッシュメモリ10内の全てのメモリセルのうち、所定のメモリセルに対する補正量に関する情報が、代表補正量として含まれる。
【0016】
換算情報22は、代表補正量情報21における代表補正量を、当該代表補正量が算出された所定のメモリセル以外のメモリセルに適用するための換算処理に使用される情報である。
【0017】
メモリコントローラ30は、プロセッサ(CPU)31、バッファメモリ32、ホストインタフェース回路33、ECC回路34、NANDインタフェース回路35、DRAMインタフェース回路36、及び読出し電圧補正回路37を含む。なお、以下に説明されるメモリコントローラ30の各部31-36の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。また、読出し電圧補正回路37は、特に記載する場合を除き、ファームウェアとは独立して機能し得るハードウェア構成によって実現可能であるものとする。
【0018】
プロセッサ31は、ROM(Read only memory)に記憶されたプログラムをロードすることによってメモリコントローラ30全体の動作を制御する。例えば、プロセッサ31は、ホスト機器2から読出し要求を受信した際には、それに応答して、読出し処理を実行する。書込み処理及び消去処理の際も同様である。
【0019】
バッファメモリ32は、例えばSRAM(Static random access memory)であり、メモリコントローラ30がNANDフラッシュメモリ10から読み出したデータや、ホスト機器2から受信した書込みデータ等を一時的に記憶する。
【0020】
ホストインタフェース回路33は、ホストバスを介してホスト機器2と接続され、メモリコントローラ30とホスト機器2との間の通信を司る。ホストバスは、例えば、SDTMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はPCIe(Peripheral component interconnect express)等に準拠したバスである。
【0021】
ECC回路34は、NANDフラッシュメモリ10に記憶されるデータに関するエラー検出処理及びエラー訂正処理を行う。すなわちECC回路34は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、エラービットの有無を検出する。そしてエラービットが検出された際には、そのエラービットのカラムアドレス(エラー位置)を特定し、エラー訂正する。エラー訂正の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose‐Chaudhuri‐Hocquenghem)符号やRS(Reed‐Solomon)符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。
【0022】
NANDインタフェース回路35は、NANDバスによってNANDフラッシュメモリ10と接続され、NANDフラッシュメモリ10との通信を司る。NANDインタフェース回路35は、メモリコントローラ30とNANDフラッシュメモリ10との間におけるデータ、コマンド、及びアドレスの転送を制御し、NANDフラッシュメモリ10内の各チップ10-0~10-Nを独立に制御し得る。NANDインタフェース回路35は、NANDインタフェース規格をサポートする。
【0023】
DRAMインタフェース回路36は、DRAM20に接続され、メモリコントローラ30とDRAM20との間の通信を司る。DRAMインタフェース回路36は、DRAMインタフェース規格をサポートする。
【0024】
読出し電圧補正回路37は、NANDフラッシュメモリ10からデータを読み出す際に使用される読出し電圧の補正量を算出する機能を有する。読出し電圧補正回路37の構成の詳細については、後述する。
【0025】
1.1.2 チップ
次に、NANDフラッシュメモリ10内のチップの構成について、図2を用いて説明する。図2では、チップ10-0内の構成が一例として示されている。なお、チップ10-0以外のチップ10-1~10-Nは、チップ10-0と同等の構成を有するため、説明を省略する。
【0026】
図2に示すように、チップ10-0は、例えば入出力回路11、レジスタセット12、ロジックコントローラ13、シーケンサ14、レディ/ビジー制御回路15、電圧生成回路16、メモリセルアレイ17、ロウデコーダモジュール18、及びセンスアンプモジュール19を含む。
【0027】
入出力回路11は、例えば8ビット幅の入出力信号I/O1~I/O8を、メモリコントローラ30との間で送受信する。入出力信号I/Oは、データDAT、ステータス情報STS、アドレスADD、コマンドCMD等を含み得る。また、入出力回路11は、センスアンプモジュール19との間でデータDATを送受信する。
【0028】
レジスタセット12は、ステータスレジスタ12A、アドレスレジスタ12B、及びコマンドレジスタ12Cを含む。ステータスレジスタ12A、アドレスレジスタ12B、及びコマンドレジスタ12Cは、それぞれステータスSTS、アドレスADD、及びコマンドCMDを記憶する。
【0029】
ステータスSTSは、例えばシーケンサ14の動作状態に基づいて更新される。また、ステータスSTSは、メモリコントローラ30からの指示に基づいてステータスレジスタ12Aから入出力回路11に転送され、メモリコントローラ30に出力される。アドレスADDは、入出力回路11からアドレスレジスタ12Bに転送される。アドレスADDは、例えばチップアドレス、ブロックアドレス、ページアドレス、カラムアドレス等を含み得る。コマンドCMDは、入出力回路11からコマンドレジスタ12Cに転送される。コマンドCMDは、チップ10-0の各種動作に関する命令を含む。
【0030】
ロジックコントローラ13は、メモリコントローラ30から受信した制御信号に基づいて、入出力回路11及びシーケンサ14のそれぞれを制御する。このような制御信号としては、例えばチップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、及びライトプロテクト信号WPnが使用される。
【0031】
チップイネーブル信号CEnは、チップ10-0をイネーブルにするための信号である。コマンドラッチイネーブル信号CLEは、受け取った入出力信号I/OがコマンドCMDであることを入出力回路11に通知するための信号である。アドレスラッチイネーブル信号ALEは、受け取った入出力信号I/OがアドレスADDであることを入出力回路11に通知するための信号である。ライトイネーブル信号WEnは、入出力信号I/Oの入力を入出力回路11に命令するための信号である。リードイネーブル信号REnは、入出力信号I/Oの出力を入出力回路11に命令するための信号である。ライトプロテクト信号WPnは、電源のオンオフ時にチップ10-0を保護状態にするための信号である。
【0032】
シーケンサ14は、チップ10-0全体の動作を制御する。例えば、シーケンサ14は、コマンドレジスタ12Cに記憶されたコマンドCMDと、アドレスレジスタ12Bに記憶されたアドレスADDとに基づいて、読出し処理、書込み処理、消去処理等を実行する。
【0033】
レディ/ビジー制御回路15は、シーケンサ14の動作状態に基づいて、レディ/ビジー信号RBnを生成する。レディ/ビジー信号RBnは、チップ10-0がレディ状態であるかビジー状態であるかを、メモリコントローラ30に通知するための信号である。なお、本明細書において“レディ状態”は、チップ10-0がメモリコントローラからの命令を受け付ける状態であることを示し、“ビジー状態”は、チップ10-0がメモリコントローラからの命令を受け付けない状態であることを示す。
【0034】
電圧生成回路16は、読出し処理、書込み処理、消去処理等で使用される電圧を生成する。そして、電圧生成回路16は、生成した電圧をメモリセルアレイ17、ロウデコーダモジュール18、及びセンスアンプモジュール19に供給する。
【0035】
メモリセルアレイ17は、複数のブロックBLK0~BLKn(nは1以上の整数)を含む。ブロックBLKは、データを不揮発に記憶することが可能な複数のメモリセルトランジスタの集合であり、例えばデータの消去単位として使用される。各メモリセルトランジスタは、1本のビット線BLと1本のワード線WLとに関連付けられている。
【0036】
ロウデコーダモジュール18は、ブロックアドレスに基づいて、各種処理を実行するブロックBLKを選択する。そして、ロウデコーダモジュール18は、電圧生成回路16から供給された電圧を、選択したブロックBLK内のワード線WL等に転送する。
【0037】
センスアンプモジュール19は、読出し処理において、メモリセルアレイ17からデータを読み出し、当該読出しデータを入出力回路11に転送する。また、センスアンプモジュール19は、書込み処理において、入出力回路11から受け取ったデータに基づいて、ビット線BLに所定の電圧を印加する。
【0038】
1.1.3 メモリセルアレイ
次に、第1実施形態に係る不揮発性メモリ内のチップに含まれるメモリセルアレイの構成について説明する。
【0039】
1.1.3.1 回路構成
図3は、第1実施形態に係るメモリセルアレイの構成を示す回路図の一例である。図3では、メモリセルアレイ17のうち、1つのブロックBLKが抽出して示される。図3に示すように、ブロックBLKは、例えば4つのストリングユニットSU0~SU3を含む。なお、図3において、ストリングユニットSU2及びSU3の構成は簡略化して示している。
【0040】
各ストリングユニットSUは、ビット線BL0~BLm(mは、1以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。NANDストリングNSは、例えばメモリセルトランジスタMT0~MT15、並びに選択トランジスタST1及びST2を含む。
【0041】
メモリセルトランジスタMTは、制御ゲート及び電荷蓄積層を含み、データを不揮発に記憶する。選択トランジスタST1及びST2のそれぞれは、各種処理時におけるストリングユニットSUの選択に使用される。
【0042】
各NANDストリングNSにおいて、メモリセルトランジスタMT0~MT15は、直列接続される。直列接続されたメモリセルトランジスタMT0~MT15の一端と、関連付けられたビット線BLとの間には、選択トランジスタST1が接続される。直列接続されたメモリセルトランジスタMT0~MT15の他端には、選択トランジスタST2のドレインが接続される。選択トランジスタST2のソースには、ソース線SLが接続される。
【0043】
同一のブロックBLKにおいて、ストリングユニットSU0~SU3に含まれた複数の選択トランジスタST1の各々のゲートは、選択ゲート線SGD0~SGD3にそれぞれ共通接続される。複数のメモリセルトランジスタMT0~MT15の各々の制御ゲートは、ワード線WL0~WL15にそれぞれ共通接続される。複数の選択トランジスタST2の各々のゲートは、選択ゲート線SGSに共通接続される。
【0044】
ビット線BL0~BLmは、複数のブロックBLK間で共有される。同じカラムアドレスに対応するNANDストリングNSには、同じビット線BLが接続される。ワード線WL0~WL15のそれぞれは、ブロックBLK毎に設けられる。ソース線SLは、例えば複数のブロックBLK間で共有される。
【0045】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMTの集合は、例えばセルユニットCUと称され、データの書込み単位として使用される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMTを含むセルユニットCUの記憶容量が、「1ページデータ」として定義される。1ページデータは、例えば、データの読出し単位として使用される。セルユニットCUは、メモリセルトランジスタMTが記憶するデータのビット数に応じて2ページデータ以上の記憶容量を有し得る。
【0046】
なお、以上で説明したメモリセルアレイ17の回路構成はあくまで一例であり、これに限定されない。例えば、各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。各NANDストリングNSが含むメモリセルトランジスタMT並びに選択トランジスタST1及びST2の各々の個数は、それぞれ任意の個数に設計され得る。
【0047】
本実施形態では、1つのメモリセルトランジスタMTが2ビットデータを記憶することができる。すなわち、本実施形態におけるメモリセルトランジスタMTは、2ビットのデータを記憶するMLC(multi level cell)である。MLC(multi level cell)のメモリセルトランジスタが記憶する2ビットデータを、下位ビットから順に下位(Lower)ビット、及び上位(Upper)ビットと呼ぶ。また、同一のセルユニットCUに含まれるメモリセルトランジスタMTの記憶する下位ビットの集合を“下位ページ”と呼び、上位ビットの集合を“上位ページ”と呼ぶ。
【0048】
図4は、メモリセルアレイ17内のメモリセルトランジスタMTの閾値電圧分布を示す模式図である。
【0049】
図4に示すように、メモリセルトランジスタMTが2ビットのデータを記憶する場合、その閾値電圧の分布は4個に分けられる。この4個の閾値電圧分布を、閾値電圧が低いものから順に“Er”状態(ステート)、“A”状態、“B”状態、及び“C”状態と呼ぶ。
【0050】
また、図4に示す電圧VA、VB、及びVCはそれぞれ、読出し処理の際に隣り合う2つの状態を区別するために用いられる。電圧VREADは、読出し処理時において非選択ワード線に印加される電圧である。メモリセルトランジスタMTは、ゲートに電圧VREADが印加されると記憶するデータに依らずにオン状態になる。これらの電圧値の関係は、VA<VB<VC<VREADである。
【0051】
上述した閾値電圧分布のうち“Er”状態は、メモリセルトランジスタMTの消去状態に相当する。“Er”状態における閾値電圧は、電圧VA未満である。“A”状態における閾値電圧は、電圧VA以上且つ電圧VB未満である。“B”状態における閾値電圧は、電圧VB以上且つ電圧VC未満である。“C”状態における閾値電圧は、電圧VC以上且つ電圧VREAD未満である。
【0052】
上述した4個の閾値電圧分布は、下位ビット及び上位ビットを含む2ビット(2ページ)データを書き込むことで形成される。そして4個の閾値電圧分布が、それぞれ異なる2ビットのデータに対応する。本実施形態では、各状態に含まれるメモリセルトランジスタMTに対して、“上位ビット/下位ビット”に以下に示すようにデータを割り付ける。
【0053】
“Er”状態に含まれるメモリセルトランジスタMTは、“11”データを記憶する。“A”状態に含まれるメモリセルトランジスタMTは、“01”データを記憶する。“B”状態に含まれるメモリセルトランジスタMTは、“00”データを記憶する。“C”状態に含まれるメモリセルトランジスタMTは、“10”データを記憶する。
【0054】
下位ページ読出しは、“A”状態と“B”状態とを区別する電圧VBを読出し電圧として用いる。電圧VBを用いた読出し処理を、読出し処理BRと呼ぶ。
【0055】
上位ページ読出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“B”状態と“C”状態とを区別する電圧VCを読出し電圧として用いる。電圧VAを用いた読出し処理を読出し処理ARと呼び、電圧VCを用いた読出し処理を読出し処理CRと呼ぶ。
【0056】
1.1.3.2 断面構造
図5は、ブロックBLKの一部領域であるNANDストリングNSの断面図である。図5に示すように、半導体基板40の上方に形成されるメモリピラーMPが、NANDストリングNSとして使用される。
【0057】
以下で参照される断面図において、X軸はワード線WLの延伸方向に対応し、Y軸はビット線BLの延伸方向に対応し、Z軸は半導体基板40に対してNANDストリングNSの延伸方向に対応する。また、図を見易くするために絶縁体層(層間絶縁膜)等の構成要素が適宜省略されている。
【0058】
半導体基板40の上方(Z軸矢印方向)に形成されるメモリピラーMPが、NANDストリングNSとして使用される。
【0059】
半導体基板40の上方には、絶縁体層(図示せず)を介して導電体層41が設けられる。この絶縁体層には、例えば、センスアンプモジュール19等の周辺回路が設けられ得る。導電体層41は、例えばXY平面に沿って広がる板状に形成され、ソース線SLとして使用される。
【0060】
導電体層41の上方に、絶縁体層(図示せず)を介して導電体層42が設けられる。導電体層42は、選択ゲート線SGSとして使用される。
【0061】
導電体層42の上方に、絶縁体層(図示せず)と導電体層43とが交互に複数(図4では8回)積層される。複数の導電体層43は、半導体基板40側から順に、それぞれワード線WL0~WL7として使用される。
【0062】
最上層の導電体層43の上方に、絶縁体層(図示せず)と導電体層44とが交互に複数(図4では8回)積層される。複数の導電体層44は、半導体基板40側から順に、それぞれワード線WL8~WL15として使用される。最上層の導電体層43と最下層の導電体層44との間隔は、例えば、隣り合う導電体層43同士の間隔、又は隣り合う導電体44同士の間隔よりも大きい。
【0063】
最上層の導電体層44の上方に、絶縁体層(図示せず)を介して導電体層45が設けられる。導電体層45は、選択ゲート線SGDとして使用される。導電体層42~45は、例えばXY平面に沿って広がった板状に形成される。
【0064】
導電体層45の上方に、絶縁体層(図示せず)を介して導電体層47が設けられる。導電体層47は、Y軸に沿って延伸し、X軸に沿って複数本がライン状に配列され、それぞれがビット線BLとして使用される。
【0065】
メモリピラーMPは、Z軸に沿って延伸して設けられ、導電体層42~45を貫通し、底部が導電体層41に接触している。メモリピラーMPは、下部ピラーLMPと、下部ピラーLMPの上部に形成される上部ピラーUMPと、下部ピラーLMPと上部ピラーUMMPとの間を電気的に接続するジョイント部JTと、を含む。下部ピラーLMP及び上部ピラーUMPは、例えば、半導体基板40からビット線BLに向かって(Z軸に沿って)径が大きくなるテーパ形状を有する。ジョイント部JTのXY平面に沿った径は、例えば、ジョイント部JTとの接触部分における下部ピラーLMP及び上部ピラーUMPの径より大きい。
【0066】
メモリピラーMPは、例えば、コア膜50、半導体膜51、積層膜52、及び半導体部53を含む。コア膜50、半導体膜51、積層膜52の各々は、例えば、下部ピラーLMP、ジョイント部JT、及び上部ピラーUMP内において、連続膜として形成されている。
【0067】
具体的には、コア膜50は、メモリピラーMPのほぼ中心に設けられ、Z軸に沿って延伸している。コア膜50は、例えば、導電体層45よりも上方に位置する上端と、導電体層42よりも下方に位置する下端と、を有する。コア膜50は、例えば、酸化シリコン(SiO)等の絶縁体を含む。
【0068】
半導体膜51は、コア膜50の底面及び側面を覆い、Z軸に沿って形成される円筒状の部分を含む。半導体膜51は、導電体層45よりも上方に位置する上端と、導電体層41に接触する下端と、を有する。半導体膜51は、例えば、ポリシリコンを含む。
【0069】
積層膜52は、半導体膜51の側面を覆い、Z軸に沿って形成される円筒状の部分を含む。積層膜52の構造の詳細について、図5のVI-VI線に沿った断面図である図6を用いて説明する。
【0070】
図6に示すように、積層膜52は、トンネル絶縁膜52a、電荷蓄積膜52b、及びブロック絶縁膜52cを含む。トンネル絶縁膜52aは、半導体膜51の側面を覆い、電荷蓄積膜52bは、トンネル絶縁膜52aの側面を覆う。ブロック絶縁膜52cは、電荷蓄積膜52bの側面を覆い、導電体層43に覆われる。
【0071】
再び図5に戻って、メモリピラーMPの構成について説明する。半導体部53は、コア膜50の上面を覆い、コア膜50の上方における半導体膜51の部分に接触している。半導体部53は、例えば円柱状であり、上部ピラーUMPの上端に位置している。
【0072】
半導体部53の上面と、導電体層47の下面との間には、導電体層46が設けられている。導電体層46は、メモリピラーMPとビット線BLとの間を電気的に接続するコンタクトCPとして使用される。
【0073】
以上で説明したメモリピラーMPの構造では、下部ピラーLMPと導電体層42とが交差する部分が、選択トランジスタST2として機能する。下部ピラーLMPと複数の導電体層43とが交差する部分がそれぞれ、メモリセルトランジスタMT0~MT7として機能する。上部ピラーUMPと複数の導電体層44とが交差する部分がそれぞれ、メモリセルトランジスタMT8~MT15として機能する。上部ピラーUMPと導電体層45とが交差する部分が、選択トランジスタST1として機能する。半導体膜51は、メモリセルトランジスタMT並びに選択トランジスタST1及びST2のそれぞれのチャネルとして機能する。
【0074】
以上のような構造により、メモリピラーMPは、NANDストリングNSとして機能することができる。そして、当該メモリピラーMPが半導体基板40の上方に複数個配置されることによって、メモリセルアレイ17が形成される。
【0075】
1.1.3.3 セルユニットのグループ化
次に、ブロックBLK内のセルユニットCUのグループ化について、説明する。
【0076】
上述の通り、NANDストリングNSにおいて直列接続されるメモリセルトランジスタMT0~MT15は、Z軸に沿って積層されて形成されるため、Z軸に沿った位置(高さ)に応じて、それぞれ異なる形状を有し得る。このため、メモリセルトランジスタMT0~MT15は、互いに異なる電気的特性を有し得る。また、上部ピラーUMPの両端部はそれぞれ、ビット線BL及びジョイント部JTの上端と電気的に接続するために、上部ピラーUMPの中央部とは異なる電気的特性を有し得る。下部ピラーLMPの両端部はそれぞれ、ソース線SL及びジョイント部JTの下端と電気的に接続するために、下部ピラーLMPの中央部とは異なる電気的特性を有し得る。このため、類似する電気的特性を有するセルユニットCU同士を1つのグループにまとめることにより、ブロックBLK内の各セルユニットCUは、いくつかのグループに分類することができる。
【0077】
図7は、第1実施形態に係るブロック内のセルユニットのグループ化の一例を示す模式図である。図7では、或るブロックBLK内の64個のセルユニットCUが、対応するストリングユニットSU及びワード線WLの組毎に区別して示される。
【0078】
図7に示すように、64個のセルユニットCUは、5つのグループGr(Gr0~Gr4)に分類される。具体的には、例えば、下部ピラーLMPの下端に位置する、ワード線WL0に接続される4個のセルユニットCUは、グループGr0に分類される。下部ピラーLMPの中央部に位置する、ワード線WL1~WL6に接続される24個のセルユニットCUは、グループGr1に分類される。下部ピラーLMPの上端及び上部ピラーUMPの下端に位置する、ワード線WL7及びWL8に接続される8個のセルユニットCUは、グループGr2に分類される。上部ピラーUMPの中央部に位置する、ワード線WL9~WL14に接続される24個のセルユニットCUは、グループGr3に分類される。上部ピラーUMPの上端に位置する、ワード線WL15に接続される4個のセルユニットCUは、グループGr4に分類される。
【0079】
また、グループGr0~Gr4には、それぞれ1つの代表セルユニットCUが割り当てられる。代表セルユニットCUは、例えば、パトロール読出し処理が実行されるセルユニットCUであり、当該代表セルユニットCUに対するパトロール処理の結果が代表補正量として代表補正量情報21に記憶される。
【0080】
図7の例では、グループGr0の代表セルユニットCUは、ストリングユニットSU2及びワード線WL0の組に対応する。グループGr1の代表セルユニットCUは、ストリングユニットSU2及びワード線WL3の組に対応する。グループGr2の代表セルユニットCUは、ストリングユニットSU2及びワード線WL7の組に対応する。グループGr3の代表セルユニットCUは、ストリングユニットSU2及びワード線WL11の組に対応する。グループGr4の代表セルユニットCUは、ストリングユニットSU2及びワード線WL15の組に対応する。
【0081】
なお、上述の代表セルユニットCUの割当て方はあくまで一例であり、これに限られない。例えば、或るグループGrの代表セルユニットCUは、当該グループGr内であればどのセルユニットCUが割り当てられてもよいし、他のグループGrの代表セルユニットCUと異なるストリングユニットSUに対応していてもよい。また、図7の例では、1つのブロックBLKに5つのグループGrが含まれる場合が示されるが、これに限られない。例えば、1つのブロックBLKに含まれるグループGrは、1つでもよい。
【0082】
また、以下の説明では、全てのブロックBLKについて、図7に示したグループ化が適用されるものとするが、これに限られない。例えば、1つのブロックBLK内のグループ数及び各グループの範囲は、ブロックBLK毎に異なっていてもよい。また、1つのグループが、複数のブロックBLKのセルユニットCUに対して関連づけられてもよい。
【0083】
1.1.4 代表補正量情報
次に、第1実施形態に係る代表補正量情報の構成について説明する。図8は、第1実施形態に係る代表補正量情報の構成の一例を示す概念図である。
【0084】
図8に示すように、代表補正量情報21には、NANDフラッシュメモリ10内の全てのグループGrの代表セルユニットCUに対するパトロール処理の結果が含まれる。具体的には、代表補正量情報21には、各代表セルユニットCUについて算出された読出し電圧VAの代表補正量ΔVA、読出し電圧VBの代表補正量ΔVB、及び読出し電圧VCの代表補正量ΔVCが、例えばDAC(Digital to analogue convertor)値として含まれる。
【0085】
図8の例では、チップChip0のブロックBLK0内のグループGr0に割り当てられた代表セルユニットCUの代表補正量として、ΔVA0、ΔVB0、及びΔVC0の組が含まれる。同様に、チップChip0のブロックBLK0内のグループGr1~Gr4に割り当てられた代表セルユニットCUの代表補正量として、それぞれΔVA1、ΔVB1、及びΔVC1の組、ΔVA2、ΔVB2、及びΔVC2の組、ΔVA3、ΔVB3、及びΔVC3の組、並びにΔVA4、ΔVB4、及びΔVC4の組、が含まれる。
【0086】
以上のような構成により、グループGrと、代表セルユニットCUに適用される読出し電圧VA~VCに関する代表補正量ΔVA~ΔVCとが、一意に対応づけられる。
【0087】
1.1.5 換算情報
次に、第1実施形態に係る換算情報の構成について説明する。
【0088】
換算情報22は、代表補正量情報21に記憶された代表補正量ΔVA~ΔVCに基づき、同一グループGr内における代表セルユニットCU以外のセルユニットCUに適用される換算補正量ΔVA~ΔVCを算出するために使用される情報である。具体的には、例えば、換算情報22は、代表セルユニットCU及び補正量算出対象のセルユニットCUの各々を特定する情報(例えば、ストリングユニットSU及びワード線WLの組を特定するアドレス)と、代表補正量ΔVA~ΔVCと、が入力されると、換算補正量ΔVA~ΔVCが出力される情報である。換算情報22は、例えば、テーブル構造又は関数の形式で記憶され得るが、上述の機能を有する任意の形式で記憶可能である。
【0089】
当該換算情報22を用いることにより、代表セルユニットCUに関する1組の代表補正量ΔVA~ΔVCから、当該代表セルユニットCUを含むグループGr内の全てのセルユニットCUの各々に関する換算補正量ΔVA~ΔVCを得ることができる。
【0090】
例えば、図7におけるストリングユニットSU1及びワード線WL4の組に対応するセルユニットCUの換算補正量ΔVA~ΔVCと、ストリングユニットSU3及びワード線WL6の組に対応するセルユニットCUの換算補正量ΔVA~ΔVCとは、同一の換算情報22を用いて、グループGr1の代表補正量ΔVA~ΔVCから換算される。そして、換算情報22を使用して得られたストリングユニットSU1及びワード線WL4の組に対応するセルユニットCUの換算補正量ΔVA~ΔVCと、ストリングユニットSU3及びワード線WL6の組に対応するセルユニットCUの換算補正量ΔVA~ΔVCとは、互いに異なり得る。
【0091】
なお、換算情報22は、全てのグループGrに共通した1つの情報であってもよいし、グループGr毎に個別の情報が割り当てられてもよい。
【0092】
1.1.6 読出し電圧補正回路
次に、メモリコントローラ30内に設けられる読出し電圧補正回路37の構成について、図9を用いて説明する。
【0093】
図9に示すように、読出し電圧補正回路37は、読出し電圧補正用バッファメモリ61、データパターン生成回路62、データパターンマッチ回路63、複数のビットカウンタ64(64-1~64-6)、並びに補正量算出回路65を備える。
【0094】
読出し電圧補正用バッファメモリ61は、例えば、SRAM等の揮発性メモリであり、パトロール処理の際に補正量を算出するために使用されるデータを一時的に記憶するための記憶領域である。読出し電圧補正用バッファメモリ61は、例えば、パトロール読出し処理によってNANDフラッシュメモリ10から読み出されたデータ(訂正前データ)と、訂正前データに含まれるエラービットのカラムアドレスを示すエラー位置情報と、を同時に記憶可能な容量を有する。なお、訂正前データは、例えばセルユニットCU(すなわち、上位ページ及び下位ページの2ページ)に対応するデータサイズを有する。エラー位置情報は、例えば、少なくともECC回路34における1回のエラー訂正処理によって検出可能なデータのアドレスリストのサイズを有する。
【0095】
データパターン生成回路62は、読出し電圧補正用バッファメモリ61に記憶されたデータに基づいて、エラー位置情報に記憶されたカラム毎に、データパターンを生成する。データパターンは、例えば、パトロール読出し処理によってNANDフラッシュメモリ100から読み出されたデータについての訂正前データ及び訂正後データが連結されて生成される。
【0096】
データパターンマッチ回路63は、データパターン生成回路62によって生成されたカラム毎のデータパターンと、予め記憶された所定のデータパターンとを比較し、当該所定のデータパターンと一致するデータパターンを検出する。図9の例では、所定のデータパターンは、6種類存在する。データパターンマッチ回路63は、当該6種類の所定のデータパターンと一致するデータパターンが検出されるたびに、当該6種類のうちのどの種類が検出されたかを示す信号を、複数のビットカウンタ64に送出する。
【0097】
複数のビットカウンタ64は、データパターンマッチ回路63内に記憶された所定のデータパターンに応じた個数分設けられる。図9の例では、複数のビットカウンタ64は、6個のビットカウンタ64-1~64-6である。6個のビットカウンタ64-1~64-6の各々は、対応する種類の所定のデータパターンと一致するデータパターンが検出されたことを示す信号をデータパターンマッチ回路63から受けると、カウント値をインクリメントする。
【0098】
補正量算出回路65は、6個のビットカウンタ64-1~64-6のカウント値に基づき、補正量を算出する。例えば、補正量算出回路65は、ビットカウンタ64-1のカウント値とビットカウンタ64-2のカウント値との比較結果に基づき、読出し電圧VAの補正量ΔVAを算出する。同様に、補正量算出回路65は、ビットカウンタ64-3のカウント値とビットカウンタ64-4のカウント値との比較結果に基づき、読出し電圧VBの補正量ΔVBを算出する。補正量算出回路65は、ビットカウンタ64-5のカウント値とビットカウンタ64-6のカウント値との比較結果に基づき、読出し電圧VCの補正量ΔVCを算出する。
【0099】
以上のような構成により、読出し電圧補正回路37は、補正量ΔVA~ΔVCを算出することができ、当該算出された補正量ΔVA~ΔVCを代表補正量情報21に記憶させることができる。
【0100】
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
【0101】
1.2.1 パトロール処理
まず、第1実施形態に係るメモリシステムにおけるパトロール処理について説明する。
【0102】
図10は、第1実施形態に係るメモリシステムにおけるパトロール処理を示すフローチャートである。図10では、NANDフラッシュメモリ10内の全てのグループGrに対してパトロール処理が実行される場合のフローの一例が示される。
【0103】
図10に示すように、ステップST11において、メモリコントローラ30は、変数i、j、及びkを“0”に初期化する(i=j=k=0)。
【0104】
ステップST12において、メモリコントローラ30は、代表補正量情報21を参照し、チップChip_iのブロックBLKjにおけるグループGr_kの代表補正量を取得する。例えば、i=j=k=0の場合、図8によれば、メモリコントローラ30は、代表補正量としてΔVA0、ΔVB0、及びΔVC0を示すDAC値を取得する。
【0105】
ステップST13において、メモリコントローラ30は、チップChip_iのブロックBLKjにおけるグループGr_kの代表セルユニットCUに対して、ステップST12において取得した代表補正量を適用したパトロール読出し処理を実行する。具体的には、メモリコントローラ30は、上述したパトロール読出し処理を実行する旨のコマンドセットを発行し、NANDフラッシュメモリ10に送出する。NANDフラッシュメモリ10は、当該コマンドセットを受けると、代表補正量が適用された読出し電圧を使用して代表セルユニットCUからデータを読み出し、メモリコントローラ30に出力する。
【0106】
なお、以下の説明では、パトロール読出し処理において、NANDフラッシュメモリ10は、代表セルユニットCUに記憶された全てのページからデータを読み出して、メモリコントローラ30に出力するものとして説明するが、これに限られない。
【0107】
例えば、NANDフラッシュメモリ10は、代表セルユニットCUに記憶された特定の1又は複数のページからデータを読み出して、メモリコントローラ30に出力してもよい。この際、NANDフラッシュメモリ10は、当該1又は複数のページデータに加え、1つの読出し電圧を使用して代表セルユニットCUからデータを更に読み出し、メモリコントローラ30に出力してもよい。
【0108】
いずれにしても、メモリコントローラ30は、新たな代表補正量の算出に必要な訂正前データをNANDフラッシュメモリ10から取得する。そして、メモリコントローラ30は、訂正前データを読出し電圧補正用バッファメモリ61に記憶させる。
【0109】
ステップST14において、メモリコントローラ30内のECC回路34は、ステップST13において取得された訂正前データに対してエラー検出処理を実行する。ECC回路34は、エラー検出処理によって特定されたエラー位置を含むエラー位置情報を生成し、読出し電圧補正用バッファメモリ61に記憶させる。
【0110】
ステップST15において、読出し電圧補正回路37は、補正量算出処理を実行し、代表セルユニットCUについての新たな代表補正量を算出する。補正量算出処理の詳細については、後述する。
【0111】
ステップST16において、メモリコントローラ30は、代表補正量情報21内のチップChip_iのブロックBLKjにおけるグループGr_kの代表セルユニットCUに対応する代表補正量を、ステップST15において算出された新たな代表補正量に更新する。これにより、当該代表セルユニットCUに適用される読出し電圧の補正量が、適正な値に更新される。
【0112】
ステップST17において、メモリコントローラ30は、チップChip_iのブロックBLKjにおける全てのグループGrをパトロールしたか否かを判定する。全てのグループGrをパトロール済みの場合(ステップST17;yes)、処理はステップST19に進み、パトロール済みでないグループGrが存在する場合(ステップST17;no)、処理はステップST18に進む。
【0113】
ステップST18において、メモリコントローラ30は、変数kをインクリメントさせる。その後、処理はステップST12に戻る。これにより、チップChip_iのブロックBLKjにおける全てのグループGrについてパトロール処理が完了するまで、ステップST12~ST18が繰り返される。
【0114】
ステップST19において、メモリコントローラ30は、チップChip_iの全てのブロックBLKをパトロールしたか否かを判定する。全てのブロックBLKをパトロール済みの場合(ステップST19;yes)、処理はステップST21に進み、パトロール済みでないブロックBLKが存在する場合(ステップST19;no)、処理はステップST20に進む。
【0115】
ステップST20において、メモリコントローラ30は、変数jをインクリメントさせる。その後、処理はステップST12に戻る。これにより、チップChip_iの全てのブロックBLKについてパトロール処理が完了するまで、ステップST12~ST20が繰り返される。
【0116】
ステップST21において、NANDフラッシュメモリ10内の全てのチップChipをパトロールしたか否かを判定する。全てのチップChipをパトロール済みの場合(ステップST21;yes)、パトロール処理は終了し、パトロール済みでないチップChipが存在する場合(ステップST21;no)、処理はステップST22に進む。
【0117】
ステップST22において、メモリコントローラ30は、変数iをインクリメントさせる。その後、処理はステップST12に戻る。これにより、NANDフラッシュメモリ10内の全てのチップChipについてパトロール処理が完了するまで、ステップST12~ST22が繰り返される。
【0118】
以上のように動作することにより、NANDフラッシュメモリ10内の全てのグループGrに対するパトロール処理が完了する。
【0119】
なお、上述したパトロール処理のフローはあくまで一例であり、これに限られない。
【0120】
例えば、上述したパトロール処理において、パトロール処理対象のブロックBLK数は、チップChipによって異なっていてもよい。パトロール処理対象のグループGr数は、ブロックBLKによって異なっていてもよい。
【0121】
また、図10の例では、NANDフラッシュメモリ10内の全てのグループGrに対して同じタイミングでパトロール処理が実行される場合について示したが、これに限られない。例えば、メモリコントローラ30は、グループGr毎、ブロックBLK毎、又はチップChip毎に、パトロール処理の実行頻度を任意のタイミングに設定可能である。
【0122】
また、図10の例では、NANDフラッシュメモリ10内の全てのグループGrに対してパトロール処理が実行される場合について示したが、これに限られない。例えば、メモリコントローラ30は、NANDフラッシュメモリ10内の記憶領域の一部をパトロール処理対象から除外してもよい。具体的には、例えば、データが書き込まれていない未使用のブロックBLK、有効なデータが書き込まれておらず参照されることがない無効なブロック等は、パトロール処理対象から除外され得る。
【0123】
また、図10の例では、パトロール処理がチップChip毎にシーケンシャルに実行される場合について示したが、これに限られない。例えば、パトロール処理は、複数のチップChipに対して並列に実行されてもよい。
【0124】
1.2.2 補正量算出処理
次に、補正量算出処理について説明する。
【0125】
図11は、第1実施形態に係るメモリシステムにおける補正量算出処理を示すフローチャートであり、図10におけるステップST15に対応する。すなわち、図11では、読出し電圧補正用バッファメモリ61に、訂正前データ及びエラー位置情報が記憶されているものとする。
【0126】
図11に示すように、ステップST31において、データパターン生成回路62は、読出し電圧補正用バッファメモリ61内の訂正前データ及びエラー位置情報に基づき、エラー位置について選択的に、訂正前データ及び訂正後データを連結したデータパターンを生成する。
【0127】
ステップST32において、データパターンマッチ回路63は、ステップST31において生成されたデータパターンが、所定のデータパターンと一致するか否かを、エラー位置毎に判定する。データパターンが所定のデータパターンと一致する場合(ステップST32;yes)、データパターンマッチ回路63は、当該データパターンが所定のデータパターンと一致する旨を示す信号を当該所定のデータパターンに対応するビットカウンタ64に送出し、処理はステップST33に進む。一方、データパターンが所定のデータパターンと一致しない場合(ステップST32;no)、処理はステップST33を省略してステップST34に進む。
【0128】
ステップST33において、複数のビットカウンタ64-1~64-6のうち、ステップST32においてデータパターンマッチ回路63から信号を受けたビットカウンタ64は、カウント値をインクリメントさせる。
【0129】
ステップST34において、データパターンマッチ回路63は、全てのエラー位置についてデータパターンをチェックしたか否かを判定する。全てのエラー位置におけるデータパターンが所定のデータパターンと一致するか否かを判定済みである場合(ステップST34;yes)、処理はステップST35に進み、所定のデータパターンと一致するか否かを判定済みでないデータパターンがある場合(ステップST34;no)、処理はステップST32に戻る。これにより、全てのエラー位置におけるデータパターンに対するチェックが完了するまで、ステップST32~ST34が繰り返される。
【0130】
ステップST35において、補正量算出回路65は、複数のビットカウンタ64-1~64-6のうち、所定のビットカウンタ64同士のカウント値を比較し、その比較結果に基づいて補正量を算出する。
【0131】
以上により、補正量算出処理が終了する。
【0132】
図12及び図13は、第1実施形態に係るメモリシステムにおける補正量算出処理を示す模式図である。図12は、図11におけるステップST31~ST34の具体例を示し、図13は、図11におけるステップST35の具体例を示す。
【0133】
まず、図12を用いて図11におけるステップST31~ST34の具体例について説明する。
【0134】
図12の例では、読出し電圧補正用バッファメモリ61内に記憶された訂正前データのうち、ビット線BL0~BL15に接続されたメモリセルトランジスタMTから読み出されたデータ(訂正前データの部分)が示される。ビット線BL0~BL15はそれぞれ、例えば、カラムアドレスCADD0~CADD15に対応するものとする。
【0135】
図12に示すように、ECC回路34は、上位ページの訂正前データ(訂正前上位データ)から、カラムアドレスCADD1、CADD2、CADD4、CADD7、CADD8、CADD11、CADD13、及びCADD14をエラー位置として検出する。また、ECC回路34は、下位ページの訂正前データ(訂正前下位データ)から、カラムアドレスCADD2、CADD3、CADD6、CADD7、CADD8、CADD9、CADD12、及びCADD13をエラー位置として検出する。この結果、読出し電圧補正用バッファメモリ61には、上述したカラムアドレスCADDを示すエラー位置情報が、上位ページ及び下位ページの各々について記憶される。
【0136】
データパターン生成回路62は、読出し電圧補正用バッファメモリ61内の情報に基づき、エラー位置に対応するカラムアドレスCADDについて、例えば“訂正前上位ビット/訂正前下位ビット/訂正後上位ビット/訂正後下位ビット”で示されるデータパターンを生成する。具体的には、データパターン生成回路62は、訂正前データ“11”において上位ビットにエラーが検出されたカラムアドレスCADD1について、データパターン“1101”を生成する。以下同様に、データパターン生成回路62は、カラムアドレスCADD2~CADD4、CADD6~CADD9、CADD11~CADD14についてそれぞれ、データパターン“1100”、“1110”、“0111”、“0100”、“0110”、“0011”、“0001”、“0010”、“1011”、“1001”、及び“1000”を生成する。
【0137】
データパターン生成回路62によって生成された各種データパターンのうち、データパターンマッチ回路63に予め記憶された所定のデータパターンにマッチするデータパターンの数が、複数のビットカウンタ64-1~64-6によってカウントされる。具体的には、データパターンマッチ回路63には、所定のデータパターンとして、例えば、6種類のデータパターン“1101”、“0111”、“0100”、“0001”、“0010”、及び“1000”が予め記憶される。そして、当該6種類の所定のデータパターンの各々にマッチするデータパターンの数が、複数のビットカウンタ64-1~64-6によってカウントされる。
【0138】
図12の例では、ビットカウンタ64-1は、データパターン“1101”の数をカウントし、ビットカウンタ64-2は、データパターン“0111”の数をカウントし、ビットカウンタ64-3は、データパターン“0100”の数をカウントし、ビットカウンタ64-4は、データパターン“0001”の数をカウントし、ビットカウンタ64-5は、データパターン“0010”の数をカウントし、ビットカウンタ64-6は、データパターン“1000”の数をカウントする。
【0139】
続いて、図13を用いて図11におけるステップST35の具体例について説明する。
【0140】
図13の例では、図12に示した6種類の所定のデータパターンのうち、データパターン“1101”及び“0111”についてのカウント値が比較される様子が示される。
【0141】
図4において説明したとおり、データ“11”は“Er”状態を示し、データ“01”は“A”状態を示す。このため、所定のデータパターン“1101”に対応するビットカウンタ64-1のカウント値は、“A”状態として書き込まれたデータが“Er”状態として誤って読み出されたメモリセル数(図13(A)~図13(C)における領域(a)の面積)に相当する。また、所定のデータパターン“0111”に対応するビットカウンタ64-2のカウント値は、“Er”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数(図13(A)~図13(C)における領域(b)の面積)に相当する。
【0142】
図13(A)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧Voptと等しい場合が示される。図13(A)の場合、ビットカウンタ64-1のカウント値と、ビットカウンタ64-2のカウント値とは、等しくなる。この場合、エラービット数E12(2つのビットカウンタ64-1及び64-2のカウント値の和)は最小となることが期待されるため、補正量算出回路65は、読出し電圧VAが更新不要であると判定する。つまり、補正量算出回路65は、“0”の補正量ΔVAを算出する(ΔVA=0)。
【0143】
図13(B)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧Voptよりも高電圧側に位置する場合が示される。図13(B)の場合、ビットカウンタ64-1のカウント値は、ビットカウンタ64-2のカウント値よりも多くなる。この場合、エラービット数E12は、図13(A)の場合のエラービット数E12よりも多くなり、好ましくない。このため、補正量算出回路65は、読出し電圧VAを電圧Voptに近づけるように、低電圧側にシフトさせる。つまり、補正量算出回路65は、負の補正量ΔVAを算出する(ΔVA<0)。
【0144】
図13(C)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧Voptよりも低電圧側に位置する場合が示される。図13(C)の場合、ビットカウンタ64-1のカウント値は、ビットカウンタ64-2のカウント値よりも少なくなる。この場合、エラービット数E12は、図13(A)の場合のエラービット数E12よりも多くなり、好ましくない。このため、補正量算出回路65は、読出し電圧VAを電圧Voptに近づけるように、高電圧側にシフトさせる。つまり、補正量算出回路65は、正の補正量ΔVAを算出する(ΔVA>0)。
【0145】
なお、ビットカウンタ64-1及び64-2のカウント値の差の絶対値は、読出し電圧VAが閾値電圧Voptから離れるほど大きくなることが期待される。このため、補正量算出回路65は、読出し電圧VAの補正量ΔVAを、ビットカウンタ64-1及び64-2のカウント値の比の大きさに応じて決定する。これにより、閾値電圧分布の重複の度合いに応じて適切な補正量を決定することができ、理想的な電圧Voptに近づくように補正量ΔVAを算出することができる。
【0146】
なお、図示は省略されるが、他の読出し電圧VB及びVCについても、読出し電圧VAの場合と同様に補正量ΔVB及びΔVCが算出される。
【0147】
すなわち、所定のデータパターン“0100”に対応するビットカウンタ64-3のカウント値は、“B”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数に相当する。所定のデータパターン“0001”に対応するビットカウンタ64-4のカウント値は、“A”状態として書き込まれたデータが“B”状態として誤って読み出されたメモリセル数に相当する。このため、補正量算出回路65は、ビットカウンタ64-3及び64-4のカウント値の比の大きさに応じて、読出し電圧VBの補正量ΔVAを決定する。
【0148】
同様に、所定のデータパターン“0010”に対応するビットカウンタ64-5のカウント値は、“C”状態として書き込まれたデータが“B”状態として誤って読み出されたメモリセル数に相当する。所定のデータパターン“1000”に対応するビットカウンタ64-6のカウント値は、“B”状態として書き込まれたデータが“C”状態として誤って読み出されたメモリセル数に相当する。このため、補正量算出回路65は、ビットカウンタ64-5及び64-6のカウント値の比の大きさに応じて、読出し電圧VCの補正量ΔVCを決定する。
【0149】
以上のように動作することにより、代表セルユニットCUから読み出されたデータに基づいて、代表補正量情報21に記憶される代表補正量ΔVA~ΔVCが更新される。
【0150】
1.2.2 ホスト読出し処理
次に、第1実施形態に係るメモリシステムにおけるホスト読出し処理について説明する。
【0151】
図14は、第1実施形態に係るメモリシステムにおけるホスト読出し処理を示すフローチャートである。
【0152】
図14に示すように、ステップST41において、メモリコントローラ30は、ホスト機器2からの読出し要求を受けると、当該読出し要求に応じて代表補正量情報21を参照し、読出し対象ページが属するグループGrの代表補正量を取得する。
【0153】
ステップST42において、メモリコントローラ30は、ホスト読出し処理に使用する読出し電圧について、換算情報22を使用するか否かを判定する。換算情報22を使用する場合(ステップST42;yes)、処理はステップST43に進む。
【0154】
ステップST43において、メモリコントローラ30は、換算情報22に基づき、換算補正量を算出する。具体的には、メモリコントローラ30は、代表セルユニットCU、及び読出し対象ページの各々を特定する情報と、代表補正量とを換算情報22に入力し、出力として換算補正量を得る。
【0155】
ステップST44において、メモリコントローラ30は、読出し対象ページに対して、ステップST43において取得した換算補正量を適用したホスト読出し処理を実行する。具体的には、メモリコントローラ30は、上述したホスト読出し処理を実行する旨のコマンドセットを発行し、NANDフラッシュメモリ10に送出する。NANDフラッシュメモリ10は、当該コマンドセットを受けると、換算補正量が適用された読出し電圧を使用して読出し対象ページからデータを読み出し、メモリコントローラ30に出力する。その後、処理はステップST46に進む。
【0156】
一方、ホスト読出し処理に使用する読出し電圧に換算情報22を使用しない場合(ステップST42;no)、処理はステップST45に進む。
【0157】
ステップST45において、メモリコントローラ30は、読出し対象ページに対して、ステップST41において取得した代表補正量を適用したホスト読出し処理を実行する。具体的には、メモリコントローラ30は、上述したホスト読出し処理を実行する旨のコマンドセットを発行し、NANDフラッシュメモリ10に送出する。NANDフラッシュメモリ10は、当該コマンドセットを受けると、代表補正量が適用された読出し電圧を使用して読出し対象ページからデータを読み出し、メモリコントローラ30に出力する。その後、処理はステップST46に進む。
【0158】
ステップST46において、メモリコントローラ30内のECC回路34は、ステップST44又はST46において読み出されたデータに対してエラー訂正処理を実行する。これにより、読出しデータに含まれるエラーが訂正される。
【0159】
ステップST47において、メモリコントローラ30は、エラー訂正後の読出しデータをホスト機器2に出力する。
【0160】
以上により、ホスト読出し処理が終了する。
【0161】
1.3 本実施形態に係る効果
第1実施形態によれば、代表補正量情報21は、グループGr毎に代表補正量を記憶する。メモリコントローラ30は、パトロール処理の際、代表補正量を使用してパトロール読出し処理を実行し、当該代表補正量を新たな代表補正量に更新する。メモリコントローラ30は、ホスト読出し処理の際、読出し対象ページが属するグループGrに関連づけられた代表補正量に基づき、当該ホスト読出し処理に使用される補正量を決定する。これにより、代表補正量情報21に全てのセルユニットCUに対する補正量を個別に記憶することなく、代表セルユニットCU以外のセルユニットCUに対して、適切な読出し電圧を設定することができる。このため、読出しデータに含まれるエラービット数の増加を抑制しつつ、DRAM20のメモリ容量の増加を抑制することができる。加えて、補正量を決定するためのパトロール処理を全てのセルユニットCUに対して実行する必要がなくなるため、パトロール処理の回数を低減できる。したがって、パトロール処理によるメモリシステム1の負荷の増加を抑制することができる。
【0162】
具体的には、メモリコントローラ30は、隣り合う閾値電圧分布の重複度合いが一群のセルユニットCUでほぼ同等と見なせる場合、これら一群のセルユニットCUを同一のグループGrに分類する。これにより、メモリコントローラ30は、当該グループGr内のセルユニットCUに対するホスト読出し処理の際には、代表補正量をそのまま適用することができる。このため、当該グループGrに対して記憶すべき補正量をセルユニットCU1つ分に抑制することができる。
【0163】
また、メモリコントローラ30は、或るセルユニットCUにおける隣り合う閾値電圧分布の重複度合いに基づいて、他のセルユニットCUにおける隣り合う閾値電圧分布の重複度合いを予測できる場合、これら一群のセルユニットCUを同一のグループGrに分類し、予測式を換算情報22として記憶する。これにより、メモリコントローラ30は、代表補正量に換算情報22を適用することにより、当該グループGr内の任意のセルユニットCUの補正量を換算補正量として取得することができる。このため、当該グループGrに対して記憶すべき補正量をセルユニットCU1つ分に抑制することができる。
【0164】
なお、上述の通り、上部ピラーUMP及び下部ピラーLMPの両端部では、他の部分と比較して閾値電圧の変動の仕方が顕著に異なり得る。この場合、メモリコントローラ30は、グループGrに含めるセルユニットCUを当該端部に位置するセルユニットCUに限定する。このように、代表補正量の流用又は換算が適用可能な範囲を、セルユニットCUのメモリピラーMPに対する物理的な位置関係(例えば、ワード線WL又はストリングユニットSU)に応じて設定することにより、ホスト読出し処理に適用する補正量の精度を調整することができる。
【0165】
また、読出し電圧補正回路37のデータパターン生成回路62は、訂正前データと、エラービットのカラムアドレスとに基づいて、エラーが発生したカラムアドレスについてのみ、訂正前データ及び訂正後データを連結したデータパターンを生成する。これにより、読出し電圧補正用バッファメモリ61に全てのカラムアドレスについてのデータパターンを記憶することを回避できる。このため、読出し電圧補正用バッファメモリ61の容量の増加を抑制できる。
【0166】
また、補正量算出回路65は、生成されたデータパターンのうち、所定のデータパターンにマッチするデータパターンのカウント値同士を比較し、その比較結果に基づいて補正量を算出する。これにより、閾値電圧分布の重複度合いに応じて補正量の大きさを増減させることができる。このため、当該補正量を適用した読出し電圧を、理想的な読出し電圧Voptに近づけることができる。
【0167】
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態では、DRAM20が代表補正量を直接記憶しない点において、第1実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0168】
2.1 メモリシステムの構成
図15は、第2実施形態に係るメモリシステムの構成を示すブロック図であり、第1実施形態における図1に対応する。
【0169】
図15に示すように、DRAM20は、パトロール処理の結果をホスト読出し処理に適用するための情報として、代表インデックス情報21A、換算情報22、及びコードブック23を記憶する。
【0170】
まず、代表インデックス情報21Aの構成について説明する。
【0171】
代表インデックス情報21Aは、パトロール読出し処理の結果に基づいて算出された読出し電圧の補正量を圧縮した情報(インデックス)を記憶する情報である。代表インデックス情報21Aには、NANDフラッシュメモリ10内の全てのメモリセルのうち、所定のメモリセルに対する補正量を圧縮したインデックスが、代表インデックスとして記憶される。
【0172】
図16は、第2実施形態に係るメモリシステムの代表インデックス情報の一例を示す概念図である。図16に示すように、代表インデックス情報21Aには、各代表セルユニットCUについて算出された読出し電圧VAの代表補正量ΔVA、読出し電圧VBの代表補正量ΔVB、及び読出し電圧VCの代表補正量ΔVCの組を圧縮して得られる代表インデックスIDが記憶される。
【0173】
図16の例では、チップChip0のブロックBLK0内のグループGr0に割り当てられた代表セルユニットCUの代表インデックスとして、ID0が記憶される。同様に、チップChip0のブロックBLK0内のグループGr1~Gr4に割り当てられた代表セルユニットCUの代表インデックスとして、それぞれID1~ID4が記憶される。
【0174】
以上のような構成により、グループGrと、代表セルユニットCUに適用される読出し電圧VA~VCを圧縮した代表インデックスIDとが、一意に対応づけられる。
【0175】
次に、コードブック23の構成について説明する。
【0176】
コードブック23は、補正量を対応するインデックスに圧縮する際、及びインデックスを対応する補正量に伸張する際に用いられる、補正量とインデックスとの対応関係を含む情報である。
【0177】
図17は、第2実施形態に係るメモリシステムのコードブックの一例を示す概念図である。図17に示すように、インデックスID0は、補正量ΔVA0、ΔVB0、及びΔVC0の組に対応づけられる。同様に、インデックスID1~ID4はそれぞれ、補正量ΔVA1~ΔVC1の組、補正量ΔVA2~ΔVC2の組、補正量ΔVA3~ΔVC3の組、及び補正量ΔVA4~ΔVC4の組に対応づけられる。
【0178】
以上のような構成により、コードブック23と代表インデックス情報21Aとを組み合わせることにより、第1実施形態における代表補正量情報21と同等の対応関係を得ることができる。
【0179】
なお、コードブック23は、圧縮及び伸張によって補正量を復元可能に構成されてもよく、復元不可能に構成されてもよい。コードブック23が補正量を復元不可能に構成される場合、補正量は、コードブック23による変換処理の前後で異なり得る(変換誤差が生じ得る)。
【0180】
2.2 パトロール処理
次に、第2実施形態に係るメモリシステムにおけるパトロール処理について説明する。
【0181】
図18は、第2実施形態に係るメモリシステムにおけるパトロール処理を示すフローチャートであり、第1実施形態における図10に対応する。図18は、図10のステップST12及びST16に代えてステップST12A及びST16Aを有し、ステップST12AとステップST13との間にステップST12pを有し、ステップST15とステップST16Aとの間にステップST15pを有する。
【0182】
図18に示すように、ステップST11において、メモリコントローラ30は、変数i、j、及びkを“0”に初期化する(i=j=k=0)。
【0183】
ステップST12Aにおいて、メモリコントローラ30は、代表インデックス情報21Aを参照し、チップChip_iのブロックBLKjにおけるグループGr_kの代表インデックスを取得する。例えば、i=j=k=0の場合、図16によれば、メモリコントローラ30は、代表インデックスID0を取得する。
【0184】
ステップST12pにおいて、メモリコントローラ30は、ステップST12Aにおいて取得した代表インデックスをコードブック23に基づいて伸張し、代表補正量を取得する。
【0185】
ステップST13~ST15において、メモリコントローラ30は、代表補正量に基づいてパトロール読出し処理を実行し、得られた訂正前データに対してエラー検出処理を実行する。そして、メモリコントローラ30は、補正量算出処理を実行し、新たな代表補正量を算出する。ステップST13~ST15については、図10におけるステップST13~ST15と同等であるため、具体的な説明を省略する。
【0186】
ステップST15pにおいて、メモリコントローラ30は、ステップST15において算出した新たな代表補正量をコードブック23に基づいて圧縮し、新たな代表インデックスを取得する。新たな代表インデックスの取得処理の詳細については、後述する。
【0187】
ステップST16Aにおいて、メモリコントローラ30は、代表インデックス情報21A内のチップChip_iのブロックBLKjにおけるグループGr_kの代表セルユニットCUに対応する代表インデックスを、ステップST15pにおいて取得された新たな代表インデックスに更新する。
【0188】
ステップST17~ST22において、メモリコントローラ30は、NANDフラッシュメモリ10内の全てのグループGrに対するパトロール処理が完了させる。ステップST17~ST22については、図10におけるステップST17~ST22と同等であるため、説明を省略する。
【0189】
以上のように動作することにより、パトロール処理が終了する。
【0190】
2.3 新たな代表インデックスの取得処理
次に、第2実施形態に係るメモリシステムにおける新たな代表インデックスの取得処理のいくつかの例について、説明する。
【0191】
2.3.1 第1例
まず、新たな代表インデックスの取得処理の第1例について説明する。第1例では、新たな代表補正量とコードブック23内の補正量との差の絶対値の読出しレベル毎の和が評価値として使用される。そして、メモリコントローラ30は、当該評価値を最小にするインデックスをコードブック23内から抽出し、新たなインデックスとして取得する。
【0192】
図19は、第2実施形態に係るメモリシステムにおける新たな代表インデックスの取得処理を示すフローチャートであり、図18におけるステップST15pに対応する。
【0193】
図19に示すように、ステップST51において、メモリコントローラ30は、図18のステップST15において算出された新たな代表補正量ΔVA、ΔVB、及びΔVCを取得する。
【0194】
ステップST52において、メモリコントローラ30は、変数xを“0”に初期化する(x=0)。
【0195】
ステップST53において、メモリコントローラ30は、新たな代表補正量ΔVA~ΔVC、及びコードブック23内のインデックスIDxに対応する補正量ΔVAx~ΔVCxに基づいて、以下の式に示される評価値Dxを算出する。
【0196】
Dx=|ΔVA-ΔVAx|+|ΔVB-ΔVBx|+|ΔVC-ΔVCx|
ステップST54において、メモリコントローラ30は、全てのインデックスについて評価値Dxを算出したか否かを判定する。
【0197】
評価値Dxを算出していないインデックスがある場合(ステップST54;no)、処理はステップST55に進む。ステップST55において、メモリコントローラ30は、変数xをインクリメントする。その後、処理はステップST53に戻る。これにより、全てのインデックスについて評価値Dxが算出されるまで、ステップST53~ST55が繰り返される。
【0198】
全てのインデックスについて評価値Dxが算出された場合(ステップST54;yes
)、処理はステップST56に進む。ステップST56において、メモリコントローラ30は、評価値Dxを最小にする変数xminを判定する。
【0199】
ステップST57において、メモリコントローラ30は、コードブック23を参照し、ステップST56において判定されたxminに対応するインデックスIDxminを新たな代表インデックスとして取得する。
【0200】
以上により、新たな代表インデックスの取得処理が終了する。
【0201】
2.3.2 第2例
次に、新たな代表インデックスの取得処理の第2例について説明する。第2例では、新たな代表補正量とコードブック23内の補正量との差の絶対値を読出しレベル毎に重み付けしたものの和が評価値として使用される。そして、メモリコントローラ30は、当該評価値を最小にするインデックスをコードブック23内から抽出し、新たなインデックスとして取得する。
【0202】
図20は、第2実施形態に係るメモリシステムにおける新たな代表インデックスの取得処理の第2例を示すフローチャートであり、図19に対応する。以下では、図19と異なる処理について主に説明する。
【0203】
図20に示すように、ステップST51において、メモリコントローラ30は、図18のステップST15において算出された新たな代表補正量ΔVA、ΔVB、及びΔVCを取得する。
【0204】
ステップST51pにおいて、メモリコントローラ30は、重み係数W、W、及びWを設定する。重み係数W~Wは、予め定められた定数であってもよいし、新たな代表インデックス取得処理毎に適応的に設定されてもよい。重み係数W~Wが新たな代表インデックス取得処理毎に適応的に設定される場合における重み係数設定算出の詳細については、後述する。
【0205】
ステップST52において、モリコントローラ30は、変数xを“0”に初期化する(x=0)。
【0206】
ステップST53Aにおいて、メモリコントローラ30は、新たな代表補正量ΔVA~ΔVC、重み係数W~W、及びコードブック23内のインデックスIDxに対応する補正量ΔVAx~ΔVCxに基づいて、以下の式に示される評価値Dxを算出する。
【0207】
Dx=W|ΔVA-ΔVAx|+W|ΔVB-ΔVBx|+W|ΔVC-ΔVCx|
ステップST54~ST57の処理は、図19におけるステップST54~ST57の処理と同等であるため,説明を省略する。
【0208】
以上により、新たな代表インデックスの取得処理が終了する。
【0209】
図21は、第2実施形態に係るメモリシステムにおける重み係数設定処理を示すフローチャートであり、図20におけるステップST51pに対応する。図21では、重み係数を動的に設定する処理の一例として、ビットカウンタ64によってカウントされたエラービット数の比率に基づいて重み係数が設定される場合が示される。
【0210】
図21に示すように、ステップST61において、メモリコントローラ30は、重み係数をW~Wの中から設定する重み係数を選択する。
【0211】
ステップST62において、メモリコントローラ30は、ステップST61において選択した重み係数に対応する2つのビットカウンタ64のカウント値Nα及びNβを取得する。具体的には、例えば、読出し電圧VAに対応する重み係数Wが選択された場合には、メモリコントローラ30は、ビットカウンタ64-1及び64-2のカウント値をそれぞれカウント値Nα及びNβとして取得する。読出し電圧VBに対応する重み係数Wが選択された場合には、メモリコントローラ30は、ビットカウンタ64-3及び64-4のカウント値をそれぞれカウント値Nα及びNβとして取得する。読出し電圧VCに対応する重み係数Wが選択された場合には、メモリコントローラ30は、ビットカウンタ64-5及び64-6のカウント値をそれぞれカウント値Nα及びNβとして取得する。
【0212】
ステップST63において、メモリコントローラ30は、カウント値Nα及びNβの和が閾値N1より大きいか否かを判定する。閾値N1は、例えば、200である。
【0213】
カウント値Nα及びNβの和が閾値N1以下の場合(ステップST63;no)、処理はステップST64に進む。ステップST64において、メモリコントローラ30は、選択した重み係数にW1を設定する。重み係数W1は、例えば10である。ステップST64の後、処理はステップST68に進む。
【0214】
カウント値Nα及びNβの和が閾値N1より大きい場合(ステップST63;yes)、処理はステップST65に進む。ステップST65において、メモリコントローラ30は、カウント値Nα及びNβの各々が閾値N2より大きいか否かを判定する。閾値N2は、閾値N1より小さい値であり、例えば、110である。
【0215】
カウント値Nα及びNβの各々が閾値N2より大きい場合(ステップST65;yes)、処理はステップST66に進む。ステップST66において、メモリコントローラ30は、選択した重み係数にW2を設定する。重み係数W2は、重み係数W1より大きく、例えば50である。ステップST66の後、処理はステップST68に進む。
【0216】
カウント値Nα及びNβのいずれかが閾値N2以下の場合(ステップST65;no)、処理はステップST67に進む。ステップST67において、メモリコントローラ30は、選択した重み係数にW3を設定する。重み係数W3は、重み係数W2より大きく、例えば100である。ステップST67の後、処理はステップST68に進む。
【0217】
ステップST68において、メモリコントローラ30は、全ての重み係数を選択したか否かを判定する。選択していない重み係数がある場合(ステップST68;no)、処理はステップST61に戻る。これにより、全ての重み係数が選択されるまで、ステップST61~ST68が繰り返される。全ての重み係数が選択された場合(ステップST68;yes)、重み係数設定処理は終了する。
【0218】
以上のように動作することにより、隣り合う閾値電圧分布の重複する領域の大きさ、及び隣り合う閾値電圧分布の重複の偏りの大きさに応じて、大きな重み係数を設定することができる。
【0219】
以上、新たな代表インデックス取得処理のいくつかの例について説明したが、上述した例はあくまで一例であり、これらに限定されるものではない。
【0220】
2.4 ホスト読出し処理
次に、第2実施形態に係るメモリシステムにおけるホスト読出し処理について説明する。
【0221】
図22は、第2実施形態に係るメモリシステムにおけるホスト読出し処理を示すフローチャートであり、第1実施形態における図14に対応する。図22は、図14のステップST41に代えてステップST41Aを有し、ステップST41AとステップST42との間にステップST41pを有する。
【0222】
図22に示すように、ステップST41Aにおいて、メモリコントローラ30は、ホスト機器2からの読出し要求を受けると、当該読出し要求に応じて代表インデックス情報21Aを参照し、読出し対象ページが属するグループGrの代表インデックスを取得する。
【0223】
ステップST41pにおいて、メモリコントローラ30は、ステップST41Aにおいて取得した代表インデックスをコードブック23に基づいて伸張し、代表補正量を取得する。
【0224】
ステップST42~ST47において、メモリコントローラ30は、代表補正量に基づいてホスト読出し処理に使用する補正量を決定し、当該補正量を使用してNANDフラッシュメモリ10から読み出したデータをホスト機器2に出力する。ステップST42~ST47については、図14におけるステップST42~ST47と同等であるため、説明を省略する。
【0225】
以上のように動作することにより、ホスト読出し処理が終了する。
【0226】
2.5 本実施形態に係る効果
第2実施形態によれば、代表インデックス情報21Aは、グループGr毎に代表インデックスを記憶する。コードブック23は、インデックスと、補正量とを対応づけて記憶する。メモリコントローラ30は、パトロール処理の際、代表インデックスを伸張して得られた代表補正量を使用してパトロール読出し処理を実行し、新たな代表補正量を算出する。そして、メモリコントローラ30は、代表インデックスを、当該新たな代表補正量を圧縮して得られた新たな代表インデックスに更新する。また、メモリコントローラ30は、ホスト読出し処理の際、読出し対象ページが属するグループGrに関連づけられた代表インデックスを伸張して得られた代表補正量に基づき、当該ホスト読出し処理に使用される補正量を決定する。これにより、グループGr毎の代表補正量を記憶するために必要な容量を代表インデックス情報21A及びコードブック23の容量に抑えつつ、パトロール処理及びホスト読出し処理の際に適切な補正量を各グループGr内の各セルユニットCUに適用することができる。このため、読出しデータに含まれるエラービット数の増加を抑制しつつ、DRAM20のメモリ容量の増加を抑制することができる。
【0227】
補足すると、NANDフラッシュメモリ10内のいくつかのグループGrの代表補正量は、同等の値となり得る。この場合、当該同等の値となる代表補正量を、当該いくつかのグループGr毎に記憶するよりも、代表補正量を圧縮した代表インデックスとして記憶した方が、DRAM20に占める容量を低減できる。このため、パトロール処理によるメモリシステム1の負荷の増加を抑制することができる。
【0228】
3. 第3実施形態
次に、第3実施形態に係るメモリシステムについて説明する。第3実施形態は、換算補正量の第1候補を適用したホスト読出し処理において読み出されたデータのエラービット数が多い場合に、換算補正量の第2候補を適用したホスト読出し処理が実行される点において、第1実施形態及び第2実施形態と異なる。以下の説明では、第2実施形態と同等の構成及び動作については説明を省略し、第2実施形態と異なる構成及び動作について主に説明する。
【0229】
3.1 ホスト読出し処理
図23は、第3実施形態のメモリシステムにおけるホスト読出し処理を示すフローチャートであり、第2実施形態の図22に対応する。図23は、図22のステップST46とステップST47との間にステップST71~ST78を有する。なお、図23では、説明の便宜上、ステップST42及びST45が省略されて示される。すなわち、図23では、換算情報22を使用する場合のホスト読出し処理が示される。
【0230】
図23に示すように、ステップST41A~ST46において、読出し対象ページから換算補正量を使用して読み出された訂正前ページに対して、エラー訂正処理を実行する。ステップST41A~ST46については、図22におけるステップST41A~ST46と同等であるため、説明を省略する。なお、説明の便宜上、ステップST43において算出され、ステップST44においてホスト読出し処理に適用される換算補正量は、換算補正量の第1候補と呼ぶ。
【0231】
ステップST71において、メモリコントローラ30は、ステップST46におけるエラー訂正処理が成功したか否か(すなわち、訂正前データに含まれる全てのエラービットを訂正できたか否か)を判定する。
【0232】
ステップST46におけるエラー訂正処理に成功した場合(ステップST71;yes)、処理はステップST72に進む。ステップST72において、メモリコントローラ30は、エラー訂正処理によって訂正されたエラービット数は閾値以上であるか否かを判定する。エラービット数が閾値以上である場合(ステップST72;yes)、メモリコントローラ30は、例えば、読出し対象ページを含むセルユニットCUを対象(第2候補算出準備処理対象セルユニットCU)とする換算補正量の第2候補を算出するための準備処理(第2候補算出準備処理)の実行を予約する(ステップST73)。ステップST73の後、処理はステップST47に進む。
【0233】
なお、第2候補算出準備処理は、換算補正量の第1候補を算出する際に適用される換算情報、コードブック、及び代表インデックス等のパラメタの第1候補をパラメタの第2候補に変更することにより、補正量を適正値に近づけ、訂正前データに含まれるエラービット数の低減を試みる処理である。第2候補算出準備処理の適用可能範囲は、任意に設定可能であるが、少なくとも第2候補算出準備処理対象セルユニットCUが属するグループGrを含む。予約済みの第2候補算出準備処理は、ステップST47におけるホスト機器2への読出しデータの出力時期とは関係なく任意の時期に実行される。例えば、予約済みの第2候補算出準備処理は、ステップST47におけるホスト機器2への読出しデータの出力後の任意の時期に実行される。第2候補算出準備処理の詳細については、後述する。
【0234】
一方、ステップST46におけるエラー訂正処理に失敗した場合(ステップST71;no)、処理はステップST74に進む。ステップST74において、メモリコントローラ30は、読出し対象ページが属するグループGrに適用可能な第2候補算出準備処理が実行済みであるか否かを判定する。上述の通り、第2候補算出準備処理の適用可能範囲は、少なくとも第2候補算出準備処理対象セルユニットCUが属するグループGrを含む。このため、読出し対象ページが属するセルユニットCUにおいて第2候補算出準備処理が実行されていなくても、同一のグループGr内の他のセルユニットCUにおいて第2候補算出準備処理が実行されていれば、メモリコントローラ30は、第2候補算出準備処理が実行済みであると判定し得る。
【0235】
第2候補算出準備処理が実行済みである場合(ステップST74;yes)、処理はステップST75に進み、第2候補算出準備処理が実行済みでない場合(ステップST74;no)、処理はステップST78に進む。
【0236】
ステップT75において、メモリコントローラ30は、第2候補算出準備処理の結果を適用して、読出し対象ページに対するホスト読出し処理を実行する。これにより、ステップST44とは異なる補正量が適用されたホスト読出し処理が実行される。
【0237】
ステップST76において、メモリコントローラ30内のECC回路34は、ステップST75において読み出されたデータに対してエラー訂正処理を実行する。これにより、読出しデータに含まれるエラーが訂正される。
【0238】
ステップST77において、メモリコントローラ30は、ステップST76におけるエラー訂正処理が成功したか否かを判定する。ステップST76におけるエラー訂正処理に成功した場合(ステップST77;yes)、処理はステップST47に進み、ステップST76におけるエラー訂正処理に失敗した場合(ステップST77;no)、処理はステップST78に進む。
【0239】
ステップST78において、メモリコントローラ30は、リトライ処理を実行する。リトライ処理は、例えば、エラー訂正処理に失敗したデータを回復するために、複数回の読出し処理を実行する処理である。リトライ処理では、当該複数回の読出し処理にそれぞれ異なる読出し電圧が使用されることによって読み出された複数の読出しデータに基づいて、軟判定復号などが実行され得る。
【0240】
ステップST47において、メモリコントローラ30は、エラー訂正後の読出しデータをホスト機器2に出力する。
【0241】
以上により、ホスト読出し処理が終了する。
【0242】
なお、図23の例では、換算補正量の第1候補を適用してホスト読出し処理を実行した後、換算補正量の第2候補を適用してホスト読出し処理を実行する場合について説明したが、これに限られない。例えば、メモリコントローラ30は、換算補正量の第1候補を適用したホスト読出し処理のエラー訂正の成否に関わらず、換算補正量の第1候補を適用したホスト読出し処理と、換算補正量の第2候補を適用したホスト読出し処理と、を両方実行してもよい。
【0243】
3.2 第2候補算出準備処理
次に、第3実施形態に係るメモリシステムにおける第2候補算出準備処理のいくつかの例について、説明する。
【0244】
3.2.1 第1例(換算情報の変更)
まず、第2候補算出準備処理の第1例について説明する。第1例では、換算情報22を第1候補から第2候補に変更することにより、エラービット数の低減が図られる。
【0245】
図24は、第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第1例を示すフローチャートである。
【0246】
図24に示すように、ステップST81において、メモリコントローラ30は、代表インデックス情報21Aを参照し、第2候補算出準備処理対象セルユニットCUが属するグループGrの代表インデックスを取得する。
【0247】
ステップST82において、メモリコントローラ30は、ステップST81において取得した代表インデックスをコードブック23に基づいて伸張し、代表補正量を取得する。
【0248】
ステップST83において、メモリコントローラ30は、代表セルユニットCU、及び第2候補算出準備処理対象セルユニットCUの各々を特定する情報と、代表補正量とを換算情報22に入力し、出力として換算補正量を得る。ステップST83で使用される換算情報22は、換算情報の第1候補である。
【0249】
ステップST84において、メモリコントローラ30は、第2候補算出準備処理対象セルユニットCUに対して、ステップST83において取得した換算補正量を適用したパトロール読出し処理を実行する。パトロール読出し処理は、第2実施形態の図18のステップST13におけるパトロール読出し処理と、読出し対象のセルユニットCUが異なる点を除いて同等の処理であるため、説明を省略する。
【0250】
ステップST85において、メモリコントローラ30内のECC回路34は、ステップST84において取得された訂正前データに対してエラー検出処理を実行する。ECC回路34は、エラー検出処理によって特定されたエラー位置を含むエラー位置情報を生成し、読出し電圧補正用バッファメモリ61に記憶させる。
【0251】
ステップST86において、読出し電圧補正回路37は、補正量算出処理を実行し、第2候補算出準備処理対象セルユニットCUについての新たな換算補正量を算出する。補正量算出処理は、第2実施形態の図18のステップST15における補正量算出処理と、読出し対象のセルユニットCUが異なる点を除いて同等の処理であるため、説明を省略する。
【0252】
ステップST87において、メモリコントローラ30は、第2候補算出準備処理対象セルユニットCUが属するグループGrの代表補正量と、ステップST86において算出された新たな換算補正量と、に基づき、第2候補算出準備処理対象セルユニットCUが属するグループGrに適用される換算情報22を換算情報の第2候補に設定する。
【0253】
以上のように動作することにより、第2候補算出準備処理が終了する。
【0254】
ステップST87について補足すると、図23のステップST72においてエラービット数が閾値以上と判定されたように、換算情報の第1候補に基づく換算補正量は、第2候補算出準備処理対象セルユニットCUにとって適切な補正量ではない可能性がある。第1例によれば、メモリコントローラ30は、換算情報の第1候補を、代表セルユニットCUにとって適切な代表補正量と、第2候補算出準備処理対象セルユニットCUにとって適切な新たな換算補正量と、のいずれにも整合する換算情報の第2候補に変更する。すなわち、換算情報の第2候補は、代表セルユニットCU及び第2候補算出準備処理対象セルユニットCUの各々を特定する情報と、代表補正量とを入力として、新たな換算補正量を出力することができる。このため、第2候補算出準備処理を実行することにより、図23のステップST75において実行されるホスト読出し処理で読み出されるデータのエラービット数を低減することができる。
【0255】
3.2.2 第2例(コードブックの変更)
次に、第2候補算出準備処理の第2例について説明する。第2例では、コードブック23を変更することにより、エラービット数の低減が図られる。
【0256】
図25は、第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第2例を示すフローチャートである。
【0257】
図25に示すように、ステップST81~ST86において、第2候補算出準備処理対象セルユニットCUに対してパトロール読出し処理及び補正量算出処理を実行し、新たな換算補正量を算出する。ステップST81~ST86については、図24におけるステップST81~ST86と同等であるため、説明を省略する。なお、ステップST82で使用されるコードブック23は、コードブックの第1候補である。
【0258】
ステップST87Aにおいて、メモリコントローラ30は、ステップST83において算出された換算補正量と、ステップST86において算出された新たな換算補正量と、に基づき、第2候補算出準備処理対象セルユニットCUが属するグループGrに適用されるコードブック23をコードブックの第2候補に設定する。
【0259】
以上のように動作することにより、第2候補算出準備処理が終了する。
【0260】
ステップST87Aについて補足すると、換算補正量と新たな換算補正量との間に生じる差は、代表インデックスと代表補正量との間の変換誤差に起因する可能性がある。具体的には、例えば、換算補正量ΔVAと新たな換算補正量ΔVAとの差が顕著に大きい場合、当該差は、コードブックの第1候補におけるインデックス間の補正量ΔVAの刻み幅が大きいことに起因する代表補正量の変換誤差によって発生している可能性がある。第2例によれば、メモリコントローラ30は、第2候補算出準備処理対象セルユニットCUにとって不適切な換算補正量と、第2候補算出準備処理対象セルユニットCUにとって適切な新たな換算補正量と、の差に基づいてコードブックの第2候補を設定する。すなわち、コードブックの第2候補は、ステップST83における換算補正量と、ステップST86における新たな換算補正量との間に有意な差が発生しない程度に、代表補正量と代表インデックスに関連づけられた補正量との間の変換誤差を小さくすることができる。このため、第2候補算出準備処理を実行することにより、図23のステップST75において実行されるホスト読出し処理で読み出されるデータのエラービット数を低減することが期待できる。
【0261】
3.2.3 第3例(代表インデックスの変更)
次に、第2候補算出準備処理の第3例について説明する。第3例では、代表インデックス情報21A内の代表インデックスを変更することにより、エラービット数の低減が図られる。
【0262】
図26は、第3実施形態に係るメモリシステムにおける第2候補算出準備処理の第3例を示すフローチャートである。
【0263】
図26に示すように、ステップST81~ST86において、第2候補算出準備処理対象セルユニットCUに対してパトロール読出し処理及び補正量算出処理を実行し、新たな換算補正量を算出する。ステップST81~ST86については、図24及び図25におけるステップST81~ST86と同等であるため、説明を省略する。なお、ステップST81で使用される代表インデックスは、代表インデックスの第1候補である。
【0264】
ステップST87Bにおいて、メモリコントローラ30は、第2候補算出準備処理対象セルユニットCUを代表セルユニットCUの第2候補とみなす。すなわち、メモリコントローラ30は、ステップST86において算出された新たな換算補正量を代表補正量の第2候補とみなし、当該新たな換算補正量を圧縮して代表インデックスの第2候補を取得する。取得された代表インデックスの第2候補は、第2候補算出準備処理対象セルユニットCU(すなわち代表セルユニットCUの第2候補)に関連づけられて、代表インデックス情報21A内に記憶される。
【0265】
以上のように動作することにより、第2候補算出準備処理が終了する。
【0266】
ステップST87Bについて補足すると、換算情報22及びコードブック23を変更しなくても、換算の起点となる代表インデックスを変更することによって、読出し対象ページにおける換算補正量の誤差を低減することができる場合がある。第3例によれば、メモリコントローラ30は、新たな換算補正量が算出された第2候補算出準備処理対象セルユニットCUを、代表セルユニットCUの第2候補とみなす。これにより、図23のステップST75において実行されるホスト読出し処理の際に、ステップST44において実行されるホスト読出し処理の際に適用された代表補正量と異なる、代表補正量の第2候補を用いることができる。このため、読出し対象ページから読み出されるデータのエラービット数を低減する可能性を高めることができる。
【0267】
3.3 本実施形態に係る効果
第3実施形態によれば、メモリコントローラ30は、ホスト読出し処理によって読み出されたデータのエラービット数が閾値以上の場合、第2候補算出準備処理の実行を予約する。第2候補算出準備処理を実行することにより、メモリコントローラ30は、エラービット数が閾値以上となったホスト読出し処理に使用された換算情報22、コードブック23、及び代表セルユニットCUの少なくともいずれか1つを変更する。これにより、読出し対象ページからのホスト読出し処理に使用される換算補正量を、より適切な値に変更することができる。このため、エラー訂正処理が失敗する可能性を低減することができる。したがって、閾値電圧の変動に伴うメモリシステム1の性能の悪化を抑制することができる。
【0268】
4. 変形例等
上述の第1実施形態乃至第3実施形態は、上述の例に限られず、種々の変形が適用可能である。
【0269】
4.1 第1変形例
例えば、上述した第1実施形態乃至第3実施形態では、換算補正量の取得に際して換算情報22に入力される代表補正量の数が1つである場合について説明したが、これに限られない。例えば、換算情報22に入力される代表補正量の数が2つ以上であってもよい。
【0270】
図27は、第1変形例に係るブロック内のセルユニットのグループ化の一例を示す模式図であり、第1実施形態の図7に対応する。
【0271】
図27に示すように、各グループGrには、代表セルユニットCUが2つ割り当てられていてもよい。図27では、例えば、グループGr1には、ストリングユニットSU2及びワード線WL3の組に対応するセルユニットCUaと、ストリングユニットSU1及びワード線WL4の組に対応するセルユニットCUbと、の2つが代表セルユニットCUとして割り当てられる。
【0272】
この場合、グループGr1に関するパトロール処理では、セルユニットCUaの代表補正量と、セルユニットCUbの代表補正量とがそれぞれ算出され、代表補正量情報21内に個別に記憶される。そして、グループGr1に関するホスト読出し処理では、当該2つの代表補正量が換算情報22に入力され、1つの換算補正量を出力する。
【0273】
これにより、換算補正量の算出精度をより高めることができる。
【0274】
4.2 第2変形例
また、例えば、上述した第1実施形態乃至第3実施形態では、読出し電圧補正用バッファメモリ61が、訂正前データ及びエラー位置情報を記憶する場合について説明したが、これに限られない。例えば、読出し電圧補正用バッファメモリ61は、訂正前データに代えて、訂正後データを記憶してもよい。
【0275】
図28は、第2変形例に係るメモリシステムにおける補正量算出処理を示す模式図であり、第1実施形態の図12に対応する。
【0276】
図28に示すように、ECC回路34は、エラー検出処理及びエラー訂正処理を実行することにより、それぞれエラー位置情報及び訂正後データを生成し、読出し電圧補正用バッファメモリ61に記憶する。ECC回路34によるエラー訂正処理の後、訂正前データについては、読出し電圧補正用バッファメモリ61に記憶されることなく、破棄される。
【0277】
データパターン生成回路62は、例えば、カラムアドレスCADD1の訂正後データ“01”が、上位ビットのエラーが訂正されたことによって生成されたことを認識する。これにより、データパターン生成回路62は、カラムアドレスCADD1について、データパターン“1101”を生成する。以下同様に、データパターン生成回路62は、カラムアドレスCADD2~CADD4、CADD6~CADD9、CADD11~CADD14についてそれぞれ、データパターン“1100”、“1110”、“0111”、“0100”、“0110”、“0011”、“0001”、“0010”、“1011”、“1001”、及び“1000”を生成する。
【0278】
以上のように、訂正前データに代えて訂正後データを用いた場合でも、訂正前データが使用される場合と同等のメモリサイズの読出し電圧補正用バッファメモリ61によって、訂正前データが使用される場合と同等の補正量算出処理を実行することができる。
【0279】
4.3 その他
上述の第1実施形態乃至第3実施形態では、1つのメモリセルトランジスタMTに2ビットのデータを記憶可能な場合について説明したが、これに限られず、3ビット、4ビット、又は5ビット以上のデータを記憶可能な場合についても、同様に適用可能である。なお、メモリセルトランジスタMTに記憶可能なデータのビット数がnビットの場合、閾値電圧分布の数は、2^n個になる。このため、ビットカウンタ64の数は、当該閾値電圧分布の数に応じて、(2^n-1)×2個設けられる。
【0280】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0281】
1…メモリシステム、2…ホスト機器、10…不揮発性メモリ、11…入出力回路、12…レジスタセット、12A…ステータスレジスタ、12B…アドレスレジスタ、12C…コマンドレジスタ、13…ロジックコントローラ、14…シーケンサ、15…レディ/ビジー制御回路、16…電圧生成回路、17…メモリセルアレイ、18…ロウデコーダモジュール、19…センスアンプモジュール、20…揮発性メモリ、21…代表補正量情報、21A…代表インデックス情報、22…換算情報、23…コードブック、30…メモリコントローラ、31…プロセッサ、32…バッファメモリ、33…ホストインタフェース回路、34…ECC回路、35…NANDインタフェース回路、36…DRAMインタフェース回路、37…読出し電圧補正回路、40…半導体基板、41,42,43,44,45,46,47…導電体層、50…コア膜、51…半導体膜、52…積層膜、52a…トンネル絶縁膜、52b…電荷蓄積膜、52c…ブロック絶縁膜、53…半導体部、61…読出し電圧補正用バッファメモリ、62…データパターン生成回路、63…データパターンマッチ回路、64…ビットカウンタ、65…補正量算出回路。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28