数据储存装置及其数据写入方法与流程

文档序号:14194940研发日期:2016年阅读:326来源:国知局
技术简介:
本专利针对断电导致三阶区块写入中断的问题,提出在断电恢复后,控制器暂停原未完成区块的写入,转而将数据分批写入空白三阶区块,并清除整理时间限制,确保写入连续性,避免数据丢失。
关键词:断电恢复,三阶区块写入

本发明有关于一种数据储存装置之数据写入方法;特别有关于一种三阶储存单元的数据写入方法。



背景技术:

快闪存储器为一种普遍的非挥发性数据储存媒体,是以电性方式抹除与程序化。以与非门型的快闪存储器(即nandflash)为例,常用作记忆卡(memorycard)、通用串行总线闪存装置(usbflashdevice)、固态硬盘(ssd)、嵌入式快闪存储器模组(emmc)…等的储存媒体。

快闪存储器(如,nandflash)的储存阵列包括多个个区块(blocks),其中浮置梵极晶体管可用以构成快闪存储器。浮置栅极晶体管中的浮置栅极,可捕捉的电荷以储存数据。然而,储存于浮置栅极的电荷会由于快闪存储器的操作以及各种环境参数,自浮置栅极流失,造成数据保存(dataretention)的问题。其中,三阶储存单元(triple-levelcell,tlc)之快闪存储器相较于其他单阶储存单元(single-levelcell,slc)的快闪存储器以及二阶储存单元(multi-levelcell,mlc)的快闪存储器,更容易受环境影响而无法保存数据。尤其是在断电事件发生时,三阶储存单元相较于其他储存单元有更大的机率被断电事件影响而造成数据损毁。



技术实现要素:

本发明所提供的数据储存装置以及数据写入方法可藉由继续使用遭受断电攻击的三阶区块,来避免三阶区块的浪费并且减少三阶区块的抹除次数。

本发明的一实施例提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器具有多个三阶区块,其中每一三阶区块亦包括多个页面。控制器在数据储存装置自一断电事件中回复时,停止将数据写入在断电事件发生时未完成一写入程序的一第一三阶区块,每当一第一既定数量的写入命令被执行后,将第一三阶区块的有效数据写入另一第二三阶区块。

在一实施例中,快闪存储器还具有多个单阶区块,每一单阶区块包括多个页面。第一三阶区块的写入程序是将一既定数量的单阶区块中的数据,写入(program)第一三阶区块,并且写入命令用以将数据写入单阶区块中之一者。另外,控制器依序将第一三阶区块中的有效数据写入第二三阶区块的至少一页面中,并且清除一最大整理时间,其中最大整理时间用以限制控制器将数据自单阶区块写入三阶区块的时间,并且第一既定数量为1。

又一实施例中,当第二三阶区块被填满后,控制器则每当一第二既定数量的写入命令被执行后,将一既定数量的单阶区块中的有效数据写入三阶区块中的其它者。其中,第一既定数量小于第二既定数量。

本发明的另一实施例提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器具有多个单阶区块以及多个三阶区块,其中每一单阶区块包括多个页面,并且每一三阶区块亦包括多个页面。控制器在数据储存装置自一断电事件中回复后的一第一期间,每当一第一既定数量的写入命令被执行后,将一第一三阶区块的有效数据写入三阶区块中的一第二三阶区块,并且在第一期间后的一第二期间,每当一第二既定数量的写入命令被执行后,将其他单阶区块中的有效数据写入三阶区块中的其它者。

在一实施例中,第一三阶区块为在断电事件发生时未完成写入程序的三阶区块,并且第一既定数量小于第二既定数量。

另一实施例中,在第一期间中,每当原来要被写入第一三阶区块的数据的一部分被写入第一三阶区块后,控制器更清除一最大整理时间。

