本发明有关于一种数据储存装置的数据维护方法;特别系关于一种三阶储存单元的数据维护方法。
背景技术:
快闪存储器为一种普遍的非挥发性数据储存媒体,以电性方式抹除与程式化。以非及闸型的快闪存储器(即nandflash)为例,常用作记忆卡(memorycard)、通用串行总线闪存装置(usbflashdevice)、固态硬碟(ssd)、嵌入式快闪存储器模组(emmc)…等的储存媒体。
快闪存储器(如,nandflash)的储存阵列包括多个区块(blocks),其中浮置栅极晶体管可用以构成快闪存储器。浮置栅极晶体管中的浮置栅极,可捕捉的电荷以储存数据。然而,储存于浮置栅极的电荷会由于快闪存储器的操作以及各种环境参数,自浮置栅极流失,造成数据保存(dataretention)的问题。其中,三阶储存单元(triple-levelcell,tlc)的快闪存储器相较于其他快闪存储器的写入程序更为繁复。因此,如何有效地并且稳定的进行写入程序是重要的课题。
技术实现要素:
本发明所提供的数据储存装置以及数据维护方法,可稳定的提供单阶备用区块并且同时将数据写入单阶备用区块。
本发明提供一种数据储存装置。快闪存储器具有多个单阶备用区块、多个单阶数据区块以及多个三阶备用区块。控制器响应于用以将一数据写入快闪存储器的一写入命令,将数据写入单阶备用区块,其中当一既定条件满足时,控制器每写入三个单阶备用区块便将单阶数据区块中存在最久的三者整理至三阶备用区块中之一者。
在一实施例中,每当对等单阶备用区块中之一者进行写入前,控制器判断单阶备用区块的数量是否小于一既定值,并且当单阶备用区块的数量小于既定值时,既定条件被满足。另外,当既定条件未满足时,控制器连续将数据写入单阶备用区块中。
又一实施例中,控制器在将单阶数据区块中存在最久的三者整理至三阶备用区块中之一者后,才将所写入的数据的至少一逻辑地址映射至所写入的单阶备用区块并将映射至逻辑地址的单阶备用区块定义为单阶数据区块。
另外,单阶备用区块为不具有有效数据的单阶区块,单阶数据区块为具有有效数据的单阶区块,并且三阶备用区块为不具有有效数据的三阶区块。
本发明另提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器具有多个单阶备用区块、多个单阶数据区块以及多个三阶备用区块。控制器响应于用以将一数据写入快闪存储器的一写入命令,将数据写入单阶备用区块,其中当一既定条件满足时,控制器先将数据中的一第一部分写入单阶备用储存区块中的三个第一单阶备用储存区块,并且在将数据中的其他部分写入单阶备用储存区块的其他者之前,自单阶数据区块中选择所具有的有效数据存在最久的三个第一单阶数据区块,将第一单阶数据区块中的数据编程至三阶备用区块中之一者以释放第一单阶数据区块。
在一实施例中,在第一单阶数据区块被释放后,控制器将第一部分的至少一逻辑地址映射至第一单阶备用区块,并将第一单阶备用区块定义为单阶数据区块中之三者。另外,在第一单阶备用区块被定义为单阶数据区块中之三者后,控制器先将数据中的一第二部分写入单阶备用储存区块中的三个第二单阶备用储存区块,并且在将数据中的其他部分写入单阶备用储存区块之其他者之前,自单阶数据区块中选择所具有的有效数据存在最久的三个第二单阶数据区块,将第二单阶数据区块中的数据编程至三阶备用区块中之一者以释放第二单阶数据区块。
本发明亦提供一种数据维护方法适用于具有一快闪存储器的数据储存装置,其中快闪存储器具有多个单阶备用区块、多个单阶数据区块以及多个三阶备用区块。数据维护方法包括:接收用以将一数据写入快闪存储器的一写入命令;以及响应于写入命令,将数据写入单阶备用区块。将数据写入单阶备用区块的步骤还包括:当一既定条件满足时,每写入三个单阶备用区块便将单阶数据区块中存在最久之三者整理至三阶备用区块中之一者。
在一实施例中,数据维护方法还包括每当对等单阶备用区块中之一者进行写入前,判断单阶备用区块的数量是否小于一既定值,其中当单阶备用区块的数量小于既定值时,既定条件被满足。将数据写入单阶备用区块的步骤还包括当既定条件未满足时,连续将数据写入单阶备用区块中。另外,将数据写入单阶备用区块的步骤还包括在将单阶数据区块中存在最久的三者整理至三阶备用区块中之一者后,将所写入的数据的至少一逻辑地址映射至所写入的单阶备用区块并将映射至逻辑地址的单阶备用区块定义为单阶数据区块。
本发明又提供一种数据维护方法,适用于具有一快闪存储器的数据储存装置,其中快闪存储器具有多个单阶备用区块、多个单阶数据区块以及多个三阶备用区块。数据维护方法包括:接收用以将一数据写入快闪存储器的一写入命令;以及响应于写入命令,将数据写入单阶备用区块,其中当一既定条件满足时,将数据写入单阶备用区块的步骤还包括:将数据中的一第一部分写入单阶备用储存区块中的三个第一单阶备用储存区块;以及在将数据中的其他部分写入单阶备用储存区块的其他者之前,自单阶数据区块中选择所具有的有效数据存在最久的三个第一单阶数据区块,并且将第一单阶数据区块中的数据编程至三阶备用区块中之一者以释放第一单阶数据区块。
在一实施例中,当既定条件满足时,将数据写入单阶备用区块的步骤还包括:在第一单阶数据区块被释放后,将第一部分的至少一逻辑地址映射至第一单阶备用区块,并将第一单阶备用区块定义为单阶数据区块中之三者。另外,当既定条件满足时,将数据写入单阶备用区块的步骤还包括:在第一单阶备用区块被定义为单阶数据区块中之三者后,控制器先将数据中的一第二部分写入单阶备用储存区块中的三个第二单阶备用储存区块;以及在将数据中的其他部分写入单阶备用储存区块之其他者之前,自单阶数据区块中选择所具有的有效数据存在最久的三个第二单阶数据区块,并且将第二单阶数据区块中的数据编程至三阶备用区块中之一者以释放第二单阶数据区块。
附图说明
图1是本发明的一种实施例的之电子系统的方块图。
图2是本发明的一种实施例之快闪存储器的示意图。
图3是本发明的一种实施例的数据维护方法的流程图。
符号说明
100电子系统;
120主机;
140数据储存装置;
160控制器;
162运算单元;
164永久存储器;
166随机存取存储器;
180快闪存储器;
slc_sp_pool单阶备用池;
tlc_sp_pool三阶备用池;
slc_da_pool单阶数据池;
tlc_da_pool三阶数据池;
slc_sp_1~slc_sp_n单阶备用区块;
slc_da_1~slc_da_p单阶数据区块;
tlc_sp_1~tlc_sp_m三阶备用区块;
tlc_da_1~tlc_da_q三阶数据区块;
s300~s320步骤。
具体实施方式
以下将详细讨论本发明各种实施例的装置及使用方法。然而值得注意的是,本发明所提供的许多可行的发明概念可实施在各种特定范围中。这些特定实施例仅用于举例说明本发明的装置及使用方法,但非用于限定本发明的范围。
图1为本发明所提供的一电子系统的一种实施例的方块图。电子系统100包括一主机120以及一数据储存装置140。数据储存装置140包括一快闪存储器180以及一控制器160,且可根据主机110所下达的命令操作。控制器160包括一运算单元162、一永久存储器(如,只读存储器rom)164以及随机存取存储器(ram)166。永久存储器164与所载的程式码、数据组成固件(firmware),由运算单元162执行,使控制器160基于该固件控制该快闪存储器180。随机存取存储器(ram)166用以载入程式码与参数以提供控制器160根据所载入的程式码与参数动作。快闪存储器180具有多个区块,其中每一区块具有多个页面,其中快闪存储器180以页面为最小单位进行写入,并且以区块为最小单位进行抹除。
图2是本发明的一种实施例的快闪存储器的示意图。如图2所示,快闪存储器180具有一单阶备用池slc_sp_pool、一三阶备用池tlc_sp_pool、一单阶数据池slc_da_pool以及一三阶数据池tlc_da_pool。单阶备用池slc_sp_pool包括多个单阶备用区块(single-levelcell,slc)slc_sp_1~slc_sp_n,其中n为单阶备用池slc_sp_pool中单阶备用区块的数量,并且每一单阶备用区块slc_sp_1~slc_sp_n的大小等同于一个区块的大小,但本发明不限于此。换言之,单阶备用区块slc_sp_1~slc_sp_n为不具有有效数据的单阶区块,并且单阶备用区块slc_sp_1~slc_sp_n用以以单阶储存模式写入数据的区块。值得注意的是,单阶备用池slc_sp_pool中的单阶备用区块slc_sp_1~slc_sp_n被写入有效数据后,则会被定义为单阶数据区块并且被分配到推到(push)单阶数据池slc_da_pool中。单阶数据池slc_da_pool包括多个单阶数据区块(single-levelcell,slc)slc_da_1~slc_da_p,其中p为单阶数据池slc_da_pool中的单阶数据区块的数量,并且每一单阶数据区块slc_da_1~slc_da_p的大小等同于一个区块的大小,但本发明不限于此。换言之,单阶数据区块slc_da_1~slc_da_p为具有有效数据的单阶区块,并且单阶数据区块slc_da_1~slc_da_p中的有效数据用以以三阶储存模式写入三阶备用区块数据的区块。值得注意的是,单阶数据池slc_da_pool中的单阶数据区块slc_da_1~slc_da_p中的有效数据被编程至三阶备用区块后,则会被定义为单阶备用区块并且被分配到推到(push)单阶备用池slc_so_pool中。三阶备用池tlc_sp_pool包括多个三阶备用区块(triple-levelcell,tlc)tlc_sp_0~tlc_sp_m,其中m为三阶备用池tlc_sp_pool中三阶备用区块tlc_sp_0~tlc_sp_m的数量,并且每一三阶备用区块tlc_sp_0~tlc_sp_m的大小等同于一个区块的大小。换言之,三阶备用区块tlc_sp_0~tlc_sp_m是不具有有效数据的三阶区块,并且三阶备用区块tlc_sp_0~tlc_sp_m系用以以三阶储存模式写入数据的区块。详细而言,三阶备用区块tlc_sp_0~tlc_sp_m被写入的数据为原本储存于单阶数据区块的数据。值得注意的是,已被写入有效数据的三阶备用区块tlc_sp_0~tlc_sp_m会被定义为三阶数据区块并且被推至三阶数据池tlc_da_pool中。三阶数据池tlc_da_pool包括多个三阶数据区块(triple-levelcell,slc)tlc_da_1~tlc_da_q,其中q为三阶数据池tlc_da_pool中的三阶数据区块的数量,并且每一三阶数据区块tlc_da_1~tlc_da_p的大小等同于一个区块的大小,但本发明不限于此。换言之,三阶数据区块tlc_da_1~tlc_da_q为具有有效数据的三阶区块,并且三阶数据区块tlc_da_1~tlc_da_q。值得注意的是,三阶数据池tlc_da_pool中的三阶数据区块tlc_da_1~tlc_da_q被中的有效数据被无效后,则会被定义为三阶备用区块并且被分配到推到(push)三阶备用池tlc_sp_pool中。
值得注意的是,当没有任何数据被写入快闪存储器180时,三阶数据池tlc_da_pool以及单阶数据池slc_da_pool中不具有任何三阶数据区块以及单阶数据区块。
另外,三阶区块(三阶数据区块tlc_da_1~tlc_da_q以及三阶备用区块tlc_sp_1~tlc_sp_m)可储存的数据量是单阶区块(单阶数据区块slc_da_1~slc_da_p以及单阶备用区块slc_sp_1~slc_sp_n)的三倍。详细而言,三阶区块以及单阶区块皆是快闪存储器180中之区块,其物理构造是相同的。然而,三阶区块是藉由电压对区块进行多次编程(program)来写入数据,而单阶区块是藉由电压对区块进行一次编程(program)来写入数据。在一实施例中,三阶区块是藉由电压对区块进行三次编程(program)来写入数据。换言之,三个具有有效数据的单阶数据区块可编程为一个三阶数据区块。
由于单阶区块相较于三阶区块较为稳定,因此在本发明的实施例中,单阶区块(slc)是用来作为预取空间(cache),并且在单阶区块快被使用完时,才开始将单阶数据区块的数据编程至三阶区块中。一次将大量的单阶数据区块的数据转移到三阶区块,虽然可确保清出大量的单阶备用区块可使用。然而,控制器160却会因为一次性大量的编程工作无法对写入数据继续进行处理,而造成写入效能不稳定。因此,在本发明的一实施例中,控制器160可基于单阶区块以及三阶区块的特性,交替地执行写入以及清除操作,以确保快闪存储器180可稳定地提供可用的单阶备用区块也可以稳定地进行写入工作。
详细而言,当控制器160自主机120接收到用以将一数据写入快闪存储器180的一写入命令时,控制器则响应于写入命令将数据写入单阶备用区块。另外,每当对等单阶备用区块中之一者进行写入前,控制器160判断单阶备用区块slc_sp_1~slc_sp_n之数量是否小于一既定值,以判断一既定条件是否被满足。当单阶备用区块slc_sp_1~slc_sp_n之数量小于既定值时,既定条件被满足。当既定条件被满足时,控制器160则开始进行清除单阶数据区块slc_da_1~slc_da_p。换言之,当既定条件被满足时,控制器160每写入三个单阶备用区块便将单阶数据区块slc_da_1~slc_da_p中存在最久的三者整理至三阶备用区块tlc_sp_1~tlc_sp_m中之一者。值得注意的是,在一实施例中,数据储存装置140具有一区块维护表,用以记录在单阶数据池slc_da_pool中的每一单阶数据区块slc_da_1~slc_da_p中的有效数据存在的时间,但本发明不限于此。在其他实施例中,数据储存装置140可藉由其他方式记录每一单阶数据区块slc_da_1~slc_da_p中的有效数据存在的时间。另外,当既定条件未满足时,控制器160则接着连续将数据写入单阶备用区块中,并且在对每个单阶备用区块进行写入前判断是否满足既定条件。在其他实施例中,既定条件可包括任何需要清理单阶数据区块的事件。
在一实施例中,控制器160是在将单阶数据区块中存在最久之三者整理至三阶备用区块tlc_sp_1~tlc_sp_m中之一者后,才将所写入的数据的至少一逻辑地址映射至所写入的单阶备用区块并将映射至逻辑地址的单阶备用区块定义为单阶数据区块。在突发的断电事件或者其他中断事件发生时,数据虽然已被写入三阶备用区块中,但数据的链结还是保存在原本的单阶数据区块。因此,数据可保存在较稳定的单阶区块中。
举例而言,当既定条件满足时,控制器160先将数据中的一第一部分写入单阶备用储存区块slc_sp_1~slc_sp_n中的三个第一单阶备用储存区块。接着,在将数据中的其他部分写入单阶备用储存区块slc_sp_1~slc_sp_n之其他者之前,控制器160自单阶数据区块slc_da_1~slc_da_p中选择所具有的有效数据存在最久的三个第一单阶数据区块,并且将第一单阶数据区块中的数据编程至三阶备用区块中之一者以释放第一单阶数据区块,其中被释放的第一单阶数据区块已失去与原数据的地址映射关系,并且被定义为单阶备用区块。接着,在第一单阶数据区块被释放后,控制器160将第一部分的至少一逻辑地址映射至第一单阶备用区块,并将第一单阶备用区块定义为单阶数据区块中之三者。
在第一单阶备用区块被定义为单阶数据区块中之三者后,控制器160接着先将数据中的一第二部分写入单阶备用储存区块中的三个第二单阶备用储存区块。在将数据中的其他部分写入单阶备用储存区块之其他者之前,控制器160自单阶数据区块中选择所具有的有效数据存在最久的三个第二单阶数据区块,将第二单阶数据区块中的数据编程至三阶备用区块中之一者以释放第二单阶数据区块,其中被释放的第二单阶数据区块已失去与原数据的地址映射关系,并且被定义为单阶备用区块。接着,在第二单阶数据区块被释放后,控制器160将第二部分的至少一逻辑地址映射至第二单阶备用区块,并将第二单阶备用区块定义为单阶数据区块中之三者。接着,控制器160重复上述步骤直到数据的所有部分皆被写入单阶备用区块中。另外,上述数据的第一部分以及第二部分的数据量,分别等于三个单阶区块的数据量。
图3是本发明的一种实施例的数据维护方法的流程图。数据维护方法适用于图1所示的数据储存装置140。流程开始于步骤s300。
在步骤s300中,控制器160自主机120接收到用以将一数据写入快闪存储器180的一写入命令。在本实施例中,数据大于三个单阶区块的数据量,但本发明不限于此。
接着,在步骤s302中,控制器160判断一既定条件是否满足。在一实施例中,控制器160判断单阶备用区块slc_sp_1~slc_sp_n的数量是否小于一既定值,以判断一既定条件是否被满足。当单阶备用区块slc_sp_1~slc_sp_n的数量小于既定值时,既定条件被满足。详细而言,当既定条件被满足时,流程进行至步骤s304以开始进行清除单阶数据区块slc_da_1~slc_da_p的操作。当既定条件未被满足时,流程进行至步骤s314。在其他实施例中,既定条件可包括任何需要清理单阶数据区块的事件。
在步骤s304中,控制器160撷取数据中尚未被写入单阶备用区块的一部分。详细而言,控制器160接续着前一次所撷取的数据的部分,撷取数据中尚未被写入单阶备用区块并且等同于三个单阶区块的数据量的一部分。当所剩余的数据小于三个单阶区块时,控制器160则撷取所有剩余的数据。
接着,在步骤s306中,控制器160将所撷取的数据的部分写入单阶备用储存区块slc_sp_1~slc_sp_n中的三个第一单阶备用储存区块。换言之,控制器160将在步骤s304中所撷取的数据的部分写入单阶备用储存区块slc_sp_1~slc_sp_n中之三个单阶备用储存区块。
接着,在步骤s308中,控制器160自单阶数据区块slc_da_1~slc_da_p中选择所具有的有效数据存在最久的三个单阶数据区块。换言之,控制器160自单阶数据区块slc_da_1~slc_da_p中选取三个具有冷数据(colddata)的三个单阶数据区块。
接着,在步骤s310中,控制器160将所选择的三个单阶数据区块中的数据编程至三阶备用区块中之一者以释放所选择的三个单阶数据区块,其中被释放的三个单阶数据区块已失去与原数据的地址映射关系,并且被定义为单阶备用区块。
接着,在步骤s312中,控制器160将所撷取的数据的部分的至少一逻辑地址映射至被写入的单阶备用区块,并将被写入单阶备用区块定义为单阶数据区块中之三者。换言之,控制器160将在步骤s304中所撷取的数据的部分的逻辑地址映射至在步骤s306被写入的单阶备用区块,并将被写入单阶备用区块定义为单阶数据区块中之三者。
在步骤s313中,控制器160判断数据是否是全部写入单阶区块中。当数据未全部写入单阶区块时,流程回到步骤s304以继续对数据进行写入以及清除单阶数据区块。当数据已全部写入单阶区块时,流程结束于步骤s313。值得注意的是,在另一实施例中,当数据未全部写入单阶区块时,流程回到步骤s302,以继续判断既定条件是否被满足。
在步骤s314中,控制器160撷取数据中尚未被写入单阶备用区块的一部分。详细而言,控制器160接续着前一次所撷取的数据的部分,撷取数据中尚未被写入单阶备用区块并且等同于一个单阶区块的数据量的一部分。当所剩余的数据小于一个单阶区块时,控制器160则撷取所有剩余的数据。
在步骤s316中,控制器160将所撷取的数据的部分写入单阶备用储存区块slc_sp_1~slc_sp_n中之一者。换言之,控制器160将在步骤s314中所撷取的数据的部分写入单阶备用储存区块slc_sp_1~slc_sp_n中之一者。
接着,在步骤s318中,控制器160将所撷取的数据的部分的逻辑地址映射至被写入的单阶备用区块,并将被写入单阶备用区块定义为单阶数据区块中之一者。换言之,控制器160将在步骤s314中所撷取的数据的部分的逻辑地址映射至在步骤s316被写入的单阶备用区块,并将被写入单阶备用区块定义为单阶数据区块中之一者。
在步骤s320中,控制器160判断数据是否是全部写入单阶区块中。当数据未全部写入单阶区块时,流程回到步骤s302。当数据已全部写入单阶区块时,流程结束于步骤s320。
综上所述,在步骤s304~s313中,控制器160每写入三个单阶备用区块便将单阶数据区块slc_da_1~slc_da_p中存在最久之三者整理至三阶备用区块tlc_sp_1~tlc_sp_m中之一者。在步骤s314~s320中,控制器160则接着连续将数据写入单阶备用区块中,并且在对每个单阶备用区块进行写入前判断是否满足既定条件。
本发明所提供的数据储存装置以及数据维护方法,可稳定的提供单阶备用区块并且同时将数据写入单阶备用区块。
本发明的方法,或特定型态或其部份,可以以程式码的型态存在。程式码可储存于实体媒体,如软盘、光盘、硬盘、或是任何其他机器可读取(如电脑可读取)储存媒体,亦或不限于外在形式的电脑程式产品,其中,当程式码被机器,如电脑载入且执行时,此机器变成用以参与本发明的装置。程式码也可透过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程式码被机器,如电脑接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途处理单元实作时,程式码结合处理单元提供一操作类似于应用特定逻辑电路的独特装置。
以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即凡依本发明申请专利范围及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所揭示的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。