CN115373608A - 数据存储方法及装置 - Google Patents
数据存储方法及装置 Download PDFInfo
- Publication number
- CN115373608A CN115373608A CN202211062382.1A CN202211062382A CN115373608A CN 115373608 A CN115373608 A CN 115373608A CN 202211062382 A CN202211062382 A CN 202211062382A CN 115373608 A CN115373608 A CN 115373608A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- block
- target
- backup
- 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 131
- 238000013500 data storage Methods 0.000 title claims abstract description 62
- 230000003068 static effect Effects 0.000 claims abstract description 12
- 238000005192 partition Methods 0.000 claims description 186
- 230000015654 memory Effects 0.000 claims description 128
- 238000012795 verification Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 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
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据存储方法及装置,涉及存储技术领域。本申请的方法包括:确定待写入的第一数据;若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据存储方法及装置。
背景技术
随着技术的发展,存储技术也随之进步。目前,常规技术一般利用flash存储器(Flash EEPROM Memory,简称flash存储器)来实现随机访问的性能。flash存储器是存储芯片的一种,通过特定的程序可以修改里面的数据。flash在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”。但在实际应用,为了实现较快的读写速度,常规的flash存储器在使用时往往需要借助静态随机存取存储器,也就是说在写入数据的过程中,一旦出现掉电情况,就会导致待写入的数据因静态随机存取存储器掉电失效而写入失败,从而导致数据存储过程中存在掉电丢失的问题。
发明内容
本申请实施例提供一种数据存储方法及装置,主要目的在于实现一种基于flash的数据存储方法,在能够解决数据存储过程中掉电丢失的问题。
为解决上述技术问题,本申请实施例提供如下技术方案:
第一方面,本申请提供了一种数据存储方法,所述方法包括:
确定待写入的第一数据;
若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
可选的,所述方法还包括:
当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
可选的,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
可选的,所述将所述第一数据写入第二存储区中的目标存储块,包括:
若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
可选的,所述若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
可选的,所述若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份;
若需要,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块;
将所述目标存储块执行擦除操作,并在执行了所述擦除操作后的所述目标存储块中写入所述第一数据。
可选的,所述当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份,包括:
判断在所述第一存储区中是否存在与所述第二数据相同的数据;
所述若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
可选的,所述当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块,包括:
在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识用于表征所述存储页中是否存储有数据内容;
在所述目标存储页中的多个存储块中选取所述目标存储块。
可选的,所述在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,包括:
若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作;
所述在所述目标存储页中的多个存储块中选取所述目标存储块,包括:
在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
可选的,所述方法还包括:
当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
可选的,所述从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页;
在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
可选的,所述在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块,包括:
若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中;
对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
可选的,所述方法还包括:
当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
可选的,所述将所述第一数据写入第二存储区中的目标存储块,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
可选的,在所述将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识之后,所述方法还包括:
根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
第二方面,本申请还提供了一种数据存储方法,所述方法包括:
确定单元,用于确定待写入的第一数据;
第一执行单元,用于若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
可选的,所述装置还包括:
第二执行单元,用于当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
可选的,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
可选的,所述第一执行单元,包括:
第一执行模块,用于若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
第二执行模块,用于若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
可选的,所述第一执行模块,包括:
选取子模块,用于当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
写入子模块,用于当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
可选的,所述第二执行模块,包括:
第一选取子模块,用于当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
判断子模块,用于当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份;
第二选取子模块,用于若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块;
写入子模块,用于将所述目标存储块执行擦除操作,并在执行了所述擦除操作后的所述目标存储块中写入所述第一数据。
可选的,所述判断子模块,具体用于判断在所述第一存储区中是否存在与所述第二数据相同的数据;
所述第二选取子模块,具体用于若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
可选的,所述第一选取子模块,具体用于在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识用于表征所述存储页中是否存储有数据内容,以及,在所述目标存储页中的多个存储块中选取所述目标存储块。
可选的,所述第一选取子模块,还具体用于若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作,以及,在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
可选的,所述装置还包括:
第三执行单元,用于当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
可选的,所述第二选取子模块,还用于在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页,以及在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
可选的,所述第二选取子模块,还具体用于若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中,以及,对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
可选的,所述装置还包括:
第四执行单元,用于当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
可选的,所述第一执行单元,包括:
写入模块,用于将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
可选的,所述第一执行单元还包括:
添加模块,用于根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
第三方面,本申请还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面所述的数据存储方法。
第四方面,本申请还提供了一种数据存储设备,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行第一方面中任一项所述的数据存储方法。
借由上述技术方案,本申请提供的技术方案至少具有下列优点:
本申请提供一种数据存储方法及装置,本申请能够首先确定待写入的第一数据,然后若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块,从而实现了基于flash的数据存储功能。相较于现有技术,在本申请的数据存储过程中,由于所述第一存储区为基于SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就确保当待写入的第一数据存在且第一存储区中不存在与之相同的数据的情况下,能够直接将该第一数据存储在第二存储区中,由于第二存储区是基于flash构建的存储区,那么即便遇到掉电情况,第二存储区中的第一数据也不会丢失,这解决数据存储过程中遇到的掉电情况导致的数据丢失的问题。同时,由于本申请的存储方法在存储时,第二存储区中的存储块是以目标字节数划分的,不同于以往常规的以千字节设置的原存储块,这样就能够在原存储块大小的存储空间内实现对多个不同数据的分别管理的效果,避免当常规方式在将不同数据存储在一个原存储块时,一旦进行擦除操作,很可能将整个原存储块对应的多个不同数据同时清除的问题。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,相同或对应的标号表示相同或对应的部分,其中:
图1示出了本申请实施例提供的一种数据存储方法流程图;
图2示出了本申请实施例提供的另一种数据存储方法执行过程中具体步骤的流程图;
图3-a示出了本申请实施例提供的一种数据存储方法执行过程中的示意图;
图3-b示出了本申请实施例提供的另一种数据存储方法执行过程中的示意图;
图4示出了本申请实施例提供的又一种数据存储方法执行过程的中的示意图。
图5示出了本申请实施例提供的一种数据存储装置的组成框图;
图6示出了本申请实施例提供的另一种数据存储装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
本申请实施例提供了一种数据存储方法的流程图,如图1所示,该方法包括:
101、确定待写入的第一数据。
由于在数据写入的过程中,一般都是基于用户下达的写入操作指令实现的,因此在本实施例中存储数据时,需要首先判断在存储数据之前是否存在写入行为,也就是对写入操作指令进行检测。当检测到写入操作指令时,说明用户需要对一些数据写入到存储设备中,也就是说当前存在待写入的第一数据,这时就需要基于该写入操作指令确定是哪个或哪些数据需要被写入,即确定第一数据。在本实施例中,对于第一数据的形式、种类、数量不做限定,可以根据用户的实际情况进行确定。
102、若确定第一存储区中不存在与第一数据相同的数据,则将第一数据写入第二存储区中的目标存储块。
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
当确定了存在需要写入的第一数据时,就可以进一步判断该第一数据是否是新的数据还是旧的数据,这时就可以基于第一存储区进行辨识。基于此可以判断在第一存储区中是否存在与写入数据相同的第一数据。如果该第一数据存储在第一存储区中,那么这个数据就极有可能是此前使用过的数据,并非新的数据。
而当确定第一存储区中没有与第一数据相同的数据,那么说明该第一数据未记录在第一存储区中,该第一数据极有可能是新的数据,是需要进行存储的,一旦遇到掉电情况就可能出现该第一数据未写入到第二存储区之前就丢失的问题,因此就需要将该第一数据直接写入到该第二存储区中,这样写入数据就会基于flash存储器的特点,即便遇到掉电的情况也会被第二存储区所保存,避免了数据丢失的问题。
同时,在本实施例中在将写入数据写入到第二存储区时,是从第二存储区中选取目标存储块进行存储的,由于目标存储块是符合写入条件的存储块,且本实施例中的存储块不同于常规的flash存储器中的存储块,在常规的原存储块中,每个存储块的大小为1kb至几kb不等,也就是说是按照千字节的大小设置的存储空间,这样当每次写入数据的数据量较小的情况下,为了实现对每个不同的数据进行分别管理的功能,就需要在每个原存储块中只存储一个数据,这就会造成大量的存储空间的浪费,而一旦将多个不同数据写入到一个原存储块中,一旦需要对该原存储块进行擦除时,就会将不同的数据进行消除,从而又会导致数据的误删的问题。因此,在本实施例中通过将存储块设置成以目标字节数大小的存储单位,这就可以实现在原存储块中1kb或几kb的空间内形成多个不同的小的存储单位的形式,也就是说本实施例中所述的第二存储区中的存储块时以字节(B)为单位进行设置的存储单位,而非传统的存储块以千字节即KB为单位的,这样就可以在原存储块大小的空间内分别存储多个不同的数据,还能对每个数据进行管理的效果,即节约了存储空间,又能避免误删的情况。
基于此,本实施例提供一种数据存储方法。相较于现有技术,在本申请的数据存储过程中,由于所述第一存储区为基于SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就确保当待写入的第一数据存在且第一存储区中不存在与之相同的数据的情况下,能够直接将该第一数据存储在第二存储区中,由于第二存储区是基于flash构建的存储区,那么即便遇到掉电情况,第二存储区中的第一数据也不会丢失,这解决数据存储过程中遇到的掉电情况导致的数据丢失的问题。同时,由于本申请的存储方法在存储时,第二存储区中的存储块是以目标字节数设置的,不同于以往常规的以千字节设置的原存储块,这样就能够在原存储块大小的存储空间内实现对多个不同数据的分别管理的效果,避免当常规方式在将不同数据存储在一个原存储块时,一旦进行擦除操作,很可能将整个原存储块对应的多个不同数据同时清除的问题。
在一些实施例中,由于第一存储区是基于SRAM构建的,基于SRAM的特点是掉电后会损失其内部存储的数据,因此为确保数据可靠性,避免在出现掉电情况后内部数据丢失的问题,还可以在检测到掉电情况发生时将第一存储区中的数据进行转移。
基于此,在前述实施例中执行时,该方法还可以包括:
当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
在本实施例中,所述第二存储区中可以设置一个单独为第一存储区准备的分区,即备份分区,这样当检测到掉电指令时,可以将第一存储区的全部数据都写入到该备份分区中,由于备份分区也是flash构建的第二存储区的一部分,这就确保了即便后续整个存储设备掉电后,也能保存原本存在基于SRAM构建的第一存储区中的数据也不会丢失,确保了数据的可靠性。
在一些实施例中,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
EEPROM存储器(Electrically Erasable Programmable read only memory,简称EEPROM)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片具有较好的随机读写的功能。
在本实施例中,通过将备份分区的存储空间设置为至少一个EEPROM存储器的存储容量,这就确保了在执行本实施例的方法的过程中,即能够避免掉电时数据丢失的问题,同时还兼顾的EEPROM的容量,实现了模拟了类似EEPROM存储器的特点的存储方式。由于EEPROM的电路复杂,存在成本较高的问题,基于本实施例的方案实现了模拟类似EEPROM存储方案的存储方法,因此保证了较好的随机读写和容量的情况下,降低了存储器的使用成本。
在一些实施例中,由于第一数据在写入至存储块的过程中,存储块内可能存在数据,也可能未存在数据,基于此,前述实施例中所述将所述第一数据写入第二存储区中的目标存储块,在执行时可以按照下述两种方式执行:
一方面,若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
另一方面,若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
对于前一个方面,当确定目标存储块中未存储有数据的时候,这时该目标存储块就可以理解为“空白存储块”,可以直接写入该第一数据即可;而对于后一个方,当确定目标存储块中存储有数据的时候,那么就需要先对该数据进行备份,然后在备份之后再对该目标存储块执行擦除操作,该擦除操作可以理解为一种将存储块中的数据内容清楚的操作,类似“擦除”的动作。然后,在把第一数据写入到该目标存储块中,实现将第一数据写入目标存储块的同时,还能够对其中存在的原来的数据进行备份的效果,避免了在写入第一数据的过程中,将原有数据擦除后丢失的问题,提高了数据的稳定性。
在一些实施例中,由于实际应用过程中,flash中存储的数据按照读写频率的不同会分为两种,一种是频繁使用的数据,而另一种则可能是很少使用的数据,因此为了便于调用,还可以为这两种数据在第二存储区中设置不同的分区进行存储,这时第二存储区中可以分为频繁记录分区和非频繁记录分区。
基于此,前述步骤所述若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块,在执行时可以包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
这时通过本步骤的方法,能够确保在第二存储区分为频繁记录分区和非频繁记录分区时,优先从频繁记录分区中的多个存储块中选取目标存储块,且该目标存储块中没有存储任何数据的情况下,直接将该第一数据写入到目标存储块中,这就实现了在数据存储的过程中,可以优先将数据写入到频繁记录分区中,由于第一数据是基于写入指令确定的,那么该数据就极有可能是用户随时需要的,这时就能够确保后续用户再次调用和读取该第一数据时能够直接从频繁记录分区中获取,实现了将用户可能频繁使用的数据存储在频繁记录分区的效果。
在一些实施例中,由于频繁记录分区中可能全部已记录满数据,也就是说其中没有未记录数据的存储块,那么在这种情况下,当存在第一数据需要写入时,就需要将频繁记录分区中的部分数据转移至非频繁记录分区中。
基于此,前述步骤中所述若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中,在执行时可以具体按照下述方式进行,具体如图2所示:
201、当第二存储区包括频繁记录分区和非频繁记录分区时,从频繁记录分区中的多个存储块中选取目标存储块。
202、当确定目标存储块中存储有第二数据时,判断第二数据是否需要备份。
203、若确定第二数据需要备份,则从非频繁记录分区中的多个存储块中,选取备份存储块,并将第二数据备份至所述备份存储块。
204、将目标存储块执行擦除操作,并在执行了擦除操作后的目标存储块中写入第一数据。
在本实施例中,由于可能存在频繁第二存储区中的数据已满,不存在“空白存储块”,即确定当前目标存储块中存储有第二数据,这就需要考虑是否需要将第二数据进行备份,即将第二数据转移到非频繁记录分区中,当确定第二数据需要备份时,说明该第二数据可能是用户所需的数据,但相比该第一数据,并不是频繁使用的数据,因此可以从非频繁记录分区中选取一个未记录任务数据的存储块,即备份存储块,然后将第二数据备份到该备份存储块中,这时第二数据在已经备份的情况下,就可以对目标存储块进行擦除操作,并将第一数据写入到已执行擦除操作的目标存储块中。
这样就避免了在写入新的数据(第一数据)时将老的数据(第二数据)删除丢失的问题,确保了数据的稳定性,避免了新的数据写入时的数据丢失问题。
在一些实施例中,前述步骤中202当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份,在执行时可以具体为:
判断在所述第一存储区中是否存在与所述第二数据相同的数据。
基于此,前述步骤203若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,在执行时可以具体为:
若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
基于前述实施例的描述可知,第一存储区是基于SRAM构建的,是用于快速读写的存储区,那么该存储区中存在的数据就说明是用户需要的比较重要的数据,因此,在确定第二数据,即目标存储块中原来存储的数据,是否需要备份就可以基于该第一存储区进行判断。当确定该第一存储区中存在与第二数据相同的数据,说明该第二数据是用户后续还能需要的,为了确保数据的在掉电后仍然存储,那么后续就需要将该第二数据写入到非频繁记录区中的存储块中选出的备份存储块中进行备份,这样即便后续遇到了掉电情况,第一存储区中虽然已经因掉电失效,其中存在的与第二数据相同的数据已经丢失,但在第二存储区中非频繁记录区中的备份存储块中仍然记录有该第二数据,因此保证了数据的稳定性,能够有效应对掉电带来的数据丢失的问题。
在一些实施例中,为了进一步的便于数据存储和管理,还可以在第二存储区划分成的频繁记录分区和非频繁记录分区中进一步进行划分,也就是说将存储块按照不同存储页的方式进行管理。
基于此,前述实施例中步骤201当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块,在执行时可以包括:
301、在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识用于表征所述存储页中是否存储有数据内容;
302、在所述目标存储页中的多个存储块中选取所述目标存储块。
在本实施例中,所述频繁记录分区和所述非频繁记录分区中都至少包含一个所述存储页;所述存储页按照写入次序依次排列,每个所述存储页中包含至少一个所述存储块以及存储页标识,所述存储页标识用于表征所述存储页中是否存储有数据内容,也就是说该存储页标识能够体现出该存储页是否允许执行写入操作;
这样,在进行目标存储块的选择过程中,就能够按照存储页标识从多个存储页中选取没有存储数据内容的存储页作为目标存储页,这样就可以在存储数据的过程中,选一个能够执行写入操作的存储页,避免了写入过程中还需要进行数据备份的过程,可以提高数据的存储效率。
在一些实施例中,有一种情况是在确定目标存储页的过程中,并非直接从多个存储页中选取未存储任何数据内容的存储页,而是基于一定的写入顺序所确定的目标存储页,那么该目标存储页中就可能存在数据内容,这时就可能需要对该目标存储页中原有记录的数据内容进行备份。
基于此,前述实施例步骤301在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,包括:
若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作;
前述实施例步骤301中在所述目标存储页中的多个存储块中选取所述目标存储块,包括:
在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
当擦除了目标存储页之后,这时的目标存储页就适合写入数据了,那么就可以在执行了擦除操作后的目标存储页中的多个存储块中选取所需的目标存储块。
具体的本步骤所述的方法可以参照图3-a所示,例如,当频繁记录分区中包含存储页1至存储页x多个储页时,每个存储页都带有一个存储页标识,存储页标识能够表征该存储页能否用于写入新的数据,在这个过程中可以从存储页1开始到存储页2至存储页m最终至存储页x,有顺序的进行遍历查询每个存储页的存储页标识,以判断哪个存储页符合写入需求。当基于存储页标识m确定出该存储页m为允许执行写入操作的目标存储页时,则可以将该存储页m确定为目标存储页。,这时如果确定该存储页m中存在数据内容时可以对该存储页中m存储的数据内容进行备份,并在备份后执行擦除操作,然后在该存储页m中确定存储块Bm为目标存储块时,则可以在后续步骤将第一数据写入到该存储块Bm中。
在一些实施例中,为了避免数据存储时过于密集导致某些情况下写入数据可能影响某些已经存储的数据,在本实施例中还可以对写入数据写入后的相关存储页进行分析,基于此,前述实施例的方法在执行时还可以执行下述步骤:
当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
具体的,本实施例所述的方法在执行的过程中,可以按照下述方式进行:
在本实施例中,由于存储页标识能够体现出对应的存储页中是否存储有数据。同时为了避免数据存储过程中过于密集,避免写入是误擦除的问题,在本步骤可以通过存储页标识来判断之前目标存储页之后的相邻的存储页中是否存储有数据,也就是判断该相邻的存储页是否允许执行写入操作。当判断相邻的存储页不允许执行写入操作,则判断相邻的存储页是否需要备份。
当确定该相邻的存储页中不允许执行写入操作,则说明该存储页存储有数据,属于“脏页”,为了避免了数据存储过于密集,就需要对该相邻的存储页进行擦除,但在擦除之前还需要判断该相邻的存储页中的数据是否属于需要备份的重要数据。
基于判断结果,分为两种情况:一种情况是当确定相邻的存储页需要备份时说明这个存储页中的数据虽然影响了目标存储页所存储的第一数据对存储密度的要求,但也是属于比较重要的数据,不能直接擦除,而是需要备份的。那么在这个过程中就需要在非频繁记录区中备份。当备份完成后,就可以对该相邻的存储页执行擦除操作。这样排列在目标存储页的相邻的存储页是“空白存储页”,这样在每次执行写入操作的过程中,都能确保写入后的目标存储页相邻的存储页都不是“脏页”,这样就降低了数据存储的密度,有利于当需要写入数据时能在这些“空白存储页”直接进行写入,而不需要进行擦除操作,既能避免存储密度过高导致某些特殊情况下把两个相邻的存储页中的数据内容都删除带来了数据误删的问题,还能够在后续执行写入操作时,某些特殊情况不考虑存储密度时能直接在这些“空白存储页”中直接进行写入,节省了擦除操作的过程,提高了写入效率。
对于判断的另一种情况,当确定相邻的存储页不需要备份时,就说明该相邻的存储页中存储的数据实际上是没有的废弃数据,那么这些数据占用数据空间进行备份是浪费宝贵的存储空间的,因此在本步骤中可以直接对该相邻的存储页执行擦除操作。
在本实施例中,由于判断相邻的存储页是否需要备份的原因是其存储的数据是否是用户经常使用的,而用户不经常使用的数据实际上说明该数据的重要性较低,这种数据放在存储空间中将浪费用户保存的存储空间资源,有鉴于此,在判断相邻的存储页是否需要备份的过程中可以基于第一存储区中是否保存了相同的数据来判断。
基于此,前述判断所述相邻的存储页是否需要备份,在执行时可以为:依次判断所述相邻的存储页中每个所述存储块的数据内容是否与所述第一存储区中的数据内容相匹配;若存在相匹配的所述存储块,则确定所述相邻的存储页需要备份。
由于第一存储区,即SRAM存储器中的数据都是用户目前近期使用的数据,那么当相邻的存储页的数据内容与第一存储区中的数据内容相匹配时说明该相邻的存储页中的数据是用户近期使用的数据,而近期使用的数据的重要性一般要比历史数据的重要程度高,因此说明该相邻的存储页中的数据是比较重要的,那么此时可以确定该相邻的存储页需要进行备份。
这样,通过以相邻的存储页中每个所述存储块的数据内容是否与所述第一存储区中的数据内容相匹配的方式来判断,能够通过用户使用数据的情况进行分析,从而较为直接且简便的方式实现了对相邻的存储页中数据的重要程度进行分析的效果,从而确保了后续对相邻的存储页进行备份时的准确性,避免将不重要的存储页进行备份导致浪费存储空间的问题。
在一些实施例中,由于第二数据可能是需要备份的数据,在这种情况下,就需要将该第二数据从原来存储的频繁记录分区的目标存储块中备份到非频繁记录分区,这样前述实施例中的步骤中,在所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,执行时可以如下:
在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页。
在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
具体的,结合前述实施例的方法,本实施例在执行时可以按照下述方式进行:如图3-b所示,其中,当频繁记录分区中从存储页1至存储页m经过遍历查询后,根据每个存储页的存储页标识确定出每个存储页中都记录有数据,那么这时就可以从中按照写入次序判断应该是哪个存储页需要进行写入操作,当确定存储页m为需要执行写入操作的目标存储页时,则可以将该存储页m中存储的数据进行备份。在本实施例中所述备份存储页可以理解为在非频繁记录区中多个存储页里可以执行写入操作的存储页,也就是说该备份存储页最好是未保存过数据的存储页。如图3-b所示,当在存储页α至存储页φ中遍历查询时,当基于存储页标识β确定存储页β为允许执行写入操作的存储页时,则可以将该存储页β确定为备份存储页。由于前述步骤可知在频繁记录分区中的存储页m是需要进行备份的,因此可以将存储页m中的数据写入到存储页β中,从而完成备份。然后对该存储页m执行擦除操作,这样擦除后的存储页m由于已经清除了原来存储的数据内容,此时该存储页m是“空白存储页”,并在该存储页m中从存储块Am至存储块Nm中选取任意一个存储块作为目标存储块。当然,在实际应用中可以参照这些存储块的排序次序依次选取,譬如依照该存储页m中的各个存储块的排序次序,由于存储块Am为首个存储块,因此可以选取存储块Am作为该目标存储块。
需要说明的是,在本实施例中,每个存储页中携带的存储页标识可以图图3-a及3-b所示,是在存储页中单独开辟的存储空间,与存储块类似,只不过区别在于该存储空间中只负责存储存储页标识,并不负责存储写入操作时的数据内容的存储,只有在对该存储页执行擦除操作后才会对其中涉及的存储页标识进行修改,这样就能避免每次在对存储页进行擦除时误将存储页标识删改导致的后续擦除的记录受到影响的问题。另外,在本实施例中,所述存储页标识可以为存储页中的EraseCount,而基于基于存储页标识判断该存储页是否允许执行写入操作则可以通过判断EraseCount是否失效来进行。当EraseCount有效时,说明该存储页中存储了数据内容,不能执行写入操作,反之,当EraseCount失效时,则说明该存储页中未存储数据,可以执行写入操作。另外,需要说明的是,在本实施例中当对存储页中写入数据之后,如同其他种类的存储器一样,也需要对存储页标识进行修改,以确保后续再进行写入操作时进行辨别,具体过程就是将EraseCount恢复到有效状态,这个过程与其他存储器中修改擦写记录或擦写标识的方式一致,在此具体细节就不再赘述。
在一些实施例中,由于备份存储块中也可能存在数据内容,那么此时还需要进一步的确定备份存储块中的数据内容是否需要备份,因此,前述步骤中在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块,执行时可以为:
若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中;
对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
由于备份存储块是备份存储页中选取的,而备份存储页是在非频繁记录分区中确定的,也就是说备份存储块中的第三数据很有可能是非常用的历史数据,但在确定第三数据还需要备份时,就可以直接在非频繁记录分区中选取符合条件的存储块进行备份,也就是说在非频繁记录分区中选取除了该备份存储块之外的其余未记录有数据的存储块进行备份,然后再将该备份存储块进行擦除操作,这样就确保了在写入第一数据的过程中,对需要备份的第二数据备份至非频繁记录分区时,还能够进一步的对备份存储块中的第三数据进行备份,有效避免了因写入新的数据导致原有的非频繁记录分区中的历史数据被需要备份的数据替换的问题,进一步的确保了数据存储过程中的数据的稳定性和可靠性。
在一些实施例中,对于非频繁记录分区中存储的数据而言,其存储密度也需要进行调整,因此同前述实施例所述,在本实施例中也可以对备份存储页相邻的存储页是否空白进行判断。
基于此,在将第二数据写入至备份存储块之后,本实施例的方法还可以包括:当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
这样在基于存储页标识判断出备份存储页相邻的存储页是“脏页”时,且确定该备份存储页相邻的存储页需要备份时,说明该备份存储页相邻的存储页中的数据是重要的,那么就需要在非频繁记录分区其余的存储页中选取一个存储页进行备份,然后再对该备份存储页相邻的存储页进行擦除操作。这样就既能确保备份存储页相邻的存储页的数据不会因擦除操作而删除,同时又保证了备份存储页附近的数据存储密度的要求。
当然,当确定备份存储页相邻的存储页不需要进行备份时,则说明该备份存储页相邻的存储页中的数据不重要,因此可直接执行擦除操作。
另外,需要说明的是,在判断备份存储页相邻的存储页是否需要备份时,具体的执行方式可以按照前述实施例中判断目标存储页相邻的存储页是否需要备份的方式一致,即依次判断备份存储页相邻的存储页中的每个存储块中的数据内容是否与第一存储区中的数据内容相匹配,当然,也可以选择其他的方式进行判断,在此不做限定,可以基于用户的实际需要进行选取。
在一些实施例中,前述实施例中步骤102中,将所述第一数据写入第二存储区中的目标存储块,在执行时可以为:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识。其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
在本实施例中,所述目标存储块可以包括两个部分,即存储分块以及验证分块,其中存储分块可以理解为用于存储数据内容的部分,而验证分块可以理解为存储表征数据完成性信息的部分。
这样在将第一数据写入的过程中,不仅能够将第一数据的数据内容写入到存储块中,还能够将体现数据完整性的验证标识添加到存储块中,这就确保了在后续读取、调用该第一数据时,能够基于该验证分块中的验证标识对第一数据的完整性进行校验,有效避免了数据缺失时读取第一数据失败的情况的发生,为后续数据读取、使用过程的稳定性奠定了基础。
在一些实施例中,存储块在存储分块、验证分块的基础上,还可能设置有数据长度分块和地址记录分块,基于此,在所述将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识之后,所述方法还包括:
根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
这样就可以在存储第一数据的过程中,还能同时记录该第一数据的整体长度,并同时记录该第一数据在该存储块中的地址情况,有利于在系统层面对第一数据的存储位置进行定位和数据量的确定。这样在后续进行第一数据读取、调用的过程中,可以基于上述信息进行分析,便于用户对数据的分析和排查。
具体的,可以如图4所示,在存储块A1中可见,存储分块是该存储块A1中的占据了最大的空间,该空间就是用来存储具体的数据内容的。同时,由于数据内容在存储过程中实际上还要标识其存储的位置,记作地址信息,并添加到该地址记录分块中。同时,由于数据内容可能并不是完全将存储分块的全部空间。例如当存储分块为10个字节,而数据内容为5个字节,那么在存储该数据内容的时候还需要记录这个数据总计长度,也就是实际占用的空间大小,即本实施例所述的数据长度,5个字节。另外在数据存储过程中还需要对存储的数据内容是否错误进行标识,也就是说在验证分块中添加验证标识。需要说明的是验证标识具体可以是不同的,这是基于存储分块中存储的数据内容是否错误、以及错误程度决定的,在此对于验证标识的种类、格式在此不做限定,可以采取现有的任意一种数据存储过程中的验证标识均可。
在一些实施例中,在前述实施例中步骤101根据所述写入操作指令确定写入数据之前,所述方法还可以包括:
首先,对所述第一存储区执行初始化操作,所述初始化操作用于将所述第一存储区中的数据内容清零;
然后,遍历所述第二存储区并确定所述第二存储区的起始位置,并根据所述起始位置加载所述第二存储区。
由于在实际应用中,第一存储区是基于SRAM构建的,为了确保在执行写入操作之前数据的准确性,在此可以对其进行初始化操作,该初始化操作就是为了将第一存储区的数据内容进行清零,从而避免之前操作时的干扰。
当对第一存储区执行了初始化操作之后,则需要继续对第二存储区进行加载,但在加载之前,还需要判断整个第二存储区的起始位置,从而基于该起始位置进行加载。
在一些实施例中,在某些情况下存在掉电后重新启动的情况,在此情况下,就需要对第二存储区中的各个分区进行加载,其中所述第二存储区包括备份分区、频繁记录分区以及非频繁记录分区。备份分区、频繁记录分区以及非频繁记录分区中都分别至少包括一个存储块。
前述步骤中遍历所述第二存储区并确定所述第二存储区的起始位置,并根据所述起始位置加载所述第二存储区,包括:
首先,当确定所述备份分区有效时,加载所述备份分区;
然后,遍历所述频繁记录分区,并确定所述频繁记录分区的多个所述存储块中的第一存储块;其中,所述第一存储块为基于存储块验证标识确定的多个有效的存储块中地址排序第一的存储块;
之后,基于所述第一存储块确定所述频繁记录分区的起始地址,并加载所述频繁记录分区;
再之后,遍历所述非频繁记录分区,并确定所述非频繁记录分区的多个所述存储块中的第二存储块,其中,所述第二存储块为基于存储块验证标识确定的多个有效的存储块中地址排序第一的存储块;
最后,基于所述第二存储块确定所述非频繁记录分区的起始地址,并加载所述非频繁记录分区。
由于在实际应用中,由于备份分区仅仅作为第一存储区域掉电时进行备份所需,其中并未进行具体的划分和设置,因此在本实施例中当检测到该备份分区有效时,就可以直接加载该备份分区。
对于频繁记录分区和非频繁记录分区而言,由于这两个分区都是改变了原有的以千字节为存储单位的原存储块方式存储,而是将以目标字节数据为存储单位划分了新的存储块,因此在加载这些存储块的过程中就需要进行整体的遍历,然后在这两个分区中对每个存储块的验证标识中确定其首个有效的验证标识对应的存储块,这样就相当于确定了频繁记录分区和非频繁记录分区中有效的多个存储块中起始的存储块,然后基于这两个存储块的地址就确定了了这两个分区的起始地址,基于每个分区的起始地址就可以进行记录分区的加载。
进一步的,作为对上述图1至图4所示方法的实现,本申请另一实施例还提供了一种数据存储装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置为了实现一种数据存储方法,在能够解决数据存储过程中掉电丢失的问题,具体如图5所示,该装置包括:
确定单元51,可以用于确定待写入的第一数据;
第一执行单元52,可以用于若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
进一步的,如图6所示,所述装置还包括:
第二执行单元53,可以用于当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
进一步的,如图6所示,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
进一步的,如图6所示,所述第一执行单元52,包括:
第一执行模块521,可以用于若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
第二执行模块522,可以用于若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
进一步的,如图6所示,所述第一执行模块521,包括:
选取子模块5211,可以用于当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
写入子模块5212,可以用于当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
进一步的,如图6所示,所述第二执行模块522,包括:
第一选取子模块5221,可以用于当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
判断子模块5222,可以用于当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份;
第二选取子模块5223,可以用于若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块;
写入子模块5224,可以用于将所述目标存储块执行擦除操作,并在执行了所述擦除操作后的所述目标存储块中写入所述第一数据。
进一步的,如图6所示,所述判断子模块5222,具体可以用于判断在所述第一存储区中是否存在与所述第二数据相同的数据;
所述第二选取子模块5223,具体可以用于若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
进一步的,如图6所示,所述第一选取子模块5221,具体可以用于在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识可以用于表征所述存储页中是否存储有数据内容,以及,在所述目标存储页中的多个存储块中选取所述目标存储块。
进一步的,如图6所示,所述第一选取子模块5221,还具体可以用于若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作,以及,在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
进一步的,如图6所示,所述装置还包括:
第三执行单元54,可以用于当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
进一步的,如图6所示,所述第二选取子模块5223,还可以用于在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页,以及在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
进一步的,如图6所示,所述第二选取子模块5223,还具体可以用于若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中,以及,对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
进一步的,如图6所示,所述装置还包括:
第四执行单元55,可以用于当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
进一步的,如图6所示,所述第一执行单元52,包括:
写入模块523,可以用于将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
进一步的,如图6所示,所述第一执行单元还包括:
添加模块524,可以用于根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
为了实现上述目的,根据本申请的另一方面,本申请实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据存储方法。
为了实现上述目的,根据本申请的另一方面,本申请实施例还提供了一种数据存储装置,所述装置包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行上述所述的数据存储方法。
本申请实施例提供一种数据存储方法及装置,本申请实施例能够首先确定待写入的第一数据,然后若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块,从而实现了基于flash的数据存储功能。相较于现有技术,在本申请的数据存储过程中,由于所述第一存储区为基于SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,这样就确保当待写入的第一数据存在且第一存储区中不存在与之相同的数据的情况下,能够直接将该第一数据存储在第二存储区中,由于第二存储区是基于flash构建的存储区,那么即便遇到掉电情况,第二存储区中的第一数据也不会丢失,这解决数据存储过程中遇到的掉电情况导致的数据丢失的问题。同时,由于本申请的存储方法在存储时,第二存储区中的存储块是以目标字节数划分的,不同于以往常规的以千字节设置的原存储块,这样就能够在原存储块大小的存储空间内实现对多个不同数据的分别管理的效果,避免当常规方式在将不同数据存储在一个原存储块时,一旦进行擦除操作,很可能将整个原存储块对应的多个不同数据同时清除的问题。
所述数据存储装置包括处理器和存储器,上述确定单元、第一执行单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现一种基于flash的数据存储方法,能够解决数据存储过程中掉电丢失的问题。
本申请实施例提供了一种数据存储设备,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行前述任一项所述的数据存储方法。
本申请实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的数据存储方法。
存储介质可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定待写入的第一数据;若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
进一步的,所述方法还包括:
当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
进一步的,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
进一步的,所述将所述第一数据写入第二存储区中的目标存储块,包括:
若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
进一步的,所述若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
进一步的,所述若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份;
若需要,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块;
将所述目标存储块执行擦除操作,并在执行了所述擦除操作后的所述目标存储块中写入所述第一数据。
进一步的,所述当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份,包括:
判断在所述第一存储区中是否存在与所述第二数据相同的数据;
所述若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
进一步的,所述当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块,包括:
在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识用于表征所述存储页中是否存储有数据内容;
在所述目标存储页中的多个存储块中选取所述目标存储块。
进一步的,所述在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,包括:
若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作;
所述在所述目标存储页中的多个存储块中选取所述目标存储块,包括:
在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
进一步的,所述方法还包括:
当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
进一步的,所述从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页;
在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
进一步的,所述在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块,包括:
若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中;
对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
进一步的,所述方法还包括:
当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
进一步的,所述将所述第一数据写入第二存储区中的目标存储块,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
进一步的,在所述将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识之后,所述方法还包括:
根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:定待写入的第一数据;若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (18)
1.一种数据存储方法,其特征在于,所述方法包括:
确定待写入的第一数据;
若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到掉电指令时,将所述第一存储区中的全部数据写入至所述第二存储区中的备份分区中。
3.根据权利要求2所述的方法,其特征在于,所述备份分区的存储容量为至少一个EEPROM存储器的存储容量。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一数据写入第二存储区中的目标存储块,包括:
若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块;
若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中。
5.根据权利要求4所述的方法,其特征在于,所述若确定所述目标存储块中未存储任何数据,则将所述第一数据写入至所述目标存储块,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中未存储任何数据时,将所述第一数据写入至所述目标存储块。
6.根据权利要求4所述的方法,其特征在于,所述若确定所述目标存储块中存储有数据,则:对所述目标存储块中存储的数据进行备份;在备份后对所述目标存储块执行擦除操作;将所述第一数据写入已执行所述擦除操作的所述目标存储块中,包括:
当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块;
当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份;
若需要,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块;
将所述目标存储块执行擦除操作,并在执行了所述擦除操作后的所述目标存储块中写入所述第一数据。
7.根据权利要求6所述的方法,其特征在于,所述当确定所述目标存储块中存储有第二数据时,判断所述第二数据是否需要备份,包括:
判断在所述第一存储区中是否存在与所述第二数据相同的数据;
所述若确定所述第二数据需要备份,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
若确定在所述第一存储区中存在与所述第二数据相同的数据,则从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块。
8.根据权利要求5或6所述的方法,其特征在于,所述当所述第二存储区包括频繁记录分区和非频繁记录分区时,从所述频繁记录分区中的多个存储块中选取所述目标存储块,包括:
在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,其中,所述存储页标识用于表征所述存储页中是否存储有数据内容;
在所述目标存储页中的多个存储块中选取所述目标存储块。
9.根据权利要求8所述的方法,其特征在于,所述在所述频繁记录分区中的多个存储页中,通过存储页标识选取目标存储页,包括:
若基于所述存储页标识确定所述目标存储页存储有数据内容,则将所述目标存储页中的数据内容备份在所述非频繁记录分区中,并对所述目标存储页执行所述擦除操作;
所述在所述目标存储页中的多个存储块中选取所述目标存储块,包括:
在执行了所述擦除操作后的目标存储页中的多个所述存储块中选取所述目标存储块。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当将所述第一数据写入至所述目标存储块后,且确定所述目标存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区中备份,并将与所述目标存储页相邻的存储页执行擦除操作。
11.根据权利要求6所述的方法,其特征在于,所述从所述非频繁记录分区中的多个存储块中,选取备份存储块,并将所述第二数据备份至所述备份存储块,包括:
在所述非频繁记录分区中的多个存储页中,通过所述存储页标识选取所述备份存储页;
在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块。
12.根据权利要求11所述的方法,其特征在于,所述在所述备份存储页中的多个所述存储块中选取所述备份存储块,并将所述第二数据写入至所述备份存储块,包括:
若确定所述备份存储块中存储有第三数据,则将所述第三数据备份在所述非频繁记录分区中选取除所述备份存储块之外的其余的存储块中;
对所述备份存储块执行所述擦除操作,并将所述第二数据写入至执行了所述擦除操作的备份存储块中。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
当将所述第二数据写入至所述备份存储块后,且确定所述备份存储页相邻的存储页中记录有数据内容,则将所述数据内容在非频繁记录分区其他存储页中备份,并对所述备份存储页相邻的存储页执行所述擦除操作。
14.根据权利要求1所述的方法,其特征在于,所述将所述第一数据写入第二存储区中的目标存储块,包括:
将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识,其中,所述验证标识为当所述存储分块存储的所述第一数据被读取时校验所述第一数据时完整性的信息。
15.根据权利要求14所述的方法,其特征在于,在所述将所述第一数据写入至所述目标存储块的存储分块中,并在所述目标存储块中的验证分块中添加验证标识之后,所述方法还包括:
根据所述第一数据在所述存储分块中的位置,在所述存储块的地址记录分块中添加地址信息,并将基于所述地址信息确定的写入数据的数据长度添加到所述存储块的数据长度分块。
16.一种数据存储装置,其特征在于,所述装置包括:
确定单元,用于确定待写入的第一数据;
第一执行单元,用于若确定第一存储区中不存在与所述第一数据相同的数据,则将所述第一数据写入第二存储区中的目标存储块;
其中,所述第一存储区为基于静态随机存取存储器SRAM构建的数据缓存区,所述第二存储区为基于flash构建的存储区,所述第二存储区中的存储块是按照预设规则以目标字节数划分的存储单位。
17.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1-15中任一项所述的数据存储方法。
18.一种数据存储设备,其特征在于,所述设备包括存储介质;及一个或者多个处理器,所述存储介质与所述处理器耦合,所述处理器被配置为执行所述存储介质中存储的程序指令;所述程序指令运行时执行权利要求1-15中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211062382.1A CN115373608A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211062382.1A CN115373608A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373608A true CN115373608A (zh) | 2022-11-22 |
Family
ID=84070369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211062382.1A Pending CN115373608A (zh) | 2022-08-31 | 2022-08-31 | 数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373608A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668934A (zh) * | 2023-11-15 | 2024-03-08 | 江苏星期七数字科技有限公司 | 一种基于大数据的区块链数据存储方法和装置 |
-
2022
- 2022-08-31 CN CN202211062382.1A patent/CN115373608A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668934A (zh) * | 2023-11-15 | 2024-03-08 | 江苏星期七数字科技有限公司 | 一种基于大数据的区块链数据存储方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6381176B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
CN1760875B (zh) | 基于文件存取特性在各种类型的存储卷之间透明迁移文件 | |
US8028120B2 (en) | System with flash memory device and data recovery method thereof | |
KR101447188B1 (ko) | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 | |
US7730358B2 (en) | Stress testing method of file system | |
GB2330672A (en) | Storing and retrieving data in a control system eg in a motor vehicle | |
US7421624B2 (en) | Data recovery apparatus and method used for flash memory | |
CN107678981A (zh) | 数据处理方法及装置 | |
CN103577574A (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN101763309A (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
CN113282249B (zh) | 一种数据处理方法、系统、设备以及介质 | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
CN115373608A (zh) | 数据存储方法及装置 | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
CN117075801A (zh) | 数据存储管理方法、装置及设备 | |
KR100533683B1 (ko) | 플래시 메모리의 데이터 관리 장치 및 방법 | |
CN114063905B (zh) | 日志存储方法、日志存储装置、存储设备和存储介质 | |
CN115469802A (zh) | 数据存储设备 | |
CN110471623B (zh) | 硬盘文件写入方法、装置、计算机设备和存储介质 | |
CN115373607A (zh) | 数据存储方法及装置 | |
US20090132623A1 (en) | Information processing device having data field and operation methods of the same | |
KR20060021548A (ko) | 플래시 메모리의 제어 방법 | |
CN111949198A (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 |