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

文档序号:11458561阅读:194来源:国知局
本发明有关于一种数据储存装置的数据维护方法;特别有关于一种三阶储存单元的数据维护方法。
背景技术
::快闪存储器为一种普遍的非挥发性数据储存媒体,是以电性方式抹除与程序化。以与非门型的快闪存储器(即nandflash)为例,常用作记忆卡(memorycard)、通用串行总线闪存装置(usbflashdevice)、固态硬碟(ssd)、嵌入式快闪存储器模组(emmc)…等的储存媒体。快闪存储器(如,nandflash)的储存阵列包括多个区块(blocks),其中浮置栅极晶体管可用以构成快闪存储器。浮置栅极晶体管中的浮置栅极,可捕捉的电荷以储存数据。然而,储存于浮置栅极的电荷会由于快闪存储器的操作以及各种环境参数,自浮置栅极流失,造成数据保存(dataretention)的问题。其中,三阶储存单元(triple-levelcell,tlc)的快闪存储器相较于其他单阶储存单元(single-levelcell,slc)的快闪存储器以及二阶储存单元(multi-levelcell,mlc)的快闪存储器,更容易受环境影响而无法保存数据。值得注意的是,嵌入式快闪存储器模组(emmc)一般而言皆是焊接于母板上,因此嵌入式快闪存储器模组会随着母板一起承受高温锡炉,而导致数据的损毁。技术实现要素:本发明所提供的数据储存装置以及数据维护方法可以随机选取单阶储存单元以暂存将储存于三阶储存单元的数据。本发明提供一种数据储存装置包括一快闪存储器以及一控制器。快闪存储器具有多单阶备用储存区块、多三阶数据区块、及多三阶备用区块。控制器其用将三阶数据区块均分为三个区域,其各包含相同数量的数据区块,其复用以接收一预写数据及预写数据的一逻辑地址,并分析出一第一子预写数据、一第二子预写数据、一第三子预写数据,其又用以于一第一阶段,依据预写逻辑地址,决定对应于预写逻辑地址的一第一三阶数据区块,并将第一三阶数据区块所属的区域定为第一区域,再判断第一三阶数据区块是否已存在有效数据,若第一三阶数据区块存在有效数据,则于第一区域内挑选一个抹除次数最少的三阶数据区块为一新第一三阶数据区块,分别自剩余的两个区域内,对应新第一三阶数据区块,挑选一第二三阶数据区块与一第三三阶数据区块,再以单阶储存模式分别将第一子预写数据、第二子预写数据、第三子预写数据写入新第一三阶数据区块、第二三阶数据区块、第三三阶数据区块,复用以将新第一三阶数据区块、第二三阶数据区块、第三三阶数据区块映射至逻辑地址。在一实施例中,三阶数据区块的总数为n,并且三阶数据区块具有连续的地址。当第一区域中三阶数据区块的地址在第二区域以及第三区域中的三阶数据区块的地址之前时,新第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址加上(2n)/3等于第三三阶数据区块的地址,当第一区域中三阶数据区块的地址在第二区域中的三阶数据区块的地址之前并且在第三区域中的三阶数据区块的地址之后时,新第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址,当第一区域中三阶数据区块的地址在第二区域以及在第三区域中的三阶数据区块的地址之后时,新第一三阶数据区块的地址减去(2n)/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。又另一实施例中,控制器更用以在一第二阶段,将新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的数据整理至三阶备用区块中的之一者,其中控制器用以在三阶备用区块中选取一第一三阶备用区块,以将映射至逻辑地址的新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的数据以一三阶储存单元模式整理至第一三阶备用区块,将整理后的第一三阶备用区块映射至逻辑地址,并且释放新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块。另外,第一阶段为生产阶段(productionphase),第二阶段为在第一阶段后的整合阶段(integrationphase),并且在第一阶段以及第二阶段之间,数据储存装置承受一高温焊接。本发明另提供一种数据维护方法适用于具有多单阶备用储存区块、多三阶数据区块、以及多三阶备用区块的一数据储存装置。数据维护方法包括:接收一预写数据及预写数据的一逻辑地址,并根据预写数据及逻辑地址分析出一第一子预写数据、一第二子预写数据、一第三子预写数据;以及于一第一阶段,依据预写数据的逻辑地址将预写数据写入数据储存装置。在第一阶段将预写数据写入数据储存装置的步骤更包括:将三阶数据区块均分为三个区域,其各包含相同数量的数据区块;依据预写逻辑地址,决定对应于预写逻辑地址的一第一三阶数据区块,并将第一三阶数据区块所属的区域定为第一区域;判断第一三阶数据区块是否已存在有效数据;若第一三阶数据区块存在有效数据,则于第一区域内挑选一个抹除次数最少的三阶数据区块为一新第一三阶数据区块,分别自剩余的两个区域内,对应新第一三阶数据区块,挑选一第二三阶数据区块与一第三三阶数据区块;以单阶储存模式分别将第一子预写数据、第二子预写数据、第三子预写数据写入新第一三阶数据区块、第二三阶数据区块、第三三阶数据区块;以及将新第一三阶数据区块、第二三阶数据区块、第三三阶数据区块映射至逻辑地址。在一实施例中,当第一区域中三阶数据区块的地址在第二区域以及第三区域中的三阶数据区块的地址之前时,新第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址加上(2n)/3等于第三三阶数据区块的地址,当第一区域中三阶数据区块的地址在第二区域中的三阶数据区块的地址之前并且在第三区域中的三阶数据区块的地址之后时,新第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址,当第一区域中三阶数据区块的地址在第二区域以及在第三区域中的三阶数据区块的地址之后时,新第一三阶数据区块的地址减去(2n)/3等于第二三阶数据区块的地址并且新第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。在另一实施例中,数据维护方法还包括:在一第二阶段,将新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的数据整理至三阶备用区块中之一者,其中将新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的数据整理至三阶备用区块中之一者的步骤还包括:在三阶储存单元备用池中选取一第一三阶备用区块;将映射至逻辑地址的新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块中的数据以一三阶储存单元模式整理至第一三阶备用区块;将整理后的第一三阶备用区块映射至逻辑地址;以及释放新第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块。附图说明图1是本发明的一种实施例的电子系统的方块图。图2是本发明的一种实施例的快闪存储器的示意图。图3是本发明的一种实施例的逻辑地址以及三阶数据区块的示意图。图4是本发明的另一种实施例的逻辑地址以及三阶数据区块的示意图。图5是本发明的一种实施例的区块映射关系的示意图。图6a~6b是本发明的一种实施例的数据维护方法的流程图。图7是本发明的一种实施例的数据维护方法的流程图。符号说明100电子系统;120主机;140数据储存装置;160控制器;162运算单元;164永久存储器;166随机存取存储器;180快闪存储器;slc_pool单阶储存单元备用池;tlc_pool三阶储存单元备用池;m_pool三阶数据区块池;slc_sp_1~slc_sp_z单阶备用储存区块;tlc_sp_1~tlc_sp_m三阶备用区块;f_1~f_n三阶数据区块;h_1~h_n逻辑地址;r1、r2、r3区域;s602~s624、s700~s706、s800~s816步骤。具体实施方式以下将详细讨论本发明各种实施例的装置及使用方法。然而值得注意的是,本发明所提供的许多可行的发明概念可实施在各种特定范围中。这些特定实施例仅用于举例说明本发明的装置及使用方法,但非用于限定本发明的范围。图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_pool、一三阶储存单元备用池tlc_pool以及一三阶数据区块池m_pool。单阶储存单元备用池slc_pool包括多单阶备用储存区块(single-levelcell,slc)slc_sp_1~slc_sp_z,其中z为单阶备用储存区块的总数量,并且每一单阶备用储存区块slc_sp_1~slc_sp_z的大小等同于一个区块的大小,但本发明不限于此。换言之,单阶备用储存区块slc_sp_1~slc_sp_z用以以单阶储存模式写入数据的区块。值得注意的是,单阶储存单元备用池slc_pool中的单阶储存单元slc_sp_1~slc_sp_z用以将数据整理至三阶储存单元备用池tlc_pool的存储器空间。三阶储存单元备用池tlc_pool包括多三阶备用区块(triple-levelcell,tlc)tlc_sp_0~tlc_sp_m,其中m为单阶备用储存区块的总数量,并且每一三阶备用区块tlc_sp_0~tlc_sp_m的大小等同于一个区块的大小。换言之,三阶备用区块tlc_sp_0~tlc_sp_m用以以三阶储存模式写入数据的区块。值得注意的是,三阶储存单元备用池tlc_pool用以提供可进行写入之三阶备用区块tlc_sp_0~tlc_sp_m,并且已被写入有效数据的三阶备用区块tlc_sp_0~tlc_sp_m会与三阶数据区块池m_pool中的具有无效数据的区块交换。三阶数据区块池m_pool具有多三阶数据区块f_1~f_n,其中n为单阶备用储存区块的总数量,并且每一三阶数据区块f_1~f_n的大小等同于一个区块的大小。换言之,三阶数据区块f_1~f_n用以写入有效数据的区块。值得注意的是,三阶数据区块池m_pool是用以提供使用者储存数据的存储器空间。另外,三阶数据区块f_1~f_n分别被指派给多逻辑地址h_1~h_n,其中每一这些三阶数据区块f_1~f_n分别相应于这些逻辑地址h_1~h_n中之一者,如图3所示。详细而言,三阶数据区块f_1被指派给逻辑地址h_1、三阶数据区块f_1被指派给逻辑地址h_1、三阶数据区块f_2被指派给逻辑地址h_2、三阶数据区块f_3被指派给逻辑地址h_3、三阶数据区块f_4被指派给逻辑地址h_4…,依此类推。另外,三阶数据区块f_1~f_n以及逻辑地址h_1~h_n依照地址由上而下排列。在本发明的一实施例中,快闪存储器180操作于三阶储存单元(triple-levelcell,tlc)模式。换言之,三阶数据区块池m_pool中的三阶数据区块f_1~f_n是三阶储存单元。值得注意的是,三阶储存单元是藉由整理(program)单阶储存单元的电压所获得的储存单元。三阶储存单元的存储器空间单阶储存单元的三倍。虽然三阶储存单元的存储器空间较大,但三阶储存单元相较于单阶储存单元更容易被环境影响,尤其是作为嵌入式快闪存储器模组(emmc)的快闪存储器。由于嵌入式快闪存储器模组(emmc)需要与装置的母板一起过锡炉,故储存于三阶储存单元中的数据在过锡炉之后时常被损毁。有鉴于此,本发明所提供的数据储存装置140可在快闪存储器180进入高温环境之前(即第一阶段),将三阶数据区块池m_pool中的三阶数据区块f_1~f_n作为单阶储存单元,以将预写数据段以单阶储存单元模式写入三阶数据区块f_1~f_n。值得注意的是,当三阶数据区块池m_pool中的三阶数据区块f_1~f_n作为单阶储存单元时,三阶数据区块池m_pool的存储器容量缩减为原本作为三阶储存单元的三阶数据区块f_1~f_n的三分之一倍。接着,本发明所提供的数据储存装置140可在快闪存储器180离开高温环境之后(即第二阶段),将以单阶储存单元模式写入三阶数据区块f_1~f_n的预写数据段,重新整理为三阶储存单元。在本发明的一实施例中,第一阶段为生产阶段(productionphase),第二阶段为在第一阶段后的整合阶段(integrationphase),并且在第一阶段以及第二阶段之间,数据储存装置140承受一高温焊接,但本发明不限于此。举例而言,当控制器160接收到一预写数据及该预写数据的一逻辑地址时,控制器160用以在第一阶段,将预写数据(preloaddata)根据所接收的逻辑地址,写入逻辑地址h_1~h_n中之至少一者。详细而言,在本发明中,控制器160可将预写数据(preloaddata)不依照逻辑地址h_1~h_n的地址写入逻辑地址。换言之,控制器160可将预写数据(preloaddata)写入不依序选取的逻辑地址中。在本发明的一实施例中,控制器160将三阶数据区块f_1~f_n均分为三个区域,其各包含相同数量的数据区块。详细而言,控制器160将三阶数据区块f_1~f_n依序分为区域r1~r3,以不连续地选取三阶数据区块f_1~f_n,以作为单阶储存单元,但本发明不限于此。值得注意的是,三阶数据区块f_1~f_n具有连续的地址。在本发明的一实施例中,逻辑地址的总数为n并且三阶数据区块的总数也为n,区域r~r3分别具有n/3个逻辑地址以及被指派给逻辑地址的n/3个三阶数据区块,并且区域r1~r3中的逻辑地址具有连续的地址,如图3所示,但本发明不限于此。换言之,区域r1包括具有连续地址的逻辑地址h_1~h_n/3以及具有连续地址的三阶数据区块f_1~f_n/3。区域r2包括具有连续地址的逻辑地址h_n/3+1~h_2n/3以及具有连续地址的三阶数据区块f_n/3+1~f_2n/3。区域r3包括具有连续地址的逻辑地址h_2n/3+1~h_n以及具有连续地址的三阶数据区块f_2n/3+1~f_n。举例而言,当逻辑地址h_0~h_n的总数为900时,区域r1包括具有连续地址的逻辑地址h_1~h_300以及具有连续地址的三阶数据区块f_1~f_300,区域r2包括具有连续地址的逻辑地址h_301~h_600以及具有连续地址的三阶数据区块f_301~f_600,并且区域r3包括具有连续地址的逻辑地址h_601~h_900以及具有连续地址的三阶数据区块f_601~f_900,如图4所示。在其他实施例中,n亦可为其他有理数,本发明不限于此。另外,当n无法被3整除时,控制器160可忽略无法被整除的1个或者2个三阶数据区块。举例而言,当三阶数据区块的总数为901时n则为900,以及当三阶数据区块的总数为1202时n则为1200,但本发明不限于此。在将三阶数据区块f_1~f_n依序分为区域r1~r3之后,控制器160接着根据命令将预写数据分为多子预写数据段以写入逻辑地址中。在一实施例中,控制器160根据预写数据分析出一第一子预写数据、一第二子预写数据、一第三子预写数据。值得注意的是,控制器160是依照每一三阶储存单元的大小将预写数据切割为多子预写数据段。换言之,每一子预写数据段的数据量等同于一个三阶储存单元的数据量以及三个单阶储存单元的数据量。详细而言,控制器160根据所接收到的预写的一第一逻辑地址,决定对应于第一逻辑地址的一第一三阶数据区块,并且将第一三阶数据区块所属的区域定为第一区域。换言之,控制器160根据指示将预写数据写入逻辑地址h_1~h_n中的一第一逻辑地址的一第一写入命令,定位被指派给第一逻辑地址的一第一三阶数据区块,并且将第一三阶数据区块所属的区域定为第一区域。接着,控制器160判断第一三阶数据区块是否已被存在有效数据。换言之,控制器160判断第一三阶数据区块是否已被映设至逻辑地址中之一者。当第一三阶数据区块并未被写入有效数据时,控制器160分别自第一三阶数据区块所属的第一区域外的两个区域选取一第二三阶数据区块以及一第三三阶数据区块。换言之,当第一三阶数据区块并未被映射至任何逻辑地址时,控制器160分别自第一三阶数据区块所属的第一区域外的两个区域选取一第二三阶数据区块以及一第三三阶数据区块。接着,控制器160将第一子预写数据段以一单阶储存模式写入第一三阶数据区块、将第二子预写数据段以一单阶储存模式写入第二三阶数据区块以及将第三子预写数据段以一单阶储存模式写入第三三阶数据区块,并将第一三阶数据区块、第二三阶数据区块以及第三三阶数据区块映射至第一逻辑地址。当第一三阶数据区块已被写入有效数据时(当第一三阶数据区块并未被映射至任何逻辑地址时),控制器160则于第一三阶数据区块所属的第一区域内挑选另一三阶数据区块以作为一新第一三阶数据区块。换言之,新三阶数据区块用以取代被指派给第一逻辑地址的第一三阶数据区块。接着,控制器160分别自第一区域外剩余的两个区域内,对应新三阶数据区块挑选一第二三阶数据区块以及一第三三阶数据区块。控制器160更用以将第一子预写数据段以一单阶储存模式写入新三阶数据区块、将第二子预写数据段以一单阶储存模式写入第二三阶数据区块以及将第三子预写数据段以一单阶储存模式写入第三三阶数据区块,并将新三阶数据区块、第二三阶数据区块以及第三三阶数据区块映射至第一逻辑地址。在一实施例中,每一三阶数据区块具有相应的一抹除次数,并且控制器160选取三阶数据区块中未被写入有效数据并且具有最少的抹除次数的三阶数据区块以作为新三阶数据区块,但本发明不限于此。换言之,控制器160是选择不具有有效数据的三阶数据区块中被抹除过的次数最少的三阶数据区块,作为新三阶数据区块。在其他实施例中,控制器160亦可选择不具有有效数据的三阶数据区块中与第一三阶数据区块的地址最近的三阶数据区块,作为新三阶数据区块。值得注意的是,在某些实施例中,控制器160是先将欲写入的子预写数据段先写入单阶储存单元备用池slc_pool中的单阶储存单元中之三者,再将已写入子预写数据段的三个单阶储存单元与分别在区域r1、区域r2以及区域r3所选取的三个三阶数据区块交换,但本发明不限于此。在其他实施例中,控制器160是先将欲写入的子预写数据段先写入单阶储存单元备用池slc_pool中的单阶储存单元中之三者,再将已写入子预写数据段的三个单阶储存单元中的数据写入分别在区域r1、区域r2以及区域r3所选取的三个三阶数据区块。值得注意的是,控制器160还用以将剩余的该两个区域分别定义为第二区域以及第三区域。控制器160是根据第一逻辑地址所被指派的三阶数据区块选取第一三阶数据区块,并且第一三阶数据区块即为被指派给第一逻辑地址的三阶数据区块。另外,当第一三阶数据区块属于区域r1时,区域r1为第一区域、区域r2为第二区域并且区域r3为第三区域(第一区域r1中三阶数据区块的地址在第二区域r2以及第三区域r3中的三阶数据区块的地址之前),其中第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址加上(2n)/3等于第三三阶数据区块的地址。当第一三阶数据区块属于区域r2时,区域r2为第一区域、区域r3为第二区域并且区域r1为第三区域(第一区域r2中三阶数据区块的地址在二区域r3中的三阶数据区块的地址之前并且在三区域r1中的三阶数据区块的地址之后),其中第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。当第一三阶数据区块属于区域r3时,区域r3为第一区域、区域r1为第二区域并且区域r2为第三区域(第一区域r3中三阶数据区块的地址在第二区域r1以及在第三区域r2中的三阶数据区块的地址之后),其中第一三阶数据区块的地址减去(2n)/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址,依此类推。相似地,当新三阶数据区块属于区域r1时区域r1为第一区域、区域r2为第二区域并且区域r3为第三区域(第一区域r1中三阶数据区块的地址在第二区域r2以及第三区域r3中的三阶数据区块的地址之前),其中新三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新三阶数据区块的地址加上(2n)/3等于第三三阶数据区块的地址。当新三阶数据区块属于第二区域r2时,区域r2为第一区域、区域r3为第二区域并且区域r1为第三区域(第一区域r2中三阶数据区块的地址在二区域r3中的三阶数据区块的地址之前并且在三区域r1中的三阶数据区块的地址之后),其中新三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且新三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。当新三阶数据区块属于区域r3时,区域r3为第一区域、区域r1为第二区域并且区域r2为第三区域(第一区域r3中三阶数据区块的地址在第二区域r1以及在第三区域r2中的三阶数据区块的地址之后),其中新三阶数据区块的地址减去(2n)/3等于第二三阶数据区块的地址并且新三阶数据区块的地址减去n/3等于第三三阶数据区块的地址,依此类推。值得注意的是,在本发明中,三阶数据区块、新三阶数据区块以及逻辑地址的映射以及指派关系可由至少一个映射表(mappingtable)来维持。举例而言,快闪存储器180可具有一第一映射表,用以记录三阶数据区块(新三阶数据区块)以及被指派的逻辑地址的关系。快闪存储器180中可还包括一第二映射表用以记录已写入子预写数据段的三阶数据区块(新三阶数据区块)以及逻辑地址的映射关系,其中已写入子预写数据段的三阶数据区块(新三阶数据区块)可直接映射至逻辑地址,或者已写入子预写数据段的三阶数据区块(新三阶数据区块)是映射至被指派给逻辑地址的三阶数据区块,本发明不限于此。举例而言,控制器160是根据命令将多个预写数据,非依序地将预写数据写入逻辑地址h_0~h_900(如图4所示)中之至少一者。如图5所示,当控制器160接收到了指示将第一预写数据写入逻辑地址h_1~h_n中的一第一逻辑地址h_302的一第一写入命令,并且自第一预写数据分析出一第一子预写数据段、一第二子预写数据段以及一第三子预写数据段。控制器160根据指示将第一预写数据写入逻辑地址h_1~h_n中的第一逻辑地址h_302的第一写入命令,定位被指派给第一逻辑地址h_302的一第一三阶数据区块f_302。接着,控制器160判断第一三阶数据区块f_302是否已被写入有效数据。换言之,控制器160藉由判断第一三阶数据区块f_302是否已被映射至其他逻辑地址来判断第一三阶数据区块f_302是否已被写入有效数据。在本实施例中,由于第一三阶数据区块f_302尚未被写入有效数据。因此,控制器160分别自第一三阶数据区块f_302所属的区域r2外的两个区域r1以及r3选取一第二三阶数据区块以及一第三三阶数据区块。当第一三阶数据区块属于区域r2时,区域r2为第一区域、区域r3为第二区域并且区域r1为第三区域(第一区域r2中三阶数据区块的地址在二区域r3中的三阶数据区块的地址之前并且在三区域r1中的三阶数据区块的地址之后)。因此,第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。换言之,控制器160自区域r3选取与第一三阶数据区块f_302相隔n/3的一第二三阶数据区块f_602,以及自区域r1选取与第一三阶数据区块f_302相隔n/3的第三三阶数据区块f_2。接着,控制器160将第一子预写数据段以一单阶储存模式写入第一三阶数据区块f_302、将第二子预写数据段以单阶储存模式写入第二三阶数据区块f_602以及将第三子预写数据段以单阶储存模式写入第三三阶数据区块f_2,并将第一三阶数据区块f_302、第二三阶数据区块f_602以及第三三阶数据区块f_2映射至第一逻辑地址h_302。接着,控制器160接收到了指示将预写数据段中的一第二预写数据写入逻辑地址h_1~h_n中的一第二逻辑地址h_604的一第二写入命令,并且自第二预写数据分析出一第四子预写数据段、一第五子预写数据段以及一第六子预写数据段。控制器160根据指示将预写数据段中的第二预写数据写入逻辑地址h_1~h_n中的第二逻辑地址h_604的第二写入命令,定位被指派给第二逻辑地址h_604的一第四三阶数据区块f_604。接着,控制器160判断第四三阶数据区块f_604是否已被写入有效数据。在本实施例中,由于第四三阶数据区块f_604尚未被写入有效数据。因此,控制器160分别自第四三阶数据区块f_604所属的区域r3外的两个区域r1以及r2选取一第五三阶数据区块以及一第六三阶数据区块。当第四三阶数据区块f_604属于区域r3时,区域r3为第一区域、区域r1为第二区域并且区域r2为第三区域(第一区域r3中三阶数据区块的地址在第二区域r1以及在第三区域r2中的三阶数据区块的地址之后)。第四三阶数据区块f_604的地址减去(2n)/3等于第五三阶数据区块的地址并且第四三阶数据区块的地址减去n/3等于第六三阶数据区块的地址。换言之,控制器160自区域r1选取与第四三阶数据区块f_604相隔2n/3的第五三阶数据区块f_4,以及自区域r2选取与第四三阶数据区块f_604相隔n/3的第六三阶数据区块f_304。接着,控制器160将第四子预写数据段以单阶储存模式写入第四三阶数据区块f_604、将第五子预写数据段以单阶储存模式写入第五三阶数据区块f_4以及将第六子预写数据段以单阶储存模式写入第六三阶数据区块f_304,并将第四三阶数据区块f_604、第五三阶数据区块f_4以及第六三阶数据区块f_304映射至第二逻辑地址h_604。接着,控制器160接收到了指示将预写数据段中的第三预写数据写入逻辑地址h_1~h_n中的一第三逻辑地址h_8的一第三写入命令。控制器160根据指示将预写数据段中的第三预写数据写入逻辑地址h_1~h_n中的第三逻辑地址h_8的第三写入命令,定位被指派给第三逻辑地址h_8的一第七三阶数据区块f_8,并且分析出一第七子预写数据段、一第八子预写数据段以及一第九子预写数据段。接着,控制器160判断第七三阶数据区块f_8是否已被写入有效数据。在本实施例中,由于第七三阶数据区块f_8尚未被写入有效数据。因此,控制器160定位第七三阶数据区块f_8所属的区域r1,并且分别自第七三阶数据区块f_8所属的区域r1外的两个区域r2以及r3选取一第八三阶数据区块以及一第九三阶数据区块。当第七三阶数据区块f_8属于第一区域r1时,区域r1为第一区域、区域r2为第二区域并且区域r3为第三区域(第一区域r1中三阶数据区块的地址在第二区域r2以及第三区域r3中的三阶数据区块的地址之前)。第七三阶数据区块f8的地址加上n/3等于第八三阶数据区块的地址并且第七三阶数据区块f_8的地址加上(2n)/3等于第九三阶数据区块的地址。换言之,控制器160自区域r2选取与第七三阶数据区块f_8相隔n/3的一第八三阶数据区块f_8,以及自区域r3选取与第七三阶数据区块f_8相隔2n/3的第九三阶数据区块f_608。接着,控制器160将第七子预写数据段以单阶储存模式写入第七三阶数据区块f_8、将第八子预写数据段第八三阶数据区块f_308以及将第九子预写数据段第九三阶数据区块f_608,并将第七三阶数据区块f_8、第八三阶数据区块f_308以及第九三阶数据区块f_608映射至第三逻辑地址h_8。接着,控制器160接收到了指示将预写数据段中的一第四预写数据写入逻辑地址h_1~h_n中一第四逻辑地址h_2的一第四写入命令。控制器160根据指示将预写数据段中的第四预写数据写入逻辑地址h_1~h_n中的第四逻辑地址h_2的第四写入命令,定位被指派给第四逻辑地址h_2的一第十三阶数据区块f_2,并且分析出一第十子数据段、一第十一子数据段以及一第十二子数据段。接着,控制器160判断第十三阶数据区块f_2是否已被写入有效数据。在本实施例中,由于第十三阶数据区块f_2已被写入相应于第一逻辑地址h_302的有效数据(第一子预写数据)。因此,控制器160则用以选取三阶数据区块f1~f_900中的另一者以作为一新三阶数据区块。在本实施例中,控制器160在原第十三阶数据区块f_2所属的区域r1中选取了不具有有效数据且抹除次数最低的三阶数据区块f_1作为新三阶数据区块。接着,控制器160分别自新三阶数据区块f_1所属的区域r1外的两个区域r2以及r3选取一第十一三阶数据区块以及一第十二三阶数据区块。当新三阶数据区块f_1属于区域r1时,区域r1为第一区域、区域r2为第二区域并且区域r3为第三区域(第一区域r1中三阶数据区块的地址在第二区域r2以及第三区域r3中的三阶数据区块的地址之前)。新三阶数据区块f1的地址加上n/3等于第十一三阶数据区块的地址并且新三阶数据区块f_1的地址加上(2n)/3等于第十二三阶数据区块的地址。换言之,控制器160自区域r2选取与新三阶数据区块f_1相隔n/3的第十一三阶数据区块f_301,以及自区域r3选取与新三阶数据区块f_1相隔2n/3的第十二三阶数据区块f_601。接着,控制器160还用以将第十子预写数据段以单阶储存模式写入新三阶数据区块f_1、将第十一子预写数据段以单阶储存模式写入第十一三阶数据区块f_301以及将第十二子预写数据段以单阶储存模式写入第十二三阶数据区块f_302,并将新三阶数据区块f_1、第十一三阶数据区块f_301以及第十二三阶数据区块f_302映射至第四逻辑地址h_2。在第二阶段中,控制器160更用以将已写入子预写数据段的三阶数据区块中的数据整理至三阶备用区块tlc_sp_0~tlc_sp_m中之至少一者。举例而言,控制器160在三阶储存单元备用池tlc_pool中选取一第一三阶备用区块,以将映射至第一逻辑地址的第一三阶数据区块(或者新三阶数据区块)、第二三阶数据区块以及第三三阶数据区块中的数据以一三阶储存单元模式整理至第一三阶备用区块。接着,控制器160还用以将整理后的第一三阶备用区块映射至第一逻辑地址,并且释放第一三阶数据区块(或者新三阶数据区块)、第二三阶数据区块以及第三三阶数据区块,依此类推直到所有已写入子预写数据段的三阶数据区块中的数据皆整理至三阶备用区块tlc_sp_0~tlc_sp_m中之至少一者。图6a~6b是本发明的一种实施例的数据维护方法的流程图。数据维护方法适用于图1所示的数据储存装置140,其中数据维护方法是用以在一第一阶段,将一预写数据段(preloaddata)写入逻辑地址h_1~h_n中之至少一者。流程开始于步骤s600。在步骤s600中,控制器160将三阶数据区块f_1~f_n依序分为三个区域r1~r3。在本发明的一实施例中,当逻辑地址的总数为n时,区域r1~r3分别具有n/3个逻辑地址以及被指派给逻辑地址的n/3个三阶数据区块,并且区域r1~r3中的逻辑地址具有连续的地址,如图3所示,但本发明不限于此。换言之,区域r1包括具有连续地址的逻辑地址h_1~h_n/3以及具有连续地址的三阶数据区块f_1~f_n/3。区域r2包括具有连续地址的逻辑地址h_n/3+1~h_2n/3以及具有连续地址的三阶数据区块f_n/3+1~f_2n/3。区域r3包括具有连续地址的逻辑地址h_2n/3+1~h_n以及具有连续地址的三阶数据区块f_2n/3+1~f_n。举例而言,当逻辑地址h_0~h_n的总数为900时,区域r1包括具有连续地址的逻辑地址h_1~h_300以及具有连续地址的三阶数据区块f_1~f_300,区域r2包括具有连续地址的逻辑地址h_301~h_600以及具有连续地址的三阶数据区块f_301~f_600,并且区域r3包括具有连续地址的逻辑地址h_601~h_900以及具有连续地址的三阶数据区块f_601~f_900,如图4所示。在其他实施例中,n亦可为其他有理数,本发明不限于此。另外,当n无法被3整除时,控制器160可忽略无法被整除的1个或者2个三阶数据区块。举例而言,当三阶数据区块的总数为901时n则为900,以及当三阶数据区块的总数为1202时n则为1200,但本发明不限于此。接着,在步骤s602中,控制器160判断是否接收到一预写数据以及预写数据的一逻辑地址。当控制器160接收到将一预写数据以及逻辑地址时,流程进行至步骤s604;否则,控制器160继续判断是否接收到将一预写数据以及预写数据的一逻辑地址。详细而言,在将三阶数据区块f_1~f_n依序均分为区域r1~r3之后,控制器160接着根据命令将预写数据分为多子预写数据段以写入逻辑地址中。在一实施例中,控制器160根据预写数据分析出一第一子预写数据、一第二子预写数据、一第三子预写数据。值得注意的是,控制器160依照每一三阶储存单元的大小将预写数据切割为多子预写数据段。换言之,每一子预写数据段的数据量等同于一个三阶储存单元的数据量以及三个单阶储存单元的数据量。在其他实施例中,子预写数据段亦可不是由预写数据所分割的其他数据段。接着,在步骤s604中,控制器160根据所接收到的预写的一第一逻辑地址,决定对应于第一逻辑地址的一第一三阶数据区块。举例而言,当控制器160在步骤s602中接收到了指示子预写数据写入逻辑地址h_1~h_n中的一第一逻辑地址h_302的一写入命令。控制器160根据指示将预写数据写入逻辑地址h_1~h_n中的第一逻辑地址h_302的第一写入命令,定位被指派给第一逻辑地址h_302的一第一三阶数据区块f_302。接着,在步骤s606中,控制器160将指派给特定逻辑地址的三阶数据区块所属的区域定义为第一区域。在另一实施例中,控制器160还用以将第一区域以外的剩余两个区域分别依序定义为第二区域以及第三区域。接着,在步骤s608中,控制器160判断被指派给特定逻辑地址的三阶数据区块是否已被写入有效数据。当被指派给特定逻辑地址的三阶数据区块不具有有效数据时,流程进行至步骤s610。当被指派给特定逻辑地址的三阶数据区块已被写入有效数据,流程进行至步骤s616。接着,在步骤s610中,控制器160分别自被指派给特定逻辑地址的三阶数据区块所属的区域外的两个区域选取两个三阶数据区块。值得注意的是,当被指派给特定逻辑地址的三阶数据区块属于区域r1时,区域r1为第一区域、区域r2为第二区域并且区域r3为第三区域(第一区域r1中三阶数据区块的地址在第二区域r2以及第三区域r3中的三阶数据区块的地址之前)。因此,被指派给特定逻辑地址的三阶数据区块的地址加上n/3等于所选取的第一个三阶数据区块的地址并且被指派给特定逻辑地址的三阶数据区块的地址加上(2n)/3等于所选取的第二个三阶数据区块的地址。当被指派给特定逻辑地址的三阶数据区块属于区域r2时,区域r2为第一区域、区域r3为第二区域并且区域r1为第三区域(第一区域r2中三阶数据区块的地址在二区域r3中的三阶数据区块的地址之前并且在三区域r1中的三阶数据区块的地址之后)。因此,被指派给特定逻辑地址的三阶数据区块的地址加上n/3等于所选取的第一个三阶数据区块的地址并且被指派给特定逻辑地址的三阶数据区块的地址减去n/3等于所选取的第二个区块的地址。当被指派给特定逻辑地址的三阶数据区块属于区域r3时,区域r3为第一区域、区域r1为第二区域并且区域r2为第三区域(第一区域r3中三阶数据区块的地址在第二区域r1以及在第三区域r2中的三阶数据区块的地址之后)。因此,被指派给特定逻辑地址的三阶数据区块的地址减去(2n)/3等于所选取的第一个三阶数据区块的地址并且被指派给特定逻辑地址的三阶数据区块的地址减去n/3等于所选取的第二个三阶数据区块的地址,依此类推。举例而言,当控制器160在步骤s602中接收到了指示将第一预写数据写入逻辑地址h_1~h_n中的一第一逻辑地址h_302的一第一写入命令并且在步骤s604中定位被了被指派给第一逻辑地址h_302的未被写入有效数据的第一三阶数据区块f_302时,控制器160在步骤s606中定义第一三阶数据区块f_302所属的区域r2为第一区域。接着,控制器160分别自第一三阶数据区块f_302所属的区域r2外的两个区域r1以及r3选取一第二三阶数据区块以及一第三三阶数据区块。当第一三阶数据区块属于区域r2时,第一三阶数据区块的地址加上n/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去n/3等于第三三阶数据区块的地址。换言之,控制器160自区域r3选取与第一三阶数据区块f_302相隔n/3的一第二三阶数据区块f_602,以及自区域r1选取与第一三阶数据区块f_302相隔n/3的第三三阶数据区块f_2。在其他实施例中,当第一三阶数据区块为属于区域r3的三阶数据区块f_604时,第一三阶数据区块f_604的地址减去(2n)/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去)/3等于第三三阶数据区块的地址。换言之,控制器160自区域r1选取与第一三阶数据区块f_604相隔2n/3的第二三阶数据区块f_4,以及自区域r2选取与第一三阶数据区块f_604相隔n/3的第三三阶数据区块f_304。当第一三阶数据区块为属于区域r1的三阶数据区块f_8时,第一三阶数据区块f8的地址加上n/3等于第二三阶数据区块的地址并且第一三阶数据区块f_8的地址加上(2n)/3等于第三三阶数据区块的地址。换言之,控制器160自区域r2选取与第一三阶数据区块f_8相隔n/3的一第二三阶数据区块f_8,以及自区域r3选取与第一三阶数据区块f_8相隔2n/3的第三三阶数据区块f_608。接着,在步骤s612中,控制器160将子预写数据段以一单阶储存模式写入被指派给特定逻辑地址的三阶数据区块以及在步骤s618中所选取的两个三阶数据区块。接着,在步骤s614中,控制器160将被指派给特定逻辑地址的三阶数据区块以及在步骤s610中所选取的两个三阶数据区块映射至特定逻辑地址。换言之,控制器160将在步骤s612中被写入子预写数据段的三个三阶数据区块映射至特定逻辑地址。接着,流程回到步骤s602。控制器160继续根据所接收到的写入指令,将子预写数据段写入写入指令所指定的逻辑地址中。在步骤s616中,控制器160选取三阶数据区块中的另一者以作为一新三阶数据区块。换言之,新三阶数据区块用以取代被指派给特定逻辑地址的三阶数据区块。在一实施例中,每一三阶数据区块具有相应的一抹除次数,并且控制器160在第一区域中选取三阶数据区块中未被写入有效数据并且具有最小的抹除次数的三阶数据区块以作为新三阶数据区块,但本发明不限于此。换言之,控制器160是在第一区域中选择不具有有效数据的三阶数据区块中被抹除过的次数最少的三阶数据区块,作为新三阶数据区块。在其他实施例中,控制器160亦可选择不具有有效数据的三阶数据区块中与第一三阶数据区块的地址最近的三阶数据区块,作为新三阶数据区块。接着,在步骤s620中,控制器160分别自新三阶数据区块所属的区域外的两个区域选取两个三阶数据区块。值得注意的是,当新三阶数据区块属于区域r1时,新三阶数据区块的地址加上n/3等于所选取的第一个三阶数据区块的地址并且新三阶数据区块的地址加上(2n)/3等于所选取的第二个三阶数据区块的地址。当新三阶数据区块属于区域r2时,新三阶数据区块的地址加上n/3等于所选取的第一个三阶数据区块的地址并且新三阶数据区块的地址减去n/3等于所选取的第二个区块的地址。当新三阶数据区块属于区域r3时,新三阶数据区块的地址减去(2n)/3等于所选取的第一个三阶数据区块的地址并且新三阶数据区块的地址减去n/3等于所选取的第二个三阶数据区块的地址,依此类推。以图5的实施例为例,当控制器160在步骤s602接收到指示将一第四预写数据写入逻辑地址h_1~h_n中的一第四逻辑地址h_2的一第四写入命令时,控制器160在步骤s604中根据第四写入命令,定位被指派给第四逻辑地址h_2的一第十三阶数据区块f_2。接着,控制器160在步骤s608中判断第十三阶数据区块f_2是否已被写入有效数据。在本实施例中,由于第十三阶数据区块f_2已被写入相应于第一逻辑地址h_302的有效数据(第一预写数据)。因此,控制器160在步骤s616中则用以选取三阶数据区块f1~f_900中的另一者以作为一新三阶数据区块。在本实施例中,控制器160选取了不具有有效数据且抹除次数最低的三阶数据区块f_1作为新三阶数据区块。接着,控制器160分别自新三阶数据区块f_1所属的区域r1外的两个区域r2以及r3选取一第十一三阶数据区块以及一第十二三阶数据区块(步骤s620)。当新三阶数据区块f_1属于区域r1时,新三阶数据区块f1的地址加上n/3等于第十一三阶数据区块的地址并且新三阶数据区块f_1的地址加上(2n)/3等于第十二三阶数据区块的地址。换言之,控制器160自区域r2选取与新三阶数据区块f_1相隔n/3的第十一三阶数据区块f_301,以及自区域r3选取与新三阶数据区块f_1相隔2n/3的第十二三阶数据区块f_601。在其他实施例中,当新三阶数据区块为属于区域r3的三阶数据区块f_604时,新三阶数据区块f_604的地址减去(2n)/3等于第二三阶数据区块的地址并且第一三阶数据区块的地址减去)/3等于第三三阶数据区块的地址。换言之,控制器160自区域r1选取与新三阶数据区块f_604相隔2n/3的第二三阶数据区块f_4,以及自区域r2选取与新三阶数据区块f_604相隔n/3的第三三阶数据区块f_304。当新三阶数据区块为属于区域r1的三阶数据区块f_8时,新三阶数据区块f8的地址加上n/3等于第二三阶数据区块的地址并且新三阶数据区块f_8的地址加上(2n)/3等于第三三阶数据区块的地址。换言之,控制器160自区域r2选取与新三阶数据区块f_8相隔n/3的一第二三阶数据区块f_8,以及自区域r3选取与新三阶数据区块f_8相隔2n/3的第三三阶数据区块f_608。接着,在步骤s622中,控制器160将子数据段以一单阶储存模式写入新三阶数据区块以及在步骤s620中所选取的两个三阶数据区块。接着,在步骤s624中,控制器160将新三阶数据区块以及在步骤s620中所选取的两个三阶数据区块映射至特定逻辑地址。换言之,控制器160将在步骤s622中被写入预写数据的三个三阶数据区块映射至特定逻辑地址。接着,流程回到步骤s602。控制器160继续根据所接收到的写入指令,将预写数据写入指定的逻辑地址中。图7是本发明的一种实施例的数据维护方法的流程图。数据维护方法适用于图1所示的数据储存装置140,其中数据维护方法用以在第二阶段中,控制器160还用以将已写入子预写数据段的三阶数据区块中的数据依序整理至三阶备用区块tlc_sp_0~tlc_sp_m中之至少一者。流程开始于步骤s700。在步骤s700中,控制器160在三阶储存单元备用池tlc_pool中选取一三阶备用区块。接着,在步骤s702中,控制器160将映射至一逻辑地址的三个三阶数据区块中的数据以三阶储存单元模式整理至在步骤s700中所选取的三阶备用区块。接着,在步骤s704中,控制器160更用以将整理后的三阶备用区块映射至逻辑地址,并且释放映射至逻辑地址的三个三阶数据区块。接着,在步骤s706中,控制器160判断是否所有以单阶储存模式储存于三阶数据区块中的子预写数据段都已被整理至三阶储存单元。当所有以单阶储存模式储存于三阶数据区块中的子预写数据段都已被整理至三阶储存单元时,流程结束于步骤s706,否则,流程会到步骤s700,控制器160继续依照逻辑地址的地址的顺序处理尚未被整理的三阶数据区块。举例而言,控制器160在三阶储存单元备用池tlc_pool中选取一第一三阶备用区块,以将映射至第一逻辑地址的第一三阶数据区块(新三阶数据区块)、第二三阶数据区块以及第三三阶数据区块中的数据以一三阶储存单元模式整理至第一三阶备用区块。接着,控制器160还用以将整理后的第一三阶备用区块映射至第一逻辑地址,并且释放第一三阶数据区块(新三阶数据区块)、第二三阶数据区块以及第三三阶数据区块。综上所述,本发明所提供的数据储存装置以及数据维护方法可以一既定顺序选取单阶储存单元以暂存将储存于三阶储存单元的数据。本发明的方法,或特定型态或其部份,可以以程序码的型态存在。程序码可储存于实体媒体,如软碟、光碟片、硬碟、或是任何其他机器可读取(如电脑可读取)储存媒体,亦或不限于外在形式的电脑程序产品,其中,当程序码被机器,如电脑载入且执行时,此机器变成用以参与本发明的装置。程序码也可透过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序码被机器,如电脑接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途处理单元实作时,程序码结合处理单元提供一操作类似于应用特定逻辑电路的独特装置。以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即凡依本发明申请专利范围及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所揭示的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1