CAFTL和CA-SSD的比较
FAST'11同时收录了这两篇几乎相同主题的文章,分别用CAFTL(Feng Chen等)和CA-SSD(A. Gupta等)表示,下表比较了它们的主要特点。
它们都是在FTL集成数据去重,不需要修改上层应用;因为缺少上层文件系统语义信息,并且SSD的读写单元是page,所以很自然使用page作为去重单元;指纹的计算是性能瓶颈,因此二者都提倡使用专用硬件逻辑;二者的关键区别是映射表和指纹索引,技术细节可看内容感知FTL和利用value locality优化SSD。
CAFTL的读操作会引入额外开销,对于出现了重复的page,需要额外查询二级索引才能获得物理地址。而CA-SSD可根据索引表直接定位物理地址,无额外负担。
这方面,CA-SSD略胜。
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队列,当然这也有道理,重复数据块被访问的次数可能更多。直觉上,可以先按引用次数替换,对于相同引用次数按上次访问时间替换。
垃圾回收和损耗均衡会引起block的擦除操作,并需要迁移合法page。迁移合法page需要根据物理地址快速定位其逻辑地址,并快速更新映射表。
为了实现快速定位,CAFTL在元数据区(专门分配的元数据page)为每个page记录了其反向映射的LBA(唯一数据)或VBA(重复数据),不管数据是否重复,都只需更新一个位置,所以更新操作很快。
CA-SSD的iLPT的作用就是快速定位,查询iLPT可以找到该物理地址对应的逻辑地址集合,然而依次更新LPT上的映射关系。相比CAFTL,其优势是查询更快(在内存),缺点是更新较慢(更新多个位置)。
综上所述,CAFTL的写操作和擦除操作应该更快。
CAFTL | CA-SSD | |
工作位置 | FTL | FTL |
去重单元 | page | page |
映射表 | 二级映射表,元数据区反向映射 | 映射表LPT和逆向映射表iLPT |
指纹索引 | 基于热度的LRU | LRU |
哈希计算 | 取样法、预哈希 | 专用硬件逻辑 |
垃圾回收 | 二级映射表记录引用次数 | 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的写操作和擦除操作应该更快。
posted on 2013-09-10 16:22 OpenNaive 阅读(2735) 评论(0) 编辑 收藏 举报