[发明专利]一种NOR‑Flash哈希表存储方法及装置在审
| 申请号: | 201710091598.3 | 申请日: | 2017-02-20 |
| 公开(公告)号: | CN106897228A | 公开(公告)日: | 2017-06-27 |
| 发明(设计)人: | 孙晓悦 | 申请(专利权)人: | 山东威尔数据股份有限公司 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02 |
| 代理公司: | 上海精晟知识产权代理有限公司31253 | 代理人: | 孙福岭 |
| 地址: | 264000 山东省*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 nor flash 哈希表 存储 方法 装置 | ||
技术领域
本发明涉及一种NOR-Flash哈希表存储方法及装置,属于数据存储技术领域。
背景技术
单片机中NOR-FLASH作为外部存储已经成为标准,NOR-FLASH拥有无坏块、擦除单元小、数据写入错误率低、允许单字节读取等优势。但是由于成本限制,无法使用操作系统来管理,因此会遇到以下问题:
1、数据必须分块存储
由于单片机等设备没有操作系统,无法动态分配空间,内存也只有几十KB,也无法引入空间管理算法,在空间使用上必须采用先划分后使用的办法。比如:对档案划出一块区域,每条档案固定长度50字节,1M只能存储20971条档案。每个档案又要关联到规则组合,每个规则段大约70字节,1M只能存储14979条。
2、空间无法进行混合使用
由于内容的分块,每块数据都要分开保存,假如每个人都用同一种规则,那么系统最多就是2万档案。规则只保存了一条70字节,1MB的空间就这么浪费了。或者说一个人使用两条规则,那么系统最多是7489个人,档案的一大半空间又浪费了。
3、数据删除后无法利用删除的空间
由于Flash特性,读写可以单次写,写过的地方不能再次写入只能擦除,但是擦除必须一次性擦掉一块(一般大于64KB),由于单片机只有几十KB内存,根本没有办法做数据缓存,而且缓存过程中还可能产生断电,因此,更加不安全。使用其他临时块搬移需要读写2次,擦除2次,效率更低。
4、数据查询只能从头查询
由于空间是顺序存放,取出某条档案或者某条规则必须要从头遍历,别无他法。当档案很多的时候检索效率极低。
Hash算法是一种散列算法,通过摘要方式将数据分组,通过表挂载到不同的链上。这样就实现了初步的hash算法结构。
由于Hash使用链式存储,每条链是单独标号,这样可以将某些业务集中放在某个或某几个链上,实现多业务数据存放,比如将档案放在0-99链、黑名单放在100-149链上、配置信息放在150链上。数据之间无干扰,而且根据数据的摘要也能快速检索数据。但是该算法只能在内存中使用,用类似malloc()和free()的方式进行,而Flash中没有这样的东西,而且只能从1写0,擦除又要64K一块。
发明内容
本发明针对以上问题,提供一种NOR-Flash哈希表存储方法及装置,将Hash算法结构进行转换,并运用到NOR-Flash芯片结构中,从而节约存储空间,提高信息检索效率。
本发明解决上述技术问题的技术方案如下:一种NOR-Flash哈希表存储方法,该方法包括如下步骤:
步骤一:建立链表头数组,存储每一条哈希链的头部;
步骤二:定义哈希链表的基本数据源格式;
步骤三:扫描用户第一次开机时Flash芯片中的数据,构建链表基础数据;
步骤四:按顺序直接存放用户添加的数据,将下一元素地址作为内存中的链表头,添加完后新的链表头作为新的元素地址;
步骤五:当空间剩余1个块即最小擦除单元时,回收作业把链表前面的数据进行删除,并挂载到链表后面,当腾出一个块的垃圾数据时,将单块的垃圾数据擦除。
进一步的,步骤一中所述的建立链表头数组具体包括:采用预设的哈希函数构建链表号、链表块头、链表块尾、链表起始位置。
进一步的,步骤二中所述的哈希链表的基本数据源格式至少包括可用标记、摘要、下一元素地址、数据长度、数据、循环冗余校验码中的一项。
进一步的,步骤三中所述的构建链表基础数据包括链表空白尾地址、有效记录数、无效记录数。
进一步的,所述步骤五中链表数据的删除、挂载、擦除具体指:
将有效元素转移到已擦除的空白区域;
腾出一块完整的标记无效的区域;
将无效区域进行块擦除变为空白区域。
本发明还提供一种NOR-Flash哈希表存储装置,所述装置包括:
链表构建模块,用于建立链表头数组,存储每一条哈希链的头部,同时扫描用户第一次开机时Flash芯片中的数据,构建链表基础数据;
格式定义模块,用于定义哈希链表的基本数据源格式;
数据存储模块,用于存放用户添加的数据;
数据整理模块,用于当空间剩余1个块即最小擦除单元时,对链表前面的数据进行删除、挂载、擦除。
进一步的,所述格式定义模块中基本数据源格式至少包括可用标记、摘要、下一元素地址、数据长度、数据、循环冗余校验码中的一项。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东威尔数据股份有限公司,未经山东威尔数据股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710091598.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种动态网页测试的对照显示方法及系统
- 下一篇:一种硬盘分区方法及系统





