説明

ソリッドステートディスクにおける改良された誤り訂正

いくつかの実施例では、ソリッドステートディスクは、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているデータに対してECCを実行し、ECCがデータを訂正できない場合、データに対してパリティ処理を実行する。他の実施例が開示及び請求される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にソリッドステートマスストレージプロダクトにおける信頼性の向上に関する。
【背景技術】
【0002】
ソリッドステートディスク(SDD)は、可動部を有さない高パフォーマンスストレージデバイスである。SSDは、従来の回転磁気ディスクを備えた典型的なハードディスクドライブよりはるかに高速であり、典型的には、データストレージを管理するコントローラを含む。コントローラは、SSDとホストデバイスとの間の通信と共に、データストレージ及びアクセスを含むSSDの動作を管理する。コントローラはまた、SSDに書き込まれたデータのインテグリティを保障するため、誤り訂正符号化(ECC)を実行する。ECCは、SSDとホストデバイスとの間で通信されるデータにおける誤りを特定及び訂正する。しかしながら、ストレージメディアの故障した機構には、復元不可なデータ又はデータ消失をもたらすECCエンジンの訂正能力を超えるものもある。例えば、壊滅的なダイの故障などである。
【0003】
2006年3月31日に出願された“Improving Reliability of Write Operations to a Non−Volatile Memory”という名称の米国特許出願第11/396,262号は、最後のプログラム処理が成功するまで、イレースブロックに書き込まれたすべてのデータのコピーを保持することによって、プログラムの不具合に対処する。この特許出願は、ECC不具合問題やダイ不具合問題でなく、プログラム不具合問題に対処している。
【図面の簡単な説明】
【0004】
本発明は、本発明の実施例の以下の詳細な説明と添付した図面とから十分に理解されるであろう。しかしながら、これらは、本発明を開示される特定の実施例に限定するものと解釈されるべきでなく、単なる説明と理解のためのものである。
【図1】図1は、本発明のいくつかの実施例によるシステムを示す。
【図2】図2は、本発明のいくつかの実施例によるフローを示す。
【発明を実施するための形態】
【0005】
本発明のいくつかの実施例は、ソリッドステートディスクにおける改良された誤り訂正に関する。
【0006】
いくつかの実施例では、ソリッドステートディスク(SSD)は、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているデータに対してECC(Error Correcting Code)を実行し、ECCがデータを訂正できない場合、データに対してパリティ処理を実行する。
【0007】
いくつかの実施例では、システムは、ホストとソリッドステートディスクとを有する。ソリッドステートディスクは、不揮発性メモリとコントローラとを有する。コントローラは、不揮発性メモリに格納されているホストデータに対してECCを実行し、ECCがデータを訂正不可である場合、データに対してパリティ処理を実行する。
【0008】
いくつかの実施例では、ECCが、ソリッドステートディスクの不揮発性メモリに格納されているデータに対して実行される。ECCがデータを訂正不可である場合、パリティ処理がデータに対して実行される。
【0009】
いくつかの実施例では、排他的OR(XOR)ECC技術が、コンポーネントレベルの不具合、プログラミングの不具合(NANDプログラミング不具合など)及び/又はプライマリECCシステムからの訂正不可な誤りから、ソリッドステートディスク(SSD)を保護するのに利用される。例えば、いくつかの実施例では、マスストレージ環境で利用されるものと類似したパリティ技術(Redundant Arrays of Independent Disks、すなわち、RAIDインプリメンテーションなど)が、SSDの不揮発性メモリ環境に実現されてもよい。いくつかの実施例では、ホストからのライトデータはXORパリティ生成手段を介し流れ、ホストデータとパリティとが不揮発性メモリに書き込まれる。SSDのプライマリECCエンジンがホストセクタを訂正できない場合、又はダイ(NANDダイなど)が故障した場合、第2レベルの誤り訂正が、正しいデータを取得するためにいくつかの実施例に従って実装される。
【0010】
いくつかの実施例では、訂正不可なセクタを除くパリティ及びホストデータがメディアから読まれ、欠落したデータはXOR演算を用いて復元される。イレースブロックに以前に書き込まれたデータが、同一のイレースブロック内における以降のライト/プログラムにおいてプログラム不具合が発生したときに損傷してしまうNANDプログラム不具合などのプログラム不具合の場合、イレースブロックに以前に書き込まれたが、現在損傷している各ページは、XOR演算を用いて1つずつ復元される。同じタイプのXOR演算は、プライマリECC不具合又はプログラム不具合の場合に利用されてもよい。
【0011】
1つのSSDは約80のNANDダイを含む可能性があるため、SSDプロダクトの平均故障寿命(MTTF)は、いくつかの実施例によると、NANDダイ不具合に対する耐性能力のため約6倍の長さまで延長され、データ損失なく処理を続ける。このMTTFの改良は大変重要である。さらに、いくつかの実施例によると、プライマリECCを用いた実現形態に対するデータ信頼性は、数オーダの大きさまで増加する。これは、読み込み時、ECC訂正が、ECCがより多くのエラービットを訂正可能であるため不具合になった場合、冗長なXORデータがオリジナルデータを再構成するのに利用されてもよいためである。同様に、書き込み時、同一のイレースブロック上の他のデータを損傷するプログラム不具合が発生した場合、損傷したデータの再構成が、いくつかの実施例により実行されてもよい。これらは、特にNANDメモリがより精緻なリソグラフィーに基づくものであるとき、SSD及びNANDメモリに対して重要な改良となる。
【0012】
図1は、いくつかの実施例によるシステム100を示す。いくつかの実施例では、システム100は、ホスト102とSSD104とを有する。いくつかの実施例では、SSD104は、SSDと参照されることに限定されず、何れかのタイプの不揮発性メモリを含むことができる。SSD104は、コントローラ106とメモリ108とを有する。いくつかの実施例では、メモリ108は、NANDメモリなどの不揮発性メモリである。いくつかの実施例では、コントローラ106は、SSD104のメモリ108に書き込まれたデータのインテグリティを確保するため、ECCを実行するECCエンジン(図1に図示せず)を有する。ECCは、SSD104とホスト102との間で通信されるデータにおける誤りを特定及び訂正する。しかしながら、コントローラ106のECCエンジンは、データのホストセクタを訂正することができないことがあり、ダイ不具合(SSD104のメモリ108に含まれるNANDダイなどにおいて)は、データインテグリティ問題を生じさせる。従って、いくつかの実施例では、コントローラ106はさらに、プライマリECCエンジンがホストセクタを訂正できない場合、又はメモリ108のダイに不具合が生じた場合など、XOR技術を実行するためのXORパリティ生成手段を有する。
【0013】
図2は、いくつかの実施例による不揮発性メモリのグラフィカル表示200を示す。グラフィカル表示200は、垂直軸上にページ00〜127と、水平軸上にスロット00〜79とを有する。図2の各ページは、一例となる8つのセクタを有する。スロットは、例えば、いくつかの実施例では、SSD上で80個のメモリダイをグラフィカルに示し、及び/又はメモリチャネル及び/又はチップイネーブルの抽象化である。いくつかの実施例では、スロット00〜79のそれぞれは、その他のスロットと同時又は並列動作可能なエンジンを表す。
【0014】
図2に示されるように、ホストからのコンテンツは、時間順にメモリ(NANDメモリなど)に書き込まれる。コンテンツは、ページ00及びスロット00における8セクタページを充填し、その後、次のコンテンツが、ページ00の次のスロット01に書き込まれ、グラフ200の先頭のページ00の矢印により示されるように続けられる。XORパリティは、ホストコンテンツが受信されると即座に生成される。ホストコンテンツが最後のスロットを除くページのすべてのスロット(すなわち、スロット00〜78)を充填すると、パリティページがスロット79などにおいてフローに挿入され、当該ページの最後のスロットを占有する。すなわち、本例におけるスロット79に書き込まれるパリティページのセクタ0は、当該ページのスロット00〜78のすべてのセクタ0のコンテンツのXORであり、スロット79に書き込まれるパリティページのセクタ1は、同様に、当該ページのスロット00〜78のすべてのセクタ1のコンテンツのXORであり、以下同様に続く。いくつかの実施例では、パリティセクタは、ホストコンテンツとメタデータのXORであり、ECCフィールドでない。このようにして、パリティページの各セクタは、それのコンテンツに固有のECCを含む。
【0015】
図2は、ページの一部に書き込まれたコンテンツとパリティとの一例を示す。4つのセクタが、スロット01のセクタ2〜5に書き込まれ、その後に4つのセクタが、スロット01のセクタ6,7とスロット02のセクタ1,2に書き込まれる。その後、4つのセクタが、スロット02のセクタ3〜6に書き込まれ、1つのセクタが、スロット02のセクタ7に書き込まれる。その後、8つのセクタが、スロット02のセクタ8とスロット03のセクタ1〜7に書き込まれる。8つのパリティセクタが、XORなどを用いてセクタ単位でセクタに対して計算され、その後にパリティデータとしてスロット79の8つのセクタに書き込まれる。
【0016】
上述された1つのオアリティスロット79による実施例では、スロット00〜78の何れかのページの何れかのセクタに訂正不可な誤りがある場合、SSDは、誤りの1つを除きすべてのページからセクタ番号を読み、欠落したコンテンツを復元するため、スロット79の対応するパリティセクタと共にこれらのセクタのコンテンツをXOR演算することが可能である。いくつかの実施例では、Bose−Chaudhuri−Hocquengen(BCH)訂正などのECCが、パリティを含む各セクタに対して実行され、訂正不可な状態が、コンテンツをXOR演算することによって第2レベルのECC復元をトリガするのに利用される。
【0017】
1つのパリティスロット79を有する上述された実施例では、スロット00〜78のアレイ毎に1つのパリティページが、ハードエラー及び破滅的なダイの不具合から保護する。複数スロットを抽出するコンポーネント不具合に対する保護の実施例では、他の実現形態がいくつかの実施例により利用可能である。例えば、2つのスロットを抽出するコンポーネント不具合に対して保護するため、2つのパリティページがスロットアレイ毎に挿入されてもよい(スロット39,79などに)。いくつかの実施例では、スロット39のパリティは、スロット00〜38をカバーするのに用いられ、スロット79のパリティは、スロット40〜78をカバーするのに用いられてもよい。スロットアレイは、パッケージ不具合がスロット00〜39のパリティストライプから1つのスロットを抽出し、スロット40〜79のパリティストライプから第2スロットを抽出するように調整されてもよい。例えば、パッケージ5がスロット5,45に2つのCEと共にマッピングされる場合、上述されたパリティストライプは、2.5%のキャパシティコストにおいてコンポーネント不具合から保護することになる。キャパシティコストは、ダイ不具合(パッケージ不具合でなく)が保護されるべきである場合、1/2にカットされてもよい。
【0018】
XORが複数のマスストレージデバイス環境において以前に利用されたが、いくつかの実施例によると、単一のストレージデバイス(SSDなど)に関して破滅的なコンポーネント不具合からコンテンツを保護するための技術が利用可能である。インダイレクション(indirection)がすべてのライトを実質的にシーケンシャルにすることを可能にするSSD環境では、ランダムなライト処理に関するペナルティはない。さらに、以前に書き込まれたデータの消失を生じさせるNANDプログラミング不具合などのSSDに特有の問題は、いくつかの実施例により解決されてもよい。いくつかの実施例は、プログラム不具合は低コストに解決され、さらにダイ不具合及びECC不具合に対処する。
【0019】
いくつかの実施例が特定の方法により実現されるものとして説明されたが、いくつかの実施例によると、これらの実現形態は必要でないかもしれない。例えば、図1は、ECC及びXOR処理を実行するための1つのコントローラを図示及び記載しているが、いくつかの実施例によると、別々のコントローラ(及び/又は専用コントローラ)が利用されてもよいことに留意されたい。
【0020】
いくつかの実施例が特定の実現形態を参照して説明されたが、いくつかの実施例によると、他の実現形態もまた可能である。さらに、図面に図示及び/又はここに開示される回路要素又は他の特徴の構成及び/又は順序は、図示及び開示された特定の方法により構成される必要はない。他の多数の構成が、いくつかの実施例により可能である。
【0021】
図示される各システムでは、いくつかのケースにおける要素のそれぞれは、表された要素が異なるもの及び/又は類似するものであってもよいことを示唆するため、同一又は異なる参照番号を有してもよい。しかしながら、ある要素は、異なる実現形態を有し、図示又は開示されたシステムの一部又はすべてと動作するのに十分にフレキシブルなものであってもよい。図面に示される各種要素は、同一又は異なるものであってもよい。何れが第1要素と呼ばれ、何れが第2要素と呼ばれるかは、任意的なものである。
【0022】
明細書及び請求項において、“結合される”及び“接続される”という用語は、それらの派生語と共に利用されてもよい。これらの用語は、互いに同義的なものとして意図されていないことが理解されるべきである。特定の実施例では、“接続される”とは、2以上の要素が互いに直接的な物理的又は電気的接触をしていることを示すのに利用されてもよい。“結合される”とは、2以上の要素が間接的な物理的又は電気的接触をしていることを意味するものであってもよい。しかしながら、“結合される”とはまた、2以上の要素が互いに直接的に接触していないが、依然として互いに協調又は相互作用することを意味するものであってもよい。
【0023】
アルゴリズムは、ここでは、また一般的に、所望の結果を導くステップ又は処理の自己一貫性のあるシーケンスであるとみなされる。これらは、物理量の物理的操作を含む。通常、必要とはされないが、これらの量は、格納、移転、合成、比較及び他の操作が可能な電気又は磁気信号の形態をとる。これらの信号をビット、値、要素、シンボル、キャラクタ、項、番号などと呼ぶことは、主として一般的な利用のために便利であるときがある。しかしながら、これらの用語及び同様の用語のすべてが適切な物理量に関連付けされるべきであり、これらの量に適用される単なる便宜上のラベルであることが理解されるべきである。
【0024】
いくつかの実施例は、ハードウェア、ファームウェア及びソフトウェアの1つ又は組み合わせにより実現されてもよい。いくつかの実施例はまた、ここに開示された処理を実行するため計算プラットフォームにより読み込まれ、実行されるマシーン可読媒体に格納される命令として実現されてもよい。マシーン可読媒体は、マシーン(コンピュータなど)により可読な形態により情報を格納又は送信するための何れかの機構を含むものであってもよい。例えば、マシーン可読媒体は、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスクストレージメディア、光ストレージメディア、フラッシュメモリデバイス、伝搬信号(搬送波、赤外線信号、デジタル信号、信号を送信及び/又は受信するインタフェースなど)の電気、光、音響又は他の形態などを含むものであってもよい。
【0025】
実施例は、本発明の実現形態又は具体例である。明細書における“実施例”、“一実施例”、“いくつかの実施例”又は“他の実施例”という表現は、実施例に関して説明される特定の特徴、構成又は特性が少なくともいくつかの実施例に含まれることを意味し、必ずしも本発明のすべての実施例を意味するものでない。“実施例”、“一実施例”又は“いくつかの実施例”という表現は、必ずしも同一の実施例を参照しているとは限らない。
【0026】
ここに開示及び図示されるすべてのコンポーネント、特徴、構成、特性などが、特定の実施例に含まれる必要があるとは限らない。明細書が、コンポーネント、特徴、構成又は特性が“含まれてもよい”、“含まれる可能性がある”、“含まれうる”、“含めることができる”などのと述べている場合、当該コンポーネント、特徴、構成又は特性が含まれることが要求されていない。明細書又は請求項が“ある”要素を参照している場合、それは、当該要素が1つしかないことを意味するものでない。明細書又は請求項が“さらなる”要素を参照している場合、それは、当該要素が複数存在することを排除するものでない。
【0027】
フロー図及び/又は状態図が実施例を説明するのに利用されたが、本発明は、これらの図又は対応する説明に限定されるものでない。例えば、フローは図示されたボックス又は状態を通過する必要はなく、図示及び開示されたものと全く同じ順序である必要もない。
【0028】
本発明は、ここで列記される特定の詳細に限定されるものでない。実際、本開示の利益を有する当業者は、上述した説明及び図面からの他の多数の変形が本発明の範囲内において可能であることを理解するであろう。従って、補正を含む以下の請求項が、本発明の範囲を規定する。

