(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024115311
(43)【公開日】2024-08-26
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20240819BHJP
G11C 16/04 20060101ALI20240819BHJP
G11C 16/08 20060101ALI20240819BHJP
G11C 16/26 20060101ALI20240819BHJP
G06F 11/10 20060101ALI20240819BHJP
【FI】
G06F12/00 560F
G11C16/04 170
G11C16/08 120
G11C16/26 100
G06F12/00 597U
G06F11/10 662
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023020942
(22)【出願日】2023-02-14
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】武田 奈穂美
(72)【発明者】
【氏名】白川 政信
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160MM20
5B225BA01
5B225BA19
5B225DA10
5B225DE08
5B225EA05
5B225FA01
(57)【要約】
【課題】高精度に読出し電圧を推定する。
【解決手段】一実施形態のメモリシステムは、各々が複数のメモリセルを含む複数のブロックを含む不揮発性メモリと、第1ブロック内の第1メモリセルから第1読出し電圧を用いてデータを読み出す第1読出し処理、及び第1ブロック内の第2メモリセルから第2読出し電圧を用いてデータを読み出す第2読出し処理を実行するメモリコントローラと、を備える。メモリコントローラは、第1条件が満たされると、第1読出し電圧及び第2読出し電圧の差を第1値に維持し、第1読出し電圧及び第2読出し電圧をいずれも変更し、第1条件が満たされた後に第2条件が満たされると、第1読出し電圧及び第2読出し電圧の差を第1値から第1値と異なる第2値に変更し、第1読出し電圧及び第2読出し電圧の少なくとも一方を変更するように構成される。
【選択図】
図14
【特許請求の範囲】
【請求項1】
各々が複数のメモリセルを含む複数のブロックを含む不揮発性メモリと、
第1ブロック内の第1メモリセルから第1読出し電圧を用いてデータを読み出す第1読出し処理、及び前記第1ブロック内の第2メモリセルから第2読出し電圧を用いてデータを読み出す第2読出し処理を実行するメモリコントローラと、
を備え、
前記メモリコントローラは、
第1条件が満たされると、前記第1読出し電圧及び前記第2読出し電圧の差を第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧をいずれも変更し、
前記第1条件が満たされた後に第2条件が満たされると、前記第1読出し電圧及び前記第2読出し電圧の差を前記第1値から前記第1値と異なる第2値に変更し、前記第1読出し電圧及び前記第2読出し電圧の少なくとも一方を変更する
ように構成される、
メモリシステム。
【請求項2】
第1メモリセル及び第2メモリセルを含む第1ブロック、並びに第3メモリセル及び第4メモリセルを含む第2ブロックを含む不揮発性メモリと、
前記第1メモリセルから第1読出し電圧を用いてデータを読み出す第1読出し処理、前記第2メモリセルから第2読出し電圧を用いてデータを読み出す第2読出し処理、前記第3メモリセルから第3読出し電圧を用いてデータを読み出す第3読出し処理、前記第4メモリセルから第4読出し電圧を用いてデータを読み出す第4読出し処理を実行するメモリコントローラと、
を備え、
前記メモリコントローラは、
前記第1読出し電圧及び前記第2読出し電圧の差を第1値から前記第1値と異なる第2値に変更し、前記第1読出し電圧及び前記第2読出し電圧の少なくとも一方を変更し、
前記第3読出し電圧及び前記第4読出し電圧の差を第3値から前記第3値と異なる第4値に変更し、前記第3読出し電圧及び前記第4読出し電圧の少なくとも一方を変更する
ように構成され、
前記第1値と前記第2値との差は、前記第3値と前記第4値との差と異なる、
メモリシステム。
【請求項3】
前記メモリコントローラは、前記第1読出し電圧及び前記第2読出し電圧の少なくとも一方を変更することと、前記第3読出し電圧及び前記第4読出し電圧の少なくとも一方を変更することとを、独立に実行するように構成される、
請求項2記載のメモリシステム。
【請求項4】
前記メモリコントローラは、
第1条件が満たされると、前記第1読出し電圧及び前記第2読出し電圧の差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧をいずれも変更し、
前記第1条件が満たされた後に第2条件が満たされると、前記第1読出し電圧及び前記第2読出し電圧の差を前記第1値から前記第2値に変更し、前記第1読出し電圧及び前記第2読出し電圧の少なくとも一方を変更する
ように構成される、
請求項2記載のメモリシステム。
【請求項5】
前記メモリコントローラは、前記第1読出し電圧及び前記第2読出し電圧のいずれも変更することと、前記第3読出し電圧及び前記第4読出し電圧のいずれも変更することとを、独立に実行するように構成される、
請求項4記載のメモリシステム。
【請求項6】
前記第1条件は、前記第1メモリセル及び前記第2メモリセルにデータが書き込まれてから第1期間が経過することを含む、
請求項1又は請求項4記載のメモリシステム。
【請求項7】
前記第2条件は、
前記第1メモリセル及び前記第2メモリセルにデータが書き込まれてから前記第1期間より長い第2期間が経過すること、又は
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックからデータが読み出されること、又は
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックから第1閾値以上のフェイルビットを含むデータが読み出されること、
を含む、
請求項6記載のメモリシステム。
【請求項8】
前記第1条件は、前記メモリコントローラが外部のホストからの命令に依らずに前記第1読出し処理を実行することを含む、
請求項1又は請求項4記載のメモリシステム。
【請求項9】
前記第2条件は、
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックからデータが読み出されること、又は
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックから第1閾値以上のフェイルビットを含むデータが読み出されること、
を含む、
請求項8記載のメモリシステム。
【請求項10】
前記第1条件は、前記第1ブロックから第2閾値以上のフェイルビットを含むデータが読み出されることを含む、
請求項1又は請求項4記載のメモリシステム。
【請求項11】
前記第2条件は、
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックからデータが読み出されること、又は
前記差を前記第1値に維持し、前記第1読出し電圧及び前記第2読出し電圧がいずれも変更された後に、前記第1ブロックから第1閾値以上のフェイルビットを含むデータが読み出されること、
を含む、
請求項10記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発性メモリとしてのNANDフラッシュメモリと、不揮発性メモリを制御するメモリコントローラと、を含むメモリシステムが知られている。メモリコントローラは、不揮発性メモリからフェイルビット数の少ないデータを読み出すための適切な読出し電圧を算出する機能を有する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2022/0293204号明細書
【特許文献2】米国特許出願公開第2021/0357289号明細書
【特許文献3】米国特許出願公開第2022/0027083号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
適切な読出し電圧を算出する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、各々が複数のメモリセルを含む複数のブロックを含む不揮発性メモリと、第1ブロック内の第1メモリセルから第1読出し電圧を用いてデータを読み出す第1読出し処理、及び上記第1ブロック内の第2メモリセルから第2読出し電圧を用いてデータを読み出す第2読出し処理を実行するメモリコントローラと、を備える。上記メモリコントローラは、第1条件が満たされると、上記第1読出し電圧及び上記第2読出し電圧の差を第1値に維持し、上記第1読出し電圧及び上記第2読出し電圧をいずれも変更し、上記第1条件が満たされた後に第2条件が満たされると、上記第1読出し電圧及び上記第2読出し電圧の差を上記第1値から上記第1値と異なる第2値に変更し、上記第1読出し電圧及び上記第2読出し電圧の少なくとも一方を変更するように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係る情報処理システムの構成の一例を示すブロック図。
【
図2】第1実施形態に係るメモリバスで用いられる信号の一例を示すブロック図。
【
図3】第1実施形態に係る不揮発性メモリの構成の一例を示す回路図。
【
図4】第1実施形態に係る複数のメモリセルトランジスタの閾値電圧分布の一例を示す図。
【
図5】第1実施形態に係るメモリシステムに記憶される補正量情報の構成の一例を示す図。
【
図6】第1実施形態に係るメモリシステムに記憶されるオフセット情報の構成の一例を示す図。
【
図7】第1実施形態に係るメモリシステムにおける読出し処理で適用される読出し電圧の一例を示す図。
【
図8】第1実施形態に係るメモリシステムにおける補正量適用処理の一例を示すフローチャート。
【
図9】第1実施形態に係るメモリシステムにおける補正量算出処理に適用される第1方式の一例を示す図。
【
図10】第1実施形態に係るメモリシステムにおける補正量算出処理に適用される第2方式の一例を示す図。
【
図11】第1実施形態に係るメモリシステムにおける補正量適用処理の発動条件の組合せの一例を示す図。
【
図12】第1実施形態に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャート。
【
図13】第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第1例を示す図。
【
図14】第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第2例を示す図。
【
図15】第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第3例を示す図。
【
図16】第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第4例を示す図。
【
図17】第1実施形態の変形例に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャート。
【
図18】第2実施形態に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャート。
【
図19】第2実施形態の変形例に係るメモリシステムにおけるオフセットテーブルマージ処理の一例を示すフローチャート。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【0008】
1.第1実施形態
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
【0009】
図1は、第1実施形態に係る情報処理システムの構成の一例を示すブロック図である。
図1に示すように、情報処理システム1は、ホスト2及びメモリシステム3を含む。
【0010】
ホスト2は、メモリシステム3を使用してデータを処理するデータ処理装置である。ホスト2は、例えば、パーソナルコンピュータ又はデータセンタ内のサーバである。
【0011】
メモリシステム3は、ホスト2に接続されるように構成される記憶装置である。メモリシステム3は、例えば、SDTMカードのようなメモリカード、UFS(Universal Flash Storage)、又はSSD(Solid State Drive)である。メモリシステム3は、ホスト2からの要求に応じてデータの書込み処理、読出し処理、消去処理を実行する。メモリシステム3は、内部処理として書込み処理、読出し処理、及び消去処理を実行してもよい。内部処理とは、ホスト2からの要求に依ることなくメモリシステム3内で実行される処理である。
【0012】
1.1.2 メモリシステム
第1実施形態に係るメモリシステムの内部構成について説明する。
【0013】
メモリシステム3は、メモリコントローラ10、不揮発性メモリ20、及び揮発性メモリ30を含む。
【0014】
メモリコントローラ10は、例えばSoC(System-on-a-Chip)のような集積回路で構成される。メモリコントローラ10は、ホスト2からの要求に基づいて、不揮発性メモリ20を制御する。
【0015】
具体的には、例えば、メモリコントローラ10は、ホスト2からの書込み要求に基づいて、書込みデータを不揮発性メモリ20に書き込む。また、メモリコントローラ10は、ホスト2からの読出し要求に基づいて、読出しデータを不揮発性メモリ20から読み出す。そして、メモリコントローラ10は、読出しデータに基づくデータをホスト2に送信する。
【0016】
不揮発性メモリ20は、例えば、NANDフラッシュメモリである。不揮発性メモリ20は、複数のブロックBLK(BLK0~BLK3)を含む。各ブロックBLKは、各々が複数のメモリセルを含む。各メモリセルは、不揮発にデータを記憶する。ブロックBLKは、例えば、データの消去単位である。
【0017】
揮発性メモリ30は、例えば、DRAM(Dynamic Random Access Memory)である。揮発性メモリ30には、不揮発性メモリ20からデータを読み出す際に用いられる読出し電圧に関する情報等が記憶される。具体的には、例えば、揮発性メモリ30には、補正量情報31及びオフセット情報32が記憶される。なお、補正量情報31及びオフセット情報32は、不揮発性メモリ20に記憶されてもよい。補正量情報31及びオフセット情報32の詳細については後述する。
【0018】
1.1.3 メモリコントローラ
次に、引き続き
図1を参照して、メモリコントローラ10の内部構成について説明する。メモリコントローラ10は、制御回路11、不揮発性メモリインタフェース回路(NVMI/F)12、ホストインタフェース回路(ホストI/F)13、揮発性メモリインタフェース回路(VMI/F)14、バッファメモリ15、ECC(Error Correction and Check)回路16、及び補正量算出回路17を含む。以下に説明される制御回路11、不揮発性メモリインタフェース回路12、ホストインタフェース回路13、揮発性メモリインタフェース回路14、バッファメモリ15、ECC回路16、及び補正量算出回路17の機能は、専用ハードウェア、プログラムを実行するプロセッサ、又はこれらの組合せのいずれでも実現可能である。
【0019】
制御回路11は、メモリコントローラ10の全体を制御する回路である。制御回路11は、例えば、CPU(Central Processing Unit)のようなプロセッサ、ROM(Read Only Memory)、及びRAM(Random Access Memory)を含む。
【0020】
不揮発性メモリインタフェース回路12は、メモリコントローラ10と不揮発性メモリ20との間の通信を司る。不揮発性メモリインタフェース回路12は、メモリバスMBを介して不揮発性メモリ20と接続される。メモリバスBUSは、例えば、SDR(single data rate)インタフェース、トグルDDR(double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠する。
【0021】
ホストインタフェース回路13は、メモリコントローラ10とホスト2との間の通信を司る。ホストインタフェース回路13は、ホストバスを介してホスト2と接続される。ホストバスは、例えば、SDTMインタフェース、SAS(Serial Attached SCSI (Small Computer System Interface))、SATA(Serial ATA (Advanced Technology Attachment))、又はPCIeTM(Peripheral Component Interconnect express)に準拠する。
【0022】
揮発性メモリインタフェース回路14は、メモリコントローラ10と揮発性メモリ30との間の通信を司る。揮発性メモリ30とメモリコントローラ10との間を接続するバスは、例えば、DRAMインタフェース規格に準拠する。
【0023】
バッファメモリ15は、例えば、SRAM(Static Random Access Memory)である。バッファメモリ15は、ホスト2と不揮発性メモリ20との間でデータをバッファリングする。具体的には、バッファメモリ15は、書込みデータ、及び読出しデータを一時的に記憶する。
【0024】
ECC回路16は、不揮発性メモリ20に記憶されるデータに関する誤り検出処理及び誤り訂正処理を行う。すなわち、データの書込み処理時には、ECC回路16は、書込みデータに誤り訂正符号を付与する。データの読出し処理時には、ECC回路16は、読出しデータを復号し、フェイルビットの有無を検出する。フェイルビットとは、あるメモリセルから読み出されたデータ(1以上のビットを含む)のうち、当該メモリセルに書き込まれたデータと異なるビットである。そしてフェイルビットが検出された際には、ECC回路16は、フェイルビットの位置を特定し、誤り訂正処理を実行する。誤り訂正処理の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose‐Chaudhuri‐Hocquenghem)符号やRS(Reed‐Solomon)符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。以下では、特に断らない限り、誤り訂正処理には、硬判定復号が適用されるものとする。
【0025】
補正量算出回路17は、補正量算出処理を実行するように構成される回路である。補正量算出処理は、読出し電圧の初期値と適切な読出し電圧との間の差分(補正量)を算出する処理である。補正量算出回路17は、不揮発性メモリ20からの1又は複数の読出しデータを用いて、補正量算出処理を実行する。補正量算出回路17は、ECC回路16による誤り検出処理の結果を更に用いて、補正量算出処理を実行してもよい。
【0026】
1.1.4 メモリバス
次に、不揮発性メモリ20とメモリコントローラ10との間でやり取りされる信号の一例を説明する。
図2は、第1実施形態に係るメモリバスで用いられる信号の一例を示すブロック図である。
【0027】
メモリバスMBで用いられる信号は、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディ・ビジー信号RBn、及び入出力信号I/Oを含む。本明細書において、信号の名称の末尾のnは、その信号が“L(Low)”レベルの場合にアサートされることを意味する。
【0028】
チップイネーブル信号CEnは、不揮発性メモリ20をイネーブルにするための信号である。
【0029】
コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEは、不揮発性メモリ20への入力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ20に通知する信号である。
【0030】
ライトイネーブル信号WEnは、入力信号I/Oを不揮発性メモリ20に取り込ませるための信号である。
【0031】
リードイネーブル信号REnは、不揮発性メモリ20から出力信号I/Oを読み出すための信号である。
【0032】
ライトプロテクト信号WPnは、データの書き込み及び消去の禁止を不揮発性メモリ20に指示するための信号である。
【0033】
レディ・ビジー信号RBnは、不揮発性メモリ20がレディ状態であるか、それともビジー状態であるかを示す信号である。レディ状態は、不揮発性メモリ20がメモリコントローラ10からの命令を受信出来る状態である。ビジー状態は、不揮発性メモリ20がメモリコントローラ10からの命令を受信出来ない状態である。レディ・ビジー信号RBnは、“L”レベルがビジー状態を示す。
【0034】
入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ20とメモリコントローラ10との間で送受信されるデータの実体である。入出力信号I/Oは、コマンド、アドレス、並びに書込みデータ及び読出しデータ等のデータを含む。
【0035】
1.1.5 不揮発性メモリ
次に、不揮発性メモリ20の構成について説明する。
図3は、第1実施形態に係る構成の一例を示す回路図である。
図3では、一例として、ブロックBLK0の構成が示される。他のブロックBLK1~BLK3の構成は、ブロックBLK0の構成と同等である。ブロックBLK0は、例えば、4つのストリングユニットSU0~SU3を含む。なお、
図3において、ストリングユニットSU2及びSU3の構成は簡略化して示される。
【0036】
各ストリングユニットSUは、ビット線BL0、BL1、…、及びBLm(mは、2以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。NANDストリングNSは、例えばメモリセルトランジスタMT0~MT7、並びに選択トランジスタST1及びST2を含む。
【0037】
メモリセルトランジスタMTは、制御ゲート及び電荷蓄積層を含み、データを不揮発に記憶する。選択トランジスタST1及びST2のそれぞれは、各種処理時におけるストリングユニットSUの選択に使用される。
【0038】
各NANDストリングNSにおいて、メモリセルトランジスタMT0~MT7は、直列接続される。直列接続されたメモリセルトランジスタMT0~MT7の一端と、関連付けられたビット線BLとの間には、選択トランジスタST1が接続される。直列接続されたメモリセルトランジスタMT0~MT7の他端には、選択トランジスタST2のドレインが接続される。選択トランジスタST2のソースには、ソース線SLが接続される。
【0039】
同一のブロックBLKにおいて、ストリングユニットSU0~SU3に含まれた複数の選択トランジスタST1の各々のゲートは、選択ゲート線SGD0~SGD3にそれぞれ共通接続される。複数のメモリセルトランジスタMT0~MT7の各々の制御ゲートは、ワード線WL0~WL7にそれぞれ共通接続される。複数の選択トランジスタST2の各々のゲートは、選択ゲート線SGSに共通接続される。
【0040】
ビット線BL0~BLmは、複数のブロックBLK0~BLK3で共有される。同じカラムアドレスに対応するNANDストリングNSには、同じビット線BLが接続される。ワード線WL0~WL7のそれぞれは、ブロックBLK0~BLK3の各々に設けられる。ソース線SLは、例えば、複数のブロックBLK0~BLK3で共有される。
【0041】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMTの集合は、例えばセルユニットCUと称され、データの書込み単位として使用される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMTを含むセルユニットCUの記憶容量が、「1ページデータ」として定義される。つまり、1ページデータは、セルユニットCU内のメモリセルトランジスタMTの数に応じた列数を有する1ビットデータ列のデータ領域である。1ページデータは、例えば、データの読出し単位として使用される。セルユニットCUは、メモリセルトランジスタMTが記憶するビットデータ数に応じて2ページデータ以上の記憶容量を有し得る。
【0042】
なお、以上で説明したブロックBLKの回路構成はあくまで一例であり、これに限定されない。例えば、ビット線BLの本数は、3本以上に限らず、1本又は2本でもよい。不揮発性メモリ20に含まれるブロックBLKの個数は、任意の個数に設計され得る。各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。各NANDストリングNSが含むメモリセルトランジスタMT並びに選択トランジスタST1及びST2の各々の個数は、それぞれ任意の個数に設計され得る。
【0043】
以下では、1つのメモリセルトランジスタMTが2ビットデータを記憶することができる場合について説明する。この場合、メモリセルトランジスタMTに2ビットのデータを記憶させる書込みモードは、MLC(Multi Level Cell)モードとも呼ばれる。MLCモードによって書き込まれたメモリセルトランジスタが記憶する2ビットデータを、下位ビットから順に下位(Lower)ビット、及び上位(Upper)ビットと呼ぶ。また、同一のセルユニットCUに含まれるメモリセルトランジスタMTの記憶する下位ビットの集合を“下位ページ”と呼び、上位ビットの集合を“上位ページ”と呼ぶ。
【0044】
図4は、第1実施形態に係る複数のメモリセルトランジスタMTの閾値電圧分布の一例を示す模式図である。メモリセルトランジスタMTが2ビットのデータを記憶する場合、その閾値電圧の分布は4個に分けられる。この4個の閾値電圧分布を、閾値電圧が低いものから順に“Er”状態(ステート)、“A”状態、“B”状態、及び“C”状態と呼ぶ。
【0045】
また、
図4に示す電圧VA、VB、及びVCはそれぞれ、読出し処理の際に隣り合う2つの状態を区別するために用いられる。電圧VREADは、読出し処理時において非選択ワード線に印加される電圧である。メモリセルトランジスタMTは、ゲートに電圧VREADが印加されると記憶するデータに依らずにオン状態になる。これらの電圧値の関係は、VA<VB<VC<VREADである。
【0046】
上述した閾値電圧分布のうち“Er”状態は、メモリセルトランジスタMTの消去状態に相当する。“Er”状態における閾値電圧は、電圧VA未満である。“A”状態における閾値電圧は、電圧VA以上且つ電圧VB未満である。“B”状態における閾値電圧は、電圧VB以上且つ電圧VC未満である。“C”状態における閾値電圧は、電圧VC以上且つ電圧VREAD未満である。
【0047】
上述した4個の閾値電圧分布は、下位ビット、及び上位ビットを含む2ビット(2ページ)データを書き込むことで形成される。そして4個の閾値電圧分布が、それぞれ異なる2ビットのデータに対応する。以下では、各状態に含まれるメモリセルトランジスタMTに対して、“上位ビット/下位ビット”に以下に示すようにデータを割り付けるものとする。
【0048】
“Er”状態に含まれるメモリセルトランジスタMTは、“11”データを記憶する。“A”状態に含まれるメモリセルトランジスタMTは、“01”データを記憶する。“B”状態に含まれるメモリセルトランジスタMTは、“00”データを記憶する。“C”状態に含まれるメモリセルトランジスタMTは、“10”データを記憶する。
【0049】
下位ページの読出し処理は、“A”状態と“B”状態とを区別する電圧VBを読出し電圧として用いる読出し処理BRを含む。上位ページの読出し処理は、“Er”状態と“A”状態とを区別する電圧VAを読出し電圧として用いる読出し処理AR、及び“B”状態と“C”状態とを区別する電圧VCを読出し電圧として用いる読出し処理CRを含む。
【0050】
なお、メモリコントローラ10は、読出し処理に適用する読出し電圧VA、VB、及びVCを、読出し電圧の初期値VAini、VBini、及びVCiniからの補正量を示すDAC(Digital to Analogue Converter)値でそれぞれ管理する。読出し電圧の初期値VAini、VBini、及びVCiniは、全てのメモリ領域に共通して適用される値である。
【0051】
補正量は、基準補正量及びオフセットテーブルの組により表される。基準補正量及びオフセットテーブルの組は、所定のメモリ領域毎に互いに独立に適用される。基準補正量は、対応する所定のメモリ領域で共通して適用されるDAC値である。オフセットテーブルは、対応する所定のメモリ領域内の部分メモリ領域に対して個別に適用されるDAC値(オフセット補正量)の組である。以下では、基準補正量及びオフセットテーブルの組が共通して適用される所定のメモリ領域の範囲がブロックBLKであり、オフセット補正量が適用される部分メモリ領域の範囲がセルユニットCUである場合について説明するが、これに限られない。例えば、複数の基準補正量が1個のブロックBLK内の互いに異なるメモリ領域に適用されてもよい。1個の基準補正量が複数のブロックBLKにわたって適用されてもよい。また、オフセット補正量が複数のセルユニットCUにわたって適用されてもよい。
【0052】
1.1.6 バッファメモリ
図5は、第1実施形態に係るメモリシステムに記憶される補正量情報の構成の一例を示す図である。
図6は、第1実施形態に係るメモリシステムに記憶されるオフセット情報の構成の一例を示す図である。
【0053】
補正量情報31には、各ブロックBLKに適用される基準補正量を示すDAC値と、各ブロックBLKに適用されるオフセットテーブルを示すポインタと、の組が記憶される。オフセット情報32には、複数のオフセットテーブルが記憶される。すなわち、補正量情報31に記憶されるオフセットテーブルのポインタは、オフセット情報32に記憶される複数のオフセットテーブルのうちの1個のオフセットテーブルを示す。
【0054】
図5の例では、補正量情報31を参照することにより、ブロックBLK0には、基準補正量としてDAC値ΔVA0、ΔVB0、及びΔVC0が適用され、オフセットテーブルTBaが適用されることが分かる。また、ブロックBLK1には、基準補正量としてDAC値ΔVA1、ΔVB1、及びΔVC1が適用され、オフセット補正量としてオフセットテーブルTBaが適用されることが分かる。
【0055】
オフセットテーブルは、セルユニットCU(に対応するワード線WL)と、当該セルユニットCUに適用されるオフセット補正量を示すステート毎のDAC値とが関連づけられた情報を、ブロックBLK単位でまとめた情報である。
【0056】
図6の例では、オフセットテーブルTBaが適用される場合、ワード線WL0に対応するセルユニットCUには、オフセット補正量としてDAC値δVA0a、δVB0a、及びδVC0aが適用される。ワード線WL1に対応するセルユニットCUには、オフセット補正量としてDAC値δVA1a、δVB1a、及びδVC1aが適用される。ワード線WL2に対応するセルユニットCUには、オフセット補正量としてDAC値δVA2a、δVB2a、及びδVC2aが適用される。ワード線WL4に対応するセルユニットCUには、オフセット補正量としてDAC値δVA4a、δVB4a、及びδVC4aが適用される。ワード線WL5に対応するセルユニットCUには、オフセット補正量としてDAC値δVA5a、δVB5a、及びδVC5aが適用される。ワード線WL6に対応するセルユニットCUには、オフセット補正量としてDAC値δVA6a、δVB6a、及びδVC6aが適用される。ワード線WL7に対応するセルユニットCUには、オフセット補正量としてDAC値δVA7a、δVB7a、及びδVC7aが適用される。一方、ワード線WL3に対応するセルユニットCUには、オフセット補正量としてDAC値“0”が適用される。
【0057】
このように、オフセットテーブル内でオフセット補正量が対応づけられるワード線WLのうち、DAC値“0”が適用されるワード線WL(
図6の例ではワード線WL3)を、以下では「基準WL」と呼ぶ。また、オフセットテーブル内でオフセット補正量が対応づけられるワード線WLのうち、基準WL以外の所定の1本のワード線WL(
図6の例ではワード線WL7)を、以下では「参照WL」と呼ぶ。後述する補正量適用処理において、基準WLは、固定されている。これに対して、後述する補正量適用処理において、参照WLは、固定されていてもよいし、動的に変更されてもよい。
【0058】
以上のような基準補正量及びオフセットテーブルを組み合わせることにより、全てのブロックBLK内の全てのセルユニットCUに対する読出し電圧の初期値に対する補正量を決定することができる。
【0059】
図7は、第1実施形態に係るメモリシステムにおける読出し処理で適用される読出し電圧の一例を示す図である。
図7の例では、
図5に示される補正量情報31及び
図6に示されるオフセット情報32に基づいて決定される、ブロックBLK0に適用される読出し電圧VBが示される。
【0060】
基準WLであるワード線WL3に適用されるオフセット補正量は、“0”である。このため、ワード線WL3に適用される読出し電圧VBは、VBini+ΔVB0となる。一方、基準WL以外のワード線WLj(j=0~2,4~7)に適用される読出し電圧VBは、VBini+ΔVB0+δVBjaとなる。
【0061】
以下では、基準WLに適用される読出し電圧の初期値との差を「基準補正量」と呼ぶ。また、参照WLに適用される読出し電圧の初期値との差を「参照補正量」と呼ぶ。すなわち、
図7の例では、基準補正量がΔVB0であり、参照補正量がΔVB0+δVB7aである。
【0062】
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
【0063】
1.2.1 補正量適用処理
図8は、第1実施形態に係るメモリシステムにおける補正量適用処理の一例を示すフローチャートである。
【0064】
対象のブロックBLKにデータが書き込まれると(開始)、制御回路11は、読出し電圧の初期値に、初期設定されたオフセットテーブルを、以降の読出し処理に適用する(S11)。
【0065】
制御回路11は、第1条件を満たすか否かを判定する(S12)。第1条件の詳細については、後述する。
【0066】
第1条件が満たされない場合(S12;no)、制御回路11は引き続き、読出し電圧の初期値に、初期設定されたオフセットテーブルを適用する(S11)。そして、後続するS12の処理が実行される。このように、第1条件が満たされるまで、S11の処理及びS12の処理が繰り返される。
【0067】
第1条件が満たされた場合(S12;yes)、補正量算出回路17は、基準WLについて補正量算出処理を実行することにより、基準補正量を算出する(S13)。
【0068】
S13の処理の後、制御回路11は、S11の処理で適用した読出し電圧の設定を変更する。すなわち、制御回路11は、読出し電圧の初期値に、初期設定されたオフセットテーブルと、S13の処理で算出された基準補正量とを、以降の読出し処理に適用する(S14)。
【0069】
制御回路11は、第2条件を満たすか否かを判定する(S15)。第2条件の詳細については、後述する。
【0070】
第2条件が満たされない場合(S15;no)、制御回路11は、対象のブロックBLKに新たなデータが書き込まれたか否かを判定する(S16)。
【0071】
対象のブロックBLKに新たなデータが書き込まれていない場合(S16;no)、制御回路11は引き続き、第2条件を満たすか否かを判定する(S15)。そして、後続するS16の処理が実行される。このように、対象のブロックBLKに新たなデータが書き込まれていない場合には、第2条件が満たされるまで、S15の処理及びS16の処理が繰り返される。
【0072】
対象のブロックBLKに新たなデータが書き込まれた場合(S16;yes)、制御回路11は、読出し電圧の初期値に、初期設定されたオフセットテーブルを適用する(S11)。そして、後続するS12~S16の処理が実行される。このように、対象のブロックBLKに新たなデータが書き込まれた場合には、第2条件が満たされるまで、S11~S16の処理が繰り返される。
【0073】
第2条件が満たされた場合(S15;yes)、補正量算出回路17は、参照WLについて補正量算出処理を実行することにより、参照補正量を算出する(S17)。
【0074】
制御回路11は、S13の処理で算出された基準補正量及びS17の処理で算出された参照補正量に基づき、以降の読出し処理に適用されるオフセットテーブルを抽出する(S18)。
【0075】
制御回路11は、読出し電圧の初期値に、S13の処理で算出された基準補正量と、S19の処理で抽出されたオフセットテーブルを、以降の読出し処理に適用する(S19)。
【0076】
S19の処理の後、補正量適用処理は終了となる(終了)。
【0077】
1.2.2 補正量算出処理
次に、S13の処理における基準補正量の算出、及びS17の処理における参照補正量の算出に用いられる補正量算出処理の詳細について説明する。以下では、読出し電圧の初期値を使用して読み出されたデータに基づく補正量算出処理について説明する。
(第1方式)
まず、第1方式について説明する。
【0078】
第1方式では、制御回路11は、対象のワード線WLに接続された所定のストリングユニットSU(例えば、ストリングユニットSU0)に対して、例えば全ページ分の読出し処理を実行する。すなわち、制御回路11は、基準補正量の算出に際しては基準WLに接続された所定のストリングユニットSUに対して読出し処理を実行し、参照補正量の算出に際しては参照WLに接続された所定のストリングユニットSUに対して読出し処理を実行する。
【0079】
読出し処理の後、ECC回路16は、読み出されたデータに対して、誤り検出処理を実行する。これにより、補正量算出回路17は、読出しデータのカラムアドレス毎に、訂正前のデータ列と、訂正後のデータ列と、を把握できる。このため、補正量算出回路17は、読出しデータのカラムアドレス毎に、書き込まれた際の(真の)状態と、読み出された際の(誤りを含み得る)状態と、を把握できる。具体的には、例えば、補正量算出回路17は、“A”状態として書き込まれたデータが“Er”状態として誤って読み出されたメモリセル数E12を把握できる。また、補正量算出回路17は、“Er”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数E21を把握できる。
【0080】
図9は、第1実施形態に係るメモリシステムにおける補正量算出処理に適用される第1方式の一例を示す図である。
図9の例では、読出し電圧VAの補正量を算出する場合が示される。
図9において、“A”状態として書き込まれたデータが“Er”状態として誤って読み出されたメモリセル数E12は、
図9(A)~
図9(C)における領域(a)の面積に相当する。また、“Er”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数E21は、
図9(A)~
図9(C)における領域(b)の面積に相当する。
【0081】
図9(A)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptと等しい場合が示される。
図9(A)の場合、領域(a)の面積と、領域(b)の面積とは、等しくなる。この場合、“Er”状態と“A”状態との間で発生するフェイルビット数E(=E12+E21)は最小となることが期待される。このため、補正量算出回路17は、読出し電圧VAが更新不要であると判定する。つまり、補正量算出回路17は、“0”の補正量ΔVAを算出する(ΔVA=0)。
【0082】
図9(B)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptよりも高電圧側に位置する場合が示される。
図9(B)の場合、領域(a)の面積は、領域(b)の面積よりも大きくなる。この場合、フェイルビット数Eは、
図9(A)の場合のフェイルビット数Eよりも多くなり、好ましくない。このため、補正量算出回路17は、読出し電圧VAを電圧VAoptに近づけるように、低電圧側にシフトさせる。つまり、補正量算出回路17は、負の補正量ΔVAを算出する(ΔVA<0)。
【0083】
図9(C)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptよりも低電圧側に位置する場合が示される。
図9(C)の場合、領域(a)の面積は、領域(b)の面積よりも小さくなる。この場合、フェイルビット数Eは、
図9(A)の場合のフェイルビット数Eよりも多くなり、好ましくない。このため、補正量算出回路17は、読出し電圧VAを電圧VAoptに近づけるように、高電圧側にシフトさせる。つまり、補正量算出回路17は、正の補正量ΔVAを算出する(ΔVA>0)。
【0084】
なお、領域(a)の面積及び領域(b)の面積の差の絶対値は、読出し電圧VAが閾値電圧VAoptから離れるほど大きくなることが期待される。このため、補正量算出回路17は、読出し電圧VAの補正量ΔVAを、領域(a)の面積及び領域(b)の面積の比の大きさに応じて決定する。これにより、閾値電圧分布の重複の度合いに応じて適切な補正量を決定することができ、閾値電圧VAoptに近づくように補正量ΔVAを算出することができる。
【0085】
なお、図示は省略されるが、他の読出し電圧VB及びVCについても、読出し電圧VAの場合と同様に補正量ΔVB及びΔVCが算出される。
【0086】
なお、補正量ΔVApreを読出し電圧VAの初期値VAiniに加えた値(VAini+ΔVApre)を使用して読み出されたデータに基づく補正量算出処理では、補正量ΔVApreは、以下のような補正量ΔVApostに更新される。すなわち、
図9(A)のように、領域(a)の面積と領域(b)の面積とが等しい場合、補正量ΔVAの更新は不要である。このため、補正量ΔVApost=補正量ΔVApreとなる。
図9(B)のように、領域(a)の面積が領域(b)の面積よりも大きい場合、補正量ΔVApostは、補正量ΔVApreよりも低い値に更新される。
図9(C)のように、領域(a)の面積が領域(b)の面積よりも小さい場合、補正量ΔVApostは、補正量ΔVApreよりも高い値に更新される。
(第2方式)
次に、第2方式について説明する。
【0087】
第2方式では、制御回路11は、読出し電圧をシフトさせながら複数の読出し処理を実行する。
【0088】
複数の読出し処理の後、補正量算出回路17は、当該複数の読出し処理による複数の読出しデータに基づき、複数の読出し電圧で区切られる閾値電圧範囲毎のメモリセルトランジスタMTの数(区間セル数)を算出する。補正量算出回路17は、算出された複数の区間セル数の分布(ヒストグラム)に基づいて、適切な読出し電圧を算出する。そして、補正量算出回路17は、適切な読出し電圧の初期値からの差分を補正量として算出する。
【0089】
図10は、第1実施形態に係るメモリシステムにおける補正量推定処理に適用される第2方式の一例を示す図である。
【0090】
図10(A)では、一例として、“Er”状態及び“A”状態に対応する2つの閾値電圧分布が示される。
図10(B)では、オン状態となるメモリセルトランジスタMTの数(オンセル数)Mの推移が示される。
図10(C)では、2つの読出し電圧間におけるオンセル数変化量、すなわち区間セル数Cの推移が示される。
図10(C)は、上述したヒストグラムに対応する。
【0091】
図10(B)に示すように、読出し電圧Vを低電圧側にシフトさせていくと、“Er”状態の最頻値である電圧VErmidよりわずかに高い電圧でオンセル数Mが急激に減少し、|dM/dV|が極大となる。ここで、最頻値とは、
図10(A)において閾値電圧の分布確率が極大となる電圧である。更に読出し電圧Vを低くしていくと、オンセル数Mの減少率は小さくなり、或る値の読出し電圧Vにおいてオンセル数Mの減少率が極小となる。オンセル数Mの減少率の極小値は、“A”状態に属する閾値電圧分布と、“Er”状態に属する閾値電圧分布とが重ならない場合にはゼロとなる。他方で、“A”状態に属する閾値電圧分布と、“Er”状態に属する閾値電圧分布とが重なる場合には、オンセル数Mの減少率の極小値はゼロではない値(>0)となる。そして更に読出し電圧Vを低くしていくと、再びオンセル数Mの減少率が大きくなり、“A”状態の最頻値である電圧VAmidよりわずかに高い電圧で再び|dM/dV|が極大となる。
【0092】
上述のオンセル数Mの変化によって、2つの状態間の閾値電圧分布の重なりが最も小さくなる読出し電圧V(すなわち、2つの状態の閾値電圧分布の交点に対応する読出し電圧V)を検出することができる。例えば、まず、読出し電圧V0を用いて読出し処理を行う。この時のオンセル数をM0とする。次に、電圧V0よりΔVだけ低い電圧V1を用いて読出し処理を行う。この時のオンセル数をM1とする。すると、読出し電圧がV0からV1に低下した際に新たにオフ状態となるメモリセルトランジスタMTの数は、C1=M0-M1個である。すなわち、閾値電圧が[V0,V1]間における区間セル数がC1個である。
【0093】
引き続き、電圧V1よりΔVだけ低い電圧V2を用いて読出し処理を行う。この時のオンセル数をM2とする。すると、読出し電圧がV1からV2に低下した際に新たにオフ状態となるメモリセルトランジスタMTの数は、C2=M1-M2個である。すなわち、閾値電圧が[V1,V2]間における区間セル数がC2個である。そして、C1>C2であったとすれば、|dM/dV|が最小となる電圧は、少なくとも電圧V1より低電圧側に位置すると考えられる。
【0094】
引き続き、電圧V2よりΔVだけ低い電圧V3を用いて読出し処理を行う。この時のオンセル数をM3とする。すると、読出し電圧がV2からV3に低下した際に新たにオフ状態となるメモリセルトランジスタMTの数は、C3=M2-M3である。すなわち、閾値電圧が[V2,V3]間における区間セル数がC3個である。ここで、C3>C2であったとすれば、
図10(C)のようなヒストグラムが得られる。
【0095】
以上の結果、区間セル数Cによって、
図10(C)における一点鎖線で示されるような閾値電圧分布を推定することができる。そして、“Er”状態に属する閾値電圧分布と“A”状態に属する閾値電圧分布との重なりが最も小さくなる読出し電圧が電圧V1と電圧V2との間(区間セル数が極小値の区間)に存在することが推定できる。
【0096】
以上のように動作することにより、第2方式では、複数の読出し処理に基づいて、適切な読出し電圧を算出することができる。
【0097】
1.2.3 第1条件及び第2条件
次に、S12の判定処理に用いられる第1条件、及びS15の判定処理に用いられる第2条件の詳細について説明する。
【0098】
図11は、第1実施形態に係るメモリシステムにおける補正量適用処理の発動条件の組合せの一例を示す図である。
図11では、S12の判定処理に用いられる第1条件の具体例、及びS15の判定処理に用いられる第2条件の具体例が取り得る組合せが示される。
【0099】
第1条件には、例えば、以下の3種類の条件(1)~(3)が挙げられる。
(1)対象ブロックBLKにデータが書き込まれた後、期間T1が経過すること
(2)基準WLに対して定期的な内部読出し処理が実行されること
(3)閾値TH1以上のフェイルビットを含むデータが対象ブロックBLKから読み出されること
ここで、定期的な内部読出し処理は、例えば、パトロール処理を含む。パトロール処理は、不揮発性メモリ20に記憶されたデータが誤り訂正可能な状態であるか否かを判定する処理である。パトロール処理において、読出し処理は、不揮発性メモリ20内のメモリ領域を巡回するように実行される。メモリコントローラ10は、読み出されたデータに対して誤り訂正処理を実行し、読出しデータに含まれるフェイルビット数が誤り訂正可能な許容値以下であるか否かを判定する。フェイルビット数が許容値を超える場合、メモリコントローラ10は、当該データが読み出された記憶領域に対してリフレッシュ処理を実行する。リフレッシュ処理は、データを書き直す処理を含む。このように、パトロール処理を実行することによって、メモリコントローラ10は、不揮発性メモリ20内のデータに含まれるフェイルビット数を許容値以下に維持することができる。
【0100】
第2条件には、例えば、以下の3種類の条件(4)~(6)が挙げられる。
(4)対象ブロックBLKにデータが書き込まれた後に、期間T1より長い期間T2が経過すること
(5)基準補正量が算出された後に対象ブロックBLKからデータが読み出されること
(6)基準補正量が算出された後に閾値TH2以上のフェイルビットを含むデータが対象ブロックBLKから読み出されること
ここで、条件(5)における読出し処理は、ホスト2からの要求に基づくか否かは問われない。つまり、条件(5)における読出し処理は、内部読出し処理であってもよいし、ホスト2からの要求に基づく読出し処理であってもよい。
【0101】
第1条件及び第2条件は、以下のような組合せで適用される。すなわち、第1条件として条件(1)が適用される場合、第2条件として条件(4)、条件(5)、及び条件(6)のうちの少なくとも1個の条件が適用される。第1条件として条件(2)が適用される場合、第2条件として条件(5)及び条件(6)のうちの少なくとも1個の条件が適用される。第1条件として条件(3)が適用される場合、第2条件として条件(5)及び条件(6)のうちの少なくとも1個の条件が適用される。
【0102】
1.2.4 オフセットテーブル抽出処理
次に、S18の処理における、適用するオフセットテーブルを抽出する処理(オフセットテーブル抽出処理)の詳細について説明する。
【0103】
図12は、第1実施形態に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャートである。
【0104】
参照補正量が算出されると(開始)、制御回路11は、S13の処理で算出された基準補正量及びS17の処理で算出された参照補正量の差を、理想オフセット量として算出する(S21)。
【0105】
制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、1個のオフセットテーブルを選択する(S22)。
【0106】
制御回路11は、S21の処理で算出された理想オフセット量と、S22の処理で選択されたオフセットテーブル内の当該理想オフセット量に対応するオフセット補正量と、のステート毎の差の二乗和を算出する(S23)。
【0107】
制御回路11は、全てのオフセットテーブルを選択済みであるか否かを判定する(S24)。
【0108】
選択されていないオフセットテーブルがある場合(S24;no)、制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、未選択の1個のオフセットテーブルを選択する(S22)。そして、後続するS23及びS24の処理が実行される。このように、全てのオフセットテーブルが選択されるまで、S22~S24の処理が繰り返される。
【0109】
全てのオフセットテーブルが選択された場合(S24;yes)、制御回路11は、S23の処理で算出された二乗和が最小となるオフセットテーブルを抽出する(S25)。
【0110】
S25の処理が終了すると、オフセットテーブル抽出処理は終了となる(終了)。
【0111】
1.2.5 適用される補正量の具体例
次に、補正量適用処理によって適用される補正量の具体例について説明する。
【0112】
図13は、第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第1例を示す図である。
図14は、第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第2例を示す図である。
図15は、第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第3例を示す図である。
図16は、第1実施形態に係るメモリシステムにおける補正量適用処理で適用される補正量の推移の第4例を示す図である。
【0113】
第1例は、オフセットテーブルTBaが適用されるブロックBLK0に基準補正量が適用される際の補正量の推移を示す。第2例は、参照補正量の算出に伴いブロックBLK0に適用されるオフセットテーブルがオフセットテーブルTBaからオフセットテーブルTBcに変更される際の補正量の推移を示す。第3例は、オフセットテーブルTBaが適用されるブロックBLK1に基準補正量が適用される際の補正量の推移を示す。第4例は、参照補正量の算出に伴いブロックBLK1に適用されるオフセットテーブルがオフセットテーブルTBaからオフセットテーブルTBdに変更される際の補正量の推移を示す。
【0114】
まず、
図13及び
図14を参照してブロックBLK0における補正量の推移について説明する。
図13では、基準補正量の算出前及び算出後に適用される読出し電圧VBが、それぞれ線L1及びL2で表される。
図14では、基準補正量が算出された後において、参照補正量の算出前及び算出後に適用される読出し電圧VBが、それぞれ線L2及びL3で表される。
【0115】
図13に示されるように、基準補正量の算出前では、初期値VBiniに対して初期設定されたオフセットテーブルTBaが適用される。このため、基準WLでは、読出し電圧VBに電圧VBiniが適用される。参照WLでは、読出し電圧VBに電圧VBini+δVB7aが適用される。
【0116】
基準WLに対する補正量算出処理が実行されると、当該補正量算出処理によって算出された基準補正量ΔVB0が適用される。これにより、基準WLでは、読出し電圧VBに電圧VBini+ΔVB0が適用される。参照WLでは、読出し電圧VBに電圧VBini+ΔVB0+δVB7aが適用される。
【0117】
図14に示されるように、参照WLに対する補正量算出処理が実行されると、当該補正量算出処理によって算出された参照補正量と、基準補正量ΔVB0と、に基づいて理想オフセット量が算出される。そして、基準WLと参照WLとの間のオフセット補正量の差が理想オフセット量に近いオフセットテーブルTBcが算出される。これにより、参照WLでは、読出し電圧VBに電圧VBini+ΔVB0+δVB7cが適用される。なお、基準WLに適用される読出し電圧VBは、電圧VBini+ΔVB0が維持される。このように、ブロックBLK0では、適用されるオフセットテーブルの変更に応じて、基準WLと参照WLとの間の補正量の差が変化する。
【0118】
次に、
図15及び
図16を参照してブロックBLK1における補正量の推移について説明する。
図15では、基準補正量の算出前及び算出後に適用される読出し電圧VBが、それぞれ線L1及びL4で表される。
図16では、基準補正量が算出された後において、参照補正量の算出前及び算出後に適用される読出し電圧VBが、それぞれ線L4及びL5で表される。
【0119】
図15に示されるように、基準補正量の算出前では、初期値VBiniに対して初期設定されたオフセットテーブルTBaが適用される。このため、基準WLでは、読出し電圧VBに電圧VBiniが適用される。参照WLでは、読出し電圧VBに電圧VBini+δVB7aが適用される。すなわち、
図15の場合では、
図13に示されるブロックBLK0と同等の読出し電圧VBが適用される。
【0120】
基準WLに対する補正量算出処理が実行されると、当該補正量算出処理によって算出された基準補正量ΔVB1が適用される。これにより、基準WLでは、読出し電圧VBに電圧VBini+ΔVB1が適用される。参照WLでは、読出し電圧VBに電圧VBini+ΔVB1+δVB7aが適用される。
【0121】
図16に示されるように、参照WLに対する補正量算出処理が実行されると、当該補正量算出処理によって算出された参照補正量と、基準補正量ΔVB1と、に基づいて理想オフセット量が算出される。そして、基準WLと参照WLとの間のオフセット補正量の差が理想オフセット量に近いオフセットテーブルTBdが算出される。これにより、参照WLでは、読出し電圧VBに電圧VBini+ΔVB1+δVB7dが適用される。なお、基準WLに適用される読出し電圧VBは、電圧VBini+ΔVB1が維持される。このように、ブロックBLK1でもブロックBLK0と同様に、適用されるオフセットテーブルの変更に応じて、基準WLと参照WLとの間の補正量の差が変化する。
【0122】
また、ブロックBLK0とブロックBLK1とでは、ブロックBLK毎の特性の違いに応じて、理想オフセット量が異なるため、互いに異なるオフセットテーブルが適用される。したがって、参照補正量の算出後において、基準WLと参照WLとの間の補正量の差は、ブロックBLK0とブロックBLK1とで異なる。
【0123】
1.3 第1実施形態に係る効果
第1実施形態によれば、メモリコントローラ10は、第1条件が満たされると、基準WLに対して補正量算出処理を実行し、得られた基準補正量を対象ブロックBLKで適用される全ての読出し電圧に適用する。これにより、メモリコントローラ10は、基準WLに適用される読出し電圧と参照WLに適用される読出し電圧との差を維持し、基準WLに適用される読出し電圧及び参照WLに適用される読出し電圧のいずれも変更する。このため、基準WLにおける読出し電圧の変化を対象ブロックBLK全体に反映させることができる。
【0124】
また、メモリコントローラ10は、第1条件が満たされた後に第2条件が満たされると、参照WLに対して補正量算出処理を実行し、得られた参照補正量及び基準補正量のいずれにも合致するようなオフセットテーブルを対象ブロックBLKに適用する。これにより、メモリコントローラ10は、基準WLに適用される読出し電圧と参照WLに適用される読出し電圧との差を変更し、基準WLに適用される読出し電圧及び参照WLに適用される読出し電圧の少なくとも一方を変更する。このため、ワード線WL毎の読出し電圧の変化を考慮したよりきめ細やかな読出し電圧の調整を行うことができる。したがって、フェイルビット数の少ないデータを読み出すための適切な読出し電圧を適用することができる。
【0125】
また、或る対象ブロックBLKに適用されるオフセットテーブルは、他のブロックBLKに適用されるオフセットテーブルとは独立に変更される。これにより、ブロックBLK毎に適切なオフセットテーブルを適切なタイミングで変更することができる。このため、フェイルビット数の少ないデータを読み出すための適切な読出し電圧を適用することができる。
【0126】
1.4 第1実施形態の変形例
上述の第1実施形態には、種々の変形を適用することができる。例えば、上述の第1実施形態では、全てのオフセットテーブルについて、理想オフセット量と対応するオフセット補正量とのステート毎の差の二乗和が算出される場合について説明したが、これに限られない。所定の条件が満たされるオフセットテーブルについて、選択的に二乗和が算出されてもよい。
【0127】
以下の説明では、第1実施形態と異なる構成及び動作について主に説明する。第1実施形態と同等の構成及び動作については、説明を適宜省略する。
【0128】
図17は、第1実施形態の変形例に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャートである。
図17は、第1実施形態における
図12に対応する。
【0129】
参照補正量が算出されると(開始)、制御回路11は、S13の処理で算出された基準補正量及びS17の処理で算出された参照補正量の差を、理想オフセット量として算出する(S31)。
【0130】
制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、1個のオフセットテーブルを選択する(S32)。
【0131】
制御回路11は、S31の処理で算出された理想オフセット量と、S32の処理で選択されたオフセットテーブル内の当該理想オフセット量に対応するオフセット補正量と、の差をステート毎に算出する(S33)。
【0132】
制御回路11は、S33の処理で算出されたステート毎の差のうち、閾値TH3以上となるステートがあるか否かを判定する(S34)。
【0133】
差が閾値TH3以上となるステートがない場合(S34;no)、制御回路11は、S33の処理で算出されたステート毎の差の二乗和を算出する(S35)。
【0134】
S35の処理の後、又は差が閾値TH3以上となるステートがある場合(S34;yes)、制御回路11は、全てのオフセットテーブルを選択済みであるか否かを判定する(S36。
【0135】
選択されていないオフセットテーブルがある場合(S36;no)、制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、未選択の1個のオフセットテーブルを選択する(S32)。そして、後続するS33~S36の処理が実行される。このように、全てのオフセットテーブルが選択されるまで、S32~S36の処理が繰り返される。
【0136】
全てのオフセットテーブルが選択された場合(S36;yes)、制御回路11は、S35の処理で算出された二乗和が最小となるオフセットテーブルを抽出する(S37)。
【0137】
S37の処理が終了すると、オフセットテーブル抽出処理は終了となる(終了)。
【0138】
第1実施形態の変形例によれば、ステート毎の差の二乗和としては最小であるが、オフセット補正量が理想オフセット量と大きくずれているステートを有するようなオフセットテーブルが抽出されることを避けることができる。これにより、ブロックBLKの特性に応じたオフセットテーブルを適用することができる。このため、適用される読出し電圧に基づく読出しデータに含まれるフェイルビット数の増加を抑制できる。
【0139】
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、オフセットテーブルを新たに生成する点において、第1実施形態と異なる。以下の説明では、第1実施形態と異なる構成及び動作について主に説明する。第1実施形態と同等の構成及び動作については説明を適宜省略する。
【0140】
2.1 オフセットテーブル抽出処理
図18は、第2実施形態に係るメモリシステムにおけるオフセットテーブル抽出処理の一例を示すフローチャートである。
図18は、第1実施形態における
図12に対応する。
【0141】
参照補正量が算出されると(開始)、制御回路11は、S13の処理で算出された基準補正量及びS17の処理で算出された参照補正量の差を、理想オフセット量として算出する(S41)。
【0142】
制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、1個のオフセットテーブルを選択する(S42)。
【0143】
制御回路11は、S41の処理で算出された理想オフセット量と、S42の処理で選択されたオフセットテーブル内の当該理想オフセット量に対応するオフセット補正量と、のステート毎の差の二乗和を算出する(S43)。
【0144】
制御回路11は、全てのオフセットテーブルを選択済みであるか否かを判定する(S44)。
【0145】
選択されていないオフセットテーブルがある場合(S44;no)、制御回路11は、オフセット情報32に記憶される複数のオフセットテーブルから、未選択の1個のオフセットテーブルを選択する(S42)。そして、後続するS43及びS44の処理が実行される。このように、全てのオフセットテーブルが選択されるまで、S42~S44の処理が繰り返される。
【0146】
全てのオフセットテーブルが選択された場合(S44;yes)、制御回路11は、S43の処理で算出された二乗和のうち最小の二乗和が閾値TH4以下であるか否かを判定する(S45)。
【0147】
最小の二乗和が閾値TH4を超える場合(S45;no)、制御回路11は、二乗和が閾値TH4以下となるような新たなオフセットテーブルを生成する(S46)。例えば、基準WLにおける補正オフセット量が基準補正量と等しく、かつ参照WLにおける補正オフセット量が参照補正量と等しいようなオフセットテーブルを生成することにより、二乗和を閾値TH4以下にすることができる。
【0148】
最小の二乗和が閾値TH4以下である場合(S45;yes)、又はS46の処理の後、制御回路11は、二乗和が最小となるオフセットテーブルを抽出する(S47)。
【0149】
S47の処理が終了すると、オフセットテーブル抽出処理は終了となる(終了)。
【0150】
2.2 第2実施形態に係る効果
第2実施形態によれば、メモリコントローラ10は、オフセットテーブル抽出処理に際して、理想オフセット量と、オフセットテーブル内の対応するオフセット補正量との差の二乗和の最小値が閾値TH4を超える場合、新たなオフセットテーブルを生成する。これにより、理想オフセット量に近いオフセット補正量を有するオフセットテーブルを対象ブロックBLKに適用することができる。このため、適用される読出し電圧に基づく読出しデータに含まれるフェイルビット数の増加を抑制できる。
【0151】
2.3 第2実施形態の変形例
上述の第2実施形態には、種々の変形を適用することができる。例えば、上述の第2実施形態では、オフセットテーブルが新たに生成されるたびにオフセット情報32に記憶されるオフセットテーブルの数が増加する場合について説明したが、これに限られない。オフセット情報32に記憶されるオフセットテーブルの数が所定数を超えないように、オフセットテーブル同士をマージしてもよい。
【0152】
以下の説明では、第2実施形態と異なる構成及び動作について主に説明する。第2実施形態と同等の構成及び動作については、説明を適宜省略する。
【0153】
図19は、第2実施形態の変形例に係るメモリシステムにおけるオフセットテーブルマージ処理の一例を示すフローチャートである。
図19に示されるS51~S57の処理は、例えば、
図18におけるS46の処理の後に実行されるものとする。
【0154】
新たなオフセットテーブルTBxが生成されると(開始)、制御回路11は、生成されたオフセットテーブルTBxを除く全てのオフセットテーブルから、対応するオフセット補正量同士の差の二乗和が最小となるオフセットテーブルの組(TBp,TBq)を抽出する(S51)。
【0155】
制御回路11は、対応するオフセット補正量同士の差の二乗和がオフセットテーブルTBxとの間で最小となるオフセットテーブルTByを更に抽出する(S52)。
【0156】
制御回路11は、S51の処理で抽出された組(TBp,TBq)間の二乗和が、S52の処理で抽出された組(TBx,TBy)間の二乗和より小さいか否かを判定する(S53)。
【0157】
組(TBp,TBq)間の二乗和が組(TBx,TBy)間の二乗和より小さい場合(S53;yes)、制御回路11は、オフセットテーブルTBp及びTBqをマージし、新たなオフセットテーブルTBrを生成する(S54)。オフセットテーブルTBrは、例えば、オフセットテーブルTBpのオフセット補正量と、オフセットテーブルTBqの対応するオフセット補正量との内分点(例えば、中点)をオフセット補正量として含む。
【0158】
制御回路11は、オフセットテーブルTBp及びTBqをオフセット情報32から削除すると共に、S54の処理で生成されたオフセットテーブルTBrをオフセット情報32に登録する(S55)。
【0159】
組(TBx,TBy)間の二乗和が組(TBp,TBq)間の二乗和より小さい場合(S53;no)、制御回路11は、オフセットテーブルTBx及びTByをマージし、新たなオフセットテーブルTBzを生成する(S56)。オフセットテーブルTBzは、例えば、オフセットテーブルTBxのオフセット補正量と、オフセットテーブルTByの対応するオフセット補正量との内分点(例えば、中点)をオフセット補正量として含む。
【0160】
制御回路11は、オフセットテーブルTBx及びTByをオフセット情報32から削除すると共に、S56の処理で生成されたオフセットテーブルTBzをオフセット情報32に登録する(S57)。
【0161】
S55の処理の後、又はS57の処理の後、オフセットテーブルマージ処理は終了となる(終了)。
【0162】
第2実施形態の変形例によれば、似ているオフセットテーブル同士を1個にマージする。これにより、新たなオフセットテーブルの生成によって、オフセット情報32のデータサイズが一方的に増加することを抑制できる。なお、マージされるオフセットテーブルは、互いに似たオフセット補正量によって構成されるため、これらを使い分けることによるフェイルビット数の低減効果は比較的小さい。このため、オフセットテーブルのマージによる読出し電圧の推定精度の劣化は最小限に抑えることができる。
【0163】
3. その他
また、上述した第1実施形態、第2実施形態、並びに第1実施形態及び第2実施形態の各々の変形例では、1つのメモリセルトランジスタMTに2ビットのデータを記憶可能な場合について説明したが、これに限られず、3ビット以上のデータを記憶可能な場合についても、同様に適用可能である。
【0164】
また、上述した第2実施形態の変形例では、互いに似ているオフセットテーブルをマージする場合について説明したが、オフセットテーブルの数の増加を抑制する方法はこれに限られない。例えば、制御回路11は、ブロックBLKに現状適用されていないオフセットテーブルを優先的に削除してもよい。これにより、現状のブロックBLKの特性に沿ったオフセットテーブルを生成しつつ、オフセット情報32内のオフセットテーブルの数の増加を抑制できる。
【0165】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0166】
1…情報処理システム
2…ホスト
3…メモリシステム
10…メモリコントローラ
11…制御回路
12…不揮発性メモリインタフェース回路
13…ホストインタフェース回路
14…揮発性メモリインタフェース回路
15…バッファメモリ
16…ECC回路
17…補正量算出回路
20…不揮発性メモリ
30…揮発性メモリ
31…補正量情報
32…オフセット情報