一种在闪存上存取数据的系统及方法技术方案

技术编号:2833594 阅读:223 留言:0更新日期:2012-04-11 18:40
一种在闪存上存取数据的方法,包括步骤:a)划分闪存,将闪存分成块,每块在首页的一字节存储有关块擦除次数信息的磨损计数;再将块分成页,每页在起始字节存储页占用标志;为顺序存储的每一数据副本安置一经过校验的有效索引,以存储副本的页地址及长度信息;b)初始化,据块磨损计数确定头、尾块的位置,再据头或尾块的磨损计数确定系统磨损计数;c)在闪存上写入或读取数据,据尾块状况分配空页,并将副本与索引一起顺序写入该页中;或据尾块位置找到有效索引,并据此读取副本。本方法适于NOR  FLASH和NAND  FLASH,通过磨损计数实现磨损平衡,并通过对副本索引的校验实现掉电保护。

【技术实现步骤摘要】

本专利技术涉及数字信息存储领域,尤其涉及一种在闪存上存取数据的系统 及方法。
技术介绍
随着信息技术的发展,内置处理器的智能设备越来越多,半导体技术的进步又使闪存(FLASH)的价格不断降低,而智能设备使用FLASH来存储 数据则成为一种自然而然的趋势。目前的FLASH主要分为NOR FLASH和NAND FLASH两种,两者都 以块为单位进行擦除,但NORFLASH能够以字节为单位进行写入,且其内 的数据可以直接读取;NAND FLASH则将一块分为多个页并以页为单位进 行写入,对数据的任何访问都必须通过专门的接口。由于FLASH这些特性, 在其上存储数据需要进行有针对性的设计。FLASH块的擦除寿命有限,使用时必须保证各块的擦除次数一致或比 较接近,这称之为磨损平衡;对于很多智能设备来说,软件运行时的意外掉 电是很正常的,有必要实现对意外掉电时的数据保护;另夕卜,很多智能设备 的处理器能力、存储器容量等资源有限,还要求代码(FLASH的管理软件 或文件系统的程序代码)尺寸(即长度)能够尽量小一点。JFFS (The Journalling Flash File System:日志FLASH文件系统)是一 个面向FLASH设计的文件系统,具备通用文件系统的所有功能,但其采用 曰志的形式存储数据,随着修改次数的增长,加载时间会越来越长,影响整 个设备的启动速度。YAFFS (Yet Another Flash File System:另一种FLASH 文件系统)具有和JFFS同样的功能,但其专门针对NAND FLASH设计, 无法应用于NORFLASH。除了以上的问题之外,这些文件系统为了实现通 用文件系统的所有功能,软件的代码尺寸也非常大,启动速度较慢,无法应 用在一些对功能要求不高但要求代码体积高度紧凑的场合。中国专利CN200610069707 —种对NAND FLASH存储器进行虚拟空 间管理的方法采用映射表,把虚拟的连续可用的逻辑块映射到非连续的可 用物理块上,并将映射表存储到虚拟空间管理模块中,可以将不相关的各个 程序模块的坏块处理部分省略,简化了上层应用的开发。该专利重点在于 FLASH坏块的管理,未能对可用逻辑块的磨损平衡以及意外掉电时的数据 保护给出解决方案。中国专利CN200610104289 —种闪存中的FLASH文件的管理方法及 系统根据文件的属性建立对应的索引,为每个文件静态地在FLASH上分 配存储空间,避免了文件修改时产生的FLASH空间碎片。该专利重点在于 各文件在FLASH上的存储空间分配,未能对文件所使用的FLASH块的磨 损平衡以及意外掉电时的数据保护给出解决方案。中国专利CN01142240 FLASH存储文件管理方法将FLASH划分为 文件索引区和文件数据区,索引区保存各文件所使用的FLASH块的分配信 息,而文件数据区则用于存储文件数据。该专利同样未对磨损平衡和掉电数 据保护给出解决方案。美国专利WO2007028026 FLASH DRIVE FAST WEAR LEVELING采用磨损平衡表来存储与FLASH磨损平衡相关的信息,以便实现磨损平衡。 该专利需要将磨损平衡表进行单独保存,而且也未涉及意外掉电时的数据保护。美国专利US2006069847 Corruption tolerant method and system for deploying and modifying data in flash memory将文件内容封装成统一格式的 数据结构存储到FLASH上,并通过一个原子操作来确定对文件的修改,能 够在意外掉电时保证文件数据的完整性。该专利每次写入到FLASH上的数 据长度是变化的,故无法在NAND FLASH上实施。欧洲专利EP13 51151A2 System and method for achieving uniform wear levels in a flash memory device循环使用各FLASH块,能够确保磨损平衡, 但掉电保护功能需要对同一 sector进行至少两次的写操作,故其掉电保护功 能无法在NAND FLASH上实现。总的来说,目前在FLASH上存储数据的解决方案中,FLASH文件系统 实现复杂且体积庞大,不适用于一些要求不高的轻量级应用场合;而一些较 为简单的实现方案又往往未实现磨损平衡和掉电时的数据保护。
技术实现思路
本专利技术所要解决的技术问题是提供一种在闪存上存取数据的系统及方 法,能够克服现有技术在闪存上存取数据实现起来复杂庞大,或者功能不完 整等缺点,本专利技术提供的系统及方法简单易行,通用于NOR FLASH和 NAND FLASH;且同时具有磨损平衡和掉电保护功能。为了解决上述技术问题,本专利技术提供的 一种在闪存上存取数据的系统, 包括分别与闪存连接的闪存结构划分模块和初始化模块,以及分别与初始化 模块连接的数据写入模块和数据读取模块;其中闪存结构划分模块,用于将闪存划分为多个存储块,作为擦除操作的基 本单位,并在其中第一页内保存磨损计数;将存储块再划分成多个存储页, 作为写入操作的基本单位,并在存储页起始的一或多个存储单元内保存存储 页的占用标志;为顺序存储在闪存上的每一个数据副本安置一索引;初始化模块,用于对闪存进行初始化操作,即根据闪存上存储块的磨损 计数确定头块和尾块的位置,再根据头块或尾块的磨损计数确定系统磨损计 数;数据写入模块,用于根据闪存当前尾块状况为数据副本分配空页,并将 数据副本与索引 一起顺序写入分配的所述空页中;数据读取模块,用于根据闪存当前尾块位置找到要读取的数据副本的索 引,并根据索引中的信息读取数据副本。进一步地,初始化模块将闪存的第一个空块作为尾块;若第一个空块后的存储块仍为空块,则 第一个存储块为头块,系统磨损计数为l;若第一个空块后的存储块不为空 块,分两种情况当空块不是最后一个存储块,则空块后的存储块为头块, 该头块的磨损计数加1即为系统磨损计数;而当空块是最后一个存储块,则 第一个存储块为头块,该头块的磨损计数即为系统磨损计数;或者,闪存不存在空块,以尾块的磨损计数为所述系统磨损计数;当存 在两个相邻存储块磨损计数变小的分界处时,分界处前面的存储块为尾块, 分界处后面的存储块为头块;若不存在分界处,则以最后一个存储块为尾块, 以第一个存储块为头块。进一步地,数据写入模块进一步包括依次连接的副本分段写入模块、页 分配模块及块分配模块,还包括与副本分段写入模块连接的副本索引生成及 校验模块,其中副本分段写入模块与闪存连接,用于按照存储页的容量将数据副本内容 切分成若干段,然后向页分配模块申请为每个段分配一个空页,将段中内容 连同系统磨损计数或占用标志 一起写入空页;并保存第 一段首字节和最后一 段尾字节所占用的页的地址信息,或保存第 一段首字节占用的页地址和副本 的长度信息;在副本索引生成及校验模块生成副本索引及其校验信息后,将 副本索引及其校验信息写入又分配的一个空页中;页分配模块,与初始化模块连接,用于为副本分段写入模块顺序分配空 页,即当尾块不是满块时,将尾页作为分配的空页;当尾块是满块时,向块 分配才莫块申请分配一个空块,并将分配的空块中的本文档来自技高网
...

【技术保护点】
一种在闪存上存取数据的系统,包括分别与所述闪存连接的闪存结构划分模块和初始化模块,以及分别与所述初始化模块连接的数据写入模块和数据读取模块;其中:所述闪存结构划分模块,用于将所述闪存划分成多个存储块,作为擦除操作的基本单位,并在其中 第一页内保存磨损计数;将所述存储块再划分成多个存储页,作为写入操作的基本单位,并在所述存储页起始的一或多个存储单元内保存所述存储页的占用标志;为顺序存储在所述闪存上的每一个数据副本安置一索引;所述初始化模块,用于对所述闪存进行初始化 操作,即根据所述闪存上所述存储块的磨损计数确定所述头块和所述尾块的位置,再根据所述头块或所述尾块的磨损计数确定所述系统磨损计数;所述数据写入模块,用于根据所述闪存当前尾块状况为所述数据副本分配空页,并将所述数据副本与所述索引一起顺序 写入分配的所述空页中;所述数据读取模块,用于根据所述闪存当前尾块位置找到要读取的数据副本的索引,并根据所述索引中的信息读取所述数据副本。

【技术特征摘要】
1、一种在闪存上存取数据的系统,包括分别与所述闪存连接的闪存结构划分模块和初始化模块,以及分别与所述初始化模块连接的数据写入模块和数据读取模块;其中所述闪存结构划分模块,用于将所述闪存划分成多个存储块,作为擦除操作的基本单位,并在其中第一页内保存磨损计数;将所述存储块再划分成多个存储页,作为写入操作的基本单位,并在所述存储页起始的一或多个存储单元内保存所述存储页的占用标志;为顺序存储在所述闪存上的每一个数据副本安置一索引;所述初始化模块,用于对所述闪存进行初始化操作,即根据所述闪存上所述存储块的磨损计数确定所述头块和所述尾块的位置,再根据所述头块或所述尾块的磨损计数确定所述系统磨损计数;所述数据写入模块,用于根据所述闪存当前尾块状况为所述数据副本分配空页,并将所述数据副本与所述索引一起顺序写入分配的所述空页中;所述数据读取模块,用于根据所述闪存当前尾块位置找到要读取的数据副本的索引,并根据所述索引中的信息读取所述数据副本。2、 按照权刊要求1所述的系统,其特征在于,所述初始化模块将所述闪存的第一个空块作为所述尾块;若所述第一个空块后的存储块 仍为空块,则第一个存储块为所述头块,所述系统磨损计数为1;若所述第 一个空块后的存储块不为空块,分两种情况当所述空块不是最后一个存储 块,则所述空块后的存储块为所述头块,该头块的磨损计数加1即为所述系 统磨损计数;而当所述空块是最后一个存储块,则所述第一个存储块为所述 头块,该头块的磨损计数即为系统磨损计数;或者,所述闪存不存在空块,以尾块的磨损计数为所述系统磨损计数; 当存在两个相邻存储块磨损计数变小的分界处时,所述分界处前面的存储块 为所述尾块,所述分界处后面的存储块为所述头块;若不存在所述分界处, 则以所述最后一个存储块为所述尾块,以所述第一个存储块为所述头块。3、 按照权利要求1或2所述的系统,其特征在于,所述数据写入模块进一步包括依次连接的副本分段写入模块、页分配模块及块分配模块,还包括与副本分段写入模块连接的副本索引生成及校验模块,其中所述副本分段写入模块与所述闪存连接,用于按照所述存储页的容量将 所述数据副本内容切分成若干段,然后向所述页分配模块申请为每个段分配 一个空页,将所述段中内容连同所述系统磨损计数或所述占用标志一起写入 所述空页;并保存第 一段首字节和最后 一段尾字节所占用的页的地址信息, 或保存所述第一段首字节占用的页地址和所述副本的长度信息;在所述副本 索引生成及校验模块生成副本索引及其校验信息后,将所述副本索引及其校 验信息写入又分配的一个空页中;所述页分配模块,与所述初始化模块连接,用于为所述副本分段写入模 块顺序分配空页,即当所述尾块不是满块时,将尾页作为分配的空页;当尾 块是满块时,向所述块分配模块申请分配一个空块,并将所述分配的空块中 的第一页作为分配的空页;所述块分配模块,与所述初始化模块连接,用于在所述页分配模块申请 空块分配时,为其顺序分配一个存储块即当所述尾块不是最后一个存储块, 将其后的一个存储块作为分配的块;当所述尾块是所述最后一个存储块,则 将第一个存储块作为分配的块,并将所述系统磨损计数加1;若所述分配的 块是当前的头块,则将所述头块移动到所述分配的块的下一个存储块;最后 将所述分配的块进行纟察除后作为新的尾块分配出去;所述副本索引生成及校验模块,用于根据所述副本的首字节占用的页地 址及所述副本的长度信息生成关于所述副本的所述索引,或根据所述副本的 首字节占用的页地址及其最后字节占用的页地址信息生成关于所述副本的 所述索引;同时,对所述副本的索引进行校验以形成有效索引,并据此生成 校验信息,随同所述副本索引 一起传给所述副本分段写入模块。4、 按照权利要求3所述的系统,其特征在于,所述数据读取模块进一 步包括依次连接的索引搜索模块、索引读取模块以及副本读取模块,其中所述索引搜索模块,用于从所述尾块开始向头块搜索,遍历其中每个存 储页,直至找到第一个所述有效索引为所述要读取的数据副本的索引;所述索引读取模块,用于从所述有效索引中读取最新的数据副本的索 引,获取所述副本首字节占用的页地址及所述副本的长度信息,或者获取所述副本首字节占用的页地址和其最后字节占用的页地址信息;所述副本读取模块,与所述闪存连接,用于根据获取的所述索引中的信 息,从对应的存储页中读取副本的内容。5、 按照权利要求4所述的系统,其特征在于,所述索引搜索模块,如 果一直搜索到头块都没有找到所述有效索引,则报告读取失败;或者,如果 读取到的所述副本占用的第 一个页地址超出了当前头块到尾块覆盖的范围, 则报告读取失败。6、 一种在闪存上存取数据的方法,包括如下步骤(a) 划分所述闪存,确定翁:据结构,即将所述闪存划分为多个存储块,作为每次擦除操作的基本单位;每块在 第 一 页内分配一或多个字节用于磨损计数,存储有关所述存储块擦除次数的 信息;再将存储块进一步划分成多个存储页,作为每次写入操作的基本单位; 每页使用起始的字节单元作为该页的占用标志,用以识别该页是否已被写入 数据;为顺序存储在所述闪存上的每一个数据副本安置一索引;(b) 对系统进行初始化,即根据所述闪存上所述存储块的...

【专利技术属性】
技术研发人员:朱晓斌侯建文廖粤东
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

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

1