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

文档序号:14187087阅读:226来源:国知局

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



背景技术:

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

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



技术实现要素:

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

本发明的一实施例提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器具有多个三阶区块,并且每一三阶区块亦包括多个页。控制器在数据储存装置自一断电事件中回复时,检查在断电事件发生时是否存在一未完成写入程序的三阶区块,若存在一未完成写入程序的第一三阶区块,检查是否可成功读取未完成写入程序的第一三阶区块中最后一个进行写入的页中的数据,其中当可成功读取页的数据时,继续将数据写入第一三阶区块。在一实施例中,写入程序将一既定数量的单阶区块中的数据,写入(program)至三阶区块中之一者。

其中,当可成功读取页的数据并且第一三阶区块的写入程序已完成时,控制器检查第一三阶区块中的所有页的多个错误位元数是否超过一第一既定值。当第一三阶区块中的任一页的错误位元数大于第一既定值时,控制器自三阶区块中选择一第二三阶区块,以将原本要写入第一三阶区块的数据全部写入第二三阶区块。当对第二三阶区块写入的过程中皆未发生断电事件时,控制器在完成第二三阶区块的写入程序后,接着处理其他工作,并且省略检查第二三阶区块中的所有页的错误位元数的步骤。

又另一实施例中,控制器还用以当可成功读取页的数据但页的数据的错误位元数高于一第二既定值时,将页在断电程序前被写入的数据,写入快闪存储器中的一暂时区块。

其中,当无法成功读取页的数据时,控制器自三阶区块中选择一第三三阶区块,以将原本要写入第一三阶区块数据全部写入第三三阶区块。控制器选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块中之一者作为第三三阶区块。

本发明的另一实施例还提供一种数据写入方法,适用于一数据储存装置,其中数据储存装置包括具有多个三阶区块的一快闪存储器。数据写入方法包括:当数据储存装置自一断电事件中回复时,检查在断电事件发生时是否存在一未完成写入程序的三阶区块;当在断电事件发生时有一未完成写入程序的第一三阶区块时,检查是否可成功读取第一三阶区块中最后一个进行写入的页中的数据;以及当可成功读取页的数据时,继续将数据写入第一三阶区块。

在一实施例中,数据写入方法还包括:当可成功读取页的数据并且第一三阶区块的写入程序已完成时,检查第一三阶区块中的所有页的多个错误位元数是否超过一第一既定值;当第一三阶区块中的任一页的错误位元数大于一第一既定值时,自三阶区块中选择一第二三阶区块;将原本要写入第一三阶区块的数据全部写入第二三阶区块;以及当对第二三阶区块写入的过程中皆未发生断电事件时,在完成第二三阶区块的写入程序后,接着处理其他工作,并且省略检查第二三阶区块中的所有页的错误位元数的步骤。

又另一实施例中,当可成功读取页的数据时数据写入方法还包括:判断页的数据的错误位元数是否高于一第二既定值;当页的数据的错误位元数高于第二既定值时,将页在断电程序前被写入的数据,写入快闪存储器中的一暂时区块;当无法成功读取页的数据时,自三阶区块中选择一第三三阶区块;以及将原本要写入第一三阶区块的数据全部写入第三三阶区块。

附图说明

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

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

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

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

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

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

符号说明

100电子系统;

120主机;

140数据储存装置;

160控制器;

162运算单元;

164永久存储器;

166随机存取存储器;

180快闪存储器;

slc_1~slc_n单阶区块;

tlc_1~tlc_n三阶区块;

data_1~data_5数据;

s500~s522、s600~s622步骤。

具体实施方式

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

图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)至所需写入的三阶区块中。

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

在某些情况下,例如数据储存装置140的制造过程或者测试过程中,数据储存装置140容易连续地遭受断电攻击。因此,上述的方法会导致控制器160连续地选择新的区块以及无法完成目前的写入程序,造成三阶区块以及控制器160资源的浪费。

有鉴于此,在本发明的一实施例中,控制器160在数据储存装置140自一断电事件中回复时,检查在断电事件发生时是否存在未完成写入程序的三阶区块。接着,控制器160检查是否可成功读取未完成写入程序的一第一三阶区块中最后一个进行写入的一页中的数据。值得注意的是,在本发明中,无法被成功读取指的是无法藉由错误校正或者其他方式将储存于页中的数据正确地读出。反之,成功读取指的是可藉由错误校正或者其他方式将储存于页中的数据正确地读出。当可成功读取页的数据时,控制器160不会放弃原本的第一三阶区块,并且继续将数据写入第一三阶区块以完成相应于第一三阶区块的写入程序。当无法成功读取页的数据时,控制器160自三阶区块中选择一第三三阶区块,以将原本要写入第一三阶区块的数据全部写入第二三阶区块。换言之,控制器160将原本要写入至第一三阶区块的单阶区块中的数据,重新写入第二三阶区块中。值得注意的是,控制器160选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块以作为第三三阶区块,但本发明不限于此。在其他实施例中,控制器160亦可根据抹除次数、写入次数或者其他参考值,来选择新的三阶区块。

