一种基于未知长度二分查找的闪存数据检索存储的方法

文档序号:6582717阅读:197来源:国知局
专利名称:一种基于未知长度二分查找的闪存数据检索存储的方法
技术领域
本发明涉及一种基于未知长度二分查找的闪存数据检索存储的方法,属于闪存存储技术领域。
背景技术
闪存(Flash Memory)是ー种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,闪存与EEPROM不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA (个人数字助理)、数码相机中保存资料等。闪存由于本身特点,一个扇区在可以存放数据之前,必须先擦除该扇区,然后再在相应位置写入数据,这是因为闪存擦出操作,会将该扇区重置为全1,当写入数据时,数据中的所有为0的数据位会将闪存中对应位置的I置为0,而数据中所有为I的数据位将不会影响扇区中对应的1,即扇区中的数据位,可以被从I置为0,但是不可以被从0置为I (除非执行擦除操作)。郑文静、李明強、舒继武等所写的“Flash存储技木”[见“计算机研究与发展”杂志,2010,47 (4) :716-726] —文中指出,跨扇区存储数据时产生的扇区合并操作,由于涉及数据复制、扇区擦除等耗时耗能操作,还会降低可靠性,已经被认为是闪存存储系统设计时的瓶颈。同时,针对其他存储介质(如磁盘等)设计的B树和B+树等数据结构,在闪存介质中性能急剧下降,如何针对闪存介质设计高性能的数据结构或数据检索方法,也是亟待解决的问题。现有方法在闪存介质检索存储数据时检索效率与存储效率不能兼顾。删除数据时,现有方法,查找该数据所在的扇区,将该扇区中除该数据以外的数据读出,擦除该扇区,将读出的结果写会该扇区,操作复杂低效,内存消耗大。擦写数据时,现有方法,ー种方式是以追加方式存储新数据,另ー种方式是将某个扇区的已有数据与新数据排序,再擦除该扇区,再将排序结果写入该扇区。前者的存储速度快,但是检索速度慢;后者的存储速度慢,但是检索速度快。查询数据时,现有方法,对于以追加方式存储新数据而言,只能顺序查找,复杂度为线性增长,复杂度高;对于以排序方式存储新数据而言,可以使用二分查找,复杂度为对数增长,复杂度低。跨扇区存储数据时,如果某扇区已满,现有方法,对于以追加方式存储新数据而言,可以随机找ー个未满的扇区,存放新数据,效率高;对于以排序方式存储新数据而言,为将新数据存储到正确位置,需要擦除并重新写入该扇区之后全部已存储数据扇区的数据,效率极其低下。

