固态储存装置及其损耗平均控制方法
技术领域
本发明是有关于一种固态储存装置及其控制方法,且特别是有关于一种固态储存装置及其损耗平均(wear leveling)控制方法。
背景技术
众所周知,固态储存装置(Solid State Drive,SSD)使用与非门闪存(NANDflash memory)为主要存储元件,而此类的闪存为一种非易失性(non-volatile)的存储器元件。也就是说,当数据写入闪存后,一旦系统电源关闭,数据仍保存在闪存中。
请参照图1,其所绘示为已知固态储存装置的示意图。固态储存装置10中包括一控制单元101与一闪存105。控制单元101与闪存105之间利用一内部总线107进行数据的存取,而控制单元101利用一外部总线20与主机(host)12之间进行指令与数据的传递。其中,外部总线20可为USB总线、IEEE 1394总线或SATA总线等等。
一般来说,闪存中105包括许多区块(block),而每个区块中又包括多个页(page)或称为段(sector)。例如,一个区块中有64页,而每个页的容量为4K bytes。再者,由于闪存105的特性,每次数据写入时是以页为最小单位,而每次抹除(erase)时则是以区块为单位进行数据抹除。
由于闪存105中每个区块的抹除次数有限,因而发展出一种损耗平均(wear leveling)操作。损耗平均操作是为了平均地使用闪存105中的每个区块,避免特定区块使用过度(抹除次数过多)而变成坏区块(bad block)而无法使用,并且可延长闪存的寿命(life span)。
基本上,较常被抹除的区块,表示其区块内的数据常常被更换,所以区块内的数据一般被视为热数据(hot data);反之,不常被抹除的区块,表示其区块内的数据很少更动,所以其区块内的数据一般被视为冷数据(colddata)。
在已知固态储存装置10内皆会记录所有区块的抹除次数(erase count)。而已知固态储存装置10在进行损耗平均操作时,主要是根据每个区块的抹除次数(erase count)来判断区块的数据是属于热数据或者冷数据。而抹除次数也是已知固态储存装置10进行判断的唯一指标。
也就是说,损耗平均操作是利用固态储存装置10中的控制单元101检测闪存105中每个区块的抹除次数(erase count),并将抹除次数较少的区块与抹除次数较多的区块进行数据交换操作(data swap)。亦即,将在抹除次数较多的区块内的热数据转存于抹除次数较少的区块,而将在抹除次数较少的区块内的冷数据转存于抹除次数较多的区块。
请参照图2,其所绘示为已知损耗平均操作的控制流程图。在开始执行损耗平均操作时,在闪存中决定一具有高抹除次数的一第一区块,且第一区块中储存有第一数据(步骤S310);由闪存中决定一具有低抹除次数的一第二区块,且第二区块中储存有第二数据(步骤S320);接着,将第一区块中的第一数据与第二区块中第二数据进行数据交换操作(步骤S330)。
由以上的说明可知,已知的损耗平均操作是根据每个区块的抹除次数来决定欲进行数据交换的区块后,进而执行数据交换操作,其企图将冷数据转存于抹除次数较多的区块,以降低该区块之后被抹除频率。
请参照图3A至图3G,其所绘示为已知的损耗平均操作的数据交换流程示意图。如图3A所示,闪存105中包括三个区块,其中,第一区块(Block1)的抹除次数为hi,以Block1_hi来表示;第二区块(Block2)的抹除次数为lo,以Block2_lo来表示;以及,第三区块(Block3)的抹除次数为n,以Block3_n来表示,并且为空白区块(blank block)。再者,上述三个区块的抹除次数大小为hi>n>lo。
通过比较上述三个区块的抹除次数大小,控制单元101会将具有高抹除次数的第一区块(Block1)内的数据判定为热数据,以Data_hot来表示;而具有低抹除次数的第二区块(Block2)内的数据则判定为冷数据,以Data_cold来表示。而当欲进行损耗平均操作时,控制单元101会决定对第一区块(Block1)以及第二区块(Block2)进行数据交换。
当控制单元101执行损耗平均操作并决定对第一区块(Block1)以及第二区块(Block2)进行数据交换时,如图3B所示,将第二区块中的数据(Data_cold)复制到第三区块(Block3)。接着,如图3C所示,将第二区块(Block2)中的数据抹除并成为空白区块,此时抹除次数增加1,以Block2_(lo+1)来表示。
如图3D示,接着将第一区块(Block1)中的数据(Data_hot)复制到第二区块(Block2)。之后,如图3E示,将第一区块(Block1)中的数据抹除并成为空白区块,此时抹除次数增加1,以Block1_(hi+1)来表示。
如图3F示,接着将第三区块(Block3)中的数据(Data_cold)复制到第一区块(Block1)。之后,如图3G示,将第三区块(Block3)中的数据抹除并成为空白区块,此时抹除次数增加1,以Block3_(n+1)来表示。
由以上的说明可知,损耗平均操作是先利用抹除次数来决定欲交换数据的二个区块,其中抹除次数较高的区块内的数据视为热数据,抹除次数较低的区块内的数据视为冷数据。而数据交换操作即是将热数据转存在抹除次数较少的区块,而将冷数据转存在抹除次数较多的区块。
然而,已知仅利用抹除次数来作为损耗平均操作中寻找区块的依据,会出现许多盲点,举例说明如下:
假设固态储存装置10从来没有执行过损耗平均操作。很明显地,抹除次数较低的区块内的数据当然是冷数据,抹除次数较高的区块内的数据当然是热数据。然而,一旦固态储存装置10执行过损耗平均操作后,如图3G所示,抹除次数较高的区块内的数据已经被置换为冷数据,而抹除次数较少的区块内的数据已经被置换为热数据。
在此情况下,当固态储存装置10再一次执行损耗平均操作时,由于控制单元101仅利用抹除次数来作为寻找区块的依据。控制单元101会认为抹除次数较高的第一区块(Block1)内的数据为热数据,而再次将图3G所示的第一区块(Block1)的数据(Data_cold)与第二区块(Block2)的数据(Data_hot)进行数据交换而回到图3A的状况。这样的损耗平均操作将造成热数据回到高抹除次数的区块,冷数据回到低抹除次数的区块,如此则失去了平均损耗的效果。
众所周知,损耗平均操作的执行效能与固态储存装置的寿命息息相关。如果仅利用抹除次数来作为寻找区块的依据,将导致损耗平均操作的执行效能变差,甚至让固态储存装置的寿命变短。所以如何有效率地执行损耗平均操作,并有效地延长固态储存装置的寿命,即是本发明所欲解决的问题。
发明内容
本发明提出一种固态储存装置,包括:一控制单元,该控制单元包括一历史指引数目产生器,用以产生一历史指引数目,且该历史指引数目会随着时间增加而递增;以及,一闪存,连接至该控制单元,该闪存具有多个区块,其包括一第一区块及一第二区块,其中,该第一区块具有一第一抹除次数并储存有一第一数据,且该第一数据对应一第一历史指引数目;该第二区块具有一第二抹除次数并储存有一第二数据,且该第二数据对应一第二历史指引数目;其中,该控制单元根据该第一抹除次数与该第一历史指引数目以及该第二抹除次数与该第二历史指引数目,判断是否执行该第一数据与该第二数据的一数据交换操作。
本发明提出一种固态储存装置的损耗平均控制方法,包括下列步骤:于一闪存中,决定具有一第一抹除次数的一第一区块,其中,该第一区块中储存一第一数据且该第一数据对应一第一历史指引数目;于该闪存中,决定具有一第二抹除次数的一第二区块,其中,该第二区块中储存一第二数据且该第二数据对应一第二历史指引数目,且该第一抹除次数大于该第二抹除次数;以及,判断该第一历史指引数目是否大于该第二历史指引数目;于成立时,将该第一区块中的该第一数据与该第二区块中的该第二数据进行一数据交换操作;以及,于不成立时,不进行该数据交换操作。
本发明提出一种固态储存装置的损耗平均控制方法,包括下列步骤:于一闪存中,决定具有一第一抹除次数的一第一区块,其中,该第一区块中储存一第一数据且该第一数据对应一第一历史指引数目;于该闪存中,决定具有一第二抹除次数的一第二区块,其中,该第二区块中储存一第二数据且该第二数据对应一第二历史指引数目;以及,当该第一抹除次数大于该第二抹除次数并且该第一历史指引数目大于该第二历史指引数目时,将该第一区块中的该第一数据与该第二区块中的该第二数据进行一数据交换操作。
为了对本发明的上述及其它方面有更佳的了解,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1所绘示为已知固态储存装置的示意图。
图2所绘示为已知损耗平均操作的控制流程图。
图3A至图3G所绘示为已知损耗平均操作的数据交换流程示意图。
图4所绘示为本发明固态储存装置的示意图。
图5所绘示为本发明损耗平均操作的控制流程图。
图6所绘示为本发明损耗平均操作的另一控制流程图。
具体实施方式
根据本发明的实施例,固态储存装置中除了记录每个区块的抹除次数之外,更新增一个历史指引数目(history index number)。换言之,本发明的固态储存装置中同时记录了每个区块的抹除次数以及历史指引数目。
请参照图4,其所绘示为本发明固态储存装置的示意图。固态储存装置50中包括一控制单元501与一闪存505。控制单元501与闪存505之间利用一内部总线507进行数据的存取,而控制单元501利用一外部总线60与主机(host)52之间进行指令与数据的传递。其中,外部总线60可为USB总线、IEEE 1394总线或SATA总线等等。
再者,控制单元503中又包括一历史指引数目产生器(history indexnumber generator)。于主机52产生写入数据并储存于一区块时,该历史指引数目产生器503会产生一历史指引数目对应于该区块。换句话说,历史指引数目会随着时间增加而递增。之后,控制单元501可以根据所有区块中数据的历史指引数目来得知所有区块中的数据的写入先后次序。以下介绍各种历史指引数目的实施例。
第一种历史指引数目实施例是根据主机写入数据至区块的次数依序递增。也就是说,于固态储存装置50出厂后,历史指引数目产生器503会根据主机产生的写入数据来产生历史指引数目,而历史指引数目会由小到大持续递增。举例来说,假设固态储存装置50出厂后,主机产生第一数据写入第一区块,则该第一数据的历史指引数目即为1。同理,第五数据写入第五个区块,则该第五数据的历史指引数目即为5。
当然,如果第一区块被抹除时,第一数据也会消失,而历史指引数目(1)也会一并消失。如果主机再次产生第六数据写入第一区块,则该第六数据的历史指引数目即为6。亦即,历史指引数目为6的第六数据储存在第一区块。
再者,假设第五区块以及第一区块进行数据交换后,则第五区块会变成储存历史指引数目为6的第六数据,而第六区块会变成储存历史指引数目为5的第五数据。
第二种历史指引数目实施例是由历史指引数目产生器503随着时间的增加而递增。也就是说,当固态储存装置50出厂后,只要固态储存装置50被供应电力,历史指引数目产生器503便会在一预定的时间间隔后自动将历史指引数目加一。而当主机产生的写入数据储存至区块时,会将此时历史指引数目产生器503所产生的历史指引数目一并记录至区块内。
假设固态储存装置50出厂后,当主机产生第一数据写入第一区块,且此时历史指引数目产生器503所产生的历史指引数目为T1时,则储存于第一区块的该第一数据的历史指引数目即为T1。之后,当主机产生第五数据写入第五区块,且此时历史指引数目产生器503所产生的历史指引数目为T5时,则储存于第五区块的该第五数据的历史指引数目即为T5。很明显地,T5>T1。
当然,如果第一区块被抹除时,第一数据会消失,而历史指引数目(T1)也会一并消失。之后,若主机再次产生第六数据写入第一区块,且此时历史指引数目产生器503所产生的历史指引数目为T6时,则储存于第一区块的该第六数据的历史指引数目即为T6。很明显地,T6>T5。
再者,假设第五区块以及第一区块进行数据交换后,则第五区块会变成储存历史指引数目为T6的第六数据,而第六区块会变成储存历史指引数目为T5的第五数据。
由以上的说明可知,历史指引数目会与写入数据的先后顺序有关。换句话说,根据历史指引数目,控制单元501即可得知该区块中的数据储存在闪存505中的时间长短。其中,对应至历史指引数目较大的数据,表示其储存在闪存505中的时间较短,亦即该数据最近才被更新过,可被视为热数据;反之,对应至历史指引数目较小的数据,则表示其储存在闪存505中的时间较长,亦即该数据有段时间未被更新过,可被视为冷数据。
根据本发明的实施例,当固态储存装置中同时记录了每个区块的抹除次数以及数据的历史指引数目后,即可发展出本发明的固态储存装置的损耗平均控制方法。
请参照图5,其所绘示为本发明损耗平均操作的控制流程图。在开始执行损耗平均操作时,控制单元501在闪存505中决定一具有高抹除次数的一第一区块,且第一区块中储存第一数据,且第一数据对应一第一历史指引数目(步骤S510);接着,控制单元501在闪存505中决定一具有低抹除次数的一第二区块,且第二区块中储存第二数据,且第二数据对应一第二历史指引数目(步骤S520);接着,判断第一历史指引数目是否大于第二历史指引数目(步骤S530)。
当第一历史指引数目大于第二历史指引数目时,将第一区块中的第一数据与第二区块中第二数据进行数据交换操作(步骤S540)。反之,当第一历史指引数目小于第二历史指引数目时,则不进行数据交换操作(步骤S550)。
由图5的说明可知,当第一历史指引数目小于第二历史指引数目时,则代表第一区块中的第一数据储存于闪存505中的时间较长,亦即第一数据有段时间未被更新,可被视为冷数据;而第二区块中的第二数据储存于闪存505中的时间较短,亦即第二数据最近曾被更新过,可被视为热数据,此时,虽然第一区块具有较高的抹除次数,但由于其储存的第一数据为冷数据,因此并不需要进行数据交换的操作。
请参照图6,其所绘示为本发明损耗平均操作的另一控制流程图。在开始执行损耗平均操作时,控制单元501在闪存505中决定一具有高抹除次数的一第一区块,且第一区块中储存第一数据,且第一数据对应一第一历史指引数目(步骤S610);接着,控制单元501在闪存505中决定一具有低抹除次数的一第二区块,且第二区块中储存第二数据,且第二数据对应一第二历史指引数目,且第一历史指引数目大于第二历史指引数目(步骤S620);接着,将第一区块中的第一数据与第二区块中第二数据进行数据交换操作(步骤S630)。
由图6的说明可知,当控制单元501找到具有低抹除次数的第二区块且较小的第二历史指引数目时,在两个区块比较下,第一区块中的第一数据被视为热数据而第二区块中的第二数据被视为冷数据,因此需要将属于热数据的第一数据搬移到具有低抹除次数的第二区块,因而进行数据交换的操作。
因此,本发明的优点是提出一种损耗平均控制方法,可同时参考每个区块的抹除次数以及数据的历史指引数目,使固态储存装置执行损耗平均操作时更有效率,以有效的延长固态储存装置的寿命。
综上所述,虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视所附的权利要求范围所界定者为准。