(57)【要約】  いくつかの実施例では、ソリッドステートディスクは、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているデータに対してＥＣＣを実行し、ＥＣＣがデータを訂正できない場合、データに対してパリティ処理を実行する。他の実施例が開示及び請求される。
2012514274.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリに格納されているデータに対してＥＣＣを実行し、前記ＥＣＣが前記データを訂正できない場合、前記データに対してパリティ処理を実行するコントローラと、
を有するソリッドステートディスク。
【請求項２】
前記パリティ処理は、ＸＯＲ処理を有する、請求項１記載のソリッドステートディスク。
【請求項３】
前記コントローラは、前記不揮発性メモリにデータを書き込み、前記データが書き込まれるときにＥＣＣとパリティ情報を生成し、前記不揮発性メモリに格納する、請求項１記載のソリッドステートディスク。
【請求項４】
前記不揮発性メモリは、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割される、請求項１記載のソリッドステートディスク。
【請求項５】
前記不揮発性メモリはさらに、各ページがいくつかのセクタを有する複数のページに分割され、
データが、第１スロットのページにセクタ順に書き込まれ、前記ページが充填されると、その後に第２スロットの前記同一のページに書き込まれる、請求項４記載のソリッドステートディスク。
【請求項６】
前記複数のスロットの１以上が、パリティ情報のために確保される、請求項４記載のソリッドステートディスク。
【請求項７】
前記複数のスロットの１以上が、パリティ情報のために確保される、請求項５記載のソリッドステートディスク。
【請求項８】
ホストとソリッドステートディスクとを有するシステムであって、
前記ソリッドステートディスクは、
不揮発性メモリと、
前記不揮発性メモリに格納されているホストデータに対してＥＣＣを実行し、前記ＥＣＣが前記データを訂正できない場合、前記データに対してパリティ処理を実行するコントローラと、
を有するシステム。
【請求項９】
前記パリティ処理は、ＸＯＲ処理を有する、請求項８記載のシステム。
【請求項１０】
前記コントローラは、前記不揮発性メモリにデータを書き込み、前記データが書き込まれるときにＥＣＣとパリティ情報を生成し、前記不揮発性メモリに格納する、請求項８記載のシステム。
【請求項１１】
前記不揮発性メモリは、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割される、請求項８記載のシステム。
【請求項１２】
前記不揮発性メモリはさらに、各ページがいくつかのセクタを有する複数のページに分割され、
データが、第１スロットのページにセクタ順に書き込まれ、前記ページが充填されると、その後に第２スロットの前記同一のページに書き込まれる、請求項１１記載のシステム。
【請求項１３】
前記複数のスロットの１以上が、パリティ情報のために確保される、請求項１１記載のシステム。
【請求項１４】
前記複数のスロットの１以上が、パリティ情報のために確保される、請求項１２記載のシステム。
【請求項１５】
ソリッドステートディスクの不揮発性メモリに格納されているデータに対してＥＣＣを実行するステップと、
前記ＥＣＣが前記データを訂正できない場合、又はプログラム不具合が起こった場合、前記データに対してパリティ処理を実行するステップと、
を有する方法。
【請求項１６】
前記パリティ処理は、ＸＯＲ処理を有する、請求項１５記載の方法。
【請求項１７】
前記不揮発性メモリにデータを書き込むステップと、
ＥＣＣとパリティ情報とを生成するステップと、
前記データが書き込まれると、前記ＥＣＣとパリティ情報とを前記不揮発性メモリに格納するステップと、
をさらに有する、請求項１５記載の方法。
【請求項１８】
前記不揮発性メモリを、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割するステップをさらに有する、請求項１５記載の方法。
【請求項１９】
前記不揮発性メモリを、各ページがいくつかのセクタを有する複数のページに分割するステップと、
データを第１スロットのページにセクタ順に書き込み、前記ページが充填されると、データを第２スロットの前記同一のページに書き込むステップと、
をさらに有する、請求項１８記載の方法。
【請求項２０】
パリティ情報のため前記複数のスロットの１以上を確保するステップをさらに有する、請求項１８記載の方法。
【請求項２１】
パリティ情報のため前記複数のスロットの１以上を確保するステップをさらに有する、請求項１９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にソリッドステートマスストレージプロダクトにおける信頼性の向上に関する。
【背景技術】
【０００２】
ソリッドステートディスク（ＳＤＤ）は、可動部を有さない高パフォーマンスストレージデバイスである。ＳＳＤは、従来の回転磁気ディスクを備えた典型的なハードディスクドライブよりはるかに高速であり、典型的には、データストレージを管理するコントローラを含む。コントローラは、ＳＳＤとホストデバイスとの間の通信と共に、データストレージ及びアクセスを含むＳＳＤの動作を管理する。コントローラはまた、ＳＳＤに書き込まれたデータのインテグリティを保障するため、誤り訂正符号化（ＥＣＣ）を実行する。ＥＣＣは、ＳＳＤとホストデバイスとの間で通信されるデータにおける誤りを特定及び訂正する。しかしながら、ストレージメディアの故障した機構には、復元不可なデータ又はデータ消失をもたらすＥＣＣエンジンの訂正能力を超えるものもある。例えば、壊滅的なダイの故障などである。
【０００３】
２００６年３月３１日に出願された“Ｉｍｐｒｏｖｉｎｇ  Ｒｅｌｉａｂｉｌｉｔｙ  ｏｆ  Ｗｒｉｔｅ  Ｏｐｅｒａｔｉｏｎｓ  ｔｏ  ａ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ”という名称の米国特許出願第１１／３９６，２６２号は、最後のプログラム処理が成功するまで、イレースブロックに書き込まれたすべてのデータのコピーを保持することによって、プログラムの不具合に対処する。この特許出願は、ＥＣＣ不具合問題やダイ不具合問題でなく、プログラム不具合問題に対処している。
【図面の簡単な説明】
【０００４】
本発明は、本発明の実施例の以下の詳細な説明と添付した図面とから十分に理解されるであろう。しかしながら、これらは、本発明を開示される特定の実施例に限定するものと解釈されるべきでなく、単なる説明と理解のためのものである。
【図１】図１は、本発明のいくつかの実施例によるシステムを示す。
【図２】図２は、本発明のいくつかの実施例によるフローを示す。
【発明を実施するための形態】
【０００５】
本発明のいくつかの実施例は、ソリッドステートディスクにおける改良された誤り訂正に関する。
【０００６】
いくつかの実施例では、ソリッドステートディスク（ＳＳＤ）は、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているデータに対してＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を実行し、ＥＣＣがデータを訂正できない場合、データに対してパリティ処理を実行する。
【０００７】
いくつかの実施例では、システムは、ホストとソリッドステートディスクとを有する。ソリッドステートディスクは、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているホストデータに対してＥＣＣを実行し、ＥＣＣがデータを訂正不可である場合、データに対してパリティ処理を実行する。
【０００８】
いくつかの実施例では、ＥＣＣが、ソリッドステートディスクの不揮発性メモリに格納されているデータに対して実行される。ＥＣＣがデータを訂正不可である場合、パリティ処理がデータに対して実行される。
【０００９】
いくつかの実施例では、排他的ＯＲ（ＸＯＲ）ＥＣＣ技術が、コンポーネントレベルの不具合、プログラミングの不具合（ＮＡＮＤプログラミング不具合など）及び／又はプライマリＥＣＣシステムからの訂正不可な誤りから、ソリッドステートディスク（ＳＳＤ）を保護するのに利用される。例えば、いくつかの実施例では、マスストレージ環境で利用されるものと類似したパリティ技術（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ、すなわち、ＲＡＩＤインプリメンテーションなど）が、ＳＳＤの不揮発性メモリ環境に実現されてもよい。いくつかの実施例では、ホストからのライトデータはＸＯＲパリティ生成手段を介し流れ、ホストデータとパリティとが不揮発性メモリに書き込まれる。ＳＳＤのプライマリＥＣＣエンジンがホストセクタを訂正できない場合、又はダイ（ＮＡＮＤダイなど）が故障した場合、第２レベルの誤り訂正が、正しいデータを取得するためにいくつかの実施例に従って実装される。
【００１０】
いくつかの実施例では、訂正不可なセクタを除くパリティ及びホストデータがメディアから読まれ、欠落したデータはＸＯＲ演算を用いて復元される。イレースブロックに以前に書き込まれたデータが、同一のイレースブロック内における以降のライト／プログラムにおいてプログラム不具合が発生したときに損傷してしまうＮＡＮＤプログラム不具合などのプログラム不具合の場合、イレースブロックに以前に書き込まれたが、現在損傷している各ページは、ＸＯＲ演算を用いて１つずつ復元される。同じタイプのＸＯＲ演算は、プライマリＥＣＣ不具合又はプログラム不具合の場合に利用されてもよい。
【００１１】
１つのＳＳＤは約８０のＮＡＮＤダイを含む可能性があるため、ＳＳＤプロダクトの平均故障寿命（ＭＴＴＦ）は、いくつかの実施例によると、ＮＡＮＤダイ不具合に対する耐性能力のため約６倍の長さまで延長され、データ損失なく処理を続ける。このＭＴＴＦの改良は大変重要である。さらに、いくつかの実施例によると、プライマリＥＣＣを用いた実現形態に対するデータ信頼性は、数オーダの大きさまで増加する。これは、読み込み時、ＥＣＣ訂正が、ＥＣＣがより多くのエラービットを訂正可能であるため不具合になった場合、冗長なＸＯＲデータがオリジナルデータを再構成するのに利用されてもよいためである。同様に、書き込み時、同一のイレースブロック上の他のデータを損傷するプログラム不具合が発生した場合、損傷したデータの再構成が、いくつかの実施例により実行されてもよい。これらは、特にＮＡＮＤメモリがより精緻なリソグラフィーに基づくものであるとき、ＳＳＤ及びＮＡＮＤメモリに対して重要な改良となる。
【００１２】
図1は、いくつかの実施例によるシステム１００を示す。いくつかの実施例では、システム１００は、ホスト１０２とＳＳＤ１０４とを有する。いくつかの実施例では、ＳＳＤ１０４は、ＳＳＤと参照されることに限定されず、何れかのタイプの不揮発性メモリを含むことができる。ＳＳＤ１０４は、コントローラ１０６とメモリ１０８とを有する。いくつかの実施例では、メモリ１０８は、ＮＡＮＤメモリなどの不揮発性メモリである。いくつかの実施例では、コントローラ１０６は、ＳＳＤ１０４のメモリ１０８に書き込まれたデータのインテグリティを確保するため、ＥＣＣを実行するＥＣＣエンジン（図1に図示せず）を有する。ＥＣＣは、ＳＳＤ１０４とホスト１０２との間で通信されるデータにおける誤りを特定及び訂正する。しかしながら、コントローラ１０６のＥＣＣエンジンは、データのホストセクタを訂正することができないことがあり、ダイ不具合（ＳＳＤ１０４のメモリ１０８に含まれるＮＡＮＤダイなどにおいて）は、データインテグリティ問題を生じさせる。従って、いくつかの実施例では、コントローラ１０６はさらに、プライマリＥＣＣエンジンがホストセクタを訂正できない場合、又はメモリ１０８のダイに不具合が生じた場合など、ＸＯＲ技術を実行するためのＸＯＲパリティ生成手段を有する。
【００１３】
図２は、いくつかの実施例による不揮発性メモリのグラフィカル表示２００を示す。グラフィカル表示２００は、垂直軸上にページ００〜１２７と、水平軸上にスロット００〜７９とを有する。図２の各ページは、一例となる８つのセクタを有する。スロットは、例えば、いくつかの実施例では、ＳＳＤ上で８０個のメモリダイをグラフィカルに示し、及び／又はメモリチャネル及び／又はチップイネーブルの抽象化である。いくつかの実施例では、スロット００〜７９のそれぞれは、その他のスロットと同時又は並列動作可能なエンジンを表す。
【００１４】
図２に示されるように、ホストからのコンテンツは、時間順にメモリ（ＮＡＮＤメモリなど）に書き込まれる。コンテンツは、ページ００及びスロット００における８セクタページを充填し、その後、次のコンテンツが、ページ００の次のスロット０１に書き込まれ、グラフ２００の先頭のページ００の矢印により示されるように続けられる。ＸＯＲパリティは、ホストコンテンツが受信されると即座に生成される。ホストコンテンツが最後のスロットを除くページのすべてのスロット（すなわち、スロット００〜７８）を充填すると、パリティページがスロット７９などにおいてフローに挿入され、当該ページの最後のスロットを占有する。すなわち、本例におけるスロット７９に書き込まれるパリティページのセクタ０は、当該ページのスロット００〜７８のすべてのセクタ０のコンテンツのＸＯＲであり、スロット７９に書き込まれるパリティページのセクタ１は、同様に、当該ページのスロット００〜７８のすべてのセクタ１のコンテンツのＸＯＲであり、以下同様に続く。いくつかの実施例では、パリティセクタは、ホストコンテンツとメタデータのＸＯＲであり、ＥＣＣフィールドでない。このようにして、パリティページの各セクタは、それのコンテンツに固有のＥＣＣを含む。
【００１５】
図２は、ページの一部に書き込まれたコンテンツとパリティとの一例を示す。４つのセクタが、スロット０１のセクタ２〜５に書き込まれ、その後に４つのセクタが、スロット０１のセクタ６，７とスロット０２のセクタ１，２に書き込まれる。その後、４つのセクタが、スロット０２のセクタ３〜６に書き込まれ、１つのセクタが、スロット０２のセクタ７に書き込まれる。その後、８つのセクタが、スロット０２のセクタ８とスロット０３のセクタ１〜７に書き込まれる。８つのパリティセクタが、ＸＯＲなどを用いてセクタ単位でセクタに対して計算され、その後にパリティデータとしてスロット７９の８つのセクタに書き込まれる。
【００１６】
上述された１つのオアリティスロット７９による実施例では、スロット００〜７８の何れかのページの何れかのセクタに訂正不可な誤りがある場合、ＳＳＤは、誤りの１つを除きすべてのページからセクタ番号を読み、欠落したコンテンツを復元するため、スロット７９の対応するパリティセクタと共にこれらのセクタのコンテンツをＸＯＲ演算することが可能である。いくつかの実施例では、Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｅｎ（ＢＣＨ）訂正などのＥＣＣが、パリティを含む各セクタに対して実行され、訂正不可な状態が、コンテンツをＸＯＲ演算することによって第２レベルのＥＣＣ復元をトリガするのに利用される。
【００１７】
１つのパリティスロット７９を有する上述された実施例では、スロット００〜７８のアレイ毎に１つのパリティページが、ハードエラー及び破滅的なダイの不具合から保護する。複数スロットを抽出するコンポーネント不具合に対する保護の実施例では、他の実現形態がいくつかの実施例により利用可能である。例えば、２つのスロットを抽出するコンポーネント不具合に対して保護するため、２つのパリティページがスロットアレイ毎に挿入されてもよい（スロット３９，７９などに）。いくつかの実施例では、スロット３９のパリティは、スロット００〜３８をカバーするのに用いられ、スロット７９のパリティは、スロット４０〜７８をカバーするのに用いられてもよい。スロットアレイは、パッケージ不具合がスロット００〜３９のパリティストライプから１つのスロットを抽出し、スロット４０〜７９のパリティストライプから第２スロットを抽出するように調整されてもよい。例えば、パッケージ５がスロット５，４５に２つのＣＥと共にマッピングされる場合、上述されたパリティストライプは、２．５％のキャパシティコストにおいてコンポーネント不具合から保護することになる。キャパシティコストは、ダイ不具合（パッケージ不具合でなく）が保護されるべきである場合、１／２にカットされてもよい。
【００１８】
ＸＯＲが複数のマスストレージデバイス環境において以前に利用されたが、いくつかの実施例によると、単一のストレージデバイス（ＳＳＤなど）に関して破滅的なコンポーネント不具合からコンテンツを保護するための技術が利用可能である。インダイレクション（ｉｎｄｉｒｅｃｔｉｏｎ）がすべてのライトを実質的にシーケンシャルにすることを可能にするＳＳＤ環境では、ランダムなライト処理に関するペナルティはない。さらに、以前に書き込まれたデータの消失を生じさせるＮＡＮＤプログラミング不具合などのＳＳＤに特有の問題は、いくつかの実施例により解決されてもよい。いくつかの実施例は、プログラム不具合は低コストに解決され、さらにダイ不具合及びＥＣＣ不具合に対処する。
【００１９】
いくつかの実施例が特定の方法により実現されるものとして説明されたが、いくつかの実施例によると、これらの実現形態は必要でないかもしれない。例えば、図１は、ＥＣＣ及びＸＯＲ処理を実行するための１つのコントローラを図示及び記載しているが、いくつかの実施例によると、別々のコントローラ（及び／又は専用コントローラ）が利用されてもよいことに留意されたい。
【００２０】
いくつかの実施例が特定の実現形態を参照して説明されたが、いくつかの実施例によると、他の実現形態もまた可能である。さらに、図面に図示及び／又はここに開示される回路要素又は他の特徴の構成及び／又は順序は、図示及び開示された特定の方法により構成される必要はない。他の多数の構成が、いくつかの実施例により可能である。
【００２１】
図示される各システムでは、いくつかのケースにおける要素のそれぞれは、表された要素が異なるもの及び／又は類似するものであってもよいことを示唆するため、同一又は異なる参照番号を有してもよい。しかしながら、ある要素は、異なる実現形態を有し、図示又は開示されたシステムの一部又はすべてと動作するのに十分にフレキシブルなものであってもよい。図面に示される各種要素は、同一又は異なるものであってもよい。何れが第１要素と呼ばれ、何れが第２要素と呼ばれるかは、任意的なものである。
【００２２】
明細書及び請求項において、“結合される”及び“接続される”という用語は、それらの派生語と共に利用されてもよい。これらの用語は、互いに同義的なものとして意図されていないことが理解されるべきである。特定の実施例では、“接続される”とは、２以上の要素が互いに直接的な物理的又は電気的接触をしていることを示すのに利用されてもよい。“結合される”とは、２以上の要素が間接的な物理的又は電気的接触をしていることを意味するものであってもよい。しかしながら、“結合される”とはまた、２以上の要素が互いに直接的に接触していないが、依然として互いに協調又は相互作用することを意味するものであってもよい。
【００２３】
アルゴリズムは、ここでは、また一般的に、所望の結果を導くステップ又は処理の自己一貫性のあるシーケンスであるとみなされる。これらは、物理量の物理的操作を含む。通常、必要とはされないが、これらの量は、格納、移転、合成、比較及び他の操作が可能な電気又は磁気信号の形態をとる。これらの信号をビット、値、要素、シンボル、キャラクタ、項、番号などと呼ぶことは、主として一般的な利用のために便利であるときがある。しかしながら、これらの用語及び同様の用語のすべてが適切な物理量に関連付けされるべきであり、これらの量に適用される単なる便宜上のラベルであることが理解されるべきである。
【００２４】
いくつかの実施例は、ハードウェア、ファームウェア及びソフトウェアの１つ又は組み合わせにより実現されてもよい。いくつかの実施例はまた、ここに開示された処理を実行するため計算プラットフォームにより読み込まれ、実行されるマシーン可読媒体に格納される命令として実現されてもよい。マシーン可読媒体は、マシーン（コンピュータなど）により可読な形態により情報を格納又は送信するための何れかの機構を含むものであってもよい。例えば、マシーン可読媒体は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスクストレージメディア、光ストレージメディア、フラッシュメモリデバイス、伝搬信号（搬送波、赤外線信号、デジタル信号、信号を送信及び／又は受信するインタフェースなど）の電気、光、音響又は他の形態などを含むものであってもよい。
【００２５】
実施例は、本発明の実現形態又は具体例である。明細書における“実施例”、“一実施例”、“いくつかの実施例”又は“他の実施例”という表現は、実施例に関して説明される特定の特徴、構成又は特性が少なくともいくつかの実施例に含まれることを意味し、必ずしも本発明のすべての実施例を意味するものでない。“実施例”、“一実施例”又は“いくつかの実施例”という表現は、必ずしも同一の実施例を参照しているとは限らない。
【００２６】
ここに開示及び図示されるすべてのコンポーネント、特徴、構成、特性などが、特定の実施例に含まれる必要があるとは限らない。明細書が、コンポーネント、特徴、構成又は特性が“含まれてもよい”、“含まれる可能性がある”、“含まれうる”、“含めることができる”などのと述べている場合、当該コンポーネント、特徴、構成又は特性が含まれることが要求されていない。明細書又は請求項が“ある”要素を参照している場合、それは、当該要素が１つしかないことを意味するものでない。明細書又は請求項が“さらなる”要素を参照している場合、それは、当該要素が複数存在することを排除するものでない。
【００２７】
フロー図及び／又は状態図が実施例を説明するのに利用されたが、本発明は、これらの図又は対応する説明に限定されるものでない。例えば、フローは図示されたボックス又は状態を通過する必要はなく、図示及び開示されたものと全く同じ順序である必要もない。
【００２８】
本発明は、ここで列記される特定の詳細に限定されるものでない。実際、本開示の利益を有する当業者は、上述した説明及び図面からの他の多数の変形が本発明の範囲内において可能であることを理解するであろう。従って、補正を含む以下の請求項が、本発明の範囲を規定する。
【図１】
2012514274.tif 000003
【図２】
2012514274.tif 000004
【国際調査報告】
2012514274.tif 000005
2012514274.tif 000006