CAFTL和CA-SSD的比较

FAST'11同时收录了这两篇几乎相同主题的文章,分别用CAFTL(Feng Chen等)和CA-SSD(A. Gupta等)表示,下表比较了它们的主要特点。
 CAFTLCA-SSD
工作位置FTLFTL
去重单元pagepage
映射表二级映射表,元数据区反向映射映射表LPT和逆向映射表iLPT
指纹索引基于热度的LRULRU
哈希计算取样法、预哈希专用硬件逻辑
垃圾回收二级映射表记录引用次数iLPT记录逻辑地址集合

它们都是在FTL集成数据去重,不需要修改上层应用;因为缺少上层文件系统语义信息,并且SSD的读写单元是page,所以很自然使用page作为去重单元;指纹的计算是性能瓶颈,因此二者都提倡使用专用硬件逻辑;二者的关键区别是映射表和指纹索引,技术细节可看 内容感知FTL利用value locality优化SSD


1.读


CAFTL的读操作会引入额外开销,对于出现了重复的page,需要额外查询二级索引才能获得物理地址。而CA-SSD可根据索引表直接定位物理地址,无额外负担。

这方面,CA-SSD略胜。

2.写


CAFTL处理一个写请求,需要查询fingerprint store判断数据是否重复,查询操作设计遍历bucket列表。对于重复数据需要额外更新二级索引的引用,因为fingerprint store记录了VBA,所以更新操作很快,当然引用次数变化可能引起LRU队列的调整。对于非重复数据,副作用就是计算了无效指纹。

CA-SSD处理一个写请求,需要查询HPT判断数据是否重复,HPT以指纹为键,查询速度胜过CAFTL。对于重复数据,需要额外更新iLPT,将新的LPN添加到集合中,这部分比CAFTL更慢。CA-SSD还必然要额外处理数据在LRU队列的位置。对于非重复数据,副作用除了计算无效指纹外,还需插入LRU队列。

总体来说CA-SSD的写操作更加复杂,需要维护四个数据结构(LPT、iLPT、HPT、iHPT),而CAFTL只需要维护两个数据结构(二级索引表和fingerprint store)。

CAFTL按照指纹的引用次数进行LRU替换的,保证引用次数多的指纹放在内存。而CA-SSD单纯根据数据的访问次序来维持LRU队列,当然这也有道理,重复数据块被访问的次数可能更多。直觉上,可以先按引用次数替换,对于相同引用次数按上次访问时间替换。

3,擦除


垃圾回收和损耗均衡会引起block的擦除操作,并需要迁移合法page。迁移合法page需要根据物理地址快速定位其逻辑地址,并快速更新映射表。

为了实现快速定位,CAFTL在元数据区(专门分配的元数据page)为每个page记录了其反向映射的LBA(唯一数据)或VBA(重复数据),不管数据是否重复,都只需更新一个位置,所以更新操作很快。

CA-SSD的iLPT的作用就是快速定位,查询iLPT可以找到该物理地址对应的逻辑地址集合,然而依次更新LPT上的映射关系。相比CAFTL,其优势是查询更快(在内存),缺点是更新较慢(更新多个位置)。

综上所述,CAFTL的写操作和擦除操作应该更快。

转载于:https://www.cnblogs.com/opennaive/p/3312777.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值