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

文档序号:12063269阅读:247来源:国知局
数据储存装置及其数据维护方法与流程

本发明有关于一种数据储存装置,特别有关于以序号维护的数据储存装置。



背景技术:

快闪存储器为一种普遍的非挥发性数据储存装置,是以电性方式抹除与程式化。以与非门型的快闪存储器(即NAND FLASH)为例,常用作记忆卡(memory card)、通用串行总线闪存装置(USB flash device)、固态硬碟(SSD)、嵌入式快闪存储器模块(eMMC)…等使用。

快闪存储器(如,NAND FLASH)的储存阵列包括多个区块(blocks),其中浮置栅极晶体管可用以构成快闪存储器。浮置栅极晶体管中的浮置栅极,可捕捉的电荷以储存数据。另外,快闪存储器中的实体页面与主机装置所指定的逻辑页面的转换关系需要一个实体转逻辑表记录。当非预期的断电事件发生时,储存于随机存储器中的实体转逻辑表会丢失。如何有效重建实体转逻辑表是一个重要的课题。



技术实现要素:

本发明所提供的数据储存装置以及数据维护方法可将写入指令的顺序记录于页面中。

本发明提供一种数据储存装置。数据储存装置包括一快闪存储器,包括多个区块,每一区块包括多个页面。控制器依序接收多个写入指令,根据接收写入指令的顺序,分配写入指令不同的多个写入序号,根据写入指令,依序将多笔数据以及目前所执行的写入指令的写入序号写入区块中的一第一目前区块以及一第二目前区块的页面中。

在一实施例中,写入指令还包括数据的多个逻辑地址,控制器还将数据所相应的逻辑地址写入第一目前区块以及第二目前区块的页面中。

又另一实施例中,控制器还根据写入指令判断写入指令所指示写入的数据的一型态为一连续型态或者一随机型态,并且将属于连续型态的数据写入第一目前区块中的页面,将属于随机型态的数据写入第二目前区块中的页面。

详细而言,当控制器接收写入指令中用以写入数据中的多笔第一数据的一第一写入指令时,控制器根据接收第一写入指令的顺序分配写入序号中一第一写入序号给第一写入指令,根据第一写入指令以及型态依序将第一数据、第一写入序号以及第一数据所相应的逻辑地址写入第一目前区块以及第二目前区块中的多个第一页面,其中每一第一页面包括第一数据中的一者、第一写入序号以及逻辑地址中的一者。

本发明另提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器包括多个区块,每一区块包括多个页面,每一页面具有一备用区域。控制器用以当发生一断电事件并且数据储存装置恢复电力后,依序读取区块中的一第一目前区块以及一第二目前区块中的页面所储存的多个逻辑地址以及多个写入序号,以建立一实体转逻辑对应表,其中当控制器在读取第一目前区块以及第二目前区块的过程中检测到第一目前区块或者第二目前区块中的一特定页面损坏时,控制器舍弃特定页面并且读取特定页面中的写入序号以及逻辑地址,以将写入序号大于特定页面的写入序号的页面舍弃并且将写入序号等于特定页面的写入序号并且逻辑地址大于特定页面的逻辑地址的页面舍弃。

在另一实施例中,当特定页面的写入序号以及逻辑地址无法被成功读取时,控制器舍弃特定页面并且读取位于特定页面之前的一参考特定页面的写入序号以及逻辑地址,以将写入序号大于参考特定页面的写入序号的页面舍弃并且将写入序号等于特定页面的写入序号并且逻辑地址大于参考特定页面的逻辑地址的页面舍弃。

本发明亦提供一种数据储存装置。数据储存装置包括一快闪存储器以及一控制器。快闪存储器包括多个区块,每一区块包括多个页面,每一页面具有一备用区域。控制器用以当发生一断电事件并且数据储存装置恢复电力后,依序读取区块中的一第一目前区块以及一第二目前区块中的页面所储存的多个逻辑地址以及多个写入序号,以建立一实体转逻辑对应表,其中当控制器在读取第一目前区块以及第二目前区块的过程中检测到第一目前区块以及第二目前区块中存在具有相同逻辑地址的页面时,控制器比较具有相同逻辑地址的页面的写入序号,并且将具有较小写入序号的页面舍弃。

本发明另提供一种数据维护方法,适用于包括一快闪存储器的一数据储存装置,快闪存储器包括多个区块,每一区块包括多个页面。数据维护方法包括:依序接收多个写入指令;根据接收写入指令的顺序,分配写入指令不同的多个写入序号;以及根据写入指令,依序将多笔数据以及目前所执行的写入指令的写入序号写入区块中的一第一目前区块以及一第二目前区块的页面中。

在一实施例中,写入指令还包括数据的多个逻辑地址,并且数据维护方法还包括将数据所相应的逻辑地址写入第一目前区块以及第二目前区块的页面中。

另外,将数据以及目前所执行的写入指令的写入序号写入区块中的第一目前区块以及第二目前区块的页面中的步骤还包括:根据所接收写入指令中用以写入数据中的多个第一数据的一第一写入指令的顺序,分配写入序号中的一第一写入序号给第一写入指令;根据写入指令,判断写入指令所指示写入的数据的一型态为一连续型态或者一随机型态;当数据属于连续型态时,将第一数据、第一写入序号以及第一数据所相应的逻辑地址写入第一目前区块中的多个第一页面;以及当数据属于随机型态时,将写入第二目前区块中的页面,将第一数据、第一写入序号以及第一数据所相应的逻辑地址写入第二目前区块中的至少一第二页面,其中每一第一页面以及第二页面包括逻辑地址中的一者、第一写入序号以及第一数据中的一者。

