本技术涉及数据存储,特别是涉及一种flash存储器的数据管理方法及装置。
背景技术:
1、flash存储器是一种非易失性存储介质,广泛应用于各种电子设备中,已成为当前主流的存储介质之一。
2、flash存储器中的数据进行更新的过程通常采用追加的方式,也即在flash存储器中的新地址写入新数据,在没有足够的可写入存储空间时再擦除旧数据。目前,通常将flash存储器中的存储空间分为a、b两部分,先向其中一个空间写入数据,例如,先向a空间写入数据;写满后将该空间中的有效数据搬移到另一个空间,例如,拷贝到b空间;而后,擦除a空间的全部数据并向b空间写入数据;当b空间写满后,再将b空间的有效数据拷贝到a空间,如此循环。然而,采用这样的方法在flash存储器中存储数据,flash存储器中只有一半的存储空间能够参与到数据更新中,例如,对于2m字节的flash存储器来说,写到1m字节的时候,就需要进行数据搬移和数据擦除。
3、由此,如何增加flash存储器中参与数据更新的存储空间的比例,成为需要解决的问题。
技术实现思路
1、基于上述问题,本技术提供了一种flash存储器的数据管理方法及装置,可以增加flash存储器中参与数据更新的存储空间的比例。
2、本技术实施例公开了如下技术方案:
3、第一方面,本技术实施例提供了一种flash存储器的数据管理方法,其特征在于,所述方法包括:
4、接收待写入数据以及所述待写入数据对应的第一数据块的数据块标识;
5、基于所述数据块标识,查找flash存储器中是否存储有所述第一数据块的历史数据;
6、若所述flash存储器中未存储所述第一数据块的历史数据,则向未存储数据的可用扇区写入所述待写入数据;所述flash存储器中包括多个可用扇区以及至少一个保留扇区;
7、若所述flash存储器中存储有所述第一数据块的历史数据,则向已存储数据的可用扇区写入所述待写入数据。
8、可选地,所述若所述flash存储器中存储有所述第一数据块的历史数据,则向已存储数据的可用扇区写入所述待写入数据,包括:
9、若所述flash存储器中存储有所述第一数据块的历史数据,则基于所述数据块标识,从已存储数据的可用扇区中确定第一可用扇区;所述第一可用扇区为已存储数据且未存储所述第一数据块的历史数据的可用扇区;
10、向所述第一可用扇区写入所述待写入数据。
11、可选地,所述若所述flash存储器中存储有所述第一数据块的历史数据,则向已存储数据的可用扇区写入所述待写入数据,包括:
12、若所述flash存储器中存储有所述第一数据块的历史数据,则基于所述flash存储器中多个可用扇区在所述flash存储器中的位置顺序,比较所述第一数据块与所述flash存储器中多个已存储数据的可用扇区各自剩余空间的大小;
13、确定第二可用扇区;所述第二可用扇区为剩余空间大于所述第一数据块的可用扇区;
14、向所述第二可用扇区写入所述待写入数据。
15、可选地,所述确定第二可用扇区之后,所述方法还包括:
16、停止比较所述第一数据块与所述flash存储器中多个已存储数据的可用扇区各自剩余空间的大小。
17、可选地,所述基于所述flash存储器中多个可用扇区在所述flash存储器中的位置顺序,依次比较所述第一数据块与所述flash存储器中多个已存储数据的可用扇区各自剩余空间的大小之后,所述方法还包括:
18、若所述flash存储器中不存在第二可用扇区,则向所述保留扇区写入所述待写入数据;
19、确定所述flash存储器中存储有所述第一数据块的历史数据的扇区,作为待搬移扇区;
20、将所述待搬移扇区中的有效数据搬移至所述保留扇区;所述有效数据为数据块对应的最新数据;
21、擦除所述待搬移扇区内存储的数据。
22、可选地,所述确定所述flash存储器中存储有所述第一数据块的历史数据的扇区,作为待搬移扇区,包括:
23、确定所述flash存储器中起始地址数据为所述第一数据块的历史数据的扇区,作为待搬移扇区。
24、第二方面,本技术实施例提供了一种flash存储器的数据管理装置,其特征在于,所述装置包括:接收模块,查找模块,第一写入模块以及第二写入模块;
25、所述接收模块,用于接收待写入数据以及所述待写入数据对应的第一数据块的数据块标识;
26、所述查找模块,用于基于所述数据块标识,查找flash存储器中是否存储有所述第一数据块的历史数据;
27、所述第一写入模块,用于在所述flash存储器中未存储所述第一数据块的历史数据的情况下,向未存储数据的可用扇区写入所述待写入数据;所述flash存储器中包括多个可用扇区以及至少一个保留扇区;
28、所述第二写入模块,用于在所述flash存储器中存储有所述第一数据块的历史数据的情况下,向已存储数据的可用扇区写入所述待写入数据。
29、可选地,所述第一写入模块,包括:第一确定单元和第一写入单元;
30、所述第一确定单元,用于在所述flash存储器中存储有所述第一数据块的历史数据的情况下,基于所述数据块标识,从已存储数据的可用扇区中确定第一可用扇区;所述第一可用扇区为已存储数据且未存储所述第一数据块的历史数据的可用扇区;
31、所述第一写入单元,用于向所述第一可用扇区写入所述待写入数据。
32、可选地,所述第一写入模块,包括:比较单元,第二确定单元和第二写入单元;
33、所述比较单元,用于在所述flash存储器中存储有所述第一数据块的历史数据的情况下,基于所述flash存储器中多个可用扇区在所述flash存储器中的位置顺序,比较所述第一数据块与所述flash存储器中多个已存储数据的可用扇区各自剩余空间的大小;
34、所述第二确定单元,用于确定第二可用扇区;所述第二可用扇区为剩余空间大于所述第一数据块的可用扇区;
35、所述第二写入单元,用于向所述第二可用扇区写入所述待写入数据。
36、可选地,所述装置还包括:第三写入模块,确定模块,搬移模块以及擦除模块;
37、所述第三写入模块,用于在所述flash存储器中不存在第二可用扇区的情况下,向所述保留扇区写入所述待写入数据;
38、所述确定模块,用于确定所述flash存储器中存储有所述第一数据块的历史数据的扇区,作为待搬移扇区;
39、所述搬移模块,用于将所述待搬移扇区中的有效数据搬移至所述保留扇区;所述有效数据为数据块对应的最新数据;
40、所述擦除模块,用于擦除所述待搬移扇区内存储的数据。
41、相较于现有技术,本技术具有以下有益效果:
42、本技术实施例提供了一种flash存储器的数据管理方法,该方法中,首先,接收待写入数据以及待写入数据对应的第一数据块的数据块标识;而后,基于数据块标识,查找flash存储器中是否存储有第一数据块的历史数据;若flash存储器中未存储第一数据块的历史数据,则向未存储数据的可用扇区写入待写入数据;若flash存储器中存储有第一数据块的历史数据,则向已存储数据的可用扇区写入待写入数据。由此,以扇区为基本单位管理flash存储器中的数据,并在多个扇区中保留至少一个不写入的数据的扇区作为保留扇区,其余扇区作为可用扇区,各可用扇区均可以用于写入数据,使得flash存储器中大部分的存储空间都能参与到数据更新中,增加了flash存储器中参与数据更新的存储空间的比例。