JP2021149991A - メモリシステムおよび方法 - Google Patents
メモリシステムおよび方法 Download PDFInfo
- Publication number
- JP2021149991A JP2021149991A JP2020050122A JP2020050122A JP2021149991A JP 2021149991 A JP2021149991 A JP 2021149991A JP 2020050122 A JP2020050122 A JP 2020050122A JP 2020050122 A JP2020050122 A JP 2020050122A JP 2021149991 A JP2021149991 A JP 2021149991A
- Authority
- JP
- Japan
- Prior art keywords
- distribution
- storage area
- block
- word line
- controller
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
- G11C11/5635—Erasing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/025—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in signal lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/1202—Word line control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】応答性能の悪化を抑制したメモリシステムを提供すること。【解決手段】実施形態によれば、メモリシステムは、不揮発性のメモリと、コントローラと、を備える。メモリは、複数の記憶領域を備える。複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える。コントローラは、複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得する。コントローラは、複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得する。コントローラは、第1の分布と第2の分布との乖離量である第1の乖離量に基づいて第1の記憶領域または第2の記憶領域の異常を検出する。【選択図】図9
Description
本実施形態は、メモリシステムおよび方法に関する。
NAND型フラッシュメモリなどの不揮発性メモリを備えたメモリシステムが知られている。NAND型フラッシュメモリにおいて、ワードラインに関する特性が不良となる症状が発生する場合がある。従来は、このような症状は、リードしたデータの訂正不可能障害が多数発生するという事象として捉えられ、原因不明の故障として扱われていた。即ち、このような症状の検出および/または解析には、長い時間と大きな手間が必要であった。
ワードラインに関するこのような症状が発生した場合、症状が発生してから症状が検出および/または解析されるまでの間に、そのワードラインへのアクセスは許容されて実行されてしまう。ホストからの要求に応じてそのワードラインにアクセスされる毎に強力なエラー訂正の処理が実行されるため、メモリシステムの応答性能が悪化する。
一つの実施形態は、応答性能の悪化を抑制したメモリシステムおよび方法を提供することを目的とする。
一つの実施形態によれば、メモリシステムは、不揮発性のメモリと、コントローラと、を備える。メモリは、複数の記憶領域を備える。複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える。コントローラは、複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得する。コントローラは、複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得する。コントローラは、第1の分布と第2の分布との乖離量(divergence quantity)である第1の乖離量に基づいて第1の記憶領域または第2の記憶領域の異常を検出する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(実施形態)
図1は、実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどに搭載されるプロセッサである。ホスト2は、メモリシステム1を外部の記憶装置として利用する。
図1は、実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどに搭載されるプロセッサである。ホスト2は、メモリシステム1を外部の記憶装置として利用する。
メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受信する。モリシステム1は、リード要求に応じて、読み出し対象のデータを読み出してホストに送信する。メモリシステム1は、ライト要求に応じて、書き込み対象のデータを受信してライトする。
メモリシステム1は、1以上のNAND型フラッシュメモリ(以下、NANDメモリとも称する)101と、コントローラ102と、を備えている。1以上のNANDメモリ101は、不揮発性のメモリの一例である。
図1に示される例によれば、コントローラ102は、複数のチャネルを有している。そして、複数のチャネルのそれぞれには、所定個のNANDメモリ101が接続されている。なお、コントローラ102と各NANDメモリ101との接続の関係はこの例に限定されない。
NANDメモリ101の群は、複数の記憶領域として機能する。すなわち、1以上のNANDメモリ101は、記憶領域である。コントローラ102は、ホスト2とNANDメモリ101の群との間のデータ転送などを実行する。NANDメモリ101の群を、NANDストレージ110と表記する。
コントローラ102は、CPU(Central Processing Unit)103、RAM(Random Access Memory)104、ECC(Error-Correcting Code)回路105、ホストI/F(Interface)106、およびNANDI/F107を備えている。
CPU103は、ファームウェアプログラムを実行することによって、コントローラ102の種々の機能を実現するプロセッサである。
RAM104は、各NANDメモリ101よりも高速に動作できる揮発性のメモリである。RAM104は、ファームウェアプログラムがロードされる領域、ホスト2とNANDストレージ110との間で転送されるデータがバッファ(あるいはキャッシュ)される領域、各種管理情報がバッファ(あるいはキャッシュ)される領域、などを備える。
ECC回路105は、NANDストレージ110に送られるデータに対してエラー訂正のための符号化を施す。また、ECC回路105は、NANDストレージ110からリードされたデータ(以降、リードデータと表記する)に対し、復号化を実行することで、当該リードデータに含まれるエラーの検出および訂正を実行する。
なお、ECC回路105は、エラー訂正能力が異なる複数の方式の符号化を実行し得る。例えば、ECC回路105は、リードデータに対し、最もエラー訂正能力が弱い方式による復号化を実行し、その方式によるエラー訂正が不可能であった場合、エラー訂正能力がより強い方式による復号化を実行する。
なお、符号化および復号化の一方または両方は、CPU103によって実行されてもよい。複数の方式にかかる符号化および復号化のうちの一部または全部は、CPU103によって実行されてもよい。
ホストI/F106は、ホスト2とメモリシステム1との間の通信を制御する。
NANDI/F107は、コントローラ102と各NANDメモリ101との間の通信を制御する。
なお、コントローラ102は、CPU103に替えて、またはCPU103に加えて、MPU(Miro Processing Unit)、GPU(Graphic Processing Unit)、FPGA(Field-Programmable Gate Array)、またはASIC(Application Specific Integrated Circuit)などの、ハードウェア回路を備えていてもよい。これらのハードウェア回路によって、プロセッサとしての機能が実現されてもよい。
図2は、各NANDメモリ101の構成例を示す模式的な図である。各NANDメモリ101は、周辺回路201と、メモリセルアレイ202を備えている。
周辺回路201は、ロウデコーダ、カラムデコーダ、センスアンプ、電圧発生回路、シーケンサ、データバッファ、などを含む。周辺回路201は、メモリセルアレイ202に対し、データをプログラム(換言するとライト)するプログラム動作、データをセンス(換言するとリード)するリード動作、およびデータをイレースするイレース動作を実行することができる。
メモリセルアレイ202は、複数のメモリセルトランジスタが2次元的にあるいは3次元的に配置された構成を有する。メモリセルアレイ202は、複数のブロック300を含む。図2は、A+1(Aは4以上の整数)のブロック300が示される。ブロック300は、メモリセルアレイ202に対するイレースの単位である。つまり、1つのブロック300に格納された全データは、イレース動作によって一括にイレースされる。以降、メモリセルトランジスタを、メモリセルと表記する。
図3は、実施形態における1個のブロックの構成例を示す回路図である。図3では、一例として、複数のメモリセルが2次元的に配列されることで構成されたブロックを説明する。
図3に示されるように、各ブロックは、X方向に沿って順に配列された(r+1)個のNANDストリングを備えている(r≧0)。(r+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLrに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)を含む。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、およびフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルMTは、しきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルMTは、フローティングゲートに、データに応じた量の電荷を保持する。
各NANDストリングにおいて、(q+1)個のメモリセルMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている(q≧0)。そして、最も選択トランジスタST1側に位置するメモリセルMTから順に、制御ゲート電極がワードラインWL0〜WLqにそれぞれ接続されている。従って、ワードラインWL0に接続されたメモリセルMTのドレインは選択トランジスタST1のソースに接続され、ワードラインWLqに接続されたメモリセルMTのソースは選択トランジスタST2のドレインに接続されている。
ワードラインWL0〜WLqは、ブロック内の各NANDストリング間で、メモリセルMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルMTの制御ゲート電極は、同一のワードラインWLに接続される。各メモリセルMTに1ビットの値を保持可能に構成される場合には、同一のワードラインWLに接続される(r+1)個のメモリセルMTは1ページとして取り扱われ、このページごとにプログラム動作およびリード動作が行われる。
各メモリセルMTには、複数ビットのデータが格納され得る。例えば、各メモリセルMTがn(n≧2)ビットのデータを格納可能な場合、ワードライン当たりの記憶容量はnページ分のサイズに等しくなる。
なお、各メモリセルMTに格納されるデータのビット数は、特定の数に限定されない。ここでは、各メモリセルMTに3ビットのデータが格納されるTLC(Triple Level Cell)と呼ばれる方式が採用される場合について説明する。
図4は、実施形態のメモリセルMTが取り得るしきい値電圧の分布を示す図である。図4において、横軸はしきい値電圧を表し、縦軸はメモリセルの数を表す。なお、しきい値電圧の分布を、Vth分布、と表記する。
メモリセルMTにデータが書き込まれた場合、各メモリセルのしきい値電圧が、ステートEr、ステートA、ステートB、ステートC、ステートD、ステートE、ステートF、およびステートGの8つのステートのうちの何れかに含まれるように、各メモリセルMTのしきい値電圧が制御される。ステートEr、ステートA〜Gのそれぞれは、互いに異なる3ビットのデータと1対1に対応付けられている。これによって、各メモリセルMTは、3ビットのデータを保持することができる。
ステートErはメモリセルMTのデータが消去された状態に対応する。即ち、周辺回路201によってイレース処理が実行された後のメモリセルMTのしきい値電圧は、ステートErに含まれる。メモリセルMTのしきい値電圧は、周辺回路201が実行するプログラム動作によって、ステートEr内に維持されるか、またはステートA〜ステートGのうちのデータに対応したステートに至るまで上昇せしめられる。つまり、各メモリセルMTには、データに応じたしきい値電圧が設定される。そして、しきい値電圧の分布は、それぞれ異なるステートに対応した8つのローブを含むことになる。
隣接する2つのステート間には、リード動作用の判定電圧が設定される。例えば、図4に示されるように、ステートErとステートAとの間に判定電圧VAが、ステートAとステートBとの間に判定電圧VBが、ステートBとステートCとの間に判定電圧VCが、ステートCとステートDとの間に判定電圧VDが、ステートDとステートEとの間に判定電圧VEが、ステートEとステートFとの間に判定電圧VFが、ステートFとステートGとの間に判定電圧VGが、設定される。
リード動作においては、周辺回路201は、各メモリセルMTのしきい値電圧が属するステートを、当該しきい値電圧と判定電圧VA〜VGとの比較に基づいて特定する。そして、周辺回路201は、特定したステートを当該ステートに対応する値のデータにデコードして、デコードによって得られたデータをコントローラ102に送信する。
なお、3ビットのデータのうちの特定ビットのみがリード動作の対象の場合、周辺回路201は、判定電圧VA〜VGのうちの一部を使用することによって特定ビットのデータを判定してもよい。つまり、周辺回路201は、メモリセルMTに格納されたデータを判定電圧VA〜VGのうちの一部または全部を用いて判定することができる。
ここで、メモリセルMTは、使用されるにつれて疲弊し、メモリセルMTのしきい値電圧が変化し得る。
例えば、或るワードラインに対してリード動作が実行される際には、当該ワードラインに接続されるメモリセルMTと同じブロックに属する別のワードラインに接続された全てのメモリセルMTを導通状態とするために、別のワードラインに十分に高い電圧Vread(判定電圧VGよりも高い電圧)が印加される。この電圧Vreadが別のワードラインを介して印可されたメモリセルMTでは、しきい値電圧が高電圧側に変化する。つまり、或るブロック300に対してリード動作が実行される毎に、そのブロック300に含まれるメモリセルMTのしきい値電圧が高電圧側に変化する。この現象は、リードディスターブとして知られている。
また、或るメモリセルMTのしきい値電圧は、そのメモリセルMTに対してプログラム動作が実行された後、時間の経過に従って低電圧側に変化することが知られている。プログラム動作が実行されてから経過した時間を、データリテンション(DR)時間と表記する。
さらに、メモリセルMTにプログラム動作とイレース動作との対、即ちプログラムイレースサイクル、が繰り返し実行されると、メモリセルMTが劣化して、しきい値電圧が変化しやすくなることが知られている。
以降、メモリセルMTが使用された度合いまたは回数を、使用によってメモリセルMTが疲弊した度合いという意味で、疲弊度、と表記する。
Vth分布の一部または全部がステート間の境界にあるべき判定電圧を越えた場合、書き込まれたデータと異なるデータが読み出されるエラーが発生する。当該エラーは、例えばECC回路105によって訂正が試みられる。
ここで、或るワードラインが故障した場合、当該ワードラインからリードされるデータは、多くのエラーを含む。これに応じて、エラーを含まないデータが得られるまで、種々の方式による復号化が試みられる。ワードラインが故障するとは、例えば、ワードラインに関する特性が不良となる症状が発生する状態となることを示す。
一般に、エラー訂正能力が高い方式ほど、復号化に長い時間がかかる。故障したワードラインに格納されているデータをリードするリード要求を処理する際には、エラー訂正能力が高い方式による復号化を必要とするため、リード要求の処理に要するトータルの時間が長くなる。つまり、メモリシステム1の応答性能が悪化する。
実施形態では、故障したワードラインに接続されるメモリセルを含むブロックの検出が、リード要求とは関係なく実行される。例えば、当該検出は、バックグラウンドで実行される。故障したワードラインを含むブロックが検出された場合、そのブロックは使用に適さない異常なブロックである不良ブロック(defective block)として登録される。不良ブロックの使用は禁止される。故障したワードラインがホスト2からの要求によってアクセスされるよりも前に、当該故障したワードラインに接続されるメモリセルを含むブロックが不良ブロックに設定されるので、ホスト2からの要求によって当該故障したワードラインにアクセスされることによる応答性能の悪化を抑制することが可能となる。
故障したワードラインを含むブロックは、次のようにして検出される。
例えば、2つのブロックの疲弊度が同じであれば、当該2つのブロックから得られるVth分布は類似すると考えられる。しかしながら、当該2つのブロックのうちの一に含まれるワードラインが故障している場合、当該ワードラインからは、故障していない場合に得られるVth分布とは全く異なるVth分布が得られる。
そこで、疲弊度が同じ2つのブロックのそれぞれに含まれる複数のメモリセルMTのVth分布を取得して、取得された2つのVth分布が互いに類似しているか否かによって、故障したワードラインに接続されるメモリセルを含むブロックが検出される。
2つのVth分布が類似しているか否かは、2つのVth分布の間の乖離量(divergence quantity)としきい値との比較によって判定される。実施形態では、一例として、KL(Kullback-Leibler)情報量が乖離量として使用される。
乖離量としてKL情報量が使用される場合、乖離量をD(P||Q)とし、確率変数をXとし、その実現値をxとすると、確率分布P(X)と確率分布Q(X)との間の乖離量D(P||Q)は、下記の式(1)によって定義される。
上記の式(1)によれば、P(X)=Q(X)であるとき、KL情報量はゼロとなることから、KL情報量は、P(X)とQ(X)との間の乖離の程度を表していると考えることができる。
式(1)のP(X)に2つのVth分布のうちの1つを代入し、Q(X)に当該2つのVth分布のうちの他を代入することによって、当該2つのVth分布の乖離の程度を定量化したスカラー量、つまり乖離量を得ることができる。
なお、Vth分布は、ブロック300内のワードラインの相対位置に依存して異なり得る。つまり、2つのVth分布が当該2つのVth分布のそれぞれが属するブロック300においてそれぞれ異なる相対位置に位置するワードラインから取得されたものであれば、たとえ当該2つのVth分布の取得元のブロック300の疲弊度が互いに等しくても、当該2つのVth分布は互いに類似しない可能性がある。
そこで、それぞれ異なるブロック300において互いに同じ相対位置に位置するワードラインの対が、互いに比較されるVth分布の取得の対象とされる。
Vth分布の取得の対象となるワードラインは、任意に選択され得る。図5は、ワードラインの選択方法の例を説明するための図である。
例えば、図5(A)に示されるように、全てのワードライン0−qの対がVth分布の取得の対象とされてもよい。例えば、各ブロック300は、(q+1)個のワードラインを備える。各ワードラインには、各ブロック300の先頭のワードラインを0番として当該先頭のワードラインからの相対位置を示す、0番からq番までの番号の何れかがが付されている。この番号は、ワードライン番号と称される。図5(A)に示される例では、2つのブロック300の間で、同一のワードライン番号が付された2つのワードラインの対が、(q+1)個、設定され、(q+1)個の対のそれぞれについて、ワードライン間でVth分布が類似しているか否かが判定される。互いのVth分布が類似していないと判定された対が存在する場合には、その対を構成する2つのワードラインのうちの何れかが故障していると推定され得る。
別の例では、図5(B)に示されるように、全てのワードラインの内いくつかのワードラインの対が選択されて、選択された対毎にVth分布が類似しているか否かが判定されてもよい。図5(B)では、(q+1)個の対のうちのワードライン番号が連続するn個の対が選択されている。しかし、ワードライン番号が不連続なn個の対が選択されてもよい。ただしnは1以上かつq以下の整数である。このように、Vth分布の取得の対象を絞ることで、処理に要する時間を短縮することが可能である。
nは、任意の方法で決定され得る。例えば、ワードラインの故障が発生していない場合のKL情報量の最大値をpとし、信頼区間をLcとし、故障したワードラインの許容数をNとすると、理想的なサンプル数n0は、下記の式(2)のように表すことができる。
nとして、式(3)によって求められた理想的なサンプル数n0を使用することができる。このようにnとしてn0が使用されることで、設定された信頼区間Lcに応じた信頼性を有する検出結果が得られる。
なお、図5(c)に示されるように、nを1とすることもできる。その場合には、検出結果の信頼性は低くなるが、選択された1対のワードラインの何れかが故障していれば、その故障を検出することが可能である。
図6は、実施形態にかかるコントローラ102の機能的な構成の一例を示す模式的な図である。コントローラ102は、アクセス部111、エラー訂正部112、Vth分布取得部113、乖離量演算部114、および管理部115を備える。アクセス部111、Vth分布取得部113、乖離量演算部114、および管理部115のそれぞれの機能は、例えばCPU103がファームウェアプログラムを実行することによって実現される。また、エラー訂正部112は、例えばECC回路105によって実現される。エラー訂正部112は、CPU103、またはCPU103およびECC回路105の両方、によって実現されてもよい。
アクセス部111は、ホスト2からのアクセス要求を解析して、解析の結果に従ってNANDI/F107を制御することで、NANDストレージ110へのアクセスを実現する。
エラー訂正部112は、NANDストレージ110からのリードデータに対し、1以上の方式に従ったエラー訂正を実行する。
管理部115は、NANDストレージ110の疲弊度の管理、故障したワードラインを含むブロックの検出、不良ブロックの管理、などのNANDストレージ110に関する種々の処理を実行する。管理部115が実行する処理のうちの、実施形態における管理部115が実行する処理の説明は後述する。
なお、管理部115は、上記した処理の他にも、論理アドレスと物理アドレスとの対応関係の管理、ウェアレベリングの制御、ガベージコレクションの制御、リフレッシュの制御、など、の処理を実行する。
Vth分布取得部113は、NANDストレージ110のVth分布を取得する。
一例では、Vth分布取得部113は、Vth分布の取得の対象となったNANDメモリ101に対し、ディストリビューションリードを行う。ディストリビューションリードとは、ワードラインに印加される電圧の値を所定の刻み幅ごとにシフトさせながら、当該ワードラインに接続されたオン状態のメモリセルの数またはオフ状態のメモリセルの数を測定することによって、しきい値電圧の分布を測定する動作である。Vth分布取得部113は、ワードラインに印可される電圧を設定するコマンドを対象のNANDメモリ101に逐次送ることで、ワードラインに印可される電圧をシフトさせてもよい。Vth分布取得部113は、ワードラインに印可される電圧のシフトを対象のNANDメモリ101に実行させるコマンドを送って、当該対象のNANDメモリ101に実行させてもよい。また、ワードラインに印可される電圧のシフトが、対象のNANDメモリ101によって自動で実行されてもよい。なお、Vth分布の取得の方法はこれらの例に限定されない。
乖離量演算部114は、Vth分布取得部113によって取得された複数のVth分布の間の乖離量として、KL情報量を演算する。
続いて、実施形態にかかるメモリシステム1の動作を説明する。
図7は、実施形態にかかる管理部115による疲弊度の管理の動作の一例を示すフローチャートである。
管理部115は、NANDストレージ110に含まれる複数のブロックのうちの1つを、対象ブロックとして選択する(S101)。このとき、不良ブロックは選択されない。
続いて、管理部115は、対象ブロックにかかるプログラムイレース(P/E)サイクルの回数、リード動作の回数、およびデータリテンション時間を取得する(S102)。管理部115は、ブロック毎に、プログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間を計測し、管理情報として記録している。S102では、管理部115は、当該管理情報を参照することによってこれらの情報を取得することができる。S102では、管理部115は、プログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間の何れかを取得してもよい。
なお、リード動作の回数は、対象ブロックに最後にプログラムが実行されてから対象ブロックにリード動作が実行された回数である。データリテンション時間は、対象ブロックに最後にプログラム動作が実行されてから経過した時間である。
続いて、管理部115は、対象ブロックにかかるプログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間に基づいて、対象ブロックの疲弊度を演算する(S103)。
疲弊度の演算は、特定の方法に限定されない。一例では、管理部115は、プログラムイレースの回数、リード動作の回数、およびデータリテンション時間の重み付け加算を演算し、演算によって得られた値を疲弊度と見なす。
なお、疲弊度の演算は、重み付け加算だけでなく、乗算、除算、減算、など種々の演算が含まれ得る。
続いて、管理部115は、未選択のブロックが残っているか否かを判定する(S104)。未選択のブロックが残っている場合には(S104:Yes)、S101に制御が移行して、管理部115は、未選択のブロックのうちから1つのブロックを再び選択する。
未選択のブロックが残っていない場合(S104:No)、管理部115は、選択済みの全てのブロックを疲弊度に基づいて1以上のブロックグループにグループ化する(S105)。S105では、管理部115は、互いに疲弊度が類似するブロック300を同じブロックグループに分類する。
例えば、複数の疲弊度の範囲が設定され、当該複数の範囲のそれぞれには、それぞれ異なるブロックグループが対応付けられる。管理部115は、各ブロック300の疲弊度が含まれる範囲に対応付けられたグループに分類する。なお、グループ化の方法はこの例に限定されない。
S105の後、疲弊度の管理の動作が終了する。
図8は、図7に示される一連の動作によって生成された1以上のブロックグループを示す概念的な図である。図8に示される例によれば、複数のブロックグループ310が生成されている。各ブロックグループ310に属するブロック300の数は、ブロックグループ310毎に異なり得る。同一のブロックグループ310に属する全てのブロック300の疲弊度は互いに類似する。
なお、図7を用いて示された疲弊度の管理の動作が実行されるタイミングは、特定のタイミングに限定されない。例えば、メモリシステム1がアイドル状態にあるときに、管理部115は、疲弊度の管理の動作を実行してもよい。または、アクセス部111がリード要求、ライト要求、またはそれらの両方を所定回数実行する毎に、管理部115は、疲弊度の管理の動作を実行してもよい。または、例えば1日に1回など、予め設定された時間周期で、管理部115は、疲弊度の管理の動作を実行してもよい。
図9は、実施形態にかかる、故障したワードラインを含むブロックを検出する動作の一例を示すフローチャートである。
まず、管理部115は、1以上のブロックグループ310から1つのブロックグループ310を選択する(S201)。そして、管理部115は、選択されたブロックグループ310から2つのブロック300を選択する(S202)。この2つのブロック300のうちの一を、第1のブロック300とも表記し、この2つのブロック300のうちの他を、第2のブロック300とも表記する。
続いて、管理部115は、ワードラインを選択する(S203)。より具体的には、管理部115は、Vth分布の取得の対象となるワードラインの番号を選択する。
図5を用いて説明したように、ブロック300内の全てのワードラインが選択されてもよいし、信頼区間に基づいて決定された数のワードラインが選択されてもよい。また、1つのワードラインが選択されてもよい。図9の説明では、説明を簡単にするために、1つのワードラインが選択されることとする。
S203に続いて、Vth分布取得部113は、第1のブロック300の選択されたワードライン番号が示すワードライン(第1のワードラインとも表記する)と、第2のブロック300の選択されたワードライン番号が示すワードライン(第2のワードラインとも表記する)と、のそれぞれのVth分布を取得する(S204)。
続いて、乖離量演算部114は、得られた2つのVth分布の間のKL情報量を演算する(S205)。
管理部115は、得られたKL情報量が予め決められたしきい値以下であるか否かを判定する(S206)。
KL情報量がしきい値以下である場合(S206:Yes)、第1のワードラインおよび第2のワードラインの何れも故障していないと推定される。この場合、管理部115は、第1のブロック300および第2のブロック300のいずれも不良ブロックとして登録しない(S207)。そして、故障したワードラインを含むブロックを検出する動作が終了する。
KL情報量がしきい値以下ではない場合(S206:No)、第1のワードラインおよび第2のワードラインの何れかが故障していると推定される。そのような場合、管理部115は、2つの対象のブロック300の両方を不良ブロックとして登録する(S208)。そして、故障したワードラインを含むブロックを検出する動作が終了する。
なお、図9に示した例によれば、S206の判定処理において、KL情報量がしきい値と等しい場合、Noと判定された。KL情報量がしきい値と等しい場合の扱いはこれに限定されない。S206の判定処理において、KL情報量がしきい値と等しい場合、Yesと判定されてもよい。
また、図9に示した例によれば、S203の処理において1つのワードラインが選択される場合について説明された。S203の処理において、2以上のワードラインが選択されてもよい。S203の処理において2以上のワードラインが選択された場合、S204〜S206の処理は、選択されたワードライン毎に実行される。そして、選択された何れのワードラインに関してもS206の判定処理においてYesと判定された場合、S207の処理が実行される。選択された何れかのワードラインに関してS206の判定処理においてNoと判定された場合、S208の処理が実行される。
なお、S203の処理においては、信頼区間に基づいて決定された数のワードラインが選択されてもよいし、ブロック300内の全てのワードラインが選択されてもよい。
このように、実施形態によれば、コントローラ102は、2つのブロック300のそれぞれからワードライン単位のVth分布を取得して、取得されたVth分布の間のKL情報量を、取得されたVth分布の間の乖離量として取得する。そして、コントローラ102は、KL情報量に基づいて、2つのブロック300の異常を検出する。
この構成により、故障したワードラインについて、ホスト2からのアクセス要求に応じて当該ワードラインに対するアクセスを行う前に検出することが可能となる。従って、故障したワードラインに対してアクセスされることによって起こされる応答性能の悪化を抑制することが可能となる。
また、メモリシステム1またはNANDメモリ101の供給者によるFA解析を要することなくワードラインの故障を検出することが可能となる。
また、実施形態によれば、コントローラ102は、複数の記憶領域を疲弊度に応じて1以上のグループ(例えばブロックグループ310)にグループ分けし、1以上のグループから2つの記憶領域を選択する。
Vth分布は、疲弊度に応じて異なる。上記の構成により、疲弊度が互いに類似した2つのブロック300が選択される。これによって、疲弊度に応じたVth分布の相違の影響を排除した精度の高い検出が可能となる。
なお、疲弊度が互いに類似した2つのブロック300を選択するための構成は、上記の構成に限定されない。コントローラ102は、ブロック300毎に疲弊度を演算し、ブロック300毎の疲弊度に基づき、疲弊度が類似した2つのブロック300を選択してもよい。つまり、コントローラ102は、グループ分けを行うことなく、疲弊度に基づいて2つのブロック300を選択してもよい。
なお、ウェアレベリングの制御など、全ブロック300の間で疲弊度が均一に近づく制御が行われている場合には、任意に2つのブロック300を選択しても、疲弊度が類似した2つのブロック300を選択することができる。そのような場合、コントローラ102は、不良ブロックを除く全てのブロック300から2つのブロック300を選択してもよい。
また、それぞれは複数の物理的なブロック300を含む複数の論理的なブロックが構成され、この論理的なブロックの単位でイレース動作を含むアクセスが実行される場合がある。そのような場合、1つの論理的なブロックを構成する複数のブロック300の間では、プログラムイレースサイクルの回数を含む使用の履歴が均一になる。つまり、1つの論理的なブロックを構成する複数のブロック300の間では、疲弊度が均一になると考えられる。そのような場合、コントローラ102は、1つの論理的なブロックを選択し、当該選択された論理的なブロックを構成する複数のブロック300から2つのブロック300が選択されてもよい。
また、実施形態によれば、コントローラ102は、KL情報量がしきい値よりも小さい場合、2つのブロック300の何れも不良ブロックとして登録せず、これによって、2つのブロック300の何れのブロック300の使用も禁止しない。KL情報量がしきい値よりも大きい場合、2つのブロック300の両方を不良ブロックとして登録し、これによって、2つのブロック300の何れの使用も禁止する。
つまり、コントローラ102は、2つのブロック300のうちの何れか1つが故障していると推定される場合、2つのブロック300のそれぞれの使用をともに禁止する。このように推定の処理が簡単になることで、異常の検出を高速に実行することが可能となる。
(変形例1)
上記した実施形態では、コントローラ102は、2つのブロック300のうちの何れか1つが故障していると推定される場合、2つのブロック300のそれぞれの使用をともに禁止した。変形例1では、2つのブロック300のうちの故障したワードラインを含むブロック300が特定され、特定されたブロック300が不良ブロックとして登録される。当該2つのブロック300のうちの他のブロック300は不良ブロックとして登録されない。
上記した実施形態では、コントローラ102は、2つのブロック300のうちの何れか1つが故障していると推定される場合、2つのブロック300のそれぞれの使用をともに禁止した。変形例1では、2つのブロック300のうちの故障したワードラインを含むブロック300が特定され、特定されたブロック300が不良ブロックとして登録される。当該2つのブロック300のうちの他のブロック300は不良ブロックとして登録されない。
以下に、実施形態の変形例1を説明する。なお、実施形態と同じ処理または動作については、簡略的に説明されるか、または説明が省略される。
図10は、実施形態の変形例1にかかる、故障したワードラインを含むブロック300を検出する動作の一例を示すフローチャートである。
S301〜S307では、図9のS201〜S207と同じ処理が実行される。
第1のワードラインから得られたVth分布と、第2のワードラインから得られたVth分布と、の間のKL情報量がしきい値以下ではない場合(S306:No)、S301の処理によって選択されたブロックグループ310から、第1のブロック300および第2のブロック300の何れとも異なる新たなブロック300(第3のブロック300とも表記する)を選択する(S308)。
続いて、Vth分布取得部113は、第3のブロック300の、S303によって選択されたワードライン番号が示すワードライン(第3のワードラインと表記する)のVth分布を取得する(S308)。
そして、乖離量演算部114は、第1のワードラインから得られたVth分布と、第3のワードラインから得られたVth分布と、の間のKL情報量を演算する(S310)。
続いて、管理部115は、S310によって得られたKL情報量が予め決められたしきい値以下であるか否かを判定する(S311)。なお、S311で使用されるしきい値は、S306(またはS206)で使用されるしきい値と同じであってよい。
KL情報量がしきい値以下である場合(S311:Yes)、第1のワードラインと、第3のワードラインと、の何れも故障していないと推定できる。S306の判定結果によって、第1のワードラインと第2のワードラインとの何れかが故障していることが既に判明している。この2つの推定結果から、第1のワードラインと第3のワードラインは故障しておらず、第2のワードラインが故障しているということが分かる。よって、KL情報量がしきい値以下である場合(S311:Yes)、管理部115は、第1のブロック300を不良ブロックとして登録せず、第2のブロック300を不良ブロックとして登録する(S312)。そして、故障したワードラインを含むブロックを検出する動作が終了する。
KL情報量がしきい値以下でない場合(S311:No)、第1のワードラインと、第3のワードラインと、の何れかが故障していると推定できる。
ここで、ワードラインの故障は、頻発するものではない。よって、第1〜第3のワードラインのうち、それぞれ異なるブロック300に含まれる2以上のワードラインが故障することは極めて稀と考えることができる。従って、第1〜第3のワードラインのうちの1つのみが故障していると仮定すると、S306およびS311の判定結果によれば、第1のワードラインが故障していると推定することができる。
よって、KL情報量がしきい値以下でない場合(S311:No)、管理部115は、第1のブロック300を不良ブロックとして登録し、第2のブロック300を不良ブロックとして登録しない(S313)。そして、故障したワードラインを含むブロックを検出する動作が終了する。
なお、図10に示した例によれば、S311の判定処理においてKL情報量がしきい値と等しい場合、Noと判定された。KL情報量がしきい値と等しい場合の扱いはこれに限定されない。S311の判定処理においてKL情報量がしきい値と等しい場合、Yesと判定されてもよい。
また、実施形態で説明された例と同様、S303の処理において、2以上のワードラインが選択されてもよい。さらに信頼区間に基づいて決定された数のワードラインが選択されてもよいし、ブロック300内の全てのワードラインが選択されてもよい。S303の処理において2以上のワードラインが選択された場合、S304〜S306の処理は、選択されたワードライン毎に実行される。そして、選択された何れのワードラインに関してもS306の判定処理においてYesと判定された場合、S307の処理が実行される。
選択された何れかのワードラインに関してS306の判定処理においてNoと判定された場合、制御がS308に移行する。S308以降の一連の処理は、S306の判定処理でYesとならなかったワードラインのみを対象として実行されてもよいし、2以上のワードラインを対象として実行されてもよい。2以上のワードラインが処理の対象とされる場合、S306の判定処理でYesとならなかったワードラインを含む信頼区間に基づいて決定された数のワードラインが選択されてもよいし、ブロック300内の全てのワードラインが選択されてもよい。
このように変形例1によれば、第1のワードラインと第2のワードラインのそれぞれから取得されたVth分布の間のKL情報量がしきい値よりも大きい場合、コントローラ102は、疲弊度に基づいて第3のブロック300を選択し、第3のブロック300の第3のワードラインのVth分布を取得する。第1のワードラインから取得されたVth分布と、第3のワードラインから取得されたVth分布と、の間のKL情報量がしきい値よりも大きい場合、コントローラ102は、第1のブロック300を不良ブロックとして登録する。第1のワードラインから取得されたVth分布と、第3のワードラインから取得されたVth分布と、の間のKL情報量がしきい値よりも小さい場合、コントローラ102は、第2のブロック300を不良ブロックとして登録する。
これによって、故障していないワードラインを含むブロック300を不良ブロックとして登録することを防止することが可能となる。
(変形例2)
通常のリードに関するシーケンスでは、リード動作が実行され、当該リード動作によって得られたリードデータにかかるエラー訂正が実行される。そして、当該エラー訂正が失敗した場合、判定電圧をシフトしてリード動作を再実行するシフトリードが1回以上実行され、シフトリードによって得られたリードデータについて再びエラー訂正が実行される。そして、シフトリードを行ってもエラー訂正が失敗した場合、例えばディストリビューションリードが実行されることでVth分布が取得され、Vth分布に基づいて判定電圧がより適した値に変更されて、変更後の判定電圧を用いたシフトリードが実行される。
通常のリードに関するシーケンスでは、リード動作が実行され、当該リード動作によって得られたリードデータにかかるエラー訂正が実行される。そして、当該エラー訂正が失敗した場合、判定電圧をシフトしてリード動作を再実行するシフトリードが1回以上実行され、シフトリードによって得られたリードデータについて再びエラー訂正が実行される。そして、シフトリードを行ってもエラー訂正が失敗した場合、例えばディストリビューションリードが実行されることでVth分布が取得され、Vth分布に基づいて判定電圧がより適した値に変更されて、変更後の判定電圧を用いたシフトリードが実行される。
故障したワードラインを含むブロックを検出する動作は、リード動作が実行され、当該リード動作によって得られたリードデータにかかるエラー訂正が失敗したことを契機として実行されてもよい。当該リード動作は、例えば、ホスト2からのリード要求に応じたリード動作であってもよいし、メモリシステム1の内部の処理(例えばガベージコレクション)によるリード要求に応じたリード動作であってもよい。
または、上記したシーケンスにおいてVth分布の取得の契機となるエラー訂正が失敗した場合に、故障したワードラインを含むブロックを検出する動作が実行されてもよい。これによって、取得されたVth分布を、故障したワードラインを含むブロックを検出する動作と、判定電圧の変更と、の両方に利用することができる。
以下に、実施形態の変形例2を説明する。なお、実施形態と同じ処理または動作については、簡略的に説明されるか、または説明が省略される。
図11は、実施形態の変形例2にかかるリード動作に関する一連の処理の一例を示すフローチャートである。ここでは一例として、ホスト2からのリード要求に応じてリード動作が実行される際の一連の処理を説明する。
アクセス部111は、ホスト2からのリード要求に応じて、或るブロック300(第1のブロックと表記する)からデータのリードを実行する(S401)。エラー訂正部112は、リードされたデータに対し、エラー訂正を実行する(S402)。エラー訂正が成功した場合(S403:Yes)、故障したワードラインを含むブロックを検出する動作が開始されずに、リード動作に関する一連の処理が終了する。
エラー訂正が失敗した場合(S403:No)、第1のブロックと同じブロックグループ310から、第2のブロック300を選択する(S404)。そして、S405〜S410において、図9のS203〜S208と同じ処理が実行されて、リード動作に関する一連の処理が終了する。
なお、実施形態にて説明されたように、エラー訂正部112は、エラー訂正能力が異なる複数の方式の符号化を実行し得る。S403の処理においては、複数の方式のうちの所定の方式のエラー訂正が成功したか否かが判定され得る。S403の処理においては、例えば、最もエラー訂正能力が弱い方式のエラー訂正が成功したか否かが判定されてもよいし、最もエラー訂正能力が強い方式のエラー訂正が成功したか否かが判定されてもよいし、中程度のエラー訂正能力を有する方式のエラー訂正が成功したか否かが判定されてもよい。
なお、エラー訂正が失敗した場合(S403:No)、変形例1において、図10を用いて説明したS303〜S313の処理が実行されてもよい。
また、S405においては、S401のリードの対象となったワードラインの番号が選択されてもよい。または、S401のリードの対象となったワードラインを含む、信頼区間に基づいて決定された数のワードラインが選択されてもよい。または、第1のブロック300および第2のブロック300に含まれる全てのワードラインが選択されてもよい。
また、S408の判定処理において、KL情報量がしきい値以下ではないと判定された場合(S409:No)、管理部115は、第1のブロックを不良ブロックとして登録し、第2のブロックを不良ブロックとして登録しなくてもよい。これは、故障したワードラインを含むブロックを検出する動作は、第1のブロックからのリードが失敗して開始されたからである。
このように、コントローラ102は、故障したワードラインを含むブロックを検出する動作を、エラー訂正が失敗したことを契機として開始してもよい。
(変形例3)
コントローラ102は、ブロック300の対(すなわち、2つのブロックの組)をn個、選択し、選択されたn個の対のそれぞれについて、故障したワードラインを含むブロックを検出する動作を順次、実行してもよい。
コントローラ102は、ブロック300の対(すなわち、2つのブロックの組)をn個、選択し、選択されたn個の対のそれぞれについて、故障したワードラインを含むブロックを検出する動作を順次、実行してもよい。
例えば図12に示されるように、管理部115は、ブロック300の対をn個、ランダムに選択する。1つの対を構成する2つのブロック300の疲弊度は互いに類似していることとする。例えば、同じブロックグループ310から、1つの対を構成する2つのブロック300が選択されてもよい。
または、ウェアレベリングの制御など、全ブロック300の間で疲弊度が均一に近づく制御が行われている場合には、管理部115は、全ブロック300(ただし不良ブロックとして登録されたブロック300は除く)から、1つの対を構成する2つのブロック300を選択してもよい。このとき、予め決められたアルゴリズムに従って、2つのブロック300を選択してもよい。
n個の対が確定した後、コントローラ102は、各対を構成する2つのブロック300の間で、全ワードラインについてVth分布の間のKL情報量に基づく故障の判断を実行する。
対を構成する2つのブロック300を選択するためのアルゴリズムとしては、一例では、ブロック#xとブロック#(x+n+1)とによって1つの対を構成するというアルゴリズムが考えられる。管理部115は、xにjから(j+n−1)までの整数を順次代入することによって、n個の対のそれぞれを構成する2つのブロック300を選択する。ただしjは自然数である。
対を構成する2つのブロック300を選択するためのアルゴリズムの別の例としては、ブロック#xとブロック#(x+k*n+1)とによって1つの対を構成するというアルゴリズムが考えられる。ただしkは自然数である。管理部115は、xにjから(j+n−1)までの整数を順次代入することによって、n個の対のそれぞれを構成する2つのブロック300を選択する。
対を構成する2つのブロック300を選択するためのアルゴリズムのさらに別の例としては、ブロック#xとブロック#f(x)とによって1つの対を構成するというアルゴリズムが考えられる。ただし、f(x)はxの関数である。管理部115は、xにjから(j+n−1)までの整数を順次代入することによって、n個の対のそれぞれを構成する2つのブロック300を選択する。
このように、コントローラ102は、信頼区間に基づいてnを決定し、複数のブロック300からn個の対を選択する。
これによって、全てのブロック300から故障したワードラインを含むブロック300を検出する際に、精度の高い検出を行うことが可能となる。
なお、変形例3は、変形例1と併用して適用することが可能である。
式(4)によれば、P(X)=Q(X)のときにD(P||Q)=0となることから、KL情報量に替えて、式(4)によって定義される量を、乖離量として採用され得る。
なお、式(5)に定義されるD(P||Q)は、距離の公理を満たす。距離の公理を満たすものであれば、式(5)に定義される量に限らず、どのように定義された量であっても、乖離量として採用され得る。
なお、変形例4は、変形例1〜3の何れの変形例とも併用され得る。
(変形例5)
以上の説明においては、プログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間に基づいて疲弊度が演算された。疲弊度の演算方法はこれに限定されない。
以上の説明においては、プログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間に基づいて疲弊度が演算された。疲弊度の演算方法はこれに限定されない。
例えば、管理部115は、プログラムイレースサイクルの回数を疲弊度として見なしてもよい。
または、管理部115は、プログラムイレースサイクルの回数とリード動作の回数とに基づいて疲弊度を演算してもよい。例えば、管理部115は、プログラムイレースサイクルの回数とリード動作の回数との重み付け加算を演算し、演算によって得られた値を対象ブロックの疲弊度と見なしてもよい。
なお、疲弊度の演算では、重み付け加算だけでなく、乗算、除算、減算、など種々の演算が実行され得る。
実施形態および変形例1〜変形例5では、ワードライン単位でVth分布が取得された。しかし、ワードラインよりも小さい記憶領域の単位でVth分布が取得されてもよいし、ワードラインよりも大きい記憶領域の単位でVth分布が取得されてもよい。
また、Vth分布の比較の処理によって、故障している虞があるワードラインが検出された場合、そのワードラインを含むブロック300が、使用に適さない異常なブロックである不良ブロックとして登録され、使用が禁止された。不良ブロック以外のブロック300の使用は許可された。しかし、使用の許可/禁止が設定される単位は、ブロック300単位に限定されない。ブロック300よりも小さい記憶領域の単位で使用の許可/禁止が設定されてもよい。また、ブロック300よりも大きい記憶領域の単位で使用の許可/禁止が設定されてもよい。
また、Vth分布の取得の対象となる単位と、異常の検出の単位と、は同じであってもよいし、異なっていてもよい。
つまり、実施形態および変形例1〜5によれば、不揮発性のメモリとしてのNANDストレージ110は、複数の記憶領域を備える。前記複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える。コントローラは、前記複数の記憶領域のうちの第1の記憶領域が備える前記複数のメモリセルの前記しきい値電圧の分布である第1の分布を取得し、前記複数の記憶領域のうちの第2の記憶領域が備える前記複数のメモリセルの前記しきい値電圧の分布である第2の分布を取得する。コントローラ102は、前記第1の分布と前記第2の分布との乖離量に基づいて前記第1の記憶領域または前記第2の記憶領域の異常を検出する。
これによって、故障したワードラインについて、ホスト2からのアクセス要求に応じて当該ワードラインに対するアクセスを行う前に検出することが可能となる。従って、故障したワードラインに対してアクセスされることによって起こされる応答性能の悪化を抑制することが可能となる。
また、メモリシステム1またはNANDメモリ101の供給者によるFA解析を要することなくワードラインの故障を検出することが可能となる。
(付記1)
複数の記憶領域を備え、前記複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える、不揮発性のメモリと、
前記複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得し、前記複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得し、前記第1の分布と前記第2の分布との乖離量(divergence quantity)である第1の乖離量に基づいて前記第1の記憶領域または前記第2の記憶領域の異常を検出する、コントローラと、
を備えるメモリシステム。
複数の記憶領域を備え、前記複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える、不揮発性のメモリと、
前記複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得し、前記複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得し、前記第1の分布と前記第2の分布との乖離量(divergence quantity)である第1の乖離量に基づいて前記第1の記憶領域または前記第2の記憶領域の異常を検出する、コントローラと、
を備えるメモリシステム。
(付記2)
前記コントローラは、前記複数の記憶領域からn個の対であってそれぞれは前記第1の記憶領域と前記第2の記憶領域の対を選択し、
前記nは、
によって決定され、
前記pは、前記第1の乖離量に許容される最大値であり、
前記Lcは、信頼区間である、
付記1に記載のメモリシステム。
前記コントローラは、前記複数の記憶領域からn個の対であってそれぞれは前記第1の記憶領域と前記第2の記憶領域の対を選択し、
前記nは、
によって決定され、
前記pは、前記第1の乖離量に許容される最大値であり、
前記Lcは、信頼区間である、
付記1に記載のメモリシステム。
(付記3)
前記乖離量は、Kullback-Leibler情報量である、
付記1に記載のメモリシステム。
前記乖離量は、Kullback-Leibler情報量である、
付記1に記載のメモリシステム。
(付記4)
前記コントローラは、
に従ってD(P||Q)を演算し、g(x)およびh(x)は、ともに、xに関する任意の単調増加関数であり、g(0)=h(0)=0を満たす関数であり、前記P(x)は前記第1の分布であり、前記Q(x)は前記第2の分布であり、
前記D(P||Q)を前記乖離量として使用する、
付記1に記載のメモリシステム。
前記コントローラは、
に従ってD(P||Q)を演算し、g(x)およびh(x)は、ともに、xに関する任意の単調増加関数であり、g(0)=h(0)=0を満たす関数であり、前記P(x)は前記第1の分布であり、前記Q(x)は前記第2の分布であり、
前記D(P||Q)を前記乖離量として使用する、
付記1に記載のメモリシステム。
(付記5)
前記第1の記憶領域の疲弊度と前記第2の記憶領域の疲弊度とは類似している、
付記1に記載のメモリシステム。
前記第1の記憶領域の疲弊度と前記第2の記憶領域の疲弊度とは類似している、
付記1に記載のメモリシステム。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、101 NAND型フラッシュメモリ(NANDメモリ)、102 コントローラ、103 CPU、104 RAM、105 ECC回路、110 NANDストレージ、111 アクセス部、112 エラー訂正部、113 Vth分布取得部、114 乖離量演算部、115 管理部、201 周辺回路、202 メモリセルアレイ、300 ブロック、310 ブロックグループ
Claims (8)
- 複数の記憶領域を備え、前記複数の記憶領域のそれぞれは、データに応じてしきい値電圧が設定される複数のメモリセルを備える、不揮発性のメモリと、
前記複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得し、前記複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得し、前記第1の分布と前記第2の分布との乖離量(divergence quantity)である第1の乖離量に基づいて前記第1の記憶領域または前記第2の記憶領域の異常を検出する、コントローラと、
を備えるメモリシステム。 - 前記コントローラは、前記複数の記憶領域それぞれの疲弊度に基づいて前記第1の記憶領域および前記第2の記憶領域を選択する、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記複数の記憶領域を前記疲弊度に応じて1以上のグループに分け、前記1以上のグループのうちの1つから前記第1の記憶領域および前記第2の記憶領域を選択する、
請求項2に記載のメモリシステム。 - 前記コントローラは、前記第1の乖離量がしきい値よりも小さい場合、前記第1の記憶領域および前記第2の記憶領域の使用を禁止せず、前記第1の乖離量が前記しきい値よりも大きい場合、前記第1の記憶領域および前記第2の記憶領域の使用を禁止する、
請求項1から3の何れか一項に記載のメモリシステム。 - 前記コントローラは、
前記第1の乖離量がしきい値よりも小さい場合、前記第1の記憶領域および前記第2の記憶領域の使用を禁止せず、
前記第1の乖離量が前記しきい値よりも大きい場合、前記複数の記憶領域から前記疲弊度に基づいて第3の記憶領域を選択し、前記第3の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第3の分布を取得し、
前記第1の分布と前記第3の分布との乖離量である第2の乖離量が前記しきい値よりも大きい場合、前記第1の記憶領域の使用を禁止し、
前記第2の乖離量が前記しきい値よりも小さい場合、前記第2の記憶領域の使用を禁止する、
請求項2または3に記載のメモリシステム。 - 前記コントローラは、プログラムイレースサイクルの回数、リード動作の回数、およびデータリテンション時間の少なくとも何れかに基づいて前記疲弊度を演算する、
請求項2または3に記載のメモリシステム。 - 前記コントローラは、前記第1の記憶領域に対するリード動作を実行し、前記リード動作によって得られたデータに対してエラー訂正を実行し、エラー訂正が失敗したことに応じて前記第1の分布および前記第2の分布の取得を行う、
請求項1から6の何れか一項に記載のメモリシステム。 - それぞれはデータに応じてしきい値電圧が設定される複数のメモリセルを備える複数の記憶領域のうちの第1の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第1の分布を取得することと、
前記複数の記憶領域のうちの第2の記憶領域が備える複数のメモリセルのしきい値電圧の分布である第2の分布を取得することと、
前記第1の分布と前記第2の分布との乖離量である第1の乖離量に基づいて前記第1の記憶領域または前記第2の記憶領域の異常を検出することと、
を含む方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020050122A JP2021149991A (ja) | 2020-03-19 | 2020-03-19 | メモリシステムおよび方法 |
US17/010,914 US11581052B2 (en) | 2020-03-19 | 2020-09-03 | Memory system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020050122A JP2021149991A (ja) | 2020-03-19 | 2020-03-19 | メモリシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021149991A true JP2021149991A (ja) | 2021-09-27 |
Family
ID=77748794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020050122A Pending JP2021149991A (ja) | 2020-03-19 | 2020-03-19 | メモリシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11581052B2 (ja) |
JP (1) | JP2021149991A (ja) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6335878B1 (en) * | 1998-07-28 | 2002-01-01 | Hitachi, Ltd. | Non-volatile multi-level semiconductor flash memory device and method of driving same |
KR101519626B1 (ko) * | 2009-02-27 | 2015-05-14 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 데이터 처리 방법 |
US8990665B1 (en) * | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US9189313B2 (en) * | 2012-08-27 | 2015-11-17 | Kabushiki Kaisha Toshiba | Memory system having NAND-type flash memory and memory controller with shift read controller and threshold voltage comparison module |
JP2015036999A (ja) | 2013-08-13 | 2015-02-23 | 株式会社東芝 | 不揮発性半導体記憶装置、メモリコントローラ、及びメモリシステム |
CN104572324A (zh) * | 2013-10-11 | 2015-04-29 | 光宝科技股份有限公司 | 固态储存装置及其控制方法 |
US10037285B2 (en) | 2014-01-14 | 2018-07-31 | Georgia Tech Research Corporation | Multi-tiered storage systems and methods for adaptive content streaming |
US9489257B2 (en) * | 2014-09-28 | 2016-11-08 | Apple Inc. | Correcting soft reliability measures of storage values read from memory cells |
US9502129B1 (en) * | 2015-09-10 | 2016-11-22 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
KR102650333B1 (ko) * | 2016-08-10 | 2024-03-25 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치 |
US10546632B2 (en) * | 2017-12-14 | 2020-01-28 | Micron Technology, Inc. | Multi-level self-selecting memory device |
KR102424372B1 (ko) | 2018-03-30 | 2022-07-25 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그것의 동작 방법 |
-
2020
- 2020-03-19 JP JP2020050122A patent/JP2021149991A/ja active Pending
- 2020-09-03 US US17/010,914 patent/US11581052B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210295937A1 (en) | 2021-09-23 |
US11581052B2 (en) | 2023-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11107536B2 (en) | Apparatus for determining data states of memory cells | |
KR101665280B1 (ko) | 메모리 디바이스에서의 에러 정정 동작들 | |
EP3005118B1 (en) | Adaptive operation of three dimensional memory | |
US9092363B2 (en) | Selection of data for redundancy calculation in three dimensional nonvolatile memory | |
US11127476B2 (en) | Memory system controlling a threshold voltage in a read operation and method | |
US10223018B2 (en) | Bad page and bad block management in memory | |
US10545691B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11133071B2 (en) | Charge loss failure mitigation | |
US11735253B2 (en) | Apparatus and methods for programming memory cells responsive to an indication of age of the memory cells | |
KR20150104858A (ko) | 반도체 장치 및 이의 동작 방법 | |
US20210043262A1 (en) | Apparatus for calibrating sensing of memory cell data states | |
US20200019461A1 (en) | Memory system and method for read operation of memory system | |
CN109215716B (zh) | 提高nand型浮栅存储器可靠性的方法及装置 | |
JP2021149991A (ja) | メモリシステムおよび方法 | |
US11960722B2 (en) | Memory device programming technique for increased bits per cell |