(57)【要約】【課題】不揮発性メモリの疲弊状態に適したエラー訂正能力を設定する。【解決手段】本実施形態によれば、メモリシステムは、不揮発性メモリとコントローラとを含む。コントローラは、不揮発性メモリからリードされたデータに対してエラー訂正を含むデコードを行い、デコードにおいてエラー訂正が成功した場合、エラー訂正で検出されるエラー訂正数に基づいてデータの読み出し元領域に関するエラー訂正能力を変更する。【選択図】図１
2020154728.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記不揮発性メモリからリードされたデータに対してエラー訂正を含むデコードを行い、
前記デコードにおいて前記エラー訂正が成功した場合、前記エラー訂正で検出されるエラー訂正数に基づいて前記データの読み出し元領域に関するエラー訂正能力を変更する、
メモリシステム。
【請求項２】
前記コントローラは、更に、
前記デコードのエラー訂正結果がデコード失敗を示す場合に、前記データの読み出し元領域に関する前記エラー訂正能力を変更する、
請求項１のメモリシステム。
【請求項３】
前記コントローラは、更に、
前記デコードのエラー訂正結果がデコード失敗を示す場合に、前記不揮発性メモリによって使用されるリード条件を変更して前記データを再リードする、
請求項１のメモリシステム。
【請求項４】
前記コントローラは、
前記エラー訂正結果がデコード成功を示し、かつ、前記エラー訂正数が第１の閾値を超え、かつ、前記エラー訂正数が前記第１の閾値より大きい第２の閾値以下の場合に、前記データの読み出し元領域に関する前記エラー訂正能力を現在のレベルから前記現在のレベルよりも強い第１のレベルに変更し、
前記エラー訂正結果がデコード成功を示し、かつ、前記エラー訂正数が前記第２の閾値を超えた場合に、前記データの読み出し元領域に関する前記エラー訂正能力を前記第１のレベルから前記第１レベルよりも強い第２のレベルに変更する、
請求項２又は請求項３のメモリシステム。
【請求項５】
前記コントローラは、
前記不揮発性メモリからリードされた前記データに対して前記デコードを行い、前記エラー訂正数を検出するデコーダと、
前記データの読み出し元領域に関する前記エラー訂正能力を変更可能にエンコードを行うエンコーダと、
を具備する、請求項１乃至請求項４のいずれか１項のメモリシステム。
【請求項６】
前記コントローラは、
前記不揮発性メモリの疲弊状態を判断する処理を実行する場合に、前記不揮発性メモリから前記データをリードする、
請求項１乃至請求項５のいずれか１項のメモリシステム。
【請求項７】
前記コントローラは、
外部の装置から前記データに関するリードコマンドを受信した場合に、前記不揮発性メモリから前記データをリードする、
請求項１乃至請求項５のいずれか１項のメモリシステム。
【請求項８】
不揮発性メモリ及び前記不揮発性メモリを制御するコントローラを備えるメモリシステムの制御方法であって、
前記コントローラによって、前記不揮発性メモリからリードされたデータに対してエラー訂正を含むデコードを行うことと、
前記コントローラによって、前記デコードにおいて前記エラー訂正が成功した場合、前記エラー訂正で検出されるエラー訂正数に基づいて前記データの読み出し元領域に関するエラー訂正能力を強化するか否かを判断することと、
前記コントローラによって、前記データの読み出し元領域に関する前記エラー訂正能力を変更することと、
を具備する、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステム及びその制御方法に関する。
【背景技術】
【０００２】
不揮発性半導体メモリに対してパトロールと呼ばれる処理が実行される。パトロールは、不揮発性半導体メモリの記憶領域に対して定期的に又はイベント発生に伴ってリードを実行する処理、及びその実行結果から不揮発性半導体メモリの疲弊状態を判断する処理、を含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９９０６２４２号明細書
【特許文献２】米国特許第９５４２２６８号明細書
【特許文献３】米国特許第９４１９６５５号明細書
【特許文献４】米国特許第９０７１２８１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、不揮発性メモリの疲弊状態に適したエラー訂正能力を設定するメモリシステム及びその制御方法を提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラとを含む。コントローラは、不揮発性メモリからリードされたデータに対してエラー訂正を含むデコードを行い、デコードにおいてエラー訂正が成功した場合、エラー訂正で検出されるエラー訂正数に基づいてデータの読み出し元領域に関するエラー訂正能力を変更する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るメモリシステムの構成の一例を示すブロック図。
【図２】第１の実施形態におけるバッファメモリに記憶されるデータ及びメタデータの例を示すブロック図。
【図３】第１の実施形態に係るエラー訂正ビット数とＥＣＣのエラー訂正能力との関係の一例を示すグラフ。
【図４】第１の実施形態に係るメモリシステムの処理の一例を示すフローチャート。
【図５】第２の実施形態に係るメモリシステムの処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、実質的に同一の構成要素及び機能については、同一符号を付し、必要に応じて説明を行う。
【０００８】
（第１の実施形態）
第１の実施形態においては、パトロールにおける不揮発性メモリの疲弊状態の判断に、エラー訂正数を用いることにより、不揮発性メモリの疲弊状態に適したエラー訂正能力を設定するメモリシステム及びその制御方法を説明する。なお、第１の実施形態においては、エラー訂正数として、エラー訂正により訂正されて復元されたビットの数を示すエラー訂正ビット数（フェイルビットカウントとも称する）が用いられる。
【０００９】
第１の実施形態において、パトロールは、例えば、定期的に、又は、所定の条件を満たす場合に、不揮発性メモリの全記憶領域又は一部の記憶領域に対してリードを実行する処理、リードしたデータのデコード結果に基づいて不揮発性メモリにおける当該データを記憶する領域の疲弊状態を判断する処理、を含む。パトロールの結果、必要に応じて当該データの読み出し元領域に関するエラー訂正能力を強化することがある。
【００１０】
第１の実施形態に係るメモリシステムは、例えばＳＳＤ（Solid State Drive）などのようなストレージデバイスであるとする。第１の実施形態に係るメモリシステムと同様の構成及び機能は、例えばハードディスクドライブ、ＵＳＢ（Universal Serial Bus）メモリ、メモリカード、ハードディスクドライブとＳＳＤとを含むハイブリッド型メモリシステム、光ディスクデバイスなど様々な種類の不揮発性ストレージデバイスに適用可能である。
【００１１】
第１の実施形態では、エラー訂正能力情報を含むメタデータが不揮発性メモリの記憶領域に対応付けられている。メモリシステムは、記憶領域ごとにメタデータに基づいてエラー訂正能力を設定し、データがある記憶領域から別の記憶領域へ移動（例えば、ガーベージコレクション、リフレッシュ、ウェアレベリング、などにより）すると、その記憶領域に設定されたエラー訂正能力に応じて、データに含まれるＥＣＣ（Error Correction Code）を変更する。メモリシステムは、データの読み出し元領域に関するエラー訂正能力情報を強化する場合、データの読み出し元領域に対応するメタデータを更新して、データの読み出し元領域に関するエラー訂正能力（ＥＣＣの強度）を強化する。読み出し元領域からリードされたデータ自体は、例えば、不揮発性メモリにおける別の記憶領域へライトされる。
【００１２】
図１は、第１の実施形態に係るメモリシステム１の構成の一例を示すブロック図である。
【００１３】
メモリシステム１は、情報処理装置２と通信可能に接続されている。情報処理装置２は、ホスト機器と呼ばれてもよい。情報処理装置２は、例えば、パーソナルコンピュータ、サーバ装置、クライアント装置、携帯電話機、携帯情報端末などに備えられていてもよい。
【００１４】
メモリシステム１は、不揮発性メモリ３とシステムコントローラ４とを備える。
【００１５】
不揮発性メモリ３は、例えば、例えばＮＡＮＤ型フラッシュメモリとするが、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory：磁気抵抗メモリ）、ＰＲＡＭ（Phasechange Random Access Memory：相変化メモリ）、ＲｅＲＡＭ（Resistive Random Access Memory：抵抗変化型メモリ）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）など他の不揮発性半導体メモリでもよい。例えば、不揮発性メモリ３は、磁気メモリ、３次元構造の半導体メモリなど、を含む。
【００１６】
不揮発性メモリ３に対するデータのリード及びライトは、ページと呼ばれる単位で実行され得る。不揮発性メモリ３に対するデータのイレーズは、ブロックと呼ばれる単位で実行され得る。ブロックの１単位は、複数のページを含む。不揮発性メモリ３に対するデータのリード及びライトが複数のページ単位で、イレーズが複数のブロック単位で、それぞれ実行されてもよい。
【００１７】
不揮発性メモリ３は、ライトされたデータＤ１〜Ｄｎと、各データＤ１〜Ｄｎの記憶領域Ｅ１〜Ｅｎに関するエラー訂正能力情報を含むメタデータＭ１〜Ｍｎと、を少なくとも記憶する。記憶領域Ｅ１〜Ｅｎのそれぞれは、メタデータＭ１〜Ｍｎを用いて管理される領域である。なお、複数のメタデータＭ１〜Ｍｎは、複数を１つの管理単位で、又はそれぞれを個別の管理単位で扱われてもよい。データＤ１〜Ｄｎは、それぞれ、１ページよりも少ない管理単位、１ページの管理単位、又は複数ページの管理単位、で扱われてもよい。
【００１８】
メタデータＭ１〜Ｍｎのそれぞれは、例えば、記憶領域Ｅ１〜Ｅｎに対応しており、記憶領域Ｅ１〜Ｅｎに関するエラー訂正能力情報を含む。第１の実施形態において、エラー訂正能力情報は、例えば、エラー訂正可能なビット数を含むとするが、これに代えて、ＥＣＣのビット数又はデータに含まれるＥＣＣの割合などを用いてＥＣＣのエラー訂正能力を管理してもよい。
【００１９】
システムコントローラ４は、メモリ５、プロセッサ６、デコーダ７、エンコーダ８、レジスタ９、バッファメモリ１０、メモリコントローラ１１を備える。
【００２０】
システムコントローラ４は、不揮発性メモリ３に対する制御を実行する。第１の実施形態に係るシステムコントローラ４の全部、又は、一部は、電子回路により形成されてもよい。システムコントローラ４は、例えば、ＳｏＣ（System-on-a-chip）で形成されてもよい。システムコントローラ４の各機能は、専用ハードウェアにより実現されてもよく、後述するようにプロセッサ６がファームウェア１２などのようなソフトウェアを実行することにより実現されてもよい。
【００２１】
システムコントローラ４は、情報処理装置２から、例えば、ライトコマンド、論理アドレス、データを受信すると、エンコーダ８を用いてデータに対してエラー訂正可能とするためのエンコードを行う。そして、システムコントローラ４は、エンコードされたデータを不揮発性メモリ３における物理アドレスの示す位置へライトする処理を実行する。システムコントローラ４は、論理アドレスと書き込み先領域の物理アドレスとの間のアドレス変換を可能にするためのアドレス変換テーブルを管理する。
【００２２】
システムコントローラ４は、情報処理装置２から、例えば、リードコマンド及び論理アドレスを受信すると、アドレス変換テーブルを用いて論理アドレスを物理アドレスへ変換するアドレス変換を行い、不揮発性メモリ３における物理アドレスの示す位置からデータをリードする処理を実行する。そして、システムコントローラ４は、リードしたデータに対してエラー訂正を含むデコードを実行し、デコードされたデータを情報処理装置２へ送信する。
【００２３】
メモリ５は、例えば、揮発性のメモリであり、例えば、ＳＲＡＭ（Synchronous Dynamic Random Access Memory）としてもよい。メモリ５は、プロセッサ６によって実行される例えばファームウェア１２などのようなソフトウェアを記憶する。
【００２４】
プロセッサ６は、例えば、メモリ５に記憶されているファームウェア１２を実行することにより、デコーダ７、エンコーダ８、レジスタ９、バッファメモリ１０、メモリコントローラ１１などを制御する。
【００２５】
第１の実施形態において、プロセッサ６は、不揮発性メモリ３に対するパトロールを実行する。プロセッサ６は、当該パトロールにおいて、定期的に、又は、イベント発生などのような所定の条件を満たす場合に、不揮発性メモリ３の全記憶領域又は一部の記憶領域に対してリード及びエラー訂正を実行する。プロセッサ６は、当該パトロールによりリードしたデータのエラー訂正結果に基づいて不揮発性メモリ３における当該データの読み出し元領域の疲弊状態を判断し、疲弊状態に基づいて必要に応じて当該データの読み出し元領域に関するエラー訂正能力を変更（より具体的には強化）する変更部１３として機能する。なお、エラー訂正の結果は、レジスタ９に記憶される。
【００２６】
エラー訂正能力の強化は、例えば、エラー訂正の対象となるデータに対するＥＣＣのパリティビットの割合を増加させることにより実現可能である。
【００２７】
図１の例では、プロセッサ６が、パトロールにより、不揮発性メモリ３からデータＤ１，Ｄｎと当該データＤ１，Ｄｎに対応するメタデータＭ１，Ｍｎをリードし、データＤ１，ＤｎとメタデータＭ１，Ｍｎとをバッファメモリ１０に記憶させた状態を例示している。
【００２８】
以下においては、バッファメモリ１０に記憶されているデータＤ１が処理対象のデータの場合を例として説明するが、例えばデータＤｎなどの他のデータが処理対象のデータの場合も同様である。処理対象のデータＤ１は、データ本体Ｄと、パリティビットＤｅとを含む。このパリティビットＤｅのビット数を増加することにより、データＤ１におけるデータ本体Ｄのエラー訂正能力を強化することができる。
【００２９】
変更部１３は、レジスタ９に記憶されておりデータＤ１に対するデコーダ７によるデコード結果を示す訂正結果データ１４が成功を示すかの判断、及び、エラー訂正ビット数１５が閾値を超えているかの判断を行う。
【００３０】
そして、変更部１３は、訂正結果データ１４が失敗を示す場合、又は、エラー訂正ビット数１５が閾値を超えている場合に、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力を強化するためのメタデータＭ１の更新を行う。変更部１３は、当該データＤ１を別の記憶領域（例えば、メタデータＭ２で管理される記憶領域Ｅ２）へライトするためにバッファメモリ１０に記憶させる。
【００３１】
エラー訂正能力の強化は、例えば、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力を管理するメタデータＭ１の示すエラー訂正能力情報を、エラー訂正能力の強化された状態に相当する情報に更新し、新たにこの読み出し元領域Ｅ１に対してデータの書き込みが発生することで実現される。
【００３２】
デコーダ７は、例えば、ＬＤＰＣ（Low Density Parity Check）デコードを実行する。
【００３３】
より詳しく説明すると、デコーダ７は、不揮発性メモリ３からリードされてバッファメモリ１０に記憶されているデータＤ１と当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１とを参照する。次に、デコーダ７は、メタデータＭ１の示すエラー訂正能力情報に応じてデータＤ１に対してエラー訂正を含むデコードを実行し、エラー訂正ビット数１５を検出する。
【００３４】
そして、デコーダ７は、デコードにおいてエラー訂正が成功した場合に、成功を示す訂正結果データ１４とエラー訂正で検出されるエラー訂正ビット数１５をレジスタ９に記憶させ、デコードされたデータＤ１をバッファメモリ１０に記憶させる。デコーダ７は、デコードが失敗した場合に、失敗を示す訂正結果データ１４をレジスタ９に記憶させる。
【００３５】
エンコーダ８は、例えば、ＬＤＰＣエンコードを実行する。エンコーダ８は、例えば、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力を変更可能にエンコードを行う。エンコーダ８は、書き込み先領域（例えば記憶領域Ｅ２）に対応するメタデータ（例えばメタデータＭ２）を参照し、書き込み先領域Ｅ２に対応するメタデータＭ２に含まれるエラー訂正能力情報に応じてライト対象のデータＤ１にＥＣＣを含める。
【００３６】
なお、デコーダ７及びエンコーダ８の動作の一部は、プロセッサ６により制御される。
【００３７】
レジスタ９は、システムコントローラ４の複数の構成要素の間でデータをやり取りするために使用される。例えば、デコーダ７が訂正結果データ１４及びエラー訂正ビット数１５をレジスタ９へ記憶し、プロセッサ６がレジスタ９から訂正結果データ１４及びエラー訂正ビット数１５を取得することにより、デコーダ７とプロセッサ６との間で訂正結果データ１４及びエラー訂正ビット数１５のやり取りが可能となる。
【００３８】
バッファメモリ１０は、システムコントローラ４によって処理される対象のメタデータ（例えば、読み出し元領域Ｅ１に対応するメタデータＭ１、及び、書き込み先領域Ｍ２に対応するメタデータＭ２）、及び、データＤ１を記憶する。バッファメモリ１０は、メタデータＭ１，Ｍ２、及びデータＤ１に関するキャッシュメモリとして構成される。
【００３９】
具体的には、バッファメモリ１０は、メモリコントローラ１１が不揮発性メモリ３からリードしたメタデータＭ１及びデータＤ１を記憶する。また、バッファメモリ１０は、メモリコントローラ１１が不揮発性メモリ３へライトするデータＤ１及びライトする際に参照する書き込み先領域Ｅ２に対応するメタデータＭ２を記憶する。
【００４０】
メモリコントローラ１１は、不揮発性メモリ３に対するメタデータＭ１、メタデータＭ２、及びデータＤ１のリード、ライトを制御する。また、メモリコントローラ１１は、不揮発性メモリ３に対するイレーズを制御する。
【００４１】
具体的には、メモリコントローラ１１は、不揮発性メモリ３からリードしたメタデータＭ１，Ｍ２、及びデータＤ１をバッファメモリ１０へ記憶する。また、メモリコントローラ１１は、バッファメモリ１０に記憶されているメタデータＭ１，Ｍ２、及びデータＤ１を不揮発性メモリ３へライトする。
【００４２】
図２は、バッファメモリ１０に記憶されるメタデータＭ１，Ｍｎ及びデータＤ１，Ｄｎの例を示すブロック図である。
【００４３】
不揮発性メモリ３は、複数のメモリチップ３１〜３ｋを備える。
【００４４】
メモリチップ３１は、複数の記憶領域Ｅ１〜Ｅａのそれぞれに複数のデータＤ１〜Ｄａを記憶し、当該複数の記憶領域Ｅ１〜Ｅａに対応するメタデータＭ１を記憶する。メモリチップ３２は、複数の記憶領域Ｅａ＋１〜Ｅｂのそれぞれに複数のデータＤａ＋１〜Ｄｂを記憶し、当該複数の記憶領域Ｅａ＋１〜Ｅｂに対応するメタデータＭ２を記憶する。メモリチップ３３は、複数の記憶領域Ｅｂ＋１〜Ｅｃのそれぞれに複数のデータＤｂ＋１〜Ｄｃを記憶し、当該複数の記憶領域Ｅｂ＋１〜Ｅｃに対応するメタデータＭ３を記憶する。メモリチップ３ｋは、複数の記憶領域Ｅｃ＋１〜Ｅｎのそれぞれに複数のデータＤｃ＋１〜Ｄｎを記憶し、当該複数の記憶領域Ｅｃ＋１〜Ｅｎに対応するメタデータＭｎを記憶する。
【００４５】
このように、図２では、複数の記憶領域に対して１つのメタデータが対応付けられている。なお、メモリチップ３１〜３ｋはデータＤ１〜Ｄｎを記憶し、他のメモリチップがメタデータＭ１〜Ｍｎを記憶してもよい。また、あるメモリチップ内の記憶領域に対応するメタデータは、このメモリチップ内に記憶されてもよく、このメモリチップとは別のメモリチップに記憶されてもよい。
【００４６】
メモリコントローラ１１は、例えば、リード対象のデータがメモリチップ３１，３ｋ内のデータＤ１，Ｄｎの場合、不揮発性メモリ３のメモリチップ３１，３ｋからデータＤ１，ＤｎとメタデータＭ１，Ｍｎとをリードする。そして、メモリコントローラ１１は、データＤ１，ＤｎとメタデータＭ１，Ｍｎとをバッファメモリ１０に記憶させる。
【００４７】
また、メモリコントローラ１１は、例えば、ライト対象のデータがバッファメモリ１０のデータＤ１又はメタデータＭ１の場合、バッファメモリ１０のデータＤ１又はメタデータＭ１を不揮発性メモリ３におけるメモリチップ３１へ記憶させる。メモリコントローラ１１は、例えば、ライト対象のデータがバッファメモリ１０のデータＤｎ又はメタデータＭｎの場合、データＤｎ又はメタデータＭｎをメモリチップ３ｋへ記憶させる。
【００４８】
第１の実施形態において、システムコントローラ４は、不揮発性メモリ３からリードされバッファメモリ１０に記憶された複数のデータＤ１，Ｄｎのエラー訂正結果に基づいて不揮発性メモリ３における当該データＤ１，Ｄｎの読み出し元領域Ｅ１，Ｅｎの疲弊状態を判断し、疲弊状態に基づいて必要に応じて当該データＤ１，Ｄｎの読み出し元領域Ｅ１，Ｅｎに関するエラー訂正能力を変更し、さらに、不揮発性メモリ３からリードされバッファメモリ１０に記憶されている他のデータに関して同様の処理を繰り返すことで、パトロールを実現し得る。
【００４９】
図３は、第１の実施形態に係るエラー訂正ビット数とＥＣＣのエラー訂正能力との関係の一例を示すグラフである。
【００５０】
図３において、横軸は、デコーダ７によって訂正された所定サイズ（以下では一例として１キロバイトとする）あたりのビット数を示す。デコーダ７によって訂正された１キロバイトあたりのビット数は、デコードされたデータのサイズと、デコード結果として得られたエラー訂正ビット数とに基づいて求められる。
【００５１】
図３において、縦軸は、データのエラー訂正能力を示し、例えば１キロバイトあたりの訂正可能なビット数を示す。
【００５２】
デコーダ７によって訂正された処理対象のデータＤ１の１キロバイトあたりのエラー訂正ビット数が第１の閾値Ｔ１以下の場合、変更部１３は、当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１のエラー訂正能力情報（１キロバイトあたりに訂正可能なビット数）をレベルＣに設定する。
【００５３】
デコーダ７によって訂正されたデータＤ１の１キロバイトあたりのエラー訂正ビット数が第１の閾値Ｔ１を超え、第２の閾値Ｔ２以下の場合、変更部１３は、当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１のエラー訂正能力情報を現在のレベルＣから現在のレベルＣよりも強いレベルＣ１へ変更する。これにより、次に、読み出し元領域Ｅ１にデータがライトされる場合には、変更されたエラー訂正能力情報に応じてエンコーダ８によって次にライトさるデータに含まれるＥＣＣのビット数がレベルＣ１に対応する数に決定される。
【００５４】
デコーダ７によって訂正されたデータＤ１の１キロバイトあたりのエラー訂正ビット数が第２の閾値Ｔ２を超え、第３の閾値Ｔ３以下の場合、変更部１３は、当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１のエラー訂正能力情報をレベルＣ１からレベルＣ１よりも強いレベルＣ２へ変更する。これにより、次に、読み出し元領域Ｅ１にデータがライトされる場合には、変更されたエラー訂正能力情報に応じてエンコーダ８によって次にライトされるデータに含まれるＥＣＣのビット数がレベルＣ２に対応する数に決定される。
【００５５】
デコーダによって訂正されたデータＤ１の１キロバイトあたりの訂正ビット数が第３の閾値Ｔ３を超えた場合、変更部１３は、当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１のエラー訂正能力情報をレベルＣ２からレベルＣ２よりも強いレベルＣ３へ変更する。これにより、次に、読み出し元領域Ｅ１にデータがライトされる場合には、変更されたエラー訂正能力情報に応じてエンコーダ８によって次にライトされるデータに含まれるＥＣＣのビット数がレベルＣ３に対応する数に決定される。
【００５６】
第１の実施形態において、変更部１３は、メタデータＭ１におけるエラー訂正能力情報を強化させるとともにメタデータＭ１によって管理される記憶領域Ｅ１に記憶されるデータに含まれるＥＣＣのビット数を増加させる場合に、デコーダ７及びエンコーダ８を用いている。
【００５７】
図４は、第１の実施形態に係るメモリシステム１の処理の一例を示すフローチャートである。図４は、システムコントローラ４が不揮発性メモリ３に対するパトロールを行う場合に実行される処理である。パトロールは、情報処理装置２からのコマンド処理を実行していない期間に、又は平行して実行される、バックグラウンド処理である。
【００５８】
Ｓ４０１において、プロセッサ６の変更部１３は、メモリコントローラ１１を使用して、不揮発性メモリ３から処理対象のデータＤ１と当該データＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１とをリードし、バッファメモリ１０に記憶させる。
【００５９】
Ｓ４０２において、変更部１３は、メタデータＭ１に含まれるデータＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報に基づいて、デコーダ７に、バッファメモリ１０に記憶されているデータＤ１をデコードさせる。デコードが成功の場合、すなわち、デコードの結果、訂正できなかったエラーがなかった場合、デコーダ７は、成功を示す訂正結果データ１４とエラー訂正ビット数１５をレジスタ９に記憶させる。デコードが失敗の場合、すなわち、デコードの結果、訂正できなかったエラーがあった場合、デコーダ７は、失敗を示す訂正結果データ１４をレジスタ９に記憶させる。
【００６０】
Ｓ４０３において、変更部１３は、レジスタ９の訂正結果データ１４がデコード成功を示すか否かを判断する。訂正結果データ１４がデコード成功を示す場合（Ｓ４０３のＹＥＳ）、Ｓ４０４において、変更部１３は、レジスタ９に記憶されているエラー訂正ビット数１５を確認する。
【００６１】
Ｓ４０５において、変更部１３は、エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれかを超えたか否かを判断する。
【００６２】
エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれも超えない場合（Ｓ４０５のＮＯ）、エラー訂正能力を変更することなく処理は終了する。
【００６３】
エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれかを超える場合（Ｓ４０５のＹＥＳ）、又は、上記のＳ４０３において訂正結果データ１４がデコード失敗を示すと判断された場合（Ｓ４０３のＮＯ）、Ｓ４０６において、変更部１３は、バッファメモリ１０に記憶されているメタデータＭ１が示す、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報を更新（具体的には、強化）させる。なお、変更部１３（プロセッサ６）は、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報を更新するとともに、データＤ１をメモリコントローラ１１経由で不揮発性メモリ３の書き込み先領域Ｅ２へライトしてもよい。
【００６４】
以上説明した第１の実施形態に係るメモリシステム１によって得られる効果を、当該メモリシステム１と比較例のメモリシステムとを対比することにより説明する。
【００６５】
比較例のメモリシステムでは、デコードによって得られる訂正結果データがデコード成功を示す場合に、処理対象のデータの読み出し元領域に関するエラー訂正能力の強化を行うことはなく、デコード失敗を示す場合に、処理対象のデータの読み出し元領域に関するエラー訂正能力を強化させるとする。
【００６６】
このような比較例のメモリシステムによって実行される処理では、不揮発性メモリの疲弊判断に訂正結果のみが用いられ、不揮発性メモリの疲弊判断の精度の向上及びエラー訂正能力のレベルの調整が困難である。
【００６７】
また、比較例のメモリシステムは、疲弊の判断精度を向上させるために、不揮発性メモリからのデータのリード条件を変更して複数回リードを繰り返し、当該繰り返し実行されたリードの結果によって総合判定をすることにより疲弊の判断精度を向上させる場合がある。しかしながら、このように繰り返しリードを行うと、リード回数が増加し、このリードの繰り返しにより不揮発性メモリの疲弊が進行する場合があり、また、比較例のメモリシステムに関してスループットなどの装置性能が低下する場合がある。
【００６８】
これに対して、第１の実施形態に係るメモリシステム１は、デコードの結果が失敗を示す場合に加え、デコードの結果が成功を示す場合であってもデコードによって検出されるエラー訂正ビット数に応じて不揮発性メモリ３に対する疲弊状態の判断を実行する。したがって、第１の実施形態に係るメモリシステムにおいては、比較例のメモリシステムよりも、不揮発性メモリ３の疲弊の判断の精度を向上させることができ、不揮発性メモリ３にライトされるデータに対して疲弊状態に適したエラー訂正能力を設定することができる。
【００６９】
第１の実施形態においては、デコーダ７及びエンコーダ８がそれぞれＬＤＰＣデコード及びＬＤＰＣエンコードを行う場合を例として説明したが、ＬＤＰＣを用いたエラー訂正に代えて、エラー訂正数が得られる他のエラー訂正が用いられてもよい。
【００７０】
第１の実施形態に係るメモリシステム１の各構成要素は、同一の機能を実現可能であれば自由に分割し、又は、組み合わせることができる。例えば、デコーダ７とエンコーダ８とは１つの回路で形成されてもよい。レジスタ９とバッファメモリ１０とは組み合わされてもよい。
【００７１】
（第２の実施形態）
上記の第１の実施形態は、パトロールの実行時におけるエラー訂正能力の強化を説明している。これに対して、第２の実施形態は、メモリシステム１が情報処理装置２からリードコマンドを受信した場合におけるエラー訂正能力の強化を説明する。
【００７２】
図５は、第２の実施形態に係るメモリシステム１の処理の一例を示すフローチャートである。
【００７３】
Ｓ５０１において、システムコントローラ４は、情報処理装置２からリードコマンドを受信する。
【００７４】
Ｓ５０２において、プロセッサ６は、リードコマンドを受信した場合に、メモリコントローラ１１を使用して、不揮発性メモリ３から処理対象のデータＤ１と処理対象のデータＤ１の読み出し元領域Ｅ１に対応するメタデータＭ１とをリードし、バッファメモリ１０に記憶させる。
【００７５】
Ｓ５０３において、変更部１３は、メタデータＭ１に含まれるデータＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報に基づいて、デコーダ７に、バッファメモリ１０に記憶されているデータＤ１をデコードさせる。デコードが成功の場合、デコーダ７は、成功を示す訂正結果データ１４とエラー訂正ビット数１５をレジスタ９に記憶させる。デコードが失敗の場合、デコーダ７は、失敗を示す訂正結果データ１４をレジスタ９に記憶させる。
【００７６】
Ｓ５０４において、変更部１３は、レジスタ９の訂正結果データ１４がデコード成功を示すか否かを判断する。
【００７７】
訂正結果データ１４がデコード失敗を示す場合（Ｓ５０４のＮＯ）、Ｓ５０５において、プロセッサ６は、不揮発性メモリ３で使用されるリード条件を変更する。プロセッサ６は、例えば、不揮発性メモリ３で使用されるリード電圧を変更する。そして、処理は、Ｓ５０２へ戻る。この結果、異なるリード条件によるデータＤ１の再リードが行われる。このように、不揮発性メモリ３に対するリード電圧の設定値を変更してリードを行うことをシフトリードという。
【００７８】
訂正結果データ１４がデコード成功を示す場合（Ｓ５０４のＹＥＳ）、Ｓ５０６において、変更部１３は、レジスタ９に記憶されているエラー訂正ビット数１５を確認する。
【００７９】
Ｓ５０７において、変更部１３は、エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれかを超えたか否かを判断する。
【００８０】
エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれも超えない場合（Ｓ５０７のＮＯ）、エラー訂正能力を変更することなく処理はＳ５０９へ移動する。
【００８１】
エラー訂正ビット数１５が第１乃至第３の閾値Ｔ１〜Ｔ３のいずれかを超える場合（Ｓ５０７のＹＥＳ）、Ｓ５０８において、変更部１３は、バッファメモリ１０に記憶されているメタデータＭ１が示すデータＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報を更新（具体的には、強化）させる。なお、プロセッサ６は、データＤ１の読み出し元領域Ｅ１に関するエラー訂正能力情報を更新するとともに、データＤ１をメモリコントローラ１１経由で不揮発性メモリ３の書き込み先領域Ｅ２へライトしてもよい。その後、処理はＳ５０９へ移動する。
【００８２】
Ｓ５０９において、システムコントローラ４は、バッファメモリ１０に記憶されているデータＤ１を情報処理装置２に送信する。
【００８３】
以上説明した第２の実施形態において、メモリシステム１は、情報処理装置２からリードコマンドを受信すると、リードコマンド対応するデータＤ１を不揮発性メモリ３からリードし、データＤ１を情報処理装置２に送信する。このリード処理と併せて、メモリシステム１は、データＤ１のデコードで検出されるエラー訂正ビット数１５に応じて、データＤ１の読み出し元領域Ｅ１に関する不揮発性メモリ３の疲弊状態を高精度に判断することができ、疲弊状態に応じて読み出し元領域Ｅ１に対応するメタデータＭ１のエラー訂正能力情報を強化することができる。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８５】
１…メモリシステム、２…情報処理装置、３…不揮発性メモリ、４…システムコントローラ、５…メモリ、６…プロセッサ、７…デコーダ、８…エンコーダ、９…レジスタ、１０…バッファメモリ、１１…メモリコントローラ、１２…ファームウェア、１３…変更部、１４…訂正結果データ、１５…エラー訂正ビット数、Ｄ１〜Ｄｎ…データ、Ｍ１〜Ｍｎ…メタデータ、Ｔ１〜Ｔ３…第１乃至第３の閾値、Ｃ，Ｃ１〜Ｃ３…レベル、Ｅ１〜Ｅｎ…記憶領域。
【図１】
2020154728.tif 000003
【図２】
2020154728.tif 000004
【図３】
2020154728.tif 000005
【図４】
2020154728.tif 000006
【図５】
2020154728.tif 000007