(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024043938
(43)【公開日】2024-04-02
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G11C 16/34 20060101AFI20240326BHJP
G11C 16/04 20060101ALI20240326BHJP
【FI】
G11C16/34 120
G11C16/04 170
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022149189
(22)【出願日】2022-09-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】于 冬暁
(72)【発明者】
【氏名】清岡 雅弘
(72)【発明者】
【氏名】西川 卓
(72)【発明者】
【氏名】小島 慶久
【テーマコード(参考)】
5B225
【Fターム(参考)】
5B225BA01
5B225BA19
5B225CA19
5B225DA03
5B225DA09
5B225DE08
5B225DE16
5B225EA05
5B225FA01
(57)【要約】
【課題】パトロール動作に要する時間を短縮することができるメモリシステムを提供する。
【解決手段】実施形態のメモリシステムは、複数のメモリセルを含むセルユニットと、複数のメモリセルを制御する制御回路16とを備える半導体メモリ10と、半導体メモリ10を制御するメモリコントローラ20とを備える。制御回路16は、セルユニットに対して1つ以上の読み出し電圧を用いて読み出し動作を実行し、読み出し動作によって第1データを取得し、第1データに基づいて、第1データよりデータサイズが小さい第2データを取得し、第2データをメモリコントローラ20に送信する。メモリコントローラ20は、第2データに基づいてセルユニットに書き込まれたページデータを書き直すか否かを判断する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
複数のメモリセルを含むセルユニットと、前記複数のメモリセルを制御する制御回路と、を備える半導体メモリと、
前記半導体メモリを制御するコントローラと、
を具備し、
前記制御回路は、
前記セルユニットに対して1つ以上の読み出し電圧を用いて読み出し動作を実行し、
前記読み出し動作によって第1データを取得し、
前記第1データに基づいて、前記第1データよりデータサイズが小さい第2データを取得し、
前記第2データを前記コントローラに送信し、
前記コントローラは、前記第2データに基づいて前記セルユニットに書き込まれたページデータを書き直すか否かを判断する、
メモリシステム。
【請求項2】
前記制御回路は、前記読み出し動作において、前記セルユニットに対して複数の読み出し電圧を用いて読み出しを実行する、
請求項1に記載のメモリシステム。
【請求項3】
前記制御回路は、前記読み出し動作において、前記セルユニットに対して第1、第2、第3、及び第4読み出し電圧を用いて読み出しを実行することにより前記第1、第2、第3、及び第4読み出し電圧にそれぞれ対応する前記第1データを取得し、前記第2読み出し電圧は前記第1読み出し電圧よりも高く、前記第3読み出し電圧は前記第2読み出し電圧よりも高く、前記第4読み出し電圧は前記第3読み出し電圧よりも高く、前記第1データは、前記第1、第2、第3、及び第4読み出し電圧を用いた前記読み出し動作によって、それぞれオン状態となるメモリセルの第1、第2、第3、及び第4メモリセル数を含み、
前記制御回路は、前記第1、第2、第3、及び第4読み出し電圧と、前記第1、第2、第3、及び第4メモリセル数とに基づいて第1、第2、第3、及び第4差分点をそれぞれ取得し、
前記第1差分点は、前記第1読み出し電圧と前記第2読み出し電圧との相加平均である第1平均値と、前記第2メモリセル数と前記第1メモリセル数との差分である第1値とで表され、
前記第2差分点は、前記第2読み出し電圧と前記第3読み出し電圧との相加平均である第2平均値と、前記第3メモリセル数と前記第2メモリセル数との差分である第2値とで表され、
前記第3差分点は、前記第3読み出し電圧と前記第4読み出し電圧との相加平均である第3平均値と、前記第4メモリセル数と前記第3メモリセル数との差分である第3値とで表され、
前記制御回路は、前記第1差分点、前記第2差分点、及び前記第3差分点を通る近似曲線の極小値に基づいて前記第2データを取得する、
請求項1に記載のメモリシステム。
【請求項4】
前記近似曲線は2次関数によって算出される、
請求項3に記載のメモリシステム。
【請求項5】
前記制御回路は、前記読み出し動作において、前記セルユニットに対して第1、第2、及び第3読み出し電圧を用いて読み出しを実行することにより前記第1、第2、及び第3読み出し電圧にそれぞれ対応する前記第1データを取得し、前記第2読み出し電圧は前記第1読み出し電圧よりも高く、前記第3読み出し電圧は前記第2読み出し電圧よりも高く、前記第1データは、前記第1、第2、及び第3読み出し電圧を用いた前記読み出し動作によって、それぞれオン状態となるメモリセルの第1、第2、及び第3メモリセル数を含み、
前記制御回路は、前記第1、第2、及び第3読み出し電圧と、前記第1、第2、及び第3メモリセル数とに基づいて第1、第2、及び第3差分点をそれぞれ取得し、
前記第1差分点は、前記第1読み出し電圧と前記第2読み出し電圧との相加平均である第1平均値と、前記第2メモリセル数と前記第1メモリセル数との差分である第1差分値とで表され、
前記第2差分点は、前記第2読み出し電圧と前記第3読み出し電圧との相加平均である第2平均値と、前記第3メモリセル数と前記第2メモリセル数との差分である第2差分値とで表され、
横軸に閾値電圧を表し縦軸にメモリセル数を表した場合に、前記第1差分点、前記第2差分点、前記第1平均値に対応する第1閾値電圧、及び前記第2平均値に対応する第2閾値電圧の4点を結ぶ四角形の対角線の交点で表される第1交点を、前記制御回路は算出し、前記制御回路は、前記第1交点に対応するメモリセルの数を前記第2データとする、
請求項1に記載のメモリシステム。
【請求項6】
前記複数のメモリセルのそれぞれは、複数の閾値電圧に応じて異なる値のデータを記憶するように構成され、
前記制御回路は、前記複数の閾値電圧のうちの最も電圧が高い第1閾値電圧以上の閾値電圧を有するメモリセルが記憶する第3データと、前記第1閾値電圧未満の閾値電圧を有するメモリセルが記憶する第4データとを判定する第1読み出し電圧を設定し、
前記制御回路は、前記読み出し動作において、前記セルユニットに対して前記第1読み出し電圧を用いて読み出しを実行することにより前記第1読み出し電圧に対応する前記第1データを取得し、前記第1データは、前記第1読み出し電圧を用いた前記読み出し動作によってオフ状態となったメモリセルの第1メモリセル数を含み、
前記制御回路は、前記セルユニットに含まれる前記複数のメモリセルの数に占める前記第1メモリセル数の割合を算出し、前記割合に基づいて前記第2データを取得する、
請求項1に記載のメモリシステム。
【請求項7】
前記コントローラは、前記第2データが第1閾値より大きいとき、前記セルユニットに書き込まれた前記ページデータの書き直しを実行し、前記第2データが前記第1閾値以下であるとき、前記セルユニットに書き込まれた前記ページデータの書き直しを実行しない、
請求項1に記載のメモリシステム。
【請求項8】
前記複数のメモリセルのそれぞれは、複数の閾値電圧に応じて異なる値のデータを記憶するように構成され、前記読み出し電圧は、前記複数の閾値電圧のうちの隣り合う2つの閾値電圧を有するメモリセルが記憶する異なるデータを判定する電圧である、
請求項1に記載のメモリシステム。
【請求項9】
前記半導体メモリは、前記セルユニットに含まれる前記複数のメモリセルに接続されたワード線をさらに備える、
請求項1に記載のメモリシステム。
【請求項10】
前記第2データは、前記セルユニットに対して前記読み出し動作を実行した場合に、前記読み出し動作で得られたページデータに含まれる誤りビット数に関する値に相関がある値である、
請求項1乃至9のいずれかに記載のメモリシステム。
【請求項11】
複数のメモリセルを含むセルユニットを含む半導体メモリと、
メモリと、
前記半導体メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記セルユニットに対応する読み出し電圧に関する第1値を前記メモリに記憶させ、
前記メモリから前記第1値を取得し、
前記第1値に基づいて第1データを算出し、
前記第1データに基づいて前記セルユニットに書き込まれたページデータを書き直すか否かを判断する、
メモリシステム。
【請求項12】
前記第1値は、第1時刻における第1読み出し電圧と、前記第1時刻の後の第2時刻における第2読み出し電圧との差分値であり、
前記第1読み出し電圧は前記第1時刻において前記複数のメモリセルに対応して設定された電圧であり、前記第2読み出し電圧は前記第2時刻において前記複数のメモリセルに対して実行された第1動作において検出された電圧である、
請求項11に記載のメモリシステム。
【請求項13】
前記複数のメモリセルのそれぞれは、複数の閾値電圧に応じて異なる値のデータを記憶するように構成され、前記第1動作は、前記複数の閾値電圧のうちの隣り合う2つの閾値電圧を有するメモリセルが記憶する異なるデータを判定する電圧を検出するための動作である、
請求項12に記載のメモリシステム。
【請求項14】
複数のメモリセルを含むセルユニットと、前記複数のメモリセルを制御する制御回路と、を備える半導体メモリと、
前記半導体メモリを制御するコントローラと、
を具備し、
前記制御回路は、
前記セルユニットに対して1つ以上の読み出し電圧を用いて第1読み出し動作を実行し、
前記第1読み出し動作によって第1データを取得し、
前記第1データに基づいて、前記第1データよりデータサイズが小さい第2データを取得し、
前記第2データを前記コントローラに送信し、
前記コントローラは、前記第2データに基づいて第1動作を実施するか否かを判断し、
前記第1動作を実施すると前記コントローラが判断した場合、
前記制御回路は、前記セルユニットに対して第2読み出し動作を実行し、前記第2読み出し動作によってページデータを取得し、前記ページデータを前記コントローラに送信し、
前記コントローラは、前記ページデータに基づいて前記セルユニットに書き込まれた前記ページデータを書き直すか否かを判断する、
メモリシステム。
【請求項15】
複数のメモリセルを含むセルユニットと、前記複数のメモリセルを制御する制御回路と、を備える半導体メモリと、
メモリと、
前記半導体メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記セルユニットに対応する読み出し電圧に関する第1値を前記メモリに記憶させ、
前記メモリから前記第1値を取得し、前記第1値に基づいて第1データを算出し、前記第1データに基づいて第1動作を実施するか否かを判断し、
前記第1動作を実施すると前記コントローラが判断した場合、
前記制御回路は、前記セルユニットに対して読み出し動作を実行し、前記読み出し動作によってページデータを取得し、前記ページデータを前記コントローラに送信し、
前記コントローラは、前記ページデータに基づいて前記セルユニットに書き込まれた前記ページデータを書き直すか否かを判断する、
メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発性の半導体メモリとして、例えば、メモリセルが二次元あるいは三次元に配列されたNAND型フラッシュメモリが知られている。NAND型フラッシュメモリと、NAND型フラッシュメモリを制御するメモリコントローラとにより、メモリシステムが構成される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2021/0026728号明細書
【特許文献2】米国特許出願公開第2018/0276073号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
パトロール動作に要する時間を短縮することができるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、複数のメモリセルを含むセルユニットと、前記複数のメモリセルを制御する制御回路と、を備える半導体メモリと、前記半導体メモリを制御するコントローラと、を具備し、前記制御回路は、前記セルユニットに対して1つ以上の読み出し電圧を用いて読み出し動作を実行し、前記読み出し動作によって第1データを取得し、前記第1データに基づいて、前記第1データよりデータサイズが小さい第2データを取得し、前記第2データを前記コントローラに送信し、前記コントローラは、前記第2データに基づいて前記セルユニットに書き込まれたページデータを書き直すか否かを判断する。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係るメモリシステムの構成を示すブロック図である。
【
図2】第1実施形態に係るNAND型フラッシュメモリチップの構成を示す図である。
【
図3】第1実施形態に係るメモリセルアレイ内のブロックの回路図である。
【
図4A】第1実施形態に係るメモリセルアレイの断面図である。
【
図5】第1実施形態に係るメモリセルトランジスタの取り得る閾値電圧分布とデータの関係を示す図である。
【
図6】第1実施形態に係るパトロール動作を示すフローチャートである。
【
図7】第1実施形態に係るパトロールリードの動作を示すフローチャートである。
【
図8】第1実施形態に係るパトロール動作を示すシーケンス図である。
【
図9】第1実施形態に係る誤りビット数を説明する図である。
【
図10】第1実施形態に係る4点リード方式を示す図である。
【
図11】第1実施形態に係る3点リード方式を示す図である。
【
図12】第1実施形態に係る1点リード方式を示す図である。
【
図13】第1実施形態に係る1点リード方式の他例を示す図である。
【
図14】第2実施形態に係るメモリシステムの構成を示すブロック図である。
【
図15】第2実施形態に係るNAND型フラッシュメモリチップの構成を示す図である。
【
図16】第2実施形態に係るパトロール動作を示すフローチャートである。
【
図17】第2実施形態に係るパトロールリードの動作を示すフローチャートである。
【
図18】第2実施形態に係るパトロール動作を示すシーケンス図である。
【
図19】第3実施形態に係るパトロール動作を示すフローチャートである。
【
図20】第3実施形態に係る第1パトロールリードの動作を示すフローチャートである。
【
図21】第3実施形態に係る第2パトロールリードの動作を示すフローチャートである。
【
図22】第3実施形態に係るパトロール動作を示すシーケンス図である。
【
図23】第4実施形態に係るパトロール動作を示すフローチャートである。
【
図24】第4実施形態に係る第1パトロールリードの動作を示すフローチャートである。
【
図25】第4実施形態に係る第2パトロールリードの動作を示すフローチャートである。
【
図26】第4実施形態に係るパトロール動作を示すシーケンス図である。
【
図27】第5実施形態に係るメモリシステムの構成を示すブロック図である。
【
図28】第5実施形態に係るパトロール動作を示すフローチャートである。
【
図29】第5実施形態に係る履歴値検査の動作を示すフローチャートである。
【
図30】第5実施形態に係るパトロール動作を示すシーケンス図である。
【
図31】第5実施形態に係る履歴値テーブルの一例を示す図である。
【
図32】第5実施形態に係る履歴値テーブルの更新値が更新される動作を示すフローチャートである。
【
図33】第5実施形態に係るトラッキング動作における2つのステートの閾値電圧分布を示す図である。
【
図34】第5実施形態に係るブロックの状態が遷移する様子を示す図である。
【
図35】第5実施形態に係る2つのステートの閾値電圧分布を示す図である。
【
図36】第5実施形態に係る読み出し電圧の更新値と初期値の差分値と、FBC推定値との関係を示す図である。
【
図37】第6実施形態に係るパトロール動作を示すフローチャートである。
【
図38】第6実施形態に係る履歴値検査の動作を示すフローチャートである。
【
図39】第6実施形態に係るパトロールリードの動作を示すフローチャートである。
【
図40】第6実施形態に係るパトロール動作を示すシーケンス図である。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、以下に示す実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、構成部品の材質、形状、構造、及び配置等を下記のものに特定するものではない。
【0008】
機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。以下では、半導体メモリとして、メモリセルトランジスタが半導体基板の上方に三次元に積層された三次元積層型NAND型フラッシュメモリを例に挙げて説明する。
【0009】
1.第1実施形態
第1実施形態のメモリシステムについて説明する。
【0010】
1.1 構成
1.1.1 メモリシステム
まず、第1実施形態のメモリシステムの構成について説明する。
図1は、第1実施形態に係るメモリシステムの構成を示すブロック図である。
【0011】
メモリシステム1は、半導体メモリ10及びメモリコントローラ20を備える。メモリシステム1は、外部のホスト2に接続され、ホスト2からの命令に応じて各種動作を実行し得る。
【0012】
半導体メモリ10は、例えば、1つまたは複数のNAND型フラッシュメモリチップ10_1、10_2、…、10_n(nは1以上の自然数)を含む。ここでは、半導体メモリ10は、4つのNAND型フラッシュメモリチップ10_1、10_2、10_3、10_4を含むものとする。NAND型フラッシュメモリチップ10_1~10_4の各々は、複数のメモリセルを備え、データを不揮発に記憶する。半導体メモリ10が含むNAND型フラッシュメモリチップ10_1~10_4の詳細については後述する。以降、NAND型フラッシュメモリチップ10_1~10_4を、NANDメモリとも称する。
【0013】
メモリコントローラ20は、NANDバスを介して半導体メモリ10に接続される。NANDバスは、NANDインターフェースに従った信号の送受信に用いられる。メモリコントローラ20は、また、ホストバスを介してホスト2に接続される。メモリコントローラ20は、半導体メモリ10を制御する。メモリコントローラ20は、また、ホスト2から受信した命令に応じて、半導体メモリ10にアクセスする。
【0014】
半導体メモリ10とメモリコントローラ20を含むメモリシステム1は、例えば、それらの組み合わせにより一つの半導体装置を構成してもよい。メモリシステム1の例としては、SSD(solid state drive)や、SDTMカードを含むメモリカード等が挙げられる。また、メモリコントローラ20は、例えば、SoC(system-on-a-chip)のような回路によって構成される。
【0015】
ホスト2は、例えば、データセンタ内のサーバやパーソナルコンピュータである。
【0016】
1.1.2 メモリコントローラ
次に、
図1を用いて、メモリコントローラ20の構成について説明する。メモリコントローラ20は、プロセッサ(または、CPU(central processing unit))21、メモリ22、ECC(error checking and correcting)回路23_1及び23_2、NANDインターフェース(NAND I/F)24_1及び24_2、並びにホストインターフェース(ホストI/F)25を備える。
【0017】
プロセッサ21は、メモリコントローラ20全体の動作を制御する。例えば、プロセッサ21は、ホスト2から書き込み命令を受信した際には、それに応じて、NANDインターフェース24_1あるいは24_2に対して書き込み命令を発行する。プロセッサ21は、また、ホスト2から読み出し命令を受信した際には、それに応じて、NANDインターフェース24_1あるいは24_2に対して読み出し命令を発行する。プロセッサ21は、また、消去動作を実行する際には、NANDインターフェース24_1あるいは24_2に対して消去命令を発行する。また、プロセッサ21は、リフレッシュ判断回路21Aを有する。リフレッシュ判断回路21Aは、誤りビット数(fail bit count)の推定値あるいは誤りビット数に基づいてリフレッシュ処理を実施するか否かを判断する。リフレッシュ判断回路21Aについては後述する。また、プロセッサ21は、ウェアレベリング等、半導体メモリ10を管理するための様々な処理を実行する。本明細書に記載されるプロセッサ21(及びリフレッシュ判断回路21A)の機能は、プロセッサ21がソフトウェア(または、ファームウェア)を実行することによって実現されてもよいし、またはハードウェア(または、専用回路)で実現されてもよい。
【0018】
メモリ22は、例えば、DRAM(dynamic random access memory)やSRAM(static random access memory)等の半導体メモリであり、プロセッサ21の作業領域として使用される。メモリ22は、各種の情報を記憶するバッファ、半導体メモリ10を管理するためのファームウェア、及び各種の管理テーブル等を記憶する。管理テーブルは、例えば、後述する読み出し電圧に関する履歴値テーブルを含む。
【0019】
ECC回路23_1及び23_2は、データのエラー訂正処理を実行する。書き込み動作時においてECC回路23_1及び23_2は、ホスト2から受信した書き込みデータに基づいてパリティを生成し、生成したパリティを書き込みデータに付与する。読み出し動作時においてECC回路23_1及び23_2は、半導体メモリ10から受信した読み出しデータに基づいてシンドロームを生成し、生成したシンドロームに基づいて読み出しデータのエラーを検出及び訂正する。
【0020】
NANDインターフェース24_1は、NANDバスを介してNANDメモリ10_1及び10_2と接続され、NANDメモリ10_1及び10_2との通信を司る。NANDインターフェース24_1は、プロセッサ21から受信した命令に基づき、種々の信号をNANDメモリ10_1及び10_2へ送信し、また種々の信号をNANDメモリ10_1及び10_2から受信する。
【0021】
同様に、NANDインターフェース24_2は、NANDバスを介してNANDメモリ10_3及び10_4と接続され、NANDメモリ10_3及び10_4との通信を司る。NANDインターフェース24_2は、プロセッサ21から受信した命令に基づき、種々の信号をNANDメモリ10_3及び10_4へ送信し、また種々の信号をNANDメモリ10_3及び10_4から受信する。
【0022】
ホストインターフェース25は、ホストバスを介してホスト2と接続され、ホスト2との通信を司る。ホストインターフェース25は、ホスト2から受信した命令及びデータを、それぞれプロセッサ21、及びメモリ22に転送する。
【0023】
1.1.3 半導体メモリ
次に、半導体メモリ10に含まれるNANDメモリ10_1~10_4の構成について説明する。以下に、NANDメモリ10_1の構成を述べる。その他のNANDメモリ10_2~10_4の各々の構成は、NANDメモリ10_1と同様である。
【0024】
図2は、第1実施形態に係るNANDメモリ10_1の構成を示す図である。
【0025】
NANDメモリ10_1は、メモリセルアレイ11、入出力回路12、ロジック制御回路13、レディ/ビジー回路14、レジスタ群15、制御回路16、電圧生成回路17、ロウデコーダ18、カラムデコーダ19A、データレジスタ19B、及びセンスアンプ19Cを備える。レジスタ群15は、ステータスレジスタ15A、アドレスレジスタ15B、及びコマンドレジスタ15Cを備える。
【0026】
メモリセルアレイ11は、1つまたは複数のブロックBLK0,BLK1,BLK2,…,BLKm(mは0以上の整数)を備える。複数のブロックBLK0~BLKmの各々は、ロウ及びカラムに対応付けられた複数のメモリセルトランジスタ(以下、メモリセルとも記す)を含む。メモリセルトランジスタは、電気的に消去およびプログラム可能な不揮発性メモリセルである。メモリセルアレイ11は、メモリセルトランジスタに電圧を印加するための、複数のワード線、複数のビット線、及びソース線を含む。ブロックBLKmの具体的な構成については後述する。
【0027】
入出力回路12及びロジック制御回路13は、入出力端子(または、NANDバス)を介してメモリコントローラ20に接続される。入出力回路12は、メモリコントローラ20との間で入出力端子を介して、入出力信号(I/O信号)DQ(例えば、DQ0、DQ1、DQ2、…、DQ7)を送受信する。I/O信号DQは、コマンド、アドレス、及びデータ等を通信する。
【0028】
ロジック制御回路13は、メモリコントローラ20から入出力端子(または、NANDバス)を介して、制御信号を受信する。制御信号は、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、書き込みイネーブル信号WEn、読み出しイネーブル信号REn、及びライトプロテクト信号WPnを含む。信号名に付記された“n”は、その信号がアクティブ・ローであることを示す。
【0029】
チップイネーブル信号CEnは、半導体メモリ10にNANDメモリが複数実装されている場合、1つのNANDメモリを選択する際にアサートされる。コマンドラッチイネーブル信号CLEは、信号DQとして送信されるコマンドをコマンドレジスタ15Cにラッチすることを可能にする。アドレスラッチイネーブル信号ALEは、信号DQとして送信されるアドレスをアドレスレジスタ15Bにラッチすることを可能にする。書き込みイネーブル信号WEnは、信号DQとして送信されるデータをデータレジスタ19Bに記憶することを可能にする。読み出しイネーブル信号REnは、メモリセルアレイ11から読み出したデータを、信号DQとして出力することを可能にする。ライトプロテクト信号WPnは、NANDメモリに対する書き込み動作及び消去動作を禁止する際にアサートされる。
【0030】
レディ/ビジー回路14は、制御回路16からの制御に応じて、レディ/ビジー信号R/Bnを生成する。レディ/ビジー信号R/Bnは、NANDメモリ10_1がレディ状態であるか、あるいはビジー状態であるかを示す。レディ状態は、NANDメモリ10_1がメモリコントローラ20からの命令を受け付け可能な状態であることを示す。ビジー状態は、NANDメモリ10_1がメモリコントローラ20からの命令を受け付けできない状態であることを示す。メモリコントローラ20は、NANDメモリ10_1からレディ/ビジー信号R/Bnを受けることで、NANDメモリ10_1がレディ状態であるか、あるいはビジー状態であるかを知ることができる。
【0031】
ステータスレジスタ15Aは、NANDメモリ10_1の動作に必要なステータス情報STSを記憶する。ステータスレジスタ15Aは、制御回路16の指示に従って、ステータス情報STSを入出力回路12に転送する。
【0032】
アドレスレジスタ15Bは、入出力回路12から転送されたアドレスADDを記憶する。アドレスADDは、ロウアドレス及びカラムアドレスを含む。ロウアドレスは、例えば、動作対象のブロックBLKmを指定するブロックアドレス、及び指定されたブロック内の動作対象のワード線WLを指定するページアドレスを含む。
【0033】
コマンドレジスタ15Cは、入出力回路12から転送されたコマンドCMDを記憶する。コマンドCMDは、例えば、制御回路16に書き込み動作を命ずる書き込みコマンド、読み出し動作を命ずる読み出しコマンド、及び消去動作を命ずる消去コマンドなどを含む。
【0034】
ステータスレジスタ15A、アドレスレジスタ15B、及びコマンドレジスタ15Cには、例えばSRAM(static random access memory)が用いられる。
【0035】
制御回路16は、コマンドレジスタ15Cからコマンドを受け、このコマンドに基づくシーケンスに従ってNANDメモリ10_1を統括的に制御する。
【0036】
制御回路16は、電圧生成回路17、ロウデコーダ18、カラムデコーダ19A、データレジスタ19B、及びセンスアンプ19Cなどを制御して、書き込み動作、読み出し動作、及び消去動作を実行する。具体的には、制御回路16は、コマンドレジスタ15Cから受信した書き込みコマンドに基づいて、アドレスADDにて指定された複数のメモリセルトランジスタにデータを書き込む。制御回路16は、またコマンドレジスタ15Cから受信した読み出しコマンドに基づいて、アドレスADDにて指定された複数のメモリセルトランジスタからデータを読み出す。制御回路16は、またコマンドレジスタ15Cから受信した消去コマンドに基づいて、アドレスADDにて指定されたブロックに記憶されたデータを消去する。
【0037】
制御回路16は、またFBC推定値生成回路16Aを有する。FBC推定値生成回路16Aは、FBC推定値を算出する。FBC推定値及びFBC推定値生成回路16Aについては後述する。本明細書に記載される制御回路(及びFBC推定値生成回路16A)の機能は、制御回路16がソフトウェア(または、ファームウェア)を実行することによって実現されてもよいし、またはハードウェア(または、専用回路)で実現されてもよい。
【0038】
電圧生成回路17は、NANDメモリ10_1の外部から電源端子(図示せず)を介して電源電圧VDD及び接地電圧VSSを受け取る。電源電圧VDDは、半導体メモリ10の外部から供給される外部電圧であり、例えば3.3Vである。接地電圧VSSは、半導体メモリ10の外部から供給される外部電圧であり、例えば0Vである。
【0039】
電圧生成回路17は、電源電圧VDDを用いて、書き込み動作、読み出し動作、及び消去動作に必要な複数の電圧を生成する。電圧生成回路17は、生成した電圧を、メモリセルアレイ11、ロウデコーダ18、及びセンスアンプ19Cなどに供給する。
【0040】
ロウデコーダ18は、アドレスレジスタ15Bからロウアドレスを受け、このロウアドレスをデコードする。ロウデコーダ18は、ロウアドレスのデコード結果に基づいて、複数ブロックのうちのいずれかを選択し、さらに選択したブロックBLKm内のワード線WLを選択する。さらに、ロウデコーダ18は、選択されたブロックBLKmに電圧生成回路17から供給された複数の電圧を転送する。
【0041】
カラムデコーダ19Aは、アドレスレジスタ15Bからカラムアドレスを受け、このカラムアドレスをデコードする。カラムデコーダ19Aは、カラムアドレスのデコード結果に基づいてデータレジスタ19B内のラッチ回路を選択する。
【0042】
データレジスタ19Bは、複数のラッチ回路を備える。ラッチ回路は、書き込みデータまたは読み出しデータを一時的に記憶する。
【0043】
センスアンプ19Cは、データの読み出し動作時には、メモリセルトランジスタからビット線に読み出されたデータをセンス及び増幅する。さらに、センスアンプ19Cは、メモリセルトランジスタから読み出された読み出しデータDATを一時的に記憶し、記憶した読み出しデータDATをデータレジスタ19Bへ転送する。また、センスアンプ19Cは、データの書き込み動作時には、入出力回路12からデータレジスタ19Bを介して転送された書き込みデータDATを一時的に記憶する。さらに、センスアンプ19Cは、書き込みデータDATをビット線に転送する。
【0044】
1.1.4 メモリセルアレイ
1.1.4.1 メモリセルアレイの回路構成
次に、NANDメモリ10_1のメモリセルアレイ11の回路構成について説明する。メモリセルアレイ11は、前述したように、複数のブロックBLK0~BLKmを有する。以下に、ブロックBLKmの回路構成について説明する。
【0045】
図3は、メモリセルアレイ11内のブロックBLKmの回路図である。ブロックBLKmは、例えば、複数のストリングユニットSU0、SU1、SU2、SU3を備える。以降、ストリングユニットSUと記した場合、ストリングユニットSU0~SU3のいずれかを示すものとする。ストリングユニットSUは、複数のNANDストリング(または、メモリストリング)NSを備える。
【0046】
ここでは、説明を平易にするために、NANDストリングNSが、例えば、8個のメモリセルトランジスタMT0、MT1、MT2、…、MT7、及び2個のセレクトトランジスタST1、ST2を備える例を示す。以降、メモリセルトランジスタMTと記した場合、メモリセルトランジスタMT0~MT7のいずれかを示すものとする。
【0047】
メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に記憶する。メモリセルトランジスタMT0~MT7は、セレクトトランジスタST1のソースとセレクトトランジスタST2のドレインとの間に直列に接続される。メモリセルトランジスタMTは、1ビットのデータ、または2ビット以上のデータを記憶することが可能である。
【0048】
ストリングユニットSU0に含まれる複数のセレクトトランジスタST1のゲートは、セレクトゲート線SGD0に接続される。同様に、ストリングユニットSU1~SU3の各々のセレクトトランジスタST1のゲートは、セレクトゲート線SGD1~SGD3にそれぞれ接続される。セレクトゲート線SGD0~SGD3の各々は、ロウデコーダ18によって独立に制御される。
【0049】
ストリングユニットSU0に含まれる複数のセレクトトランジスタST2のゲートは、セレクトゲート線SGSに接続される。同様に、ストリングユニットSU1~SU3の各々のセレクトトランジスタST2のゲートは、セレクトゲート線SGSに接続される。なお、ストリングユニットSU0~SU3の各々のセレクトトランジスタST2のゲートには、異なるセレクトゲート線SGSがそれぞれ接続される場合もある。セレクトトランジスタST1及びST2は、各種動作におけるストリングユニットSUの選択に使用される。
【0050】
ブロックBLKmに含まれるメモリセルトランジスタMT0~MT7の制御ゲートは、ワード線WL0~WL7にそれぞれ接続される。ワード線WL0~WL7の各々は、ロウデコーダ18によって独立に制御される。
【0051】
ビット線BL0~BLr(rは0以上の整数)の各々は、複数のブロックBLK0~BLKmに接続され、ブロックBLKmに含まれるストリングユニットSU内の1つのNANDストリングNSに接続される。すなわち、ビット線BL0~BLrの各々は、ブロックBLKm内でマトリクス状に配置されたNANDストリングNSのうち、同一列にある複数のNANDストリングNSのセレクトトランジスタST1のドレインに接続される。また、ソース線SLは、複数のブロックBLK0~BLKmに接続される。すなわち、ソース線SLは、ブロックBLKmに含まれる複数のセレクトトランジスタST2のソースに接続される。
【0052】
要するに、ストリングユニットSUは、異なるビット線BLに接続され、かつ同一のセレクトゲート線SGDに接続されたNANDストリングNSを複数含む。また、ブロックBLKmは、ワード線WLを共通にする複数のストリングユニットSUを含む。さらに、メモリセルアレイ11は、ビット線BLを共通にする複数のブロックBLK0~BLKmを含む。
【0053】
ブロックBLKmは、例えば、データの消去単位である。すなわち、ブロックBLKm内に含まれるメモリセルトランジスタMTに記憶されたデータは、一括して消去される。複数ブロック内のデータは、ブロック毎に順次消去される。また、複数ブロック内のデータは、並行して消去される。なお、データは、ストリングユニットSU単位で消去されてもよいし、また、ストリングユニットSU未満の単位で消去されてもよい。
【0054】
1つのストリングユニットSU内でワード線WLを共有する複数のメモリセルトランジスタMTを、セルユニットCUと呼ぶ。セルユニットCUに含まれる複数のメモリセルトランジスタMTがそれぞれ記憶する1ビットのデータの集まりをページデータと呼ぶ。セルユニットCUの記憶容量は、メモリセルトランジスタMTが記憶するデータのビット数に応じて変化する。例えば、セルユニットCUは、各メモリセルトランジスタMTが1ビットデータを記憶する場合に1ページデータを記憶する。セルユニットCUは、各メモリセルトランジスタMTが2ビットデータを記憶する場合に2ページデータを記憶する。セルユニットCUは、各メモリセルトランジスタMTが3ビットデータを記憶する場合に3ページデータを記憶する。
【0055】
セルユニットCUに対する書き込み動作及び読み出し動作は、ページデータを単位として行われる。言い換えると、読み出し動作及び書き込み動作は、1つのストリングユニットSUの1本のワード線WLに接続された複数のメモリセルトランジスタMTに対して、一括して行われる。
【0056】
なお、ブロックBLKmが備えるストリングユニットの数は、4(SU0~SU3)に限られるわけではなく、任意に設定可能である。また、ストリングユニットSUに含まれるNANDストリングNSの数、及びNANDストリングNSが備えるメモリセルトランジスタ、及びセレクトトランジスタの数も、任意に設定可能である。さらに、メモリセルトランジスタMTは、電荷蓄積層として絶縁膜を用いたMONOS(metal-oxide-nitride-oxide-silicon)型であってもよいし、電荷蓄積層として導電層を用いたFG(floating gate)型であってもよい。
【0057】
1.1.4.2 メモリセルアレイの構造
次に、第1実施形態のNANDメモリ10_1内のメモリセルアレイ11の構造の一例について説明する。
図4Aは、第1実施形態に係るNANDメモリ10_1におけるメモリセルアレイ11の断面構造を示す図である。
図4Aにおいて、半導体基板30面に平行で互いに直交する2方向をX方向及びY方向とし、これらX方向及びY方向を含む面(XY面)に直交する方向をZ方向とする。X方向はワード線WLの延伸方向に対応し、Y方向はビット線BLの延伸方向に対応し、Z方向はワード線WLが積層される方向に対応する。なお、
図4Aでは図を見易くするために配線やコンタクト、絶縁層等の構成要素が適宜省略されている。
【0058】
図4Aに示すように、メモリセルアレイ11は、半導体基板30の上方に設けられた導電層31~35、メモリピラーMP、コンタクトプラグCV1、及びスリットSLTを含む。
【0059】
半導体基板30の上方に導電層31が設けられる。導電層31は、半導体基板30の主面(あるいは、XY面)に平行な平板状に形成される。この導電層31は、ソース線SLとして機能する。導電層31は、例えば、不純物がドープされたポリシリコン、あるいはタングステン(W)を含む。
【0060】
導電層31上には、XZ面に沿った複数のスリットSLTが、Y方向に配列される。導電層31上かつ隣り合うスリットSLT間の構造体(または、積層体)が、例えば複数のストリングユニットSUに対応する。
【0061】
導電層31上かつ隣り合うスリットSLT間には、下層から順に、導電層32、複数の導電層33、及び導電層34が設けられる。これらの導電層のうちZ方向に隣り合う導電層は、層間絶縁膜を介して積層される。導電層32~34は、それぞれがXY面に平行な平板状に形成される。導電層32は、セレクトゲート線SGSとして機能する。複数の導電層33は、下層から順に、それぞれワード線WL0~WL7として機能する。導電層34は、セレクトゲート線SGDとして機能する。導電層32~34は、例えばタングステン(W)あるいはポリシリコンを含む。
【0062】
複数のメモリピラーMPは、例えば、X方向及びY方向に千鳥状に配列される。複数のメモリピラーMPの各々は、スリットSLT間の積層体内をZ方向に延伸(または、貫通)している。各メモリピラーMPは、導電層34の上方から導電層31の上面に達するように、導電層34,33,32を通過して設けられる。各メモリピラーMPは、例えば、ブロック絶縁層40、電荷蓄積層41、トンネル絶縁層(トンネル絶縁膜とも称する)42、及び半導体層43を有する。メモリピラーMPの各々は、1つのNANDストリングNSとして機能する。
【0063】
メモリピラーMPの上方には、層間絶縁膜を介して複数の導電層35が設けられる。複数の導電層35はX方向に配列される。各導電層35は、Y方向に延伸したライン状の配線層であり、ビット線BLとして機能する。各導電層35は、ストリングユニットSU毎に、対応する1つのメモリピラーMPと電気的に接続される。具体的には、各ストリングユニットSUにおいて、各メモリピラーMPの半導体層43上にコンタクトプラグCV1が設けられ、コンタクトプラグCV1上に1つの導電層35が設けられる。導電層35は、例えばアルミニウム(Al)あるいはタングステン(W)を含む。コンタクトプラグCV1は、導電層、例えばタングステン(W)を含む。
【0064】
以上の構造が、
図4Aを記載した紙面に直交する方向(奥行き方向)に複数配列されており、奥行き方向に並ぶ複数のメモリピラーMP(即ち、NANDストリングNS)の集合によってストリングユニットSUが構成される。
【0065】
なお、ワード線WL、及びセレクトゲート線SGD及びSGSの本数は、それぞれメモリセルトランジスタMT、及びセレクトトランジスタST1及びST2の個数に従って変更される。
【0066】
図4Bは、
図4AのV-V線に沿った断面図であり、メモリセルアレイ11内のメモリピラーMPの断面構造を示す。
図4Bは、半導体基板30の表面に平行かつ導電層33を含む層におけるメモリピラーMPの断面を示している。
【0067】
メモリピラーMPは、上述したように、例えばブロック絶縁層40、電荷蓄積層41、トンネル絶縁層(トンネル絶縁膜とも称する)42、及び半導体層43を有する。具体的には、メモリピラーMPを形成するためのメモリホールの内壁に、ブロック絶縁層40が設けられる。ブロック絶縁層40の内壁に、電荷蓄積層41が設けられる。電荷蓄積層41の内壁に、トンネル絶縁層42が設けられる。さらに、トンネル絶縁層42の内側に半導体層43が設けられる。言い換えると、半導体層43は、例えばメモリピラーMPの中央部に設けられる。トンネル絶縁層42は、半導体層43の側面を囲っている。電荷蓄積層41は、トンネル絶縁層42の側面を囲っている。ブロック絶縁層40は、電荷蓄積層41の側面を囲っている。導電層33は、ブロック絶縁層40の側面を囲っている。なお、メモリピラーMPは、半導体層43の内部にコア絶縁層を設けた構造としてもよい。
【0068】
上述したメモリピラーMPの構造において、メモリピラーMPと導電層32とが交差する部分が、セレクトトランジスタST2として機能する。メモリピラーMPと複数の導電層33とが交差する部分が、それぞれメモリセルトランジスタMT0~MT7として機能する。さらに、メモリピラーMPと導電層34とが交差する部分が、セレクトトランジスタST1として機能する。
【0069】
半導体層43は、メモリセルトランジスタMT0~MT7、並びにセレクトトランジスタST1及びST2のチャネル層として機能する。半導体層43の内部には、NANDストリングNSの電流経路が形成される。
【0070】
トンネル絶縁層42は、半導体層43から電荷蓄積層41に電荷が注入される際、または電荷蓄積層41に蓄積された電荷が半導体層43へ拡散する際に電位障壁として機能する。トンネル絶縁層42は、例えばシリコン酸化膜を含む。
【0071】
電荷蓄積層41は、メモリセルトランジスタMT0~MT7において半導体層43から注入される電荷を蓄積する機能を有する。電荷蓄積層41は、例えば、絶縁層であり、シリコン窒化膜を含む。
【0072】
ブロック絶縁層40は、電荷蓄積層41に蓄積された電荷が導電層33(ワード線WL)へ拡散するのを防止する。ブロック絶縁層40は、例えばアルミニウム酸化層、シリコン酸化層及びシリコン窒化層を含む。
【0073】
1.1.5 メモリセルトランジスタの閾値電圧分布
次に、メモリセルトランジスタMTの取り得る閾値電圧分布とデータの関係について説明する。
【0074】
図5は、メモリセルトランジスタMTの取り得る閾値電圧分布とデータの関係を示す図である。ここでは、メモリセルトランジスタMTの記憶方式として、1つのメモリセルトランジスタMTに3ビットのデータを記憶可能なTLC(Triple-Level Cell)方式を適用した例を示す。なお、本実施形態は、1つのメモリセルトランジスタMTに1ビットのデータを記憶可能なSLC(Single-Level Cell)方式、1つのメモリセルトランジスタMTに2ビットのデータを記憶可能なMLC(Multi-Level Cell)方式、1つのメモリセルトランジスタMTに4ビットのデータを記憶可能なQLC(Quad-Level Cell)方式等、その他の記憶方式を用いた場合にも適用できる。
【0075】
メモリセルトランジスタMTが記憶可能な3ビットのデータは、下位(lower)ビット、中位(middle)ビット、及び上位(upper)ビットを含む。メモリセルトランジスタMTが3ビットを記憶する場合、メモリセルトランジスタMTは、複数の閾値電圧に対応する8つの状態(ステート)のうちのいずれかのステートを取り得る。8つのステートを、低い方から順に、ステート“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”と呼ぶ。ステート“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”の各々に属する複数のメモリセルトランジスタMTは、
図5に示すような閾値電圧の分布を形成する。
【0076】
ステート“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”には、例えば、それぞれデータ“111”、“110”、“100”、“000”、“010”、“011”、“001”、“101”が割り当てられる。ビットの並びは、下位ビットを“X”、中位ビットを“Y”、上位ビットを“Z”とすると、“Z、Y、X”である。なお、閾値電圧分布とデータとの割り当ては、任意に設定可能である。
【0077】
読み出し対象のメモリセルトランジスタMTに記憶されたデータを読み出すために、メモリセルトランジスタMTの閾値電圧が属するステートが判定される。ステートの判定のために、読み出し電圧AR、BR、CR、DR、ER、FR、GRが用いられる。以下、読み出し電圧AR、BR、CR、DR、ER、FR、およびGRを含め、閾値電圧の判定ために読み出し対象のメモリセルトランジスタMTが接続されたワード線WLに印加される電圧は、読み出し電圧VCGRVと称される場合がある。
【0078】
ステート“Er”は、例えば、データが消去された状態(消去状態)に相当する。ステート“Er”に属するメモリセルトランジスタMTの閾値電圧は、電圧ARより低く、例えば負の値を有する。
【0079】
ステート“A”~“G”は、電荷蓄積層に電荷が注入されてメモリセルトランジスタMTにデータが書き込まれた状態に相当する。ステート“A”~“G”に属するメモリセルトランジスタMTの閾値電圧は、例えば正の値を有する。ステート“A”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧ARより高く、かつ読み出し電圧BR以下である。ステート“B”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧BRより高く、かつ読み出し電圧CR以下である。ステート“C”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧CRより高く、かつ読み出し電圧DR以下である。ステート“D”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧DRより高く、かつ読み出し電圧ER以下である。ステート“E”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧ERより高く、かつ読み出し電圧FR以下である。ステート“F”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧FRより高く、かつ読み出し電圧GR以下である。ステート“G”に属するメモリセルトランジスタMTの閾値電圧は、読み出し電圧GRより高く、電圧VREADより低い。
【0080】
電圧VREADは、読み出し非対象のセルユニットCUのメモリセルトランジスタMTに接続されたワード線WLに印加される電圧であり、いずれのステートにあるメモリセルトランジスタMTの閾値電圧よりも高い。このため、接続されたワード線WL(すなわち、制御ゲート)に電圧VREADが印加されたメモリセルトランジスタMTは、保持するデータに関わらずオン状態になる。
【0081】
また、隣り合う閾値分布の間には、それぞれ書き込み動作で使用されるベリファイ電圧が設定される。具体的には、ステート“A”、“B”、“C”、“D”、“E”、“F”、“G”に対応して、それぞれベリファイ電圧AV、BV、CV、DV、EV、FV、GVが設定される。例えば、ベリファイ電圧AV、BV、CV、DV、EV、FV、GVはそれぞれ、読み出し電圧AR、BR、CR、DR、ER、FR、GRより若干高く設定される。
【0082】
以上のように、各メモリセルトランジスタMTは、8個のステートのいずれかに設定され、3ビットデータを記憶することが可能である。また、書き込み及び読み出しは、1つのセルユニットCUに記憶されるページデータ単位で行われる。メモリセルトランジスタMTが3ビットデータ(下位ビット、中位ビット、及び上位ビット)を記憶している場合、セルユニットCUが保持する下位ビットの集合、中位ビットの集合、及び上位ビットの集合は、それぞれ下位(lower)ページデータ、中位(middle)ページデータ、及び上位(upper)ページデータと呼ばれる。
【0083】
上記したデータの割り付けが適用された場合、下位ページデータは、読み出し電圧AR、ERを用いた読み出し動作によって確定する。中位ページデータは、読み出し電圧BR、DR、FRを用いた読み出し動作によって確定する。上位ページデータは、読み出し電圧CR、GRを用いた読み出し動作によって確定する。
【0084】
1.2 動作
第1実施形態のメモリシステム1における動作について説明する。メモリシステム1では、半導体メモリ10のNANDメモリにおけるデータ保持の信頼性を高めるために、定期的(あるいは不定期)にNANDメモリにおけるデータ保持状態を調べ、データ保持状態に基づいてリフレッシュ処理が実行される。このような、定期的に半導体メモリ10におけるデータ保持状態を調べ、データ保持状態に基づいてリフレッシュ処理を実行する動作を、パトロール動作と称する。リフレッシュ処理は、半導体メモリ10のNANDメモリ内のあるブロックに書き込まれたデータを、誤り訂正を施した上で別のブロック(または当該ブロック)に書き直すことにより、データに含まれる誤りビット数を低減させる処理である。
【0085】
1.2.1 パトロール動作
第1実施形態のメモリシステム1におけるパトロール動作について説明する。メモリコントローラ20と半導体メモリ10間の動作として、第1実施形態及び以降の実施形態では、メモリコントローラ20とNANDメモリ10_1間の動作を例に示す。
【0086】
図6は、第1実施形態に係るパトロール動作を示すフローチャートである。
図7は、パトロール動作におけるパトロールリードの動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図8は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0087】
図6に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0088】
パトロール動作が開始されると、パトロールリードが実施される(S1)。すなわち、
図8に示すように、メモリコントローラ20は、NANDメモリ10_1にパトロールリードの実施を命令する(S1_1)。パトロールリードの実施命令を受けると、NANDメモリ10_1は、パトロールリードを開始する。
【0089】
図7及び
図8を用いて、パトロールリードの動作を説明する。第1実施形態のパトロールリードは、NANDメモリ10_1のブロックBLK0~BLKmに含まれる複数のセルユニットCUのうちの1つのセルユニットCU(以下、対象セルユニット)に対して読み出し動作を実施し、読み出したデータに基づいて、対象セルユニットが記憶するページデータ(以下、対象ページデータ)に含まれていると推定される誤りビット数(fail bit count)の推定値をNANDメモリ10_1が算出する動作である。以降、誤りビット数の推定値を、FBC推定値と称する。
【0090】
パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、対象セルユニットに対して読み出し動作を実施する(S1_2)。
【0091】
次に、NANDメモリ10_1の制御回路16に含まれるFBC推定値生成回路16Aは、読み出し動作により得られた読み出し結果に基づいて、対象ページデータに含まれていると推定されるFBC推定値を算出する(S1_3)。FBC推定値の算出では、読み出した対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、NANDメモリ10_1が備えるFBC推定値生成回路16Aにより、FBC推定値が算出される。FBC推定値の算出の動作の詳細については後述する。
【0092】
次に、制御回路16は、FBC推定値をメモリコントローラ20に送信する(S1_4)。以上により、パトロールリードが終了する。
【0093】
次に、
図6及び
図8に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、FBC推定値に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S2)。すなわち、リフレッシュ判断回路21Aは、FBC推定値に基づいて対象ページデータを書き直すか否かを判断する。
【0094】
具体的には、FBC推定値が基準値(または、閾値)C1より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図6のS2でYES)、リフレッシュ処理が実施される(S3)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S3_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S3_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S3_3)。
【0095】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S3_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S3_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S3_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0096】
一方、FBC推定値が基準値C1以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図6のS2でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0097】
なお、上述のパトロール動作は、NANDメモリ10_1のブロックBLK0~BLKmのそれぞれに含まれる複数セルユニットのそれぞれに対して実行される。NANDメモリ10_2~10_4に対しても同様に、パトロール動作は、ブロックBLK0~BLKmのそれぞれに含まれる複数セルユニットのうちのそれぞれに対して実行される。なお、パトロール動作は、NANDメモリ10_1~10_4のそれぞれのブロックBLK0~BLKmにそれぞれ含まれる複数セルユニットのうちの、1つのセルユニットのみに対して実行されてもよい。
【0098】
また、リフレッシュ処理は、ブロック毎に実施される。あるブロック内の1つの対象ページデータがリフレッシュ処理を実施する必要があると判断された場合、それ以降、そのブロック内の残りのセルユニットに対してパトロール動作は実施されない。そして、そのブロックに対するパトロール動作が終了した後、そのブロックに対してリフレッシュ処理が実施される。
【0099】
ここで、リフレッシュ処理の実施判断に用いられる基準値C1について詳述する。
図6に、基準値C1と基準値C0の大小関係を示す。基準値C1は、FBC推定値と比較される基準値である。FBC推定値は、前述したように、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。基準値C0は、比較例において、リフレッシュ処理の実施判断に用いられる、誤りビット数と比較される基準値である。すなわち、比較例においては、対象セルユニットに対して読み出し動作が実施され、対象ページデータが読み出される。読み出された対象ページデータに対してECC回路により誤り訂正が実施され、対象ページデータに含まれる正確な誤りビット数が得られる。リフレッシュ処理を実施するべきブロックか否かを判断するために、基準値C0は、このようにして得られた正確な誤りビット数と比較される基準値である。本実施形態においては、リフレッシュ処理を実施するべきブロックに対してリフレッシュ処理が実施されないという不具合が生じないように、誤差を含む推定値の基準値C1は、基準値C0より小さい値に設定される。
【0100】
1.2.2. FBC推定値の算出
次に、パトロールリードおけるFBC推定値の算出について説明する。まず、誤りビット数(fail bit count)について説明する。
図9は、誤りビット数を説明するための図である。
図9は、AステートとBステートのメモリセルに対して読み出し電圧BRを用いて読み出しを実行した例を示す。
【0101】
Aステートに属するメモリセル(すなわち、Aステートに対応する閾値電圧を有するようにデータが書き込まれたメモリセル)を読み出し電圧BRを用いて読み出しを実行すると、読み出し電圧BR以下の閾値電圧を有するメモリセルはオン状態となり、読み出し電圧BRより高い閾値電圧を有するメモリセルはオフ状態となる。ここで、オフ状態のメモリセルは、本来、オン状態となるべきメモリセルであるにもかかわらずオフ状態となったため、誤りビットとしてカウントされる(
図9中のERA)。一方、Bステートに属するメモリセル(すなわち、Bステートに対応する閾値電圧を有するようにデータが書き込まれたメモリセル)を読み出し電圧BRを用いて読み出しを実行すると、読み出し電圧BRより低い閾値電圧を有するメモリセルはオン状態となり、読み出し電圧BR以上の閾値電圧を有するメモリセルはオフ状態となる。ここで、オン状態のメモリセルは、本来、オフ状態となるべきメモリセルであるにもかかわらずオン状態となったため、誤りビットとしてカウントされる(
図9中のERB)。誤りビット数は、
図9に示す領域ERAのメモリセル数と、領域ERBのメモリセル数との合計となる。
【0102】
上述したように、第1実施形態のメモリシステム1では、NANDメモリ10_1がFBC推定値を算出する。FBC推定値の算出では、読み出した対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、FBC推定値が算出される。NANDメモリ10_1がFBC推定値を算出する動作として、以下に3つの方式を説明する。
【0103】
1.2.2.1 FBC推定値の算出動作(4点リード方式)
まず、4つの読み出し電圧を用いた読み出し動作で得られたオン状態のメモリセルの数からFBC推定値を算出する方法について説明する。以降、4つの読み出し電圧を用いてFBC推定値を算出する方法を、4点リード方式と称する。また、ある読み出し電圧を用いた読み出し動作でオン状態となるメモリセルの数を、その読み出し電圧におけるオンセル数と称する。
【0104】
4点リード方式では、制御回路16に含まれるFBC推定値生成回路16Aは、対象セルユニットから得られたオンセル数に基づいて2次関数による近似曲線を求める。そして、FBC推定値生成回路16Aは、2次関数による近似曲線における極小値をFBC推定値として算出する。なおここでは、2次関数による近似曲線を求める例を示すが、1次関数、あるいは3次関数、スプライン曲線、またはベジエ曲線による近似曲線を求めてもよい。
【0105】
図10を用いて、4点リード方式の動作を説明する。
図10は、第1実施形態に係る4点リード方式を示す図である。
【0106】
まず、
図10の(A)に示すように、FBC推定値生成回路16Aは、例えば、ErステートとAステートとの間の閾値電圧において、4点の読み出し電圧R1、R2、R3、R4を設定する。読み出し電圧R1~R4はそれぞれ異なり、読み出し電圧R1とR2の差、R2とR3の差、及びR3とR4の差は、同じ一定の電圧差に設定される。なおここでは、これらの電圧差が同じ電圧差に設定される場合を示すが、これらの電圧差は同じでなくてもよい。
【0107】
次に、FBC推定値生成回路16Aは、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧R1、R2、R3、R4を用いて読み出し動作をそれぞれ実施して、対象トラッキングデータを取得する。対象トラッキングデータは、例えばページデータと同じサイズを有する。これらの読み出し動作により、
図10の(B)に示すように、FBC推定値生成回路16Aは、読み出し電圧R1、R2、R3、R4の各々におけるオンセル数O1、O2、O3、O4をそれぞれ求める。
【0108】
オンセル数O1は、読み出し電圧R1を用いた読み出し動作でオン状態となるメモリセル数である。オンセル数O2は、読み出し電圧R2を用いた読み出し動作でオン状態となるメモリセル数である。オンセル数O3は、読み出し電圧R3を用いた読み出し動作でオン状態となるメモリセル数である。オンセル数O4は、読み出し電圧R4を用いた読み出し動作でオン状態となるメモリセル数である。
【0109】
次に、
図10の(C)に示すように、FBC推定値生成回路16Aは、オンセル数O1、O2、O3、O4において、隣接する2つのオンセル数の差分と、隣接する読み出し電圧の相加平均をそれぞれ求め、差分点P1、P2、P3を求める。
【0110】
差分点P1のY座標(すなわち、メモリセル数)は、オンセル数O2とオンセル数O1との差分で得られ、“O2-O1”で表される。差分点P1のY座標は、読み出し電圧がR1からR2に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R1とR2との間にあるメモリセルの数である。差分点P1のX座標(すなわち、閾値電圧)は、読み出し電圧R1とR2の相加平均であり、“(R1+R2)/2”で表される。よって、差分点P1(x,y)は、P1((R1+R2)/2,O2-O1)で表される。
【0111】
差分点P2のY座標は、オンセル数O3とオンセル数O2との差分で得られ、“O3-O2”で表される。差分点P2のY座標は、読み出し電圧がR2からR3に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R2とR3との間にあるメモリセルの数である。差分点P2のX座標は、読み出し電圧R2とR3の相加平均であり、“(R2+R3)/2”で表される。よって、差分点P2(x,y)は、P2((R2+R3)/2,O3-O2)で表される。
【0112】
差分点P3のY座標は、オンセル数O4とオンセル数O3との差分で得られ、“O4-O3”で表される。差分点P3のY座標は、読み出し電圧がR3からR4に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R3とR4との間にあるメモリセルの数である。差分点P3のX座標は、読み出し電圧R3とR4の相加平均であり、“(R3+R4)/2”で表される。よって、差分点P3(x,y)は、P3((R3+R4)/2,O4-O3)で表される。これら差分点P1、P2、P3から、
図10の(C)に斜線にて示すようなヒストグラムが得られる。
【0113】
次に、
図10の(C)に示すように、FBC推定値生成回路16Aは、差分点P1、P2、P3を通る2次関数による近似曲線を計算する。ここで、閾値電圧をVとし、メモリセル数をCとすると、2次関数は、C=aV
2+bV+dで表すことができる。なお、a、b、dは定数であり、かつaは0以外の値である。次に、FBC推定値生成回路16Aは、2次関数C=aV
2+bV+dにおける極小値hを算出する。
【0114】
ここで、Erステートの閾値電圧分布とAステートの閾値電圧分布とが重なるところの分布の“交点”の高さ(
図10(C)のh/2)は、2次関数による近似曲線の極小値hに対応すると仮定できる。さらに、対象ページデータに含まれる誤りビット数は、分布の“交点”の高さに比例すると考えられる。これにより、極小値hがFBC推定値として設定される。
【0115】
なお、上述したように、FBC推定値生成回路16Aにより算出されたFBC推定値は、2次関数の極小値hである。極小値hは、2バイト程度のデータで表現可能である。極小値hのデータサイズは、対象トラッキングデータのサイズ(例えば、ページデータのサイズと等しい16Kバイト)に比べて非常に小さい。このため、極小値hをNANDメモリからメモリコントローラ20に転送する場合、対象トラッキングデータをNANDメモリからメモリコントローラ20に転送する場合に比べて、転送するデータ量を低減できる。これにより、NANDメモリからメモリコントローラ20へのデータ転送時間を短縮できる。
【0116】
1.2.2.2 FBC推定値の算出動作(3点リード方式)
次に、3つの読み出し電圧を用いた読み出し動作で得られたオンセル数からFBC推定値を算出する方法について説明する。以降、3つの読み出し電圧を用いてFBC推定値を算出する方法を、3点リード方式と称する。
【0117】
3点リード方式では、FBC推定値生成回路16Aは、対象セルユニットから得られたオンセル数に基づいて2つの1次関数を求める。そして、FBC推定値生成回路16Aは、2つの1次関数の交点をFBC推定値として算出する。
【0118】
図11を用いて、3点リード方式の動作を説明する。
図11は、第1実施形態に係る3点リード方式を示す図である。
【0119】
まず、
図11の(A)に示すように、制御回路16のFBC推定値生成回路16Aは、例えば、ErステートとAステートとの間の閾値電圧において、3点の読み出し電圧R1、R2、R3を設定する。読み出し電圧R1~R3はそれぞれ異なり、読み出し電圧R1とR2の差、及びR2とR3の差は、同じ一定の電圧差に設定される。なおここでは、これらの電圧差が同じ電圧差に設定される場合を示すが、これらの電圧差は同じでなくてもよい。
【0120】
次に、FBC推定値生成回路16Aは、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧R1、R2、R3を用いて読み出し動作をそれぞれ実施して、対象トラッキングデータを取得する。これらの読み出し動作により、
図11の(B)に示すように、FBC推定値生成回路16Aは、読み出し電圧R1、R2、R3の各々におけるオンセル数O1、O2、O3をそれぞれ求める。
【0121】
オンセル数O1は、読み出し電圧R1を用いた読み出し動作でオン状態となるメモリセル数である。オンセル数O2は、読み出し電圧R2を用いた読み出し動作でオン状態となるメモリセル数である。オンセル数O3は、読み出し電圧R3を用いた読み出し動作でオン状態となるメモリセル数である。
【0122】
次に、
図11の(C)に示すように、FBC推定値生成回路16Aは、オンセル数O1、O2、O3において、隣接する2つのオンセル数の差分と、隣接する読み出し電圧の相加平均をそれぞれ求め、差分点P1、P2を求める。
【0123】
差分点P1のY座標は、オンセル数O2とオンセル数O1との差分で得られ、“O2-O1”で表される。差分点P1のY座標は、読み出し電圧がR1からR2に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R1とR2との間にあるメモリセルの数である。差分点P1のX座標は、読み出し電圧R1とR2の相加平均であり、“(R1+R2)/2”で表される。よって、差分点P1(x,y)は、P1((R1+R2)/2,O2-O1)で表される。
【0124】
差分点P2のY座標は、オンセル数O3とオンセル数O2との差分で得られ、“O3-O2”で表される。差分点P2のY座標は、読み出し電圧がR2からR3に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R2とR3との間にあるメモリセルの数である。差分点P2のX座標は、読み出し電圧R2とR3の相加平均であり、“(R2+R3)/2”で表される。よって、差分点P2(x,y)は、P2((R2+R3)/2,O3-O2)で表される。これら差分点P1、P2から、
図11の(C)に斜線にて示すようなヒストグラムが得られる。
【0125】
次に、
図11の(C)に示すように、FBC推定値生成回路16Aは、差分点P1、P2、差分点P1のX軸への正射影(即ち、((R1+R2)/2,0))、及び差分点P2のX軸への正射影(即ち、((R2+R3)/2,0))の4点を結ぶ四角形を求める。さらに、FBC推定値生成回路16Aは、この四角形の対角線を1次関数と見なす。次に、FBC推定値生成回路16Aは、2つの対角線、すなわち2つの1次関数の交点を算出する。
【0126】
ここで、Erステートの閾値電圧分布とAステートの閾値電圧分布とが重なるところの分布の“交点”の高さは、2つの1次関数の交点におけるY座標の値Jに対応すると仮定できる。さらに、対象ページデータに含まれる誤りビット数は、分布の“交点”の高さに比例すると考えられる。これにより、2つの1次関数の交点におけるY座標の値JがFBC推定値として設定される。
【0127】
なお、上述したように、FBC推定値生成回路16Aにより算出されたFBC推定値は、2つの1次関数の交点におけるY座標の値Jである。値Jは、2バイト程度のデータで表現可能である。値Jのデータサイズは対象トラッキングデータのサイズに比べて非常に小さい。このため、値JをNANDメモリからメモリコントローラ20に転送する場合、対象トラッキングデータをNANDメモリからメモリコントローラ20に転送する場合に比べて、転送するデータ量を低減できる。これにより、NANDメモリからメモリコントローラ20へのデータ転送時間を短縮できる。
【0128】
1.2.2.3 FBC推定値の算出動作(1点リード方式)
次に、1つの読み出し電圧を用いた読み出し動作で得られたオフ状態のメモリセルの数からFBC推定値を算出する方法について説明する。以降、1つの読み出し電圧を用いてFBC推定値を算出する方法を、1点リード方式と称する。また、ある読み出し電圧を用いた読み出し動作でオフ状態となるメモリセルの数を、その読み出し電圧におけるオフセル数と称する。
【0129】
1点リード方式では、対象セルユニットのメモリセル数に対するオフセル数の割合を求める。そして、オフセル数の割合に基づいてFBC推定値を算出する。
【0130】
図12を用いて、1点リード方式の動作を説明する。
図12は、第1実施形態に係る1点リード方式を示す図である。
【0131】
まず、
図12に示すように、制御回路16内のFBC推定値生成回路16Aは、例えば、Gステートに対する読み出し電圧GRを設定する。読み出し電圧GRは、最も高い閾値電圧分布を有するGステートと、その他のEr~Fステートとの間を判別する読み出し電圧である。具体的には、読み出し電圧GRは、書き込み直後からあまり時間が経過していない状態、すなわちデータリテンションエラーなどのストレスがあまりかかっていない状態での読み出し動作に適合する読み出し電圧である。この読み出し電圧をノーマルリード電圧と呼び、この読み出し電圧は例えばNANDメモリの製造時に設定される。なお、ここで設定される読み出し電圧GRには、例えば、後述する第5実施形態で述べるトラッキング動作が実施されている場合は、トラッキング動作で求めた適切な読み出し電圧を用いてもよい。
【0132】
次に、FBC推定値生成回路16Aは、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧GRを用いて読み出し動作を実施する。この読み出し動作により、
図12に示すように、FBC推定値生成回路16Aは、読み出し電圧GRにおけるオンセル数CGを求める。
図12に示す例では、オンセル数CGは、ErステートからGステートの一部までのオンセル数を加算した数となる。
【0133】
次に、FBC推定値生成回路16Aは、対象セルユニットに含まれるメモリセル数M1からオンセル数CGを減算して、対象セルユニットにおけるオフセル数M2を求める。さらに、FBC推定値生成回路16Aは、対象セルユニットのメモリセル数M1に占めるオフセル数M2の割合K1を算出する。
【0134】
ここで、対象ページデータに含まれる誤りビット数は、オフセル数の割合K1と相関関係があると考えられる。Gステートは、ErステートからGステートまでの8つのステートのうちの1つである。このため、ランダマイズされたデータが対象セルユニットに書き込まれている場合、Gステートのメモリセル数が対象セルユニットのメモリセル数に占める割合の期待値は、1/8(=12.5%)である。オフセル数の割合K1と期待値との差が大きい場合、対象セルユニットの閾値電圧分布が、理想状態(すなわち、対象セルユニットのメモリセル数に、各ステートのメモリセル数が占める割合が12.5%である状態)から乖離している可能性が高い。対象セルユニットの閾値電圧分布が理想状態から乖離している場合は、オフセル数の割合K1が期待値より大きい場合と、オフセル数の割合K1が期待値より小さい場合を含む。これにより、1点リード方式では、オフセル数の割合K1と期待値(12.5%)との差がFBC推定値として設定される。
【0135】
なお、上述したように、FBC推定値生成回路16Aにより算出されたFBC推定値は、オフセル数の割合K1と期待値との差である。割合K1と期待値との差は、2バイト程度のデータで表現可能である。例えば、割合K1と期待値との差のデータサイズは対象トラッキングデータのサイズに比べて非常に小さい。このため、割合K1と期待値との差をNANDメモリからメモリコントローラ20に転送する場合、対象トラッキングデータをNANDメモリからメモリコントローラ20に転送する場合に比べて、転送するデータ量を低減できる。これにより、NANDメモリからメモリコントローラ20へのデータ転送時間を短縮できる。
【0136】
次に、
図13を用いて、1点リード方式の他の動作例を説明する。
図13は、第1実施形態に係る1点リード方式の他例を示す図である。
【0137】
上述の1点リード方式では、Gステートに対する読み出し電圧GRを用いた読み出し動作によりFBC推定値を算出したが、Aステートに対する読み出し電圧ARを用いた読み出し動作によりFBC推定値を算出してもよい。
【0138】
図13に示すように、制御回路16内のFBC推定値生成回路16Aは、Aステートに対する読み出し電圧ARを設定する。読み出し電圧ARは、最も低い閾値電圧分布を有するErステートと、その他のA~Gステートとの間を判別する読み出し電圧である。
【0139】
次に、FBC推定値生成回路16Aは、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧ARを用いて読み出し動作を実施する。この読み出し動作により、
図13に示すように、FBC推定値生成回路16Aは、読み出し電圧ARにおけるオンセル数CAを求める。
図13に示す例では、オンセル数CAは、ErステートとAステートの一部のオンセル数を加算した数となる。
【0140】
次に、FBC推定値生成回路16Aは、対象セルユニットに含まれるメモリセル数M1からオンセル数CAを減算して、対象セルユニットにおけるオフセル数M3を求める。さらに、FBC推定値生成回路16Aは、対象セルユニットのメモリセル数M1に占めるオフセル数M3の割合K2を算出する。
【0141】
ここで、対象ページデータに含まれる誤りビット数は、オフセル数の割合K2と相関関係があると考えられる。Erステートは、ErステートからGステートまでの8つのステートのうちの1つである。このため、ランダマイズされたデータが対象セルユニットに書き込まれている場合、Erステート以外、すなわちA~Gステートのメモリセル数が対象セルユニットのメモリセル数に占める割合の期待値は、7/8(=87.5%)である。この1点リード方式では、オフセル数の割合K2と期待値(87.5%)との差がFBC推定値として設定される。
【0142】
また、上述の例のように、読み出し電圧ARにおけるオンセル数CAを求める場合、Erステートのメモリセル数が対象セルユニットのメモリセル数M1に占める割合K3の期待値は、1/8(=12.5%)である。FBC推定値生成回路16Aは、オンセル数CAの割合K3と期待値(12.5%)との差をFBC推定値として設定してもよい。
【0143】
1.3 第1実施形態に係る効果
第1実施形態によれば、パトロール動作に要する時間を短縮することができるメモリシステムを提供できる。
【0144】
第1実施形態の構成では、FBC推定値を算出するFBC推定値生成回路16AをNANDメモリが備える。FBC推定値生成回路16Aは、対象セルユニットに対して1つあるいは複数の読み出し電圧を用いて読み出し動作を実施し、得られたオンセル数またはオフセル数に基づいてFBC推定値を算出する。FBC推定値は、対象ページデータに含まれる誤りビット数を推定するための値である。算出されたFBC推定値は、NANDメモリからメモリコントローラ20に転送される。メモリコントローラ20は、FBC推定値と基準値C1とを比較し、比較結果に従ってリフレッシュ処理を実施するか否かを判断する。NANDメモリは、対象トラッキングデータを送信することなく、FBC推定値を送信するだけでよい。このため、NANDメモリからメモリコントローラ20に転送されるデータのサイズを低減できる。これにより、パトロール動作における対象セルユニットの読み出し動作からリフレッシュ処理の実施判断のためのデータ(即ち、FBC推定値)を得るまでの時間を短縮することができる。
【0145】
2.第2実施形態
第2実施形態のメモリシステムについて説明する。第2実施形態では、NANDメモリ10_1はFBC推定値を算出せずに、FBC推定値を算出するための構成要素をNANDメモリ10_1がメモリコントローラ20に出力する。メモリコントローラ20は、受け取った構成要素に基づいてFBC推定値を算出する。第2実施形態では、主に第1実施形態と異なる点について説明する。
【0146】
2.1 構成
2.1.1 メモリシステム
第2実施形態のメモリシステムの構成について説明する。
図14は、第2実施形態に係るメモリシステムの構成を示すブロック図である。
【0147】
メモリシステム1は、半導体メモリ10及びメモリコントローラ20を備える。
【0148】
2.1.2 メモリコントローラ
次に、
図14を用いて、メモリコントローラ20の構成について説明する。メモリコントローラ20は、プロセッサ21、メモリ22、ECC回路23_1及び23_2、NANDインターフェース24_1及び24_2、並びにホストインターフェース25を備える。
【0149】
プロセッサ21は、リフレッシュ判断回路21A及びFBC推定値生成回路21Bを有する。リフレッシュ判断回路21Aは、FBC推定値に基づいてリフレッシュ処理を実施するか否かを判断する。FBC推定値生成回路21Bは、FBC推定値の構成要素に基づいてFBC推定値を算出する。FBC推定値生成回路21Bについては後述する。本明細書に記載されるプロセッサ21(及びリフレッシュ判断回路21A、FBC推定値生成回路21B)の機能は、プロセッサ21がソフトウェア(または、ファームウェア)を実行することによって実現されてもよいし、またはハードウェア(または、専用回路)で実現されてもよい。
【0150】
メモリコントローラ20が備えるその他の構成は、前述した第1実施形態と同様である。
【0151】
2.1.3 半導体メモリ
次に、半導体メモリ10に含まれるNANDメモリ10_1~10_4の構成について説明する。以下に、NANDメモリ10_1の構成を述べる。その他のNANDメモリ10_2~10_4の各々の構成は、NANDメモリ10_1と同様である。
【0152】
図15は、第2実施形態に係るNANDメモリ10_1の構成を示す図である。
【0153】
NANDメモリ10_1は、メモリセルアレイ11、入出力回路12、ロジック制御回路13、レディ/ビジー回路14、レジスタ群15、制御回路16、電圧生成回路17、ロウデコーダ18、カラムデコーダ19A、データレジスタ19B、及びセンスアンプ19Cを備える。
【0154】
制御回路16は、構成要素生成回路16Bを有する。構成要素生成回路16Bは、FBC推定値を算出するための構成要素を生成する。構成要素生成回路16Bについては後述する。本明細書に記載される制御回路(及び構成要素生成回路16B)の機能は、制御回路16がソフトウェア(または、ファームウェア)を実行することによって実現されてもよいし、またはハードウェア(または、専用回路)で実現されてもよい。
【0155】
NANDメモリ10_1が備えるその他の構成は、前述した第1実施形態と同様である。
【0156】
2.2 動作
第2実施形態のメモリシステム1における動作について説明する。
【0157】
2.2.1 パトロール動作
第2実施形態のメモリシステム1におけるパトロール動作について説明する。
図16は、第2実施形態に係るパトロール動作を示すフローチャートであり、
図6に示した第1実施形態と同様である。
図17は、パトロール動作におけるパトロールリードの動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図18は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0158】
図16に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0159】
パトロール動作が開始されると、パトロールリードが実施される(S1)。すなわち、
図18に示すように、メモリコントローラ20は、NANDメモリ10_1にパトロールリードの実施を命令する(S1_1)。パトロールリードの実施命令を受けると、NANDメモリ10_1は、パトロールリードを開始する。
【0160】
図17及び
図18を用いて、パトロールリードの動作を説明する。第2実施形態のパトロールリードは、NANDメモリ10_1が対象セルユニットに対して読み出し動作を実施し、FBC推定値を算出するための構成要素を取得し、構成要素をメモリコントローラ20に送信する動作である。よって、ここでのパトロールリードの実施命令は、FBC推定値の構成要素を取得するための命令と解釈することもできる。
【0161】
パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、対象セルユニットに対して読み出し動作を実施する(S1_2)。
【0162】
次に、NANDメモリ10_1の制御回路16に含まれる構成要素生成回路16Bは、FBC推定値を算出するための構成要素を取得する(S1_5)。FBC推定値の構成要素は、例えば、複数の読み出し電圧と各読み出し電圧におけるオンセル数を含む。あるいは、FBC推定値の構成要素は、複数の読み出し電圧のうち最も低い(または、高い)1つの読み出し電圧と、この読み出し電圧と他の読み出し電圧との間の電圧差、及び各読み出し電圧におけるオンセル数を含む。
【0163】
次に、制御回路16は、FBC推定値の構成要素をメモリコントローラ20に送信する(S1_6)。
【0164】
次に、メモリコントローラ20のプロセッサ21に含まれるFBC推定値生成回路21Bは、受信したFBC推定値の構成要素に基づいて、対象ページデータに含まれていると推定されるFBC推定値を算出する(S1_7)。FBC推定値の算出では、読み出した対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、メモリコントローラ20が備えるFBC推定値生成回路21Bにより、FBC推定値が算出される。FBC推定値の算出の動作については後述する。以上により、パトロールリードが終了する。
【0165】
次に、
図16及び
図18に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、FBC推定値に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S2)。すなわち、リフレッシュ判断回路21Aは、FBC推定値に基づいて対象ページデータを書き直すか否かを判断する。
【0166】
具体的には、FBC推定値が基準値C1より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図16のS2でYES)、リフレッシュ処理が実施される(S3)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S3_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S3_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S3_3)。
【0167】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S3_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S3_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S3_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0168】
一方、FBC推定値が基準値C1以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図16のS2でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0169】
リフレッシュ処理の実施判断に用いられる基準値C1については、第1実施形態と同様である。
図16に、基準値C1と基準値C0の大小関係を示す。基準値C1は、FBC推定値と比較される基準値である。FBC推定値は、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。基準値C0は、比較例において、リフレッシュ処理の実施判断に用いられる、対象ページデータに含まれる正確な誤りビット数と比較される基準値である。すなわち、比較例においては、対象セルユニットに対して読み出し動作が実施され、対象ページデータが読み出される。読み出された対象ページデータに対してECC回路により誤り訂正が実施され、対象ページデータに含まれる正確な誤りビット数が得られる。リフレッシュ処理を実施するべきブロックか否かを判断するために、基準値C0は、このようにして得られた正確な誤りビット数と比較される基準値である。本実施形態においては、リフレッシュ処理を実施するべきブロックに対してリフレッシュ処理が実施されないという不具合が生じないように、誤差を含む推定値の基準値C1は、基準値C0より小さい値に設定される。
【0170】
2.2.2. FBC推定値の算出
次に、パトロールリードおけるFBC推定値の算出について説明する。上述したように、第2実施形態のメモリシステム1では、NANDメモリにおいてFBC推定値の構成要素を取得し、取得したFBC推定値の構成要素をメモリコントローラ20へ転送する。メモリコントローラ20は、FBC推定値の構成要素に基づいてFBC推定値を算出する。メモリコントローラ20がFBC推定値を算出する動作として、以下に2つの方式を説明する。
【0171】
2.2.2.1 FBC推定値の算出動作(4点リード方式)
まず、第2実施形態のメモリシステム1における4点リード方式の動作について説明する。4点リード方式では、プロセッサ21に含まれるFBC推定値生成回路21Bは、対象セルユニットから得られたオンセル数に基づいて2次関数による近似曲線を求める。そして、FBC推定値生成回路21Bは、2次関数による近似曲線における極小値hをFBC推定値として算出する。
【0172】
図10を用いて、第2実施形態における4点リード方式の動作を説明する。
【0173】
まず、制御回路16に含まれる構成要素生成回路16Bは、第1実施形態と同様に、NANDメモリ10_1における対象セルユニットに対して、
図10の(A)に示した読み出し電圧R1、R2、R3、R4を用いて読み出し動作をそれぞれ実施して、対象トラッキングデータを取得する。これらの読み出し動作により、
図10の(B)に示したように、構成要素生成回路16Bは、読み出し電圧R1、R2、R3、R4の各々におけるオンセル数O1、O2、O3、O4をそれぞれ求める。
【0174】
次に、制御回路16は、FBC推定値を算出するための構成要素をメモリコントローラ20に送信する。構成要素は、例えば、読み出し電圧R1、R2、R3、R4と各読み出し電圧におけるオンセル数O1、O2、O3、O4を含む。あるいは、構成要素は、最も低い1つの読み出し電圧R1、読み出し電圧R1と読み出し電圧R2、R3、R4の各々との間の電圧差、及び各読み出し電圧におけるオンセル数O1、O2、O3、O4を含む。あるいは、構成要素は、最も高い1つの読み出し電圧R4、読み出し電圧R4と読み出し電圧R1、R2、R3の各々との間の電圧差、及び各読み出し電圧におけるオンセル数O1、O2、O3、O4を含む。
【0175】
次に、
図10の(B)に示したように、メモリコントローラ20のプロセッサ21のFBC推定値生成回路21Bは、オンセル数O1、O2、O3、O4において、隣接する2つのオンセル数の差分と、隣接する読み出し電圧の相加平均をそれぞれ求め、差分点P1、P2、P3を求める。
【0176】
差分点P1のY座標は、オンセル数O2とオンセル数O1との差分で得られ、“O2-O1”で表される。差分点P1のY座標は、読み出し電圧がR1からR2に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R1とR2との間にあるメモリセルの数である。差分点P1のX座標は、読み出し電圧R1とR2の相加平均であり、“(R1+R2)/2”で表される。よって、差分点P1(x,y)は、P1((R1+R2)/2,O2-O1)で表される。
【0177】
差分点P2のY座標は、オンセル数O3とオンセル数O2との差分で得られ、“O3-O2”で表される。差分点P2のY座標は、読み出し電圧がR2からR3に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R2とR3との間にあるメモリセルの数である。差分点P2のX座標は、読み出し電圧R2とR3の相加平均であり、“(R2+R3)/2”で表される。よって、差分点P2(x,y)は、P2((R2+R3)/2,O3-O2)で表される。
【0178】
差分点P3のY座標は、オンセル数O4とオンセル数O3との差分で得られ、P3=O4-O3で表される。差分点P3のY座標は、読み出し電圧がR3からR4に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R3とR4との間にあるメモリセルの数である。差分点P3のX座標は、読み出し電圧R3とR4の相加平均であり、“(R3+R4)/2”で表される。よって、差分点P3(x,y)は、P3((R3+R4)/2,O4-O3)で表される。これら差分点P1、P2、P3から、
図10の(C)に斜線にて示すようなヒストグラムが得られる。
【0179】
次に、
図10の(C)に示したように、FBC推定値生成回路21Bは、差分点P1、P2、P3を通る2次関数による近似曲線を求め、2次関数による近似曲線における極小値hを算出する。さらに、FBC推定値生成回路21Bは、算出した極小値hをFBC推定値として設定する。以上により、メモリコントローラ20は、パトロールリードを終了させる。
【0180】
2.2.2.2 FBC推定値の算出動作(3点リード方式)
次に、第2実施形態のメモリシステム1における3点リード方式の動作について説明する。3点リード方式では、FBC推定値生成回路21Bは、対象セルユニットから得られたオンセル数に基づいて2つの1次関数を求める。そして、FBC推定値生成回路21Bは、2つの1次関数の交点をFBC推定値として算出する。
【0181】
図11を用いて、第2実施形態における3点リード方式の動作を説明する。
【0182】
まず、制御回路16の構成要素生成回路16Bは、第1実施形態と同様に、NANDメモリ10_1における対象セルユニットに対して、
図11の(A)に示した読み出し電圧R1、R2、R3を用いて読み出し動作をそれぞれ実施して、対象トラッキングデータを取得する。これらの読み出し動作により、
図11の(B)に示したように、構成要素生成回路16Bは、読み出し電圧R1、R2、R3の各々におけるオンセル数O1、O2、O3をそれぞれ求める。
【0183】
次に、制御回路16は、FBC推定値を算出するための構成要素をメモリコントローラ20に送信する。構成要素は、例えば、読み出し電圧R1、R2、R3と各読み出し電圧におけるオンセル数O1、O2、O3を含む。あるいは、構成要素は、最も高い1つの読み出し電圧R3、読み出し電圧R3と読み出し電圧R1、R2の各々との間の電圧差、及び各読み出し電圧におけるオンセル数O1、O2、O3を含む。あるいは、構成要素は、最も低い1つの読み出し電圧R1、読み出し電圧R1と読み出し電圧R2、R3の各々との間の電圧差、及び各読み出し電圧におけるオンセル数O1、O2、O3を含む。
【0184】
次に、
図11の(B)に示したように、メモリコントローラ20のプロセッサ21のFBC推定値生成回路21Bは、オンセル数O1、O2、O3において、隣接する2つのオンセル数の差分と、隣接する読み出し電圧の相加平均をそれぞれ求め、差分点P1、P2を求める。
【0185】
差分点P1のY座標は、オンセル数O2とオンセル数O1との差分で得られ、“O2-O1”で表される。差分点P1のY座標は、読み出し電圧がR1からR2に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R1とR2との間にあるメモリセルの数である。差分点P1のX座標は、読み出し電圧R1とR2の相加平均であり、“(R1+R2)/2”で表される。よって、差分点P1(x,y)は、P1((R1+R2)/2,O2-O1)で表される。
【0186】
差分点P2のY座標は、オンセル数O3とオンセル数O2との差分で得られ、“O3-O2”で表される。差分点P2のY座標は、読み出し電圧がR2からR3に上昇することにより新たにオン状態となるメモリセルの数であり、閾値電圧が読み出し電圧R2とR3との間にあるメモリセルの数である。差分点P2のX座標は、読み出し電圧R2とR3の相加平均であり、“(R2+R3)/2”で表される。よって、差分点P2(x,y)は、P2((R2+R3)/2,O3-O2)で表される。これら差分点P1、P2から、
図11の(C)に斜線にて示すようなヒストグラムが得られる。
【0187】
次に、
図11の(C)に示したように、FBC推定値生成回路21Bは、差分点P1、P2、差分点P1のX軸への正投影(即ち、((R1+R2)/2,0))、及び差分点P2のX軸への正投影(即ち、((R2+R3)/2,0))の4点を結ぶ四角形を求める。さらに、FBC推定値生成回路21Bは、この四角形の対角線の交点を算出する。さらに、FBC推定値生成回路21Bは、算出した交点におけるY座標の値JをFBC推定値として設定する。以上により、メモリコントローラ20は、パトロールリードを終了させる。
【0188】
2.3 第2実施形態に係る効果
第2実施形態によれば、パトロール動作に要する時間を短縮することができるメモリシステムを提供できる。
【0189】
第2実施形態の構成では、NANDメモリが構成要素生成回路16Bを備え、メモリコントローラ20がFBC推定値生成回路21Bを備える。構成要素生成回路16Bは、FBC推定値を算出するための構成要素を生成する。構成要素生成回路16Bは、対象セルユニットに対して複数の読み出し電圧を用いて読み出し動作を実施し、構成要素(例えば、読み出し電圧及びオンセル数)をメモリコントローラ20に送信する。メモリコントローラ20は、受け取った構成要素に基づいてFBC推定値を算出する。メモリコントローラ20は、FBC推定値と基準値C1とを比較し、比較結果に従ってリフレッシュ処理を実施するか否かを判断する。NANDメモリは、対象トラッキングデータを送信することなく、構成要素を送信するだけでよい。このため、NANDメモリからメモリコントローラ20に転送されるデータのサイズを低減できる。これにより、パトロール動作における対象セルユニットの読み出し動作からリフレッシュ処理の実施判断のためのデータ(即ち、FBC推定値)を得るまでの時間を短縮することができる。
【0190】
3.第3実施形態
第3実施形態のメモリシステムについて説明する。第3実施形態では、目的の異なる第1段階目のパトロールリードと第2段階目のパトロールリードを実施する。第1段階目のパトロールリードでは、第2段階目のパトロールリードを実施するか否かを判断する。第2段階目のパトロールリードでは、対象ページデータを用いてリフレッシュ処理を実施するか否かを判断する。さらに、第1段階目のパトロールリードにおいて、第1実施形態と同様に、NANDメモリ10_1がFBC推定値を算出する。第3実施形態では、主に第1実施形態と異なる点について説明する。
【0191】
3.1 構成
第3実施形態のメモリシステム1が備えるメモリコントローラ20及び半導体メモリ10の構成及び構造は、前述した第1実施形態と同様である。
【0192】
3.2 動作
第3実施形態のメモリシステム1における動作について説明する。
【0193】
3.2.1 パトロール動作
第3実施形態のメモリシステム1におけるパトロール動作について説明する。第3実施形態のパトロール動作では、第1段階目のパトロールリードにおいてNANDメモリ10_1がFBC推定値を算出し、第2段階目のパトロールリードを実施するか否かを、FBC推定値を用いてメモリコントローラ20が判断する。さらに、第2段階目のパトロールリードにおいて、リフレッシュ処理を実施するか否かをメモリコントローラ20が判断する。以降、第1段階目のパトロールリードを第1パトロールリードとも称し、第2段階目のパトロールリードを第2パトロールリードとも称する。
【0194】
図19は、第3実施形態に係るパトロール動作を示すフローチャートである。
図20は、パトロール動作における第1パトロールリードの動作を示すフローチャートである。
図21は、パトロール動作における第2パトロールリードの動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図22は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0195】
図19に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0196】
パトロール動作が開始されると、第1パトロールリードが実施される(S11)。すなわち、
図22に示すように、メモリコントローラ20は、NANDメモリ10_1に第1パトロールリードの実施を命令する(S11_1)。第1パトロールリードの実施命令を受け取ると、NANDメモリ10_1は、第1パトロールリードを開始する。
【0197】
図20及び
図22を用いて、第1パトロールリードの動作を説明する。第3実施形態の第1パトロールリードは、
図7を用いて説明した第1実施形態のパトロールリードと同様である。すなわち、第1パトロールリードは、対象セルユニットに対して読み出し動作を実施し、読み出したデータに基づいて、対象ページデータにおけるFBC推定値をNANDメモリ10_1が算出する動作である。
【0198】
第1パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、対象セルユニットに対して読み出し動作を実施する(S11_2)。
【0199】
次に、NANDメモリ10_1の制御回路16に含まれるFBC推定値生成回路16Aは、読み出し動作により得られた読み出し結果に基づいて、対象ページデータに含まれていると推定されるFBC推定値を算出する(S11_3)。FBC推定値の算出では、読み出した対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、NANDメモリ10_1が備えるFBC推定値生成回路16Aにより、FBC推定値が算出される。FBC推定値の算出の動作については後述する。
【0200】
次に、制御回路16は、FBC推定値をメモリコントローラ20に送信する(S11_4)。以上により、第1パトロールリードが終了する。
【0201】
次に、
図19及び
図22に示すように、メモリコントローラ20のプロセッサ21は、FBC推定値に基づいて第2パトロールリードを実施する必要があるか否かを判断する(S12)。
【0202】
具体的には、FBC推定値が基準値(または、閾値)C1aより大きいとき、メモリコントローラ20は、第2パトロールリードを実施する必要があると判断する。第2パトロールリードを実施する必要がある場合(
図19のS12でYES)、メモリコントローラ20はNANDメモリ10_1に第2パトロールリードの実施を命令する(
図22のS13_1)。第2パトロールリードの実施命令を受け取ると、NANDメモリ10_1は第2パトロールリードを実施する(
図19のS13)。一方、FBC推定値が基準値C1a以下であるとき、メモリコントローラ20は、第2パトロールリードを実施する必要がないと判断する。第2パトロールリードを実施する必要がない場合(
図19のS12でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0203】
ここで、第2パトロールリードの実施判断に用いられる基準値C1aについて詳述する。
図19に、基準値C1aと基準値C2の大小関係を示す。基準値C1aは、FBC推定値と比較される基準値である。FBC推定値は、前述したように、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。また、基準値C2は、後述するように、対象ページデータに含まれる正確な誤りビット数と比較される基準値である。よって、第2パトロールリードを実施する必要があるにもかかわらず実施されないという不具合が生じないように、誤差を含む推定値の基準値C1aは、基準値C2より小さい値に設定される。
【0204】
なお、基準値C1aは、第1実施形態における基準値C1と比較して特に大小関係は問わないが、例えば、基準値C1aは、基準値C1と同じ値、あるいは基準値C1より大きな値に設定される。
【0205】
図21及び
図22を用いて、第2パトロールリードの動作を説明する。第2パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧AR、BR、CR、DR、ER、FR、及びGRを用いて読み出し動作を実施する(S13_2)。次に、制御回路16は、読み出し動作により得られた対象ページデータをメモリコントローラ20に送信する(S13_3)。次に、メモリコントローラ20は、ECC回路23_1により対象ページデータに対して誤り訂正を行い、誤りビット数を算出する(S13_4)。以上により、第2パトロールリードが終了する。
【0206】
次に、
図19及び
図22に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、誤りビット数に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S14)。すなわち、リフレッシュ判断回路21Aは、誤りビット数に基づいて対象ページデータを書き直すか否かを判断する。
【0207】
具体的には、誤りビット数が基準値(または、閾値)C2より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図19のS14でYES)、リフレッシュ処理が実施される(S15)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S15_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S15_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S15_3)。
【0208】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S15_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S15_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S15_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0209】
一方、誤りビット数が基準値C2以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図19のS14でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0210】
3.2.2. FBC推定値の算出
次に、第1パトロールリードにおけるFBC推定値の算出について説明する。上述したように、第3実施形態のメモリシステム1では、第1パトロールリードにおいてNANDメモリ10_1がFBC推定値を算出する。
【0211】
FBC推定値を算出する動作として、第1実施形態において説明した3つの方式、すなわち4点リード方式、3点リード方式、及び1点リード方式が用いられる。これら4点リード方式、3点リード方式、及び1点リード方式の動作は、第1実施形態と同様である。
【0212】
3.3 第3実施形態に係る効果
第3実施形態によれば、パトロール時間を短縮することができるメモリシステムを提供できる。
【0213】
第3実施形態の構成では、第1実施形態の効果に加えて、パトロール動作を、第1段階目のパトロールリードと、第2段階目のパトロールリードの2段階に分けて実施することにより、パトロール動作に要する時間を短縮できる。さらに、第2段階目のパトロールリードにおいて、ECC回路が対象ページデータに対して誤り訂正を行い、誤りビット数を取得することにより信頼性の高いデータ保持特性を維持することが可能である。
【0214】
4.第4実施形態
第4実施形態のメモリシステムについて説明する。第4実施形態では、第3実施形態と同様に、第1段階目のパトロールリードと第2段階目のパトロールリードが実施される。さらに、第1段階目のパトロールリードにおいて、第2実施形態と同様に、NANDメモリ10_1がFBC推定値の構成要素をメモリコントローラ20に転送する。メモリコントローラ20は、FBC推定値の構成要素を用いてFBC推定値を算出する。第4実施形態では、主に第2及び第3実施形態と異なる点について説明する。
【0215】
4.1 構成
第4実施形態のメモリシステム1が備えるメモリコントローラ20及び半導体メモリ10の構成及び構造は、前述した第2実施形態と同様である。
【0216】
4.2 動作
第4実施形態のメモリシステム1における動作について説明する。
【0217】
4.2.1 パトロール動作
第4実施形態のメモリシステム1におけるパトロールの動作について説明する。第4実施形態のパトロール動作では、第1パトロールリードにおいてNANDメモリ10_1がメモリコントローラ20へFBC推定値の構成要素を転送し、メモリコントローラ20がFBC推定値を算出し、第2パトロールリードを実施するか否かを、FBC推定値を用いてメモリコントローラ20が判断する。さらに、第2パトロールリードにおいてリフレッシュ処理を実施するか否かをメモリコントローラ20が判断する。
【0218】
図23は、第4実施形態に係るパトロール動作を示すフローチャートである。
図24は、パトロール動作における第1パトロールリードの動作を示すフローチャートである。
図25は、パトロール動作における第2パトロールリードの動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図26は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0219】
図23に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0220】
パトロール動作が開始されると、第1パトロールリードが実施される(S11)。すなわち、
図26に示すように、メモリコントローラ20は、NANDメモリ10_1に第1パトロールリードの実施を命令する(S11_1)。第1パトロールリードの実施命令を受け取ると、NANDメモリ10_1は、第1パトロールリードを開始する。
【0221】
図24及び
図26を用いて、第1パトロールリードの動作を説明する。第4実施形態の第1パトロールリードは、対象セルユニットに対して読み出し動作を実施し、読み出したデータに基づいて、対象ページデータにおけるFBC推定値をメモリコントローラ20が算出する動作である。
【0222】
第1パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、対象セルユニットに対して読み出し動作を実施する(S11_2)。
【0223】
次に、NANDメモリ10_1の制御回路16に含まれる構成要素生成回路16Bは、FBC推定値を算出するための構成要素を取得する(S11_5)。FBC推定値の構成要素は、例えば、複数の読み出し電圧と各読み出し電圧におけるオンセル数を含む。あるいは、FBC推定値の構成要素は、複数の読み出し電圧のうち最も低い(または、高い)1つの読み出し電圧と、この読み出し電圧と他の読み出し電圧との間の電圧差、及び各読み出し電圧におけるオンセル数を含む。
【0224】
次に、制御回路16は、FBC推定値の構成要素をメモリコントローラ20に送信する(S11_6)。
【0225】
次に、メモリコントローラ20のプロセッサ21に含まれるFBC推定値生成回路21Bは、受信したFBC推定値の構成要素に基づいて、対象ページデータに含まれていると推定されるFBCであるFBC推定値を算出する(S11_7)。FBC推定値の算出では、読み出した対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、メモリコントローラ20が備えるFBC推定値生成回路21Bにより、FBC推定値が算出される。FBC推定値の算出の動作については後述する。以上により、第1パトロールリードが終了する。
【0226】
次に、
図23及び
図26に示すように、メモリコントローラ20のプロセッサ21は、FBC推定値に基づいて第2パトロールリードを実施する必要があるか否かを判断する(S12)。
【0227】
具体的には、FBC推定値が基準値C1aより大きいとき、メモリコントローラ20は、第2パトロールリードを実施する必要があると判断する。第2パトロールリードを実施する必要がある場合(
図23のS12でYES)、メモリコントローラ20はNANDメモリ10_1に第2パトロールリードの実施を命令する(
図26のS13_1)。第2パトロールリードの実施命令を受け取ると、NANDメモリ10_1は第2パトロールリードを実施する(
図23のS13)。一方、FBC推定値が基準値C1a以下であるとき、メモリコントローラ20は、第2パトロールリードを実施する必要がないと判断する。第2パトロールリードを実施する必要がない場合(
図23のS12でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0228】
また、第2パトロールリードの実施判断に用いられる基準値C1aについては、第3実施形態と同様である。
図23に、基準値C1aと基準値C2の大小関係を示す。基準値C1aは、FBC推定値と比較される基準値である。FBC推定値は、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。また、基準値C2は、対象ページデータに含まれる正確な誤りビット数と比較される基準値である。よって、第2パトロールリードを実施する必要があるにもかかわらず実施されないという不具合が生じないように、誤差を含む推定値の基準値C1aは、基準値C2より小さい値に設定される。
【0229】
なお、基準値C1aは、第1実施形態における基準値C1と比較して特に大小関係は問わないが、例えば、基準値C1aは、基準値C1と同じ値、あるいは基準値C1より大きな値に設定される。
【0230】
図25を用いて、第2パトロールリードの動作を説明する。第2パトロールリードは、
図21を用いて説明した第3実施形態の第2パトロールリードと同様である。
【0231】
第2パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧AR、BR、CR、DR、ER、FR、及びGRを用いて読み出し動作を実施する(S13_2)。次に、制御回路16は、読み出し動作により得られた対象ページデータをメモリコントローラ20に送信する(S13_3)。次に、メモリコントローラ20は、ECC回路23_1により対象ページデータに対して誤り訂正を行い、誤りビット数を算出する(S13_4)。以上により、第2パトロールリードが終了する。
【0232】
次に、
図23及び
図26に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、誤りビット数に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S14)。すなわち、リフレッシュ判断回路21Aは、誤りビット数に基づいて対象ページデータを書き直すか否かを判断する。
【0233】
具体的には、誤りビット数が基準値C2より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図23のS14でYES)、リフレッシュ処理が実施される(S15)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S15_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S15_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S15_3)。
【0234】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S15_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S15_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S15_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0235】
一方、誤りビット数が基準値C2以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図23のS14でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0236】
4.2.2. FBC推定値の算出
次に、第1パトロールリードにおけるFBC推定値の算出について説明する。上述したように、第4実施形態のメモリシステム1では、第1パトロールリードにおいてNANDメモリ10_1がメモリコントローラ20にFBC推定値の構成要素を送信し、メモリコントローラ20がFBC推定値を算出する。
【0237】
FBC推定値を算出する動作として、第2実施形態にて説明した2つの方式、すなわち4点リード方式、及び3点リード方式が用いられる。これら4点リード方式、及び3点リード方式の動作は、第2実施形態と同様である。
【0238】
4.3 第4実施形態に係る効果
第4実施形態によれば、パトロール時間を短縮することができるメモリシステムを提供できる。
【0239】
第4実施形態の構成では、第2実施形態の効果に加えて、パトロール動作を、第1段階目のパトロールリードと、第2段階目のパトロールリードの2段階に分けて実施することにより、パトロール動作に要する時間を短縮できる。さらに、第2段階目のパトロールリードにおいて、ECC回路が対象ページデータに対して誤り訂正を行い、誤りビット数を取得することにより信頼性の高いデータ保持特性を維持することが可能である。
【0240】
5.第5実施形態
第5実施形態のメモリシステムについて説明する。第5実施形態では、NANDメモリからデータを読み出さず、メモリコントローラ20が管理している情報に基づいてFBC推定値を算出する。第5実施形態では、主に第1実施形態と異なる点について説明する。
【0241】
5.1 構成
5.1.1 メモリシステム
第5実施形態のメモリシステムの構成について説明する。
図27は、第5実施形態に係るメモリシステムの構成を示すブロック図である。
【0242】
メモリシステム1は、半導体メモリ10及びメモリコントローラ20を備える。
【0243】
5.1.2 メモリコントローラ
次に、
図27を用いて、メモリコントローラ20の構成について説明する。メモリコントローラ20は、プロセッサ21、メモリ22、ECC回路23_1及び23_2、NANDインターフェース24_1及び24_2、並びにホストインターフェース25を備える。
【0244】
プロセッサ21は、リフレッシュ判断回路21A及びFBC推定値生成回路21Bを有する。リフレッシュ判断回路21Aは、FBC推定値に基づいてリフレッシュ処理を実施するか否かを判断する。FBC推定値生成回路21Bは、FBC推定値の構成要素に基づいてFBC推定値を算出する。
【0245】
メモリ22は、履歴値テーブル22Aを記憶する。履歴値テーブル22Aは、読み出し動作で用いる読み出し電圧の更新値及び初期値を記憶する。履歴値テーブル22Aの詳細については後述する。なおここでは、履歴値テーブル22Aが更新値及び初期値を記憶する例を示すが、履歴値テーブル22Aは更新値のみを記憶してもよい。この場合、例えば、更新値は初期値からのシフト量を示す値である。
【0246】
メモリコントローラ20が備えるその他の構成は、前述した第1実施形態と同様である。
【0247】
5.1.3 半導体メモリ
第5実施形態のメモリシステム1が備える半導体メモリ10、及びメモリセルアレイ11の構成及び構造は、NANDメモリ10_1~10_4がFBC推定値生成回路16Aを有しない点を除き、前述した第1実施形態と同様である。
【0248】
5.2 動作
第5実施形態のメモリシステム1における動作について説明する。
【0249】
5.2.1 パトロール動作
第5実施形態のメモリシステム1におけるパトロール動作について説明する。第5実施形態のパトロール動作では、メモリコントローラ20は、履歴値テーブル22Aに含まれた読み出し電圧の更新値と初期値との差分を取り、差分に基づいてFBC推定値を算出する。以降、NANDメモリ10_1からデータを読み出さずに、メモリコントローラ20が取得している読み出し電圧の更新値と初期値を用いてFBC推定値を算出する方法を、履歴値検査(あるいは、0点リード方式)と称する。
【0250】
図28は、第5実施形態に係るパトロール動作を示すフローチャートである。
図29は、パトロール動作における履歴値検査の動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図30は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0251】
図28に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0252】
パトロール動作が開始されると、履歴値検査が実施される(S21)。
【0253】
図29及び
図30を用いて、履歴値検査の動作を説明する。第5実施形態の履歴値検査は、履歴値テーブル22Aに含まれる対象セルユニットに対応する読み出し電圧に基づいて、メモリコントローラ20が対象ページデータにおけるFBC推定値を算出する動作である。履歴値テーブル22Aは、誤りビット数が最小であることが期待される読み出し電圧を含む。
【0254】
メモリコントローラ20のプロセッサ21は、履歴値検査を実施する(S21)。
【0255】
より具体的には、プロセッサ21は、メモリ22に記憶された履歴値テーブル22Aから、例えば、Gステートに対する読み出し電圧の更新値と初期値を取得する(S21_1)。履歴値テーブル22Aの詳細については後述する。
【0256】
次に、プロセッサ21は、取得した読み出し電圧の更新値と初期値との差分を算出する。さらに、プロセッサ21は、算出した差分に基づいて、対象ページデータに含まれていると推定されるFBC推定値を算出する(S21_2)。FBC推定値の算出では、対象ページデータをNANDメモリ10_1がメモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、プロセッサ21(より詳しくは、FBC推定値生成回路21B)により、FBC推定値が算出される。FBC推定値の算出の動作については後述する。以上により、履歴値検査が終了する。なおここでは、更新値と初期値との差分に基づいてFBC推定値を算出する例を示したが、更新値が初期値からのシフト量を示す値である場合は、更新値に基づいてFBC推定値が算出される。
【0257】
次に、
図28及び
図30に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、FBC推定値に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S22)。すなわち、リフレッシュ判断回路21Aは、FBC推定値に基づいて対象ページデータを書き直すか否かを判断する。
【0258】
具体的には、FBC推定値が基準値(または、閾値)C3より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図28のS22でYES)、リフレッシュ処理が実施される(S23)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S23_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S23_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S23_3)。
【0259】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S23_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S23_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S23_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0260】
一方、FBC推定値が基準値C3以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図28のS22でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0261】
ここで、リフレッシュ処理の実施判断に用いられる基準値C3について詳述する。
図28に、基準値C3と基準値C0の大小関係を示す。基準値C3は、FBC推定値と比較される基準値である。FBC推定値は、前述したように、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。一方、基準値C0は、比較例において、リフレッシュ処理の実施判断に用いられる、対象ページデータに含まれる正確な誤りビット数と比較される基準値である。本実施形態においては、リフレッシュ処理を実施するべきブロックに対してリフレッシュ処理が実施されないという不具合が生じないように、誤差を含む推定値の基準値C3は、基準値C0より小さい値に設定される。
【0262】
5.2.2. 履歴値テーブル
次に、メモリ22に記憶された履歴値テーブル22Aについて説明する。上述したように、第5実施形態のメモリシステム1では、NANDメモリ10_1からデータを読み出さず、メモリコントローラ20は、メモリ22の履歴値テーブル22Aから取得した更新値及び初期値に基づいてFBC推定値を算出する。
【0263】
例えば、NANDメモリ10_1が含むメモリセルに対してデータを書き込んだ場合、書き込み直後から時間の経過とともにメモリセルの閾値電圧が電位中性点に収束していく傾向がある。例えば、メモリセルが有する各ステートの閾値電圧分布は、書き込み直後から時間の経過に従って、電圧が低い側に徐々にシフトする。このため、メモリシステム1では、メモリコントローラ20が、読み出し動作で用いる読み出し電圧を各ステートの閾値電圧分布のシフト量に応じて定期的に更新し、適切な読み出し電圧を設定している。ここでは、書き込み直後に対応した読み出し電圧を初期値と称し、各ステートの閾値電圧分布のシフト量に合せて更新された読み出し電圧を更新値と称する。履歴値テーブル22Aは、ブロックBLKmの物理アドレスと、ブロックBLKmに対応する更新値及び初期値と、更新値を更新した時間(以下、更新時間)及び初期値を記憶した時間(以下、生成時間)とを含む。
【0264】
図31を用いて、メモリコントローラ20のメモリ22に記憶された履歴値テーブル22Aについて説明する。
図31は、履歴値テーブル22Aの一例を示す図である。履歴値テーブル22Aは、読み出し電圧の更新値を含む履歴値テーブル22Auと、初期値を含む履歴値テーブル22Aiを有する。
【0265】
履歴値テーブル22Auには、例えば、ブロックBLK0~BLKmの物理的な場所を示す物理アドレスBA0、BA1、…、BAmと、それら物理アドレスに対するAステート~Gステートの読み出し電圧の更新値と、それら更新値を更新した更新時間TU0、TU1、…、TUmとが対応付けられている。例えば、ブロックBLK0の物理アドレスBA0に対するGステートの読み出し電圧の更新値はXgであり、更新値Xgの更新時間はTU0である。
【0266】
履歴値テーブル22Aiには、例えば、ブロックBLK0~BLKmの物理的な場所を示す物理アドレスBA0、BA1、…、BAmと、それら物理アドレスに対するAステート~Gステートの読み出し電圧の初期値と、それら初期値を記憶した生成時間TI0、TI1、…、TImとが対応付けられている。例えば、ブロックBLK0の物理アドレスBA0に対するGステートの読み出し電圧の初期値はNgであり、初期値Ngの生成時間はTI0である。
【0267】
なお、履歴値テーブル22Au及び22Ai内のAステート~Gステートの読み出し電圧の各々は、前述したステート判定のために用いられる読み出し電圧AR、BR、CR、DR、ER、FR、及びGRにそれぞれ相当する電圧である。
【0268】
また、履歴値テーブル22Auに記憶された読み出し電圧の更新値は、定期的(または、不定期)に適切な読み出し電圧に更新される。履歴値テーブル22Aiは、読み出し電圧の設定値が初期値から更新されるときに、履歴値テーブル22Auとして複写され、履歴値テーブル22Aiはそのまま保持される。なおここでは、更新値と初期値とが別のテーブルに記憶されるものとして説明したが、1つのテーブルに更新値及び更新時刻並びに初期値及び生成時刻とをまとめて記憶してもよい。
【0269】
図32を用いて、履歴値テーブル22Auに記憶された更新値が定期的に更新される動作を説明する。
図32は、履歴値テーブル22Au内の更新値が更新される動作を示すフローチャートである。このフローチャートに示された手順による動作は、メモリコントローラ20によって命令あるいは実行される。
【0270】
更新動作が開始されると、メモリコントローラ20は、履歴値テーブル22Au内の物理アドレスに対応する更新時刻を取得する(S31)。次に、メモリコントローラ20は、現在の時刻を取得する(S32)。
【0271】
次に、メモリコントローラ20は、履歴値テーブル22Auの更新時刻から現在の時刻までに更新時間間隔が経過したか否かを判断する(S33)。なお、更新時間間隔は24時間であるが、これは一例であり、その他の時間でもよい。
【0272】
更新時刻から更新時間間隔が経過していた場合、メモリコントローラ20は、物理アドレスが指定するブロックに対して読み出し電圧のトラッキング動作を実行する(S34)。トラッキング動作は、隣り合う2つのステートの閾値電圧分布が互いに重なる場合に、誤りビット数が最小となる点(即ち、2つの閾値電圧分布の交点)に近い読み出し電圧を求めるものである。トラッキング動作では、X軸を閾値電圧、Y軸をメモリセル数としたとき、2つのステートのメモリセル数が合算された分布の谷(即ち、極小値)を求め、得られた谷から適切な読み出し電圧(あるいは、シフト量)を算出する。2つのステートのメモリセル数が合算された分布の谷は、通常、2つの閾値電圧分布の交点の電圧に近い電圧であることが期待される。トラッキング動作の詳細については後述する。メモリコントローラ20は、トラッキング動作で算出した読み出し電圧に従い、その物理アドレスに対応する更新値と更新時刻を更新する(S35)。
【0273】
一方、更新時刻から更新時間間隔が経過していない場合、メモリコントローラ20は、物理アドレスに対応する更新値と更新時刻を現状のまま維持し、更新しない(S36)。
【0274】
その後、メモリコントローラ20は、ステップS31に戻り、その他の物理アドレスに対してステップS31からS35あるいはS36までの処理を繰り返す。
【0275】
次に、
図33を用いて、読み出し電圧のトラッキング動作について説明する。上述したように、トラッキング動作は、X軸を閾値電圧、Y軸をメモリセル数としたとき、隣り合う2つのステートのメモリセル数が合算された分布の谷となる場所から適切な読み出し電圧を算出するものである。以下に、FステートとGステートとにそれぞれ対応する2つの閾値電圧分布の交点を算出する場合を例に説明する。
【0276】
図33は、FステートとGステートの閾値電圧分布の様子を示している。例えば、データの書き込み直後の閾値電圧分布が
図33の(A)の通りであったとする。すなわち、データの書き込み直後において、FステートとGステートの閾値電圧分布は重なっていない。しかし、データリテンションエラーまたはディスターブ等により
図33の(B)のように、閾値電圧分布の分布幅が拡がり、FステートとGステートの閾値電圧分布が重なったとする。すると、読み出し電圧GRで読み出しを行うと、
図33の(B)の斜線部分の領域に相当するメモリセルが誤りビットとなる。そして、発生した誤りビット数が、ECC回路23_1のエラー訂正可能なビット数を超えていれば、データを正しく読み出すことが困難となる。そこで、メモリコントローラ20は、この2つのステートのメモリセル数が合算された分布の谷の位置の電圧を探索し、その近傍の電圧を適切な読み出し電圧GRaとする。以上がトラッキング動作である。
【0277】
以上に説明したトラッキング動作を含む履歴値テーブル22Auの更新動作により、ブロックに対する読み出し電圧の更新値が、定期的に適切な読み出し電圧に更新される。本実施形態では、このような読み出し電圧の更新値を用いてFBC推定値の算出が実施される。
【0278】
次に、履歴値テーブル22Aiに記憶される初期値について説明する。初期値は、ブロックの状態が消去済みブロックから書き込み先ブロックに遷移する際に、あるいは書き込み先ブロックに対する書き込みが終了した直後に、生成される。
【0279】
まず、
図34を用いて、ブロックの状態が遷移するサイクルについて説明する。
図34は、ブロックの状態が遷移する様子を示す図である。ブロックの状態は、アクティブブロックPA、フリーブロックPF、消去済みブロックPE、及び書き込み先ブロックPWの順で遷移する。メモリコントローラ20は、ブロックの状態がこれらのうちのいずれにあるかを管理している。
【0280】
アクティブブロックPAは、データの書き込みと読み出しのうち読み出しのみが可能なブロックである。言い換えると、データの書き込みが禁止されるが、読み出しが可能なブロックである。アクティブブロックPAに記憶されたデータが全て無効化されると、そのアクティブブロックPAはフリーブロックPFへ遷移する。
【0281】
フリーブロックPFは、保存されたデータが全て無効データであり、データの消去が可能なブロックである。フリーブロックPFに記憶されたデータが消去されると、そのフリーブロックPFは消去済みブロックPEへ遷移する。
【0282】
消去済みブロックPEは、フリーブロックPFに対して消去が実行されて、消去が終了したブロックである。言い換えると、データが消去され、書き込み及び読み出しが禁止されたブロックである。書き込みが可能なブロックとして消去済みブロックPEが設定されると、その消去済みブロックPEは書き込み先ブロックPWへ遷移する。
【0283】
書き込み先ブロックPWは、データの書き込みが可能で、かつデータの読み出しが可能なブロックである。書き込み先ブロックPWに含まれる全てのセルユニットへの書き込み動作が完了した場合、あるいは、一部のセルユニットを未書き込みの状態としつつも、これ以上当該ブロックへの書き込みを行わないとメモリコントローラ20が決定した場合、その書き込み先ブロックPWはアクティブブロックPAへ遷移する。
【0284】
上述したようにブロックの状態が遷移する場合に、履歴値テーブル22Aiに記憶された読み出し電圧の初期値は、
図34に示すタイミングT1において、すなわちブロックの状態が消去済みブロックPEから書き込み先ブロックPWに遷移する際に生成される。あるいは、
図34に示すタイミングT2において、すなわち書き込み先ブロックPWに対する書き込み動作が完了した直後に生成される。この初期値は、例えば、NANDメモリが有するROMブロックに設定された読み出し電圧である。
【0285】
なお、履歴値テーブル22Aでは、ブロックBLK毎に、更新値及び初期値を対応付けたが、ブロックBLKより小さい単位、例えばストリングユニットSU毎にあるいはセルユニット(あるいは、ワード線)毎に、更新値及び初期値を対応付けてもよし、複数のセルユニットを含むセルユニットグループ毎に、更新値及び初期値を対応付けてもよい。
【0286】
5.2.3. FBC推定値の算出
次に、
図35を用いて、履歴値検査(あるいは、0点リード方式)、すなわちメモリコントローラ20が備える履歴値テーブル22Aの更新値及び初期値を用いてFBC推定値を算出する方法について説明する。AステートからGステートの中でGステートの閾値電圧分布は、時間の経過に従ってシフトする量が他のステートの閾値電圧分布より大きい場合がある。このため、本実施形態では、Gステート判定のための読み出し電圧の更新値と初期値を、FBC推定値の算出に用いる。
【0287】
図35は、物理アドレスBA0のブロックに含まれる対象セルユニットの閾値電圧分布図である。
図35には、書き込み直後のGステートとFステートの閾値電圧分布を破線にて示し、書き込み直後から時間が経過したGステートとFステートの閾値電圧分布を実線にて示している。破線にて示すGステートとFステートの閾値電圧分布が重なるところの交点の閾値電圧が初期値Ngに対応する。実線にて示すGステートとFステートのメモリセル数が合算された分布の谷(即ち、極小値)の閾値電圧が更新値Xgに対応する。
【0288】
メモリコントローラ20は、履歴値テーブル22Aに含まれた更新値Xgと初期値Ngを取得し、更新値Xgと初期値Ngとの差分を取り差分値aを求める。さらに、メモリコントローラ20は、差分値aに基づいてFBC推定値を算出する。例えば、差分値aが大きくなると、FBC推定値も増大する。
【0289】
また、ブロックの書き込み動作及び消去動作の繰り返し回数に応じて、FBC推定値を増加させるレートを変化させてもよい。
図36は、読み出し電圧の更新値と初期値の差分値と、FBC推定値との関係を表す。
図36は、書き込み動作及び消去動作の繰り返し回数が1回、3000回、及び5000回の場合を示している。
【0290】
図36に示すように、差分値aに対応して算出されるFBC推定値は、対象セルユニットが含まれるブロックに対する書き込み動作及び消去動作の繰り返し回数が多くなるのに従って増加する。
【0291】
また、差分値bが差分値aより大きい場合、書き込み動作及び消去動作の繰り返し回数が同じでも、差分値bに対応して算出されるFBC推定値は、差分値aに対応して算出されるFBC推定値より大きくなる。
【0292】
5.3 第5実施形態に係る効果
第5実施形態によれば、パトロール時間を短縮することができるメモリシステムを提供できる。
【0293】
第5実施形態の構成では、NANDメモリからデータを読み出さずに、メモリコントローラ20が管理している情報だけを用いてFBC推定値を算出することができる。これにより、第1乃至第4実施形態よりもさらにパトロール動作に要する時間を短縮することができる。
【0294】
6.第6実施形態
第6実施形態のメモリシステムについて説明する。第6実施形態では、履歴値検査とパトロールリードが実施される。履歴値検査では、パトロールリードを実施するか否かが判断される。パトロールリードでは、対象ページデータを用いてリフレッシュ処理を実施するか否かが判断される。さらに、履歴値検査において、第5実施形態と同様に、NANDメモリからデータを読み出さず、メモリコントローラ20が管理している情報に基づいてFBC推定値を算出する。第6実施形態では、主に第3及び第5実施形態と異なる点について説明する。
【0295】
6.1 構成
第6実施形態のメモリシステム1が備えるメモリコントローラ20及び半導体メモリ10の構成及び構造は、前述した第5実施形態と同様である。
【0296】
6.2 動作
第6実施形態のメモリシステム1における動作について説明する。
【0297】
6.2.1 パトロール動作
第6実施形態のメモリシステム1におけるパトロール動作について説明する。第6実施形態のパトロール動作では、履歴値検査においてメモリコントローラ20は、履歴値テーブル22Aに含まれた読み出し電圧の更新値と初期値との差分を取り、差分に基づいてFBC推定値を算出する。メモリコントローラ20は、FBC推定値に基づいてパトロールリードを実施するか否かを判断する。さらに、パトロールリードにおいて、メモリコントローラ20はリフレッシュ処理を実施するか否かを判断する。
【0298】
図37は、第6実施形態に係るパトロール動作を示すフローチャートである。
図38は、パトロール動作における履歴値検査の動作を示すフローチャートである。
図39は、パトロール動作におけるパトロールリードの動作を示すフローチャートである。これらのフローチャートに示された手順による動作は、メモリコントローラ20あるいは制御回路16によって命令あるいは実行される。
図40は、パトロール動作におけるメモリコントローラ20とNANDメモリ10_1の動作と、命令及びデータの送受信を示す図である。
【0299】
図37に示すように、メモリコントローラ20は、パトロール動作を開始する。パトロール動作は、定期的(あるいは不定期)に開始される。
【0300】
パトロール動作が開始されると、履歴値検査が実施される(S41)。
【0301】
図38及び
図40を用いて、履歴値検査の動作を説明する。第6実施形態の履歴値検査は、履歴値テーブル22Aに含まれた対象セルユニットに対応する読み出し電圧に基づいて、メモリコントローラ20が対象ページデータにおけるFBC推定値を算出する動作である。履歴値テーブル22Aは、誤りビット数が最小であることが期待される電圧を含む。
【0302】
メモリコントローラ20のプロセッサ21は、履歴値検査を実施する(S41)。
【0303】
より具体的には、プロセッサ21は、メモリ22に記憶された履歴値テーブル22Aから、例えば、Gステートに対する読み出し電圧の更新値と初期値を取得する(S41_1)。
【0304】
次に、プロセッサ21は、取得した読み出し電圧の更新値と初期値との差分を算出する。さらに、プロセッサ21は、算出した差分に基づいて、対象ページデータに含まれていると推定されるFBC推定値を算出する(S41_2)。FBC推定値の算出では、対象ページデータをNANDメモリ10_1メモリコントローラ20に転送することなく、すなわち、メモリコントローラ20が備えるECC回路23_1により対象ページデータの誤り訂正が行われることなく、プロセッサ21(より詳しくは、FBC推定値生成回路21B)により、FBC推定値が算出される。以上により、履歴値検査が終了する。
【0305】
次に、
図37及び
図40に示すように、メモリコントローラ20のプロセッサ21は、FBC推定値に基づいてパトロールリードを実施する必要があるか否かを判断する(S42)。具体的には、FBC推定値が基準値(または、閾値)C3aより大きいとき、メモリコントローラ20は、パトロールリードを実施する必要があると判断する。パトロールリードを実施する必要がある場合(
図37のS42でYES)、メモリコントローラ20はNANDメモリ10_1にパトロールリードの実施を命令する(
図40のS43_1)。パトロールリードの実施命令を受け取ると、NANDメモリ10_1はパトロールリードを実施する(
図37のS43)。一方、FBC推定値が基準値C3a以下であるとき、メモリコントローラ20は、パトロールリードを実施する必要がないと判断する。パトロールリードを実施する必要がない場合(
図37のS42でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0306】
ここで、パトロールリードの実施判断に用いられる基準値C3aについて詳述する。
図37に、基準値C3aと基準値C2の大小関係を示す。基準値C3aは、FBC推定値と比較される基準値である。FBC推定値は、前述したように、対象ページデータに含まれる誤りビット数の推定値である。このため、FBC推定値として算出される誤りビット数は誤差を含む。また、基準値C2は、前述したように、対象ページデータに含まれる正確な誤りビット数と比較される基準値である。よって、パトロールリードを実施する必要があるにもかかわらず実施されないという不具合が生じないように、誤差を含む推定値の基準値C3aは、基準値C2より小さい値に設定される。
【0307】
なお、基準値C3aは、第5実施形態における基準値C3と比較して特に大小関係は問わないが、例えば、基準値C3aは、基準値C3と同じ値、あるいは基準値C3より大きな値に設定される。
【0308】
図39を用いて、パトロールリードの動作を説明する。パトロールリードが開始されると、NANDメモリ10_1の制御回路16は、NANDメモリ10_1における対象セルユニットに対して、読み出し電圧AR、BR、CR、DR、ER、FR、及びGRを用いて読み出し動作を実施する(S43_2)。次に、制御回路16は、読み出し動作により得られた対象ページデータをメモリコントローラ20に送信する(S43_3)。次に、メモリコントローラ20は、ECC回路23_1により対象ページデータに対して誤り訂正を行い、誤りビット数を算出する(S43_4)。以上により、パトロールリードが終了する。
【0309】
次に、
図37及び
図40に示すように、メモリコントローラ20のプロセッサ21に含まれるリフレッシュ判断回路21Aは、誤りビット数に基づいてリフレッシュ処理を実施する必要があるか否かを判断する(S44)。すなわち、リフレッシュ判断回路21Aは、誤りビット数に基づいて対象ページデータを書き直すか否かを判断する。
【0310】
具体的には、誤りビット数が基準値C2より大きいとき、メモリコントローラ20は、リフレッシュ処理を実施する必要があると判断する。リフレッシュ処理を実施する必要がある場合(
図37のS44でYES)、リフレッシュ処理が実施される(S45)。すなわち、メモリコントローラ20は、NANDメモリ10_1に、対象セルユニットを含むブロックに対する読み出し動作を命令する(S45_1)。読み出し動作の命令を受け取ると、制御回路16は、対象セルユニットを含むブロックに対して読み出し動作を実施する(S45_2)。続いて、制御回路16は、読み出したデータをメモリコントローラ20に送信する(S45_3)。
【0311】
次に、メモリコントローラ20は、読み出したデータに対してECC回路23_1により誤り訂正を実施する(S45_4)。続いて、メモリコントローラ20は、NANDメモリ10_1に、誤り訂正を実施したデータの書き込み動作を命令する(S45_5)。書き込み動作の命令を受け取ると、制御回路16は、誤り訂正を実施したデータの書き込み動作を実施する(S45_6)。すなわち、制御回路16は、誤り訂正を実施したデータを、NANDメモリ10_1に含まれるブロックに書き込む。
【0312】
一方、誤りビット数が基準値C2以下であるとき、メモリコントローラ20は、リフレッシュ処理を実施する必要がないと判断する。リフレッシュ処理を実施する必要がない場合(
図37のS44でNO)、メモリコントローラ20は、パトロール動作を終了させる。
【0313】
6.2.2 FBC推定値の算出
上述したように、第6実施形態のメモリシステム1では、履歴値検査においてメモリコントローラ20がFBC推定値を算出する。履歴値検査の動作の詳細は、第5実施形態と同様である。
【0314】
6.3 第6実施形態に係る効果
第6実施形態によれば、パトロール時間を短縮することができるメモリシステムを提供できる。
【0315】
第6実施形態の構成では、NANDメモリからデータを読み出さずに、メモリコントローラ20が管理している情報だけを用いてFBC推定値を算出することができる。これにより、第1乃至第4実施形態よりもさらにパトロール動作に要する時間を短縮することができる。
【0316】
さらに、第6実施形態の構成では、パトロール動作を、履歴値検査と、パトロールリードの2段階に分けて実施することにより、パトロール動作に要する時間を短縮できる。さらに、パトロールリードにおいて、ECC回路が対象ページデータに対して誤り訂正を行い、誤りビット数を取得することにより信頼性の高いデータ保持特性を維持することが可能である。
【0317】
7.その他変形例等
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0318】
1…メモリシステム、2…ホスト、10…半導体メモリ、10_1~10_4…NAND型フラッシュメモリチップ、11…メモリセルアレイ、12…入出力回路、13…ロジック制御回路、14…レディ/ビジー回路、15…レジスタ群、15A…ステータスレジスタ、15B…アドレスレジスタ、15C…コマンドレジスタ、16…制御回路、16A…FBC推定値生成回路、16B…構成要素生成回路、17…電圧生成回路、18…ロウデコーダ、19A…カラムデコーダ、19B…データレジスタ、19C…センスアンプ、20…メモリコントローラ、21…プロセッサ、21A…リフレッシュ判断回路、21B…FBC推定値生成回路、22…メモリ、22A…履歴値テーブル、22Ai…履歴値テーブル、22Au…履歴値テーブル、23_1,23_2…ECC回路、24_1,24_2…NANDインターフェース、25…ホストインターフェース、30…半導体基板、31~35…導電層、40…ブロック絶縁層、41…電荷蓄積層、42…トンネル絶縁層、43…半導体層、BA0~BAm…物理アドレス、BLK0~BLKm…ブロック、C1,C1a,C2,C3,C3a…基準値(あるいは、閾値)、O1~O4…オンセル数、P1…差分点、P2…差分点、P3…差分点。