本发明亦提供一种数据维护方法,适用于包括一快闪存储器的一数据储存装置,快闪存储器包括多个区块,每一区块包括多个页面。数据维护方法包括:当发生一断电事件并且数据储存装置恢复电力后,依序读取区块中的一第一目前区块以及一第二目前区块中的页面所储存的多个逻辑地址以及多个写入序号,以建立一实体转逻辑对应表;在读取第一目前区块以及第二目前区块时,检测页面是否损坏。

当检测到第一目前区块或者第二目前区块中的一特定页面损坏时,舍弃特定页面并且将特定页面的写入序号与第一目前区块以及上二目前区块中的其他页面的写入序号进行比较;将写入序号大于特定页面的写入序号的页面舍弃;当特定页面的写入序号等于第一目前区块以及第二目前区块中的至少一第三页面时,将特定页面的逻辑地址与第三页面的逻辑地址进行比较;以及将逻辑地址大于特定页面的逻辑地址的第三页面舍弃。

在另一实施例中,数据维护方法还包括:当特定页面的写入序号以及逻辑地址无法被成功读取时,舍弃特定页面并且将位于特定页面之前的一参考特定页面的写入序号与第一目前区块以及上二目前区块中的其他页面的写入序号进行比较;将写 入序号大于参考特定页面的写入序号的页面舍弃;当参考特定页面的写入序号等于第一目前区块以及第二目前区块中的至少一第四页面时,将参考特定页面的逻辑地址与第四页面的逻辑地址进行比较;以及将逻辑地址大于参考特定页面的逻辑地址的第四页面舍弃。

本发明亦提供一种数据维护方法,适用于包括一快闪存储器的一数据储存装置,快闪存储器包括多个区块,每一区块包括多个页面。数据维护方法包括:当发生一断电事件并且数据储存装置恢复电力后,依序读取区块中的一第一目前区块以及一第二目前区块中的页面所储存的多个逻辑地址以及多个写入序号,以建立一实体转逻辑对应表;在读取第一目前区块以及第二目前区块的过程中,检测到第一目前区块以及第二目前区块中是否存在具有相同逻辑地址的页面;当读取第一目前区块以及第二目前区块的过程中检测到第一目前区块以及第二目前区块中存在具有相同逻辑地址的页面时,比较具有相同逻辑地址的页面的写入序号;以及将具有较小写入序号的页面舍弃。

附图说明

图1为本发明所提供的一电子系统的一种实施例的方块图。

图2为本发明所提供的一快闪存储器的一种实施例的方块图。

图3为本发明所提供的一目前区块的一种实施例的方块图。

图4为本发明所提供的一数据维护方法的一种实施例的流程图。

图5为本发明所提供的一数据维护方法的另一种实施例的流程图。

图6A-6B为本发明所提供的一数据维护方法的另一种实施例的流程图。

图7A-7B为本发明所提供的一数据维护方法的另一种实施例的流程图。

符号说明

100 电子系统;

120 主机;

140 数据储存装置;

160 控制器;

162 运算单元;

164 永久存储器;

166 随机存取存储器;

180 快闪存储器;

TB1 数据链结关系表;

SPA0-SPAN 备用区域;

P0-PN 页面;

B0~BN 区块;

CB0 第一目前区块;

CB1 第二目前区块;

D1~D4 数据;

AD1~AD10 逻辑地址;

1~4 写入序号;

S400~S412、S500~S510、S600~S620、S700~S730 步骤。

具体实施方式

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

图1为本发明所提供的一电子系统的一种实施例的方块图。电子系统100包括一主机120以及一数据储存装置140。数据储存装置140包括一快闪存储器180以及一控制器160,且可根据主机120所下达的命令操作。控制器160包括一运算单元162、一永久存储器(如,只读存储器ROM)164以及随机存取存储器(RAM)166。永久存储器164与所载的程式码、数据组成固件(firmware),由运算单元162执行,使控制器160基于该固件控制该快闪存储器180。随机存取存储器(RAM)166用以载入程式码与参数以提供控制器160根据所载入的程式码与参数动作。快闪存储器180包括多个区块,每一区块包括多个页面P0~PN,其中每一页面P0~PN具有一备用区域(Spare Area)SPA0~SPAN,如图2所示。值得注意的是,快闪存储器180以区块为最小单位进行抹除,并且页面为最小单位进行写入。另外,备用区域SPA0~SPAN可在其所相应的页面的前方或者后方,本发明不限于此。在其他实施例中,备用区域SPA0~SPAN亦可位于区块B0~BN的前端或者后端。值得注意的是,在一实施例中,具有有效数据的每一页面的备用区域中包括一逻辑地址以及一 写入序号。快闪存储器180还包括一数据链结关系表TB1,用以记录快闪存储器180中所有区块以及页面的逻辑地址以及实体地址的对应关系。