在一实施例中,当第一三阶区块的写入程序被完成时,控制器160更用以检查第一三阶区块中的所有页的多个错误位元数是否超过一第一既定值。当第一三阶区块中的任一页的错误位元数大于第一既定值时,控制器160自三阶区块中选择一第二三阶区块,以将原本要写入第一三阶区块的数据全部写入第二三阶区块,但本发明不限于此。值得注意的是,上述的第一既定值由电路设计者所决定或者特殊规格所制定的值,其中电路设计者可根据其电路对于错误位元的校正能力来决定第一既定值。举例而言,当数据的错误位元大于50则无法被成功校正时,电路设计者可将第一既定值设定为45~50之间的值,但本发明不限于此。换言之,第一既定值为用以判断数据是否可能在未来或者现在无法被成功校正的临界值。

又另一实施例中,当第一三阶区块中最后被写入的页的数据可被成功读取但可被成功读取的页的数据的错误位元数高于一第二既定值时,控制器160还用以将页或者第一三阶区块在断电程序前被写入的数据,写入快闪存储器180中的一暂时区块。换言之,控制器160将自页或者整个第一三阶区块所读取的数据写入暂时区块中。在本实施例中,暂时区块为快闪存储器180中的一单阶区块或者一三阶区块,用以暂时储存其他区块中较不稳定的数据。当其他区块中不稳定的数据丢失或者无法被校正以成功读取时,控制器160可自暂时区块,重新获得已丢失或者无法被校正以成功读取的数据。值得注意的是,上述的第二既定值是由电路设计者所决定或者特殊规格所制定的值,其中电路设计者可根据其电路对于错误位元的校正能力来决定第二既定值。举例而言,当数据的错误位元大于50则无法被成功校正时,电路设计者可将第二既定值设定为45~50之间的值,但本发明不限于此。换言之,第二既定值为用以判断数据是否可能在未来或者现在无法被成功校正的临界值。

另外,当三阶区块写入的过程中并未发生断电事件时,控制器160在完成三阶区块的写入程序后,接着处理其他工作,并且省略检查所写入的三阶区块中之所有页的错误位元数的步骤。换言之,当开始一第一三阶区块的写入过程至第一三阶区块已被写完的过程中皆未发生断电事件时,控制器160则不会检查第一三阶区块中的所有页的错误位元是否超过一第一既定值。

举例而言,如图4所示,控制器160要将单阶区块slc_1~slc_3中的数据,写入/整理(program)至三阶区块tlc_4。假设数据data_1~data_4皆被写入页p1~p4中,并且一断电事件发生在控制器160将数据data_5写入三阶区块tlc_4中的页p5时。在本实施例中,控制器160则会在数据储存装置140自断电事件中回复时,检查到断电事件发生在三阶区块tlc_4的写入过程中。换言之,控制器160判断有三阶区块未完成写入程序。接着,控制器160检查是否可成功读取三阶区块tlc_4中最后一个进行写入的页p5中的数据。

当页p5的数据可被成功读取时,控制器160不会放弃三阶区块tlc_4,并且自三阶区块tlc_4的页p6开始继续将数据写入第一三阶区块以完成相应于第一三阶区块的写入程序。换言之,控制器160自三阶区块tlc_4的页p6开始写入数据,直到三阶区块tlc_4的页10也被写入数据。另外,当三阶区块tlc_4中的页p5的数据可被成功读取但页p5的数据的错误位元数高于一第二既定值时,控制器160还用以将自页p5所读取的数据data_5写入快闪存储器180中的一暂时区块。或者,当三阶区块tlc_4中的页p5的数据可被成功读取但页p5的数据的错误位元数高于一第二既定值时,控制器160还用以将自页p1~p5所读取的数据data_1~data_5写入快闪存储器180中的一暂时区块,并且接着完成三阶区块tlc_4的写入程序。接着,当三阶区块tlc_4的写入程序被完成时(三阶区块tlc_4的页p1~p10被写完时),控制器160检查三阶区块tlc_4中的所有页p1~p10的多个错误位元数是否超过一第一既定值。当三阶区块tlc_4中的任一页的错误位元数大于第一既定值时,控制器160自三阶区块tlc_1~tlcn中选择另一三阶区块(例如tlc_5),以将原本要写入三阶区块tlc_4的数据全部写入三阶区块tlc_5。换言之,控制器160将单阶区块slc_1~slc3中的数据,重新写入三阶区块tlc_5中。

