数据储存装置及其数据维护方法与流程

文档序号:15517327发布日期:2018-09-25 18:41阅读:202来源:国知局

本发明有关于一种存储器装置的数据维护方法;特别有关于一种在读取程序中的数据维护方法。



背景技术:

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

快闪存储器(如,nandflash)的储存阵列包括多个个区块(blocks),各区块包括多个页(pages),其中浮置栅极晶体管可用以构成快闪存储器。浮置栅极晶体管中的浮置栅极,可捕捉的电荷以储存数据。但浮置栅极所捕捉的电荷的能力可能会因为时间、环境以及使用程度损坏。因此,快闪存储器需要时常对数据进行维护。然而,数据维护会造成程序时间上的延迟,造成使用者感受到不顺畅的操作。



技术实现要素:

本发明提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。控制器自一主机接收用以读取一数据的一读取命令,分析读取命令所需的多个读取作业,以及根据读取命令的一输入/输出延迟时间以及读取作业的数量,决定每一读取作业的一作业时间,其中在读取作业的一第一读取作业中,控制器自快闪存储器读取数据的一部分,将部分传送给主机,并且根据一既定条件执行一第一维护程序,其中既定条件包括一剩余时间,并且剩余时间为作业时间减去第一读取作业已花费的时间。

在一实施例中,作业时间为输入/输出延迟时间除以读取作业的数量所获得之值,并且作业时间小于一数据子集读出时间。在另一实施例中,作业时间随着读取作业的执行顺序而递减,并且每一作业时间小于一数据子集读出时间。

另外,控制器更用以在将所读取的部分传送给主机后,决定多个维护程序,其中维护程序用以维护快闪存储器中的数据。在一实施例中,维护程序包括一耗损平均程序、一读取回收程序、一更新程序以及一数据集中程序。当快闪存储器的区块中最小的抹除次数与最大的抹除次数的差大于一既定差值时,控制器判断维护程序包括一耗损平均程序。当快闪存储器中的数据的错误位元数大于一既定错误位元数时,控制器判断维护程序包括一读取回收程序。当快闪存储器中的数据的读取次数大于一既定读取次数时,控制器判断维护程序包括一更新程序。当区块中的三阶备用区块的数量小于一既定区块数量时,控制器判断维护程序包括一数据集中程序。

在一实施例中,在第一读取作业中,控制器根据既定条件,在维护程序中选择一者作为第一维护程序,其中既定条件还包括维护程序的优先权。举例而言,读取回收程序的优先权大于数据集中程序,数据集中程序的优先权大于更新程序,并且更新程序的优先权大于耗损平均程序。

在另一实施例中,在第一读取作业中,控制器还用以在第一维护程序结束后,判断剩余时间是否超过一既定值,当剩余时间超过既定值时,根据既定条件,选择尚未执行的维护程序中的一第二维护程序,并且执行第二维护程序。当剩余时间小于既定值时,结束第一读取作业,以执行读取作业中的一第二读取作业。

本发明亦提供一种数据维护方法,适用于具有一快闪存储器的一数据储存装置。数据维护方法包括:自一主机接收用以读取一数据的一读取命令;分析读取命令所需的多个读取作业;以及根据读取命令的一输入/输出延迟时间以及读取作业的数量,决定每一读取作业的一作业时间。读取作业的一第一读取作业包括:自快闪存储器读取数据的一部分;将部分传送给主机;以及根据一既定条件执行一第一维护程序,其中既定条件包括一剩余时间,并且剩余时间为作业时间减去第一读取作业已花费的时间。

在一实施例中,作业时间为输入/输出延迟时间除以读取作业的数量所获得的值,并且作业时间小于一数据子集读出时间。在另一实施例中,作业时间随着读取作业的执行顺序而递减,并且每一作业时间小于一数据子集读出时间。

另外,第一读取作业还包括:在将所读取的部分传送给主机后,决定多个维护程序;以及根据既定条件,在维护程序中选择一者作为第一维护程序。其中,维护程序用以维护快闪存储器中的数据,并且维护程序包括一耗损平均程序、一读取回收程序、一更新程序以及一数据集中程序。决定维护程序的步骤还包括:当区块中最小的抹除次数与最大的抹除次数的差大于一既定差值时,判断维护程序包括一耗损平均程序;当快闪存储器中的数据的错误位元数大于一既定错误位元数时,判断维护程序包括一读取回收程序;当快闪存储器中的数据的读取次数大于一既定读取次数时,判断维护程序包括一更新程序;以及当区块中的三阶备用区块的数量小于一既定区块数量时,判断维护程序包括一数据集中程序。

