一种NANDFlash存储器的动态管理方法

文档序号:6612938阅读:230来源:国知局
专利名称:一种NAND Flash存储器的动态管理方法
技术领域
本发明涉及闪存存储器的技术领域,具体涉及到NAND Flash存 储器的管理方法
背景技术
NAND Flash作为一种存储介质应用广泛,但由于它的擦写次数 有限会导致使用寿命降低,所以使用时必须在软件上采用各种擦写管 理算法来延长器件的使用寿命。
NAND Flash在应用中主要采用文件系统进行管理。通常文件系 统中NAND Flash的管理方式是在初始化时建立逻辑映射表,即扫描 所有物理块并排除坏块,对每一个空物理块分配一个逻辑编号并标注 到冗余区,或者读出已分配的逻辑编号到逻辑映射表,这样建立的逻 辑映射表是静态的,每个物理块都存在一个逻辑编号,而且在系统运 行过程中很少变动(除非该块损坏),文件分配表(FAT)和根目录 项写入的是固定的物理扇区。该方式存在的主要问题有①逻辑映射 表是静态的,每次更新数据都需要修改文件分配表所在的块,导致文 件分配表所在块不断被擦写,会在较短的时间内造成该物理块损坏; ②按照文件分配表来分配存储单元,对块的使用频率无法规划,文件 系统中前后物理块使用频率差别大,磨损不均衡,降低了 NAND Flash 的使用寿命。
现在的解决方法主要是在NAND Flash读写操作中引入存储单
元擦写控制算法,尽量均衡各单元的擦写频率,避免因擦写频率分布 不均造成的物理损坏。但现有的算法存在软件效率低,软硬件开销大 的问题。

发明内容
为了克服已有NAND Flash存储器的管理方法的软件效率低、对 物理块的使用频率无法规划、使用寿命低的不足,本发明提供一种软 件综合效率高、实现物理块的均衡使用、延长存储器的使用寿命的 NAND Flash存储器的动态管理方法。
本发明解决其技术问题所采用的技术方案是 一种NAND Flash存储器的动态管理方法,包括以下步骤
1) 、初始化时检测NAND Flash存储器,排除所有的坏块;
2) 、初始化时建立空逻辑映射表,扫描NAND Flash存储器,将已经存在 逻辑编号的物理块号添加到逻辑映射表的对应表项中,其余逻辑映射表表 项保持空;
3) 、初始化时建立空物理块表和表指针,扫描NAND Flash存储器,将没 有逻辑编号的物理块的块号添加到空物理块表中;
4) 、初始化时建立垃圾块表和表指针,扫描NAND Flash存储器,将标记 为无效的物理块的块号添加到垃圾块表中;
5) 、写空逻辑块时,从空物理块表中取一个空物理块添加到逻辑块表项中, 再将数据写到新物理块中;
6) 、修改逻辑块数据时,读逻辑块对应的物理块数据到缓存做修改,然后 从空物理块表中取一个空物理块添加到同一个逻辑块表项中,再将缓存数 据写到新物理块中,旧物理块标记为无效放到垃圾块表中。
作为优选的一种方案所述动态管理方法还包括以下步骤 7)、采用冗余区的用户字节的特殊定义判别脏数据,即定义数据记录起始 和结束标记,根据两个标记是否成对出现作出判断;脏数据标记成无效而 被回收。
作为优选的另一种方案定时或空闲时间回收垃圾块,回收时直接从 垃圾块表中取无效物理块,然后擦除块;同时更新空物理块表,每回收一 个垃圾块,在空物理块表增加一个空物理块。
进一步,如果垃圾块数量不是0,则垃圾块表指针指向垃圾块表中的 第一个垃圾块;空物理块表指针指向空物理块表中的第一个空物理块。
再进一步,始终保持一定数量的空物理块作为备份,以保证空物理块 表不空,逻辑映射表能保持滚动。
本发明的技术构思为通过设置空物理块表和垃圾块表,采用査 表的方法解决动态滚动过程中的速度问题并实现垃圾块的回收。
本发明的算法是在初始化时建立一个空逻辑映射表,然后扫描器 件读取每个物理块的逻辑编号,此时有两种情况
① 对于空白NAND Flash,即第一次对该闪存操作,所有物理块 都没有逻辑号,读到的逻辑号均为空,则暂不对物理块分配逻辑号, 逻辑映射表保持空。
② 对于已经使用的NAND Flash,读取每个物理块的逻辑编号, 将有逻辑编号的块添加到逻辑映射表中,而对空物理块暂时不分配逻 辑号。
对应上述两种情况,系统每操作一个逻辑块,则取一个空物理块 对其分配逻辑号,添加到逻辑映射表,逻辑映射表随着系统的运行逐
渐填充。在修改逻辑块数据时废弃且回收旧的物理块,寻找一个新的 物理块再回写。本发明在使用中按机会均等的原则寻找空物理块来分 配逻辑号,每次操作都会改变逻辑映射表,这样采用的是一个动态逻 辑映射表,表中的物理块是动态变化的,器件内的空物理块使用几率 相同,从而达到均衡磨损的目的。
本发明的有益效果主要表现在1、软件综合效率高;2、实现物 理块的均衡使用、延长存储器的使用寿命;3、软硬件开销小、能够在 成本、软件效率与使用寿命之间做良好的平衡;4、特别适合在嵌入式 系统中使用。


