一种基于NOR Flash的存储管理方法技术

技术编号:10135666 阅读:203 留言:0更新日期:2014-06-16 15:03
本发明专利技术采用节点数据结构列表来管理NOR Flash上的数据碎片,把有效的数据节点按照地址偏移的顺序进行链接,每次写入或更新数据,只需新建一个节点,并把原有重复的数据节点重新标记就可以了,其逻辑写操作把复杂的擦除写回动作简化为直接写的动作,把复杂的擦除过程放到后面的垃圾回收流程里,大大简化了流程,提升了性能,也避免了在数据写回时发生断电而导致的数据丢失。本发明专利技术提供了一种NOR Flash储存介质直接读写访问的接口,无需考虑NOR Flash页的边界和擦除,自动处理访问地址位宽和边界对齐,并且均衡NOR Flash写入寿命。

【技术实现步骤摘要】
【专利摘要】本专利技术采用节点数据结构列表来管理NOR?Flash上的数据碎片,把有效的数据节点按照地址偏移的顺序进行链接,每次写入或更新数据,只需新建一个节点,并把原有重复的数据节点重新标记就可以了,其逻辑写操作把复杂的擦除写回动作简化为直接写的动作,把复杂的擦除过程放到后面的垃圾回收流程里,大大简化了流程,提升了性能,也避免了在数据写回时发生断电而导致的数据丢失。本专利技术提供了一种NOR?Flash储存介质直接读写访问的接口,无需考虑NOR?Flash页的边界和擦除,自动处理访问地址位宽和边界对齐,并且均衡NOR?Flash写入寿命。【专利说明】—种基于NOR Flash的存储管理方法
本专利技术涉及,适用于各种嵌入式软件开发,属于非易失性存储介质访问管理的

技术介绍
Intel于1988年首先开发出NOR Flash技术,彻底改变了原先由EPROM和EEPROM作为主要存储介质的格局。对于嵌入式系统而言,NOR Flash是一种很常见的存储设备,它的特点是芯片内执行,这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR Flash的传输效率很高,在I?4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。flash闪存是非易失存储器,可以对称为块(英文名称为block)的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的存储器单元块内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。对于NOR Flash来说,块的大小通常都比较大,比如IKB?32KB,而执行擦除的最小单位就是块,这就导致即使只要改变一个字节,也必须将整个块擦除,再把修改后整个块的数据重新写回,反复的擦除和写入直接影响了性能和NOR Flash的寿命,使得NOR Flash作为高密度存储介质的同时,留下一些不易使用的遗憾。
技术实现思路
本专利技术要解决的技术问题是提升NOR Flash的读写性能。为了解决上述技术问题,本专利技术的技术方案是提供了,其特征在于,步骤为:第一步、将NOR Flash的块划分为至少8等分,划分后的每个区域为一个单元,定义节点的数据结构、USE_FREE数据列表及DIRTY_CLEAN数据列表,其中:节点的数据结构至少包括节点头、节点长度、偏移地址、数据长度及当前节点被正确存储后赋值在数据结构最末的节点尾标识符;USE_FREE数据列表中每一位对应不同的单元,对每一位赋予不同的值表示所对应的单元是否被写过;DIRTY_CLEAN数据列表中每一位对应不同的单元,对每一位赋予不同的值表示所对应的单元是否被破坏;第二步、初始化:步骤2.1、自NOR Flash的起始物理地址开始,逐个扫描NOR Flash的存储空间内的每个单元;步骤2.2、若当前单元存储的数据与节点头匹配,则表示当前单元被写过,为USE_FREE数据列表中与当前单元对应的位赋予表示被写过的值,随后以节点长度为步长,将下一个位置存储的数据与节点尾标识符匹配,若与节点尾标识符匹配,则为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示未被破坏的值,当前节点为有效节点,若与节点尾标识符不匹配,则为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示被破坏的值;若当前单元存储的数据与节点头不匹配,则表示当前单元未被写过,为USE_FREE数据列表中与当前单元对应的位赋予表示未被写过的值;步骤2.3、以单元长度为步长跳转至下一个单元后重新执行步骤2.2,直至扫描完NOR Flash存储空间内的所有单元;步骤2.4、将所有有效节点链接起来形成DataNode数据列表,并得到初始化后的USE_FREE数据列表及DIRTY_CLEAN数据列表;第三步、对NOR Flash进行逻辑读操作或逻辑写操作,其中,进行逻辑读的步骤为:将给出的所要读的偏移地址及数据长度与DataNode数据列表中每个有效节点的偏移地址及数据长度匹配,若落在当前节点里,则根据当前节点对应的物理地址计算出数据存储的物理地址,利用Nor Flash快速读的特性,直接读取数据;若均不匹配,则直接返回空数据;进行逻辑写的步骤为:步骤3.1、根据待写入的数据的长度从USE_FREE数据列表中找到满足写入长度的单元,新建一个节点后连同待写入的数据一起写入到Nor Flash的物理地址上;步骤3.2、将给出的所要读的偏移地址及数据长度与DataNode数据列表中每个有效节点的偏移地址及数据长度匹配,若落在当前节点里,为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示被破坏的值;若均不匹配,则将新写入的节点链接至DataNode数据列表。优选地,还包括在系统空闲时或当DIRTY_CLEAN数据列表中赋值为被破坏的值的位达到一定数量后进行垃圾回收,其步骤为:若在DIRTY_CLEAN数据列表中具有连续的赋值为表示被破坏的值的位,所有位所对应的单元容量的总和为块的N倍,N为不大于I的整数,则直接把所有这些单元所对应的块擦除,擦除后将DIRTY_CLEAN数据列表中相应的位赋值为表示未被破坏的值;否则,找到具有最多在DIRTY_CLEAN数据列表被赋值为表示被破坏的值的单元的块,将该块中在DIRTY_CLEAN数据列表被赋值为表示未被破坏的值的单元的数据拷贝到在USE_FREE数据列表中被赋值为表示未被写过的值的单元内,再对该块进行擦除,擦除后将DIRTY_CLEAN数据列表中相应的位赋值为表不未被破坏的值。优选地,在所述第一步中,节点的数据结构还包括节点版本号,节点版本号越大表示对应的节点越新;在进行第三步所述逻辑读操作或逻辑写操作时,若发生节点数据重叠,则具有更高节点版本号的节点所包含的数据是有效的;在所述步骤3.1中,新建一个节点时,将当前节点的节点版本号赋值为DataNode数据列表中当前最大的节点版本号加I。优选地,通过选择最低节点版本号来实现NOR Flash块的平均选择,其步骤为:设定一个临界版本距离,当某节点的节点版本号超过这个临界版本距离,则强制进行数据的迁移拷贝。优选地,所述第一步中,节点的数据结构还包括节点类型及节点号。优选地,在进行步骤3.1中从USE_FREE数据列表中找到满足写入长度的单元时,产生一个随机数,结合该随机数来选择单元。本专利技术采用节点数据结构列表来管理NOR Flash上的数据碎片,把有效的数据节点按照地址偏移的顺序进行链接,每次写入或更新数据,只需新建一个节点,并把原有重复的数据节点重新标记就可以了,其逻辑写操作把复杂的擦除写回动作简化为直接写的动作,把复杂的擦除过程放到后面的垃圾回收流程里,大大简化了流程,提升了性能,也避免了在数据写回时发生断电而导致的数据丢失。本专利技术提供了一种NOR Flash储存介质直接读写访问的接口,无需考虑NOR Flash页的边界和擦除,自动处理访问地址位宽和边界对齐,并且均衡NOR Flash写入寿命。【专利附图】【附图说明】图1为节点初始化流程图;图2为逻辑读流程图;图3为逻辑写流程图。【具体实施方式】为使本专利技术更明显易懂,兹以优选实施例,并配合附图作详细说明如下。NOR Flash读写具有它的特殊性:(本文档来自技高网
...

【技术保护点】
一种基于NOR Flash的存储管理方法,其特征在于,步骤为:第一步、将NOR Flash的块划分为至少8等分,划分后的每个区域为一个单元,定义节点的数据结构、USE_FREE数据列表及DIRTY_CLEAN数据列表,其中:节点的数据结构至少包括节点头、节点长度、偏移地址、数据长度及当前节点被正确存储后赋值在数据结构最末的节点尾标识符;USE_FREE数据列表中每一位对应不同的单元,对每一位赋予不同的值表示所对应的单元是否被写过;DIRTY_CLEAN数据列表中每一位对应不同的单元,对每一位赋予不同的值表示所对应的单元是否被破坏;第二步、初始化:步骤2.1、自NOR Flash的起始物理地址开始,逐个扫描NOR Flash的存储空间内的每个单元;步骤2.2、若当前单元存储的数据与节点头匹配,则表示当前单元被写过,为USE_FREE数据列表中与当前单元对应的位赋予表示被写过的值,随后以节点长度为步长,将下一个位置存储的数据与节点尾标识符匹配,若与节点尾标识符匹配,则为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示未被破坏的值,当前节点为有效节点,若与节点尾标识符不匹配,则为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示被破坏的值;若当前单元存储的数据与节点头不匹配,则表示当前单元未被写过,为USE_FREE数据列表中与当前单元对应的位赋予表示未被写过的值;步骤2.3、以单元长度为步长跳转至下一个单元后重新执行步骤2.2,直至扫描完NOR Flash存储空间内的所有单元;步骤2.4、将所有有效节点链接起来形成DataNode数据列表,并得到初始化后的USE_FREE数据列表及DIRTY_CLEAN数据列表;第三步、对NOR Flash进行逻辑读操作或逻辑写操作,其中,进行逻辑读的步骤为:将给出的所要读的偏移地址及数据长度与DataNode数据列表中每个有效节点的偏移地址及数据长度匹配,若落在当前节点里,则根据当前节点对应的物理地址计算出数据存储的物理地址,利用Nor Flash快速读的特性,直接读取数据;若均不匹配,则直接返回空数据;进行逻辑写的步骤为:步骤3.1、根据待写入的数据的长度从USE_FREE数据列表中找到满足写入长度的单元,新建一个节点后连同待写入的数据一起写入到Nor Flash的物理地址上;步骤3.2、将给出的所要读的偏移地址及数据长度与DataNode数据列表中每个有效节点的偏移地址及数据长度匹配,若落在当前节点里,为DIRTY_CLEAN数据列表中与当前单元对应的位赋予表示被破坏的值;若均不匹配,则将新写入的节点链接至DataNode数据列表。...

【技术特征摘要】

【专利技术属性】
技术研发人员:朱华周俊靳聪
申请(专利权)人:北京国芯威电子科技股份有限公司上海分公司
类型:发明
国别省市:上海;31

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1