在一实施例中,既定条件还包括维护程序的优先权,其中读取回收程序的优先权大于数据集中程序,数据集中程序的优先权大于更新程序,并且更新程序的优先权大于耗损平均程序。

另外,第一读取作业还包括:在第一维护程序结束后,判断剩余时间是否超过一既定值;当剩余时间超过既定值时,根据既定条件,选择尚未执行的维护程序中的一第二维护程序;以及当剩余时间小于既定值时,结束第一读取作业,以执行读取作业中的一第二读取作业。

附图说明

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

图2a及2b是本发明的一种实施例的数据维护方法的流程图。

符号说明

100电子系统;

120主机;

140数据储存装置;

160控制器;

162运算单元;

164永久存储器;

166随机存取存储器;

180快闪存储器;

s200~s220步骤。

具体实施方式

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

图1为本发明所提供的一电子系统的一种实施例的方块图。电子系统100包括一主机120以及一数据储存装置140。数据储存装置140包括一快闪存储器180以及一控制器160,且可根据主机120所下达的命令操作。控制器160包括一运算单元162、一永久存储器(如,唯读存储器rom)164以及随机存取存储器(ram)166。永久存储器164与所载的程序码、数据组成固件(firmware),由运算单元162执行,使控制器160基于该固件控制该快闪存储器180。随机存取存储器(ram)166用以载入程序码与参数以提供控制器160根据所载入的程序码与参数动作。举例而言,控制器160可执行读取作业以及维护程序。

快闪存储器180包括多个区块,每一区块包括多个页面。值得注意的是,快闪存储器180以区块为最小单位进行抹除,并且页面为最小单位进行写入。值得注意的是,快闪存储器180中的区块具有不同的属性,其中区块可分为单阶区块(single-levelcellblock,slcblock)以及三阶区块(triple-levelcellblock,tlcblock),但本发明不限于此。在其他实施例中,区块可仅有三阶区块,而没有单阶区块。三阶区块以及单阶区块是使用不同的程序化(program)方式将数据进行写入,并且三阶区块的数据容量为单阶区块的三倍,其中具有有效数据的单阶区块为单阶数据区块,不具有又效数据且没有损坏的单阶区块为单阶备用区块。具有有效数据的三阶区块为三阶数据区块,不具有又效数据且没有损坏的三阶区块为三阶备用区块。在一实施例中,使用者的数据会被存入三阶区块中。另外,使用者可藉由主机120将数据自快闪存储器180中读出。

在一实施例中,当控制器160自主机120接收到一读取命令时,控制器160必须在一输入/输出延迟时间(i/olatency)内,将读取命令所指定的数据自快闪存储器180中读出,并且将所读出的数据全部传送至主机120。换言之,控制器160必须在输入/输出延迟时间内将读取命令执行完毕。举例而言,输入/输出延迟时间可为2秒,但本发明不限于此。在其他实施例中,输入/输出延迟时间可为电路设计者或者规格制定者所设定的其他时间。另外,当读取命令所指定的数据超过快闪存储器180的一读取单位时,读取命令所指定的数据会被分为数个数据段陆续传送给主机120,其中读取单位可为一个页面的数据量或者一既定长度,本发明不限于此。举例而言,若读取命令所指定的数据总共有96k位元组并且快闪存储器180的读取单位为32k位元组时,控制器160会对先读取数据中具有32k位元组的一第一数据段,并在第一数据段传送至主机120后,接着读取剩余数据中具有32k位元组的一第二数据段,最后在第二数据段传送至主机120后,读取所剩余的具有32k位元组的一第三数据段并将第三数据段传送至主机120。在一实施例中,每个数据段的读取作业必须在一数据子集读出时间(readtime-outtime)内完成。换言之,对第一数据段、第二数据段以及第三数据段进行读取的读取作业,从自快闪存储器180读出数据段开始到读取下一个数据段的时间必须少于数据子集读出时间。举例而言,数据子集读出时间可为100毫秒,但本发明不限于此。在其他实施例中,数据子集读出时间可为厂商、电路设计者或者规格制定者所设定的其他时间。

