CN117957521A - 用于大码字的rain保护的冗余元数据方案 - Google Patents
用于大码字的rain保护的冗余元数据方案 Download PDFInfo
- Publication number
- CN117957521A CN117957521A CN202280062184.7A CN202280062184A CN117957521A CN 117957521 A CN117957521 A CN 117957521A CN 202280062184 A CN202280062184 A CN 202280062184A CN 117957521 A CN117957521 A CN 117957521A
- Authority
- CN
- China
- Prior art keywords
- memory
- metadata
- data
- memory subsystem
- redundant
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 344
- 238000012545 processing Methods 0.000 claims description 63
- 238000000034 method Methods 0.000 claims description 43
- 230000004044 response Effects 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 19
- 238000011084 recovery Methods 0.000 claims description 10
- 230000001172 regenerating effect Effects 0.000 claims 4
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
将多个码字编程到存储器子系统的一或多个存储器页。所述存储器子系统的每一存储器页与所述存储器子系统的多个逻辑单元中的逻辑单元和所述存储器子系统的多个平面中的平面或所述存储器子系统的多个块中的块中的至少一个相关联。所述多个码字中的每一码字包括主机数据和基础奇偶校验位。将多个额外奇偶校验位编程到所述存储器子系统的所述一或多个存储器页,其中所述多个额外奇偶校验位中的每一额外奇偶校验位与多个标准码字中的码字相关联。产生与所述额外奇偶校验位中的每一个相对应的第一冗余元数据集。将所述第一冗余元数据集编程到存储器页,所述存储器页与存储所述额外奇偶校验位的任何存储器页分开。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及用于大码字的RAIN保护的冗余元数据方案。
背景技术
存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
根据下文给出的详细描述和本公开的各种实施例的随附图式,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实施例的包含存储器子系统的示例计算系统。
图2是根据本公开的一些实施例的用于产生用于多平面LUN集的冗余元数据的流程图。
图3是根据本公开的一些实施例的用于将冗余元数据存储于LUN集中的示例配置的图示。
图4是根据本公开的一些实施例的用于将冗余元数据存储于LUN集中的示例配置的另一图示。
图5是根据本公开的一些实施例的使用冗余元数据恢复数据的流程图。
图6是其中可操作本公开的实施例的示例计算机系统的框图。
具体实施方式
本公开的方面针对于用于大码字的RAIN保护的冗余元数据方案。存储器子系统可以为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用存储器子系统,所述存储器子系统包含一或多个组件,例如存储数据的存储器装置。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
存储器子系统可利用一或多个存储器装置(包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合)来存储由主机系统提供的数据。在一些实施例中,非易失性存储器装置可由与非(NAND)类型快闪存储器装置提供。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每个裸片可以包含一或多个平面。平面为包含多个存储器单元的存储器装置的部分。一些存储器装置可包含两个或更多个平面。对于一些类型的非易失性存储器装置(例如,NAND装置),每个平面包含物理块集。每一块包含页集。“块”在本文中将指代邻接或非邻接的存储器页的集。“块”的实例是“可擦除块”,其为存储器的最小可擦除单位,而“页”是存储器的最小可写入单位。每一页包含存储器单元集。存储器单元是存储信息的电子电路。
如上文所描述,裸片可以含有一或多个平面。存储器子系统可以使用分带方案以在执行数据操作(例如,写入、读取、擦除等)时将数据的各种集合当做单元。裸片条带指代在写入、读取或擦除数据时被当做一个单元的平面的集合。存储器装置的控制器(即,存储器子系统控制器、存储器装置控制器等)可以在裸片条带的每个平面处执行相同操作、可以并行地执行相同操作。块条带是被当做单元的块的集合,至少一个来自裸片条带的每个平面。块条带中的块可以在每个相应的平面处与相同的块识别符(例如,块编号)相关联。页条带是跨越块条带具有相同的页识别符(例如,相同的页编号)的页集,且被当作单元。
主机系统可以发起存储器子系统上的存储器存取操作(例如,编程或写入操作、读取操作、擦除操作等)。举例来说,主机系统可以将请求发射到存储器子系统控制器,以将数据编程到存储器子系统的存储器装置和/或从存储器子系统的存储器装置读取数据。此类数据在本文中被称作“主机数据”。存储器子系统控制器可以执行一或多个操作以根据请求存取主机数据。主机数据可使用错误校正码(ECC))编码以校正可在传输或存储期间出现的数据错误。特定来说,主机数据可使用冗余元数据(例如,奇偶校验数据,例如一或多个奇偶校验位)编码以形成码字。奇偶校验数据允许存储器子系统控制器检测可在主机数据中的任何位置出现的错误的数目,且通常在无需重新传输下校正这些错误。
速率自适应ECC是可保护具有多个层面的奇偶校验数据的主机数据的错误校正码。每一层面是可编码和可解码的,且每一层面用作具有不同码率的ECC。第一层面ECC奇偶校验是第二层面ECC奇偶校验的子集,第一层面奇偶校验和第二层面奇偶校验是第三层面奇偶校验的子集,以此类推。举例来说,第一层面ECC奇偶校验可被称为包含主机数据和第一奇偶校验(在下文为“基础奇偶校验”)的标准码字,第二层面ECC奇偶校验可被称为包含标准码字和第二奇偶校验(下文为“额外奇偶校验”)的大码字,以此类推。随着层面数目增加,奇偶校验大小增加,码率降低,且ECC保护变得更强。第一层面奇偶校验可用于校正归因于相对小的粒度失败引起的错误,第二层面奇偶校验可用于校正较大粒度失败,以此类推。在数据损坏的一些情况下,仅需要传输用于更高层面ECC的额外奇偶校验来恢复数据,因此节约信道带宽。
在一些系统中,大码字(第二层面ECC奇偶校验)可在多个页之间拆分。特定来说,标准码字可编程到页的四分之一,因此四个标准码字装在单个存储器页中。举例来说,对于4KB码字和16KB页,存储器子系统控制器可每存储器页存储四个码字。每一大码字的额外奇偶校验可存储于不同页或平面中。取决于工作负载、系统性能和/或功率需求,当标准ECC未能解码时,或在读取标准码字的同时,可读取额外奇偶校验。
由于在存储器装置的存储器单元处反复存取数据,因此存储器单元可能劣化并且最终变为有缺陷的。举例来说,当主机系统针对存储在存储器装置处的主机数据起始过多存储器存取操作时,存储主机数据的存储器单元以及存储器装置处的邻近存储器单元可能变得受损坏。在一些情况下,由存储器子系统控制器执行的存取存储器装置的平面的一或多个存储器页处的数据的存储器存取操作(例如,读取操作等等)可能失败。这类失败在本文中被称作存储器存取失败。
存储器子系统可支持冗余机构以保护主机数据免于存储器存取失败。举例来说,对于NAND类型快闪装置,存储器子系统可以实施独立NAND冗余阵列(RAIN)操作以为存储在存储器子系统上的数据提供冗余。当从主机系统接收到待编程到存储器子系统的存储器装置的主机数据时,存储器子系统控制器可以基于针对过接收到的主机数据的一或多个“异或”(XOR)操作产生冗余元数据并且可以在存储器装置的存储主机数据的部分失败的情况下使用所述冗余元数据来重构或重新计算主机数据。作为实例,存储器子系统控制器可基于应用于存储于存储器子系统的一或多个逻辑单元(LUN)(例如页、块)的特定数目个数据位置处的主机数据的XOR操作而产生一或多个RAIN标准码字(冗余元数据)。如果存储器装置的存储主机数据的部分失败并且对应的数据丢失或损坏,那么存储器子系统控制器可以基于其余的主机数据和冗余元数据之中的XOR操作来重构丢失/损坏的数据。
对于标准码字,现有RAIN方案允许存储器子系统保护主机数据免于存储器存取失败。然而,大码字可在多个平面之间拆分。目前,不存在能够在存储额外奇偶校验的页或平面经历失败的情况下恢复所述额外奇偶校验的方案。
本公开的方面通过提供用于大码字的RAIN保护的冗余元数据方案来解决以上和其它缺陷。特定来说,可预留存储器子系统处的存储器的一部分来存储针对存储于存储器子系统处的存储器的其它部分处的主机数据产生的不同类型的冗余元数据。存储器的预留部分可对应于一或多个指定存储器装置,所述指定存储器装置被配置成存储针对存储于存储器子系统的其它存储器装置处的主机数据产生的冗余元数据。举例来说,存储器子系统可以包含跨越存储器子系统的被指定用于存储主机数据的多个存储器装置的多个条带。存储器子系统的存储器装置中的一或多个可被指定为存储与驻留于与跨多个存储器装置的每一条带相关联的LUN处的主机数据相关联的不同类型的冗余元数据。冗余元数据可包含额外奇偶校验数据、RAIN冗余元数据和LUN冗余元数据。LUN冗余元数据可用以恢复存储于存储器装置上的每一大码字的额外奇偶校验数据。存储器子系统控制器可基于具有额外奇偶校验数据的一或多个XOR操作产生LUN冗余元数据。举例来说,存储器子系统控制器可通过将一或多个XOR操作应用于存储于每一LUN上的额外奇偶校验位中的每一个来产生LUN奇偶校验码字。
在一些情况下,存储器装置的相异部分(例如,平面)可被指定为存储特定类型的冗余元数据。在主机数据编程到LUN时,存储器子系统控制器可产生用于相应条带的额外奇偶校验数据并且可将所产生的额外奇偶校验数据存储于一或多个存储器装置的指定部分处。此外,存储器子系统控制器可产生RAIN冗余元数据和LUN冗余元数据并将其存储于一或多个存储器装置的其它指定部分处。在一个实施例中,额外奇偶校验数据和LUN冗余元数据可存储于不同指定部分处。通过将与存储器子系统的每一条带相关联的不同类型的冗余元数据存储于一或多个指定存储器装置的相异部分处,存储器子系统控制器可在多个存储器装置中的一或多个处的存储器存取失败之后恢复驻留于与存储器子系统的多个条带相关联的相应LUN处的主机数据。举例来说,存储器子系统控制器可检测在存储器子系统的部分处(例如,在存储器页处)执行的存储器存取操作(例如,读取操作等等)期间已发生失败。响应于检测到存储器存取操作失败,存储器子系统控制器可确定存储器页是否含有1)仅主机数据,2)主机数据和额外奇偶校验数据,3)主机数据、额外奇偶校验数据和RAIN冗余元数据(例如,RAIN奇偶校验码字),或4)RAIN冗余元数据和LUN冗余元数据(例如,奇偶校验码字)。主机数据可编码有基础奇偶校验数据。响应于确定存储器页仅含有主机数据,存储器子系统控制器可使用RAIN奇偶校验元数据和编程到存储器装置的其它部分的剩余主机数据上的一系列XOR操作来恢复存储器页上的主机数据。响应于确定存储器页含有主机数据和额外奇偶校验数据,存储器子系统控制器可使用RAIN奇偶校验元数据和剩余主机数据上的XOR操作来恢复存储器页上的主机数据,并且使用LUN奇偶校验数据和编程到存储器装置的其它部分的剩余额外奇偶校验数据来恢复额外奇偶校验数据。替代地,在一些实施例中,响应于存储器子系统控制器未能使用基础奇偶校验数据恢复主机数据,存储器子系统控制器可使用额外奇偶校验数据以使用额外奇偶校验数据和一系列XOR操作恢复主机数据。响应于确定存储器页含有主机数据、额外奇偶校验数据和RAIN奇偶校验元数据,存储器子系统控制器可使用上文所论述的方法恢复主机数据和额外奇偶校验元数据,并且使用主机数据重新产生RAIN奇偶校验元数据。响应于确定存储器页含有RAIN奇偶校验数据和LUN奇偶校验数据,存储器子系统控制器可使用主机数据和额外奇偶校验数据重新产生RAIN奇偶校验元数据和LUN奇偶校验数据。通过将RAIN奇偶校验数据、LUN奇偶校验数据和额外奇偶校验数据存储于不同存储器装置上的特定位置处,存储器子系统控制器可针对与存储器装置的任何失败部分相关联的数据项执行数据恢复过程。数据项指代写入到存储器子系统的LUN和/或从存储器子系统的LUN读取的数据的原子单元。举例来说,数据项可以对应于数据块或对应于键值对。响应于恢复数据项,数据项可编程到相同或不同存储器页。在一些实施例中,LUN奇偶校验数据和/或RAIN奇偶校验数据可使用第二层面ECC奇偶校验进行编码。
在包含四个LUN的实施例中,每一LUN横跨6个平面(例如,24个存储器页),LUN奇偶校验数据和RAIN奇偶校验数据可存储于存储器页中的五个上。因此,本公开的优点包含但不限于提供主机数据恢复方案,其使得能够恢复使用第二层面ECC奇偶校验元数据编码的主机数据,同时使可用以存储主机数据的存储器空间的量达到最大。通过使用第二层面ECC奇偶校验编码主机数据,存储器子系统控制器可检测和校正主机数据中的错误。另外,RAIN冗余元数据和LUN冗余元数据可在存储器存取失败之后恢复存储器子系统的一或多个存储器装置的LUN处的数据项。因此,可在存储器装置失败情况下保护大码字,同时存储器子系统有显著的空间量可用以存储主机数据。因此,为主机数据提供强ECC保护,同时使显著量的系统资源可用于其它过程,这提高总体系统效率并降低总体系统时延。
图1说明根据本公开的一些实施例的包含存储器子系统110的示例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的组合。存储装置的实例包含固态硬盘(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中所包含的嵌入式计算机),或包含存储器和处理装置的此计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与……耦合”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如不具有中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用例如存储器子系统110将数据写入到存储器子系统110并从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时,主机系统120可另外利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元(例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC))可每单元存储多个位。在一些实施例中,每一存储器装置130可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC、PLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分、MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
虽然描述了非易失性存储器组件,例如3D交叉点非易失性存储器单元阵列和NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器或电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。
存储器子系统控制器115可包含处理装置,其包含被配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是替代地可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
通常,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令来实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(如,逻辑块地址(LBA)、名称空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可以包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110为受管理存储器装置,其为具有在裸片上的控制逻辑(例如,本地控制器132)和用于同一存储器装置封装内的存储器管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含冗余元数据管理器组件113,其可以管理针对存储在存储器装置130、140的一或多个部分处的主机数据产生的冗余数据。在一些实施例中,存储器子系统控制器115包含冗余元数据管理器组件113的至少一部分。举例来说,存储器子系统控制器115可包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,冗余元数据管理器组件113是主机系统120、应用程序或操作系统的部分。
冗余元数据管理器组件113可被配置成针对用户数据和/或针对两个或更多个逻辑存储器单元(LUN)处的存储器页的群组产生冗余元数据。LUN可为跨多个平面、块和/或裸片的存储器页的群组。LUN可表示可在单个操作中写入或擦除的存储器装置的个别片段。冗余元数据指代针对经编程到可以由存储器子系统控制器115使用以在存储器装置130、140的部分处的失败的存储器存取操作(例如,写入操作、读取操作等)之后恢复数据项的存储器装置130、140的部分的数据项产生的元数据(例如,奇偶校验数据)。在一些实施例中,冗余元数据管理器组件113(在本文中也被称作组件113)可以计算或重构失败的数据项,方法是基于用于数据项以及存储在存储器装置130、140(或存储器子系统110的另一存储器装置130、140)处的一或多个其它数据项的冗余元数据执行数据恢复操作(例如,一或多个“异或”(XOR)操作)。
组件113可基于存储数据的预定位置(例如,跨LUN的多个平面的主机数据的条带、每一平面和/或LUN中的每一存储器页内的数据的位置(存储器页的第一四分之一页、存储器页的第二四分之一页,以此类推),等等)或存储数据(例如,标准码字、额外奇偶校验数据等等)的类型,产生不同类型的冗余元数据。在一些实施例中,冗余元数据可包含第一层面ECC奇偶校验数据(例如,基础奇偶校验数据)、第二层面ECC奇偶校验数据(例如,额外奇偶校验数据)、RAIN奇偶校验元数据和LUN冗余元数据。RAIN奇偶校验元数据可用以恢复主机数据(例如,标准码字)。LUN冗余元数据可用以恢复用于所存储的主机数据的额外奇偶校验数据。
图2是根据本公开的一些实施例的用于产生用于多平面LUN集的冗余元数据的示例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的冗余元数据管理器组件113执行。在其它或类似实施例中,方法200的一或多个操作是通过存储器子系统控制器115的另一组件或通过本地媒体控制器135的组件来执行的。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理程序的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在框210处,处理逻辑接收将编程到一或多个存储器装置上的写入数据。在一些实施例中,可从主机系统120接收写入数据。在一些实施例中,写入数据可包含大码字集。每一大码字可包括包含主机数据和基础奇偶校验(第一层面ECC奇偶校验)的标准码字,以及额外奇偶校验奇偶校验第二层面ECC奇偶校验)。
在其它实施例中,写入数据包含未编码主机数据。响应于接收到未编码主机数据,处理逻辑可使用主机数据和奇偶校验数据产生大码字。特定来说,处理逻辑首先通过基于针对所接收的主机数据的一或多个XOR操作产生基础奇偶校验数据,产生标准码字。作为说明性实例,每一标准码字可为4KB大小且可编程到四分之一大小的页。然而,应注意,本公开的实施例可以与任何大小的页一起使用。处理逻辑接着通过基于针对标准码字的一或多个XOR操作产生额外奇偶校验数据,产生大码字。基础奇偶校验数据可用以在主机数据变得受损坏的情况下重构或重新计算对应主机数据。在未能读取具有较强校正能力的标准码字的情况下,额外奇偶校验数据与基础奇偶校验数据组合可用以重构或重新计算对应标准码字。
在一些实施例中,可使用第二层面ECC奇偶校验编码额外奇偶校验数据。举例来说,基于额外奇偶校验数据产生的每一标准码字可经编码以产生大码字。用于每一大码字的额外奇偶校验数据可编程到指定区段,将关于图3更详细地描述。在一些实施例中,仅特定额外奇偶校验数据可编码有第二层面ECC奇偶校验。举例来说,可使用第二层面ECC奇偶校验来编码与存储于不同于存储额外奇偶校验数据的那些平面的平面上的基于主机数据的标准码字相对应的额外奇偶校验数据,而与存储于与存储额外奇偶校验数据的平面相同的平面上的基于主机数据的标准码字相对应的额外奇偶校验数据与同一平面中的第二层面ECC码字相关。在其中不同平面存储对应额外奇偶校验数据下存储标准码字的平面失败的情况下,额外奇偶校验数据可增强(例如,加速)失败标准码字的恢复。然而,在存储标准码字以及对应的额外奇偶校验数据的平面失败的情况下,额外奇偶校验的第二层面ECC奇偶校验并非必要的,这是因为使用其它恢复方法恢复标准码字和其对应额外奇偶校验数据。
在框212处,处理逻辑将大码字编程到一或多个存储器装置的一或多个LUN。特定来说,每一LUN可对应于跨存储器子系统110的存储器装置130、140处的多个平面、块和/或裸片的存储器页的条带。作为说明性实例,将在下文论述横跨多个平面的存储器页的多个LUN。在每一LUN中,存储器页的某些区段可经指定用于存储特定类型的数据(例如,用户数据、经编码数据、不同类型的冗余数据(额外奇偶校验数据、RAIN奇偶校验元数据、LUN奇偶校验元数据等等))。对于每一大码字,对应标准码字可编程到经指定用于标准码字的LUN的可用页,且每一强码字的额外奇偶校验可编程到对应LUN的指定区段(例如,指定四分之一页)。将关于图3更详细地描述指定区段。
在框214处,处理逻辑产生LUN冗余元数据并将其编程到一或多个存储器装置。LUN冗余元数据可用以恢复一或多个大码字的额外奇偶校验数据(例如,额外奇偶校验)。在一些实施例中,处理逻辑可基于针对额外奇偶校验数据的一或多个XOR操作产生LUN冗余元数据。举例来说,处理逻辑可将一或多个XOR操作应用于存储在每一LUN上的额外奇偶校验位中的每一个。LUN冗余元数据可编程到指定LUN的指定区段,将关于图3更详细地描述。如果存储器装置的存储额外奇偶校验数据的部分失败且对应数据丢失或损坏,那么处理逻辑可基于在剩余的额外奇偶校验数据和LUN冗余元数据当中的一或多个XOR操作,重构丢失/损坏的数据。
在框216处,处理逻辑产生RAIN冗余元数据并将其编程到一或多个存储器装置。特定来说,处理逻辑可通过基于存储于每一存储器页的特定区段处的数据项(例如,标准码字)执行冗余元数据产生操作(例如,“异或”(XOR)操作),产生第一组RAIN冗余元数据(例如,第一RAIN码字)。举例来说,处理逻辑可通过基于存储于每一存储器页的第一四分之一页处的标准码字执行XOR操作,产生第一RAIN码字。处理逻辑接着可通过基于存储于每一存储器页的第二四分之一页处的标准码字执行XOR操作,产生第二RAIN码字。处理逻辑接着可通过基于存储于每一存储器页的第三四分之一页处的标准码字执行XOR操作,产生第三RAIN码字。处理逻辑接着可通过基于存储于每一存储器页的第四四分之一页处的标准码字执行XOR操作,产生第四RAIN码字。每一RAIN码字可编程到指定LUN的指定区段,将关于图3更详细地进行描述。
在一些实施例中,可使用第二层面ECC奇偶校验进一步编码每一RAIN码字。举例来说,处理逻辑可对构成RAIN条带的主机数据的额外奇偶校验数据执行一或多个XOR操作以产生用于每一RAIN码字的额外奇偶校验元数据(下文为“额外RAIN奇偶校验”)。额外RAIN奇偶校验数据可编程到指定LUN的指定区段,将关于图3更详细地进行描述。
图3描绘根据本公开的一些实施例的用于将冗余元数据存储于LUN集中的示例配置的图示。如所说明,LUN 312A-D横跨平面314A-F,其可对应于关于图1描述的一或多个存储器装置130、140。应注意,虽然图3描绘六个平面(其可连接到存储器子系统控制器115(未示出)),但本公开的实施例可针对于连接到任何数目个存储器子系统控制器(例如,一个存储器子系统控制器115、两个存储器子系统控制器115等等)的任何数目个平面、块和/或裸片。
如图3中所说明,每一LUN 312A-D包含横跨六个平面(例如,平面314A-F)的六个存储器页(每一存储器页分裂成四个四分之一页)的条带。每一标准码字可存储到四分之一页。如所说明,对于LUN 312A-C,二十六个四分之一页中的前二十五个被配置成存储标准码字。对于LUN 312D,二十六个四分之一页中的前二十个被配置成存储标准码字。LUN 312A-C中的每一个的最后一个四分之一页被配置成存储用于存储于每一相应LUN中的标准码字的额外奇偶校验数据。举例来说,四分之一页322可被配置成存储用于存储于LUN 312A上的二十三个标准码字的额外奇偶校验元数据,四分之一页324可被配置成存储用于存储于LUN312B上的二十三个标准码字的额外奇偶校验数据,且四分之一页326可被配置成存储用于存储于LUN 312C上的二十三个标准码字的额外奇偶校验数据。关于LUN 312D,LUN 312D的平面314E的第三四分之一页(例如,四分之一页328)可被配置成存储用于存储于LUN 312D上的十八个标准码字的额外奇偶校验数据。
RAIN奇偶校验码字332、334、336、338中的每一个可存储于LUN 312D上。特定来说,LUN 312D的平面314F的第一四分之一页可被配置成存储针对存储于每一存储器页的第一四分之一页处的标准码字产生的RAIN奇偶校验码字332,LUN 312D的平面314F的第二四分之一页可被配置成存储针对存储于每一存储器页的第二四分之一页处的标准码字产生的RAIN奇偶校验码字334,LUN 312D的平面314F的第三四分之一页可被配置成存储针对存储于每一存储器页的第三四分之一页处的标准码字产生的RAIN奇偶校验码字336,且LUN312D的平面314E的第四四分之一页可被配置成存储针对存储于每一存储器页的第四四分之一页处的标准码字产生的RAIN奇偶校验码字338。
LUN冗余元数据342可存储于LUN 312D的平面314F上。特定来说,LUN 312D的最后一个四分之一页的一部分可存储LUN冗余元数据342。另外,LUN 312D的平面314F上的最后一个四分之一页的另一部分可被配置成存储针对每一RAIN码字(例如,额外RAIN奇偶校验)产生的第二层面ECC奇偶校验数据344。如将关于图5更详细地解释,通过编程不同类型的冗余元数据(例如,独立于额外奇偶校验元数据的存储器页上的LUN奇偶校验数据),存储器子系统控制器可在多个存储器装置中的一或多个处的存储器存取失败之后,恢复驻留于与存储器子系统的多个条带相关联的相应LUN处的主机数据。
图4描绘根据本公开的一些实施例的用于将冗余元数据存储于LUN集中的示例配置的另一图示。如所说明,LUN 412A-D横跨平面414A-F,其可对应于关于图1描述的一或多个存储器装置130、140。应注意,虽然图4描绘六个平面(其可连接到存储器子系统控制器115(未示出)),但本公开的实施例可针对于连接到任何数目个存储器子系统控制器(例如,一个存储器子系统控制器115、两个存储器子系统控制器115等等)的任何数目个平面、块和/或裸片。如所说明,冗余元数据存储于LUN 412D的前两个平面(例如,平面414A-B)中,而非如图3中所说明的最后两个平面中。特定来说,四分之一页422可被配置成存储用于存储于LUN 412A上的二十三个标准码字的额外奇偶校验元数据,四分之一页424可被配置成存储用于存储于LUN 412B上的二十三个标准码字的额外奇偶校验数据,且四分之一页426可被配置成存储用于存储于LUN 412C上的二十三个标准码字的额外奇偶校验数据。关于LUN412D,LUN 412D的平面414B的第二四分之一页(例如,四分之一页428)可被配置成存储用于存储于LUN 412D上的十八个标准码字的额外奇偶校验数据。RAIN奇偶校验码字432、434、436、438中的每一个可存储于LUN 412D的前两个平面(例如,平面414A-B)上。用于每一RAIN码字的LUN冗余元数据442和第二层面ECC奇偶校验数据444可存储于LUN 412D的平面414A上。图4展示可使用不同配置存储冗余元数据,且在存储器页、平面或块失败的情况下,可使用剩余数据项恢复数据项中的任一个。特定来说,通过将RAIN奇偶校验数据、LUN奇偶校验数据和额外奇偶校验数据存储于不同存储器装置上的特定位置处,存储器子系统控制器可针对与存储器装置的任何失败部分相关联的数据项执行数据恢复过程。
图5是根据本公开的一些实施例的用于使用冗余元数据恢复数据的示例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500由图1的冗余元数据管理器组件113执行。在其它或类似实施例中,方法200的一或多个操作是通过存储器子系统控制器115的另一组件或通过本地媒体控制器135的组件来执行的。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理程序的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作510处,响应于处理读取请求,处理逻辑可确定发生存储器存取失败。举例来说,处理逻辑归因于缺陷、错误、数据损坏等等不能够检索所请求的数据。
在操作512处,处理逻辑确定在存储器装置的仅存储主机数据的区段(例如,存储器页)(例如,LUN 312A-C的平面314A-314E或LUN 312D的平面314A-D)上是否发生存储器存取失败。举例来说,处理逻辑可确定与读取请求相关联的物理地址是否与存储器装置的被配置成仅存储主机数据存储器页相关。响应于确定读取请求与存储器装置的仅存储主机数据的存储器页相关联,处理逻辑转到操作514。响应于确定读取请求不与存储器装置的仅存储主机数据的存储器页相关联,处理逻辑转到操作516。
在操作514处,处理逻辑仅恢复存储器页的主机数据。举例来说,处理逻辑可使用额外奇偶校验数据校正对应条带中的主机数据和/或RAIN奇偶校验码字,这是由于存储器存取失败不影响存储额外奇偶校验数据的任何页、块和/或平面。在一些实施例中,处理逻辑使用LUN(例如,LUN 312A-D)上的剩余主机数据和RAIN冗余元数据重构存储器页的主机数据。举例来说,处理逻辑可在RAIN奇偶校验数据和剩余的基于主机数据的码字(标准码字或大码字)上使用RAIN算法(例如,一系列XOR操作)以重构失败的存储器页的主机数据。具体地,存储于每一存储器页的第一四分之一页处的第一RAIN码字和剩余的标准码字可用以重构存储于失败的存储器页的第一四分之一页处的标准码字,存储于每一存储器页的第二四分之一页处的第二RAIN码字和剩余标准码字可用以重构存储于失败的存储器页的第二四分之一页处的标准码字,存储于每一存储器页的第三四分之一页处的第三RAIN码字和剩余标准码字可用以重构存储于失败的存储器页的第三四分之一页处的标准码字,且存储于每一存储器页的第四四分之一页处的第四RAIN码字和剩余标准码字可用以重构存储于失败的存储器页的第四四分之一页处的标准码字。
在操作516处,处理逻辑确定在存储用于主机数据的额外奇偶校验数据的区段上是否发生了存储器存取失败(例如,读取请求是与存储器装置的存储用于主机数据的额外奇偶校验数据的存储器页(例如LUN 312A-C的平面314F和LUN 312D的平面314E)相关联)。响应于确定在存储器装置的存储用于主机数据的额外奇偶校验数据的区段上发生了存储器存取失败,处理逻辑转到操作518。响应于确定在存储器装置的存储用于主机数据的额外奇偶校验数据的区段上未发生存储器存取失败,处理逻辑转到操作522。
在操作518处,处理逻辑处理逻辑恢复存储器页的主机数据和额外奇偶校验数据。特定来说,处理逻辑可使用RAIN奇偶校验数据和剩余主机数据上的一系列XOR操作恢复存储器页上的主机数据。处理逻辑可使用编程到与LUN相关联的其它存储器页的LUN奇偶校验数据和剩余额外奇偶校验数据来恢复额外奇偶校验数据。
在操作520处,处理逻辑确定在存储RAIN奇偶校验数据的区段(例如,LUN 312D的平面314E)上是否发生了存储器存取失败。响应于确定存储RAIN奇偶校验数据的区段上发生了存储器存取失败,处理逻辑转到操作522。响应于确定存储RAIN奇偶校验数据的区段上未发生存储器存取失败,处理逻辑结束方法500。
在操作520处,处理逻辑使用主机数据和额外奇偶校验数据重新产生RAIN奇偶校验数据和LUN奇偶校验数据。举例来说,处理逻辑可通过在主机数据(例如,标准码字)上应用一或多个XOR操作来重新产生RAIN奇偶校验码字。处理逻辑可通过在额外奇偶校验数据上应用一或多个XOR操作来重新产生LUN奇偶校验数据。
图6说明计算机系统600的示例机器,在所述计算机系统内可执行用于使得所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统600可对应于包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,执行操作系统以执行对应于图1的冗余元数据管理器组件113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明了单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行指令集(或多个指令集)以执行本文中所论述的任何一或多种方法。
示例计算机系统600包含处理装置602、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或RDRAM等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统618,其经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行用于执行本文所论述的操作和步骤的指令626。计算机系统600可另外包含用以经由网络620通信的网络接口装置608。
数据存储系统518可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任一或多种的软件。指令626还可在由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含实施对应于电压格仓边界组件(例如,图1的冗余元数据管理器组件113)的功能性的指令。虽然在示例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上储存有可用以编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参考其特定示例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本发明的实施例的更广精神和范围的情况下对本发明进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (20)
1.一种方法,其包括:
将多个码字编程到存储器子系统的一或多个存储器页,其中所述存储器子系统的每一存储器页与所述存储器子系统的多个逻辑单元中的逻辑单元和所述存储器子系统的多个平面中的平面或所述存储器子系统的多个块中的块中的至少一个相关联,其中所述多个码字中的每一码字包括主机数据和基础奇偶校验位;
将多个额外奇偶校验位编程到所述存储器子系统的所述一或多个存储器页,其中所述多个额外奇偶校验位中的每一额外奇偶校验位与所述多个码字中的相应码字相关联;
产生与所述额外奇偶校验位中的每一个相对应的第一冗余元数据集;和
将所述第一冗余元数据集编程到所述存储器子系统的存储器页,所述存储器页与存储所述多个额外奇偶校验位的任何存储器页分开。
2.根据权利要求1所述的方法,其另外包括:
产生与码字集相对应的第二冗余元数据集;和
将所述第二冗余元数据集编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
3.根据权利要求1所述的方法,其另外包括:
产生用于所述第一冗余元数据集的第二层面奇偶校验元数据;和
将所述奇偶校验元数据编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
4.根据权利要求1所述的方法,其中产生所述第一冗余元数据集包括基于所述额外奇偶校验位执行一或多个“异或”(XOR)操作。
5.根据权利要求2所述的方法,其另外包括:
产生用于所述第二冗余元数据集的奇偶校验元数据;和
将所述奇偶校验元数据编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
6.根据权利要求1所述的方法,其另外包括:
响应于接收到对存储于所述存储器子系统的存储器页处的数据项的读取请求,确定已发生读取错误;
确定经历所述读取错误的所述存储器页存储所述第一冗余元数据集;
重新产生所述第一冗余元数据集;和
将所述重新产生的冗余元数据集存储到所述存储器子系统的不同存储器页。
7.根据权利要求2所述的方法,其另外包括:
响应于接收到对存储于所述存储器子系统的存储器页处的数据项的读取请求,确定已发生读取错误;
确定经历所述读取错误的所述存储器页存储所述第二冗余元数据集;
重新产生所述第二冗余元数据集;和
将所述重新产生的冗余元数据集存储到所述存储器子系统的不同存储器页。
8.一种系统,其包括:
多个块,其各自包括一或多个存储器页,其中所述存储器页组织成多个条带,所述条带各自包括所述多个平面或所述多个块中的每一个的至少一个存储器页;和
处理装置,其耦合到所述多个平面或所述多个块中的每一个,所述处理装置执行包括以下操作的操作:
检测与存取数据项集相关联的错误,其中所述数据项集被编程到与所述多个条带中的条带相关联的相应存储器页;
确定所述数据项集是否包括一或多个码字、额外奇偶校验元数据、独立“与非”(NAND)冗余阵列(RAIN)冗余元数据或逻辑单元(LUN)冗余元数据中的至少一个;
响应于确定所述数据项集包括一或多个码字,执行第一数据恢复过程以至少部分地基于RAIN冗余元数据恢复所述一或多个码字中的每一个;
响应于确定所述数据项集包括额外奇偶校验元数据,执行第二数据恢复过程以至少部分地基于LUN冗余元数据恢复所述额外奇偶校验元数据;
响应于确定所述数据项集包括RAIN冗余元数据,执行第一数据重构过程以至少部分地基于存储于所述多个块的所述多个平面上的一或多个码字集来重新产生所述RAIN冗余元数据;和
响应于确定所述数据项集包括LUN冗余元数据,执行第二数据重构过程以至少部分地基于存储于所述多个块的所述多个平面上的额外奇偶校验元数据来重新产生所述LUN冗余元数据。
9.根据权利要求8所述的系统,其中所述RAIN冗余元数据和所述LUN冗余元数据存储于相同的存储器页上。
10.根据权利要求8所述的系统,其中所述LUN冗余元数据和所述额外奇偶校验元数据存储到所述存储器子系统控制器的不同存储器页。
11.根据权利要求8所述的系统,其中在第二恢复过程处执行包括基于存储于所述存储器子系统上的所述LUN冗余元数据和剩余额外奇偶校验元数据执行一或多个“异或”(XOR)操作。
12.根据权利要求8所述的系统,其中在所述第二数据重构过程处执行包括基于存储于所述存储器子系统上的所述额外奇偶校验元数据执行一或多个“异或”(XOR)操作。
13.根据权利要求8所述的系统,其中使用奇偶校验元数据编码所述LUN冗余元数据。
14.一种包括指令的非暂时性计算机可读存储媒体,所述指令当由处理装置执行时致使所述处理装置执行包括以下操作的操作:
将多个码字编程到存储器子系统的一或多个存储器页,其中所述存储器子系统的每一存储器页与所述存储器子系统的多个逻辑单元中的逻辑单元和所述存储器子系统的多个平面中的平面或所述存储器子系统的多个块中的块中的至少一个相关联,其中所述多个码字中的每一码字包括主机数据和基础奇偶校验位;
将多个额外奇偶校验位编程到所述存储器子系统的所述一或多个存储器页,其中所述多个额外奇偶校验位中的每一额外奇偶校验位与所述多个码字中的码字相关联;
产生与所述额外奇偶校验位中的每一个相对应的第一冗余元数据集;和
将所述第一冗余元数据集编程到所述存储器子系统的存储器页,所述存储器页与存储所述多个额外奇偶校验位的任何存储器页分开。
15.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述操作另外包括:产生与码字集相对应的第二冗余元数据集;和
将所述第二冗余元数据集编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
16.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述操作另外包括:产生用于所述第一冗余元数据集的第二层面奇偶校验元数据;和
将所述奇偶校验元数据编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
17.根据权利要求14所述的非暂时性计算机可读存储媒体,其中产生所述第一冗余元数据集包括基于所述额外奇偶校验位执行一或多个“异或”(XOR)操作。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作另外包括:产生用于所述第二冗余元数据集的奇偶校验元数据;和
将所述奇偶校验元数据编程到所述存储器子系统的存储所述第一冗余元数据集的所述存储器页。
19.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述操作另外包括:
响应于接收到对存储于所述存储器子系统的存储器页处的数据的读取请求,确定已发生读取错误;
确定经历所述读取错误的所述存储器页存储所述第一冗余元数据集;
重新产生所述第一冗余元数据集;和
将所述重新产生的冗余元数据集存储到所述存储器子系统的不同存储器页。
20.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作另外包括:
响应于接收到对存储于所述存储器子系统的存储器页处的数据项的读取请求,确定已发生读取错误;
确定经历所述读取错误的所述存储器页存储所述第二冗余元数据集;
重新产生所述第二冗余元数据集;和
将所述重新产生的冗余元数据集存储到所述存储器子系统的不同存储器页。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/477,859 | 2021-09-17 | ||
US17/477,859 US11775381B2 (en) | 2021-09-17 | 2021-09-17 | Redundancy metadata schemes for RAIN protection of large codewords |
PCT/US2022/044022 WO2023044125A1 (en) | 2021-09-17 | 2022-09-19 | Redundancy metadata schemes for rain protection of large codewords |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117957521A true CN117957521A (zh) | 2024-04-30 |
Family
ID=85573075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280062184.7A Pending CN117957521A (zh) | 2021-09-17 | 2022-09-19 | 用于大码字的rain保护的冗余元数据方案 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11775381B2 (zh) |
EP (1) | EP4402565A1 (zh) |
KR (1) | KR20240055821A (zh) |
CN (1) | CN117957521A (zh) |
WO (1) | WO2023044125A1 (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US8176405B2 (en) * | 2007-09-24 | 2012-05-08 | International Business Machines Corporation | Data integrity validation in a computing environment |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US9348696B2 (en) * | 2010-10-01 | 2016-05-24 | Pure Storage, Inc. | Distributed multi-level protection in a raid array based storage system |
US8732538B2 (en) * | 2011-03-10 | 2014-05-20 | Icform, Inc. | Programmable data storage management |
US9268637B2 (en) * | 2013-03-15 | 2016-02-23 | Silicon Space Technology Corporation | Memory circuit incorporating error detection and correction (EDAC), method of operation, and system |
US9086997B2 (en) * | 2013-06-20 | 2015-07-21 | International Business Machines Corporation | Memory uncorrectable error handling technique for reducing the impact of noise |
US9495255B2 (en) * | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10198313B2 (en) | 2016-03-11 | 2019-02-05 | Western Digital Technologies, Inc. | Redundancy of error correction encoded data in a storage system |
KR102410566B1 (ko) | 2018-02-05 | 2022-06-17 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US10824502B2 (en) | 2018-08-08 | 2020-11-03 | Micron Technology, Inc. | Enhanced codeword for media persistence and diagnostics |
US10942809B2 (en) | 2018-12-20 | 2021-03-09 | Micron Technology, Inc. | Changing of error correction codes based on the wear of a memory sub-system |
KR20200079134A (ko) | 2018-12-24 | 2020-07-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11340987B1 (en) * | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
-
2021
- 2021-09-17 US US17/477,859 patent/US11775381B2/en active Active
-
2022
- 2022-09-19 WO PCT/US2022/044022 patent/WO2023044125A1/en active Application Filing
- 2022-09-19 KR KR1020247011350A patent/KR20240055821A/ko unknown
- 2022-09-19 CN CN202280062184.7A patent/CN117957521A/zh active Pending
- 2022-09-19 EP EP22870832.7A patent/EP4402565A1/en active Pending
-
2023
- 2023-08-04 US US18/230,360 patent/US12007837B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230086696A1 (en) | 2023-03-23 |
US20240045759A1 (en) | 2024-02-08 |
KR20240055821A (ko) | 2024-04-29 |
WO2023044125A1 (en) | 2023-03-23 |
US12007837B2 (en) | 2024-06-11 |
EP4402565A1 (en) | 2024-07-24 |
US11775381B2 (en) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113035262B (zh) | 存储器子系统中奇偶校验数据的管理 | |
US11899966B2 (en) | Implementing fault tolerant page stripes on low density memory systems | |
US11775179B2 (en) | Enabling stripe-based operations for error recovery at a memory sub-system | |
US20230082008A1 (en) | Parity protection in non-volatile memory | |
US11704196B2 (en) | Reduced parity data management | |
US11830545B2 (en) | Data programming techniques to store multiple bits of data per memory cell with high reliability | |
US12007837B2 (en) | Redundancy metadata schemes for rain protection of large codewords | |
US11556261B2 (en) | Memory stripe coding management | |
US11625295B2 (en) | Operating memory device in performance mode | |
US11709601B2 (en) | Redundancy metadata for multi-plane memory access failure | |
US11507304B1 (en) | Diagonal page mapping in memory systems | |
US20230317195A1 (en) | Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate | |
US11921581B1 (en) | Read recovery including low-density parity-check decoding | |
US20240062839A1 (en) | Performing block-level media management operations for block stripes in a memory device | |
US20230395152A1 (en) | Memory cell voltage level selection | |
US20230251927A1 (en) | Tracking host-provided metadata in a memory sub-system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |