固态存储装置遭遇断电后的数据存储方法

文档序号:6440546阅读:509来源:国知局
专利名称:固态存储装置遭遇断电后的数据存储方法
技术领域
本发明是有关于一种固态存储装置及其控制方法,且特别是有关于一种不预期断电后固态存储装置中的数据存储方法。
背景技术
众所周知,固态存储装置(Solid State Drive,简称SSD)使用与非门闪存(NANDflash memory)为主要存储元件,而此类的存储装置为一种非挥发性(non-volatile)的存储器元件。也就是说,当数据写入闪存后,一旦系统电源关闭,数据仍保存在固态存储装置中。与非门闪存依据不同的设计,可分为单层晶胞(single-level cell,简称SLC)、多层晶胞(mult1-level cell,简称MLC)、以及三层晶胞(triple-level cell,简称TLC)的闪存。SLC闪存的特点为访问速度快、价格贵、可擦除次数约为数万次以上,但是一个晶胞(cell)仅可存储I位的数据。TLC闪存的特性为访问速度慢、价格便宜、可擦除次数约为I千次以下,但是一个晶胞可存储3位的数据。而MLC闪存的特性介于SLC闪存与TLC闪存之间,访问速度与价格一般、可擦除次数约为I千至5千次之间,而一个晶胞可存储2位的数据。换句话说,由相同晶胞数目所组成的闪存,TLC闪存将有最大的容量,SLC闪存的容量最小。请参照图1,其所绘示为现有固态存储装置的示意图。固态存储装置10中包括一控制单元101与一闪存105。控制单元101与闪存105之间利用一内部总线104进行数据的存取,而控制单元101利用一外部总线20与主机(host) 12之间进行指令与数据的传递。其中,外部总线20可为USB总线、IEEE 1394总线或SATA总线等等,而闪存可为SLC、MLC、或TLC闪存。此外,控制单元101内部包括一映射单元(mapping unit) 107可用来管理闪存105内部的数据,映射单元107可为静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。而映射单元107中至少包括一逻辑至实体对应表(Logical to PhysicalTable,简称L2P表)以及一点阵列表格(Bitmap)。L2P表可将主机发出的逻辑配置地址(Logical Allocation Address,简称LAA)对应至闪存105内部的实体配置地址(PhysicalAllocation Address,简称PAA);点阵列表格里记载了闪存105中每个页(page)里的数据为有效数据或者为无效数据。当固态存储装置10未连接电源时,映射单元107中L2P表以及点阵列表格中的数据将被删除。当固态存储装置10连接电源时,控制单元101需要先将映射单元107中L2P表以及点阵列表格重建完成后才可以开始正常动作。一般来说,闪存中105包括许多区块(block),而每个区块中又包括多个页或称为段(sector)。例如,一个区块中有64页,而每个页的容量为4K bytes。此外,由于闪存105的特性,每次数据写入时是以页为最小单位,而每次擦除(erase)时则是以区块为单位进行数据擦除。由于闪存105的特性,当区块中某一个页的数据需要更改时,控制单元101将无法直接修改该页中的数据,因此控制单元101是将需要修改的数据写在另一空白页(blank page),而原来旧的页将被视为无效页(invalid page),里面的数据将被视为无效数据(invalid data)。而当主机12经过多次的存取之后,在闪存105中将会出现许多的无效页以及无效数据,并且占据了整个闪存的空间。因此,利用垃圾搜集动作(garbagecollection)可搜集各区块中的有效数据并集中在另一区块中。以下以图2A 图2F详细介绍闪存的数据存储动作。如图2A所示,假设闪存105中有4个区块(BlockJ) Block_3),每个区块中有8个页,其中每个页可对应至一个实体配置地址。由图2A可知,四个区块都为空白区块,且第0区块(BL0CK_0)的实体配置地址为PAA(OO) PAA (07),第I区块(BL0CK_1)的实体配置地址为PAA (08) PAA(OF),第2区块(BL0CK_2)的实体配置地址为PAA(IO) PAA (17),第3区块(BL0CK_3)的实体配置地址为PAA(18) PAA(IF)。而控制单元101可设定其中一个区块(例如第一区块(BL0CK_1))为启用区块(open block),而欲写入的数据即可写入启用区块。如图2B所示,假设主机12发出七个逻辑配置地址(LAA)的写入数据(D0 D6)至闪存105,则控制单元101将这些数据依次写入第一区块(BL0CK_1)。而控制单元101会保留最后一个页,并填入第一区块(BL0CK_1)中所有实体配置地址(PAA)与逻辑配置地址(LAA)之间的对应数据(P2L-datal)。之后,设定第一区块(BL0CK_1)为一关闭区块(closeblock)。接着,设定另一个区块(例如第二区块(BL0CK_2))为启用区块。换句话说,关闭区块可视为已经完成数据写入的区块。如图2C所示,假设主机12发出七个逻辑配置地址(LAA)的写入数据(Dl’、D6’、D7、D8、D5’、D9、D2’ )至闪存 105。其中,Dl,、D6,、D5,、D2,数据是取代第一区块(BL0CK_1)中的D1、D6、D5、D2数据。因此,控制单元101将这些数据依次写入第二区块(BL0CK_2),并且设定第一区块(BL0CK_1)中 PAA(09)、PAA(OA)、PAA(OD)、PAA(OE)内的 Dl、D2、D5、D6 数
据为无效数据(斜线表示)。此外,控制单元101会保留最后一个页,并填入第二区块(BL0CK_2)中所有实体配置地址(PAA)与逻辑配置地址(LAA)之间的对应数据(P2L-data2)。之后,设定第二区块(BL0CK_2)为一关闭区块。接着,设定另一个区块(例如第零区块(BL0CK_0))为启用区块。如图2D所示,假设主机12发出七个逻辑配置地址(PAA)的写入数据(D0’、D9’、D10、D3,、D8,、D5"、D1")至闪存105。其中,D0,、D3,数据是取代第一区块(BL0CK_1)中的 D0、D3 数据;D9’、D8’、D5"、D1"数据是取代第二区块(BL0CK_2)中的 D9、D8、D5’、Dl ’数据。因此,控制单元101将这些数据依次写入第二区块(BL0CK_2)。接着,设定第一区块(BL0CK_1)中PAA(08)、PAA(OB)中的DO、D3数据为无效数据;设定第二区块(BL0CK_2)中PAA(IO)、PAA(13)、PAA(14)、PAA(15)中的 Dl’、D8、D5’、D9 数据为无效数据。此外,控制单元101会保留最后一个页,并填入第零区块(BL0CK_0)中所有实体配置地址(PAA)与逻辑配置地址(LAA)之间的对应数据(P2L-dataO),并且设定第零区块(BL0CK_0)为一关闭区块。接着,设定另一个区块(例如第三区块(BL0CK_3))为启用区块。由以上图2A至图2D的说明可知,当主机12经过多次的存取之后,在闪存105中将会出现许多的无效数据,并且占据了整个闪存的空间。因此,控制单元101可以在适当时间发动垃圾搜集动作。所谓的垃圾搜集动作即是将分散于各区块中的有效数据集中在另一区块中。一般来说,垃圾搜集动作是在主机12与固态存储装置10之间没有进行数据存取时才会进行,当然也有可能在数据存取时进行,但是会降低固态存储装置10的效率。举例来说,如图2E所示,控制单元101将第一区块(BL0CK_1)中PAA(OC)中的有效数据D4转存至启用区块(也就是第三区块(BL0CK_3)),而以D4-G数据来代表D4数据是由于垃圾搜集动作而被移动至PAA (18),并且将第一区块(BL0CK_1)中PAA(OC)的D4设定为无效数据。同理,将第二区块(BL0CK_2)中PAA(Il)、PAA(12)、PAA(16)中的有效数据D6’、D7、D2’转存至启用区块(也就是第三区块(BL0CK_3)),而以D6’ _G、D7_G、D2’ -G数据来代表D6’、D7、D2’数据是由于垃圾搜集动作而被移动至PAA (19)、PAA (IA)、PAA (IB),并且将第二区块(BL0CK_2)中 PAA (I I)、PAA (12)、PAA (16)中的 D6’、D7、D2’ 设定为无效数据。很明显地,由图2E可知,完成垃圾搜集动作后,第一区块(BL0CK_1)的PAA (08) PAA(OE)内都为无效数据以及第二区块(BL0CK_2)的PAA (10) PAA (16)内都为无效数据。并且,PAA(OF)中的P2L-datal数据以及PAA(17)中的P2L_data2数据已经不会再被利用了。因此,控制单元101可以在任何时间将第一区块(BL0CK_1)与第二区块(BL0CK_2)擦除为空白区块。举例来说,如图2F所示,在垃圾搜集动作之后,控制单元101将第一区块(BL0CK_1)擦除为空白区块。接着,主机12发出二个逻辑配置地址(LAA)的写入数据(D11、D12)至闪存105,而控制单元101将写入数据(D11、D12)依次写入启用区块(第三区块(BL0CK_3))中。由于固态存储装置10具有即插即用的特性,因此固态存储装置10常常在不预期的情况下被使用者拔除电源。举例来说,使用者常常在不小心的状况下碰撞到固态存储装置10使得外部总线20脱落而造成固态存储装置10断电。或者,用户误认为固态存储装置10与主机12之间并未进行数据存取,而将固态存储装置10拔除,也会造成固态存储装置10不预期的断电。以MLC与TLC闪存所设计的固态存储装置10为例,当闪存105正在一特定区块的一特定页写入数据且遭遇到不预期的断电时,除了造成该特定页的数据损坏之外,很有可能也会造成其他页的数据一并损坏。或者,在固态存储单元10在恢复供电后,该特定区块中的所有数据也会逐渐损坏或者消失。因此,如何在恢复供电后适当地保存数据的完整性即为本发明所欲达成的目的。

