(57)【要約】【課題】信頼性を低下させることなくレイテンシを小さくする。【解決手段】実施形態によるメモリシステムは、複数のリード動作のうちのいずれかを選択的に実行する不揮発性メモリと、前記不揮発性メモリに対して前記複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリコントローラと、を備え、前記メモリコントローラは、リード要求を受け付け、前記リード要求がリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報を推定し、前記推定された信頼性に関する情報に基づいて前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作を前記複数のリード動作のうちから選択し、前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示する。【選択図】図３
2019168853.tif 000002
【特許請求の範囲】
【請求項１】
複数のリード動作のうちのいずれかを選択的に実行する不揮発性メモリと、
前記不揮発性メモリに対して前記複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリコントローラと、
を備え、
前記メモリコントローラは、
リード要求を受け付け、
前記リード要求がリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報を推定し、
前記推定された信頼性に関する情報に基づいて前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作を前記複数のリード動作のうちから選択し、
前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示する
メモリシステム。
【請求項２】
前記複数のリード動作は、データのリードに第１リード時間を要する第１リード動作と、データのリードに前記第１リード時間よりも長い第２リード時間を要する第２リード動作とを含み、
前記メモリコントローラは、前記推定された信頼性に関する情報が第１閾値よりも高い信頼性を示していた場合、前記第１リード動作を前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作として選択し、前記信頼性に関する情報が前記第１閾値以下の信頼性を示していた場合、前記第２リード動作を前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作として選択する
請求項１に記載のメモリシステム。
【請求項３】
前記複数のリード動作は、データのリードに前記第２リード時間よりも長い第３リード時間を要する第３リード動作をさらに含み、
前記メモリコントローラは、前記信頼性に関する情報が前記第１閾値よりも低い第２閾値以下の信頼性を示していた場合、前記第３リード動作を前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作として選択する
請求項２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記リード要求がリード対象とする前記物理アドレスに対して所定のリード動作を実行した場合に読み出されたデータに含まれると推定されるエラービットの数に対応する情報を前記信頼性に関する情報とする請求項１に記載のメモリシステム。
【請求項５】
前記不揮発性メモリは、それぞれ１ビット又は多ビットの値を保持する複数のメモリセルを備え、
前記複数のメモリセルそれぞれに保持された各ビットは、他の１以上のメモリセルの保持されたビットとともにページを構成し、
前記メモリコントローラは、
前記物理アドレスが指し示す前記不揮発性メモリ中の物理的位置を示す物理位置と、
前記リード要求がリード対象とするリード対象データが格納されているページを特定するページ種別と、
前記リード対象データを前記不揮発性メモリに書き込んだ際に使用した書込みモードと、
前記物理アドレスから過去に読み出したデータに含まれていたエラービットの数と誤り訂正に成功した頻度と誤り訂正に失敗した頻度のうち少なくとも１つに関する情報であるエラー履歴と、
前記物理アドレスで指定されるページに対してデータの書込みを実行してからの経過時間と、
前記物理アドレスで指定されるページ又は当該ページを含むブロックに対して過去に実行された消去動作の累積回数である消去回数と、
前記物理アドレスで指定されるページを含むブロックに対するデータの書き込みが完了しているか否かを示す書込み状態と、
前記物理アドレスで指定されるページを含むブロックに含まれる全てのページに対して前記リード対象データを書き込んだ後に実行されたリード動作の回数である読出し回数と、
前記不揮発性メモリの温度を示す温度と、
前記物理アドレスで指定されるページに対して前記リード対象データを書き込んだ際の温度と前記リード要求に応じたリード動作を実行する際の温度との差を示す温度交差と、
のうちのいずれか１つ以上を用いて、前記信頼性に関する情報を推定する
請求項１に記載のメモリシステム。
【請求項６】
前記物理位置と、前記ページ種別と、前記エラー履歴と、前記経過時間と、前記消去回数と、前記書込み状態と、前記読出し回数と、前記温度と、前記温度交差とのうちのいずれか１つ以上を記憶する特性情報記憶部をさらに備え、
前記メモリコントローラは、前記物理位置と、前記ページ種別と、前記エラー履歴と、前記経過時間と、前記消去回数と、前記書込み状態と、前記読出し回数と、前記温度と、前記温度交差とのうちのいずれか１つ以上を前記特性情報記憶部から入力する
請求項５に記載のメモリシステム。
【請求項７】
前記不揮発性メモリは、前記所定の位置の温度を検出する温度センサを備え、
前記特性情報記憶部は、前記温度センサから入力された情報を前記温度として格納する
請求項６に記載のメモリシステム。
【請求項８】
前記メモリコントローラは、
複数の符号化方式のうちのいずれかを用いてデータを符号化し、符号化された前記データを当該データの符号化に用いられた符号化方式に対応する復号方式にて復号し、
前記リード要求がリード対象とするデータが格納されているページに対して実行した符号化方式又は当該符号化方式の誤り訂正能力を管理し、
前記推定された信頼性に加え、又は、前記推定された信頼性に代えて、前記リード要求がリード対象とするデータが格納されているページに対して管理している前記符号化方式又は当該符号化方式の誤り訂正能力に基づいて、前記不揮発性メモリに最初に実行させる前記リード動作を前記複数のリード動作のうちから選択する
請求項１に記載のメモリシステム。
【請求項９】
前記リード要求は、前記メモリシステムに接続されたホスト装置から入力されたリード要求である請求項１に記載のメモリシステム。
【請求項１０】
前記リード要求は、前記不揮発性メモリに対するガベージコレクションを実行する際に発生したリード要求と、前記不揮発性メモリに対するリフレッシュを実行する際に発生したリード要求とのうちのいずれかである請求項１に記載のメモリシステム。
【請求項１１】
前記メモリコントローラは、
前記リード・コマンドの発行が前記リード要求に対して１回目の発行であるか否かを管理し、
前記リード・コマンドに応じて実行された前記リード動作により前記不揮発性メモリから読み出されたデータに対してエラー訂正処理を実行し、
前記復号処理に成功した場合、前記復号処理により復元されたデータを前記リード要求の発行元へ転送するとともに、前記リード・コマンドの発行が前記リード要求に対して１回目の発行であるか否かを示す情報をリセットする
請求項１に記載のメモリシステム。
【請求項１２】
複数のリード動作のうちのいずれかを選択的に実行する不揮発性メモリと、
前記不揮発性メモリに対して前記複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリコントローラと、
を備え、
前記メモリコントローラは、
リード要求を受け付け、
前記リード要求に対して前記不揮発性メモリへ発行する第１リード・コマンドにおいて、実行するリード動作を選択するよう前記不揮発性メモリへ指示し、
前記不揮発性メモリは、
前記第１リード・コマンドがリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報を推定し、
前記推定された信頼性に関する情報に基づいて前記実行するリード動作を前記複数のリード動作のうちから選択し、
前記選択されたリード動作を実行する
メモリシステム。
【請求項１３】
不揮発性メモリに対して複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリシステムの制御方法であって、
前記メモリシステムに対するリード要求を受け付け、
前記リード要求がリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報を推定し、
前記推定された信頼性に関する情報に基づいて前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作を前記複数のリード動作のうちから選択し、
前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示する
メモリシステムの制御方法。
【請求項１４】
不揮発性メモリに対して複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリシステムを機能させるためのプログラムであって、
前記メモリシステムに対するリード要求の受け付けと、
前記リード要求がリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報の推定と、
推定された前記信頼性に関する情報に基づいて前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作の前記複数のリード動作のうちからの選択と、
前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示することと、
を前記メモリシステムに実行させるためのプログラム。
【請求項１５】
複数のリード動作のうちのいずれかを選択的に実行する不揮発性メモリと、
前記不揮発性メモリに対して前記複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリコントローラと、
を備え、
前記メモリコントローラは、
リード要求を受け付け、
前記リード要求から特定される特性情報が所定の条件を満たしているか否かに基づいて、前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作を前記複数のリード動作のうちから選択し、
前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示する
メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリシステム、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）からデータを読み出すリード動作には、リード時間と信頼性とが異なる複数のリード方式が存在する。リード時間とは、例えば、ＮＡＮＤメモリに対してリード要求を発行してからこの要求に応じてデータが読出し開始可能になるまでの時間である。一方、信頼性とは、例えば、ＮＡＮＤメモリから読み出されたデータの正確性に相当するものであり、読み出されたデータに含まれるエラービットが少ない場合は信頼性が高く、多い場合は信頼性が低いことを意味している。
【０００３】
ここで、リード時間と信頼性とはトレードオフの関係にある。そこで従来では、最初にリード時間の短いリード方式を実行し、そのリードに失敗した場合に、信頼性を重視したリード方式を実行するのが一般的であった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９２２３６５６号明細書
【特許文献２】米国特許出願公開第２０１３／００８０８５８号明細書
【特許文献３】米国特許第９０２５３９３号明細書
【特許文献４】米国特許第８８１１０９４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、信頼性を低下させることなくリード時間を短縮することが可能なメモリシステム、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態によるメモリシステムは、複数のリード動作のうちのいずれかを選択的に実行する不揮発性メモリと、前記不揮発性メモリに対して前記複数のリード動作のうちのいずれかを実行させるリード・コマンドを発行するメモリコントローラと、を備え、前記メモリコントローラは、リード要求を受け付け、前記リード要求がリード対象とする物理アドレスに対してリード動作を実行したと仮定した場合の信頼性に関する情報を推定し、前記推定された信頼性に関する情報に基づいて前記不揮発性メモリに前記リード要求に対して最初に実行させるリード動作を前記複数のリード動作のうちから選択し、前記リード要求の受け付けに応じて前記不揮発性メモリへ最初に発行する第１リード・コマンドにおいて、前記選択されたリード動作の実行を前記不揮発性メモリに指示する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、リード動作におけるリード時間とＢＥＲとの関係例を示す図である。
【図３】図３は、第１の実施形態に係るメモリコントローラのリード動作を実行する構成に着目した機能ブロック図である。
【図４】図４は、３次元ＮＡＮＤ構造を有するメモリセルアレイの一例を示す断面図である。
【図５】図５は、３次元ＮＡＮＤ構造を有するメモリセルアレイの他の一例を示す断面図である。
【図６】図６は、ＳＬＣ、ＭＬＣ及びＴＬＣの閾値電圧分布及びマージンの例を示す図である。
【図７】図７は、ＭＬＣの閾値電圧分布及びリードレベルの一例を示す図である。
【図８】図８は、図７に示すＭＬＣをＬＯＷＥＲページとＵＰＰＥＲページとの２つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との一例を示す図である。
【図９】図９は、ＴＬＣの閾値電圧分布及びリードレベルの一例を示す図である。
【図１０】図１０は、図９に示すＴＬＣをＬＯＷＥＲページとＭＩＤＤＬＥページとＵＰＰＥＲページとの３つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との一例を示す図である。
【図１１】図１１は、ＴＬＣの閾値電圧分布及びリードレベルの他の例を示す図である。
【図１２】図１２は、図１１に示すＴＬＣをＬＯＷＥＲページとＭＩＤＤＬＥページとＵＰＰＥＲページとの３つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との他の例を示す図である。
【図１３】図１３は、第１の実施形態に係るリード動作の概略例を示すシーケンス図である。
【図１４】図１４は、第１の実施形態に係るコマンドシーケンスの一例を示す図である。
【図１５】図１５は、第２の実施形態に係る不揮発性メモリの概略構成例を示すブロック図である。
【図１６】図１６は、第２の実施形態に係るコマンドシーケンスの一例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態に係るメモリシステム、その制御方法及びプログラムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
まず、第１の実施形態にかかるメモリシステム、その制御方法及びプログラムについて、図面を参照して詳細に説明する。図１は、第１の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。メモリシステム１は、不揮発性メモリ２０とメモリコントローラ１０とを備える。メモリシステム１は、ホスト装置３０と接続可能であり、図１ではホスト装置３０と接続された状態が示されている。ホスト装置３０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【００１０】
メモリシステム１は、いわゆるＳＳＤ（Solid State Drive）や、メモリコントローラ１０と不揮発性メモリ２０とが１つのパッケージとして構成されるメモリカード等、不揮発性メモリ２０を備える種々のメモリシステムであってよい。
【００１１】
不揮発性メモリ２０は、データを不揮発に記憶する不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリという）である。以下の説明では、不揮発性メモリ２０としてＮＡＮＤメモリが用いられた場合を例示するが、不揮発性メモリ２０として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）等のＮＡＮＤメモリ以外の記憶媒体を用いることも可能である。また、不揮発性メモリ２０が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００１２】
メモリコントローラ１０は、例えばＳｏＣ（System-On-a-Chip）として構成される半導体集積回路である。以下で説明するメモリコントローラ１０の各構成要素の動作の一部又は全部は、ＣＰＵ（Central Processing Unit）がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【００１３】
メモリコントローラ１０は、メモリバス１８によって不揮発性メモリ２０に接続され、ホストバス３１によってホスト装置３０に接続される。メモリコントローラ１０は、ホスト装置３０からのライト要求に従って不揮発性メモリ２０への書込みを制御する。また、ホスト装置３０からのリード要求に従って不揮発性メモリ２０からの読出しを制御する。ホスト装置３０は、コンピュータの構成を備えている。コンピュータとは、例えば、パーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等であってよい。また、ホストバス３１の準拠する規格としては、たとえば、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＳＡＳ（Serial Attached SCSI）、ＰＣＩｅ（登録商標）（Peripheral Component Interconnect express）（NVM express（登録商標）を含む）など、任意の規格が採用可能である。
【００１４】
メモリバス１８は、メモリコントローラ１０と不揮発性メモリ２０とを結ぶメモリインタフェースに従った信号の送受信を行う。メモリインタフェースがいわゆるＮＡＮＤインタフェースである場合、この信号の具体例には、チップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、レディ・ビジー信号ＲＢｎ、入出力信号Ｉ／Ｏ等が含まれ得る。
【００１５】
信号ＣＥｎは、不揮発性メモリ２０をイネーブルにするための信号である。信号ＣＬＥは、不揮発性メモリ２０への入力信号Ｉ／Ｏがコマンドであることを不揮発性メモリ２０に通知する信号である。信号ＡＬＥは、不揮発性メモリ２０への入力信号Ｉ／Ｏがアドレスであることを不揮発性メモリ２０に通知する信号である。信号ＷＥｎは入力信号Ｉ／Ｏを不揮発性メモリ２０に取り込ませるための信号である。信号ＲＥｎは、不揮発性メモリ２０から出力信号Ｉ／Ｏを読み出すための信号である。レディ・ビジー信号ＲＢｎは、不揮発性メモリ２０がレディ状態（メモリコントローラ１０からのコマンドを受信できる状態）であるか、それともビジー状態（メモリコントローラ１０からのコマンドを受信できない状態）であるかを示す信号である。入出力信号Ｉ／Ｏは、例えば８ビットの信号である。入出力信号Ｉ／Ｏは、不揮発性メモリ２０とメモリコントローラ１０との間で送受信されるデータの実体であり、コマンド、アドレス、ライトデータ（書込み対象のデータ）、リードデータ（読み出されたデータ）等である。
【００１６】
また、不揮発性メモリ２０からメモリコントローラ１０へは、不揮発性メモリ２０の温度を検出する温度センサ２５で検出された温度を示す信号ＴＥＭＰも入力される。この温度センサ２５は、図１に示すように、不揮発性メモリ２０内に設けられてもよいし、不揮発性メモリ２０の外部に設けられた独立した部品であってもよい。また、温度センサ２５から出力された信号ＴＥＭＰが伝播する信号線は、メモリバス１８に含まれていてもよいし、メモリバス１８とは別の独立した信号線であってもよい。
【００１７】
メモリコントローラ１０は、ホストインタフェース（ホストＩ／Ｆ）１５、ＲＡＭ（Random Access Memory）１２、制御部１１、バッファメモリ１４、メモリインタフェース（メモリＩ／Ｆ）１６、及びＥＣＣ部（ＥＣＣ）１３を備えている。ホストＩ／Ｆ１５、ＲＡＭ１２、制御部１１、バッファメモリ１４、メモリＩ／Ｆ１６、及びＥＣＣ部１３は、内部バス１７によって互いに接続されている。
【００１８】
ホストＩ／Ｆ１５は、ホストバス３１を介してホスト装置３０と接続され、ホスト装置３０から受信したコマンド及びデータを、それぞれ制御部１１及びバッファメモリ１４に転送する。また、ホストＩ／Ｆ１５は、制御部１１からのコマンドに応答して、バッファメモリ１４内のデータをホスト装置３０へ転送する。
【００１９】
制御部１１は、例えばＣＰＵ（Central Processing Unit）などの情報処理装置で構成され、メモリコントローラ１０全体の動作を制御する。例えば、制御部１１は、ホスト装置３０からライト要求を受信した際には、それに応答して、メモリＩ／Ｆ１６に対してライト・コマンドを発行する。リードの際も同様に、ホスト装置３０からリード要求を受信した際には、それに応答して、メモリＩ／Ｆ１６に対してリード・コマンドを発行する。一方、消去の場合には、例えば制御部１１がガベージコレクションなどの処理の一環として、メモリＩ／Ｆ１６に対して消去コマンドを発行する。また、制御部１１は、ガベージコレクションの他にも、ウェアレベリング、リフレッシュ、パトロールリード等、不揮発性メモリ２０を管理するための様々な処理を実行する。
【００２０】
メモリＩ／Ｆ１６は、メモリバス１８を介して不揮発性メモリ２０と接続され、不揮発性メモリ２０との通信を制御する。メモリＩ／Ｆ１６は、制御部１１から受信したコマンドに基づき、信号ＡＬＥ、信号ＣＬＥ、信号ＷＥｎ、及び信号ＲＥｎを不揮発性メモリ２０へ出力する。また、書込み時には、制御部１１で発行されたライト・コマンド、及びバッファメモリ１４内のライトデータを、入出力信号Ｉ／Ｏとして不揮発性メモリ２０へ転送する。メモリＩ／Ｆ１６は、読出し時には、制御部１１で発行されたリード・コマンドを、入出力信号Ｉ／Ｏとして不揮発性メモリ２０へ転送する。また、メモリＩ／Ｆ１６は、不揮発性メモリ２０から読み出されたデータを入出力信号Ｉ／Ｏとして受信し、これをバッファメモリ１４へ転送する。
【００２１】
バッファメモリ１４は、ライトデータまたはリードデータを一時的に保持するメモリ領域として機能する。バッファメモリ１４は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）等で構成され得る。
【００２２】
ＲＡＭ１２は、例えばＤＲＡＭ等の半導体メモリであり、制御部１１の作業領域として使用される。ＲＡＭ１２には、不揮発性メモリ２０を制御するためのファームウェアや、ホスト装置３０から指定された論理アドレスと不揮発性メモリ２０上の物理アドレスとの対応関係を示すアドレス変換テーブル等の各種テーブル等がロードされる。
【００２３】
ＥＣＣ部１３は、リードデータにおけるエラー検出及びエラー訂正のために、データの符号化および復号を行う。具体的には、ＥＣＣ部１３は、不揮発性メモリ２０に書き込まれるデータ（ライトデータ）を符号化する。また、ＥＣＣ部１３は、不揮発性メモリ２０から読み出されたデータ（リードデータ）を復号する。ＥＣＣ部１３は、復号によって、リードデータにおけるエラー検出及びエラー訂正を実行する。ＥＣＣ部１３は、エラー訂正に失敗した場合には、エラー訂正の失敗を制御部１１に通知する。ＥＣＣ部１３による符号化および復号のアルゴリズムには、ＲＳ（リード・ソロモン）符号やＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号や低密度パリティ検査（ＬＤＰＣ）符号等を用いた任意のアルゴリズムを適用することが可能である。
【００２４】
例えば、ＥＣＣ部１３は、データに基づいてパリティを生成し、パリティをデータに付す。書込み時には、不揮発性メモリ２０には、パリティが付されたデータが、符号化データとして書き込まれる。読出し時には、ＥＣＣ部１３は、パリティに基づきシンドロームを生成し、読み出されたデータ内のエラーの有無を判断する。ＥＣＣ部１３は、データにエラーが含まれる場合、エラーの位置を特定し、そのエラーを訂正する。ＥＣＣ部１３において訂正可能なエラーの数は、例えばパリティのビット数等によって決まる。訂正可能なエラーの数を超える数のエラーがデータに含まれる場合には、ＥＣＣ部１３は、エラー訂正ができない。したがって、この場合、ＥＣＣ部１３は、エラー訂正に失敗する。
【００２５】
不揮発性メモリ２０は、コマンド処理部２１、駆動部２２、メモリセルアレイ２３、カラムモジュール２４、及び、温度センサ２５を備える。コマンド処理部２１は、シーケンサ２１１、コマンドレジスタ（ＣＭＤレジスタ）２１２、アドレスレジスタ（ＡＤＤレジスタ）２１３を含む。駆動部２２は、ドライバ回路２２１及びロウデコーダ（Ｒ／Ｄ）２２２を含む。
【００２６】
メモリセルアレイ２３は、１以上のブロックを備える。各ブロックは、不揮発性のメモリセル（メモリセルトランジスタＭＴ）の集合体であり、各メモリセルは、ロウ及びカラムに対応付けられている。メモリセルアレイ２３は、メモリコントローラ１０から与えられたデータを記憶する。
【００２７】
ロウデコーダ２２２は、アクセス対象のブロックを選択し、更に選択したブロックにおけるロウ方向を選択する。
【００２８】
ドライバ回路２２１は、選択されたブロックに対して、ロウデコーダ２２２を介して電圧を供給する。
【００２９】
カラムモジュール２４は、たとえばセンスアンプと複数のラッチ回路よりなるデータラッチとを含んで構成される。このカラムモジュール２４は、ライト動作においては、メモリコントローラ１０から受信したライトデータＤＡＴをメモリセルアレイ２３に転送する。また、カラムモジュール２４は、リード動作においては、メモリセルアレイ２３から読み出されたデータをセンスし、必要な演算を行う。そして、カラムモジュール２４は、得られたデータＤＡＴをメモリコントローラ１０に出力する。
【００３０】
アドレスレジスタ２１３は、メモリコントローラ１０から受信したアドレスＡＤＤを保持する。コマンドレジスタ２１２は、メモリコントローラ１０から受信したコマンドＣＭＤを保持する。
【００３１】
シーケンサ２１１は、コマンドレジスタ２１２に保持されたコマンドＣＭＤに基づき、不揮発性メモリ２０全体の動作を制御する。
【００３２】
温度センサ２５は、常時、定期的又は必要に応じて、メモリセルアレイ２３周辺の温度を検出し、検出された温度を示す信号ＴＥＭＰをメモリコントローラ１０へ出力する。
【００３３】
不揮発性メモリ２０では、一般に、ページと呼ばれるデータ単位で、書込み及び読出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。各メモリセルが１ビットを格納するＳＬＣ（Single Level Cell）である場合は、１つのメモリセルグループが１ページに対応する。各メモリセルが、２ビットを格納するＭＬＣ（Multiple Level Cell）や３ビットを格納するＴＬＣ（Triple Level Cell）や４ビットを格納するＱＬＣ（Quad Level Cell）など、複数のビットを格納する場合は、１つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続されるとともにビット線にも接続される。したがって、個々のメモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００３４】
ここで、シーケンサ２１１が実行するリード動作には、リード時間と信頼性とが異なる複数のリード動作が存在する。本説明では、シーケンサ２１１が実行するリード動作として、ＦＡＳＴリードと、ノーマルリードと、リトライシフトリードと、隣接ワードライン補償リードと、トラッキングリードとを例示する。メモリコントローラ１０は、予め設定されたリードシーケンスに従い、シーケンサ２１１に対してこれらの動作を選択的に順次実行する指示を出力する。
【００３５】
ここで、ノーマルリードとは、読出し時にワードラインに印加する読出し電圧（リードレベルともいう）として予め設定しておいた基準のリードレベルを用いる通常のリード動作である。なお、使用する基準のリードレベルが１つであるノーマルリードをシングルレベルリードともいい、複数であるノーマルリードをマルチレベルリードともいう。
ＦＡＳＴリードとは、例えばノーマルリードよりもリードレベルの印加時間等を短くすることでリード時間を短縮したリード動作である。
リトライシフトリードとは、例えば、ＦＡＳＴリードやノーマルリード等で目的のデータを復元できなかった場合に実行されるリード動作であり、基準のリードレベルから高電圧側又は低電圧側にシフトしたリードレベルを用いたリード動作である。
隣接ワードライン補償リードとは、例えば読出し対象のメモリセルから読み出した値をワードラインの配列方向に位置する隣接メモリセルから読み出した値に基づいて選択又は補正するリード動作である。
トラッキングリードとは、例えば、リードレベルを所定の刻み幅でシフトしながらシングルレベルリードを複数回実行することで、該当ページに含まれる複数のメモリセルにプログラムされた閾値電圧の分布のヒストグラム（閾値電圧分布）を生成し、生成した閾値電圧分布に基づいて補正したリードレベルを用いて読出しを実行するリード動作である。なお、トラッキングリードには、メモリコントローラ１０からの制御に従って実行されるリード方式と、メモリコントローラ１０からの制御に依らずに不揮発性メモリ２０内で実行されるリード方式（Self-Adjusting Read又はOn-Chip Tracking Readともいう）とが存在するが、本実施形態では何れのリード方式であってもよい。
【００３６】
なお、本実施形態で例示するリードシーケンスでは、ＦＡＳＴリード、ノーマルリード、リトライシフトリード、隣接ワードライン補償リード、トラッキングリードの順番でリード動作が実行される場合を例示するが、このような構成に限定されない。例えば、ノーマルリードからリトライシフトリードまでの流れに代えて、リードレベルのシフト量が異なる複数回のリトライシフトリードが順次実行されてもよい。その場合、１回目のリトライシフトリードには、直前の成功したリード動作で学習しておいたシフト量が用いられてもよい。また、以下の説明では、リードシーケンスにおける２回目以降のリード動作のシーケンスを、リトライリードシーケンスと称する。
【００３７】
ここで、上記したリード動作のうち、ＦＡＳＴリードと、ノーマルリードと、隣接ワードライン補償リードとについて、それぞれのリード時間とＢＥＲ（Bit Error Rate）との関係を説明する。図２は、リード時間とＢＥＲとの関係例を示す図である。図２において、横軸はＢＥＲを示し、縦軸はリード時間を示している。また、黒塗りの点ＰＡ１〜ＰＡ３は、あるページＡに対してそれぞれのリード動作を実行した際の関係を示し、白抜きの点ＰＢ１〜ＰＢ３は、ページＡとは異なるページＢに対してそれぞれのリード動作を実行した際の関係を示す。さらに、ＰＡ１及びＰＢ１はＦＡＳＴリードの関係を示し、ＰＡ２及びＰＢ２はノーマルリードの関係を示し、ＰＡ３及びＰＢ３は隣接ワードライン補償リードの関係を示す。
【００３８】
図２に示すように、ＦＡＳＴリード、ノーマルリード及び隣接ワードライン補償リードの中では、ＦＡＳＴリードが最もリード時間が短く、隣接ワードライン補償リードが最もリード時間が長い。一方、ＢＥＲに関しては、隣接ワードライン補償リードが最もＢＥＲが低く、ＦＡＳＴリードが最もＢＥＲが高い。これは、隣接ワードライン補償リードの方が、ＦＡＳＴリードよりも信頼性が高いことを示している。
【００３９】
そこで、図２に示すように、ＥＣＣ部１３の誤り訂正能力をある一定の訂正能力と仮定する。なお、誤り訂正能力とは、例えば、リードデータに含まれるエラービットを訂正できる個数である。このような仮定の下では、ページＡに関しては、ＦＡＳＴリード、ノーマルリード及び隣接ワードライン補償リードの何れで得られたリードデータであってもＥＣＣ部１３で誤り訂正できる一方、ページＢに関しては、隣接ワードライン補償リードで得られたリードデータは誤り訂正できるものの、ＦＡＳＴリードとノーマルリードとで得られたリードデータは誤り訂正できないこととなる。
【００４０】
そのような場合に、ＦＡＳＴリードから順にリード動作を実行するリードシーケンスを実行すると、ページＡに関しては、最初のＦＡＳＴリードで得られたリードデータを誤り訂正できる可能性が高いものの、ページＢに関しては、ＦＡＳＴリードとノーマルリードとで得られたリードデータを誤り訂正できる可能性が低い。その場合、ＦＡＳＴリードとノーマルリードとのリード動作が無駄となり、レイテンシを大きくする要因となる。
【００４１】
そこで本実施形態では、それぞれのページに対してリード動作を実行したと仮定した場合に推定される信頼性に基づいて、リードシーケンスにおける最初に実行するリード動作を選択的に切り替える。これにより、本実施形態では、信頼性を低下させることなくレイテンシを小さくすることが可能なメモリシステム、その制御方法及びプログラムを実現することが可能となる。
【００４２】
図３は、本実施形態に係るメモリコントローラのリード動作を実行する構成に着目した機能ブロック図である。なお、図３では、説明の明確化のため、不揮発性メモリ２０の構成を簡略化している。
【００４３】
図３に示すように、本実施形態に係るメモリコントローラ１０は、リード動作時の構成として、例えば、リード要求受付部１０１と、コマンド発行部１０２と、特性情報記憶部１０３と、信頼性推定部１０４と、誤り訂正能力管理部１０５と、リード方式選択部１０６とを備える。これら、リード要求受付部１０１、コマンド発行部１０２、特性情報記憶部１０３、信頼性推定部１０４、誤り訂正能力管理部１０５及びリード方式選択部１０６は、図１に示すメモリコントローラ１０の各部１１〜１７によって実現される。
【００４４】
リード要求受付部１０１は、例えばホスト装置３０から入力されたリード要求を受け付ける。ただし、ホスト装置３０からのリード要求に限定されず、例えばガベージコレクションやリフレッシュやパトロールリードなどのリード動作を伴うイベントが発生した際には、そのイベントの実行に必要となるリード動作の実行要求（以下、これらもリード要求という）を制御部１１等から受け付ける。
【００４５】
リード要求を受け付けると、リード要求受付部１０１は、コマンド発行部１０２へリード・コマンドの発行を指示すると共に、特性情報記憶部１０３及び誤り訂正能力管理部１０５へ、リード要求で指定された論理アドレスに対応する物理アドレスを入力する。これに対し、特性情報記憶部１０３は、入力された物理アドレスで指定されるページに対して各リード動作を実行したと仮定した場合に推定される信頼性を推定するのに十分な情報（以下、特性情報という）を信頼性推定部１０４へ出力する。なお、信頼性が推定されるリード動作には、少なくともＦＡＳＴリードが含まれていればよく、ＦＡＳＴリード以外の他のリード動作もスキップ対象とする場合には、スキップ対象とする他のリード動作が含まれていてもよい。
【００４６】
一方、誤り訂正能力管理部１０５は、入力された物理アドレスで指定されるページに関して制御部１１がＥＣＣ部１３に指定した誤り訂正符号又はその訂正能力を示す情報（以下、訂正能力情報という）をリード方式選択部１０６へ出力する。
【００４７】
特性情報の例としては、例えば、物理位置、書込みモード、ページ種別、エラー履歴、経過時間（データリテンション：ＤＲ）、消去回数、書込み状態（プログラムディスターブ：ＰＤ）、読出し回数（リードディスターブ：ＲＤ）、温度、温度交差等に関する情報を挙げることができる。
【００４８】
「物理位置」とは、リード要求で指定された論理アドレスに対応する物理アドレスから特定される情報であり、例えばメモリセルアレイ２３が３次元ＮＡＮＤ構造を有する場合に読出し対象のページが積層構造中の浅い層に位置するか深い層に位置するかを示す情報である。
「書込みモード」とは、リード対象データがＳＬＣモード、ＭＬＣモード、ＴＬＣモード、ＱＬＣモード等のうちのいずれの書込みモードでメモリセルに書き込まれたかを示す情報である。なお、ＳＬＣモードとは、１つのメモリセルに１ビットのデータを書き込む書込みモードであり、ＭＬＣモードとは、１つのメモリセルに２ビットのデータを書き込む書込みモードであり、ＴＬＣモードとは、１つのメモリセルに３ビットのデータを書き込む書込みモードであり、ＱＬＣモードとは、１つのメモリセルに４ビットのデータを書き込む書込みモードである。
「ページ種別」とは、リード対象データが格納されているページを特定する情報である。例えばメモリセルアレイ２３を構成する各メモリセルがＴＬＣの場合には、ＬＯＷＥＲページ、ＭＩＤＤＬＥページ及びＵＰＰＥＲページのうちのいずれであるかを特定するための情報となる。
「エラー履歴」とは、過去に該当の物理アドレスから読み出したデータに含まれていたエラーに関する情報であり、例えばＦＢＣ（Fail Bit Count）やＢＥＲや誤り訂正に成功した頻度及び失敗した頻度などの情報である。このエラー履歴は、例えば過去に該当の物理アドレスから読み出したデータに対してＥＣＣ部１３が実行した復号の結果として得ることができる。なお、ＦＢＣとは、例えば、ＥＣＣフレーム内（あるいはページ内）に含まれる誤りビットの数である。
「経過時間（データリテンション：ＤＲ）」とは、該当の物理アドレスに対してデータの書込みを実行してからの経過時間である。なお、経過時間は、実時間であってもよいし、温度やメモリセルの疲弊度を考慮して実時間を変換することで得られた値であってもよい。たとえば、放置状態における温度が高いほうが正味の経過時間は長く、また、メモリセルの疲弊度が大きいほうが正味の経過時間は長い。
「消去回数」とは、該当の物理アドレスで指定されるページを含むブロックに対して過去に実行された消去動作の累積回数であって、各ブロックの疲弊度を表す指標である。なお、ブロック単位に限らず、ページ単位又はメモリセル単位で消去回数が管理されてもよい。また、各ブロックの疲弊度は、消去回数のほかに、ある消去動作から次の消去動作までの時間間隔や温度等も考慮した値として表されてもよい。たとえば、書き込み・消去動作を行ったときの温度が低いほうが正味の疲弊度が高く、また、ある消去動作から次の消去動作までの時間間隔が短いほうが正味の疲弊度は高い。
「書込み状態（プログラムディスターブ：ＰＤ）」とは、該当の物理アドレスで指定されるページを含むブロックに対するデータの書き込みが完了しているか否かを示す情報である。ブロックに対する書込みが途中である場合、当該ブロックの例えば最終書込みページ付近からのデータの読出しの信頼性が低下する場合がある。なお、「書込み状態」には、リード対象のページを含むブロック全体の書込み状態に代えて、リード対象のワードラインに隣接する１つ以上のワードラインの書込み状態が用いられてもよい。
「読出し回数（リードディスターブ：ＲＤ）」とは、該当の物理アドレスで指定されるページを含むブロックに対して該当データを書き込んだ後に実行された読出し回数である。
「温度」とは、温度センサ２５で検出されたメモリセルアレイ２３又はこの付近の現在又は最新の温度を示す情報である。
「温度交差」とは、読出し対象のデータを書き込んだ際の温度と温度センサ２５で検出された現在又は最新の温度との差を示す情報である。
【００４９】
特性情報記憶部１０３は、リード要求受付部１０１からの指示に従い、上記した情報のうちの１つ以上を特性情報として信頼性推定部１０４へ出力する。これに対し、信頼性推定部１０４は、特性情報記憶部１０３から入力された特性情報の全て又は一部を使用して、リード要求で指定された論理アドレスに対応するページに対して各リード動作を実行したと仮定した場合に推定される信頼性を示す指標（以下、信頼性指標という）を推定し、推定した信頼性指標をリード方式選択部１０６へ出力する。例えば、信頼性推定部１０４は、入力された特性情報の全て又は一部を使用して、読み出されるデータのＦＢＣを推定し、この推定したＦＢＣ（以下、推定ＦＢＣという）を信頼性指標としてリード方式選択部１０６へ出力する。ただし、信頼性指標は、ＦＢＣなどの数値化された情報ではなく、例えば信頼性が「高い」と「低い」との２つの段階を区別する情報など、種々変更することが可能である。
【００５０】
一方、誤り訂正能力管理部１０５は、各ページに格納されているデータに対して制御部１１が決定してＥＣＣ部１３が適用した符号化方式又はその訂正能力を管理している。例えば制御部１１は、書込み対象のデータを符号化する符号化方式を決定すると、決定した符号化方式及び／又はその訂正能力を示す情報（以下、訂正能力情報という）と、この書込み対象データの格納位置（ページ位置）を示す物理アドレスとを、逐次、誤り訂正能力管理部１０５に通知する。誤り訂正能力管理部１０５は、制御部１１から通知された物理アドレスと訂正能力情報とを対応付けて管理する。そして、誤り訂正能力管理部１０５は、リード要求受付部１０１からの物理アドレスの入力に応じて、この物理アドレスに対応付けられた訂正能力情報をリード方式選択部１０６へ出力する。なお、符号化方式の区分けには、採用する誤り訂正符号の違いに基づく区分けの他に、符号化率の違いに基づく区分けなど、種々の要素に基づいた区分けを適用することができる。
【００５１】
リード方式選択部１０６は、信頼性推定部１０４から読出し対象のページに関する信頼性指標（推定ＦＢＣ）が入力されると、この信頼性指標（推定ＦＢＣ）に基づいて、リードシーケンスにおいて最初に実行するリード動作を選択する。例えばリード方式選択部１０６は、推定ＦＢＣが高い場合、すなわち、該当ページに対して例えばＦＡＳＴリードを実行した際の信頼性が低いと推定されている場合、信頼性の低いＦＡＳＴリードをスキップし、最初に実行するリード動作としてノーマルリードを選択する。一方、推定ＦＢＣが低い場合、すなわち、該当ページに対して例えばＦＡＳＴリードを実行した際の信頼性が高いと推定されている場合、最初に実行するリード動作としてＦＡＳＴリードを選択する。
【００５２】
また、リード方式選択部１０６は、信頼性推定部１０４から入力された信頼性指標（推定ＦＢＣ）に加え、又は、この信頼性指標（推定ＦＢＣ）とは別に、誤り訂正能力管理部１０５から入力された訂正能力情報に基づいて、該当ページに対するリード動作を選択してもよい。例えば、該当ページに対して適用されている符号化方式の誤り訂正能力が低い場合、信頼性の低いリード動作では読み出したデータの誤り訂正に失敗する可能性が高い。一方、該当ページに対して適用されている符号化方式の誤り訂正能力が高い場合、信頼性が低いリード動作であっても読み出したデータの誤り訂正に成功する可能性が高い。
【００５３】
そこで、リード方式選択部１０６は、信頼性推定部１０４から入力された信頼性指標（推定ＦＢＣ）と、誤り訂正能力管理部１０５から入力された訂正能力情報とのいずれか、若しくは、それらの組み合わせに基づいて、最初に実行するリード動作を選択してもよい。
【００５４】
以上のようにしてリードシーケンスにおいて最初に実行するリード動作を選択すると、リード方式選択部１０６は、この選択したリード動作をコマンド発行部１０２へ通知する。
【００５５】
コマンド発行部１０２は、リード方式選択部１０６で選択されたリード動作を不揮発性メモリ２０に実行させるためのリード・コマンドを発行し、発行したリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。これに対し、コマンド処理部２１は、入力されたリード・コマンドに従い、駆動部２２とカラムモジュール２４のセンスアンプ２４１及びデータラッチ２４２とを駆動することで、メモリセルアレイ２３における読出し対象の物理アドレスから目的のデータを読み出す。読み出されたデータは、メモリＩ／Ｆ１６（図１参照）を介してＥＣＣ部１３に転送されて誤り訂正が実行される。
【００５６】
なお、コマンド発行部１０２は、同一のリード要求に対して次に指定すべきリード動作を特定するための情報を管理する。例えば、コマンド発行部１０２は、同一のリード要求に対して何回目のリード・コマンドの発行であるかを、不図示のカウンタを用いて管理する。又は、コマンド発行部１０２は、今回のリード・コマンドの発行が同一のリード要求に対して最初のリード・コマンドの発行であるか否か、及び、前回のリード・コマンドで指定したリード動作が予め設定されているリードシーケンスにおけるどのリード動作であったか、若しくは、何番目のリード動作であったかを特定するための情報を管理する。従って、コマンド発行部１０２は、同一のリード要求に対して最初のリード・コマンドの発行であれば、リード方式選択部１０６で選択されたリード動作を指定するリード・コマンドを発行し、２回目以降のリード・コマンドの発行であれば、リードシーケンスにおいて次に実行すべきリード動作を指定するリード・コマンドを発行する。そして、コマンド発行部１０２は、リード・コマンドに応じて不揮発性メモリ２０から転送されたリードデータに対するＥＣＣ部１３による復号が成功した場合、同一のリード要求に対して次に指定すべきリード動作を特定するための情報をリセットして、次のリード要求の受け付けに備える。
【００５７】
ここで、上記で例示した特性情報のうち、物理位置について説明する。例えばメモリセルアレイ２３が３次元ＮＡＮＤ構造を有するメモリチップである場合に、物理位置を考慮して信頼性を評価することの効果は大きいと考えられる。例えばメモリセルアレイ２３が図４に示すような１６層の３次元ＮＡＮＤ構造を有する場合、下層付近に位置する例えばワードラインＷＬ０〜ＷＬ１に対するリード動作を実行した際の信頼性は、上層付近に位置する例えばワードラインＷＬ１４〜ＷＬ１５に対するリード動作を実行した際の信頼性よりも低くなる場合がある。同様に、図５に示すように、例えばメモリセルアレイ２３が１６層が２段に重ねられた３次元ＮＡＮＤ構造を有する場合、それぞれの段の下層付近に位置する例えばワードラインＷＬ０〜ＷＬ１及びＷＬ１６〜ＷＬ１７に対するリード動作を実行した際の信頼性は、それぞれの段の上層付近に位置する例えばワードラインＷＬ１４〜ＷＬ１５及びＷＬ３０〜ＷＬ３１に対するリード動作を実行した際の信頼性よりも低くなる場合がある。なお、図４及び図５において、各ＢＬはビットラインを示し、ＷＬ０〜ＷＬ１５はワードラインを示し、２３１は半導体基板を示し、各２３２、各２３２ａ及び各２３２ｂは層間を電気的に接続するビア配線を示し、２３３、２３３Ａ及び２３３Ｂは１６層を１つの単位とした段（Ｔｉｅｒ）を示している。また、本説明では、それぞれの段の上層側を浅いとし、下層側を深いとする。したがって、本説明では、それぞれの段の最下層が最深層となり、それぞれの段の最上層が最浅層となる。
【００５８】
そこで、本実施形態に係る信頼性推定部１０４は、メモリセルアレイ２３が３次元ＮＡＮＤ構造を有する場合、「物理位置」がそれぞれの段２３３／２３３Ａ／２３３Ｂの下層付近に位置するワードライン（例えばＷＬ０〜ＷＬ１）を示している場合、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００５９】
また、リード対象データの書込みに使用した書込みモードによっても、リード動作を実行した際の信頼性が異なる場合がある。例えば、図６に示すように、ＭＬＣモードでデータが記録されたメモリセルの４つの閾値電圧分布（Ｅｒ〜Ｃステート）それぞれの間の３つのマージンＭ＿ｖｔｈ２１〜Ｍ＿ｖｔｈ２３（図６（ｂ）参照）はいずれも、ＳＬＣモードでデータが記録されたメモリセルの２つの閾値電圧分布（Ｅｒ及びＡステート）間のマージンＭ＿ｖｔｈ１（図６（ａ）参照）よりも小さい。そのため、ＭＬＣモードでデータが記録されたページに対する読出しの方が、ＳＬＣモードでデータが記録されたページに対する読出しよりもＢＥＲが悪化し易い傾向にある。
【００６０】
同様に、ＴＬＣモードでデータが記録されたメモリセルの８つの閾値電圧分布（Ｅｒ〜Ｇステート）それぞれの間の７つのマージンＭ＿ｖｔｈ３１〜Ｍ＿ｖｔｈ３７（図６（ｃ）参照）はいずれも、ＭＬＣモードの３つのマージンＭ＿ｖｔｈ２１〜Ｍ＿ｖｔｈ２３（図６（ｂ）参照）よりも小さい。そのため、ＴＬＣモードでデータが記録されたページに対する読出しは、ＭＬＣモードよりも更にＢＥＲが悪化し易い傾向にある。そこで、本実施形態に係る信頼性推定部１０４は、リード対象データを書き込んだ際の「書込みモード」に応じて、異なる信頼性を示す信頼性指標を生成するように動作してもよい。
【００６１】
さらに、同一のワードラインに対するリード動作であっても、１つのメモリセルグループが複数ページに対応している場合、それぞれのページに対するリード動作を実行した際の信頼性が異なる場合がある。これを、メモリセルグループがＭＬＣとＴＬＣとＱＬＣとのそれぞれで構成されている場合を例に説明する。図７は、ＭＬＣの閾値電圧分布の例を示す図であり、図８は、図７に例示したＭＬＣをＬＯＷＥＲページとＵＰＰＥＲページとの２つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との一例を示す図である。図９は、ＴＬＣの閾値電圧分布の一例を示す図であり、図１０は、図９に例示したＴＬＣをＬＯＷＥＲページとＭＩＤＤＬＥページとＵＰＰＥＲページとの３つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との一例を示す図である。図１１は、ＴＬＣの閾値電圧分布の他の例を示す図であり、図１２は、図１１に例示したＴＬＣをＬＯＷＥＲページとＭＩＤＤＬＥページとＵＰＰＥＲページとの３つのページに対応させた場合のそれぞれのページに割り当てられるリードレベルとその数との一例を示す図である。
【００６２】
図７及び図８に示すように、ＭＬＣの４つの閾値電圧分布（Ｅｒ〜Ｃステート）を読み分けるためにＬＯＷＥＲページ／ＵＰＰＥＲページそれぞれに設定されたリードレベルの数が２／１である場合、１つのリードレベルＶＢが設定されたＵＰＰＥＲページよりも、２つのリードレベルＶＡ及びＶＣが設定されたＬＯＷＥＲページの方が、リード動作を実行した際の信頼性が低い傾向がある。
【００６３】
同様に、図９及び図１０に示すように、ＴＬＣの８つの閾値電圧分布（Ｅｒ〜Ｇステート）を読み分けるためにＬＯＷＥＲページ／ＭＩＤＤＬＥページ／ＵＰＰＥＲページそれぞれに設定されたリードレベルの数が２／３／２である場合（以下、２／３／２コーディングのＴＬＣモードである場合という）、２つのリードレベルＶＡ及びＶＥ又はＶＣ及びＶＧが設定されたＬＯＷＥＲページ及びＵＰＰＥＲページよりも、３つのリードレベルＶＢ、ＶＤ及びＶＦが設定されたＭＩＤＤＬＥページの方が、リード動作を実行した際の信頼性が低い傾向がある。
【００６４】
また、図１１及び図１２に示すように、ＴＬＣの８つの閾値電圧分布（Ｅｒ〜Ｇステート）を読み分けるためにＬＯＷＥＲページ／ＭＩＤＤＬＥページ／ＵＰＰＥＲページそれぞれに設定されたリードレベルの数が１／３／３である場合（以下、１／３／３コーディングのＴＬＣモードという）も同様に、１つのリードレベルＶＤが設定されたＬＯＷＥＲページよりも、３つのリードレベルＶＡ、ＶＣ及びＶＦ又はＶＢ、ＶＥ及びＶＧがそれぞれ設定されたＭＩＤＤＬＥページ及びＵＰＰＥＲページの方が、リード動作を実行した際の信頼性が低い傾向がある。
【００６５】
そこで、本実施形態に係る信頼性推定部１０４は、「ページ種別」が他のページよりも多くのリードレベルが設定されたページを示している場合、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００６６】
さらにまた、最も電圧値が低い閾値電圧分布（Ｅｒステートともいう）と、Ｅｒステートの次に電圧値が低い閾値電圧分布（Ａステートともいう）との読み分けはエラーを生じさせ易い傾向にある。そこで、本実施形態に係る信頼性推定部１０４は、「ページ種別」がＥｒステートとＡステートとの境界に位置するリードレベルが設定されたページを示している場合、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００６７】
一方で、電圧値が高い閾値電圧分布は、データリテンションの影響により、低電圧側へシフトし易い。これは、高電圧側の閾値電圧分布間のギャップが、低電圧側の閾値電圧分布間のギャップと比較して、データリテンションの影響により狭くなり易いことを意味している。そのため、これらの閾値電圧分布の読み分けはエラーを生じさせ易い傾向にある。そこで、本実施形態に係る信頼性推定部１０４は、「書込みモード」から特定される最も電圧値が高い閾値電圧分布とこれの次に電圧値が高い閾値電圧分布との境界に位置するリードレベルが設定されたページに対するリード動作であることが「書込みモード」及び「ページ種別」から特定された場合、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００６８】
これを図６（ｂ）又は（ｃ）並びに図７〜図１２に示したＭＬＣ又はＴＬＣを例に説明すると、図６（ｂ）並びに図７及び図８に例示したＭＬＣでは、電圧値が高くなるほど、データリテンションの影響により、ステート間のギャップが狭くなっている。そのため、例えば高電圧側のＣステートとＢステートとの読み分けは、低電圧側のＥｒステートとＡステートとの読み分けよりも、エラーを生じさせ易い傾向にある。そこで、信頼性推定部１０４は、「書込みモード」がＭＬＣモードを示し、「ページ種別」が高電圧側のステート間を読み分けるためのリードレベルが設定されたページ（例えば、ＣステートとＢステートとを読み分けるためのリードレベルＶＣが設定されたＬＯＷＥＲページ）を示している場合、そのリード動作に対しては、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００６９】
同様に、図６（ｃ）並びに図９及び図１０又は図１１及び図１２に例示したＴＬＣでも、電圧値が高くなるほど、データリテンションの影響により、ステート間のギャップが狭くなっている。そこで、信頼性推定部１０４は、「書込みモード」がＴＬＣモードを示し、「ページ種別」が高電圧側のステート間を読み分けるためのリードレベルが設定されたページ（例えば、ＧステートとＦステートとを読み分けるためのリードレベルＶＧが設定されたＵＰＰＥＲページ）を示している場合、そのリード動作に対しては、信頼性が低いことを示す信頼性指標を生成するように動作してもよい。
【００７０】
次に、本実施形態に係るリード動作について、図面を参照して詳細に説明する。図１３は、本実施形態に係るリード動作の概略例を示すシーケンス図である。なお、図１３及び以下の説明では、ホスト装置３０からの要求に応じてリード動作を実行する場合（以下、ホストリードともいう）を例示するが、それに限らず、ガベージコレクションやリフレッシュやパトロールリード等のリード動作を伴うイベントが発生した場合も同様である。また、図１３及び以下の説明では、メモリセルから硬判定値のデータを読み出す硬判定読出し（ハードビットリードともいう）を例示するが、それに限らず、メモリセルから軟判定値のデータを読み出す軟判定読出し（ソフトビットリードともいう）に対しても同様に適用することが可能である。さらに、図１３及び以下の説明では、基本動作として、リード時間の短い順（例えばＦＡＳＴリード、ノーマルリード、リトライシフトリード、隣接ワードライン補償リード及びトラッキングリードの順）に、読出しに成功するまでリード動作を実行するリードシーケンスを例示するが、このようなリードシーケンスに限定されず、種々のリードシーケンスを適用することが可能である。
【００７１】
図１３に示す動作例では、まず、ホスト装置３０からのリード要求（Ｓ１１）がメモリコントローラ１０のリード要求受付部１０１によって受け付けられる（Ｓ２１）。従来では、リード要求を受け付けたリード要求受付部１０１は、リード要求に含まれる論理アドレスを所定のアドレス変換テーブルを用いて物理アドレスに変換し、この物理アドレスをコマンド発行部１０２に入力する。コマンド発行部１０２は、物理アドレスが入力されると、所定のリードシーケンスに則ったリード動作と、リード対象の物理アドレスとを指定するリード・コマンドを不揮発性メモリ２０内のコマンド処理部２１へ発行する。従って、リード要求に対して最初に発行するリード・コマンドでは、リードシーケンスにおいて最初に実行するものと設定されているＦＡＳＴリードが指定される。
【００７２】
これに対し、本実施形態では、リード要求を受け付けたリード要求受付部１０１は、リード要求に含まれる論理アドレスを所定のアドレス変換テーブルを用いて物理アドレスに変換し、これにより得られた物理アドレスを特性情報記憶部１０３に入力すると共に、リード・コマンドの発行をコマンド発行部１０２へ指示する。これに対し、特性情報記憶部１０３が、物理アドレスから特定される特性情報を信頼性推定部１０４へ入力する。信頼性推定部１０４は、入力された特性情報の一部又は全部を使用することで、該当の物理アドレスから読み出されるデータに関する信頼性指標（図１３では推定ＦＢＣ）を生成し（Ｓ２２）、生成した信頼性指標をリード方式選択部１０６に入力する。
【００７３】
なお、ステップＳ２１でリード要求を受け付けたリード要求受付部１０１が、特性情報記憶部１０３に加え、又は、特性情報記憶部１０３に代えて、特定した物理アドレスを誤り訂正能力管理部１０５に入力してもよい。その場合、誤り訂正能力管理部１０５は、物理アドレスから特定される訂正能力情報をリード方式選択部１０６に入力する。
【００７４】
次に、リード方式選択部１０６が、入力された信頼性指標及び／又は訂正能力情報に基づいて、ＦＡＳＴリードをスキップするか否かを判定する。本例では、リード方式選択部１０６は、推定ＦＢＣが予め設定しておいた第１閾値以上であるか否かを判定する（Ｓ２３）。
【００７５】
推定ＦＢＣが第１閾値未満である場合（Ｓ２３；ＮＯ）、リード方式選択部１０６は、リード動作としてＦＡＳＴリードを選択し、この選択結果をコマンド発行部１０２へ通知する。コマンド発行部１０２は、リード要求受付部１０１からの指示に対して、ＦＡＳＴリードを実行するリード・コマンドを発行し（Ｓ２５）、このリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。その結果、ホスト装置３０からのリード要求に対して最初に実行されるリード動作がＦＡＳＴリードとなる。コマンド処理部２１は、入力されたＦＡＳＴリードのリード・コマンドに従いＦＡＳＴリードを実行する（Ｓ５１）。これにより得られたリードデータは、データラッチ２４２からメモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送される。ＥＣＣ部１３は、転送されたリードデータに対する誤り訂正を実行する（Ｓ２６）。この誤り訂正に成功した場合（Ｓ２７；ＹＥＳ）、本動作は、ステップＳ４０へ進む。一方、誤り訂正に失敗した場合（Ｓ２７；ＮＯ）、本動作は、ステップＳ２８へ進む。
【００７６】
また、ステップＳ２３の判定の結果、推定ＦＢＣが第１閾値以上である場合（Ｓ２３；ＹＥＳ）、リード方式選択部１０６は、ＦＡＳＴリードをスキップするよう、ステップＳ２４へ進む。それにより、リードシーケンスにおいて最初に実行するものと設定されているＦＡＳＴリードの実行がスキップされる。ステップＳ２４では、リード方式選択部１０６が、入力された信頼性指標及び／又は訂正能力情報に基づいて、次のリード動作（本説明ではノーマルリード）をスキップするか否かを判定する。本例では、リード方式選択部１０６は、推定ＦＢＣが予め設定しておいた第２閾値以上であるか否かを判定する（Ｓ２４）。なお、ノーマルリードをリードシーケンスに含めず、ＦＡＳＴリードの次にリトライシフトリードが実行されるように構成されていてもよい。
【００７７】
ステップＳ２６の誤り訂正に失敗した場合（Ｓ２７；ＮＯ）、又は、推定ＦＢＣが第２閾値未満である場合（Ｓ２４；ＮＯ）、リード方式選択部１０６は、リード動作としてノーマルリードを選択し、この選択結果をコマンド発行部１０２へ通知する。コマンド発行部１０２は、リード要求受付部１０１からの指示に対してノーマルリードを実行するリード・コマンドを発行し（Ｓ２８）、このリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。コマンド処理部２１は、入力されたノーマルリードのリード・コマンドに従いノーマルリードを実行する（Ｓ５２）。これにより得られたリードデータは、データラッチ２４２からメモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送される。ＥＣＣ部１３は、転送されたリードデータに対する誤り訂正を実行する（Ｓ２９）。この誤り訂正に成功した場合（Ｓ３０；ＹＥＳ）、本動作は、ステップＳ４０へ進む。一方、誤り訂正に失敗した場合（Ｓ３０；ＮＯ）、本動作は、ステップＳ３１へ進む。
【００７８】
また、ステップＳ２９の誤り訂正に失敗した場合（Ｓ３０；ＮＯ）、又は、推定ＦＢＣが第２閾値以上である場合（Ｓ２４；ＹＥＳ）、リード方式選択部１０６は、リード動作としてリトライシフトリードを選択し、この選択結果をコマンド発行部１０２へ通知する。コマンド発行部１０２は、リード要求受付部１０１からの指示に対してシフトリードを実行するリード・コマンドを発行し（Ｓ３１）、このリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。コマンド処理部２１は、入力されたシフトリードのリード・コマンドに従いシフトリードを実行する（Ｓ５３）。これにより得られたリードデータは、データラッチ２４２からメモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送される。ＥＣＣ部１３は、転送されたリードデータに対する誤り訂正を実行する（Ｓ３２）。この誤り訂正に成功した場合（Ｓ３３；ＹＥＳ）、本動作は、ステップＳ４０へ進む。一方、誤り訂正に失敗した場合（Ｓ３３；ＮＯ）、本動作は、ステップＳ３４へ進む。なお、リトライシフトリードは、１回に限らず、シフト値を変えながら複数回実行されてもよい。すなわち、ステップＳ３２の誤り訂正に失敗した場合（Ｓ３３；ＮＯ）、コマンド発行部１０２が、シフト値を変更したシフトリードを実行するリード・コマンドの発行（Ｓ３１）を２以上の所定回数、繰返し実行し、それでもステップＳ３２の誤り訂正に失敗した場合（Ｓ３３；ＮＯ）に、本動作がステップＳ３４へ進むように構成されてもよい。
【００７９】
ステップＳ３４では、コマンド発行部１０２は、ステップＳ３２の誤り訂正に失敗した場合の制御部１１からの指示に応じて次のリード動作である隣接ワードライン補償リードを実行するリード・コマンドを発行し（Ｓ３４）、このリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。コマンド処理部２１は、入力された隣接ワードライン補償リードのリード・コマンドに従い隣接ワードライン補償リードを実行する（Ｓ５４）。これにより得られたリードデータは、データラッチ２４２からメモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送される。ＥＣＣ部１３は、転送されたリードデータに対する誤り訂正を実行する（Ｓ３５）。この誤り訂正に成功した場合（Ｓ３６；ＹＥＳ）、本動作は、ステップＳ４０へ進む。一方、誤り訂正に失敗した場合（Ｓ３６；ＮＯ）、本動作は、ステップＳ３７へ進む。
【００８０】
ステップＳ３７では、コマンド発行部１０２は、ステップＳ３５の誤り訂正に失敗した場合の制御部１１からの指示に応じて次のリード動作であるトラッキングリードを実行するリード・コマンドを発行し（Ｓ３７）、このリード・コマンドを不揮発性メモリ２０のコマンド処理部２１へ入力する。コマンド処理部２１は、入力されたトラッキングリードのリード・コマンドに従いトラッキングリードを実行する（Ｓ５５）。これにより得られたリードデータは、データラッチ２４２からメモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送される。ＥＣＣ部１３は、転送されたリードデータに対する誤り訂正を実行する（Ｓ３８）。この誤り訂正に成功した場合（Ｓ３９；ＹＥＳ）、本動作は、ステップＳ４０へ進む。一方、誤り訂正に失敗した場合（Ｓ３９；ＮＯ）、本動作は、ステップＳ４１へ進む。
【００８１】
ステップＳ４０では、制御部１１は、バッファメモリ１４に格納されている誤り訂正後のデータ（以下、訂正済みデータという）からオリジナルのデータ（ライトデータと同一）を復元し（Ｓ４０）、復元したデータをホスト装置３０へ転送する（Ｓ１２）。一方、ステップＳ４１では、例えば制御部１１がリード要求（Ｓ１１）に対するリード動作に失敗した（リードエラー）と判断し（Ｓ４１）、これがホスト装置３０へ通知される。これに対し、ホスト装置３０は、リードエラー時の処理を実行する（Ｓ１３）。
【００８２】
つづいて、図１３のステップＳ２５、Ｓ２８、Ｓ３１、Ｓ３４及びＳ３７で、コマンド発行部１０２から不揮発性メモリ２０のコマンド処理部２１へ出力されるコマンドについて説明する。図１４は、本実施形態に係るコマンドシーケンスの一例を示す図である。図１４に示すように、コマンド発行部１０２からコマンド処理部２１へ出力されるコマンドには、リード・コマンドＭ１０と、データ出力コマンドＭ２０とが含まれる。リード・コマンドＭ１０は、リード動作（例えばＦＡＳＴリード、ノーマルリード、シフトリード、隣接ワードライン補償リード及びトラッキングリードのうちのいずれか）を指定するプリフィックス“ＸＸ”と、該当する物理アドレスにおけるページ種別（例えばＬＯＷＥＲページ、ＭＩＤＤＬＥページ及びＵＰＰＥＲページのいずれか）の指定“ＰＳＣ（Page Select Command）”と、カラムアドレス“Ｃ１”、“Ｃ２”及びロウアドレス“Ｒ１”、“Ｒ２”、“Ｒ３”を指定するアドレス部Ｍ１１を含むリード・コマンド（“００ｈ”〜“３０ｈ”）とが含まれる。
【００８３】
したがって、本実施形態により、それぞれのリードシーケンスにおける最初のリード動作が変更された場合には、コマンド発行部１０２からコマンド処理部２１へ出力される最初のリード・コマンドＭ１０におけるプリフィックス“ＸＸ”が変更されることとなる。例えば、ＦＡＳＴリードを最初に実行する場合には、ＦＡＳＴリードを指定するプリフィックス“ＸＸ”を含むリード・コマンドＭ１０がコマンド発行部１０２からコマンド処理部２１へ最初に出力される。また、ＦＡＳＴリードをスキップしてノーマルリードを最初に実行する場合には、ノーマルリードを指定するプリフィックス“ＸＸ”を含むリード・コマンドＭ１０がコマンド発行部１０２からコマンド処理部２１へ最初に出力される。
【００８４】
なお、以上のようなリード・コマンドＭ１０に対し、コマンド処理部２１は、駆動部２２を制御してメモリセルアレイ２３の該当ページからデータを読み出すリード動作を実行する。このリード動作の実行中、不揮発性メモリ２０からメモリコントローラ１０へ入力されるレディ・ビジー信号ＲＢｎはビジー状態Ｂｓｙを示す。レディ・ビジー信号ＲＢｎがビジー状態Ｂｓｙを示している期間ｔＲは、実行中のリード動作に依って異なる。例えばＦＡＳＴリードはノーマルリードやシフトリードよりも期間ｔＲが短く、ノーマルリード及びシフトリードは隣接ワードライン補償リードよりも期間ｔＲが短く、隣接ワードライン補償リードはトラッキングリードよりも期間ｔＲが短い。
【００８５】
その後、レディ・ビジー信号ＲＢｎがレディ状態Ｒｄｙを示すと、コマンド発行部１０２は、データ出力コマンドＭ２０をコマンド処理部２１へ出力する。データ出力コマンドＭ２０には、カラムアドレス“Ｃ１”、“Ｃ２”及びロウアドレス“Ｒ１”、“Ｒ２”、“Ｒ３”を指定するアドレス部Ｍ２１が含まれる。コマンド処理部２１は、入力されたデータ出力コマンドＭ２０に従ってセンスアンプ２４１及びデータラッチ２４２を制御することで、メモリコントローラ１０へリードデータＤ１を出力する。
【００８６】
以上のように、本実施形態で、リード動作の実行前に、リード要求に基づいて指定されるページに対して各リード動作を実行した際の信頼性を推定し、この推定結果に基づいて、最初に実行するリード動作が選択される。このような構成により、本実施形態によれば、例えば、推定された信頼性が高い場合には、リード時間の短いリード動作（例えばＦＡＳＴリード）を最初に実行し、推定された信頼性が低い場合には、信頼性の低いリード動作（例えばＦＡＳＴリード）をスキップして信頼性の高いリード動作（例えばノーマルリードやリトライシフトリード等）を最初に実行することが可能となる。それにより、信頼性を低下させることなく、リード要求に対する実質的なレイテンシを小さくすることが可能なメモリシステム、その制御方法及びプログラムを実現することが可能となる。
【００８７】
また、たとえば、図１３におけるステップＳ２２〜Ｓ２３が無く、どのようなページに対するリードであってもまずＦＡＳＴリードを適用するように構成されていた場合、ＦＢＣが多いページに対しては、ほとんど全てのケースでステップＳ２７の判断結果がＮＯとなり、ステップＳ２５〜Ｓ２６の処理を実行しても無駄となってしまう。これに対し、本実施形態では、推定された信頼性が低い場合には信頼性の低いリード動作（例えばＦＡＳＴリード）をスキップして信頼性の高いリード動作を実行することが可能となるため、ステップＳ２５〜Ｓ２６の処理の分、リードレイテンシを小さくすることが可能となる。
【００８８】
さらに、たとえば、図１３におけるステップＳ２２〜Ｓ２３及びＳ２５〜Ｓ２７が無く、どのようなページに対するリードであっても、ＦＡＳＴリードを適用せずにノーマルリードから適用するように構成されていた場合では、たとえＦＢＣが少ないページであったとしても、リード時間（すなわち、データが読出し開始可能になるまでの時間）がノーマルリードのそれとなり、より小さいＦＡＳＴリードのリード時間が適用されない。これに対し、本実施形態では、ＦＢＣが少ないページに対しては、ＦＡＳＴリードのリード時間を適用することが可能となるため、リードレイテンシを小さくすることが可能となる。
【００８９】
なお、上述では、それぞれのページに対してリード動作を実行したと仮定した場合に推定される信頼性に基づいて、リードシーケンスにおける最初に実行するリード動作を選択的に切り替える場合を例示したが、このような構成に限定されない。例えば、信頼性に基づいた判断に代えて、又は、信頼性に基づいた判断に加え、リード要求から特定される特性情報がある条件を満たしている場合には、リードシーケンスにおける最初に実行するリード動作を選択的に切り替えるように構成されてもよい。例えば「書込みモード」がＱＬＣモードを示している場合には、リードシーケンスにおける最初に実行するリード動作を、トラッキングリード（図１３のステップＳ３７及びＳ５５）とする、すなわち、ＦＡＳＴリードから隣接ワードライン補償リードまでをスキップすることも可能である。また、「書込みモード」がＳＬＣモード又はＭＬＣモードを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップせずに実行し、ＴＬＣモードを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップするように構成することも可能である。
【００９０】
さらに、「書込みモード」が２／３／２コーディングのＴＬＣモードを示している場合において、「ページ種別」がＬＯＷＥＲページ又はＵＰＰＥＲページを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップせずに実行し、ＭＩＤＤＬＥページを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップするように構成することも可能である。同様に、「書込みモード」が１／３／３コーディングのＴＬＣモードを示している場合において、「ページ種別」がＬＯＷＥＲページを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップせずに実行し、ＭＩＤＤＬＥページ又はＵＰＰＥＲページを示している場合には、リードシーケンスにおいてＦＡＳＴリードをスキップするように構成することも可能である。
【００９１】
さらに、「書込み状態」が対象のブロックに対するデータの書き込みが完了していないこと、又は、リード対象のワードラインに隣接するワードライン（隣接ワードライン）にデータが書き込まれていないことを示している場合には、リードシーケンスにおける最初に実行するリード動作を、隣接ワードライン補償リード（図１３のステップＳ３４及びＳ５４）とする、すなわち、ＦＡＳＴリードからリトライシフトリードまでをスキップすることも可能である。さらにまた、「温度」が予め設定しておいた閾値温度以下の場合には、リードシーケンスにおいてＦＡＳＴリードをスキップするように構成することも可能である。
【００９２】
（第２の実施形態）
次に、第２の実施形態に係るメモリシステム、その制御方法及びプログラムについて、図面を参照して詳細に説明する。なお、以下の説明において、第１の実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【００９３】
第１の実施形態では、リード動作を実行する際の信頼性を推定し、その推定結果に基づいてリード動作を選択する構成がメモリコントローラ１０側に組み込まれている場合を例示した。これに対し、第２の実施形態では、これらの構成が不揮発性メモリ２０内に組み込まれた場合を例示する。
【００９４】
図１５は、本実施形態に係る不揮発性メモリの概略構成例を示すブロック図である。図１５に示すように、本実施形態では、第１の実施形態における特性情報記憶部１０３、信頼性推定部１０４及びリード方式選択部１０６が、不揮発性メモリ２０内のコマンド処理部４２１に実装された構成を備える。
【００９５】
図１５に示す構成において、メモリコントローラ１０のコマンド発行部１０２から不揮発性メモリ２０のコマンド処理部４２１には、第１の実施形態と同様に、リード・コマンドが入力される。ただし、本実施形態では、図１６に示すように、初回にコマンド発行部１０２からコマンド処理部４２１へ送られるリード・コマンドＭ３０では、実行すべきリード動作を指定するプリフィックスが、実行すべきリード方式を不揮発性メモリ２０内のコマンド処理部４２１において選択することを指示するプリフィックス“ＹＹ”となっている。コマンド処理部４２１は、コマンド発行部１０２からこのようなリード・コマンドが入力されると、特性情報記憶部１０３へ、リード・コマンドで指定された物理アドレスを入力する。なお、２回目以降にメモリコントローラ１０内のコマンド発行部１０２から不揮発性メモリ２０内のコマンド処理部４２１へ送られるリード・コマンドのプリフィックスは、たとえば第１の実施形態と同様に、実行すべきリード動作を指定するプリフィックスとなる。
【００９６】
物理アドレスの入力に対し、第１の実施形態と同様に、特性情報記憶部１０３は、入力された物理アドレスで指定されるページに関する特性情報を信頼性推定部１０４へ出力し、信頼性推定部１０４は、入力された特性情報の全て又は一部を使用して信頼性指標を推定して、推定した信頼性指標をリード方式選択部１０６へ出力する。なお、入力された物理アドレスで指定されるページに関する訂正能力情報は、例えば、メモリコントローラ１０側で特定され、コマンド発行部１０２からコマンド処理部４２１へリード・コマンドと共に入力されてもよい。
【００９７】
そして、リード方式選択部１０６は、入力された信頼性指標（推定ＦＢＣ）と訂正能力情報とのいずれか、若しくは、それらの組み合わせに基づいて、実行するリード動作を選択する。コマンド処理部４２１は、リード方式選択部１０６で選択されたリード動作に従って、駆動部２２、センスアンプ２４１及びデータラッチ２４２を制御することで、リード方式選択部１０６で選択されたリード動作を実行する。
【００９８】
以上のように、１つのリード要求に対してコマンド発行部１０２からコマンド処理部４２１に１回以上発行されるリード・コマンドのうち、初回のリード・コマンドでは、初回のリード動作を選択する権限がコマンド処理部４２１に与えられる。したがって、コマンド処理部４２１は、初回のリード・コマンドに対して、リード方式選択部１０６で選択されたリード動作を実行する。ただし、１つのリード要求に対するリード・コマンドのうち、リトライ処理となる２回目以降のリード・コマンドでは、第１の実施形態と同様に、コマンド発行部１０２からコマンド処理部４２１へ、逐次、実行するリード動作を指示すリード・コマンドが発行される。
【００９９】
その後、リード動作により読み出されたリードデータは、メモリバス１８を介してメモリコントローラ１０のＥＣＣ部１３に転送されて復号される。この復号に成功した場合、復元されたデータがホストバス３１を介してホスト装置３０へ転送される。一方、復号に失敗した場合、以降、メモリコントローラ１０のコマンド発行部１０２から不揮発性メモリ２０のコマンド処理部４２１へは、第１の実施形態と同様に、予め設定されているリトライリードシーケンスに従って、リード動作の実行を指示するリード・コマンドが発行される。これに対し、コマンド処理部４２１は、指示されたリード動作に基づいて、駆動部２２、センスアンプ２４１及びデータラッチ２４２を制御することで、目的のデータの読出しを実行する。
【０１００】
なお、本実施形態では、訂正能力情報をメモリコントローラ１０側で管理する場合を例示したが、不揮発性メモリ２０側で管理することも可能である。その場合、ＥＣＣ部１３は、書込み対象のデータを符号化すると、この符号化に使用した符号化方式又はその訂正能力を示す情報（訂正能力情報）と、この書込み対象データの格納位置（ページ位置）を示す物理アドレスとを、逐次、コマンド処理部４２１へ通知する。これにより、例えばコマンド処理部４２１内に設けた誤り訂正能力管理部において、各ページに格納されているデータに対してＥＣＣ部１３が適用した符号化方式又はその訂正能力を管理することが可能となる。
【０１０１】
また、本実施形態において、温度センサ２５で検出された温度を示す情報は、直接、コマンド処理部４２１内の特性情報記憶部１０３に格納されてもよい。
【０１０２】
以上のように、本実施形態では、不揮発性メモリ２０側で、リード動作の実行前に、リード要求に基づいて指定されるページに対して各リード動作を実行した際の信頼性が推定され、この推定結果に基づいて、実行するリード動作が選択される。このような構成により、本実施形態によれば、第１の実施形態と同様に、リード動作を実行したと仮定した場合に推定される信頼性に基づいて、リードシーケンスにおいて最初に実行するリード動作を選択的に切り替えることが可能となる。例えば、推定された信頼性が高い場合には、リード時間の短いリード動作（例えばＦＡＳＴリード）を最初に実行し、推定された信頼性が低い場合には、信頼性の低いリード動作（例えばＦＡＳＴリード）をスキップして信頼性の高いリード動作（例えばノーマルリードやリトライシフトリード等）を最初に実行することが可能となる。それにより、信頼性を低下させることなく、リード要求に対する実質的なレイテンシを小さくすることが可能なメモリシステム、その制御方法及びプログラムを実現することが可能となる。
【０１０３】
その他の構成、動作及び効果は、上述した第１の実施形態と同様であってよいため、ここでは詳細な説明を省略する。
【０１０４】
また、第２の実施形態では、プリフィックス“ＹＹ”を含むリード・コマンドＭ３０が、１つのリード要求に対して１回以上発行されるリード・コマンドのうちの最初のリード・コマンドである場合を例示したが、これに限定されず、例えば２回目以降に発行されるリード・コマンドとすることも可能である。
【０１０５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０６】
１…メモリシステム、１０…メモリコントローラ、１１…制御部、１２…ＲＡＭ、１３…ＥＣＣ部、１４…バッファメモリ、１５…ホストＩ／Ｆ、１６…メモリＩ／Ｆ、１７…内部バス、２０…不揮発性メモリ、２１，４２１…コマンド処理部、２１１…シーケンサ、２１２…コマンドレジスタ、２１３…アドレスレジスタ、２２…駆動部、２２１…ドライバ回路、２２２…ロウデコーダ、２３…メモリセルアレイ、２４…カラムモジュール、２４１…センスアンプ、２４２…データラッチ、２５…温度センサ、３０…ホスト装置、３１…ホストバス、１０１…リード要求受付部、１０２…コマンド発行部、１０３…特性情報記憶部、１０４…信頼性推定部、１０５…誤り訂正能力管理部、１０６…リード方式選択部。
【図１】
2019168853.tif 000003
【図２】
2019168853.tif 000004
【図３】
2019168853.tif 000005
【図４】
2019168853.tif 000006
【図５】
2019168853.tif 000007
【図６】
2019168853.tif 000008
【図７】
2019168853.tif 000009
【図８】
2019168853.tif 000010
【図９】
2019168853.tif 000011
【図１０】
2019168853.tif 000012
【図１１】
2019168853.tif 000013
【図１２】
2019168853.tif 000014
【図１３】
2019168853.tif 000015
【図１４】
2019168853.tif 000016
【図１５】
2019168853.tif 000017
【図１６】
2019168853.tif 000018