一种数据存储方法及电子设备与流程

文档序号:29735571发布日期:2022-04-21 16:25阅读:88来源:国知局
一种数据存储方法及电子设备与流程

1.本技术涉及数据存储领域,尤其涉及一种数据存储方法及电子设备。


背景技术:

2.信息时代的高速发展使得科技研发的相关电子设备对数据存储的需求越来越大,产品功能和种类越来越多,需要存储的数据也越来越多,选择一个适合的存储器存储数据是解决存储问题的关键。通常存储器使用带电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)和闪存存储器(flash memory,flash)两种存储介质存储相关信息,但eeprom容量小且价格贵寿命高,无法解决容量问题达不到存储要求,flash容量大价格低,能解决容量与成本问题,但是flash写数据之前必须先擦除数据,通常擦除是以最小扇区进行整块擦除,若写入数据存储空间小于一个扇区,仍需要以擦除的最小单位进行擦除,擦除整块扇区非常耗时,擦写寿命低,并且需要在擦除数据之前对数据进行读取备份,写数据效率非常低。写数据过程中,如果刚好擦除结束系统断电了,那备份读取的整个扇区数据会丢失,写入数据弄丢了整个扇区,掉电导致数据永久丢失,对存储数据非常不利。


技术实现要素:

3.本技术实施例公开了一种数据存储的方法及电子设备,可以实现通用场景下提高写数据的效率和掉电也能保存数据的功能,提高了数据存储的效率,也节省了数据存储的成本。
4.第一方面,本技术实施例提供了一种数据存储方法,该方法包括:
5.将第一数据存储在第一扇区的第一数据区域上,其中,所述第一扇区被划分为了多个数据区域,所述多个数据区域包括多个第一数据区域和多个第二数据区域,所述第一数据区域用于存储数据,所述第二数据区域用于存储所述第一数据区域上存储的数据的修改数据;
6.若所述第一数据存在更新,则将所述第一数据更新后的数据存储到所述多个第二数据区域中空闲的第二数据区域。
7.在上述方法中,将存储空间划分为若干个数据区域,使得大的存储空间被划分为若干个小的数据区域的存储空间,若需修改多个第一数据区域中某个第一数据区域写入的数据块,无需对大的存储空间进行整体擦除之后再写入,而是将某个第一数据区域上存储的数据的修改数据写入多个第二数据区域中空闲的存储位置,也就是说修改一个数据无需擦除整个存储空间,不用覆盖写,而是寻找空闲数据块写入修改数据,那么在掉电时,修改前的数据和修改后的数据不会丢失,有利于数据存储,并且由原来的擦写一次改写一次变成在多个第二数据区域的空闲区域的多次改写,提高了存储的效率。
8.在第一方面一种可选的方案中,该方法还包括:
9.若所述多个第二数据区域中不存在空闲的第二数据区域,则将所述第一扇区中各
个逻辑地址对应的最新数据存储到第二扇区上;
10.擦除所述第一扇区上的数据。
11.在上述方法中,若不存在空闲的第二数据区域,则将第一扇区中各个逻辑地址对应的修改后的最新数据写入第二扇区中,也就是说,进行多个第二数据区域对应的数量的改写次数才进行一次第一扇区的擦写,减少了扇区的使用擦写次数,提高了数据存储的效率,由于存储设备的擦写次数有限,减少擦写次数能增加存储设备的使用寿命,并且在写入另一扇区之后再擦除原扇区,能够保证掉电数据不丢失,提高了数据存储的效率。
12.在第一方面的又一种可选的方案中,所述将所述第一扇区中各个逻辑地址对应的最新数据存储到第二扇区上,包括:
13.将所述多个第二数据区域中同一个逻辑地址的最后一次更新的第二数据区域中的数据,替换所述多个第一数据区域中相同逻辑地址的第一数据区域中的数据;
14.将所述多个第一数据区域中的数据存储到第二扇区上。
15.在上述方法中,每一次上电之后,寻找逻辑地址对应的最新的物理地址,将最新的物理地址的对应的值作为最新的改写值来替代多个第一数据区域中相同逻辑地址的原有数据,这种方法能够保证在第二扇区中存储的是最新的修改后的数据,提高了数据存储的精确度。
16.在第一方面的又一种可选的方案中,该方法应用于存储器,所述存储器包括至少一个主扇区和至少一个备扇区,其中,所述主扇区用于存储数据和针对所述数据的修改数据,所述备扇区用于存储所述主扇区上迁移的更新后的数据,所述第一扇区属于所述主扇区,所述第二扇区属于所述备扇区。
17.在上述方法中,除第一扇区之外,增加一个不存储任何数据的备扇区,其目的为将多个第一数据区域中的逻辑地址对应的最新数据存储到第二扇区上,第二扇区作为空闲扇区存储第一扇区经过多次改写后的最新数据,由原来的读出整个扇区的数据、擦写整个扇区的数据,才能写入需要修改的数据,变成在多个第二数据区域的空闲区域的多次改写之后进行一次读出和一次擦写,也就是说,多次改写对应一次擦写和一次读入,提高了数据存储的效率。
18.在第一方面又一种可选的方案中,所述多个数据区域还包括一个或多个管理区域,所述管理区域用于记录迁移次数和逻辑地址。需要说明的是,管理区域中包括扇区迁移数量(identification identity,id,或者称为扇区迁移id)和扇区逻辑地址等,每进行一次扇区迁移,扇区迁移id加1(表示扇区的逻辑地址从第一扇区到第二扇区),迁移能够对扇区的迁移次数进行记录,若当迁移完成后,未对第一扇区进行擦除,此时系统掉电,则重新上电时能把扇区迁移id小的扇区标记为空闲扇区,并对其进行擦除,该管理区域有助于记录迁移次数,提高了数据存储的效率。
19.第二方面,本技术实施例提供了一种数据存储的电子设备,该电子设备包括处理器和存储器;其中所述存储器用于存储程序代码,所述处理器调用所述程序代码,用于执行如下操作:
20.将第一数据存储在第一扇区的第一数据区域上,其中,所述第一扇区被划分为了多个数据区域,所述多个数据区域包括多个第一数据区域和多个第二数据区域,所述第一数据区域用于存储数据,所述数据区域用于存储所述第一数据区域上存储的数据的修改数
据;
21.若所述第一数据存在更新,则将所述第一数据更新后的数据存储到所述多个第二数据区域中空闲的第二数据区域。
22.可以看出,将存储空间划分为若干个数据区域,使得大的存储空间被划分为若干个小的数据区域的存储空间,若需修改多个第一数据区域中某个第一数据区域写入的数据块,无需对大的存储空间进行整体擦除之后再写入,而是将某个第一数据区域上存储的数据的修改数据写入多个第二数据区域中空闲的存储位置,也就是说修改一个数据无需擦除整个存储空间,不用覆盖写,而是寻找空闲数据块写入修改数据,那么在掉电时,修改前的数据和修改后的数据不会丢失,有利于数据存储,并且由原来的擦写一次改写一次变成在多个第二数据区域的空闲区域的多次改写,提高了存储的效率。
23.在第二方面又一种可选的方案中,该处理器还用于:
24.若所述多个第二数据区域中不存在空闲的第二数据区域,则将所述第一扇区中各个逻辑地址对应的最新数据存储到第二扇区上;
25.擦除所述第一扇区上的数据。
26.可以看出,若不存在空闲的第二数据区域,则将第一扇区中各个逻辑地址对应的修改后的数据写入第二扇区中,也就是说,进行多个第二数据区域对应的数量的改写次数才进行一次第一扇区的擦写,减少了扇区的使用擦写次数,提高了数据存储的效率,由于存储设备的擦写次数有限,能增加存储设备的使用寿命,并且在写入另一扇区之后再擦除原扇区,能够保证掉电数据不丢失,提高了数据存储的效率。
27.在第二方面又一种可选的方案中,在将所述第一扇区中各个逻辑地址对应的最新数据存储到第二扇区上方面,该处理器具体用于:
28.将所述多个第二数据区域中同一个逻辑地址的最后一次更新的第二数据区域中的数据,替换所述多个第一数据区域中相同逻辑地址的第一数据区域中的数据;
29.将所述多个第一数据区域中的数据存储到第二扇区上。
30.可以看出,每一次上电之后,寻找逻辑地址对应的最新的物理地址,将最新的物理地址的对应的值作为最新的改写值来替代多个第一数据区域中相同逻辑地址的原有数据,这种方法能够保证在第二扇区中存储的是最新的修改后的数据,提高了数据存储的精确度。
31.在第二方面又一种可选的方案中,所述存储器包括至少一个主扇区和至少一个备扇区,其中,所述主扇区用于存储数据和存储所述存储数据的修改数据,所述备扇区用于作为无数据的空扇区等待数据写入,所述第一扇区属于所述主扇区,所述第二扇区属于所述备扇区。
32.可以看出,除第一扇区之外,增加一个不存储任何数据的备扇区,其目的为将多个第一数据区域中的逻辑地址对应的最新数据存储到第二扇区上,第二扇区作为空闲扇区存储第一扇区经过多次改写后的最新数据,由原来的读出整个扇区的数据、擦写整个扇区的数据,才能写入需要修改的数据,变成在多个第二数据区域的空闲区域的多次改写之后进行一次读出和一次擦写,也就是说,多次改写对应一次擦写和一次读入,提高了数据存储的效率。
33.第三方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储
介质用于存储计算机程序,所述计算机程序被处理器执行时,实现本技术实施例第一方面以及第一方面的任意一种数据存储的方法。
34.第四方面,本技术实施例提供了一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行本技术实施例第一方面以及第一方面的任意一种数据存储的方法。
35.第五方面,本技术实施例提供一种电子设备,该电子设备包括执行本技术任一实施例所介绍的方法或装置。上述电子设备例如为芯片。
36.应当理解的是,本技术中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
37.以下对本技术实施例用到的附图进行介绍。
38.图1是本技术实施例提供的一种电子设备的结构示意图;
39.图2是本技术实施例提供的一种数据处理的方法流程图;
40.图3是本技术实施例提供的一种扇区划分结构示意图;
41.图4是本技术实施例示出的一种有效数据区域的内部结构图;
42.图5是本技术实施例示出的一种空闲数据区域的内部结构图;
43.图6是本技术实施例示出的一种管理区域的内部结构图;
44.图7是本技术示出的一种数据存储场景示意图;
45.图8是本技术实施例示出的又一种扇区划分的结构示意图。
46.图9是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
47.下面将结合附图对本技术实施例中的技术方案进行清楚、详尽地描述。本技术实施例的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。
48.请参见图1,图1是本技术实施例提供的一种电子设备的结构示意图。电子设备10包括处理器101和存储器102,其中存储器102上存储相关计算机程序或数据,处理器101执行存储器102上存储的相关计算机程序或处理相关数据。本技术针对数据的存储空间存储在存储器102上,若需要修改数据,则需要将存储器102上的整块(例如一个扇区)存储空间读出到随机存取存储器(random access memory,ram)缓存中,再将整块存储空间进行擦除,再整体写入需要修改的数据,通常擦除一个扇区的存储空间需要40ms,写一个扇区的数据需要32ms,对整个存储空间进行擦除和读出写入的操作需要耗费大量的时间,并且,每改
写一个数据(若占1字节),需要将整个存储空间(例如1个扇区4096字节)进行擦除操作,写数据效率非常低,并且在写数据过程中,如果刚好擦除结束系统断电了,那么备份读取的整个扇区数据就会丢失,掉电之后读取的数据丢失,导致数据存储的效率非常低。
49.为了解决数据存储效率低和掉电导致数据永久丢失的问题,本技术对电子设备10的存储器102进行改进,将存储器102的存储区域划分为若干个数据区域,需要说明的是,存储器的存储类型可以为多种,其中,若为flash存储器,则擦写最小单位为一个扇区(4096字节),将扇区分为多个存储区域,举例来说,当存储器102为flash存储器时,存储器102中的存储空间被划分为若干个数据区域,这若干个数据区域包括多个第一数据区域(存储数据的有效数据区域)和多个第二数据区域(存储第一数据区域的修改数据的空闲数据区域)以及管理区域,将扇区分为多个存储区域,由一次改写一次擦除变成多次改写一次擦除,若其余类型存储器的擦写最小单位也很大,也可以根据该方法将最小擦写单位其分为多个存储区域,在上述方法中,分模块管理的方式减少了擦写次数,提高了写入数据的效率。
50.在一些实施例中,当第一数据区域的数据的需要被修改时,处理器102先将修改的数据先读到的ram缓存中进行数据处理,再将ram中缓存的修改数据写入第二数据区域的空闲数据区域,此时,写一个数据(例如1字节),只需要在多个第二数据区域的空闲区域对该数据进行修改,无需将整个扇区(4096字节)擦除,提高了改写数据的效率。
51.在另一些实施例中,当多个第二数据区域不存在空闲区域时,处理器101将第一扇区中的改写后的第一数据区域的数据和管理区域的数据先读到ram缓存进行数据处理,处理器101再将ram中缓存的相关数据写入第二扇区,在写入第二扇区之后,处理器再对第一扇区存储的数据进行整体擦除。也就是说,处理器101在ram中处理并存储相关数据(掉电失效),再写入flash存储器存储中(掉电不失效),即使是写数据过程中,若在原扇区(例如第一扇区)写入另一扇区(第二扇区)的过程中系统断电,原扇区的数据还在,不会导致数据丢失,如果刚好擦除结束系统断电了,那备份读取的整个扇区数据也不会丢失,掉电也能保存数据,提高了数据存储的可靠性。
52.请参见图2,图2是本技术实施例提供的一种数据处理的方法流程图。该方法可以基于图1所示的电子设备10来实现,该方法包括但不限于如下步骤;
53.s201:将第一数据存储在第一扇区的第一数据区域上。
54.存储器的存储单位为扇区,第一扇区被划分为了多个数据区域,多个数据区域包括多个第一数据区域和多个第二数据区域以及一个或多个管理区域,第一数据区域用于存储数据,数据区域用于存储第一数据区域上存储的数据的修改数据,管理区域用于校验擦写次数和逻辑地址。
55.对数据存储的空间进行划分,可以划分为多个第一数据区域和多个第二数据区域以及一个或多个管理区域,在一些实施例中,假设数据存储为flash数据存储,那么擦除的最小单位为1个扇区,结合上述方法对本技术进行说明:
56.flash存储器的1个扇区占4096个字节,若改写的一个数据大小为28字节,则可以将1个扇区划分为128个数据区域,此时一个数据区域占32个字节,若改写的一个数据大小为52字节,则可以将1个扇区划分为64个数据区域,此时一个数据区域占64字节,也就是说,划分的区域的数量可以根据进行一次数据改写(第一数据)的大小来调整,选择与第一数据存储字节相近的字节来划分数据区域的数量,需要说明的是,划分数据区域的数量是2的次
方个数量。本实施例中,选择128个数据区域的划分方式来进行说明,也可以为其余数量的数据区域,本技术对此不做限定。
57.如图3所示,图3是本技术实施例提供的一种扇区划分结构示意图。1个扇区被划分为128个数据区域,一个数据区域的大小为32字节,其中数据区域0-63为64个第一数据区域,数据区域64-126为63个第二数据区域,数据区域127为1个管理区域,其中,64个第一数据区域中存储有效数据,例如可以为数据区域0存储密码a、数据区域1存储密码b、数据区域2存储密钥a、数据区域3存储密钥b等,也可以存储其余的数据,也就是说,每一个第一数据区域都能存放一种类型的有效数据,若需要对多个第一数据区域中的某一个数据区域中的有效数据进行改写,则将改写的数据通过ram缓存再写入63个第二数据区域中的某一个空闲扇区中,需要说明的是,在本技术实施例中,在第二数据区域中写入修改数据的方式可以为按照操作的时间顺序置入,即写入64后再写入65,依次类推,需要说明的是,写入修改数据的方式也可以为在第二数据区域中的任意空闲数据区域进行写入(即若存在空闲区域则写入修改数据),本技术实施例中可以为按照时间顺序排列的写入方式,也可以为在第二数据区域中的任意空闲数据区域进行写入,本技术对此不做限定,在本实施例中,选择在第二数据区域中的按照时间顺序排列的写入方式进行分析。
58.在一些实施例中,扇区的第一数据区域的数量和第二数据区域的数量以及管理区域的数量并不是固定的,根据有效数据的数量和种类,第一数据区域的数量可以为其余数量。举例来说,扇区0的有效数据为10个时,第一数据区域的数量可以为10个,此时第二数据区域可以为117个,管理区域的数量可以为为1个,又例如有效数据为80个时,第一数据区域的数量可以为80个,此时第二数据区域可以为46个,管理区域的数量可以为2个,也就是说,第一数据区域和第二数据区域的数量以及管理区域的数量不是确定的,可以根据有效数据的种类和数量的实际情况进行调整,本实施例中,选择第一数据区域数量为64,第二数据区域数量为63,管理区域为1个的情况进行说明。
59.如图4所示,图4是本技术实施例示出的一种有效数据区域的内部结构图。每个第一数据区域包括32个字节,其中30个字节为有效数据域,用于存储有效数据,块地值为1个字节,用于存放该第一数据区域的逻辑地址,校验check为1个字节,用于存储对有效数据域和块地值进行校验之后的校验值(校验值由check的相关计算得出)。其中,对每个第一数据区域进行的字节的具体功能划分的数量也不做限定,例如有效数据域可以为28个字节,块地值可以为2个字节,check可以为2个字节等,也可以为其余的数量划分方式,本技术对此不做限定,在本实施例中,选择图4所示的划分方式进行分析。
60.如图5所示,图5是本技术实施例示出的一种空闲数据区域的内部结构图。一个第二数据区域包括32个字节,其中,有效数据域为30个字节,用于存储有效数据(第一数据区域的修改数据),块地值为1个字节,用于存放该第一数据区域的逻辑地址,check为1个字节,用于存储对有效数据域和块地值进行校验之后的校验值(校验值由check的相关计算得出)。其中,对每个第二数据区域进行的字节的具体功能划分的数量也不做限定,不再赘述。在本技术实施例中,选择图5所示的划分方式进行分析。
61.如图6所示,图6是本技术实施例示出的一种管理区域的内部结构图,一个管理区域包括32个字节,其中,扇区逻辑地址为1个字节,用于存放该扇区对应的逻辑地址,扇区迁移id为4个字节,用于记录迁移的次数,扇区与扇区之间每迁移一次,扇区迁移id加1个。保
留模块为25个字节,可以用于存放其余扩展功能,例如存储保留因子等。check占用2个字节,用于存储对扇区逻辑地址和扇区迁移id以及保留模块进行校验之后的校验值(校验值由check的相关计算得出),对管理区域进行的字节的具体功能划分的数量也不做限定,在此不再赘述。在本技术实施例中,选择图6所示的划分方式进行分析。
62.若存在512个逻辑空间对应的相关数据需要进行存储,也可以为其余数量的逻辑空间,本技术在此不做限定,在本实施例中以逻辑空间的数量为512个的情况进行说明。
63.如图7所示,图7是本技术示出的一种数据存储场景示意图。此时存有数据的逻辑空间有512个,在1个扇区被划分为128个数据区域,多个第一数据区域为64个,多个第二数据为63个、管理区域为1个的情况下,对本实施例进行说明:
64.将512个逻辑空间对应存进8个扇区中,并再加1个扇区作为空闲扇区,扇区0至扇区7这八个扇区称为第一扇区,用于作为主扇区存储数据和针对第一数据区域存储数据的修改数据,扇区8作为第二扇区,用于作为备扇区存储主扇区上迁移的更新后的数据。详细来说,将逻辑空间0-63存入扇区0的0-63第一数据区域中,逻辑空间64-127存入扇区1的128-191第一数据区域中,依次类推,不再赘述。第九个扇区也即扇区8作为空闲扇区,该扇区8的多个第一数据区域不存在任何数据,多个第二数据区域也不存在任何数据的改写数据,管理区域也不存放任何数据,也就是扇区8的每一个数据区域的32个字节全部为1,也就是64个f(16进制)。
65.需要说明的是,flash存储器只能将1改写成0,而不能将0改写成1,擦写的过程也即是将数据存储区域的字节全部改成1的过程,也就是说,若该扇区为空闲扇区,则该扇区中的4096个字节的每一位都是1。
66.如图8所示,图8示出又一种扇区划分的结构示意图。若扇区0的数据区域0存储密码a、数据区域1存储密码b、数据区域2存储密钥a、数据区域3存储密钥b,数据区域4存储指纹a,结合上述数据的存储内容对本技术实施例进行说明:
67.在一些实施例中,在第二数据区域中存放修改数据的顺序可以按照修改数据的顺序依次存入(例如第二数据区域中存放64之后存放65,依次类推),在第一数据区域的修改数据存入空闲的第二数据区域的过程中,需要如图1所示的处理器101将该修改数据读到ram缓存中,再将ram缓存中的修改数据写入第二数据区域。举例来说,对扇区0的存储密码a进行修改,则将存储密码a的需要修改的部分的剩余部分与新修改的部分一起读入ram存储器中缓存,再从ram缓存中将存储密码a修改后的数据存入第多个二数据区域的某一空闲区域(可以为按照存储数据被修改的顺序存放),具体地,扇区0的数据区域0存储的存储密码a的有效数据域的30字节的值为abfc(十六进制)+28字节其余数据,需要将其修改为aaaf(十六进制)+28字节其余数据,则将存储密码a的需要修改部分的剩余部分的28个字节提取至ram缓存中,再将需要修改写入的部分aaaf(十六进制)与剩余的28个字节结合变成aaaf(十六进制)+28字节其余数据,再将修改好的数据写入多个第二数据区域的任意空闲区域。
68.在一些实施例中,数据区域0中的1字节的check值是通过计算得出的,具体地,在ram缓存中先对30字节的有效数据域和1字节的块地值进行相关计算(例如异或运算或求和运算等),所得到的数据为check中存的数据,此计算过程在ram缓存中进行,再将30字节的有效数据域和1字节的块地值以及通过计算得出的check值一起写入数据区域0中。
69.在一些实施例中,将存储在第一数据区域的第一数据进行修改后的数据写入第二
数据区域,第一数据区域的逻辑地址不会发生改变。每次上电时,ram中的索引表都会将物理地址与逻辑地址对应起来,该索引表占用固定的ram存储空间为1024字节。具体地,如图8所示,数据区域0修改后的数据写入第二数据区域64中后,数据区域0和数据区域64的块地值没有改变,也就是逻辑地址一致,只是物理地址发生改变(由数据区域0变为数据区域64),在上电时,ram中的索引表能够将相同逻辑地址的对应的不同物理地址找出来,在改写数据前后,保持逻辑地址一致,能够更好地识别逻辑地址相同的相关数据,提高数据存储的效率。
70.在一些实施例中,将存储在第一数据区域的第一数据进行修改后的数据写入第二数据区域,第一数据区域会被标记为无效模块,存有修改数据的第二数据区域标记为有效模块。举例来说,在保持不掉电和无损坏的情况下,如图8所示,数据区域0修改后的数据写入第二数据区域的数据区域64中,此时数据区域0被标记为无效模块,数据区域64被标记为校验正确的有效模块,具体来说,修改后的数据在ram缓存中存在一个根据修改数据计算出的新的check值,将修改后的数据和块地值以及新的check值同时存入数据区域64中,修改数据和块地值以及新的check值写入数据区域64之后,此时对数据区域64进行check校验,计算出的值与在缓存区计算出的值一致,则校验成功,并将数据区域64标记为有效模块,同时将数据区域0标记为无效模块。
71.需要说明的是,若对数据区域0进行再一次改写并写入空闲的第二数据区域中,再一次改写的数据仍为校验正确的有效模块,但再一次改写的校验正确的有效数据相比于上次改写的校验正确的有效数据而言,属于最新的校验正确的数据,也就是说,有效模块是指写入正确的模块,若写入不正确,则被称为无效模块。
72.需要说明的是,在本实施例中,在对无效模块和有效模块进行标记的过程中,标记并不会在每一个数据区域的32个字节中占用存储空间,也就是说,在本实施例中,当第二数据区域中存放修改数据的顺序可以按照修改数据的时间顺序依次存入(例如第二数据区域中存放64之后存放65,依次类推),每次上电ram从下向上遍历的过程中,处理器会选择同一个逻辑地址的数据区域所对应的最新的物理地址作为替换原第一数据区域的修改数据,则此最新的修改数据相比于其余同一逻辑地址的修改数据而言,是最新有效的修改数据,也就是说,在本实施例中,有效和无效并不会被标记而占用每一数据区域的存储空间,而是通过每次上电ram从下向上遍历的方式将最新的修改数据默认为最新“有效”数据。
73.在一些实施例中,若写入修改数据的方式也可以为在第二数据区域中的任意空闲数据区域进行写入(即若存在空闲区域则写入修改数据),则排列顺序为随机顺序,当第二数据区域不存在空闲数据区域即进行迁移扇区,则此时无法根据ram从下向上遍历的方式将最新的修改数据默认为最新“有效”数据,也即是说,需要在管理区域的25字节的保留模块增设有效无效标记功能,每一个第一数据区域或第二数据区域的32个字节中拿出若干字节(例如1字节)增设有效无效模块功能,在写入修改数据的方式为在第二数据区域中的任意空闲数据区域进行写入、排列顺序为随机顺序的情况下,需要对有效无效模块进行标记,该标记过程需要占用模块内的字节存储空间,即将最新时间的数据标记为有效,与最新数据同一逻辑地址原的数据和除最新数据之外的其余修改数据标记为无效,该方式能在修改数据为随机顺序的情况下,识别出同一逻辑地址的最新数据。需要说明的是,在相应管理区域或数据区域中增设有效无效的标记存储空间,达到在修改数据为随机顺序的情况下识别
出最新数据的功能,也可以为增设记录时间模块(例如选择最新时间,该时间模块占用区域内的字节存储空间)、记录修改次数模块(例如选择修改次数最大的那个数据区域为最新数据区域,该修改次数模块占用区域内的字节存储空间),也就是说,识别出最新数据区域的标记方式可以为多种,本技术实施例对此不做限定。
74.需要说明的是,本实施例选择的是第二数据区域中的修改顺序按照时间顺序依次存放,因此无需上述占用存储空间来“标注”最新数据的方法,而是通过每次上电ram从下向上遍历的方式将最新的修改数据默认为最新“有效”数据。
75.在一些实施例中,由于ram缓存在掉电时数据会丢失,如果把ram缓存中的存储关于数据区域0的修改数据、块地值以及check值写入数据区域64的过程中,写入了一半的修改数据时,系统掉电了,那么再次上电的时候,ram缓存中会重新接收一次修改数据值以及对应计算出的check值,此时数据区域64中只写入一半的修改数据,根据写入数据区域64的一半的修改数据计算得到的check值与ram中根据完整修改数据计算出的check值不一致,也就是说,将数据区域64中的数据进行check值计算结果,与数据区域64中的check值比对不一致,此时数据区域64校验失败,则数据区域0仍为有效模块,数据区域64为校验失败的无效模块。需要说明的是,该举例中,在写了一半之后掉电的情况下,数据区域64中写入一半的修改数据,再次上电可以选择继续把剩下数据写完,也可以舍弃数据区域64,重新选择空闲数据区域进行写入,本技术实施例对此不做限定。
76.s202:若所述第一数据存在更新,则将所述第一数据更新后的数据存储到所述多个第二数据区域中空闲的第二数据区域。
77.在一些实施例中,若针对同一数据区域修改多次,选择最新的修改的数据区域作为扇区迁移时的替换数据。举例来说,如图8所示,对第一数据区域的数据区域0存储的密码a进行一次修改之后,将修改之后的密码a的数据存储到数据区域64,此时数据区域64中存储的第一次修改密码a的数据为校验正确的有效数据,对第一数据区域的数据区域0存储的密码a进行二次修改之后,将修改之后的密码a的数据存储到数据区域65,此时数据区域65中存储的第二次修改密码a的数据也为校验正确的有效数据。对第一数据区域的数据区域2存储的密钥a进行一次修改之后,将修改之后的密钥a的数据存储到数据区域66,此时数据区域66中存储的第一次修改密钥a的数据为校验正确的有效数据,对第一数据区域的数据区域2存储的密钥a进行二次修改之后,将修改之后的密钥a的数据存储到数据区域67,此时数据区域67中存储的第二次修改密码a的数据也为校验正确的有效数据。
78.在一些实施例中,每一次上电时,处理器会在ram缓存中对多个第二数据区域的数据进行从下往上遍历,遍历一整个扇区需要固定占用ram4096个字节,并根据ram中占用固定的1024字节的索引表将逻辑地址与物理地址对应起来,即找到相同逻辑地址的最新物理地址,将距离遍历时间最近(也就是最新修改)的密码a的校验正确的有效数据作为替换数据区域0的数据,例如数据区域65作为替代数据区域0的最新数据,也将距离遍历时间最近(也就是最新修改)的密钥a的校验正确的有效数据作为替换数据区域2的数据,例如数据区域67作为替代数据区域2的最新数据。需要说明的是,在本实施例中,在写入第二数据区域的方式为按照时间顺序写入时,遍历的方式为从下往上遍历,若为随机写入的情况,遍历的方式可以为从上往下遍历,也可以为从下往上遍历,也可以为其余的遍历方式,本技术对此不不做限定,在本实施例中,选择写入第二数据区域的方式为按照时间顺序写入时,从下往
上的遍历方式进行分析。
79.需要说明的是,处理器在ram缓存中对多个第二数据区域的数据进行从下往上遍历的过程中,处理器会根据块地值中存储的逻辑地址识别出修改数据的类型,根据该块地值在第二数据区域遍历出与第一数据区域的相同逻辑地址的最新的修改数据,将该数据作为第一数据区域的替换数据。例如密码a的逻辑地址为00(十六进制),密钥a的逻辑地址为02(十六进制),则数据区域64和数据区域65的逻辑地址都为00(十六进制),数据区域66和数据区域67的逻辑地址都为02(十六进制),因此系统能根据块地值中相同的逻辑地址识别出同一数据类型的修改数据,再在同一数据类型的基础上,从下向上遍历出同一数据的修改数据的最新数据,例如密码a的最新修改数据在数据区域65上,密钥a的最新修改数据在数据区域67上,数据区域65的数据作为替换数据区域0的关于密码a的最新修改数据,数据区域67的数据作为替换数据区域2的关于密钥a的最新修改数据。
80.在一些实施例中,在扇区迁移的过程之中,选择最新的修改的数据区域作为扇区迁移时的替换数据,也就是说,当第一扇区的多个第二数据区域不存在空闲数据区域时,此时处理器选择最新的修改的数据区域作为扇区迁移时的替换数据,在扇区迁移的过程中,也需要先将第一扇区的数据读入ram缓存中,再写入第二扇区。如图8所示,将0-63数据区域的逻辑地址相同的修改最新数据和本身未修改的数据(例如未修改数据区域4则不替换)以及管理区域的值存入ram缓冲中,在ram中将管理区域的扇区迁移id值加1,再将ram中替换后的数据写入如图7所示的空闲扇区8,此时扇区8中的896-959的64个数据区域存储第一数据区域逻辑地址相同的修改最新数据以及本身未修改的数据,数据区域1023存储管理区域。
81.在一些实施例中,扇区每迁移一次,扇区迁移id加1。举例来说,将扇区0数据写入扇区8的过程中,扇区8的数据区域1023的管理区域相比于扇区0的数据区域127中的管理区域的id值加1,也就是说,若扇区0的扇区迁移id为0(十六进制),则扇区8的扇区迁移id为1。在不掉电的情况下,扇区0中的多个第一数据区域的最新修改数据以及管理区域的数据通过ram缓冲写入扇区8之后,处理器开始擦掉扇区0中的全部数据,扇区0包括的4096个字节全部重新置1,占有4个字节的扇区迁移id也为全1状态,即为ffffffff(16进制),也就是说,此时扇区0为空闲扇区,扇区8为存有数据的非空闲扇区。
82.需要说明的是,若扇区8的第二数据区域不存在空闲扇区时,此时若将扇区8迁移到空闲扇区7,那么此时处理器选择最新的修改的数据区域作为扇区迁移时的替换数据,将896-959第一数据区域的逻辑地址相同的修改最新数据(例如数据区域963替换数据区域959)和本身未修改的数据(例如未修改数据区域900则不替换)以及管理区域的值存入ram缓冲中,在ram中将管理区域的扇区迁移id值加1,再将ram中修改的数据写入如图7所示的空闲扇区7,那么此时扇区7的扇区迁移id为02(十六进制),也即是2次,在不掉电的情况下,扇区8的上述数据写入扇区7中后,处理器擦除扇区8,此时扇区8包括的4096个字节全部重新置1,占有4个字节的扇区迁移id也为全1状态,即为ffffffff(16进制),也就是说,此时扇区8为空闲扇区,扇区7为存有数据的非空闲扇区。
83.在一些实施例中,若找到两个相同的逻辑地址的扇区且都校验正确,那扇区迁移id值小的那个扇区标记为空闲扇区(对其进行擦除)。举例来说,若扇区0的相同逻辑地址对应的最新修改数据和未修改的本身数据以及管理块全部写入扇区8中后,处理器来不及擦
除扇区0,此时系统就掉电了,那么再一次上电时,系统会出现两个存储相同逻辑地址的相同扇区,但是,此时扇区8的扇区迁移id比扇区0的扇区迁移id大1,因此,处理器选择扇区迁移id小的(即扇区0)为空闲扇区,对其进行擦除,能够在在一次上电时,识别出需要被擦除的扇区,极大地提高了数据存储的效率。
84.上述介绍了本技术实施例的方法,接下来介绍本技术实施例涉及的装置。
85.如图9所示,是本技术实施例提供的一种电子设备的结构示意图。电子设备20包括存储单元901和更新单元902,其中该存储单元用于存储程序代码,处理器调用所述程序代码,用于执行如下操作:
86.存储单元901,将第一数据存储在第一扇区的第一数据块区域上,其中,所述第一扇区被划分为了多个数据区域,所述多个数据区域包括多个第一数据区域和多个第二数据区域以及一个或多个管理区域,所述第一数据区域用于存储数据,所述数据区域用于存储所述第一数据区域上存储的数据的修改数据,所述管理区域用于校验擦写次数和逻辑地址;
87.更新单元902,若所述第一数据存在更新,则将所述第一数据更新后的数据存储到所述多个第二数据区域中空闲的第二数据区域。
88.可以看出,将存储空间划分为若干个数据区域,使得大的存储空间被划分为若干个小的数据区域的存储空间,若需修改多个第一数据区域中某个第一数据区域写入的数据块,无需对大的存储空间进行整体擦除之后再写入,而是将某个第一数据区域上存储的数据的修改数据写入多个第二数据区域中空闲的存储位置,也就是说修改一个数据无需擦除整个存储空间,不用覆盖写,而是寻找空闲数据块写入修改数据,那么在掉电时,修改前的数据和修改后的数据不会丢失,有利于数据存储,并且由原来的擦写一次改写一次变成在多个第二数据区域的空闲区域的多次改写,提高了存储的效率。
89.在一种可能的实现方式中,
90.若所述多个第二数据区域中不存在空闲的第二数据区域,则将所述第一扇区中各个逻辑地址对应的最新数据存储到第二扇区上;
91.擦除所述第一扇区上的数据。
92.可以看出,若不存在空闲的第二数据区域,则将第一扇区中各个逻辑地址对应的修改后的最新数据写入第二扇区中,也就是说,进行多个第二数据区域对应的数量的改写次数才进行一次第一扇区的擦写,减少了扇区的使用擦写次数,提高了数据存储的效率,由于存储设备的擦写次数有限,能增加存储设备的使用寿命,并且在写入另一扇区之后再擦除原扇区,能够保证掉电数据不丢失,提高了数据存储的效率。
93.在一种可能的实现方式中,在将所述第一扇区中各个逻辑地址对应的最新数据存储到第二扇区上方面,所述更新单元902具体用于:
94.将所述多个第二数据区域中同一个逻辑地址的最后一次更新的第二数据区域中的数据,替换所述多个第一数据区域中相同逻辑地址的第一数据区域中的数据;
95.将所述多个第一数据区域中的数据存储到第二扇区上。
96.可以看出,每一次上电之后,寻找逻辑地址对应的最新的物理地址,将最新的物理地址的对应的值作为最新的改写值来替代多个第一数据区域中相同逻辑地址的原有数据,这种方法能够保证在第二扇区中存储的是最新的修改后的数据,提高了数据存储的精确
度。
97.在一种可能的实现方式中,存储器包括至少一个主扇区和至少一个备扇区,其中,所述主扇区用于存储数据和存储所述存储数据的修改数据,所述备扇区用于作为无数据的空扇区等待数据写入,所述第一扇区属于所述主扇区,所述第二扇区属于所述备扇区。
98.可以看出,除第一扇区之外,增加一个不存储任何数据的备扇区,其目的为将多个第一数据区域中的逻辑地址对应的最新数据存储到第二扇区上,第二扇区作为空闲扇区存储第一扇区经过多次改写后的最新数据,由原来的读出整个扇区的数据、擦写整个扇区的数据,才能写入需要修改的数据,变成在多个第二数据区域的空闲区域的多次改写之后进行一次读出和一次擦写,也就是说,多次改写对应一次擦写和一次读入,提高了数据存储的效率。
99.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在处理器上运行时,实现图2所示的方法流程。
100.本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,实现图2所示的方法流程。
101.综上所述,通过实施本技术实施例,将存储空间划分为若干个数据区域,使得大的存储空间被划分为若干个小的数据区域的存储空间,若需修改多个第一数据区域中某个第一数据区域写入的数据块,无需对大的存储空间进行整体擦除之后再写入,而是将某个第一数据区域上存储的数据的修改数据写入多个第二数据区域中空闲的存储位置,也就是说不用覆盖写,而是寻找空闲数据块写入修改数据,由原来的擦写一次改写一次变成在多个第二数据区域的空闲区域的多次改写,提高了存储的效率,并且在写入另一扇区之后再擦除原扇区,能够保证掉电数据不丢失,提高了数据存储的效率。
102.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来计算机程序相关的硬件完成,该计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储记忆体rom或随机存储记忆体ram、磁碟或者光盘等各种可存储计算机程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1