发明内容
本发明提出一种固态存储装置遭遇断电之后的数据存储方法,该固态存储装置中的一闪存包括多个区块,每一个区块中包括多个页,而这些区块的其中之一被设定为一旧的开启区块,当该固态存储装置重新接通一电源时,将该旧的开启区块内所有的有效数据存储至一新的开启区块中。


图1所绘示为现有固态存储装置的示意图。图2A 图2F详细介绍闪存的数据存储动作。图3A与图3B所绘示为本发明的第一实施例及其举例说明示意图。图4A与图4B所绘示为本发明的第二实施例及其举例说明示意图。
具体实施例方式为了对本发明的上述及其他方面有更好的了解,下文特举优选实施例,并配合所附附图,作详细说明如下:由于本发明并未改变固态存储装置的电路结构,仅新增控制单元101的运行方式,使得本发明可以有效的保存不预期断电后的数据完整性。因此,本发明在图1的架构下详细介绍本发明。由于控制单元101在写入数据之前需要先设定一开启区块,而仅有开启区块可以存储数据。当该开启区块的空间被存储完毕后,控制单元101会将该开启区块改设定为关闭区块,并且再次设定另一可使用的区块为开启区块。换句话说,当固态存储装置10遭遇不预期的断电时,会受到影响的区块即为开启区块,而已经存储完成的关闭区块则不会受影响。根据本发明的实施例,当固态存储装置10再次接通到电源而开始动作时,控制单元10需要保存开启区块中数据的有效性,防止开启区块中的数据逐渐损坏或者丢失。因此,控制单元101需要在固态存储装置10再次被供电时,将该开启区块中的所有有效数据再次存储于新的开启区块中。以下详细介绍本发明保存开启区块中数据的各种方法。请参照图3A,其所绘示为本发明的第一实施例。当固态存储装置10重新接通电源后(步骤S300),将旧的开启区块加上一电源标记(power mark,简称PM)后,设定为一第一关闭区块(步骤S302)。接着,将闪存105中的一可使用区块设定为一新的开启区块(步骤S304)。将第一关闭区块中所有的有效数据存储至新的开启区块(步骤S306)。接着,将第一关闭区块中的有效数据设定为无效数据(步骤S308)。而图3B,为本发明第一实施例的举例说明。其中,该固态存储装置10是在图2F的情况下遭遇到不预期的断电。而当固态存储装置10重新接通电源后,控制单元101可确定闪存105中,第三区块(BL0CK_3)为旧的开启区块。接着,控制单元101在旧的开启区块加上一电源标记后,设定为一第一关闭区块,而第三区块(BL0CK_3)的最后一页PAA(IF)中会记载一电源标记以及所有实体配置地址(PAA)与逻辑配置地址(LAA)之间的对应数据(P2L-Data3+PM),并且成为一第一关闭区块。接着,控制单元101将闪存105中的一可使用区块(例如第一区块(BL0CK_1))设定为一新的开启区块,之后控制单元101将第一关闭区块(第三区块(Block_3))中的所有有效数据存储至新的开启区块(第一区块(BL0CK_1))。接着,设定第一关闭区块(第三区块(Block_3))中的所有有效数据为无效数据。由本发明的第一实施例可知,当固态存储装置10重新接通电源后,先将旧的开启区块设定为第一关闭区块后,将第一关闭区块内的所有有效数据全部另行存储至新的开启区块。也就是,如图3B所示,新的开启区块(第一区块(BL0CK_1))内已经存储第一关闭区块(第三区块(BL0CK_3))中的数据。因此,第一实施例可以有效的防止第一关闭区块中的数据在恢复供电之后逐渐损坏或者丢失的问题。当然,由于第一关闭区块内已经没有有效数据,所以控制单元101可以在任意时间擦除第一关闭区块。此外,为了防止第一关闭区块的数据在复制到新的开启区块的过程再次遭遇不预期的断电,本发明设定一电源标记于该第一关闭区块。当固态存储装置10再次接通电源时,若有任何一个具有电源标记的区块内仍旧存储有效数据时,则该有效数据也需要利用第一实施例的方式再次被存储至新的开启区块。另外,由于旧的开启区块中的有效数据可能为主机所产生的数据,或者是经由垃圾搜集动作而由其他区块所复制的数据。因此,本发明的第二实施例将旧的开启区块中的数据先区分为二个群组。第一个群组为主机所产生的数据,另一个群组为经由垃圾搜集动作所产生的搜集数据。请参照图4A,其所绘示为本发明的第二实施例。当固态存储装置10重新接通电源后(步骤S400),将旧的开启区块加上一电源标记后,设定为一第一关闭区块(步骤S402)。接着,将闪存105中的一可使用区块设定为一新的开启区块(步骤S404)。接着,将第一关闭区块中的有效数据区分为主机产生的数据以及垃圾搜集动作所产生的数据(步骤S406)。接着,在垃圾搜集动作所产生的数据中,将可恢复的第一部分数据恢复为垃圾搜集动作前之状态,并将不可恢复的第二部分数据以及主机产生的数据存储于新的开启区块(步骤S408);之后,将第一关闭区块中的有效数据改为无效数据(步骤S410)。而图4B,为本发明第二实施例的举例说明。其中,该固态存储装置10是在图2F的情况下遭遇到不预期的断电。而当固态存储装置10重新接通电源后,控制单元101可确定闪存105中,第三区块(BL0CK_3)为旧的开启区块。接着,控制单元101在旧的开启区块加上一电源标记后,设定为一第一关闭区块,而第三区块(BL0CK_3)的最后一页PAA(IF)中会记载一电源标记以及所有实体配置地址(PAA)与逻辑配置地址(LAA)之间的对应数据(P2L-Data3+PM),并且成为一第一关闭区块。接着,控制单元101将闪存105中的一可使用区块(例如第一区块(BL0CK_1))设定为一新的开启区块。根据本发明的第二实施例,控制单元101可将第一关闭区块中的有效数据区分为主机产生的数据以及垃圾搜集动作所产生的数据。很明显地,第一关闭区块(第三区块(BL0CK_3))中,D4-G、D6’ _G、D7_G、D2’ -G数据是由垃圾搜集动作所产生的数据,而D11、D12是由主机所产生的数据。换句话说,由垃圾搜集动作所产生的D4-G、D6 ’ _G、D7_G、D2 ’ -G数据,其来源页(source page)虽然已经被标示为无效页,但是该无效页所对应的区块可能尚未被擦除。在此情况下,部分数据可以恢复成为垃圾搜集动作前的状态。因此,由图4B可知,D6’ _G、D7_G、D2’ -G数据的来源页是在第二区块(BL0CK_2)中,而该第二区块(BL0CK_2)尚未被擦除。因此控制单元101可将该第二区块(BL0CK_2)的来源页PAA(Il)、PAA (12)、PAA (16)恢复为有效页使得D6’、D7、D2’数据恢复为有效数据。换句话说,可恢复的D6’ -G、D7_G、D2’ _G数据是同时被存储于该第一关闭区块(BL0CK_3)以及另一个关闭区块(第二区块(BLC0K_2))中。并且存储在另一个关闭区块(第二区块(BLC0K_2))中的D6’、D7、D2’数据系被设定为无效数据。而恢复为该垃圾搜集动作之前的状态时,系将另一个关闭区块(第二区块(BLC0K_2))中的06’、07、02’数据再次设定为有效数据。另外,由于D4-G数据的来源页系在第一区块(BL0CK_1),而第一区块(BLC0K_1)已经在垃圾搜集动作后被擦除,因此D4-G数据无法被恢复。因此,控制单元101将不可恢复的第二部分数据(D4-G)以及主机产生的数据(D11、D12)存储于新的开启区块(第一区块(BLOCK_l))。接着,设定第一关闭区块(第三区块(BLOCK_3))中的所有数据为无效数据。由本发明的第二实施例可知,当固态存储装置10重新接通电源后,先将旧的开启区块设定为第一关闭区块。接着,将第一关闭区块中的有效数据区分为主机产生的数据以及垃圾搜集动作所产生的数据。接着,在垃圾搜集动作所产生的数据中,将第一部分可恢复的数据恢复为垃圾搜集动作之前的状态;而第二部分无法恢复的数据以及主机所产生的数据写入新的开启区块内。因此,第二实施例也可以有效的防止第一关闭区块中的数据在恢复供电之后逐渐损坏或者丢失的问题。同理,为了防止第一关闭区块的数据在复制到新的开启区块的过程再次遭遇不预期的断电,本发明设定一电源标记于该第一关闭区块。当固态存储装置10再次接通电源时,若有任何一个具有电源标记的区块内尚有存储有效数据,则该有效数据也需要再次利用第二实施例的方式进行判断,并且保存数据。由以上的说明可知,本发明的优点是可以在固态存储单元恢复供电时,将旧的开启区块中的所有有效数据再次存储于新的开启区块中。这样,可实时的保存开启区块中的数据,防止该数据在恢复供电之后逐渐损坏或者丢失的问题。此外,当旧的开启区块中的数据都为主机所产生的有效数据时,控制单元101可直接根据第一实施例的方式来进行并保存数据。同理,当旧的开启区块中的数据都为垃圾搜集动作所产生的数据时,控制单元101可直接根据第二实施例的方式来进行并保存数据,当然也可以直接根据第一实施例的方式来进行并保存数据。值得一提的是,由于固态存储装置10并无法判断是否确实遭遇到不预期的断电或者是用户利用正常程序的断电。因此,本发明默认固态存储装置10所有的断电都为不预期的断电。而在固态存储装置10再次供电时,利用本发明的实施例来保存旧的开启区块中的有效数据。 综上所述,虽然本发明已以优选实施例公开如上,然其并非用以限定本发明。本发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更改与修饰。因此,本发明的保护范围当视权利要求所界定者为准。
权利要求
1.一种固态存储装置遭遇断电之后的数据存储方法,该固态存储装置中的一闪存包括多个区块,每一个区块中包括多个页,而这些区块的其中之一被设定为一旧的开启区块,其特征在于,当该固态存储装置重新接通一电源时,将该旧的开启区块内的有效数据存储至一新的开启区块中。
2.根据权利要求1所述的数据存储方法,其特征在于,还包括下列步骤: 将该旧的开启区块加上一电源标记后设定为一第一关闭区块; 寻找这些区块中的一可使用区块,并设定为一新的开启区块; 将该第一关闭区块中的所有有效数据存储至该新的开启区块;以及 将该第一关闭区块内的所有有效数据设定为无效数据。
3.根据权利要求2所述的数据存储方法,其特征在于,还包括下列步骤: 当该固态存储装置重新接通该电源时,若具有该电源标记的该第一关闭区块中具有有效数据时,将所有有效数据存储至该新的开启区块。
4.根据权利要求1所述的数据存储方法,其特征在于,该旧的开启区块内所有的有效数据是由一主机产生以及经由一垃圾搜集动作后所产生。
5.根据权利要求1所述的数据存储方法,其特征在于,该旧的开启区块内所有的有效数据是由一主机产生或者经由一垃圾搜集动作后所产生。
6.根据权利要求1所述的数据存储方法,其特征在于,还包括下列步骤: 将该旧的开启区块加上一电源标记后设定为一第一关闭区块; 寻找这些区块中的一可使用区块,并设定为一新的开启区块; 将该第一关闭区块中的所有有效数据区分为一主机产生的数据以及经由一垃圾搜集动作产生的数据; 在该垃圾搜集动作所产生的数据中,将可恢复的一第一部分数据恢复为该垃圾搜集动作之前的状态; 在该垃圾搜集动作所产生的数据中,将不可恢复的一第二部分数据以及该主机产生的数据存储于该新的开启区块;以及 将该第一关闭区块内的所有有效数据设定为无效数据。
7.根据权利要求6所述的数据存储方法,其特征在于,可恢复的该第一部分数据中包括一第一数据,该第一数据是同时被存储于该第一关闭区块以外的一第二关闭区块内且被设定为无效数据。
8.根据权利要求7所述的数据存储方法,其特征在于,在恢复为该垃圾搜集动作之前的状态时,将该第二关闭区块内的该第一数据设定为有效数据。
全文摘要
本发明公开了一种固态存储装置遭遇断电之后的数据存储方法。该固态存储装置中的一闪存包括多个区块,每一个区块中包括多个页,而这些区块的其中之一被设定为一旧的开启区块,当该固态存储装置重新接通一电源时,将该旧的开启区块内所有的有效数据存储至一新的开启区块中,从而使得本发明可以有效的保存不预期断电后的数据完整性。
文档编号G06F12/06GK103164345SQ201110406260
公开日2013年6月19日 申请日期2011年12月8日 优先权日2011年12月8日
发明者黄志伟, 范纲铭 申请人:建兴电子科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1