CN113966499A - 用于存储器的数据保护方法及其存储装置 - Google Patents
用于存储器的数据保护方法及其存储装置 Download PDFInfo
- Publication number
- CN113966499A CN113966499A CN202180002502.6A CN202180002502A CN113966499A CN 113966499 A CN113966499 A CN 113966499A CN 202180002502 A CN202180002502 A CN 202180002502A CN 113966499 A CN113966499 A CN 113966499A
- Authority
- CN
- China
- Prior art keywords
- memory
- block
- check code
- storage
- data
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 403
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 231100000863 loss of memory Toxicity 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- 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
-
- 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/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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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/064—Management of blocks
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种能够基于RAID来保护存储器中存储的数据的方法及其存储装置,所述存储器包括多个存储模块,每个存储模块包括第一存储块和第二存储块,所述方法包括:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。
Description
技术领域
本发明总体上涉及数据存储技术领域,以及更具体地,涉及一种能够基于RAID来保护存储器中存储的数据的方法及其存储装置。
背景技术
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是将多个独立磁盘通过不同的组合方式组合在一起形成的磁盘阵列。由于RAID可以通过数据校验/镜像功能提供容错,从而增强了数据存储的安全性。因此,RAID已经广泛应用于数据存储和数据保护的各个领域中。
近年来,为了进一步提高闪速存储器件的位密度以及降低其成本,开发出了三维(3D)NAND闪存存储器(3D NAND Flash Memory Device)。但是,在3D NAND闪存存储器的编程过程中,有时会编程失败或数据编程错误,这时数据无法从3D NAND闪存存储器读出,造成数据丢失。利用RAID技术,可以恢复丢失的数据。具体地说,对编程成功的数据以及通过所有待编程的数据获得的校验码执行“异或”操作可以恢复丢失的数据。
如图1中所示,3D NAND闪存存储器可以包括n个存储模块,每个存储模块包括(例如)2个存储块。为了提高编程速度,可以同时对多个存储块并行编程。但是,当对存储模块1中的存储块0编程失败时,还可能伴随导致存储模块1中的相邻存储块1的数据丢失。由于同时有两个存储块的数据丢失,如果只生成一个校验码,将无法利用RAID技术恢复丢失的数据。
因此,需要一种用于存储器的数据保护方法及其存储装置,其能够在存储器中的多个存储块数据丢失时恢复丢失的数据。
发明内容
根据本公开的实施例,提供了一种用于存储器的数据保护方法,所述存储器包括多个存储模块,每个存储模块包括第一存储块和第二存储块,所述方法包括:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。
在一些实施例中,所述存储模块为存储管芯或存储面。
在一些实施例中,每个存储模块的所述第一存储块和所述第二存储块为物理相邻的存储块。
在一些实施例中,对所述多个存储模块中的每个存储模块的相应第一存储块的存储数据执行异或操作来生成所述第一校验码,对所述多个存储模块中的每个存储模块的相应第二存储块的存储数据执行异或操作来生成所述第二校验码,并且对所述第一校验码和所述第二校验码执行异或操作来生成所述附加校验码。
在一些实施例中,还包括将所述附加校验码存储至所述存储器。
在一些实施例中,所述存储器为3D NAND闪存存储器。
在一些实施例中,还包括步骤:在所述多个存储模块的第一存储块和第二存储块中的其中一个存储块发生数据丢失的情况下,使用所述附加校验码以及所述多个存储模块的第一存储块和第二存储块中存储的未丢失的数据来恢复所述一个存储块的数据。
在一些实施例中,在将所述附加校验码存储至所述存储器之前,所述第一校验码和所述第二校验码被存储在相应的缓存中。
在一些实施例中,还包括步骤:在将所述附加校验码存储至所述存储器之后,从所述缓存中删除所述第一校验码和所述第二校验码。
在一些实施例中,还包括步骤:在从所述缓存中删除所述第一校验码和所述第二校验码之前,基于RAID技术并且使用所述第一校验码和所述第二校验码对所述多个存储模块的第一存储块和第二存储块中的一个或多个存储块的数据进行恢复操作。
根据本公开的实施例,提供了一种存储器系统,包括:存储器,所述存储器包括多个存储模块,并且每个所述存储模块包括第一存储块和第二存储块;以及控制器,所述控制器连接至所述存储器并且被配置为:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。
在一些实施例中,所述存储模块为存储管芯或存储面。
在一些实施例中,每个存储模块的所述第一存储块和所述第二存储块为物理相邻的存储块。
在一些实施例中,所述控制器被配置为对所述多个存储模块中的每个存储模块的相应第一存储块的存储数据执行异或操作来生成所述第一校验码,对所述多个存储模块中的每个存储模块的相应第二存储块的存储数据执行异或操作来生成所述第二校验码,并且对所述第一校验码和所述第二校验码执行异或操作来生成所述附加校验码。
在一些实施例中,所述控制器还被配置为将所述附加校验码存储至所述存储器。
在一些实施例中,所述存储器为3D NAND闪存存储器。
在一些实施例中,所述控制器被配置为在所述多个存储模块的第一存储块和第二存储块中的其中一个存储块发生数据丢失的情况下,使用所述附加校验码以及所述多个存储模块的第一存储块和第二存储块中存储的未丢失的数据来恢复所述一个存储块的数据。
在一些实施例中,所述控制器还被配置为在将所述附加校验码存储至所述存储器之前,将所述第一校验码和所述第二校验码存储在相应的缓存中。
在一些实施例中,所述控制器还被配置为在将所述附加校验码存储至所述存储器之后,从所述缓存中删除所述第一校验码和所述第二校验码。
在一些实施例中,所述控制器还被配置为在从所述缓存中删除所述第一校验码和所述第二校验码之前,基于RAID技术并且使用所述第一校验码和所述第二校验码对所述多个存储模块的第一存储块和第二存储块中的一个或多个存储块的数据进行恢复操作。
根据本公开的实施例,提供了一种计算机可读存储介质,在其上存储有程序代码,当所述程序代码由处理器执行时,使得所述处理器执行根据本发明所述的方法。
附图说明
附图被并入本文并形成说明书的一部分,例示了本公开的实施例并与说明书一起进一步用以解释本公开的原理,并使相关领域的技术人员能够做出和使用本公开。
图1示出了在同一存储模块中的两相邻存储块数据丢失的情况下利用一个校验码将无法恢复数据的方法的示意图。
图2示出了根据本公开一实施例的用于存储器的数据保护方法的示意图。
图3示出了根据本公开又一实施例的用于存储器的数据保护方法的示意图。
图4示出了根据本公开再一实施例的用于存储器的数据保护方法的流程图;以及
图5示出了根据本公开一实施例的存储器系统的示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
要指出的是,在说明书中提到“一个实施例”、“实施例”、“一些实施例”等表示所述的实施例可包括特定的特征、结构或特性,但未必每个实施例都包括该特定特征、结构或特性。此外,这样的措辞用语未必是指相同的实施例。另外,在结合实施例描述特定的特征、结构或特性时,结合明确或未明确描述的其它实施例实现此类特征、结构或特性应在相关领域技术人员的知识范围之内。
尽管将参考3D NAND闪存存储器来描述本发明的实施例,但应当理解,本发明创造性概念的实施例不限于此配置。例如,在不脱离本发明的范围的情况下,本发明适用于其他非易失性存储器件,例如电可擦除可编程ROM(EEPROM)、NOR闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。
图2示出了根据本公开一实施例的用于存储器的数据保护方法的示意图。与图1中所示的一样,3D NAND闪存存储器包括n个存储模块,每个存储模块包括(例如)2个存储块。同样地,当对存储模块1的存储块0编程失败时,可能伴随导致存储模块1中的相邻存储块1的数据丢失。但是,与图1中所示不同的是,利用存储模块0中的存储块0、存储模块1中的存储块0、……存储模块n中的存储块0中的存储数据生成校验码P0,同时利用存储模块0中的存储块1、存储模块1中的存储块1、……存储模块n中的存储块1中的存储数据生成另一校验码P1。利用校验码P0以及存储模块0中的存储块0、存储模块2中的存储块0、存储模块3中的存储块0、……存储模块n中的存储块0中存储的未丢失的数据,可以恢复存储模块1中的存储块0中丢失的数据;并且利用校验码P1以及存储模块0中的存储块1、存储模块2中的存储块1、存储模块3中的存储块1、……存储模块n中的存储块1中存储的未丢失的数据,可以恢复存储模块1中的存储块1中丢失的数据。但是,在这种情况下,存储校验码P0和P1可能占用大量的内存。在内存有限的情况下,可能需要将校验码P0和P1存储至3D NAND闪存存储器缓存中,这将导致大量的NAND闪存存储器缓存的写入和读出,从而严重影响数据存储的速度。
图3示出了根据本公开又一实施例的用于存储器的数据保护方法300的示意图。如图3中所示,3D NAND闪存存储器包括存储模块0、存储模块1、存储模块2、……存储模块n。每个存储模块例如包括存储块0和存储块1。
在对3D NAND闪存存储器的多个存储模块中的多个存储块并行编程时,有时候一个存储块(Block)的编程失败可能导致与其物理相邻并且位于同一存储模块中的存储块的数据丢失。例如,存储模块1中的存储块0的编程失败可能导致存储模块1中的存储块1(其与存储块0物理相邻)的数据丢失。
在一实施例中,为了利用RAID技术同时找回存储模块1的存储块0和存储块1中丢失的数据(例如因为编程过程中编程错误等所丢失的数据),与图2中所示的一样,基于存储模块0中的存储块0、存储模块1中的存储块0、存储模块2中的存储块0、……存储模块n中的存储块0中存储的数据来生成校验码P0。另外,基于存储模块0中的存储块1、存储模块1中的存储块1、存储模块2中的存储块1、……存储模块n中的存储块1中存储的数据来生成另一校验码P1。也就是说,为多个存储模块上的第一存储块和对应该多个存储模块的第二存储块分别准备不同的校验码(例如P0和P1),第一存储块和第二存储块在存储模块上可以物理相邻地布置。在一实施例中,编程过程中生成的校验码P0、P1可以临时地存储在相应的缓存中并占用一定的缓存空间;将理解,在从缓存中删除临时存储的校验码P0、P1之前,与图2中所示实施例的方法类似,利用编程过程中生成的校验码P0、P1以及n个存储模块的存储块0和存储块1中存储的未丢失的数据,能够恢复某一存储模块的存储块0和存储块1中丢失的数据。
在一实施例中,校验码P0可以通过对存储模块0中的存储块0、存储模块1中的存储块0、存储模块2中的存储块0、……存储模块n中的存储块0中存储的数据执行“异或”(XOR)操作来生成,并且校验码P1可以通过对存储模块0中的存储块1、存储模块1中的存储块1、存储模块2中的存储块1、……存储模块n中的存储块1中存储的数据执行“异或”(XOR)操作来生成。XOR可以是对两个操作数的逻辑运算,如果进行“异或”的两个值不同,则它产生逻辑值“1”;如果进行“异或”的两个值相同,则它产生逻辑值“0”。例如,如果存储模块0的存储块0存储的数据为“11001010”,并且存储模块1的存储块0存储的数据为“10000011”,则“异或”之后的结果为“01001001”;接下来,将上述结果与存储模块2的存储块0中存储的数据再执行“异或”操作,直至执行n-2次“异或”操作之后将所得的结果与存储模块n的存储块0中存储的数据再执行“异或”操作,从而计算得到n个存储模块的对应存储块0的校验码P0。类似地,可以得到n个存储模块的对应存储块1的校验码P1。
发明人研究发现,一个存储块的编程失败可能导致与其物理相邻并且位于同一存储模块中的另一存储块发生数据丢失,并且一般发生在编程阶段。也就是说,一旦3D NAND闪存存储器编程完成,即使例如在数据保持阶段因为随着时间的流逝导致某一存储块(例如存储模块1中的存储块0)的数据丢失,也不会导致与其位于同一存储模块中并且与其物理相邻的存储块(例如存储模块1中的存储块1)中存储的数据的丢失。因此,3D NAND闪存存储器在数据保持阶段最多只有一个存储块存在数据丢失。
鉴于此考虑,图3所示实施例的方法与图2所示实施例的方法不同的是,在编程阶段或编程完成后,进一步基于校验码P0和校验码P1来生成附加校验码P。利用该附加校验码P以及n个存储模块的存储块0和存储块1中存储的未丢失的数据来恢复在数据保持阶段某一个存储块中丢失的数据。在一实施例中,附加校验码P同样可以通过对校验码P0和P1执行“异或”(XOR)操作来生成。在生成附加校验码P之后,可以将其存储至3DNAND闪存存储器缓存中。在一个实施例中,在将附加校验码P存储至3DNAND闪存存储器缓存之后,可以从所述缓存中删除临时存储的第一校验码P0和第二校验码P1。
在图3所示实施例的方法300中,在3D NAND闪存存储器的编程过程中,即使例如存储模块1中的存储块0的编程失败导致存储模块1中的存储块1也发生数据丢失,由于校验码P0和校验码P1的存在,能够恢复存储模块1中的存储块0和存储块1中丢失的数据。另外,通过增加的“异或”操作,基于校验码P0和校验码P1获得附加校验码P,能够基于该附加校验码P以及n个存储模块的存储块0和存储块1中存储的未丢失的数据来恢复在编程操作完成之后某一存储块中丢失的数据,并且使得需要存储的校验码数据大大减小,从而减少相应的例如内存的用量需求。在需要将附加校验码P存储至3D NAND闪存存储器缓存中时,将大大减少3DNAND闪存存储器缓存的读写次数,提高系统性能,减少设备损耗。
在图3所示的方法中,每个存储模块包括两个存储块,即存储块0和存储块1。但是对于本领域技术人员来说,每个存储模块可以包括多个存储块,例如每个存储模块可以包括存储块0、存储块1、存储块2、……存储块n。在这种情况下,可以分别对存储模块0至存储模块n的每个相应存储块执行“异或”操作,从而得到n个校验码,例如,P0、P1、P2、……Pn。示例地,可以通过对存储模块0中的存储块0、存储模块1中的存储块0、存储模块2中的存储块0、……存储模块n中的存储块0中存储的数据依次执行“异或”(XOR)操作来生成校验码P0;对存储模块0中的存储块1、存储模块1中的存储块1、存储模块2中的存储块1、……存储模块n中的存储块1中存储的数据依次执行“异或”(XOR)操作来生成校验码P1;……对存储模块0中的存储块n、存储模块1中的存储块n、存储模块2中的存储块n、……存储模块n中的存储块n中存储的数据依次执行“异或”(XOR)操作来生成校验码Pn。然后,可以对校验码P0、P1、P2、……Pn执行“异或”(XOR)操作来生成附加校验码P。
在图3所示的方法中,存储模块可以为存储面(Plane),每个所述存储面可以包括多个存储块。在一个实施例中,3D NAND闪存存储器可以包括例如四个存储面,并且每一存储面可以包括例如六个存储块。每一存储块可以包括多个存储单元,多个存储单元可以以垂直存储串(Memory String)的形式布置,其中,可以通过诸如位线和字线的互连对每一存储单元进行寻址。在另一实施例中,存储模块还可以为存储管芯。
图4示出了根据本发明一实施例的用于存储器的数据保护方法400的流程图,所述存储器包括多个存储模块,每个存储模块包括第一存储块和第二存储块。如图4中所示,方法400包括:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码(步骤S410);以及在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据(步骤S420)。步骤410和420说明如下:
步骤S410:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码。仍以图3所示的方法为例,在编程过程中,在存储模块0、存储模块1、存储模块2、……存储模块n中的每一个存储模块包括两个存储块(例如存储块0、存储块1)的情况下,基于存储模块0中的存储块0、存储模块1中的存储块0、存储模块2中的存储块0、……存储模块n中的存储块0中存储的数据进行“XOR”操作生成校验码P0;基于存储模块0中的存储块1、存储模块1中的存储块1、存储模块2中的存储块1、……存储模块n中的存储块1中存储的数据进行“XOR”操作生成校验码P1。应理解,在存储模块0、存储模块1、存储模块2、……存储模块n中的每一个存储模块包括n个存储块的情况下,基于类似的方法可以生成n个校验码P0、P1、P2、……Pn。
在一实施例中,每个存储模块的第一存储块和第二存储块(例如存储块0、存储块1)是物理相邻的存储块。
步骤S420:在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。仍以图3所示的方法为例,在编程过程之后,例如对校验码P0和校验码P1执行“异或”操作来生成附加校验码P。应理解,在存储模块0、存储模块1、存储模块2、……存储模块n中的每一个存储模块包括n个存储块的情况下,可以在编程过程之后,例如对校验码P0、校验码P1、校验码P2、……校验码Pn执行“异或”操作来生成附加校验码P。
在一实施例中,还包括将附加校验码P存储至3D NAND闪存存储器中,例如,3DNAND闪存存储器的存储阵列的某部分区域可以预先地被确定为用来存储附加校验码的缓存区域。
在一个实施例中,可以基于生成的附加校验码P以及多个存储模块的第一存储块和第二存储块中存储的未丢失的数据来恢复在编程过程之后存储器的某一个存储块丢失的数据。例如,仍以图3所示的方法为例,假设在编程过程之后,存储模块1的存储块0中存储的数据丢失。为了恢复存储模块1的存储块0中丢失的数据,可以首先将生成的附加校验码P与存储模块n的存储块1中存储的数据执行“异或”操作,然后将所得结果与存储模块n-1的存储块1中存储的数据再执行“异或”操作,直至将依次执行“异或”操作的结果与存储模块0的存储块1中存储的数据再执行“异或”操作,然后再将这n次“异或”操作的结果与存储模块n的存储块0中存储的数据执行“异或”操作,然后将所得结果与存储模块n-1的存储块0中存储的数据再执行“异或”操作,直至将依次执行“异或”操作的结果与存储模块2的存储块0中存储的数据再执行“异或”操作,从而获得上述一共2n-2次“异或”操作的最终结果,该最终结果也是存储模块0的存储块0中存储的数据与存储模块1的存储块0中存储的数据执行“异或”操作的结果。因此,利用基于第一校验码P0和第二校验码P1生成的附加校验码P,可以恢复在编程过程之后存储模块1的存储块0中丢失的数据。应理解,在存储模块0、存储模块1、存储模块2、……存储模块n中的每一个存储模块包括n个存储块的情况下,基于类似的方法可以恢复在编程过程之后存储器的某一个存储块中丢失的数据。
图5示出了根据本公开一实施例的具有存储器的系统500的示意图。系统500可以是移动电话、台式计算机、膝上型计算机、平板计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VR)设备、增强现实(AR)设备或具有存储器的任何其他合适电子设备。如图5中所示,系统500可以包括主机510和具有一个或多个存储器501和存储器控制器502的存储器系统520。主机510可以被配置为将数据发送到存储器501或从存储器501接收数据。
存储器501可以是本文所公开的任何存储器,例如3D NAND闪存存储器,其包括多个存储模块(例如,存储管芯),每个存储模块包括第一存储块和第二存储块,如上文详细所述。
如图5中所示,存储器控制器502包括前端接口5021和后端接口5022,前端接口5021通过通道Lane 0、Lane 1、Lane2、Lane3耦接到主机510,并且后端接口5022通过通道CH1、CH2、CH3、CH4耦接到存储器501,其中前端接口5021可以根据特定通信协议(例如,PCIe、NVMe)与主机510通信;后端接口5022包括RAID模块,RAID模块被配置为在存储器501的编程过程中,基于存储器501的多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及在存储器501的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,以用于恢复存储器501的一个存储块丢失的数据。RAID模块具体可以通过例如后端接口5022的控制器中所写入的固件(Firmware)等实现。
存储器控制器502还包括具有处理单元1、处理单元2、……、处理单元n的处理模块5023,对应处理单元可以配置有相应的固件,例如,实现FTL(Flash to Logic,闪存到逻辑)功能的固件,处理单元上运行的相应固件可以基于接收的来自主机510的指令来控制存储器501的操作,例如,读取、擦除和编程操作。存储器控制器502还包括静态随机存取存储器(SRAM)5024、动态随机存取存储器(DRAM)控制器5025、动态随机存取存储器(DRAM)接口5026,其中动态随机存取存储器(DRAM)接口5026耦接至动态随机存取存储器(DRAM)503。如图5中所示,存储器控制器502的各部件可以连接至总线&电桥5027。
如上所述,根据本发明一实施例的存储器系统520能够恢复在对存储器501的编程过程中多个存储块的数据丢失,并且在编程过程之后针对基于多个存储模块上的第一存储块和对应该多个存储模块的第二存储块分别获得的校验码增加一次异或操作,从而能够恢复数据保持阶段存储器501中的某一个存储块丢失的数据,同时使得需要存储的校验码数据大大减小,减少内存的用量。在需要将校验码数据存储至存储器缓存中时,将大大减少存储器缓存的读写次数,提高系统性能,减少设备损耗。
多个存储模块上的第一存储块和对应该多个存储模块的第二存储块分别获得的校验码
根据一个实施例,提供了一种计算机可读存储介质,在其上存储有程序代码,当所述程序代码由处理器执行时,使得所述处理器能够执行本说明书结合图2-3描述的各个实施例中的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
可读存储介质的实施例包括非易失性存储卡和ROM等。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
已经结合各种装置和方法描述了控制器。所述控制器可以使用电子硬件、计算机软件或其任意组合来实施。所述控制器是实施为硬件还是软件将取决于具体的应用以及施加在系统上的总体设计约束。作为示例,本公开中给出的控制器、控制器的任意部分、或者控制器的任意组合可以实施为微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门逻辑、分立硬件电路、以及配置用于执行在本公开中描述的各种功能的其它适合的处理部件。本公开给出的控制器、控制器的任意部分、或者控制器的任意组合的功能可以实施为由微处理器、微控制器、DSP或其它适合的平台所执行的软件。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (21)
1.一种用于存储器的数据保护方法,所述存储器包括多个存储模块,每个存储模块包括第一存储块和第二存储块,所述方法包括:
在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及
在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。
2.根据权利要求1所述的方法,其中,所述存储模块为存储管芯或存储面。
3.根据权利要求1所述的方法,其中,每个存储模块的所述第一存储块和所述第二存储块为物理相邻的存储块。
4.根据权利要求1所述的方法,其中,对所述多个存储模块中的每个存储模块的相应第一存储块的存储数据执行异或操作来生成所述第一校验码,对所述多个存储模块中的每个存储模块的相应第二存储块的存储数据执行异或操作来生成所述第二校验码,并且对所述第一校验码和所述第二校验码执行异或操作来生成所述附加校验码。
5.根据权利要求1所述的方法,还包括将所述附加校验码存储至所述存储器。
6.根据权利要求1所述的方法,其中,所述存储器为3D NAND闪存存储器。
7.根据权利要求1所述的方法,还包括步骤:在所述多个存储模块的第一存储块和第二存储块中的其中一个存储块发生数据丢失的情况下,使用所述附加校验码以及所述多个存储模块的第一存储块和第二存储块中存储的未丢失的数据来恢复所述一个存储块的数据。
8.根据权利要求5所述的方法,其中,在将所述附加校验码存储至所述存储器之前,所述第一校验码和所述第二校验码被存储在相应的缓存中。
9.根据权利要求8所述的方法,还包括步骤:
在将所述附加校验码存储至所述存储器之后,从所述缓存中删除所述第一校验码和所述第二校验码。
10.根据权利要求9所述的方法,还包括步骤:
在从所述缓存中删除所述第一校验码和所述第二校验码之前,基于RAID技术并且使用所述第一校验码和所述第二校验码对所述多个存储模块的第一存储块和第二存储块中的一个或多个存储块的数据进行恢复操作。
11.一种存储器系统,包括:
存储器,所述存储器包括多个存储模块,并且每个所述存储模块包括第一存储块和第二存储块;以及
控制器,所述控制器连接至所述存储器并且被配置为:在所述存储器的编程过程中,基于所述多个存储模块中的每个存储模块的相应第一存储块的存储数据来生成第一校验码,并且基于所述多个存储模块中的每个存储模块的相应第二存储块的存储数据来生成第二校验码;以及在所述存储器的编程过程之后,基于所述第一校验码和所述第二校验码来生成附加校验码,其中,所述附加校验码用于恢复所述多个存储模块的第一存储块和第二存储块中的其中一个存储块的数据。
12.根据权利要求11所述的存储器系统,其中,所述存储模块为存储管芯或存储面。
13.根据权利要求11所述的存储器系统,其中,每个存储模块的所述第一存储块和所述第二存储块为物理相邻的存储块。
14.根据权利要求11所述的存储器系统,其中,所述控制器被配置为对所述多个存储模块中的每个存储模块的相应第一存储块的存储数据执行异或操作来生成所述第一校验码,对所述多个存储模块中的每个存储模块的相应第二存储块的存储数据执行异或操作来生成所述第二校验码,并且对所述第一校验码和所述第二校验码执行异或操作来生成所述附加校验码。
15.根据权利要求11所述的存储器系统,所述控制器还被配置为将所述附加校验码存储至所述存储器。
16.根据权利要求11所述的存储器系统,其中,所述存储器为3D NAND闪存存储器。
17.根据权利要求11所述的存储器系统,其中,所述控制器被配置为在所述多个存储模块的第一存储块和第二存储块中的其中一个存储块发生数据丢失的情况下,使用所述附加校验码以及所述多个存储模块的第一存储块和第二存储块中存储的未丢失的数据来恢复所述一个存储块的数据。
18.根据权利要求15所述的存储器系统,其中,所述控制器还被配置为在将所述附加校验码存储至所述存储器之前,将所述第一校验码和所述第二校验码存储在相应的缓存中。
19.根据权利要求18所述的存储器系统,其中,所述控制器还被配置为在将所述附加校验码存储至所述存储器之后,从所述缓存中删除所述第一校验码和所述第二校验码。
20.根据权利要求19所述的存储器系统,其中,所述控制器还被配置为在从所述缓存中删除所述第一校验码和所述第二校验码之前,基于RAID技术并且使用所述第一校验码和所述第二校验码对所述多个存储模块的第一存储块和第二存储块中的一个或多个存储块的数据进行恢复操作。
21.一种计算机可读存储介质,在其上存储有程序代码,当所述程序代码由处理器执行时,使得所述处理器执行根据权利要求1至10中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311240546.XA CN117093156A (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/117127 WO2023035136A1 (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311240546.XA Division CN117093156A (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113966499A true CN113966499A (zh) | 2022-01-21 |
CN113966499B CN113966499B (zh) | 2023-10-27 |
Family
ID=79473704
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311240546.XA Pending CN117093156A (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
CN202180002502.6A Active CN113966499B (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311240546.XA Pending CN117093156A (zh) | 2021-09-08 | 2021-09-08 | 用于存储器的数据保护方法及其存储装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230070503A1 (zh) |
KR (1) | KR20230097192A (zh) |
CN (2) | CN117093156A (zh) |
WO (1) | WO2023035136A1 (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047872A1 (en) * | 2004-08-31 | 2006-03-02 | Yutaka Nakagawa | Storage system has the function of preventing drive write error |
US20080189590A1 (en) * | 2007-02-01 | 2008-08-07 | Marvell Technology Japan Y.K. | Magnetic disc controller and method |
US20090319878A1 (en) * | 2008-06-24 | 2009-12-24 | Kabushiki Kaisha Toshiba | Check code generating apparatus, method of generating check code, and communication apparatus |
CN101783955A (zh) * | 2010-03-24 | 2010-07-21 | 杭州华三通信技术有限公司 | 一种数据异常时的恢复方法和设备 |
CN101848055A (zh) * | 2009-03-23 | 2010-09-29 | 华为技术有限公司 | 一种数据修正方法和装置 |
US20170315867A1 (en) * | 2016-04-27 | 2017-11-02 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
CN107643882A (zh) * | 2017-09-29 | 2018-01-30 | 昂纳信息技术(深圳)有限公司 | 一种数据可靠性的存储及恢复方法、系统及存储装置 |
CN111443887A (zh) * | 2020-03-26 | 2020-07-24 | 京东方科技集团股份有限公司 | 显示驱动芯片及其数据处理方法 |
CN113342566A (zh) * | 2020-03-03 | 2021-09-03 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469100B (zh) * | 2015-08-17 | 2019-04-05 | 华为技术有限公司 | 一种数据恢复的方法、存储的方法相应的装置及系统 |
TWI640997B (zh) * | 2017-12-27 | 2018-11-11 | 群聯電子股份有限公司 | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI688965B (zh) * | 2019-08-14 | 2020-03-21 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 |
CN112558875A (zh) * | 2020-12-14 | 2021-03-26 | 北京百度网讯科技有限公司 | 数据校验方法、装置、电子设备及存储介质 |
US11599417B2 (en) * | 2021-01-14 | 2023-03-07 | Changxin Memory Technologies, Inc. | Error correction system |
-
2021
- 2021-09-08 CN CN202311240546.XA patent/CN117093156A/zh active Pending
- 2021-09-08 CN CN202180002502.6A patent/CN113966499B/zh active Active
- 2021-09-08 WO PCT/CN2021/117127 patent/WO2023035136A1/zh unknown
- 2021-09-08 KR KR1020237019115A patent/KR20230097192A/ko active Search and Examination
-
2022
- 2022-03-04 US US17/687,004 patent/US20230070503A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047872A1 (en) * | 2004-08-31 | 2006-03-02 | Yutaka Nakagawa | Storage system has the function of preventing drive write error |
US20080189590A1 (en) * | 2007-02-01 | 2008-08-07 | Marvell Technology Japan Y.K. | Magnetic disc controller and method |
US20090319878A1 (en) * | 2008-06-24 | 2009-12-24 | Kabushiki Kaisha Toshiba | Check code generating apparatus, method of generating check code, and communication apparatus |
CN101848055A (zh) * | 2009-03-23 | 2010-09-29 | 华为技术有限公司 | 一种数据修正方法和装置 |
CN101783955A (zh) * | 2010-03-24 | 2010-07-21 | 杭州华三通信技术有限公司 | 一种数据异常时的恢复方法和设备 |
US20170315867A1 (en) * | 2016-04-27 | 2017-11-02 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
CN107643882A (zh) * | 2017-09-29 | 2018-01-30 | 昂纳信息技术(深圳)有限公司 | 一种数据可靠性的存储及恢复方法、系统及存储装置 |
CN113342566A (zh) * | 2020-03-03 | 2021-09-03 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN111443887A (zh) * | 2020-03-26 | 2020-07-24 | 京东方科技集团股份有限公司 | 显示驱动芯片及其数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20230097192A (ko) | 2023-06-30 |
CN113966499B (zh) | 2023-10-27 |
US20230070503A1 (en) | 2023-03-09 |
WO2023035136A1 (zh) | 2023-03-16 |
CN117093156A (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107678695B (zh) | 基于可用存储器空间选择冗余存储配置 | |
CN104425019A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN110089035B (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
CN104424040A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN104424127A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN111813609B (zh) | 一种存储介质中数据恢复方法、数据恢复系统及相关设备 | |
CN104425018B (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN104425020A (zh) | 存取快闪存储器中储存单元的方法以及使用该方法的装置 | |
CN112204515A (zh) | 逻辑到物理数据结构 | |
TW201913380A (zh) | 資料儲存裝置以及其操作方法 | |
US11288183B2 (en) | Operating method of memory system and host recovering data with write error | |
CN108389600B (zh) | 数据储存装置以及参数改写方法 | |
CN114503082B (zh) | 配备有数据保护方案的存储器装置 | |
CN112905107A (zh) | 数据存储装置及其操作方法 | |
CN113966499B (zh) | 用于存储器的数据保护方法及其存储装置 | |
CN114528145A (zh) | 一种存储系统、操作方法及控制器 | |
CN110431531B (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
CN111796774B (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
US11023388B2 (en) | Data path protection parity determination for data patterns in storage devices | |
US12032860B2 (en) | Data protection method for memory and storage device thereof | |
US20230103004A1 (en) | Data protection method for memory and storage device thereof | |
CN113721832A (zh) | 数据储存装置与数据处理方法 | |
CN113424262A (zh) | 一种存储校验方法及装置 | |
CN117632579B (zh) | 存储器控制方法和存储器存储装置 | |
CN113703684B (zh) | 基于raid的数据存储方法、数据读取方法及存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |