NAND FLASH的数据处理方法 【技术领域】
本发明涉及半导体存储介质技术领域,更具体地说,涉及一种NANDFLASH的数据处理方法。
背景技术
NAND FLASH(非易失性存储器,简称闪存)中擦除的最小单位为块(Block),写入的最小单位为页(Page),所有的用户数据写入操作需基于一个空块进行,即所有的写入操作需在FLASH中被擦除后没有被编程的块中进行。若要根据逻辑地址A向一块中写入数据将该块中的数据更新,其流程大致如下:
首先,找到一个空块,将旧块中A地址以上页中的数据拷贝到空块;例如,若要写入数据的块中A地址对应的页为第20页,则先将第0~19页的数据拷贝到新块中;
然后,将要写入的数据写入到空块中对应的页;
最后,将旧块的其他数据拷贝到空块的相应位置。
目前,要基于NAND FLASH向其文件系统中写入一段数据,首先要频繁的修改它的系统文件,例如,FAT文件系统要拷贝文件,必须要更新FAT表、FDT表,最后才更新用户数据,而用户数据长度一般较长,需若干页才能容置。所以在数据写入过程中,文件系统经常打断用户数据的更新,而插入对FAT表与FDT表的更新操作。此时,需结束当前块的操作,而对FAT表与FDT表进行更新操作,FAT表与FDT表的更新操作过程与上述数据更新操作过程一致,即需重复上述用户数据更新的步骤。当FAT与FDT更新完后,用户数据继续往下写时,又必须重复上述数据写入过程,即将数据中断时已写入到块中的数据和逻辑地址以上页的数据拷贝到一新块,然后将未写完的写入到逻辑地址对应的页中,然后拷贝旧块中的其他数据。整个过程既耗时且FLASH的磨损又大,特别文件个数较多时,FAT、FDT修改比率就更高,导致FLASH拷贝文件速度过慢。
【发明内容】
本发明的主要目的在于针对现有技术缺陷,提供一种NAND FLASH的数据处理方法,旨在减少FLASH的磨损,提高FLASH的文件拷贝速度。
本发明NAND FLASH的数据处理方法包括以下步骤:
根据逻辑地址与物理地址映射表申请空块,进行用户数据更新操作;
当用户数据更新操作被FAT表或FDT表更新中断时,保存空块的物理地址和操作环境;
更新FAT表或FDT表,记录FAT表或FDT表的映射关系;
调取用户数据更新操作中断时空块的物理地址和操作环境,继续用户数据更新操作。
优选地,所述当用户数据更新操作被FAT表或FDT表中断时,保存空块的物理地址和操作环境的步骤中包括:
设定数据长度阈值;
比较FAT表或FDT表的长度与数据长度阈值;
当FAT表或FDT表的长度小于或等于数据长度阈值时,中断用户数据更新操作。
优选地,所述更新FAT表或FDT表,记录FAT表或FDT表的映射关系的步骤中还包括:
在FLASH冗余中记录FAT表或FDT表的逻辑地址,并在内存中记录FAT表或FDT表的映射关系。
优选地,上述数据处理方法还包括以下步骤:
当用户数据长度大于所述阈值时结束数据更新操作;
申请用户数据的逻辑地址与物理地址映射表;
保存当前操作的结束物理地址与操作环境。
优选地,所述调取用户数据更新操作中断时空块的物理地址和操作环境,继续数据更新操作的步骤中还包括:
判断当前操作的物理地址与结束物理地址是否一致;若否,则根据数据长度阈值中断用户数据更新操作;若是,则根据结束物理地址继续更新数据。
优选地,所述根据数据长度阈值中断数据更新操作的步骤中还包括以下:
比较用户数据长度与阈值;
当用户数据长度小于阈值时,中断用户数据更新操作。
由上可知,本发明在数据操作被中断时,记录当时空块的物理地址和操作环境,当文件系统的更新完成后,再通过调取空块的物理地址和操作环境,实现对数据的续写操作,减少了FLASH的磨损,提高了FLASH的数据拷贝速度。
【附图说明】
图1是本发明的一个实施方式中NAND FLASH的数据处理方法流程图;
图2是上述实施方式的一个实施例中根据数据长度阈值中断用户数据更新操作的方法流程图;
图3是上述实施方式的另一个实施例中根据数据长度阈值中断用户数据更新操作地方法流程图;
图4是上述实施方式中续写用户数据的方法流程图。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
【具体实施方式】
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如本领域普通技术人员所周知,NAND FLASH由一个或多个晶粒封装而成,每个晶粒中包含一个或多个阶(Plane),每个阶包含若干个存储块(Block),每个存储块由若干个页(Page)构成,每个页包含多个扇区。写入数据是以页为单位,而擦除数据是以块为单位。在写入数据时,按页的扇区顺序写入。并且,按顺序给存储块分配地址,分配了地址的存储块称为物理块,该地址称为物理地址;而将存储块划分为若干页的虚拟地址称为逻辑地址,逻辑地址与物理地址之间通过地址映射表建立映射关系。
FAT表(File Allocation Table,文件分配表),用于表示磁盘文件的空间分配信息。FDT表(File Directory Table,文件目录表),记录根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。
如图1所示,本发明NAND FLASH多线程数据处理方法包括以下步骤:
步骤S10,根据逻辑地址与物理地址映射表申请空块,进行用户数据更新操作;
步骤S20,当用户数据更新操作被FAT表或FDT表更新中断时,保存空块的物理地址和操作环境;
步骤S30,更新FAT表或FDT表,记录FAT表或FDT表的映射关系;
步骤S40,调取用户数据更新操作中断时空块的物理地址和操作环境,继续数据更新操作。
在一实施例中,若要根据逻辑地址A将用户数据写入一块中以对该块进行数据更新时,首先根据逻辑地址与物理地址映射表找到一空块(因NANDFLASH器件的任何写入操作只能在空或已擦除的单元内进行),若用户数据写入的操作被FAT表或FDT表的更新中断,则通过闪存中的微控制器记录写操作被中断时空块的物理地址和操作环境,该操作环境可包括逻辑地址对应的块、循环变量、状态机状态等,以便后续操作。
在FAT表或FDT表更新时,在FLASH的冗余中记录FAT表或FDT表更新对应页所对应的逻辑地址,在内存中记录FAT表或FDT表的映射关系,以便当文件系统再次插入对FAT表或FDT表更新时,可通过逻辑地址和映射关系找到前次FAT表或FDT表更新时所对应的页,从而续接上次更新。
待FAT表或FDT表更新完毕,微控制器根据数据写入操作中断时的物理地址和操作环境,找到上次数据写入操作所在块,继续数据更新操作。
FAT表或FDT表的长度都是固定的,FAT表一般为0.5K,FDT表一般为4K。本发明中,根据FAT表及FDT表长度固定的特点以页为单位对FAT表和FDT表进行更新,在FLASH的冗余区记录其对应的逻辑地址以方便掉电后恢复其映射关系,同时记录其对应的映射关系方便运行中使用。这样就避免FAT表或FDT表更新时发生整个块的数据重新拷贝,处理完后再来更新用户数据时,只需要将上次结束物理地址与操作环境还原继续往下写,就像发生一次中断一样。这样系统文件区磨损次数将会大大降低,从而提高NAND FLASH的可用性同时可以改善FLASH拷贝文件的速度。
如图2所示,上述中断数据更新操作可通过以下方法流程实现:
步骤S21,设定数据长度阈值;
步骤S22,比较FAT表或FDT表的长度与数据长度阈值;
步骤S23,当FAT表或FDT表的长度小于数据长度阈值时,中断数据更新操作。
FAT表、FDT表的长度固定,FAT表一般为0.5K大小,而FDT表的大小一般为4K,而用户数据的长度则往往大于FAT表或FDT表的长度。例如,在编程时,一般数据长度都超过4K。可根据上述特点,在FLASH中每隔一定长度区域中预留出若干个物理块,同时设置一数据长度阈值,以便判断数据是否为FAT表或FDT表。在一实施例中,该阈值可以为4K,当文件系统插入对FAT表或FDT表的更新操作而中断数据更新操作时,可利用该阈值判断插入的数据是否为FAT表或FDT表,若数据长度小于或等于阈值,则中断用户数据更新操作,执行上述步骤S30,更新FAT表或FDT表,记录FAT表或FDT表的映射关系。如图3所示,若数据长度大于阈值,则判断为用户数据,执行以下步骤:
步骤S40,结束用户数据更新操作;
步骤S50,申请用户数据的逻辑地址与物理地址映射表;
步骤S60,保存当前操作的结束物理地址与操作环境。
当用户数据长度与FAT表或FDT表一般大小,不满足连续写的条件时,例如,若数据长度只有0.5K时,则执行结束数据的更新操作,申请该用户数据的逻辑地址与物理地址映射表,保存操作的结束物理地址与操作环境,以便续写。例如,续写时,可将操作结束的物理地址和操作环境与当前操作的物理地址比对,若两者一致,则可继续用户数据更新操作,若两者不一致,则中断用户数据更新操作,返回执行上述步骤S22。如图4所示,上述方法中,续写中断时用户数据的操作,可包括以下步骤:
步骤S70,判断当前操作的物理地址与结束物理地址是否一致;
步骤S80,若否,则根据数据长度阈值中断数据更新操作;返回执行上述步骤S22;
步骤S90,若是,则根据结束物理地址继续更新数据,返回执行上述步骤S60。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。