在一实施例中,控制器160依序接收多个写入指令,根据接收写入指令的顺序,分配写入指令不同的多个写入序号。另外,控制器160还根据写入指令,依序将多笔数据以及目前所执行的写入指令的写入序号写入区块中的一第一目前区块以及一第二目前区块的页面中。在一实施例中,控制器160是根据写入指令,判断写入指令所指示写入的数据的一型态为一连续型态或者一随机型态,并且将属于连续型态的数据写入第一目前区块CB0中的页面,将属于随机型态的数据写入第二目前区块CB1中的页面。举例而言,当写入指令所指示写入的数据的总长度大于一个页面的数据量时,控制器160判断该写入指令的数据为连续型态。当写入指令所指示写入的数据的总长度小于等于一个页面的数据量时,控制器160判断该写入指令的数据为随机型态,但本发明不限于此。值得注意的是,当写入指令的数据为连续型态,但这些数据中具有无法写满一个页面的数据的数据时,控制器160判断该无法写满一个页面的数据为随机型态。在另一实施例中,控制器160还将数据所相应的逻辑地址写入第一目前区块以及第二目前区块的页面中。详细而言,在写入数据的过程中,控制器160会自快闪存储器180的区块B0~BN中选取两个可使用的区块以作为一第一目前区块CB0以及一第二目前区块CB1,并且在随机存取存储器166中建立一实体转逻辑对应表以记录第一目前区块CB0以及第二目前区块CB1的页面的实体地址与数据的页面的逻辑地址的对应关系,如图3所示。第一目前区块CB0是用以储存连续型态的数据,并且第二目前区块CB1是用以储存随机型态的数据。当第一目前区块CB0以及第二目前区块CB1已经被写满(无法再写入新的数据时),控制器160将实体转逻辑对应表整理至数据链结关系表TB1,将第一目前区块CB0以及第二目前区块CB1定义为数据母区块,重新自快闪存储器180的区块B0~BN中选取两个可使用的区块以作为新的第一目前区块CB0以及新的第二目前区块CB1,并且在随机存取存储器166中建立新的一实体转逻辑对应表以记录新的第一目前区块CB0以及新的第二目前区块CB1的页面的实体地址与数据的页面的逻辑地址的对应关系。

图3为本发明所提供的一目前区块的一种实施例的方块图。在本实施例中,快闪存储器180中的每一区块B0~BN包括16个页面P0~P15,每一页面P0~P15具有一个相应的备用区域SPA0~SPA15,但本发明不限于此。因此,控制器160所选 择的第一目前区块CB0以及第二目前区块CB1也同样分别包括16个页面P0~P15以及16个备用区域SPA0~SPA15。

举例而言,当控制器160接收到用以写入一第一数据D1的一第一写入指令时,控制器160根据接收第一写入指令的顺序分配一第一写入序号给第一写入指令。举例而言,当第一写入指令是控制器160选取第一目前区块CB0以及第二目前区块CB1后所接收到的第一个写入指令时,控制器160分配”1”以作为第一写入指令的写入序号。值得注意的是,第一写入指令包括第一数据D1的逻辑地址AD1。接着,由于第一写入指令所指示写入的第一数据D1的长度小于等于一页面的大小,因此控制器160判断第一数据D1的型态为随机型态。接着,控制器160将第一数据D1、第一写入序号”1”以及逻辑地址AD1写入第二目前区块CB1中的页面P0中。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD1与第二目前区块CB1中的页面P0的实体地址对应关系。

接着,控制器160接收到用以写入多个第二数据D2的一第二写入指令。控制器160根据接收第二写入指令的顺序分配一第二写入序号给第二写入指令。由于第二写入指令是在第一写入指令之后所接收到的,所以控制器160分配”2”以作为第二写入指令的写入序号。值得注意的是,其中第二写入指令包括第二数据D1的逻辑地址AD2~AD5。接着,由于第二写入指令所指示写入的第二数据D2的总长度大于一页面的大小,因此控制器160判断第二数据D2的型态为连续型态。接着,控制器160依序将第二数据D2、第二写入序号”2”以及逻辑地址AD2~AD5写入第一目前区块CB0中的页面P0~P3中。详细而言,控制器160将第二数据D2中的第一者、第二写入序号”2”以及逻辑地址AD2写入第一目前区块CB0中的页面P0、将第二数据D2中的第二者、第二写入序号”2”以及逻辑地址AD3写入第一目前区块CB0中的页面P1、将第二数据D2中的第三者、第二写入序号”2”以及逻辑地址AD4写入第一目前区块CB0中的页面P2,依此类推。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD2~AD5与第一目前区块CB0中的页面P0~P3的实体地址对应关系。