【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリに格納されているデータに対してECCを実行し、前記ECCが前記データを訂正できない場合、前記データに対してパリティ処理を実行するコントローラと、
を有するソリッドステートディスク。
【請求項2】
前記パリティ処理は、XOR処理を有する、請求項1記載のソリッドステートディスク。
【請求項3】
前記コントローラは、前記不揮発性メモリにデータを書き込み、前記データが書き込まれるときにECCとパリティ情報を生成し、前記不揮発性メモリに格納する、請求項1記載のソリッドステートディスク。
【請求項4】
前記不揮発性メモリは、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割される、請求項1記載のソリッドステートディスク。
【請求項5】
前記不揮発性メモリはさらに、各ページがいくつかのセクタを有する複数のページに分割され、
データが、第1スロットのページにセクタ順に書き込まれ、前記ページが充填されると、その後に第2スロットの前記同一のページに書き込まれる、請求項4記載のソリッドステートディスク。
【請求項6】
前記複数のスロットの1以上が、パリティ情報のために確保される、請求項4記載のソリッドステートディスク。
【請求項7】
前記複数のスロットの1以上が、パリティ情報のために確保される、請求項5記載のソリッドステートディスク。
【請求項8】
ホストとソリッドステートディスクとを有するシステムであって、
前記ソリッドステートディスクは、
不揮発性メモリと、
前記不揮発性メモリに格納されているホストデータに対してECCを実行し、前記ECCが前記データを訂正できない場合、前記データに対してパリティ処理を実行するコントローラと、
を有するシステム。
【請求項9】
前記パリティ処理は、XOR処理を有する、請求項8記載のシステム。
【請求項10】
前記コントローラは、前記不揮発性メモリにデータを書き込み、前記データが書き込まれるときにECCとパリティ情報を生成し、前記不揮発性メモリに格納する、請求項8記載のシステム。
【請求項11】
前記不揮発性メモリは、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割される、請求項8記載のシステム。
【請求項12】
前記不揮発性メモリはさらに、各ページがいくつかのセクタを有する複数のページに分割され、
データが、第1スロットのページにセクタ順に書き込まれ、前記ページが充填されると、その後に第2スロットの前記同一のページに書き込まれる、請求項11記載のシステム。
【請求項13】
前記複数のスロットの1以上が、パリティ情報のために確保される、請求項11記載のシステム。
【請求項14】
前記複数のスロットの1以上が、パリティ情報のために確保される、請求項12記載のシステム。
【請求項15】
ソリッドステートディスクの不揮発性メモリに格納されているデータに対してECCを実行するステップと、
前記ECCが前記データを訂正できない場合、又はプログラム不具合が起こった場合、前記データに対してパリティ処理を実行するステップと、
を有する方法。
【請求項16】
前記パリティ処理は、XOR処理を有する、請求項15記載の方法。
【請求項17】
前記不揮発性メモリにデータを書き込むステップと、
ECCとパリティ情報とを生成するステップと、
前記データが書き込まれると、前記ECCとパリティ情報とを前記不揮発性メモリに格納するステップと、
をさらに有する、請求項15記載の方法。
【請求項18】
前記不揮発性メモリを、各スロットが同時的動作が可能なエンジンを表す複数のスロットに分割するステップをさらに有する、請求項15記載の方法。
【請求項19】
前記不揮発性メモリを、各ページがいくつかのセクタを有する複数のページに分割するステップと、
データを第1スロットのページにセクタ順に書き込み、前記ページが充填されると、データを第2スロットの前記同一のページに書き込むステップと、
をさらに有する、請求項18記載の方法。
【請求項20】
パリティ情報のため前記複数のスロットの1以上を確保するステップをさらに有する、請求項18記載の方法。
【請求項21】
パリティ情報のため前記複数のスロットの1以上を確保するステップをさらに有する、請求項19記載の方法。

【図1】
image rotate

【図2】
image rotate


【公表番号】特表2012−514274(P2012−514274A)
【公表日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2011−544507(P2011−544507)
【出願日】平成21年12月22日(2009.12.22)
【国際出願番号】PCT/US2009/069286
【国際公開番号】WO2010/078167
【国際公開日】平成22年7月8日(2010.7.8)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】