一种基于安全模组的非易失存储器随机化读写方法与流程

文档序号:22890811发布日期:2020-11-10 18:15阅读:91来源:国知局
一种基于安全模组的非易失存储器随机化读写方法与流程

本发明涉及数据读写技术领域,尤其涉及一种基于安全模组的非易失存储器随机化读写方法。



背景技术:

安全模组产品中的非易失存储器(以下简称flash)用于存储永久性数据,如文件、秘钥、证书等永久性数据。但由于flash频繁擦写的应用场景越来越多,而传统flash的相同位置擦写次数大多为10万次左右,如果flash读写出现错误,会导致文件数据、秘钥等信息被破坏,对用户造成极大的不良影响。

现有技术中读取flash的方法主要是将flash的存储空间分割成多个大小相同的存储子空间,再将每个存储子空间被分割成多个大小相同的存储块,每个存储块对应一个逻辑地址和一个物理地址。由于逻辑地址和物理地址具有唯一映射的关系,因此在进行读写时,记录所述每个存储子空间的累积读写操作次数;当所述多个存储子空间中的任意一个存储子空间的累积写操作次数达到预定的重映率时,将所述存储子空间的逻辑地址映射到重映射物理地址。这个方法在存储内容读取上会使得特定的存储模块不断读写,导致局部数据过热,会减少存储模块的寿命和可靠性。

现有的非易失存储器寿命增强方案大多都是采用固定映射方式进行坏块数据备份或者映射到一个新的存储块,因需要进行数据备份,所以需要提前占用一部分区域用于数据备份,这样使用起来需要增加较大存储单元开销,缩小了产品的实际flash存储空间大小。

因此,亟待找到一种可以提升flash使用寿命的方法。



技术实现要素:

本发明的目的在于提供一种基于安全模组的非易失存储器随机化读写方法,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

一种基于安全模组的非易失存储器随机化读写方法,包括以下步骤:

s1,将非易失存储器的存储空间自动分成n块相同大小的数据块,同时建立存储区映射表;

s2,读写非易失存储器时,将待写入数据的目标地址转换为对应的数据块地址;

s3,通过存储区映射表随机寻找空闲的数据块;

s4,通过存储区映射表上的对应关系判断该空闲数据块是否需要更新上次写入数据的实际映射地址;若确定需要更新,则重复步骤s3重新寻找空闲数据块;若不需要更新,则直接向该空闲数据块写入数据,并将实际映射地址存入目标数据块中,更新映射表映射关系。

优选地,步骤s1中数据块的大小是以页为大小,n=空间总大小/页大小,通常来说,每页大小为512字节。

优选地,所述存储区映射表中具有n个表格,依次为0页,1页,…,n-1页,n页;

使用该映射表结构进行地址转换过程具体为:

首先确定将要写的目标映射块号:映射表块号y=目标地址/页大小;目标块号=y;

生成随机数x,即实际页地址为x页,转换成随机要写的实际地址:x*页大小,该实际地址写入目标块号y中。

优选地,步骤s3中判断该数据块是否空闲的方法为:

每个数据块对应的映射表块号中的初始值全为0,以映射表块号中的所有比特位的最高字节标识判断对应的数据块是否空闲,当最高字节标识为1时,说明该映射表块号对应的数据块存在有效数据;若最高字节标识为0时,说明该映射表块号对应的数据块空闲。

本发明的有益效果是:

本发明提出一种基于安全模组的非易失存储器随机化读写方法,该方法可随机化映射并写入到安全模组产品中非易失存储器的方法,该方法自动将写入存储器的数据按页为单元写入随机化映射后的目标地址,然后更新映射表,用于下次的数据读写,这样某些高频率擦写区域会被分散使用,提高了flash寿命,且该方法不需要开辟一块区域用于备份重映射数据,提高存储器使用寿命的同时并减小了flash存储空间开销。

附图说明

图1是实施例1中记载的一种基于安全模组的非易失存储器随机化读写方法流程图;

图2是实施例1中采用的存储区映射表结构。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

实施例

本实施例中提供了一种基于安全模组的非易失存储器随机化读写方法,如图1所示,包括以下步骤:

s1,将非易失存储器的存储空间自动分成n块相同大小的数据块,同时建立存储区映射表;

s2,读写非易失存储器时,将待写入数据的目标地址转换为对应的数据块地址;

s3,通过存储区映射表随机寻找空闲的数据块;

