CN115373607A - 数据存储方法及装置 - Google Patents
数据存储方法及装置 Download PDFInfo
- Publication number
- CN115373607A CN115373607A CN202211060532.5A CN202211060532A CN115373607A CN 115373607 A CN115373607 A CN 115373607A CN 202211060532 A CN202211060532 A CN 202211060532A CN 115373607 A CN115373607 A CN 115373607A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- block
- writing
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 142
- 238000013500 data storage Methods 0.000 title claims abstract description 57
- 238000003860 storage Methods 0.000 claims abstract description 920
- 230000003068 static effect Effects 0.000 claims abstract description 13
- 230000015654 memory Effects 0.000 claims description 246
- 238000005192 partition Methods 0.000 claims description 145
- 238000012795 verification Methods 0.000 claims description 36
- 230000007958 sleep Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 70
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000002035 prolonged effect Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 101000685982 Homo sapiens NAD(+) hydrolase SARM1 Proteins 0.000 description 2
- 102100023356 NAD(+) hydrolase SARM1 Human genes 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000006266 hibernation Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000000849 selective androgen receptor modulator Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- 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/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/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/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/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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Computer Graphics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开一种数据存储方法及装置,涉及存储技术领域。本申请的方法包括:确定待写入的第一数据;若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据存储方法及装置。
背景技术
随着技术的发展,存储技术也随之进步。目前,常规技术一般利用flash存储器(Flash EEPROM Memory,简称flash存储器)来实现随机访问的性能。flash存储器是存储芯片的一种,通过特定的程序可以修改里面的数据。flash在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,其中在flash存储器中数据是以千字节为单位的存储块进行分块存储的,也就是说在写入数据后,不同的存储块在进行擦写时需要整块进行擦除。但在实际应用中,由于常规利用flash进行数据存储的过程中需要不停的数据进行擦写,即写入和擦除,尤其是在随机访问的过程中,擦写次数会大大提高。但在这个过程中,往往会因地址的顺序不同,使得有些存储块会经常被擦写,这就导致flash存储器中不同的存储块因擦写次数的不同而导致寿命不同,因此,现有的基于flash的数据存储方式极易影响flash存储器的整体使用寿命。
发明内容
本申请实施例提供一种数据存储方法及装置,主要目的在于实现一种基于flash的数据存储方法,以解决目前常规的基于flash的数据存储影响flash存储器的整体使用寿命的问题。
为解决上述技术问题,本申请实施例提供如下技术方案:
第一方面,本申请提供了一种数据存储方法,所述方法包括:
确定待写入的第一数据;
若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
可选的,所述方法还包括:
若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
可选的,所述在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
可选的,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
可选的,所述基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据,包括:
若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
或者,
若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
可选的,所述若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中,包括:
若确定所述第二数据需要备份,则在所述第二存储区中确定非频繁记录区,并基于所述非频繁记录区的写入顺序确定备份存储块;
将所述第二数据写入至所述备份存储块,以备份所述第二数据;
对所述目标存储块执行所述擦除操作,并将所述第一数据写入至执行了所述擦除操作的目标存储块中。
可选的,所述将所述第二数据写入至所述备份存储块,以备份所述第二数据包括:
若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
或者,
若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
可选的,所述方法还包括:
若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
可选的,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
将所述第一数据写入至所述目标存储块中。
可选的,所述在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页,包括:
获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页,并将所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
可选的,所述在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块,包括:
获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序,并将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
可选的,所述将所述第一数据写入至所述目标存储块中,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
可选的,所述方法还包括:
遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
将所述有效数据添加到所述第一存储区中。
可选的,所述基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据包括:
获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
第二方面,本申请还提供了一种数据存储装置,所述方法包括:
第一确定单元,用于确定待写入的第一数据;
第一执行单元,用于若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
可选的,所述装置还包括:
第二执行单元,用于若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
可选的,所述第一执行单元,具体用于当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
可选的,所述第二执行单元包括:
确定模块,用于在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
写入模块,用于基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
可选的,所述写入模块,用于若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
所述写入模块,还用于若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
可选的,所述写入模块包括:
确定子模块,用于若确定所述第二数据需要备份,则在所述第二存储区中确定非频繁记录区,并基于所述非频繁记录区的写入顺序确定备份存储块;
备份子模块,用于将所述第二数据写入至所述备份存储块,以备份所述第二数据;
写入子模块,用于对所述目标存储块执行所述擦除操作,并将所述第一数据写入至执行了所述擦除操作的目标存储块中。
可选的,所述备份子模块,具体用于若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
所述备份子模块,还用于若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
可选的,所述装置还包括:
第二确定单元,用于若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
第三确定单元,用于若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
可选的,所述第一执行单元包括:
第一确定模块,用于在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
第二确定模块,用于在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
写入模块,用于将所述第一数据写入至所述目标存储块中。
可选的,所述第一确定模块,具体用于获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页,并将所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
可选的,所述第二确定模块,具体用于获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序,并将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
可选的,所述写入模块,具体用于将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
可选的,所述装置还包括:
第四确定单元,用于遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
第五确定单元,用于基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
添加单元,用于将所述有效数据添加到所述第一存储区中。
可选的,所述第五确定单元包括:
第一确定模块,用于获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
第二确定模块,用于在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
第三方面,本申请还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面所述的数据存储方法。
第四方面,本申请还提供了一种数据存储设备,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行第一方面中任一项所述的数据存储方法。
借由上述技术方案,本申请提供的技术方案至少具有下列优点:
本申请提供一种数据存储方法及装置,本申请能够确定待写入的第一数据;若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,从而实现了基于flash的数据存储功能。相较于现有技术,在本申请的基于flash的数据存储过程中,由于所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,因此,在写入过程中能够基于写入顺序选取存储块作为目标存储块进行写入,这就确保了在写入数据的过程中,能够以一定顺序进行写入至不同的存储块中,而不会因地址的顺序等原因屡次在同一个存储块中写入数据的情况,这就避免了反复在某个或某几个存储块进行擦写时带来的过多磨损的问题,从而避免了因个别存储块过度磨损失效而导致整个flash存储器寿命受到影响的问题。另外,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就可以确保在对第一数据进行写入的过程中,一旦确定该第一存储区中存在与该第一数据相同的数据时,说明该第一数据是用户常用的数据,那么就可以确保当用户突然下达掉电指令时,以SRAM构建的第一存储区中的第一数据能够及时写入到以flash构建的第二存储区中,解决了SRAM中的数据因掉电而丢失的问题。同时,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位,这样就确保了在进行数据存储的过程中避免了原有的以千字节为单位的原存储块的存储空间划分方式,这就保证了在存储多条不同的数据时,在原存储块中可以存储多个不同的数据,且能够对不同的数据单独进行管理,也就是说在擦除的过程中可以对目标字节数的存储块实现几个字节或几十字节的小范围擦除的效果,避免当常规方式一旦进行擦除操作,则将整个原存储块整个存储块几千字节的大范围的进行擦除导致了过度擦除的问题,可以进一步的提高flash存储器的使用寿命。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,相同或对应的标号表示相同或对应的部分,其中:
图1示出了本申请实施例提供的一种数据存储方法流程图;
图2示出了本申请实施例提供的另一种数据存储方法执行过程中具体步骤的流程图;
图3-a示出了本申请实施例提供的一种数据存储方法执行过程中的示意图;
图3-b示出了本申请实施例提供的另一种数据存储方法执行过程中的示意图;
图4示出了本申请实施例提供的又一种数据存储方法执行过程的中的示意图。
图5示出了本申请实施例提供的一种数据存储装置的组成框图;
图6示出了本申请实施例提供的另一种数据存储装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
本申请实施例提供了一种数据存储方法的流程图,如图1所示,该方法包括:
101、确定待写入的第一数据。
由于在数据写入的过程中,一般都是基于用户下达的写入操作指令实现的,因此在本实施例中存储数据时,需要首先判断在存储数据之前是否存在写入行为,也就是对写入操作指令进行检测。当检测到写入操作指令时,说明用户需要对一些数据写入到存储设备中,也就是说当前存在待写入的第一数据,这时就需要基于该写入操作指令确定是哪个或哪些数据需要被写入,即确定第一数据。在本实施例中,对于第一数据的形式、种类、数量不做限定,可以根据用户的实际情况进行确定。
102、若确定第一存储区中存在与第一数据相同的数据,则在检测到掉电指令时将第一数据按照写入顺序写入所述第二存储区中的目标存储块中。
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位
当确定了存在需要写入的第一数据时,就可以进一步判断该第一数据是否是用户常用的数据,基于flash存储器使用的特点,在基于SRAM构建的第一存储区中存在的数据一般都是为了满足随机写入需求的数据,也就是说这里的数据是用户常用的数据。因此在本实施例中,这时就可以基于第一存储区进行辨识。基于此可以判断在第一存储区中是否存在与写入数据相同的第一数据。如果该第一数据存储在第一存储区中,那么这个数据就极有可能是此前使用过的数据,也就是常用数据。
基于此,在进行数据存储的过程中,就需要确保数据无论在何种情况下都避免数据丢失,因此在检测到掉电指令后会将其内部存储的数据都转移至第二存储区,由于第二存储区是flash构建的,这就确保了在SARM中存储的数据即便遇到掉电情况也会及时将数据转移到第二存储区进行保存,避免掉电后数据丢失的问题。同时,在本实施例中,将第一存储区中的数据写入到第二存储区的过程中,并不是随机选取存储块进行写入,而是基于写入顺序执行的。该写入顺序可以理解为基于第二存储区中多个存储块之间按照地址的顺序确定的一种数据的写入时存储块的选取方式。这样,在写入数据的过程中,并不会反复向地址排序靠前的存储块进行写入,也不会因此反复对这类存储块进行擦除。
这样就确保了第二存储区中的多个存储块之间具有相同的擦写次数,可以平衡擦写过程的寿命损耗。这就可以使flash存储器以一种整体均衡的磨损方式进行使用,而不会对某个或某几个存储块过度擦写而导致磨损程度比其余存储块严重的情况,避免了这些存储块失效导致整个flash存储器整体寿命受到影响的问题。
在本实施例中在将第一存储区中的数据写入到第二存储区时,是从第二存储区中选取目标存储块进行存储的,且本实施例中的存储块不同于常规的flash存储器中的存储块,在常规的原存储块中,每个存储块的大小为1kb至几kb不等,也就是说是按照千字节的大小设置的存储空间,这样当每次写入数据的数据量较小的情况下,为了实现对每个不同的数据进行分别管理的功能,就需要在每个原存储块中只存储一个数据,这就会造成大量的存储空间的浪费,而一旦将多个不同数据写入到一个原存储块中,一旦需要对该原存储块进行擦除时,就会将不同的数据进行消除,从而又会导致数据的误删的问题。并且,在这个过程中实际上可能只需要对某一个数据几十kb进行擦除,但实际上会对原存储块中几kb至几十kb的存储空间进行擦除,这样其余的数据对应的空间在被擦除时就形成了过度擦除的问题,因此,在本实施例中通过将存储块设置成以目标字节数大小的存储单位,这就可以实现在原存储块中1kb或几kb的空间内形成多个不同的更小的存储单位的形式,这样就可以在原存储块大小的空间内存储多个不同的数据,还能对每个数据进行管理的效果,即节约了存储空间,又能避免误删的情况,还能避免擦除过程中的过度擦除的问题,从而整体上减少了每个存储块的擦写次数,减少了不必要的磨损,继而整体上可以提高基于flash构建的第二存储区的寿命。
基于此,本实施例提供一种数据存储方法。在本申请的数据存储过程中,由于所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,因此,在写入过程中能够基于写入顺序选取存储块作为目标存储块进行写入,这就确保了在写入数据的过程中,能够以一定顺序进行写入至不同的存储块中,而不会因地址的顺序等原因屡次在同一个存储块中写入数据的情况,这就避免了反复在某个或某几个存储块进行擦写时带来的过多磨损的问题,从而避免了因个别存储块过度磨损失效而导致整个flash存储器寿命受到影响的问题。另外,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就可以确保在对第一数据进行写入的过程中,一旦确定该第一存储区中存在与该第一数据相同的数据时,说明该第一数据是用户常用的数据,那么就可以确保当用户突然下达掉电指令时,以SRAM构建的第一存储区中的第一数据能够及时写入到以flash构建的第二存储区中,解决了SRAM中的数据因掉电而丢失的问题。同时,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位,这样就确保了在进行数据存储的过程中避免了原有的以千字节为单位的原存储块的存储空间划分方式,这就保证了在存储多条不同的数据时,在原存储块中可以存储多个不同的数据,且能够对不同的数据单独进行管理,也就是说在擦除的过程中可以对目标字节数的存储块实现几个字节或几十字节的小范围擦除的效果,避免当常规方式一旦进行擦除操作,则将整个原存储块整个存储块几千字节的大范围的进行擦除导致了过度擦除的问题,可以进一步的提高flash存储器的使用寿命。
在一些实施例中,由于待写入的第一数据还可能是非常用数据,而是新的数据,因此,在前述实施例中步骤101之后,该方法还可以包括:
若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
当确定第一存储区中没有与第一数据相同的数据,那么说明该第一数据未记录在第一存储区中,该第一数据极有可能是新的数据,是需要进行存储的,一旦遇到掉电情况就可能出现该第一数据未写入到第二存储区之前就丢失的问题,因此就需要将该第一数据直接写入到该第二存储区中,这样写入数据就会基于flash存储器的特点,即便遇到掉电的情况也会被第二存储区所保存,避免了数据丢失的问题。同时,在将第一数据写入到第二存储区的过程中,也需要按照写入顺序进行写入,这样就确保了当写入过程中发现第一数据是新的数据时,可以直接基于写入顺序写入至第二存储区,既确保了第一数据不会写入到第一存储区导致断电丢失的问题,还确保了在写入至目标存储块的过程中也按照写入顺序进行,也就避免了无序写入的情况下,可能导致的对某个或某几个存储块过度擦写的问题,整体提高了flash存储器的寿命。
在一些实施例中,由于第一存储区是基于SRAM构建的,基于SRAM的特点是掉电后会损失其内部存储的数据,因此为确保数据完成性的,在第二存储区中还可以单独为该SRAM准确对应的存储空间,以便监测到掉电指令后及时转移数据。
基于此,前述实施例中步骤102中,在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,在执行时可以包括:
当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
在本实施例中,所述第二存储区中可以设置一个单独为第一存储区准备的分区,即备份分区,这样当检测到掉电指令时,可以将第一存储区的全部数据都写入到该备份分区中,由于备份分区也是flash构建的第二存储区的一部分,这就确保了即便后续整个存储设备掉电后,也能保存原本存在基于SRAM构建的第一存储区中的数据也不会丢失,确保了数据的可靠性。
在一些实施例中,由于实际应用过程中,flash中存储的数据按照读写频率的不同会分为两种,一种是频繁使用的数据,而另一种则可能是很少使用的数据,因此为了便于调用,还可以为这两种数据在第二存储区中设置不同的分区进行存储。这时所述存储分区还包括频繁记录分区和非频繁记录分区。
基于此,前述实施例中,若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,在执行时可以为:
在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
这样,当确定第一存储区中不存在该第一数据相同的数据时,说明该数据可能是新的数据,那么后续用户使用的情况可能很高,因此在频繁记录分区中存储该第一数据,能够确保将用户即将使用的数据保存在频繁记录分区中,有利于数据快速的调用。
在一些实施例中,由于第一数据在写入至存储块的过程中,存储块内可能存在数据,也可能未存在数据,基于此,前述实施例中基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据,在执行时可以按照下述两种方式执行:
一方面,若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
另一方面,若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
对于前一个方面,当确定目标存储块中未存储有数据的时候,这时该目标存储块就可以理解为“空白存储块”,可以直接写入该第一数据即可。
而对于后一个方,当确定目标存储块中存储有数据的时候,那么就需要先对该目标存储块执行擦除操作,该擦除操作可以理解为一种将存储块中的数据内容清除的操作,类似“擦除”的动作。然后,在把第一数据写入到该目标存储块中,实现将第一数据写入目标存储块的效果,这样就确保了当基于写入顺序确定某个存储块为目标存储块时,可以将这个存储块中的数据进行清除的效果,避免了当某个存储块中存储有数据的情况下数据写入失败的问题。
在一些实施例中,目标存储块中存储的第二数据有可能是用户曾经用过的数据,这些数据后续用户还可能使用,因此,前述步骤执行的过程中,还需要对该第二数据进行备份。
基于此,前述实施例中,若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中,在执行时可以如图2进行,其中包括:
201、若确定第二数据需要备份,则在第二存储区中确定非频繁记录区,并基于非频繁记录区的写入顺序确定备份存储块。
在确定了第二数据需要备份后,那么就可以选取对第二数据进行备份的存储块,即备份存储块,当然由于第二存储区分为频繁记录分区和非频繁记录分区,且第一数据写入到的目标存储块为频繁记录分区中的,说明第一数据是用户常用的数据,那么第二数据则说明并非是常用的数据,因此被备份的第二数据则需要转移到非频繁记录分区中。因此备份存储块就需要在非频繁记录分区中选取,并且选取的过程中也需要基于该非频繁记录分区的写入顺序来选取。
202、将第二数据写入至备份存储块,以备份第二数据。
当基于写入顺序确定了备份存储块后,就可以直接将该第二数据写入至该备份存储块中,以实现对该第二数据的备份。
203、对目标存储块执行擦除操作,并将第一数据写入至执行了擦除操作的目标存储块中。
在备份了第二数据之后,目标存储块中的第二数据就可以不用顾忌,可以直接进行删除,也就是对目标存储块执行擦除操作,这样目标存储块中就不再记录有任何数据,可以进行第一数据的存储,此时就可以将第一数据写入至目标存储块中。
在一些实施例中,由于备份存储块是按照写入顺序确定的,那么该备份存储块中可以分为两种情况,一种是存储有数据,另一种是未存储有数据,基于此,对于这两种情况,前述实施例中步骤202中,将所述第二数据写入至所述备份存储块,以备份所述第二数据,在执行时可以包括:
一方面,若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
另一方面,若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
当确定备份存储块中还存储有数据时,即第三数据,并且确定该第三数据也是需要备份的,那么说明该第三数据也可能是历史数据,也就是用户曾经使用的数据,为了避免后续用户再次调用时该第三数据丢失的问题,仍然需要在第二存储区中进行备份。当然,由于第三数据本身已经存储于非频繁记录分区,因此可以说明这个数据本身就不是用户频繁使用的数据,因此在备份的过程中可以仍然在非频繁记录分区中备份。也就是说当确定了第三数据需要备份后,可以在非频繁记录分区中的多个存储块中,从除该备份存储块之外的其余存储块中选取存储块进行备份。然后在备份完第三数据后就可以对该备份存储块进行擦除操作,这样备份存储块中就不再存储有任何数据,这样就可以将第二数据写入到该备份存储块中,以实现在对第二数据进行备份的过程中将备份存储块中原来存储的第三存储块进行备份的效果,既能在数据写入的过程中基于写入顺序保证多个存储块之间的擦写均衡的情况下,还能够确保在备份数据的过程中,避免擦除备份存储块时导致其中原来存储的第三数据的丢失的问题。
在一些实施例中,对于前述实施例中的第二数据、第三数据是否需要备份,实际上可以基于该第二数据和第三数据使用为用户在本次flash存储器设备上电工作后是否使用过程作为依据,也就是说借助由SRAM构建的第一存储区中是否存在该数据作为评判依据。
基于此,本实施例所属的方法还可以包括:
一方面,若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
另一方面,若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
由于第一存储区是基于SRAM构建的存储区,其本身具备掉电后失去所有数据的特性,因此基于第一存储区中是否具备与所述第二数据、第三数据相同的数据,就能够确定第二数据或第三数据是否是在本次存储器带电工作后所使用的数据,当确定在第一存储区中存在与第二数据、第三数据相同的数据时就说明该第二数据和第三数据是用户使用过的,那么这些数据就是需要备份的。
在一些实施例中,为了进一步的便于数据存储和管理,还可以在第二存储区划分成的频繁记录分区和非频繁记录分区中进一步进行划分,也就是说将存储块分成不同页的方式进行管理。在这种情况下,所述频繁记录分区和所述非频繁记录分区中都至少包含一个所述存储页;所述存储页按照地址顺序依次排列,每个所述存储页中包含至少一个所述存储块。
基于此,前述实施例中,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,在执行时可以包括:
301、在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
302、在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
303、将所述第一数据写入至所述目标存储块中。
在将第一数据写入到目标存储块的过程中,基于上述方法可以首先从第二存储区中的频繁记录分区中去欸的那个当前需要执行写入操作的存储页,即目标存储页,在确定目标存储页的过程中,与确定目标存储块的方式一致,也是需要基于写入顺序确定当前的可以执行写入操作的存储页。在这里需要说明的是,在本实施例中存储页可以理解为将存储块按照地址顺序确定的集合。例如,当存在存储块1至存储块10共10个存储块时,基于地址顺序分别确定其顺序也是从存储块1至存储块10排列时,那么基于本实施例的方法,该可以分为存储页A和存储页B,其中存储页A可以包括存储块1至存储块5,存储页B则可以包括存储块6至存储块10,并且基于地址顺序能够确定这两个存储页之间的顺序也是从存储页A至存储页B排序,写入顺序也是从存储页A至存储页B进行。
需要说明的是,在实际应用中,由于有些存储页中可能刚存储了数据,在这个过程中,还可以在选取目标存储页的过程中,将允许执行写入操作的存储页中按照写入顺序选取,在这过程中,每个存储页中还可以设置一个用于表征该存储页是否执行过擦除的存储页标识,也就是说所述存储页中是否允许执行写入操作,在这样的情况下,本实施例中步骤在执行的过程中还可以为:基于所述存储页标识,在多个所述存储页中按照所述写入次序依次确定允许执行所述写入操作的所述存储页,作为目标存储页,并在所述目标存储页中按照写入顺序选取其中的某个存储块作为所述目标存储块。
具体的本步骤所述的方法可以参照图3-a所示,例如,当频繁记录分区中包含存储页1至存储页x多个存储页时,每个存储页都带有一个存储页标识,由于存储页标识能够表征该存储页能否用于写入新的数据,因此可以基于该存储页标识来判断哪一个存储页能够满足写入操作的要求,同时在判断过程中是基于写入次序进行判断的,在这个过程中可以如图3-a所示,从存储页1开始到存储页2至存储页m最终至存储页x之间是按照地址顺序依次排列的,这时可以按照该地址顺序有顺序的进行遍历查询每个存储页的存储页标识,以判断哪个存储页符合写入需求。当基于存储页标识m确定出该存储页m为允许执行写入操作的存储页时,则可以将该存储页m确定为目标存储页。然后在该存储页m中按照该存储页中各个存储块之间的写入顺序确定目标存储块,例如可以基于写入顺序将存储块Bm确定为目标存储块。之后将第一数据写入到该存储页m的存储块Bm中。
在一些实施例中,前述实施例中步骤301在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页,在执行时可以包括:
首先,获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页。
然后,所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
例如,结合前述实施例中的示例所述,当确定存储页m之前存储页为前一次写入操作对应的存储页时,那么就可以确定当前按照写入顺序应该对存储页m执行写入操作,因此可以将该存储页m确定为目标存储页。
这样,在从多个存储页按照写入顺序确定目标存储页的过程中,基于前一次写入操作对应的存储页,确定本次写入第一数据时为前一次写入操作对应的存储页按照地址顺序确定的后续的存储页为目标存储页,这就确保了了在按照写入顺序确定存储页的过程中能够结合前次写入操作进行判断,确保了目标存储页确定的准确性。
在一些实施例中,前述实施例中步骤302在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块,在执行时可以具体为:
获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序。
基于存储块的地址顺序,将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
在本实施例中,由于每个存储块之间是基于物理地址之间按照顺序排列的,因此,在确定目标存储块的过程中也可以基于前一次写入的物理地址对应的存储块确定前一次写入操作对应的存储块。那么在此次写入第一数据的过程中,就可以基于存储块之间的地址顺序确定前一次写入的那个存储块之后的下一个存储块就是本次写入时对应的存储块,即目标存储块。
这样,通过按照存储块物理地址先后顺序以及每个存储块对应的物理地址就能够确定存储块之间的先后顺序,即存储块的地址顺序,然后通过前一次写入操作对应的存储块的下一个存储块作为目标存储块,确保了目标存储块的确定结果准确性。
结合前述多个实施例所述的方法,在本实施例中上述方法在将第一数据写入到目标存储块的执行的过程中可以结合下述图3-b进行:其中,当在频繁记录分区基于各个存储页之间的页地址,按照存储页之间的顺序从存储页1至存储页m依次经过遍历查询后,可以根据每个存储页的存储页标识确定出哪些存储页中都记录有数据,这时基于写入顺序确定当确定存储页m为需要执行写入操作的存储页时,也就是说该存储页m为目标存储页。同时基于存储页标识确定存储页m中存储有数据时,并确定该存储页m中存储的数据在第一存储区中存在相同的数据,说明该存储页m中存储的数据需要备份。这时就可以在非频繁记录分区中选取备份存储页。也就是在存储页α至存储页φ中遍历查询,当基于存储页标识β确定存储页β为允许执行写入操作的存储页时,则可以将该存储页β确定为备份存储页。由于前述步骤可知在频繁记录分区中的存储页m是需要进行备份的,因此可以将存储页m中的数据写入到存储页β中,从而完成备份。然后对该存储页m执行擦除操作,这样擦除后的存储页m由于已经清除了原来存储的数据内容,此时该存储页是空白的,因此可以将该擦除后的存储页m中继续按照存储块之间的写入顺序从存储块Am至存储块Nm中选取目标存储块,譬由于此时的从存储块Am到存储块Nm都是空白的存储块,因此可以直接依照该存储页m中的各个存储块的排序次序选取最靠前的存储块作为目标存储块,由于存储块Am为首个存储块,因此可以选取存储块Am作为该目标存储块。
需要说明的是,在本实施例中,每个存储页中携带的存储页标识可以如图3-a及3-b所示,是在存储页中单独开辟的存储空间,与存储块类似,只不过区别在于该存储空间中只负责存储存储页标识,并不负责存储写入操作时的数据内容,只有在对该存储页执行擦除操作后才会对其中涉及的存储页标识进行修改,这样就能避免每次在对存储页进行擦除时误将存储页标识删改导致的后续擦除的记录受到影响的问题。另外,在本实施例中,所述存储页标识可以为存储页中的EraseCount,而基于基于存储页标识判断该存储页是否允许直接执行写入操作则可以通过判断EraseCount是否失效来进行。当EraseCount有效时,说明该存储页中存储了数据内容,并不能直接写入数据,而是要先进行擦除,反之,当EraseCount失效时,则说明该存储页中未存储数据,可以直接执行写入操作。另外,需要说明的是,在本实施例中当对存储页中写入数据之后,如同其他种类的存储器一样,也需要对存储页标识进行修改,以确保后续再进行写入操作时进行辨别,具体过程就是将EraseCount恢复到有效状态,这个过程与其他存储器中修改擦写记录或擦写标识的方式一致,在此具体细节就不再赘述。
在一些实施例中,为了避免数据存储时过于密集导致某些情况下写入数据可能影响某些已经存储的数据,在本实施例中还可以对写入数据写入后的相关存储页进行分析,基于此,前述实施例的方法在执行时还可以执行下述步骤:
当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
具体的,本实施例所述的方法在执行的过程中,可以按照下述方式进行:
在本实施例中,由于存储页标识能够体现出对应的存储页中是否存储有数据。同时为了避免数据存储过程中过于密集,避免写入时误擦除的问题,在本步骤可以通过存储页标识来判断之前目标存储页之后的相邻的存储页中是否存储有数据,也就是判断该相邻的存储页是否允许执行写入操作。当判断相邻的存储页不允许执行写入操作,则判断相邻的存储页是否需要备份。
当确定该相邻的存储页中不允许执行写入操作,则说明该存储页存储有数据,属于“脏页”,为了避免了数据存储过于密集,就需要对该相邻的存储页进行擦除,但在擦除之前还需要判断该相邻的存储页中的数据是否属于需要备份的重要数据。
基于判断结果,分为两种情况:一种情况是当确定相邻的存储页需要备份时说明这个存储页中的数据虽然影响了目标存储页所存储的第一数据对存储密度的要求,但也是属于比较重要的数据,不能直接擦除,而是需要备份的。那么在这个过程中就需要在非频繁记录区中备份。当备份完成后,就可以对该相邻的存储页执行擦除操作。这样排列在目标存储页的相邻的存储页是“空白存储页”,这样在每次执行写入操作的过程中,都能确保写入后的目标存储页相邻的存储页都不是“脏页”,这样就降低了数据存储的密度,有利于当需要写入数据时能在这些“空白存储页”直接进行写入,而不需要进行擦除操作,既能避免存储密度过高导致某些特殊情况下把两个相邻的存储页中的数据内容都删除带来了数据误删的问题,还能够在后续执行写入操作时,某些特殊情况不考虑存储密度时能直接在这些“空白存储页”中直接进行写入,节省了擦除操作的过程,提高了写入效率。
对于判断的另一种情况,当确定相邻的存储页不需要备份时,就说明该相邻的存储页中存储的数据实际上是没有的废弃数据,那么这些数据占用数据空间进行备份是浪费宝贵的存储空间的,因此在本步骤中可以直接对该相邻的存储页执行擦除操作。
在一些实施例中,前述实施例中将所述第一数据写入至所述目标存储块中,在执行时可以包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
在本实施例中,所述目标存储块可以包括两个部分,即存储分块以及验证分块,其中存储分块可以理解为用于存储数据内容的部分,而验证分块可以理解为存储表征数据完成性信息的部分。
这样在将第一数据写入的过程中,不仅能够将第一数据的数据内容写入到存储块中,还能够将体现数据完整性的验证标识添加到存储块中,这就确保了在后续读取、调用该第一数据时,能够基于该验证分块中的验证标识对第一数据的完整性进行校验,有效避免了数据缺失时读取第一数据失败的情况的发生,为后续数据读取、使用过程的稳定性奠定了基础。
在一些实施例中,存储块在存储分块、验证分块的基础上,还可能设置有数据长度分块和地址记录分块,基于此,在所述将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识之后,所述方法还包括:
根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
这样就可以在存储第一数据的过程中,还能同时记录该第一数据的整体长度,并同时记录该第一数据在该存储块中的地址情况,有利于在系统层面对第一数据的存储位置进行定位和数据量的确定。这样在后续进行第一数据读取、调用的过程中,可以基于上述信息进行分析,便于用户对数据的分析和排查。
可以如图4所示,在存储块A1中可见,存储分块是该存储块A1中的占据了最大的空间,该空间就是用来存储具体的数据内容的。同时,由于数据内容在存储过程中实际上还要标识其存储的位置,记作地址信息,并添加到该地址记录分块中。同时,由于数据内容可能并不是完全将存储分块的全部空间。例如当存储分块为10个字节,而数据内容为5个字节,那么在存储该数据内容的时候还需要记录这个数据总计长度,也就是实际占用的空间大小,即本实施例所述的数据长度,5个字节。另外在数据存储过程中还需要对存储的数据内容是否错误进行标识,也就是说在验证分块中添加验证标识。需要说明的是验证标识具体可以是不同的,这是基于存储分块中存储的数据内容是否错误、以及错误程度决定的,在此对于验证标识的种类、格式在此不做限定,可以采取现有的任意一种数据存储过程中的验证标识均可。
在一些实施例中,还可能存储flash存储器掉电后重新启动的情况,在这个情况下,为了实现恢复之前运行状态的效果,还可以基于第二存储区对第一存储区中的数据进行恢复。基于此,所述方法还可以包括:
首先,遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
然后,基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
最后,将所述有效数据添加到所述第一存储区中。
由于第二存储区实际上是基于软件层面将一个完整的flash存储器划分成不同的区域,即备份分区,频繁记录分区以及非频繁记录分区,因此在恢复第一存储区之前,首先需要确定第二存储区中各个分区之间的起始位置,从而确定这些数据的分布情况。
当确定了各个分区的起始位置之后,就可以根据起始位置确定这几个分区中存有的数据都有哪些,即分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据。结合前述实施例的描述可知第一数据、第二数据以及第三数据都是用户所需的数据,因此这些数据也属于本实施例所述的有效数据。需要说明的是,在本实施例中,所述有效数据包括但不限于上述第一数据、第二数据及第三数据。也就是说第二存储区中的数据内容中用户常用的数据均为有效数据。当确定了有效数据后,就可以获知哪些在第二存储区中的数据是用户常用的,那么就可以将这些数据添加到第一存储区中,这样就恢复到第一存储区在掉电失效之前的状态,有利于后续及时响应相应的读写操作。
在一些实施例中,由于在实际的数据存储过程中,频繁记录分区和非频繁记录分区中的存储页不都是记录有数据的,同理一个存储页中也可能存在部分存储块记录有数据的情况,因此,在去欸的那个有效数据的过程中还需要对每个存储页和每个存储页中的每个存储块是否记录了数据进行分析。
基于此,前述步骤中所述基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,在执行时可以包括:
首先,获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
其次,在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
结合前述实施例的描述可知,每个存储页都记录有存储页标识,而每个存储块中都记录有验证标识,二者分别可以体现存储页和存储块是否存储有数据,因此,在本实施例中在确定存储页中是否有数据的时候,就可以基于存储页标识进行判断,而在确定存储块中是否有数据的时候就可以基于存储块的验证标识进行判断。这样就可以实现快速确定是否存储有书的判读效果,避免了在每个存储页中的每个存储块中进行数据查询的分析过程,提高了识别效率。
进一步的,作为对上述图1至图4所示方法的实现,本申请另一实施例还提供了一种数据存储装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置为了实现一种基于flash的数据存储方法,以解决目前常规的基于flash的数据存储影响flash存储器的整体使用寿命的问题,具体如图5所示,该装置包括:
第一确定单元51,可以用于确定待写入的第一数据;
第一执行单元52,可以用于若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
进一步的,如图6所示,所述装置还包括:
第二执行单元53,可以用于若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
进一步的,如图6所示,所述第一执行单元52,具体用于当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
进一步的,如图6所示,所述第二执行单元53包括:
确定模块531,可以用于在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
写入模块532,可以用于基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
进一步的,如图6所示,所述写入模块532,可以用于若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
所述写入模块532,还可以用于若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
进一步的,如图6所示,所述写入模块532包括:
确定子模块5321,可以用于若确定所述第二数据需要备份,则在所述第二存储区中确定非频繁记录区,并基于所述非频繁记录区的写入顺序确定备份存储块;
备份子模块5322,可以用于将所述第二数据写入至所述备份存储块,以备份所述第二数据;
写入子模块5323,可以用于对所述目标存储块执行所述擦除操作,并将所述第一数据写入至执行了所述擦除操作的目标存储块中。
进一步的,如图6所示,所述备份子模块5322,具体可以用于若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
所述备份子模块5322,还可以用于若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
进一步的,如图6所示,所述装置还包括:
第二确定单元54,可以用于若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
第三确定单元55,可以用于若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
进一步的,如图6所示,所述第一执行单元52包括:
第一确定模块521,可以用于在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
第二确定模块522,可以用于在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
写入模块523,可以用于将所述第一数据写入至所述目标存储块中。
进一步的,如图6所示,所述第一确定模块521,具体可以用于获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页,并将所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
进一步的,如图6所示,所述第二确定模块522,具体可以用于获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序,并将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
进一步的,如图6所示,所述写入模块523,具体可以用于将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
进一步的,如图6所示,所述装置还包括:
第四确定单元56,可以用于遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
第五确定单元57,可以用于基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
添加单元58,可以用于将所述有效数据添加到所述第一存储区中。
进一步的,如图6所示,所述第五确定单元57包括:
第一确定模块571,可以用于获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
第二确定模块572,可以用于在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
为了实现上述目的,根据本申请的另一方面,本申请实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据存储方法。
为了实现上述目的,根据本申请的另一方面,本申请实施例还提供了一种数据存储装置,所述装置包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行上述所述的数据存储方法。
本申请实施例提供一种数据存储方法及装置,本申请实施例能够确定待写入的第一数据;若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,从而实现了基于flash的数据存储功能。相较于现有技术,在本申请的基于flash的数据存储过程中,由于所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,因此,在写入过程中能够基于写入顺序选取存储块作为目标存储块进行写入,这就确保了在写入数据的过程中,能够以一定顺序进行写入至不同的存储块中,而不会因地址的顺序等原因屡次在同一个存储块中写入数据的情况,这就避免了反复在某个或某几个存储块进行擦写时带来的过多磨损的问题,从而避免了因个别存储块过度磨损失效而导致整个flash存储器寿命受到影响的问题。另外,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就可以确保在对第一数据进行写入的过程中,一旦确定该第一存储区中存在与该第一数据相同的数据时,说明该第一数据是用户常用的数据,那么就可以确保当用户突然下达掉电指令时,以SRAM构建的第一存储区中的第一数据能够及时写入到以flash构建的第二存储区中,解决了SRAM中的数据因掉电而丢失的问题。同时,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位,这样就确保了在进行数据存储的过程中避免了原有的以千字节为单位的原存储块的存储空间划分方式,这就保证了在存储多条不同的数据时,在原存储块中可以存储多个不同的数据,且能够对不同的数据单独进行管理,也就是说在擦除的过程中可以对目标字节数的存储块实现几个字节或几十字节的小范围擦除的效果,避免当常规方式一旦进行擦除操作,则将整个原存储块整个存储块几千字节的大范围的进行擦除导致了过度擦除的问题,可以进一步的提高flash存储器的使用寿命。
所述数据存储装置包括处理器和存储器,上述第一确定单元、第一执行单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现一种数据存储方法,以解决目前常规的基于flash的数据存储影响flash存储器的整体使用寿命的问题。
本申请实施例提供了一种数据存储设备,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行前述任一项所述的数据存储方法。
本申请实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据存储方法。
存储介质可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
进一步的,所述方法还包括:
若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
进一步的,所述在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
进一步的,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
进一步的,所述基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据,包括:
若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
或者,
若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
进一步的,所述若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中,包括:
若确定所述第二数据需要备份,则在所述第二存储区中确定非频繁记录区,并基于所述非频繁记录区的写入顺序确定备份存储块;
将所述第二数据写入至所述备份存储块,以备份所述第二数据;
对所述目标存储块执行所述擦除操作,并将所述第一数据写入至执行了所述擦除操作的目标存储块中。
进一步的,所述将所述第二数据写入至所述备份存储块,以备份所述第二数据包括:
若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
或者,
若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
进一步的,所述方法还包括:
若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
进一步的,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
将所述第一数据写入至所述目标存储块中。
进一步的,所述在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页,包括:
获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页,并将所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
进一步的,所述在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块,包括:
获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序,并将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
进一步的,所述将所述第一数据写入至所述目标存储块中,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
进一步的,所述方法还包括:
遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
将所述有效数据添加到所述第一存储区中。
进一步的,所述基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据包括:
获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (17)
1.一种数据存储方法,其特征在于,所述方法包括:
确定待写入的第一数据;
若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中。
3.根据权利要求1所述的方法,其特征在于,所述在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
当检测到掉电指令时,基于所述第二存储区中的备份分区的写入顺序,在所述备份分区中的多个所述存储块中确定所述目标存储块,并将所述第一数据写入至目标存储中,其中,所述掉电指令包括休眠指令及掉电指令。
4.根据权利要求2所述的方法,其特征在于,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中若确定所述第一存储区中不存在与所述第一数据相同的数据时,将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储分区中确定频繁记录分区,并获取所述频繁记录分区的写入顺序;
基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据。
5.根据权利要求4所述的方法,其特征在于,所述基于所述频繁记录分区的写入顺序,从所述频繁记录分区的多个存储块中,确定所述目标存储块,并在所述目标存储块中写入所述第一数据,包括:
若确定所述目标存储块未存储有任何数据,则将所述第一数据写入至所述目标存储块;
或者,
若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中。
6.根据权利要求5所述的方法,其特征在于,所述若确定所述目标存储块中存储有第二数据,则对所述目标存储块执行擦除操作,并将所述第一数据写入至执行过所述擦除操作后的目标存储块中,包括:
若确定所述第二数据需要备份,则在所述第二存储区中确定非频繁记录区,并基于所述非频繁记录区的写入顺序确定备份存储块;
将所述第二数据写入至所述备份存储块,以备份所述第二数据;
对所述目标存储块执行所述擦除操作,并将所述第一数据写入至执行了所述擦除操作的目标存储块中。
7.根据权利要求6所述的方法,其特征在于,所述将所述第二数据写入至所述备份存储块,以备份所述第二数据包括:
若确定所述备份存储块中存储有第三数据,且所述第三数据需要备份,则将所述非频繁记录分区中除所述备份存储块之外的其余的存储块中备份所述第三数据,并对所述备份存储块执行所述擦除操作,将所述第二数据写入至执行所述擦除操作后的所述备份存储块中;
或者,
若确定所述备份存储块中未存储有任何数据,则将所述第二数据写入至所述备份存储块中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若在所述第一存储区中确定存在与所述第二数据相同的数据,则确定所述第二数据需要备份;
若在所述第一存储区中确定存在与所述第三数据相同的数据,则确定所述第三数据需要备份。
9.根据权利要求1所述的方法,其特征在于,所述将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中,包括:
在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页;
在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块;
将所述第一数据写入至所述目标存储块中。
10.根据权利要求9所述的方法,其特征在于,所述在所述第二存储区中的多个存储页中,基于每个所述存储页之间的地址顺序确定所述目标存储页,包括:
获取所述第二存储区中的每个存储页的页地址,并基于所述页地址的地址顺序,确定前一次写入操作对应的存储页,并将所述前一次写入操作对应的存储页的下一个存储页确定为所述目标存储页,其中,所述页地址是基于每个所述存储页包含的全部存储块的物理地址确定的。
11.根据权利要求9所述的方法,其特征在于,所述在所述目标存储页中的多个存储块中,基于每个所述存储块之间的地址顺序确定所述目标存储块,包括:
获取所述存储页中每个存储块的物理地址,并基于所述物理地址的先后顺序,以及每个所述存储块包含的物理地址确定所述存储块的地址顺序,并将前一次写入操作对应的存储块的下一个存储块确定为所述目标存储块。
12.根据权利要求9所述的方法,其特征在于,所述将所述第一数据写入至所述目标存储块中,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
遍历所述第二存储区中的全部存储块,分别确定所述第二存储区中的所述备份分区、所述频繁记录分区以及非频繁记录分区中的起始位置;
基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据,其中,所述有效数据在用户常用的数据,所述有效数据包括所述第一数据、所述第二数据以及所述第三数据;
将所述有效数据添加到所述第一存储区中。
14.根据权利要求13所述的方法,其特征在于,所述基于所述起始位置分别确定所述备份分区、所述频繁记录分区以及所述非频繁记录分区中的有效数据包括:
获取每个所述存储页的存储页标识,并基于所述存储页标识确定在所述第二存储区中的记录有数据的存储页;
在所述记录有数据的存储页中,基于每个存储块的验证标识,在多个存储块中确定存储有数据的存储块,并将所述存储有数据的存储块中的数据确定为所述有效数据。
15.一种数据存储装置,其特征在于,所述装置包括:
第一确定单元,用于确定待写入的第一数据;
第一执行单元,用于若确定第一存储区中存在与所述第一数据相同的数据,则在检测到掉电指令时将所述第一数据按照所述写入顺序写入所述第二存储区中的所述目标存储块中;
其中,所述写入顺序是按照所述第二存储区中的各个存储块的地址的顺序确定的,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
16.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1-14中任一项所述的数据存储方法。
17.一种数据存储设备,其特征在于,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行权利要求1-14中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211060532.5A CN115373607A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211060532.5A CN115373607A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373607A true CN115373607A (zh) | 2022-11-22 |
Family
ID=84069378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211060532.5A Pending CN115373607A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373607A (zh) |
-
2022
- 2022-08-31 CN CN202211060532.5A patent/CN115373607A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1760875B (zh) | 基于文件存取特性在各种类型的存储卷之间透明迁移文件 | |
KR100644602B1 (ko) | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 | |
KR100906519B1 (ko) | 비-휘발성 메모리 시스템에서 사용불가능한 블록을관리하기 위한 방법 및 장치 | |
KR100914089B1 (ko) | 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치 | |
KR100453053B1 (ko) | 플래쉬 메모리용 파일 시스템 | |
US20080177937A1 (en) | Storage apparatus, computer system, and method for managing storage apparatus | |
US7421624B2 (en) | Data recovery apparatus and method used for flash memory | |
KR100526178B1 (ko) | 플래시 메모리 액세스 장치 및 방법 | |
CN110134645B (zh) | 文件系统存储管理方法、读取方法、管理装置和读取装置 | |
CN110764704A (zh) | 一种环境变量写入方法、存储介质及电子装置 | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
CN115373608A (zh) | 数据存储方法及装置 | |
CN116185563B (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
CN115373607A (zh) | 数据存储方法及装置 | |
CN113467724B (zh) | 一种crc校验码存储方法、装置、设备及介质 | |
CN113190179B (zh) | 提升机械硬盘使用寿命的方法、存储设备及系统 | |
CN110471623B (zh) | 硬盘文件写入方法、装置、计算机设备和存储介质 | |
CN114064596A (zh) | 一种日志型嵌入式文件系统设计方法、系统及存储介质 | |
CN115469802A (zh) | 数据存储设备 | |
CN111949198A (zh) | 一种坏块管理方法、装置和存储设备 | |
CN111414280A (zh) | 针对ntfs文件系统的数据备份系统及方法 | |
CN110688257A (zh) | 一种全闪存阵列的局部元数据修复方法、装置及设备 | |
CN113703671B (zh) | 一种数据块擦除方法及相关装置 |
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 |