(57)【要約】【課題】ブロック、ページ、及び／又はストライプの劣化の監視をするためシステム及び方法を提供する。【解決手段】一実施形態では、コントローラは、第１のブロックの一部の故障を識別するためにメモリの第１のブロックをスキャンするように、動作可能である。コントローラは、第１のブロックの故障部分に対する入出力（Ｉ／Ｏ）操作を一時停止し、第１のブロックの故障した部分をテストして、故障が一過性の故障であるかどうかを判別する。テストは、第１のブロックのその部分にデータをロードすることと、第１のブロックのロードされた部分からデータを読み取ることと、を含む。テスト後に故障が治まった場合、コントローラは、故障が一過性の故障であると判別することと、第１のブロックの部分に対するＩ／Ｏ操作を再開することと、を行うように、更に動作可能である。【選択図】図１
2019003649.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
記憶装置のブロックをスキャンして、前記ブロックの一部の故障を識別することと、
前記ブロックの前記故障した部分に対する入出力（Ｉ／Ｏ）操作を一時停止することと、
前記ブロックの前記故障した部分をテストして、前記故障が一過性の故障であるかどうかを判別することであって、前記テストが、
前記ブロックの前記部分にデータをロードすることと、
前記ブロックの前記ロードされた部分から前記データを読み取ることと、
前記読み取りに基づいて前記故障が残存するかどうかを判別することとを含む、ことと、
テスト後に前記故障が治まった場合、前記故障が一過性の故障であると判別することと、
前記ブロックの前記部分に対するＩ／Ｏ操作を再開することとを含む、方法。
【請求項２】
前記ブロックの前記故障した部分に対する前記Ｉ／Ｏ操作の一時停止に応答して、前記ブロック上でガベージコレクションを実行することを更に含む、請求項１に記載の方法。
【請求項３】
前記故障が継続している場合、前記ブロックの前記部分を離脱させることを更に含む、請求項１に記載の方法。
【請求項４】
前記データが、テストデータ、Ｉ／Ｏデータ、又はそれらの組み合わせである、請求項１に記載の方法。
【請求項５】
前記データのエラー訂正符号（ＥＣＣ）を増加させることと、
前記ブロックの前記故障した部分の前記データを再テストすることとを更に含む、請求項１に記載の方法。
【請求項６】
前記ブロックの前記故障した部分が故障したページであると判別すること、を更に含み、前記故障したページが、前記記憶装置の複数のブロックにまたがるストライプの部分である、請求項１に記載の方法。
【請求項７】
前記ストライプが故障していると判別することと、
前記ストライプが故障しているという前記判別に応答して、前記ストライプを離脱させることとを更に含む、請求項１に記載の方法。
【請求項８】
記憶システムであって、
メモリの複数のブロックを含む記憶装置と、
前記メモリの第１のブロックをスキャンして前記第１のブロックの一部にある故障を識別することと、前記第１のブロックの前記故障した部分に対する入出力（Ｉ／Ｏ）操作を一時停止することと、前記第１のブロックの前記故障した部分をテストして前記故障が一過性の故障であるかどうかを判別することと、を行うように動作可能であるコントローラとを含み、
前記テストが、前記第１のブロックの前記部分にデータをロードすることと、前記第１のブロックの前記ロードされた部分から前記データを読み取ることと、前記読み取りに基づいて前記故障が残存するかどうかを判別することとを含み、
テスト後に前記故障が治まった場合、前記コントローラが、前記故障が一過性の故障であると判別することと、前記第１のブロックの前記部分に対するＩ／Ｏ操作を再開することとを行うように更に動作可能である、記憶システム。
【請求項９】
前記コントローラが、
前記第１のブロックの前記故障した部分に対する前記入出力（Ｉ／Ｏ）操作の一時停止に応答して、前記第１のブロック上でガベージコレクションを行うように、更に動作可能である、請求項８に記載の記憶システム。
【請求項１０】
前記コントローラが、
前記故障が継続している場合、前記第１のブロックの前記部分を離脱させるように、更に動作可能である、請求項８に記載の記憶システム。
【請求項１１】
前記データが、テストデータ、Ｉ／Ｏデータ、又はそれらの組み合わせである、請求項８に記載の記憶システム。
【請求項１２】
前記コントローラが、
前記データのエラー訂正符号（ＥＣＣ）を増加させ、前記第１のブロックの前記故障した部分のデータを再テストするように、更に動作可能である、請求項８に記載の記憶システム。
【請求項１３】
前記コントローラが、
前記第１のブロックの前記故障した部分が故障したページであると判別するように、更に動作可能であり、前記故障したページが、前記記憶装置の複数のブロックにまたがるストライプの部分である、請求項８に記載の記憶システム。
【請求項１４】
前記コントローラが、
前記ストライプが故障していると判別することと、
前記ストライプが故障しているという前記判別に応答して、前記ストライプを離脱させることとを行うように、更に動作可能である、請求項８に記載の記憶システム。
【請求項１５】
方法であって、
ストライプをスキャンして前記ストライプの故障を識別することであって、前記ストライプが、複数のデータのブロックにまたがる複数のデータのページを含む、ことと、
前記ストライプに対する入出力（Ｉ／Ｏ）操作を一時停止することと、
前記故障したストライプをテストして、前記故障が前記ストライプの１つ以上のページ内にあるかどうかを判別することであって、前記テストが、
前記ストライプの前記ページをＸＯＲ演算して、前記ストライプの前記ページのうちのどのページが故障しているかを判別することと、
前記ストライプの少なくとも前記故障した１つ以上のページ上でガベージコレクションを行うことと、
前記故障した１つ以上のページにデータをロードすることと、
前記ストライプの前記故障した１つ以上のページから前記データを読み取ることとを含む、ことと、
テスト後に前記故障が治まった場合に、前記ストライプに対するＩ／Ｏ操作を再開することとを含む、方法。
【請求項１６】
前記故障が継続している場合、前記ストライプを離脱させることを更に含む、請求項１５に記載の方法。
【請求項１７】
前記データが、テストデータ、Ｉ／Ｏデータ、又はそれらの組み合わせである、請求項１５に記載の方法。
【請求項１８】
前記１つ以上の故障したページの前記データのエラー訂正符号（ＥＣＣ）を増加させることと、
前記１つ以上の故障したページ内の前記データを再テストすることとを更に含む、請求項１５に記載の方法。
【請求項１９】
前記ストライプが、１つ以上の記憶装置にわたって構成されている、請求項１５に記載の方法。
【請求項２０】
前記１つ以上の記憶装置が、ソリッドステートドライブ、ハードディスクドライブ、又はそれらの組み合わせである、請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ソリッドステートドライブ（ＳＳＤ）のような一部のデータ記憶装置は、ハードディスクドライブ（ＨＤＤ）のような可動の機械的構成要素を使用しない。例えば、一部の記憶装置は、データを永続的に記憶するために、メモリセルとして集積回路を使用する。メモリセルは「ページ」に配置され、「ページ」は「ブロック」に配置される。また、ブロックは、ダイの「平面」上に配置される。典型的には、プログラム、消去又は読み取り操作中にブロックが一貫して故障した場合、ブロック全体が離脱させられ、使用可能なメモリプールから除去される。例えば、メモリセルは、多く使用されるほど故障しやすくなる。セルは、典型的に、故障が発生する前に何千もの読み取り／書き込みを処理するように設計されている。しかし、経時的に、読み取り／書き込みは、セルの浮遊ゲートの酸化物層を摩耗させ、セルのデータを記憶する能力を破壊する。ブロックのメモリセルが故障すると、ブロックの一部がまだ使用可能であっても、ブロックは記憶装置の使用可能なメモリプールから除去される。
【発明の概要】
【課題を解決するための手段】
【０００２】
本明細書で提示されるシステム及び方法は、ブロック、ページ、及び／又はストライプの劣化の監視を提供する。一実施形態では、コントローラは、第１のブロックの一部の故障を識別するため、メモリの第１のブロックをスキャンするように動作可能である。コントローラはまた、第１のブロックの故障した部分に対する入出力（Ｉ／Ｏ）操作を一時停止するように、また、第１のブロックの故障した部分をテストして、故障が一過性の故障であるかどうかを判別するように、動作可能である。テストは、第１のブロックの一部にデータをロードし、第１のブロックのロードされた部分からデータを読み取る（例えば、エラー訂正符号（ＥＣＣ）を使用）。テスト後に故障が治まった場合、コントローラは、故障が一過性の故障であると判別し、第１のブロックの部分に対するＩ／Ｏ操作を再開する。
【０００３】
本明細書で開示される様々な実施形態は、設計上の選択の問題として様々な方法で実施され得る。例えば、本明細書のシステム及び方法の実施形態は、コンピュータハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせの形態を取り得る。他の例示的な実施形態は、下に記載される。
【０００４】
ここでは、いくつかの実施形態を、あくまでも例として、添付図面を参照しながら説明する。全ての図面において、同一の参照番号は、同一要素又は同一タイプの要素を表す。
【図面の簡単な説明】
【０００５】
【図１】ブロックが開いているときに書き込みを処理する例示的な記憶システムのブロック図である。
【図２】図１の記憶システムの例示的なプロセスのフローチャートである。
【図３】図１の記憶システムの別の例示的なプロセスのフローチャートである。
【図４】記憶システムの例示的なブロックレイアウトの図である。
【図５】図１の記憶システムの別の例示的なプロセスのフローチャートである。
【図６】図１の記憶システムの別の例示的なプロセスのフローチャートである。
【図７】図１の記憶システムの別の例示的なプロセスのフローチャートである。
【図８】図１の記憶システムの別の例示的なプロセスのフローチャートである。
【図９】例示的な記憶コントローラ及びその関連する記憶装置のブロック図である。
【図１０】ホストシステムとインターフェイスする記憶装置及びその関連するコントローラを含むＩ／Ｏモジュールのブロック図である。
【発明を実施するための形態】
【０００６】
［図面の詳細な説明］
図面及び以下の説明は、特定の例示的な実施形態を例示する。したがって、当業者は、本明細書に明示的な記載も図示もないが、実施形態の範囲内に含まれる特定の原理を具現化する様々な配置を考案することが可能であることを理解されよう。更に、本明細書に記載のいずれの実施例も、実施形態の原理の理解を助けることを意図しており、そのような具体的に挙げられた実施例及び条件に限定されないものとして解釈されるべきである。その結果として、実施形態は、下に記載されるいずれの特定の実施例にも限定されない。
【０００７】
図１は、ホストシステム（下に示す）からのＩ／Ｏ要求から生じたデータを記憶するように動作可能である、例示的な記憶システム１０のブロック図である。記憶システム１０は、記憶素子１４（例えば、不揮発性ＮＡＮＤフラッシュ装置又は他の持続性記憶記憶装置）と、任意のバッファ１３（例えば、キャッシュ、ステージングなどのためのダイナミックランダムアクセスメモリ又は「ＤＲＡＭ」）と、を更に含む、記憶装置１５を含む。例えば、記憶素子１４は、シングルレベルセル（ＳＬＣ）アーキテクチャ及びマルチレベルセル（ＭＬＣ）アーキテクチャのような１つ以上のＳＳＤアーキテクチャを使用して構成され得る。ＳＬＣアーキテクチャは、メモリセルが１ビットのデータを記憶することを可能にする。従来、ＭＬＣアーキテクチャは、メモリセルが２ビットのデータを記憶できることを意味するものであった。しかし、アーキテクチャは進化し、現在は、１メモリセル当たり３ビットを記憶するトリプルレベルセル（ＴＬＣ）アーキテクチャ、及び１メモリセル当たり４ビットを記憶するクアッドレベルセル（ＱＬＣ）アーキテクチャなど、更に高いレベルの密度を提供する。しかしながら、一般には、１セル当たり２ビット以上のデータを記憶するアーキテクチャはいずれもＭＬＣアーキテクチャと称される場合もある。
【０００８】
記憶素子１４のそれぞれのメモリセリは、制御ゲートを有する金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）のように構成され得る。しかし、それぞれのメモリセルはまた、制御ゲートとＭＯＳＦＥＴのチャネルとの間に構成された絶縁酸化物層に囲まれた浮遊ゲートを有する。浮遊ゲートはその絶縁層によって電気的に分離されているため、その上に置かれた電子は電界（例えば印加電圧）の印加により除去されるまでトラップされる。浮遊ゲート上に電子を置くと、トランジスタは論理「０」状態になる。浮遊ゲートが充電されると、その中の電子が制御ゲートからの電界を遮蔽し、メモリセルの閾値の電圧を上昇させる。これは、より高い電圧が制御ゲートに印加されて、トランジスタのチャネルが導電性になることを意味する。
【０００９】
トランジスタから値を書き込むために、閾値の電圧間の中間電圧が制御ゲートに印加される。この中間電圧でチャネルが導通すると、浮遊ゲートは充電されず、論理「１」がメモリセルに記憶される。チャネルが中間電圧で導通していない場合は、浮遊ゲートが充電されて、論理「０」がメモリセル内に記憶されることを示す。中間電圧が制御ゲートでアサートされると、トランジスタを介して流れる電流があるかどうかを判別することで、論理「０」又は論理「１」の有無が感知、すなわち「読み取り」される。
【００１０】
アーキテクチャ（例えば、ＳＬＣ、ＭＬＣ、磁気抵抗、又はそれらの組み合わせ）に関係なく、メモリセルは、典型的には１ページ内に数千のセルを含むページに概ね配置される。例えば、ＳＬＣフラッシュ装置の単一ページは、１６，３８４ビットのデータ、すなわち１６キロバイト（ｋＢ）を記憶することができる、１６，３８４個のメモリセルを含み得る。２ビットのＭＬＣフラッシュ装置の単一ページは、同じ量のデータを記憶することができる、８，１９２個のメモリセルを含み得る。典型的なページサイズは、２ｋＢ、４ｋＢ、８ｋＢ、及び１６ｋＢを含む。フラッシュ装置のページは、それぞれのブロックが常に１２８ページ又は２５６ページを含むブロック単位で配置される。このように、フラッシュ装置内のそれぞれのブロックは、２５６ｋＢと４メガバイト（ＭＢ）との間で変化し得る。データがフラッシュ装置に書き込まれる際に、コントローラ１１は、ブロックが満杯になるまでページ単位で装置をプログラムする。フラッシュ装置のブロックが満杯になると、コントローラ１１がブロックに対して消去処理を行うまで、ブロックは閉鎖される。しかし、これらの特徴は、技術の進行に伴って常に変化するため、実施形態は、いかなるページサイズ又はブロックサイズにも限定されることを意図しないことに留意されたい。
【００１１】
上記に基づき、コントローラ１１は、記憶装置１５に対するデータの読み書きを行うためのＩ／Ｏ要求を提供するように動作可能な、任意の装置、システム、ソフトウェア、ファームウェア、又はそれらの組み合わせである。記憶素子１４は、データの１つ以上のビットを持続的に記憶するように動作可能なメモリを含む、任意の装置である。
【００１２】
図２は、図１の記憶システム１０の例示的なプロセス２０のフローチャートである。本実施形態では、コントローラ１１は、プロセス素子２１において記憶素子１４内のメモリのブロックをスキャンし、プロセス素子２２においてブロックの一部（例えば、１つ以上のセル、ブロックの１つ以上のページ、ブロック全体など）にエラーがあるかどうかを判別するように、動作可能である。例えば、コントローラ１１は、バックグラウンドスキャンプロセス中に、標準ＥＣＣを用いてブロックのメモリからデータを読み取り、ＥＣＣで訂正できないエラーが存在するか否かを判別し得る。
【００１３】
エラーが存在する場合、コントローラ１１は、プロセス素子２３において、ブロックの故障した部分に対するＩ／Ｏ操作を一時停止する。ブロックの一部が一時停止されている間、コントローラ１１は、プロセス素子２４において、ブロック上で最初にガベージコレクションを行うことにより、ブロックのその部分のテストを開始し得る。例えば、コントローラ１１は、使用されていないブロックの未消去部分を移動させてもよい。コントローラ１１によるバックグラウンドタスクは、次いで、ブロックのその部分を消去する。
【００１４】
その後、コントローラ１１は、プロセス素子２５において、ブロックの故障した部分にデータをロードし、プロセス素子２６において、ＥＣＣを用いてブロックの新たにロードされた部分を読み取る。例えば、コントローラ１１は、ブロックのその部分にテストデータをロードしてもよい。既知であるこのテストデータは、プロセス素子２７において、ＥＣＣを用いて読み取られ、次いで、ブロックのその部分に最初にロードされたデータと比較されて、何らかのエラーがなお存在するかどうかを判別され得る。
【００１５】
あるいは、コントローラ１１は、実際のＩ／Ｏからのデータを。例えば、コントローラ１１は、Ｉ／Ｏ要求を処理し、データを記憶システム１０のどこかに記憶できるまで、Ｉ／Ｏ要求のデータをバッファ１３にキャッシュしてもよい。コントローラ１１は、このデータを使用し、これをブロックの一時停止された部分にロードしてもよい。コントローラ１１は次いで、プロセス素子２７において、ＥＣＣを用いてこのデータを読み取り、バッファ１３内のデータと比較することで、エラーがなお存在するか否かを判別し得る。
【００１６】
エラーがなお存在する場合、コントローラ１１は次いで、プロセス素子２８において、ＥＣＣを増加させ（例えば、符号レートを増加させる）、プロセス素子２９において、ブロックのその部分の故障カウントを増分し得る。例えば、このテストプロセスは、本来反復し得る。また、コントローラ１１は、ブロックのその部分が正しくデータを読み取ることに失敗した回数をカウントするように動作可能である。これに関して、コントローラ１１は、プロセス素子３０において、故障カウントが閾値の故障回数を超えたか否かを判別し得る。ブロックのその部分が閾値を超えていない場合、コントローラ１１は、プロセス素子２４において、ブロック上で別のガベージコレクションを行い、プロセスは以前のとおりに継続する。ただし、プロセス素子３０において、ブロックのその部分が閾値の故障カウントに達している場合、コントローラ１１は、プロセス素子３１において、ブロックのその部分を離脱させ、他のＩ／Ｏがブロックのその部分に向けられ得ないようにする。
【００１７】
プロセス素子２７に戻り、プロセス素子２６において、ブロックのロードされた部分を読み取った後にエラーがなければ、コントローラ１１は、プロセス素子３２において、上記の故障カウントがゼロより大きいかどうかを判別する。ブロックのその部分が読み取りに正常に合格した場合、コントローラ１１は、プロセス素子３３において、故障カウントを減分する。故障カウントがなおゼロより大きい場合、コントローラ１１は、ブロックのその部分のテスト（例えば、ガベージコレクション、並びにブロックのその部分のロード及び読み取りを継続する。そうでなければ、故障カウントがゼロ（又は他の許容しきい値）に等しい場合、コントローラ１１は、ブロックのその部分を記憶システム１０のメモリプールに戻す。すなわち、コントローラ１１は、プロセス素子３４において、ブロックのその部分に対するＩ／Ｏ操作が継続できるように、ブロックのその部分を一時停止から復帰させる。コントローラ１１は、次いで、ブロックの以前に故障した部分、並びに記憶素子１４内の他のブロックの周期的なスキャンを継続する。
【００１８】
また、Ｉ／Ｏ要求は、ホストシステムから直接送信され得、多くの場合はそうであることにも留意されたい。しかしながら、Ｉ／Ｏ要求は、記憶システム１０に到着する前に、別のデバイスにキャッシュされてもよい。例えば、Ｉ／Ｏ要求は、実行される前にバッファ１３内にキャッシュされてもよく、又は更には、他の記憶装置自体によって発行されてもよい。したがって、本実施形態は、いずれかの特定のタイプのＩ／Ｏ要求に限定されることを意図しない。
【００１９】
図３は、記憶システム１０の別の例示的なプロセス４０のフローチャートである。本実施形態では、記憶システム１０は、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ）システムのものと同様のストライプ構成を有する。これに関して、データのページは、記憶素子１４の複数のブロックにプログラム／複製されてもよい。例えば、図４は、記憶素子１４に存在し得るブロック「０」〜「Ｎ」を示している（「Ｎ」は、単に「１」より大きい整数を表すことを意図するものであり、必ずしも本明細書に指定された他の「Ｎ」参照と同等ではない）。ブロックは、ページ０〜Ｍを含む（「Ｍ」は、単に「１」より大きい整数を表すことを意図するものであり、必ずしも本明細書に指定された他の「Ｎ」参照と同等ではない）。しかし、この例では、ページはブロック「０」〜「Ｎ」にわたってストライプされている。例えば、ブロック０、１、３、及びＮはそれぞれページ「１」を含む。各ページ「１」は、ブロック内の他のページ「１」のデータの複製である。すなわち、ブロック「０」のページ「１」は、ブロック「１」のページ「１」の同一データを含み、ブロック「１」のページ「１」は、ブロック「３」のページ「１」の同一データを含む、というようになる。
【００２０】
この点を考慮して、コントローラ１１は、プロセス素子４１において、ストライプを走査する。コントローラ１１は次いで、プロセス素子４２において、読み取ったストライプにエラーが存在するか否かを判別する。ストライプにエラーが存在する場合、コントローラ１１は、プロセス素子４３において、そのストライプへのＩ／Ｏ操作を一時停止し、コントローラ１１は、プロセス素子４４において、ストライプのページをＸＯＲ演算してストライプの故障したページ（複数可）を判別し得る。例えば、ブロック「０」のページ「１」がエラーを有し、ブロック１、３、及びＮの残りのページ「１」が良好なデータを有すると想定する。コントローラ１１は、ブロック同士をＸＯＲ演算して、ブロック「０」のページ「１」のエラーの位置を特定し得る。代替的に又は追加的に、コントローラ１１は、データを回復させるための何らかの他の技術を使用してもよい（例えば、リードソロモン、ＥＣＣなど）。
【００２１】
故障のあるページ（複数可）の位置が特定されると、コントローラ１１は、プロセス素子４５において、ストライプのブロック上でガベージコレクションを行う。例えば、コントローラ１１は、故障のあるページを消去してもよい。次いで、コントローラ１１は、プロセス素子４６において、ページにデータ（例えば、上記と同様にテストデータ又は実データ）をロードしてもよい。コントローラ１１は、次いで、プロセス素子４７において、ＥＣＣを用いてページからデータを読み取り、その後、プロセス素子４８において、エラーがページ（複数可）にまだ存在するか否かを判別する。上記と同様に、エラーがまだ存在する場合には、コントローラ１１は、プロセス素子４９及び５０において、ＥＣＣを増加させ、故障カウントを増分する。
【００２２】
プロセス素子５１において、故障カウントがある閾値の故障回数より大きい場合には、コントローラ１１は、故障したページ（複数可）を離脱させる。全てのページが閾値を超える回数故障したと判別された場合、コントローラ１１は、ストライプ全体を離脱させてもよい。しかしながら、故障カウントが閾値の故障回数未満であれば、コントローラ１１は、故障したページ（複数可）のテスト（例えば、ストライプのブロック（複数可）上でのガベージコレクションの実行、ページへのデータのロード、及びＥＣＣを用いたページの読み取り）を継続する。
【００２３】
プロセス素子４８に戻り、故障したページのテスト後にエラーが生じていなければ、コントローラ１１は、プロセス素子５３において、故障カウントがゼロ（又は他の許容閾値数）より大きいか否かを判別する。故障カウントがゼロより大きい場合には、コントローラ１１は、プロセス素子５４において、故障カウントを減分し、その後、ストライプの故障したページ（複数可）のテスト（例えば、ブロック（複数可）のガベージコレクション、並びにストライプのページのロード及び読み取り）を継続する。そうでなければ、コントローラ１１は、プロセス素子５５において、ストライプに対するＩ／Ｏ操作が継続され得るように、ストライプの一時停止を除去する。また、コントローラ１１は、そのストライプに加えて、記憶素子１４内の他のストライプのスキャンも（例えば、バックグラウンドスキャンプロセスの一環として）継続する。
【００２４】
本明細書内のプロセスの実施形態は例示的であり、限定されることを意図しないことに留意されたい。そのプロセス素子は、本明細書に開示されるメモリの一時停止及び／又は離脱の原理をなお具現化しながら、再配置又は変更されてもよい。
【００２５】
図５〜図８は、図１の記憶システム１０の別の例示的なプロセス６０のフローチャートである。例えば、図５〜図８のそれぞれの図は、コントローラ１１がページ、ストライプ、及び／若しくはブロックの一時停止並びに／又は離脱を実行する、プロセス６０の一部を表す。プロセス６０は、図５において、コントローラ１１がブロックのページを監視し、ページ内のエラーを検出するプロセス素子６１から始まる。プロセス素子６２において、コントローラ１１はページを読み取り、ページが複数のブロックにわたってストライプ化されている場合、コントローラ１１は、プロセス素子６３において、そのページに対するＯＣＲを行い得る。例えば、コントローラ１１は、ページをストライプ内の他のページ（又はリードソロモン、ＥＣＣなどの何らかの他の形態のデータ回復）とＸＯＲ演算して、ストライプ中のページのうちの１つ以上が故障しているか否かを判別し得る。
【００２６】
ＯＣＲが行われた後は、コントローラ１１は、プロセス素子６４において、ブロック上でガベージコレクションを行い、その後、プロセス素子６５において、ページが劣化リストにあるか否かを判別する。例えば、コントローラ１１が以前、ページ中にエラーを検出している場合、コントローラ１１は、そのページを一時停止にした可能性がある。このように、ページが現在は一時停止中ではない場合、コントローラ１１は、プロセス素子６６において、ページを劣化リストに入れる。この劣化リストにあるページはまだ、Ｉ／Ｏ操作からデータを取り込むことができ得る。コントローラ１１は次いで、プロセス素子６７において、ページエラーカウントを増分し、図６に示すように、プロセス素子「Ｂ」を介してページの解析に進む。しかしながら、現在、ページが劣化リストにある場合、コントローラ１１は、図７に示すように、プロセス素子「Ｃ」を介して故障したページのテストに直接進む。
【００２７】
図６に戻り、コントローラ１１は、プロセス素子６８において、ページにデータをロードし、ＥＣＣを用いてデータを読み取ることにより、ページのテストを開始する。コントローラ１１は次いで、プロセス素子６９において、読み取ったばかりの劣化したページが合格したか否かを判別する。劣化ページが、ＥＣＣを用いた読み取り中にエラーを含んでいた場合、コントローラ１１は、図７に示すように、プロセス素子「Ｄ」を介して故障したページのテストに直接進む。そうでなければ、劣化したページはＥＣＣを用いた読み取りに合格し、コントローラ１１は、プロセス素子７０において、そのページのエラーカウントを減分する。次いで、プロセス素子７１において、ページのエラーカウントがある閾値未満である場合、ページ中のエラーが本質的に一過性であるとみなされたため、コントローラ１１は、プロセス素子７２において、劣化リストからページを除去し、Ｉ／Ｏ操作を継続する。コントローラ１１は、次いで、バックグラウンドスキャン操作中に、そのページに加えてブロック内の他のページの監視を継続する。しかしながら、ページのエラーカウントが閾値より大きい場合、ページは複数の一過性のエラーを受けている可能性がある。また、コントローラ１１は、プロセス素子「Ａ」を介して、プロセス素子６８のロード／読み取り操作の実行を継続することでページのチェックを継続し、エラーカウントが減少するかどうかを確認し得る。
【００２８】
再び、劣化したページが読み取り操作に合格しなかった場合（例えば、プロセス素子６９において、ページの読み取りに失敗がある場合）、図７に示すように、コントローラ１１は、プロセス素子「Ｄ」を介して、故障したページのテストに直接進む。本実施形態では、コントローラ１１は、プロセス素子７３において、ブロック上でガベージコレクションを行い、次いで、プロセス素子７４において、ページのエラーカウントを増分する。コントローラ１１は、プロセス素子７５において、ページのエラーカウントがある閾値より大きいか否かを判別する。閾値より大きくなければ、コントローラ１１は、図６に示すように、プロセス素子「Ａ」を介してページのロード／読み取りを行うことによってページの再試行を試みる。しかしながら、ページのエラーカウントが閾値より大きい場合、コントローラ１１は、プロセス素子７６において、ページャカウントをゼロに設定し、プロセス素子７６において、後続のＩ／Ｏ操作からページを一時停止し、それによって、記憶素子１４のメモリプールからページを除去する。
【００２９】
ページが一時停止になると、コントローラ１１は、プロセス素子７８において、ＥＣＣ／符号レートを増加させる。コントローラ１１は次いで、プロセス素子７９において、エラーがないかページをスキャンする。これには、ページへのデータのロードと、増加したＥＣＣを用いたデータの読み取りと、を含み得る。そこから、図８に示すように、プロセス素子「Ｅ」を介してコントローラ１１によって離脱評価が行われる。
【００３０】
この離脱評価では、コントローラ１１は、一時停止したページが増加したＥＣＣで合格したか否かを判別する。合格した場合、コントローラ１１は、ページを劣化状態のままにするが、図６に示すように、プロセス素子「Ａ」を介して、Ｉ／Ｏ操作を継続し、増加したＥＣＣを用いてページのロード及び読み取りを行うことを可能にする。しかしながら、増加したＥＣＣを用いてもなおページでエラーが生じた場合、コントローラ１１は、プロセス素子８１において、ページの離脱を決定する。ここから、ストライプ解析を行い、ストライプ内の離脱されたページ数が閾値に達しているか否かが判別される。例えば、ストライプ内のページをＸＯＲ演算により回復できなかった場合、コントローラ１１は、プロセス素子８４において、ストライプ全体を離脱させ、それによってＩ／Ｏ操作がそのストライプに対して行われることを防止する。
【００３１】
ストライプ内の離脱されたページの数が閾値数未満である場合、コントローラ１１は、プロセス素子８３において、１ブロック当たりの離脱されたページの割合が閾値より大きいか否かを判別する。例えば、多数のページが故障し、ＥＣＣを増加してもそれらのページが動作不能と思われる場合、コントローラ１１は、プロセス素子８５において、ブロック全体を離脱させる。１ブロック当たりの離脱されたページの割合が閾値未満である場合、コントローラ１１は、ページを劣化リストに保持したまま、図６に示すように、プロセス素子「Ａ」を介して増加したＥＣＣを用いてそれらのページの読み取りを試みる。
【００３２】
典型的には、ブロックのページが故障している場合には、ブロック全体が離脱された。記憶素子１４がフラッシュ装置である実施形態では、劣化及び／一時停止しているページに対するこの新たなアプローチは、ブロックが生存することを可能にし、それによって、記憶素子１４の寿命を長くするほか、記憶素子１４の使用可能なメモリの量を増加させる。更に、ブロック全体を離脱させることは、概ね、ガベージコレクション全体の再構築を必要とし、記憶システム１０の性能に影響を及ぼし得る。個々のページを離脱させること、又は少なくとも劣化させることは、プロセスが典型的なスキャンプロセスの一部としてバックグラウンドで行われるため、性能に影響を及ぼさない。また、劣化しているページを検出することにより、そのページが回復不可能な読み取りのエラーを有する前に、ページを離脱させることができる。
【００３３】
本明細書に開示される実施形態は、ＸＯＲ及びリードソロモンＯＣＲ技術など、ＥＣＣ及び外符号回復（ＯＣＲ）技術に限定されることを意図しないことに留意されたい。例えば、フラッシュ装置において、別の回復技術は、より信頼性の高い結果を生成するために電圧基準閾値（Ｖｒｅｆ）をディザリング（例えば、変更）することを含み得る。
【００３４】
本明細書内の実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせの形態を取り得る。図９及び図１０は、本明細書に記載のシステム及び方法を使用するように動作可能であり得る、そのような組み合わせを示している。より具体的には、図９は、例示的な記憶システム１０及びその関連する装置コントローラ（例えば、コントローラ１１）、並びに記憶装置１５（例えば、図１の記憶素子１４及びバッファ１３）のブロック図である。図１０は、ホストシステム５０２とインターフェイスする、記憶システム１０と、その関連するコントローラ１１／記憶装置１５と、を含む、記憶モジュール２１６のブロック図である。
【００３５】
図９において、コントローラ１１は、ホストシステムとインターフェイスしてホストシステムのＩ／Ｏ操作を伝達するように動作可能な、ホストインターフェイス１１１を含む。ホストインターフェイス１１１は、個々のＩ／Ｏコマンド（例えば、記憶装置１５内のあるアドレスへの読み書きコマンド）の進行を追跡するように動作可能な、タグ追跡モジュール１１３が構成されてもよい。タグ追跡モジュール１１３は、処理の状況を識別するために、ホストシステムから受信したコマンドの外部フラグと、コマンドの処理中にコントローラ１１がアクセスできる内部フラグと、を関連付けてもよい。
【００３６】
コントローラ１１はまた、ホストインターフェイス１１１から受信されたデータ又はバッファ１３１内に存在するデータに対してあるタスク、例えば、データのフォーマット、データのトランスコード、データの圧縮、データの解凍、データの暗号化、データの復号化、データの符号化／フォーマット、又はそれらのいずれかの組み合わせのうちの１つ以上を実行するよう、概ね動作可能な処理エンジン１２３を含む、データ処理モジュール１２１を含む。例えば、データ処理モジュール１２１の処理エンジン１２３は、Ｉ／Ｏ操作のデータが記憶装置１５の論理アドレスに書き込まれ得るよう、操作を生成するホストシステムのＩ／ＯモジュールからのＩ／Ｏ操作を処理するように動作可能であり得る。処理エンジン１２３は、書き込みＩ／Ｏコマンドのデータを抽出して、記憶装置１５に記憶する準備をし得る。このとき、処理エンジン１２３は、様々なデータ圧縮アルゴリズムのいずれかを用いてデータを圧縮してもよい。記憶装置１５からデータを検索する場合、処理エンジン１２３は、データを圧縮して記憶するために用いたアルゴリズムに従って、データを解凍してもよい。
【００３７】
バッファ１３１は、ホストシステムとの間で転送されるデータを格納するように動作可能である。バッファ１３１はまた、コントローラ１１が記憶素子１４、バッファ１３、及び任意の可能なより高いレベルのＲＡＩＤ機能を管理するために使用するメモリテーブルなどのシステムデータを、メモリ１３７に記憶し得る。他のモジュールは、より高いレベルのエラー訂正及び冗長性機能を提供するエラー訂正符号（ＥＣＣ−Ｘ）モジュール１３５と、バッファ１３１に対するデータの移動を制御する直接メモリアクセス（ＤＭＡ）モジュール１３３と、を含んでもよい。
【００３８】
コントローラ１１はまた、様々なエラー訂正符号技術（例えば、巡回冗長検査、ハミング符号、低密度パリティ検査コーダなど）のいずれかを用いてバッファ１３１内のデータのより低いレベルのエラー訂正及び冗長処理を提供するよう動作可能な、エラー訂正符号モジュール１６１を含む。
【００３９】
装置インターフェイス論理モジュール１９１は、その中のデバイスのプロトコルに従って、記憶装置１５との間でデータを転送するように動作可能である。装置インターフェイス論理モジュール１９１は、記憶装置１５に対するＩ／Ｏ操作を待ち行列に入れるように動作可能な、スケジューリングモジュール１９３を含む。
【００４０】
本明細書のコントローラ１１はまた、ルックアップテーブル１２に従って記憶装置１５内の場所にデータドレッシングを行うように動作可能な、マップモジュール１４１を含む。例えば、マップモジュール１４１は、ルックアップテーブル１２を用いて、ホストシステムからの論理ブロックアドレス（ＬＢＡ）をバッファ１３、記憶素子１４、又はその両方に向けられたブロック／ページアドレスに変換し得る。ルックアップテーブル１２は、コントローラ１１及び／若しくは記憶装置１５内の全体又は一部に記憶されてもよい。例えば、いくつかの実施形態では、ルックアップテーブル１２の一部は、概ね全てのルックアップテーブル１２が記憶装置１５に不揮発的に記憶されている状態で、コントローラ１１にキャッシュされてもよい。
【００４１】
リサイクラ１５１は、コントローラ１１に代わってガベージコレクションを行う。例えば、リサイクラ１５１は、マップモジュール１４１のルックアップテーブル１２をスキャンすることにより、活発に使用されている記憶装置１５の部分を判別し得る。これに関して、リサイクラ１５１は、未使用部分を消去することにより、記憶装置１５の未使用の又は「割当解除された」部分を書き込みに使用できるようにし得る。リサイクラ１５１はまた、記憶装置１５内のデータを移動させて、記憶装置１５のより大きな連続部分を書き込みに使用できるようにし得る。
【００４２】
コントローラ１１はまた、コントローラ１１の様々な態様を制御するＣＰＵ１７１を含む。例えば、ＣＰＵ１７１は、命令又はファームウェアを処理して、ホストシステムから受信したコマンドを追跡及び制御するコマンド管理１７３を実装し得る。このファームウェアはまた、バッファ１３１及び変換管理１７７の割り当て及び使用を制御する、又はマップモジュール１４１を制御する、バッファ管理１７５を実装し得る。ファームウェアはまた、外部データアクセスと再生データアクセスとの間に生じ得るような競合を回避するために、データアドレッシングの一貫性を制御するコヒーレンシ管理１７９を使用し得る。ファームウェアはまた、デバイスインターフェイス論理モジュール１９１を制御するデバイス管理１８１と、コントローラ１１内のコンポーネントの識別情報の変更及び通信を制御する識別管理１８２と、を提供し得る。
【００４３】
図１０において、ホストシステム２０２は、ソフトウェア命令を処理し、記憶モジュール２１６との間でＩ／Ｏ操作を実行して１つ以上の記憶システム１０に読み書きするように動作可能である。これに関して、ホストシステム２０２は、ホストシステム２０２に対するコンピューティング環境を提供するオペレーティングシステム２０５を含んでもよい。ドライバ２０７は、構成される様々な記憶システム１０との間でＩ／Ｏ操作を実行するよう、リンク２０６を介して記憶モジュール２１６に伝達するように動作可能である。
【００４４】
他のコンピューティングシステムのように、オペレーティングシステム２０５は、管理ソフトウェア２１４（例えば、Ｂｉｏｓソフトウェア）を介して起動され得る。ホストシステム２０２はまた、ホストシステム２０２に代わって様々な演算処理（例えば、単語処理アプリケーション、画像処理アプリケーションなど）を実行するアプリケーションソフトウェア２０９を含んでもよい。ホストシステム２０２はまた、通信ネットワーク２１９（例えば、インターネット、ローカルエリアネットワーク、広域ネットワークなど）を介して１つ以上のサーバ２１８との間でＩ／Ｏ操作を行うように動作可能な、Ｉ／Ｏ及び記憶機能２１７を含んでもよい。これに関して、記憶モジュール２１６は、ホストシステム２０２に対するＩ／Ｏ操作のキャッシュメモリとしての機能を果たし得る。
【００４５】
記憶モジュール２１６は、ホストシステム２０２の様々なＩ／Ｏ操作を記憶システム１０のＬＢＡに切り替えるように動作可能な、中間コントローラ２０３が構成されてもよい。これに関して、記憶モジュール２１６は、中間コントローラ２０３がＬＢＡへのＩ／Ｏ操作を行うためのマッピング情報を記憶するメモリ２１２を含んでもよい。コントローラ１１のマップモジュール１４１はまた、ルックアップテーブル１２に従って、記憶装置１５内の場所に対するサイズ可変マッピング単位でのデータアドレッシングを行い、ホストシステム２０２からのＬＢＡを記憶装置１５に向けられたブロック／ページアドレスに変換するように動作可能であり得る。
【産業上の利用可能性】
【００４６】
本明細書に開示される実施形態は、ＨＤＤ、ＳＳＤ、磁気抵抗記憶装置などを含む、他の持続的な記憶装置に実装され得るよう、いかなるタイプの記憶装置１５にも限定されないことに留意されたい。
【符号の説明】
【００４７】
１０  記憶システム、１１  コントローラ、１３  バッファ、１４  記憶素子、１５  記憶装置。
【図１】
2019003649.tif 000003
【図２】
2019003649.tif 000004
【図３】
2019003649.tif 000005
【図４】
2019003649.tif 000006
【図５】
2019003649.tif 000007
【図６】
2019003649.tif 000008
【図７】
2019003649.tif 000009
【図８】
2019003649.tif 000010
【図９】
2019003649.tif 000011
【図１０】
2019003649.tif 000012
【手続補正書】
【提出日】平成30年10月11日(2018.10.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
記憶装置のブロックをスキャンして、前記ブロックの一部の故障を識別することと、
前記ブロックの前記故障した部分に対する入出力（Ｉ／Ｏ）操作を一時停止することと、
前記ブロックの前記故障した部分をテストして、前記故障が一過性の故障であるかどうかを判別することであって、前記テストが、
前記ブロックの前記部分にデータをロードすることと、
前記ブロックの前記ロードされた部分から前記データを読み取ることと、
前記読み取りに基づいて前記故障が残存するかどうかを判別することとを含む、ことと、
テスト後に前記故障が治まった場合、前記故障が一過性の故障であると判別することと、
前記ブロックの前記部分に対するＩ／Ｏ操作を再開することとを含む、方法。
【請求項２】
前記ブロックの前記故障した部分に対する前記Ｉ／Ｏ操作の一時停止に応答して、前記ブロック上でガベージコレクションを実行することを更に含む、請求項１に記載の方法。
【請求項３】
前記故障が継続している場合、前記ブロックの前記部分を離脱させることを更に含む、請求項１に記載の方法。
【請求項４】
前記データのエラー訂正符号（ＥＣＣ）を増加させることと、
前記ブロックの前記故障した部分の前記データを再テストすることとを更に含む、請求項１に記載の方法。
【請求項５】
前記ブロックの前記故障した部分が故障したページであると判別すること、を更に含み、前記故障したページが、前記記憶装置の複数のブロックにまたがるストライプの部分である、請求項１に記載の方法。
【請求項６】
前記ストライプが故障していると判別することと、
前記ストライプが故障しているという前記判別に応答して、前記ストライプを離脱させることとを更に含む、請求項１に記載の方法。
【請求項７】
記憶システムであって、
メモリの複数のブロックを含む記憶装置と、
前記メモリの第１のブロックをスキャンして前記第１のブロックの一部にある故障を識別することと、前記第１のブロックの前記故障した部分に対する入出力（Ｉ／Ｏ）操作を一時停止することと、前記第１のブロックの前記故障した部分をテストして前記故障が一過性の故障であるかどうかを判別することと、を行うように動作可能であるコントローラとを含み、
前記テストが、前記第１のブロックの前記部分にデータをロードすることと、前記第１のブロックの前記ロードされた部分から前記データを読み取ることと、前記読み取りに基づいて前記故障が残存するかどうかを判別することとを含み、
テスト後に前記故障が治まった場合、前記コントローラが、前記故障が一過性の故障であると判別することと、前記第１のブロックの前記部分に対するＩ／Ｏ操作を再開することとを行うように更に動作可能である、記憶システム。
【請求項８】
前記コントローラが、
前記第１のブロックの前記故障した部分に対する前記入出力（Ｉ／Ｏ）操作の一時停止に応答して、前記第１のブロック上でガベージコレクションを行うように、更に動作可能である、請求項７に記載の記憶システム。
【請求項９】
前記コントローラが、
前記故障が継続している場合、前記第１のブロックの前記部分を離脱させるように、更に動作可能である、請求項７に記載の記憶システム。
【請求項１０】
前記データが、テストデータ、Ｉ／Ｏデータ、又はそれらの組み合わせである、請求項７に記載の記憶システム。
【請求項１１】
前記コントローラが、
前記データのエラー訂正符号（ＥＣＣ）を増加させ、前記第１のブロックの前記故障した部分のデータを再テストするように、更に動作可能である、請求項７に記載の記憶システム。
【請求項１２】
前記コントローラが、
前記第１のブロックの前記故障した部分が故障したページであると判別するように、更に動作可能であり、前記故障したページが、前記記憶装置の複数のブロックにまたがるストライプの部分である、請求項７に記載の記憶システム。
【請求項１３】
前記コントローラが、
前記ストライプが故障していると判別することと、
前記ストライプが故障しているという前記判別に応答して、前記ストライプを離脱させることとを行うように、更に動作可能である、請求項７に記載の記憶システム。
【請求項１４】
方法であって、
ストライプをスキャンして前記ストライプの故障を識別することであって、前記ストライプが、複数のデータのブロックにまたがる複数のデータのページを含む、ことと、
前記ストライプに対する入出力（Ｉ／Ｏ）操作を一時停止することと、
前記故障したストライプをテストして、前記故障が前記ストライプの１つ以上のページ内にあるかどうかを判別することであって、前記テストが、
前記ストライプの前記ページをＸＯＲ演算して、前記ストライプの前記ページのうちのどのページが故障しているかを判別することと、
前記ストライプの少なくとも前記故障した１つ以上のページ上でガベージコレクションを行うことと、
前記故障した１つ以上のページにデータをロードすることと、
前記ストライプの前記故障した１つ以上のページから前記データを読み取ることとを含む、ことと、
テスト後に前記故障が治まった場合に、前記ストライプに対するＩ／Ｏ操作を再開することとを含む、方法。
【請求項１５】
前記故障が継続している場合、前記ストライプを離脱させることを更に含む、請求項１４に記載の方法。
【請求項１６】
前記データが、テストデータ、Ｉ／Ｏデータ、又はそれらの組み合わせである、請求項１または１４に記載の方法。
【請求項１７】
前記１つ以上の故障したページの前記データのエラー訂正符号（ＥＣＣ）を増加させることと、
前記１つ以上の故障したページ内の前記データを再テストすることとを更に含む、請求項１４に記載の方法。
【請求項１８】
前記ストライプが、１つ以上の記憶装置にわたって構成されている、請求項１４に記載の方法。
【請求項１９】
前記１つ以上の記憶装置が、ソリッドステートドライブ、ハードディスクドライブ、又はそれらの組み合わせである、請求項１８に記載の方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
図１は、ホストシステム（下に示す）からのＩ／Ｏ要求から生じたデータを記憶するように動作可能である、例示的な記憶システム１０のブロック図である。記憶システム１０は、記憶素子１４（例えば、不揮発性ＮＡＮＤフラッシュ装置又は他の持続性記憶装置）と、任意のバッファ１３（例えば、キャッシュ、ステージングなどのためのダイナミックランダムアクセスメモリ又は「ＤＲＡＭ」）と、を更に含む、記憶装置１５を含む。例えば、記憶素子１４は、シングルレベルセル（ＳＬＣ）アーキテクチャ及びマルチレベルセル（ＭＬＣ）アーキテクチャのような１つ以上のＳＳＤアーキテクチャを使用して構成され得る。ＳＬＣアーキテクチャは、メモリセルが１ビットのデータを記憶することを可能にする。従来、ＭＬＣアーキテクチャは、メモリセルが２ビットのデータを記憶できることを意味するものであった。しかし、アーキテクチャは進化し、現在は、１メモリセル当たり３ビットを記憶するトリプルレベルセル（ＴＬＣ）アーキテクチャ、及び１メモリセル当たり４ビットを記憶するクアッドレベルセル（ＱＬＣ）アーキテクチャなど、更に高いレベルの密度を提供する。しかしながら、一般には、１セル当たり２ビット以上のデータを記憶するアーキテクチャはいずれもＭＬＣアーキテクチャと称される場合もある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
あるいは、コントローラ１１は、実際のＩ／Ｏからのデータを読み取る。例えば、コントローラ１１は、Ｉ／Ｏ要求を処理し、データを記憶システム１０のどこかに記憶できるまで、Ｉ／Ｏ要求のデータをバッファ１３にキャッシュしてもよい。コントローラ１１は、このデータを使用し、これをブロックの一時停止された部分にロードしてもよい。コントローラ１１は次いで、プロセス素子２７において、ＥＣＣを用いてこのデータを読み取り、バッファ１３内のデータと比較することで、エラーがなお存在するか否かを判別し得る。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
プロセス素子２７に戻り、プロセス素子２６において、ブロックのロードされた部分を読み取った後にエラーがなければ、コントローラ１１は、プロセス素子３２において、上記の故障カウントがゼロより大きいかどうかを判別する。ブロックのその部分が読み取りに正常に合格した場合、コントローラ１１は、プロセス素子３３において、故障カウントを減分する。故障カウントがなおゼロより大きい場合、コントローラ１１は、ブロックのその部分のテスト（例えば、ガベージコレクション）、並びにブロックのその部分のロード及び読み取りを継続する。そうでなければ、故障カウントがゼロ（又は他の許容しきい値）に等しい場合、コントローラ１１は、ブロックのその部分を記憶システム１０のメモリプールに戻す。すなわち、コントローラ１１は、プロセス素子３４において、ブロックのその部分に対するＩ／Ｏ操作が継続できるように、ブロックのその部分を一時停止から復帰させる。コントローラ１１は、次いで、ブロックの以前に故障した部分、並びに記憶素子１４内の他のブロックの周期的なスキャンを継続する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
本明細書内の実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせの形態を取り得る。図９及び図１０は、本明細書に記載のシステム及び方法を使用するように動作可能であり得る、そのような組み合わせを示している。より具体的には、図９は、例示的な記憶システム１０及びその関連する装置コントローラ（例えば、コントローラ１１）、並びに記憶装置１５（例えば、図１の記憶素子１４及びバッファ１３）のブロック図である。図１０は、ホストシステム２０２とインターフェイスする、記憶システム１０と、その関連するコントローラ１１／記憶装置１５と、を含む、記憶モジュール２１６のブロック図である。
【外国語明細書】
2019003649000001.pdf