接着,控制器160接收到用以写入多个第三数据D3的一第三写入指令。控制器160根据接收第三写入指令的顺序分配一第三写入序号给第三写入指令。由于第三写入指令是在第二写入指令之后所接收到的,所以控制器160分配”3”以作为第三写入指令的写入序号。值得注意的是,其中第三写入指令包括第三数据D3的 逻辑地址AD6~AD10。接着,由于第三写入指令所指示写入的第三数据D3的总长度大于一页面的大小,因此控制器160判断第三数据D3的型态为连续型态。然而,第一个第三数据D3以及最后一个第三数据D3的数据量小于一个页面的大小,因此第一个第三数据D3以及最后一个第三数据D3被定义为随机型态,并且除了第一个第三数据D3以及最后一个第三数据D3外,其他第三数据D3为连续型态。举例而言,每一页面P0~P15的数据量为16K,其中第一页面的地址为0~15K、第二页面的地址为16~32K,依此类推。当第一个第三数据D3的起始逻辑地址AD6为8K时,第一个第三数据D3的数据则用以储存在8~15K的地址,故第一个第三数据D3的数据量小于一个页面的大小,逻辑地址为AD6的第三数据D3为随机型态。接着,控制器160将定义为随机型态的第一个以及最后一个第三数据D3、第三写入序号”3”以及逻辑地址AD6、AD10分别写入第二目前区块CB1中的页面P1以及页面P2中,并且依序将被定义为连续型态的第三数据D3、第三写入序号”3”以及逻辑地址AD7~AD9写入第一目前区块CB0的页面P4~P6中。详细而言,控制器160将第三数据D3中的第一者、第三写入序号”3”以及逻辑地址AD6写入第二目前区块CB1中的页面P1、将第三数据D3中的第二者、第三写入序号”3”以及逻辑地址AD7写入第一目前区块CB0中的页面P4、将第三数据D3中的第三者、第三写入序号”3”以及逻辑地址AD8写入第一目前区块CB0中的页面P5,依此类推。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD6~AD9与第一目前区块CB0与第二目前区块CB1中的实体地址的对应关系。

最后,控制器160接收到用以写入一第四数据D4的一第四写入指令时,控制器160根据接收第四写入指令的顺序分配一第四写入序号给第四写入指令。由于第四写入指令是在第三写入指令之后所接收到的,所以控制器160分配”4”以作为第四写入指令的写入序号。值得注意的是,第四写入指令包括第四数据D4的逻辑地址AD2。接着,由于第四写入指令所指示写入的第四数据D4的长度小于等于一页面的大小,因此控制器160判断第四数据D4的型态为随机型态。接着,控制器160将第四数据D4、第四写入序号”4”以及逻辑地址AD2写入第二目前区块CB1中的页面P3中。最后,由于第四数据D4的逻辑地址AD2与已储存第一目前区块CB0的页面P0的于第二数据D2的逻辑地址AD2相同。因此,控制器160在写入第四数据D4之后,会将实体转逻辑对应表中逻辑地址AD2所相应的实体地址更新为第二目前区块CB1的页面P3。藉由上述流程可知,每一具有有效数据的页面 包括数据中之一者、一写入序号以及该数据所相应的一逻辑地址。另外,本发明所提供的控制器160可将相应于写入指令的顺序的写入序号导入快闪存储器180中。

当发生一断电事件时,随机存取存储器166中所储存的实体转逻辑对应表会因为电力消失而丢失。因此当发生一断电事件并且数据储存装置140恢复电力后,控制器160需要依序读取第一目前区块CB0以及第二目前区块CB1中的页面以重新在随机存取存储器166中建立一实体转逻辑对应表。此时,控制器160可藉由先前所导入的写入序号,成功辨认在不同的目前区块中具有相同逻辑地址的数据的写入顺序,以在实体转逻辑对应表中建入最后写入的数据,并且将较旧的数据舍弃。换言之,控制器160不会将较旧的数据建入实体转逻辑对应表中。另外,当第一目前区块CB0以及第二目前区块CB1中的页面因为非预期的断电事件损坏时,控制器160亦可成功辨认与损坏页面储存于不同目前区块并且在损坏页面之后所写入的页面丢弃。

详细而言,在一实施例中,当控制器160在读取第一目前区块CB0以及第二目前区块CB1的过程中检测到第一目前区块CB0或者第二目前区块CB1中的一特定页面损坏时,控制器160将损坏的特定页面舍弃并且读取特定页面的写入序号以及逻辑地址,以将写入序号大于特定页面的写入序号的页面舍弃并且将写入序号等于特定页面的写入序号并且逻辑地址大于特定页面的逻辑地址的页面舍弃。另外,当特定页面的写入序号以及逻辑地址无法被成功读取时,控制器160将损坏的特定页面舍弃并且读取位于特定页面之前的一参考特定页面的写入序号以及逻辑地址,以将写入序号大于参考特定页面的写入序号的页面舍弃并且将写入序号等于特定页面的写入序号并且逻辑地址大于参考特定页面有逻辑地址的页面舍弃。

以图3为例,当第一目前区块CB0的页面P5的数据D3由于断电事件损坏时,将损坏的页面P5以及在页面P5中的数据D3之后被写入第一目前区块CB0以及第二目前区块CB1的数据皆要被舍弃。详细而言,当控制器160在读取第一目前区块CB0以及第二目前区块CB1的过程中检测到第一目前区块CB0中的页面P5损坏时,控制器160将损坏的页面P5舍弃并且读取第一目前区块CB0的页面P5的写入序号。接着,控制器160将第一目前区块CB0的页面P5中的写入序号”3”与第一目前区块CB0以及第二目前区块CB1中的其他页面的写入序号进行比较。由于第二目前区块CB1中的页面P4的写入序号为4,故控制器160将写入序号大于页面P5中的写入序号”3”的第二目前区块CB1中的页面P4舍弃。接着,控制 器160检测到第一目前页面CB0中的页面P4以及页面P6以及第二目前页面CB1中的页面P1~P2中的写入序号与第一目前区块CB0的页面P5的写入序号相同。控制器160读取第一目前区块CB0的页面P5中的逻辑地址”AD8”,并且将第一目前区块CB0的页面P5中的逻辑地址”AD8”与第一目前页面CB0中的页面P4、P6以及第二目前页面CB1中的页面P1~P2的逻辑地址进行比较。由于第一目前区块CB0中的页面P4的逻辑地址为AD7、第一目前区块CB0中的页面P6的写入序号为AD9、第二目前区块CB1中的页面P2的写入序号为AD10,故控制器160将逻辑地址大于页面P5中的逻辑地址”AD8”的第一目前区块CB0中的页面P6以及第二目前区块CB1中的页面P2舍弃。

