现在的位置: 首页 > 综合 > 正文

fat文件系统在nandflash上的磨损均衡研究

2012年09月26日 ⁄ 综合 ⁄ 共 1689字 ⁄ 字号 评论关闭

    1、引言近年来,半导体固态存储器得到广泛的使用,如SD/MMC卡、U盘等,这些设备多以NANDFLASH作为存储介质.NAND FLASH是一种非易失性存储器,在结构上,一片NAND FLASH分为多个块(block),一块又可分为多个页面(page).
  在操作上,NAND FLASH可进行读、写和擦除操作。读、写以页为单位,存储器的擦除寿命通常在10万到100万次.
  为了在通用计算机上进行读写操作,基于NAND Flash的存储通常采用FAT文件系统来组织文件,对于普通办公和商业应用的读写频率,这种文件结构完全可以满足日常需要.但对于数据采集类的设备来说,长期的小数据量存取会使存储器的局部存储空间过早的到达擦除寿命,降低了存储的可靠性。因此,在NAND FLASH上应用FAT文件系统时,如何实现磨损均衡成为一个不得不考虑的问题.
  2 FAT文件系统FAT文件系统有三种: FAT12、FAT16和FAT32,其中FAT32文件系统由3部分组成:保留扇区、FAT表区、数据区.
  保留扇区的第一个扇区被称为BPB(boot pa-rameter block),用于存储文件系统的配置信息;FAT表是一一对应于数据区簇号的列表,其表项大小与FAT类型有关,FAT32的表项为4字节,其顺序位置编号代表对应编号的簇,其值代表存储文件的下一簇的簇号,整个FAT表采用链式存储记录 第7期谢琦,等:FAT文件系统在NAND FLASH上的磨损均衡研究方式;数据区是实际的用户数据存放区.FAT32文件系统结构如图1所示.
  FAT32文件系统结构3 FAT文件系统的磨损均衡设计3.1 要解决的问题当前FAT32文件系统对文件的操作会对NAND FLASH造成擦写的不均衡性,具体表现在:
  FAT32文件系统以簇为单位管理文件,每次申请新簇总是采用从前往后的方式在FAT表中寻找首个空闲表项,而该空闲表项很可能是前次删除操作产生的,文件系统中写和删除文件的频繁操作导致对簇的使用往往集中在簇号较小的部分簇,使得它们先于簇号较大的簇损坏,从而影响整个存储器的使用寿命.
  针对嵌入式系统在数据采集中的应用,文中通过修改FAT文件系统来达到整体的磨损均衡,采取了如下措施:删除文件时,不清除对应FAT表项,所以在申请新簇时就不会申请到因擦除而变为空闲的簇;重写某簇时,不再先擦除后重写,而是申请新簇,将要重写的内容写入新簇,并建立原簇和新簇的对应关系.以上措施既能大大减少FAT表区的擦除次数,又能均衡使用各簇.本文所属栏目http://www.shlunwen.com/flash/

  3.2 均衡磨损策略为了在频繁写的操作时实现均衡磨损,通过对数据采集系统中的FAT文件系统进行改造,在保留扇区中增加用于记录磨损状态的数据结构:布尔型变量Flag、状态位图数组、映射位图数组和日志区.状态位图数组和映射位图数组的每一位按顺序和数据区的簇一一对应,且每一位都初始化为1,若运行过程中其值变为0,则表示该位对应的数据区的簇发生了变化:状态位图数组的某位更新为0表示对应的簇已被删除;映射位图数组的某位更新为0表示对应的簇存在映射关系.具体的映射关系以2元组(X,Y)的形式保存在日志区.
  下面以2GB SD卡为例说明具体实现方法.将SD卡格式化为FAT32文件系统,每扇区512字节,每簇8扇区共4KB字节,数据区约有480000簇,对应的映射位图数组、状态位图数组的大小为480000/8=60000字节=118扇区.对于日志区,分配5000个二元组的空间,每个二元组8字节,共需5000*8=40000字节=79扇区.则用以实现磨损均衡设计的4个记录约占118+118+79 =315扇区,因此保留扇区须设定为大于315扇区,文中设定为512扇区,其中128~255扇区用于状态位图数组,256~383扇区用于映射位图数组,384~511扇区用于日志区.
  当进行文件操作时,新增的4个记录用以实现磨损均衡,下面以几个典型文件操作进行说明,这里假设目标文件为A,文件A占用簇的编号为M.

抱歉!评论已关闭.