基于nand闪存文件系统中静态数据损耗均衡的方法

文档序号:6466889阅读:187来源:国知局
专利名称:基于nand闪存文件系统中静态数据损耗均衡的方法
技术领域
本发明涉及使用嵌入式文件系统的各个嵌入式产品,特别是涉及一种基于 NAND闪存文件系统中静态数据损耗均衡的方法。
背景技术
由于嵌入式设备体积小,所以不能使用硬盘作为存储器,而闪存凭借其存 取速度快、存储容量大、价格低廉等优点,成为了嵌入式系统中广泛采用的主 流存储器。闪存按照存储矩阵结构的不同分为NOR型和NAND型两种。NAND (一种目前主要的非易失闪存技术,适用于大容量消除和写入的速度快,但只能 读取块单位,随机读取慢)型闪存强调降低每比特的成本,更高的性能,并且 像磁盘一样可以通过接口轻松升级,是高密度数据存储的理想解决方案,被大 量应用于移动存储设备、移动媒体设备和嵌入式设备中。闪存的寿命是有限的, 其寿命的长短是由擦写块的最大可擦除次数决定的,NAND闪存的最大可擦除 次数大约为100万次左右。由于任何一个擦写块达到擦除次数的上限时,整个 闪存都将无法使用。所以为了延长闪存的使用寿命,避免由于某个擦写块被过 度擦写而使得整个闪存无法使用,应该在尽量小的性能影响下使擦写操作均匀 的分布在每个擦写块上。这个过程就叫做损耗均衡。
目前可用于NAND型闪存的文件系统包括集中索引的文件系统和专门为 NAND闪存设计的文件系统。集中索引的文件系统是磁盘存储器中常用的文件 系统,主要包括基于Windows的FAT系列和基于Linux的Ext系列。由于闪存 设备能够通过闪存转译层FTL (Flash Translation Layer)驱动来模拟成与磁盘相 似的块设备,所以该类文件系统可以直接基于FTL在闪存上应用。在闪存中采 用集中索引的文件系统存在下面的两个问题:①集中索引的文件系统采用"覆写" 的方式更新数据,而在闪存中"覆写"需要先擦除才能写入,如果在数据被擦除后 系统发生断电,可能会导致数据的丢失;②集中索引的文件系统索引与数据分 开存放,而索引的更新频率远远大于数据部分的更新频率,所以不能很好的实 现损耗均衡。
基于上面的两个问题,所以针对NAND闪存设计了专门的文件系统YAFFS (Yet Another Flash File-System)。到目前为止,YAFFS系列是唯一专门针对 NAND闪存而设计的文件系统。YAFFS系列有YAFFS和YAFFS2两个版本。 为了解决集中索引文件系统中的问题①,YAFFS中采用了日志的概念,不再采 用"覆写"的更新方式,而是采用"前向写入"的方式。针对问题②,YAFFS采用 一种多策略混合的算法来进行垃圾回收,将贪心策略和随机选择策略分别用在 不同的情况下。这种算法的优点是对更新频繁的数据能够很好的实现了损耗均 衡;缺点是没有考虑占用大部分存储空间的静态数据的损耗均衡。所以,YAFFS 不能实现整个闪存器件的损耗均衡。
因此,如果能实现嵌入式文件系统中静态数据的损耗均衡算法,对于延长 闪存的使用寿命是很有意义的。