反之,当页p5的数据无法被成功读取时,控制器160自三阶区块tlc_1~tlcn中选择不具有有效数的之一三阶区块(例如tlc_5),以将原本要写入三阶区块tlc_4的数据全部写入三阶区块tlc_5。换言之,控制器160将单阶区块slc_1~slc3中的数据,重新写入三阶区块tlc_5中。

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

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

接着,在步骤s502中,控制器160检查在断电事件发生时快闪存储器180是否存在未完成写入程序的三阶区块。当控制器160判断在断电事件发生时有未完成写入程序的一第一三阶区块时,流程进行至步骤s504。当控制器160判断在断电事件发生时没有未完成写入程序的三阶区块时,流程结束于步骤s502。

在步骤s504中,控制器160检查是否可成功读取未完成写入程序的第一三阶区块中最后一个进行写入的一页中的数据。当第一三阶区块中页中的数据可被成功读取时,流程进行至步骤s510。当第一三阶区块中页中的数据无法被成功读取时,流程进行至步骤s520。值得注意的是,在本发明中,无法被成功读取指的是无法藉由错误校正或者其他方式将储存于页中的数据正确地读出。反之,成功读取指的是可藉由错误校正或者其他方式将储存于页中的数据正确地读出。

在步骤s510中,控制器160不会放弃原本的第一三阶区块,并且继续将数据写入第一三阶区块以完成相应于第一三阶区块的写入程序。流程结束于步骤s510。

在步骤s520中,控制器160自三阶区块中选择一第三三阶区块,以取代受损的三阶区块。值得注意的是,控制器160选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块以作为第三三阶区块,但本发明不限于此。在其他实施例中,控制器160亦可根据抹除次数、写入次数或者其他参考值,来选择新的三阶区块。

接着,在步骤s522中,控制器160将原本要写入第一三阶区块的数据全部写入第三三阶区块。换言之,控制器160将原本要写入至第一三阶区块的单阶区块中的数据,重新写入第三三阶区块中。换言之,控制器160将原本要写入至第一三阶区块的单阶区块中的数据,重新写入至第三三阶区块中。流程结束于步骤s522。值得注意的是,当三阶区块写入的过程中并未发生断电事件时,控制器160在完成三阶区块的写入程序后,接着处理其他工作,并且省略检查所写入的三阶区块中的所有页的错误位元数的步骤。换言之,当开始一第一三阶区块的写入过程至第一三阶区块已被写完的过程中皆未发生断电事件时,控制器160则不会检查第一三阶区块中的所有页的错误位元是否超过一第一既定值。

图6a~6b是本发明的一种实施例的数据写入方法的流程图。数据写入方法适用于图1所示的数据储存装置140。流程开始于步骤s600。其中,步骤s600、s602、s604、s610、s620、s622相似于图5的s500、s502、s504、s510、s520、s522,故其说明可参考图5,在此不再赘述。

在步骤s606中,第一三阶区块中最后被写入的页的数据可成功读取时,控制器160判断可被成功读取的页的数据的错误位元是否超过一第二既定值。当可被成功读取的页的数据的错误位元超过一第二既定值时,流程进行至步骤s608,否则,流程进行至步骤s610。

在步骤s608中,控制器160将错误位元超过第二既定值的页或者第一三阶区块在断电程序前被写入的数据,写入快闪存储器180中的一暂时区块。换言之,控制器160将自错误位元超过第二既定值的页或者整个第一三阶区块所读取的数据写入暂时区块中。

在步骤s614中,控制器160检查第一三阶区块中的所有页的多个错误位元数是否超过一第一既定值。当第一三阶区块中的任一页的错误位元数大于第一既定值时,流程进行至步骤s616;否则,流程结束于步骤s614。

接着,在步骤s616中,控制器160自三阶区块中选择一第二三阶区块。值得注意的是,控制器160选择三阶区块中除了第一三阶区块外,不具有有效数据的三阶区块以作为第二三阶区块,但本发明不限于此。在其他实施例中,控制器160亦可根据抹除次数、写入次数或者其他参考值,来选择二阶区块。

接着,在步骤s618中,控制器160将原本要写入第一三阶区块的数据全部写入第二三阶区块。换言之,控制器160将原本要写入第一三阶区块的单阶区块中的数据,重新写入第二三阶区块中。流程结束于步骤s618。

如上所述,本发明所提供的数据储存装置140以及数据写入方法可藉由继续使用遭受断电攻击的三阶区块,来避免三阶区块的浪费并且减少三阶区块的抹除次数。另外,本发明所提供的数据储存装置140以及数据写入方法可藉由省略未被断电攻击的三阶区块的检查,来增进数据储存装置140的效能。

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

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

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