当第一目前区块CB0中损坏的页面P5的写入序号以及逻辑地址无法被成功读取时,控制器160将损坏的页面P5舍弃并且将位于第一目前区块CB0的页面P5的实体地址前的第一目前区块CB0的页面P4作为一参考特定页面。控制器160读取第一目前区块CB0的页面P4的写入序号。接着,控制器160将第一目前区块CB0的页面P4中的写入序号”3”与第一目前区块CB0以及第二目前区块CB1中的其他页面的写入序号进行比较。由于第二目前区块CB1中的页面P4的写入序号为4,故控制器160将写入序号大于页面P5中的写入序号”3”的第二目前区块CB1中的页面P4舍弃。接着,控制器160检测到第一目前页面CB0中的页面P6以及第二目前页面CB1中的页面P1~P2中的写入序号与第一目前区块CB0的页面P4的写入序号相同。控制器160读取第一目前区块CB0的页面P4中的逻辑地址”AD7”,并且将与第一目前页面CB0中的页面P6以及第二目前页面CB1中的页面P1~P2的逻辑地址进行比较。由于第一目前区块CB0中的页面P6的写入序号为AD9、第二目前区块CB1中的页面P2的写入序号为AD10,故控制器160将逻辑地址大于页面P4中的逻辑地址”AD7”的第一目前区块CB0中的页面P6以及第二目前区块CB1中的页面P2舍弃。如上所述,当第一目前区块CB0以及第二目前区块CB1中的页面因为非预期的断电事件损坏时,控制器160亦可成功辨认与损坏页面储存于不同目前区块并且在损坏页面之后所写入的页面丢弃。在本实施例中,若是没有写入序号,控制器160则无法判断第二目前区块CB1中的页面P2是在损坏的第一目前区块CB0的页面P5之后写入的。

在另一实施例中,当控制器160在读取第一目前区块CB0以及第二目前区块CB1的过程中检测到第一目前区块CB0以及第二目前区块CB1中存在具有相同逻 辑地址的页面时,控制器160比较具有相同逻辑地址的页面的写入序号,并且将具有较小写入序号的页面舍弃。

以图3为例,当控制器160在读取第一目前区块CB0以及第二目前区块CB1的过程中检测到第一目前区块CB0的页面P0以及第二目前区块CB1的页面P3具有相同的逻辑地址”AD2”。控制器160比较第一目前区块CB0的页面P0以及第二目前区块CB1的页面P3的写入序号。在本实施例中,第一目前区块CB0的页面P0的写入序号为”2”并且第二目前区块CB1的页面P3的写入序号为”4”。接着,控制器160将具有较小写入序号的第一目前区块CB0的页面P0舍弃。如上所述,控制器160可藉由先前所导入的写入序号,成功辨认在不同的目前区块中具有相同逻辑地址的数据的写入顺序,以在实体转逻辑对应表中建入最后写入的数据,并且将较旧的数据舍弃。

图4为本发明所提供的一数据维护方法的一种实施例的流程图。数据维护方法适用于图1所示的数据储存装置140,并且图4所示的数据维护方法是将数据写入快闪存储器180。流程开始于步骤S400。

在步骤S400中,控制器160判断是否接收到一写入指令。当控制器160接收到写入指令时,流程进行至步骤S402;否则,流程回到步骤S400,控制器160继续判断是否接收到一写入指令。值得注意的是,写入指令包括至少一逻辑地址,并且写入指令是用以指示控制器160将至少一数据写入所具有的逻辑地址中。

接着,在步骤S402中,控制器160根据接收写入指令的顺序,分配一写入序号给写入指令。以图3为例,当控制器160接收到用以写入一第一数据D1的一第一写入指令时,控制器160根据接收第一写入指令的顺序分配一第一写入序号给第一写入指令,其中第一写入指令是控制器160选取第一目前区块CB0以及第二目前区块CB1后所接收到的第一个写入指令时,故控制器160分配”1”以作为第一写入指令的写入序号。当控制器160在第一写入指令之后接收到一第二写入指令,控制器160则根据接收第二写入指令的顺序分配一第二写入序号给第二写入指令,其中由于第二写入指令是在第一写入指令之后所接收到的,所以控制器160分配”2”以作为第二写入指令的写入序号。当控制器160在第二写入指令之后接收到一第三写入指令,控制器160则根据接收第三写入指令的顺序分配一第三写入序号给第三写入指令,其中由于第三写入指令是在第二写入指令之后所接收到的,所以控 制器160分配”3”以作为第三写入指令的写入序号,依此类推。值得注意的是,写入序号是用以代表写入指令执行的顺序。在其他实施例中,写入序号亦可为其他可代表顺序先后的数值或者代号。