除了满足工作时间(输入/输出延迟时间以及数据子集读出时间)的限制,为了避免快闪存储器180中的数据损坏以及妥善利用快闪存储器180中的存储器空间,控制器160亦会在适当的时间,根据读取次数、抹除次数、错误位元数以及三阶备用区块的数量,对快闪存储器180进行数据维护程序。在一实施例中,快闪存储器180还可用以储存至少一参数表用以分别纪录每一页面的读取次数、每一区块的抹除次数、每一页面中的数据的错误位元以/或快闪存储器180中三阶备用区块的数量,但本发明不限于此。在其他实施例中,每一页面的读取次数以及每一区块的抹除次数亦可储存于相应的区块或者页面内,其中读取次数为区块曾经被读取过的次数,抹除次数为区块曾经被抹除的次数。另外,控制器160可藉由读取快闪存储器180的数据,并将所读取的数据与校验码进行比对演算来获得每一页中的数据的错误位元数。在一实施例中,控制器160会在接收到读取命令后,在读取命令执行时同时进行数据维护程序。然而,若数据维护程序执行的时间太长,则会超过规格及/或厂商所限制的工作时间(输入/输出延迟时间以及数据子集读出时间),并且造成使用者的使用感觉不佳。

有鉴于此,当接收到读取命令时,控制器160会进入读取状态,并且在读取状态中会进入到背景工作状态(emmcbackgroundoperations,bkops)来执行数据维护程序,其中控制器160更用以根据计时器(gctimer)来记录已消耗的时间,并且根据所剩余的时间动态调整维护程序。

详细而言,自主机120接收用以读取一数据的一读取命令后,控制器160分析该读取命令所需的多个读取作业,其中每一读取作业用以读取快闪存储器180的一个读取单位的数据或者相应于读取命令中一个逻辑地址(lba)的数据。换言之,在接收到读取命令后,控制器160根据读取命令所指示的数据的长度以及地址,分析出所需要执行的读取作业的数量、每一读取作业的数据地址与长度以及相关的指令。接着,控制器160根据该读取命令的一输入/输出延迟时间(i/olatency)以及读取作业的数量,决定每一读取作业的作业时间。在一实施例中,作业时间为输入/输出延迟时间除以读取作业的数量所获得之值,并且作业时间小必须于数据子集读出时间。换言之,每一读取作业的作业时间都相同,若作业时间为输入/输出延迟时间除以读取作业的数量所获得的值大于数据子集读出时间时,作业时间等于数据子集读出时间,但本发明不限于此。在另一实施例中,作业时间随着读取作业的执行顺序而递减,并且每一作业时间小于一数据子集读出时间。换言之,作业时间可具有预设的多个个值,控制器160会根据读取作业的数量以及输入/输出延迟时间等,将具有较长时间的作业时间分配给先执行的读取作业,并将具有较短时间的作业时间分配给后面执行的读取作业。如上所述,藉由预先决定每一读取作业的作业时间,控制器160可控制维护程序在所决定的作业时间内执行完毕,以避免上述超过规格及/或厂商所限制的工作时间(输入/输出延迟时间以及数据子集读出时间)以及造成使用者的使用感觉不佳的问题。

然而,控制器160亦必须使用特定的规则来控制维护程序在所决定的作业时间内执行完毕。在一实施例中,控制器160是根据所剩余的作业时间及/或维护程序的重要程度,在所需执行的维护程序中选择执行适合的维护程序,以达到控制维护程序在所决定的作业时间内执行完毕的目的。详细而言,在读取作业中的一第一读取作业中,控制器160先自快闪存储器180读取所接收的读取命令所指定的数据的一部分,并将所读取的部分传送给主机120。在将所读取的数据的部分传送给主机120后,控制器160还用以决定目前快闪存储器180所需的多个维护程序,其中维护程序用以维护快闪存储器180中的数据。

在一实施例中,维护程序的种类包括耗损平均程序、读取回收程序、更新程序以及数据集中程序。

当区块中最小的抹除次数与最大的抹除次数的差大于一既定差值时,控制器160判断所需的维护程序包括一耗损平均程序(wear-leveling)。换言之,当快闪存储器180中具有最大抹除次数的区块以及具有最小抹除次数的区块的抹除次数差异大于既定差值时,控制器160需要藉由耗损平需程序来降低抹除次数的差异。在一实施例中,既定差值为50,但本发明不限于此。在其他实施例中,既定差值亦可为电路设计者所制定的其他数值。

当快闪存储器180中的数据的错误位元数大于一既定错误位元数时,控制器160判断所需的维护程序包括一读取回收程序(readreclaim)。换言之,当控制器160在读取数据的过程中,发现快闪存储器180中的至少一页面的错误位元大于既定错误位元数时,控制器160则可藉由读取回收程序,来将错误位元过高的数据搬移至其他页面或者区块,以避免数据损毁。