本发明又另一实施例提供一种数据写入方法,适用于一数据储存装置,其中数据储存装置包括具有多个三阶区块的一快闪存储器。数据写入方法包括:当数据储存装置自一断电事件中回复时,检查在断电事件发生时是否存在未完成写入程序的三阶区块;当在断电事件发生时有一第一三阶区块未完成写入程序时,停止将数据写入在断电事件发生时未完成一写入程序的一第一三阶区块,并且自第一三阶区块中选择一第二三阶区块;以及当数据储存装置自断电事件中回复后,每当一第一既定数量的写入命令被执行后,将第一三阶区块的有效数据写入第二三阶区块。

另一实施例中,快闪存储器还包括多个单阶区块,其中数据写入方法还包括:当第二三阶区块被填满后,每当一第二既定数量的写入命令被执行后,将一既定数量的单阶区块中的有效数据写入至三阶区块中的其它者。

本发明的另一实施例提供一种数据写入方法,适用于一数据储存装置,其中数据储存装置包括具有多个单阶区块以及多个三阶区块的一快闪存储器。数据写入方法包括:在数据储存装置自断电事件中回复后的一第一期间,每当一第一既定数量的写入命令被执行后,将一第一三阶区块的有效数据写入三阶区块中的一第二三阶区块;以及在第一期间后的一第二期间,每当一第二既定数量的写入命令被执行后,将其他单阶区块中的有效数据的一部分写入三阶区块中的其它者。

另一实施例中,数据写入方法,还包括在第一期间中,每当将原来要被写入至一第一三阶区块的数据的一部分写入至第二三阶区块后,更清除一最大整理时间。

附图说明

图1是本发明的一种实施例的电子系统的方块图。

图2是本发明的一种实施例的快闪存储器的示意图。

图3是本发明的一种实施例的区块的示意图。

图4是本发明的一种实施例的排程的示意图。

图5是本发明的另一种实施例的区块的示意图。

图6是本发明的另一种实施例的区块的示意图。

图7是本发明的另一种实施例的排程的示意图。

图8是本发明的一种实施例的数据写入方法的流程图。

符号说明

100电子系统;

120主机;

140数据储存装置;

160控制器;

162运算单元;

164永久存储器;

166随机存取存储器;

180快闪存储器;

slc_1~slc_n单阶区块;

tlc_1~tlc_n三阶区块;

wp_1~wp_12写入程序;

gc_1~gc_8写入程序;

p1~p6页面;

data_1~data_3数据;

s800~s806步骤。

具体实施方式

以下将详细讨论本发明各种实施例的装置及使用方法。然而值得注意的是,本发明所提供的许多可行的发明概念可实施在各种特定范围中。这些特定实施例仅用于举例说明本发明的装置及使用方法,但非用于限定本发明的范围。

图1为本发明所提供的一电子系统的一种实施例的方块图。电子系统100包括一主机120以及一数据储存装置140。数据储存装置140包括一快闪存储器180以及一控制器160,且可根据主机110所下达的命令操作。控制器160包括一运算单元162、一永久存储器(如,唯读存储器rom)164以及随机存取存储器(ram)166。永久存储器164与所载的程序码、数据组成固件(firmware),由运算单元162执行,使控制器160基于该固件控制该快闪存储器180。随机存取存储器(ram)166用以载入程序码与参数以提供控制器160根据所载入的程序码与参数动作。快闪存储器180具有多个区块,其中每一区块具有多个页面,其中快闪存储器180以页面为最小单位进行写入,并且以区块为最小单位进行抹除。在某些实施例中,控制器160可包括一错误校正引擎(未图示)用以对所读取的数据进行错误校正(errorcorrection),以及对写入的数据进行编码以获得校验码(parity),其中错误校正引擎更可藉由读取数据来获得页面中所储存的数据的错误位元。