发明内容
本发明的目的在于提供一种基于NAND闪存文件系统中静态数据损耗均衡 的方法。
本发明解决其技术问题采用的技术方案如下
1) 将整个的NAND闪存的擦除块分为空闲块、干净块、脏块、坏块四种; 空闲块表示擦除块上面所有的页面都是空闲的,可直接进行分配;干净块表示 擦除块上面的所有数据均有效;脏块表示擦除块上至少含有一页由于数据更新 或者文件删除留下的无效数据;坏块包括出厂时的固有坏块和使用过程中产生 的坏块;文件系统以链表的形式管理各种擦除块,形成了四种链表空闲块链 表,干净块链表,脏块链表、坏块链表;空闲块链表按照擦除次数由小到大对 擦除块进行链接;
2) 设定阈值TH;文件系统在垃圾回收操作被触发时,读取干净块链表中所 有擦除块的附加区字段中的擦除次数字段EraSe_Nmn,从中找出擦除次数最大 的擦除块和擦除次数最小的擦除块;然后将擦除次数最大的擦除块和擦除次数 最小的擦除块做差,如果差值2TH,便断定擦除次数最小的擦除块上存储的是静 态数据,静态数据更新的频率非常低,需要对静态数据进行搬移操作;
3) 将擦除次数最大的块记为A,擦除次数最小的块记为B;从空闲块链表中 选取一块,将A擦除块上的数据复制到空闲块上;然后对A擦除块进行擦除操 作,然后将B擦除块上面的数据复制到A擦除块上面;然后将B擦除块放到脏 块链表中,对B擦除块进行擦除后用于存放更新频繁数据。
本发明与背景技术相比,具有的有益的效果是-
本发明是一种用于实现基于NAND闪存的文件系统中静态数据的损耗均衡 方法。它通过设定阈值,识别静态数据块,然后对识别出的静态数据块和擦除 次数较大的数据块进行搬移操作。即先从空闲块中找出擦除次数最大的擦除块,
将静态数据从原来的擦除块移动到该块上,并对原来的擦除块进行擦除然后将 其插入到空闲块中用来存储动态数据。这样便可以平衡静态数据块与动态数据 块的擦除次数,从而取得整个闪存器件的损耗均衡。


图1是实验得到的加入静态数据损耗均衡方法的状态图。
图2是实验得到的未加入静态数据损耗均衡方法的状态图。 图3是两者的均衡方法的比较图。图中线A代表未加入静态数据损耗均衡 方法的状态,线B代表加入静态数据损耗均衡方法的状态。
具体实施例方式
下面结合附图和实施例对本发明作进一步说明。
本发明提出的用于实现基于NAND闪存文件系统中静态数据损耗均衡的方 法应用于使用嵌入式文件系统的嵌入式产品中。本方法的使用是以Blackfm531 为系统目标板,采用的嵌入式操作系统是uClinux,步骤进行如下
一、 配置交叉编译环境
1. 获得开发工具安装包;
2. 用root登陆,安装开发工具;
3. 配置超级终端;
4. 编译uClinux内核,加入对包含本方法的文件系统的支持。
(1) 在内核中加入平台编译信息;
(2) 在fs目录下建立一个目录,把本方法所在的文件系统的相关文件拷到目 录中去;
(3) 新建一个Makefile,加入以下命令
(4) 修改fs目录下面Kconfig和Makefile,把本方法所在的文件系统连接进

