CN103713857A - 存储数据的方法及存储装置 - Google Patents
存储数据的方法及存储装置 Download PDFInfo
- Publication number
- CN103713857A CN103713857A CN201310724078.3A CN201310724078A CN103713857A CN 103713857 A CN103713857 A CN 103713857A CN 201310724078 A CN201310724078 A CN 201310724078A CN 103713857 A CN103713857 A CN 103713857A
- Authority
- CN
- China
- Prior art keywords
- blank cell
- data
- health category
- storage
- stored
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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/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
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种存储数据的方法及存储装置,该方法用于空白存储单元的健康等级至少分为三级的存储装置,包括:根据待存储数据的大小在存储装置中选择空白存储单元;根据与空白存储单元的健康等级对应的编码方式对待存储数据进行编码处理,以获得数据的校验数据,其中健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小;将数据以及校验数据存储在空白存储单元中。通过上述方式,本发明能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,降低存储装置的成本。
Description
技术领域
本发明涉及存储技术领域,特别是涉及一种存储数据的方法及存储装置。
背景技术
固态硬盘一般采用与非门闪存(NAND Flash)来实现。NAND Flash芯片的使用寿命一般采用擦写次数(P/E Cycle)来确定。单层式储存单元类型的NAND Flash芯片可10万次擦写,多层式储存单元类型的NAND Flash芯片一般小于1万次擦写,三层式存储单元类型的NANDFlash芯片一般小于1千次擦写。P/E Cycle次数降低,表明固态硬盘的寿命降低,同时在接近P/E Cycle寿命时,固态硬盘的可靠性也会急剧衰减。
提高固态硬盘寿命的方法主要是坏块管理技术和坏页管理技术,两者本质上都是按照厂商标准配置的冗余比(即有效数据与校验数据的比值),将存储芯片内的块和页划分为健康块及坏块,将存储芯片内的页划分为健康页及坏页,其中,健康块和健康页可以继续使用,坏块和坏页禁止使用。
本申请的发明人在长期的研发中发现,上述两种提高固态硬盘寿命的方法中,Flash芯片存储单元利用率低,简单地将Flash芯片内部的存储单元划为可用与不可用,已经不能满足固态硬盘长寿命、高容量和低成本的发展需求。
发明内容
本发明主要解决的技术问题是提供一种存储数据的方法及存储装置,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,降低存储装置的成本。
第一方面,本发明提供一种存储数据的方法,所述方法用于空白存储单元的健康等级至少分为三级的存储装置,包括:根据待存储数据的大小在存储装置中选择空白存储单元;根据与所述空白存储单元的健康等级对应的编码方式对所述待存储数据进行编码处理,以获得所述数据的校验数据,其中所述健康等级用于指示所述空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小;将所述数据以及所述校验数据存储在所述空白存储单元中。
在第一方面的第一种可能的实现方式中,所述空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中所述第一空白存储单元的健康等级高于所述第二空白存储单元的健康等级;所述将所述数据以及所述校验数据存储在所述空白存储单元中包括:将所述数据以及所述校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且所述第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据待存储数据的大小在存储装置中选择空白存储单元的步骤之前,还包括:确定所述空白存储单元的健康等级。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述确定所述空白存储单元的健康等级包括:记录所述空白存储单元的读状态参数、写状态参数以及擦状态参数三者中的一种或一种以上;获取所述空白存储单元所属的存储空间的健康等级;根据所述空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及所述空白存储单元所属的存储单元的健康等级,计算所述空白存储单元的健康值;根据所述空白存储单元的健康值以及预设的健康等级门限值,确定所述空白存储单元的健康等级。
结合第一方面或第一方面的第一种至第三种中任何一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述空白存储单元包括下述存储单元中的至少一个:页Page、块Block或面Plane。
第二方面,本发明提供一种存储装置,所述存储装置的空白存储单元的健康等级至少分为三级,所述存储装置包括:选择模块,用于根据待存储数据的大小在存储装置中选择空白存储单元;处理模块,用于根据与所述空白存储单元的健康等级对应的编码方式对所述待存储数据进行编码处理,以获得所述数据的校验数据,其中所述健康等级用于指示所述空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小;存储模块,用于将所述数据以及所述校验数据存储在所述空白存储单元中。
在第二方面的第一种可能的实现方式中,所述空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中所述第一空白存储单元的健康等级高于所述第二空白存储单元的健康等级;所述存储模块具体用于将所述数据以及所述校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且所述第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述存储装置还包括确定模块,所述确定模块用于确定所述空白存储单元的健康等级。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述确定模块包括:记录单元,用于记录所述空白存储单元的读状态参数、写状态参数以及擦状态参数三者中的一种或一种以上;获取单元,用于获取所述空白存储单元所属的存储空间的健康等级;计算单元,用于根据所述空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及所述空白存储单元所属的存储单元的健康等级,计算所述空白存储单元的健康值;确定单元,用于根据所述空白存储单元的健康值以及预设的健康等级门限值,确定所述空白存储单元的健康等级。
结合第二方面或第二方面的第一种至第三种中任何一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述空白存储单元包括下述存储单元中的至少一个:页Page、块Block或面Plane。
本发明的有益效果是:区别于现有技术的情况,本发明用于空白存储单元的健康等级至少分为三级,由于空白存储单元的健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小,这使得每个空白存储单元在保证存储数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,降低存储装置的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种存储数据的方法的流程图;
图2是本发明实施例提供的另一种存储数据的方法的流程图;
图3是本发明实施例提供的一种在存储装置中存储数据的方法中使用的存储单元健康状态表的示意图;
图4是本发明实施例提供的一种存储数据的方法中健康等级不同的空白存储空间页的组合示意图;
图5是本发明实施例提供的一种存储数据的方法中页存储空间分配示意图;
图6是本发明实施例提供的一种存储装置的结构示意图;
图7是本发明实施例提供的另一种存储装置的结构示意图;
图8是本发明提供的一种存储装置的物理结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
下面结合附图和实施例对本发明进行详细说明。
参阅图1,图1是本发明实施例提供的一种存储数据的方法的流程图,该方法用于空白存储单元的健康等级至少分为三级的存储装置,包括:
步骤S101:根据待存储数据的大小在存储装置中选择空白存储单元。
本发明实施例的存储装置的主要功能是存储各种数据,并能在计算机运行过程中高速、自动地完成数据的存取。
在计算机中最小的信息单位是比特bit,也就是一个二进制位,8个bit组成一个Byte,也就是字节。计算机的存储装置容量是以字节为最小单位来计算的,存储单元是指理论上能够存储一定数量字节的存储空间,空白存储单元是指未存储数据的空白的存储单元。
其中,空白存储单元可以是下述存储单元中的至少一个:页Page、块Block或面Plane。例如:NAND Flash芯片通常由一个内部寄存器和存储矩阵组成,存储矩阵包括若干块,每个块又包含若干页,每个页包含若干字节;每种NAND Flash芯片的存储矩阵大小定义不同,例如有一种NAND Flash以8640个字节组成一个页,256个页组成一个块,2048个块组成一个面,2个面组成一个逻辑单元LUN(Logical Unit),再由一个或者若干逻辑单元组成整个闪存(Flash)存储装置。在每页中前8192个字节是用于存储数据,后448个字节用于存放数据的校验码(ErrorCorrection Code,ECC),即校验数据。
随着存储装置的反复使用,特别是擦和写的反复使用,存储装置在保证所存储数据可靠性的基础上实际能够存储的数据的大小在不断地下降,所谓存储数据的可靠性是指写入存储装置中的数据和从存储装置中读出的数据是一致的,没有错误。例如,对存储装置的同一个存储单元,在第一次使用时,它能够存储的数据的大小基本和理论上能够存储的数据的大小相同,也可以保证所存储数据的可靠性,存储同样大小的数据,需要很少的校验数据或者根本不需要校验数据;随着擦写次数的增多,写入存储装置时发生错误的比特数增加,此时为了保证所存储数据的可靠性,需要增加校验数据,校验数据占据的空间也增加,数据占据的空间自然减少,所以该存储单元在保证所存储数据的可靠性的基础上实际能够存储的数据减小。
空白存储单元的健康等级可以指示空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小。因此,不同健康等级的空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小是不一样的;在保证所存储数据可靠性的基础上,健康等级高的空白存储单元能够存储的数据多,健康等级低的空白存储单元能够存储的数据少。
在本发明实施例中,空白存储单元的健康等级的数目至少包括三级,可以实现对存储装置的空白存储单元的精细化划分,合理且充分地利用空白存储单元。例如,空白存储单元的健康等级可以划分为第0级、第-1级、第-2级以及第-3级,其中,第0级表示健康状况最好的存储单元,第-1级、第-2级以及第-3级的空不存储单元的健康品质依次降低。
在本步骤中,当需要存储数据时,可以根据待存储数据的大小选择空白存储单元,以使得空白存储单元的存储空间的大小能够存储待存储数据。例如,待存储数据的大小是14K,现有的空白的存储单元有4个,健康等级分别是第0级、第-1级、第-2级以及第-3级,在保证所存储数据可靠性的基础上能够存储的数据的大小分别是8K、7.5K、7K以及6.5K,此时,选择的空白存储单元可以是第0级和第-1级,或第0级和第-2级,或第-1级和第-2级、或第-1级和第-3级等等;又如待存储数据的大小是8K,此时,选择的空白存储单元可以是第0级、或第-1级和第-3级等等。
步骤S102:根据与空白存储单元的健康等级对应的编码方式对待存储数据进行编码处理,以获得数据的校验数据,其中健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小。
在选择空白存储单元后,根据空白存储单元的健康等级,选择与该空白存储单元的健康等级对应的编码方法,对待存储数据进行编码处理,以获得所述数据的校验数据。
步骤S103:将数据以及校验数据存储在空白存储单元中。
在将数据以及校验数据存储到空白存储单元时,有两种方式可以选择:第一种是在空白存储单元中将数据和校验数据分开存储,例如前面存储数据,后面存储校验数据;第二种是在空白存储单元中将数据和校验数据混合存储,即不区分哪些是数据,哪些是校验数据,将数据和校验数据混合在一起进行存储。
总之,本发明实施例用于空白存储单元的健康等级至少分为三级,由于空白存储单元的健康等级用于指示空白存储单元在保证所存储的数据可靠性的基础上存储不同大小的数据,这使得每个空白存储单元在保证存储数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,从而降低存储装置的成本。
参阅图2,图2是本发明实施例提供的另一种存储数据的方法的流程图,本实施例和图1的实施例基本相同,相同之处请参见图1和相应的文字说明,不同之处在于本实施例还包括步骤S201,具体不同之处请参见如下内容:
步骤S201:确定空白存储单元的健康等级。
例如,存储单元包括页、块以及面。根据实际应用情况可以将页、块以及面划分为若干个健康等级,具体的健康等级的数目可以根据实际需要进行设置,如:将页一共划为0至-5共6个健康等级,健康品质依次降低。同理,块与面的健康等级数目也可以参照页的划分情况进行划分;如:可以将块内健康品质为最佳状态的页与块内页的总数的比例设为k,k>90%的块设置为健康块,80%<k<90%的块设置为次健康块,依次类推,可以根据实际情况确定块的健康等级的数目。按照类似的方法可以得到面的健康等级的划分规则和数目。
其中,步骤S201具体包括:子步骤S201a、子步骤S201b、子步骤S201c以及子步骤S201d。
子步骤S201a:记录空白存储单元的读状态参数read、写状态参数write以及擦状态参数erase三者中的一种或一种以上。
空白存储单元在读、写或擦操作后,可以返回读、写或擦各自的状态参数0或1,可以分别代表读、写或擦操作的成功或失败。例如:读状态参数read、写状态参数write以及擦状态参数erase分别是0、0以及1,表明该空白存储单元读成功、写成功以及擦失败。记录空白存储单元的读状态参数、写状态参数以及擦状态参数三者中任意一种或一种以上,都可以用于确定空白存储单元的健康等级。记录的状态参数越多,对于空白存储单元健康等级的精细化划分越有利。
子步骤S201b:获取空白存储单元所属的存储空间的健康等级。
如果空白存储单元是页,则空白存储单元页所属的存储空间是块和面,例如:页所属的块的健康等级是0级,所属的面的健康等级是-1级。
子步骤S201c:根据空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及空白存储单元所属的存储单元的健康等级,计算空白存储单元的健康值。
空白存储单元的健康值是指在保证所存储数据可靠性的基础上存储装置的空白存储单元实际能够存储的数据的大小。
例如,在实际应用中一种计算空白存储单元的健康值的方法是:
以空白存储单元页为例,计算当前空白存储单元页的健康值F(ecc,pe,read,write,erase,b,p),其中,
在实际应用时,可以结合存储装置的纠错能力、PE Cycle等参数和实际需求设置各个加权因子的权值和输入参数。
子步骤S201d:根据空白存储单元的健康值以及预设的健康等级门限值,确定空白存储单元的健康等级。
门限值也可以称为阈值或临界点。健康等级门限值指示在保证所存储的数据可靠性的基础上空白存储单元能够存储的数据的大小的门限值。例如页的第0级和第-1级的健康等级门限值分别是15和25。
比较空白存储单元的健康值和预设的健康等级门限值,确定空白存储单元的健康等级。
例如:页的健康等级则参照如下公式:
其中,A0,A1,A2,A3,A4,A5是划分页的健康等级门限值,例如:假设公司出厂配置的页的纠错能力ecc为32bits,那么ecc的加权因子可以设置为1;其它参数的加权因子设置为0;A0,A1,A2,A3,A4,A5分别取15,25,32,50,100,150,页的健康等级计算公式可等效为:
通过上述方式,根据空白存储单元的读写擦等使用状态,及时地调整空白存储单元的健康等级,保证充分利用空白存储单元的同时,也保证所存储数据的可靠性。
在实际应用中,可以使用存储单元健康状态表(如图3所示)的形式存储空白存储单元的健康等级、健康状态信息等等。存储单元健康状态表可以按照如下方式实现:用表或数组索引形式来建立与存储装置内所有空白存储单元的一一对应关系,各空白存储单元的健康等级则可以用数字或字符串来表示,具体采用哪种实现方式本文不做任何限制,这点取决于存储装置使用的处理器和硬件架构。
存储单元健康状态表的初始值一般在存储装置出厂时确定,可以将存储装置数据区的部分冗余空间用于保存初始状态值,初始状态值可以根据存储装置芯片品质进行设定,也可以按照上述空白存储单元的健康值的算法确定。在存储装置通电后,将上次掉电时的存储单元健康状态表从数据区读到存储装置内存中;存储装置运行过程中,可以通过上述空白存储单元的健康值的算法进行时时更新,从而保证存储单元健康状态表的时效性;存储装置掉电时,将存储单元健康状态表从内存中写到存储装置数据区的冗余空间。
步骤S202:根据待存储数据的大小在存储装置中选择空白存储单元。本步骤的具体描述可以参见步骤S101。
步骤S203:根据与空白存储单元的健康等级对应的编码方式对待存储数据进行编码处理,以获得数据的校验数据,其中健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小。
步骤S204:将数据以及校验数据存储在空白存储单元中。
其中,空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中第一空白存储单元的健康等级高于第二空白存储单元的健康等级;此时,步骤S204可以具体是:
将数据以及校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
本实现方式主要是通过组合健康等级高的空白存储单元和健康等级低的空白存储单元来实现对数据的存储,从而充分合理地利用存储单元。
例如:参见图4的健康等级不同的空白存储空间页的组合示意图,每个空白存储单元页实际的存储空间为8K+448Byte,页的组合方式共分为2步,第一步:将健康等级为0的页与健康等级为-1的页组合,或者将健康等级为0的页与健康等级为-2的页组合;第二步:将健康等级高的页的部分校验数据区域用于存储健康等级低的校验数据,具体分配区域大小由页的实际存储空间决定,在一实例中将健康等级高的页的224Byte分配给健康等级低的页用于存储校验数据。本实施例对不同健康等级的页的组合方式不做任何限制,例如:可以全都使用健康等级最好的页;同理,对于健康等级高的页分配多少字节给健康等级低的页也不做任何限制,只要保证数据可靠性即可。
通过上述方式,可以合理利用健康等级高的存储单元空余的校验数据区域的空间,从而提高存储单元的利用率,提高存储装置的使用寿命,降低存储装置的成本。
在实际应用中,也可以将数据和校验数据分开存储,参见图5的页存储空间分配示意图,其中,Data表示数据区域,ECC表示校验数据区域,随着健康等级由0到-5的下降,数据区域的大小变小,校验数据区域的大小变大。
总之,本发明实施例由于空白存储单元的健康等级用于指示空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小,这使得空白存储单元在保证存储的数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,从而降低存储装置的成本。
参阅图6,图6是本发明实施例提供的一种存储装置的结构示意图,该存储装置的空白存储单元的健康等级至少分为三级,该存储装置包括:选择模块101、处理模块102以及存储模块103。
需要说明的是本实施例的存储装置可以执行图1、图2中的步骤。
选择模块101用于根据待存储数据的大小在存储装置中选择空白存储单元。
本发明实施例的存储装置的主要功能是存储各种数据,并能在计算机运行过程中高速、自动地完成数据的存取。计算机的存储装置容量是以字节为最小单位来计算的,存储单元是指理论上能够存储一定数量字节的存储空间,空白存储单元是指未存储数据的空白的存储单元。
其中,空白存储单元可以是下述存储单元中的至少一个:页Page、块Block或面Plane。
例如:NAND Flash芯片通常由一个内部寄存器和存储矩阵组成,存储矩阵包括若干块,每个块又包含若干页,每个页包含若干字节;每种NAND Flash芯片的存储矩阵大小定义不同,例如有一种NAND Flash以8640个字节组成一个页,256个页组成一个块,2048个块组成一个面,2个面组成一个逻辑单元LUN(Logical Unit),再由一个或者若干逻辑单元组成整个闪存(Flash)存储装置。在每页中前8192个字节是用于存储数据,后448个字节用于存放数据的校验码(Error CorrectionCode,ECC),即校验数据。
随着存储装置的反复使用,特别是擦和写的反复使用,存储装置在保证所存储数据可靠性的基础上实际能够存储的数据的大小在不断地下降,所谓存储数据的可靠性是指写入存储装置中的数据和从存储装置中读出的数据是一致的,没有错误。例如,对存储装置的同一个存储单元,在第一次使用时,它能够存储的数据的大小基本和理论上能够存储的数据的大小相同,也可以保证所存储数据的可靠性,存储同样大小的数据,需要很少的校验数据或者根本不需要校验数据;随着擦写次数的增多,写入存储装置时发生错误的比特数增加,此时为了保证所存储数据的可靠性,需要增加校验数据,校验数据占据的空间也增加,数据占据的空间自然减少,所以该存储单元在保证所存储数据的可靠性的基础上实际能够存储的数据减小。
空白存储单元的健康等级可以指示空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小。因此,不同健康等级的空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小是不一样的;在保证所存储数据可靠性的基础上,健康等级高的空白存储单元能够存储的数据多,健康等级低的空白存储单元能够存储的数据少。
空白存储单元的健康等级的数目至少包括三级,可以实现对存储装置的空白存储单元的精细化划分,合理且充分地利用空白存储单元。
根据待存储数据的大小即可选择空白存储单元,以使得空白存储单元的存储空间的大小能够存储待存储数据。
处理模块102用于根据与空白存储单元的健康等级对应的编码方式对待存储数据进行编码处理,以获得数据的校验数据,其中健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小。
在选择空白存储单元后,根据空白存储单元的健康等级,选择与该空白存储单元的健康等级对应的编码方法,对待存储数据进行编码处理,以获得所述数据的校验数据。
存储模块103用于将数据以及校验数据存储在空白存储单元中。
在将数据以及校验数据存储到空白存储单元时,有两种方式可以选择:第一种是在空白存储单元中将数据和校验数据分开存储,例如前面存储数据,后面存储校验数据;第二种是在空白存储单元中将数据和校验数据混合存储,即不区分哪些是数据,哪些是校验数据,将数据和校验数据混合在一起进行存储。
总之,本发明实施例用于空白存储单元的健康等级至少分为三级,由于空白存储单元的健康等级用于指示空白存储单元在保证所存储的数据可靠性的基础上存储不同大小的数据,这使得每个空白存储单元在保证存储数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,从而降低存储装置的成本。
参阅图7,图7是本发明实施例提供的另一种存储装置的结构示意图,本实施例和图6的实施例基本相同,相同之处请参见图6和相应的文字说明,不同之处在于本实施例还包括确定模块201,具体不同之处请参见如下内容:
该存储装置包括:选择模块201、处理模块202、存储模块203以及确定模块204。
需要说明的是,本实施例的存储装置可以执行图2中的步骤。
确定模块204用于确定所述空白存储单元的健康等级。
例如,存储装置空白存储单元包括页、块以及面。根据实际应用情况可以将页、块以及面划分为若干个健康等级,具体的健康等级的数目可以根据实际需要进行设置。
其中,确定模块204包括:记录单元2041、获取单元2042、计算单元2043以及确定单元2044。
记录单元2041用于记录空白存储单元读状态参数、写状态参数以及擦状态参数三者中的一种或一种以上。
空白存储单元在读写擦操作后,返回读写擦各自的状态参数0或1,可以分别代表读写擦成功或读写擦失败。记录空白存储单元的读状态参数、写状态参数以及擦状态参数三者中任意一种或一种以上,都可以用于确定空白存储单元的健康等级。记录的状态参数越多,对于空白存储单元健康等级的精细化划分越有利。
获取单元2042用于获取空白存储单元所属的存储空间的健康等级。例如:空白存储单元页所属的块的健康等级是0级,所属的面的健康等级是-1级。
计算单元2043用于根据空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及空白存储单元所属的存储单元的健康等级,计算空白存储单元的健康值。
空白存储单元的健康值是指在保证所存储数据可靠性的基础上存储装置的空白存储单元实际能够存储的数据的大小。
例如,在实际应用中一种计算空白存储单元的健康值的方法是:
以空白存储单元页为例,计算当前空白存储单元页的健康值F(ecc,pe,read,write,erase,b,p),其中,
ecc是指当前空白存储单元最近一次发生错误的比特数,pe是指空白存储单元的擦写次数,空白存储单元页所属的块和面的健康等级b和p,系数α,β,δ,ε,η,σ,ω是加权因子。
在实际应用时,可以结合存储装置的纠错能力、PE Cycle等参数和实际需求设置各个加权因子的权值和输入参数。
确定单元2044用于根据空白存储单元的健康值以及预设的健康等级门限值,确定空白存储单元的健康等级。
门限值也就是阈值,临界点。健康等级门限值指示在保证所存储的数据可靠性的基础上空白存储单元能够存储的数据的大小的门限值。
比较空白存储单元的健康值和预设的健康等级门限值,确定空白存储单元的健康等级。
通过上述方式,根据空白存储单元的读写擦等使用状态,及时地调整空白存储单元的健康等级,保证充分利用空白存储单元的同时,也保证所存储数据的可靠性。
选择模块201用于根据待存储数据的大小在存储装置中选择空白存储单元。
处理模块202用于根据与空白存储单元的健康等级对应的编码方式对待存储数据进行编码处理,以获得数据的校验数据,其中健康等级用于指示空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小。
存储模块203用于将数据以及校验数据存储在空白存储单元中。
空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中第一空白存储单元的健康等级高于第二空白存储单元的健康等级;此时存储模块203具体用于将数据以及校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
通过上述方式,可以合理利用健康等级高的存储单元空余的校验数据区域的空间,从而提高存储单元的利用率,提高存储装置的使用寿命,降低存储装置的成本。
总之,本发明实施例由于空白存储单元的健康等级用于指示空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小,这使得空白存储单元在保证存储的数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,从而降低存储装置的成本。
参阅图8,图8是本发明提供的一种存储装置的物理结构示意图,该存储装置可以是具有Flash芯片的固态硬盘、U盘或手机等等,在此并不做特别限定。如图8所示,所述存储装置40包括:
处理器(processor)410,存储器(memory)420,通信总线430。
处理器410和存储器420通过通信总线430完成相互间的通信。
处理器410,用于执行程序432,具体可以执行上述图1、图2所示的方法实施例中的相关步骤。
具体地,程序432可以包括程序代码,所述程序代码包括计算机操作指令。
处理器410可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器420,用于存放程序432。存储器420可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序432中各功能模块的具体实现可以参见上述图5至图6所示实施例中的相应模块和单元,在此不再赘述。
总之,本发明实施例由于空白存储单元的健康等级用于指示空白存储单元在保证所存储的数据可靠性的基础上能够存储的数据的大小,这使得每个空白存储单元在保证存储的数据可靠性的基础上得到充分的利用,且健康等级至少包括三级,对空白存储单元进行精细化的分级,通过这种方式,能够提高存储单元利用率,提高存储装置的使用寿命和可靠性,从而降低存储装置的成本。
在本发明所提供的几个实施方式或实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式或实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式或实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式或实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储装置(ROM,Read-OnlyMemory)、随机存取存储装置(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种存储数据的方法,其特征在于,所述方法用于空白存储单元的健康等级至少分为三级的存储装置,所述方法包括:
根据待存储数据的大小在存储装置中选择空白存储单元;
根据与所述空白存储单元的健康等级对应的编码方式对所述待存储数据进行编码处理,以获得所述数据的校验数据,其中所述健康等级用于指示所述空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小;
将所述数据以及所述校验数据存储在所述空白存储单元中。
2.根据权利要求1所述的方法,其特征在于,所述空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中所述第一空白存储单元的健康等级高于所述第二空白存储单元的健康等级;
所述将所述数据以及所述校验数据存储在所述空白存储单元中包括:
将所述数据以及所述校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且所述第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
3.根据权利要求1或2所述的方法,其特征在于,所述根据待存储数据的大小在存储装置中选择空白存储单元的步骤之前,还包括:
确定所述空白存储单元的健康等级。
4.根据权利要求3所述的方法,其特征在于,所述确定所述空白存储单元的健康等级包括:
记录所述空白存储单元的读状态参数、写状态参数以及擦状态参数三者中的一种或一种以上;
获取所述空白存储单元所属的存储空间的健康等级;
根据所述空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及所述空白存储单元所属的存储单元的健康等级,计算所述空白存储单元的健康值;
根据所述空白存储单元的健康值以及预设的健康等级门限值,确定所述空白存储单元的健康等级。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述空白存储单元包括下述存储单元中的至少一个:页Page、块Block或面Plane。
6.一种存储装置,其特征在于,所述存储装置的空白存储单元的健康等级至少分为三级,所述存储装置包括:
选择模块,用于根据待存储数据的大小在存储装置中选择空白存储单元;
处理模块,用于根据与所述空白存储单元的健康等级对应的编码方式对所述待存储数据进行编码处理,以获得所述数据的校验数据,其中所述健康等级用于指示所述空白存储单元在保证存储的数据可靠性的基础上能够存储的数据的大小;
存储模块,用于将所述数据以及所述校验数据存储在所述空白存储单元中。
7.根据权利要求6所述的存储装置,其特征在于,所述空白存储单元至少包括第一空白存储单元以及第二空白存储单元,其中所述第一空白存储单元的健康等级高于所述第二空白存储单元的健康等级;
所述存储模块具体用于将所述数据以及所述校验数据分别存储到第一空白存储单元以及第二空白存储单元中,且所述第一空白存储单元的校验区中存储有存储于第二空白存储单元的数据区中数据的校验数据。
8.根据权利要求6或7所述的存储装置,其特征在于,所述存储装置还包括确定模块,所述确定模块用于确定所述空白存储单元的健康等级。
9.根据权利要求8所述的存储装置,其特征在于,所述确定模块包括:
记录单元,用于记录所述空白存储单元的读状态参数、写状态参数以及擦状态参数三者中的一种或一种以上;
获取单元,用于获取所述空白存储单元所属的存储空间的健康等级;
计算单元,用于根据所述空白存储单元的读状态参数、写状态参数、擦状态参数三者中的一种或一种以上以及所述空白存储单元所属的存储单元的健康等级,计算所述空白存储单元的健康值;
确定单元,用于根据所述空白存储单元的健康值以及预设的健康等级门限值,确定所述空白存储单元的健康等级。
10.根据权利要求6至9任一项所述的存储装置,其特征在于,所述空白存储单元包括下述存储单元中的至少一个:页page、块block或面plane。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310724078.3A CN103713857B (zh) | 2013-12-24 | 2013-12-24 | 存储数据的方法及存储装置 |
PCT/CN2014/084595 WO2015096496A1 (zh) | 2013-12-24 | 2014-08-18 | 存储数据的方法及存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310724078.3A CN103713857B (zh) | 2013-12-24 | 2013-12-24 | 存储数据的方法及存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103713857A true CN103713857A (zh) | 2014-04-09 |
CN103713857B CN103713857B (zh) | 2017-06-27 |
Family
ID=50406872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310724078.3A Active CN103713857B (zh) | 2013-12-24 | 2013-12-24 | 存储数据的方法及存储装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103713857B (zh) |
WO (1) | WO2015096496A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015096496A1 (zh) * | 2013-12-24 | 2015-07-02 | 华为技术有限公司 | 存储数据的方法及存储装置 |
CN105159602A (zh) * | 2015-08-03 | 2015-12-16 | 联想(北京)有限公司 | 数据处理方法及存储设备 |
CN105224254A (zh) * | 2015-09-29 | 2016-01-06 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
CN105892946A (zh) * | 2016-03-30 | 2016-08-24 | 联想(北京)有限公司 | 一种数据存储方法及电子设备 |
CN106775481A (zh) * | 2016-12-23 | 2017-05-31 | 华为技术有限公司 | 数据读取方法及设备 |
CN110401582A (zh) * | 2019-08-23 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 云计算系统存储健康度窘迫的检测方法、装置及存储介质 |
CN117742614A (zh) * | 2023-12-29 | 2024-03-22 | 深圳市安信达存储技术有限公司 | 一种芯片内部闪存组合riad阵列方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1098526A (zh) * | 1993-03-08 | 1995-02-08 | M-系统有限公司 | 闪速文件系统 |
CN101529526A (zh) * | 2006-02-10 | 2009-09-09 | 晟碟以色列有限公司 | 用于估计和报告闪存盘存储器的预期寿命的方法 |
US20100235715A1 (en) * | 2009-03-13 | 2010-09-16 | Jonathan Thatcher | Apparatus, system, and method for using multi-level cell solid-state storage as single-level cell solid-state storage |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722340A (zh) * | 2012-04-27 | 2012-10-10 | 华为技术有限公司 | 数据处理方法、装置及系统 |
US9059736B2 (en) * | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
CN103713857B (zh) * | 2013-12-24 | 2017-06-27 | 华为技术有限公司 | 存储数据的方法及存储装置 |
-
2013
- 2013-12-24 CN CN201310724078.3A patent/CN103713857B/zh active Active
-
2014
- 2014-08-18 WO PCT/CN2014/084595 patent/WO2015096496A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1098526A (zh) * | 1993-03-08 | 1995-02-08 | M-系统有限公司 | 闪速文件系统 |
CN101529526A (zh) * | 2006-02-10 | 2009-09-09 | 晟碟以色列有限公司 | 用于估计和报告闪存盘存储器的预期寿命的方法 |
US20100235715A1 (en) * | 2009-03-13 | 2010-09-16 | Jonathan Thatcher | Apparatus, system, and method for using multi-level cell solid-state storage as single-level cell solid-state storage |
US20120266046A1 (en) * | 2009-03-13 | 2012-10-18 | Fusion-Io | Apparatus, system, and method for using multi-level cell solid-state storage as single-level cell solid-state storage |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015096496A1 (zh) * | 2013-12-24 | 2015-07-02 | 华为技术有限公司 | 存储数据的方法及存储装置 |
CN105159602A (zh) * | 2015-08-03 | 2015-12-16 | 联想(北京)有限公司 | 数据处理方法及存储设备 |
CN105159602B (zh) * | 2015-08-03 | 2019-04-09 | 北京联想核芯科技有限公司 | 数据处理方法及存储设备 |
CN105224254A (zh) * | 2015-09-29 | 2016-01-06 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
CN105224254B (zh) * | 2015-09-29 | 2019-01-22 | 北京联想核芯科技有限公司 | 一种数据处理方法及电子设备 |
CN105892946A (zh) * | 2016-03-30 | 2016-08-24 | 联想(北京)有限公司 | 一种数据存储方法及电子设备 |
CN106775481A (zh) * | 2016-12-23 | 2017-05-31 | 华为技术有限公司 | 数据读取方法及设备 |
CN106775481B (zh) * | 2016-12-23 | 2019-11-05 | 华为技术有限公司 | 数据读取方法及设备 |
CN110401582A (zh) * | 2019-08-23 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 云计算系统存储健康度窘迫的检测方法、装置及存储介质 |
CN110401582B (zh) * | 2019-08-23 | 2020-11-10 | 苏州浪潮智能科技有限公司 | 云计算系统存储健康度窘迫的检测方法、装置及存储介质 |
CN117742614A (zh) * | 2023-12-29 | 2024-03-22 | 深圳市安信达存储技术有限公司 | 一种芯片内部闪存组合riad阵列方法 |
CN117742614B (zh) * | 2023-12-29 | 2024-06-18 | 深圳市安信达存储技术有限公司 | 一种芯片内部闪存组合riad阵列方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015096496A1 (zh) | 2015-07-02 |
CN103713857B (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3800554B1 (en) | Storage system managing metadata, host system controlling storage system, and storage system operating method | |
US10713178B2 (en) | Mapping table updating method, memory controlling circuit unit and memory storage device | |
CN103713857A (zh) | 存储数据的方法及存储装置 | |
US9983828B2 (en) | Health indicator of a storage device | |
CN106409344B (zh) | 数据储存设备及其操作方法 | |
US9965199B2 (en) | Smart dynamic wear balancing between memory pools | |
US11210005B2 (en) | Unbalanced plane management method, associated data storage device and controller thereof | |
CN103975391A (zh) | 生成替换默认读取阈值的系统和方法 | |
US8489942B1 (en) | Memory management method, and memory controller and memory storage device using the same | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
CN110442529B (zh) | 可配置的存储器系统及配置和使用该存储器系统的方法 | |
US10126970B2 (en) | Paired metablocks in non-volatile storage device | |
CN102693758B (zh) | 数据读取方法、存储器储存装置及其存储器控制器 | |
CN107729174B (zh) | 存储器装置、其存储数据的方法以及其控制器 | |
US10642525B2 (en) | Multiple-stage data lifetime management for storage devices | |
CN110751974A (zh) | 存储器系统和用于优化读取阈值的方法 | |
US11762767B2 (en) | Storing highly read data at low impact read disturb pages of a memory device | |
CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
KR102351489B1 (ko) | 데이터 저장 디바이스들을 위한 2차원 스케일링 가능 다기능 저장 포맷 | |
CN102237139B (zh) | 计算补偿电压与调整阀值电压方法及存储器装置与控制器 | |
CN103198020A (zh) | 一种提高闪存使用寿命的方法 | |
CN111258505B (zh) | 快闪存储器的数据合并方法、控制电路单元与存储装置 | |
CN115543866A (zh) | 部分超级块存储器管理 | |
CN103678162B (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN116954491A (zh) | 用于存储控制器的操作方法和包括存储控制器的存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |