特許第6637585号(P6637585)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザイリンクス インコーポレイテッドの特許一覧

特許6637585可変符号レートソリッドステートドライブ
<>
  • 特許6637585-可変符号レートソリッドステートドライブ 図000002
  • 特許6637585-可変符号レートソリッドステートドライブ 図000003
  • 特許6637585-可変符号レートソリッドステートドライブ 図000004
  • 特許6637585-可変符号レートソリッドステートドライブ 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6637585
(24)【登録日】2019年12月27日
(45)【発行日】2020年1月29日
(54)【発明の名称】可変符号レートソリッドステートドライブ
(51)【国際特許分類】
   G06F 11/10 20060101AFI20200120BHJP
   H03M 13/19 20060101ALI20200120BHJP
【FI】
   G06F11/10 648
   H03M13/19
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2018-500319(P2018-500319)
(86)(22)【出願日】2016年3月3日
(65)【公表番号】特表2018-530027(P2018-530027A)
(43)【公表日】2018年10月11日
(86)【国際出願番号】US2016020749
(87)【国際公開番号】WO2017003527
(87)【国際公開日】20170105
【審査請求日】2019年3月4日
(31)【優先権主張番号】14/789,017
(32)【優先日】2015年7月1日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林特許業務法人
(72)【発明者】
【氏名】ディック, クリストファー エイチ.
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特表2013−542533(JP,A)
【文献】 特表2013−546039(JP,A)
【文献】 特開2012−155737(JP,A)
【文献】 特開2011−176825(JP,A)
【文献】 特表2011−523159(JP,A)
【文献】 特表2015−513866(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
H03M 13/19
(57)【特許請求の範囲】
【請求項1】
ソリッドステートストレージの信頼性を管理するための方法であって、
前記ソリッドステートストレージに記憶された符号化されたデータを読み取ること、
アクセスされた前記符号化されたデータを復号し、復号されたデータを、前記復号されたデータの確率を表すソフト判定としてもたらすこと、
前記復号されたデータの前記確率を評価すること、および
前記評価に応答してエンコーダおよびデコーダの符号レートを調整することを含む方法。
【請求項2】
前記符号レートは、線形誤り訂正符号に関する、請求項1に記載の方法。
【請求項3】
前記ソリッドステートストレージは、前記符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを備え、
前記エンコーダは、低密度パリティ検査エンコーダであり、かつ
前記デコーダは、LDPCデコーダである、請求項2に記載の方法。
【請求項4】
前記符号化されたデータをもたらすように、入力データを前記エンコーダを用いて符号化すること、および
前記符号化されたデータを前記ソリッドステートストレージに書き込むことをさらに含む、請求項1に記載の方法。
【請求項5】
前記評価することは、前記ソリッドステートストレージから事前定義された量の前記符号化されたデータを読み取ることを含み、前記事前定義された量は、前記ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される、請求項4に記載の方法。
【請求項6】
前記符号レートが第1の符号レートである、方法であって、
前記ソフト判定を、前記復号されたデータに関する、1より大きい所定の範囲を有するソフトビットとしてもたらすこと、
アクセスされた前記符号化されたデータに関連付けられた前記ソリッドステートストレージ内の異なるロケーションにそれぞれ関連付けられた、第1のメトリックおよび第2のメトリックをもたらすように、前記復号されたデータに関する前記ソフトビット合計すること、
前記第1のメトリックに応答して使用すべき前記第1の符号レートより低い第2の符号レートを決定すること、および
前記第2のメトリックに応答して前記ソリッドステートストレージの事前定義された量の使用を阻止することをさらに含む、請求項1に記載の方法。
【請求項7】
前記阻止することは、前記事前定義された量の使用を防止するようにアドレスマッピングを行うことを含み、かつ
前記事前定義された量は、前記ソリッドステートストレージのセクタの少なくとも1つのブロックを含む、請求項6に記載の方法。
【請求項8】
ソリッドステートストレージの信頼性を管理するための装置であって、
符号レートをもたらすためのメモリコントローラと、
符号化されたデータをもたらすために入力データおよび前記符号レートを受け取るためのエンコーダと、
前記符号化されたデータを受け取るため、および記憶するための前記ソリッドステートストレージと、
前記ソリッドステートストレージに記憶された前記符号化されたデータにアクセスするため、およびアクセスされた前記符号化されたデータの復号されたデータをもたらすために前記符号レートを受け取るための、デコーダとを備え、
前記復号されたデータは、前記復号されたデータの確率を表すソフト判定としてもたらされ、かつ
前記メモリコントローラは、前記復号されたデータの前記確率により前記符号レートを調整するために前記復号されたデータを受け取ることを目的とする、装置。
【請求項9】
前記符号レートは、線形誤り訂正符号に関する、請求項8に記載の装置。
【請求項10】
前記ソリッドステートストレージは、前記符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを備え、
前記エンコーダは、低密度パリティ検査(「LDPC」)エンコーダであり、かつ
前記デコーダは、LDPCデコーダである、請求項8に記載の装置。
【請求項11】
前記デコーダは、ソフト入力ソフト出力デコーダである、請求項8に記載の装置。
【請求項12】
前記ソリッドステートストレージは、前記符号化されたデータを事前定義された量で読み出すように構成され、かつ、前記事前定義された量は、前記ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される、請求項8に記載の装置。
【請求項13】
前記デコーダは、前記ソフト判定を、1より大きい所定の範囲を有し、前記復号されたデータに関する前記確率を表すソフトビットとしてもたらすように構成され、かつ
前記メモリコントローラは、前記符号レートを選択するためのメトリックをもたらすように、前記復号されたデータに関する前記ソフトビット合計するように構成される、請求項8に記載の装置。
【請求項14】
前記メモリコントローラは、
前記メトリックを閾値と比較すること、および
前記メトリックが前記閾値を下回ることに応答して前記符号レートの調整を決定することを行うようにさらに構成される、請求項13に記載の装置。
【請求項15】
前記メモリコントローラは、
前記メトリックをポインタとして用いて符号レートのストア内の前記符号レートをポイントすること、および
前記符号レートの前記ストアから、ポイントされた前記符号レートを出力することを行うようにさらに構成される、請求項13に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、情報ストレージに関する。より詳細には、以下の説明は、可変符号レートソリッドステートドライブに関する。
【背景技術】
【0002】
ソリッドステートフラッシュメモリは、大型のメモリストレージシステムに迅速に差し込まれるものとして存続している。残念ながら、例えば、NANDフラッシュメモリセルまたはNORフラッシュメモリセルの場合など、ソリッドステートフラッシュメモリは、従来、消耗を示し始めるまでに有限数のプログラム−消去サイクルを有する。この消耗は、ソリッドステートドライブの信頼性を低下させ得る。このため、そのような消耗に適応可能なソリッドステートドライブを提供することが望ましく、有用である。
【発明の概要】
【0003】
方法が、一般に、ソリッドステートストレージの信頼性を管理することに関する。そのような方法において、ソリッドステートストレージに記憶された符号化されたデータが読み取られる。アクセスされた符号化されたデータが、復号されて、復号されたデータを、復号されたデータの確率を表すソフト判定としてもたらす。復号されたデータの確率が評価される。エンコーダおよびデコーダの符号レートが、評価に応答して調整される。
【0004】
任意選択で、符号レートは、線形誤り訂正符号に関する。
【0005】
任意選択で、ソリッドステートストレージは、符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを含む。
【0006】
任意選択で、エンコーダは、低密度パリティ検査エンコーダであり、デコーダは、LDPCデコーダである。
【0007】
任意選択で、方法は、入力データを、エンコーダを用いて符号化して、符号化されたデータをもたらすこと、および符号化されたデータをソリッドステートストレージに書き込むことをさらに含む。
【0008】
任意選択で、アクセスすることは、ソリッドステートストレージから事前定義された量の符号化されたデータを読み取ることを含む。
【0009】
任意選択で、事前定義された量は、ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される。
【0010】
任意選択で、符号レートは、第1の符号レートであり、方法は、復号されたデータに関するソフトビットを決定すること、復号されたデータに関するソフトビットの大きさを組み合わせて、ソフトビットに関するメトリックをもたらすこと、およびメトリックに応答して使用すべき第1の符号レートより低い第2の符号レートを決定することをさらに含む。
【0011】
任意選択で、方法は、メトリックに応答してソリッドステートストレージの事前定義された量の使用を阻止することをさらに含む。
【0012】
任意選択で、阻止することは、事前定義された量の使用を防止するアドレスマッピングを含み、かつ事前定義された量は、ソリッドステートストレージのセクタの少なくとも1ブロックを含む。
【0013】
装置が、一般に、ソリッドステートストレージの信頼性を管理することに関する。そのような装置において、符号レートをもたらすことを目的とするメモリコントローラが存在する。エンコーダが、符号化されたデータもたらすために入力データおよび符号レートを受け取ることを目的とする。ソリッドステートストレージが、符号化されたデータを受け取ること、および記憶することを目的とする。デコーダが、ソリッドステートストレージに記憶された符号化されたデータにアクセスすること、およびアクセスされた符号化されたデータの復号されたデータをもたらすために符号レートを受け取ることを目的とする。復号されたデータが、復号されたデータの確率を表すソフト判定としてもたらされる。メモリコントローラは、復号されたデータの確率に応答して符号レートを調整するために復号されたデータを受け取ることを目的とする。
【0014】
任意選択で、符号レートは、線形誤り訂正符号に関する。
【0015】
任意選択で、ソリッドステートストレージは、符号化されたデータを記憶するためのマルチレベルセル、バイナリセル、トリプルレベルセル、およびシングルレベルセルから成るグループから選択されたメモリセルを含む。
【0016】
任意選択で、エンコーダは、低密度パリティ検査(「LDPC」)エンコーダであり、デコーダは、LDPCデコーダである。
【0017】
任意選択で、デコーダは、ソフト入力ソフト出力デコーダである。
【0018】
任意選択で、ソリッドステートストレージは、符号化されたデータを事前定義された量で読み出すように構成される。
【0019】
任意選択で、事前定義された量は、ソリッドステートストレージのセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択される。
【0020】
任意選択で、デコーダは、復号されたデータに関する確率を表すソフトビットをもたらすように構成され、メモリコントローラは、復号されたデータに関するソフトビットの大きさを組み合わせて、符号レートを選択するためのメトリックをもたらすように構成される。
【0021】
任意選択で、メモリコントローラは、メトリックを閾値と比較すること、およびメトリックが閾値を下回ることに応答して符号レートの調整を決定することを行うようにさらに構成される。
【0022】
任意選択で、メモリコントローラは、メトリックをポインタとして用いて符号レートのストア内の符号レートをポイントすること、および符号レートのストアから、ポイントされた符号レートを出力することを行うようにさらに構成される。
【0023】
以下の詳細な説明、および特許請求の範囲の考慮から他の特徴が認識されよう。
【0024】
添付の図面は、例示的な装置および/または方法を示す。しかし、添付の図面は、特許請求の範囲を限定するものと解釈されるべきではなく、説明および理解のためだけのものである。
【図面の簡単な説明】
【0025】
図1】情報を記憶するための例示的なソリッドステートドライブ(「SSD」)を示すブロック図である。
図2】情報を記憶するための例示的なプロセスフローを示す流れ図である。
図3】例示的なカラムナフィールドプログラマブルゲートアレイ(「FPGA」)アーキテクチャを示す簡略化されたブロック図である。
図4】例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0026】
以下の説明において、非常に多くの特定の詳細が、本明細書において説明される特定の例の適切な説明を与えるように示される。しかし、当業者には、これらの例の他の1つまたは複数の例および/または変形が、後段で与えられるすべての特定の詳細なしに実施されてよいことが明白であろう。他の実例において、よく知られた特徴は、本明細書における例の説明を不明瞭にしないように詳細には説明されていない。例示を容易にするために、同一の番号ラベルが、異なる図において、同一のアイテムを参照するのに使用されるが、代替の例において、アイテムは、異なり得る。
【0027】
いくつかの図において例示される例を説明する前に、一般的な概説が、理解を深めるように与えられる。
【0028】
ソリッドステートドライブ(「SSD」)は、大容量ストレージのためにより一般的に使用されるようになっている。残念ながら、SSDのメモリセルは、そのようなメモリセルが劣化し始めるまでに限定された数の書込み−読取りサイクルを有する。この劣化は、そのようなSSDの信頼性を低下させ得る。
【0029】
SSDの有用寿命を増加させるとともに、信頼性を高めるのに、ソフト復号が、後段でさらに詳細に説明されるとおり、使用され得る。ソフト復号とは、復号された情報が、データ入力が特定の値であるという確率または推定を表す復号プロセスを指し、その値は、従来、バイナリ符号化されたデータに関して「0」または「1」の確率を表すのに使用される0と1の間の値である。この確率または推定は、そのような復号された情報の信頼性示す。これに対して、ハード判定デコーダは、バイナリ符号化されたデータに関して、従来、「0」または「1」である可能な値の決められたセットを用いてデータ入力を操作する。
【0030】
ソフト復号された情報は、そのような情報の信頼性を示し得る。後段でさらに詳細に説明されるとおり、メモリコントローラが、そのようなソフト復号された情報を処理して、確率論的符号化および復号のための符号レートを設定するためにその情報に関するメトリックを生成するように構成され得る。そのような符号レート設定は、ソリッドステートストレージのメモリセルの累進的な消耗に関して調整されるように可変であるように適応させられてよい。
【0031】
前述の一般的な理解に留意して、情報を記憶するための様々な構成が、後段で一般に説明される。
【0032】
図1は、情報を記憶するための例示的なソリッドステートドライブ(「SSD」)100を示すブロック図である。SSD100は、メモリコントローラ110と、エンコーダ120と、ソリッドステートストレージ130と、デコーダ140とを含む。明瞭にするために、限定するためにではなく、SSD100に関する多くの知られている詳細は、不必要に詳細に説明されない。
【0033】
メモリコントローラ110は、エンコーダ120およびデコーダ140に符号レート112をもたらすために結合され得る。エンコーダ120は、書込みチャネル101に対してメモリコントローラ110経由であり得る、入力データ111を受け取るために結合されるとともに、符号レート112を受け取るように結合されて、そのような書込みチャネル101経由でそのような入力データ111に関する符号化されたデータ121をもたらしてよい。符号化されたデータ121は、誤り訂正符号のための符号レート112でエンコーダ120を用いて符号化されてよい。符号化されたデータ121は、ソリッドステートストレージ130に書き込まれ得る。
【0034】
そのような誤り訂正符号は、線形誤り訂正符号であってよい。使用され得る線形誤り訂正符号の例が、低密度パリティ検査(「LDPC」)符号である。それらの線に沿って、エンコーダ120は、LDPCエンコーダ120であってよく、デコーダ140は、LDPCデコーダ140であってよい。
【0035】
ソリッドステートストレージ130は、符号化されたデータ121を受け取るため、および記憶するために結合され得る。デコーダ140は、記憶された符号化されたデータ(「記憶されたデータ」)133に読取りチャネル102経由でアクセスするために結合され得る。デコーダ140は、読取りチャネル102経由で、読み取られた記憶されたデータ133、すなわち、読み取られたデータ131の復号されたデータ141をもたらすための符号レート112を受け取るために結合され得る。
【0036】
記憶されたデータ133は、ソリッドステートストレージ130のメモリセル132に記憶され得る。それらの線に沿って、ソリッドステートストレージ130は、1つまたは複数のタイプのメモリセル132を含み得る。メモリセル132は、符号化されたデータ121を記憶するためのマルチレベルセル(「MLC」)、バイナリセル、トリプルレベルセル(「TLC」)、およびシングルレベルセル(「SLC」)から成るグループから選択され得る。これらのメモリセル132は、例えば、NANDフラッシュメモリセルまたはNORフラッシュメモリセルなどのフラッシュメモリセルであってよい。メモリセル132は、後段でさらに詳細に説明されるとおり、メモリセル132に記憶されたデータの信頼性を低下させ得る、書込み−読取りサイクル、またはプログラム−消去サイクルに起因する消耗を示し得る。
【0037】
フラッシュメモリベースのSSD100は、大容量ストレージのためにより普及してきているが、フラッシュメモリベースのSSD100は、メモリ消耗を有し得る。それらの線に沿って、NANDフラッシュメモリデバイスまたはNORフラッシュメモリデバイスがサポートすることができる限定された数のプログラム−消去サイクルが存在し得る。メモリ密度を増加させるのに、そのような各メモリセル132が複数のデータビットを記憶するMLCが使用されてよい。これらのMLCベースのフラッシュメモリベースのSSD100は、パルス振幅変調(「PAM」)符号化されたデータを記憶してよい。
【0038】
フラッシュ読取りチャネル102は、加算性白色ガウス雑音(「AWGN」)チャネルとしてモデル化されてよく、データ完全性を増加させるのに、前方誤り訂正(「FEC」)が、メモリコントローラ110の一部であり得るFECシステム105によって使用されてよい。後段でさらに詳細に説明されるとおり、FECシステム105は、本明細書において説明される目的のために統計エンジン106で増強されてよい。実施様態において、メモリコントローラ110は、任意選択で、符号レート142ないし144などの複数の符号レートを記憶するためのメモリ107を含んでよい。さらに、メモリ107は、後段でさらに詳細に説明されるとおり、メトリック108および閾値109を記憶してよい。
【0039】
SSD100において、データは、マルチレートLDPC符号化または他の確率論的符号化を使用してオンザフライで符号化されてよく、かつ復号されてよい。このマルチレート符号レートは、一般に、高い符号レートとして開始してよく、かつソリッドステートストレージ130のメモリセル132の消耗に適応させられて、または応答して低い符号レートに累進的にステップダウンされてよい、可変符号レートである。しかし、マルチレート符号レートは、いくつかの実例において、例えば、ソリッドステートストレージ130のメモリセル132のデータの通信が向上した場合、累進的に増加されてよい。一般に、SSD100は、時とともにパフォーマンスが低下するものと想定されたい。このことは、そのようなメモリセル132の信頼性、または、より詳細には、そのようなメモリセル132から読み取られる情報の信頼性の低下をもたらすそのようなメモリセル132の多数の書込み−読取りサイクルに起因し得る。符号レート112は、後段でさらに詳細に説明されるとおり、そのような信頼性に応じて設定されてよい。
【0040】
符号化レート変更は、ソリッドステートストレージ130のフラッシュメモリの有用寿命を延ばすために符号レートに対するオンライン変更または「オンザフライ」変更として実行されてよい。このことは、SSDベースのストレージシステムへの投資を保全するために有用であり得る。しかし、複数の次第により低い符号レートをもたらすことによって、スループットが、そのようなSSD100の次第の消耗に対応して次第に低減され得る。知られているとおり、低レート符号は、より多くの冗長性を有して、スループットを犠牲にしてより多くの誤り訂正をもたらす。本明細書で説明される、LDPC符号化のための符号レートのオンライン変更は、そのような有用寿命にわたってスループットを次第に制約しながら、信頼性を高めることによってSSD100の有用寿命を増加させ得る。
【0041】
デコーダ140は、ソフト判定としてもたらされ得る復号されたデータ141を出力する。ソフト判定が一般に意味するのは、バイナリ符号化されたデータに関して、従来、論理0または論理1である、データ状態の信頼性の確率または推定である。それらの線に沿って、ソフト判定と確率は、以降、互いに区別なく使用され得る。メモリコントローラ110が、復号されたデータ141の確率に応答して符号レート112を調整するために復号されたデータ141を受け取るために結合され得る。
【0042】
FECシステムまたはFECサブシステム105は、統計エンジン106をもたらすようにファームウェアおよび/またはハードウェアで増強され得る。統計エンジン106は、復号されたデータ141から情報を収集し、かつソリッドステートストレージ130の「健康状態」を表す統計を算出するように構成され得る。LDPC復号、またはソフト復号の他の任意の変種において、復号されたデータは、論理1または論理0であるメモリビットの確率を記述する統計情報を含む。一般に、大きい正の値は、「強い」論理1を示す一方で、大きい負の値は、「強い」論理0を示す。ビット、すなわち、メモリセルの信頼性を表す信頼性が、メモリ消耗に起因して最低限度になると、そのビットに関するビットレベル確率の大きさが低減され得る。
【0043】
例えば、符号化された記憶されたデータ133の事前定義された量のデータが、ソリッドステートストレージ130から、限定なしに、バースト読取りを含む読取りなどによって、アクセスされ得る。この事前定義された量のデータは、ソリッドステートストレージ130の記憶されたデータ133のセクタまたはブロックに関し得る。事前定義された量のデータの他の例は、ソリッドステートストレージ130のサブアレイまたはアレイであり得る。
【0044】
データのブロックまたはセクタに関するビットレベル確率は、それぞれ、そのようなブロックまたはセクタに関する信頼性メトリックをもたらすように組み合わせられてよい。それらの線に沿って、復号されたデータ141に関するソフトビットとしてもたらされるソフト判定は、デコーダ140によってメモリコントローラ110のFECシステム105にもたらされ得る。FECシステム105の統計エンジン106は、ブロックまたはセクタに関して、ソフト判定のそのような確率を組み合わせて、すなわち、復号されたデータ141のソフトビットの値を組み合わせて、ビットレベル対数尤度値の絶対値の平均をメトリック108として獲得することが可能である。この平均メトリック108、ならびにこのタイプ、またはその他のタイプのグルーピングの復号されたデータ141に関する他の平均メトリック108は、メモリコントローラ110によってアクセスされるようにメモリコントローラ110のメモリ107または別の場所に記憶され得る。
【0045】
この例において、平均メトリック108は、ブロックレベル信頼性データおよび/またはセクタレベル信頼性データとして、対応するブロックおよび/またはセクタに関する。それらの線に沿って、データのセクタより大幅に小さいデータのブロックは、欠陥があると判定され得る。セクタ全体に関するスループットを低減するのではなく、そのようなブロックは、そのようなブロックの使用を防止するようにアドレスマッピングされてよい。さらに、1つまたは複数の不良なブロックを有するセクタが、そのようなセクタの使用を防止するようにアドレスマッピングされてよい。メモリコントローラ110は、1つまたは複数のブロックおよび/または1つまたは複数のセクタが使用されるのを阻止するための能力を有することが可能であり、十分に低い平均メトリック108に基づく統計エンジン106からの制御信号が、そのような阻止を活性化するのに使用され得る。
【0046】
そのような信頼性情報は、メモリコントローラ110のメモリ107に記憶され得る、任意選択のしきい値(「閾値」)109のしきい値に対するベクトルまたはポインタであってよい。メモリ107は、限定なしに、符号レート142ないし144などの符号レートのルックアップテーブル(「LUT」)または他のストア145を含む、1つまたは複数のタイプのメモリを含み得る。そのような閾値109は、オフラインで生成されてよく、このため、そのような閾値109は、統計エンジン106によってアクセスされるようにメモリコントローラ110のメモリ107に記憶されるように所定であり得る。それらの線に沿って、閾値109は、使用される符号化に鑑みて信頼性レベルに関して製造業者によって決定されてよく、このため、そのような閾値109は、SSD製造業者の間で様々であり得る。一般に、実施様態において、閾値109は、LUT145などのLDPC符号レートに関連付けられてよく、ブロックレベル信頼性のより低い値は、より低いスループットのための低レートLDPC符号と互いに関係し、ブロックレベル信頼性のより高い値は、より高いスループットのための高レートLDPC符号と互いに関係する。
【0047】
この例において、メモリコントローラ110の統計エンジン106は、復号されたデータ141のソフトビットを組み合わせて、コンパレータブロック147などを用いて、1つまたは複数の閾値109と比較するためにソフトビットの大きさの平均を平均メトリック108としてもたらすように構成される。コンパレータブロック147は、ハードウェアまたはソフトウェア、あるいはハードウェアとソフトウェアの組合せで実装され得る。
【0048】
コンパレータブロック147は、マルチレベル比較のために構成され得る。例えば、平均メトリック108が、最大閾値109以上である場合、そのような最大閾値109は、LUT145における高い符号レート142に対する、そのような高い符号レート142を符号レート112として出力するためのポインタ146であり得る。同様に、例えば、平均メトリック108が最大閾値109未満であり、かつ中間閾値109以上である場合、そのような中間閾値109は、LUT145における中間の符号レート143に対する、そのような中間の符号レート143を符号レート112として出力するためのポインタ146であり得る。例えば、平均メトリック108が、中間閾値109未満であり、かつ低閾値109以上である場合、そのような低閾値109は、LUT145における低い符号レート144に対する、そのような低い符号レート144を符号レート112として出力するためのポインタ146であり得る。最後に、例えば、平均メトリック108が、低閾値109未満である場合、ポインタ146は、SSD100が、継続した使用のためにもはや十分に信頼できないという指示をユーザに与えることが可能であり、かつ/または前述したとおり、そのような不十分な信頼性に関連するブロックおよび/またはセクタを避けるようにアドレスマッピングするようメモリコントローラ110に指示を与えることが可能である。
【0049】
高−中間−低制御選択が、例として、限定としてではなく、明瞭にするために説明されてきたものの、一般に、2つ以上の符号レートが少なくとも1つの閾値と一緒に使用され得る。したがって、平均メトリック108または他の適切なメトリックが、そのようなメトリックを閾値と比較することによって、符号レートの中から符号レート112を選択するために使用されてよい。そのような比較の結果、符号レートをそのままにするか、またはそのようなメトリックがそのような閾値を下回っていることに応答して符号レートに調整を行うかについての判定が行われ得る。さらに、別の実施様態において、例えば、平均メトリック108などのメトリックは、現在の復号されたデータ141に関する現在のメトリックを、符号レート112を選択するポインタとして直接に使用するために、LUT145における符号レートのストアなどの、符号レートに関連して記憶されてよい。そのような構成において、閾値109は、閾値109に関する破線ボックスによって示されるとおり、省かれてよい。
【0050】
したがって、符号レートは、SSD100のより長い寿命とともに、より高い信頼性を伴って、ソリッドステートストレージ130のブロックのセットおよび/またはセクタのセットにわたって変調され得る。SSD100が時とともに劣化するにつれ、符号レートは、下げられて、データのスループットをより低くする可能性があり、すなわち、SSD100のデータスループットは、より高い冗長性の符号が次第に増やされて次第に低減され得る。
【0051】
図2は、情報を記憶するための例示的なプロセスフロー200を示す流れ図である。プロセスフロー200は、図1および図2を同時に参照してさらに説明される。
【0052】
201において、入力データ111が、エンコーダ120を用いて符号化されて、符号化されたデータ121をもたらし得る。202において、そのような符号化されたデータ121が、記憶されたデータ133としてソリッドステートストレージ130に書き込まれ得る。
【0053】
203において、ソリッドステートストレージ130がアクセスされて、符号化された記憶されたデータ133が読み取られ得る。前述したとおり、203におけるこのアクセス動作は、211において、ソリッドステートストレージ130から事前定義された量の符号化されたデータを読み取ることを含み得る。そのような事前定義された量のデータは、ソリッドステートストレージ130のセクタ、ブロック、サブアレイ、およびアレイから成るグループから選択され得る。
【0054】
204において、203においてアクセスされた符号化された読み取られたデータ131が、デコーダ140によって復号されて、復号されたデータ141をソフト判定としてもたらすことが可能である。実施様態において、そのようなソフト判定は、ビットがバイナリ符号化されたデータに関して「0」または「1」を表す確率を示す。205において、復号されたデータ141の確率が、前述したとおり、統計エンジン106によって評価され得る。205におけるこの評価動作は、212において、復号されたデータに関するソフトビットを特定すること、および213において、そのような復号されたデータ141に関して特定されたソフトビットの大きさを組み合わせて、例えば、平均メトリック108などの、それらのソフトビットに関するメトリックをもたらすことを含み得る。
【0055】
したがって、デコーダ140は、ハードデコーダとは異なり、ソフト入力ソフト出力(「SISO」)デコーダであってよい。言い換えれば、読み取られたデータ131は、そのような読み取られたデータの信頼性を示すために論理1または0の決められたバイナリ値だけではない値をとってよい。同様に、復号されたデータ141は、そのような復号されたデータの信頼性を示すために、例えば、バイナリコードにおける論理1または0のバイナリ値などの、決められたセットの値だけではない値をとってよい。このため、ソフト判定デコーダ140として、デコーダ140は、ハード判定デコーダと対比されるべきものである。
【0056】
さらに、これらのソフト判定は、従来は、それぞれ、論理0と論理1の信頼性に関する負の値から正の値までの範囲であってよい。このため、前述したとおり、大きさを使用することによって、そのような信頼性情報の強度が判定され得る。例えば、−127から+127までの範囲が、ソフト判定をソフトビットとして表すために使用されてよく、ここで、−127の値を有するソフトビットは、論理0に関して最高の信頼性を示し、+127の値を有するソフトビットは、論理1に関して最高の信頼性を示す。
【0057】
206において、エンコーダ120およびデコーダ140の符号レートが、前述したとおり、復号されたデータ141の確率に応答して、限定なしに、現在の符号レートをより低い符号レートで置き換えることを含め、調整されてよく、または設定されてよい。206におけるこの調整動作または設定動作は、214において、復号されたデータ141のそのような確率に関して決定されたメトリックに応答して、使用すべき別の符号レートを決定する(限定しないが選択することを含む)ことを含み得る。
【0058】
メモリコントローラ110は、少なくとも一部には、フィールドプログラマブルゲートアレイ(「FPGA」)のプログラマブルリソースを使用して実施され得る。本明細書において説明される例のうちの1つまたは複数は、FPGAとして実装されてよいので、そのようなICの詳細な説明が与えられる。しかし、他のタイプのICも、本明細書において説明される技術を活用し得ることを理解されたい。
【0059】
プログラマブルロジックデバイス(「PLD」)は、指定された論理機能を実行するようにプログラミングされ得るよく知られたタイプの集積回路である。1つのタイプのPLDであるフィールドプログラマブルゲートアレイ(「FPGA」)は、通常、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、例えば、入出力ブロック(「IOB」)、構成可能ロジックブロック(「CLB」)、専用ランダムアクセスメモリブロック(「BRAM」)、乗算器、デジタル信号処理ブロック(「DSP」)、プロセッサ、クロックマネージャ、遅延ロックループ(「DLL」)などを含み得る。本明細書において使用される「含む」および「含んだ」は、限定なしに含むことを意味する。
【0060】
各プログラマブルタイルは、通常、プログラマブル相互接続とプログラマブルロジックをともに含む。プログラマブル相互接続は、通常、プログラマブル相互接続ポイント(「PIP」)によって互いに接続された様々な長さの多数の相互接続線を含む。プログラマブルロジックは、例えば、ファンクションジェネレータ、レジスタ、演算論理装置などを含み得るプログラマブル要素を使用してユーザ設計のロジックを実装する。
【0061】
プログラマブル相互接続およびプログラマブルロジックは、通常、プログラマブル要素がどのように構成されるかを定義する内部構成メモリセルに構成データのストリームをロードすることによってプログラミングされる。構成データは、外部デバイスによってメモリから(例えば、外部PROMから)読み取られること、またはFPGAに書き込まれることが可能である。次に、個々のメモリセルの集合的状態が、FPGAの機能を決定する。
【0062】
別のタイプのPLDが、コンプレックスプログラマブルロジックデバイス、またはCPLDである。CPLDは、相互接続スイッチマトリックスによって互いに接続され、入出力(「I/O」)リソースにも接続された2つ以上の「機能ブロック」を含む。CPLDの各機能ブロックは、プログラマブルロジックアレイ(「PLA」)デバイスおよびプログラマブルアレイロジック(「PAL」)デバイスにおいて使用されるものと同様の2レベルAND/OR構造を含む。CPLDにおいて、構成データは、通常、不揮発性メモリにオンチップで記憶される。一部のCPLDにおいて、構成データは、不揮発性メモリにオンチップで記憶され、次に、初期構成(プログラミング)シーケンスの一環として揮発性メモリにダウンロードされる。
【0063】
これらのプログラマブルロジックデバイス(「PLD」)のすべてに関して、デバイスの機能は、その目的でデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ(例えば、FPGAおよび一部のCPLDの場合のようにスタティックメモリセル)に、不揮発性メモリ(一部のCPLDの場合のように、例えば、フラッシュメモリ)に、または他の任意のタイプのメモリセルに記憶され得る。
【0064】
他のPLDは、デバイス上で様々な要素をプログラミング上、互いに接続する、メタル層などの処理層を適用することによってプログラミングされる。これらのPLDは、マスクプログラマブルデバイスとして知られる。PLDは、他の様態で、例えば、ヒューズ技術またはアンチヒューズ技術を使用して実装されることも可能である。「PLD」および「プログラマブルロジックデバイス」という術語は、これらの例示的なデバイス、ならびに部分的にのみプログラマブルである包括的なデバイスを含むが、これらのデバイスには限定されない。例えば、1つのタイプのPLDは、ハードコードされたトランジスタロジックと、そのハードコードされたトランジスタロジックとプログラミング上、互いに接続するプログラマブルスイッチファブリックの組合せを含む。
【0065】
前述したとおり、高性能のFPGAは、アレイにおいていくつかの異なるタイプのプログラマブルロジックブロックを含み得る。例えば、図3は、マルチギガビットトランシーバ(「MGT」)301、構成可能ロジックブロック(「CLB」)302、ランダムアクセスメモリブロック(「BRAM」)303、入出力ブロック(「IOB」)304、構成およびクロッキングロジック(「CONFIG/CLOCKS」)305、デジタル信号処理ブロック(「DSP」)306、特化された入出力ブロック(「I/O」)307(例えば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログ−デジタル変換器、システム監視ロジックなどのその他のプログラマブルロジック308などを含む多数の異なるプログラマブルタイルを含むFPGAアーキテクチャ300を示す。一部のFPGAは、専用プロセッサブロック(「PROC」)310も含む。
【0066】
いくつかのFPGAにおいて、各プログラマブルタイルは、隣接する各タイルにおける対応する相互接続要素に至る標準化された接続、およびそのような要素からの標準化された接続を有するプログラマブル相互接続要素(「INT」)311を含む。したがって、プログラマブル相互接続要素は一緒になって、例示されるFPGAに関するプログラマブル相互接続構造を実装する。プログラマブル相互接続要素311は、図3の上部に含められた例によって示されるとおり、同一のタイル内のプログラマブルロジック要素に至る接続、およびそのような要素からの接続も含む。
【0067】
例えば、CLB302は、ユーザロジックに加えて単一のプログラマブル相互接続要素(「INT」)311を実装するようにプログラミングされ得る構成可能ロジック要素(「CLE」)312を含み得る。BRAM303は、1つまたは複数のプログラマブル相互接続要素に加えてBRAMロジック要素(「BRL」)313を含み得る。通常、タイルに含められる相互接続要素の数は、タイルの高さに依存する。図示される実施形態において、BRAMタイルは、5つのCLBと同一の高さを有するが、他の数(例えば、4つ)が使用されることも可能である。DSPタイル306は、適正な数のプログラマブル相互接続要素に加えて、DSPロジック要素(「DSPL」)314を含み得る。IOB304は、例えば、プログラマブル相互接続要素311の1つのインスタンスに加えて、入出力ロジック要素(「IOL」)315の2つのインスタンスを含み得る。当業者には明らかなとおり、例えば、I/Oロジック要素315に接続された実際のI/Oパッドは、通常、入出力ロジック要素315の領域に制約されない。
【0068】
図示される実施形態において、ダイ(図3に示される)の中央付近の水平領域が、構成ロジック、クロックロジック、およびその他の制御ロジックのために使用される。この水平領域または水平カラムから延びる垂直カラム309が、FPGAの広がりにわたってクロックおよび構成信号を配信するのに使用される。
【0069】
図3に示されるアーキテクチャを利用するいくつかのFPGAは、FPGAの大きな部分を構成する規則的なカラム構造を乱すさらなるロジックブロックを含む。さらなるロジックブロックは、プログラマブルブロックおよび/または専用ロジックであり得る。例えば、プロセッサブロック310は、CLBおよびBRAMのいくつかのカラムにわたる。
【0070】
図3は、単に例示的なFPGAアーキテクチャを示すことを意図していることに留意されたい。例えば、1列に並んだロジックブロックの数、列の相対幅、列の数および順序、列に含まれるロジックブロックのタイプ、ロジックブロックの相対サイズ、および図3の上部に含められた相互接続/ロジック実施様態は、純粋に例示的である。例えば、実際のFPGAにおいて、CLBの複数の隣接する列が、通常、それらのCLBがユーザロジックの効率的な実装を容易化するように思われる場合にはいつでも、含められるが、隣接するCLB列の数は、FPGAの全体的なサイズに応じて異なる。
【0071】
しかし、図1のSSD100の別の実施様態において、統計エンジン106は、メモリコントローラ110のファームウェアとして実装されてよく、エンコーダ120およびデコーダ140は、ハードウェアとして実装されてよく、SSD100は、コンピュータシステムに内部で結合されても、外部で結合されてもよい。
【0072】
それらの線に沿って、図4は、例示的なコンピュータシステム400を示すブロック図である。コンピュータシステム400は、陰極線管(「CRT」)ディスプレイ、プラズマディスプレイ、液晶ディスプレイ(「LCD」)、プロジェクタなどの1つまたは複数のディスプレイデバイス401、ならびにキーボードおよびカーソルポインティングデバイスなどの1つまたは複数の入力デバイス406に結合されたプログラミングされたコンピュータ410を含み得る。コンピュータシステムのその他の知られている構成が使用されてもよい。コンピュータシステム400は、単独で、または他の1つまたは複数のコンピュータシステム400とネットワーク化されて、情報を扱うシステムをもたらし得る。
【0073】
プログラミングされたコンピュータ410は、知られているプラットフォームの中でもとりわけ、Mac OS、Java Virtual Machine、Real−Time OS Linux、Solaris、iOS、Android LinuxベースのOS、Unix、またはWindowsオペレーティングシステムであってよい知られているオペレーティングシステムを用いてプログラミングされ得る。プログラミングされたコンピュータ410は、中央処理装置(CPU)404と、メモリ405と、入出力(「I/O」)インターフェース402とを含む。プログラミングされたコンピュータ410は、CPU404に結合されたグラフィックスプロセシングユニット(「GPU」)407と、I/Oインターフェース402に結合された1つまたは複数の周辺カード409とを任意選択で含んでよい。それらの線に沿って、プログラムコンピュータ410は、任意選択のGPU407に結合されたグラフィックスメモリ408を含み得る。
【0074】
CPU404は、例えば、IBM社、インテル社、ARM社、およびアドバンストマイクロデバイセズ社から入手可能であるような、当技術分野において知られているタイプのマイクロプロセッサであってよい。CPU404は、1つまたは複数のプロセッシングコアを含んでよい。サポート回路(図示せず)が、キャッシュ、電源供給装置、クロック回路、データレジスタ、および類似したものを含み得る。
【0075】
メモリ405は、CPU404に直接に結合されても、I/Oインターフェース402を介して結合されてもよい。オペレーティングシステムの少なくとも一部分は、メモリ405内に配置されてよい。メモリ405は、後段で説明されるとおり、以下、すなわち、フラッシュメモリ、ランダムアクセスメモリ、読取り専用メモリ、磁気抵抗読取り/書込みメモリ、光読取り/書込みメモリ、キャッシュメモリ、磁気読取り/書込みメモリ、および類似したもの、ならびに非一時的信号担持媒体のうちの1つまたは複数を含み得る。それらの線に沿って、メモリ405は、シリアルATA(「SATA」)バスまたはその他のバスなどを介して、I/Oインターフェース402に結合されたSSD100を含み得る。SSD100は、明瞭にするためにメモリ405とは別個に示される。さらに、例えば、RAIDまたは他のマルチプルドライブストレージなどに関して一般に示されるとおり、1つまたは複数のSSD100が使用されてよい。
【0076】
I/Oインターフェース402は、知られている回路の中でもとりわけ、チップセットチップ、グラフィックスプロセッサ、および/またはドータカードを含み得る。この例において、I/Oインターフェース402は、プラットフォームコントローラハブ(「PCH」)であり得る。I/Oインターフェース402は、従来のキーボード、ネットワーク、マウス、ディスプレイプリンタ、ならびにデータファイルおよび類似したものなどのデータを受け取ること、および送ることを行うように適応させられたインターフェース回路に結合され得る。
【0077】
プログラミングされたコンピュータ410は、任意選択で、1つまたは複数の周辺カード409を含んでよい。ドータカードまたは周辺カードの例は、知られている回路の中でもとりわけ、ネットワークインターフェースカード(「NIC」)、ディスプレイインターフェースカード、モデムカード、およびユニバーサルシリアルバス(「USB」)インターフェースカードを含み得る。任意選択で、これらの周辺装置のうちの1つまたは複数は、CPU404およびI/Oインターフェース402をホストするマザーボードに組み込まれてもよい。それらの線に沿って、GPU407が、CPU404に組み込まれてよく、かつ/または別個の周辺カードであってよい。
【0078】
プログラミングされたコンピュータ410は、例えば、分散型の使用を可能にする、企業のイントラネットおよび/またはインターネットなどの従来のネットワークインフラストラクチャ経由でいくつかのクライアントコンピュータ、サーバコンピュータ、またはクライアントコンピュータとサーバコンピュータの任意の組合せに結合され得る。さらに、SSD100は、プログラミングされたコンピュータ410に内部でも、外部でも直接に結合される必要なしに、そのようなネットワークにネットワークドライブとして直接に結合されてよい。しかし、明瞭にするために、限定するためにではなく、SSD100は、プログラミングされたコンピュータ410に収納されるものと想定されたい。
【0079】
メモリ405は、本発明の1つまたは複数の実施形態によるプロセスを実施する1つもしくは複数のプログラムまたはデータのすべて、またはいくつかの部分を記憶して、プログラム製品420をもたらすことが可能である。前述したとおり、プログラム製品420は、プロセスフロー200、ならびに統計エンジン106を実装するためにSSD100のメモリコントローラ110のファームウェアとして実装され得る。さらに、本発明の1つまたは複数の実施形態は、ハードウェアまたはソフトウェア、あるいはハードウェアとソフトウェアの組合せとして実装され得ることを当業者は諒解するであろう。そのような実施様態は、様々なプログラム、専用ハードウェア、および/またはプログラマブルハードウェアを独立に実行するいくつかのプロセッサまたはプロセッサコアを含み得る。
【0080】
プログラム製品420の1つまたは複数のプログラム、ならびにプログラム製品420の文書が、本発明の実施形態の機能を定義することが可能であり、(i)書込み不可能な記憶媒体(例えば、CD−ROMドライブもしくはDVDドライブによって読取り可能なCD−ROMディスクもしくはDVD−ROMディスクなどのコンピュータ内の読取り専用メモリデバイス)上に永久的に記憶された情報、または、(ii)書込み可能な記憶媒体(例えば、ディスケットドライブ内のフロッピーディスク、もしくはフラッシュドライブもしくはハードディスクドライブもしくは読取り可能/書込み可能なCDもしくは読取り可能/書込み可能なDVD)上に記憶された変更可能な情報を含むが、以上には限定されない、コードを有するコンピュータ可読媒体などの様々な非一時的信号担持媒体上に包含され得る。前述の実施形態は、インターネットおよび他のネットワークからダウンロードされる情報を特に含む。そのような非一時的信号担持媒体は、本発明の機能を誘導するコンピュータ可読命令を運ぶ場合、本発明の実施様態を表す。
【0081】
以上は、例示的な装置および/または方法について説明するが、本明細書において説明される1つまたは複数の態様による他の例、およびさらなる例が、以下の特許請求の範囲、および特許請求の範囲の均等物によって決定される本発明の範囲を逸脱することなく、考案され得る。ステップをリストアップするクレームは、それらのステップのいずれの順序も暗示するものではない。商標は、商標のそれぞれの所有者の所有物である。
図1
図2
図3
図4