(5) 加入NAND闪存分区信息;
(6) 编译内核。
二、 搭建目标平台
1、 将Blackfin531目标板的JTAG 口与计算机并口相连,串口、网线与主机
连好;
2、 编译bootloaden
3 、 Visual DSP中通过JTAG将bootloader烧入目标板;
4、通过使用bootloader中的命令将之前编译好的内核镜像下载到目标板。
三、当前文件系统中存放的文件的特点大多数文件是一些小文件,但是 大文件占用了大部分的存储空间。按照这个特点,文件系统中存放占据闪存大
部分空间的只读静态数据文件3个,大小分别为1M、 IOM、 16M;存放300 个小文件,其容量不超过IOK。其中静态数据文件被访问的概率为20%,小文 件被访问的概率为80%。
四、实施方法FMNFS中采用的方法是通过设定阈值,记为TH,识别并搬 移静态数据块和擦除次数较大的数据块,从而取得整个闪存器件的损耗均衡。
对于损耗均衡算法中用到的阈值TH,它的意思是有效数据擦除块中最大擦 除次数与最小擦除次数之间的差值的下限,当差值大于TH时便对静态数据进行 搬移操作。由于静态数据通常都比较大,所以太频繁的进行搬移操作对系统的 效率会产生严重的影响,所以TH不可以过小。通常TH的值被设为200-500
之间的某个值效果比较好。
在垃圾回收操作被触发时,读取干净块链表中所有擦除块的附加区字段中 的擦除次数字段Emse一Num,从中找出擦除次数最多的擦除块和擦除次数最少 的块。然后将两者做差,如果差值^设定的阈值时,便可以断定擦除次数最小 的擦除块上存储的是静态数据,其更新的频率非常低,需要对其进行搬移操作。 同时,由于这些静态数据通常都比较大,其所占用的擦除块的数量也比较多, 而且都是连续的,所以满足"Erase—Nmt^-最小擦除次数"条件的擦除块多于1。 因此,为了更好的实现擦除均衡需要在搬移完一个块后需要再次扫描干净块链 表,找出擦除次数最大的擦除块。其具体的做法可以分为以下几步
(1) 扫描干净块列表,找出擦除次数最大和擦除次数最小的块,擦除次数 分别记为Erase—Max和Erase—Min。同时将他们所在的块分别记为A和B。
(2) 对Erase—Min禾Q Erase—Max ^f故差。如果I Erase—Max — Erase_Min I > TH,说明B擦除块存放的是静态数据,需要对其进行搬移操作;
(3) 从空闲块链表中选取一块,将A擦除块上的数据复制到空闲块上;然 后对A擦除块进行擦除操作,然后将B擦除块上面的数据复制到A擦除块上面; 然后将B擦除块放到脏块链表中,对其进行擦除后用于存放更新频繁数据。 重复(1)、 (2)、 (3)的步骤,直到"I Erase—Max - Erase—Min |》TH"不满足, 即所有的静态数据全部搬移完为止。
然后对NAND闪存的2500个擦除块不断的进行擦除操作,得到如图1所示 的损耗均衡情况。图2显示了未考虑静态数据损耗均衡的状态图,图3是两者 的均衡方法的比较图。
权利要求
1.一种基于NAND闪存文件系统中静态数据损耗均衡的方法,其特征在于该方法的步骤如下1)将整个的NAND闪存的擦除块分为空闲块、干净块、脏块、坏块四种;空闲块表示擦除块上面所有的页面都是空闲的,可直接进行分配;干净块表示擦除块上面的所有数据均有效;脏块表示擦除块上至少含有一页由于数据更新或者文件删除留下的无效数据;坏块包括出厂时的固有坏块和使用过程中产生的坏块;文件系统以链表的形式管理各种擦除块,形成了四种链表空闲块链表,干净块链表,脏块链表、坏块链表;空闲块链表按照擦除次数由小到大对擦除块进行链接;2)设定阈值TH;文件系统在垃圾回收操作被触发时,读取干净块链表中所有擦除块的附加区字段中的擦除次数字段Erase_Num,从中找出擦除次数最大的擦除块和擦除次数最小的擦除块;然后将擦除次数最大的擦除块和擦除次数最小的擦除块做差,如果差值≥TH,便断定擦除次数最小的擦除块上存储的是静态数据,静态数据更新的频率非常低,需要对静态数据进行搬移操作;3)将擦除次数最大的块记为A,擦除次数最小的块记为B;从空闲块链表中选取一块,将A擦除块上的数据复制到空闲块上;然后对A擦除块进行擦除操作,然后将B擦除块上面的数据复制到A擦除块上面;然后将B擦除块放到脏块链表中,对B擦除块进行擦除后用于存放更新频繁数据。
全文摘要
本发明公开了一种基于NAND闪存文件系统中静态数据损耗均衡的方法。将整个的NAND闪存的擦除块分为空闲块、干净块、脏块、坏块四种,形成了四种链表,空闲块链表按照擦除次数由小到大对擦除块进行链接;设定阈值TH;从空闲块链表中选取一块,将擦除次数最大的A擦除块上的数据复制到空闲块上;然后对A擦除块进行擦除操作,然后将擦除次数最小的B擦除块上面的数据复制到A擦除块上面;然后将B擦除块放到脏块链表中,对B擦除块进行擦除后用于存放更新频繁数据。本发明可以平衡静态数据块与动态数据块的擦除次数,从而取得整个闪存器件的损耗均衡。
文档编号G06F12/06GK101369252SQ20081016160
公开日2009年2月18日 申请日期2008年9月16日 优先权日2008年9月16日
发明者卜佳俊, 笑 周, 李海霞, 智 杨, 纯 陈 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1