论文标题
:How to Cut Out Expired Data with Nearly Zero Overhead for Solid-State Drives
作者
:Wei-Lin Wang, Tseng-Yi Chen, Yuan-Hao Chang, Hsin-Wen Wei, Wei-Kuan Shih
单位
:台湾国立清华大学计算机系;台湾国立中央大学计算机与信息工程系;台湾中央研究院;淡江大学电子工程系;
目录
摘要
由于垃圾回收机制会造成额外的写操作,从而降低flash的寿命。本文就提出了dual-time referencing FTL来解决废弃的数据,并根据数据寿命周期信息以及块保留时间将垃圾回收的开销降到最小。
introduction
高密度的flash虽然使flash memory的价格下降,但是也缩短了其寿命并导致了更长的写延迟。现代flash memory最重要的议题在于如何在不引入额外的开销情况下,有效地延长flash的寿命。而GC本身会带来额外的写操作导致,影响flash本身的寿命,因此如何极大减少GC的开销是一个重要的方向。
- 基本思路
1.三星提出了emerging write command(multi-steam write technology)。通过这样的操作文件系统可以将数据生命周期(data lifetime information)集成到写命令中。
2.因此我们可以将拥有相同生命周期的数据堆积到相同的flash block中。
3.这样一个flash block中的数据可以几乎同时失效,从而降低了垃圾回收的需求。 - 相关工作
前人关于减少GC开销的工作基本有下面几个思路
1.选择复制开销最小的块进行回收。
2.通过冷热数据分离来减少页面复制的总量。
3.减少页面复制开销本身:这一点需要FTL层实现两个功能。
3.1 识别废弃数据
3.2 将同时被擦除的flash页面放在同一个flash块中
- our work
novel dual-time referencing FTL (DTR-FTL) solution. DTR-FTL
- a lifetime-rating addressing strategy
- a novel multi-tier block management
- a time-aware garbage collection
background&motivation
- NAND Flash Memory
- 垃圾收集机制会导致写入放大,从而降低闪存性能
- 在最小化实时页面复制的开销,将热/冷数据分离到不同的闪存块是最常用的解决方案
上述解决方案并不能极大地延长闪存的使用寿命,因为热数据很快就会磨损闪存块
- motivation
- 废弃的数据可能会导致垃圾收集开销。因为在垃圾收集过程中,包含废弃数据的flash页面仍将被视为有效页并被复制到另一个flash块中
- 废弃的数据可以通过trim命令手动标记为无效
这会导致映射页面更新和废弃的数据复制,都是flash性能开销
dual-time reference FTL
1.基本思路
a) 数据生存期将是收集具有相同生存期的数据页以及识别闪存中废弃数据的有用信息
b) 多流写入技术
通过这种技术,用户可以在写命令中附加附加附加信息,写入数据的生命周期信息也可以附加。使用write+命令,我们有机会通过复制“真实”有效页(不包括废弃数据)并通过引用数据生存期将数据存储到适当的闪存块,从而极大地延长闪存的使用寿命 。
2.overview
DTR-FTL将相同生存期的数据放置到同一闪存块中,并通过引用数据生存期和块保留时间极大地提高了闪存的寿命。这里的dualtime值得就是数据生存期和flash block保存时间。
3.Lifetime-rating Addressing Strategy
该模块的目的在将相近寿命的数据聚和并放入合适的块中。主要包含两个部分。
- A lifetime- rating address translator
将联合考虑数据生存期信息和数据块保留时间,将生存期相似的数据聚合到同一个保留时间接近但不小于写入数据生存期的闪存块中 - A multi-tier block manager
为了有效地管理空闲块列表中具有不同保留时间的flash块。引用闪存块的P/E周期得出的保留时间,将闪存块分为不同的层。
1. 该示例假设最大P/E周期仅为300次,并通过分别为层标志1、2和3分配100、200和300 P/E周期值,将闪存块分为三个不同的组(或层)。
2. 由于P/E周期的值是通过擦除操作递增的,因此多层块管理器只检查已擦除块的P/E周期是否仍在原始范围内。
2.1 如果P/E周期在原始范围内,块管理器只需将删除的块插入相应层中的正确位置。
2.2 否则,块管理器将检查删除的块是否是块层的头
2.2.1 当删除的块(即块4)是层的头时,块管理器将把指向已删除块的层标志的位置移动到原始层中的下一个块(即块6。
2.2.2 如果删除的块不是头,我们的块管理器只需要将块插入到正确的层。例如,删除的块(即块2)从第2层移动到第1层。
4.Time-aware Garbage Collector
用来判断哪block具有较小的复制开销。
- 我们要同时考虑无效页面的数目,同时也要考虑过期数据页的数量。(过期数据值得是其已经到达了自己的生命周期)
如果我们要统计废弃页面的数量,我们会访问闪存中所有的flash页面来检查时间戳是否过期。将导致闪存的巨大开销。 - 我们的垃圾收集器利用时间感知算法来估计每个闪存块的有效数据页的数量。
利用平均数据生存期来估计每个数据块中过期数据的比例。
如果垃圾收集时间与平均数据生存期相同,我们假设一半的有效数据应该过期。换言之,当垃圾收集定时远远晚于闪存块的平均数据生存期时,该块中会有更多的有效数据过期。
值最小的即为回收块,通过引用数据的新生存期,将有效页复制到新的生存期对应的闪存块中。
the current time (Tc) is the current system time
the start time (Ts) is when the first data page is written to this flash block
Tmean, and Nvalid-* the average data lifetime, and the number of valid pages*
5.Memory Overhead Analysis
下面分析设计所需要的开销
1.每个层/组需要一个标志指针来指出不同层的头,并需要一个写块编号来记录每个层的当前写块
几个字节(例如,在32位系统中,8字节)
2.块管理器记录每个块的额外信息(即到期时间),以自动回收废弃的临时数据。此外,还记录每个块的平均数据寿命,以估计数据块内的“真实”有效页。 >>
几个字节(例如,在32位系统中,总共8个字节)
3.在32位系统中,额外的内存开销总共是8∗(层数+块数)字节。假设一个512 GB的固态驱动器由65536个闪存块组成,闪存块的大小为8MB。在这个固态驱动器中,我们的多层结构包括20层。因此,额外的RAM内存大约为512KB。
可忽略不计