数据储存装置和快闪存储器的区块管理方法与流程

文档序号:12007061阅读:189来源:国知局
数据储存装置和快闪存储器的区块管理方法与流程
本发明有关于一种快闪存储器,特别有关于一种快闪存储器的区块管理方法。

背景技术:
快闪存储器是一种可被电性抹除及重新程序化的非挥发性的电脑储存芯片。快闪存储器适用于一般数据的储存和传输,主要使用在存储卡、USB快闪存储器、固态硬盘(solid-statedrives)以及相似的产品。举例而言,应用快闪存储器的装置包括个人电脑、个人数字助理(PDAs)、数字声音播放装置(digitalaudioplayers)、数字相机、移动电话、影音游戏机(videogames)等。除了具有非挥发性之外,快闪存储还提供如同动态随机存取存储器(dynamicRAM)般的快速读取时间,虽然速度上仍不如静态随机存取存储器(staticRAM)或是只读存储器(ROM)。由于非挥发性、固态储存装置的大量需求,使得目前快闪存储器的售价已经远低于可位元组程序化(byte-programmable)的电子抹除式可复写只读存储器(EEPROM)并且已经成为主流的存储器类型。因此,需要一种合适的快闪存储器管理方法,用来改善快闪存储器的效能。

技术实现要素:
本发明的目的在于提供一种快闪存储器的区块管理方法,用来改善快闪存储器的效能。一种数据储存装置,耦接至一主机,并包括一快闪存储器以及一控制器。快闪存储器包括一备用区块池以及一数据区块池,其中备用区块池包括数个备用区块以及数据区块池包括数个数据区块,其中具有抹除次数大于一热门临界值的备用区块被决定为数个热门区块,以及一热门区块数量为热门区块的总量数。控制器接收来自主机的一目标数据,将目标数据写至一目前数据区块中,决定一目前程序的分页是否为目前数据区块的第一分页,当目前程序化的分页为第一分页时,当目前程序化的分页为第一分页时,决定热门区块数量是否大于零,并且在热门区块数量大于零时,设定一耗损平衡程序所使用的一数据搬移信息。本发明亦提供一种快闪存储器的区块管理方法,其中一数据储存装置耦接至一主机,该数据储存装置包括一快闪存储器以及一控制器。快闪存储器包括一备用区块池以及一数据区块池,备用区块池包括数个备用区块,数据区块池包括数个数据区块,具有抹除次数大于一热门临界值的备用区块被决定为数个热门区块,并且一热门区块数量用为热门区块的总数量,该区块管理方法包括接收来自主机的一目标数据;将目标数据写入一目前数据区块;决定一目前程序化的分页是否为目前数据区块的第一分页;当目前程序化的分页为一第一分页时,决定热门区块数量是否大于零;以及当热门区块数量大于零时,设定一耗损平衡程序所使用的一数据搬移信息。附图说明图1为根据本发明数据储存装置的示意图。图2为根据本发明快闪存储器的区块管理方法的流程图。图3为根据本发明目前数据区块的示意图。图4为根据本发明从数据区块池中得到备用区块的方法流程图。图5为根据本发明用以计算监禁临界值及热门临界值的示意图。图6为根据本发明数据合并程序的示意图。图7为根据本发明耗损平衡程序的示意图。图8为根据本发明数据储存装置的另一示意图。图9为根据本发明数个存储器区域的区块管理方法的流程图。符号说明:100、800数据储存装置102、802控制器104快闪存储器120监禁池110、812、822、832备用区块池130、814、824、834数据区块池111~11n备用区块121~12k监禁区块131~13m数据区块300目前数据区块301~30x分页311~314、D5数据WL_TH1第一差值WL_TH2第二差值502、503、504区块601、602、603、604、701、701’来源数据区块;610、711、711’终点备用区块D1、D2、D3、D4有效数据810、820、830快闪存储器区域具体实施方式以下说明是执行本发明的最佳模式。习知技艺者应能知悉在不脱离本发明的精神和架构的前提下,当可作些许更动、替换和置换。本发明的范畴当视权利要求书而定。图1为本发明的数据储存装置100的方块图。在一实施例中,数据储存装置100包括控制器102以及快闪存储器104。快闪存储器104包括用以储存数据的数个区块。在一实施例中,快闪存储器104包括备用区块池(spareblockpool)110以及数据区块池(datablockpool)130。备用区块池110包括用以储存无效数据的数个备用区块111~11n。数据区块池130包括用以储存数据的数个数据区块131~13m。在一实施例中,数据储存装置100耦接至一主机。控制器102根据主机所送出的指令管理快闪存储器104内的区块。快闪存储器104根据一实体地址指定一区块,而主机根据逻一辑地址指定一区块。因此,控制器102必须将主机所送出的一逻辑地址转换成一实体地址。在一实施例中,控制器102将区块的逻辑地址及实体地址间的对应关系纪录在一地址链结表内。每一个数据区块131~13m包括数个分页。当数据储存在数据区块的一分页时,该分页被称为一数据分页。当该分页具有一对应的逻辑地址时,该分页称为有效分页。在一实施例中,控制器102个别地计算数据区块131~13m中每一数据区块的有效分页的总数用以获得一有效分页数量,并且将数据区块131~13m的有效分页数量记录到一有效数量表中。另外,区块被抹除的次数被称为该区块的抹除次数。在一实施例中,控制器102亦将快闪存储器104中所有区块的抹除次数纪录在一抹除次数表中。图2为根据本发明用于管理快闪存储器104的区块的方法200的流程图。当主机送出将被写入数据储存装置100的目标数据时,控制器接收该目标数据(步骤202),接着将目标数据写入目前数据区块(步骤204)。参考图3,图3为快闪存储器104中的一目前数据区块300的示意图。目前数据区块300包括数个分页。目前数据区块300可被用来储存对应到不同逻辑地址的数据分页。举例而言,储存在分页301的数据311对应到逻辑地址L1,储存在分页302的数据312对应到逻辑地址L2以及储存在分页303的数据313对应到逻辑地址L3。在该目标数据被写入目前数据区块后,控制器102接着决定目前数据区块是否已写满数据(步骤206)。在一实施例中,当控制器102目前程序化的分页(programmingpage)为目前数据区块的最后分页时,则控制器102决定目前数据区块为写满的,接着控制器102根据目前数据区块的信息更新数个数据表(步骤208)。在一实施例中,所更新的该等数据表包括一地址链结表以及一有效分页数量表。因为储存在目前数据区块的分页中的数据分别地对应到不同的逻辑地址,因此控制器102必须写下目前数据区块的分页的实体地址与储存在此数据的逻辑地址两者间的映射关系(mappingrelationship)至地址链结表。另外,当主机删除或更新一分页时,该分页将被标记为无效分页。控制器102必须计算在一区块中有效分页的总数用以决定在该区块中的有效分页数量,并且将有效分页数量写至有效分页数量表。在更多的数据被删除及/或被再次更新之后,在数据区块池130中的某些数据区块所储存的分页将不具有有效分页,且它们的有效分页数量将被设定为零。之后,这些有效分页数量为零的数据区块将被设为备用区块,并且由数据区块池130中移至备用区块池110(步骤210)。步骤210将在图4中被更仔细地解说。控制器102继续从备用区块池110中取得一备用区块并指派该备用区块为目前数据区块,用以接收由主机所送出的新数据(步骤212)。图5为根据本发明用以计算监禁临界值(jailthresholdvalue)及热门临界值(hotthresholdvalue)的示意图。在快闪存储器104中所有的区块皆具有一抹除次数。当控制器102将一区块设为备用区块并且将该区块放至备用区块池时,则该区块的抹除次数会增加一次。快闪存储器104的区块的最小抹除次数会随着时间而增加,且在某些情况下,具有最小抹除次数的区块会有所改变。因此,根据快闪存储器104中所有区块的抹除次数的改变,控制器102会频繁地决定该最小抹除次数。如图5所示,当最小抹除次数被决定之后,控制器102会将第一差值WL_TH1加上该最小抹除次数用以取得一热门临界值,以及将第二误差WL_TH2加上该最小抹除次数以取得一监禁临界值。在某一实施例中,该第一差值WL_TH1小于该第二差值WL_TH2。在此,该第二差值WL_TH2大于该第一差值WL_TH1,因此该监禁临界值会大于该热门临界值。当一区块的抹除次数大于热门临界值,则控制器102会将该区块决定为一热门区块。当一区块的抹除次数大于该监禁临界值,则控制器102会将该区块决定为一监禁区块,并将该监禁区块放至图1所示的监禁池(jailpool)120。举例而言,图5所示的区块502、503以及504具有抹除次数大于监禁临界值,因此被置放于监禁池120中。虽然监禁区块121~12k也是备用区块,当控制器102要从备用区块池110中撷取用于储存数据的新备用区块时,控制器102并不会撷取监禁区块。因此,除非将来该监禁区块被释出,否则该监禁区块的抹除次数不会被增加。图4为从数据区块池130中得到备用区块的方法400的流程图。方法400包括用以执行图2所示的方法200中步骤210的详细步骤。首先,控制器102决定由快闪存储器104的区块的抹除次数的一最小抹除次数,并且根据该最小抹除次数来计算一监禁临界值。在更新监禁临界值之后,在监禁池120中的某些监禁区块121~12k的抹除次数将小于更新后的监禁临界值。因此,控制器102将监禁池120中监禁区块121~12k的抹除次数与监禁临界值比较,当监禁区块121~12k的抹除次数小于监禁临界值时,则从监禁池120将该监禁区块释出至备用区块池110(步骤402)。在数据区块池130中的某些数据区块131~13m不具有有效数据并且有效分页数为零。因此,在步骤404中,控制器102搜寻数据区块池130中任何具有有效分页数为零的目标区块,然后进入步骤406,将该等目标区块放至备用区块池110中并且对该等目标区块的抹除次数加一。在步骤408中,控制器102将会决定是否有任何的目标区块的抹除次数大于监禁临界值。若步骤408中决定结果为是,则进入步骤412。在步骤412中,控制器102将抹除次数大于监禁临界值的目标区块放至监禁池120。若步骤408中决定结果为否,则进入步骤410。在步骤410中,控制器102将会决定是否有任何目标区块的抹除次数大于热门临界值。若步骤410中决定结果为是,则进入步骤414。在步骤414中,控制器102决定该目标区块为热门区块,并且将决定为热门区块的目标区块的数量加至热门区块的数量。参考图2。在步骤204中,当该目标数据被写入目前数据区块之后进入步骤206。在步骤206中,控制器102将会决定目前数据区块是否已写满数据。若步骤206中决定结果为否,则进入步骤214。在步骤214中,控制器102决定目前程序化的分页是否为目前数据区块的第一分页。若决定结果为是,则进入步骤216。举例而言,控制器目前程序化的分页为图3所示的分页301,且分页301为目前数据区块300的第一分页,则控制器102决定一备用区块数量是否小于一备用区块数量临界值(步骤216)。备用区块数量为在备用区块池110中备用区块的总数。在一实施例中,备用区块数量临界值为15。假设一备用区块由备用区块池中得到,并且被抹除成为一新的目前数据区块,则在备用区块池中的备用区块总数将少一。在步骤216中,当备用区块数量小于备用区块数量临界值时,则进入步骤218。在步骤218中,控制器102设定用于一数据合并程序所需的一数据搬移信息,以便启始数据合并程序,用以增加备用区块的数量。在一实施例中,用以启始数据合并程序的数据搬移信息包括具有将被合并数据的数个来源数据区块的实体地址以及将被写入合并数据的终点备用区块(destinationspareblock)的实体地址。控制器102从数据区块池130中选择具有最小有效分页数量的数个数据区块作为来源数据区块,并且取得一备用区块作为终点备用区块。图6为根据本发明的一数据合并程序的示意图。当数据合并程序开始时,从数据区块池130中选取具有最小有效分页数量的四个来源数据区块601、602、603以及604,并且从备用池中选取终点备用区块610。然后控制器102抹除终点备用区块610并且将来源数据区块601、602、603以及604的有效数据D1、D2、D3以及D4合并在RAM(未图示)中用以获得一合并数据(D1+D2+D3+D4)。控制器102将合并数据(D1+D2+D3+D4)写入终点备用区块610。最后,控制器102将来源数据区块601、602、603以及604放至备用区块池110,并且将被写入合并数据(D1+D2+D3+D4)的终点备用区块610放至数据区块池130。因此,在执行数据合并程序之后,位于备用区块池中的备用区块总数将会增加三。参考图2。当目前程序化的分页为目前数据区块的第一分页(步骤214),并且备用区块数量大于备用区块数量临界值(步骤216)时,则控制器102将决定热门区块数量是否大于零(步骤220)。热门区块数量为在备用区块池中110具有抹除次数大于热门临界值的热门区块总数量。因为该等热门区块具有高的抹除次数,若备用区块池110中包括大量的热门区块,因此控制器102必须从备用区块池110中撷取热门区块,并且对数据池中具有最小抹除次数的一数据区块执行一耗损平衡程序(wear-levelprocess)。因此,当备用区块数量大于备用区块数量临界值并且热门区块数量大于零(步骤220)时,则控制器102设定用以耗损平衡程序的数据搬移信息,以便启动耗损平衡程序,使得热门区块数量减少(步骤222)。在一实施例中,用以启动耗损平衡程序的数据搬移信息包括将被复制数据的至少一来源数据区块的实体地址以及用于写入数据的至少一终点备用区块的实体地址。当在备用区块池110中具有数个热门区块时,控制器102决定该等热门区块为该等终点备用区块。因为具有低抹除次数的数据区块所储存的数据具有低的更新机率,因此控制器102从数据区块池130中选择具有低抹除次数的数个数据区块作为来源数据区块。图7为根据本发明的耗损平衡程序的示意图。当耗损平衡程序开始时,由数据区块池130中选择具有最小抹除次数的来源数据区块701以及由备用区块池110中选择终点备用区块711。接着,控制器102抹除终点备用区块711,并且将所复制的数据D5写入终点备用区块711’。然后,具有低抹除次数的来源数据区块701’被置放至备用区块池110,并且来自备用区块池110具有高抹除次数的终点备用区块711’会被置放至数据区块池130。因此,在执行完耗损平衡程序之后,备用区块池110中热门区块的总数将减少一个。参考图2。当该目标数据所写入的目前程序化的分页不是目前数据区块的第一分页(步骤214)时,则控制器102决定数据搬移信息是否被设定(步骤224)。若用于数据合并程序或是耗损平衡程序的数据搬移信息已被设定,则控制器102在有限的时间区间中根据数据搬移信息执行部分的数据合并程序或是耗损平衡程序(步骤226)。该有限的时间区间是由主机和数据储存装置104间数据传输所需时间的标准决定。举例而言,当主机送出一写入指令以及送出目标数据到控制器102之后,该主机必须在有限的时间区间100毫秒~300毫秒间收到关于执行完毕的回应信息,并且控制器102只能在有限的时间区间执行数据合并程序或是耗损平衡程序。控制器102会由于有限的时间区间而将数据合并程序或是耗损平衡程序中数据搬移的操作,切成数个数据搬移程序。当一新的目标数据被写入目前程序化的分页后(步骤204),若目前程序化的分页并不是目前数据区块的第一分页(步骤214),则在有限的时间区间中用于数据合并程序或是耗损平衡程序的数据搬移的数个部份操作程序的一者将会被执行。举例而言,如图6所示,当用于数据合并程序的数据搬移信息被设定(步骤224),控制器102在有限的时间区间中,从来源数据区块601、602、603以及604中选取数个具有有效数据的目标分页,并且从目标分页中将有效数据复制至终点备用区块610。举例而言,如图7所示,当用于耗损平衡程序的数据搬移信息被设定(步骤224),控制器102在有限的时间区间中,从来源数据区块701中选取数个目标分页,并且从目标分页将数据复制至终点备用区块711。在数个新的写入指令被执行之后,用于数据合并程序或是耗损平衡程序的数据搬移操作也被完成。图8为本发明中可切换存储器区域的数据储存装置800的方块图。数据储存装置800包括控制器802以及数个快闪存储器区域810、820以及830。在一实施例中,快闪存储器区域810、820以及830分别为不同的快闪存储器芯片。举例来说,快闪存储器区域810为具有单阶储存单元(single-bitpercell;SLC)的快闪存储器,快闪存储器区域820为具有二阶储存单元(2bitpercell;MLC)的快闪存储器以及快闪存储器区域830为具有三阶储存单元(3bitpercell;TLC)的快闪存储器。在另一实施例中,快闪存储器区域810、820以及830为单一快闪存储器内的数个存储器分割区间。每一快闪存储器区域810、820以及830包括一备用区块池以及一数据区块池。控制器802独立地管理位于每一快闪存储器区域810、820以及830中的区块。举例而言,控制器802在单一快闪存储器区域的备用区块池以及数据区块池之间执行数据合并程序或是耗损平衡程序。当执行区块管理时,控制器802并不会将一快闪存储器区域的区块的数据与其他快闪存储器区域的数据做交换。图9为根据本发明中用于管理存储器区域810、820以及830的方法900的流程图。首先,控制器802接收来自主机的目标数据(步骤902)。然后,控制器802自数个快闪存储器区域810、820以及830中,决定出用以写入目标数据的一目标存储器区域(步骤904)。然后,控制器802根据该目标存储器区域,设定一实体地址范围参数(步骤906)。在一实施例中,实体地址范围参数包括一开始地址参数以及一结束地址参数,并且控制器802设定该开始地址参数为目标存储器区域的开始地址,并且设定该结束地址参数为目标存储器区域的结束地址。然后,控制器802根据目标存储器区域,设定一备用区块池参数(步骤908)。在一实施例中,控制器802将目标存储器区域的备用区块池中的备用区块的实体地址纪录至备用区块池参数中。然后,控制器802将目标数据写入目标存储器区域的目前数据区块中(步骤910)。控制器802根据图2所示的方法200中的步骤206~226,对目标存储器区域的数个区块执行数据合并程序或是耗损平衡程序。换句话说,控制器802对目标存储器区域的数据区块池内的数个数据区块执行数据合并程序(步骤912),或于目标存储器区域的备用区块池中的数个备用区块与目标存储器区域的数据区块池中的数个数据区块之间执行耗损平衡程序(步骤914)。在步骤912中的数据合并程序或是步骤914中的耗损平衡程序中数据搬移信息的设定与步骤218或222中的所示者相同,并且执行于步骤912中的数据合并程序或是步骤914中的耗损平衡程序也与步骤226相同。因此,控制器802可以独立地管理目标存储器区域内的区块,而不需要同时管理其他快闪存储器区域内的区块。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1