(57)【特許請求の範囲】
【請求項１】
ソリッドステートストレージの信頼性を管理するための方法であって、
前記ソリッドステートストレージに記憶された符号化されたデータを読み取ること、
アクセスされた前記符号化されたデータを復号し、復号されたデータを、前記復号されたデータの確率を表すソフト判定としてもたらすこと、
前記復号されたデータの前記確率を評価すること、および
前記評価に応答してエンコーダおよびデコーダの符号レートを調整することを含む方法。
【請求項２】
前記符号レートは、線形誤り訂正符号に関する、請求項１に記載の方法。
【請求項３】
前記ソリッドステートストレージは、前記符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを備え、
前記エンコーダは、低密度パリティ検査エンコーダであり、かつ
前記デコーダは、ＬＤＰＣデコーダである、請求項２に記載の方法。
【請求項４】
前記符号化されたデータをもたらすように、入力データを前記エンコーダを用いて符号化すること、および
前記符号化されたデータを前記ソリッドステートストレージに書き込むことをさらに含む、請求項１に記載の方法。
【請求項５】
前記評価することは、前記ソリッドステートストレージから事前定義された量の前記符号化されたデータを読み取ることを含み、前記事前定義された量は、前記ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される、請求項４に記載の方法。
【請求項６】
前記符号レートが第１の符号レートである、方法であって、
前記ソフト判定を、前記復号されたデータに関する、１より大きい所定の範囲を有するソフトビット値としてもたらすこと、
アクセスされた前記符号化されたデータに関連付けられた前記ソリッドステートストレージ内の異なるロケーションにそれぞれ関連付けられた、第１のメトリックおよび第２のメトリックをもたらすように、前記復号されたデータに関する前記ソフトビット値を合計すること、
前記第１のメトリックに応答して使用すべき前記第１の符号レートより低い第２の符号レートを決定すること、および
前記第２のメトリックに応答して前記ソリッドステートストレージの事前定義された量の使用を阻止することをさらに含む、請求項１に記載の方法。
【請求項７】
前記阻止することは、前記事前定義された量の使用を防止するようにアドレスマッピングを行うことを含み、かつ
前記事前定義された量は、前記ソリッドステートストレージのセクタの少なくとも１つのブロックを含む、請求項６に記載の方法。
【請求項８】
ソリッドステートストレージの信頼性を管理するための装置であって、
符号レートをもたらすためのメモリコントローラと、
符号化されたデータをもたらすために入力データおよび前記符号レートを受け取るためのエンコーダと、
前記符号化されたデータを受け取るため、および記憶するための前記ソリッドステートストレージと、
前記ソリッドステートストレージに記憶された前記符号化されたデータにアクセスするため、およびアクセスされた前記符号化されたデータの復号されたデータをもたらすために前記符号レートを受け取るための、デコーダとを備え、
前記復号されたデータは、前記復号されたデータの確率を表すソフト判定としてもたらされ、かつ
前記メモリコントローラは、前記復号されたデータの前記確率により前記符号レートを調整するために前記復号されたデータを受け取ることを目的とする、装置。
【請求項９】
前記符号レートは、線形誤り訂正符号に関する、請求項８に記載の装置。
【請求項１０】
前記ソリッドステートストレージは、前記符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを備え、
前記エンコーダは、低密度パリティ検査（「ＬＤＰＣ」）エンコーダであり、かつ
前記デコーダは、ＬＤＰＣデコーダである、請求項８に記載の装置。
【請求項１１】
前記デコーダは、ソフト入力ソフト出力デコーダである、請求項８に記載の装置。
【請求項１２】
前記ソリッドステートストレージは、前記符号化されたデータを事前定義された量で読み出すように構成され、かつ、前記事前定義された量は、前記ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される、請求項８に記載の装置。
【請求項１３】
前記デコーダは、前記ソフト判定を、１より大きい所定の範囲を有し、前記復号されたデータに関する前記確率を表すソフトビット値としてもたらすように構成され、かつ
前記メモリコントローラは、前記符号レートを選択するためのメトリックをもたらすように、前記復号されたデータに関する前記ソフトビット値を合計するように構成される、請求項８に記載の装置。
【請求項１４】
前記メモリコントローラは、
前記メトリックを閾値と比較すること、および
前記メトリックが前記閾値を下回ることに応答して前記符号レートの調整を決定することを行うようにさらに構成される、請求項１３に記載の装置。
【請求項１５】
前記メモリコントローラは、
前記メトリックをポインタとして用いて符号レートのストア内の前記符号レートをポイントすること、および
前記符号レートの前記ストアから、ポイントされた前記符号レートを出力することを行うようにさらに構成される、請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の説明は、情報ストレージに関する。より詳細には、以下の説明は、可変符号レートソリッドステートドライブに関する。
【背景技術】
【０００２】
ソリッドステートフラッシュメモリは、大型のメモリストレージシステムに迅速に差し込まれるものとして存続している。残念ながら、例えば、ＮＡＮＤフラッシュメモリセルまたはＮＯＲフラッシュメモリセルの場合など、ソリッドステートフラッシュメモリは、従来、消耗を示し始めるまでに有限数のプログラム−消去サイクルを有する。この消耗は、ソリッドステートドライブの信頼性を低下させ得る。このため、そのような消耗に適応可能なソリッドステートドライブを提供することが望ましく、有用である。
【発明の概要】
【０００３】
方法が、一般に、ソリッドステートストレージの信頼性を管理することに関する。そのような方法において、ソリッドステートストレージに記憶された符号化されたデータが読み取られる。アクセスされた符号化されたデータが、復号されて、復号されたデータを、復号されたデータの確率を表すソフト判定としてもたらす。復号されたデータの確率が評価される。エンコーダおよびデコーダの符号レートが、評価に応答して調整される。
【０００４】
任意選択で、符号レートは、線形誤り訂正符号に関する。
【０００５】
任意選択で、ソリッドステートストレージは、符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを含む。
【０００６】
任意選択で、エンコーダは、低密度パリティ検査エンコーダであり、デコーダは、ＬＤＰＣデコーダである。
【０００７】
任意選択で、方法は、入力データを、エンコーダを用いて符号化して、符号化されたデータをもたらすこと、および符号化されたデータをソリッドステートストレージに書き込むことをさらに含む。
【０００８】
任意選択で、アクセスすることは、ソリッドステートストレージから事前定義された量の符号化されたデータを読み取ることを含む。
【０００９】
任意選択で、事前定義された量は、ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される。
【００１０】
任意選択で、符号レートは、第１の符号レートであり、方法は、復号されたデータに関するソフトビットを決定すること、復号されたデータに関するソフトビットの大きさを組み合わせて、ソフトビットに関するメトリックをもたらすこと、およびメトリックに応答して使用すべき第１の符号レートより低い第２の符号レートを決定することをさらに含む。
【００１１】
任意選択で、方法は、メトリックに応答してソリッドステートストレージの事前定義された量の使用を阻止することをさらに含む。
【００１２】
任意選択で、阻止することは、事前定義された量の使用を防止するアドレスマッピングを含み、かつ事前定義された量は、ソリッドステートストレージのセクタの少なくとも１ブロックを含む。
【００１３】
装置が、一般に、ソリッドステートストレージの信頼性を管理することに関する。そのような装置において、符号レートをもたらすことを目的とするメモリコントローラが存在する。エンコーダが、符号化されたデータもたらすために入力データおよび符号レートを受け取ることを目的とする。ソリッドステートストレージが、符号化されたデータを受け取ること、および記憶することを目的とする。デコーダが、ソリッドステートストレージに記憶された符号化されたデータにアクセスすること、およびアクセスされた符号化されたデータの復号されたデータをもたらすために符号レートを受け取ることを目的とする。復号されたデータが、復号されたデータの確率を表すソフト判定としてもたらされる。メモリコントローラは、復号されたデータの確率に応答して符号レートを調整するために復号されたデータを受け取ることを目的とする。
【００１４】
任意選択で、符号レートは、線形誤り訂正符号に関する。
【００１５】
任意選択で、ソリッドステートストレージは、符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを含む。
【００１６】
任意選択で、エンコーダは、低密度パリティ検査（「ＬＤＰＣ」）エンコーダであり、デコーダは、ＬＤＰＣデコーダである。
【００１７】
任意選択で、デコーダは、ソフト入力ソフト出力デコーダである。
【００１８】
任意選択で、ソリッドステートストレージは、符号化されたデータを事前定義された量で読み出すように構成される。
【００１９】
任意選択で、事前定義された量は、ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される。
【００２０】
任意選択で、デコーダは、復号されたデータに関する確率を表すソフトビットをもたらすように構成され、メモリコントローラは、復号されたデータに関するソフトビットの大きさを組み合わせて、符号レートを選択するためのメトリックをもたらすように構成される。
【００２１】
任意選択で、メモリコントローラは、メトリックを閾値と比較すること、およびメトリックが閾値を下回ることに応答して符号レートの調整を決定することを行うようにさらに構成される。
【００２２】
任意選択で、メモリコントローラは、メトリックをポインタとして用いて符号レートのストア内の符号レートをポイントすること、および符号レートのストアから、ポイントされた符号レートを出力することを行うようにさらに構成される。
【００２３】
以下の詳細な説明、および特許請求の範囲の考慮から他の特徴が認識されよう。
【００２４】
添付の図面は、例示的な装置および／または方法を示す。しかし、添付の図面は、特許請求の範囲を限定するものと解釈されるべきではなく、説明および理解のためだけのものである。
【図面の簡単な説明】
【００２５】
【図１】情報を記憶するための例示的なソリッドステートドライブ（「ＳＳＤ」）を示すブロック図である。
【図２】情報を記憶するための例示的なプロセスフローを示す流れ図である。
【図３】例示的なカラムナフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）アーキテクチャを示す簡略化されたブロック図である。
【図４】例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【００２６】
以下の説明において、非常に多くの特定の詳細が、本明細書において説明される特定の例の適切な説明を与えるように示される。しかし、当業者には、これらの例の他の１つまたは複数の例および／または変形が、後段で与えられるすべての特定の詳細なしに実施されてよいことが明白であろう。他の実例において、よく知られた特徴は、本明細書における例の説明を不明瞭にしないように詳細には説明されていない。例示を容易にするために、同一の番号ラベルが、異なる図において、同一のアイテムを参照するのに使用されるが、代替の例において、アイテムは、異なり得る。
【００２７】
いくつかの図において例示される例を説明する前に、一般的な概説が、理解を深めるように与えられる。
【００２８】
ソリッドステートドライブ（「ＳＳＤ」）は、大容量ストレージのためにより一般的に使用されるようになっている。残念ながら、ＳＳＤのメモリセルは、そのようなメモリセルが劣化し始めるまでに限定された数の書込み−読取りサイクルを有する。この劣化は、そのようなＳＳＤの信頼性を低下させ得る。
【００２９】
ＳＳＤの有用寿命を増加させるとともに、信頼性を高めるのに、ソフト復号が、後段でさらに詳細に説明されるとおり、使用され得る。ソフト復号とは、復号された情報が、データ入力が特定の値であるという確率または推定を表す復号プロセスを指し、その値は、従来、バイナリ符号化されたデータに関して「０」または「１」の確率を表すのに使用される０と１の間の値である。この確率または推定は、そのような復号された情報の信頼性示す。これに対して、ハード判定デコーダは、バイナリ符号化されたデータに関して、従来、「０」または「１」である可能な値の決められたセットを用いてデータ入力を操作する。
【００３０】
ソフト復号された情報は、そのような情報の信頼性を示し得る。後段でさらに詳細に説明されるとおり、メモリコントローラが、そのようなソフト復号された情報を処理して、確率論的符号化および復号のための符号レートを設定するためにその情報に関するメトリックを生成するように構成され得る。そのような符号レート設定は、ソリッドステートストレージのメモリセルの累進的な消耗に関して調整されるように可変であるように適応させられてよい。
【００３１】
前述の一般的な理解に留意して、情報を記憶するための様々な構成が、後段で一般に説明される。
【００３２】
図１は、情報を記憶するための例示的なソリッドステートドライブ（「ＳＳＤ」）１００を示すブロック図である。ＳＳＤ１００は、メモリコントローラ１１０と、エンコーダ１２０と、ソリッドステートストレージ１３０と、デコーダ１４０とを含む。明瞭にするために、限定するためにではなく、ＳＳＤ１００に関する多くの知られている詳細は、不必要に詳細に説明されない。
【００３３】
メモリコントローラ１１０は、エンコーダ１２０およびデコーダ１４０に符号レート１１２をもたらすために結合され得る。エンコーダ１２０は、書込みチャネル１０１に対してメモリコントローラ１１０経由であり得る、入力データ１１１を受け取るために結合されるとともに、符号レート１１２を受け取るように結合されて、そのような書込みチャネル１０１経由でそのような入力データ１１１に関する符号化されたデータ１２１をもたらしてよい。符号化されたデータ１２１は、誤り訂正符号のための符号レート１１２でエンコーダ１２０を用いて符号化されてよい。符号化されたデータ１２１は、ソリッドステートストレージ１３０に書き込まれ得る。
【００３４】
そのような誤り訂正符号は、線形誤り訂正符号であってよい。使用され得る線形誤り訂正符号の例が、低密度パリティ検査（「ＬＤＰＣ」）符号である。それらの線に沿って、エンコーダ１２０は、ＬＤＰＣエンコーダ１２０であってよく、デコーダ１４０は、ＬＤＰＣデコーダ１４０であってよい。
【００３５】
ソリッドステートストレージ１３０は、符号化されたデータ１２１を受け取るため、および記憶するために結合され得る。デコーダ１４０は、記憶された符号化されたデータ（「記憶されたデータ」）１３３に読取りチャネル１０２経由でアクセスするために結合され得る。デコーダ１４０は、読取りチャネル１０２経由で、読み取られた記憶されたデータ１３３、すなわち、読み取られたデータ１３１の復号されたデータ１４１をもたらすための符号レート１１２を受け取るために結合され得る。
【００３６】
記憶されたデータ１３３は、ソリッドステートストレージ１３０のメモリセル１３２に記憶され得る。それらの線に沿って、ソリッドステートストレージ１３０は、１つまたは複数のタイプのメモリセル１３２を含み得る。メモリセル１３２は、符号化されたデータ１２１を記憶するためのマルチレベルセル（「ＭＬＣ」）、バイナリセル、トリプルレベルセル（「ＴＬＣ」）、およびシングルレベルセル（「ＳＬＣ」）から成るグループから選択され得る。これらのメモリセル１３２は、例えば、ＮＡＮＤフラッシュメモリセルまたはＮＯＲフラッシュメモリセルなどのフラッシュメモリセルであってよい。メモリセル１３２は、後段でさらに詳細に説明されるとおり、メモリセル１３２に記憶されたデータの信頼性を低下させ得る、書込み−読取りサイクル、またはプログラム−消去サイクルに起因する消耗を示し得る。
【００３７】
フラッシュメモリベースのＳＳＤ１００は、大容量ストレージのためにより普及してきているが、フラッシュメモリベースのＳＳＤ１００は、メモリ消耗を有し得る。それらの線に沿って、ＮＡＮＤフラッシュメモリデバイスまたはＮＯＲフラッシュメモリデバイスがサポートすることができる限定された数のプログラム−消去サイクルが存在し得る。メモリ密度を増加させるのに、そのような各メモリセル１３２が複数のデータビットを記憶するＭＬＣが使用されてよい。これらのＭＬＣベースのフラッシュメモリベースのＳＳＤ１００は、パルス振幅変調（「ＰＡＭ」）符号化されたデータを記憶してよい。
【００３８】
フラッシュ読取りチャネル１０２は、加算性白色ガウス雑音（「ＡＷＧＮ」）チャネルとしてモデル化されてよく、データ完全性を増加させるのに、前方誤り訂正（「ＦＥＣ」）が、メモリコントローラ１１０の一部であり得るＦＥＣシステム１０５によって使用されてよい。後段でさらに詳細に説明されるとおり、ＦＥＣシステム１０５は、本明細書において説明される目的のために統計エンジン１０６で増強されてよい。実施様態において、メモリコントローラ１１０は、任意選択で、符号レート１４２ないし１４４などの複数の符号レートを記憶するためのメモリ１０７を含んでよい。さらに、メモリ１０７は、後段でさらに詳細に説明されるとおり、メトリック１０８および閾値１０９を記憶してよい。
【００３９】
ＳＳＤ１００において、データは、マルチレートＬＤＰＣ符号化または他の確率論的符号化を使用してオンザフライで符号化されてよく、かつ復号されてよい。このマルチレート符号レートは、一般に、高い符号レートとして開始してよく、かつソリッドステートストレージ１３０のメモリセル１３２の消耗に適応させられて、または応答して低い符号レートに累進的にステップダウンされてよい、可変符号レートである。しかし、マルチレート符号レートは、いくつかの実例において、例えば、ソリッドステートストレージ１３０のメモリセル１３２のデータの通信が向上した場合、累進的に増加されてよい。一般に、ＳＳＤ１００は、時とともにパフォーマンスが低下するものと想定されたい。このことは、そのようなメモリセル１３２の信頼性、または、より詳細には、そのようなメモリセル１３２から読み取られる情報の信頼性の低下をもたらすそのようなメモリセル１３２の多数の書込み−読取りサイクルに起因し得る。符号レート１１２は、後段でさらに詳細に説明されるとおり、そのような信頼性に応じて設定されてよい。
【００４０】
符号化レート変更は、ソリッドステートストレージ１３０のフラッシュメモリの有用寿命を延ばすために符号レートに対するオンライン変更または「オンザフライ」変更として実行されてよい。このことは、ＳＳＤベースのストレージシステムへの投資を保全するために有用であり得る。しかし、複数の次第により低い符号レートをもたらすことによって、スループットが、そのようなＳＳＤ１００の次第の消耗に対応して次第に低減され得る。知られているとおり、低レート符号は、より多くの冗長性を有して、スループットを犠牲にしてより多くの誤り訂正をもたらす。本明細書で説明される、ＬＤＰＣ符号化のための符号レートのオンライン変更は、そのような有用寿命にわたってスループットを次第に制約しながら、信頼性を高めることによってＳＳＤ１００の有用寿命を増加させ得る。
【００４１】
デコーダ１４０は、ソフト判定としてもたらされ得る復号されたデータ１４１を出力する。ソフト判定が一般に意味するのは、バイナリ符号化されたデータに関して、従来、論理０または論理１である、データ状態の信頼性の確率または推定である。それらの線に沿って、ソフト判定と確率は、以降、互いに区別なく使用され得る。メモリコントローラ１１０が、復号されたデータ１４１の確率に応答して符号レート１１２を調整するために復号されたデータ１４１を受け取るために結合され得る。
【００４２】
ＦＥＣシステムまたはＦＥＣサブシステム１０５は、統計エンジン１０６をもたらすようにファームウェアおよび／またはハードウェアで増強され得る。統計エンジン１０６は、復号されたデータ１４１から情報を収集し、かつソリッドステートストレージ１３０の「健康状態」を表す統計を算出するように構成され得る。ＬＤＰＣ復号、またはソフト復号の他の任意の変種において、復号されたデータは、論理１または論理０であるメモリビットの確率を記述する統計情報を含む。一般に、大きい正の値は、「強い」論理１を示す一方で、大きい負の値は、「強い」論理０を示す。ビット、すなわち、メモリセルの信頼性を表す信頼性が、メモリ消耗に起因して最低限度になると、そのビットに関するビットレベル確率の大きさが低減され得る。
【００４３】
例えば、符号化された記憶されたデータ１３３の事前定義された量のデータが、ソリッドステートストレージ１３０から、限定なしに、バースト読取りを含む読取りなどによって、アクセスされ得る。この事前定義された量のデータは、ソリッドステートストレージ１３０の記憶されたデータ１３３のセクタまたはブロックに関し得る。事前定義された量のデータの他の例は、ソリッドステートストレージ１３０のサブアレイまたはアレイであり得る。
【００４４】
データのブロックまたはセクタに関するビットレベル確率は、それぞれ、そのようなブロックまたはセクタに関する信頼性メトリックをもたらすように組み合わせられてよい。それらの線に沿って、復号されたデータ１４１に関するソフトビットとしてもたらされるソフト判定は、デコーダ１４０によってメモリコントローラ１１０のＦＥＣシステム１０５にもたらされ得る。ＦＥＣシステム１０５の統計エンジン１０６は、ブロックまたはセクタに関して、ソフト判定のそのような確率を組み合わせて、すなわち、復号されたデータ１４１のソフトビットの値を組み合わせて、ビットレベル対数尤度値の絶対値の平均をメトリック１０８として獲得することが可能である。この平均メトリック１０８、ならびにこのタイプ、またはその他のタイプのグルーピングの復号されたデータ１４１に関する他の平均メトリック１０８は、メモリコントローラ１１０によってアクセスされるようにメモリコントローラ１１０のメモリ１０７または別の場所に記憶され得る。
【００４５】
この例において、平均メトリック１０８は、ブロックレベル信頼性データおよび／またはセクタレベル信頼性データとして、対応するブロックおよび／またはセクタに関する。それらの線に沿って、データのセクタより大幅に小さいデータのブロックは、欠陥があると判定され得る。セクタ全体に関するスループットを低減するのではなく、そのようなブロックは、そのようなブロックの使用を防止するようにアドレスマッピングされてよい。さらに、１つまたは複数の不良なブロックを有するセクタが、そのようなセクタの使用を防止するようにアドレスマッピングされてよい。メモリコントローラ１１０は、１つまたは複数のブロックおよび／または１つまたは複数のセクタが使用されるのを阻止するための能力を有することが可能であり、十分に低い平均メトリック１０８に基づく統計エンジン１０６からの制御信号が、そのような阻止を活性化するのに使用され得る。
【００４６】
そのような信頼性情報は、メモリコントローラ１１０のメモリ１０７に記憶され得る、任意選択のしきい値（「閾値」）１０９のしきい値に対するベクトルまたはポインタであってよい。メモリ１０７は、限定なしに、符号レート１４２ないし１４４などの符号レートのルックアップテーブル（「ＬＵＴ」）または他のストア１４５を含む、１つまたは複数のタイプのメモリを含み得る。そのような閾値１０９は、オフラインで生成されてよく、このため、そのような閾値１０９は、統計エンジン１０６によってアクセスされるようにメモリコントローラ１１０のメモリ１０７に記憶されるように所定であり得る。それらの線に沿って、閾値１０９は、使用される符号化に鑑みて信頼性レベルに関して製造業者によって決定されてよく、このため、そのような閾値１０９は、ＳＳＤ製造業者の間で様々であり得る。一般に、実施様態において、閾値１０９は、ＬＵＴ１４５などのＬＤＰＣ符号レートに関連付けられてよく、ブロックレベル信頼性のより低い値は、より低いスループットのための低レートＬＤＰＣ符号と互いに関係し、ブロックレベル信頼性のより高い値は、より高いスループットのための高レートＬＤＰＣ符号と互いに関係する。
【００４７】
この例において、メモリコントローラ１１０の統計エンジン１０６は、復号されたデータ１４１のソフトビットを組み合わせて、コンパレータブロック１４７などを用いて、１つまたは複数の閾値１０９と比較するためにソフトビットの大きさの平均を平均メトリック１０８としてもたらすように構成される。コンパレータブロック１４７は、ハードウェアまたはソフトウェア、あるいはハードウェアとソフトウェアの組合せで実装され得る。
【００４８】
コンパレータブロック１４７は、マルチレベル比較のために構成され得る。例えば、平均メトリック１０８が、最大閾値１０９以上である場合、そのような最大閾値１０９は、ＬＵＴ１４５における高い符号レート１４２に対する、そのような高い符号レート１４２を符号レート１１２として出力するためのポインタ１４６であり得る。同様に、例えば、平均メトリック１０８が最大閾値１０９未満であり、かつ中間閾値１０９以上である場合、そのような中間閾値１０９は、ＬＵＴ１４５における中間の符号レート１４３に対する、そのような中間の符号レート１４３を符号レート１１２として出力するためのポインタ１４６であり得る。例えば、平均メトリック１０８が、中間閾値１０９未満であり、かつ低閾値１０９以上である場合、そのような低閾値１０９は、ＬＵＴ１４５における低い符号レート１４４に対する、そのような低い符号レート１４４を符号レート１１２として出力するためのポインタ１４６であり得る。最後に、例えば、平均メトリック１０８が、低閾値１０９未満である場合、ポインタ１４６は、ＳＳＤ１００が、継続した使用のためにもはや十分に信頼できないという指示をユーザに与えることが可能であり、かつ／または前述したとおり、そのような不十分な信頼性に関連するブロックおよび／またはセクタを避けるようにアドレスマッピングするようメモリコントローラ１１０に指示を与えることが可能である。
【００４９】
高−中間−低制御選択が、例として、限定としてではなく、明瞭にするために説明されてきたものの、一般に、２つ以上の符号レートが少なくとも１つの閾値と一緒に使用され得る。したがって、平均メトリック１０８または他の適切なメトリックが、そのようなメトリックを閾値と比較することによって、符号レートの中から符号レート１１２を選択するために使用されてよい。そのような比較の結果、符号レートをそのままにするか、またはそのようなメトリックがそのような閾値を下回っていることに応答して符号レートに調整を行うかについての判定が行われ得る。さらに、別の実施様態において、例えば、平均メトリック１０８などのメトリックは、現在の復号されたデータ１４１に関する現在のメトリックを、符号レート１１２を選択するポインタとして直接に使用するために、ＬＵＴ１４５における符号レートのストアなどの、符号レートに関連して記憶されてよい。そのような構成において、閾値１０９は、閾値１０９に関する破線ボックスによって示されるとおり、省かれてよい。
【００５０】
したがって、符号レートは、ＳＳＤ１００のより長い寿命とともに、より高い信頼性を伴って、ソリッドステートストレージ１３０のブロックのセットおよび／またはセクタのセットにわたって変調され得る。ＳＳＤ１００が時とともに劣化するにつれ、符号レートは、下げられて、データのスループットをより低くする可能性があり、すなわち、ＳＳＤ１００のデータスループットは、より高い冗長性の符号が次第に増やされて次第に低減され得る。
【００５１】
図２は、情報を記憶するための例示的なプロセスフロー２００を示す流れ図である。プロセスフロー２００は、図１および図２を同時に参照してさらに説明される。
【００５２】
２０１において、入力データ１１１が、エンコーダ１２０を用いて符号化されて、符号化されたデータ１２１をもたらし得る。２０２において、そのような符号化されたデータ１２１が、記憶されたデータ１３３としてソリッドステートストレージ１３０に書き込まれ得る。
【００５３】
２０３において、ソリッドステートストレージ１３０がアクセスされて、符号化された記憶されたデータ１３３が読み取られ得る。前述したとおり、２０３におけるこのアクセス動作は、２１１において、ソリッドステートストレージ１３０から事前定義された量の符号化されたデータを読み取ることを含み得る。そのような事前定義された量のデータは、ソリッドステートストレージ１３０のセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択され得る。
【００５４】
２０４において、２０３においてアクセスされた符号化された読み取られたデータ１３１が、デコーダ１４０によって復号されて、復号されたデータ１４１をソフト判定としてもたらすことが可能である。実施様態において、そのようなソフト判定は、ビットがバイナリ符号化されたデータに関して「０」または「１」を表す確率を示す。２０５において、復号されたデータ１４１の確率が、前述したとおり、統計エンジン１０６によって評価され得る。２０５におけるこの評価動作は、２１２において、復号されたデータに関するソフトビットを特定すること、および２１３において、そのような復号されたデータ１４１に関して特定されたソフトビットの大きさを組み合わせて、例えば、平均メトリック１０８などの、それらのソフトビットに関するメトリックをもたらすことを含み得る。
【００５５】
したがって、デコーダ１４０は、ハードデコーダとは異なり、ソフト入力ソフト出力（「ＳＩＳＯ」）デコーダであってよい。言い換えれば、読み取られたデータ１３１は、そのような読み取られたデータの信頼性を示すために論理１または０の決められたバイナリ値だけではない値をとってよい。同様に、復号されたデータ１４１は、そのような復号されたデータの信頼性を示すために、例えば、バイナリコードにおける論理１または０のバイナリ値などの、決められたセットの値だけではない値をとってよい。このため、ソフト判定デコーダ１４０として、デコーダ１４０は、ハード判定デコーダと対比されるべきものである。
【００５６】
さらに、これらのソフト判定は、従来は、それぞれ、論理０と論理１の信頼性に関する負の値から正の値までの範囲であってよい。このため、前述したとおり、大きさを使用することによって、そのような信頼性情報の強度が判定され得る。例えば、−１２７から＋１２７までの範囲が、ソフト判定をソフトビットとして表すために使用されてよく、ここで、−１２７の値を有するソフトビットは、論理０に関して最高の信頼性を示し、＋１２７の値を有するソフトビットは、論理１に関して最高の信頼性を示す。
【００５７】
２０６において、エンコーダ１２０およびデコーダ１４０の符号レートが、前述したとおり、復号されたデータ１４１の確率に応答して、限定なしに、現在の符号レートをより低い符号レートで置き換えることを含め、調整されてよく、または設定されてよい。２０６におけるこの調整動作または設定動作は、２１４において、復号されたデータ１４１のそのような確率に関して決定されたメトリックに応答して、使用すべき別の符号レートを決定する（限定しないが選択することを含む）ことを含み得る。
【００５８】
メモリコントローラ１１０は、少なくとも一部には、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）のプログラマブルリソースを使用して実施され得る。本明細書において説明される例のうちの１つまたは複数は、ＦＰＧＡとして実装されてよいので、そのようなＩＣの詳細な説明が与えられる。しかし、他のタイプのＩＣも、本明細書において説明される技術を活用し得ることを理解されたい。
【００５９】
プログラマブルロジックデバイス（「ＰＬＤ」）は、指定された論理機能を実行するようにプログラミングされ得るよく知られたタイプの集積回路である。１つのタイプのＰＬＤであるフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）は、通常、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、例えば、入出力ブロック（「ＩＯＢ」）、構成可能ロジックブロック（「ＣＬＢ」）、専用ランダムアクセスメモリブロック（「ＢＲＡＭ」）、乗算器、デジタル信号処理ブロック（「ＤＳＰ」）、プロセッサ、クロックマネージャ、遅延ロックループ（「ＤＬＬ」）などを含み得る。本明細書において使用される「含む」および「含んだ」は、限定なしに含むことを意味する。
【００６０】
各プログラマブルタイルは、通常、プログラマブル相互接続とプログラマブルロジックをともに含む。プログラマブル相互接続は、通常、プログラマブル相互接続ポイント（「ＰＩＰ」）によって互いに接続された様々な長さの多数の相互接続線を含む。プログラマブルロジックは、例えば、ファンクションジェネレータ、レジスタ、演算論理装置などを含み得るプログラマブル要素を使用してユーザ設計のロジックを実装する。
【００６１】
プログラマブル相互接続およびプログラマブルロジックは、通常、プログラマブル要素がどのように構成されるかを定義する内部構成メモリセルに構成データのストリームをロードすることによってプログラミングされる。構成データは、外部デバイスによってメモリから（例えば、外部ＰＲＯＭから）読み取られること、またはＦＰＧＡに書き込まれることが可能である。次に、個々のメモリセルの集合的状態が、ＦＰＧＡの機能を決定する。
【００６２】
別のタイプのＰＬＤが、コンプレックスプログラマブルロジックデバイス、またはＣＰＬＤである。ＣＰＬＤは、相互接続スイッチマトリックスによって互いに接続され、入出力（「Ｉ／Ｏ」）リソースにも接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各機能ブロックは、プログラマブルロジックアレイ（「ＰＬＡ」）デバイスおよびプログラマブルアレイロジック（「ＰＡＬ」）デバイスにおいて使用されるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいて、構成データは、通常、不揮発性メモリにオンチップで記憶される。一部のＣＰＬＤにおいて、構成データは、不揮発性メモリにオンチップで記憶され、次に、初期構成（プログラミング）シーケンスの一環として揮発性メモリにダウンロードされる。
【００６３】
これらのプログラマブルロジックデバイス（「ＰＬＤ」）のすべてに関して、デバイスの機能は、その目的でデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（例えば、ＦＰＧＡおよび一部のＣＰＬＤの場合のようにスタティックメモリセル）に、不揮発性メモリ（一部のＣＰＬＤの場合のように、例えば、フラッシュメモリ）に、または他の任意のタイプのメモリセルに記憶され得る。
【００６４】
他のＰＬＤは、デバイス上で様々な要素をプログラミング上、互いに接続する、メタル層などの処理層を適用することによってプログラミングされる。これらのＰＬＤは、マスクプログラマブルデバイスとして知られる。ＰＬＤは、他の様態で、例えば、ヒューズ技術またはアンチヒューズ技術を使用して実装されることも可能である。「ＰＬＤ」および「プログラマブルロジックデバイス」という術語は、これらの例示的なデバイス、ならびに部分的にのみプログラマブルである包括的なデバイスを含むが、これらのデバイスには限定されない。例えば、１つのタイプのＰＬＤは、ハードコードされたトランジスタロジックと、そのハードコードされたトランジスタロジックとプログラミング上、互いに接続するプログラマブルスイッチファブリックの組合せを含む。
【００６５】
前述したとおり、高性能のＦＰＧＡは、アレイにおいていくつかの異なるタイプのプログラマブルロジックブロックを含み得る。例えば、図３は、マルチギガビットトランシーバ（「ＭＧＴ」）３０１、構成可能ロジックブロック（「ＣＬＢ」）３０２、ランダムアクセスメモリブロック（「ＢＲＡＭ」）３０３、入出力ブロック（「ＩＯＢ」）３０４、構成およびクロッキングロジック（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）３０５、デジタル信号処理ブロック（「ＤＳＰ」）３０６、特化された入出力ブロック（「Ｉ／Ｏ」）３０７（例えば、構成ポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログ−デジタル変換器、システム監視ロジックなどのその他のプログラマブルロジック３０８などを含む多数の異なるプログラマブルタイルを含むＦＰＧＡアーキテクチャ３００を示す。一部のＦＰＧＡは、専用プロセッサブロック（「ＰＲＯＣ」）３１０も含む。
【００６６】
いくつかのＦＰＧＡにおいて、各プログラマブルタイルは、隣接する各タイルにおける対応する相互接続要素に至る標準化された接続、およびそのような要素からの標準化された接続を有するプログラマブル相互接続要素（「ＩＮＴ」）３１１を含む。したがって、プログラマブル相互接続要素は一緒になって、例示されるＦＰＧＡに関するプログラマブル相互接続構造を実装する。プログラマブル相互接続要素３１１は、図３の上部に含められた例によって示されるとおり、同一のタイル内のプログラマブルロジック要素に至る接続、およびそのような要素からの接続も含む。
【００６７】
例えば、ＣＬＢ３０２は、ユーザロジックに加えて単一のプログラマブル相互接続要素（「ＩＮＴ」）３１１を実装するようにプログラミングされ得る構成可能ロジック要素（「ＣＬＥ」）３１２を含み得る。ＢＲＡＭ３０３は、１つまたは複数のプログラマブル相互接続要素に加えてＢＲＡＭロジック要素（「ＢＲＬ」）３１３を含み得る。通常、タイルに含められる相互接続要素の数は、タイルの高さに依存する。図示される実施形態において、ＢＲＡＭタイルは、５つのＣＬＢと同一の高さを有するが、他の数（例えば、４つ）が使用されることも可能である。ＤＳＰタイル３０６は、適正な数のプログラマブル相互接続要素に加えて、ＤＳＰロジック要素（「ＤＳＰＬ」）３１４を含み得る。ＩＯＢ３０４は、例えば、プログラマブル相互接続要素３１１の１つのインスタンスに加えて、入出力ロジック要素（「ＩＯＬ」）３１５の２つのインスタンスを含み得る。当業者には明らかなとおり、例えば、Ｉ／Ｏロジック要素３１５に接続された実際のＩ／Ｏパッドは、通常、入出力ロジック要素３１５の領域に制約されない。
【００６８】
図示される実施形態において、ダイ（図３に示される）の中央付近の水平領域が、構成ロジック、クロックロジック、およびその他の制御ロジックのために使用される。この水平領域または水平カラムから延びる垂直カラム３０９が、ＦＰＧＡの広がりにわたってクロックおよび構成信号を配信するのに使用される。
【００６９】
図３に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的なカラム構造を乱すさらなるロジックブロックを含む。さらなるロジックブロックは、プログラマブルブロックおよび／または専用ロジックであり得る。例えば、プロセッサブロック３１０は、ＣＬＢおよびＢＲＡＭのいくつかのカラムにわたる。
【００７０】
図３は、単に例示的なＦＰＧＡアーキテクチャを示すことを意図していることに留意されたい。例えば、１列に並んだロジックブロックの数、列の相対幅、列の数および順序、列に含まれるロジックブロックのタイプ、ロジックブロックの相対サイズ、および図３の上部に含められた相互接続／ロジック実施様態は、純粋に例示的である。例えば、実際のＦＰＧＡにおいて、ＣＬＢの複数の隣接する列が、通常、それらのＣＬＢがユーザロジックの効率的な実装を容易化するように思われる場合にはいつでも、含められるが、隣接するＣＬＢ列の数は、ＦＰＧＡの全体的なサイズに応じて異なる。
【００７１】
しかし、図１のＳＳＤ１００の別の実施様態において、統計エンジン１０６は、メモリコントローラ１１０のファームウェアとして実装されてよく、エンコーダ１２０およびデコーダ１４０は、ハードウェアとして実装されてよく、ＳＳＤ１００は、コンピュータシステムに内部で結合されても、外部で結合されてもよい。
【００７２】
それらの線に沿って、図４は、例示的なコンピュータシステム４００を示すブロック図である。コンピュータシステム４００は、陰極線管（「ＣＲＴ」）ディスプレイ、プラズマディスプレイ、液晶ディスプレイ（「ＬＣＤ」）、プロジェクタなどの１つまたは複数のディスプレイデバイス４０１、ならびにキーボードおよびカーソルポインティングデバイスなどの１つまたは複数の入力デバイス４０６に結合されたプログラミングされたコンピュータ４１０を含み得る。コンピュータシステムのその他の知られている構成が使用されてもよい。コンピュータシステム４００は、単独で、または他の１つまたは複数のコンピュータシステム４００とネットワーク化されて、情報を扱うシステムをもたらし得る。
【００７３】
プログラミングされたコンピュータ４１０は、知られているプラットフォームの中でもとりわけ、Ｍａｃ  ＯＳ、Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、Ｒｅａｌ−Ｔｉｍｅ  ＯＳ  Ｌｉｎｕｘ、Ｓｏｌａｒｉｓ、ｉＯＳ、Ａｎｄｒｏｉｄ  ＬｉｎｕｘベースのＯＳ、Ｕｎｉｘ、またはＷｉｎｄｏｗｓオペレーティングシステムであってよい知られているオペレーティングシステムを用いてプログラミングされ得る。プログラミングされたコンピュータ４１０は、中央処理装置（ＣＰＵ）４０４と、メモリ４０５と、入出力（「Ｉ／Ｏ」）インターフェース４０２とを含む。プログラミングされたコンピュータ４１０は、ＣＰＵ４０４に結合されたグラフィックスプロセシングユニット（「ＧＰＵ」）４０７と、Ｉ／Ｏインターフェース４０２に結合された１つまたは複数の周辺カード４０９とを任意選択で含んでよい。それらの線に沿って、プログラムコンピュータ４１０は、任意選択のＧＰＵ４０７に結合されたグラフィックスメモリ４０８を含み得る。
【００７４】
ＣＰＵ４０４は、例えば、ＩＢＭ社、インテル社、ＡＲＭ社、およびアドバンストマイクロデバイセズ社から入手可能であるような、当技術分野において知られているタイプのマイクロプロセッサであってよい。ＣＰＵ４０４は、１つまたは複数のプロセッシングコアを含んでよい。サポート回路（図示せず）が、キャッシュ、電源供給装置、クロック回路、データレジスタ、および類似したものを含み得る。
【００７５】
メモリ４０５は、ＣＰＵ４０４に直接に結合されても、Ｉ／Ｏインターフェース４０２を介して結合されてもよい。オペレーティングシステムの少なくとも一部分は、メモリ４０５内に配置されてよい。メモリ４０５は、後段で説明されるとおり、以下、すなわち、フラッシュメモリ、ランダムアクセスメモリ、読取り専用メモリ、磁気抵抗読取り／書込みメモリ、光読取り／書込みメモリ、キャッシュメモリ、磁気読取り／書込みメモリ、および類似したもの、ならびに非一時的信号担持媒体のうちの１つまたは複数を含み得る。それらの線に沿って、メモリ４０５は、シリアルＡＴＡ（「ＳＡＴＡ」）バスまたはその他のバスなどを介して、Ｉ／Ｏインターフェース４０２に結合されたＳＳＤ１００を含み得る。ＳＳＤ１００は、明瞭にするためにメモリ４０５とは別個に示される。さらに、例えば、ＲＡＩＤまたは他のマルチプルドライブストレージなどに関して一般に示されるとおり、１つまたは複数のＳＳＤ１００が使用されてよい。
【００７６】
Ｉ／Ｏインターフェース４０２は、知られている回路の中でもとりわけ、チップセットチップ、グラフィックスプロセッサ、および／またはドータカードを含み得る。この例において、Ｉ／Ｏインターフェース４０２は、プラットフォームコントローラハブ（「ＰＣＨ」）であり得る。Ｉ／Ｏインターフェース４０２は、従来のキーボード、ネットワーク、マウス、ディスプレイプリンタ、ならびにデータファイルおよび類似したものなどのデータを受け取ること、および送ることを行うように適応させられたインターフェース回路に結合され得る。
【００７７】
プログラミングされたコンピュータ４１０は、任意選択で、１つまたは複数の周辺カード４０９を含んでよい。ドータカードまたは周辺カードの例は、知られている回路の中でもとりわけ、ネットワークインターフェースカード（「ＮＩＣ」）、ディスプレイインターフェースカード、モデムカード、およびユニバーサルシリアルバス（「ＵＳＢ」）インターフェースカードを含み得る。任意選択で、これらの周辺装置のうちの１つまたは複数は、ＣＰＵ４０４およびＩ／Ｏインターフェース４０２をホストするマザーボードに組み込まれてもよい。それらの線に沿って、ＧＰＵ４０７が、ＣＰＵ４０４に組み込まれてよく、かつ／または別個の周辺カードであってよい。
【００７８】
プログラミングされたコンピュータ４１０は、例えば、分散型の使用を可能にする、企業のイントラネットおよび／またはインターネットなどの従来のネットワークインフラストラクチャ経由でいくつかのクライアントコンピュータ、サーバコンピュータ、またはクライアントコンピュータとサーバコンピュータの任意の組合せに結合され得る。さらに、ＳＳＤ１００は、プログラミングされたコンピュータ４１０に内部でも、外部でも直接に結合される必要なしに、そのようなネットワークにネットワークドライブとして直接に結合されてよい。しかし、明瞭にするために、限定するためにではなく、ＳＳＤ１００は、プログラミングされたコンピュータ４１０に収納されるものと想定されたい。
【００７９】
メモリ４０５は、本発明の１つまたは複数の実施形態によるプロセスを実施する１つもしくは複数のプログラムまたはデータのすべて、またはいくつかの部分を記憶して、プログラム製品４２０をもたらすことが可能である。前述したとおり、プログラム製品４２０は、プロセスフロー２００、ならびに統計エンジン１０６を実装するためにＳＳＤ１００のメモリコントローラ１１０のファームウェアとして実装され得る。さらに、本発明の１つまたは複数の実施形態は、ハードウェアまたはソフトウェア、あるいはハードウェアとソフトウェアの組合せとして実装され得ることを当業者は諒解するであろう。そのような実施様態は、様々なプログラム、専用ハードウェア、および／またはプログラマブルハードウェアを独立に実行するいくつかのプロセッサまたはプロセッサコアを含み得る。
【００８０】
プログラム製品４２０の１つまたは複数のプログラム、ならびにプログラム製品４２０の文書が、本発明の実施形態の機能を定義することが可能であり、（ｉ）書込み不可能な記憶媒体（例えば、ＣＤ−ＲＯＭドライブもしくはＤＶＤドライブによって読取り可能なＣＤ−ＲＯＭディスクもしくはＤＶＤ−ＲＯＭディスクなどのコンピュータ内の読取り専用メモリデバイス）上に永久的に記憶された情報、または、（ｉｉ）書込み可能な記憶媒体（例えば、ディスケットドライブ内のフロッピーディスク、もしくはフラッシュドライブもしくはハードディスクドライブもしくは読取り可能／書込み可能なＣＤもしくは読取り可能／書込み可能なＤＶＤ）上に記憶された変更可能な情報を含むが、以上には限定されない、コードを有するコンピュータ可読媒体などの様々な非一時的信号担持媒体上に包含され得る。前述の実施形態は、インターネットおよび他のネットワークからダウンロードされる情報を特に含む。そのような非一時的信号担持媒体は、本発明の機能を誘導するコンピュータ可読命令を運ぶ場合、本発明の実施様態を表す。
【００８１】
以上は、例示的な装置および／または方法について説明するが、本明細書において説明される１つまたは複数の態様による他の例、およびさらなる例が、以下の特許請求の範囲、および特許請求の範囲の均等物によって決定される本発明の範囲を逸脱することなく、考案され得る。ステップをリストアップするクレームは、それらのステップのいずれの順序も暗示するものではない。商標は、商標のそれぞれの所有者の所有物である。
【図１】
0006637585.tif 000002
【図２】
0006637585.tif 000003
【図３】
0006637585.tif 000004
【図４】
0006637585.tif 000005