6月10:关于闪存垃圾回收的一些知识点

一、SLC cache会导致GC频繁

在多比特密度的SSD中,SLC cache经常被用来作为读写性能的缓冲区,通过将热数据存放到SLC中,可以实现这部分数据的性能提升。并且将冷数据存放到多比特密度闪存单元中,可以有效利用多比特密度SSD下的高容量性能。SLC模式,不仅实现了高容量的SSD,还可以尽可能地避免由于高比特密度带来的性能骤降问题。
但是,这种模式下也会引发另一个问题,就是GC频繁。GC操作的发生条件是当SLC空闲页低于某个值时,就会触发GC操作。由于SLC本身容量不高,一个存储单元只能存放一个bit的数据,并且其中存放的都是热数据,基于这两种情况,SLC 模式的block的空闲页数量很容易被耗尽,因此很容易触发GC操作,导致GC频繁。

二、GC引发的问题

基于高比特密度的闪存单元中,GC的问题更为严重:

1、GC延迟增加
  • 基于高比特密度下,每个闪存单元可以存放多个bit的数据,使得相同的块大小,高比特密度下的块可以存放更多页数据。因此当触发GC时,有效页的数量也会很大概率地增多,这就会导致GC延迟时间长。
  • 同时,由于高比特密度下,由于每个闪存单元需要在相同的电压范围下区分更多电压水平状态,因此,当比特密度越高,电压水平状态越多,从而需要达到的最高阈值电压越高,即浮栅中存储的电荷量越多。这种情况下,当该块触发GC时,则需要在衬底施加更久的擦除电压,才能将浮栅中的存储电荷完全拉出,达到擦除状态。
2、读写延迟增加

当某个在执行GC操作的Channel上挂载了读写请求,这些读写请求将被阻塞,直到GC操作完成才能执行,从而导致读写延迟增加。

3、写放大系数增加

写放大系数 = flash总写入量 / 主机请求的写入量。由于高比特密度下的SSD,每个块包含的页数量增加,因此当执行擦除时块中有效页数量也会增加,从而导致有更多的页需要产生额外的迁移操作,增加flash写入量,因此写放大系数增加。

三、改善GC

  1. 减少有效页的数量降低GC延迟:触发GC的过程中,如果当前块不是所有页都无效,则需要先将有效页迁移到新块中才能执行擦除操作。因此有效页数量直接影响到GC延迟时间。于是我们可以通过采取策略来减少victim block中有效页数量来减少GC延迟。现有的我了解到的解决方法是采用冷热数据分离方式可以减少GC延迟:通过冷热数据分离,分为热块和冷块,热块中存放热数据,冷块中存放冷数据。由于热数据会经常更新,因此热块中会产生大量无效页,使得热块的有效页数量较低,可以更好地降低GC延迟。
  2. 重定向写请求避免编程延迟增加的问题:当触发GC操作时,由于会产生一定的延迟,因此可以将当前发生GC操作的channel上的写请求重定向到另一个空闲的channel中,从而实现擦除和编程通知进行,避免GC延迟带来的编程延迟增加问题。
  3. 采用擦除中断技术:当victim block中所有的有效页迁移完成后进入擦除操作执行阶段时,如果此时当前channel上有待处理的读请求,则可以暂时将擦除操作挂起,即停止往衬底施加擦除电压,随后先执行读请求,当读请求执行完成后再恢复施加擦除电压。但是该算法有个限制,就是一个擦除操作只能被挂起K次,因此当某个擦除操作被挂起K次后,该channel上的后续读请求不能再挂起该擦除操作,直到是新的擦除操作时才将挂起次数恢复为0次。【1】【2】

注:后续将继续补充GC

reference

【1】Micron Datasheet, Boise, ID, USA, “Mlc 256gb to 4tb async/sync nand, (l06b),” 2015.
【2】Li S, Tong W, Liu J, et al. Accelerating garbage collection for 3D MLC flash memory with SLC blocks[C]//2019 IEEE/ACM International Conference on Computer-Aided Design (ICCAD). IEEE, 2019: 1-8.

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值