具体实施方式
请参照图2A至图2F,其所绘示为固态存储装置中数据更新以及降低无效页的示意图。基本上,固态存储装置的架构与图1相同。
如图2A所示,假设快闪存储器中有八个区块(Block_1~Block_8),每个区块中有四个页(Page_1~Page4)。其中,第一区块(Block_1)与第二区块(Block_2)中所有的页内共存储Data1~Data8的数据。
如图2B所示,当主机12欲将Data1、Data2、Data4、Data6、Data7的数据更新为Data1’、Data2’、Data4’、Data6’、Data7’时,控制单元101会在快闪存储器中寻找空白页来存储修改的数据。例如,将Data1’写在第四区块(Block_4)第二页(page_2);Data2’写在第五区块(Block_5)第三页(page_3);Data4’写在第七区块(Block_7)第二页(page_2);Data6’写在第六区块(Block_6)第二页(page_2);Data7’写在第六区块(Block_6)第三页(page_3)。之后,原存储Data1、Data2、Data4、Data6、Data7的数据页将被视为无效页(以斜线来表示)。
如图2C所示,当主机12欲将Data1’、Data2’、Data4’、Data6’、Data7’的数据再更新为Data1”、Data2”、Data4”、Data6”、Data7”时,控制单元101同样地会在快闪存储器中寻找空白页来存储修改的数据。例如,将Data1”写在第五区块(Block_5)第二页(page_2);Data2”写在第四区块(Block_4)第一页(page_1);Data4”写在第六区块(Block_6)第一页(page_1);Data6”写在第三区块(Block_3)第二页(page_2);Data7”写在第六区块(Block_6)第四页(page_4)。之后,原存储Data1’、Data2’、Data4’、Data6’、Data7’的数据页将被视为无效页(以斜线来表示)。
如图2D所示,当主机12欲将Data7”的数据再更新为Data7”’时,控制单元101同样地又会在快闪存储器中寻找空白页来存储修改的数据。例如,将Data7’”写在第四区块(Block_4)第四页(page_4)。之后,原存储Data7”的数据页将被视为无效页(以斜线来表示)。
由以上的说明可知,当主机12经过多次的存取之后,在快闪存储器105中将会出现许多的无效页以及无效数据,如图2D中的斜线部分。由于快闪存储器的抹除最小单位为区块,而图2D的快闪存储器中虽然有很多无效页,但是每个区块中都还是有部分的数据页为有效数据(valid data),因此控制单元101无法抹除任何一个区块。而太多的无效数据将占据快闪存储器的空间,使得快闪存储器可写入的空间变少。
而垃圾搜集(garbage collection)动作可以解决上述的问题。所谓的垃圾搜集动作即是控制单元101将区块中的有效页搜集起来另外存放在新的区块中,使原区块中的页全部变成无效页,因此可以进行区块抹除(block erase)动作,并且产生空白区块,使快闪存储器增加更多可写入的空间。在经过垃圾搜集动作后,在具有数据的区块中的无效页或空白页的空间,相当于被释出而变成可使用的空间。
例如,在图2D所示的情况下控制单元101开始执行垃圾搜集动作。此时控制单元101会将第一区块(Block_1)第三页(Page_3)中的Data3,第二区块(Block_2)第一页(Page_1)中的Data5,第二区块(Block_2)第四页(Page_4)中的Data8,第六区块(Block_6)第一页(Page_1)中的Data4”写入一个空白的第八区块(Block_8)。
如图2E所示,当Data3、Data5、Data8、Data4”写入第八区块(Block_8)后,快闪存储器中的第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)中的数据全部为无效数据。因此,控制单元101可以对第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)进行区块抹除动作。之后,第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)变成空白的区块,并且使得快闪存储器增加更多可写入的空间,如图2F所示。
在开始执行垃圾搜集动作之前,如图2D所示,第一区块(Block_1)、第二区块(Block_2)以及第六区块(Block_6)内具有八个无法使用的无效页,且此时的空白区块仅有第八区块(Block_8),其具有四个可使用的页空间;而在经过垃圾搜集动作之后,这八个无效页的空间被释放出来,如图2F所示,此时的空白区块为第一区块(Block_1)、第二区块(Block_2)以及第六区块(Block_6),其具有十二个可使用的页空间。
由以上的说明可知,垃圾搜集动作可以让快闪存储器增加更多可写入的空间。然而,控制单元101需要有效率的控制垃圾搜集动作的启动与结束的时机。
举例来说,如果控制单元101于图2A的状况时即启动垃圾搜集动作,这样将使得第一区块(Block_1)与第二区块(Block_2)中的数据被复制到另二个空白区块,并接着抹除第一区块(Block_1)与第二区块(Block_2)。很明显的,这样的启动时机是没有任何意义的,而且会增加区块的抹除次数,使区块的使用寿命降低。
再者,在如图2D所示的情况下才开始执行垃圾搜集动作时,由于空白区块仅剩下第八区块(Block_8),因此仅可搬移四个有效数据页,无法处理更多的数据页搬移。所以,在空白区块过少的情况下,垃圾搜集动作的执行效率会大幅降低。
因此,如何有效率地利用控制单元101来启动与结束垃圾搜集动作,即是本发明所欲解决的问题。
根据本发明的实施例,控制单元101会计算快闪存储器105中,在具有数据的区块中,可被释放的空间总数,并定义为A,其中可被释放的空间总数至少包含区块中的无效页或空白页的空间。再者,控制单元101会计算快闪存储器105中,所有空白区块的空间总数,并定义为B。并且,控制单元101即根据A与B之间的比例关系来决定垃圾搜集动作的启动与结束时机。
请参照图3A,其所绘示为本发明第一实施例固态存储装置中垃圾搜集动作的控制方法。
首先,计算快闪存储器内有数据的区块中可被释放的空间总数,并定义为A(步骤S310),其中可被释放的空间总数至少包含区块中的无效页或空白页的空间;并且计算快闪存储器内所有空白区块中的空间总数,并定义为B(步骤S312);接着,判断(B/A)小于第一临限值是否成立(步骤S314)。
当(B/A)小于第一临限值不成立时,不进行垃圾搜集动作(步骤S315);反之,当(B/A)小于第一临限值成立时,则执行垃圾搜集动作(步骤S316)。接着,判断(B/A)大于第二临限值是否成立(步骤S318)。
当(B/A)大于第二临限值不成立时,继续执行垃圾搜集动作(步骤S316);反之,当(B/A)大于第二临限值成立时,结束垃圾搜集动作(步骤S319)。
基本上,第一临限值小于第二临限值,而该二个临限值的实际数值是由研发人员经由累积的经验来决定。以下将第一临限值设定为0.4,第二临限值设定为2,且可被释放的空间总数以具有数据的区块中的无效页的空间计算,搭配图2A至图2F来进一步的说明。
假设如图2A所示的情况,第一区块(Block_1)与第二区块(Block_2)为具有数据的区块,且其中没有任何无效页,因此可被释放的空间总数A=0。再者,第三区块(Block_3)至第八区块(Block_8)皆为空白区块,因此B=6×4=24(页空间)。所以B/A未小于第一临限值,所以不需进行垃圾搜集动作。
如图2B所示的情况,第一区块(Block_1)、第二区块(Block_2)、第四区块(Block_4)、第五区块(Block_5)、第六区块(Block_6)、第七区块(Block_7)为具有数据的区块,且其中共有五个无效页,因此可被释放的空间总数A=5(页空间)。再者,第三区块(Block_3)与第八区块(Block_8)为空白区块,因此B=2×4=8(页空间)。所以B/A=1.6未小于第一临限值,所以不需进行垃圾搜集动作。
如图2C所示的情况,第一区块(Block_1)至第七区块(Block_7)为具有数据的区块,且其中共有十个无效页,因此可被释放的空间总数A=10(页空间)。再者,第八区块(Block_8)为空白区块,因此B=1×4=4(页空间)。所以B/A=0.4未小于第一临限值,所以不需进行垃圾搜集动作。
如图2D所示的情况,第一区块(Block_1)至第七区块(Block_7)为具有数据的区块,且其中共有十一个无效页,因此可被释放的空间总数A=11(页空间)。再者,第八区块(Block_8)为空白区块,因此B=1×4=4(页空间)。所以B/A=0.37小于第一临限值,所以开始执行垃圾搜集动作。
在执行垃圾搜集动作的过程中,快闪存储器内有数据的区块中可被释放的空间总数(A),及快闪存储器内所有空白区块中的空间总数(B)会被重新计算,以决定结束执行垃圾搜集动作的时机。
在执行垃圾搜集动作的过程中,如图2D至图2F所示,第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)内的有效数据已经被搬移至第八区块(Block_8),且第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)经过抹除动作后而变成空白的区块。
此时,如图2F所示,第三区块(Block_3)、第四块(Block_4)、第五区块(Block_5)、第七区块(Block_7)、第八区块(Block_8)为具有数据的区块,且其中共有三个无效页,因此可被释放的空间总数A=3(页空间)。再者,第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)为空白区块,因此B=3×4=12(页空间)。所以B/A=4大于第二临限值,所以停止执行垃圾搜集动作。
本发明提出的可被释放的空间总数除了以无效页的空间计算外,还可加入具有数据的区块中的空白页的空间计算。
在同样以上述第一临限值设定为0.4,第二临限值设定为2的例子来看,假设如图2C所示的情况,第一区块(Block_1)至第七区块(Block_7)为具有数据的区块,且其中共有十个无效页、十个空白页,因此可被释放的空间总数A=10+10=20(页空间)。再者,第八区块(Block_8)为空白区块,因此B=1×4=4(页空间)。所以B/A=0.2小于第一临限值,所以开始执行垃圾搜集动作。
同样地,在执行垃圾搜集动作的过程中,如图2F所示,第三区块(Block_3)、第四块(Block_4)、第五区块(Block_5)、第七区块(Block_7)、第八区块(Block_8)为具有数据的区块,且其中共有三个无效页、九个空白页,因此可被释放的空间总数A=3+9=12(页空间)。再者,第一区块(Block_1)、第二区块(Block_2)、第六区块(Block_6)为空白区块,因此B=3×4=12(页空间)。所以B/A=1小于第二临限值,所以垃圾搜集动作需继续执行,直到B/A大于第二临限值的情况产生。
由以上的说明可知,本发明提出计算快闪存储器内具有数据的区块中可被释放的空间总数(A),以及快闪存储器内所有空白区块的空间总数(B)。并根据A与B之间的关系来决定垃圾搜集动作的启动与结束时机,使得控制单元101更有效率地管理快闪存储器。
A与B之间的比例关系比较条件,除了利用B/A之间的关系来决定垃圾搜集动作的启动与结束时机之外,本发明也可以利用B/(A+B)之间的关系来决定垃圾搜集动作的启动与结束时机。
请参照图3B,其所绘示为本发明第二实施例固态存储装置中垃圾搜集动作的控制方法。
首先,计算快闪存储器内具有数据的区块中可被释放的空间总数,并定义为A(步骤S320),其中可被释放的空间总数至少包含区块中的无效页或空白页的空间;并且计算快闪存储器内所有空白区块中的空间总数,并定义为B(步骤S322);接着,判断[B/(A+B)]小于第一临限值是否成立(步骤S324)。
当[B/(A+B)]小于第一临限值不成立时,不进行垃圾搜集动作(步骤S325);反之,当[B/(A+B)]小于第一临限值成立时,则执行垃圾搜集动作(步骤S326)。接着,判断[B/(A+B)]大于第二临限值是否成立(步骤S328)。
当[B/(A+B)]大于第二临限值不成立时,继续执行垃圾搜集动作(步骤S326);反之,当[B/(A+B)]大于第二临限值成立时,结束垃圾搜集动作(步骤S329)。
同理,第一临限值小于第二临限值,而该二个临限值的实际数值是由研发人员经由累积的经验来决定,并没有实际准确的数字。在第二实施例中,可以设定第一临限值为0.25;第二临限值为0.5当然并不限定于此。
因此,本发明的优点是提出一种固态存储装置及其垃圾搜集动作的控制方法。本发明提出计算快闪存储器内具有数据的区块中可被释放的空间总数(A),以及快闪存储器内所有空白区块的空间总数(B)。并根据A与B之间的关系来决定垃圾搜集动作的启动与结束时机,使得控制单元更有效率地管理快闪存储器。当然在此领域的技术人员也可以将(B/A)改成(A/B),将[B/(A+B)]改成[(A+B)/B]并且以第一临限值大于第二临限值的条件来进行本发明。
综上所述,虽然本发明已以优选实施例公开如上,然其并非用以限定本发明。本发明所属领域技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视所附权利要求书所界定者为准。