CN114518845A - 数据存储方法、装置、介质及设备 - Google Patents
数据存储方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN114518845A CN114518845A CN202210008659.6A CN202210008659A CN114518845A CN 114518845 A CN114518845 A CN 114518845A CN 202210008659 A CN202210008659 A CN 202210008659A CN 114518845 A CN114518845 A CN 114518845A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- storage
- local
- 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
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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration 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/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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了数据存储方法、装置、介质及设备,数据存储块被分割为多个存储子块,方法包括:响应于数据的写入请求,遍历多个存储子块,从存储子块对应的第一存储空间中获取存储子块对应的局部待写入数据;获取存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;将存储子块对应的局部待写入数据和局部历史写入数据进行一致性验证得到验证结果;在验证结果表征局部待写入数据和局部历史写入数据存在差异时,将局部待写入数据写入与存储子块对应的第二存储空间,第二存储空间位于非易失性存储器。本申请将数据存储块进行分割,各存储子块存储局部数据,可以有效减少写操作时间或者缩减需要写入的数据长度。
Description
技术领域
本申请涉及存储技术领域,具体涉及数据存储方法、装置、介质及设备。
背景技术
随着汽车电子技术的飞速发展,在汽车ECU(Electronic Control Unit,电子控制单元)内存中存储着各种用途的数据,大多数数据会随着ECU的掉电而丢失,也有一部分重要数据在断电后仍可以保存在非易失性存储器中(例如FLASH、EEPROM),如车辆识别码、防盗钥匙、车辆下线配置字、诊断故障代码等,这种数据被称为非易失性数据。
汽车电子产品为了降低成本一般会选用FLASH芯片作为非易失性内存,但FLASH的读写速度慢,且擦除次数有限制,同时实际运用中多数情况下需要存储的最新数据与上一轮数据相比可能只有小部分数据发生了改变,但需要把整个存储单元的存储数据都写到非易失性内存中,写入数据量变大,写入时间较长,不利于降低CPU占用率,且不利于延长存储芯片的使用寿命。
发明内容
为了提升数据存储的写入效率,本申请提供了数据存储方法、装置、介质及设备。所述技术方案如下:
第一方面,本申请提供了一种数据存储方法,数据存储块被分割为多个存储子块,所述方法包括:
响应于数据的写入请求,遍历所述多个存储子块,从所述存储子块对应的第一存储空间中获取所述存储子块对应的局部待写入数据;所述第一存储空间位于随机存取存储器;
获取所述存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;
将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果;
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间;所述第二存储空间位于非易失性存储器。
可选的,所述方法还包括:
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
可选的,所述将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果,包括:
将所述局部待写入数据和所述局部历史写入数据进行逐位比对,得到所述验证结果,所述验证结果表征所述局部待写入数据与所述局部历史写入数据的一致性。
可选的,所述将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果,还包括:
根据所述局部待写入数据,计算得到对应的第一循环冗余校验值;
确定所述局部历史写入数据的第二循环冗余校验值;
将所述第一循环冗余校验值和所述第二循环冗余校验值进行比对,得到所述验证结果。
可选的,所述在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间,包括:
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,响应于所述存储子块的写服务请求,所述写服务请求包括所述存储子块对应的存储空间标识,确定与所述存储空间标识对应的所述非易失性存储器中的所述第二存储空间
执行写操作,将所述局部待写入数据存储在所述第二存储空间。
可选的,所述方法还包括:
所述多个存储子块中各存储子块均包括子块标头区、子块数据区和/或子块校验区,其中,所述子块标头区存储所述存储子块的节点标识,所述子块校验区存储所述局部历史写入数据的第二循环冗余校验值。
第二方面,本申请提供了一种数据存储装置,所述装置包括:
第一获取模块,用于响应于数据的写入请求,遍历所述多个存储子块,从所述存储子块对应的第一存储空间中获取所述存储子块对应的局部待写入数据;所述第一存储空间位于随机存取存储器;
第二获取模块,用于获取所述存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;
比对模块,用于将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果;
写入模块,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间;所述第二存储空间位于非易失性存储器。
可选的,所述装置还包括:
忽略模块,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
第三方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如第一方面所述的一种数据存储方法。
第四方面,本申请提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如第一方面所述的一种数据存储方法。
第五方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现如第一方面所述的一种数据存储法。
本申请提供的数据存储方法、装置、介质及设备,具有如下技术效果:
本申请提供的方案将数据存储块被分割为多个存储子块,当接收到数据的写入请求时,从存储子块对应的第一存储空间读取对应的局部待写入数据,将局部待写入数据和局部历史写入数据进行一致性验证,该局部历史写入数据是前一轮写入的局部数据,如果验证结果表征二者存在差异,则将局部待写入数据写入第二存储空间,保存在非易失性存储器中,如果二者一致则忽略对该局部待写入数据的写入操作,同时遍历各个存储子块,重复上述过程。本申请提供的技术方案既能够减少写操作的次数或时间,也可以缩减所需写入的数据长度,提升了数据存储的写入效率。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种数据存储方法的流程示意图;
图2是本申请实施例提供的一种存储子块的结构示意图;
图3是本申请实施例提供的一种非易失性内存管理模块在Autosar架构中的结构示意图;
图4是本申请实施例提供的一种RAM Block的结构示意图;
图5是本申请实施例提供的一种ROM Blcok的结构示意图;
图6是本申请实施例提供的一种Native管理类型下的结构示意图;
图7是本申请实施例提供的一种Redundant管理类型下的结构示意图;
图8是本申请实施例提供的一种Dataset管理类型下的结构示意图;
图9是本申请实施例提供的一种数据存储装置的示意图。
具体实施方式
为了提高数据存储时的写入效率,本申请实施例提供了数据存储方法、装置、介质及设备。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本申请实施例所述的技术方案及其产生的技术效果,本申请实施例对于涉及到的相关专业名词进行解释:
Autosar:Automotive Open SystemArchitecture,汽车开放式系统架构。
NVM:Non-Volatile RAM Manager,非易失性内存管理,提供对存储数据的异步存取管理和维护服务,通过上电读取、下电或周期性存储NVRAM到非易失性存储介质,保证NVRAM数据在下电时不丢失。
NV Block:非易失性存储块,是NVM的基本存储对象,用于管理和存储非易失性数据。
VIN:Vehicle Identification Number,车辆识别号码或车架号码。
DTC:Diagnostic Trouble Code,诊断故障代码。
CRC:Cyclic Redundancy Check,循环冗余校验。
FEE:Flash EEPROM Emulation,Flash模拟EEPROM,将从设备特定的寻址方案和分段中抽象出来,并向上层提供虚拟寻址方案和分段以及实现类似EEPROM的“随机访问”。
以下介绍本申请提供的一种数据存储方法。图1是本申请实施例提供的一种数据存储方法的流程图,本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。请参照图1,本申请实施例提供的一种数据存储方法可以包括如下步骤:
S100:响应于数据的写入请求,遍历多个存储子块,从存储子块对应的第一存储空间中获取存储子块对应的局部待写入数据;第一存储空间位于随机存取存储器。
在本申请实施例中,所需写入的数据为非易失性数据,简称为NV(Non-Volatile)数据,该类数据在系统断电后仍可以保存在非易失性存储器中,如车辆识别码(VIN)、诊断故障代码(DTC)等。在基于Autosar架构的应用场景中,应用层向非易失性内存管理模块(NVM)发送数据写入请求,非易失性内存管理模块响应于该请求并判断是否将随机存取存储器(RAM)中临时存储的应用层数据写入至非易失性存储器中。
在本申请的一个实施例中,基于Autosar架构提供的内存协议栈结构,将内存协议栈中非易失性内存管理模块的基础存储对象——非易失性存储块(NV Block)分割为多个非易失性存储子块(NV Sub-Block),以下以存储块和存储子块代称。存储子块的数量可以根据需求而人为预先设定。图2示出了一种存储子块的结构示意图,如图2所示,上述多个存储子块中的各个存储子块可以包括子块标头区(NV Sub-Block Header)、子块数据区(NVSub-Block Data)或子块校验区(NV Sub-Block CRC),其中,子块标头区可以存储该存储子块的节点标识,子块校验区可以存储根据局部历史写入数据计算得到的循环冗余校验值(CRC),子块数据区可以存储上一轮的局部写入数据,也即局部历史写入数据。可以理解的是,子块标头区和子块校验区是可选的。
在本申请实施例中,在对存储子块进行分割后,为每个存储子块分配对应的第一存储空间,该第一存储空间对应于随机存取存储器中的地址区间。第一存储空间临时存储有待写入数据的局部数据,多个第一存储空间临时存储的局部数据构成完成的待写入数据。通过非易失性内存管理模块提供的读写等服务从第一存储空间获取与存储子块对应的局部待写入数据。
S200:获取存储子块存储的局部历史写入数据,局部历史写入数据是前一轮写入的局部数据。
在本申请的一个实施例中,根据图2所示的存储子块的结构,从子块数据区确定该存储子块存储的局部历史写入数据,该局部历史写入数据是前一轮写入服务中该存储子块向非易失性存储器写入的局部数据。
在另一种可行的实施方式中,还可以通过非易失性内存管理模块提供的读服务从与该存储子块对应的第二存储空间获取局部历史写入数据,其中第二存储空间对应于非易失性存储器的存储空间,用于存储非易失性数据。
S300:将存储子块对应的局部待写入数据和局部历史写入数据进行一致性验证,得到验证结果。
需要说明的是,存储块可以存储完整的待写入数据,在执行写服务时,假设与上一轮的历史写入数据相比只有一个字节数据发生了改变,但仍需要把整个存储块中的待写入数据全部写入到非易失性存储器中,这种做法增加了单次写操作的耗时,提高了写入的数据量,不利于降低CPU(Central Processing Unit中央处理器)的占用率,同时非易失性存储器的读写次数有限时还会缩减非易失性存储器的使用寿命。而在本申请实施例中,将原本的基本存储对象进行分割,分割后的各个存储子块只是存储、管理待写入数据中的局部数据,若局部数据与局部历史写入数据一致,则可以对该局部数据不执行写操作,如此可以减少写操作的时间和写入的数据量。
在一种可行的实施方式中,上述一致性验证可以实施为判断局部待写入数据和局部历史写入数据在同一码位上的数据是否相同,具体地,可以将局部待写入数据和局部历史写入数据进行逐位比对,得到验证结果,该验证结果可以表征局部待写入数据与局部历史写入数据的一致性。
在另一种可行的实施方式中,上述一致性验证可以实施为判断局部待写入数据和局部历史写入数据的冗余校验值是否相同,具体地,可以包括以下步骤:
S301:根据局部待写入数据,计算得到对应的第一循环冗余校验值。
可以理解的是,循环冗余校验值(CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,可以用来检测或校验数据传输或者保存后可能出现的错误。具体地,它是利用除法及余数的原理来作错误侦测的。
S303:确定局部历史写入数据的第二循环冗余校验值。
在一种可行的实施方式中,根据图2示出的存储子块的结构,从子块校验区,确定局部历史写入数据的第二循环冗余校验值。
S305:将第一循环冗余校验值和第二循环冗余校验值进行比对,得到验证结果。
若第一循环冗余校验值和第二循环冗余校验值的数据值相同,则该验证结果可以表征局部待写入数据和对应的局部历史写入数据是一致的。
若第一循环冗余校验值和第二循环冗余校验值的数据值不同,则该验证结果可以表征局部待写入数据和对应的局部历史写入数据存在差异。
S400:在验证结果表征局部待写入数据和局部历史写入数据存在差异时,将局部待写入数据写入与存储子块对应的第二存储空间;第二存储空间位于非易失性存储器。
在本申请实施例中,各个存储子块分别对应于非易失性存储器中的第二存储空间,第二存储空间对应与存储块所在的地址区间。可选的,该非易失性存储器也可以以存储块为基础存储单元
在本申请的一个实施例中,在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,该存储子块向非易失性内存管理模块发送写服务请求,该写服务请求包括该存储子块对应的存储空间标识,非易失性内存管理模块响应于该存储子块的写服务请求,确定与存储空间标识对应的非易失性存储器中的第二存储空间,并执行写操作,将所述局部待写入数据存储在所述第二存储空间。
S500:在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
在本申请实施例中,遍历多个存储子块,对各个存储子块实施上述过程,完成对非易失性数据的存储、更新和管理,能够有效缩减写入时间和写入的数据量,提升数据存储的写入效率,间接地延长了非易失性存储器的使用寿命。
图3示出了一种非易失性内存管理模块在Autosar架构中的相关结构示意图。如图3所示,非易失性内存管理模块(NVM)位于Autosar架构中的基础软件层(Basic SoftwareLayer,BSW),它提供对数据的异步存取管理和维护服务,如关键数据的周期性存储、上电数据的读取、下电数据的存储等。非易失性内存管理模块的上层为RTE(RunTimeEnvironment,运行环境),下层为MEMIF(MemoryAbstraction Interface,内存硬件抽象接口层)、FEE(Flash EEPROM Emulation,Flash模拟EEPROM)模块、EA(EEPROMAbstraction,EEPROM抽象)模块、FLS(Flash Driver,Flash驱动)模块等。其中,MEMIF为EA模块和FEE模块提供统一的内存初始化、读、写、状态管理的接口,FEE模块为将Flash模拟为EEPROM的读写方式以提高FLASH擦写寿命,EA模块提供了独立于硬件的接口来访问EEPROM数据,FLS模块主要提供对Flash的初始化、读、写、擦等相关操作服务。
关于非易失性内存管理(NVM)模块,Autosar架构规定了四种非易失性内存块,分别是NV Block、RAM Block、ROM Blcok、Administrative Blcok。其中NV Block和RAM Block是必备项,其中NV Block用于保存非易失数据,可以在程序执行过程中进行修改,它的组成包含三部分:NV Blcok Header、NV Block Data和NV Block CRC,其中NV Blcok Header是可选的,它包含Block ID,可在读取数据后进行校验;NV Block CRC是可选的,主要存储NVBlock Data经过CRC计算后的CRC值;NV Block Data用于存储数据。在本申请实施例中,将NVBlock分割为多个存储子块(Sub-Block),结构如图2所示,此处不再赘述,每个存储子块与RAM Block对应,同时每个存储子块还与非易失性存储器(FEE或EA)中的存储块对应。其中,RAM Block位于RAM(RandomAccess Memory,随机存取存储器)中,用于存储待写入或待被读取的非易失性数据,它的组成结构和NV Block一致,可参考图4所示。其中,ROM Blcok位于PFlash(ProgramFlash,程序闪存)中,用于存放默认数据,以便当NV Block内的数据出现损坏时进行恢复,其结构可参考图5所示,其包含数据区(ROM Block Data)。其中,Administrative Blcok存在于RAM中,主要用于描述NV Block的属性、状态等信息。
非易失性内存管理(NVM)模块提供了对各Block的三种管理类型,分别是Native、Redundant和Dataset。在Native管理类型中,包含了1个NV Block、1个RAM Block、1个Administrative Block、1个ROM Block(可选),在对NVBlock进行分割后,1个NV Sub-Block对应FEE模块的1个Block,如图6所示,NV Block 0-0至NV Block 0-n是NV Block 0的n+1个Sub-Block。在Redundant管理类型中,同样也是仅对NV Block进行分割,具体分割数量可由用户定义,其中ROM Block和RAM Block不进行分割,但与Nv Sub-Block一一对应,如图7所示,其中Redundant管理有2个Nv Block,2个Nv Block分割方案一致,NV Block 0的Sub-Block分为为NV Block 0-0至NV Block 0-n,NV Block 1的Sub-Block分别为NV Block 1-0至NV Block 1-n;Nv Block 0-0与Nv Block1-0互为冗余,内存长度相同,当其中一个失效时使用另一个子块进行数据恢复,其余子块同理;所有的Nv Sub-Block与FEE模块内的Block一一对应。通过Redundant管理类型可以实现数据的冗余备份存储。在Dataset管理类型中,包含N个NV Block、1个RAM Block、1个Administrative Block、M个ROM Block,其中NVBlock之间和ROM Block之间是相互独立的,NV Block与ROM Block总数必须在1-255之间,NV Block的节点是0至N-1,ROM Block的节点是N至N+M-1,ROM Block和Nv Block共用同一个RAM Block。图8示出了1个NV Block、1个RAM Block,未示出ROM Block,如图8所示,对NVBlock进行分割,具体分割块数量可由用户定义,其中ROM Block和RAM Block不进行分割,分割后所有的Nv Sub-Block与FEE模块内的Block一一对应。在上述各Nv Sub-Block从对应的RAM Block中读取局部待写入数据,若该局部待写入数据与局部历史写入数据存在差异,则将该局部待写入数据写入对应的FEE Block中,若一致,则忽略对该局部待写入数据的写入和存储。
在写入FEE Block中时,每个Block都有一个唯一的Blocknumber进行标识,在接收到某一个Nv Sub-Block的写入请求时,将与该Nv Sub-Block对应的Blocknumber下发至FEE模块,以使得FEE模块根据该Blocknumber匹配到对应的Block并执行相应的写操作。进一步地,FEE模块或EA模块都提供了32比特的字节用于描述地址空间的寻址以确定对应的Block以及存储空间。如表1所示,前16bit为BlockNumber,后16bit为地址偏移,16bit的BlockNumber由16-NvMDatasetSelectionbits的NvMBlockBaseNumber和NvMDatasetSelectionbits的DataIndex组成。
表1 Block地址空间描述
本申请实施例还提供了一种数据存储装置900,数据存储块被分割为多个存储子块,所述多个存储子块中各存储子块均包括子块标头区、子块数据区和/或子块校验区,其中,所述子块标头区存储所述存储子块的节点标识,所述子块校验区存储所述局部历史写入数据的第二循环冗余校验值。
如图9所示,所述装置900可以包括:
第一获取模块910,用于响应于数据的写入请求,遍历所述多个存储子块,从所述存储子块对应的第一存储空间中获取所述存储子块对应的局部待写入数据;所述第一存储空间位于随机存取存储器;
第二获取模块920,用于获取所述存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;
比对模块930,用于将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果;
写入模块940,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间;所述第二存储空间位于非易失性存储器。
在本申请的一个实施例中,所述装置900可以包括:
忽略模块950,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
在本申请的一个实施例中,所述比对模块930可以包括:
第一比对单元,用于将所述局部待写入数据和所述局部历史写入数据进行逐位比对,得到所述验证结果,所述验证结果表征所述局部待写入数据与所述局部历史写入数据的一致性。
在本申请的一个实施例中,所述比对模块930还可以包括:
第一冗余校验值确定单元,用于根据所述局部待写入数据,计算得到对应的第一循环冗余校验值;
第二冗余校验值确定单元,用于确定所述局部历史写入数据的第二循环冗余校验值;
第二比对单元,用于将所述第一循环冗余校验值和所述第二循环冗余校验值进行比对,得到所述验证结果。
在本申请的一个实施例中,所述写入模块940可以包括:
存储空间确定单元,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,响应于所述存储子块的写服务请求,所述写服务请求包括所述存储子块对应的存储空间标识,确定与所述存储空间标识对应的所述非易失性存储器中的所述第二存储空间
写入单元,用于执行写操作,将所述局部待写入数据存储在所述第二存储空间。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的一种数据存储方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于服务器之中以保存用于实现方法实施例中一种数据存储方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的一种数据存储方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施方式中提供的一种数据存储方法。
由上述本申请提供的数据存储方法、装置、介质及设备的实施例可见,
本申请提供的方案将数据存储块被分割为多个存储子块,当接收到数据的写入请求时,从存储子块对应的第一存储空间读取对应的局部待写入数据,将局部待写入数据和局部历史写入数据进行一致性验证,局部历史写入数据是前一轮写入的局部数据,如果验证结果表征二者存在差异,则将局部待写入数据写入第二存储空间,保存在非易失性存储器中,如果二者一致则忽略对该局部待写入数据的写入操作,同时遍历各个存储子块,重复上述过程。本申请提供的技术方案既能够减少写操作的次数或时间,也可以缩减所需写入的数据长度,提升了数据存储的写入效率。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,数据存储块被分割为多个存储子块,所述方法包括:
响应于数据的写入请求,遍历所述多个存储子块,从所述存储子块对应的第一存储空间中获取所述存储子块对应的局部待写入数据;所述第一存储空间位于随机存取存储器;
获取所述存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;
将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果;
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间;所述第二存储空间位于非易失性存储器。
2.根据权利要求1所述的数据存储方法,其特征在于,所述方法还包括:
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
3.根据权利要求1所述的数据存储方法,其特征在于,所述将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果,包括:
将所述局部待写入数据和所述局部历史写入数据进行逐位比对,得到所述验证结果,所述验证结果表征所述局部待写入数据与所述局部历史写入数据的一致性。
4.根据权利要求1所述的数据存储方法,其特征在于,所述将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果,还包括:
根据所述局部待写入数据,计算得到对应的第一循环冗余校验值;
确定所述局部历史写入数据的第二循环冗余校验值;
将所述第一循环冗余校验值和所述第二循环冗余校验值进行比对,得到所述验证结果。
5.根据权利要求1所述的数据存储方法,其特征在于,所述在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间,包括:
在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,响应于所述存储子块的写服务请求,所述写服务请求包括所述存储子块对应的存储空间标识,确定与所述存储空间标识对应的所述非易失性存储器中的所述第二存储空间
执行写操作,将所述局部待写入数据存储在所述第二存储空间。
6.根据权利要求1所述的数据存储方法,其特征在于,所述方法还包括:
所述多个存储子块中各存储子块均包括子块标头区、子块数据区和/或子块校验区,其中,所述子块标头区存储所述存储子块的节点标识,所述子块校验区存储所述局部历史写入数据的第二循环冗余校验值。
7.一种数据存储装置,其特征在于,数据存储块被分割为多个存储子块,所述装置包括:
第一获取模块,用于响应于数据的写入请求,遍历所述多个存储子块,从所述存储子块对应的第一存储空间中获取所述存储子块对应的局部待写入数据;所述第一存储空间位于随机存取存储器;
第二获取模块,用于获取所述存储子块存储的局部历史写入数据,所述局部历史写入数据是前一轮写入的局部数据;
比对模块,用于将所述存储子块对应的所述局部待写入数据和所述局部历史写入数据进行一致性验证,得到验证结果;
写入模块,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据存在差异时,将所述局部待写入数据写入与所述存储子块对应的第二存储空间;所述第二存储空间位于非易失性存储器。
8.根据权利要求7所述的数据存储装置,其特征在于,所述装置还包括:
忽略模块,用于在所述验证结果表征所述局部待写入数据和所述局部历史写入数据一致时,忽略对所述局部待写入数据的写入。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至6中任一项所述的一种数据存储方法。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如权利要求1至6中任一项所述的一种数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210008659.6A CN114518845A (zh) | 2022-01-06 | 2022-01-06 | 数据存储方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210008659.6A CN114518845A (zh) | 2022-01-06 | 2022-01-06 | 数据存储方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114518845A true CN114518845A (zh) | 2022-05-20 |
Family
ID=81597390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210008659.6A Pending CN114518845A (zh) | 2022-01-06 | 2022-01-06 | 数据存储方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114518845A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251116A (zh) * | 2023-11-14 | 2023-12-19 | 苏州元脑智能科技有限公司 | 非易失性存储器的擦写方法及装置 |
-
2022
- 2022-01-06 CN CN202210008659.6A patent/CN114518845A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251116A (zh) * | 2023-11-14 | 2023-12-19 | 苏州元脑智能科技有限公司 | 非易失性存储器的擦写方法及装置 |
CN117251116B (zh) * | 2023-11-14 | 2024-02-20 | 苏州元脑智能科技有限公司 | 非易失性存储器的擦写方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7240178B2 (en) | Non-volatile memory and non-volatile memory data rewriting method | |
CN107943414B (zh) | 嵌入式Linux的文件系统分区及数据读写方法 | |
CN101427323B (zh) | 读取非易失性计算机存储器的系统和方法 | |
EP1739535B1 (en) | File system storing transaction records in flash-like media | |
CA2550974C (en) | Optimized start-up verification of file system integrity | |
JP2005242897A (ja) | フラッシュディスク装置 | |
CN102999431A (zh) | 用于非易失性存储器系统的编织序列计数器 | |
WO2014117328A1 (en) | Non-volatile memory write mechanism | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
CN100361064C (zh) | 写入过程管理方法和系统 | |
CN109976669B (zh) | 一种边缘存储方法、装置和存储介质 | |
US6363457B1 (en) | Method and system for non-disruptive addition and deletion of logical devices | |
CN114518845A (zh) | 数据存储方法、装置、介质及设备 | |
CN112000513A (zh) | 一种计算机及其vpd数据操作方法、装置、存储介质 | |
CN114265613A (zh) | 一种整车所有电控单元固件差分升级方法及系统 | |
CN114138192A (zh) | 存储节点在线升级方法、装置、系统及存储介质 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
CN117075801A (zh) | 数据存储管理方法、装置及设备 | |
JP5660521B2 (ja) | 不揮発性半導体記憶装置およびメモリ管理方法 | |
JP3675375B2 (ja) | 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法 | |
CN116627519A (zh) | 一种嵌入式设备的多系统启动方法 | |
CN114327246B (zh) | 存储介质内数据存储方法、存储介质及计算机设备 | |
CN114816856A (zh) | 一种数据备份方法、装置、设备及可读存储介质 | |
CN104008020A (zh) | 用于追踪死扇区以自动搜索和誊写的鲁棒扇区id方案 | |
CN113625950A (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 |