当快闪存储器180中的数据的读取次数大于一既定读取次数时,控制器160判断所需的维护程序包括一更新程序(readrefresh)。换言之,当控制器160发现快闪存储器180中任一页面的读取次数大于既定读取次数时,控制器160则可藉由更新程序,来将读取次数过高的数据搬移至其他页面或者区块,以避免数据损毁。

当区块中的三阶备用区块的数量小于一既定区块数量时,控制器160判断所需的维护程序包括一数据集中程序。换言之,当快闪存储器180中可以写入使用者数据的三阶备用区块数量小于既定区块数量时,表示快闪存储器180的空间不足够。因此,控制器160可藉由数据集中程序将有效数据集中写入一新的区块中以释放被占用的区块。举例而言,快闪存储器180具有一第一三阶数据区块、一第二三阶数据区块、一第三三阶数据区块以及一第四三阶备用区块,其中每一三阶区块具有16个页面,第一三阶数据区块包括10个具有有效数据的页面以及6个不具有有效数据的页面,第二三阶数据区块包括4个具有有效数据的页面以及12个不具有有效数据的页面,第三三阶数据区块包括1个具有有效数据的页面以及15个不具有有效数据的页面,并且第四三阶备用区块不具有任何有效数据。在数据集中程序中,控制器160将第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的有效数据写入第四三阶备用区块的15个页面中,并且释放第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块为三个新的三阶备用区块,以增加三阶备用区块的数量。值得注意的是,单阶备用区块的数量亦可藉由上述的方法增加。

在决定目前快闪存储器180所需的多个维护程序后,控制器160还以根据一既定条件,在维护程序中选择一者作为一第一维护程序。举例而言,控制器160根据读取次数、抹除次数、错误位元数以及三阶备用区块的数量决定目前所需要的维护程序有耗损平均程序以及读取回收程序,并且根据既定条件在耗损平均程序以及读取回收程序中选择读取回收程序作为第一维护程序,但本发明不限于此。接着,控制器160还继续在第一读取作业中,根据一既定条件执行第一维护程序。在一实施例中,既定条件包括一剩余时间,并且剩余时间为作业时间减去第一读取作业已花费的时间,但本发明不限于此。举例而言,控制器160会优先选择可在剩余时间内结束的维护程序作为第一维护程序。在另一实施例中,既定条件还包括维护程序的优先权。举例而言,当多个维护程序皆可在剩余时间内完成时,控制器160还用以优先选择优先权较高的维护程序作为第一维护程序。在一实施例中,其中读取回收程序的优先权大于数据集中程序,数据集中程序的优先权大于更新程序,并且更新程序的优先权大于耗损平均程序,但本发明不限于此。在其他实施例中,电路设计者可自行依照维护程序的重要程度分配优先权。值得注意的是,一般而言耗损平均程序以及数据集中程序是在写入程序中进行的维护程序。因此,在本实施例中,耗损平均程序以及数据集中程序具有较低的优先权。

值得注意的是,在某些实施例中,所需的维护程序可能只有一个。因此,控制器160不需要在多个维护程序中选择一个,其可直接根据既定条件判断维护程序是否可在剩余时间内执行完毕。当既定条件可在剩余时间内执行完毕时,控制器160将仅有一个的维护程序做为第一维护程序,并执行第一维护程序。

接着,在第一读取作业中,控制器160还用以在第一维护程序结束后,判断剩余时间是否超过一既定值。当剩余时间超过既定值时,控制器160还用以继续根据既定条件,选择尚未执行的维护程序中的一第二维护程序,并且在第一读取作业中继续执行第二维护程序。当剩余时间小于既定值时,控制器160则结束第一读取作业,并接着执行读取作业中尚未执行的一第二读取作业。

图2是本发明的另一种实施例的数据维护方法的流程图。数据维护方法适用于图1所示的数据储存装置140。流程开始于步骤s200。

在步骤s200中,控制器160自主机120接收到用以读取一数据的一读取命令。