在一实施例中,快闪存储器180中的区块可包括多个单阶区块slc_1~slc_n以及多个三阶区块tlc_1~tlc_n,如图2所示,其中每一单阶区块slc_1~slc_n具有多个页面,并且每一三阶区块tlc_1~tlc_n亦具有多个页面。单阶区块slc_1~slc_n用以以单阶储存单元模式(single-levelcellmode,slcmode)写入数据的区块,并且三阶区块用以以三阶储存单元模式(triple-levelcellmode,tlcmode)写入数据的区块。另外,三阶区块tlc_1~tlc_n可储存的数据量是单阶区块slc_1~slc_n的三倍。详细而言,三阶区块以及单阶区块中的页面皆是快闪存储器180中的页面,其物理构造是相同的。然而,三阶区块中的页面是藉由电压对区块进行多次写入(program)来写入数据,而单阶区块中的页面是藉由电压对区块进行一次写入(program)来写入数据。在一实施例中,三阶区块是藉由电压对区块进行三次写入(program)来写入数据。换言之,三个具有有效数据的单阶区块可整理为一个三阶区块,但本发明不限于此。

值得注意的是,本发明所揭示的快闪存储器180为操作于三阶储存单元(triple-levelcell,tlc)模式的存储器,并且包括单阶储存单元(single-levelcell,slc),其中数据储存至三阶区块tlc_1~tlc_n之前,需要先将数据储存至相应的多个个单阶区块slc_1~slc_n。在数据的储存过程中,控制器160被设置为用以对单阶区块slc_1~slc_n中的一预定数量的单阶区块进行一预定次数的读取程序,以将单阶储存单元的数据写入(program)至一个三阶区块中。详细而言,当控制器160需要将数据写入快闪存储器180中的一特定三阶区块时,控制器160会先将数据写入单阶区块slc_1~slc_n中的一既定数量的特定单阶区块。接着,控制器160对特定单阶区块进行一预定次数的读取程序,以分别根据所读取的数据写入(program)特定三阶区块,进而将数据储存至特定三阶区块中。换言之,三阶区块的写入程序是将一既定数量的单阶区块中的数据,写入(program)至所需写入的三阶区块中。值得注意的是,在本发明中将单阶区块中的数据写入(program)至所需写入的三阶区块的动作为写入程序。另外,写入程序通常是在背景作业。换言之,当数据需要被写入快闪存储器180时,控制器160只要将欲写入的数据写入单阶区块中,数据储存装置140或者主机120就会认定数据已写入快闪存储器180,其中,在本发明中,将数据写入单阶区块的动作同样为写入程序。接着,控制器160会在背景排程三阶区块的写入程序,以将单阶区块中的数据写入三阶区块中。

在一实施例中,既定数量可为3,但本发明不限于此。在其他实施例中,既定数量亦可为4、5、6、7、8或者其他正整数。举例而言,控制器160需要将数据写入快闪存储器180中的一特定三阶区块tlc_1,如图3所示。控制器160会先将数据写入3个的特定单阶区块slc_1~slc_3。接着,控制器160分别对特定单阶区块slc_1~slc_3中的三个第一页面进行第一次读取程序,以根据特定单阶区块slc_1~slc_3中的三个第一页面的数据对特定三阶区块tlc_1进行第一次写入。接着,控制器160分别对特定单阶区块slc_1~slc_3中的同样三个第一页面进行第二次读取程序,以根据特定单阶区块slc_1~slc_3中的三个第一页面的数据对特定三阶区块tlc_1中的该第一页面进行第二次写入。最后,控制器160分别对特定单阶区块slc_1~slc_3中的同样三个第一页面进行第三次读取程序,以根据特定单阶区块slc_1~slc_3中的三个第一页面的数据对特定三阶区块tlc_1中的该第一页面进行第三次写入。经由上述的三次写入,单阶区块slc_1~slc_3中的三个第一页面的数据才被完整地写入特定三阶区块tlc_1中的该第一页面,依此类推,直到特定单阶区块slc_1~slc_3中的所有页面的数据皆被写入特定三阶区块tlc_1中为止。

