SSD映射机制

SSD的FTL通过对逻辑地址和物理地址进行映射来克服闪存的物理限制(覆盖写开销大),FTL向主机提供了传统磁盘类似的块更新接口。早期的FTL是用日志结构的框架,所有的逻辑块更新都被追加写入日志结构的末尾,其中的无效块在垃圾回收的过程中回收,我们称这种方式为页级映射(page mapping FTL),因为逻辑页可以被映射到任何物理页中。FTL把写请求的数据写入到合适的空闲页中,并在内存和物理页中保留逻辑页和物理页的映射信息,因为在以后的读操作中都需要用到。
页级映射可以提供细粒度的映射,然而,随着NAND闪存的快速发展,闪存容量也有了很大的提升,页级映射方法需要大量的内存容量来保存映射信息,当重启设备时,需要扫描整个闪存来建立映射信息表,这需要很长的时间。因此对于大容量的NAND闪存来说,需要一种新的映射方法

块级映射常用于智能设备,当需要更新一个数据页的时候需要更新整个数据块,因此块级映射没有页级映射高效。混合映射使用和块级映射类似的方法,和块级映射不同的是,数据页的位置在块内不是固定的,数据页的位置信息通过块内偏移量来记录,和页级映射相比,混合映射需要更少的映射信息。

log-block FTL算法结合了块级的粗粒度映射策略和块内页级的细粒度映射策略,对于日志块,log-block FTL需要更多的映射表信息,但是可以更高效的使用日志块空闲。

在log-block FTL算法中,数据页总是写入到日志块内的任意位置,用细粒度的页级映射记录数据页在块内的位置信息,这对集中式的更新非常的高效。例如,当一个数据块只包含4个数据页时,如果数据页0反复的更新4次,这个日志块的所有数据页都只被数据页0占用,当一个日志块被用完的时候,它会和存放旧数据页的数据块进行合并操作,把合并后的数据存放到一个新的空闲数据块中,这个空闲数据块在写入数据后将变成一个新的数据块,然后擦除旧数据块和日志块,并将其加入到空闲块链表中

有时候,一个日志块只替换一个数据块中的数据,如果从一个日志块的第一个数据页到最后一个数据页顺序的写入数据,那么这个日志块将获得和数据块一样的状态,在这种情况下,日志块将简单的替换旧数据块,同时旧数据块将成为新的空闲块,这种替换方式在log-block FTL中称为转换合并(switch merge)

转换合并给NAND闪存提供了理想的性能,它需要一个块擦除操作和N个数据页写操作,N为一个数据块中包含的数据页数,为了区分转换合并,我们将正常的日志块和旧数据块的合并操作成为全合并(full merge)操作,全合并操作需要两个数据块擦除操作,N个数据页读操作和N个数据页写操作

文章来源论文《BPLRU: A Buffer Management Scheme for Improving Random Writes in Flash Storage》

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值