发明内容
针对现有技术的不足,本发明提出了一种基于未知长度二分查找的闪存数据检索存储的方法,它是ー种基于位图和未知长度二分查找的闪存介质存储检索易变数据的高效方法,以解决现有闪存介质存储检索易变数据时存储效率与检索效率不能兼顾的问题。本发明使用位图,标示数据的有效性,进而实现高效的删除操作;使用负载因子,决定各扇区的负载百分比,进而解决以排序方式存储数据导致的存储速度慢的问题;使用未知长度ニ分查找,解决对未知长度的有序序列中的高效数据检索;使用擦写距离,解决跨扇区存储数据时,由于某扇区满而导致的极低效的数据移动问题。本发明的技术方案如下一种基于未知长度二分查找的闪存数据检索存储的方法,是利用单片机控制系统实现的,该系统包括单片机、闪存存储芯片、查询生成器、报警器、上位机,上位机通过 RS-485连接单片机,单片机通过SPI连接闪存存储芯片,单片机通过SPI或RS-232连接查询生成器,单片机通过三极管放大器和继电器连接报警器;查询生成器用于向单片机输入待查询的数据,当待查询数据在闪存存储芯片中不存在时,报警器报警,上位机将变更的数据发送至单片机,单片机负责将数据变更反映到闪存存储芯片中;该方法分作6步,前3步提供设定及计算得到的基本參数,后3步分别进行不同的操作以实现3组不同的功能,该方法具体步骤如下I)各扇区的容量为Capacity,负载因子为LoadFactor,扇区数量为SectorCount,扇区从0开始编号;2)向编号为i的已存储SizeStorecKi)大小数据的扇区,存入长度为N的数据时,
该扇区提供的剰余空间
权利要求
1. 一种基于未知长度二分查找的闪存数据检索存储的方法,是利用单片机控制系统实现的,该系统包括单片机、闪存存储芯片、查询生成器、报警器、上位机,上位机通过RS-485 连接单片机,单片机通过SPI连接闪存存储芯片,单片机通过SPI或RS-232连接查询生成器,单片机通过三极管放大器和继电器连接报警器;查询生成器用于向单片机输入待查询的数据,当待查询数据在闪存存储芯片中不存在时,报警器报警,上位机将变更的数据发送至单片机,单片机负责将数据变更反映到闪存存储芯片中;该方法分作6步,前3步提供设定及计算得到的基本参数,后3步分别进行不同的操作以实现3组不同的功能,该方法具体步骤如下1)各扇区的容量为Capacity,负载因子为LoadFactor,扇区数量为SectorCount,扇区从O开始编号;2)向编号为i的已存储SizeStorecKi)大小数据的扇区,存入长度为N的数据时,该I Capacity-SizeStored(i),N+SizeStored( i KCapacity扇区提供的剩余空间为L(i,N)=也就是[Capacity^LoadFactor-SizeSroredii), Iliili说,编号为i的扇区在已存储SizeStorecKi)大小的数据后,仍有剩余空间继续存储大小为 N的数据时,该扇区提供的剩余空间为扇区容量减去扇区中已存储的数据大小;其他情况下,该扇区提供的剩余空间为“负载因子限制下”的扇区容量即CapaCity*L0adFaCt0r减去扇区中已存储的数据大小;另外,允许LIN)的结果为负,当KIN)的结果为负时表示该扇区需要额外空间存储数据;3)擦写距离分为前向擦写距离DEWp和后向擦写距离DEWn两种,有效的擦写距离为非负整数,擦写距离的计算过程步骤如下a.向i号扇区写入长度为N的数据时,前向擦写距离DEWp的计算过程步骤如下1.初始化DEffp=O ;前向擦写距离的初始值为O sectorNo=i ;扇区编号Rsumps=Rcs (i) N);编号小于和等于i的所有扇区的剩余空间之和;i1.如果sectorNo>=0并且Rsumps〈N,转至步骤iii;否则转至步骤iv ;ii1.sectorNo=sectorNo-l DEffp=DEffp+IRSUmpS=RSUmpS+RcS (sectorNo, N-Rsumps)转至步骤ii ;iv.如果Rsumps〈N,那么 DEWp=-1 ;b.向i号扇区写入长度为N的数据时,后向擦写距离DEWn的计算过程步骤如下1.初始化DEffn=O ;后向擦写距离的初始值为O sectorNo=i ;扇区编号Rsumns=Rcs ( ) N);编号大于和等于i的所有扇区的剩余空间之和;i1.如果sectorNo〈SectorCount并且RS_S〈N,转至步骤iii;否则转至步骤iv ;ii1.sectorNo=sectorNo+lDEffn=DEffn+I转至步骤ii ;c.如果 Rsumns〈N,那么 DEWn=-1 ;4)查找操作该操作首先执行未知长度二分查找算法,然后结合位图Bitmap,判定该数据是否有效, 查找操作步骤如下a.未知长度 二分查找,查找操作的执行过程主要分为以下两步1.使用步长倍增的方式,即第I次查找时,步长为1,即2(1-1);第2次查找时,步长为2, 即2(2-1);第3次查找时,步长为4,即2(h),以此类推,该方式快速确定一个不小于待查询数据的数据地址,并使next变量指向该地址,而将cur变量指向next前的最后一个小于待查询数据的数据地址,cur初始值为O,next初始值为I ;i1.使用标准二分查找,在cur和next-Ι之间确定待查询数据是否存在;如果查找失败,则直接报错;否则,继续执行;b.查看被成功查找到的数据的下标Iquwy所对应的位图是否有效,即需要进一步验证数据的有效性;用以下方式定义下标i的位图查询函数
全文摘要
一种基于未知长度二分查找的闪存数据检索存储的方法,属于闪存存储技术领域。本发明结合未知长度二分查找、位图、负载因子、擦写距离等算法和思想,用未知长度二分查找代替全地址空间(扇区的全部地址)的二分查找,用位图代替实际删除,用负载因子和擦写距离代替全地址空间存储,本发明检索存储的方法提高了对闪存介质的查询、删除、擦写等基本操作的性能,同时,还具有可扩展性强、资源占用少等优点,易于在嵌入式系统或无操作系统的单片机中实现。
文档编号G06F12/02GK103020323SQ20131001515
公开日2013年4月3日 申请日期2013年1月15日 优先权日2013年1月15日
发明者王洪君, 李绍林, 曹敏, 王琰, 王惠, 王光雷 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1