固态储存装置及运用于其中的快闪转换层对应表重建方法与流程

文档序号:11458555阅读:208来源:国知局
本发明是有关于一种固态储存装置及其控制方法,且特别是有关于一种运用于固态储存装置的快闪转换层对应表(flashtranslationlayertable)重建方法。
背景技术
::众所周知,固态储存装置(solidstatedevice,ssd)使用非挥发性记忆体(non-volatilememory)为主要储存元件。也就是说,当数据写入非挥发性记忆体后,一旦系统电源关闭,数据仍保存在固态储存装置中。请参照图1,其所绘示为现有固态储存装置的示意图。固态储存装置10中包括一控制电路110、缓冲元件(bufferingelement)130与一非挥发性记忆体120。而在固态储存装置10外部,控制电路110通过一外部总线20与主机(host)12之间进行指令与数据的传递。其中,外部总线20可为usb总线、sata总线或pcie总线等等。再者,缓冲元件130可为挥发性记忆体,例如为dram。缓冲元件130的储存空间被规划分为多个部分。缓冲元件130的第一部分储存空间可作为数据缓冲区(databufferingarea)132。其中,数据缓冲区132用来暂存主机12输入的写入数据(writedata)或者非挥发性记忆体120执行垃圾搜集动作(garbagecollectionaction)时所欲搬移的有效数据(validdata)。举例来说,当主机12欲将写入数据储存至非挥发性记忆体120时,控制电路110会将由外部总线20接收到的写入数据暂存至数据缓冲区132。或者,当控制电路110针对非挥发性记忆体进行垃圾搜集动作时,获得的欲搬移的有效数据会暂存至数据缓冲区132中。而控制电路110会适时地由数据缓冲区132将写入数据或者有效数据储存至非挥发性记忆体120。缓冲元件130的第二部分储存空间可作为快闪转换层对应表(flashtranslationlayertable,以下简称ftl表)136。在固态储存装置10中,控制电路110利用ftl表可快速地存取非挥发性记忆体120中的数据,以下详细 说明ftl表的用途。一般来说,主机12端是利用逻辑区块地址(logicalblockaddress,以下简称lba地址)来定义固态储存装置10中的数据地址。而在非挥发性记忆体120端则是利用实体配置地址(physicalallocationaddress,以下简称paa地址)来定义非挥发性记忆体120中的数据地址。因此,在固态储存装置10中需要通过ftl表来进行lba地址与pba地址之间的映射(mapping),而ftl表即储存于缓冲元件130中。举例来说,当主机12发出写入指令时,主机12会产生lba地址与写入数据,用以指示控制电路110将该写入数据储存于lba地址。接着,控制电路110会于非挥发性记忆体120中决定paa地址,用来储存该写入数据。再者,控制电路110会进一步的将lba地址与paa地址之间的关系记录于ftl表136中。换言之,根据ftl表136的记录内容,控制电路110可根据lba地址找到paa地址,并于非挥发性记忆体120中找到该写入数据。由以上的说明可知,ftl表136储存lba地址与paa地址之间的关系,一旦ftl表136中的内容错误,则控制电路110将无法找到数据。因此,当固态储存装置10在电源正常供应时,ftl表136会被储存在缓冲元件130中,以便于快速读取、储存及更新lba地址与paa地址之间的关系。再者,当固态储存装置10的供电即将停止之前,控制电路110会将ftl表136的内容写回(writeback)非挥发性记忆体120中。而在停止供电后,储存在缓冲元件130中的ftl表136的内容将会消失。由于在停止供电之前,ftl表136的内容已经储存于非挥发性记忆体中,因此当固态储存装置10再次接收电源启动时,控制电路110会先将非挥发性记忆体120中的ftl表136的内容再次载入(load)至缓冲元件130中,以便固态储存装置10进行正常运作。基本上,当控制电路欲将暂存于数据缓冲区132的数据写入非挥发性记忆体120时,控制电路110会先在非挥发性记忆体120中选择第一空白区块(blankblock)定义为开启区块(openblock),并且提供一区块编程序号(blockprogrammingserialnumber)给此第一空白区块。接着,将数据缓冲区132的数据写入非挥发性记忆体120的开启区块中。当开启区块写满数据后,控制电路110会在非挥发性记忆体120中再次选 择一第二空白区块定义为开启区块,并且将区块编程序号增加1之后提供给第二空白区块。接着,将数据缓冲区132中的数据写入非挥发性记忆体120的开启区块中。换言之,在非挥发性记忆体120中,区块编程序号是相关于每个区块被编程的先后次序。除非固态储存装置10进行格式化(format)使区块编程序号被归零之外,非挥发性记忆体120中的区块编程序号会持续地累加。请参照图2a至图2h,其所绘示为现有固态储存装置内部的运作示意图。以下是以非挥发性记忆体120中具有6个区块(block)b1~b6,每个区块各有4个储存空间(storagespace)为例来说明。因此,b11代表第一区块b1中第一储存空间的paa地址、b12代表第一区块b1中第二储存空间的paa地址,并依此类推。再者,以下的a、c、e、x皆代表一个特定数字。首先,当固态储存装置接收电源时,储存在非挥发性记忆体120保留区(reservedarea)中的ftl表的内容会先被载入缓冲元件130的ftl表136中。由图2a的ftl表136可知,paa地址b21映射至lba地址(a),因此第二区块b2的第一储存空间即储存lba地址(a)的数据d1。paa地址b22映射至lba地址(a+3),因此第二区块b2的第二储存空间即储存lba地址(a+3)的数据d2。paa地址b23映射至lba地址(e),因此第二区块b2的第三储存空间即储存lba地址(e)的数据d3。paa地址b24映射至lba地址(c+1),因此第二区块b2的第四储存空间即储存lba地址(c+1)的数据d4。而ftl表136中其他的内容也可以依此类推。再者,根据非挥发性记忆体120中的区块编程序号(x)、(x+1)、(x+2)可知,第二区块b2先被编程,第五区块b5次之,第三区块b3最后被编程。而ftl表136中也记录了前一次正常断电之前,最后一个区块编程序号,亦即sn:x+2。换言之,当固态储存装置10恢复供电后,控制电路110可根据ftl表136的内容来确认非挥发性记忆体120中的储存状况。当控制电路110确认完成后,固态储存装置10即可开始正常运作。如图2b所示,当固态储存装置10正常运作时,控制电路110接到主机12的写入指令,提供数据d5’、d2’、d11’、d8’以更新lba地址(a+2)~(a+5)内的数据d5、d2、d11、d8。此时,数据d5’、d2’、d11’、d8’暂存于数 据缓冲区132中。请参照图2c,控制电路110选择第一区块b1为开启区块,并且将区块编程序号(x+3)提供给第一区块b1,并且更新于ftl表136中(sn:x+3)。接着,控制电路120将数据缓冲区132中的数据d5’、d2’、d11’、d8’写入开启区块(第一区块b1)的4个储存空间后,会接着更新ftl表136。基本上,快闪记忆体120中区块内的储存空间除了储存数据之外,也会储存该数据所对应的lba地址。换言之,快闪记忆体120中第一区块b1的四个储存空间内除了储存数据d5’、d2’、d11’、d8’之外,也会储存数据d5’、d2’、d11’、d8’所对应的lba地址(未绘示)。如图2c所示,由于数据d5’、d2’、d11’、d8’储存于开启区块(第一区块b1),所以ftl表136中的paa地址(b11)~(b14)映射至lba地址(a+2)~(a+5)。再者,ftl表136中先前储存旧的数据d5、d2、d11、d8的paa地址(b31)、(b22)、(b53)、(b34)映射至lba地址ff,其中ff代表lba地址为无效数据。换句话说,由图2c的ftl表136可知,paa地址(b31)、(b22)、(b53)、(b34)对应的储存空间内为无效数据(invaliddata)。如图2d所示,控制电路110接到主机12的写入指令,提供数据d3’、d9’、d7’、d12’以更新lba地址(e)~(e+3)内的数据d3、d9、d7、d12。此时,数据d3’、d9’、d7’、d12’暂存于数据缓冲区132中。请参照图2e,控制电路110选择第六区块b6为开启区块,并且将区块编程序号(x+4)提供给第六区块b6,并且更新于ftl表136中(sn:x+4)。接着,控制电路120将数据缓冲区132中的数据d3’、d9’、d7’、d12’写入开启区块(第六区块b6)的4个储存空间后,会接着更新ftl表136。如图2e所示,由于数据d3’、d9’、d7’、d12’储存于开启区块(第六区块b6),所以ftl表136中的paa地址(b61)~(b64)映射至lba地址(e)~(e+3)。再者,ftl表136中先前储存旧的数据d3、d9、d7、d12的paa地址(b23)、(b51)、(b33)、(b54)映射至lba地址ff,其中ff代表lba地址为无效数据。换句话说,由图2e的ftl表136可知,paa地址(b23)、(b51)、(b33)、(b54)对应的储存空间内为无效数据(invaliddata)。当固态储存装置120中有太多无效数据时,控制电路110会进行垃圾搜集动作。如图2f所示,控制电路110将第三区块b3与第五区块b5中的有效数 据d6、d10移动至数据缓冲区132。再者,当控制电路110进行垃圾搜集动作时,也可以接收主机12的命令。因此,如图2f所示,控制电路110接到主机12的写入指令,提供lba地址为(c+2)的数据d13以及lba地址为(a+4)的更新数据d11”。因此,数据缓冲区132也储存了数据d13与d11”。请参照图2g,控制电路120选择第四区块b4为开启区块,并且将区块编程序号(x+5)提供给第四区块b4,并且更新于ftl表136中(sn:x+5)。接着,将数据缓冲区132中的数据d6、d10、d13、d11”写入开启区块(第四区块b4)的4个储存空间后,会接着更新ftl表136。如图2g所示,由于垃圾搜集动的有效数据d6、d10已经写入开启区块(第四区块b4),所以原先储存数据d6、d10的paa地址(b32)、(b52)映射至lba地址ff。再者,ftl表136中的paa地址(b41)、(b42)、(b43)、(b44)映射至lba地址(c)、(a+1)、(c+2)、(a+4)。另外,ftl表136中先前储存旧的数据d11’的paa地址(b13)映射至lba地址ff。其中ff代表lba地址为无效数据。由图2g的ftl表136可知,paa地址(b13)、(b32)、(b52)对应的储存空间内为无效数据(invaliddata)。paa地址(b31)~(b34)与paa地址(b51)~(b54)对应的储存空间也为无效数据。亦即,第三区块b3与第五区块b5中的储存空间内皆为无效数据。由于第三区块b3与第五区块b5中的储存空间内皆为无效数据。如图2h所示,控制电路110完成垃圾搜集动作的有效数据搬移后,第三区块b3与第五区块b5被抹除为空白区块,且对应的区块编程序号(x+2)、(x+1)也一并被抹除。再者,ftl表136中的paa地址(b31)~(b34)以及(b51)~(b54)被更新为无lba地址的映射关系。换言之,根据ftl表136的内容可知,第三区块b3与第五区块b5已成为空白区块。于图2h的情况(situation)时,若控制电路110接收到主机发出的电源关闭指令时,代表固态储存装置10即将被断电。此时,控制电路110将ftl表136中的内容储存至非挥发性记忆体120内的保留区后,固态储存装置10被断电。再者,当固态储存装置10再次接收到电源时,储存于非挥发性记忆体120中的ftl表的内容会先被载入缓冲元件130的ftl表136中,之后固态储存装 置10即开始正常运作。然而,于图2h的情况(situation)时,若固态储存装置10遭受不正常断电时,由于控制电路110未接收到主机12发出的电源关闭指令,缓冲元件130中ftl表136中的内容会无法即时被储存至非挥发性记忆体120而直接消失。当固态储存装置10再次接收到电源时,控制电路110会根据一电源旗标(powerflag)得知前一次的断电为不正常断电。之后,控制电路110需要先重建(rebuild)ftl表136的内容,当ftl表136的内容重建完成后,固态储存装置10才可以正常运作。以下以图2h的状态遭受到不正常断电为例,说明固态储存装置10不正常断电后的ftl表136内容重建的过程。请参考图3a至图3e,其所绘示为现有ftl表内容重建的示意图。固态储存装置10于不正常断电之后再次接收到电源,由于非挥发性记忆体120的保留区未保留前一次断电前的ftl表136的内容。如图3a所示,非挥发性记忆体120内容相同于图2h中非挥发性记忆体的内容,而载入的ftl表136的内容会相同于图2a中ftl表136中的内容(更早一次断电前所储存在非挥发性记忆体120的内容)。再者,控制电路110根据一电源旗标(powerflag)得知前一次的断电为不正常断电,因此需要进行ftl表重建程序。如图3a所示,控制电路110根据ftl表136的区块编程序号(sn:x+2)得知,该ftl表136仅更新至区块编程序号(x+2),所以ftl表136必须根据区块编程序号的次序逐次更新至最大值的区块编程序号。如图3b所示,控制电路110将ftl表136的区块编程序号更新为(sn:x+3),并读取区块编程序号(x+3)的第一区块b1的内容。由于快闪记忆体120中的区块的储存空间内除了储存数据之外,也会储存各数据所对应的lba地址,因此于读取区块编程序号(x+3)的第一区块b1的内容时,可同时得到储存的数据及其对应的lba地址。在此实施例中,第一区块b1的第一储存空间、第二储存空间、第三储存空间、第四储存空间中的数据d5’、d2’、d11’、d8’对应于的lba地址(a+2)、(a+3)、(a+4)、(a+5)。因此,控制电路110更新ftl表136。将paa地址(b11)对应至lba地址(a+2);paa地址(b12)对应至lba地址(a+3);paa地址(b13)对应至lba地址(a+4);paa(b14)地址对应至lba地址(a+5)。另外,将先前对应至lba地址(a+2)的paa地址(b31),更新为对应至lba地址(ff);先前对应至lba地址(a+3)的paa地址(b22),更新为对应至lba地址(ff);先前对应至lba地址(a+4)的paa地址(b53),更新为对应至lba地址(ff);先前对应至lba地址(a+5)的paa地址(b34),更新为对应至lba地址(ff)。如图3c所示,控制电路110将ftl表136的区块编程序号更新为(sn:x+4),并读取区块编程序号(x+4)的第六区块b6的内容。其中,第六区块b6的四个储存空间中的数据d3’、d9’、d7’、d12’对应于lba地址(e)、(e+1)、(e+2)、(e+3)。因此,控制电路110更新ftl表136。将paa地址(b61)对应至lba地址(e);paa地址(b62)对应至lba地址(e+1);paa地址(b63)对应至lba地址(e+2);paa地址(b64)对应至lba地址(e+3)。另外,将先前对应至lba地址(e)的paa地址(b23),更新为对应至lba地址(ff);先前对应至lba地址(e+1)的paa地址(b51),更新为对应至lba地址(ff);先前对应至lba地址(e+2)的paa地址(b33),更新为对应至lba地址(ff);先前对应至lba地址(e+3)的paa地址(b54),更新为对应至lba地址(ff)。如图3d所示,控制电路110将ftl表136的区块编程序号更新为(sn:x+5),并读取区块编程序号(x+5)的第四区块b4的内容。其中,第四区块b4的四个储存空间中的数据d6、d10、d13、d11”对应于lba地址(c)、(a+1)、(c+2)、(a+4)。因此,控制电路110更新ftl表136。将paa地址(b41)对应至lba地址(c);paa地址(b42)对应至lba地址(a+1);paa地址(b43)对应至lba地址(c+2);paa地址(b44)对应至lba地址(a+4)。另外,将先前对应至lba地址(c)的paa地址(b32),更新为对应至lba地址(ff);先前对应至lba地址(a+1)的paa地址(b52),更新为对应至lba地址(ff);先前对应至lba地址(a+4)的paa地址(b13),更新为对应至lba地址(ff)。由于非挥发性记忆体120中最大的区块编程序号为(x+5),因此控制电路110整理出如图3d所示的ftl表136的内容。再者,如图3e所示,由于paa 地址(b31)~(b34)以及(b51)~(b54)皆对应至lba地址(ff)。因此,控制电路110确定第三区块b3以及第五区块b5为空白区块后,可将paa地址(b31)~(b34)以及(b51)~(b54)更新为无lba地址的映射关系。明显地,图3e与图2h完全相同。换言之,控制电路110已经成功重建ftl表136,并将ftl表136恢复至非正常断电之前的状态。因此,固态储存装置10可以开始正常运作。请参照图4,其所绘示为现有固态储存装置的ftl表的重建流程示意图。当固态储存装置10接收电源之后(步骤s410),控制电路110由非挥发性记忆体120的保留区中载入ftl表的内容,并于缓冲元件130中建立ftl表136(步骤s420)。接着,根据电源旗标来确认是否发生不正常断电(步骤s430)。于确认没有发生不正常断电时,固态储存装置10正常运作(步骤s450)。反之,于确认发生不正常断电时,根据ftl表136中的区块编程序号,依序读取非挥发性记忆体120中大于该区块编程序号的所有区块中的内容,并更新ftl表136中paa地址与lba地址的映射关系(步骤s440),之后固态储存装置10正常运作(步骤s450)。技术实现要素:本发明有关于一种固态储存装置,连接至一主机,包括:一控制电路,连接至该主机;一非挥发性记忆体,连接至该控制电路,其中该非挥发性记忆体中包括多个区块;以及一缓冲元件,连接至该控制电路,该缓冲元件的储存空间被划分为一第一数据缓冲区、一第二数据缓冲区与一快闪转换层对应表;其中,该控制电路将该主机的写入数据暂存于该第一数据缓冲区,该控制电路对该非挥发性记忆体进行一垃圾搜集动作时所产生的有效数据暂存于该第二数据缓冲区;其中,该控制电路将该第一数据缓冲区写入该非挥发性记忆体中的一第一区块时,提供对应的一第一区块编程序号至该第一区块;且该控制电路将该第二数据缓冲区写入该非挥发性记忆体中的一第二区块时,提供对应的一第二区块编程序号以及一第一辅助序号至该第二区块;其中,该控制电路根据该第一区块编程序号以及该第一辅助序号来决定该第一区块及该第二区块的一读取顺序,以重建该快闪转换层对应表。本发明有关于一种快闪转换层对应表重建方法,运用于一固态储存装置,该方法包括下列步骤:由该固态储存装置中的一非挥发性记忆体中载入一快闪转换层对应表至一缓冲元件中;于确认发生不正常断电时,根据该快闪转换层对应表中的一特定区块编程序号决定该非挥发性记忆体中的多个区块即将被读取;其中,根据每一该区块所对应的一区块编程序号或一辅助序号,决定该些区块的一读取顺序,并依据该读取顺序读取该些区块的内容,并更新该快闪转换层对应表中多个实体配置地址与多个逻辑区块地址的映射关系;其中,该些区块皆有对应的该区块编程序号,且该些区块中的一第一部分区块又具有对应的该辅助序号。为了对本发明上述及其他方面有更佳的了解,下文特举较佳实施例,并配合附图,作详细说明如下:附图说明图1所绘示为现有具有固态储存装置的系统的示意图。图2a至图2h所绘示为现有固态储存装置内部的运作示意图。图3a至图3e所绘示为现有ftl表内容重建的示意图。图4所绘示为现有固态储存装置的ftl表的重建流程示意图。图5所绘示为本发明固态储存装置的示意图。图6a至图6h所绘示为本发明固态储存装置内部的运作示意图。图7a与图7b所示为本发明非挥发性记忆体中辅助序号的提供范例。图8所绘示为本发明固态储存装置的ftl表的重建流程示意图。图9a至图9f所绘示为本发明固态储存装置的ftl表内容重建的示意图。具体实施方式为了要能够提高固态储存装置的存取速度。本发明于固态储存装置的缓冲元件内部,更设立(setup)了多个数据缓冲区用以接收不同来源(source)的数据,并可于非挥发性记忆体设立多个开启区块以储存对应数据缓冲区的数据。而本发明的固态储存装置于遭遇不正常断电时,将无法依照现有固态储存装置的ftl表重建流程来重建ftl表。因此,本发明提出一种ftl表重建方法,运用于具备多数据缓冲区及/或多个开启区块的固态储存装置。请参照图5,其所绘示为本发明固态储存装置的示意图。固态储存装置50中包括一控制电路510、缓冲元件(bufferingelement)530与一非挥发性记忆体520。而在固态储存装置50外部,控制电路510通过一外部总线20与主机(host)12之间进行指令与数据的传递。其中,外部总线20可为usb总线、sata总线或pcie总线等等。再者,缓冲元件530可为挥发性记忆体,例如为dram。根据本发明的实施例,缓冲元件530的储存空间被规划分为多个部分。缓冲元件530的第一部分储存空间作为第一数据缓冲区(databufferingarea)532、第二部分储存空间作为第二数据缓冲区534、第三部分储存空间作为ftl表536。其中,第一数据缓冲区532用来暂存主机12输入的写入数据(writedata),第二数据缓冲区534用来储存非挥发性记忆体520执行垃圾搜集动作(garbagecollectionaction)时所搬移的有效数据(validdata)。举例来说,当主机12欲将写入数据储存至非挥发性记忆体520时,控制电路510会将由外部总线20接收到的写入数据暂存至第一数据缓冲区532。再者,当控制电路510针对非挥发性记忆体进行垃圾搜集动作时,由非挥发性记忆体520中所搬移的有效数据会暂存至第二数据缓冲区534中。而控制电路110可于非挥发性记忆体520中同时设立二个开启区块,并会适时地将第一数据缓冲区532与第二数据缓冲区534中的数据储存至对应的开启区块。请参照图6a至图6h,其所绘示为本发明固态储存装置内部的运作示意图。以下是以非挥发性记忆体520中具有6个区块(block)b1~b6,每个区块各有4个储存空间(storagespace)为例来说明。其中,以下的a、c、e、x皆代表一个特定数字。首先,如图6a所示,当固态储存装置接收电源时,储存于非挥发性记忆体520保留区(reservedarea)中的ftl表的内容会先被载入缓冲元件530的ftl表536中。而根据电源旗标确认未发生不正常断电之后,固态储存装置50即可开始正常运作。如图6b所示,控制电路510接到主机12的写入指令,提供数据d5’、d6’、d11’、d12’以更新lba地址(a+2)、(c)、(a+4)、(e+3)内的数据d5、d6、d11、d12。此时,数据d5’、d6’、d11’、d12’暂存于第一数据缓冲区532中。请参照图6c,控制电路510选择第一区块b1为开启区块,并且将区块编程序号(x+3)提供给第一区块b1。控制电路510也会将区块编程序号(x+3)更新于ftl表536中(sn:x+3)。再者,控制电路520将第一数据缓冲区532中的数据d5’、d6’、d11’、d12’写入开启区块(第一区块b1)的4个储存空间后,并更新ftl表536。如图6d所示,控制电路510对第三区块b3与第五区块b5进行垃圾搜集动作。将第三区块b3中的有效数据d7、d8以及第五区块b5中的有效数据d9、d10移动至第二数据缓冲区534。再者,当控制电路510进行垃圾搜集动作时,也可以接收主机12的命令。如图6d所示,控制电路510接到主机12的写入指令,提供数据d7’、d8’、d9’、d2’以更新lba地址(e+2)、(a+5)、(e+1)、(a+3)内的数据d7、d8、d9、d2。此时,数据d7’、d8’、d9’、d2’暂存于第一数据缓冲区532中。在本实施例中,当进行垃圾搜集动作时,控制电路510会根据目前的区块编程序号来决定可进行垃圾搜集动作的区块范围。具体而言,控制电路510会决定可进行垃圾搜集动作的区块范围为非挥发性记忆体520中具有小于目前的区块编程序号的区块编程序号的区块。以图6d为例,目前的区块编程序号为记录于ftl表536中的区块编程序号(x+3)。而根据目前的区块编程序号(x+3),控制电路510决定可进行垃圾搜集动作的区块范围为非挥发性记忆体520中具有小于目前的区块编程序号(x+3)的区块编程序号的区块。亦即,区块编程序号(x)的第二区块b2、区块编程序号(x+1)的第五区块b5或者区块编程序号(x+2)的第三区块b3。在决定可进行垃圾搜集动作的区块范围后,控制电路510便会从上述区块范围中,选择欲进行垃圾搜集动作的区块。以图6d为例,控制电路510从第二区块b2、第五区块b5及第三区块b3中,根据有效数据及无效数据的数量决定欲进行垃圾搜集动作的区块。在图6d中,控制电路510选择第三区块b3及第五区块b5来进行垃圾搜集动作。如图6e所示,为了将第一数据缓冲区532中的写入数据及第二数据数据缓冲区534中的有效数据分别储存于对应的区块中,控制电路510选择第四区块b4为开启区块,并且将区块编程序号(x+4)提供给第四区块b4,以储存第一数据缓冲区532中的写入数据。同时,控制电路510亦另选择第六区块b6 为开启区块,并且将区块编程序号(x+5)提供给第六区块b6,以储存第二数据数据缓冲区534中的有效数据。接着,将区块编程序号(x+5)更新于ftl表536中(sn:x+5)。在本实施例中,当同时有主机的写入数据以及垃圾收集动作的有效数据欲储存至非挥发性记忆体520时,控制电路520会优先将垃圾收集动作的有效数据储存至非挥发性记忆体520。因此,如上述,在控制电路520分别将区块编程序号提供给用以储存主机的写入数据的开启区块及用以储存垃圾收集动作的有效数据的开启区块之后,如图6f所示,控制电路520会先将第二数据缓冲区534中的有效数据d7、d8、d9、d10写入开启区块(第六区块b6)的4个储存空间,并更新ftl表536。如图6f所示,由于数据d7、d8、d9、d10储存于开启区块(第六区块b6),所以ftl表536中的paa地址(b61)~(b64)映射至lba地址(e+2)、(a+5)、(e+1)、(a+1)。再者,先前对应于相同lba地址(e+2)、(a+5)、(e+1)、(a+1)的paa地址(b33)、(b34)、(b51)、(b52)会被映射至lba地址ff,其中ff代表lba地址为无效数据。换句话说,由图6f的ftl表136可知,paa地址(b33)、(b34)、(b51)、(b52)对应的储存空间内为无效数据(invaliddata)。接着,如图6g所示,控制电路520将第一数据缓冲区532中的数据d7’、d8’、d9’、d2’写入开启区块(第四区块b4)的4个储存空间,并更新ftl表536。由于数据d7’、d8’、d9’、d2’储存于开启区块(第四区块b4),所以ftl表536中的paa地址(b41)~(b44)映射至lba地址(e+2)、(a+5)、(e+1)、(a+3)。再者,ftl表536中先前储存旧的数据d7、d8、d9、d2的paa地址(b61)、(b62)、(b63)、(b22)映射至lba地址ff,其中ff代表lba地址为无效数据。换句话说,由图6g的ftl表136可知,paa地址(b61)、(b62)、(b63)、(b22)对应的储存空间内为无效数据(invaliddata)。接着,如图6h所示,由于第三区块b3与第五区块b5中的储存空间内皆为无效数据。控制电路520完成垃圾搜集动作,第三区块b3与第五区块b5被抹除为空白区块,且对应的区块编程序号(x+2)、(x+1)也一并被抹除。再者,ftl表136中的paa地址(b31)~(b34)以及(b51)~(b54)被更新为无lba地址的映射关系。换言之,根据ftl表136的内容可知,第三区块b3与第五区块b5 已成为空白区块。在另一实施例中,控制电路520亦可于图6f的状态时,先将第三区块b3与第5区块进行区块抹除动作,以完成垃圾搜集动作。接着,再将第一数据缓冲区532中的数据储存至非挥发性记忆体520。如此,也可以进行至图6h的结果。根据以上图6a至图6h所述的固态储存装置内部的运作流程。当控制电路510接收到主机发出的电源关闭指令而断电后并再次接收供应电源时,控制电路510可将储存于非挥发性记忆体520中记录的ftl表的内容载入缓冲元件530的ftl表536中,之后固态储存装置10即开始正常运作。然而,由于本发明的固态储存装置50于缓冲元件130中设立(setup)了第一数据缓冲器532与第二数据缓冲器534,用以暂存不同来源(source)的数据,且于非挥发性记忆体设立了多个开启区块以储存对应上述数据缓冲区的数据。因此,当固态储存装置50遭受不正常断电时,如果依照现有的ftl表重建流程,将造成数据遗失的问题。以图6h来说明之。由于在现有ftl表的重建流程中,控制电路按照非挥发性记忆体中的区块编程序号的先后次序,依序读取对应的区块内容用以更新ftl表中paa地址与lba地址之间的映射关系。明显地,图6h中,第六区块b6具有最大值区块编程序号(x+5)。因此,如果按照现有ftl表的重建流程,将会造成无效数据d7、d8、d9取代有效数据d7’、d8’、d9’的情形发生,并造成数据错误。根据本发明的具体实施例,由于第二数据缓冲器534是用于暂存垃圾搜集动作中所产生的有效数据。当控制电路510欲将第二数据缓冲器534中的数据写入非挥发性记忆体520时,除了提供区块编程序号至开启区块之外,另外还会设定一辅助序号至该开启区块。以图6e为例来做说明,当控制电路510选择第六区块b6为开启区块,并且将区块编程序号(x+5)提供给此开启区块(第六区块b6),以储存第二数据缓冲区534中的有效数据时,根据本发明的实施例,控制电路510除了提供区块编程序号(x+5)提供给此开启区块(第六区块b6)之外,还会提供辅助序号(x+3)至该开启区块(第六区块b6)。因此,图6e会修改为如图7a所示,第六区块b6具有区块编程序号(x+5)以及辅助序号(x+2)。基本上,由于有效数据d7、d8、d9、d10是进行垃圾搜集动作时由第三区 块b3、第五区块b5所搜集而来,其对应的区块编程序号为(x+2)、(x+1)。因此,控制电路510将垃圾搜集动作过程所处理的多个区块中,具有最大值的区块编程序号设定为辅助序号。相同地运作方式,控制电路510依序将图7a中第二数据缓冲区534与第一数据缓冲区532中的数据写入二个开启区块(第六区块b6与第四开启区块b4)后,再进行区块抹除动作。最后的ftl表536与非挥发性记忆体520的内容即如图7b所示。请参照图8,其所绘示为本发明固态储存装置的ftl表的重建流程示意图。当固态储存装置50接收电源之后(步骤s410),控制电路510由非挥发性记忆体520的保留区中载入ftl表的内容,并于缓冲元件530中建立ftl表536(步骤s420)。接着,根据电源旗标来确认是否发生不正常断电(步骤s430)。于确认没有发生不正常断电时,固态储存装置50正常运作(步骤s450)。再者,于确认发生不正常断电时,设定数值m等于ftl表中的区块编程序号(步骤s810)。接着,控制电路510读取非挥发性记忆体520中区块编程序号为数值m的区块内容,并更新ftl表中paa地址与lba地址的映射关系(步骤s820)。再者,控制电路510判断非挥发性记忆体520中是否有辅助序号为数值m的区块(步骤s830)。于确认非挥发性记忆体520中有辅助序号为数值m的区块时,控制电路510读取非挥发性记忆体520中辅助序号为数值m的区块内容,并更新ftl表中paa地址与lba地址的映射关系(步骤s840),之后进行步骤s850。反之,当控制电路判断非挥发性记忆体520中并未有辅助序号为数值m的区块时,进行步骤s850。于步骤s850中,控制电路510判断数值m是否等于非挥发性记忆体520中的区块编程序号的最大数值。于确定的情况下,代表ftl表已经重建完成,进入步骤s450。反之,当数值m不等于非挥发性记忆体520中的区块编程序号的最大数值时,代表ftl表尚未重建完成,则将数值m加1(步骤s860)后,继续进行步骤s820。再者,于进行上述步骤s820时,如果非挥发性记忆体520中数值m的区块编程序号并不存在,或者数值m的区块编程序号所对应区块的内容已经被读 取过了,则直接跳至步骤s830。根据本发明实施例,若区块同时具有区块编程序号以及辅助序号,其辅助序号会小于区块编程序号,因此该区块会优先通过辅助序号而被读取,并更新ftl表中paa地址与lba地址的映射关系。以下以图7b的状态遭受到不正常断电为例,说明本发明固态储存装置50于不正常断电后的ftl表536内容重建的过程。请参考图9a至图9f,其所绘示为本发明固态储存装置的ftl表内容重建的示意图。固态储存装置10于不正常断电之后再次接收到电源,由于非挥发性记忆体520的保留区未保留前一次断电前的ftl表536的内容。如图9a所示,非挥发性记忆体520内容相同于图7b中非挥发性记忆体520的内容,而载入的ftl表536的内容会相同于图6a中ftl表536中的内容。再者,控制电路510根据一电源旗标(powerflag)得知前一次的断电为不正常断电,因此需要进行ftl表重建程序。如图9a所示,控制电路510根据ftl表536的区块编程序号(sn:x+2)得知,该ftl表536仅更新至区块编程序号(x+2),所以控制电路510中会设定数值m为(x+2)。换言之,ftl表536将由区块编程序号(x+2)开始,更新至非挥发性记忆体520中最大值的区块编程序号。如图9b所示,由于非挥发性记忆体520中无区块编程序号(x+2)所对应的区块,因此不需要进行区块内容读取。再者,第六区块(b6)具有辅助序号(x+2),因此控制电路510读取第六区块b6的内容并更新paa地址与lba地址的映射关系。再者,读取第六区块b6的内容后,第六区块b6的第一储存空间至第四储存空间中的数据d7、d8、d9、d10对应于lba地址(e+2)、(a+5)、(e+1)、(a+1)。因此,控制电路510更新ftl表536,将paa地址(b61)对应至lba地址(e+2);paa地址(b62)对应至lba地址(a+5);paa地址(b63)对应至lba地址(e+1);paa地址(b64)对应至lba地址(a+1)。另外,将先前paa地址(b33)所对应的lba地址(e+2),更新为对应至lba地址(ff);先前paa地址(b34)所对应的lba地址(a+5),更新为对应至lba地址(ff);先前paa地址(b51)所对应的lba地址(e+1),更新为对应至lba地址(ff);先前paa地址(b52)所对应的lba地址(a+1),更新为对应至lba地址(ff)。如图9c所示,控制电路510设定数值m为(x+3),且控制电路110将ftl表136的区块编程序号更新为(sn:x+3),并读取区块编程序号(x+3)的第一区块b1的内容。其中,第一区块b1的第一储存空间至第四个储存空间中的数据d5’、d6’、d11’、d12’对应于lba地址(a+2)、(c)、(a+4)、(e+3)。因此,控制电路510更新ftl表536。将paa地址(b11)对应至lba地址(a+2);paa地址(b12)对应至lba地址(c);paa地址(b13)对应至lba地址(a+4);paa地址(b14)对应至lba地址(e+3)。另外,将先前paa地址(b31)所对应的lba地址(a+2),更新为对应至lba地址(ff);先前paa地址(b32)所对应的lba地址(c),更新为对应至lba地址(ff);先前paa地址(b53)所对应的lba地址(a+4),更新为对应至lba地址(ff);先前paa地址(b54)所对应的lba地址(e+3),更新为对应至lba地址(ff)。再者,由于非挥发性记忆体520中并无辅助序号(x+3)的区块,控制电路510不需读取区块内容。如图9d所示,控制电路510设定数值m为(x+4),且控制电路110将ftl表136的区块编程序号更新为(sn:x+4),并读取区块编程序号(x+4)的第四区块b4的内容。其中,第四区块b4的第一储存空间至第四个储存空间中的数据d7’、d8’、d9’、d2’对应于lba地址(e+2)、(a+5)、(e+1)、(a+3)。因此,控制电路510更新ftl表536。将paa地址(b41)对应至lba地址(e+2);paa地址(b42)对应至lba地址(a+5);paa地址(b43)对应至lba地址(e+1);paa地址(b44)对应至lba地址(a+3)。另外,将先前paa地址(b61)所对应的lba地址(e+2),更新为对应至lba地址(ff);先前paa地址(b62)所对应的lba地址(a+5),更新为对应至lba地址(ff);先前paa地址(b63)所对应的lba地址(e+1),更新为对应至lba地址(ff);先前paa地址(b22)所对应的lba地址(a+3),更新为对应至lba地址(ff)。再者,由于非挥发性记忆体520中并无辅助序号(x+4)的区块,控制电路510不需读取区块内容。如图9e所示,控制电路510设定数值m为(x+5),且控制电路110将ftl表136的区块编程序号更新为(sn:x+5)。再者,由于块编程序号(x+5)所对应 的第六区块b6也具有辅助序号(x+2),其内容已经被读取过,因此无须再读取。再者,由于非挥发性记忆体520中并无辅助序号(x+5)的区块,控制电路510不需读取区块内容。另外,由于非挥发性记忆体520中最大的区块编程序号为(x+5),因此控制电路510不再进行读取,并且整理ftl表536的内容。由于paa地址(b31)~(b34)以及(b51)~(b54)皆对应至lba地址(ff)。因此,如图9f所示,控制电路510确定第三区块b3与第五区块b5为空白区块后,将ftl表536中paa地址(b31)~(b34)以及(b51)~(b54)变成无lba地址的映射关系。明显地,图9f与图7b完全相同。换言之,控制电路510已经成功重建ftl表536,并将ftl表536恢复至非正常断电之前的状态。因此,固态储存装置50可以开始正常运作。本发明的固态储存装置50中的缓冲元件530的储存空间被规划分为多个部分,用以作为第一数据缓冲区532、第二数据缓冲区534与ftl表536。并且,第一数据缓冲区532与第二数据缓冲区534用以接收并暂存不同来源的数据。例如,第一数据缓冲区532接收并暂存主机12输出的写入数据,第二数据缓冲区534接收并暂存垃圾搜集动作所产生的有效数据。当第一数据缓冲区532与第二数据缓冲区534中的数据写入非挥发性记忆体520时,将使得每个区块所对应的区块编程序号无法确实的反映数据的写入与更新的顺序。因此,本发明更提出利用辅助序号来解决上述问题。亦即,当控制电路510将第二数据缓冲区534中的有效数据写入非挥发性记忆体520时,除了提供区块编程序号至开启区块之外,另外亦提供辅助序号至此开启区块。再者,上述图8所示的ftl表的重建流程仅是本发明的一个实施例。本发明提出的ftl表的重建流程是在于确认固态储存装置发生不正常断电时,读取载入缓冲元件的ftl表中的区块编程序号,并据以决定非挥发性记忆体中的多个区块即将被读取。再者,根据即将被读取的区块所对应的区块编程序号或者辅助序号,决定该些区块的读取顺序,并依据此读取顺序来读取该些区块的内容,用以更新该快闪转换层对应表中多个实体配置地址与多个逻辑区块地址的映射关系。另外,本发明的非挥发性记忆体520中,有储存数据的区块皆有对应的区 块编程序号。另外,第一部分区块中的储存的数据是由第二数据缓冲区534所写入,此第一部分的区块除了有对应的区块编程序号之外,还有对应的辅助序号。再者,控制电路510将第一部分区块的辅助序号以及其他区块的区块编程序号的数值来进行排序,由小到大排列用以决定这些区块的读取顺序。由以上的说明可知,运用于本发明的固态储存装置,当固态储存装置发生不正常断电时,本发明的快闪转换层对应表重建方法可以正确的建立快闪转换层对应表,并使得固态储存装置正常运作。综上所述,虽然本发明已以较佳实施例公开如上,但其并非用以限定本发明。本发明所属
技术领域
:中的技术人员,在不脱离本发明的精神和范围内,当可作各种更动与修改。因此,本发明的保护范围当视后附的权利要求保护范围所界定者为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1