IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特許7407230キー値データ記憶デバイスのためのeccパリティ偏り
<>
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図1
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図2
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図3
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図4
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図5
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図6
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図7
  • 特許-キー値データ記憶デバイスのためのeccパリティ偏り 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-20
(45)【発行日】2023-12-28
(54)【発明の名称】キー値データ記憶デバイスのためのeccパリティ偏り
(51)【国際特許分類】
   G06F 11/10 20060101AFI20231221BHJP
   H03M 13/19 20060101ALI20231221BHJP
【FI】
G06F11/10 648
H03M13/19
【請求項の数】 16
【外国語出願】
(21)【出願番号】P 2022083493
(22)【出願日】2022-05-23
(65)【公開番号】P2023076370
(43)【公開日】2023-06-01
【審査請求日】2022-05-30
(31)【優先権主張番号】17/531,975
(32)【優先日】2021-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【弁理士】
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】ラン・ザミール
(72)【発明者】
【氏名】デイヴィッド・アブラハム
(72)【発明者】
【氏名】アレクサンダー・バザルスキー
【審査官】田中 幸雄
(56)【参考文献】
【文献】米国特許出願公開第2017/0344284(US,A1)
【文献】米国特許出願公開第2017/0255519(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
H03M 13/19
(57)【特許請求の範囲】
【請求項1】
データ記憶コントローラであって、
メモリとインターフェースするように構成されたメモリインターフェースと、
前記メモリに記憶されたデータに対してECC符号化を実行するように構成されたエラー訂正コード(ECC)エンジンと、
フラッシュ変換レイヤ(FTL)及び名前空間データベースを含むコントローラメモリと、
前記ECCエンジン及び前記コントローラメモリに通信可能に接続された電子プロセッサであって、前記電子プロセッサは、前記FTLを実行するときに、
記憶されるデータを受信し、
前記データを複数のサブコードブロックに分離し、
前記ECCエンジンによって生成されたパリティビットを、前記複数のサブコードブロックの各サブコードブロックに割り当てる、ように構成されている、電子プロセッサと
を備え
前記複数のサブコードブロックは、空間結合低密度パリティ検査(SC-LDPC)構造の一部である複数のタイルである、データ記憶コントローラ。
【請求項2】
前記パリティビットは、前記複数のタイルの各タイル不均一に割り当てられる、請求項1に記載のデータ記憶コントローラ。
【請求項3】
前記複数のタイルのうちの第1のタイルには、前記複数のタイルの最後のタイルよりも多くのパリティビットが割り当てられる、請求項2に記載のデータ記憶コントローラ。
【請求項4】
前記電子プロセッサは、前記FTLを実行するときに、
前記パリティビットを前記複数のタイルの各タイルに割り当てた後、前記複数のタイルのうちの第1のタイルを前記メモリに書き込み、
前記複数のタイルの前記第1のタイルを前記メモリに書き込んだ後、前記複数のタイルのうちの最後のタイルを前記メモリに書き込む、ように更に構成されている、請求項1~3のいずれか一項に記載のデータ記憶コントローラ。
【請求項5】
前記電子プロセッサは、前記FTLを実行するときに、
前記パリティビットを前記複数のタイルの各タイルに割り当てた後、前記複数のタイルを前記メモリに書き込み、前記複数のタイルは、メモリに順次書き込まれる、ように更に構成されている、請求項1~3のいずれか一項に記載のデータ記憶コントローラ。
【請求項6】
前記電子プロセッサは、前記FTLを実行するときに、
スライディングウィンドウプロセスを使用して、前記複数のタイルが前記メモリに書き込まれた順序で前記メモリから前記複数のタイルを復号する、ように更に構成されている、請求項に記載のデータ記憶コントローラ。
【請求項7】
方法であって、
データ記憶コントローラの電子プロセッサを用いて、キー値(KV)データベースに記憶されるデータを受信することと、
前記データを複数のサブコードブロックに分離することと、
パリティビットを前記複数のサブコードブロックの各サブコードブロックに割り当てることと
を含み、
前記複数のサブコードブロックは、空間結合低密度パリティ検査(SC-LDPC)構造の一部である複数のタイルである、方法。
【請求項8】
前記パリティビットは、前記複数のタイルの各タイル不均一に割り当てられる、請求項7に記載の方法。
【請求項9】
前記複数のタイルのうちの第1のタイルには、前記複数のタイルの最後のタイルよりも多くのパリティビットが割り当てられる、請求項に記載の方法。
【請求項10】
前記パリティビットを前記複数のタイルの各タイルに割り当てた後に、前記複数のタイルを前記キー値(KV)データベースに書き込むことと
を更に含む、請求項7~9のいずれか一項に記載の方法。
【請求項11】
前記タイルを前記KVデータベースに書き込むことは、
前記複数のタイルのうちの第1のタイルを前記KVデータベースに書き込むことと、
前記複数のタイルの前記第1のタイルを前記KVデータベースに書き込んだ後、前記複数のタイルのうちの最後のタイルを前記KVデータベースに書き込むことと
を含む、請求項10に記載の方法。
【請求項12】
前記複数のタイルが前記KVデータベースに書き込まれた順序で前記KVデータベースから前記複数のタイルを復号すること
を更に含み、前記複数のタイルは、スライディングウィンドウプロセスを使用して復号される、請求項11に記載の方法。
【請求項13】
キー値名前空間へのデータの記憶をサポートするメモリデバイスであって、前記メモリデバイスは、
キー値(KV)データベースを含むメモリと、
前記KVデータベースにユーザデータを書き込むときに、パリティを前記ユーザデータに割り当てる第1のエラー訂正コード(ECC)符号化プロセスを実行するように構成されたコントローラと
を備え
前記コントローラは、前記ユーザデータを外部電子デバイス内に位置する第2のKVデータベースに書き込むときに、前記ユーザデータにパリティを割り当てる第2のECC符号化プロセスを実行するように更に構成されている、メモリデバイス。
【請求項14】
記第1のECC符号化プロセスは、前記ユーザデータの最初に、前記ユーザデータの最後よりも多くのパリティビットを割り当てる、請求項13に記載のメモリデバイス。
【請求項15】
キー値名前空間へのデータの記憶をサポートするメモリデバイスであって、前記メモリデバイスは、
キー値(KV)データベースを含むメモリと、
前記KVデータベースにユーザデータを書き込むときに、パリティを前記ユーザデータに割り当てる第1のエラー訂正コード(ECC)符号化プロセスを実行するように構成されたコントローラと
を備え、
前記ユーザデータを前記KVデータベースに書き込むときに、前記パリティを前記ユーザデータに割り当てる前記第1のECC符号化プロセスを実行するために、前記コントローラは、
前記ユーザデータを、空間結合低密度パリティ検査(SC-LDPC)構造の複数のタイルに分離する、メモリデバイス。
【請求項16】
前記ユーザデータを前記KVデータベースに書き込むときに、前記パリティを前記ユーザデータに割り当てる前記第1のECC符号化プロセスを実行するために、前記コントローラは、
前記複数のタイルのうちの第1のタイルを前記KVデータベースに書き込み、
前記第1のタイルを前記KVデータベースに書き込んだ後、前記複数のタイルのうちの最後のタイルを前記KVデータベースに書き込む、ように更に構成されている、請求項15に記載のメモリデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
本出願は、概して、データ記憶デバイスに関し、より具体的には、データ記憶デバイスにおけるエラー訂正コード(ECC)符号化に関する。
【0002】
キー値(KV)データベースは、完全なエンティティとしてアドレス指定可能なキーに関連付けられたある量のユーザデータを記憶する。例えば、ユーザデータは、写真、記録、又はファイルであり得る。ホストの視点から、写真又はファイルは、写真を構成するデータを含む複数の読み出しアドレスではなく、単一のキー/読み出しアドレスを使用して取得され得る。単一のキー/読み出しアドレスの使用は、特定のアプリケーションのデータベース管理を簡素化し、その結果、これらのアプリケーションの性能が向上する。
【発明の概要】
【0003】
本開示の技術は、上述のKVデータベースの動作を改善する。具体的には、本開示のKVデータ記憶デバイスは、各値が完全に順番に書き込まれ、各値が完全に、又はある時点まで読み出されなければならないが、インデックスから読み取られないというKVデータベースの固有の構造を利用する。以下でより詳細に説明するように、本開示のKVデータ記憶デバイスは、この独自の構造を利用して、KVデータ記憶デバイスのより良好な性能、待ち時間の低減、消費電力の低減、並びにより良好な訂正能力、信頼性、及び耐久性を提供する。
【0004】
記憶デバイスレベルでKVデータベースをサポートする第1の利点は、転送/秒に関する性能の向上である。この利点は、以下の2つの理由で生じる:1)キー/値からブロックストレージへのホスト内の変換レイヤが削除され得るか、又は不要になること、2)変換レイヤの削除により、マッピング及びトランザクション情報の2つのレイヤが削除され、これにより、毎秒のトランザクションの量が増加し、書き込み増幅が減少し、バスを介したコマンドがキー値ペア全体に対して単一の転送に低減されるため待ち時間が短縮される。
【0005】
本開示のKVデータ記憶デバイスの第2の利点は、計算記憶装置(近記憶装置計算)の単純化及び有効化である。KVデータ記憶デバイス上のユーザデータは、通常の記憶動作において連続していてもいなくてもよい様々な部分とは対照的に、完全なユニットとして識別可能である。
【0006】
本開示は、一実施形態では、メモリインターフェース、エラー訂正コード(ECC)エンジン、コントローラメモリ、並びにECCエンジン及びコントローラメモリに通信可能に接続された電子プロセッサを含むデータ記憶コントローラを提供する。メモリインターフェースは、メモリとインターフェースするように構成される。エラー訂正コード(ECC)エンジンは、メモリに記憶されたデータに対してECC符号化を実行するように構成される。コントローラメモリは、フラッシュ変換レイヤ(FTL)及び名前空間データベースを含む。電子プロセッサは、FTLを実行するときに、データを受信し、データを複数のサブコードブロックに分離し、ECCエンジンによって生成されたパリティビットを各サブコードブロックに割り当てるように構成される。
【0007】
本開示はまた、方法を提供する。一実施形態では、方法は、データ記憶コントローラの電子プロセッサを用いて、キー値(KV)データベースに記憶されるデータを受信することと、データを複数のサブコードブロックに分離することと、パリティビットを複数のサブコードブロックの各サブコードブロックに割り当てることと、を含む。
【0008】
本開示はまた、キー値名前空間にデータを記憶することをサポートするメモリデバイスを提供する。メモリデバイスは、メモリ及びコントローラを含む。メモリは、キー値(KV)データベースを含む。コントローラは、KVデータベースにユーザデータを書き込むときに、パリティをユーザデータに割り当てる第1のECC符号化プロセスを実行するように構成される。
【0009】
このようにして、本開示の様々な態様は、少なくともデータ記憶デバイスの技術分野並びにそれらの設計及びアーキテクチャにおいて改善をもたらす。本開示は、ファームウェア(すなわち、プロセッサ上で実行されるコード)によって制御されるハードウェア又は回路、コンピュータシステム及びネットワーク、並びにハードウェア実施方法、信号処理回路、メモリアレイ、特定用途向け集積回路、フィールドプログラマブルゲートアレイなどを含む様々な形態で実施することができる。上述の概要は、本開示の様々な態様の一般的な概念を提供することのみを意図したものであり、いかなる方法でも本開示の範囲を限定するものではない。
【図面の簡単な説明】
【0010】
図1】本開示のいくつかの実施形態による、ECC符号化/復号化を有するデータ記憶デバイスを含むシステムのブロック図である。
【0011】
図2】本開示のいくつかの実施形態による、異なる長さの例示的なLDPCコードの訂正能力を示すグラフである。
【0012】
図3】本開示のいくつかの実施形態による、非対称パリティ割り当てを有する符号語を示す図である。
【0013】
図4】本開示のいくつかの実施形態による、非対称パリティ割り当てプロセスを示すフローチャートである。
【0014】
図5】本開示のいくつかの実施形態による、空間結合LDPC構造を有するパリティ検査行列の例を示す図である。
【0015】
図6】本開示のいくつかの実施形態による、別の非対称パリティ割り当てプロセスを示すフローチャートである。
【0016】
図7】本開示のいくつかの実施形態による、代替の例示的な空間結合LDPC構造を示す図である。
【0017】
図8】本開示のいくつかの実施形態による、別の非対称パリティ割り当てプロセスを示すフローチャートである。
【発明を実施するための形態】
【0018】
以下の説明では、本開示の1つ以上の態様の理解を提供するために、データ記憶デバイス構成、コントローラ動作などのような多数の詳細が記載される。これらの具体的な詳細は単なる例示であり、本出願の範囲を限定することを意図するものではないことは、当業者には容易に明らかであろう。具体的には、メモリデバイスに関連付けられた機能は、ハードウェア(例えば、アナログ回路又はデジタル回路)、ハードウェアとソフトウェアとの組み合わせ(例えば、非一時的コンピュータ可読媒体に記憶され、処理回路又は制御回路によって実行される、プログラムコード又はファームウェア)、又は任意の他の好適な手段によって実行され得る。以下の説明は、本開示の様々な態様の一般的な概念を提供することのみを意図するものであり、いかなる方法でも本開示の範囲を限定するものではない。
【0019】
図1は、本開示のいくつかの実施形態による、ECC符号化/復号化を有するデータ記憶デバイス102を含むシステム100のブロック図である。図1の実施例では、システム100は、データ記憶デバイス102及びホストデバイス150(「外部電子デバイス」とも呼ばれる)を含む。データ記憶デバイス102は、コントローラ120、及びコントローラ120に結合されたメモリ104(例えば、不揮発性メモリ)を含む。
【0020】
コントローラ120によって提供される構造的特徴及び機能的特徴の一実施例を図1に示す。ただし、コントローラ120は、図1のコントローラ120によって提供される構造的特徴及び機能的特徴に限定されない。コントローラ120は、図1に示されていない、少数又は追加の構造的特徴及び機能的特徴を含み得る。
【0021】
データ記憶デバイス102及びホストデバイス150は、バス接続又はワイヤレス接続などの接続(例えば、通信経路110)を介して動作可能に結合され得る。いくつかの実施例では、データ記憶デバイス102は、ホストデバイス150内に埋め込まれ得る。代替的に、他の実施例では、データ記憶デバイス102は、ホストデバイス150から取り外し可能であり得る(すなわち、ホストデバイス150に「取り外し可能に」結合される)。一実施例として、データ記憶デバイス102は、取り外し可能なユニバーサルシリアルバス(USB)構成によって、ホストデバイス150に取り外し可能に結合され得る。いくつかの実装態様では、データ記憶デバイス102は、ソリッドステートドライブ(SSD)を含むか、又はそれに対応し得るが、このSSDは、埋め込みストレージドライブ(例えば、モバイル埋め込みストレージドライブ)、エンタープライズ記憶ドライブ(ESD)、クライアントストレージデバイス、又はクラウドストレージドライブ、又は他の好適なストレージドライブとして使用され得る。
【0022】
データ記憶デバイス102は、有線通信経路及び/又はワイヤレス通信経路などの通信経路110を用いてホストデバイス150に結合されるように構成され得る。例えば、データ記憶デバイス102は、インターフェース108がホストデバイス150に通信可能に結合されたときなど、データ記憶デバイス102とホストデバイス150との間の通信経路110を介した通信を可能にするインターフェース108(例えば、ホストインターフェース)を含み得る。
【0023】
ホストデバイス150は、電子プロセッサ及びメモリを含み得る。メモリは、電子プロセッサによって実行可能であり得るデータ及び/又は命令を記憶するように構成され得る。メモリは、単一のメモリであってもよいか、又は1つ以上の不揮発性メモリ、1つ以上の揮発性メモリ、若しくはこれらの組み合わせなどの1つ以上のメモリを含み得る。ホストデバイス150は、データ記憶デバイス102のメモリ104へのデータの消去、データの読み出し、又はデータの書き込みのための1つ以上の要求134など、1つ以上のコマンドをデータ記憶デバイス102に発行し得る。例えば、1つ以上の要求134は、ユーザデータ132に関連付けられたキー値(KV)又は読み出しアドレスを含むことができ、ユーザデータ132は、写真全体、記録全体、又はファイル全体である。更に、ホストデバイス150は、メモリ104に記憶されるユーザデータ132などのデータを提供するか、又はメモリ104から読み出されるデータを要求するように構成され得る。ホストデバイス150は、モバイルスマートフォン、音楽プレーヤ、ビデオプレーヤ、ゲーム機、電子書籍リーダ、パーソナルデジタルアシスタント(PDA)、ラップトップコンピュータ若しくはノートブックコンピュータなどのコンピュータ、これらの任意の組み合わせ、又は他の好適な電子デバイスを含み得る。
【0024】
ホストデバイス150は、メモリ104からの読み出し、及びメモリ104への書き込みを可能にするメモリインターフェースを用いて通信する。いくつかの実施例では、ホストデバイス150は、ユニバーサルフラッシュストレージ(UFS)ホストコントローラインターフェース仕様などの工業規格に準拠して動作し得る。他の実施例では、ホストデバイス150は、セキュアデジタル(SD)ホストコントローラ仕様又は他の好適な工業規格などの1つ以上の他の仕様に準拠して動作し得る。ホストデバイス150はまた、任意の他の好適な通信プロトコルによって、メモリ104と通信し得る。
【0025】
データ記憶デバイス102のメモリ104は、不揮発性メモリ(例えば、NAND、BiCSファミリーのメモリ、又は他の好適なメモリ)を含み得る。いくつかの実施例では、メモリ104は、任意のタイプのフラッシュメモリとし得る。例えば、メモリ104は、二次元(2D)メモリ又は三次元(3D)フラッシュメモリとし得る。メモリ104は、1つ以上のメモリダイ103を含み得る。1つ以上のメモリダイ103の各々は、1つ以上のブロック(例えば、1つ以上の消去ブロック)を含み得る。各ブロックは、記憶素子107A~107Nの代表的なグループなどの記憶素子の1つ以上のグループを含み得る。記憶素子107A~107Nのグループは、ワード線として構成され得る。記憶素子107A~107Nのグループは、それぞれ代表的な記憶素子109A及び109Nなどの複数の記憶素子(例えば、本明細書で「ストリング」と称されるメモリセル)を含み得る。
【0026】
メモリ104は、1つ以上のメモリダイ103の動作を支持するための読み出し/書き込み回路140などの支持回路を含み得る。単一の構成要素として示されているが、読み出し/書き込み回路140は、読み出し回路及び書き込み回路など、メモリ104の別個の構成要素に分割され得る。読み出し/書き込み回路140は、メモリ104の1つ以上のメモリダイ103の外部にし得る。代替的に、1つ以上の個々のメモリダイは、他のメモリダイのいずれかにおける任意の他の読み出し及び/又は書き込み動作とは独立して、個々のメモリダイ内の記憶素子から読み出し及び/又は記憶素子に書き込みするように動作可能である、対応する読み出し/書き込み回路を含み得る。
【0027】
データ記憶デバイス102は、バス106、メモリインターフェース122(例えば、インターフェース回路)、別の構造、又はこれらの組み合わせを用いてメモリ104(例えば、1つ以上のメモリダイ103)に結合されたコントローラ120を含む。例えば、バス106は、コントローラ120が、1つ以上のメモリダイ103の各々と、他のメモリダイ103との通信と並列かつ独立して通信することを可能にするために、複数の別個のチャネルを含み得る。いくつかの実装態様では、メモリ104は、フラッシュメモリとし得る。
【0028】
コントローラ120は、メモリインターフェース122を用いてホストデバイス150からデータ及び命令を受信し、ホストデバイス150にデータを送信するように構成されている。例えば、コントローラ120は、インターフェース108を用いてホストデバイス150にデータを送信することができ、コントローラ120は、インターフェース108を用いてホストデバイス150からデータを受信し得る。
【0029】
コントローラ120は、メモリインターフェース122を用いてメモリ104にデータ及びコマンド(例えば、メモリ動作136)を送信するように構成される。例えば、コントローラ120は、メモリインターフェース122を用いてデータ及び書き込みコマンドを送信して、メモリ104にデータをメモリ104の指定されたアドレスに記憶させるように構成されている。書き込みコマンドは、データを記憶することになるメモリ104の一部分の物理アドレス(例えば、メモリ104のワード線の物理アドレス)を指定し得る。
【0030】
コントローラ120は、メモリインターフェース122を用いてメモリ104に読み出しコマンドを送信して、メモリ104の指定されたアドレスからデータにアクセスするように構成されている。読み出しコマンドは、メモリ104の領域の物理アドレス(例えば、メモリ104のワード線の物理アドレス)を指定し得る。コントローラ120はまた、メモリインターフェース122を用いて、バックグラウンドスキャン動作、ガベージコレクション動作、及び/若しくは摩耗平準化動作、又は他の好適なメモリ動作に関連付けられたメモリ104にデータ及びコマンドを送信するように構成され得る。
【0031】
コントローラ120は、メモリ124、エラー訂正コード(ECC)エンジン126、及びプロセッサ128を含み得る。メモリ124は、プロセッサ128によって実行可能であり得るデータ及び/又は命令を記憶するように構成され得る。メモリ124は、フラッシュ変換レイヤ160及び名前空間データベース162を含み得る。フラッシュ変換レイヤ160は、プロセッサ128によって実行可能であるハードウェア回路又は命令であり得る。フラッシュ変換レイヤ160は、プロセッサ128に、メモリ104の異なる物理領域に関連付けられた名前空間データベース162内の名前空間(すなわち、キー値(KV)名前空間及びブロックIO名前空間)を設定させることができる。いくつかの例では、ホストデバイス150は、プロセッサ128にKV名前空間及びブロックIO名前空間を含む名前空間を設定させるための要求134内にコマンドを含む。他の例では、フラッシュ変換レイヤ160は、ホストデバイス150からの要求134内のキーの受信に応答して、プロセッサ128に、KV名前空間及びブロックIO名前空間を含む名前空間を設定させてもよい。
【0032】
KV名空間は、データ記憶デバイス102内のKVデータベースを表し、各KV名前空間は、複数のアドレスにわたるデータの量に関連付けられたキーを含み、データは、このキーに従ってインデックス付けされる。いくつかの例では、各KV名前空間はまた、複数のキー値ペアを含み得る。各ブロックIO名前空間は、論理アドレス範囲を含み、ホストデバイス150は、論理アドレス範囲内の任意のアドレスにアクセスしてもよい。
【0033】
フラッシュ変換レイヤ160はまた、要求134及びユーザデータ132のサイズのうちの一方に基づいて、KV名前空間又はブロックIO名前空間のうちの一方を選択又は生成してもよい。例えば、要求134がキーを含み、ユーザデータ132のサイズが閾値(例えば、4KB)以上である場合、フラッシュ変換レイヤ160は、キーに関連付けられたKV名前空間のうちの1つを生成する(キーが新しいとき)か、又は選択する(キーが以前に見られたとき)。或いは、要求134がキーを含み、ユーザデータ132のサイズが閾値(例えば、4KB)未満である場合、フラッシュ変換レイヤ160は、キー及び単一のアドレスに関連付けられたブロックIO名前空間のうちの1つを生成する(キーが新しいとき)か、又は選択する(キーが以前に見られたとき)。更に、要求134が単一のアドレスを含む場合、フラッシュ変換レイヤ160は、アドレスに関連付けられたブロックIO名前空間のうちの1つを生成する(アドレスが新しいとき)か、又は選択する(アドレスが以前に見られたとき)。他の例では、要求134はまた、ユーザデータ132をブロックIO名前空間又はKV名前空間に保存することを要求する。
【0034】
KV名前空間又はブロックIO名前空間のいずれかを生成又は選択すると、フラッシュ変換レイヤ160は、ECCエンジン126を制御して、メモリ動作136及びメモリインターフェース122を用いて、選択された名前空間及びユーザデータ132に基づいてECC符号化/復号化を実行させてもよい。いくつかの例では、ECCエンジン126は、本明細書で「非対称ECC符号化/復号化」と呼ばれ、図3図8に関して以下により詳細に説明されるキー値(KV)名前空間の選択に基づいて、メモリ動作136を用いて非対称ECC符号化/復号化を実行してもよい。更に、これらの例では、ECCエンジン126はまた、本明細書で「SC-LDPC非対称ECC符号化/復号化」と呼ばれ、図5図8に関して以下により詳細に説明されるKV名前空間の選択に基づいて、メモリ動作136を有する空間結合低密度パリティ検査(SC-LDPC)コードを使用して、ECC符号化/復号化を実行してもよい。更に、いくつかの例では、メモリ124に記憶された任意のアプリケーションとは別個の異なるアプリケーション又は回路は、ECCエンジン126を制御して、本明細書で説明するように非対称ECC符号化/復号化又はSC-LDPC非対称ECC符号化/復号化を実行し得る。
【0035】
データ記憶デバイス102内のKVデータベースの取得コマンドは、値が開始から完全にある点まで読み出され、インデックスに基づいて読み出されないことを必要とする。本明細書に記載の方法は、KVデータベース取得コマンドの固有の構造を使用して、データ記憶デバイス102のより良好な性能、待ち時間、電力消費、及び訂正能力を提供する。
【0036】
より長いECCは、短いECCよりも良好に機能し、復号失敗が少なくなる。例えば、図2は、X4メモリダイについての様々なECC長の一例を示すグラフ200である。グラフ200のy軸202は、凡例206によって定義される各コード長のブロックエラー率(BLER)を提供する。グラフ200のx軸204は、凡例206によって定義される各コード長のビットエラー率(BER)を提供する。見られるように、より長いECCは、より短いECCよりも大きい訂正能力を有する。
【0037】
図3は、コードブロック300のサブコード間にコードパリティを非対称に割り当てる例を提供する。サブコード構造は、例えば、データのより小さなセクションが、それらを局所的に復号するために使用することができる局所パリティビットを有するコード構造である(例えば、他のサブコードのデータなし)。更に、いくつかのサブコードを一緒に接続する結合パリティビットが存在してもよく、その結果、サブコードはまた、より良好な訂正能力のためのより長いコードとして一緒に復号されてもよい。コードブロック300は、複数のサブコード302(最終サブコード302Nまでの範囲の第1のサブコード302A、第2のサブコード302Bなど)を含む。コードブロック300は、任意の数のサブコード302を有し得る。各サブコードは、データブロック304及びパリティブロック306を含む。例えば、第1のサブコード302Aは、第1のデータブロック304A及び第1のパリティブロック306Aを有し、第2のサブコード302Bは、第2のデータブロック304B及び第2のパリティブロック306Bを有し、最終サブコード302Nは、最終データブロック304N及び最終パリティブロック306Nを有する。更に、コードブロック300は、最終パリティブロック306Nに続くグローバルパリティブロック308を含む。
【0038】
いくつかの例では、パリティは、各サブコード間で均一に分布される。例えば、第1のサブコード302A、第2のサブコード302B、及び最終サブコード302Nは各々、等量のパリティを割り当てられる。他の実施例では、第2のサブコード302B及び最終サブコード302Nなどの、後にもたらされるサブコードよりも、第1のサブコード302Aなどのより早いサブコードにより多くのパリティが割り当てられる。パリティ割り当ては、パリティが各サブコード302に割り当てられるにつれて直線的に減少し得る。他の例では、パリティの減少は非線形であり得、第1のパリティブロック306A及び第2のパリティブロック306Bは、等しい数のパリティビット(例えば、N個のパリティビット)を有し、後続のパリティブロック306は、より少ないパリティビット(例えば、0.75N個のパリティビット)を有する。したがって、第1のパリティブロック306Aは、第2のパリティブロック306Bより大きい(すなわち、より多くのパリティビットを含む)か、又は等しく(すなわち、同じ数のパリティビットを含む)、第2のパリティブロック306Bは、最終パリティブロック306Nよりも大きい。KVデータベース内のコードが連続して読み出されると、最初のサブコード302(第1のサブコード302Aなど)は、それ自体で読み出され得るため、後続のサブコード302なしで復号され得、その結果、長さが短くなる。更に、後続のサブコードは、常に前のコードの後に読み出されるため、前のサブコードを使用することができ、より長いコード長を有することができる。したがって、後続のサブコードは、同じ量の訂正に対してより少ないパリティを必要とする。したがって、割り当てられる全体的なパリティが限られているため、より多くのパリティが早期のサブコード302に割り当てられて、それらの訂正性を高める。
【0039】
図4は、本開示の様々な態様による、非対称パリティ割り当てプロセス400(すなわち、非対称ECC符号化/復号化)を示すフローチャートである。図4は、図1のコントローラ120に関して説明される。
【0040】
図4に示されるように、非対称パリティ割り当てプロセス400は、(ブロック402において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセス400は、コントローラ120が、(ブロック404において)サブコードブロック302などのサブコードブロックにデータを分離することを含む。
【0041】
非対称パリティ割り当てプロセス400は、コントローラ120が、パリティビットをサブコードブロック間に非対称に挿入することを含む。例えば、第1のパリティブロック306Aは第1のサブコード302Aに追加され(すなわち、割り当てられ)、第2のパリティブロック306Bは第2のサブコード302Bに追加され、最終パリティブロック306Nは最終サブコード302Nに追加される。いくつかの例では、グローバルパリティブロック308は、データに追加される。
【0042】
非対称パリティ割り当てプロセス400は、コントローラ120が、サブコードブロックをメモリ104に書き込むことを含む。いくつかの例では、コントローラ120は、サブコードブロックをメモリ124に書き込む。他の例では、コントローラ120は、サブコードブロックをホストデバイス150のメモリに書き込む。非対称パリティ割り当てプロセス400は、コントローラ120が、連続した順序でサブコードブロックを復号する(例えば、連続順序、最初/最後の順序、又は他の一連の順序)ことを含む。いくつかの例では、第1のデータブロック304A及び第1のパリティブロック306Aを含む第1のサブコード302Aのみが、コントローラ120によって復号される。他の例では、第2のデータブロック304B及び第2のパリティブロック306Bを含む第1のサブコード302A及び第2のサブコード302Bの両方が復号される。いくつかの例では、コードブロック300全体が復号される。
【0043】
非対称パリティ割り当てはまた、SC-LDPCコードを使用して実装され得る。SC-LDPCコードは、タイルから構成される。図5は、本開示の様々な態様による、例示的なSC-LDPCパリティ検査行列構造500を提供する。SC-LDPCパリティ検査行列構造500は、第1のタイル502A、第2のタイル502B、第3のタイル502C、第4のタイル502D、及び第5のタイル502Eなどの複数のタイル502を含む。各タイル502には、偏りなくパリティが割り当てられる。具体的には、SC-LDPCパリティ検査行列構造500の先頭のタイルには、より多くのパリティ(例えば、パリティ検査行列のより多くの列)が割り当てられ、末尾に向かうタイルには、より少ないパリティが割り当てられる。例えば、第1のタイル502Aは最も多くのパリティを受け取り、第5のタイル502Eは最も少ないパリティを受け取る。
【0044】
図6は、本開示の様々な態様による、非対称パリティ割り当てプロセス600(すなわち、SC-LDPC非対称ECC符号化/復号化)を示すフローチャートである。図6は、図1のコントローラ120に関して説明される。
【0045】
図6に示されるように、非対称パリティ割り当てプロセス600は、(ブロック602において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセスは、コントローラ120が、(ブロック604において)複数のタイル502などの空間タイルにデータを分離することを含む。
【0046】
非対称パリティ割り当てプロセス600は、(ブロック606において)コントローラ120が、複数の空間タイル502の各々にパリティビットを非対称に割り当てることを含む。非対称パリティ割り当てプロセス600は、(ブロック608において)コントローラ120が、複数の空間タイル502をメモリ104に書き込むことを含む。いくつかの例では、複数の空間タイル502の各々は、連続した順序でメモリ104に書き込まれる(例えば、連続順序、最初/最後の順序、又は他の一連の順序)。例えば、第1のタイル502Aが最初にメモリ104に書き込まれ、第2のタイル502Bが2番目にメモリ104に書き込まれる、などである。いくつかの例では、コントローラ120は、複数の空間タイル502をメモリ124に書き込む。他の例では、コントローラ120は、複数の空間タイル502をホストデバイス150のメモリに書き込む。非対称パリティ割り当てプロセス600は、コントローラ120が、(ブロック610において)複数の空間タイル502を順次復号することを含む。いくつかの例では、タイルは、スライディングウィンドウプロセスで復号される。
【0047】
図7は、本開示の様々な態様による、別の例示的なSC-LDPCパリティ検査行列構造700を示す。SC-LDPCパリティ検査行列構造700は、第1のタイル702A、第2のタイル702B、第3のタイル702C、及び第4のタイル702Dなどの複数のタイル702を含む。各タイル702には、偏りなくパリティが割り当てられる。SC-LDPCコード内の最初及び最後のタイルは、本質的により多くのパリティを有し、最初にメモリ104に記憶され得る。図7の例では、第1のタイル702A及び第4のタイル702Dは、第2のタイル702B及び第3のタイル702Cよりも多くのパリティを含む。第1のタイル702A及び第4のタイル702Dがより多くのパリティを含むため、それらは最初にメモリ104に書き込まれる。
【0048】
図8は、本開示の様々な態様による、非対称パリティ割り当てプロセス800を示すフローチャートである。図8は、図1のコントローラ120に関して説明される。
【0049】
図8に示されるように、非対称パリティ割り当てプロセス800は、(ブロック802において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセスは、コントローラ120が、(ブロック804において)複数のタイル702などの空間タイルにデータを分離することを含む。
【0050】
非対称パリティ割り当てプロセス800は、(ブロック806において)コントローラ120が、複数の空間タイル702の各々にパリティビットを非対称に割り当てることを含む。非対称パリティ割り当てプロセス800は、(ブロック808において)コントローラ120が、第1の空間タイル(すなわち、第1のタイル702A)をメモリ104に書き込むことを含む。非対称パリティ割り当てプロセス800は、(ブロック810において)コントローラ120が、最後の空間タイル(すなわち、第4のタイル702D)をメモリ104に書き込むことを含む。上述のように、SC-LDPCパリティ検査行列構造500、700内の最初及び最後の空間タイルは、本質的により多くのパリティを有する。最初の空間タイルの直後に最後の空間タイルを記憶することにより、記憶されたメモリブロックの開始時により多くのパリティが割り当てられる。
【0051】
非対称パリティ割り当てプロセス800は、(ブロック812において)コントローラ120が、残りの空間タイル702をメモリ104に書き込むことを含む。いくつかの例では、コントローラ120は、複数の空間タイル702をメモリ124に書き込む。他の例では、コントローラ120は、複数の空間タイル702をホストデバイス150のメモリに書き込む。いくつかの例では、残りの空間タイル702の各々は、連続した順序でメモリ104に書き込まれる(例えば、連続順序、最初/最後の順序、又は他の一連の順序)。例えば、第4のタイル702Dに続いて、コントローラ120は、第2のタイル702Bをメモリ104に書き込み、続いて第3のタイル702Cを書き込む。非対称パリティ割り当てプロセス800は、コントローラ120が、(ブロック814において)複数の空間タイル702を、メモリ104に書き込まれた順序に復号することを含む。いくつかの例では、タイルは、スライディングウィンドウプロセスで復号される。
【0052】
本明細書に説明されるプロセス、システム、方法、ヒューリスティックなどに関して、かかるプロセスのステップは、特定の順序付けられたシーケンスに従って発生するものとして説明されているが、かかるプロセスは、本明細書に説明される順序以外の順序で実行されると説明されたステップを用いて実施され得ることを理解されたい。更に、特定のステップが同時に実行されてもよく、他のステップが追加されてもよく、又は本明細書に説明される特定のステップを省略することができることを理解されたい。すなわち、本明細書のプロセスの説明は、特定の実施形態を例示する目的で提供され、特許請求の範囲を限定するものと解釈されるべきではない。
【0053】
したがって、上の説明は例示的であり、限定的ではないことが意図されることを理解されたい。提供される実施例以外の多くの実施形態及び用途は、上の説明を読むことで明らかとなるであろう。範囲は、上の説明を参照して決定されるべきではなく、その代わりに、添付の特許請求の範囲を参照して、かかる特許請求の範囲が権利を与えられる等価物の全範囲とともに決定されるべきである。将来の開発が本明細書で考察される技術において生じ、開示されたシステム及び方法がそのような将来の実施形態に組み込まれることが予想及び意図されている。要約すると、用途は、修正及び変形が可能であることを理解されたい。
【0054】
特許請求の範囲で使用される全ての用語は、本明細書でなされる反対の明示的な指示がない限り、本明細書に説明される技術において知識豊富な者によって理解されるような、最も広い合理的な構造及びそれらの通常の意味が与えられることを意図している。具体的には、「a」、「the」、「said」などのような単数形冠詞の使用は、請求項の反対の明示的な限定を列挙しない限り、示された要素のうちの1つ以上を列挙するために読み取られるべきである。
【0055】
要約書は、読者が技術的開示の性質を迅速に確認することができるように提供される。請求項の範囲又は意味を解釈又は限定するために使用されないことが理解されよう。加えて、上述の[発明を実施するための形態]において、様々な機能が、本開示を合理化する目的で様々な実施形態において一緒にグループ化されていることが分かり得る。本開示の方法は、請求される実施形態が各請求項に明示的に列挙されているよりも多くの機能を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映されるように、本発明の主題は、開示される単一の実施形態の全ての機能よりも少ないことにある。したがって、以下の特許請求の範囲は、「発明を実施するための形態」に組み込まれ、各特許請求の範囲は、個別に請求される主題として独立している。

図1
図2
図3
図4
図5
図6
図7
図8