JP2021047963A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021047963A JP2021047963A JP2019170739A JP2019170739A JP2021047963A JP 2021047963 A JP2021047963 A JP 2021047963A JP 2019170739 A JP2019170739 A JP 2019170739A JP 2019170739 A JP2019170739 A JP 2019170739A JP 2021047963 A JP2021047963 A JP 2021047963A
- Authority
- JP
- Japan
- Prior art keywords
- read
- plane
- voltage
- memory
- data
- 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
- 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/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
-
- 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
- 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/10—Programming or data input 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/26—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/30—Power supply 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/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- 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/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- 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
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- 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/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/563—Multilevel memory reading aspects
- G11C2211/5631—Concurrent multilevel reading of more than one cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/563—Multilevel memory reading aspects
- G11C2211/5632—Multilevel reading using successive approximation
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
【課題】リード電圧の調整に要する時間を抑制する。【解決手段】メモリシステムは、メモリチップと、メモリコントローラと、を備える。メモリチップは、第1プレーンと第2プレーンとを備える。複数のメモリセルのそれぞれは、複数のビットのデータに対応したしきい値電圧が設定される。メモリコントローラは、複数のメモリセルから複数のビットのうちの一のビットのデータ群を複数点の第1リード電圧を使用することでリードする第1リード処理を、第1プレーンと第2プレーンとに対して並列にかつ第1プレーンと第2プレーンとで複数点の第1リード電圧を異ならせてメモリチップに実行させる。そして、メモリコントローラは、第1プレーンの複数のメモリセルからリードされたデータ群と、第2プレーンの複数のメモリセルからリードされたデータ群と、に基づいて複数点の第1リード電圧を調整する。【選択図】図17
Description
本実施形態は、メモリシステムに関する。
不揮発性のメモリセルを有するメモリシステムが知られている。そのようなメモリシステムにおいては、メモリセルのしきい値電圧とリード電圧との比較に基づいて、そのメモリセルに保持されているデータが判定される。
メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリシステムは、メモリセルのしきい値電圧が変化したとしてもそのメモリセルから正しいデータを得ることができるように、リード電圧を調整することが可能に構成されている。
一つの実施形態は、リード電圧の調整に要する時間を抑制できるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリチップと、メモリコントローラと、を備える。メモリチップは、第1プレーンと第2プレーンとを備える。第1プレーンおよび第2プレーンのそれぞれは、複数のメモリセルと、複数のメモリセルと接続されたワード線と、を備える。複数のメモリセルのそれぞれは、複数のビットのデータに対応したしきい値電圧が設定される。メモリコントローラは、複数のメモリセルから複数のビットのうちの一のビットのデータ群を複数点の第1リード電圧を使用することでリードする第1リード処理を、第1プレーンと第2プレーンとに対して並列にかつ第1プレーンと第2プレーンとで複数点の第1リード電圧を異ならせてメモリチップに実行させる。そして、メモリコントローラは、第1プレーンの複数のメモリセルからリードされたデータ群と、第2プレーンの複数のメモリセルからリードされたデータ群と、に基づいて複数点の第1リード電圧を調整する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、メモリチップ10、およびメモリコントローラ20を備える。本図に示される例では、メモリシステム1は1つのメモリチップ10を備える。メモリシステム1は、2以上のメモリチップ10を備え得る。
図1は、第1の実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、メモリチップ10、およびメモリコントローラ20を備える。本図に示される例では、メモリシステム1は1つのメモリチップ10を備える。メモリシステム1は、2以上のメモリチップ10を備え得る。
メモリチップ10は、データを不揮発に記憶するNAND型フラッシュメモリである。メモリチップ10は、各々がデータを保持する領域であるメモリセルアレイを含み、且つ独立して制御されることが可能な複数のプレーンを備えている。図1の例では、メモリチップ10は、複数のプレーンの一例として、2つのプレーンP0、P1を備えている。メモリチップ10の詳細な構成については後述する。
メモリコントローラ20は、外部の図示せぬホスト機器からの命令に応答して、メモリチップ10に対してリード、ライト、およびイレース等を命令する。
図1に示されるメモリコントローラ20は、CPU(Central Processing Unit)21、RAM(Random Access Memory)22、ECC(Error Checking and Correcting)回路23、NANDインターフェイス回路24、バッファメモリ25、およびホストインターフェイス回路26を備えている。
CPU21は、ファームウェアプログラムに基づいてメモリコントローラ20全体の動作を制御する。
RAM22は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の半導体メモリであり、CPU21の作業領域として使用される。RAM22は、メモリチップ10を管理するためのファームウェアプログラムや、各種の管理テーブル等を保持する。
ECC回路23は、データのエラー訂正処理を行う。具体的には、ECC回路23は、データの書き込み時にライトデータに基づいてパリティを生成する。そしてECC回路23は、データの読み出し時にパリティからシンドロームを生成してエラーを検出し、検出したエラーを訂正する。
NANDインターフェイス回路24は、メモリチップ10と接続され、メモリチップ10との通信を司る。例えばNANDインターフェイス回路24は、メモリチップ10との間で入出力信号I/Oを送信および受信する。またNANDインターフェイス回路24は、メモリチップ10に対する各種制御信号を送信し、メモリチップ10からレディ/ビジー信号RBを受信する。信号RBは、メモリチップ10がレディ状態であるか、ビジー状態であるかをメモリコントローラ20に通知する信号である。レディ状態はメモリチップ10がメモリコントローラ20からコマンドを受付可能な状態であることを示し、ビジー状態はメモリチップ10がコマンドを受付不可能な状態であることを示している。
バッファメモリ25は、メモリコントローラ20がメモリチップ10およびホスト機器から受信したデータ等を一時的に保持する。
ホストインターフェイス回路26は、図示せぬホストバスを介してホスト機器と接続され、ホスト機器との通信を司る。例えばホストインターフェイス回路26は、ホスト機器から受信した命令およびデータをそれぞれ、CPU21およびバッファメモリ25に転送する。
図1に示されるように、メモリチップ10は、プレーンP0、プレーンP1、および周辺回路14を備えている。プレーンP0は、メモリセルアレイ11A、センスアンプモジュール12A、およびロウデコーダ13Aを備えている。プレーンP1は、メモリセルアレイ11B、センスアンプモジュール12B、およびロウデコーダ13Bを備えている。
なお、メモリセルアレイ11Aおよび11Bを総称して、メモリセルアレイ11と表記することがある。また、センスアンプモジュール12Aおよび12Bを総称して、センスアンプモジュール12と表記することがある。また、ロウデコーダ13Aおよび13Bを総称して、ロウデコーダ13と表記することがある。
メモリセルアレイ11Aおよび11Bは、各々がビット線およびワード線に関連付けられた複数の不揮発性メモリセルを含む。メモリセルアレイ11の詳細な構成については後述する。
センスアンプモジュール12Aおよび12Bはそれぞれ、メモリセルアレイ11Aおよび11Bに対応して設けられている。センスアンプモジュール12は、メモリセルアレイ11からデータを読み出し、読み出したデータをメモリコントローラ20に出力する。またセンスアンプモジュール12は、メモリコントローラ20から受け取ったライトデータを、メモリセルアレイ11に転送する。なお、センスアンプモジュール12はデータラッチ(後述するデータラッチXDLC)を備え、このデータラッチが周辺回路14とのデータの受け渡しに使用される。
ロウデコーダ13Aおよび13Bはそれぞれ、メモリセルアレイ11Aおよび11Bに対応して設けられている。ロウデコーダ13は、リード動作およびライト動作を行う対象のメモリセルに対応するワード線を選択する。そしてロウデコーダ13は、選択したワード線とそれ以外の非選択のワード線にそれぞれ所望の電圧を印加する。
以上で説明されたプレーンは、独立してリード動作、ライト動作、およびイレース動作を実行することが可能な単位となる。具体的には、メモリチップ10は、2つのプレーンのうち一方のプレーンに対してのみリード動作、ライト動作、又はイレース動作を実行することが可能であり、一方のプレーンに対してリード動作、ライト動作、又はイレース動作を実行している間に他方のプレーンに対するリード動作、ライト動作、又はイレース動作を実行することも可能である。つまりプレーンは、リード動作、ライト動作、およびイレース動作の対象となる最小単位であり、これらの動作はプレーン毎に行われてもよいし、複数のプレーンに対して並行して行われてもよい。尚、プレーンの構成は上記に限定されず、各々が少なくともメモリセルアレイ11を備えていればよい。
次に、図2を用いてプレーンP0およびプレーンP1を制御する周辺回路14の詳細な構成について説明する。図2はメモリチップ10のブロック図であり、各プレーンを制御する周辺回路14の構成と、メモリチップ10およびメモリコントローラ20間で送受信される信号の一例が示されている。
図2に示すように周辺回路14は、ロジック制御回路30、入出力回路31、レジスタ32、シーケンサモジュール36、レディ/ビジー制御回路37、電圧生成回路38、およびCGドライバモジュール39を含んでいる。
ロジック制御回路30は、メモリコントローラ20から各種制御信号を受信し、入出力回路31およびシーケンサモジュール36に転送する。この制御信号としては、例えばチップイネーブル信号/CE、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号/WE、リードイネーブル信号/RE、およびライトプロテクト信号/WPが使用される。信号/CEは、メモリチップ10をイネーブルにするための信号である。信号CLEは、アサートされている信号CLEと並行してメモリチップ10に入力される信号がコマンドCMDであることを入出力回路31に通知する信号である。信号ALEは、アサートされている信号ALEと並行してメモリチップ10に入力される信号がアドレス情報ADDであることを入出力回路31に通知する信号である。信号/WEおよび/REはそれぞれ、例えば入出力信号I/Oの入力および出力を入出力回路31に指示する信号である。信号/WPは、例えば電源のオンオフ時にメモリチップ10を保護状態するための信号である。
入出力回路31は、メモリコントローラ20との間で例えば8ビット幅の入出力信号I/O(I/O1〜I/O8)を送信および受信する。入出力回路31がメモリコントローラ20に送信する入出力信号I/Oとしては、例えばリードデータDATが挙げられる。一方で、入出力回路31がメモリコントローラ20から受信する入出力信号I/Oとしては、例えばコマンドCMD、アドレス情報ADD、およびライトデータDATが挙げられる。また入出力回路31は、例えばメモリコントローラ20から受信したライトデータDATをセンスアンプモジュール12に転送し、センスアンプモジュール12から転送されたリードデータDATをメモリコントローラ20に送信する。
レジスタ32は、パラメータレジスタ33Aおよび33B、アドレスレジスタ34、コマンドレジスタ35を含む。パラメータレジスタ33Aおよび33Bを総称して、パラメータレジスタ33と表記することがある。
パラメータレジスタ33Aおよび33Bは、パラメータPRMを保持する。パラメータレジスタ33Aは、プレーンP0に対応し、パラメータレジスタ33Bは、プレーンP1に対応する。パラメータレジスタ33に格納されるパラメータの値は、後述するセットフィーチャコマンドシーケンスによって設定される。パラメータレジスタ33は、入出力回路31からパラメータデータPRMを受け取り、このパラメータデータPRMを保持する。そして、パラメータデータPRMは、種々の動作に使用される。
アドレスレジスタ34は、入出力回路31からアドレス情報ADDを受け取り、このアドレス情報ADDを保持する。そしてアドレスレジスタ34は、アドレス情報ADDに含まれたカラムアドレスCA、ブロックアドレスBA、およびページアドレスPAをそれぞれ、センスアンプモジュール12、ロウデコーダ13、およびCGドライバモジュール39に転送する。
コマンドレジスタ35は、入出力回路31からコマンドCMDを受け取り、このコマンドCMDを保持する。そしてコマンドレジスタ35に保持されたコマンドCMDに基づいて、シーケンサモジュール36が各種動作を実行する。
シーケンサモジュール36は、メモリチップ10全体の動作を制御する。具体的には、シーケンサモジュール36は、コマンドレジスタ35から転送されたコマンドCMDに基づいてセンスアンプモジュール12、ロウデコーダ13、電圧生成回路38、およびCGドライバモジュール39等を制御し、リード動作等を実行する。
シーケンサモジュール36は、プレーンP0およびP1に対してリード動作、ライト動作、およびイレース動作等の各種動作を実行することが可能である。
レディ/ビジー制御回路37は、シーケンサモジュール36の動作状態に基づいたレディ/ビジー信号RBを生成し、これらの信号をメモリコントローラ20に送信する。
電圧生成回路38は、シーケンサモジュール36の指示に基づいて所望の電圧を生成する。そして電圧生成回路38は、生成した電圧をメモリセルアレイ11、センスアンプモジュール12、およびCGドライバモジュール39に供給する。
CGドライバモジュール39は、受信したページアドレスPAに基づいて、電圧生成回路38から供給された電圧をロウデコーダ13Aおよび13Bに転送する。また、CGドライバモジュール39は、電圧生成回路38から供給された電圧を調整してロウデコーダ13Aおよび13Bに転送することができる。
電圧の調整の一例としては、リード動作の際に選択ワード線に対して印加される電圧(リード電圧)の調整が挙げられる。詳細は後述するが、メモリチップ10は、リード電圧をシフトさせてリード動作を行うシフトリードを実行することが可能である。パラメータレジスタ33には、リード電圧のデフォルト値からの差分が、パラメータデータPRMとして設定され得る。当該差分を、シフト量と表記する。CGドライバモジュール39は、デフォルト値からパラメータレジスタ33に格納されているシフト量だけシフトさせて得られる値の電圧を生成し、生成した電圧をロウデコーダ13に供給することができる。
ここで、CGドライバモジュール39は、ロウデコーダ13Aに供給される電圧を、パラメータレジスタ33Aに格納されたパラメータに基づいて調整することができる。また、CGドライバモジュール39は、ロウデコーダ13Bに供給される電圧を、パラメータレジスタ33Bに格納されたパラメータに基づいて調整することができる。つまり、CGドライバモジュール39は、プレーン毎に異なるリード電圧を生成することができる。
このように、本実施形態に係るメモリチップ10は、ロウデコーダ13およびセンスアンプモジュール12をそれぞれ有する複数のプレーンを有する。これによって、メモリチップ10は、複数のプレーンに対して並列に各種動作を実行させることが可能である。また、メモリチップ10は、複数のプレーンに並列にリード動作を実行させる際には、プレーン毎に異なるリード電圧を使用させることが可能である。
以降の説明では、複数のプレーンが並列にリード動作を実行することを、マルチプレーンリード動作と表記する。マルチプレーンリード動作において各プレーンで実行されるリード動作は、デフォルトのリード電圧を用いたリード動作であってもよいし、シフトされたリード電圧を用いたリード動作(即ちシフトリード)であってもよい。また、マルチプレーンリード動作において各プレーンで実行されるリード動作では、それぞれ異なるリード電圧が使用されてもよい。また、マルチプレーンリード動作において複数のプレーンで実行されるリード動作は、互いに同期したタイミングで開始されてもよいし、互いに非同期のタイミングで開始されてもよい。
また、マルチプレーンリード動作において各プレーンで実行されるリード動作は、シングルステートリードであってもよい。シングルステートリードについては後述する。
また、単一のプレーンが他のプレーンと重ならないタイミングでリード動作を実行することをシングルプレーンリード動作と表記する。
また、複数のプレーンが並列にライト動作を実行することを、マルチプレーンライト動作と表記する。
続いて、メモリセルアレイ11の構成について説明する。メモリセルアレイ11は、複数のブロックBLKによって構成されている。図3は、第1の実施形態にかかる1つのブロックBLKの回路構成の一例を示す図である。
ブロックBLKは、例えば4個のストリングユニットSUを備えている。ストリングユニットSUの各々は、m個のNANDストリングNSを備えている。このNANDストリングNSの個数は、ビット線BLの本数に対応している。なお、ブロックBLKが備えるストリングユニットSUの数はこれに限定されない。また、1つのNANDストリングNSが含むメモリセルトランジスタMTの数はこれに限定されない。
ストリングユニットSU0〜SU3内の選択トランジスタST1のゲートはそれぞれ、セレクトゲート線SGD0〜SGD3に共通接続されている。同一ブロック内の選択トランジスタST2のゲートは、セレクトゲート線SGSに共通接続されている。同様に、同一ブロック内のメモリセルトランジスタMT0〜MT7の制御ゲートはそれぞれ、ワード線WL0〜WL7に共通接続されている。
また、メモリセルアレイ11内において同一列にあるNANDストリングNSの選択トランジスタST1のドレインは、ビット線BLに共通接続されている。つまりビット線BLは、複数のブロックBLK間で同一列にあるNANDストリングNSを共通に接続している。さらに、複数の選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
メモリセルトランジスタMTは、制御ゲートおよび電荷蓄積層を備え、データを不揮発に保持する。またメモリセルトランジスタMTは、2ビット以上のデータを記憶することができる。
以上の構成において、1つのストリングユニットSUで共通のワード線WLに接続された複数のメモリセルトランジスタMTが保持する1ビットのデータの集合を「ページ」と呼ぶ。従って、例えばメモリセルトランジスタMTに複数ビットのデータが格納される場合、1本のワード線WLに接続された複数のメモリセルトランジスタMTの集合には、複数ページ分のデータが格納される。リード動作およびライト動作は、ページ毎に行われ得る。またはリード動作およびライト動作は、ワード線毎に行われ得る。
図4は、第1の実施形態にかかるメモリセルアレイ11の断面の一例を示す図である。本図に示されるように、メモリセルアレイ11は、P型ウェル領域50、配線層51〜56、複数の半導体ピラーMH、および複数のコンタクトプラグLIを備えている。
P型ウェル領域50は、半導体基板の表面内に形成されている。P型ウェル領域50の上方には、配線層51〜53が順に積層されている。この配線層51〜53はそれぞれ、セレクトゲート線SGS、ワード線WL、およびセレクトゲート線SGDとして機能する。つまり配線層51〜53の層数はそれぞれ、セレクトゲート線SGS、ワード線WL、およびセレクトゲート線SGDの本数に対応している。
セレクトゲート線SGSおよびSGDにそれぞれ対応する配線層51および53は、図4に示されるように複数設けられてもよい。また、配線層51〜53は、X方向とY方向に広がった板状に設けられている。
複数の半導体ピラーMHは、配線層53の上面からP型ウェル領域50の上面に達するように形成されている。つまり半導体ピラーMHは、Z方向に沿って配線層51〜53を通過するように設けられている。これら半導体ピラーMHの側面には、ブロック絶縁膜57、絶縁膜(電荷蓄積層)58、およびトンネル酸化膜59が順に形成されている。また半導体ピラーMHにおいて、トンネル酸化膜59より内側には、導電性の材料を含む半導体材料60が埋め込まれている。
配線層53および半導体ピラーMHの上方には、ビット線BLに対応する配線層54が形成されている。ビット線BLは、対応する半導体ピラーMHと接続されている。尚、ビット線BLと対応する半導体ピラーMHとの間には、導電性の材料を含むコンタクトプラグを形成してもよい。
配線層53および54の間には、ソース線SLおよびウェル線CPWELLにそれぞれ対応する配線層55および56が形成されている。ソース線SLは、コンタクトプラグLIを介して、ウェル領域50の表面内に形成されたn+不純物拡散領域61に接続されている。ウェル線CPWELLは、コンタクトプラグLIを介して、ウェル領域50の表面内に形成されたp+不純物拡散領域62に接続されている。尚、コンタクトプラグLIは、X方向とZ方向に広がった板状に設けられている。
以上の構成において、1つの半導体ピラーMHが、1つのNANDストリングNSに対応している。具体的には、セレクトゲート線SGDおよびSGSと、半導体ピラーMHとの交点がそれぞれ選択トランジスタST1およびST2に対応している。同様に、ワード線WLと半導体ピラーMHとの交点がメモリセルトランジスタMTに対応している。
また、以上の構成はX方向に複数配列される。例えば、1つのストリングユニットSUは、X方向に配列する複数のNANDストリングNSの集合によって構成される。同一のブロックBLK内に複数のストリングユニットSUを設ける場合、セレクトゲート線SGDに対応する配線層53は、ストリングユニットSU間で分離される。
なお、最下層の配線層51およびトンネル酸化膜59は、n+型不純物拡散領域61の近傍まで設けられている。これにより、選択トランジスタST2がオン状態になると、NANDストリングNSおよびn+型不純物拡散領域61間に電流経路が形成される。
以降では、メモリセルトランジスタMTを、単に、メモリセル、と表記する。
前述したように、メモリセルは、2ビット以上のデータを記憶し得る。図5は、第1の実施形態のメモリシステム1でのライト動作の結果、1つのメモリセル当たり4ビットのデータが格納されたメモリセルのしきい値電圧の分布を示す。図5において、横軸は、しきい値電圧を示し、縦軸は、メモリセルの数、つまりビットカウントを示している。
各メモリセルのしきい値電圧は、保持されるデータに応じた値を有する。メモリセル当たり4ビットの記憶の場合、各メモリセルは、16個のしきい値電圧のうちのいずれかを有し得る。16個のしきい値電圧は、“1111”データ、“1110”データ、“1010”データ、“1000”データ、“1001”データ、“0001”データ、“0000”データ、“0010”データ、“0110”データ、“0100”データ、“1100”データ、“1101”データ、“0101”データ、“0111”データ、“0011”データ、および“1011”データをそれぞれ保持している状態である。“1111”データ、“1110”データ、“1010”データ、“1000”データ、“1001”データ、“0001”データ、“0000”データ、“0010”データ、“0110”データ、“0100”データ、“1100”データ、“1101”データ、“0101”データ、“0111”データ、“0011”データ、および“1011”データをそれぞれ保持している状態のメモリセルは、それぞれ、Er、A、B、C、D、E、F、G、H、I、J、K、L、M、N、およびOステートにあると称される。Erステート、Aステート、Bステート、Cステート、Dステート、Eステート、Fステート、Gステート、Hステート、Iステート、Jステート、Kステート、Lステート、Mステート、Nステート、およびOステートにあるメモメモリセルは、この順でより高いしきい値電圧を有する。
ある同じ4ビットデータを保持する複数のメモリセルであっても、メモリセルの特性のばらつき等に起因して、互いに相違するしきい値電圧を有し得る。なお、図5および以降の図では、しきい値電圧の分布が連続的な曲線で示されているが、実際には、メモリセルの数は、離散的である。
リード対象のメモリセルによって保持されているデータの判別のために、当該メモリセルのステートが判断される。ステートの判断のために、リード電圧VA、VB、VC、VD、VE、VF、VG、VH、VI、VJ、VK、VL、VM、VN、およびVOが用いられる。以下、リード電圧VA、VB、VC、VD、VE、VF、VG、VH、VI、VJ、VK、VL、VM、VN、およびVOを含め、メモリセルのステートの判断のためにリード対象のメモリセルに印加される或る大きさの電圧は、リード電圧VCGRと称される場合がある。つまり、メモリセルに格納されたデータを判定するために、複数点(ここでは15点)のリード電圧が用意されている。
リード電圧VAは、Erステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のAステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VBは、書き込まれた直後のAステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のBステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VCは、書き込まれた直後のBステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のCステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VDは、書き込まれた直後のCステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のDステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VEは、書き込まれた直後のDステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のEステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VFは、書き込まれた直後のEステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のFステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VGは、書き込まれた直後のFステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のGステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VHは、書き込まれた直後のGステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のHステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VIは、書き込まれた直後のHステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のIステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VJは、書き込まれた直後のIステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のJステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VKは、書き込まれた直後のJステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のKステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VLは、書き込まれた直後のKステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のLステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VMは、書き込まれた直後のLステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のMステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VNは、書き込まれた直後のMステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のNステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VOは、書き込まれた直後のNステート中のメモリセルの最も高いしきい値電圧より高く、書き込まれた直後のOステート中のメモリセルの最も低いしきい値電圧より低い。
リード電圧VX(Xは、A、B、C、D、E、F、G、H、I、J、K、L、M、N、またはO)を用いたリードを、Xリードと表記する。また、Xリードのように、単一のリード電圧を用いてメモリセルの状態をセンスする処理を、シングルステートリードと表記する。Xリードによって得られたリードデータを、リードデータXRと表記する。
リード対象のメモリセル(選択メモリセル)のしきい値電圧がどの範囲にあるかが、このメモリセルのステートの割り出しに用いられる。選択メモリセルのしきい値電圧の範囲の割り出しのために、選択メモリセルが、或るリード電圧VCGRを超えているか否かが判断される。リード電圧VCGR以上のしきい値電圧を有するメモリセルは、制御ゲートにおいてリード電圧VCGRを受け取ってもオフを維持する。一方、リード電圧VCGR未満のしきい値電圧を有するメモリセルは、制御ゲートにおいてリード電圧VCGRを受け取っていると、オンしている。電圧VREADは、非リード対象のメモリセルのワード線WLに印加され、いずれのステートにあるメモリセルのしきい値電圧より高い。
1つのメモリセルに保持される4ビットのデータ値のうち、最上位(1桁目)のビットをトップビット、2桁目のビットをアッパービット、3桁目のビットをミドルビット、4桁目のビットをロワービットと表記する。同一のワード線WLに接続されたメモリセルのトップビットの集合を、トップページと表記する。同一のワード線WLに接続されたメモリセルのアッパービットの集合を、アッパーページと表記する。同一のワード線WLに接続されたメモリセルのミドルビットの集合を、ミドルページと表記する。同一のワード線WLに接続されたメモリセルのロワービットの集合を、ロワーページと表記する。
各ページのデータは、15点のリード電圧のうちの複数を用いることで割り出される。例が以下に示される。
ロワービットに関しては、当該ビットのデータを保持する選択メモリセルのしきい値電圧が、リード電圧VA未満の範囲、リード電圧VD以上かつリード電圧VF未満の範囲、またはリード電圧VK以上の範囲にあると判断されると、ロワービットのデータは“1”データであると判断される。一方、当該ビットのデータを保持する選択メモリセルのしきい値電圧が、リード電圧VA以上かつリード電圧VD未満の範囲、またはリード電圧VF以上かつリード電圧VK未満にあると判断されると、ロワービットのデータは“0”データであると判断される。選択メモリセルのステートの判断のために、“0”データと判断されるステートと“1”データと判断されるステートの間の境界のリード電圧VCGRが使用される。ロワーページリードの場合、例えば、Aリード、Dリード、Fリード、およびKリードが使用される。そして、リードデータAR、リードデータDR、リードデータFR、およびリードデータKRの論理演算によって、選択メモリセルがどのステートにあるかが判断されることができる。
他のページについても同様である。ミドルページデータは、例えば、Cリード、Gリード、Iリード、およびMリードを用いて割り出される。アッパーページデータは、例えば、Bリード、Hリード、およびNリードを用いて割り出される。トップページデータは、例えば、Eリード、Jリード、Lリード、およびOリードを用いて割り出される。
以下、或るページに保持されているデータの割り出しに必要な複数のリードは、当該ページについて必要な境界リードと称される。例えばロワーページの割り出しには、境界リードとして、Aリード、Dリード、Fリード、およびKリードが実行される。
境界リードの結果に基づいてデータを割り出す処理は、センスアンプモジュール12によって実行される。
図6は、第1の実施形態のセンスアンプモジュール12中の要素および接続を示す。センスアンプモジュール12は、m個のセンスアンプ回路SAC、複数のデータラッチDL(DL0、DL1、DL2、…DLq(qは自然数))、m個の演算回路LC、1つのデータラッチXDLCを含む。iが0からqの各々のケースについて、データラッチDLiは、m個のデータラッチ回路DLiCを含む。データラッチXDLCは、m個のデータラッチ回路XDLCを含む。データラッチ回路DLCおよびXDLCは、データを一時的に保持する。
各ビット線BLは、1つのセンスアンプ回路SAC、(q+1)個のデータラッチ回路DL0C、DL1C、DL2C、…DLqC、1つの演算回路LC、1つのデータラッチ回路XDLCと接続されている。
各センスアンプ回路SACは、データのリードの間、当該センスアンプ回路SACと接続された1つのビット線BLを介して1つの選択メモリセルと電気的に接続される。そして、各センスアンプ回路SACは、選択メモリセルのしきい値電圧に基づいて定まる大きさの電圧を、当該センスアンプ回路SAC中のノード上でセンスし、センスの結果に基づいて、当該センスアンプ回路SACと電気的に接続されたメモリセルが2つの状態のいずれに属するかを判断する。メモリセルの2つの状態は、“0”データまたは“1”データとして表現され、各センスアンプ回路SACは、リードデータが“0”データであるかまたは“1”データであるかを、当該センスアンプ回路SACと接続されたいずれかのデータラッチ回路DLCにおいて保持する。
演算回路LCは、当該演算回路LCと接続されたデータラッチ回路DLCおよびXDLC中のデータに対して論理演算を行うことができる。論理演算は、否定(NOT)演算、論理和(OR)演算、論理積(AND)演算、排他的論理和(XOR)演算、否定排他的論理和(XNOR)演算を含む。
例えば、リード対象のページがロワーページの場合、4つの境界リード、即ちAリード、Dリード、Fリード、およびKリードが実行される。センスアンプ回路SACは、4つの境界リードによって得られた4つのセンス結果(センス値)をそれぞれ異なるデータラッチ回路DLCに格納し得る。4つのセンス結果は、具体的には、リードデータAR、リードデータDR、リードデータFR、およびリードデータKRである。演算回路LCは、それぞれ異なるデータラッチ回路DLCに格納されたリードデータAR、リードデータDR、リードデータFR、およびリードデータKRに基づいて種々の論理演算を行うことによって、ロワーページのデータを取得し、取得されたロワーページのデータをデータラッチXDLCに格納する。
各しきい値分布は、時間経過とともに、または、アクセス毎に、変化し得る。
図7は、変化後の各しきい値分布の例を示す図である。本図では、説明を簡単にするために、AステートとBステートとのみ示している。Aステートのしきい値分布の裾野とBステートのしきい値分布の裾野とが重なり合っている。言い換えると、Aステートの最大値がリード電圧VBを超えており、かつ、Bステートの最小値がリード電圧VBを下回っている。しきい値電圧がAステートに属し、かつ、しきい値電圧がリード電圧VBよりも大きい、メモリセルがリードされた場合、そのメモリセルのしきい値電圧はBステートに属するとして認識される。即ち、“1110”としてプログラムされたデータが“1010”としてリードされる。しきい値電圧がBステートに属し、かつ、しきい値電圧がリード電圧VBよりも小さい、メモリセルがリードされた場合、そのメモリセルのしきい値電圧はAステートに属するとして認識される。即ち、“1010”としてプログラムされたデータが“1110”としてリードされる。プログラム時から変化したデータは、ECC回路23によってエラーとして検出され、訂正が試みられる。
しかしながら、ECC回路23の訂正能力には上限が存在する。メモリコントローラ20は、エラーとして検出されるビットの数(以降、エラー数)を出来るだけ少なくするために、境界リードに使用されるリード電圧をシフトさせることができる。メモリコントローラ20は、エラー数を最小にするリード電圧の値を、境界リードで使用されるリード電圧毎に推定する。エラー数を最小にするリード電圧を推定する処理を、推定処理と表記する。また、エラー数を最小にするリード電圧を、最適リード電圧と表記する。
図7において、Aステートのしきい値分布とBステートのしきい値分布との交点における電圧Vb_crossがリード電圧として使用された場合、データ“1110”がデータ“1010”としてリードされるエラーの数と、データ“1010”がデータ“1110”としてリードされるエラーの数と、の合計の数が最小になる。即ち、電圧Vb_crossは、Bリードの最適リード電圧である。以降、Xリードの最適リード電圧をVX’(但しXは、A、B、C、D、E、F、G、H、I、J、K、L、M、N、またはO)と表記する。
メモリコントローラ20は、各最適リード電圧を推定し、各最適リード電圧の推定値を用いたリードをメモリチップ10に指示することができる。なお、各最適リード電圧の推定値は、各最適リード電圧と必ずしも一致していなくてもよい。メモリチップ10は、メモリコントローラ20から設定された各最適リード電圧の推定値を用いてメモリセルアレイ11に対するリード動作を行う。以降、特にことわりがない限り、最適リード電圧の推定値を、単に、最適リード電圧と表記する。また、境界リードで使用される各リード電圧をシフトさせて実行されるリード動作を、シフトリードと表記する。
なお、メモリコントローラ20は、任意のタイミングで推定処理を実行することができる。また、メモリコントローラ20は、任意のタイミングをトリガとして推定処理を開始することができる。本実施形態では一例として、メモリコントローラ20は、ECC回路23がエラー訂正に失敗した場合に、推定処理を実行する。
次に、推定処理の概念について説明する。
図8、図9、および図10を用いて、各リード電圧を推定する推定処理を説明する。図8、図9、および図10では、一例として、ロワーページのリード動作で使用される各リード電圧、つまりリード電圧VA、VD、VF、およびVKの最適値を推定する処理を説明する。ロワーページのリード動作で使用される各リード電圧を推定する処理を、ロワー推定処理と表記する。
ロワー推定処理においては、各リード電圧を変更(シフト)させながら複数回のシフトリードが実行される。ロワー推定処理に含まれる各シフトリードは、ロワーページを対象とした通常のリード動作と同様であり、具体的には、Aリード、Dリード、Fリード、およびKリードを実行することによってロワービットのデータを判定する処理である。ただし、複数回のシフトリードの夫々においては、リード電圧VA、VD、VF、およびVKは、それぞれシフトせしめられる。
図8は、ロワー推定処理において使用される各種リード電圧VCGRを示している。図8の例では、5回のシフトリードが実行される。5回のシフトリードのそれぞれを、1以上5以下の重複しない整数xを用いて、SFTxと表記する。シフトリードSFTxにおいては、リード電圧VAとしてShift_axが、リード電圧VDとしてShift_dxが、リード電圧VFとしてShift_fxが、リード電圧VKとしてShift_kxが、使用される。
なお、第1の実施形態では、一例として、1回のシフトリードでは、リード電圧VA、VD、VF、およびVKのそれぞれは、リード電圧VA、VD、VF、およびVKの基準とされる値から同一の量だけシフトされることとする。以降、シフト量は、特にことわりが無い限り、基準とされる値からのシフト量を意味することとする。また、5回のシフトリードに適用されるシフト量の間隔は、等間隔であることとする。
ロワー推定処理においては、シフトリードの他に、マスクデータを取得するためのリードが実行される。シフトリードのリードデータは、複数のシングルステートリードのセンス結果を用いた演算によって生成される。マスクデータは、シフトリードのリードデータから、夫々のシングルステートリードのセンス結果を分離するために使用される。マスクデータを取得するためのリードを、マスクデータリード、と表記する。
マスクデータリードにおいては、選択ワード線WLに特定の電圧が印加される。特定の電圧とは、互いに隣接する2つの推定対象の最適リード電圧の間の電圧である。例えば、互いに隣接する2つの推定対象の最適リード電圧から十分に遠い電圧が特定の電圧として採用される。換言すると、ロワービットを判定するための4つのリード電圧AR、DR、FR、およびKRのうちの任意の1つの第1のリード電圧と、当該第1のリード電圧の次に大きい第2のリード電圧と、の間に設定された電圧が、特定の電圧として採用される。
ロワーページリードでは、リード電圧VA、VD、VF、およびVKが使用される。よって、ロワー推定処理においては、一例では、マスクデータリードとして、Cリード、Eリード、およびHリードが実行される。即ち、Cリードのセンス結果CR、Eリードのセンス結果ER、およびHリードのセンス結果HRが、マスクデータとして使用される。
ロワー推定処理においては、各メモリセルのしきい値電圧が存在し得る範囲は、5回のシフトリードで使用される各リード電圧と、Cリードで使用されるリード電圧VCと、Eリードで使用されるリード電圧VEと、Hリードとで使用されるリード電圧VHと、によって、合計24個の区分(図8の(1)〜(24))に分けられる。
図9は、5回のシフトリード(SFT1〜SFT5)によって得られるデータ値と、Cリード、Eリード、およびHリードのセンス結果とを、区分毎に示している。
あるメモリセルにかかるCリードのセンス結果CRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がErステートとAステートとの境界付近の区分(ここでは区分(1)〜(6))に含まれていることを示す。あるメモリセルにかかるCリードのセンス結果CRが“0(メモリセルがオフ状態)”であることは、そのメモリセルのしきい値電圧が区分(1)〜(6)に含まれていないことを示す。即ち、5回のシフトリードのリードデータに対してCリードのセンス結果CRを用いてマスクすることによって、区分(1)〜(6)にしきい値電圧が含まれるメモリセルと、区分(1)〜(6)にしきい値電圧が含まれていないメモリセルと、を分離することが可能である。
区分(1)〜(6)においては、シフトリードによるリードデータが“1”であるか否かは、Aリードのセンス結果ARのみに基づいて決定される。Aリードのセンス結果ARが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Aリードのセンス結果ARが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Cリードのセンス結果CRとの論理積(AND)演算を行うことで、SFT1〜SFT5のそれぞれによって得られたリードデータからAリードのセンス結果ARを取得することができる。
あるメモリセルにかかるCリードのセンス結果CRが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるEリードのセンス結果ERが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がCステートとDステートとの境界付近の区分(ここでは区分(7)〜(12))に含まれていることを示す。あるメモリセルにかかるCリードのセンス結果CRが“0(メモリセルがオフ状態)”ではないか、または、そのメモリセルにかかるEリードのセンス結果ERが“1(メモリセルがオン状態)”ではないことは、そのメモリセルのしきい値電圧が区分(7)〜(12)に含まれていないことを示す。即ち、5回のシフトリードのリードデータに対して、Cリードのセンス結果CRとEリードのセンス結果ERとの排他的論理和(CR^ER)を用いてマスクすることによって、区分(7)〜(12)にしきい値電圧が含まれるメモリセルと、区分(7)〜(12)にしきい値電圧が含まれていないメモリセルと、を分離することが可能である。
区分(7)〜(12)においては、シフトリードによるリードデータが“1”であるか否かは、Dリードのセンス結果DRのみに基づいて決定される。Dリードのセンス結果DRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Dリードのセンス結果DRが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Cリードのセンス結果CRとEリードのセンス結果ERとの排他的論理和(CR^ER)との論理積(AND)演算を行い、論理積演算の結果を反転することによって、SFT1〜SFT5のそれぞれによって得られたリードデータからDリードのセンス結果DRを取得することができる。
あるメモリセルにかかるEリードのセンス結果ERが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるHリードのセンス結果HRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がEステートとFステートとの境界付近の区分(ここでは区分(13)〜(18))に含まれていることを示す。あるメモリセルにかかるEリードのセンス結果ERが“0(メモリセルがオフ状態)”ではないか、または、そのメモリセルにかかるHリードのセンス結果HRが“1(メモリセルがオン状態)”ではないことは、そのメモリセルのしきい値電圧が区分(13)〜(18)に含まれていないことを示す。即ち、5回のシフトリードのリードデータに対して、Eリードのセンス結果ERとHリードのセンス結果HRとの排他的論理和(ER^HR)を用いてマスクすることによって区分(13)〜(18)にしきい値電圧が含まれるメモリセルと、区分(13)〜(18)にしきい値電圧が含まれていないメモリセルと、を分離することが可能である。
区分(13)〜(18)においては、シフトリードによるリードデータが“1”であるか否かは、Fリードのセンス結果FRのみに基づいて決定される。Fリードのセンス結果FRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Fリードのセンス結果FRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Eリードのセンス結果ERとHリードのセンス結果HRとの排他的論理和(ER^HR)との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからFリードのセンス結果FRを取得することができる。
あるメモリセルにかかるHリードのセンス結果HRが“0(メモリセルがオフ状態)”であることは、そのメモリセルのしきい値電圧がJステートとKステートとの境界付近の区分(ここでは区分(19)〜(24))に含まれていることを示す。あるメモリセルにかかるHリードのセンス結果HRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧が区分(19)〜(24)に含まれていないことを示す。即ち、5回のシフトリードのリードデータに対して、Hリードのセンス結果HRを用いてマスクすることによって、区分(19)〜(24)にしきい値電圧が含まれるメモリセルと、区分(19)〜(24)にしきい値電圧が含まれていないメモリセルと、を分離することが可能である。
区分(19)〜(24)においては、シフトリードによるリードデータが“1”であるか否かは、Kリードのセンス結果KRのみに基づいて決定される。Kリードのセンス結果KRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Kリードのセンス結果FRが“0(メモリセルがオフ状態)”であれば、リードデータは“1とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Hリードのセンス結果HRの反転との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからKリードのセンス結果KRを取得することができる。
以降、マスクデータを用いることによってシフトリードのリードデータから分離された各センス結果XRを、分離データXRと表記する。また、シフトリードにおいてリード電圧として使用される電圧を、シフトリード電圧と表記することがある。また、シフトリードSFTiによって得られる分離データとしてのセンス結果XRを、センス結果XRi、または分離データXRi、と表記することがある。
対象のワード線WLに属する複数のメモリセルは、シフトリード毎の各分離データに基づいて夫々の区分に分類される。そして、各区分に分類されたメモリセルの数が区分毎にカウントされる。区分ごとのカウントは、具体的には、次のように実行される。即ち、ある区分の両側のシフトリード電圧を用いて実行された2回のシフトリードによって得られた2つの分離データ間で、値が異なるメモリセルがカウントされる。カウントによって得られる結果が、その区分に分類されたメモリセルの数に該当する。
例えば、Shift_aiを用いたシフトリードによって得られた分離データとしてのセンス結果ARiと、Shift_a(i+1)を用いたシフトリードによって得られた分離データとしてのセンス結果AR(i+1)と、のそれぞれに含まれる“1(メモリセルがオン状態)”の数がカウントされる。この処理は、Shift_aiをリード電圧として用いた場合にオン状態となるメモリセルの数と、Shift_a(i+1)をリード電圧として用いた場合にオン状態となるメモリセルの数と、をそれぞれカウントしていることに相当する。カウント後、センス結果ARiに含まれる“1”の数と、センス結果AR(i+1)に含まれる“1”の数と、の差分が演算され、演算された差分が、Shift_aiとShift_a(i+1)との間の区分に分類されたメモリセルの数に該当する。なお、オフ状態のメモリセルの数がカウントされてもよい。
これによって、しきい値電圧の区分毎にメモリセルの数を度数として示すヒストグラムが完成する。
図10は、ロワー推定処理において生成されるヒストグラムの一例を示す図である。上段のグラフは、しきい値分布を示すグラフであり、中段のグラフは、各シフトリード電圧が適用された場合にオン状態のメモリセルの数を示すグラフであり、下段のグラフは、ヒストグラムである。
図10に示されるように、ロワー推定処理によれば、リード電圧VA、VD、VF、およびVKのそれぞれについてヒストグラムが生成される。当該ヒストグラムは、しきい値電圧の分布と対応する。よって、各ヒストグラムにおいて、度数が極小値となる区分から、最適リード電圧VA’、VD’、VF’、VK’が夫々個別に推定される。例えば、度数が極小値となる区分に隣接する2つの区分の度数の内分比によって、最適リード電圧の推定値が演算される。なお、最適リード電圧の演算方法はこれに限定されない。
ミドルページ、アッパーページ、およびトップページの各リード動作で使用されるリード電圧を推定する処理は、上記したロワー推定処理と類似した方法で実行される。ミドルページ、アッパーページ、およびトップページの各リード動作で使用されるリード電圧を推定する処理について簡略的に説明する。
ミドルページのリード動作で使用される各リード電圧を推定する処理を、ミドル推定処理と表記する。ミドル推定処理は下記のようにして実行される。
ミドル推定処理においては、ロワー推定処理と同様に、各リード電圧を変更(シフト)させながら複数回のシフトリードが実行される。ミドル推定処理に含まれる各シフトリードは、ミドルページを対象とした通常のリード動作と同様であり、具体的には、Cリード、Gリード、Iリード、およびMリードを実行することによってミドルビットのデータを判定する処理である。ただし、複数回のシフトリードの夫々においては、リード電圧VC、VG、VI、およびVMは、それぞれシフトせしめられる。
図11は、ミドル推定処理において使用される各種リード電圧VCGRを示している。図11の例では、5回のシフトリードが実行される。5回のシフトリードのそれぞれをSFTx(ただしxは1から5までの重複しない整数)と表記する。シフトリードSFTxにおいては、リード電圧VCとしてShift_cxが、リード電圧VGとしてShift_gxが、リード電圧VIとしてShift_ixが、リード電圧VMとしてShift_mxが、使用される。
ミドル推定処理においては、マスクデータリードとして、例えば、Eリード、Hリード、およびKリードが実行される。即ち、Eリードのセンス結果ER、Hリードのセンス結果HR、およびKリードのセンス結果KRが、マスクデータとして使用される。
ミドル推定処理においては、各メモリセルのしきい値電圧が存在し得る範囲は、5回のシフトリードで使用される各リード電圧と、Eリードで使用されるリード電圧VEと、Hリードで使用されるリード電圧VHと、Kリードとで使用されるリード電圧VKと、によって、合計24個の区分(図11の(25)〜(48))に分けられる。
図12は、ミドル推定処理における5回のシフトリード(SFT1〜SFT5)によって得られるデータ値と、Eリード、Hリード、およびKリードのセンス結果とを、区分毎に示している。本図を用いて、ミドル推定処理における分離データの取得方法を説明する。
あるメモリセルにかかるEリードのセンス結果ERが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がBステートとCステートとの境界付近の区分(ここでは区分(25)〜(30))に含まれていることを示す。区分(25)〜(30)においては、シフトリードによるリードデータが“1”であるか否かは、Cリードのセンス結果CRのみに基づいて決定される。Cリードのセンス結果CRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Cリードのセンス結果CRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Eリードのセンス結果ERとの論理積(AND)演算を行うことで、SFT1〜SFT5のそれぞれによって得られたリードデータからCリードのセンス結果CRを分離データとして取得することができる。
あるメモリセルにかかるEリードのセンス結果ERが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるHリードのセンス結果HRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がFステートとGステートとの境界付近の区分(ここでは区分(31)〜(36))に含まれていることを示す。区分(31)〜(36)においては、シフトリードによるリードデータが“1”であるか否かは、Gリードのセンス結果GRのみに基づいて決定される。Gリードのセンス結果GRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Gリードのセンス結果GRが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Eリードのセンス結果ERとHリードのセンス結果HRとの排他的論理和(ER^HR)との論理積(AND)演算を行い、論理積演算の結果を反転することによって、SFT1〜SFT5のそれぞれによって得られたリードデータからGリードのセンス結果GRを分離データとして取得することができる。
あるメモリセルにかかるHリードのセンス結果HRが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるKリードのセンス結果KRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がHステートとIステートとの境界付近の区分(ここでは区分(37)〜(42))に含まれていることを示す。区分(37)〜(42)においては、シフトリードによるリードデータが“1”であるか否かは、Iリードのセンス結果IRのみに基づいて決定される。Iリードのセンス結果IRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Iリードのセンス結果IRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Hリードのセンス結果HRとKリードのセンス結果KRとの排他的論理和(HR^KR)との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからIリードのセンス結果IRを分離データとして取得することができる。
あるメモリセルにかかるKリードのセンス結果KRが“0(メモリセルがオフ状態)”であることは、そのメモリセルのしきい値電圧がLステートとMステートとの境界付近の区分(ここでは区分(43)〜(48))に含まれていることを示す。区分(43)〜(48)においては、シフトリードによるリードデータが“1”であるか否かは、Mリードのセンス結果MRのみに基づいて決定される。Mリードのセンス結果MRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Mリードのセンス結果MRが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Kリードのセンス結果KRの反転との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからMリードのセンス結果MRを分離データとして取得することができる。
ミドル推定処理においても、ロワー推定処理の際と同様の手順で、分離データCR、GR、IR、MRのそれぞれについて“1(メモリセルがオン状態)”の数がカウントされ、カウント結果に基づいて、リード電圧VC、VG、VI、およびVMのそれぞれについてヒストグラムが生成される。そして、リード電圧VC、VG、VI、およびVMにかかるヒストグラムに基づいて、最適リード電圧VC’、VG’、VI’、VM’が夫々個別に推定される。
続いて、アッパーページのリード動作で使用される各リード電圧を推定する処理について説明する。アッパーページのリード動作で使用される各リード電圧を推定する処理を、アッパー推定処理と表記する。アッパー推定処理は下記のようにして実行される。
アッパー推定処理においては、ロワー推定処理やミドル推定処理と同様に、各リード電圧を変更(シフト)させながら複数回のシフトリードが実行される。アッパー推定処理に含まれる各シフトリードは、アッパーページを対象とした通常のリード動作と同様であり、具体的には、Bリード、Hリード、およびNリードを実行することによってアッパービットのデータを判定する処理である。ただし、複数回のシフトリードの夫々においては、リード電圧VB、VH、およびVNは、それぞれシフトせしめられる。
図13は、アッパー推定処理において使用される各種リード電圧VCGRを示している。図13の例では、5回のシフトリードが実行される。5回のシフトリードのそれぞれをSFTx(ただしxは1から5までの重複しない整数)と表記する。シフトリードSFTxにおいては、リード電圧VBとしてShift_bxが、リード電圧VHとしてShift_hxが、リード電圧VNとしてShift_nxが、使用される。
アッパー推定処理においては、マスクデータリードとして、例えば、EリードおよびKリードが実行される。即ち、Eリードのセンス結果ER、およびKリードのセンス結果KRが、マスクデータとして使用される。
アッパー推定処理においては、各メモリセルのしきい値電圧が存在し得る範囲は、5回のシフトリードで使用される各リード電圧と、Eリードで使用されるリード電圧VEと、Kリードとで使用されるリード電圧VKと、によって、合計18個の区分(図13の(49)〜(66))に分けられる。
図14は、アッパー推定処理における5回のシフトリード(SFT1〜SFT5)によって得られるデータ値と、EリードおよびKリードのセンス結果とを、区分毎に示している。本図を用いて、アッパー推定処理における分離データの取得方法を説明する。
あるメモリセルにかかるEリードのセンス結果ERが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がAステートとBステートとの境界付近の区分(ここでは区分(49)〜(54))に含まれていることを示す。区分(49)〜(54)においては、シフトリードによるリードデータが“1”であるか否かは、Bリードのセンス結果BRのみに基づいて決定される。Bリードのセンス結果BRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Bリードのセンス結果BRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Eリードのセンス結果ERとの論理積(AND)演算を行うことで、SFT1〜SFT5のそれぞれによって得られたリードデータからBリードのセンス結果BRを分離データとして取得することができる。
あるメモリセルにかかるEリードのセンス結果ERが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるKリードのセンス結果KRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がGステートとHステートとの境界付近の区分(ここでは区分(55)〜(60))に含まれていることを示す。区分(55)〜(60)においては、シフトリードによるリードデータが“1”であるか否かは、Hリードのセンス結果HRのみに基づいて決定される。Hリードのセンス結果HRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Hリードのセンス結果HRが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Eリードのセンス結果ERとKリードのセンス結果KRとの排他的論理和(ER^KR)との論理積(AND)演算を行い、論理積演算の結果を反転することによって、SFT1〜SFT5のそれぞれによって得られたリードデータからHリードのセンス結果HRを分離データとして取得することができる。
あるメモリセルにかかるKリードのセンス結果KRが“0(メモリセルがオフ状態)”であることは、そのメモリセルのしきい値電圧がMステートとNステートとの境界付近の区分(ここでは区分(61)〜(66))に含まれていることを示す。区分(61)〜(66)においては、シフトリードによるリードデータが“1”であるか否かは、Nリードのセンス結果NRのみに基づいて決定される。Nリードのセンス結果MRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Nリードのセンス結果NRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Kリードのセンス結果KRの反転との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからNリードのセンス結果NRを分離データとして取得することができる。
アッパー推定処理においても、ロワー推定処理の際と同様の手順で、分離データBR、HR、NRのそれぞれについて“1(メモリセルがオン状態)”の数がカウントされ、カウント結果に基づいて、リード電圧VB、VH、およびVNのそれぞれについてヒストグラムが生成される。そして、リード電圧VB、VH、およびVNにかかるヒストグラムに基づいて、最適リード電圧VB’、VH’、VN’が夫々個別に推定される。
続いて、トップページのリード動作で使用される各リード電圧を推定する処理について説明する。トップページのリード動作で使用される各リード電圧を推定する処理を、トップ推定処理と表記する。トップ推定処理は下記のようにして実行される。
トップ推定処理においては、ロワー推定処理、ミドル推定処理、およびアッパー推定処理と同様に、各リード電圧を変更(シフト)させながら複数回のシフトリードが実行される。トップ推定処理に含まれる各シフトリードは、トップページを対象とした通常のリード動作と同様であり、具体的には、Eリード、Jリード、Lリード、およびOリードを実行することによってトップビットのデータを判定する処理である。ただし、複数回のシフトリードの夫々においては、リード電圧VE、VJ、VL、およびVOは、それぞれシフトせしめられる。
図15は、トップ推定処理において使用される各種リード電圧VCGRを示している。図15の例では、5回のシフトリードが実行される。5回のシフトリードのそれぞれをSFTx(ただしxは1から5までの重複しない整数)と表記する。シフトリードSFTxにおいては、リード電圧VEとしてShift_exが、リード電圧VJとしてShift_jxが、リード電圧VLとしてShift_lxが、リード電圧VOとしてShift_oxが、使用される。
トップ推定処理においては、マスクデータリードとして、例えば、Hリード、Kリード、およびMリードが実行される。即ち、Hリードのセンス結果HR、Kリードのセンス結果KR、およびMリードのセンス結果MRが、マスクデータとして使用される。
トップ推定処理においては、各メモリセルのしきい値電圧が存在し得る範囲は、5回のシフトリードで使用される各リード電圧と、Hリードで使用されるリード電圧VH、Kリードで使用されるリード電圧VK、およびMリードで使用されるリード電圧VMと、によって、合計24個の区分(図15の(67)〜(90))に分けられる。
図16は、トップ推定処理における5回のシフトリード(SFT1〜SFT5)によって得られるデータ値と、Hリード、Kリード、およびMリードのセンス結果とを、区分毎に示している。本図を用いて、トップ推定処理における分離データの取得方法を説明する。
あるメモリセルにかかるHリードのセンス結果HRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がDステートとEステートとの境界付近の区分(ここでは区分(67)〜(72))に含まれていることを示す。区分(67)〜(72)においては、シフトリードによるリードデータが“1”であるか否かは、Eリードのセンス結果ERのみに基づいて決定される。Eリードのセンス結果ERが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Eリードのセンス結果ERが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Hリードのセンス結果HRとの論理積(AND)演算を行うことで、SFT1〜SFT5のそれぞれによって得られたリードデータからEリードのセンス結果ERを分離データとして取得することができる。
あるメモリセルにかかるHリードのセンス結果HRが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるKリードのセンス結果KRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がIステートとJステートとの境界付近の区分(ここでは区分(73)〜(78))に含まれていることを示す。区分(73)〜(78)においては、シフトリードによるリードデータが“1”であるか否かは、Jリードのセンス結果JRのみに基づいて決定される。Jリードのセンス結果JRが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Jリードのセンス結果JRが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Hリードのセンス結果HRとKリードのセンス結果KRとの排他的論理和(HR^KR)との論理積(AND)演算を行い、論理積演算の結果を反転することによって、SFT1〜SFT5のそれぞれによって得られたリードデータからJリードのセンス結果JRを分離データとして取得することができる。
あるメモリセルにかかるKリードのセンス結果KRが“0(メモリセルがオフ状態)”であり、かつ、そのメモリセルにかかるMリードのセンス結果MRが“1(メモリセルがオン状態)”であることは、そのメモリセルのしきい値電圧がKステートとLステートとの境界付近の区分(ここでは区分(79)〜(84))に含まれていることを示す。区分(79)〜(84)においては、シフトリードによるリードデータが“1”であるか否かは、Lリードのセンス結果LRのみに基づいて決定される。Lリードのセンス結果LRが“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。Lリードのセンス結果LRが“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Kリードのセンス結果KRとMリードのセンス結果MRとの排他的論理和(KR^MR)との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからLリードのセンス結果LRを分離データとして取得することができる。
あるメモリセルにかかるMリードのセンス結果MRが“0(メモリセルがオフ状態)”であることは、そのメモリセルのしきい値電圧がNステートとOステートとの境界付近の区分(ここでは区分(85)〜(90))に含まれていることを示す。区分(85)〜(90)においては、シフトリードによるリードデータが“1”であるか否かは、Oリードのセンス結果ORのみに基づいて決定される。Oリードのセンス結果ORが“1(メモリセルがオン状態)”であれば、リードデータは“0”とされる。Oリードのセンス結果ORが“0(メモリセルがオフ状態)”であれば、リードデータは“1”とされる。
よって、一例では、各シフトリードによって得られたリードデータ(SFT1〜SFT5)のそれぞれに対し、Mリードのセンス結果MRの反転との論理積(AND)演算を行うことによって、SFT1〜SFT5のそれぞれによって得られたリードデータからOリードのセンス結果ORを分離データとして取得することができる。
トップ推定処理においても、ロワー推定処理の際と同様の手順で、分離データER、JR、LR、ORのそれぞれについて“1(メモリセルがオン状態)”の数がカウントされ、カウント結果に基づいて、リード電圧VE、VJ、VL、およびVOのそれぞれについてヒストグラムが生成される。そして、リード電圧VE、VJ、VL、およびVOにかかるヒストグラムに基づいて、最適リード電圧VE’、VJ’、VL’、VO’が夫々個別に推定される。
メモリコントローラ20は、上記のようにして得られた最適リード電圧の推定値をリード電圧VCGRとして用いたリード動作をメモリチップ10に実行させることで、リードデータに含まれるエラー数を抑制することができる。
このように、推定処理においては、ヒストグラムを生成するために、複数回のシフトリードが実行される。上記の例では、4つのビンを有するヒストグラムを生成するために、5回のシフトリードが実行された。必要なシフトリードの回数は、必要とされるヒストグラムのビンの数に応じて増加する。しかしながら、必要なシフトリードの回数に応じて、推定処理に要する時間が増加する。
第1の実施形態では、推定処理において、プレーンP0とプレーンP1とが並列にシフトリードを実行するマルチプレーンリード動作が実行される。これによって、必要な回数のシフトリードの実行に要する時間が短縮される。なお、以降では、マルチプレーンリード動作を、MPRと略す場合がある。
図17は、第1の実施形態の推定処理の特徴の1つを説明するための模式的な図である。本図に示されるように、SFT1、SFT2、およびSFT3は、プレーンP0に対して実行され、SFT4、およびSFT5は、プレーンP1に対して実行される。そして、SFT1およびSFT5は、1回目のマルチプレーンリード動作によって並列に実行される。SFT2およびSFT4は、2回目のマルチプレーンリード動作によって並列に実行される。
これによって、SFT1〜5の5回分のシフトリードによる分離データXRは、2回のマルチプレーンリード動作と、1回のシングルプレーンリード動作とによって取得される。マルチプレーンリード動作では、プレーンP0およびP1に対して並列にシフトリードが実行される。よって、SFT1〜5の5回分のシフトリードをすべてシングルプレーンリード動作で実行する場合に比べて、SFT1〜5の5回分のシフトリードに要する時間が短縮される。
マルチプレーンリード動作を利用した5回分のシフトリードからシフトリード毎に分離データXRが取得される。そして、分離データXRに含まれるデータ“1”の数がカウントされることによって、リード電圧に対するオン状態のメモリセルの数がカウントされる。そして、リード電圧に対するオン状態のメモリセルの数をカウントの結果に基づいてヒストグラム100が作成される。
なお、プレーンP0に含まれるメモリセルのしきい値電圧の分布とプレーンP1に含まれるメモリセルのしきい値電圧の分布との間でオフセットが生じる場合がある。当該オフセットが生じている場合には、メモリコントローラ20は、プレーンP0およびプレーンP1のうちの一方にかかるデータ“1”の数のカウント結果に当該オフセットに対応した量を加算または減算することで、当該オフセットを補償してもよい。
続いて、推定処理において使用される各種のコマンドシーケンスを説明する。
図18は、複数のプレーンに対するシングルステートリードをマルチプレーンリード動作(MPR)によって実現するためのコマンドシーケンスの一例を示す図である。このコマンドシーケンスを、シングルステートリード(MPR)のコマンドシーケンスと表記する。
図18に示されるように、シングルステートリード(MPR)のコマンドシーケンスは、xxh、yyh、00h、アドレス情報、および32h(または30h)からなるサブセットを2つ含む。2つのサブセットによって、2つのプレーンに対するシングルステートリードが指示される。
各サブセットの最初に送られるxxhは、シングルステートリードを意味するプレフィックスコマンドである。xxhに後続するyyhは、シングルステートリードで使用されるリード電圧を指定するコマンドである。yyhに後続する00hは、リードの対象を示すアドレス情報の送信を予告するコマンドである。00hに後続するアドレスは、リードの対象を示すアドレス情報である。
最初のサブセットの末尾に送られる32hは、複数のプレーンに対する並列の動作を指示するコマンドであり、これまで送信されたコマンド及びアドレス情報が1つのプレーンに対応するものであることを示している。メモリチップ10は、32hを受信すると、レディ状態からビジー状態になり、続けてビジー状態からレディ状態になる。この動作は、メモリチップ10がメモリコントローラ20に対して続けてコマンドを受信可能であること示すものである。
2番目のサブセットの末尾に送られる30hは、動作の開始を指示するものである。メモリチップ10は、30hを受信すると、最初のサブセットによって指示されたプレーンP0に対するシングルステートリードと、2番目のサブセットによって指示されたプレーンP1に対するシングルステートリードと、を同時に開始する。メモリチップ10は、プレーンP0に対するシングルステートリードと、プレーンP1に対するシングルステートリードと、が終了するまで、ビジー状態を維持する。
図19は、メモリチップ10からデータを取得するためのコマンドシーケンスの一例を示す図である。このコマンドシーケンスを、データ出力のコマンドシーケンスと表記する。
データ出力のコマンドシーケンスの最初に送られる05hは、データ出力を意味するプレフィックスコマンドである。05hに後続するアドレスは、データラッチXDLCに格納されているリードデータのうちの、出力対象の部分の先頭位置を示すアドレス情報である。E0hは、データ出力の開始を指示するコマンドである。メモリチップ10にE0hを送信した後、メモリコントローラ20は、データラッチXDLCに格納されたリードデータの一部または全部を、リードイネーブル信号/REをトグルするなどによって取得することができる(Data out)。
メモリコントローラ20は、それぞれ異なるプレーンから読み出された複数のリードデータを取得する場合には、データ出力のコマンドシーケンスを、プレーン毎に実行する。
シフトリードは、シフト量が設定された後に実行される。図20は、シフト量を設定するためのコマンドシーケンスの一例を示す図である。このコマンドシーケンスは、パラメータレジスタ33に値を設定するためのコマンドシーケンスであり、パラメータレジスタ33に値を設定することは、セットフィーチャと称される。シフト量は、パラメータの1つとしてパラメータレジスタ33に設定される。よって、シフト量の設定は、セットフィーチャの一種である。図20のコマンドシーケンスを、セットフィーチャのコマンドシーケンスと表記する。
セットフィーチャのコマンドシーケンスの最初に送信されるD5hは、セットフィーチャを意味するプレフィックスコマンドである。D5hに後続するA1は、LUNアドレスである。A1に後続するA2は、セットフィーチャで使用されるパラメータレジスタ33のアドレス情報である。設定を変更するパラメータに応じた固有のレジスタアドレスが指定される必要がある。シフト量の設定の場合、シフト量が格納されるアドレスが、A2として送られる。プレーンP0用のパラメータレジスタ33AおよびプレーンP1用のパラメータレジスタ33Bのうちの格納先は、A2によって指定されることが可能である。A2に後続するPRMは、パラメータとして設定される値である。シフト量の設定の場合、A2の後に、パラメータPRMとして、シフト量が送られる。メモリチップ10は、当該コマンドシーケンスを受信すると、A2に後続するPRMをパラメータレジスタ33に格納する。メモリチップ10は、パラメータレジスタ33へのデータの格納が終了するまで、ビジー状態を維持する。
シフト量が設定された後のリード動作では、そのリード動作がマルチプレーンリード動作であるか否かにかかわらず、設定されたシフト量が使用される。即ち、シフトリードは、シフト量の設定の後に通常のリード動作を実行することで実現される。
図21は、複数のプレーンに対するリード動作をマルチプレーンリード動作によって実現するためのコマンドシーケンスの一例を示す図である。本図に示されるコマンドシーケンスは、通常のリード動作をマルチプレーンリード動作によって実行するためのものであるが、第1の実施形態では、当該コマンドシーケンスはシフトリードにおいて用いられる。よって、本図に示されるコマンドシーケンスを、シフトリード(MPR)のコマンドシーケンスと表記する。
図21に示されるように、シフトリード(MPR)のコマンドシーケンスは、PC(またはPC’)、00h、アドレス情報、および32h(または30h)からなるサブセットを2つ含む。2つのサブセットによって、2つのプレーンに対するリード動作が指示される。
各サブセットの最初に送られるPC(またはPC’)は、トップページ、アッパーページ、ミドルページ、およびロワーページのうちの一つを選択するコマンドであり、選択されたページに対するリードを指示するものである。ここでは、ロワーページが対象とされているので、PCおよびPC’のそれぞれとしてロワーページを示す値が送信される。PC(またはPC’)に後続する00hは、リードの対象を示すアドレス情報の送信を予告するコマンドである。00hに後続するアドレスは、リードの対象を示すアドレス情報である。
最初のサブセットの末尾に送られる32hは、マルチプレーン動作を指示するコマンドであり、これまで送信されたコマンド及びアドレス情報が1つのプレーンに対応するものであることを示している。メモリチップ10は、32hを受信すると、レディ状態からビジー状態になり、続けてビジー状態からレディ状態になる。この動作は、メモリチップ10がメモリコントローラ20に対して続けてコマンドを受信可能であること示すものである。
2番目のサブセットの末尾に送られる30hは、動作の開始を指示するものである。メモリチップ10は、30hを受信すると、最初のサブセットによって指示されたプレーンP0に対するリード動作と、2番目のサブセットによって指示されたプレーンP1に対するリード動作と、を同時に開始する。メモリチップ10は、プレーンP0に対するリード動作と、プレーンP1に対するリード動作と、が終了するまで、ビジー状態を維持する。
マルチプレーンリード動作によって各プレーンのデータラッチXDLCに格納されたリードデータは、データ出力のコマンドシーケンスによってメモリチップ10からメモリコントローラ20に取得される。データ出力のコマンドシーケンスは、プレーン毎に送信される。
続いて、図22〜図26を参照して、第1の実施形態にかかるメモリシステム1の動作を説明する。ここでは一例として、プレーンP0の或るロワーページからデータをリードする際の処理を説明する。プレーンP0をプレーンP1と読み替え、かつプレーンP1をプレーンP0と読み替えることによって、図22〜図26に示される動作は、プレーンP1からデータをリードする際の処理として理解することが可能である。また、読み出し対象のページがロワーページ以外である場合には、必要なマスクデータ、または、境界リードのためのリード電圧が異なる以外を除き、図22〜図26に示される動作と同様の動作が実行される。
なお、リード対象のロワーページが属するワード線を対象ワード線と表記する。また、対象ワード線が属するブロックを、対象ブロックと表記する。
図22は、第1の実施形態にかかるメモリシステム1の動作の一例の概略を示すフローチャートである。まず、メモリコントローラ20は、プレーンP0に含まれるリードの対象のロワーページからのリードをメモリチップ10に実行させる(S101)。対象ワード線から読み出されたリードデータは、データラッチXDLCを介してメモリコントローラ20に送られる。
メモリコントローラ20は、リードデータを受け取ると、ECC回路23を制御して、リードデータに対して誤り訂正を試みる(S102)。そして、メモリコントローラ20は、誤り訂正が成功したか否かを判定する(S103)。誤り訂正が成功するとは、リードデータに誤りが含まれていないか、またはリードデータに含まれていた誤りが訂正されて、誤りを含まないリードデータが得られることである。
誤り訂正が成功した場合(S103:Yes)、動作が終了する。誤り訂正が失敗した場合(S103:No)、メモリコントローラ20は、リード電圧の調整を実行する(S104)。S104の処理の詳細については後述する。
S104に続いて、メモリコントローラ20は、調整後のリード電圧を用いたシフトリードをメモリチップ10に実行させる(S105)。つまり、対象ワード線に記憶されたロワーページのリードを、調整後のリード電圧を用いてリトライする。リードデータは、データラッチXDLCを介してメモリコントローラ20に送られる。
メモリコントローラ20は、リードデータを受け取ると、S102と同様の方法で誤り訂正を試みる(S106)。そして、メモリコントローラ20は、誤り訂正が成功したか否かを判定する(S107)。誤り訂正が成功した場合(S107:Yes)、動作が終了する。誤り訂正が失敗した場合(S107:No)、メモリコントローラ20は、他の任意の方法で誤り訂正を実行し(S108)、動作が終了する。
図23は、第1の実施形態にかかるリード電圧の調整の動作、つまり図22のS104の処理の一例を示すフローチャートである。
まず、メモリコントローラ20は、プレーンP0の対象ブロックと対をなすプレーンP1のブロックを特定する(S201)。
例えば、所属するプレーンが異なる複数のブロックは、1つの論理ブロックとしてまとめて管理され得る。メモリコントローラ20は、1つの論理ブロックを構成する複数のブロックに対して各種動作を一括に実行することができる。つまり、例えば、ライト動作やイレース動作が論理ブロック単位で実行され得る。
図24は、論理ブロックの構成の一例を説明するための模式的な図である。本図の例では、Chip0〜Chip7までの7個のメモリチップ10がメモリシステム1に具備されている。そして、各メモリチップ10の2つのプレーンから同一番号のブロックが1個ずつ選択されて、選択されたブロックの集合によって、1つの論理ブロックが構成されている。本図の例では、1つの論理ブロックを構成する複数のブロックのブロック番号はそれぞれ等しいこととしているが、1つの論理ブロックを構成する複数のブロックのブロック番号は等しくなくてもよい。
1つの論理ブロックに対するライトの際には、当該論理ブロックを構成する複数のブロックのそれぞれから1つ選択されたページの集合に対してライトが実行される。複数のブロックのそれぞれからは、同一のページ番号で識別されるページが選択される。そして、各メモリチップ10では、複数のプレーンのそれぞれに含まれる、当該論理ブロックのメンバーのブロックに対して、並列にライトが実行される。つまり、複数のプレーンに対し、マルチプレーン動作によってデータがライトされる。
複数の論理ブロックは、例えば、ファームウェアプログラムの作成時に生成される。複数の論理ブロックのそれぞれを構成する複数のブロックの情報は、管理情報に記録されて所定のメモリ(例えばRAM22またはメモリチップ10またはその両方)に格納されている。
プレーンP0の対象ブロックと対をなすプレーンP1のブロックとは、プレーンP1に含まれる複数のブロックのうちの、対象のブロックが属する論理ブロックのメンバーのブロックである。S201では、メモリコントローラ20は、上記した管理情報を参照することによって、プレーンP0の対象ブロックと対をなすプレーンP1のブロックを特定する。プレーンP0の対象ブロックと対をなすプレーンP1のブロックを、対ブロックと表記する。
図23に説明を戻す。
S201に続いて、メモリコントローラ20は、対ブロックが故障ブロックであるか否かを判定する(S202)。故障ブロックは、回路の故障などにより使用が不可と判断されるブロックである。使用によって生じた故障ブロックは、故障ブロック情報に記録されて所定のメモリ(例えばRAM22またはメモリチップ10またはその両方)に格納されている。メモリコントローラ20は、故障ブロック情報を参照することによって、対ブロックが故障ブロックであるか否かを判定する。
S201に続いて、メモリコントローラ20は、対ブロックが故障ブロックであるか否かを判定する(S202)。故障ブロックは、回路の故障などにより使用が不可と判断されるブロックである。使用によって生じた故障ブロックは、故障ブロック情報に記録されて所定のメモリ(例えばRAM22またはメモリチップ10またはその両方)に格納されている。メモリコントローラ20は、故障ブロック情報を参照することによって、対ブロックが故障ブロックであるか否かを判定する。
対ブロックが故障ブロックではない場合(S202:No)、メモリコントローラ20は、対象ブロックに対するリードの回数と対ブロックに対するリードの回数との差が所定値を超えているか否かを判定する(S203)。
前述したように、例えば、ライト動作やイレース動作は、論理ブロック単位で実行され得る。よって、論理ブロック単位でリード動作が行われる限り、一つの論理ブロックに含まれる複数のブロックが受けるストレスの度合いは同程度となる。その結果、当該複数のブロックのそれぞれに含まれるメモリセルのしきい値電圧の分布の変化の傾向は類似する。
しかしながら、1つの論理ブロックに含まれる複数のブロックに対し、まったく異なるパターンでリード動作が行われた場合、当該複数のブロックのそれぞれに含まれるメモリセルのしきい値電圧の分布の変化の傾向は類似しない。
第1の実施形態では、対象ブロックと対ブロックとの間でしきい値電圧の変化の傾向が類似している場合に、マルチプレーンリード動作を用いた推定処理が実行される。S203は、対象ブロックと対ブロックとの間でしきい値電圧の変化の傾向が類似しているか否かの判定の一例である。
具体的には、対象ブロックに対するリードの回数と対ブロックに対するリードの回数との差が所定値を超えていない場合(S203:No)、対象ブロックと対ブロックとの間でしきい値電圧の変化の傾向が類似していると推定できるので、メモリコントローラ20は、マルチプレーンリード動作を用いた推定処理によってリード電圧を調整する(S204)。
対象ブロックに対するリードの回数と対ブロックに対するリードの回数との差が所定値を超えている場合(S203:Yes)、対象ブロックと対ブロックとの間でしきい値電圧の変化の傾向が類似していないと推定できるので、メモリコントローラ20は、マルチプレーンリード動作を用いない推定処理、つまりシングルプレーンリード動作を用いた推定処理、によってリード電圧を調整する(S205)。
S204またはS205の処理によって、リード電圧の調整の動作が終了する。
なお、対ブロックが故障ブロックである場合(S202:Yes)、メモリコントローラ20は、S205の処理を実行する。
図25は、マルチプレーンリード動作を用いてリード電圧を調整する第1の実施形態にかかる処理の一例を示すフローチャートである。本図に示される処理は、S204において実行されるものである。
まず、S301〜S303によって、マスクデータが取得される。ロワーページがリードの対象である場合には、リードデータCR、リードデータER、およびリードデータHRがマスクデータとして取得される。各マスクデータを取得するためのシングルステートリードは、マルチプレーンリード動作によって実行される。
具体的には、まず、S301では、メモリコントローラ20は、プレーンP0(正確には対象ブロック内の対象ワード線)とプレーンP1(正確には対ブロック内の、対象ワード線と同じタイミングでライトされ得るワード線)とのそれぞれに対してリードデータCRを取得するためのシングルステートリードを実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、プレーンP0およびプレーンP1のそれぞれから読み出されたリードデータCRを取得する。
S301では、メモリコントローラ20は、シングルステートリード(MPR)のコマンドシーケンスのうちの最初のサブセットに含まれるアドレスによって、プレーンP0内の対象ワード線を指定する。そして、2番目のサブセットに含まれるアドレスによって、対象のワード線と対をなす、プレーンP1内のワード線を指定する。
シングルステートリード(MPR)のコマンドシーケンスの送信後、メモリコントローラ20は、データ出力のコマンドシーケンスを、プレーン毎に送信する。メモリコントローラ20は、メモリチップ10から取得したリードデータCRを、例えばRAM22に格納する。
S302では、メモリコントローラ20は、シングルステートリード(MPR)をメモリチップ10に送信することによって、メモリチップ10に、プレーンP0とプレーンP1とのそれぞれからリードデータERを読み出させる。そして、メモリコントローラ20は、データ出力のコマンドシーケンスをプレーン毎にメモリチップ10に送信することによって、プレーンP0およびプレーンP1のそれぞれから読み出されたリードデータERを取得する。メモリコントローラ20は、メモリチップ10から取得したリードデータERを、例えばRAM22に格納する。
S303では、メモリコントローラ20は、シングルステートリード(MPR)をメモリチップ10に送信することによって、メモリチップ10に、プレーンP0とプレーンP1とのそれぞれからリードデータHRを読み出させる。そして、メモリコントローラ20は、データ出力のコマンドシーケンスをプレーン毎にメモリチップ10に送信することによって、プレーンP0およびプレーンP1のそれぞれから読み出されたリードデータHRを取得する。メモリコントローラ20は、メモリチップ10から取得したリードデータHRを、例えばRAM22に格納する。
続いて、S305〜S309のループ処理が3回実行される。各ループ処理では、マルチプレーンリード動作によって、プレーンP0とプレーンP1とに対するシフトリードが並列に実行される。
つまり、図25の例では、SFT1〜SFT6までの6回分のシフトリードが行われることとしている。一例では、SFT1〜SFT3の3回分のシフトリードは、プレーンP0に対して実行され、SFT4〜SFT6の6回分のシフトリードは、プレーンP1に対して実行される。より具体的には、例えば、1回目のループ処理では、プレーンP0に対するシフトリードSFT1と、プレーンP1に対するシフトリードSFT6と、がマルチプレーンリード動作によって実行される。そして、2回目のループ処理では、プレーンP0に対するシフトリードSFT2と、プレーンP1に対するシフトリードSFT5と、がマルチプレーンリード動作によって実行される。そして、3回目のループ処理では、プレーンP0に対するシフトリードSFT3と、プレーンP1に対するシフトリードSFT4と、がマルチプレーンリード動作によって実行される。これによって、SFT1〜SFT6までの6回分のシフトリードが行われる。
なお、マルチプレーンリード動作の実行回数は、ヒストグラム100のビン数に応じて変更され得る。例えば、ヒストグラム100のビン数をaとすると、(a+1)回分のシフトリードが必要になる。(a+1)が偶数であれば、(a+1)を2で除算して得られる数だけマルチプレーンリード動作を実行することで、(a+1)回分のシフトリードが実現する。(a+1)が奇数であれば、(a+1)を2で除算して得られる商の回数のマルチプレーンリード動作と、1回のシングルプレーンリード動作と、によって(a+1)回分のシフトリードが実現する。
ループ処理が開始される前に、メモリコントローラ20は、まず、ループ処理のカウンタであるnをゼロにリセットする(S304)。そして、メモリコントローラ20は、プレーンP0とプレーンP1とに対してそれぞれ個別にシフト量を設定する(S305、S306)。メモリコントローラ20は、プレーン毎にセットフィーチャのコマンドシーケンスを送信することによって、各プレーンにかかるシフト量を設定する。メモリコントローラ20は、SFT1〜SFT3から選択されたシフトリードで使用されるシフト量を設定する。S306では、メモリコントローラ20は、SFT4〜SFT6から選択されたシフトリードで使用されるシフト量を設定する。
各プレーンにかかるシフト量の設定が完了すると、メモリコントローラ20は、プレーンP0およびプレーンP1の両方に対してシフトリードを実行するマルチプレーンリード動作をメモリチップ10に実行させる(S307)。S307では、メモリコントローラ20は、シフトリード(MPR)のコマンドシーケンスをメモリチップ10に送信する。
S307の処理が完了すると、メモリコントローラ20は、メモリチップ10にプレーン毎にデータ出力のコマンドシーケンスを送信することによって、プレーンP0に対するシフトリードによって得られたリードデータと、プレーンP1に対するシフトリードによって得られたリードデータと、を取得する(S308、S309)。メモリコントローラ20は、各プレーンから得られたリードデータを例えばRAM22に格納する。
続いて、メモリコントローラ20は、nが2を越えているか否かを判定する(S310)。この処理は、3回のループ処理が完了したか否かを判定する処理に該当する。nが2を越えていない場合(S310:No)、メモリコントローラ20は、nを1だけインクリメントして(S311)、S305からS309までの処理を再び実行する。
nが2を越えている場合(S310:Yes)、即ち3回のループ処理が完了した場合、メモリコントローラ20は、3回のマルチプレーンリード動作によって得られた6回分のシフトリードSFT1〜SFT6のそれぞれによるリードデータを、分離データXRに分離する(S312)。
ここではロワーページを処理の対象としているので、S312では、各シフトリードによるリードデータは、分離データAR、DR、FR、およびKRに分離される。なお、S312の処理では、S301〜S303によって得られたリードデータCR、ER、およびHRのそれぞれがマスクデータとして使用されることによって、分離データAR、DR、FR、およびKRが取得される。
続いて、メモリコントローラ20は、分離データAR、DR、FR、およびKRのそれぞれについて、オン状態のメモリセルを示す“1”の数をカウントする(S313)。そして、メモリコントローラ20は、オン状態のメモリセルを示す“1”の数のカウントの結果に基づいて、リード電圧VA、DA、VF、およびVKのそれぞれについてヒストグラム100を生成する(S314)。
そして、メモリコントローラ20は、リード電圧VA、DA、VF、およびVKのそれぞれについて得られたヒストグラム100に基づいて、リード電圧VA、DA、VF、およびVKの最適値VA’、DA’、VF’、およびVK’を推定する(S315)。
続いて、メモリコントローラ20は、プレーンP0に対するリード動作の際にリード電圧VA、DA、VF、およびVKとして最適値VA’、DA’、VF’、およびVK’の推定値を使用できるように、シフト量を設定する(S316)。S316では、セットフィーチャコマンドを用いてシフト量の設定が実行される。これによって、対象ページに対し、調整後のリード電圧を用いたシフトリードを実行することが可能な状態となる。
S316によって、マルチプレーンリード動作を用いてリード電圧を調整する処理が終了する。
図26は、シングルプレーンリード動作を用いてリード電圧を調整する第1の実施形態にかかる処理の一例を示すフローチャートである。本図に示される処理は、S205において実行されるものである。
まず、S401〜S403によって、マスクデータが取得される。ロワーページがリードの対象である場合には、リードデータCR、リードデータER、およびリードデータHRがマスクデータとして使用される。各マスクデータを取得するためのシングルステートリードは、シングルプレーンリード動作によって実行される。
具体的には、まず、S401では、メモリコントローラ20は、プレーンP0(正確には対象ワード線)からリードデータCRを取得するためのシングルステートリードを実行するシングルプレーンリード動作を、メモリチップ10に指示する。そして、プレーンP0から読み出されたリードデータCRを取得する。
S402では、メモリコントローラ20は、プレーンP0(正確には対象ワード線)からリードデータERを取得するためのシングルステートリードを実行するシングルプレーンリード動作を、メモリチップ10に指示する。そして、プレーンP0から読み出されたリードデータERを取得する。
S403では、メモリコントローラ20は、プレーンP0(正確には対象ワード線)からリードデータHRを取得するためのシングルステートリードを実行するシングルプレーンリード動作を、メモリチップ10に指示する。そして、プレーンP0から読み出されたリードデータHRを取得する。
続いて、S405〜S407のループ処理が5回実行される。各ループ処理では、シングルプレーンリード動作によって、プレーンP0に対するシフトリードが実行される。
つまり、図26の例では、SFT1〜SFT5までの5回分のシフトリードが行われることとしている。SFT1〜SFT5の5回分のシフトリードは、プレーンP0に対して実行される。
なお、シングルプレーンリード動作を用いた推定処理の場合においても、マルチプレーンリード動作を用いた推定処理の場合と同様に、SFT1〜SFT6の6回分のシフトリードが実行されてもよい。SFT1〜SFT6の6回分のシフトリードが実行される場合には、S405〜S407のループ処理が6回実行される。
S405〜S407のループ処理が開始される前に、メモリコントローラ20は、まず、ループ処理のカウンタであるnをゼロにリセットする(S404)。そして、メモリコントローラ20は、プレーンP0にかかるシフト量を設定する(S405)。メモリコントローラ20は、セットフィーチャのコマンドシーケンスを送信することによって、プレーンP0にかかるシフト量を設定する。メモリコントローラ20は、SFT1〜SFT5から選択されたシフトリードで使用されるシフト量を設定する。
続いて、メモリコントローラ20は、プレーンP0に対してシフトリードをメモリチップ10に実行させる(S406)。S406では、シングルプレーンリード動作によってシフトリードが実行される。
続いて、メモリコントローラ20は、メモリチップ10にデータ出力のコマンドシーケンスを送信することによって、プレーンP0に対するシフトリードによって得られたリードデータを取得する(S407)。メモリコントローラ20は、プレーンP0から得られたリードデータを例えばRAM22に格納する。
続いて、メモリコントローラ20は、nが4を越えているか否かを判定する(S408)。この処理は、5回のループ処理が完了したか否かを判定する処理に該当する。nが4を越えていない場合(S408:No)、メモリコントローラ20は、nを1だけインクリメントして(S409)、S405からS407までの処理を再び実行する。
nが4を越えている場合(S408:Yes)、即ち5回のループ処理が完了した場合、メモリコントローラ20は、5回のループ処理によって得られた5回分のシフトリードSFT1〜SFT5のそれぞれによるリードデータを、分離データXRに分離する(S410)。
ここではロワーページを処理の対象としているので、S410では、各シフトリードによるリードデータは、分離データAR、DR、FR、およびKRに分離される。なお、S410の処理では、S401〜S403によって得られたリードデータCR、ER、およびHRのそれぞれがマスクデータとして使用されることによって、分離データAR、DR、FR、およびKRが取得される。
続いて、S313〜S316と同様の処理が、S411〜S414によって実行されて、シングルプレーンリード動作を用いたリード電圧の調整の処理が終了する。
以上では、各メモリセルに4ビットのデータが格納される方式が採用された場合について説明した。第1の実施形態および以降の実施形態にかかる技術は、各メモリセルに格納されるデータのビット数が複数ビットである限り、任意のメモリシステムに適用され得る。
また、メモリチップ10は、2つのプレーンP0、P1を備えることとして説明した。第1の実施形態および以降の実施形態にかかる技術は、3以上のプレーンを有するメモリチップ10を具備するメモリシステムにも適用され得る。例えば、メモリチップ10は、4つのプレーンを有し得る。また、メモリチップ10は、16個のプレーンを有し得る。
例えば、メモリコントローラ20は、3以上のプレーンが並列にシフトリードを実行するマルチプレーンリード動作をメモリチップ10に実行させることで、所望の回数分のシフトリードに要する時間を短縮することができる。メモリコントローラ20は、メモリチップ10が有する全てのプレーンを並列に動作させてもよいし、メモリチップ10が有するプレーンのうちの一部の複数のプレーンを並列に動作させてもよい。
このように、第1の実施形態によれば、メモリチップ10は、複数のプレーンの一例として、プレーンP0とプレーンP1とを備える。各プレーンが備えるメモリセルには、複数ビットのデータの一例として、4ビットのデータが格納され、これによって、一つのワード線は、4ページのデータが格納される。メモリコントローラ20は、4ページのデータのうちの一のページをリード対象としたリードを複数点のリード電圧を用いることによって実行するシフトリードを、プレーンP0およびプレーンP1に対して並列にかつ複数点のリード電圧のシフト量をそれぞれ異ならせてメモリチップ10に実行させる。そして、メモリコントローラ20は、プレーンP0から取得されたリードデータと、プレーンP1から取得されたリードデータと、に基づいて複数点のリード電圧を調整する。
これによって、推定処理に必要な回数のシフトリードが、複数のプレーンに対して分担して実行されるとともに、各プレーンで並列にシフトリードが実行される。その結果、推定処理に必要な回数のシフトリードの実行に要する時間が、マルチプレーンリード動作が使用されない場合に比べて短縮される。つまり、リード電圧の調整に要する時間が抑制される。
また、第1の実施形態によれば、メモリコントローラ20は、マスクデータを取得するためのシングルステートリード、つまりマスクデータリードを、プレーンP0とプレーンP1とに対して並列にメモリチップ10に実行させる。そして、メモリコントローラ20は、シフトリードによって得られた複数のデータと、シングルステートリードによって得られたマスクデータと、に基づいて複数点のリード電圧の調整を行う。
これによって、推定処理に必要なマスクデータの取得を、複数のプレーンで並列に実行することが可能である。
また、第1の実施形態によれば、既に述べたように、ヒストグラム100のビン数に応じた回数のシフトリードが必要となる。例えばn回分のシフトリードが必要である場合には、メモリコントローラ20は、m回分のシフトリードをマルチプレーンリード動作によって複数のプレーンに分担させることができる。よって、メモリコントローラ20は、n(ただしn<m)回のマルチプレーンリード動作によって、m回分のシフトリードのデータを取得することができる。
例えば、3個のビンを有するヒストグラム100を得たい場合には、4回分のシフトリードが必要である。したがって、メモリチップ10に具備されるプレーンの数が2つである場合には、2つのプレーンが並列にシフトリードを実行するマルチプレーンリード動作を2回実行すれば、4回分のシフトリードを実現することができる。メモリチップ10に具備されるプレーンの数が4つである場合には、4つのプレーンが並列にシフトリードを実行するマルチプレーンリード動作を1回実行すれば、4回分のシフトリードを実現することができる。
また、第1の実施形態によれば、メモリコントローラ20は、マスクデータを取得するためのシングルステートリードを、プレーンP0とプレーンP1とが並列に実行するマルチプレーンリード動作を、メモリチップ10に実行させる。そして、メモリコントローラ20は、シフトリードによって得られたm個のデータと、マスクデータと、に基づく論理演算を実行することによって、リード電圧毎の分離データを取得する。
これによって、リード電圧毎にシングルステートリードを実行しなくても、シフトリードによってリード電圧毎のリードデータXRを分離データとして取得することが可能である。
なお、第1の実施形態では、ECC回路23が誤り訂正に失敗したことを契機として推定処理と推定処理によって得られた最適リード電圧の推定値を用いたリード動作のリトライが実行された。推定処理の実行の契機はこれに限定されない。メモリコントローラ20は、任意のタイミングで推定処理を実行し得る。
なお、第1の実施形態の変形例を説明する。
(変形例1)
第1の実施形態によれば、境界リードで使用されるリード電圧毎にヒストグラム100が生成される。しきい値電圧の分布があまり変化していない場合には、あるリード電圧にかかるヒストグラム100には、当該リード電圧の最適値に対応した一つの極小点が現れる。しかしながら、しきい値電圧の分布の変化が大きい場合、あるリード電圧にかかるヒストグラム100には、当該リード電圧の最適値に対応した極小点のほかに、当該リード電圧に隣接する別のリード電圧の最適値に対応した極小点が現れ得る。そのような場合、1つのヒストグラム100に現れた複数の極小点のうちから、所望のリード電圧の最適値に対応する極小点を特定する必要が生じる。
第1の実施形態によれば、境界リードで使用されるリード電圧毎にヒストグラム100が生成される。しきい値電圧の分布があまり変化していない場合には、あるリード電圧にかかるヒストグラム100には、当該リード電圧の最適値に対応した一つの極小点が現れる。しかしながら、しきい値電圧の分布の変化が大きい場合、あるリード電圧にかかるヒストグラム100には、当該リード電圧の最適値に対応した極小点のほかに、当該リード電圧に隣接する別のリード電圧の最適値に対応した極小点が現れ得る。そのような場合、1つのヒストグラム100に現れた複数の極小点のうちから、所望のリード電圧の最適値に対応する極小点を特定する必要が生じる。
メモリコントローラ20は、分離データに基づいて所望のリード電圧の最適値に対応する極小点を特定してもよい。一般に、ランダマイズと称される処理によって、1つのワード線を構成する複数のメモリセルのしきい値電圧がステートEr〜Oまでの16個のステートに均等に分散するように、データの書き込みが実行される。よって、リード電圧の最適値に近い電圧を用いて分離データを取得した場合、当該分離データに含まれるオン状態のメモリセルを示す“1”の数は、分離データのビット数の16分のyとなるはずである。ただし、yはリード電圧の最適値に対応した正の整数である。
例えば、リード電圧VAの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の1となる。
例えば、リード電圧VBの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の2となる。
例えば、リード電圧VCの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の3となる。
例えば、リード電圧VDの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の4となる。
例えば、リード電圧VEの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の5となる。
例えば、リード電圧VFの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の6となる。
例えば、リード電圧VGの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の7となる。
例えば、リード電圧VHの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の8となる。
例えば、リード電圧VIの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の9となる。
例えば、リード電圧VJの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の10となる。
例えば、リード電圧VKの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の11となる。
例えば、リード電圧VLの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の12となる。
例えば、リード電圧VMの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の13となる。
例えば、リード電圧VNの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の14となる。
例えば、リード電圧VOの最適値の近傍の電圧が使用された場合、分離データに含まれる“1”の数は、およそ、分離データのビット数の16分の15となる。
よって、例えば、ヒストグラム100に、ある極小点が現れた場合、メモリコントローラ20は、その極小点が現れた区間の境界の2つの電圧の何れかに対応する分離データに含まれる“1”の数のカウント値に基づいて、その極小点に対応するリード電圧を特定することが可能である。あるリード電圧にかかるヒストグラム100に複数の極小点が現れた場合、メモリコントローラ20は、分離データに基づき、複数の極小点のうちの所望のリード電圧の最適値に対応した極小点を特定するように構成されてもよい。
(変形例2)
上記した説明では、1回のシフトリードでは、複数のリード電圧が基準とされる値から同一の量だけにシフトされた。基準とされる値からのシフト量は複数のリード電圧間で同一でなくてもよい。また、メモリコントローラ20は、どのリード電圧を正方向または負方向にどれだけシフトさせるかを、適宜計算してもよい。また、シフトリードの回数は、静的に設定されていてもよいし、メモリコントローラ20によって動的に変更されてもよい。
上記した説明では、1回のシフトリードでは、複数のリード電圧が基準とされる値から同一の量だけにシフトされた。基準とされる値からのシフト量は複数のリード電圧間で同一でなくてもよい。また、メモリコントローラ20は、どのリード電圧を正方向または負方向にどれだけシフトさせるかを、適宜計算してもよい。また、シフトリードの回数は、静的に設定されていてもよいし、メモリコントローラ20によって動的に変更されてもよい。
例えば、メモリコントローラ20は、Shift_x1、Shift_x2、Shift_x3、をそれぞれ用いた3回のシフトリードによって、分離データXR1、XR2、XR3が得られた場合、ヒストグラム100の2個の互いに隣接するビンの度数を確定させることができる。Shift_x1<Shift_x2<Shift_x3と仮定する。そして、Shift_x1とShift_x2とによって区切られた区間のビンを、ビン1と表記する。Shift_x2とShift_x3とによって区切られた区間のビンを、ビン2と表記する。ビンB1の度数をD1、ビンB2の度数をD2と表記する。
ヒストグラム100を得る目的は、ヒストグラム100の極小点を探索することである。よって、D1>D2であれば、ビンB2が極小点であるか、Shift_x3よりも正側のビンに極小点が現れることが推測できる。そのような場合、メモリコントローラ20は、Shift_x3よりも大きいShift_x4を設定して、次のシフトリードを実行してもよい。メモリコントローラ20は、極小点が確認できるまで、リード電圧XVにかかるシフト量を正側に順次シフトさせながら1回分以上のシフトリードを実行することができる。メモリチップ10が2つのプレーンを有する場合には、リード電圧XVにかかるシフト量をShift_x3よりも正側にシフトした2回分のシフトリードを、1回のマルチプレーンリード動作によって実現することができる。
D1<D2であれば、ビンB1が極小点であるか、Shift_x1よりも負側のビンに極小点が現れることが推測できる。そのような場合、メモリコントローラ20は、Shift_x1よりも小さいShift_x4を設定して、次のシフトリードを実行してもよい。メモリコントローラ20は、極小点が確認できるまで、リード電圧XVにかかるシフト量を負側に順次シフトさせながら1回分以上のシフトリードを実行することができる。メモリチップ10が2つのプレーンを有する場合には、リード電圧XVにかかるシフト量をShift_x1よりも負側にシフトした2回分のシフトリードを、1回のマルチプレーンリード動作によって実現することができる。
メモリコントローラ20は、次のシフトリードのシフト量を度数に基づいて決定する処理を、リード電圧毎に個別に実施することができる。また、メモリコントローラ20は、各リード電圧で極小点が確認できるまで、シフトリードを実行することができる。
なお、度数に基づいてシフト量を決定する技術の一例は、“メモリシステム”というタイトルの特開2018−163724号公報に記載されている。特開2018−163724号公報に記載の技術は、その全体が本願明細書において参照により援用されている。
(第2の実施形態)
次に、第2の実施形態にかかるメモリシステムについて説明する。第2の実施形態では、リード電圧の最適値を推定する処理が第1の実施形態とは異なる。第2の実施形態にかかるメモリシステムでは、リード電圧の最適値を推定する処理として推定関数を用いた方法が適用できる。
次に、第2の実施形態にかかるメモリシステムについて説明する。第2の実施形態では、リード電圧の最適値を推定する処理が第1の実施形態とは異なる。第2の実施形態にかかるメモリシステムでは、リード電圧の最適値を推定する処理として推定関数を用いた方法が適用できる。
図27は、第2の実施形態にかかる、推定関数を用いてリード電圧の最適値を推定する方法の一例を説明するための模式的な図である。
メモリコントローラ20は、予め設定された複数点の参照リード電圧を用いてリードを実行することによって、しきい値電圧に対するメモリセルの数を示すヒストグラムを取得する。複数点の参照リード電圧は、しきい値電圧が取りうる範囲のうちから設定されている。
例えば、複数点の参照リード電圧としては、リード電圧VA、VB、VC、VD、VE、VF、VG、VH、VI、VJ、VK、VL、VM、VN、およびVOのそれぞれのデフォルト値が使用可能である。複数点の参照リード電圧の設定方法はこれに限定されない。また、複数点の参照リード電圧の数は、任意に決定され得る。
複数点の参照リード電圧として15点のリード電圧VA〜VOのデフォルト値が使用された場合、第2の実施形態では、メモリコントローラ20は、隣接する参照リード電圧によって区切られた14個の区分と、リード電圧VAよりも負側の区分と、リード電圧VOよりも正側の区分と、をそれぞれビンとした16個のビンを有するヒストグラム100aを取得することができる。
推定関数200は、16個の行(row)と15個の列(column)とによって構成された行列である。推定関数200の行の数は、ヒストグラム100aを構成するビンの数と等しい。推定関数200の列の数は、推定される最適リード電圧の数と等しい。メモリコントローラ20は、ヒストグラム100aの各ビンの値(度数)を要素として有するベクトルの右側から推定関数200を乗算することによって、15個の要素を有するベクトルを得る。当該15個の要素は、リード電圧VA〜VOの最適値の推定値に該当する。
つまり、図27に示される推定関数200は、ヒストグラムをリード電圧VA〜VOの最適値にマップする回帰モデルとして作成された関数である。推定関数200は、例えば、1以上のメモリチップ10などから、ヒストグラムとリード電圧VA〜VOの最適値との対が多数集められ、集められた多数の対を用いることで生成される。第2の実施形態では、推定関数200を用いて推定されたリード電圧の最適値は、後のシフトリードにおいて実際のリード動作に使用されるという意味で、実リード電圧とも称される。
なお、推定関数200は、必ずしも行列の構造を有するものでなくてもよい。図28は、第2の実施形態にかかる推定関数200の構成の別の一例を説明するための模式的な図である。本図に示されるように、推定関数200は、ニューラルネットワークモデルの構造を有する。
図28の例では、推定関数200は、1つの隠れ層を有する多層パーセプトロン(Multi-Layer Perceptron : MLP)の構成を有するニューラルネットワークモデルである。推定関数200としてのニューラルネットワークモデルは、全結合のMLP(fully connected MLP)であってもよいし、非全結合のMLP(sparsely connected MLP)であってもよい。隠れ層で使用される活性化関数は、例えばReLU(Rectified Linear Units)関数であり、出力層で使用される活性化関数は、例えば線形関数である。なお、推定関数200が備える隠れ層の数は2以上であってもよい。また、隠れ層で使用される活性化関数は、ReLU関数に限定されない。
当該ニューラルネットワークの入力層にはヒストグラムが入力される。即ち、入力層は、ヒストグラムが入力されるノードとして、ヒストグラムが備えるビンの数に対応した数(即ち16個)のノードを備える。ニューラルネットワークモデルの出力層は、リード電圧VA〜VOの数に対応した数(即ち15個)のノードを備える。隠れ層は、1以上のノードによって構成される。
隠れ層および出力層では、各ノードは、バイアスおよび前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。
各重みは、トレーニングによって予め決定されている。つまり、推定関数200としてのニューラルネットワークモデルは、ヒストグラムをリード電圧VA〜VOの最適値にマップするように予めトレーニングされている。
このように、行列だけでなくニューラルネットワークモデルが推定関数200として採用され得る。
16個のビンを有するヒストグラム100aの取得は、複数点の参照リード電圧のそれぞれを用いたシングルステートリードを行うことによって得ることができる。つまり、15点の参照リード電圧が使用される場合、15回分のシングルステートリードによって得られるリードデータによって、ヒストグラム100aを生成することが可能である。
第2の実施形態では、15回分のシングルステートリードが、プレーンP0とプレーンP1とに分けて実行される。そして、プレーンP0に対するシングルステートリードと、プレーンP1に対するシングルステートリードとは、マルチプレーンリード動作によって並列に実行される。これによって、15回分のシングルステートリードに要する時間が、15回分のシングルステートリードがシングルプレーンリード動作によって実行される場合に比べて、抑制される。
図29は、マルチプレーンリード動作を用いてリード電圧を調整する第2の実施形態にかかる処理の一例を示すフローチャートである。本図に示される処理は、S204において実行されるものである。
第2の実施形態では、7回のマルチプレーンリード動作と、1回のシングルプレーンリード動作と、によって、15回分のシングルステートリードが行われる。
例えば、まず、S501では、メモリコントローラ20は、プレーンP0(正確には対象ブロック内の対象ワード線)からリードデータARを取得するためのシングルステートリードと、プレーンP1(正確には対ブロック内の、対象ワード線と同じタイミングでライトされるワード線)からリードデータORを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。メモリコントローラ20は、シングルステートリード(MPR)のコマンドシーケンスをメモリチップ10に送信することによって、当該マルチプレーンリード動作を指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータARと、プレーンP1から読み出されたリードデータORと、を取得する。各リードデータの取得には、データ出力のコマンドシーケンスが使用される。
続いて、S502では、メモリコントローラ20は、プレーンP0からリードデータBRを取得するためのシングルステートリードと、プレーンP1からリードデータNRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータBRと、プレーンP1から読み出されたリードデータNRと、を取得する。
続いて、S503では、メモリコントローラ20は、プレーンP0からリードデータCRを取得するためのシングルステートリードと、プレーンP1からリードデータMRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータCRと、プレーンP1から読み出されたリードデータMRと、を取得する。
続いて、S504では、メモリコントローラ20は、プレーンP0からリードデータDRを取得するためのシングルステートリードと、プレーンP1からリードデータLRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータDRと、プレーンP1から読み出されたリードデータLRと、を取得する。
続いて、S505では、メモリコントローラ20は、プレーンP0からリードデータERを取得するためのシングルステートリードと、プレーンP1からリードデータKRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータERと、プレーンP1から読み出されたリードデータKRと、を取得する。
続いて、S506では、メモリコントローラ20は、プレーンP0からリードデータFRを取得するためのシングルステートリードと、プレーンP1からリードデータJRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータFRと、プレーンP1から読み出されたリードデータJRと、を取得する。
続いて、S507では、メモリコントローラ20は、プレーンP0からリードデータGRを取得するためのシングルステートリードと、プレーンP1からリードデータIRを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。そして、メモリコントローラ20は、プレーンP0から読み出されたリードデータGRと、プレーンP1から読み出されたリードデータIRと、を取得する。
続いて、S508では、メモリコントローラ20は、プレーンP0からリードデータHRを取得するためのシングルステートリードを、メモリチップ10に指示する。プレーンP0からリードデータHRを取得するためのシングルステートリードは、シングルプレーンリード動作によって実行される。メモリコントローラ20は、プレーンP0から読み出されたリードデータHRを取得する。
なお、S501〜S508では、リード電圧VA〜VOとして、それぞれデフォルト値が使用される。
続いて、メモリコントローラ20は、S501〜S508によって得られたリードデータAR〜ORのそれぞれに対し、オン状態のメモリセルを示す“1”の数をカウントする(S509)。そして、メモリコントローラ20は、オン状態のメモリセルを示す“1”の数のカウントの結果に基づいて、ヒストグラム100aを生成する(S510)。
そして、メモリコントローラ20は、ヒストグラム100aと、推定関数200と、に基づいてリード電圧AR〜ORの最適値AR’〜OR’を推定する(S511)。推定関数200は、16個の行と15個の列とによって構成される行列であってもよいし、16個の入力ノードと15個の出力ノードとを備えるニューラルネットワークモデルであってもよい。
そして、メモリコントローラ20は、プレーンP0に対するリード動作の際にリード電圧VA、DA、VF、およびVKとして最適値VA’、DA’、VF’、およびVK’の推定値を使用できるように、シフト量を設定する(S512)。これによって、対象ページに対し、調整後のリード電圧を用いたシフトリードを実行することが可能な状態となる。
S512によって、マルチプレーンリード動作を用いてリード電圧を調整する処理が終了する。
図30は、シングルプレーンリード動作を用いてリード電圧を調整する第2の実施形態にかかる処理の一例を示すフローチャートである。本図に示される処理は、S205において実行されるものである。
第2の実施形態では、15点の参照リード電圧としてリード電圧AR〜ORのデフォルト値が使用される。このことを利用して、図30の例では、プレーンP0(正確にはプレーンP0の対象ワード線の各ページ)に対し、ロワーページ、ミドルページ、アッパーページ、およびトップページのデータをリードする合計4回のシフトリードが実行される。そして、ロワーページ、ミドルページ、アッパーページ、およびトップページのそれぞれデータに基づいて、対象ワード線に接続された複数のメモリセルが、Erステート〜Oステートの合計16個のステートに分類される。Erステート〜Oステートのそれぞれに分類されたメモリセルの数が、ヒストグラム100aの16個のビンの度数とされる。
具体的には、S601では、メモリコントローラ20は、プレーンP0(正確にはプレーンP0の対象ワード線の各ページ)に対し、ロワーページのデータをリードするシフトリードをメモリチップ10に実行させる。そして、ロワーページから読み出されたリードデータを取得する。
S602では、メモリコントローラ20は、プレーンP0に対し、ミドルページのデータをリードするシフトリードをメモリチップ10に実行させる。そして、ミドルページから読み出されたリードデータを取得する。
S603では、メモリコントローラ20は、プレーンP0に対し、アッパーページのデータをリードするシフトリードをメモリチップ10に実行させる。そして、アッパーページから読み出されたリードデータを取得する。
S604では、メモリコントローラ20は、プレーンP0に対し、トップページのデータをリードするシフトリードをメモリチップ10に実行させる。そして、トップページから読み出されたリードデータを取得する。
なお、S601〜S604では、リード電圧VA〜VOとして、それぞれデフォルト値が使用される。
S605では、メモリコントローラ20は、S601〜S604によって読み出された4ページ分のデータに基づいて、各ステートに属するメモリセルの数をカウントする。
そして、メモリコントローラ20は、ステート毎のカウント値を度数とするヒストグラム100aを生成する(S606)。
そして、S510〜S511と同様の処理が、S607〜S608において実行される。
このように、第2の実施形態によれば、メモリチップ10は、複数のプレーンの一例として、プレーンP0とプレーンP1とを備える。各プレーンが備えるメモリセルには、複数ビットのデータの一例として、4ビットのデータが格納され、これによって、一つのワード線は、4ページのデータが格納される。メモリコントローラ20は、複数点の参照リード電圧の一を用いたシングルステートリードを、プレーンP0とプレーンP1とに対して並列に実行するマルチプレーンリード動作をメモリチップ10に実行させる。マルチプレーンリード動作では、プレーンP0とプレーンP1とで複数点の参照リード電圧のうちのそれぞれ異なる参照リード電圧を使用させる。そして、メモリコントローラ20は、各プレーンから取得された、シングルステートリードによるリードデータに基づいて、4ビットのデータのデータをリードするための実リード電圧を取得する。
これによって、複数点の参照リード電圧のそれぞれを用いたシングルステートリードが、複数のプレーンに対して分担して実行されるとともに、各プレーンで並列にシングルステートリードが実行される。その結果、推定処理に必要な回数のシングルステートリードの実行に要する時間が、マルチプレーンリード動作が使用されない場合に比べて短縮される。つまり、リード電圧の調整に要する時間が抑制される。
また、第2の実施形態によれば、参照リード電圧毎のシングルステートリードが必要である。参照リード電圧の数がm個であれば、m回分のシングルステートリードが必要である。メモリコントローラ20は、m回分のシングルステートリードを、マルチプレーンリード動作によって複数のプレーンに分担させることができる。よって、メモリコントローラ20は、n(ただしn<m)回のマルチプレーンリード動作によって、m個の参照リード電圧のそれぞれにかかるリードデータXDを取得することができる。
また、第2の実施形態によれば、メモリコントローラ20は、m個の参照リード電圧のそれぞれにかかるリードデータXDに基づいてヒストグラム100aを生成し、ヒストグラム100aと推定関数200とに基づいて実リード電圧を取得する。
なお、第2の実施形態においても、ECC回路23が誤り訂正に失敗したことを契機として推定処理と推定処理によって得られた最適リード電圧の推定値を用いたリード動作のリトライが実行された。推定処理の実行の契機はこれに限定されない。メモリコントローラ20は、任意のタイミングで推定処理を実行し得る。
なお、以上の説明においては、推定関数200は、16個のビンを有するヒストグラム100aを15点のリード電圧VA〜VOの最適値にマッピングするように構成された。推定関数200に入力される、ヒストグラム100aのビンの数は、任意に変更可能である。例えば、推定関数200は、8個のビンを有するヒストグラム100aを15点のリード電圧VA〜VOの最適値にマッピングするように構成されたものであってもよい。また、推定関数200は、32個のビンを有するヒストグラム100aを15点のリード電圧VA〜VOの最適値にマッピングするように構成されたものであってもよい。ヒストグラム100aのビンの数を多くするほど、推定精度が向上し得る。
図31は、マルチプレーンリード動作を用いてリード電圧を調整する第2の実施形態にかかる処理の別の一例を示すフローチャートである。本図に示される処理は、S204において実行されるものである。
図31に示される例では、32個のビンを有するヒストグラムを15点のリード電圧VA〜VOの最適値にマッピングするように構成された推定関数200が使用される。そして、32個のビンを有するヒストグラム100aは、プレーンP0に対する15点のリード電圧VA〜VOのデフォルト値が15点の参照リード電圧として使用されることで得られる16個のビンを有するヒストグラムと、プレーンP1に対する15点のリード電圧VA〜VOのデフォルト値が15点の参照リード電圧として使用されることで得られる16個のビンを有するヒストグラムと、の組み合わせとして構成される。
そして、プレーンP0およびプレーンP1に対する参照リード電圧を用いたシングルステートリードは、マルチプレーンリード動作によって並列に実行される。
具体的には、例えば、S701では、メモリコントローラ20は、プレーンP0(正確には対象ブロック内の対象ワード線)およびプレーンP1(正確には対ブロック内の、対象ワード線と同じタイミングでライトされるワード線)からリードデータARを取得するためのシングルステートリードと、を並列に実行するマルチプレーンリード動作を、メモリチップ10に指示する。メモリコントローラ20は、シングルステートリード(MPR)のコマンドシーケンスをメモリチップ10に送信することによって、当該マルチプレーンリード動作を指示する。そして、メモリコントローラ20は、プレーンP0およびプレーンP1のそれぞれから読み出されたリードデータARを取得する。各リードデータの取得には、データ出力のコマンドシーケンスが使用される。
S702〜S715のそれぞれにおいて、S701と同様の方法で、プレーンP0とプレーンP1とに対するシングルステートリードがマルチプレーンリード動作によって実行される。これによって、プレーンP0およびプレーンP1のそれぞれからリードデータBR〜ORが取得される。
続いて、メモリコントローラ20は、S701〜S715によってプレーンP0およびプレーンP1のそれぞれから得られたリードデータAR〜ORに対し、オン状態のメモリセルを示す“1”の数をカウントする(S716)。
そして、メモリコントローラ20は、オン状態のメモリセルを示す“1”の数のカウントの結果に基づいて、32個のビンを有するヒストグラム100aを生成する(S717)。つまり、プレーンP0から得られたリードデータAR〜ORのそれぞれの“1”の数に基づいて生成された8個のビンを有するヒストグラムと、プレーンP1から得られたリードデータAR〜ORのそれぞれの“1”の数に基づいて生成された8個のビンを有するヒストグラムと、のセットが、32個のビンを有するヒストグラム100aとされる。
そして、メモリコントローラ20は、ヒストグラム100aと、推定関数200と、に基づいてリード電圧AR〜ORの最適値AR’〜OR’を推定する(S718)。推定関数200は、32個の行と15個の列とによって構成される行列であってもよいし、32個の入力ノードと15個の出力ノードとを備えるニューラルネットワークモデルであってもよい。
そして、メモリコントローラ20は、プレーンP0に対するリード動作の際にリード電圧VA、DA、VF、およびVKとして最適値VA’、DA’、VF’、およびVK’の推定値を使用できるように、シフト量を設定する(S719)。これによって、対象ページに対し、調整後のリード電圧を用いたシフトリードを実行することが可能な状態となる。
S719によって、マルチプレーンリード動作を用いてリード電圧を調整する処理が終了する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、10 メモリチップ、11,11A,11B メモリセルアレイ、12,12A,12B センスアンプモジュール、13,13A,13B ロウデコーダ、14 周辺回路、20 メモリコントローラ、21 CPU、22 RAM、23 ECC回路、24 NANDインターフェイス回路、25 バッファメモリ、26 ホストインターフェイス回路、30 ロジック制御回路、31 入出力回路、32 レジスタ、33,33A,33B パラメータレジスタ、34 アドレスレジスタ、35 コマンドレジスタ、36 シーケンサモジュール、37 レディ/ビジー制御回路、38 電圧生成回路、39 ドライバモジュール、100,100a ヒストグラム、200 推定関数。
Claims (12)
- 第1プレーンと第2プレーンとを備え、前記第1プレーンおよび前記第2プレーンのそれぞれは、複数のメモリセルと、前記複数のメモリセルと接続されたワード線と、を備え、前記複数のメモリセルのそれぞれは、複数のビットのデータに対応したしきい値電圧が設定される、メモリチップと、
前記複数のメモリセルから前記複数のビットのうちの一のビットのデータ群を複数点の第1リード電圧を使用することでリードする第1リード処理を、前記第1プレーンと前記第2プレーンとに対して並列にかつ前記第1プレーンと前記第2プレーンとで前記複数点の第1リード電圧を異ならせて前記メモリチップに実行させ、
前記第1プレーンの前記複数のメモリセルからリードされた前記データ群と、前記第2プレーンの前記複数のメモリセルからリードされた前記データ群と、に基づいて前記複数点の第1リード電圧を調整する、
メモリコントローラと、
を備える、メモリシステム。 - 前記メモリコントローラは、
第2リード電圧と第3リード電圧との対毎に第2リード処理を前記第1プレーンと前記第2プレーンとに対して並列に前記メモリチップに実行させ、
前記第2リード電圧は、前記複数点の第1リード電圧のうちの一であり、
前記第3リード電圧は、前記複数点の第1リード電圧のうちの前記第2リード電圧の次に大きい前記第1リード電圧であり、
前記第2リード処理は、前記第2リード電圧と前記第3リード電圧の間に設定された第4リード電圧を前記ワード線に印加するとともに前記複数のメモリセルのオンまたはオフをセンスする処理であり、
前記第1プレーンの前記複数のメモリセルからリードされた前記データ群と、前記第2プレーンの前記複数のメモリセルからリードされた前記データ群と、前記第2リード処理によって取得されたセンス結果と、に基づいて前記複数点の第1リード電圧を調整する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を、前記複数点の第1リード電圧を異ならせてn回、前記メモリチップに実行させることで、前記第1プレーンの前記複数のメモリセルからリードされた前記データ群と、前記第2プレーンの前記複数のメモリセルからリードされた前記データ群と、を含む、リードに使用された前記複数点の第1リード電圧がそれぞれ異なるm個の前記データ群を取得して、前記m個の前記データ群に基づいて前記複数点の第1リード電圧を調整し、
前記nは1以上の整数であり、
前記mは前記nよりも大きい整数である、
請求項1に記載のメモリシステム。 - 前記第1リード処理は、前記複数点の第1リード電圧を前記ワード線に印加するとともに前記ワード線に印加された前記第1リード電圧毎に前記複数のメモリセルのオンまたはオフをセンスして、前記第1リード電圧毎に取得されたセンス結果に基づいて前記データ群を取得する処理であり、
前記メモリコントローラは、
前記m個の前記データ群のそれぞれから前記複数点の第1リード電圧毎の前記センス結果を演算し、
演算によって取得された前記複数点の第1リード電圧毎の前記センス結果に基づいてしきい値電圧に対するメモリセルの数を示すヒストグラムを生成し、
前記ヒストグラムに基づいて前記複数点の第1リード電圧を調整する、
請求項3に記載のメモリシステム。 - 前記メモリコントローラは、
第2リード電圧と第3リード電圧との対毎に第2リード処理を前記第1プレーンと前記第2プレーンとに対して並列に前記メモリチップに実行させ、
前記第2リード電圧は、前記複数点の第1リード電圧のうちの一であり、
前記第3リード電圧は、前記複数点の第1リード電圧のうちの前記第2リード電圧の次に大きい前記第1リード電圧であり、
前記第2リード処理は、前記第2リード電圧と前記第3リード電圧の間に設定された第4リード電圧を前記ワード線に印加するとともに前記複数のメモリセルのオンまたはオフをセンスする処理であり、
前記m個の前記データ群と、前記第2リード処理によるセンス結果と、を用いた論理演算によって、前記複数点の第1リード電圧毎の前記センス結果を取得する、
請求項4に記載のメモリシステム。 - 前記メモリコントローラは、前記第1プレーンに対する第3リード処理を前記メモリチップに実行させ、前記第3リード処理は、前記第1リード処理と同じ処理であり、
前記第3リード処理によって前記第1プレーンの前記複数のメモリセルから取得された前記データ群に対して誤り訂正を実行し、
前記誤り訂正の実行に失敗した場合、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させて、前記複数点の第1リード電圧を調整し、
前記調整後の前記複数点の第1リード電圧を用いて前記第1プレーンに対する前記第3リード処理を前記メモリチップに実行させる、
請求項1から5の何れか一項に記載のメモリシステム。 - 前記メモリコントローラは、
前記第2プレーンの前記複数のメモリセルが故障していない場合に、記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させ、
前記第2プレーンの前記複数のメモリセルが故障している場合に、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させない、
請求項6に記載のメモリシステム。 - 第1プレーンと第2プレーンとを備え、前記第1プレーンおよび前記第2プレーンのそれぞれは、複数のメモリセルと、前記複数のメモリセルと接続されたワード線と、を備え、前記複数のメモリセルのそれぞれは、複数のビットのデータに対応したしきい値電圧が設定される、メモリチップと、
複数点の参照リード電圧のうちの一を前記ワード線に印加するとともに前記複数のメモリセルのオンまたはオフをセンスする第1リード処理を、前記第1プレーンと前記第2プレーンとに対して並列にかつ前記第1プレーンと前記第2プレーンとで前記複数点の参照リード電圧のうちのそれぞれ異なる参照リード電圧を使用させて前記メモリチップに実行させ、
前記第1リード処理によるセンス結果に基づいて前記複数のビットのデータをリードするための実リード電圧を取得する、
メモリコントローラと、
を備えるメモリシステム。 - 前記複数点の参照リード電圧は、m点の参照リード電圧であり、
前記メモリコントローラは、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を、前記参照リード電圧を異ならせてn回、前記メモリチップに実行させることで、使用された前記参照リード電圧がそれぞれ異なるm個の前記センス結果を取得し、
前記nは1以上の整数であり、
前記mは前記nよりも大きい整数である、
請求項8に記載のメモリシステム。 - 前記メモリコントローラは、
前記m個の前記センス結果に基づいてしきい値電圧に対するメモリセルの数を示すヒストグラムを生成し、
前記ヒストグラムと推定関数とに基づいて前記実リード電圧を取得する、
請求項9に記載のメモリシステム。 - 前記メモリコントローラは、
前記第1プレーンに対する第2リード処理を前記メモリチップに実行させ、前記第2リード処理は、前記実リード電圧を使用することで前記複数のメモリセルからデータ群をリードする処理であり、
前記第2リード処理によって前記第1プレーンの前記複数のメモリセルから取得された前記データ群に対して誤り訂正を実行し、
前記誤り訂正の実行に失敗した場合、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させて、前記実リード電圧を取得し、
取得された前記実リード電圧を用いて前記第1プレーンに対する前記第2リード処理を前記メモリチップに実行させる、
請求項8から10の何れか一項に記載のメモリシステム。 - 前記メモリコントローラは、
前記第2プレーンの前記複数のメモリセルが故障していない場合に、記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させ、
前記第2プレーンの前記複数のメモリセルが故障している場合に、前記第1プレーンと前記第2プレーンとに対する並列の前記第1リード処理を前記メモリチップに実行させない、
請求項11に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019170739A JP2021047963A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
US17/003,937 US11211138B2 (en) | 2019-09-19 | 2020-08-26 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019170739A JP2021047963A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021047963A true JP2021047963A (ja) | 2021-03-25 |
Family
ID=74878624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019170739A Pending JP2021047963A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11211138B2 (ja) |
JP (1) | JP2021047963A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220101502A (ko) * | 2021-01-11 | 2022-07-19 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법 |
US11922049B2 (en) * | 2021-08-20 | 2024-03-05 | Micron Technology, Inc. | Trim values for multi-plane operations |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
US9465732B2 (en) * | 2013-03-15 | 2016-10-11 | Sandisk Technologies Llc | Binning of blocks for dynamic linking |
KR102238592B1 (ko) * | 2014-08-08 | 2021-04-09 | 삼성전자주식회사 | 비휘발성 메모리 장치의 디폴트 독출 전압 설정 방법 및 비휘발성 메모리 장치의 데이터 독출 방법 |
US20160283111A1 (en) | 2015-03-26 | 2016-09-29 | Intel Corporation | Read operations in memory devices |
US9792995B1 (en) | 2016-04-26 | 2017-10-17 | Sandisk Technologies Llc | Independent multi-plane read and low latency hybrid read |
JP2017224370A (ja) | 2016-06-15 | 2017-12-21 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
JP2018045750A (ja) | 2016-09-16 | 2018-03-22 | 東芝メモリ株式会社 | 半導体記憶装置 |
JP2018163724A (ja) | 2017-03-27 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
KR20190102596A (ko) * | 2018-02-26 | 2019-09-04 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 동작 방법 |
JP2020004465A (ja) | 2018-06-26 | 2020-01-09 | キオクシア株式会社 | 半導体記憶装置 |
-
2019
- 2019-09-19 JP JP2019170739A patent/JP2021047963A/ja active Pending
-
2020
- 2020-08-26 US US17/003,937 patent/US11211138B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210090682A1 (en) | 2021-03-25 |
US11211138B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230282276A1 (en) | Semiconductor memory device and memory system | |
US10431299B2 (en) | Semiconductor storage device and memory system | |
US11216337B2 (en) | Memory system | |
US11170857B2 (en) | Semiconductor memory device that performs successive tracking reads during an operation to read one page | |
US10026491B2 (en) | Semiconductor memory device and memory system | |
JP6991084B2 (ja) | 不揮発性メモリデバイス及び制御方法 | |
US10854303B2 (en) | Apparatus and methods for determining data states of memory cells | |
KR20150029404A (ko) | 반도체 장치, 메모리 시스템 및 이의 동작 방법 | |
US11231874B2 (en) | Memory system and storage system | |
JP2018028956A (ja) | 半導体記憶装置及びメモリシステム | |
US11361820B2 (en) | Semiconductor memory device to hold 5-bits of data per memory cell | |
US9583207B2 (en) | Adaptive data shaping in nonvolatile memory | |
WO2015033417A1 (ja) | 半導体記憶装置及びデータ書き込み方法 | |
US11211138B2 (en) | Memory system | |
JP2021190150A (ja) | メモリシステム及びメモリコントローラ | |
US11309039B2 (en) | Apparatus for determining a pass voltage of a read operation | |
US9361983B2 (en) | Semiconductor device and method of refresh thereof | |
JP2021149995A (ja) | メモリシステム | |
JP2021039810A (ja) | メモリシステム | |
JP2020047326A (ja) | 半導体メモリ装置、メモリシステム、および方法 | |
US11978515B2 (en) | Semiconductor memory device and reading method | |
JP2020095766A (ja) | 半導体記憶装置 | |
JP2019160379A (ja) | 半導体記憶装置及びメモリシステム | |
US20240087659A1 (en) | Semiconductor storage device | |
TWI722730B (zh) | 記憶體系統 |