[0025] 为了更清楚地说明本发明实施例,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0026] 实施例1:
[0027] 如图1所示,本发明提供了一种用于固态硬盘垃圾回收受害块的选择方法,包括如下步骤:
[0028] S1,在固态硬盘SSD触发垃圾回收后,遍历所有块,计算每个块的收益B。
[0029] 步骤S1又具体分为以下步骤:
[0030] S11,若计算的块包含空闲页,则定义该块的收益B=0;
[0031] S12,若计算的块不包含空闲页,则统计所述块中的有效页数量Nvp,计算当前收益然后执行下一步骤,其中Np为每个块包含的总页数;
[0032] S13,计算所述块的未来收益 然后执行下一步骤,其中,Emax和Emin分别表示所有块的最大擦除次数和最小擦除次数,Ne表示所选定的块的擦除次数,ρ为正数,用于建模折现损失;
[0033] S14,计算所述块的收益B=β×Bc+(1‑β)×Bf,其中,β为权重系数,取值范围是0到1,用于平衡未来收益和当前收益的重要性。
[0034] S2,在所有块的收益B计算完成后,挑选收益B最大的块作为回收块;若收益B最大的块存在多个,则随机挑选其中的一个块作为回收块。
[0035] 其中,步骤S12中所述当前收益Bc反映的是,回收所述块能够立即获得的可用空间的多少,所述当前收益Bc的取值范围为0到1之间的正数;步骤S13中所述未来收益Bf反映的是,未来的可用空间的多少,所述未来收益Bf的取值范围为0到1之间的正数。
[0036] 本发明方法具体应用到实际案例的过程,如图2所示。
[0037] 在图2中,假设在8个块中选择VB块,每个块包含4个物理页,在可用空间低于0.2时触发垃圾回收;Block x_y表示块x已经擦除y次,例如,Block0_4表示块0已经擦除4次。
[0038] 回收块选择如图2所示,步骤a(1)和a(2)选择无效页最多的块为回收块,这也是传统的VB选择方法;步骤b(1)和b(2)按照本发明提出的方法选择回收块。整个过程除了垃圾回收以外,还包括三次页更新操作。
[0039] 利用传统的VB选择方法,选择无效页最多的块作为回收块:
[0040] 一开始空闲页数为6,总页数为32,6/32=0.19<0.2产生垃圾回收。
[0041] 步骤a(1),选择无效页最多的块1作为回收块,需要迁移一个页(迁移至块6的页2),块1的擦除次数变为6。
[0042] 步骤a(2),块4的页0、块4的页1和块6的页1,这三个页发生更新,分别写入块6的页3,块7的页0,块7的页1。空闲页剩余6,再次触发垃圾回收。
[0043] 步骤a(3),选择无效页最多的块4作为垃圾回收,需要迁移一个页(迁移至块7的页2),块4的擦除次数变为7。整个过程结束,闪存的擦除标准差为1.90。
[0044] 利用本发明提出的方法选择回收块:
[0045] 一开始空闲页为6,总页数为32,6/32=0.19<0.2产生垃圾回收。(本实施例中取β=0.6,ρ=0.5)。
[0046] 步骤b(1),8个块的收益分别为:0.32,0.45,0.70,0.65,0.15,0.15,0,0。选择得分最高的块2为回收块,需要迁移两个页(迁移至块6的页2和块6的页3),块2的擦除次数变为2。
[0047] 步骤b(2),块4的页0,块4的页1,两个页发生更新,分别写入块7的页0,块7的页1。空闲页剩余6,再次触发垃圾回收。
[0048] 步骤b(3),8个块的收益分别为:0.34,0.45,0,0.70,0,45,0.15,0.32,0。选择得分最高的块3为回收块,需要迁移两个页(迁移至块7的页2和块7的页3),块3的擦除次数变为3。块6的页1更新写入块2的页0。整个过程结束,闪存的擦除标准差为1.26。
[0049] 本发明主要解决固态硬盘垃圾回收过程中的受害块(VB)的选择问题,基本思路是在选择VB时,综合考虑每个块的当前收益(即当前可得到的空闲空间)和未来收益(即未来可写入的数据量),提出统一的评分标准,选择得分最高的块作为回收块,从而使得垃圾回收操作和磨损均衡操作得到统一,达到提升SSD性能和寿命的效果。
[0050] 以上所述仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。