CN106020735A - 一种数据存储方法及数据存储装置 - Google Patents
一种数据存储方法及数据存储装置 Download PDFInfo
- Publication number
- CN106020735A CN106020735A CN201610380158.5A CN201610380158A CN106020735A CN 106020735 A CN106020735 A CN 106020735A CN 201610380158 A CN201610380158 A CN 201610380158A CN 106020735 A CN106020735 A CN 106020735A
- Authority
- CN
- China
- Prior art keywords
- memory element
- user data
- memory
- data
- block
- 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
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
- 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0647—Migration 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/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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种数据存储方法及数据存储装置。该方法基于闪存存储设备,该方法包括:获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。通过上述方式,本发明在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
Description
技术领域
本发明属于数据存储技术领域,尤其涉及一种数据存储方法及数据存储装置。
背景技术
现有的电子产品中,基本上都会用到闪存存储设备。闪存存储设备在存储数据时,一般至少有两部分数据需要存储:程序部分和用户数据部分。其中,电子产品出厂后,程序部分一般不会再改变,而用户数据部分经常会被用户修改。
因此,采用闪存存储设备存储用户数据时,则会出现以下问题:大部分闪存存储设备在写入数据之前,必须以存储块(Bank)也即64KB为最小擦除单位进行擦除,其中,一次擦除要100ms以上。由于用户数据部分经常会被用户修改,从而大大增加了闪存存储设备的擦除次数,进而影响了闪存存储设备的使用寿命。
为了解决上述问题,现有的一种基于闪存存储设备的数据存储方法为:以闪存存储设备中的两个存储块(Bank)为例进行说明,对两个存储块进行标识,譬如标识为第一存储块Bank61和第二存储块Bank62。每个存储块的存储空间为64KB,将第一存储块Bank61和第二存储块Bank62划分为64个存储单元,每个存储块包括32个存储单元,每个存储单元的存储空间是2KB,请参照图1所示。
当用户使用包含上述闪存存储设备的电子产品时,如果调整了用户数据,那么用户数据会被依次连续存入第一存储区Bank61和第二存储区Bank62的某一个存储单元内。
具体来说,第一个存储单元B(61)Index1的前64字节用以存储第一标识和第二标识,其中,第一标识用于标识最新存储的用户数据,第二标识用于标识已废弃的用户数据。当存储用户数据时,用户数据会在其它63个存储单元中依次存储,第一存储单元的前64个字节位置与64个存储单元一一对应。如图1所示,如果第一次用户数据存储在存储单元B(61)Index2,则第一个存储单元B(61)Index1的第二个字节为第一标识;那么第二次用户数据存储在存储单元B(61)Index3,第一个存储单元B(61)Index1的第三个字节标识为第一标识,第二字节从第一标识更新为第二标识;第三次用户数据存储在存储单元B(61)Index4,第一个存储单B(61)Index1的第四个字节标识为第一标识,第三个字节从第一标识更新为第二标识……按如此连续存储的原则进行数据存储。
通过上述方式,当用户数据需要再次存储至上次写过的存储单元时(例如再次存储至存储单元B(61)Index3),需要等到两个存储块中的63个存储单元都被写入过,且整个128KB的空间进行擦除后。因此,同一存储单元被重复存储的几率极大的降低,从而达到延长闪存存储设备寿命的目的。
但是,现有技术提供的数据存储方法无法保证用户数据准确地、有效地存储至闪存存储设备。比如,当用户数据存储至某一存储单元的过程中发生断电,则会导致存储后续更新的用户数据时发生异常。又比如,当用户数据存储至带有坏块的某一存储单元时,则会导致电子产品使用该用户数据时发生异常。
发明内容
本发明主要解决的技术问题是提供一种数据存储方法及数据存储装置,在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种数据存储方法,该数据存储方法基于闪存存储设备,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志,该方法包括:
获取保存有最新用户数据的一第一存储单元;
依序查找并得到靠近第一存储单元的空闲的一第二存储单元;
将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;
将第一存储单元的状态标志从有效状态更新为废弃状态。
为解决上述技术问题,本发明采用的另一技术方案是:提供一种数据存储装置,该数据存储装置包括闪存存储设备和处理器;其中,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志;其中,该处理器用于获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。
本发明的有益效果是:区别于现有技术的情况,本发明的数据储存方法及数据存储装置通过获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。通过上述方式,本发明在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
附图说明
图1是现有技术提供的闪存存储设备的内部划分示意图
图2是本发明提供的闪存存储设备中某一种用户数据的数据存储区中存储块的内部划分示意图;
图3是是图2所示存储块中存储单元的结构示意图;
图4是本发明第一实施方式的数据存储方法的流程图;
图5是本发明第二实施方式的数据存储方法的流程图;
图6是本发明第三实施方式的数据存储方法的流程图;
图7是本发明第四实施方式的数据存储方法的流程图;
图8是本发明实施方式的数据存储装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明公开的数据存储方法基于闪存存储设备,其中,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块(Bank),各存储块(Bank)包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,其中,标识区至少包括状态标志。
请参考图2,图2是本发明提供的闪存存储设备中某一种用户数据的数据存储区中存储块的内部划分示意图。如图2所示,该存储块(64KB)包括32个依序排列的相同结构的存储单元。其中,每一个存储单元的大小为2KB,也就是说,存储至该存储单元的用户数据小于2KB。
请一并参考图3,图3是图2所示存储块中存储单元的结构示意图。如图3所示,该存储单元包括标识区和数据区,其中标识区设置于各存储单元的最开始16个字节的存储空间,剩余的存储空间则为数据区。
具体来说,标识区依次包括1个字节的状态标志、4个字节的写次数标志、3个字节的保留位和8个字节的身份编码。
其中,状态标志包括四种不同状态,分别为全新状态例如为0xFF、可写状态例如为0x7F、有效状态例如为0x3F和废弃状态例如为0x1F。具体来说,当闪存存储设备中包括该存储单元的存储块进行擦除操作后,该存储单元的状态标志为全新状态。当该存储单元正确地写入最新的用户数据后,该存储单元的状态标志为有效状态。当该存储单元中存储的用户数据不是最新数据时,该存储单元的状态标志为废弃状态。当该存储单元处于写入最新的用户数据的过程中,该存储单元的状态标志为可写状态。其中,写次数标志用于标识该存储单元被写入的次数,其中,该存储单元每写一次写次数标志自动加1。其中,身份编码用于标识该存储单元的用户数据是否合法。
具体来说,数据区用于存储用户数据对应的数据流。
本领域的技术人员可以理解,图2所示的存储块的内部划分示意图仅为举例,本发明不以此为限。也就是说,存储块的内部划分根据用户数据的大小有不同的划分方法。例如用户数据大于2KB且小于4KB时,则存储块可以包括16个依序排列的相同结构的存储单元,其中,每一个存储单元的大小为4KB。在本发明中,优选地,用户数据以结构体的形式进行存储,该结构体具体如下所示:
typedef struct
{
BYTE gucObjectID;
BYTE gucDebugMode;
BYTE gucBankList[FDA_BANK_COUNT];
U8 gucUnitSize;
BYTE gucDataIDCard[8];
U32 gu32RamStartAddress;
U32 gu32RamLen;
BYTE ucBankCount;
BYTE ucBankUnitCount;
WORD u16AreaUnitCount;
WORD u16UnitIndex;}clsFlashDataArea;
其中,成员[gucObjectID]表示数据对象的身份识别码,用于标识唯一的数据对象。
成员[gucDebugMode]表示调试接口,用于设置不同参数以出现不同类型的打印信息。
成员[gucBankList]表示存储块列表,用于标识闪存存储设备中被划分的用于存储对象数据的存储块列表,其中,存储块列表中可包括多个存储块,且多个存储块可以连续,也可以不连续。
成员[gucUnitSize]表示存储单元的大小,用于指定存储块中一个存储单元的大小,取值范围(1~64)KB;
成员[gucDataIDCard]表示数据对象的身份编码,用于在载入数据时进行身份验证,如身份不正确会导入默认值;
成员[gu32RamStartAddress,gu32RamLen]表示指定影射至可快速读写的存储器(Memory)中的区域。
成员[ucBankCount]表示本数据对象中存储块的数量。
成员[ucBankUnitCount]表示存储块中存储单元的数量,也即指定一个存储块被分成多少个存储单元,取值范围(1~64);
成员[u16AreaUnitCount]表示当前数据对象区域有多少个存储单元,公式如下:
u16AreaUnitCount=(ucBankUnitCount*ucBankCount);
成员[u16AreaUnitCount]表示数据对象中的指针,用于标识保存有最新的用户数据的索引。
本领域的技术人员可以理解,由于用户数据以结构体的形式进行存储,从而可以很方便地实现对不同大小的用户数据在闪存存储设备中的存储。例如,假设A用户数据每次需要2KB大小的存储单元,B用户数据每次需要4KB大小的存储单元,则通过定义上述结构体的两个不同数据对象即可实现在闪存存储设备中配置两个具有不同大小的存储单元的数据存储区,从而使得对闪存存储设备的使用更加灵活方便,进而提高了闪存存储设备的利用率,减少了擦除闪存存储设备的次数。
请参考图4,图4是本发明第一实施方式的数据存储方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图4所示的流程顺序为限。如图4所示,该方法包括如下步骤:
步骤S101:获取保存有最新用户数据的一第一存储单元。
在步骤S101中,举例来说,在电子产品使用过程中,如果用户需要改变将用户数据,以电子产品为机顶盒为例来说,假如需要将默认音量从20调整到21,则首先查找保存有最新用户数据也即默认音量20的存储单元也即第一存储单元,其中,存储默认音量20的存储单元的状态标志为有效状态。
步骤S102:依序查找并得到靠近第一存储单元的空闲的一第二存储单元。
在步骤S102中,依序查找第一存储单元之后空闲的存储单元也即第二存储单元,其中,空闲的存储单元可以理解为没有被写入过用户数据的存储单元。
步骤S103:将更新后的数据对象存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态。
在步骤S103中,承接上述举例,将默认音量21存储至第二存储单元,同时,将存储默认音量21的存储单元的状态标志更新为有效状态。
步骤S104:将第一存储单元的状态标志从有效状态更新为废弃状态。
在步骤S104中,承接上述举例,当默认音量21存储至第二存储单元后,将存储默认音量20的存储单元的状态标志更新为废弃状态。本领域的技术人员可以理解,假设将默认音量21存储至第二存储单元的过程中发生断电,该第二存储单元中存储了部分数据而不再处于空闲状态。此时存储默认音量20的存储单元对应的状态标志还是为有效状态未更新为废弃状态,机顶盒依旧认定默认音量20为最新用户数据,也即第一存储单元的地址保持不变。当机顶盒再次上电后,用户仍需要将默认音量调整到21时,则在查找靠近第一存储单元的空闲的存储单元的过程中,会跳过断电过程中写入了一部分默认音量21的数据的该第二存储单元,从而避免了存储默认音量21时发生断电而产生的异常。
通过上述实施方式,本发明第一实施方式的数据存储方法通过依序查找保存有最新数据对象的存储单元之后空闲的存储单元,并将更新后的数据对象存储至该空闲存储单元,从而保证延长闪存存储设备寿命的同时,能够避免用户数据存储至某一存储单元的过程中发生断电,导致存储后续更新的用户数据时发生异常,进而能够保证用户数据准确地、有效地存储至闪存存储设备。
请参考图5,图5是本发明第二实施方式的数据存储方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图5所示的流程顺序为限。如图5所示,该方法包括如下步骤:
步骤S201:获取保存有最新用户数据的一第一存储单元。
在步骤S201中:获取保存有最新用户数据的一第一存储单元的步骤具体为:依次读取数据存储区中各存储单元的状态标志,获取状态标志位为有效状态对应的存储单元作为保存有最新用户数据的第一存储单元。
在其它实施例中,获取保存有最新用户数据的一第一存储单元也可以通过直接读取结构体中的成员[u16AreaUnitCount]的值得到,其中,成员[u16AreaUnitCount]用于标识保存有最新的用户数据的索引。
步骤S202:依序查找并得到靠近第一存储单元的空闲的一第二存储单元。
在步骤S202中,依序查找并得到靠近第一存储单元的空闲的一第二存储单元的操作具体为:依次读取第一存储单元之后的存储单元的状态标志;获取状态标志位为全新状态对应的存储单元作为靠近第一存储单元的空闲的第二存储单元。
步骤S203:将第二存储单元的状态标志更新为准写状态。
在步骤S203中,当准备向第二存储单元存储更新后的用户数据时,首先将第二存储单元的状态标志从全新状态更新为准写状态,也即指示第二存储单元正在写入更新后的用户数据。
步骤S204:将更新后的用户数据写入第二存储单元的数据区。
在步骤S204中,更新后的用户数据在未被写入闪存存储设备时,一般存储在可快速读写的存储器例如RAM中,也即结构体中成员[gu32RamStartAddress,gu32RamLen]对应的区域。将更新后的用户数据写入第二存储单元的数据区的操作具体为:从可快速读写的存储器的指定区域依次读取用户数据的数据流,随后写入第二存储单元的数据区。
步骤S205:读取存储至第二存储单元的用户数据。
在步骤S205中,当完成更新后的用户数据写入第二存储单元的操作后,继续读取存储至第二存储单元的用户数据并写入可快速读写的存储器中不同于结构体中成员[gu32RamStartAddress,gu32RamLen]对应的区域的其它区域。
步骤S206:根据读取出的用户数据判断第二存储单元是否存在坏块,若存在,继续执行步骤S202,否则执行步骤S207。
在步骤S206中,根据读取出的用户数据判断第二存储单元是否存在坏块的操作具体为:计算从第二存储单元读取的用户数据对应的校验数据,并与原始存储在可快速读写的存储器中的用户数据对应的校验数据进行比对,若两者一致,则表示第二存储单元不存在坏块,若两者不一致,则表示第二存储单元存在坏块。
换个角度来说,若从第二存储单元读取出的用户数据与原始存储在可快速读写的存储器中的用户数据相同,则表示该用户数据准确地、有效地存储至第二存储单元。反之,则表示该用户数据未被正确存储。
其中,校验数据的计算方法可以采用现有技术,为简约起见,在此不再赘述。
本领域的技术人员可以理解,当步骤S206中判断第二存储单元存在坏块时,此时由于第二存储单元中存储了错误数据从而使得第二存储单元不再处于空闲状态。也就是说,此时第二存储单元的状态标志为不同于全新状态的准写状态。因此,再次执行查找靠近第一存储单元的空闲的存储单元的过程中,会跳过该状态标志为准写状态的第二存储单元,从而避免了后续存储更新的用户数据时发生异常。
步骤S207:将第二存储单元的状态标志从准写状态更新为有效状态。
在步骤S207中,当步骤S206中判断第二存储单元不存在坏块时,将第二存储单元的状态标志从准写状态更新为有效状态,以标识第二存储单元为保存有最新用户数据的存储单元。
在其它实施例中,若获取保存有最新用户数据的存储单元通过直接读取结构体中的成员[u16AreaUnitCount]的值得到,则步骤S207执行完毕后,进一步将存储有更新后的用户数据的第二存储单元的地址更新至结构体的成员[u16AreaUnitCount]中。
优选地,为了对第二存储单元中的用户数据进行有效性标识,步骤S207进一步包括将结构体中成员[gucDataIDCard]对应的值写入第二存储单元的标识区中的身份编码所在的区域。
优选地,为了对第二存储单元写入的次数进行标识,步骤S207进一步包括将第二存储单元的标识区中的写次数标志的值自动加1。
步骤S208:将第一存储单元的状态标志从有效状态更新为废弃状态。
在步骤S208中,当步骤S207标识第二存储单元为保存有最新用户数据的存储单元后,将第一存储单元的状态标志从有效状态更新为废弃状态,以标识第一存储单元为保存旧的用户数据的存储单元。
通过上述实施方式,本发明第二实施方式的数据存储方法通过将更新后的用户数据写入第二存储单元的数据区后,读取写入第二存储单元的用户数据以判断第二存储单元是否存在坏块。通过上述方式,本发明能够避免用户数据存储至带有坏块的存储单元而导致的电子产品工作异常,进而能够保证用户数据准确地、有效地存储至闪存存储设备。
请参考图6,图6是本发明第三实施方式的数据存储方法的流程图。其中,图6所示的第三实施方式与图5所示的第二实施方式的区别在于:
当数据存储区包括至少两个存储块时,在步骤S208后,图6所示的第三实施方式还包括:
步骤S301:判断第一存储单元和第二存储单元是否处于同一存储块中,若是,继续执行步骤S201,否则执行步骤S302。
步骤S302:对第一存储单元所在的存储块进行擦除操作。
在步骤S302中,当步骤S301判断第一存储单元和第二存储单元没有处于同一存储块中时,则对第一存储单元所在的存储块进行擦除操作。
以数据存储区包括两个存储块为例来说,对两个存储块进行标识,譬如标识为第一存储块和第二存储块,则当第一存储单元处于第一存储块,而第二存储单元处于第二存储块时,则对第一存储块进行擦除操作。本领域的技术人员可以理解,第一存储单元处于第一存储块,第二存储单元处于第二存储块可以理解为:第一存储块已经存储满,继续使用第二存储块存储数据对象。
另外,当第一存储块进行擦除操作后,若第二存储块存储满,则继续使用第一存储块存储用户数据并擦除第二存储块。也就是说,两者交替进行擦除操作。
通过上述实施方式,本发明第三实施方式的数据存储方法通过判断第一存储单元和第二存储单元是否处于同一存储块中,当第一存储单元和第二存储单元没有处于同一存储块中时,则对第一存储单元所在的存储块进行擦除操作。通过上述方式,本发明能够在擦除操作中发生断电异常时,很好地保护最新的用户数据不被丢失。
请参考图7,图7是本发明第四实施方式的数据存储方法的流程图。其中,图7所示的第四实施方式与图6所示的第三实施方式的区别在于:
在步骤S202之后,图7所示的第四实施方式还包括:
步骤S401:判断更新后的用户数据是否大于闪存存储设备中存储块的大小,若大于,则执行步骤S402,否则继续执行步骤S203。
在步骤S401中,判断更新后的用户数据是否大于闪存存储设备中存储块的大小具体为:判断更新后的用户数据是否大于64KB。
步骤S402:对用户数据进行压缩操作以使压缩后的数据流小于存储块的大小,并继续执行步骤S203。
在步骤S402中,当步骤S401判断更新后的用户数据大于64KB时,对数据流进行压缩操作以使压缩后的用户数据小于64KB。
通过上述实施方式,本发明第四实施方式的数据存储方法通过将超过存储块的大小的数据流进行压缩操作,从而能够实现较大数据量的用户数据准确地、有效地存储至闪存存储设备。
请参考图8,图8是本发明实施方式的数据存储装置的结构示意图。如图8所示,该数据存储装置包括闪存存储设备11、与闪存存储设备11耦接的处理器12。
闪存存储设备11包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志。
处理器12用于获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。
具体来说,处理器12执行获取保存有最新用户数据的一第一存储单元的操作具体为:处理器12依次读取数据存储区中各存储单元的状态标志;获取状态标志位为有效状态对应的存储单元作为保存有最新用户数据的第一存储单元。
处理器12执行依序查找并得到靠近第一存储单元的空闲的一第二存储单元的操作具体为:处理器12依次读取第一存储单元之后的存储单元的状态标志;获取状态标志位为全新状态对应的存储单元作为靠近第一存储单元的空闲的第二存储单元。
处理器12执行将更新后的用户数据存储至第二存储单元的操作包括:处理器12将第二存储单元的状态标志更新为准写状态;将更新后的用户数据写入第二存储单元的数据区;将第二存储单元的状态标志从准写状态更新为有效状态。
优选地,在本实施例中,当处理器12执行将更新后的用户数据写入第二存储单元的数据区的操作后,处理器12还用于读取存储至第二存储单元的用户数据,并根据读取出的用户数据判断第二存储单元是否存在坏块。其中,当处理器12识别出第二存储单元存在坏块时,继续执行依序查找并得到靠近第一存储单元的空闲的存储单元的操作。当处理器12识别出第二存储单元不存在坏块时,将第二存储单元的状态标志从准写状态更新为有效状态。
优选地,在本实施例中,处理器12执行将更新后的用户数据存储至第二存储单元的操作之前,处理器12还用于判断更新后的用户数据是否大于闪存存储设备中存储块的大小;若用户数据大于存储块的大小,则对用户数据进行压缩操作以使压缩后的用户数据小于存储块的大小。
优选地,在本实施例中,当数据存储区包括至少两个存储块时,处理器12执行将第一存储单元的状态标志从有效状态更新为废弃状态的操作之后,处理器12还用于判断第一存储单元和第二存储单元是否处于同一存储块中;若第一存储单元和第二存储单元不在同一存储块中,对第一存储单元所在的存储块进行擦除操作。
优选地,在本实施例中,用户数据以结构体的形式进行存储,结构体至少包括存储块的数量、存储块中存储单元的大小、存储块中存储单元的数量。
优选地,在本实施例中,每一存储单元的标识区依次包括状态标志、写次数标志、保留位和身份编码。
另外,在本发明各个实施方式或实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (18)
1.一种数据存储方法,其特征在于,所述数据存储方法基于闪存存储设备,所述闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一所述数据存储区至少包括一个存储块,所述存储块包括依序排列的多个相同结构的存储单元,每一所述存储单元包括标识区和数据区,所述标识区至少包括状态标志,所述方法包括:
获取保存有最新所述用户数据的一第一存储单元;
依序查找并得到靠近所述第一存储单元的空闲的一第二存储单元;
将更新后的所述用户数据存储至所述第二存储单元,并将所述第二存储单元的所述状态标志更新为有效状态;
将所述第一存储单元的所述状态标志从有效状态更新为废弃状态。
2.根据权利要求1所述的数据存储方法,其特征在于,所述将更新后的所述用户数据存储至所述第二存储单元步骤包括:
将所述第二存储单元的所述状态标志更新为准写状态;
将更新后的所述用户数据写入所述第二存储单元的所述数据区;
将所述第二存储单元的所述状态标志从所述准写状态更新为所述有效状态。
3.根据权利要求2所述的数据存储方法,其特征在于,所述将更新后的所述用户数据写入所述第二存储单元的所述数据区的步骤之后,所述方法进一步包括:
读取存储至所述第二存储单元的所述用户数据;
根据读取出的所述用户数据判断所述第二存储单元是否存在坏块;
若所述第二存储单元存在坏块,则继续执行依序查找并得到靠近所述第一存储单元的空闲的所述存储单元的操作。
4.根据权利要求1所述的数据存储方法,其特征在于,所述将更新后的所述用户数据存储至所述第二存储单元的步骤之前,所述方法进一步包括:
判断更新后的所述用户数据是否大于所述闪存存储设备中存储块的大小;
若所述用户数据大于所述存储块的大小,则对所述用户数据进行压缩操作以使压缩后的所述用户数据小于所述存储块的大小。
5.根据权利要求1所述的数据存储方法,其特征在于,当所述数据存储区包括至少两个存储块时,所述将所述第一存储单元的所述状态标志从有效状态更新为废弃状态的步骤之后,所述方法进一步包括:
判断所述第一存储单元和所述第二存储单元是否处于同一存储块中;
若所述第一存储单元和所述第二存储单元不在同一存储块中,对所述第一存储单元所在的所述存储块进行擦除操作。
6.根据权利要求1所述的数据存储方法,其特征在于,所述获取保存有最新所述用户数据的一第一存储单元的步骤具体为:
依次读取所述数据存储区中各所述存储单元的所述状态标志;
获取所述状态标志位为所述有效状态对应的所述存储单元作为保存有最新所述用户数据的所述第一存储单元。
7.根据权利要求1所述的数据存储方法,其特征在于,所述依序查找并得到靠近所述第一存储单元的空闲一第二存储单元的步骤包括:
依次读取所述第一存储单元之后的所述存储单元的状态标志;
获取所述状态标志位为全新状态对应的所述存储单元作为靠近所述第一存储单元的空闲的所述第二存储单元。
8.根据权利要求1所述的数据存储方法,其特征在于,所述用户数据以结构体的形式进行存储,所述结构体至少包括所述存储块的数量、所述存储块中所述存储单元的大小、所述存储块中所述存储单元的数量。
9.根据权利要求1所述的数据存储方法,其特征在于,所述每一所述存储单元的标识区依次包括状态标志、写次数标志、保留位和身份编码。
10.一种数据存储装置,其特征在于,所述数据存储装置包括闪存存储设备和处理器;
其中,所述闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一所述数据存储区至少包括一个存储块,所述存储块包括依序排列的多个相同结构的存储单元,每一所述存储单元包括标识区和数据区,所述标识区至少包括状态标志;
其中,所述处理器用于获取保存有最新所述用户数据的一第一存储单元;依序查找并得到靠近所述第一存储单元的空闲的一第二存储单元;将更新后的所述用户数据存储至所述第二存储单元,并将所述第二存储单元的所述状态标志更新为有效状态;将所述第一存储单元的所述状态标志从有效状态更新为废弃状态。
11.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据存储至所述第二存储单元的操作包括:
所述处理器将所述第二存储单元的所述状态标志更新为准写状态;将更新后的所述用户数据写入所述第二存储单元的所述数据区;将所述第二存储单元的所述状态标志从所述准写状态更新为所述有效状态。
12.根据权利要求11所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据写入所述第二存储单元的所述数据区的操作之后,所述处理器还用于读取存储至所述第二存储单元的所述用户数据;根据读取出的所述用户数据判断所述第二存储单元是否存在坏块;若所述第二存储单元存在坏块,则继续执行依序查找并得到靠近所述第一存储单元的空闲的所述存储单元的操作。
13.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据存储至所述第二存储单元的操作之前,所述处理器还用于判断更新后的所述用户数据是否大于所述闪存存储设备中存储块的大小;若所述用户数据大于所述存储块的大小,则对所述用户数据进行压缩操作以使压缩后的所述用户数据小于所述存储块的大小。
14.根据权利要求10所述的数据存储装置,其特征在于,当所述数据存储区包括至少两个存储块时,所述处理器执行将所述第一存储单元的所述状态标志从有效状态更新为废弃状态的操作之后,所述处理器还用于判断所述第一存储单元和所述第二存储单元是否处于同一存储块中;若所述第一存储单元和所述第二存储单元不在同一存储块中,对所述第一存储单元所在的所述存储块进行擦除操作。
15.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行获取保存有最新所述用户数据的一第一存储单元的操作具体为:
所述处理器依次读取所述数据存储区中各所述存储单元的所述状态标志,获取所述状态标志位为所述有效状态对应的所述存储单元作为保存有最新所述用户数据的所述第一存储单元。
16.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行依序查找并得到靠近所述第一存储单元的空闲的一第二存储单元的操作具体为:
所述处理器依次读取所述第一存储单元之后的所述存储单元的状态标志,获取所述状态标志位为全新状态对应的所述存储单元作为靠近所述第一存储单元的空闲的所述第二存储单元。
17.根据权利要求10所述的数据存储装置,其特征在于,所述用户数据以结构体的形式进行存储,所述结构体至少包括所述存储块的数量、所述存储块中所述存储单元的大小、所述存储块中所述存储单元的数量。
18.根据权利要求10所述的数据存储装置,其特征在于,所述每一所述存储单元的标识区依次包括状态标志、写次数标志、保留位和身份编码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610380158.5A CN106020735A (zh) | 2016-05-31 | 2016-05-31 | 一种数据存储方法及数据存储装置 |
TW105135476A TWI622924B (zh) | 2016-05-31 | 2016-11-02 | 資料儲存方法及資料儲存裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610380158.5A CN106020735A (zh) | 2016-05-31 | 2016-05-31 | 一种数据存储方法及数据存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106020735A true CN106020735A (zh) | 2016-10-12 |
Family
ID=57091822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610380158.5A Pending CN106020735A (zh) | 2016-05-31 | 2016-05-31 | 一种数据存储方法及数据存储装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106020735A (zh) |
TW (1) | TWI622924B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107039077A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
WO2019047901A1 (zh) * | 2017-09-08 | 2019-03-14 | 晶晨半导体(上海)股份有限公司 | 一种数据存放方法 |
CN110325970A (zh) * | 2017-03-02 | 2019-10-11 | 昕诺飞控股有限公司 | 监控和调节连接的设备系统中的存储器使用 |
CN110895444A (zh) * | 2018-09-12 | 2020-03-20 | 厦门歌乐电子企业有限公司 | 一种电子设备以及数据读写方法 |
CN111913647A (zh) * | 2019-05-08 | 2020-11-10 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
CN113282240A (zh) * | 2021-05-24 | 2021-08-20 | 深圳市盈和致远科技有限公司 | 存储空间数据读写方法、设备、存储介质及程序产品 |
CN114385082A (zh) * | 2021-12-31 | 2022-04-22 | 北京得瑞领新科技有限公司 | Nor闪存的数据处理方法、存储介质及ssd设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162608A (zh) * | 2006-10-10 | 2008-04-16 | 北京华旗资讯数码科技有限公司 | 闪存的存储块的标识方法 |
CN101567217A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种安全烧写闪存的方法及数据写入方法 |
CN102890656A (zh) * | 2012-09-25 | 2013-01-23 | Tcl光电科技(惠州)有限公司 | 提高flash使用寿命的方法 |
US20130067150A1 (en) * | 2008-07-11 | 2013-03-14 | Renesas Electronics Corporation | Data processor with flash memory, and method for accessing flash memory |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006285600A (ja) * | 2005-03-31 | 2006-10-19 | Tokyo Electron Device Ltd | 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム |
US8775717B2 (en) * | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
KR101602939B1 (ko) * | 2009-10-16 | 2016-03-15 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 |
TWI497293B (zh) * | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
CN103914407B (zh) * | 2012-12-30 | 2016-09-14 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
US9152330B2 (en) * | 2014-01-09 | 2015-10-06 | Netapp, Inc. | NVRAM data organization using self-describing entities for predictable recovery after power-loss |
-
2016
- 2016-05-31 CN CN201610380158.5A patent/CN106020735A/zh active Pending
- 2016-11-02 TW TW105135476A patent/TWI622924B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162608A (zh) * | 2006-10-10 | 2008-04-16 | 北京华旗资讯数码科技有限公司 | 闪存的存储块的标识方法 |
CN101567217A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种安全烧写闪存的方法及数据写入方法 |
US20130067150A1 (en) * | 2008-07-11 | 2013-03-14 | Renesas Electronics Corporation | Data processor with flash memory, and method for accessing flash memory |
CN102890656A (zh) * | 2012-09-25 | 2013-01-23 | Tcl光电科技(惠州)有限公司 | 提高flash使用寿命的方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110325970A (zh) * | 2017-03-02 | 2019-10-11 | 昕诺飞控股有限公司 | 监控和调节连接的设备系统中的存储器使用 |
CN107039077A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
WO2019047901A1 (zh) * | 2017-09-08 | 2019-03-14 | 晶晨半导体(上海)股份有限公司 | 一种数据存放方法 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
CN110895444A (zh) * | 2018-09-12 | 2020-03-20 | 厦门歌乐电子企业有限公司 | 一种电子设备以及数据读写方法 |
CN111913647A (zh) * | 2019-05-08 | 2020-11-10 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
CN113282240A (zh) * | 2021-05-24 | 2021-08-20 | 深圳市盈和致远科技有限公司 | 存储空间数据读写方法、设备、存储介质及程序产品 |
CN114385082A (zh) * | 2021-12-31 | 2022-04-22 | 北京得瑞领新科技有限公司 | Nor闪存的数据处理方法、存储介质及ssd设备 |
Also Published As
Publication number | Publication date |
---|---|
TW201800932A (zh) | 2018-01-01 |
TWI622924B (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106020735A (zh) | 一种数据存储方法及数据存储装置 | |
CN103440205B (zh) | 一种机顶盒数据存储方法及装置 | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
CN110673789B (zh) | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 | |
CN102999431A (zh) | 用于非易失性存储器系统的编织序列计数器 | |
CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
CN103995855A (zh) | 存储数据的方法和装置 | |
CN109783396A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
CN106910528A (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
CN103164490A (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
US11640244B2 (en) | Intelligent block deallocation verification | |
CN115495025B (zh) | 一种管理异常存储块的方法和装置 | |
CN110069218A (zh) | 冷热数据分离方法、装置、计算机设备及存储介质 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
WO2014120205A1 (en) | Replacement of a corrupt driver variable record | |
CN104166627B (zh) | 一种基于单片机的nand‑flash写操作方法 | |
CN107229421B (zh) | 视频数据存储系统的创建、文件写入和读取方法及装置 | |
CN114089915B (zh) | 基于flash存储器的文件追加写操作方法及装置 | |
TWI463311B (zh) | 快閃記憶體儲存設備的資料儲存方法和裝置 | |
CN108829345B (zh) | 日志文件的数据处理方法和终端设备 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
CN109656479A (zh) | 一种构建存储器命令序列的方法及装置 | |
CN110286859B (zh) | 基于fat文件系统的数据存储方法及装置 | |
CN107678977A (zh) | 一种计数器的读写方法及装置 | |
CN112181275A (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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20191115 |
|
AD01 | Patent right deemed abandoned |