s4,通过存储区映射表上的对应关系判断该空闲数据块是否需要更新上次写入数据的实际映射地址;若确定需要更新,则重复步骤s3重新寻找空闲数据块;若不需要更新,则直接向该空闲数据块写入数据,并将实际映射地址存入目标数据块中,更新映射表映射关系。

本实施例中的步骤s1中数据块的大小是以页为大小,n=空间总大小/页大小,通常来说,每页大小为512字节。

本实施例中的存储区映射表中具有n个表格,依次为0页,1页,…,n-1页,n页,如图2所示,每个表格是一个数据块。图2中每个数据块的初始值为全0,每一个方格为2字节,16比特位,在进行判断数据块是否空闲时,以映射表数据块号中的所有比特位的最高字节标识判断对应的数据块是否空闲,当最高字节标识为1时,说明该映射表块号对应的数据块存在有效数据;若最高字节标识为0时,说明该映射表块号对应的数据块空闲,后面比特位标识数据则标识实际映射地址。

需要注意到的是,本实施例中将目标地址转换为随机要写入的实际块地址关系为:映射表块号=目标地址/页大小,映射表块号中的值即为转换后实际要写的块地址。例如第3页数据地址为48640,表示目标地址2048映射到实际地址15872。形成过程如下:当flash总空间为512k,页大小为512字节,那么n=1024,要向目标地址2048写入5个字节,那么映射表块号为2048/512=4,即第3页。根据生成的随机数为31,那么实际数据存储地址为第31页,即31*512(页大小)=15872地址,将该实际映射地址保存在第4个数据块格子(第3页)中。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:

本发明提出一种基于安全模组的非易失存储器随机化读写方法,该方法可随机化映射并写入到安全模组产品中非易失存储器的方法,该方法自动将写入存储器的数据按页为单元写入随机化映射后的目标地址,然后更新映射表,用于下次的数据读写,这样某些高频率擦写区域会被分散使用,提高了flash寿命,且该方法不需要开辟一块区域用于备份重映射数据,提高存储器使用寿命的同时并减小了flash存储空间开销。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。



技术特征:

1.一种基于安全模组的非易失存储器随机化读写方法,其特征在于,包括以下步骤:

s1,将非易失存储器的存储空间自动分成n块相同大小的数据块,同时建立存储区映射表;

s2,读写非易失存储器时,将待写入数据的目标地址转换为对应的数据块地址;

s3,通过存储区映射表随机寻找空闲的数据块;

s4,通过存储区映射表上的对应关系判断该空闲数据块是否需要更新上次写入数据的实际映射地址;若确定需要更新,则重复步骤s3重新寻找空闲数据块;若不需要更新,则直接向该空闲数据块写入数据,并将实际映射地址存入目标数据块中,更新映射表映射关系。

2.根据权利要求1所述的随机化读写flash的方法,其特征在于,步骤s1中数据块的大小是以页为大小,n=空间总大小/页大小。

3.根据权利要求1所述的随机化读写flash的方法,其特征在于,所述存储区映射表中具有n个表格,依次为0页,1页,…,n-1页,n页;

使用该映射表结构进行地址转换过程具体为:

首先确定将要写的目标映射块号:映射表块号y=目标地址/页大小;目标块号=y;

生成随机数x,即实际页地址为x页,转换成随机要写的实际地址:x*页大小。

4.根据权利要求1所述的随机化读写flash的方法,其特征在于,步骤s3中判断该数据块是否空闲的方法为:

每个数据块对应的映射表块号中的初始值全为0,以映射表块号中的所有比特位的最高字节标识判断对应的数据块是否空闲,当最高字节标识为1时,说明该映射表块号对应的数据块存在有效数据;若最高字节标识为0时,说明该映射表块号对应的数据块空闲。


技术总结
本发明公开了一种基于安全模组的非易失存储器随机化读写方法,涉及数据读写技术领域;该方法首先将Flash以页为大小自动分成N块,建立一个存储区映射表,该表将要写的目标地址转换为随机要写的实际地址,在每次触发写Flash操作时会通过传入的目的地址转换为对应的块地址,然后再在存储区映射表随机查找空闲的块,然后通过映射表关系将上次写入的数据读出,并判断是否需要更新,如果数据需要更新,会在随机查找空闲的数据块,将数据写入,然后更新映射表。上述方法可以使得这样某些高频率擦写区域会被分散使用,提高了Flash寿命,且该方法不需要开辟一块区域用于备份重映射数据,提高存储器使用寿命的同时并减小了Flash存储空间开销。

技术研发人员:王帅;董文强
受保护的技术使用者:北京万协通信息技术有限公司
技术研发日:2020.08.13
技术公布日:2020.11.10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1