(57)【特許請求の範囲】
【請求項１】
データストレージシステムであって、
複数のデータページを有する不揮発性メモリアレイと、
コントローラと、
を備え、
前記コントローラは、
前記複数のデータページの第１のセットの各データページに複数のデータユニット及びイントラページパリティユニットを格納し、かつ前記複数のデータページの第２のセットの各データページに複数のインターページパリティユニットを格納し、
第１のデータページから第１のデータユニットが読み出されたとき、前記第１のセットの前記第１のデータページの前記イントラページパリティユニットを用いてアンコレクタブルエラーを検出し、
前記アンコレクタブルエラーを検出したことに応じて、前記第１のセットの前記データページからの対応するデータユニット及び前記第２のセットの前記データページからの対応するインターページパリティユニットを用いて前記第１のデータユニットのデータのリカバリを行い、
データ読取エラーを検出した前記第１のセットからのデータページがデータページ間エラーコレクションのエラー訂正能力を超過したため、前記リカバリにおいて前記第１のデータユニットの前記データを決定することが成功しなかったと判定した場合は、
修正した読み出しパラメータを用いて前記第１のデータユニット以外の前記第１のセットの１以上のデータユニットを読み取るか、または、修正した復号化パラメータを用いて前記第１のデータユニット以外の前記第１のセットの１以上のデータユニットをデコードし、
前記データ読取エラーを検出した前記第１のセットからのデータページがデータページ間エラーコレクションの前記エラー訂正能力を超過していないと判定した場合は、前記第１のセットの前記データページからの前記対応するデータユニットと、前記第２のセットの前記データページからの前記対応するインターページパリティユニットとを用いて、前記第１のデータユニットの前記データを決定する
ように構成されており、
前記コントローラは、前記第１のセットの前記データページからのデータユニットの全て及び前記第２のセットの前記データページからのインターページパリティユニットの全てを用いずにリカバリを行うように構成される、
データストレージシステム。
【請求項２】
前記第１のセットの各データユニットは、予め定義されたデータセットでパディングした後に、共通の数のデータのオクテットを含み、前記第２のセットの各インターページパリティユニットは、前記共通の数のデータのオクテットを含み、かつ前記第１のセットの前記データページからの対応するデータユニットに少なくとも部分的に基づくパリティに対応する、請求項１に記載のデータストレージシステム。
【請求項３】
前記複数のデータページの各データページは、フラッシュページ（Ｆ−ページ）を含み、各データユニットは、誤り訂正符号ページ（Ｅ−ページ）を含む請求項１に記載のデータストレージシステム。
【請求項４】
前記複数のイントラページパリティユニットは、低密度パリティ検査（ＬＤＰＣ）パリティユニットを含み、前記複数のインターページパリティユニットは、リードソロモン符号（ＲＳ）パリティユニットを含む請求項１に記載のデータストレージシステム。
【請求項５】
前記第１のセットと前記第２のセットはともに、複数のアレイダイの各アレイダイからの１つのＦ−ページを有するスーパーページ（Ｓ−ページ）を形成する、請求項３に記載のデータストレージシステム。
【請求項６】
前記コントローラは、更に、前記第１のデータページから前記第１のデータユニットが読み取られたとき前記第１のデータページの前記イントラページパリティユニットを用いて前記エラーを検出すると、前記修正した読み出しパラメータを用いて前記第１のデータユニットを読み取るように構成される請求項１に記載のデータストレージシステム。
【請求項７】
前記修正した読み出しパラメータは、単一読み出し／複数読み出し、及び電圧閾値調整の少なくとも１つを含む請求項６に記載のデータストレージシステム。
【請求項８】
前記コントローラは、更に、
前記リカバリにおいて前記第１のデータユニットの前記データを決定することに成功しなかったと判定した場合は、前記修正した読み出しパラメータを用いて、前記第１のデータユニット以外の前記第１のセットの前記１以上のデータユニットを読み出すように構成される、
請求項１に記載のデータストレージシステム。
【請求項９】
前記コントローラは、更に、
前記第１のデータページから前記第１のデータユニットが読み取られたとき前記第１のデータページの前記イントラページパリティユニットを用いて前記エラーを検出すると、前記修正した復号化パラメータを用いて、前記第１のデータユニットを復号化するように構成される請求項１に記載のデータストレージシステム。
【請求項１０】
前記コントローラは、
前記リカバリにおいて前記第１のデータユニットの前記データを決定することに成功しなかったと判定した場合は、前記修正した復号化パラメータを用いて、前記第１のデータユニット以外の前記第１のセットの前記１以上のデータユニットを復号化するように構成される、
請求項１に記載のデータストレージシステム。
【請求項１１】
前記コントローラは、更に、
前記複数のデータページの個別データページの品質データに基づいて、前記第１のセット又は前記第２のセットのいずれかに対して前記複数のデータページの前記個別データページを割り当て、
前記第１のセットの前記データページからの対応するデータユニットに少なくとも部分的に基づいて、前記第２のセットの各インターページパリティユニットを決定するように構成される、
請求項１に記載のデータストレージシステム。
【請求項１２】
コントローラと、複数のデータページを含む不揮発性メモリアレイとを備えるデータストレージシステムにおいて、データリカバリを行う方法であって、
前記複数のデータページの第１のセットの各データページに複数のデータユニット及びイントラページパリティユニットを格納し、かつ前記複数のデータページの第２のセットの各データページに複数のインターページパリティユニットを格納するステップと、
第１のデータページから第１のデータユニットが読み出されたとき、前記第１のセットの前記第１のデータページの前記イントラページパリティユニットを用いてアンコレクタブルエラーを検出するステップと、
前記アンコレクタブルエラーを検出したことに応じて、前記第１のセットの前記データページからの対応するデータユニット及び前記第２のセットの前記データページからの対応するインターページパリティユニットを用いて前記第１のデータユニットのデータのリカバリを行うステップと、
データ読取エラーを検出した前記第１のセットからのデータページがデータページ間エラーコレクションのエラー訂正能力を超過したため、前記リカバリにおいて前記第１のデータユニットの前記データを決定することが成功しなかったと判定した場合は、
修正した読み出しパラメータを用いて前記第１のデータユニット以外の前記第１のセットの１以上のデータユニットを読み取るか、または、修正した復号化パラメータを用いて前記第１のデータユニット以外の前記第１のセットの１以上のデータユニットをデコードし、
前記データ読取エラーを検出した前記第１のセットからのデータページがデータページ間エラーコレクションの前記エラー訂正能力を超過していないと判定した場合は、前記第１のセットの前記データページからの前記対応するデータユニットと、前記第２のセットの前記データページからの前記対応するインターページパリティユニットとを用いて、前記第１のデータユニットの前記データを決定する、
ステップと、
を有し、
前記リカバリは、前記第１のセットの前記データページからのデータユニットの全てではなく、かつ前記第２のセットの前記データページからのインターページパリティユニットの全てではないものを用いて行われる、方法。
【請求項１３】
前記第１のセットの各データユニットは、予め定義されたデータセットでパディングした後に、共通の数のデータのオクテットを含み、前記第２のセットの各インターページパリティユニットは、前記共通の数のデータのオクテットを含み、かつ前記第１のセットの前記データページからの対応するデータユニットに少なくとも部分的に基づくパリティに対応する、請求項１２に記載の方法。
【請求項１４】
前記複数のデータページの各データページは、フラッシュページ（Ｆ−ページ）を含み、各データユニットは、誤り訂正符号ページ（Ｅ−ページ）を含む請求項１２に記載の方法。
【請求項１５】
前記複数のイントラページパリティユニットは、低密度パリティ検査（ＬＤＰＣ）パリティユニットを含み、前記複数のインターページパリティユニットは、リードソロモン符号（ＲＳ）パリティユニットを含む請求項１２に記載の方法。
【請求項１６】
前記第１のセットと前記第２のセットはともに、複数のアレイダイの各アレイダイからの１つのＦ−ページを有するスーパーページ（Ｓ−ページ）を形成する、請求項１４に記載の方法。
【請求項１７】
前記第１のデータページから前記第１のデータユニットが読み取られたとき前記第１のデータページの前記イントラページパリティユニットを用いて前記エラーを検出すると、前記修正した読み出しパラメータを用いて前記第１のデータユニットを読み出すステップを更に備える請求項１２に記載の方法。
【請求項１８】
前記修正した読み出しパラメータは、単一読み出し／複数読み出し、及び電圧閾値調整の少なくとも１つを含む請求項１７に記載の方法。
【請求項１９】
前記リカバリにおいて前記第１のデータユニットの前記データを決定することに成功しなかったと判定した場合は、前記修正した読み出しパラメータを用いて前記第１のデータユニット以外の前記第１のセットの前記１以上のデータユニットを読み出すステップを更に備える請求項１２に記載の方法。
【請求項２０】
前記第１のデータページから前記第１のデータユニットが読み取られたとき前記第１のデータページの前記イントラページパリティユニットを用いて前記エラーを検出すると、前記修正した復号化パラメータを用いて、前記第１のデータユニットを復号化するステップを更に備える請求項１２に記載の方法。
【請求項２１】
前記リカバリにおいて前記第１のデータユニットの前記データを決定することに成功しなかったと判定した場合は、前記修正した復号化パラメータを用いて前記第１のデータユニット以外の前記第１のセットの前記１以上のデータユニットを復号化するステップを更に備える請求項１２に記載の方法。
【請求項２２】
前記複数のデータページの個別データページの品質データに基づいて、前記第１のセット又は前記第２のセットのいずれかに対して前記複数のデータページの前記個別データページを割り当てるステップと、
前記第１のセットの前記データページからの対応するデータユニットに少なくとも部分的に基づいて、前記第２のセットの各インターページパリティユニットを決定するステップと、
を更に備える請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステムのためのソリッドステートドライブのようなデータストレージシステムに関する。より具体的には、本開示は、データストレージシステムのためのデータ信頼性スキームに関する。
【背景技術】
【０００２】
ハードディスク及びソリッドステートドライブのような多くのデータストレージコンポーネントは、製造メーカーが消費者に提供する特定の宣伝された信頼性保証を有する。例えば、あるソリッドステートドライブメーカーは、１０−１６から１０−１７のドライブ故障率を保証する。データ信頼性を向上させるために、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）のようなデータ冗長性スキームは、ストレージの信頼性を向上させるために使用される。冗長性は、ストレージデバイス内の複数のストレージ素子をグループに組み合わせ、ミラーリング及び／又は誤り訂正メカニズムを提供することにより提供されてもよい。例えば、ソリッドステートドライブデバイスの各種メモリブロックは、ユーザデータが格納されるストライプグループに組み合わせられてもよい。
【発明の概要】
【０００３】
開示されるデータ信頼性スキームは、データストレージシステムに記憶されたデータを処理する（例えば、読み出し）ために必要な時間を低減することができ、必要なときにデータリカバリを行うことができる。本発明の一部の実施形態では、コントローラは、データストレージシステムに記憶されたデータのためのインターページパリティ（例えば、ＲＡＩＤ構成におけるリードソロモン符号）を実装するように構成される。インターページパリティは、ユーザデータの複数のＦ−ページ（フラッシュページ）のために決定又は生成されたパリティデータを含む。一実施形態では、Ｆ−ページのセットのうち、データを記憶するためにより信頼性のある（例えば、最も高い品質を有する）とみなされるＦ−ページは、インターページパリティデータを記憶するために選択されることができ、一方で他のＦ−ページは、ユーザデータを記憶するために用いられることができる。また、コントローラは、符号化されたデータユニットが処理のために同じサイズを有するように、処理前に、ユーザデータをパディングしうる。コントローラは、更に、Ｆ−ページのサイズにマッチングする粒度又はＥ−ページの粒度のようなより細かな粒度を用いてインターページパリティを管理することができ、ここで、Ｆ−ページは、複数の、このような小さなＥ−ページを含む。一部の実施形態では、インターページパリティが、Ｆ−ページサイズよりも細かい粒度を用いて管理されるとき、データは、冗長性シーケンスの各Ｆ−ページからの全てのユーザ及びパリティデータを用いずに、メモリ故障のイベントにおいてリカバリされることができる。
【図面の簡単な説明】
【０００４】
これから以下の図面を参照して本発明の様々な特徴を実施するシステム及び方法が説明される。
【０００５】
【図１】図１は、本発明の一実施形態に係るデータ信頼性スキームを実装するホストシステム及びストレージシステムを例示する。
【図２】図２は、本発明の一実施形態に係る、複数のダイのフラッシュページ（Ｆ−ページ）を含むスーパーページ（Ｓ−ページ）を示す図である。
【図３】図３は、本発明の別の実施形態に係る、複数のダイのＦ−ページを含むＳ−ページを示す図である。
【図４】図４は、本発明の一実施形態に係るデータ信頼性スキームを実装する処理を示すフローチャートである。
【図５】図５は、本発明の一実施形態に係るデータ検索及びリカバリの処理を示すフローチャートである。
【図６】図６は、本発明の別の実施形態に係るデータ検索及びリカバリの処理を示すフローチャートである。
【発明を実施するための形態】
【０００６】
特定の実施形態が記載されると共に、これらの実施形態はほんの一例として示され、保護の範囲を制限することを意図していない。実際、本書において記載されている新規な方法およびシステムは、様々な他の形で例示され得る。さらにまた、本書において記載されている方法およびシステムの形のさまざまな省略、置き換えおよび変更は、保護の要旨を逸脱しない範囲で行われ得る。
【０００７】
一部の実施形態において本開示にて用いられている「符号化」または「符号化するための」データは、データを符号化する（符号化データの）プロセスおよび／またはデータを復号化する（復号化データの）プロセスに、言及する。例えば、復号化及び／又は符号化は、誤り訂正符号を用いて行われうる。一部の実施形態では、フラッシュメモリのような不揮発性ソリッドステートメモリアレイは、ブロック、ページ等のような物理データユニットに分割されうる。一部の実施形態では、フラッシュメモリページ（Ｆ−ページ）は、単一動作（例えば、極めて小さい）又は一単位としてプログラムされうるフラッシュメモリの最小単位に対応しうる。一部の実施形態では、ブロックは、複数のページを含むことができ、ブロックは、単一動作（例えば、極めて小さい）又は一単位として消去されうるフラッシュメモリの最小単位に対応することができる。一部の実施形態では、フラッシュメモリページは、メモリ位置の複数のグルーピング（例えば、Ｅ−ページ）を含みうる。
【０００８】
概要
開示されるデータ信頼性スキームは、データストレージシステムに記憶されたデータを処理する（例えば、読み出し）ために必要な時間を低減することができ、必要なときにデータリカバリを行うことができる。本発明の一部の実施形態では、コントローラは、データストレージシステムに記憶されたデータのためのインターページパリティ（例えば、ＲＡＩＤ構成におけるリードソロモン符号）を実装するように構成される。インターページパリティは、ユーザデータの複数のＦ−ページ（フラッシュページ）のために決定又は生成されたパリティデータを含む。一実施形態では、Ｆ−ページのセットのうち、データを記憶するためにより信頼性のある（例えば、最も高い品質を有する）とみなされるＦ−ページは、インターページパリティデータを記憶するために選択されることができ、一方で他のＦ−ページは、ユーザデータを記憶するために用いられることができる。また、コントローラは、符号化されたデータユニットが処理のために同じサイズを有するように、処理前に、ユーザデータをパディングしうる。コントローラは、更に、Ｆ−ページのサイズにマッチングする粒度又はＥ−ページの粒度のようなより細かな粒度を用いてインターページパリティを管理することができ、ここで、Ｆ−ページは、複数の、このような小さなＥ−ページを含む。一部の実施形態では、インターページパリティが、Ｆ−ページサイズよりも細かい粒度を用いて管理されるとき、データは、冗長性シーケンスの各Ｆ−ページからの全てのユーザ及びパリティデータを用いずに、メモリ故障のイベントにおいてリカバリされることができる。
【０００９】
本発明の一部の実施形態では、コントローラは、データストレージシステムに記憶されるデータのためのイントラ及びインターページパリティの両方を実装するように構成される。イントラ及びインターページパリティは、記憶されたデータのための二つのレベルの保護が可能である。例えば、イントラＦ−ページパリティデータ（例えば、低密度パリティ検査符号）は、Ｅ−ページに記憶される読み出し又は復号化に関連付けられる、検出された誤り訂正符号（ＥＣＣ）誤りのイベントにおける初期冗長性を提供する。イントラＦ−ページパリティデータは、初めに、Ｅ−ページに対して検出されたＥＣＣエラーを訂正しようとすること、及びＥ−ページに記憶されるユーザデータをリカバリするために用いられることができる。コントローラが検出されたＥＣＣエラーを訂正できない場合には、コントローラは、Ｅ−ページに対してデータリカバリを行うために、インターＦ−ページパリティデータを使用してもよい。
【００１０】
本発明の一部の実施形態では、コントローラは、データ読み出しエラーをリターンする前に、ＥＣＣエラーを訂正しようとする複数のオプションを使い尽くすように構成される。例えば、コントローラは、調整された電圧閾値を用いてＥ−ページの再読出を行い、調整された復号化パラメータを用いてＥ−ページからデータを再復号化してもよい。また、コントローラは、Ｅ−ページについてのインターページパリティリカバリを行うとき、Ｅ−ページのデータをうまくリカバリしようとする他のＥ−ページを再読出又は再復号化してもよい。
【００１１】
システム概要
図１は、本発明の一実施形態に係るデータ信頼性スキームを実装するホストシステム１１０及びストレージシステム１２０を例示している。図示されているように、ストレージシステム１２０（例えば、ハイブリッドハードディスク、ソリッドステートドライブなど）は、コントローラ１３０および１以上の不揮発性メモリ（ＮＶＭ）アレイ１４０を含む。ＮＶＭアレイ１４０は、単一ダイ又は複数ダイに含まれうる。コントローラ１３０は、誤り訂正モジュール１３２を含み、ストレージシステム１２０のための１以上のデータ冗長性スキームを実装及び維持しうる。例えば、誤り訂正モジュール１３２は、Ｅ−ページを含むＦ−ページのセットに対するインターページパリティ（ｉｎｔｅｒ  ｐａｇｅ  ｐａｒｉｔｙ）及びイントラページパリティ（ｉｎｔｒａ  ｐａｇｅ  ｐａｒｉｔｙ）を実装しうる。インター及びイントラページパリティは、Ｆ−ページ及び／又はＥ−ページ粒度レベルで維持されうる。更に、誤り訂正モジュール１３２は、データを記憶するためのダイの品質（例えば、信頼性）に応じて、ユーザデータ又はインターページパリティデータを記憶する際に使用するためのＮＶＭダイのページを割り当てることができる。また、誤り訂正モジュール１３２は、訂正できない（アンコレクタブル（ｕｎｃｏｒｒｅｃｔａｂｌｅ））イントラページエラーが検出されたとき、２つの段階のデータリカバリアプローチを行うことができる。第１の段階では、メモリのページの複数のイントラページ再読出又は再符号化が行われうる。第１の段階が、記憶されたデータのリカバリに失敗した場合には、第２の段階において、インターページリカバリは、メモリの他のページに向けられるイントラページ再読出又は再復号化を含んでもよいように行われうる。
【００１２】
コントローラ１３０は、ホストシステム１１０のストレージインターフェースモジュール１１２（例えば、デバイスドライバ）からデータ及び／又はストレージアクセスコマンドを受信しうる。ストレージインターフェースモジュール１１２により通信されるストレージアクセスコマンドは、ホストシステム１１０により発せられた書き込み及び読み出しコマンドを含みうる。コマンドは、ストレージシステム１２０に論理ブロックアドレスを特定し、コントローラ１３０は、受信したコマンドをＮＶＭアレイ１４０において実行しうる。一実施形態では、データは、１以上の磁気データストレージモジュール（図１には図示せず）にも記憶されてもよい。一実施形態では、他の型のストレージモジュールは、ＮＶＭアレイ１４０及び／又は磁気データストレージモジュールに代えて又は加えて含まれうる。
【００１３】
ストレージシステム１２０は、ストレージシステム１２０がホストシステム１１０のためのメモリストレージとして機能するように、ホストシステム１１０から受信されるデータを記憶することができる。この機能を容易にするために、コントローラ１３０は、論理インターフェースを実装しうる。論理インターフェースは、データが記憶されうる論理アドレスのセット（例えば、連続するアドレス）としてホストシステム１１０ストレージシステムメモリに存在しうる。内部で、コントローラ１３０は、論理アドレスを、不揮発性メモリアレイ１４０及び／又は他のメモリモジュールの１以上における様々な物理メモリアドレスにマップすることができる。
【００１４】
不揮発性メモリアレイ１４０の１つ以上は、ＮＡＮＤフラッシュメモリデバイスを使用して実装され得る。フラッシュ集積回路のアレイ、カルコゲナイドＲＡＭ（Ｃ―ＲＡＭ）、相変化メモリ（ＰＣ―ＲＡＭまたはＰＲＡＭ）、プログラムメタライゼーションセルＲＡＭ（ＰＭＣ―ＲＡＭまたはＰＭＣｍ）、オボニックユニファイドメモリ（ＯＵＭ）、抵抗変化型ＲＡＭ（ＲＲＡＭ（登録商標））、ＮＯＲメモリ、ＥＥＰＲＯＭ、強誘電体メモリ（ＦｅＲＡＭ）、磁気抵抗メモリ（ＭＲＡＭ）、他のディスクリートＮＶＭ（不揮発性メモリ）チップまたはそれらのあらゆる組み合わせ等の、他のタイプのソリッドステートメモリデバイスが選択的に使用され得る。一実施形態において、不揮発性メモリアレイ１４０は、シングルビットの情報よりも多くの情報を記憶できるマルチレベルセル（ＭＬＣ）デバイスを含むことがより好ましいが、シングルレベルセル（ＳＬＣ）メモリデバイスまたはＳＬＣとＭＬＣデバイスの組合せが使用される場合もある。
【００１５】
インターページパリティスキーム
図２は、本発明の一実施形態に係る複数のＮＶＭアレイダイからのＦ−ページを含むスーパーページ（Ｓ−ページ）２００を示す図である。Ｓ−ページ２００は、インターページパリティをサポートし、かつ複数のダイのＦ−ページに亘るデータを記憶するためのＲＡＩＤスキームを有利に提供しうる。１以上のダイが複数のプレーン（例えば、デュアルプレーンダイ）を含む一部の実施形態では、Ｆ−ページは、ダイと同様に複数のプレーンに亘って広がってもよい。
【００１６】
一実施形態では、Ｓ−ページ２００は、ダイ０からダイ１２７として識別される１２８のＮＶＭアレイダイのそれぞれからの１つのＦ−ページを含む。各ダイは、メモリの１つのダイに対応し、かつストレージの複数のブロック（図示せず）を含み、各ブロックは、複数のＦ−ページを更に含む。Ｓ−ページ２００は、１以上のダイ及び／又は１以上のダイ内のブロックから選択されたＦ−ページを含みうる。一実施形態では、この選択は、ダイのＦ−ページの物理位置又はファームウェアに記憶された選択に基づいて行われうる。更に、各Ｆ−ページは、Ｓ−ページ２００のＦ−ページのＲＡＩＤシーケンスを管理するための、符号語（ｃｏｄｅｗｏｒｄ）ストライプ２１２のような複数の符号語ストライプを含む。
【００１７】
不揮発性メモリアレイのダイが同一の物理サイズを有するが、一部のダイは、データ記憶するための、他のダイとは異なるメモリ品質（例えば、信頼性）を有する。例えば、特定のダイは、メモリ製造工程の違いによる他のダイよりも、及び／又は使用による消耗よりも、読み出し又は書き込みエラーを生じずにデータを記憶することに、より適していてもよい。その結果、異なるダイのＦ−ページは、Ｆ−ページが一部であるダイの品質に応じて、異なる量のユーザデータ及びパリティデータを有利に記憶しうる。
【００１８】
図２に示されていないが、各Ｆ−ページは、イントラページパリティデータのデフォルト最小量により保護されうる。ダイが高品質を有するとみなされるとき、当該ダイでのＦ−ページに記憶されるデータを保護するために、当該デフォルト最小量を超えるわずかな追加のイントラページパリティデータしか使用しない又は追加のイントラページパリティデータを使用しなくてもよい。しかし、最適品質未満の他のダイでは、それらのＦ−ページは、イントラページパリティデータのいくつかの追加量を使用してもよい。図２に示される例では、Ｆ−ページのそれぞれは、プレーン部２１４を有するように図示され、一部のＦ−ページについては、追加ドット部２１６を有するように図示される。ドット部２１６は、デフォルト最小量を超える追加イントラページパリティデータを記憶するために使用される部分を示す。
【００１９】
一部の実施形態では、データを記憶するための最高品質を有する１以上のダイは、Ｓ−ページ２００に対してインターＦ−ページパリティデータを記憶するように選択されることができ、他のＦ−ページは、ユーザデータを記憶するために用いられることができる。例えば、ダイ２のＦ−ページ２２０及びダイ４のＦ−ページ２３０は、Ｓ−ページ２００の１２８のＦ−ページの最高品質を有するように決定されている。よって、それらは、デフォルト最小量を超える追加のイントラページパリティデータを有することを必要としないデフォルト最小量を超える（それ故、それらは、ドット部２１６がない）。一実施形態では、それらが、他のＦ−ページと比べて最も多いデータ量を収容することができるため、Ｆ−ページ２２０及び２３０は、インターページパリティデータ（例えば、ＲＡＩＤパリティデータ）を記憶するために用いられる。Ｆ−ページ２１０及び２４０のような他のＦ−ページは、それらが、追加インターページパリティデータを有することによる少ないストレージ領域を有するとき、ユーザデータを記憶するために用いられる。一部の実施形態では、ダイ及びページの品質を決定及び追跡する（ｔｒａｃｋｉｎｇ）ための任意の適切な方法が用いられうる。例えば、データエラーの数は、ダイ及び／又はダイのページに対して追跡されうる。別の例として、ダイのブロックについてのウェアレベルインジケータは、決定され、追跡され、品質を示すために使用されうる。更に別の例として、データエラーの数、ウェアレベルインジケータ及びメモリ品質の１以上の他のインジケータは、シングルメトリック（ｓｉｎｇｌｅ  ｍｅｔｒｉｃ）に組み合わせられうる。
【００２０】
インターＦ−ページパリティデータを求めるために使用される符号器は、データのセット量を有するＦ−ページをサポートしてもよい。このような符号器を、Ｓページ２００の複数のＦ−ページサイズをサポート可能にするために、Ｆ−ページからのデータは、符号器による符号化の前に、最大Ｆ−ページサイズまでデータをパディングデータによりパディングされてもよい。例えば、Ｆ−ページ２２０及び２３０が、Ｓ−ページ２００のＦ−ページの同一の最大Ｆ−ページサイズを有するため、符号器は、Ｆ−ページ２２０及び２３０と同じ数のデータのオクテットを有するＦ−ページをサポートしうる。Ｆ−ページ２１０及び２４０のようなＳ−ページ２００の他のＦ−ページは、Ｆ−ページ２２０及び２３０と同じ数のデータのオクテットを含むために、パディングデータ２１６でパディングされうる。パディングデータ２１６は、全てゼロ、全て１等のデータセット、又は既知の又は予め設定されたデータパターンを含みうる。パディングデータ自体が、ユーザデータを有するＦ−ページに書き込まれないため、パディングデータ２１６は、「バーチャルパディング」として特徴付けられうることを留意することができる。また、パディングデータは、イントラページパリティデータを生成するために用いられなくてもよい。
【００２１】
図３は、本発明の別の実施形態に係る複数ダイのＦ−ページを含むＳ−ページ３００を示す図である。図３のＳ−ページ３００は、パディングデータ３１２のような図示されたパディングデータが、Ｆ−ページの個々のＥ−ページに割り当てられることを除いて図２のＳ−ページ２００と同様である。有利には、一部の実施形態では、パディングデータが個々のＥ−ページに割り当てられるため、Ｆ−ページに亘るＲＡＩＤリカバリは、Ｓ−ページ３００のＦ−ページからのデータの全てを用いずに、Ｅ−ページレベルで行われうる。それにより、各Ｆ−ページを処理し、Ｅ−ページに対してインターＦ−ページパリティリカバリを行うための時間は、１つ又は２つのＥ−ページエラーがある特定の場合に低減される。また、バッファが、Ｅ−ページの１つのセットを一度に処理するように構成されうるため、均一なバッファは、Ｆ−ページにおける複数のＥ−ページに関わらず使用されうる。
【００２２】
Ｓ−ページ３００は、ダイ０からダイ１２７として識別される１２８のダイのそれぞれから１つのＦ−ページを含む。各ダイは、メモリのダイに対応し、ストレージの複数のブロック（図示せず）を含み、各ブロックは、更に、複数のＦ−ページを含む。Ｓ−ページ３００の各Ｆ−ページは、４つのＥ−ページを含むが、別の実施形態では、Ｆ−ページは、４つのＥ−ページよりも多い又は少ない数を含んでもよい。一部の実施形態では、ダイのＥ−ページは、同一ダイの他のＥ−ページと同じサイズを有しうるが、Ｅ−ページのサイズは、ダイのメモリ品質に基づいて、１つのダイと別のダイとで異なってもよい。各Ｅ−ページは、ＬＤＰＣベースのパリティデータのようなイントラページパリティデータ（図示せず）により保護されてもよい。イントラページパリティデータは、各Ｅ−ページの最後に又は各Ｆ−ページの最後に記憶されてもよい。また、図２のように、図３は、イントラページパリティデータを示さない。Ｅ−ページ３１０のような１つのＥ−ページについてのイントラページパリティデータは、パディングデータ３１２のようなパディングデータを除いて、Ｅ−ページのデータに基づいて求められうる。拡張により、Ｆ−ページについてのイントラページパリティデータは、パディングデータを除いて、当該Ｆ−ページ内のＥ−ページ全てのデータに基づいて求められてもよい。この方法では、Ｅ−ページは、図３に示されるようなＥ−ページストライプ３８０のようなＥ−ページストライプにより揃えられる。一実施形態では、Ｅ−ページストライプは、（以前に図２に示された）複数の符号語ストライプを含む。
【００２３】
Ｓ−ページ３００のＥ−ページは、パディングデータ３１２のような対応するパディングデータにより示される。パディングデータは、図３の例における全てゼロのデータセットを含む。各Ｅ−ページについてのパディングデータの量は、Ｅ−ページの品質に基づく各Ｅ−ページのユーザデータキャパシティの量に一部依存する。Ｅ−ページのユーザデータキャパシティの量は、Ｅ−ページ＋対応するパディングデータの総ユーザデータキャパシティが、Ｅ−ページ３３０及び３５０の１以上のサイズと一致し、これは、インターＦ−ページパリティデータを記憶するために用いられる。
【００２４】
Ｓ−ページ３００のＥ−ページのユーザデータ及び対応するパディングデータは、ダイ２及び４のＥ−ページへのストレージのための対応するインターＦ−ページパリティデータを求めるために用いられうる。例えば、Ｅ−ページ３３０及び３５０を除く、各Ｅ−ページ０のユーザデータ及びパディングデータは、符号器により処理されることができ、Ｅ−ページ３３０及び３５０のストレージに対して対応するパリティデータを求めるために用いられうる。Ｓ−ページ３００のＥ−ページの読み出し時に、アンコレクタブルエラーが検出された場合、Ｓ−ページ３００の対応するＥ−ページは、データをリカバリしようとするために用いられうる。Ｅ−ページ３６０の読み出しが、その付随するイントラページパリティデータを用いることにより訂正できないエラーに遭遇した場合、（インターページパリティデータを有するＥ−ページを含む）Ｓ−ページに亘る対応するＥ−ページ３１０，３２０，３３０等は、ＲＡＩＤデータリカバリ処理あたりに、Ｅ−ページ３６０におけるデータをリカバリするために用いられてもよい。
【００２５】
データ信頼性スキーム
図４は、本発明の一実施形態に係るデータ信頼性スキームを実装する処理４００を示すフローチャートである。処理４００は、イントラ及びインターページパリティデータ両方の信頼性スキームを有利に含む。一部の実施形態では、図１のコントローラ１３０及び／又は誤り訂正モジュール１３２は、処理４００を実行するように構成される。
【００２６】
ブロック４０５において、処理４００は、インターページパリティデータに対して予約する（ｒｅｓｅｒｖｅ）ためのダイを決定する。データを記憶するための最高品質を有する１以上のダイは、例えば、製造メーカーにより提供される品質メトリクス、及び／又は不揮発性メモリのダイのコントローラ１３０により決定されるメモリ品質情報に基づいて、予約されうる。インターページパリティデータに対して予約されるダイの数は、インターページパリティデータを用いて訂正されうるエラーを有するページの数に対応しうる。例えば、図２の例では、ダイ２及び４のそれぞれの１つのＦ−ページが、インターＦ−ページパリティデータに対して予約されるため、２つページエラーまでがＳ−ページ２００に対して訂正されうる。残る予約されないダイＦ−ページは、ユーザデータのストレージのために用いられうる。
【００２７】
ブロック４１０において、処理４００は、ユーザデータ及びイントラページパリティデータを、予約されないダイのＦ−ページに書き込む。例えば、図３の例では、ユーザデータ及び対応する低密度パリティ検査（ＬＤＰＣ）データは、予約されないダイのＦ−ページのＥ−ページに書き込まれることができ、これは、ダイ２及び４以外の全てのダイを含む。一部の実施形態では、１以上の適切なＥＣＣスキームは、イントラページパリティデータを生成するために用いられうる。一部の実施形態では、ユーザデータのオクテット＋対応するイントラページパリティデータの総数は、符号器が、複数の異なる符号化レート（例えば、ユーザデータ当たりのパリティデータの量）を有する１つの処理ユニットサイズをサポートするように、各Ｅ−ページと同一でありうる。ユーザデータ及びイントラページパリティデータは、一部の実施形態では、データの順番で、又は別の実施形態では、順番にではなく、予約されたダイのページに書き込まれうる。
【００２８】
ブロック４１５において、書き込まれたユーザデータは、上述したようにパディングデータでパディングされることができ、処理４００は、パディングされたユーザデータを用いてインターページパリティデータを生成する。インターページパリティデータが生成された後、ブロック４２０において、処理４００は、その独自のイントラページパリティデータを有するインターページパリティデータを、予約されたダイのページに書き込む。インターページパリティデータは、図２で説明されたようなＦ−ページについてのパリティ、又は図３で説明されたようなＦ−ページのＥ−ページについてのパリティに対応しうる。例えば、図３の例では、インターＦ−ページリードソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）（ＲＳ）パリティデータ及び対応するイントラＦ−ページＬＤＰＣデータは、予約されたダイ２及び４のＥ−ページに書き込まれうる。一部の実施形態では、１以上の適切なＥＣＣスキームは、インターページパリティを生成するために用いられうる。
【００２９】
データリカバリスキーム
図５は、本発明の一実施形態に係るデータ検索及びリカバリの処理５００を示すフローチャートである。有利には、処理５００は、アンコレクタブル読み出しデータエラーのようなアンコレクタブルエラーに遭遇した後、データをリカバリしようとする複数の機会を提供する。また、データのリカバリは、各ページからデータユニットの全てを用いずに行われることができ、それにより、各ページを処理し、リカバリを行うために必要となる時間を低減する。一部の実施形態では、図１のコントローラ１３０及び／又は誤り訂正モジュール１３２は、処理５００を行うように構成される。
【００３０】
ブロック５０５において、処理５００は、メモリのページからデータを読み出す。例えば、処理５００は、ホストシステム１１０からの読み出しコマンドに応じて、Ｅ−ページ３１０の読み出しを行うことができる。
【００３１】
ブロック５１０において、処理５００は、アンコレクタブルイントラページＥＣＣエラーが、ページ読み出し時に検出されたかどうかを判定する。アンコレクタブルエラーが検出されない場合には、処理５００は、ブロック５１５へ移る。ブロック５１５において、処理５００は、ページからデータを戻す。
【００３２】
一方、アンコレクタブルエラーが検出された場合には、処理５００は、ブロック５２０へ移る。ブロック５２０において、処理５００は、再読出オプションが、記憶されたデータを検索するためにページを読み出そうとするために使い尽くされたかどうかを判定する。例えば、処理５００は、ページの１以上の単一読み出し又は複数の読み出しが行われたかどうか、又は異なる電圧閾値レベルを用いてページの１以上の読み出しが行われたかどうかを判定しうる。処理５００が、再読出オプションがページを読み出そうとするために使い尽くされないと判定した場合には、処理５００は、ブロック５２５へ移る。ブロック５２５において、処理５００は、ページからデータを読み出すための読み出しパラメータを調整する。処理５００は、その後、ブロック５０５へ戻り、データは、調整された読み出しパラメータを用いてページから読み出される。
【００３３】
処理５００が、再読出オプションがページを読み出そうとするために使い尽くされたと判定した場合には、処理５００は、ブロック５３０へ移る。ブロック５３０において、処理５００は、インターページＲＡＩＤリカバリを行う。インターページＲＡＩＤリカバリは、ページのために記憶されたデータをリカバリしようとするための対応するページからユーザデータ及びインターページパリティデータを復号化することを含みうる。例えば、図３のＥ−ページ３１０のページ読み出し時に、アンコレクタブルイントラページＥＣＣエラーが検出された場合には、処理５００は、Ｓ−ページ３００のダイ０から１２７の各Ｅ−ページ０からデータを読み出し、復号器は、読み出したＥ−ページの全てを用いてページに記憶されるデータをリカバリしようとするために使用されうる。一部の実施形態では、ページは、ブロック５３０において、ユーザデータがＳ−ページに書き込まれた順序に対応する順序で読み出されうる。別の実施形態では、ページは、ユーザデータがＳ−ページに書き込まれた順序に対してばらばらの順序で読み出されうる。
【００３４】
ブロック５３５において、処理５００は、インターページＲＡＩＤリカバリが成功したかどうかを判定する。インターページＲＡＩＤは、例えば、ページに対するリカバリが、ページのデータコンテンツを決定することに成功した場合、成功とみなされうる。インターページＲＡＩＤリカバリが成功した場合、処理５００は、ブロック５４０へ移り、処理５００は、ページからデータを戻す。
【００３５】
一方、インターページＲＡＩＤリカバリが失敗した場合には、処理５００は、ブロック５４５へ移る。例えば、図２及び３の例を用いて、２以上のアンコレクタブルＥＣＣエラーを有するときの例が存在し、これは、インターページパリティの２つのデータが使用されるＲＡＩＤリカバリの訂正能力を超える。例えば、アンコレクタブルイントラページＥＣＣエラーを有する総計３つのページが存在する：処理５００をトリガーする１つのページ「Ａ」、及びブロック５３０におけるＲＡＩＤリカバリメカニズムの一部として読み出される２つの別のページ「Ｂ」及び「Ｃ」。なお、図２及び３の例では、典型的なＲＡＩＤリカバリ処理は、Ｓ−ページに亘る１２８のＥ−ページを読み出すことを含んでもよい。
【００３６】
ブロック５４５において、処理５００は、再読出オプションが、ページに記憶されたデータを検索するために、他のページ（例えば、ページ「Ｂ」及び「Ｃ」）を読み出そうとするために使い尽くされたかどうかを判定する。例えば、検出されたアンコレクタブルイントラページＥＣＣエラーを有する１以上の他のページ（例えば、ページ「Ａ」）について、処理５００は、他のページの１以上の単一読み出し又は複数読み出しが行われたかどうか、又は異なる電圧閾値レベルを用いて他のページ（例えば、ページ「Ｂ」及び「Ｃ」）の読み出しが行われたかどうかを判定しうる。処理５００が、再読出オプションが、ページに記憶されたデータを検索するために他のページを読み出そうとするために使い尽くされなかったと判定した場合には、処理は、ブロック５５０へ移る。
【００３７】
ブロック５５０において、処理５００は、例えば、単一読み出し又は複数読み出し又は調整された電圧閾値を用いて他のページを再読出することにより、調整された読み出しパラメータを用いて、検出されたイントラページＥＣＣエラーを有する他のページからデータを再読出する。一例として、検出されたアンコレクタブルイントラページＥＣＣエラーが、Ｓ−ページ３００のＥ−ページ３１０のページ読み出しによりトリガーされ、かつ他のアンコレクタブルイントラページＥＣＣエラーが、Ｅ−ページ３２０及び３６０のページ読み出し時に検出され、一方でイントラページＲＡＩＤリカバリを試みた場合、  処理５００は、Ｅ−ページ３２０又は３６０それぞれに記憶されたデータをリカバリしようとしてＥ−ページ３２０又は３６０からデータを再読出しうる。処理５００は、その後、ブロック５３０へ戻り、処理５００は、インターページＲＡＩＤリカバリを行う。検出されたイントラページＥＣＣエラーを有する他のページからのデータの再読出が、他のページの１以上についてのデータのリカバリの成功をもたらし、アンコレクタブルページの総数がＲＡＩＤリカバリ限界（つまり、使用されたインターパリティページの数）を下回る場合、インターページＲＡＩＤリカバリは、成功する。例えば、このパラグラフの例を続けると、Ｅ−ページ３２０の再読出がデータリカバリに成功したた場合、２つのパリティページが、Ｅ−ページ３１０及び３６０の２つの検出されたイントラページＥＣＣエラーを訂正するために用いられることができるため、ブロック５３０におけるインターページＲＡＩＤリカバリは、成功である。これは、エラーの位置が、ＲＡＩＤのこの例示的な実装で知られているためである。
【００３８】
一方、処理５００が、再読出オプションが、ページに記憶されたデータを検索するために他のページを読み出そうとして使い尽くされたと判定した場合には、処理５００は、ブロック５５５へ移り、処理５００は、ページの読み出しエラーを戻す。
【００３９】
図６は、本発明の一実施形態に係るデータ検索及びリカバリの別の処理６００を示すフローチャートである。処理６００は、ブロック５２０，５２５，５４５及び５５０をブロック６２０，６２５，６４５及び６５０へ置き換えることを除き、図５の処理５００と同一である。処理５００と処理６００とは、別のアプローチとして示されるが、処理５００の再読出部分と処理６００の再復号化部分は、両方が試みられうる又はシステム条件に従って特定の時に使用され、別の時には使用されないオプションである。例えば、メモリアレイが実質的に新しいとき、再読出又は再復号化のいずれかが行われるが、メモリの品質が、消耗により低下すると、再読出及び再復号化の両方が行われてもよい。一部の実施形態では、図１のコントローラ１３０及び／又は誤り訂正モジュール１３２は、処理６００を行うように構成される。
【００４０】
ブロック６２０において、処理６００は、再復号化オプションが、ページのために記憶されたデータを決定しようとするために使い尽くされたかどうか判定する。例えば、処理６００は、ページからのデータが、１以上の異なる復号化パラメータを用いて復号化されているかどうかを判定しうる。処理６００が、再復号化オプションが、記憶されたデータを決定しようとするために使い尽くされていないと判定した場合には、処理６００は、ブロック６２５へ移る。ブロック６２５において、処理６００は、調整された復号化パラメータを用いて、ページからのデータを復号化する。処理６００は、その後、ブロック５１０へ戻り、処理６００は、ページからのデータを復号化するとき、アンコレクタブルイントラページＥＣＣエラーが検出されたかどうか判定する。
【００４１】
ブロック６４５において、処理６００は、再復号化オプションが、ページに記憶されたデータを決定するために他のページ（例えば、図５の例のページ「Ｂ」及び「Ｃ」、アンコレクタブルイントラページＥＣＣエラーを有する総計３つのページが存在する：処理６００をトリガーする１つのページ「Ａ」、ブロック５３０におけるＲＡＩＤリカバリメカニズムの一部として読み出される２つの別のページ「Ｂ」及び「Ｃ」）を復号化しようとするために使い尽くされたかどうかを判定する。例えば、検出されたアンコレクタブルイントラページＥＣＣエラーを有する１以上の他のページ（例えば、ページ「Ａ」）について、処理６００は、他のページ（例えば、ページ「Ｂ」及び「Ｃ」）からのデータが、１以上の異なる復号化パラメータを用いて復号化されているかどうかを判定しうる。処理６００が、再復号化オプションが、他のページを復号化しようとするために使い尽くされていないと判定した場合には、処理６００は、ブロック６５０へ移る。
【００４２】
ブロック６５０において、処理６００は、調整された復号化パラメータを用いて、検出されたイントラページＥＣＣエラーを有する他のページ（例えば、ページ「Ｂ」及び「Ｃ」）からのデータを復号化する。処理６００は、その後、ブロック５３０へ戻り、処理６００は、インターページＲＡＩＤリカバリを行う。検出されたイントラページＥＣＣエラーを有する他のページからのデータの再復号化が、他のページの１以上のためのデータのカバリの成功をもたらし、アンコレクタブルページの総数がＲＡＩＤリカバリ限界（つまり、使用されるインターパリティページの数）を下回る場合、インターページＲＡＩＤリカバリは、良好に行われる。
【００４３】
他の変形例
本開示は、一例としてＲＡＩＤを用いているが、本明細書で説明されるシステム及び方法は、ＲＡＩＤ冗長性スキームに限定されず、ミラーリング又は誤り検査の目的のためにストレージ素子のストライピング及び／又はグルーピングを用いる任意のデータ冗長性構成で使用されることができる。また、ＲＡＩＤは、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋの略語であるが、ＲＡＩＤは、物理ディスクを有するストレージデバイスに限定されず、本明細書で説明される不揮発性ソリッドステートデバイスを含む多種のストレージデバイスに適用可能である。
【００４４】
また、当業者は、一部の実施形態では、他のアプローチ及び方法が使用されうることを理解するであろう。例えば、本明細書に開示される符号化技術は、リードソロモン及びＬＤＰＣ符号以外又はリードソロモン及びＬＤＰＣ符号の他の符号に適用しうる。例えば、多次元ＸＯＲ符号は、インターページパリティ符号として使用されることができ、ターボ符号又はＢｏｓｅ、Ｃｈａｕｄｈｕｒｉ及びＨｏｃｑｕｅｎｇｈｅｍ（ＢＣＨ）符号は、イントラページパリティ符号として使用されることができる。更に、Ｅ−ページ及びＦ−ページが本開示では説明されたが、Ｅ−ページ及びＦ−ページは、データ冗長性スキームのための例示的なワーキングユニットであり、実施例として本明細書に含まれる。データ冗長性スキーム及びその態様は、Ｆ−ページがＲＡＩＤストライプに対応し、かつＥ−ページがＲＡＩＤストライプのサブユニットに対応する他のワーキングユニットに適用することができる。したがって、本開示の範囲は、添付の特許請求の範囲を参照することによってのみ定義されることが意図される。
【００４５】
本開示の特定の実施形態が説明されてきたが、これらの実施形態は、例示のために示されているものであり、本開示の範囲を限定することを意図するものではない。実際、本明細書に説明される新規な方法、デバイス及びシステムは、各種の他の形態で具現化されてもよい。更に、本明細書で説明された方法及びシステムの形態の様々な省略、置き換え及び変更は、本開示の趣旨から逸脱しない範囲でなされてもよい。添付の特許請求の範囲及びそれらの等価物は、本開示の範囲及び趣旨の範囲内であるとして、このような形態又は修正を包含することが意図される。例えば、本明細書に開示されるシステム及び方法は、ハードディスクドライブ、ハイブリッドハードドライブ等に適用されうる。また、他の形態のストレージ（例えば、ＤＲＡＭ又はＳＲＡＭ、バッテリバックアップ揮発性ＤＲＡＭ又はＳＲＡＭデバイス、ＥＰＲＯＭ、ＥＥＰＲＯＭメモリ等）は、追加又は代替で使用されてもよい。別の例として、図面に示された各種構成要素は、プロセッサ、ＡＳＩＣ／ＦＰＧＡ又は専用ハードウェアにソフトウェア及び／又はファームウェアとして実装されてもよい。また、上記に開示された特定の実施形態の特徴及び特質は、別の実施形態を形成するために異なる手法で組み合わせられてもよく、その全てが本開示の範囲に及ぶ。本開示は、特定の好ましい実施形態及び用途を提供するが、本明細書で明らかにされた特徴及び利点のすべてを提供しない実施形態を含む、当業者にとって自明な他の実施形態もまた本開示の範囲内である。したがって、本開示の範囲は、添付の特許請求の範囲を参照することによってのみ定義されることを意図するものである。
【図１】
0006262250.tif 000002
【図２】
0006262250.tif 000003
【図３】
0006262250.tif 000004
【図４】
0006262250.tif 000005
【図５】
0006262250.tif 000006
【図６】
0006262250.tif 000007