基于NAND flash的掉电保护方法和装置
技术领域
本发明实施例涉及存储器技术,尤其涉及一种基于NAND flash的掉电保护方法和装置。
背景技术
EMMC(Embedded Multi Media Card)是嵌入式多媒体卡,是MMC协会订立的、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。EMMC在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商能专注于产品开发的其他部分,并缩短向市场推出产品的时间。NAND flash是Flash内存的一种,属于非易失性存储设备。
对于基于NAND flash的EMMC产品,其NAND flash中的数据块可以有两种类型,一种是MLC(multi-level cell,多层单元),一种是SLC(single-level cell,单层单元)。其中,MLC块包含多个MSB(Most significant bit,最高有效位)页(对应Upper page,慢页)和多个对应的LSB(Least significant bit,最低有效位)页(对应Lower page,快页)。而对于MLC块,如果其MSB页在写的过程中掉电,则对应的LSB页很有可能出现不可纠正的读错误。按照EMMC协议,掉电发生时正在写入的数据允许恢复为旧数据,但已完成写命令的数据要确保正确。因此,当MSB页在写的过程中掉电,需要及时进行掉电保护。
发明内容
本发明实施例提供一种基于NAND flash的掉电保护方法和装置,以解决因MSB页在写的过程中掉电而引起的LSB页读错误的问题。
第一方面,本发明实施例提供了一种基于NAND flash的掉电保护方法,所述NANDflash包括MLC块和SLC块,所述MLC块的数据页包括MSB页和与其对应的LSB页,所述方法包括:
执行对MLC块的写命令第一个写动作之前,判断当前待写数据页是否为MSB页;
当判断出所述当前待写数据页是MSB页时,将所述当前待写数据页对应的LSB页的数据备份到SLC块中;
执行对MLC块的写命令最后一个写动作之后,判断写入的最后一页是否为MSB页;
当判断出所述写入的最后一页是MSB页时,将所述写入的最后一页对应的LSB页的数据备份到所述SLC块中。
进一步的,所述方法还包括:
在所述将当前待写数据页对应的LSB页的数据备份到SLC块中之后,在所述当前待写数据页对应的LSB页中写入已备份标记,并记录所述当前待写数据页对应的LSB页与所述SLC块的数据存储位置的映射关系;以及
在所述将写入的最后一页对应的LSB页的数据备份到所述SLC块中之后,在所述写入的最后一页对应的LSB页中写入已备份标记,并记录所述写入的最后一页对应的LSB页与所述SLC块的数据存储位置的映射关系。
第二方面,本发明实施例还提供了一种基于NAND flash的掉电保护装置,所述NAND flash包括MLC块和SLC块,所述MLC块的数据页包括MSB页和与其对应的LSB页,所述装置包括:
第一判断模块,用于在对MLC块执行写命令第一个写动作之前,判断当前待写数据页是否为MSB页;
第一备份模块,用于当第一判断模块判断出所述当前待写数据页是MSB页时,将所述当前待写数据页对应的LSB页的数据备份到SLC块中;
第二判断模块,用于在完成对MLC块的写命令最后一个写动作之后,判断写入的最后一页是否为MSB页;
第二备份模块,用于当第二判断模块判断出所述写入的最后一页是MSB页时,将所述写入的最后一页对应的LSB页的数据备份到所述SLC块中。
进一步的,所述装置还包括:
第一映射关系记录模块,用于在第一保存模块将所述当前待写数据页对应的LSB页的数据保存到所述SLC块中之后,记录所述当前待写数据页对应的LSB页与所述SLC块的数据存储位置的映射关系;
第二映射关系记录模块,用于在第二保存模块将所述写入的最后一页对应的LSB页的数据保存到所述SLC块中之后,记录所述写入的最后一页对应的LSB页与所述SLC块的数据存储位置的映射关系。
本发明实施例通过在对执行MLC块的写命令前后,分别判断当前待写数据页和写入的最后一页是否为MSB页,若是,将MSB页对应的LSB页的数据备份到SLC块中,即在执行MLC块的写命令前后对MSB页对应的LSB页进行数据备份,解决了MSB页因掉电而引起的LSB页读错误的问题,实现了保证LSB数据不受损坏,降低了数据存储过程中的出错概率。
附图说明
图1是本发明实施例一提供的基于NAND flash的掉电保护方法的流程图;
图2是本发明实施例二提供的基于NAND flash的掉电保护装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的基于NAND flash的掉电保护方法的流程图,本实施例可适用于MSB页在写的过程中掉电时避免LSB页读错误的情况,该方法可以由本发明实施例提供的基于NAND flash的掉电保护装置来执行,该装置可以采用软件和/或硬件的方式实现,本发明实施例一的方法具体包括:
S110、执行对MLC块的写命令第一个写动作之前,判断当前待写数据页是否为MSB页,若是,则执行步骤S120。
本实施例中,内置NAND flash的EMMC设备,NAND flash包括MLC(Multi-LevelCell,多层存储单元)块和SLC(Single-Level Cell,单层存储单元)块,MLC块的数据页包括MSB页和与其对应的LSB页。其中,NAND flash是flash内存的一种,采用非线性宏单元模式,具有容量大、改写速度快的优势,适用于大数据存储,因而被广泛应用。MLC具有容量大、成本低和存储速度慢的特点;SLC具有成本高、容量小和存储速度快的特点。MLC的每个单元是2bit,是SLC的两倍,但是每个MLC中存放资料较多,结构相对复杂,出错率高,MLC的性能弱于SLC。在二进制数中,MSB是最高有效位,位于二进制数的最左侧,LSB与MSB相反,是二进制数中的最低有效位,位于二进制数的最右侧。示例性的,NAND flash最初始的状态是“11”,在此状态下,左边的1是MSB,右边的1是LSB,所以,对NAND flash进行Program(编程)的过程,就是将“11”中的MSB或者LSB或者二者Program为“0”或者继续保持“1”的状态,由此,存储单元其实有四种状态,四种状态分布对应不同的存储单元电压值。把MSB和LSB一个物理存储单元上的两个bit分别映射到两个不同的page(数据页)上,那么,LSB对应的page就是Lower page,MSB对应的page就是Upper page。
按照EMMC协议,掉电发生时正在写入的数据允许恢复为旧数据,但已完成写命令的数据要确保正确。对于MLC块,如果其MSB页在写的过程中掉电,则对应的LSB页很有可能出现不可纠正的读错误。因此,当MSB页在写的过程中掉电,需要及时进行掉电保护。
本实施例中,在对MLC块的写操作中,每个MSB页对应一个LSB页,他们一起称为pair page(一对数据页),在写的过程中,LSB页与MSB页间隔着进行写操作,在对MLC块的写命令第一个写动作之前,确定当前的待写数据页是否为MSB页。
S120、将当前待写数据页对应的LSB页的数据备份到SLC块中。
当确定对MLC块的写命令第一个写动作之前,当前的待写数据页是MSB页时,将当前待写数据页对应的LSB页的数据备份到SLC块中。由于MLC块中如果其MSB页在写的过程中掉电,则对应的LSB页很有可能出现不可纠正的读错误,而SLC块没有与上述MLC块相同的问题,数据稳定。
本实施例中,在执行对MLC块的写命令第一个写动作之前,将当前待写数据页对应的LSB页的数据备份到SLC块中,当MLC块中数据出现错误时,可从SLC块中获取正确数据,避免了MLC块的写命令第一个写动作之前,MSB页因掉电而引起的LSB页读错误的问题,实现了保证LSB数据不受损坏,降低了数据存储过程中的出错概率。
S130、执行对MLC块的写命令最后一个写动作之后,判断写入的最后一页是否为MSB页,若是则执行步骤S140。
本实施例中,根据该MSB块中对应的LSB是否备份到SLC块,判断出写操作是否完成,若写命令未完成,在最后写入的MSB页掉电,则不会进行备份。那么在恢复用电后,NANDflash可以根据是否已备份来采取相应的措施,保证已完成写命令的数据正确。
本实施例中,在对执行对MLC块的写命令最后一个写动作之后,判断写入的最后一页是否为MSB页,若写入的最后一页是MSB页,则需要备份LSB数据,若写入的最后一页是LSB页,则不备份。
S140、将写入的最后一页对应的LSB页的数据备份到SLC块中。
本实施例中,若执行对MLC块的写命令最后一个写动作之后,确定写入的最后一页是MSB页时,将写入的最后一页对应的LSB页的数据备份到SLC块中,避免写入的最后一页对应的LSB页的数据因掉电导致LSB页读错误的问题。
本实施例的技术方案通过在对执行MLC块的写命令前后,分别判断当前待写数据页和写入的最后一页是否为MSB页,若是,将MSB页对应的LSB页的数据备份到SLC块中,即在执行MLC块的写命令前后对MSB页对应的LSB页进行数据备份,解决了MSB页因掉电而引起的LSB页读错误的问题,实现了保证LSB数据不受损坏,降低了数据存储过程中的出错概率。
在上述实施例的基础上,在步骤S120之后,方法还可以包括:
在当前待写数据页对应的LSB页中写入已备份标记,并记录当前待写数据页对应的LSB页与SLC块的数据存储位置的映射关系。
以及在步骤S140之后,方法还可以包括:
在写入的最后一页对应的LSB页中写入已备份标记,并记录写入的最后一页对应的LSB页与SLC块的数据存储位置的映射关系。
本实施例中,将当前待写MSB页或者写入的最后一个MSB页对应的LSB页的数据备份到SLC块之后,在LSB页中写入已备份标记,并记录MSB页对应的LSB页与SLC块的数据存储位置的映射关系,在恢复用电后,便于NAND flash根据LSB页中的备份标记与LSB页与SLC块的数据存储位置的映射关系快速获取SLC块中备份的LSB页数据。
需要说明的是,可将MSB页对应的LSB页与SLC块的数据存储位置的映射关系存储于NAND flash的表块中,其中,表块指的是用于存储管理数据的数据块。示例性的,表块可存储NAND flash所存储用户数据对应的的管理数据,例如映射关系、数据块的擦除次数、数据搬移的源地址和目的地址等。
实施例二
图2为本发明实施例二提供的基于NAND flash的掉电保护装置的结构示意图,NAND flash包括MLC块和SLC块,MLC块的数据页包括MSB页和与其对应的LSB页,该装置适用于执行本发明实施例一提供的基于NAND flash的掉电保护方法,装置具体可以包括:
第一判断模块210,用于在对MLC块执行写命令第一个写动作之前,判断当前待写数据页是否为MSB页;
第一备份模块220,用于当第一判断模块判断出当前待写数据页是MSB页时,将当前待写数据页对应的LSB页的数据备份到SLC块中;
第二判断模块230,用于在完成对MLC块的写命令最后一个写动作之后,判断写入的最后一页是否为MSB页;
第二备份模块240,用于当第二判断模块判断出写入的最后一页是MSB页时,将写入的最后一页对应的LSB页的数据备份到SLC块中。
优选的,装置还包括:
第一映射关系记录模块250,用于在第一保存模块将当前待写数据页对应的LSB页的数据保存到SLC块中之后,记录当前待写数据页对应的LSB页与SLC块的数据存储位置的映射关系;
第二映射关系记录模块260,用于在第二保存模块将写入的最后一页对应的LSB页的数据保存到SLC块中之后,记录写入的最后一页对应的LSB页与SLC块的数据存储位置的映射关系。
本发明实施例提供的基于NAND flash的掉电保护装置可执行本发明任意实施例提供的基于NAND flash的掉电保护方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。