兵哥研究Flash是一把好手,没事还把芯片揭开用电子显微镜照里面的电子玩。
兵哥捡垃圾的时候,不仅捡的时候有讲究,分拣的时候也是毫不马虎,有以下几种策略:
M1: 顺序扫描待GC的Block里的Valid Page,按照发现的顺序,把这些Page迁移到新的Block里;
M2:顺序扫描待GC的Block里的Valid Page,按他们的Age排序,把这些Page迁移到新的Block里;
M3: 顺序扫描待GC的Block里的Valid Page,按他们的Hot Degree排序,把这些Page迁移到新的Block里;
M4: GC的时候,准备两个新的Block,一个专门迁移Cold Block的Valid Page,一个专门迁移其他Block的Valid Page;Cold Block的定义是Valid Page比例低于平均值;
M5: GC的时候,准备两个新的Block,一个专门迁移Cold Block的Valid Page,一个专门迁移Hot Block的Valid Page;Hot Block的定义是修改次数超过平均值;
M6:跟M5类似,区别在于使用Hot Degree而不是修改次数来判定Hot Block;
这几种分拣方法效果如何?继续跟着兵哥占前人便宜:
总结起来:
- M1,M2,M3这三种只用一个垃圾桶的方式,Greedy,Cost-Benefit和CAT三种算法的效果区别不大;
- 使用两个垃圾桶(M4, M5, M6)以后, 三种算法的Performance都大幅提高 (60~65% less PE Cycle, 86~93.4% less migration cost, 磨损均衡也更好)
- M5的效果不如M4和M6, 说明Hot Degree不能只考虑修改次数,还需要考虑Age
参考文献:《Cleaning policies in mobile computers using flash memory》by M.-L. Chiang a, R.-C. Chang
つづく