接着,在步骤S404中,控制器160根据写入指令,判断写入指令所指示写入的数据的一型态为一连续型态或者一随机型态。当控制器160判断数据为随机型态时,流程进行至步骤S406。当控制器160判断数据为连续型态时,流程进行至步骤S408。举例而言,当写入指令所指示写入的数据的总长度大于一个页面的数据量时,控制器160判断该写入指令的数据为连续型态。当写入指令所指示写入的数据的总长度小于等于一个页面的数据量时,控制器160判断该写入指令的数据为随机型态,但本发明不限于此。值得注意的是,当写入指令的数据为连续型态,但这些数据中具有无法写满一个页面的数据的数据时,控制器160判断该无法写满一个页面的数据为随机型态。

在步骤S406中,控制器160根据所接收的写入指令,将被判断为随机型态的数据以及所相应的写入序号与逻辑地址写入第二目前区块CB1的页面中,并且在实体转逻辑对应表中记录逻辑地址与第二目前区块CB1中的页面的实体地址对应关系。以图3为例,控制器160在步骤S400中接收到用以写入一第一数据D1的一第一写入指令。第一写入指令是控制器160选取第一目前区块CB0以及第二目前区块CB1后所接收到的第一个写入指令,故控制器160在步骤S402中分配”1”以作为第一写入指令的写入序号。由于第一写入指令所指示写入的第一数据D1的长度小于等于一页面的大小,因此在步骤S404中控制器160判断第一数据D1的型态为随机型态。接着,在步骤S406中,控制器160将第一数据D1、第一写入序号”1”以及逻辑地址AD1写入第二目前区块CB1中的页面P0中。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD1与第二目前区块CB1中的页面P0的实体地址对应关系。

在步骤S408中,控制器160根据所接收的写入指令,将被判断为连续型态的数据以及所相应的写入序号与逻辑地址依序写入第一目前区块CB0的页面中,并且在实体转逻辑对应表中记录逻辑地址与第一目前区块CB0中的页面的实体地址对应关系。以图3为例,控制器160在步骤S400中接收到用以写入多个第二数据D2的一第二写入指令。由于第二写入指令是在第一写入指令之后所接收到的,所以控制器160在步骤S402中分配”2”以作为第二写入指令的写入序号。值得注 意的是,其中第二写入指令包括第二数据D1的逻辑地址AD2~AD5。由于第二写入指令所指示写入的第二数据D2的总长度大于一页面的大小,因此控制器160在步骤S404中判断第二数据D2的型态为连续型态。接着,在步骤S408中,控制器160依序将第二数据D2、第二写入序号”2”以及逻辑地址AD2~AD5写入第一目前区块CB0中的页面中。详细而言,控制器160将第二数据D2中之第一者、第二写入序号”2”以及逻辑地址AD2写入第一目前区块CB0中的页面P0、将第二数据D2中之第二者、第二写入序号”2”以及逻辑地址AD3写入第一目前区块CB0中的页面P1、将第二数据D2中之第三者、第二写入序号”2”以及逻辑地址AD4写入第一目前区块CB0中的页面P2,依此类推。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD2~AD5与第一目前区块CB0中的页面P0~P3的实体地址对应关系。

值得注意的是,在某些情况中,同一个写入指令的数据可能有些是随机型态有些是连续型态。在这个实施例中,控制器160则依序地将数据依照其形态写入第一目前区块CB0以及第二目前区块CB1中。以图3为例,控制器160在步骤S400中接收到用以写入多个第三数据D3的一第三写入指令。由于第三写入指令是在第二写入指令之后所接收到的,所以控制器160在步骤S402中分配”3”以作为第三写入指令的写入序号。值得注意的是,其中第三写入指令包括第三数据D3的逻辑地址AD6~AD10。接着,由于第三写入指令所指示写入的第三数据D3的总长度大于一页面的大小,因此控制器160判断第三数据D3的型态为连续型态。然而,第一个第三数据D3以及最后一个第三数据D3的数据量小于一个页面的大小,因此第一个第三数据D3以及最后一个第三数据D3被定义为随机型态,并且除了第一个第三数据D3以及最后一个第三数据D3外,其他第三数据D3为连续型态。举例而言,每一页面P0~P15的数据量为16K,其中第一页面的地址为0~15K、第二页面的地址为16~32K,依此类推。当第一个第三数据D3的起始逻辑地址AD6为8K时,第一个第三数据D3的数据则用以储存在8~15K的地址,故第一个第三数据D3的数据量小于一个页面的大小,逻辑地址为AD6的第三数据D3为随机型态。接着,控制器160将定义为随机型态的第一个以及最后一个第三数据D3、第三写入序号”3”以及逻辑地址AD6、AD10分别写入第二目前区块CB1中的页面P1以及页面P2中,并且依序将被定义为连续型态的第三数据D3、第三写入序号”3”以及逻辑地址AD7~AD9写入第一目前区块CB0的页面P4~P6中。详细而言, 控制器160执行步骤S406已将第三数据D3中之第一者、第三写入序号”3”以及逻辑地址AD6写入第二目前区块CB1中的页面P1、接着执行步骤S408以将第三数据D3中之第二者、第三写入序号”3”以及逻辑地址AD7写入第一目前区块CB0中的页面P4、最后执行步骤S406以将第三数据D3中之第三者、第三写入序号”3”以及逻辑地址AD8写入第一目前区块CB0中的页面P5,依此类推。最后,控制器160在实体转逻辑对应表中记录逻辑地址AD6~AD9与第一目前区块CB0与第二目前区块CB1中的实体地址的对应关系。

