JP7407230B2 - キー値データ記憶デバイスのためのeccパリティ偏り - Google Patents

キー値データ記憶デバイスのためのeccパリティ偏り Download PDF

Info

Publication number
JP7407230B2
JP7407230B2 JP2022083493A JP2022083493A JP7407230B2 JP 7407230 B2 JP7407230 B2 JP 7407230B2 JP 2022083493 A JP2022083493 A JP 2022083493A JP 2022083493 A JP2022083493 A JP 2022083493A JP 7407230 B2 JP7407230 B2 JP 7407230B2
Authority
JP
Japan
Prior art keywords
tiles
memory
tile
database
parity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022083493A
Other languages
English (en)
Other versions
JP2023076370A (ja
Inventor
ラン・ザミール
デイヴィッド・アブラハム
アレクサンダー・バザルスキー
Original Assignee
ウェスタン デジタル テクノロジーズ インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ウェスタン デジタル テクノロジーズ インコーポレーテッド filed Critical ウェスタン デジタル テクノロジーズ インコーポレーテッド
Publication of JP2023076370A publication Critical patent/JP2023076370A/ja
Application granted granted Critical
Publication of JP7407230B2 publication Critical patent/JP7407230B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本出願は、概して、データ記憶デバイスに関し、より具体的には、データ記憶デバイスにおけるエラー訂正コード(ECC)符号化に関する。
キー値(KV)データベースは、完全なエンティティとしてアドレス指定可能なキーに関連付けられたある量のユーザデータを記憶する。例えば、ユーザデータは、写真、記録、又はファイルであり得る。ホストの視点から、写真又はファイルは、写真を構成するデータを含む複数の読み出しアドレスではなく、単一のキー/読み出しアドレスを使用して取得され得る。単一のキー/読み出しアドレスの使用は、特定のアプリケーションのデータベース管理を簡素化し、その結果、これらのアプリケーションの性能が向上する。
本開示の技術は、上述のKVデータベースの動作を改善する。具体的には、本開示のKVデータ記憶デバイスは、各値が完全に順番に書き込まれ、各値が完全に、又はある時点まで読み出されなければならないが、インデックスから読み取られないというKVデータベースの固有の構造を利用する。以下でより詳細に説明するように、本開示のKVデータ記憶デバイスは、この独自の構造を利用して、KVデータ記憶デバイスのより良好な性能、待ち時間の低減、消費電力の低減、並びにより良好な訂正能力、信頼性、及び耐久性を提供する。
記憶デバイスレベルでKVデータベースをサポートする第1の利点は、転送/秒に関する性能の向上である。この利点は、以下の2つの理由で生じる:1)キー/値からブロックストレージへのホスト内の変換レイヤが削除され得るか、又は不要になること、2)変換レイヤの削除により、マッピング及びトランザクション情報の2つのレイヤが削除され、これにより、毎秒のトランザクションの量が増加し、書き込み増幅が減少し、バスを介したコマンドがキー値ペア全体に対して単一の転送に低減されるため待ち時間が短縮される。
本開示のKVデータ記憶デバイスの第2の利点は、計算記憶装置(近記憶装置計算)の単純化及び有効化である。KVデータ記憶デバイス上のユーザデータは、通常の記憶動作において連続していてもいなくてもよい様々な部分とは対照的に、完全なユニットとして識別可能である。
本開示は、一実施形態では、メモリインターフェース、エラー訂正コード(ECC)エンジン、コントローラメモリ、並びにECCエンジン及びコントローラメモリに通信可能に接続された電子プロセッサを含むデータ記憶コントローラを提供する。メモリインターフェースは、メモリとインターフェースするように構成される。エラー訂正コード(ECC)エンジンは、メモリに記憶されたデータに対してECC符号化を実行するように構成される。コントローラメモリは、フラッシュ変換レイヤ(FTL)及び名前空間データベースを含む。電子プロセッサは、FTLを実行するときに、データを受信し、データを複数のサブコードブロックに分離し、ECCエンジンによって生成されたパリティビットを各サブコードブロックに割り当てるように構成される。
本開示はまた、方法を提供する。一実施形態では、方法は、データ記憶コントローラの電子プロセッサを用いて、キー値(KV)データベースに記憶されるデータを受信することと、データを複数のサブコードブロックに分離することと、パリティビットを複数のサブコードブロックの各サブコードブロックに割り当てることと、を含む。
本開示はまた、キー値名前空間にデータを記憶することをサポートするメモリデバイスを提供する。メモリデバイスは、メモリ及びコントローラを含む。メモリは、キー値(KV)データベースを含む。コントローラは、KVデータベースにユーザデータを書き込むときに、パリティをユーザデータに割り当てる第1のECC符号化プロセスを実行するように構成される。
このようにして、本開示の様々な態様は、少なくともデータ記憶デバイスの技術分野並びにそれらの設計及びアーキテクチャにおいて改善をもたらす。本開示は、ファームウェア(すなわち、プロセッサ上で実行されるコード)によって制御されるハードウェア又は回路、コンピュータシステム及びネットワーク、並びにハードウェア実施方法、信号処理回路、メモリアレイ、特定用途向け集積回路、フィールドプログラマブルゲートアレイなどを含む様々な形態で実施することができる。上述の概要は、本開示の様々な態様の一般的な概念を提供することのみを意図したものであり、いかなる方法でも本開示の範囲を限定するものではない。
本開示のいくつかの実施形態による、ECC符号化/復号化を有するデータ記憶デバイスを含むシステムのブロック図である。
本開示のいくつかの実施形態による、異なる長さの例示的なLDPCコードの訂正能力を示すグラフである。
本開示のいくつかの実施形態による、非対称パリティ割り当てを有する符号語を示す図である。
本開示のいくつかの実施形態による、非対称パリティ割り当てプロセスを示すフローチャートである。
本開示のいくつかの実施形態による、空間結合LDPC構造を有するパリティ検査行列の例を示す図である。
本開示のいくつかの実施形態による、別の非対称パリティ割り当てプロセスを示すフローチャートである。
本開示のいくつかの実施形態による、代替の例示的な空間結合LDPC構造を示す図である。
本開示のいくつかの実施形態による、別の非対称パリティ割り当てプロセスを示すフローチャートである。
以下の説明では、本開示の1つ以上の態様の理解を提供するために、データ記憶デバイス構成、コントローラ動作などのような多数の詳細が記載される。これらの具体的な詳細は単なる例示であり、本出願の範囲を限定することを意図するものではないことは、当業者には容易に明らかであろう。具体的には、メモリデバイスに関連付けられた機能は、ハードウェア(例えば、アナログ回路又はデジタル回路)、ハードウェアとソフトウェアとの組み合わせ(例えば、非一時的コンピュータ可読媒体に記憶され、処理回路又は制御回路によって実行される、プログラムコード又はファームウェア)、又は任意の他の好適な手段によって実行され得る。以下の説明は、本開示の様々な態様の一般的な概念を提供することのみを意図するものであり、いかなる方法でも本開示の範囲を限定するものではない。
図1は、本開示のいくつかの実施形態による、ECC符号化/復号化を有するデータ記憶デバイス102を含むシステム100のブロック図である。図1の実施例では、システム100は、データ記憶デバイス102及びホストデバイス150(「外部電子デバイス」とも呼ばれる)を含む。データ記憶デバイス102は、コントローラ120、及びコントローラ120に結合されたメモリ104(例えば、不揮発性メモリ)を含む。
コントローラ120によって提供される構造的特徴及び機能的特徴の一実施例を図1に示す。ただし、コントローラ120は、図1のコントローラ120によって提供される構造的特徴及び機能的特徴に限定されない。コントローラ120は、図1に示されていない、少数又は追加の構造的特徴及び機能的特徴を含み得る。
データ記憶デバイス102及びホストデバイス150は、バス接続又はワイヤレス接続などの接続(例えば、通信経路110)を介して動作可能に結合され得る。いくつかの実施例では、データ記憶デバイス102は、ホストデバイス150内に埋め込まれ得る。代替的に、他の実施例では、データ記憶デバイス102は、ホストデバイス150から取り外し可能であり得る(すなわち、ホストデバイス150に「取り外し可能に」結合される)。一実施例として、データ記憶デバイス102は、取り外し可能なユニバーサルシリアルバス(USB)構成によって、ホストデバイス150に取り外し可能に結合され得る。いくつかの実装態様では、データ記憶デバイス102は、ソリッドステートドライブ(SSD)を含むか、又はそれに対応し得るが、このSSDは、埋め込みストレージドライブ(例えば、モバイル埋め込みストレージドライブ)、エンタープライズ記憶ドライブ(ESD)、クライアントストレージデバイス、又はクラウドストレージドライブ、又は他の好適なストレージドライブとして使用され得る。
データ記憶デバイス102は、有線通信経路及び/又はワイヤレス通信経路などの通信経路110を用いてホストデバイス150に結合されるように構成され得る。例えば、データ記憶デバイス102は、インターフェース108がホストデバイス150に通信可能に結合されたときなど、データ記憶デバイス102とホストデバイス150との間の通信経路110を介した通信を可能にするインターフェース108(例えば、ホストインターフェース)を含み得る。
ホストデバイス150は、電子プロセッサ及びメモリを含み得る。メモリは、電子プロセッサによって実行可能であり得るデータ及び/又は命令を記憶するように構成され得る。メモリは、単一のメモリであってもよいか、又は1つ以上の不揮発性メモリ、1つ以上の揮発性メモリ、若しくはこれらの組み合わせなどの1つ以上のメモリを含み得る。ホストデバイス150は、データ記憶デバイス102のメモリ104へのデータの消去、データの読み出し、又はデータの書き込みのための1つ以上の要求134など、1つ以上のコマンドをデータ記憶デバイス102に発行し得る。例えば、1つ以上の要求134は、ユーザデータ132に関連付けられたキー値(KV)又は読み出しアドレスを含むことができ、ユーザデータ132は、写真全体、記録全体、又はファイル全体である。更に、ホストデバイス150は、メモリ104に記憶されるユーザデータ132などのデータを提供するか、又はメモリ104から読み出されるデータを要求するように構成され得る。ホストデバイス150は、モバイルスマートフォン、音楽プレーヤ、ビデオプレーヤ、ゲーム機、電子書籍リーダ、パーソナルデジタルアシスタント(PDA)、ラップトップコンピュータ若しくはノートブックコンピュータなどのコンピュータ、これらの任意の組み合わせ、又は他の好適な電子デバイスを含み得る。
ホストデバイス150は、メモリ104からの読み出し、及びメモリ104への書き込みを可能にするメモリインターフェースを用いて通信する。いくつかの実施例では、ホストデバイス150は、ユニバーサルフラッシュストレージ(UFS)ホストコントローラインターフェース仕様などの工業規格に準拠して動作し得る。他の実施例では、ホストデバイス150は、セキュアデジタル(SD)ホストコントローラ仕様又は他の好適な工業規格などの1つ以上の他の仕様に準拠して動作し得る。ホストデバイス150はまた、任意の他の好適な通信プロトコルによって、メモリ104と通信し得る。
データ記憶デバイス102のメモリ104は、不揮発性メモリ(例えば、NAND、BiCSファミリーのメモリ、又は他の好適なメモリ)を含み得る。いくつかの実施例では、メモリ104は、任意のタイプのフラッシュメモリとし得る。例えば、メモリ104は、二次元(2D)メモリ又は三次元(3D)フラッシュメモリとし得る。メモリ104は、1つ以上のメモリダイ103を含み得る。1つ以上のメモリダイ103の各々は、1つ以上のブロック(例えば、1つ以上の消去ブロック)を含み得る。各ブロックは、記憶素子107A~107Nの代表的なグループなどの記憶素子の1つ以上のグループを含み得る。記憶素子107A~107Nのグループは、ワード線として構成され得る。記憶素子107A~107Nのグループは、それぞれ代表的な記憶素子109A及び109Nなどの複数の記憶素子(例えば、本明細書で「ストリング」と称されるメモリセル)を含み得る。
メモリ104は、1つ以上のメモリダイ103の動作を支持するための読み出し/書き込み回路140などの支持回路を含み得る。単一の構成要素として示されているが、読み出し/書き込み回路140は、読み出し回路及び書き込み回路など、メモリ104の別個の構成要素に分割され得る。読み出し/書き込み回路140は、メモリ104の1つ以上のメモリダイ103の外部にし得る。代替的に、1つ以上の個々のメモリダイは、他のメモリダイのいずれかにおける任意の他の読み出し及び/又は書き込み動作とは独立して、個々のメモリダイ内の記憶素子から読み出し及び/又は記憶素子に書き込みするように動作可能である、対応する読み出し/書き込み回路を含み得る。
データ記憶デバイス102は、バス106、メモリインターフェース122(例えば、インターフェース回路)、別の構造、又はこれらの組み合わせを用いてメモリ104(例えば、1つ以上のメモリダイ103)に結合されたコントローラ120を含む。例えば、バス106は、コントローラ120が、1つ以上のメモリダイ103の各々と、他のメモリダイ103との通信と並列かつ独立して通信することを可能にするために、複数の別個のチャネルを含み得る。いくつかの実装態様では、メモリ104は、フラッシュメモリとし得る。
コントローラ120は、メモリインターフェース122を用いてホストデバイス150からデータ及び命令を受信し、ホストデバイス150にデータを送信するように構成されている。例えば、コントローラ120は、インターフェース108を用いてホストデバイス150にデータを送信することができ、コントローラ120は、インターフェース108を用いてホストデバイス150からデータを受信し得る。
コントローラ120は、メモリインターフェース122を用いてメモリ104にデータ及びコマンド(例えば、メモリ動作136)を送信するように構成される。例えば、コントローラ120は、メモリインターフェース122を用いてデータ及び書き込みコマンドを送信して、メモリ104にデータをメモリ104の指定されたアドレスに記憶させるように構成されている。書き込みコマンドは、データを記憶することになるメモリ104の一部分の物理アドレス(例えば、メモリ104のワード線の物理アドレス)を指定し得る。
コントローラ120は、メモリインターフェース122を用いてメモリ104に読み出しコマンドを送信して、メモリ104の指定されたアドレスからデータにアクセスするように構成されている。読み出しコマンドは、メモリ104の領域の物理アドレス(例えば、メモリ104のワード線の物理アドレス)を指定し得る。コントローラ120はまた、メモリインターフェース122を用いて、バックグラウンドスキャン動作、ガベージコレクション動作、及び/若しくは摩耗平準化動作、又は他の好適なメモリ動作に関連付けられたメモリ104にデータ及びコマンドを送信するように構成され得る。
コントローラ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名前空間を含む名前空間を設定させてもよい。
KV名空間は、データ記憶デバイス102内のKVデータベースを表し、各KV名前空間は、複数のアドレスにわたるデータの量に関連付けられたキーを含み、データは、このキーに従ってインデックス付けされる。いくつかの例では、各KV名前空間はまた、複数のキー値ペアを含み得る。各ブロックIO名前空間は、論理アドレス範囲を含み、ホストデバイス150は、論理アドレス範囲内の任意のアドレスにアクセスしてもよい。
フラッシュ変換レイヤ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名前空間に保存することを要求する。
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符号化/復号化を実行し得る。
データ記憶デバイス102内のKVデータベースの取得コマンドは、値が開始から完全にある点まで読み出され、インデックスに基づいて読み出されないことを必要とする。本明細書に記載の方法は、KVデータベース取得コマンドの固有の構造を使用して、データ記憶デバイス102のより良好な性能、待ち時間、電力消費、及び訂正能力を提供する。
より長いECCは、短いECCよりも良好に機能し、復号失敗が少なくなる。例えば、図2は、X4メモリダイについての様々なECC長の一例を示すグラフ200である。グラフ200のy軸202は、凡例206によって定義される各コード長のブロックエラー率(BLER)を提供する。グラフ200のx軸204は、凡例206によって定義される各コード長のビットエラー率(BER)を提供する。見られるように、より長いECCは、より短いECCよりも大きい訂正能力を有する。
図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を含む。
いくつかの例では、パリティは、各サブコード間で均一に分布される。例えば、第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に割り当てられて、それらの訂正性を高める。
図4は、本開示の様々な態様による、非対称パリティ割り当てプロセス400(すなわち、非対称ECC符号化/復号化)を示すフローチャートである。図4は、図1のコントローラ120に関して説明される。
図4に示されるように、非対称パリティ割り当てプロセス400は、(ブロック402において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセス400は、コントローラ120が、(ブロック404において)サブコードブロック302などのサブコードブロックにデータを分離することを含む。
非対称パリティ割り当てプロセス400は、コントローラ120が、パリティビットをサブコードブロック間に非対称に挿入することを含む。例えば、第1のパリティブロック306Aは第1のサブコード302Aに追加され(すなわち、割り当てられ)、第2のパリティブロック306Bは第2のサブコード302Bに追加され、最終パリティブロック306Nは最終サブコード302Nに追加される。いくつかの例では、グローバルパリティブロック308は、データに追加される。
非対称パリティ割り当てプロセス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全体が復号される。
非対称パリティ割り当てはまた、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は最も少ないパリティを受け取る。
図6は、本開示の様々な態様による、非対称パリティ割り当てプロセス600(すなわち、SC-LDPC非対称ECC符号化/復号化)を示すフローチャートである。図6は、図1のコントローラ120に関して説明される。
図6に示されるように、非対称パリティ割り当てプロセス600は、(ブロック602において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセスは、コントローラ120が、(ブロック604において)複数のタイル502などの空間タイルにデータを分離することを含む。
非対称パリティ割り当てプロセス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を順次復号することを含む。いくつかの例では、タイルは、スライディングウィンドウプロセスで復号される。
図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に書き込まれる。
図8は、本開示の様々な態様による、非対称パリティ割り当てプロセス800を示すフローチャートである。図8は、図1のコントローラ120に関して説明される。
図8に示されるように、非対称パリティ割り当てプロセス800は、(ブロック802において)メモリ104に記憶されるデータを受信するコントローラ120を含む。データは、例えば、ユーザデータ132であり得る。非対称パリティ割り当てプロセスは、コントローラ120が、(ブロック804において)複数のタイル702などの空間タイルにデータを分離することを含む。
非対称パリティ割り当てプロセス800は、(ブロック806において)コントローラ120が、複数の空間タイル702の各々にパリティビットを非対称に割り当てることを含む。非対称パリティ割り当てプロセス800は、(ブロック808において)コントローラ120が、第1の空間タイル(すなわち、第1のタイル702A)をメモリ104に書き込むことを含む。非対称パリティ割り当てプロセス800は、(ブロック810において)コントローラ120が、最後の空間タイル(すなわち、第4のタイル702D)をメモリ104に書き込むことを含む。上述のように、SC-LDPCパリティ検査行列構造500、700内の最初及び最後の空間タイルは、本質的により多くのパリティを有する。最初の空間タイルの直後に最後の空間タイルを記憶することにより、記憶されたメモリブロックの開始時により多くのパリティが割り当てられる。
非対称パリティ割り当てプロセス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に書き込まれた順序に復号することを含む。いくつかの例では、タイルは、スライディングウィンドウプロセスで復号される。
本明細書に説明されるプロセス、システム、方法、ヒューリスティックなどに関して、かかるプロセスのステップは、特定の順序付けられたシーケンスに従って発生するものとして説明されているが、かかるプロセスは、本明細書に説明される順序以外の順序で実行されると説明されたステップを用いて実施され得ることを理解されたい。更に、特定のステップが同時に実行されてもよく、他のステップが追加されてもよく、又は本明細書に説明される特定のステップを省略することができることを理解されたい。すなわち、本明細書のプロセスの説明は、特定の実施形態を例示する目的で提供され、特許請求の範囲を限定するものと解釈されるべきではない。
したがって、上の説明は例示的であり、限定的ではないことが意図されることを理解されたい。提供される実施例以外の多くの実施形態及び用途は、上の説明を読むことで明らかとなるであろう。範囲は、上の説明を参照して決定されるべきではなく、その代わりに、添付の特許請求の範囲を参照して、かかる特許請求の範囲が権利を与えられる等価物の全範囲とともに決定されるべきである。将来の開発が本明細書で考察される技術において生じ、開示されたシステム及び方法がそのような将来の実施形態に組み込まれることが予想及び意図されている。要約すると、用途は、修正及び変形が可能であることを理解されたい。
特許請求の範囲で使用される全ての用語は、本明細書でなされる反対の明示的な指示がない限り、本明細書に説明される技術において知識豊富な者によって理解されるような、最も広い合理的な構造及びそれらの通常の意味が与えられることを意図している。具体的には、「a」、「the」、「said」などのような単数形冠詞の使用は、請求項の反対の明示的な限定を列挙しない限り、示された要素のうちの1つ以上を列挙するために読み取られるべきである。
要約書は、読者が技術的開示の性質を迅速に確認することができるように提供される。請求項の範囲又は意味を解釈又は限定するために使用されないことが理解されよう。加えて、上述の[発明を実施するための形態]において、様々な機能が、本開示を合理化する目的で様々な実施形態において一緒にグループ化されていることが分かり得る。本開示の方法は、請求される実施形態が各請求項に明示的に列挙されているよりも多くの機能を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映されるように、本発明の主題は、開示される単一の実施形態の全ての機能よりも少ないことにある。したがって、以下の特許請求の範囲は、「発明を実施するための形態」に組み込まれ、各特許請求の範囲は、個別に請求される主題として独立している。

Claims (16)

  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に記載のメモリデバイス。
JP2022083493A 2021-11-22 2022-05-23 キー値データ記憶デバイスのためのeccパリティ偏り Active JP7407230B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/531,975 2021-11-22
US17/531,975 US11934264B2 (en) 2021-11-22 2021-11-22 ECC parity biasing for Key-Value data storage devices

Publications (2)

Publication Number Publication Date
JP2023076370A JP2023076370A (ja) 2023-06-01
JP7407230B2 true JP7407230B2 (ja) 2023-12-28

Family

ID=86349390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022083493A Active JP7407230B2 (ja) 2021-11-22 2022-05-23 キー値データ記憶デバイスのためのeccパリティ偏り

Country Status (4)

Country Link
US (1) US11934264B2 (ja)
JP (1) JP7407230B2 (ja)
KR (1) KR20230075334A (ja)
CN (1) CN116149900A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230418491A1 (en) * 2022-06-22 2023-12-28 Micron Technology, Inc. Memory block utilization in memory systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170255519A1 (en) 2016-03-04 2017-09-07 Sandisk Technologies Llc Erasure correcting coding using data subsets and partial parity symbols
US20170344284A1 (en) 2016-05-24 2017-11-30 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0935363A4 (en) * 1997-06-19 2005-09-07 Toshiba Kk TRANSMISSION SYSTEM WITH INFORMATION MULTIPLEXING, MULTIPLEXER AND DEMULTIPLEXER USED FOR THE SAME, AND ENCODER AND DECODER FOR ERROR CORRECTION
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
EP1678629B1 (en) 2003-10-07 2010-12-08 Nokia Corporation Extensible framework for handling different mark up language parsers and generators in a computing device
US20070271493A1 (en) * 2006-05-16 2007-11-22 Samsung Electronics Co., Ltd. Unequal error protection method and apparatus using the same
KR20100104840A (ko) * 2009-03-19 2010-09-29 삼성전자주식회사 셀 패턴에 따라 추가 ecc가 가능한 반도체 메모리 장치,상기 장치를 포함하는 전자 시스템
US8948272B2 (en) * 2012-12-03 2015-02-03 Digital PowerRadio, LLC Joint source-channel decoding with source sequence augmentation
US10846174B2 (en) 2016-06-30 2020-11-24 Samsung Electronics Co., Ltd. Method of recovering data and memory system and raid storage system using the same
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
JP2019008730A (ja) 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
US20200042223A1 (en) 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US11182101B2 (en) 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
US10871910B1 (en) 2019-09-27 2020-12-22 Western Digital Technologies, Inc. Non-volatile memory with selective interleaved coding based on block reliability
US11733919B2 (en) * 2019-10-14 2023-08-22 Samsung Electronics Co., Ltd. Method and system for offloading lookup operation to NAND offload apparatus
US11281981B2 (en) 2019-12-09 2022-03-22 Western Digital Technologies, Inc. Storage system and sorting-based method for random read command prediction in a multi-queue system
KR20210092361A (ko) * 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US20220179593A1 (en) 2020-10-02 2022-06-09 Western Digital Technologies, Inc. DRAM-Less SSD With Secure HMB For Low Latency
US11366749B2 (en) * 2020-11-10 2022-06-21 Western Digital Technologies, Inc. Storage system and method for performing random read
US11989461B2 (en) 2020-11-16 2024-05-21 Dell Products L.P. Preventing unauthorized access to non-volatile memory (NVM) subsystem namespaces
US11340986B1 (en) 2020-12-08 2022-05-24 Western Digital Technologies, Inc. Host-assisted storage device error correction
US20220359033A1 (en) * 2021-05-04 2022-11-10 Micron Technology, Inc. Health scan for content addressable memory
US11768807B2 (en) 2021-10-28 2023-09-26 EMC IP Holding Company LLC Destination namespace and file copying

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170255519A1 (en) 2016-03-04 2017-09-07 Sandisk Technologies Llc Erasure correcting coding using data subsets and partial parity symbols
US20170344284A1 (en) 2016-05-24 2017-11-30 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring

Also Published As

Publication number Publication date
US11934264B2 (en) 2024-03-19
JP2023076370A (ja) 2023-06-01
KR20230075334A (ko) 2023-05-31
US20230161666A1 (en) 2023-05-25
CN116149900A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
US10275361B2 (en) Managing multiple namespaces in a non-volatile memory (NVM)
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
KR20210039871A (ko) 메타 데이터를 관리하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작방법
KR101491943B1 (ko) 트랜잭션 로그 복구
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
TWI768763B (zh) 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器
JP2012515955A (ja) 固体メモリフォーマッティング
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
CN114764396A (zh) 数据存储装置及其操作方法
US9146861B2 (en) Memory address management method, memory controller and memory storage device
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
CN112599170A (zh) 用于在存储器***中提供多流操作的设备和方法
CN113515469A (zh) 创建、删除命名空间的方法与存储设备
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
CN107562639B (zh) 擦除块读请求处理方法与装置
CN116136739A (zh) 用于改善存储装置的数据输入/输出性能的设备和方法
CN107562654B (zh) Io命令处理方法与装置
CN115390747A (zh) 存储设备及其操作方法
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
CN107239224B (zh) 数据保护方法、存储器控制电路单元与存储器存储装置
US11762735B2 (en) Interleaved ECC coding for key-value data storage devices
US20240134747A1 (en) Apparatus and method for distributing and storing write data in plural memory regions
US20240118809A1 (en) Apparatus and method for sharing data between a host and a memory system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220530

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20220628

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230919

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231218

R150 Certificate of patent or registration of utility model

Ref document number: 7407230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150