作者:-1 发布时间:2022-11-11 13:55 浏览次数 :
3.2 Cleaning
使用flash blocks作为allocation pool中的自然分配单元,在任何给定时间内,一个pool中可以具有很多可用于保持写入的active blocks,为了支持继续分配新的活动块,我们需要一个垃圾收集器来枚举以前使用过的块,这些块必须被擦除和回收。如果logical page size小于闪block size, 则必须在擦除之前清除闪存块。Cleaning可以这样总结,当完成一个page写入,那么之前page映射的page 位置将被取代,因为这个位置的内容现在已经被更新了。在回收候选的block时,所有未被取代的page必须在擦除前写入其他位置。
最坏的情况下,当被取代的页面均匀地分布在所有块上时,必须为每个新数据写入发出N-1个cleaning写入( 每个块有N个 页面)。当然,大多数工作负载会产生写入活动的集群,当数据被覆盖时,会导致一个block上有多个被取代的页。我们引入术语cleaning efficiency来量化块清理期间取代页面与总页面的比率。尽管存在许多用于选择用于回收的候选块的可能算法,但都是优化cleaning efficiency。值得注意的是,使用条带化来增强顺序地址的并行访问可以抵消被取代页面的集群。