[发明专利]一种基于未知长度二分查找的闪存数据检索存储的方法有效

专利信息
申请号: 201310015153.9 申请日: 2013-01-15
公开(公告)号: CN103020323A 公开(公告)日: 2013-04-03
发明(设计)人: 王洪君;李绍林;曹敏;王琰;王惠;王光雷 申请(专利权)人: 山东大学
主分类号: G06F17/30 分类号: G06F17/30;G06F12/02
代理公司: 济南金迪知识产权代理有限公司 37219 代理人: 许德山
地址: 250100 山*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种基于未知长度二分查找的闪存数据检索存储的方法,属于闪存存储技术领域。本发明结合未知长度二分查找、位图、负载因子、擦写距离等算法和思想,用未知长度二分查找代替全地址空间(扇区的全部地址)的二分查找,用位图代替实际删除,用负载因子和擦写距离代替全地址空间存储,本发明检索存储的方法提高了对闪存介质的查询、删除、擦写等基本操作的性能,同时,还具有可扩展性强、资源占用少等优点,易于在嵌入式系统或无操作系统的单片机中实现。
搜索关键词: 一种 基于 未知 长度 二分 查找 闪存 数据 检索 存储 方法
【主权项】:
1.一种基于未知长度二分查找的闪存数据检索存储的方法,是利用单片机控制系统实现的,该系统包括单片机、闪存存储芯片、查询生成器、报警器、上位机,上位机通过RS-485连接单片机,单片机通过SPI连接闪存存储芯片,单片机通过SPI或RS-232连接查询生成器,单片机通过三极管放大器和继电器连接报警器;查询生成器用于向单片机输入待查询的数据,当待查询数据在闪存存储芯片中不存在时,报警器报警,上位机将变更的数据发送至单片机,单片机负责将数据变更反映到闪存存储芯片中;该方法分作6步,前3步提供设定及计算得到的基本参数,后3步分别进行不同的操作以实现3组不同的功能,该方法具体步骤如下:1)各扇区的容量为Capacity,负载因子为LoadFactor,扇区数量为SectorCount,扇区从0开始编号;2)向编号为i的已存储SizeStored(i)大小数据的扇区,存入长度为N的数据时,该扇区提供的剩余空间为也就是说,编号为i的扇区在已存储SizeStored(i)大小的数据后,仍有剩余空间继续存储大小为N的数据时,该扇区提供的剩余空间为扇区容量减去扇区中已存储的数据大小;其他情况下,该扇区提供的剩余空间为“负载因子限制下”的扇区容量即Capacity*LoadFactor减去扇区中已存储的数据大小;另外,允许Rcs(i,N)的结果为负,当Rcs(i,N)的结果为负时表示该扇区需要额外空间存储数据;3)擦写距离分为前向擦写距离DEWp和后向擦写距离DEWn两种,有效的擦写距离为非负整数,擦写距离的计算过程步骤如下:a.向i号扇区写入长度为N的数据时,前向擦写距离DEWp的计算过程步骤如下:i.初始化DEWp=0;前向擦写距离的初始值为0sectorNo=i;扇区编号Rsumps=Rcs(i,N);编号小于和等于i的所有扇区的剩余空间之和;ii.如果sectorNo>=0并且Rsumps<N,转至步骤iii;否则转至步骤iv;iii.sectorNo=sectorNo-1DEWp=DEWp+1Rsumps=Rsumps+Rcs(sectorNo,N-Rsumps)转至步骤ii;iv.如果Rsumps<N,那么DEWp=-1;b.向i号扇区写入长度为N的数据时,后向擦写距离DEWn的计算过程步骤如下:i.初始化DEWn=0;后向擦写距离的初始值为0sectorNo=i;扇区编号Rsumns=Rcs(i,N);编号大于和等于i的所有扇区的剩余空间之和;ii.如果sectorNo<SectorCount并且Rsumns<N,转至步骤iii;否则转至步骤iv;iii.sectorNo=sectorNo+1DEWn=DEWn+1转至步骤ii;c.如果Rsumns<N,那么DEWn=-1;4)查找操作该操作首先执行未知长度二分查找算法,然后结合位图Bitmap,判定该数据是否有效,查找操作步骤如下:a.未知长度二分查找,查找操作的执行过程主要分为以下两步:i.使用步长倍增的方式,即第1次查找时,步长为1,即2(1-1);第2次查找时,步长为2,即2(2-1);第3次查找时,步长为4,即2(3-1),以此类推,该方式快速确定一个不小于待查询数据的数据地址,并使next变量指向该地址,而将cur变量指向next前的最后一个小于待查询数据的数据地址,cur初始值为0,next初始值为1;ii.使用标准二分查找,在cur和next-1之间确定待查询数据是否存在;如果查找失败,则直接报错;否则,继续执行;b.查看被成功查找到的数据的下标Iquery所对应的位图是否有效,即需要进一步验证数据的有效性;用以下方式定义下标i的位图查询函数:即位图的第(i/8)个字节的第(i%8)个Bit位为1时,该函数返回True,否则返回False;当该函数返回True时,表明该下标所对应的数据有效,否则返回False表明无效;5)删除操作设待删除的元素对应的下标为Idelete,将位图中第(Idelete/8)个字节的第(Idelete%8)个Bit位置0;6)擦写操作该操作首先决策擦写方向,再在决策方向上执行不同类型的擦写操作;a.擦写方向决策过程i.如果本扇区的剩余空间大于N,则将新数据直接写入本扇区;否则,分别计算(DEWp,Rsumps)和(DEWn,Rsumns);其中(DEWp,Rsumps)表示前向擦写距离(DEWp)内,获得的全部扇区的总剩余空间为Rsumps,(DEWn,Rsumns)表示后向擦写距离(DEWn)内,获得的全部扇区的总剩余空间为Rsumns;ii.如果Rsumps和Rsumns均大于等于N,此时比较(DEWp-1)和DEWn的大小:若前者较小,则将新数据写入本扇区和“编号小于本扇区编号”的扇区;否则,将新数据写入本扇区和“编号大于本扇区编号”的扇区;iii.如果仅Rsumps大于等于N,则将新数据写入本扇区和“编号小于本扇区编号”的扇区;iv.如果仅Rsumns大于等于N,则将新数据写入本扇区和“编号大于本扇区编号”的扇区;v.如果Rsumps和Rsumns均小于N,则报错;b.不同类型的擦写操作i.非跨扇区擦写操作本扇区足以存储长度为N的数据时,仅对本扇区执行擦写操作;ii.前向跨1扇区写操作前向擦写距离(DEWp)等于1时,需要对本扇区执行擦写操作,对本扇区之前的1个扇区执行"追加写(Append)"操作,即将本扇区前部长度为N'=Capacity*(1-LoadFactor)的数据追加到本扇区之前的1个扇区的尾部;ⅲ.跨扇区擦写操作当前向擦写距离(DEWp)大于1或后向擦写距离(DEWn)大于0时,需要执行跨扇区擦写操作;在某扇区被写满之后,该扇区应只保留负载因子LoadFactor规定的百分比的数据,其他数据应转存至其他扇区,接收转存数据的扇区,不再重新计算擦写半径,即应按照原有方向继续转存数据,而不改变数据的转存方向;接收转存数据的扇区被写满之后,也应减少其扇区的数据至负载因子LoadFactor规定的百分比。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东大学,未经山东大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201310015153.9/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top