(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-28
(45)【発行日】2024-07-08
(54)【発明の名称】メモリシステム及び情報処理システム
(51)【国際特許分類】
G06F 11/22 20060101AFI20240701BHJP
G11C 29/44 20060101ALI20240701BHJP
【FI】
G06F11/22 673U
G11C29/44
(21)【出願番号】P 2020151960
(22)【出願日】2020-09-10
【審査請求日】2023-03-17
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】黒澤 泰彦
(72)【発明者】
【氏名】武田 奈穂美
(72)【発明者】
【氏名】白川 政信
(72)【発明者】
【氏名】牛島 康之
(72)【発明者】
【氏名】菅野 伸一
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2017-068634(JP,A)
【文献】特表2016-507095(JP,A)
【文献】特開2013-168173(JP,A)
【文献】特開2019-046530(JP,A)
【文献】米国特許出願公開第2014/0201473(US,A1)
【文献】特開2020-047322(JP,A)
【文献】特開2012-247817(JP,A)
【文献】特開2008-027240(JP,A)
【文献】中国特許出願公開第106776185(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G11C 29/44
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
第1コマンドセット
をホストから受信したことに応じて、パトロール処理を実行するように構成されたメモリコントローラと、
を備えたメモリシステムであって、
前記メモリコントローラは、前記パトロール処理において、
前記不揮発性メモリから第1データを読み出し、
前記第1データを前記
ホストに出力しない
ように構成さ
れ、
前記第1コマンドセットは、前記パトロール処理が第1パトロール処理であるか第2パトロール処理であるかを指定し、
前記メモリコントローラは、
前記第1パトロール処理及び前記第2パトロール処理において、
前記第1データに含まれるエラーを検出する
ように構成され、
前記第2パトロール処理において、更に
前記第1データに含まれるエラーを訂正した第3データを生成し、
前記第1データ及び前記第3データに基づき、前記不揮発性メモリに適用される読出し電圧を更新する
ように構成された、
メモリシステム。
【請求項2】
前記第1コマンドセットは、前記不揮発性メモリにおける前記第1データの記憶領域を指定する、
請求項1記載のメモリシステム。
【請求項3】
前記第1コマンドセットは、前記パトロール処理の第1周期を指定する、
請求項1記載のメモリシステム。
【請求項4】
前記メモリコントローラは、前記第1コマンドセットに応じて、前記パトロール処理を1度だけ実行するように構成された、
請求項1記載のメモリシステム。
【請求項5】
前記第1コマンドセットは、前記パトロール処理の第1優先度を指定する、
請求項1記載のメモリシステム。
【請求項6】
前記メモリコントローラは、前記パトロール処理の実行後に、第4コマンドセットに応じて、前記検出されたエラービット数が閾値以上であるか否かを示す情報を前記
ホストに出力するように構成された、
請求項
1記載のメモリシステム。
【請求項7】
前記メモリコントローラは、前記第1コマンドセットを受けた後に、第5コマンドセットに応じて、前記パトロール処理の実行を中止するように構成された、
請求項1記載のメモリシステム。
【請求項8】
不揮発性メモリと、
第1コマンドセットをホストから受信したことに応じて、パトロール処理を実行するように構成されたメモリコントローラと、
を備えたメモリシステムであって、
前記メモリコントローラは、前記パトロール処理において、
前記不揮発性メモリから第1データを読み出し、
前記第1データを前記ホストに出力しない
ように構成され、
前記第1コマンドセットは、前記パトロール処理の第1周期及び第1優先度を指定し、
前記メモリコントローラは、前記第1コマンドセットを受けた後、前記パトロール処理に関する第6コマンドセットに応じて、第2周期又は第2優先度を含む推奨パトロールモードに関する情報を前記ホストに出力するように構成された、
メモリシステム。
【請求項9】
前記第1コマンドセットは、前記不揮発性メモリにおける前記第1データの記憶領域を指定する、
請求項8記載のメモリシステム。
【請求項10】
前記第1コマンドセットは、前記パトロール処理の第1優先度を指定する、
請求項8記載のメモリシステム。
【請求項11】
前記第2周期は、前記第1周期と異なり、
前記第2優先度は、前記第1優先度と異なる、
請求項
8記載のメモリシステム。
【請求項12】
メモリコントローラは、前記第6コマンドセットに応じて、前記不揮発性メモリから前記第2周期又は前記第2優先度を含む
前記情報を取得するように構成された、
請求項
8記載のメモリシステム。
【請求項13】
メモリコントローラは、前記第6コマンドセットに応じて、
前記不揮発性メモリからデバイスIDを取得し、
前記デバイスIDに基づき、前記第2周期又は前記第2優先度を含む
前記情報を前記
ホストに出力するように構成された、
請求項
8記載のメモリシステム。
【請求項14】
メモリシステムと、
前記メモリシステムに第1コマンドセットを送出するように構成されたホス
トと、
を備え、
前記メモリシステムは、
不揮発性メモリと、
前記第1コマンドセットに応じて、パトロール処理を実行するように構成されたメモリコントローラと、
を含み、
前記メモリコントローラは、前記パトロール処理において、
前記不揮発性メモリから第1データを読み出し、
前記第1データを前記ホス
トに出力しない
ように構成さ
れ、
前記第1コマンドセットは、前記パトロール処理が第1パトロール処理であるか第2パトロール処理であるかを指定し、
前記メモリコントローラは、
前記第1パトロール処理及び前記第2パトロール処理において、
前記第1データに含まれるエラーを検出する
ように構成され、
前記第2パトロール処理において、更に
前記第1データに含まれるエラーを訂正した第3データを生成し、
前記第1データ及び前記第3データに基づき、前記不揮発性メモリに適用される読出し電圧を更新する
ように構成された、
情報処理システム。
【請求項15】
前記第1コマンドセットは、前記不揮発性メモリにおける前記第1データの記憶領域を指定する、
請求項
14記載の情報処理システム。
【請求項16】
前記第1コマンドセットは、前記パトロール処理の周期を指定する、
請求項
14記載の情報処理システム。
【請求項17】
前記第1コマンドセットは、前記パトロール処理の優先度を指定する、
請求項
14記載の情報処理システム。
【請求項18】
前記ホス
トと前記メモリシステムとの間の通信は、SD
TMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はPCIe(Peripheral component interconnect express)に準拠する、
請求項
14記載の情報処理システム。
【請求項19】
不揮発性メモリと、
パトロール処理の第1周期を指定する第1コマンドセットをホストから受信したことに応じて、前記パトロール処理を実行するように構成されたメモリコントローラと、
を備えたメモリシステムであって、
前記メモリコントローラは、前記パトロール処理において、
前記不揮発性メモリから第1データを読み出し、
前記第1データを前記ホストに出力しない
ように構成され、
前記メモリコントローラは、前記第1コマンドセットを前記ホストから受信したことに応じて、前記第1周期ごとに前記パトロール処理を繰り返し実行するように構成された、
メモリシステム。
【請求項20】
前記メモリコントローラは、前記第1コマンドセットを受けた後に、第3コマンドセットに応じて、前記第1周期ごとに前記パトロール処理が繰り返し実行されているか否かを示す情報を前記ホストに出力するように構成された、
請求項19記載のメモリシステム。
【請求項21】
不揮発性メモリと、
パトロール処理の第1優先度を指定する第1コマンドセットをホストから受信したことに応じて、前記パトロール処理を実行し、第2コマンドセットを前記ホストから受信したことに応じて、前記不揮発性メモリから第2データを読み出し、前記第2データを前記ホストに出力するホスト読出し処理を実行するように構成されたメモリコントローラと、
を備えたメモリシステムであって、
前記メモリコントローラは、前記パトロール処理において、
前記不揮発性メモリから第1データを読み出し、
前記第1データを前記ホストに出力しない
ように構成され、
前記メモリコントローラは、前記第1コマンドセットを前記ホストから受信したことに応じて、前記第1優先度に基づき、前記パトロール処理を、前記ホスト読出し処理よりも優先して実行するか否かを判定するように構成された、
メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステム及び情報処理システムに関する。
【背景技術】
【0002】
メモリシステムと、メモリシステムを制御するホスト機器と、を含む情報処理システムが知られている。メモリシステムは、半導体記憶装置としてのNAND型フラッシュメモリと、半導体記憶装置を制御するメモリコントローラと、を含む。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2020-47337号公報
【文献】米国特許第9836219号明細書
【文献】米国特許第9465537号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
パトロール処理の制御性を向上させる。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、第1コマンドセットをホストから受信したことに応じて、パトロール処理を実行するように構成されたメモリコントローラと、を備える。上記メモリコントローラは、上記パトロール処理において、上記不揮発性メモリから第1データを読み出し、上記第1データを上記ホストに出力しないように構成される。上記第1コマンドセットは、上記パトロール処理が第1パトロール処理であるか第2パトロール処理であるかを指定する。上記メモリコントローラは、上記第1パトロール処理及び前記第2パトロール処理において、上記第1データに含まれるエラーを検出するように構成され、上記第2パトロール処理において、更に上記第1データに含まれるエラーを訂正した第3データを生成し、上記第1データ及び上記第3データに基づき、上記不揮発性メモリに適用される読出し電圧を更新するように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係るメモリシステムを含む情報処理システムの構成を説明するためのブロック図。
【
図2】第1実施形態に係る不揮発性メモリの構成を説明するためのブロック図。
【
図3】第1実施形態に係る不揮発性メモリのメモリセルアレイの構成を説明するための回路図。
【
図4】第1実施形態に係るメモリセルアレイの閾値電圧分布を説明するための模式図。
【
図5】第1実施形態に係る情報処理システムのパトロール管理情報を説明するための概念図。
【
図6】第1実施形態に係る情報処理システムのパトロール管理情報の詳細を説明するための概念図。
【
図7】第1実施形態に係る情報処理システムのパトロール管理情報の詳細を説明するための概念図。
【
図8】第1実施形態に係る情報処理システムのパトロール結果情報を説明するための概念図。
【
図9】第1実施形態に係る情報処理システムのパトロール進捗情報を説明するための概念図。
【
図10】第1実施形態に係る情報処理システムにおけるパトロール管理動作を説明するためのフローチャート。
【
図11】第1実施形態に係る情報処理システムにおけるパトロールモードの第1例の登録動作を説明するためのコマンドシーケンス。
【
図12】第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第1例を説明するための模式図。
【
図13】第1実施形態に係る情報処理システムにおけるパトロールモードの第2例の登録動作を説明するためのコマンドシーケンス。
【
図14】第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第2例を説明するための模式図。
【
図15】第1実施形態に係る情報処理システムにおけるパトロールモードの第3例の登録動作を説明するためのコマンドシーケンス。
【
図16】第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第3例を説明するための模式図。
【
図17】第1実施形態に係る情報処理システムにおけるパトロールモード設定動作を説明するためのコマンドシーケンス。
【
図18】第1実施形態に係る情報処理システムにおけるパトロール処理を含む一連の動作を説明するためのフローチャート。
【
図19】第1実施形態に係る情報処理システムにおける点検用パトロール処理を説明するためのフローチャート。
【
図20】第1実施形態に係る情報処理システムにおける更新用パトロール処理を説明するためのフローチャート。
【
図21】第1実施形態に係る情報処理システムにおける更新用パトロール処理を説明するための模式図。
【
図22】第1実施形態に係る情報処理システムにおける更新用パトロール処理と点検用パトロール処理との関係を説明するための模式図。
【
図23】第1実施形態の変形例に係る情報処理のシステムパトロール管理情報を説明するための概念図。
【
図24】第1実施形態の変形例に係る情報処理システムにおける巡回動作を説明するためのフローチャート。
【
図25】第2実施形態に係る情報処理システムにおけるパトロール処理を含む一連の動作を説明するためのフローチャート。
【
図26】第2実施形態に係る情報処理システムにおけるパトロール実行動作を説明するためのコマンドシーケンス。
【
図27】第3実施形態に係る情報処理システムのパトロール管理情報を説明するための概念図。
【
図28】第3実施形態に係る情報処理システムにおけるパトロールモード更新動作を説明するためのフローチャート。
【
図29】第3実施形態に係る情報処理システムにおけるパトロールモード更新動作を説明するための模式図。
【
図30】第3実施形態の変形例に係る情報処理システムにおけるパトロールモード出力動作を説明するためのフローチャート。
【
図31】その他の変形例に係る情報処理システムにおける更新用パトロール処理を説明するためのフローチャート。
【
図32】その他の変形例に係る情報処理システムにおける更新用パトロール処理を説明するための模式図。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【0008】
1.第1実施形態
第1実施形態に係る情報処理システムについて説明する。
【0009】
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について、
図1を用いて説明する。
【0010】
図1に示すように、情報処理システム1は、ホスト機器2及びメモリシステム3を備える。
【0011】
ホスト機器2は、例えばデータセンタ内のサーバやパーソナルコンピュータ等であり、ルックアップテーブル5を記憶する。ルックアップテーブル5は、メモリシステム3内に記憶されるデータを一意に識別するアドレス情報(論理アドレス)と、当該データが記憶されるメモリシステム3内の記憶領域を一意に識別するアドレス情報(物理アドレス)と、を互いに関連づける情報である。ホスト機器2は、当該ルックアップテーブル5に基づき、メモリシステム3内のどの物理アドレスにデータを書き込むか(又はどの物理アドレスからデータを読み出すか)を指示可能に構成される。
【0012】
メモリシステム3は、例えばSoC(System-on-a-Chip)であり、ホスト機器2からの命令に応答してメモリシステム3内の不揮発性メモリ10に対して読出し処理、書込み処理、及び消去処理等の実行を命令する。
【0013】
1.1.2 メモリシステム
引き続き
図1を参照して、第1実施形態に係るメモリシステムの構成について説明する。
【0014】
メモリシステム3は、不揮発性メモリ10、揮発性メモリ20、及びメモリコントローラ30を含み、ホスト機器2に接続される。不揮発性メモリ10、揮発性メモリ20、及びメモリコントローラ30は、例えばそれらの組み合わせにより一つの半導体装置を構成してもよく、その例としてはSDTMカードのようなメモリカードや、UFS(universal flash storage)、SSD(solid state drive)等が挙げられる。
【0015】
不揮発性メモリ10(以下、NANDフラッシュメモリ10)は、例えば、各々が複数のメモリセルトランジスタを含む複数のチップ10-0~10-Nを含み、ホスト機器2から書き込みを指示されたデータを不揮発に記憶する(Nは1以上の整数)。チップ10-0~10-Nは、互いに異なるデバイスIDを有していてもよいし、同一のデバイスIDを有していてもよい。デバイスIDは、例えば、チップの製造メーカ、型番、ロット数等を特定する情報である。なお、以下では、便宜上、チップ10-0~10-Nはそれぞれ、Chip0~ChipNとも記載する場合がある。
【0016】
揮発性メモリ20(以下、DRAM20)は、例えばDRAM(Dynamic random access memory)であり、NANDフラッシュメモリ10を管理するためのファームウェアや、各種の管理情報を記憶する。例えば、DRAM20は、パトロール処理を制御するための情報として、パトロール管理情報21、パトロール結果情報22、及びパトロール進捗情報23を記憶する。
【0017】
パトロール処理は、NANDフラッシュメモリ10に記憶されたデータを少ないエラービット数で読み出すために、定期又は不定期に実行される読み出し処理を含み、例えば、点検用パトロール処理及び更新用パトロール処理を含む。パトロール処理内の読出し処理によってNANDフラッシュメモリ10から読み出されるデータは、ホスト機器2には出力されない。すなわち、パトロール処理は、NANDフラッシュメモリ10から読み出されたデータをホスト機器2に出力しない点において、ホスト機器2に出力するデータを読み出すホスト読出し処理と異なる。
【0018】
点検用パトロール処理は、パトロール対象から読み出されるデータに含まれるエラーを訂正できるか否かを点検する機能を有する。更新用パトロール処理は、パトロール対象から読み出されるデータに含まれるエラーを少なくするために、データを読み出す際に使用される読出し電圧を更新する機能を有する。パトロール処理の詳細については、後述する。
【0019】
パトロール管理情報21は、NANDフラッシュメモリ10に対して実行されるパトロール処理の実行範囲(物理アドレス)、種別、頻度、優先度等のスケジュールを管理するための情報を含む。パトロール結果情報22は、パトロール処理の結果を含み、例えば、パトロール対象の物理アドレスに記憶されたデータが少ないエラービット数で読み出せるか否か、またエラービット数が多い場合には、当該データをリフレッシュすべきか否か、を示す情報を含む。パトロール進捗情報23は、パトロール処理の進捗状況を示す情報を含み、例えば、パトロール処理がパトロール管理情報21内に記憶されたスケジュール通りに実行されているか否かを示す情報を含む。
【0020】
メモリコントローラ30は、プロセッサ(CPU)31、バッファメモリ32、ホストインタフェース回路33、ECC回路34、NANDインタフェース回路35、及びDRAMインタフェース回路36を含む。なお、以下に説明されるメモリコントローラ30の各部31-36の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
【0021】
プロセッサ31は、ROM(Read only memory)に記憶されたプログラムをロードすることによってメモリコントローラ30全体の動作を制御する。例えば、プロセッサ31は、ホスト機器2から読出し要求を受信した際には、それに応答して、読出し処理を実行する。書込み処理及び消去処理の際も同様である。またプロセッサ31は、ホスト機器2からパトロール管理情報設定要求を受信した際には、それに応答して、パトロール処理のスケジュールを生成し、パトロール管理情報21に設定する。すなわち、プロセッサ31は、ホスト機器2からの要求に応じたスケジュールに基づいて、パトロール処理を実行する。
【0022】
バッファメモリ32は、例えばSRAM(Static random access memory)であり、メモリコントローラ30がNANDフラッシュメモリ10から読み出したデータや、ホスト機器2から受信した書込みデータ等を一時的に記憶する。
【0023】
ホストインタフェース回路33は、ホストバスを介してホスト機器2と接続され、メモリコントローラ30とホスト機器2との間の通信を司る。ホストバスは、例えば、SDTMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はPCIe(Peripheral component interconnect express)等に準拠したバスである。
【0024】
ECC回路34は、NANDフラッシュメモリ10に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちECC回路34は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose‐Chaudhuri‐Hocquenghem)符号やRS(Reed‐Solomon)符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。
【0025】
NANDインタフェース回路35は、NANDバスによってNANDフラッシュメモリ10と接続され、NANDフラッシュメモリ10との通信を司る。NANDインタフェース回路35は、メモリコントローラ30とNANDフラッシュメモリ10と間におけるデータ、コマンド、及び物理アドレスの転送を制御し、NANDフラッシュメモリ10内の各チップ10-0~10-Nを独立に制御し得る。NANDインタフェース回路35は、NANDインタフェース規格をサポートする。
【0026】
DRAMインタフェース回路36は、DRAM20に接続され、メモリコントローラ30とDRAM20との間の通信を司る。DRAMインタフェース回路36は、DRAMインタフェース規格をサポートする。
【0027】
1.1.3 チップ
次に、NANDフラッシュメモリ10内のチップの構成について、
図2を用いて説明する。
図2では、チップ10-0内の構成が一例として示される。なお、チップ10-0以外のチップ10-1~10-Nは、チップ10-0と同等の構成を有するため、説明を省略する。
【0028】
図2に示すように、チップ10-0は、例えば入出力回路11、レジスタセット12、ロジックコントローラ13、シーケンサ14、レディ/ビジー制御回路15、電圧生成回路16、メモリセルアレイ17、ロウデコーダモジュール18、及びセンスアンプモジュール19を含む。
【0029】
入出力回路11は、例えば8ビット幅の入出力信号I/O1~I/O8を、メモリコントローラ30との間で送受信する。入出力信号I/Oは、データDAT、ステータス情報STS、物理アドレスADD、コマンドCMD等を含み得る。また、入出力回路11は、センスアンプモジュール19との間でデータDATを送受信する。
【0030】
レジスタセット12は、ステータスレジスタ12A、アドレスレジスタ12B、及びコマンドレジスタ12Cを含む。ステータスレジスタ12A、アドレスレジスタ12B、及びコマンドレジスタ12Cは、それぞれステータスSTS、物理アドレスADD、及びコマンドCMDを記憶する。
【0031】
ステータスSTSは、例えばシーケンサ14の動作状態に基づいて更新される。また、ステータスSTSは、メモリコントローラ30からの指示に基づいてステータスレジスタ12Aから入出力回路11に転送され、メモリコントローラ30に出力される。物理アドレスADDは、入出力回路11からアドレスレジスタ12Bに転送され、例えばチップアドレス、ブロックアドレス、ページアドレス、カラムアドレス等を含み得る。コマンドCMDは、入出力回路11からコマンドレジスタ12Cに転送され、チップ10-0の各種動作に関する命令を含む。
【0032】
ロジックコントローラ13は、メモリコントローラ30から受信した制御信号に基づいて、入出力回路11及びシーケンサ14のそれぞれを制御する。このような制御信号としては、例えばチップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、及びライトプロテクト信号WPnが使用される。
【0033】
チップイネーブル信号CEnは、チップ10-0をイネーブルにするための信号である。コマンドラッチイネーブル信号CLEは、受け取った入出力信号I/OがコマンドCMDであることを入出力回路11に通知するための信号である。アドレスラッチイネーブル信号ALEは、受け取った入出力信号I/Oがアドレス情報ADDであることを入出力回路11に通知するための信号である。ライトイネーブル信号WEnは、入出力信号I/Oの入力を入出力回路11に命令するための信号である。リードイネーブル信号REnは、入出力信号I/Oの出力を入出力回路11に命令するための信号である。ライトプロテクト信号WPnは、電源のオンオフ時にチップ10-0を保護状態にするための信号である。
【0034】
シーケンサ14は、チップ10-0全体の動作を制御する。例えば、シーケンサ14は、コマンドレジスタ12Cに記憶されたコマンドCMDと、アドレスレジスタ12Bに記憶された物理アドレスADDとに基づいて、読出し処理、書込み処理、消去処理等を実行する。
【0035】
レディ/ビジー制御回路15は、シーケンサ14の動作状態に基づいて、レディ/ビジー信号RBnを生成する。レディ/ビジー信号RBnは、チップ10-0がレディ状態であるかビジー状態であるかを、メモリコントローラ30に通知するための信号である。なお、本明細書において“レディ状態”は、チップ10-0がメモリコントローラからの命令を受け付ける状態であることを示し、“ビジー状態”は、チップ10-0がメモリコントローラからの命令を受け付けない状態であることを示している。
【0036】
電圧生成回路16は、読出し処理、書込み処理、消去処理等で使用される電圧を生成する。そして、電圧生成回路16は、生成した電圧をメモリセルアレイ17、ロウデコーダモジュール18、及びセンスアンプモジュール19に供給する。
【0037】
メモリセルアレイ17は、複数のブロックBLK0~BLKn(nは1以上の整数)を含む。ブロックBLKは、データを不揮発に記憶することが可能な複数のメモリセルトランジスタの集合であり、例えばデータの消去単位として使用される。各メモリセルトランジスタは、1本のビット線BLと1本のワード線WLとに関連付けられている。
【0038】
ロウデコーダモジュール18は、ブロックアドレスに基づいて、各種処理を実行するブロックBLKを選択する。そして、ロウデコーダモジュール18は、電圧生成回路16から供給された電圧を、選択したブロックBLK内のワード線WL等に転送する。
【0039】
センスアンプモジュール19は、読出し処理において、メモリセルアレイ17からデータを読み出し、当該読出しデータを入出力回路11に転送する。また、センスアンプモジュール19は、書込み処理において、入出力回路11から受け取ったデータに基づいて、ビット線BLに所定の電圧を印加する。
【0040】
1.1.4 メモリセルアレイ
図3は、第1実施形態に係る不揮発性メモリ内のチップに含まれるメモリセルアレイの回路構成の一例であり、1つのブロックBLKが抽出して示される。
図3に示すように、ブロックBLKは、例えば4つのストリングユニットSU0~SU3を含む。
【0041】
各ストリングユニットSUは、ビット線BL0~BLmにそれぞれ関連付けられた複数のNANDストリングNSを含む(mは、1以上の整数)。NANDストリングNSは、例えばメモリセルトランジスタMT0~MT7、並びに選択トランジスタST1及びST2を含む。
【0042】
メモリセルトランジスタMTは、制御ゲート及び電荷蓄積層を含み、データを不揮発に記憶する。選択トランジスタST1及びST2のそれぞれは、各種処理時におけるストリングユニットSUの選択に使用される。
【0043】
各NANDストリングNSにおいて、メモリセルトランジスタMT0~MT7は、直列接続される。直列接続されたメモリセルトランジスタMT0~MT7の一端と、関連付けられたビット線BLとの間には、選択トランジスタST1が接続される。直列接続されたメモリセルトランジスタMT0~MT7の他端には、選択トランジスタST2のドレインが接続される。選択トランジスタST2のソースには、ソース線CELSRCが接続される。
【0044】
同一のブロックBLKにおいて、ストリングユニットSU0~SU3に含まれた複数の選択トランジスタST1の各々のゲートはそれぞれ、選択ゲート線SGD0~SGD3に共通接続される。複数のメモリセルトランジスタMT0~MT7の各々の制御ゲートはそれぞれ、ワード線WL0~WL7に共通接続される。複数の選択トランジスタST2の各々のゲートは、選択ゲート線SGSに共通接続される。
【0045】
ビット線BL0~BLmは、複数のブロックBLK間で共有される。同じカラムアドレスに対応するNANDストリングNSには、同じビット線BLが接続される。ワード線WL0~WL7のそれぞれは、ブロックBLK毎に設けられる。ソース線CELSRCは、例えば複数のブロックBLK間で共有される。
【0046】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMTの集合は、例えばセルユニットCUと称される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMTを含むセルユニットCUの記憶容量が、「1ページデータ」として定義される。セルユニットCUは、メモリセルトランジスタMTが記憶するデータのビット数に応じて2ページデータ以上の記憶容量を有し得る。
【0047】
本実施形態では、1つのメモリセルトランジスタMTが4ビットデータを記憶することができる。すなわち、本実施形態におけるメモリセルトランジスタMTは、4ビットのデータを記憶するQLC(quad level cell)である。QLC(quad level cell)のメモリセルトランジスタが記憶する4ビットデータを、下位ビットから順に下位(Lower)ビット、中位(Middle)ビット、上位(Upper)ビット、及びトップ(Top)ビットと呼ぶ。また、同一のセルユニットCUに含まれるメモリセルトランジスタMTの記憶する下位ビットの集合を“下位ページ”と呼び、中位ビットの集合を“中位ページ”と呼び、上位ビットの集合を“上位ページ”と呼び、トップビットの集合を“トップページ”と呼ぶ。
【0048】
なお、以上で説明したメモリセルアレイ17の回路構成はあくまで一例であり、これに限定されない。例えば、各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。各NANDストリングNSが含むメモリセルトランジスタMT並びに選択トランジスタST1及びST2の各々の個数は、それぞれ任意の個数に設計され得る。
【0049】
また、メモリセルアレイ17の回路構成は、チップ10-0~10-N毎に異なっていてもよい。具体的には、例えば、チップ10-0~10-Nの各々のブロックBLKの個数、ストリングユニットSUの個数、ワード線WLの本数、ビット線BLの本数等は、チップ10-0~10-NのデバイスIDに応じて互いに異なっている場合がある。
【0050】
1.1.5 メモリセルトランジスタの閾値電圧分布
次に、メモリセルトランジスタMTの閾値電圧分布について、
図4を用いて説明する。
図4には、メモリセルアレイ17内の複数のメモリセルトランジスタMTについて、取り得るデータ、閾値電圧分布、及び読出し処理時に用いる電圧等が示される。
【0051】
図4に示すように、メモリセルトランジスタMTが4ビットのデータを記憶する場合、その閾値電圧の分布は16個に分けられる。この16個の閾値電圧分布を、閾値電圧が低いものから順に“S0”状態(ステート)、“S1”状態、“S2”状態、“S3”状態、“S4”状態、“S5”状態、“S6”状態、“S7”状態、“S8”状態、“S9”状態、“S10”状態、“S11”状態、“S12”状態、“S13”状態、“S14”状態、及び“S15”状態と呼ぶ。
【0052】
また、
図4に示す電圧VS1、VS2、VS3、VS4、VS5、VS6、VS7、VS8、VS9、VS10、VS11、VS12、VS13、VS14、及びVS15はそれぞれ、読出し処理の際に隣り合う2つの状態を区別するために用いられる。電圧VREADは、読出し処理時において非選択ワード線に印加される電圧である。メモリセルトランジスタMTは、ゲートに電圧VREADが印加されると記憶するデータに依らずにオン状態になる。これらの電圧値の関係は、VS1<VS2<VS3<VS4<VS5<VS6<VS7<VS8<VS9<VS10<VS11<VS12<VS13<VS14<VS15<VREADである。
【0053】
上述した閾値電圧分布のうち“S0”状態は、メモリセルトランジスタMTの消去状態に相当する。“S0”状態における閾値電圧は、電圧VS1未満である。“S1”状態における閾値電圧は、電圧VS1以上且つ電圧VS2未満である。“S2”状態における閾値電圧は、電圧VS2以上且つ電圧VS3未満である。“S3”状態における閾値電圧は、電圧VS3以上且つ電圧VS4未満である。“S4”状態における閾値電圧は、電圧VS4以上且つ電圧VS5未満である。“S5”状態における閾値電圧は、電圧VS5以上且つ電圧VS6未満である。“S6”状態における閾値電圧は、電圧VS6以上且つ電圧VS7未満である。“S7”状態における閾値電圧は、電圧VS7以上且つ電圧VS8未満である。“S8”状態における閾値電圧は、電圧VS8以上且つ電圧VS9未満である。“S9”状態における閾値電圧は、電圧VS9以上且つ電圧VS10未満である。“S10”状態における閾値電圧は、電圧VS10以上且つ電圧VS11未満である。“S11”状態における閾値電圧は、電圧VS11以上且つ電圧VS12未満である。“S12”状態における閾値電圧は、電圧VS12以上且つ電圧VS13未満である。“S13”状態における閾値電圧は、電圧VS13以上且つVS14未満である。“S14”状態における閾値電圧は、電圧VS14以上且つVS15未満である。“S15”状態における閾値電圧は、電圧VS15以上且つ電圧VREAD未満である。
【0054】
上述した16個の閾値電圧分布は、下位ビット、中位ビット、上位ビット、及びトップビットを含む4ビット(4ページ)データを書き込むことで形成される。そして16個の閾値電圧分布が、それぞれ異なる4ビットのデータに対応する。本実施形態では、各状態に含まれるメモリセルトランジスタMTに対して、“トップビット/上位ビット/中位ビット/下位ビット”に以下に示すようにデータを割り付ける。
【0055】
“S0”状態に含まれるメモリセルトランジスタMTは、“1111”データを記憶する。“S1”状態に含まれるメモリセルトランジスタMTは、“1110”データを記憶する。“S2”状態に含まれるメモリセルトランジスタMTは、“1010”データを記憶する。“S3”状態に含まれるメモリセルトランジスタMTは、“1000”データを記憶する。“S4”状態に含まれるメモリセルトランジスタMTは、“1001”データを記憶する。“S5”状態に含まれるメモリセルトランジスタMTは、“0001”データを記憶する。“S6”状態に含まれるメモリセルトランジスタMTは、“0000”データを記憶する。“S7”状態に含まれるメモリセルトランジスタMTは、“0010”データを記憶する。“S8”状態に含まれるメモリセルトランジスタMTは、“0110”データを記憶する。“S9”状態に含まれるメモリセルトランジスタMTは、“0100”データを記憶する。“S10”状態に含まれるメモリセルトランジスタMTは、“1100”データを記憶する。“S11”状態に含まれるメモリセルトランジスタMTは、“1101”データを記憶する。“S12”状態に含まれるメモリセルトランジスタMTは、“0101”データを記憶する。“S13”状態に含まれるメモリセルトランジスタMTは、“0111”データを記憶する。“S14”状態に含まれるメモリセルトランジスタMTは、“0011”データを記憶する。“S15”状態に含まれるメモリセルトランジスタMTは、“1011”データを記憶する。
【0056】
下位ページ読出しは、“S0”状態と“S1”状態とを区別する電圧VS1、“S3”状態と“S4”状態とを区別する電圧VS4、“S5”状態と“S6”状態とを区別する電圧VS6、及び“S10”状態と“S11”状態とを区別する電圧VS11、を読出し電圧として用いる。電圧VS1、VS4、VS6、及びVS11を用いた読出し処理を、それぞれ読出し処理1R、4R、6R、及び11Rと呼ぶ。
【0057】
中位ページ読出しは、“S2”状態と“S3”状態とを区別する電圧VS3、“S6”状態と“S7”状態とを区別する電圧VS7、“S8”状態と“S9”状態とを区別する電圧VS9、及び“S12”状態と“S13”状態とを区別する電圧VS13、を読出し電圧として用いる。電圧VS3、VS7、VS9、及びVS13を用いた読出し処理を、それぞれ読出し処理3R、7R、9R、及び13Rと呼ぶ。
【0058】
上位ページ読出しは、“S1”状態と“S2”状態とを区別する電圧VS2、“S7”状態と“S8”状態とを区別する電圧VS8、及び“S13”状態と“S14”状態とを区別する電圧VS14を読出し電圧として用いる。電圧VS2、VS8、及びVS14を用いた読出し処理を、それぞれ読出し処理2R、8R、及び14Rと呼ぶ。
【0059】
トップページ読出しは、“S4”状態と“S5”状態とを区別する電圧VS5、“S9”状態と“S10”状態とを区別する電圧VS10、“S11”状態と“S12”状態とを区別する電圧VS12、及び“S14”状態と“S15”状態とを区別する電圧VS15、を読出し電圧として用いる。電圧VS5、VS10、VS12、及びVS15を用いた読出し処理を、それぞれ読出し処理5R、10R、12R、及び15Rと呼ぶ。
【0060】
なお、上述のデータ割り付けは一例であり、他のデータ割り付けが適用されてもよい。
【0061】
1.1.6 パトロール管理情報
次に、第1実施形態に係るパトロール管理情報の構成について説明する。
図5は、第1実施形態に係るパトロール管理情報の構成の一例を説明するための概念図である。
図6及び
図7は、第1実施形態に係るパトロール管理情報の詳細を説明するための概念図である。
図6では、パトロール管理情報に含まれる物理アドレスの一例が示される。
図7(A)、
図7(B)、
図7(C)、及び
図7(D)ではそれぞれ、パトロール管理情報に含まれる優先度、種別、周期、及び管理フラグの一例が示される。
【0062】
以下では、
図5に沿ってパトロール管理情報21の概念について説明しつつ、各種要素の詳細な情報について
図6又は
図7を適宜参照しながら説明する。
【0063】
図5に示すように、パトロール管理情報21は、互いに異なる優先度に対応づけられた複数のキューを有し得る。
図5の例では、或る優先度に対応するキューには、当該或る優先度に対応づけられた複数のパトロール指定ユニットPUが実行順に並ぶ。具体的には、複数のパトロール指定ユニットPU00、PU01、PU02、…、PU0xの組、PU10、PU11、PU12、…、PU1xの組、及びPU20、PU21、PU22、…、PU2xの組はそれぞれ、3つの互いに異なる優先度に対応づけられたキューによって管理される。
【0064】
複数のパトロールユニットPUの各々は、パトロール処理の実行単位であり、例えば、<物理アドレス>、<優先度>、<種別>、<周期>、及び<管理フラグ>の情報を含む。
【0065】
まず、パトロールユニットPU内の物理アドレスADDについて、
図6を参照して説明する。物理アドレスADDは、当該パトロールユニットPUに対応するパトロール処理の対象となるNANDフラッシュメモリ10内の記憶領域を指定する。
【0066】
図6に示すように、物理アドレスADDは、パトロール対象の物理アドレスの範囲と、当該範囲内においてパトロール対象となる要素と、を指定する。より具体的には、物理アドレスADDは、NANDフラッシュメモリ10内のチップChip、ブロックBLK、ワード線WL、ストリングユニットSU、及びページPを範囲として指定する。例えば、全てのチップChip内の全てのブロックBLKにおける、全てのワード線WL及び全てのストリングユニットSUに対応するメモリセルトランジスタMTの全てのページPを指定する場合における物理アドレスADDは、<allChip-allBLK-allWL-allSU-allP>となる。また、例えば、チップChipXc内のブロックBLKXbにおける、ワード線WLXw及びストリングユニットSUXsに対応するメモリセルトランジスタMTのページPXpを指定する場合における物理アドレスADDは、<ChipXc-BLKXb-WLXw-SUXs-PXp>となる(Xcは0以上N以下の整数、Xbは0以上n以下の整数、Xwは0以上7以下の整数、Xsは0以上3以下の整数、Xpは0以上3以下の整数)。なお、
図6では、Xpは、“0”の場合に下位ページ、“1”の場合に中位ページ、“2”の場合に上位ページ、“3”の場合にトップページである場合が一例として示される。
【0067】
次に、パトロール指定ユニットPU内の優先度Prについて、
図7(A)を参照して説明する。優先度Prは、メモリコントローラ30内で実行される予定のパトロール処理以外の処理に対する、パトロール処理の優先順位を指定する。
【0068】
図7(A)に示すように、優先度Prが<Pr0>の場合、当該パトロール指定ユニットPUに対応するパトロール処理が最優先で実行されることを示す。優先度Prが<Pr1>の場合、対応するパトロール処理の優先順位をホスト読出し処理の次に高く設定し、当該パトロール処理がホスト読出し処理の次に優先して実行されることを示す。優先度Prが<Pr2>の場合、対応するパトロール処理の優先順位を他の全ての処理に対して低く設定し、当該パトロール処理が最も後回しで実行されることを示す。優先度Prが<Pr3>の場合、ホスト機器2からの要求(ホストコマンド)を所定数処理した後に対応するパトロール処理が実行されることを示す。
【0069】
次に、パトロール指定ユニットPU内の種別Wについて、
図7(B)を参照して説明する。種別Wは、当該パトロール指定ユニットPUに対応するパトロール処理の種別を指定する。
【0070】
図7(B)に示すように、種別Wが<WCheck>の場合、当該パトロール指定ユニットPUに対応するパトロール処理に点検用パトロール処理が適用されることを示す。種別Wが<WUpdate>の場合、当該パトロール処理に更新用パトロール処理が適用されることを示す。
【0071】
次に、パトロール指定ユニットPU内の周期Peについて、
図7(C)を参照して説明する。周期Peは、当該パトロール指定ユニットPUに対応するパトロール処理がパトロール管理情報21に設定される頻度を示す。
【0072】
図7(C)に示すように、周期Peが<Pe12H>、<Pe1D>、<Pe2D>、<Pe4D>、及び<Pe8D>、の場合、当該パトロール指定ユニットPUに対応するパトロール処理がそれぞれ12時間毎、1日毎、2日毎、4日毎、及び8日毎に実行されることを示す。このように、周期Peが設定されたパトロール指定ユニットPUは、対応するパトロール処理が実行された後、当該パトロール指定ユニットPUが実行された時点から周期Peだけ時系列的に後の位置に、新たなパトロール指定ユニットPUとして再設定される。
【0073】
なお、
図7(C)では図示が省略されているが、周期Peは、<Pe2D>、<Pe4D>、及び<Pe8D>が設定される場合、対応するパトロール処理が当該周期Peの何日目に実行されるか、を更に指定する情報を含んでもよい。具体的には、例えば、周期Peがそれぞれ<Pe4D-1>、<Pe4D-2>、<Pe4D-3>、及び<Pe4D-0>の場合、対応するパトロール処理はそれぞれ、4日周期の1日目、2日目、3日目、及び4日目に実行されるように設定され得る。
【0074】
次に、パトロール指定ユニットPU内の管理フラグFについて、
図7(D)を参照して説明する。管理フラグFは、当該パトロール指定ユニットPUに対応するパトロール処理に特別に付与されるフラグを示す。
【0075】
図7(D)に示すように、管理フラグFが<FReset>の場合、当該パトロール指定ユニットPUに対応するパトロール処理に付与されているフラグがリセット状態である(フラグが付与されていない)ことを示す。また、管理フラグFが<FPatrol>の場合、当該パトロール指定ユニットPUに対応するパトロール処理を強制的に実行することを示す。
【0076】
以上のようなパトロール管理情報21によって、メモリコントローラ30は、NANDフラッシュメモリ10に対して実行するパトロール処理のスケジュールを管理することができる。
【0077】
なお、
図5の例では、複数のパトロール指定ユニットPUが優先度毎に異なるキューによって管理される場合について示したが、これに限られない。例えば、複数のパトロール指定ユニットPUは、1つのキューによってまとめて管理されてもよい。
【0078】
1.1.7 パトロール結果情報
次に、第1実施形態に係るパトロール結果情報の構成について説明する。
図8は、第1実施形態に係るパトロール結果情報の構成の一例を説明するための概念図である。
【0079】
図8に示すように、パトロール結果情報22は、NANDフラッシュメモリ10内の全てのチップ10-0~10-Nの各々について、どのブロックBLKに対してリフレッシュ処理を実施すべきかを示すリフレッシュフラグを記憶する。リフレッシュ処理は、NANDフラッシュメモリ10内に書き込まれたデータを新たな物理アドレスに書き換える、又は当該データが書き込まれた物理アドレスに上書きすることにより、データに含まれるエラービット数を低減させる処理である。
【0080】
図8の例では、チップ10-0のブロックBLK0のリフレッシュフラグが“True”であり、リフレッシュ処理を実行すべきである旨が記憶される。また、チップ10-0のブロックBLK0以外の全てのブロックBLKのリフレッシュフラグが“False”であり、リフレッシュ処理を実行しなくてもよい旨が記憶される。
【0081】
例えば、パトロール処理の結果、パトロール対象から読み出されるデータに含まれるエラービット数が閾値より多いことが判明した場合、パトロール結果情報22内の当該パトロール対象を含むブロックBLKに対応するリフレッシュフラグに“True”が記憶される。したがって、メモリコントローラ30は、パトロール結果情報22を参照することにより、リフレッシュ処理が必要であるか否かを把握することができる。
【0082】
1.1.8 パトロール進捗情報
次に、第1実施形態に係るパトロール進捗情報の構成について説明する。
図9は、第1実施形態に係るパトロール進捗情報の構成の一例を説明するための概念図である。
【0083】
図9に示すように、パトロール進捗情報23は、例えば、パトロール管理情報21に従ってパトロール処理を進めていく際、ホストコマンド等、他の処理との優先度により、処理できなかったパトロール指定ユニットPUを記憶したものである。上述の通り、パトロール指定ユニットPUには、状況に応じて異なる優先度Prが設定される。このため、優先度Prが最優先に設定されていない(<Pr0>でない)場合、当該パトロール指定ユニットPUは、ホスト読出し処理等の他の処理によって実行が妨げられる場合がある。メモリコントローラ30は、パトロール進捗情報23を参照することにより、こうしたパトロール処理の進捗の遅れを把握することができる。
【0084】
また、パトロール進捗情報23は、上述したように、処理できなかったパトロール指定ユニットPUを記憶するだけでなく、キュー毎に、処理できなかったパトロール指定ユニットPUの数を記憶してもよい。これにより、メモリコントローラ30は、キュー毎にどの程度パトロール処理が遅れているかを、容易に把握することができる。
【0085】
1.2 動作
次に、第1実施形態に係る情報処理システムにおける動作について説明する。
【0086】
1.2.1 パトロール管理情報設定動作のフローチャート
まず、第1実施形態に係る情報処理システムにおけるパトロール管理情報設定動作について説明する。
【0087】
図10は、第1実施形態に係る情報処理システムにおけるパトロール管理情報設定動作を示すフローチャートである。
図10では、ホスト機器2からの要求に基づくパトロール管理情報21の設定動作のいくつかの態様が示される。
【0088】
なお、
図10のステップST3、ST5、ST7、ST9、ST11、ST13、及びST15におけるメモリシステム3の処理はそれぞれ、ステップST2、ST4、ST6、ST8、ST10、ST12、及びST14におけるホスト機器2からの要求に従って実行されることを意味するものであり、ステップST2、ST4、ST6、ST8、ST10、ST12、及びST14におけるホスト機器2からの要求がこの順番に実行されることを意味するものではない。
【0089】
図10に示すように、ステップST1において、メモリシステム3が起動される。メモリシステム3が起動すると、プロセッサ31は、ROMに記憶されたプログラムをロードし(パワーオン読出し処理)、メモリコントローラ30の制御を開始する。なお、パワーオン読出し処理の直後において、DRAM20内には、パトロール管理情報21が記憶されていなくてもよい。このため、メモリコントローラ30は、パワーオン読出し処理の直後において、パトロール処理を実行するためのスケジュールを有していなくてもよい。
【0090】
ステップST2において、ホスト機器2は、パトロールモード登録要求“SetPatCom”を発行し、メモリシステム3に送出する。パトロールモードは、ある物理アドレスの範囲(例えば、1ブロックBLKの範囲)に対して設定される複数のパトロール処理の定型として定義される。パトロールモード登録要求“SetPatCom”は、ホスト機器2によって予め定義されたパトロールモードをメモリシステム3に通知するためのコマンドである。
【0091】
ステップST3において、パトロールモード登録要求を受けると、メモリコントローラ30は、パトロールモードを登録する。当該パトロールモードを使用することにより、メモリコントローラ30は、より少ないコマンド数で複数のパトロール指定ユニットPUをパトロール管理情報21に効率的に設定することが可能となる。
【0092】
ステップST4において、ホスト機器2は、NANDフラッシュメモリ10内のデータが既に書き込まれている記憶領域(書込み済み領域)に対するパトロール管理情報設定要求“PatrolSet”を発行し、メモリコントローラ30に送出する。パトロール管理情報設定要求“PatrolSet”は、パトロール管理情報21に1又は複数のパトロール指定ユニットPUを設定する動作をメモリコントローラ30に指示するコマンドである。ステップST4におけるパトロール管理情報設定要求“PatrolSet”には、書込み済み領域を指定する物理アドレスADDが含まれる。
【0093】
ステップST5において、メモリコントローラ30は、パトロール管理情報設定要求を受けると、書込み済領域に対して実行されるパトロール処理をパトロール管理情報21に設定する。これにより、パトロール管理情報21が初期化され、メモリコントローラ30は、スケジュールに沿ったパトロール処理を実行可能となる。
【0094】
ステップST6において、ホスト機器2は、書込み要求“Write”を発行し、メモリコントローラ30に送出する。書込み要求“Write”は、NANDフラッシュメモリ10に書き込まれるデータと、当該データが書き込まれるNANDフラッシュメモリ10内の物理アドレス(書込み対象領域)ADDと、を含む。
【0095】
ステップST7において、メモリコントローラ30は、書込み要求に基づき、NANDフラッシュメモリ10にデータを書き込む。
【0096】
ステップST8において、ホスト機器2は、書込み対象領域に対するパトロール管理情報設定要求“PatrolSet”を発行し、メモリコントローラ30に送出する。ステップST8におけるパトロール管理情報設定要求“PatrolSet”には、書込み対象領域と同じ記憶領域を指定する物理アドレスADDが含まれる。
【0097】
ステップST9において、メモリコントローラ30は、パトロール管理情報設定要求を受けると、書込み対象領域に対して実行されるパトロール処理をパトロール管理情報21に設定する。これにより、ステップST7の書込み処理によって新たに書き込まれたデータに対応するパトロール処理がパトロール管理情報21に追加される。このように、メモリコントローラ30は、書込み要求に付随して送出されるパトロール管理情報設定要求によって、メモリシステム3の起動後に新たに書込み済み領域となった記憶領域に対しても、パトロール処理のスケジュールを設定することができる。
【0098】
ステップST10において、ホスト機器2は、書込み済み領域に対する新たなパトロール管理情報設定要求“PatrolSet”を発行し、メモリコントローラ30に送出する。
【0099】
ステップST11において、メモリコントローラ30は、当該新たなパトロール管理情報設定要求を受けると、書込み済領域に対して実行されるパトロール処理をパトロール管理情報21に設定する。これにより、パトロール管理情報21が当該新たなパトロール管理情報設定要求によって更新される。このように、メモリコントローラ30は、最新のパトロール管理情報設定要求によって、実行するパトロール処理のスケジュールを更新することができる。
【0100】
ステップST12において、ホスト機器2は、消去又は無効化要求を発行し、メモリコントローラ30に送出する。消去又は無効化要求は、消去又は無効化の対象となるデータが記憶されているNANDフラッシュメモリ10内の物理アドレス(消去又は無効化対象領域)ADDを含む。
【0101】
ステップST13において、メモリコントローラ30は、消去又は無効化要求に基づき、NANDフラッシュメモリ10のデータを消去又は無効化する。
【0102】
ステップST14において、ホスト機器2は、消去又は無効化対象領域に対するパトロール管理情報削除要求“PatrolUnSet”を発行し、メモリコントローラ30に送出する。パトロール管理情報削除要求“PatrolUnSet”は、パトロール管理情報21から1又は複数のパトロール指定ユニットPUを削除する動作をメモリコントローラ30に指示するコマンドである。パトロール管理情報削除要求“PatrolUnSet”には、消去又は無効化対象領域を指定する物理アドレスADDが含まれる。
【0103】
ステップST15において、メモリコントローラ30は、パトロール管理情報削除要求を受けると、消去又は無効化対象領域に対するパトロール処理のスケジュールをパトロール管理情報21から削除する。このように、メモリコントローラ30は、パトロール管理情報削除要求によって、不要なパトロール処理のスケジュールを適宜削除し、必要なパトロール処理のみを選択的に実行することができる。
【0104】
以上により、パトロール管理情報設定動作が終了する。なお、
図10に示したステップST6~ST15において示した書込み処理に伴うパトロール管理情報21の追加、パトロール管理情報21の変更、及び消去又は無効化処理に伴うパトロール管理情報21の削除の処理は、メモリシステム3のシステム起動時の直後に限らず、システム動作中の任意のタイミングで順不同に実行される。これにより、メモリシステム3が起動している間にわたって、パトロール管理情報21を最新の情報に保つことができる。
【0105】
1.2.2 パトロールモード登録動作
次に、第1実施形態に係る情報処理システムにおけるパトロールモード登録動作のいくつかの例について説明する。以下に示すように、メモリコントローラ30は、ホスト機器2からのコマンドに基づき、物理アドレスADD、優先度Pr、種別W、周期Pe、及び管理フラグFを指定することにより、パトロール処理のスケジュールを設定することができる。
【0106】
1.2.2.1 第1例(パトロールモードA)
まず、パトロールモードの第1例について説明する。第1例では、ブロックBLK1つ分の範囲内に、周期が等しくかつ実行日が互いに異なる4種類の点検用パトロール処理が網羅的に設定される。
【0107】
図11は、第1実施形態に係る情報処理システムにおけるパトロールモードの第1例の登録動作を示すコマンドシーケンスである。
図12は、第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第1例を示す模式図である。
図11では、パトロールモードの第1例を登録するためのホスト機器2からのコマンドセットの具体例が示される。
図12は、
図11に示されるコマンドシーケンスに従って設定された4種類の点検用パトロール処理が4つのハッチングパターン(a)~(d)によって視覚的に分類されて示される。
【0108】
図11の1行目に示すように、ホスト機器2は、パトロールモード登録コマンド“SetPatCom PatrolMode-A 16”を発行する。メモリコントローラ30は、当該コマンド受けると、後続する16個のコマンドの組によって表現される一群のパトロール処理がパトロールモードAとして定義されると認識する。
【0109】
続いて、
図11の2~5行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P0><Pr1><Pe4D-1><WCheck>”、“PatrolSet<allWL-SU1-P1><Pr1><Pe4D-1><WCheck>”、“PatrolSet<allWL-SU2-P2><Pr1><Pe4D-1><WCheck>”、及び“PatrolSet<allWL-SU3-P3><Pr1><Pe4D-1><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0の下位ページ、ストリングユニットSU1の中位ページ、ストリングユニットSU2の上位ページ、及びストリングユニットSU3のトップページを対象とし、4日周期の1日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードAに含まれることを認識する。上述した
図11の2行目~5行目のコマンドは、
図12におけるハッチングパターン(a)に対応する。
【0110】
続いて、
図11の6~9行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P1><Pr1><Pe4D-2><WCheck>”、“PatrolSet<allWL-SU1-P2><Pr1><Pe4D-2><WCheck>”、“PatrolSet<allWL-SU2-P3><Pr1><Pe4D-2><WCheck>”、及び“PatrolSet<allWL-SU3-P0><Pr1><Pe4D-2><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0の中位ページ、ストリングユニットSU1の上位ページ、ストリングユニットSU2のトップページ、及びストリングユニットSU3の下位ページを対象とし、4日周期の2日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードAに含まれることを認識する。上述した
図11の6行目~9行目のコマンドは、
図12におけるハッチングパターン(b)に対応する。
【0111】
続いて、
図11の10~13行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P2><Pr1><Pe4D-3><WCheck>”、“PatrolSet<allWL-SU1-P3><Pr1><Pe4D-3><WCheck>”、“PatrolSet<allWL-SU2-P0><Pr1><Pe4D-3><WCheck>”、及び“PatrolSet<allWL-SU3-P1><Pr1><Pe4D-3><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0の上位ページ、ストリングユニットSU1のトップページ、ストリングユニットSU2の下位ページ、及びストリングユニットSU3の中位ページを対象とし、4日周期の3日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードAに含まれることを認識する。上述した
図11の10行目~13行目のコマンドは、
図12におけるハッチングパターン(c)に対応する。
【0112】
続いて、
図11の14~17行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P3><Pr1><Pe4D-0><WCheck>”、“PatrolSet<allWL-SU1-P0><Pr1><Pe4D-0><WCheck>”、“PatrolSet<allWL-SU2-P1><Pr1><Pe4D-0><WCheck>”、及び“PatrolSet<allWL-SU3-P2><Pr1><Pe4D-0><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0のトップページ、ストリングユニットSU1の下位ページ、ストリングユニットSU2の中位ページ、及びストリングユニットSU3の上位ページを対象とし、4日周期の4日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードAに含まれることを認識する。上述した
図11の14行目~17行目のコマンドは、
図12におけるハッチングパターン(d)に対応する。
【0113】
以上により、メモリコントローラ30は、
図12のようなパトロールモードの第1例を登録することができる。
【0114】
1.2.2.2 第2例(パトロールモードB)
次に、パトロールモードの第2例について説明する。第2例では、ブロックBLK1つ分の範囲に、周期が等しくかつ実行日が互いに異なる4種類の点検用パトロール処理と、当該点検用パトロール処理よりも高い頻度で設定される更新用パトロール処理と、が点在するように設定される。
【0115】
図13は、第1実施形態に係る情報処理システムにおけるパトロールモードの第2例の登録動作を示すコマンドシーケンスである。
図14は、第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第2例を示す模式図である。
図13では、パトロールモードの第2例を登録するためのホスト機器2からのコマンドセットの具体例が示される。
図14は、
図13に示されるコマンドシーケンスに従って設定された4種類の点検用パトロール処理、及び1種類の更新用パトロール処理が5つのハッチングパターン(a’)~(d’)及び(e)によって視覚的に分類されて示される。
【0116】
図13の1行目に示すように、ホスト機器2は、パトロールモード登録コマンド“SetPatCom PatrolMode-B 12”を発行する。メモリコントローラ30は、当該コマンド受けると、後続する12個のコマンドの組によって表現される一群のパトロール処理がパトロールモードBとして定義されると認識する。
【0117】
続いて、
図13の2行目及び3行目に示すように、ホスト機器2は、2個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P0><Pr1><Pe4D-1><WCheck>”、及び“PatrolSet<allWL-SU1-P1><Pr1><Pe4D-1><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0の下位ページ、及びストリングユニットSU1の中位ページを対象とし、4日周期の1日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードBに含まれることを認識する。
【0118】
続いて、
図13の4~6行目に示すように、ホスト機器2は、3個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P1><Pr1><Pe4D-2><WCheck>”、“PatrolSet<allWL-SU2-P3><Pr1><Pe4D-2><WCheck>”、及び“PatrolSet<allWL-SU3-P0><Pr1><Pe4D-2><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0の中位ページ、ストリングユニットSU2のトップページ、及びストリングユニットSU3の下位ページを対象とし、4日周期の2日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードBに含まれることを認識する。
【0119】
続いて、
図13の7行目及び8行目に示すように、ホスト機器2は、2個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU2-P0><Pr1><Pe4D-3><WCheck>”、及び“PatrolSet<allWL-SU3-P1><Pr1><Pe4D-3><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU2の下位ページ、及びストリングユニットSU3の中位ページを対象とし、4日周期の3日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードBに含まれることを認識する。
【0120】
続いて、
図13の9~11行目に示すように、ホスト機器2は、3個のパトロール管理情報設定コマンド“PatrolSet<allWL-SU0-P3><Pr1><Pe4D-0><WCheck>”、“PatrolSet<allWL-SU1-P0><Pr1><Pe4D-0><WCheck>”、及び“PatrolSet<allWL-SU2-P1><Pr1><Pe4D-0><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの全てのワード線WLに関するストリングユニットSU0のトップページ、ストリングユニットSU1の下位ページ、及びストリングユニットSU2の中位ページを対象とし、4日周期の4日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードBに含まれることを認識する。
【0121】
続いて、
図13の12行目に示すように、ホスト機器2は、1個のパトロール管理情報削除コマンド“PatrolUnSet<WLk+1-allSU-allP><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、上述した
図13の2~11行目において認識したスケジュールのうち、ワード線WLk+1に関するスケジュールが無効であることを認識する。以上により、メモリコントローラ30は、
図14におけるハッチングパターン(a’)~(d’)に対応するスケジュールを認識する。
【0122】
続いて、
図13の13行目に示すように、ホスト機器2は、1個のパトロール管理情報設定コマンド“PatrolSet<WLk-SU0-allP><Pr0><Pe1D><WUpdate>”を発行する。当該コマンドを受けると、メモリコントローラ30は、ワード線WLk及びストリングユニットSU0に対応する全てのページを対象とし、かつ最優先で毎日実行される更新用パトロール処理が、パトロールモードBに含まれることを認識する。上述した
図13の13行目のコマンドは、
図14におけるハッチングパターン(e)に対応する。
【0123】
以上により、メモリコントローラ30は、
図14のようなパトロールモードの第2例を登録することができる。
【0124】
1.2.2.3 第3例:パトロールモードC
次に、パトロールモードの第3例について説明する。第3例では、ブロックBLK1つ分の範囲内に、周期が等しくかつ実行日が互いに異なる8種類の点検用パトロール処理が網羅的に設定される。
【0125】
図15は、第1実施形態に係る情報処理システムにおけるパトロールモードの第3例の登録動作を示すコマンドシーケンスである。
図16は、第1実施形態に係る情報処理システムにおいて登録されるパトロールモードの第3例を示す模式図である。
図15では、パトロールモードの第3例を登録するためのホスト機器2からのコマンドの具体例が示される。
図16は、
図15に示されるコマンドシーケンスに従って設定された8種類の点検用パトロール処理が8つのハッチングパターン(a_e)~(d_e)及び(a_o)~(d_o)によって視覚的に分類されて示される。
【0126】
図15の1行目に示すように、ホスト機器2は、パトロールモード登録コマンド“SetPatCom PatrolMode-C 32”を発行する。メモリコントローラ30は、当該コマンド受けると、後続する32個のコマンドの組によって表現される一群のパトロール処理がパトロールモードCとして定義されると認識する。
【0127】
続いて、
図15の2行目及び3行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<evenWL-SU0-P0><Pr1><Pe8D-1><WCheck>”、“PatrolSet<evenWL-SU1-P1><Pr1><Pe8D-1><WCheck>”、“PatrolSet<evenWL-SU2-P2><Pr1><Pe8D-1><WCheck>”、及び“PatrolSet<evenWL-SU3-P3><Pr1><Pe8D-1><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの偶数ワード線WLに関するストリングユニットSU0の下位ページ、ストリングユニットSU1の中位ページ、ストリングユニットSU2の上位ページ、及びストリングユニットSU3のトップページを対象とし、8日周期の1日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の2行目及び3行目のコマンドは、
図16におけるハッチングパターン(a_e)に対応する。
【0128】
続いて、
図15の4行目及び5行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<evenWL-SU0-P1><Pr1><Pe8D-2><WCheck>”、“PatrolSet<evenWL-SU1-P2><Pr1><Pe8D-2><WCheck>”、“PatrolSet<evenWL-SU2-P3><Pr1><Pe8D-2><WCheck>”、及び“PatrolSet<evenWL-SU3-P0><Pr1><Pe8D-2><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの偶数ワード線WLに関するストリングユニットSU0の中位ページ、ストリングユニットSU1の上位ページ、ストリングユニットSU2のトップページ、及びストリングユニットSU3の下位ページを対象とし、8日周期の2日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の4行目及び5行目のコマンドは、
図16におけるハッチングパターン(b_e)に対応する。
【0129】
続いて、
図15の6行目及び7行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<evenWL-SU0-P2><Pr1><Pe8D-3><WCheck>”、“PatrolSet<evenWL-SU1-P3><Pr1><Pe8D-3><WCheck>”、“PatrolSet<evenWL-SU2-P0><Pr1><Pe8D-3><WCheck>”、及び“PatrolSet<evenWL-SU3-P1><Pr1><Pe8D-3><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの偶数ワード線WLに関するストリングユニットSU0の上位ページ、ストリングユニットSU1のトップページ、ストリングユニットSU2の下位ページ、及びストリングユニットSU3の中位ページを対象とし、8日周期の3日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の6行目及び7行目のコマンドは、
図16におけるハッチングパターン(c_e)に対応する。
【0130】
続いて、
図15の8行目及び9行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<evenWL-SU0-P3><Pr1><Pe8D-4><WCheck>”、“PatrolSet<evenWL-SU1-P0><Pr1><Pe8D-4><WCheck>”、“PatrolSet<evenWL-SU2-P1><Pr1><Pe8D-4><WCheck>”、及び“PatrolSet<evenWL-SU3-P2><Pr1><Pe8D-4><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの偶数ワード線WLに関するストリングユニットSU0のトップページ、ストリングユニットSU1の下位ページ、ストリングユニットSU2の中位ページ、及びストリングユニットSU3の上位ページを対象とし、8日周期の4日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の8行目及び9行目のコマンドは、
図16におけるハッチングパターン(d_e)に対応する。
【0131】
続いて、
図15の10行目及び11行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<oddWL-SU0-P0><Pr1><Pe8D-5><WCheck>”、“PatrolSet<oddWL-SU1-P1><Pr1><Pe8D-5><WCheck>”、“PatrolSet<oddWL-SU2-P2><Pr1><Pe8D-5><WCheck>”、及び“PatrolSet<oddWL-SU3-P3><Pr1><Pe8D-5><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの奇数ワード線WLに関するストリングユニットSU0の下位ページ、ストリングユニットSU1の中位ページ、ストリングユニットSU2の上位ページ、及びストリングユニットSU3のトップページを対象とし、8日周期の5日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の10行目及び11行目のコマンドは、
図16におけるハッチングパターン(a_o)に対応する。
【0132】
続いて、
図15の12行目及び13行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<oddWL-SU0-P1><Pr1><Pe8D-6><WCheck>”、“PatrolSet<oddWL-SU1-P2><Pr1><Pe8D-6><WCheck>”、“PatrolSet<oddWL-SU2-P3><Pr1><Pe8D-6><WCheck>”、及び“PatrolSet<oddWL-SU3-P0><Pr1><Pe8D-6><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの奇数ワード線WLに関するストリングユニットSU0の中位ページ、ストリングユニットSU1の上位ページ、ストリングユニットSU2のトップページ、及びストリングユニットSU3の下位ページを対象とし、8日周期の6日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の12行目及び13行目のコマンドは、
図16におけるハッチングパターン(b_o)に対応する。
【0133】
続いて、
図15の14行目及び15行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<oddWL-SU0-P2><Pr1><Pe8D-7><WCheck>”、“PatrolSet<oddWL-SU1-P3><Pr1><Pe8D-7><WCheck>”、“PatrolSet<oddWL-SU2-P0><Pr1><Pe8D-7><WCheck>”、及び“PatrolSet<oddWL-SU3-P1><Pr1><Pe8D-7><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの奇数ワード線WLに関するストリングユニットSU0の上位ページ、ストリングユニットSU1のトップページ、ストリングユニットSU2の下位ページ、及びストリングユニットSU3の中位ページを対象とし、8日周期の7日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の14行目及び15行目のコマンドは、
図16におけるハッチングパターン(c_o)に対応する。
【0134】
続いて、
図15の16行目及び17行目に示すように、ホスト機器2は、4個のパトロール管理情報設定コマンド“PatrolSet<oddWL-SU0-P3><Pr1><Pe8D-0><WCheck>”、“PatrolSet<oddWL-SU1-P0><Pr1><Pe8D-0><WCheck>”、“PatrolSet<oddWL-SU2-P1><Pr1><Pe8D-0><WCheck>”、及び“PatrolSet<oddWL-SU3-P2><Pr1><Pe8D-0><WCheck>”を発行する。当該コマンドを受けると、メモリコントローラ30は、パトロールモード登録対象のブロックBLKの奇数ワード線WLに関するストリングユニットSU0のトップページ、ストリングユニットSU1の下位ページ、ストリングユニットSU2の中位ページ、及びストリングユニットSU3の上位ページを対象とし、8日周期の8日目に実行され、かつホスト読出し処理の次に高い優先度を有する点検用パトロール処理が、パトロールモードCに含まれることを認識する。上述した
図15の16行目及び17行目のコマンドは、
図16におけるハッチングパターン(d_o)に対応する。
【0135】
以上により、メモリコントローラ30は、
図16のようなパトロールモードの第3例を登録することができる。
【0136】
1.2.3 パトロール管理情報設定動作のコマンドシーケンス
次に、上述のように登録されたパトロールモードA~Cを用いて、パトロール管理情報21を設定する動作の例について、
図17に示すコマンドシーケンスを用いて説明する。
【0137】
図17の1行目に示すように、ホスト機器2は、2個のパトロール管理情報設定コマンド“PatrolSet<Chip0-BLK0><PatrolMode-A>”及び“PatrolSet<Chip0-BLKn><PatrolMode-C>”を発行する。当該コマンドを受けると、メモリコントローラ30は、チップ10-0のブロックBLK0及びBLKnに対して、それぞれパトロールモードA及びCによって規定された一群のパトロール処理が実行されるように、パトロール管理情報21を設定する。このように、ホスト機器2からのコマンドに基づき、メモリコントローラ30は、異なるブロックBLKに対して、実行頻度が異なるスケジュールでパトロール処理を実行することができる。このようなスケジュールが設定されるケースとしては、例えば、ブロックBLKnがブロックBLK0のコピー領域として使用されており、ブロックBLK0のデータが正しく読み出せる限り、ブロックBLKnに対してはパトロール処理の実行頻度を落としてもよい場合等が想定される。
【0138】
続いて、
図17の2行目に示すように、ホスト機器2は、書込み要求“Write<Chip0-BLK1>”、及びパトロール管理情報設定コマンド“PatrolSet<Chip0-BLK1><PatrolMode-A>”を発行する。当該コマンドを受けると、メモリコントローラ30は、チップ10-0のブロックBLK1へデータを書き込むと共に、当該書込み対象領域に対してパトロールモードAによって規定された一群のパトロール処理が実行されるように、パトロール管理情報21を設定する。このように、予め登録したパトロールモードを使用することで、
図10のステップST6~ST9に示した一連の処理を、ホスト機器2とメモリシステム3との間の2個のコマンドによって実現することができる。
【0139】
続いて、
図17の3行目に示すように、ホスト機器2は、パトロール管理情報設定コマンド“PatrolSet<Chip0-BLK1><PatrolMode-B>”を発行する。当該コマンドを受けると、メモリコントローラ30は、チップ10-0のブロックBLK1に対して設定されていたパトロールモードをパトロールモードAからパトロールモードBに変更するように、パトロール管理情報21を更新する。このように、予め登録したパトロールモードを使用することで、
図10のステップST10及びST11に示した一連の処理を、ホスト機器2とメモリシステム3との間の1個のコマンドによって実現することができる。
【0140】
続いて、
図17の4行目に示すように、ホスト機器2は、消去又は無効化要求 “Erase<Chip0-BLK1>”、及びパトロール管理情報削除コマンド“PatrolUnSet<Chip0-BLK1><PatrolMode-B>”を発行する。当該コマンドを受けると、メモリコントローラ30は、チップ10-0のブロックBLK1に書き込まれたデータを消去又は無効化すると共に、当該消去又は無効化対象領域に対して設定されているパトロールモードBによって規定された一群のパトロール処理が削除されるように、パトロール管理情報21を設定する。このように、予め登録したパトロールモードを使用することで、
図10のステップST12~ST15に示した一連の処理を、ホスト機器2とメモリシステム3との間の2個のコマンドによって実現することができる。
【0141】
1.2.4 パトロール処理を含む一連の動作
次に、第1実施形態に係る情報処理システムにおけるパトロール処理を含む一連の動作について説明する。
【0142】
1.2.4.1 フローチャート
図18は、第1実施形態に係る情報処理システムにおけるパトロール処理を含む一連の動作を示すフローチャートである。
図18では、
図10等で説明したパトロール管理情報設定動作に基づいて実行されるパトロール処理を含む一連の動作のフローが示される。
【0143】
図18に示すように、ステップST21において、ホスト機器2は、パトロール管理情報設定要求(コマンドセット)を発行し、メモリシステム3に送出する。ステップST22において、メモリシステム3は、パトロール管理情報設定要求を受けると、パトロール管理情報21を設定する。ステップST21及びST22は、例えば、
図10におけるステップST2~ST15に相当する。
【0144】
ステップST23において、メモリコントローラ30は、パトロール管理情報21を参照し、実行すべきパトロール処理があるか否かを判定する。実行すべきパトロール処理がある場合(ステップST23;yes)、処理はステップST24に進み、実行すべきパトロール処理がない場合(ステップST23;no)、処理はステップST23に戻る。このように、パトロール管理情報21に設定されたパトロール指定ユニットPUの実行すべきタイミングまでパトロール処理の実行が保留され、実行すべきタイミングになると、処理がステップST24に進む。
【0145】
ステップST24において、メモリコントローラ30は、実行すべきと判定されたパトロール処理が実行可能であるか否かを判定する。パトロール処理が実行可能な場合(ステップST24;yes)、処理はステップST26に進み、パトロール処理が実行可能でない場合(ステップST24;no)、処理はステップST25に進む。処理がステップST25に進む場合の例としては、例えば、パトロール処理を実行すべきタイミングにおいて、メモリコントローラ30が、ホスト機器2から当該パトロール処理よりも優先度の高い処理(例えば、ホスト読出し処理)等の実行要求を受けた場合などが想定される。
【0146】
ステップST25において、メモリコントローラ30は、実行可能でないと判定されたパトロール処理に対応するパトロール指定ユニットPUの識別子をパトロール進捗情報23に記憶する。これにより、当該パトロール処理が実行されるまで、パトロール進捗情報23に、当該パトロール処理が遅延している旨が記憶される。ステップST25の後、処理はステップST26及びST27を省略する。
【0147】
ステップST26において、メモリシステム3は、実行可能と判定されたパトロール処理の種別に基づき、点検用パトロール処理又は更新用パトロール処理のいずれかを実行する。メモリコントローラ30は、点検用パトロール処理又は更新用パトロール処理の結果を、パトロール結果情報22に記憶する。点検用パトロール処理及び更新用パトロール処理の詳細については、後述する。
【0148】
ステップST27において、メモリコントローラ30は、パトロール管理情報21を更新する。具体的には、例えば,実行したパトロール処理の周期に応じて、パトロール管理情報21内の対応するパトロール指定ユニットPUを再設定する。
【0149】
ステップST28において、ホスト機器2は、パトロール結果情報及びパトロール進捗情報の取得要求(コマンドセット)を発行する。
【0150】
ステップST29において、メモリコントローラ30は、パトロール結果情報22及びパトロール進捗情報23をホスト機器2に出力する。
【0151】
以上により、パトロール処理を含む一連の動作が終了する。
【0152】
1.2.4.2 点検用パトロール処理
次に、第1実施形態に係る情報処理システムにおける点検用パトロール処理について説明する。
図19は、第1実施形態に係る情報処理システムにおける点検用パトロール処理を示すフローチャートである。
【0153】
図19に示すように、ステップST31において、メモリシステム3は、パトロール読出し処理を実行する。具体的には、メモリコントローラ30は、読出しコマンドを発行し、NANDフラッシュメモリ10に送出する。読出しコマンドには、例えば、パトロール対象のページを指定する物理アドレスADDと、当該パトロール読出し処理において印加される読出し電圧を指定するDAC(Digital to Analogue Convertor)値と、を含む。NANDフラッシュメモリ10は、読出しコマンドを受けると、パトロール対象のページからデータを読み出し、メモリコントローラ30に出力する。このように、点検用パトロール処理におけるパトロール読出し処理は、1ページをパトロール対象の単位として実行される。
【0154】
なお、読出しコマンドに含まれるDAC値は、例えば、読出し電圧の初期値からの変化量に対応する。メモリコントローラ30は、ステップST31より前に実行された更新用パトロール処理の結果に基づき、当該DAC値を予め記憶する。これにより、メモリシステム3は、最新の更新用パトロール処理の結果に基づく読出し電圧を使用して、パトロール読出し処理を実行することができる。
【0155】
ステップST32において、メモリコントローラ30内のECC回路34は、パトロール読出し処理によってNANDフラッシュメモリ10から読み出されたデータに対してエラー訂正処理を実行する。
【0156】
ステップST33において、メモリコントローラ30は、エラー訂正処理が成功したか否かを判定する。エラー訂正処理に成功した場合(ステップST33;yes)、処理はステップST34に進み、エラー訂正処理に失敗した場合(ステップST34;no)、処理はステップST35に進む。
【0157】
ステップST34において、メモリコントローラ30は、エラー訂正処理によって検出されたエラービット数は閾値N1以上であるか否かを判定する。エラービット数が閾値N1以上である場合(ステップST34;yes)、処理はステップST35に進み、エラービット数が閾値N1未満の場合(ステップST34;no)、点検用パトロール処理は終了する。
【0158】
ステップST35において、メモリコントローラ30は、パトロール結果情報22におけるパトロール対象を含むブロックBLKに対応するリフレッシュフラグを“True”に更新する。これにより、メモリコントローラ30は、パトロール対象から読み出したデータに含まれるエラービット数が閾値N1以上であり、当該パトロール対象を含むブロックBLKに対してリフレッシュ処理が必要であることを記憶できる。
【0159】
以上により、点検用パトロール処理が終了する。
【0160】
1.2.4.3 更新用パトロール処理
次に、第1実施形態に係る情報処理システムにおける更新用パトロール処理について説明する。
図20は、第1実施形態に係る情報処理システムにおける更新用パトロール処理を示すフローチャートである。
【0161】
図20に示すように、ステップST41において、メモリシステム3は、パトロール読出し処理を実行する。パトロール読出し処理の概要については、
図19のステップST31において説明したパトロール読出し処理と同等であるため、説明を省略する。
【0162】
ステップST42において、メモリコントローラ30は、パトロール対象の全てのページからデータを読み出したか否かを判定する。パトロール対象の全てのページからデータが読み出された場合(ステップST42;yes)、処理はステップST43に進み、パトロール対象のページのうち、データが読み出されていないページがある場合(ステップST42;no)、処理はステップST41に戻る。
【0163】
更新用パトロール処理では、点検用パトロール処理と異なり、同一のセルユニットCU内の1又は複数のページから読み出されたデータを使用して、後述する読出し電圧更新処理を実行する。例えば、
図13及び
図14に示したパトロールモードBでは、更新用パトロール処理は、同一のセルユニットCUの4ページから読み出されるデータを全て使用して、読出し電圧更新処理を実行する。このため、メモリコントローラ30は、読出し電圧更新処理に使用される所定のページ数の分だけ、ステップST41を繰り返す。
【0164】
ステップST43において、メモリコントローラ30内のECC回路34は、ステップST41において読み出されたデータに対してエラー訂正処理を実行する。これにより、メモリコントローラ30は、パトロール読出し処理によって読み出されたデータの誤り訂正後データを取得する。
【0165】
ステップST44において、メモリコントローラ30は、エラー訂正処理が成功したか否かを判定する。全てのページに対するエラー訂正処理に成功した場合(ステップST44;yes)、処理はステップST45に進み、エラー訂正処理に失敗したページが少なくとも1つある場合(ステップST45;no)、処理はステップST48に進む。
【0166】
ステップST45において、メモリコントローラ30は、読出し電圧更新処理を実行する。これにより、メモリコントローラ30は、読出し電圧の更新値を算出し、当該算出した更新後の読出し電圧に対応するDAC値を記憶する。読出し電圧更新処理については、後述する。
【0167】
ステップST46において、メモリコントローラ30は、エラー訂正処理によって検出されたエラービット数は閾値N1以上であるか否かを判定する。エラービット数が閾値以上である場合(ステップST46;yes)、処理はステップST48に進み、エラービット数が閾値N1未満の場合(ステップST46;no)、処理はステップST47に進む。
【0168】
ステップST47において、メモリコントローラ30は、ステップST41において読み出されたデータと、ステップST43において取得した誤り訂正後データと、に基づき、隣り合う状態間(例えば、“Er”状態と“A”状態との間の)の閾値電圧分布の重複の程度(エラービット数)が閾値N2以上であるか否かを判定する。隣り合う状態間の閾値電圧分布の重複の程度が閾値N2以上である場合(ステップST47;yes)、処理はステップST48に進み、閾値N2未満である場合(ステップST47;no)、更新用パトロール処理は終了する。
【0169】
ステップST48において、メモリコントローラ30は、パトロール結果情報22におけるパトロール対象を含むブロックBLKに対応するリフレッシュフラグを“True”に更新する。これにより、メモリコントローラ30は、パトロール対象から読み出したデータに含まれるエラービット数が閾値N1以上である、又はパトロール対象における閾値電圧分布の拡がりの程度が閾値N2以上であり、当該パトロール対象を含むブロックBLKに対してリフレッシュ処理が必要であることを記憶できる。
【0170】
以上により、更新用パトロール処理が終了する。
【0171】
なお、
図20の例では、パトロール対象の全てのページのデータに対するパトロール読出し処理を実行した後に、エラー訂正処理を実行する場合について説明したが、これに限られない。例えば、ECC回路34は、NANDフラッシュメモリ10からページ単位でデータ読み出されるたびにエラー訂正処理を実行してもよい。
【0172】
図21は、第1実施形態に係る情報処理システムにおける読出し電圧更新処理を示す模式図である。
図21では、一例として、“S0”状態及び“S1”状態に対応する2つの閾値電圧分布が示され、その重複の度合いによって読出し電圧VS1が更新される様子が示される。
【0173】
図21(A)では、読出し電圧VS1が“S0”状態及び“S1”状態に対応する2つの閾値電圧分布の交差する閾値電圧Voptと等しい場合が示される。
図21(A)の場合、“S1”状態を“S0”状態と誤って読み出されるメモリセル数E10(
図21(A)における領域(a)の面積に相当)と、“S0”状態を“S1”状態と誤って読み出されるメモリセル数E01(
図21(A)における領域(b))とは、等しくなる。この場合、エラービット数E(メモリセル数E01とメモリセル数E10との和)は最小となることが期待されるため、メモリコントローラ30は、読出し電圧VS1が更新不要であると判定する。
【0174】
図21(B)では、読出し電圧VS1が“S0”状態及び“S1”状態に対応する2つの閾値電圧分布の交差する閾値電圧Voptよりも高電圧側に位置する場合が示される。
図21(B)の場合、メモリセル数E10は、メモリセル数E01よりも多くなる。この場合、エラービット数Eは、
図21(A)の場合のエラービット数Eよりも多くなり、好ましくない。このため、メモリコントローラ30は、読出し電圧VS1を電圧Voptに近づけるように、低電圧側にシフトさせる。
【0175】
図21(C)では、読出し電圧VS1が“S0”状態及び“S1”状態に対応する2つの閾値電圧分布の交差する閾値電圧Voptよりも低電圧側に位置する場合が示される。
図21(C)の場合、“メモリセル数E10は、メモリセル数E01よりも少なくなる。この場合、エラービット数Eは、
図21(A)の場合のエラービット数Eよりも多くなり、好ましくない。このため、メモリコントローラ30は、読出し電圧VS1を電圧Voptに近づけるように、高電圧側にシフトさせる。
【0176】
なお、メモリセル数E01とメモリセル数E10との差の絶対値は、読出し電圧VS1が閾値電圧Voptから離れるほど大きくなることが期待される。このため、メモリコントローラ30は、読出し電圧VS1のシフト量を、領域(a)と領域(b)との比の大きさに応じて決定する。これにより、閾値電圧分布の重複の度合いに応じて適切なシフト量を決定することができ、理想的な電圧Voptに近づくように読出し電圧VS1を更新することができる。
【0177】
1.2.4.4 更新用パトロール処理結果の点検用パトロール処理への反映
上述した更新用パトロール処理によって更新された読出し電圧は、後続して実行されるようにスケジュールされた点検用パトロール処理に適用される。
【0178】
図22は、第1実施形態に係る情報処理システムにおける更新用パトロール処理と点検用パトロール処理との関係を示す模式図である。
図22では、一例として、パトロールモードBにおける、更新用パトロール処理結果の点検用パトロール処理への反映例が示される。具体的には、
図22(A)は、パトロールモードBにおいて更新用パトロール処理及び点検用パトロール処理がそれぞれ適用される物理アドレスを示す。
図22(B)は、パトロールモードBにおける更新用パトロール処理及び点検用パトロール処理の前後において読出し処理に適用される読出し電圧のパターンを示す。
【0179】
図22(B)に示すように、4日周期の1日目において、点検用パトロール処理及び更新用パトロール処理がこの順に実行される。上述の通り、点検用パトロール処理は、読出し電圧を更新しない。このため、点検用パトロール処理の前後において、パトロール読出し処理に適用される読出し電圧のパターンは、“A”のまま変化しない。このため、後続する更新用パトロール処理は、パターン“A”の読出し電圧が適用される。そして、更新用パトロール処理によってパターン“A”がパターン“B”に更新される。
【0180】
続いて、4日周期の2日目において、点検用パトロール処理及び更新用パトロール処理がこの順に実行される。4日周期の2日目において点検用パトロール処理が実行される物理アドレスは、1日目に更新用パトロール処理が実行された物理アドレスとは異なる。しかしながら、2日目における点検用パトロール処理では、パターン“B”の読出し電圧が適用され得る。また、2日目における更新用パトロール処理も同様に、パターン“B”の読出し電圧が適用される。そして、更新用パトロール処理によってパターン“A”がパターン“B”に更新される。3日目以降も同様である。
【0181】
このように、更新用パトロール処理によって更新された読出し電圧のパターンは、更新用パトロール処理とは異なる物理アドレスにおいて実行される点検用パトロール処理にも適用される。これにより、閾値電圧分布の変動の傾向が同程度と見なせる範囲内において、エラービット数をより少なくすることが期待できる読出し電圧のパターンを共有することができ、リフレッシュ処理の発生頻度を低くすることができる。
【0182】
1.3 本実施形態に係る効果
第1実施形態によれば、ホスト機器2は、パトロール管理情報設定要求を発行し、メモリシステム3に送出する。パトロール管理情報設定要求は、物理アドレスADD、優先度Pr、種別W、及び周期Peの情報を含む。これにより、ホスト機器2は、メモリシステム3によって実行されるパトロール処理のスケジュールを、任意に設定することができる。このため、ホスト機器2によるパトロール処理の制御性を向上させることができる。
【0183】
具体的には、ホスト機器2は、パトロールモード登録要求“SetPatCom”を発行し、メモリシステム3に送出する。これにより、ホスト機器2及びメモリシステム3は、ブロックBLK等の特定の範囲において、ワード線WLやストリングユニットSU、及びページPといった個別の記憶領域に対して異なる周期、異なる優先度、異なる種別が指定された一群のパトロール処理の定型を共有することができる。これにより、ブロックBLK毎のパトロール処理の設定をパトロールモードで指定することができる。このため、複雑なスケジュールを少ないコマンド数で設定することができる。
【0184】
また、ホスト機器2は、パトロール管理情報削除要求を発行し、メモリシステム3に送出する。パトロール管理情報設定要求は、削除対象のパトロール処理に対応する物理アドレスADDを含む。これにより、ホスト機器2は、不要であると判定されたパトロール処理を実行しない旨を、メモリシステム3に指示することができる。このため、ホスト機器2によるパトロール処理の制御性を向上させることができる。
【0185】
また、ホスト機器2は、パトロール結果情報及びパトロール進捗情報取得要求を発行し、メモリシステム3に送出する。これにより、ホスト機器2は、パトロール処理の結果として、リフレッシュすべきブロックBLKの情報や、遅延しているパトロール処理の情報等を適宜取得することができる。このため、ホスト機器2は、当該情報に基づき、リフレッシュ処理の実行要否や、パトロール処理の優先度Pr及び周期Peの変更要否について判定することができる。したがって、ホスト機器2の制御性を向上させることができる。
【0186】
1.4 第1実施形態の変形例
第1実施形態は、上述の例に限られず、種々の変形が適用可能である。
【0187】
例えば、上述した第1実施形態では、パトロール管理情報21に、パトロール処理のスケジュールがキュー構造で記憶される場合について説明したが、これに限られない。例えば、パトロール管理情報21には、パトロール処理のスケジュールがテーブル形式で記憶されてもよい。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0188】
図23は、第1実施形態の変形例に係る情報処理システムのパトロール管理情報21を示す概念図である。
図23では、パトロール管理情報21がテーブル形式で記憶される場合の一例が示される。
【0189】
図23に示すように、パトロール管理情報21には、例えば、ブロックBLK毎に、パトロールモード、周期Pe、及び実行識別子が関連づけて記憶される。
図23の例では、なお、ブロックBLK0及びブロックBLKnには、4日周期で繰り返されるパトロールモードAが設定されている。ブロックBLK1には、8日周期で繰り返されるパトロールモードCが設定されている。また、ブロックBLK2には、いずれのパトロールモードも設定されていない。
【0190】
実行識別子は、パトロール処理の実行日に対応し、ブロックBLK内をいくつかの記憶領域(物理アドレスADD)に分割した場合、当該分割された物理アドレス毎に割り当てられる。
図23の例では、ブロックBLK内が8つの物理アドレスADD1~ADD8に分割した場合が示される。このため、ブロックBLK0及びBLKnに対応する実行識別子として、4日周期の1日目にパトロール処理が実行される物理アドレスADD1及びADD5には、実行識別子“1”が割り当てられる。同様に、4日周期の2日目にパトロール処理が実行される物理アドレスADD2及びADD6には、実行識別子“2”が割り当てられる。4日周期の3日目にパトロール処理が実行される物理アドレスADD3及びADD7には、実行識別子“3”が割り当てられる。4日周期の4日目にパトロール処理が実行される物理アドレスADD4及びADD8には、実行識別子“0”が割り当てられる。このように、実行識別子は、パトロール処理の実行日の周期Peによる剰余と等しい値が割り当てられる。
【0191】
メモリコントローラ30は、上述したようなパトロール管理情報21内の実行識別子を網羅的に参照することを定期的に繰り返す、巡回動作を実行する。これにより、実行すべきパトロール処理の物理アドレスADD及びパトロールモードを特定し、当該実行すべきパトロール処理を適切なタイミングで実行することができる。
【0192】
図24は、第1実施形態の変形例に係る情報処理システムにおける巡回動作を示すフローチャートである。
【0193】
図24に示すように、ステップST51において、メモリコントローラ30は、カウント値cntをインクリメントする。カウント値は、巡回動作毎にインクリメントされる整数である。
【0194】
ステップST52において、メモリコントローラ30は、変数kを0に初期化する。
【0195】
ステップST53において、メモリコントローラ30は、パトロール管理情報21を参照し、ブロックBLKk内に、実行識別子が設定された物理アドレスADDがあるか否かを判定する。実行識別子が設定された物理アドレスADDがある場合(ステップST53;yes)、処理はステップST54に進み、実行識別子が設定された物理アドレスADDがない場合(ステップST53;no)、処理はステップST56に進む。
【0196】
ステップST54において、メモリコントローラ30は、カウント値cntの周期Peによる剰余(cnt%Pe)と等しい実行識別子に対応する物理アドレスADDiを選択する。例えば、k=1及びcnt=5の場合、ブロックBLKkのパトロールモードはパトロールモードC(周期Pe=8)なので、cnt%Pe=5となり、物理アドレスADD5が選択される。
【0197】
ステップST55において、メモリシステム3は、選択した物理アドレスADDiについてパトロール処理を実行する。
【0198】
ステップST56において、メモリコントローラ30は、全てのブロックBLKを巡回したか否かを判定する。
【0199】
巡回していないブロックBLKがある場合(ステップST56;no)、処理はステップST57に進む。ステップST57において、メモリコントローラ30は、変数kをインクリメントさせる。その後、処理はステップST53に戻る。これにより、全てのブロックBLKを巡回するまで、ステップST53~ST57が繰り返される。
【0200】
そして、全てのブロックBLKを巡回済みの場合(ステップST56;yes)、巡回動作は終了する。
【0201】
なお、上述の例では、ブロックBLKを昇順に巡回していく場合について説明したが、これに限られない。例えば、巡回動作の途中で、あるブロックBLKの優先度が高い優先度に変更された場合、当該ブロックを優先的に巡回してもよい。また、ステップST54において選択された物理アドレスADDiであっても、低い優先度が設定されている場合、当該物理アドレスADDiに対するパトロール処理は、状況に応じてスキップされてもよい。
【0202】
第1実施形態の変形例によれば、メモリコントローラ30は、パトロール処理のスケジュールを、キュー構造ではなく、テーブル形式の情報に基づいても制御することができる。
【0203】
2. 第2実施形態
次に、第2実施形態に係る情報処理システムについて説明する。第2実施形態では、ホスト機器2が、周期Peを指定しないコマンドを発行する。メモリシステム3は、当該コマンドに応じて、1度だけパトロール処理を実行する点において、第1実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0204】
2.1 パトロール処理を含む一連の動作
図25は、第2実施形態に係る情報処理システムにおけるパトロール処理を含む一連の動作を示すフローチャートであり、第1実施形態における
図18に対応する。
図25では、
図18のステップST21及びST22に代えて、ステップST21Aが実行される。
【0205】
ステップST21Aにおいて、ホスト機器2は、パトロール実行要求“PatrolRunRequest”を発行し、メモリシステム3に送出する。パトロール実行要求“PatrolRunRequest”には、物理アドレスADD、優先度Pr、種別W、及び管理フラグFを指定する情報が含まれるが、周期Peを指定する情報は含まれない。メモリシステム3は、パトロール実行要求(コマンドセット)を受けると、ステップST24~ST27の処理を実行する。ステップST24~ST27の処理は、
図18の場合と同等であるため、説明を省略する。
【0206】
ステップST28において、ホスト機器2は、パトロール結果情報及びパトロール進捗情報の取得要求を発行する。
【0207】
ステップST29において、メモリコントローラ30は、パトロール結果情報22及びパトロール進捗情報23をホスト機器2に出力する。
【0208】
以上により、パトロール処理を含む一連の動作が終了する。
【0209】
図26は、第2実施形態に係る情報処理システムにおけるパトロール実行要求を示すコマンドシーケンスの一例である。
【0210】
図26に示すように、ホスト機器2は、例えば、パトロール実行要求“PatrolRunRequest<Chip0-BLK0-WLk-SU0><Pr0><WUpdate>”を発行する。当該コマンドを受けると、メモリコントローラ30は、チップ10-0のブロックBLK0のワード線WLk及びストリングユニットSU0に属するセルユニットCUに対して、更新用パトロール処理を実行する。このように、パトロール実行要求“PatrolRunRequest”には、<周期>の情報が含まれないため、メモリコントローラ30は、当該パトロール処理を1回のみ実行し、その後周期的に繰り返し実行しない。
【0211】
2.2 本実施形態に係る効果
第2実施形態によれば、ホスト機器2は、<周期>の情報を含まないパトロール実行要求“PatrolRunRequest”を発行し、メモリシステム3に送出する。これにより、メモリシステム3は、ホスト機器2からの指示に基づいて、周期的に繰り返さずにスポット的にパトロール処理を実行することができる。このため、メモリシステム3にパトロール処理を実行させる際におけるホスト機器2の制御性を向上させることができる。
【0212】
なお、上述の例では、ホスト機器2がパトロール管理情報設定要求とは異なるコマンドとしてパトロール実行要求を発行することによって、1度だけ実行されるパトロール処理を指示する場合について説明したが、これに限られない。例えば、ホスト機器2は、パトロール管理情報設定要求を発行することで、1度だけ実行されるパトロール処理を指示してもよい。
【0213】
具体的には、パトロール管理情報設定要求は、周期Peの項目において、パトロール処理を1度だけ実行する旨を指定する情報(例えば、<PeOnce>)が定義されていてもよい。これにより、ホスト機器2が使用するコマンドの数の増加を抑制することができる。
【0214】
3. 第3実施形態
次に、第3実施形態に係る情報処理システムについて説明する。第3実施形態は、メモリシステム3が推奨するパトロールモードを、ホスト機器2に出力する点において、第1実施形態及び第2実施形態と異なる。以下の説明では、第1実施形態の変形例と同等の構成及び動作については説明を省略し、第1実施形態の変形例と異なる構成及び動作について主に説明する。すなわち、第3実施形態では、説明の便宜上、パトロール管理情報21がテーブル形式で記憶される場合について説明する。
【0215】
3.1 パトロール管理情報
図27は、第3実施形態の情報処理システムに係るパトロール管理情報を示す概念図である。
図27では、第1実施形態の変形例における
図23で示した周期及び実行識別子については図示が省略されている。
【0216】
図27に示すように、パトロール管理情報21には、指定パトロールモードと、推奨パトロールモードと、が各ブロックBLKについて記憶される。指定パトロールモードは、ホスト機器2によって指定されたパトロールモードである。これに対し、推奨パトロールモードは、指定パトロールモードに対して独立に設定され、かつメモリシステム3において設定されることが望ましいと判定されたパトロールモードである。
【0217】
メモリシステム3は、例えば、パトロール処理の結果や、NANDフラッシュメモリ10の状態等に基づき、推奨パトロールモードを設定する。一方、ホスト機器2は、推奨パトロールモードをメモリシステム3から取得し、指定パトロールモードを更新するか否かを判定する際の参考情報として、当該推奨パトロールモードを使用する。ホスト機器2は、推奨パトロールモードと同等のパトロールモードに、指定パトロールモードを更新してもよいし、推奨パトロールモードとは異なるパトロールモードに、指定パトロールモードを更新してもよい。
【0218】
図27の例では、ブロックBLK0について、同一のパトロールモードB0をホスト機器2が指定し、メモリシステム3が推奨する。しかしながら、ブロックBLK1については、ホスト機器2はパトロールモードB2を指定するが、メモリシステム3はパトロールモードB1を推奨する。また、ブロックBLK2については、ホスト機器2はパトロールモードを指定しないが、メモリシステム3はパトロールモードB1を推奨する。このように、同一のブロックBLKに対して、メモリシステム3は、ホスト機器2が指定するパトロールモードを推奨する場合と、ホスト機器2が指定しないパトロールモードを推奨する場合と、があり得る。
【0219】
メモリコントローラ30は、例えば、指定パトロールモード及び推奨パトロールモードを、それぞれ優先度Prの高さ及び周期Peの長さ(実行頻度)に応じて順位付けして記憶する。以下の説明では、
図27に示したパトロールモードB0~B3について、パトロールモードB0には、最も優先順位が高い優先度Prが設定され、かつ実行頻度が多い周期Pe設定される。次いでパトロールモードB1、B2、及びB3には、この順番で優先順位が低い優先度Prが設定され、また実行頻度が少ない周期Peが設定されるものとする。そして、パトロールモードの優先度Prをより優先順位が高い優先度Prに変更し、又は周期Peをより実行頻度が多い周期Peに変更することを、「パトロールモードのレベルを上げる」と表現する。また、パトロールモードの優先度Prをより優先順位が低い優先度Prに変更し、又は周期Peをより実行頻度が多い周期Peに変更することを、「パトロールモードのレベルを下げる」と表現する。
【0220】
3.2 パトロールモード更新動作
図28は、第3実施形態に係る情報処理システムにおけるパトロールモード更新動作を示すフローチャートである。
【0221】
図28に示すように、ステップST61において、メモリシステム3は、例えばシステムの起動に伴い、推奨パトロールモードを初期化する。
【0222】
ステップST62において、ホスト機器2は、指定パトロールモード設定要求を発行し、メモリシステム3に送出する。指定パトロールモード設定要求は、例えば、第1実施形態で説明したパトロール管理情報設定要求“PatrolSet”と同等のコマンドであり、設定を要求するパトロールモードと、当該パトロールモードの対象領域であるNANDフラッシュメモリ10内の物理アドレスADDと、を含む。
【0223】
ステップST63において、メモリシステム3は、指定パトロールモード設定要求を受けると、パトロール管理情報21を参照し、当該指定パトロールモード設定要求内に含まれる物理アドレスADDに対応する指定パトロールモードを、当該指定パトロールモード設定要求内に含まれるパトロールモードに設定する。
【0224】
ステップST64において、メモリシステム3は、書込み処理時の温度が閾値N3未満であるか否かを判定する。具体的には、例えば、NANDフラッシュメモリ10は、書込み処理を実行する際に、NANDフラッシュメモリ10内に設けられた温度センサ(図示せず)からの出力に基づいて、メモリコントローラ30に温度情報を出力する。メモリコントローラ30は、NANDフラッシュメモリ10からの温度情報に基づいて、書込み処理時の温度が閾値N3未満であるか否かを判定する。温度が閾値N3以上である場合(ステップST64;no)、処理はステップST67に進み、温度が閾値N3未満である場合(ステップST64;yes)、処理はステップST67を省略する。
【0225】
ステップST65において、メモリシステム3は、読出し処理によって読み出されたデータ(読出しデータ)のエラービット数が閾値N4未満であるか否かを判定する。具体的には、例えば、NANDフラッシュメモリ10は、読出しデータをメモリコントローラ30に出力する。メモリコントローラ30内のECC回路34は、読出しデータに対してエラー訂正処理を実行し、エラービット数を算出する。メモリコントローラ30は、算出されたエラービット数が閾値N4未満であるか否かを判定する。エラービット数が閾値N4以上である場合(ステップST65;no)、処理はステップST67に進み、エラービット数が閾値N4未満である場合(ステップST65;yes)、処理はステップST67を省略する。
【0226】
ステップST66において、メモリシステム3は、更新用パトロール処理による読出し電圧の更新量が閾値N5未満であるか否かを判定する。具体的には、例えば、メモリコントローラ30は、パトロール管理情報21に設定されたスケジュール又はホスト機器2からのパトロール実行要求“PatrolRunRequest”に基づき、NANDフラッシュメモリ10に対して更新用パトロール処理を実行する。これにより、メモリコントローラ30は、NANDフラッシュメモリ10のパトロール対象領域に適用される読出し電圧を更新する。メモリコントローラ30は、更新後の読出し電圧と更新前の読出し電圧とを比較し、当該読出し電圧の更新量が閾値N5未満であるか否かを判定する。読出し電圧の更新量が閾値N5以上である場合(ステップST66;no)、処理はステップST67に進み、読出し電圧の更新量が閾値N5未満である場合(ステップST66;yes)、処理はステップST67を省略する。
【0227】
ステップST67において、メモリコントローラ30は、パトロール管理情報21を参照し、対象領域に対する推奨パトロールモードのレベルを上げる。具体的には、ステップST64において温度が閾値N3以上であると判定された場合、メモリコントローラ30は、書込み対象領域に対して設定されている推奨パトロールモードのレベルを上げる。ステップST65においてエラービット数が閾値N4以上であると判定された場合、メモリコントローラ30は、読出し対象領域に対して設定されている推奨パトロールモードのレベルを上げる。ステップST66において読出し電圧の更新量が閾値N5以上であると判定された場合、メモリコントローラ30は、更新用パトロール処理の対象領域に対して設定されている推奨パトロールモードのレベルを上げる。なお、ステップST67では、指定パトロールモードは変更されないため、後続して実行されるパトロール処理のパトロールモードのレベルは変化しない。
【0228】
ステップST68において、ホスト機器2は、推奨パトロールモード出力要求(コマンドセット)を発行し、メモリシステム3に送出する。推奨パトロールモード出力要求は、例えば、出力を要求する推奨パトロールモードの対象領域であるNANDフラッシュメモリ10内の物理アドレスADDを含む。
【0229】
ステップST69において、メモリシステム3は、推奨パトロールモード出力要求を受けると、パトロール管理情報21を参照し、当該推奨パトロールモード出力要求内に含まれる物理アドレスADDに対応する推奨パトロールモードを出力する。
【0230】
ステップST70において、ホスト機器2は、指定パトロールモード設定要求を発行し、メモリシステム3に送出する。指定パトロールモード設定要求には、例えば、ホスト機器2とメモリシステム3との間で共有されるパトロールモードが含まれる。
【0231】
なお、ホスト機器2は、メモリシステム3との間で供給されていない新たなパトロールモードを指定パトロールモードとして指定パトロールモード設定要求に含めてもよい。この場合、ホスト機器2は、
図11、
図13、及び
図15に示したように、新たなパトロールモードを定義した後に、指定パトロールモード設定要求を発行してもよい。また、ホスト機器2は、パトロールモードを構成する複数のパトロール管理情報設定要求を直接メモリコントローラ30に送出してもよい。
【0232】
ステップST71において、メモリシステム3は、指定パトロールモード設定要求を受けると、パトロール管理情報21を参照し、当該指定パトロールモード設定要求内に含まれる物理アドレスADDに対応する指定パトロールモードを、当該指定パトロールモード設定要求内に含まれるパトロールモードに更新する。
【0233】
以上により、パトロールモード更新動作が終了する。
【0234】
なお、
図28の例では、ステップST64~ST66がこの順に実行される場合について説明したが、これに限られない。すなわち、ステップST64~ST66はそれぞれ、対応する書込み処理、読出し処理、及び更新用パトロール処理に応じて実行される処理であるため、
図28に示したステップST64~ST66の実行順は任意である。
【0235】
図29は、第3実施形態に係る情報処理システムにおけるパトロールモード更新動作を示す模式図である。
図29(A)は、例えば、
図28のステップST63の実行後の状態におけるパトロール管理情報21を示す。
図29(B)は、例えば、
図28のステップST67の実行後の状態におけるパトロール管理情報21を示す。
図29(C)は、例えば、
図28のステップST71の実行後の状態におけるパトロール管理情報21を示す。
【0236】
図29(A)に示すように、メモリコントローラ30は、初期状態として、全てのブロックBLKの推奨パトロールモードに対して、同一のパトロールモードB1を設定する。一方、ホスト機器2は、ブロックBLKの使用状態(例えば、消去回数)に応じて、異なるパトロールモードを指定する。
【0237】
具体的には、例えば、ホスト機器2は、消去回数が比較的多いブロックBLK0にはパトロールモードB1を指定し、消去回数が比較的少ないブロックBLK1には、より低いレベルのパトロールモードB2を指定する。ホスト機器2は、コピー領域として使用するブロックBLKnには、他のブロックBLKよりも低いレベルのパトロールモードB3を指定する。また、ホスト機器2は、未使用のブロックBLK2には、特定のパトロールモードを指定しない。
【0238】
図29(B)に示すように、NANDフラッシュメモリ10に対する書込み処理、読出し処理、及び更新用パトロール処理が実行されることにより、メモリコントローラ30は、種々の情報を取得する。
【0239】
例えば、メモリコントローラ30は、ブロックBLK0に対して実行された書込み処理の際のNANDフラッシュメモリ10の温度が閾値N3以上であったことに基づき、ブロックBLK0における閾値電圧分布が変動しやすい状況にあると判定する。このため、メモリコントローラ30は、ブロックBLK0の推奨パトロールモードに、指定パトロールモードB1より1段階高いレベルのパトロールモードB0を設定する。
【0240】
また、例えば、メモリコントローラ30は、ブロックBLK1からの読出しデータのエラービット数が閾値N4以上であったことに基づき、ブロックBLK1における閾値電圧分布が変動していると判定する。このため、メモリコントローラ30は、ブロックBLK0の推奨パトロールモードに、指定パトロールモードB2より1段階高いレベルのパトロールモードB1を設定する。
図29(B)の場合では、結果的にブロックBLK1の推奨パトロールモードのレベルは変化しない。
【0241】
また、例えば、メモリコントローラ30は、ブロックBLKnに対して実行された更新用パトロール処理の際の読出し電圧の更新量が閾値N5以上であったことに基づき、ブロックBLKnにおける閾値電圧分布が変動していると判定する。このため、メモリコントローラ30は、ブロックBLKnの推奨パトロールモードに、指定パトロールモードB3より1段階高いレベルのパトロールモードB2を設定する。
【0242】
図29(C)に示すように、ホスト機器2は、メモリコントローラ30から受けた推奨パトロールモードに基づき、指定パトロールモードを更新する。
【0243】
例えば、ホスト機器2は、ブロックBLK0及びBLK1については、推奨パトロールモードに従って、それぞれパトロールモードB0及びB1を指定する。一方、ホスト機器2は、ブロックBLKnについてはコピー領域であることから、パトロールモードのレベルを上げる必要は無いと判定し、パトロールモードB3を引き続き指定する。
【0244】
以上のように動作することにより、ホスト機器2は、メモリシステム3からの推奨パトロールモードを参考にしつつ、あくまでも主体的にパトロールモードを指定することができる。
【0245】
3.3 本実施形態に係る効果
第3実施形態によれば、ホスト機器2は、推奨パトロールモード出力要求を発行する。メモリシステム3は、推奨パトロールモード出力要求に応じて、ホスト機器2から指定されたパトロールモードとは独立に設定された推奨パトロールモードをホスト機器2に出力する。これにより、ホスト機器2は、指定パトロールモードとは異なり得る、メモリシステム3が推奨するパトロールモードを取得することができ、当該推奨パトロールモードを、メモリシステム3にパトロールモードを指定する際の参考にすることができる。このため、ホスト機器2のパトロール処理における制御性を向上させることができる。
【0246】
また、メモリコントローラ30は、NANDフラッシュメモリ10への書込み処理の際の温度、読出しデータのエラービット数、又は読出し電圧の更新量に基づき、推奨パトロールモードを設定する。これにより、メモリコントローラ30は、読出し電圧が想定よりも変動しやすい状況を検知した場合には指定パトロールモードよりも高いレベルの推奨パトロールモードを設定することができる。このため、ホスト機器2が指定パトロールモードを設定する際に、ホスト機器2が関知しない情報に基づく有益な情報を、ホスト機器2に提供することができる。
【0247】
3.4 第3実施形態の変形例
第3実施形態は、上述の例に限られず、種々の変形が適用可能である。
【0248】
例えば、上述した第3実施形態では、メモリコントローラ30が、ホスト機器2からの要求の有無によらず、書込み処理時の温度、読出しデータのエラービット数、及び読出し電圧の更新量等の情報に基づいて、推奨パトロールモードを適宜設定する場合について説明したが、これに限られない。例えば、メモリコントローラ30は、ホスト機器2からの要求に応じて、推奨パトロールモードを設定するための情報をNANDフラッシュメモリ10に問い合わせてもよい。以下の説明では、第3実施形態と同等の構成及び動作については説明を省略し、第3実施形態と異なる構成及び動作について主に説明する。
【0249】
図30は、第3実施形態の変形例に係る情報処理システムにおける推奨パトロールモード出力動作を示すフローチャートである。
【0250】
図30に示すように、ステップST68において、ホスト機器2は、推奨パトロールモード出力要求を発行し、メモリコントローラ30に送出する。
【0251】
ステップST81において、メモリコントローラ30は、推奨パトロールモード出力要求を受けると、NANDフラッシュメモリ10に対して推奨パトロールモードを問い合わせる。
【0252】
ステップST82において、NANDフラッシュメモリ10は、メモリコントローラ30からの問い合わせに応じて、NANDフラッシュメモリ10が推奨するパトロールモードを回答する。
【0253】
ステップST69において、メモリコントローラ30は、NANDフラッシュメモリ10から受けた推奨パトロールモードを、ホスト機器2に出力する。
【0254】
以上のように動作することにより、メモリコントローラ30は、NANDフラッシュメモリ10からの要望を反映した推奨パトロールモードをホスト機器2に出力することができる。
【0255】
なお、
図30の例では、NANDフラッシュメモリ10がメモリコントローラ30に対してパトロールモードを具体的に定義する場合について説明したが、これに限られない。
【0256】
例えば、NANDフラッシュメモリ10は、メモリコントローラ30からの問い合わせに応じて、自身を構成する複数のチップ10-0~10-Nの各々のデバイスIDをメモリコントローラ30に送出してもよい。これにより、メモリコントローラ30は、チップ10-0~10-Nの各々が互いに異なる構成(例えば、互いに異なるブロックBLK、ストリングユニットSU、ワード線WL、及びビット線BLの数)のメモリセルアレイ17を有する場合においても、その構成に応じて最適なパトロールモードを設定することができる。
【0257】
また、例えば、NANDフラッシュメモリ10は、メモリコントローラ30からの問い合わせに応じて、不良なブロックBLKの情報をメモリコントローラ30に送出してもよい。これにより、メモリコントローラ30は、各ブロックBLKの良否についてより詳細な情報を得ることができる。このため、メモリコントローラ30は、精度の高い推奨パトロールモードを設定することができる。
【0258】
4. その他
上述の第1実施形態乃至第3実施形態では、閾値電圧分布の重複の度合いに応じて読出し電圧を更新する場合について説明したが、これに限られない。例えば、読出し電圧は、重複する閾値電圧分布同士が交差する閾値電圧を推定することによって更新されてもよい。
【0259】
図31は、その他の変形例に係る情報処理システムにおける更新用パトロール処理を示すフローチャートである。
【0260】
図31に示すように、ステップST91において、メモリシステム3は、パトロール読出し処理を実行する。ステップST91におけるパトロール読出し処理は、
図19のステップST31におけるパトロール読出し処理と同様に、セルユニットCU内の特定のページのデータを読み出してもよく、1つの読出し電圧のみを使用してデータを読み出してもよい。
【0261】
ステップST92において、メモリコントローラ30は、異なる読出し電圧を使用して、所定数のパトロール読出し処理を実行したか否かを判定する。所定数のパトロール読出し処理が実行された場合(ステップST92;yes)、処理はステップST93に進み、所定数のパトロール読出し処理が実行されていない場合(ステップST92;no)、処理はステップST91に戻る。これにより、メモリコントローラ30は、パトロール読出し処理が所定回数実行されるまで、当該パトロール読出し処理に使用される読出し電圧を少しずつシフトさせる。
【0262】
ステップST93において、メモリコントローラ30は、ステップST91において読出し電圧をシフトさせながら所定数読み出されたデータを使用して、読出し電圧更新処理を実行する。例えば、メモリコントローラ30は、読出し電圧更新処理において、所定数の読出し電圧の各々について、オン状態となるメモリセルの数(オンセル数)を算出する。メモリコントローラ30は、オンセル数の変化量(区間セル数)に基づいて読出し電圧の更新値を算出し、当該算出した更新後の読出し電圧に対応するDAC値を記憶する。読出し電圧更新処理については、後述する。
【0263】
ステップST94において、区間セル数の極小値が閾値N6以上であるか否かを判定する。区間セル数の極小値が閾値N6以上である場合(ステップST94;yes)、処理はステップST95に進み、区間セル数の極小値が閾値N6未満の場合(ステップST94;no)、更新用パトロール処理は終了する。
【0264】
ステップST95において、メモリコントローラ30は、パトロール結果情報22におけるパトロール対象を含むブロックBLKに対応するリフレッシュフラグを“True”に更新する。これにより、メモリコントローラ30は、パトロール対象の区間セル数が閾値N6であり、当該パトロール対象を含むブロックBLKに対してリフレッシュ処理が必要であることを記憶できる。
【0265】
以上により、更新用パトロール処理が終了する。
【0266】
図32は、その他の変形例に係る情報処理システムにおける読出し電圧更新処理を示す模式図である。
図32(A)では、一例として、“S0”状態及び“S1”状態に対応する2つの閾値電圧分布が示される。
図32(B)では、オンセル数の推移が示される。
図32(C)では、2つの読出し電圧間におけるオンセル数変化量、すなわち区間セル数の推移が示される。なお、
図32(B)及び32(C)は、
図32(A)に示される閾値電圧分布を有するセルユニットCUに対応してプロットされたものである。
【0267】
図32(B)に示すように、読出し電圧を低電圧側にシフトさせていくと、“S1”状態の最頻値である電圧VS1midよりわずかに高い電圧でオンセル数が急激に減少し、|dM/dR|が極大となる。ここで、最頻値とは、
図32(A)において最も閾値電圧の分布確率が高い電圧であり、Mはオンセル数で、Rは読出し電圧である。更に読出し電圧を低くしていくと、オンセル数の減少率は小さくなり、或る値の読出し電圧においてオンセル数の減少率が極小となる。オンセル数の減少率の極小値は、“S1”状態に属する閾値電圧分布と、“S0”状態に属する閾値電圧分布とが重ならない場合にはゼロとなる。他方で、“S1”状態に属する閾値電圧分布と、“S0”状態に属する閾値電圧分布とが重なる場合には、オンセル数の減少率の極小値はゼロではない値(>0)となる。そして更に読出し電圧を低くしていくと、再びオンセル数の減少率が大きくなり、“A”状態の最頻値である電圧VS0midよりわずかに高い電圧で再び|dM/dR|が極大となる。
【0268】
上述のオンセル数の変化によって、2つの状態間の閾値電圧分布の重なりが最も小さくなる読出し電圧(すなわち、2つの状態の閾値電圧分布の交点に対応する読出し電圧)を検出することができる。例えば、まず、読出し電圧R0を用いてパトロール読出し処理を行う。この時のオンセル数をM0とする。次に、電圧R0よりΔVだけ低い電圧R1を用いてパトロール読出し処理を行う。この時のオンセル数をM1とする。すると、読出し電圧がR0からR1に低下した際に新たにオフするメモリセルトランジスタMTの数は、C1=M0-M1個である。すなわち、閾値電圧が[R0,R1]間における区間セル数がC1個である。
【0269】
引き続き、電圧R1よりΔVだけ低い電圧R2を用いてパトロール読出し処理を行う。この時のオンセル数をM2とする。すると、読出し電圧がR1からR2に低下した際に新たにオフするメモリセルトランジスタMTの数は、C2=M1-M2個である。すなわち、閾値電圧が[R1,R2]間における区間セル数がC2個である。そして、C1>C2であったとすれば、|dM/dR|が最小となる電圧は、少なくとも電圧R1より低電圧側に位置すると考えられる。
【0270】
引き続き、電圧R2よりΔVだけ低い電圧R3を用いてパトロール読出し処理を行う。この時のオンセル数をM3とする。すると、読出し電圧がR2からR3に低下した際に新たにオフするメモリセルトランジスタMTの数は、C3=M2-M3である。すなわち、閾値電圧が[R2,R3]間における区間セル数がC3個である。ここで、C3>C2であったとすれば、
図32(C)のようなヒストグラムが得られる。
【0271】
以上の結果、区間セル数によって、
図32(C)における一点鎖線で示されるような閾値電圧分布を推定することができる。そして、“S0”状態に属する閾値電圧分布と“S1”状態に属する閾値電圧分布との重なりが最も小さくなる読出し電圧が電圧R1と電圧R2との間(区間セル数が極小値の区間)に存在することが推定できる。
【0272】
メモリコントローラ30は、読出し電圧を、当該区間セル数が極小値の区間内の電圧値に更新する。これにより、理想的な電圧値Voptに近づくように読出し電圧を更新することができる。
【0273】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0274】
1…情報処理システム、2…ホスト機器、3…メモリシステム、5…ルックアップテーブル、10…不揮発性メモリ、11…入出力回路、12…レジスタセット、12A…ステータスレジスタ、12B…アドレスレジスタ、12C…コマンドレジスタ、13…ロジックコントローラ、14…シーケンサ、15…レディ/ビジー制御回路、16…電圧生成回路、17…メモリセルアレイ、18…ロウデコーダモジュール、19…センスアンプモジュール、20…揮発性メモリ、21…パトロール管理情報、22…パトロール結果情報、23…パトロール進捗情報、30…メモリコントローラ、31…プロセッサ、32…バッファメモリ、33…ホストインタフェース回路、34…ECC回路、35…NANDインタフェース回路、36…DRAMインタフェース回路。