接着,在步骤S410中,控制器160判断第一目前区块CB0以及第二目前区块CB1是否可继续进行写入。当第一目前区块CB0以及第二目前区块CB1是否可继续进行写入时,流程回到步骤S400,控制器160继续判断是否接收到其他写入指令;否则,流程进行至步骤S412。

在步骤S412中,控制器160将实体转逻辑对应表整理至数据链结关系表TB1,将第一目前区块CB0以及第二目前区块CB1定义为数据母区块,重新自快闪存储器180的区块B0~BN中选取两个可使用的区块以作为新的第一目前区块CB0以及新的第二目前区块CB1,并且在随机存取存储器166中建立新的一实体转逻辑对应表以记录新的第一目前区块CB0以及新的第二目前区块CB1的页面的实体地址与数据的页面的逻辑地址的对应关系。接着,流程回到步骤S400,控制器160继续判断是否接收到其他写入指令。

图5为本发明所提供的一数据维护方法的另一种实施例的流程图。数据维护方法适用于图1所示的数据储存装置140,并且图5所示的数据维护方法用以在断电重启之后建立实体转逻辑对应表。流程开始于步骤S500。

在步骤S500中,数据储存装置140在一断电事件后重新启动并且恢复电力。值得注意的是,断电事件可为正常的关机或者不正常的电源中断。

接着,在步骤S502中,控制器160依序读取第一目前区块CB0以及第二目前区块CB1中的页面以建立一实体转逻辑对应表。在一实施例中,控制器160是先从第一目前区块CB0的第一个页面开始读取,但本发明不限于此。在其他实施例中,控制器160是先从第一目前区块CB0的最后个页面开始读取。在其他实施例中,控制器160亦可从第二目前区块CB1的第一个页面或者最后一个页面开始读取。

在步骤S504中,控制器160判断所读取的页面是否与先前已读取的页面的逻辑地址重复。当控制器160发现所读取的页面是否与先前已读取的页面的逻辑地址重复时,过程进行至步骤S506;否则,流程进行至步骤S505。

在步骤S505中,控制器160将所读取的页面的逻辑地址以及在第一目前区块CB0或者第二目前区块CB1的实体地址记录于实体转逻辑对应表中。接着,流程回到步骤S502,控制器160继续读取第一目前区块CB0或者第二目前区块CB1中的下一个页面。

在步骤S506中,控制器160比较具有相同逻辑地址的页面的写入序号。换言之,控制器160比较目前所读取的页面的备用区域中的写入序号以及与目前所读取的页面的逻辑地址相同的页面的备用区域中的写入序号。

接着,在步骤S508中,控制器160将具有较小写入序号的页面丢弃。举例而言,当目前所读取的页面的写入序号大于与目前所读取的页面的逻辑地址相同的页面的写入序号时,控制器160将目前所读取的页面的逻辑地址与其在第一目前区块CB0或者第二目前区块CB1的实体地址覆盖原本记录于实体转逻辑对应表中与目前所读取的页面的逻辑地址相同的页面的数据。当目前所读取的页面的写入序号小于与目前所读取的页面的逻辑地址相同的页面的写入序号时,控制器160则不将目前所读取的页面的逻辑地址与其在第一目前区块CB0或者第二目前区块CB1的实体地址记录于实体转逻辑对应表中。

接着,在步骤S510中,控制器160判断第一目前区块CB0以及第二目前区块CB1中的页面是否全部读取完毕。当第一目前区块CB0以及第二目前区块CB1中的页面尚未全部读取完毕时,流程会到步骤S502,控制器160继续读取下一个页面。第一目前区块CB0以及第二目前区块CB1中的页面已全部读取完毕时,流程结束于步骤S510。值得注意的是,在其他实施例中,控制器160亦可将第一目前区块CB0以及第二目前区块CB1中的页面全部读完后再判断是否有重复的逻辑地址,本发明不限于此。

图6为本发明所提供的一数据维护方法的另一种实施例的流程图。数据维护方法适用于图6所示的数据储存装置140,并且图6所示的数据维护方法用以在断电重启之后建立实体转逻辑对应表。流程开始于步骤S600。

在步骤S600中,数据储存装置140在一断电事件后重新启动并且恢复电力。值得注意的是,断电事件可为正常的关机或者不正常的电源中断。

接着,在步骤S602中,控制器160读取第一目前区块CB0以及第二目前区块CB1中所有的页面,以建立一实体转逻辑对应表。在一实施例中,控制器160是先从第一目前区块CB0的第一个页面开始读取直到第一目前区块CB0以及第二目前区块CB1中的所有页面皆被读取完毕,但本发明不限于此。在其他实施例中,控制器160是先从第一目前区块CB0的最后个页面开始读取。在其他实施例中,控制器160亦可从第二目前区块CB1的第一个页面或者最后一个页面开始读取。

接着,在步骤S604中,控制器160判断第一目前区块CB0以及第二目前区块CB1的页面中是否有一特定页面损坏。值得注意的是,特定页面可为断第一目前区块CB0以及第二目前区块CB1的页面中损坏的任一者。当有页面损坏时,流程进行至步骤S605;否则,流程结束于步骤S604。

在步骤S605中,控制器160判断特定页面的写入序号以及逻辑地址是否可被成功读取。当特定页面的写入序号以及逻辑地址可被成功读取时,流程进行至步骤S606;否则,流程进行至步骤S614。