接着,在步骤s202中,控制器160分析读取命令所需的多个读取作业,并且根据读取命令的一输入/输出延迟时间(i/olatency)以及读取作业的数量,决定每一读取作业的作业时间。其中,每一读取作业用以读取快闪存储器180的一个读取单位的数据或者相应于读取命令中的一个逻辑地址(lba)的数据。换言之,在接收到读取命令后,控制器160根据读取命令所指示的数据的长度以及地址,分析出所需要执行的读取作业的数量、每一读取作业的数据地址与长度以及相关的指令。接着,控制器160根据该读取命令的一输入/输出延迟时间(i/olatency)以及读取作业的数量,决定每一读取作业的作业时间。在一实施例中,作业时间为输入/输出延迟时间除以读取作业的数量所获得的值,并且作业时间小必须于数据子集读出时间。换言之,每一读取作业的作业时间都相同,若作业时间为输入/输出延迟时间除以读取作业的数量所获得的值大于数据子集读出时间时,作业时间等于数据子集读出时间做为,但本发明不限于此。在另一实施例中,作业时间随着读取作业的执行顺序而递减,并且每一作业时间小于一数据子集读出时间。换言之,作业时间可具有预设的多个个值,控制器160会根据读取作业的数量以及输入/输出延迟时间等,将具有较长时间的作业时间分配给先执行的读取作业,并将具有较短时间的作业时间分配给后面执行的读取作业。

接着,在步骤s204中,控制器160选择一尚未执行的读取作业,以开始所选择的读取作业。其中,控制器160可根据地址的顺序选择读取作业,但本发明不限于此。

接着,在步骤s206中,控制器160先自快闪存储器180读取所接收的读取命令所指定的数据的一部分,并将所读取的部分传送给主机120,其中控制器160所读取的部分为相应于在步骤s204中所选择的读取作业的数据段。

接着,在步骤s208中,控制器160将所读取的数据的部分传送给主机120。

接着,在步骤s210中,控制器160决定目前快闪存储器180所需的多个维护程序,其中维护程序用以维护快闪存储器180中的数据。在一实施例中,维护程序的种类包括耗损平均程序、读取回收程序、更新程序以及数据集中程序,但本发明不限于此。当区块中最小的抹除次数与最大的抹除次数的差大于一既定差值时,控制器160判断所需的维护程序包括一耗损平均程序(wear-leveling)。当快闪存储器180中的数据的错误位元数大于一既定错误位元数时,控制器160判断所需的维护程序包括一读取回收程序(readreclaim)。当快闪存储器180中的数据的读取次数大于一既定读取次数时,控制器160判断所需的维护程序包括一更新程序(readrefresh)。当区块中的三阶备用区块的数量小于一既定区块数量时,控制器160判断所需的维护程序包括一数据集中程序。

接着,在步骤s212中,控制器160根据一既定条件,在维护程序中选择尚未被执行之一者作为一特定维护程序。在一实施例中,既定条件包括一剩余时间,并且剩余时间为作业时间减去目前的读取作业已花费的时间,但本发明不限于此。举例而言,控制器160会优先选择可在剩余时间内结束的维护程序作为特定维护程序。在另一实施例中,既定条件还包括维护程序的优先权。举例而言,当多个维护程序皆可在剩余时间内完成时,控制器160还用以优先选择优先权较高的维护程序作为特定维护程序。在一实施例中,其中读取回收程序的优先权大于数据集中程序,数据集中程序的优先权大于更新程序,并且更新程序的优先权大于耗损平均程序,但本发明不限于此。在其他实施例中,电路设计者可自行依照维护程序的重要程度分配优先权。值得注意的是,一般而言耗损平均程序以及数据集中程序是在写入程序中进行的维护程序。因此,在本实施例中,耗损平均程序以及数据集中程序具有较低的优先权。

接着,在步骤s214中,控制器160执行所选择的特定维护程序。

接着,在步骤s216中,控制器160判断剩余时间是否超过一既定值。当剩余时间超过既定值时,流程回到步骤s212,控制器160根据既定条件选择另一维护程序。当剩余时间小于既定值时,流程进行至步骤s218。

在步骤s218中,目前的读取作业结束。

接着,在步骤s220中,控制器160判断是否有其他读取作业尚未执行。换言之,在步骤s200接收到的读取命令所指示的数据是否已全部传送至主机120。当有其他读取作业尚未执行时,流程进行回到步骤s204,控制器160选择另一尚未执行的读取作业以开始另一读取作业。当没有其他读取作业尚未执行时,流程结束于步骤s220。

由上述可知,数据储存装置140以及数据维护方法可根据输入/输出延迟时间决定作业时间,并且根据所剩余的作业时间动态调整维护程序,以在读取状态中同时进行背景的维护程序,并使得背景的维护程序不影响读取程序的正常操作。

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

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

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