图1是空物理块表建立流程图2是写空逻辑块流程图3是修改数据及更新垃圾块表流程图4是回收垃圾块及更新空物理块表流程图5是软件总体工作流程图。
具体实施例方式
下面结合附图对本发明作进一步描述。 参照图1 图5, 一种NAND Flash存储器的动态管理方法,包括 以下步骤
1) 、初始化时检测NAND Flash存储器,排除所有的坏块;
2) 、初始化时建立空逻辑映射表,扫描NAND Flash存储器,将已经存在 逻辑编号的物理块号添加到逻辑映射表的对应表项中,其余逻辑映射表表 项保持空;
3) 、初始化时建立空物理块表和表指针,扫描NAND Flash存储器,将没 有逻辑编号的物理块的块号添加到空物理块表中;
4) 、初始化时建立垃圾块表和表指针,扫描NAND Flash存储器,将标记 为无效的物理块的块号添加到垃圾块表中;
5) 、写空逻辑块时,从空物理块表中取一个空物理块添加到逻辑块表项中, 再将数据写到新物理块中;
6) 、修改逻辑块数据时,读逻辑块对应的物理块数据到缓存做修改,然后 从空物理块表中取一个空物理块添加到同一个逻辑块表项中,再将缓存数 据写到新物理块中,旧物理块标记为无效放到垃圾块表中;
7) 、采用冗余区的用户字节的特殊定义判别脏数据,即定义数据记录起始 和结束标记,根据两个标记是否成对出现作出判断;脏数据标记成无效而 被回收。
采用定时或空闲时间回收垃圾块,回收时直接从垃圾块表中取无效物 理块,然后擦除块;同时更新空物理块表,每回收一个垃圾块,在空物理 块表增加一个空物理块。
如果垃圾块数量不是0,则垃圾块表指针指向垃圾块表中的第一个垃 圾块;空物理块表指针指向空物理块表中的第一个空物理块。
始终保持一定数量的空物理块作为备份,以保证空物理块表不空, 逻辑映射表能保持滚动。
本实施例的具体工作过程为
1.定义冗余字节如表l,字节2作START标记,在NAND Flash
中每次写一页数据的起始时刻记录,字节3作END标记,结束时刻 记录,这样可以核对记录数据的完整性,判别掉电产生的脏数据;字
节4作INVALID标记,写入失败或该块数据废弃则做记录成为垃圾 块,等回收擦除后成为空数据块;字节5标记损坏的块;字节6、 7 存放块的逻辑编号。表l中字节0 3是自定义字节,其余字节按标准 定义。
表1是冗余区字节定义表:
字节数值功能说明
编号
0 1xxxx数据记录时间标记每一个块数据的写 入时间
2OxFO数据记录起始标记 (START)用于脏数据的处理
3OxOF数据记录结束标记 (END)用于脏数据的处理
40数据无效标记 (INVALID)标准定义
非OxFF坏块标记(BAD)标准定义
6 7块的逻辑编号1标准定义
8 10后256字节ECC校 验和标准定义
11 12块的逻辑编号2标准定义
13 15前256字节ECC校 验和标准定义
表l
2.定义表和参数
(1) 定义逻辑映射表,初始值等于空(OxFFFF);
(2) 定义空物理块表,表中存放空物理块的块号,初始值等于空 (OxFFFF);
(3) 定义垃圾块表,表中存放垃圾块的块号,初始值等于空 (OxFFFF);(4) 定义空物理块数量,初始值等于0;
(5) 定义垃圾块数量,初始值等于0;
(6) 定义空物理块表指针,初始位置指向空物理块表的第一个表
项;
(7) 定义垃圾块表指针,初始位置指向垃圾块表的第一个表项;
(8) 定义物理块号指针,初始位置指向NAND Flash的第一个物理
块;
3. 建立逻辑映射表初始化时扫描NAND Flash,排除坏块、垃 圾块及脏数据块后,读取每个物理块的逻辑编号,将有逻辑编号的块 添加到逻辑映射表中,而对空物理块暂时不分配逻辑号。
4. 建立空物理块表初始化时建立空物理块表。如图1,首先读 物理块号指针指向的NAND Flash物理块的冗余字节,排除坏块、垃 圾块及脏数据块后,判断物理块的逻辑编号如果逻辑编号空则找到 一个空物理块,把该块号赋给空物理块表中从空物理块表指针指向的 位置向后计算的第一个空表项,并且空物理块数量增1;如果逻辑编 号非空,则物理块号指针增1指向下一个物理块继续寻找,重复执行 上述过程,直到循环一周完成NAND Flash器件的扫描。
操作完成后空物理块表建立或更新,空物理块表指针指向第一个可 用空物理块,物理块号指针指向下一次扫描位置。
5. 建立垃圾块表初始化时建立垃圾块表,该过程可以和空物理 块表的建立合并在一起实施。排除坏块后,首先读物理块号指针指向 的NAND Flash物理块的冗余字节4,如果是INVALID标记,则找到 一个垃圾块,把该块号赋给垃圾块表中从垃圾块表指针指向的位置向 后计算的第一个空表项,并且垃圾块数量增1;如果物理块非INVALID
块,则物理块号指针增1指向下一个物理块继续寻找,重复执行上述
过程,直到循环一周完成NAND Flash器件的扫描。
6. 写空逻辑块的操作如图2,对逻辑块执行写操作时,如果该 逻辑块在逻辑映射表中的表项空,则直接到空物理块表中将空物理块 表指针指向的空物理块号取出写到要操作的逻辑映射表的表项中,空 物理表的表项写成空标记,同时空物理块表指针增1,指向下一个位 置,空物理块数量减1,然后将逻辑块号标记到刚找到的空物理块的 冗余区,之后写该物理块,结束操作过程;如果逻辑块执行写操作时 该逻辑块在逻辑映射表中的表项非空,则相当于修改一个逻辑块,则 进入第7步——修改数据及更新垃圾块表。
7. 修改数据及更新垃圾块表如图3,对逻辑块的数据进行修改 时先将该逻辑块对应的物理块中所有的数据读到缓存区,修改完缓存 区的数据后,执行图2的过程找一个空物理块,将缓存区数据回写到 新找到的空物理块中,然后将旧的物理块标注为无效,并将该块号加 入垃圾块表的垃圾块起始指针指向的位置向后计算的第一个空表项, 垃圾块数量加1。该步骤在数据修改的同时完成垃圾块表的填充。
8. 回收垃圾块及更新空物理块表垃圾回收时直接对垃圾块表操 作,每回收一个无效块空物理块表中相应增加一个空块。如图4,首 先判断垃圾块表中垃圾块的数量,如果是0则没有垃圾块,结束;如
果垃圾块数量不是o,则在垃圾块表中从垃圾块表指针指向的表项位 置读取一个无效物理块编号,并将该表项写成空0xFFFF,然后擦除无 效的物理块,下一歩将该物理块号添加到空物理块表中从空物理块表 指针指向的位置向后计算的第一个空表项,并且空物理块数量增1, 而垃圾块起始指针加l,指向下一位置,同时垃圾块数量减l。重复执为0,回收结束。
9.脏数据的判别NANDFlash在嵌入式设备中使用时由于突然掉 电等原因将丢失数据,产生脏数据块。本算法能够判别脏数据并做相 应的处理。
脏数据的判别利用冗余区字节2和3实现。按照表1的定义,字节 2是数据记录起始标记,在开始向某一页连续写数据时,先将字节2 标记为START,然后再开始一页数据的写入,并完成ECC的校验和 标注,最后再将冗余区字节3标记为END,表示完成操作。如果在写 页数据的过程中,由于某种原因引起系统操作停止,冗余区字节3将 没有记录结束标记,此时的数据将被认为是脏数据。所以在软件中只 要读取冗余字节2和3的值,就可以实现脏数据的判别。判别并处理 之后可以将该块标注为INVALID而被回收。
脏数据的产生可能引起文件格式损坏,本算法由于先写后擦,根据 标记的时间可以简单判断并恢复旧的数据,避免该问题。
权利要求
1、一种NAND Flash存储器的动态管理方法,其特征在于所述动态管理方法包括以下步骤1)、初始化时检测NAND Flash存储器,排除所有的坏块;2)、初始化时建立空逻辑映射表,扫描NAND Flash存储器,将已经存在逻辑编号的物理块号添加到逻辑映射表的对应表项中,其余逻辑映射表表项保持空;3)、初始化时建立空物理块表和表指针,扫描NAND Flash存储器,将没有逻辑编号的物理块的块号添加到空物理块表中;4)、初始化时建立垃圾块表和表指针,扫描NAND Flash存储器,将标记为无效的物理块的块号添加到垃圾块表中;5)、写空逻辑块时,从空物理块表中取一个空物理块添加到逻辑块表项中,再将数据写到新物理块中;6)、修改逻辑块数据时,读逻辑块对应的物理块数据到缓存做修改,然后从空物理块表中取一个空物理块添加到同一个逻辑块表项中,再将缓存数据写到新物理块中,旧物理块标记为无效放到垃圾块表中。
2、 如权利要求1所述的一种NAND Flash存储器的动态管理方法,其特征 在于所述动态管理方法还包括以下步骤7) 、采用冗余区的用户字节的特殊定义判别脏数据,即定义数据记录起始 和结束标记,根据两个标记是否成对出现作出判断;脏数据标记成无效而 被回收。
3、 如权利要求1或2所述的一种NAND Flash存储器的动态管理方法,其 特征在于定时或空闲时间回收垃圾块,回收时直接从垃圾块表中取无效物理块,然后擦除块;同时更新空物理块表,每回收一个垃圾块, 在空物理块表增加一个空物理块。
4、 如权利要求3所述的一种NAND Flash存储器的动态管理方法,其特 征在于如果垃圾块数量不是0,则垃圾块表指针指向垃圾块表中的第一 个垃圾块;空物理块表指针指向空物理块表中的第一个空物理块。
5、 如权利要求1或2所述的一种NAND Flash存储器的动态管理方法,其 特征在于保持备份空物理块。
6、 如权利要求3所述的一种NAND Flash存储器的动态管理方法,其特 征在于保持备份空物理块。
全文摘要
一种对NAND Flash存储器的动态管理方法,建立动态逻辑映射表,该表中没有使用的逻辑块暂时不分配物理块,使用时再通过算法按机会均等原则滚动寻找空物理块,通过该表的动态滚动均衡NANDFlash中物理块的使用频率,每操作一个逻辑块,则取一个空物理块对其分配逻辑号,添加到逻辑映射表再操作,逻辑映射表随着系统的运行逐渐填充,在修改逻辑块数据时废弃且回收旧的物理块,寻找一个新的物理块再回写;对每页冗余区的用户字节进行特殊定义,判别脏数据只需比较其字节值。本发明软件效率高、实现物理块的均衡使用、延长NAND Flash存储器的使用寿命。
文档编号G06F12/06GK101178689SQ20071016455
公开日2008年5月14日 申请日期2007年12月6日 优先权日2007年12月6日
发明者王建芬, 王新华 申请人:浙江科技学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1