在步骤S606中,控制器160将特定页面的写入序号与第一目前区块CB0以及上二目前区块中的其他页面的写入序号进行比较。

接着,在步骤S608中,控制器160将损坏的特定页面以及写入序号大于特定页面的写入序号的页面舍弃。换言之,控制器160将实体转逻辑对应表中关于特定页面以及入序号大于特定页面的写入序号的页面的数据链结关系删除。以图3为例,当第一目前区块CB0的页面P5的数据D3由于断电事件损坏时,控制器160将损坏的页面P5舍弃并且读取第一目前区块CB0的页面P5的写入序号。控制器160将第一目前区块CB0的页面P5中的写入序号”3”与第一目前区块CB0以及第二目前区块CB1中的其他页面的写入序号进行比较。由于第二目前区块CB1中的页面P4的写入序号为4,故控制器160将写入序号大于页面P5中的写入序号”3”的第二目前区块CB1中的页面P4舍弃。

接着,在步骤S610中,控制器160比较特定页面的逻辑地址以及写入序号等于特定页面的写入序号的第一目前区块CB0以及第二目前区块CB1中的其他页面的逻辑地址。

接着,在步骤S612中,控制器160将逻辑地址大于特定页面的逻辑地址的其他页面舍弃。换言之,控制器160将实体转逻辑对应表中关于逻辑地址大于特定页面的逻辑地址的其他页面的数据链结关系删除。以图为例,当第一目前区块CB0 的页面P5的数据D3由于断电事件损坏时,控制器160检测到第一目前页面CB0中的页面P4以及页面P6以及第二目前页面CB1中的页面P1~P2中的写入序号与第一目前区块CB0的页面P5的写入序号相同。控制器160读取第一目前区块CB0的页面P5中的逻辑地址”AD8”,并且将第一目前区块CB0的页面P5中的逻辑地址”AD8”与第一目前页面CB0中的页面P4、P6以及第二目前页面CB1中的页面P1~P2的逻辑地址进行比较。由于第一目前区块CB0中的页面P4的逻辑地址为AD7、第一目前区块CB0中的页面P6的写入序号为AD9、第二目前区块CB1中的页面P2的写入序号为AD10,故控制器160将逻辑地址大于页面P5中的逻辑地址”AD8”的第一目前区块CB0中的页面P6以及第二目前区块CB1中的页面P2舍弃。流程结束于步骤S612。

在步骤S614中,控制器160将特定页面舍弃,并且将位于特定页面之前的一参考特定页面的写入序号与第一目前区块CB0以及上二目前区块中的其他页面的写入序号进行比较。换言之,控制器160将实体转逻辑对应表中关于特定页面的数据链结关系删除。以图3为例,当第一目前区块CB0中损坏的页面P5的写入序号以及逻辑地址无法被成功读取时,控制器160将损坏的页面P5舍弃并且将位于第一目前区块CB0的页面P5的实体地址前的第一目前区块CB0的页面P4作为一参考特定页面。控制器160读取第一目前区块CB0的页面P4的写入序号。接着,控制器160将第一目前区块CB0的页面P4中的写入序号”3”与第一目前区块CB0以及第二目前区块CB1中的其他页面的写入序号进行比较。

接着,在步骤S616中,控制器160将写入序号大于参考特定页面的写入序号的页面舍弃。换言之,控制器160将实体转逻辑对应表中关于写入序号大于参考特定页面的写入序号的页面的数据链结关系删除。以图3为例,当第一目前区块CB0的页面P4为参考特定页面时,由于第二目前区块CB1中的页面P4的写入序号为4,故控制器160将写入序号大于页面P5中的写入序号”3”的第二目前区块CB1中的页面P4舍弃。

接着,在步骤S618中,控制器160比较写入序号等于参考特定页面的写入序号的第一目前区块CB0以及第二目前区块CB1中的其他页面。

接着,在步骤S620中,控制器160将逻辑地址大于参考特定页面的逻辑地址的写入序号等于参考特定页面的写入序号的第一目前区块CB0以及第二目前区块CB1中的其他页面舍弃。以图3为例,当第一目前区块CB0的页面P4为参考特定 页面时,控制器160检测到第一目前页面CB0中的页面P6以及第二目前页面CB1中的页面P1~P2中的写入序号与第一目前区块CB0的页面P4的写入序号相同。控制器160在步骤S618中,读取第一目前区块CB0的页面P4中的逻辑地址”AD7”,并且将与第一目前页面CB0中的页面P6以及第二目前页面CB1中的页面P1~P2的逻辑地址进行比较。接着,由于第一目前区块CB0中的页面P6的写入序号为AD9、第二目前区块CB1中的页面P2的写入序号为AD10,故控制器160将逻辑地址大于页面P4中的逻辑地址”AD7”的第一目前区块CB0中的页面P6以及第二目前区块CB1中的页面P2舍弃。

图3为本发明所提供的一数据维护方法的另一种实施例的流程图。图7所示的数据维护方法包括了图5以及图6所示的数据维护方法,其中图7所示的步骤S700~S710的步骤相似于图5的步骤S500~S510,并且图7的步骤S714~S730的步骤相似于图6中的步骤S602~S620,其说明请参考图5~6,再此不再赘述。

本发明所提供的数据储存装置140以及数据维护方法可将写入指令的顺序记录于页面中,故数据储存装置140以及数据维护方法可藉由写入指令的顺序重建实体转逻辑对应表。

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

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

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