(57)【要約】      （修正有）【課題】ＮＶＭコントローラの性能及び推定された劣化度の正確性のうちの少なくとも１つの向上が期待できる不揮発性メモリ（ＮＶＭ）デバイスを提供する。【解決手段】ＮＶＭデバイスが、１以上のＮＶＭ（フラッシュメモリＦＭ）チップ１７５と、１以上のＮＶＭチップと通信するＮＶＭコントローラとを有する。１以上のＮＶＭチップの各々が、複数の記憶領域と、複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリードと、当該記憶領域の劣化度の推定とのうちの少なくとも１つを行うチップコントローラ１２１とを有する。【選択図】図１
2019101708.tif 000002
【特許請求の範囲】
【請求項１】
１以上のＮＶＭ（不揮発性メモリ）チップと、
前記１以上のＮＶＭチップと通信するＮＶＭコントローラと
を有し、
前記１以上のＮＶＭチップの各々が、
複数の記憶領域と、
前記複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、下記の（ｘ）及び（ｙ）のうちの少なくとも１つを行うチップコントローラと
（ｘ）当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
（ｙ）当該記憶領域の劣化度の推定、
を有する、
不揮発性メモリデバイス。
【請求項２】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭチップ内の前記チップコントローラは、前記ＮＶＭコントローラからリードコマンドを受信した場合に行うリード処理と非同期の最適リードパラメータ探索処理を当該ＮＶＭチップ内の前記複数の記憶領域の各々について行い、
前記１以上のＮＶＭチップの各々について、前記最適リードパラメータ探索処理は、当該ＮＶＭチップ内の前記複数の記憶領域の各々について、複数のリードパラメータのうちの少なくとも１つのリードパラメータでデータをリードすることで前記複数のリードパラメータから最適リードパラメータを決定する処理であり、
前記リードパラメータの決定は、前記最適リードパラメータの決定であり、
前記ＮＶＭコントローラからリードコマンドを受信したＮＶＭチップ内のチップコントローラは、当該リードコマンドに応答して行うリード処理において、当該ＮＶＭチップ内の複数の記憶領域のうちのリード元の記憶領域から、当該チップコントローラによる前記最適リードパラメータ探索処理において決定された最適リードパラメータを用いてデータをリードする、
請求項１に記載の不揮発性メモリデバイス。
【請求項３】
前記最適リードパラメータは、リードされたデータ中のエラービット数が相対的に少ないリードパラメータである、
請求項２に記載の不揮発性メモリデバイス。
【請求項４】
前記最適リードパラメータは、前記複数のリードパラメータにそれぞれ対応したエラービット数のうちの最少のエラービット数に対応したリードパラメータである、
請求項３に記載の不揮発性メモリデバイス。
【請求項５】
前記最適リードパラメータ探索処理において、前記チップコントローラは、リードされたデータのエラービット数が所定値以下の場合、当該リードで使用したリードパラメータを、当該データのリード元の記憶領域についての最適リードパラメータとし、
前記所定値は、０以上、且つ、訂正可能なエラービット数の最大値未満である、
請求項２に記載の不揮発性メモリデバイス。
【請求項６】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭチップ内の前記チップコントローラは、当該ＮＶＭチップ内の前記複数の記憶領域の各々について劣化度推定処理を行い、
前記１以上のＮＶＭチップの各々について、前記劣化度推定処理は、記憶領域について前記最適リードパラメータ探索処理において決定された最適リードパラメータで当該記憶領域からリードされたデータ中のエラービット数を基に、当該記憶領域の劣化度を推定する処理である、
請求項２に記載の不揮発性メモリデバイス。
【請求項７】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭ内の前記チップコントローラは、当該ＮＶＭチップ内の前記複数の記憶領域の各々についての推定された劣化度を、前記ＮＶＭコントローラに報告し、
前記ＮＶＭコントローラが、前記１以上のＮＶＭチップについて報告された複数の劣化度を平準化するウェアレベリング処理を行う、
請求項６に記載の不揮発性メモリデバイス。
【請求項８】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭチップ内の各記憶領域の劣化度は、下記の（Ｂ）に対する下記の（Ａ）の割合であり、
（Ａ）当該記憶領域の最適リードパラメータでリードされたデータ中のエラービット数、
（Ｂ）当該記憶領域の最適リードパラメータでリードされたときのチップ温度及びライト経過時間に対応した基準エラービット数、
前記基準エラービット数は、劣化度が基準劣化度のときのエラービット数として定義された値であり、
各記憶領域について、前記ライト経過時間は、当該記憶領域についてデータがライトされた時刻からの経過時間である、
請求項６に記載の不揮発性メモリデバイス。
【請求項９】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭチップ内の前記チップコントローラは、当該ＮＶＭチップ内の前記複数の記憶領域の各々について劣化度推定処理を行い、
前記１以上のＮＶＭチップの各々について、前記劣化度推定処理は、記憶領域からリードされたデータ中のエラービット数を基に、当該記憶領域の劣化度を推定する処理である、
請求項１に記載の不揮発性メモリデバイス。
【請求項１０】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭチップ内の各記憶領域の劣化度は、下記の（Ｂ）に対する下記の（Ａ）の割合であり、
（Ａ）当該記憶領域からリードされたデータ中のエラービット数、
（Ｂ）当該記憶領域からリードされたときのチップ温度及びライト経過時間に対応した基準エラービット数、
前記基準エラービット数は、劣化度が基準劣化度のときのエラービット数として定義された値であり、
各記憶領域について、前記ライト経過時間は、当該記憶領域についてデータがライトされた時刻からの経過時間である、
請求項９に記載の不揮発性メモリデバイス。
【請求項１１】
前記１以上のＮＶＭチップの各々において、当該ＮＶＭ内の前記チップコントローラは、当該ＮＶＭチップ内の前記複数の記憶領域の各々についての推定された劣化度を、前記ＮＶＭコントローラに報告し、
前記ＮＶＭコントローラが、前記１以上のＮＶＭチップについて報告された複数の劣化度を平準化するウェアレベリング処理を行う、
請求項９に記載の不揮発性メモリデバイス。
【請求項１２】
前記１以上のＮＶＭチップの各々のチップコントローラが、書き換え可能な不揮発記憶領域を有し、
前記ＮＶＭコントローラが、前記１以上のＮＶＭチップの各々のチップコントローラにおける前記不揮発記憶領域に対して、当該チップコントローラの処理において参照される情報を設定する、
請求項１に記載の不揮発性メモリデバイス。
【請求項１３】
前記１以上のＮＶＭチップは、複数のＦＭ（フラッシュメモリ）チップであり、
前記複数のＦＭチップの各々について、前記複数の記憶領域の各々は、Ｉ／Ｏ単位であるページ、消去単位であるブロック、又は、制御単位であるダイである、
請求項１に記載の不揮発性メモリデバイス。
【請求項１４】
不揮発性メモリデバイスと、
前記不揮発性メモリデバイスと通信する上位デバイスと
を有し、
前記不揮発性メモリデバイスが、
１以上のＮＶＭ（不揮発性メモリ）チップと、
前記１以上のＮＶＭチップと通信するＮＶＭコントローラと
を有し、
前記１以上のＮＶＭチップの各々が、
複数の記憶領域と、
前記複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、下記の（ｘ）及び（ｙ）のうちの少なくとも１つを行うチップコントローラと
（ｘ）当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
（ｙ）当該記憶領域の劣化度の推定、
を有する、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、不揮発性メモリデバイスでの記憶制御に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ（以下、ＦＭ）を搭載するソリッドステートドライブ（以下、ＳＳＤ）等のようなフラッシュメモリデバイス（以下、ＦＭデバイス）が、不揮発性メモリ（典型的には、不揮発性半導体メモリ、以下、ＮＶＭ）を有するＮＶＭデバイスの一例として知られている。ＦＭデバイスは、一般に、複数のＦＭ（ＦＭチップ）と、複数のＦＭチップに対するＩ／Ｏ（Input/Output）を制御するＦＭコントローラとを有する。
【０００３】
一般に、ＦＭコントローラが、リード処理（リードコマンドの受信から応答までの処理）において、リードパラメータ（典型的には、リードのための電圧）を決定し、決定したリードパラメータでデータをリードする。リードしたデータにエラービットがあれば、ＦＭコントローラは、当該エラービットを、リードしたデータに付与されているＥＣＣ（Error Correction Code）を用いて訂正する。エラー訂正に失敗した場合、ＦＭコントローラは、リードリトライを行う、すなわち、リードパラメータを切り替え、切り替え後のリードパラメータでデータをリードする。
【０００４】
このように、一般に、ＦＭコントローラが、リードパラメータの切り替えを行う。この種の技術が、例えば特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】US9299455
【発明の概要】
【発明が解決しようとする課題】
【０００６】
リードパラメータの切り替えとリードパラメータを用いたリードは、ＦＭコントローラにより行われる。それらが多発すると、ＦＭコントローラのリード性能（例えば、レスポンスタイム及びスループットの少なくとも１つ）が低下し得る。
【０００７】
また、一般に、ＦＭコントローラは、ブロックの消去回数を平準化するウェアレベリング処理を行う。言い換えれば、消去回数が劣化度と推定され、劣化度の平準化が行われる。しかし、実際の劣化度は、消去回数と等しいわけではない。このため、消去回数が相対的に多いブロックであっても実際の劣化度が相対的に低かったり、消去回数が相対的に少ないブロックであっても実際の劣化度が相対的に高かったりし得る。劣化度を正確に推定するためには、状態検査のために頻繁にＦＭコントローラが各ＦＭチップに対してリードを行う必要が生じるが、そうなると、ＦＭコントローラの負荷が高くなり、ＦＭコントローラの性能の低下が懸念される。
【０００８】
この種の課題は、ＦＭデバイス以外のＮＶＭデバイスについてもあり得る。
【課題を解決するための手段】
【０００９】
ＮＶＭデバイスが、１以上のＮＶＭ（不揮発性メモリ）チップと、１以上のＮＶＭチップと通信するＮＶＭコントローラとを有する。複数のＮＶＭチップの各々が、複数の記憶領域と、複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、（ｘ）当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリードと、（ｙ）当該記憶領域の劣化度の推定とのうちの少なくとも１つを行うチップコントローラとを有する。
【発明の効果】
【００１０】
ＮＶＭデバイスにおけるＮＶＭコントローラの性能、及び、推定された劣化度の正確性のうちの少なくとも１つの向上が期待できる。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係るストレージシステムの構成を示す。
【図２】リードパラメータテーブルの構成を示す。
【図３】訂正テーブルの構成を示す。
【図４】ページテーブルの構成を示す。
【図５】最適リードパラメータ探索処理の流れを示す。
【図６】リード処理の流れを示す。
【図７】劣化度推定処理の流れを示す。
【図８】報告処理の流れを示す。
【図９】設定処理の流れを示す。
【図１０】実施例２に係る最適リードパラメータ探索処理の流れの一部を示す。
【発明を実施するための形態】
【００１２】
以下の説明では、「インターフェース部」は、１以上のインターフェースでよい。当該１以上のインターフェースは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「メモリ部」は、１以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【００１４】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサである。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＵＰ（Graphics Processing Unit）のような他種のプロセッサでもよい。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
【００１５】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１６】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜にメモリ部及び／又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部（或いは、そのプロセッサ部を有するコントローラのようなデバイス）とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１７】
以下、本発明の幾つかの実施例を図面に基づいて説明する。なお、本発明は、以下に説明する実施例に限定されるものではない。
【実施例１】
【００１８】
図１は、実施例１に係るストレージシステムの構成を示す。
【００１９】
ストレージシステム１１０が、１以上のＦＭＰＫ（ＦＭパッケージ）１１２と、１以上のＦＭＰＫ１１２に接続された上位デバイス１１１とを有する。ストレージシステム１１０が、汎用計算機の場合、上位デバイス１１１は、プロセッサ部でよい。ストレージシステム１１０が、複数のＦＭＰＫ１１２（例えば１以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループ）を有するストレージ装置の場合、上位デバイス１１１は、複数のＦＭＰＫ１１２にコマンド（要求）を発行するストレージコントローラでよい。
【００２０】
各ＦＭＰＫ１１２は、ＦＭデバイスの一例である。ＦＭＰＫ１１２は、複数（又は１）のＦＭチップ１７５と、複数のＦＭチップ１７５と通信するＦＭＰＫコントローラ１８１とを有する。各ＦＭチップ１７５が、複数の記憶領域と、チップコントローラ１２１とを有する。チップコントローラ１２１が、当該チップコントローラ１２１を有するＦＭチップ１７５内の複数の記憶領域の各々について、当該記憶領域に対するリードの結果（例えば、リードされたデータ中のエラービットの数）を基に、下記の（ｘ）及び（ｙ）、
（ｘ）当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
（ｙ）当該記憶領域の劣化度の推定、
のうちの少なくとも１つを行う。これにより、下記のうちの少なくとも１つが期待できる。
・ＦＭＰＫコントローラ１８１が、リードパラメータの決定及びリードパラメータを用いたリードと、劣化度の推定といった処理を行う必要が無くなる。このため、ＦＭＰＫコントローラ１８１の性能の向上が期待できる。一比較例によれば、２以上のリードコマンドにそれぞれ対応した２以上のリード元のページが、同一バス上の２以上のＦＭチップに存在する場合、或るリードコマンドに従うリード処理においてＦＭＰＫコントローラによって多くのリードリトライが行われ、結果として、バスが長時間占有されて、別のリードコマンドのリード処理が待たされるおそれがでる。本実施例によれば、ＦＭチップ１７５のチップコントローラ１２１がリードパラメータの決定及びリードパラメータを用いたリードを行うため（つまり、リードパラメータの決定とそのリードパラメータを用いたリードがＦＭチップ１７５で閉じるため）、リードリトライがたとえ多発しても、ＦＭＰＫコントローラ１８１とＦＭチップ１７５間のバス１７２が長時間占有されることが無い。
・一比較例において、ＦＭＰＫコントローラが、劣化度を正確に推定するためには、状態検査のために高頻度に各ＦＭチップに対してリードを行う必要が生じるが、そうなると、ＦＭＰＫコントローラの負荷が高くなり、ＦＭＰＫコントローラの性能の低下が懸念される。本実施例によれば、ＦＭチップ１７５のチップコントローラ１２１が、当該ＦＭチップ１７５内の各記憶領域について、リードの結果（例えば、リードされたデータ中のエラービット数）、すなわち、当該記憶領域の実際の状態を基に、当該記憶領域の劣化度を推定する。このため、推定された劣化度の正確性の向上が期待できる。
【００２１】
各ＦＭチップ１７５について、複数の記憶領域の各々は、本実施例では、Ｉ／Ｏ単位であるページ１６７である。各記憶領域が、ページ１６７のような相対的に小さい単位の場合、後述の最適リードパラメータや劣化度の管理が精密になる。なお、各記憶領域が、ブロック１６６又はダイ１６５のような相対的に大きい単位でもよい。この場合、最適リードパラメータや劣化度の管理のためのページテーブル１４４のサイズの肥大化を抑えることができる。
【００２２】
また、本実施例では、チップコントローラ１２１は、ＦＭＰＫコントローラ１８１からリードコマンドを受信した場合に行うリード処理と非同期の最適リードパラメータ探索処理を各ページ１６７について行うようになっている。最適リードパラメータ探索処理は、複数のリードパラメータのうちの少なくとも１つのリードパラメータでデータをページ１６７からリードすることで当該複数のリードパラメータから最適リードパラメータを当該ページ１６７について決定する処理である。チップコントローラ１２１は、ＦＭＰＫコントローラ１８１からリードコマンドを受信した場合に行うリード処理において、リード元のページ１６７から、最適リードパラメータ探索処理において決定された最適リードパラメータを用いてデータをリードするようになっている。これにより、下記が期待できる。
・リード処理においてリードリトライが発生する回数の軽減が期待でき、以って、ＦＭＰＫコントローラ１８１のリード性能の向上が期待できる。
・最適リードパラメータ探索処理は、ＦＭチップ１７５内で閉じた処理である。最適リードパラメータを見つけるために、リードパラメータの切り替え及び切り替え後のリードパラメータを用いたリードが多発しても、ＦＭＰＫコントローラ１８１に負荷がかからない。このため、多くのリードパラメータを用意しておき、その多くのリードパラメータの中から最適なリードパラメータを決定するようにしても、ＦＭＰＫコントローラ１８１の性能低下を避けることができる。また、そのようにすることで、より相応しいリードパラメータがリード処理において使用されることが期待される。
【００２３】
最適リードパラメータは、リードされたデータ中のエラービット数が相対的に少ないリードパラメータである。このため、時間の経過に伴いページが劣化しても、訂正可能なエラービット数に維持される可能性が高く、故に、リードリトライの発生頻度を軽減することが期待できる。このようなことが最も期待できる最適リードパラメータは、複数のリードパラメータにそれぞれ対応したエラービット数のうちの最少のエラービット数に対応したリードパラメータである。
【００２４】
なお、このような最適リードパラメータ探索処理は、一比較例においてＦＭＰＫコントローラが行うようなリードリトライ（リードパラメータの切り替え）とは異なる。なぜなら、リードリトライは、エラー訂正（リード）に失敗した場合に行われるものだからである。言い換えれば、エラー訂正に成功した場合には、リードリトライを行う必要が無い。エラー訂正に成功したにも関わらずにリードリトライを行うと、リードリトライ回数が増え、結果として、ＦＭＰＫコントローラのリード性能が低下するからである。また、一比較例では、ＦＭＰＫコントローラのリード性能の低下を軽減するための方法として、リードリトライ回数の上限値を小さい値とすることが考えられる。しかし、そうすると、選択可能なリードパラメータの数が少なくなり、結果として、適切なリードパラメータが見つからずリード失敗（リードリトライの回数がその上限値に達してもエラー訂正に成功しない）が発生する確率が高くなってしまうことが懸念される。本実施例によれば、リード処理において使用される最適リードパラメータが、リード処理とは非同期の最適リードパラメータ探索処理において予め決定される。多くのリードパラメータから最適リードパラメータを決定しておけるのでリード失敗が発生する確率を軽減できる。
【００２５】
また、上述のような、リードされたデータ中のエラービット数を基に最適リードパラメータを決定する最適リードパラメータ探索処理は、少なくとも１つのＦＭチップ１７５のチップコントローラ１２１に代わって、ＦＭＰＫコントローラ１８１が行ってもよい。ＦＭＰＫコントローラ１８１のリード性能は低下し得るが、ページ１６７の実際の状態（エラービット数）に基づく最適リードパラメータが見つかるので、全体として、リードリトライ回数が減り、結果として、リード性能の低下の軽減が期待できる。
【００２６】
また、一比較例では、ＦＭＰＫコントローラが、各ページ１６７からデータをリードすることで各ページ１６７におけるエラービット数を基に劣化度を推定することが考えられる。しかし、そうすると、ＦＭＰＫコントローラのリード性能が低下する。そこで、本実施例では、上述したように、各ＦＭチップ１７５のチップコントローラ１２１が、ページ１６７からリードされたデータ中のエラービット数を基に当該ページ１６７の劣化度を推定することを行う処理である劣化度推定処理を各ページ１６７について行う。つまり、劣化度推定処理は、ＦＭチップ１７５で閉じている。このため、ＦＭＰＫコントローラ１８１のリード性能の低下を避けつつ、ページ１６７の劣化度を正確に推定することが期待できる。
【００２７】
なお、チップコントローラ１２１が、ＦＭチップ１７５内の複数のページ１６７の推定された劣化度を当該ＦＭチップ１７５内で平準化するウェアレベリング処理を行ってもよい。本実施例では、それに代えて又は加えて、チップコントローラ１２１が、各ページ１６７の推定された劣化度を、ＦＭＰＫコントローラ１８１に報告し、ＦＭＰＫコントローラ１８１が、複数のＦＭチップ１７５について報告された複数の劣化度を複数のＦＭチップ１７５間で平準化するウェアレベリング処理を行う。報告された劣化度は、正確性の高い推定劣化度なので、ＦＭＰＫコントローラ１８１によるウェアレベリング処理の精度の向上が期待できる。
【００２８】
また、劣化度推定処理において、各ページ１６７について、リードされたデータ中のエラービット数は、当該ページ１６７に対応した最適リードパラメータでリードされたデータ中のエラービット数である。このように、いずれのページ１６７についても同条件（すなわち、当該ページ１６７にとっての最適リードパラメータ）でのリードの結果に基づき劣化度が推定されるので、推定された劣化度の正確性の一層の向上が期待できる。
【００２９】
以下、本実施例を詳細に説明する。なお、ＦＭＰＫ１１２に搭載されるＦＭチップ１７５の数は１でもよいが、本実施例では、複数のＦＭチップ１７５が搭載されている。
【００３０】
ＦＭＰＫコントローラ１８１は、ＦＥ−Ｉ／Ｆ（フロントエンドインターフェースデバイス）１９１と、ＢＥ−Ｉ／Ｆ（バックエンドインターフェイスデバイス）１９２と、メモリ１９３と、それらに接続されたＭＰ（マイクロプロセッサ）１９４とを有する。ＦＥ−Ｉ／Ｆ１９１及びＢＥ−Ｉ／Ｆ１９２は、インターフェース部の一例である。メモリ１９３は、メモリ部の一例である。ＭＰ１９４は、プロセッサ部の一例である。
【００３１】
ＦＥ−Ｉ／Ｆ１９１は、上位デバイス１１１と通信する。
【００３２】
ＢＥ−Ｉ／Ｆ１９２は、ＦＭ部１７４と通信する。具体的には、ＢＥ−Ｉ／Ｆ１９２は、１又は複数本のバス１７２によって複数のＦＭチップ１７５と接続する。各バス１７２には、２以上のＦＭチップ１７５が接続される。ＢＥ−Ｉ／Ｆ１９２は、ＦＭチップ１７５に接続されるＣＥ（Chip Enable）信号線を用い、同一バス１７２に接続された２以上のＦＭチップ１７５を制御できる。
【００３３】
メモリ１９３は、ＭＰ１９４が実行するプログラム（例えばＦＭＰＫ制御プログラム１２５）や、ＭＰ１９４が使用する情報（例えば管理情報１２６）を記憶する。ＦＭＰＫ制御プログラム１２５は、上位デバイス１１１からのコマンド（例えばＩ／Ｏコマンド）を処理する。管理情報１２６は、ＦＭＰＫ１１２に関する情報、例えば、論理アドレス（例えばＬＢＡ（Logical Block Address））と物理アドレス（例えばＰＢＡ（Physical Block Address））との対応関係を示すアドレス変換テーブルを含む。すなわち、本実施例では、ＦＭＰＫコントローラ１８１が、上位デバイス１１１からのＩ／Ｏ要求で指定されている論理アドレスを、アドレス変換テーブルを基に物理アドレスに変換し、物理アドレスを指定したＩ／Ｏコマンド（ライトコマンド又はリードコマンド）を、当該物理アドレスに属するＦＭチップ１７５に送信する。それに代えて、ＦＭチップ１７５が、論理アドレスが指定されたＩ／ＯコマンドをＦＭＰＫコントローラ１８１から受信し、当該ＦＭチップ１７５（チップコントローラ１２１）が、当該論理アドレスを物理アドレスに変換し、当該物理アドレスが属するページ１６７に対してデータのＩ／Ｏを行ってもよい。
【００３４】
ＭＰ１９４は、メモリ１９３内のＦＭＰＫ制御プログラム１２５等のプログラムを実行する。
【００３５】
各ＦＭチップ１７５は、複数（又は１）のダイ１６５と、複数のダイ１６５に接続されたチップコントローラ１２１とを有する。
【００３６】
ダイ１６５は、制御単位の一例である。各ダイ１６５は、例えば、レジスタと、複数のブロック１６６とを有する。ブロック１６６は、データの消去単位である。各ブロック１６６は、複数のページ１６７を有する。ページ１６７は、データのＩ／Ｏ単位である。
【００３７】
チップコントローラ１２１は、ＦＥ−Ｉ／Ｆ１３１と、ＢＥ−Ｉ／Ｆ１３２と、ＲＡＭ（Random Access Memory）１３３と、ＮＶＭ１３４と、ＥＣＣ回路１３５と、温度センサ１３６と、それらに接続されたＭＰ１３７とを有する。ＦＥ−Ｉ／Ｆ１３１及びＢＥ−Ｉ／Ｆ１３２は、インターフェース部の一例である。ＲＡＭ１３３及びＮＶＭ１３４は、メモリ部の一例である。ＥＣＣ回路１３５及びＭＰ１９４は、プロセッサ部の一例である。
【００３８】
ＦＥ−Ｉ／Ｆ１３１は、ＦＭＰＫコントローラ１８１（ＦＭチップ１７５にとっての上位デバイスの一例）と通信する。ＢＥ−Ｉ／Ｆ１３２は、複数のダイ１６５と通信する。
【００３９】
ＲＡＭ１３３は、具体的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリが挙げられる。ＲＡＭ１３３は、例えば、データバッファやワーク領域としての領域を含む。
【００４０】
ＮＶＭ１３４は、ＭＰ１３７に実行されるプログラムやＭＰ１３７に使用される管理情報を格納する。例えば、プログラムは、チップ制御プログラム１４１である。チップ制御プログラム１４１は、例えば、最適リードパラメータ探索処理のような処理を行う。管理情報は、例えば、リードパラメータテーブル１４２、訂正テーブル１４３及びページテーブル１４４といったテーブルを含む。
【００４１】
ＥＣＣ回路１３５は、データのライト処理において、データに対してＥＣＣ（Error Correction Code）を生成する。生成されたＥＣＣがデータに付与されたＥＣＣＣＷ（ECC Code Word）がページ１６７に対して読み書きされる。ＥＣＣ回路１３５は、データのリード処理において、ＥＣＣＣＷ中のＥＣＣによって当該ＥＣＣＣＷ中のデータを検査し、データ損失（エラービット）が検出された際には、データ訂正を行う。
【００４２】
温度センサ１３６は、ＦＭチップ１７５の温度を測定する。温度センサ１３６は、ＦＭチップ単位で設けられるが、ダイ単位といったより小さい単位で設けられてもよい。
【００４３】
ＭＰ１３７は、チップ制御プログラム１４１といったプログラムを実行することで、最適リードパラメータ探索処理のような処理を行う。ＭＰ１３７は、処理の一部で、ＥＣＣ回路１３５を使用する。
【００４４】
図２は、リードパラメータテーブル１４２の構成を示す。
【００４５】
リードパラメータテーブル１４２は、選択可能な複数のリードパラメータと、その複数のリードパラメータの各々の優先度とを示す。
【００４６】
なお、本実施例では、リードパラメータテーブル１４２は、各ＦＭチップ１７５において、全ページ１６７で共通であるが、ＦＭチップ１７５よりも小さい単位（例えば、ダイやブロック）で用意されてもよい。
【００４７】
図３は、訂正テーブル１４３の構成を示す。
【００４８】
訂正テーブル１４３は、リードパラメータ毎に、チップ温度と、ライト経過時間（データがライトされた時刻から経過した時間）と、劣化度１００％（基準劣化度の一例）に対応したエラービット数との関係を示す。
【００４９】
図４は、ページテーブル１４４の構成を示す。
【００５０】
ページテーブル１４４は、ページ１６７毎に推定された劣化度を示す。具体的には、例えば、ページテーブル１４４は、ページ１６７毎にレコードを有する。各レコードが、ダイ番号４０１、ブロック番号４０２、ページ番号４０３、ライト時刻４０４、最適リードパラメータ４０５、チップ温度４０６、エラービット数４０７及び劣化度４０８といった情報を格納する。以下、図４の説明において、１つのページ１６７を例に取る（図４の説明において「対象ページ１６７」）。
【００５１】
ダイ番号４０１は、対象ページ１６７を含むダイ１６５の番号を示す。ブロック番号４０２は、対象ページ１６７を含むブロック１６６の番号を示す。ページ番号４０３は、対象ページ１６７の番号を示す。ダイ番号４０１、ブロック番号４０２及びページ番号４０３から対象ページ１６７を特定することができる。
【００５２】
ライト時刻４０４は、対象ページ１６７のライト時刻、具体的には、対象ページ１６７（又は、対象ページ１６７を含むブロック１６６或いはダイ１６５の所定のページ（例えば先頭のページ）１６７）にデータが書き込まれた時刻を示す。
【００５３】
最適リードパラメータ４０５は、最適リードパラメータ探索処理において対象ページ１６７について決定された最適リードパラメータを示す。
【００５４】
チップ温度４０６は、対象ページ１６７の最適リードパラメータを用いたリードを含むリード処理において計測された温度を示す。
【００５５】
エラービット数４０７は、対象ページ１６７の最適リードパラメータを用いてリードされたＥＣＣＣＷ中のデータにおけるエラービット数（例えば、合計値又は平均値）を示す。
【００５６】
劣化度４０８は、対象ページ１６７について推定された劣化度を示す。
【００５７】
対象ページ１６７の劣化度は、下記の（Ｂ）に対する下記の（Ａ）の割合、
（Ａ）対象ページ１６７に対応したエラービット数４０７、
（Ｂ）対象ページ１６７に対応したチップ温度４０６及びライト経過時間（ライト時刻４０４からの経過時間）に対応した基準エラービット数、
である。
【００５８】
具体的には、例えば、チップ制御プログラム１４１は、劣化度推定処理において、下記（Ｅ１）〜（Ｅ７）を行う。チップ温度及びライト経過時間はエラービット数に影響するため、劣化度を正確に推定することが期待される。
（Ｅ１）チップ制御プログラム１４１は、対象ページ１６７に対応した最適リードパラメータ４０５を特定し、特定した最適リードパラメータ４０５に対応した寿命曲線４５０を、訂正テーブル１４３を基に取得する。寿命曲線４５０は、最適リードパラメータ４０５に対応した定義チップ温度（訂正テーブル１４３において定義されているチップ温度）毎の曲線であって、ライト経過時間と基準エラービット数との関係を示す曲線（図４では便宜上直線）である。
（Ｅ２）チップ制御プログラム１４１は、対象ページ１６７のライト経過時間（ライト時刻４０４“ｊ”からの経過時間）“Ｔ”を特定する。
（Ｅ３）チップ制御プログラム１４１は、対象ページ１６７に対応したエラービット数４０７“ｎ１”を特定する。
（Ｅ４）チップ制御プログラム１４１は、対象ページ１６７に対応したチップ温度４０６“ｋ”を特定し、特定したチップ温度４０６“ｋ”に最も近い定義チップ温度“Ｘ１”を特定する。
（Ｅ５）チップ制御プログラム１４１は、特定した定義チップ温度“Ｘ１”に対応した曲線を用いて、対象ページ１６７のライト経過時間“Ｔ”に対応した基準エラービット数“ｎ２”を特定する。
（Ｅ６）チップ制御プログラム１４１は、エラービット数４０７“ｎ１”（上記（Ａ）の一例）÷基準エラービット数“ｎ２”（上記（Ｂ）の一例）×１００＝劣化度“Ｈ”（％）を算出する。
（Ｅ７）チップ制御プログラム１４１は、算出した劣化度“Ｈ”を、劣化度４０８としてページテーブル１４４に記録する。
【００５９】
以下、本実施例で行われる処理の一例を説明する。なお、以下の説明では、１つのＦＭチップ１７５を例に取る（図５〜図９の説明で「対象ＦＭチップ１７５」）。
【００６０】
図５は、最適リードパラメータ探索処理の流れを示す。最適リードパラメータ探索処理は、各ページ１６７について行われる。以下、１つのページ１６７を例に取る（図５の説明で「対象ページ１６７」）。最適リードパラメータ探索処理は、例えば、定期的に開始する。
【００６１】
チップ制御プログラム１４１は、対象ページ１６７が最適リードパラメータの決定へと進むための所定の条件に合致しているか否かを判断する（Ｓ５０１）。「所定の条件」としては、例えば、前回の最適リードパラメータ探索処理から一定時間以上が経過した（例えば、前回の最適リードパラメータ探索処理が行われた時刻がページテーブル１４４に格納されていてその時刻からの経過時間が一定時間以上になっている）、又は、対象ＦＭチップ１７５における対象ページ１６７についてのリード処理でのリードリトライ回数が所定値を超えた、といった条件を採用可能である。
【００６２】
Ｓ５０１の判断結果が真の場合（Ｓ５０１：Ｙ）、チップ制御プログラム１４１は、リードパラメータテーブル１４２が表す複数のリードパラメータのうち最高優先度のリードパラメータを用いて対象ページ１６７からデータ（ＥＣＣＣＷ）をリードする（Ｓ５０２）。
【００６３】
チップ制御プログラム１４１は、対象ページ１６７に対応した最適リードパラメータ４０５を、最高優先度のリードパラメータ（Ｓ５０２で使用したリードパラメータ）とする（Ｓ５０３）。また、チップ制御プログラム１４１は、Ｓ５０２でリードされたデータ中のエラービット数を、エラービット数４０７として記録する（Ｓ５０４）。
【００６４】
次に、リードパラメータテーブル１４２が表す残りの全リードパラメータについて、Ｓ５０５〜Ｓ５０８が行われる。すなわち、チップ制御プログラム１４１は、次の優先度のリードパラメータ（今回の最適リードパラメータ探索処理において直前に選択したリードパラメータの優先度の次の優先度のリードパラメータ）を選択し、選択したリードパラメータを用いて対象ページ１６７からデータをリードする（Ｓ５０５）。チップ制御プログラム１４１は、Ｓ５０５でリードされたデータ中のエラービット数が、対象ページ１６７に対応したエラービット数よりも少ないか否かを判断する（Ｓ５０６）。Ｓ５０６の判断結果が真の場合（Ｓ５０６：Ｙ）、チップ制御プログラム１４１は、Ｓ５０５で選択されたリードパラメータを最適リードパラメータ４０５として記録し（Ｓ５０７）、且つ、Ｓ５０５でリードされたデータ中のエラービット数をエラービット数４０７として記録する（Ｓ５０８）。Ｓ５０６の判断結果が偽の場合（Ｓ５０６：Ｎ）、チップ制御プログラム１４１は、Ｓ５０７及びＳ５０８をスキップする。
【００６５】
上述の残りの全リードパラメータについてＳ５０５〜Ｓ５０８が行われた後、チップ制御プログラム１４１は、対象ページ１６７に対応したエラービット数４０７が訂正限界（ＥＣＣＣＷ中のＥＣＣで訂正可能なエラービット数の最大値）を超えているか否かを判断する（Ｓ５０９）。
【００６６】
Ｓ５０９の判断結果が偽の場合（Ｓ５０９：Ｎ）、対象ページ１６７についての最適リードパラメータ探索処理が終了する。結果として、対象ページ１６７の最適リードパラメータは、リードパラメータテーブル１４２が表す複数のリードパラメータについてそれぞれ得られたエラービット数のうち最少のエラービット数のリードパラメータが、最適リードパラメータ４０５として記録されていることになる。
【００６７】
Ｓ５０９の判断結果が真の場合（Ｓ５０９：Ｙ）、チップ制御プログラム１４１は、対象ページ１６７がアンコレクタブルエラーのページであることを記録する（例えばエラービット数４０７の値を無効値とする）（Ｓ５１０）。
【００６８】
なお、最適リードパラメータ探索処理において、リードパラメータの選択順は、優先度の高い順に限らないでよい。例えば、リードパラメータの選択順は、更新前の最適リードパラメータ４０５に対応した優先度から近い優先度順であってもよい。
【００６９】
図６は、リード処理の流れを示す。リード処理は、リード元のページ１６７について行われる。以下、１つのページ１６７を例に取る（図６の説明で「対象ページ１６７」）。対象ページ１６７について、リード処理は、対象ページ１６７が属する物理アドレスを指定したリードコマンドをＦＭＰＫコントローラ１８１から受信した場合に開始される。
【００７０】
チップ制御プログラム１４１は、対象ページ１６７がアンコレクタブルエラーのページであるか否かを、例えば対象ページ１６７に対応したエラービット数４０７を基に、判断する（Ｓ６０１）。Ｓ６０１の判断結果が真の場合（Ｓ６０１：Ｙ）、チップ制御プログラム１４１は、リード失敗をＦＭＰＫコントローラ１８１に返す（Ｓ６０６）。
【００７１】
Ｓ６０１の判断結果が偽の場合（Ｓ６０１：Ｎ）、チップ制御プログラム１４１は、対象ページ１６７に対応した最適リードパラメータ４０５を用いて対象ページ１６７からデータをリードする（Ｓ６０２）。チップ制御プログラム１４１は、Ｓ６０２のリードがリードエラーか否か（Ｓ６０２でリードしたデータを訂正可能か否か）を判断する（Ｓ６０３）。Ｓ６０３の判断結果が偽の場合（Ｓ６０３：Ｎ）、つまり、Ｓ６０２でリードしたデータ中の全エラービットを訂正できた場合、チップ制御プログラム１４１は、訂正されたデータをＦＭＰＫコントローラ１８１に返す（Ｓ６０７）。
【００７２】
Ｓ６０３の判断結果が真の場合（Ｓ６０３：Ｙ）、リードパラメータテーブル１４２が表す残りの全リードパラメータ（又は、リードリトライ回数の上限と同数のリードパラメータ）について、Ｓ６０４及びＳ６０５が行われる。すなわち、チップ制御プログラム１４１は、次の優先度のリードパラメータ（今回のリード処理において直前に選択したリードパラメータの優先度の次の優先度のリードパラメータ）を選択し、選択したリードパラメータを用いて対象ページ１６７からデータをリードする（Ｓ６０４）。チップ制御プログラム１４１は、Ｓ６０４のリードがリードエラーか否かを判断する（Ｓ６０５）。Ｓ６０５の判断結果が偽の場合（Ｓ６０５：Ｎ）、チップ制御プログラム１４１は、訂正されたデータをＦＭＰＫコントローラ１８１に返す（Ｓ６０７）。
【００７３】
いずれのリードパラメータを用いたリードについてもリードエラーが発生した場合（Ｓ６０５：Ｙ）、チップ制御プログラム１４１は、リード失敗をＦＭＰＫコントローラ１８１に返す（Ｓ６０６）。
【００７４】
図７は、劣化度推定処理の流れを示す。劣化度推定処理は、各ページ１６７について行われる。以下、１つのページ１６７を例に取る（図７の説明で「対象ページ１６７」）。劣化度推定処理は、例えば、定期的に開始する。
【００７５】
チップ制御プログラム１４１は、対象ページ１６７がアンコレクタブルエラーのページであるか否かを判断する（Ｓ７０１）。Ｓ７０１の判断結果が真の場合（Ｓ７０１：Ｙ）、対象ページ１６７についての劣化度推定処理は終了する。
【００７６】
Ｓ７０１の判断結果が偽の場合（Ｓ７０１：Ｎ）、チップ制御プログラム１４１は、対象ページ１６７に対応したチップ温度４０６を取得する（Ｓ７０２）。チップ制御プログラム１４１は、対象ページ１６７に対応した定義チップ温度（Ｓ７０２で取得したチップ温度４０６に最も近い温度）、対象ページ１６７に対応したライト経過時間（ライト時刻４０４からの経過時間）、及び、対象ページ１６７に対応したエラービット数４０７を基に、対象ページ１６７の劣化度を推定し、推定した劣化度を劣化度４０８として記録する（Ｓ７０３）。具体的には、上述した（Ｅ１）〜（Ｅ７）が行われる。
【００７７】
図８は、報告処理の流れを示す。
【００７８】
報告処理とは、対象ＦＭチップ１７５において管理されている各ページ１６７の劣化度４０８を含んだ情報をＦＭＰＫコントローラ１８１に報告する処理である。報告処理は、報告コマンドを受信した場合に開始される。報告コマンドとして、例えば、ＯＮＦＩ（Open NAND Flash Interface）の仕様において“Reserved”となっているコマンドを使用できる。報告コマンドは、ＦＭＰＫコントローラ１８１から送信される。
【００７９】
チップ制御プログラム１４１は、報告コマンドを受信した場合、ページテーブル１４４から各ページ１６７の劣化度４０８を収集する（Ｓ８０１）。チップ制御プログラム１４１は、収集した劣化度４０８を含んだ報告を、ＦＭＰＫコントローラ１８１に送信する（Ｓ８０２）。
【００８０】
ＦＭＰＫコントローラ１８１は、複数のＦＭチップ１７５にそれぞれ対応した複数の報告を基に、ＦＭチップ１７５間で劣化度を平準化するウェアレベリング処理を行う。
【００８１】
図９は、設定処理の流れを示す。
【００８２】
設定処理とは、対象ＦＭチップ１７５におけるプログラム（例えばチップ制御プログラム１４１）及び管理情報（例えばテーブル１４２〜１４４）の少なくとも一部を設定する（例えば更新する）処理である。設定処理は、設定コマンドを受信した場合に開始される。設定コマンドも、報告コマンドと同様に、例えば、ＯＮＦＩ（Open NAND Flash Interface）の仕様において“Reserved”となっているコマンドを使用できる。設定コマンドは、ＦＭＰＫコントローラ１８１から送信される。
【００８３】
チップ制御プログラム１４１は、設定コマンドを受信した場合、設定先を特定する（Ｓ９０１）。設定コマンドでは、例えば、ＮＶＭ１３４における領域のアドレス範囲（例えば先頭アドレス及びデータ長）が指定されていて、当該領域が設定先である。チップ制御プログラム１４１は、Ｓ９０１で特定した設定先に、設定コマンドに従う設定対象（プログラム（例えばチップ制御プログラム１４１）及び管理情報（例えばテーブル１４２〜１４４）の少なくとも一部）を設定する（Ｓ９０２）。
【００８４】
設定処理によれば、最適リードパラメータ探索処理や劣化度推定処理のための論理（プログラム１４１）や、その論理で使用されるテーブルを外部から書き換え可能なため、機能のカスタマイズや修正が可能となる。
【実施例２】
【００８５】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。
【００８６】
実施例１では、最適リードパラメータ探索処理において、全てのリードパラメータについてリードが行われるが、実施例２では、一部のリードパラメータ（最小として１つのリードパラメータ）についてのリードで済ますことが期待できる。
【００８７】
図１０は、実施例２に係る最適リードパラメータ探索処理の流れの一部を示す。１つのページ１６７を例に取る（図１０の説明で「対象ページ１６７」）。
【００８８】
チップ制御プログラム１４１は、Ｓ５０５でリードされたデータ中のエラービット数がＮ以下か否かを判断する（Ｓ１００１）。Ｎは、０以上、且つ、訂正限界（ＥＣＣＣＷ中のＥＣＣで訂正可能なエラービット数の最大値）より小さい値（典型的には整数）である。Ｓ１００１の判断結果が偽の場合（Ｓ１００１：Ｎ）、Ｓ５０６が行われる。
【００８９】
Ｓ１００１の判断結果が真の場合（Ｓ１００１：Ｙ）、チップ制御プログラム１４１は、Ｓ５０５で選択されたリードパラメータを最適リードパラメータ４０５として記録し（Ｓ１００２）、Ｓ５０５でリードされたデータ中のエラービット数をエラービット数４０７として記録し（Ｓ１００３）、対象ページ１６７についての最適リードパラメータ探索処理を終了する。
【００９０】
以上、本発明の幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、本発明は、ＦＭチップ１７５以外のＮＶＭのチップ、具体的には、例えば、ＰＲＡＭ（Phase-change Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）又はＦｅＲＡＭ（Ferroelectric Random Access Memory）のチップについても適用可能である。
【符号の説明】
【００９１】
１７５…ＦＭチップ
【図１】
2019101708.tif 000003
【図２】
2019101708.tif 000004
【図３】
2019101708.tif 000005
【図４】
2019101708.tif 000006
【図５】
2019101708.tif 000007
【図６】
2019101708.tif 000008
【図７】
2019101708.tif 000009
【図８】
2019101708.tif 000010
【図９】
2019101708.tif 000011
【図１０】
2019101708.tif 000012