CN116775368A - 用于以不同码率在分区之间回拷的多层码率架构 - Google Patents
用于以不同码率在分区之间回拷的多层码率架构 Download PDFInfo
- Publication number
- CN116775368A CN116775368A CN202310209622.4A CN202310209622A CN116775368A CN 116775368 A CN116775368 A CN 116775368A CN 202310209622 A CN202310209622 A CN 202310209622A CN 116775368 A CN116775368 A CN 116775368A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- user data
- partition
- ecc
- 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
- 238000005192 partition Methods 0.000 title claims abstract description 138
- 230000015654 memory Effects 0.000 claims abstract description 240
- 238000012937 correction Methods 0.000 claims abstract description 129
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000000034 method Methods 0.000 abstract description 33
- 238000012545 processing Methods 0.000 description 52
- 238000003860 storage Methods 0.000 description 43
- 238000004891 communication Methods 0.000 description 20
- 239000000872 buffer Substances 0.000 description 18
- 230000004044 response Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/1008—Adding 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/1044—Adding 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
-
- 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/1008—Adding 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/1068—Adding 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
-
- 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/1008—Adding 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/1048—Adding 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
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0658—Controller construction arrangements
-
- 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]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
- H03M13/293—Decoding strategies with erasure setting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请案的实施例涉及用于以不同码率在分区之间回拷的多层码率架构。在一个方法中,将用户数据存储在非易失性存储器的第一分区中。产生用于所述用户数据的第一错误校正码数据,且将其与所述用户数据一起存储在所述第一分区中。产生用于所述用户数据的第二错误校正码数据,且将其存储在所述第一分区外部。所述第二错误校正码数据提供与用于所述第一错误校正码数据的错误校正算法兼容的增大的错误校正能力。使用回拷操作来将所述用户数据和所述第一错误校正码而不将所述第二错误校正码复制到所述非易失性存储器的第二分区。如果需要恢复存储在所述第一分区中的所述用户数据的部分,则可选择性地使用所述第二错误校正码。
Description
技术领域
本文中所公开的至少一些实施例大体上涉及存储器装置,且更明确地说,但不限于,用于以不同码率使用错误校正来存储数据的存储器装置的多层码率架构。
背景技术
各种类型的非易失性存储装置可用于存储数据。非易失性存储装置可包含NAND快闪存储器装置。NAND快闪存储器是使用NAND逻辑门来构造的一种类型的快闪存储器。
固态硬盘为非易失性数据存储装置的实例,所述非易失性数据存储装置使用固态存储器来将数据存储在例如非易失性基于NAND的快闪存储器芯片中。基于NAND的快闪存储器通常是可靠的,但并不无错误地存储数据。在一些情况下,使用错误校正码来校正所存储数据中的原始位错误。
数据存储中的错误可出于各种原因而发生。举例来说,错误可由电力轨处的噪声、在相邻单元的读取或写入期间的电压阈值干扰或由于单元内的泄漏而导致的保持损失引起。
如果检测到错误,那么通常在快闪存储器中使用错误校正码来恢复所存储数据。在一个实例中,错误校正码用存储额外信息的奇偶校验位补充用户数据,使得在一或多个数据位损坏时可恢复数据。一般来说,可在所存储数据中校正的数据位错误的数目随着错误校正码中的奇偶校验位的数目增大而增大。
在存储器装置中,用户数据与数据的错误校正码一起存储在存储器装置的存储器位置中。这允许在单个写入操作中将数据和错误校正码写入到存储器位置,或在单个读取操作中从存储器位置读取数据和错误校正码。通常,错误校正码实施于快闪存储器控制器中。
在一个实例中,错误校正码产生与用户数据一起存储的奇偶校验位。在各种实例中,错误校正码是基于汉明(Hamming)编码方案、理德-所罗门(Reed-Solomon)编码方案、涡轮码编码方案或低密度奇偶校验(LDPC)编码方案。
发明内容
根据本公开的实施例,提供一种系统。所述系统包括非易失性存储器和控制器。所述非易失性存储器包括第一分区和第二分区,其中所述第一分区经配置以将数据存储在各自存储单个数据位的存储器单元中,且所述第二分区经配置以将数据存储在各自存储两个或更多个数据位的存储器单元中。所述控制器经配置以:产生用于用户数据的第一错误校正码(ECC)数据,其中所述第一ECC数据提供用于校正所述用户数据中的至少一个错误的第一能力;将所述用户数据和所述第一ECC数据存储在所述第一分区中;产生用于所述用户数据的第二ECC数据,其中所述第一ECC数据与所述第二ECC数据的组合提供用于校正所述用户数据中的至少一个错误的第二能力,且所述第二能力能够校正比所述第一能力更大数目的错误;在所述第一分区外部存储所述第二ECC数据;以及使用回拷操作或使用错误校正将所述用户数据复制到所述第二分区,其中:使用所述回拷操作复制所述用户数据包括致使在无错误校正的情况下将所述用户数据和所述第一ECC数据复制到所述第二分区;且使用错误校正复制所述用户数据包括使用所述第一ECC数据与所述第二ECC数据的所述组合对所述用户数据执行错误校正。
附图说明
实施例是借助于实例而非限制在附图的图中来说明的,在附图中类似参考指示类似元件。
图1展示根据一些实施例的使用多层码率架构来以不同码率使用错误校正将数据存储在非易失性存储器的不同分区中的存储器装置。
图2展示根据一些实施例的用于使用多层码率架构对存储器装置的回拷操作和错误处置流程。
图3展示根据一些实施例的使用两层级错误校正译码存储用于车辆的控制系统的数据的存储装置。
图4展示根据一些实施例的用于以不同码率使用错误校正在存储数据的分区之间复制用户数据的方法。
图5展示根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图6是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
以下公开内容描述用于实施多层(也被称作多级)码率架构的存储器装置的各种实施例,所述多层码率架构针对非易失性存储器的不同分区以不同码率使用错误校正来存储数据。本文中的至少一些实施例涉及快闪存储器装置。本文中的至少一些实施例涉及基于使用两层级奇偶校验保护对数据进行编码而存储在快闪存储器装置中的数据。存储器装置可例如存储用于主机装置(例如,自主车辆的计算装置、服务器,或存取存储在存储器装置中的数据的另一计算装置)的数据。在一个实例中,存储器装置是安装在电动车辆中的固态硬盘(SSD)。
在一个实例中,NAND快闪存储器装置存储以各种模式编程的数据(例如,页):SLC(单层级单元)模式、MLC(多层级单元)模式、TLC(三层级单元)模式或QLC(四层级单元)模式,等。当以SLC模式配置时,每一存储器单元存储一个数据位。当以MLC模式配置时,每一存储器单元存储两个数据位。当以TLC模式配置时,每一存储器单元存储三个数据位。当以QLC模式配置时,每一存储器单元存储四个数据位。当存储在单元中的位数目增大时,从单元检索的数据中的错误的可能性增大。
编程存储器单元所需的时间取决于所述模式而变化。举例来说,以QLC模式进行的编程显著慢于以SLC模式进行的编程。确切地说,每一QLC单元具有被称为层级(例如,层级0到15)的16个可能状态。层级0为擦除状态(未编程)。
QLC单元的编程可在一个遍次中完成,但由于单元-单元耦合(其造成干扰),如果编程仅在一个遍次中完成,那么错误率将较高。作为错误的实例,在一些情况下,当一个单元经编程到层级1且相邻单元经编程到较高层级时,存在耦合干扰,这致使层级1移动到较高层级。这可能引起错误。
QLC单元可在两个遍次中编程以减少以上负面影响。在第一遍次中,进行粗略编程。在第二遍次中,进行更精细的编程以更精细地调谐粗略编程。当使用两遍次编程(例如,16-16编程)时,单元的阈值电压分布将更紧密且更可用。
在一些情况下,主机装置以比传入数据可写入于QLC存储器中更快的速率将数据发送到快闪存储器装置,在用上述两遍次方法编程的情况下尤其如此。作为一实例,如果用户在移动装置上记录高清视频,那么提供到存储器装置以供存储的数据的快速速率无法减慢。如果数据未足够快速地保存(例如,归因于缓慢QLC编程),那么数据可能归因于此活动的实时记录性质而丢失。
在一些情况下,存储器装置通过将传入用户数据最初写入到以SLC模式操作的存储器单元而试图补救此问题。这是因为以SLC模式的编程(写入)可相对较快地执行,且因此可保存传入实时数据流而无数据损失。在一些方法中,存储器装置具有存储传入数据的专用SLC块。或者,可动态地指派SLC块。举例来说,存储器装置中的每一块可以SLC或QLC模式选择性地操作。
在一个实例中,在以SLC模式存储数据之后,移动装置可在闲置时间期间(例如,当处理器需求较低时)压缩数据。数据可例如通过在闲置时间期间将数据从SLC单元移动到QLC单元而压缩。
然而,用于存储传入数据的SLC块的以上使用存在以下技术问题:在SLC模式中,存储器单元(如一般来说,快闪存储器单元)具有有限的耐久性(例如,有限的编程-擦除循环能力)。在一个实例中,2GB存储器可专用于128GB驱动器中的SLC块,且剩余126GB用于QLC块以存储用户数据。当初始地接收时,存储于QLC模式单元中的所有数据首先存储于SLC模式单元中。因此,SLC模式单元比QLC模式单元经历显著更多的应力(例如,在一些情况下,其可能仅一次或几次写入数据)。这致使SLC模式单元随时间推移比QLC模式单元更快速地耗损。当接收到数据时编程SLC模式单元存在应力。对于NAND装置中的单元的擦除,单元上的应力甚至更糟。与SLC模式单元相关联的错误因此归因于较大的应力和使用而增大。
在一个实例中,128GB的QLC模式数据等效于4×128GB的SLC模式数据(例如,就例如上文的关于耗损的编程-擦除循环来说)。举例来说,装置中的SLC存储器单元可循环50,000次。如果SLC存储器单元的耐久性低,那么必须增大SLC块的大小,这会耗用实际可用用户数据存储容量。因此,归因于总存储器存储容量的一部分作为输入SLC缓冲器的增大的使用(例如,其仅临时存储用户数据直到压缩),针对用户数据的每GB QLC模式的成本较大。
如上文所提及,当编程和擦除SLC模式存储器单元时,由于耗损,在存储器装置的寿命期间,错误率持续增大。举例来说,可在将数据存储到存储器单元(例如,在SSD的非易失性存储器芯片中用作存储媒体的SLC存储器单元)中与从存储器单元检索数据之间出现错误。为了促进无错误数据的检索,控制器(例如,在SSD中使用)可使用例如低密度奇偶校验(LDPC)码的错误校正码(ECC)对从主机装置接收的数据进行编码,且将经编码数据存储在存储器单元中。对从存储器单元检索的经编码数据进行解码可去除或减少错误。
ECC为例如添加到用户数据的额外信息,其允许错误校正(例如,将10%或20%奇偶校验位或数据添加到用户数据)。额外信息由错误校正引擎(例如,在SSD的控制器中实施的编码器和解码器)使用。
归因于以上归因于较大应力和使用的较高错误率,当用于传入数据时,对于SLC模式单元需要更强大的错误校正。更强大的校正延长SLC块的使用寿命。然而,在具有较低错误率的QLC模式单元中,并不需要此较高层级的错误校正,以避免存储容量的浪费。作为一实例,存储器装置需要SLC模式单元上的20%额外错误校正信息(例如,20%奇偶校验位),但10%额外信息(例如,10%奇偶校验位)对于QLC模式单元是足够的。这产生错误校正数据需要的不匹配的技术问题。如果使用20%额外ECC数据用于QLC模式单元,那么存储器存储空间有相当大的浪费。
此不匹配在使用回拷操作将数据从SLC块复制到QLC块的存储器装置中甚至更加明显。在回拷操作中,在数据存储于SLC块中时精确地复制,且在不使用错误校正的情况下移动到QLC块。如果20%奇偶校验数据存储于SLC块中,那么将此20%奇偶校验数据中的全部精确地复制到QLC块。这引起如上文所描述的QLC模式单元中的浪费的存储空间。
回拷一般出于效率而用于存储器装置中。举例来说,一些NAND快闪存储器装置具有回拷模式。在回拷期间,数据在SLC模式中读取,且在不进行任何错误校正的情况下写回到QLC模式。例如,当SLC模式数据错误率较低,且数据尚未停留长时间时,回拷可能是合乎需要的。举例来说,回拷具有以下优势:数据从未离开NAND装置。这是因为回拷操作完全在NAND装置内部执行。
使用回拷操作的替代方案是将来自一或多个NAND裸片中的SLC块的数据读取到控制器(例如,ASIC),使用存储于SLC块中的奇偶校验数据校正错误,接着将数据写回到NAND裸片中的QLC块。然而,存储SLC块的NAND裸片与控制器之间的接口为共享资源(例如,ONFI总线)。因此,使用控制器对错误的此校正将阻断任何读取或编程请求,因为接口是忙碌的。相比而言,回拷操作并不阻断任何读取或编程请求,因为其并不使用接口。因此,需要在压缩用户数据时针对效率使用回拷操作,但需要以克服错误校正数据需要中的不匹配问题的方式执行压缩。
在一个实例中,存储器装置具有使用16-16算法的QLC块,其中粗略数据(第1遍次)具有极高错误率。SLC缓冲器用于缓冲粗略数据。基于如上文所论述的耐久性配置SLC缓冲器的大小。增大SLC缓冲器的大小会增大每GB存储装置的成本。在操作中,数据写入到SLC缓冲器,且接着重新定位到QLC块。将数据从SLC缓冲器读取到存储器装置的ASIC控制器,校正数据,且将数据重写到QLC块精细编程(第2遍次)归因于ONFI总线开销而造成巨大性能惩罚。因此,存储器装置通常使用SLC到QLC回拷以避免此惩罚。然而,这不会补救以上错误校正不匹配的技术问题。
虽然较小码率可增大SLC块的耐久性,但这会耗用用户有效负载的大小且对于给定NAND容量减小用户密度。出于此原因,在QLC模式中的较小码率为非所需的。尽管SLC缓冲器分区可得益于较小码率,但在SLC缓冲器上使用较小码率且在QLC块上使用默认(较大)码率可能会使SLC到QLC回拷不兼容。因此,需要一种存储器装置,其在比QLC块更小的码率下操作SLC缓冲器,但支持SLC到QLC回拷(无控制器的LDPC干预)。
为了解决这些和其它技术问题,存储器装置实施对于非易失性存储器的不同分区以不同码率使用错误校正存储数据的多层级码率架构。举例来说,第一分区的SLC块针对具有20%奇偶校验数据的用户数据使用错误校正,且第二分区的QLC块针对具有10%奇偶校验数据的用户数据使用错误校正。
然而,不同于先前方法,对于第一分区,20%奇偶校验数据分裂成两个部分,每一部分对应于兼容层级的错误校正能力。10%奇偶校验数据的第一部分与用户数据一起存储于第一分区(SLC块)中。兼容10%奇偶校验数据的第二部分(对于较高层级的错误校正)存储在SLC块之外,但如果需要用于用户数据的错误校正则可供控制器使用。
回拷用于将数据从SLC块压缩到QLC块。因此,仅10%奇偶校验数据的第一部分复制到QLC块。这提供SLC和QLC块的错误校正能力之间的匹配,而同时提供SLC块的可用的更大错误校正能力。
在一个实施例中,传入用户数据最初以较小码率(例如,对于20%奇偶校验数据的0.8)存储在单层级单元(SLC)快闪存储器中,且接着以较大码率(例如,对于10%奇偶校验数据的0.9)复制到且存储在四层级单元(QLC)快闪存储器中。用于用户数据的奇偶校验数据是使用两层级编码产生,且包含对应于第一层级的第一ECC数据(ECC1),以及对应于第二层级(其提供比第一层级更大的错误校正)的第二ECC数据(ECC2)。
第一ECC数据存储在与用户数据相同的SLC分区中。第二ECC数据存储在不同分区中。在具有用户数据的分区外部存储第二ECC数据准许使用回拷操作将用户数据从SLC分区复制到QLC分区。相同地复制用户数据和第一ECC数据,但回拷操作并不复制第二ECC数据,因为其处于与用户数据不同的分区中。此方法准许最初以初始码率存储传入用户数据,且接着随后以不同码率存储传入用户数据。
此架构可例如用于校正存储在用于接收传入用户数据的输入缓冲器或其它存储器区(例如,SLC块)中的数据的错误。输入缓冲器有时可能呈现比存储器的其它区更高的错误率(例如,归因于如上文所论述的过度耗损)。对于SLC区具有较高错误校正能力使得系统能够对SLC区执行更多编程/擦除操作。第二ECC数据提供更大的错误校正能力以满足输入缓冲器或区的较大错误校正需要。当稍后将传入用户数据复制到存储器的另一区(例如,QLC块)以用于长期存储(例如,使用回拷操作)时,错误校正需要较低(例如,当存储于QLC块中时)。仅复制第一ECC数据而不复制第二ECC数据足以满足这些减少的错误校正需要,且准许更紧密地存储用户数据以使得更有效地使用总存储器容量。
在一个实施例中,NAND快闪存储器装置包含非易失性存储器(例如,在一或多个NAND裸片上)和控制器(例如,ASIC)。非易失性存储器具有第一分区(例如,SLC块)和第二分区(例如,QLC块)。第一分区经配置以将数据存储于各自存储单个数据位的存储器单元中,且第二分区经配置以将数据存储于各自存储两个或更多个数据位的存储器单元中。
控制器经配置以:产生用于用户数据的第一错误校正码(ECC)数据,其中所述第一ECC数据提供用于校正所述用户数据中的至少一个错误的第一能力;将所述用户数据和所述第一ECC数据存储在第一分区中;产生用于所述用户数据的第二ECC数据,其中所述第一ECC数据与所述第二ECC数据的组合提供用于校正所述用户数据中的至少一个错误的第二能力,且所述第二能力能够校正比所述第一能力更大数目的错误;在所述第一分区外部存储所述第二ECC数据;以及使用回拷操作的第一模式或使用错误校正的第二模式将所述用户数据复制到第二分区。控制器可按需要选择使用复制用户数据的任一模式(例如,如由状态机、机器学习模型和/或固件所确定)。
使用回拷操作复制用户数据包含在无错误校正的情况下将用户数据和第一ECC数据复制到第二分区。使用错误校正复制用户数据包含使用第一ECC数据与第二ECC数据的组合对用户数据执行错误校正。
通过本文所描述的实施例提供各种优点。在一个优点中,多层错误校正码(ECC)用于支持在不同码率下操作的两个分区之间的回拷。一个SLC分区在较低码率下操作以用于耐久性益处。另一QLC分区在较大码率下操作以用于成本益处。举例来说,这有助于减少归因于SLC分区而引发的超量配给(OP)惩罚,但不损害SLC到QLC回拷功能性。
图1展示根据一些实施例的使用多层码率架构来以不同码率使用错误校正将数据存储在非易失性存储器104的不同分区(例如,分区110、120)中的存储器装置102。存储器装置102为例如SSD或其它存储装置,或基NAND的快闪存储器芯片或使用两层级奇偶校验数据对所存储数据进行编码的模块。
控制器106控制对非易失性存储器104的存取。用户数据130由控制器106经由存储器接口101提供到非易失性存储器104。控制器106包含用于产生ECC数据(例如,当写入数据时)的编码器160,以及用于对ECC数据进行解码(例如,当读取数据时)的解码器162。
存储器装置102从主机装置103接收待存储的数据(例如,经由串行通信接口或无线通信接口)。存储器装置102将所接收数据存储在非易失性存储器104的存储器单元(未展示)中。在一个实例中,存储器单元可由一或多个非易失性存储器芯片提供。在一个实例中,存储器芯片为基于NAND的快闪存储器芯片。
存储器装置102通过使用用户数据130产生ECC1数据132和ECC2数据150来实施错误校正。ECC2数据150具有比ECC1数据132更高的错误校正能力。举例来说,当从主机装置103接收到用户数据130时,使用编码器160对所接收数据进行编码以提供ECC1和ECC2数据(例如,奇偶校验位)。控制器106可在硬件和/或软件中实施错误校正。在一个实例中,用户数据130为来自用户的移动装置的视频数据,或来自自主或其它车辆的一或多个传感器的传感器数据。
当从主机装置103接收到传入用户数据130时,用户数据130连同已经由编码器160产生的ECC1数据132一起存储在分区110中。在一个实例中,分区110包含如上文所描述的SLC块。ECC2数据150在分区110外部存储于非易失性存储器104中。当从主机装置103接收用户数据130时,由编码器160产生ECC2数据150。
在存储在分区110中之后,将用户数据130复制到分区120。在一个实例中,分区120包含如上文所描述的QLC块。在一个实例中,执行此复制以压缩用户数据130,使得其以较大存储密度作为用户数据140存储在分区120中。在一个实例中,当控制器106确定存储器装置102的资源闲置或具有超过阈值的可用性时执行复制。
在一个实施例中,使用如上文所描述的回拷操作将用户数据130复制到分区120。在此回拷期间,用户数据130和ECC1数据132以相同形式从分区110复制到分区120,而不通过控制器106执行错误校正。因此,如写入到分区120的用户数据140和ECC1数据142是用户数据130和ECC1数据132的相同副本。应注意,在此回拷操作期间不复制ECC2数据150,因为ECC2数据150在分区110外部。
ECC2数据150可存储在非易失性存储器104的另一分区中,和/或可存储在存储器装置102的其它存储器中。在一些实施例中,ECC2数据150可存储在控制器106的本地存储器和/或主机装置103的存储器中。在一些实施例中,使用ECC2数据150的错误校正可由控制器106和/或主机装置103执行。
当将用户数据130从分区110复制到分区120时,控制器106确定应使用回拷操作还是使用错误校正来执行复制。举例来说,当估计与存储在分区110中的用户数据130相关联的错误率低于阈值时,控制器106可确定使用回拷操作。作为一实例,如果分区110中的数据具有较高保持率,那么其可能具有较高错误率。
相比而言,如果估计错误率高于阈值,那么控制器106可确定使用错误校正执行复制。在此情况下,用户数据130经由存储器接口101发送到控制器106以用于使用解码器162进行错误校正。可使用ECC1数据132和/或ECC2数据150来执行错误校正(如取决于用户数据130中的估计错误的程度而可能需要)。接着将经校正用户数据130复制到分区120作为用户数据140。ECC1数据142由编码器160使用经校正用户数据130产生。
图2展示根据一些实施例的用于使用多层码率架构对存储器装置的回拷操作和错误处置流程。在一个实例中,存储器装置为存储器装置102。在一个实例中,回拷操作将用户数据130从分区110相同地复制到分区120。
在一个实例中,如所说明,用户数据和ECC1数据存储于SLC块A中且复制到QLC块X。ECC2数据存储于不同SLC块B中。如所说明,可使用ECC1或如果需要较大错误校正,则使用ECC1与ECC2的组合,来执行校正用户数据中的所识别错误的错误处置。
在一个实施例中,可由控制器(例如,控制器106)基于确定与存储用户数据的非易失性存储器相关联的上下文而起始错误处置(例如,将数据读取到控制器以校正错误而不是进行回拷)。举例来说,可基于确定存储器和/或存储器所位于的环境的温度或温度变化而起始错误处置。举例来说,可基于与SLC块A中的所存储用户数据相关联的错误率的确定而起始错误处置。举例来说,可基于用户数据已存储于SLC块A中的时间周期而起始错误处置。
在一个实例中,可基于SLC块A的先前使用的程度而起始错误处置。可基于例如计数对SLC块A中的存储器单元执行的编程-擦除循环的数目的计数器来确定先前使用。
在一个实施例中,用于存储器装置的错误校正架构产生码字构造中的一些模块性,使得写入到SLC页的ECC字节的部分可被截断且仍可进行ECC校正。使用两层级编码。相应地产生对应奇偶校验矩阵(例如,产生用于ECC的奇偶校验位的H矩阵)。以此方式,用于20%代码(例如,矩阵)的奇偶校验矩阵需要具有用于10%代码的H矩阵。存储器装置在第一步骤(ECC1)中产生10%奇偶校验(例如,对于0.9码率),且接着使用此信息,存储器装置产生额外10%奇偶校验(ECC2)(例如,对于0.8码率)。
在一个实例中,将用户数据和ECC1数据写入到SLC块A。ECC2数据写入到SLC块B。对于回拷,使用用户数据和来自SLC块A的ECC1数据,并将其复制到QLC块X。对于错误处置,用户数据与来自SLC块A和块B的ECC1+ECC2串接在一起以产生具有较大ECC校正能力的较小码率。
在一个实例中,SSD执行SLC到QLC(例如,QLC块X)回拷,其中用户数据+ECC1数据对应于0.9码率(用户数据+ECC1=码率0.9)。回拷并不包含ECC2字节。
在一个实例中,SSD通过将ECC2与ECC1串接而在0.8的码率(CR)下对SLC执行错误处置流程(用户数据+ECC1+ECC2在码率=0.8下操作)。SSD使用ECC1+ECC2用于非回拷路径。
在一个实例中,ECC2数据与ECC1分开存储,但存储在同一裸片上,或可在其它地方存储在不同存储位置中。
在一个实例中,当产生ECC2数据时,控制器可对用户数据+ECC1位进行编码,或可仅对用户数据位进行编码。H矩阵产生ECC1数据,且对应矩阵产生ECC1和ECC2数据。
在一个实例中,当执行针对读取失败的错误处置时,如果SLC中的用户数据未能用ECC1数据校正,那么控制器可使用ECC2数据来校正。
在一个实例中,SLC数据可能已经长时间存储(例如,多于一天),或控制器在一个温度下写入数据,且在不同温度下读取数据。错误率通常将较高,使得可选择错误处置以用于复制。在一个实例中,装置将数据读取到控制器以进行错误校正。如果对于ECC1读取失败,那么错误处置使用ECC2来恢复丢失的数据。随后,装置将经校正数据写回到QLC以用于数据的压缩。
在一个实例中,控制器决定是否使用回拷。举例来说,需要使用QLC来压缩一些数据。在进行回拷之前,控制器检查以查看针对用户数据的读取的错误率。如果错误较低,那么控制器进行回拷。如果错误较高,那么控制器不使用回拷。
举例来说,移动装置的控制器在极低温度下写入数据,接着将装置移动到热区域,且移动装置现在将数据压缩。控制器在压缩之前检查错误率。如果未能在高于阈值的速率下读取(控制器无法对数据进行解码),那么错误处置流程使用ECC2来恢复数据。
在一个实施例中,控制器使用快闪转译逻辑(FTL)层来跟踪非易失性存储器中的所存储ECC2数据的位置。在一个实例中,当给定逻辑地址(例如,由具有写入命令的主机装置使用)时,控制器可查找ECC2数据的物理地址。
图3展示根据一些实施例的使用两层级错误校正译码存储用于车辆345的控制系统321的数据的存储装置301。通过使用ECC1数据(例如ECC1数据332)提供错误校正译码的第一层级,并且通过使用ECC2数据(例如ECC2数据350)提供错误校正译码的第二层级。
控制系统327控制车辆345的各种车辆功能351。在一个实例中,车辆功能351包含马达控制、导航控制和/或在车辆345由操作员(例如,驾驶员或乘客)使用时进行操作功能的车辆345的其它硬件的控制。控制系统327存储用于控制车辆功能351的数据329。
控制系统327可将数据329的至少部分发送到存储装置301以用于存储在存储器单元303中。举例来说,数据329的一部分作为由控制器321从控制系统327接收的用户数据330发送,且存储于存储器单元303中。举例来说,用户数据330经编码以产生ECC1数据和ECC2数据,以提供奇偶校验数据。
当从控制系统327接收时,用户数据330存储在输入缓冲器370中。控制器321使用编码器323来使用输入缓冲器370中的用户数据330产生ECC1数据332。接着,用户数据330和ECC1数据332存储在以SLC模式操作的存储器单元305中。编码器323还使用用户数据330产生ECC2数据350。ECC2数据350存储在存储器单元309中(例如,以SLC模式操作)。
控制器321确定是否在不进行错误校正的情况下使用回拷操作将用户数据330复制到存储器单元307(以MLC/TLC/QLC模式操作),或在复制到单元307之前首先由控制器321使用解码器325执行错误校正以作为经校正用户数据340。当使用错误校正时,编码器323使用经校正用户数据340产生ECC1数据342。ECC1数据342存储于单元307中。如果使用回拷操作,那么用户数据330与用户数据340相同地复制,且ECC1数据332与ECC1数据342相同地复制。
在一个实施例中,控制器321使用传感器347(例如,嵌入存储器阵列中的传感器)确定存储装置301的温度。由传感器347提供的信令被控制器321用作机器学习模型349(例如,人工神经网络)的输入。来自机器学习模型349的输出用于操作存储装置301。至少部分地基于此输出,控制器321确定如何管理存储于存储器单元303中的用户数据。
在一个实例中,控制器321使用来自机器学习模型349的输出来决定是否使用回拷操作将用户数据320从单元305(以SLC模式操作)复制到单元307(以MLC/TCL/QLC模式操作),所述单元将用户数据340存储为用户数据330的相同副本。
作为替代方案,来自机器学习模型349的输出可用作对存储在单元305中的用户数据330执行错误校正的基础。如果执行错误校正,那么可将用户数据330发送到控制器321以用于使用ECC1数据332以及ECC2数据350(如可能需要)进行错误校正。
控制器321包含用于确定用户数据330存储于单元305中的时间周期的计时器360。所述时间周期可由控制器321在确定是使用回拷操作还是在复制用户数据330时执行错误校正时使用。在一个实例中,当所述时间周期大于阈值时,当复制用户数据330单元307时,控制器321决定使用错误校正。
控制系统327包含传感器357(例如,安装于车辆345的硬件组件上的传感器)。来自传感器357的数据可包含温度数据和/或其它数据。来自传感器357的数据可由控制器321用来决定如何管理用户数据330时使用,包含是执行如上文所描述的回拷操作还是执行对用户数据330的错误校正。
图4展示根据一些实施例的用于以不同码率使用错误校正在存储数据的分区之间复制用户数据的方法。举例来说,图4的方法可在图1的系统中实施。
图4的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专门逻辑、可编程逻辑、微码、装置的硬件、集成电路,等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,图4的方法至少部分地由一或多个处理装置(例如,图1的控制器106)执行。
虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每一实施例中并不需要所有过程。其它过程流程也是可能的。
在框401处,将用户数据存储在非易失性存储器的第一分区中。在一个实例中,将用户数据130存储在分区110中。
在框403处,产生用于用户数据的第一ECC数据。在一个实例中,使用编码器160产生ECC1数据132。
在框405处,将第一ECC数据存储在第一分区中。在一个实例中,ECC1数据132与用户数据130一起存储在分区110中。应注意,ECC1数据132与用户数据130可同时存储在分区110中(例如,由控制器106进行的单个写入操作),或可按任一次序连续地存储。
在框407处,产生用于用户数据的第二ECC数据。在一个实例中,由编码器160使用用户数据130产生ECC2数据150。
在框409处,在第一分区外部存储第二ECC数据。在一个实例中,ECC2数据150存储在分区110外部的非易失性存储器104中。
在框411处,将用户数据和第一ECC数据从非易失性存储器的第一分区复制到第二分区。不将第二ECC数据复制到第二分区。在一个实例中,控制器106确定是使用回拷操作还是使用错误校正将用户数据130从分区110复制到分区120。在一个实例中,所述确定是基于通信资源(例如,存储器接口101)和/或处理资源(例如,控制器106)的可用性。
在一个实施例中,一种系统包括:非易失性存储器(例如,104),其包括第一分区(例如,分区110)(例如,第一SLC块)和第二分区(例如,分区120)(例如,QLC块),其中所述第一分区经配置以将数据存储在各自存储单个数据位的存储器单元中,且所述第二分区经配置以将数据存储在各自存储两个或更多个数据位的存储器单元中;以及控制器(例如,106),其经配置以:产生用于用户数据(例如,用户数据130)的第一错误校正码(ECC)(例如,ECC1数据132)数据,其中第一ECC数据提供用于校正用户数据中的至少一个错误的第一能力;将用户数据和第一ECC数据存储在第一分区中;产生用于用户数据的第二ECC数据(例如,ECC2数据150),其中所述第一ECC数据与所述第二ECC数据的组合提供用于校正所述用户数据中的至少一个错误的第二能力,且所述第二能力能够校正比所述第一能力更大数目的错误;将在所述第一分区外部存储所述第二ECC数据;以及使用回拷操作或使用错误校正(例如,使用解码器162和编码器160)将所述用户数据复制到所述第二分区。使用回拷操作复制用户数据包括:致使将用户数据和第一ECC数据复制到第二分区而不进行错误校正;且使用错误校正复制用户数据包括使用第一ECC数据与第二ECC数据的组合对用户数据执行错误校正。
在一个实施例中,使用第一ECC数据产生第二ECC数据。
在一个实施例中,第一ECC数据与第二ECC数据的组合是第一ECC数据与第二ECC数据的串接。
在一个实施例中,产生第一ECC数据包括产生第一奇偶校验矩阵(例如,H矩阵)。
在一个实施例中,产生第二ECC数据包括使用第一奇偶校验矩阵产生第二奇偶校验矩阵(例如,矩阵)。
在一个实施例中,第二ECC数据存储在各自经配置以存储单个数据位的存储器单元(例如,第二SLC块)中。
在一个实施例中,第二ECC数据在第一分区和第二分区外部存储在非易失性存储器中。
在一个实施例中,第一ECC数据对应于第一码率(例如,对于ECC1的0.9),第二ECC数据对应于第二码率(例如,对于ECC1+ECC2的0.8),且第二码率小于第一码率。
在一个实施例中,在不复制第二ECC数据的情况下执行将用户数据复制到第二分区。
在一个实施例中,回拷操作进一步包括从第一分区读取用户数据,且将用户数据写入到第二分区而不将用户数据中的任一者传达到控制器。
在一个实施例中,回拷操作为NAND快闪存储器内部回拷操作。
在一个实施例中,一种系统包括:非易失性存储器,其包括第一分区和第二分区,其中存储在所述第一分区中的数据存储在各自经配置以存储表示单个数据位的电荷的存储器单元中,且存储在所述第二分区中的数据存储在各自经配置以存储表示两个或更多个数据位的电荷的存储器单元中;以及控制器,其经配置以:产生用于用户数据的第一错误校正码(ECC)数据,其中所述第一ECC数据提供用于校正所述用户数据中的至少一个错误的第一能力;将所述用户数据和所述第一ECC数据存储在所述第一分区中;产生用于所述用户数据的第二ECC数据,其中所述第一ECC数据与所述第二ECC数据的组合提供用于校正所述用户数据中的至少一个错误的第二能力,且所述第二能力能够比所述第一能力校正更大数目的错误;在所述第一分区外部存储所述第二ECC数据;以及使用回拷操作或使用错误校正将所述用户数据复制到所述第二分区。使用回拷操作复制用户数据包括:致使将用户数据和第一ECC数据复制到第二分区而不进行错误校正;且使用错误校正复制用户数据包括使用第一ECC数据或第二ECC数据中的至少一者将所述用户数据在进行错误校正的情况下复制到所述第二分区。
在一个实施例中,响应于确定使用第一ECC数据而不使用第二ECC数据不足以校正用户数据中的至少一个错误,使用第一ECC数据与第二ECC数据的组合来执行使用错误校正复制用户数据。
在一个实施例中,产生第二ECC数据包括依据第一ECC数据产生第二ECC数据。
在一个实施例中,使用错误校正将用户数据复制到第二分区进一步包括:尝试使用第一ECC数据而不使用第二ECC数据进行错误校正;以及响应于确定所尝试错误校正的失败,使用第一ECC数据和第二ECC数据执行错误校正。
在一个实施例中,使用错误校正将用户数据复制到第二分区进一步包括:校正用户数据中的至少一个错误以提供经校正用户数据;通过编码器产生经校正用户数据的第三ECC数据;以及将经校正用户数据和第三ECC数据复制到第二分区。
在一个实施例中,第三ECC数据提供用于校正用户数据中的至少一个错误的第一能力。
在一个实施例中,将用户数据复制到第二分区进一步包括:确定与所存储的用户数据相关联的上下文;基于所确定的上下文,确定使用错误校正复制用户数据以提供经校正用户数据;以及将经校正用户数据复制到第二分区。
在一个实施例中,确定所述上下文包括确定用户数据已经存储在第一分区中达超出阈值的时间周期(例如,使用计时器360确定)。
在一个实施例中,确定所述上下文包括确定与所存储用户数据相关联的估计错误率大于阈值。
在一个实施例中,确定所述上下文包括评估与所存储用户数据相关联的至少一个温度。在一个实例中,基于来自传感器347和/或传感器357的数据确定温度。
在一个实施例中,评估与所存储用户数据相关联的温度包括确定当用户数据存储在第一分区中时的温度或当将用户数据复制到第二分区时的温度中的至少一者。
在一个实施例中,确定所述上下文包括确定与所述第一分区相关联的编程-擦除循环的数目。
在一个实施例中,所述控制器进一步经配置以:从主机装置(例如,103)接收写入命令;其中所述用户数据响应于接收到所述写入命令而存储于所述第一分区中。
在一个实施例中,第一ECC数据包括用于低密度奇偶校验(LDPC)码的第一奇偶校验位。
在一个实施例中,第二ECC数据包括用于LDPC码的第二奇偶校验位。
在一个实施例中,所述控制器进一步经配置以:确定处理资源(例如,控制器106的处理带宽的可用性)或通信资源(例如,用于存储器接口101的带宽的可用性)中的至少一者的可用性;其中响应于确定可用性高于阈值而执行将用户数据复制到第二分区。
在一个实施例中,处理资源包含至少一个处理装置(例如,控制器106)的处理能力。
在一个实施例中,一种方法包括:将用户数据存储在非易失性存储器的第一分区中,其中存储在所述第一分区中的数据存储在各自经配置以存储表示单个数据位的电荷的存储器单元中;产生用于所述用户数据的第一错误校正码(ECC)数据,其中所述第一ECC数据提供用于所述用户数据的错误校正的第一能力;将所述第一ECC数据存储在所述第一分区中,其中所述第一ECC数据与所述所存储用户数据相关联;产生用于所述用户数据的第二ECC数据,其中所述第一ECC数据与所述第二ECC数据的组合提供用于所述用户数据的错误校正的第二能力,且所述第二能力大于所述第一能力;在所述第一分区外部存储所述第二ECC数据;以及将所述用户数据和所述第一ECC数据从所述非易失性存储器的所述第一分区复制到第二分区,但不将所述第二ECC数据复制到所述第二分区,其中存储在所述第二分区中的数据存储在各自经配置以存储表示两个或更多个数据位的电荷的存储器单元中。
在一个实施例中,复制用户数据包括:确定与所存储用户数据相关联的错误率是否大于阈值;以及响应于确定错误率大于阈值,使用第一ECC数据与第二ECC数据的组合校正用户数据中的至少一个错误以提供经校正用户数据;其中将经校正用户数据写入到第二分区。
在一个实施例中,复制用户数据包括:确定与所存储用户数据相关联的错误率是否小于阈值;其中响应于确定错误率小于阈值,使用回拷操作将用户数据从第一分区复制到第二分区。
在一个实施例中,作为回拷操作的部分将用户数据和第一ECC数据从第一分区复制到第二分区。
在一个实施例中,回拷操作不执行用户数据的任何错误校正。
图5展示根据本公开的一些实施例的包含存储器子系统的实例计算系统。在一些实施例中,两层级编码用于对数据进行编码以存储在存储器子系统中。举例来说,ECC1和ECC2数据存储在单独分区中,如上文所论述,用于使用回拷或错误校正(例如,用于数据压缩)选择复制。
在一个实例中,存储器子系统可为存储装置(例如,存储器装置102或存储装置301)、存储器模块或存储装置与存储器模块的混合。下文结合图5描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个组件(例如存储器装置)的存储器子系统。主机系统可提供待存储在存储器子系统处的数据且可请求待从存储器子系统检索的数据。
图5说明根据本公开的一些实施例的包含存储器子系统710的实例计算系统700。存储器子系统710可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置702)、一或多个非易失性存储器装置(例如,存储器装置704),或其组合。图1的存储器装置102为存储器子系统710的实例,且主机装置103为主机系统720的实例。
存储器子系统710可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态硬盘(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储装置(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统700可为例如计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、启用物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统700可包含耦合到一或多个存储器子系统710的主机系统720。图5说明耦合到一个存储器子系统710的主机系统720的一个实例。
主机系统720可包含处理器芯片组(例如,处理装置718)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,控制器716)(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统720使用存储器子系统710例如将数据写入到存储器子系统710并且从存储器子系统710读取数据。
主机系统720可经由物理主机接口耦合到存储器子系统710。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放式NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机系统720与存储器子系统710之间传输数据。当存储器子系统710通过PCIe接口与主机系统720耦合时,主机系统720可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置704)。物理主机接口可提供用于在存储器子系统710与主机系统720之间传送控制、地址、数据和其它信号的接口。图5说明存储器子系统710作为实例。一般来说,主机系统720可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统720的处理装置718可为例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器716可称为存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器716经由耦合在主机系统720与存储器子系统710之间的总线控制通信。一般来说,控制器716可将命令或请求发送到存储器子系统710以用于对存储器装置702、704的所需存取。控制器716可进一步包含用于与存储器子系统710通信的接口电路。接口电路可将从存储器子系统710接收到的响应转换成用于主机系统720的信息。
主机系统720的控制器716可与存储器子系统710的控制器715通信以进行操作,例如在存储器装置702、704处读取数据、写入数据或擦除数据和其它此类操作。在一些情况下,控制器716集成于处理装置718的同一封装内。在其它情况下,控制器716与处理装置718的封装分开。控制器716和/或处理装置718可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器、高速缓存存储器或其组合。控制器716和/或处理装置718可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
存储器装置702、704可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置702)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器组件的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,例如三维交叉点存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND类型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置704中的每一者可包含存储器单元(例如,图3的存储器单元303)的一或多个阵列。一个类型的存储器单元,例如单层级单元(SLC),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可存储每单元多个位。在一些实施例中,存储器装置704中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分、和MLC部分、TLC部分、或QLC部分。存储器装置704的存储器单元可分组为可指代用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
尽管描述了非易失性存储器装置,例如3D交叉点型和NAND型存储器(例如,2DNAND、3D NAND),但存储器装置704可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器和电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器715(或简称为控制器715)可与存储器装置704通信以进行操作,例如在存储器装置704处读取数据、写入数据或擦除数据和其它此类操作(例如,响应于控制器716在命令总线上调度的命令)。控制器715可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文中所描述的操作。控制器715可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
控制器715可包含配置成执行存储在本地存储器719中的指令的处理装置717(处理器)。在所说明的实例中,控制器715的本地存储器719包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统710的操作(包含处置存储器子系统710与主机系统720之间的通信)的各种过程、操作、逻辑流和例程。
在一些实施例中,本地存储器719可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器719还可包含用于存储微码的只读存储器(ROM)。虽然图5中的实例存储器子系统710已说明为包含控制器715,但在本公开的另一实施例中,存储器子系统710不包含控制器715,而是可替代地依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,控制器715可从主机系统720接收命令或操作且可将所述命令或操作转换成指令或适合的命令以实现对存储器装置704的所需存取。控制器715可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置704相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。
控制器715可进一步包含主机接口电路系统以经由物理主机接口与主机系统720通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置704,以及将与存储器装置704相关联的响应转换成主机系统720的信息。
存储器子系统710还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统710可包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路可从控制器715接收地址且对地址进行解码以存取存储器装置704。
在一些实施例中,存储器装置704包含本地媒体控制器705,其结合存储器子系统控制器715进行操作以对存储器装置704的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器715)可在外部管理存储器装置704(例如,对存储器装置704进行媒体管理操作)。在一些实施例中,存储器装置704是受管理存储器装置,其是与本地控制器(例如,本地控制器705)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一个实施例中,计算系统700包含存储器子系统710中的两层级编码器/解码器714,其使用至少两个错误校正码(例如,ECC1和ECC2)来转换数据和/或产生用于存储在存储器装置702到704的媒体单元中的对应奇偶校验数据。在一些实施例中,存储器子系统710中的控制器715包含两层级编码器/解码器714的至少一部分。在其它实施例中,或组合地,主机系统720中的控制器716和/或处理装置718包含两层级编码器/解码器714的至少一部分。举例来说,控制器715、控制器716和/或处理装置718可包含实施两层级编码器/解码器714的逻辑电路。举例来说,主机系统720的控制器715或处理装置718(处理器)可经配置以执行存储于存储器中的用于执行两层级编码器/解码器714的操作的指令。
在一些实施例中,两层级编码器/解码器714实施于安置于存储器子系统710中的集成电路芯片中。在其它实施例中,两层级编码器/解码器714是主机系统720的操作系统、装置驱动器或应用程序的部分。
在一些实施方案中,处理装置718与存储器子系统710之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,移动网络链路);且处理装置718和存储器子系统可配置成使用与NVMe协议中的那些类似的数据存储管理和使用命令来彼此通信。
存储器子系统710通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂覆在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维持存储在其中的数据/信息。可使用各种存储器/存储技术来实施存储器单元,例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性随机存取存储器(MRAM)、电阻性随机存取存储器、交叉点存储和存储器装置。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两个层中的每一层上的一个线路的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。
存储器子系统(例如,710)的控制器(例如,715)可运行固件以响应于来自处理装置718的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
涉及控制器715的操作的一些实施例可使用由控制器715执行的计算机指令(例如控制器715的固件)来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可初始存储在非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM和/或处理器内高速缓存存储器中以供由控制器715执行。
非暂时性计算机可读媒体可用于存储存储器子系统(例如,710)的固件的指令。当指令由控制器715和/或处理装置717执行时,指令使得控制器715和/或处理装置717进行本文中所论述的方法。
在一个实施例中,方法(例如,实施于存储器子系统710中)复制先前已使用如针对图1所描述的两层级编码(例如,使用编码器160的编码)编码的数据(例如,使用回拷或具有错误保护的复制)。所述方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专门逻辑、可编程逻辑、微码、装置的硬件、集成电路,等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法至少部分地由图5的两层级编码器/解码器714进行。
在一个实施例中,两层级编码器/解码器714基于第一错误校正码(例如,ECC1;低密度奇偶校验码)对从存储器单元检索的数据进行解码。两层级编码器/解码器714确定根据第一错误校正码(例如,ECC1)的解码是否成功。当使用第一错误校正码(例如,ECC1)产生的所有码字可经由奇偶校验数据成功地解码和/或恢复时,成功地恢复基于其产生经编码数据、存储在存储器单元中且接着从存储器单元检索的原始数据,且可对其进行复制(例如,到分区120)。
如果无法根据第一错误校正码(例如,ECC1)成功地解码码字中的一些,那么两层级编码器/解码器714识别无法经由第一错误校正码成功地解码的符号。在一个实例中,LDPC码中的未满足奇偶校验可用于识别LDPC码字中不能可靠地解码的位。所识别的符号可被视为缺失/被擦除。第二错误校正码(例如,ECC2)连同第一错误校正码(例如,ECC1)可随后用于对那些少数不明确的符号进行解码(例如,使用存储为ECC2数据150的奇偶校验数据)。可进行根据第二错误校正码的解码以恢复遗失/被擦除的符号。
两层级编码器/解码器714基于例如ECC1和ECC2恢复所识别的符号。在一个实例中,所恢复的符号可用于替代从存储器单元检索的对应符号,且经由第一错误校正码(例如,低密度奇偶校验码)进一步经解码以用于数据恢复。
图6说明计算机系统600的实例机器,所述实例机器内可执行用于致使所述机器执行本文中所论述的方法中的任何一或多者的指令集。在一些实施例中,计算机系统600可对应于主机系统(例如,图5的主机系统720),所述主机系统包含、耦合到或利用存储器子系统(例如,图5的存储器子系统710)或可用于进行两层级编码器/解码器714的操作(例如,执行指令以进行对应于参考图5所描述的两层编码器/解码器714的操作)。在一个实例中,计算机系统600对应于存储器装置102和/或主机装置103。
在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态随机存取存储器(SRAM)等),以及数据存储系统618,其经由总线630(其可包含多个总线)彼此通信。
在各种实施例中,处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置602被配置成执行用于执行本文所论述的操作和步骤的指令626。计算机系统600可进一步包含用以经由网络620通信的网络接口装置608。
数据存储系统618可包含机器可读存储媒体624(在本文中也称为计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多个的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图5的存储器子系统710。在一个实施例中,指令626包含用于实施对应于如上文所描述(例如,对于图1)的两层级编码器/解码器(例如,参考图5所描述的两层级编码器/解码器714)所支持的两层级错误校正的功能性的指令。
本公开包含进行所述方法且实施上文所描述的系统的各种装置,包含进行这些方法的数据处理系统,和含有指令的计算机可读媒体,所述指令在数据处理系统上执行时使得系统进行这些方法。
描述和图式是说明性的且不应理解为限制性。描述许多具体细节以提供透彻理解。然而,在某些情况下,未对公知的或常规的细节进行描述,以避免混模糊描述。本公开中对一个或一实施例的参考未必参考同一实施例;并且此类参考意味着至少一个。
如本文中所使用,“耦合到”或“与……耦合”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。
在本说明书中对“一个实施例”或“一实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。在本说明书中各个地方出现的短语“在一个实施例中”不一定全部指代同一个实施例,也不是与其它实施例相互排斥的单独实施例或替代性实施例。此外,描述了可由一些实施例而不是由其它实施例呈现的各种特征。类似地,描述了各种要求,这些要求可能是一些实施例的要求而不是其它实施例的要求。
在本说明书中,各种功能和/或操作可描述为由软件代码执行或由软件代码引起以简化描述。然而,本领域的技术人员将认识到,这种表达的意思是所述功能和/或操作由一或多个处理装置来执行代码所引起,所述处理装置例如微处理器、专用集成电路(ASIC)、图形处理器和/或现场可编程门阵列(FPGA)。替代地或组合地,可使用专用电路系统(例如逻辑电路系统)在有或没有软件指令的情况下实施功能和操作。可使用并无软件指令的固线式电路或结合软件指令实施实施例。因此,所述技术既不限于硬件电路和软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
虽然一些实施例可在完全功能的计算机和计算机系统中实施,但各种实施例能够以各种形式分布为计算产品且能够应用,而无关于实际上实现分布的特定类型的计算机可读媒体。
所公开的至少一些方面可至少部分体现于软件中。也就是说,所述技术可响应于其处理装置(例如,微处理器)执行存储器(例如,ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置)中所含有的指令序列而在计算装置或另一系统中进行。
经执行以实施所述实施例的例程可以实施为操作系统、中间件、业务交付平台、软件开发工具包(SDK)组件、网络服务或其它特定应用程序、组件、程序、对象、模块或指令序列(有时称为计算机程序)的一部分。这些例程的调用接口可作为应用程序编程接口(API)暴露给软件开发团体。计算机程序通常在各种时间在计算机中的各种存储器和存储装置中包括一或多个指令集,且所述指令集在由计算机中的一或多个处理器读取和执行时使所述计算机执行对进行涉及各个方面的要素来说必要的操作。
计算机可读媒体可以用于存储软件和数据,所述软件和数据当由计算装置执行时使所述装置执行各种方法。可执行软件和数据可以存储在包含例如ROM、易失性RAM、非易失性存储器和/或高速缓冲存储器的各处。此软件和/或数据的部分可以存储在这些存储装置中的任何一个中。此外,数据和指令可从集中式服务器或对等网络获得。数据和指令的不同部分可在不同时间且在不同通信会话中或同一通信会话中从不同集中式服务器和/或对等网络获得。可在执行应用程序之前获得全部数据和指令。或者,可动态地、及时地在需要执行时获得数据和指令的部分。因此,并不要求数据和指令在特定时刻处全部在计算机可读媒体上。
计算机可读媒体的实例包含但不限于可记录和不可记录类型的媒体,例如易失性和非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、固态硬盘存储媒体、可移动磁盘、磁盘存储媒体、光学存储媒体(例如,光盘只读存储器(CDROM)、数字多功能磁盘(DVD)等)以及其它。计算机可读媒体可存储指令。计算机可读媒体的其它实例包含但不限于使用NOR闪存或NAND闪存架构的非易失性嵌入式装置。在这些架构中使用的媒体可包含未管理的NAND装置和/或受管理NAND装置,包含例如eMMC、SD、CF、UFS和SSD。
一般来说,非暂时性计算机可读媒体包含以可由计算装置(例如计算机、移动装置、网络装置、个人数字助理、具有控制器的制造工具、具有一或多个处理器的集合的任何装置等)存取的形式提供(例如存储)信息的任何机构。如本文中所使用,“计算机可读媒体”可包含单个媒体或多个媒体(例如,其存储一或多个指令集)。
在各种实施例中,硬接线电路系统可与软件和固件指令组合使用以实施所述技术。因此,所述技术既不限于硬件电路和软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
可使用广泛多种不同类型的计算装置来实施本文中阐述的各种实施例。如本文中所使用,“计算装置”的实例包含但不限于服务器、集中式计算平台、多个计算处理器和/或组件的系统、移动装置、用户终端、车辆、个人通信装置、可佩戴数字装置、电子自助服务终端、通用计算机、电子文档阅读器、平板计算机、手提式计算机、智能手机、数码相机、住宅家庭设备、电视或数字音乐播放器。计算装置的额外实例包含被称为“物联网”(IOT)的装置的部分。这类“事物”可与其拥有者或管理员偶然交互,所述拥有者或管理员可监控所述事物或修改对这些物的设定。在一些情况下,这类拥有者或管理员扮演关于“物”装置的用户的角色。在一些实例中,用户的主要移动装置(例如,苹果iPhone(Apple iPhone))可以是关于由用户佩戴的配对的“物”装置(例如,苹果手表(Apple watch))的管理员服务器。
在一些实施例中,计算装置可以是计算机或主机系统,其例如实施为台式计算机、手提式计算机、网络服务器、移动装置,或包含存储器和处理装置的另一计算装置。主机系统可以包含或耦合到存储器子系统,使得主机系统可以从存储器子系统读取数据或将数据写入所述存储器子系统。主机系统可以经由物理主机接口耦合到存储器子系统。一般来说,主机系统可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
在一些实施例中,计算装置为包含一或多个处理装置的系统。处理装置的实例可包含微控制器、中央处理单元(CPU)、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、芯片上系统(SoC)或另一合适的处理器。
在一个实例中,计算装置为存储器系统的控制器。控制器包含处理装置和存储器,所述存储器含有由处理装置执行以控制存储器系统的各种操作的指令。
虽然附图中的一些以特定次序说明数个操作,但可将非次序相依性操作重新排序且可组合或分解其它操作。虽然具体提及了一些重新排序或其它分组,但是其它重新排序或分组对于本领域的普通技术人员来说是显而易见的,因此不提供详尽的替代方案列表。此外,应认识到,阶段可用硬件、固件、软件或其任何组合来实施。
在前述说明书中,已参考本公开的具体示范性实施例描述了本公开。将显而易见的是,可在不脱离如所附权利要求书中阐述的更广精神和范围的情况下进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (10)
1.一种系统,其包括:
非易失性存储器,其包括第一分区和第二分区,其中所述第一分区经配置以将数据存储在各自存储单个数据位的存储器单元中,且所述第二分区经配置以将数据存储在各自存储两个或更多个数据位的存储器单元中;以及
控制器,其经配置以:
产生用于用户数据的第一错误校正码ECC数据,其中所述第一ECC数据提供用于校正所述用户数据中的至少一个错误的第一能力;
将所述用户数据和所述第一ECC数据存储在所述第一分区中;
产生用于所述用户数据的第二ECC数据,其中所述第一ECC数据与所述第二ECC数据的组合提供用于校正所述用户数据中的至少一个错误的第二能力,且所述第二能力能够校正比所述第一能力更大数目的错误;
在所述第一分区外部存储所述第二ECC数据;以及
使用回拷操作或使用错误校正将所述用户数据复制到所述第二分区,其中:
使用所述回拷操作复制所述用户数据包括在无错误校正的情况下将所述用户数据和所述第一ECC数据复制到所述第二分区;且
使用错误校正复制所述用户数据包括使用所述第一ECC数据与所述第二ECC数据的所述组合对所述用户数据执行错误校正。
2.根据权利要求1所述的系统,其中所述第二ECC数据是使用所述第一ECC数据产生。
3.根据权利要求1所述的系统,其中所述第一ECC数据与所述第二ECC数据的所述组合是所述第一ECC数据与所述第二ECC数据的串接。
4.根据权利要求1所述的系统,其中产生所述第一ECC数据包括产生第一奇偶校验矩阵。
5.根据权利要求4所述的系统,其中产生所述第二ECC数据包括使用所述第一奇偶校验矩阵产生第二奇偶校验矩阵。
6.根据权利要求1所述的系统,其中所述第二ECC数据存储在各自经配置以存储单个数据位的存储器单元中。
7.根据权利要求1所述的系统,其中所述第二ECC数据在所述第一分区和所述第二分区外部存储在所述非易失性存储器中。
8.根据权利要求1所述的系统,其中所述第一ECC数据对应于第一码率,所述第二ECC数据对应于第二码率,且所述第二码率小于所述第一码率。
9.根据权利要求1所述的系统,其中将所述用户数据复制到所述第二分区是在不复制所述第二ECC数据的情况下执行。
10.根据权利要求1所述的系统,其中所述回拷操作进一步包括从所述第一分区读取所述用户数据,且将所述用户数据写入到所述第二分区而不将所述用户数据中的任一者传达到所述控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/696,245 | 2022-03-16 | ||
US17/696,245 US11829245B2 (en) | 2022-03-16 | 2022-03-16 | Multi-layer code rate architecture for copyback between partitions with different code rates |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775368A true CN116775368A (zh) | 2023-09-19 |
Family
ID=87984865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310209622.4A Pending CN116775368A (zh) | 2022-03-16 | 2023-03-06 | 用于以不同码率在分区之间回拷的多层码率架构 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11829245B2 (zh) |
CN (1) | CN116775368A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240054046A1 (en) * | 2022-08-09 | 2024-02-15 | Micron Technology, Inc. | Error-handling management during copyback operations in memory devices |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005058438B4 (de) * | 2005-12-07 | 2008-09-11 | Qimonda Ag | Integrierter Halbleiterspeicher mit Ermittelung einer Chiptemperatur |
US8910017B2 (en) * | 2012-07-02 | 2014-12-09 | Sandisk Technologies Inc. | Flash memory with random partition |
US10536172B2 (en) * | 2016-03-04 | 2020-01-14 | Western Digital Technologies, Inc. | ECC and raid-type decoding |
-
2022
- 2022-03-16 US US17/696,245 patent/US11829245B2/en active Active
-
2023
- 2023-03-06 CN CN202310209622.4A patent/CN116775368A/zh active Pending
- 2023-11-16 US US18/511,698 patent/US20240086282A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240086282A1 (en) | 2024-03-14 |
US20230297470A1 (en) | 2023-09-21 |
US11829245B2 (en) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111081308B (zh) | 用于混合非易失性存储系统的系统和方法 | |
US20200042223A1 (en) | System and method for facilitating a high-density storage device with improved performance and endurance | |
US11676679B2 (en) | Two-layer code with low parity cost for memory sub-systems | |
US11870463B2 (en) | Data reliability for extreme temperature usage conditions in data storage | |
CN113345513A (zh) | 使用来自先前迭代的准则配置迭代性错误校正参数 | |
CN111352859A (zh) | 用于存储器子系统的不良块管理 | |
US11321173B2 (en) | Managing storage of multiple plane parity data in a memory sub-system | |
US20240086282A1 (en) | Multi-layer code rate architecture for copyback between partitions with different code rates | |
KR20170012006A (ko) | 메모리 컨트롤러와 이를 포함하는 메모리 시스템 | |
CN117153232A (zh) | 用于不规则低密度奇偶校验解码的跨列缩放的位翻转阈值 | |
US11830545B2 (en) | Data programming techniques to store multiple bits of data per memory cell with high reliability | |
CN116324708A (zh) | 具有多个具有不同存储器密度的存储器区的存储器装置内的数据传送管理 | |
US11994947B2 (en) | Multi-layer code rate architecture for special event protection with reduced performance penalty | |
US11656938B2 (en) | Preemptive read verification after hardware write back | |
US11404133B1 (en) | Valid translation unit count-based memory management | |
US20230395152A1 (en) | Memory cell voltage level selection | |
US20230317195A1 (en) | Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate | |
US20240028259A1 (en) | Buffer allocation for reducing block transit penalty | |
US20240062840A1 (en) | Read verification cadence and timing in memory devices | |
US20230195358A1 (en) | Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism | |
CN116909802A (zh) | 用于经分区存储系统的动态rain | |
CN113126899A (zh) | 完全多平面操作启用 | |
CN117882045A (zh) | 用于存储器装置的自动vdm调整 | |
CN115437558A (zh) | 存储器系统中的对角页映射 | |
CN117957521A (zh) | 用于大码字的rain保护的冗余元数据方案 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |