基于NANDflash的映射表数据更新方法和装置与流程

文档序号:15587787发布日期:2018-10-02 18:35阅读:752来源:国知局

本发明实施例涉及存储器技术,尤其涉及一种基于nandflash的映射表数据更新方法和装置。



背景技术:

nandflash是flash内存的一种,属于非易失性存储设备。

nandflash存储设备中包含很多存储单元,每个存储单元包含很多数据块,用于保存用户数据,此外,存储设备中还需要保存管理这些数据块和用户数据的管理数据,如映射表、索引表、数据块状态、数据块擦除次数等数据,其中,映射表是记载用户数据的逻辑地址与物理地址映射关系的表。使用时,可以将这些管理数据称作表数据,将存储这些表数据的数据块称作表块。

为了确保存储设备读取数据的正确性,存储设备中的固件程序需要保证用户数据与表数据的一致性。但是,由于用户数据和表数据的更新不能同时进行,而且表数据中的映射表通常包含好几页数据,因此,在映射表数据更新时一旦设备掉电或发生其他故障,则无法继续进行更新,从而造成映射表数据与用户数据不一致的问题。



技术实现要素:

本发明实施例提供一种基于nandflash的映射表数据更新方法和装置,以解决现有技术中由于设备掉电或其他故障造成映射表数据更新不及时从而与用户数据不一致的问题。

第一方面,本发明实施例提供了一种基于nandflash的映射表数据更新方法,应用于nandflash存储设备,所述存储设备包括数据块和表块,所述表块中存储所述映射表数据,该包括:

在映射表数据更新开始时,建立更新起始标志,并将更新起始标志保存到所述映射表数据在所述表块中的更新起始位置;

在所述映射表数据更新结束时,建立更新结束标志,并将更新结束标志保存到所述映射表数据在所述表块中的更新结束位置;

在所述存储设备重启后,查找所述表块中最后写入的数据是否是所述更新结束标志;

若不是所述更新结束标志,则重新建立所述更新起始标志,获取当前操作数据块,对所述当前操作数据块对应的映射表数据进行更新,并在更新结束时,建立所述更新结束标志。

第二方面,本发明实施例还提供了一种基于nandflash的映射表数据更新装置,应用于nandflash存储设备,所述存储设备包括数据块和表块,所述表块中存储所述映射表数据,该装置包括:

起始标志建立模块,用于在映射表数据更新开始时,建立更新起始标志,并将更新起始标志保存到所述映射表数据在所述表块中的更新起始位置;

结束标志建立模块,用于在所述映射表数据更新结束时,建立更新结束标志,并将更新结束标志保存到所述映射表数据在所述表块中的更新结束位置;

结束标志查找模块,用于在所述存储设备重启后,查找所述表块中最后写入的数据是否是所述更新结束标志;

所述起始标志建立模块,还用于若所述结束标志查找模块确定所述表块中最后写入的数据不是所述更新结束标志,则重新建立所述更新起始标志,获取当前操作数据块;

数据更新模块,用于对所述当前操作数据块对应的映射表数据进行更新。

本发明实施例通过在nandflash的映射表数据更新过程中建立更新起始标志和更新结束标志,进而在更新中断后,仅需对更新起始标志和更新结束标志进行查找,即可判断更新操作是否完成,进而及时完善更新操作,解决现有技术中由于设备掉电或其他故障造成映射表数据更新不及时从而与用户数据不一致的问题,提高了更新效率,进而保证用户数据与表数据的一致性,从而避免了因数据不一致引发的其他错误。

附图说明

图1是本发明实施例一中的一种基于nandflash的映射表数据更新方法的流程图;

图2是本发明实施例二中的一种基于nandflash的映射表数据更新装置的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一中的一种基于nandflash的映射表数据更新方法的流程图,本实施例可适用于nandflash的数据更新操作,应用于nandflash存储设备,该存储设备包括数据块和表块,表块中存储映射表数据,该方法可以由基于nandflash的映射表数据更新装置来执行,该装置可以配置于存储设备的固件中。

本发明实施例一的基于nandflash的映射表数据更新方法该方法具体包括:

s110、在映射表数据更新开始时,建立更新起始标志,并将更新起始标志保存到映射表数据在表块中的更新起始位置。

表块中的表数据包括映射表数据,映射表数据是记载用户数据的逻辑地址与物理地址映射关系的表。当用户数据发生改变时,需要同时更新映射表数据,从而保证用户数据与映射表数据的一致性。

具体的,当固件接收到映射表数据更新指令后,会开始更新操作。在映射表数据更新开始时,建立更新起始标志,并将更新起始标志保存到映射表数据在表块中的更新起始位置。

s120、在映射表数据更新结束时,建立更新结束标志,并将更新结束标志保存到映射表数据在表块中的更新结束位置。

s130、在存储设备重启后,查找表块中最后写入的数据是否是所述更新结束标志。

在更新过程中,设备会发生掉电或其他故障,使更新操作无法继续进行。由于方法中更新起始标志和更新结束标志在正常运行下会成对的建立,因此在设备重启后,查找表块中最后写入的数据是否是更新结束标志,即可判断故障是否影响到映射表数据更新过程。因此,需要在存储设备重启后查找最后写入的数据是否是更新结束标志。

具体判断过程为:查找的数据包括表块中最新数据,由于每次更新都是一个完整的过程,那么每次正常更新之后,表块中存储的最新数据必然是更新结束标志,若不是,则表示上一次更新未完成。

具体实施过程中,该步骤会发生在设备重启之后,此时,固件软件会初始化,在初始化阶段,就可以执行该步骤。

s140、若不是更新结束标志,则重新建立更新起始标志,获取当前操作数据块。

设备按照一定的顺序对数据块进行写入操作,因此,设备发生故障重启后,固件会利用现有算法得知更新操作中断时正在执行写入操作的数据块,进而从当前操作数据块的数据开始更新。

s150、对当前操作数据块对应的映射表数据进行更新,并在更新结束时,建立更新结束标志。

更新结束后,会在映射表数据对应的位置建立更新结束标志,以防止对已更新的数据再次更新。

本实施例通过在nandflash的映射表数据更新过程中建立更新起始标志和更新结束标志,进而在更新中断后,仅需对更新结束标志进行查找,即可判断更新操作是否完成,进而及时完善更新操作,解决现有技术中由于设备掉电或其他故障造成映射表数据更新不及时从而与用户数据不一致的问题,提高了更新效率,进而保证用户数据与表数据的一致性,从而避免了因数据不一致引发的其他错误。

实施例二

图2是本发明实施例二中的一种基于nandflash的映射表数据更新装置的结构示意图,应用于nandflash存储设备,该存储设备包括数据块和表块,该表块中存储映射表数据。如图2所示,该装置包括起始标志建立模块210、结束标志建立模块220、结束标志查找模块230和数据更新模块240,其中,

起始标志建立模块210,用于在映射表数据更新开始时,建立更新起始标志,并将更新起始标志保存到所述映射表数据在所述表块中的更新起始位置;

结束标志建立模块220,用于在所述映射表数据更新结束时,建立更新结束标志,并将更新结束标志保存到所述映射表数据在所述表块中的更新结束位置;

结束标志查找模块230,用于在所述存储设备重启后,查找所述表块中最后写入的数据是否是所述更新结束标志;

所述起始标志建立模块210,还用于若所述结束标志查找模块确定所述表块中最后写入的数据不是所述更新结束标志,则重新建立所述更新起始标志,获取当前操作数据块;

数据更新模块240,用于对所述当前操作数据块对应的映射表数据进行更新。

本实施例通过在nandflash的映射表数据更新过程中建立更新起始标志和更新结束标志,进而在更新中断后,仅需对更新起始标志和更新结束标志进行查找,即可判断更新操作是否完成,进而及时完善更新操作。解决现有技术中由于设备掉电或其他故障造成映射表数据更新不及时从而与用户数据不一致的问题,提高了更新效率,进而保证用户数据与表数据的一致性,从而避免了因数据不一致引发的其他错误。

本发明实施例提供的基于nandflash的映射表数据更新装置可执行本发明任意实施例提供的基于nandflash的映射表数据更新方法,具备执行方法相应的功能模块和有益效果。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1