存储器管理方法、存储器存储装置及存储器控制器与流程

文档序号:25542493发布日期:2021-06-18 20:39阅读:109来源:国知局
本发明涉及一种存储器管理技术,尤其涉及一种存储器管理方法、存储器存储装置及存储器控制器。
背景技术
::非易失性存储器模块(例如快闪存储器模块)具有数据非易失性保存、低耗电及数据存取快速等优点。当进入到三维nand型快闪存储器模块的世代,单一实体区块往往变得非常巨大。单一实体区块包括的实体页面的数量甚至来到数千实体页面,而使得执行断电恢复(suddenpower-offrecovery,spor)操作时需要耗费很可观的时间才能将断电前正在写入的不稳定实体区块所存储的数据搬移。此外,因搬移数据而更新逻辑至实体映射表(logical-to-physicaltable,l2ptable)的时间也较过去需要花费更多的时间。有些产品或应用,尤其是嵌入式产品或卡类产品,例如emmc、sdcard、ufs等,对于断电恢复操作的时间限制非常严格,通常是1秒内要完成。因此,上述数据搬移的动作通常会保留到收到主机系统的写入指令时才启动。若不解决上述数据搬移与更新逻辑至实体映射表影响的时间开销,将会严重影响到断电恢复操作后,前景主机系统的写入指令的延迟与效率。基此,如何减少断电恢复操作所需时间,是本领域人员研究的课题之一。技术实现要素:本发明的实施例提供一种存储器管理方法、存储器存储装置及存储器控制器,可减少数据恢复操作时无意义的时间开销。本发明的实施例提供一种存储器管理方法,其用于控制存储器模块,其中所述存储器模块包括多个实体区块,所述实体区块包括多个实体单元,每一所述实体单元映射至逻辑单元,且所述存储器管理方法包括:发生异常断电后重新上电时,执行第一操作,其中所述第一操作包括:根据区块写入管理表识别发生所述异常断电前最后一个被写入的第一实体区块中的稳定区,其中所述稳定区包括的第一实体单元存储有使用者数据且与逻辑单元的映射关系记录在逻辑至实体映射表中;读取所述第一实体区块中所述稳定区包括的所述第一实体单元以外的第二实体单元所存储的第一数据;将所述第二实体单元中的第一数据复制至另一个实体区块的目标实体单元中;以及在所述逻辑至实体映射表更新所述第一数据对应的逻辑单元与所述目标实体单元的映射关系。本发明的实施例另提供一种存储器存储装置,其包括连接接口、存储器模块以及存储器控制器。所述连接接口用以连接主机系统。所述存储器模块包括多个实体区块,所述实体区块包括多个实体单元,每一所述实体单元映射至逻辑单元。所述存储器控制器连接所述连接接口与所述存储器模块。其中所述存储器控制器用以在发生异常断电后重新上电时,执行第一操作,其中所述存储器控制器执行所述第一操作用以:根据区块写入管理表识别发生所述异常断电前最后一个被写入的第一实体区块中的稳定区,其中所述稳定区包括的第一实体单元存储有使用者数据且与逻辑单元的映射关系记录在逻辑至实体映射表中;读取所述第一实体区块中所述稳定区包括的所述第一实体单元以外的第二实体单元所存储的第一数据;将所述第二实体单元中的第一数据复制至另一个实体区块的目标实体单元中;并且,在所述逻辑至实体映射表更新所述第一数据对应的逻辑单元与所述目标实体单元的映射关系。本发明的实施例另提供一种存储器控制器,其包括主机接口、存储器接口以及存储器控制电路。所述主机接口用以连接主机系统。所述存储器接口用以连接存储器模块,其中所述存储器模块包括多个实体区块,所述实体区块包括多个实体单元,每一所述实体单元映射至逻辑单元。所述存储器控制电路连接所述主机接口与所述存储器接口。其中所述存储器控制电路用以在发生异常断电后重新上电时,执行第一操作,其中所述存储器控制电路执行所述第一操作用以:根据区块写入管理表识别发生所述异常断电前最后一个被写入的第一实体区块中的稳定区,其中所述稳定区包括的第一实体单元存储有使用者数据且与逻辑单元的映射关系记录在逻辑至实体映射表中;读取所述第一实体区块中所述稳定区包括的所述第一实体单元以外的第二实体单元所存储的第一数据;将所述第二实体单元中的第一数据复制至另一个实体区块的目标实体单元中;并且,在所述逻辑至实体映射表更新所述第一数据对应的逻辑单元与所述目标实体单元的映射关系。基于上述,在存储器存储装置发生异常断电后重新上电时,存储器存储装置通过仅将发生此异常断电前最后一个被写入的实体区块的不稳定区中的数据复制至另一个实体区块以减少数据恢复操作所需的时间。此外,本实施例还可通过实体至实体映射表将逻辑至实体映射表中的实体单元导向到新的目标实体单元,避免更新整个逻辑至实体映射表所耗费的时间。藉此,可减少数据恢复操作时无意义的时间开销,进而提升存储器存储装置的运作效能。附图说明图1是根据本发明的一实施例所示出的存储器存储装置的示意图;图2是根据本发明的一实施例所示出的存储器控制器的示意图;图3是根据本发明的一实施例所示出的管理存储器模块的示意图;图4是根据本发明的一实施例所示出的实体区块的示意图;图5是根据本发明的一实施例所示出的逻辑至实体映射表的示意图;图6是根据本发明的一实施例所示出的实体区块的示意图;图7是根据本发明的一实施例所示出的逻辑至实体映射表与实体至实体映射表的示意图;图8是根据本发明的一实施例所示出的存储器管理方法的流程图。具体实施方式现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在附图和描述中用来表示相同或相似部分。图1是根据本发明的一实施例所示出的存储器存储装置的示意图。请参照图1,存储器存储系统10包括主机系统11与存储器存储装置12。主机系统11可为任意型态的计算机系统。例如。主机系统11可为笔记本计算机、台式计算机、智能手机、平板计算机、工业计算机等。存储器存储装置12用以存储来自主机系统11的数据。例如,存储器存储装置12可包括固态硬盘、u盘或其他类型的非易失性存储装置。主机系统11可经由串行先进技术总线附属(serialadvancedtechnologyattachment,sata)接口、外设部件互连快速(peripheralcomponentinterconnectexpress,pciexpress)、通用串行总线(universalserialbus,usb)或其他类型的连接接口电性连接至存储器存储装置12。因此,主机系统11可将数据存储至存储器存储装置12和/或从存储器存储装置12读取数据。存储器存储装置12可包括连接接口121、存储器模块122及存储器控制器123。连接接口121用以将存储器存储装置12连接至主机系统11。例如,连接接口121可支援sata、pciexpress或usb等连接接口标准。存储器存储装置12可经由连接接口121与主机系统11通信。存储器模块122用以存储数据。存储器模块122可包括可复写式非易失性存储器模块。存储器模块122包括存储单元阵列。存储器模块122中的存储单元是以电压的形式来存储数据。例如,存储器模块122可包括单阶存储单元(singlelevelcell,slc)nand型快闪存储器模块、多阶存储单元(multilevelcell,mlc)nand型快闪存储器模块、三阶存储单元(triplelevelcell,tlc)nand型快闪存储器模块、四阶存储单元(quadlevelcell,qlc)nand型快闪存储器模块、三维nand型快闪存储器模块(3dnandflashmemorymodule)(可具有多个三阶或四阶存储单元)或其他具有相似特性的存储器模块。存储器模块122中的存储单元是以阵列的方式设置。存储器控制器123连接至连接接口121与存储器模块122。存储器控制器123可用以控制存储器存储装置12。例如,存储器控制器123可控制连接接口121与存储器模块122以进行数据存取与数据管理。例如,存储器控制器123可包括中央处理单元(cpu)、图形处理单元(gpu),或是其他可编程的一般用途或特殊用途的微处理器、数字信号处理器(digitalsignalprocessor,dsp)、可编程控制器、专用集成电路(applicationspecificintegratedcircuits,asic)、可编程逻辑器件(programmablelogicdevice,pld)或其他类似装置或这些装置的组合。在一实施例中,存储器控制器123亦称为快闪存储器控制器。在一实施例中,存储器模块122亦称为快闪存储器模块。存储器模块122可接收来自存储器控制器123的指令序列并根据此指令序列存取存储于存储单元中的数据。图2是根据本发明的一实施例所示出的存储器控制器的示意图。请参照图1与图2,存储器控制器123包括主机接口21、存储器接口22及存储器控制电路23。主机接口21用以经由连接接口121连接至主机系统11,以与主机系统11通信。存储器接口22用以连接至存储器模块122,以与存储器模块122通信。存储器控制电路23连接至主机接口21与存储器接口22。存储器控制电路23可经由主机接口21与主机系统11沟通并经由存储器接口22存取至存储器模块122。存储器控制电路23也可视为存储器控制器123的控制核心。在以下实施例中,对于存储器控制电路23的说明等同于对于存储器控制器123的说明。此外,存储器控制电路23可包括一或多个缓冲存储器,其用以暂存数据。图3是根据本发明的一实施例所示出的管理存储器模块的示意图。请参照图1与图3,存储器模块122包括多个实体单元301(0)~301(c)。每一个实体单元皆包括多个存储单元且用以非易失性地存储数据。多个实体单元可组成一个实体区块。一个实体区块中的多个实体单元(或存储单元)可被同时抹除。此外,存储器控制电路23可配置多个逻辑单元311(0)~311(d)来映射至少部分的实体单元。例如,一个逻辑单元可由一或多个逻辑地址组成。逻辑单元与实体单元之间的映射关系则可记载于逻辑至实体映射表中。在一实施例中,每个实体单元会包含一数据比特区与一冗余比特区。数据比特区是用以存储使用者的数据,而冗余比特区则是用以存储系统数据(例如,错误更正码)。在本实施例中,数据比特区中会包含多个实体存取地址。另一方面,一个逻辑单元会包含多个逻辑存取地址,而这些逻辑存取地址会被映射至数据比特区中的实体存取地址。也就是说,一个逻辑单元中逻辑存取地址的数目会等于一个实体单元中实体存取地址的数目。在本实施例中,每一个实体单元的数据比特区中会包含4个实体存取地址,且一个实体存取地址的大小是一个实体扇区的大小。然而,在其他实施例中,数据比特区中也可包含数目更多或更少的实体存取地址,本发明并不限制实体存取地址的大小以及个数。在一实施例中,存储器模块122逻辑地区分为数据区310、闲置区320与系统区330。逻辑上属于数据区310的实体单元301(1)~301(a)存储有来自主机系统11的数据(亦称为使用者数据)。数据区310中的实体单元被抹除后就会被关连至闲置区320。换言之,闲置区320中的实体单元301(a+1)~301(b)皆已被抹除且未存储有效数据。其中,闲置区320中的多个实体单元可组成一个闲置实体区块。逻辑上属于系统区330的实体单元301(b+1)~301(c)是用以记录系统数据。例如,系统数据包括关于存储器模块的制造商与型号、存储器模块的实体区块数、每一实体区块的实体单元数等。特别是,数据区310、闲置区320与系统区330的实体单元的数量会根据不同的存储器规格而有所不同。在本实施例中,存储器控制电路23会将逻辑单元与实体单元之间的映射关系记载于逻辑至实体映射表。当主机系统11欲从存储器存储装置12读取数据或写入数据至存储器存储装置12时,存储器控制电路23可根据逻辑至实体映射表中的信息来存取存储器模块122。当存储器存储装置12发生异常断电而重新上电并执行断电恢复(suddenpower-offrecovery,spor)操作(亦称为,数据恢复操作)时,存储器控制电路23会将断电前最后一个被编程的实体区块的数据复制至从闲置区320所选择的另一个实体区块,并以此新的实体区块接续的写入数据以确保数据的正确性。此时,存储器控制电路23亦会一一地将逻辑至实体映射表中断电前最后一个被编程的实体区块中的实体单元所对应的逻辑单元更新为对应至新的实体区块的实体单元。然而,在其存储器模块122是以实体单元为基础来进行管理的存储器存储装置12中,由于存储有数据的实体单元皆会映射至一个逻辑单元,亦即,逻辑至实体映射表会记录有逻辑单元与多个实体区块的实体单元的多笔映射关系,因此,所述逻辑至实体映射表会非常庞大。特别是,与二维nand型快闪存储器模块的实体区块所包括的实体单元的数量相比,三维nand型快闪存储器模块的实体区块所包括的实体单元的数量更多,因此逻辑至实体映射表会更加庞大。如此一来,将造成存储器控制电路23在执行数据恢复操作时需要花费非常多的时间才能将实体区块的数据复制至另一个实体区块。此外,存储器存储装置12发生异常断电前可能有部分逻辑至实体映射表已经记录断电前最后一个被编程的实体区块与逻辑单元的映射关系,因此在执行数据恢复操作时也需要更新这些逻辑至实体映射表中的映射关系,而需要耗费可观的时间。因此在本实施例中,存储器控制电路23可将实体区块逻辑地区分为稳定区、不稳定区与未写入区。具体来说,存储器控制电路23接收到来自主机系统11的写入指令后,会将此写入指令指示的逻辑单元(亦称为第一逻辑单元)的使用者数据写入至存储器模块122的实体单元中,并在逻辑至实体映射表将第一逻辑单元映射至写入使用者数据的实体单元。在一实施例中,当前用来存储来自主机系统11的使用者数据的实体区块亦称为开启区块(openblock)或主机写入区块。须注意的是,在另一实施例中,一个开启区块或主机写入区块亦可以包含多个实体区块。在本实施例中,稳定区中的实体单元存储有数据,并且稳定区中的实体单元与逻辑单元的映射关系已记录在逻辑至实体映射表中。不稳定区可包括存储有数据的实体单元,但不稳定区中的实体单元与任何逻辑单元的映射关系尚未记录在逻辑至实体映射表中。此外,不稳定区还可包括当前正在进行编程的实体单元。未写入区包括的实体单元则未存储有数据。换言之,在实体单元存储有使用者数据的情形时,稳定区所包括的实体单元与不稳定区所包括的实体单元的差异在于实体单元与逻辑单元的映射关系是否已记录在逻辑至实体映射表中。在本实施例中,存储器控制电路23可在逻辑至实体映射表将第一逻辑单元映射至写入使用者数据的实体单元后,根据逻辑至实体映射表建立/更新开启区块对应的区块写入管理表。存储器控制电路23在区块写入管理表中标记开启区块中已写入使用者数据并且与第一逻辑单元的映射关系已记录在逻辑至实体映射表的实体单元。换句话说,区块写入管理表中标记了对应至实体区块中稳定区的实体单元。在本实施例中,当存储器存储装置12发生异常断电后重新上电时,存储器控制电路23会执行第一操作。在执行第一操作时,存储器控制电路23根据区块写入管理表识别发生此异常断电前最后一个被写入的实体区块(亦称为第一实体区块)。稳定区包括的第一实体单元存储有使用者数据且其与逻辑单元的映射关系记录在逻辑至实体映射表中。在执行第一操作中,存储器控制电路23读取第一实体区块中稳定区包括的实体单元(亦称为第一实体单元)以外的实体单元(亦称为第二实体单元)所存储的数据(亦称为第一数据)。在第一操作中,存储器控制电路23将第二实体单元所存储的第一数据复制至从闲置区320所选择的另一个实体区块的目标实体单元中。之后,存储器控制电路23在逻辑至实体映射表更新第一数据对应的逻辑单元与目标实体单元的映射关系。另一方面,倘若第一实体区块中的存储有使用者数据的实体单元与逻辑单元的映射关系皆已记录在逻辑至实体映射表中(即,不存在不稳定区),则存储器控制电路23不执行数据搬移操作。如此一来,通过仅搬移不稳定区所存储的数据而不同时搬移稳定区所存储的数据,可减少数据恢复操作所需的时间。值得一提的是,上述搬移实体区块中部分数据的操作无法即时释放出闲置实体区块至闲置区320,因此可能会有闲置实体区块的数量不足的风险存在。在一实施例中,在执行第一操作之前,存储器控制电路23会先判断闲置实体区块的数量是否小于一预设值。例如,厂商可自行设定合适的预设值来判断闲置实体区块的数量是否足够,本发明不在此限制。倘若闲置实体区块的数量不小于预设值,则存储器控制电路23执行上述搬移实体区块中部分数据的操作(第一操作)。在本实施例中,倘若闲置实体区块的数量小于预设值,则存储器控制电路23执行第二操作以从发生此异常断电前最后一个被写入的第一实体区块读取第一实体单元所存储的数据(亦称为第二数据)及第二实体单元所存储的第一数据,并将从第一实体区块读取的第一数据及第二数据复制至从闲置区320所选择的另一个实体区块的目标实体单元中。一般来说,存储器控制电路23在将第一数据及第二数据复制至目标实体单元后,会在逻辑至实体映射表更新第一数据及第二数据原先存储的实体单元与目标实体单元的映射关系。然而,更新大量的逻辑至实体映射表需要耗费可观的时间。基此,在本实施例中,存储器控制电路23设置实体至实体映射表,以映射第一数据及第二数据原先存储的实体单元与目标实体单元的映射关系。基此,在本实施例中,存储器控制电路23在实体至实体映射表更新第一数据及第二数据原先存储的实体单元与目标实体单元之间的映射关系。如此一来,通过实体至实体映射表,可直接将逻辑至实体映射表中的实体单元导向到新的目标实体单元,避免更新整个逻辑至实体映射表所带来的时间影响。图4是根据本发明的一实施例所示出的实体区块的示意图。图5是根据本发明的一实施例所示出的逻辑至实体映射表的示意图。为了方便说明,图4以一个实体区块包括6个实体单元为例进行说明,然而本领域技术人员应可理解一个实体区块不只具有6个实体单元,且可具有其他任意个实体单元,于此不再赘述。请参图4,存储器控制电路23将实体区块410(0)包括的实体单元301(0)~301(5)逻辑地区分为稳定区3011、不稳定区3012与未写入区3013。稳定区3011包括实体单元301(0)~301(2),不稳定区3012包括实体单元301(3),稳定区3011包括实体单元301(4)~301(5)。在本实施例中,假设实体单元301(3)存储有使用者数据,然而在其他实施例中,实体单元301(3)亦可为当前正在进行编程的实体单元。请参图5,逻辑至实体映射表500-1是根据图3与图4所示出的逻辑单元与实体单元之间的映射关系,其中左栏记录的是逻辑单元的编号,右栏记录的是映射的实体单元的编号。在本实施例中,假设实体单元301(0)映射至逻辑单元311(0),实体单元301(1)映射至逻辑单元311(1),实体单元301(2)映射至逻辑单元311(2)。请参图4与图5,当存储器存储装置12发生异常断电后重新上电时,存储器控制电路23会根据区块写入管理表识别发生此异常断电前最后一个被写入的实体区块410(0)中的稳定区3011,并读取实体区块410(0)中的稳定区3011包括的实体单元301(0)~301(1)以外的实体单元所存储的数据。在本实施例中,存储器控制电路23读取不稳定区3012包括的实体单元301(3)中所存储的第一数据,并将读取的第一数据复制至从闲置区320所选择的另一个实体区块410(1)的目标实体单元301(6)中。之后,存储器控制电路23在逻辑至实体映射表更新第一数据对应的逻辑单元(假设第一数据是属于逻辑单元311(3)的数据)与目标实体单元301(6)的映射关系。逻辑至实体映射表500-2示出更新后的映射关系。图6是根据本发明的一实施例所示出的实体区块的示意图。图7是根据本发明的一实施例所示出的逻辑至实体映射表与实体至实体映射表的示意图。请参照图6,图6示出的实体区块410(0)可参照图4及对应的描述,于此不再赘述。请参图7,逻辑至实体映射表700-1是根据图3与图6所示出的逻辑单元与实体单元之间的映射关系,其中左栏记录的是逻辑单元的编号,右栏记录的是映射的实体单元的编号。在本实施例中,假设实体单元301(0)映射至逻辑单元311(0),实体单元301(1)映射至逻辑单元311(1),实体单元301(2)映射至逻辑单元311(2)。在本实施例中,假设闲置实体区块的数量小于预设值,则存储器控制电路23会从发生此异常断电前最后一个被写入的实体区块410(0)读取实体单元301(0)~301(2)所存储的第二数据及实体单元301(3)所存储的第一数据,并将第一数据及第二数据复制至从闲置区320所选择的另一个实体区块410(2)的目标实体单元301(12)~301(17)中。之后,存储器控制电路23在逻辑至实体映射表更新不稳定区3012包括的实体单元301(3)与逻辑单元(假设第一数据是属于逻辑单元311(3)的数据)的映射关系,并在实体至实体映射表更新第一数据及第二数据原先存储的实体单元301(0)~301(3)与目标实体单元301(12)~301(15)的映射关系。逻辑至实体映射表700-2与实体至实体映射表800示出更新后的映射关系。如此一来,通过实体至实体映射表800,可直接将逻辑至实体映射表700-2中的实体单元301(0)~301(3)导向到新的目标实体单元301(12)~301(15),避免更新整个逻辑至实体映射表所耗费的时间。图8是根据本发明的一实施例所示出的存储器管理方法的流程图。请参照图8,在步骤s802,发生异常断电后重新上电时,根据区块写入管理表识别发生所述异常断电前最后一个被写入的第一实体区块中的稳定区。在步骤s804,读取所述第一实体区块中所述稳定区包括的所述第一实体单元以外的第二实体单元所存储的第一数据。在步骤s806,将所述第二实体单元中的第一数据复制至另一个实体区块的目标实体单元中。在步骤s808,在逻辑至实体映射表更新所述第一数据对应的逻辑单元与所述目标实体单元的映射关系。然而,图8中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图8中各步骤可以实作为多个程序码或是电路,本发明不加以限制。此外,图8的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。综上所述,本实施例提供的存储器管理方法、存储器存储装置及存储器控制器,在存储器存储装置发生异常断电后重新上电时,仅将发生此异常断电前最后一个被写入的实体区块的不稳定区中的数据复制至另一个实体区块。如此一来,可减少数据恢复操作所需的时间。此外,本实施例还可通过实体至实体映射表将逻辑至实体映射表中的实体单元导向到新的目标实体单元,避免更新整个逻辑至实体映射表所耗费的时间。藉此,可减少数据恢复操作时无意义的时间开销,进而提升存储器存储装置的运作效能。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1