(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024134357
(43)【公開日】2024-10-03
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20240926BHJP
【FI】
G06F12/00 564C
G06F12/00 597U
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023044616
(22)【出願日】2023-03-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 理気
(72)【発明者】
【氏名】檜田 敏克
(72)【発明者】
【氏名】小島 慶久
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CC07
5B160NA01
(57)【要約】
【課題】一つの実施形態は、不揮発性メモリからのデータのリードを適切に行うことができるメモリシステムを提供することを目的とする。
【解決手段】一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。コントローラは、リード処理を実行すべき不揮発性メモリの対象領域の信頼性に基づき、平均的な所要時間が互いに異なる複数のリードリトライ処理のうち1つを選択し、選択されたリードリトライ処理を実行するように構成される。
【選択図】
図7
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
リード処理を実行すべき前記不揮発性メモリの対象領域の信頼性に基づき、平均的な所要時間が互いに異なる複数のリードリトライ処理のうち1つを選択し、選択されたリードリトライ処理を実行するように構成されたコントローラと、
を備えたメモリシステム。
【請求項2】
前記コントローラは、前記リード処理の対象領域の前記信頼性が基準を満たす場合、平均的な所要時間が第1の時間である第1のリードリトライ処理を選択し、前記対象領域の前記信頼性が前記基準を満たさない場合、平均的な所要時間が前記第1の時間より長い第2の時間である第2のリードリトライ処理を選択する、ように構成された
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、前記対象領域の前記信頼性が前記基準を満たすか否かを、前記不揮発性メモリの、前記対象領域よりも大きく且つ前記対象領域を含む領域に関する指標に基づいて決定する、ように構成された
請求項2に記載のメモリシステム。
【請求項4】
前記コントローラは、前記対象領域の前記信頼性が前記基準を満たすか否かを、前記不揮発性メモリの、前記対象領域よりも小さく且つ前記対象領域に含まれる領域に関する指標に基づいて決定する、ように構成された
請求項2に記載のメモリシステム。
【請求項5】
前記コントローラは、前記対象領域である第1の領域のライト・イレーズサイクル数が第1の閾値より小さい場合、前記第1のリードリトライ処理を選択し、前記第1の領域のライト・イレーズサイクル数が前記第1の閾値より大きい場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項6】
前記コントローラは、前記対象領域である第2の領域のリード回数が第2の閾値より小さい場合、前記第1のリードリトライ処理を選択し、前記第2の領域のリード回数が前記第2の閾値より大きい場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項7】
前記コントローラは、前記対象領域を含む第1のブロックのデータを第2のブロックにライトし直すリフレッシュ動作が所定の周期の経過に応じて行われた場合、前記第1のリードリトライ処理を選択し、前記リフレッシュ動作が前記所定の周期の経過前に行われた場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項8】
前記コントローラは、前記対象領域を含む第1のブロックのデータを第2のブロックにライトし直すリフレッシュ動作の時間間隔が第3の閾値より大きい場合、前記第1のリードリトライ処理を選択し、前記リフレッシュ動作の時間間隔が前記第3の閾値より小さい場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項9】
前記コントローラは、前記対象領域である第3の領域に対する誤り訂正能力が第1訂正能力である場合、前記第1のリードリトライ処理を選択し、前記第3の領域に対する前記誤り訂正能力が前記第1訂正能力よりも低い第2訂正能力である場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項10】
前記コントローラは、前記対象領域である第4の領域のライト時の温度が第4の閾値より高い場合、前記第1のリードリトライ処理を選択し、前記第4の領域のライト時の温度が前記第4の閾値より低い場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項11】
前記コントローラは、前記対象領域を含むメモリセルに対応するワードラインがブロックにおける第1の位置に存在する場合、前記第1のリードリトライ処理を選択し、前記ワードラインがブロックにおける前記第1の位置より端に近い第2の位置に存在する場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【請求項12】
前記コントローラは、前記メモリシステムの起動からの経過時間が第5の閾値より長い場合、前記第1のリードリトライ処理を選択し、前記メモリシステムの起動からの経過時間が前記第5の閾値より短い場合、前記第2のリードリトライ処理を選択する、ように構成された
請求項2に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発性メモリを有するメモリシステムは、ホストからリード要求を受けると、リード要求に応じて不揮発性メモリからデータをリードする。メモリシステムでは、不揮発性メモリからデータを適切にリードできることが望まれる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2022/0115084号明細書
【特許文献2】米国特許出願公開第2022/0121520号明細書
【特許文献3】米国特許出願公開第2021/0357289号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、不揮発性メモリからデータを適切にリードできるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。コントローラは、リード処理を実行すべき不揮発性メモリの対象領域の信頼性に基づき、平均的な所要時間が互いに異なる複数のリードリトライ処理のうち1つを選択し、選択されたリードリトライ処理を実行するように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態にかかるメモリシステムの構成を示すブロック図。
【
図2】第1の実施形態におけるメモリセルアレイの構成を示す回路図。
【
図3】第1の実施形態におけるメモリセルの閾値電圧分布を示す図。
【
図4】第1の実施形態における履歴値共有領域を示す断面図。
【
図5】第1の実施形態における履歴値共有管理情報を示す図。
【
図6】第1の実施形態における履歴値管理情報を示す図。
【
図7】第1の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図8】第1の実施形態におけるインフィールド処理を示すフローチャート。
【
図9】第1の実施形態におけるインフィールド処理用のシフトテーブルを示す図。
【
図10】第1の実施形態におけるアウトフィールド処理を示すフローチャート。
【
図11】第2の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図12】第3の実施形態におけるアウトフィールド処理を示すフローチャート。
【
図13】第3の実施形態における履歴値管理情報を示す図。
【
図14】第3の実施形態におけるアウトフィールド処理用のシフトテーブルを示す図。
【
図15】第4の実施形態におけるアウトフィールド処理を示すフローチャート。
【
図16】第4の実施形態における履歴値管理情報を示す図。
【
図17】第5の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図18】第6の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図19】第7の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図20】第8の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図21】第9の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図22】第9の実施形態におけるブロック管理情報を示す図。
【
図23】第9の実施形態にかかるメモリシステムの動作を示す図。
【
図24】第10の実施形態にかかるメモリシステムの動作を示すフローチャート。
【
図25】第10の実施形態にかかるメモリシステムの動作を示す図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
第1の実施形態にかかるメモリシステムは、不揮発性メモリを有する。メモリシステムは、ホストからリードコマンドを受けると、リードコマンドに応じて不揮発性メモリからデータをリードする。本実施形態にかかるメモリシステムでは、不揮発性メモリからデータを適切にリードするための工夫が施される。
【0009】
メモリシステム1は、
図1に示すように構成される。
図1は、メモリシステム1の構成を示す図である。
【0010】
メモリシステム1は、不揮発性メモリ20、メモリコントローラ10、及びバッファメモリ19を有する。メモリシステム1は、ホスト30と接続可能である。
図1では、メモリシステム1がホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、サーバ装置、携帯端末、デジタルスチルカメラなどの電子機器であってよい。
【0011】
メモリシステム1は、SSD(Solid State Drive)や、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ20を備える種々のメモリシステムであってよい。
【0012】
不揮発性メモリ20は、データを不揮発に記憶するメモリである。不揮発性メモリ20は、例えばNAND型フラッシュメモリである。不揮発性メモリ20は、複数のメモリチップで構成され得る。以下の説明では、不揮発性メモリ20としてNAND型フラッシュメモリが用いられる場合を例示する。不揮発性メモリ20として、2次元構造フラッシュメモリ、3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)等を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではない。半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【0013】
メモリコントローラ10は、例えばSoC(System-on-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の機能の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、専用ハードウエアで実現されてもよい。
【0014】
メモリコントローラ10は、ホストバス31によってホスト30に接続され得る。メモリコントローラ10は、ホスト30からのライト要求に従って不揮発性メモリ20へのライト処理を制御する。また、メモリコントローラ10は、ホスト30からのリード要求に従って不揮発性メモリ20からのリード処理を制御する。ホストバス31の準拠する規格は、例えば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(登録商標)(Peripheral Component Interconnect express)を含む、任意の規格である。
【0015】
メモリコントローラ10は、メモリバス18によって不揮発性メモリ20に接続される。不揮発性メモリ20が複数のメモリチップを含む場合、メモリコントローラ10は、複数のメモリバス18によって複数のメモリチップにそれぞれ接続されてもよい。メモリバス18は、チャネルとも称される。メモリバス18は、メモリコントローラ10と不揮発性メモリ20との間の信号の送受信に用いられる。この信号の具体例には、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、入出力信号I/Oが含まれ得る。
【0016】
信号CEnは、不揮発性メモリ20に含まれるメモリチップをイネーブルにするための信号である。信号CLEは、不揮発性メモリ20への入力信号I/Oがコマンドであることを不揮発性メモリ20に通知する信号である。信号ALEは、不揮発性メモリ20への入力信号I/Oがアドレスであることを不揮発性メモリ20に通知する信号である。信号WEnは入力信号I/Oを不揮発性メモリ20に取り込ませるための信号である。信号REnは、不揮発性メモリ20から出力信号I/Oを読み出すための信号である。レディ・ビジー信号RBnは、不揮発性メモリ20がレディ状態であるか、ビジー状態であるかを示す信号である。レディ状態は、不揮発性メモリ20がメモリコントローラ10からのコマンドを受信できる状態である。ビジー状態は、不揮発性メモリ20がメモリコントローラ10からのコマンドを受信できない状態である。入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ20とメモリコントローラ10との間で送受信されるデータの実体である。入出力信号I/Oは、コマンド、アドレス、ライトデータ(ライト対象のデータ)、リードデータ(読み出されたデータ)、ステータスを含む。
【0017】
不揮発性メモリ20からメモリコントローラ10へは、温度センサ25で検出された不揮発性メモリ20の温度を示す信号TEMPも入力される。温度センサ25は、
図1に示すように、不揮発性メモリ20内に設けられてもよい。温度センサ25は、不揮発性メモリ20の外部に設けられてもよい。温度センサ25から出力された信号TEMPを送信する信号線は、メモリバス18に含まれていてもよいし、メモリバス18とは別の独立した信号線であってもよい。
【0018】
メモリコントローラ10は、ホストインタフェース(ホストI/F)回路15、制御部11、バッファインタフェース(バッファI/F)回路12、RAM(Random Access Memory)14、メモリインタフェース(メモリI/F)回路16、及びECC(Error Correction Code)部13を有する。ホストI/F回路15、制御部11、バッファI/F回路12、RAM14、メモリI/F回路16、及びECC部13は、内部バス17によって互いに接続されている。
【0019】
ホストI/F回路15は、ホストバス31を介してホスト30と接続され得る。ホストI/F回路15は、ホスト30から受信したコマンド及びデータを、それぞれ制御部11及びRAM14又はバッファメモリ19に転送する。また、ホストI/F回路15は、制御部11からの要求に応答して、RAM14又はバッファメモリ19内のデータをホスト30へ転送する。
【0020】
制御部11は、例えばCPU(Central Processing Unit)で構成される。制御部11は、メモリコントローラ10の各部の動作を統括的に制御する。例えば、制御部11は、ホスト30からライト要求を受信した際には、不揮発性メモリ20へのデータのライト処理をメモリI/F回路16へ指示するため、メモリI/F回路16に対してライトコマンドを発行する。制御部11は、ホスト30からリード要求を受信した際には、不揮発性メモリ20からのデータのリード処理をメモリI/F回路16へ指示するため、メモリI/F回路16に対してリードコマンドを発行する。また、制御部11は、ガベージコレクション(コンパクションとも呼ばれる)の処理の一環として、メモリI/F回路16に対して消去(イレース)コマンドを発行する。制御部11は、ガベージコレクションの他にも、不揮発性メモリ20を管理するための様々な内部処理の実行を制御する。内部処理は、例えば、ウェアレベリング、リフレッシュ、パトロールリードを含む。
【0021】
制御部11は、ホスト30からライト要求を受信した場合、ユーザデータが格納されるべき不揮発性メモリ20上のストレージ領域を決定する。ユーザデータの論理アドレスと、該ユーザデータが格納された不揮発性メモリ20上のストレージ領域を示す物理アドレスとの対応は、アドレス変換情報で管理される。アドレス変換情報は、ルックアップテーブル(LUT)とも呼ばれ得る。このアドレス変換情報は、例えば不揮発性メモリ20内に格納されており、必要に応じて読み出されてRAM14及び/又はバッファメモリ19等にキャッシュされる。アドレス変換情報は、ホスト30からの要求(例えば、ライト要求、トリム要求、フォーマット要求)、又は、内部的に発行された処理要求(例えば、ガベージコレクション要求、リフレッシュ要求)に応じて更新され得る。
【0022】
制御部11は、ホスト30からリード要求を受信した場合、リード要求により指定された論理アドレスを上述のアドレス変換情報を用いて物理アドレスに変換し、該物理アドレスからのリード処理を指示するリードコマンドを発行しメモリI/F回路16へ供給する。
【0023】
メモリI/F回路16は、メモリバス18を介して不揮発性メモリ20と接続される。メモリI/F回路16は、不揮発性メモリ20との通信を制御する。メモリI/F回路16は、制御部11から受信したリードコマンドに基づき、信号CE、信号ALE、信号CLE、信号WEn、及び信号REnを不揮発性メモリ20へ出力する。メモリI/F回路16は、リード処理時には、制御部11で発行されたリードコマンドを、入出力信号I/Oとして不揮発性メモリ20へ転送する。また、メモリI/F回路16は、不揮発性メモリ20からリードされたデータを入出力信号I/Oとして受信する。メモリI/F回路16は、受信したデータをRAM14又はバッファメモリ19内へ転送する。メモリI/F回路16は、ライト処理時には、制御部11で発行されたライトコマンド、及びRAM14又はバッファメモリ19内のデータを、入出力信号I/Oとして不揮発性メモリ20へ転送する。
【0024】
バッファメモリ19は、不揮発性メモリ20にライトされるデータ又は不揮発性メモリ20からリードされたデータを一時的に格納する。バッファメモリ19は、RAM14よりもメモリ容量が大きい。バッファメモリ19は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等で構成され得る。
【0025】
バッファI/F回路12は、メモリコントローラ10からバッファメモリ19へのアクセスを制御するコントローラである。バッファI/F回路12は、例えばDDR(Double Data Rate)でのバッファメモリ19へのアクセスを可能とする。
【0026】
RAM14は、アドレス変換情報や、各種管理テーブルを記憶する。これらの情報は、例えば、メモリシステム1の起動時に不揮発性メモリ20の特定の領域からリードされる。また、RAM14は、各種管理テーブルのスナップショット、及び/又は各種管理テーブルの変更差分であるログ情報を一時的に記憶するワーキングメモリとして使用され得る。また、RAM14は、ホスト30と不揮発性メモリ20との間でデータ転送をする際のキャッシュメモリとしても用いられ得る。RAM14は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等で構成され得る。
【0027】
ECC部13は、誤り検出処理及び誤り訂正処理のために、データの符号化及び復号を行う。具体的には、ECC部13は、不揮発性メモリ20にライトされるユーザデータを符号化しライトデータ(すなわち、符号語)を生成する。また、ECC部13は、不揮発性メモリ20からリードされたデータ(すなわち、符号語)を復号しユーザデータを復元可能である。ECC部13は、復号によって、リードデータに対して誤り検出処理及び誤り訂正処理を実行する。ECC部13は、誤り訂正処理に失敗した場合には、誤り訂正処理の失敗を制御部11に通知する。ECC部13は、誤り訂正処理に成功した場合、ユーザデータを復元可能である。ECC部13による符号化及び復号のアルゴリズムには、例えば、RS(リード・ソロモン)符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、低密度パリティ検査(LDPC)符号、を含む任意のアルゴリズムを適用することが可能である。
【0028】
ライト処理時において、ECC部13は、制御部11による制御のもと、ライトコマンドに基づいて不揮発性メモリ20にライトすべきユーザデータを受ける。ECC部13は、ユーザデータに基づいて、制御部11により制御された符号化率でECCパリティを生成する。ECC部13は、ECCパリティをユーザデータに付してライトデータ(すなわち、符号語)を生成する。不揮発性メモリ20には、符号語がライトされる。
【0029】
リード処理時において、ECC部13は、制御部11による制御のもと、リードコマンドに基づいて不揮発性メモリ20からリードされたリードデータ(すなわち、符号語)を受ける。ECC部13は、リードデータからECCパリティを抽出する。ECC部13は、ECCパリティに基づきシンドロームを生成する。ECC部13は、シンドロームに基づきリードデータ内のエラービットの有無を判断する。ECC部13は、リードデータにエラービットが含まれる場合、エラービットの位置を特定する。ECC部13において訂正可能なエラービットの数は、符号語の誤り訂正能力(例えばECCパリティのビット数)によって決まる。
【0030】
訂正可能な数以下のエラービットがリードデータに含まれる場合、ECC部13は、そのエラービットを訂正し、訂正成功の旨を制御部11へ通知する。ECC部13は、誤り訂正に成功した場合、ユーザデータを復元可能である。
【0031】
訂正可能な数を超えるエラービットがリードデータに含まれる場合には、ECC部13は、訂正失敗(uncorrectable)の旨を制御部11へ通知する。この場合、ユーザデータが失われることがある。
【0032】
不揮発性メモリ20は、コマンド処理部21、駆動部22、メモリセルアレイ23、カラムモジュール24、及び、温度センサ25を有する。コマンド処理部21は、シーケンサ211、コマンドレジスタ(CMDレジスタ)212、アドレスレジスタ(ADDレジスタ)213を含む。駆動部22は、ドライバ回路221及びロウデコーダ(R/D)222を含む。不揮発性メモリ20は、複数のメモリチップを含んでよい。
【0033】
メモリセルアレイ23は、複数の物理ブロックを含む。複数の物理ブロックのそれぞれは複数のメモリセル(複数のメモリセルトランジスタMT)を有する。各メモリセルは、ロウ及びカラムに対応付けられている。メモリセルアレイ23は、ストレージ領域及び管理情報格納領域を含む。メモリコントローラ10から与えられたユーザデータはストレージ領域に記憶される。メモリコントローラ10から与えられた管理情報は管理情報格納領域に記憶される。
【0034】
ロウデコーダ222は、アクセス対象のブロックを選択し、更に選択したブロックにおけるロウを選択する。
【0035】
ドライバ回路221は、選択されたブロックに対して、ロウデコーダ222を介して電圧を供給する。
【0036】
カラムモジュール24は、例えばセンスアンプと、複数のラッチ回路を有するデータラッチとを含む。カラムモジュール24は、ライト動作においては、メモリコントローラ10から受信したデータDATをメモリセルアレイ23に転送する。また、カラムモジュール24は、リード動作においては、メモリセルアレイ23からリードされたデータをセンスし、必要な演算を行う。そして、カラムモジュール24は、得られたデータDATをメモリコントローラ10に出力する。
【0037】
アドレスレジスタ213は、メモリコントローラ10から受信したアドレスADDを保持する。コマンドレジスタ212は、メモリコントローラ10から受信したコマンドCMDを保持する。
【0038】
シーケンサ211は、コマンドレジスタ212に保持されたコマンドCMDに基づき、不揮発性メモリ20全体の動作を制御する。
【0039】
温度センサ25は、常時、定期的又は必要に応じて、メモリセルアレイ23周辺の温度を測定する。測定された温度は、不揮発性メモリ20内の動作の温度補償に用いられ得る。測定された温度は、信号TEMPとしてメモリコントローラ10へ出力されてもよい。
【0040】
図2は、メモリセルアレイの構成を示す回路図である。
【0041】
各物理ブロックBLKは、複数のストリングユニットSU0~SU3を有する。複数のストリングユニットSU0~SU3は、複数の選択ゲートラインSGD0~SGD3にそれぞれ対応している。複数のストリングユニットSU0~SU3は、選択ゲートラインSGSを共有している。各ストリングユニットSU0~SU3は、物理ブロックBLKにおける駆動単位として機能する。各ストリングユニットSU0~SU3は、対応する選択ゲートラインSGD0~SGD3と選択ゲートラインSGSとで駆動され得る。各ストリングユニットSU0~SU3は、複数のメモリストリングMSTを含む。
【0042】
各メモリストリングMSTは、例えば96個のメモリセルトランジスタMT(MT0~MT95)及び選択トランジスタSDT,SSTを含む。メモリセルトランジスタMTは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。96個のメモリセルトランジスタMT(MT0~MT95)は、選択トランジスタSDTのソースと選択トランジスタSSTのドレインとの間に、ビットラインBLにより直列接続されている。メモリストリングMST内のメモリセルトランジスタMTの個数は96に限定されない。
【0043】
ワードラインWL0~WL95(各ワードラインを区別しない場合には、WLで示す)のそれぞれは、メモリセルトランジスタMTのコントロールゲートを物理ブロックBLK内の各メモリストリングMST間で共通に接続している。つまり、物理ブロックBLK内の各ストリングユニットSU内において、同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワードラインWLに接続される。物理ブロックBLKのストリングユニットSUは複数のワードラインWLにそれぞれ対応した複数のメモリセルグループMCGを含む。各メモリセルグループMCGは同一のワードラインWLに接続される(p+1)個のメモリセルトランジスタMTを含む。各メモリセルトランジスタMTが1ビットの値を記憶可能に構成される場合(すなわち、各メモリセルトランジスタMTがシングルレベルセル(SLC)モードで動作する場合)には、メモリグループMCGは1ページ分のデータを記憶する。この場合、1ページ分のデータごとにライト動作及びリード動作が行われる。
【0044】
各メモリセルトランジスタMTが複数ビットの値を保持可能なように構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を記憶可能な場合、メモリセルグループMCG当たりの記憶容量はnページ分のサイズに等しくなる。すなわち、各メモリセルグループMCGは、nページ分のデータを記憶する。各メモリセルトランジスタMTが2ビットの値を記憶するマルチレベルセル(MLC)モードでは、各メモリセルグループMCGに2ページ分のデータが記憶される。各メモリセルトランジスタMTが3ビットの値を記憶するトリプルレベルセル(TLC)モードでは、各メモリセルグループMCGに3ページ分のデータが記憶される。各メモリセルトランジスタMTが4ビットの値を記憶するクワッドレベルセル(QLC)モードでは、各メモリセルグループMCGに4ページ分のデータが記憶される。各メモリセルトランジスタMTが5ビットの値を記憶するペンタレベルセル(PLC)モードでは、各メモリセルグループMCGに5ページ分のデータが記憶される。
【0045】
なお、メモリセルアレイ23は、メモリコントローラ10より並列アクセス可能な複数の単位を含む。メモリコントローラ10は、並列にほぼ一括してライト動作/リード動作が可能な複数のメモリセルグループMCGを1スーパーページとして管理し、並列に消去動作が可能な複数の物理ブロックを1スーパーブロックとして管理する。
【0046】
また、制御部11は、1ページよりも小さい単位のデータ管理単位であるクラスタを用いて、不揮発性メモリ20内のデータを管理する。例えば、クラスタサイズは、ホスト30からの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍がページサイズとなるように定められる。例えば、1ページは4クラスタである。例えば、1スーパーページは64クラスタのデータを記憶し得る。
【0047】
図3は、メモリセルの閾値電圧分布を示す図である。
図3に示すように、メモリセルに記憶されるデータのビット数が増えるにつれ、リード処理時のデータの信頼性に関して、マージンが小さくなる。
【0048】
例えば、メモリセルがSLCモードで使用される場合、
図3(a)に示すように、閾値電圧が制御される範囲(Vmin~Vmaxの範囲)内に、2個のステート(小領域)ST0~ST1が存在する。各ステートSTは、メモリセルの閾値電圧の分布を示す。各ステートSTには、異なる1ビットの値が対応付けられる。ステートST0,ST1に、それぞれ、“1”,“0”が対応付けられ得る。ステートST0,ST1間の電圧マージンΔVr0は比較的大きく、リード電圧Vr1と両側のステートSTとの間の電圧マージンを大きく確保できる。このため、リード電圧Vr1でメモリセルのデータをリードした際のビットエラーレート(BER)は比較的低いと考えられる。
【0049】
メモリセルがMLCモードで使用される場合、
図3(b)に示すように、閾値電圧が制御される範囲(Vmin~Vmaxの範囲)内に、4個のステートST0~ST3が存在する。各ステートSTには、異なる2ビットの値が対応付けられる。ステートST0,・・・,ST3に、それぞれ、“11”,・・・,“00”が対応付けられ得る。ステートST0~ST3のうちの隣り合う2つのステート間の電圧マージンΔVr10がSLCの場合の電圧マージンΔVr0より小さく、各リード電圧Vr11~Vr13と両側のステートSTとの間の電圧マージンがSLCの場合より小さくなる。このため、各リード電圧Vr11~Vr13でメモリセルのデータをリードした際のビットエラーレート(BER)がSLCの場合より増加すると考えられる。
【0050】
メモリセルがTLCモードで使用される場合、
図3(c)に示すように、閾値電圧が制御される範囲(Vmin~Vmaxの範囲)内に、8個のステートST0~ST7が存在する。各ステートSTには、異なる3ビットの値が対応付けられる。ステートST0,・・・,ST7に、それぞれ、“111”,・・・,“000”が対応付けられ得る。ステートST0~ST7のうちの隣り合う2つのステート間の電圧マージンΔVr20がMLCの場合の電圧マージンΔVr10より小さく、各リード電圧Vr21~Vr27と両側のステートSTとの間の電圧マージンがMLCの場合より小さくなる。このため、各リード電圧Vr21~Vr27でメモリセルのデータをリードした際のビットエラーレート(BER)がMLCの場合より増加すると考えられる。
【0051】
メモリセルがQLCモードで使用される場合、
図3(d)に示すように、閾値電圧が制御される範囲(Vmin~Vmaxの範囲)内に、16個のステートST0~ST15が存在する。各ステートSTには、異なる4ビットの値が対応付けられる。ステートST0,・・・,ST15に、それぞれ、“1111”,・・・,“0000”が対応付けられ得る。各ステートST0~ST15のうちの隣り合う2つのステート間の電圧マージンがTLCの場合の電圧マージンΔVr20より小さく、各リード電圧Vr31~Vr45と両側のステートSTとの間の電圧マージンがTLCの場合より小さくなる。このため、各リード電圧Vr31~Vr45でメモリセルのデータをリードした際のビットエラーレート(BER)がTLCの場合より増加すると考えられる。
【0052】
メモリセルがPLCモードで使用される場合、
図3(e)に示すように、閾値電圧が制御される範囲(Vmin~Vmaxの範囲)内に、32個のステートST0~ST31が存在する。各ステートSTには、異なる5ビットの値が対応付けられる。ステートST0,・・・,ST31に、それぞれ、“11111”,・・・,“00000”が対応付けられ得る。ステートST0~ST31のうちの隣り合う2つのステート間の電圧マージンがQLCの場合の電圧マージンより小さく、各リード電圧Vr51~Vr81と両側のステートSTとの間の電圧マージンがQLCの場合より小さくなる。このため、各リード電圧Vr51~Vr81でメモリセルのデータをリードした際のビットエラーレート(BER)がQLCの場合より増加すると考えられる。
【0053】
不揮発性メモリ20では、初段のリード処理でデータを復元できないと、リトライリード処理が行われる。初段のリード処理では、第1のリード方式によるリード動作が行われ、リトライリード処理では、第2のリード方式によるリード動作が行われる。
【0054】
第1のリード方式は、例えば、ノーマルリード方式又はファストリード方式に対応してもよい。ノーマルリード方式では、所定の基準値のリード電圧(リードレベルともいう)がワードラインWLに印加され、通常のリード動作が行われる。ファストリード方式では、ノーマルリード方式よりもリードレベルの印加時間等を短くすることでリード時間を短縮したリード動作が行われる。
【0055】
第2のリード方式は、第1のリード方式より平均的な所要時間が長く、且つ、ビットエラーレート(BER)が低くなるリード方式に対応する。第2のリード方式は、例えば、シフトリード方式又はVthトラッキング方式に対応してもよい。シフトリード方式では、リードレベルが所定の基準値からシフトした値に設定され、そのリードレベルの値でリード動作が行われる。Vthトラッキング方式では、リードレベルが所定の電圧幅でシフトされながらシングルレベルリードが複数回実行されることで、該当メモリセルグループMCGに含まれる複数のメモリセルの閾値電圧分布のヒストグラムが生成される。そして、生成されたヒストグラムに基づいて補正されたリードレベルの値でリード動作が行われる。
【0056】
一方、メモリセルアレイ23では、メモリセルの信頼性が異なる複数の領域が混在する。このとき、複数の領域の全てに対して、一律に、単一のリード方式のリトライリード処理が行われると、リトライリード処理の効率が低下することがある。
【0057】
例えば、メモリセルの信頼性が比較的低い領域に対して、平均的な所要時間が比較的短くデータの復元力の低いリード方式のリトライリード処理が行われると、リードデータの復元に失敗しやすく、リトライ回数が増加しやすい。
【0058】
メモリセルの信頼性が比較的高い領域に対して、平均的な所要時間が比較的長くデータの復元力の高いリード方式のリトライリード処理が行われると、過剰に時間をかけてリトライリード処理が行われやすい。
【0059】
リトライリード処理の効率が低下すると、リトライリード処理のレイテンシが増大し、不揮発性メモリ20に対するリード処理のトータルのパフォーマンスが低下する可能性がある。
【0060】
そこで、本実施形態のメモリシステム1では、平均的な所要時間が互いに異なる複数のリードリトライ処理が用意される。メモリシステム1は、リードすべき領域の状態に基づき複数のリードリトライ処理のうち1つを選択して実行する。これにより、リトライリード処理の効率化が図られる。
【0061】
複数のリードリトライ処理として、インフィールド処理及びアウトフィールド処理が用意され得る。インフィールド処理の平均的な所要時間は、アウトフィールド処理の平均的な所要時間より短い。
【0062】
インフィールド処理は、シフトリード方式をベースとするリードリトライ処理である。アウトフィールド処理は、Vthトラッキング方式をベースとするリードリトライ処理である。インフィールド処理及びアウトフィールド処理では、それぞれ、リードリトライ処理自体を効率化するために履歴値リードの技術が用いられる。
【0063】
過去に行われたリードリトライ処理でデータの復元に成功した際のパラメータが履歴値として記憶される。履歴値リードでは、履歴値を用いてリード動作が行われることで、リードリトライ処理によるデータの復元成功の確率を向上できると期待される。
【0064】
インフィールド処理では、過去に行われたシフトリード動作でデータの復元に成功した際のリード条件(例えば、所定の基準値からのシフト量を示すシフトインデックスindex及び/又はリードレベルの値)が履歴値として記憶される。
【0065】
アウトフィールド処理では、過去に行われたVthトラッキング取得され、データの復元に成功した際のリード条件(例えば、Vthトラッキングで特定されたリードレベルの値)が履歴値として記憶される。
【0066】
ここで、メモリセルの信頼性についての仮想的な空間を考え、想定される信頼性及びストレス状態に相当する領域をフィールドと呼ぶことにする。フィールド内にいるメモリセルの信頼性は、フィールド外にいるメモリセルの信頼性よりも高い。あるメモリセルがフィールド内にいる状態を、そのメモリセルの状態がインフィールドであるという。あるメモリセルがフィールド外にいる状態を、そのメモリセルの状態がアウトフィールドであるという。
【0067】
メモリセルの状態がインフィールドである場合、インフィールド処理において、履歴値を用いてシフトリード動作が行われれば、データの復元に成功する確率が高い。この場合、アウトフィールド処理における履歴値を用いたVthトラッキング(例えばリードレベルを履歴値から所定の電圧幅でシフトしながら行われる複数のシングルレベルリード)が行われなくてもデータの復元に成功する確率は高いと考えられる。アウトフィールド処理は、インフィールド処理よりも長い時間がかかる傾向にある。従って、メモリセルの状態がインフィールドである場合、リトライリード処理としてインフィールド処理が効率的であり、アウトフィールド処理は非効率的である。
【0068】
メモリセルの状態がアウトフィールドである場合、インフィールド処理における履歴値を用いたシフトリード動作が行われても、データの復元に失敗する確率が高い。この場合、用いるリードレベルを履歴値から変更してシフトリード動作がリトライされることになり、リトライ回数が増大しやすい。この場合、アウトフィールド処理において、履歴値を用いてVthトラッキングが行われ、データの復元に成功すれば、1回のリトライリード処理に要する時間はインフィールド処理より長くても、リトライ回数を少なくできる。これにより、トータルの所要時間をインフィールド処理より短縮できる。すなわち、メモリセルの状態がアウトフィールドである場合、リトライリード処理としてアウトフィールド処理が効率的であり、インフィールド処理は非効率的である。
【0069】
メモリセルの信頼性が互いに近い(例えば、ビットエラーレートが近い)メモリセルアレイ23内の複数の領域について、インフィールド処理とアウトフィールド処理とでどちらが効率的かについても類似する傾向にある。前述のように、インフィールド処理とアウトフィールド処理とで用いられる履歴値が異なる。この点を考慮し、本実施形態のメモリシステム1では、信頼性が近いメモリセルの集合が、履歴値を共有すべき履歴値共有領域として管理される。履歴値共有領域は、メモリセルグループ、ブロックなどの物理的な管理単位とは別に定義される単位であり、信頼性が近いメモリセルの集合として抽象化された管理単位である。履歴値共有領域は、予め検査等により実験的に決められ得る。
【0070】
例えば、
図4に示すメモリセルアレイ23は、ソースラインSLの上方に積層体231が積層された構造を有する。積層体231では、選択ゲートラインSGS、複数のワードラインWL0~WL95、選択ゲートラインSGDが互いに離間しながら積層される。積層体231における複数のワードラインWL0~WL95は、それぞれが積層方向に延びる複数の柱状体4で貫通される。柱状体4は、複数のティア4a,4bが積層された構造を有する。これに対応して、積層体231は、複数の積層体231A,231Bが積層された構造を有する。
図4では、柱状体4が2つのティア4a,4bに分割され、積層体231が2つの積層体231A,231Bに分割される構造が例示されるが、柱状体4が3つ以上に分割されてもよく積層体231が3つ以上に分割されてもよい。
【0071】
積層体231Aでは、選択ゲートラインSGS、複数のワードラインWL0~WL47が互いに離間しながら積層される。検査等により、複数のワードラインWL0~WL47のうち、積層方向両端のワードラインWL0,WL47に対応するメモリセルMT0,MT47の信頼性が互いに近いと特定されれば、ワードラインWL0,WL47に対応する領域が履歴値共有領域HVSU1として決定され得る。検査等により、複数のワードラインWL0~WL47のうち、積層方向内側のワードラインWL1~WL46に対応するメモリセルMT1~MT46の信頼性が互いに近いと特定されれば、ワードラインWL1~WL46に対応する領域が履歴値共有領域HVSU2として決定され得る。
【0072】
積層体231Bでは、複数のワードラインWL48~WL95、選択ゲートラインSGDが互いに離間しながら積層される。検査等により、複数のワードラインWL48~WL95のうち、積層方向両端のワードラインWL48,WL95に対応するメモリセルMT48,MT95の信頼性が互いに近いと特定されれば、ワードラインWL48,WL95に対応する領域が履歴値共有領域HVSU3として決定され得る。検査等により、複数のワードラインWL48~WL95のうち、積層方向内側のワードラインWL49~WL94に対応するメモリセルMT49~MT94の信頼性が互いに近いと特定されれば、ワードラインWL49~WL94に対応する領域が履歴値共有領域HVSU4として決定され得る。
【0073】
なお、
図4では、履歴値共有領域を物理ブロックより小さい単位として例示するが、メモリセルの信頼性が互いに近ければ、履歴値共有領域は、物理的な管理単位に関わらずに決定され得る。例えば、メモリセルの信頼性が互いに近ければ、履歴値共有領域は、複数の物理ブロックに跨って決定されてもよい。
【0074】
予め検査等により実験的に決められる履歴値共有領域は、その状態が、例えば
図5に示すような履歴値共有管理情報で管理され得る。
図5は、履歴値共有管理情報を示す図である。
図5では、履歴値共有管理情報がテーブル形式で実装される場合が例示される。履歴値共有管理テーブルでは、履歴値共有領域識別子と状態とが複数の履歴値共有領域について対応づけられている。履歴値共有領域識別子は、履歴値共有領域を他の履歴値共有領域から識別するための情報である。状態は、履歴値共有領域に含まれるメモリセルの信頼性に関する情報であり、インフィールド(Infield)又はアウトフィールド(Outfield)を含む。状態は、初期に、インフィールドになっていてもよい。
【0075】
メモリコントローラ10は、履歴値共有管理テーブルをメモリセルアレイ23の管理情報格納領域に格納可能である。メモリシステム1の起動等に応じて、メモリコントローラ10は、履歴値共有管理テーブルを管理情報格納領域からリードしてRAM14に格納する。そして、メモリコントローラ10は、RAM14上の履歴値共有管理テーブルを更新可能である。メモリコントローラ10は、所定のタイミングで履歴値共有管理テーブルをRAM14から取得してメモリセルアレイ23の管理情報格納領域に格納する。これにより、履歴値共有管理テーブルが不揮発化される。
【0076】
図5に示す履歴値共有管理テーブルは、履歴値共有領域HVSU1,HVSU3,HVSU5が、アウトフィールド状態であることを示す。同様に、履歴値共有領域HVSU2,HVSU4,HVSU6がインフィールド状態であることが示される。
【0077】
また、履歴値共有領域で用いられるべき履歴値は、例えば
図6に示すような履歴値管理情報で管理され得る。
図6は、履歴値管理情報を示す図である。
図6では、履歴値管理情報がテーブル形式で実装される場合が例示される。履歴値管理テーブルでは、履歴値共有領域識別子と履歴値とが複数の履歴値共有領域について対応づけられている。履歴値は、過去にデータの復元に成功したリード条件に対応し、インフィールド処理におけるシフトインデックスIndex又はアウトフィールド処理におけるリードレベルの値を含む。
【0078】
メモリコントローラ10は、履歴値管理テーブルをメモリセルアレイ23の管理情報格納領域に格納可能である。メモリシステム1の起動等に応じて、メモリコントローラ10は、履歴値管理テーブルを管理情報格納領域からリードしてRAM14に格納する。そして、メモリコントローラ10は、RAM14上の履歴値管理テーブルを更新可能である。メモリコントローラ10は、所定のタイミングで履歴値管理テーブルをRAM14から取得して管理情報格納領域に格納する。これにより、履歴値管理テーブルが不揮発化される。
【0079】
図6に示す履歴値管理テーブルは、履歴値共有領域HVSU1,HVSU3,HVSU5が、アウトフィールド処理の履歴値(すなわち、リードレベルの値Vth1,Vth3,Vth5)を用いるべきであることを示す。同様に、履歴値共有領域HVSU2,HVSU4,HVSU6が、インフィールド処理の履歴値(すなわち、シフトインデックスIndex#3,Index#4,Index#2)を用いるべきであることが示される。
【0080】
次に、メモリシステム1の動作について、
図7を用いて説明する。
図7は、メモリシステム1の動作を示すフローチャートである。
【0081】
メモリシステム1において、メモリコントローラ10は、所定の要求に応じて、初段のリード処理を行う(S1)。所定の要求とは、ホスト要求及び内部処理要求を含む。所定の要求は、リード要求であってもよいし、パトロールリード要求であってもよい。メモリコントローラ10は、ホスト30からリード要求を受信したことに応じて、初段のリード処理を行ってもよい。メモリコントローラ10は、パトロールリードを実行すべきタイミングになりパトロールリード要求を内部的に生成したことに応じて、初段のリード処理を行ってもよい。
【0082】
メモリコントローラ10は、ステップS1の結果として、不揮発性メモリ20からリードデータを受けると、リードに成功したか否かを判断する(S2)。メモリコントローラ10は、リードデータに対する誤り訂正に成功しユーザデータを復元できた場合、リードに成功したと判断し(S2でYes)、処理を終了する。
【0083】
メモリコントローラ10は、リードデータに対する誤り訂正に失敗しユーザデータを復元できなかった場合、リードに失敗したと判断し(S2でNo)、所定の要求の対象領域の信頼性が基準を満たすか否かを判断する(S3)。所定の要求がホスト30からのリード要求である場合、所定の要求の対象領域はリード要求で指定される領域である。所定の要求がパトロールリード要求である場合、所定の要求の対象領域はパトロールリード要求で指定される領域である。対象領域の信頼性は、対象領域のメモリセルの疲弊度、または対象領域のメモリセルに記憶されたデータの信頼性を含む。
【0084】
ステップS3の判定には、様々な基準が用いられ得る。様々な基準は、例えば、メモリセルアレイ23内の領域であって、所定の要求の対象領域よりも大きく且つ対象領域を含む領域、または、対象領域よりも小さく且つ対象領域に含まれる領域、についての種々の指標に基づいて決定される。
【0085】
例えば、メモリコントローラ10は、メモリセルアレイ23に対するライト・イレーズサイクル数を消去動作の単位領域ごとに管理可能である。消去動作の単位領域は、物理ブロックであってもよいし、スーパーブロックであってもよい。メモリコントローラ10は、領域の識別子とライト・イレーズサイクル数とが複数の領域について対応づけられた管理情報を用いて、ライト・イレーズサイクル数を管理してもよい。メモリコントローラ10は、消去動作の単位領域ごとにカウンタを有し、カウンタを用いて、ライト・イレーズサイクル数を管理してもよい。
【0086】
この場合、メモリコントローラ10は、所定の要求の対象領域に含まれる消去動作の単位領域(または、所定の要求の対象領域を含む消去動作の単位領域)のライト・イレーズサイクル数が第1の閾値以下である場合、対象領域の信頼性が基準を満たす(S3でYes)と判断する。第1の閾値は、対象領域のメモリセルの疲弊度が所定の範囲内に収まるようなライト・イレーズサイクル数に対応する。メモリコントローラ10は、対象領域のライト・イレーズサイクル数が第1の閾値より大きい場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0087】
あるいは、メモリコントローラ10は、メモリセルアレイ23に対するリード回数をリード動作の単位領域ごとに管理可能である。リード動作の単位領域は、メモリセルグループMCGであってもよいし、スーパーページであってもよい。メモリコントローラ10は、領域の識別子とリード回数とが複数の単位領域について対応づけられた管理情報を用いて、リード回数を管理してもよい。メモリコントローラ10は、単位領域ごとにカウンタを有し、カウンタを用いて、リード回数を管理してもよい。
【0088】
この場合、メモリコントローラ10は、所定の要求の対象領域に含まれるリード動作の単位領域(または、所定の要求の対象領域を含むリード動作の単位領域)のリード回数が第2の閾値以下である場合、対象領域の信頼性が基準を満たす(S3でYes)と判断する。第2の閾値は、対象領域のメモリセルに記憶されたデータの信頼性が所定の範囲内に収まるようなリード回数に対応する。メモリコントローラ10は、対象領域のリード回数が第2の閾値より大きい場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0089】
あるいは、メモリコントローラ10は、定期リフレッシュが実行されたタイミングと強制リフレッシュが実行されたタイミングとを、それぞれリフレッシュ動作の単位領域(例えば、スーパーブロック)ごとに管理可能である。メモリコントローラ10は、定期リフレッシュを、所定の期間ごとに周期的に行う。メモリコントローラ10は、強制リフレッシュを、リードデータのビットエラーレートが閾値を超えたことに応じて行う。あるいは、メモリコントローラ10は、リードデータのビットエラーレートが閾値を超えたことに応じて、定期リフレッシュの時間間隔を短くする。メモリコントローラ10は、定期リフレッシュ及び強制リフレッシュのいずれにおいても、リフレッシュ動作の単位領域からデータをリードし、リードデータを他の単位領域にライトし直す。
【0090】
この場合、メモリコントローラ10は、所定の要求の対象領域に含まれるリフレッシュ動作の単位領域(または、所定の要求の対象領域を含むリフレッシュ動作の単位領域)について、前回実行されたリフレッシュが定期リフレッシュだった場合、対象領域の信頼性が基準を満たす(S3でYes)と判断する。メモリコントローラ10は、対象領域について、前回実行されたリフレッシュが強制リフレッシュであった場合(すなわち、当該対象領域からリードされたリードデータのビットエラーレートが、所定の周期の経過前に閾値を超えた場合)、対象領域のメモリセルの疲弊度があがっており、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0091】
あるいは、メモリコントローラ10は、所定の要求の対象領域に含まれるリフレッシュ動作の単位領域(または、所定の要求の対象領域を含むリフレッシュ動作の単位領域)について、定期リフレッシュの時間間隔が第3の閾値より大きい場合、対象領域の信頼性が基準を満たす(S3でYes)と判断する。第3の閾値は、対象領域のメモリセルに記憶されたデータの信頼性が所定の範囲内に収まるような定期リフレッシュの時間間隔に対応する。メモリコントローラ10は、対象領域について、定期リフレッシュの時間間隔が第3の閾値より小さい場合、対象領域のメモリセルの疲弊度があがっており、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0092】
あるいは、メモリコントローラ10は、ECC部13による誤り訂正能力を、誤り訂正処理の単位領域ごとに管理可能である。誤り訂正処理の単位領域は、メモリセルグループMCGであってもよいし、スーパーページであってもよい。複数のチャネルによって複数のメモリチップがメモリコントローラ10にそれぞれ接続されている場合、誤り訂正処理の単位領域は、複数のメモリチップのメモリセルを含んでもよい。メモリセルグループMCGが複数ページ分のデータを記憶する場合、誤り訂正能力は、リード対象のページデータごとに管理されてもよい。メモリコントローラ10は、誤り訂正処理の単位領域におけるビットエラーレートが閾値を超えたことに応じて、誤り訂正能力を第1訂正能力(例えば誤り訂正処理の単位領域あたりNビットの訂正能力)から第2訂正能力(例えば誤り訂正処理の単位領域あたりNビットよりも多いMビットの訂正能力)に引き上げてもよい。例えば、誤り訂正能力が引き上げられる単位領域では、冗長性が高められたECCパリティを含む符号語がライトされる。
【0093】
メモリコントローラ10は、所定の要求の対象領域に含まれる誤り訂正処理の単位領域(または、所定の要求の対象領域を含む誤り訂正処理の単位領域)において誤り訂正能力が引き上げられた場合、対象領域のメモリセルに記憶されたデータの信頼性が確保できるので、対象領域の信頼性が基準を満たす(S3でYes)と判断する。メモリコントローラ10は、対象領域において誤り訂正能力が引き上げられていない場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0094】
あるいは、メモリコントローラ10は、メモリセルアレイ23に対するライト時の温度をライト動作の単位領域ごとに管理可能である。ライト動作の単位領域は、メモリセルグループMCGであってもよいし、スーパーページであってもよい。メモリコントローラ10は、領域の識別子とライト時の温度とが複数の単位領域について対応づけられた管理情報を用いて、ライト時の温度を管理してもよい。
【0095】
この場合、メモリコントローラ10は、所定の要求の対象領域に含まれるライト動作の単位領域(または、所定の要求の対象領域を含むライト動作の単位領域)へのライト時の温度が第4の閾値以上である場合、対象領域のメモリセルに記憶されたデータの信頼性が確保できるので、対象領域の信頼性が基準を満たす(S3でYes)と判断する。第4の閾値は、メモリセルが適正に動作可能な温度範囲の下限値(例えば、15℃)に対応する。メモリコントローラ10は、対象領域のライト時の温度が第4の閾値より低い場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0096】
あるいは、メモリコントローラ10は、所定の要求の対象領域に対応するワードラインがブロックにおける第1の位置に存在する場合、対象領域の信頼性が基準を満たす(S3でYes)と判断する。第1の位置は、メモリセルに記憶されたデータの信頼性が所定の範囲内に収まるようなワードラインの位置(例えば、ブロックにおける端より内側の位置)に対応する。メモリコントローラ10は、対象領域に対応するワードラインがブロックにおける第1の位置とは異なる(例えば、第1の位置より端に近い)第2の位置に存在する場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0097】
あるいは、メモリコントローラ10は、メモリシステム1の起動からの経過時間を管理可能である。メモリコントローラ10は、タイマを有し、電力供給を受けると、タイマを始動させて経過時間を測定し始める。メモリコントローラ10は、タイマを参照することで、メモリシステム1の起動からの経過時間を把握できる。
【0098】
この場合、メモリコントローラ10は、メモリシステム1の起動からの経過時間が第5の閾値以上である場合、所定の要求の対象領域の信頼性が基準を満たす(S3でYes)と判断する。第5の閾値は、メモリシステム1の起動からメモリセルの動作が安定するまでの時間に対応する。メモリコントローラ10は、メモリシステム1の起動からの経過時間が第5の閾値より短い場合、対象領域の信頼性が基準を満たさない(S3でNo)と判断する。
【0099】
メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たす場合(S3でYes)、インフィールド処理を実行する(S4)。
【0100】
メモリコントローラ10は、ステップS4の結果として、不揮発性メモリ20からリードデータを受けると、リードに成功したか否かを判断する(S5)。メモリコントローラ10は、リードデータに対する誤り訂正に成功しユーザデータを復元できた場合、リードに成功したと判断し(S5でYes)、処理を終了する。
【0101】
メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たさない場合(S3でNo)、アウトフィールド処理を実行する(S6)。
【0102】
あるいは、メモリコントローラ10は、ステップS4の結果として、リードデータに対する誤り訂正に失敗しユーザデータを復元できなかった場合、リードに失敗したと判断し(S5でNo)、アウトフィールド処理を実行する(S6)。
【0103】
メモリコントローラ10は、ステップS6の結果として、不揮発性メモリ20からリードデータを受けると、リードに成功したか否かを判断する(S7)。メモリコントローラ10は、リードデータに対する誤り訂正に成功しユーザデータを復元できた場合、リードに成功したと判断し(S7でYes)、処理を終了する。
【0104】
メモリコントローラ10は、ステップS6の結果として、リードデータに対する誤り訂正に失敗しユーザデータを復元できなかった場合、リードに失敗したと判断し(S7でNo)、ユーザデータ復元のための他の処理を実行する(S8)。他の処理は、例えば、リードデータに対する尤度を判定しユーザデータを復元する処理(軟判定復号処理)、または、RAID(Redundant Arrays of Inexpensive Disks)技術を用いてユーザデータを復元する処理、を含む。
【0105】
メモリコントローラ10は、ステップS8の結果として、不揮発性メモリ20からリードデータを受けると、リードに成功したか否かを判断する(S9)。メモリコントローラ10は、リードデータに対する誤り訂正に成功しユーザデータを復元できた場合、リードに成功したと判断し(S9でYes)、処理を終了する。
【0106】
メモリコントローラ10は、ステップS8の結果として、リードデータに対する誤り訂正に失敗しユーザデータを復元できなかった場合、リードに失敗したと判断し(S9でNo)、エラー処理を行う(S10)。
【0107】
次に、インフィールド処理(S4)について、
図8を用いて説明する。
図8は、インフィールド処理を示すフローチャートである。
【0108】
メモリコントローラ10は、インフィールド処理(S4)の開始に応じて、履歴値共有領域管理情報を更新する(S11)。メモリコントローラ10は、所定の要求の対象領域(例えば、スーパーページ)に含まれる履歴値共有領域(または、所定の要求の対象領域を含む履歴値共有領域)を特定する。メモリコントローラ10は、RAM14上の履歴値共有管理情報(例えば、
図5に示す履歴値共有管理テーブル)にアクセスする。メモリコントローラ10は、特定された履歴値共有領域に対応する状態がインフィールドであればそのまま維持し、アウトフィールドであればインフィールドに書き換える。例えば、特定された履歴値共有領域が
図5に示すHVSU2であれば、メモリコントローラ10は、対応する状態がインフィールドであるのでその状態を維持する。
【0109】
メモリコントローラ10は、履歴値管理情報のシフトインデックスXで示される条件でシフトリードを行う(S12)。Xは、シフトインデックスの値を表す。初期の状態で、例えばX=0である。メモリコントローラ10は、RAM14上の履歴値管理情報(例えば、
図6に示す履歴値管理テーブル)にアクセスする。メモリコントローラ10は、特定された履歴値共有領域に対応するシフトインデックスを特定する。例えば、特定された履歴値共有領域が
図6に示すHVSU2であれば、メモリコントローラ10は、シフトインデックスとしてIndex#3(すなわち、X=3)を特定する。
【0110】
特定されたシフトインデックスIndexの具体的な内容は、
図9に示すようなインフィールド処理用のシフトテーブルで特定されてもよい。
図9は、インフィールド処理用のシフトテーブルを示す図である。シフトテーブルでは、シフトインデックスとシフトリード条件とが複数のシフトインデックスについて対応づけられている。シフトリード条件は、所定の基準値からのシフト量及び/又はリードレベルの値を含む。
【0111】
メモリコントローラ10は、インフィールド処理用のシフトテーブルをメモリセルアレイ23の管理情報格納領域に格納可能である。メモリシステム1の起動等に応じて、メモリコントローラ10は、インフィールド処理用のシフトテーブルを管理情報格納領域からリードしてRAM14に格納する。そして、メモリコントローラ10は、RAM14上のシフトテーブルを参照可能である。
【0112】
図9に示すシフトテーブルを参照することで、シフトインデックスに対応するシフトリード条件が特定され得る。X=0(初期値)であれば、リードレベルV
0及び/又はシフト量ΔV
0が特定される。X=1であれば、リードレベルV
1及び/又はシフト量ΔV
1(>ΔV
0)が特定される。X=2であれば、リードレベルV
2及び/又はシフト量ΔV
2(>ΔV
1)が特定される。X=3であれば、リードレベルV
3及び/又はシフト量ΔV
3(>ΔV
2)が特定される。X=4であれば、リードレベルV
4及び/又はシフト量ΔV
4(>ΔV
3)が特定される。
図9の例では、シフトインデックスの値Xが大きくなるほど、所定の基準値からのシフト量が大きいシフトリード条件になる。
【0113】
メモリコントローラ10は、所定の要求の対象領域に対して、特定されたシフトリード条件でシフトリードを行うよう不揮発性メモリ20を制御する。例えば、対象領域が履歴値共有領域HVSU2に含まれる場合、メモリコントローラ10は、Index#3のシフトリード条件(
図9参照)でシフトリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0114】
説明を
図8に戻す。メモリコントローラ10は、リードデータに対して誤り訂正処理を行う(S13)。
【0115】
メモリコントローラ10は、ステップS13の結果、誤り訂正に成功した場合(S14でYes)、ユーザデータを復元でき、リードに成功した(S22)として処理を終了する。
【0116】
メモリコントローラ10は、ステップS13の結果、誤り訂正に失敗した場合(S14でNo)、シフトインデックスの値Xが所定の閾値Y以上であるか否かを判断する(S15)。
【0117】
閾値Yは、シフトテーブルにおけるシフトインデックスの最大値であってもよい。例えば、
図9に示すシフトテーブルが用いられる場合、閾値Yは4に設定され得る。例えば、所定の要求の対象領域が履歴値共有領域HVSU2に含まれ、履歴値共有領域HVSU2に対応するシフトインデックスの値Xが3である場合、シフトインデックスの値X(=3)は所定の閾値Y(=4)未満である(S15でNo)。従って、メモリコントローラ10は、シフトインデックスの値Xをインクリメントし(S16)、X=4とする。
【0118】
メモリコントローラ10は、履歴値管理情報のシフトインデックスXで示される条件でシフトリードを行う(S17)。例えばX=4であれば、メモリコントローラ10は、Index#4のシフトリード条件(
図9参照)でシフトリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0119】
メモリコントローラ10は、リードデータに対して誤り訂正処理を行う(S18)。
【0120】
メモリコントローラ10は、ステップS18の結果、誤り訂正に成功した場合(S19でYes)、履歴値管理情報を更新する(S20)。メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。例えば、所定の要求の対象領域が
図6に示す履歴値共有領域HVSU2に含まれる場合、メモリコントローラ10は、履歴値共有領域HVSU2に対応する履歴値を、例えばIndex#3からIndex#4に書き換える。
【0121】
メモリコントローラ10は、ユーザデータを復元でき、リードに成功した(S22)として処理を終了する。
【0122】
メモリコントローラ10は、ステップS18の結果、誤り訂正に失敗した場合(S19でNo)、処理をステップS15に戻し、再び、シフトインデックスの値Xが所定の閾値Y以上であるか否かを判断する(S15)。
【0123】
例えば閾値Yが4の場合、シフトインデックスの値Xが4であれば(S15でYes)、メモリコントローラ10は、ユーザデータを復元できず、リードに失敗した(S21)として処理を終了する。
【0124】
次に、アウトフィールド処理(S6)について、
図10を用いて説明する。
図10は、アウトフィールド処理を示すフローチャートである。
【0125】
メモリコントローラ10は、アウトフィールド処理(S6)の開始に応じて、履歴値共有領域管理情報を更新する(S31)。メモリコントローラ10は、所定の要求の対象領域(例えば、スーパーページ)に含まれる履歴値共有領域(または、所定の要求の対象領域を含む履歴値共有領域)を特定する。メモリコントローラ10は、RAM14上の履歴値共有管理情報(例えば、
図5に示す履歴値共有管理テーブル)にアクセスする。メモリコントローラ10は、特定された履歴値共有領域に対応する状態がアウトフィールドであればそのまま維持し、インフィールドであればアウトフィールドに書き換える。例えば、特定された履歴値共有領域が
図5に示すHVSU1であれば、メモリコントローラ10は、対応する状態がアウトフィールドであるのでその状態を維持する。
【0126】
メモリコントローラ10は、履歴値管理情報のリードレベルの値でリードを行う(S32)。メモリコントローラ10は、RAM14上の履歴値管理情報(例えば、
図6に示す履歴値管理テーブル)にアクセスする。メモリコントローラ10は、特定された履歴値共有領域に対応するリードレベルの値を特定する。例えば、特定された履歴値共有領域が
図6に示すHVSU1であれば、メモリコントローラ10は、リードレベルの値としてVth1を特定する。
【0127】
メモリコントローラ10は、所定の要求の対象領域に対して、特定されたリードレベルの値でリードを行うよう不揮発性メモリ20を制御する。例えば、対象領域が履歴値共有領域HVSU1に含まれる場合、メモリコントローラ10は、リードレベルの値Vth1を用いてリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0128】
メモリコントローラ10は、リードデータに対して誤り訂正処理を行う(S33)。
【0129】
メモリコントローラ10は、ステップS33の結果、誤り訂正に成功した場合(S34でYes)、ユーザデータを復元でき、リードに成功した(S42)として処理を終了する。
【0130】
メモリコントローラ10は、ステップS33の結果、誤り訂正に失敗した場合(S34でNo)、Vthトラッキングを実施する(S35)。メモリコントローラ10は、リードレベルを所定の刻み幅でシフトさせながらシングルレベルリードが複数回実行されるように不揮発性メモリ20を制御する。メモリコントローラ10は、各回のリードデータを不揮発性メモリ20から取得し、オン状態のメモリセルの個数(又は、オフ状態のメモリセルの個数)をカウントする。カウント結果に応じて、メモリコントローラ10は、該当メモリセルグループMCGに含まれる複数のメモリセルの閾値電圧分布のヒストグラムを生成する。メモリコントローラ10は、生成されたヒストグラムに基づいて、リードレベルの値を求める。
【0131】
メモリコントローラ10は、ステップS35で求められたリードレベルの値でリードを行う(S36)。メモリコントローラ10は、ステップS35で求められたリードレベルの値(例えばVth1a)を用いてリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0132】
メモリコントローラ10は、リードデータに対して誤り訂正処理を行う(S37)。
【0133】
メモリコントローラ10は、ステップS37の結果、誤り訂正に成功した場合(S38でYes)、履歴値管理情報を更新する(S39)。メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。例えば、メモリコントローラ10は、履歴値共有領域HVSU1に対応する履歴値をVth1からVth1aに書き換える。
【0134】
メモリコントローラ10は、ユーザデータを復元でき、リードに成功した(S42)として処理を終了する。
【0135】
メモリコントローラ10は、ステップS37の結果、誤り訂正に失敗した場合(S38でNo)、ユーザデータを復元できず、リードに失敗した(S41)として処理を終了する。
【0136】
以上のように、本実施形態のメモリシステム1では、平均的な所要時間が互いに異なる複数のリードリトライ処理が用意される。メモリシステム1は、リードすべき領域の状態に基づき複数のリードリトライ処理をのうち1つのリードリトライ処理を選択して実行する。これにより、リトライリード処理を効率化できる。
【0137】
なお、メモリシステム1は、メモリシステム1に要求される個別の仕様に基づいて複数のリードリトライ処理をのうち1つのリードリトライ処理を選択して実行可能に構成されてもよい。個別の仕様は、メモリシステム1に要求される性能及び/又は信頼性を含む。これにより、例えば、互いに仕様が異なる複数のメモリシステム1について、メモリコントローラ10及び/又はそれに実装されるファームウエアの設計を共通化でき、メモリシステム1の設計及び開発を効率化できる。
【0138】
(第2の実施形態)
次に、第2の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
【0139】
第1の実施形態にかかるメモリシステムでは、
図7を参照して説明したように、所定の要求に応じて初段のリード処理が毎回行われる。しかしながら、初段のリード処理を省略した方が効率的な場合がある。例えば、初段のリード処理でリードに失敗する可能性が高ければ、初段のリード処理を省略した方が効率的である。
【0140】
このような考えに基づき、第2の実施形態にかかるメモリシステム1は、
図11に示すように、次の点で第1の実施形態と異なる動作を行う。
図11は、メモリシステム1の動作を示すフローチャートである。
図11に示す動作では、
図7を参照して説明したステップS3の処理が省略され、ステップS1の処理の前に、ステップS51の処理が追加される。
【0141】
すなわち、メモリコントローラ10は、所定の要求に応じて、所定の要求の対象領域の信頼性が基準を満たすか否かを判断する(S51)。
【0142】
メモリコントローラ10は、対象領域の信頼性が基準を満たさない場合(S51でNo)、初段のリード処理でリードに失敗する可能性が高いと判断して、初段のリード処理を省略し、アウトフィールド処理を実行する(S6)。
【0143】
メモリコントローラ10は、対象領域の信頼性が基準を満たす場合(S51でYes)、所定の要求に応じて、初段のリード処理を行う(S1)。
【0144】
以上のように、第2の実施形態にかかるメモリシステム1では、所定の要求の対象領域の信頼性が基準を満たさない場合に初段のリード処理を省略してリードリトライ処理(例えば、アウトフィールド処理)が行われる。これにより、メモリシステム1の動作をさらに効率化できる。
【0145】
(第3の実施形態)
次に、第3の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態及び第2の実施形態と異なる部分を中心に説明する。
【0146】
第1の実施形態にかかるメモリシステムでは、アウトフィールド処理として、Vthトラッキングが行われる。第3の実施形態では、アウトフィールド処理として、Vthトラッキングに基づくシフトリードが行われる。
【0147】
すなわち、
図12に示すように、次の点で第1の実施形態と異なるアウトフィールド処理が行われる。
図12は、アウトフィールド処理(S6)を示すフローチャートである。
図12に示すアウトフィールド処理では、
図10参照を参照して説明したステップS32の処理に代えてステップS61の処理が行われ、ステップS36の処理に代えてステップS62,S63の処理が行われる。
【0148】
ステップS31の後、メモリコントローラ10は、履歴値管理情報のシフトインデックスXで示される条件でシフトリードを行う(S61)。Xは、シフトインデックスの値を表す。初期の状態で、例えばX=10である。メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。履歴値管理情報には、例えば
図13に示すような履歴値が記録され得る。
図13は、本実施形態にかかる履歴値管理情報を示す図である。本実施形態にかかる履歴値管理情報は、
図6を参照して説明した第1の実施形態にかかる履歴値管理情報と、記録される履歴値が異なる。すなわち、アウトフィールド処理に対応する履歴値は、リードレベルの値に代えて、アウトフィールド処理用のシフトインデックスになっている。
【0149】
メモリコントローラ10は、所定の要求の対象領域(例えば、スーパーページ)に対応する履歴値共有領域のシフトインデックスを特定する。例えば、特定された履歴値共有領域が
図13に示すHVSU1であれば、メモリコントローラ10は、シフトインデックスとしてIndex#10(すなわち、X=10)を特定する。
【0150】
特定されたシフトインデックスIndexの具体的な内容は、
図14に示すようなアウトフィールド処理用のシフトテーブルで特定されてもよい。
図14は、アウトフィールド処理用のシフトテーブルを示す図である。シフトテーブルでは、シフトインデックスとシフトリード条件とが複数のシフトインデックスについて対応づけられている。シフトリード条件は、所定の基準値からのシフト量及び/又はリードレベルの値を含む。
【0151】
メモリコントローラ10は、アウトフィールド処理用のシフトテーブルをメモリセルアレイ23の管理情報格納領域に格納可能である。メモリシステム1の起動等に応じて、メモリコントローラ10は、アウトフィールド処理用のシフトテーブルを管理情報格納領域からリードしてRAM14に格納し、RAM14上のシフトテーブルを参照可能である。
【0152】
図14に示すシフトテーブルを参照することで、シフトインデックスに対応するシフトリード条件が特定され得る。X=10(初期値)であれば、リードレベルV
10及び/又はシフト量ΔV
10が特定される。X=11であれば、リードレベルV
11及び/又はシフト量ΔV
11(>ΔV
10)が特定される。X=12であれば、リードレベルV
12及び/又はシフト量ΔV
12(>ΔV
11)が特定される。X=13であれば、リードレベルV
13及び/又はシフト量ΔV
13(>ΔV
12)が特定される。
図14の例では、シフトインデックスの値Xが大きくなるほど、所定の基準値からのシフト量が大きいシフトリード条件になる。
【0153】
メモリコントローラ10は、所定の要求で指定される領域に対して、特定されたシフトリード条件でシフトリードを行うよう不揮発性メモリ20を制御する。例えば、対象領域が履歴値共有領域HVSU1に含まれる場合、メモリコントローラ10は、Index#10のシフトリード条件(
図14参照)でシフトリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0154】
メモリコントローラ10は、ステップS33の結果、誤り訂正に失敗した場合(S34でNo)、Vthトラッキングを実施する(S35)。メモリコントローラ10は、Vthトラッキングにより、リードレベルの値(例えばVth1b)を求める。
【0155】
メモリコントローラ10は、ステップS35で求められたリードレベルの値に基づき、シフトインデックスの値Xを変更する(S62)。メモリコントローラ10は、アウトフィールド処理用のシフトテーブルを参照し、ステップS35で求められたリードレベルの値に最も近いリードレベルに対応するシフトリード条件を探す。
図14に示した例の場合、ステップS35で求められたリードレベルの値がVth1bであり、リードレベルV
10,V
11,V
12,V
13のうちVth1bに最も近いものがV
12であれば、シフトインデックスの値Xを(例えば10から)12へ変更する。
【0156】
メモリコントローラ10は、シフトインデックスXで示される条件でシフトリードを行う(S63)。例えばX=12であれば、メモリコントローラ10は、Index#12のシフトリード条件(
図14参照)でシフトリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0157】
その後、メモリコントローラ10は、ステップS37以降の処理を第1の実施形態と同様に行う。例えば、履歴値管理情報の更新(S39)において、メモリコントローラ10は、履歴値共有領域HVSU1に対応する履歴値をIndex#10からIndex#12に書き換える。
【0158】
以上のように、第3の実施形態では、メモリシステム1は、アウトフィールド処理として、Vthトラッキングに基づくシフトリードを行う。これによっても、インフィールド処理より信頼性の高いリトライリード処理としてアウトフィールド処理を実現可能である。
【0159】
(第4の実施形態)
次に、第4の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第3の実施形態と異なる部分を中心に説明する。
【0160】
第3の実施形態にかかるメモリシステムでは、アウトフィールド処理として、Vthトラッキングに基づくシフトリードが行われる。第4の実施形態では、アウトフィールド処理として、Vthトラッキング又はそれに基づくシフトリードが行われる。
【0161】
すなわち、
図15に示すように、次の点で第3の実施形態と異なるアウトフィールド処理が行われる。
図15は、アウトフィールド処理(S6)を示すフローチャートである。
図15に示すアウトフィールド処理では、
図12を参照して説明したステップS61の処理に代えてステップS71の処理が行われ、ステップS38とS39との間にステップS72~S74が追加される。
【0162】
ステップS31の後、メモリコントローラ10は、履歴値管理情報の履歴値に応じたリードを行う。メモリコントローラ10は、履歴値管理情報の履歴値がVthトラッキングで求められたリードレベルの値であれば、そのリードレベルの値でリードを行い、履歴値管理情報の履歴値がシフトインデックスXであれば、シフトインデックスXで示される条件でシフトリードを行う(S71)。
【0163】
メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。履歴値管理情報には、例えば
図16に示すような履歴値が記録され得る。
図16は、本実施形態にかかる履歴値管理情報を示す図である。本実施形態にかかる履歴値管理情報は、
図13を参照して説明した第3の実施形態の履歴値管理情報と、記録される履歴値が異なる。すなわち、アウトフィールド処理に対応する履歴値は、リードレベルの値、又は、アウトフィールド処理用のシフトインデックスになっている。
【0164】
メモリコントローラ10は、所定の要求の対象領域(例えば、スーパーページ)に対応する履歴値共有領域の履歴値を特定する。例えば、特定された履歴値共有領域が
図16に示すHVSU1であれば、メモリコントローラ10は、履歴値としてリードレベルの値Vth1を特定する。履歴値共有領域が
図16に示すHVSU3であれば、メモリコントローラ10は、履歴値としてシフトインデックスIndex#12(すなわち、X=12)を特定する。
【0165】
メモリコントローラ10は、対象領域に対して、特定された履歴値がVthトラッキングで求められたリードレベルの値であれば、そのリードレベルの値でリードを行うように不揮発性メモリ20を制御する。メモリコントローラ10は、対象領域に対して、特定された履歴値がシフトインデックスXであれば、シフトインデックスXで示されるシフトリード条件でシフトリードを行うよう不揮発性メモリ20を制御する。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0166】
また、メモリコントローラ10は、ステップS37の結果、誤り訂正に成功した場合(S38でYes)、履歴値管理情報を更新する(S39)。メモリコントローラ10は、ユーザデータを復元でき、リードに成功した(S42)として処理を終了する。
【0167】
メモリコントローラ10は、ステップS37の結果、誤り訂正に失敗した場合(S38でNo)、ステップS35で求められたリードレベルの値(例えばVth1c)を用いてリードを行うよう不揮発性メモリ20を制御する(S72)。そのレスポンスとして、メモリコントローラ10は、リードデータを不揮発性メモリ20から取得する。
【0168】
メモリコントローラ10は、リードデータに対して誤り訂正復号処理を行う(S73)。
【0169】
メモリコントローラ10は、ステップS73の結果、誤り訂正に成功した場合(S74でYes)、履歴値管理情報を更新する(S39)。メモリコントローラ10は、ユーザデータを復元でき、リードに成功した(S42)として処理を終了する。
【0170】
メモリコントローラ10は、ステップS73の結果、誤り訂正に失敗した場合(S74でNo)、ユーザデータを復元できず、リードに失敗した(S41)として処理を終了する。
【0171】
以上のように、第4の実施形態では、メモリシステム1は、アウトフィールド処理として、Vthトラッキング又はそれに基づくシフトリードを行う。これによっても、インフィールド処理より信頼性の高いリトライリード処理としてアウトフィールド処理を実現可能である。
【0172】
(第5の実施形態)
次に、第5の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第4の実施形態と異なる部分を中心に説明する。
【0173】
第1の実施形態にかかるメモリシステムでは、所定の要求の対象領域の信頼性が基準を満たすか否かに基づきリードリトライ処理が選択される。第5の実施形態では、履歴値共有領域の状態に基づきリードリトライ処理が選択される。この選択に用いられる履歴値共有領域は、所定の要求の対象領域よりも大きく且つ対象領域を含む履歴値共有領域、または、対象領域よりも小さく且つ対象領域に含まれる履歴値共有領域、である。
【0174】
すなわち、メモリシステム1は、
図17に示すように、次の点で第1の実施形態と異なる動作を行う。
図17は、メモリシステム1の動作を示すフローチャートである。
図17に示す動作では、
図7を参照して説明したステップS3の処理に代えてステップS81の処理が行われる。
【0175】
メモリコントローラ10は、ステップS1の結果として、リードデータに対する誤り訂正に失敗しユーザデータを復元できなかった場合、リードに失敗したと判断し(S2でNo)、所定の要求の対象領域に含まれる履歴値共有領域(または所定の要求の対象領域を含む履歴値共有領域)を特定する。メモリコントローラ10は、特定された履歴値共有領域の状態を確認する(S81)。メモリコントローラ10は、RAM14上の履歴値共有管理情報(例えば、
図5に示す履歴値共有管理テーブル)にアクセスする。
【0176】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がインフィールドであれば(S81で「インフィールド」)、所定の要求の対象領域がインフィールド処理に適していると判断して、インフィールド処理を実行する(S4)。
【0177】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がアウトフィールドであれば(S81で「アウトフィールド」)、所定の要求の対象領域がアウトフィールド処理に適していると判断して、アウトフィールド処理を実行する(S6)。
【0178】
それ以外の点は、第1の実施形態と同様である。
【0179】
以上のように、第5の実施形態にかかるメモリシステム1では、所定の要求の対象領域に対応する履歴値共有領域の状態に基づき複数のリードリトライ処理をのうち1つのリードリトライ処理が実行される。これによっても、リトライリード処理を効率化できる。
【0180】
(第6の実施形態)
次に、第6の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第5の実施形態と異なる部分を中心に説明する。
【0181】
第5の実施形態にかかるメモリシステムでは、
図17を参照して説明したように、所定の要求に応じて初段のリード処理が毎回行われる。しかしながら、
図11を参照して説明した第2の実施形態と同様に、初段のリード処理を省略した方が効率的な場合がある。
【0182】
このような考えに基づき、第6の実施形態にかかるメモリシステム1は、
図18に示すように、次の点で第5の実施形態と異なる動作を行う。
図18は、メモリシステム1の動作を示すフローチャートである。
図18に示す動作では、
図17を参照して説明したステップS81の処理が省略され、ステップS1の処理の前に、ステップS91の処理が追加される。
【0183】
すなわち、メモリコントローラ10は、所定の要求に応じて、所定の要求の対象領域に対応する履歴値共有領域の状態を確認する(S91)。
【0184】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がアウトフィールドであれば(S91で「アウトフィールド」)、所定の要求の対象領域がアウトフィールド処理に適しており、初段のリード処理でリードに失敗する可能性が高いと判断して、初段のリード処理を省略し、アウトフィールド処理を実行する(S6)。
【0185】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がインフィールドであれば(S91で「インフィールド」)、所定の要求に応じて、初段のリード処理を行う(S1)。
【0186】
以上のように、第6の実施形態にかかるメモリシステム1では、所定の要求の対象領域に対応する履歴値共有領域の状態がアウトフィールド処理に適している場合に初段のリード処理を省略してリードリトライ処理(例えば、アウトフィールド処理)が行われる。これにより、メモリシステム1の動作をさらに効率化できる。
【0187】
(第7の実施形態)
次に、第7の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第6の実施形態と異なる部分を中心に説明する。
【0188】
第7の実施形態にかかるメモリシステムでは、第1の実施形態と第5の実施形態とが組み合わせられた動作が行われる。すなわち、メモリシステム1において、メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たし且つその対象領域に対応する履歴値共有領域の状態がインフィールドである場合、インフィールド処理を実行する。メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たさないかその対象領域に対応する履歴値共有領域の状態がアウトフィールドである場合、アウトフィールド処理を実行する。
【0189】
すなわち、メモリシステム1は、
図19に示すように、次の点で第1の実施形態と異なる動作を行う。
図19は、メモリシステム1の動作を示すフローチャートである。
図19に示す動作では、
図7を参照して説明したステップS3とS4との間に、ステップS81の処理が追加される。
【0190】
メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たす場合(S3でYes)、所定の要求の対象領域に対応する履歴値共有領域の状態を確認する(S81)。
【0191】
メモリコントローラ10は、履歴値共有領域に対応する状態がインフィールドであれば(S81で「インフィールド」)、所定の要求の対象領域がインフィールド処理に適していると判断して、インフィールド処理を実行する(S4)。
【0192】
メモリコントローラ10は、履歴値共有領域に対応する状態がアウトフィールドであれば(S81で「アウトフィールド」)、所定の要求の対象領域がアウトフィールド処理に適していると判断して、アウトフィールド処理を実行する(S6)。
【0193】
それ以外の点は、第1の実施形態と同様である。
【0194】
以上のように、第7の実施形態にかかるメモリシステム1では、所定の要求の対象領域の信頼性と所定の要求の対象領域に対応する履歴値共有領域の状態とに基づき、複数のリードリトライ処理をのうち1つのリードリトライ処理が実行される。これによっても、リトライリード処理を効率化できる。
【0195】
なお、
図19に示す動作において、ステップS3とステップS81の順番が入れ替えられてもよい。
【0196】
(第8の実施形態)
次に、第8の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第7の実施形態と異なる部分を中心に説明する。
【0197】
第7の実施形態にかかるメモリシステムでは、
図19を参照して説明したように、所定の要求に応じて初段のリード処理が毎回行われる。しかしながら、
図11を参照して説明した第2の実施形態と同様に、初段のリード処理を省略した方が効率的な場合がある。
【0198】
このような考えに基づき、第8の実施形態にかかるメモリシステム1は、
図20に示すように、次の点で第7の実施形態と異なる動作を行う。
図20は、メモリシステム1の動作を示すフローチャートである。
図20に示す動作では、
図19を参照して説明したステップS3,S81の処理が省略され、ステップS1の処理の前に、ステップS51,S91の処理が追加される。
【0199】
すなわち、メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たすか否かを判断する(S51)。
【0200】
メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たさない場合(S51でNo)、初段のリード処理でリードに失敗する可能性が高いと判断して、初段のリード処理を省略し、アウトフィールド処理を実行する(S6)。
【0201】
メモリコントローラ10は、所定の要求の対象領域の信頼性が基準を満たす場合(S51でYes)、所定の要求の対象領域に対応する履歴値共有領域の状態を確認する(S91)。
【0202】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がアウトフィールドであれば(S91で「アウトフィールド」)、所定の要求の対象領域がアウトフィールド処理に適しており、初段のリード処理でリードに失敗する可能性が高いと判断して、初段のリード処理を省略し、アウトフィールド処理を実行する(S6)。
【0203】
メモリコントローラ10は、特定された履歴値共有領域に対応する状態がインフィールドであれば(S91で「インフィールド」)、所定の要求に応じて、初段のリード処理を行う(S1)。
【0204】
以上のように、第8の実施形態にかかるメモリシステム1では、所定の要求の対象領域の信頼性が基準を満たさないか所定の要求の対象領域に対応する履歴値共有領域の状態がアウトフィールド処理に適している場合に、初段のリード処理が省略されてリードリトライ処理(例えば、アウトフィールド処理)が行われる。これにより、メモリシステム1の動作をさらに効率化できる。
【0205】
なお、
図20に示す動作において、ステップS51とステップS91の順番が入れ替えられてもよい。
【0206】
(第9の実施形態)
次に、第9の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第8の実施形態と異なる部分を中心に説明する。
【0207】
第1の実施形態から第8の実施形態にかかるメモリシステムでは、インフィールド処理中及びアウトフィールド処理中に履歴値が更新される。第9の実施形態では、インフィールド処理及びアウトフィールド処理以外において履歴値が更新される。
【0208】
例えば、メモリコントローラ10は、履歴値共有領域の状態を確認するパトロールリードを行い、パトロールリードの結果に応じて履歴値を更新してもよい。このパトロールリードは、履歴値更新用のパトロールリードであり、メモリセルの状態を確認するための通常のパトロールリードと異なる。
【0209】
履歴値更新用のパトロールリードでは、Vthトラッキングが行われ、その結果に応じて履歴値が更新されるとともにリードレベルの値が求められ、そのリードレベルの値を用いてリードが行われる。通常のパトロールリードでは、基準値を用いてノーマルリードでリードが行われるか、あるいは、履歴値で示されるリードレベルの値を用いてリードが行われる。履歴値更新用のパトロールリードは、通常のパトロールリードに比べると、その所要時間が長い。
【0210】
メモリシステム1は、履歴値更新用のパトロールリードを実行している間はホスト30からのリード要求を処理することが困難である。メモリセルアレイ23における全ての履歴値共有領域について履歴値更新用のパトロールリードを行うことにすると、この履歴値更新処理に多大な時間を要する。これにより、ホスト30からのリード要求に対するレイテンシが増大する可能性がある。
【0211】
そこで、第9の実施形態では、メモリコントローラ10は、履歴値更新用のパトロールリード要求で指定される領域(例えば、履歴値共有領域)がアウトフィールド処理に適する場合、アウトフィールド処理に適した履歴値更新用のパトロールリード処理を実行し、実行結果に応じて履歴値管理情報における履歴値を更新する。メモリコントローラ10は、履歴値更新用のパトロールリード要求で指定される領域(例えば、履歴値共有領域)がインフィールド処理に適する場合、履歴値更新用のパトロールリード処理の実行をスキップする。
【0212】
メモリシステム1は、
図21に示すような動作を行う。
図21は、メモリシステム1の動作を示すフローチャートである。
【0213】
メモリシステム1において、メモリコントローラ10は、履歴値更新用のパトロールリードを行うべきか否かを判断する(S101)。メモリコントローラ10は、所定の条件が成立するまで(S101でNo)、待機する。所定の条件は、前回の履歴値更新用のパトロールリードの実行から所定の期間が経過することであってもよいし、1以上の履歴値共有領域のエラービット数(又は、フェイルビットカウント)が閾値を超えることであってもよい。あるいは、誤り訂正が反復訂正を伴う方式(例えば、LDPC方式)である場合、所定の条件は、誤り訂正の反復回数が閾値回数を超えることであってもよい。あるいは、所定の条件は、誤り訂正能力がホストリード時より引き下げられた状態で誤り訂正に失敗することであってもよい。
【0214】
メモリコントローラ10は、所定の条件が成立すると(S101でYes)、メモリセルアレイ23に含まれる複数の履歴値共有領域から履歴値更新用のパトロールリードが未実行である1つの履歴値共有領域を選択する(S102)。メモリコントローラ10は、その履歴値共有領域を指定する履歴値更新用のパトロールリード要求を内部処理要求として生成する。メモリコントローラ10は、履歴値更新用のパトロールリード要求で指定される履歴値共有領域がアクティブであるか否かを確認する(S103)。例えば、メモリコントローラ10は、履歴値共有領域が含まれる消去単位の領域(例えば、スーパーブロック)がアクティブであるか否かを確認する。
【0215】
消去単位の領域がアクティブな状態であるか否かは、例えば
図22に示すようなブロック管理情報で管理され得る。
図22は、ブロック管理情報を示す図である。
図22では、ブロック管理情報がテーブル形式で実装される場合が例示される。ブロック管理テーブルでは、ブロック識別子と状態とが複数のスーパーブロックについて対応づけられている。ブロック識別子は、スーパーブロックを他のスーパーブロックから識別するための情報である。状態は、スーパーブロックの状態に関する情報であり、アクティブ又はノンアクティブを含む。アクティブは、そのスーパーブロックがライト可能であることを示す。ノンアクティブは、そのスーパーブロックがライト不可であることを示す。状態は、初期に、アクティブになっていてもよい。例えば、メモリコントローラ10は、ユーザデータを復元できなかった場合、そのユーザデータが格納されているスーパーブロックをノンアクティブとしてブロック管理情報に登録してもよい。
【0216】
メモリコントローラ10は、ブロック管理テーブルをメモリセルアレイ23の管理情報格納領域に格納可能である。メモリシステム1の起動等に応じて、メモリコントローラ10は、ブロック管理テーブルを管理情報格納領域からリードしてRAM14に格納し、RAM14上のブロック管理テーブルを更新可能である。メモリコントローラ10は、所定のタイミングでブロック管理テーブルをRAM14から取得してメモリセルアレイ23の管理情報格納領域に格納する。これにより、ブロック管理テーブルが不揮発化される。
【0217】
図22に示すブロック管理テーブルは、スーパーブロックSBLK1,SBLK4,SBLK5,SBLK6が、アクティブであることを示し、スーパーブロックSBLK2,SBLK3がノンアクティブであることを示す。
【0218】
図21に戻る。メモリコントローラ10は、履歴値共有領域が含まれる消去単位の領域がノンアクティブであれば(S103でNo)、履歴値更新が不要であると判断して、処理をステップS108へ進める。
【0219】
メモリコントローラ10は、履歴値共有領域が含まれる消去単位の領域がアクティブであれば(S103でYes)、履歴値を更新すべきである可能性があると判断して、信頼性に関する履歴値共有領域の状態を確認する(S104)。メモリコントローラ10は、RAM14上の履歴値共有管理情報(例えば、
図5に示す履歴値共有管理テーブル)にアクセスする。
【0220】
メモリコントローラ10は、履歴値共有領域に対応する状態がアウトフィールドであれば(S104で「アウトフィールド」)、履歴値を更新すべきである可能性があると判断して、履歴値更新用のパトロールリード処理を実行する(S105)。メモリコントローラ10は、Vthトラッキングを行い、その結果に応じてリードレベルの値を求め、そのリードレベルの値を用いてリードを行うように、不揮発性メモリ20を制御する。
【0221】
メモリコントローラ10は、履歴値更新用のパトロールリード処理の結果として、リードデータを不揮発性メモリ20から受ける。メモリコントローラ10は、履歴値更新用のパトロールリード処理の結果に応じて、履歴値を更新すべきであるか否かを判断する(S106)。
【0222】
処理対象の履歴値共有領域の履歴値がインフィールド処理用またはアウトフィールド用のシフトインデックスであれば、メモリコントローラ10は、RAM14上の履歴値管理情報(例えば、
図6、
図13、または
図16に示す履歴値管理テーブル)とシフトテーブル(例えば
図9または
図14に示すシフトテーブル)とにアクセスする。履歴値管理情報とシフトテーブルとに応じて、メモリコントローラ10は、現在のシフトインデックスで示されるリードレベルを特定する。例えば、処理対象の履歴値共有領域が
図6に示すHVSU2であれば、メモリコントローラ10は、現在のシフトインデックスIndex#3からリードレベルV
3を特定する。例えば、処理対象の履歴値共有領域が
図16に示すHVSU3であれば、メモリコントローラ10は、現在のシフトインデックスIndex#12で示されるリードレベルV
12を特定する。
【0223】
処理対象の履歴値共有領域の履歴値がアウトフィールド処理用のリードレベルの値であれば、メモリコントローラ10は、RAM14上の履歴値管理情報(例えば、
図6に示す履歴値管理テーブル)にアクセスする。履歴値管理情報に応じて、メモリコントローラ10は、現在のリードレベルの値を特定する。例えば、処理対象の履歴値共有領域が
図6に示すHVSU1であれば、メモリコントローラ10は、現在のリードレベルの値としてVth1を特定する。
【0224】
メモリコントローラ10は、現在のインフィールド処理用もしくはアウトフィールド処理用のシフトインデックスで示されるリードレベル、または、現在のアウトフィールド処理用のリードレベルの値と、ステップS105で生成されたリードレベルの値とを比較し、比較結果に応じて、履歴値を更新すべきであるか否かを判断してもよい。例えば、メモリコントローラ10は、これらの差分ΔVreadを求め、差分ΔVreadが閾値以上であれば、履歴値を更新すべき(S106でYes)と判断し、差分ΔVreadが閾値未満であれば、履歴値を更新すべきでない(S106でNo)と判断してもよい。
【0225】
メモリコントローラ10は、履歴値を更新すべきである場合(S106でYes)、履歴値をステップS105の結果に応じた値に更新する(S107)。
【0226】
処理対象の履歴値共有領域の履歴値がインフィールド処理用またはアウトフィールド処理用のシフトインデックスであれば、メモリコントローラ10は、RAM14上のシフトテーブルにアクセスし、ステップS105で生成されたリードレベルの値Vthに最も近いシフトインデックスを特定する。メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。メモリコントローラ10は、履歴値管理テーブルにおける履歴値共有領域に対応するシフトインデックスを、特定されたシフトインデックスでオーバーライトし更新する。
【0227】
処理対象の履歴値共有領域の履歴値がアウトフィールド処理用のリードレベルの値であれば、メモリコントローラ10は、RAM14上の履歴値管理情報にアクセスする。メモリコントローラ10は、履歴値管理テーブルにおける履歴値共有領域に対応するリードレベルの値を、ステップS105で求められたリードレベルの値でオーバーライトし更新する。
【0228】
一方、メモリコントローラ10は、履歴値共有領域に対応する状態がインフィールドであれば(S104で「インフィールド」)、履歴値更新が不要であると判断して、履歴値更新用のパトロールリード処理(S105)の実行をスキップし、処理をステップS108へ進める。
【0229】
メモリコントローラ10は、メモリセルアレイ23に含まれる複数の履歴値共有領域のうち未処理の履歴値共有領域があれば(S108でYes)、処理をステップS102へ戻し、未処理の履歴値共有領域がなければ(S108でNo)、処理を終了する。
【0230】
図23(b)に示すように、メモリコントローラ10は、メモリセルアレイ23に含まれる複数の履歴値共有領域のうち、斜線のハッチングで示される履歴値共有領域に対する履歴値更新用のパトロールリード処理をスキップできる。斜線のハッチングで示される履歴値共有領域は、インフィールド状態であるかノンアクティブ状態である履歴値共有領域である。これにより、
図23(a)に示すように全ての履歴値共有領域に対して履歴値更新用のパトロールリード処理を行う場合に比べて、メモリシステム1は、
図23(b)に示すように、履歴値更新用のパトロールリード処理のトータルの処理時間を低減できる。
【0231】
以上のように、第9の実施形態にかかるメモリシステム1では、メモリコントローラ10は、履歴値更新用のパトロールリード要求で指定される領域(例えば、履歴値共有領域)がアウトフィールド処理に適している場合、アウトフィールド処理に適した履歴値更新用のパトロールリード処理を実行し、実行結果に応じて履歴値管理情報における履歴値を更新する。メモリコントローラ10は、履歴値更新用のパトロールリード要求で指定される領域(例えば、履歴値共有領域)がインフィールド処理に適している場合、履歴値更新用のパトロールリード処理の実行をスキップする。これにより、メモリシステム1における履歴値更新用のパトロールリード処理のトータルの処理時間を低減でき、ホスト30からのリード要求に対するレイテンシを低減できる。これにより、メモリシステム1のパフォーマンスを向上できる。
【0232】
なお、
図21に示す動作において、ステップS103とステップS104の順番が入れ替えられてもよい。
【0233】
(第10の実施形態)
次に、第10の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態から第9の実施形態と異なる部分を中心に説明する。
【0234】
第9の実施形態にかかるメモリシステムでは、履歴値更新用のパトロールリード要求で指定される領域がインフィールド処理に適している場合に履歴値更新用のパトロールリード処理の実行がスキップされる。第10の実施形態では、履歴値更新用のパトロールリード要求で指定される領域がアウトフィールド処理に適している場合に履歴値更新用のパトロールリード処理の実行がスキップされる。
【0235】
例えば、メモリシステム1は、
図24に示すように、次の点で第9の実施形態と異なる動作を行う。
図24は、メモリシステム1の動作を示すフローチャートである。
図24に示す動作では、
図21を参照して説明したステップS104の処理に代えてステップS114の処理が行われる。
【0236】
メモリコントローラ10は、履歴値共有領域が含まれる消去単位の領域がアクティブであれば(S103でYes)、履歴値を更新すべきである可能性があると判断して、信頼性に関する履歴値共有領域の状態を確認する(S114)。
【0237】
メモリコントローラ10は、履歴値共有領域に対応する状態がインフィールドであれば(S114で「インフィールド」)、履歴値を更新すべきである可能性があると判断して、履歴値更新用のパトロールリード処理を実行する(S105)。
【0238】
一方、メモリコントローラ10は、履歴値共有領域に対応する状態がアウトフィールドであれば(S114で「アウトフィールド」)、履歴値更新が不要であると判断して、履歴値更新用のパトロールリード処理(S105)の実行をスキップし、処理をステップS108へ進める。
【0239】
それ以外の点は、第9の実施形態と同様である。
【0240】
図25(b)に示すように、メモリコントローラ10は、メモリセルアレイ23に含まれる複数の履歴値共有領域のうち、斜線のハッチングで示される履歴値共有領域に対する履歴値更新用のパトロールリード処理をスキップできる。斜線のハッチングで示される履歴値共有領域は、アウトフィールド状態であるかノンアクティブ状態である履歴値共有領域である。これにより、
図25(a)に示すように全ての履歴値共有領域に対して履歴値更新用のパトロールリード処理を行う場合に比べて、メモリシステム1は、
図25(b)に示すように、履歴値更新用のパトロールリード処理のトータルの処理時間を低減できる。
【0241】
以上のように、第10の実施形態では、第9の実施形態と同様の効果が得られる。
【0242】
なお、
図24に示す動作において、ステップS103とステップS114の順番が入れ替えられてもよい。
【0243】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0244】
1 メモリシステム、4 柱状体、4a,4b ティア、10 メモリコントローラ、11 制御部、12 バッファインタフェース回路、13 ECC部、14 RAM、15 ホストインタフェース回路、16 メモリインタフェース回路、17 内部バス、18 メモリバス、19 バッファメモリ、20 不揮発性メモリ、21 コマンド処理部、22 駆動部、23 メモリセルアレイ、24 カラムモジュール、25 温度センサ、30 ホスト、31 ホストバス、211 シーケンサ、212 コマンドレジスタ、213 アドレスレジスタ、231,231A,231B 積層体、HVSU1,HVSU2 履歴値共有領域、MT0~MT95 メモリセル、SGS 選択ゲートライン、SL ソースライン、WL,WL0~WL95 ワードライン。