(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024135874
(43)【公開日】2024-10-04
(54)【発明の名称】メモリシステムおよび方法
(51)【国際特許分類】
G06F 11/10 20060101AFI20240927BHJP
G11C 16/04 20060101ALI20240927BHJP
G11C 16/08 20060101ALI20240927BHJP
G11C 16/26 20060101ALI20240927BHJP
【FI】
G06F11/10 672
G11C16/04 170
G11C16/08 120
G11C16/26 100
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023046769
(22)【出願日】2023-03-23
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】永嶋 宏和
(72)【発明者】
【氏名】小林 弘樹
【テーマコード(参考)】
5B225
【Fターム(参考)】
5B225BA02
5B225BA08
5B225BA19
5B225DA10
5B225EA05
5B225FA01
5B225FA02
(57)【要約】
【課題】最適化リード動作を効率よく実行することが可能なメモリシステムおよび方法を提供すること。
【解決手段】メモリシステムのコントローラは、複数の第1記憶領域に対し、順次かつ繰り返し、第1動作を実行する。第1動作は、複数の第1記憶領域のうちの一である第2記憶領域の各メモリセルのしきい値電圧と判定電圧との比較に基づき第1データを取得し、第1データのフェイルビットカウントを計算し、フェイルビットカウントが第1しきい値より大きい場合、第2動作を実行し、フェイルビットカウントが第1しきい値より小さい場合、前記第2動作をスキップする、動作である。第1データは第2記憶領域に格納されている第2データの一部である。第2動作は、第2データを取得し、第2データのフェイルビットカウントを計算し、第2データのフェイルビットカウントに基づいて判定電圧を更新する動作である。
【選択図】
図14
【特許請求の範囲】
【請求項1】
複数の第1記憶領域を備え、前記複数の第1記憶領域のそれぞれがワード線と前記ワード線に接続される複数のメモリセルとを備える、メモリと、
前記複数の第1記憶領域に対し、順次かつ繰り返し、第1動作を実行し、
前記第1動作は、前記複数の第1記憶領域のうちの一である第2記憶領域の各メモリセルのしきい値電圧と判定電圧との比較に基づき第1データを取得し、前記第1データは前記第2記憶領域に格納されている第2データの一部であり、前記第1データのフェイルビットカウントである第1フェイルビットカウントを計算し、前記第1フェイルビットカウントが第1しきい値より大きい場合、第2動作を実行し、前記第1フェイルビットカウントが前記第1しきい値より小さい場合、前記第2動作をスキップする、動作であり、
前記第2動作は、前記第2記憶領域の各メモリセルのしきい値電圧と前記判定電圧との比較に基づき前記第2データを取得し、前記第2データのフェイルビットカウントである第2フェイルビットカウントを計算し、前記第2フェイルビットカウントに基づいて前記判定電圧を更新する動作である、
コントローラと、
を備えるメモリシステム。
【請求項2】
前記複数のメモリセルのそれぞれは、複数ビットのデータを格納可能であり、
前記第1データは、前記複数ビットのうちの第1ビットのデータの群であり、
前記第2データは、前記複数ビットのデータの群である、
請求項1に記載のメモリシステム。
【請求項3】
前記複数の第1記憶領域のそれぞれに特性情報が関連付けられ、
前記コントローラは、前記第1動作において、前記第2記憶領域に関連付けられた前記特性情報に基づき前記第1しきい値を特定する、
請求項1に記載のメモリシステム。
【請求項4】
誤り訂正能力の設定が変更可能であり、前記複数の第1記憶領域にライトされるデータに対し誤り訂正符号化を行う誤り訂正回路を備え、
前記コントローラは、前記第1動作において、前記第2データに対する前記誤り訂正符号化にかかる前記誤り訂正能力の設定に基づき前記第1しきい値を特定する、
請求項1に記載のメモリシステム。
【請求項5】
誤り訂正能力の設定が変更可能であり、前記複数の第1記憶領域にライトされるデータに対し誤り訂正符号化を行う誤り訂正回路を備え、
前記複数の第1記憶領域のそれぞれに特性情報が関連付けられ、
前記コントローラは、前記第1動作において、前記第2記憶領域に関連付けられた前記特性情報と、前記第2データに対する前記誤り訂正符号化にかかる前記誤り訂正能力の設定と、に基づき前記第1しきい値を特定する、
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、前記第2動作では、前記第2記憶領域から各メモリセルのしきい値電圧と前記判定電圧との比較に基づき前記複数ビットのうちの前記第1ビットを除く全ビットのデータの群をリードし、前記リードされた群と前記第1データとから前記第2データを取得する、
請求項2に記載のメモリシステム。
【請求項7】
前記コントローラは、前記第1データまたは前記第2データである第3データに対して誤り訂正を実行し、前記誤り訂正の前の前記第3データと、前記誤り訂正の後の前記第3データと、の比較に基づいて前記第3データのフェイルビットカウントを計算する、
請求項1に記載のメモリシステム。
【請求項8】
メモリを制御する方法であって、
前記メモリに具備される複数の第1記憶領域に対し、順次かつ繰り返し、第1動作を実行すること、を備え、
前記複数の第1記憶領域のそれぞれは、ワード線と前記ワード線に接続される複数のメモリセルとを備え、
前記第1動作は、前記複数の第1記憶領域のうちの一である第2記憶領域の各メモリセルのしきい値電圧と判定電圧との比較に基づき第1データを取得し、前記第1データは前記第2記憶領域に格納されている第2データの一部であり、前記第1データのフェイルビットカウントである第1フェイルビットカウントを計算し、前記第1フェイルビットカウントが第1しきい値より大きい場合、第2動作を実行し、前記第1フェイルビットカウントが前記第1しきい値より小さい場合、前記第2動作をスキップする、動作であり、
前記第2動作は、前記第2記憶領域の各メモリセルのしきい値電圧と前記判定電圧との比較に基づき前記第2データを取得し、前記第2データのフェイルビットカウントである第2フェイルビットカウントを計算し、前記第2フェイルビットカウントに基づいて前記判定電圧を更新する動作である、
方法。
【請求項9】
複数の第1記憶領域を備え、前記複数の第1記憶領域のそれぞれがワード線と前記ワード線に接続される複数のメモリセルとを備える、メモリと、
前記複数の第1記憶領域に対し、順次かつ繰り返し、第1動作を実行し、
前記第1動作は、前記複数の第1記憶領域のうちの一である第2記憶領域の各メモリセルのしきい値電圧と判定電圧との比較に基づき第1データを取得し、前記第1データは前記第2記憶領域に格納されている第2データの一部であり、前記第1データのフェイルビットカウントである第1フェイルビットカウントを計算し、前記第1フェイルビットカウントが第1しきい値より大きい場合、第2動作を実行し、前記第1フェイルビットカウントが前記第1しきい値より小さい場合、前記第2動作をスキップする、動作であり、
前記第2動作は、前記第2記憶領域に対するリード動作を実行し、当該リード動作によって得られたデータに基づいて前記判定電圧を更新する動作である、
コントローラと、
を備えるメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムおよび方法に関する。
【背景技術】
【0002】
従来、メモリセルトランジスタを有する半導体メモリを備えたメモリシステムが広く知られている。そのようなメモリシステムにおいては、リード動作においては、メモリセルトランジスタのしきい値電圧と判定電圧との比較に基づいて、そのメモリセルトランジスタに格納されているデータが判定される。
【0003】
メモリセルトランジスタのしきい値電圧は、種々の要因によって変化し得る。メモリセルトランジスタのしきい値電圧の変化によって、そのメモリセルトランジスタに格納されているデータが誤ったデータに変化し得る。メモリシステムは、誤りの少ないデータをリードできるように、最適な判定電圧を得るための特殊なリード動作を、所定の基準で選択された複数の記憶領域に対して順次かつ繰り返し実行する。この特殊なリード動作を、最適化リード動作と表記する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
一つの実施形態は、最適化リード動作を効率よく実行することが可能なメモリシステムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの実施形態によれば、メモリシステムは、メモリと、コントローラと、を備える。メモリは、複数の第1記憶領域を備え、複数の第1記憶領域のそれぞれはワード線とワード線に接続される複数のメモリセルとを備える。コントローラは、複数の第1記憶領域に対し、順次かつ繰り返し、第1動作を実行する。第1動作は、複数の第1記憶領域のうちの一である第2記憶領域の各メモリセルのしきい値電圧と判定電圧との比較に基づき第1データを取得し、第1データのフェイルビットカウントである第1フェイルビットカウントを計算し、第1フェイルビットカウントが第1しきい値より大きい場合、第2動作を実行し、第1フェイルビットカウントが第1しきい値より小さい場合、前記第2動作をスキップする、動作である。第1データは第2記憶領域に格納されている第2データの一部である。第2動作は、第2記憶領域の各メモリセルのしきい値電圧と前記判定電圧との比較に基づき第2データを取得し、第2データのフェイルビットカウントである第2フェイルビットカウントを計算し、第2フェイルビットカウントに基づいて判定電圧を更新する動作である。
【図面の簡単な説明】
【0007】
【
図1】実施形態のメモリシステムの構成例を示す図。
【
図4】実施形態のデータコーディングの一例を説明するための図。
【
図5】実施形態のメモリセルが取り得るしきい値電圧の別の一例を示す図。
【
図6】実施形態のメモリシステムにおいてそれぞれ異なるメモリチップに対して使用される2つのFBCしきい値を説明するためのグラフ。
【
図7】疲弊試験の結果からデータリテンション特性を特定する実施形態にかかる方法の一例を説明するための図。
【
図8】実施形態の誤り訂正機能による誤り訂正能力の違いによる1ページに格納可能な原データの情報量の違いを説明するための模式的な図。
【
図9】実施形態のメモリシステムにおいて使用される管理情報の一例を示す図。
【
図10】実施形態の試験結果情報のデータ構造の一例を示す模式的な図。
【
図11】実施形態のFBCしきい値情報のデータ構造の一例を示す模式的な図。
【
図12】疲弊試験の実施時における実施形態のメモリシステムの動作の一例を示すフローチャート。
【
図13】ホスト機器からのリードコマンドに応じた実施形態のメモリシステムの動作の一例を示すフローチャート。
【
図14】実施形態の最適化パトロール動作の一例を示すフローチャート。
【
図15】実施形態の最適化リード動作の一例を示すタイミングチャート。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0009】
(実施形態)
図1は、実施形態のメモリシステムの構成例を示す図である。
図1に示されるように、メモリシステム1は、ホスト機器300と接続可能である。ホスト機器300は、例えば、サーバ、パーソナルコンピュータ、またはモバイル型の情報処理装置などが該当する。メモリシステム1は、ホスト機器300の外部記憶装置として機能する。ホスト機器300は、メモリシステム1に対してコマンドを発行することができる。メモリシステム1に対するコマンドは、リードコマンドおよびライトコマンドを含む。
【0010】
メモリシステム1は、NAND型フラッシュメモリ100とコントローラ200を備える。NAND型フラッシュメモリ100は、1以上のメモリチップCPを含む。コントローラ200には1以上のチャネルが接続され、コントローラ200と1以上のメモリチップCPとは1以上のチャネルを介して相互に接続される。
【0011】
ここでは、メモリシステム1は、1以上のメモリチップCPとして、メモリチップCP0-0、CP0-1、CP0-2、CP0-3、CP1-0、CP1-1、CP1-2、CP1-3、を備え、1以上のチャネルとして、チャネルch0、ch1を備える。メモリチップCP0-0、CP0-1、CP0-2、CP0-3は、チャネルch0を介してコントローラ200に接続される。メモリチップCP1-0、CP1-1、CP1-2、CP1-3は、チャネルch1を介してコントローラ200に接続される。なお、メモリシステム1に具備されるメモリチップCPの数は、8に限定されない。コントローラ200に接続されるチャネルの数は2に限定されない。また、コントローラ200と1以上のメモリチップCPとの間の接続関係は上記した関係に限定されない。
【0012】
各メモリチップCPは、複数のメモリセルトランジスタを備え、データを不揮発に記憶することができる。
【0013】
なお、NAND型フラッシュメモリ100はメモリの一例である。
【0014】
コントローラ200は、ホストインタフェース回路(HOST I/F)201、RAM(Random Access Memory)202、CPU(Central Processing Unit)203、バッファメモリ(Buffer Memory)204、NANDインタフェース回路(NAND I/F)205、およびECC(Error-Correcting Code)回路206を備える。
【0015】
コントローラ200は、例えばSoC(System-On-a-Chip)として構成され得る。コントローラ200は、複数のチップによって構成されてもよい。コントローラ200は、CPU203に代えて、FPGA(field-programmable gate array)またはASIC(application specific integrated circuit)を備えていてもよい。つまり、コントローラ200は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって構成され得る。RAM202は、コントローラ200の外に配置されてもよい。
【0016】
ホストインタフェース回路201は、例えばSATA(Serial Advanced Technology Attachment)規格、SAS(Serial Attached SCSI)規格、またはPCI(Peripheral Components Interconnect) Express(TM)などに準拠したバスを介してホスト機器300と接続され、コントローラ200とホスト機器300との通信を司る。なお、ホストインタフェース回路201とホスト機器300とを相互に接続するバスが準拠する規格はこれらに限定されない。
【0017】
NANDインタフェース回路205は、2つのチャネルを介して8個のメモリチップCPと接続され、コントローラ200と各メモリチップCPとの通信を司る。
【0018】
CPU203は、コントローラ200の動作を制御する。
【0019】
RAM202は、CPU203の作業領域として使用される。バッファメモリ204は、メモリチップCPに送信されるデータ、およびメモリチップCPから受信したデータを一時的に記憶する。RAM202およびバッファメモリ204は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)、またはこれらの組み合わせなどによって構成され得る。なお、RAM202およびバッファメモリ204を構成するメモリの種類は、これらに限定されない。
【0020】
ECC回路206は、誤り訂正符号を用いて誤りの検出および検出された誤りの訂正を実行する。誤りの検出および検出された誤りの訂正を単に誤り訂正と表記する。ECC回路206は、CPU203との協働によって、誤り訂正の強度が異なる複数のモードの誤り訂正が可能である。複数のモードは、一例では、ハードビット訂正とソフトビット訂正とを含む。
【0021】
なお、複数のモードの誤り訂正のうちの一部または全部はCPU203など他の任意の回路によって実現されてもよい。
【0022】
コントローラ200が実行する通常のリード動作では、ECC回路206による誤り訂正が実行される。いくつかのケースでは、コントローラ200は、ECC回路206による誤り訂正を実行しないリード動作を実行できる。このようなECC回路206による誤り訂正を実行しないリード動作を、バイパスリードと表記する。バイパスリードによれば、誤りが訂正される前のデータを取得することができる。バイパスリードが実行されるケースについては後述される。
【0023】
なお、ECC回路206は誤り訂正回路の一例である。
【0024】
図2は、実施形態のメモリチップCPの構成例を示す図である。図示するようにメモリチップCPは、処理回路110およびメモリセルアレイ111を備える。
【0025】
メモリセルアレイ111は、複数のプレーン(プレーン0、プレーン1)に分割されている。各プレーンは、並列にアクセスされることが可能なサブアレイである。各プレーンは、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、…)を備える。ブロックBLKの各々は、それぞれがワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、…)を備える。ストリングユニットSUの各々は、メモリセルトランジスタが直列接続された複数のNANDストリング114を備える。なお、ストリングユニットSU内のNANDストリング114の数は任意である。なお、メモリセルアレイ111が備えるプレーンの数は2に限定されない。また、メモリセルアレイ111は、必ずしも分割されていなくてもよい。
【0026】
処理回路110は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。処理回路110は、コントローラ200からの命令に応じて、各プレーンのメモリセルアレイ111に対し、プログラム動作、センス動作、およびイレース動作を実行する。
【0027】
プログラム動作はメモリセルアレイ111にデータをライトする動作である。センス動作はメモリセルアレイ111からデータをリードする動作である。
【0028】
なお、コントローラ200がメモリチップCPにデータをライトする一連の動作を、ライト動作と表記する。ライト動作は、コントローラ200がデータをメモリチップCPに転送するデータイン動作と、処理回路110が、データイン動作によって受信したデータをメモリセルアレイ111にライトするプログラム動作と、によって構成される。
【0029】
コントローラ200がメモリチップCPからデータをリードする一連の動作を、リード動作を表記する。リード動作は、処理回路110がメモリセルアレイ111からデータをリードするセンス動作と、センス動作によってリードされたデータをコントローラ200がメモリチップCPから取得するデータアウト動作と、によって構成される。
【0030】
図3は、実施形態のブロックBLKの回路構成を示す図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング114を含む。
【0031】
NANDストリング114の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に記憶する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング114内のメモリセルトランジスタMTの個数は64個に限定されない。
【0032】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線に接続されてもよい。同一のブロックBLK内にあるメモリセルトランジスタMT0~MT63の制御ゲートは、それぞれワード線WL0~WL63に共通接続される。
【0033】
ストリングユニットSU内にある各NANDストリング114の選択トランジスタST1のドレインは、それぞれ異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング114を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0034】
つまりストリングユニットSUは、異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続されたNANDストリング114の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ111は、ビット線BLを共通にする複数のブロックBLKの集合である。
【0035】
処理回路110による1つのプレーンに対するプログラム動作およびセンス動作は、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して行われる。以降、1つのプレーンに対するプログラム動作およびセンス動作の際、一括して選択されるメモリセルトランジスタMTの群を「メモリセルグループMCG」と表記する。そして、1つのメモリセルグループMCGにライトされる、あるいはリードされる1ビットのデータの集まりの記憶領域を「ページ」と表記する。
【0036】
処理回路110による1つのプレーンに対するイレース動作は、ブロックBLK単位、またはブロックBLKよりも小さい単位で行うことができる。
【0037】
以降では、メモリセルトランジスタMTを、単に、メモリセルと表記する。
【0038】
各メモリセルには、n(n≧1)ビットのデータをライト可能である。各メモリセルにnビットのデータがライトされる場合、メモリセルグループMCG当たりの記憶容量はnページ分のサイズに等しくなる。nが1であるモードは、SLC(Single Level Cell)モードと称される。nが2であるモードは、MLC(Multi Level Cell)モードと称される。nが3であるモードは、TLC(Triple Level Cell)モードと称される。nが4であるモードは、QLC(Quad Level Cell)モードと称される。
【0039】
各メモリセルのしきい値電圧は、処理回路110によって一定の範囲内となるようにコントロールされる。しきい値電圧のコントローラブルな範囲は、2のn乗の数の区分に分割され、各区分にそれぞれ異なるnビットの値がアサインされる。
【0040】
実施形態では、nが2以上であるモードが採用される。以降では、nが2以上であるモードの一例としてTLCモードでメモリセルが使用される例について説明する。なお、実施形態は、TLCモードでメモリセルが使用されるシステムに限らず、nが2以上の任意のモードでメモリセルが使用されるシステムに適用可能である。
【0041】
図4は、実施形態のデータコーディングの一例を説明するための図である。
【0042】
前述したように、TLCモードによれば、メモリセル当たりに3ビットのデータが格納される。メモリセルに格納された3ビットのデータを構成する各ビットを、その並び順に応じて、アッパービット、ミドルビット、およびロアービットと表記する。メモリセルグループMSGが備える3ページのうちのアッパービットの群が格納されるページをアッパーページ、ミドルビットの群が格納されるページをミドルページ、ロアービットの群が格納されるページをロアーページ、と表記する。
【0043】
TLCモードによれば、しきい値電圧が取り得る範囲は、8つの範囲に区分される。この8つの範囲を、しきい値電圧が低いほうから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステートと呼ぶことにする。各メモリセルのしきい値電圧は、処理回路110によって、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに属するように、制御される。その結果、しきい値電圧に対するメモリセルの数をプロットした場合、メモリセルは、理想的には、
図4の中段に示すように、それぞれ異なるステートに属する互いに重ならない8つのローブ状の分布を形成する。以降では、ステートごとの分布を、単に、ローブ、と表記することがある。
【0044】
8つのステートは、3ビットのデータに対応する。
図4の上段の表は、ステートと3ビットのデータとの対応関係、即ちデータコーディング、の一例を示す。この例によれば、“Er”ステートは“111”に対応し、“A”ステートは“110”に対応し、“B”ステートは“100”に対応し、“C”ステートは“000”に対応し、“D”ステートは“010”に対応し、“E”ステートは“011”に対応し、“F”ステートは“001”に対応し、“G”ステートは“101”に対応する。なお、3ビットのデータを“abc”と記載した場合、“a”をアッパービット、“b”をミドルビット、“c”をロアービットとしている。このように、各メモリセルは、そのしきい値電圧が属するステートに応じたデータを記憶することができる。なお、
図4に示すステートとデータとの対応関係は、データコーディングの一例である。データコーディングは本図の例に限定されない。
【0045】
しきい値電圧は、イレース動作によって“Er”ステートに低下せしめられる。また、しきい値電圧は、プログラム動作によって、“Er”ステートに維持されるか、または“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに至るまで、上昇せしめられる。
【0046】
具体的には、プログラム動作においては、処理回路110は、カラムアドレスに対応したビット線BLを選択する。処理回路110は、選択されたビット線BLの電位をゼロとする。処理回路110は、ロウアドレスに対応したワード線WLを選択し、選択されたワード線WLに、プログラミングパルスを印加する。すると、選択されたビット線BLおよび選択されたワード線WLとの交点に位置するメモリセルの電荷蓄積層に電子が注入され、その結果、メモリセルのしきい値電圧が上昇する。処理回路110は、所定のタイミングでデータのリードを行うことで、メモリセルのしきい値電圧がライトデータのデータに対応した目標のステートに到達したか否かを確認する。処理回路110は、メモリセルのしきい値電圧が目標のステートに到達するまで、プログラムパルスの印加を継続する。
【0047】
以降、プログラム動作によってあるステートにしきい値電圧が設定されたメモリセルを、そのステートに属するメモリセル、と表記することがある。
【0048】
隣接する2つのステート間には、データを判定するための判定電圧が設定される。例えば、
図4に例示されるように、“Er”ステートと“A”ステートとの間に判定電圧VAが設定され、“A”ステートと“B”ステートとの間に判定電圧VBが設定され、“B”ステートと“C”ステートとの間に判定電圧VCが設定され、“C”ステートと“D”ステートとの間に判定電圧VDが設定され、“D”ステートと“E”ステートとの間に判定電圧VEが設定され、“E”ステートと“F”ステートとの間に判定電圧VFが設定され、“F”ステートと“G”ステートとの間に判定電圧VGが設定される。
【0049】
センス動作においては、処理回路110は、複数種類の判定電圧を選択ワード線WLに順次印加して、各判定電圧が印加されているときにメモリセルが導通状態(換言するとオン状態)および非導通状態(換言するとオフ状態)の何れの状態にあるかをメモリセル毎に判定する。そして、処理回路110は、印加した判定電圧毎に得られた判定結果を用いた論理演算によって、メモリセルが属するステートに対応付けられたデータを判定する。つまり、各メモリセルのしきい値電圧と判定電圧との比較に基づいてデータが取得される。
【0050】
以降、単一種類の判定電圧VX(XはA~Gのいずれか)を選択ワード線WLに印加してメモリセルがオン状態およびオフ状態の何れにあるかをメモリセル毎に判定する動作を、Xリード、またはXRと表記する。また、Xリードによる判定結果を、判定結果XRと表記する。
【0051】
図4に示すデータコーディングが採用される場合、メモリセルが“Er”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに属する場合、そのメモリセルが記憶するデータのロアービットは“1”である。メモリセルが“A”ステート、“B”ステート、“C”ステート、および“D”ステートの何れかに属する場合、そのメモリセルが記憶するデータのロアービットは“0”である。よって、処理回路110は、ロアーページに対するセンス動作では、VAおよびVEの2種類の判定電圧を使用することによってロアーページのデータを判定する。具体的には、処理回路110は、AリードとEリードとを行い、Aリードによって得られる判定結果ARとEリードによって得られる判定結果ERとを用いた論理演算によって、ロアーページのデータを取得する。
【0052】
メモリセルが“Er”ステート、“A”ステート、“D”ステート、および“E”ステートの何れかに属する場合、そのメモリセルが記憶するデータのミドルビットは“1”である。メモリセルが“B”ステート、“C”ステート、“F”ステート、および“G”ステートの何れかに属する場合、そのメモリセルが記憶するデータのミドルビットは“0”である。よって、処理回路110は、ミドルページに対するセンス動作においては、VB、VD、およびVFの3種類の判定電圧を使用することによって、ミドルページのデータを判定する。具体的には、処理回路110は、Bリード、Dリード、およびFリードを行う。そして、処理回路110は、Bリードによって得られる判定結果BR、Dリードによって得られる判定結果DR、およびFリードによって得られる判定結果DFを用いた論理演算によって、ミドルページのデータを取得する。
【0053】
メモリセルが“Er”ステート、“A”ステート、“B”ステート、および“G”ステートの何れかに属する場合、そのメモリセルが記憶するデータのアッパービットは“1”である。メモリセルが“C”ステート、“D”ステート、“E”ステート、および“F”ステートの何れかに属する場合、そのメモリセルが記憶するデータのアッパービットは“0”である。よって、処理回路110は、アッパービットに対するセンス動作では、VCおよびVGの2種類の判定電圧を使用することによって、アッパーページのデータを判定する。具体的には、処理回路110は、CリードとGリードとを行い、Cリードによって得られる判定結果CRとGリードによって得られる判定結果GRとを用いた論理演算によって、アッパーページのデータを取得する。
【0054】
このように、データの判定に使用される判定電圧の種類は、リード対象のページの種類に応じて異なる。処理回路110は、リードが指示された対象のページの種類に応じた複数種類の判定電圧のそれぞれを単独で使用した、メモリセルのしきい値電圧が判定電圧よりも高いか低いかの判定結果を組み合わせることによって、リードが指示されたページのデータを取得する。
【0055】
なお、各ページに対するセンス動作は、上記述べた例に限定されない。
【0056】
図4では、メモリセルが、互いに重ならない8つのローブを形成する場合を説明した。しかしながら、メモリセルのしきい値電圧は、種々の要因で変化し得る。
【0057】
例えば、メモリセルのしきい値電圧は、プログラム動作の完了時からの経過時間に応じて変化する傾向がある。プログラム動作の完了時からの経過時間は、データリテンション時間とも称される。メモリセルのしきい値電圧の変化の速度は、プログラム動作完了の直後が最も早く、データリテンション時間とともに減速する。イレース動作とプログラム動作とのサイクルの実行回数が多いメモリセルほど、しきい値電圧が変化しやすい。そして、イレース動作とプログラム動作とのサイクルがしきい値電圧の変化のしやすさに与える影響は、製造によってばらつく。よって、イレース動作とプログラム動作とのサイクルによってしきい値電圧がどれだけ変化しやすくなるかは、例えばメモリチップCP毎に異なる。
【0058】
以降では、しきい値電圧の変化のしやすさの度合いを、データリテンション特性、と表記する。データリテンション特性が良い(superior)とは、しきい値電圧が変化しにくいことをいう。データリテンション特性が悪い(inferior)とは、しきい値電圧が変化しやすいことをいう。
【0059】
データリテンション特性にばらつきがあるにしろ、メモリセルのしきい値電圧が変化し得るので、現実的には、センス動作時において、隣り合う2つのローブが部分的に互いに重なり合った状態になっている場合がある。
【0060】
図5は、実施形態のメモリセルが取り得るしきい値電圧の別の一例を示す図である。ここでは、説明を簡単にするために、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布を図示している。実線は、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布を示している。破線は、“A”ステートのローブを示し、一点鎖線は、“B”ステートのローブを示している。本図の例では、“A”ステートのローブの裾野と“B”ステートのローブの裾野とが重なり合っている。言い換えると、“A”ステートに属するメモリセルのしきい値電圧の最大値が判定電圧VBを超えており、かつ、“B”ステートに属するメモリセルのしきい値電圧の最小値が判定電圧VBを下回っている。“A”ステートに属し、かつ、しきい値電圧が判定電圧VBよりも大きいメモリセルがリードされた場合、そのメモリセルは“B”ステートに属するとして認識される。即ち、“110”としてプログラムされたデータが“100”としてリードされる。“B”ステートに属し、かつ、しきい値電圧が判定電圧VBよりも小さいメモリセルがリードされた場合、そのメモリセルは“A”ステートに属するとして認識される。即ち、“100”としてプログラムされたデータが“110”としてリードされる。
【0061】
このように、センス動作によってリードされたデータは、しきい値電圧の変化によって、プログラム動作の時点での値から変化する場合がある。データおよびしきい値電圧の変化に対しては、コントローラ200は、誤り訂正と、判定電圧のシフトと、によって対応する。具体的には、コントローラ200では、ECC回路206によって、リードデータに対して誤り訂正を実行する。誤り訂正が失敗した場合には、コントローラ200は、判定電圧を変えてリード動作を再び実行する。なお、誤り訂正が失敗するとは、変化後のデータから変化前のデータを復元できないことをいう。具体的には、誤り訂正が失敗するとは、リードデータに含まれるエラービットが訂正できないことをいう。誤り訂正が成功するとは、リードデータに含まれる全てのエラービットが訂正されたことをいう。
【0062】
なお、判定電圧は、種々の量で表現され得る。一例では、判定電圧の種類(VA~VG)毎に固定値が予め設定されており、判定電圧は、固定値からのシフト量(つまり差分)で表現される。また、メモリチップCP内の所定の位置に固定値が判定電圧の種類毎に記憶されている。シフトリードでは、コントローラ200は、判定電圧の種類毎に固定値からのシフト量をメモリチップCPに指示する。
【0063】
なお、判定電圧の表現方法および指示の方法は、これに限定されない。例えば、判定電圧の値は差分ではなく正味の電圧値で表現され、判定電圧は、メモリチップCPに対し、正味の電圧値として指示されてもよい。
【0064】
コントローラ200は、リードデータに発生するエラービットの数を抑制できる判定電圧の値を特殊なリード動作によって取得することができる。リードデータに発生するエラービットの数を抑制できる判定電圧の値を、便宜的に、最適判定電圧と表記する。例えば、しきい値電圧が
図5に示すグラフのように分布する場合、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布が極小値をとる電圧値VB’が、判定電圧VBに関する最適判定電圧VB_optであると考えられる。コントローラ200は、特殊なリード動作を実行することによって、判定電圧VA~VGのそれぞれについて最適値、つまり最適判定電圧を取得する。最適判定電圧のセットを取得するための特殊なリード動作を最適化リード動作、と表記する。
【0065】
コントローラ200は、類似した特性を有する複数のメモリセルグループMCGでひとつの判定電圧VA~VGのセットを共有する。ひとつの判定電圧VA~VGのセットの設定が共有される複数のメモリセルグループMCGの塊を、単位領域と表記する。つまり、NAND型フラッシュメモリ100は、複数の単位領域を備え、単位領域毎に判定電圧VA~VGのセットが個別に設定される。単位領域は、例えばブロックBLKであってもよいし、ブロックBLKより小さい領域であってもよいし、複数のブロックBLKであってもよい。
【0066】
コントローラ200は、複数の単位領域(ここでは一例として全ての単位領域)に対して順次かつ繰り返し最適化リード動作を実行する。全ての単位領域に対して順次かつ繰り返し最適化リード動作を実行することを、最適化パトロール動作、と表記する。
【0067】
具体的には、各単位領域について例えば1つのメモリセルグループMCGが代表メモリセルグループMCGとして予め設定されている。最適化パトロール動作では、全単位領域から選択された全ての代表メモリセルグループMCGに対し、1つずつ順に最適化リード動作が実行される。1つの代表メモリセルグループMCGに最適化リード動作が実行されてから所定第1の時間(パトロール周期と表記する)が経過すると、別の代表メモリセルグループMCGに最適化リード動作が実行される。全単位領域から選択された全ての代表メモリセルグループMCGに対して最適化リード動作が完了すると、全単位領域から選択された全ての代表メモリセルグループMCGに対する最適化リード動作が再び実行される。よって、1つの代表メモリセルグループMCGに着目した場合、その1つの代表メモリセルグループMCGには、所定第2の時間(個別パトロール周期と表記する)の間隔で最適化リード動作が実行される。
【0068】
コントローラ200は、単位領域毎に判定電圧VA~VGのセットの設定を記憶する。コントローラ200は、或る単位領域に関して最適化リード動作を実行した場合、その最適化リード動作によって得られた最適判定電圧のセットでその単位領域にかかる判定電圧VA~VGのセットの設定を更新する。そして、ホスト機器300からのリードコマンドに応じたリード動作の際には、記憶している判定電圧VA~VGのセットを使用する。よって、最適化パトロール動作によって、ホスト機器300からのリードコマンドに応じたリード動作の際に誤り訂正が成功する確率を高くすることができる。
【0069】
なお、各代表メモリセルグループMCGは、第1記憶領域の一例である。
【0070】
ここで、実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、各単位領域に対し、単純に、個別パトロール周期で最適化リード動作が実行される。
【0071】
前述されたように、イレース動作とプログラム動作とのサイクルがしきい値電圧の変化のしやすさに与える影響は、製造によってばらつく。よって、たとえイレース動作とプログラム動作とのサイクルの回数がメモリシステム1内で均一になるように制御されていたとしても、しきい値電圧が変化しやすいメモリチップCP(即ちデータリテンション特性が悪いメモリチップCP)と、しきい値電圧が変化しにくいメモリチップCP(即ちデータリテンション特性が良いメモリチップCP)とが混在し得る。
【0072】
データリテンション特性が悪いメモリチップCPでは、誤り訂正が失敗することなくデータのリードが可能な期間が短い。これに対して、データリテンション特性が良いメモリチップCPでは、誤り訂正が失敗することなくデータのリードが可能な期間が長い。よって、データリテンション特性が良いメモリチップCPでは、プログラム動作が実行されてからしばらくの期間は、最適化リード動作が実行されなくても、誤り訂正が失敗することなくデータのリードが可能である。
【0073】
比較例では、データリテンション特性に関係なく個別パトロール周期で最適化リード動作が実行される。つまり、データリテンション特性が良いメモリチップCPに対し、最適化リード動作が実行されなくても誤り訂正が失敗することなくデータのリードが可能な期間、換言すると最適化リード動作の実行が不要な期間、に最適化リード動作が実行される。このように、比較例によれば、誤り訂正が成功する確率の向上に寄与しない最適化リード動作が実行されるため、最適化リード動作の効率が悪い。
【0074】
また、或るメモリセルグループMCGのページに対してリード動作(最適化リード動作を含む)が実行された場合、リード動作が実行されたメモリセルグループMCGの近辺のメモリセルグループMCGがリードディスターブストレスを受けて、当該近辺のメモリセルグループMCGに格納されたデータが変化する虞がある。つまり、比較例によれば、誤り訂正が成功する確率の向上に寄与しない最適化リード動作によって、近辺のメモリセルグループMCGに格納されたデータのリード動作において誤り訂正が失敗する確率が上がる。
【0075】
そこで、実施形態では、コントローラ200は、或る単位領域に関して最適化リード動作が実行されてから個別パトロール周期が経過した場合でも、所定の条件が成立すればその単位領域に関する最適化リード動作の実行をスキップするように構成される。
【0076】
所定の条件は、代表メモリセルグループMCGのうちの或る特定のページのデータに含まれるエラービットの数が少なくともしきい値より小さいことである。以降では、エラービットの数を、フェイルビットカウント(Fail Bit Count:FBC)と表記する。所定の条件において使用される、FBCと比較されるしきい値を、FBCしきい値と表記する。
【0077】
ここでは、FBCがFBCしきい値以上である場合には最適化リード動作が実行され、FBCがFBCしきい値より小さい場合には最適化リード動作がスキップされることとする。なお、FBCがFBCしきい値と等しい場合の処理はこれに限定されない。
【0078】
実施形態では、コントローラ200は、データリテンション特性に応じて異なる値をFBCしきい値として使用する。
【0079】
図6は、実施形態のメモリシステム1においてそれぞれ異なるメモリチップCPに対して使用される2つのFBCしきい値を説明するためのグラフである。本グラフにおいて、横軸はデータリテンション時間を示し、縦軸はFBCを示す。実線の曲線は、データリテンション特性が良いメモリチップCPにおける或る記憶領域(記憶領域MAaと表記する)にかかるデータリテンション時間とFBCとの関係を示す。点線の曲線は、データリテンション特性が悪いメモリチップCPにおける或る記憶領域(記憶領域MAbと表記する)にかかるデータリテンション時間とFBCとの関係を示す。或る誤り訂正(第1の誤り訂正と表記する)が失敗しないためのFBCの上限値を、FBC_limと表記する。
【0080】
なお、第1の誤り訂正は、一例では、ホスト機器300からのリードコマンドに応じたリード動作において最初に実行される誤り訂正である。第1の誤り訂正の例の詳細は後述される。
【0081】
記憶領域MAaでは、例えばタイミングt4に至った時にFBCがFBC_limを超える。これに対し、記憶領域MAbでは、例えばタイミングt4よりも早いタイミングt2に至った時にFBCがFBC_limを超える。
【0082】
それぞれの記憶領域に対しては、FBCがFBC_limを超えるタイミングまでの個別パトロール周期に対応した期間(期待期間と表記する)において最適化リード動作が実行されれば、たとえ期待期間よりも前に最適化リード動作が一度も実行されなくとも、第1の誤り訂正が失敗することなくデータのリードが可能である。そこで、期待期間の開始のタイミングの到来を検出できるように、FBCしきい値が設定される。
【0083】
記憶領域MAaの期待期間は、タイミングt3からタイミングt4までの期間である。よって、タイミングt3の到来を検出できるように、値T0がFBCしきい値として使用される。
【0084】
記憶領域MAbの期待期間は、タイミングt1からタイミングt2のまでの期間である。よって、タイミングt1の到来を検出できるように、値T1がFBCしきい値として使用される。
【0085】
このように、データリテンション特性に応じてFBCしきい値が可変とされる。
【0086】
実施形態では、データリテンション特性は、製造工程において実施される疲弊試験の結果によって特定される。疲弊試験では、メモリチップCPから選択された一部の記憶領域(試験記憶領域と表記する)に対し、プログラム動作とイレース動作とのサイクルが、所定回数、実行される。その後、試験記憶領域からデータがリードされて、当該データのビットエラーレート(BER)が測定される。
【0087】
図7は、実施形態にかかる方法の一例として、疲弊試験の結果からデータリテンション特性を特定する方法を説明するための図である。本図において、横軸は疲弊試験によって得られたビットエラーレートを示し、縦軸はメモリチップ数を示す。つまり、本図は、メモリチップCP毎のビットエラーレートの分布を表す。
【0088】
図7に示される例では、メモリシステム1に具備される全てのメモリチップCPは、ビットエラーレートに応じて複数のグレードに分類される。複数のグレードは、ビットエラーレートが少ないグレードであるグレードA、ビットエラーレートが多いグレードであるグレードC、ビットエラーレートが中程度のグレードであるグレードCを含む。
【0089】
疲弊試験によって得られたビットエラーレートが多いことは、データリテンション特性が悪いことを意味する。疲弊試験によって得られたビットエラーレートが少ないことは、データリテンション特性が良いことを意味する。
【0090】
つまり、グレードAに属するメモリチップCPは、データリテンション特性が良いメモリチップCPであり、グレードCに属するメモリチップCPは、データリテンション特性が悪いメモリチップCPであり、グレードBに属するメモリチップCPは、データリテンション特性が中程度のメモリチップCPである。
【0091】
各メモリチップCPをグレードA~Cに分類する方法は種々に変更可能である。
【0092】
一例では、コントローラ200は、メモリシステム1内でビットエラーレートに応じて各メモリチップCPを順位付けする。そして、コントローラ200は、ビットエラーレートが少ない側の所定第1のパーセントの数のメモリチップCPをグレードAに分類し、ビットエラーレートが多い側の所定第2のパーセントの数のメモリチップCPをグレードCに分類し、他の全てのメモリチップCPをグレードBに分類する。
【0093】
他の例では、設計者は、それぞれグレードの境界に対応した2つのしきい値を実験または計算に基づき設定する。コントローラ200は、ビットエラーレートと当該2つのしきい値との比較によって各メモリチップCPのグレードを決定する。
【0094】
このように、コントローラ200は、疲弊試験の結果に基づき、データリテンション特性に対応したグレードをメモリチップCP毎に特定する。
【0095】
なお、データリテンション特性、またはデータリテンション特性を示す情報であるグレードは、特性情報の一例である。メモリチップCP毎にグレードが特定されることにより、各単位領域は、それが属するメモリチップCPを介してグレード、即ち特性情報が関連付けられる。
【0096】
図7に示された例では、データリテンション特性は、3つのグレードA~Cによって表された。データリテンション特性は、2または4以上のグレードによって表されてもよい。
【0097】
さらに、実施形態では、ECC回路206による誤り訂正能力の設定が可変に構成される。具体的には、ECC回路206が使用する誤り訂正符号化のアルゴリズムは、符号長が可変のアルゴリズムである。符号長が長いほど誤り訂正能力が強くなる半面、符号語のサイズが大きくなる。よって、1ページに格納可能な原データ(例えばユーザデータ)の情報量が減る。
【0098】
図8は、実施形態の誤り訂正機能による誤り訂正能力の違いによる1ページに格納可能な原データの情報量の違いを説明するための模式的な図である。
【0099】
実施形態では、各ページには、ページよりも小さいサイズのクラスタと称される単位でデータが格納される。クラスタは、例えばホスト機器300が使用するアドレス情報によって位置の管理がなされる最小の単位のサイズのデータである。クラスタは、ECC回路206による誤り訂正符号化を含む1以上のデータ処理を経たのちに、NAND型フラッシュメモリ100に送られる。
【0100】
図8の(A)は、ECC回路206によって或る設定(第1設定と表記する)で誤り訂正符号化が実行されたクラスタCL0が或るページP0に空きがなくなるまで格納された様子を示している。この図に示す例では、ページP0に5個のクラスタCL0が格納されている。
【0101】
図8の(B)は、ECC回路206によって第1設定よりも誤り訂正能力が強い第2設定で誤り訂正符号化が実行されたクラスタCL1が或るページP1に空きがなくなるまで格納された様子を示している。この図に示す例では、ページP1に4個のクラスタCL1が格納されている。第2設定によれば、第1設定に比べて誤り訂正符号化によって生成される誤り訂正符号のサイズが大きいため、クラスタCL1のサイズはクラスタCL0のサイズよりも大きい。これによって、1つのページに格納可能なクラスタの数が減少する。
【0102】
本明細書では、ECC回路206に設定される誤り訂正能力を示す指標として、潰し率(filling rate)を用いる。潰し率は、1つのページに格納可能なクラスタの数である。潰し率が大きいことは、誤り訂正能力が弱い設定を示す。潰し率が小さいことは、誤り訂正能力が強い設定を示す。
【0103】
コントローラ200は、例えば単位領域毎に潰し率の設定を記憶する。つまり、潰し率は、単位領域毎に個別に設定され得る。なお、潰し率が個別に設定される単位はこれに限定されない。潰し率は、例えばブロックBLKの単位で設定されてもよいし、ブロックBLKよりも小さい単位で設定されてもよいし、ブロックBLKよりも大きい単位で設定されてもよい。
【0104】
なお、潰し率が小さいほど、誤り訂正能力が強くなる。つまり、潰し率が小さいほど、第1の誤り訂正が失敗しないためのFBCの上限値FBC_limが大きくなる。そして、FBC_limが大きいほど、期待期間の開始のタイミングが遅くなる。よって、グレードが共通する場合、潰し率が小さいほどFBCしきい値が大きくなる。
【0105】
よって、実施形態では、グレード(即ちデータリテンション特性)と潰し率とに応じてFBCしきい値が可変とされる。
【0106】
図9は、実施形態のメモリシステム1において使用される管理情報の一例を示す図である。
【0107】
ここでは一例として、管理情報は所定の不揮発性の記憶領域(例えばNAND型フラッシュメモリ100)に格納されており、起動時にRAM202にロードされる。コントローラ200は、RAM202上の管理情報を参照したり更新したりし、更新がなされた部分は適時不揮発性の記憶領域に保存される。なお、管理情報の取り扱い方法はこれに限定されない。管理情報の一部または全部はファームウェアプログラムに埋め込まれてもよい。
【0108】
RAM202には、管理情報として、試験結果情報401およびFBCしきい値情報402が格納される。試験結果情報401は、疲弊試験の結果である。FBCしきい値情報402は、グレードと潰し率との組み合わせからFBCしきい値を検索できるように構成された情報である。
【0109】
図10は、実施形態の試験結果情報401のデータ構造の一例を示す模式的な図である。本図に示される例では、試験結果情報401は、メモリチップCP毎にチャネルとビットエラーレートとが記録されるテーブルの構造を有している。なお、試験結果情報401のデータ構造はこれに限定されない。
【0110】
図11は、実施形態のFBCしきい値情報402のデータ構造の一例を示す模式的な図である。本図に示される例では、FBCしきい値情報402は、グレードと、潰し率と、FBCしきい値と、の関係を示すテーブルの構造を有している。なお、FBCしきい値情報402のデータ構造はこれに限定されない。
【0111】
続いて、実施形態のメモリシステム1の動作の詳細な例を説明する。
【0112】
図12は、疲弊試験の実施時における実施形態のメモリシステム1の動作の一例を示すフローチャートである。
【0113】
まず、製造工程において、各メモリチップCPの疲弊試験が実行される(S101)。疲弊試験では、各メモリチップCPから試験記憶領域が選択される。そして、それぞれのメモリチップCPについて、試験記憶領域に対してイレース動作とプログラム動作とのサイクルが所定回数、実行され、その後、試験記憶領域からリードされたデータのビットエラーレートが取得される。メモリチップCP毎にビットエラーレートが取得される。メモリチップCP毎に取得されたビットエラーレートは、試験結果情報401に記録されてメモリシステム1に格納される(S102)。
【0114】
S101およびS102のうちの一部または全部は、試験装置によって実行されてもよいし、メモリシステム1のコントローラ200が特殊なファームウェアプログラムに基づいて実行してもよい。
【0115】
コントローラ200は、試験結果情報401に基づき、自身が備える各メモリチップCPのグレードを決定する(S103)。
【0116】
試験結果情報401に基づく各メモリチップCPのグレードの決定方法は設計者が任意に決定できる。前述されたように、例えば、コントローラ200は、ビットエラーレートに応じて各メモリチップCPを順位付けし、各メモリチップCPの順位に応じて各メモリチップCPのグレードを決定してもよい。また、コントローラ200は、外部から与えられた1以上のしきい値とビットエラーレートとの比較に基づいて各メモリチップCPのグレードを決定してもよい。
【0117】
S103の処理の後、疲弊試験の実施時における動作が終了する。
【0118】
図13は、ホスト機器300からのリードコマンドに応じた実施形態のメモリシステム1の動作の一例を示すフローチャートである。
【0119】
コントローラ200は、ホスト機器300からリードコマンドを受信した場合(S201)、リードコマンドによって要求されたデータ(リードデータと表記する)が格納されているメモリチップCPからリードデータを取得する(S202)。S202では、コントローラ200は、リード先のメモリセルグループMCGを含む単位領域に対して設定されている判定電圧VA~VGのセットを使用する。
【0120】
コントローラ200は、リードデータに対してハードビット訂正を実行する(S203)。コントローラ200は、ECC回路206によってハードビット訂正を実行する。
【0121】
図6などで説明されたFBC_limは、リードコマンドに応じて最初に取得されたリードデータに対して実行される誤り訂正に失敗しないためのFBCの上限値である。よって、
図13に示される例では、このS203で実行されるハードビット訂正が第1の誤り訂正である。
【0122】
コントローラ200は、ハードビット訂正が失敗したか否かを判定する(S204)。ハードビット訂正が失敗した場合(S204:Yes)、コントローラ200は、判定電圧VA~VGのセットの設定を変更して(S205)、変更された判定電圧VA~VGのセットを用いてメモリチップCPから再度、リードデータを取得する(S206)。
【0123】
S205の処理では、コントローラ200は、予め決められた方法で、判定電圧VA~VGのセットを変更する。例えば、判定電圧VA~VGのセットの設定が複数、予め用意されている。コントローラ200は、予め用意されている判定電圧VA~VGのセットの設定のうちから、次に使用される判定電圧VA~VGのセットの設定を選択する。なお、判定電圧VA~VGのセットの変更の方法はこれに限定されない。
【0124】
コントローラ200は、S206の処理によって取得されたリードデータに対してハードビット訂正を実行する(S207)。コントローラ200は、S207で実行されたハードビット訂正が失敗したか否かを判定する(S208)。
【0125】
S207で実行されたハードビット訂正が失敗した場合(S208:Yes)、コントローラ200は、ソフトビット訂正によって誤りを訂正する(S209)。また、コントローラ200は、潰し率の設定値をより小さい値に変更する(S210)。
【0126】
コントローラ200は、ソフトビット訂正によって得られた、誤りを含まないリードデータをホスト機器300に応答し(S211)、リードコマンドに応じた動作が終了する。
【0127】
S202の処理によって取得されたリードデータに対するハードビット訂正が成功した場合(S204:No)、またはS206の処理によって取得されたリードデータに対するハードビット訂正が成功した場合(S208:No)、コントローラ200は、誤りを含まないリードデータをホスト機器300に応答し(S211)、リードコマンドに応じた動作が終了する。
【0128】
なお、
図13に示された一連の動作はあくまでも一例である。取得されたリードデータに対する誤り訂正の回数、種類、判定電圧のセットの変更を行うタイミング、および判定電圧のセットの変更を行う回数、などは設計者が任意に決めることができる。
【0129】
図14は、実施形態の最適化パトロール動作の一例を示すフローチャートである。
【0130】
まず、コントローラ200は、最適化リード動作の実行タイミングが到来したか否かを判定する(S301)。つまり、コントローラ200は、メモリシステム1の初回の起動のタイミングおよびメモリシステム1において前回に最適化リード動作を実行したタイミングの遅いほうのタイミングからパトロール周期と等しい時間が経過したか否かを判定する。
【0131】
最適化リード動作の実行タイミングが到来していない場合(S301:No)、コントローラ200は、S301の処理を再び実行する。最適化リード動作の実行タイミングが到来した場合(S301:Yes)、コントローラ200は、最適化リード動作の対象のメモリセルグループMCGを特定する(S302)。
【0132】
前述されたように、各単位領域について例えば1つのメモリセルグループMCGが代表メモリセルグループMCGとして予め設定されている。S302の処理では、コントローラ200は、最適化リード動作が実行される予め決められた順に基づき、今回の最適化リード動作の対象となる代表メモリセルグループMCGを特定する。S302の処理において特定された代表メモリセルグループMCGを、対象メモリセルグループMCG、と表記する。
【0133】
コントローラ200は、対象メモリセルグループMCGの第1ページに対するバイパスリードを実行し、バイパスリードによって得られたデータの誤り訂正を実行する(S303)。
【0134】
第1ページの決定方法は任意である。1つのメモリセルグループMCGがアッパーページ、ミドルページ、およびロアーページの3ページを有する場合、設計者は、例えばアッパーページを第1ページとして設定することができる。設計者は、ミドルページまたはロアーページを第1ページとして設定してもよい。設計者は、アッパーページ、ミドルページ、およびロアーページのうちの最も早く取得できるページを第1ページとして設定してもよい。設計者は、アッパーページ、ミドルページ、およびロアーページのうちの誤りが多い傾向があるページまたは誤りが少ない傾向があるページを第1ページとして設定してもよい。
【0135】
前述されたように、バイパスリードは、誤り訂正を実行しないリード動作である。バイパスリードによって得られたデータには誤りが含まれ得る。バイパスリードによって得られたデータに誤りが含まれている場合、誤り訂正によってその誤りが訂正され、誤りを含まないデータ(つまりプログラム動作の実行時と同じ状態のデータ)が得られる。つまり、S303の処理では、コントローラ200は、第1ページから、誤りを含み得るデータと、誤りを含まないデータと、の2種類のデータを取得する。
【0136】
コントローラ200は、誤りを含み得るデータと、誤りを含まないデータと、の間でビット毎に比較を行うことによって、FBCを計算する(S304)。
【0137】
コントローラ200は、対象メモリセルグループMCGを含むメモリチップCPのグレードを特定する(S305)。コントローラ200は、対象メモリセルグループMCGを含む単位領域において設定された誤り訂正符号化の潰し率を特定する(S306)。コントローラ200は、特定されたグレードおよび潰し率とFBCしきい値情報402とに基づき、使用されるFBCしきい値を取得する(S307)。
【0138】
コントローラ200は、S304の処理によって得られたFBCがS307の処理によって取得されたFBCしきい値よりも小さいか否かを判定する(S308)。
【0139】
FBCがFBCしきい値よりも小さい場合(S308:Yes)、コントローラ200は、対象メモリセルグループMCGに対する最適化リード動作をスキップする(S309)。FBCがFBCしきい値よりも小さくない場合(S308:No)、コントローラ200は、対象メモリセルグループMCGに対する最適化リード動作を実行する(S310)。
【0140】
S309の処理またはS310の処理の後、コントローラ200は、S301の処理の処理を再び実行する。
【0141】
なお、
図14に示されたS303~S310の一連の動作は、第1動作の一例である。
【0142】
図15は、実施形態の最適化リード動作の一例を示すタイミングチャートである。
【0143】
図15に示される例では、コントローラ200は、まず、対象メモリセルグループMCGのアッパーページに対するバイパスリードを実行し(S401)、バイパスリードによって得られたアッパーページのデータに対し、誤り訂正を実行する(S402)。つまり、コントローラ200は、アッパーページから、誤りを含み得るデータと、誤りを含まないデータと、を取得する。
【0144】
S401の処理は、対象メモリセルグループMCGを含むメモリチップCPに対する通信を伴うが、S402の処理は、コントローラ200の内部だけで実行できる。よって、コントローラ200は、S401の処理が終了すると、次のページ、ここでは対象メモリセルグループMCGのミドルページ、に対するバイパスリードを実行する(S403)。コントローラ200は、S403の処理の最中にS402の処理を実行する。
【0145】
コントローラ200は、バイパスリードによって得られたミドルページのデータに対し、誤り訂正を実行する(S404)。つまり、コントローラ200は、ミドルページからも、誤りを含み得るデータと、誤りを含まないデータと、を取得する。
【0146】
同様に、コントローラ200は、対象メモリセルグループMCGのロアーページに対するバイパスリードを実行し(S405)、バイパスリードによって得られたロアーページのデータに対し、誤り訂正を実行する(S406)。つまり、コントローラ200は、ロアーページからも、誤りを含み得るデータと、誤りを含まないデータと、を取得する。
【0147】
コントローラ200は、アッパーページ、ミドルページ、およびロアーページからリードされた3ページ分の誤りを含み得るデータから、対象メモリセルグループMCGに格納されていた誤り訂正前の3ビットデータの群(第1のデータ群と表記する)を取得する。また、アッパーページ、ミドルページ、およびロアーページからリードされた3ページ分の誤りを含まないデータから、誤り訂正後の3ビットデータの群(第2のデータ群と表記する)を取得する。そして、コントローラ200は、第1のデータ群と第2のデータ群とをリード元のメモリセル毎に比較することで、しきい値がステート境界を越えて変化したメモリセルの数をステート境界毎および変化方向毎にカウントする(S407)。そして、コントローラ200は、カウント結果に基づき各判定電圧の最適値を推定する(S408)。
【0148】
S407の処理では、例えば“A”ステートと“B”ステートとの境界に関しては、コントローラ200は、しきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数と、しきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数と、をそれぞれカウントする。コントローラ200は、“Er”ステートと“A”ステートとの境界、“B”ステートと“C”ステートとの境界、“C”ステートと“D”ステートとの境界、“D”ステートと“E”ステートとの境界、“E”ステートと“F”ステートとの境界、および“F”ステートと“G”ステートとの境界に関しても同様のカウントを行う。
【0149】
例えば“A”ステートと“B”ステートとの境界に関し、しきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数がしきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数よりも多い場合、判定電圧VBが最適判定電圧VB_optよりも負側にあると推定できる。そして、判定電圧VBの最適判定電圧VB_optからの乖離が大きいほど、しきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数としきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数との差が大きくなる。
【0150】
また、しきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数がしきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数よりも多い場合、判定電圧VBが最適判定電圧VB_optよりも正側にあると推定できる。そして、判定電圧VBの最適判定電圧VB_optからの乖離が大きいほど、しきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数としきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数との差が大きくなる。
【0151】
よって、S408の処理では、コントローラ200は、しきい値電圧が“A”ステートから“B”ステートに変化したメモリセルの数としきい値電圧が“B”ステートから“A”ステートに変化したメモリセルの数との間の大小関係と差分とに基づき、最適判定電圧VB_optからの現在の判定電圧VBの乖離量および乖離方向を推定し、推定された乖離量および乖離方向に基づき、最適判定電圧VB_optを推定する。コントローラ200は、“Er”ステートと“A”ステートとの境界、“B”ステートと“C”ステートとの境界、“C”ステートと“D”ステートとの境界、“D”ステートと“E”ステートとの境界、“E”ステートと“F”ステートとの境界、および“F”ステートと“G”ステートとの境界に関しても同様の推定を行う。
【0152】
S408の処理の後、コントローラ200は、推定によって得られた最適判定電圧のセットを用いて、対象メモリセルグループMCGのアッパーページ、ミドルページ、およびロアーページに対してベリファイリードを実行する(S409~S411)。ベリファイリードは、誤り訂正が失敗することなくデータのリードができることを確認するリードである。各ページに対するベリファイリードが完了すると、最適化リード動作が終了する。
【0153】
なお、
図15に示された一連の動作、つまり最適化リード動作は、第2動作の一例である。
【0154】
以上述べた例では、1回の最適化リード動作は、1つのメモリセルグループMCGに対して実行された。1回の最適化リード動作が実行される対象は、1つのメモリセルグループMCG内の一部であってもよいし、複数のメモリセルグループMCGであってもよい。
【0155】
また、最適化リード動作をスキップするか否かの判定のために、対象メモリセルグループMCGの第1ページに対してバイパスリードが実行され、その後に実行される最適化リード動作では対象メモリセルグループMCGの第1ページに対して再びバイパスリードが実行された。しかしながら、最適化リード動作では、第1ページに対するバイパスリードが省略されてもよい。
【0156】
より具体的には、最適化リード動作では、最適化リード動作をスキップするか否かの判定のために第1ページから取得した誤りを含み得るデータと誤りを含まないデータとを使用するように構成されてもよい。
【0157】
つまり、例えば第1ページがアッパーページである場合、
図15に示された最適化リード動作において、コントローラ200は、S401の処理およびS402の処理を省略し、S407の処理では、既に第1ページから取得した誤りを含み得るデータと誤りを含まないデータとを使用するように構成されてもよい。
【0158】
また、疲弊試験がメモリチップCP毎に実施され、メモリチップCP毎にデータリテンション特性を示すグレードが算出された。データリテンション特性を示すグレードは、メモリチップCPと異なる単位で算出されてもよい。例えば、ブロックBLK毎にグレードが算出されてもよいし、単位領域毎にグレードが算出されてもよい。コントローラ200は、グレードが算出される単位に関係なく、各単位領域にライトされたデータに施された誤り訂正符号化にかかる潰し率の設定を特定可能なように、潰し率の設定を単位領域と関連付けて管理する。
【0159】
以上述べたように、実施形態によれば、コントローラ200は、代表メモリセルグループMCGの群に対して第1動作を順次かつ繰り返し実行する。第1動作は、
図14のS303~S310に示されたように、対象メモリセルグループMCGに格納されている第1ページのデータのFBCを取得し、FBCがFBCしきい値よりも大きい場合に第2動作である最適化リード動作を実行し、FBCがFBCしきい値よりも小さい場合に最適化リード動作をスキップする動作である。第2動作、つまり最適化リード動作は、
図15を用いて説明されたように、対象メモリセルグループMCGに格納されている全ページのデータのFBCを取得し、取得された全ページのデータのFBCに基づいて判定電圧のセットの設定を更新する動作である。
【0160】
誤り訂正が成功する確率の向上に寄与しない最適化リード動作がスキップされるので、最適化リード動作の実行の効率が向上する。また、近辺のメモリセルグループMCGに格納されているデータが、誤り訂正が成功する確率の向上に寄与しない最適化リード動作に起因したリードディスターブストレスによって変化することを抑制できる。
【0161】
また、実施形態によれば、コントローラ200は、最適化リード動作をスキップするか否かの判断の際には、第1ページのデータを使用し、最適化リード動作では全ページのデータを使用する。
【0162】
対象メモリセルグループMCGから全ページのデータを取得する場合、単一のページのデータを取得するよりも多くの時間がかかる。コントローラ200は、単一のページのデータに基づいて最適化リード動作をスキップするか否かを判断するので、判断に要する時間を抑制できる。
【0163】
また、実施形態によれば、コントローラ200は、対象メモリセルグループMCGを含むメモリチップCPのグレード、即ちデータリテンション特性、に基づき、FBCしきい値を特定する。
【0164】
図6を用いて説明されたように、最適化リード動作の実行が不要な期間はデータリテンション特性に応じて異なる。FBCしきい値がデータリテンション特性に応じて可変とされたことで、最適化リード動作の実行が不要な期間を正確に特定できるようになる。
【0165】
また、実施形態によれば、コントローラ200は、潰し率の設定、つまり誤り訂正能力の設定に基づき、FBCしきい値を特定する。
【0166】
前述されたように、誤り訂正能力の設定によって、第1の誤り訂正が失敗しないためのFBCの上限値FBC_limが異なる。よって、最適化リード動作の実行が不要な期間は誤り訂正能力の設定によって異なる。FBCしきい値が誤り訂正能力の設定によって可変とされたことで、最適化リード動作の実行が不要な期間を正確に特定できるようになる。
【0167】
なお、以上述べた例では、コントローラ200は、データリテンション特性および誤り訂正能力の設定の両方に基づき、FBCしきい値を特定した。コントローラ200は、データリテンション特性および誤り訂正能力の設定の一方のみに基づいてFBCしきい値を特定してもよい。また、コントローラ200は、データリテンション特性または誤り訂正能力の設定に加えて、任意の指標に基づき、FBCしきい値を特定してもよい。
【0168】
一例では、パトロール期間および個別パトロール期間がメモリシステム1の温度に応じて可変に構成される。そのような場合、コントローラ200は、メモリシステム1の温度を検出し、データリテンション特性または誤り訂正能力の設定に加えて、検出した温度の値に基づいて、FBCしきい値を特定してもよい。
【0169】
なお、以上の説明では、最適化リード動作では、対象メモリセルグループMCGに格納された全ページのデータのFBCに基づき、判定電圧の最適値のセットが推定された。最適化リード動作の例はこれに限定されない。
【0170】
例えば、最適化リード動作では、Vthトラッキングと称される手法が採用可能である。Vthトラッキングによれば、コントローラ200は、対象メモリセルグループMCGに対し、判定電圧を所定刻み幅ずつ増加または減少させながら複数回のリード動作を実行する。そして、コントローラ200は、複数回のリード動作によって得られた複数のデータに基づき、
図4の中段に示されるような、対象メモリセルグループMCGに含まれるメモリセルの分布を測定する。そして、コントローラ200は、メモリセルの分布に出現する7個の極小点を特定し、各極小点における電圧を判定電圧の最適値とする。
【0171】
このように、コントローラ200は、最適化リード動作では、
図15に示された動作や、Vthトラッキングなど、種々方法で判定電圧の最適値のセットを取得できる。つまり、コントローラ200は、最適化リード動作では、対象メモリセルグループMCGに対してリード動作を実行し、当該リード動作によって得られたデータに基づいて判定電圧のセットの設定を更新する。
【0172】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0173】
1 メモリシステム、100 NAND型フラッシュメモリ、110 処理回路、111 メモリセルアレイ、114 NANDストリング、200 コントローラ、201 ホストインタフェース回路、203 CPU、204 バッファメモリ、205 NANDインタフェース回路、206 ECC回路、300 ホスト機器、401 試験結果情報、402 FBCしきい値情報。