如上所述,对三阶区块tlc_1~tlc_n进行写入所需要的时间较长于将数据写入单阶区块slc_1~slc_n的时间。因此,断电事件较容易发生在对三阶区块tlc_1~tlc_n写入过程中。在一实施例中,每当一断电事件发生在对三阶区块写入的过程中时,控制器160就选取一个新的三阶区块,并且在背景中将原本要写入原三阶区块的单阶区块中的数据,重新写入新的三阶区块中。另外,控制器160可在数据储存装置140自断电事件回复后,藉由快闪存储器180或者其他存储器装置中的表,来判断是否有三阶区块的写入程序被断电事件打断。举例而言,快闪存储器180可具有一表用以记录某页面或者某区块开始被写入,以及另一表用以记录某页面或者某区块已写入完毕。在本实施例中,快闪存储器180可藉由比较该两个表,来判断是否有写入程序被打断,但本发明不限于此。在其他实施例中,数据储存装置140亦可藉由一个表、多个表或者旗标,来记录数据写入的状况。另外,只要三阶区块中的任一页面没有被写完,该三阶区块的写入程序即没有完成。

值得注意的是,由于对三阶区块tlc_1~tlc_n进行写入所需要的时间较长,所以数据储存装置140会具有一最大整理时间,以限制控制器160在背景将数据自单阶区块slc_1~slc_n写入三阶区块tlc_1~tlc_n所花费的时间。举例而言,控制器160在n笔写入命令内,在背景执行三阶区块的写入程序的时间不能超过一既定时间,其中最大整理时间是用以累计控制器160已花费在写入程序上的时间。当最大整理时间超过既定时间时,控制器160则必须停止写入程序,直到n-1笔写入命令执行完毕后最大整理时间归零,控制器160方可继续执行写入程序,但本发明不限于此。在其他实施例中,最大整理时间亦可为一既定值,控制器160会根据最大整理时间排程三阶区块的写入程序。又在其他实施例中,控制器160亦可以其他形式利用最大整理时间,以达到控制三阶区块的之写入程序的目的。

如上所述,最大整理时间可避免过多的背景工作耗损数据储存装置140的资源,并且避免使用者在使用上感觉操作不顺。然而,为了避免上述问题,控制器160则必须将一个三阶区块的写入程序,分散在一第二既定数量的写入命令后执行,如图4所示。图4是本发明的一种实施例的排程的示意图,其中wp_1~wp_9为相应于不同写入命令的写入程序,gc_1~gc_3为写入程序。在一实施例中,每一写入程序wp_1~wp_9是对一单阶区块中的一页面进行写入,每一三阶区块的写入程序gc_1~gc_3是对一三阶区块中的一页面进行写入,但本发明不限于此。在其他实施例中,每一单阶区块的写入程序wp_1~wp_9是对属于单阶区块的至少一页面进行写入,每一三阶区块的写入程序gc_1~gc_3是对属于三阶区块中的至少一页面进行写入。在图4的实施例中,由于最大整理时间的限制,三阶区块的写入程序gc_1~gc_3需要间隔三个写入程序才可以执行。换言之,每当四个写入命令被执行后,控制器160才将一既定数量的单阶区块中的有效数据陆续写入至三阶区块。假如填满一个三阶区块需要三次分散的写入程序gc_1~gc_3才可完成,三阶区块则需要在9笔写入命令的写入程序wp_1~wp_9被执行后才能完成其写入程序。值得注意的是,图4仅为本发明的一实施例,其中单阶区块的写入程序以及三阶区块的写入程序的数量以及配置并不对本发明造成限制。

在某些情况下,例如数据储存装置140的制造过程或者测试过程中,数据储存装置140容易连续地遭受断电攻击。因此,上述的方法会导致控制器160无法完成目前三阶区块的写入程序,造成控制器160资源的浪费。举例而言,如图4所示,若断电事件连续的发生在数据储存装置140回复后的9笔写入命令内,目前所处理的三阶区块的写入程序则无法被完成,并且控制器160会不停的选择新的三阶区块以进行写入。

