利用value locality优化SSD

原文:A. Gupta et al. Leveraging Value Locality in Optimizing NAND-Flash based SSDs.

这篇文章和DFTL是同一作者。

  • 时间局部性。当前访问了某个数据(某个逻辑地址),那么不久的将来很可能还会访问这个数据;
  • 空间局部性。当前访问了某个数据(某个逻辑地址),那么不久的将来与其逻辑地址相邻的数据很可能会被访问。


利用时间局部性和空间局部性可以减少SSD的负载,但是仍有另一种局部性可以挖掘,即value locality。value locality的意思就是某个数据(数据的内容,不仅仅是逻辑地址)被访问地更频繁。

  • value locality。当前访问了某个数据(不一定逻辑地址相同),那么不久的将来很可能还会访问这个数据。

CA-SSD利用value locality减少SSD的写负载。这篇文章的主题和CAFTL很像,并且同时出现在FAST’11上。

作者认为在SSD中部署数据去重面临的挑战:1.与现有存储软件的兼容;2.加入数据去重必然需要对FTL的数据结构做出改变;3.数据去重使得现有的断电后数据恢复机制失效,现在都是将page的LBA放在OOB区域,当一个page对应多个LBA后这不再实用;4.引入数据去重,失效页的判定方法需要修改,也意味着垃圾回收需要重新设计;5.CA-SSD可以挖掘value locality,但是当value locality不存在时,也不应该影响SSD的性能和可靠性。

1.Value Locality特性


作者检查了三个负载的value locality,其特点如下表,它们都是以写请求为主的负载。



value locality具有两方面的特性,都会对CA-SSD的性能和寿命产生影响。

  • Value Popularity(VP):VL最直接的特性是VP,代表了一块数据的流行程度。上表体现了很高的VP,比如mail负载,只有7.83%的唯一写请求,意味着剩余的写请求都可以被去重。而且,只有很小一部分写是将相同的数据写入相同的LBA,大多数重复的写请求是将相同的数据写入不同的LBA,这需要去重技术才能发现。对三种负载的实验发现,访问集中在少量流行数据,50%的访问分别集中在14.44%、8.84%和35.56%的数据,因此将这部分流行数据放在缓存有机会减少读写负载。
  • Temporal Value Locality(TVL):TVL表明了数据的时间局部性,普通的时间局部性,指的是同一LPN在短期内连续被访问,TVL指的是同一内容(可以是不同LPN)在短期内连续被访问。图3验证了TVL的存在,实验将数据组成LRU队列,虚线LPN是传统时间局部性,可以发现访问集中在LRU队列的前部,这证明了时间局部性的存在,而且TVL比普通时间局部性更明显(斜线更陡)。




VP和TVL也可以不同时出现,比如有些负载具有很高的TVL,但是每个数据的VP都差不多;或者有些负载具有很高的VP,但是访问相同的数据间隔很长时间。CA-SSD可以利用这两个特性,但是任何特性的缺失不会影响CA-SSD的性能。

2.概述




图1展示了CA-SSD和传统SSD的区别,包括增加的组件和写请求处理流程,读请求没有变化。CA-SSD的FTL称为CA-FTL。主要的改进有四:

  1. 哈希单元:CA-FTL需要具有计算、比较哈希的功能,而且需要减少对SSD的性能影响,因此CA-SSD部署了一块专用处理器。最近,一些高端SSD都搭载了专用的加密处理器,快速计算哈希是可行的。
  2. 额外元数据:映射表必须为CAS维持额外的数据结构,增加了RAM的压力,这部分数据结构称为meta-data cache。
  3. 持久元数据存储:每个page都有一块额外的空间称为OOB,传统SSD使用OOB存储page的LPN,当出现断电错误,SSD重启时读取OOB重构映射表。然而在CA-SSD,一个page可以对应多个LPN,OOB有时不足以记录所有LPN,而且一个page对应的LPN集合是动态的,每次变动都必须重写其OOB就涉及到擦除操作了。因此元数据的持久存储必须重新设计。CA-FTL使用了一块battery-backed DRAM,即使断电,电池也足够支撑将DRAM刷回flash。
  4. 重新设计垃圾回收:只有当不存在LPN指向某page时,才可以回收。
和Feng Chen的CAFTL一样,最关键的数据结构是映射表和指纹索引。

3.映射表

Gupta的CA-SSD增加了一张反向映射表,PPN->a set of LPNs,称为iLPT。LPT是传统映射表,将LPN映射到PPN;iLPT相反,将PPN映射到一个LPN集合。LPT每个条目需要记录4B的物理地址和4B的逻辑地址,所以4GB的SSD需要8MB的LPT。iLPT每个条目都是一个LPN集合,如果某个PPN对应的集合是空的,意味着该PPN可以被回收。

LPT的作用主要是满足读操作,而iLPT的作用是满足垃圾回收和损耗均衡。当需要擦除某个block时,必须根据内部的PPN查询iLPT,定位合法page的LPN,迁移合法page后更新LPT。

映射表不算很大,可以全部放在内存。也可以使用Gupta之前开发的DFTL算法[ASPLOS2009],利用page的时间局部性减少内存消耗。

4.指纹索引


CA-SSD的指纹索引是一个hash-to-PPN的映射表,称为HPT,当写入一个page时,首先查找HPT判断数据是否已经存在。每个哈希是16-20字节,PPN是4字节,因此4GB的SSD需要20-24MB的HPT空间。

垃圾回收和损耗均衡会改变某个数据的PPN,因此需要快速定位其在HPT的位置,最简单的办法是将数据的哈希存放在OOB,读取哈希后直接更新HPT。但是为了避免额外的读操作,CA-SSD维护了一张表iHPT,维护了PPN-to-hash的映射关系,因此可通过查询iHPT来定位某个PPN在HPT的位置。

SSD的内存有限,必须想办法减少HPT和iHPT的规模。因为TVL的存在,可以将其组织成LRU缓存,当缓存已满,需要插入时就淘汰最久未被访问的条目。个人认为这部分讨论不如Chen的CAFTL。

5.指纹计算


采用专用处理器,没有讨论这部分开销。

6.实验


实验部分使用了3个真实负载和4个合成负载。图7是3个真实负载的实验结果。7(a)显示mail的响应时间减少了84%,homes和web减少了59%和65%,这和三个负载的VP相匹配。7(b)显示了写操作的变化,总体分别减少了77%、93%、70%,图中深色是直接减少的写操作,浅色是GC减少(非法页减少导致GC减少),间接减少的写操作这两类都显著减少了。7(c)则反映了擦除的次数,也就是寿命问题,mail负载的擦除次数从47819下降到了2876次,而homes和web也分别下降了70%和77%。图7还反映了不同大小的指纹索引产生的影响。



当VP完全不存在时,CA-SSD会比传统SSD稍慢一些,对4个合成负载的测试表明慢了大约10%。

posted on 2013-09-10 16:22  OpenNaive  阅读(1047)  评论(0编辑  收藏  举报

导航