JP7353889B2 - メモリシステムおよび方法 - Google Patents

メモリシステムおよび方法 Download PDF

Info

Publication number
JP7353889B2
JP7353889B2 JP2019170738A JP2019170738A JP7353889B2 JP 7353889 B2 JP7353889 B2 JP 7353889B2 JP 2019170738 A JP2019170738 A JP 2019170738A JP 2019170738 A JP2019170738 A JP 2019170738A JP 7353889 B2 JP7353889 B2 JP 7353889B2
Authority
JP
Japan
Prior art keywords
memory
data
value
index value
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019170738A
Other languages
English (en)
Other versions
JP2021047721A (ja
Inventor
真 栗原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019170738A priority Critical patent/JP7353889B2/ja
Priority to US16/799,326 priority patent/US11138070B2/en
Publication of JP2021047721A publication Critical patent/JP2021047721A/ja
Application granted granted Critical
Publication of JP7353889B2 publication Critical patent/JP7353889B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Description

本実施形態は、メモリシステムおよび方法に関する。
NAND型のフラッシュメモリなどの不揮発性メモリ(不揮発性の半導体メモリ)を用いたメモリシステムにおいては、不揮発性メモリに対してデータの書き込みと消去を繰り返すことにより、不揮発性メモリのメモリセルが物理的に疲弊する。これにより、リード(読み取り)エラーが発生する確率が高まる。そして、リードエラーに対応するために、データに予めエラー訂正符号を付加して書き込みを実行し、リード時には、エラー訂正によって正しいデータに復元することが一般的に行われている。なお、エラー訂正符号として可変長符号を用いる場合、符号化率を小さく(つまり、符号を長く)すれば、エラー訂正の性能は上がるが、記憶容量や処理速度の点でマイナス面が増える、というトレードオフの関係がある。
また、所定のタイミングで、リフレッシュ処理も行われる。リフレッシュ処理は、ブロック単位で、リードしたデータにエラー訂正を実行してから他のブロックに書き込む処理を含む。
しかしながら、不揮発性メモリの物理位置に設定されているエラー訂正の性能と、リフレッシュ処理のタイミングとの関係が適切ではないことがあった。この関係を適切にすることが求められている。
米国特許第7882421号明細書 米国特許出願公開第2018/323914号明細書 米国特許第8522109号明細書
そこで、一つの実施形態の課題は、設定されているエラー訂正の性能に対してリフレッシュ処理の適切なタイミングを決定することができるメモリシステムおよび方法を提供することである。
一つの実施形態によれば、メモリシステムは、複数のブロックを有する不揮発性の半導体メモリと、前記ブロックごとに、ビットエラーレートの経時的変化のトレンドを求め、前記トレンドに基づいて、リフレッシュ処理のタイミングを決定するメモリコントローラと、を備える。前記メモリコントローラは、前記トレンドを示す指標として、データを保存可能な予測期間が短いほど値が大きい所定の指標値を管理し、前記指標値に基づいて時間経過と前記指標値の変化に関する回帰式を算出し、前記回帰式に基づいて電源オフ中の前記指標値を推定し、前記半導体メモリの温度、および、書込/消去回数に応じた、前記指標値に対する加算値を記憶する加算値テーブルを記憶し、前記ブロックにおける所定の記憶領域ごとに、前記指標値を管理し、所定の周期で、前記半導体メモリの温度、および、書込/消去回数を取得し、前記加算値テーブルに基づいて、前記指標値に、該当する前記加算値を加算する。
図1は、実施形態のメモリシステムの構成例を示す図である。 図2は、実施形態におけるメモリチップの構成例を示す図である。 図3は、実施形態におけるメモリセルアレイの構成例を示す回路図である。 図4は、実施形態における2ビット記憶方式が採用された場合におけるメモリセルのしきい値電圧に対する分布を示す図である。 図5は、実施形態におけるメモリセルのしきい値電圧の状態変化後の各分布の例の説明図である。 図6は、実施形態におけるVthトラッキングの説明図である。 図7は、実施形態におけるデータの管理単位を説明するための図である。 図8は、実施形態における可変長符号を説明するための図である。 図9は、実施形態における加算値テーブルを示す図である。 図10は、実施形態における可変長符号の訂正能力等を示す表である。 図11は、実施形態のメモリシステムにおけるパトロール処理の一部を示すフローチャートである。 図12は、実施形態のメモリシステムにおけるリード処理を示すフローチャートである。 図13は、実施形態のメモリシステムにおけるFBCチェック処理を示すフローチャートである。 図14は、実施形態の第1の処理例を示すグラフである。 図15は、実施形態の第2の処理例を示すグラフである。 図16は、実施形態の第3の処理例を示すグラフである。 図17は、実施形態の第4の処理例を示すグラフである。 図18は、実施形態のメモリシステムで用いるパラメータを示す表である。
以下、添付図面を参照して、実施形態にかかるメモリシステムおよび方法について、詳細に説明する。なお、この実施形態によって本発明が限定されるものではない。
図1は、実施形態のメモリシステム100の構成例を示す図である。メモリシステム100は、ホスト装置200と接続される。ホスト装置200は、例えば、サーバ、パーソナルコンピュータ、モバイル型の情報処理装置などである。メモリシステム100は、ホスト装置200の外部記憶装置として機能する。ホスト装置200は、メモリシステム100に対してアクセス要求(リード(読み取り)要求およびライト(書き込み)要求)を発行することができる。メモリシステム100とホスト装置200とを接続する通信インタフェースが準拠する規格は、特定の規格に限定されない。例えば、通信インタフェースは、SATA(Serial Advanced Technology Attachment)規格、SAS(Serial Attached SCSI)規格、PCI(Peripheral Components Interconnect) Express(登録商標)規格などに準拠する。
メモリシステム100は、NAND型のフラッシュメモリであるNANDメモリ1と、ホスト装置200とNANDメモリ1との間のデータ転送を実行するメモリコントローラ2と、を備えている。なお、メモリシステム100は、NANDメモリ1の代わりに他の種類のメモリを具備してもよい。例えば、メモリシステム100は、NANDメモリ1の代わりにNOR型のフラッシュメモリを具備してもよい。
NANDメモリ1は、複数(ここでは4つ)の、半導体メモリとしてのメモリチップ11により構成される。また、メモリコントローラ2は、例えば、2個のチャネル(ch.0、ch.1)を備えている。なお、メモリコントローラ2は、1個または3個以上のチャネルを備えていてもよい。
各チャネルには夫々2つのメモリチップ11が接続されている。各チャネルは、制御信号線、I/O信号線、CE(チップイネーブル)信号線、RY/BY信号線を含んで構成される。I/O信号線は、データ、アドレス、および各種指示を伝送するための信号線である。メモリコントローラ2は、I/O信号線を介して、リード指示、ライト指示、イレース(消去)指示等をメモリチップ11に送信することができる。制御信号線は、WE(ライトイネーブル)信号線、RE(リードイネーブル)信号線、CLE(コマンドラッチイネーブル)信号線、ALE(アドレスラッチイネーブル)信号線、WP(ライトプロテクト)信号線等を含む。
図2は、各メモリチップ11の構成例を説明する図である。メモリチップ11は、I/O信号処理回路110、制御信号処理回路111、チップ制御回路112、コマンドレジスタ113、アドレスレジスタ114、カラムデコーダ115、データレジスタ116、センスアンプ117、メモリセルアレイ118、ロウデコーダ119、およびRY/BY生成回路120を備えている。
チップ制御回路112は、制御信号処理回路111を介して受信する各種制御信号に基づいて状態遷移する回路である。チップ制御回路112は、メモリチップ11全体の動作を制御する。RY/BY生成回路120は、チップ制御回路112による制御の下でRY/BY信号線の状態をレディー状態(RY)とビジー状態(BY)との間で遷移させる。
I/O信号処理回路110は、メモリコントローラ2との間でI/O信号を送受信するためのバッファ回路である。I/O信号処理回路110がラッチしたコマンド、アクセス先を指定するアドレス、データは、夫々、アドレスレジスタ114、コマンドレジスタ113、データレジスタ116に振り分けられて格納される。
アドレスレジスタ114に格納されたアドレスは、チップ番号、ロウアドレス、およびカラムアドレスを含んでいる。チップ番号は、各メモリチップ11を区別するための識別情報である。チップ番号はチップ制御回路112、ロウアドレスはロウデコーダ119、カラムアドレスはカラムデコーダ115に夫々読み出される。
制御信号処理回路111は、制御信号の入力を受け付ける。制御信号処理回路111は、受け付けた制御信号に基づいて、I/O信号処理回路110が受け付けたI/O信号の格納先のレジスタの振り分けを実行する。また、制御信号処理回路111は、受け付けた制御信号をチップ制御回路112に転送する。
メモリセルアレイ118は、複数のブロックを備える。ブロックは、イレースの物理的な実行単位に対応する記憶領域である。即ち、1つのブロックに格納されている全てのデータは、一括してイレースされる。この1つのブロックは、物理ブロックとも称される。
図3は、メモリセルアレイ118に含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(p≧0)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0~BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルトランジスタMTは、しきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルトランジスタMTは、フローティングゲートに、データに応じた量の電荷を蓄える。
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0~WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0~WLqは、ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。各メモリセルトランジスタMTに1ビットの値を記憶可能に構成される場合には、同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTは1ページとして取り扱われ、このページごとにデータのライト及びデータのリードが行われる。
各メモリセルトランジスタMTに複数ビットの値を記憶可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を格納可能な場合、ワード線当たりの記憶容量はnページ分のサイズに等しくなる。ここでは一例として、各メモリセルトランジスタMTが2ビットの値の記憶を行う記憶方式(以下、2ビット記憶方式)について説明する。2ビット記憶方式によれば、各ワード線に2ページ分のデータが記憶される。1つのワード線によって構成される2つのページのうち、先に書き込みがなされるページをロアーページ、ロアーページの後から書き込みがなされるページをアッパーページと表記する。また、メモリセルトランジスタMTを、単にメモリセルと表記する。なお、1つのワード線によって構成される複数または全てのページに対して一括にライトが実行されるモードがあってもよい。
図4は、2ビット記憶方式が採用された場合におけるメモリセルのしきい値電圧に対する分布を示す図である。本図において、横軸はしきい値電圧を表し、縦軸はメモリセル数を表す。2ビット記憶方式によれば、各メモリセルは、アッパーページに属するデータ“x”とロアーページに属するデータ“y”とで定義される4値データ“xy”を記憶可能である。データ“x”およびデータ“y”の値は、符号“0”または符号“1”である。各メモリセルのしきい値電圧が、分布E、分布A、分布B、および分布Cの4つのグループの何れかに属するように制御される。各分布と4値データ“xy”のデータ値との対応は、予め設定される。例えば、分布Eにはデータ値“11”が割り当てられる。分布Aにはデータ値“01”が割り当てられる。分布Bにはデータ値“00”が割り当てられる。分布Cにはデータ値“10”が割り当てられる。なお、各分布とデータ値との対応は、上記に限定されない。一例では、隣接する分布間のハミング距離が1となるように各分布に各データ値が割り当てられる。
図2に戻り、ロウデコーダ119、カラムデコーダ115、データレジスタ116、およびセンスアンプ117は、メモリセルアレイ118に対する周辺回路を構成する。周辺回路は、チップ制御回路112による制御に基づいて、メモリセルアレイ118に対するアクセス(リード、ライト、およびイレース)を実行する。
例えばライト時には、カラムデコーダ115は、カラムアドレスに対応したビット線を選択して活性化する。センスアンプ117は、カラムデコーダ115により選択されたビット線の電位を0ボルトとする。ロウデコーダ119は、ロウアドレスに対応したワード線に、ライトパルスを印加する。すると、選択されたビット線および選択されたワード線との交点に位置するメモリセルのフローティングゲートに電子が注入され、その結果、フローティングゲートのしきい値電圧が上昇する。センスアンプ117は、ライトパルスが印加された後に、しきい値電圧がデータレジスタ116に格納されているデータに応じた電圧に到達したか否かを確認する。センスアンプ117は、しきい値電圧がデータに応じた電圧に到達するまで、ロウデコーダ119にライトパルスの印加を継続させる。
リード時においては、センスアンプ117は、ビット線BLに電源電位Vccをプリチャージし、ロウデコーダ119は、選択されたワード線WLにデータ値(“11”、“01”、“00”、“10”)毎の分布を特定するための複数種類の判定電位(以下、リード電圧)を順次印加する。なお、ロウデコーダ119は、非選択のワード線WLには転送電位を印加し、非選択のワード線WLに属するメモリセルを導通状態にしておく。センスアンプ117は、プリチャージにより蓄えられた電荷がどのリード電圧が印加されたときにソース線SLに流出したかを検知することによって対象のメモリセルに記憶されているデータ値を判定する。
例えば、図4に示すように、分布Eと分布Aとの間にリード電圧V_EAが設定され、分布Aと分布Bとの間にリード電圧V_ABが設定され、分布Bと分布Cとの間にリード電圧V_BCが設定される。
リード対象がロアーページである場合においては、リード電圧V_ABが判定に用いられる。センスアンプ117は、リード電圧V_ABが印加された場合にソース線SLに電荷の流出を検知したとき、対象のメモリセルはデータ値“1”を記憶していると判定する。また、センスアンプ117は、リード電圧V_ABが印加された場合にソース線SLに電荷の流出を検知しなかったとき、対象のメモリセルはデータ値“0”を記憶していると判定する。
リード対象がアッパーページである場合においては、リード電圧V_EAおよびリード電圧V_BCが判定に用いられる。センスアンプ117は、リード電圧V_EAが印加された場合に電荷の流出を検知したとき、または、リード電圧V_EAおよびリード電圧V_BCの何れが印加された場合でも電荷の流出を検知しなかったとき、対象のメモリセルはデータ値“1”を記憶していると判定する。センスアンプ117は、リード電圧V_EAが印加された場合に電荷の流出を検知せず、かつ、リード電圧V_BCが印加された場合に電荷の流出を検知したとき、対象のメモリセルはデータ値“0”を記憶していると判定する。
イレース時においては、電位発生回路(図示せず)によってメモリセルアレイ118の基板にイレース電圧が印加される。そして、ロウデコーダ119はイレース対象のブロックの全てのワード線WLを接地電位に導通させる。すると、選択されたブロック内の各メモリセルにおいては、フローティングゲートに蓄えられていた電荷が放出される。その結果、選択されたブロック内の各メモリセルの状態は消去状態(すなわちデータ値“11”を記憶している状態)に遷移する。
センスアンプ117は、リードしたデータをデータレジスタ116に格納する。データレジスタ116に格納されたデータは、データ線を通してI/O信号処理回路110に送られ、I/O信号処理回路110からメモリコントローラ2へ転送される。
なお、各リード電圧V_EA~V_BCの値は、メモリチップ11内に設けられた不揮発性の記憶部に記憶される。例えば、メモリチップ11は、リード電圧V_EA~V_BCの基準値(固定値)を記憶する。各リード電圧V_EA~V_BCの基準値としては、複数のメモリチップ11で共通の値が設定されてもよいし、メモリチップ11毎に異なる基準値が設定されてもよい。また、各リード電圧V_EA~V_BCの基準値としては、ブロック毎またはブロックとは異なる単位毎に共通の値が設定されてもよい。基準値の設定方法は特定の方法に限定されない。メモリコントローラ2は、対象のメモリチップ11に所定のコマンドを送信することによって各リード電圧の基準値を設定してもよい。
メモリチップ11においては、フローティングゲートに蓄えられる電荷の量が時間経過とともに変化する。また、リードまたは隣接するメモリセルへのライトによっても、フローティングゲートに蓄えられる電荷の量が変化する。図5は、変化後の各分布の例の説明図である。図5では、簡単のために、分布Aと分布Bとのみ示している。また、分布Aと分布Bとを区別して示している。この例によれば、分布Aの裾野と分布Bの裾野とが重なり合っている。分布Aの最大値がリード電圧V_ABを超えており、かつ、分布Bの最小値がリード電圧V_ABを下回っている。分布Aに属し、かつ、しきい値電圧がV_ABよりも大きいメモリセル(即ち、領域300に含まれるメモリセル)がリードされた場合、そのメモリセルは分布Bに属するとして認識される。即ち、“01”としてライトされたデータ値が“00”としてリードされる。分布Bに属し、かつ、しきい値電圧がV_ABよりも小さいメモリセル(即ち、領域301に含まれるメモリセル)がリードされた場合、そのメモリセルは分布Aに属するとして認識される。即ち、“00”としてライトされたデータ値が“01”としてリードされる。ライト時から変化したデータ値は、メモリコントローラ2においてリード時にエラービットとして検出される。メモリコントローラ2においては、検出されたエラービットは、後述のECC(Error Checking and Correction)回路25(図1を参照)によって訂正が試みられる。
図1に戻り、さらに、メモリコントローラ2は、リード電圧の設定値を変更してデータをリードすることができる。リード電圧の設定値を変更することによって、データリード時のエラービットの数を少なくすることができる場合がある。リード電圧の設定値を変更してリードを行うことを、以降、シフトリードと表記する。
一つの例では、メモリコントローラ2は、リードしたデータの、ライト時から変化した値をECC回路25によって訂正することによって、ライト時のデータを復元する。メモリコントローラ2は、ECC回路25によるエラー訂正が失敗した場合、シフトリードによって再びデータをリードする。メモリコントローラ2は、シフトリードによって得られたデータに対し、再度、ECC回路25によってエラー訂正を実行することができる。シフトリードの際のリード電圧の設定値の変更方法は、特定の方法に限定されない。例えば、エラー訂正が成功するまでシフトリードがX回(上限としての所定回数)繰り返し実行される。
なお、エラー訂正に失敗するとは、リードされたデータからライト時のデータを復元できないことをいう。具体的には、エラー訂正に失敗するとは、リードされたデータに含まれるエラービットが訂正できないことをいう。エラー訂正に成功するとは、リードされたデータに含まれる全てのエラービットが訂正されることをいう。
メモリコントローラ2は、ホストI/F(インタフェース)コントローラ21、RAM(Random Access Memory)22、NANDコントローラ(NANDC)23、CPU(Central Processing Unit)24、およびECC回路25を備えている。ホストI/Fコントローラ21、RAM22、各NANDコントローラ23、CPU24、およびECC回路25は、バスで互いに接続されている。なお、メモリコントローラ2は、ホストI/Fコントローラ21、RAM22、各NANDコントローラ23、CPU24、およびECC回路25が集積された一つのIC(回路)であってもよい。また、ホストI/Fコントローラ21、RAM22、各NANDコントローラ23、CPU24、およびECC回路25の一部は、メモリコントローラ2の外部に配設されてもよい。
RAM22は、ホスト装置200とNANDメモリ1との間のデータ転送のためのバッファとして機能する。また、RAM22は、CPU24にワークエリアを提供する。また、RAM22は、各種管理情報が格納される。
なお、RAM22の種類は特定の種類に限定されない。RAM22の種類として、例えば、SDRAM(Synchronous Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)が採用可能である。
ホストI/Fコントローラ21は、CPU24による制御の下で、ホスト装置200とメモリシステム100との間の通信インタフェースの制御およびホスト装置200とRAM22との間のデータ転送の制御を実行する。
NANDコントローラ23は、各チャネル(ch.0、ch.1)を制御する。NANDコントローラ23は、CPU24による制御の下で、NANDメモリ1とRAM22との間のデータ転送の制御を実行する。
ECC回路25は、NANDメモリ1へのライト対象のデータに対してエラー訂正のための符号化を行ったり、NANDメモリ1からリードされたデータに対してエラー訂正を実行したりする。
ECC回路25は、コードレート可変方式に従った符号化を行う。コードレート可変方式は、必要とされる訂正能力に応じてコードレート(符号化率)を変更できる方式である。コードレートとは、訂正フレームのサイズ、に対する、符号化前のデータのサイズ、の割合である。訂正フレームとは、エラー訂正が実行される単位をいう。コードレートが小さいほど、訂正能力が高い。訂正能力とは、所定サイズのデータ(例えば1KB)あたりの訂正が可能なエラービットの数である。採用される符号の種類は特定の種類に限定されない。例えば、BCH符号またはLDPC(low-density parity-check code)が採用可能である。
なお、以下において、ビットエラーレート(BER(Bit Error Rate))とは、ECC回路25で検出されたユーザデータのエラービット数を全ビット数で割って求められた値である。また、エラービット数は、FBC(Fail Bit Count)とも呼ばれる。
例えば、ECC回路25は、L1訂正(L1符号によるエラー訂正処理)、L2訂正(L2符号によるエラー訂正処理)、L3訂正(L3符号によるエラー訂正処理)、L4訂正(L4符号によるエラー訂正処理)の4段階のエラー訂正処理を行うことができる。また、L1符号、L2符号、L3符号、L4符号の順に、符号化処理の分散度合いが高くなる。L1符号及びL2符号の符号化対象のデータは、1つのメモリチップ内のデータであるのに対して、L3符号及びL4符号の符号化対象のデータは、複数のメモリチップに跨ったデータである。なお、L2訂正のフレーム長は、L1訂正のフレーム長よりも大きい。また、L4訂正で用いられる訂正フレーム数は、L3訂正で用いられる訂正フレーム数よりも多い。
例えば、ECC回路25は、L1訂正を行い、L1訂正エラーが発生したらL2訂正を行い、L2訂正エラーが発生したらL3訂正を行い、L3訂正エラーが発生したらL4訂正を行う。このように、ECC回路25は、エラー訂正処理に成功するまで、L1訂正→L2訂正→L3訂正→L4訂正の順に、エラー訂正処理を行うことができる。なお、L4訂正からL3訂正に戻ってもよい。また、L2訂正等をスキップしてもよい。
CPU24は、ファームウェア等に基づき、処理部として機能する。ファームウェアは、例えばNANDメモリ1に予め不揮発に格納され、メモリシステム100の起動時にRAM22内のワークエリアにロードされる。CPU24は、ワークエリアにロードされたファームウェアを実行する。なお、ファームウェアは例えばSFROM等の外部ROM(不図示)に保存されていてもよい。SFROMとは、シリアルフラッシュROMであり、メモリコントローラ2内でバスまたはCPU24に接続される。
CPU24は、NANDメモリ1のブロックごとに、ビットエラーレートの経時的変化のトレンドを求め、そのトレンドに基づいて、リフレッシュ処理のタイミングを決定する。リフレッシュ処理は、ブロック単位で、リードしたデータにエラー訂正を実行してから他のブロックに書き込む処理である。なお、リフレッシュ処理で、同一ブロックに書き込んでもよい。
また、エラー訂正符号として可変長符号を用い、CPU24は、トレンドに基づいて、データに対して割り当てる可変長符号の符号化率を設定する。
また、CPU24は、管理情報の一部であり、トレンドを示す指標として、データを保存可能な予測期間(以下、単に予測期間とも称する。)が短いほど値が大きい所定の指標値を管理する。CPU24は、この指標値に基づいて時間経過と指標値の変化に関する回帰式を算出し、算出した回帰式に基づいてメモリシステム100の将来のある時点での状態を推定したり、電源オフから復帰後の指標値を推定したりする。
また、メモリコントローラ2は、NANDメモリ1の温度、および、1以上のブロック単位の書込/消去回数に応じて、指標値に対する加算値を記憶する加算値テーブルを記憶している。CPU24は、NANDメモリ1における所定の記憶領域ごとに、指標値を管理し、所定の周期で、NANDメモリ1の温度、および、書込/消去回数を取得し、加算値テーブルに基づいて、指標値に、該当する加算値を加算する。
また、CPU24は、ビットエラーレートを算出する場合に、NANDメモリ1のメモリセルのしきい値電圧に対する分布における谷の位置を検索するVthトラッキングによって決定したリード電圧によるデータのリード結果と、データをエラー訂正した結果と、に基づいて、ビットエラーレートを算出する。
また、CPU24は、リフレッシュ処理を行った場合、リフレッシュ処理を行ったブロックに対応する指標値を0にリセットする。CPU24によるこれらの機能の詳細については、後述する。
図6は、Vthトラッキングの説明図である。図6の上段のグラフは、メモリセルの分布の一例を示している。Vthトラッキングによれば、対応するデータ値が異なる分布間の裾野が重なる場合、複数の分布が重なる範囲のリード電圧においては、重なっている複数の分布に属するメモリセルの数の合計が得られる。即ち、図6の上段のグラフの例では、隣接する分布間で裾野が重なっている範囲のリード電圧においては、一点鎖線によって示される形状が測定によって得られる。なお、Vthトラッキングは、トラッキング処理又はトラッキングとも称される。
Vthトラッキングにおいては、リード電圧の設定値を変化させながら2値モードでシフトリードが実行され、各シフトリードによって得られたデータに含まれる“1”または“0”の数がカウントされる。2値モードとは、しきい値電圧がリード電圧よりも小さいメモリセルは、第1のデータ値を記憶していると判定し、しきい値電圧がリード電圧よりも大きいメモリセルは、第1のデータ値と異なる第2のデータ値を記憶していると判定するモードである。ここでは一例として、“1”を第1のデータ値とし、“0”を第2のデータ値とし、“1”の数がカウントされることとする。カウントされた“1”の数をリード電圧に対してプロットすると、図6の下段に示される曲線が得られる。
続いて、“1”の数の変化率が演算される。“1”の数の変化率とは、リード電圧を所定単位量だけ変化させた場合の“1”の数の変化量である。リード電圧に対して変化率をプロットすると、しきい値電圧に対するメモリセルの分布(即ち図6の上段に示される曲線)の近似が得られる。
一例として、CPU24は、Vthトラッキングにおいて、リード電圧の設定値をVstepずつ増加させながらシフトリードを実行する。そして、CPU24は、変化率として、リード電圧をVstepだけ増加させた際の“1”の数の変化量を演算する。そして、CPU24は、変化量が極小となるリード電圧を、最適電圧値として決定する。図6の例では、V1、V2、およびV3が最適電圧値に該当する。
なお、CPU24は、Vthトラッキングにおいて、リード電圧の設定値をVstepずつ増加させながら複数回のシフトリードを実行する。リード電圧の変更範囲は、メモリセルのしきい値電圧がとりうる全範囲をカバーしていてもよいし、特定の電圧値の付近の範囲だけをカバーしていてもよい。
また、CPU24は、“1”の数の代わりに“0”の数をカウントするようにしてもよい。その場合には、CPU24は、“0”の数の変化量の絶対値を演算することによって、しきい値電圧に対するメモリセルの分布の近似を得ることができる。
図7は、データの管理単位を説明するための図である。ここでは、メモリコントローラ2が4個のチャネル(ch0、ch1、ch2、ch3)を備えているものとする。また、各チャネルにより、複数のバンクが構成され、バンクインターリーブによる並列動作が可能に構成される。図7の例では、4つのバンク(Bank k、Bank k+1、Bank k+2、Bank k+3)による4並列動作を行うことが可能である。
各バンクは、複数のプレーン(plane 0、1)に分割されている。各プレーンは、それぞれ独立した周辺回路を備えており、プレーン倍速モードを使用することで、同時にイレース/ライト/リードを行うことが可能である。周辺回路とは、例えば、ロウデコーダ119、カラムデコーダ115、ページバッファ、データレジスタ116を含む。このような、4個のチャネル(ch0、ch1、ch2、ch3)と4つのバンク(Bank k、Bank k+1、Bank k+2、Bank k+3)とによって構成される管理単位をブロックグループとする。
このように、ブロックグループは、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンによる並列動作が可能である。図7の例のように、チャネル数を4、バンク数を4とし、プレーン数を2とした場合、最大32個のブロックを並列動作させることが可能となる。
そして、このようなブロックグループにおいて、図示の横方向のある単位(例えば1プレーン中の4つのクラスタのうちの1つのクラスタを構成する8セクタのうちの2または4セクタ)にL1訂正の単位となる訂正フレームを持つ。また、図示の縦方向のある単位(図示のペア)にL3訂正の要素となる複数の訂正フレームを持つ。
なお、可変長符号における符号化率は、メモリコントローラ2で記憶するブロックグループ管理テーブルで管理することができる。ブロックグループ管理テーブルは、ブロックグループに属する、NANDメモリ1の物理ブロックを管理するためのテーブルである。この場合、例えば、1つのブロックグループ管理テーブルにつき1つの符号化率が対応する。そして、CPU24は、ブロックグループ内に1つでもL1訂正で読めないクラスタがあると、データ保護のために、そのブロックグループについてリフレッシュ処理を行う。なお、可変長符号における符号化率は、ブロックグループ管理テーブルでなく、論理物理変換テーブルで管理してもよい。
図8は、可変長符号を説明するための図である。上述のように、エラー訂正符号として可変長符号を用いる場合、符号化率を小さく(つまり、符号を長く)すれば、エラー訂正の性能は上がる。また、各メモリセルトランジスタに複数ビットの値を記憶可能に構成される場合がある。例えば、各メモリセルトランジスタがn(n≧2)ビットの値を記憶可能な場合、ワードラインWL当たりの記憶容量はn個の物理ページ分のサイズに等しくなる。すなわち、各メモリセルグループは、n個の物理ページとして取り扱われる。例えば、各メモリセルトランジスタが2ビットの値の記憶を行うマルチレベルセル(MLC)モードでは、各ワードラインWLに2個の物理ページ(Upperページ、Lowerページ)分のデータが記憶される。また、各メモリセルトランジスタが3ビットの値の記憶を行うトリプルレベルセル(TLC)モードでは、各ワードラインに3個の物理ページ(Upperページ、Middleページ、Lowerページ)分のデータが記憶される。また、各メモリセルトランジスタが4ビットの値の記憶を行うクアッドレベルセル(QLC)モードでは、各ワードラインに4個の物理ページ分のデータが記憶される。
また、各メモリセルトランジスタに1ビットの値を記憶可能に構成される場合(シングルレベルセル(SLC)モードで動作する場合)には、同一のワードラインに接続される(p+1)個のメモリセルトランジスタ(すなわち、メモリグループ)は1つの物理ページとして取り扱われ、この物理ページごとにデータのライト動作及びデータのリード動作が行われる。
図8は、TLCを前提とした例である。例えば、2プレーン(Plane0,1)、16KB/page(物理ページ)の場合、通常の符号化率のC24(N=24)であると、2つの物理ページに合計で24クラスタ(CL0~23)相当のデータを書き込むことができる。そして、C23(N=23)、C22(N=22)、・・・、と符号化率が小さくなるほど、2つの物理ページに書き込めるクラスタの数が減る。例えば、C18(N=18)の場合、合計で18クラスタ(CL0~17)にしか書き込むことができないが、その分、訂正能力は図8に示した符号化率の中では一番高い。
なお、SLCを前提とすると、2プレーン(2page)を単位として複数の単位に跨ってクラスタを記録するPage跨ぎがないので、使用可能なのはC24,C21,C18となる。
図9は、実施形態の加算値テーブルを示す図である。上述したように、加算値テーブルは、NANDメモリ1の温度、および、書込(W)/消去(E)回数に応じて、指標値(以下、「RDP」(Retention Degree Progress)ともいう。)に対する加算値「RD」を記憶する。RDPは、予測期間が短いほど値が大きくなる所定の値である。加算値テーブルは、NAND温度とW/E回数とのマトリクスで表され、それぞれの値に応じた加算値「RD」が予め決められている。この加算値テーブルは、管理情報の一部であり、NANDメモリ1に不揮発に記憶され、メモリシステム100の動作時には、RAM22にロードされる。
例えば、メモリコントローラ2は、NANDメモリ1における任意のアドレス(NANDメモリ1の物理的なアドレス)毎にRDPカウンタを備える。RDPの初期値は0とする。CPU24は、パトロール処理を制御し、このパトロール処理においてRDPを利用する。CPU24は、NANDメモリ1における全てのアドレスで、単一の加算値デーブルを用いてもよいし、互いに加算値「RD」が異なる複数の加算値テーブルを用いてもよい。ここで、実施形態のメモリシステム100において実行されるパトロール処理を説明する。図11は、実施形態のメモリシステム100におけるパトロール処理の一部を示すフローチャートである。このパトロール処理は、NANDメモリ1における所定の記憶領域ごとに、所定周期で(例えば数時間ごとに)行われる。
まず、S11において、CPU24は、リード処理を実行する。リード処理の詳細は後述する。次に、S12において、CPU24は、温度センサ(不図示)からNANDメモリ1の温度を取得する。例えば、メモリチップ11がそれぞれ温度センサを備え、CPU24は、メモリチップ11毎の温度を取得してもよい。なお、NANDメモリ1の温度が所定期間内で変化している場合は、最高の温度(ワーストケース)を使用する。
次に、S13において、CPU24は、ブロックグループ管理テーブルから書込/消去回数を取得する。なお、CPU24は、他の管理情報から書込/消去回数を取得してもよい。
次に、S14において、CPU24は、図9に示した加算値テーブルを参照し、NANDメモリ1の温度、および、書込/消去回数に応じて、指標値であるRDPに、該当する加算値RDを加算する。例えば、NANDメモリ1の温度が(40)~45℃で、W/E回数が7k~(8k)の場合、加算値RDとして200が選択される。
次に、S15において、CPU24は、RDPが所定値(例えば20000)以上になったか否かを判定し、Yesの場合はリフレッシュ処理を行う(S16)。所定値以上になっていない場合(S15のNo)、処理はS11に戻る。この所定値は、リフレッシュしきい値(Refresh threshold)である。
図10は、実施形態における可変長符号の訂正能力等を示す表(符号化率判定テーブル)である。この表(テーブル)は、管理情報の一部である。メモリコントローラ2は、物理ブロック毎に、又はブロックグループ毎に、この表(テーブル)を管理する。この表では、符号化率種別又はBB(Bad Block)ごとに、エラービットしきい値と訂正可能ビット数/フレームを示している。ここでは、エラービットしきい値を、訂正可能ビット数/フレームの9割としている。つまり、1フレームあたりのエラービット数が、現在の符号化率種別に対応するエラービットしきい値を超えると、メモリコントローラ2は、符号化率種別を1つ右のもの(例えばC24→C23)に変更する。また、1フレームあたりのエラービット数が、符号化率種別C18に対応するエラービットしきい値を超えると、メモリコントローラ2は、該当の物理ブロック又はブロックグループについて、Bad Block登録(つまり不使用登録)をする。
図12は、実施形態のメモリシステム100におけるリード処理を示すフローチャートである。まず、S1において、CPU24は、リード要求があったか否かを判定し、Yesの場合はS2に進み、Noの場合はS1に戻る。リード要求は、ホスト装置200からの要求、メモリシステム100の内部で発生するバックグランド処理における要求、の何れも含む。
S2において、CPU24は、リード要求の対象データに対するHBリード(Hard Bit Read(L1訂正を用いたリード)を実行し、成功の場合は処理を終了し、失敗の場合はS3に進む。
S3において、CPU24は、対象データに対するリトライリード(L2訂正を用いたリード)を実行し、成功の場合は処理を終了し、失敗の場合はS4に進む。
S4において、CPU24は、対象データに対するVthトラッキングリード(L3訂正を用いたリード)を実行し、成功の場合は処理を終了し、失敗の場合はS5に進む。
S5において、CPU24は、対象データに対するRS(Reed-Solomon)リード(L4訂正を用いたリード)を実行し、成功の場合は処理を終了し、失敗の場合はS6に進む。
S6において、CPU24は、対象データがアンコレクタブルエラーを有すると判定し、リード要求がホスト装置200から受けたものであれば、その旨をホスト装置200に通知する。
図13は、実施形態のメモリシステム100におけるFBCチェック処理を示すフローチャートである。FBCチェック処理は、図11のS4~S5の処理と並行して実行され得る。まず、S21において、CPU24は、図11のS4相当のVthトラッキングリード(L3訂正を用いたリード)を実行し、成功の場合はS22に進み、失敗の場合はS23に進む。S22において、CPU24は、FBCをカウントする。例えば、CPU24は、読み出したデータのビット数とエラー判定されたビット数とにより、FBCをカウント(算出)することができる。
S23において、CPU24は、図11のS5相当のRSリード(L4訂正を用いたリード)を実行し、成功の場合はS24に進み、失敗の場合はS26に進む。
S24において、CPU24は、FBCをカウントする。この場合、CPU24は、例えば、Vthトラッキングリード(S21)で取得したリードデータと、RSリード(S23)において訂正したデータと、を比較することで、FBCをカウントする。
S26において、図11のS6と同様に、CPU24は、対象データがアンコレクタブルエラーを有すると判定し、リード要求がホスト装置200から受けたものであれば、その旨をホスト装置200に通知する。
また、S22とS24の後、S25において、CPU24は、回帰式の係数を算出する(詳細は後述)。
なお、このFBCチェック処理の対象は、アンコレクタブルエラーとなったデータを含む物理ブロックでもよいし、その物理ブロックを含むブロックグループでもよい。
図14は、実施形態の第1の処理例を示すグラフである。横軸はRDPで、縦軸はFBCである。縦軸において、BB threshold、C22 threshold、C23 threshold、C24 thresholdは、それぞれ、図10のエラービットしきい値に対応する。また、横軸において、リフレッシュ処理タイミングRT1と、その後の環境温度40℃で3ヶ月後のタイミングに対応するRDPMAXとが図示されている。また、現在の符号化率種別はC24(例えば、エラービットしきい値が54)であるものとする(図10参照)。
この場合、CPU24は、任意のタイミングで、FBCチェック処理(図13)を実行したとき、RDPとFBCの値に対応する点が点P1であったとすると、グラフの原点の点P0と点P1に基づいて、例えば直線の(一次の)回帰式を算出する。その後、CPU24は、その回帰式に基づいて、RDPMAXに対するFBCであるFBC^Maxを求める。この結果、FBC^MaxはC24 thresholdよりも小さいため、CPU24は、何も処理を行わない。ただし、例えば、FBC^MaxがC24 thresholdを超えない範囲で、リフレッシュ処理タイミングRT1を遅くずらしてもよい(つまり、リフレッシュしきい値を増やしてもよい)。
なお、ここでは、説明を簡潔にするために、直線の回帰式を用いたが、対数関数や多項式等の曲線の回帰式を用いてもよい。また、例えば、FBCのチェックを行うごとに、回帰式を更新してもよい。
図15は、実施形態の第2の処理例を示すグラフである。CPU24は、任意のタイミングで、FBCチェック処理(図13)を実行したとき、RDPとFBCの値に対応する点が点P2であったとすると、グラフの原点の点P0と点P2に基づいて、例えば直線の(一次の)回帰式を算出する。その後、CPU24は、その回帰式に基づいて、FBC^Maxを求める。そうすると、FBC^MaxはC24 thresholdよりも大きく、C23 thresholdよりも小さいため、CPU24は、RDPMaxからRDP^Max(回帰式の直線とC24 thresholdの交点)までの幅D1の分、リフレッシュ処理タイミングのRT1をRT2まで前にずらす(リフレッシュしきい値を下げる)。そうすることで、環境温度40℃で3ヶ月間での機能保証の信頼性が向上する。
また、CPU24は、符号化率種別をC24からC23に変更する旨を記録する(詳細は後述)。つまり、対象の物理位置に対して、次に使う符号化率はC24ではなくC23となる。
図16は、実施形態の第3の処理例を示すグラフである。この第3の処理例では、電源オフで進んだRDPを推定する。CPU24は、電源オフになる前のタイミングで、FBCチェック処理(図13)を実行し、RDPとFBCの値に対応する点が点P3であったとすると、グラフの原点の点P0と点P3に基づいて、例えば直線の(一次の)回帰式を算出する。なお、電源オフになる前のタイミングで2回以上FBCチェックしていた場合、CPU24は、グラフの原点を含めた3点以上に基づいて、直線または曲線の回帰式を算出することができる。
また、CPU24は、電源オフが終わったタイミングで(すなわち電源が復帰した後に)、FBCチェック処理(図13)を実行し、FBCの値を回帰式に代入することで、点P4を算出する。その他の処理については、図14、図15の場合と同様であるので、説明を省略する。これにより、電源が供給されない状態の期間があっても、環境温度40℃で3ヶ月間での機能保証の信頼性が向上する。
なお、NANDメモリ1のある物理位置(例えば物理ブロック又はブロックグループ)でRDP^-RDP(電源オフ前に算出した最後のRDP)=D1^を求め、NANDメモリ1の他の物理位置のRDPに加算することで、電源オフの間に進んだRDP^を推定してもよい。また、複数箇所で求めたRDP^の平均から求めたD1^を他の箇所のRDPに加算することで、電源オフで進んだRDP^を推定してもよい。
図17は、実施形態の第4の処理例を示すグラフである。CPU24は、任意のタイミングで、FBCチェック処理(図13)を実行したとき、RDPとFBCの値に対応する点が点P5であったとすると、グラフの原点の点P0と点P5に基づいて、例えば直線の(一次の)回帰式を算出する。この結果、リフレッシュ処理タイミングRT1よりも早い点P6の時点で、FBCがC24 thresholdよりも大きくなっている。その場合であっても、CPU24は、FBCがC24 thresholdを超えた時点で、L3訂正やL4訂正によって、訂正に成功したときはFBCを調べることができる。
そして、CPU24は、リフレッシュ処理を優先的に行い、また、そのアドレスの符号化率を変更する処理を行う。この場合、C22 thresholdがFBC^Maxよりも大きいので、CPU24は、符号化率種別としてC22を選択する。そうすることで、L1訂正ができなくなる可能性を低減できる。
図18は、実施形態のメモリシステム100で用いる主なパラメータを示す表である。これらのパラメータは、例えば、ブロック管理テーブル(不図示)に記憶される。この表では、左から順に、属性、パラメータ、内容を示している。
パラメータのBlk0とBlk1は、属性がBlock addr(ブロックアドレス)であり、内容としてブロック管理テーブルが指す物理ブロック番号を示す。この表において、以下に説明するパラメータはBlk0とBlk1とで共用されている。なお、ブロックアドレスは2個に限定されない。また、ブロックアドレスだけでなくページまで管理してもよい。
パラメータのRef ThreshとRDP_curは、属性がRefresh info(リフレッシュ処理情報)であり、内容としてリフレッシュ処理のしきい値とRDPの現在値を示す。
パラメータのaとbは、属性がRegression equation(回帰式:例えばy=ax+b)であり、内容として回帰式の係数を示す。なお、管理する係数は2個に限定されない。
パラメータのCR_curとCR_nextは、属性がCode Rate(コードレート:符号化率)であり、内容として符号化率の現在値と次回値を示す。符号化率を変更する場合、次の符号化率をCR_nextに書き込めばよい。
パラメータのFBC_1とRDP_1は、属性がSample Data(サンプルデータ)であり、内容としてFBC、RDP(FBCを取得したときのRDP)の値の例を示す。
パラメータのFBC_2とRDP_2は、属性がSample Data(サンプルデータ)であり、内容としてFBC、RDP(FBCを取得したときのRDP)の値の例を示す。
なお、論理ブロックを再構築する場合は、RDPの増えやすさを示すa(回帰線が直線の場合の傾き)の値が近いブロック同士で論理ブロックを構築したり、逆に、aの値が近くないようにばらけさせたりすることができる。
このように、本実施形態のメモリシステム100によれば、NANDメモリ1のブロックごとに、ビットエラーレートの経時的変化のトレンドを求め、トレンドに基づくことで、設定されているエラー訂正の性能に対してリフレッシュ処理の適切なタイミングを決定することができる。
また、トレンドに基づいて、データに対して割り当てる可変長符号の符号化率を設定することで、例えば、L1訂正が失敗する可能性を低減することができる。また、訂正性能が必要以上に高い符号化率を使用する事態を事前に回避できる。
また、ブロックごとのメモリセルの電位変動しやすさに応じて符号化率種別(C24~C18)とリフレッシュ処理タイミングを設定することで、L1訂正が失敗する可能性を低減し、例えば、電源が供給されない状態で環境温度が40℃で3ヶ月間放置された場合の機能保証の信頼性が向上する。
また、比較例では、例えば、L1訂正が失敗した場合に、符号化率をC24からC23に変更する等、L1訂正能力を1段階上げる処理を行っていた。しかし、1段階上げただけではL1訂正能力が足りない場合があった。本実施形態の手法によれば、図17の例からわかるように、C24でL1訂正が失敗した場合に、C23ではなくC22への変更が必要であることがわかり、C22に変更できるので、上述のような比較例の欠点を解消している。また、本実施形態の手法によれば、L1訂正が失敗した場合に、L1訂正能力を最大にしても訂正できない場合は、L1訂正では訂正できずその上位の訂正が必要であることが容易にわかるので、効率的に対応できる。
また、L3訂正の実行頻度が減ることで、Latency(遅延時間)が改善するとともに、アンコレクタブルエラーの発生率が下がる。
また、時間経過と指標値(RDP)の変化に関する回帰式を算出することで、電源オフから復帰後の指標値を推定することができる。
また、加算値テーブルに基づいて、NANDメモリ1の温度、および、書込/消去回数に応じて、指標値(RDP)を適切に増やすことができる。したがって、劣化しやすいアドレスほどリフレッシュ処理のタイミングを早くすることができる。
また、ビットエラーレートを算出する場合に、Vthトラッキングによるリード結果と、データをRS訂正した結果と、に基づいて、ビットエラーレートを算出することで、より正確な値を算出することができる。
また、リフレッシュ処理を行ったブロックに対応する指標値を0にリセットすることで、指標値を適切に管理することができる。
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、図18のパラメータに関し、イレースした場合にSample Data(サンプルデータ)や回帰式の係数をリセットしてもよい。ただし、イレースした後も劣化の傾向は大きく変わらないので、過去の回帰式を継続して使用してもよい。
また、例えば、L1訂正~L3訂正とL4訂正とを組み合わせた反復訂正を行ってもよい。具体的には、反復訂正では、例えば、L4訂正に必要なシンボルが足りない場合に、上述のLDPCの符号などを用いた訂正により不足したシンボルを集めてから再度L4訂正を行えばよい。なお、シンボルとは、L1訂正が成功した、L4訂正で用いられる訂正フレームを表す。
また、上述の実施形態では、フローティングゲート方式のメモリセルについて説明したが、これに限定されず、例えば、チャージトラップ方式等の他の方式のメモリセルを用いてもよい。
また、図9に示した加算値テーブルは減算値テーブルとして用いてもよい。この場合、図9の加算値テーブルと同等の減算値「RD」が減算値テーブルに記憶される。また、指標値「RDP」は例えば現在の符号化率種別に対するしきい値以下の初期値を有し、回帰式はマイナスの傾きを有し時間経過に応じて減少する関数とすればよい。そして、指標値「RDP」が0以下となったタイミングをリフレッシュ処理タイミングとすればよい。
1 NANDメモリ、2 メモリコントローラ、11 メモリチップ、21 ホストI/Fコントローラ、22 RAM、23 NANDコントローラ、24 CPU、25 ECC回路、100 メモリシステム、110 I/O信号処理回路、111 制御信号処理回路、112 チップ制御回路、113 コマンドレジスタ、114 アドレスレジスタ、115 カラムデコーダ、116 データレジスタ、117 センスアンプ、118 メモリセルアレイ、119 ロウデコーダ、120 RY/BY生成回路、200 ホスト装置。

Claims (7)

  1. 複数のブロックを有する不揮発性の半導体メモリと、
    前記ブロックごとに、ビットエラーレートの経時的変化のトレンドを求め、前記トレンドに基づいて、リフレッシュ処理のタイミングを決定するメモリコントローラと、
    を備え
    前記メモリコントローラは、
    前記トレンドを示す指標として、データを保存可能な予測期間が短いほど値が大きい所定の指標値を管理し、前記指標値に基づいて時間経過と前記指標値の変化に関する回帰式を算出し、前記回帰式に基づいて電源オフ中の前記指標値を推定し、
    前記半導体メモリの温度、および、書込/消去回数に応じた、前記指標値に対する加算値を記憶する加算値テーブルを記憶し、
    前記ブロックにおける所定の記憶領域ごとに、前記指標値を管理し、所定の周期で、前記半導体メモリの温度、および、書込/消去回数を取得し、前記加算値テーブルに基づいて、前記指標値に、該当する前記加算値を加算する、メモリシステム。
  2. 前記メモリコントローラは、
    前記トレンドに基づいて、データに対して割り当てる可変長符号の符号化率を設定する、
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、
    前記ビットエラーレートを算出する場合に、前記半導体メモリのメモリセルの電位分布における谷の位置を検索するトラッキング処理によって決定したリード電圧によるデータのリード結果と、データをエラー訂正した結果と、に基づいて、前記ビットエラーレートを算出する、
    請求項1または請求項に記載のメモリシステム。
  4. 前記メモリコントローラは、
    前記リフレッシュ処理を行った場合、前記リフレッシュ処理を行った前記ブロックに対応する前記指標値を0にリセットする、
    請求項に記載のメモリシステム。
  5. 複数のブロックを有する不揮発性の半導体メモリを備えるメモリシステムの制御方法であって、
    前記ブロックごとに、ビットエラーレートの経時的変化のトレンドを求め、
    前記トレンドに基づいて、リフレッシュ処理のタイミングを決定し、
    前記トレンドを示す指標として、データを保存可能な予測期間が短いほど値が大きい所定の指標値を管理し、前記指標値に基づいて時間経過と前記指標値の変化に関する回帰式を算出し、前記回帰式に基づいて電源オフ中の前記指標値を推定し、
    前記ブロックにおける所定の記憶領域ごとに、前記指標値を管理し、所定の周期で、前記半導体メモリの温度、および、書込/消去回数を取得し、
    前記半導体メモリの温度、および、書込/消去回数に応じた、前記指標値に対する加算値を記憶する加算値テーブルに基づいて、前記指標値に、該当する前記加算値を加算する、
    方法。
  6. 前記トレンドに基づいて、データに対して割り当てる可変長符号の符号化率を設定する、
    請求項5に記載の方法。
  7. 前記ビットエラーレートを算出する場合に、前記半導体メモリのメモリセルの電位分布における谷の位置を検索するトラッキング処理によって決定したリード電圧によるデータのリード結果と、データをエラー訂正した結果と、に基づいて、前記ビットエラーレートを算出する、
    請求項5または請求項6に記載の方法。
JP2019170738A 2019-09-19 2019-09-19 メモリシステムおよび方法 Active JP7353889B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019170738A JP7353889B2 (ja) 2019-09-19 2019-09-19 メモリシステムおよび方法
US16/799,326 US11138070B2 (en) 2019-09-19 2020-02-24 Memory system and method performed thereby

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019170738A JP7353889B2 (ja) 2019-09-19 2019-09-19 メモリシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2021047721A JP2021047721A (ja) 2021-03-25
JP7353889B2 true JP7353889B2 (ja) 2023-10-02

Family

ID=74878536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019170738A Active JP7353889B2 (ja) 2019-09-19 2019-09-19 メモリシステムおよび方法

Country Status (2)

Country Link
US (1) US11138070B2 (ja)
JP (1) JP7353889B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115729767A (zh) * 2021-08-30 2023-03-03 华为技术有限公司 一种存储器的温度检测方法及装置
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010518523A (ja) 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム
JP2010533929A (ja) 2007-07-19 2010-10-28 マイクロン テクノロジー, インク. 疲労状態に基づく不揮発性メモリセルのリフレッシュ
JP2012238259A (ja) 2011-05-13 2012-12-06 Sony Corp 制御装置、記憶装置、制御方法
JP2015032247A (ja) 2013-08-06 2015-02-16 コニカミノルタ株式会社 情報処理装置及びリフレッシュ制御プログラム並びにリフレッシュ制御方法
JP2017058953A (ja) 2015-09-16 2017-03-23 株式会社東芝 キャッシュメモリシステム
US20170262197A1 (en) 2016-03-09 2017-09-14 Phison Electronics Corp. Memory managing method, memory control circuit unit and memory storage apparatus
JP2019512116A (ja) 2016-03-09 2019-05-09 ホアウェイ・テクノロジーズ・カンパニー・リミテッド フラッシュメモリデバイスをリフレッシュする方法および装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171605B2 (en) * 2002-02-01 2007-01-30 International Business Machines Corporation Check bit free error correction for sleep mode data retention
US7882421B2 (en) 2004-05-06 2011-02-01 Seyfullah Halit Oguz Method and apparatus for joint source-channel map decoding
US20090150595A1 (en) * 2007-10-24 2009-06-11 Avi Lavan Balanced programming rate for memory cells
EP2963828B1 (en) 2008-07-02 2022-09-07 Panasonic Intellectual Property Corporation of America Erasure correction coding for different packet sizes using packet division
US9052358B2 (en) * 2012-01-27 2015-06-09 Portland State University Copula-based system and method for management of manufacturing test and product specification throughout the product lifecycle for electronic systems or integrated circuits
US10353598B2 (en) * 2014-10-06 2019-07-16 Sandisk Technologies Llc System and method for refreshing data in a memory device
US9478303B1 (en) * 2015-04-29 2016-10-25 Sandisk Technologies Llc System and method for measuring data retention in a non-volatile memory
US9563505B2 (en) * 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US9524790B1 (en) * 2015-08-02 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory cells wear reduction
US9998260B2 (en) 2016-02-11 2018-06-12 The Regents Of The University Of California High throughput communication system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010518523A (ja) 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム
JP2010533929A (ja) 2007-07-19 2010-10-28 マイクロン テクノロジー, インク. 疲労状態に基づく不揮発性メモリセルのリフレッシュ
JP2012238259A (ja) 2011-05-13 2012-12-06 Sony Corp 制御装置、記憶装置、制御方法
JP2015032247A (ja) 2013-08-06 2015-02-16 コニカミノルタ株式会社 情報処理装置及びリフレッシュ制御プログラム並びにリフレッシュ制御方法
JP2017058953A (ja) 2015-09-16 2017-03-23 株式会社東芝 キャッシュメモリシステム
US20170262197A1 (en) 2016-03-09 2017-09-14 Phison Electronics Corp. Memory managing method, memory control circuit unit and memory storage apparatus
JP2019512116A (ja) 2016-03-09 2019-05-09 ホアウェイ・テクノロジーズ・カンパニー・リミテッド フラッシュメモリデバイスをリフレッシュする方法および装置

Also Published As

Publication number Publication date
US20210089391A1 (en) 2021-03-25
JP2021047721A (ja) 2021-03-25
US11138070B2 (en) 2021-10-05

Similar Documents

Publication Publication Date Title
KR101665280B1 (ko) 메모리 디바이스에서의 에러 정정 동작들
JP7353889B2 (ja) メモリシステムおよび方法
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
KR101633048B1 (ko) 메모리 시스템 및 그것의 데이터 처리 방법
US10324788B2 (en) Memory system
US20150043282A1 (en) Method of estimating deterioration state of memory device and related method of wear leveling
US9711240B2 (en) Memory system
KR20170097267A (ko) 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
KR20140031556A (ko) 플래시 메모리를 포함하는 플래시 메모리 시스템 및 그것의 비정상 워드 라인 검출 방법
US11145357B2 (en) Memory system, memory controller and method for operating memory system
US11526301B2 (en) Memory system and non-volatile memory control method
US11562792B2 (en) Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
US10410738B2 (en) Memory system and control method
CN113010459A (zh) 存储器系统、存储器控制器以及操作存储器系统的方法
CN113806254B (zh) 存储器系统、存储器控制器及存储器系统的操作方法
US20210034541A1 (en) Memory system, memory control device, and memory control method
US10223198B2 (en) Error rate reduction
US20230170004A1 (en) Memory system and non-volatile memory
US10084487B2 (en) Apparatuses and methods for erasure-assisted ECC decoding
US11061615B2 (en) Memory system, memory controller and operating method thereof
US12050533B2 (en) Memory system and operating method of memory system
US11250909B2 (en) Nonvolatile memory and memory system
US12015425B2 (en) Controller and operating method thereof for determining reliability data based on syndrome weight
CN110806947B (zh) 预测错误校正装置、其操作方法和用该装置的存储器系统
US20230289260A1 (en) Controller and operating method of the controller for determining reliability data based on syndrome weight

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230512

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230920

R151 Written notification of patent or utility model registration

Ref document number: 7353889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151