有鉴于此,在本发明的一实施例中,控制器160可在自一断电事件回复后,先以较快的速率处理完被中断的第一三阶区块的写入程序,再回复到正常的速率处理其他三阶区块的写入程序。详细而言,控制器160在数据储存装置140自一断电事件中回复后的一第一期间内,每当一第一既定数量的写入命令被执行后,将原来要被写入一第一三阶区块的数据的一部分写入一第二三阶区块,其中当所有数据填满第二三阶区块时,第一期间结束。另外,第一三阶区块为在断电事件发生时,未完成写入程序的三阶区块。值得注意的是,在本发明中所述的"未完成写入程序的三阶区块",指的是已开始写入程序但尚未完成写入程序的三阶区块。在该第一期间后的一第二期间,每当一第二既定数量的写入命令被执行后,控制器160将其他单阶区块中的有效数据写入中的一部分写入其他可使用的三阶区块中,其中第一既定数量小于第二既定数量。在一实施例中,第一既定数量为1,第二既定数量为4,但本发明不限于此。在其他实施例中,第一既定数量以及第二既定数量亦可为其他由电路设计者所决定的数值。另外,在第一期间中,每当原来要被写入第一三阶区块的有效数据的一部分被写入第一三阶区块后,控制器160都会清除最大整理时间,使得三阶区块的写入程序可以连续地在下个单阶区块的写入程序中被执行。

换言之,控制器160在数据储存装置140自一断电事件中回复时,检查在断电事件发生时是否存在未完成写入程序的三阶区块。接着,当断电事件发生时存在未完成写入程序的一第一三阶区块时,控制器160停止将数据写入在断电事件发生时未完成写入程序的第一三阶区块,并且自三阶区块中选择一第二三阶区块,以将原本要写入第一三阶区块的有效数据全部写入第二三阶区块。换言之,控制器160将原本要写入至第一三阶区块的单阶区块中的有效数据,重新写入第二三阶区块中。值得注意的是,控制器160是选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块以作为第二三阶区块,但本发明不限于此。在其他实施例中,控制器160亦可根据抹除次数、写入次数或者其他参考值,来选择新的三阶区块。详细而言,在本实施例中,在自断电事件回复后,每当第一既定数量的写入命令被执行后,控制器160将原来要被写入至第一三阶区块的数据的一部分写入至另一第二三阶区块的至少一页面,并且清除一最大整理时间,直到第二三阶区块被原来要被写入第一三阶区块的数据填满。当第二三阶区块被填满后,控制器160则每当第二既定数量的写入命令被执行后,将一既定数量的单阶区块中的有效数据写入三阶区块中的其它者。

举例而言,如图5所示,控制器160要将单阶区块slc_1~slc_3中的数据data_1~data_6,写入/整理(program)至三阶区块tlc_4。假设数据data_1~data_2皆被写入页面p1~p2中,并且一断电事件发生在控制器160将数据data_3写入三阶区块tlc_4中的页面p3时。控制器160在数据储存装置140自断电事件中回复时,停止将数据写入在断电事件发生时未完成写入程序的三阶区块tlc_4,并且自三阶区块中选择另一三阶区块tlc_6,以在背景作业中将原本要写入三阶区块tlc_4的数据全部写入三阶区块tlc_6,如图6所示。背景作业的排程请参考图7。

如图7所示,控制器160在数据储存装置140自断电事件中回复后的一第一期间pt1内,每当一个写入命令被执行,就将原来要被写入一三阶区块tlc_4的数据的一部分写入至三阶区块tlc_6,并且清除最大整理时间,使得三阶区块的写入程序可以连续地在下个单阶区块的写入程序中被执行。当单阶区块slc_1~slc_3的所有数据data_1~data_6都已写入三阶区块tlc_6时,第一期间pt1结束。换言之,已单阶区块slc_1~slc_3的所有数据data_1~data_6都已被写入时(三阶区块tlc_6的写入程序完成时),第一期间pt1结束。在本实施例中,每个单阶区块的写入程序wp_1~wp_12皆系对单皆区块中的一页面进行写入,每个三阶区块的程序gc_1~gc_8皆是将数据写入三阶区块的一页面,但本发明不限于此。详细而言,控制器160在三阶的写入程序gc_1中将数据data_1写入三阶区块tlc_6的页面p1并且清除最大整理时间;在三阶区块的写入程序gc_2中将数据data_2写入三阶区块tlc_6的页面p2并且清除最大整理时间;在写入程序gc_3中将数据data_3写入三阶区块tlc_6的页面p3并且清除最大整理时间,依此类推。在第一期间tp1后的第二期间tp2,每当四个写入命令被执行后,控制器160将其他单阶区块中的有效数据的一部分陆续在单阶区块的写入程序gc_7、gc_8等中,写入三阶区块中的其它者。值得注意的是,在一实施例中,第一期间tp1的其余工作时间皆为第二期间tp2。

图8是本发明的一种实施例的数据写入方法的流程图。数据写入方法适用于图1所示的数据储存装置140。流程开始于步骤s800。

在步骤s800中,数据储存装置140自一断电事件回复。值得注意的是,本发明所指的断电事件包括数据储存装置140预期地或者非预期地被切断电源,但本发明不限于此。在其他实施例中,断电事件可仅包括数据储存装置140非预期地被切断电源。

接着,在步骤s802中,控制器160判断在断电事件发生时是否存在正在处理且未完成写入程序的三阶区块。当控制器160判断在断电事件发生时有正在处理且未完成写入程序的一第一三阶区块时,流程进行至步骤s804以进入第一期间;否则,流程跳过第一期间直接进行至s806已进入第二期间。

在步骤s804中,在第一期间中,每当一第一既定数量的写入命令被执行后,将一第一三阶区块的有效数据的一部分写入一第二三阶区块。当所有数据填满第二三阶区块时,第一期间结束,流程进行至步骤s806。在一实施例中,每当原来要被写入第一三阶区块的数据的一部分被写入第一三阶区块后,控制器160都会清除最大整理时间,使得三阶区块的写入程序程序可以连续地在下个单阶区块的写入程序中被执行,但本发明不限于此。值得注意的是,将原来要被写入第一三阶区块的数据的一部分写入第二三阶区块的至少一页面的写入程序,可在步骤s804中所执行的第一个写入命令之前、之中或者之后执行,本发明不限于此。在其他实施例中,写入程序亦可以其他方式安排在步骤s804中。另外,控制器160选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块以作为第三三阶区块,但本发明不限于此。在其他实施例中,控制器160亦可根据抹除次数、写入次数或者其他参考值,来选择新的三阶区块。

在步骤s806中,在第一期间后的一第二期间中,每当一第二既定数量的写入命令被执行后,控制器160将其他单阶区块中的有效数据中的一部分,逐一写入空白的三阶区块中,其中第一既定数量小于第二既定数量。在一实施例中,第一既定数量为1,第二既定数量为4,但本发明不限于此。在其他实施例中,第一既定数量以及第二既定数量亦可为其他由电路设计者所决定的数值。流程结束于步骤s806。

如上所述,本发明所提供的数据储存装置140以及数据写入方法可避免在连续断电的情况下,无法完成被中断的三阶区块的写入程序。

本发明的方法,或特定型态或其部份,可以以程序码的型态存在。程序码可储存于实体媒体,如软盘、光盘、硬盘碟、或是任何其他机器可读取(如电脑可读取)储存媒体,亦或不限于外在形式的电脑程序产品,其中,当程序码被机器,如电脑载入且执行时,此机器变成用以参与本发明的装置。程序码也可透过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序码被机器,如电脑接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途处理单元实作时,程序码结合处理单元提供一操作类似于应用特定逻辑电路的独特装置。

以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即凡依本发明申请专利范围及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所揭示的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。

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